Implement more parts of decoder
This commit is contained in:
parent
93521e559c
commit
ad2334a6af
8 changed files with 469 additions and 265 deletions
14
memory/mem_device.cpp
Normal file
14
memory/mem_device.cpp
Normal file
|
@ -0,0 +1,14 @@
|
|||
#include "memory/mem_device.h"
|
||||
|
||||
void Mem_device::write16(u16 addr, u16 data)
|
||||
{
|
||||
write8(addr, (u8)(data & 0xFF));
|
||||
write8(addr+1, (u8)((data >> 8) & 0xFF));
|
||||
}
|
||||
|
||||
u16 Mem_device::read16(u16 addr)
|
||||
{
|
||||
u8 lsb = read8(addr);
|
||||
u8 msb = read8(addr+1);
|
||||
return ((u16)msb << 8) | (u16)lsb;
|
||||
}
|
|
@ -7,6 +7,6 @@ public:
|
|||
virtual void write8(u16 addr, u8 data) = 0;
|
||||
virtual u8 read8(u16 addr) = 0;
|
||||
|
||||
virtual void write16(u16 addr, u16 data) = 0;
|
||||
virtual u16 read16(u16 addr) = 0;
|
||||
virtual void write16(u16 addr, u16 data);
|
||||
virtual u16 read16(u16 addr);
|
||||
};
|
||||
|
|
|
@ -17,15 +17,3 @@ u8 RAM::read8(u16 addr) {
|
|||
if (addr >= size) return 0xFFu;
|
||||
return memory[addr];
|
||||
}
|
||||
|
||||
void RAM::write16(u16 addr, u16 data) {
|
||||
if(addr >= size - 1 || readonly) return;
|
||||
u16 *ptr = (u16*)&memory[addr];
|
||||
*ptr = data;
|
||||
}
|
||||
|
||||
u16 RAM::read16(u16 addr) {
|
||||
if(addr >= size - 1) return 0xFFFFu;
|
||||
u16 *ptr = (u16*)&memory[addr];
|
||||
return *ptr;
|
||||
}
|
||||
|
|
|
@ -14,7 +14,4 @@ public:
|
|||
|
||||
virtual void write8(u16 addr, u8 data);
|
||||
virtual u8 read8(u16 addr);
|
||||
|
||||
virtual void write16(u16 addr, u16 data);
|
||||
virtual u16 read16(u16 addr);
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue