diff options
Diffstat (limited to 'source')
-rw-r--r-- | source/display.h | 6 | ||||
-rw-r--r-- | source/dsp1.c | 6 | ||||
-rw-r--r-- | source/dsp4emu.c | 6 | ||||
-rw-r--r-- | source/getset.h | 208 | ||||
-rw-r--r-- | source/gfx.c | 172 | ||||
-rw-r--r-- | source/globals.c | 10 | ||||
-rw-r--r-- | source/memmap.c | 1927 | ||||
-rw-r--r-- | source/memmap.h | 6 | ||||
-rw-r--r-- | source/ppu.c | 6 | ||||
-rw-r--r-- | source/sa1.c | 72 |
10 files changed, 1242 insertions, 1177 deletions
diff --git a/source/display.h b/source/display.h index b044746..8b94dd6 100644 --- a/source/display.h +++ b/source/display.h @@ -94,14 +94,13 @@ void S9xTextMode (); void S9xGraphicsMode (); char *S9xParseArgs (char **argv, int argc); -void S9xParseArg (char **argv, int &index, int argc); void S9xExtraUsage (); #ifdef ACCUMULATE_JOYPAD void NDSSFCAccumulateJoypad (); #endif uint32 S9xReadJoypad (int port); -bool8 S9xReadMousePosition (int which1_0_to_1, int &x, int &y, uint32 &buttons); -bool8 S9xReadSuperScopePosition (int &x, int &y, uint32 &buttons); +bool8 S9xReadMousePosition (int which1_0_to_1, int* x, int* y, uint32* buttons); +bool8 S9xReadSuperScopePosition (int* x, int* y, uint32* buttons); void S9xUsage (); void S9xInitDisplay (void); @@ -109,7 +108,6 @@ void S9xDeinitDisplay (); void S9xInitInputDevices (); void S9xSetTitle (const char *title); void S9xPutImage (int width, int height); -void S9xParseDisplayArg (char **argv, int &index, int argc); void S9xToggleSoundChannel (int channel); void S9xSetInfoString (const char *string); int S9xMinCommandLineArgs (); diff --git a/source/dsp1.c b/source/dsp1.c index d54b48f..d017eef 100644 --- a/source/dsp1.c +++ b/source/dsp1.c @@ -1335,7 +1335,8 @@ void DSP4SetByte(uint8 byte, uint16 address) // clear OAM tables op06_index = 0; op06_offset = 0; - for( int lcv=0; lcv<32; lcv++ ) + int lcv; + for(lcv=0; lcv<32; lcv++ ) op06_OAM[lcv] = 0; break; } @@ -1352,7 +1353,8 @@ void DSP4SetByte(uint8 byte, uint16 address) case 0x0006: { DSP4.out_count = 32; - for( int lcv=0; lcv<32; lcv++ ) + int lcv; + for(lcv=0; lcv<32; lcv++ ) DSP4.output[lcv] = op06_OAM[lcv]; } break; diff --git a/source/dsp4emu.c b/source/dsp4emu.c index 3e85ee3..d9f360a 100644 --- a/source/dsp4emu.c +++ b/source/dsp4emu.c @@ -1215,7 +1215,7 @@ sprite_found: int16 plane; int16 car_left, car_right, car_left_a; int16 focal_back, focal_front; - uint8 distance, id; + uint8 distance, id; // we already have 4 bytes we want DSP4.in_count = 6+12; @@ -1357,7 +1357,7 @@ sprite_found: DSP4.in_count = 6; DSP4.in_index = 2; - DSP4_WAIT(7) resume7: + DSP4_WAIT(7) ///////////////////////////////////// // process tile data @@ -1366,6 +1366,8 @@ sprite_found: int16 sp_x, sp_y, sp_oam, sp_msb; int16 sp_dx, sp_dy; + resume7: + // sprite deltas sp_dy = DSP4_READ_WORD(2); sp_dx = DSP4_READ_WORD(4); diff --git a/source/getset.h b/source/getset.h index de8991c..511634d 100644 --- a/source/getset.h +++ b/source/getset.h @@ -108,7 +108,7 @@ uint8 S9xGetByte (uint32 Address) if(!CPU.InDMA) CPU.Cycles += Memory.MemorySpeed [block]; - if (GetAddress >= (uint8 *) CMemory::MAP_LAST) + if (GetAddress >= (uint8 *) MAP_LAST) { #ifdef CPU_SHUTDOWN if (Memory.BlockIsRAM [block]) @@ -119,17 +119,17 @@ uint8 S9xGetByte (uint32 Address) switch ((intptr_t) GetAddress) { - case CMemory::MAP_PPU: + case MAP_PPU: return (S9xGetPPU (Address & 0xffff)); - case CMemory::MAP_CPU: + case MAP_CPU: return (S9xGetCPU (Address & 0xffff)); - case CMemory::MAP_DSP: + case MAP_DSP: #ifdef DSP_DUMMY_LOOPS printf("Get DSP Byte @ %06X\n", Address); #endif return (S9xGetDSP (Address & 0xffff)); - case CMemory::MAP_SA1RAM: - case CMemory::MAP_LOROM_SRAM: + case MAP_SA1RAM: + case MAP_LOROM_SRAM: //Address &0x7FFF -offset into bank //Address&0xFF0000 -bank //bank>>1 | offset = s-ram address, unbound @@ -137,40 +137,40 @@ uint8 S9xGetByte (uint32 Address) return (*(Memory.SRAM + ((((Address&0xFF0000)>>1) |(Address&0x7FFF)) &Memory.SRAMMask))); // return (*(Memory.SRAM + ((Address & Memory.SRAMMask)))); - case CMemory::MAP_RONLY_SRAM: - case CMemory::MAP_HIROM_SRAM: + case MAP_RONLY_SRAM: + case MAP_HIROM_SRAM: return (*(Memory.SRAM + (((Address & 0x7fff) - 0x6000 + ((Address & 0xf0000) >> 3)) & Memory.SRAMMask))); - case CMemory::MAP_BWRAM: + case MAP_BWRAM: return (*(Memory.BWRAM + ((Address & 0x7fff) - 0x6000))); - case CMemory::MAP_C4: + case MAP_C4: return (S9xGetC4 (Address & 0xffff)); - case CMemory::MAP_SPC7110_ROM: + case MAP_SPC7110_ROM: return S9xGetSPC7110Byte(Address); - case CMemory::MAP_SPC7110_DRAM: + case MAP_SPC7110_DRAM: return S9xGetSPC7110(0x4800); - case CMemory::MAP_OBC_RAM: + case MAP_OBC_RAM: return GetOBC1(Address & 0xffff); - case CMemory::MAP_SETA_DSP: + case MAP_SETA_DSP: return S9xGetSetaDSP(Address); - case CMemory::MAP_SETA_RISC: + case MAP_SETA_RISC: return S9xGetST018(Address); - case CMemory::MAP_DEBUG: + case MAP_DEBUG: return OpenBus; default: - case CMemory::MAP_NONE: + case MAP_NONE: #ifdef MK_TRACE_BAD_READS char address[20]; sprintf(address, TEXT("%06X"),Address); @@ -195,7 +195,7 @@ uint16 S9xGetWord (uint32 Address) CPU.Cycles += (Memory.MemorySpeed [block]<<1); - if (GetAddress >= (uint8 *) CMemory::MAP_LAST) + if (GetAddress >= (uint8 *) MAP_LAST) { #ifdef CPU_SHUTDOWN if (Memory.BlockIsRAM [block]) @@ -211,20 +211,20 @@ uint16 S9xGetWord (uint32 Address) switch ((intptr_t) GetAddress) { - case CMemory::MAP_PPU: + case MAP_PPU: return (S9xGetPPU (Address & 0xffff) | (S9xGetPPU ((Address + 1) & 0xffff) << 8)); - case CMemory::MAP_CPU: + case MAP_CPU: return (S9xGetCPU (Address & 0xffff) | (S9xGetCPU ((Address + 1) & 0xffff) << 8)); - case CMemory::MAP_DSP: + case MAP_DSP: #ifdef DSP_DUMMY_LOOPS printf("Get DSP Word @ %06X\n", Address); #endif return (S9xGetDSP (Address & 0xffff) | (S9xGetDSP ((Address + 1) & 0xffff) << 8)); - case CMemory::MAP_SA1RAM: - case CMemory::MAP_LOROM_SRAM: + case MAP_SA1RAM: + case MAP_LOROM_SRAM: //Address &0x7FFF -offset into bank //Address&0xFF0000 -bank //bank>>1 | offset = s-ram address, unbound @@ -238,8 +238,8 @@ uint16 S9xGetWord (uint32 Address) //return (*(uint16*)(Memory.SRAM + ((((Address&0xFF0000)>>1)|(Address&0x7FFF)) & Memory.SRAMMask));// | // (*(Memory.SRAM + ((Address + 1) & Memory.SRAMMask)) << 8)); - case CMemory::MAP_RONLY_SRAM: - case CMemory::MAP_HIROM_SRAM: + case MAP_RONLY_SRAM: + case MAP_HIROM_SRAM: /* BJ: no FAST_LSB_WORD_ACCESS here, since if Memory.SRAMMask=0x7ff * then the high byte doesn't follow the low byte. */ return (*(Memory.SRAM + @@ -249,7 +249,7 @@ uint16 S9xGetWord (uint32 Address) ((((Address + 1) & 0x7fff) - 0x6000 + (((Address + 1) & 0xf0000) >> 3)) & Memory.SRAMMask)) << 8)); - case CMemory::MAP_BWRAM: + case MAP_BWRAM: #ifdef FAST_LSB_WORD_ACCESS return (*(uint16 *) (Memory.BWRAM + ((Address & 0x7fff) - 0x6000))); #else @@ -257,30 +257,30 @@ uint16 S9xGetWord (uint32 Address) (*(Memory.BWRAM + (((Address + 1) & 0x7fff) - 0x6000)) << 8)); #endif - case CMemory::MAP_C4: + case MAP_C4: return (S9xGetC4 (Address & 0xffff) | (S9xGetC4 ((Address + 1) & 0xffff) << 8)); - case CMemory::MAP_SPC7110_ROM: + case MAP_SPC7110_ROM: return (S9xGetSPC7110Byte(Address)| (S9xGetSPC7110Byte (Address+1))<<8); - case CMemory::MAP_SPC7110_DRAM: + case MAP_SPC7110_DRAM: return (S9xGetSPC7110(0x4800)| (S9xGetSPC7110 (0x4800) << 8)); - case CMemory::MAP_OBC_RAM: + case MAP_OBC_RAM: return GetOBC1(Address&0xFFFF)| (GetOBC1((Address+1)&0xFFFF)<<8); - case CMemory::MAP_SETA_DSP: + case MAP_SETA_DSP: return S9xGetSetaDSP(Address)| (S9xGetSetaDSP((Address+1))<<8); - case CMemory::MAP_SETA_RISC: + case MAP_SETA_RISC: return S9xGetST018(Address)| (S9xGetST018((Address+1))<<8); - case CMemory::MAP_DEBUG: + case MAP_DEBUG: return (OpenBus | (OpenBus<<8)); default: - case CMemory::MAP_NONE: + case MAP_NONE: #ifdef MK_TRACE_BAD_READS char address[20]; sprintf(address, TEXT("%06X"),Address); @@ -303,7 +303,7 @@ void S9xSetByte (uint8 Byte, uint32 Address) CPU.Cycles += Memory.MemorySpeed [block]; - if (SetAddress >= (uint8 *) CMemory::MAP_LAST) + if (SetAddress >= (uint8 *) MAP_LAST) { #ifdef CPU_SHUTDOWN SetAddress += Address & 0xffff; @@ -322,22 +322,22 @@ void S9xSetByte (uint8 Byte, uint32 Address) switch ((intptr_t) SetAddress) { - case CMemory::MAP_PPU: + case MAP_PPU: S9xSetPPU (Byte, Address & 0xffff); return; - case CMemory::MAP_CPU: + case MAP_CPU: S9xSetCPU (Byte, Address & 0xffff); return; - case CMemory::MAP_DSP: + case MAP_DSP: #ifdef DSP_DUMMY_LOOPS printf("DSP Byte: %02X to %06X\n", Byte, Address); #endif S9xSetDSP (Byte, Address & 0xffff); return; - case CMemory::MAP_LOROM_SRAM: + case MAP_LOROM_SRAM: if (Memory.SRAMMask) { *(Memory.SRAM + ((((Address&0xFF0000)>>1)|(Address&0x7FFF))& Memory.SRAMMask))=Byte; @@ -346,7 +346,7 @@ void S9xSetByte (uint8 Byte, uint32 Address) } return; - case CMemory::MAP_HIROM_SRAM: + case MAP_HIROM_SRAM: if (Memory.SRAMMask) { *(Memory.SRAM + (((Address & 0x7fff) - 0x6000 + @@ -355,39 +355,39 @@ void S9xSetByte (uint8 Byte, uint32 Address) } return; - case CMemory::MAP_BWRAM: + case MAP_BWRAM: *(Memory.BWRAM + ((Address & 0x7fff) - 0x6000)) = Byte; CPU.SRAMModified = TRUE; return; - case CMemory::MAP_DEBUG: + case MAP_DEBUG: - case CMemory::MAP_SA1RAM: + case MAP_SA1RAM: *(Memory.SRAM + (Address & 0xffff)) = Byte; SA1.Executing = !SA1.Waiting; break; - case CMemory::MAP_C4: + case MAP_C4: S9xSetC4 (Byte, Address & 0xffff); return; - case CMemory::MAP_SPC7110_DRAM: + case MAP_SPC7110_DRAM: s7r.bank50[(Address & 0xffff)]= (uint8) Byte; break; - case CMemory::MAP_OBC_RAM: + case MAP_OBC_RAM: SetOBC1(Byte, Address &0xFFFF); return; - case CMemory::MAP_SETA_DSP: + case MAP_SETA_DSP: S9xSetSetaDSP(Byte,Address); return; - case CMemory::MAP_SETA_RISC: + case MAP_SETA_RISC: S9xSetST018(Byte,Address); return; default: - case CMemory::MAP_NONE: + case MAP_NONE: #ifdef MK_TRACE_BAD_WRITES char address[20]; sprintf(address, TEXT("%06X"),Address); @@ -417,7 +417,7 @@ void S9xSetWord (uint16 Word, uint32 Address) CPU.Cycles += Memory.MemorySpeed [block] << 1; - if (SetAddress >= (uint8 *) CMemory::MAP_LAST) + if (SetAddress >= (uint8 *) MAP_LAST) { #ifdef CPU_SHUTDOWN SetAddress += Address & 0xffff; @@ -446,17 +446,17 @@ void S9xSetWord (uint16 Word, uint32 Address) switch ((intptr_t) SetAddress) { - case CMemory::MAP_PPU: + case MAP_PPU: S9xSetPPU ((uint8) Word, Address & 0xffff); S9xSetPPU (Word >> 8, (Address & 0xffff) + 1); return; - case CMemory::MAP_CPU: + case MAP_CPU: S9xSetCPU ((uint8) Word, (Address & 0xffff)); S9xSetCPU (Word >> 8, (Address & 0xffff) + 1); return; - case CMemory::MAP_DSP: + case MAP_DSP: #ifdef DSP_DUMMY_LOOPS printf("DSP Word: %04X to %06X\n", Word, Address); #endif @@ -464,7 +464,7 @@ void S9xSetWord (uint16 Word, uint32 Address) S9xSetDSP (Word >> 8, (Address & 0xffff) + 1); return; - case CMemory::MAP_LOROM_SRAM: + case MAP_LOROM_SRAM: if (Memory.SRAMMask) { /* BJ: no FAST_LSB_WORD_ACCESS here, since if Memory.SRAMMask=0x7ff @@ -478,7 +478,7 @@ void S9xSetWord (uint16 Word, uint32 Address) } return; - case CMemory::MAP_HIROM_SRAM: + case MAP_HIROM_SRAM: if (Memory.SRAMMask) { /* BJ: no FAST_LSB_WORD_ACCESS here, since if Memory.SRAMMask=0x7ff @@ -493,7 +493,7 @@ void S9xSetWord (uint16 Word, uint32 Address) } return; - case CMemory::MAP_BWRAM: + case MAP_BWRAM: #ifdef FAST_LSB_WORD_ACCESS *(uint16 *) (Memory.BWRAM + ((Address & 0x7fff) - 0x6000)) = Word; #else @@ -503,40 +503,40 @@ void S9xSetWord (uint16 Word, uint32 Address) CPU.SRAMModified = TRUE; return; - case CMemory::MAP_DEBUG: + case MAP_DEBUG: - case CMemory::MAP_SPC7110_DRAM: + case MAP_SPC7110_DRAM: s7r.bank50[(Address & 0xffff)]= (uint8) Word; s7r.bank50[((Address + 1) & 0xffff)]= (uint8) Word; break; - case CMemory::MAP_SA1RAM: + case MAP_SA1RAM: *(Memory.SRAM + (Address & 0xffff)) = (uint8) Word; *(Memory.SRAM + ((Address + 1) & 0xffff)) = (uint8) (Word >> 8); SA1.Executing = !SA1.Waiting; break; - case CMemory::MAP_C4: + case MAP_C4: S9xSetC4 (Word & 0xff, Address & 0xffff); S9xSetC4 ((uint8) (Word >> 8), (Address + 1) & 0xffff); return; - case CMemory::MAP_OBC_RAM: + case MAP_OBC_RAM: SetOBC1(Word & 0xff, Address &0xFFFF); SetOBC1 ((uint8) (Word >> 8), (Address + 1) & 0xffff); return; - case CMemory::MAP_SETA_DSP: + case MAP_SETA_DSP: S9xSetSetaDSP (Word & 0xff, Address); S9xSetSetaDSP ((uint8) (Word >> 8),(Address + 1)); return; - case CMemory::MAP_SETA_RISC: + case MAP_SETA_RISC: S9xSetST018 (Word & 0xff, Address); S9xSetST018 ((uint8) (Word >> 8),(Address + 1)); return; default: - case CMemory::MAP_NONE: + case MAP_NONE: #ifdef MK_TRACE_BAD_WRITES char address[20]; sprintf(address, TEXT("%06X"),Address); @@ -550,7 +550,7 @@ void S9xSetWord (uint16 Word, uint32 Address) uint8 *GetBasePointer (uint32 Address) { uint8 *GetAddress = Memory.Map [(Address >> MEMMAP_SHIFT) & MEMMAP_MASK]; - if (GetAddress >= (uint8 *) CMemory::MAP_LAST) + if (GetAddress >= (uint8 *) MAP_LAST) return (GetAddress); if(Settings.SPC7110&&((Address&0x7FFFFF)==0x4800)) { @@ -558,39 +558,39 @@ uint8 *GetBasePointer (uint32 Address) } switch ((intptr_t) GetAddress) { - case CMemory::MAP_SPC7110_DRAM: + case MAP_SPC7110_DRAM: { return s7r.bank50; } - case CMemory::MAP_SPC7110_ROM: + case MAP_SPC7110_ROM: return Get7110BasePtr(Address); - case CMemory::MAP_PPU: + case MAP_PPU: //just a guess, but it looks like this should match the CPU as a source. return (Memory.FillRAM); // return (Memory.FillRAM - 0x2000); - case CMemory::MAP_CPU: + case MAP_CPU: //fixes Ogre Battle's green lines return (Memory.FillRAM); // return (Memory.FillRAM - 0x4000); - case CMemory::MAP_DSP: + case MAP_DSP: return (Memory.FillRAM - 0x6000); - case CMemory::MAP_SA1RAM: - case CMemory::MAP_LOROM_SRAM: + case MAP_SA1RAM: + case MAP_LOROM_SRAM: return (Memory.SRAM); - case CMemory::MAP_BWRAM: + case MAP_BWRAM: return (Memory.BWRAM - 0x6000); - case CMemory::MAP_HIROM_SRAM: + case MAP_HIROM_SRAM: return (Memory.SRAM - 0x6000); - case CMemory::MAP_C4: + case MAP_C4: return (Memory.C4RAM - 0x6000); - case CMemory::MAP_OBC_RAM: + case MAP_OBC_RAM: return GetBasePointerOBC1(Address); - case CMemory::MAP_SETA_DSP: + case MAP_SETA_DSP: return Memory.SRAM; - case CMemory::MAP_DEBUG: + case MAP_DEBUG: default: - case CMemory::MAP_NONE: + case MAP_NONE: #if defined(MK_TRACE_BAD_READS) || defined(MK_TRACE_BAD_WRITES) char fsd[12]; sprintf(fsd, TEXT("%06X"), Address); @@ -604,7 +604,7 @@ uint8 *GetBasePointer (uint32 Address) uint8 *S9xGetMemPointer (uint32 Address) { uint8 *GetAddress = Memory.Map [(Address >> MEMMAP_SHIFT) & MEMMAP_MASK]; - if (GetAddress >= (uint8 *) CMemory::MAP_LAST) + if (GetAddress >= (uint8 *) MAP_LAST) return (GetAddress + (Address & 0xffff)); if(Settings.SPC7110&&((Address&0x7FFFFF)==0x4800)) @@ -612,30 +612,30 @@ uint8 *S9xGetMemPointer (uint32 Address) switch ((intptr_t) GetAddress) { - case CMemory::MAP_SPC7110_DRAM: + case MAP_SPC7110_DRAM: return &s7r.bank50[Address&0x0000FFFF]; - case CMemory::MAP_PPU: + case MAP_PPU: return (Memory.FillRAM + (Address & 0xffff)); - case CMemory::MAP_CPU: + case MAP_CPU: return (Memory.FillRAM + (Address & 0xffff)); - case CMemory::MAP_DSP: + case MAP_DSP: return (Memory.FillRAM - 0x6000 + (Address & 0xffff)); - case CMemory::MAP_SA1RAM: - case CMemory::MAP_LOROM_SRAM: + case MAP_SA1RAM: + case MAP_LOROM_SRAM: return (Memory.SRAM + (Address & 0xffff)); - case CMemory::MAP_BWRAM: + case MAP_BWRAM: return (Memory.BWRAM - 0x6000 + (Address & 0xffff)); - case CMemory::MAP_HIROM_SRAM: + case MAP_HIROM_SRAM: return (Memory.SRAM - 0x6000 + (Address & 0xffff)); - case CMemory::MAP_C4: + case MAP_C4: return (Memory.C4RAM - 0x6000 + (Address & 0xffff)); - case CMemory::MAP_OBC_RAM: + case MAP_OBC_RAM: return GetMemPointerOBC1(Address); - case CMemory::MAP_SETA_DSP: + case MAP_SETA_DSP: return Memory.SRAM+ ((Address & 0xffff) & Memory.SRAMMask); - case CMemory::MAP_DEBUG: + case MAP_DEBUG: default: - case CMemory::MAP_NONE: + case MAP_NONE: #if defined(MK_TRACE_BAD_READS) || defined(MK_TRACE_BAD_WRITES) char fsd[12]; sprintf(fsd, TEXT("%06X"), Address); @@ -654,7 +654,7 @@ void S9xSetPCBase (uint32 Address) CPU.MemSpeed = Memory.MemorySpeed [block]; CPU.MemSpeedx2 = CPU.MemSpeed << 1; - if (GetAddress >= (uint8 *) CMemory::MAP_LAST) + if (GetAddress >= (uint8 *) MAP_LAST) { CPU.PCBase = GetAddress; CPU.PC = GetAddress + (Address & 0xffff); @@ -663,45 +663,45 @@ void S9xSetPCBase (uint32 Address) switch ((intptr_t) GetAddress) { - case CMemory::MAP_PPU: + case MAP_PPU: CPU.PCBase = Memory.FillRAM; CPU.PC = CPU.PCBase + (Address & 0xffff); return; - case CMemory::MAP_CPU: + case MAP_CPU: CPU.PCBase = Memory.FillRAM; CPU.PC = CPU.PCBase + (Address & 0xffff); return; - case CMemory::MAP_DSP: + case MAP_DSP: CPU.PCBase = Memory.FillRAM - 0x6000; CPU.PC = CPU.PCBase + (Address & 0xffff); return; - case CMemory::MAP_SA1RAM: - case CMemory::MAP_LOROM_SRAM: + case MAP_SA1RAM: + case MAP_LOROM_SRAM: CPU.PCBase = Memory.SRAM; CPU.PC = CPU.PCBase + (Address & 0xffff); return; - case CMemory::MAP_BWRAM: + case MAP_BWRAM: CPU.PCBase = Memory.BWRAM - 0x6000; CPU.PC = CPU.PCBase + (Address & 0xffff); return; - case CMemory::MAP_HIROM_SRAM: + case MAP_HIROM_SRAM: CPU.PCBase = Memory.SRAM - 0x6000; CPU.PC = CPU.PCBase + (Address & 0xffff); return; - case CMemory::MAP_C4: + case MAP_C4: CPU.PCBase = Memory.C4RAM - 0x6000; CPU.PC = CPU.PCBase + (Address & 0xffff); return; - case CMemory::MAP_DEBUG: + case MAP_DEBUG: default: - case CMemory::MAP_NONE: + case MAP_NONE: CPU.PCBase = Memory.SRAM; CPU.PC = Memory.SRAM + (Address & 0xffff); return; diff --git a/source/gfx.c b/source/gfx.c index 34fb235..73c53ea 100644 --- a/source/gfx.c +++ b/source/gfx.c @@ -119,7 +119,7 @@ extern NormalTileRenderer DrawHiResTilePtr; extern ClippedTileRenderer DrawHiResClippedTilePtr; extern LargePixelRenderer DrawLargePixelPtr; -extern struct SBG BG; +extern SBG BG; extern struct SLineData LineData[240]; extern struct SLineMatrixData LineMatrixData [240]; @@ -151,8 +151,9 @@ extern uint8 Mode7Depths [2]; (GFX.r2131 & 0x3f) #define FIX_INTERLACE(SCREEN, DO_DEPTH, DEPTH) \ + uint32 y; \ if (IPPU.DoubleHeightPixels && ((PPU.BGMode != 5 && PPU.BGMode != 6) || !IPPU.Interlace)) \ - for (uint32 y = GFX.StartY; y <= GFX.EndY; y++) \ + for (y = GFX.StartY; y <= GFX.EndY; y++) \ { \ /* memmove converted: Same malloc, non-overlapping addresses [Neb] */ \ memcpy (SCREEN + (y * 2 + 1) * GFX.Pitch2, \ @@ -259,9 +260,11 @@ bool8 S9xGraphicsInit () register uint32 PixelOdd = 1; register uint32 PixelEven = 2; - for (uint8 bitshift = 0; bitshift < 4; bitshift++) + uint8 bitshift; + for (bitshift = 0; bitshift < 4; bitshift++) { - for (register int i = 0; i < 16; i++) + register int i; + for (i = 0; i < 16; i++) { register uint32 h = 0; register uint32 l = 0; @@ -550,9 +553,10 @@ void S9xGraphicsDeinit (void) void S9xBuildDirectColourMaps () { - for (uint32 p = 0; p < 8; p++) + uint32 p,c; + for (p = 0; p < 8; p++) { - for (uint32 c = 0; c < 256; c++) + for (c = 0; c < 256; c++) { // XXX: Brightness DirectColourMaps [p][c] = BUILD_PIXEL (((c & 7) << 2) | ((p & 1) << 1), @@ -852,7 +856,8 @@ void S9xSetupOBJ () /* normal case */ uint8 LineOBJ[SNES_HEIGHT_EXTENDED]; memset(LineOBJ, 0, sizeof(LineOBJ)); - for(int i=0; i<SNES_HEIGHT_EXTENDED; i++){ + int i; + for(i=0; i<SNES_HEIGHT_EXTENDED; i++){ GFX.OBJLines[i].RTOFlags=0; GFX.OBJLines[i].Tiles=34; } @@ -874,7 +879,8 @@ void S9xSetupOBJ () } else { GFX.OBJVisibleTiles[S]=GFX.OBJWidths[S]>>3; } - for(uint8 line=0, Y=(uint8)(PPU.OBJ[S].VPos&0xff); line<Height; Y++, line++){ + uint8 line,Y; + for(line=0, Y=(uint8)(PPU.OBJ[S].VPos&0xff); line<Height; Y++, line++){ if(Y>=SNES_HEIGHT_EXTENDED) continue; if(LineOBJ[Y]>=32){ GFX.OBJLines[Y].RTOFlags|=0x40; @@ -899,11 +905,12 @@ void S9xSetupOBJ () S=(S+1)&0x7F; } while(S!=FirstSprite); - for (int Y = 0; Y < SNES_HEIGHT_EXTENDED; Y++) { + int Y; + for (Y = 0; Y < SNES_HEIGHT_EXTENDED; Y++) { if (LineOBJ[Y] < 32) // Add the sentinel GFX.OBJLines[Y].OBJ[LineOBJ[Y]].Sprite = -1; } - for(int Y=1; Y<SNES_HEIGHT_EXTENDED; Y++){ + for(Y = 1; Y<SNES_HEIGHT_EXTENDED; Y++){ GFX.OBJLines[Y].RTOFlags |= GFX.OBJLines[Y-1].RTOFlags; } } else { @@ -938,7 +945,8 @@ void S9xSetupOBJ () } else { GFX.OBJVisibleTiles[S]=GFX.OBJWidths[S]>>3; } - for(uint8 line=0, Y=(uint8)(PPU.OBJ[S].VPos&0xff); line<Height; Y++, line++){ + uint8 line,Y; + for(line=0, Y=(uint8)(PPU.OBJ[S].VPos&0xff); line<Height; Y++, line++){ if(Y>=SNES_HEIGHT_EXTENDED) continue; if (!AnyOBJOnLine[Y]) { memset(OBJOnLine[Y], 0, 128); @@ -956,8 +964,8 @@ void S9xSetupOBJ () } /* Now go through and pull out those OBJ that are actually visible. */ - int j; - for(int Y=0; Y<SNES_HEIGHT_EXTENDED; Y++){ + int j,Y; + for(Y=0; Y<SNES_HEIGHT_EXTENDED; Y++){ GFX.OBJLines[Y].RTOFlags=Y?0:GFX.OBJLines[Y-1].RTOFlags; GFX.OBJLines[Y].Tiles=34; @@ -1004,7 +1012,7 @@ void S9xSetupOBJ () IPPU.OBJChanged = FALSE; } -static void DrawOBJS (bool8 OnMain = FALSE, uint8 D = 0) +static void DrawOBJS (bool8 OnMain, uint8 D) { #ifdef ACCUMULATE_JOYPAD /* @@ -1047,7 +1055,8 @@ static void DrawOBJS (bool8 OnMain = FALSE, uint8 D = 0) } else { Windows[0].Pos=1000; Windows[0].Value=FALSE; - for(int clip=0, i=1; clip<clipcount; clip++){ + int clip,i; + for(clip=0, i=1; clip<clipcount; clip++){ if(GFX.pCurrentClip->Right[clip][4]<=GFX.pCurrentClip->Left[clip][4]) continue; int j; for(j=0; j<i && Windows[j].Pos<GFX.pCurrentClip->Left[clip][4]; j++); @@ -1120,7 +1129,8 @@ if(Settings.BGLayering) { } GFX.Z1 = D + 2; - for(uint32 Y=GFX.StartY, Offset=Y*GFX.PPL; Y<=GFX.EndY; Y++, Offset+=GFX.PPL){ + uint32 Y,Offset; + for(Y=GFX.StartY, Offset=Y*GFX.PPL; Y<=GFX.EndY; Y++, Offset+=GFX.PPL){ #ifdef MK_DEBUG_RTO bool8 Flag=0; #endif @@ -1130,7 +1140,8 @@ if(Settings.BGLayering) { #else int tiles=GFX.OBJLines[Y].Tiles; #endif - for (int S = GFX.OBJLines[Y].OBJ[I].Sprite; S >= 0 && I<32; S = GFX.OBJLines[Y].OBJ[++I].Sprite) + int S; + for (S = GFX.OBJLines[Y].OBJ[I].Sprite; S >= 0 && I<32; S = GFX.OBJLines[Y].OBJ[++I].Sprite) { tiles+=GFX.OBJVisibleTiles[S]; if(tiles<=0){ @@ -1172,7 +1183,8 @@ if(Settings.BGLayering) { bool8 WinStat=TRUE; int WinIdx=0, NextPos=-1000; int X=PPU.OBJ[S].HPos; if(X==-256) X=256; - for(int t=tiles, O=Offset+X*GFX.PixSize; X<=256 && X<PPU.OBJ[S].HPos+GFX.OBJWidths[S]; TileX=(TileX+TileInc)&0x0f, X+=8, O+=8*GFX.PixSize){ + int t,O; + for(t=tiles, O=Offset+X*GFX.PixSize; X<=256 && X<PPU.OBJ[S].HPos+GFX.OBJWidths[S]; TileX=(TileX+TileInc)&0x0f, X+=8, O+=8*GFX.PixSize){ #ifdef MK_DEBUG_RTO if(Settings.BGLayering) { if(X<-7) continue; @@ -1274,7 +1286,8 @@ static void DrawBackgroundMosaic (uint32 BGMode, uint32 bg, uint8 Z1, uint8 Z2) int m5 = (BGMode == 5 || BGMode == 6) ? 1 : 0; - for (uint32 Y = GFX.StartY; Y <= GFX.EndY; Y += Lines) + uint32 Y; + for (Y = GFX.StartY; Y <= GFX.EndY; Y += Lines) { uint32 VOffset = LineData [Y].BG[bg].VOffset; uint32 HOffset = LineData [Y].BG[bg].HOffset; @@ -1318,7 +1331,8 @@ static void DrawBackgroundMosaic (uint32 BGMode, uint32 bg, uint8 Z1, uint8 Z2) if (!ClipCount) ClipCount = 1; - for (uint32 clip = 0; clip < ClipCount; clip++) + uint32 clip; + for (clip = 0; clip < ClipCount; clip++) { if (GFX.pCurrentClip->Count [bg]) { @@ -1330,7 +1344,8 @@ static void DrawBackgroundMosaic (uint32 BGMode, uint32 bg, uint8 Z1, uint8 Z2) PixWidth = (PPU.Mosaic << m5) - r; } uint32 s = Y * GFX.PPL + Left * GFX.PixSize; - for (uint32 x = Left; x < Right; x += PixWidth, + uint32 x; + for (x = Left; x < Right; x += PixWidth, s += (IPPU.HalfWidthPixels ? PixWidth >> 1 : PixWidth) * GFX.PixSize, HPos += PixWidth, PixWidth = (PPU.Mosaic << m5)) { @@ -1521,8 +1536,9 @@ static void DrawBackgroundOffset (uint32 BGMode, uint32 bg, uint8 Z1, uint8 Z2) OffsetMask = 0x1ff; OffsetShift = 3; } - - for (uint32 Y = GFX.StartY; Y <= GFX.EndY; Y++) + + uint32 Y; + for (Y = GFX.StartY; Y <= GFX.EndY; Y++) { uint32 VOff = LineData [Y].BG[2].VOffset - 1; // uint32 VOff = LineData [Y].BG[2].VOffset; @@ -1562,8 +1578,9 @@ static void DrawBackgroundOffset (uint32 BGMode, uint32 bg, uint8 Z1, uint8 Z2) int clipcount = GFX.pCurrentClip->Count [bg]; if (!clipcount) clipcount = 1; - - for (int clip = 0; clip < clipcount; clip++) + + int clip; + for (clip = 0; clip < clipcount; clip++) { uint32 Left; uint32 Right; @@ -1778,7 +1795,7 @@ static void DrawBackgroundOffset (uint32 BGMode, uint32 bg, uint8 Z1, uint8 Z2) } } -static void DrawBackgroundMode5 (uint32 /* BGMODE */, uint32 bg, uint8 Z1, uint8 Z2) +static void DrawBackgroundMode5 (uint32 bg, uint8 Z1, uint8 Z2) { CHECK_SOUND(); @@ -1844,7 +1861,8 @@ static void DrawBackgroundMode5 (uint32 /* BGMODE */, uint32 bg, uint8 Z1, uint8 } int endy = IPPU.Interlace ? 1 + (GFX.EndY << 1) : GFX.EndY; - for (int Y = IPPU.Interlace ? GFX.StartY << 1 : GFX.StartY; Y <= endy; Y += Lines) + int Y; + for (Y = IPPU.Interlace ? GFX.StartY << 1 : GFX.StartY; Y <= endy; Y += Lines) { int y = IPPU.Interlace ? (Y >> 1) : Y; uint32 VOffset = LineData [y].BG[bg].VOffset; @@ -1888,7 +1906,9 @@ static void DrawBackgroundMode5 (uint32 /* BGMODE */, uint32 bg, uint8 Z1, uint8 int clipcount = GFX.pCurrentClip->Count [bg]; if (!clipcount) clipcount = 1; - for (int clip = 0; clip < clipcount; clip++) + + int clip; + for (clip = 0; clip < clipcount; clip++) { int Left; int Right; @@ -1991,7 +2011,9 @@ static void DrawBackgroundMode5 (uint32 /* BGMODE */, uint32 bg, uint8 Z1, uint8 Count = Width - Count; int Middle = Count >> 3; Count &= 7; - for (int C = Middle; C > 0; s += (IPPU.HalfWidthPixels ? 4 : 8), Quot++, C--) + + int C; + for (C = Middle; C > 0; s += (IPPU.HalfWidthPixels ? 4 : 8), Quot++, C--) { Tile = READ_2BYTES(t); GFX.Z1 = GFX.Z2 = depths [(Tile & 0x2000) >> 13]; @@ -2152,7 +2174,7 @@ static void DrawBackground (uint32 BGMode, uint32 bg, uint8 Z1, uint8 Z2) // { if (!Settings.SupportHiRes) SelectTileRenderer(TRUE /* normal */); - DrawBackgroundMode5 (BGMode, bg, Z1, Z2); + DrawBackgroundMode5 (bg, Z1, Z2); return; // } break; @@ -2214,7 +2236,8 @@ static void DrawBackground (uint32 BGMode, uint32 bg, uint8 Z1, uint8 Z2) OffsetShift = 3; } - for (uint32 Y = GFX.StartY; Y <= GFX.EndY; Y += Lines) + uint32 Y; + for (Y = GFX.StartY; Y <= GFX.EndY; Y += Lines) { uint32 VOffset = LineData [Y].BG[bg].VOffset; uint32 HOffset = LineData [Y].BG[bg].HOffset; @@ -2257,7 +2280,8 @@ static void DrawBackground (uint32 BGMode, uint32 bg, uint8 Z1, uint8 Z2) int clipcount = GFX.pCurrentClip->Count [bg]; if (!clipcount) clipcount = 1; - for (int clip = 0; clip < clipcount; clip++) + int clip; + for (clip = 0; clip < clipcount; clip++) { uint32 Left; uint32 Right; @@ -2371,7 +2395,8 @@ static void DrawBackground (uint32 BGMode, uint32 bg, uint8 Z1, uint8 Z2) Count = Width - Count; int Middle = Count >> 3; Count &= 7; - for (int C = Middle; C > 0; s += (IPPU.HalfWidthPixels ? 4 : 8) * GFX.PixSize, Quot++, C--) + int C; + for (C = Middle; C > 0; s += (IPPU.HalfWidthPixels ? 4 : 8) * GFX.PixSize, Quot++, C--) { Tile = READ_2BYTES(t); GFX.Z1 = GFX.Z2 = depths [(Tile & 0x2000) >> 13]; @@ -2510,7 +2535,8 @@ static void DrawBackground (uint32 BGMode, uint32 bg, uint8 Z1, uint8 Z2) uint8 *Depth = GFX.DB + GFX.StartY * GFX.PPL; \ struct SLineMatrixData *l = &LineMatrixData [GFX.StartY]; \ \ - for (uint32 Line = GFX.StartY; Line <= GFX.EndY; Line++, Screen += GFX.Pitch, Depth += GFX.PPL, l++) \ + uint32 Line; \ + for (Line = GFX.StartY; Line <= GFX.EndY; Line++, Screen += GFX.Pitch, Depth += GFX.PPL, l++) \ { \ int yy; \ \ @@ -2530,7 +2556,8 @@ static void DrawBackground (uint32 BGMode, uint32 bg, uint8 Z1, uint8 Z2) int BB = l->MatrixB * yy + (CentreX << 8); \ int DD = l->MatrixD * yy + (CentreY << 8); \ \ - for (uint32 clip = 0; clip < ClipCount; clip++) \ + uint32 clip; \ + for (clip = 0; clip < ClipCount; clip++) \ { \ if (GFX.pCurrentClip->Count [bg]) \ { \ @@ -2565,7 +2592,8 @@ static void DrawBackground (uint32 BGMode, uint32 bg, uint8 Z1, uint8 Z2) \ if (!PPU.Mode7Repeat) \ { \ - for (int x = startx; x != endx; x += dir, AA += aa, CC += cc, p++, d++) \ + int x; \ + for (x = startx; x != endx; x += dir, AA += aa, CC += cc, p++, d++) \ { \ int X = ((AA + BB) >> 8) & 0x3ff; \ int Y = ((CC + DD) >> 8) & 0x3ff; \ @@ -2581,7 +2609,8 @@ static void DrawBackground (uint32 BGMode, uint32 bg, uint8 Z1, uint8 Z2) } \ else \ { \ - for (int x = startx; x != endx; x += dir, AA += aa, CC += cc, p++, d++) \ + int x; \ + for (x = startx; x != endx; x += dir, AA += aa, CC += cc, p++, d++) \ { \ int X = ((AA + BB) >> 8); \ int Y = ((CC + DD) >> 8); \ @@ -2705,7 +2734,8 @@ static void DrawBGMode7Background16Sub1_2 (uint8 *Screen, int bg) ) \ allowSimpleCase = TRUE; \ \ - for (uint32 Line = GFX.StartY; Line <= GFX.EndY; Line++, Screen += GFX.Pitch, Depth += GFX.PPL, l++) \ + uint32 Line; \ + for (Line = GFX.StartY; Line <= GFX.EndY; Line++, Screen += GFX.Pitch, Depth += GFX.PPL, l++) \ { \ int yy; \ \ @@ -2739,7 +2769,8 @@ static void DrawBGMode7Background16Sub1_2 (uint8 *Screen, int bg) DD = l->MatrixD * yy + (CentreY << 8); \ } \ \ - for (uint32 clip = 0; clip < ClipCount; clip++) \ + uint32 clip; \ + for (clip = 0; clip < ClipCount; clip++) \ { \ if (GFX.pCurrentClip->Count [bg]) \ { \ @@ -2854,7 +2885,8 @@ static void DrawBGMode7Background16Sub1_2 (uint8 *Screen, int bg) /* You can think of this as a kind of mipmapping. */ \ if ((aa < 460 && aa > -460) && (cc < 460 && cc > -460)) \ {\ - for (int x = startx; x != endx; x += dir, AA += aa, CC += cc, p++, d++) \ + int x; \ + for (x = startx; x != endx; x += dir, AA += aa, CC += cc, p++, d++) \ { \ uint32 xPos = AA + BB; \ uint32 xPix = xPos >> 8; \ @@ -2932,7 +2964,8 @@ static void DrawBGMode7Background16Sub1_2 (uint8 *Screen, int bg) uint32 DD10 = DD + ccDelX; \ uint32 DD01 = DD + ddDelY; \ uint32 DD11 = DD + ccDelX + ddDelY; \ - for (int x = startx; x != endx; x += dir, AA += aa, CC += cc, p++, d++) \ + int x; \ + for (x = startx; x != endx; x += dir, AA += aa, CC += cc, p++, d++) \ { \ uint32 X = ((AA + BB) >> 8) & 0x3ff; \ uint32 Y = ((CC + DD) >> 8) & 0x3ff; \ @@ -2968,7 +3001,8 @@ static void DrawBGMode7Background16Sub1_2 (uint8 *Screen, int bg) } \ else \ { \ - for (int x = startx; x != endx; x += dir, AA += aa, CC += cc, p++, d++) \ + int x; \ + for (x = startx; x != endx; x += dir, AA += aa, CC += cc, p++, d++) \ { \ uint32 xPos = AA + BB; \ uint32 xPix = xPos >> 8; \ @@ -3439,12 +3473,14 @@ void S9xUpdateScreen () { // The game has switched from lo-res to hi-res mode part way down // the screen. Scale any existing lo-res pixels on screen - for (register uint32 y = 0; y < starty; y++) + register uint32 y; + for (y = 0; y < starty; y++) { register uint16 *p = (uint16 *) (GFX.Screen + y * GFX.Pitch2) + 255; register uint16 *q = (uint16 *) (GFX.Screen + y * GFX.Pitch2) + 510; - for (register int x = 255; x >= 0; x--, p--, q -= 2) + register int x; + for (x = 255; x >= 0; x--, p--, q -= 2) *q = *(q + 1) = *p; } IPPU.DoubleWidthPixels = TRUE; @@ -3465,7 +3501,8 @@ void S9xUpdateScreen () // The game has switched from non-interlaced to interlaced mode // part way down the screen. Scale everything. - for (register int32 y = (int32) GFX.StartY - 1; y >= 0; y--) + register int32 y; + for (y = (int32) GFX.StartY - 1; y >= 0; y--) { // memmove converted: Same malloc, different addresses, and identical addresses at line 0 [Neb] // DS2 DMA notes: This code path is unused [Neb] @@ -3531,7 +3568,8 @@ void S9xUpdateScreen () if (pClip->Count [5]) { // Colour window enabled. - for (uint32 y = starty; y <= endy; y++) + uint32 y; + for (y = starty; y <= endy; y++) { ZeroMemory (GFX.SubZBuffer + y * GFX.ZPitch, IPPU.RenderedScreenWidth); ZeroMemory (GFX.ZBuffer + y * GFX.ZPitch, IPPU.RenderedScreenWidth); @@ -3544,7 +3582,8 @@ void S9xUpdateScreen () *p++ = black; } - for (uint32 c = 0; c < pClip->Count [5]; c++) + uint32 c; + for (c = 0; c < pClip->Count [5]; c++) { if (pClip->Right [c][5] > pClip->Left [c][5]) { @@ -3571,7 +3610,8 @@ void S9xUpdateScreen () } else { - for (uint32 y = starty; y <= endy; y++) + uint32 y; + for (y = starty; y <= endy; y++) { ZeroMemory (GFX.ZBuffer + y * GFX.ZPitch, IPPU.RenderedScreenWidth); memset (GFX.SubZBuffer + y * GFX.ZPitch, 1, IPPU.RenderedScreenWidth); @@ -3601,7 +3641,8 @@ void S9xUpdateScreen () if (IPPU.Clip [0].Count [5]) { - for (uint32 y = starty; y <= endy; y++) + uint32 y; + for (y = starty; y <= endy; y++) { register uint16 *p = (uint16 *) (GFX.Screen + y * GFX.Pitch2); register uint8 *d = GFX.SubZBuffer + y * GFX.ZPitch; @@ -3630,7 +3671,8 @@ void S9xUpdateScreen () uint32 Count; pClip = &IPPU.Clip [0]; - for (uint32 y = starty; y <= endy; y++) + uint32 y; + for (y = starty; y <= endy; y++) { if (!(Count = pClip->Count [5])) { @@ -3639,7 +3681,8 @@ void S9xUpdateScreen () Count = 1; } - for (uint32 b = 0; b < Count; b++) + uint32 b; + for (b = 0; b < Count; b++) { if (pClip->Count [5]) { @@ -3808,9 +3851,11 @@ void S9xUpdateScreen () if (pClip->Count [5]) { - for (uint32 y = starty; y <= endy; y++) + uint32 y; + for (y = starty; y <= endy; y++) { - for (uint32 b = 0; b < pClip->Count [5]; b++) + uint32 b; + for (b = 0; b < pClip->Count [5]; b++) { uint32 Left = pClip->Left [b][5] * x2; uint32 Right = pClip->Right [b][5] * x2; @@ -3831,7 +3876,8 @@ void S9xUpdateScreen () } else { - for (uint32 y = starty; y <= endy; y++) + uint32 y; + for (y = starty; y <= endy; y++) { uint16 *p = (uint16 *) (GFX.Screen + y * GFX.Pitch2); uint8 *d = GFX.ZBuffer + y * GFX.ZPitch; @@ -3860,7 +3906,8 @@ void S9xUpdateScreen () if (IPPU.Clip [0].Count[5]) { - for (uint32 y = starty; y <= endy; y++) + uint32 y; + for (y = starty; y <= endy; y++) { uint32 *p = (uint32 *) (GFX.Screen + y * GFX.Pitch2); uint32 *q = (uint32 *) ((uint16 *) p + IPPU.RenderedScreenWidth); @@ -3868,7 +3915,8 @@ void S9xUpdateScreen () while (p < q) *p++ = black; - for (uint32 c = 0; c < IPPU.Clip [0].Count [5]; c++) + uint32 c; + for (c = 0; c < IPPU.Clip [0].Count [5]; c++) { if (IPPU.Clip [0].Right [c][5] > IPPU.Clip [0].Left [c][5]) { @@ -3884,7 +3932,8 @@ void S9xUpdateScreen () } else { - for (uint32 y = starty; y <= endy; y++) + uint32 y; + for (y = starty; y <= endy; y++) { uint32 *p = (uint32 *) (GFX.Screen + y * GFX.Pitch2); uint32 *q = (uint32 *) ((uint16 *) p + IPPU.RenderedScreenWidth); @@ -3895,7 +3944,8 @@ void S9xUpdateScreen () if (!PPU.ForcedBlanking) { - for (uint32 y = starty; y <= endy; y++) + uint32 y; + for (y = starty; y <= endy; y++) { ZeroMemory (GFX.ZBuffer + y * GFX.ZPitch, IPPU.RenderedScreenWidth); } @@ -3914,11 +3964,13 @@ void S9xUpdateScreen () { // Mixure of background modes used on screen - scale width // of all non-mode 5 and 6 pixels. - for (register uint32 y = starty; y <= endy; y++) + register uint32 y; + for (y = starty; y <= endy; y++) { register uint16 *p = (uint16 *) (GFX.Screen + y * GFX.Pitch2) + 255; register uint16 *q = (uint16 *) (GFX.Screen + y * GFX.Pitch2) + 510; - for (register int x = 255; x >= 0; x--, p--, q -= 2) + register int x; + for (x = 255; x >= 0; x--, p--, q -= 2) *q = *(q + 1) = *p; } } diff --git a/source/globals.c b/source/globals.c index a1c108e..5fb7051 100644 --- a/source/globals.c +++ b/source/globals.c @@ -146,15 +146,15 @@ struct FxInit_s SuperFX; uint8 *SFXPlotTable = NULL; #endif -struct SPPU PPU; -struct InternalPPU IPPU; +SPPU PPU; +InternalPPU IPPU; -struct SDMA DMA[8]; +SDMA DMA[8]; uint8 *HDMAMemPointers [8]; uint8 *HDMABasePointers [8]; -struct SBG BG; +SBG BG; struct SGFX GFX; struct SLineData LineData[240]; @@ -172,7 +172,7 @@ uint32 odd_low[4][16]; uint32 even_high[4][16]; uint32 even_low[4][16]; -struct SCheatData Cheat; +SCheatData Cheat; SoundStatus so; diff --git a/source/memmap.c b/source/memmap.c index 2fb0dbc..598bae3 100644 --- a/source/memmap.c +++ b/source/memmap.c @@ -147,8 +147,8 @@ static uint8 bytes0x2000 [0x2000]; int is_bsx(unsigned char *); int bs_name(unsigned char *); int check_char(unsigned); -void S9xDeinterleaveType2 (bool8 reset=TRUE); -uint32 caCRC32(uint8 *array, uint32 size, register uint32 crc32 = 0xFFFFFFFF); +void S9xDeinterleaveType2 (bool8 reset); +uint32 caCRC32(uint8 *array, uint32 size, register uint32 crc32); extern char *rom_filename; @@ -222,7 +222,8 @@ void S9xDeinterleaveType1(int TotalFileSize, uint8 * base) { for (i = 0; i < nblocks * 2; i++) { - for (int j = i; j < nblocks * 2; j++) + int j; + for (j = i; j < nblocks * 2; j++) { if (blocks [j] == i) { @@ -275,9 +276,10 @@ void S9xDeinterleaveGD24(int TotalFileSize, uint8 * base) } } -bool8 CMemory::AllASCII (uint8 *b, int size) +bool8 AllASCII (uint8 *b, int size) { - for (int i = 0; i < size; i++) + int i; + for (i = 0; i < size; i++) { if (b[i] < 32 || b[i] > 126) return (FALSE); @@ -285,7 +287,7 @@ bool8 CMemory::AllASCII (uint8 *b, int size) return (TRUE); } -int CMemory::ScoreHiROM (bool8 skip_header, int32 romoff) +int ScoreHiROM (bool8 skip_header, int32 romoff) { int score = 0; int o = skip_header ? 0xff00 + 0x200 : 0xff00; @@ -318,7 +320,7 @@ int CMemory::ScoreHiROM (bool8 skip_header, int32 romoff) score -= 6; if ((Memory.ROM [o + 0xfc]|(Memory.ROM [o + 0xfd]<<8))>0xFFB0) score -= 2; //reduced after looking at a scan by Cowering - if (CalculatedSize > 1024 * 1024 * 3) + if (Memory.CalculatedSize > 1024 * 1024 * 3) score += 4; if ((1 << (Memory.ROM [o + 0xd7] - 7)) > 48) score -= 1; @@ -330,7 +332,7 @@ int CMemory::ScoreHiROM (bool8 skip_header, int32 romoff) return (score); } -int CMemory::ScoreLoROM (bool8 skip_header, int32 romoff) +int ScoreLoROM (bool8 skip_header, int32 romoff) { int score = 0; int o = skip_header ? 0x7f00 + 0x200 : 0x7f00; @@ -356,7 +358,7 @@ int CMemory::ScoreLoROM (bool8 skip_header, int32 romoff) score += 2; if ((Memory.ROM [o + 0xd5] & 0xf) < 4) score += 2; - if (CalculatedSize <= 1024 * 1024 * 16) + if (Memory.CalculatedSize <= 1024 * 1024 * 16) score += 2; if (!(Memory.ROM [o + 0xfd] & 0x80)) score -= 6; @@ -372,7 +374,7 @@ int CMemory::ScoreLoROM (bool8 skip_header, int32 romoff) return (score); } -char *CMemory::Safe (const char *s) +char *Safe (const char *s) { static char *safe; static int safe_len = 0; @@ -394,7 +396,8 @@ char *CMemory::Safe (const char *s) safe = (char *) malloc (safe_len = len + 1); } - for (int i = 0; i < len; i++) + int i; + for (i = 0; i < len; i++) { if (s [i] >= 32 && s [i] < 127) safe [i] = s[i]; @@ -409,29 +412,29 @@ char *CMemory::Safe (const char *s) /* Init() */ /* This function allocates and zeroes all the memory needed by the emulator */ /**********************************************************************************************/ -bool8 CMemory::Init () +bool8 Init () { // DS2 DMA notes: These would do well to be allocated with 32 extra bytes // so they can be 32-byte aligned. [Neb] - RAM = (uint8 *) malloc (0x20000); - SRAM = (uint8 *) malloc (0x20000); - VRAM = (uint8 *) malloc (0x10000); + Memory.RAM = (uint8 *) malloc (0x20000); + Memory.SRAM = (uint8 *) malloc (0x20000); + Memory.VRAM = (uint8 *) malloc (0x10000); #ifdef DS2_DMA ROM = (uint8 *) AlignedMalloc (MAX_ROM_SIZE + 0x200 + 0x8000, 32, &PtrAdj.ROM); #else - ROM = (uint8 *) malloc (MAX_ROM_SIZE + 0x200 + 0x8000); + Memory.ROM = (uint8 *) malloc (MAX_ROM_SIZE + 0x200 + 0x8000); #endif - memset (RAM, 0, 0x20000); - memset (SRAM, 0, 0x20000); - memset (VRAM, 0, 0x10000); + memset (Memory.RAM, 0, 0x20000); + memset (Memory.SRAM, 0, 0x20000); + memset (Memory.VRAM, 0, 0x10000); // This needs to be initialised with a ROM first anyway, so don't // bother memsetting. [Neb] // memset (ROM, 0, MAX_ROM_SIZE + 0x200 + 0x8000); - BSRAM = (uint8 *) malloc (0x80000); - memset (BSRAM, 0, 0x80000); + Memory.BSRAM = (uint8 *) malloc (0x80000); + memset (Memory.BSRAM, 0, 0x80000); - FillRAM = NULL; + Memory.FillRAM = NULL; IPPU.TileCache [TILE_2BIT] = (uint8 *) malloc (MAX_2BIT_TILES * 128); IPPU.TileCache [TILE_4BIT] = (uint8 *) malloc (MAX_4BIT_TILES * 128); @@ -441,7 +444,7 @@ bool8 CMemory::Init () IPPU.TileCached [TILE_4BIT] = (uint8 *) malloc (MAX_4BIT_TILES); IPPU.TileCached [TILE_8BIT] = (uint8 *) malloc (MAX_8BIT_TILES); - if (!RAM || !SRAM || !VRAM || !ROM || !BSRAM || + if (!Memory.RAM || !Memory.SRAM || !Memory.VRAM || !Memory.ROM || !Memory.BSRAM || !IPPU.TileCache [TILE_2BIT] || !IPPU.TileCache [TILE_4BIT] || !IPPU.TileCache [TILE_8BIT] || !IPPU.TileCached [TILE_2BIT] || !IPPU.TileCached [TILE_4BIT] || !IPPU.TileCached [TILE_8BIT]) @@ -453,25 +456,25 @@ bool8 CMemory::Init () // FillRAM uses first 32K of ROM image area, otherwise space just // wasted. Might be read by the SuperFX code. - FillRAM = ROM; + Memory.FillRAM = Memory.ROM; // Add 0x8000 to ROM image pointer to stop SuperFX code accessing // unallocated memory (can cause crash on some ports). - ROM += 0x8000; // still 32-byte aligned + Memory.ROM += 0x8000; // still 32-byte aligned - C4RAM = ROM + 0x400000 + 8192 * 8; // still 32-byte aligned - ::ROM = ROM; - ::SRAM = SRAM; - ::RegRAM = FillRAM; + Memory.C4RAM = Memory.ROM + 0x400000 + 8192 * 8; // still 32-byte aligned + ROM_g = Memory.ROM; + SRAM_g = Memory.SRAM; + RegRAM_g = Memory.FillRAM; #ifdef ZSNES_FX SFXPlotTable = ROM + 0x400000; #else SuperFX.pvRegisters = &Memory.FillRAM [0x3000]; SuperFX.nRamBanks = 2; // Most only use 1. 1=64KB, 2=128KB=1024Mb - SuperFX.pvRam = ::SRAM; + SuperFX.pvRam = Memory.SRAM; SuperFX.nRomBanks = (2 * 1024 * 1024) / (32 * 1024); - SuperFX.pvRom = (uint8 *) ROM; + SuperFX.pvRom = (uint8 *) Memory.ROM; #endif ZeroMemory (IPPU.TileCache [TILE_2BIT], MAX_2BIT_TILES * 128); @@ -482,49 +485,49 @@ bool8 CMemory::Init () ZeroMemory (IPPU.TileCached [TILE_4BIT], MAX_4BIT_TILES); ZeroMemory (IPPU.TileCached [TILE_8BIT], MAX_8BIT_TILES); - SDD1Data = NULL; - SDD1Index = NULL; + Memory.SDD1Data = NULL; + Memory.SDD1Index = NULL; return (TRUE); } -void CMemory::Deinit () +void Deinit () { #ifdef __W32_HEAP if(_HEAPOK!=_heapchk()) - MessageBox(GUI.hWnd, "CMemory::Deinit", "Heap Corrupt", MB_OK); + MessageBox(GUI.hWnd, "Deinit", "Heap Corrupt", MB_OK); #endif - if (RAM) + if (Memory.RAM) { - free ((char *) RAM); - RAM = NULL; + free ((char *) Memory.RAM); + Memory.RAM = NULL; } - if (SRAM) + if (Memory.SRAM) { - free ((char *) SRAM); - SRAM = NULL; + free ((char *) Memory.SRAM); + Memory.SRAM = NULL; } - if (VRAM) + if (Memory.VRAM) { - free ((char *) VRAM); - VRAM = NULL; + free ((char *) Memory.VRAM); + Memory.VRAM = NULL; } - if (ROM) + if (Memory.ROM) { - ROM -= 0x8000; + Memory.ROM -= 0x8000; #ifdef DS2_RAM AlignedFree ((char *) ROM, PtrAdj.ROM); #else - free ((char *) ROM); + free ((char *) Memory.ROM); #endif - ROM = NULL; + Memory.ROM = NULL; } - if(BSRAM) + if(Memory.BSRAM) { - free((char*) BSRAM); - BSRAM=NULL; + free((char*) Memory.BSRAM); + Memory.BSRAM=NULL; } if (IPPU.TileCache [TILE_2BIT]) @@ -562,17 +565,17 @@ void CMemory::Deinit () Safe(NULL); } -void CMemory::FreeSDD1Data () +void FreeSDD1Data () { - if (SDD1Index) + if (Memory.SDD1Index) { - free ((char *) SDD1Index); - SDD1Index = NULL; + free ((char *) Memory.SDD1Index); + Memory.SDD1Index = NULL; } - if (SDD1Data) + if (Memory.SDD1Data) { - free ((char *) SDD1Data); - SDD1Data = NULL; + free ((char *) Memory.SDD1Data); + Memory.SDD1Data = NULL; } } @@ -581,15 +584,15 @@ void CMemory::FreeSDD1Data () /* This function loads a Snes-Backup image */ /**********************************************************************************************/ -bool8 CMemory::LoadROM (const char *filename) +bool8 LoadROM (const char *filename) { int32 TotalFileSize = 0; bool8 Interleaved = FALSE; bool8 Tales = FALSE; - uint8* RomHeader=ROM; + uint8* RomHeader=Memory.ROM; - ExtendedFormat=NOPE; + Memory.ExtendedFormat=NOPE; if(CleanUp7110!=NULL) @@ -601,40 +604,40 @@ bool8 CMemory::LoadROM (const char *filename) memset (bytes0x2000, 0, 0x2000); CPU.TriedInterleavedMode2 = FALSE; - CalculatedSize = 0; + Memory.CalculatedSize = 0; retry_count =0; again: Settings.DisplayColor=0xffff; SET_UI_COLOR(255,255,255); - TotalFileSize = FileLoader(ROM, filename, MAX_ROM_SIZE); + TotalFileSize = FileLoader(Memory.ROM, filename, MAX_ROM_SIZE); if (!TotalFileSize) return FALSE; // it ends here else if(!Settings.NoPatch) - CheckForIPSPatch (filename, HeaderCount != 0, TotalFileSize); + CheckForIPSPatch (filename, Memory.HeaderCount != 0, &TotalFileSize); //fix hacked games here. - if((strncmp("HONKAKUHA IGO GOSEI", (char*)&ROM[0x7FC0],19)==0)&&(ROM[0x7FD5]!=0x31)) + if((strncmp("HONKAKUHA IGO GOSEI", (char*)&Memory.ROM[0x7FC0],19)==0)&&(Memory.ROM[0x7FD5]!=0x31)) { - ROM[0x7FD5]=0x31; - ROM[0x7FD6]=0x02; + Memory.ROM[0x7FD5]=0x31; + Memory.ROM[0x7FD6]=0x02; Settings.DisplayColor=BUILD_PIXEL(31,0,0); SET_UI_COLOR(255,0,0); S9xMessage(S9X_ERROR,S9X_ROM_CONFUSING_FORMAT_INFO, "Warning! Hacked Dump!"); } - if((strncmp("HONKAKUHA IGO GOSEI", (char*)&ROM[0xFFC0],19)==0)&&(ROM[0xFFD5]!=0x31)) + if((strncmp("HONKAKUHA IGO GOSEI", (char*)&Memory.ROM[0xFFC0],19)==0)&&(Memory.ROM[0xFFD5]!=0x31)) { - ROM[0xFFD5]=0x31; - ROM[0xFFD6]=0x02; + Memory.ROM[0xFFD5]=0x31; + Memory.ROM[0xFFD6]=0x02; Settings.DisplayColor=BUILD_PIXEL(31,0,0); SET_UI_COLOR(255,0,0); S9xMessage(S9X_ERROR,S9X_ROM_CONFUSING_FORMAT_INFO, "Warning! Hacked Dump!"); } - if((ROM[0x7FD5]==0x42)&&(ROM[0x7FD6]==0x13)&&(strncmp("METAL COMBAT",(char*)&ROM[0x7FC0],12)==0)) + if((Memory.ROM[0x7FD5]==0x42)&&(Memory.ROM[0x7FD6]==0x13)&&(strncmp("METAL COMBAT",(char*)&Memory.ROM[0x7FC0],12)==0)) { Settings.DisplayColor=BUILD_PIXEL(31,0,0); SET_UI_COLOR(255,0,0); @@ -644,12 +647,12 @@ again: int orig_hi_score, orig_lo_score; int hi_score, lo_score; - orig_hi_score = hi_score = ScoreHiROM (FALSE); - orig_lo_score = lo_score = ScoreLoROM (FALSE); + orig_hi_score = hi_score = ScoreHiROM (FALSE, 0); + orig_lo_score = lo_score = ScoreLoROM (FALSE, 0); - if (HeaderCount == 0 && !Settings.ForceNoHeader && - ((hi_score > lo_score && ScoreHiROM (TRUE) > hi_score) || - (hi_score <= lo_score && ScoreLoROM (TRUE) > lo_score))) + if (Memory.HeaderCount == 0 && !Settings.ForceNoHeader && + ((hi_score > lo_score && ScoreHiROM (TRUE, 0) > hi_score) || + (hi_score <= lo_score && ScoreLoROM (TRUE, 0) > lo_score))) { #ifdef DS2_DMA __dcache_writeback_all(); @@ -670,24 +673,24 @@ again: S9xMessage (S9X_INFO, S9X_HEADER_WARNING, "Try specifying the -nhd command line option if the game doesn't work\n"); //modifying ROM, so we need to rescore - orig_hi_score = hi_score = ScoreHiROM (FALSE); - orig_lo_score = lo_score = ScoreLoROM (FALSE); + orig_hi_score = hi_score = ScoreHiROM (FALSE, 0); + orig_lo_score = lo_score = ScoreLoROM (FALSE, 0); } - CalculatedSize = TotalFileSize & ~0x1FFF; // round down to lower 0x2000 - ZeroMemory (ROM + CalculatedSize, MAX_ROM_SIZE - CalculatedSize); + Memory.CalculatedSize = TotalFileSize & ~0x1FFF; // round down to lower 0x2000 + ZeroMemory (Memory.ROM + Memory.CalculatedSize, MAX_ROM_SIZE - Memory.CalculatedSize); - if(CalculatedSize >0x400000&& - !(ROM[0x7FD5]==0x32&&((ROM[0x7FD6]&0xF0)==0x40)) && //exclude S-DD1 - !(ROM[0xFFD5]==0x3A&&((ROM[0xFFD6]&0xF0)==0xF0))) //exclude SPC7110 + if(Memory.CalculatedSize >0x400000&& + !(Memory.ROM[0x7FD5]==0x32&&((Memory.ROM[0x7FD6]&0xF0)==0x40)) && //exclude S-DD1 + !(Memory.ROM[0xFFD5]==0x3A&&((Memory.ROM[0xFFD6]&0xF0)==0xF0))) //exclude SPC7110 { //you might be a Jumbo! - ExtendedFormat=YEAH; + Memory.ExtendedFormat=YEAH; } //If both vectors are invalid, it's type 1 LoROM - if(ExtendedFormat==NOPE&&((ROM[0x7FFC]|(ROM[0x7FFD]<<8))<0x8000)&&((ROM[0xFFFC]|(ROM[0xFFFD]<<8)) <0x8000)) + if(Memory.ExtendedFormat==NOPE&&((Memory.ROM[0x7FFC]|(Memory.ROM[0x7FFD]<<8))<0x8000)&&((Memory.ROM[0xFFFC]|(Memory.ROM[0xFFFD]<<8)) <0x8000)) { if(Settings.DisplayColor==0xffff) { @@ -695,18 +698,18 @@ again: SET_UI_COLOR(0,255,0); } if(!Settings.ForceInterleaved) - S9xDeinterleaveType1(TotalFileSize, ROM); + S9xDeinterleaveType1(TotalFileSize, Memory.ROM); } //CalculatedSize is now set, so rescore - orig_hi_score = hi_score = ScoreHiROM (FALSE); - orig_lo_score = lo_score = ScoreLoROM (FALSE); + orig_hi_score = hi_score = ScoreHiROM (FALSE, 0); + orig_lo_score = lo_score = ScoreLoROM (FALSE, 0); - if(NOPE!=ExtendedFormat) + if(Memory.ExtendedFormat != NOPE) { int loromscore, hiromscore, swappedlorom, swappedhirom; - loromscore=ScoreLoROM(FALSE); - hiromscore=ScoreHiROM(FALSE); + loromscore=ScoreLoROM(FALSE, 0); + hiromscore=ScoreHiROM(FALSE, 0); swappedlorom=ScoreLoROM(FALSE, 0x400000); swappedhirom=ScoreHiROM(FALSE, 0x400000); @@ -714,17 +717,17 @@ again: if(max(swappedlorom, swappedhirom) >= max(loromscore, hiromscore)) { - ExtendedFormat = BIGFIRST; + Memory.ExtendedFormat = BIGFIRST; hi_score=swappedhirom; lo_score=swappedlorom; - RomHeader=ROM+0x400000; + RomHeader=Memory.ROM+0x400000; } else { - ExtendedFormat = SMALLFIRST; + Memory.ExtendedFormat = SMALLFIRST; lo_score=loromscore; hi_score=hiromscore; - RomHeader=ROM; + RomHeader=Memory.ROM; } @@ -733,8 +736,8 @@ again: Interleaved = Settings.ForceInterleaved || Settings.ForceInterleaved2; if (Settings.ForceLoROM || (!Settings.ForceHiROM && lo_score >= hi_score)) { - LoROM = TRUE; - HiROM = FALSE; + Memory.LoROM = TRUE; + Memory.HiROM = FALSE; // Ignore map type byte if not 0x2x or 0x3x if ((RomHeader [0x7fd5] & 0xf0) == 0x20 || (RomHeader [0x7fd5] & 0xf0) == 0x30) @@ -763,8 +766,8 @@ again: break; } } - LoROM = FALSE; - HiROM = TRUE; + Memory.LoROM = FALSE; + Memory.HiROM = TRUE; } // More @@ -790,10 +793,10 @@ again: Settings.ForceInterleaved2=true; } #endif - if (strncmp ((char *) &ROM [0x7fc0], "YUYU NO QUIZ DE GO!GO!", 22) == 0) + if (strncmp ((char *) &Memory.ROM [0x7fc0], "YUYU NO QUIZ DE GO!GO!", 22) == 0) { - LoROM = TRUE; - HiROM = FALSE; + Memory.LoROM = TRUE; + Memory.HiROM = FALSE; Interleaved = FALSE; } } @@ -808,18 +811,18 @@ again: { if(Memory.ExtendedFormat==BIGFIRST) { - S9xDeinterleaveType1(0x400000, ROM); - S9xDeinterleaveType1(CalculatedSize-0x400000, ROM+0x400000); + S9xDeinterleaveType1(0x400000, Memory.ROM); + S9xDeinterleaveType1(Memory.CalculatedSize-0x400000, Memory.ROM+0x400000); } else { - S9xDeinterleaveType1(CalculatedSize-0x400000, ROM); - S9xDeinterleaveType1(0x400000, ROM+CalculatedSize-0x400000); + S9xDeinterleaveType1(Memory.CalculatedSize-0x400000, Memory.ROM); + S9xDeinterleaveType1(0x400000, Memory.ROM + Memory.CalculatedSize-0x400000); } - LoROM = FALSE; - HiROM = TRUE; + Memory.LoROM = FALSE; + Memory.HiROM = TRUE; } @@ -827,13 +830,13 @@ again: { S9xDeinterleaveType2(FALSE); } - else if (Settings.ForceInterleaveGD24 && CalculatedSize ==0x300000) + else if (Settings.ForceInterleaveGD24 && Memory.CalculatedSize ==0x300000) { - bool8 t = LoROM; + bool8 t = Memory.LoROM; - LoROM = HiROM; - HiROM = t; - S9xDeinterleaveGD24(CalculatedSize, ROM); + Memory.LoROM = Memory.HiROM; + Memory.HiROM = t; + S9xDeinterleaveGD24(Memory.CalculatedSize, Memory.ROM); } else { @@ -842,20 +845,20 @@ again: Settings.DisplayColor=BUILD_PIXEL(0,31,0); SET_UI_COLOR(0,255,0); } - bool8 t = LoROM; + bool8 t = Memory.LoROM; - LoROM = HiROM; - HiROM = t; + Memory.LoROM = Memory.HiROM; + Memory.HiROM = t; - S9xDeinterleaveType1(CalculatedSize, ROM); + S9xDeinterleaveType1(Memory.CalculatedSize, Memory.ROM); } - hi_score = ScoreHiROM (FALSE); - lo_score = ScoreLoROM (FALSE); + hi_score = ScoreHiROM (FALSE, 0); + lo_score = ScoreLoROM (FALSE, 0); - if ((HiROM && + if ((Memory.HiROM && (lo_score >= hi_score || hi_score < 0)) || - (LoROM && + (Memory.LoROM && (hi_score > lo_score || lo_score < 0))) { if (retry_count == 0) @@ -870,7 +873,7 @@ again: } } - if(ExtendedFormat==SMALLFIRST) + if(Memory.ExtendedFormat==SMALLFIRST) Tales=true; FreeSDD1Data (); @@ -884,7 +887,7 @@ again: return (TRUE); } -uint32 CMemory::FileLoader (uint8* buffer, const char* filename, int32 maxsize) +uint32 FileLoader (uint8* buffer, const char* filename, int32 maxsize) { @@ -911,15 +914,15 @@ uint32 CMemory::FileLoader (uint8* buffer, const char* filename, int32 maxsize) if ((ROMFile = fopen(fname, "rb")) == NULL) return (0); - strcpy (ROMFilename, fname); + strcpy (Memory.ROMFilename, fname); - HeaderCount = 0; + Memory.HeaderCount = 0; uint8 *ptr = buffer; bool8 more = FALSE; do { - FileSize = fread (ptr, 1, maxsize + 0x200 - (ptr - ROM), ROMFile); + FileSize = fread (ptr, 1, maxsize + 0x200 - (ptr - Memory.ROM), ROMFile); fclose (ROMFile); int calc_size = FileSize & ~0x1FFF; // round to the lower 0x2000 @@ -943,7 +946,7 @@ uint32 CMemory::FileLoader (uint8* buffer, const char* filename, int32 maxsize) #else memmove (ptr, ptr + 512, calc_size); #endif - HeaderCount++; + Memory.HeaderCount++; FileSize -= 512; } @@ -953,7 +956,7 @@ uint32 CMemory::FileLoader (uint8* buffer, const char* filename, int32 maxsize) // check for multi file roms - if ((ptr - ROM) < (maxsize + 0x200) && + if ((ptr - Memory.ROM) < (maxsize + 0x200) && (isdigit (ext [0]) && ext [1] == 0 && ext [0] < '9')) { more = TRUE; @@ -965,7 +968,7 @@ uint32 CMemory::FileLoader (uint8* buffer, const char* filename, int32 maxsize) #endif _makepath (fname, drive, dir, name, ext); } - else if (ptr - ROM < maxsize + 0x200 && + else if (ptr - Memory.ROM < maxsize + 0x200 && (((len = strlen (name)) == 7 || len == 8) && strncasecmp (name, "sf", 2) == 0 && isdigit (name [2]) && isdigit (name [3]) && isdigit (name [4]) && @@ -987,11 +990,11 @@ uint32 CMemory::FileLoader (uint8* buffer, const char* filename, int32 maxsize) - if (HeaderCount == 0) + if (Memory.HeaderCount == 0) S9xMessage (S9X_INFO, S9X_HEADERS_INFO, "No ROM file header found."); else { - if (HeaderCount == 1) + if (Memory.HeaderCount == 1) S9xMessage (S9X_INFO, S9X_HEADERS_INFO, "Found ROM file header (and ignored it)."); else @@ -1009,7 +1012,7 @@ uint32 CMemory::FileLoader (uint8* buffer, const char* filename, int32 maxsize) /* This function loads a Slotted SNES-Backup image and fills the slot. */ /**********************************************************************************************/ -bool8 CMemory::LoadMulti (const char *basename, const char *slot1name, const char *slot2name) +bool8 LoadMulti (const char *basename, const char *slot1name, const char *slot2name) { unsigned long FileSize = 0; @@ -1086,7 +1089,7 @@ bool8 SufamiTurboBIOSSig(uint8* file, int32 size) if(size!=0x40000) return FALSE; //and CRC32 - if(0x9B4CA911==caCRC32(file, size)) + if(0x9B4CA911==caCRC32(file, size, 0xFFFFFFFF)) { return TRUE; } @@ -1117,7 +1120,7 @@ bool8 SameGameSig(uint8* file, int32 size) return FALSE; if(size!=0x100000) return FALSE; - if(0x133E1C5B==caCRC32(file, size)) + if(0x133E1C5B==caCRC32(file, size, 0xFFFFFFFF)) return TRUE; return FALSE; } @@ -1128,7 +1131,7 @@ bool8 GNextSig(uint8* file, int32 size) return FALSE; if(size!=0x180000) return FALSE; - if(0x845E420D==caCRC32(file, size)) + if(0x845E420D==caCRC32(file, size, 0xFFFFFFFF)) return TRUE; return FALSE; } @@ -1151,7 +1154,7 @@ int MultiType(uint8* file, int32 size) //compatibility wrapper void S9xDeinterleaveMode2 () { - S9xDeinterleaveType2(); + S9xDeinterleaveType2(TRUE); } void S9xDeinterleaveType2 (bool8 reset) @@ -1195,7 +1198,8 @@ void S9xDeinterleaveType2 (bool8 reset) #endif for (i = 0; i < nblocks * 2; i++) { - for (int j = i; j < nblocks * 2; j++) + int j; + for (j = i; j < nblocks * 2; j++) { if (blocks [j] == i) { @@ -1234,7 +1238,7 @@ void S9xDeinterleaveType2 (bool8 reset) } if(reset) { - Memory.InitROM (FALSE); + InitROM (FALSE); S9xReset (); } } @@ -1242,17 +1246,18 @@ void S9xDeinterleaveType2 (bool8 reset) //CRC32 for char arrays uint32 caCRC32(uint8 *array, uint32 size, register uint32 crc32) { - for (register uint32 i = 0; i < size; i++) + register uint32 i; + for (i = 0; i < size; i++) { crc32 = ((crc32 >> 8) & 0x00FFFFFF) ^ crc32Table[(crc32 ^ array[i]) & 0xFF]; } return ~crc32; } -void CMemory::InitROM (bool8 Interleaved) +void InitROM (bool8 Interleaved) { #ifndef ZSNES_FX - SuperFX.nRomBanks = CalculatedSize >> 15; + SuperFX.nRomBanks = Memory.CalculatedSize >> 15; #endif Settings.MultiPlayer5Master = Settings.MultiPlayer5; Settings.MouseMaster = Settings.Mouse; @@ -1269,20 +1274,20 @@ void CMemory::InitROM (bool8 Interleaved) Settings.OBC1=FALSE; Settings.SETA=FALSE; s7r.DataRomSize = 0; - CalculatedChecksum=0; + Memory.CalculatedChecksum=0; uint8* RomHeader; - RomHeader=ROM+0x7FB0; + RomHeader=Memory.ROM+0x7FB0; - if(ExtendedFormat==BIGFIRST) + if(Memory.ExtendedFormat==BIGFIRST) RomHeader+=0x400000; - if(HiROM) + if(Memory.HiROM) RomHeader+=0x8000; if(!Settings.BS) { - Settings.BS=(-1!=is_bsx(ROM+0x7FC0)); + Settings.BS=(-1!=is_bsx(Memory.ROM+0x7FC0)); if(Settings.BS) { @@ -1292,7 +1297,7 @@ void CMemory::InitROM (bool8 Interleaved) else { - Settings.BS=(-1!=is_bsx(ROM+0xFFC0)); + Settings.BS=(-1!=is_bsx(Memory.ROM+0xFFC0)); if(Settings.BS) { Memory.HiROM=TRUE; @@ -1301,29 +1306,29 @@ void CMemory::InitROM (bool8 Interleaved) } } - ZeroMemory (BlockIsRAM, MEMMAP_NUM_BLOCKS); - ZeroMemory (BlockIsROM, MEMMAP_NUM_BLOCKS); + ZeroMemory (Memory.BlockIsRAM, MEMMAP_NUM_BLOCKS); + ZeroMemory (Memory.BlockIsROM, MEMMAP_NUM_BLOCKS); - ::SRAM = SRAM; - memset (ROMId, 0, 5); - memset (CompanyId, 0, 3); + SRAM_g = Memory.SRAM; + memset (Memory.ROMId, 0, 5); + memset (Memory.CompanyId, 0, 3); ParseSNESHeader(RomHeader); // Try to auto-detect the DSP1 chip if (!Settings.ForceNoDSP1 && - (ROMType & 0xf) >= 3 && (ROMType & 0xf0) == 0) + (Memory.ROMType & 0xf) >= 3 && (Memory.ROMType & 0xf0) == 0) Settings.DSP1Master = TRUE; if (Memory.HiROM) { // Enable S-RTC (Real Time Clock) emulation for Dai Kaijyu Monogatari 2 - Settings.SRTC = ((ROMType & 0xf0) >> 4) == 5; + Settings.SRTC = ((Memory.ROMType & 0xf0) >> 4) == 5; - if(((ROMSpeed&0x0F)==0x0A)&&((ROMType&0xF0)==0xF0)) + if(((Memory.ROMSpeed&0x0F)==0x0A)&&((Memory.ROMType&0xF0)==0xF0)) { Settings.SPC7110=true; - if((ROMType&0x0F)==0x09) + if((Memory.ROMType&0x0F)==0x09) Settings.SPC7110RTC=true; } @@ -1333,7 +1338,7 @@ void CMemory::InitROM (bool8 Interleaved) { SPC7110HiROMMap(); } - else if ((ROMSpeed & ~0x10) == 0x25) + else if ((Memory.ROMSpeed & ~0x10) == 0x25) { TalesROMMap (Interleaved); } @@ -1343,34 +1348,34 @@ void CMemory::InitROM (bool8 Interleaved) { Settings.SuperFX = Settings.ForceSuperFX; - if(ROMType==0x25) + if(Memory.ROMType==0x25) { Settings.OBC1=TRUE; } //BS-X BIOS - if(ROMType==0xE5) + if(Memory.ROMType==0xE5) { Settings.BS=TRUE; } - if ((ROMType & 0xf0) == 0x10) + if ((Memory.ROMType & 0xf0) == 0x10) Settings.SuperFX = !Settings.ForceNoSuperFX; Settings.SDD1 = Settings.ForceSDD1; - if ((ROMType & 0xf0) == 0x40) + if ((Memory.ROMType & 0xf0) == 0x40) Settings.SDD1 = !Settings.ForceNoSDD1; if (Settings.SDD1) S9xLoadSDD1Data (); - if(((ROMType &0xF0) == 0xF0)&((ROMSpeed&0x0F)!=5)) + if(((Memory.ROMType &0xF0) == 0xF0)&((Memory.ROMSpeed&0x0F)!=5)) { - SRAMSize=2; + Memory.SRAMSize=2; SNESGameFixes.SRAMInitialValue = 0x00; - if((ROMType &0x0F)==6) + if((Memory.ROMType &0x0F)==6) { - if(ROM[0x7FD7]==0x09) + if(Memory.ROM[0x7FD7]==0x09) { Settings.SETA=ST_011; SetSETA=&S9xSetST011; @@ -1386,13 +1391,13 @@ void CMemory::InitROM (bool8 Interleaved) else { Settings.SETA=ST_018; - SRAMSize=2; + Memory.SRAMSize=2; } } Settings.C4 = Settings.ForceC4; - if ((ROMType & 0xf0) == 0xf0 && - (strncmp (ROMName, "MEGAMAN X", 9) == 0 || - strncmp (ROMName, "ROCKMAN X", 9) == 0)) + if ((Memory.ROMType & 0xf0) == 0xf0 && + (strncmp (Memory.ROMName, "MEGAMAN X", 9) == 0 || + strncmp (Memory.ROMName, "ROCKMAN X", 9) == 0)) { Settings.C4 = !Settings.ForceNoC4; } @@ -1414,8 +1419,8 @@ void CMemory::InitROM (bool8 Interleaved) Settings.SDD1 = FALSE; } else if (Settings.ForceSA1 || - (!Settings.ForceNoSA1 && (ROMSpeed & ~0x10) == 0x23 && - (ROMType & 0xf) > 3 && (ROMType & 0xf0) == 0x30)) + (!Settings.ForceNoSA1 && (Memory.ROMSpeed & ~0x10) == 0x23 && + (Memory.ROMType & 0xf) > 3 && (Memory.ROMType & 0xf0) == 0x30)) { Settings.SA1 = TRUE; // Settings.MultiPlayer5Master = FALSE; @@ -1426,9 +1431,9 @@ void CMemory::InitROM (bool8 Interleaved) Settings.SDD1 = FALSE; SA1ROMMap (); } - else if ((ROMSpeed & ~0x10) == 0x25) + else if ((Memory.ROMSpeed & ~0x10) == 0x25) TalesROMMap (Interleaved); - else if(ExtendedFormat!=NOPE) + else if(Memory.ExtendedFormat!=NOPE) JumboLoROMMap(Interleaved); else if (strncmp ((char *) &Memory.ROM [0x7fc0], "SOUND NOVEL-TCOOL", 17) == 0 || strncmp ((char *) &Memory.ROM [0x7fc0], "DERBY STALLION 96", 17) == 0) @@ -1452,8 +1457,8 @@ void CMemory::InitROM (bool8 Interleaved) SufamiTurboLoROMMap(); Memory.SRAMSize = 3; } - else if ((ROMSpeed & ~0x10) == 0x22 && - strncmp (ROMName, "Super Street Fighter", 20) != 0) + else if ((Memory.ROMSpeed & ~0x10) == 0x22 && + strncmp (Memory.ROMName, "Super Street Fighter", 20) != 0) { AlphaROMMap (); } @@ -1464,43 +1469,43 @@ void CMemory::InitROM (bool8 Interleaved) if(Settings.BS) { - ROMRegion=0; + Memory.ROMRegion=0; } uint32 sum1 = 0; uint32 sum2 = 0; - if(0==CalculatedChecksum) + if(0==Memory.CalculatedChecksum) { int power2 = 0; - int size = CalculatedSize; + int size = Memory.CalculatedSize; while (size >>= 1) power2++; size = 1 << power2; - uint32 remainder = CalculatedSize - size; + uint32 remainder = Memory.CalculatedSize - size; int i; for (i = 0; i < size; i++) - sum1 += ROM [i]; + sum1 += Memory.ROM [i]; for (i = 0; i < (int) remainder; i++) - sum2 += ROM [size + i]; + sum2 += Memory.ROM [size + i]; int sub = 0; - if (Settings.BS&& ROMType!=0xE5) + if (Settings.BS&& Memory.ROMType!=0xE5) { if (Memory.HiROM) { for (i = 0; i < 48; i++) - sub += ROM[0xffb0 + i]; + sub += Memory.ROM[0xffb0 + i]; } else if (Memory.LoROM) { for (i = 0; i < 48; i++) - sub += ROM[0x7fb0 + i]; + sub += Memory.ROM[0x7fb0 + i]; } sum1 -= sub; } @@ -1516,7 +1521,7 @@ void CMemory::InitROM (bool8 Interleaved) Memory.CalculatedChecksum=sum1; } //now take a CRC32 - ROMCRC32 = caCRC32(ROM, CalculatedSize); + Memory.ROMCRC32 = caCRC32(Memory.ROM, Memory.CalculatedSize, 0xFFFFFFFF); if (Settings.ForceNTSC) Settings.PAL = FALSE; @@ -1525,7 +1530,7 @@ void CMemory::InitROM (bool8 Interleaved) else { //Korea refers to South Korea, which uses NTSC - switch(ROMRegion) + switch(Memory.ROMRegion) { case 13: case 1: @@ -1547,21 +1552,21 @@ void CMemory::InitROM (bool8 Interleaved) Memory.ROMFramesPerSecond = 60; } - ROMName[ROM_NAME_LEN - 1] = 0; - if (strlen (ROMName)) + Memory.ROMName[ROM_NAME_LEN - 1] = 0; + if (strlen (Memory.ROMName)) { - char *p = ROMName + strlen (ROMName) - 1; + char *p = Memory.ROMName + strlen (Memory.ROMName) - 1; - while (p > ROMName && *(p - 1) == ' ') + while (p > Memory.ROMName && *(p - 1) == ' ') p--; *p = 0; } { - SRAMMask = Memory.SRAMSize ? + Memory.SRAMMask = Memory.SRAMSize ? ((1 << (Memory.SRAMSize + 3)) * 128) - 1 : 0; } - if((ROMChecksum + ROMComplementChecksum != 0xffff) || ROMChecksum != CalculatedChecksum || ((uint32)CalculatedSize > (uint32)(((1<<(ROMSize-7))*128)*1024))) + if((Memory.ROMChecksum + Memory.ROMComplementChecksum != 0xffff) || Memory.ROMChecksum != Memory.CalculatedChecksum || ((uint32)Memory.CalculatedSize > (uint32)(((1<<(Memory.ROMSize-7))*128)*1024))) { if(Settings.DisplayColor==0xffff || Settings.DisplayColor!=BUILD_PIXEL(31,0,0)) { @@ -1578,23 +1583,23 @@ void CMemory::InitROM (bool8 Interleaved) ResetSpeedMap(); ApplyROMFixes (); - sprintf (ROMName, "%s", Safe (ROMName)); - sprintf (ROMId, "%s", Safe (ROMId)); - sprintf (CompanyId, "%s", Safe (CompanyId)); + sprintf (Memory.ROMName, "%s", Safe (Memory.ROMName)); + sprintf (Memory.ROMId, "%s", Safe (Memory.ROMId)); + sprintf (Memory.CompanyId, "%s", Safe (Memory.CompanyId)); sprintf (String, "\"%s\" [%s] %s, %s, Type: %s, Mode: %s, TV: %s, S-RAM: %s, ROMId: %s Company: %2.2s CRC32: %08X", - ROMName, - (ROMChecksum + ROMComplementChecksum != 0xffff || - ROMChecksum != CalculatedChecksum) ? "bad checksum" : "checksum ok", + Memory.ROMName, + (Memory.ROMChecksum + Memory.ROMComplementChecksum != 0xffff || + Memory.ROMChecksum != Memory.CalculatedChecksum) ? "bad checksum" : "checksum ok", MapType (), Size (), KartContents (), MapMode (), TVStandard (), StaticRAMSize (), - ROMId, - CompanyId, - ROMCRC32); + Memory.ROMId, + Memory.CompanyId, + Memory.ROMCRC32); S9xMessage (S9X_INFO, S9X_ROM_INFO, String); #ifdef __WIN32__ @@ -1612,12 +1617,12 @@ void CMemory::InitROM (bool8 Interleaved) Settings.ForceInterleaved2=false; } -bool8 CMemory::LoadSRAM (const char *filename) +bool8 LoadSRAM (const char *filename) { int size = Memory.SRAMSize ? (1 << (Memory.SRAMSize + 3)) * 128 : 0; - memset (SRAM, SNESGameFixes.SRAMInitialValue, 0x20000); + memset (Memory.SRAM, SNESGameFixes.SRAMInitialValue, 0x20000); if (size > 0x20000) size = 0x20000; @@ -1627,13 +1632,13 @@ bool8 CMemory::LoadSRAM (const char *filename) FILE *file; if ((file = fopen (filename, "rb"))) { - int len = fread ((unsigned char*) ::SRAM, 1, 0x20000, file); + int len = fread ((unsigned char*) SRAM_g, 1, 0x20000, file); fclose (file); if (len - size == 512) { // S-RAM file has a header - remove it // memmove required: Overlapping addresses [Neb] - memmove (::SRAM, ::SRAM + 512, size); + memmove (SRAM_g, SRAM_g + 512, size); } if (len == size + SRTC_SRAM_PAD) { @@ -1661,7 +1666,7 @@ bool8 CMemory::LoadSRAM (const char *filename) return (TRUE); } -bool8 CMemory::SaveSRAM (const char *filename) +bool8 SaveSRAM (const char *filename) { if(Settings.SuperFX && Memory.ROMType < 0x15) return TRUE; @@ -1688,7 +1693,7 @@ bool8 CMemory::SaveSRAM (const char *filename) FILE *file= fopen(filename, "w"); if (file) { - fwrite((unsigned char *) ::SRAM, size, 1, file); + fwrite((unsigned char *) SRAM_g, size, 1, file); fclose(file); if(Settings.SPC7110RTC) { @@ -1701,7 +1706,7 @@ bool8 CMemory::SaveSRAM (const char *filename) return (FALSE); } -void CMemory::FixROMSpeed () +void FixROMSpeed () { int c; @@ -1712,37 +1717,38 @@ void CMemory::FixROMSpeed () for (c = 0x800; c < 0x1000; c++) { if (c&0x8 || c&0x400) - MemorySpeed [c] = (uint8) CPU.FastROMSpeed; + Memory.MemorySpeed [c] = (uint8) CPU.FastROMSpeed; } } -void CMemory::ResetSpeedMap() +void ResetSpeedMap() { int i; - memset(MemorySpeed, SLOW_ONE_CYCLE, 0x1000); + memset(Memory.MemorySpeed, SLOW_ONE_CYCLE, 0x1000); for(i=0;i<0x400;i+=0x10) { - MemorySpeed[i+2]=MemorySpeed[0x800+i+2]= ONE_CYCLE; - MemorySpeed[i+3]=MemorySpeed[0x800+i+3]= ONE_CYCLE; - MemorySpeed[i+4]=MemorySpeed[0x800+i+4]= ONE_CYCLE; - MemorySpeed[i+5]=MemorySpeed[0x800+i+5]= ONE_CYCLE; + Memory.MemorySpeed[i+2]=Memory.MemorySpeed[0x800+i+2]= ONE_CYCLE; + Memory.MemorySpeed[i+3]=Memory.MemorySpeed[0x800+i+3]= ONE_CYCLE; + Memory.MemorySpeed[i+4]=Memory.MemorySpeed[0x800+i+4]= ONE_CYCLE; + Memory.MemorySpeed[i+5]=Memory.MemorySpeed[0x800+i+5]= ONE_CYCLE; } - CMemory::FixROMSpeed (); + FixROMSpeed (); } -void CMemory::WriteProtectROM () +void WriteProtectROM () { // memmove converted: Different mallocs [Neb] - memcpy ((void *) WriteMap, (void *) Map, sizeof (Map)); - for (int c = 0; c < 0x1000; c++) + memcpy ((void *) Memory.WriteMap, (void *) Memory.Map, sizeof (Memory.Map)); + int c; + for (c = 0; c < 0x1000; c++) { - if (BlockIsROM [c]) - WriteMap [c] = (uint8 *) MAP_NONE; + if (Memory.BlockIsROM [c]) + Memory.WriteMap [c] = (uint8 *) MAP_NONE; } } -void CMemory::MapRAM () +void MapRAM () { int c; @@ -1751,11 +1757,12 @@ void CMemory::MapRAM () // Banks 70->77, S-RAM for (c = 0; c < 0x0f; c++) { - for(int i=0;i<8;i++) + int i; + for(i=0;i<8;i++) { - Map [(c<<4) + 0xF00+i]=Map [(c<<4) + 0x700+i] = (uint8 *) MAP_LOROM_SRAM; - BlockIsRAM [(c<<4) + 0xF00+i] =BlockIsRAM [(c<<4) + 0x700+i] = TRUE; - BlockIsROM [(c<<4) + 0xF00+i] =BlockIsROM [(c<<4) + 0x700+i] = FALSE; + Memory.Map [(c<<4) + 0xF00+i]=Memory.Map [(c<<4) + 0x700+i] = (uint8 *) MAP_LOROM_SRAM; + Memory.BlockIsRAM [(c<<4) + 0xF00+i] =Memory.BlockIsRAM [(c<<4) + 0x700+i] = TRUE; + Memory.BlockIsROM [(c<<4) + 0xF00+i] =Memory.BlockIsROM [(c<<4) + 0x700+i] = FALSE; } } } @@ -1764,62 +1771,63 @@ void CMemory::MapRAM () // Banks 70->77, S-RAM for (c = 0; c < 0x0f; c++) { - for(int i=0;i<8;i++) + int i; + for(i=0;i<8;i++) { - Map [(c<<4) + 0x700+i] = (uint8 *) MAP_LOROM_SRAM; - BlockIsRAM [(c<<4) + 0x700+i] = TRUE; - BlockIsROM [(c<<4) + 0x700+i] = FALSE; + Memory.Map [(c<<4) + 0x700+i] = (uint8 *) MAP_LOROM_SRAM; + Memory.BlockIsRAM [(c<<4) + 0x700+i] = TRUE; + Memory.BlockIsROM [(c<<4) + 0x700+i] = FALSE; } } } // Banks 7e->7f, RAM for (c = 0; c < 16; c++) { - Map [c + 0x7e0] = RAM; - Map [c + 0x7f0] = RAM + 0x10000; - BlockIsRAM [c + 0x7e0] = TRUE; - BlockIsRAM [c + 0x7f0] = TRUE; - BlockIsROM [c + 0x7e0] = FALSE; - BlockIsROM [c + 0x7f0] = FALSE; + Memory.Map [c + 0x7e0] = Memory.RAM; + Memory.Map [c + 0x7f0] = Memory.RAM + 0x10000; + Memory.BlockIsRAM [c + 0x7e0] = TRUE; + Memory.BlockIsRAM [c + 0x7f0] = TRUE; + Memory.BlockIsROM [c + 0x7e0] = FALSE; + Memory.BlockIsROM [c + 0x7f0] = FALSE; } WriteProtectROM (); } -void CMemory::MapExtraRAM () +void MapExtraRAM () { int c; // Banks 7e->7f, RAM for (c = 0; c < 16; c++) { - Map [c + 0x7e0] = RAM; - Map [c + 0x7f0] = RAM + 0x10000; - BlockIsRAM [c + 0x7e0] = TRUE; - BlockIsRAM [c + 0x7f0] = TRUE; - BlockIsROM [c + 0x7e0] = FALSE; - BlockIsROM [c + 0x7f0] = FALSE; + Memory.Map [c + 0x7e0] = Memory.RAM; + Memory.Map [c + 0x7f0] = Memory.RAM + 0x10000; + Memory.BlockIsRAM [c + 0x7e0] = TRUE; + Memory.BlockIsRAM [c + 0x7f0] = TRUE; + Memory.BlockIsROM [c + 0x7e0] = FALSE; + Memory.BlockIsROM [c + 0x7f0] = FALSE; } // Banks 70->73, S-RAM for (c = 0; c < 16; c++) { - Map [c + 0x700] = ::SRAM; - Map [c + 0x710] = ::SRAM + 0x8000; - Map [c + 0x720] = ::SRAM + 0x10000; - Map [c + 0x730] = ::SRAM + 0x18000; + Memory.Map [c + 0x700] = SRAM_g; + Memory.Map [c + 0x710] = SRAM_g + 0x8000; + Memory.Map [c + 0x720] = SRAM_g + 0x10000; + Memory.Map [c + 0x730] = SRAM_g + 0x18000; - BlockIsRAM [c + 0x700] = TRUE; - BlockIsROM [c + 0x700] = FALSE; - BlockIsRAM [c + 0x710] = TRUE; - BlockIsROM [c + 0x710] = FALSE; - BlockIsRAM [c + 0x720] = TRUE; - BlockIsROM [c + 0x720] = FALSE; - BlockIsRAM [c + 0x730] = TRUE; - BlockIsROM [c + 0x730] = FALSE; + Memory.BlockIsRAM [c + 0x700] = TRUE; + Memory.BlockIsROM [c + 0x700] = FALSE; + Memory.BlockIsRAM [c + 0x710] = TRUE; + Memory.BlockIsROM [c + 0x710] = FALSE; + Memory.BlockIsRAM [c + 0x720] = TRUE; + Memory.BlockIsROM [c + 0x720] = FALSE; + Memory.BlockIsRAM [c + 0x730] = TRUE; + Memory.BlockIsROM [c + 0x730] = FALSE; } } -void CMemory::LoROMMap () +void LoROMMap () { int c; int i; @@ -1828,7 +1836,7 @@ void CMemory::LoROMMap () for (j=0; j<4; j++) mask[j]=0x00ff; - mask[0]=(CalculatedSize/0x8000)-1; + mask[0]=(Memory.CalculatedSize/0x8000)-1; int x; bool foundZeros; @@ -1864,36 +1872,36 @@ void CMemory::LoROMMap () // Banks 00->3f and 80->bf for (c = 0; c < 0x400; c += 16) { - Map [c + 0] = Map [c + 0x800] = RAM; - Map [c + 1] = Map [c + 0x801] = RAM; - BlockIsRAM [c + 0] = BlockIsRAM [c + 0x800] = TRUE; - BlockIsRAM [c + 1] = BlockIsRAM [c + 0x801] = TRUE; + Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.RAM; + Memory.Map [c + 1] = Memory.Map [c + 0x801] = Memory.RAM; + Memory.BlockIsRAM [c + 0] = Memory.BlockIsRAM [c + 0x800] = TRUE; + Memory.BlockIsRAM [c + 1] = Memory.BlockIsRAM [c + 0x801] = TRUE; - Map [c + 2] = Map [c + 0x802] = (uint8 *) MAP_PPU; + Memory.Map [c + 2] = Memory.Map [c + 0x802] = (uint8 *) MAP_PPU; if(Settings.SETA==ST_018) - Map [c + 3] = Map [c + 0x803] = (uint8 *) MAP_SETA_RISC; - else Map [c + 3] = Map [c + 0x803] = (uint8 *) MAP_PPU; - Map [c + 4] = Map [c + 0x804] = (uint8 *) MAP_CPU; - Map [c + 5] = Map [c + 0x805] = (uint8 *) MAP_CPU; + Memory.Map [c + 3] = Memory.Map [c + 0x803] = (uint8 *) MAP_SETA_RISC; + else Memory.Map [c + 3] = Memory.Map [c + 0x803] = (uint8 *) MAP_PPU; + Memory.Map [c + 4] = Memory.Map [c + 0x804] = (uint8 *) MAP_CPU; + Memory.Map [c + 5] = Memory.Map [c + 0x805] = (uint8 *) MAP_CPU; if (Settings.DSP1Master) { - Map [c + 6] = Map [c + 0x806] = (uint8 *) MAP_DSP; - Map [c + 7] = Map [c + 0x807] = (uint8 *) MAP_DSP; + Memory.Map [c + 6] = Memory.Map [c + 0x806] = (uint8 *) MAP_DSP; + Memory.Map [c + 7] = Memory.Map [c + 0x807] = (uint8 *) MAP_DSP; } else if (Settings.C4) { - Map [c + 6] = Map [c + 0x806] = (uint8 *) MAP_C4; - Map [c + 7] = Map [c + 0x807] = (uint8 *) MAP_C4; + Memory.Map [c + 6] = Memory.Map [c + 0x806] = (uint8 *) MAP_C4; + Memory.Map [c + 7] = Memory.Map [c + 0x807] = (uint8 *) MAP_C4; } else if(Settings.OBC1) { - Map [c + 6] = Map [c + 0x806] = (uint8 *) MAP_OBC_RAM; - Map [c + 7] = Map [c + 0x807] = (uint8 *) MAP_OBC_RAM; + Memory.Map [c + 6] = Memory.Map [c + 0x806] = (uint8 *) MAP_OBC_RAM; + Memory.Map [c + 7] = Memory.Map [c + 0x807] = (uint8 *) MAP_OBC_RAM; } else { - Map [c + 6] = Map [c + 0x806] = (uint8 *) bytes0x2000 - 0x6000; - Map [c + 7] = Map [c + 0x807] = (uint8 *) bytes0x2000 - 0x6000; + Memory.Map [c + 6] = Memory.Map [c + 0x806] = (uint8 *) bytes0x2000 - 0x6000; + Memory.Map [c + 7] = Memory.Map [c + 0x807] = (uint8 *) bytes0x2000 - 0x6000; } for (i = c + 8; i < c + 16; i++) @@ -1905,8 +1913,8 @@ void CMemory::LoROMMap () d&=mask[e]; e--; } - Map [i] = Map [i + 0x800] = ROM + (((d)-1)*0x8000); - BlockIsROM [i] = BlockIsROM [i + 0x800] = TRUE; + Memory.Map [i] = Memory.Map [i + 0x800] = Memory.ROM + (((d)-1)*0x8000); + Memory.BlockIsROM [i] = Memory.BlockIsROM [i + 0x800] = TRUE; } } @@ -1917,8 +1925,8 @@ void CMemory::LoROMMap () { for (i = c + 8; i < c + 16; i++) { - Map [i] = Map [i + 0x800] = (uint8 *) MAP_DSP; - BlockIsROM [i] = BlockIsROM [i + 0x800] = FALSE; + Memory.Map [i] = Memory.Map [i + 0x800] = (uint8 *) MAP_DSP; + Memory.BlockIsROM [i] = Memory.BlockIsROM [i + 0x800] = FALSE; } } } @@ -1927,7 +1935,7 @@ void CMemory::LoROMMap () for (c = 0; c < 0x400; c += 16) { for (i = c; i < c + 8; i++) - Map [i + 0x400] = Map [i + 0xc00] = &ROM [(c << 11) % CalculatedSize]; + Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 11) % Memory.CalculatedSize]; for (i = c + 8; i < c + 16; i++) { @@ -1939,12 +1947,12 @@ void CMemory::LoROMMap () e--; } - Map [i + 0x400] = Map [i + 0xc00] = ROM + (((d)-1)*0x8000); + Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = Memory.ROM + (((d)-1)*0x8000); } for (i = c; i < c + 16; i++) { - BlockIsROM [i + 0x400] = BlockIsROM [i + 0xc00] = TRUE; + Memory.BlockIsROM [i + 0x400] = Memory.BlockIsROM [i + 0xc00] = TRUE; } } @@ -1952,33 +1960,33 @@ void CMemory::LoROMMap () { for (c = 0; c < 0x100; c++) { - Map [c + 0xe00] = (uint8 *) MAP_DSP; - BlockIsROM [c + 0xe00] = FALSE; + Memory.Map [c + 0xe00] = (uint8 *) MAP_DSP; + Memory.BlockIsROM [c + 0xe00] = FALSE; } } int sum=0, k,l, bankcount; - bankcount=1<<(ROMSize-7);//Mbits + bankcount=1<<(Memory.ROMSize-7);//Mbits //safety for corrupt headers if(bankcount > 128) - bankcount = (CalculatedSize/0x8000)/4; + bankcount = (Memory.CalculatedSize/0x8000)/4; bankcount*=4;//to banks bankcount<<=4;//Map banks bankcount+=0x800;//normalize for(k=0x800;k<(bankcount);k+=16) { - uint8* bank=0x8000+Map[k+8]; + uint8* bank=0x8000+Memory.Map[k+8]; for(l=0;l<0x8000;l++) sum+=bank[l]; } - CalculatedChecksum=sum&0xFFFF; + Memory.CalculatedChecksum=sum&0xFFFF; MapRAM (); WriteProtectROM (); } -void CMemory::SetaDSPMap () +void SetaDSPMap () { int c; int i; @@ -1987,7 +1995,7 @@ void CMemory::SetaDSPMap () for (j=0; j<4; j++) mask[j]=0x00ff; - mask[0]=(CalculatedSize/0x8000)-1; + mask[0]=(Memory.CalculatedSize/0x8000)-1; int x; bool foundZeros; @@ -2023,17 +2031,17 @@ void CMemory::SetaDSPMap () // Banks 00->3f and 80->bf for (c = 0; c < 0x400; c += 16) { - Map [c + 0] = Map [c + 0x800] = RAM; - Map [c + 1] = Map [c + 0x801] = RAM; - BlockIsRAM [c + 0] = BlockIsRAM [c + 0x800] = TRUE; - BlockIsRAM [c + 1] = BlockIsRAM [c + 0x801] = TRUE; + Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.RAM; + Memory.Map [c + 1] = Memory.Map [c + 0x801] = Memory.RAM; + Memory.BlockIsRAM [c + 0] = Memory.BlockIsRAM [c + 0x800] = TRUE; + Memory.BlockIsRAM [c + 1] = Memory.BlockIsRAM [c + 0x801] = TRUE; - Map [c + 2] = Map [c + 0x802] = (uint8 *) MAP_PPU; - Map [c + 3] = Map [c + 0x803] = (uint8 *) MAP_PPU; - Map [c + 4] = Map [c + 0x804] = (uint8 *) MAP_CPU; - Map [c + 5] = Map [c + 0x805] = (uint8 *) MAP_CPU; - Map [c + 6] = Map [c + 0x806] = (uint8 *) bytes0x2000 - 0x6000; - Map [c + 7] = Map [c + 0x807] = (uint8 *) bytes0x2000 - 0x6000; + Memory.Map [c + 2] = Memory.Map [c + 0x802] = (uint8 *) MAP_PPU; + Memory.Map [c + 3] = Memory.Map [c + 0x803] = (uint8 *) MAP_PPU; + Memory.Map [c + 4] = Memory.Map [c + 0x804] = (uint8 *) MAP_CPU; + Memory.Map [c + 5] = Memory.Map [c + 0x805] = (uint8 *) MAP_CPU; + Memory.Map [c + 6] = Memory.Map [c + 0x806] = (uint8 *) bytes0x2000 - 0x6000; + Memory.Map [c + 7] = Memory.Map [c + 0x807] = (uint8 *) bytes0x2000 - 0x6000; for (i = c + 8; i < c + 16; i++) { @@ -2044,8 +2052,8 @@ void CMemory::SetaDSPMap () d&=mask[e]; e--; } - Map [i] = Map [i + 0x800] = ROM + (((d)-1)*0x8000); - BlockIsROM [i] = BlockIsROM [i + 0x800] = TRUE; + Memory.Map [i] = Memory.Map [i + 0x800] = Memory.ROM + (((d)-1)*0x8000); + Memory.BlockIsROM [i] = Memory.BlockIsROM [i + 0x800] = TRUE; } } @@ -2062,99 +2070,99 @@ void CMemory::SetaDSPMap () e--; } - Map [i + 0x400] = Map [i + 0xc00] = ROM + (((d)-1)*0x8000); + Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = Memory.ROM + (((d)-1)*0x8000); } //only upper half is ROM for (i = c+8; i < c + 16; i++) { - BlockIsROM [i + 0x400] = BlockIsROM [i + 0xc00] = TRUE; + Memory.BlockIsROM [i + 0x400] = Memory.BlockIsROM [i + 0xc00] = TRUE; } } - memset(SRAM, 0, 0x1000); + memset(Memory.SRAM, 0, 0x1000); for (c=0x600;c<0x680;c+=0x10) { for(i=0;i<0x08;i++) { //where does the SETA chip access, anyway? //please confirm this? - Map[c+0x80+i]=(uint8*)MAP_SETA_DSP; - BlockIsROM [c+0x80+i] = FALSE; - BlockIsRAM [c+0x80+i] = TRUE; + Memory.Map[c+0x80+i]=(uint8*)MAP_SETA_DSP; + Memory.BlockIsROM [c+0x80+i] = FALSE; + Memory.BlockIsRAM [c+0x80+i] = TRUE; } for(i=0;i<0x04;i++) { //and this! - Map[c+i]=(uint8*)MAP_SETA_DSP; - BlockIsROM [c+i] = FALSE; + Memory.Map[c+i]=(uint8*)MAP_SETA_DSP; + Memory.BlockIsROM [c+i] = FALSE; } } int sum=0, k,l, bankcount; - bankcount=1<<(ROMSize-7);//Mbits + bankcount=1<<(Memory.ROMSize-7);//Mbits //safety for corrupt headers if(bankcount > 128) - bankcount = (CalculatedSize/0x8000)/4; + bankcount = (Memory.CalculatedSize/0x8000)/4; bankcount*=4;//to banks bankcount<<=4;//Map banks bankcount+=0x800;//normalize for(k=0x800;k<(bankcount);k+=16) { - uint8* bank=0x8000+Map[k+8]; + uint8* bank=0x8000+Memory.Map[k+8]; for(l=0;l<0x8000;l++) sum+=bank[l]; } - CalculatedChecksum=sum&0xFFFF; + Memory.CalculatedChecksum=sum&0xFFFF; MapRAM (); WriteProtectROM (); } -void CMemory::BSLoROMMap () +void BSLoROMMap () { int c; int i; if(Settings.BS) - SRAMSize=5; + Memory.SRAMSize=5; // Banks 00->3f and 80->bf for (c = 0; c < 0x400; c += 16) { - Map [c + 0] = Map [c + 0x800] = RAM; - Map [c + 1] = Map [c + 0x801] = RAM; - BlockIsRAM [c + 0] = BlockIsRAM [c + 0x800] = TRUE; - BlockIsRAM [c + 1] = BlockIsRAM [c + 0x801] = TRUE; + Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.RAM; + Memory.Map [c + 1] = Memory.Map [c + 0x801] = Memory.RAM; + Memory.BlockIsRAM [c + 0] = Memory.BlockIsRAM [c + 0x800] = TRUE; + Memory.BlockIsRAM [c + 1] = Memory.BlockIsRAM [c + 0x801] = TRUE; - Map [c + 2] = Map [c + 0x802] = (uint8 *) MAP_PPU; - Map [c + 3] = Map [c + 0x803] = (uint8 *) MAP_PPU; - Map [c + 4] = Map [c + 0x804] = (uint8 *) MAP_CPU; - Map [c + 5] = Map [c + 0x805] = (uint8 *) RAM; -// Map [c + 5] = Map [c + 0x805] = (uint8 *) SRAM; -BlockIsRAM [c + 5] = BlockIsRAM [c + 0x805] = TRUE; + Memory.Map [c + 2] = Memory.Map [c + 0x802] = (uint8 *) MAP_PPU; + Memory.Map [c + 3] = Memory.Map [c + 0x803] = (uint8 *) MAP_PPU; + Memory.Map [c + 4] = Memory.Map [c + 0x804] = (uint8 *) MAP_CPU; + Memory.Map [c + 5] = Memory.Map [c + 0x805] = (uint8 *) Memory.RAM; +// Memory.Map [c + 5] = Memory.Map [c + 0x805] = (uint8 *) Memory.SRAM; + Memory.BlockIsRAM [c + 5] = Memory.BlockIsRAM [c + 0x805] = TRUE; -// Map [c + 6] = Map [c + 0x806] = (uint8 *)MAP_NONE; -// Map [c + 7] = Map [c + 0x807] = (uint8 *)MAP_NONE; - Map [c + 6] = Map [c + 0x806] = (uint8 *) RAM; -// Map [c + 5] = Map [c + 0x805] = (uint8 *) SRAM; -BlockIsRAM [c + 6] = BlockIsRAM [c + 0x806] = TRUE; - Map [c + 7] = Map [c + 0x807] = (uint8 *) RAM; -// Map [c + 5] = Map [c + 0x805] = (uint8 *) SRAM; -BlockIsRAM [c + 7] = BlockIsRAM [c + 0x807] = TRUE; +// Memory.Map [c + 6] = Memory.Map [c + 0x806] = (uint8 *)MAP_NONE; +// Memory.Map [c + 7] = Memory.Map [c + 0x807] = (uint8 *)MAP_NONE; + Memory.Map [c + 6] = Memory.Map [c + 0x806] = (uint8 *) Memory.RAM; +// Memory.Map [c + 5] = Memory.Map [c + 0x805] = (uint8 *) SRAM; + Memory.BlockIsRAM [c + 6] = Memory.BlockIsRAM [c + 0x806] = TRUE; + Memory.Map [c + 7] = Memory.Map [c + 0x807] = (uint8 *) Memory.RAM; +// Memory.Map [c + 5] = Memory.Map [c + 0x805] = (uint8 *) Memory.SRAM; + Memory.BlockIsRAM [c + 7] = Memory.BlockIsRAM [c + 0x807] = TRUE; for (i = c + 8; i < c + 16; i++) { - Map [i] = Map [i + 0x800] = &ROM [(c << 11) % CalculatedSize] - 0x8000; - BlockIsROM [i] = BlockIsROM [i + 0x800] = TRUE; + Memory.Map [i] = Memory.Map [i + 0x800] = &Memory.ROM [(c << 11) % Memory.CalculatedSize] - 0x8000; + Memory.BlockIsROM [i] = Memory.BlockIsROM [i + 0x800] = TRUE; } } for(c=0;c<8;c++) { - Map[(c<<4)+0x105]=(uint8*)MAP_LOROM_SRAM; - BlockIsROM [(c<<4)+0x105] = FALSE; - BlockIsRAM [(c<<4)+0x105] = TRUE; + Memory.Map[(c<<4)+0x105]=(uint8*)MAP_LOROM_SRAM; + Memory.BlockIsROM [(c<<4)+0x105] = FALSE; + Memory.BlockIsRAM [(c<<4)+0x105] = TRUE; } @@ -2177,29 +2185,29 @@ BlockIsRAM [c + 7] = BlockIsRAM [c + 0x807] = TRUE; { for(i=0;i<16; i++) { - Map[0x400+i+(c<<4)]=(uint8*)MAP_LOROM_SRAM; - BlockIsRAM[0x400+i+(c<<4)]=TRUE; - BlockIsROM[0x400+i+(c<<4)]=FALSE; + Memory.Map[0x400+i+(c<<4)]=(uint8*)MAP_LOROM_SRAM; + Memory.BlockIsRAM[0x400+i+(c<<4)]=TRUE; + Memory.BlockIsROM[0x400+i+(c<<4)]=FALSE; } } for(i=0;i<0x80;i++) { - Map[0x700+i]=&BSRAM[0x10000*(i/16)]; - BlockIsRAM[0x700+i]=TRUE; - BlockIsROM[0x700+i]=FALSE; + Memory.Map[0x700+i]=&Memory.BSRAM[0x10000*(i/16)]; + Memory.BlockIsRAM[0x700+i]=TRUE; + Memory.BlockIsROM[0x700+i]=FALSE; } for (i=0; i<8;i++) { - Map[0x205+(i<<4)]=Map[0x285+(i<<4)]=Map[0x305+(i<<4)]=Map[0x385+(i<<4)]=Map[0x705+(i<<4)]; - BlockIsRAM[0x205+(i<<4)]=BlockIsRAM[0x285+(i<<4)]=BlockIsRAM[0x305+(i<<4)]=BlockIsRAM[0x385+(i<<4)]=TRUE; - BlockIsROM[0x205+(i<<4)]=BlockIsROM[0x285+(i<<4)]=BlockIsROM[0x305+(i<<4)]=BlockIsROM[0x385+(i<<4)]=FALSE; + Memory.Map[0x205+(i<<4)]=Memory.Map[0x285+(i<<4)]=Memory.Map[0x305+(i<<4)]=Memory.Map[0x385+(i<<4)]=Memory.Map[0x705+(i<<4)]; + Memory.BlockIsRAM[0x205+(i<<4)]=Memory.BlockIsRAM[0x285+(i<<4)]=Memory.BlockIsRAM[0x305+(i<<4)]=Memory.BlockIsRAM[0x385+(i<<4)]=TRUE; + Memory.BlockIsROM[0x205+(i<<4)]=Memory.BlockIsROM[0x285+(i<<4)]=Memory.BlockIsROM[0x305+(i<<4)]=Memory.BlockIsROM[0x385+(i<<4)]=FALSE; } for(c=0;c<8;c++) { - Map[(c<<4)+0x005]=BSRAM-0x5000; - BlockIsROM [(c<<4)+0x005] = FALSE; - BlockIsRAM [(c<<4)+0x005] = TRUE; + Memory.Map[(c<<4)+0x005]=Memory.BSRAM-0x5000; + Memory.BlockIsROM [(c<<4)+0x005] = FALSE; + Memory.BlockIsRAM [(c<<4)+0x005] = TRUE; } MapRAM (); WriteProtectROM (); @@ -2207,7 +2215,7 @@ BlockIsRAM [c + 7] = BlockIsRAM [c + 0x807] = TRUE; } -void CMemory::HiROMMap () +void HiROMMap () { int i; int c; @@ -2217,11 +2225,11 @@ void CMemory::HiROMMap () for (j=0; j<4; j++) mask[j]=0x00ff; - mask[0]=(CalculatedSize/0x10000)-1; + mask[0]=(Memory.CalculatedSize/0x10000)-1; if (Settings.ForceSA1 || - (!Settings.ForceNoSA1 && (ROMSpeed & ~0x10) == 0x23 && - (ROMType & 0xf) > 3 && (ROMType & 0xf0) == 0x30)) + (!Settings.ForceNoSA1 && (Memory.ROMSpeed & ~0x10) == 0x23 && + (Memory.ROMType & 0xf) > 3 && (Memory.ROMType & 0xf0) == 0x30)) { Settings.DisplayColor=BUILD_PIXEL(31,0,0); SET_UI_COLOR(255,0,0); @@ -2261,25 +2269,25 @@ void CMemory::HiROMMap () // Banks 00->3f and 80->bf for (c = 0; c < 0x400; c += 16) { - Map [c + 0] = Map [c + 0x800] = RAM; - BlockIsRAM [c + 0] = BlockIsRAM [c + 0x800] = TRUE; - Map [c + 1] = Map [c + 0x801] = RAM; - BlockIsRAM [c + 1] = BlockIsRAM [c + 0x801] = TRUE; + Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.RAM; + Memory.BlockIsRAM [c + 0] = Memory.BlockIsRAM [c + 0x800] = TRUE; + Memory.Map [c + 1] = Memory.Map [c + 0x801] = Memory.RAM; + Memory.BlockIsRAM [c + 1] = Memory.BlockIsRAM [c + 0x801] = TRUE; - Map [c + 2] = Map [c + 0x802] = (uint8 *) MAP_PPU; - Map [c + 3] = Map [c + 0x803] = (uint8 *) MAP_PPU; - Map [c + 4] = Map [c + 0x804] = (uint8 *) MAP_CPU; - Map [c + 5] = Map [c + 0x805] = (uint8 *) MAP_CPU; + Memory.Map [c + 2] = Memory.Map [c + 0x802] = (uint8 *) MAP_PPU; + Memory.Map [c + 3] = Memory.Map [c + 0x803] = (uint8 *) MAP_PPU; + Memory.Map [c + 4] = Memory.Map [c + 0x804] = (uint8 *) MAP_CPU; + Memory.Map [c + 5] = Memory.Map [c + 0x805] = (uint8 *) MAP_CPU; if (Settings.DSP1Master) { - Map [c + 6] = Map [c + 0x806] = (uint8 *) MAP_DSP; - Map [c + 7] = Map [c + 0x807] = (uint8 *) MAP_DSP; + Memory.Map [c + 6] = Memory.Map [c + 0x806] = (uint8 *) MAP_DSP; + Memory.Map [c + 7] = Memory.Map [c + 0x807] = (uint8 *) MAP_DSP; } else { - Map [c + 6] = Map [c + 0x806] = (uint8 *) MAP_NONE; - Map [c + 7] = Map [c + 0x807] = (uint8 *) MAP_NONE; + Memory.Map [c + 6] = Memory.Map [c + 0x806] = (uint8 *) MAP_NONE; + Memory.Map [c + 7] = Memory.Map [c + 0x807] = (uint8 *) MAP_NONE; } for (i = c + 8; i < c + 16; i++) @@ -2291,22 +2299,22 @@ void CMemory::HiROMMap () d&=mask[e]; e--; } - Map [i] = Map [i + 0x800] = ROM + (d*0x10000); - BlockIsROM [i] = BlockIsROM [i + 0x800] = TRUE; + Memory.Map [i] = Memory.Map [i + 0x800] = Memory.ROM + (d*0x10000); + Memory.BlockIsROM [i] = Memory.BlockIsROM [i + 0x800] = TRUE; } } // Banks 30->3f and b0->bf, address ranges 6000->7fff is S-RAM. for (c = 0; c < 16; c++) { - Map [0x306 + (c << 4)] = (uint8 *) MAP_HIROM_SRAM; - Map [0x307 + (c << 4)] = (uint8 *) MAP_HIROM_SRAM; - Map [0xb06 + (c << 4)] = (uint8 *) MAP_HIROM_SRAM; - Map [0xb07 + (c << 4)] = (uint8 *) MAP_HIROM_SRAM; - BlockIsRAM [0x306 + (c << 4)] = TRUE; - BlockIsRAM [0x307 + (c << 4)] = TRUE; - BlockIsRAM [0xb06 + (c << 4)] = TRUE; - BlockIsRAM [0xb07 + (c << 4)] = TRUE; + Memory.Map [0x306 + (c << 4)] = (uint8 *) MAP_HIROM_SRAM; + Memory.Map [0x307 + (c << 4)] = (uint8 *) MAP_HIROM_SRAM; + Memory.Map [0xb06 + (c << 4)] = (uint8 *) MAP_HIROM_SRAM; + Memory.Map [0xb07 + (c << 4)] = (uint8 *) MAP_HIROM_SRAM; + Memory.BlockIsRAM [0x306 + (c << 4)] = TRUE; + Memory.BlockIsRAM [0x307 + (c << 4)] = TRUE; + Memory.BlockIsRAM [0xb06 + (c << 4)] = TRUE; + Memory.BlockIsRAM [0xb07 + (c << 4)] = TRUE; } // Banks 40->7f and c0->ff @@ -2321,31 +2329,31 @@ void CMemory::HiROMMap () d&=mask[e]; e--; } - Map [i + 0x400] = Map [i + 0xc00] = ROM + (d*0x10000); - BlockIsROM [i + 0x400] = BlockIsROM [i + 0xc00] = TRUE; + Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = Memory.ROM + (d*0x10000); + Memory.BlockIsROM [i + 0x400] = Memory.BlockIsROM [i + 0xc00] = TRUE; } } - int bankmax=0x40+ (1<<(ROMSize-6)); + int bankmax=0x40+ (1<<(Memory.ROMSize-6)); //safety for corrupt headers if(bankmax > 128) bankmax = 0x80; int sum=0; for(i=0x40;i<bankmax; i++) { - uint8 * bank_low=(uint8*)Map[i<<4]; + uint8 * bank_low=(uint8*)Memory.Map[i<<4]; for (c=0;c<0x10000; c++) { sum+=bank_low[c]; } } - CalculatedChecksum=sum&0xFFFF; + Memory.CalculatedChecksum=sum&0xFFFF; MapRAM (); WriteProtectROM (); } -void CMemory::TalesROMMap (bool8 Interleaved) +void TalesROMMap (bool8 Interleaved) { int c; int i; @@ -2366,43 +2374,43 @@ void CMemory::TalesROMMap (bool8 Interleaved) { OFFSET0 = 0x000000; OFFSET1 = 0x000000; - OFFSET2 = CalculatedSize-0x400000; //changed to work with interleaved DKJM2. + OFFSET2 = Memory.CalculatedSize-0x400000; //changed to work with interleaved DKJM2. } // Banks 00->3f and 80->bf for (c = 0; c < 0x400; c += 16) { - Map [c + 0] = Map [c + 0x800] = RAM; - Map [c + 1] = Map [c + 0x801] = RAM; - BlockIsRAM [c + 0] = BlockIsRAM [c + 0x800] = TRUE; - BlockIsRAM [c + 1] = BlockIsRAM [c + 0x801] = TRUE; + Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.RAM; + Memory.Map [c + 1] = Memory.Map [c + 0x801] = Memory.RAM; + Memory.BlockIsRAM [c + 0] = Memory.BlockIsRAM [c + 0x800] = TRUE; + Memory.BlockIsRAM [c + 1] = Memory.BlockIsRAM [c + 0x801] = TRUE; - Map [c + 2] = Map [c + 0x802] = (uint8 *) MAP_PPU; - Map [c + 3] = Map [c + 0x803] = (uint8 *) MAP_PPU; - Map [c + 4] = Map [c + 0x804] = (uint8 *) MAP_CPU; - Map [c + 5] = Map [c + 0x805] = (uint8 *) MAP_CPU; + Memory.Map [c + 2] = Memory.Map [c + 0x802] = (uint8 *) MAP_PPU; + Memory.Map [c + 3] = Memory.Map [c + 0x803] = (uint8 *) MAP_PPU; + Memory.Map [c + 4] = Memory.Map [c + 0x804] = (uint8 *) MAP_CPU; + Memory.Map [c + 5] = Memory.Map [c + 0x805] = (uint8 *) MAP_CPU; //makes more sense to map the range here. //ToP seems to use sram to skip intro??? if(c>=0x300) { - Map [c + 6] = Map [c + 0x806] = (uint8 *) MAP_HIROM_SRAM; - Map [c + 7] = Map [c + 0x807] = (uint8 *) MAP_HIROM_SRAM; - BlockIsRAM [6 + c] = BlockIsRAM [7 + c] = - BlockIsRAM [0x806 + c]= BlockIsRAM [0x807 + c] = TRUE; + Memory.Map [c + 6] = Memory.Map [c + 0x806] = (uint8 *) MAP_HIROM_SRAM; + Memory.Map [c + 7] = Memory.Map [c + 0x807] = (uint8 *) MAP_HIROM_SRAM; + Memory.BlockIsRAM [6 + c] = Memory.BlockIsRAM [7 + c] = + Memory.BlockIsRAM [0x806 + c]= Memory.BlockIsRAM [0x807 + c] = TRUE; } else { - Map [c + 6] = Map [c + 0x806] = (uint8 *) MAP_NONE; - Map [c + 7] = Map [c + 0x807] = (uint8 *) MAP_NONE; + Memory.Map [c + 6] = Memory.Map [c + 0x806] = (uint8 *) MAP_NONE; + Memory.Map [c + 7] = Memory.Map [c + 0x807] = (uint8 *) MAP_NONE; } for (i = c + 8; i < c + 16; i++) { - Map [i] = &ROM [((c << 12) % (CalculatedSize-0x400000)) + OFFSET0]; - Map [i + 0x800] = &ROM [((c << 12) % 0x400000) + OFFSET2]; - BlockIsROM [i] = TRUE; - BlockIsROM [i + 0x800] = TRUE; + Memory.Map [i] = &Memory.ROM [((c << 12) % (Memory.CalculatedSize-0x400000)) + OFFSET0]; + Memory.Map [i + 0x800] = &Memory.ROM [((c << 12) % 0x400000) + OFFSET2]; + Memory.BlockIsROM [i] = TRUE; + Memory.BlockIsROM [i + 0x800] = TRUE; } } @@ -2411,34 +2419,34 @@ void CMemory::TalesROMMap (bool8 Interleaved) { for (i = c; i < c + 8; i++) { - Map [i + 0x400] = &ROM [((c << 12) % (CalculatedSize-0x400000)) + OFFSET1]; - Map [i + 0x408] = &ROM [((c << 12) % (CalculatedSize-0x400000)) + OFFSET1]; - Map [i + 0xc00] = &ROM [((c << 12) %0x400000)+ OFFSET2]; - Map [i + 0xc08] = &ROM [((c << 12) % 0x400000) + OFFSET2]; - BlockIsROM [i + 0x400] = TRUE; - BlockIsROM [i + 0x408] = TRUE; - BlockIsROM [i + 0xc00] = TRUE; - BlockIsROM [i + 0xc08] = TRUE; + Memory.Map [i + 0x400] = &Memory.ROM [((c << 12) % (Memory.CalculatedSize-0x400000)) + OFFSET1]; + Memory.Map [i + 0x408] = &Memory.ROM [((c << 12) % (Memory.CalculatedSize-0x400000)) + OFFSET1]; + Memory.Map [i + 0xc00] = &Memory.ROM [((c << 12) %0x400000)+ OFFSET2]; + Memory.Map [i + 0xc08] = &Memory.ROM [((c << 12) % 0x400000) + OFFSET2]; + Memory.BlockIsROM [i + 0x400] = TRUE; + Memory.BlockIsROM [i + 0x408] = TRUE; + Memory.BlockIsROM [i + 0xc00] = TRUE; + Memory.BlockIsROM [i + 0xc08] = TRUE; } } - if((strncmp("TALES",(char*)Map[8]+0xFFC0, 5)==0)) + if((strncmp("TALES",(char*)Memory.Map[8]+0xFFC0, 5)==0)) { - if(((*(Map[8]+0xFFDE))==(*(Map[0x808]+0xFFDE)))) + if(((*(Memory.Map[8]+0xFFDE))==(*(Memory.Map[0x808]+0xFFDE)))) { Settings.DisplayColor=BUILD_PIXEL(31,0,0); SET_UI_COLOR(255,0,0); } } - ROMChecksum = *(Map[8]+0xFFDE) + (*(Map[8]+0xFFDF) << 8); - ROMComplementChecksum = *(Map[8]+0xFFDC) + (*(Map[8]+0xFFDD) << 8); + Memory.ROMChecksum = *(Memory.Map[8]+0xFFDE) + (*(Memory.Map[8]+0xFFDF) << 8); + Memory.ROMComplementChecksum = *(Memory.Map[8]+0xFFDC) + (*(Memory.Map[8]+0xFFDD) << 8); int sum=0; for(i=0x40;i<0x80; i++) { - uint8 * bank_low=(uint8*)Map[i<<4]; - uint8 * bank_high=(uint8*)Map[(i<<4)+0x800]; + uint8 * bank_low=(uint8*)Memory.Map[i<<4]; + uint8 * bank_high=(uint8*)Memory.Map[(i<<4)+0x800]; for (c=0;c<0x10000; c++) { sum+=bank_low[c]; @@ -2446,13 +2454,13 @@ for(i=0x40;i<0x80; i++) } } -CalculatedChecksum=sum&0xFFFF; +Memory.CalculatedChecksum=sum&0xFFFF; MapRAM (); WriteProtectROM (); } -void CMemory::AlphaROMMap () +void AlphaROMMap () { int c; int i; @@ -2460,22 +2468,22 @@ void CMemory::AlphaROMMap () // Banks 00->3f and 80->bf for (c = 0; c < 0x400; c += 16) { - Map [c + 0] = Map [c + 0x800] = RAM; - Map [c + 1] = Map [c + 0x801] = RAM; - BlockIsRAM [c + 0] = BlockIsRAM [c + 0x800] = TRUE; - BlockIsRAM [c + 1] = BlockIsRAM [c + 0x801] = TRUE; + Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.RAM; + Memory.Map [c + 1] = Memory.Map [c + 0x801] = Memory.RAM; + Memory.BlockIsRAM [c + 0] = Memory.BlockIsRAM [c + 0x800] = TRUE; + Memory.BlockIsRAM [c + 1] = Memory.BlockIsRAM [c + 0x801] = TRUE; - Map [c + 2] = Map [c + 0x802] = (uint8 *) MAP_PPU; - Map [c + 3] = Map [c + 0x803] = (uint8 *) MAP_PPU; - Map [c + 4] = Map [c + 0x804] = (uint8 *) MAP_CPU; - Map [c + 5] = Map [c + 0x805] = (uint8 *) MAP_CPU; - Map [c + 6] = Map [c + 0x806] = (uint8 *) MAP_NONE; - Map [c + 7] = Map [c + 0x807] = (uint8 *) MAP_NONE; + Memory.Map [c + 2] = Memory.Map [c + 0x802] = (uint8 *) MAP_PPU; + Memory.Map [c + 3] = Memory.Map [c + 0x803] = (uint8 *) MAP_PPU; + Memory.Map [c + 4] = Memory.Map [c + 0x804] = (uint8 *) MAP_CPU; + Memory.Map [c + 5] = Memory.Map [c + 0x805] = (uint8 *) MAP_CPU; + Memory.Map [c + 6] = Memory.Map [c + 0x806] = (uint8 *) MAP_NONE; + Memory.Map [c + 7] = Memory.Map [c + 0x807] = (uint8 *) MAP_NONE; for (i = c + 8; i < c + 16; i++) { - Map [i] = Map [i + 0x800] = &ROM [c << 11] - 0x8000; - BlockIsROM [i] = TRUE; + Memory.Map [i] = Memory.Map [i + 0x800] = &Memory.ROM [c << 11] - 0x8000; + Memory.BlockIsROM [i] = TRUE; } } @@ -2485,9 +2493,9 @@ void CMemory::AlphaROMMap () { for (i = c; i < c + 16; i++) { - Map [i + 0x400] = &ROM [(c << 12) % CalculatedSize]; - Map [i + 0xc00] = &ROM [(c << 12) % CalculatedSize]; - BlockIsROM [i + 0x400] = BlockIsROM [i + 0xc00] = TRUE; + Memory.Map [i + 0x400] = &Memory.ROM [(c << 12) % Memory.CalculatedSize]; + Memory.Map [i + 0xc00] = &Memory.ROM [(c << 12) % Memory.CalculatedSize]; + Memory.BlockIsROM [i + 0x400] = Memory.BlockIsROM [i + 0xc00] = TRUE; } } @@ -2497,9 +2505,9 @@ void CMemory::AlphaROMMap () void DetectSuperFxRamSize() { - if(ROM[0x7FDA]==0x33) + if(Memory.ROM[0x7FDA]==0x33) { - Memory.SRAMSize=ROM[0x7FBD]; + Memory.SRAMSize=Memory.ROM[0x7FBD]; } else { @@ -2511,7 +2519,7 @@ void DetectSuperFxRamSize() } } -void CMemory::SuperFXROMMap () +void SuperFXROMMap () { int c; int i; @@ -2521,23 +2529,23 @@ void CMemory::SuperFXROMMap () // Banks 00->3f and 80->bf for (c = 0; c < 0x400; c += 16) { - Map [c + 0] = Map [c + 0x800] = RAM; - Map [c + 1] = Map [c + 0x801] = RAM; - BlockIsRAM [c + 0] = BlockIsRAM [c + 0x800] = TRUE; - BlockIsRAM [c + 1] = BlockIsRAM [c + 0x801] = TRUE; + Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.RAM; + Memory.Map [c + 1] = Memory.Map [c + 0x801] = Memory.RAM; + Memory.BlockIsRAM [c + 0] = Memory.BlockIsRAM [c + 0x800] = TRUE; + Memory.BlockIsRAM [c + 1] = Memory.BlockIsRAM [c + 0x801] = TRUE; - Map [c + 2] = Map [c + 0x802] = (uint8 *) MAP_PPU; - Map [c + 3] = Map [c + 0x803] = (uint8 *) MAP_PPU; - Map [c + 4] = Map [c + 0x804] = (uint8 *) MAP_CPU; - Map [c + 5] = Map [c + 0x805] = (uint8 *) MAP_CPU; - Map [0x006 + c] = Map [0x806 + c] = (uint8 *) ::SRAM - 0x6000; - Map [0x007 + c] = Map [0x807 + c] = (uint8 *) ::SRAM - 0x6000; - BlockIsRAM [0x006 + c] = BlockIsRAM [0x007 + c] = BlockIsRAM [0x806 + c] = BlockIsRAM [0x807 + c] = TRUE; + Memory.Map [c + 2] = Memory.Map [c + 0x802] = (uint8 *) MAP_PPU; + Memory.Map [c + 3] = Memory.Map [c + 0x803] = (uint8 *) MAP_PPU; + Memory.Map [c + 4] = Memory.Map [c + 0x804] = (uint8 *) MAP_CPU; + Memory.Map [c + 5] = Memory.Map [c + 0x805] = (uint8 *) MAP_CPU; + Memory.Map [0x006 + c] = Memory.Map [0x806 + c] = (uint8 *) SRAM_g - 0x6000; + Memory.Map [0x007 + c] = Memory.Map [0x807 + c] = (uint8 *) SRAM_g - 0x6000; + Memory.BlockIsRAM [0x006 + c] = Memory.BlockIsRAM [0x007 + c] = Memory.BlockIsRAM [0x806 + c] = Memory.BlockIsRAM [0x807 + c] = TRUE; for (i = c + 8; i < c + 16; i++) { - Map [i] = Map [i + 0x800] = &ROM [c << 11] - 0x8000; - BlockIsROM [i] = BlockIsROM [i + 0x800] = TRUE; + Memory.Map [i] = Memory.Map [i + 0x800] = &Memory.ROM [c << 11] - 0x8000; + Memory.BlockIsROM [i] = Memory.BlockIsROM [i + 0x800] = TRUE; } } @@ -2546,28 +2554,28 @@ void CMemory::SuperFXROMMap () { for (i = c; i < c + 16; i++) { - Map [i + 0x400] = Map [i + 0xc00] = &ROM [(c << 12) % CalculatedSize]; - BlockIsROM [i + 0x400] = BlockIsROM [i + 0xc00] = TRUE; + Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 12) % Memory.CalculatedSize]; + Memory.BlockIsROM [i + 0x400] = Memory.BlockIsROM [i + 0xc00] = TRUE; } } // Banks 7e->7f, RAM for (c = 0; c < 16; c++) { - Map [c + 0x7e0] = RAM; - Map [c + 0x7f0] = RAM + 0x10000; - BlockIsRAM [c + 0x7e0] = TRUE; - BlockIsRAM [c + 0x7f0] = TRUE; - BlockIsROM [c + 0x7e0] = FALSE; - BlockIsROM [c + 0x7f0] = FALSE; + Memory.Map [c + 0x7e0] = Memory.RAM; + Memory.Map [c + 0x7f0] = Memory.RAM + 0x10000; + Memory.BlockIsRAM [c + 0x7e0] = TRUE; + Memory.BlockIsRAM [c + 0x7f0] = TRUE; + Memory.BlockIsROM [c + 0x7e0] = FALSE; + Memory.BlockIsROM [c + 0x7f0] = FALSE; } // Banks 70->71, S-RAM for (c = 0; c < 32; c++) { - Map [c + 0x700] = ::SRAM + (((c >> 4) & 1) << 16); - BlockIsRAM [c + 0x700] = TRUE; - BlockIsROM [c + 0x700] = FALSE; + Memory.Map [c + 0x700] = SRAM_g + (((c >> 4) & 1) << 16); + Memory.BlockIsRAM [c + 0x700] = TRUE; + Memory.BlockIsROM [c + 0x700] = FALSE; } // Replicate the first 2Mb of the ROM at ROM + 2MB such that each 32K @@ -2586,16 +2594,16 @@ void CMemory::SuperFXROMMap () ds2_DMA_stop(3); #else // memmove converted: Different addresses [Neb] - memcpy (&ROM [0x200000 + c * 0x10000], &ROM [c * 0x8000], 0x8000); + memcpy (&Memory.ROM [0x200000 + c * 0x10000], &Memory.ROM [c * 0x8000], 0x8000); // memmove converted: Different addresses [Neb] - memcpy (&ROM [0x208000 + c * 0x10000], &ROM [c * 0x8000], 0x8000); + memcpy (&Memory.ROM [0x208000 + c * 0x10000], &Memory.ROM [c * 0x8000], 0x8000); #endif } WriteProtectROM (); } -void CMemory::SA1ROMMap () +void SA1ROMMap () { int c; int i; @@ -2603,21 +2611,21 @@ void CMemory::SA1ROMMap () // Banks 00->3f and 80->bf for (c = 0; c < 0x400; c += 16) { - Map [c + 0] = Map [c + 0x800] = RAM; - Map [c + 1] = Map [c + 0x801] = RAM; - BlockIsRAM [c + 0] = BlockIsRAM [c + 0x800] = TRUE; - BlockIsRAM [c + 1] = BlockIsRAM [c + 0x801] = TRUE; + Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.RAM; + Memory.Map [c + 1] = Memory.Map [c + 0x801] = Memory.RAM; + Memory.BlockIsRAM [c + 0] = Memory.BlockIsRAM [c + 0x800] = TRUE; + Memory.BlockIsRAM [c + 1] = Memory.BlockIsRAM [c + 0x801] = TRUE; - Map [c + 2] = Map [c + 0x802] = (uint8 *) MAP_PPU; - Map [c + 3] = Map [c + 0x803] = (uint8 *) &Memory.FillRAM [0x3000] - 0x3000; - Map [c + 4] = Map [c + 0x804] = (uint8 *) MAP_CPU; - Map [c + 5] = Map [c + 0x805] = (uint8 *) MAP_CPU; - Map [c + 6] = Map [c + 0x806] = (uint8 *) MAP_BWRAM; - Map [c + 7] = Map [c + 0x807] = (uint8 *) MAP_BWRAM; + Memory.Map [c + 2] = Memory.Map [c + 0x802] = (uint8 *) MAP_PPU; + Memory.Map [c + 3] = Memory.Map [c + 0x803] = (uint8 *) &Memory.FillRAM [0x3000] - 0x3000; + Memory.Map [c + 4] = Memory.Map [c + 0x804] = (uint8 *) MAP_CPU; + Memory.Map [c + 5] = Memory.Map [c + 0x805] = (uint8 *) MAP_CPU; + Memory.Map [c + 6] = Memory.Map [c + 0x806] = (uint8 *) MAP_BWRAM; + Memory.Map [c + 7] = Memory.Map [c + 0x807] = (uint8 *) MAP_BWRAM; for (i = c + 8; i < c + 16; i++) { - Map [i] = Map [i + 0x800] = &ROM [c << 11] - 0x8000; - BlockIsROM [i] = BlockIsROM [i + 0x800] = TRUE; + Memory.Map [i] = Memory.Map [i + 0x800] = &Memory.ROM [c << 11] - 0x8000; + Memory.BlockIsROM [i] = Memory.BlockIsROM [i + 0x800] = TRUE; } } @@ -2625,11 +2633,11 @@ void CMemory::SA1ROMMap () for (c = 0; c < 0x400; c += 16) { for (i = c; i < c + 16; i++) - Map [i + 0x400] = (uint8 *) &SRAM [(c << 12) & 0x1ffff]; + Memory.Map [i + 0x400] = (uint8 *) &Memory.SRAM [(c << 12) & 0x1ffff]; for (i = c; i < c + 16; i++) { - BlockIsROM [i + 0x400] = FALSE; + Memory.BlockIsROM [i + 0x400] = FALSE; } } @@ -2638,27 +2646,27 @@ void CMemory::SA1ROMMap () { for (i = c; i < c + 16; i++) { - Map [i + 0xc00] = &ROM [(c << 12) % CalculatedSize]; - BlockIsROM [i + 0xc00] = TRUE; + Memory.Map [i + 0xc00] = &Memory.ROM [(c << 12) % Memory.CalculatedSize]; + Memory.BlockIsROM [i + 0xc00] = TRUE; } } for (c = 0; c < 16; c++) { - Map [c + 0x7e0] = RAM; - Map [c + 0x7f0] = RAM + 0x10000; - BlockIsRAM [c + 0x7e0] = TRUE; - BlockIsRAM [c + 0x7f0] = TRUE; - BlockIsROM [c + 0x7e0] = FALSE; - BlockIsROM [c + 0x7f0] = FALSE; + Memory.Map [c + 0x7e0] = Memory.RAM; + Memory.Map [c + 0x7f0] = Memory.RAM + 0x10000; + Memory.BlockIsRAM [c + 0x7e0] = TRUE; + Memory.BlockIsRAM [c + 0x7f0] = TRUE; + Memory.BlockIsROM [c + 0x7e0] = FALSE; + Memory.BlockIsROM [c + 0x7f0] = FALSE; } WriteProtectROM (); // Now copy the map and correct it for the SA1 CPU. // memmove converted: Different mallocs [Neb] - memcpy ((void *) SA1.WriteMap, (void *) WriteMap, sizeof (WriteMap)); + memcpy ((void *) SA1.WriteMap, (void *) Memory.WriteMap, sizeof (Memory.WriteMap)); // memmove converted: Different mallocs [Neb] - memcpy ((void *) SA1.Map, (void *) Map, sizeof (Map)); + memcpy ((void *) SA1.Map, (void *) Memory.Map, sizeof (Memory.Map)); // Banks 00->3f and 80->bf for (c = 0; c < 0x400; c += 16) @@ -2673,10 +2681,10 @@ void CMemory::SA1ROMMap () for (c = 0; c < 0x100; c++) SA1.Map [c + 0x600] = SA1.WriteMap [c + 0x600] = (uint8 *) MAP_BWRAM_BITMAP; - BWRAM = SRAM; + Memory.BWRAM = Memory.SRAM; } -void CMemory::LoROM24MBSMap () +void LoROM24MBSMap () { int c; int i; @@ -2684,44 +2692,44 @@ void CMemory::LoROM24MBSMap () // Banks 00->3f and 80->bf for (c = 0; c < 0x400; c += 16) { - Map [c + 0] = Map [c + 0x800] = RAM; - Map [c + 1] = Map [c + 0x801] = RAM; - BlockIsRAM [c + 0] = BlockIsRAM [c + 0x800] = TRUE; - BlockIsRAM [c + 1] = BlockIsRAM [c + 0x801] = TRUE; + Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.RAM; + Memory.Map [c + 1] = Memory.Map [c + 0x801] = Memory.RAM; + Memory.BlockIsRAM [c + 0] = Memory.BlockIsRAM [c + 0x800] = TRUE; + Memory.BlockIsRAM [c + 1] = Memory.BlockIsRAM [c + 0x801] = TRUE; - Map [c + 2] = Map [c + 0x802] = (uint8 *) MAP_PPU; - Map [c + 3] = Map [c + 0x803] = (uint8 *) MAP_PPU; - Map [c + 4] = Map [c + 0x804] = (uint8 *) MAP_CPU; - Map [c + 5] = Map [c + 0x805] = (uint8 *) MAP_CPU; - Map [c + 6] = Map [c + 0x806] = (uint8 *) MAP_NONE; - Map [c + 7] = Map [c + 0x807] = (uint8 *) MAP_NONE; + Memory.Map [c + 2] = Memory.Map [c + 0x802] = (uint8 *) MAP_PPU; + Memory.Map [c + 3] = Memory.Map [c + 0x803] = (uint8 *) MAP_PPU; + Memory.Map [c + 4] = Memory.Map [c + 0x804] = (uint8 *) MAP_CPU; + Memory.Map [c + 5] = Memory.Map [c + 0x805] = (uint8 *) MAP_CPU; + Memory.Map [c + 6] = Memory.Map [c + 0x806] = (uint8 *) MAP_NONE; + Memory.Map [c + 7] = Memory.Map [c + 0x807] = (uint8 *) MAP_NONE; for (i = c + 8; i < c + 16; i++) { - Map [i] = Map [i + 0x800] = &ROM [c << 11] - 0x8000; - BlockIsROM [i] = BlockIsROM [i + 0x800] = TRUE; + Memory.Map [i] = Memory.Map [i + 0x800] = &Memory.ROM [c << 11] - 0x8000; + Memory.BlockIsROM [i] = Memory.BlockIsROM [i + 0x800] = TRUE; } } // Banks 00->3f and 80->bf for (c = 0; c < 0x200; c += 16) { - Map [c + 0x800] = RAM; - Map [c + 0x801] = RAM; - BlockIsRAM [c + 0x800] = TRUE; - BlockIsRAM [c + 0x801] = TRUE; + Memory.Map [c + 0x800] = Memory.RAM; + Memory.Map [c + 0x801] = Memory.RAM; + Memory.BlockIsRAM [c + 0x800] = TRUE; + Memory.BlockIsRAM [c + 0x801] = TRUE; - Map [c + 0x802] = (uint8 *) MAP_PPU; - Map [c + 0x803] = (uint8 *) MAP_PPU; - Map [c + 0x804] = (uint8 *) MAP_CPU; - Map [c + 0x805] = (uint8 *) MAP_CPU; - Map [c + 0x806] = (uint8 *) MAP_NONE; - Map [c + 0x807] = (uint8 *) MAP_NONE; + Memory.Map [c + 0x802] = (uint8 *) MAP_PPU; + Memory.Map [c + 0x803] = (uint8 *) MAP_PPU; + Memory.Map [c + 0x804] = (uint8 *) MAP_CPU; + Memory.Map [c + 0x805] = (uint8 *) MAP_CPU; + Memory.Map [c + 0x806] = (uint8 *) MAP_NONE; + Memory.Map [c + 0x807] = (uint8 *) MAP_NONE; for (i = c + 8; i < c + 16; i++) { - Map [i + 0x800] = &ROM [c << 11] - 0x8000 + 0x200000; - BlockIsROM [i + 0x800] = TRUE; + Memory.Map [i + 0x800] = &Memory.ROM [c << 11] - 0x8000 + 0x200000; + Memory.BlockIsROM [i + 0x800] = TRUE; } } @@ -2729,14 +2737,14 @@ void CMemory::LoROM24MBSMap () for (c = 0; c < 0x400; c += 16) { for (i = c; i < c + 8; i++) - Map [i + 0x400] = Map [i + 0xc00] = &ROM [(c << 11) + 0x200000]; + Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 11) + 0x200000]; for (i = c + 8; i < c + 16; i++) - Map [i + 0x400] = Map [i + 0xc00] = &ROM [(c << 11) + 0x200000 - 0x8000]; + Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 11) + 0x200000 - 0x8000]; for (i = c; i < c + 16; i++) { - BlockIsROM [i + 0x400] = BlockIsROM [i + 0xc00] = TRUE; + Memory.BlockIsROM [i + 0x400] = Memory.BlockIsROM [i + 0xc00] = TRUE; } } @@ -2744,7 +2752,7 @@ void CMemory::LoROM24MBSMap () WriteProtectROM (); } -void CMemory::SufamiTurboLoROMMap () +void SufamiTurboLoROMMap () { int c; int i; @@ -2752,21 +2760,21 @@ void CMemory::SufamiTurboLoROMMap () // Banks 00->3f and 80->bf for (c = 0; c < 0x400; c += 16) { - Map [c + 0] = Map [c + 0x800] = RAM; - Map [c + 1] = Map [c + 0x801] = RAM; - BlockIsRAM [c + 0] = BlockIsRAM [c + 0x800] = TRUE; - BlockIsRAM [c + 1] = BlockIsRAM [c + 0x801] = TRUE; + Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.RAM; + Memory.Map [c + 1] = Memory.Map [c + 0x801] = Memory.RAM; + Memory.BlockIsRAM [c + 0] = Memory.BlockIsRAM [c + 0x800] = TRUE; + Memory.BlockIsRAM [c + 1] = Memory.BlockIsRAM [c + 0x801] = TRUE; - Map [c + 2] = Map [c + 0x802] = (uint8 *) MAP_PPU; - Map [c + 3] = Map [c + 0x803] = (uint8 *) MAP_PPU; - Map [c + 4] = Map [c + 0x804] = (uint8 *) MAP_CPU; - Map [c + 5] = Map [c + 0x805] = (uint8 *) MAP_CPU; - Map [c + 6] = Map [c + 0x806] = (uint8 *) MAP_NONE; - Map [c + 7] = Map [c + 0x807] = (uint8 *) MAP_NONE; + Memory.Map [c + 2] = Memory.Map [c + 0x802] = (uint8 *) MAP_PPU; + Memory.Map [c + 3] = Memory.Map [c + 0x803] = (uint8 *) MAP_PPU; + Memory.Map [c + 4] = Memory.Map [c + 0x804] = (uint8 *) MAP_CPU; + Memory.Map [c + 5] = Memory.Map [c + 0x805] = (uint8 *) MAP_CPU; + Memory.Map [c + 6] = Memory.Map [c + 0x806] = (uint8 *) MAP_NONE; + Memory.Map [c + 7] = Memory.Map [c + 0x807] = (uint8 *) MAP_NONE; for (i = c + 8; i < c + 16; i++) { - Map [i] = Map [i + 0x800] = &ROM [c << 11] - 0x8000; - BlockIsROM [i] = BlockIsROM [i + 0x800] = TRUE; + Memory.Map [i] = Memory.Map [i + 0x800] = &Memory.ROM [c << 11] - 0x8000; + Memory.BlockIsROM [i] = Memory.BlockIsROM [i + 0x800] = TRUE; } } @@ -2774,14 +2782,14 @@ void CMemory::SufamiTurboLoROMMap () for (c = 0; c < 0x400; c += 16) { for (i = c; i < c + 8; i++) - Map [i + 0x400] = Map [i + 0xc00] = &ROM [(c << 11) + 0x200000]; + Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 11) + 0x200000]; for (i = c + 8; i < c + 16; i++) - Map [i + 0x400] = Map [i + 0xc00] = &ROM [(c << 11) + 0x200000 - 0x8000]; + Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 11) + 0x200000 - 0x8000]; for (i = c; i < c + 16; i++) { - BlockIsROM [i + 0x400] = BlockIsROM [i + 0xc00] = TRUE; + Memory.BlockIsROM [i + 0x400] = Memory.BlockIsROM [i + 0xc00] = TRUE; } } @@ -2789,28 +2797,28 @@ void CMemory::SufamiTurboLoROMMap () { for (c = 0; c < 0x100; c++) { - Map [c + 0xe00] = (uint8 *) MAP_DSP; - BlockIsROM [c + 0xe00] = FALSE; + Memory.Map [c + 0xe00] = (uint8 *) MAP_DSP; + Memory.BlockIsROM [c + 0xe00] = FALSE; } } // Banks 7e->7f, RAM for (c = 0; c < 16; c++) { - Map [c + 0x7e0] = RAM; - Map [c + 0x7f0] = RAM + 0x10000; - BlockIsRAM [c + 0x7e0] = TRUE; - BlockIsRAM [c + 0x7f0] = TRUE; - BlockIsROM [c + 0x7e0] = FALSE; - BlockIsROM [c + 0x7f0] = FALSE; + Memory.Map [c + 0x7e0] = Memory.RAM; + Memory.Map [c + 0x7f0] = Memory.RAM + 0x10000; + Memory.BlockIsRAM [c + 0x7e0] = TRUE; + Memory.BlockIsRAM [c + 0x7f0] = TRUE; + Memory.BlockIsROM [c + 0x7e0] = FALSE; + Memory.BlockIsROM [c + 0x7f0] = FALSE; } // Banks 60->67, S-RAM for (c = 0; c < 0x80; c++) { - Map [c + 0x600] = (uint8 *) MAP_LOROM_SRAM; - BlockIsRAM [c + 0x600] = TRUE; - BlockIsROM [c + 0x600] = FALSE; + Memory.Map [c + 0x600] = (uint8 *) MAP_LOROM_SRAM; + Memory.BlockIsRAM [c + 0x600] = TRUE; + Memory.BlockIsROM [c + 0x600] = FALSE; } WriteProtectROM (); @@ -2819,7 +2827,7 @@ void CMemory::SufamiTurboLoROMMap () #if 0 //untested!! -void CMemory::SameGameMap () +void SameGameMap () { int i; int c; @@ -2893,31 +2901,31 @@ void CMemory::SameGameMap () // Banks 00->3f and 80->bf for (c = 0; c < 0x400; c += 16) { - Map [c + 0] = Map [c + 0x800] = RAM; - BlockIsRAM [c + 0] = BlockIsRAM [c + 0x800] = TRUE; - Map [c + 1] = Map [c + 0x801] = RAM; - BlockIsRAM [c + 1] = BlockIsRAM [c + 0x801] = TRUE; + Memory.Map [c + 0] = Memory.Map [c + 0x800] = RAM; + Memory.BlockIsRAM [c + 0] = Memory.BlockIsRAM [c + 0x800] = TRUE; + Memory.Map [c + 1] = Memory.Map [c + 0x801] = RAM; + Memory.BlockIsRAM [c + 1] = Memory.BlockIsRAM [c + 0x801] = TRUE; - Map [c + 2] = Map [c + 0x802] = (uint8 *) MAP_PPU; - Map [c + 3] = Map [c + 0x803] = (uint8 *) MAP_PPU; - Map [c + 4] = Map [c + 0x804] = (uint8 *) MAP_CPU; - Map [c + 5] = Map [c + 0x805] = (uint8 *) MAP_CPU; + Memory.Map [c + 2] = Memory.Map [c + 0x802] = (uint8 *) MAP_PPU; + Memory.Map [c + 3] = Memory.Map [c + 0x803] = (uint8 *) MAP_PPU; + Memory.Map [c + 4] = Memory.Map [c + 0x804] = (uint8 *) MAP_CPU; + Memory.Map [c + 5] = Memory.Map [c + 0x805] = (uint8 *) MAP_CPU; - Map [c + 6] = Map [c + 0x806] = (uint8 *) MAP_NONE; - Map [c + 7] = Map [c + 0x807] = (uint8 *) MAP_NONE; + Memory.Map [c + 6] = Memory.Map [c + 0x806] = (uint8 *) MAP_NONE; + Memory.Map [c + 7] = Memory.Map [c + 0x807] = (uint8 *) MAP_NONE; } // Banks 30->3f and b0->bf, address ranges 6000->7fff is S-RAM. for (c = 0; c < 16; c++) { - Map [0x306 + (c << 4)] = (uint8 *) MAP_HIROM_SRAM; - Map [0x307 + (c << 4)] = (uint8 *) MAP_HIROM_SRAM; - Map [0xb06 + (c << 4)] = (uint8 *) MAP_HIROM_SRAM; - Map [0xb07 + (c << 4)] = (uint8 *) MAP_HIROM_SRAM; - BlockIsRAM [0x306 + (c << 4)] = TRUE; - BlockIsRAM [0x307 + (c << 4)] = TRUE; - BlockIsRAM [0xb06 + (c << 4)] = TRUE; - BlockIsRAM [0xb07 + (c << 4)] = TRUE; + Memory.Map [0x306 + (c << 4)] = (uint8 *) MAP_HIROM_SRAM; + Memory.Map [0x307 + (c << 4)] = (uint8 *) MAP_HIROM_SRAM; + Memory.Map [0xb06 + (c << 4)] = (uint8 *) MAP_HIROM_SRAM; + Memory.Map [0xb07 + (c << 4)] = (uint8 *) MAP_HIROM_SRAM; + Memory.BlockIsRAM [0x306 + (c << 4)] = TRUE; + Memory.BlockIsRAM [0x307 + (c << 4)] = TRUE; + Memory.BlockIsRAM [0xb06 + (c << 4)] = TRUE; + Memory.BlockIsRAM [0xb07 + (c << 4)] = TRUE; } for c=0; c<0x200; c+=16) @@ -2941,11 +2949,11 @@ void CMemory::SameGameMap () } //stuff in HiROM areas - Map[c+0x400+i]=&ROM[d*0x10000]; - Map[c+0xC00+i]=&ROM[d*0x10000]; + Memory.Map[c+0x400+i]=&ROM[d*0x10000]; + Memory.Map[c+0xC00+i]=&ROM[d*0x10000]; //MINI - Map[c+0x600+i]=&ROMOffset1[g*0x10000]; - Map[c+0xE00+i]=&ROMOffset1[g*0x10000]; + Memory.Map[c+0x600+i]=&ROMOffset1[g*0x10000]; + Memory.Map[c+0xE00+i]=&ROMOffset1[g*0x10000]; } for(i=8;i<16;i++) @@ -2969,15 +2977,15 @@ void CMemory::SameGameMap () //all stuff //BASE - Map[c+i]=&ROM[d*0x10000]; - Map[c+0x800+i]=&ROM[d*0x10000]; - Map[c+0x400+i]=&ROM[d*0x10000]; - Map[c+0xC00+i]=&ROM[d*0x10000]; + Memory.Map[c+i]=&ROM[d*0x10000]; + Memory.Map[c+0x800+i]=&ROM[d*0x10000]; + Memory.Map[c+0x400+i]=&ROM[d*0x10000]; + Memory.Map[c+0xC00+i]=&ROM[d*0x10000]; //MINI - Map[c+0x200+i]=&ROMOffset1[g*0x10000]; - Map[c+0xA00+i]=&ROMOffset1[g*0x10000]; - Map[c+0x600+i]=&ROMOffset1[g*0x10000]; - Map[c+0xE00+i]=&ROMOffset1[g*0x10000]; + Memory.Map[c+0x200+i]=&ROMOffset1[g*0x10000]; + Memory.Map[c+0xA00+i]=&ROMOffset1[g*0x10000]; + Memory.Map[c+0x600+i]=&ROMOffset1[g*0x10000]; + Memory.Map[c+0xE00+i]=&ROMOffset1[g*0x10000]; } } @@ -2989,7 +2997,7 @@ void CMemory::SameGameMap () int sum=0; for(i=0x40;i<bankmax; i++) { - uint8 * bank_low=(uint8*)Map[i<<4]; + uint8 * bank_low=(uint8*)Memory.Map[i<<4]; for (c=0;c<0x10000; c++) { sum+=bank_low[c]; @@ -3003,7 +3011,7 @@ void CMemory::SameGameMap () //Untested!! -void CMemory::GNextROMMap () +void GNextROMMap () { int c; int i; @@ -3011,20 +3019,20 @@ void CMemory::GNextROMMap () // Banks 00->3f and 80->bf for (c = 0; c < 0x400; c += 16) { - Map [c + 0] = Map [c + 0x800] = RAM; - Map [c + 1] = Map [c + 0x801] = RAM; - BlockIsRAM [c + 0] = BlockIsRAM [c + 0x800] = TRUE; - BlockIsRAM [c + 1] = BlockIsRAM [c + 0x801] = TRUE; + Memory.Map [c + 0] = Memory.Map [c + 0x800] = RAM; + Memory.Map [c + 1] = Memory.Map [c + 0x801] = RAM; + Memory.BlockIsRAM [c + 0] = Memory.BlockIsRAM [c + 0x800] = TRUE; + Memory.BlockIsRAM [c + 1] = Memory.BlockIsRAM [c + 0x801] = TRUE; - Map [c + 2] = Map [c + 0x802] = (uint8 *) MAP_PPU; - Map [c + 3] = Map [c + 0x803] = (uint8 *) &Memory.FillRAM [0x3000] - 0x3000; - Map [c + 4] = Map [c + 0x804] = (uint8 *) MAP_CPU; - Map [c + 5] = Map [c + 0x805] = (uint8 *) MAP_CPU; - Map [c + 6] = Map [c + 0x806] = (uint8 *) MAP_BWRAM; - Map [c + 7] = Map [c + 0x807] = (uint8 *) MAP_BWRAM; + Memory.Map [c + 2] = Memory.Map [c + 0x802] = (uint8 *) MAP_PPU; + Memory.Map [c + 3] = Memory.Map [c + 0x803] = (uint8 *) &Memory.FillRAM [0x3000] - 0x3000; + Memory.Map [c + 4] = Memory.Map [c + 0x804] = (uint8 *) MAP_CPU; + Memory.Map [c + 5] = Memory.Map [c + 0x805] = (uint8 *) MAP_CPU; + Memory.Map [c + 6] = Memory.Map [c + 0x806] = (uint8 *) MAP_BWRAM; + Memory.Map [c + 7] = Memory.Map [c + 0x807] = (uint8 *) MAP_BWRAM; for (i = c + 8; i < c + 16; i++) { - Map [i] = Map [i + 0x800] = &ROM [c << 11] - 0x8000; + Memory.Map [i] = Memory.Map [i + 0x800] = &ROM [c << 11] - 0x8000; BlockIsROM [i] = BlockIsROM [i + 0x800] = TRUE; } } @@ -3034,7 +3042,7 @@ void CMemory::GNextROMMap () for (c = 0; c < 0x100; c += 16) { for (i = c; i < c + 16; i++) - Map [i + 0x400] = (uint8 *) &SRAM [(c << 12) & 0x1ffff]; + Memory.Map [i + 0x400] = (uint8 *) &SRAM [(c << 12) & 0x1ffff]; for (i = c; i < c + 16; i++) { @@ -3045,7 +3053,7 @@ void CMemory::GNextROMMap () for (c = 0; c < 0x100; c += 16) { for (i = c; i < c + 16; i++) - Map [i + 0x700] = (uint8 *) &ROMOffset1 [(c << 12) & (Slot1Size-1)]; + Memory.Map [i + 0x700] = (uint8 *) &ROMOffset1 [(c << 12) & (Slot1Size-1)]; } // c0->ff @@ -3053,17 +3061,17 @@ void CMemory::GNextROMMap () { for (i = c; i < c + 16; i++) { - Map [i + 0xc00] = &ROM [(c << 12) % CalculatedSize]; + Memory.Map [i + 0xc00] = &ROM [(c << 12) % CalculatedSize]; BlockIsROM [i + 0xc00] = TRUE; } } for (c = 0; c < 16; c++) { - Map [c + 0x7e0] = RAM; - Map [c + 0x7f0] = RAM + 0x10000; - BlockIsRAM [c + 0x7e0] = TRUE; - BlockIsRAM [c + 0x7f0] = TRUE; + Memory.Map [c + 0x7e0] = RAM; + Memory.Map [c + 0x7f0] = RAM + 0x10000; + Memory.BlockIsRAM [c + 0x7e0] = TRUE; + Memory.BlockIsRAM [c + 0x7f0] = TRUE; BlockIsROM [c + 0x7e0] = FALSE; BlockIsROM [c + 0x7f0] = FALSE; } @@ -3073,7 +3081,7 @@ void CMemory::GNextROMMap () // memmove converted: Different mallocs [Neb] memcpy ((void *) SA1.WriteMap, (void *) WriteMap, sizeof (WriteMap)); // memmove converted: Different mallocs [Neb] - memcpy ((void *) SA1.Map, (void *) Map, sizeof (Map)); + memcpy ((void *) SA1.Map, (void *) Memory.Map, sizeof (Memory.Map)); // Banks 00->3f and 80->bf for (c = 0; c < 0x400; c += 16) @@ -3091,7 +3099,7 @@ void CMemory::GNextROMMap () BWRAM = SRAM; } -void CMemory::SufamiTurboAltROMMap () +void SufamiTurboAltROMMap () { int c; int i; @@ -3106,21 +3114,21 @@ else Slot2Size=0x8000; // Banks 00->3f and 80->bf for (c = 0; c < 0x400; c += 16) { - Map [c + 0] = Map [c + 0x800] = RAM; - Map [c + 1] = Map [c + 0x801] = RAM; - BlockIsRAM [c + 0] = BlockIsRAM [c + 0x800] = TRUE; - BlockIsRAM [c + 1] = BlockIsRAM [c + 0x801] = TRUE; + Memory.Map [c + 0] = Memory.Map [c + 0x800] = RAM; + Memory.Map [c + 1] = Memory.Map [c + 0x801] = RAM; + Memory.BlockIsRAM [c + 0] = Memory.BlockIsRAM [c + 0x800] = TRUE; + Memory.BlockIsRAM [c + 1] = Memory.BlockIsRAM [c + 0x801] = TRUE; - Map [c + 2] = Map [c + 0x802] = (uint8 *) MAP_PPU; - Map [c + 3] = Map [c + 0x803] = (uint8 *) MAP_PPU; - Map [c + 4] = Map [c + 0x804] = (uint8 *) MAP_CPU; - Map [c + 5] = Map [c + 0x805] = (uint8 *) MAP_CPU; - Map [c + 6] = Map [c + 0x806] = (uint8 *) MAP_NONE; - Map [c + 7] = Map [c + 0x807] = (uint8 *) MAP_NONE; + Memory.Map [c + 2] = Memory.Map [c + 0x802] = (uint8 *) MAP_PPU; + Memory.Map [c + 3] = Memory.Map [c + 0x803] = (uint8 *) MAP_PPU; + Memory.Map [c + 4] = Memory.Map [c + 0x804] = (uint8 *) MAP_CPU; + Memory.Map [c + 5] = Memory.Map [c + 0x805] = (uint8 *) MAP_CPU; + Memory.Map [c + 6] = Memory.Map [c + 0x806] = (uint8 *) MAP_NONE; + Memory.Map [c + 7] = Memory.Map [c + 0x807] = (uint8 *) MAP_NONE; // for (i = c + 8; i < c + 16; i++) // { -// Map [i] = Map [i + 0x800] = &ROM [c << 11] - 0x8000; +// Memory.Map [i] = Memory.Map [i + 0x800] = &ROM [c << 11] - 0x8000; // BlockIsROM [i] = BlockIsROM [i + 0x800] = TRUE; // } @@ -3132,7 +3140,7 @@ else Slot2Size=0x8000; { for (i = c + 8; i < c + 16; i++) { - Map [i] = Map [i + 0x800] = &ROM [((c>>4)*0x8000)%CalculatedSize] - 0x8000; + Memory.Map [i] = Memory.Map [i + 0x800] = &ROM [((c>>4)*0x8000)%CalculatedSize] - 0x8000; BlockIsROM [i] = BlockIsROM [i + 0x800] = TRUE; } @@ -3145,10 +3153,10 @@ else Slot2Size=0x8000; { if(Slot1Size!=0) { - Map [i] = Map [i + 0x800] = &ROMOffset1 [(((c>>4)*0x8000)%Slot1Size)] - 0x8000; + Memory.Map [i] = Memory.Map [i + 0x800] = &ROMOffset1 [(((c>>4)*0x8000)%Slot1Size)] - 0x8000; BlockIsROM [i] = BlockIsROM [i + 0x800] = TRUE; } - else Map [i] = Map [i + 0x800] = (uint8*)MAP_NONE; + else Memory.Map [i] = Memory.Map [i + 0x800] = (uint8*)MAP_NONE; } } @@ -3159,20 +3167,20 @@ else Slot2Size=0x8000; { if(Slot2Size!=0) { - Map [i] = Map [i + 0x800] = &ROMOffset2[(((c>>4)*0x8000)%Slot2Size)]; + Memory.Map [i] = Memory.Map [i + 0x800] = &ROMOffset2[(((c>>4)*0x8000)%Slot2Size)]; BlockIsROM [i] = BlockIsROM [i + 0x800] = TRUE; } - else Map [i] = Map [i + 0x800] = (uint8*)MAP_NONE; + else Memory.Map [i] = Memory.Map [i + 0x800] = (uint8*)MAP_NONE; } for (i = c + 8; i < c + 16; i++) { if(Slot2Size!=0) { - Map [i] = Map [i + 0x800] = &ROMOffset2[(((c>>4)*0x8000)%Slot2Size)] - 0x8000; + Memory.Map [i] = Memory.Map [i + 0x800] = &ROMOffset2[(((c>>4)*0x8000)%Slot2Size)] - 0x8000; BlockIsROM [i] = BlockIsROM [i + 0x800] = TRUE; } - else Map [i] = Map [i + 0x800] = (uint8*)MAP_NONE; + else Memory.Map [i] = Memory.Map [i + 0x800] = (uint8*)MAP_NONE; } @@ -3183,8 +3191,8 @@ else Slot2Size=0x8000; { for (c = 0; c < 0x100; c++) { - Map [c + 0xE00] = Map [c + 0x600] = (uint8 *) MAP_LOROM_SRAM; - BlockIsRAM [c + 0xE00] = BlockIsRAM [c + 0x600] = TRUE; + Memory.Map [c + 0xE00] = Memory.Map [c + 0x600] = (uint8 *) MAP_LOROM_SRAM; + Memory.BlockIsRAM [c + 0xE00] = Memory.BlockIsRAM [c + 0x600] = TRUE; BlockIsROM [c + 0xE00] = BlockIsROM [c + 0x600] = FALSE; } } @@ -3192,8 +3200,8 @@ else Slot2Size=0x8000; { for (c = 0; c < 0x100; c++) { - Map [c + 0xF00] = Map [c + 0x700] = (uint8 *) MAP_LOROM_SRAM; - BlockIsRAM [c + 0xF00] = BlockIsRAM [c + 0x700] = TRUE; + Memory.Map [c + 0xF00] = Memory.Map [c + 0x700] = (uint8 *) MAP_LOROM_SRAM; + Memory.BlockIsRAM [c + 0xF00] = Memory.BlockIsRAM [c + 0x700] = TRUE; BlockIsROM [c + 0xF00] = BlockIsROM [c + 0x700] = FALSE; } } @@ -3201,10 +3209,10 @@ else Slot2Size=0x8000; // Banks 7e->7f, RAM for (c = 0; c < 16; c++) { - Map [c + 0x7e0] = RAM; - Map [c + 0x7f0] = RAM + 0x10000; - BlockIsRAM [c + 0x7e0] = TRUE; - BlockIsRAM [c + 0x7f0] = TRUE; + Memory.Map [c + 0x7e0] = RAM; + Memory.Map [c + 0x7f0] = RAM + 0x10000; + Memory.BlockIsRAM [c + 0x7e0] = TRUE; + Memory.BlockIsRAM [c + 0x7f0] = TRUE; BlockIsROM [c + 0x7e0] = FALSE; BlockIsROM [c + 0x7f0] = FALSE; } @@ -3214,7 +3222,7 @@ else Slot2Size=0x8000; #endif -void CMemory::SRAM512KLoROMMap () +void SRAM512KLoROMMap () { int c; int i; @@ -3222,22 +3230,22 @@ void CMemory::SRAM512KLoROMMap () // Banks 00->3f and 80->bf for (c = 0; c < 0x400; c += 16) { - Map [c + 0] = Map [c + 0x800] = RAM; - Map [c + 1] = Map [c + 0x801] = RAM; - BlockIsRAM [c + 0] = BlockIsRAM [c + 0x800] = TRUE; - BlockIsRAM [c + 1] = BlockIsRAM [c + 0x801] = TRUE; + Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.RAM; + Memory.Map [c + 1] = Memory.Map [c + 0x801] = Memory.RAM; + Memory.BlockIsRAM [c + 0] = Memory.BlockIsRAM [c + 0x800] = TRUE; + Memory.BlockIsRAM [c + 1] = Memory.BlockIsRAM [c + 0x801] = TRUE; - Map [c + 2] = Map [c + 0x802] = (uint8 *) MAP_PPU; - Map [c + 3] = Map [c + 0x803] = (uint8 *) MAP_PPU; - Map [c + 4] = Map [c + 0x804] = (uint8 *) MAP_CPU; - Map [c + 5] = Map [c + 0x805] = (uint8 *) MAP_CPU; - Map [c + 6] = Map [c + 0x806] = (uint8 *) MAP_NONE; - Map [c + 7] = Map [c + 0x807] = (uint8 *) MAP_NONE; + Memory.Map [c + 2] = Memory.Map [c + 0x802] = (uint8 *) MAP_PPU; + Memory.Map [c + 3] = Memory.Map [c + 0x803] = (uint8 *) MAP_PPU; + Memory.Map [c + 4] = Memory.Map [c + 0x804] = (uint8 *) MAP_CPU; + Memory.Map [c + 5] = Memory.Map [c + 0x805] = (uint8 *) MAP_CPU; + Memory.Map [c + 6] = Memory.Map [c + 0x806] = (uint8 *) MAP_NONE; + Memory.Map [c + 7] = Memory.Map [c + 0x807] = (uint8 *) MAP_NONE; for (i = c + 8; i < c + 16; i++) { - Map [i] = Map [i + 0x800] = &ROM [c << 11] - 0x8000; - BlockIsROM [i] = BlockIsROM [i + 0x800] = TRUE; + Memory.Map [i] = Memory.Map [i + 0x800] = &Memory.ROM [c << 11] - 0x8000; + Memory.BlockIsROM [i] = Memory.BlockIsROM [i + 0x800] = TRUE; } } @@ -3245,14 +3253,14 @@ void CMemory::SRAM512KLoROMMap () for (c = 0; c < 0x400; c += 16) { for (i = c; i < c + 8; i++) - Map [i + 0x400] = Map [i + 0xc00] = &ROM [(c << 11) + 0x200000]; + Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 11) + 0x200000]; for (i = c + 8; i < c + 16; i++) - Map [i + 0x400] = Map [i + 0xc00] = &ROM [(c << 11) + 0x200000 - 0x8000]; + Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 11) + 0x200000 - 0x8000]; for (i = c; i < c + 16; i++) { - BlockIsROM [i + 0x400] = BlockIsROM [i + 0xc00] = TRUE; + Memory.BlockIsROM [i + 0x400] = Memory.BlockIsROM [i + 0xc00] = TRUE; } } @@ -3260,42 +3268,42 @@ void CMemory::SRAM512KLoROMMap () WriteProtectROM (); } -void CMemory::BSHiROMMap () +void BSHiROMMap () { int c; int i; - SRAMSize=5; + Memory.SRAMSize=5; // Banks 00->3f and 80->bf for (c = 0; c < 0x400; c += 16) { - Map [c + 0] = Map [c + 0x800] = RAM; - BlockIsRAM [c + 0] = BlockIsRAM [c + 0x800] = TRUE; - Map [c + 1] = Map [c + 0x801] = RAM; - BlockIsRAM [c + 1] = BlockIsRAM [c + 0x801] = TRUE; + Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.RAM; + Memory.BlockIsRAM [c + 0] = Memory.BlockIsRAM [c + 0x800] = TRUE; + Memory.Map [c + 1] = Memory.Map [c + 0x801] = Memory.RAM; + Memory.BlockIsRAM [c + 1] = Memory.BlockIsRAM [c + 0x801] = TRUE; - Map [c + 2] = Map [c + 0x802] = (uint8 *) MAP_PPU; - Map [c + 3] = Map [c + 0x803] = (uint8 *) MAP_PPU; - Map [c + 4] = Map [c + 0x804] = (uint8 *) MAP_CPU; + Memory.Map [c + 2] = Memory.Map [c + 0x802] = (uint8 *) MAP_PPU; + Memory.Map [c + 3] = Memory.Map [c + 0x803] = (uint8 *) MAP_PPU; + Memory.Map [c + 4] = Memory.Map [c + 0x804] = (uint8 *) MAP_CPU; // XXX: How large is SRAM?? - Map [c + 5] = Map [c + 0x805] = (uint8 *) RAM; -// Map [c + 5] = Map [c + 0x805] = (uint8 *) SRAM; - BlockIsRAM [c + 5] = BlockIsRAM [c + 0x805] = TRUE; -// Map [c + 6] = Map [c + 0x806] = (uint8 *) MAP_NONE; -// Map [c + 7] = Map [c + 0x807] = (uint8 *) MAP_NONE; + Memory.Map [c + 5] = Memory.Map [c + 0x805] = (uint8 *) Memory.RAM; +// Memory.Map [c + 5] = Memory.Map [c + 0x805] = (uint8 *) SRAM; + Memory.BlockIsRAM [c + 5] = Memory.BlockIsRAM [c + 0x805] = TRUE; +// Memory.Map [c + 6] = Memory.Map [c + 0x806] = (uint8 *) MAP_NONE; +// Memory.Map [c + 7] = Memory.Map [c + 0x807] = (uint8 *) MAP_NONE; - Map [c + 6] = Map [c + 0x806] = (uint8 *) RAM; -// Map [c + 5] = Map [c + 0x805] = (uint8 *) SRAM; -BlockIsRAM [c + 6] = BlockIsRAM [c + 0x806] = TRUE; - Map [c + 7] = Map [c + 0x807] = (uint8 *) RAM; -// Map [c + 5] = Map [c + 0x805] = (uint8 *) SRAM; -BlockIsRAM [c + 7] = BlockIsRAM [c + 0x807] = TRUE; + Memory.Map [c + 6] = Memory.Map [c + 0x806] = (uint8 *) Memory.RAM; +// Memory.Map [c + 5] = Memory.Map [c + 0x805] = (uint8 *) SRAM; + Memory.BlockIsRAM [c + 6] = Memory.BlockIsRAM [c + 0x806] = TRUE; + Memory.Map [c + 7] = Memory.Map [c + 0x807] = (uint8 *) Memory.RAM; +// Memory.Map [c + 5] = Memory.Map [c + 0x805] = (uint8 *) Memory.SRAM; + Memory.BlockIsRAM [c + 7] = Memory.BlockIsRAM [c + 0x807] = TRUE; for (i = c + 8; i < c + 16; i++) { - Map [i] = Map [i + 0x800] = &ROM [(c << 12) % CalculatedSize]; - BlockIsROM [i] = BlockIsROM [i + 0x800] = TRUE; + Memory.Map [i] = Memory.Map [i + 0x800] = &Memory.ROM [(c << 12) % Memory.CalculatedSize]; + Memory.BlockIsROM [i] = Memory.BlockIsROM [i + 0x800] = TRUE; } } @@ -3307,13 +3315,13 @@ BlockIsRAM [c + 7] = BlockIsRAM [c + 0x807] = TRUE; { for (i = c; i < c + 8; i++) { - Map [i] = &ROM [0x400000 + (c << 11)]; - BlockIsRAM [i] = TRUE; + Memory.Map [i] = &Memory.ROM [0x400000 + (c << 11)]; + Memory.BlockIsRAM [i] = TRUE; } for (i = c + 8; i < c + 16; i++) { - Map [i] = &ROM [0x400000 + (c << 11) - 0x8000]; - BlockIsRAM [i] = TRUE; + Memory.Map [i] = &Memory.ROM [0x400000 + (c << 11) - 0x8000]; + Memory.BlockIsRAM [i] = TRUE; } } @@ -3322,28 +3330,28 @@ BlockIsRAM [c + 7] = BlockIsRAM [c + 0x807] = TRUE; { for (i = c; i < c + 16; i++) { - Map [i + 0x400] = Map [i + 0xc00] = &ROM [(c << 12) % CalculatedSize]; - BlockIsROM [i + 0x400] = BlockIsROM [i + 0xc00] = TRUE; + Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 12) % Memory.CalculatedSize]; + Memory.BlockIsROM [i + 0x400] = Memory.BlockIsROM [i + 0xc00] = TRUE; } } for(i=0;i<0x80;i++) { - Map[0x700+i]=&BSRAM[0x10000*(i/16)]; - BlockIsRAM[0x700+i]=TRUE; - BlockIsROM[0x700+i]=FALSE; + Memory.Map[0x700+i]=&Memory.BSRAM[0x10000*(i/16)]; + Memory.BlockIsRAM[0x700+i]=TRUE; + Memory.BlockIsROM[0x700+i]=FALSE; } for (i=0; i<8;i++) { - Map[0x205+(i<<4)]=Map[0x285+(i<<4)]=Map[0x305+(i<<4)]=Map[0x385+(i<<4)]=Map[0x705+(i<<4)]; - BlockIsRAM[0x205+(i<<4)]=BlockIsRAM[0x285+(i<<4)]=BlockIsRAM[0x305+(i<<4)]=BlockIsRAM[0x385+(i<<4)]=TRUE; - BlockIsROM[0x205+(i<<4)]=BlockIsROM[0x285+(i<<4)]=BlockIsROM[0x305+(i<<4)]=BlockIsROM[0x385+(i<<4)]=FALSE; + Memory.Map[0x205+(i<<4)]=Memory.Map[0x285+(i<<4)]=Memory.Map[0x305+(i<<4)]=Memory.Map[0x385+(i<<4)]=Memory.Map[0x705+(i<<4)]; + Memory.BlockIsRAM[0x205+(i<<4)]=Memory.BlockIsRAM[0x285+(i<<4)]=Memory.BlockIsRAM[0x305+(i<<4)]=Memory.BlockIsRAM[0x385+(i<<4)]=TRUE; + Memory.BlockIsROM[0x205+(i<<4)]=Memory.BlockIsROM[0x285+(i<<4)]=Memory.BlockIsROM[0x305+(i<<4)]=Memory.BlockIsROM[0x385+(i<<4)]=FALSE; } MapRAM (); WriteProtectROM (); } -void CMemory::JumboLoROMMap (bool8 Interleaved) +void JumboLoROMMap (bool8 Interleaved) { int c; int i; @@ -3356,41 +3364,41 @@ void CMemory::JumboLoROMMap (bool8 Interleaved) { OFFSET0 = 0x000000; OFFSET1 = 0x000000; - OFFSET2 = CalculatedSize-0x400000; //changed to work with interleaved DKJM2. + OFFSET2 = Memory.CalculatedSize-0x400000; //changed to work with interleaved DKJM2. } // Banks 00->3f and 80->bf for (c = 0; c < 0x400; c += 16) { - Map [c + 0] = Map [c + 0x800] = RAM; - Map [c + 1] = Map [c + 0x801] = RAM; - BlockIsRAM [c + 0] = BlockIsRAM [c + 0x800] = TRUE; - BlockIsRAM [c + 1] = BlockIsRAM [c + 0x801] = TRUE; + Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.RAM; + Memory.Map [c + 1] = Memory.Map [c + 0x801] = Memory.RAM; + Memory.BlockIsRAM [c + 0] = Memory.BlockIsRAM [c + 0x800] = TRUE; + Memory.BlockIsRAM [c + 1] = Memory.BlockIsRAM [c + 0x801] = TRUE; - Map [c + 2] = Map [c + 0x802] = (uint8 *) MAP_PPU; - Map [c + 3] = Map [c + 0x803] = (uint8 *) MAP_PPU; - Map [c + 4] = Map [c + 0x804] = (uint8 *) MAP_CPU; - Map [c + 5] = Map [c + 0x805] = (uint8 *) MAP_CPU; + Memory.Map [c + 2] = Memory.Map [c + 0x802] = (uint8 *) MAP_PPU; + Memory.Map [c + 3] = Memory.Map [c + 0x803] = (uint8 *) MAP_PPU; + Memory.Map [c + 4] = Memory.Map [c + 0x804] = (uint8 *) MAP_CPU; + Memory.Map [c + 5] = Memory.Map [c + 0x805] = (uint8 *) MAP_CPU; if (Settings.DSP1Master) { - Map [c + 6] = Map [c + 0x806] = (uint8 *) MAP_DSP; - Map [c + 7] = Map [c + 0x807] = (uint8 *) MAP_DSP; + Memory.Map [c + 6] = Memory.Map [c + 0x806] = (uint8 *) MAP_DSP; + Memory.Map [c + 7] = Memory.Map [c + 0x807] = (uint8 *) MAP_DSP; } else if (Settings.C4) { - Map [c + 6] = Map [c + 0x806] = (uint8 *) MAP_C4; - Map [c + 7] = Map [c + 0x807] = (uint8 *) MAP_C4; + Memory.Map [c + 6] = Memory.Map [c + 0x806] = (uint8 *) MAP_C4; + Memory.Map [c + 7] = Memory.Map [c + 0x807] = (uint8 *) MAP_C4; } else { - Map [c + 6] = Map [c + 0x806] = (uint8 *) bytes0x2000 - 0x6000; - Map [c + 7] = Map [c + 0x807] = (uint8 *) bytes0x2000 - 0x6000; + Memory.Map [c + 6] = Memory.Map [c + 0x806] = (uint8 *) bytes0x2000 - 0x6000; + Memory.Map [c + 7] = Memory.Map [c + 0x807] = (uint8 *) bytes0x2000 - 0x6000; } for (i = c + 8; i < c + 16; i++) { - Map [i]= &ROM [((c << 11) % (CalculatedSize - 0x400000)) + OFFSET0] - 0x8000; - Map [i + 0x800] = &ROM [((c << 11) % (0x400000)) + OFFSET2] - 0x8000; - BlockIsROM [i + 0x800] = BlockIsROM [i] = TRUE; + Memory.Map [i]= &Memory.ROM [((c << 11) % (Memory.CalculatedSize - 0x400000)) + OFFSET0] - 0x8000; + Memory.Map [i + 0x800] = &Memory.ROM [((c << 11) % (0x400000)) + OFFSET2] - 0x8000; + Memory.BlockIsROM [i + 0x800] = Memory.BlockIsROM [i] = TRUE; } } @@ -3401,8 +3409,8 @@ void CMemory::JumboLoROMMap (bool8 Interleaved) { for (i = c + 8; i < c + 16; i++) { - Map [i + 0x800] = (uint8 *) MAP_DSP; - BlockIsROM [i] = BlockIsROM [i + 0x800] = FALSE; + Memory.Map [i + 0x800] = (uint8 *) MAP_DSP; + Memory.BlockIsROM [i] = Memory.BlockIsROM [i + 0x800] = FALSE; } } } @@ -3413,19 +3421,19 @@ void CMemory::JumboLoROMMap (bool8 Interleaved) //updated mappings to correct A15 mirroring for (i = c; i < c + 8; i++) { - Map [i]= &ROM [((c << 11) % (CalculatedSize - 0x400000)) + OFFSET0]; - Map [i + 0x800] = &ROM [((c << 11) % 0x400000) +OFFSET2]; + Memory.Map [i]= &Memory.ROM [((c << 11) % (Memory.CalculatedSize - 0x400000)) + OFFSET0]; + Memory.Map [i + 0x800] = &Memory.ROM [((c << 11) % 0x400000) +OFFSET2]; } for (i = c + 8; i < c + 16; i++) { - Map [i]= &ROM [((c << 11) % (CalculatedSize - 0x400000)) + OFFSET0] - 0x8000; - Map [i + 0x800] = &ROM [((c << 11) % 0x400000) + OFFSET2 ] - 0x8000; + Memory.Map [i]= &Memory.ROM [((c << 11) % (Memory.CalculatedSize - 0x400000)) + OFFSET0] - 0x8000; + Memory.Map [i + 0x800] = &Memory.ROM [((c << 11) % 0x400000) + OFFSET2 ] - 0x8000; } for (i = c; i < c + 16; i++) { - BlockIsROM [i] = BlockIsROM [i + 0x800] = TRUE; + Memory.BlockIsROM [i] = Memory.BlockIsROM [i + 0x800] = TRUE; } } @@ -3433,17 +3441,17 @@ void CMemory::JumboLoROMMap (bool8 Interleaved) int sum=0, k,l; for(k=0;k<256;k++) { - uint8* bank=0x8000+Map[8+(k<<4)];//use upper half of the banks, and adjust for LoROM. + uint8* bank=0x8000+Memory.Map[8+(k<<4)];//use upper half of the banks, and adjust for LoROM. for(l=0;l<0x8000;l++) sum+=bank[l]; } - CalculatedChecksum=sum&0xFFFF; + Memory.CalculatedChecksum=sum&0xFFFF; MapRAM (); WriteProtectROM (); } -void CMemory::SPC7110HiROMMap () +void SPC7110HiROMMap () { int c; int i; @@ -3451,38 +3459,38 @@ void CMemory::SPC7110HiROMMap () // Banks 00->3f and 80->bf for (c = 0; c < 0x400; c += 16) { - Map [c + 0] = Map [c + 0x800] = RAM; - BlockIsRAM [c + 0] = BlockIsRAM [c + 0x800] = TRUE; - Map [c + 1] = Map [c + 0x801] = RAM; - BlockIsRAM [c + 1] = BlockIsRAM [c + 0x801] = TRUE; + Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.RAM; + Memory.BlockIsRAM [c + 0] = Memory.BlockIsRAM [c + 0x800] = TRUE; + Memory.Map [c + 1] = Memory.Map [c + 0x801] = Memory.RAM; + Memory.BlockIsRAM [c + 1] = Memory.BlockIsRAM [c + 0x801] = TRUE; - Map [c + 2] = Map [c + 0x802] = (uint8 *) MAP_PPU; - Map [c + 3] = Map [c + 0x803] = (uint8 *) MAP_PPU; - Map [c + 4] = Map [c + 0x804] = (uint8 *) MAP_CPU; - Map [c + 5] = Map [c + 0x805] = (uint8 *) MAP_CPU; + Memory.Map [c + 2] = Memory.Map [c + 0x802] = (uint8 *) MAP_PPU; + Memory.Map [c + 3] = Memory.Map [c + 0x803] = (uint8 *) MAP_PPU; + Memory.Map [c + 4] = Memory.Map [c + 0x804] = (uint8 *) MAP_CPU; + Memory.Map [c + 5] = Memory.Map [c + 0x805] = (uint8 *) MAP_CPU; - Map [c + 6] /*= Map [c + 0x806]*/ = (uint8 *) MAP_HIROM_SRAM; - Map [c + 7] /*= Map [c + 0x807]*/ = (uint8 *) MAP_HIROM_SRAM; - Map [c + 0x806]=Map [c + 0x807]= (uint8 *) MAP_NONE; + Memory.Map [c + 6] /*= Memory.Map [c + 0x806]*/ = (uint8 *) MAP_HIROM_SRAM; + Memory.Map [c + 7] /*= Memory.Map [c + 0x807]*/ = (uint8 *) MAP_HIROM_SRAM; + Memory.Map [c + 0x806]=Memory.Map [c + 0x807]= (uint8 *) MAP_NONE; for (i = c + 8; i < c + 16; i++) { - Map [i] = Map [i + 0x800] = &ROM [(c << 12) % CalculatedSize]; - BlockIsROM [i] = BlockIsROM [i + 0x800] = TRUE; + Memory.Map [i] = Memory.Map [i + 0x800] = &Memory.ROM [(c << 12) % Memory.CalculatedSize]; + Memory.BlockIsROM [i] = Memory.BlockIsROM [i + 0x800] = TRUE; } } // Banks 30->3f and b0->bf, address ranges 6000->7fff is S-RAM. for (c = 0; c < 16; c++) { - Map [0x306 + (c << 4)] = (uint8 *) MAP_HIROM_SRAM; - Map [0x307 + (c << 4)] = (uint8 *) MAP_HIROM_SRAM; - Map [0xb06 + (c << 4)] = (uint8 *) MAP_NONE; - Map [0xb07 + (c << 4)] = (uint8 *) MAP_NONE; - BlockIsRAM [0x306 + (c << 4)] = TRUE; - BlockIsRAM [0x307 + (c << 4)] = TRUE; - // BlockIsRAM [0xb06 + (c << 4)] = TRUE; - // BlockIsRAM [0xb07 + (c << 4)] = TRUE; + Memory.Map [0x306 + (c << 4)] = (uint8 *) MAP_HIROM_SRAM; + Memory.Map [0x307 + (c << 4)] = (uint8 *) MAP_HIROM_SRAM; + Memory.Map [0xb06 + (c << 4)] = (uint8 *) MAP_NONE; + Memory.Map [0xb07 + (c << 4)] = (uint8 *) MAP_NONE; + Memory.BlockIsRAM [0x306 + (c << 4)] = TRUE; + Memory.BlockIsRAM [0x307 + (c << 4)] = TRUE; + // Memory.BlockIsRAM [0xb06 + (c << 4)] = TRUE; + // Memory.BlockIsRAM [0xb07 + (c << 4)] = TRUE; } // Banks 40->7f and c0->ff @@ -3490,95 +3498,95 @@ void CMemory::SPC7110HiROMMap () { for (i = c; i < c + 16; i++) { - Map [i + 0x400] = Map [i + 0xc00] = &ROM [(c << 12) % CalculatedSize]; - BlockIsROM [i + 0x400] = BlockIsROM [i + 0xc00] = TRUE; + Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 12) % Memory.CalculatedSize]; + Memory.BlockIsROM [i + 0x400] = Memory.BlockIsROM [i + 0xc00] = TRUE; } } for (c=0;c<0x10;c++) { - Map [0x500+c]=(uint8 *)MAP_SPC7110_DRAM; - BlockIsROM [0x500+c]=TRUE; + Memory.Map [0x500+c]=(uint8 *)MAP_SPC7110_DRAM; + Memory.BlockIsROM [0x500+c]=TRUE; } for (c=0;c<0x100;c++) { - Map [0xD00+c] = (uint8 *) MAP_SPC7110_ROM; - Map [0xE00+c] = (uint8 *) MAP_SPC7110_ROM; - Map [0xF00+c] = (uint8 *) MAP_SPC7110_ROM; - BlockIsROM [0xD00+c] = BlockIsROM [0xE00+c] = BlockIsROM [0xF00+c] = TRUE; + Memory.Map [0xD00+c] = (uint8 *) MAP_SPC7110_ROM; + Memory.Map [0xE00+c] = (uint8 *) MAP_SPC7110_ROM; + Memory.Map [0xF00+c] = (uint8 *) MAP_SPC7110_ROM; + Memory.BlockIsROM [0xD00+c] = Memory.BlockIsROM [0xE00+c] = Memory.BlockIsROM [0xF00+c] = TRUE; } S9xSpc7110Init(); int sum=0; -for(i=0;i<(int)CalculatedSize; i++) +for(i=0;i<(int)Memory.CalculatedSize; i++) { - sum+=ROM[i]; + sum+=Memory.ROM[i]; } -if(CalculatedSize==0x300000) +if(Memory.CalculatedSize==0x300000) sum<<=1; -CalculatedChecksum=sum&0xFFFF; +Memory.CalculatedChecksum=sum&0xFFFF; MapRAM (); WriteProtectROM (); } -void CMemory::SPC7110Sram(uint8 newstate) +void SPC7110Sram(uint8 newstate) { if(newstate&0x80) { - Memory.Map[6]=(uint8 *)MAP_HIROM_SRAM; - Memory.Map[7]=(uint8 *)MAP_HIROM_SRAM; - Memory.Map[0x306]=(uint8 *)MAP_HIROM_SRAM; - Memory.Map[0x307]=(uint8 *)MAP_HIROM_SRAM; + Memory.Map[6]=(uint8 *)MAP_HIROM_SRAM; + Memory.Map[7]=(uint8 *)MAP_HIROM_SRAM; + Memory.Map[0x306]=(uint8 *)MAP_HIROM_SRAM; + Memory.Map[0x307]=(uint8 *)MAP_HIROM_SRAM; } else { - Memory.Map[6]=(uint8 *)MAP_RONLY_SRAM; - Memory.Map[7]=(uint8 *)MAP_RONLY_SRAM; - Memory.Map[0x306]=(uint8 *)MAP_RONLY_SRAM; - Memory.Map[0x307]=(uint8 *)MAP_RONLY_SRAM; + Memory.Map[6]=(uint8 *)MAP_RONLY_SRAM; + Memory.Map[7]=(uint8 *)MAP_RONLY_SRAM; + Memory.Map[0x306]=(uint8 *)MAP_RONLY_SRAM; + Memory.Map[0x307]=(uint8 *)MAP_RONLY_SRAM; } } -const char *CMemory::TVStandard () +const char *TVStandard () { return (Settings.PAL ? "PAL" : "NTSC"); } -const char *CMemory::Speed () +const char *Speed () { - return (ROMSpeed & 0x10 ? "120ns" : "200ns"); + return (Memory.ROMSpeed & 0x10 ? "120ns" : "200ns"); } -const char *CMemory::MapType () +const char *MapType () { - return (HiROM ? "HiROM" : "LoROM"); + return (Memory.HiROM ? "HiROM" : "LoROM"); } -const char *CMemory::StaticRAMSize () +const char *StaticRAMSize () { static char tmp [20]; if (Memory.SRAMSize > 16) return ("Corrupt"); - sprintf (tmp, "%dKB", (SRAMMask + 1) / 1024); + sprintf (tmp, "%dKB", (Memory.SRAMMask + 1) / 1024); return (tmp); } -const char *CMemory::Size () +const char *Size () { static char tmp [20]; - if (ROMSize < 7 || ROMSize - 7 > 23) + if (Memory.ROMSize < 7 || Memory.ROMSize - 7 > 23) return ("Corrupt"); - sprintf (tmp, "%dMbits", 1 << (ROMSize - 7)); + sprintf (tmp, "%dMbits", 1 << (Memory.ROMSize - 7)); return (tmp); } -const char *CMemory::KartContents () +const char *KartContents () { static char tmp [30]; static const char *CoPro [16] = { @@ -3589,10 +3597,10 @@ const char *CMemory::KartContents () static const char *Contents [3] = { "ROM", "ROM+RAM", "ROM+RAM+BAT" }; - if (ROMType == 0&&!Settings.BS) + if (Memory.ROMType == 0&&!Settings.BS) return ("ROM only"); - sprintf (tmp, "%s", Contents [(ROMType & 0xf) % 3]); + sprintf (tmp, "%s", Contents [(Memory.ROMType & 0xf) % 3]); if(Settings.BS) @@ -3618,35 +3626,35 @@ const char *CMemory::KartContents () } } - else if ((ROMType & 0xf) >= 3) - sprintf (tmp, "%s+%s", tmp, CoPro [(ROMType & 0xf0) >> 4]); + else if ((Memory.ROMType & 0xf) >= 3) + sprintf (tmp, "%s+%s", tmp, CoPro [(Memory.ROMType & 0xf0) >> 4]); return (tmp); } -const char *CMemory::MapMode () +const char *MapMode () { static char tmp [4]; - sprintf (tmp, "%02x", ROMSpeed & ~0x10); + sprintf (tmp, "%02x", Memory.ROMSpeed & ~0x10); return (tmp); } -const char *CMemory::ROMID () +const char *ROMID () { - return (ROMId); + return (Memory.ROMId); } -void CMemory::ApplyROMFixes () +void ApplyROMFixes () { #ifdef __W32_HEAP if(_HEAPOK!=_heapchk()) - MessageBox(GUI.hWnd, "CMemory::ApplyROMFixes", "Heap Corrupt", MB_OK); + MessageBox(GUI.hWnd, "ApplyROMFixes", "Heap Corrupt", MB_OK); #endif //don't steal my work! -MK - if(ROMCRC32 == 0x1B4A5616 && strncmp(ROMName, "RUDORA NO HIHOU", 15)==0) + if(Memory.ROMCRC32 == 0x1B4A5616 && strncmp(Memory.ROMName, "RUDORA NO HIHOU", 15)==0) { - strncpy(ROMName, "THIS SCRIPT WAS STOLEN", 22); + strncpy(Memory.ROMName, "THIS SCRIPT WAS STOLEN", 22); Settings.DisplayColor=BUILD_PIXEL(31,0,0); SET_UI_COLOR(255,0,0); } @@ -3662,9 +3670,9 @@ void CMemory::ApplyROMFixes () [14:25:27] <@Nach> case 0x340f23e5: //Donkey Kong Country 3 (U) copier hack - handled */ - if(ROMCRC32==0x6810aa95 || ROMCRC32==0x340f23e5 || ROMCRC32==0x77fd806a || - strncmp (ROMName, "HIGHWAY BATTLE 2", 16)==0 || - (strcmp (ROMName, "FX SKIING NINTENDO 96") == 0 && ROM[0x7FDA]==0)) + if(Memory.ROMCRC32==0x6810aa95 || Memory.ROMCRC32==0x340f23e5 || Memory.ROMCRC32==0x77fd806a || + strncmp (Memory.ROMName, "HIGHWAY BATTLE 2", 16)==0 || + (strcmp (Memory.ROMName, "FX SKIING NINTENDO 96") == 0 && Memory.ROM[0x7FDA]==0)) { Settings.DisplayColor=BUILD_PIXEL(31,0,0); SET_UI_COLOR(255,0,0); @@ -3673,7 +3681,7 @@ void CMemory::ApplyROMFixes () //Ambiguous chip function pointer assignments //DSP switching: - if(strncmp(ROMName, "DUNGEON MASTER", 14)==0) + if(strncmp(Memory.ROMName, "DUNGEON MASTER", 14)==0) { //Set DSP-2 SetDSP=&DSP2SetByte; @@ -3689,8 +3697,8 @@ void CMemory::ApplyROMFixes () } #endif - if(strncmp(ROMName, "TOP GEAR 3000", 13)==0 - ||strncmp(ROMName, "PLANETS CHAMP TG3000", 20)==0) + if(strncmp(Memory.ROMName, "TOP GEAR 3000", 13)==0 + ||strncmp(Memory.ROMName, "PLANETS CHAMP TG3000", 20)==0) { //Set DSP-4 SetDSP=&DSP4SetByte; @@ -3698,72 +3706,75 @@ void CMemory::ApplyROMFixes () } //memory map corrections - if(strncmp(ROMName, "XBAND",5)==0) + if(strncmp(Memory.ROMName, "XBAND",5)==0) { - for (int c=0xE00;c<0xE10;c++) + int c; + for (c=0xE00;c<0xE10;c++) { - Map [c] = (uint8 *) MAP_LOROM_SRAM; - BlockIsRAM [c] = TRUE; - BlockIsROM [c] = FALSE; + Memory.Map [c] = (uint8 *) MAP_LOROM_SRAM; + Memory.BlockIsRAM [c] = TRUE; + Memory.BlockIsROM [c] = FALSE; } WriteProtectROM (); } //not MAD-1 compliant - if(strcmp (ROMName, "WANDERERS FROM YS") == 0) + if(strcmp (Memory.ROMName, "WANDERERS FROM YS") == 0) { - for(int c=0;c<0xE0;c++) + int c; + for(c=0;c<0xE0;c++) { - Map[c+0x700]=(uint8*)MAP_LOROM_SRAM; - BlockIsROM[c+0x700]=FALSE; - BlockIsRAM[c+0x700]=TRUE; + Memory.Map[c+0x700]=(uint8*)MAP_LOROM_SRAM; + Memory.BlockIsROM[c+0x700]=FALSE; + Memory.BlockIsRAM[c+0x700]=TRUE; } WriteProtectROM(); } - if (strcmp (ROMName, "GOGO ACKMAN3") == 0 || - strcmp (ROMName, "HOME ALONE") == 0) + if (strcmp (Memory.ROMName, "GOGO ACKMAN3") == 0 || + strcmp (Memory.ROMName, "HOME ALONE") == 0) { // Banks 00->3f and 80->bf - for (int c = 0; c < 0x400; c += 16) + int c; + for (c = 0; c < 0x400; c += 16) { - Map [c + 6] = Map [c + 0x806] = SRAM; - Map [c + 7] = Map [c + 0x807] = SRAM; - BlockIsROM [c + 6] = BlockIsROM [c + 0x806] = FALSE; - BlockIsROM [c + 7] = BlockIsROM [c + 0x807] = FALSE; - BlockIsRAM [c + 6] = BlockIsRAM [c + 0x806] = TRUE; - BlockIsRAM [c + 7] = BlockIsRAM [c + 0x807] = TRUE; + Memory.Map [c + 6] = Memory.Map [c + 0x806] = Memory.SRAM; + Memory.Map [c + 7] = Memory.Map [c + 0x807] = Memory.SRAM; + Memory.BlockIsROM [c + 6] = Memory.BlockIsROM [c + 0x806] = FALSE; + Memory.BlockIsROM [c + 7] = Memory.BlockIsROM [c + 0x807] = FALSE; + Memory.BlockIsRAM [c + 6] = Memory.BlockIsRAM [c + 0x806] = TRUE; + Memory.BlockIsRAM [c + 7] = Memory.BlockIsRAM [c + 0x807] = TRUE; } WriteProtectROM (); } - if (strcmp (ROMName, "RADICAL DREAMERS") == 0 || - strcmp (ROMName, "TREASURE CONFLIX") == 0) + if (strcmp (Memory.ROMName, "RADICAL DREAMERS") == 0 || + strcmp (Memory.ROMName, "TREASURE CONFLIX") == 0) { int c; for (c = 0; c < 0x80; c++) { - Map [c + 0x700] = ROM + 0x200000 + 0x1000 * (c & 0xf0); - BlockIsRAM [c + 0x700] = TRUE; - BlockIsROM [c + 0x700] = FALSE; + Memory.Map [c + 0x700] = Memory.ROM + 0x200000 + 0x1000 * (c & 0xf0); + Memory.BlockIsRAM [c + 0x700] = TRUE; + Memory.BlockIsROM [c + 0x700] = FALSE; } for (c = 0; c < 0x400; c += 16) { - Map [c + 5] = Map [c + 0x805] = ROM + 0x300000; - BlockIsRAM [c + 5] = BlockIsRAM [c + 0x805] = TRUE; + Memory.Map [c + 5] = Memory.Map [c + 0x805] = Memory.ROM + 0x300000; + Memory.BlockIsRAM [c + 5] = Memory.BlockIsRAM [c + 0x805] = TRUE; } WriteProtectROM (); } - if(strncmp(ROMName, "WAR 2410", 8)==0) + if(strncmp(Memory.ROMName, "WAR 2410", 8)==0) { - Map [0x005] = (uint8 *) RAM; - BlockIsRAM [0x005] = TRUE; - BlockIsROM [0x005] = FALSE; + Memory.Map [0x005] = (uint8 *) Memory.RAM; + Memory.BlockIsRAM [0x005] = TRUE; + Memory.BlockIsROM [0x005] = FALSE; } - if (strcmp (ROMName, "BATMAN--REVENGE JOKER") == 0) + if (strcmp (Memory.ROMName, "BATMAN--REVENGE JOKER") == 0) { Memory.HiROM = FALSE; Memory.LoROM = TRUE; @@ -3773,20 +3784,20 @@ void CMemory::ApplyROMFixes () //NMI hacks CPU.NMITriggerPoint = 4; - if (strcmp (ROMName, "CACOMA KNIGHT") == 0) + if (strcmp (Memory.ROMName, "CACOMA KNIGHT") == 0) CPU.NMITriggerPoint = 25; //Disabling a speed-up // Games which spool sound samples between the SNES and sound CPU using // H-DMA as the sample is playing. - if (strcmp (ROMName, "EARTHWORM JIM 2") == 0 || - strcmp (ROMName, "PRIMAL RAGE") == 0 || - strcmp (ROMName, "CLAY FIGHTER") == 0 || - strcmp (ROMName, "ClayFighter 2") == 0 || - strncasecmp (ROMName, "MADDEN", 6) == 0 || - strncmp (ROMName, "NHL", 3) == 0 || - strcmp (ROMName, "WeaponLord") == 0|| - strncmp(ROMName, "WAR 2410", 8)==0) + if (strcmp (Memory.ROMName, "EARTHWORM JIM 2") == 0 || + strcmp (Memory.ROMName, "PRIMAL RAGE") == 0 || + strcmp (Memory.ROMName, "CLAY FIGHTER") == 0 || + strcmp (Memory.ROMName, "ClayFighter 2") == 0 || + strncasecmp (Memory.ROMName, "MADDEN", 6) == 0 || + strncmp (Memory.ROMName, "NHL", 3) == 0 || + strcmp (Memory.ROMName, "WeaponLord") == 0|| + strncmp(Memory.ROMName, "WAR 2410", 8)==0) { Settings.Shutdown = FALSE; } @@ -3795,58 +3806,58 @@ void CMemory::ApplyROMFixes () //APU timing hacks // Stunt Racer FX - if (strcmp (ROMId, "CQ ") == 0 || + if (strcmp (Memory.ROMId, "CQ ") == 0 || // Illusion of Gaia - strncmp (ROMId, "JG", 2) == 0 || - strcmp (ROMName, "GAIA GENSOUKI 1 JPN") == 0) + strncmp (Memory.ROMId, "JG", 2) == 0 || + strcmp (Memory.ROMName, "GAIA GENSOUKI 1 JPN") == 0) { IAPU.OneCycle = 13; } // RENDERING RANGER R2 - if (strcmp (ROMId, "AVCJ") == 0 || + if (strcmp (Memory.ROMId, "AVCJ") == 0 || //Mark Davis - strncmp(ROMName, "THE FISHING MASTER", 18)==0 || //needs >= actual APU timing. (21 is .002 Mhz slower) + strncmp(Memory.ROMName, "THE FISHING MASTER", 18)==0 || //needs >= actual APU timing. (21 is .002 Mhz slower) // Star Ocean - strncmp (ROMId, "ARF", 3) == 0 || + strncmp (Memory.ROMId, "ARF", 3) == 0 || // Tales of Phantasia - strncmp (ROMId, "ATV", 3) == 0 || + strncmp (Memory.ROMId, "ATV", 3) == 0 || // Act Raiser 1 & 2 - strncasecmp (ROMName, "ActRaiser", 9) == 0 || + strncasecmp (Memory.ROMName, "ActRaiser", 9) == 0 || // Soulblazer - strcmp (ROMName, "SOULBLAZER - 1 USA") == 0 || - strcmp (ROMName, "SOULBLADER - 1") == 0 || + strcmp (Memory.ROMName, "SOULBLAZER - 1 USA") == 0 || + strcmp (Memory.ROMName, "SOULBLADER - 1") == 0 || // Terranigma - strncmp (ROMId, "AQT", 3) == 0 || + strncmp (Memory.ROMId, "AQT", 3) == 0 || // Robotrek - strncmp (ROMId, "E9 ", 3) == 0 || - strcmp (ROMName, "SLAP STICK 1 JPN") == 0 || + strncmp (Memory.ROMId, "E9 ", 3) == 0 || + strcmp (Memory.ROMName, "SLAP STICK 1 JPN") == 0 || // ZENNIHON PURORESU2 - strncmp (ROMId, "APR", 3) == 0 || + strncmp (Memory.ROMId, "APR", 3) == 0 || // Bomberman 4 - strncmp (ROMId, "A4B", 3) == 0 || + strncmp (Memory.ROMId, "A4B", 3) == 0 || // UFO KAMEN YAKISOBAN - strncmp (ROMId, "Y7 ", 3) == 0 || - strncmp (ROMId, "Y9 ", 3) == 0 || + strncmp (Memory.ROMId, "Y7 ", 3) == 0 || + strncmp (Memory.ROMId, "Y9 ", 3) == 0 || // Panic Bomber World - strncmp (ROMId, "APB", 3) == 0 || - ((strncmp (ROMName, "Parlor", 6) == 0 || - strcmp (ROMName, "HEIWA Parlor!Mini8") == 0 || - strncmp (ROMName, "SANKYO Fever! ̨°ÊÞ°!", 21) == 0) && - strcmp (CompanyId, "A0") == 0) || - strcmp (ROMName, "DARK KINGDOM") == 0 || - strcmp (ROMName, "ZAN3 SFC") == 0 || - strcmp (ROMName, "HIOUDEN") == 0 || - strcmp (ROMName, "ÃݼɳÀ") == 0 || //Tenshi no Uta - strcmp (ROMName, "FORTUNE QUEST") == 0 || - strcmp (ROMName, "FISHING TO BASSING") == 0 || - strncmp (ROMName, "TokyoDome '95Battle 7", 21) == 0 || - strcmp (ROMName, "OHMONO BLACKBASS") == 0 || - strncmp (ROMName, "SWORD WORLD SFC", 15) == 0 || - strcmp (ROMName, "MASTERS") ==0 || //Augusta 2 J - strcmp (ROMName, "SFC ¶ÒÝײÀÞ°") == 0 || //Kamen Rider - strncmp (ROMName, "LETs PACHINKO(", 14) == 0) //A set of BS games + strncmp (Memory.ROMId, "APB", 3) == 0 || + ((strncmp (Memory.ROMName, "Parlor", 6) == 0 || + strcmp (Memory.ROMName, "HEIWA Parlor!Mini8") == 0 || + strncmp (Memory.ROMName, "SANKYO Fever! ̨°ÊÞ°!", 21) == 0) && + strcmp (Memory.CompanyId, "A0") == 0) || + strcmp (Memory.ROMName, "DARK KINGDOM") == 0 || + strcmp (Memory.ROMName, "ZAN3 SFC") == 0 || + strcmp (Memory.ROMName, "HIOUDEN") == 0 || + strcmp (Memory.ROMName, "ÃݼɳÀ") == 0 || //Tenshi no Uta + strcmp (Memory.ROMName, "FORTUNE QUEST") == 0 || + strcmp (Memory.ROMName, "FISHING TO BASSING") == 0 || + strncmp (Memory.ROMName, "TokyoDome '95Battle 7", 21) == 0 || + strcmp (Memory.ROMName, "OHMONO BLACKBASS") == 0 || + strncmp (Memory.ROMName, "SWORD WORLD SFC", 15) == 0 || + strcmp (Memory.ROMName, "MASTERS") ==0 || //Augusta 2 J + strcmp (Memory.ROMName, "SFC ¶ÒÝײÀÞ°") == 0 || //Kamen Rider + strncmp (Memory.ROMName, "LETs PACHINKO(", 14) == 0) //A set of BS games { IAPU.OneCycle = 15; } @@ -3854,23 +3865,23 @@ void CMemory::ApplyROMFixes () //Specific game fixes - Settings.StarfoxHack = strcmp (ROMName, "STAR FOX") == 0 || - strcmp (ROMName, "STAR WING") == 0; - Settings.WinterGold = strcmp (ROMName, "FX SKIING NINTENDO 96") == 0 || - strcmp (ROMName, "DIRT RACER") == 0 || + Settings.StarfoxHack = strcmp (Memory.ROMName, "STAR FOX") == 0 || + strcmp (Memory.ROMName, "STAR WING") == 0; + Settings.WinterGold = strcmp (Memory.ROMName, "FX SKIING NINTENDO 96") == 0 || + strcmp (Memory.ROMName, "DIRT RACER") == 0 || Settings.StarfoxHack; - if((strcmp(ROMName, "LEGEND")==0&&!Settings.PAL)|| - strcmp(ROMName, "King Arthurs World")==0) + if((strcmp(Memory.ROMName, "LEGEND")==0&&!Settings.PAL)|| + strcmp(Memory.ROMName, "King Arthurs World")==0) { SNESGameFixes.EchoOnlyOutput=TRUE; } - Settings.DaffyDuck = (strcmp (ROMName, "DAFFY DUCK: MARV MISS") == 0) || - (strcmp (ROMName, "ROBOCOP VS THE TERMIN") == 0) || - (strcmp (ROMName, "ROBOCOP VS TERMINATOR") == 0); //ROBOCOP VS THE TERMIN + Settings.DaffyDuck = (strcmp (Memory.ROMName, "DAFFY DUCK: MARV MISS") == 0) || + (strcmp (Memory.ROMName, "ROBOCOP VS THE TERMIN") == 0) || + (strcmp (Memory.ROMName, "ROBOCOP VS TERMINATOR") == 0); //ROBOCOP VS THE TERMIN Settings.HBlankStart = (256 * Settings.H_Max) / SNES_HCOUNTER_MAX; //OAM hacks because we don't fully understand the @@ -3879,23 +3890,23 @@ void CMemory::ApplyROMFixes () //Totally wacky display... //seems to need a disproven behavior, so //we're definitely overlooking some other bug? - if(strncmp(ROMName, "UNIRACERS", 9)==0) + if(strncmp(Memory.ROMName, "UNIRACERS", 9)==0) SNESGameFixes.Uniracers=true; //is this even useful now? - if (strcmp (ROMName, "ALIENS vs. PREDATOR") == 0) + if (strcmp (Memory.ROMName, "ALIENS vs. PREDATOR") == 0) SNESGameFixes.alienVSpredetorFix = TRUE; - if (strcmp (ROMName, "½°Ȩ̂߰нÀ") == 0 || //Super Famista - strcmp (ROMName, "½°Ȩ̂߰нÀ 2") == 0 || //Super Famista 2 - strcmp (ROMName, "ZENKI TENCHIMEIDOU") == 0 || - strcmp (ROMName, "GANBA LEAGUE") == 0) + if (strcmp (Memory.ROMName, "½°Ȩ̂߰нÀ") == 0 || //Super Famista + strcmp (Memory.ROMName, "½°Ȩ̂߰нÀ 2") == 0 || //Super Famista 2 + strcmp (Memory.ROMName, "ZENKI TENCHIMEIDOU") == 0 || + strcmp (Memory.ROMName, "GANBA LEAGUE") == 0) { SNESGameFixes.APU_OutPorts_ReturnValueFix = TRUE; } - if (strcmp (ROMName, "FURAI NO SIREN") == 0) + if (strcmp (Memory.ROMName, "FURAI NO SIREN") == 0) SNESGameFixes.SoundEnvelopeHeightReading2 = TRUE; //CPU timing hacks @@ -3906,31 +3917,31 @@ void CMemory::ApplyROMFixes () //#ifdef HDMA_HACKS // A Couple of HDMA related hacks - Lantus - if ((strcmp(ROMName, "SFX SUPERBUTOUDEN2")==0) || - (strcmp(ROMName, "ALIEN vs. PREDATOR")==0) || - (strcmp(ROMName, "STONE PROTECTORS")==0) || - (strcmp(ROMName, "SUPER BATTLETANK 2")==0)) + if ((strcmp(Memory.ROMName, "SFX SUPERBUTOUDEN2")==0) || + (strcmp(Memory.ROMName, "ALIEN vs. PREDATOR")==0) || + (strcmp(Memory.ROMName, "STONE PROTECTORS")==0) || + (strcmp(Memory.ROMName, "SUPER BATTLETANK 2")==0)) Settings.H_Max = (SNES_CYCLES_PER_SCANLINE * 130) / 100; - if(strcmp(ROMName, "HOME IMPROVEMENT")==0) + if(strcmp(Memory.ROMName, "HOME IMPROVEMENT")==0) Settings.H_Max = (SNES_CYCLES_PER_SCANLINE * 200) / 100; // End HDMA hacks //#endif - if (strcmp (ROMId, "ASRJ") == 0 && Settings.CyclesPercentage == 100) + if (strcmp (Memory.ROMId, "ASRJ") == 0 && Settings.CyclesPercentage == 100) // Street Racer Settings.H_Max = (SNES_CYCLES_PER_SCANLINE * 95) / 100; // Power Rangers Fight - if (strncmp (ROMId, "A3R", 3) == 0 || + if (strncmp (Memory.ROMId, "A3R", 3) == 0 || // Clock Tower - strncmp (ROMId, "AJE", 3) == 0) + strncmp (Memory.ROMId, "AJE", 3) == 0) Settings.H_Max = (SNES_CYCLES_PER_SCANLINE * 103) / 100; - if (strncmp (ROMId, "A3M", 3) == 0 && Settings.CyclesPercentage == 100) + if (strncmp (Memory.ROMId, "A3M", 3) == 0 && Settings.CyclesPercentage == 100) // Mortal Kombat 3. Fixes cut off speech sample Settings.H_Max = (SNES_CYCLES_PER_SCANLINE * 110) / 100; @@ -3942,7 +3953,7 @@ void CMemory::ApplyROMFixes () //all the foes who stand //before the might gift betsowed //in my unworthy hand - if (strcmp (ROMName, "\x0bd\x0da\x0b2\x0d4\x0b0\x0bd\x0de") == 0 && + if (strcmp (Memory.ROMName, "\x0bd\x0da\x0b2\x0d4\x0b0\x0bd\x0de") == 0 && Settings.CyclesPercentage == 100) Settings.H_Max = (SNES_CYCLES_PER_SCANLINE * 101) / 100; @@ -3950,15 +3961,15 @@ void CMemory::ApplyROMFixes () #ifdef DETECT_NASTY_FX_INTERLEAVE //XXX: Test without these. Win32 port indicates they aren't needed? //Apparently are needed! - if (strcmp (ROMName, "WILD TRAX") == 0 || - strcmp (ROMName, "STAR FOX 2") == 0 || - strcmp (ROMName, "YOSSY'S ISLAND") == 0 || - strcmp (ROMName, "YOSHI'S ISLAND") == 0) + if (strcmp (Memory.ROMName, "WILD TRAX") == 0 || + strcmp (Memory.ROMName, "STAR FOX 2") == 0 || + strcmp (Memory.ROMName, "YOSSY'S ISLAND") == 0 || + strcmp (Memory.ROMName, "YOSHI'S ISLAND") == 0) CPU.TriedInterleavedMode2 = TRUE; #endif // Start Trek: Deep Sleep 9 - if (strncmp (ROMId, "A9D", 3) == 0 && Settings.CyclesPercentage == 100) + if (strncmp (Memory.ROMId, "A9D", 3) == 0 && Settings.CyclesPercentage == 100) Settings.H_Max = (SNES_CYCLES_PER_SCANLINE * 110) / 100; @@ -3968,188 +3979,188 @@ void CMemory::ApplyROMFixes () SA1.WaitByteAddress2 = NULL; /* Bass Fishing */ - if (strcmp (ROMId, "ZBPJ") == 0) + if (strcmp (Memory.ROMId, "ZBPJ") == 0) { SA1.WaitAddress = SA1.Map [0x0093f1 >> MEMMAP_SHIFT] + 0x93f1; - SA1.WaitByteAddress1 = FillRAM + 0x304a; + SA1.WaitByteAddress1 = Memory.FillRAM + 0x304a; } /* DAISENRYAKU EXPERTWW2 */ - if (strcmp (ROMId, "AEVJ") == 0) + if (strcmp (Memory.ROMId, "AEVJ") == 0) { SA1.WaitAddress = SA1.Map [0x0ed18d >> MEMMAP_SHIFT] + 0xd18d; - SA1.WaitByteAddress1 = FillRAM + 0x3000; + SA1.WaitByteAddress1 = Memory.FillRAM + 0x3000; } /* debjk2 */ - if (strcmp (ROMId, "A2DJ") == 0) + if (strcmp (Memory.ROMId, "A2DJ") == 0) { SA1.WaitAddress = SA1.Map [0x008b62 >> MEMMAP_SHIFT] + 0x8b62; } /* Dragon Ballz HD */ - if (strcmp (ROMId, "AZIJ") == 0) + if (strcmp (Memory.ROMId, "AZIJ") == 0) { SA1.WaitAddress = SA1.Map [0x008083 >> MEMMAP_SHIFT] + 0x8083; - SA1.WaitByteAddress1 = FillRAM + 0x3020; + SA1.WaitByteAddress1 = Memory.FillRAM + 0x3020; } /* SFC SDGUNDAMGNEXT */ - if (strcmp (ROMId, "ZX3J") == 0) + if (strcmp (Memory.ROMId, "ZX3J") == 0) { SA1.WaitAddress = SA1.Map [0x0087f2 >> MEMMAP_SHIFT] + 0x87f2; - SA1.WaitByteAddress1 = FillRAM + 0x30c4; + SA1.WaitByteAddress1 = Memory.FillRAM + 0x30c4; } /* ShougiNoHanamichi */ - if (strcmp (ROMId, "AARJ") == 0) + if (strcmp (Memory.ROMId, "AARJ") == 0) { SA1.WaitAddress = SA1.Map [0xc1f85a >> MEMMAP_SHIFT] + 0xf85a; - SA1.WaitByteAddress1 = SRAM + 0x0c64; - SA1.WaitByteAddress2 = SRAM + 0x0c66; + SA1.WaitByteAddress1 = Memory.SRAM + 0x0c64; + SA1.WaitByteAddress2 = Memory.SRAM + 0x0c66; } /* KATO HIFUMI9DAN SYOGI */ - if (strcmp (ROMId, "A23J") == 0) + if (strcmp (Memory.ROMId, "A23J") == 0) { SA1.WaitAddress = SA1.Map [0xc25037 >> MEMMAP_SHIFT] + 0x5037; - SA1.WaitByteAddress1 = SRAM + 0x0c06; - SA1.WaitByteAddress2 = SRAM + 0x0c08; + SA1.WaitByteAddress1 = Memory.SRAM + 0x0c06; + SA1.WaitByteAddress2 = Memory.SRAM + 0x0c08; } /* idaten */ - if (strcmp (ROMId, "AIIJ") == 0) + if (strcmp (Memory.ROMId, "AIIJ") == 0) { SA1.WaitAddress = SA1.Map [0xc100be >> MEMMAP_SHIFT] + 0x00be; - SA1.WaitByteAddress1 = SRAM + 0x1002; - SA1.WaitByteAddress2 = SRAM + 0x1004; + SA1.WaitByteAddress1 = Memory.SRAM + 0x1002; + SA1.WaitByteAddress2 = Memory.SRAM + 0x1004; } /* igotais */ - if (strcmp (ROMId, "AITJ") == 0) + if (strcmp (Memory.ROMId, "AITJ") == 0) { SA1.WaitAddress = SA1.Map [0x0080b7 >> MEMMAP_SHIFT] + 0x80b7; } /* J96 DREAM STADIUM */ - if (strcmp (ROMId, "AJ6J") == 0) + if (strcmp (Memory.ROMId, "AJ6J") == 0) { SA1.WaitAddress = SA1.Map [0xc0f74a >> MEMMAP_SHIFT] + 0xf74a; } /* JumpinDerby */ - if (strcmp (ROMId, "AJUJ") == 0) + if (strcmp (Memory.ROMId, "AJUJ") == 0) { SA1.WaitAddress = SA1.Map [0x00d926 >> MEMMAP_SHIFT] + 0xd926; } /* JKAKINOKI SHOUGI */ - if (strcmp (ROMId, "AKAJ") == 0) + if (strcmp (Memory.ROMId, "AKAJ") == 0) { SA1.WaitAddress = SA1.Map [0x00f070 >> MEMMAP_SHIFT] + 0xf070; } /* HOSHI NO KIRBY 3 & KIRBY'S DREAM LAND 3 JAP & US */ - if (strcmp (ROMId, "AFJJ") == 0 || strcmp (ROMId, "AFJE") == 0) + if (strcmp (Memory.ROMId, "AFJJ") == 0 || strcmp (Memory.ROMId, "AFJE") == 0) { SA1.WaitAddress = SA1.Map [0x0082d4 >> MEMMAP_SHIFT] + 0x82d4; - SA1.WaitByteAddress1 = SRAM + 0x72a4; + SA1.WaitByteAddress1 = Memory.SRAM + 0x72a4; } /* KIRBY SUPER DELUXE JAP */ - if (strcmp (ROMId, "AKFJ") == 0) + if (strcmp (Memory.ROMId, "AKFJ") == 0) { SA1.WaitAddress = SA1.Map [0x008c93 >> MEMMAP_SHIFT] + 0x8c93; - SA1.WaitByteAddress1 = FillRAM + 0x300a; - SA1.WaitByteAddress2 = FillRAM + 0x300e; + SA1.WaitByteAddress1 = Memory.FillRAM + 0x300a; + SA1.WaitByteAddress2 = Memory.FillRAM + 0x300e; } /* KIRBY SUPER DELUXE US */ - if (strcmp (ROMId, "AKFE") == 0) + if (strcmp (Memory.ROMId, "AKFE") == 0) { SA1.WaitAddress = SA1.Map [0x008cb8 >> MEMMAP_SHIFT] + 0x8cb8; - SA1.WaitByteAddress1 = FillRAM + 0x300a; - SA1.WaitByteAddress2 = FillRAM + 0x300e; + SA1.WaitByteAddress1 = Memory.FillRAM + 0x300a; + SA1.WaitByteAddress2 = Memory.FillRAM + 0x300e; } /* SUPER MARIO RPG JAP & US */ - if (strcmp (ROMId, "ARWJ") == 0 || strcmp (ROMId, "ARWE") == 0) + if (strcmp (Memory.ROMId, "ARWJ") == 0 || strcmp (Memory.ROMId, "ARWE") == 0) { SA1.WaitAddress = SA1.Map [0xc0816f >> MEMMAP_SHIFT] + 0x816f; - SA1.WaitByteAddress1 = FillRAM + 0x3000; + SA1.WaitByteAddress1 = Memory.FillRAM + 0x3000; } /* marvelous.zip */ - if (strcmp (ROMId, "AVRJ") == 0) + if (strcmp (Memory.ROMId, "AVRJ") == 0) { SA1.WaitAddress = SA1.Map [0x0085f2 >> MEMMAP_SHIFT] + 0x85f2; - SA1.WaitByteAddress1 = FillRAM + 0x3024; + SA1.WaitByteAddress1 = Memory.FillRAM + 0x3024; } /* AUGUSTA3 MASTERS NEW */ - if (strcmp (ROMId, "AO3J") == 0) + if (strcmp (Memory.ROMId, "AO3J") == 0) { SA1.WaitAddress = SA1.Map [0x00dddb >> MEMMAP_SHIFT] + 0xdddb; - SA1.WaitByteAddress1 = FillRAM + 0x37b4; + SA1.WaitByteAddress1 = Memory.FillRAM + 0x37b4; } /* OSHABERI PARODIUS */ - if (strcmp (ROMId, "AJOJ") == 0) + if (strcmp (Memory.ROMId, "AJOJ") == 0) { SA1.WaitAddress = SA1.Map [0x8084e5 >> MEMMAP_SHIFT] + 0x84e5; } /* PANIC BOMBER WORLD */ - if (strcmp (ROMId, "APBJ") == 0) + if (strcmp (Memory.ROMId, "APBJ") == 0) { SA1.WaitAddress = SA1.Map [0x00857a >> MEMMAP_SHIFT] + 0x857a; } /* PEBBLE BEACH NEW */ - if (strcmp (ROMId, "AONJ") == 0) + if (strcmp (Memory.ROMId, "AONJ") == 0) { SA1.WaitAddress = SA1.Map [0x00df33 >> MEMMAP_SHIFT] + 0xdf33; - SA1.WaitByteAddress1 = FillRAM + 0x37b4; + SA1.WaitByteAddress1 = Memory.FillRAM + 0x37b4; } /* PGA EUROPEAN TOUR */ - if (strcmp (ROMId, "AEPE") == 0) + if (strcmp (Memory.ROMId, "AEPE") == 0) { SA1.WaitAddress = SA1.Map [0x003700 >> MEMMAP_SHIFT] + 0x3700; - SA1.WaitByteAddress1 = FillRAM + 0x3102; + SA1.WaitByteAddress1 = Memory.FillRAM + 0x3102; } /* PGA TOUR 96 */ - if (strcmp (ROMId, "A3GE") == 0) + if (strcmp (Memory.ROMId, "A3GE") == 0) { SA1.WaitAddress = SA1.Map [0x003700 >> MEMMAP_SHIFT] + 0x3700; - SA1.WaitByteAddress1 = FillRAM + 0x3102; + SA1.WaitByteAddress1 = Memory.FillRAM + 0x3102; } /* POWER RANGERS 4 */ - if (strcmp (ROMId, "A4RE") == 0) + if (strcmp (Memory.ROMId, "A4RE") == 0) { SA1.WaitAddress = SA1.Map [0x009899 >> MEMMAP_SHIFT] + 0x9899; - SA1.WaitByteAddress1 = FillRAM + 0x3000; + SA1.WaitByteAddress1 = Memory.FillRAM + 0x3000; } /* PACHISURO PALUSUPE */ - if (strcmp (ROMId, "AGFJ") == 0) + if (strcmp (Memory.ROMId, "AGFJ") == 0) { // Never seems to turn on the SA-1! } /* SD F1 GRAND PRIX */ - if (strcmp (ROMId, "AGFJ") == 0) + if (strcmp (Memory.ROMId, "AGFJ") == 0) { SA1.WaitAddress = SA1.Map [0x0181bc >> MEMMAP_SHIFT] + 0x81bc; } /* SHOUGI MARJONG */ - if (strcmp (ROMId, "ASYJ") == 0) + if (strcmp (Memory.ROMId, "ASYJ") == 0) { SA1.WaitAddress = SA1.Map [0x00f2cc >> MEMMAP_SHIFT] + 0xf2cc; - SA1.WaitByteAddress1 = SRAM + 0x7ffe; - SA1.WaitByteAddress2 = SRAM + 0x7ffc; + SA1.WaitByteAddress1 = Memory.SRAM + 0x7ffe; + SA1.WaitByteAddress2 = Memory.SRAM + 0x7ffc; } /* shogisai2 */ - if (strcmp (ROMId, "AX2J") == 0) + if (strcmp (Memory.ROMId, "AX2J") == 0) { SA1.WaitAddress = SA1.Map [0x00d675 >> MEMMAP_SHIFT] + 0xd675; } /* SHINING SCORPION */ - if (strcmp (ROMId, "A4WJ") == 0) + if (strcmp (Memory.ROMId, "A4WJ") == 0) { SA1.WaitAddress = SA1.Map [0xc048be >> MEMMAP_SHIFT] + 0x48be; } /* SHIN SHOUGI CLUB */ - if (strcmp (ROMId, "AHJJ") == 0) + if (strcmp (Memory.ROMId, "AHJJ") == 0) { SA1.WaitAddress = SA1.Map [0xc1002a >> MEMMAP_SHIFT] + 0x002a; - SA1.WaitByteAddress1 = SRAM + 0x0806; - SA1.WaitByteAddress2 = SRAM + 0x0808; + SA1.WaitByteAddress1 = Memory.SRAM + 0x0806; + SA1.WaitByteAddress2 = Memory.SRAM + 0x0808; } //Other // Additional game fixes by sanmaiwashi ... - if (strcmp (ROMName, "SFX ŲĶÞÝÀÞÑÓɶÞÀØ 1") == 0) //Gundam Knight Story + if (strcmp (Memory.ROMName, "SFX ŲĶÞÝÀÞÑÓɶÞÀØ 1") == 0) //Gundam Knight Story { bytes0x2000 [0xb18] = 0x4c; bytes0x2000 [0xb19] = 0x4b; @@ -4159,28 +4170,28 @@ void CMemory::ApplyROMFixes () // HITOMI3 - if (strcmp (ROMName, "HITOMI3") == 0) + if (strcmp (Memory.ROMName, "HITOMI3") == 0) { Memory.SRAMSize = 1; - SRAMMask = Memory.SRAMSize ? + Memory.SRAMMask = Memory.SRAMSize ? ((1 << (Memory.SRAMSize + 3)) * 128) - 1 : 0; } //sram value fixes if (strcmp (Memory.ROMName, "SUPER DRIFT OUT") == 0 || strcmp(Memory.ROMName, "SATAN IS OUR FATHER!") == 0 || - strcmp (ROMName, "goemon 4") == 0) + strcmp (Memory.ROMName, "goemon 4") == 0) SNESGameFixes.SRAMInitialValue = 0x00; #if 0 - if(strcmp (ROMName, "XBAND JAPANESE MODEM") == 0) + if(strcmp (Memory.ROMName, "XBAND JAPANESE MODEM") == 0) { for (c = 0x200; c < 0x400; c += 16) { for (int i = c; i < c + 16; i++) { - Map [i + 0x400] = Map [i + 0xc00] = &ROM[c * 0x1000]; - BlockIsRAM [i + 0x400] = BlockIsRAM [i + 0xc00] = TRUE; + Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &ROM[c * 0x1000]; + Memory.BlockIsRAM [i + 0x400] = Memory.BlockIsRAM [i + 0xc00] = TRUE; BlockIsROM [i + 0x400] = BlockIsROM [i + 0xc00] = FALSE; } } @@ -4189,12 +4200,12 @@ void CMemory::ApplyROMFixes () #endif #define RomPatch(adr,ov,nv) \ - if (ROM [adr] == ov) \ - ROM [adr] = nv + if (Memory.ROM [adr] == ov) \ + Memory.ROM [adr] = nv // Love Quest - if (strcmp (ROMName, "LOVE QUEST") == 0) + if (strcmp (Memory.ROMName, "LOVE QUEST") == 0) { RomPatch (0x1385ec, 0xd0, 0xea); RomPatch (0x1385ed, 0xb2, 0xea); @@ -4204,13 +4215,13 @@ void CMemory::ApplyROMFixes () //seems like the next instruction is a BRA //otherwise, this one's too complex for MKendora // Nangoku Syonen Papuwa Kun - if (strcmp (ROMName, "NANGOKUSYONEN PAPUWA") == 0) + if (strcmp (Memory.ROMName, "NANGOKUSYONEN PAPUWA") == 0) RomPatch (0x1f0d1, 0xa0, 0x6b); //turns an LDY into an RTL? //this is a cmp on $00:2140 // Super Batter Up - if (strcmp (ROMName, "Super Batter Up") == 0) + if (strcmp (Memory.ROMName, "Super Batter Up") == 0) { RomPatch (0x27ae0, 0xd0, 0xea); RomPatch (0x27ae1, 0xfa, 0xea); @@ -4234,7 +4245,7 @@ static long ReadInt (FILE *f, unsigned nbytes) #define IPS_EOF 0x00454F46l -void CMemory::CheckForIPSPatch (const char *rom_filename, bool8 header, +void CheckForIPSPatch (const char *rom_filename, bool8 header, int32* rom_size) { char dir [_MAX_DIR + 1]; @@ -4293,7 +4304,7 @@ void CMemory::CheckForIPSPatch (const char *rom_filename, bool8 header, rchar = fgetc (patch_file); if (rchar == EOF) goto err_eof; - ROM [ofs++] = (uint8) rchar; + Memory.ROM [ofs++] = (uint8) rchar; } if (ofs > *rom_size) *rom_size = ofs; @@ -4312,7 +4323,7 @@ void CMemory::CheckForIPSPatch (const char *rom_filename, bool8 header, goto err_eof; while (rlen--) - ROM [ofs++] = (uint8) rchar; + Memory.ROM [ofs++] = (uint8) rchar; if (ofs > *rom_size) *rom_size = ofs; @@ -4422,22 +4433,22 @@ int check_char(unsigned c) return 0; } -void CMemory::ParseSNESHeader(uint8* RomHeader) +void ParseSNESHeader(uint8* RomHeader) { Memory.SRAMSize = RomHeader [0x28]; - strncpy (ROMName, (char *) &RomHeader[0x10], ROM_NAME_LEN - 1); - ROMSpeed = RomHeader [0x25]; - ROMType = RomHeader [0x26]; - ROMSize = RomHeader [0x27]; - ROMChecksum = RomHeader [0x2e] + (RomHeader [0x2f] << 8); - ROMComplementChecksum = RomHeader [0x2c] + (RomHeader [0x2d] << 8); - ROMRegion= RomHeader[0x29]; + strncpy (Memory.ROMName, (char *) &RomHeader[0x10], ROM_NAME_LEN - 1); + Memory.ROMSpeed = RomHeader [0x25]; + Memory.ROMType = RomHeader [0x26]; + Memory.ROMSize = RomHeader [0x27]; + Memory.ROMChecksum = RomHeader [0x2e] + (RomHeader [0x2f] << 8); + Memory.ROMComplementChecksum = RomHeader [0x2c] + (RomHeader [0x2d] << 8); + Memory.ROMRegion= RomHeader[0x29]; // memmove converted: Different mallocs [Neb] - memcpy (ROMId, &RomHeader [0x2], 4); + memcpy (Memory.ROMId, &RomHeader [0x2], 4); if(RomHeader[0x2A]==0x33) // memmove converted: Different mallocs [Neb] - memcpy (CompanyId, &RomHeader [0], 2); - else sprintf(CompanyId, "%02X", RomHeader[0x2A]); + memcpy (Memory.CompanyId, &RomHeader [0], 2); + else sprintf(Memory.CompanyId, "%02X", RomHeader[0x2A]); } #undef INLINE diff --git a/source/memmap.h b/source/memmap.h index 9186f32..4ea48c0 100644 --- a/source/memmap.h +++ b/source/memmap.h @@ -246,9 +246,9 @@ typedef struct void ResetSpeedMap(); extern CMemory Memory; -extern uint8 *SRAM; -extern uint8 *ROM; -extern uint8 *RegRAM; +extern uint8 *SRAM_g; +extern uint8 *ROM_g; +extern uint8 *RegRAM_g; void S9xDeinterleaveMode2 (); bool8 LoadZip(const char* zipname, int32 *TotalFileSize, diff --git a/source/ppu.c b/source/ppu.c index 4a22ede..3820ce3 100644 --- a/source/ppu.c +++ b/source/ppu.c @@ -2364,7 +2364,7 @@ void S9xProcessMouse (int which1) int x, y; uint32 buttons; - if ((IPPU.Controller == SNES_MOUSE || IPPU.Controller == SNES_MOUSE_SWAPPED) && S9xReadMousePosition (which1, x, y, buttons)) + if ((IPPU.Controller == SNES_MOUSE || IPPU.Controller == SNES_MOUSE_SWAPPED) && S9xReadMousePosition (which1, &x, &y, &buttons)) { int delta_x, delta_y; #define MOUSE_SIGNATURE 0x1 @@ -2432,7 +2432,7 @@ void ProcessSuperScope () uint32 buttons; if (IPPU.Controller == SNES_SUPERSCOPE && - S9xReadSuperScopePosition (x, y, buttons)) + S9xReadSuperScopePosition (&x, &y, &buttons)) { #define SUPERSCOPE_SIGNATURE 0x00ff uint32 scope; @@ -2535,7 +2535,7 @@ void S9xUpdateJustifiers() if(Memory.FillRAM[0x4201]&0x80) { - S9xReadSuperScopePosition(x,y,buttons); + S9xReadSuperScopePosition(&x,&y,&buttons); x+=40; if (x > 295) diff --git a/source/sa1.c b/source/sa1.c index 36a9ff6..224fa44 100644 --- a/source/sa1.c +++ b/source/sa1.c @@ -159,10 +159,10 @@ void S9xSA1SetBWRAMMemMap (uint8 val) { for (c = 0; c < 0x400; c += 16) { - SA1.Map [c + 6] = SA1.Map [c + 0x806] = (uint8 *) CMemory::MAP_BWRAM_BITMAP2; - SA1.Map [c + 7] = SA1.Map [c + 0x807] = (uint8 *) CMemory::MAP_BWRAM_BITMAP2; - SA1.WriteMap [c + 6] = SA1.WriteMap [c + 0x806] = (uint8 *) CMemory::MAP_BWRAM_BITMAP2; - SA1.WriteMap [c + 7] = SA1.WriteMap [c + 0x807] = (uint8 *) CMemory::MAP_BWRAM_BITMAP2; + SA1.Map [c + 6] = SA1.Map [c + 0x806] = (uint8 *) MAP_BWRAM_BITMAP2; + SA1.Map [c + 7] = SA1.Map [c + 0x807] = (uint8 *) MAP_BWRAM_BITMAP2; + SA1.WriteMap [c + 6] = SA1.WriteMap [c + 0x806] = (uint8 *) MAP_BWRAM_BITMAP2; + SA1.WriteMap [c + 7] = SA1.WriteMap [c + 0x807] = (uint8 *) MAP_BWRAM_BITMAP2; } SA1.BWRAM = Memory.SRAM + (val & 0x7f) * 0x2000 / 4; } @@ -170,10 +170,10 @@ void S9xSA1SetBWRAMMemMap (uint8 val) { for (c = 0; c < 0x400; c += 16) { - SA1.Map [c + 6] = SA1.Map [c + 0x806] = (uint8 *) CMemory::MAP_BWRAM; - SA1.Map [c + 7] = SA1.Map [c + 0x807] = (uint8 *) CMemory::MAP_BWRAM; - SA1.WriteMap [c + 6] = SA1.WriteMap [c + 0x806] = (uint8 *) CMemory::MAP_BWRAM; - SA1.WriteMap [c + 7] = SA1.WriteMap [c + 0x807] = (uint8 *) CMemory::MAP_BWRAM; + SA1.Map [c + 6] = SA1.Map [c + 0x806] = (uint8 *) MAP_BWRAM; + SA1.Map [c + 7] = SA1.Map [c + 0x807] = (uint8 *) MAP_BWRAM; + SA1.WriteMap [c + 6] = SA1.WriteMap [c + 0x806] = (uint8 *) MAP_BWRAM; + SA1.WriteMap [c + 7] = SA1.WriteMap [c + 0x807] = (uint8 *) MAP_BWRAM; } SA1.BWRAM = Memory.SRAM + (val & 7) * 0x2000; } @@ -198,32 +198,32 @@ void S9xFixSA1AfterSnapshotLoad () uint8 S9xSA1GetByte (uint32 address) { uint8 *GetAddress = SA1.Map [(address >> MEMMAP_SHIFT) & MEMMAP_MASK]; - if (GetAddress >= (uint8 *) CMemory::MAP_LAST) + if (GetAddress >= (uint8 *) MAP_LAST) return (*(GetAddress + (address & 0xffff))); switch ((intptr_t) GetAddress) { - case CMemory::MAP_PPU: + case MAP_PPU: return (S9xGetSA1 (address & 0xffff)); - case CMemory::MAP_LOROM_SRAM: - case CMemory::MAP_SA1RAM: + case MAP_LOROM_SRAM: + case MAP_SA1RAM: return (*(Memory.SRAM + (address & 0xffff))); - case CMemory::MAP_BWRAM: + case MAP_BWRAM: return (*(SA1.BWRAM + ((address & 0x7fff) - 0x6000))); - case CMemory::MAP_BWRAM_BITMAP: + case MAP_BWRAM_BITMAP: address -= 0x600000; if (SA1.VirtualBitmapFormat == 2) return ((Memory.SRAM [(address >> 2) & 0xffff] >> ((address & 3) << 1)) & 3); else return ((Memory.SRAM [(address >> 1) & 0xffff] >> ((address & 1) << 2)) & 15); - case CMemory::MAP_BWRAM_BITMAP2: + case MAP_BWRAM_BITMAP2: address = (address & 0xffff) - 0x6000; if (SA1.VirtualBitmapFormat == 2) return ((SA1.BWRAM [(address >> 2) & 0xffff] >> ((address & 3) << 1)) & 3); else return ((SA1.BWRAM [(address >> 1) & 0xffff] >> ((address & 1) << 2)) & 15); - case CMemory::MAP_DEBUG: + case MAP_DEBUG: default: return OpenBus; } @@ -239,7 +239,7 @@ void S9xSA1SetByte (uint8 byte, uint32 address) { uint8 *Setaddress = SA1.WriteMap [(address >> MEMMAP_SHIFT) & MEMMAP_MASK]; - if (Setaddress >= (uint8 *) CMemory::MAP_LAST) + if (Setaddress >= (uint8 *) MAP_LAST) { *(Setaddress + (address & 0xffff)) = byte; return; @@ -247,17 +247,17 @@ void S9xSA1SetByte (uint8 byte, uint32 address) switch ((intptr_t) Setaddress) { - case CMemory::MAP_PPU: + case MAP_PPU: S9xSetSA1 (byte, address & 0xffff); return; - case CMemory::MAP_SA1RAM: - case CMemory::MAP_LOROM_SRAM: + case MAP_SA1RAM: + case MAP_LOROM_SRAM: *(Memory.SRAM + (address & 0xffff)) = byte; return; - case CMemory::MAP_BWRAM: + case MAP_BWRAM: *(SA1.BWRAM + ((address & 0x7fff) - 0x6000)) = byte; return; - case CMemory::MAP_BWRAM_BITMAP: + case MAP_BWRAM_BITMAP: address -= 0x600000; if (SA1.VirtualBitmapFormat == 2) { @@ -272,7 +272,7 @@ void S9xSA1SetByte (uint8 byte, uint32 address) *ptr |= (byte & 15) << ((address & 1) << 2); } break; - case CMemory::MAP_BWRAM_BITMAP2: + case MAP_BWRAM_BITMAP2: address = (address & 0xffff) - 0x6000; if (SA1.VirtualBitmapFormat == 2) { @@ -300,7 +300,7 @@ void S9xSA1SetWord (uint16 Word, uint32 address) void S9xSA1SetPCBase (uint32 address) { uint8 *GetAddress = SA1.Map [(address >> MEMMAP_SHIFT) & MEMMAP_MASK]; - if (GetAddress >= (uint8 *) CMemory::MAP_LAST) + if (GetAddress >= (uint8 *) MAP_LAST) { SA1.PCBase = GetAddress; SA1.PC = GetAddress + (address & 0xffff); @@ -309,40 +309,40 @@ void S9xSA1SetPCBase (uint32 address) switch ((intptr_t) GetAddress) { - case CMemory::MAP_PPU: + case MAP_PPU: SA1.PCBase = Memory.FillRAM - 0x2000; SA1.PC = SA1.PCBase + (address & 0xffff); return; - case CMemory::MAP_CPU: + case MAP_CPU: SA1.PCBase = Memory.FillRAM - 0x4000; SA1.PC = SA1.PCBase + (address & 0xffff); return; - case CMemory::MAP_DSP: + case MAP_DSP: SA1.PCBase = Memory.FillRAM - 0x6000; SA1.PC = SA1.PCBase + (address & 0xffff); return; - case CMemory::MAP_SA1RAM: - case CMemory::MAP_LOROM_SRAM: + case MAP_SA1RAM: + case MAP_LOROM_SRAM: SA1.PCBase = Memory.SRAM; SA1.PC = SA1.PCBase + (address & 0xffff); return; - case CMemory::MAP_BWRAM: + case MAP_BWRAM: SA1.PCBase = SA1.BWRAM - 0x6000; SA1.PC = SA1.PCBase + (address & 0xffff); return; - case CMemory::MAP_HIROM_SRAM: + case MAP_HIROM_SRAM: SA1.PCBase = Memory.SRAM - 0x6000; SA1.PC = SA1.PCBase + (address & 0xffff); return; - case CMemory::MAP_DEBUG: + case MAP_DEBUG: default: - case CMemory::MAP_NONE: + case MAP_NONE: SA1.PCBase = Memory.RAM; SA1.PC = Memory.RAM + (address & 0xffff); return; @@ -734,7 +734,7 @@ void S9xSetSA1 (uint8 byte, uint32 address) { // Char conversion 2 DMA enabled // memmove converted: Same malloc but constant non-overlapping addresses [Neb] - memcpy (&Memory.ROM [CMemory::MAX_ROM_SIZE - 0x10000] + SA1.in_char_dma * 16, + memcpy (&Memory.ROM [MAX_ROM_SIZE - 0x10000] + SA1.in_char_dma * 16, &Memory.FillRAM [0x2240], 16); SA1.in_char_dma = (SA1.in_char_dma + 1) & 7; if ((SA1.in_char_dma & 3) == 0) @@ -810,7 +810,7 @@ static void S9xSA1CharConv2 () (Memory.FillRAM [0x2231] & 3) == 1 ? 4 : 2; int bytes_per_char = 8 * depth; uint8 *p = &Memory.FillRAM [0x3000] + dest + offset * bytes_per_char; - uint8 *q = &Memory.ROM [CMemory::MAX_ROM_SIZE - 0x10000] + offset * 64; + uint8 *q = &Memory.ROM [MAX_ROM_SIZE - 0x10000] + offset * 64; switch (depth) { @@ -857,7 +857,7 @@ static void S9xSA1DMA () { case 0: // ROM s = SA1.Map [(src >> MEMMAP_SHIFT) & MEMMAP_MASK]; - if (s >= (uint8 *) CMemory::MAP_LAST) + if (s >= (uint8 *) MAP_LAST) s += (src & 0xffff); else s = Memory.ROM + (src & 0xffff); |