diff --git a/Source/Core/Core/HW/DVD/AMMediaboard.cpp b/Source/Core/Core/HW/DVD/AMMediaboard.cpp index d94f86e404..7effc677c3 100644 --- a/Source/Core/Core/HW/DVD/AMMediaboard.cpp +++ b/Source/Core/Core/HW/DVD/AMMediaboard.cpp @@ -4,7 +4,6 @@ #include "Core/HW/DVD/AMMediaboard.h" #include -#include #include #include @@ -33,8 +32,6 @@ #include "Core/Movie.h" #include "Core/System.h" -#include "DiscIO/DirectoryBlob.h" - #if defined(__linux__) or defined(__APPLE__) or defined(__FreeBSD__) or defined(__NetBSD__) or \ defined(__HAIKU__) @@ -215,14 +212,14 @@ static bool SafeCopyToEmu(Memory::MemoryManager& memory, u32 address, const u8* memory.CopyToEmu(address, source + offset, length); return true; } -static bool SafeCopyFromEmu(Memory::MemoryManager& memory, u8* destionation, u32 address, - u64 destionation_size, u32 offset, u32 length) +static bool SafeCopyFromEmu(Memory::MemoryManager& memory, u8* destination, u32 address, + u64 destination_size, u32 offset, u32 length) { - if (offset > destionation_size || length > destionation_size - offset) + if (offset > destination_size || length > destination_size - offset) { ERROR_LOG_FMT(AMMEDIABOARD, - "GC-AM: Write overflow: offset=0x{:08x}, length={}, destionation_size={}", offset, - length, destionation_size); + "GC-AM: Write overflow: offset=0x{:08x}, length={}, destination_size={}", offset, + length, destination_size); return false; } @@ -235,13 +232,13 @@ static bool SafeCopyFromEmu(Memory::MemoryManager& memory, u8* destionation, u32 return false; } - memory.CopyFromEmu(destionation + offset, address, length); + memory.CopyFromEmu(destination + offset, address, length); return true; } static SOCKET socket_(int af, int type, int protocol) { - for (u32 i = 1; i < 64; ++i) + for (u32 i = 1; i < std::size(s_sockets); ++i) { if (s_sockets[i] == SOCKET_ERROR) { @@ -256,7 +253,7 @@ static SOCKET socket_(int af, int type, int protocol) static SOCKET accept_(int fd, sockaddr* addr, socklen_t* len) { - for (u32 i = 1; i < 64; ++i) + for (u32 i = 1; i < std::size(s_sockets); ++i) { if (s_sockets[i] == SOCKET_ERROR) { @@ -711,8 +708,8 @@ u32 ExecuteCommand(std::array& dicmd_buf, u32* diimm_buf, u32 address, u { INFO_LOG_FMT(AMMEDIABOARD, "GC-AM: Read All.Net Buffer ({:08x},{})", offset, length); // Fake reply - SafeCopyToEmu(memory, address, (u8*)s_allnet_reply, sizeof(s_allnet_reply), - offset - AllNetBuffer, sizeof(s_allnet_reply)); + SafeCopyToEmu(memory, address, reinterpret_cast(s_allnet_reply), + sizeof(s_allnet_reply), offset - AllNetBuffer, sizeof(s_allnet_reply)); return 0; } @@ -1239,8 +1236,8 @@ u32 ExecuteCommand(std::array& dicmd_buf, u32* diimm_buf, u32 address, u // Firmware memory (2MB) if ((offset >= 0x00400000) && (offset <= 0x600000)) { - const u32 fwoffset = offset - 0x00400000; - memory.CopyFromEmu(s_firmware + fwoffset, address, length); + const u32 fw_offset = offset - 0x00400000; + memory.CopyFromEmu(s_firmware + fw_offset, address, length); return 0; } } @@ -1843,7 +1840,7 @@ void Shutdown() s_dimm_disc.clear(); // Close all sockets - for (u32 i = 1; i < 64; ++i) + for (u32 i = 1; i < std::size(s_sockets); ++i) { if (s_sockets[i] != SOCKET_ERROR) { diff --git a/Source/Core/Core/HW/DVD/DVDInterface.cpp b/Source/Core/Core/HW/DVD/DVDInterface.cpp index 768870f185..edbd9bdc6d 100644 --- a/Source/Core/Core/HW/DVD/DVDInterface.cpp +++ b/Source/Core/Core/HW/DVD/DVDInterface.cpp @@ -321,7 +321,7 @@ void DVDInterface::ResetDrive(bool spinup) else if (!spinup) { // Wii hardware tests indicate that this is used when ejecting and inserting a new disc, or - // performing a reset without spin up. + // performing a reset without spin-up. SetDriveState(DriveState::DiscChangeDetected); } else diff --git a/Source/Core/Core/HW/SI/SI_DeviceAMBaseboard.cpp b/Source/Core/Core/HW/SI/SI_DeviceAMBaseboard.cpp index 92cec36b30..fce4ed9f63 100644 --- a/Source/Core/Core/HW/SI/SI_DeviceAMBaseboard.cpp +++ b/Source/Core/Core/HW/SI/SI_DeviceAMBaseboard.cpp @@ -4,6 +4,7 @@ #include "Core/HW/SI/SI_DeviceAMBaseboard.h" #include +#include #include #include @@ -41,7 +42,6 @@ namespace SerialInterface { - void JVSIOMessage::Start(int node) { m_last_start = m_pointer; @@ -89,7 +89,7 @@ void JVSIOMessage::AddData(const u8* dst, std::size_t len, int sync = 0) void JVSIOMessage::AddData(const void* data, std::size_t len) { - AddData((const u8*)data, len); + AddData(static_cast(data), len); } void JVSIOMessage::AddData(const char* data) @@ -117,21 +117,14 @@ void JVSIOMessage::End() } } -static u8 CheckSumXOR(u8* data, u32 length) +static constexpr u8 CheckSumXOR(const u8* data, u32 length) { - u8 check = 0; - - for (u32 i = 0; i < length; i++) - { - check ^= data[i]; - } - - return check; + return std::accumulate(data, data + length, u8{}, std::bit_xor()); } -static const char s_cdr_program_version[] = {" Version 1.22,2003/09/19,171-8213B"}; -static const char s_cdr_boot_version[] = {" Version 1.04,2003/06/17,171-8213B"}; -static const u8 s_cdr_card_data[] = { +static constexpr char s_cdr_program_version[] = {" Version 1.22,2003/09/19,171-8213B"}; +static constexpr char s_cdr_boot_version[] = {" Version 1.04,2003/06/17,171-8213B"}; +static constexpr u8 s_cdr_card_data[] = { 0x00, 0x6E, 0x00, 0x00, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x07, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x10, 0x00, 0x00, 0x17, 0x00, 0x00, 0x19, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x20, 0x00, @@ -139,29 +132,16 @@ static const u8 s_cdr_card_data[] = { 0x00, 0x00, 0x2C, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x34, 0x00, 0x00, 0x35, 0x00, 0x00, 0x37, 0x00, 0x00, 0x38, 0x00, 0x00, 0x39, 0x00, 0x00, 0x3D, 0x00}; -const static u8 s_region_flags[] = "\x00\x00\x30\x00" - // "\x01\xfe\x00\x00" // JAPAN - "\x02\xfd\x00\x00" // USA - //"\x03\xfc\x00\x00" // export - "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"; +const constexpr u8 s_region_flags[] = "\x00\x00\x30\x00" + // "\x01\xfe\x00\x00" // JAPAN + "\x02\xfd\x00\x00" // USA + //"\x03\xfc\x00\x00" // export + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"; // AM-Baseboard device on SI CSIDevice_AMBaseboard::CSIDevice_AMBaseboard(Core::System& system, SIDevices device, int device_number) : ISIDevice(system, device, device_number) { - std::ranges::fill(m_coin, 0); - - // Setup IC-card - m_ic_card_state = 0x20; - m_ic_card_status = ICCARDStatus::Okay; - m_ic_card_session = 0x23; - - m_ic_write_size = 0; - m_ic_write_offset = 0; - - memset(m_ic_write_buffer, 0, sizeof(m_ic_write_buffer)); - memset(m_ic_card_data, 0, sizeof(m_ic_card_data)); - // Card ID m_ic_card_data[0x20] = 0x95; m_ic_card_data[0x21] = 0x71; @@ -180,44 +160,6 @@ CSIDevice_AMBaseboard::CSIDevice_AMBaseboard(Core::System& system, SIDevices dev // Use count m_ic_card_data[0x28] = 0xFF; m_ic_card_data[0x29] = 0xFF; - - // Setup CARD - m_card_memory_size = 0; - m_card_is_inserted = false; - - m_card_offset = 0; - m_card_command = 0; - m_card_clean = 0; - - m_card_write_length = 0; - m_card_wrote = 0; - - m_card_read_length = 0; - m_card_read = 0; - - m_card_bit = 0; - m_card_shutter = true; // Open - m_card_state_call_count = 0; - - // Serial - m_wheel_init = 0; - - m_motor_init = 0; - m_motor_force_y = 0; - - m_fzdx_seatbelt = true; - m_fzdx_motion_stop = false; - m_fzdx_sensor_right = false; - m_fzdx_sensor_left = false; - - m_rx_reply = 0xF0; - - m_fzcc_seatbelt = true; - m_fzcc_sensor = false; - m_fzcc_emergency = false; - m_fzcc_service = false; - - memset(m_motor_reply, 0, sizeof(m_motor_reply)); } constexpr u32 SI_XFER_LENGTH_MASK = 0x7f; @@ -1177,7 +1119,7 @@ int CSIDevice_AMBaseboard::RunBuffer(u8* buffer, int request_length) if (m_card_state_call_count > 10) { if (m_card_bit & 2) - m_card_bit &= ~2; + m_card_bit &= ~2u; else m_card_bit |= 2; @@ -1400,10 +1342,7 @@ int CSIDevice_AMBaseboard::RunBuffer(u8* buffer, int request_length) u8 jvs_buf[0x80]; - if (frame_len > sizeof(jvs_buf)) - { - frame_len = sizeof(jvs_buf); - } + frame_len = std::min(frame_len, sizeof(jvs_buf)); memcpy(jvs_buf, frame, frame_len); @@ -1555,7 +1494,7 @@ int CSIDevice_AMBaseboard::RunBuffer(u8* buffer, int request_length) case JVSIOCommand::MainID: while (*jvs_io++) { - }; + } message.AddData(StatusOkay); break; case JVSIOCommand::SwitchesInput: @@ -2099,7 +2038,7 @@ int CSIDevice_AMBaseboard::RunBuffer(u8* buffer, int request_length) NOTICE_LOG_FMT(SERIALINTERFACE_JVSIO, "JVS-IO: Command 0xF1, SetAddress: node={}", node); message.AddData(node == 1); - dip_switch_1 &= ~1; + dip_switch_1 &= ~1u; break; default: ERROR_LOG_FMT(SERIALINTERFACE_JVSIO, "JVS-IO: Unhandled: node={}, command={:02x}", @@ -2180,13 +2119,11 @@ CSIDevice_AMBaseboard::EButtonCombo CSIDevice_AMBaseboard::HandleButtonCombos(const GCPadStatus& pad_status) { // Keep track of the special button combos (embedded in controller hardware... :( ) - EButtonCombo temp_combo; + EButtonCombo temp_combo = COMBO_NONE; if ((pad_status.button & 0xff00) == (PAD_BUTTON_Y | PAD_BUTTON_X | PAD_BUTTON_START)) temp_combo = COMBO_ORIGIN; else if ((pad_status.button & 0xff00) == (PAD_BUTTON_B | PAD_BUTTON_X | PAD_BUTTON_START)) temp_combo = COMBO_RESET; - else - temp_combo = COMBO_NONE; if (temp_combo != m_last_button_combo) { diff --git a/Source/Core/Core/HW/SI/SI_DeviceAMBaseboard.h b/Source/Core/Core/HW/SI/SI_DeviceAMBaseboard.h index 0870412f60..35ec5c4448 100644 --- a/Source/Core/Core/HW/SI/SI_DeviceAMBaseboard.h +++ b/Source/Core/Core/HW/SI/SI_DeviceAMBaseboard.h @@ -241,7 +241,7 @@ private: union ICCommand { - u8 data[81 + 4 + 4 + 4]; + u8 data[81 + 4 + 4 + 4] = {}; struct { @@ -258,55 +258,61 @@ private: }; }; - u8 m_last[2][0x80]; - u32 m_lastptr[2]; + u8 m_last[2][0x80] = {}; + u32 m_lastptr[2] = {}; - u16 m_coin[2]; - u32 m_coin_pressed[2]; + u16 m_coin[2] = {}; + u32 m_coin_pressed[2] = {}; - u8 m_ic_card_data[2048]; - u16 m_ic_card_state; + u8 m_ic_card_data[2048] = {}; - u16 m_ic_card_status; - u16 m_ic_card_session; - u8 m_ic_write_buffer[512]; - u32 m_ic_write_offset; - u32 m_ic_write_size; + // Setup IC-card + u16 m_ic_card_state = 0x20; + u16 m_ic_card_status = ICCARDStatus::Okay; + u16 m_ic_card_session = 0x23; - u8 m_card_memory[0xD0]; - u8 m_card_read_packet[0xDB]; - u8 m_card_buffer[0x100]; - u32 m_card_memory_size; - bool m_card_is_inserted; - u32 m_card_command; - u32 m_card_clean; - u32 m_card_write_length; - u32 m_card_wrote; - u32 m_card_read_length; - u32 m_card_read; - u32 m_card_bit; - bool m_card_shutter; - u32 m_card_state_call_count; - u8 m_card_offset; + u8 m_ic_write_buffer[512] = {}; + u32 m_ic_write_offset = 0; + u32 m_ic_write_size = 0; - u32 m_wheel_init; + u8 m_card_memory[0xD0] = {}; + u8 m_card_read_packet[0xDB] = {}; + u8 m_card_buffer[0x100] = {}; - u32 m_motor_init; - u8 m_motor_reply[64]; - s16 m_motor_force_y; + // Setup CARD + u32 m_card_memory_size = 0; + bool m_card_is_inserted = false; + + u32 m_card_command = 0; + u32 m_card_clean = 0; + u32 m_card_write_length = 0; + u32 m_card_wrote = 0; + u32 m_card_read_length = 0; + u32 m_card_read = 0; + u32 m_card_bit = 0; + bool m_card_shutter = true; // Open + u32 m_card_state_call_count = 0; + u8 m_card_offset = 0; + + // Serial + u32 m_wheel_init = 0; + + u32 m_motor_init = 0; + u8 m_motor_reply[64] = {}; + s16 m_motor_force_y = 0; // F-Zero AX (DX) - bool m_fzdx_seatbelt; - bool m_fzdx_motion_stop; - bool m_fzdx_sensor_right; - bool m_fzdx_sensor_left; - u8 m_rx_reply; + bool m_fzdx_seatbelt = true; + bool m_fzdx_motion_stop = false; + bool m_fzdx_sensor_right = false; + bool m_fzdx_sensor_left = false; + u8 m_rx_reply = 0xF0; // F-Zero AX (CyCraft) - bool m_fzcc_seatbelt; - bool m_fzcc_sensor; - bool m_fzcc_emergency; - bool m_fzcc_service; + bool m_fzcc_seatbelt = true; + bool m_fzcc_sensor = false; + bool m_fzcc_emergency = false; + bool m_fzcc_service = false; void ICCardSendReply(ICCommand* iccommand, u8* buffer, u32* length); }; diff --git a/Source/Core/DolphinQt/MainWindow.cpp b/Source/Core/DolphinQt/MainWindow.cpp index b14885b947..f0ffbec687 100644 --- a/Source/Core/DolphinQt/MainWindow.cpp +++ b/Source/Core/DolphinQt/MainWindow.cpp @@ -250,12 +250,7 @@ MainWindow::MainWindow(Core::System& system, std::unique_ptr boo }); #endif - connect(m_cheats_manager, &CheatsManager::OpenGeneralSettings, this, - &MainWindow::ShowGeneralWindow); - #ifdef USE_RETRO_ACHIEVEMENTS - connect(m_cheats_manager, &CheatsManager::OpenAchievementSettings, this, - &MainWindow::ShowAchievementSettings); connect(m_game_list, &GameList::OpenAchievementSettings, this, &MainWindow::ShowAchievementSettings); #endif // USE_RETRO_ACHIEVEMENTS