diff --git a/CHANGELOG.md b/CHANGELOG.md index 6faf937..8632d8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## [v1.7.1] - 28 Jun 2026 + +### Fixed +- Arm9 initialization when booting homebrew in DSi mode + ## [v1.7.0] - 27 Jun 2026 ### Added diff --git a/arm7/source/loader/NdsLoader.cpp b/arm7/source/loader/NdsLoader.cpp index 522bf10..82ab566 100644 --- a/arm7/source/loader/NdsLoader.cpp +++ b/arm7/source/loader/NdsLoader.cpp @@ -173,13 +173,10 @@ void NdsLoader::Load(BootMode bootMode) || _romHeader.arm7LoadAddress >= 0x03000000; _runInDSiMode = _runInDSiMode && Environment::IsDsiMode() && _romHeader.SupportsDsiMode(); + bool isCloneBootRom = false; if (isHomebrew) { LOG_DEBUG("Homebrew\n"); - sendToArm9(IPC_COMMAND_ARM9_SET_ROM_FILE_INFO); - sendToArm9(_romFile.dir_sect); - sendToArm9((u32)(_romFile.dir_ptr - _romFile.obj.fs->win)); - sendToArm9(_runInDSiMode ? 2 : 0); } else { @@ -193,12 +190,16 @@ void NdsLoader::Load(BootMode bootMode) "WARNING: DSi ROM detected with missing DSi parts.\nROM will run in DS mode.\n\nPress (A) to continue..."); } - bool isCloneBootRom = bootMode != BootMode::Multiboot && IsCloneBootRom(romOffset); - sendToArm9(IPC_COMMAND_ARM9_SET_ROM_FILE_INFO); - sendToArm9(_romFile.dir_sect); - sendToArm9((u32)(_romFile.dir_ptr - _romFile.obj.fs->win)); - sendToArm9((isCloneBootRom ? 1 : 0) | (_runInDSiMode ? 2 : 0)); + isCloneBootRom = bootMode != BootMode::Multiboot && IsCloneBootRom(romOffset); + } + sendToArm9(IPC_COMMAND_ARM9_SET_ROM_FILE_INFO); + sendToArm9(isHomebrew ? 0 : _romFile.dir_sect); + sendToArm9(isHomebrew ? 0 : (u32)(_romFile.dir_ptr - _romFile.obj.fs->win)); + sendToArm9((isCloneBootRom ? 1 : 0) | (_runInDSiMode ? 2 : 0)); + + if (!isHomebrew) + { memset(&_dsiwareSaveResult, 0, sizeof(_dsiwareSaveResult)); if (bootMode != BootMode::Multiboot) { diff --git a/arm9/source/patches/arm9/OSResetSystemPatch.h b/arm9/source/patches/arm9/OSResetSystemPatch.h index ce0d7c4..e5b9c2f 100644 --- a/arm9/source/patches/arm9/OSResetSystemPatch.h +++ b/arm9/source/patches/arm9/OSResetSystemPatch.h @@ -7,7 +7,7 @@ class OSResetSystemPatch : public Patch { public: OSResetSystemPatch(const loader_info_t* loaderInfo, bool runInDSiMode) - : _loaderInfo(loaderInfo), _runInDSiMode(runInDSiMode) { } + : _runInDSiMode(runInDSiMode), _loaderInfo(loaderInfo) { } bool FindPatchTarget(PatchContext& patchContext) override; void ApplyPatch(PatchContext& patchContext) override;