rusty-nes/src/addressing.rs

82 lines
1.8 KiB
Rust
Raw Normal View History

2022-08-25 15:01:58 +00:00
use crate::cpu::{CPU, FetchType};
2022-08-23 20:11:25 +00:00
impl CPU
{
pub fn abs(&mut self)
{
let bus = self.bus.upgrade().unwrap();
let lo = bus.borrow().read_cpu(self.pc) as u16;
let hi = bus.borrow().read_cpu(self.pc + 1) as u16;
self.pc += 2;
self.absolute_addr = (hi << 8) | lo;
2022-08-25 15:01:58 +00:00
self.fetch_type = FetchType::Mem;
2022-08-23 20:11:25 +00:00
print!("{: <30}", format!("${:04X}", self.absolute_addr));
}
2022-08-25 15:01:58 +00:00
pub fn acc(&mut self)
{
self.fetch_type = FetchType::Acc;
print!("{: <30}", "A");
}
pub fn idx(&mut self)
{
let bus = self.bus.upgrade().unwrap();
let mut zpg_addr = bus.borrow().read_cpu(self.pc);
self.pc += 1;
zpg_addr = zpg_addr.wrapping_add(self.x);
let lo = bus.borrow().read_cpu(zpg_addr as u16) as u16;
let hi = bus.borrow().read_cpu(zpg_addr.wrapping_add(1) as u16) as u16;
self.absolute_addr = (hi << 8) | lo;
self.fetch_type = FetchType::Mem;
print!("{: <30}", format!("(${:02X},X) @ [${:02X}] = ${:04X} = {:02X}", zpg_addr.wrapping_sub(self.x), zpg_addr, self.absolute_addr, bus.borrow().read_cpu(self.absolute_addr)));
}
2022-08-23 20:11:25 +00:00
pub fn imm(&mut self)
{
let bus = self.bus.upgrade().unwrap();
self.absolute_addr = self.pc;
self.pc += 1;
2022-08-25 15:01:58 +00:00
self.fetch_type = FetchType::Mem;
2022-08-23 20:11:25 +00:00
print!("{: <30}", format!("#${:02X}", bus.borrow().read_cpu(self.absolute_addr)));
}
2022-08-23 21:12:31 +00:00
2022-08-23 23:57:42 +00:00
pub fn imp(&mut self)
{
print!("{: <30}", "");
}
pub fn rel(&mut self)
{
let bus = self.bus.upgrade().unwrap();
self.relative_addr = bus.borrow().read_cpu(self.pc) as i8;
self.pc += 1;
print!("{: <30}", format!("${:02X}", self.relative_addr));
}
2022-08-23 21:12:31 +00:00
pub fn zpg(&mut self)
{
let bus = self.bus.upgrade().unwrap();
self.absolute_addr = bus.borrow().read_cpu(self.pc) as u16;
self.pc += 1;
2022-08-25 15:01:58 +00:00
self.fetch_type = FetchType::Mem;
2022-08-23 21:12:31 +00:00
print!("{: <30}", format!("${:02X} = {:02X}", self.absolute_addr, bus.borrow().read_cpu(self.absolute_addr)))
}
2022-08-23 20:11:25 +00:00
}