Skip to content

Commit

Permalink
Improve 6280 debug window
Browse files Browse the repository at this point in the history
  • Loading branch information
drhelius committed Jan 14, 2025
1 parent 147da94 commit fd4904a
Showing 1 changed file with 95 additions and 15 deletions.
110 changes: 95 additions & 15 deletions platforms/shared/desktop/gui_debug_huc6280.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@
#include "emu.h"
#include "utils.h"

static char mpr_name[16] = { };
static char mpr_tooltip[128] = { };

static void get_bank_name(u8 mpr, u8 mpr_value, char *name, char* tooltip);

void gui_debug_window_huc6280(void)
{
ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 8.0f);
Expand Down Expand Up @@ -94,41 +99,73 @@ void gui_debug_window_huc6280(void)
ImGui::TextColored(violet, "MPR0"); ImGui::SameLine();
ImGui::Text(" $%02X", memory->GetMpr(0));
ImGui::Text(BYTE_TO_BINARY_PATTERN_SPACED, BYTE_TO_BINARY(memory->GetMpr(0)));
get_bank_name(0, memory->GetMpr(0), mpr_name, mpr_tooltip);
ImGui::TextColored(gray, "%s", mpr_name);
if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled))
ImGui::SetTooltip("%s", mpr_tooltip);

ImGui::TableNextColumn();
ImGui::TextColored(violet, "MPR1"); ImGui::SameLine();
ImGui::Text(" $%02X", memory->GetMpr(1));
ImGui::Text(BYTE_TO_BINARY_PATTERN_SPACED, BYTE_TO_BINARY(memory->GetMpr(1)));
get_bank_name(1, memory->GetMpr(1), mpr_name, mpr_tooltip);
ImGui::TextColored(gray, "%s", mpr_name);
if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled))
ImGui::SetTooltip("%s", mpr_tooltip);

ImGui::TableNextColumn();
ImGui::TextColored(violet, "MPR2"); ImGui::SameLine();
ImGui::Text(" $%02X", memory->GetMpr(2));
ImGui::Text(BYTE_TO_BINARY_PATTERN_SPACED, BYTE_TO_BINARY(memory->GetMpr(2)));
get_bank_name(2, memory->GetMpr(2), mpr_name, mpr_tooltip);
ImGui::TextColored(gray, "%s", mpr_name);
if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled))
ImGui::SetTooltip("%s", mpr_tooltip);

ImGui::TableNextColumn();
ImGui::TextColored(violet, "MPR3"); ImGui::SameLine();
ImGui::Text(" $%02X", memory->GetMpr(3));
ImGui::Text(BYTE_TO_BINARY_PATTERN_SPACED, BYTE_TO_BINARY(memory->GetMpr(3)));
get_bank_name(3, memory->GetMpr(3), mpr_name, mpr_tooltip);
ImGui::TextColored(gray, "%s", mpr_name);
if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled))
ImGui::SetTooltip("%s", mpr_tooltip);

ImGui::TableNextColumn();
ImGui::TextColored(violet, "MPR4"); ImGui::SameLine();
ImGui::Text(" $%02X", memory->GetMpr(4));
ImGui::Text(BYTE_TO_BINARY_PATTERN_SPACED, BYTE_TO_BINARY(memory->GetMpr(4)));
get_bank_name(4, memory->GetMpr(4), mpr_name, mpr_tooltip);
ImGui::TextColored(gray, " %s", mpr_name);
if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled))
ImGui::SetTooltip("%s", mpr_tooltip);

ImGui::TableNextColumn();
ImGui::TextColored(violet, "MPR5"); ImGui::SameLine();
ImGui::Text(" $%02X", memory->GetMpr(5));
ImGui::Text(BYTE_TO_BINARY_PATTERN_SPACED, BYTE_TO_BINARY(memory->GetMpr(5)));
get_bank_name(5, memory->GetMpr(5), mpr_name, mpr_tooltip);
ImGui::TextColored(gray, "%s", mpr_name);
if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled))
ImGui::SetTooltip("%s", mpr_tooltip);

ImGui::TableNextColumn();
ImGui::TextColored(violet, "MPR6"); ImGui::SameLine();
ImGui::Text(" $%02X", memory->GetMpr(6));
ImGui::Text(BYTE_TO_BINARY_PATTERN_SPACED, BYTE_TO_BINARY(memory->GetMpr(6)));
get_bank_name(6, memory->GetMpr(6), mpr_name, mpr_tooltip);
ImGui::TextColored(gray, " %s", mpr_name);
if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled))
ImGui::SetTooltip("%s", mpr_tooltip);

ImGui::TableNextColumn();
ImGui::TextColored(violet, "MPR7"); ImGui::SameLine();
ImGui::Text(" $%02X", memory->GetMpr(7));
ImGui::Text(BYTE_TO_BINARY_PATTERN_SPACED, BYTE_TO_BINARY(memory->GetMpr(7)));
get_bank_name(7, memory->GetMpr(7), mpr_name, mpr_tooltip);
ImGui::TextColored(gray, "%s", mpr_name);
if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled))
ImGui::SetTooltip("%s", mpr_tooltip);

ImGui::TableNextColumn();
ImGui::TextColored(red, "I/O "); ImGui::SameLine();
Expand Down Expand Up @@ -167,15 +204,18 @@ void gui_debug_window_huc6280(void)
ImGui::PopStyleVar();

ImGui::TableNextColumn();
ImGui::TextColored(*proc_state->NMI ? green : gray, " NMI"); ImGui::SameLine();
ImGui::TextColored(*proc_state->TIMER_IRQ ? green : gray, "TIQ"); ImGui::SameLine();
ImGui::TextColored(*proc_state->IRQ1 ? green : gray, "IRQ1"); ImGui::SameLine();
ImGui::TextColored(*proc_state->IRQ2 ? green : gray, "IRQ2");

ImGui::TextColored(white, " "); ImGui::SameLine();
ImGui::TextColored(*proc_state->IDR & 0x04 ? red : green, "···"); ImGui::SameLine();
ImGui::TextColored(*proc_state->IDR & 0x02 ? red : green, "····"); ImGui::SameLine();
ImGui::TextColored(*proc_state->IDR & 0x01 ? red : green, "····");
ImGui::TextColored(magenta, " IRQ1:"); ImGui::SameLine();
ImGui::TextColored(*proc_state->IDR & 0x02 ? red : green, *proc_state->IDR & 0x02 ? "OFF" : "ON "); ImGui::SameLine();
ImGui::TextColored(*proc_state->IRQ1 ? green : gray, "ACTIVE");

ImGui::TextColored(magenta, " IRQ2:"); ImGui::SameLine();
ImGui::TextColored(*proc_state->IDR & 0x01 ? red : green, *proc_state->IDR & 0x01 ? "OFF" : "ON "); ImGui::SameLine();
ImGui::TextColored(*proc_state->IRQ2 ? green : gray, "ACTIVE");

ImGui::TextColored(magenta, " TIQ: "); ImGui::SameLine();
ImGui::TextColored(*proc_state->IDR & 0x04 ? red : green, *proc_state->IDR & 0x04 ? "OFF" : "ON "); ImGui::SameLine();
ImGui::TextColored(*proc_state->TIMER_IRQ ? green : gray, "ACTIVE");

ImGui::TableNextColumn();
ImGui::TextColored(input->GetSel() ? orange : gray, " I/O SEL"); ImGui::SameLine();
Expand All @@ -185,13 +225,6 @@ void gui_debug_window_huc6280(void)
ImGui::TextColored(!*proc_state->SPEED ? green : gray, " 1.79 MHz"); ImGui::SameLine();
ImGui::TextColored(*proc_state->SPEED ? green : gray, "7.16 MHz");

// ImGui::TextColored(*proc_state->IFF1 ? green : gray, " IFF1"); ImGui::SameLine();
// ImGui::TextColored(*proc_state->IFF2 ? green : gray, " IFF2"); ImGui::SameLine();
// ImGui::TextColored(*proc_state->Halt ? green : gray, " HALT");

// ImGui::TextColored(*proc_state->INT ? green : gray, " INT"); ImGui::SameLine();
// ImGui::TextColored(*proc_state->NMI ? green : gray, " NMI");

ImGui::EndTable();
}

Expand All @@ -200,3 +233,50 @@ void gui_debug_window_huc6280(void)
ImGui::End();
ImGui::PopStyleVar();
}

static void get_bank_name(u8 mpr, u8 mpr_value, char *name, char* tooltip)
{
u16 cpu_address = mpr << 13;

// 0x00 - 0x7F
if (mpr_value < 0x80)
{
u32 rom_address = mpr_value << 13;
snprintf(name, 16, "ROM $%02X", mpr_value);
snprintf(tooltip, 128, "Range (CPU) $%04X-$%04X \nRange (ROM) $%06X-$%06X",
cpu_address, cpu_address + 0x1FFF, rom_address, rom_address + 0x1FFF);
}
// 0x80 - 0xF6
else if (mpr_value < 0xF7)
{
snprintf(name, 16, "UNUSED");
snprintf(tooltip, 128, "Range (CPU) $%04X-$%04X", cpu_address, cpu_address + 0x1FFF);
}
// 0xF7
else if (mpr_value < 0xF8)
{
snprintf(name, 16, "BRAM");
snprintf(tooltip, 128, "Range (CPU) $%04X-$%04X", cpu_address, cpu_address + 0x1FFF);
}
// 0xF8 - 0xFB
else if (mpr_value < 0xFC)
{
u8 ram_bank = mpr_value - 0xF8;
u16 ram_address = ram_bank << 13;
snprintf(name, 16, "WRAM $%02X", ram_bank);
snprintf(tooltip, 128, "Range (CPU) $%04X-$%04X \nRange (WRAM) $%04X-$%04X",
cpu_address, cpu_address + 0x1FFF, ram_address, ram_address + 0x1FFF);
}
// 0xFC - 0xFE
else if (mpr_value < 0xFF)
{
snprintf(name, 16, "UNUSED");
snprintf(tooltip, 128, "Range (CPU) $%04X-$%04X", cpu_address, cpu_address + 0x1FFF);
}
// 0xFF
else
{
snprintf(name, 16, "HARDWARE");
snprintf(tooltip, 128, "Range (CPU) $%04X-$%04X", cpu_address, cpu_address + 0x1FFF);
}
}

0 comments on commit fd4904a

Please sign in to comment.