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() {
.unwrap();
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/opus5.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/ld_r_r.gb");
game_boy.load_rom_file("../../res/roms/special.gb");
let mut counter = 0;
......
......@@ -197,14 +197,14 @@ pub const INSTRUCTIONS: [(fn(&mut Cpu), u8, &'static str); 256] = [
(noimpl, 4, "! UNIMP !"),
(or_a_mhl, 8, "OR A, [HL]"),
(or_a_a, 4, "OR A, A"),
(noimpl, 4, "! UNIMP !"),
(noimpl, 4, "! UNIMP !"),
(noimpl, 4, "! UNIMP !"),
(noimpl, 4, "! UNIMP !"),
(noimpl, 4, "! UNIMP !"),
(noimpl, 4, "! UNIMP !"),
(cp_a_b, 4, "CP A, B"),
(cp_a_c, 4, "CP A, C"),
(cp_a_d, 4, "CP A, D"),
(cp_a_e, 4, "CP A, E"),
(cp_a_h, 4, "CP A, H"),
(cp_a_l, 4, "CP A, L"),
(cp_a_mhl, 8, "CP A, [HL]"),
(noimpl, 4, "! UNIMP !"),
(cp_a_a, 4, "CP A, A"),
// 0xc opcodes
(ret_nz, 8, "RET NZ"),
(pop_bc, 12, "POP BC"),
......@@ -1320,11 +1320,39 @@ fn or_a_a(cpu: &mut Cpu) {
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) {
let byte = cpu.mmu.read(cpu.hl());
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) {
if cpu.get_zero() {
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