diff options
| author | Jordan Woyak <jordan.woyak@gmail.com> | 2026-02-20 16:01:22 -0600 |
|---|---|---|
| committer | Jordan Woyak <jordan.woyak@gmail.com> | 2026-03-12 02:48:07 -0500 |
| commit | 4fa93e402d86a6d607ae0fdb1f2d2c4b7b2e3b67 (patch) | |
| tree | 3e275fc3f1c95478ad97debeeb052a4ffba74d04 /Source/Core | |
| parent | 1234a4e4791097cd6ca20d1ca4693b29767a333b (diff) | |
SI/SI_DeviceAMBaseboard: Expose the buffer size of 128 to eliminate some magic numbers.
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/Core/HW/SI/SI.h | 4 | ||||
| -rw-r--r-- | Source/Core/Core/HW/SI/SI_DeviceAMBaseboard.cpp | 21 | ||||
| -rw-r--r-- | Source/Core/Core/HW/SI/SI_DeviceAMBaseboard.h | 5 |
3 files changed, 14 insertions, 16 deletions
diff --git a/Source/Core/Core/HW/SI/SI.h b/Source/Core/Core/HW/SI/SI.h index 5f8a47afd7..8e2e3afe3b 100644 --- a/Source/Core/Core/HW/SI/SI.h +++ b/Source/Core/Core/HW/SI/SI.h @@ -68,6 +68,8 @@ public: u32 GetPollXLines(); + static constexpr u32 BUFFER_SIZE = 128; + private: // SI Interrupt Types enum SIInterruptType @@ -241,7 +243,7 @@ private: USIComCSR m_com_csr; USIStatusReg m_status_reg; USIEXIClockCount m_exi_clock_count; - std::array<u8, 128> m_si_buffer{}; + std::array<u8, BUFFER_SIZE> m_si_buffer{}; Core::System& m_system; }; diff --git a/Source/Core/Core/HW/SI/SI_DeviceAMBaseboard.cpp b/Source/Core/Core/HW/SI/SI_DeviceAMBaseboard.cpp index f002e8f24f..03524214a9 100644 --- a/Source/Core/Core/HW/SI/SI_DeviceAMBaseboard.cpp +++ b/Source/Core/Core/HW/SI/SI_DeviceAMBaseboard.cpp @@ -176,14 +176,6 @@ CSIDevice_AMBaseboard::CSIDevice_AMBaseboard(Core::System& system, SIDevices dev } } -constexpr u32 SI_XFER_LENGTH_MASK = 0x7f; - -// Translate [0,1,2,...,126,127] to [128,1,2,...,126,127] -constexpr s32 ConvertSILengthField(u32 field) -{ - return ((field - 1) & SI_XFER_LENGTH_MASK) + 1; -} - void CSIDevice_AMBaseboard::ICCardSendReply(ICCommand* iccommand, u8* buffer, u32* length) { iccommand->status = Common::swap16(iccommand->status); @@ -201,9 +193,9 @@ void CSIDevice_AMBaseboard::ICCardSendReply(ICCommand* iccommand, u8* buffer, u3 void CSIDevice_AMBaseboard::SwapBuffers(u8* buffer, u32* buffer_length) { - memcpy(m_last[1], buffer, 0x80); // Save current buffer - memcpy(buffer, m_last[0], 0x80); // Load previous buffer - memcpy(m_last[0], m_last[1], 0x80); // Update history + memcpy(m_last[1], buffer, RESPONSE_SIZE); // Save current buffer + memcpy(buffer, m_last[0], RESPONSE_SIZE); // Load previous buffer + memcpy(m_last[0], m_last[1], RESPONSE_SIZE); // Update history m_lastptr[1] = *buffer_length; // Swap lengths *buffer_length = m_lastptr[0]; @@ -212,11 +204,12 @@ void CSIDevice_AMBaseboard::SwapBuffers(u8* buffer, u32* buffer_length) int CSIDevice_AMBaseboard::RunBuffer(u8* buffer, int request_length) { + // Debug logging + ISIDevice::RunBuffer(buffer, request_length); + const auto& serial_interface = m_system.GetSerialInterface(); - u32 buffer_length = ConvertSILengthField(serial_interface.GetInLength()); - // Debug logging - ISIDevice::RunBuffer(buffer, buffer_length); + u32 buffer_length = RESPONSE_SIZE; u32 buffer_position = 0; while (buffer_position < buffer_length) diff --git a/Source/Core/Core/HW/SI/SI_DeviceAMBaseboard.h b/Source/Core/Core/HW/SI/SI_DeviceAMBaseboard.h index 4e7be13f00..55de0d357f 100644 --- a/Source/Core/Core/HW/SI/SI_DeviceAMBaseboard.h +++ b/Source/Core/Core/HW/SI/SI_DeviceAMBaseboard.h @@ -4,6 +4,7 @@ #pragma once #include "Core/HW/MagCard/MagneticCardReader.h" +#include "Core/HW/SI/SI.h" #include "Core/HW/SI/SI_Device.h" namespace SerialInterface @@ -175,7 +176,9 @@ private: u32 extlen; }; - u8 m_last[2][0x80] = {}; + static constexpr u32 RESPONSE_SIZE = SerialInterfaceManager::BUFFER_SIZE; + + u8 m_last[2][RESPONSE_SIZE] = {}; u32 m_lastptr[2] = {}; std::array<u16, 2> m_coin{}; |
