diff --git a/assets/assets.json b/assets/assets.json index 4520058a..0e0b3675 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -44376,26 +44376,6 @@ "start": 1216516, "size": 24 }, - { - "path": "demoScreen/gUnk_08127C98_DEMO_USA.bin", - "variants": [ - "DEMO_USA" - ], - "starts": { - "DEMO_USA": 1211544 - }, - "size": 48 - }, - { - "path": "demoScreen/gUnk_08127CC8_DEMO_USA.bin", - "variants": [ - "DEMO_USA" - ], - "starts": { - "DEMO_USA": 1211592 - }, - "size": 8 - }, { "path": "playerItemSword/gUnk_08129068.bin", "start": 1216616, diff --git a/data/const/demo.s b/data/const/demo.s deleted file mode 100644 index 92e56fb8..00000000 --- a/data/const/demo.s +++ /dev/null @@ -1,18 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -.ifdef DEMO_USA -@ TODO choose demo screen -demoFunctions:: - .4byte sub_080A2E40 - .4byte sub_080A2FD0 - .4byte sub_080A2F8C - -gUnk_08127C98:: - .incbin "demoScreen/gUnk_08127C98_DEMO_USA.bin" -gUnk_08127CC8:: - .incbin "demoScreen/gUnk_08127CC8_DEMO_USA.bin" -.endif diff --git a/linker.ld b/linker.ld index e154e144..e0631d40 100644 --- a/linker.ld +++ b/linker.ld @@ -122,8 +122,10 @@ SECTIONS { . = 0x00034CF0; gUnk_02034CF0 = .; . = 0x00034D30; gUnk_02034D30 = .; . = 0x00034DF0; gUnk_02034DF0 = .; + . = 0x0003508E; gUnk_0203508E = .; . = 0x000350E2; gUnk_020350E2 = .; . = 0x000350F0; gUnk_020350F0 = .; + . = 0x0003510E; gUnk_0203510E = .; . = 0x00035160; gUnk_02035160 = .; . = 0x000354B0; gUnk_020354B0 = .; . = 0x000354B4; gManagerCount = .; @@ -1567,7 +1569,7 @@ SECTIONS { data/const/playerItem/playerItemShield.o(.rodata); data/const/playerItem/playerItemFireRodProjectile.o(.rodata); #ifdef DEMO_USA - data/const/demo.o(.rodata); + src/demo.o(.rodata); #endif src/staffroll.o(.rodata); data/data_08127280.o(.rodata); diff --git a/src/demo.c b/src/demo.c index 94f2434f..445294e6 100644 --- a/src/demo.c +++ b/src/demo.c @@ -14,8 +14,10 @@ #include "screen.h" #include "game.h" -extern void (*const demoFunctions[])(void); void sub_080A30AC(void); +void sub_080A2E40(void); +void sub_080A2FD0(void); +void sub_080A2F8C(void); extern u8 gUnk_02000004; void sub_080A3198(u32, u32); @@ -26,12 +28,17 @@ extern u8 gUnk_08A05751[]; // sprite_table extern void gUnk_089FD1B4; extern void gUnk_089FD2F4; +extern u16 gUnk_0203508E[]; +extern u16 gUnk_0203510E[]; -extern u16 gUnk_08127CC8[4]; -extern void* gUnk_08127C98; extern u8 gUnk_08A068BF[129]; void DemoTask(void) { + static void (*const demoFunctions[])(void) = { + sub_080A2E40, + sub_080A2FD0, + sub_080A2F8C, + }; FlushSprites(); demoFunctions[gMain.state](); sub_080A30AC(); @@ -209,14 +216,24 @@ NONMATCH("asm/non_matching/demoScreen/sub_080A30AC.inc", void sub_080A30AC(void) END_NONMATCH void sub_080A3198(u32 param_1, u32 param_2) { + static const Font gUnk_08127C98[] = { + { gUnk_0203508E, (void*)0x0600d000, (void*)0x02000d00, 0, 0x1080, 0xd0, 1, 0, 0, 1, 9, 0, 0, 1, 1 }, + { gUnk_0203510E, (void*)0x0600d000, (void*)0x02000d00, 0, 0x80, 0xd0, 1, 0, 0, 1, 9, 0, 0, 1, 1 }, + }; + static const u16 gUnk_08127CC8[4] = { + 0x71c, + 0x720, + 0x721, + 0x0, + }; u16 r4 = gUnk_08127CC8[param_1]; if (gChooseFileState.unk_0x12 != r4) { gChooseFileState.unk_0x12 = r4; - MemClear(gUnk_08127C98 - 0x1e, 0x180); + MemClear(gUnk_08127C98[0].dest - 0xf, 0x180); if (r4 != 0) { - sub_0805F46C(r4, (Font*)&gUnk_08127C98); // TODO + sub_0805F46C(r4, gUnk_08127C98); } gScreen.bg0.updated = 1;