ov61_021E6FC4; start 0200A090 and 02025334

This commit is contained in:
PikalaxALT 2022-03-30 10:15:32 -04:00
parent 02f4d842e0
commit 0f98f93d94
10 changed files with 105 additions and 236 deletions

View File

@ -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}

View File

@ -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}

View File

@ -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
View 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
View 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

View File

@ -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

View File

@ -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
View File

@ -0,0 +1,3 @@
#include "unk_0200A090.h"

32
src/unk_02025534.c Normal file
View 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;
}