always fill on blanking
[fceu.git] / ines.h
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
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
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
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
105 //void Mapper7_init(void);\r
106 void Mapper8_init(void);\r
107 void Mapper9_init(void);\r
108 void Mapper10_init(void);\r
109 //void Mapper11_init(void);\r
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
135 //void Mapper37_init(void);\r
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
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
161 //void Mapper66_init(void);\r
162 void Mapper67_init(void);\r
163 void Mapper68_init(void);\r
164 void Mapper69_init(void);\r
165 //void Mapper70_init(void);\r
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
173 //void Mapper78_init(void);\r
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
182 //void Mapper87_init(void);\r
183 void Mapper88_init(void);\r
184 void Mapper89_init(void);\r
185 void Mapper91_init(void);\r
186 void Mapper92_init(void);\r
187 //void Mapper93_init(void);\r
188 //void Mapper94_init(void);\r
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
195 void Mapper103_init(void);\r
196 void Mapper104_init(void);\r
197 void Mapper106_init(void);\r
198 //void Mapper107_init(void);\r
199 void Mapper108_init(void);\r
200 void Mapper109_init(void);\r
201 void Mapper110_init(void);\r
202 void Mapper111_init(void);\r
203 void Mapper113_init(void);\r
204 void Mapper115_init(void);\r
205 void Mapper116_init(void);\r
206 //void Mapper117_init(void);\r
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
223 void Mapper139_init(void);\r
224 //void Mapper140_init(void);\r
225 void Mapper141_init(void);\r
226 void Mapper142_init(void);\r
227 void Mapper143_init(void);\r
228 //void Mapper144_init(void);\r
229 void Mapper150_init(void);\r
230 void Mapper151_init(void);\r
231 //void Mapper152_init(void);\r
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
256 //void Mapper181_init(void);\r
257 void Mapper184_init(void);\r
258 //void Mapper185_init(void);\r
259 //void Mapper189_init(void);\r
260 //void Mapper192_init(void);\r
261 void Mapper193_init(void);\r
262 //void Mapper194_init(void);\r
263 void Mapper195_init(void);\r
264 void Mapper196_init(void);\r
265 void Mapper197_init(void);\r
266 //void Mapper198_init(void);\r
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
274 //void Mapper211_init(void);\r
275 void Mapper212_init(void);\r
276 void Mapper213_init(void);\r
277 void Mapper214_init(void);\r
278 //void Mapper218_init(void);\r
279 void Mapper219_init(void);\r
280 //void Mapper220_init(void);\r
281 void Mapper221_init(void);\r
282 //void Mapper222_init(void);\r
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
295 //void Mapper235_init(void);\r
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
323 void Mapper11_Init(CartInfo *);\r
324 void Mapper12_Init(CartInfo *);\r
325 void Mapper19_Init(CartInfo *);\r
326 void Mapper37_Init(CartInfo *);\r
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
332 void Mapper57_Init(CartInfo *);\r
333 void Mapper58_Init(CartInfo *);\r
334 void Mapper70_Init(CartInfo *);\r
335 void Mapper74_Init(CartInfo *);\r
336 void Mapper78_Init(CartInfo *);\r
337 void Mapper87_Init(CartInfo *);\r
338 void Mapper88_Init(CartInfo *);\r
339 void Mapper90_Init(CartInfo *);\r
340 void Mapper93_Init(CartInfo *);\r
341 void Mapper94_Init(CartInfo *);\r
342 void Mapper95_Init(CartInfo *);\r
343 void Mapper105_Init(CartInfo *);\r
344 void Mapper107_Init(CartInfo *);\r
345 void Mapper112_Init(CartInfo *);\r
346 void Mapper114_Init(CartInfo *);\r
347 void Mapper115_Init(CartInfo *);\r
348 void Mapper116_Init(CartInfo *);\r
349 void Mapper117_Init(CartInfo *);\r
350 void Mapper118_Init(CartInfo *);\r
351 void Mapper119_Init(CartInfo *);\r
352 void Mapper125_Init(CartInfo *);\r
353 void Mapper140_Init(CartInfo *);\r
354 void Mapper144_Init(CartInfo *);\r
355 void Mapper152_Init(CartInfo *);\r
356 void Mapper154_Init(CartInfo *);\r
357 void Mapper155_Init(CartInfo *);\r
358 void Mapper163_Init(CartInfo *);\r
359 void Mapper164_Init(CartInfo *);\r
360 void Mapper165_Init(CartInfo *);\r
361 void Mapper181_Init(CartInfo *);\r
362 void Mapper182_Init(CartInfo *);\r
363 void Mapper183_Init(CartInfo *);\r
364 void Mapper185_Init(CartInfo *);\r
365 void Mapper186_Init(CartInfo *);\r
366 void Mapper187_Init(CartInfo *);\r
367 void Mapper188_Init(CartInfo *);\r
368 void Mapper189_Init(CartInfo *);\r
369 void Mapper191_Init(CartInfo *);\r
370 void Mapper192_Init(CartInfo *);\r
371 void Mapper194_Init(CartInfo *);\r
372 void Mapper198_Init(CartInfo *);\r
373 void Mapper199_Init(CartInfo *);\r
374 void Mapper205_Init(CartInfo *);\r
375 void Mapper208_Init(CartInfo *);\r
376 void Mapper209_Init(CartInfo *);\r
377 void Mapper210_Init(CartInfo *);\r
378 void Mapper211_Init(CartInfo *);\r
379 void Mapper215_Init(CartInfo *);\r
380 void Mapper216_Init(CartInfo *);\r
381 void Mapper217_Init(CartInfo *);\r
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
387 void Mapper245_Init(CartInfo *);\r
388 void Mapper249_Init(CartInfo *);\r
389 void Mapper250_Init(CartInfo *);\r
390 void Mapper254_Init(CartInfo *);\r