docs, scripts
[fceu.git] / ines.h
1 /* FCE Ultra - NES/Famicom Emulator
2  *
3  * Copyright notice for this file:
4  *  Copyright (C) 1998 Bero
5  *  Copyright (C) 2002 Ben Parnell
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
20  */
21
22 #ifdef INESPRIV
23
24 void iNESStateRestore(int version);
25 extern uint32 iNESGameCRC32;
26
27 extern uint8 *VROM;
28 extern uint32 VROM_size;
29
30 extern void (*MapStateRestore)(int version);
31 extern void (*MapClose)(void);
32 extern void (*MapperReset)(void);
33
34 /* This order is necessary */
35 #define WRAM          (GameMemBlock)
36 #define sizeofWRAM    8192
37
38 #define MapperExRAM   (GameMemBlock+sizeofWRAM)
39 #define sizeofMapperExRAM  32768
40 /* for the MMC5 code to work properly.  It might be fixed later... */
41
42
43 #define CHRRAM        (GameMemBlock+sizeofWRAM+sizeofMapperExRAM)
44 #define sizeofCHRRAM 8192
45
46 #define ExtraNTARAM   (GameMemBlock+sizeofWRAM+sizeofMapperExRAM+sizeofCHRRAM)
47 #define sizeofExtraNTARAM 2048
48
49 #define PRGBankList    (ExtraNTARAM+sizeofExtraNTARAM)
50
51 #define mapbyte1       (PRGBankList+4)
52 #define mapbyte2       (mapbyte1+8)
53 #define mapbyte3       (mapbyte2+8)
54 #define mapbyte4       (mapbyte3+8)
55 uint16 iNESCHRBankList[8];
56 int32 iNESIRQLatch,iNESIRQCount;
57 uint8 iNESMirroring;
58 uint8 iNESIRQa;
59
60 #define IRQa iNESIRQa
61 #define Mirroring iNESMirroring
62 #define IRQCount iNESIRQCount
63 #define IRQLatch iNESIRQLatch
64 #define CHRBankList iNESCHRBankList
65 #else
66 int iNESLoad(char *name, int fp);
67 #endif
68
69         typedef struct {
70                 char ID[4]; /*NES^Z*/
71                 uint8 ROM_size;
72                 uint8 VROM_size;
73                 uint8 ROM_type;
74                 uint8 ROM_type2;
75                 uint8 reserve[8];
76         } iNES_HEADER;
77
78 void FASTAPASS(2) VRAM_BANK1(uint32 A, uint8 V);
79 void FASTAPASS(2) VRAM_BANK4(uint32 A,uint32 V);
80
81 void FASTAPASS(2) VROM_BANK1(uint32 A,uint32 V);
82 void FASTAPASS(2) VROM_BANK2(uint32 A,uint32 V);
83 void FASTAPASS(2) VROM_BANK4(uint32 A, uint32 V);
84 void FASTAPASS(1) VROM_BANK8(uint32 V);
85 void FASTAPASS(2) ROM_BANK8(uint32 A, uint32 V);
86 void FASTAPASS(2) ROM_BANK16(uint32 A, uint32 V);
87 void FASTAPASS(2) ROM_BANK32(uint32 V);
88
89 extern uint8 vmask;
90 extern uint32 vmask1;
91 extern uint32 vmask2;
92 extern uint32 vmask4;
93 extern uint32 pmask8;
94 extern uint8 pmask16;
95 extern uint8 pmask32;
96
97 void FASTAPASS(1) onemir(uint8 V);
98 void FASTAPASS(1) MIRROR_SET2(uint8 V);
99 void FASTAPASS(1) MIRROR_SET(uint8 V);
100
101
102 void DetectMMC1WRAMSize(void);
103 void DetectMMC5WRAMSize(void);
104
105 void Mapper0_init(void);
106 void Mapper1_init(void);
107 void Mapper2_init(void);
108 void Mapper3_init(void);
109 void Mapper4_init(void);
110 void Mapper5_init(void);
111 void Mapper6_init(void);
112 void Mapper7_init(void);
113 void Mapper8_init(void);
114 void Mapper9_init(void);
115 void Mapper10_init(void);
116 void Mapper11_init(void);
117 void Mapper12_init(void);
118 void Mapper13_init(void);
119 void Mapper14_init(void);
120 void Mapper15_init(void);
121 void Mapper16_init(void);
122 void Mapper17_init(void);
123 void Mapper18_init(void);
124 void Mapper19_init(void);
125 void Mapper20_init(void);
126 void Mapper21_init(void);
127 void Mapper22_init(void);
128 void Mapper23_init(void);
129 void Mapper24_init(void);
130 void Mapper25_init(void);
131 void Mapper26_init(void);
132 void Mapper27_init(void);
133 void Mapper28_init(void);
134 void Mapper29_init(void);
135 void Mapper30_init(void);
136 void Mapper31_init(void);
137 void Mapper32_init(void);
138 void Mapper33_init(void);
139 void Mapper34_init(void);
140 void Mapper35_init(void);
141 void Mapper36_init(void);
142 void Mapper37_init(void);
143 void Mapper38_init(void);
144 void Mapper39_init(void);
145 void Mapper40_init(void);
146 void Mapper41_init(void);
147 void Mapper42_init(void);
148 void Mapper43_init(void);
149 void Mapper44_init(void);
150 void Mapper45_init(void);
151 void Mapper46_init(void);
152 void Mapper47_init(void);
153 void Mapper48_init(void);
154 void Mapper49_init(void);
155 void Mapper50_init(void);
156 void Mapper51_init(void);
157 void Mapper52_init(void);
158 void Mapper53_init(void);
159 void Mapper54_init(void);
160 void Mapper55_init(void);
161 void Mapper56_init(void);
162 void Mapper57_init(void);
163 void Mapper58_init(void);
164 void Mapper59_init(void);
165 void Mapper60_init(void);
166 void Mapper61_init(void);
167 void Mapper62_init(void);
168 void Mapper63_init(void);
169 void Mapper64_init(void);
170 void Mapper65_init(void);
171 void Mapper66_init(void);
172 void Mapper67_init(void);
173 void Mapper68_init(void);
174 void Mapper69_init(void);
175 void Mapper70_init(void);
176 void Mapper71_init(void);
177 void Mapper72_init(void);
178 void Mapper73_init(void);
179 void Mapper74_init(void);
180 void Mapper75_init(void);
181 void Mapper76_init(void);
182 void Mapper77_init(void);
183 void Mapper78_init(void);
184 void Mapper79_init(void);
185 void Mapper80_init(void);
186 void Mapper81_init(void);
187 void Mapper82_init(void);
188 void Mapper83_init(void);
189 void Mapper84_init(void);
190 void Mapper85_init(void);
191 void Mapper86_init(void);
192 void Mapper87_init(void);
193 void Mapper88_init(void);
194 void Mapper89_init(void);
195 void Mapper90_init(void);
196 void Mapper91_init(void);
197 void Mapper92_init(void);
198 void Mapper93_init(void);
199 void Mapper94_init(void);
200 void Mapper95_init(void);
201 void Mapper96_init(void);
202 void Mapper97_init(void);
203 void Mapper98_init(void);
204 void Mapper99_init(void);
205 void Mapper100_init(void);
206 void Mapper101_init(void);
207 void Mapper102_init(void);
208 void Mapper103_init(void);
209 void Mapper104_init(void);
210 void Mapper105_init(void);
211 void Mapper106_init(void);
212 void Mapper107_init(void);
213 void Mapper108_init(void);
214 void Mapper109_init(void);
215 void Mapper110_init(void);
216 void Mapper111_init(void);
217 void Mapper112_init(void);
218 void Mapper113_init(void);
219 void Mapper114_init(void);
220 void Mapper115_init(void);
221 void Mapper116_init(void);
222 void Mapper117_init(void);
223 void Mapper118_init(void);
224 void Mapper119_init(void);
225 void Mapper120_init(void);
226 void Mapper121_init(void);
227 void Mapper122_init(void);
228 void Mapper123_init(void);
229 void Mapper124_init(void);
230 void Mapper125_init(void);
231 void Mapper126_init(void);
232 void Mapper127_init(void);
233 void Mapper128_init(void);
234 void Mapper129_init(void);
235 void Mapper130_init(void);
236 void Mapper131_init(void);
237 void Mapper132_init(void);
238 void Mapper133_init(void);
239 void Mapper134_init(void);
240 void Mapper135_init(void);
241 void Mapper136_init(void);
242 void Mapper137_init(void);
243 void Mapper138_init(void);
244 void Mapper139_init(void);
245 void Mapper140_init(void);
246 void Mapper141_init(void);
247 void Mapper142_init(void);
248 void Mapper143_init(void);
249 void Mapper144_init(void);
250 void Mapper145_init(void);
251 void Mapper146_init(void);
252 void Mapper147_init(void);
253 void Mapper148_init(void);
254 void Mapper149_init(void);
255 void Mapper150_init(void);
256 void Mapper151_init(void);
257 void Mapper152_init(void);
258 void Mapper153_init(void);
259 void Mapper154_init(void);
260 void Mapper155_init(void);
261 void Mapper156_init(void);
262 void Mapper157_init(void);
263 void Mapper158_init(void);
264 void Mapper159_init(void);
265 void Mapper160_init(void);
266 void Mapper161_init(void);
267 void Mapper162_init(void);
268 void Mapper163_init(void);
269 void Mapper164_init(void);
270 void Mapper165_init(void);
271 void Mapper166_init(void);
272 void Mapper167_init(void);
273 void Mapper168_init(void);
274 void Mapper169_init(void);
275 void Mapper170_init(void);
276 void Mapper171_init(void);
277 void Mapper172_init(void);
278 void Mapper173_init(void);
279 void Mapper174_init(void);
280 void Mapper175_init(void);
281 void Mapper176_init(void);
282 void Mapper177_init(void);
283 void Mapper178_init(void);
284 void Mapper179_init(void);
285 void Mapper180_init(void);
286 void Mapper181_init(void);
287 void Mapper182_init(void);
288 void Mapper183_init(void);
289 void Mapper184_init(void);
290 void Mapper185_init(void);
291 void Mapper186_init(void);
292 void Mapper187_init(void);
293 void Mapper188_init(void);
294 void Mapper189_init(void);
295 void Mapper190_init(void);
296 void Mapper191_init(void);
297 void Mapper192_init(void);
298 void Mapper193_init(void);
299 void Mapper194_init(void);
300 void Mapper195_init(void);
301 void Mapper196_init(void);
302 void Mapper197_init(void);
303 void Mapper198_init(void);
304 void Mapper199_init(void);
305 void Mapper200_init(void);
306 void Mapper201_init(void);
307 void Mapper202_init(void);
308 void Mapper203_init(void);
309 void Mapper204_init(void);
310 void Mapper205_init(void);
311 void Mapper206_init(void);
312 void Mapper207_init(void);
313 void Mapper208_init(void);
314 void Mapper209_init(void);
315 void Mapper210_init(void);
316 void Mapper211_init(void);
317 void Mapper212_init(void);
318 void Mapper213_init(void);
319 void Mapper214_init(void);
320 void Mapper215_init(void);
321 void Mapper216_init(void);
322 void Mapper217_init(void);
323 void Mapper218_init(void);
324 void Mapper219_init(void);
325 void Mapper220_init(void);
326 void Mapper221_init(void);
327 void Mapper222_init(void);
328 void Mapper223_init(void);
329 void Mapper224_init(void);
330 void Mapper225_init(void);
331 void Mapper226_init(void);
332 void Mapper227_init(void);
333 void Mapper228_init(void);
334 void Mapper229_init(void);
335 void Mapper230_init(void);
336 void Mapper231_init(void);
337 void Mapper232_init(void);
338 void Mapper233_init(void);
339 void Mapper234_init(void);
340 void Mapper235_init(void);
341 void Mapper236_init(void);
342 void Mapper237_init(void);
343 void Mapper238_init(void);
344 void Mapper239_init(void);
345 void Mapper240_init(void);
346 void Mapper241_init(void);
347 void Mapper242_init(void);
348 void Mapper243_init(void);
349 void Mapper244_init(void);
350 void Mapper245_init(void);
351 void Mapper246_init(void);
352 void Mapper247_init(void);
353 void Mapper248_init(void);
354 void Mapper249_init(void);
355 void Mapper250_init(void);
356 void Mapper251_init(void);
357 void Mapper252_init(void);
358 void Mapper253_init(void);
359 void Mapper254_init(void);
360 void Mapper255_init(void);
361
362 void VRC6_ESI(int t);
363 void VRC7_ESI(void);
364 void Mapper5_ESI(void);
365 void Mapper69_ESI(void);
366 void Mapper19_ESI(void);