From 5cbfae677a8baa2483d75a72abd9c495410dd1e1 Mon Sep 17 00:00:00 2001 From: Rekai Musuka Date: Fri, 21 Oct 2022 05:11:45 -0300 Subject: [PATCH] feat: implement ROM CLI argument --- src/main.zig | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main.zig b/src/main.zig index 2a07800..ba7923b 100644 --- a/src/main.zig +++ b/src/main.zig @@ -8,9 +8,22 @@ const Arm7tdmi = @import("cpu.zig").Arm7tdmi; pub fn main() anyerror!void { var gpa = std.heap.GeneralPurposeAllocator(.{}){}; const alloc = gpa.allocator(); - // defer gpa.deinit(); + defer _ = gpa.deinit(); - var bus = try Bus.withPak(alloc, "./bin/demo/beeg/beeg.gba"); + const args = try std.process.argsAlloc(alloc); + defer std.process.argsFree(alloc, args); + + const zba_args: []const []const u8 = args[1..]; + + if (zba_args.len == 0) { + std.log.err("Expected PATH to Gameboy Advance ROM as a CLI argument", .{}); + return; + } else if (zba_args.len > 1) { + std.log.err("Too many CLI arguments were provided", .{}); + return; + } + + var bus = try Bus.withPak(alloc, zba_args[0]); var scheduler = Scheduler.new(alloc); var cpu = Arm7tdmi.new(&scheduler, &bus);