mirror of
https://github.com/pret/pokeheartgold.git
synced 2026-06-02 21:54:45 -05:00
through sub_0200D124
This commit is contained in:
parent
1c086937e5
commit
fa1781984f
|
|
@ -219,3 +219,4 @@
|
|||
.public sub_0200D060
|
||||
.public sub_0200D0B4
|
||||
.public sub_0200D0D4
|
||||
.public sub_0200D124
|
||||
|
|
|
|||
|
|
@ -4,202 +4,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_0200D108
|
||||
sub_0200D108: ; 0x0200D108
|
||||
push {r4, lr}
|
||||
add r4, r0, #0
|
||||
ldr r0, [r4, #4]
|
||||
cmp r0, #0
|
||||
beq _0200D116
|
||||
bl GF_AssertFail
|
||||
_0200D116:
|
||||
add r0, r4, #0
|
||||
bl sub_0200D0B4
|
||||
add r0, r4, #0
|
||||
bl FreeToHeap
|
||||
pop {r4, pc}
|
||||
thumb_func_end sub_0200D108
|
||||
|
||||
thumb_func_start sub_0200D124
|
||||
sub_0200D124: ; 0x0200D124
|
||||
push {r4, r5, r6, r7, lr}
|
||||
sub sp, #0x34
|
||||
add r5, r0, #0
|
||||
add r4, r1, #0
|
||||
mov r7, #6
|
||||
str r2, [sp, #0x10]
|
||||
str r3, [sp, #0x14]
|
||||
cmp r5, #0
|
||||
beq _0200D13A
|
||||
cmp r4, #0
|
||||
bne _0200D140
|
||||
_0200D13A:
|
||||
add sp, #0x34
|
||||
mov r0, #0
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
_0200D140:
|
||||
add r0, r2, #0
|
||||
ldrh r1, [r0, #8]
|
||||
ldr r0, _0200D290 ; =0x0000FFFF
|
||||
cmp r1, r0
|
||||
bne _0200D14C
|
||||
mov r7, #4
|
||||
_0200D14C:
|
||||
str r7, [r4, #0x54]
|
||||
bl sub_0200A8FC
|
||||
add r2, r0, #0
|
||||
add r1, r2, #0
|
||||
ldr r0, [r5]
|
||||
mul r1, r7
|
||||
bl AllocFromHeap
|
||||
str r0, [r4, #8]
|
||||
ldr r1, [r5]
|
||||
mov r0, #0xaf
|
||||
bl NARC_New
|
||||
str r0, [sp, #0x20]
|
||||
mov r0, #0
|
||||
str r0, [sp, #0x24]
|
||||
cmp r7, #0
|
||||
ble _0200D1AA
|
||||
ldr r6, [sp, #0x10]
|
||||
_0200D174:
|
||||
ldr r0, [r4, #8]
|
||||
ldr r1, [sp, #0x24]
|
||||
bl sub_0200A900
|
||||
str r0, [sp, #0x28]
|
||||
mov r0, #1
|
||||
str r0, [sp]
|
||||
ldrh r1, [r6]
|
||||
ldr r0, [sp, #0x20]
|
||||
ldr r3, [r5]
|
||||
mov r2, #0
|
||||
bl GfGfxLoader_LoadFromOpenNarc
|
||||
ldr r1, [sp, #0x28]
|
||||
ldr r2, [r5]
|
||||
str r0, [sp, #0x2c]
|
||||
bl sub_0200A908
|
||||
ldr r0, [sp, #0x2c]
|
||||
bl FreeToHeap
|
||||
ldr r0, [sp, #0x24]
|
||||
add r6, r6, #2
|
||||
add r0, r0, #1
|
||||
str r0, [sp, #0x24]
|
||||
cmp r0, r7
|
||||
blt _0200D174
|
||||
_0200D1AA:
|
||||
mov r6, #0
|
||||
cmp r7, #0
|
||||
ble _0200D1D6
|
||||
str r4, [sp, #0x1c]
|
||||
_0200D1B2:
|
||||
ldr r0, [r4, #8]
|
||||
add r1, r6, #0
|
||||
bl sub_0200A900
|
||||
bl sub_0200A96C
|
||||
ldr r2, [r5]
|
||||
add r1, r6, #0
|
||||
bl Create2DGfxResObjMan
|
||||
ldr r1, [sp, #0x1c]
|
||||
add r6, r6, #1
|
||||
str r0, [r1, #0xc]
|
||||
add r0, r1, #0
|
||||
add r0, r0, #4
|
||||
str r0, [sp, #0x1c]
|
||||
cmp r6, r7
|
||||
blt _0200D1B2
|
||||
_0200D1D6:
|
||||
mov r0, #0
|
||||
str r0, [sp, #0x18]
|
||||
cmp r7, #0
|
||||
ble _0200D210
|
||||
add r6, r4, #0
|
||||
_0200D1E0:
|
||||
ldr r0, [r4, #8]
|
||||
ldr r1, [sp, #0x18]
|
||||
bl sub_0200A900
|
||||
str r0, [sp, #0x30]
|
||||
bl sub_0200A96C
|
||||
ldr r1, [r5]
|
||||
bl Create2DGfxResObjList
|
||||
add r2, r0, #0
|
||||
str r2, [r6, #0x24]
|
||||
ldr r0, [r6, #0xc]
|
||||
ldr r1, [sp, #0x30]
|
||||
ldr r3, [r5]
|
||||
bl LoadAll2DGfxResObjsFromHeader
|
||||
str r0, [r6, #0x3c]
|
||||
ldr r0, [sp, #0x18]
|
||||
add r6, r6, #4
|
||||
add r0, r0, #1
|
||||
str r0, [sp, #0x18]
|
||||
cmp r0, r7
|
||||
blt _0200D1E0
|
||||
_0200D210:
|
||||
ldr r0, [sp, #0x14]
|
||||
cmp r0, #0
|
||||
beq _0200D21E
|
||||
cmp r0, #1
|
||||
beq _0200D226
|
||||
cmp r0, #2
|
||||
b _0200D22E
|
||||
_0200D21E:
|
||||
ldr r0, [r4, #0x24]
|
||||
bl sub_0200ADE4
|
||||
b _0200D234
|
||||
_0200D226:
|
||||
ldr r0, [r4, #0x24]
|
||||
bl sub_0200AE58
|
||||
b _0200D234
|
||||
_0200D22E:
|
||||
ldr r0, [r4, #0x24]
|
||||
bl sub_0200AD30
|
||||
_0200D234:
|
||||
ldr r0, [sp, #0x48]
|
||||
cmp r0, #0
|
||||
beq _0200D23E
|
||||
cmp r0, #1
|
||||
b _0200D246
|
||||
_0200D23E:
|
||||
ldr r0, [r4, #0x28]
|
||||
bl sub_0200B050
|
||||
b _0200D24C
|
||||
_0200D246:
|
||||
ldr r0, [r4, #0x28]
|
||||
bl sub_0200AFD8
|
||||
_0200D24C:
|
||||
mov r0, #1
|
||||
str r0, [sp]
|
||||
ldr r1, [sp, #0x10]
|
||||
ldr r0, [sp, #0x20]
|
||||
ldrh r1, [r1, #0xc]
|
||||
ldr r3, [r5]
|
||||
mov r2, #0
|
||||
bl GfGfxLoader_LoadFromOpenNarc
|
||||
ldr r1, [r4, #0x14]
|
||||
add r6, r0, #0
|
||||
str r1, [sp]
|
||||
ldr r1, [r4, #0x18]
|
||||
str r1, [sp, #4]
|
||||
ldr r1, [r4, #0x1c]
|
||||
str r1, [sp, #8]
|
||||
ldr r1, [r4, #0x20]
|
||||
str r1, [sp, #0xc]
|
||||
ldr r1, [r5]
|
||||
ldr r2, [r4, #0xc]
|
||||
ldr r3, [r4, #0x10]
|
||||
bl sub_02009E84
|
||||
str r0, [r4, #4]
|
||||
add r0, r6, #0
|
||||
bl FreeToHeap
|
||||
ldr r0, [sp, #0x20]
|
||||
bl NARC_Delete
|
||||
mov r0, #1
|
||||
add sp, #0x34
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
nop
|
||||
_0200D290: .word 0x0000FFFF
|
||||
thumb_func_end sub_0200D124
|
||||
|
||||
thumb_func_start sub_0200D294
|
||||
sub_0200D294: ; 0x0200D294
|
||||
push {r3, lr}
|
||||
|
|
|
|||
|
|
@ -3,16 +3,21 @@
|
|||
|
||||
#include "unk_0200A090.h"
|
||||
|
||||
void sub_0200ACF0(struct _2DGfxResObj *obj);
|
||||
void sub_0200AD30(struct _2DGfxResObjList *charResObjList);
|
||||
void sub_0200ADA4(struct _2DGfxResObj *charResObj);
|
||||
void sub_0200ADE4(struct _2DGfxResObjList *charResObjList);
|
||||
void sub_0200AE58(struct _2DGfxResObjList *charResObjList);
|
||||
void sub_0200AEB0(struct _2DGfxResObj *charResObj);
|
||||
void sub_0200AED4(struct _2DGfxResObjList *charResObjList);
|
||||
void sub_0200B0A8(struct _2DGfxResObj *plttResObj);
|
||||
void sub_0200B0CC(struct _2DGfxResObjList *plttResObjList);
|
||||
void sub_0200ADA4(struct _2DGfxResObj *charResObj);
|
||||
void sub_0200B00C(struct _2DGfxResObj *plttResObj);
|
||||
void sub_0200ACF0(struct _2DGfxResObj *obj);
|
||||
void sub_0200AF94(struct _2DGfxResObj *obj);
|
||||
NNSG2dImageProxy *sub_0200AF00(struct _2DGfxResObj *charResObj);
|
||||
NNSG2dImageProxy *sub_0200AF24(struct _2DGfxResObj *charResObj, struct _2DGfxResObj *cellResObj);
|
||||
void sub_0200AF94(struct _2DGfxResObj *obj);
|
||||
void sub_0200AFD8(struct _2DGfxResObjList *plttResObjList);
|
||||
void sub_0200B00C(struct _2DGfxResObj *plttResObj);
|
||||
void sub_0200B050(struct _2DGfxResObjList *plttResObjList);
|
||||
void sub_0200B0A8(struct _2DGfxResObj *plttResObj);
|
||||
void sub_0200B0CC(struct _2DGfxResObjList *plttResObjList);
|
||||
NNSG2dImagePaletteProxy *sub_0200B0F8(struct _2DGfxResObj *plttResObj, NNSG2dImageProxy *imageProxy);
|
||||
|
||||
#endif //POKEHEARTGOLD_UNK_0200ACF0_H
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ typedef struct UnkStruct_0200CF38 {
|
|||
struct _2DGfxResHeader* unk_08;
|
||||
struct _2DGfxResMan* unk_0C[6];
|
||||
struct _2DGfxResObjList* unk_24[6];
|
||||
void* unk_3C[6];
|
||||
int unk_3C[6];
|
||||
int unk_54;
|
||||
} UnkStruct_0200CF38; // size: 0x58
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
#include "assert.h"
|
||||
#include "global.h"
|
||||
#include "heap.h"
|
||||
#include "gf_gfx_loader.h"
|
||||
#include "unk_02009D48.h"
|
||||
#include "unk_020215A0.h"
|
||||
#include "unk_02022588.h"
|
||||
|
|
@ -15,6 +16,7 @@ void sub_0200D050(UnkStruct_0200CF38* a0);
|
|||
void sub_0200D060(UnkStruct_0200CF38* a0);
|
||||
void sub_0200D0B4(UnkStruct_0200CF18* a0);
|
||||
void sub_0200D0D4(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1);
|
||||
BOOL sub_0200D124(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, u16* a2, int a3, int a4, int a5);
|
||||
|
||||
UnkStruct_0200CF18* sub_0200CF18(HeapID heapId) {
|
||||
UnkStruct_0200CF18* ret = AllocFromHeap(heapId, sizeof(UnkStruct_0200CF18));
|
||||
|
|
@ -134,3 +136,75 @@ void sub_0200D0E4(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1) {
|
|||
sub_0200D060(a1);
|
||||
sub_0200D0D4(a0, a1);
|
||||
}
|
||||
|
||||
void sub_0200D108(UnkStruct_0200CF18* a0) {
|
||||
GF_ASSERT(a0->unk_004 == 0);
|
||||
sub_0200D0B4(a0);
|
||||
FreeToHeap(a0);
|
||||
}
|
||||
|
||||
BOOL sub_0200D124(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, u16* a2, int a3, int a4, int a5) {
|
||||
int i;
|
||||
int r7;
|
||||
int size;
|
||||
struct _2DGfxResHeader* header;
|
||||
void* data;
|
||||
NARC* narc;
|
||||
|
||||
r7 = 6;
|
||||
|
||||
if (a0 == NULL || a1 == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
if (a2[4] == 0xFFFF) {
|
||||
r7 = 4;
|
||||
}
|
||||
a1->unk_54 = r7;
|
||||
size = sub_0200A8FC();
|
||||
a1->unk_08 = AllocFromHeap(a0->heapId, size * r7);
|
||||
narc = NARC_New(NARC_a_1_7_5, a0->heapId);
|
||||
|
||||
for (i = 0; i < r7; ++i) {
|
||||
header = sub_0200A900(a1->unk_08, i);
|
||||
data = GfGfxLoader_LoadFromOpenNarc(narc, a2[i], FALSE, a0->heapId, TRUE);
|
||||
sub_0200A908(data, header, a0->heapId);
|
||||
FreeToHeap(data);
|
||||
}
|
||||
for (i = 0; i < r7; ++i) {
|
||||
header = sub_0200A900(a1->unk_08, i);
|
||||
size = sub_0200A96C(header);
|
||||
a1->unk_0C[i] = Create2DGfxResObjMan(size, (GfGfxResType)i, a0->heapId);
|
||||
}
|
||||
for (i = 0; i < r7; ++i) {
|
||||
header = sub_0200A900(a1->unk_08, i);
|
||||
size = sub_0200A96C(header);
|
||||
a1->unk_24[i] = Create2DGfxResObjList(size, a0->heapId);
|
||||
a1->unk_3C[i] = LoadAll2DGfxResObjsFromHeader(a1->unk_0C[i], header, a1->unk_24[i], a0->heapId);
|
||||
}
|
||||
switch (a3) {
|
||||
case 0:
|
||||
sub_0200ADE4(a1->unk_24[0]);
|
||||
break;
|
||||
case 1:
|
||||
sub_0200AE58(a1->unk_24[0]);
|
||||
break;
|
||||
case 2:
|
||||
default:
|
||||
sub_0200AD30(a1->unk_24[0]);
|
||||
break;
|
||||
}
|
||||
switch (a4) {
|
||||
case 0:
|
||||
sub_0200B050(a1->unk_24[1]);
|
||||
break;
|
||||
case 1:
|
||||
default:
|
||||
sub_0200AFD8(a1->unk_24[1]);
|
||||
break;
|
||||
}
|
||||
data = GfGfxLoader_LoadFromOpenNarc(narc, a2[6], FALSE, a0->heapId, TRUE);
|
||||
a1->unk_04 = sub_02009E84(data, a0->heapId, a1->unk_0C[0], a1->unk_0C[1], a1->unk_0C[2], a1->unk_0C[3], a1->unk_0C[4], a1->unk_0C[5]);
|
||||
FreeToHeap(data);
|
||||
NARC_Delete(narc);
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user