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