mirror of https://github.com/zeldaret/tmc.git
finish fade.c
This commit is contained in:
parent
d3fa739c94
commit
227703e496
|
@ -1,252 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start UpdateFade
|
||||
UpdateFade: @ 0x08050154
|
||||
push {r4, r5, r6, lr}
|
||||
ldr r4, _08050180 @ =gFadeControl
|
||||
ldrh r0, [r4, #8]
|
||||
movs r5, #0x1c
|
||||
ands r5, r0
|
||||
movs r6, #0
|
||||
ldrb r0, [r4]
|
||||
cmp r0, #0
|
||||
beq _080501BE
|
||||
ldrh r0, [r4, #0xc]
|
||||
ldrh r1, [r4, #0xa]
|
||||
subs r0, r0, r1
|
||||
strh r0, [r4, #0xc]
|
||||
lsls r0, r0, #0x10
|
||||
asrs r0, r0, #0x10
|
||||
ldrh r2, [r4, #0xe]
|
||||
movs r3, #0xe
|
||||
ldrsh r1, [r4, r3]
|
||||
cmp r0, r1
|
||||
bgt _080501B8
|
||||
strh r2, [r4, #0xc]
|
||||
b _080501B8
|
||||
.align 2, 0
|
||||
_08050180: .4byte gFadeControl
|
||||
_08050184:
|
||||
mvns r0, r5
|
||||
adds r0, #1
|
||||
ands r0, r5
|
||||
eors r5, r0
|
||||
cmp r0, #8
|
||||
beq _080501A8
|
||||
cmp r0, #8
|
||||
bhi _0805019A
|
||||
cmp r0, #4
|
||||
beq _080501A0
|
||||
b _080501B8
|
||||
_0805019A:
|
||||
cmp r0, #0x10
|
||||
beq _080501B0
|
||||
b _080501B8
|
||||
_080501A0:
|
||||
adds r0, r4, #0
|
||||
bl sub_080501C0
|
||||
b _080501B6
|
||||
_080501A8:
|
||||
adds r0, r4, #0
|
||||
bl sub_08050230
|
||||
b _080501B6
|
||||
_080501B0:
|
||||
adds r0, r4, #0
|
||||
bl sub_080502A4
|
||||
_080501B6:
|
||||
orrs r6, r0
|
||||
_080501B8:
|
||||
cmp r5, #0
|
||||
bne _08050184
|
||||
strb r6, [r4]
|
||||
_080501BE:
|
||||
pop {r4, r5, r6, pc}
|
||||
|
||||
thumb_func_start sub_080501C0
|
||||
sub_080501C0: @ 0x080501C0
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r3, r0, #0
|
||||
ldrh r1, [r3, #8]
|
||||
movs r0, #1
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _080501DA
|
||||
movs r0, #0xc
|
||||
ldrsh r1, [r3, r0]
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #1
|
||||
subs r5, r0, r1
|
||||
b _080501DE
|
||||
_080501DA:
|
||||
movs r2, #0xc
|
||||
ldrsh r5, [r3, r2]
|
||||
_080501DE:
|
||||
ldr r0, _080501F8 @ =gFadeControl
|
||||
ldr r2, [r0, #4]
|
||||
ldr r1, _080501FC @ =gUnk_020354C0
|
||||
movs r4, #0
|
||||
ldr r7, _08050200 @ =gUsedPalettes
|
||||
movs r6, #1
|
||||
_080501EA:
|
||||
adds r0, r2, #0
|
||||
ands r0, r6
|
||||
cmp r0, #0
|
||||
beq _08050204
|
||||
strb r6, [r1]
|
||||
strh r5, [r1, #2]
|
||||
b _08050208
|
||||
.align 2, 0
|
||||
_080501F8: .4byte gFadeControl
|
||||
_080501FC: .4byte gUnk_020354C0
|
||||
_08050200: .4byte gUsedPalettes
|
||||
_08050204:
|
||||
strb r0, [r1]
|
||||
strh r0, [r1, #2]
|
||||
_08050208:
|
||||
ldrb r0, [r3, #2]
|
||||
strb r0, [r1, #1]
|
||||
lsrs r2, r2, #1
|
||||
adds r4, #1
|
||||
adds r1, #4
|
||||
cmp r4, #0x1f
|
||||
bls _080501EA
|
||||
movs r0, #1
|
||||
rsbs r0, r0, #0
|
||||
str r0, [r7]
|
||||
movs r0, #0xe
|
||||
ldrsh r1, [r3, r0]
|
||||
movs r2, #0xc
|
||||
ldrsh r0, [r3, r2]
|
||||
eors r1, r0
|
||||
rsbs r0, r1, #0
|
||||
orrs r0, r1
|
||||
lsrs r0, r0, #0x1f
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08050230
|
||||
sub_08050230: @ 0x08050230
|
||||
push {r4, r5, lr}
|
||||
ldrh r4, [r0, #8]
|
||||
ldrh r0, [r0, #0xc]
|
||||
lsls r5, r0, #0x10
|
||||
asrs r2, r5, #0x14
|
||||
movs r0, #0xf
|
||||
ands r2, r0
|
||||
movs r0, #1
|
||||
ands r4, r0
|
||||
cmp r4, #0
|
||||
beq _0805024A
|
||||
movs r0, #0xf
|
||||
subs r2, r0, r2
|
||||
_0805024A:
|
||||
ldr r3, _08050264 @ =gScreen
|
||||
ldr r1, _08050268 @ =gUnk_080FC3C4
|
||||
lsls r0, r2, #1
|
||||
adds r0, r0, r1
|
||||
ldrh r1, [r0]
|
||||
adds r0, r3, #0
|
||||
adds r0, #0x64
|
||||
strh r1, [r0]
|
||||
cmp r5, #0
|
||||
beq _0805026C
|
||||
movs r0, #1
|
||||
b _08050298
|
||||
.align 2, 0
|
||||
_08050264: .4byte gScreen
|
||||
_08050268: .4byte gUnk_080FC3C4
|
||||
_0805026C:
|
||||
ldr r1, _0805029C @ =gUnk_03000000
|
||||
movs r0, #0
|
||||
strb r0, [r1, #2]
|
||||
cmp r4, #0
|
||||
bne _08050296
|
||||
ldrh r2, [r3, #8]
|
||||
ldr r1, _080502A0 @ =0x0000FFBF
|
||||
adds r0, r1, #0
|
||||
ands r0, r2
|
||||
strh r0, [r3, #8]
|
||||
ldrh r2, [r3, #0x14]
|
||||
adds r0, r1, #0
|
||||
ands r0, r2
|
||||
strh r0, [r3, #0x14]
|
||||
ldrh r2, [r3, #0x20]
|
||||
adds r0, r1, #0
|
||||
ands r0, r2
|
||||
strh r0, [r3, #0x20]
|
||||
ldrh r0, [r3, #0x2c]
|
||||
ands r1, r0
|
||||
strh r1, [r3, #0x2c]
|
||||
_08050296:
|
||||
movs r0, #0
|
||||
_08050298:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0805029C: .4byte gUnk_03000000
|
||||
_080502A0: .4byte 0x0000FFBF
|
||||
|
||||
thumb_func_start sub_080502A4
|
||||
sub_080502A4: @ 0x080502A4
|
||||
push {r4, lr}
|
||||
ldrh r1, [r0, #8]
|
||||
movs r0, #1
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _080502E4
|
||||
ldr r4, _080502E0 @ =gFadeControl
|
||||
ldrh r0, [r4, #0x10]
|
||||
ldrh r1, [r4, #0xa]
|
||||
subs r0, r0, r1
|
||||
strh r0, [r4, #0x10]
|
||||
lsls r0, r0, #0x10
|
||||
cmp r0, #0
|
||||
bgt _080502C4
|
||||
movs r0, #0
|
||||
strh r0, [r4, #0x10]
|
||||
_080502C4:
|
||||
movs r1, #0x12
|
||||
ldrsh r0, [r4, r1]
|
||||
movs r2, #0x14
|
||||
ldrsh r1, [r4, r2]
|
||||
movs r3, #0x10
|
||||
ldrsh r2, [r4, r3]
|
||||
bl sub_0801E1EC
|
||||
movs r1, #0x10
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r0, #0
|
||||
bne _08050314
|
||||
movs r0, #0
|
||||
b _08050316
|
||||
.align 2, 0
|
||||
_080502E0: .4byte gFadeControl
|
||||
_080502E4:
|
||||
ldr r4, _08050310 @ =gFadeControl
|
||||
ldrh r0, [r4, #0xa]
|
||||
ldrh r2, [r4, #0x10]
|
||||
adds r0, r0, r2
|
||||
strh r0, [r4, #0x10]
|
||||
movs r3, #0x12
|
||||
ldrsh r0, [r4, r3]
|
||||
movs r2, #0x14
|
||||
ldrsh r1, [r4, r2]
|
||||
movs r3, #0x10
|
||||
ldrsh r2, [r4, r3]
|
||||
bl sub_0801E1EC
|
||||
movs r1, #0x10
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r0, #0x96
|
||||
ble _08050314
|
||||
bl sub_0801E104
|
||||
movs r0, #0
|
||||
b _08050316
|
||||
.align 2, 0
|
||||
_08050310: .4byte gFadeControl
|
||||
_08050314:
|
||||
movs r0, #1
|
||||
_08050316:
|
||||
pop {r4, pc}
|
|
@ -510,7 +510,7 @@ sub_08053974: @ 0x08053974
|
|||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _080539A8
|
||||
bl sub_0804FFE4
|
||||
bl InitFade
|
||||
movs r0, #1
|
||||
bl DispReset
|
||||
bl sub_080197AC
|
||||
|
|
|
@ -4948,7 +4948,7 @@ sub_080A7328: @ 0x080A7328
|
|||
movs r0, #1
|
||||
bl DispReset
|
||||
bl MessageInitialize
|
||||
bl sub_080ADD30
|
||||
bl ResetPalettes
|
||||
movs r0, #0
|
||||
bl sub_0801CFA8
|
||||
ldr r0, _080A739C @ =gGFXSlots
|
||||
|
|
|
@ -8,8 +8,8 @@
|
|||
|
||||
|
||||
|
||||
thumb_func_start sub_080ADD30
|
||||
sub_080ADD30: @ 0x080ADD30
|
||||
thumb_func_start ResetPalettes
|
||||
ResetPalettes: @ 0x080ADD30
|
||||
push {r4, r5, r6, lr}
|
||||
ldr r4, _080ADD6C @ =gGFXSlots
|
||||
movs r1, #0x85
|
||||
|
|
|
@ -125,7 +125,7 @@ sub_08051A14: @ 0x08051A14
|
|||
bl EraseAllEntities
|
||||
bl sub_080197AC
|
||||
bl sub_08080668
|
||||
bl sub_080ADD30
|
||||
bl ResetPalettes
|
||||
movs r0, #1
|
||||
bl sub_0801CFA8
|
||||
bl sub_0806FD8C
|
||||
|
|
|
@ -89,7 +89,7 @@ _0808CF82:
|
|||
bl sub_0808D030
|
||||
movs r0, #0
|
||||
bl sub_0801CFA8
|
||||
bl sub_080ADD30
|
||||
bl ResetPalettes
|
||||
ldr r0, _0808D024 @ =gGFXSlots
|
||||
movs r6, #1
|
||||
strb r6, [r0]
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#ifndef ARM_PROXY_H
|
||||
#define ARM_PROXY_H
|
||||
|
||||
extern void PrepNextFrame(void);
|
||||
extern void WaitForNextFrame(void);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -593,6 +593,6 @@ extern SoundPlayingInfo gSoundPlayingInfo;
|
|||
|
||||
void InitSound(void);
|
||||
void SoundReq(Sound sound);
|
||||
void SoundLoop(void);
|
||||
void AudioMain(void);
|
||||
|
||||
#endif // AUDIO_H
|
||||
|
|
|
@ -49,7 +49,6 @@ extern u32 GetSaleItemConfirmMessageID(u32);
|
|||
extern void FlushSprites(void);
|
||||
extern void DispReset(u32);
|
||||
extern void InitSoundPlayingInfo(void);
|
||||
extern void InitDMA(void);
|
||||
extern Entity* CreateProjectile(u32);
|
||||
extern void RegisterPlayerHitbox();
|
||||
extern s32 GetItemPrice();
|
||||
|
|
|
@ -47,18 +47,23 @@ enum {
|
|||
SCREEN_DEBUG_TEXT,
|
||||
};
|
||||
|
||||
enum {
|
||||
DEFAULT,
|
||||
SLEEP,
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
vu8 interruptFlag;
|
||||
u8 field_0x1;
|
||||
u8 sleepStatus;
|
||||
u8 screen;
|
||||
u8 funcIndex;
|
||||
u8 transition;
|
||||
u8 field_0x5;
|
||||
u8 muteAudio;
|
||||
u8 field_0x7;
|
||||
u8 countdown;
|
||||
u8 field_0x9;
|
||||
u8 field_0xa;
|
||||
u8 pauseFrames;
|
||||
u8 pauseCount;
|
||||
u8 pauseInterval;
|
||||
u16 ticks;
|
||||
} Main;
|
||||
|
||||
|
@ -84,18 +89,20 @@ extern UI gUnk_02032EC0;
|
|||
*/
|
||||
void InitScreen(u32 screen);
|
||||
|
||||
void InitDMA(void);
|
||||
|
||||
extern void sub_08056208(void);
|
||||
extern void sub_0804FFE4(void);
|
||||
extern void sub_080ADD30(void);
|
||||
extern void InitFade(void);
|
||||
extern void ResetPalettes(void);
|
||||
|
||||
extern void DoSoftReset(void);
|
||||
extern void sub_08056260(void);
|
||||
extern void SetSleepMode(void);
|
||||
extern void VBlankIntrWait();
|
||||
extern void UpdateFade(void);
|
||||
extern void FadeMain(void);
|
||||
|
||||
extern u8 gUnk_03003DE4;
|
||||
|
||||
extern void sub_0804FF84(u32);
|
||||
extern void SetBrightness(u32);
|
||||
extern u16 gPaletteBuffer[];
|
||||
extern void VBlankInterruptWait(void);
|
||||
extern void DisableInterruptsAndDMA(void);
|
||||
|
|
|
@ -484,7 +484,6 @@ SECTIONS {
|
|||
src/room.o(.text);
|
||||
src/roomInit.o(.text);
|
||||
src/fade.o(.text);
|
||||
asm/code_08050038.o(.text);
|
||||
src/fileScreen.o(.text);
|
||||
asm/fileScreen.o(.text);
|
||||
src/overworld.o(.text);
|
||||
|
|
|
@ -143,7 +143,7 @@ void SoundReq(Sound sound) {
|
|||
}
|
||||
}
|
||||
|
||||
void SoundLoop(void) {
|
||||
void AudioMain(void) {
|
||||
s32 fadeValue;
|
||||
SoundPlayingInfo* ptr = &gSoundPlayingInfo;
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ void sub_080A2E40(void) {
|
|||
MemClear((void*)VRAM, 0x80);
|
||||
MessageInitialize();
|
||||
EraseAllEntities();
|
||||
sub_080ADD30();
|
||||
ResetPalettes();
|
||||
sub_0801CFA8(0);
|
||||
MemClear(&gUnk_02032EC0, sizeof gUnk_02032EC0);
|
||||
MemClear(&gChooseFileState, sizeof gChooseFileState);
|
||||
|
|
113
src/fade.c
113
src/fade.c
|
@ -8,22 +8,26 @@ typedef struct {
|
|||
u8 field_0x1;
|
||||
u8 spritesOffset;
|
||||
} struct_03000000;
|
||||
|
||||
extern struct_03000000 gUnk_03000000;
|
||||
|
||||
static u32 sub_080501C0(FadeControl* ctl);
|
||||
static u32 sub_08050230(FadeControl* ctl);
|
||||
static u32 sub_080502A4(FadeControl* ctl);
|
||||
|
||||
extern u32 gUsedPalettes;
|
||||
extern u16 gPaletteBuffer[];
|
||||
extern u16 gUnk_080FC3C4[];
|
||||
|
||||
// function pointer to overlay (0x03005e98) in ram calls rom function MakeFadeBuff256
|
||||
extern u32 gMakeFadeBuff256;
|
||||
typedef void (*fptrMakeFadeBuff256)(u8*, u8*, u16, u8);
|
||||
|
||||
void sub_0804FF84(u32 arg0) {
|
||||
void SetBrightness(u32 arg0) {
|
||||
gSaveHeader->brightnessPref = arg0;
|
||||
gUsedPalettes = 0xffffffff;
|
||||
}
|
||||
|
||||
void FadeMain() {
|
||||
void FadeVBlank(void) {
|
||||
fptrMakeFadeBuff256 func;
|
||||
u32 usedPalettesTmp, palIdx;
|
||||
|
||||
|
@ -40,11 +44,11 @@ void FadeMain() {
|
|||
palIdx += 0x20;
|
||||
|
||||
ptrUnk++;
|
||||
usedPalettesTmp /= 2;
|
||||
usedPalettesTmp >>= 1;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0804FFE4() {
|
||||
void InitFade() {
|
||||
MemClear(&gFadeControl, sizeof(gFadeControl));
|
||||
MemClear(&gUnk_020354C0, sizeof(gUnk_020354C0));
|
||||
gFadeControl.mask = 0xffffffff;
|
||||
|
@ -115,3 +119,102 @@ void sub_08050110(u32 param_1, u32 param_2, u32 fadeType, u32 fadeSpeed) {
|
|||
gFadeControl.field_0x18 = 0;
|
||||
DoFade(fadeType, fadeSpeed);
|
||||
}
|
||||
|
||||
void FadeMain(void) {
|
||||
FadeControl* ctl = &gFadeControl;
|
||||
u32 flags = ctl->fadeType & 0x1C;
|
||||
u32 active = 0;
|
||||
u32 bit;
|
||||
|
||||
if (ctl->active) {
|
||||
ctl->fadeDuration -= ctl->fadeSpeed;
|
||||
if ((s16)ctl->fadeDuration <= (s16)ctl->field_0xe)
|
||||
ctl->fadeDuration = ctl->field_0xe;
|
||||
while (flags) {
|
||||
bit = (~flags + 1) & flags;
|
||||
flags ^= bit;
|
||||
switch (bit) {
|
||||
case 4:
|
||||
active |= sub_080501C0(ctl);
|
||||
break;
|
||||
case 8:
|
||||
active |= sub_08050230(ctl);
|
||||
break;
|
||||
case 16:
|
||||
active |= sub_080502A4(ctl);
|
||||
break;
|
||||
}
|
||||
}
|
||||
ctl->active = active;
|
||||
}
|
||||
}
|
||||
|
||||
static u32 sub_080501C0(FadeControl* ctl) {
|
||||
u32 v1;
|
||||
u32 v2;
|
||||
struct_020354C0* v3;
|
||||
u32 i;
|
||||
|
||||
if (ctl->fadeType & 1) {
|
||||
v1 = 256 - (s16)ctl->fadeDuration;
|
||||
} else {
|
||||
v1 = (s16)ctl->fadeDuration;
|
||||
}
|
||||
v2 = gFadeControl.mask;
|
||||
v3 = gUnk_020354C0;
|
||||
for (i = 0; i < 0x20; ++i, ++v3) {
|
||||
if (v2 & 1) {
|
||||
v3->unk0 = 1;
|
||||
v3->unk2 = v1;
|
||||
} else {
|
||||
v3->unk0 = 0;
|
||||
v3->unk2 = 0;
|
||||
}
|
||||
v3->unk1 = ctl->field_0x2;
|
||||
v2 >>= 1;
|
||||
}
|
||||
gUsedPalettes = 0xffffffff;
|
||||
|
||||
return !!((s16)ctl->field_0xe ^ (s16)ctl->fadeDuration);
|
||||
}
|
||||
|
||||
static u32 sub_08050230(FadeControl* ctl) {
|
||||
u32 type = ctl->fadeType;
|
||||
u32 idx = ((s16)ctl->fadeDuration >> 4) & 0xF;
|
||||
if (type & 1)
|
||||
idx = 0xF - idx;
|
||||
gScreen.controls.mosaicSize = gUnk_080FC3C4[idx];
|
||||
if (ctl->fadeDuration != 0)
|
||||
return 1;
|
||||
|
||||
// fade is finished
|
||||
gUnk_03000000.spritesOffset = 0;
|
||||
if ((type & 1) == 0) {
|
||||
// reset registers if fading in
|
||||
gScreen.bg0.control &= ~BGCNT_MOSAIC;
|
||||
gScreen.bg1.control &= ~BGCNT_MOSAIC;
|
||||
gScreen.bg2.control &= ~BGCNT_MOSAIC;
|
||||
gScreen.bg3.control &= ~BGCNT_MOSAIC;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 sub_080502A4(FadeControl* ctl) {
|
||||
if (ctl->fadeType & 1) {
|
||||
s32 delta = (u16)gFadeControl.field_0x10 - gFadeControl.fadeSpeed;
|
||||
gFadeControl.field_0x10 -= gFadeControl.fadeSpeed;
|
||||
if (delta << 16 <= 0)
|
||||
gFadeControl.field_0x10 = 0;
|
||||
sub_0801E1EC(gFadeControl.field_0x12, gFadeControl.field_0x14, gFadeControl.field_0x10);
|
||||
if (!gFadeControl.field_0x10)
|
||||
return 0;
|
||||
} else {
|
||||
gFadeControl.field_0x10 += gFadeControl.fadeSpeed;
|
||||
sub_0801E1EC(gFadeControl.field_0x12, gFadeControl.field_0x14, gFadeControl.field_0x10);
|
||||
if (gFadeControl.field_0x10 > 150) {
|
||||
sub_0801E104();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -197,7 +197,7 @@ static void HandleFileScreenEnter(void) {
|
|||
MessageInitialize();
|
||||
EraseAllEntities();
|
||||
sub_08080668();
|
||||
sub_080ADD30();
|
||||
ResetPalettes();
|
||||
sub_0801CFA8(0);
|
||||
MemClear(&gUnk_0200AF00, sizeof(gUnk_0200AF00));
|
||||
MemClear(&gUnk_02019EE0, sizeof(gUnk_02019EE0));
|
||||
|
|
|
@ -29,7 +29,7 @@ extern void sub_080ADD70();
|
|||
extern void sub_0801C25C();
|
||||
extern void UpdateDisplayControls();
|
||||
extern void LoadResources();
|
||||
extern void FadeMain();
|
||||
extern void FadeVBlank();
|
||||
extern void HandlePlayerLife();
|
||||
extern void DoPlayerAction();
|
||||
extern void sub_080171F0();
|
||||
|
@ -156,7 +156,7 @@ void LoadResources(void) {
|
|||
}
|
||||
}
|
||||
|
||||
void PrepNextFrame(void) {
|
||||
void WaitForNextFrame(void) {
|
||||
gMain.interruptFlag = 0;
|
||||
VBlankIntrWait();
|
||||
do {
|
||||
|
@ -176,7 +176,7 @@ void PrepNextFrame(void) {
|
|||
if (gUnk_0200B650 != NULL)
|
||||
DmaCopy32(3, &gBG2Buffer, VRAM + (*gUnk_0200B650 & 0x1f00) * 8, 0x5C0);
|
||||
}
|
||||
FadeMain();
|
||||
FadeVBlank();
|
||||
}
|
||||
|
||||
void PlayerUpdate(Entity* this) {
|
||||
|
|
|
@ -145,7 +145,7 @@ static void HandleTitlescreen(void) {
|
|||
gIntroState.gameLanguage = 7;
|
||||
EraseAllEntities();
|
||||
sub_0801CFA8(0);
|
||||
sub_080ADD30();
|
||||
ResetPalettes();
|
||||
gGFXSlots.unk0 = 1;
|
||||
LoadGfxGroup(2);
|
||||
if (gSaveHeader->gameLanguage == 0) {
|
||||
|
|
43
src/main.c
43
src/main.c
|
@ -38,8 +38,6 @@ void (*const sScreenHandlers[])(void) = {
|
|||
static void sub_080560B8(void);
|
||||
|
||||
void AgbMain(void) {
|
||||
int var0;
|
||||
|
||||
InitOverlays();
|
||||
InitSound();
|
||||
InitDMA();
|
||||
|
@ -47,11 +45,11 @@ void AgbMain(void) {
|
|||
sub_080560B8();
|
||||
sub_08056208();
|
||||
gUnk_02000010.field_0x4 = 193;
|
||||
sub_0804FFE4();
|
||||
InitFade();
|
||||
DmaCopy32(3, BG_PLTT, gPaletteBuffer, BG_PLTT_SIZE);
|
||||
sub_0804FF84(1);
|
||||
SetBrightness(1);
|
||||
MessageInitialize();
|
||||
sub_080ADD30();
|
||||
ResetPalettes();
|
||||
gRand = 0x1234567;
|
||||
MemClear(&gMain, sizeof(gMain));
|
||||
InitScreen(SCREEN_INTRO);
|
||||
|
@ -61,22 +59,23 @@ void AgbMain(void) {
|
|||
DoSoftReset();
|
||||
}
|
||||
|
||||
switch (gMain.field_0x1) {
|
||||
case 1:
|
||||
sub_08056260();
|
||||
switch (gMain.sleepStatus) {
|
||||
case SLEEP:
|
||||
SetSleepMode();
|
||||
break;
|
||||
case 0:
|
||||
case DEFAULT:
|
||||
default:
|
||||
if (gMain.countdown != 0) {
|
||||
if (gMain.pauseFrames != 0) {
|
||||
do {
|
||||
VBlankIntrWait();
|
||||
} while (--gMain.countdown);
|
||||
} while (--gMain.pauseFrames);
|
||||
}
|
||||
|
||||
if (gMain.field_0x9 != 0) {
|
||||
gMain.field_0x9--;
|
||||
var0 = gMain.field_0xa;
|
||||
while (var0-- > 0) {
|
||||
if (gMain.pauseCount != 0) {
|
||||
int cnt;
|
||||
gMain.pauseCount--;
|
||||
cnt = gMain.pauseInterval;
|
||||
while (cnt-- > 0) {
|
||||
VBlankIntrWait();
|
||||
}
|
||||
}
|
||||
|
@ -84,11 +83,11 @@ void AgbMain(void) {
|
|||
gMain.ticks++;
|
||||
sScreenHandlers[gMain.screen]();
|
||||
MessageMain();
|
||||
UpdateFade();
|
||||
SoundLoop();
|
||||
FadeMain();
|
||||
AudioMain();
|
||||
break;
|
||||
}
|
||||
PrepNextFrame();
|
||||
WaitForNextFrame();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -200,7 +199,7 @@ NONMATCH("asm/non_matching/sub_080560B8.inc", static void sub_080560B8(void)) {
|
|||
}
|
||||
|
||||
temp = gUnk_02000010.signature ^ SIGNATURE;
|
||||
b = !!temp;
|
||||
b = BOOLCAST(temp);
|
||||
|
||||
if ((gUnk_02000010.field_0x4 != 0) && (gUnk_02000010.field_0x4 != 0xc1)) {
|
||||
b = TRUE;
|
||||
|
@ -257,7 +256,7 @@ void sub_08056250() {
|
|||
gScreen._6c = 0;
|
||||
}
|
||||
|
||||
void sub_08056260(void) {
|
||||
void SetSleepMode(void) {
|
||||
u32 restore;
|
||||
Main* m;
|
||||
|
||||
|
@ -272,8 +271,8 @@ void sub_08056260(void) {
|
|||
REG_IE = restore;
|
||||
REG_IME = 1;
|
||||
m = &gMain;
|
||||
*(vu8*)&m->field_0x1; // force a read
|
||||
m->field_0x1 = 0;
|
||||
*(vu8*)&m->sleepStatus; // force a read
|
||||
m->sleepStatus = 0;
|
||||
}
|
||||
|
||||
// Convert AABB to screen coordinates and check if it's within the viewport
|
||||
|
|
|
@ -513,7 +513,7 @@ void sub_0805289C(void) {
|
|||
|
||||
u32 sub_080528B4(void) {
|
||||
if (gScreenTransition.field_0x4[1]) {
|
||||
sub_0804FFE4();
|
||||
InitFade();
|
||||
gMain.funcIndex = 3;
|
||||
gMain.transition = 0;
|
||||
DoFade(5, 8);
|
||||
|
@ -564,7 +564,7 @@ u32 HandleRoomExit(void) {
|
|||
}
|
||||
RoomExitCallback();
|
||||
gMain.transition = 3;
|
||||
*(&gMain.field_0xa + 1) = 1;
|
||||
*(&gMain.pauseInterval + 1) = 1;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#include "gba/eeprom.h"
|
||||
#include "audio.h"
|
||||
#include "menu.h"
|
||||
#include "main.h"
|
||||
#include "functions.h"
|
||||
|
||||
typedef struct SaveFileStatus {
|
||||
|
|
Loading…
Reference in New Issue