| 1 | #include "types.h" |
| 2 | #include "git.h" |
| 3 | |
| 4 | /* Prototypes for platform interface functions follow: */ |
| 5 | |
| 6 | void FCEUD_Update(uint8 *buf, int16 *Buffer, int Count); |
| 7 | |
| 8 | /* Video interface */ |
| 9 | void FCEUD_SetPalette(uint8 index, uint8 r, uint8 g, uint8 b); |
| 10 | void FCEUD_GetPalette(uint8 i,uint8 *r, unsigned char *g, unsigned char *b); |
| 11 | |
| 12 | /* Sound interface */ |
| 13 | void FCEUD_WriteSoundData(int32 *Buffer, int Count); |
| 14 | |
| 15 | /* Displays an error. Can block or not. */ |
| 16 | void FCEUD_PrintError(char *s); |
| 17 | |
| 18 | #ifdef NETWORK |
| 19 | /* Network interface */ |
| 20 | |
| 21 | int FCEUD_NetworkConnect(void); |
| 22 | int FCEUD_NetworkRecvData(uint8 *data, uint32 len, int block); |
| 23 | int FCEUD_NetworkSendData(uint8 *data, uint32 len); |
| 24 | void FCEUD_NetworkClose(void); |
| 25 | |
| 26 | #endif |
| 27 | |
| 28 | #define DES_NTSCCOL 2 |
| 29 | |
| 30 | #define DES_RESET 0x10 |
| 31 | #define DES_POWER 0x11 |
| 32 | |
| 33 | #define DES_GETNTSCHUE 0x20 |
| 34 | #define DES_GETNTSCTINT 0x21 |
| 35 | #define DES_SETNTSCHUE 0x22 |
| 36 | #define DES_SETNTSCTINT 0x23 |
| 37 | |
| 38 | #define DES_NSFINC 0x50 |
| 39 | #define DES_NSFDEC 0x51 |
| 40 | #define DES_NSFRES 0x52 |
| 41 | |
| 42 | #define DES_VSUNIDIPSET 0x70 |
| 43 | #define DES_VSUNITOGGLEDIPVIEW 0x71 |
| 44 | #define DES_VSUNICOIN 0x72 |
| 45 | #define DES_FDSINSERT 0x80 |
| 46 | #define DES_FDSEJECT 0x81 |
| 47 | #define DES_FDSSELECT 0x82 |
| 48 | |
| 49 | #define DES_NTSCSELHUE 0x90 |
| 50 | #define DES_NTSCSELTINT 0x91 |
| 51 | #define DES_NTSCDEC 0x92 |
| 52 | #define DES_NTSCINC 0x93 |
| 53 | |
| 54 | void DriverInterface(int w, void *d); |
| 55 | |
| 56 | void FCEUI_SetInput(int port, int type, void *ptr, int attrib); |
| 57 | void FCEUI_SetInputFC(int type, void *ptr, int attrib); |
| 58 | void FCEUI_DisableFourScore(int s); |
| 59 | |
| 60 | void FCEUI_GetNTSCTH(int *tint, int *hue); |
| 61 | void FCEUI_SetNTSCTH(int n, int tint, int hue); |
| 62 | |
| 63 | #include "version.h" |
| 64 | |
| 65 | #define SI_UNSET -1 |
| 66 | #define SI_NONE 0 |
| 67 | #define SI_GAMEPAD 1 |
| 68 | #define SI_ZAPPER 2 |
| 69 | #define SI_POWERPADA 3 |
| 70 | #define SI_POWERPADB 4 |
| 71 | #define SI_ARKANOID 5 |
| 72 | #define SI_MOUSE 6 |
| 73 | |
| 74 | #define SIFC_UNSET -1 |
| 75 | #define SIFC_NONE 0 |
| 76 | #define SIFC_ARKANOID 1 |
| 77 | #define SIFC_SHADOW 2 |
| 78 | #define SIFC_4PLAYER 3 |
| 79 | #define SIFC_FKB 4 |
| 80 | #define SIFC_SUBORKB 5 |
| 81 | #define SIFC_HYPERSHOT 6 |
| 82 | #define SIFC_MAHJONG 7 |
| 83 | #define SIFC_QUIZKING 8 |
| 84 | #define SIFC_FTRAINERA 9 |
| 85 | #define SIFC_FTRAINERB 10 |
| 86 | #define SIFC_OEKAKIDS 11 |
| 87 | #define SIFC_BWORLD 12 |
| 88 | #define SIFC_TOPRIDER 13 |
| 89 | |
| 90 | #define SIS_NONE 0 |
| 91 | #define SIS_DATACH 1 |
| 92 | #define SIS_NWC 2 |
| 93 | #define SIS_VSUNISYSTEM 3 |
| 94 | #define SIS_NSF 4 |
| 95 | |
| 96 | |
| 97 | /* New interface functions */ |
| 98 | |
| 99 | /* 0 to order screen snapshots numerically(0.png), 1 to order them file base-numerically(smb3-0.png). */ |
| 100 | void FCEUI_SetSnapName(int a); |
| 101 | |
| 102 | /* 0 to keep 8-sprites limitation, 1 to remove it */ |
| 103 | void FCEUI_DisableSpriteLimitation(int a); |
| 104 | |
| 105 | /* 0 to save extra game data(*.sav) in same dir as game, 1 to save under base dir */ |
| 106 | void FCEUI_SaveExtraDataUnderBase(int a); |
| 107 | |
| 108 | /* name=path and file to load. returns 0 on failure, 1 on success */ |
| 109 | FCEUGI *FCEUI_LoadGame(char *name); |
| 110 | extern int LoadGameLastError; |
| 111 | |
| 112 | /* allocates memory. 0 on failure, 1 on success. */ |
| 113 | int FCEUI_Initialize(void); |
| 114 | |
| 115 | void FCEUI_Kill(void); |
| 116 | void FCEUI_SetEmuMode(int is_new); |
| 117 | |
| 118 | /* begins emulation. Returns after FCEUI_CloseGame() is called */ |
| 119 | extern void (*FCEUI_Emulate)(void); |
| 120 | |
| 121 | /* Closes currently loaded game, causes FCEUI_Emulate to return */ |
| 122 | void FCEUI_CloseGame(void); |
| 123 | |
| 124 | /* Enable/Disable game genie. a=0 disable, a=1 enable */ |
| 125 | void FCEUI_SetGameGenie(int a); |
| 126 | |
| 127 | /* Set video system a=0 NTSC, a=1 PAL */ |
| 128 | void FCEUI_SetVidSystem(int a); |
| 129 | |
| 130 | /* Convenience function; returns currently emulated video system(0=NTSC, 1=PAL). */ |
| 131 | int FCEUI_GetCurrentVidSystem(int *slstart, int *slend); |
| 132 | |
| 133 | #ifdef FRAMESKIP |
| 134 | /* Should be called from FCEUD_BlitScreen(). Specifies how many frames |
| 135 | to skip until FCEUD_BlitScreen() is called. FCEUD_BlitScreenDummy() |
| 136 | will be called instead of FCEUD_BlitScreen() when when a frame is skipped. |
| 137 | */ |
| 138 | void FCEUI_FrameSkip(int x); |
| 139 | #endif |
| 140 | |
| 141 | /* First and last scanlines to render, for ntsc and pal emulation. */ |
| 142 | void FCEUI_SetRenderedLines(int ntscf, int ntscl, int palf, int pall); |
| 143 | |
| 144 | /* Sets the base directory(save states, snapshots, etc. are saved in directories |
| 145 | below this directory. */ |
| 146 | void FCEUI_SetBaseDirectory(char *dir); |
| 147 | |
| 148 | /* Tells FCE Ultra to copy the palette data pointed to by pal and use it. |
| 149 | Data pointed to by pal needs to be 64*3 bytes in length. |
| 150 | */ |
| 151 | void FCEUI_SetPaletteArray(uint8 *pal); |
| 152 | |
| 153 | /* Sets up sound code to render sound at the specified rate, in samples |
| 154 | per second. The sample rate should be as close to 44100 hz as possible. |
| 155 | Sample rates from 8192 through 65535 are ok, though if the sample rate |
| 156 | is too low, some sound channels(noise) won't sound right. |
| 157 | If "Rate" equals 0, sound is disabled. |
| 158 | */ |
| 159 | void FCEUI_Sound(int Rate); |
| 160 | void FCEUI_SetSoundVolume(uint32 volume); |
| 161 | |
| 162 | #ifdef NETWORK |
| 163 | /* Set network play stuff. type=1 for server, type=2 for client. |
| 164 | skip is only used for server */ |
| 165 | void FCEUI_SetNetworkPlay(int type); |
| 166 | #endif |
| 167 | |
| 168 | void FCEUI_SelectState(int w); |
| 169 | void FCEUI_SaveState(void); |
| 170 | void FCEUI_LoadState(void); |
| 171 | int32 FCEUI_GetDesiredFPS(void); |
| 172 | void FCEUI_SaveSnapshot(void); |
| 173 | void FCEU_DispMessage(char *format, ...); |
| 174 | void FCEU_CancelDispMessage(void); |
| 175 | #define FCEUI_DispMessage FCEU_DispMessage |
| 176 | |
| 177 | int FCEUI_AddCheat(const char *name, uint32 addr, uint8 val, int compare, int type); |
| 178 | int FCEUI_DelCheat(uint32 which); |
| 179 | |
| 180 | int32 FCEUI_CheatSearchGetCount(void); |
| 181 | void FCEUI_CheatSearchGetRange(uint32 first, uint32 last, int (*callb)(uint32 a, uint8 last, uint8 current)); |
| 182 | void FCEUI_CheatSearchGet(int (*callb)(uint32 a, uint8 last, uint8 current, void *data),void *data); |
| 183 | void FCEUI_CheatSearchBegin(void); |
| 184 | void FCEUI_CheatSearchEnd(int type, uint8 v1, uint8 v2); |
| 185 | void FCEUI_ListCheats(int (*callb)(char *name, uint32 a, uint8 v, int compare, int s, int type, void *data), void *data); |
| 186 | |
| 187 | int FCEUI_GetCheat(uint32 which, char **name, uint32 *a, uint8 *v, int *compare, int *s, int *type); |
| 188 | int FCEUI_SetCheat(uint32 which, const char *name, int32 a, int32 v, int compare,int s, int type); |
| 189 | void FCEUI_CheatSearchShowExcluded(void); |
| 190 | void FCEUI_CheatSearchSetCurrentAsOriginal(void); |
| 191 | |
| 192 | int FCEUI_DecodePAR(const char *code, uint16 *a, uint8 *v, int *c, int *type); |
| 193 | int FCEUI_DecodeGG(const char *str, uint16 *a, uint8 *v, int *c); |
| 194 | int FCEUI_ToggleCheat(uint32 which); |
| 195 | |
| 196 | #define FCEUIOD_STATE 0 |
| 197 | #define FCEUIOD_SNAPS 1 |
| 198 | #define FCEUIOD_NV 2 |
| 199 | #define FCEUIOD_CHEATS 3 |
| 200 | #define FCEUIOD_MISC 4 |
| 201 | |
| 202 | #define FCEUIOD__COUNT 5 |
| 203 | |
| 204 | void FCEUI_SetDirOverride(int which, char *n); |
| 205 | |