mirror of https://github.com/PCSX2/pcsx2.git
BIOS: Map the entire ROM1 file to PS2 memory
EROM is part of ROM1, its exact location vary and can't be predicted
This commit is contained in:
parent
149a08914e
commit
8fbb1e5565
|
@ -99,12 +99,12 @@ void iopMemoryReserve::Reset()
|
|||
//psxMemWLUT[0xbf80] = (uptr)iopHw;
|
||||
|
||||
// Read-only memory areas, so don't map WLUT for these...
|
||||
for (int i=0; i<0x0040; i++)
|
||||
for (int i = 0; i < 0x0040; i++)
|
||||
{
|
||||
psxMemWLUT[i + 0x2000 + 0x1fc0] = (uptr)&eeMem->ROM[i << 16];
|
||||
}
|
||||
|
||||
for (int i=0; i<0x0004; i++)
|
||||
for (int i = 0; i < 0x0040; i++)
|
||||
{
|
||||
psxMemWLUT[i + 0x2000 + 0x1e00] = (uptr)&eeMem->ROM1[i << 16];
|
||||
}
|
||||
|
|
|
@ -154,10 +154,9 @@ void memMapPhy()
|
|||
vtlb_MapHandler(null_handler, Ps2MemSize::MainRam, 0x10000000 - Ps2MemSize::MainRam);
|
||||
|
||||
// Various ROMs (all read-only)
|
||||
vtlb_MapBlock(eeMem->ROM, 0x1fc00000,Ps2MemSize::Rom);
|
||||
vtlb_MapBlock(eeMem->ROM1, 0x1e000000,Ps2MemSize::Rom1);
|
||||
vtlb_MapBlock(eeMem->ROM2, 0x1e400000,Ps2MemSize::Rom2);
|
||||
vtlb_MapBlock(eeMem->EROM, 0x1e040000,Ps2MemSize::ERom);
|
||||
vtlb_MapBlock(eeMem->ROM, 0x1fc00000, Ps2MemSize::Rom);
|
||||
vtlb_MapBlock(eeMem->ROM1, 0x1e000000, Ps2MemSize::Rom1);
|
||||
vtlb_MapBlock(eeMem->ROM2, 0x1e400000, Ps2MemSize::Rom2);
|
||||
|
||||
// IOP memory
|
||||
// (used by the EE Bios Kernel during initial hardware initialization, Apps/Games
|
||||
|
|
|
@ -72,14 +72,14 @@ static __fi void ZeroQWC( u128& dest )
|
|||
#define psRu32(mem) (*(u32*)&eeMem->ROM[(mem) & 0x3fffff])
|
||||
#define psRu64(mem) (*(u64*)&eeMem->ROM[(mem) & 0x3fffff])
|
||||
|
||||
#define psR1s8(mem) (*(s8 *)&eeMem->ROM1[(mem) & 0x3ffff])
|
||||
#define psR1s16(mem) (*(s16*)&eeMem->ROM1[(mem) & 0x3ffff])
|
||||
#define psR1s32(mem) (*(s32*)&eeMem->ROM1[(mem) & 0x3ffff])
|
||||
#define psR1s64(mem) (*(s64*)&eeMem->ROM1[(mem) & 0x3ffff])
|
||||
#define psR1u8(mem) (*(u8 *)&eeMem->ROM1[(mem) & 0x3ffff])
|
||||
#define psR1u16(mem) (*(u16*)&eeMem->ROM1[(mem) & 0x3ffff])
|
||||
#define psR1u32(mem) (*(u32*)&eeMem->ROM1[(mem) & 0x3ffff])
|
||||
#define psR1u64(mem) (*(u64*)&eeMem->ROM1[(mem) & 0x3ffff])
|
||||
#define psR1s8(mem) (*(s8 *)&eeMem->ROM1[(mem) & 0x3fffff])
|
||||
#define psR1s16(mem) (*(s16*)&eeMem->ROM1[(mem) & 0x3fffff])
|
||||
#define psR1s32(mem) (*(s32*)&eeMem->ROM1[(mem) & 0x3fffff])
|
||||
#define psR1s64(mem) (*(s64*)&eeMem->ROM1[(mem) & 0x3fffff])
|
||||
#define psR1u8(mem) (*(u8 *)&eeMem->ROM1[(mem) & 0x3fffff])
|
||||
#define psR1u16(mem) (*(u16*)&eeMem->ROM1[(mem) & 0x3fffff])
|
||||
#define psR1u32(mem) (*(u32*)&eeMem->ROM1[(mem) & 0x3fffff])
|
||||
#define psR1u64(mem) (*(u64*)&eeMem->ROM1[(mem) & 0x3fffff])
|
||||
|
||||
#define psR2s8(mem) (*(s8 *)&eeMem->ROM2[(mem) & 0x7ffff])
|
||||
#define psR2s16(mem) (*(s16*)&eeMem->ROM2[(mem) & 0x7ffff])
|
||||
|
@ -90,15 +90,6 @@ static __fi void ZeroQWC( u128& dest )
|
|||
#define psR2u32(mem) (*(u32*)&eeMem->ROM2[(mem) & 0x7ffff])
|
||||
#define psR2u64(mem) (*(u64*)&eeMem->ROM2[(mem) & 0x7ffff])
|
||||
|
||||
#define psERs8(mem) (*(s8 *)&eeMem->EROM[(mem) & 0x3ffff])
|
||||
#define psERs16(mem) (*(s16*)&eeMem->EROM[(mem) & 0x3ffff])
|
||||
#define psERs32(mem) (*(s32*)&eeMem->EROM[(mem) & 0x3ffff])
|
||||
#define psERs64(mem) (*(s64*)&eeMem->EROM[(mem) & 0x3ffff])
|
||||
#define psERu8(mem) (*(u8 *)&eeMem->EROM[(mem) & 0x3ffff])
|
||||
#define psERu16(mem) (*(u16*)&eeMem->EROM[(mem) & 0x3ffff])
|
||||
#define psERu32(mem) (*(u32*)&eeMem->EROM[(mem) & 0x3ffff])
|
||||
#define psERu64(mem) (*(u64*)&eeMem->EROM[(mem) & 0x3ffff])
|
||||
|
||||
#define psSs32(mem) (*(s32 *)&eeMem->Scratch[(mem) & 0x3fff])
|
||||
#define psSs64(mem) (*(s64 *)&eeMem->Scratch[(mem) & 0x3fff])
|
||||
#define psSs128(mem) (*(s128*)&eeMem->Scratch[(mem) & 0x3fff])
|
||||
|
|
|
@ -20,9 +20,8 @@ namespace Ps2MemSize
|
|||
{
|
||||
static const uint MainRam = _32mb; // 32 MB main memory!
|
||||
static const uint Rom = _1mb * 4; // 4 MB main rom
|
||||
static const uint Rom1 = 0x00040000; // DVD player
|
||||
static const uint Rom2 = 0x00080000; // Chinese rom extension (?)
|
||||
static const uint ERom = 0x001C0000; // DVD player extensions (?)
|
||||
static const uint Rom1 = _1mb * 4; // DVD player
|
||||
static const uint Rom2 = 0x00080000; // Chinese rom extension
|
||||
static const uint Hardware = _64kb;
|
||||
static const uint Scratch = _16kb;
|
||||
|
||||
|
@ -43,9 +42,8 @@ struct EEVM_MemoryAllocMess
|
|||
u8 Main[Ps2MemSize::MainRam]; // Main memory (hard-wired to 32MB)
|
||||
u8 Scratch[Ps2MemSize::Scratch]; // Scratchpad!
|
||||
u8 ROM[Ps2MemSize::Rom]; // Boot rom (4MB)
|
||||
u8 ROM1[Ps2MemSize::Rom1]; // DVD player
|
||||
u8 ROM1[Ps2MemSize::Rom1]; // DVD player (4MB)
|
||||
u8 ROM2[Ps2MemSize::Rom2]; // Chinese extensions
|
||||
u8 EROM[Ps2MemSize::ERom]; // DVD player extensions
|
||||
|
||||
// Two 1 megabyte (max DMA) buffers for reading and writing to high memory (>32MB).
|
||||
// Such accesses are not documented as causing bus errors but as the memory does
|
||||
|
|
|
@ -928,8 +928,12 @@ void SYSCALL()
|
|||
case 0x53: mode = "SDTV 768x576 @ ??.???"; gsSetVideoMode(GS_VideoMode::SDTV_576P); break;
|
||||
case 0x54: mode = "HDTV 1920x1080 @ ??.???"; gsSetVideoMode(GS_VideoMode::HDTV_1080P); break;
|
||||
|
||||
case 0x72: mode = "DVD NTSC 640x448 @ ??.???"; gsSetVideoMode(GS_VideoMode::DVD_NTSC); break;
|
||||
case 0x73: mode = "DVD PAL 720x480 @ ??.???"; gsSetVideoMode(GS_VideoMode::DVD_PAL); break;
|
||||
case 0x72:
|
||||
case 0x82:
|
||||
mode = "DVD NTSC 640x448 @ ??.???"; gsSetVideoMode(GS_VideoMode::DVD_NTSC); break;
|
||||
case 0x73:
|
||||
case 0x83:
|
||||
mode = "DVD PAL 720x480 @ ??.???"; gsSetVideoMode(GS_VideoMode::DVD_PAL); break;
|
||||
|
||||
default:
|
||||
DevCon.Error("Mode %x is not supported. Report me upstream", cpuRegs.GPR.n.a1.UC[0]);
|
||||
|
|
|
@ -161,7 +161,7 @@ void ChecksumIt(u32& result, const u8 (&srcdata)[_size])
|
|||
// the base.
|
||||
//
|
||||
// Parameters:
|
||||
// ext - extension of the sub-component to load. Valid options are rom1, rom2, AND erom.
|
||||
// ext - extension of the sub-component to load. Valid options are rom1 and rom2.
|
||||
//
|
||||
template <size_t _size>
|
||||
static void LoadExtraRom(const char* ext, u8 (&dest)[_size])
|
||||
|
@ -187,7 +187,7 @@ static void LoadExtraRom(const char* ext, u8 (&dest)[_size])
|
|||
Console.Warning("BIOS Warning: %s could not be read (permission denied?)", ext);
|
||||
return;
|
||||
}
|
||||
// Checksum for ROM1, ROM2, EROM? Rama says no, Gigaherz says yes. I'm not sure either way. --air
|
||||
// Checksum for ROM1, ROM2? Rama says no, Gigaherz says yes. I'm not sure either way. --air
|
||||
//ChecksumIt( BiosChecksum, dest );
|
||||
}
|
||||
|
||||
|
@ -236,7 +236,7 @@ static std::string FindBiosImage()
|
|||
// this method being called.
|
||||
//
|
||||
// Remarks:
|
||||
// This function does not fail if rom1, rom2, or erom files are missing, since none are
|
||||
// This function does not fail if rom1 or rom2 files are missing, since none are
|
||||
// explicitly required for most emulation tasks.
|
||||
//
|
||||
// Exceptions:
|
||||
|
@ -296,7 +296,6 @@ bool LoadBIOS()
|
|||
|
||||
LoadExtraRom("rom1", eeMem->ROM1);
|
||||
LoadExtraRom("rom2", eeMem->ROM2);
|
||||
LoadExtraRom("erom", eeMem->EROM);
|
||||
|
||||
if (EmuConfig.CurrentIRX.length() > 3)
|
||||
LoadIrx(EmuConfig.CurrentIRX, &eeMem->ROM[0x3C0000], sizeof(eeMem->ROM) - 0x3C0000);
|
||||
|
|
|
@ -772,7 +772,7 @@ void recResetIOP()
|
|||
recLUT_SetPage(psxRecLUT, psxhwLUT, recROM, 0xa000, i, i - 0x1fc0);
|
||||
}
|
||||
|
||||
for (int i = 0x1e00; i < 0x1e04; i++)
|
||||
for (int i = 0x1e00; i < 0x1e40; i++)
|
||||
{
|
||||
recLUT_SetPage(psxRecLUT, psxhwLUT, recROM1, 0x0000, i, i - 0x1e00);
|
||||
recLUT_SetPage(psxRecLUT, psxhwLUT, recROM1, 0x8000, i, i - 0x1e00);
|
||||
|
|
|
@ -593,7 +593,7 @@ static void recAlloc()
|
|||
recLUT_SetPage(recLUT, hwLUT, recROM, 0xa000, i, i - 0x1fc0);
|
||||
}
|
||||
|
||||
for (int i = 0x1e00; i < 0x1e04; i++)
|
||||
for (int i = 0x1e00; i < 0x1e40; i++)
|
||||
{
|
||||
recLUT_SetPage(recLUT, hwLUT, recROM1, 0x0000, i, i - 0x1e00);
|
||||
recLUT_SetPage(recLUT, hwLUT, recROM1, 0x8000, i, i - 0x1e00);
|
||||
|
|
Loading…
Reference in New Issue