implement LDR/STR/LDRB/STRB.

more macro soup.
This commit is contained in:
StapleButter
2016-12-03 01:31:33 +01:00
parent 97ec988dae
commit 23d584ca4c
8 changed files with 660 additions and 275 deletions

77
NDS.cpp
View File

@ -85,10 +85,31 @@ void Halt()
}
u8 ARM9Read8(u32 addr)
{
if ((addr & 0xFFFFF000) == 0xFFFF0000)
{
return *(u8*)&ARM9BIOS[addr & 0xFFF];
}
printf("unknown arm9 read8 %08X\n", addr);
return 0;
}
u16 ARM9Read16(u32 addr)
{
if ((addr & 0xFFFFF000) == 0xFFFF0000)
{
return *(u16*)&ARM9BIOS[addr & 0xFFF];
}
printf("unknown arm9 read16 %08X\n", addr);
return 0;
}
u32 ARM9Read32(u32 addr)
{
// implement ARM9y shit here, like memory protection
if ((addr & 0xFFFFF000) == 0xFFFF0000)
{
return *(u32*)&ARM9BIOS[addr & 0xFFF];
@ -98,6 +119,45 @@ u32 ARM9Read32(u32 addr)
return 0;
}
void ARM9Write8(u32 addr, u8 val)
{
printf("unknown arm9 write8 %08X %02X\n", addr, val);
}
void ARM9Write16(u32 addr, u16 val)
{
printf("unknown arm9 write16 %08X %04X\n", addr, val);
}
void ARM9Write32(u32 addr, u32 val)
{
printf("unknown arm9 write32 %08X %08X\n", addr, val);
}
u8 ARM7Read8(u32 addr)
{
if (addr < 0x00004000)
{
return *(u8*)&ARM7BIOS[addr];
}
printf("unknown arm7 read8 %08X\n", addr);
return 0;
}
u16 ARM7Read16(u32 addr)
{
if (addr < 0x00004000)
{
return *(u16*)&ARM7BIOS[addr];
}
printf("unknown arm7 read16 %08X\n", addr);
return 0;
}
u32 ARM7Read32(u32 addr)
{
if (addr < 0x00004000)
@ -109,14 +169,19 @@ u32 ARM7Read32(u32 addr)
return 0;
}
template<typename T> T Read(u32 addr)
void ARM7Write8(u32 addr, u8 val)
{
return (T)0;
printf("unknown arm7 write8 %08X %02X\n", addr, val);
}
template<typename T> void Write(u32 addr, T val)
void ARM7Write16(u32 addr, u16 val)
{
//
printf("unknown arm7 write16 %08X %04X\n", addr, val);
}
void ARM7Write32(u32 addr, u32 val)
{
printf("unknown arm7 write32 %08X %08X\n", addr, val);
}
}