EmuX86 : Add flash read handler
This commit is contained in:
parent
bbdec7c40b
commit
c2ec131a73
|
@ -128,6 +128,22 @@ void EmuX86_Mem_Write8(xbaddr addr, uint8_t value)
|
||||||
*(uint8_t*)addr = value;
|
*(uint8_t*)addr = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t EmuFlash_Read32(xbaddr addr) // TODO : Move to EmuFlash.cpp
|
||||||
|
{
|
||||||
|
uint32_t r;
|
||||||
|
|
||||||
|
switch (addr) {
|
||||||
|
case 0x78: // ROM_VERSION
|
||||||
|
r = 0x46; // DVT4
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
EmuWarning("EmuX86 Read32 FLASH_ROM (0x%.8X) [Unknown address]", addr);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
DbgPrintf("EmuX86 Read32 FLASH_ROM (0x%.8X) = 0x%.8X [HANDLED]\n", addr, r);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Read & write handlers for memory-mapped hardware devices
|
// Read & write handlers for memory-mapped hardware devices
|
||||||
|
@ -150,6 +166,8 @@ uint32_t EmuX86_Read32Aligned(xbaddr addr)
|
||||||
// Note : EmuNV2A_Read32 does it's own logging
|
// Note : EmuNV2A_Read32 does it's own logging
|
||||||
} else if (addr >= NVNET_ADDR && addr < NVNET_ADDR + NVNET_SIZE) {
|
} else if (addr >= NVNET_ADDR && addr < NVNET_ADDR + NVNET_SIZE) {
|
||||||
value = EmuNVNet_Read(addr - NVNET_ADDR, 32);
|
value = EmuNVNet_Read(addr - NVNET_ADDR, 32);
|
||||||
|
} else if (addr >= XBOX_FLASH_ROM_BASE) { // 0xFFF00000 - 0xFFFFFFF
|
||||||
|
value = EmuFlash_Read32(addr - XBOX_FLASH_ROM_BASE);
|
||||||
} else {
|
} else {
|
||||||
if (g_bEmuException) {
|
if (g_bEmuException) {
|
||||||
EmuWarning("EmuX86_Read32Aligned(0x%08X) [Unknown address]", addr);
|
EmuWarning("EmuX86_Read32Aligned(0x%08X) [Unknown address]", addr);
|
||||||
|
@ -193,6 +211,8 @@ uint16_t EmuX86_Read16(xbaddr addr)
|
||||||
// Note : EmuNV2A_Read32 does it's own logging
|
// Note : EmuNV2A_Read32 does it's own logging
|
||||||
} else if (addr >= NVNET_ADDR && addr < NVNET_ADDR + NVNET_SIZE) {
|
} else if (addr >= NVNET_ADDR && addr < NVNET_ADDR + NVNET_SIZE) {
|
||||||
value = EmuNVNet_Read(addr - NVNET_ADDR, 16);
|
value = EmuNVNet_Read(addr - NVNET_ADDR, 16);
|
||||||
|
} else if (addr >= XBOX_FLASH_ROM_BASE) { // 0xFFF00000 - 0xFFFFFFF
|
||||||
|
value = EmuFlash_Read32(addr - XBOX_FLASH_ROM_BASE);
|
||||||
} else {
|
} else {
|
||||||
if (g_bEmuException) {
|
if (g_bEmuException) {
|
||||||
EmuWarning("EmuX86_Read16(0x%08X) [Unknown address]", addr);
|
EmuWarning("EmuX86_Read16(0x%08X) [Unknown address]", addr);
|
||||||
|
@ -222,6 +242,8 @@ uint8_t EmuX86_Read8(xbaddr addr)
|
||||||
// Note : EmuNV2A_Read32 does it's own logging
|
// Note : EmuNV2A_Read32 does it's own logging
|
||||||
} else if (addr >= NVNET_ADDR && addr < NVNET_ADDR + NVNET_SIZE) {
|
} else if (addr >= NVNET_ADDR && addr < NVNET_ADDR + NVNET_SIZE) {
|
||||||
value = EmuNVNet_Read(addr - NVNET_ADDR, 8);
|
value = EmuNVNet_Read(addr - NVNET_ADDR, 8);
|
||||||
|
} else if (addr >= XBOX_FLASH_ROM_BASE) { // 0xFFF00000 - 0xFFFFFFF
|
||||||
|
value = EmuFlash_Read32(addr - XBOX_FLASH_ROM_BASE);
|
||||||
} else {
|
} else {
|
||||||
if (g_bEmuException) {
|
if (g_bEmuException) {
|
||||||
EmuWarning("EmuX86_Read8(0x%08X) [Unknown address]", addr);
|
EmuWarning("EmuX86_Read8(0x%08X) [Unknown address]", addr);
|
||||||
|
@ -258,6 +280,11 @@ void EmuX86_Write32Aligned(xbaddr addr, uint32_t value)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (addr >= XBOX_FLASH_ROM_BASE) { // 0xFFF00000 - 0xFFFFFFF
|
||||||
|
EmuWarning("EmuX86_Write32Aligned(0x%08X, 0x%08X) [FLASH_ROM]", addr, value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (g_bEmuException) {
|
if (g_bEmuException) {
|
||||||
EmuWarning("EmuX86_Write32Aligned(0x%08X, 0x%08X) [Unknown address]", addr, value);
|
EmuWarning("EmuX86_Write32Aligned(0x%08X, 0x%08X) [Unknown address]", addr, value);
|
||||||
return;
|
return;
|
||||||
|
@ -296,6 +323,11 @@ void EmuX86_Write16(xbaddr addr, uint16_t value)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (addr >= XBOX_FLASH_ROM_BASE) { // 0xFFF00000 - 0xFFFFFFF
|
||||||
|
EmuWarning("EmuX86_Write16(0x%08X, 0x%08X) [FLASH_ROM]", addr, value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (g_bEmuException) {
|
if (g_bEmuException) {
|
||||||
EmuWarning("EmuX86_Write16(0x%08X, 0x%04X) [Unknown address]", addr, value);
|
EmuWarning("EmuX86_Write16(0x%08X, 0x%04X) [Unknown address]", addr, value);
|
||||||
return;
|
return;
|
||||||
|
@ -326,6 +358,11 @@ void EmuX86_Write8(xbaddr addr, uint8_t value)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (addr >= XBOX_FLASH_ROM_BASE) { // 0xFFF00000 - 0xFFFFFFF
|
||||||
|
EmuWarning("EmuX86_Write8(0x%08X, 0x%08X) [FLASH_ROM]", addr, value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (g_bEmuException) {
|
if (g_bEmuException) {
|
||||||
EmuWarning("EmuX86_Write8(0x%08X, 0x%02X) [Unknown address]", addr, value);
|
EmuWarning("EmuX86_Write8(0x%08X, 0x%02X) [Unknown address]", addr, value);
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in New Issue