Page[] mappings in mapper code, X.DB update for games with no controls
[fceu.git] / driver.h
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_NONE      0
66 #define SI_GAMEPAD   1
67 #define SI_ZAPPER    2
68 #define SI_POWERPADA  3
69 #define SI_POWERPADB  4
70 #define SI_ARKANOID   5
71
72 #define SIFC_NONE      0
73 #define SIFC_ARKANOID  1
74 #define SIFC_SHADOW      2
75 #define SIFC_4PLAYER    3
76 #define SIFC_FKB      4
77 #define SIFC_SUBORKB    5
78 #define SIFC_HYPERSHOT  6
79 #define SIFC_MAHJONG  7
80 #define SIFC_QUIZKING  8
81 #define SIFC_FTRAINERA  9
82 #define SIFC_FTRAINERB  10
83 #define SIFC_OEKAKIDS  11
84 #define SIFC_BWORLD      12
85 #define SIFC_TOPRIDER  13
86
87 #define SIS_NONE  0
88 #define SIS_DATACH  1
89 #define SIS_NWC    2
90 #define SIS_VSUNISYSTEM  3
91 #define SIS_NSF    4
92
93
94 /* New interface functions */
95
96 /* 0 to order screen snapshots numerically(0.png), 1 to order them file base-numerically(smb3-0.png). */
97 void FCEUI_SetSnapName(int a);
98
99 /* 0 to keep 8-sprites limitation, 1 to remove it */
100 void FCEUI_DisableSpriteLimitation(int a);
101
102 /* 0 to save extra game data(*.sav) in same dir as game, 1 to save under base dir */
103 void FCEUI_SaveExtraDataUnderBase(int a);
104
105 /* name=path and file to load.  returns 0 on failure, 1 on success */
106 FCEUGI *FCEUI_LoadGame(char *name);
107 extern int LoadGameLastError;
108
109 /* allocates memory.  0 on failure, 1 on success. */
110 int FCEUI_Initialize(void);
111
112 /* begins emulation.  Returns after FCEUI_CloseGame() is called */
113 void FCEUI_Emulate(void);
114
115 /* Closes currently loaded game, causes FCEUI_Emulate to return */
116 void FCEUI_CloseGame(void);
117
118 /* Enable/Disable game genie. a=0 disable, a=1 enable */
119 void FCEUI_SetGameGenie(int a);
120
121 /* Set video system a=0 NTSC, a=1 PAL */
122 void FCEUI_SetVidSystem(int a);
123
124 /* Convenience function; returns currently emulated video system(0=NTSC, 1=PAL).  */
125 int FCEUI_GetCurrentVidSystem(int *slstart, int *slend);
126
127 #ifdef FRAMESKIP
128 /* Should be called from FCEUD_BlitScreen().  Specifies how many frames
129    to skip until FCEUD_BlitScreen() is called.  FCEUD_BlitScreenDummy()
130    will be called instead of FCEUD_BlitScreen() when when a frame is skipped.
131 */
132 void FCEUI_FrameSkip(int x);
133 #endif
134
135 /* First and last scanlines to render, for ntsc and pal emulation. */
136 void FCEUI_SetRenderedLines(int ntscf, int ntscl, int palf, int pall);
137
138 /* Sets the base directory(save states, snapshots, etc. are saved in directories
139    below this directory. */
140 void FCEUI_SetBaseDirectory(char *dir);
141
142 /* Tells FCE Ultra to copy the palette data pointed to by pal and use it.
143    Data pointed to by pal needs to be 64*3 bytes in length.
144 */
145 void FCEUI_SetPaletteArray(uint8 *pal);
146
147 /* Sets up sound code to render sound at the specified rate, in samples
148    per second.  The sample rate should be as close to 44100 hz as possible.
149    Sample rates from 8192 through 65535 are ok, though if the sample rate
150    is too low, some sound channels(noise) won't sound right.
151    If "Rate" equals 0, sound is disabled.
152 */
153 void FCEUI_Sound(int Rate);
154 void FCEUI_SetSoundVolume(uint32 volume);
155
156 #ifdef NETWORK
157 /* Set network play stuff. type=1 for server, type=2 for client.
158    skip is only used for server */
159 void FCEUI_SetNetworkPlay(int type);
160 #endif
161
162 void FCEUI_SelectState(int w);
163 void FCEUI_SaveState(void);
164 void FCEUI_LoadState(void);
165 int32 FCEUI_GetDesiredFPS(void);
166 void FCEUI_SaveSnapshot(void);
167 void FCEU_DispMessage(char *format, ...);
168 #define FCEUI_DispMessage FCEU_DispMessage
169
170 int FCEUI_AddCheat(const char *name, uint32 addr, uint8 val, int compare, int type);
171 int FCEUI_DelCheat(uint32 which);
172
173 int32 FCEUI_CheatSearchGetCount(void);
174 void FCEUI_CheatSearchGetRange(uint32 first, uint32 last, int (*callb)(uint32 a, uint8 last, uint8 current));
175 void FCEUI_CheatSearchGet(int (*callb)(uint32 a, uint8 last, uint8 current, void *data),void *data);
176 void FCEUI_CheatSearchBegin(void);
177 void FCEUI_CheatSearchEnd(int type, uint8 v1, uint8 v2);
178 void FCEUI_ListCheats(int (*callb)(char *name, uint32 a, uint8 v, int compare, int s, int type, void *data), void *data);
179
180 int FCEUI_GetCheat(uint32 which, char **name, uint32 *a, uint8 *v, int *compare, int *s, int *type);
181 int FCEUI_SetCheat(uint32 which, const char *name, int32 a, int32 v, int compare,int s, int type);
182 void FCEUI_CheatSearchShowExcluded(void);
183 void FCEUI_CheatSearchSetCurrentAsOriginal(void);
184
185 int FCEUI_DecodePAR(const char *code, uint16 *a, uint8 *v, int *c, int *type);
186 int FCEUI_DecodeGG(const char *str, uint16 *a, uint8 *v, int *c);
187 int FCEUI_ToggleCheat(uint32 which);
188
189 #define FCEUIOD_STATE   0
190 #define FCEUIOD_SNAPS   1
191 #define FCEUIOD_NV      2
192 #define FCEUIOD_CHEATS  3
193 #define FCEUIOD_MISC    4
194
195 #define FCEUIOD__COUNT  5
196
197 void FCEUI_SetDirOverride(int which, char *n);
198