Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. #ifndef __PD_H__
  2. #define __PD_H__
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include "md.h"
  7.  
  8. // DGen/SDL v1.17+
  9. // Platform-dependent interface
  10. // Your platform implementation needs to define all these functions and
  11. // variables!
  12.  
  13. // Return the number of microseconds elapsed since an unspecified time.
  14. unsigned long pd_usecs(void);
  15. // This is the struct bmap setup by your implementation.
  16. // It should be 336x240 (or 336x256 in PAL mode), in 8, 12, 15, 16, 24 or 32
  17. // bits-per-pixel.
  18. extern struct bmap mdscr;
  19. // Also, you should allocate a 256-char palette array, if need be. Otherwise
  20. // this can be NULL if you don't have a paletted display.
  21. extern unsigned char *mdpal;
  22. // Initialize graphics, in NTSC (320x224) or PAL (320x240) mode.
  23. // Since many interfaces require that DGen be setuid-root, this should also
  24. // discard root priviledges, if at all necessary.
  25. // It should return 1 on successful setup, or 0 if something wrong happened.
  26. int pd_graphics_init(int want_sound, int want_pal, int hz);
  27. int pd_graphics_reinit(int want_sound, int want_pal, int hz);
  28. // This updats the palette, if necessary.
  29. void pd_graphics_palette_update();
  30. // This updates the screen, with the mdscr bitmap.
  31. void pd_graphics_update(bool update);
  32.  
  33. // This is the struct sndinfo, also setup by your implementation.
  34. // Note that the buffers pointed to in this struct should ALWAYS be 16-bit
  35. // signed format, regardless of the actual audio format.
  36. extern struct sndinfo sndi;
  37. // Initialize sound, with the given frequency and number of samples.
  38. // It should keep samples' worth of sound buffered.
  39. // The parameters should all be modified to reflect the actual characteristics.
  40. // This is always called after pd_graphics_init, so you can count on graphics
  41. // stuff being initialized. :)
  42. // It should return 1 on successful setup, or 0 if something wrong happened.
  43. int pd_sound_init(long &freq, unsigned int &samples);
  44. void pd_sound_deinit();
  45. // This should return samples read/write indices in the buffer.
  46. unsigned int pd_sound_rp();
  47. unsigned int pd_sound_wp();
  48. // And this function is called to commit the sound buffers to be played.
  49. void pd_sound_write();
  50.  
  51. // Register platform-specific rc variables
  52. void pd_rc();
  53. // This should be a list of all the command-line options specific to this
  54. // platform, in the form given to getopt(3), i.e "a:b::c".
  55. extern const char *pd_options;
  56. // And, this is called to handle platform-specific stuff.
  57. void pd_option(char c, const char *optarg);
  58.  
  59. // This is called after displaying the base options for help, so that you may
  60. // document your platform-specific command-line options etc.
  61. void pd_help();
  62.  
  63. // This is called before each frame to handle events, and update the MegaDrive
  64. // accordingly. It returns 1 to continue playing the game, or 0 to quit.
  65. int pd_handle_events(md &megad);
  66.  
  67. // Tells whether DGen stopped intentionally so emulation can resume without
  68. // skipping frames.
  69. int pd_stopped();
  70.  
  71. // If true, stop emulation (display last frame repeatedly).
  72. extern bool pd_freeze;
  73.  
  74. // These are called to display and clear game messages.
  75. void pd_message(const char *fmt, ...);
  76. void pd_clear_message();
  77. // This should display cartridge header info. You can do this any way you like,
  78. // I don't care. :)
  79. void pd_show_carthead(md &megad);
  80.  
  81. // This should clean up the mess you made. ;)
  82. void pd_quit();
  83.  
  84. #endif // __PD_H__
  85.