Add print_cpu_state.
This function pretty prints the state of the CPU on stdout.
This commit is contained in:
parent
c8b231d48a
commit
6599857947
17
src/cpu.ml
17
src/cpu.ml
|
@ -30,6 +30,21 @@ type t = {
|
||||||
mutable cycles : int;
|
mutable cycles : int;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let print_cpu_state cpu =
|
||||||
|
printf "Registers:\n";
|
||||||
|
printf " A: 0x%02X F: 0x%02X\n" (int_of_char cpu.reg.a) (int_of_char cpu.reg.f);
|
||||||
|
printf " B: 0x%02X C: 0x%02X\n" (int_of_char cpu.reg.b) (int_of_char cpu.reg.c);
|
||||||
|
printf " D: 0x%02X E: 0x%02X\n" (int_of_char cpu.reg.d) (int_of_char cpu.reg.e);
|
||||||
|
printf " H: 0x%02X L: 0x%02X\n" (int_of_char cpu.reg.h) (int_of_char cpu.reg.l);
|
||||||
|
printf " PC: 0x%04X\n" cpu.reg.pc;
|
||||||
|
printf " SP: 0x%04X\n" cpu.reg.sp;
|
||||||
|
|
||||||
|
printf "Flags:\n";
|
||||||
|
printf " Z: %b\n" cpu.flag.z;
|
||||||
|
printf " N: %b\n" cpu.flag.n;
|
||||||
|
printf " H: %b\n" cpu.flag.h;
|
||||||
|
printf " C: %b\n" cpu.flag.c
|
||||||
|
|
||||||
(** http://bgb.bircd.org/pandocs.htm#powerupsequence *)
|
(** http://bgb.bircd.org/pandocs.htm#powerupsequence *)
|
||||||
let init_registers =
|
let init_registers =
|
||||||
{
|
{
|
||||||
|
@ -109,6 +124,8 @@ let read_pc_2bytes cpu mem =
|
||||||
https://github.com/sinamas/gambatte/blob/master/libgambatte/src/cpu.cpp
|
https://github.com/sinamas/gambatte/blob/master/libgambatte/src/cpu.cpp
|
||||||
*)
|
*)
|
||||||
let run cpu (mem: Memory.map) =
|
let run cpu (mem: Memory.map) =
|
||||||
|
printf "\n";
|
||||||
|
print_cpu_state cpu;
|
||||||
let opcode = read_pc_byte cpu mem |> char_of_int in
|
let opcode = read_pc_byte cpu mem |> char_of_int in
|
||||||
(* Hexa.print_slice cartridge.full_rom cpu.reg.pc (cpu.reg.pc + 7); *)
|
(* Hexa.print_slice cartridge.full_rom cpu.reg.pc (cpu.reg.pc + 7); *)
|
||||||
match opcode with
|
match opcode with
|
||||||
|
|
Loading…
Reference in a new issue