mirror of
https://github.com/Candygoblen123/SwiftNES.git
synced 2024-09-19 17:01:01 -05:00
38 lines
1.2 KiB
Swift
38 lines
1.2 KiB
Swift
class Bus {
|
|
var cpuVram: [UInt8] = .init(repeating: 0, count: 2048)
|
|
fileprivate let RAM : UInt16 = 0x0000
|
|
fileprivate let RAM_MIRRORS_END: UInt16 = 0x1FFF
|
|
fileprivate let PPU_REGISTERS: UInt16 = 0x2000
|
|
fileprivate let PPU_REGISTERS_MIRRORS_END: UInt16 = 0x3FFF
|
|
}
|
|
|
|
|
|
extension Bus: Memory {
|
|
func memRead(_ addr: UInt16) -> UInt8 {
|
|
switch addr {
|
|
case RAM...RAM_MIRRORS_END:
|
|
let mirrorDownAddr = addr & 0b00000111_11111111
|
|
return self.cpuVram[Int(mirrorDownAddr)]
|
|
case PPU_REGISTERS...PPU_REGISTERS_MIRRORS_END:
|
|
let mirrorDownAddr = addr & 0b00100000_00000111;
|
|
fatalError("PPU not implemented yet")
|
|
default:
|
|
print("Ignoring mem access at \(addr)")
|
|
return 0
|
|
}
|
|
}
|
|
|
|
func memWrite(_ addr: UInt16, data: UInt8) {
|
|
switch addr {
|
|
case RAM...RAM_MIRRORS_END:
|
|
let mirrorDownAddr = addr & 0b11111111111
|
|
self.cpuVram[Int(mirrorDownAddr)] = data
|
|
case PPU_REGISTERS...PPU_REGISTERS_MIRRORS_END:
|
|
let mirrorDownAddr = addr & 0b00100000_00000111
|
|
fatalError("PPU is not implemented yet!")
|
|
default:
|
|
print("Ignorming mem-write at \(addr)")
|
|
}
|
|
}
|
|
}
|