Skip to content

Commit

Permalink
Adjust removing items to give next trade item if it is not none. (#45)
Browse files Browse the repository at this point in the history
  • Loading branch information
PhlexPlexico committed Mar 10, 2024
1 parent 03647b0 commit 414aa76
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 0 deletions.
1 change: 1 addition & 0 deletions code/include/rnd/savefile.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ namespace rnd {
extern "C" void SaveFile_RemoveStoredTradeItem(u16, u8);
extern "C" void SaveFile_RemoveTradeItemFromSlot(u16, u8);
extern "C" u8 SaveFile_GetItemCurrentlyInSlot(u8);
extern "C" void SaveFile_SetNextTradeSlotItem(u8);

typedef struct {
u32 version; // Needs to always be the first field of the structure
Expand Down
4 changes: 4 additions & 0 deletions code/mm.ld
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,10 @@ SECTIONS{
*(.patch_RemoveTradeItemFromSlot)
}

.patch_SwapTradeItemFromExtSlot 0x1AFEA8 : {
*(.patch_SwapTradeItemFromExtSlot)
}

.patch_OverrideCutsceneNextEntrance 0x1B1834 : {
*(.patch_OverrideCutsceneNextEntrance)
}
Expand Down
8 changes: 8 additions & 0 deletions code/source/asm/trade_item_hooks.s
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,14 @@ hook_RemoveTradeItemFromExtSlot:
cpy r4,r0
bx lr

.global hook_SwapTradeItemFromExtSlot
hook_SwapTradeItemFromExtSlot:
push {r0-r12,lr}
bl SaveFile_SetNextTradeSlotItem
pop {r0-r12,lr}
mov r2, #0xFF
bx lr

.global hook_RemoveKafeiItemFromExtSlot
hook_RemoveKafeiItemFromExtSlot:
push {r0-r12, lr}
Expand Down
5 changes: 5 additions & 0 deletions code/source/asm/trade_item_patches.s
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@
patch_RemoveTradeItemFromSlot:
bl hook_RemoveTradeItemFromExtSlot

.section .patch_SwapTradeItemFromExtSlot
.global patch_SwapTradeItemFromExtSlot
patch_SwapTradeItemFromExtSlot:
bl hook_SwapTradeItemFromExtSlot

.section .patch_DoNotRemoveTradeItems
.global patch_DoNotRemoveTradeItems
patch_DoNotRemoveTradeItems:
Expand Down
22 changes: 22 additions & 0 deletions code/source/rnd/savefile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -940,6 +940,8 @@ namespace rnd {
break;
}
}
} else if (slot == 17 && item == (u16)game::ItemId::LetterToKafei) {
gExtSaveData.collectedTradeItems[6] = game::ItemId::None;
}
}

Expand All @@ -949,6 +951,26 @@ namespace rnd {
#endif
return (u8)game::GetCommonData().save.inventory.items[slot];
}

extern "C" void SaveFile_SetNextTradeSlotItem(u8 slot) {
if (slot != 5 && slot != 17)
return;
game::ItemId firstItem = game::ItemId::None;
for (int i = 0; i < 9; i++) {
if (firstItem == game::ItemId::None) {
if (slot == 17 && i > 5 && i < 8 && gExtSaveData.collectedTradeItems[i] != game::ItemId::None) {
firstItem = gExtSaveData.collectedTradeItems[i];
break;
} else if (slot == 5 && i < 5 && gExtSaveData.collectedTradeItems[i] != game::ItemId::None) {
firstItem = gExtSaveData.collectedTradeItems[i];
break;
}
}
}
// Place the item in inventory, if there is no item to place it simply places none.
game::SaveData& saveData = game::GetCommonData().save;
saveData.inventory.items[slot] = firstItem;
}
// SaveFile_DrawAndShowUIMessage() {

// }
Expand Down

0 comments on commit 414aa76

Please sign in to comment.