| 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); |