decompile code_0804B9F8.s

This commit is contained in:
destoer 2021-11-16 23:19:14 +00:00
parent faeab7f6e3
commit 9db8acbe47
6 changed files with 49 additions and 68 deletions

View File

@ -1,63 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start FadeMain
FadeMain: @ 0x0804FF98
push {r4, r5, r6, r7, lr}
ldr r6, _0804FFD4 @ =gUnk_020354C0
ldr r1, _0804FFD8 @ =gUsedPalettes
ldr r4, [r1]
movs r0, #0
str r0, [r1]
movs r5, #0
cmp r4, #0
beq _0804FFD0
ldr r7, _0804FFDC @ =gUnk_03005E98
_0804FFAC:
movs r0, #1
ands r0, r4
cmp r0, #0
beq _0804FFC6
ldr r0, _0804FFE0 @ =gPaletteBuffer
adds r0, r5, r0
movs r2, #0xa0
lsls r2, r2, #0x13
adds r1, r5, r2
ldrh r2, [r6, #2]
ldrb r3, [r6, #1]
bl _call_via_r7
_0804FFC6:
adds r5, #0x20
adds r6, #4
lsrs r4, r4, #1
cmp r4, #0
bne _0804FFAC
_0804FFD0:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0804FFD4: .4byte gUnk_020354C0
_0804FFD8: .4byte gUsedPalettes
_0804FFDC: .4byte gUnk_03005E98
_0804FFE0: .4byte gPaletteBuffer
thumb_func_start sub_0804FFE4
sub_0804FFE4: @ 0x0804FFE4
push {r4, lr}
ldr r4, _08050000 @ =gFadeControl
adds r0, r4, #0
movs r1, #0x1c
bl MemClear
ldr r0, _08050004 @ =gUnk_020354C0
movs r1, #0x80
bl MemClear
movs r0, #1
rsbs r0, r0, #0
str r0, [r4, #4]
pop {r4, pc}
.align 2, 0
_08050000: .4byte gFadeControl
_08050004: .4byte gUnk_020354C0

View File

@ -31,6 +31,7 @@
#define PLTT 0x5000000 #define PLTT 0x5000000
#define PLTT_SIZE 0x400 #define PLTT_SIZE 0x400
#define PAL_RAM ((u8*)(PLTT))
#define BG_PLTT PLTT #define BG_PLTT PLTT
#define BG_PLTT_SIZE 0x200 #define BG_PLTT_SIZE 0x200

View File

@ -107,6 +107,14 @@ typedef struct {
extern FadeControl gFadeControl; extern FadeControl gFadeControl;
typedef struct {
u8 unk0;
u8 unk1;
u16 unk2;
} struct_020354C0;
extern struct_020354C0 gUnk_020354C0[0x20];
typedef struct { typedef struct {
u8 filler0[0x1A]; u8 filler0[0x1A];
u16 rButtonX; u16 rButtonX;

View File

@ -276,7 +276,7 @@ SECTIONS {
. = 0x00005D5C; gUnk_03005D5C = .; . = 0x00005D5C; gUnk_03005D5C = .;
. = 0x00005D90; gIntrMain = .; . = 0x00005D90; gIntrMain = .;
. = 0x00005E60; gUnk_03005E60 = .; . = 0x00005E60; gUnk_03005E60 = .;
. = 0x00005E98; gUnk_03005E98 = .; . = 0x00005E98; gMakeFadeBuff256 = .;
. = 0x00005F24; _ClearAndUpdateEntities = .; . = 0x00005F24; _ClearAndUpdateEntities = .;
. = 0x00005F40; UpdateEntities_arm = .; . = 0x00005F40; UpdateEntities_arm = .;
. = 0x00005FBC; gUnk_03005FBC = .; . = 0x00005FBC; gUnk_03005FBC = .;
@ -480,7 +480,7 @@ SECTIONS {
src/loadRoom.o(.text); src/loadRoom.o(.text);
asm/code_0804B058.o(.text); asm/code_0804B058.o(.text);
src/room.o(.text); src/room.o(.text);
asm/code_0804B9F8.o(.text); src/code_0804B9F8.o(.text);
src/sub_08050008.o(.text); src/sub_08050008.o(.text);
src/fade.o(.text); src/fade.o(.text);
asm/code_08050038.o(.text); asm/code_08050038.o(.text);

37
src/code_0804B9F8.c Normal file
View File

@ -0,0 +1,37 @@
#include "global.h"
#include "utils.h"
#include "fileScreen.h"
extern u16 gPaletteBuffer[];
extern u32 gUsedPalettes;
// function pointer to overlay (0x03005e98) in ram calls rom function MakeFadeBuff256
extern u32 gMakeFadeBuff256;
typedef void (*fptrMakeFadeBuff256)(u8*, u8*, u16, u8);
void FadeMain() {
fptrMakeFadeBuff256 func;
u32 usedPalettesTmp, palIdx;
struct_020354C0* ptrUnk = gUnk_020354C0;
usedPalettesTmp = gUsedPalettes;
gUsedPalettes = 0;
palIdx = 0;
while (usedPalettesTmp != 0) {
if ((usedPalettesTmp & 1) == 1) {
func = (fptrMakeFadeBuff256)&gMakeFadeBuff256;
func(&((u8*)gPaletteBuffer)[palIdx], &PAL_RAM[palIdx], ptrUnk->unk2, ptrUnk->unk1);
}
palIdx += 0x20;
ptrUnk++;
usedPalettesTmp /= 2;
}
}
void sub_0804FFE4() {
MemClear(&gFadeControl, sizeof(gFadeControl));
MemClear(&gUnk_020354C0, sizeof(gUnk_020354C0));
gFadeControl.mask = 0xffffffff;
}

View File

@ -2,9 +2,7 @@
#include "utils.h" #include "utils.h"
#include "structures.h" #include "structures.h"
extern u32 gUnk_020354C0;
void sub_08050008() { void sub_08050008() {
MemClear(&gUnk_020354C0, 128); MemClear(&gUnk_020354C0, sizeof(gUnk_020354C0));
gFadeControl.mask = 0xFFFFFFFF; gFadeControl.mask = 0xFFFFFFFF;
} }