mirror of
https://github.com/FranLMSP/snes.git
synced 2026-10-03 16:05:18 -04:00
Fix issues when displaying the background tiles
This commit is contained in:
@@ -24,7 +24,7 @@ impl CPUInstruction for BRL {
|
||||
}
|
||||
|
||||
fn mnemonic(&self, registers: &Registers, bus: &Bus, opcode: u8) -> String {
|
||||
decoder_common::mnemonic_absolute(opcode, INSTR_NAME, registers, bus)
|
||||
decoder_common::mnemonic_absolute_16bit(opcode, INSTR_NAME, registers, bus)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,10 @@ pub fn mnemonic_arithmetic(is_16bit: bool, opcode: u8, instr_name: &str, address
|
||||
true => mnemonic_16bit_immediate(opcode, instr_name, registers, bus),
|
||||
false => mnemonic_8bit_immediate(opcode, instr_name, registers, bus),
|
||||
},
|
||||
A::Absolute => mnemonic_absolute(opcode, instr_name, registers, bus),
|
||||
A::Absolute => match is_16bit {
|
||||
true => mnemonic_absolute_16bit(opcode, instr_name, registers, bus),
|
||||
false => mnemonic_absolute_8bit(opcode, instr_name, registers, bus),
|
||||
},
|
||||
A::AbsoluteLong => mnemonic_absolute_long(opcode, instr_name, registers, bus),
|
||||
A::DirectPage => mnemonic_direct_page(opcode, instr_name, registers, bus),
|
||||
A::DirectPageIndirect => mnemonic_direct_page_indirect(opcode, instr_name, registers, bus),
|
||||
@@ -38,14 +41,21 @@ pub fn mnemonic_8bit_immediate(opcode: u8, instr_name: &str, registers: &Registe
|
||||
pub fn mnemonic_16bit_immediate(opcode: u8, instr_name: &str, registers: &Registers, bus: &Bus) -> String {
|
||||
let next_byte = bus.read_external(registers.get_pc_address() + 1);
|
||||
let next_second_byte = bus.read_external(registers.get_pc_address() + 2);
|
||||
let word = (next_byte as u16) | ((next_byte as u16) << 8);
|
||||
let word = (next_byte as u16) | ((next_second_byte as u16) << 8);
|
||||
format!("{:02X} {:02X} {:02X} __ | {} #${:04X}", opcode, next_byte, next_second_byte, instr_name, word)
|
||||
}
|
||||
|
||||
pub fn mnemonic_absolute(opcode: u8, instr_name: &str, registers: &Registers, bus: &Bus) -> String {
|
||||
pub fn mnemonic_absolute_8bit(opcode: u8, instr_name: &str, registers: &Registers, bus: &Bus) -> String {
|
||||
let next_byte = bus.read_external(registers.get_pc_address() + 1);
|
||||
let next_second_byte = bus.read_external(registers.get_pc_address() + 2);
|
||||
let word = (next_byte as u16) | ((next_byte as u16) << 8);
|
||||
let word = (next_byte as u16) | ((next_second_byte as u16) << 8);
|
||||
format!("{:02X} {:02X} {:02X} __ | {} ${:04X}", opcode, next_byte, next_second_byte, instr_name, word)
|
||||
}
|
||||
|
||||
pub fn mnemonic_absolute_16bit(opcode: u8, instr_name: &str, registers: &Registers, bus: &Bus) -> String {
|
||||
let next_byte = bus.read_external(registers.get_pc_address() + 1);
|
||||
let next_second_byte = bus.read_external(registers.get_pc_address() + 2);
|
||||
let word = (next_byte as u16) | ((next_second_byte as u16) << 8);
|
||||
format!("{:02X} {:02X} {:02X} __ | {} ${:04X}", opcode, next_byte, next_second_byte, instr_name, word)
|
||||
}
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ impl CPUInstruction for PEA {
|
||||
}
|
||||
|
||||
fn mnemonic(&self, registers: &Registers, bus: &Bus, opcode: u8) -> String {
|
||||
decoder_common::mnemonic_absolute(opcode, INSTR_NAME, registers, bus)
|
||||
decoder_common::mnemonic_absolute_16bit(opcode, INSTR_NAME, registers, bus)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ impl CPUInstruction for PER {
|
||||
}
|
||||
|
||||
fn mnemonic(&self, registers: &Registers, bus: &Bus, opcode: u8) -> String {
|
||||
decoder_common::mnemonic_absolute(opcode, INSTR_NAME, registers, bus)
|
||||
decoder_common::mnemonic_absolute_16bit(opcode, INSTR_NAME, registers, bus)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -57,9 +57,11 @@ impl InternalRegisters {
|
||||
}
|
||||
|
||||
fn read_vblank_nmi_mut(&self, ppu_registers: &mut PPURegisters) -> u8 {
|
||||
let byte = self._read(RDNMI);
|
||||
let result = self.read_vblank_nmi(ppu_registers);
|
||||
if result == 0x80 {
|
||||
println!("nmi set");
|
||||
}
|
||||
// When register is read, bit 7 is cleared
|
||||
let result = (byte & 0x7F) | ((ppu_registers.vblank_nmi as u8) << 7);
|
||||
ppu_registers.vblank_nmi = false;
|
||||
result
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ impl ROM for LoROM {
|
||||
let address = LoROM::adjust_address(address);
|
||||
match self.data.get(address as usize) {
|
||||
Some(byte) => *byte,
|
||||
None => 0xFF,
|
||||
None => 0x00,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user