diff options
Diffstat (limited to 'source/memmap.h')
-rw-r--r-- | source/memmap.h | 237 |
1 files changed, 119 insertions, 118 deletions
diff --git a/source/memmap.h b/source/memmap.h index 2d83852..3304095 100644 --- a/source/memmap.h +++ b/source/memmap.h @@ -1,6 +1,6 @@ /******************************************************************************* Snes9x - Portable Super Nintendo Entertainment System (TM) emulator. - + (c) Copyright 1996 - 2002 Gary Henderson (gary.henderson@ntlworld.com) and Jerremy Koot (jkoot@snes9x.com) @@ -43,46 +43,46 @@ S-DD1 C emulator code (c) Copyright 2003 Brad Jorsch with research by Andreas Naive and John Weidman - + S-RTC C emulator code (c) Copyright 2001 John Weidman - + ST010 C++ emulator code (c) Copyright 2003 Feather, Kris Bleakley, John Weidman and Matthew Kendora - Super FX x86 assembler emulator code - (c) Copyright 1998 - 2003 zsKnight, _Demo_, and pagefault + Super FX x86 assembler emulator code + (c) Copyright 1998 - 2003 zsKnight, _Demo_, and pagefault - Super FX C emulator code + Super FX C emulator code (c) Copyright 1997 - 1999 Ivar, Gary Henderson and John Weidman SH assembler code partly based on x86 assembler code - (c) Copyright 2002 - 2004 Marcus Comstedt (marcus@mc.pp.se) + (c) Copyright 2002 - 2004 Marcus Comstedt (marcus@mc.pp.se) + - Specific ports contains the works of other authors. See headers in individual files. - + Snes9x homepage: http://www.snes9x.com - + Permission to use, copy, modify and distribute Snes9x in both binary and source form, for non-commercial purposes, is hereby granted without fee, providing that this license information and copyright notice appear with all copies and any derived work. - + This software is provided 'as-is', without any express or implied warranty. In no event shall the authors be held liable for any damages arising from the use of this software. - + Snes9x is freeware for PERSONAL USE only. Commercial users should seek permission of the copyright holders first. Commercial use includes charging money for Snes9x or software derived from Snes9x. - + The copyright holders request that bug fixes and improvements to the code should be forwarded to them so everyone can benefit from the modifications in future versions. - + Super NES and Super Nintendo Entertainment System are trademarks of Nintendo Co., Limited and its subsidiary companies. *******************************************************************************/ @@ -105,11 +105,11 @@ #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), \ @@ -137,132 +137,133 @@ #define BIGFIRST 2 #define SMALLFIRST 3 -bool8 LoadROM (const char *); -uint32 FileLoader (uint8* buffer, const char* filename, int32 maxsize); -void InitROM (bool8); -bool8 LoadSRAM (const char *); -bool8 SaveSRAM (const char *); -bool8 Init (); -void Deinit (); -void FreeSDD1Data (); - -void WriteProtectROM (); -void FixROMSpeed (); -void MapRAM (); -void MapExtraRAM (); -char *Safe (const char *); +bool8 LoadROM(const char*); +uint32 FileLoader(uint8* buffer, const char* filename, int32 maxsize); +void InitROM(bool8); +bool8 LoadSRAM(const char*); +bool8 SaveSRAM(const char*); +bool8 Init(); +void Deinit(); +void FreeSDD1Data(); + +void WriteProtectROM(); +void FixROMSpeed(); +void MapRAM(); +void MapExtraRAM(); +char* Safe(const char*); void BSLoROMMap(); -void JumboLoROMMap (bool8); -void LoROMMap (); -void LoROM24MBSMap (); -void SRAM512KLoROMMap (); +void JumboLoROMMap(bool8); +void LoROMMap(); +void LoROM24MBSMap(); +void SRAM512KLoROMMap(); // void SRAM1024KLoROMMap (); -void SufamiTurboLoROMMap (); -void HiROMMap (); -void SuperFXROMMap (); -void TalesROMMap (bool8); -void AlphaROMMap (); -void SA1ROMMap (); -void BSHiROMMap (); +void SufamiTurboLoROMMap(); +void HiROMMap(); +void SuperFXROMMap(); +void TalesROMMap(bool8); +void AlphaROMMap(); +void SA1ROMMap(); +void BSHiROMMap(); void SPC7110HiROMMap(); void SPC7110Sram(uint8); void SetaDSPMap(); -bool8 AllASCII (uint8 *b, int size); -int ScoreHiROM (bool8 skip_header, int32 offset); -int ScoreLoROM (bool8 skip_header, int32 offset); +bool8 AllASCII(uint8* b, int size); +int ScoreHiROM(bool8 skip_header, int32 offset); +int ScoreLoROM(bool8 skip_header, int32 offset); #if 0 void SufamiTurboAltROMMap(); #endif -void ApplyROMFixes (); -void CheckForIPSPatch (const char *rom_filename, bool8 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 (); +void ApplyROMFixes(); +void CheckForIPSPatch(const char* rom_filename, bool8 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(); void ParseSNESHeader(uint8*); -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_SPC7110_ROM, MAP_SPC7110_DRAM, -MAP_RONLY_SRAM, MAP_OBC_RAM, MAP_SETA_DSP, MAP_SETA_RISC, MAP_LAST +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_SPC7110_ROM, MAP_SPC7110_DRAM, + MAP_RONLY_SRAM, MAP_OBC_RAM, MAP_SETA_DSP, MAP_SETA_RISC, MAP_LAST }; enum { MAX_ROM_SIZE = 0x800000 }; typedef struct { - uint8 *RAM; - uint8 *ROM; - uint8 *VRAM; - uint8 *SRAM; - uint8 *BWRAM; - uint8 *FillRAM; - uint8 *C4RAM; - bool8 HiROM; - bool8 LoROM; - uint32 SRAMMask; - uint8 SRAMSize; - uint8 *Map [MEMMAP_NUM_BLOCKS]; - uint8 *WriteMap [MEMMAP_NUM_BLOCKS]; - uint8 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]; - uint8 ROMRegion; - uint32 ROMCRC32; - uint8 ExtendedFormat; - uint8 *BSRAM; + uint8* RAM; + uint8* ROM; + uint8* VRAM; + uint8* SRAM; + uint8* BWRAM; + uint8* FillRAM; + uint8* C4RAM; + bool8 HiROM; + bool8 LoROM; + uint32 SRAMMask; + uint8 SRAMSize; + uint8* Map [MEMMAP_NUM_BLOCKS]; + uint8* WriteMap [MEMMAP_NUM_BLOCKS]; + uint8 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]; + uint8 ROMRegion; + uint32 ROMCRC32; + uint8 ExtendedFormat; + uint8* BSRAM; #if 0 - bool8 LoadMulti (const char *,const char *,const char *); + bool8 LoadMulti(const char*, const char*, const char*); #endif -}CMemory; +} CMemory; void ResetSpeedMap(); extern CMemory Memory; -void S9xDeinterleaveMode2 (); +void S9xDeinterleaveMode2(); bool8 LoadZip(const char* zipname, - int32 *TotalFileSize, - int32 *headers, - uint8 *buffer); + int32* TotalFileSize, + int32* headers, + uint8* buffer); -void S9xAutoSaveSRAM (); +void S9xAutoSaveSRAM(); #ifdef NO_INLINE_SET_GET -uint8 S9xGetByte (uint32 Address); -uint16 S9xGetWord (uint32 Address); -void S9xSetByte (uint8 Byte, uint32 Address); -void S9xSetWord (uint16 Byte, uint32 Address); -void S9xSetPCBase (uint32 Address); -uint8 *S9xGetMemPointer (uint32 Address); -uint8 *GetBasePointer (uint32 Address); +uint8 S9xGetByte(uint32 Address); +uint16 S9xGetWord(uint32 Address); +void S9xSetByte(uint8 Byte, uint32 Address); +void S9xSetWord(uint16 Byte, uint32 Address); +void S9xSetPCBase(uint32 Address); +uint8* S9xGetMemPointer(uint32 Address); +uint8* GetBasePointer(uint32 Address); extern uint8 OpenBus; |