emu.h 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. /*
  2. * PicoDrive
  3. * (C) notaz, 2006-2010
  4. *
  5. * This work is licensed under the terms of MAME license.
  6. * See COPYING file in the top-level directory.
  7. */
  8. #include "port_config.h"
  9. #ifdef __cplusplus
  10. extern "C" {
  11. #endif
  12. #define array_size(x) (sizeof(x) / sizeof(x[0]))
  13. extern void *g_screen_ptr;
  14. #if SCREEN_SIZE_FIXED
  15. #define g_screen_width SCREEN_WIDTH
  16. #define g_screen_height SCREEN_HEIGHT
  17. #else
  18. extern int g_screen_width;
  19. extern int g_screen_height;
  20. #endif
  21. #define EOPT_EN_SRAM (1<<0)
  22. #define EOPT_SHOW_FPS (1<<1)
  23. #define EOPT_EN_SOUND (1<<2)
  24. #define EOPT_GZIP_SAVES (1<<3)
  25. #define EOPT_MMUHACK (1<<4)
  26. #define EOPT_NO_AUTOSVCFG (1<<5)
  27. #define EOPT_16BPP (1<<7) // depreceted for .renderer
  28. #define EOPT_RAM_TIMINGS (1<<8)
  29. #define EOPT_EN_CD_LEDS (1<<10)
  30. #define EOPT_A_SN_GAMMA (1<<12)
  31. #define EOPT_VSYNC (1<<13)
  32. #define EOPT_GIZ_SCANLN (1<<14)
  33. #define EOPT_GIZ_DBLBUF (1<<15)
  34. #define EOPT_VSYNC_MODE (1<<16)
  35. #define EOPT_SHOW_RTC (1<<17)
  36. #define EOPT_NO_FRMLIMIT (1<<18)
  37. #define EOPT_WIZ_TEAR_FIX (1<<19)
  38. #define EOPT_EXT_FRMLIMIT (1<<20) // no internal frame limiter (limited by snd, etc)
  39. enum {
  40. EOPT_SCALE_NONE = 0,
  41. EOPT_SCALE_SW,
  42. EOPT_SCALE_HW,
  43. };
  44. enum {
  45. EOPT_CONFIRM_NONE = 0,
  46. EOPT_CONFIRM_SAVE = 1,
  47. EOPT_CONFIRM_LOAD = 2,
  48. EOPT_CONFIRM_BOTH = 3,
  49. };
  50. typedef struct _currentConfig_t {
  51. int EmuOpt;
  52. int s_PicoOpt;
  53. int s_PsndRate;
  54. int s_PicoRegion;
  55. int s_PicoAutoRgnOrder;
  56. int s_PicoCDBuffers;
  57. int Frameskip;
  58. int confirm_save;
  59. int CPUclock;
  60. int volume;
  61. int gamma;
  62. int scaling; // gp2x: EOPT_SCALE_*; psp: bilinear filtering
  63. int vscaling;
  64. int rotation; // for UIQ
  65. float scale; // psp: screen scale
  66. float hscale32, hscale40; // psp: horizontal scale
  67. int gamma2; // psp: black level
  68. int turbo_rate;
  69. int renderer;
  70. int renderer32x;
  71. int filter; // pandora
  72. int analog_deadzone;
  73. } currentConfig_t;
  74. extern currentConfig_t currentConfig, defaultConfig;
  75. extern char *PicoConfigFile;
  76. extern int rom_loaded;
  77. extern int state_slot;
  78. extern int config_slot, config_slot_current;
  79. extern unsigned char *movie_data;
  80. extern int reset_timing;
  81. #define PICO_PEN_ADJUST_X 4
  82. #define PICO_PEN_ADJUST_Y 2
  83. extern int pico_pen_x, pico_pen_y;
  84. extern int pico_inp_mode;
  85. extern char rom_fname_reload[512]; // ROM to try loading on next PGS_ReloadRom
  86. extern char rom_fname_loaded[512]; // currently loaded ROM filename
  87. // engine states
  88. extern int engineState;
  89. enum TPicoGameState {
  90. PGS_Paused = 1,
  91. PGS_Running,
  92. PGS_Quit,
  93. PGS_KeyConfig,
  94. PGS_ReloadRom,
  95. PGS_Menu,
  96. PGS_TrayMenu,
  97. PGS_RestartRun,
  98. PGS_Suspending, /* PSP */
  99. PGS_SuspendWake, /* PSP */
  100. };
  101. // media types
  102. enum {
  103. PM_BAD = 0,
  104. PM_MD_CART, /* also 32x */
  105. PM_MARK3,
  106. PM_CD,
  107. };
  108. void emu_init(void);
  109. void emu_finish(void);
  110. void emu_loop(void);
  111. int emu_reload_rom(char *rom_fname);
  112. int emu_swap_cd(const char *fname);
  113. int emu_save_load_game(int load, int sram);
  114. void emu_reset_game(void);
  115. void emu_prep_defconfig(void);
  116. void emu_set_defconfig(void);
  117. int emu_read_config(const char *rom_fname, int no_defaults);
  118. int emu_write_config(int game);
  119. char *emu_get_save_fname(int load, int is_sram, int slot);
  120. int emu_check_save_file(int slot, int *time);
  121. void emu_text_out8 (int x, int y, const char *text);
  122. void emu_text_out16(int x, int y, const char *text);
  123. void emu_text_out8_rot (int x, int y, const char *text);
  124. void emu_text_out16_rot(int x, int y, const char *text);
  125. void emu_make_path(char *buff, const char *end, int size);
  126. void emu_update_input(void);
  127. void emu_get_game_name(char *str150);
  128. void emu_set_fastforward(int set_on);
  129. void emu_status_msg(const char *format, ...);
  130. /* used by some (but not all) platforms */
  131. void emu_cmn_forced_frame(int no_scale, int do_emu);
  132. /* stuff to be implemented by platform code */
  133. extern const char *renderer_names[];
  134. extern const char *renderer_names32x[];
  135. void pemu_prep_defconfig(void);
  136. void pemu_validate_config(void);
  137. void pemu_loop_prep(void);
  138. void pemu_loop_end(void);
  139. void pemu_forced_frame(int no_scale, int do_emu); // ..to g_menubg_src_ptr
  140. void pemu_finalize_frame(const char *fps, const char *notice_msg);
  141. void pemu_sound_start(void);
  142. void pemu_sound_stop(void);
  143. void pemu_sound_wait(void);
  144. void plat_early_init(void);
  145. void plat_init(void);
  146. void plat_finish(void);
  147. /* used before things blocking for a while (these funcs redraw on return) */
  148. void plat_status_msg_busy_first(const char *msg);
  149. void plat_status_msg_busy_next(const char *msg);
  150. void plat_status_msg_clear(void);
  151. void plat_video_toggle_renderer(int change, int menu_call);
  152. void plat_update_volume(int has_changed, int is_up);
  153. #ifdef __cplusplus
  154. } // extern "C"
  155. #endif