menubg, png, bugfix
[fceu.git] / ines.h
CommitLineData
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
25void iNESStateRestore(int version);\r
26extern uint32 iNESGameCRC32;\r
27\r
d97315ac 28extern uint32 VROM_size;\r
29extern uint32 ROM_size;\r
30\r
31extern void (*MapStateRestore)(int version);\r
32extern void (*MapClose)(void);\r
33extern 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
55extern uint16 iNESCHRBankList[8];\r
56extern int32 iNESIRQLatch,iNESIRQCount;\r
57extern uint8 iNESMirroring;\r
58extern 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
77void FASTAPASS(2) VRAM_BANK1(uint32 A, uint8 V);\r
78void FASTAPASS(2) VRAM_BANK4(uint32 A,uint32 V);\r
79\r
80void FASTAPASS(2) VROM_BANK1(uint32 A,uint32 V);\r
81void FASTAPASS(2) VROM_BANK2(uint32 A,uint32 V);\r
82void FASTAPASS(2) VROM_BANK4(uint32 A, uint32 V);\r
83void FASTAPASS(1) VROM_BANK8(uint32 V);\r
84void FASTAPASS(2) ROM_BANK8(uint32 A, uint32 V);\r
85void FASTAPASS(2) ROM_BANK16(uint32 A, uint32 V);\r
86void FASTAPASS(1) ROM_BANK32(uint32 V);\r
87\r
88extern uint8 vmask;\r
89extern uint32 vmask1;\r
90extern uint32 vmask2;\r
91extern uint32 vmask4;\r
92extern uint32 pmask8;\r
93extern uint8 pmask16;\r
94extern uint8 pmask32;\r
95\r
96void FASTAPASS(1) onemir(uint8 V);\r
97void FASTAPASS(1) MIRROR_SET2(uint8 V);\r
98void FASTAPASS(1) MIRROR_SET(uint8 V);\r
99\r
100void Mapper0_init(void);\r
101void Mapper1_init(void);\r
102//void Mapper2_init(void);\r
103//void Mapper3_init(void);\r
104void Mapper6_init(void);\r
e2d0dd92 105//void Mapper7_init(void);\r
d97315ac 106void Mapper8_init(void);\r
107void Mapper9_init(void);\r
108void Mapper10_init(void);\r
e2d0dd92 109//void Mapper11_init(void);\r
d97315ac 110void Mapper12_init(void);\r
111//void Mapper13_init(void);\r
112void Mapper14_init(void);\r
113void Mapper15_init(void);\r
114void Mapper16_init(void);\r
115void Mapper17_init(void);\r
116void Mapper18_init(void);\r
117void Mapper19_init(void);\r
118void Mapper20_init(void);\r
119void Mapper21_init(void);\r
120void Mapper22_init(void);\r
121void Mapper23_init(void);\r
122void Mapper24_init(void);\r
123void Mapper25_init(void);\r
124void Mapper26_init(void);\r
125void Mapper27_init(void);\r
126void Mapper28_init(void);\r
127void Mapper29_init(void);\r
128void Mapper30_init(void);\r
129void Mapper31_init(void);\r
130void Mapper32_init(void);\r
131void Mapper33_init(void);\r
132void Mapper34_init(void);\r
133void Mapper35_init(void);\r
134void Mapper36_init(void);\r
e2d0dd92 135//void Mapper37_init(void);\r
d97315ac 136void Mapper38_init(void);\r
137void Mapper39_init(void);\r
138void Mapper40_init(void);\r
139void Mapper41_init(void);\r
140void Mapper42_init(void);\r
141void Mapper43_init(void);\r
142void Mapper44_init(void);\r
143void Mapper45_init(void);\r
144void Mapper46_init(void);\r
145void Mapper47_init(void);\r
146void Mapper48_init(void);\r
147void Mapper49_init(void);\r
148void Mapper50_init(void);\r
149void Mapper51_init(void);\r
150void Mapper53_init(void);\r
151void Mapper54_init(void);\r
152void Mapper55_init(void);\r
153void Mapper56_init(void);\r
d97315ac 154void Mapper59_init(void);\r
155void Mapper60_init(void);\r
156void Mapper61_init(void);\r
157void Mapper62_init(void);\r
158void Mapper63_init(void);\r
159void Mapper64_init(void);\r
160void Mapper65_init(void);\r
e2d0dd92 161//void Mapper66_init(void);\r
d97315ac 162void Mapper67_init(void);\r
163void Mapper68_init(void);\r
164void Mapper69_init(void);\r
e2d0dd92 165//void Mapper70_init(void);\r
d97315ac 166void Mapper71_init(void);\r
167void Mapper72_init(void);\r
168void Mapper73_init(void);\r
169void Mapper74_init(void);\r
170void Mapper75_init(void);\r
171void Mapper76_init(void);\r
172void Mapper77_init(void);\r
e2d0dd92 173//void Mapper78_init(void);\r
d97315ac 174void Mapper79_init(void);\r
175void Mapper80_init(void);\r
176void Mapper81_init(void);\r
177void Mapper82_init(void);\r
178void Mapper83_init(void);\r
179void Mapper84_init(void);\r
180void Mapper85_init(void);\r
181void Mapper86_init(void);\r
e2d0dd92 182//void Mapper87_init(void);\r
d97315ac 183void Mapper88_init(void);\r
184void Mapper89_init(void);\r
185void Mapper91_init(void);\r
186void Mapper92_init(void);\r
e2d0dd92 187//void Mapper93_init(void);\r
188//void Mapper94_init(void);\r
d97315ac 189void Mapper96_init(void);\r
190void Mapper97_init(void);\r
191void Mapper98_init(void);\r
192void Mapper99_init(void);\r
193void Mapper100_init(void);\r
194void Mapper101_init(void);\r
d97315ac 195void Mapper103_init(void);\r
196void Mapper104_init(void);\r
197void Mapper106_init(void);\r
e2d0dd92 198//void Mapper107_init(void);\r
d97315ac 199void Mapper108_init(void);\r
200void Mapper109_init(void);\r
201void Mapper110_init(void);\r
202void Mapper111_init(void);\r
d97315ac 203void Mapper113_init(void);\r
d97315ac 204void Mapper115_init(void);\r
205void Mapper116_init(void);\r
e2d0dd92 206//void Mapper117_init(void);\r
d97315ac 207void Mapper120_init(void);\r
208void Mapper121_init(void);\r
209void Mapper122_init(void);\r
210void Mapper123_init(void);\r
211void Mapper124_init(void);\r
212void Mapper126_init(void);\r
213void Mapper127_init(void);\r
214void Mapper128_init(void);\r
215void Mapper129_init(void);\r
216void Mapper130_init(void);\r
217void Mapper131_init(void);\r
218void Mapper132_init(void);\r
219void Mapper134_init(void);\r
220void Mapper135_init(void);\r
221void Mapper136_init(void);\r
222void Mapper137_init(void);\r
d97315ac 223void Mapper139_init(void);\r
e2d0dd92 224//void Mapper140_init(void);\r
d97315ac 225void Mapper141_init(void);\r
226void Mapper142_init(void);\r
227void Mapper143_init(void);\r
e2d0dd92 228//void Mapper144_init(void);\r
d97315ac 229void Mapper150_init(void);\r
230void Mapper151_init(void);\r
e2d0dd92 231//void Mapper152_init(void);\r
d97315ac 232void Mapper153_init(void);\r
233void Mapper154_init(void);\r
234void Mapper156_init(void);\r
235void Mapper157_init(void);\r
236void Mapper158_init(void);\r
237void Mapper159_init(void);\r
238void Mapper160_init(void);\r
239void Mapper161_init(void);\r
240void Mapper162_init(void);\r
241void Mapper166_init(void);\r
242void Mapper167_init(void);\r
243void Mapper168_init(void);\r
244void Mapper169_init(void);\r
245void Mapper170_init(void);\r
246void Mapper171_init(void);\r
247void Mapper172_init(void);\r
248void Mapper173_init(void);\r
249void Mapper174_init(void);\r
250void Mapper175_init(void);\r
251void Mapper176_init(void);\r
252void Mapper177_init(void);\r
253void Mapper178_init(void);\r
254void Mapper179_init(void);\r
255void Mapper180_init(void);\r
e2d0dd92 256//void Mapper181_init(void);\r
d97315ac 257void Mapper184_init(void);\r
e2d0dd92 258//void Mapper185_init(void);\r
259//void Mapper189_init(void);\r
260//void Mapper192_init(void);\r
d97315ac 261void Mapper193_init(void);\r
e2d0dd92 262//void Mapper194_init(void);\r
d97315ac 263void Mapper195_init(void);\r
264void Mapper196_init(void);\r
265void Mapper197_init(void);\r
e2d0dd92 266//void Mapper198_init(void);\r
d97315ac 267void Mapper199_init(void);\r
268void Mapper200_init(void);\r
269void Mapper201_init(void);\r
270void Mapper202_init(void);\r
271void Mapper203_init(void);\r
272void Mapper204_init(void);\r
273void Mapper207_init(void);\r
e2d0dd92 274//void Mapper211_init(void);\r
d97315ac 275void Mapper212_init(void);\r
276void Mapper213_init(void);\r
277void Mapper214_init(void);\r
e2d0dd92 278//void Mapper218_init(void);\r
d97315ac 279void Mapper219_init(void);\r
e2d0dd92 280//void Mapper220_init(void);\r
d97315ac 281void Mapper221_init(void);\r
e2d0dd92 282//void Mapper222_init(void);\r
d97315ac 283void Mapper223_init(void);\r
284void Mapper224_init(void);\r
285void Mapper225_init(void);\r
286void Mapper226_init(void);\r
287void Mapper227_init(void);\r
288void Mapper228_init(void);\r
289void Mapper229_init(void);\r
290void Mapper230_init(void);\r
291void Mapper231_init(void);\r
292void Mapper232_init(void);\r
293void Mapper233_init(void);\r
294void Mapper234_init(void);\r
e2d0dd92 295//void Mapper235_init(void);\r
d97315ac 296void Mapper236_init(void);\r
297void Mapper237_init(void);\r
298void Mapper238_init(void);\r
299void Mapper239_init(void);\r
300void Mapper240_init(void);\r
301void Mapper241_init(void);\r
302void Mapper242_init(void);\r
303void Mapper244_init(void);\r
304void Mapper245_init(void);\r
305void Mapper246_init(void);\r
306void Mapper247_init(void);\r
307void Mapper249_init(void);\r
308void Mapper251_init(void);\r
309void Mapper252_init(void);\r
310void Mapper253_init(void);\r
311void Mapper255_init(void);\r
312\r
313void NSFVRC6_Init(void);\r
314void NSFMMC5_Init(void);\r
315void NSFAY_Init(void);\r
316void NSFN106_Init(void);\r
317void NSFVRC7_Init(void);\r
318void Mapper19_ESI(void);\r
319\r
320void Mapper1_Init(CartInfo *);\r
321void Mapper4_Init(CartInfo *);\r
322void Mapper5_Init(CartInfo *);\r
e2d0dd92 323void Mapper11_Init(CartInfo *);\r
d97315ac 324void Mapper12_Init(CartInfo *);\r
325void Mapper19_Init(CartInfo *);\r
e2d0dd92 326void Mapper37_Init(CartInfo *);\r
d97315ac 327void Mapper44_Init(CartInfo *);\r
328void Mapper45_Init(CartInfo *);\r
329void Mapper47_Init(CartInfo *);\r
330void Mapper49_Init(CartInfo *);\r
331void Mapper52_Init(CartInfo *);\r
e2d0dd92 332void Mapper57_Init(CartInfo *);\r
333void Mapper58_Init(CartInfo *);\r
334void Mapper70_Init(CartInfo *);\r
d97315ac 335void Mapper74_Init(CartInfo *);\r
e2d0dd92 336void Mapper78_Init(CartInfo *);\r
337void Mapper87_Init(CartInfo *);\r
338void Mapper88_Init(CartInfo *);\r
d97315ac 339void Mapper90_Init(CartInfo *);\r
e2d0dd92 340void Mapper93_Init(CartInfo *);\r
341void Mapper94_Init(CartInfo *);\r
d97315ac 342void Mapper95_Init(CartInfo *);\r
343void Mapper105_Init(CartInfo *);\r
e2d0dd92 344void Mapper107_Init(CartInfo *);\r
d97315ac 345void Mapper112_Init(CartInfo *);\r
346void Mapper114_Init(CartInfo *);\r
347void Mapper115_Init(CartInfo *);\r
348void Mapper116_Init(CartInfo *);\r
e2d0dd92 349void Mapper117_Init(CartInfo *);\r
d97315ac 350void Mapper118_Init(CartInfo *);\r
351void Mapper119_Init(CartInfo *);\r
352void Mapper125_Init(CartInfo *);\r
e2d0dd92 353void Mapper140_Init(CartInfo *);\r
354void Mapper144_Init(CartInfo *);\r
355void Mapper152_Init(CartInfo *);\r
356void Mapper154_Init(CartInfo *);\r
d97315ac 357void Mapper155_Init(CartInfo *);\r
358void Mapper163_Init(CartInfo *);\r
359void Mapper164_Init(CartInfo *);\r
360void Mapper165_Init(CartInfo *);\r
e2d0dd92 361void Mapper181_Init(CartInfo *);\r
d97315ac 362void Mapper182_Init(CartInfo *);\r
363void Mapper183_Init(CartInfo *);\r
e2d0dd92 364void Mapper185_Init(CartInfo *);\r
d97315ac 365void Mapper186_Init(CartInfo *);\r
366void Mapper187_Init(CartInfo *);\r
367void Mapper188_Init(CartInfo *);\r
e2d0dd92 368void Mapper189_Init(CartInfo *);\r
d97315ac 369void Mapper191_Init(CartInfo *);\r
e2d0dd92 370void Mapper192_Init(CartInfo *);\r
371void Mapper194_Init(CartInfo *);\r
372void Mapper198_Init(CartInfo *);\r
373void Mapper199_Init(CartInfo *);\r
d97315ac 374void Mapper205_Init(CartInfo *);\r
375void Mapper208_Init(CartInfo *);\r
376void Mapper209_Init(CartInfo *);\r
377void Mapper210_Init(CartInfo *);\r
e2d0dd92 378void Mapper211_Init(CartInfo *);\r
d97315ac 379void Mapper215_Init(CartInfo *);\r
380void Mapper216_Init(CartInfo *);\r
381void Mapper217_Init(CartInfo *);\r
e2d0dd92 382void Mapper220_Init(CartInfo *);\r
383void Mapper222_Init(CartInfo *);\r
384void Mapper235_Init(CartInfo *);\r
385void Mapper236_Init(CartInfo *);\r
386void Mapper237_Init(CartInfo *);\r
d97315ac 387void Mapper245_Init(CartInfo *);\r
388void Mapper249_Init(CartInfo *);\r
389void Mapper250_Init(CartInfo *);\r
390void Mapper254_Init(CartInfo *);\r