diff --git a/code/include/rnd/settings.h b/code/include/rnd/settings.h index 6a20231..287051d 100644 --- a/code/include/rnd/settings.h +++ b/code/include/rnd/settings.h @@ -441,7 +441,7 @@ namespace rnd { extern "C" SettingsContext gSettingsContext; extern const char hashIconNames[62][25]; - s32 Settings_ApplyDamageMultiplier(game::GlobalContext*, s32); + extern "C" s32 Settings_ApplyDamageMultiplier(game::GlobalContext*, s32); u32 Hash(u32); u8 Bias(u32); } // namespace rnd diff --git a/code/mm.ld b/code/mm.ld index 036052d..d2c2637 100644 --- a/code/mm.ld +++ b/code/mm.ld @@ -265,6 +265,10 @@ SECTIONS{ *(.patch_OverrideItemIdIndex) } + .patch_ApplyDamageMultiplier 0x21E528 : { + *(.patch_ApplyDamageMultiplier) + } + .patch_ChangeTriggerAandRToA 0x220EFC : { *(.patch_ChangeTriggerAandRToA) } @@ -301,6 +305,14 @@ SECTIONS{ *(.patch_RemoveSkulltulaTokenGetItem) } */ + .patch_OverrideTextID 0x2310FC : { + *(.patch_OverrideTextID) + } + + .patch_OverrideItemID 0x231108 : { + *(.patch_OverrideItemID) + } + .patch_ForceSwordUpgradeOnHuman 0x233D88 : { *(.patch_ForceSwordUpgradeOnHuman) } @@ -325,14 +337,6 @@ SECTIONS{ *(.patch_RemoveRazordSwordHealthThree) } - .patch_OverrideTextID 0x2310FC : { - *(.patch_OverrideTextID) - } - - .patch_OverrideItemID 0x231108 : { - *(.patch_OverrideItemID) - } - .patch_RemoveAddingSkulltulaTokenIfOverridden 0x23975C : { *(.patch_RemoveAddingSkulltulaTokenIfOverridden) } diff --git a/code/source/asm/player_hooks.s b/code/source/asm/player_hooks.s new file mode 100644 index 0000000..e34221a --- /dev/null +++ b/code/source/asm/player_hooks.s @@ -0,0 +1,11 @@ +.arm +.text + +.global hook_ApplyDamageMultiplier +hook_ApplyDamageMultiplier: + push {r0, r2-r12, lr} + bl Settings_ApplyDamageMultiplier @ Found in settings.cpp + cpy r1,r0 + pop {r0, r2-r12, lr} + subs r4,r1,#0x0 + bx lr \ No newline at end of file diff --git a/code/source/asm/player_patches.s b/code/source/asm/player_patches.s new file mode 100644 index 0000000..d76eb43 --- /dev/null +++ b/code/source/asm/player_patches.s @@ -0,0 +1,6 @@ +.arm + +.section .patch_ApplyDamageMultiplier +.global patch_ApplyDamageMultiplier +patch_ApplyDamageMultiplier: + bl hook_ApplyDamageMultiplier \ No newline at end of file diff --git a/code/source/main.cpp b/code/source/main.cpp index 1a56a2d..32ca785 100644 --- a/code/source/main.cpp +++ b/code/source/main.cpp @@ -107,8 +107,10 @@ namespace rnd { // const u32 newButtons = gctx->pad_state.input.new_buttons.flags; #if defined ENABLE_DEBUG || defined DEBUG_PRINT if (pressedButtons == (u32)game::pad::Button::ZR) { - auto& inventory = game::GetCommonData().save.inventory; - inventory.items[0] = game::ItemId::None; + auto* player = gctx->GetPlayerActor(); + if (player) { + player->damage = 4; + } } else if (pressedButtons == (u32)game::pad::Button::ZL) { auto& inventory = game::GetCommonData().save.inventory; inventory.items[0] = game::ItemId::Ocarina;