diff options
author | huderlem <huderlem@gmail.com> | 2019-08-08 07:14:26 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-08 07:14:26 -0500 |
commit | 4c8669a3aad601f1381ca9c67c78040ce80157df (patch) | |
tree | 9159d3545978aa61ee210af5c66c09d3893f9e54 | |
parent | 08bd3049160f9a6d05aa680a3106854015798f58 (diff) | |
parent | 254f7f6a218d68ced40fdf5f08b3e63d272981fc (diff) |
Merge pull request #7 from camthesaxman/misc
decompile rom_1068C.s and rom_528AC.s
-rwxr-xr-x | .gitignore | 2 | ||||
-rwxr-xr-x | Makefile | 8 | ||||
-rwxr-xr-x | asm/bonus_field_select.s | 4 | ||||
-rwxr-xr-x | asm/field_select.s | 4 | ||||
-rwxr-xr-x | asm/high_scores.s | 24 | ||||
-rwxr-xr-x | asm/options.s | 26 | ||||
-rwxr-xr-x | asm/pokedex.s | 16 | ||||
-rwxr-xr-x | asm/rom_1068C.s | 348 | ||||
-rwxr-xr-x | asm/rom_11B9C.s | 16 | ||||
-rwxr-xr-x | asm/rom_3219C.s | 8 | ||||
-rwxr-xr-x | asm/rom_528AC.s | 529 | ||||
-rwxr-xr-x | data/rom.s | 32 | ||||
-rw-r--r-- | include/functions.h | 32 | ||||
-rwxr-xr-x | include/main.h | 25 | ||||
-rwxr-xr-x | include/titlescreen.h | 2 | ||||
-rw-r--r-- | include/variables.h | 8 | ||||
-rwxr-xr-x | ld_script.txt | 4 | ||||
-rwxr-xr-x | src/gbplayer.c | 1 | ||||
-rw-r--r-- | src/rom_1068C.c | 124 | ||||
-rwxr-xr-x | src/rom_3219C.c | 16 | ||||
-rw-r--r-- | src/rom_528AC.c | 254 | ||||
-rwxr-xr-x | src/titlescreen.c | 149 |
22 files changed, 584 insertions, 1048 deletions
@@ -28,3 +28,5 @@ build/ .DS_Store *.ddump baserom.* +*.swp + @@ -105,6 +105,8 @@ include graphics_rules.mk $(C_BUILDDIR)/rom_850.o: CC1 := tools/agbcc/bin/old_agbcc $(C_BUILDDIR)/gbplayer.o: CC1 := tools/agbcc/bin/old_agbcc +#$(C_BUILDDIR)/rom_528AC.o: CC1 := tools/agbcc/bin/old_agbcc + $(C_BUILDDIR)/libc.o: CC1 := tools/agbcc/bin/old_agbcc $(C_BUILDDIR)/libc.o: CFLAGS := -O2 @@ -122,9 +124,9 @@ $(C_BUILDDIR)/%.o: c_dep := endif $(C_BUILDDIR)/%.o : $(C_SUBDIR)/%.c $$(c_dep) - @$(CPP) $(CPPFLAGS) $< -o $(C_BUILDDIR)/$*.i - @$(PREPROC) $(C_BUILDDIR)/$*.i charmap.txt | $(CC1) $(CFLAGS) -o $(C_BUILDDIR)/$*.s - @echo -e ".text\n\t.align\t2, 0\n" >> $(C_BUILDDIR)/$*.s + $(CPP) $(CPPFLAGS) $< -o $(C_BUILDDIR)/$*.i + $(PREPROC) $(C_BUILDDIR)/$*.i charmap.txt | $(CC1) $(CFLAGS) -o $(C_BUILDDIR)/$*.s + echo -e ".text\n\t.align\t2, 0\n" >> $(C_BUILDDIR)/$*.s $(AS) $(ASFLAGS) -o $@ $(C_BUILDDIR)/$*.s ifeq ($(NODEP),) diff --git a/asm/bonus_field_select.s b/asm/bonus_field_select.s index cea2519..331e00b 100755 --- a/asm/bonus_field_select.s +++ b/asm/bonus_field_select.s @@ -179,7 +179,7 @@ sub_2710: @ 0x08002710 ldr r0, _0800275C @ =gUnknown_0202BEE4 strb r1, [r0] ldr r1, _08002760 @ =gUnknown_0201A4C0 - ldr r0, _08002764 @ =gUnknown_0200B134 + ldr r0, _08002764 @ =gMain+0x74 adds r0, #0xce ldrb r0, [r0] strb r0, [r1] @@ -194,7 +194,7 @@ _08002754: .4byte gUnknown_0201A4F4 _08002758: .4byte gUnknown_0201A4B0 _0800275C: .4byte gUnknown_0202BEE4 _08002760: .4byte gUnknown_0201A4C0 -_08002764: .4byte gUnknown_0200B134 +_08002764: .4byte gMain+0x74 thumb_func_start sub_2768 sub_2768: @ 0x08002768 diff --git a/asm/field_select.s b/asm/field_select.s index 665ab73..f789dbf 100755 --- a/asm/field_select.s +++ b/asm/field_select.s @@ -175,7 +175,7 @@ sub_8C38: @ 0x08008C38 strh r1, [r2, #0x16] strh r1, [r2, #0x12] strb r3, [r2, #0x14] - ldr r0, _08008C74 @ =gUnknown_0200B134 + ldr r0, _08008C74 @ =gMain+0x74 adds r1, r0, #0 adds r1, #0xce ldrb r1, [r1] @@ -187,7 +187,7 @@ sub_8C38: @ 0x08008C38 bx lr .align 2, 0 _08008C70: .4byte gUnknown_02002838 -_08008C74: .4byte gUnknown_0200B134 +_08008C74: .4byte gMain+0x74 _08008C78: .4byte gUnknown_02002850 thumb_func_start sub_8C7C diff --git a/asm/high_scores.s b/asm/high_scores.s index 225b4bc..2c93e68 100755 --- a/asm/high_scores.s +++ b/asm/high_scores.s @@ -187,7 +187,7 @@ sub_CFD4: @ 0x0800CFD4 mov r8, r0 ldr r1, _0800D0B4 @ =gUnknown_0202C610 mov sl, r1 - ldr r2, _0800D0B8 @ =gUnknown_0200B134 + ldr r2, _0800D0B8 @ =gMain+0x74 mov sb, r2 movs r3, #0 mov ip, r3 @@ -296,7 +296,7 @@ _0800D090: .align 2, 0 _0800D0B0: .4byte gUnknown_02002858 _0800D0B4: .4byte gUnknown_0202C610 -_0800D0B8: .4byte gUnknown_0200B134 +_0800D0B8: .4byte gMain+0x74 _0800D0BC: .4byte gUnknown_0202C550 _0800D0C0: .4byte gUnknown_0201B178 _0800D0C4: .4byte gUnknown_0202BEBC @@ -1282,7 +1282,7 @@ _0800D880: cmp r3, #3 ble _0800D880 movs r3, #0 - ldr r0, _0800D908 @ =gUnknown_0200B134 + ldr r0, _0800D908 @ =gMain+0x74 mov r8, r0 ldr r1, _0800D8F8 @ =gUnknown_0202C610 mov ip, r1 @@ -1330,7 +1330,7 @@ _0800D8F8: .4byte gUnknown_0202C610 _0800D8FC: .4byte gMain _0800D900: .4byte gUnknown_02002858 _0800D904: .4byte gUnknown_0201A500 -_0800D908: .4byte gUnknown_0200B134 +_0800D908: .4byte gMain+0x74 _0800D90C: movs r0, #0x6a bl m4aSongNumStart @@ -1735,7 +1735,7 @@ _0800DC3C: ldr r1, _0800DCDC @ =gUnknown_0201B170 str r0, [r1] movs r2, #0 - ldr r3, _0800DCE0 @ =gUnknown_0200B134 + ldr r3, _0800DCE0 @ =gMain+0x74 mov r8, r3 ldr r7, _0800DCE4 @ =gUnknown_0202C610 mov ip, r7 @@ -1795,7 +1795,7 @@ _0800DCD0: .4byte gUnknown_0201B178 _0800DCD4: .4byte gUnknown_0202BEBC _0800DCD8: .4byte gUnknown_0202BED8 _0800DCDC: .4byte gUnknown_0201B170 -_0800DCE0: .4byte gUnknown_0200B134 +_0800DCE0: .4byte gMain+0x74 _0800DCE4: .4byte gUnknown_0202C610 _0800DCE8: .4byte gMain _0800DCEC: .4byte gUnknown_02002858 @@ -5054,7 +5054,7 @@ sub_F6E0: @ 0x0800F6E0 movs r0, #0 strb r0, [r1] movs r2, #0 - ldr r0, _0800F744 @ =gUnknown_0200B134 + ldr r0, _0800F744 @ =gMain+0x74 mov r8, r0 ldr r3, _0800F748 @ =gUnknown_08079430 mov ip, r3 @@ -5099,7 +5099,7 @@ _0800F718: bx r0 .align 2, 0 _0800F740: .4byte gUnknown_0202BEB0 -_0800F744: .4byte gUnknown_0200B134 +_0800F744: .4byte gMain+0x74 _0800F748: .4byte gUnknown_08079430 thumb_func_start sub_F74C @@ -5112,7 +5112,7 @@ sub_F74C: @ 0x0800F74C sub sp, #0x14 movs r0, #0 mov r8, r0 - ldr r1, _0800F85C @ =gUnknown_0200B134 + ldr r1, _0800F85C @ =gMain+0x74 str r1, [sp] _0800F760: bl Random @@ -5229,7 +5229,7 @@ _0800F834: bl Random b _0800F872 .align 2, 0 -_0800F85C: .4byte gUnknown_0200B134 +_0800F85C: .4byte gMain+0x74 _0800F860: .4byte gUnknown_0200B218 _0800F864: .4byte gUnknown_0200B22C _0800F868: @@ -5838,7 +5838,7 @@ _0800FD1C: .4byte 0x00000914 sub_FD20: @ 0x0800FD20 sub sp, #0x19c movs r2, #0 - ldr r3, _0800FD48 @ =gUnknown_0200B134 + ldr r3, _0800FD48 @ =gMain+0x74 mov r1, sp _0800FD28: adds r0, r2, r3 @@ -5858,7 +5858,7 @@ _0800FD3A: movs r0, #0 b _0800FD56 .align 2, 0 -_0800FD48: .4byte gUnknown_0200B134 +_0800FD48: .4byte gMain+0x74 _0800FD4C: adds r1, #2 adds r2, #1 diff --git a/asm/options.s b/asm/options.s index 9f4587b..438dee1 100755 --- a/asm/options.s +++ b/asm/options.s @@ -196,7 +196,7 @@ sub_513B8: @ 0x080513B8 strh r0, [r4, #6] strh r1, [r4, #8] strh r1, [r4, #0xa] - ldr r0, _0805146C @ =gUnknown_0200B134 + ldr r0, _0805146C @ =gMain+0x74 adds r0, #0xcf ldrb r0, [r0] strh r0, [r4, #0xc] @@ -263,7 +263,7 @@ _08051432: cmp r4, #1 bne _0805147C ldr r3, _08051468 @ =gUnknown_02002920 - ldr r0, _0805146C @ =gUnknown_0200B134 + ldr r0, _0805146C @ =gMain+0x74 adds r0, #0xcd ldrb r1, [r0] adds r2, r3, #0 @@ -274,7 +274,7 @@ _08051432: b _0805148C .align 2, 0 _08051468: .4byte gUnknown_02002920 -_0805146C: .4byte gUnknown_0200B134 +_0805146C: .4byte gMain+0x74 _08051470: .4byte gUnknown_02031AF0 _08051474: .4byte gUnknown_08527ED6 _08051478: .4byte gGameBoyPlayerEnabled @@ -284,7 +284,7 @@ _0805147C: adds r0, #0x2a movs r1, #0 strb r1, [r0] - ldr r0, _080514B4 @ =gUnknown_0200B134 + ldr r0, _080514B4 @ =gMain+0x74 adds r0, #0xcd strb r1, [r0] _0805148C: @@ -307,7 +307,7 @@ _0805148C: bx r0 .align 2, 0 _080514B0: .4byte gUnknown_02002920 -_080514B4: .4byte gUnknown_0200B134 +_080514B4: .4byte gMain+0x74 thumb_func_start sub_514B8 sub_514B8: @ 0x080514B8 @@ -550,13 +550,13 @@ _080516B0: ldrh r1, [r0, #0xa] subs r1, #2 strh r1, [r0, #0xc] - ldr r0, _080516CC @ =gUnknown_0200B134 + ldr r0, _080516CC @ =gMain+0x74 adds r0, #0xcf strb r1, [r0] b _08051A96 .align 2, 0 _080516C8: .4byte gUnknown_02002920 -_080516CC: .4byte gUnknown_0200B134 +_080516CC: .4byte gMain+0x74 _080516D0: movs r0, #0x65 bl m4aSongNumStart @@ -564,7 +564,7 @@ _080516D0: ldrh r1, [r2, #0xa] subs r1, #2 strh r1, [r2, #0xc] - ldr r0, _080516F4 @ =gUnknown_0200B134 + ldr r0, _080516F4 @ =gMain+0x74 adds r0, #0xcf strb r1, [r0] movs r0, #7 @@ -574,7 +574,7 @@ _080516D0: b _08051A96 .align 2, 0 _080516F0: .4byte gUnknown_02002920 -_080516F4: .4byte gUnknown_0200B134 +_080516F4: .4byte gMain+0x74 _080516F8: ldr r0, _08051730 @ =gGameBoyPlayerEnabled ldr r0, [r0] @@ -1125,7 +1125,7 @@ _08051B0E: adds r0, r0, r2 ldrh r1, [r4, #0x26] strb r1, [r0] - ldr r2, _08051C04 @ =gUnknown_0200B134 + ldr r2, _08051C04 @ =gMain+0x74 movs r0, #0xa ldrsh r1, [r4, r0] subs r1, #7 @@ -1216,7 +1216,7 @@ _08051BF4: .4byte gUnknown_02002920 _08051BF8: .4byte gMain _08051BFC: .4byte 0x000003F7 _08051C00: .4byte gUnknown_02031AF0 -_08051C04: .4byte gUnknown_0200B134 +_08051C04: .4byte gMain+0x74 _08051C08: .4byte gUnknown_086BB910 _08051C0C: .4byte gUnknown_086BB9B4 _08051C10: @@ -1264,7 +1264,7 @@ _08051C5C: .4byte gMain thumb_func_start sub_51C60 sub_51C60: @ 0x08051C60 push {lr} - ldr r1, _08051C90 @ =gUnknown_0200B134 + ldr r1, _08051C90 @ =gMain+0x74 ldr r0, _08051C94 @ =gUnknown_02002920 adds r0, #0x2a ldrb r0, [r0] @@ -1282,7 +1282,7 @@ sub_51C60: @ 0x08051C60 pop {r0} bx r0 .align 2, 0 -_08051C90: .4byte gUnknown_0200B134 +_08051C90: .4byte gMain+0x74 _08051C94: .4byte gUnknown_02002920 _08051C98: .4byte gAutoDisplayTitlescreenMenu diff --git a/asm/pokedex.s b/asm/pokedex.s index f3fed51..9980236 100755 --- a/asm/pokedex.s +++ b/asm/pokedex.s @@ -1674,7 +1674,7 @@ _08004C16: cmp r2, #0 bge _08004C16 movs r2, #0 - ldr r4, _08004C74 @ =gUnknown_0200B134 + ldr r4, _08004C74 @ =gMain+0x74 ldr r3, _08004C70 @ =gUnknown_0202A1C0 _08004C2A: adds r1, r2, r4 @@ -1706,7 +1706,7 @@ _08004C64: .4byte gUnknown_0202BF04 _08004C68: .4byte gUnknown_0202A588 _08004C6C: .4byte gUnknown_0202A390 _08004C70: .4byte gUnknown_0202A1C0 -_08004C74: .4byte gUnknown_0200B134 +_08004C74: .4byte gMain+0x74 _08004C78: .4byte gMain _08004C7C: .4byte gUnknown_0201B120 @@ -1742,7 +1742,7 @@ _08004CA4: ldr r7, _08004D0C @ =gUnknown_0202BF04 ldr r0, _08004D10 @ =gUnknown_0202A588 mov ip, r0 - ldr r4, _08004D14 @ =gUnknown_0200B134 + ldr r4, _08004D14 @ =gMain+0x74 ldr r3, _08004CFC @ =gUnknown_0202A1C0 _08004CC2: adds r1, r2, r4 @@ -1776,7 +1776,7 @@ _08004D04: .4byte gUnknown_0202BEC4 _08004D08: .4byte gUnknown_0202BEFC _08004D0C: .4byte gUnknown_0202BF04 _08004D10: .4byte gUnknown_0202A588 -_08004D14: .4byte gUnknown_0200B134 +_08004D14: .4byte gMain+0x74 _08004D18: movs r0, #2 ands r0, r1 @@ -9236,7 +9236,7 @@ sub_88E4: @ 0x080088E4 ldr r6, _08008934 @ =gUnknown_0202A1C0 ldr r5, _08008938 @ =gUnknown_0201A514 ldr r4, _0800893C @ =gUnknown_0202BEB8 - ldr r3, _08008940 @ =gUnknown_0200B134 + ldr r3, _08008940 @ =gMain+0x74 adds r1, r6, #0 _080088F2: adds r0, r2, r3 @@ -9278,7 +9278,7 @@ _0800891E: _08008934: .4byte gUnknown_0202A1C0 _08008938: .4byte gUnknown_0201A514 _0800893C: .4byte gUnknown_0202BEB8 -_08008940: .4byte gUnknown_0200B134 +_08008940: .4byte gMain+0x74 _08008944: .4byte _08008948 _08008948: @ jump table .4byte _08008968 @ case 0 @@ -9458,7 +9458,7 @@ _08008AB8: .4byte gUnknown_0202A588 thumb_func_start sub_8ABC sub_8ABC: @ 0x08008ABC - ldr r1, _08008AD0 @ =gUnknown_0200B134 + ldr r1, _08008AD0 @ =gMain+0x74 movs r2, #0 adds r0, r1, #0 adds r0, #0xcc @@ -9469,4 +9469,4 @@ _08008AC4: bge _08008AC4 bx lr .align 2, 0 -_08008AD0: .4byte gUnknown_0200B134 +_08008AD0: .4byte gMain+0x74 diff --git a/asm/rom_1068C.s b/asm/rom_1068C.s deleted file mode 100755 index 37c7a85..0000000 --- a/asm/rom_1068C.s +++ /dev/null @@ -1,348 +0,0 @@ - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_1068C -sub_1068C: @ 0x0801068C - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #4 - adds r4, r0, #0 - adds r7, r2, #0 - mov sb, r3 - ldr r0, [sp, #0x24] - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - str r0, [sp] - movs r2, #0 - cmp r2, sb - bge _080106F0 - lsls r0, r1, #5 - adds r0, r0, r4 - mov sl, r0 -_080106B2: - movs r3, #0 - adds r6, r2, #1 - cmp r3, r7 - bge _080106E8 - lsls r0, r2, #5 - mov r1, sl - adds r5, r1, r0 - ldr r0, _08010700 @ =gUnknown_03005C00 - mov ip, r0 - ldr r1, _08010704 @ =0x00000FFF - mov r8, r1 - ldr r0, [sp] - lsls r4, r0, #0xc -_080106CC: - adds r1, r3, r5 - lsls r1, r1, #0x10 - lsrs r1, r1, #0xf - add r1, ip - ldrh r2, [r1] - mov r0, r8 - ands r0, r2 - orrs r0, r4 - strh r0, [r1] - adds r0, r3, #1 - lsls r0, r0, #0x10 - lsrs r3, r0, #0x10 - cmp r3, r7 - blt _080106CC -_080106E8: - lsls r0, r6, #0x10 - lsrs r2, r0, #0x10 - cmp r2, sb - blt _080106B2 -_080106F0: - add sp, #4 - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_08010700: .4byte gUnknown_03005C00 -_08010704: .4byte 0x00000FFF - - thumb_func_start sub_10708 -sub_10708: @ 0x08010708 - push {r4, r5, lr} - sub sp, #8 - str r0, [sp] - str r1, [sp, #4] - lsls r2, r2, #0x10 - lsrs r0, r2, #0x10 - movs r4, #0 - lsls r3, r3, #0x10 - asrs r1, r3, #0x10 - cmp r4, r1 - bge _08010744 - ldr r2, _0801074C @ =0x040000D4 - lsls r0, r0, #0x10 - asrs r3, r0, #0xc - movs r0, #0x80 - lsls r0, r0, #0x18 - orrs r3, r0 - adds r5, r1, #0 -_0801072C: - lsls r1, r4, #0xa - ldr r0, [sp] - adds r0, r0, r1 - str r0, [r2] - ldr r0, [sp, #4] - adds r0, r0, r1 - str r0, [r2, #4] - str r3, [r2, #8] - ldr r0, [r2, #8] - adds r4, #1 - cmp r4, r5 - blt _0801072C -_08010744: - add sp, #8 - pop {r4, r5} - pop {r0} - bx r0 - .align 2, 0 -_0801074C: .4byte 0x040000D4 - - thumb_func_start sub_10750 -sub_10750: @ 0x08010750 - push {r4, r5, lr} - sub sp, #8 - str r0, [sp] - str r1, [sp, #4] - lsls r2, r2, #0x10 - lsrs r0, r2, #0x10 - movs r4, #0 - lsls r3, r3, #0x10 - asrs r1, r3, #0x10 - cmp r4, r1 - bge _0801078C - ldr r2, _08010794 @ =0x040000D4 - lsls r0, r0, #0x10 - asrs r3, r0, #0x10 - movs r0, #0x80 - lsls r0, r0, #0x18 - orrs r3, r0 - adds r5, r1, #0 -_08010774: - lsls r1, r4, #6 - ldr r0, [sp] - adds r0, r0, r1 - str r0, [r2] - ldr r0, [sp, #4] - adds r0, r0, r1 - str r0, [r2, #4] - str r3, [r2, #8] - ldr r0, [r2, #8] - adds r4, #1 - cmp r4, r5 - blt _08010774 -_0801078C: - add sp, #8 - pop {r4, r5} - pop {r0} - bx r0 - .align 2, 0 -_08010794: .4byte 0x040000D4 - - thumb_func_start sub_10798 -sub_10798: @ 0x08010798 - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - sub sp, #4 - mov r8, r2 - ldr r4, _08010818 @ =0x040000D4 - str r0, [r4] - ldr r2, _0801081C @ =gUnknown_0201A920 - str r2, [r4, #4] - ldr r0, _08010820 @ =0x80000100 - str r0, [r4, #8] - ldr r3, [r4, #8] - str r1, [r4] - movs r1, #0x80 - lsls r1, r1, #3 - adds r3, r2, r1 - str r3, [r4, #4] - str r0, [r4, #8] - ldr r0, [r4, #8] - mov r1, sp - ldr r5, _08010824 @ =0x00007FFF - adds r0, r5, #0 - strh r0, [r1] - str r1, [r4] - ldr r0, _08010828 @ =0xFFFFFC00 - adds r2, r2, r0 - str r2, [r4, #4] - ldr r0, _0801082C @ =0x81000200 - str r0, [r4, #8] - ldr r0, [r4, #8] - str r2, [r4] - str r3, [r4, #4] - ldr r5, _08010830 @ =0x80000200 - str r5, [r4, #8] - ldr r0, [r4, #8] - str r3, [r4] - movs r6, #0xa0 - lsls r6, r6, #0x13 - str r6, [r4, #4] - str r5, [r4, #8] - ldr r0, [r4, #8] - bl sub_1050C - ldr r1, _08010834 @ =gMain - movs r0, #0x80 - lsls r0, r0, #0x13 - ldrh r0, [r0] - strh r0, [r1, #0x16] - movs r7, #0 -_080107FA: - mov r1, r8 - cmp r1, #0 - beq _08010804 - bl _call_via_r8 -_08010804: - adds r0, r7, #0 - bl sub_1001C - bl sub_D74 - cmp r7, #0x20 - bne _08010838 - ldr r0, _0801081C @ =gUnknown_0201A920 - b _0801083A - .align 2, 0 -_08010818: .4byte 0x040000D4 -_0801081C: .4byte gUnknown_0201A920 -_08010820: .4byte 0x80000100 -_08010824: .4byte 0x00007FFF -_08010828: .4byte 0xFFFFFC00 -_0801082C: .4byte 0x81000200 -_08010830: .4byte 0x80000200 -_08010834: .4byte gMain -_08010838: - ldr r0, _0801085C @ =gUnknown_0201AD20 -_0801083A: - str r0, [r4] - str r6, [r4, #4] - str r5, [r4, #8] - ldr r0, [r4, #8] - adds r0, r7, #0 - adds r0, #0x10 - lsls r0, r0, #0x10 - lsrs r7, r0, #0x10 - cmp r7, #0x20 - bls _080107FA - add sp, #4 - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_0801085C: .4byte gUnknown_0201AD20 - - thumb_func_start sub_10860 -sub_10860: @ 0x08010860 - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - sub sp, #4 - adds r5, r0, #0 - ldr r1, _080108C8 @ =0x040000D4 - movs r0, #0xa0 - lsls r0, r0, #0x13 - mov r8, r0 - str r0, [r1] - ldr r3, _080108CC @ =gUnknown_0201A520 - str r3, [r1, #4] - ldr r4, _080108D0 @ =0x80000200 - str r4, [r1, #8] - ldr r0, [r1, #8] - mov r2, sp - ldr r6, _080108D4 @ =0x00007FFF - adds r0, r6, #0 - strh r0, [r2] - str r2, [r1] - movs r2, #0x80 - lsls r2, r2, #3 - adds r0, r3, r2 - str r0, [r1, #4] - ldr r0, _080108D8 @ =0x81000200 - str r0, [r1, #8] - ldr r0, [r1, #8] - str r3, [r1] - movs r6, #0x80 - lsls r6, r6, #4 - adds r3, r3, r6 - str r3, [r1, #4] - str r4, [r1, #8] - ldr r0, [r1, #8] - movs r7, #0 - adds r6, r1, #0 -_080108A8: - cmp r5, #0 - beq _080108B0 - bl _call_via_r5 -_080108B0: - adds r0, r7, #0 - bl sub_1001C - bl sub_D74 - cmp r7, #0x20 - bne _080108E0 - ldr r0, _080108DC @ =gUnknown_0201A920 - str r0, [r6] - mov r0, r8 - str r0, [r6, #4] - b _080108E8 - .align 2, 0 -_080108C8: .4byte 0x040000D4 -_080108CC: .4byte gUnknown_0201A520 -_080108D0: .4byte 0x80000200 -_080108D4: .4byte 0x00007FFF -_080108D8: .4byte 0x81000200 -_080108DC: .4byte gUnknown_0201A920 -_080108E0: - ldr r0, _08010908 @ =gUnknown_0201AD20 - str r0, [r6] - mov r2, r8 - str r2, [r6, #4] -_080108E8: - str r4, [r6, #8] - ldr r0, [r6, #8] - adds r0, r7, #0 - adds r0, #0x10 - lsls r0, r0, #0x10 - lsrs r7, r0, #0x10 - cmp r7, #0x20 - bls _080108A8 - bl sub_D74 - add sp, #4 - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_08010908: .4byte gUnknown_0201AD20 - - thumb_func_start sub_1090C -sub_1090C: @ 0x0801090C - ldr r1, _08010920 @ =gUnknown_0201A500 - movs r2, #0 - adds r0, r1, #0 - adds r0, #0xc -_08010914: - str r2, [r0] - subs r0, #4 - cmp r0, r1 - bge _08010914 - bx lr - .align 2, 0 -_08010920: .4byte gUnknown_0201A500 diff --git a/asm/rom_11B9C.s b/asm/rom_11B9C.s index c3bd4d9..ca2c4c6 100755 --- a/asm/rom_11B9C.s +++ b/asm/rom_11B9C.s @@ -14703,7 +14703,7 @@ _0801915E: bl m4aSongNumStart _08019164: ldr r3, _08019188 @ =gUnknown_02031520 - ldr r1, _0801918C @ =gUnknown_0200B134 + ldr r1, _0801918C @ =gMain+0x74 movs r0, #0xcd adds r0, r0, r1 mov ip, r0 @@ -14721,7 +14721,7 @@ _08019164: bx r0 .align 2, 0 _08019188: .4byte gUnknown_02031520 -_0801918C: .4byte gUnknown_0200B134 +_0801918C: .4byte gMain+0x74 thumb_func_start sub_19190 sub_19190: @ 0x08019190 @@ -21912,7 +21912,7 @@ _0801CB24: mov sl, r0 cmp r1, #0 ble _0801CBEC - ldr r0, _0801CB6C @ =gUnknown_0200B134 + ldr r0, _0801CB6C @ =gMain+0x74 ldr r5, _0801CB70 @ =0x0000059A adds r1, r4, r5 ldrh r3, [r1] @@ -21936,7 +21936,7 @@ _0801CB24: b _0801CC0C .align 2, 0 _0801CB68: .4byte gUnknown_020314E0 -_0801CB6C: .4byte gUnknown_0200B134 +_0801CB6C: .4byte gMain+0x74 _0801CB70: .4byte 0x0000059A _0801CB74: .4byte 0x00000749 _0801CB78: .4byte 0x040000D4 @@ -63901,7 +63901,7 @@ _08031F96: movs r2, #0 lsls r1, r1, #4 str r1, [sp] - ldr r5, _08031FE8 @ =gUnknown_0200B134 + ldr r5, _08031FE8 @ =gMain+0x74 mov r8, r5 mov sl, r4 _08031FA2: @@ -63939,7 +63939,7 @@ _08031FA2: .align 2, 0 _08031FE0: .4byte gUnknown_020314E0 _08031FE4: .4byte 0x0000073D -_08031FE8: .4byte gUnknown_0200B134 +_08031FE8: .4byte gMain+0x74 _08031FEC: .4byte gWildMonLocations _08031FF0: cmp r0, #0x86 @@ -64004,7 +64004,7 @@ _0803204C: b _08032138 _0803205E: ldr r4, _080320A0 @ =gUnknown_086AE5E0 - ldr r3, _080320A4 @ =gUnknown_0200B134 + ldr r3, _080320A4 @ =gMain+0x74 adds r0, r3, #0 adds r0, #0xaf ldrb r1, [r0] @@ -64038,7 +64038,7 @@ _08032086: b _0803213A .align 2, 0 _080320A0: .4byte gUnknown_086AE5E0 -_080320A4: .4byte gUnknown_0200B134 +_080320A4: .4byte gMain+0x74 _080320A8: ldr r0, _0803218C @ =gUnknown_086AE5E0 lsls r1, r6, #0x10 diff --git a/asm/rom_3219C.s b/asm/rom_3219C.s index af67f74..78f972d 100755 --- a/asm/rom_3219C.s +++ b/asm/rom_3219C.s @@ -46551,7 +46551,7 @@ _0804A19C: movs r0, #0 strh r0, [r1, #8] movs r2, #0 - ldr r3, _0804A240 @ =gUnknown_0200B134 + ldr r3, _0804A240 @ =gMain+0x74 _0804A1A6: lsls r0, r2, #0x10 asrs r2, r0, #0x10 @@ -46624,7 +46624,7 @@ _0804A230: .4byte gUnknown_02031520 _0804A234: .4byte 0x05000200 _0804A238: .4byte 0x80000100 _0804A23C: .4byte gUnknown_020028D8 -_0804A240: .4byte gUnknown_0200B134 +_0804A240: .4byte gMain+0x74 _0804A244: .4byte gUnknown_020314E0 _0804A248: .4byte gMain _0804A24C: .4byte 0x00000F4C @@ -50701,7 +50701,7 @@ _0804C460: asrs r0, r0, #0x18 cmp r0, #0 ble _0804C510 - ldr r1, _0804C498 @ =gUnknown_0200B134 + ldr r1, _0804C498 @ =gMain+0x74 ldr r2, _0804C49C @ =0x0000059A adds r0, r4, r2 ldrh r3, [r0] @@ -50720,7 +50720,7 @@ _0804C460: mov r8, r5 b _0804C528 .align 2, 0 -_0804C498: .4byte gUnknown_0200B134 +_0804C498: .4byte gMain+0x74 _0804C49C: .4byte 0x0000059A _0804C4A0: .4byte 0x00000749 _0804C4A4: .4byte 0x040000D4 diff --git a/asm/rom_528AC.s b/asm/rom_528AC.s deleted file mode 100755 index 171370b..0000000 --- a/asm/rom_528AC.s +++ /dev/null @@ -1,529 +0,0 @@ - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_528AC -sub_528AC: @ 0x080528AC - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - adds r1, r0, #0 - cmp r0, #0xfa - bls _080528DA - ldr r0, _080528CC @ =0x00000113 - cmp r1, r0 - bls _080528D8 - ldr r0, _080528D0 @ =gUnknown_08527F18 - ldr r2, _080528D4 @ =0xFFFFFEEC - adds r1, r1, r2 - lsls r1, r1, #1 - adds r1, r1, r0 - ldrh r0, [r1] - b _080528DA - .align 2, 0 -_080528CC: .4byte 0x00000113 -_080528D0: .4byte gUnknown_08527F18 -_080528D4: .4byte 0xFFFFFEEC -_080528D8: - movs r0, #0xc8 -_080528DA: - bx lr - - thumb_func_start sub_528DC -sub_528DC: @ 0x080528DC - push {r4, r5, lr} - sub sp, #4 - adds r5, r0, #0 - adds r4, r1, #0 - lsls r5, r5, #0x10 - lsrs r5, r5, #0x10 - lsls r4, r4, #0x18 - lsrs r4, r4, #0x18 - ldr r0, _08052914 @ =gMPlayInfo_BGM - ldr r1, _08052918 @ =0x0000FFFF - movs r2, #0x99 - bl m4aMPlayVolumeControl - lsls r4, r4, #0x18 - asrs r4, r4, #0x18 - movs r0, #0 - str r0, [sp] - adds r0, r5, #0 - adds r1, r4, #0 - movs r2, #0x7d - movs r3, #0xa - bl sub_52940 - add sp, #4 - pop {r4, r5} - pop {r0} - bx r0 - .align 2, 0 -_08052914: .4byte gMPlayInfo_BGM -_08052918: .4byte 0x0000FFFF - - thumb_func_start sub_5291C -sub_5291C: @ 0x0805291C - push {r4, lr} - sub sp, #4 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - lsls r3, r3, #0x18 - lsrs r3, r3, #0x18 - lsls r1, r1, #0x18 - asrs r1, r1, #0x18 - lsls r2, r2, #0x18 - asrs r2, r2, #0x18 - movs r4, #0 - str r4, [sp] - bl sub_52940 - add sp, #4 - pop {r4} - pop {r0} - bx r0 - - thumb_func_start sub_52940 -sub_52940: @ 0x08052940 - push {r4, r5, r6, lr} - mov r6, r8 - push {r6} - adds r5, r0, #0 - adds r4, r1, #0 - adds r0, r2, #0 - adds r6, r3, #0 - lsls r5, r5, #0x10 - lsls r4, r4, #0x18 - lsrs r4, r4, #0x18 - lsls r6, r6, #0x18 - lsrs r6, r6, #0x18 - ldr r1, _080529BC @ =0xFFFF0000 - adds r5, r5, r1 - lsrs r5, r5, #0x10 - movs r1, #0xf0 - lsls r1, r1, #6 - mov r8, r1 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - bl SetPokemonCryVolume - lsls r4, r4, #0x18 - asrs r4, r4, #0x18 - adds r0, r4, #0 - bl SetPokemonCryPanpot - mov r0, r8 - bl SetPokemonCryPitch - movs r0, #0x8c - bl SetPokemonCryLength - movs r0, #0 - bl SetPokemonCryProgress - movs r0, #0 - bl SetPokemonCryRelease - movs r0, #0 - bl SetPokemonCryChorus - adds r0, r6, #0 - bl SetPokemonCryPriority - adds r0, r5, #0 - bl sub_528AC - movs r1, #0x7f - ands r1, r0 - lsrs r0, r0, #7 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - adds r2, r0, #0 - cmp r0, #1 - beq _080529D8 - cmp r0, #1 - bgt _080529C0 - cmp r0, #0 - beq _080529CA - b _08052A0A - .align 2, 0 -_080529BC: .4byte 0xFFFF0000 -_080529C0: - cmp r2, #2 - beq _080529E8 - cmp r2, #3 - beq _080529FC - b _08052A0A -_080529CA: - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #2 - ldr r1, _080529D4 @ =gUnknown_08532D6C - b _080529F0 - .align 2, 0 -_080529D4: .4byte gUnknown_08532D6C -_080529D8: - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #2 - ldr r1, _080529E4 @ =gUnknown_08533360 - b _080529F0 - .align 2, 0 -_080529E4: .4byte gUnknown_08533360 -_080529E8: - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #2 - ldr r1, _080529F8 @ =gUnknown_08533960 -_080529F0: - adds r0, r0, r1 - bl SetPokemonCryTone - b _08052A0A - .align 2, 0 -_080529F8: .4byte gUnknown_08533960 -_080529FC: - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #2 - ldr r1, _08052A14 @ =gUnknown_08533F60 - adds r0, r0, r1 - bl SetPokemonCryTone -_08052A0A: - pop {r3} - mov r8, r3 - pop {r4, r5, r6} - pop {r0} - bx r0 - .align 2, 0 -_08052A14: .4byte gUnknown_08533F60 - - thumb_func_start sub_52A18 -sub_52A18: @ 0x08052A18 - push {r4, lr} - bl SetSramFastFunc - ldr r4, _08052A4C @ =gMain - movs r0, #0 - strb r0, [r4, #0xc] - bl sub_52A68 - lsls r0, r0, #0x10 - cmp r0, #0 - bne _08052A50 - bl sub_52C64 - bl sub_52B30 - bl sub_52A68 - lsls r0, r0, #0x10 - cmp r0, #0 - bne _08052A5E - movs r0, #1 - strb r0, [r4, #0xc] - bl sub_52C64 - b _08052A5E - .align 2, 0 -_08052A4C: .4byte gMain -_08052A50: - ldr r1, _08052A64 @ =0x00000143 - adds r0, r4, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - bl sub_525CC -_08052A5E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08052A64: .4byte 0x00000143 - - thumb_func_start sub_52A68 -sub_52A68: @ 0x08052A68 - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - movs r0, #0 - mov r8, r0 - movs r7, #0 - ldr r1, _08052B04 @ =ReadSramFast - mov sb, r1 -_08052A7A: - ldr r5, _08052B08 @ =gUnknown_0200B134 - movs r4, #0x9d - lsls r4, r4, #2 - lsls r0, r7, #2 - adds r0, r0, r7 - lsls r0, r0, #2 - adds r0, r0, r7 - lsls r0, r0, #5 - ldr r3, _08052B0C @ =0x0E000004 - adds r0, r0, r3 - mov r6, sb - ldr r3, [r6] - adds r1, r5, #0 - adds r2, r4, #0 - bl _call_via_r3 - movs r2, #0 - movs r0, #0x99 - lsls r0, r0, #2 - adds r3, r5, r0 - movs r0, #0 - ldrsb r0, [r3, r0] - ldr r1, _08052B10 @ =gUnknown_086BBA6C - ldrb r6, [r1] - cmp r0, r6 - bne _08052ACA - adds r6, r3, #0 - adds r3, r1, #0 -_08052AB2: - adds r0, r2, #1 - lsls r0, r0, #0x10 - lsrs r2, r0, #0x10 - cmp r2, #9 - bhi _08052ACA - adds r0, r2, r6 - movs r1, #0 - ldrsb r1, [r0, r1] - adds r0, r2, r3 - ldrb r0, [r0] - cmp r1, r0 - beq _08052AB2 -_08052ACA: - cmp r2, #0xa - bne _08052B18 - movs r2, #0 - cmp r4, #1 - bls _08052AE0 -_08052AD4: - ldrh r0, [r5] - adds r2, r2, r0 - adds r5, #2 - subs r4, #2 - cmp r4, #1 - bhi _08052AD4 -_08052AE0: - cmp r4, #0 - beq _08052AF0 - ldrh r1, [r5] - movs r3, #0xff - lsls r3, r3, #8 - adds r0, r3, #0 - ands r0, r1 - adds r2, r2, r0 -_08052AF0: - ldr r0, _08052B14 @ =0x0000FFFF - adds r1, r2, #0 - ands r1, r0 - lsrs r2, r2, #0x10 - adds r2, r1, r2 - cmp r2, r0 - bne _08052B18 - movs r6, #1 - mov r8, r6 - b _08052B22 - .align 2, 0 -_08052B04: .4byte ReadSramFast -_08052B08: .4byte gUnknown_0200B134 -_08052B0C: .4byte 0x0E000004 -_08052B10: .4byte gUnknown_086BBA6C -_08052B14: .4byte 0x0000FFFF -_08052B18: - adds r0, r7, #1 - lsls r0, r0, #0x10 - lsrs r7, r0, #0x10 - cmp r7, #1 - bls _08052A7A -_08052B22: - mov r0, r8 - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7} - pop {r1} - bx r1 - - thumb_func_start sub_52B30 -sub_52B30: @ 0x08052B30 - push {r4, r5, lr} - ldr r3, _08052B9C @ =gUnknown_0200B134 - movs r4, #0x9d - lsls r4, r4, #2 - movs r0, #0x9c - lsls r0, r0, #2 - adds r1, r3, r0 - ldr r0, [r1] - adds r0, #1 - str r0, [r1] - ldr r2, _08052BA0 @ =0x0000026E - adds r1, r3, r2 - movs r0, #0 - strh r0, [r1] - movs r2, #0 - adds r5, r3, #0 -_08052B50: - ldrh r0, [r3] - adds r2, r2, r0 - adds r3, #2 - subs r4, #2 - cmp r4, #1 - bhi _08052B50 - cmp r4, #0 - beq _08052B6A - ldrh r1, [r3] - movs r0, #0xff - lsls r0, r0, #8 - ands r0, r1 - adds r2, r2, r0 -_08052B6A: - ldr r0, _08052BA4 @ =0x0000FFFF - ands r0, r2 - lsrs r1, r2, #0x10 - adds r2, r0, r1 - lsrs r0, r2, #0x10 - adds r0, r0, r2 - mvns r0, r0 - ldr r2, _08052BA0 @ =0x0000026E - adds r1, r5, r2 - strh r0, [r1] - ldr r1, _08052BA8 @ =0x0E000004 - movs r4, #0x9d - lsls r4, r4, #2 - adds r0, r5, #0 - adds r2, r4, #0 - bl WriteAndVerifySramFast - ldr r1, _08052BAC @ =0x0E0002A4 - adds r0, r5, #0 - adds r2, r4, #0 - bl WriteAndVerifySramFast - pop {r4, r5} - pop {r0} - bx r0 - .align 2, 0 -_08052B9C: .4byte gUnknown_0200B134 -_08052BA0: .4byte 0x0000026E -_08052BA4: .4byte 0x0000FFFF -_08052BA8: .4byte 0x0E000004 -_08052BAC: .4byte 0x0E0002A4 - - thumb_func_start sub_52BB0 -sub_52BB0: @ 0x08052BB0 - push {r4, r5, r6, lr} - lsls r1, r1, #0x18 - lsrs r5, r1, #0x18 - ldr r3, _08052C30 @ =gUnknown_0200B134 - movs r4, #0x9d - lsls r4, r4, #2 - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - adds r2, r0, r3 - ldrb r0, [r2] - adds r6, r3, #0 - cmp r0, r5 - bhs _08052C28 - movs r0, #0x9c - lsls r0, r0, #2 - adds r1, r6, r0 - ldr r0, [r1] - adds r0, #1 - str r0, [r1] - movs r1, #0 - strb r5, [r2] - ldr r2, _08052C34 @ =0x0000026E - adds r0, r6, r2 - strh r1, [r0] - movs r2, #0 -_08052BE2: - ldrh r0, [r3] - adds r2, r2, r0 - adds r3, #2 - subs r4, #2 - cmp r4, #1 - bhi _08052BE2 - cmp r4, #0 - beq _08052BFC - ldrh r1, [r3] - movs r0, #0xff - lsls r0, r0, #8 - ands r0, r1 - adds r2, r2, r0 -_08052BFC: - ldr r0, _08052C38 @ =0x0000FFFF - ands r0, r2 - lsrs r1, r2, #0x10 - adds r2, r0, r1 - lsrs r0, r2, #0x10 - adds r0, r0, r2 - mvns r0, r0 - ldr r2, _08052C34 @ =0x0000026E - adds r1, r6, r2 - strh r0, [r1] - ldr r1, _08052C3C @ =0x0E000004 - movs r4, #0x9d - lsls r4, r4, #2 - adds r0, r6, #0 - adds r2, r4, #0 - bl WriteAndVerifySramFast - ldr r1, _08052C40 @ =0x0E0002A4 - adds r0, r6, #0 - adds r2, r4, #0 - bl WriteAndVerifySramFast -_08052C28: - pop {r4, r5, r6} - pop {r0} - bx r0 - .align 2, 0 -_08052C30: .4byte gUnknown_0200B134 -_08052C34: .4byte 0x0000026E -_08052C38: .4byte 0x0000FFFF -_08052C3C: .4byte 0x0E000004 -_08052C40: .4byte 0x0E0002A4 - - thumb_func_start sub_52C44 -sub_52C44: @ 0x08052C44 - push {lr} - ldr r2, _08052C58 @ =ReadSramFast - ldr r0, _08052C5C @ =0x0E000544 - ldr r1, _08052C60 @ =gUnknown_0200B100 - ldr r3, [r2] - movs r2, #4 - bl _call_via_r3 - pop {r0} - bx r0 - .align 2, 0 -_08052C58: .4byte ReadSramFast -_08052C5C: .4byte 0x0E000544 -_08052C60: .4byte gUnknown_0200B100 - - thumb_func_start sub_52C64 -sub_52C64: @ 0x08052C64 - push {r4, r5, lr} - movs r1, #0 - ldr r5, _08052CBC @ =gUnknown_0200B134 - movs r0, #0x99 - lsls r0, r0, #2 - adds r4, r5, r0 - ldr r3, _08052CC0 @ =gUnknown_086BBA6C -_08052C72: - lsls r0, r1, #0x10 - asrs r0, r0, #0x10 - adds r2, r0, r4 - adds r1, r0, r3 - ldrb r1, [r1] - strb r1, [r2] - adds r0, #1 - lsls r0, r0, #0x10 - lsrs r1, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #9 - ble _08052C72 - movs r1, #0x9c - lsls r1, r1, #2 - adds r0, r5, r1 - movs r4, #0 - str r4, [r0] - adds r0, r5, #0 - adds r0, #0xcd - strb r4, [r0] - adds r0, #1 - strb r4, [r0] - movs r0, #1 - rsbs r0, r0, #0 - bl sub_525CC - bl sub_F6E0 - bl sub_8ABC - adds r0, r5, #0 - adds r0, #0xcf - strb r4, [r0] - pop {r4, r5} - pop {r0} - bx r0 - .align 2, 0 -_08052CBC: .4byte gUnknown_0200B134 -_08052CC0: .4byte gUnknown_086BBA6C @@ -728,17 +728,17 @@ gUnknown_08079870:: @ 0x08079870 gTitlescreenStateFuncs:: @ 0x08079890 .4byte LoadTitlescreenGraphics - .4byte sub_10BB8 - .4byte sub_10CF0 - .4byte sub_10E00 - .4byte sub_10EF4 - .4byte sub_110FC - .4byte sub_11320 - .4byte sub_11020 - .4byte sub_11228 - .4byte sub_10D84 - .4byte sub_11428 - .4byte sub_114B4 + .4byte TitleScreen1_WaitForStartButton + .4byte TitleScreen2_Unknown + .4byte TitleScreen3_Unknown + .4byte TitleScreen4_MenuInputNoSavedGame + .4byte TitleScreen5_MenuInputSavedGame + .4byte TitleScreen6_AnimCloseMenu + .4byte TitleScreen7_Unknown + .4byte TitleScreen8_Unknown + .4byte TitleScreen9_Unknown + .4byte TitleScreen10_ExecMenuSelection + .4byte TitleScreen11_Unknown gUnknown_080798C0:: @ 0x080798C0 .incbin "baserom.gba", 0x798C0, 0x800 @@ -2758,10 +2758,10 @@ gUnknown_086B0010:: @ 0x086B0010 .incbin "baserom.gba", 0x6B0010, 0x118 gUnknown_086B0128:: @ 0x086B0128 - .incbin "baserom.gba", 0x6B0128, 0x28 + .ascii "POK^MON_CAUGHT______BONUS_______________" gUnknown_086B0150:: @ 0x086B0150 - .incbin "baserom.gba", 0x6B0150, 0x17C + .ascii "SUBTOTAL____________POK^MON_EVOLVED_____BONUS_______________SUBTOTAL____________TRAVELED_AREA_______BONUS_______________SUBTOTAL____________SLOT_PLAYED_________BONUS_______________SUBTOTAL____________PIKA_SAVER__________BONUS_______________SUBTOTAL____________SUBTOTAL____________SUBTOTAL____________SUBTOTAL____________SUBTOTAL____________MULTIPLIER__________TOTAL_______________" gUnknown_086B02CC:: @ 0x086B02CC .incbin "baserom.gba", 0x6B02CC, 0xF0 @@ -3113,7 +3113,9 @@ gUnknown_086BB9B4:: @ 0x086BB9B4 gUnknown_086BB9EC:: @ 0x086BB9EC .incbin "baserom.gba", 0x6BB9EC, 0x80 -gUnknown_086BBA6C:: @ 0x086BBA6C - .incbin "baserom.gba", 0x6BBA6C, 0x6BBFD0 - 0x6BBA6C +gSaveFileSignature:: @ 0x086BBA6C + .ascii "POKEPINAGB" + + .incbin "baserom.gba", 0x6BBA6C + 0xA, 0x6BBFD0 - 0x6BBA6C @ rom end 0x6BBFD0 diff --git a/include/functions.h b/include/functions.h index 5846d0e..0606057 100644 --- a/include/functions.h +++ b/include/functions.h @@ -54,17 +54,17 @@ void sub_940(void); void TitlescreenMain(void); void LoadTitlescreenGraphics(void); void sub_10AC0(void); -void sub_10BB8(void); -void sub_10CF0(void); -void sub_10D84(void); -void sub_10E00(void); -void sub_10EF4(void); -void sub_11020(void); -void sub_110FC(void); -void sub_11228(void); -void sub_11320(void); -void sub_11428(void); -void sub_114B4(void); +void TitleScreen1_WaitForStartButton(void); +void TitleScreen2_Unknown(void); +void TitleScreen9_Unknown(void); +void TitleScreen3_Unknown(void); +void TitleScreen4_MenuInputNoSavedGame(void); +void TitleScreen7_Unknown(void); +void TitleScreen5_MenuInputSavedGame(void); +void TitleScreen8_Unknown(void); +void TitleScreen6_AnimCloseMenu(void); +void TitleScreen10_ExecMenuSelection(void); +void TitleScreen11_Unknown(void); // src/util.c @@ -162,7 +162,7 @@ void SetMatrixScale(s16 xScale, s16 yScale, s16 matrixNum); //extern ? sub_F434(); //extern ? sub_F4FC(); //extern ? sub_F670(); -//extern ? sub_F6E0(); +extern void sub_F6E0(void); //extern ? sub_F74C(); //extern ? sub_F8B0(); //extern ? sub_FAE8(); @@ -171,12 +171,12 @@ extern void sub_FD5C(void (*func)(void)); extern void sub_FE04(void (*func)(void)); //extern ? sub_FEB8(); //extern ? sub_FF74(); -//extern ? sub_1001C(); +extern void sub_1001C(int); //extern ? sub_10170(); //extern ? sub_102A8(); //extern ? sub_10424(); //extern ? sub_10480(); -//extern ? sub_1050C(); +extern void sub_1050C(void); //extern ? sub_10528(); //extern ? sub_10544(); //extern ? sub_105A0(); @@ -384,12 +384,12 @@ extern void sub_FE04(void (*func)(void)); //extern ? sub_88E4(); //extern ? sub_8974(); //extern ? sub_8A78(); -//extern ? sub_8ABC(); +extern void sub_8ABC(void); // asm/rom_1068C.s //extern ? sub_1068C(); -extern void sub_10708(void*, void*, u16, s16); +extern void sub_10708(void *volatile, void *volatile, s16, s16); //extern ? sub_10750(); //extern ? sub_10798(); //extern ? sub_10860(); diff --git a/include/main.h b/include/main.h index 02f0a5f..3e0c744 100755 --- a/include/main.h +++ b/include/main.h @@ -3,6 +3,20 @@ #include "global.h" +// This is probably permanently saved data like pokedex and high scores. +struct SaveData +{ + /*0x74*/ u8 pokedexFlags[204]; + /*0x140*/ u8 filler140[1]; + /*0x141*/ u8 unk141; + /*0x142*/ u8 unk142; + /*0x143*/ u8 unk143; + /*0x144*/ u8 filler144[0x2D8-0x144]; + s8 signature[10]; + u16 unk2E2; + u32 unk2E4; +}; + struct Main { /*0x00*/ u8 filler0[0x2]; @@ -12,7 +26,8 @@ struct Main /*0x05*/ u8 filler5[0x2]; /*0x07*/ s8 unk7; /*0x08*/ s8 unk8; - /*0x09*/ u8 filler9[0x4]; + /*0x09*/ u8 filler9[0x3]; + /*0x0C*/ u8 unkC; /*0x0D*/ u8 unkD; /*0x0E*/ u8 fillerE[0x1]; /*0x0F*/ u8 unkF; @@ -38,15 +53,14 @@ struct Main /*0x38*/ volatile u16 blendControl; /*0x3A*/ volatile u16 blendAlpha; /*0x3C*/ volatile u16 blendBrightness; - // may be a sub-struct. possibly save data? - /*0x40*/ int unk40; + // may be a sub-struct. possibly for saved game? + /*0x40*/ int hasSavedGame; /*0x44*/ u8 filler44[0x4]; /*0x48*/ int rngValue; /*0x4C*/ int unk4C; /*0x50*/ int unk50; /*0x54*/ u8 filler54[0x20]; - /*0x74*/ u8 pokedexFlags[204]; - /*0x140*/ u8 filler140[0x1A8]; + /*0x74*/ struct SaveData saveData; /*0x2E8*/ struct MainUnk2E8 unk2E8[4]; /*0x2F8*/ struct SpriteGroup spriteGroups[NUM_SPRITE_GROUPS]; }; @@ -80,7 +94,6 @@ extern void (*gUnknown_02017BD0)(void); extern void (*gUnknown_02017BD4)(void); extern StateFunc gMainFuncs[]; extern struct OamData gOamBuffer[128]; -extern u16 gUnknown_03005C00[0x600]; void sub_24C(void); void sub_2B4(void); diff --git a/include/titlescreen.h b/include/titlescreen.h index 6cd6965..d66e786 100755 --- a/include/titlescreen.h +++ b/include/titlescreen.h @@ -5,7 +5,7 @@ struct TitlescreenStruct { /*0x00*/ s8 menuCursorIndex; /*0x02*/ s16 unk2; - /*0x04*/ s16 unk4; + /*0x04*/ s16 animTimer; /*0x06*/ s8 unk6; /*0x07*/ u8 unk7; /*0x08*/ s8 unk8; diff --git a/include/variables.h b/include/variables.h index d8efc57..590ae00 100644 --- a/include/variables.h +++ b/include/variables.h @@ -3,10 +3,14 @@ // Place all external variable declarations in this file +extern u16 gUnknown_0201A520[]; +extern u16 gUnknown_0201AD20[]; +extern u32 gUnknown_0201A500[]; +extern u16 gUnknown_0201A920[]; extern u8 gUnknown_03000000[]; //extern ? gOamBuffer; //extern ? IntrMain_Buffer; -//extern ? gUnknown_03005C00; +extern u16 gUnknown_03005C00[0x600]; //extern ? SoundMainRAM_Buffer; extern u16 sGbPlayerCurKeys; extern u16 sGbPlayerPrevKeys; @@ -22,7 +26,7 @@ extern u8 gUnknown_02002808[]; //extern ? gUnknown_02002958; //extern ? gIntrTable; //extern ? gMain; -//extern ? gUnknown_0200B134; +//extern ? gMain+0x74; //extern ? gUnknown_0200B3B8; //extern ? gUnknown_0200FB98; //extern ? gUnknown_0200FB9C; diff --git a/ld_script.txt b/ld_script.txt index 2f53a9e..56aef78 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -40,13 +40,13 @@ SECTIONS asm/field_select.o(.text); asm/intro.o(.text); asm/high_scores.o(.text); - asm/rom_1068C.o(.text); + src/rom_1068C.o(.text); src/titlescreen.o(.text); asm/rom_11B9C.o(.text); src/rom_3219C.o(.text); asm/rom_3219C.o(.text); asm/options.o(.text); - asm/rom_528AC.o(.text); + src/rom_528AC.o(.text); asm/m4a_1.o(.text); src/m4a.o(.text); asm/libagbsyscall.o(.text); diff --git a/src/gbplayer.c b/src/gbplayer.c index 00d30d5..c0d9655 100755 --- a/src/gbplayer.c +++ b/src/gbplayer.c @@ -292,6 +292,7 @@ void sub_1198(void) void sub_11B0(int arg0) { if (gUnknown_0200B134[0xCD]) + //if (gMain.saveData.unk141) { gUnknown_02019BF8 = arg0; gUnknown_02019BFC = 0; diff --git a/src/rom_1068C.c b/src/rom_1068C.c new file mode 100644 index 0000000..4a5e619 --- /dev/null +++ b/src/rom_1068C.c @@ -0,0 +1,124 @@ +#include "global.h" +#include "main.h" + +void sub_1068C(int a, int b, int c, int d, u16 e) +{ + u16 i; + u16 j; + + for (i = 0; i < d; i++) + { + for (j = 0; j < c; j++) + { + u16 index = b * 32 + a + i * 32 + j; + + gUnknown_03005C00[index] = (gUnknown_03005C00[index] & 0xFFF) | (e << 12); + } + } +} + +// This requires volatile parameters to match. There is no reason, *ever*, to do this. +void sub_10708(void *volatile src, void *volatile dest, s16 numTilesX, s16 numTilesY) +{ + int i; + + for (i = 0; i < numTilesY; i++) + { + DmaCopy16(3, (u8 *)src + 0x400 * i, (u8 *)dest + 0x400 * i, numTilesX * 32); + } +} + +void sub_10750(void *volatile src, void *volatile dest, s16 numTilesX, s16 numTilesY) +{ + int i; + + for (i = 0; i < numTilesY; i++) + { + DmaCopy16(3, (u8 *)src + 0x40 * i, (u8 *)dest + 0x40 * i, numTilesX * 2); + } +} + +void sub_10798(void *a, void *b, void (*func)(void)) +{ + u16 i; + + DmaCopy16(3, a, gUnknown_0201A920, 0x200); + DmaCopy16(3, b, gUnknown_0201A920 + 0x200, 0x200); + DmaFill16(3, 0x7FFF, gUnknown_0201A920 - 0x200, 0x400); + DmaCopy16(3, gUnknown_0201A920 - 0x200, gUnknown_0201A920 + 0x200, 0x400); + DmaCopy16(3, gUnknown_0201A920 + 0x200, (void *)PLTT, 0x400); + + sub_1050C(); + gMain.unk16 = REG_DISPCNT; + + for (i = 0; i <= 32; i += 16) + { + if (func != NULL) + func(); + sub_1001C(i); + sub_D74(); + if (i == 32) + { + DmaCopy16(3, gUnknown_0201A920, (void *)PLTT, 0x400); + } + else + { + DmaCopy16(3, gUnknown_0201AD20, (void *)PLTT, 0x400); + } + } +} + +void sub_10860(void (*func)(void)) +{ + u16 i; + + DmaCopy16(3, (void *)PLTT, gUnknown_0201A520, 0x400); + DmaFill16(3, 0x7FFF, gUnknown_0201A520 + 0x200, 0x400); + DmaCopy16(3, gUnknown_0201A520, gUnknown_0201A520 + 0x400, 0x400); + + for (i = 0; i <= 32; i += 16) + { + if (func != NULL) + func(); + sub_1001C(i); + sub_D74(); + if (i == 32) + { + DmaCopy16(3, gUnknown_0201A920, (void *)PLTT, 0x400); + } + else + { + DmaCopy16(3, gUnknown_0201AD20, (void *)PLTT, 0x400); + } + } + sub_D74(); +} + +#ifdef NONMATCHING +// Like sub_C24, it matches except for that damn 'push {lr}/pop {lr}' +void sub_1090C(void) +{ + int i; + + for (i = 0; i < 4; i++) + gUnknown_0201A500[i] = 0; +} +#else +NAKED +void sub_1090C(void) +{ + asm_unified("\n\ + ldr r1, _08010920 @ =gUnknown_0201A500\n\ + movs r2, #0\n\ + adds r0, r1, #0\n\ + adds r0, #0xc\n\ +_08010914:\n\ + str r2, [r0]\n\ + subs r0, #4\n\ + cmp r0, r1\n\ + bge _08010914\n\ + bx lr\n\ + .align 2, 0\n\ +_08010920: .4byte gUnknown_0201A500"); +} +#endif diff --git a/src/rom_3219C.c b/src/rom_3219C.c index 6954fbe..77eb7ac 100755 --- a/src/rom_3219C.c +++ b/src/rom_3219C.c @@ -43,31 +43,31 @@ void sub_3219C(void) { s16 numSpecialMons = 0; gUnknown_020314E0->catchModeSpecies = 0; - if (gUnknown_0200B134[SPECIES_AERODACTYL]) + if (gMain+0x74[SPECIES_AERODACTYL]) { specialMons[numSpecialMons++] = SPECIES_AERODACTYL; - if (gUnknown_0200B134[SPECIES_AERODACTYL] < 4) + if (gMain+0x74[SPECIES_AERODACTYL] < 4) gUnknown_020314E0->catchModeSpecies = SPECIES_AERODACTYL; } - if (gUnknown_0200B134[SPECIES_CHIKORITA]) + if (gMain+0x74[SPECIES_CHIKORITA]) { specialMons[numSpecialMons++] = SPECIES_CHIKORITA; - if (gUnknown_0200B134[SPECIES_CHIKORITA] < 4) + if (gMain+0x74[SPECIES_CHIKORITA] < 4) gUnknown_020314E0->catchModeSpecies = SPECIES_CHIKORITA; } - if (gUnknown_0200B134[SPECIES_TOTODILE]) + if (gMain+0x74[SPECIES_TOTODILE]) { specialMons[numSpecialMons++] = SPECIES_TOTODILE; - if (gUnknown_0200B134[SPECIES_TOTODILE] < 4) + if (gMain+0x74[SPECIES_TOTODILE] < 4) gUnknown_020314E0->catchModeSpecies = SPECIES_TOTODILE; } - if (gUnknown_0200B134[SPECIES_CYNDAQUIL]) + if (gMain+0x74[SPECIES_CYNDAQUIL]) { specialMons[numSpecialMons++] = SPECIES_CYNDAQUIL; - if (gUnknown_0200B134[SPECIES_CYNDAQUIL] < 4) + if (gMain+0x74[SPECIES_CYNDAQUIL] < 4) gUnknown_020314E0->catchModeSpecies = SPECIES_CYNDAQUIL; } diff --git a/src/rom_528AC.c b/src/rom_528AC.c new file mode 100644 index 0000000..f1c7d5f --- /dev/null +++ b/src/rom_528AC.c @@ -0,0 +1,254 @@ +#include "global.h" +#include "m4a.h" +#include "agb_sram.h" +#include "main.h" + +extern const u16 gUnknown_08527F18[]; + +#ifdef NONMATCHING +// Like sub_C24, it matches except for that damn 'push {lr}/pop {lr}' +int sub_528AC(u16 a) +{ + if (a <= 0xFA) + return a; + if (a <= 0x113) + return 0xC8; + return gUnknown_08527F18[a - 0x114]; +} +#else +NAKED +int sub_528AC(u16 a) +{ + asm_unified("\n\ + lsls r0, r0, #0x10\n\ + lsrs r0, r0, #0x10\n\ + adds r1, r0, #0\n\ + cmp r0, #0xfa\n\ + bls _080528DA\n\ + ldr r0, _080528CC @ =0x00000113\n\ + cmp r1, r0\n\ + bls _080528D8\n\ + ldr r0, _080528D0 @ =gUnknown_08527F18\n\ + ldr r2, _080528D4 @ =0xFFFFFEEC\n\ + adds r1, r1, r2\n\ + lsls r1, r1, #1\n\ + adds r1, r1, r0\n\ + ldrh r0, [r1]\n\ + b _080528DA\n\ + .align 2, 0\n\ +_080528CC: .4byte 0x00000113\n\ +_080528D0: .4byte gUnknown_08527F18\n\ +_080528D4: .4byte 0xFFFFFEEC\n\ +_080528D8:\n\ + movs r0, #0xc8\n\ +_080528DA:\n\ + bx lr"); +} +#endif + +void sub_52940(u16, s8, s8, u8, int); + +void sub_528DC(u16 a, s8 b) +{ + m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x99); + sub_52940(a, b, 0x7D, 10, 0); +} + +void sub_5291C(u16 a, s8 b, s8 c, u8 d) +{ + sub_52940(a, b, c, d, 0); +} + +extern struct ToneData gUnknown_08532D6C[]; +extern struct ToneData gUnknown_08533360[]; +extern struct ToneData gUnknown_08533960[]; +extern struct ToneData gUnknown_08533F60[]; + +void sub_52940(u16 a, s8 b, s8 c, u8 d, int unused) +{ + u16 r5 = a - 1; + u32 pitch = 0x3C00; + u32 var; + u32 r1; + u8 r0; + + SetPokemonCryVolume(c); + SetPokemonCryPanpot(b); + SetPokemonCryPitch(pitch); + SetPokemonCryLength(0x8C); + SetPokemonCryProgress(0); + SetPokemonCryRelease(0); + SetPokemonCryChorus(0); + SetPokemonCryPriority(d); + var = sub_528AC(r5); + r1 = var & 0x7F; + r0 = var >> 7; + switch (r0) + { + case 0: + SetPokemonCryTone(&gUnknown_08532D6C[r1]); + break; + case 1: + SetPokemonCryTone(&gUnknown_08533360[r1]); + break; + case 2: + SetPokemonCryTone(&gUnknown_08533960[r1]); + break; + case 3: + SetPokemonCryTone(&gUnknown_08533F60[r1]); + break; + } +} + +extern u16 sub_52A68(void); +extern void sub_525CC(s8); + +void sub_52A18(void) +{ + SetSramFastFunc(); + gMain.unkC = 0; + if (sub_52A68() == 0) + { + sub_52C64(); + sub_52B30(); + if (sub_52A68() == 0) + { + gMain.unkC = 1; + sub_52C64(); + } + } + else + { + sub_525CC(gMain.saveData.unk143); + } +} + +extern struct Main2 gMain_; +extern u8 gSaveFileSignature[]; + +u16 sub_52A68(void) +{ + u16 r8 = 0; + u16 fileNum; + u16 i; + u32 checksum; + + // Looks like there are two copies of the save data, one used as a backup? + for (fileNum = 0; fileNum < 2; fileNum++) + { + u16 *saveData = (u16 *)&gMain.saveData; + u32 size = 0x274; + + ReadSramFast((u8 *)0x0E000004 + fileNum * 672, (u8 *)saveData, size); + + // Verify signature + for (i = 0; i < 10; i++) + { + if (gMain.saveData.signature[i] != gSaveFileSignature[i]) + break; + } + if (i != 10) + continue; + + // Verify checksum + checksum = 0; + while (size > 1) + { + checksum += *saveData++; + size -= 2; + } + if (size != 0) // never happens (size is even) + checksum += *saveData & 0xFF00; + checksum = (checksum & 0xFFFF) + (checksum >> 16); + if (checksum == 0xFFFF) + { + r8 = 1; + break; + } + } + return r8; +} + +// I really think gUnknown_0200B134_ is part of gMain, but the code doesn't +// match if I do that. +#ifdef NONMATCHING +#define gUnknown_0200B134_ gMain.saveData +#else +extern struct SaveData gUnknown_0200B134_; // gMain.saveData +asm(".set gUnknown_0200B134_, gMain+0x74"); +#endif + +void sub_52B30(void) +{ + u32 checksum; + u16 *saveData = (u16 *)&gUnknown_0200B134_; + u32 size = 0x274; + + gUnknown_0200B134_.unk2E4++; + gUnknown_0200B134_.unk2E2 = 0; + + checksum = 0; + while (size > 1) + { + checksum += *saveData++; + size -= 2; + } + if (size != 0) // never happens (size is even) + checksum += *saveData & 0xFF00; + checksum = (checksum & 0xFFFF) + (checksum >> 16); + gUnknown_0200B134_.unk2E2 = ~((checksum >> 16) + checksum); + + WriteAndVerifySramFast((u8 *)&gUnknown_0200B134_, (u8 *)0x0E000004, 0x274); + WriteAndVerifySramFast((u8 *)&gUnknown_0200B134_, (u8 *)0x0E0002A4, 0x274); +} + +void sub_52BB0(s16 a, u8 b) +{ + u16 *saveData = (u16 *)&gUnknown_0200B134_; + u32 size = 0x274; + u32 checksum; + + if (gUnknown_0200B134_.pokedexFlags[a] < b) + { + u16 r1; + + gUnknown_0200B134_.unk2E4++; + r1 = 0; + gUnknown_0200B134_.pokedexFlags[a] = b; + gUnknown_0200B134_.unk2E2 = r1; + + checksum = 0; + while (size > 1) + { + checksum += *saveData++; + size -= 2; + } + if (size != 0) // never happens (size is even) + checksum += *saveData & 0xFF00; + checksum = (checksum & 0xFFFF) + (checksum >> 16); + gUnknown_0200B134_.unk2E2 = ~((checksum >> 16) + checksum); + + WriteAndVerifySramFast((u8 *)&gUnknown_0200B134_, (u8 *)0x0E000004, 0x274); + WriteAndVerifySramFast((u8 *)&gUnknown_0200B134_, (u8 *)0x0E0002A4, 0x274); + } +} + +void sub_52C44(void) +{ + ReadSramFast((u8 *)0x0E000544, (u8 *)&gMain.hasSavedGame, sizeof(gMain.hasSavedGame)); +} + +void sub_52C64(void) +{ + s16 r1; + + for (r1 = 0; r1 < 10; r1++) + gUnknown_0200B134_.signature[r1] = gSaveFileSignature[r1]; + gUnknown_0200B134_.unk2E4 = 0; + gUnknown_0200B134_.unk141 = 0; + gUnknown_0200B134_.unk142 = 0; + sub_525CC(-1); + sub_F6E0(); + sub_8ABC(); + gUnknown_0200B134_.unk143 = 0; +} diff --git a/src/titlescreen.c b/src/titlescreen.c index 6a2bcac..22bc699 100755 --- a/src/titlescreen.c +++ b/src/titlescreen.c @@ -12,6 +12,15 @@ static void sub_11640(void); // it will transition to a demo gameplay experience. #define NUM_IDLE_FRAMES 1800 +enum +{ + SUBSTATE_LOAD_GRAPHICS = 0, + SUBSTATE_WAIT_FOR_START_BUTTON = 1, + SUBSTATE_MENU_INPUT_NO_SAVED_GAME = 4, + SUBSTATE_MENU_INPUT_SAVED_GAME = 5, + SUBSTATE_ANIM_CLOSE_MENU = 6, + SUBSTATE_EXEC_MENU_SELECTION = 10 +}; void TitlescreenMain(void) { @@ -33,7 +42,7 @@ void LoadTitlescreenGraphics(void) DmaCopy16(3, gTitlescreenBgTilemap, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE); sub_52C44(); - if (gMain.unk40 == 1) + if (gMain.hasSavedGame == TRUE) { DmaCopy16(3, gTitlescreenSprites_Pals, (void *)OBJ_PLTT, 0xA0); DmaCopy16(3, gTitlescreenSpritesSavedGame_Gfx, (void *)BG_CHAR_ADDR(4), 0x7000); @@ -62,7 +71,7 @@ void LoadTitlescreenGraphics(void) } else { - gMain.subState = 1; + gMain.subState = SUBSTATE_WAIT_FOR_START_BUTTON; sub_CBC(); sub_FD5C(sub_11640); } @@ -74,7 +83,7 @@ void sub_10AC0(void) { int i; - gTitlescreen.unk4 = 0; + gTitlescreen.animTimer = 0; gTitlescreen.unk2 = 0; gTitlescreen.unk6 = 0; gTitlescreen.unk8 = 0; @@ -93,7 +102,7 @@ void sub_10AC0(void) gEReaderAccessStep = 0; gEReaderAccessCounter = 0; - if (gMain.unk40 == 1) + if (gMain.hasSavedGame == TRUE) { for (i = 0; i < 7; i++) gUnknown_0202BE00[i] = gUnknown_086A975C[i]; @@ -123,7 +132,7 @@ void sub_10AC0(void) gUnknown_202BE24 = 0; } -void sub_10BB8(void) +void TitleScreen1_WaitForStartButton(void) { if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON)) == (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON)) @@ -142,10 +151,10 @@ void sub_10BB8(void) if (!gUnknown_020028A4) { - gTitlescreen.unk4++; - if (gTitlescreen.unk4 >= gUnknown_086A9662[gTitlescreen.unk8]) + gTitlescreen.animTimer++; + if (gTitlescreen.animTimer >= gUnknown_086A9662[gTitlescreen.unk8]) { - gTitlescreen.unk4 = 0; + gTitlescreen.animTimer = 0; if (++gTitlescreen.unk8 > 3) gTitlescreen.unk8 = 0; } @@ -156,7 +165,7 @@ void sub_10BB8(void) if (gMain.newKeys & (A_BUTTON | START_BUTTON)) { m4aSongNumStart(0x65); - gTitlescreen.unk4 = 0; + gTitlescreen.animTimer = 0; gTitlescreen.unk2 = 0; gMain.subState = 2; } @@ -185,7 +194,7 @@ void sub_10BB8(void) sub_11640(); } -void sub_10CF0(void) +void TitleScreen2_Unknown(void) { if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON)) == (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON)) @@ -197,10 +206,10 @@ void sub_10CF0(void) if (!gUnknown_020028A4) { - gTitlescreen.unk4++; - if (gTitlescreen.unk4 >= gUnknown_086A9666[gTitlescreen.unk2][1]) + gTitlescreen.animTimer++; + if (gTitlescreen.animTimer >= gUnknown_086A9666[gTitlescreen.unk2][1]) { - gTitlescreen.unk4 = 0; + gTitlescreen.animTimer = 0; gTitlescreen.unk8 = gUnknown_086A9666[gTitlescreen.unk2][0]; if (++gTitlescreen.unk2 > 5) { @@ -216,14 +225,14 @@ void sub_10CF0(void) sub_11640(); } -void sub_10D84(void) +void TitleScreen9_Unknown(void) { if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON)) == (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON)) { gUnknown_020028A4 = 1; gTitlescreen.unk6 = 9; - gMain.subState = 10; + gMain.subState = SUBSTATE_EXEC_MENU_SELECTION; } if (!gUnknown_020028A4) @@ -235,20 +244,20 @@ void sub_10D84(void) sub_2B4(); m4aMPlayAllStop(); sub_D10(); - gMain.subState = 0; + gMain.subState = SUBSTATE_LOAD_GRAPHICS; } else if (gMain.newKeys & B_BUTTON) { m4aSongNumStart(0x66); gTitlescreen.unk11 = 0; - gMain.subState = 1; + gMain.subState = SUBSTATE_WAIT_FOR_START_BUTTON; } } sub_11640(); } -void sub_10E00(void) +void TitleScreen3_Unknown(void) { if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON)) == (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON)) @@ -262,17 +271,17 @@ void sub_10E00(void) { if (!gTitlescreen.unk7) { - gTitlescreen.unk4++; - if (gTitlescreen.unk4 >= gUnknown_086A9748[gTitlescreen.unk2]) + gTitlescreen.animTimer++; + if (gTitlescreen.animTimer >= gUnknown_086A9748[gTitlescreen.unk2]) { - gTitlescreen.unk4 = 0; + gTitlescreen.animTimer = 0; gUnknown_0201C190[6] = gUnknown_086A9714[gTitlescreen.unk2]; if (++gTitlescreen.unk2 > 11) { gTitlescreen.unk2 = 0; gTitlescreen.unkD = 1; gTitlescreen.unkF = 1; - gMain.subState = 4; + gMain.subState = SUBSTATE_MENU_INPUT_NO_SAVED_GAME; } } @@ -280,17 +289,17 @@ void sub_10E00(void) } else { - gTitlescreen.unk4++; - if (gTitlescreen.unk4 >= gUnknown_086A9748[gTitlescreen.unk2]) + gTitlescreen.animTimer++; + if (gTitlescreen.animTimer >= gUnknown_086A9748[gTitlescreen.unk2]) { - gTitlescreen.unk4 = 0; + gTitlescreen.animTimer = 0; gUnknown_0202BE00[6] = gUnknown_086A9778[gTitlescreen.unk2]; if (++gTitlescreen.unk2 > 11) { gTitlescreen.unk2 = 0; gTitlescreen.unkD = 1; gTitlescreen.unkF = 1; - gMain.subState = 5; + gMain.subState = SUBSTATE_MENU_INPUT_SAVED_GAME; } } @@ -299,22 +308,22 @@ void sub_10E00(void) } } -void sub_10EF4(void) +void TitleScreen4_MenuInputNoSavedGame(void) { if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON)) == (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON)) { gUnknown_020028A4 = 1; gTitlescreen.unk6 = 9; - gMain.subState = 10; + gMain.subState = SUBSTATE_EXEC_MENU_SELECTION; } if (!gUnknown_020028A4) { - gTitlescreen.unk4++; - if (gTitlescreen.unk4 >= gUnknown_086A9672[gTitlescreen.unk2][1]) + gTitlescreen.animTimer++; + if (gTitlescreen.animTimer >= gUnknown_086A9672[gTitlescreen.unk2][1]) { - gTitlescreen.unk4 = 0; + gTitlescreen.animTimer = 0; if (++gTitlescreen.unk2 > 6) gTitlescreen.unk2 = 0; @@ -338,18 +347,18 @@ void sub_10EF4(void) if (gMain.newKeys & (A_BUTTON | START_BUTTON)) { m4aSongNumStart(0x65); - gTitlescreen.unk4 = 0; + gTitlescreen.animTimer = 0; gTitlescreen.unk2 = 0; gMain.subState = 7; } else if (gMain.newKeys & B_BUTTON) { m4aSongNumStart(0x66); - gTitlescreen.unk4 = 0; + gTitlescreen.animTimer = 0; gTitlescreen.unk2 = 12; gTitlescreen.unkD = 0; gTitlescreen.unkF = 0; - gMain.subState = 6; + gMain.subState = SUBSTATE_ANIM_CLOSE_MENU; } sub_1157C(); @@ -358,7 +367,7 @@ void sub_10EF4(void) sub_1175C(); } -void sub_11020(void) +void TitleScreen7_Unknown(void) { if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON)) == (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON)) @@ -370,9 +379,9 @@ void sub_11020(void) if (!gUnknown_020028A4) { - u16 unk4 = gTitlescreen.unk4; + u16 animTimer = gTitlescreen.animTimer; u16 mask = 0x3; - if (!(unk4 & mask)) + if (!(animTimer & mask)) { if (!gTitlescreen.unk2) { @@ -387,35 +396,35 @@ void sub_11020(void) } } - if (gTitlescreen.unk4 > 20) + if (gTitlescreen.animTimer > 20) { gMain.unkD = 0; gTitlescreen.unk6 = gUnknown_086A96A4[gTitlescreen.menuCursorIndex]; - gMain.subState = 10; + gMain.subState = SUBSTATE_EXEC_MENU_SELECTION; } - gTitlescreen.unk4++; + gTitlescreen.animTimer++; } sub_1175C(); } -void sub_110FC(void) +void TitleScreen5_MenuInputSavedGame(void) { if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON)) == (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON)) { gUnknown_020028A4 = 1; gTitlescreen.unk6 = 9; - gMain.subState = 10; + gMain.subState = SUBSTATE_EXEC_MENU_SELECTION; } if (!gUnknown_020028A4) { - gTitlescreen.unk4++; - if (gTitlescreen.unk4 >= gUnknown_086A9672[gTitlescreen.unk2][1]) + gTitlescreen.animTimer++; + if (gTitlescreen.animTimer >= gUnknown_086A9672[gTitlescreen.unk2][1]) { - gTitlescreen.unk4 = 0; + gTitlescreen.animTimer = 0; if (++gTitlescreen.unk2 > 6) gTitlescreen.unk2 = 0; @@ -439,18 +448,18 @@ void sub_110FC(void) if (gMain.newKeys & (A_BUTTON | START_BUTTON)) { m4aSongNumStart(0x65); - gTitlescreen.unk4 = 0; + gTitlescreen.animTimer = 0; gTitlescreen.unk2 = 0; gMain.subState = 8; } else if (gMain.newKeys & B_BUTTON) { m4aSongNumStart(0x66); - gTitlescreen.unk4 = 0; + gTitlescreen.animTimer = 0; gTitlescreen.unk2 = 12; gTitlescreen.unkD = 0; gTitlescreen.unkF = 0; - gMain.subState = 6; + gMain.subState = SUBSTATE_ANIM_CLOSE_MENU; } sub_1157C(); @@ -459,7 +468,7 @@ void sub_110FC(void) sub_11968(); } -void sub_11228(void) +void TitleScreen8_Unknown(void) { if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON)) == (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON)) @@ -471,9 +480,11 @@ void sub_11228(void) if (!gUnknown_020028A4) { - u16 unk4 = gTitlescreen.unk4; + u16 animTimer = gTitlescreen.animTimer; u16 mask = 0x3; - if (!(unk4 & mask)) + + // Blink menu item + if (!(animTimer & mask)) { if (!gTitlescreen.unk2) { @@ -488,7 +499,7 @@ void sub_11228(void) } } - if (gTitlescreen.unk4 > 20) + if (gTitlescreen.animTimer > 20) { if (gTitlescreen.menuCursorIndex == 1) gMain.unkD = 1; @@ -496,16 +507,16 @@ void sub_11228(void) gMain.unkD = 0; gTitlescreen.unk6 = gUnknown_086A96D4[gTitlescreen.menuCursorIndex]; - gMain.subState = 10; + gMain.subState = SUBSTATE_EXEC_MENU_SELECTION; } - gTitlescreen.unk4++; + gTitlescreen.animTimer++; } sub_11968(); } -void sub_11320(void) +void TitleScreen6_AnimCloseMenu(void) { if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON)) == (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON)) @@ -519,10 +530,10 @@ void sub_11320(void) { if (!gTitlescreen.unk7) { - gTitlescreen.unk4++; - if (gTitlescreen.unk4 >= gUnknown_086A9748[gTitlescreen.unk2]) + gTitlescreen.animTimer++; + if (gTitlescreen.animTimer >= gUnknown_086A9748[gTitlescreen.unk2]) { - gTitlescreen.unk4 = 0; + gTitlescreen.animTimer = 0; if (--gTitlescreen.unk2 < 0) { gTitlescreen.unk2 = 0; @@ -530,7 +541,7 @@ void sub_11320(void) gUnknown_202BE24 = 1; gTitlescreen.unk9 = 1; gTitlescreen.unkB = 0; - gMain.subState = 1; + gMain.subState = SUBSTATE_WAIT_FOR_START_BUTTON; } gUnknown_0201C190[6] = gUnknown_086A9714[gTitlescreen.unk2]; @@ -540,10 +551,10 @@ void sub_11320(void) } else { - gTitlescreen.unk4++; - if (gTitlescreen.unk4 >= gUnknown_086A9748[gTitlescreen.unk2]) + gTitlescreen.animTimer++; + if (gTitlescreen.animTimer >= gUnknown_086A9748[gTitlescreen.unk2]) { - gTitlescreen.unk4 = 0; + gTitlescreen.animTimer = 0; if (--gTitlescreen.unk2 < 0) { gTitlescreen.unk2 = 0; @@ -551,7 +562,7 @@ void sub_11320(void) gUnknown_202BE24 = 1; gTitlescreen.unk9 = 1; gTitlescreen.unkB = 0; - gMain.subState = 1; + gMain.subState = SUBSTATE_WAIT_FOR_START_BUTTON; } gUnknown_0202BE00[6] = gUnknown_086A9778[gTitlescreen.unk2]; @@ -562,7 +573,7 @@ void sub_11320(void) } } -void sub_11428(void) +void TitleScreen10_ExecMenuSelection(void) { if (!gTitlescreen.unk7) sub_FE04(sub_1175C); @@ -581,7 +592,7 @@ void sub_11428(void) SetMainGameState(gUnknown_086A964C[gTitlescreen.unk6]); } -void sub_114B4(void) +void TitleScreen11_Unknown(void) { sub_FE04(sub_11640); m4aMPlayAllStop(); @@ -634,10 +645,10 @@ static void sub_1157C(void) gEReaderAccessCounter = 0; m4aSongNumStart(0x65); gTitlescreen.unk6 = 5; - if (gMain.subState == 1) + if (gMain.subState == SUBSTATE_WAIT_FOR_START_BUTTON) gMain.subState = 11; else - gMain.subState = 10; + gMain.subState = SUBSTATE_EXEC_MENU_SELECTION; } } @@ -852,6 +863,6 @@ void sub_11B74(void) { sub_52C64(); sub_52B30(); - gMain.unk40 = 0; - WriteAndVerifySramFast((const u8 *)&gMain.unk40, (void *)0x0E000544, 4); + gMain.hasSavedGame = FALSE; + WriteAndVerifySramFast((const u8 *)&gMain.hasSavedGame, (void *)0x0E000544, sizeof(gMain.hasSavedGame)); } |