summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorJordan Woyak <jordan.woyak@gmail.com>2026-02-20 16:01:22 -0600
committerJordan Woyak <jordan.woyak@gmail.com>2026-03-12 02:48:07 -0500
commit4fa93e402d86a6d607ae0fdb1f2d2c4b7b2e3b67 (patch)
tree3e275fc3f1c95478ad97debeeb052a4ffba74d04 /Source/Core
parent1234a4e4791097cd6ca20d1ca4693b29767a333b (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.h4
-rw-r--r--Source/Core/Core/HW/SI/SI_DeviceAMBaseboard.cpp21
-rw-r--r--Source/Core/Core/HW/SI/SI_DeviceAMBaseboard.h5
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{};