through sub_0200DBB8

This commit is contained in:
PikalaxALT 2023-08-29 21:10:06 -04:00
parent 39d80d77d7
commit acc4b1b103
No known key found for this signature in database
GPG Key ID: EA3BF6EC343F2308
8 changed files with 158 additions and 426 deletions

View File

@ -220,3 +220,5 @@
.public sub_0200D0B4
.public sub_0200D0D4
.public sub_0200D124
.public sub_0200DB64
.public sub_0200DAE4

View File

@ -4,417 +4,6 @@
.text
thumb_func_start sub_0200D934
sub_0200D934: ; 0x0200D934
push {r3, lr}
ldr r0, [r0, #0x10]
bl Get2DGfxResObjById
mov r1, #0
bl sub_0200B0F8
pop {r3, pc}
thumb_func_end sub_0200D934
thumb_func_start sub_0200D944
sub_0200D944: ; 0x0200D944
push {r4, lr}
ldr r0, [r0, #0x10]
add r4, r2, #0
bl Get2DGfxResObjById
add r1, r4, #0
bl sub_0200B12C
pop {r4, pc}
.balign 4, 0
thumb_func_end sub_0200D944
thumb_func_start sub_0200D958
sub_0200D958: ; 0x0200D958
add r3, r0, #0
add r2, r1, #0
ldr r0, [r3, #0xc]
ldr r1, [r3, #0x24]
ldr r3, _0200D964 ; =sub_0200DB64
bx r3
.balign 4, 0
_0200D964: .word sub_0200DB64
thumb_func_end sub_0200D958
thumb_func_start sub_0200D968
sub_0200D968: ; 0x0200D968
add r3, r0, #0
add r2, r1, #0
ldr r0, [r3, #0x10]
ldr r1, [r3, #0x28]
ldr r3, _0200D974 ; =sub_0200DBB8
bx r3
.balign 4, 0
_0200D974: .word sub_0200DBB8
thumb_func_end sub_0200D968
thumb_func_start sub_0200D978
sub_0200D978: ; 0x0200D978
add r3, r0, #0
add r2, r1, #0
ldr r0, [r3, #0x14]
ldr r1, [r3, #0x2c]
ldr r3, _0200D984 ; =sub_0200DB18
bx r3
.balign 4, 0
_0200D984: .word sub_0200DB18
thumb_func_end sub_0200D978
thumb_func_start sub_0200D988
sub_0200D988: ; 0x0200D988
add r3, r0, #0
add r2, r1, #0
ldr r0, [r3, #0x18]
ldr r1, [r3, #0x30]
ldr r3, _0200D994 ; =sub_0200DB18
bx r3
.balign 4, 0
_0200D994: .word sub_0200DB18
thumb_func_end sub_0200D988
thumb_func_start sub_0200D998
sub_0200D998: ; 0x0200D998
push {r3, r4, r5, r6, r7, lr}
add r6, r1, #0
add r7, r0, #0
add r0, r6, #0
bl sub_0200D044
ldr r0, [r6, #0x24]
bl sub_0200AED4
ldr r0, [r6, #0x28]
bl sub_0200B0CC
ldr r0, [r6, #0x54]
mov r4, #0
cmp r0, #0
ble _0200D9D0
add r5, r6, #0
_0200D9BA:
ldr r0, [r5, #0x24]
bl Delete2DGfxResObjList
ldr r0, [r5, #0xc]
bl Destroy2DGfxResObjMan
ldr r0, [r6, #0x54]
add r4, r4, #1
add r5, r5, #4
cmp r4, r0
blt _0200D9BA
_0200D9D0:
add r0, r7, #0
add r1, r6, #0
bl sub_0200D0D4
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end sub_0200D998
thumb_func_start sub_0200D9DC
sub_0200D9DC: ; 0x0200D9DC
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0xc]
cmp r0, #0
beq _0200D9EE
ldr r0, [r4, #4]
ldr r0, [r0]
bl sub_0200AF80
_0200D9EE:
ldr r0, [r4]
bl Sprite_Delete
ldr r0, [r4, #8]
bl sub_02009F24
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
.balign 4, 0
thumb_func_end sub_0200D9DC
thumb_func_start sub_0200DA04
sub_0200DA04: ; 0x0200DA04
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r6, r1, #0
add r7, r0, #0
ldr r0, [sp, #0x2c]
add r5, r6, #0
lsl r4, r0, #2
add r5, #0xc
ldr r0, [r5, r4]
ldr r1, [sp, #0x30]
str r2, [sp, #0xc]
str r3, [sp, #0x10]
bl _2DGfxResObjExistsById
cmp r0, #0
bne _0200DA2A
add sp, #0x14
mov r0, #0
pop {r4, r5, r6, r7, pc}
_0200DA2A:
ldr r0, [sp, #0x30]
ldr r1, [sp, #0xc]
str r0, [sp]
ldr r0, [sp, #0x2c]
ldr r2, [sp, #0x10]
str r0, [sp, #4]
ldr r0, [r7]
ldr r3, [sp, #0x28]
str r0, [sp, #8]
ldr r0, [r5, r4]
bl AddCellOrAnimResObjFromNarc
add r5, r0, #0
beq _0200DA60
add r0, r6, r4
ldr r0, [r0, #0x24]
add r1, r5, #0
bl sub_0200DAE4
add r4, r0, #0
cmp r4, #1
beq _0200DA5A
bl GF_AssertFail
_0200DA5A:
add sp, #0x14
add r0, r4, #0
pop {r4, r5, r6, r7, pc}
_0200DA60:
bl GF_AssertFail
cmp r5, #0
beq _0200DA6E
add sp, #0x14
mov r0, #1
pop {r4, r5, r6, r7, pc}
_0200DA6E:
mov r0, #0
add sp, #0x14
pop {r4, r5, r6, r7, pc}
thumb_func_end sub_0200DA04
thumb_func_start sub_0200DA74
sub_0200DA74: ; 0x0200DA74
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r6, r1, #0
add r7, r0, #0
ldr r0, [sp, #0x2c]
add r5, r6, #0
lsl r4, r0, #2
add r5, #0xc
ldr r0, [r5, r4]
ldr r1, [sp, #0x30]
str r2, [sp, #0xc]
str r3, [sp, #0x10]
bl _2DGfxResObjExistsById
cmp r0, #0
bne _0200DA9A
add sp, #0x14
mov r0, #0
pop {r4, r5, r6, r7, pc}
_0200DA9A:
ldr r0, [sp, #0x30]
ldr r1, [sp, #0xc]
str r0, [sp]
ldr r0, [sp, #0x2c]
ldr r2, [sp, #0x10]
str r0, [sp, #4]
ldr r0, [r7]
ldr r3, [sp, #0x28]
str r0, [sp, #8]
ldr r0, [r5, r4]
bl AddCellOrAnimResObjFromOpenNarc
add r5, r0, #0
beq _0200DAD0
add r0, r6, r4
ldr r0, [r0, #0x24]
add r1, r5, #0
bl sub_0200DAE4
add r4, r0, #0
cmp r4, #1
beq _0200DACA
bl GF_AssertFail
_0200DACA:
add sp, #0x14
add r0, r4, #0
pop {r4, r5, r6, r7, pc}
_0200DAD0:
bl GF_AssertFail
cmp r5, #0
beq _0200DADE
add sp, #0x14
mov r0, #1
pop {r4, r5, r6, r7, pc}
_0200DADE:
mov r0, #0
add sp, #0x14
pop {r4, r5, r6, r7, pc}
thumb_func_end sub_0200DA74
thumb_func_start sub_0200DAE4
sub_0200DAE4: ; 0x0200DAE4
push {r3, r4, r5, r6}
ldr r6, [r0, #4]
mov r3, #0
cmp r6, #0
ble _0200DB10
ldr r5, [r0]
add r4, r5, #0
_0200DAF2:
ldr r2, [r4]
cmp r2, #0
bne _0200DB08
lsl r2, r3, #2
str r1, [r5, r2]
ldr r1, [r0, #8]
add r1, r1, #1
str r1, [r0, #8]
mov r0, #1
pop {r3, r4, r5, r6}
bx lr
_0200DB08:
add r3, r3, #1
add r4, r4, #4
cmp r3, r6
blt _0200DAF2
_0200DB10:
mov r0, #0
pop {r3, r4, r5, r6}
bx lr
.balign 4, 0
thumb_func_end sub_0200DAE4
thumb_func_start sub_0200DB18
sub_0200DB18: ; 0x0200DB18
push {r3, r4, r5, r6, r7, lr}
add r5, r1, #0
str r0, [sp]
ldr r0, [r5, #4]
add r7, r2, #0
mov r6, #0
cmp r0, #0
ble _0200DB60
add r4, r6, #0
_0200DB2A:
ldr r0, [r5]
ldr r0, [r0, r4]
cmp r0, #0
beq _0200DB56
bl sub_0200A7FC
cmp r0, r7
bne _0200DB56
ldr r1, [r5]
lsl r4, r6, #2
ldr r0, [sp]
ldr r1, [r1, r4]
bl DestroySingle2DGfxResObj
ldr r0, [r5]
mov r1, #0
str r1, [r0, r4]
ldr r0, [r5, #8]
sub r0, r0, #1
str r0, [r5, #8]
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_0200DB56:
ldr r0, [r5, #4]
add r6, r6, #1
add r4, r4, #4
cmp r6, r0
blt _0200DB2A
_0200DB60:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end sub_0200DB18
thumb_func_start sub_0200DB64
sub_0200DB64: ; 0x0200DB64
push {r3, r4, r5, r6, r7, lr}
add r5, r1, #0
str r0, [sp]
ldr r0, [r5, #4]
add r7, r2, #0
mov r6, #0
cmp r0, #0
ble _0200DBB2
add r4, r6, #0
_0200DB76:
ldr r0, [r5]
ldr r0, [r0, r4]
cmp r0, #0
beq _0200DBA8
bl sub_0200A7FC
cmp r0, r7
bne _0200DBA8
add r0, r7, #0
bl sub_02021884
ldr r1, [r5]
lsl r4, r6, #2
ldr r0, [sp]
ldr r1, [r1, r4]
bl DestroySingle2DGfxResObj
ldr r0, [r5]
mov r1, #0
str r1, [r0, r4]
ldr r0, [r5, #8]
sub r0, r0, #1
str r0, [r5, #8]
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_0200DBA8:
ldr r0, [r5, #4]
add r6, r6, #1
add r4, r4, #4
cmp r6, r0
blt _0200DB76
_0200DBB2:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end sub_0200DB64
thumb_func_start sub_0200DBB8
sub_0200DBB8: ; 0x0200DBB8
push {r3, r4, r5, r6, r7, lr}
add r5, r1, #0
str r0, [sp]
ldr r0, [r5, #4]
add r7, r2, #0
mov r6, #0
cmp r0, #0
ble _0200DC06
add r4, r6, #0
_0200DBCA:
ldr r0, [r5]
ldr r0, [r0, r4]
cmp r0, #0
beq _0200DBFC
bl sub_0200A7FC
cmp r0, r7
bne _0200DBFC
add r0, r7, #0
bl sub_02022744
ldr r1, [r5]
lsl r4, r6, #2
ldr r0, [sp]
ldr r1, [r1, r4]
bl DestroySingle2DGfxResObj
ldr r0, [r5]
mov r1, #0
str r1, [r0, r4]
ldr r0, [r5, #8]
sub r0, r0, #1
str r0, [r5, #8]
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_0200DBFC:
ldr r0, [r5, #4]
add r6, r6, #1
add r4, r4, #4
cmp r6, r0
blt _0200DBCA
_0200DC06:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end sub_0200DBB8
thumb_func_start sub_0200DC0C
sub_0200DC0C: ; 0x0200DC0C
ldr r3, _0200DC14 ; =sub_020249B0

View File

@ -76,11 +76,11 @@ struct _2DGfxResHeader {
u8 isNarc;
};
struct _2DGfxResObjList {
typedef struct _2DGfxResObjList {
struct _2DGfxResObj **obj;
int max;
int num;
};
} _2DGfxResObjList;
struct _2DGfxResMan *Create2DGfxResObjMan(int num, GfGfxResType type, HeapID heapId);
void Destroy2DGfxResObjMan(struct _2DGfxResMan *mgr);

View File

@ -12,6 +12,7 @@ void sub_0200AEB0(struct _2DGfxResObj *charResObj);
void sub_0200AED4(struct _2DGfxResObjList *charResObjList);
NNSG2dImageProxy *sub_0200AF00(struct _2DGfxResObj *charResObj);
NNSG2dImageProxy *sub_0200AF24(struct _2DGfxResObj *charResObj, struct _2DGfxResObj *cellResObj);
void sub_0200AF80(const NNSG2dImageProxy* imgProxy);
void sub_0200AF94(struct _2DGfxResObj *obj);
void sub_0200AFD8(struct _2DGfxResObjList *plttResObjList);
BOOL sub_0200B00C(struct _2DGfxResObj *plttResObj);

View File

@ -107,10 +107,12 @@ BOOL sub_0200D704(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, NarcId narcId,
BOOL sub_0200D71C(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, NARC* narc, int fileId, BOOL compressed, int resId);
UnkImageStruct* sub_0200D734(UnkStruct_0200CF18*, UnkStruct_0200CF38*, struct UnkTemplate_0200D748*);
UnkImageStruct* sub_0200D740(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, UnkTemplate_0200D748* a2, u32 a3);
void sub_0200D958(void* a0, u32 character);
void sub_0200D968(void* a0, u32 pal);
void sub_0200D978(void* a0, u32 cell);
void sub_0200D988(void* a0, u32 animation);
NNSG2dImagePaletteProxy* sub_0200D934(UnkStruct_0200CF38* a0, int id);
int sub_0200D944(UnkStruct_0200CF38* a0, int id, int vram);
BOOL sub_0200D958(UnkStruct_0200CF38* a0, u32 character);
BOOL sub_0200D968(UnkStruct_0200CF38* a0, u32 pal);
BOOL sub_0200D978(UnkStruct_0200CF38* a0, u32 cell);
BOOL sub_0200D988(UnkStruct_0200CF38* a0, u32 animation);
void sub_0200D998(UnkStruct_0200CF18*, UnkStruct_0200CF38*);
void sub_0200D9DC(UnkImageStruct*);
void sub_0200DC18(UnkImageStruct*);

View File

@ -10,10 +10,11 @@ typedef struct UnkStruct_020215A0 {
HeapID heapId;
} UnkStruct_020215A0;
void sub_020216F4(u32, u32, u32);
void sub_020215A0(UnkStruct_020215A0 *a0);
void sub_020215C0(UnkStruct_020215A0 *a0, int a1, int a2);
void sub_0202168C(void);
void sub_020216C8(void);
void sub_020215A0(UnkStruct_020215A0 *a0);
void sub_020216F4(u32, u32, u32);
void sub_02021884(u32);
#endif //POKEHEARTGOLD_UNK_020215A0_H

View File

@ -7,5 +7,6 @@ void sub_02022588(int, HeapID);
void sub_02022608(void);
void sub_02022638(void);
void sub_020225E4(u32, u32);
void sub_02022744(u32);
#endif //POKEHEARTGOLD_UNK_02022588_H

View File

@ -19,10 +19,13 @@ 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);
UnkImageStruct* sub_0200D748(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, UnkTemplate_0200D748* a2, u32 a3);
BOOL sub_0200DA04(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, NarcId narcId, int fileId, BOOL compressed, GfGfxResType a6, int resId);
BOOL sub_0200DA74(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, NARC* narc, int fileId, BOOL compressed, GfGfxResType a6, int resId);
BOOL sub_0200DAE4(_2DGfxResObjList* list, _2DGfxResObj* obj);
BOOL sub_0200DB64(_2DGfxResMan* manager, _2DGfxResObjList* list, u32 charId);
BOOL sub_0200DBB8(_2DGfxResMan* manager, _2DGfxResObjList* list, u32 plttId);
BOOL sub_0200DB18(_2DGfxResMan* manager, _2DGfxResObjList* list, u32 cellOrAnimId);
UnkStruct_0200CF18* sub_0200CF18(HeapID heapId) {
UnkStruct_0200CF18* ret = AllocFromHeap(heapId, sizeof(UnkStruct_0200CF18));
@ -369,19 +372,19 @@ u8 sub_0200D68C(PaletteData* a0, u32 bufferId, UnkStruct_0200CF18* a2, UnkStruct
}
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);
return sub_0200DA04(a0, a1, narcId, fileId, compressed, GF_GFX_RES_TYPE_CELL, 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);
return sub_0200DA74(a0, a1, narc, fileId, compressed, GF_GFX_RES_TYPE_CELL, 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);
return sub_0200DA04(a0, a1, narcId, fileId, compressed, GF_GFX_RES_TYPE_ANIM, 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);
return sub_0200DA74(a0, a1, narc, fileId, compressed, GF_GFX_RES_TYPE_ANIM, resId);
}
UnkImageStruct* sub_0200D734(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, UnkTemplate_0200D748* a2) {
@ -474,3 +477,136 @@ UnkImageStruct* sub_0200D748(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, Unk
}
return ret;
}
NNSG2dImagePaletteProxy* sub_0200D934(UnkStruct_0200CF38* a0, int id) {
return sub_0200B0F8(Get2DGfxResObjById(a0->_2dGfxResMan[GF_GFX_RES_TYPE_PLTT], id), NULL);
}
int sub_0200D944(UnkStruct_0200CF38* a0, int id, int vram) {
return sub_0200B12C(Get2DGfxResObjById(a0->_2dGfxResMan[GF_GFX_RES_TYPE_PLTT], id), vram);
}
BOOL sub_0200D958(UnkStruct_0200CF38* a0, u32 character) {
return sub_0200DB64(a0->_2dGfxResMan[GF_GFX_RES_TYPE_CHAR], a0->_2dGfxResObjList[GF_GFX_RES_TYPE_CHAR], character);
}
BOOL sub_0200D968(UnkStruct_0200CF38* a0, u32 pal) {
return sub_0200DBB8(a0->_2dGfxResMan[GF_GFX_RES_TYPE_PLTT], a0->_2dGfxResObjList[GF_GFX_RES_TYPE_PLTT], pal);
}
BOOL sub_0200D978(UnkStruct_0200CF38* a0, u32 cell) {
return sub_0200DB18(a0->_2dGfxResMan[GF_GFX_RES_TYPE_CELL], a0->_2dGfxResObjList[GF_GFX_RES_TYPE_CELL], cell);
}
BOOL sub_0200D988(UnkStruct_0200CF38* a0, u32 animation) {
return sub_0200DB18(a0->_2dGfxResMan[GF_GFX_RES_TYPE_ANIM], a0->_2dGfxResObjList[GF_GFX_RES_TYPE_ANIM], animation);
}
void sub_0200D998(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1) {
int i;
sub_0200D044(a1);
sub_0200AED4(a1->_2dGfxResObjList[GF_GFX_RES_TYPE_CHAR]);
sub_0200B0CC(a1->_2dGfxResObjList[GF_GFX_RES_TYPE_PLTT]);
for (i = 0; i < a1->unk_54; ++i) {
Delete2DGfxResObjList(a1->_2dGfxResObjList[i]);
Destroy2DGfxResObjMan(a1->_2dGfxResMan[i]);
}
sub_0200D0D4(a0, a1);
}
void sub_0200D9DC(UnkImageStruct* a0) {
if (a0->vramTransfer) {
sub_0200AF80(a0->unk4->imageProxy);
}
Sprite_Delete(a0->unk0);
sub_02009F24(a0->unk8);
FreeToHeap(a0);
}
BOOL sub_0200DA04(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, NarcId narcId, int fileId, BOOL compressed, GfGfxResType a6, int resId) {
if (!_2DGfxResObjExistsById(a1->_2dGfxResMan[a6], resId)) {
return FALSE;
}
_2DGfxResObj* data = AddCellOrAnimResObjFromNarc(a1->_2dGfxResMan[a6], narcId, fileId, compressed, resId, a6, a0->heapId);
if (data != NULL) {
BOOL result = sub_0200DAE4(a1->_2dGfxResObjList[a6], data);
GF_ASSERT(result == TRUE);
return result;
}
GF_ASSERT(0);
return data != NULL;
}
BOOL sub_0200DA74(UnkStruct_0200CF18* a0, UnkStruct_0200CF38* a1, NARC* narc, int fileId, BOOL compressed, GfGfxResType a6, int resId) {
if (!_2DGfxResObjExistsById(a1->_2dGfxResMan[a6], resId)) {
return FALSE;
}
_2DGfxResObj* data = AddCellOrAnimResObjFromOpenNarc(a1->_2dGfxResMan[a6], narc, fileId, compressed, resId, a6, a0->heapId);
if (data != NULL) {
BOOL result = sub_0200DAE4(a1->_2dGfxResObjList[a6], data);
GF_ASSERT(result == TRUE);
return result;
}
GF_ASSERT(0);
return data != NULL;
}
BOOL sub_0200DAE4(_2DGfxResObjList* list, _2DGfxResObj* obj) {
for (int i = 0; i < list->max; ++i) {
if (list->obj[i] == NULL) {
list->obj[i] = obj;
++list->num;
return TRUE;
}
}
return FALSE;
}
BOOL sub_0200DB18(_2DGfxResMan* manager, _2DGfxResObjList* list, u32 cellOrAnimId) {
for (int i = 0; i < list->max; ++i) {
if (list->obj[i] != NULL) {
u32 test_id = sub_0200A7FC(list->obj[i]);
if (test_id == cellOrAnimId) {
DestroySingle2DGfxResObj(manager, list->obj[i]);
list->obj[i] = NULL;
--list->num;
return TRUE;
}
}
}
return FALSE;
}
BOOL sub_0200DB64(_2DGfxResMan* manager, _2DGfxResObjList* list, u32 charId) {
for (int i = 0; i < list->max; ++i) {
if (list->obj[i] != NULL) {
u32 test_id = sub_0200A7FC(list->obj[i]);
if (test_id == charId) {
sub_02021884(charId);
DestroySingle2DGfxResObj(manager, list->obj[i]);
list->obj[i] = NULL;
--list->num;
return TRUE;
}
}
}
return FALSE;
}
BOOL sub_0200DBB8(_2DGfxResMan* manager, _2DGfxResObjList* list, u32 plttId) {
for (int i = 0; i < list->max; ++i) {
if (list->obj[i] != NULL) {
u32 test_id = sub_0200A7FC(list->obj[i]);
if (test_id == plttId) {
sub_02022744(plttId);
DestroySingle2DGfxResObj(manager, list->obj[i]);
list->obj[i] = NULL;
--list->num;
return TRUE;
}
}
}
return FALSE;
}