diff --git a/asm/sub_080AD670.s b/asm/sub_080AD670.s deleted file mode 100644 index bdddb553..00000000 --- a/asm/sub_080AD670.s +++ /dev/null @@ -1,38 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_080AD670 -sub_080AD670: @ 0x080AD670 - push {lr} - sub sp, #0x14 - movs r0, #0x80 - lsls r0, r0, #8 - str r0, [sp, #4] - str r0, [sp] - mov r1, sp - movs r2, #0 - movs r0, #0x78 - strh r0, [r1, #8] - movs r0, #0x48 - strh r0, [r1, #0xa] - mov r0, sp - strh r2, [r0, #0x10] - mov r2, sp - ldr r0, _080AD6A4 @ =gMenu - ldr r0, [r0, #0x2c] - strh r0, [r1, #0xc] - strh r0, [r2, #0xe] - ldr r1, _080AD6A8 @ =gBgControls - mov r0, sp - movs r2, #1 - bl BgAffineSet - add sp, #0x14 - pop {pc} - .align 2, 0 -_080AD6A4: .4byte gMenu -_080AD6A8: .4byte gBgControls diff --git a/asm/sub_080AD6Ac.s b/asm/sub_080AD6Ac.s deleted file mode 100644 index 64332950..00000000 --- a/asm/sub_080AD6Ac.s +++ /dev/null @@ -1,105 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_080AD6AC -sub_080AD6AC: @ 0x080AD6AC - push {r4, r5, r6, lr} - ldr r4, _080AD6C0 @ =gMenu - ldrb r0, [r4, #6] - cmp r0, #1 - beq _080AD724 - cmp r0, #1 - bgt _080AD6C4 - cmp r0, #0 - beq _080AD6CA - b _080AD76A - .align 2, 0 -_080AD6C0: .4byte gMenu -_080AD6C4: - cmp r0, #2 - beq _080AD758 - b _080AD76A -_080AD6CA: - ldr r6, _080AD718 @ =gUnk_03000FD0 - ldrb r5, [r6] - cmp r5, #0 - bne _080AD76A - ldrb r1, [r4, #0x12] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - bne _080AD6E4 - ldr r1, _080AD71C @ =gScreen - ldrh r0, [r1, #0x18] - adds r0, #1 - strh r0, [r1, #0x18] -_080AD6E4: - bl sub_080AD84C - cmp r0, #2 - beq _080AD6F4 - ldr r0, _080AD71C @ =gScreen - ldrh r0, [r0, #0x18] - cmp r0, #0 - bne _080AD76A -_080AD6F4: - ldrb r0, [r4, #6] - adds r0, #1 - strb r0, [r4, #6] - ldr r1, _080AD71C @ =gScreen - strh r5, [r1, #0x18] - ldr r0, _080AD720 @ =0x00000C09 - strh r0, [r1, #0x14] - movs r0, #0x40 - str r0, [r6, #4] - movs r0, #6 - movs r1, #0x10 - bl DoFade - movs r0, #0xf8 - bl PlaySFX - b _080AD76A - .align 2, 0 -_080AD718: .4byte gUnk_03000FD0 -_080AD71C: .4byte gScreen -_080AD720: .4byte 0x00000C09 -_080AD724: - ldr r1, _080AD754 @ =gUnk_03000FD0 - ldrb r5, [r1] - cmp r5, #0 - bne _080AD76A - movs r0, #1 - rsbs r0, r0, #0 - str r0, [r1, #4] - ldrb r0, [r4, #6] - adds r0, #1 - strb r0, [r4, #6] - movs r0, #0x5a - strh r0, [r4, #8] - movs r0, #0xb4 - movs r1, #0 - movs r2, #0 - bl CreateObject - adds r1, r0, #0 - cmp r1, #0 - beq _080AD76A - strh r5, [r1, #0x2e] - movs r0, #0x48 - strh r0, [r1, #0x32] - b _080AD76A - .align 2, 0 -_080AD754: .4byte gUnk_03000FD0 -_080AD758: - bl sub_080AD84C - cmp r0, #0 - beq _080AD76A - ldrb r0, [r4, #5] - adds r0, #1 - strb r0, [r4, #5] - movs r0, #0x3c - strh r0, [r4, #8] -_080AD76A: - pop {r4, r5, r6, pc} diff --git a/include/screen.h b/include/screen.h index 1eafcf76..2f8c452f 100644 --- a/include/screen.h +++ b/include/screen.h @@ -70,6 +70,7 @@ typedef struct { BgControls controls; } Screen; +extern BgControls gBgControls; extern Screen gScreen; #endif \ No newline at end of file diff --git a/linker.ld b/linker.ld index f18fab06..f48d2678 100644 --- a/linker.ld +++ b/linker.ld @@ -883,9 +883,6 @@ SECTIONS { src/sub_080A554C.o(.text); asm/code_080A5574.o(.text); src/introSetTransition.o(.text); - src/sub_080AD644.o(.text); - asm/sub_080AD670.o(.text); - asm/sub_080AD6Ac.o(.text); asm/sub_080AD76C.o(.text); src/sub_080AD834.o(.text); asm/sub_080AD84C.o(.text); diff --git a/src/introSetTransition.c b/src/introSetTransition.c index ea8b8a5e..638bf4c6 100644 --- a/src/introSetTransition.c +++ b/src/introSetTransition.c @@ -7,7 +7,15 @@ extern void (*const gUnk_081320F0[])(); -extern u8 gUnk_03000FD0; +typedef struct { + u8 field_0x0; + u8 field_0x1; + u8 field_0x2; + u8 field_0x3; + u32 field_0x4; +} struct_03000FD0; + +extern struct_03000FD0 gUnk_03000FD0; typedef struct { char header[4]; @@ -45,7 +53,7 @@ void sub_080AD380() gUnk_081320F0[gUnk_02032EC0.transitionType](); break; case 2: - if (gUnk_03000FD0 != 0) { + if (gUnk_03000FD0.field_0x0 != 0) { return; } sub_0801DA90(1); @@ -90,17 +98,13 @@ void sub_080AD3F4(void) } } -typedef struct { - u16 field_0x0; - u16 field_0x2; - u16 field_0x4[2]; - u16 field_0x8; -} struct_03001010; +// typedef struct { +// u16 field_0x0[5]; +// } struct_03001010; -extern struct_03001010 gUnk_03001010; +extern u16 gUnk_03001010[5]; extern u8 gUnk_02024490; -extern u8 gUnk_03000FD0; void sub_080AD474(void) { @@ -146,11 +150,11 @@ void sub_080AD474(void) sub_080AD670(); } sub_080A3210(); - PlaySFX(3); + PlaySFX(3); //fanfare DoFade(6, 8); break; case 1: - if (gUnk_03000FD0 != 0) { + if (gUnk_03000FD0.field_0x0 != 0) { return; } if (((struct_02000000*)0x2000000)->gameLanguage == 0) { @@ -182,8 +186,8 @@ void sub_080AD474(void) } sub_080AD644(); if ((gMenu.transitionTimer & 0x20) == 0) { - gUnk_03001010.field_0x8 = 0xe000; - gUnk_03001010.field_0x2 = 0x84; + gUnk_03001010[4] = 0xe000; + gUnk_03001010[1] = 0x84; sub_080ADA14(0x1ff,0); } } @@ -194,4 +198,68 @@ void sub_080AD474(void) sub_080AD89C(); sub_0805E5C0(); sub_080AD9B0(); +} + +void sub_080AD644(void) { + + gUnk_03001010[2] = 0; + gUnk_03001010[3] = 0; + gUnk_03001010[4] = 57376; + gUnk_03001010[0] = 120; + gUnk_03001010[1] = 152; + sub_080ADA14(511, 1); + return; +} + +void sub_080AD670(void) +{ + struct BgAffineSrcData aff; + aff.texY = 0x8000; + aff.texX = 0x8000; + aff.scrX = 0x78; + aff.scrY = 0x48; + aff.alpha = 0; + aff.sy = aff.sx = gMenu.field_0x2c; + BgAffineSet(&aff, (struct BgAffineDstData*)&gBgControls, 1); +} + +void sub_080AD6AC(void) +{ + Entity *pEVar2; + + switch (gMenu.overlayType) { + case 0: + if (gUnk_03000FD0.field_0x0 == 0) { + if ((gMenu.field_0x11 & 1) == 0) { + gScreen.bg2.bg0Control++; + } + + if ((sub_080AD84C() == 2) || (gScreen.bg2.bg0Control == 0)) { + gMenu.overlayType++; + gScreen.bg2.bg0Control = 0; + gScreen.bg1.unk = 0xc09; + gUnk_03000FD0.field_0x4 = 0x40; + DoFade(6,0x10); + PlaySFX(0xf8); + } + } + break; + case 1: + if (gUnk_03000FD0.field_0x0 == '\0') { + gUnk_03000FD0.field_0x4 = -1; + gMenu.overlayType++; + gMenu.transitionTimer = 0x5a; + pEVar2 = CreateObject(0xb4,0,0); + if (pEVar2 != NULL) { + pEVar2->x.HALF.HI = 0; + pEVar2->y.HALF.HI = 0x48; + } + } + break; + case 2: + if (sub_080AD84C()) { + gMenu.menuType++; + gMenu.transitionTimer = 0x3c; + } + } } \ No newline at end of file diff --git a/src/sub_080AD644.c b/src/sub_080AD644.c deleted file mode 100644 index 059c544b..00000000 --- a/src/sub_080AD644.c +++ /dev/null @@ -1,15 +0,0 @@ -#include "global.h" - -extern s32 sub_080ADA14(u32, u32); -extern u16 gUnk_03001010[4]; - -void sub_080AD644(void) { - - gUnk_03001010[2] = 0; - gUnk_03001010[3] = 0; - gUnk_03001010[4] = 57376; - gUnk_03001010[0] = 120; - gUnk_03001010[1] = 152; - sub_080ADA14(511, 1); - return; -}