mirror of
https://github.com/pret/pokeheartgold.git
synced 2025-03-03 02:26:33 +00:00
ov61_021E6FC4; start 0200A090 and 02025334
This commit is contained in:
parent
02f4d842e0
commit
0f98f93d94
153
asm/overlay_61.s
153
asm/overlay_61.s
@ -8,159 +8,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start ov61_021E6FC4
|
||||
ov61_021E6FC4: ; 0x021E6FC4
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
sub sp, #0x28
|
||||
add r6, r0, #0
|
||||
ldr r1, [r6, #4]
|
||||
mov r0, #0x5d
|
||||
bl NARC_ctor
|
||||
str r0, [sp, #0x18]
|
||||
mov r0, #0xed
|
||||
lsl r0, r0, #2
|
||||
add r5, r6, r0
|
||||
add r0, r5, #0
|
||||
str r0, [sp, #0x24]
|
||||
add r0, #0x78
|
||||
mov r4, #0
|
||||
str r5, [sp, #0x14]
|
||||
str r6, [sp, #0x10]
|
||||
add r7, r5, #0
|
||||
str r0, [sp, #0x24]
|
||||
_021E6FEA:
|
||||
str r4, [sp]
|
||||
mov r0, #2
|
||||
str r0, [sp, #4]
|
||||
ldr r0, [r6, #4]
|
||||
ldr r1, [sp, #0x18]
|
||||
str r0, [sp, #8]
|
||||
ldr r0, [r5]
|
||||
mov r2, #9
|
||||
mov r3, #0
|
||||
bl sub_0200A3C8
|
||||
ldr r1, [sp, #0x14]
|
||||
mov r2, #6
|
||||
str r0, [r1, #0x18]
|
||||
str r4, [sp]
|
||||
mov r0, #2
|
||||
str r0, [sp, #4]
|
||||
mov r0, #1
|
||||
str r0, [sp, #8]
|
||||
ldr r0, [r6, #4]
|
||||
ldr r1, [sp, #0x18]
|
||||
str r0, [sp, #0xc]
|
||||
ldr r0, [r5, #4]
|
||||
mov r3, #0
|
||||
bl sub_0200A480
|
||||
ldr r1, [sp, #0x14]
|
||||
mov r2, #0xa
|
||||
str r0, [r1, #0x1c]
|
||||
str r4, [sp]
|
||||
mov r0, #2
|
||||
str r0, [sp, #4]
|
||||
ldr r0, [r6, #4]
|
||||
ldr r1, [sp, #0x18]
|
||||
str r0, [sp, #8]
|
||||
ldr r0, [r5, #8]
|
||||
mov r3, #0
|
||||
bl sub_0200A540
|
||||
ldr r1, [sp, #0x14]
|
||||
mov r2, #0x10
|
||||
str r0, [r1, #0x20]
|
||||
str r4, [sp]
|
||||
mov r0, #3
|
||||
str r0, [sp, #4]
|
||||
ldr r0, [r6, #4]
|
||||
ldr r1, [sp, #0x18]
|
||||
str r0, [sp, #8]
|
||||
ldr r0, [r5, #0xc]
|
||||
mov r3, #0
|
||||
bl sub_0200A540
|
||||
ldr r1, [sp, #0x14]
|
||||
mov r2, #0
|
||||
str r0, [r1, #0x24]
|
||||
ldr r1, [sp, #0x10]
|
||||
ldr r0, _021E7104 ; =0x00000578
|
||||
ldr r0, [r1, r0]
|
||||
mov r1, #5
|
||||
bl GetMonData
|
||||
str r0, [sp, #0x1c]
|
||||
ldr r1, [sp, #0x10]
|
||||
ldr r0, _021E7104 ; =0x00000578
|
||||
mov r2, #0
|
||||
ldr r0, [r1, r0]
|
||||
mov r1, #0x6f
|
||||
bl GetMonData
|
||||
str r0, [sp, #0x20]
|
||||
ldr r1, [sp, #0x10]
|
||||
ldr r0, _021E7104 ; =0x00000578
|
||||
ldr r0, [r1, r0]
|
||||
bl MonIsShiny
|
||||
str r0, [sp]
|
||||
mov r0, #0
|
||||
ldr r1, [sp, #0x1c]
|
||||
ldr r2, [sp, #0x20]
|
||||
str r0, [sp, #4]
|
||||
str r0, [sp, #8]
|
||||
lsl r1, r1, #0x10
|
||||
lsl r2, r2, #0x18
|
||||
ldr r0, [sp, #0x24]
|
||||
lsr r1, r1, #0x10
|
||||
lsr r2, r2, #0x18
|
||||
mov r3, #2
|
||||
bl sub_020701E4
|
||||
add r0, r5, #0
|
||||
add r1, r5, #0
|
||||
add r0, #0x78
|
||||
add r1, #0x7a
|
||||
ldrh r0, [r0]
|
||||
ldrh r1, [r1]
|
||||
ldr r2, [r6, #4]
|
||||
bl sub_0201442C
|
||||
str r0, [r7, #0x60]
|
||||
add r0, r5, #0
|
||||
add r1, r5, #0
|
||||
add r0, #0x78
|
||||
add r1, #0x7c
|
||||
ldrh r0, [r0]
|
||||
ldrh r1, [r1]
|
||||
ldr r2, [r6, #4]
|
||||
bl sub_02014450
|
||||
str r0, [r7, #0x6c]
|
||||
lsl r0, r4, #0x18
|
||||
lsr r0, r0, #0x18
|
||||
str r0, [sp]
|
||||
ldr r0, [r5]
|
||||
ldr r1, [r5, #4]
|
||||
ldr r2, [r7, #0x60]
|
||||
ldr r3, [r7, #0x6c]
|
||||
bl ov61_021E7108
|
||||
lsl r1, r4, #0x18
|
||||
ldr r2, [r6, #4]
|
||||
add r0, r5, #0
|
||||
lsr r1, r1, #0x18
|
||||
bl ov61_021E7188
|
||||
ldr r0, [sp, #0x14]
|
||||
add r4, r4, #1
|
||||
add r0, #0x18
|
||||
str r0, [sp, #0x14]
|
||||
ldr r0, [sp, #0x10]
|
||||
add r7, r7, #4
|
||||
add r0, r0, #4
|
||||
str r0, [sp, #0x10]
|
||||
cmp r4, #3
|
||||
bge _021E70F8
|
||||
b _021E6FEA
|
||||
_021E70F8:
|
||||
ldr r0, [sp, #0x18]
|
||||
bl NARC_dtor
|
||||
add sp, #0x28
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
nop
|
||||
_021E7104: .word 0x00000578
|
||||
thumb_func_end ov61_021E6FC4
|
||||
|
||||
thumb_func_start ov61_021E7108
|
||||
ov61_021E7108: ; 0x021E7108
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
|
@ -3,86 +3,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_02025534
|
||||
sub_02025534: ; 0x02025534
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
add r4, r1, #0
|
||||
add r7, r0, #0
|
||||
add r0, r4, #0
|
||||
mov r1, #0xc
|
||||
bl AllocFromHeap
|
||||
add r6, r0, #0
|
||||
bne _0202554A
|
||||
bl GF_AssertFail
|
||||
_0202554A:
|
||||
add r0, r4, #0
|
||||
lsl r1, r7, #3
|
||||
bl AllocFromHeap
|
||||
str r0, [r6]
|
||||
cmp r0, #0
|
||||
bne _0202555C
|
||||
bl GF_AssertFail
|
||||
_0202555C:
|
||||
mov r4, #0
|
||||
cmp r7, #0
|
||||
ble _02025574
|
||||
add r5, r4, #0
|
||||
_02025564:
|
||||
ldr r0, [r6]
|
||||
add r0, r0, r5
|
||||
bl sub_02025768
|
||||
add r4, r4, #1
|
||||
add r5, #8
|
||||
cmp r4, r7
|
||||
blt _02025564
|
||||
_02025574:
|
||||
str r7, [r6, #4]
|
||||
mov r0, #0
|
||||
str r0, [r6, #8]
|
||||
add r0, r6, #0
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
.balign 4, 0
|
||||
thumb_func_end sub_02025534
|
||||
|
||||
thumb_func_start sub_02025580
|
||||
sub_02025580: ; 0x02025580
|
||||
push {r4, lr}
|
||||
add r4, r0, #0
|
||||
bne _0202558A
|
||||
bl GF_AssertFail
|
||||
_0202558A:
|
||||
add r0, r4, #0
|
||||
bl sub_0202568C
|
||||
ldr r0, [r4]
|
||||
bl FreeToHeap
|
||||
add r0, r4, #0
|
||||
bl FreeToHeap
|
||||
pop {r4, pc}
|
||||
.balign 4, 0
|
||||
thumb_func_end sub_02025580
|
||||
|
||||
thumb_func_start sub_020255A0
|
||||
sub_020255A0: ; 0x020255A0
|
||||
push {r3, r4, r5, lr}
|
||||
add r5, r0, #0
|
||||
add r4, r1, #0
|
||||
cmp r5, #0
|
||||
bne _020255AE
|
||||
bl GF_AssertFail
|
||||
_020255AE:
|
||||
add r0, r5, #0
|
||||
add r1, r4, #0
|
||||
bl sub_020256C8
|
||||
cmp r0, #0
|
||||
bne _020255BE
|
||||
mov r0, #1
|
||||
pop {r3, r4, r5, pc}
|
||||
_020255BE:
|
||||
mov r0, #0
|
||||
pop {r3, r4, r5, pc}
|
||||
.balign 4, 0
|
||||
thumb_func_end sub_020255A0
|
||||
|
||||
thumb_func_start sub_020255C4
|
||||
sub_020255C4: ; 0x020255C4
|
||||
push {r3, r4, r5, r6, r7, lr}
|
@ -1,10 +1,15 @@
|
||||
#ifndef POKEHEARTGOLD_UNK_0200A090_H
|
||||
#define POKEHEARTGOLD_UNK_0200A090_H
|
||||
|
||||
#include "filesystem.h"
|
||||
|
||||
void *sub_0200A090(int, int, HeapID);
|
||||
void sub_0200A0D0(void *);
|
||||
void sub_0200AEB0(void *);
|
||||
void sub_0200B0A8(void *);
|
||||
void sub_0200A75C(void *, void *);
|
||||
void *sub_0200A3C8(void *, NARC *, int, int, int, int, HeapID);
|
||||
void *sub_0200A480(void *, NARC *, int, int, int, int, int, HeapID);
|
||||
void *sub_0200A540(void *, NARC *, int, int, int, int, HeapID);
|
||||
|
||||
#endif //POKEHEARTGOLD_UNK_0200A090_H
|
||||
|
9
include/unk_02013FDC.h
Normal file
9
include/unk_02013FDC.h
Normal file
@ -0,0 +1,9 @@
|
||||
#ifndef POKEHEARTGOLD_UNK_02013FDC_H
|
||||
#define POKEHEARTGOLD_UNK_02013FDC_H
|
||||
|
||||
#include "filesystem.h"
|
||||
|
||||
void *sub_0201442C(NarcId narcId, s32 fileId, HeapID heapId);
|
||||
void *sub_02014450(NarcId narcId, s32 fileId, HeapID heapId);
|
||||
|
||||
#endif //POKEHEARTGOLD_UNK_02013FDC_H
|
17
include/unk_02025534.h
Normal file
17
include/unk_02025534.h
Normal file
@ -0,0 +1,17 @@
|
||||
#ifndef POKEHEARTGOLD_UNK_02025534_H
|
||||
#define POKEHEARTGOLD_UNK_02025534_H
|
||||
|
||||
#include "heap.h"
|
||||
|
||||
struct UnkStruct_02025534_sub {
|
||||
int unk0;
|
||||
int unk4;
|
||||
};
|
||||
|
||||
struct UnkStruct_02025534 {
|
||||
struct UnkStruct_02025534_sub *vals;
|
||||
int max;
|
||||
int num;
|
||||
};
|
||||
|
||||
#endif //POKEHEARTGOLD_UNK_02025534_H
|
6
main.lsf
6
main.lsf
@ -29,7 +29,8 @@ Static main
|
||||
Object src/gf_gfx_loader.o
|
||||
Object asm/unk_02007FD8.o
|
||||
Object asm/unk_02009D48.o
|
||||
Object asm/unk_0200A090.o
|
||||
Object src/unk_0200A090.o
|
||||
Object asm/unk_0200A090_s.o
|
||||
Object asm/unk_0200B150.o
|
||||
Object src/msgdata.o
|
||||
Object src/msgfmt.o
|
||||
@ -79,7 +80,8 @@ Static main
|
||||
Object asm/unk_02025154.o
|
||||
Object src/timer3.o
|
||||
Object src/error_handling.o
|
||||
Object asm/unk_02025534.o
|
||||
Object src/unk_02025534.o
|
||||
Object asm/unk_02025534_s.o
|
||||
Object asm/unk_02025C44.o
|
||||
Object src/font_data.o
|
||||
Object src/pm_string.o
|
||||
|
@ -20,6 +20,7 @@
|
||||
#include "unk_0200E398.h"
|
||||
#include "unk_02025154.h"
|
||||
#include "unk_02020B8C.h"
|
||||
#include "unk_02013FDC.h"
|
||||
#include "gf_gfx_loader.h"
|
||||
|
||||
#define HEAPID_STARTERCHOOSE 46
|
||||
@ -56,7 +57,7 @@ struct UnkStarterChooseSub_3B4 {
|
||||
struct UnkStarterChooseSub_3B4_18 unk_018[3];
|
||||
void *unk_060[3];
|
||||
void *unk_06C[3];
|
||||
u8 filler_078[0x10];
|
||||
struct SomeDrawPokemonStruct unk_078;
|
||||
void *unk_088;
|
||||
u8 unk_08C[0x128];
|
||||
int unk_1B4[3];
|
||||
@ -150,6 +151,8 @@ int ov61_021E6E40(struct ChooseStarterAppWork *work);
|
||||
int ov61_021E6F80(int a0, u8 a1, int a2);
|
||||
int ov61_021E6F98(VecFx32 *vecs, VecFx32 *near, VecFx32 *far, fx32 a3);
|
||||
void ov61_021E6FC4(struct ChooseStarterAppWork *work);
|
||||
void ov61_021E7108(void *a0, void *a1, void *charData, void *plttData, u8 idx);
|
||||
void ov61_021E7188(struct UnkStarterChooseSub_3B4 *a0, u8 idx, HeapID heapId);
|
||||
void ov61_021E7248(struct UnkStarterChooseSub_3B4 *a0);
|
||||
BOOL ov61_021E7268(struct ChooseStarterAppWork *work, int a1, int a2);
|
||||
void ov61_021E7220(struct ChooseStarterAppWork *work);
|
||||
@ -1035,3 +1038,34 @@ int ov61_021E6F98(VecFx32 *vecs, VecFx32 *near, VecFx32 *far, fx32 a3) {
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
void ov61_021E6FC4(struct ChooseStarterAppWork *work) {
|
||||
NARC *narc = NARC_ctor(NARC_a_0_9_3, work->heapId);
|
||||
int i; //r4
|
||||
struct UnkStarterChooseSub_3B4 *r5 = &work->unk_3B4;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
// r7=sp14=r5=work->unk_3B4
|
||||
// sp10=r6=work
|
||||
// sp24=r5->unk_078
|
||||
r5->unk_018[i].unk_00 = sub_0200A3C8(r5->unk_000, narc, 9, 0, i, 2, work->heapId);
|
||||
r5->unk_018[i].unk_04 = sub_0200A480(r5->unk_004, narc, 6, 0, i, 2, 1, work->heapId);
|
||||
r5->unk_018[i].unk_08 = sub_0200A540(r5->unk_008, narc, 10, 0, i, 2, work->heapId);
|
||||
r5->unk_018[i].unk_0C = sub_0200A540(r5->unk_00C, narc, 16, 0, i, 3, work->heapId);
|
||||
sub_020701E4(
|
||||
&r5->unk_078,
|
||||
GetMonData(work->choices[i], MON_DATA_SPECIES, NULL),
|
||||
GetMonData(work->choices[i], MON_DATA_GENDER, NULL),
|
||||
2,
|
||||
MonIsShiny(work->choices[i]),
|
||||
0,
|
||||
0
|
||||
);
|
||||
r5->unk_060[i] = sub_0201442C(r5->unk_078.narcID, r5->unk_078.charDataID, work->heapId);
|
||||
r5->unk_06C[i] = sub_02014450(r5->unk_078.narcID, r5->unk_078.palDataID, work->heapId);
|
||||
ov61_021E7108(r5->unk_000, r5->unk_004, r5->unk_060[i], r5->unk_06C[i], i);
|
||||
ov61_021E7188(r5, i, work->heapId);
|
||||
}
|
||||
|
||||
NARC_dtor(narc);
|
||||
}
|
||||
|
3
src/unk_0200A090.c
Normal file
3
src/unk_0200A090.c
Normal file
@ -0,0 +1,3 @@
|
||||
#include "unk_0200A090.h"
|
||||
|
||||
|
32
src/unk_02025534.c
Normal file
32
src/unk_02025534.c
Normal file
@ -0,0 +1,32 @@
|
||||
#include "unk_02025534.h"
|
||||
|
||||
void sub_0202568C(struct UnkStruct_02025534 *a0);
|
||||
void sub_02025768(struct UnkStruct_02025534_sub *sub);
|
||||
struct UnkStruct_02025534_sub *sub_020256C8(struct UnkStruct_02025534 *a0, int a1);
|
||||
|
||||
struct UnkStruct_02025534 *sub_02025534(int num, HeapID heapId) {
|
||||
struct UnkStruct_02025534 *ret = AllocFromHeap(heapId, sizeof(struct UnkStruct_02025534));
|
||||
int i;
|
||||
|
||||
GF_ASSERT(ret != NULL);
|
||||
ret->vals = AllocFromHeap(heapId, num * sizeof(struct UnkStruct_02025534_sub));
|
||||
GF_ASSERT(ret->vals != NULL);
|
||||
for (i = 0; i < num; i++) {
|
||||
sub_02025768(&ret->vals[i]);
|
||||
}
|
||||
ret->max = num;
|
||||
ret->num = 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
void sub_02025580(struct UnkStruct_02025534 *a0) {
|
||||
GF_ASSERT(a0 != NULL);
|
||||
sub_0202568C(a0);
|
||||
FreeToHeap(a0->vals);
|
||||
FreeToHeap(a0);
|
||||
}
|
||||
|
||||
BOOL sub_020255A0(struct UnkStruct_02025534 *a0, int a1) {
|
||||
GF_ASSERT(a0 != NULL);
|
||||
return sub_020256C8(a0, a1) == NULL;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user