decompile overlay 124

This commit is contained in:
PikalaxALT 2024-07-12 17:06:12 -04:00
parent 5c5dee6108
commit 7cd584e9e0
No known key found for this signature in database
GPG Key ID: 7774E96AA69E5B61
9 changed files with 246 additions and 364 deletions

View File

@ -1,21 +0,0 @@
#include <nitro/fs/overlay.h>
#pragma once
.public OverlayManager_GetArgs
.public AllocFromHeapAtEnd
.public Save_PlayerData_GetProfileAddr
.public PlayerProfile_TestBadgeFlag
.public MapMatrix_New
.public Field_AllocateMapEvents
.public LocalFieldData_GetCurrentPosition
.public Save_LocalFieldData_Get
.public FieldSystem_UnkSub108_Alloc
.public BagCursor_New
.public sub_02092BB8
.public GearPhoneRingManager_New
.public FS_LoadOverlay
.public FS_UnloadOverlay
.public _u32_div_f
.public ov123_0225F4A8
.public ov123_0225F520
.public ov123_0225F688
.public FieldSystem_Init

View File

@ -1,173 +0,0 @@
.include "asm/macros.inc"
.include "overlay_124.inc"
.include "global.inc"
.text
thumb_func_start FieldSystem_Init
FieldSystem_Init: ; 0x02260C20
push {r3, r4, r5, r6, r7, lr}
ldr r7, _02260CF8 ; =FS_OVERLAY_ID(OVY_123)
add r6, r0, #0
add r5, r1, #0
mov r0, #0
add r1, r7, #0
ldr r4, _02260CFC ; =0x0097B4B1
bl FS_LoadOverlay
ldr r0, _02260D00 ; =ov124_02260D68
bl ov123_0225F4A8
cmp r0, #0
bne _02260C40
mov r1, #1
b _02260C42
_02260C40:
mov r1, #0
_02260C42:
ldr r0, _02260D04 ; =0x00000301
mul r0, r1
add r4, r4, r0
add r0, r6, #0
bl OverlayManager_GetArgs
ldr r0, [r0, #8]
str r0, [r5, #0xc]
mov r0, #0
str r0, [r5, #0x10]
ldr r0, _02260D08 ; =ov124_02260D6C
bl ov123_0225F688
cmp r0, #0
bne _02260C64
mov r1, #1
b _02260C66
_02260C64:
mov r1, #0
_02260C66:
mov r0, #0x2f
mul r0, r1
add r4, r4, r0
ldr r0, [r5, #0xc]
bl Save_LocalFieldData_Get
bl LocalFieldData_GetCurrentPosition
str r0, [r5, #0x20]
bl MapMatrix_New
str r0, [r5, #0x30]
ldr r0, _02260D0C ; =ov124_02260D58
bl ov123_0225F520
add r6, r0, #0
ldr r1, _02260D10 ; =0x000003A1
add r0, r5, #0
mul r6, r1
mov r1, #0xb
bl Field_AllocateMapEvents
mov r0, #0xb
bl BagCursor_New
add r1, r5, #0
add r1, #0x94
str r0, [r1]
mov r0, #0
add r1, r7, #0
bl FS_UnloadOverlay
ldr r1, _02260D14 ; =0x00000989
add r0, r4, r6
bl _u32_div_f
cmp r1, #0
beq _02260CB8
add r0, r5, #0
bl ov124_02260D1C
_02260CB8:
mov r0, #0xb
bl sub_02092BB8
add r1, r5, #0
add r1, #0xa8
str r0, [r1]
mov r0, #0xb
bl FieldSystem_UnkSub108_Alloc
mov r1, #0x42
lsl r1, r1, #2
str r0, [r5, r1]
mov r0, #0xb
add r1, r5, #0
bl GearPhoneRingManager_New
mov r1, #0x45
lsl r1, r1, #2
str r0, [r5, r1]
mov r0, #0
add r1, #0x10
str r0, [r5, r1]
ldr r1, _02260D18 ; =0x00000FE9
add r0, r4, r6
bl _u32_div_f
cmp r1, #0
beq _02260CF6
add r0, r5, #0
bl ov124_02260D1C
_02260CF6:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02260CF8: .word FS_OVERLAY_ID(OVY_123)
_02260CFC: .word 0x0097B4B1
_02260D00: .word ov124_02260D68
_02260D04: .word 0x00000301
_02260D08: .word ov124_02260D6C
_02260D0C: .word ov124_02260D58
_02260D10: .word 0x000003A1
_02260D14: .word 0x00000989
_02260D18: .word 0x00000FE9
thumb_func_end FieldSystem_Init
thumb_func_start ov124_02260D1C
ov124_02260D1C: ; 0x02260D1C
push {r4, r5, r6, lr}
mov r5, #0
add r6, r0, #0
add r4, r5, #0
_02260D24:
ldr r0, [r6, #0xc]
bl Save_PlayerData_GetProfileAddr
add r1, r4, #0
bl PlayerProfile_TestBadgeFlag
cmp r0, #1
bne _02260D36
add r5, r5, #1
_02260D36:
add r4, r4, #1
cmp r4, #0x10
blt _02260D24
cmp r5, #0
bne _02260D44
ldr r1, _02260D54 ; =0x00004E20
b _02260D4A
_02260D44:
ldr r0, _02260D54 ; =0x00004E20
add r1, r5, #0
mul r1, r0
_02260D4A:
mov r0, #3
bl AllocFromHeapAtEnd
pop {r4, r5, r6, pc}
nop
_02260D54: .word 0x00004E20
thumb_func_end ov124_02260D1C
thumb_func_start ov124_02260D58
ov124_02260D58: ; 0x02260D58
ldr r3, _02260D64 ; =AllocFromHeapAtEnd
mov r1, #0xfa
mov r0, #3
lsl r1, r1, #2
bx r3
nop
_02260D64: .word AllocFromHeapAtEnd
thumb_func_end ov124_02260D58
thumb_func_start ov124_02260D68
ov124_02260D68: ; 0x02260D68
bx lr
.balign 4, 0
thumb_func_end ov124_02260D68
thumb_func_start ov124_02260D6C
ov124_02260D6C: ; 0x02260D6C
bx lr
.balign 4, 0
thumb_func_end ov124_02260D6C

View File

@ -4,11 +4,11 @@
#include "overlay_manager.h"
#include "save.h"
struct UnkStruct_02111868_sub {
typedef struct UnkStruct_02111868_sub {
int unk_00;
u32 unk_04;
SaveData *saveData;
};
} UnkStruct_02111868_sub;
void NitroMain(void);
void Main_ResetOverlayManager(void);

11
include/overlay_123.h Normal file
View File

@ -0,0 +1,11 @@
#ifndef GUARD_POKEHEARTGOLD_OVERLAY_123_H
#define GUARD_POKEHEARTGOLD_OVERLAY_123_H
#include "global.h"
BOOL ov123_0225F4A8(void (*)(void));
BOOL ov123_0225F520(void (*)(void));
BOOL ov123_0225F688(void (*)(void));
BOOL ov123_0225F610(void (*)(void));
#endif //GUARD_POKEHEARTGOLD_OVERLAY_123_H

View File

@ -1,6 +1,9 @@
#ifndef POKEHEARTGOLD_UNK_02092BB8_H
#define POKEHEARTGOLD_UNK_02092BB8_H
#include "heap.h"
u32 *sub_02092BB8(HeapID heapId);
void sub_02092BD0(u32 *a0);
#endif //POKEHEARTGOLD_UNK_02092BB8_H

View File

@ -317,11 +317,11 @@ ov123_0225F430: ; 0x0225F430
stmfd sp!, {r4-r7}
stmfd sp!, {r0-r3}
ldmfd sp!, {r4-r7}
ldr r1, _0225F4A4
adr r3, _0225F498
ldr r1, _0225F4A4 ; =ov123_0225F020
adr r3, _0225F498 ; =_02260C00+1
str lr, [r3]
ldr r2, _0225F49C
ldr r0, _0225F4A0
ldr r2, _0225F49C ; =0xAC
ldr r0, _0225F4A0 ; =0x6AB2
bl ov123_0225FEA8
mov ip, r0
stmfd sp!, {r4-r7}
@ -330,15 +330,15 @@ ov123_0225F430: ; 0x0225F430
blx ip
stmfd sp!, {r4}
mov r4, r0
ldr r1, _0225F4A4
ldr r2, _0225F49C
ldr r0, _0225F4A0
ldr r1, _0225F4A4 ; =ov123_0225F020
ldr r2, _0225F49C ; =0xAC
ldr r0, _0225F4A0 ; =0x6AB2
bl ov123_0225FF30
str r0, _0225F4A0
str r0, _0225F4A0 ; =0x6AB2
mov r0, r4
ldmfd sp!, {r4}
ldr lr, _0225F498
str pc, _0225F498
ldr lr, _0225F498 ; =_02260C00+1
str pc, _0225F498 ; =_02260C00+1
bx lr
_0225F498: .word _02260C00+1
_0225F49C: .word 0xAC
@ -351,11 +351,11 @@ ov123_0225F4A8: ; 0x0225F4A8
stmfd sp!, {r4-r7}
stmfd sp!, {r0-r3}
ldmfd sp!, {r4-r7}
ldr r1, _0225F51C
adr r3, _0225F510
ldr r1, _0225F51C ; =ov123_0225F0D8
adr r3, _0225F510 ; =_02260C00+1
str lr, [r3]
ldr r2, _0225F514
ldr r0, _0225F518
ldr r2, _0225F514 ; =0xAC
ldr r0, _0225F518 ; =0x6AB2
bl ov123_0225FEA8
mov ip, r0
stmfd sp!, {r4-r7}
@ -364,15 +364,15 @@ ov123_0225F4A8: ; 0x0225F4A8
blx ip
stmfd sp!, {r4}
mov r4, r0
ldr r1, _0225F51C
ldr r2, _0225F514
ldr r0, _0225F518
ldr r1, _0225F51C ; =ov123_0225F0D8
ldr r2, _0225F514 ; =0xAC
ldr r0, _0225F518 ; =0x6AB2
bl ov123_0225FF30
str r0, _0225F518
str r0, _0225F518 ; =0x6AB2
mov r0, r4
ldmfd sp!, {r4}
ldr lr, _0225F510
str pc, _0225F510
ldr lr, _0225F510 ; =_02260C00+1
str pc, _0225F510 ; =_02260C00+1
bx lr
_0225F510: .word _02260C00+1
_0225F514: .word 0xAC
@ -385,11 +385,11 @@ ov123_0225F520: ; 0x0225F520
stmfd sp!, {r4-r7}
stmfd sp!, {r0-r3}
ldmfd sp!, {r4-r7}
ldr r1, _0225F594
adr r3, _0225F588
ldr r1, _0225F594 ; =ov123_0225F190
adr r3, _0225F588 ; =_02260C00+1
str lr, [r3]
ldr r2, _0225F58C
ldr r0, _0225F590
ldr r2, _0225F58C ; =0xAC
ldr r0, _0225F590 ; =0x6AB2
bl ov123_0225FEA8
mov ip, r0
stmfd sp!, {r4-r7}
@ -398,15 +398,15 @@ ov123_0225F520: ; 0x0225F520
blx ip
stmfd sp!, {r4}
mov r4, r0
ldr r1, _0225F594
ldr r2, _0225F58C
ldr r0, _0225F590
ldr r1, _0225F594 ; =ov123_0225F190
ldr r2, _0225F58C ; =0xAC
ldr r0, _0225F590 ; =0x6AB2
bl ov123_0225FF30
str r0, _0225F590
str r0, _0225F590 ; =0x6AB2
mov r0, r4
ldmfd sp!, {r4}
ldr lr, _0225F588
str pc, _0225F588
ldr lr, _0225F588 ; =_02260C00+1
str pc, _0225F588 ; =_02260C00+1
bx lr
_0225F588: .word _02260C00+1
_0225F58C: .word 0xAC
@ -419,11 +419,11 @@ ov123_0225F598: ; 0x0225F598
stmfd sp!, {r4-r7}
stmfd sp!, {r0-r3}
ldmfd sp!, {r4-r7}
ldr r1, _0225F60C
adr r3, _0225F600
ldr r1, _0225F60C ; =ov123_0225F248
adr r3, _0225F600 ; =_02260C00+1
str lr, [r3]
ldr r2, _0225F604
ldr r0, _0225F608
ldr r2, _0225F604 ; =0xAC
ldr r0, _0225F608 ; =0x6AB2
bl ov123_0225FEA8
mov ip, r0
stmfd sp!, {r4-r7}
@ -432,15 +432,15 @@ ov123_0225F598: ; 0x0225F598
blx ip
stmfd sp!, {r4}
mov r4, r0
ldr r1, _0225F60C
ldr r2, _0225F604
ldr r0, _0225F608
ldr r1, _0225F60C ; =ov123_0225F248
ldr r2, _0225F604 ; =0xAC
ldr r0, _0225F608 ; =0x6AB2
bl ov123_0225FF30
str r0, _0225F608
str r0, _0225F608 ; =0x6AB2
mov r0, r4
ldmfd sp!, {r4}
ldr lr, _0225F600
str pc, _0225F600
ldr lr, _0225F600 ; =_02260C00+1
str pc, _0225F600 ; =_02260C00+1
bx lr
_0225F600: .word _02260C00+1
_0225F604: .word 0xAC
@ -453,11 +453,11 @@ ov123_0225F610: ; 0x0225F610
stmfd sp!, {r4-r7}
stmfd sp!, {r0-r3}
ldmfd sp!, {r4-r7}
ldr r1, _0225F684
adr r3, _0225F678
ldr r1, _0225F684 ; =ov123_0225F300
adr r3, _0225F678 ; =_02260C00+1
str lr, [r3]
ldr r2, _0225F67C
ldr r0, _0225F680
ldr r2, _0225F67C ; =0x94
ldr r0, _0225F680 ; =0x6AB2
bl ov123_0225FEA8
mov ip, r0
stmfd sp!, {r4-r7}
@ -466,15 +466,15 @@ ov123_0225F610: ; 0x0225F610
blx ip
stmfd sp!, {r4}
mov r4, r0
ldr r1, _0225F684
ldr r2, _0225F67C
ldr r0, _0225F680
ldr r1, _0225F684 ; =ov123_0225F300
ldr r2, _0225F67C ; =0x94
ldr r0, _0225F680 ; =0x6AB2
bl ov123_0225FF30
str r0, _0225F680
str r0, _0225F680 ; =0x6AB2
mov r0, r4
ldmfd sp!, {r4}
ldr lr, _0225F678
str pc, _0225F678
ldr lr, _0225F678 ; =_02260C00+1
str pc, _0225F678 ; =_02260C00+1
bx lr
_0225F678: .word _02260C00+1
_0225F67C: .word 0x94
@ -487,11 +487,11 @@ ov123_0225F688: ; 0x0225F688
stmfd sp!, {r4-r7}
stmfd sp!, {r0-r3}
ldmfd sp!, {r4-r7}
ldr r1, _0225F6FC
adr r3, _0225F6F0
ldr r1, _0225F6FC ; =ov123_0225F398
adr r3, _0225F6F0 ; =_02260C00+1
str lr, [r3]
ldr r2, _0225F6F4
ldr r0, _0225F6F8
ldr r2, _0225F6F4 ; =0x94
ldr r0, _0225F6F8 ; =0x6AB2
bl ov123_0225FEA8
mov ip, r0
stmfd sp!, {r4-r7}
@ -500,15 +500,15 @@ ov123_0225F688: ; 0x0225F688
blx ip
stmfd sp!, {r4}
mov r4, r0
ldr r1, _0225F6FC
ldr r2, _0225F6F4
ldr r0, _0225F6F8
ldr r1, _0225F6FC ; =ov123_0225F398
ldr r2, _0225F6F4 ; =0x94
ldr r0, _0225F6F8 ; =0x6AB2
bl ov123_0225FF30
str r0, _0225F6F8
str r0, _0225F6F8 ; =0x6AB2
mov r0, r4
ldmfd sp!, {r4}
ldr lr, _0225F6F0
str pc, _0225F6F0
ldr lr, _0225F6F0 ; =_02260C00+1
str pc, _0225F6F0 ; =_02260C00+1
bx lr
_0225F6F0: .word _02260C00+1
_0225F6F4: .word 0x94
@ -802,11 +802,11 @@ ov123_0225FB24: ; 0x0225FB24
stmfd sp!, {r4-r7}
stmfd sp!, {r0-r3}
ldmfd sp!, {r4-r7}
ldr r1, _0225FB98
adr r3, _0225FB8C
ldr r1, _0225FB98 ; =ov123_0225F74C
adr r3, _0225FB8C ; =_02260C00+1
str lr, [r3]
ldr r2, _0225FB90
ldr r0, _0225FB94
ldr r2, _0225FB90 ; =0xD4
ldr r0, _0225FB94 ; =0x9785
bl ov123_0225FEA8
mov ip, r0
stmfd sp!, {r4-r7}
@ -815,15 +815,15 @@ ov123_0225FB24: ; 0x0225FB24
blx ip
stmfd sp!, {r4}
mov r4, r0
ldr r1, _0225FB98
ldr r2, _0225FB90
ldr r0, _0225FB94
ldr r1, _0225FB98 ; =ov123_0225F74C
ldr r2, _0225FB90 ; =0xD4
ldr r0, _0225FB94 ; =0x9785
bl ov123_0225FF30
str r0, _0225FB94
str r0, _0225FB94 ; =0x9785
mov r0, r4
ldmfd sp!, {r4}
ldr lr, _0225FB8C
str pc, _0225FB8C
ldr lr, _0225FB8C ; =_02260C00+1
str pc, _0225FB8C ; =_02260C00+1
bx lr
_0225FB8C: .word _02260C00+1
_0225FB90: .word 0xD4
@ -836,11 +836,11 @@ ov123_0225FB9C: ; 0x0225FB9C
stmfd sp!, {r4-r7}
stmfd sp!, {r0-r3}
ldmfd sp!, {r4-r7}
ldr r1, _0225FC10
adr r3, _0225FC04
ldr r1, _0225FC10 ; =ov123_0225F824
adr r3, _0225FC04 ; =_02260C00+1
str lr, [r3]
ldr r2, _0225FC08
ldr r0, _0225FC0C
ldr r2, _0225FC08 ; =0x110
ldr r0, _0225FC0C ; =0x9785
bl ov123_0225FEA8
mov ip, r0
stmfd sp!, {r4-r7}
@ -849,15 +849,15 @@ ov123_0225FB9C: ; 0x0225FB9C
blx ip
stmfd sp!, {r4}
mov r4, r0
ldr r1, _0225FC10
ldr r2, _0225FC08
ldr r0, _0225FC0C
ldr r1, _0225FC10 ; =ov123_0225F824
ldr r2, _0225FC08 ; =0x110
ldr r0, _0225FC0C ; =0x9785
bl ov123_0225FF30
str r0, _0225FC0C
str r0, _0225FC0C ; =0x9785
mov r0, r4
ldmfd sp!, {r4}
ldr lr, _0225FC04
str pc, _0225FC04
ldr lr, _0225FC04 ; =_02260C00+1
str pc, _0225FC04 ; =_02260C00+1
bx lr
_0225FC04: .word _02260C00+1
_0225FC08: .word 0x110
@ -870,11 +870,11 @@ ov123_0225FC14: ; 0x0225FC14
stmfd sp!, {r4-r7}
stmfd sp!, {r0-r3}
ldmfd sp!, {r4-r7}
ldr r1, _0225FC88
adr r3, _0225FC7C
ldr r1, _0225FC88 ; =ov123_0225F938
adr r3, _0225FC7C ; =_02260C00+1
str lr, [r3]
ldr r2, _0225FC80
ldr r0, _0225FC84
ldr r2, _0225FC80 ; =0xD4
ldr r0, _0225FC84 ; =0x9785
bl ov123_0225FEA8
mov ip, r0
stmfd sp!, {r4-r7}
@ -883,15 +883,15 @@ ov123_0225FC14: ; 0x0225FC14
blx ip
stmfd sp!, {r4}
mov r4, r0
ldr r1, _0225FC88
ldr r2, _0225FC80
ldr r0, _0225FC84
ldr r1, _0225FC88 ; =ov123_0225F938
ldr r2, _0225FC80 ; =0xD4
ldr r0, _0225FC84 ; =0x9785
bl ov123_0225FF30
str r0, _0225FC84
str r0, _0225FC84 ; =0x9785
mov r0, r4
ldmfd sp!, {r4}
ldr lr, _0225FC7C
str pc, _0225FC7C
ldr lr, _0225FC7C ; =_02260C00+1
str pc, _0225FC7C ; =_02260C00+1
bx lr
_0225FC7C: .word _02260C00+1
_0225FC80: .word 0xD4
@ -904,11 +904,11 @@ ov123_0225FC8C: ; 0x0225FC8C
stmfd sp!, {r4-r7}
stmfd sp!, {r0-r3}
ldmfd sp!, {r4-r7}
ldr r1, _0225FD00
adr r3, _0225FCF4
ldr r1, _0225FD00 ; =ov123_0225FA10
adr r3, _0225FCF4 ; =_02260C00+1
str lr, [r3]
ldr r2, _0225FCF8
ldr r0, _0225FCFC
ldr r2, _0225FCF8 ; =0x110
ldr r0, _0225FCFC ; =0x9785
bl ov123_0225FEA8
mov ip, r0
stmfd sp!, {r4-r7}
@ -917,15 +917,15 @@ ov123_0225FC8C: ; 0x0225FC8C
blx ip
stmfd sp!, {r4}
mov r4, r0
ldr r1, _0225FD00
ldr r2, _0225FCF8
ldr r0, _0225FCFC
ldr r1, _0225FD00 ; =ov123_0225FA10
ldr r2, _0225FCF8 ; =0x110
ldr r0, _0225FCFC ; =0x9785
bl ov123_0225FF30
str r0, _0225FCFC
str r0, _0225FCFC ; =0x9785
mov r0, r4
ldmfd sp!, {r4}
ldr lr, _0225FCF4
str pc, _0225FCF4
ldr lr, _0225FCF4 ; =_02260C00+1
str pc, _0225FCF4 ; =_02260C00+1
bx lr
_0225FCF4: .word _02260C00+1
_0225FCF8: .word 0x110
@ -986,7 +986,7 @@ ov123_0225FD98: ; 0x0225FD98
ldrne r1, [r8]
cmpne r1, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
ldr r6, _0225FEA0 ; =SDK_OVERLAY_OV_123_BSS_START
ldr r6, _0225FEA0 ; =SDK_OVERLAY_OV_123_BSS_START ; =_02260C00
_0225FDB0:
ldr r0, [r8, #4]
cmp r1, #0
@ -998,7 +998,7 @@ _0225FDB0:
add r5, r7, r0
cmp r7, r5
bhs _0225FE80
ldr sb, _0225FEA4 ; =0xFFFFFB3E
ldr sb, _0225FEA4 ; =0xFFFFFB3E ; =0xFFFFFB3E
_0225FDDC:
ldr r0, [r7]
bl ov123_0225FD5C
@ -1063,7 +1063,7 @@ _0225FEA4: .word 0xFFFFFB3E
ov123_0225FEA8: ; 0x0225FEA8
stmdb sp!, {r3-r7, lr}
sub sp, sp, #0x10
ldr r3, _0225FF2C
ldr r3, _0225FF2C ; =_02260C00
mov r5, r1
add r1, r3, #0x1300
sub r6, r0, r1
@ -1256,11 +1256,11 @@ ov123_02260148: ; 0x02260148
stmfd sp!, {r4-r7}
stmfd sp!, {r0-r3}
ldmfd sp!, {r4-r7}
ldr r1, _022601BC
adr r3, _022601B0
ldr r1, _022601BC ; =ov123_0225FFE8
adr r3, _022601B0 ; =_02260C00+1
str lr, [r3]
ldr r2, _022601B4
ldr r0, _022601B8
ldr r2, _022601B4 ; =0xAC
ldr r0, _022601B8 ; =0x982
bl ov123_0225FEA8
mov ip, r0
stmfd sp!, {r4-r7}
@ -1269,15 +1269,15 @@ ov123_02260148: ; 0x02260148
blx ip
stmfd sp!, {r4}
mov r4, r0
ldr r1, _022601BC
ldr r2, _022601B4
ldr r0, _022601B8
ldr r1, _022601BC ; =ov123_0225FFE8
ldr r2, _022601B4 ; =0xAC
ldr r0, _022601B8 ; =0x982
bl ov123_0225FF30
str r0, _022601B8
str r0, _022601B8 ; =0x982
mov r0, r4
ldmfd sp!, {r4}
ldr lr, _022601B0
str pc, _022601B0
ldr lr, _022601B0 ; =_02260C00+1
str pc, _022601B0 ; =_02260C00+1
bx lr
_022601B0: .word _02260C00+1
_022601B4: .word 0xAC
@ -1290,11 +1290,11 @@ ov123_022601C0: ; 0x022601C0
stmfd sp!, {r4-r7}
stmfd sp!, {r0-r3}
ldmfd sp!, {r4-r7}
ldr r1, _02260234
adr r3, _02260228
ldr r1, _02260234 ; =ov123_02260098
adr r3, _02260228 ; =_02260C00+1
str lr, [r3]
ldr r2, _0226022C
ldr r0, _02260230
ldr r2, _0226022C ; =0xAC
ldr r0, _02260230 ; =0x982
bl ov123_0225FEA8
mov ip, r0
stmfd sp!, {r4-r7}
@ -1303,15 +1303,15 @@ ov123_022601C0: ; 0x022601C0
blx ip
stmfd sp!, {r4}
mov r4, r0
ldr r1, _02260234
ldr r2, _0226022C
ldr r0, _02260230
ldr r1, _02260234 ; =ov123_02260098
ldr r2, _0226022C ; =0xAC
ldr r0, _02260230 ; =0x982
bl ov123_0225FF30
str r0, _02260230
str r0, _02260230 ; =0x982
mov r0, r4
ldmfd sp!, {r4}
ldr lr, _02260228
str pc, _02260228
ldr lr, _02260228 ; =_02260C00+1
str pc, _02260228 ; =_02260C00+1
bx lr
_02260228: .word _02260C00+1
_0226022C: .word 0xAC
@ -1464,11 +1464,11 @@ ov123_02260414: ; 0x02260414
stmfd sp!, {r4-r7}
stmfd sp!, {r0-r3}
ldmfd sp!, {r4-r7}
ldr r1, _02260488
adr r3, _0226047C
ldr r1, _02260488 ; =ov123_02260238
adr r3, _0226047C ; =_02260C00+1
str lr, [r3]
ldr r2, _02260480
ldr r0, _02260484
ldr r2, _02260480 ; =0x17C
ldr r0, _02260484 ; =0x982
bl ov123_0225FEA8
mov ip, r0
stmfd sp!, {r4-r7}
@ -1477,15 +1477,15 @@ ov123_02260414: ; 0x02260414
blx ip
stmfd sp!, {r4}
mov r4, r0
ldr r1, _02260488
ldr r2, _02260480
ldr r0, _02260484
ldr r1, _02260488 ; =ov123_02260238
ldr r2, _02260480 ; =0x17C
ldr r0, _02260484 ; =0x982
bl ov123_0225FF30
str r0, _02260484
str r0, _02260484 ; =0x982
mov r0, r4
ldmfd sp!, {r4}
ldr lr, _0226047C
str pc, _0226047C
ldr lr, _0226047C ; =_02260C00+1
str pc, _0226047C ; =_02260C00+1
bx lr
_0226047C: .word _02260C00+1
_02260480: .word 0x17C
@ -1498,11 +1498,11 @@ ov123_0226048C: ; 0x0226048C
stmfd sp!, {r4-r7}
stmfd sp!, {r0-r3}
ldmfd sp!, {r4-r7}
ldr r1, _02260500
adr r3, _022604F4
ldr r1, _02260500 ; =ov123_022603BC
adr r3, _022604F4 ; =_02260C00+1
str lr, [r3]
ldr r2, _022604F8
ldr r0, _022604FC
ldr r2, _022604F8 ; =0x54
ldr r0, _022604FC ; =0x982
bl ov123_0225FEA8
mov ip, r0
stmfd sp!, {r4-r7}
@ -1511,15 +1511,15 @@ ov123_0226048C: ; 0x0226048C
blx ip
stmfd sp!, {r4}
mov r4, r0
ldr r1, _02260500
ldr r2, _022604F8
ldr r0, _022604FC
ldr r1, _02260500 ; =ov123_022603BC
ldr r2, _022604F8 ; =0x54
ldr r0, _022604FC ; =0x982
bl ov123_0225FF30
str r0, _022604FC
str r0, _022604FC ; =0x982
mov r0, r4
ldmfd sp!, {r4}
ldr lr, _022604F4
str pc, _022604F4
ldr lr, _022604F4 ; =_02260C00+1
str pc, _022604F4 ; =_02260C00+1
bx lr
_022604F4: .word _02260C00+1
_022604F8: .word 0x54
@ -1646,11 +1646,11 @@ ov123_0226068C: ; 0x0226068C
stmfd sp!, {r4-r7}
stmfd sp!, {r0-r3}
ldmfd sp!, {r4-r7}
ldr r1, _02260700
adr r3, _022606F4
ldr r1, _02260700 ; =ov123_02260504
adr r3, _022606F4 ; =_02260C00+1
str lr, [r3]
ldr r2, _022606F8
ldr r0, _022606FC
ldr r2, _022606F8 ; =0xC4
ldr r0, _022606FC ; =0x982
bl ov123_0225FEA8
mov ip, r0
stmfd sp!, {r4-r7}
@ -1659,15 +1659,15 @@ ov123_0226068C: ; 0x0226068C
blx ip
stmfd sp!, {r4}
mov r4, r0
ldr r1, _02260700
ldr r2, _022606F8
ldr r0, _022606FC
ldr r1, _02260700 ; =ov123_02260504
ldr r2, _022606F8 ; =0xC4
ldr r0, _022606FC ; =0x982
bl ov123_0225FF30
str r0, _022606FC
str r0, _022606FC ; =0x982
mov r0, r4
ldmfd sp!, {r4}
ldr lr, _022606F4
str pc, _022606F4
ldr lr, _022606F4 ; =_02260C00+1
str pc, _022606F4 ; =_02260C00+1
bx lr
_022606F4: .word _02260C00+1
_022606F8: .word 0xC4
@ -1680,11 +1680,11 @@ ov123_02260704: ; 0x02260704
stmfd sp!, {r4-r7}
stmfd sp!, {r0-r3}
ldmfd sp!, {r4-r7}
ldr r1, _02260778
adr r3, _0226076C
ldr r1, _02260778 ; =ov123_022605C8
adr r3, _0226076C ; =_02260C00+1
str lr, [r3]
ldr r2, _02260770
ldr r0, _02260774
ldr r2, _02260770 ; =0xC4
ldr r0, _02260774 ; =0x982
bl ov123_0225FEA8
mov ip, r0
stmfd sp!, {r4-r7}
@ -1693,15 +1693,15 @@ ov123_02260704: ; 0x02260704
blx ip
stmfd sp!, {r4}
mov r4, r0
ldr r1, _02260778
ldr r2, _02260770
ldr r0, _02260774
ldr r1, _02260778 ; =ov123_022605C8
ldr r2, _02260770 ; =0xC4
ldr r0, _02260774 ; =0x982
bl ov123_0225FF30
str r0, _02260774
str r0, _02260774 ; =0x982
mov r0, r4
ldmfd sp!, {r4}
ldr lr, _0226076C
str pc, _0226076C
ldr lr, _0226076C ; =_02260C00+1
str pc, _0226076C ; =_02260C00+1
bx lr
_0226076C: .word _02260C00+1
_02260770: .word 0xC4

View File

@ -1201,7 +1201,7 @@ Overlay OVY_123
Overlay OVY_124
{
After OVY_123
Object asm/overlay_124.o
Object src/overlay_124.o
}
Overlay OVY_125
{

65
src/overlay_124.c Normal file
View File

@ -0,0 +1,65 @@
#include "follow_mon.h"
#include "global.h"
#include "overlay_124.h"
#include "field_system.h"
#include "main.h"
#include "map_events.h"
#include "overlay_123.h"
#include "save_local_field_data.h"
#include "unk_02092BB8.h"
#include "unk_02092BE8.h"
FS_EXTERN_OVERLAY(OVY_123);
static void ov124_02260D1C(FieldSystem *fieldSystem);
static void ov124_02260D68(void);
static void ov124_02260D6C(void);
static void ov124_02260D58(void);
void FieldSystem_Init(OVY_MANAGER *man, FieldSystem *fieldSystem) {
u32 key = 2441 * 4073; // these are both prime
FS_LoadOverlay(MI_PROCESSOR_ARM9, FS_OVERLAY_ID(OVY_123));
key += 769 * (!ov123_0225F4A8(ov124_02260D68)); // 769 is prime
UnkStruct_02111868_sub *args = OverlayManager_GetArgs(man);
fieldSystem->saveData = args->saveData;
fieldSystem->taskman = NULL;
key += 47 * (!ov123_0225F688(ov124_02260D6C)); // 47 is prime
fieldSystem->location = LocalFieldData_GetCurrentPosition(Save_LocalFieldData_Get(fieldSystem->saveData));
fieldSystem->mapMatrix = MapMatrix_New();
u32 key2 = 929 * ov123_0225F520(ov124_02260D58); // 929 is prime
Field_AllocateMapEvents(fieldSystem, HEAP_ID_FIELD);
fieldSystem->bagCursor = BagCursor_New(HEAP_ID_FIELD);
FS_UnloadOverlay(MI_PROCESSOR_ARM9, FS_OVERLAY_ID(OVY_123));
// all combinations of the three prime multipliers above are coprime with 2441 and 4073
if ((key + key2) % 2441) {
ov124_02260D1C(fieldSystem);
}
fieldSystem->unkA8 = sub_02092BB8(HEAP_ID_FIELD);
fieldSystem->unk108 = FieldSystem_UnkSub108_Alloc(HEAP_ID_FIELD);
fieldSystem->unk114 = GearPhoneRingManager_New(HEAP_ID_FIELD, fieldSystem);
fieldSystem->judgeStatPosition = 0;
if ((key + key2) % 4073) {
ov124_02260D1C(fieldSystem);
}
}
// clobbers the heap worse if you have made more progress through the game
static void ov124_02260D1C(FieldSystem *fieldSystem) {
int i = 0;
int numBadges = 0;
for (i = 0; i < 16; ++i) {
if (PlayerProfile_TestBadgeFlag(Save_PlayerData_GetProfileAddr(fieldSystem->saveData), i) == TRUE) {
++numBadges;
}
}
AllocFromHeapAtEnd(HEAP_ID_3, numBadges == 0 ? 20000 : (20000 * numBadges));
}
// you can have a little heap clobber, as a treat
static void ov124_02260D58(void) {
AllocFromHeapAtEnd(HEAP_ID_3, 1000);
}
static void ov124_02260D68(void) {}
static void ov124_02260D6C(void) {}

View File

@ -17,6 +17,7 @@
#include "yes_no_prompt.h"
#include "sys_task.h"
#include "unk_020183F0.h"
#include "overlay_123.h"
FS_EXTERN_OVERLAY(OVY_123);
@ -65,10 +66,6 @@ typedef struct TouchSaveAppData {
SysTask *savingMovementTask;
} TouchSaveAppData; // size: 0x6C
extern void *ov123_0225F4A8(void(*)(void));
extern void *ov123_0225F520(void(*)(void));
extern void *ov123_0225F610(void(*)(void));
static void ov30_0225D700(SysTask *task, TouchSaveAppData *data);
static void TouchSaveApp_SetupGraphics(TouchSaveAppData *data);
static void TouchSaveApp_DestroyWindow(TouchSaveAppData *data);