Decompile func_06010008 (#366)

https://decomp.me/scratch/kCota
This commit is contained in:
sozud 2023-07-17 13:22:21 -07:00 committed by GitHub
parent be1b53f268
commit a87b550a1c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 86 additions and 1 deletions

View File

@ -455,6 +455,7 @@ build_saturn_copy_files:
cp ./src/saturn/stage_02.h $(SATURN_BUILD_DIR)
cp ./src/saturn/warp.c $(SATURN_BUILD_DIR)
cp ./src/saturn/sattypes.h $(SATURN_BUILD_DIR)
cp -r ./include/saturn $(SATURN_BUILD_DIR)/saturn
mkdir -p $(SATURN_BUILD_DIR)/asm/saturn/
mkdir -p $(SATURN_BUILD_DIR)/asm/saturn/
cp -r ./asm/saturn/game $(SATURN_BUILD_DIR)/asm/saturn/game

View File

@ -24,3 +24,7 @@ _DAT_060485e0 = 0x060485e0;
_DAT_0605CD90 = 0x0605CD90;
_DAT_0605d6c0 = 0x0605d6c0;
_DAT_0605c120 = 0x0605c120;
_DAT_06062224 = 0x06062224;
_SCL_InitConfigTb = 0x06028d10;
_SCL_SetConfig = 0x06028ddc;
_DAT_06039214 = 0x06039214;

34
include/saturn/scl.h Normal file
View File

@ -0,0 +1,34 @@
#ifndef SCL_H
#define SCL_H
typedef unsigned char Uint8;
typedef signed char Sint8;
typedef unsigned short Uint16;
typedef signed short Sint16;
typedef unsigned long Uint32;
typedef signed long Sint32;
typedef float Float32;
typedef double Float64;
typedef int Int;
typedef int Bool;
typedef struct SclConfig {
Uint8 dispenbl;
Uint8 charsize;
Uint8 pnamesize;
Uint8 platesize;
Uint8 bmpsize;
Uint8 coltype;
Uint8 datatype;
Uint8 mapover;
Uint8 flip;
Uint16 patnamecontrl;
Uint32 plate_addr[32];
} SclConfig;
extern void SCL_InitConfigTb(SclConfig* scfg);
extern void SCL_SetConfig(Uint16 sclnum, SclConfig* scfg);
#define SCL_NBG0 0x00000004
#endif

View File

@ -1,6 +1,7 @@
#include "zero.h"
#include "inc_asm.h"
#include "sattypes.h"
#include "saturn/scl.h"
INCLUDE_ASM("asm/saturn/zero/data", d6004080, d_06004080);
@ -468,7 +469,35 @@ INCLUDE_ASM("asm/saturn/zero/f_nonmat", f600FF08, func_0600FF08);
INCLUDE_ASM("asm/saturn/zero/f_nonmat", f600FF64, func_0600FF64);
INCLUDE_ASM("asm/saturn/zero/f_nonmat", f600FFB8, func_0600FFB8);
INCLUDE_ASM("asm/saturn/zero/f_nonmat", f6010008, func_06010008);
void func_06010008(void) {
struct Unk0605d6c0* puVar2;
SclConfig temp;
DAT_06062224[1] = 0;
DAT_06062224[0] = 0;
ClearDebugPrintTilemap();
SCL_InitConfigTb(&temp);
temp.dispenbl = 1;
temp.charsize = 0;
temp.pnamesize = 1;
temp.platesize = 0;
temp.coltype = 0;
temp.datatype = 0;
temp.mapover = 0;
temp.flip = 0;
temp.patnamecontrl = 0x66;
temp.plate_addr[0] = VDP2_25E58000;
temp.plate_addr[1] = VDP2_25E58000;
temp.plate_addr[2] = VDP2_25E58000;
temp.plate_addr[3] = VDP2_25E58000;
SCL_SetConfig(SCL_NBG0, &temp);
puVar2 = &DAT_0605d6c0;
puVar2->unk30 = 0x10;
puVar2->unk34 = &DAT_06039214;
puVar2->unk38 = VDP2_25F00600;
puVar2->unk3c = 0x80;
}
// 0x060100b8
// clears the debug print tilemap area, debug prints are at least used by
@ -1465,7 +1494,12 @@ INCLUDE_ASM("asm/saturn/zero/f_nonmat", f6028BE4, func_06028BE4);
INCLUDE_ASM("asm/saturn/zero/f_nonmat", f6028C0C, func_06028C0C);
INCLUDE_ASM("asm/saturn/zero/f_nonmat", f6028C34, func_06028C34);
// _SCL_InitConfigTb
INCLUDE_ASM("asm/saturn/zero/f_nonmat", f6028D10, func_06028D10);
// _SCL_SetConfig = 0x06028ddc splitter bug
INCLUDE_ASM_NO_ALIGN("asm/saturn/zero/f_nonmat", f602915A, func_0602915A);
INCLUDE_ASM("asm/saturn/zero/f_nonmat", f602A654, func_0602A654);

View File

@ -74,6 +74,11 @@ struct Unk0605d6c0 {
u32 src;
u32 dest;
u32 cnt;
u8 unk[0x20];
s32 unk30;
u32 unk34;
u32 unk38;
u32 unk3c;
};
struct Unk0605CD90 DAT_0605CD90[];
@ -82,4 +87,11 @@ struct Unk0605CD90 DAT_0605CD90[];
extern s32* DAT_0605c120[];
#define VDP2_25E58000 0x25E58000
#define VDP2_25F00600 0x25F00600
extern s16 DAT_06062224[];
extern s32 DAT_06039214;
void ClearDebugPrintTilemap();
#endif