feat: ld deref hl opcodes
This commit is contained in:
parent
06c7197468
commit
c7fefe86ca
2 changed files with 33 additions and 0 deletions
|
@ -207,6 +207,13 @@ pub fn tick_cpu(state: &mut Gameboy) {
|
||||||
0x6d => load_store_move::ld_l_l,
|
0x6d => load_store_move::ld_l_l,
|
||||||
0x6e => load_store_move::ld_l_deref_hl,
|
0x6e => load_store_move::ld_l_deref_hl,
|
||||||
0x6f => load_store_move::ld_l_a,
|
0x6f => load_store_move::ld_l_a,
|
||||||
|
0x70 => load_store_move::ld_deref_hl_b,
|
||||||
|
0x71 => load_store_move::ld_deref_hl_c,
|
||||||
|
0x72 => load_store_move::ld_deref_hl_d,
|
||||||
|
0x73 => load_store_move::ld_deref_hl_e,
|
||||||
|
0x74 => load_store_move::ld_deref_hl_h,
|
||||||
|
0x75 => load_store_move::ld_deref_hl_l,
|
||||||
|
0x77 => load_store_move::ld_deref_hl_a,
|
||||||
0x78 => load_store_move::ld_a_b,
|
0x78 => load_store_move::ld_a_b,
|
||||||
0x79 => load_store_move::ld_a_c,
|
0x79 => load_store_move::ld_a_c,
|
||||||
0x7a => load_store_move::ld_a_d,
|
0x7a => load_store_move::ld_a_d,
|
||||||
|
|
|
@ -380,3 +380,29 @@ pub fn ld_deref_imm_u16_a(state: &mut Gameboy) -> CycleResult {
|
||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
macro_rules! define_ld_reg_imm_u8 {
|
||||||
|
($lreg:ident) => {
|
||||||
|
paste::paste! {
|
||||||
|
pub fn [<ld_deref_hl_ $lreg>](state: &mut Gameboy) -> CycleResult {
|
||||||
|
match state.registers.cycle {
|
||||||
|
0 => {
|
||||||
|
state.cpu_write_u8(state.registers.get_hl(), state.registers.$lreg);
|
||||||
|
state.registers.opcode_bytecount = Some(1);
|
||||||
|
CycleResult::NeedsMore
|
||||||
|
},
|
||||||
|
1 => CycleResult::Finished,
|
||||||
|
_ => unreachable!(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
define_ld_reg_imm_u8!(b);
|
||||||
|
define_ld_reg_imm_u8!(c);
|
||||||
|
define_ld_reg_imm_u8!(d);
|
||||||
|
define_ld_reg_imm_u8!(e);
|
||||||
|
define_ld_reg_imm_u8!(h);
|
||||||
|
define_ld_reg_imm_u8!(l);
|
||||||
|
define_ld_reg_imm_u8!(a);
|
||||||
|
|
Loading…
Reference in a new issue