mirror of
https://github.com/pret/pokeheartgold.git
synced 2026-06-02 21:54:45 -05:00
through sub_0200D71C
This commit is contained in:
parent
255f47043f
commit
ad6fbb130c
|
|
@ -4,454 +4,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_0200D3F8
|
||||
sub_0200D3F8: ; 0x0200D3F8
|
||||
push {r4, r5, r6, r7, lr}
|
||||
sub sp, #0xc
|
||||
str r0, [sp]
|
||||
mov r0, #6
|
||||
str r0, [sp, #4]
|
||||
ldr r0, [sp]
|
||||
add r5, r1, #0
|
||||
add r6, r2, #0
|
||||
cmp r0, #0
|
||||
beq _0200D410
|
||||
cmp r5, #0
|
||||
bne _0200D416
|
||||
_0200D410:
|
||||
add sp, #0xc
|
||||
mov r0, #0
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
_0200D416:
|
||||
ldr r0, [r6, #0x10]
|
||||
cmp r0, #0
|
||||
beq _0200D422
|
||||
ldr r0, [r6, #0x14]
|
||||
cmp r0, #0
|
||||
bne _0200D426
|
||||
_0200D422:
|
||||
mov r0, #4
|
||||
str r0, [sp, #4]
|
||||
_0200D426:
|
||||
ldr r0, [sp, #4]
|
||||
str r0, [r5, #0x54]
|
||||
mov r0, #0
|
||||
str r0, [sp, #8]
|
||||
ldr r0, [sp, #4]
|
||||
cmp r0, #0
|
||||
ble _0200D456
|
||||
add r7, r6, #0
|
||||
add r4, r5, #0
|
||||
_0200D438:
|
||||
ldr r2, [sp]
|
||||
ldr r0, [r7]
|
||||
ldr r1, [sp, #8]
|
||||
ldr r2, [r2]
|
||||
bl Create2DGfxResObjMan
|
||||
str r0, [r4, #0xc]
|
||||
ldr r0, [sp, #8]
|
||||
add r7, r7, #4
|
||||
add r1, r0, #1
|
||||
ldr r0, [sp, #4]
|
||||
add r4, r4, #4
|
||||
str r1, [sp, #8]
|
||||
cmp r1, r0
|
||||
blt _0200D438
|
||||
_0200D456:
|
||||
ldr r0, [sp, #4]
|
||||
mov r7, #0
|
||||
cmp r0, #0
|
||||
ble _0200D49C
|
||||
add r4, r7, #0
|
||||
_0200D460:
|
||||
ldr r0, [r6]
|
||||
cmp r0, #0
|
||||
beq _0200D490
|
||||
ldr r1, [sp]
|
||||
ldr r1, [r1]
|
||||
bl Create2DGfxResObjList
|
||||
str r0, [r5, #0x24]
|
||||
mov r0, #0
|
||||
str r0, [r5, #0x3c]
|
||||
ldr r3, [r5, #0x24]
|
||||
add r1, r0, #0
|
||||
ldr r0, [r3, #4]
|
||||
cmp r0, #0
|
||||
ble _0200D490
|
||||
add r2, r1, #0
|
||||
_0200D480:
|
||||
ldr r0, [r3]
|
||||
add r1, r1, #1
|
||||
str r4, [r0, r2]
|
||||
ldr r3, [r5, #0x24]
|
||||
add r2, r2, #4
|
||||
ldr r0, [r3, #4]
|
||||
cmp r1, r0
|
||||
blt _0200D480
|
||||
_0200D490:
|
||||
ldr r0, [sp, #4]
|
||||
add r7, r7, #1
|
||||
add r6, r6, #4
|
||||
add r5, r5, #4
|
||||
cmp r7, r0
|
||||
blt _0200D460
|
||||
_0200D49C:
|
||||
mov r0, #1
|
||||
add sp, #0xc
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.balign 4, 0
|
||||
thumb_func_end sub_0200D3F8
|
||||
|
||||
thumb_func_start sub_0200D4A4
|
||||
sub_0200D4A4: ; 0x0200D4A4
|
||||
push {r4, r5, r6, r7, lr}
|
||||
sub sp, #0xc
|
||||
add r4, r1, #0
|
||||
add r5, r0, #0
|
||||
ldr r0, [r4, #0xc]
|
||||
ldr r1, [sp, #0x28]
|
||||
add r6, r2, #0
|
||||
add r7, r3, #0
|
||||
bl _2DGfxResObjExistsById
|
||||
cmp r0, #0
|
||||
bne _0200D4C2
|
||||
add sp, #0xc
|
||||
mov r0, #0
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
_0200D4C2:
|
||||
ldr r0, [sp, #0x28]
|
||||
ldr r3, [sp, #0x20]
|
||||
str r0, [sp]
|
||||
ldr r0, [sp, #0x24]
|
||||
add r1, r6, #0
|
||||
str r0, [sp, #4]
|
||||
ldr r0, [r5]
|
||||
add r2, r7, #0
|
||||
str r0, [sp, #8]
|
||||
ldr r0, [r4, #0xc]
|
||||
bl AddCharResObjFromNarc
|
||||
add r5, r0, #0
|
||||
beq _0200D4F0
|
||||
bl sub_0200ADA4
|
||||
ldr r0, [r4, #0x24]
|
||||
add r1, r5, #0
|
||||
bl sub_0200DAE4
|
||||
add sp, #0xc
|
||||
mov r0, #1
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
_0200D4F0:
|
||||
bl GF_AssertFail
|
||||
cmp r5, #0
|
||||
beq _0200D4FE
|
||||
add sp, #0xc
|
||||
mov r0, #1
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
_0200D4FE:
|
||||
mov r0, #0
|
||||
add sp, #0xc
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
thumb_func_end sub_0200D4A4
|
||||
|
||||
thumb_func_start sub_0200D504
|
||||
sub_0200D504: ; 0x0200D504
|
||||
push {r4, r5, r6, r7, lr}
|
||||
sub sp, #0xc
|
||||
add r4, r1, #0
|
||||
add r5, r0, #0
|
||||
ldr r0, [r4, #0xc]
|
||||
ldr r1, [sp, #0x28]
|
||||
add r6, r2, #0
|
||||
add r7, r3, #0
|
||||
bl _2DGfxResObjExistsById
|
||||
cmp r0, #0
|
||||
bne _0200D522
|
||||
add sp, #0xc
|
||||
mov r0, #0
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
_0200D522:
|
||||
ldr r0, [sp, #0x28]
|
||||
ldr r3, [sp, #0x20]
|
||||
str r0, [sp]
|
||||
ldr r0, [sp, #0x24]
|
||||
add r1, r6, #0
|
||||
str r0, [sp, #4]
|
||||
ldr r0, [r5]
|
||||
add r2, r7, #0
|
||||
str r0, [sp, #8]
|
||||
ldr r0, [r4, #0xc]
|
||||
bl AddCharResObjFromOpenNarc
|
||||
add r5, r0, #0
|
||||
beq _0200D550
|
||||
bl sub_0200ADA4
|
||||
ldr r0, [r4, #0x24]
|
||||
add r1, r5, #0
|
||||
bl sub_0200DAE4
|
||||
add sp, #0xc
|
||||
mov r0, #1
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
_0200D550:
|
||||
bl GF_AssertFail
|
||||
cmp r5, #0
|
||||
beq _0200D55E
|
||||
add sp, #0xc
|
||||
mov r0, #1
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
_0200D55E:
|
||||
mov r0, #0
|
||||
add sp, #0xc
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
thumb_func_end sub_0200D504
|
||||
|
||||
thumb_func_start sub_0200D564
|
||||
sub_0200D564: ; 0x0200D564
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
sub sp, #0x10
|
||||
add r4, r1, #0
|
||||
add r5, r0, #0
|
||||
ldr r0, [r4, #0x10]
|
||||
ldr r1, [sp, #0x34]
|
||||
add r6, r2, #0
|
||||
add r7, r3, #0
|
||||
bl _2DGfxResObjExistsById
|
||||
cmp r0, #0
|
||||
bne _0200D584
|
||||
mov r0, #0
|
||||
add sp, #0x10
|
||||
mvn r0, r0
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
_0200D584:
|
||||
ldr r0, [sp, #0x34]
|
||||
ldr r3, [sp, #0x28]
|
||||
str r0, [sp]
|
||||
ldr r0, [sp, #0x30]
|
||||
add r1, r6, #0
|
||||
str r0, [sp, #4]
|
||||
ldr r0, [sp, #0x2c]
|
||||
add r2, r7, #0
|
||||
str r0, [sp, #8]
|
||||
ldr r0, [r5]
|
||||
str r0, [sp, #0xc]
|
||||
ldr r0, [r4, #0x10]
|
||||
bl AddPlttResObjFromNarc
|
||||
add r5, r0, #0
|
||||
beq _0200D5C8
|
||||
bl sub_0200B00C
|
||||
cmp r0, #1
|
||||
beq _0200D5B0
|
||||
bl GF_AssertFail
|
||||
_0200D5B0:
|
||||
ldr r0, [r4, #0x28]
|
||||
add r1, r5, #0
|
||||
bl sub_0200DAE4
|
||||
ldr r1, [sp, #0x30]
|
||||
add r0, r5, #0
|
||||
bl sub_0200B12C
|
||||
lsl r0, r0, #0x18
|
||||
add sp, #0x10
|
||||
asr r0, r0, #0x18
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
_0200D5C8:
|
||||
bl GF_AssertFail
|
||||
mov r0, #0
|
||||
mvn r0, r0
|
||||
add sp, #0x10
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
thumb_func_end sub_0200D564
|
||||
|
||||
thumb_func_start sub_0200D5D4
|
||||
sub_0200D5D4: ; 0x0200D5D4
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
sub sp, #0x10
|
||||
add r4, r1, #0
|
||||
add r5, r0, #0
|
||||
ldr r0, [r4, #0x10]
|
||||
ldr r1, [sp, #0x34]
|
||||
add r6, r2, #0
|
||||
add r7, r3, #0
|
||||
bl _2DGfxResObjExistsById
|
||||
cmp r0, #0
|
||||
bne _0200D5F4
|
||||
mov r0, #0
|
||||
add sp, #0x10
|
||||
mvn r0, r0
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
_0200D5F4:
|
||||
ldr r0, [sp, #0x34]
|
||||
ldr r3, [sp, #0x28]
|
||||
str r0, [sp]
|
||||
ldr r0, [sp, #0x30]
|
||||
add r1, r6, #0
|
||||
str r0, [sp, #4]
|
||||
ldr r0, [sp, #0x2c]
|
||||
add r2, r7, #0
|
||||
str r0, [sp, #8]
|
||||
ldr r0, [r5]
|
||||
str r0, [sp, #0xc]
|
||||
ldr r0, [r4, #0x10]
|
||||
bl AddPlttResObjFromOpenNarc
|
||||
add r5, r0, #0
|
||||
beq _0200D638
|
||||
bl sub_0200B00C
|
||||
cmp r0, #1
|
||||
beq _0200D620
|
||||
bl GF_AssertFail
|
||||
_0200D620:
|
||||
ldr r0, [r4, #0x28]
|
||||
add r1, r5, #0
|
||||
bl sub_0200DAE4
|
||||
ldr r1, [sp, #0x30]
|
||||
add r0, r5, #0
|
||||
bl sub_0200B12C
|
||||
lsl r0, r0, #0x18
|
||||
add sp, #0x10
|
||||
asr r0, r0, #0x18
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
_0200D638:
|
||||
bl GF_AssertFail
|
||||
mov r0, #0
|
||||
mvn r0, r0
|
||||
add sp, #0x10
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
thumb_func_end sub_0200D5D4
|
||||
|
||||
thumb_func_start sub_0200D644
|
||||
sub_0200D644: ; 0x0200D644
|
||||
push {r4, r5, r6, lr}
|
||||
sub sp, #0x10
|
||||
add r5, r0, #0
|
||||
ldr r0, [sp, #0x28]
|
||||
add r6, r1, #0
|
||||
str r0, [sp]
|
||||
ldr r0, [sp, #0x2c]
|
||||
add r1, r3, #0
|
||||
str r0, [sp, #4]
|
||||
ldr r0, [sp, #0x30]
|
||||
ldr r3, [sp, #0x24]
|
||||
str r0, [sp, #8]
|
||||
ldr r0, [sp, #0x34]
|
||||
str r0, [sp, #0xc]
|
||||
add r0, r2, #0
|
||||
ldr r2, [sp, #0x20]
|
||||
bl sub_0200D564
|
||||
add r4, r0, #0
|
||||
mov r0, #0
|
||||
mvn r0, r0
|
||||
cmp r4, r0
|
||||
beq _0200D682
|
||||
ldr r3, [sp, #0x2c]
|
||||
lsl r2, r4, #0x14
|
||||
add r0, r5, #0
|
||||
add r1, r6, #0
|
||||
lsr r2, r2, #0x10
|
||||
lsl r3, r3, #5
|
||||
bl sub_020032A4
|
||||
_0200D682:
|
||||
lsl r0, r4, #0x18
|
||||
lsr r0, r0, #0x18
|
||||
add sp, #0x10
|
||||
pop {r4, r5, r6, pc}
|
||||
.balign 4, 0
|
||||
thumb_func_end sub_0200D644
|
||||
|
||||
thumb_func_start sub_0200D68C
|
||||
sub_0200D68C: ; 0x0200D68C
|
||||
push {r4, r5, r6, lr}
|
||||
sub sp, #0x10
|
||||
add r5, r0, #0
|
||||
ldr r0, [sp, #0x28]
|
||||
add r6, r1, #0
|
||||
str r0, [sp]
|
||||
ldr r0, [sp, #0x2c]
|
||||
add r1, r3, #0
|
||||
str r0, [sp, #4]
|
||||
ldr r0, [sp, #0x30]
|
||||
ldr r3, [sp, #0x24]
|
||||
str r0, [sp, #8]
|
||||
ldr r0, [sp, #0x34]
|
||||
str r0, [sp, #0xc]
|
||||
add r0, r2, #0
|
||||
ldr r2, [sp, #0x20]
|
||||
bl sub_0200D5D4
|
||||
add r4, r0, #0
|
||||
mov r0, #0
|
||||
mvn r0, r0
|
||||
cmp r4, r0
|
||||
beq _0200D6CA
|
||||
ldr r3, [sp, #0x2c]
|
||||
lsl r2, r4, #0x14
|
||||
add r0, r5, #0
|
||||
add r1, r6, #0
|
||||
lsr r2, r2, #0x10
|
||||
lsl r3, r3, #5
|
||||
bl sub_020032A4
|
||||
_0200D6CA:
|
||||
lsl r0, r4, #0x18
|
||||
lsr r0, r0, #0x18
|
||||
add sp, #0x10
|
||||
pop {r4, r5, r6, pc}
|
||||
.balign 4, 0
|
||||
thumb_func_end sub_0200D68C
|
||||
|
||||
thumb_func_start sub_0200D6D4
|
||||
sub_0200D6D4: ; 0x0200D6D4
|
||||
push {r3, r4, lr}
|
||||
sub sp, #0xc
|
||||
ldr r4, [sp, #0x18]
|
||||
str r4, [sp]
|
||||
mov r4, #2
|
||||
str r4, [sp, #4]
|
||||
ldr r4, [sp, #0x1c]
|
||||
str r4, [sp, #8]
|
||||
bl sub_0200DA04
|
||||
add sp, #0xc
|
||||
pop {r3, r4, pc}
|
||||
thumb_func_end sub_0200D6D4
|
||||
|
||||
thumb_func_start sub_0200D6EC
|
||||
sub_0200D6EC: ; 0x0200D6EC
|
||||
push {r3, r4, lr}
|
||||
sub sp, #0xc
|
||||
ldr r4, [sp, #0x18]
|
||||
str r4, [sp]
|
||||
mov r4, #2
|
||||
str r4, [sp, #4]
|
||||
ldr r4, [sp, #0x1c]
|
||||
str r4, [sp, #8]
|
||||
bl sub_0200DA74
|
||||
add sp, #0xc
|
||||
pop {r3, r4, pc}
|
||||
thumb_func_end sub_0200D6EC
|
||||
|
||||
thumb_func_start sub_0200D704
|
||||
sub_0200D704: ; 0x0200D704
|
||||
push {r3, r4, lr}
|
||||
sub sp, #0xc
|
||||
ldr r4, [sp, #0x18]
|
||||
str r4, [sp]
|
||||
mov r4, #3
|
||||
str r4, [sp, #4]
|
||||
ldr r4, [sp, #0x1c]
|
||||
str r4, [sp, #8]
|
||||
bl sub_0200DA04
|
||||
add sp, #0xc
|
||||
pop {r3, r4, pc}
|
||||
thumb_func_end sub_0200D704
|
||||
|
||||
thumb_func_start sub_0200D71C
|
||||
sub_0200D71C: ; 0x0200D71C
|
||||
push {r3, r4, lr}
|
||||
sub sp, #0xc
|
||||
ldr r4, [sp, #0x18]
|
||||
str r4, [sp]
|
||||
mov r4, #3
|
||||
str r4, [sp, #4]
|
||||
ldr r4, [sp, #0x1c]
|
||||
str r4, [sp, #8]
|
||||
bl sub_0200DA74
|
||||
add sp, #0xc
|
||||
pop {r3, r4, pc}
|
||||
thumb_func_end sub_0200D71C
|
||||
|
||||
thumb_func_start sub_0200D734
|
||||
sub_0200D734: ; 0x0200D734
|
||||
push {r3, lr}
|
||||
|
|
|
|||
|
|
@ -147,7 +147,7 @@ u8 sub_02070848(BoxPokemon *boxMon, u8 whichFacing);
|
|||
u8 sub_02070854(BoxPokemon *boxMon, u8 whichFacing, BOOL a2);
|
||||
u8 sub_020708D8(u16 species, u8 gender, u8 whichFacing, u8 form, u32 pid);
|
||||
u8 sub_02070A64(u16 species, u8 gender, u8 whichFacing, u8 form, u32 pid);
|
||||
struct UnkStruct_0200D748 *sub_02070C24(UnkStruct_0200CF18 *r6, void *sp18, void *sp1C, s32 sp20, s32 sp88, s32 trainerClass, s32 sp90, s32 sp94, s32 r5, HeapID heapId);
|
||||
struct UnkStruct_0200D748 *sub_02070C24(UnkStruct_0200CF18 *r6, UnkStruct_0200CF38 *sp18, void *sp1C, int sp20, int sp88, int trainerClass, int sp90, int sp94, int r5, HeapID heapId);
|
||||
void sub_02070D3C(s32 trainer_class, s32 a1, s32 a2, struct UnkStruct_02070D3C *a3);
|
||||
void sub_02070D84(s32 trainer_class, s32 a1, struct UnkStruct_02070D3C *a2);
|
||||
u32 sub_02070D90(void);
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ typedef enum GF_GraphicsResourceType {
|
|||
GF_GFX_RES_TYPE_ANIM = 3,
|
||||
GF_GFX_RES_TYPE_MCEL = 4,
|
||||
GF_GFX_RES_TYPE_MANM = 5,
|
||||
GF_GFX_RES_TYPE_MAX = 6,
|
||||
} GfGfxResType;
|
||||
|
||||
typedef struct _2DGfxResObj {
|
||||
|
|
|
|||
|
|
@ -14,9 +14,10 @@ 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);
|
||||
BOOL sub_0200B00C(struct _2DGfxResObj *plttResObj);
|
||||
void sub_0200B050(struct _2DGfxResObjList *plttResObjList);
|
||||
void sub_0200B0A8(struct _2DGfxResObj *plttResObj);
|
||||
int sub_0200B12C(struct _2DGfxResObj* plttResObj, int vram);
|
||||
void sub_0200B0CC(struct _2DGfxResObjList *plttResObjList);
|
||||
NNSG2dImagePaletteProxy *sub_0200B0F8(struct _2DGfxResObj *plttResObj, NNSG2dImageProxy *imageProxy);
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
#include "filesystem.h"
|
||||
#include "unk_02009D48.h"
|
||||
#include "unk_02023694.h"
|
||||
#include "palette.h"
|
||||
|
||||
typedef struct UnkStruct_0200D2B4 {
|
||||
int unk_00;
|
||||
|
|
@ -28,7 +29,7 @@ typedef struct UnkTemplate_0200D748 {
|
|||
u32 unk_08;
|
||||
u32 pal;
|
||||
NNS_G2D_VRAM_TYPE vram;
|
||||
u32 unk_14[6];
|
||||
u32 unk_14[GF_GFX_RES_TYPE_MAX];
|
||||
u32 unk_2C;
|
||||
u32 unk_30;
|
||||
} UnkTemplate_0200D748; // size=0x34
|
||||
|
|
@ -41,8 +42,8 @@ typedef struct UnkStruct_0200CF18 {
|
|||
HeapID heapId;
|
||||
u32 unk_004;
|
||||
BOOL unk_008;
|
||||
NNSG2dCellTransferState* cellTransferState;
|
||||
GF_G2dRenderer renderer;
|
||||
NNSG2dCellTransferState* cellTransferState; // 00C
|
||||
GF_G2dRenderer renderer; // 010
|
||||
} UnkStruct_0200CF18; // size: 0x138
|
||||
|
||||
typedef struct UnkStruct_0200CF38_sub {
|
||||
|
|
@ -52,11 +53,11 @@ typedef struct UnkStruct_0200CF38_sub {
|
|||
|
||||
typedef struct UnkStruct_0200CF38 {
|
||||
SpriteList* spriteList;
|
||||
ListOfUnkStruct_02009D48* unk_04;
|
||||
struct _2DGfxResHeader* unk_08;
|
||||
struct _2DGfxResMan* unk_0C[6];
|
||||
struct _2DGfxResObjList* unk_24[6];
|
||||
int unk_3C[6];
|
||||
ListOfUnkStruct_02009D48* listOfUnkStruct_9D48; // 4
|
||||
struct _2DGfxResHeader* _2dGfxResHeader; // 8
|
||||
struct _2DGfxResMan* _2dGfxResMan[GF_GFX_RES_TYPE_MAX]; // C
|
||||
struct _2DGfxResObjList* _2dGfxResObjList[GF_GFX_RES_TYPE_MAX]; // 24
|
||||
int unk_3C[GF_GFX_RES_TYPE_MAX];
|
||||
int unk_54;
|
||||
} UnkStruct_0200CF38; // size: 0x58
|
||||
|
||||
|
|
@ -80,7 +81,7 @@ typedef struct Unk122_021E92D0 {
|
|||
} Unk122_021E92D0;
|
||||
|
||||
typedef struct Unk122_021E92E4 {
|
||||
int unk0[6];
|
||||
int unk0[GF_GFX_RES_TYPE_MAX];
|
||||
} Unk122_021E92E4;
|
||||
|
||||
typedef struct Unk122_021E9374 {
|
||||
|
|
@ -106,13 +107,17 @@ void sub_0200D108(UnkStruct_0200CF18*);
|
|||
BOOL sub_0200D294(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, const u16* a2);
|
||||
BOOL sub_0200D2A4(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, const u16* a2, int a3, int a4);
|
||||
Sprite* sub_0200D2B4(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, const UnkStruct_0200D2B4* a2);
|
||||
|
||||
void sub_0200D3F8(UnkStruct_0200CF18*, UnkStruct_0200CF38*, Unk122_021E92E4*);
|
||||
void sub_0200D504(UnkStruct_0200CF18*, UnkStruct_0200CF38*, NARC*, int, int, int, int);
|
||||
void sub_0200D5D4(UnkStruct_0200CF18*, UnkStruct_0200CF38*, NARC*, int, int, int, int, int);
|
||||
void sub_0200D68C(void*, s32, void*, void*, NARC*, s32, s32, s32, s32, s32);
|
||||
void sub_0200D6EC(UnkStruct_0200CF18*, UnkStruct_0200CF38*, NARC*, int, int, int);
|
||||
void sub_0200D71C(void*, UnkStruct_0200CF38*, NARC*, s32, s32, s32);
|
||||
BOOL sub_0200D3F8(UnkStruct_0200CF18*, UnkStruct_0200CF38*, Unk122_021E92E4*);
|
||||
BOOL sub_0200D4A4(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, NarcId narcId, int fileId, BOOL compressed, int vram, int resId);
|
||||
BOOL sub_0200D504(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, NARC* narc, int fileId, BOOL compressed, int vram, int resId);
|
||||
s8 sub_0200D564(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, NarcId sub_0200D564, int fileId, BOOL compressed, int pltt_num, int vram, int resId);
|
||||
s8 sub_0200D5D4(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, NARC* sub_0200D564, int fileId, BOOL compressed, int pltt_num, int vram, int resId);
|
||||
u8 sub_0200D644(PaletteData* a0, u32 bufferId, UnkStruct_0200CF18* a2, UnkStruct_0200CF38* a3, NarcId narcId, int fileId, BOOL compressed, int pltt_num, int vram, int resId);
|
||||
u8 sub_0200D68C(PaletteData* a0, u32 bufferId, UnkStruct_0200CF18* a2, UnkStruct_0200CF38* a3, NARC* narc, int fileId, BOOL compressed, int pltt_num, int vram, int resId);
|
||||
BOOL sub_0200D6D4(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, NarcId narcId, int fileId, BOOL compressed, int resId);
|
||||
BOOL sub_0200D6EC(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, NARC* narc, int fileId, BOOL compressed, int resId);
|
||||
BOOL sub_0200D704(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, NarcId narcId, int fileId, BOOL compressed, int resId);
|
||||
BOOL sub_0200D71C(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, NARC* narc, int fileId, BOOL compressed, int resId);
|
||||
struct UnkStruct_0200D748* sub_0200D734(void*, void*, struct UnkTemplate_0200D748*);
|
||||
UnkStruct_0200D748* sub_0200D740(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, Unk122_021E9374* a2, u32 a3);
|
||||
void sub_0200D958(void* a0, u32 character);
|
||||
|
|
|
|||
|
|
@ -2689,12 +2689,12 @@ static const int _020FF50C[] = {
|
|||
0, 1, 1, 2, 0, 3
|
||||
};
|
||||
|
||||
struct UnkStruct_0200D748 *sub_02070C24(UnkStruct_0200CF18 *r6, void *sp18, void *sp1C, s32 sp20, s32 sp88, s32 trainerClass, s32 sp90, s32 sp94, s32 r5, HeapID heapId) {
|
||||
s32 r7;
|
||||
NARC *narc_r4;
|
||||
struct UnkStruct_0200D748 *ret_r4;
|
||||
struct UnkStruct_0200D748 *sub_02070C24(UnkStruct_0200CF18 *r6, UnkStruct_0200CF38 *sp18, void *sp1C, int sp20, int sp88, int trainerClass, int sp90, int sp94, int r5, HeapID heapId) {
|
||||
struct UnkTemplate_0200D748 sp3C;
|
||||
struct UnkStruct_0200D748 *ret_r4;
|
||||
NARC *narc_r4;
|
||||
struct UnkStruct_02070D3C sp24;
|
||||
int r7;
|
||||
|
||||
r7 = 1;
|
||||
sub_02070D3C(trainerClass, sp90, sp94, &sp24);
|
||||
|
|
@ -2702,10 +2702,10 @@ struct UnkStruct_0200D748 *sub_02070C24(UnkStruct_0200CF18 *r6, void *sp18, void
|
|||
r7 = 2;
|
||||
}
|
||||
narc_r4 = NARC_New(sp24.narcId, heapId);
|
||||
sub_0200D504(r6, sp18, narc_r4, sp24.ncgr_id, 0, 1, r5 + 0x4E2F);
|
||||
sub_0200D68C(sp1C, 2, r6, sp18, narc_r4, sp24.nclr_id, 0, r7, 1, r5 + 0x4E2A);
|
||||
sub_0200D6EC(r6, sp18, narc_r4, sp24.ncer_id, 0, r5 + 0x4E27);
|
||||
sub_0200D71C(r6, sp18, narc_r4, sp24.nanr_id, 0, r5 + 0x4E27);
|
||||
sub_0200D504(r6, sp18, narc_r4, sp24.ncgr_id, FALSE, 1, r5 + 0x4E2F);
|
||||
sub_0200D68C(sp1C, 2, r6, sp18, narc_r4, sp24.nclr_id, FALSE, r7, 1, r5 + 0x4E2A);
|
||||
sub_0200D6EC(r6, sp18, narc_r4, sp24.ncer_id, FALSE, r5 + 0x4E27);
|
||||
sub_0200D71C(r6, sp18, narc_r4, sp24.nanr_id, FALSE, r5 + 0x4E27);
|
||||
NARC_Delete(narc_r4);
|
||||
sp3C = _020FF588;
|
||||
sp3C.unk_14[0] = r5 + 0x4E2F;
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
#include "global.h"
|
||||
#include "heap.h"
|
||||
#include "gf_gfx_loader.h"
|
||||
#include "palette.h"
|
||||
#include "unk_02009D48.h"
|
||||
#include "unk_020215A0.h"
|
||||
#include "unk_02022588.h"
|
||||
|
|
@ -18,6 +19,9 @@ void sub_0200D0B4(UnkStruct_0200CF18* a0);
|
|||
void sub_0200D0D4(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1);
|
||||
BOOL sub_0200D124(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, const u16* a2, int a3, int a4);
|
||||
Sprite* sub_0200D2F0(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, int a2, s16 x, s16 y, s16 z, u16 animSeqNo, int rotation, int a8, int whichScreen, int a10, int a11, int a12, int a13);
|
||||
void sub_0200DAE4(struct _2DGfxResObjList* list, _2DGfxResObj* obj);
|
||||
BOOL sub_0200DA04(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, NarcId narcId, int fileId, BOOL compressed, int a6, int resId);
|
||||
BOOL sub_0200DA74(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, NARC* narc, int fileId, BOOL compressed, int a6, int resId);
|
||||
|
||||
UnkStruct_0200CF18* sub_0200CF18(HeapID heapId) {
|
||||
UnkStruct_0200CF18* ret = AllocFromHeap(heapId, sizeof(UnkStruct_0200CF18));
|
||||
|
|
@ -37,8 +41,8 @@ UnkStruct_0200CF38* sub_0200CF38(UnkStruct_0200CF18* a0) {
|
|||
return NULL;
|
||||
}
|
||||
++a0->unk_004;
|
||||
for (int i = 0; i < 6; ++i) {
|
||||
ret->unk_0C[i] = NULL;
|
||||
for (int i = 0; i < GF_GFX_RES_TYPE_MAX; ++i) {
|
||||
ret->_2dGfxResMan[i] = NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -99,21 +103,21 @@ void sub_0200D044(UnkStruct_0200CF38* a0) {
|
|||
}
|
||||
|
||||
void sub_0200D050(UnkStruct_0200CF38* a0) {
|
||||
if (a0->unk_04 != NULL) {
|
||||
sub_02009F24(a0->unk_04);
|
||||
if (a0->listOfUnkStruct_9D48 != NULL) {
|
||||
sub_02009F24(a0->listOfUnkStruct_9D48);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0200D060(UnkStruct_0200CF38* a0) {
|
||||
for (int i = 0; i < a0->unk_54; ++i) {
|
||||
sub_0200A954(sub_0200A900(a0->unk_08, i));
|
||||
sub_0200A954(sub_0200A900(a0->_2dGfxResHeader, i));
|
||||
}
|
||||
FreeToHeap(a0->unk_08);
|
||||
sub_0200AED4(a0->unk_24[0]);
|
||||
sub_0200B0CC(a0->unk_24[1]);
|
||||
FreeToHeap(a0->_2dGfxResHeader);
|
||||
sub_0200AED4(a0->_2dGfxResObjList[0]);
|
||||
sub_0200B0CC(a0->_2dGfxResObjList[1]);
|
||||
for (int i = 0; i < a0->unk_54; ++i) {
|
||||
Delete2DGfxResObjList(a0->unk_24[i]);
|
||||
Destroy2DGfxResObjMan(a0->unk_0C[i]);
|
||||
Delete2DGfxResObjList(a0->_2dGfxResObjList[i]);
|
||||
Destroy2DGfxResObjMan(a0->_2dGfxResMan[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -152,59 +156,59 @@ BOOL sub_0200D124(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, const u16* a2,
|
|||
void* data;
|
||||
NARC* narc;
|
||||
|
||||
r7 = 6;
|
||||
r7 = GF_GFX_RES_TYPE_MAX;
|
||||
|
||||
if (a0 == NULL || a1 == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
if (a2[4] == 0xFFFF) {
|
||||
r7 = 4;
|
||||
if (a2[GF_GFX_RES_TYPE_MCEL] == 0xFFFF) {
|
||||
r7 = GF_GFX_RES_TYPE_MAX - 2;
|
||||
}
|
||||
a1->unk_54 = r7;
|
||||
size = sub_0200A8FC();
|
||||
a1->unk_08 = AllocFromHeap(a0->heapId, size * r7);
|
||||
a1->_2dGfxResHeader = 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);
|
||||
header = sub_0200A900(a1->_2dGfxResHeader, 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);
|
||||
header = sub_0200A900(a1->_2dGfxResHeader, i);
|
||||
size = sub_0200A96C(header);
|
||||
a1->unk_0C[i] = Create2DGfxResObjMan(size, (GfGfxResType)i, a0->heapId);
|
||||
a1->_2dGfxResMan[i] = Create2DGfxResObjMan(size, (GfGfxResType)i, a0->heapId);
|
||||
}
|
||||
for (i = 0; i < r7; ++i) {
|
||||
header = sub_0200A900(a1->unk_08, i);
|
||||
header = sub_0200A900(a1->_2dGfxResHeader, 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);
|
||||
a1->_2dGfxResObjList[i] = Create2DGfxResObjList(size, a0->heapId);
|
||||
a1->unk_3C[i] = LoadAll2DGfxResObjsFromHeader(a1->_2dGfxResMan[i], header, a1->_2dGfxResObjList[i], a0->heapId);
|
||||
}
|
||||
switch (a3) {
|
||||
case 0:
|
||||
sub_0200ADE4(a1->unk_24[0]);
|
||||
sub_0200ADE4(a1->_2dGfxResObjList[GF_GFX_RES_TYPE_CHAR]);
|
||||
break;
|
||||
case 1:
|
||||
sub_0200AE58(a1->unk_24[0]);
|
||||
sub_0200AE58(a1->_2dGfxResObjList[GF_GFX_RES_TYPE_CHAR]);
|
||||
break;
|
||||
case 2:
|
||||
default:
|
||||
sub_0200AD30(a1->unk_24[0]);
|
||||
sub_0200AD30(a1->_2dGfxResObjList[GF_GFX_RES_TYPE_CHAR]);
|
||||
break;
|
||||
}
|
||||
switch (a4) {
|
||||
case 0:
|
||||
sub_0200B050(a1->unk_24[1]);
|
||||
sub_0200B050(a1->_2dGfxResObjList[1]);
|
||||
break;
|
||||
case 1:
|
||||
default:
|
||||
sub_0200AFD8(a1->unk_24[1]);
|
||||
sub_0200AFD8(a1->_2dGfxResObjList[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]);
|
||||
a1->listOfUnkStruct_9D48 = sub_02009E84(data, a0->heapId, a1->_2dGfxResMan[0], a1->_2dGfxResMan[1], a1->_2dGfxResMan[2], a1->_2dGfxResMan[3], a1->_2dGfxResMan[4], a1->_2dGfxResMan[5]);
|
||||
FreeToHeap(data);
|
||||
NARC_Delete(narc);
|
||||
return TRUE;
|
||||
|
|
@ -227,7 +231,7 @@ Sprite* sub_0200D2F0(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, int headerI
|
|||
SpriteTemplate template;
|
||||
|
||||
template.spriteList = a1->spriteList;
|
||||
template.header = &a1->unk_04->headers[headerIndex];
|
||||
template.header = &a1->listOfUnkStruct_9D48->headers[headerIndex];
|
||||
|
||||
template.position.x = FX32_CONST(x);
|
||||
template.position.y = FX32_CONST(y);
|
||||
|
|
@ -259,3 +263,122 @@ Sprite* sub_0200D2F0(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, int headerI
|
|||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
BOOL sub_0200D3F8(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, Unk122_021E92E4* a2) {
|
||||
int i, j;
|
||||
int sp4 = GF_GFX_RES_TYPE_MAX;
|
||||
int num;
|
||||
|
||||
if (a0 == NULL || a1 == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
if (a2->unk0[GF_GFX_RES_TYPE_MCEL] == 0 || a2->unk0[GF_GFX_RES_TYPE_MANM] == 0) {
|
||||
sp4 = GF_GFX_RES_TYPE_MAX - 2;
|
||||
}
|
||||
a1->unk_54 = sp4;
|
||||
|
||||
for (i = 0; i < sp4; ++i) {
|
||||
a1->_2dGfxResMan[i] = Create2DGfxResObjMan(a2->unk0[i], (GfGfxResType)i, a0->heapId);
|
||||
}
|
||||
|
||||
for (i = 0; i < sp4; ++i) {
|
||||
num = a2->unk0[i];
|
||||
if (num == 0) {
|
||||
continue;
|
||||
}
|
||||
a1->_2dGfxResObjList[i] = Create2DGfxResObjList(num, a0->heapId);
|
||||
a1->unk_3C[i] = 0;
|
||||
for (j = 0; j < a1->_2dGfxResObjList[i]->max; ++j) {
|
||||
a1->_2dGfxResObjList[i]->obj[j] = NULL;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL sub_0200D4A4(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, NarcId narcId, int fileId, BOOL compressed, int vram, int resId) {
|
||||
if (!_2DGfxResObjExistsById(a1->_2dGfxResMan[GF_GFX_RES_TYPE_CHAR], resId)) {
|
||||
return FALSE;
|
||||
}
|
||||
_2DGfxResObj* obj = AddCharResObjFromNarc(a1->_2dGfxResMan[GF_GFX_RES_TYPE_CHAR], narcId, fileId, compressed, resId, vram, a0->heapId);
|
||||
if (obj != NULL) {
|
||||
sub_0200ADA4(obj);
|
||||
sub_0200DAE4(a1->_2dGfxResObjList[GF_GFX_RES_TYPE_CHAR], obj);
|
||||
return TRUE;
|
||||
}
|
||||
GF_ASSERT(0);
|
||||
return obj != NULL;
|
||||
}
|
||||
|
||||
BOOL sub_0200D504(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, NARC* narc, int fileId, BOOL compressed, int vram, int resId) {
|
||||
if (!_2DGfxResObjExistsById(a1->_2dGfxResMan[GF_GFX_RES_TYPE_CHAR], resId)) {
|
||||
return FALSE;
|
||||
}
|
||||
_2DGfxResObj* obj = AddCharResObjFromOpenNarc(a1->_2dGfxResMan[GF_GFX_RES_TYPE_CHAR], narc, fileId, compressed, resId, vram, a0->heapId);
|
||||
if (obj != NULL) {
|
||||
sub_0200ADA4(obj);
|
||||
sub_0200DAE4(a1->_2dGfxResObjList[GF_GFX_RES_TYPE_CHAR], obj);
|
||||
return TRUE;
|
||||
}
|
||||
GF_ASSERT(0);
|
||||
return obj != NULL;
|
||||
}
|
||||
|
||||
s8 sub_0200D564(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, NarcId narcId, int fileId, BOOL compressed, int pltt_num, int vram, int resId) {
|
||||
if (!_2DGfxResObjExistsById(a1->_2dGfxResMan[GF_GFX_RES_TYPE_PLTT], resId)) {
|
||||
return -1;
|
||||
}
|
||||
_2DGfxResObj* obj = AddPlttResObjFromNarc(a1->_2dGfxResMan[GF_GFX_RES_TYPE_PLTT], narcId, fileId, compressed, resId, vram, pltt_num, a0->heapId);
|
||||
if (obj != NULL) {
|
||||
GF_ASSERT(sub_0200B00C(obj) == TRUE);
|
||||
sub_0200DAE4(a1->_2dGfxResObjList[GF_GFX_RES_TYPE_PLTT], obj);
|
||||
return sub_0200B12C(obj, vram);
|
||||
}
|
||||
GF_ASSERT(0);
|
||||
return -1;
|
||||
}
|
||||
|
||||
s8 sub_0200D5D4(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, NARC* narc, int fileId, BOOL compressed, int pltt_num, int vram, int resId) {
|
||||
if (!_2DGfxResObjExistsById(a1->_2dGfxResMan[GF_GFX_RES_TYPE_PLTT], resId)) {
|
||||
return -1;
|
||||
}
|
||||
_2DGfxResObj* obj = AddPlttResObjFromOpenNarc(a1->_2dGfxResMan[GF_GFX_RES_TYPE_PLTT], narc, fileId, compressed, resId, vram, pltt_num, a0->heapId);
|
||||
if (obj != NULL) {
|
||||
GF_ASSERT(sub_0200B00C(obj) == TRUE);
|
||||
sub_0200DAE4(a1->_2dGfxResObjList[GF_GFX_RES_TYPE_PLTT], obj);
|
||||
return sub_0200B12C(obj, vram);
|
||||
}
|
||||
GF_ASSERT(0);
|
||||
return -1;
|
||||
}
|
||||
|
||||
u8 sub_0200D644(PaletteData* a0, u32 bufferId, UnkStruct_0200CF18* a2, UnkStruct_0200CF38* a3, NarcId narcId, int fileId, BOOL compressed, int pltt_num, int vram, int resId) {
|
||||
int ret = sub_0200D564(a2, a3, narcId, fileId, compressed, pltt_num, vram, resId);
|
||||
if (ret != -1) {
|
||||
sub_020032A4(a0, bufferId, ret * 16, pltt_num * 32);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
u8 sub_0200D68C(PaletteData* a0, u32 bufferId, UnkStruct_0200CF18* a2, UnkStruct_0200CF38* a3, NARC* narc, int fileId, BOOL compressed, int pltt_num, int vram, int resId) {
|
||||
int ret = sub_0200D5D4(a2, a3, narc, fileId, compressed, pltt_num, vram, resId);
|
||||
if (ret != -1) {
|
||||
sub_020032A4(a0, bufferId, ret * 16, pltt_num * 32);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
BOOL sub_0200D6D4(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, NarcId narcId, int fileId, BOOL compressed, int resId) {
|
||||
return sub_0200DA04(a0, a1, narcId, fileId, compressed, 2, resId);
|
||||
}
|
||||
|
||||
BOOL sub_0200D6EC(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, NARC* narc, int fileId, BOOL compressed, int resId) {
|
||||
return sub_0200DA74(a0, a1, narc, fileId, compressed, 2, resId);
|
||||
}
|
||||
|
||||
BOOL sub_0200D704(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, NarcId narcId, int fileId, BOOL compressed, int resId) {
|
||||
return sub_0200DA04(a0, a1, narcId, fileId, compressed, 3, resId);
|
||||
}
|
||||
|
||||
BOOL sub_0200D71C(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, NARC* narc, int fileId, BOOL compressed, int resId) {
|
||||
return sub_0200DA74(a0, a1, narc, fileId, compressed, 3, resId);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user