mirror of
https://github.com/mattrberry/crab.git
synced 2025-02-09 08:46:02 +01:00
remove mmio wrapping
not sure why I added this to begin with since it doesn't happen on hardware
This commit is contained in:
parent
9ce8710aca
commit
b06c4f87ed
1 changed files with 3 additions and 19 deletions
|
@ -20,7 +20,7 @@ module GBA
|
||||||
end
|
end
|
||||||
|
|
||||||
def [](index : Int) : Byte
|
def [](index : Int) : Byte
|
||||||
io_addr = 0x0FFF_u16 & index
|
io_addr = 0xFFFFFF_u32 & index
|
||||||
if io_addr <= 0x05F
|
if io_addr <= 0x05F
|
||||||
@gba.ppu.read_io io_addr
|
@gba.ppu.read_io io_addr
|
||||||
elsif io_addr <= 0xAF
|
elsif io_addr <= 0xAF
|
||||||
|
@ -38,17 +38,13 @@ module GBA
|
||||||
@gba.interrupts.read_io io_addr
|
@gba.interrupts.read_io io_addr
|
||||||
elsif 0x204 <= io_addr <= 0x205
|
elsif 0x204 <= io_addr <= 0x205
|
||||||
(@waitcnt.value >> (8 * (io_addr & 1))).to_u8!
|
(@waitcnt.value >> (8 * (io_addr & 1))).to_u8!
|
||||||
elsif not_used? io_addr
|
|
||||||
0xFF_u8 # todo what is returned here?
|
|
||||||
else
|
else
|
||||||
# todo: oob reads
|
0_u8 # todo: oob reads
|
||||||
puts "Unmapped MMIO read: #{hex_str index.to_u32}".colorize(:red)
|
|
||||||
0_u8
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def []=(index : Int, value : Byte) : Nil
|
def []=(index : Int, value : Byte) : Nil
|
||||||
io_addr = 0x0FFF_u16 & index
|
io_addr = 0xFFFFFF_u32 & index
|
||||||
if io_addr <= 0x05F
|
if io_addr <= 0x05F
|
||||||
@gba.ppu.write_io io_addr, value
|
@gba.ppu.write_io io_addr, value
|
||||||
elsif io_addr <= 0xAF
|
elsif io_addr <= 0xAF
|
||||||
|
@ -73,19 +69,7 @@ module GBA
|
||||||
else
|
else
|
||||||
@gba.cpu.halted = true
|
@gba.cpu.halted = true
|
||||||
end
|
end
|
||||||
elsif not_used? io_addr
|
|
||||||
else
|
|
||||||
puts "Unmapped MMIO write ~ addr:#{hex_str index.to_u32}, val:#{hex_str value}".colorize(:yellow)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def not_used?(io_addr : Int) : Bool
|
|
||||||
(0x0E0..0x0FF).includes?(io_addr) || (0x110..0x11F).includes?(io_addr) ||
|
|
||||||
(0x12C..0x12F).includes?(io_addr) || (0x138..0x13F).includes?(io_addr) ||
|
|
||||||
(0x142..0x14F).includes?(io_addr) || (0x15A..0x1FF).includes?(io_addr) ||
|
|
||||||
(0x206..0x207).includes?(io_addr) || (0x20A..0x2FF).includes?(io_addr) ||
|
|
||||||
(0x302..0x40F).includes?(io_addr) || (0x441..0x7FF).includes?(io_addr) ||
|
|
||||||
(0x804..0xFFFF).includes?(io_addr)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue