From 80aee6fdc175e4191629960f991fad1896d05c34 Mon Sep 17 00:00:00 2001 From: TuxSH <1922548+TuxSH@users.noreply.github.com> Date: Fri, 10 Jun 2022 22:55:18 +0100 Subject: [PATCH] Fix mcu firmware version check (byte order was inverted) --- arm9/source/main.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/arm9/source/main.c b/arm9/source/main.c index 927cacb..3e11b0b 100644 --- a/arm9/source/main.c +++ b/arm9/source/main.c @@ -121,8 +121,13 @@ void main(int argc, char **argv, u32 magicWord) memset(__itcm_bss_start__, 0, __itcm_end__ - __itcm_bss_start__); I2C_init(); - I2C_readRegBuf(I2C_DEV_MCU, 0x00, (u8 *)&mcuFwVersion, 2); - if ((mcuFwVersion & 0xFFF) < 0x0100) error("Unsupported MCU FW version."); + u8 mcuFwVerHi = I2C_readReg(I2C_DEV_MCU, 0) - 0x10; + u8 mcuFwVerLo = I2C_readReg(I2C_DEV_MCU, 1); + mcuFwVersion = ((u16)mcuFwVerHi << 16) | mcuFwVerLo; + + // Check if fw is older than factory. See https://www.3dbrew.org/wiki/MCU_Services#MCU_firmware_versions for a table + if (mcuFwVerHi < 1) error("Unsupported MCU FW version %d.%d.", (int)mcuFwVerHi, (int)mcuFwVerLo); + I2C_readRegBuf(I2C_DEV_MCU, 0x7F, mcuConsoleInfo, 9); if(isInvalidLoader) error("Launched using an unsupported loader.");