From 8d3aca3c66b88097f59155efbb6ffca52b6a82b9 Mon Sep 17 00:00:00 2001 From: GearsProgress Date: Fri, 22 May 2026 13:49:04 -0400 Subject: [PATCH] Obtaining checksum from GB --- include/link_handler.h | 2 ++ source/dbg/debug_mode.cpp | 2 +- source/link_handler.cpp | 11 +++++++---- source/main.cpp | 2 +- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/include/link_handler.h b/include/link_handler.h index 6faae7e..def0fa5 100644 --- a/include/link_handler.h +++ b/include/link_handler.h @@ -83,6 +83,8 @@ public: byte data_packet[PACKET_SIZE]; byte curr_payload[0x2A0]; int curr_payload_size = 0; + byte dataOutBuffer[0xFF]; + int dataOutBufferCurrIndex = 0; bool paused = false; // Used for pausing and sending one byte at a time diff --git a/source/dbg/debug_mode.cpp b/source/dbg/debug_mode.cpp index e4826c0..a9314eb 100644 --- a/source/dbg/debug_mode.cpp +++ b/source/dbg/debug_mode.cpp @@ -2,7 +2,7 @@ debug_options g_debug_options = { - .print_link_data = (true && DEBUG_MODE), + .print_link_data = (false && DEBUG_MODE), .instant_text_speed = (true && DEBUG_MODE), .ignore_game_pak = (true && DEBUG_MODE), .ignore_game_pak_sprites = (false && DEBUG_MODE), diff --git a/source/link_handler.cpp b/source/link_handler.cpp index 77f5065..0464715 100644 --- a/source/link_handler.cpp +++ b/source/link_handler.cpp @@ -300,6 +300,8 @@ void LinkConnection::logicState_initConnection() if (inData == 0xFD) { subState = GET_CHECKSUM; + g_debug_options.print_link_data = true; + paused = true; } outData = 0x00; break; @@ -308,16 +310,17 @@ void LinkConnection::logicState_initConnection() if (inData != 0xFD) { - outData = 0xFD; + dataOutBuffer[dataOutBufferCurrIndex] = inData; + dataOutBufferCurrIndex++; + outData = 0x01; } - - else if (subStateCounter >= 10) + else if (inData == 0xFD && dataOutBufferCurrIndex > 0) { subState = END; } else { - outData = 0x01; + outData = 0xFD; } break; diff --git a/source/main.cpp b/source/main.cpp index 1ebda4f..0be4c68 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -79,7 +79,7 @@ void initialization_script(void) REG_IME = 0; REG_IE = 0; - irq_init(NULL); + irq_init(&isr_master_nest); // Sound bank init // irq_init(NULL);