mirror of
https://github.com/Candygoblen123/SwiftNES.git
synced 2024-11-22 01:46:23 -06:00
PPU: background rendering
This commit is contained in:
parent
be170bf750
commit
f9efe23b0b
@ -157,9 +157,10 @@ class CPU {
|
|||||||
func run(onCycle: @escaping () -> (), onComplete: @escaping () -> ()) {
|
func run(onCycle: @escaping () -> (), onComplete: @escaping () -> ()) {
|
||||||
let opcodes = OPCODES_MAP
|
let opcodes = OPCODES_MAP
|
||||||
while true {
|
while true {
|
||||||
if let _nmi = bus.pollNMI() {
|
if bus.pollNMI() != nil {
|
||||||
|
print(programCounter)
|
||||||
interrupt(.NMI)
|
interrupt(.NMI)
|
||||||
|
print(programCounter)
|
||||||
}
|
}
|
||||||
processOpcodes(onCycle: onCycle, opcodes: opcodes) {
|
processOpcodes(onCycle: onCycle, opcodes: opcodes) {
|
||||||
onComplete()
|
onComplete()
|
||||||
|
@ -9,7 +9,7 @@ func dumpCpuState(_ cpu: CPU) -> String {
|
|||||||
{
|
{
|
||||||
let (addr, _) = cpu.getAbsoluteAddress(opcode.mode, addr: cpu.programCounter + 1)
|
let (addr, _) = cpu.getAbsoluteAddress(opcode.mode, addr: cpu.programCounter + 1)
|
||||||
|
|
||||||
return (addr, cpu.memRead(addr))
|
return (addr, 0)//cpu.memRead(addr))
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ class Bus {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func pollNMI() -> UInt8? {
|
func pollNMI() -> UInt8? {
|
||||||
ppu.nmiInterrupt
|
ppu.pollNMI()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ class NesPPU {
|
|||||||
var scanline: UInt16 = 0
|
var scanline: UInt16 = 0
|
||||||
var cycles: Int = 0
|
var cycles: Int = 0
|
||||||
|
|
||||||
var nmiInterrupt: UInt8?
|
var nmiInterrupt: UInt8? = nil
|
||||||
|
|
||||||
init(_ chrRom: [UInt8], _ mirroring: Mirroring) {
|
init(_ chrRom: [UInt8], _ mirroring: Mirroring) {
|
||||||
self.chrRom = chrRom
|
self.chrRom = chrRom
|
||||||
@ -52,6 +52,12 @@ class NesPPU {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func pollNMI() -> UInt8? {
|
||||||
|
let tmp = self.nmiInterrupt
|
||||||
|
self.nmiInterrupt = nil
|
||||||
|
return tmp
|
||||||
|
}
|
||||||
|
|
||||||
func writeToPPUAddr(_ value: UInt8) {
|
func writeToPPUAddr(_ value: UInt8) {
|
||||||
addr.update(value)
|
addr.update(value)
|
||||||
}
|
}
|
||||||
@ -110,7 +116,7 @@ class NesPPU {
|
|||||||
|
|
||||||
func writeToData(_ data: UInt8) {
|
func writeToData(_ data: UInt8) {
|
||||||
let addr = addr.get()
|
let addr = addr.get()
|
||||||
//print("\(addr): \(data)")
|
print("\(addr): \(data)")
|
||||||
switch addr {
|
switch addr {
|
||||||
case 0...0x1fff:
|
case 0...0x1fff:
|
||||||
print("Attempt to write to chr rom space \(addr)!")
|
print("Attempt to write to chr rom space \(addr)!")
|
||||||
|
@ -28,7 +28,7 @@ struct ControlRegister: OptionSet {
|
|||||||
static let GENERATE_NMI = ControlRegister(rawValue: 0b10000000)
|
static let GENERATE_NMI = ControlRegister(rawValue: 0b10000000)
|
||||||
|
|
||||||
func vramAddrIncrement() -> UInt8 {
|
func vramAddrIncrement() -> UInt8 {
|
||||||
if self.contains(.VRAM_ADD_INCREMENT) {
|
if !self.contains(.VRAM_ADD_INCREMENT) {
|
||||||
1
|
1
|
||||||
} else {
|
} else {
|
||||||
32
|
32
|
||||||
@ -40,7 +40,7 @@ struct ControlRegister: OptionSet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func backgroundPatternAddr() -> Int {
|
func backgroundPatternAddr() -> Int {
|
||||||
if self.contains(.BACKROUND_PATTERN_ADDR) {
|
if !self.contains(.BACKROUND_PATTERN_ADDR) {
|
||||||
0
|
0
|
||||||
} else {
|
} else {
|
||||||
0x1000
|
0x1000
|
||||||
|
Loading…
Reference in New Issue
Block a user