/*===================================================================*/ /* nes_core.h : nes simulator provides this */ /*===================================================================*/ #ifndef NES_CORE_H_INCLUDED #define NES_CORE_H_INCLUDED /* NES display size */ #define NES_DISP_WIDTH 256 #define NES_DISP_HEIGHT 240 typedef char (*NesVipInit)(void); typedef void (*NesVipUninit)(void); typedef void (*NesVipOutput)(unsigned long *workframe); typedef void (*NesAudioInit)(void); typedef void (*NesAudioOutput)(short *Audiobuf, unsigned int buff_size); typedef void (*NesAudioUninit)(void); typedef enum { NES_DISP_FLIP_TYPE_NO_FLIP = 0, NES_DISP_FLIP_TYPE_ONLY_V, NES_DISP_FLIP_TYPE_ONLY_H, NES_DISP_FLIP_TYPE_BOTH_H_V, } NesFlip_type; typedef enum { NES_CORE_START_SUCCESS = 0, NES_CORE_START_INVILD_PARAM = -1, NES_CORE_START_INVILD_PLATFORM = -2, NES_CORE_START_INIT_ERROR = -3, }NesCoreStartReturns; typedef struct { /* Video related fop */ NesVipInit fop_VipInit; NesVipOutput fop_VipOutput; NesVipUninit fop_VipUnInit; /* Audio related fop */ NesAudioInit fop_AudioInit; NesAudioOutput fop_AudioOutput; NesAudioUninit fop_AudioUnInit; /* For Panel flip type attribute */ NesFlip_type Flip_Type; } NesConfig_t; /* Joystick events */ typedef enum { EVENT_JOYPAD_MIN = 0, ADD_EVENT_JOYPAD_UP, ADD_EVENT_JOYPAD_DOWN, ADD_EVENT_JOYPAD_LEFT, ADD_EVENT_JOYPAD_RIGHT, ADD_EVENT_JOYPAD_SELECT, ADD_EVENT_JOYPAD_START, ADD_EVENT_JOYPAD_1, ADD_EVENT_JOYPAD_2, ADD_EVENT_JOYPAD_3, ADD_EVENT_JOYPAD_4, ADD_EVENT_JOYPAD_L1, ADD_EVENT_JOYPAD_L2, ADD_EVENT_JOYPAD_R1, ADD_EVENT_JOYPAD_R2, REMOVE_EVENT_JOYPAD_UP, REMOVE_EVENT_JOYPAD_DOWN, REMOVE_EVENT_JOYPAD_LEFT, REMOVE_EVENT_JOYPAD_RIGHT, REMOVE_EVENT_JOYPAD_SELECT, REMOVE_EVENT_JOYPAD_START, REMOVE_EVENT_JOYPAD_1, REMOVE_EVENT_JOYPAD_2, REMOVE_EVENT_JOYPAD_3, REMOVE_EVENT_JOYPAD_4, REMOVE_EVENT_JOYPAD_L1, REMOVE_EVENT_JOYPAD_L2, REMOVE_EVENT_JOYPAD_R1, REMOVE_EVENT_JOYPAD_R2, EVENT_JOYPAD_MAX, } Control_Key; /* Joystick ID */ typedef enum { JOYPAD_A = 0, JOYPAD_B, JOYPAD_MAX, } JoyPadNum; int Nes_Start_Game(char *filename, NesConfig_t *pstConfig); void Nes_Exit_Game(void); void Nes_Excute_Key(Control_Key event, JoyPadNum joypadNum); void Nes_Set_AuidoSamplesPerSync(unsigned int samples); #endif /* NES_GAME_H_INCLUDED */