18
18
#include < ttyd/mario.h>
19
19
#include < ttyd/mario_party.h>
20
20
#include < ttyd/party.h>
21
+ #include < ttyd/memory.h>
21
22
#include < ttyd/seq_title.h>
22
23
#include < ttyd/mario_pouch.h>
23
24
#include < ttyd/sac_scissor.h>
24
- #include < ttyd/memory.h>
25
25
26
26
#include < cstdio>
27
27
#include < cinttypes>
@@ -215,6 +215,22 @@ void *fixEvtMapBlendSetFlagFollowerCrash(void *followerPtr)
215
215
}
216
216
}
217
217
218
+ void *preventPouchInitMemoryLeak (uint32_t heap, uint32_t size)
219
+ {
220
+ // Check if the memory has already been allocated or not
221
+ void *PouchPtr = ttyd::mario_pouch::pouchGetPtr ();
222
+ if (!PouchPtr)
223
+ {
224
+ // The memory has not been allocated, so allocate it
225
+ return ttyd::memory::__memAlloc (heap, size);
226
+ }
227
+ else
228
+ {
229
+ // The memory has already been allocated, so clear it
230
+ return clearMemory (PouchPtr, size);
231
+ }
232
+ }
233
+
218
234
const char *replaceJumpFallAnim (char *jumpFallString)
219
235
{
220
236
if (compareStringsSize (jumpFallString, " M_J_" , 4 ))
@@ -609,6 +625,7 @@ void initAddressOverwrites()
609
625
void *DisableDPadOptionsDisplayAddress = reinterpret_cast <void *>(0x8013D148 );
610
626
void *FixEvtMapBlendSetFlagPartnerCrashAddress = reinterpret_cast <void *>(0x800389C4 );
611
627
void *FixEvtMapBlendSetFlagFollowerCrashAddress = reinterpret_cast <void *>(0x80038A0C );
628
+ void *PreventPouchInitMemoryLeakAddress = reinterpret_cast <void *>(0x800D59DC );
612
629
void *InitStageEventsAddress = reinterpret_cast <void *>(0x800080E4 );
613
630
void *FallThroughMostObjectsStandAddress = reinterpret_cast <void *>(0x8008E9DC );
614
631
void *FallThroughMostObjectsTubeAddress = reinterpret_cast <void *>(0x8008E1E8 );
@@ -633,6 +650,7 @@ void initAddressOverwrites()
633
650
void *DisableDPadOptionsDisplayAddress = reinterpret_cast <void *>(0x80137C1C );
634
651
void *FixEvtMapBlendSetFlagPartnerCrashAddress = reinterpret_cast <void *>(0x80038328 );
635
652
void *FixEvtMapBlendSetFlagFollowerCrashAddress = reinterpret_cast <void *>(0x80038370 );
653
+ void *PreventPouchInitMemoryLeakAddress = reinterpret_cast <void *>(0x800D17A8 );
636
654
void *InitStageEventsAddress = reinterpret_cast <void *>(0x80008054 );
637
655
void *FallThroughMostObjectsStandAddress = reinterpret_cast <void *>(0x8008D428 );
638
656
void *FallThroughMostObjectsTubeAddress = reinterpret_cast <void *>(0x8008CC4C );
@@ -659,6 +677,7 @@ void initAddressOverwrites()
659
677
void *DisableDPadOptionsDisplayAddress = reinterpret_cast <void *>(0x8013EC30 );
660
678
void *FixEvtMapBlendSetFlagPartnerCrashAddress = reinterpret_cast <void *>(0x80038AAC );
661
679
void *FixEvtMapBlendSetFlagFollowerCrashAddress = reinterpret_cast <void *>(0x80038AF4 );
680
+ void *PreventPouchInitMemoryLeakAddress = reinterpret_cast <void *>(0x800D67E4 );
662
681
void *InitStageEventsAddress = reinterpret_cast <void *>(0x800082BC );
663
682
void *FallThroughMostObjectsStandAddress = reinterpret_cast <void *>(0x8008FD38 );
664
683
void *FallThroughMostObjectsTubeAddress = reinterpret_cast <void *>(0x8008F544 );
@@ -689,6 +708,8 @@ void initAddressOverwrites()
689
708
690
709
patch::writeBranchLR (FixEvtMapBlendSetFlagFollowerCrashAddress, reinterpret_cast <void *>(StartFixEvtMapBlendSetFlagFollowerCrash));
691
710
711
+ patch::writeBranchLR (PreventPouchInitMemoryLeakAddress, reinterpret_cast <void *>(preventPouchInitMemoryLeak));
712
+
692
713
patch::writeBranchLR (InitStageEventsAddress, reinterpret_cast <void *>(initStageEvents));
693
714
694
715
patch::writeBranchLR (FallThroughMostObjectsStandAddress, reinterpret_cast <void *>(StartFallThroughMostObjectsStandard));
0 commit comments