Match unk_0200A328.c

This commit is contained in:
Nomura 2022-12-28 18:34:40 +01:00
parent 71033fbf88
commit 507a4d7b6b
5 changed files with 455 additions and 643 deletions

View File

@ -1,30 +0,0 @@
.public sub_02009E08
.public sub_02009E1C
.public sub_02009E34
.public sub_02009E4C
.public sub_02009EAC
.public sub_02009EBC
.public sub_02009EE8
.public sub_0200A328
.public sub_0200A3DC
.public sub_0200A4E4
.public sub_0200A5C8
.public sub_0200A640
.public sub_0200A6DC
.public sub_0200A72C
.public sub_0201EA24
.public sub_0201EA7C
.public sub_0201EB08
.public sub_0201EB50
.public sub_0201EBDC
.public sub_0201EC00
.public sub_0201EC84
.public sub_0201ED1C
.public sub_0201F90C
.public sub_0201F950
.public sub_0201F990
.public sub_0201F9F0
.public sub_0201FA58
.public sub_0201FA80
.public GF_AssertFail
.public NNS_G2dGetImagePaletteLocation

View File

@ -1,600 +0,0 @@
.include "macros/function.inc"
.include "include/unk_0200A328.inc"
.text
thumb_func_start sub_0200A328
sub_0200A328: ; 0x0200A328
push {r4, lr}
sub sp, #0x10
add r4, r0, #0
bne _0200A334
bl GF_AssertFail
_0200A334:
add r0, r4, #0
bl sub_02009EAC
cmp r0, #0
beq _0200A342
bl GF_AssertFail
_0200A342:
add r0, r4, #0
bl sub_02009E1C
str r0, [sp]
add r0, r4, #0
bl sub_02009EBC
str r0, [sp, #4]
add r0, r4, #0
bl sub_02009E08
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
add r0, sp, #0
bl sub_0201EA24
add sp, #0x10
pop {r4, pc}
thumb_func_end sub_0200A328
thumb_func_start sub_0200A368
sub_0200A368: ; 0x0200A368
push {r4, r5, r6, lr}
add r5, r0, #0
bne _0200A372
bl GF_AssertFail
_0200A372:
ldr r0, [r5, #4]
mov r6, #0
cmp r0, #0
ble _0200A39A
add r4, r6, #0
_0200A37C:
ldr r0, [r5, #0]
ldr r0, [r0, r4]
cmp r0, #0
beq _0200A390
bl sub_0200A328
cmp r0, #0
bne _0200A390
bl GF_AssertFail
_0200A390:
ldr r0, [r5, #4]
add r6, r6, #1
add r4, r4, #4
cmp r6, r0
blt _0200A37C
_0200A39A:
pop {r4, r5, r6, pc}
thumb_func_end sub_0200A368
thumb_func_start sub_0200A39C
sub_0200A39C: ; 0x0200A39C
push {r4, lr}
sub sp, #0x10
add r4, r0, #0
bne _0200A3A8
bl GF_AssertFail
_0200A3A8:
add r0, r4, #0
bl sub_02009EAC
cmp r0, #0
beq _0200A3B6
bl GF_AssertFail
_0200A3B6:
add r0, r4, #0
bl sub_02009E1C
str r0, [sp]
add r0, r4, #0
bl sub_02009EBC
str r0, [sp, #4]
add r0, r4, #0
bl sub_02009E08
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
add r0, sp, #0
bl sub_0201EA7C
add sp, #0x10
pop {r4, pc}
thumb_func_end sub_0200A39C
thumb_func_start sub_0200A3DC
sub_0200A3DC: ; 0x0200A3DC
push {r4, lr}
sub sp, #0x10
add r4, r0, #0
bne _0200A3E8
bl GF_AssertFail
_0200A3E8:
add r0, r4, #0
bl sub_02009EAC
cmp r0, #0
beq _0200A3F6
bl GF_AssertFail
_0200A3F6:
add r0, r4, #0
bl sub_02009E1C
str r0, [sp]
add r0, r4, #0
bl sub_02009EBC
str r0, [sp, #4]
add r0, r4, #0
bl sub_02009E08
str r0, [sp, #8]
mov r0, #1
str r0, [sp, #0xc]
add r0, sp, #0
bl sub_0201EA24
add sp, #0x10
pop {r4, pc}
thumb_func_end sub_0200A3DC
thumb_func_start sub_0200A41C
sub_0200A41C: ; 0x0200A41C
push {r4, r5, r6, lr}
add r5, r0, #0
bne _0200A426
bl GF_AssertFail
_0200A426:
ldr r0, [r5, #4]
mov r6, #0
cmp r0, #0
ble _0200A44E
add r4, r6, #0
_0200A430:
ldr r0, [r5, #0]
ldr r0, [r0, r4]
cmp r0, #0
beq _0200A444
bl sub_0200A3DC
cmp r0, #0
bne _0200A444
bl GF_AssertFail
_0200A444:
ldr r0, [r5, #4]
add r6, r6, #1
add r4, r4, #4
cmp r6, r0
blt _0200A430
_0200A44E:
pop {r4, r5, r6, pc}
thumb_func_end sub_0200A41C
thumb_func_start sub_0200A450
sub_0200A450: ; 0x0200A450
push {r4, lr}
sub sp, #0x10
add r4, r0, #0
bne _0200A45C
bl GF_AssertFail
_0200A45C:
add r0, r4, #0
bl sub_02009EAC
cmp r0, #0
beq _0200A46A
bl GF_AssertFail
_0200A46A:
add r0, r4, #0
bl sub_02009E1C
str r0, [sp]
add r0, r4, #0
bl sub_02009EBC
str r0, [sp, #4]
add r0, r4, #0
bl sub_02009E08
str r0, [sp, #8]
mov r0, #1
str r0, [sp, #0xc]
add r0, sp, #0
bl sub_0201EA7C
add sp, #0x10
pop {r4, pc}
thumb_func_end sub_0200A450
thumb_func_start sub_0200A490
sub_0200A490: ; 0x0200A490
push {r3, r4, r5, lr}
add r4, r0, #0
add r5, r1, #0
cmp r4, #0
bne _0200A49E
bl GF_AssertFail
_0200A49E:
cmp r5, #0
bne _0200A4A6
bl GF_AssertFail
_0200A4A6:
add r0, r4, #0
bl sub_02009E08
add r4, r0, #0
add r0, r5, #0
bl sub_02009E1C
add r1, r0, #0
add r0, r4, #0
bl sub_0201EB08
pop {r3, r4, r5, pc}
; .align 2, 0
thumb_func_end sub_0200A490
thumb_func_start sub_0200A4C0
sub_0200A4C0: ; 0x0200A4C0
push {r3, r4, r5, lr}
add r5, r0, #0
bne _0200A4CA
bl GF_AssertFail
_0200A4CA:
add r0, r5, #0
bl sub_02009E08
add r4, r0, #0
add r0, r5, #0
bl sub_02009E1C
add r1, r0, #0
add r0, r4, #0
bl sub_0201EB08
pop {r3, r4, r5, pc}
; .align 2, 0
thumb_func_end sub_0200A4C0
thumb_func_start sub_0200A4E4
sub_0200A4E4: ; 0x0200A4E4
push {r4, lr}
add r4, r0, #0
bne _0200A4EE
bl GF_AssertFail
_0200A4EE:
add r0, r4, #0
bl sub_02009EAC
cmp r0, #0
beq _0200A4FC
bl GF_AssertFail
_0200A4FC:
add r0, r4, #0
bl sub_02009E08
bl sub_0201EB50
pop {r4, pc}
thumb_func_end sub_0200A4E4
thumb_func_start sub_0200A508
sub_0200A508: ; 0x0200A508
push {r4, r5, r6, lr}
add r5, r0, #0
bne _0200A512
bl GF_AssertFail
_0200A512:
ldr r0, [r5, #4]
mov r6, #0
cmp r0, #0
ble _0200A532
add r4, r6, #0
_0200A51C:
ldr r0, [r5, #0]
ldr r0, [r0, r4]
cmp r0, #0
beq _0200A528
bl sub_0200A4E4
_0200A528:
ldr r0, [r5, #4]
add r6, r6, #1
add r4, r4, #4
cmp r6, r0
blt _0200A51C
_0200A532:
pop {r4, r5, r6, pc}
thumb_func_end sub_0200A508
thumb_func_start sub_0200A534
sub_0200A534: ; 0x0200A534
push {r4, lr}
add r4, r0, #0
bne _0200A53E
bl GF_AssertFail
_0200A53E:
add r0, r4, #0
bl sub_02009EAC
cmp r0, #0
beq _0200A54C
bl GF_AssertFail
_0200A54C:
add r0, r4, #0
bl sub_02009E08
bl sub_0201EBDC
pop {r4, pc}
thumb_func_end sub_0200A534
thumb_func_start sub_0200A558
sub_0200A558: ; 0x0200A558
push {r3, r4, r5, lr}
add r4, r0, #0
add r5, r1, #0
cmp r4, #0
bne _0200A566
bl GF_AssertFail
_0200A566:
add r0, r4, #0
bl sub_02009EAC
cmp r0, #0
beq _0200A574
bl GF_AssertFail
_0200A574:
cmp r5, #0
bne _0200A57C
bl GF_AssertFail
_0200A57C:
add r0, r5, #0
bl sub_02009EAC
cmp r0, #2
beq _0200A58A
bl GF_AssertFail
_0200A58A:
add r0, r4, #0
bl sub_02009E08
add r4, r0, #0
add r0, r5, #0
bl sub_02009E4C
add r1, r0, #0
ldr r1, [r1, #0xc]
add r0, r4, #0
ldr r1, [r1, #0]
bl sub_0201EC00
cmp r0, #0
bne _0200A5B2
add r0, r4, #0
bl sub_0201EBDC
bl sub_0201EC84
_0200A5B2:
pop {r3, r4, r5, pc}
thumb_func_end sub_0200A558
thumb_func_start sub_0200A5B4
sub_0200A5B4: ; 0x0200A5B4
push {r4, lr}
add r4, r0, #0
bne _0200A5BE
bl GF_AssertFail
_0200A5BE:
add r0, r4, #0
bl sub_0201ED1C
pop {r4, pc}
; .align 2, 0
thumb_func_end sub_0200A5B4
thumb_func_start sub_0200A5C8
sub_0200A5C8: ; 0x0200A5C8
push {r4, lr}
sub sp, #0x10
add r4, r0, #0
bne _0200A5D4
bl GF_AssertFail
_0200A5D4:
add r0, r4, #0
bl sub_02009EAC
cmp r0, #1
beq _0200A5E2
bl GF_AssertFail
_0200A5E2:
add r0, r4, #0
bl sub_02009E34
str r0, [sp]
add r0, r4, #0
bl sub_02009EBC
str r0, [sp, #4]
add r0, r4, #0
bl sub_02009E08
str r0, [sp, #0xc]
add r0, r4, #0
bl sub_02009EE8
str r0, [sp, #8]
add r0, sp, #0
bl sub_0201F90C
add sp, #0x10
pop {r4, pc}
thumb_func_end sub_0200A5C8
thumb_func_start sub_0200A60C
sub_0200A60C: ; 0x0200A60C
push {r4, r5, r6, lr}
add r5, r0, #0
bne _0200A616
bl GF_AssertFail
_0200A616:
ldr r0, [r5, #4]
mov r6, #0
cmp r0, #0
ble _0200A63E
add r4, r6, #0
_0200A620:
ldr r0, [r5, #0]
ldr r0, [r0, r4]
cmp r0, #0
beq _0200A634
bl sub_0200A5C8
cmp r0, #0
bne _0200A634
bl GF_AssertFail
_0200A634:
ldr r0, [r5, #4]
add r6, r6, #1
add r4, r4, #4
cmp r6, r0
blt _0200A620
_0200A63E:
pop {r4, r5, r6, pc}
thumb_func_end sub_0200A60C
thumb_func_start sub_0200A640
sub_0200A640: ; 0x0200A640
push {r4, lr}
sub sp, #0x10
add r4, r0, #0
bne _0200A64C
bl GF_AssertFail
_0200A64C:
add r0, r4, #0
bl sub_02009EAC
cmp r0, #1
beq _0200A65A
bl GF_AssertFail
_0200A65A:
add r0, r4, #0
bl sub_02009E34
str r0, [sp]
add r0, r4, #0
bl sub_02009EBC
str r0, [sp, #4]
add r0, r4, #0
bl sub_02009E08
str r0, [sp, #0xc]
add r0, r4, #0
bl sub_02009EE8
str r0, [sp, #8]
add r0, sp, #0
bl sub_0201F950
add sp, #0x10
pop {r4, pc}
thumb_func_end sub_0200A640
thumb_func_start sub_0200A684
sub_0200A684: ; 0x0200A684
push {r4, r5, r6, lr}
add r5, r0, #0
bne _0200A68E
bl GF_AssertFail
_0200A68E:
ldr r0, [r5, #4]
mov r6, #0
cmp r0, #0
ble _0200A6B6
add r4, r6, #0
_0200A698:
ldr r0, [r5, #0]
ldr r0, [r0, r4]
cmp r0, #0
beq _0200A6AC
bl sub_0200A640
cmp r0, #0
bne _0200A6AC
bl GF_AssertFail
_0200A6AC:
ldr r0, [r5, #4]
add r6, r6, #1
add r4, r4, #4
cmp r6, r0
blt _0200A698
_0200A6B6:
pop {r4, r5, r6, pc}
thumb_func_end sub_0200A684
thumb_func_start sub_0200A6B8
sub_0200A6B8: ; 0x0200A6B8
push {r3, r4, r5, lr}
add r5, r0, #0
bne _0200A6C2
bl GF_AssertFail
_0200A6C2:
add r0, r5, #0
bl sub_02009E08
add r4, r0, #0
add r0, r5, #0
bl sub_02009E34
add r1, r0, #0
add r0, r4, #0
bl sub_0201F990
pop {r3, r4, r5, pc}
; .align 2, 0
thumb_func_end sub_0200A6B8
thumb_func_start sub_0200A6DC
sub_0200A6DC: ; 0x0200A6DC
push {r4, lr}
add r4, r0, #0
bne _0200A6E6
bl GF_AssertFail
_0200A6E6:
add r0, r4, #0
bl sub_02009EAC
cmp r0, #1
beq _0200A6F4
bl GF_AssertFail
_0200A6F4:
add r0, r4, #0
bl sub_02009E08
bl sub_0201F9F0
pop {r4, pc}
thumb_func_end sub_0200A6DC
thumb_func_start sub_0200A700
sub_0200A700: ; 0x0200A700
push {r4, r5, r6, lr}
add r5, r0, #0
bne _0200A70A
bl GF_AssertFail
_0200A70A:
ldr r0, [r5, #4]
mov r6, #0
cmp r0, #0
ble _0200A72A
add r4, r6, #0
_0200A714:
ldr r0, [r5, #0]
ldr r0, [r0, r4]
cmp r0, #0
beq _0200A720
bl sub_0200A6DC
_0200A720:
ldr r0, [r5, #4]
add r6, r6, #1
add r4, r4, #4
cmp r6, r0
blt _0200A714
_0200A72A:
pop {r4, r5, r6, pc}
thumb_func_end sub_0200A700
thumb_func_start sub_0200A72C
sub_0200A72C: ; 0x0200A72C
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
cmp r5, #0
bne _0200A73A
bl GF_AssertFail
_0200A73A:
add r0, r5, #0
bl sub_02009EAC
cmp r0, #1
beq _0200A748
bl GF_AssertFail
_0200A748:
add r0, r5, #0
bl sub_02009E08
cmp r4, #0
beq _0200A75A
add r1, r4, #0
bl sub_0201FA80
pop {r3, r4, r5, pc}
_0200A75A:
bl sub_0201FA58
pop {r3, r4, r5, pc}
thumb_func_end sub_0200A72C
thumb_func_start sub_0200A760
sub_0200A760: ; 0x0200A760
push {r4, lr}
add r4, r1, #0
mov r1, #0
bl sub_0200A72C
add r1, r4, #0
bl NNS_G2dGetImagePaletteLocation
mov r1, #0
mvn r1, r1
cmp r0, r1
beq _0200A780
asr r1, r0, #4
lsr r1, r1, #0x1b
add r1, r0, r1
asr r0, r1, #5
_0200A780:
pop {r4, pc}
; .align 2, 0
thumb_func_end sub_0200A760

View File

@ -1,5 +1,14 @@
#ifndef NNSYS_G2D_G2D_IMAGE_H_
#define NNSYS_G2D_G2D_IMAGE_H_
#ifndef NNS_G2D_IMAGE_H_
#define NNS_G2D_IMAGE_H_
#include <nitro.h>
#ifdef __cplusplus
extern "C" {
#endif
#define NNS_G2dInitializeImageProxy NNS_G2dInitImageProxy
#define NNS_G2dInitializeImagePaletteProxy NNS_G2dInitImagePaletteProxy
typedef enum NNS_G2D_VRAM_TYPE {
NNS_G2D_VRAM_TYPE_3DMAIN = 0,
@ -8,9 +17,14 @@ typedef enum NNS_G2D_VRAM_TYPE {
NNS_G2D_VRAM_TYPE_MAX = 3
} NNS_G2D_VRAM_TYPE;
typedef struct NNSG2dVRamLocation {
u32 baseAddrOfVram[ NNS_G2D_VRAM_TYPE_MAX ];
} NNSG2dVRamLocation;
#define NNS_G2D_VRAM_TYPE_VALID(val) \
NNS_G2D_ASSERTMSG((val) == NNS_G2D_VRAM_TYPE_3DMAIN || \
(val) == NNS_G2D_VRAM_TYPE_2DMAIN || \
(val) == NNS_G2D_VRAM_TYPE_2DSUB, \
"Invalid NNS_G2D_VRAM_TYPE type") \
#define NNS_G2D_VRAM_ADDR_NOT_INITIALIZED 0xFFFFFFFF
#define NNS_G2D_VRAM_ADDR_NONE NNS_G2D_VRAM_ADDR_NOT_INITIALIZED
typedef struct NNSG2dImageAttr {
GXTexSizeS sizeS;
@ -21,6 +35,10 @@ typedef struct NNSG2dImageAttr {
GXOBJVRamModeChar mappingType;
} NNSG2dImageAttr;
typedef struct NNSG2dVRamLocation {
u32 baseAddrOfVram[NNS_G2D_VRAM_TYPE_MAX];
} NNSG2dVRamLocation;
typedef struct NNSG2dImageProxy {
NNSG2dVRamLocation vramLocation;
NNSG2dImageAttr attr;
@ -32,11 +50,110 @@ typedef struct NNSG2dImagePaletteProxy {
NNSG2dVRamLocation vramLocation;
} NNSG2dImagePaletteProxy;
void NNS_G2dLoadPaletteEx(const NNSG2dPaletteData* pSrcData, const NNSG2dPaletteCompressInfo* pCmpInfo, u32 addr, NNS_G2D_VRAM_TYPE type, NNSG2dImagePaletteProxy* pPltProxy);
void NNS_G2dLoadPalette(const NNSG2dPaletteData* pSrcData, u32 addr, NNS_G2D_VRAM_TYPE type, NNSG2dImagePaletteProxy* pPltProxy);
void NNS_G2dLoadImage1DMapping(const NNSG2dCharacterData* pSrcData, u32 baseAddr, NNS_G2D_VRAM_TYPE type, NNSG2dImageProxy* pImgProxy);
void NNS_G2dLoadImage2DMapping(const NNSG2dCharacterData* pSrcData, u32 baseAddr, NNS_G2D_VRAM_TYPE type, NNSG2dImageProxy* pImgProxy);
u32 NNS_G2dGetImageLocation (const NNSG2dImageProxy* pImg, NNS_G2D_VRAM_TYPE type);
u32 NNS_G2dGetImagePaletteLocation(const NNSG2dImagePaletteProxy* pImg, NNS_G2D_VRAM_TYPE type);
void NNS_G2dInitImageProxy(NNSG2dImageProxy * pImg);
void NNS_G2dSetImageLocation(NNSG2dImageProxy * pImg, NNS_G2D_VRAM_TYPE type, u32 addr);
u32 NNS_G2dGetImageLocation(const NNSG2dImageProxy * pImg, NNS_G2D_VRAM_TYPE type);
BOOL NNS_G2dIsImageReadyToUse(const NNSG2dImageProxy * pImg, NNS_G2D_VRAM_TYPE type);
void NNS_G2dLoadImage1DMapping
(
const NNSG2dCharacterData * pSrcData,
u32 baseAddr,
NNS_G2D_VRAM_TYPE type,
NNSG2dImageProxy * pImgProxy
);
void NNS_G2dLoadImage2DMapping
(
const NNSG2dCharacterData * pSrcData,
u32 baseAddr,
NNS_G2D_VRAM_TYPE type,
NNSG2dImageProxy * pImgProxy
);
void NNS_G2dLoadImageVramTransfer
(
const NNSG2dCharacterData * pSrcData,
u32 baseAddr,
NNS_G2D_VRAM_TYPE type,
NNSG2dImageProxy * pImgProxy
);
void NNS_G2dLoadPalette
(
const NNSG2dPaletteData * pSrcData,
u32 addr,
NNS_G2D_VRAM_TYPE type,
NNSG2dImagePaletteProxy * pPltProxy
);
void NNS_G2dLoadPaletteEx
(
const NNSG2dPaletteData * pSrcData,
const NNSG2dPaletteCompressInfo * pCmpInfo,
u32 addr,
NNS_G2D_VRAM_TYPE type,
NNSG2dImagePaletteProxy * pPltProxy
);
#endif //NNSYS_G2D_G2D_IMAGE_H_
void NNS_G2dInitImagePaletteProxy(NNSG2dImagePaletteProxy * pImg);
void NNS_G2dSetImagePaletteLocation(NNSG2dImagePaletteProxy * pImg, NNS_G2D_VRAM_TYPE type, u32 addr);
u32 NNS_G2dGetImagePaletteLocation(const NNSG2dImagePaletteProxy * pImg, NNS_G2D_VRAM_TYPE type);
BOOL NNS_G2dIsImagePaletteReadyToUse(const NNSG2dImagePaletteProxy * pImg, NNS_G2D_VRAM_TYPE type);
static BOOL NNS_G2dIsPaletteImageFmt(const NNSG2dImageAttr * imgAttr);
void NNSi_G2dInitializeVRamLocation(NNSG2dVRamLocation * pVramLocation);
void NNSi_G2dSetVramLocation(NNSG2dVRamLocation * pVramLocation, NNS_G2D_VRAM_TYPE type, u32 addr);
u32 NNSi_G2dGetVramLocation(const NNSG2dVRamLocation * pVramLocation, NNS_G2D_VRAM_TYPE type);
BOOL NNSi_G2dIsVramLocationReadyToUse(const NNSG2dVRamLocation * pVramLocation, NNS_G2D_VRAM_TYPE type);
void NNSi_G2dDoImageLoadingToVram
(
const NNSG2dCharacterData * pSrcData,
u32 baseAddr,
NNS_G2D_VRAM_TYPE type
);
void NNSi_G2dSetupImageProxyPrams
(
const NNSG2dCharacterData * pSrcData,
u32 baseAddr,
NNS_G2D_VRAM_TYPE type,
NNSG2dImageProxy * pImgProxy
);
void NNSi_G2dDoLoadingPaletteToVram
(
const NNSG2dPaletteData * pSrcData,
u32 addr,
NNS_G2D_VRAM_TYPE type
);
void NNSi_G2dDoLoadingPaletteToVramEx
(
const NNSG2dPaletteData * pSrcData,
const NNSG2dPaletteCompressInfo * pCmpInfo,
u32 addr,
NNS_G2D_VRAM_TYPE type
);
void NNSi_G2dSetupPaletteProxyPrams
(
const NNSG2dPaletteData * pSrcData,
u32 addr,
NNS_G2D_VRAM_TYPE type,
NNSG2dImagePaletteProxy * pPltProxy
);
inline BOOL NNS_G2dIsPaletteImageFmt (const NNSG2dImageAttr * imgAttr)
{
NNS_G2D_NULL_ASSERT(imgAttr);
return (imgAttr->fmt == GX_TEXFMT_PLTT4 ||
imgAttr->fmt == GX_TEXFMT_PLTT16 ||
imgAttr->fmt == GX_TEXFMT_PLTT256) ? TRUE : FALSE;
}
inline void NNS_G2dSetImageExtPaletteFlag (NNSG2dImageProxy * pImgProxy, BOOL bUseExtPlt)
{
NNS_G2D_NULL_ASSERT(pImgProxy);
pImgProxy->attr.bExtendedPlt = bUseExtPlt;
}
#ifdef __cplusplus
}
#endif
#endif

View File

@ -29,7 +29,7 @@ Static main
Object asm/unk_0200762C.o
Object src/unk_020093B4.o
Object src/unk_02009714.o
Object asm/unk_0200A328.o
Object src/unk_0200A328.o
Object asm/unk_0200A784.o
Object src/unk_0200A9DC.o
Object src/unk_0200AC5C.o

325
src/unk_0200A328.c Normal file
View File

@ -0,0 +1,325 @@
#include <nitro.h>
#include <string.h>
#include "struct_decls/struct_02009DC8_decl.h"
#include "struct_defs/struct_02009CFC.h"
#include "struct_defs/struct_0200A328.h"
#include "struct_defs/struct_0200A5C8.h"
#include "unk_02009714.h"
#include "unk_0200A328.h"
#include "unk_0201E86C.h"
#include "unk_0201F834.h"
BOOL sub_0200A328 (const UnkStruct_02009DC8 * param0)
{
UnkStruct_0200A328 v0;
GF_ASSERT(param0);
GF_ASSERT(sub_02009EAC(param0) == 0);
v0.unk_00 = sub_02009E1C(param0);
v0.unk_04 = sub_02009EBC(param0);
v0.unk_08 = sub_02009E08(param0);
v0.unk_0C = 0;
return sub_0201EA24(&v0);
}
void sub_0200A368 (const UnkStruct_02009CFC * param0)
{
int v0;
BOOL v1;
GF_ASSERT(param0);
for (v0 = 0; v0 < param0->unk_04; v0++) {
if (param0->unk_00[v0]) {
v1 = sub_0200A328(param0->unk_00[v0]);
GF_ASSERT(v1);
}
}
}
BOOL sub_0200A39C (const UnkStruct_02009DC8 * param0)
{
UnkStruct_0200A328 v0;
GF_ASSERT(param0);
GF_ASSERT(sub_02009EAC(param0) == 0);
v0.unk_00 = sub_02009E1C(param0);
v0.unk_04 = sub_02009EBC(param0);
v0.unk_08 = sub_02009E08(param0);
v0.unk_0C = 0;
return sub_0201EA7C(&v0);
}
BOOL sub_0200A3DC (const UnkStruct_02009DC8 * param0)
{
UnkStruct_0200A328 v0;
GF_ASSERT(param0);
GF_ASSERT(sub_02009EAC(param0) == 0);
v0.unk_00 = sub_02009E1C(param0);
v0.unk_04 = sub_02009EBC(param0);
v0.unk_08 = sub_02009E08(param0);
v0.unk_0C = 1;
return sub_0201EA24(&v0);
}
void sub_0200A41C (const UnkStruct_02009CFC * param0)
{
int v0;
BOOL v1;
GF_ASSERT(param0);
for (v0 = 0; v0 < param0->unk_04; v0++) {
if (param0->unk_00[v0]) {
v1 = sub_0200A3DC(param0->unk_00[v0]);
GF_ASSERT(v1);
}
}
}
BOOL sub_0200A450 (const UnkStruct_02009DC8 * param0)
{
UnkStruct_0200A328 v0;
GF_ASSERT(param0);
GF_ASSERT(sub_02009EAC(param0) == 0);
v0.unk_00 = sub_02009E1C(param0);
v0.unk_04 = sub_02009EBC(param0);
v0.unk_08 = sub_02009E08(param0);
v0.unk_0C = 1;
return sub_0201EA7C(&v0);
}
void sub_0200A490 (const UnkStruct_02009DC8 * param0, const UnkStruct_02009DC8 * param1)
{
int v0;
NNSG2dCharacterData * v1;
GF_ASSERT(param0);
GF_ASSERT(param1);
v0 = sub_02009E08(param0);
v1 = sub_02009E1C(param1);
sub_0201EB08(v0, v1);
}
void sub_0200A4C0 (const UnkStruct_02009DC8 * param0)
{
int v0;
NNSG2dCharacterData * v1;
GF_ASSERT(param0);
v0 = sub_02009E08(param0);
v1 = sub_02009E1C(param0);
sub_0201EB08(v0, v1);
}
void sub_0200A4E4 (UnkStruct_02009DC8 * param0)
{
int v0;
GF_ASSERT(param0);
GF_ASSERT(sub_02009EAC(param0) == 0);
v0 = sub_02009E08(param0);
sub_0201EB50(v0);
}
void sub_0200A508 (UnkStruct_02009CFC * param0)
{
int v0;
GF_ASSERT(param0);
for (v0 = 0; v0 < param0->unk_04; v0++) {
if (param0->unk_00[v0]) {
sub_0200A4E4(param0->unk_00[v0]);
}
}
}
NNSG2dImageProxy * sub_0200A534 (const UnkStruct_02009DC8 * param0)
{
int v0;
GF_ASSERT(param0);
GF_ASSERT(sub_02009EAC(param0) == 0);
v0 = sub_02009E08(param0);
return sub_0201EBDC(v0);
}
NNSG2dImageProxy * sub_0200A558 (const UnkStruct_02009DC8 * param0, const UnkStruct_02009DC8 * param1)
{
int v0;
NNSG2dCellDataBank * v1;
NNSG2dImageProxy * v2;
GF_ASSERT(param0);
GF_ASSERT(sub_02009EAC(param0) == 0);
GF_ASSERT(param1);
GF_ASSERT(sub_02009EAC(param1) == 2);
v0 = sub_02009E08(param0);
v1 = sub_02009E4C(param1);
v2 = sub_0201EC00(v0, v1->pVramTransferData->szByteMax);
if (v2 == NULL) {
NNSG2dImageProxy * v3;
v3 = sub_0201EBDC(v0);
v2 = sub_0201EC84(v3);
}
return v2;
}
void sub_0200A5B4 (const NNSG2dImageProxy * param0)
{
GF_ASSERT(param0);
sub_0201ED1C(param0);
}
BOOL sub_0200A5C8 (const UnkStruct_02009DC8 * param0)
{
UnkStruct_0200A5C8 v0;
GF_ASSERT(param0);
GF_ASSERT(sub_02009EAC(param0) == 1);
v0.unk_00 = sub_02009E34(param0);
v0.unk_04 = sub_02009EBC(param0);
v0.unk_0C = sub_02009E08(param0);
v0.unk_08 = sub_02009EE8(param0);
return sub_0201F90C(&v0);
}
void sub_0200A60C (const UnkStruct_02009CFC * param0)
{
int v0;
BOOL v1;
GF_ASSERT(param0);
for (v0 = 0; v0 < param0->unk_04; v0++) {
if (param0->unk_00[v0]) {
v1 = sub_0200A5C8(param0->unk_00[v0]);
GF_ASSERT(v1);
}
}
}
BOOL sub_0200A640 (const UnkStruct_02009DC8 * param0)
{
UnkStruct_0200A5C8 v0;
GF_ASSERT(param0);
GF_ASSERT(sub_02009EAC(param0) == 1);
v0.unk_00 = sub_02009E34(param0);
v0.unk_04 = sub_02009EBC(param0);
v0.unk_0C = sub_02009E08(param0);
v0.unk_08 = sub_02009EE8(param0);
return sub_0201F950(&v0);
}
void sub_0200A684 (const UnkStruct_02009CFC * param0)
{
int v0;
BOOL v1;
GF_ASSERT(param0);
for (v0 = 0; v0 < param0->unk_04; v0++) {
if (param0->unk_00[v0]) {
v1 = sub_0200A640(param0->unk_00[v0]);
GF_ASSERT(v1);
}
}
}
void sub_0200A6B8 (const UnkStruct_02009DC8 * param0)
{
NNSG2dPaletteData * v0;
int v1;
int v2;
GF_ASSERT(param0);
v1 = sub_02009E08(param0);
v0 = sub_02009E34(param0);
sub_0201F990(v1, v0);
}
void sub_0200A6DC (UnkStruct_02009DC8 * param0)
{
int v0;
GF_ASSERT(param0);
GF_ASSERT(sub_02009EAC(param0) == 1);
v0 = sub_02009E08(param0);
sub_0201F9F0(v0);
}
void sub_0200A700 (UnkStruct_02009CFC * param0)
{
int v0;
GF_ASSERT(param0);
for (v0 = 0; v0 < param0->unk_04; v0++) {
if (param0->unk_00[v0]) {
sub_0200A6DC(param0->unk_00[v0]);
}
}
}
const NNSG2dImagePaletteProxy * sub_0200A72C (const UnkStruct_02009DC8 * param0, NNSG2dImageProxy * param1)
{
int v0;
GF_ASSERT(param0);
GF_ASSERT(sub_02009EAC(param0) == 1);
v0 = sub_02009E08(param0);
if (param1) {
return sub_0201FA80(v0, param1);
}
return sub_0201FA58(v0);
}
u32 sub_0200A760 (const UnkStruct_02009DC8 * param0, NNS_G2D_VRAM_TYPE param1)
{
int v0;
const NNSG2dImagePaletteProxy * v1;
v1 = sub_0200A72C(param0, NULL);
v0 = NNS_G2dGetImagePaletteLocation(v1, param1);
if (v0 != (NNS_G2D_VRAM_ADDR_NOT_INITIALIZED)) {
v0 /= 32;
}
return v0;
}