Skip to content
Snippets Groups Projects
Verified Commit c7564b65 authored by João Magalhães's avatar João Magalhães :rocket:
Browse files

feat: new cp instructions

parent e59bd965
No related branches found
No related tags found
No related merge requests found
Pipeline #864 passed
...@@ -79,11 +79,11 @@ fn main() { ...@@ -79,11 +79,11 @@ fn main() {
.unwrap(); .unwrap();
let mut game_boy = GameBoy::new(); let mut game_boy = GameBoy::new();
game_boy.load_boot_sgb(); game_boy.load_boot_dmg();
//game_boy.load_rom_file("../../res/roms/firstwhite.gb"); //game_boy.load_rom_file("../../res/roms/firstwhite.gb");
//game_boy.load_rom_file("../../res/roms/opus5.gb"); //game_boy.load_rom_file("../../res/roms/opus5.gb");
game_boy.load_rom_file("../../res/roms/ld_r_r.gb"); //game_boy.load_rom_file("../../res/roms/ld_r_r.gb");
//game_boy.load_rom_file("../../res/roms/opus5.gb"); game_boy.load_rom_file("../../res/roms/special.gb");
let mut counter = 0; let mut counter = 0;
......
...@@ -197,14 +197,14 @@ pub const INSTRUCTIONS: [(fn(&mut Cpu), u8, &'static str); 256] = [ ...@@ -197,14 +197,14 @@ pub const INSTRUCTIONS: [(fn(&mut Cpu), u8, &'static str); 256] = [
(noimpl, 4, "! UNIMP !"), (noimpl, 4, "! UNIMP !"),
(or_a_mhl, 8, "OR A, [HL]"), (or_a_mhl, 8, "OR A, [HL]"),
(or_a_a, 4, "OR A, A"), (or_a_a, 4, "OR A, A"),
(noimpl, 4, "! UNIMP !"), (cp_a_b, 4, "CP A, B"),
(noimpl, 4, "! UNIMP !"), (cp_a_c, 4, "CP A, C"),
(noimpl, 4, "! UNIMP !"), (cp_a_d, 4, "CP A, D"),
(noimpl, 4, "! UNIMP !"), (cp_a_e, 4, "CP A, E"),
(noimpl, 4, "! UNIMP !"), (cp_a_h, 4, "CP A, H"),
(noimpl, 4, "! UNIMP !"), (cp_a_l, 4, "CP A, L"),
(cp_a_mhl, 8, "CP A, [HL]"), (cp_a_mhl, 8, "CP A, [HL]"),
(noimpl, 4, "! UNIMP !"), (cp_a_a, 4, "CP A, A"),
// 0xc opcodes // 0xc opcodes
(ret_nz, 8, "RET NZ"), (ret_nz, 8, "RET NZ"),
(pop_bc, 12, "POP BC"), (pop_bc, 12, "POP BC"),
...@@ -1320,11 +1320,39 @@ fn or_a_a(cpu: &mut Cpu) { ...@@ -1320,11 +1320,39 @@ fn or_a_a(cpu: &mut Cpu) {
cpu.set_carry(false); cpu.set_carry(false);
} }
fn cp_a_b(cpu: &mut Cpu) {
sub_set_flags(cpu, cpu.a, cpu.b);
}
fn cp_a_c(cpu: &mut Cpu) {
sub_set_flags(cpu, cpu.a, cpu.c);
}
fn cp_a_d(cpu: &mut Cpu) {
sub_set_flags(cpu, cpu.a, cpu.d);
}
fn cp_a_e(cpu: &mut Cpu) {
sub_set_flags(cpu, cpu.a, cpu.e);
}
fn cp_a_h(cpu: &mut Cpu) {
sub_set_flags(cpu, cpu.a, cpu.h);
}
fn cp_a_l(cpu: &mut Cpu) {
sub_set_flags(cpu, cpu.a, cpu.l);
}
fn cp_a_mhl(cpu: &mut Cpu) { fn cp_a_mhl(cpu: &mut Cpu) {
let byte = cpu.mmu.read(cpu.hl()); let byte = cpu.mmu.read(cpu.hl());
sub_set_flags(cpu, cpu.a, byte); sub_set_flags(cpu, cpu.a, byte);
} }
fn cp_a_a(cpu: &mut Cpu) {
sub_set_flags(cpu, cpu.a, cpu.a);
}
fn ret_nz(cpu: &mut Cpu) { fn ret_nz(cpu: &mut Cpu) {
if cpu.get_zero() { if cpu.get_zero() {
return; return;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment