diff options
Diffstat (limited to 'src/memmap.h')
-rw-r--r-- | src/memmap.h | 216 |
1 files changed, 109 insertions, 107 deletions
diff --git a/src/memmap.h b/src/memmap.h index 6f82f0a..fd6c591 100644 --- a/src/memmap.h +++ b/src/memmap.h @@ -4,7 +4,7 @@ * (c) Copyright 1996 - 2001 Gary Henderson (gary.henderson@ntlworld.com) and * Jerremy Koot (jkoot@snes9x.com) * - * Super FX C emulator code + * Super FX C emulator code * (c) Copyright 1997 - 1999 Ivar (ivar@snes9x.com) and * Gary Henderson. * Super FX assembler emulator code (c) Copyright 1998 zsKnight and _Demo_. @@ -50,14 +50,14 @@ #define WRITE_DWORD(s, d) *(uint32 *) (s) = (d) #define READ_3WORD(s) ((*(uint32 *) (s)) & 0x00FFFFFF) #define WRITE_3WORD(s, d) *(uint16 *) (s) = (uint16) (d), \ - *((uint8 *) (s) + 2) = (uint8) ((d) >> 16) + *((uint8 *) (s) + 2) = (uint8) ((d) >> 16) #else #define READ_WORD(s) ( *(uint8 *) (s) |\ - (*((uint8 *) (s) + 1) << 8)) + (*((uint8 *) (s) + 1) << 8)) #define READ_DWORD(s) ( *(uint8 *) (s) |\ - (*((uint8 *) (s) + 1) << 8) |\ - (*((uint8 *) (s) + 2) << 16) |\ - (*((uint8 *) (s) + 3) << 24)) + (*((uint8 *) (s) + 1) << 8) |\ + (*((uint8 *) (s) + 2) << 16) |\ + (*((uint8 *) (s) + 3) << 24)) #define WRITE_WORD(s, d) *(uint8 *) (s) = (d), \ *((uint8 *) (s) + 1) = (d) >> 8 #define WRITE_DWORD(s, d) *(uint8 *) (s) = (uint8) (d), \ @@ -70,7 +70,7 @@ #define READ_3WORD(s) ( *(uint8 *) (s) |\ (*((uint8 *) (s) + 1) << 8) |\ (*((uint8 *) (s) + 2) << 16)) - + #endif #define MEMMAP_BLOCK_SIZE (0x1000) @@ -80,114 +80,116 @@ #define MEMMAP_MASK (MEMMAP_BLOCK_SIZE - 1) #define MEMMAP_MAX_SDD1_LOGGED_ENTRIES (0x10000 / 8) - bool8_32 LoadROM (const char *); - void InitROM (bool8_32); - bool8_32 LoadSRAM (const char *); - bool8_32 SaveSRAM (const char *); - bool8_32 MemoryInit (); - void MemoryDeinit (); - void FreeSDD1Data (); - - void WriteProtectROM (); - void FixROMSpeed (); - void MapRAM (); - void MapExtraRAM (); - char *Safe (const char *); - - void LoROMMap (); - void LoROM24MBSMap (); - void SRAM512KLoROMMap (); - void SRAM1024KLoROMMap (); - void SufamiTurboLoROMMap (); - void HiROMMap (); - void SuperFXROMMap (); - void TalesROMMap (bool8_32); - void AlphaROMMap (); - void SA1ROMMap (); - void BSHiROMMap (); - bool8_32 AllASCII (uint8 *b, int size); - int ScoreHiROM (bool8_32 skip_header); - int ScoreLoROM (bool8_32 skip_header); - void ApplyROMFixes (); - void CheckForIPSPatch (const char *rom_filename, bool8_32 header, - int32 *rom_size); - - const char *TVStandard (); - const char *Speed (); - const char *StaticRAMSize (); - const char *MapType (); - const char *MapMode (); - const char *KartContents (); - const char *Size (); - const char *Headers (); - const char *ROMID (); - const char *CompanyID (); - uint32 caCRC32(uint8 *array, uint32 size); - - enum { - MAP_PPU, MAP_CPU, MAP_DSP, MAP_LOROM_SRAM, MAP_HIROM_SRAM, - MAP_NONE, MAP_DEBUG, MAP_C4, MAP_BWRAM, MAP_BWRAM_BITMAP, - MAP_BWRAM_BITMAP2, MAP_SA1RAM, MAP_LAST - }; - enum { MAX_ROM_SIZE = 0x600000 }; -typedef struct { +bool8_32 LoadROM(const char*); +void InitROM(bool8_32); +bool8_32 LoadSRAM(const char*); +bool8_32 SaveSRAM(const char*); +bool8_32 MemoryInit(); +void MemoryDeinit(); +void FreeSDD1Data(); + +void WriteProtectROM(); +void FixROMSpeed(); +void MapRAM(); +void MapExtraRAM(); +char* Safe(const char*); + +void LoROMMap(); +void LoROM24MBSMap(); +void SRAM512KLoROMMap(); +void SRAM1024KLoROMMap(); +void SufamiTurboLoROMMap(); +void HiROMMap(); +void SuperFXROMMap(); +void TalesROMMap(bool8_32); +void AlphaROMMap(); +void SA1ROMMap(); +void BSHiROMMap(); +bool8_32 AllASCII(uint8* b, int size); +int ScoreHiROM(bool8_32 skip_header); +int ScoreLoROM(bool8_32 skip_header); +void ApplyROMFixes(); +void CheckForIPSPatch(const char* rom_filename, bool8_32 header, + int32* rom_size); + +const char* TVStandard(); +const char* Speed(); +const char* StaticRAMSize(); +const char* MapType(); +const char* MapMode(); +const char* KartContents(); +const char* Size(); +const char* Headers(); +const char* ROMID(); +const char* CompanyID(); +uint32 caCRC32(uint8* array, uint32 size); + +enum +{ + MAP_PPU, MAP_CPU, MAP_DSP, MAP_LOROM_SRAM, MAP_HIROM_SRAM, + MAP_NONE, MAP_DEBUG, MAP_C4, MAP_BWRAM, MAP_BWRAM_BITMAP, + MAP_BWRAM_BITMAP2, MAP_SA1RAM, MAP_LAST +}; +enum { MAX_ROM_SIZE = 0x600000 }; +typedef struct +{ - uint8 *RAM; - uint8 *ROM; - uint8 *VRAM; - uint8 *SRAM; - uint8 *BWRAM; - uint8 *FillRAM; - uint8 *C4RAM; - bool8_32 HiROM; - bool8_32 LoROM; - uint16 SRAMMask; - uint8 SRAMSize; - uint8 *Map [MEMMAP_NUM_BLOCKS]; - uint8 *WriteMap [MEMMAP_NUM_BLOCKS]; - uint32 MemorySpeed [MEMMAP_NUM_BLOCKS]; - uint8 BlockIsRAM [MEMMAP_NUM_BLOCKS]; - uint8 BlockIsROM [MEMMAP_NUM_BLOCKS]; - char ROMName [ROM_NAME_LEN]; - char ROMId [5]; - char CompanyId [3]; - uint8 ROMSpeed; - uint8 ROMType; - uint8 ROMSize; - int32 ROMFramesPerSecond; - int32 HeaderCount; - uint32 CalculatedSize; - uint32 CalculatedChecksum; - uint32 ROMChecksum; - uint32 ROMComplementChecksum; - uint8 *SDD1Index; - uint8 *SDD1Data; - uint32 SDD1Entries; - uint32 SDD1LoggedDataCountPrev; - uint32 SDD1LoggedDataCount; - uint8 SDD1LoggedData [MEMMAP_MAX_SDD1_LOGGED_ENTRIES]; - char ROMFilename [_MAX_PATH]; -}CMemory; + uint8* RAM; + uint8* ROM; + uint8* VRAM; + uint8* SRAM; + uint8* BWRAM; + uint8* FillRAM; + uint8* C4RAM; + bool8_32 HiROM; + bool8_32 LoROM; + uint16 SRAMMask; + uint8 SRAMSize; + uint8* Map [MEMMAP_NUM_BLOCKS]; + uint8* WriteMap [MEMMAP_NUM_BLOCKS]; + uint32 MemorySpeed [MEMMAP_NUM_BLOCKS]; + uint8 BlockIsRAM [MEMMAP_NUM_BLOCKS]; + uint8 BlockIsROM [MEMMAP_NUM_BLOCKS]; + char ROMName [ROM_NAME_LEN]; + char ROMId [5]; + char CompanyId [3]; + uint8 ROMSpeed; + uint8 ROMType; + uint8 ROMSize; + int32 ROMFramesPerSecond; + int32 HeaderCount; + uint32 CalculatedSize; + uint32 CalculatedChecksum; + uint32 ROMChecksum; + uint32 ROMComplementChecksum; + uint8* SDD1Index; + uint8* SDD1Data; + uint32 SDD1Entries; + uint32 SDD1LoggedDataCountPrev; + uint32 SDD1LoggedDataCount; + uint8 SDD1LoggedData [MEMMAP_MAX_SDD1_LOGGED_ENTRIES]; + char ROMFilename [_MAX_PATH]; +} CMemory; START_EXTERN_C extern CMemory Memory; -extern uint8 *SRAM; -extern uint8 *ROM; -extern uint8 *RegRAM; -void S9xDeinterleaveMode2 (); -void S9xSaveSRAM (void); +extern uint8* SRAM; +extern uint8* ROM; +extern uint8* RegRAM; +void S9xDeinterleaveMode2(); +void S9xSaveSRAM(void); END_EXTERN_C -void S9xAutoSaveSRAM (); +void S9xAutoSaveSRAM(); #ifdef NO_INLINE_SET_GET -uint8 S9xGetByte (uint32 Address, struct SCPUState *); -uint16 S9xGetWord (uint32 Address, struct SCPUState *); -void S9xSetByte (uint8 Byte, uint32 Address, struct SCPUState * ); -void S9xSetWord (uint16 Byte, uint32 Address, struct SCPUState *); -void S9xSetPCBase (uint32 Address, struct SCPUState *); -uint8 *S9xGetMemPointer (uint32 Address); -uint8 *GetBasePointer (uint32 Address); +uint8 S9xGetByte(uint32 Address, struct SCPUState*); +uint16 S9xGetWord(uint32 Address, struct SCPUState*); +void S9xSetByte(uint8 Byte, uint32 Address, struct SCPUState*); +void S9xSetWord(uint16 Byte, uint32 Address, struct SCPUState*); +void S9xSetPCBase(uint32 Address, struct SCPUState*); +uint8* S9xGetMemPointer(uint32 Address); +uint8* GetBasePointer(uint32 Address); #else #ifndef INLINE #define INLINE inline |