diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2021-05-27 21:28:30 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2021-05-27 21:28:30 -0400 |
commit | e8b7894e1c1496f4564a96c0a13ed5cac2000f6f (patch) | |
tree | a91a4e70e6d09f9487c2ec9dcce88f589ad8126e /arm9/src | |
parent | bfcd4ca46f428ba168c6daf6aa7550b7d8d71a03 (diff) |
Through FUN_02006AE4
Diffstat (limited to 'arm9/src')
-rw-r--r-- | arm9/src/gf_gfx_loader.c | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/arm9/src/gf_gfx_loader.c b/arm9/src/gf_gfx_loader.c index db2614ab..83ca9119 100644 --- a/arm9/src/gf_gfx_loader.c +++ b/arm9/src/gf_gfx_loader.c @@ -39,3 +39,138 @@ THUMB_FUNC void FUN_020068C8(NarcId narcId, s32 memberNo, struct UnkStruct_02016 FreeToHeap(r7);
}
}
+
+void FUN_02006948(NarcId narcId, s32 memberNo, u32 r4, u32 r7, u32 r6, u32 r5, u32 heap_id);
+
+THUMB_FUNC void FUN_02006930(NarcId narcId, s32 memberNo, u32 r2, u32 r3, u32 sp10, u32 heap_id)
+{
+ FUN_02006948(narcId, memberNo, r2, 0, r3, sp10, heap_id);
+}
+
+THUMB_FUNC void FUN_02006948(NarcId narcId, s32 memberNo, u32 r4, u32 r7, u32 r6, u32 r5, u32 heap_id)
+{
+ static void (*const UNK_020ECBB0[])(void *, u32, u32) = {
+ GX_LoadBGPltt,
+ GX_LoadOBJPltt,
+ GX_LoadBGExtPltt,
+ GX_LoadOBJExtPltt,
+ GXS_LoadBGPltt,
+ GXS_LoadOBJPltt,
+ GXS_LoadBGExtPltt,
+ GXS_LoadOBJExtPltt
+ };
+ NNSG2dPaletteData * sp8;
+ void * sp4 = UncompressFromNarc(narcId, memberNo, FALSE, heap_id, TRUE);
+ if (sp4 != NULL)
+ {
+ if (NNS_G2dGetUnpackedPaletteData(sp4, &sp8))
+ {
+ sp8->pRawData = (void *)((u32)sp8->pRawData + r7);
+ if (r5 == 0)
+ r5 = sp8->szByte - r7;
+ DC_FlushRange(sp8->pRawData, r5);
+ switch (r4)
+ {
+ case 2:
+ GX_BeginLoadBGExtPltt();
+ UNK_020ECBB0[r4](sp8->pRawData, r6, r5);
+ GX_EndLoadBGExtPltt();
+ break;
+ case 6:
+ GXS_BeginLoadBGExtPltt();
+ UNK_020ECBB0[r4](sp8->pRawData, r6, r5);
+ GXS_EndLoadBGExtPltt();
+ break;
+ case 3:
+ GX_BeginLoadOBJExtPltt();
+ UNK_020ECBB0[r4](sp8->pRawData, r6, r5);
+ GX_EndLoadOBJExtPltt();
+ break;
+ case 7:
+ GXS_BeginLoadOBJExtPltt();
+ UNK_020ECBB0[r4](sp8->pRawData, r6, r5);
+ GXS_EndLoadOBJExtPltt();
+ break;
+ default:
+ UNK_020ECBB0[r4](sp8->pRawData, r6, r5);
+ break;
+ }
+ }
+ FreeToHeap(sp4);
+ }
+}
+
+THUMB_FUNC u32 FUN_02006A34(NarcId narcId, s32 memberId, u32 r5, u32 r6, u32 r4, BOOL isCompressed, u32 heap_id)
+{
+ static void (*const UNK_020ECBA0[])(void *, u32, u32) = {
+ GX_LoadOBJ,
+ GXS_LoadOBJ
+ };
+
+ NNSG2dCharacterData* sp4;
+ void * r7 = UncompressFromNarc(narcId, memberId, isCompressed, heap_id, TRUE);
+ if (r7 != NULL)
+ {
+ if (NNS_G2dGetUnpackedCharacterData(r7, &sp4))
+ {
+ if (r4 == 0)
+ r4 = sp4->szByte;
+ DC_FlushRange(sp4->pRawData, r4);
+ UNK_020ECBA0[r5](sp4->pRawData, r6, r4);
+ }
+ FreeToHeap(r7);
+ }
+ return r4;
+}
+
+THUMB_FUNC void FUN_02006A8C(NarcId narcId, s32 memberId, NNS_G2D_VRAM_TYPE r5, u32 r4, u32 heap_id, NNSG2dImagePaletteProxy * sp24)
+{
+ void * r6 = UncompressFromNarc(narcId, memberId, FALSE, heap_id, TRUE);
+ NNSG2dPaletteData* sp8;
+ NNSG2dPaletteCompressInfo* sp4;
+ if (r6 != NULL)
+ {
+ BOOL r7 = NNS_G2dGetUnpackedPaletteCompressInfo(r6, &sp4);
+ if (NNS_G2dGetUnpackedPaletteData(r6, &sp8))
+ {
+ if (r7)
+ {
+ NNS_G2dLoadPaletteEx(sp8, sp4, r4, r5, sp24);
+ }
+ else
+ {
+ NNS_G2dLoadPalette(sp8, r4, r5, sp24);
+ }
+ }
+ FreeToHeap(r6);
+ }
+}
+
+THUMB_FUNC u32 FUN_02006AE4(NarcId narcId, s32 memberId, BOOL isCompressed, u32 r5, u32 sp18, u32 sp1C, u32 sp20, u32 heap_id, NNSG2dImageProxy *sp28)
+{
+ static void (*const UNK_020ECBA8[])(const NNSG2dCharacterData *, u32, NNS_G2D_VRAM_TYPE, NNSG2dImageProxy *) = {
+ NNS_G2dLoadImage1DMapping,
+ NNS_G2dLoadImage2DMapping
+ };
+
+ void * r6 = UncompressFromNarc(narcId, memberId, isCompressed, heap_id, TRUE);
+ u32 r4 = 0;
+ NNSG2dCharacterData * sp4;
+ if (r6 != NULL)
+ {
+ if (NNS_G2dGetUnpackedCharacterData(r6, &sp4))
+ {
+ if (sp18 != 0)
+ sp4->szByte = sp18;
+ UNK_020ECBA8[r5](sp4, sp20, sp1C, sp28);
+ r4 = sp4->szByte;
+ }
+ FreeToHeap(r6);
+ }
+ return r4;
+}
+
+void (*const UNK_020ECB98[])(const NNSG2dCharacterData *, u32, NNS_G2D_VRAM_TYPE, NNSG2dImageProxy *) = {
+ NNS_G2dLoadImage1DMapping,
+ NNS_G2dLoadImage2DMapping
+};
|