From a3b44d20cb3813f5b4c724877f1a51a351260b46 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 9 Apr 2016 02:00:10 +0300 Subject: [PATCH] Added mbc/cartridge command to debugger --- Core/debugger.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/Core/debugger.c b/Core/debugger.c index e2d1554..bf8bc24 100644 --- a/Core/debugger.c +++ b/Core/debugger.c @@ -539,6 +539,50 @@ static bool examine(GB_gameboy_t *gb, char *arguments) return true; } +static bool mbc(GB_gameboy_t *gb, char *arguments) +{ + if (strlen(lstrip(arguments))) { + gb_log(gb, "Usage: mbc\n"); + return true; + } + + const GB_cartridge_t *cartridge = gb->cartridge_type; + + if (cartridge->has_ram) { + gb_log(gb, "Cartrdige includes%s RAM: %zx\n", cartridge->has_battery? "battery-backed ": "", gb->mbc_ram_size); + } + else { + gb_log(gb, "No cartridge RAM\n"); + } + + if (cartridge->mbc_type) { + gb_log(gb, "MBC%d\n", cartridge->mbc_type); + gb_log(gb, "Current mapped ROM bank: %x\n", gb->mbc_rom_bank); + if (cartridge->has_ram) { + gb_log(gb, "Current mapped RAM bank: %x\n", gb->mbc_ram_bank); + gb_log(gb, "RAM is curently %s\n", gb->mbc_ram_enable? "enabled" : "disabled"); + } + if (cartridge->mbc_type == MBC1) { + gb_log(gb, "MBC1 banking mode is %s\n", gb->mbc_ram_banking? "RAM" : "ROM"); + } + + } + else { + gb_log(gb, "No MBC\n"); + } + + if (cartridge->has_rumble) { + gb_log(gb, "Cart contains a rumble pak\n"); + } + + if (cartridge->has_rtc) { + gb_log(gb, "Cart contains a real time clock\n"); + } + + + return true; +} + static bool help(GB_gameboy_t *gb, char *arguments); static const debugger_command_t commands[] = { {"continue", 1, cont, "Continue running until next stop"}, @@ -546,6 +590,8 @@ static const debugger_command_t commands[] = { {"step", 1, step, "Run the next instruction, stepping into function calls"}, {"finish", 1, finish, "Run until the current function returns"}, {"registers", 1, registers, "Print values of processor registers and other important registers"}, + {"cartridge", 2, mbc, "Displays information about the MBC and cartridge"}, + {"mbc", 3, mbc, NULL}, {"breakpoint", 1, breakpoint, "Move the breakpoint to a new position"}, {"list", 1, list, "List all set breakpoints"}, {"delete", 2, delete, "Delete a breakpoint by its address, or all breakpoints"},