oboy/src/oboy.ml
2015-04-19 19:18:03 +02:00

37 lines
895 B
OCaml

open Printf
let rec run (cpu: Cpu.t) (mem: Memory.map) =
let command = read_line () in
Cpu.run cpu mem;
run cpu mem
(** Power up sequence
http://bgb.bircd.org/pandocs.htm#powerupsequence *)
let power_up cartridge =
(** Nintendo logo scrolling *)
if not (Cartridge.check_nintendo_logo cartridge)
then print_endline "Invalid ROM."
else
print_endline "Valid ROM.";
Cartridge.print_info cartridge;
let cpu = Cpu.init_cpu in
let mem = Memory.init cartridge in
Graphics.open_graph "";
Graphics.resize_window 256 256;
run cpu mem
let () =
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
| None -> print_endline "Invalid ROM file."
| Some c -> power_up c