nes_core.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. /*===================================================================*/
  2. /* nes_core.h : nes simulator provides this */
  3. /*===================================================================*/
  4. #ifndef NES_CORE_H_INCLUDED
  5. #define NES_CORE_H_INCLUDED
  6. /* NES display size */
  7. #define NES_DISP_WIDTH 256
  8. #define NES_DISP_HEIGHT 240
  9. typedef char (*NesVipInit)(void);
  10. typedef void (*NesVipUninit)(void);
  11. typedef void (*NesVipOutput)(unsigned long *workframe);
  12. typedef void (*NesAudioInit)(void);
  13. typedef void (*NesAudioOutput)(short *Audiobuf, unsigned int buff_size);
  14. typedef void (*NesAudioUninit)(void);
  15. typedef enum
  16. {
  17. NES_DISP_FLIP_TYPE_NO_FLIP = 0,
  18. NES_DISP_FLIP_TYPE_ONLY_V,
  19. NES_DISP_FLIP_TYPE_ONLY_H,
  20. NES_DISP_FLIP_TYPE_BOTH_H_V,
  21. } NesFlip_type;
  22. typedef enum
  23. {
  24. NES_CORE_START_SUCCESS = 0,
  25. NES_CORE_START_INVILD_PARAM = -1,
  26. NES_CORE_START_INVILD_PLATFORM = -2,
  27. NES_CORE_START_INIT_ERROR = -3,
  28. }NesCoreStartReturns;
  29. typedef struct
  30. {
  31. /* Video related fop */
  32. NesVipInit fop_VipInit;
  33. NesVipOutput fop_VipOutput;
  34. NesVipUninit fop_VipUnInit;
  35. /* Audio related fop */
  36. NesAudioInit fop_AudioInit;
  37. NesAudioOutput fop_AudioOutput;
  38. NesAudioUninit fop_AudioUnInit;
  39. /* For Panel flip type attribute */
  40. NesFlip_type Flip_Type;
  41. } NesConfig_t;
  42. /* Joystick events */
  43. typedef enum
  44. {
  45. EVENT_JOYPAD_MIN = 0,
  46. ADD_EVENT_JOYPAD_UP,
  47. ADD_EVENT_JOYPAD_DOWN,
  48. ADD_EVENT_JOYPAD_LEFT,
  49. ADD_EVENT_JOYPAD_RIGHT,
  50. ADD_EVENT_JOYPAD_SELECT,
  51. ADD_EVENT_JOYPAD_START,
  52. ADD_EVENT_JOYPAD_1,
  53. ADD_EVENT_JOYPAD_2,
  54. ADD_EVENT_JOYPAD_3,
  55. ADD_EVENT_JOYPAD_4,
  56. ADD_EVENT_JOYPAD_L1,
  57. ADD_EVENT_JOYPAD_L2,
  58. ADD_EVENT_JOYPAD_R1,
  59. ADD_EVENT_JOYPAD_R2,
  60. REMOVE_EVENT_JOYPAD_UP,
  61. REMOVE_EVENT_JOYPAD_DOWN,
  62. REMOVE_EVENT_JOYPAD_LEFT,
  63. REMOVE_EVENT_JOYPAD_RIGHT,
  64. REMOVE_EVENT_JOYPAD_SELECT,
  65. REMOVE_EVENT_JOYPAD_START,
  66. REMOVE_EVENT_JOYPAD_1,
  67. REMOVE_EVENT_JOYPAD_2,
  68. REMOVE_EVENT_JOYPAD_3,
  69. REMOVE_EVENT_JOYPAD_4,
  70. REMOVE_EVENT_JOYPAD_L1,
  71. REMOVE_EVENT_JOYPAD_L2,
  72. REMOVE_EVENT_JOYPAD_R1,
  73. REMOVE_EVENT_JOYPAD_R2,
  74. EVENT_JOYPAD_MAX,
  75. } Control_Key;
  76. /* Joystick ID */
  77. typedef enum
  78. {
  79. JOYPAD_A = 0,
  80. JOYPAD_B,
  81. JOYPAD_MAX,
  82. } JoyPadNum;
  83. int Nes_Start_Game(char *filename, NesConfig_t *pstConfig);
  84. void Nes_Exit_Game(void);
  85. void Nes_Excute_Key(Control_Key event, JoyPadNum joypadNum);
  86. void Nes_Set_AuidoSamplesPerSync(unsigned int samples);
  87. #endif /* NES_GAME_H_INCLUDED */