mirror of
https://github.com/pret/pokediamond.git
synced 2026-09-11 18:46:44 -05:00
Start decomping unk_02006864
This commit is contained in:
@@ -21,6 +21,7 @@ Static arm9
|
||||
Object unk_020061E8.o
|
||||
Object overlay_manager.o
|
||||
Object filesystem.o
|
||||
Object gf_gfx_loader.o
|
||||
Object unk_02006864.o
|
||||
Object unk_02006D98.o
|
||||
Object unk_02008AA4.o
|
||||
|
||||
@@ -23,99 +23,6 @@ UNK_020ECBB0: ; 0x020ECBB0
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start FUN_0200687C
|
||||
FUN_0200687C: ; 0x0200687C
|
||||
push {r3-r7, lr}
|
||||
sub sp, #0x8
|
||||
add r6, r2, #0x0
|
||||
mov r2, #0x0
|
||||
add r5, r3, #0x0
|
||||
str r2, [sp, #0x0]
|
||||
ldr r2, [sp, #0x28]
|
||||
ldr r3, [sp, #0x2c]
|
||||
ldr r4, [sp, #0x24]
|
||||
bl UncompressFromNarc
|
||||
add r7, r0, #0x0
|
||||
beq _020068C2
|
||||
add r1, sp, #0x4
|
||||
bl NNS_G2dGetUnpackedBGCharacterData
|
||||
cmp r0, #0x0
|
||||
beq _020068BC
|
||||
cmp r4, #0x0
|
||||
bne _020068A8
|
||||
ldr r0, [sp, #0x4]
|
||||
ldr r4, [r0, #0x10]
|
||||
_020068A8:
|
||||
ldr r0, [sp, #0x20]
|
||||
lsl r1, r5, #0x18
|
||||
str r0, [sp, #0x0]
|
||||
ldr r2, [sp, #0x4]
|
||||
add r0, r6, #0x0
|
||||
ldr r2, [r2, #0x14]
|
||||
lsr r1, r1, #0x18
|
||||
add r3, r4, #0x0
|
||||
bl FUN_02017E14
|
||||
_020068BC:
|
||||
add r0, r7, #0x0
|
||||
bl FreeToHeap
|
||||
_020068C2:
|
||||
add r0, r4, #0x0
|
||||
add sp, #0x8
|
||||
pop {r3-r7, pc}
|
||||
|
||||
thumb_func_start FUN_020068C8
|
||||
FUN_020068C8: ; 0x020068C8
|
||||
push {r3-r7, lr}
|
||||
sub sp, #0x8
|
||||
add r6, r2, #0x0
|
||||
mov r2, #0x1
|
||||
add r5, r3, #0x0
|
||||
str r2, [sp, #0x0]
|
||||
ldr r2, [sp, #0x28]
|
||||
ldr r3, [sp, #0x2c]
|
||||
ldr r4, [sp, #0x24]
|
||||
bl UncompressFromNarc
|
||||
add r7, r0, #0x0
|
||||
beq _0200692C
|
||||
add r1, sp, #0x4
|
||||
bl NNS_G2dGetUnpackedScreenData
|
||||
cmp r0, #0x0
|
||||
beq _02006926
|
||||
cmp r4, #0x0
|
||||
bne _020068F4
|
||||
ldr r0, [sp, #0x4]
|
||||
ldr r4, [r0, #0x8]
|
||||
_020068F4:
|
||||
lsl r1, r5, #0x18
|
||||
add r0, r6, #0x0
|
||||
lsr r1, r1, #0x18
|
||||
bl FUN_0201886C
|
||||
cmp r0, #0x0
|
||||
beq _02006912
|
||||
ldr r2, [sp, #0x4]
|
||||
lsl r1, r5, #0x18
|
||||
add r0, r6, #0x0
|
||||
lsr r1, r1, #0x18
|
||||
add r2, #0xc
|
||||
add r3, r4, #0x0
|
||||
bl FUN_02017DFC
|
||||
_02006912:
|
||||
ldr r0, [sp, #0x20]
|
||||
lsl r1, r5, #0x18
|
||||
str r0, [sp, #0x0]
|
||||
ldr r2, [sp, #0x4]
|
||||
add r0, r6, #0x0
|
||||
lsr r1, r1, #0x18
|
||||
add r2, #0xc
|
||||
add r3, r4, #0x0
|
||||
bl FUN_02017CE8
|
||||
_02006926:
|
||||
add r0, r7, #0x0
|
||||
bl FreeToHeap
|
||||
_0200692C:
|
||||
add sp, #0x8
|
||||
pop {r3-r7, pc}
|
||||
|
||||
thumb_func_start FUN_02006930
|
||||
FUN_02006930: ; 0x02006930
|
||||
push {lr}
|
||||
|
||||
84
arm9/lib/include/GX_ioreg.h
Normal file
84
arm9/lib/include/GX_ioreg.h
Normal file
@@ -0,0 +1,84 @@
|
||||
#ifndef NITRO_GX_IOREG_H
|
||||
#define NITRO_GX_IOREG_H
|
||||
|
||||
#define REG_GX_DISPCNT_O_SHIFT 31
|
||||
#define REG_GX_DISPCNT_O_SIZE 1
|
||||
#define REG_GX_DISPCNT_O_MASK 0x80000000
|
||||
|
||||
#define REG_GX_DISPCNT_BG_SHIFT 30
|
||||
#define REG_GX_DISPCNT_BG_SIZE 1
|
||||
#define REG_GX_DISPCNT_BG_MASK 0x40000000
|
||||
|
||||
#define REG_GX_DISPCNT_BGSCREENOFFSET_SHIFT 27
|
||||
#define REG_GX_DISPCNT_BGSCREENOFFSET_SIZE 3
|
||||
#define REG_GX_DISPCNT_BGSCREENOFFSET_MASK 0x38000000
|
||||
|
||||
#define REG_GX_DISPCNT_BGCHAROFFSET_SHIFT 24
|
||||
#define REG_GX_DISPCNT_BGCHAROFFSET_SIZE 3
|
||||
#define REG_GX_DISPCNT_BGCHAROFFSET_MASK 0x07000000
|
||||
|
||||
#define REG_GX_DISPCNT_OH_SHIFT 23
|
||||
#define REG_GX_DISPCNT_OH_SIZE 1
|
||||
#define REG_GX_DISPCNT_OH_MASK 0x00800000
|
||||
|
||||
#define REG_GX_DISPCNT_EXOBJ_SHIFT 20
|
||||
#define REG_GX_DISPCNT_EXOBJ_SIZE 3
|
||||
#define REG_GX_DISPCNT_EXOBJ_MASK 0x00700000
|
||||
|
||||
#define REG_GX_DISPCNT_VRAM_SHIFT 18
|
||||
#define REG_GX_DISPCNT_VRAM_SIZE 2
|
||||
#define REG_GX_DISPCNT_VRAM_MASK 0x000c0000
|
||||
|
||||
#define REG_GX_DISPCNT_MODE_SHIFT 16
|
||||
#define REG_GX_DISPCNT_MODE_SIZE 2
|
||||
#define REG_GX_DISPCNT_MODE_MASK 0x00030000
|
||||
|
||||
#define REG_GX_DISPCNT_OW_SHIFT 15
|
||||
#define REG_GX_DISPCNT_OW_SIZE 1
|
||||
#define REG_GX_DISPCNT_OW_MASK 0x00008000
|
||||
|
||||
#define REG_GX_DISPCNT_W1_SHIFT 14
|
||||
#define REG_GX_DISPCNT_W1_SIZE 1
|
||||
#define REG_GX_DISPCNT_W1_MASK 0x00004000
|
||||
|
||||
#define REG_GX_DISPCNT_W0_SHIFT 13
|
||||
#define REG_GX_DISPCNT_W0_SIZE 1
|
||||
#define REG_GX_DISPCNT_W0_MASK 0x00002000
|
||||
|
||||
#define REG_GX_DISPCNT_DISPLAY_SHIFT 8
|
||||
#define REG_GX_DISPCNT_DISPLAY_SIZE 5
|
||||
#define REG_GX_DISPCNT_DISPLAY_MASK 0x00001f00
|
||||
|
||||
#define REG_GX_DISPCNT_BLANK_SHIFT 7
|
||||
#define REG_GX_DISPCNT_BLANK_SIZE 1
|
||||
#define REG_GX_DISPCNT_BLANK_MASK 0x00000080
|
||||
|
||||
#define REG_GX_DISPCNT_OBJMAP_SHIFT 4
|
||||
#define REG_GX_DISPCNT_OBJMAP_SIZE 3
|
||||
#define REG_GX_DISPCNT_OBJMAP_MASK 0x00000070
|
||||
|
||||
#define REG_GX_DISPCNT_BG02D3D_SHIFT 3
|
||||
#define REG_GX_DISPCNT_BG02D3D_SIZE 1
|
||||
#define REG_GX_DISPCNT_BG02D3D_MASK 0x00000008
|
||||
|
||||
#define REG_GX_DISPCNT_BGMODE_SHIFT 0
|
||||
#define REG_GX_DISPCNT_BGMODE_SIZE 3
|
||||
#define REG_GX_DISPCNT_BGMODE_MASK 0x00000007
|
||||
|
||||
#define REG_GX_DISPCNT_OBJMAP_CH_SHIFT 4
|
||||
#define REG_GX_DISPCNT_OBJMAP_CH_SIZE 1
|
||||
#define REG_GX_DISPCNT_OBJMAP_CH_MASK 0x00000010
|
||||
|
||||
#define REG_GX_DISPCNT_OBJMAP_BM_SHIFT 5
|
||||
#define REG_GX_DISPCNT_OBJMAP_BM_SIZE 2
|
||||
#define REG_GX_DISPCNT_OBJMAP_BM_MASK 0x00000060
|
||||
|
||||
#define REG_GX_DISPCNT_EXOBJ_CH_SHIFT 20
|
||||
#define REG_GX_DISPCNT_EXOBJ_CH_SIZE 2
|
||||
#define REG_GX_DISPCNT_EXOBJ_CH_MASK 0x00300000
|
||||
|
||||
#define REG_GX_DISPCNT_EXOBJ_BM_SHIFT 22
|
||||
#define REG_GX_DISPCNT_EXOBJ_BM_SIZE 1
|
||||
#define REG_GX_DISPCNT_EXOBJ_BM_MASK 0x00400000
|
||||
|
||||
#endif //NITRO_GX_IOREG_H
|
||||
39
arm9/lib/include/NNS_g2d.h
Normal file
39
arm9/lib/include/NNS_g2d.h
Normal file
@@ -0,0 +1,39 @@
|
||||
#ifndef NNSYS_NNS_G2D_H
|
||||
#define NNSYS_NNS_G2D_H
|
||||
#include "gx.h"
|
||||
|
||||
typedef struct NNSG2dCharacterData
|
||||
{
|
||||
|
||||
u16 H;
|
||||
u16 W;
|
||||
|
||||
GXTexFmt pixelFmt; // GXTexFmt
|
||||
|
||||
GXOBJVRamModeChar mapingType; // GXOBJVRamModeChar
|
||||
u32 characterFmt;// 31 ..... 10 ...........9 8 ................ 0
|
||||
// Reserved VramTransfer NNSG2dCharacterFmt
|
||||
u32 szByte;
|
||||
void* pRawData; // offset addr of the content.
|
||||
|
||||
}
|
||||
NNSG2dCharacterData;
|
||||
|
||||
typedef struct NNSG2dScreenData
|
||||
{
|
||||
|
||||
u16 screenWidth; // screen width (pixels) of rawData
|
||||
u16 screenHeight; // screen height (pixels) of rawData
|
||||
u16 colorMode; // character data color mode
|
||||
u16 screenFormat; // screen data format
|
||||
u32 szByte; // size of rawData
|
||||
u32 rawData[1]; // screen data (variable length)
|
||||
|
||||
}
|
||||
NNSG2dScreenData;
|
||||
|
||||
|
||||
extern BOOL NNS_G2dGetUnpackedBGCharacterData( void* pNcgrFile, NNSG2dCharacterData** ppCharData );
|
||||
extern BOOL NNS_G2dGetUnpackedScreenData( void* pNscrFile, NNSG2dScreenData** ppScrData );
|
||||
|
||||
#endif //NNSYS_NNS_G2D_H
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "MI_memory.h"
|
||||
#include "MI_dma.h"
|
||||
#include "OS_vramExclusive.h"
|
||||
#include "GX_ioreg.h"
|
||||
|
||||
//temporary while other files aren't decompiled
|
||||
|
||||
@@ -166,4 +167,18 @@ typedef enum
|
||||
}
|
||||
GXDispSelect;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
GX_OBJVRAMMODE_CHAR_2D = (0 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (0 << REG_GX_DISPCNT_EXOBJ_SHIFT),
|
||||
GX_OBJVRAMMODE_CHAR_1D_32K =
|
||||
(1 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (0 << REG_GX_DISPCNT_EXOBJ_SHIFT),
|
||||
GX_OBJVRAMMODE_CHAR_1D_64K =
|
||||
(1 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (1 << REG_GX_DISPCNT_EXOBJ_SHIFT),
|
||||
GX_OBJVRAMMODE_CHAR_1D_128K =
|
||||
(1 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (2 << REG_GX_DISPCNT_EXOBJ_SHIFT),
|
||||
GX_OBJVRAMMODE_CHAR_1D_256K =
|
||||
(1 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (3 << REG_GX_DISPCNT_EXOBJ_SHIFT)
|
||||
}
|
||||
GXOBJVRamModeChar;
|
||||
|
||||
#endif //GUARD_GX_H
|
||||
|
||||
41
arm9/src/gf_gfx_loader.c
Normal file
41
arm9/src/gf_gfx_loader.c
Normal file
@@ -0,0 +1,41 @@
|
||||
#include "global.h"
|
||||
#include "filesystem.h"
|
||||
#include "NNS_g2d.h"
|
||||
#include "unk_02016B94.h"
|
||||
|
||||
void * UncompressFromNarc(NarcId narcId, s32 memberNo, BOOL isCompressed, u32 heap_id, BOOL allocAtEnd);
|
||||
|
||||
THUMB_FUNC u32 FUN_0200687C(NarcId narcId, s32 memberNo, struct UnkStruct_02016B94_2 * unkStruct02016B94_2, u32 a3, u32 a4, u32 szByte, BOOL isCompressed, u32 heap_id)
|
||||
{
|
||||
NNSG2dCharacterData * pCharData;
|
||||
void * r7 = UncompressFromNarc(narcId, memberNo, isCompressed, heap_id, FALSE);
|
||||
if (r7 != NULL)
|
||||
{
|
||||
if (NNS_G2dGetUnpackedBGCharacterData(r7, &pCharData))
|
||||
{
|
||||
if (szByte == 0)
|
||||
szByte = pCharData->szByte;
|
||||
FUN_02017E14(unkStruct02016B94_2, (u8)a3, pCharData->pRawData, szByte, a4);
|
||||
}
|
||||
FreeToHeap(r7);
|
||||
}
|
||||
return szByte;
|
||||
}
|
||||
|
||||
THUMB_FUNC void FUN_020068C8(NarcId narcId, s32 memberNo, struct UnkStruct_02016B94_2 * unkStruct02016B94_2, u32 a3, u32 a4, u32 szByte, BOOL isCompressed, u32 heap_id)
|
||||
{
|
||||
NNSG2dScreenData * pScreenData;
|
||||
void * r7 = UncompressFromNarc(narcId, memberNo, isCompressed, heap_id, TRUE);
|
||||
if (r7 != NULL)
|
||||
{
|
||||
if (NNS_G2dGetUnpackedScreenData(r7, &pScreenData))
|
||||
{
|
||||
if (szByte == 0)
|
||||
szByte = pScreenData->szByte;
|
||||
if (FUN_0201886C(unkStruct02016B94_2, a3) != NULL)
|
||||
FUN_02017DFC(unkStruct02016B94_2, (u8)a3, pScreenData->rawData, szByte);
|
||||
FUN_02017CE8(unkStruct02016B94_2, (u8)a3, pScreenData->rawData, szByte, a4);
|
||||
}
|
||||
FreeToHeap(r7);
|
||||
}
|
||||
}
|
||||
@@ -3361,7 +3361,7 @@ THUMB_FUNC u8 (*FUN_02018848(u8 *param0, u32 param1, u8 param2, u32 heap_id))[2]
|
||||
return ptr;
|
||||
}
|
||||
|
||||
THUMB_FUNC void *FUN_0201886C(struct UnkStruct_02016B94_2 *param0, u32 param1)
|
||||
THUMB_FUNC void *FUN_0201886C(struct UnkStruct_02016B94_2 *param0, u8 param1)
|
||||
{
|
||||
return param0->unk08[param1].unk08;
|
||||
}
|
||||
|
||||
@@ -219,7 +219,7 @@ void FUN_0201878C(struct UnkStruct_02016B94_2 *param0, u32 param1, u16 param2);
|
||||
void *FUN_020187B0(u32 param0);
|
||||
void FUN_02018808(u8 *param0, u32 param1, u8 (*param2)[2], u8 param3);
|
||||
u8 (*FUN_02018848(u8 *param0, u32 param1, u8 param2, u32 heap_id))[2];
|
||||
void *FUN_0201886C(struct UnkStruct_02016B94_2 *param0, u32 param1);
|
||||
void *FUN_0201886C(struct UnkStruct_02016B94_2 *param0, u8 param1);
|
||||
u16 FUN_02018878(struct UnkStruct_02016B94_2 *param0, u32 param1);
|
||||
u8 FUN_02018884(struct UnkStruct_02016B94_2 *param0, u32 param1);
|
||||
void BlitBitmapRect4Bit(struct UnkStruct_02016B94_3 *param0,
|
||||
|
||||
Reference in New Issue
Block a user