Basic support for CPU opcodes.

Support for 2 opcodes: nop and jump.
These are the first opcodes encountered in Super Mario Land.
This commit is contained in:
Fabien Freling 2015-02-27 22:24:26 +01:00
parent fa09906bcb
commit b2c7e7b947
3 changed files with 80 additions and 27 deletions

View file

@ -1,5 +1,9 @@
open Printf
let rec run (cpu: Cpu.t) (cartridge: Cartridge.t) =
Cpu.run cpu cartridge;
run cpu cartridge
(** Power up sequence
http://bgb.bircd.org/pandocs.htm#powerupsequence *)
let power_up cartridge =
@ -10,12 +14,19 @@ let power_up cartridge =
print_endline "Valid ROM.";
printf "Title: %s\n" cartridge.title;
printf "ROM size: %iKB\n" cartridge.rom_size;
printf "RAM size: %iKB\n" cartridge.ram_size
printf "RAM size: %iKB\n" cartridge.ram_size;
let cpu = Cpu.init_cpu in
run cpu cartridge
let () =
if Array.length Sys.argv < 2
then print_endline "Please specify a ROM.";
if Array.length Sys.argv < 2 then
begin
prerr_endline "Please specify a ROM.";
eprintf "Usage: %s path/to/rom\n" Sys.argv.(0);
exit 1;
end;
let cartridge = Cartridge.read_cartridge Sys.argv.(1) in
match cartridge with