From 41baa271c3fff795ee7ffa16d756ae427e5b792c Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Wed, 24 Oct 2018 18:16:51 -0500 Subject: More decompiling + gbplayer lib code --- Makefile | 1 + asm/bonus_field_select.s | 810 ++++++++++++++++++ asm/ereader.s | 2085 ++++++++++++++++++++++++++++++++++++++++++++++ asm/high_scores.s | 5 +- asm/options.s | 22 +- asm/rom_11B9C.s | 4 +- asm/rom_25A4.s | 810 ------------------ asm/rom_2C58.s | 2085 ---------------------------------------------- asm/rom_9BC.s | 638 +------------- data/rom.s | 82 +- include/gba/io_reg.h | 1 + include/gbplayer.h | 8 + include/main.h | 34 + ld_script.txt | 5 +- src/gbplayer.c | 433 ++++++++++ src/main.c | 46 +- sym_ewram.txt | 66 +- 17 files changed, 3540 insertions(+), 3595 deletions(-) create mode 100755 asm/bonus_field_select.s create mode 100755 asm/ereader.s delete mode 100755 asm/rom_25A4.s delete mode 100755 asm/rom_2C58.s create mode 100755 include/gbplayer.h create mode 100755 src/gbplayer.c diff --git a/Makefile b/Makefile index a871d2f..8e1cabe 100755 --- a/Makefile +++ b/Makefile @@ -103,6 +103,7 @@ 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)/libc.o: CC1 := tools/agbcc/bin/old_agbcc $(C_BUILDDIR)/libc.o: CFLAGS := -O2 diff --git a/asm/bonus_field_select.s b/asm/bonus_field_select.s new file mode 100755 index 0000000..e181588 --- /dev/null +++ b/asm/bonus_field_select.s @@ -0,0 +1,810 @@ + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start BonusFieldSelectMain +BonusFieldSelectMain: @ 0x080025A4 + push {lr} + ldr r1, _080025BC @ =0x0805C750 + ldr r0, _080025C0 @ =gMain + ldrb r0, [r0, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {r0} + bx r0 + .align 2, 0 +_080025BC: .4byte 0x0805C750 +_080025C0: .4byte gMain + + thumb_func_start sub_25C4 +sub_25C4: @ 0x080025C4 + push {r4, lr} + bl sub_438 + movs r2, #0x80 + lsls r2, r2, #0x13 + movs r1, #0x84 + lsls r1, r1, #5 + adds r0, r1, #0 + strh r0, [r2] + ldr r1, _080026A8 @ =0x04000008 + movs r0, #5 + strh r0, [r1] + ldrh r0, [r2] + movs r3, #0x80 + lsls r3, r3, #1 + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r2] + ldr r1, _080026AC @ =0x0400000A + adds r3, #6 + adds r0, r3, #0 + strh r0, [r1] + ldrh r0, [r2] + adds r3, #0xfa + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r2] + ldr r1, _080026B0 @ =0x0400000C + adds r3, #0xb + adds r0, r3, #0 + strh r0, [r1] + ldrh r0, [r2] + movs r3, #0x80 + lsls r3, r3, #3 + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r2] + ldr r4, _080026B4 @ =gMain + ldrh r0, [r2] + strh r0, [r4, #0x16] + ldr r0, _080026B8 @ =0x040000D4 + ldr r1, _080026BC @ =0x0807C2E0 + str r1, [r0] + movs r1, #0xa0 + lsls r1, r1, #0x13 + str r1, [r0, #4] + ldr r1, _080026C0 @ =0x80000100 + str r1, [r0, #8] + ldr r1, [r0, #8] + ldr r1, _080026C4 @ =gFieldSelectWindow_Gfx + str r1, [r0] + ldr r1, _080026C8 @ =0x06004000 + str r1, [r0, #4] + ldr r1, _080026CC @ =0x80002000 + str r1, [r0, #8] + ldr r1, [r0, #8] + ldr r1, _080026D0 @ =0x0807C4E0 + str r1, [r0] + ldr r1, _080026D4 @ =0x06008000 + str r1, [r0, #4] + ldr r1, _080026D8 @ =0x80000C00 + str r1, [r0, #8] + ldr r1, [r0, #8] + ldr r1, _080026DC @ =0x0807AAE0 + str r1, [r0] + movs r1, #0xc0 + lsls r1, r1, #0x13 + str r1, [r0, #4] + ldr r2, _080026E0 @ =0x80000400 + str r2, [r0, #8] + ldr r1, [r0, #8] + ldr r1, _080026E4 @ =0x0807B2E0 + str r1, [r0] + ldr r1, _080026E8 @ =0x06000800 + str r1, [r0, #4] + str r2, [r0, #8] + ldr r1, [r0, #8] + ldr r1, _080026EC @ =0x0807BAE0 + str r1, [r0] + ldr r1, _080026F0 @ =0x06001000 + str r1, [r0, #4] + str r2, [r0, #8] + ldr r1, [r0, #8] + ldr r1, _080026F4 @ =gFieldSelectSpritePals + str r1, [r0] + ldr r1, _080026F8 @ =0x05000200 + str r1, [r0, #4] + ldr r1, _080026FC @ =0x80000030 + str r1, [r0, #8] + ldr r1, [r0, #8] + ldr r1, _08002700 @ =gFieldSelectSpriteGfx + str r1, [r0] + ldr r1, _08002704 @ =0x06010000 + str r1, [r0, #4] + ldr r1, _08002708 @ =0x80002010 + str r1, [r0, #8] + ldr r0, [r0, #8] + bl sub_CBC + bl sub_2710 + ldr r0, _0800270C @ =sub_29C8 + 1 + bl sub_FD5C + movs r0, #3 + bl m4aSongNumStart + ldrb r0, [r4, #3] + adds r0, #1 + strb r0, [r4, #3] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080026A8: .4byte 0x04000008 +_080026AC: .4byte 0x0400000A +_080026B0: .4byte 0x0400000C +_080026B4: .4byte gMain +_080026B8: .4byte 0x040000D4 +_080026BC: .4byte 0x0807C2E0 +_080026C0: .4byte 0x80000100 +_080026C4: .4byte gFieldSelectWindow_Gfx +_080026C8: .4byte 0x06004000 +_080026CC: .4byte 0x80002000 +_080026D0: .4byte 0x0807C4E0 +_080026D4: .4byte 0x06008000 +_080026D8: .4byte 0x80000C00 +_080026DC: .4byte 0x0807AAE0 +_080026E0: .4byte 0x80000400 +_080026E4: .4byte 0x0807B2E0 +_080026E8: .4byte 0x06000800 +_080026EC: .4byte 0x0807BAE0 +_080026F0: .4byte 0x06001000 +_080026F4: .4byte gFieldSelectSpritePals +_080026F8: .4byte 0x05000200 +_080026FC: .4byte 0x80000030 +_08002700: .4byte gFieldSelectSpriteGfx +_08002704: .4byte 0x06010000 +_08002708: .4byte 0x80002010 +_0800270C: .4byte sub_29C8 + 1 + + thumb_func_start sub_2710 +sub_2710: @ 0x08002710 + ldr r0, _08002740 @ =0x0201A4F8 + movs r1, #0 + strb r1, [r0] + ldr r0, _08002744 @ =0x0202BED0 + strb r1, [r0] + ldr r0, _08002748 @ =0x0202A560 + movs r1, #0 + strh r1, [r0] + ldr r0, _0800274C @ =0x0202BE1C + strh r1, [r0] + ldr r0, _08002750 @ =0x0202BEE8 + strb r1, [r0] + ldr r0, _08002754 @ =0x0201A4F4 + strh r1, [r0] + ldr r0, _08002758 @ =0x0201A4B0 + strb r1, [r0] + ldr r0, _0800275C @ =0x0202BEE4 + strb r1, [r0] + ldr r1, _08002760 @ =0x0201A4C0 + ldr r0, _08002764 @ =0x0200B134 + adds r0, #0xce + ldrb r0, [r0] + strb r0, [r1] + bx lr + .align 2, 0 +_08002740: .4byte 0x0201A4F8 +_08002744: .4byte 0x0202BED0 +_08002748: .4byte 0x0202A560 +_0800274C: .4byte 0x0202BE1C +_08002750: .4byte 0x0202BEE8 +_08002754: .4byte 0x0201A4F4 +_08002758: .4byte 0x0201A4B0 +_0800275C: .4byte 0x0202BEE4 +_08002760: .4byte 0x0201A4C0 +_08002764: .4byte 0x0200B134 + + thumb_func_start sub_2768 +sub_2768: @ 0x08002768 + push {r4, r5, r6, lr} + bl sub_29C8 + ldr r6, _08002784 @ =0x0202BED0 + movs r4, #0 + ldrsb r4, [r6, r4] + cmp r4, #1 + bne _0800277A + b _08002884 +_0800277A: + cmp r4, #1 + bgt _08002788 + cmp r4, #0 + beq _08002790 + b _0800296E + .align 2, 0 +_08002784: .4byte 0x0202BED0 +_08002788: + cmp r4, #2 + bne _0800278E + b _0800291C +_0800278E: + b _0800296E +_08002790: + ldr r0, _080027B8 @ =gMain + ldrh r1, [r0, #0x18] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080027C0 + ldr r4, _080027BC @ =0x0201A4F8 + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #0 + beq _080027E2 + cmp r0, #3 + beq _080027E2 + movs r0, #0x6d + bl m4aSongNumStart + ldrb r0, [r4] + subs r0, #1 + b _080027E0 + .align 2, 0 +_080027B8: .4byte gMain +_080027BC: .4byte 0x0201A4F8 +_080027C0: + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080027E2 + ldr r4, _08002804 @ =0x0201A4F8 + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #2 + beq _080027E2 + cmp r0, #5 + beq _080027E2 + movs r0, #0x6d + bl m4aSongNumStart + ldrb r0, [r4] + adds r0, #1 +_080027E0: + strb r0, [r4] +_080027E2: + ldr r0, _08002808 @ =gMain + ldrh r1, [r0, #0x18] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0800280C + ldr r4, _08002804 @ =0x0201A4F8 + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #2 + ble _0800282A + movs r0, #0x6d + bl m4aSongNumStart + ldrb r0, [r4] + subs r0, #3 + b _08002828 + .align 2, 0 +_08002804: .4byte 0x0201A4F8 +_08002808: .4byte gMain +_0800280C: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0800282A + ldr r4, _0800286C @ =0x0201A4F8 + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #2 + bgt _0800282A + movs r0, #0x6d + bl m4aSongNumStart + ldrb r0, [r4] + adds r0, #3 +_08002828: + strb r0, [r4] +_0800282A: + ldr r4, _08002870 @ =gMain + ldrh r1, [r4, #0x18] + movs r5, #1 + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0800284C + movs r0, #0x65 + bl m4aSongNumStart + ldr r0, _08002874 @ =0x0202BED0 + strb r5, [r0] + ldr r0, _08002878 @ =0x0201A4B0 + strb r5, [r0] + ldr r1, _0800287C @ =0x0202A560 + movs r0, #0 + strh r0, [r1] +_0800284C: + ldrh r1, [r4, #0x18] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08002858 + b _0800296E +_08002858: + movs r0, #0x66 + bl m4aSongNumStart + ldr r0, _08002880 @ =0x0202BEE4 + strb r5, [r0] + ldrb r0, [r4, #3] + adds r0, #1 + strb r0, [r4, #3] + b _0800296E + .align 2, 0 +_0800286C: .4byte 0x0201A4F8 +_08002870: .4byte gMain +_08002874: .4byte 0x0202BED0 +_08002878: .4byte 0x0201A4B0 +_0800287C: .4byte 0x0202A560 +_08002880: .4byte 0x0202BEE4 +_08002884: + ldr r5, _08002904 @ =gMain + ldrh r1, [r5, #0x18] + movs r0, #0x30 + ands r0, r1 + cmp r0, #0 + beq _080028A0 + movs r0, #0x67 + bl m4aSongNumStart + ldr r2, _08002908 @ =0x0201A4C0 + ldrb r1, [r2] + movs r0, #1 + subs r0, r0, r1 + strb r0, [r2] +_080028A0: + ldrh r0, [r5, #0x18] + ands r4, r0 + cmp r4, #0 + beq _080028CC + movs r0, #0x65 + bl m4aSongNumStart + ldr r0, _0800290C @ =0x0202A560 + movs r1, #0 + strh r1, [r0] + ldr r0, _08002910 @ =0x0202BE1C + strh r1, [r0] + ldr r0, _08002908 @ =0x0201A4C0 + ldrb r0, [r0] + movs r2, #0xa1 + lsls r2, r2, #1 + adds r1, r5, r2 + strb r0, [r1] + bl sub_52B30 + movs r0, #2 + strb r0, [r6] +_080028CC: + ldrh r1, [r5, #0x18] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080028E4 + movs r0, #0x66 + bl m4aSongNumStart + ldr r1, _08002914 @ =0x0201A4B0 + movs r0, #0 + strb r0, [r1] + strb r0, [r6] +_080028E4: + ldr r1, _0800290C @ =0x0202A560 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + ble _0800296E + movs r0, #0 + strh r0, [r1] + ldr r2, _08002918 @ =0x0201A4F4 + ldrh r1, [r2] + movs r0, #1 + subs r0, r0, r1 + strh r0, [r2] + b _0800296E + .align 2, 0 +_08002904: .4byte gMain +_08002908: .4byte 0x0201A4C0 +_0800290C: .4byte 0x0202A560 +_08002910: .4byte 0x0202BE1C +_08002914: .4byte 0x0201A4B0 +_08002918: .4byte 0x0201A4F4 +_0800291C: + ldr r1, _08002974 @ =0x0202A560 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + ble _0800296E + movs r3, #0 + strh r3, [r1] + ldr r2, _08002978 @ =0x0202BEE8 + ldrb r1, [r2] + movs r0, #2 + subs r0, r0, r1 + strb r0, [r2] + ldr r1, _0800297C @ =0x0202BE1C + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + ble _0800296E + ldr r1, _08002980 @ =gMain + strb r3, [r1, #0xd] + ldr r2, _08002984 @ =0x086A4CF0 + ldr r0, _08002988 @ =0x0201A4F8 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r1, #4] + strb r0, [r1, #5] + movs r0, #1 + strb r0, [r1, #6] + ldr r0, _0800298C @ =0x0202BEE4 + strb r4, [r0] + ldrb r0, [r1, #3] + adds r0, #1 + strb r0, [r1, #3] +_0800296E: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08002974: .4byte 0x0202A560 +_08002978: .4byte 0x0202BEE8 +_0800297C: .4byte 0x0202BE1C +_08002980: .4byte gMain +_08002984: .4byte 0x086A4CF0 +_08002988: .4byte 0x0201A4F8 +_0800298C: .4byte 0x0202BEE4 + + thumb_func_start sub_2990 +sub_2990: @ 0x08002990 + push {lr} + ldr r0, _080029BC @ =sub_29C8 + 1 + bl sub_FE04 + bl m4aMPlayAllStop + bl sub_D10 + ldr r1, _080029C0 @ =gAutoDisplayTitlescreenMenu + movs r0, #1 + strb r0, [r1] + ldr r0, _080029C4 @ =0x0202BEE4 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl SetMainGameState + pop {r0} + bx r0 + .align 2, 0 +_080029BC: .4byte sub_29C8 + 1 +_080029C0: .4byte gAutoDisplayTitlescreenMenu +_080029C4: .4byte 0x0202BEE4 + + thumb_func_start sub_29C8 +sub_29C8: @ 0x080029C8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + ldr r1, _08002C14 @ =gMain + ldrh r0, [r1, #0x38] + ldr r0, _08002C18 @ =0x00000C14 + strh r0, [r1, #0x38] + ldrh r0, [r1, #0x3a] + ldr r0, _08002C1C @ =0x00000808 + strh r0, [r1, #0x3a] + ldr r2, _08002C20 @ =0x04000050 + ldrh r0, [r1, #0x38] + strh r0, [r2] + adds r2, #2 + ldrh r0, [r1, #0x3a] + strh r0, [r2] + ldr r7, _08002C24 @ =0x0201A4F8 + movs r0, #0xe9 + lsls r0, r0, #3 + adds r3, r1, r0 + ldr r4, _08002C28 @ =0x0201A4C0 + ldr r5, _08002C2C @ =0x0201A4F4 + ldr r2, _08002C30 @ =0x0201A4B0 + mov sb, r2 + ldr r0, _08002C34 @ =0x086A4C80 + mov ip, r0 + movs r2, #0xd2 + lsls r2, r2, #3 + adds r1, r1, r2 + add r0, sp, #0x14 +_08002A0A: + str r1, [r0] + subs r1, #0xb8 + subs r0, #4 + cmp r0, sp @ warning: use of r13 is deprecated + bge _08002A0A + movs r0, #0 + ldrsb r0, [r7, r0] + movs r2, #0xb8 + muls r0, r2, r0 + adds r0, r0, r3 + mov sl, r0 + ldrb r1, [r4] + lsls r1, r1, #1 + movs r4, #0 + ldrsh r0, [r5, r4] + adds r0, #0xc + adds r1, r1, r0 + muls r1, r2, r1 + ldr r2, _08002C38 @ =0xFFFFFBB0 + adds r0, r3, r2 + adds r1, r1, r0 + mov r8, r1 + movs r2, #1 + mov r1, sp + movs r6, #5 +_08002A3C: + ldm r1!, {r0} + strh r2, [r0] + subs r6, #1 + cmp r6, #0 + bge _08002A3C + movs r0, #0 + ldrsb r0, [r7, r0] + lsls r0, r0, #2 + add r0, sp + ldr r1, [r0] + movs r0, #0 + strh r0, [r1] + movs r0, #1 + mov r3, sl + strh r0, [r3] + mov r4, sb + movs r0, #0 + ldrsb r0, [r4, r0] + mov r7, r8 + strh r0, [r7] + mov r0, ip + movs r1, #0x10 + ldr r2, _08002C3C @ =0x0200B3B8 + bl LoadSpriteSets + movs r1, #0 +_08002A70: + lsls r2, r1, #2 + mov r0, sp + adds r4, r0, r2 + ldr r3, [r4] + ldrh r0, [r3] + adds r1, #1 + mov sb, r1 + cmp r0, #1 + bne _08002AEC + ldr r1, _08002C40 @ =0x086A4CC0 + adds r1, r2, r1 + ldrh r0, [r1] + strh r0, [r3, #2] + ldr r2, [r4] + ldrh r0, [r1, #2] + strh r0, [r2, #4] + adds r5, r4, #0 + ldr r1, _08002C44 @ =gOamBuffer + mov ip, r1 + movs r7, #8 + movs r6, #3 +_08002A9A: + ldr r4, [r5] + adds r4, r4, r7 + ldrh r2, [r4] + lsls r2, r2, #3 + add r2, ip + ldrb r1, [r2, #1] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2, #1] + ldrh r2, [r4] + lsls r2, r2, #3 + add r2, ip + movs r3, #2 + ldrsh r1, [r4, r3] + ldr r0, [r5] + movs r3, #2 + ldrsh r0, [r0, r3] + adds r1, r1, r0 + ldr r3, _08002C48 @ =0x000001FF + adds r0, r3, #0 + ands r1, r0 + ldrh r3, [r2, #2] + ldr r0, _08002C4C @ =0xFFFFFE00 + ands r0, r3 + orrs r0, r1 + strh r0, [r2, #2] + ldrh r1, [r4] + lsls r1, r1, #3 + add r1, ip + ldr r0, [r5] + ldrb r0, [r0, #4] + ldrb r4, [r4, #4] + adds r0, r0, r4 + strb r0, [r1] + adds r7, #8 + subs r6, #1 + cmp r6, #0 + bge _08002A9A +_08002AEC: + mov r1, sb + cmp r1, #5 + ble _08002A70 + movs r0, #0x58 + mov r4, sl + strh r0, [r4, #2] + movs r0, #0x85 + strh r0, [r4, #4] + ldr r5, _08002C44 @ =gOamBuffer + movs r7, #0xd + rsbs r7, r7, #0 + mov sb, r7 + ldr r0, _08002C4C @ =0xFFFFFE00 + mov ip, r0 + adds r4, #8 + movs r6, #1 +_08002B0C: + ldrh r1, [r4] + lsls r1, r1, #3 + adds r1, r1, r5 + ldrb r2, [r1, #1] + mov r0, sb + ands r0, r2 + strb r0, [r1, #1] + ldrh r2, [r4] + lsls r2, r2, #3 + adds r2, r2, r5 + ldr r3, _08002C50 @ =0x0202BEE8 + ldrb r1, [r3] + lsls r1, r1, #4 + ldrb r3, [r2, #5] + movs r0, #0xf + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #5] + ldrh r3, [r4] + lsls r3, r3, #3 + adds r3, r3, r5 + movs r7, #2 + ldrsh r1, [r4, r7] + mov r2, sl + movs r7, #2 + ldrsh r0, [r2, r7] + adds r1, r1, r0 + ldr r2, _08002C48 @ =0x000001FF + adds r0, r2, #0 + ands r1, r0 + ldrh r2, [r3, #2] + mov r0, ip + ands r0, r2 + orrs r0, r1 + strh r0, [r3, #2] + ldrh r1, [r4] + lsls r1, r1, #3 + adds r1, r1, r5 + mov r3, sl + ldrb r0, [r3, #4] + ldrb r7, [r4, #4] + adds r0, r0, r7 + strb r0, [r1] + adds r4, #8 + subs r6, #1 + cmp r6, #0 + bge _08002B0C + mov r1, r8 + ldrh r0, [r1] + cmp r0, #1 + bne _08002BEA + ldr r2, _08002C54 @ =0x086A4CD8 + ldr r1, _08002C24 @ =0x0201A4F8 + movs r0, #0 + ldrsb r0, [r1, r0] + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0] + mov r3, r8 + strh r0, [r3, #2] + movs r0, #0 + ldrsb r0, [r1, r0] + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #2] + strh r0, [r3, #4] + ldr r5, _08002C44 @ =gOamBuffer + movs r4, #0xd + rsbs r4, r4, #0 + mov sb, r4 + ldr r7, _08002C4C @ =0xFFFFFE00 + mov ip, r7 + mov r4, r8 + adds r4, #8 + movs r6, #4 +_08002BA2: + ldrh r1, [r4] + lsls r1, r1, #3 + adds r1, r1, r5 + ldrb r2, [r1, #1] + mov r0, sb + ands r0, r2 + strb r0, [r1, #1] + ldrh r3, [r4] + lsls r3, r3, #3 + adds r3, r3, r5 + movs r0, #2 + ldrsh r1, [r4, r0] + mov r2, r8 + movs r7, #2 + ldrsh r0, [r2, r7] + adds r1, r1, r0 + ldr r2, _08002C48 @ =0x000001FF + adds r0, r2, #0 + ands r1, r0 + ldrh r2, [r3, #2] + mov r0, ip + ands r0, r2 + orrs r0, r1 + strh r0, [r3, #2] + ldrh r1, [r4] + lsls r1, r1, #3 + adds r1, r1, r5 + mov r3, r8 + ldrb r0, [r3, #4] + ldrb r7, [r4, #4] + adds r0, r0, r7 + strb r0, [r1] + adds r4, #8 + subs r6, #1 + cmp r6, #0 + bge _08002BA2 +_08002BEA: + movs r2, #0 + mov r1, sp + movs r6, #5 +_08002BF0: + ldm r1!, {r0} + strh r2, [r0] + subs r6, #1 + cmp r6, #0 + bge _08002BF0 + movs r0, #0 + mov r1, sl + strh r0, [r1] + mov r2, r8 + strh r0, [r2] + add sp, #0x18 + 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 +_08002C14: .4byte gMain +_08002C18: .4byte 0x00000C14 +_08002C1C: .4byte 0x00000808 +_08002C20: .4byte 0x04000050 +_08002C24: .4byte 0x0201A4F8 +_08002C28: .4byte 0x0201A4C0 +_08002C2C: .4byte 0x0201A4F4 +_08002C30: .4byte 0x0201A4B0 +_08002C34: .4byte 0x086A4C80 +_08002C38: .4byte 0xFFFFFBB0 +_08002C3C: .4byte 0x0200B3B8 +_08002C40: .4byte 0x086A4CC0 +_08002C44: .4byte gOamBuffer +_08002C48: .4byte 0x000001FF +_08002C4C: .4byte 0xFFFFFE00 +_08002C50: .4byte 0x0202BEE8 +_08002C54: .4byte 0x086A4CD8 diff --git a/asm/ereader.s b/asm/ereader.s new file mode 100755 index 0000000..da52ca9 --- /dev/null +++ b/asm/ereader.s @@ -0,0 +1,2085 @@ + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start EReaderMain +EReaderMain: @ 0x08002C58 + push {lr} + ldr r1, _08002C70 @ =0x0805C75C + ldr r0, _08002C74 @ =gMain + ldrb r0, [r0, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {r0} + bx r0 + .align 2, 0 +_08002C70: .4byte 0x0805C75C +_08002C74: .4byte gMain + + thumb_func_start sub_2C78 +sub_2C78: @ 0x08002C78 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + bl sub_438 + movs r2, #0x80 + lsls r2, r2, #0x13 + movs r1, #0x86 + lsls r1, r1, #5 + adds r0, r1, #0 + strh r0, [r2] + ldr r1, _08002D80 @ =0x04000008 + movs r0, #4 + strh r0, [r1] + ldrh r0, [r2] + movs r3, #0x80 + lsls r3, r3, #1 + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r2] + ldr r1, _08002D84 @ =0x0400000A + adds r3, #5 + adds r0, r3, #0 + strh r0, [r1] + ldrh r0, [r2] + adds r3, #0xfb + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r2] + ldr r6, _08002D88 @ =gMain + movs r0, #0xba + lsls r0, r0, #2 + adds r1, r6, r0 + movs r5, #0 + ldr r0, _08002D8C @ =0x0000FFE8 + strh r0, [r1] + adds r3, #0xea + adds r1, r6, r3 + subs r0, #0x48 + strh r0, [r1] + ldrh r0, [r2] + strh r0, [r6, #0x16] + ldr r4, _08002D90 @ =0x040000D4 + ldr r0, _08002D94 @ =0x08081D20 + str r0, [r4] + movs r0, #0xa0 + lsls r0, r0, #0x13 + str r0, [r4, #4] + ldr r0, _08002D98 @ =0x80000020 + str r0, [r4, #8] + ldr r0, [r4, #8] + ldr r0, _08002D9C @ =0x080897E0 + str r0, [r4] + ldr r0, _08002DA0 @ =0x05000040 + str r0, [r4, #4] + ldr r0, _08002DA4 @ =0x80000010 + str r0, [r4, #8] + ldr r0, [r4, #8] + ldr r0, _08002DA8 @ =0x08080500 + str r0, [r4] + ldr r0, _08002DAC @ =0x03000000 + mov r8, r0 + str r0, [r4, #4] + ldr r1, _08002DB0 @ =0x80001800 + mov sb, r1 + str r1, [r4, #8] + ldr r0, [r4, #8] + ldr r0, _08002DB4 @ =0x0807DD00 + str r0, [r4] + movs r0, #0xc0 + lsls r0, r0, #0x13 + str r0, [r4, #4] + ldr r1, _08002DB8 @ =0x80000400 + str r1, [r4, #8] + ldr r0, [r4, #8] + ldr r0, _08002DBC @ =0x0807FD00 + str r0, [r4] + ldr r0, _08002DC0 @ =0x06000800 + str r0, [r4, #4] + str r1, [r4, #8] + ldr r0, [r4, #8] + ldr r0, _08002DC4 @ =0x08089960 + str r0, [r4] + ldr r0, _08002DC8 @ =0x05000200 + str r0, [r4, #4] + ldr r0, _08002DCC @ =0x80000060 + str r0, [r4, #8] + ldr r0, [r4, #8] + ldr r0, _08002DD0 @ =0x08089B60 + str r0, [r4] + ldr r0, _08002DD4 @ =0x06010000 + str r0, [r4, #4] + ldr r0, _08002DD8 @ =0x80003610 + str r0, [r4, #8] + ldr r0, [r4, #8] + bl sub_2DF0 + ldr r0, _08002DDC @ =0x0202C604 + strb r5, [r0] + ldr r0, _08002DE0 @ =0x0202A580 + strb r5, [r0] + ldr r0, _08002DE4 @ =0x0202C5A4 + strb r5, [r0] + ldr r0, _08002DE8 @ =0x0202AD90 + strb r5, [r0] + bl sub_377C + mov r3, r8 + str r3, [r4] + ldr r0, _08002DEC @ =0x06004000 + str r0, [r4, #4] + mov r0, sb + str r0, [r4, #8] + ldr r0, [r4, #8] + bl sub_394C + movs r0, #5 + bl m4aSongNumStart + bl sub_CBC + bl sub_24C + movs r0, #1 + strb r0, [r6, #3] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08002D80: .4byte 0x04000008 +_08002D84: .4byte 0x0400000A +_08002D88: .4byte gMain +_08002D8C: .4byte 0x0000FFE8 +_08002D90: .4byte 0x040000D4 +_08002D94: .4byte 0x08081D20 +_08002D98: .4byte 0x80000020 +_08002D9C: .4byte 0x080897E0 +_08002DA0: .4byte 0x05000040 +_08002DA4: .4byte 0x80000010 +_08002DA8: .4byte 0x08080500 +_08002DAC: .4byte 0x03000000 +_08002DB0: .4byte 0x80001800 +_08002DB4: .4byte 0x0807DD00 +_08002DB8: .4byte 0x80000400 +_08002DBC: .4byte 0x0807FD00 +_08002DC0: .4byte 0x06000800 +_08002DC4: .4byte 0x08089960 +_08002DC8: .4byte 0x05000200 +_08002DCC: .4byte 0x80000060 +_08002DD0: .4byte 0x08089B60 +_08002DD4: .4byte 0x06010000 +_08002DD8: .4byte 0x80003610 +_08002DDC: .4byte 0x0202C604 +_08002DE0: .4byte 0x0202A580 +_08002DE4: .4byte 0x0202C5A4 +_08002DE8: .4byte 0x0202AD90 +_08002DEC: .4byte 0x06004000 + + thumb_func_start sub_2DF0 +sub_2DF0: @ 0x08002DF0 + ldr r0, _08002E1C @ =0x0202A58C + movs r1, #0 + strb r1, [r0] + ldr r0, _08002E20 @ =0x0202C584 + strb r1, [r0] + ldr r2, _08002E24 @ =0x0202BEC0 + movs r0, #4 + strb r0, [r2] + ldr r0, _08002E28 @ =0x0201B174 + strb r1, [r0] + ldr r0, _08002E2C @ =0x0202C5A0 + movs r1, #0 + strh r1, [r0] + ldr r0, _08002E30 @ =0x0201A44C + strh r1, [r0] + ldr r0, _08002E34 @ =0x0202BEF8 + strb r1, [r0] + ldr r0, _08002E38 @ =0x0200282C + strb r1, [r0] + ldr r0, _08002E3C @ =0x0200282D + strb r1, [r0] + bx lr + .align 2, 0 +_08002E1C: .4byte 0x0202A58C +_08002E20: .4byte 0x0202C584 +_08002E24: .4byte 0x0202BEC0 +_08002E28: .4byte 0x0201B174 +_08002E2C: .4byte 0x0202C5A0 +_08002E30: .4byte 0x0201A44C +_08002E34: .4byte 0x0202BEF8 +_08002E38: .4byte 0x0200282C +_08002E3C: .4byte 0x0200282D + + thumb_func_start sub_2E40 +sub_2E40: @ 0x08002E40 + push {r4, r5, r6, r7, lr} + ldr r4, _08002E84 @ =0x0202C604 + ldr r2, _08002E88 @ =0x086A551A + ldr r3, _08002E8C @ =0x0202AD90 + movs r0, #0 + ldrsb r0, [r3, r0] + adds r0, r0, r2 + movs r1, #0 + ldrsb r1, [r4, r1] + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r1, r0 + bgt _08002E94 + ldr r1, _08002E90 @ =0x0202A580 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #2 + ble _08002EF0 + movs r0, #0 + strb r0, [r1] + movs r0, #0 + ldrsb r0, [r3, r0] + movs r1, #0 + ldrsb r1, [r4, r1] + bl sub_3828 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _08002EF0 + .align 2, 0 +_08002E84: .4byte 0x0202C604 +_08002E88: .4byte 0x086A551A +_08002E8C: .4byte 0x0202AD90 +_08002E90: .4byte 0x0202A580 +_08002E94: + ldr r1, _08002ECC @ =0x0202A580 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #6 + ble _08002EF0 + movs r0, #0 + strb r0, [r1] + ldr r0, _08002ED0 @ =0x0202C5A4 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bne _08002ED4 + movs r0, #0 + ldrsb r0, [r3, r0] + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #0xea + lsls r1, r1, #6 + bl sub_38A0 + b _08002EE6 + .align 2, 0 +_08002ECC: .4byte 0x0202A580 +_08002ED0: .4byte 0x0202C5A4 +_08002ED4: + movs r0, #0 + ldrsb r0, [r3, r0] + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #0 + bl sub_38A0 +_08002EE6: + ldr r2, _08002F2C @ =0x0202C5A4 + ldrb r1, [r2] + movs r0, #1 + subs r0, r0, r1 + strb r0, [r2] +_08002EF0: + ldr r7, _08002F30 @ =gMain + ldrh r1, [r7, #0x18] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08002F78 + ldr r5, _08002F34 @ =0x0202C604 + ldr r6, _08002F38 @ =0x086A551A + ldr r4, _08002F3C @ =0x0202AD90 + movs r2, #0 + ldrsb r2, [r4, r2] + adds r0, r2, r6 + movs r1, #0 + ldrsb r1, [r5, r1] + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r1, r0 + bgt _08002F40 + adds r0, r2, #0 + bl sub_37B4 + movs r0, #0 + ldrsb r0, [r4, r0] + adds r0, r0, r6 + ldrb r0, [r0] + adds r0, #1 + strb r0, [r5] + b _08002F90 + .align 2, 0 +_08002F2C: .4byte 0x0202C5A4 +_08002F30: .4byte gMain +_08002F34: .4byte 0x0202C604 +_08002F38: .4byte 0x086A551A +_08002F3C: .4byte 0x0202AD90 +_08002F40: + ldr r0, _08002F54 @ =0x086A5528 + adds r0, r2, r0 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bne _08002F58 + movs r0, #2 + b _08002F8E + .align 2, 0 +_08002F54: .4byte 0x086A5528 +_08002F58: + bl sub_377C + movs r1, #0 + strb r1, [r5] + ldr r0, _08002F70 @ =0x0202A580 + strb r1, [r0] + ldr r0, _08002F74 @ =0x0202C5A4 + strb r1, [r0] + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _08002F90 + .align 2, 0 +_08002F70: .4byte 0x0202A580 +_08002F74: .4byte 0x0202C5A4 +_08002F78: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08002F90 + movs r0, #0x66 + bl m4aSongNumStart + ldr r0, _08002FAC @ =0x0202BEF8 + movs r1, #1 + strb r1, [r0] + movs r0, #8 +_08002F8E: + strb r0, [r7, #3] +_08002F90: + bl sub_394C + ldr r1, _08002FB0 @ =0x040000D4 + ldr r0, _08002FB4 @ =0x03000000 + str r0, [r1] + ldr r0, _08002FB8 @ =0x06004000 + str r0, [r1, #4] + ldr r0, _08002FBC @ =0x80001800 + str r0, [r1, #8] + ldr r0, [r1, #8] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08002FAC: .4byte 0x0202BEF8 +_08002FB0: .4byte 0x040000D4 +_08002FB4: .4byte 0x03000000 +_08002FB8: .4byte 0x06004000 +_08002FBC: .4byte 0x80001800 + + thumb_func_start sub_2FC0 +sub_2FC0: @ 0x08002FC0 + push {r4, r5, lr} + ldr r4, _0800302C @ =0x0202C5A0 + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + ldr r2, _08003030 @ =0x086A550C + ldr r3, _08003034 @ =0x0201B174 + movs r1, #0 + ldrsb r1, [r3, r1] + lsls r1, r1, #1 + adds r1, r1, r2 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0 + ldrsh r1, [r1, r2] + cmp r0, r1 + ble _08003012 + movs r5, #0 + strh r5, [r4] + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #6 + bne _08003012 + bl sub_19B4 + bl sub_3C1C + ldr r0, _08003038 @ =0x0201B124 + strb r5, [r0] + ldr r1, _0800303C @ =0x0202C584 + movs r0, #1 + strb r0, [r1] + movs r0, #0x76 + bl m4aSongNumStart + ldr r1, _08003040 @ =gMain + movs r0, #3 + strb r0, [r1, #3] +_08003012: + ldr r1, _08003044 @ =0x0202A58C + movs r0, #0 + strb r0, [r1] + ldr r1, _08003048 @ =0x0202BEC0 + ldr r0, _08003034 @ =0x0201B174 + ldrb r0, [r0] + adds r0, #4 + strb r0, [r1] + bl sub_3AB4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0800302C: .4byte 0x0202C5A0 +_08003030: .4byte 0x086A550C +_08003034: .4byte 0x0201B174 +_08003038: .4byte 0x0201B124 +_0800303C: .4byte 0x0202C584 +_08003040: .4byte gMain +_08003044: .4byte 0x0202A58C +_08003048: .4byte 0x0202BEC0 + + thumb_func_start sub_304C +sub_304C: @ 0x0800304C + push {r4, r5, lr} + bl sub_3AB4 + ldr r5, _08003114 @ =gMain + ldrh r1, [r5, #0x18] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08003076 + bl sub_2568 + bl sub_1AA4 + bl sub_2B4 + bl m4aMPlayAllStop + bl sub_D10 + movs r0, #0 + strb r0, [r5, #3] +_08003076: + ldr r4, _08003118 @ =0x0202ADD0 + ldr r0, _0800311C @ =0x0202BEC8 + ldr r1, _08003120 @ =0x0202C5F0 + ldr r2, _08003124 @ =0x0201A4D0 + bl sub_1B04 + str r0, [r4] + ldr r1, _08003128 @ =0x0202BDF0 + movs r3, #3 + ands r3, r0 + str r3, [r1] + ldr r2, _0800312C @ =0x0201C1AC + movs r1, #0x1c + ands r1, r0 + lsrs r1, r1, #2 + strb r1, [r2] + ldr r2, _08003130 @ =0x0202ADDC + movs r1, #0xe0 + lsls r1, r1, #4 + ands r1, r0 + lsrs r1, r1, #9 + strb r1, [r2] + movs r1, #0x40 + ands r1, r0 + cmp r1, #0 + bne _080030AC + b _080031DC +_080030AC: + cmp r3, #1 + bls _080030B2 + b _080031DC +_080030B2: + bl sub_3C78 + ldr r0, [r4] + movs r1, #0x80 + lsls r1, r1, #1 + ands r0, r1 + cmp r0, #0 + bne _0800316C + bl sub_3CD8 + lsls r0, r0, #0x10 + asrs r4, r0, #0x10 + movs r0, #1 + rsbs r0, r0, #0 + cmp r4, r0 + bne _0800316C + bl sub_38F0 + ldr r1, _08003134 @ =0x0201C184 + strh r0, [r1] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, r4 + beq _0800313C + cmp r0, #4 + bgt _0800313C + adds r3, r5, #0 + adds r4, r1, #0 + ldr r5, _08003138 @ =0x0201A44C + movs r2, #0 + movs r1, #4 + adds r0, r3, #0 + adds r0, #0xb +_080030F4: + strb r2, [r0] + subs r0, #1 + subs r1, #1 + cmp r1, #0 + bge _080030F4 + movs r0, #0 + ldrsh r1, [r4, r0] + adds r0, r3, #7 + adds r1, r1, r0 + movs r2, #0 + movs r0, #1 + strb r0, [r1] + strh r2, [r5] + movs r0, #5 + strb r0, [r3, #3] + b _0800316C + .align 2, 0 +_08003114: .4byte gMain +_08003118: .4byte 0x0202ADD0 +_0800311C: .4byte 0x0202BEC8 +_08003120: .4byte 0x0202C5F0 +_08003124: .4byte 0x0201A4D0 +_08003128: .4byte 0x0202BDF0 +_0800312C: .4byte 0x0201C1AC +_08003130: .4byte 0x0202ADDC +_08003134: .4byte 0x0201C184 +_08003138: .4byte 0x0201A44C +_0800313C: + ldr r0, _080031E4 @ =0x0201A44C + movs r2, #0 + strh r2, [r0] + ldr r1, _080031E8 @ =0x0202A58C + movs r0, #2 + strb r0, [r1] + ldr r1, _080031EC @ =0x0202BEC0 + movs r0, #0xa + strb r0, [r1] + ldr r0, _080031F0 @ =0x0202C604 + strb r2, [r0] + ldr r0, _080031F4 @ =0x0202C5A4 + strb r2, [r0] + ldr r1, _080031F8 @ =0x0202AD90 + movs r0, #0xd + strb r0, [r1] + bl sub_377C + ldr r1, _080031FC @ =gMain + movs r0, #4 + strb r0, [r1, #3] + movs r0, #0x8a + bl m4aSongNumStart +_0800316C: + ldr r4, _080031E8 @ =0x0202A58C + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #1 + bne _080031DC + ldr r3, _080031E4 @ =0x0201A44C + ldrh r0, [r3] + adds r0, #1 + strh r0, [r3] + ldrh r0, [r3] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _08003192 + ldr r2, _080031EC @ =0x0202BEC0 + ldrb r1, [r2] + movs r0, #0x15 + subs r0, r0, r1 + strb r0, [r2] +_08003192: + ldr r0, _08003200 @ =0x0202ADD0 + ldr r0, [r0] + movs r1, #0xfe + lsls r1, r1, #0xf + ands r0, r1 + cmp r0, #0 + beq _080031DC + ldr r1, _08003204 @ =0x0201A444 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xb4 + ble _080031DC + movs r2, #0 + strh r2, [r3] + movs r0, #2 + strb r0, [r4] + ldr r1, _080031EC @ =0x0202BEC0 + movs r0, #0xa + strb r0, [r1] + ldr r0, _080031F0 @ =0x0202C604 + strb r2, [r0] + ldr r0, _080031F4 @ =0x0202C5A4 + strb r2, [r0] + ldr r1, _080031F8 @ =0x0202AD90 + movs r0, #0xd + strb r0, [r1] + bl sub_377C + ldr r1, _080031FC @ =gMain + movs r0, #4 + strb r0, [r1, #3] + movs r0, #0x8a + bl m4aSongNumStart +_080031DC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080031E4: .4byte 0x0201A44C +_080031E8: .4byte 0x0202A58C +_080031EC: .4byte 0x0202BEC0 +_080031F0: .4byte 0x0202C604 +_080031F4: .4byte 0x0202C5A4 +_080031F8: .4byte 0x0202AD90 +_080031FC: .4byte gMain +_08003200: .4byte 0x0202ADD0 +_08003204: .4byte 0x0201A444 + + thumb_func_start sub_3208 +sub_3208: @ 0x08003208 + push {r4, r5, r6, r7, lr} + ldr r1, _0800326C @ =0x0201A44C + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #8 + ble _08003228 + movs r0, #0 + strh r0, [r1] + ldr r2, _08003270 @ =0x0202BEC0 + ldrb r1, [r2] + movs r0, #0x16 + subs r0, r0, r1 + strb r0, [r2] +_08003228: + ldr r4, _08003274 @ =0x0202C604 + ldr r2, _08003278 @ =0x086A551A + ldr r3, _0800327C @ =0x0202AD90 + movs r0, #0 + ldrsb r0, [r3, r0] + adds r0, r0, r2 + movs r1, #0 + ldrsb r1, [r4, r1] + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r1, r0 + bgt _08003284 + ldr r1, _08003280 @ =0x0202A580 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #2 + ble _080032E0 + movs r0, #0 + strb r0, [r1] + movs r0, #0 + ldrsb r0, [r3, r0] + movs r1, #0 + ldrsb r1, [r4, r1] + bl sub_3828 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _080032E0 + .align 2, 0 +_0800326C: .4byte 0x0201A44C +_08003270: .4byte 0x0202BEC0 +_08003274: .4byte 0x0202C604 +_08003278: .4byte 0x086A551A +_0800327C: .4byte 0x0202AD90 +_08003280: .4byte 0x0202A580 +_08003284: + ldr r1, _080032BC @ =0x0202A580 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #6 + ble _080032E0 + movs r0, #0 + strb r0, [r1] + ldr r0, _080032C0 @ =0x0202C5A4 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bne _080032C4 + movs r0, #0 + ldrsb r0, [r3, r0] + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #0xea + lsls r1, r1, #6 + bl sub_38A0 + b _080032D6 + .align 2, 0 +_080032BC: .4byte 0x0202A580 +_080032C0: .4byte 0x0202C5A4 +_080032C4: + movs r0, #0 + ldrsb r0, [r3, r0] + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #0 + bl sub_38A0 +_080032D6: + ldr r2, _0800331C @ =0x0202C5A4 + ldrb r1, [r2] + movs r0, #1 + subs r0, r0, r1 + strb r0, [r2] +_080032E0: + ldr r7, _08003320 @ =gMain + ldrh r1, [r7, #0x18] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0800336E + ldr r6, _08003324 @ =0x0202C604 + ldr r4, _08003328 @ =0x086A551A + ldr r5, _0800332C @ =0x0202AD90 + movs r2, #0 + ldrsb r2, [r5, r2] + adds r0, r2, r4 + movs r1, #0 + ldrsb r1, [r6, r1] + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r1, r0 + bgt _08003330 + adds r0, r2, #0 + bl sub_37B4 + movs r0, #0 + ldrsb r0, [r5, r0] + adds r0, r0, r4 + ldrb r0, [r0] + adds r0, #1 + strb r0, [r6] + b _0800336E + .align 2, 0 +_0800331C: .4byte 0x0202C5A4 +_08003320: .4byte gMain +_08003324: .4byte 0x0202C604 +_08003328: .4byte 0x086A551A +_0800332C: .4byte 0x0202AD90 +_08003330: + ldr r0, _08003354 @ =0x086A5528 + adds r0, r2, r0 + movs r4, #0 + ldrsb r4, [r0, r4] + cmp r4, #0 + bne _08003358 + bl sub_2568 + bl sub_1AA4 + bl sub_2B4 + bl m4aMPlayAllStop + bl sub_D10 + strb r4, [r7, #3] + b _0800336E + .align 2, 0 +_08003354: .4byte 0x086A5528 +_08003358: + bl sub_377C + movs r1, #0 + strb r1, [r6] + ldr r0, _08003388 @ =0x0202A580 + strb r1, [r0] + ldr r0, _0800338C @ =0x0202C5A4 + strb r1, [r0] + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] +_0800336E: + bl sub_394C + ldr r1, _08003390 @ =0x040000D4 + ldr r0, _08003394 @ =0x03000000 + str r0, [r1] + ldr r0, _08003398 @ =0x06004000 + str r0, [r1, #4] + ldr r0, _0800339C @ =0x80001800 + str r0, [r1, #8] + ldr r0, [r1, #8] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08003388: .4byte 0x0202A580 +_0800338C: .4byte 0x0202C5A4 +_08003390: .4byte 0x040000D4 +_08003394: .4byte 0x03000000 +_08003398: .4byte 0x06004000 +_0800339C: .4byte 0x80001800 + + thumb_func_start sub_33A0 +sub_33A0: @ 0x080033A0 + push {lr} + bl sub_3AB4 + ldr r2, _080033BC @ =0x0201A44C + movs r0, #0 + ldrsh r1, [r2, r0] + cmp r1, #0x96 + beq _080033D4 + cmp r1, #0x96 + bgt _080033C0 + cmp r1, #4 + beq _080033CA + b _080033FE + .align 2, 0 +_080033BC: .4byte 0x0201A44C +_080033C0: + movs r0, #0x87 + lsls r0, r0, #1 + cmp r1, r0 + beq _080033E8 + b _080033FE +_080033CA: + bl sub_2568 + bl sub_1AA4 + b _080033FE +_080033D4: + ldr r1, _080033E4 @ =0x0202A58C + movs r0, #3 + strb r0, [r1] + movs r0, #0x65 + bl m4aSongNumStart + b _080033FE + .align 2, 0 +_080033E4: .4byte 0x0202A58C +_080033E8: + movs r0, #0 + strh r0, [r2] + bl sub_2B4 + bl m4aMPlayAllStop + bl sub_D10 + ldr r1, _0800342C @ =gMain + movs r0, #6 + strb r0, [r1, #3] +_080033FE: + ldr r0, _08003430 @ =0x0202A58C + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldr r3, _08003434 @ =0x0201A44C + cmp r0, #1 + bne _08003420 + ldrh r0, [r3] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _08003420 + ldr r2, _08003438 @ =0x0202BEC0 + ldrb r1, [r2] + movs r0, #0x15 + subs r0, r0, r1 + strb r0, [r2] +_08003420: + ldrh r0, [r3] + adds r0, #1 + strh r0, [r3] + pop {r0} + bx r0 + .align 2, 0 +_0800342C: .4byte gMain +_08003430: .4byte 0x0202A58C +_08003434: .4byte 0x0201A44C +_08003438: .4byte 0x0202BEC0 + + thumb_func_start sub_343C +sub_343C: @ 0x0800343C + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + bl sub_438 + movs r2, #0x80 + lsls r2, r2, #0x13 + movs r1, #0x86 + lsls r1, r1, #5 + adds r0, r1, #0 + strh r0, [r2] + ldr r1, _08003550 @ =0x04000008 + movs r0, #4 + strh r0, [r1] + ldrh r0, [r2] + movs r3, #0x80 + lsls r3, r3, #1 + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r2] + ldr r1, _08003554 @ =0x0400000A + adds r3, #5 + adds r0, r3, #0 + strh r0, [r1] + ldrh r0, [r2] + adds r3, #0xfb + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r2] + ldr r6, _08003558 @ =gMain + movs r0, #0xba + lsls r0, r0, #2 + adds r1, r6, r0 + movs r5, #0 + ldr r0, _0800355C @ =0x0000FFE8 + strh r0, [r1] + adds r3, #0xea + adds r1, r6, r3 + subs r0, #0x48 + strh r0, [r1] + ldrh r0, [r2] + strh r0, [r6, #0x16] + ldr r4, _08003560 @ =0x040000D4 + ldr r0, _08003564 @ =0x08081D20 + str r0, [r4] + movs r0, #0xa0 + lsls r0, r0, #0x13 + str r0, [r4, #4] + ldr r0, _08003568 @ =0x80000020 + str r0, [r4, #8] + ldr r0, [r4, #8] + ldr r0, _0800356C @ =0x080897E0 + str r0, [r4] + ldr r0, _08003570 @ =0x05000040 + str r0, [r4, #4] + ldr r0, _08003574 @ =0x80000010 + str r0, [r4, #8] + ldr r0, [r4, #8] + ldr r0, _08003578 @ =0x08080500 + str r0, [r4] + ldr r0, _0800357C @ =0x03000000 + mov r8, r0 + str r0, [r4, #4] + ldr r1, _08003580 @ =0x80001800 + mov sb, r1 + str r1, [r4, #8] + ldr r0, [r4, #8] + ldr r0, _08003584 @ =0x0807DD00 + str r0, [r4] + movs r0, #0xc0 + lsls r0, r0, #0x13 + str r0, [r4, #4] + ldr r1, _08003588 @ =0x80000400 + str r1, [r4, #8] + ldr r0, [r4, #8] + ldr r0, _0800358C @ =0x0807FD00 + str r0, [r4] + ldr r0, _08003590 @ =0x06000800 + str r0, [r4, #4] + str r1, [r4, #8] + ldr r0, [r4, #8] + ldr r0, _08003594 @ =0x08089960 + str r0, [r4] + ldr r0, _08003598 @ =0x05000200 + str r0, [r4, #4] + ldr r0, _0800359C @ =0x80000060 + str r0, [r4, #8] + ldr r0, [r4, #8] + ldr r0, _080035A0 @ =0x08089B60 + str r0, [r4] + ldr r0, _080035A4 @ =0x06010000 + str r0, [r4, #4] + ldr r0, _080035A8 @ =0x80003610 + str r0, [r4, #8] + ldr r0, [r4, #8] + bl sub_2DF0 + ldr r0, _080035AC @ =0x0202C604 + strb r5, [r0] + ldr r0, _080035B0 @ =0x0202A580 + strb r5, [r0] + ldr r0, _080035B4 @ =0x0202C5A4 + strb r5, [r0] + ldr r2, _080035B8 @ =0x0202AD90 + ldr r1, _080035BC @ =0x086A5536 + ldr r0, _080035C0 @ =0x0201C184 + movs r3, #0 + ldrsh r0, [r0, r3] + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r2] + bl sub_377C + mov r0, r8 + str r0, [r4] + ldr r0, _080035C4 @ =0x06004000 + str r0, [r4, #4] + mov r1, sb + str r1, [r4, #8] + ldr r0, [r4, #8] + bl sub_394C + movs r0, #5 + bl m4aSongNumStart + bl sub_CBC + bl sub_24C + movs r0, #7 + strb r0, [r6, #3] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08003550: .4byte 0x04000008 +_08003554: .4byte 0x0400000A +_08003558: .4byte gMain +_0800355C: .4byte 0x0000FFE8 +_08003560: .4byte 0x040000D4 +_08003564: .4byte 0x08081D20 +_08003568: .4byte 0x80000020 +_0800356C: .4byte 0x080897E0 +_08003570: .4byte 0x05000040 +_08003574: .4byte 0x80000010 +_08003578: .4byte 0x08080500 +_0800357C: .4byte 0x03000000 +_08003580: .4byte 0x80001800 +_08003584: .4byte 0x0807DD00 +_08003588: .4byte 0x80000400 +_0800358C: .4byte 0x0807FD00 +_08003590: .4byte 0x06000800 +_08003594: .4byte 0x08089960 +_08003598: .4byte 0x05000200 +_0800359C: .4byte 0x80000060 +_080035A0: .4byte 0x08089B60 +_080035A4: .4byte 0x06010000 +_080035A8: .4byte 0x80003610 +_080035AC: .4byte 0x0202C604 +_080035B0: .4byte 0x0202A580 +_080035B4: .4byte 0x0202C5A4 +_080035B8: .4byte 0x0202AD90 +_080035BC: .4byte 0x086A5536 +_080035C0: .4byte 0x0201C184 +_080035C4: .4byte 0x06004000 + + thumb_func_start sub_35C8 +sub_35C8: @ 0x080035C8 + push {r4, r5, r6, lr} + ldr r4, _0800360C @ =0x0202C604 + ldr r2, _08003610 @ =0x086A551A + ldr r3, _08003614 @ =0x0202AD90 + movs r0, #0 + ldrsb r0, [r3, r0] + adds r0, r0, r2 + movs r1, #0 + ldrsb r1, [r4, r1] + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r1, r0 + bgt _0800361C + ldr r1, _08003618 @ =0x0202A580 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #2 + ble _08003678 + movs r0, #0 + strb r0, [r1] + movs r0, #0 + ldrsb r0, [r3, r0] + movs r1, #0 + ldrsb r1, [r4, r1] + bl sub_3828 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _08003678 + .align 2, 0 +_0800360C: .4byte 0x0202C604 +_08003610: .4byte 0x086A551A +_08003614: .4byte 0x0202AD90 +_08003618: .4byte 0x0202A580 +_0800361C: + ldr r1, _08003654 @ =0x0202A580 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #6 + ble _08003678 + movs r0, #0 + strb r0, [r1] + ldr r0, _08003658 @ =0x0202C5A4 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bne _0800365C + movs r0, #0 + ldrsb r0, [r3, r0] + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #0xea + lsls r1, r1, #6 + bl sub_38A0 + b _0800366E + .align 2, 0 +_08003654: .4byte 0x0202A580 +_08003658: .4byte 0x0202C5A4 +_0800365C: + movs r0, #0 + ldrsb r0, [r3, r0] + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #0 + bl sub_38A0 +_0800366E: + ldr r2, _080036B4 @ =0x0202C5A4 + ldrb r1, [r2] + movs r0, #1 + subs r0, r0, r1 + strb r0, [r2] +_08003678: + ldr r2, _080036B8 @ =gMain + ldrh r1, [r2, #0x18] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0800371A + ldr r5, _080036BC @ =0x0202C604 + ldr r6, _080036C0 @ =0x086A551A + ldr r4, _080036C4 @ =0x0202AD90 + movs r3, #0 + ldrsb r3, [r4, r3] + adds r0, r3, r6 + movs r1, #0 + ldrsb r1, [r5, r1] + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r1, r0 + bgt _080036C8 + adds r0, r3, #0 + bl sub_37B4 + movs r0, #0 + ldrsb r0, [r4, r0] + adds r0, r0, r6 + ldrb r0, [r0] + adds r0, #1 + strb r0, [r5] + b _0800371A + .align 2, 0 +_080036B4: .4byte 0x0202C5A4 +_080036B8: .4byte gMain +_080036BC: .4byte 0x0202C604 +_080036C0: .4byte 0x086A551A +_080036C4: .4byte 0x0202AD90 +_080036C8: + ldr r0, _080036E8 @ =0x086A5528 + adds r0, r3, r0 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bne _08003704 + ldr r0, _080036EC @ =0x0201C184 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #4 + bne _080036F4 + ldr r1, _080036F0 @ =0x0202BEF8 + movs r0, #0xb + b _080036F8 + .align 2, 0 +_080036E8: .4byte 0x086A5528 +_080036EC: .4byte 0x0201C184 +_080036F0: .4byte 0x0202BEF8 +_080036F4: + ldr r1, _08003700 @ =0x0202BEF8 + movs r0, #1 +_080036F8: + strb r0, [r1] + movs r0, #8 + strb r0, [r2, #3] + b _0800371A + .align 2, 0 +_08003700: .4byte 0x0202BEF8 +_08003704: + bl sub_377C + movs r1, #0 + strb r1, [r5] + ldr r0, _08003734 @ =0x0202A580 + strb r1, [r0] + ldr r0, _08003738 @ =0x0202C5A4 + strb r1, [r0] + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] +_0800371A: + bl sub_394C + ldr r1, _0800373C @ =0x040000D4 + ldr r0, _08003740 @ =0x03000000 + str r0, [r1] + ldr r0, _08003744 @ =0x06004000 + str r0, [r1, #4] + ldr r0, _08003748 @ =0x80001800 + str r0, [r1, #8] + ldr r0, [r1, #8] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08003734: .4byte 0x0202A580 +_08003738: .4byte 0x0202C5A4 +_0800373C: .4byte 0x040000D4 +_08003740: .4byte 0x03000000 +_08003744: .4byte 0x06004000 +_08003748: .4byte 0x80001800 + + thumb_func_start sub_374C +sub_374C: @ 0x0800374C + push {lr} + bl sub_2B4 + bl m4aMPlayAllStop + bl sub_D10 + ldr r1, _08003774 @ =gAutoDisplayTitlescreenMenu + movs r0, #1 + strb r0, [r1] + ldr r0, _08003778 @ =0x0202BEF8 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl SetMainGameState + pop {r0} + bx r0 + .align 2, 0 +_08003774: .4byte gAutoDisplayTitlescreenMenu +_08003778: .4byte 0x0202BEF8 + + thumb_func_start sub_377C +sub_377C: @ 0x0800377C + push {r4, r5, r6, r7, lr} + movs r1, #0 + ldr r7, _080037AC @ =0x03001800 +_08003782: + movs r5, #0 + lsls r0, r1, #0xb + adds r6, r1, #1 + adds r4, r7, r0 +_0800378A: + ldr r0, _080037B0 @ =0x080ACC60 + adds r1, r4, #0 + movs r2, #1 + movs r3, #2 + bl sub_10708 + adds r4, #0x20 + adds r5, #1 + cmp r5, #0x17 + ble _0800378A + adds r1, r6, #0 + cmp r1, #2 + ble _08003782 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080037AC: .4byte 0x03001800 +_080037B0: .4byte 0x080ACC60 + + thumb_func_start sub_37B4 +sub_37B4: @ 0x080037B4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r2, #0 + lsls r0, r0, #0x18 + ldr r1, _08003818 @ =0x086A4CF8 + mov sb, r1 + asrs r0, r0, #0x18 + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #4 + mov r8, r1 +_080037CE: + movs r5, #0 + lsls r1, r2, #1 + lsls r6, r2, #0xb + adds r7, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #4 + mov r0, r8 + add r0, sb + adds r4, r1, r0 +_080037E0: + ldrh r1, [r4] + ldr r2, _0800381C @ =0x0000FFF0 + adds r0, r2, #0 + ands r0, r1 + ldr r1, _08003820 @ =0x080ACC60 + adds r0, r0, r1 + lsls r1, r5, #5 + ldr r2, _08003824 @ =0x03001800 + adds r1, r1, r2 + adds r1, r6, r1 + movs r2, #1 + movs r3, #2 + bl sub_10708 + adds r4, #2 + adds r5, #1 + cmp r5, #0x17 + ble _080037E0 + adds r2, r7, #0 + cmp r2, #2 + ble _080037CE + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08003818: .4byte 0x086A4CF8 +_0800381C: .4byte 0x0000FFF0 +_08003820: .4byte 0x080ACC60 +_08003824: .4byte 0x03001800 + + thumb_func_start sub_3828 +sub_3828: @ 0x08003828 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r1, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #0x18 + bl __divsi3 + adds r6, r0, #0 + lsls r6, r6, #0x18 + asrs r6, r6, #0x18 + adds r0, r4, #0 + movs r1, #0x18 + bl __modsi3 + adds r2, r0, #0 + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + ldr r3, _08003890 @ =0x086A4CF8 + lsls r1, r6, #1 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r2 + lsls r1, r1, #1 + lsls r5, r5, #0x18 + asrs r5, r5, #0x18 + lsls r0, r5, #3 + adds r0, r0, r5 + lsls r0, r0, #4 + adds r1, r1, r0 + adds r1, r1, r3 + ldrh r1, [r1] + ldr r0, _08003894 @ =0x0000FFF0 + ands r0, r1 + ldr r1, _08003898 @ =0x080ACC60 + adds r0, r0, r1 + lsls r6, r6, #0xb + lsls r2, r2, #5 + ldr r1, _0800389C @ =0x03001800 + adds r2, r2, r1 + adds r6, r6, r2 + adds r1, r6, #0 + movs r2, #1 + movs r3, #2 + bl sub_10708 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08003890: .4byte 0x086A4CF8 +_08003894: .4byte 0x0000FFF0 +_08003898: .4byte 0x080ACC60 +_0800389C: .4byte 0x03001800 + + thumb_func_start sub_38A0 +sub_38A0: @ 0x080038A0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + lsls r5, r5, #0x18 + asrs r5, r5, #0x18 + adds r0, r5, #0 + movs r1, #0x18 + bl __divsi3 + adds r4, r0, #0 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #0x18 + bl __modsi3 + lsls r0, r0, #0x18 + ldr r1, _080038E8 @ =0x080ACC60 + adds r6, r6, r1 + lsls r4, r4, #0xb + asrs r0, r0, #0x13 + ldr r1, _080038EC @ =0x03001800 + adds r0, r0, r1 + adds r4, r4, r0 + adds r0, r6, #0 + adds r1, r4, #0 + movs r2, #1 + movs r3, #2 + bl sub_10708 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080038E8: .4byte 0x080ACC60 +_080038EC: .4byte 0x03001800 + + thumb_func_start sub_38F0 +sub_38F0: @ 0x080038F0 + ldr r0, _08003900 @ =0x0202BEEC + movs r2, #0 + ldrsh r1, [r0, r2] + ldr r0, _08003904 @ =0x00001F52 + cmp r1, r0 + bne _08003908 + movs r0, #0 + b _0800394A + .align 2, 0 +_08003900: .4byte 0x0202BEEC +_08003904: .4byte 0x00001F52 +_08003908: + ldr r0, _08003914 @ =0x00003E1A + cmp r1, r0 + bne _08003918 + movs r0, #1 + b _0800394A + .align 2, 0 +_08003914: .4byte 0x00003E1A +_08003918: + ldr r0, _08003924 @ =0x000025AF + cmp r1, r0 + bne _08003928 + movs r0, #2 + b _0800394A + .align 2, 0 +_08003924: .4byte 0x000025AF +_08003928: + ldr r0, _08003934 @ =0x00004A09 + cmp r1, r0 + bne _08003938 + movs r0, #3 + b _0800394A + .align 2, 0 +_08003934: .4byte 0x00004A09 +_08003938: + ldr r0, _08003944 @ =0x00006B12 + cmp r1, r0 + beq _08003948 + movs r0, #1 + rsbs r0, r0, #0 + b _0800394A + .align 2, 0 +_08003944: .4byte 0x00006B12 +_08003948: + movs r0, #4 +_0800394A: + bx lr + + thumb_func_start sub_394C +sub_394C: @ 0x0800394C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r4, _080039A0 @ =0x0202A58C + movs r0, #0 + ldrsb r0, [r4, r0] + movs r1, #0xb8 + muls r0, r1, r0 + ldr r2, _080039A4 @ =0x0200B3B8 + adds r7, r0, r2 + ldr r0, _080039A8 @ =0x0202BEC0 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + muls r0, r1, r0 + adds r0, r0, r2 + mov r8, r0 + ldr r0, _080039AC @ =0x0202C584 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r7] + movs r0, #1 + mov r1, r8 + strh r0, [r1] + ldr r0, _080039B0 @ =0x086A54D8 + movs r1, #0xd + bl LoadSpriteSets + ldrh r0, [r7] + cmp r0, #1 + bne _08003A18 + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #0 + bne _080039B4 + movs r0, #0x78 + strh r0, [r7, #2] + movs r0, #0x64 + b _080039BA + .align 2, 0 +_080039A0: .4byte 0x0202A58C +_080039A4: .4byte 0x0200B3B8 +_080039A8: .4byte 0x0202BEC0 +_080039AC: .4byte 0x0202C584 +_080039B0: .4byte 0x086A54D8 +_080039B4: + movs r0, #0x78 + strh r0, [r7, #2] + movs r0, #0x50 +_080039BA: + strh r0, [r7, #4] + ldr r1, _08003A9C @ =0x086A54D8 + ldr r0, _08003AA0 @ =0x0202A58C + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r6, [r0] + movs r5, #0 + ldrh r2, [r6] + cmp r5, r2 + bge _08003A18 + ldr r0, _08003AA4 @ =gOamBuffer + mov ip, r0 + ldr r1, _08003AA8 @ =0xFFFFFE00 + mov sb, r1 + adds r4, r7, #0 + adds r4, #8 +_080039E0: + ldrh r3, [r4] + lsls r3, r3, #3 + add r3, ip + movs r2, #2 + ldrsh r1, [r4, r2] + movs r2, #2 + ldrsh r0, [r7, r2] + adds r1, r1, r0 + ldr r2, _08003AAC @ =0x000001FF + adds r0, r2, #0 + ands r1, r0 + ldrh r2, [r3, #2] + mov r0, sb + ands r0, r2 + orrs r0, r1 + strh r0, [r3, #2] + ldrh r1, [r4] + lsls r1, r1, #3 + add r1, ip + ldrb r0, [r7, #4] + ldrb r2, [r4, #4] + adds r0, r0, r2 + strb r0, [r1] + adds r4, #8 + adds r5, #1 + ldrh r0, [r6] + cmp r5, r0 + blt _080039E0 +_08003A18: + movs r0, #0x78 + mov r1, r8 + strh r0, [r1, #2] + movs r0, #0x18 + strh r0, [r1, #4] + ldr r1, _08003A9C @ =0x086A54D8 + ldr r0, _08003AB0 @ =0x0202BEC0 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r6, [r0] + movs r5, #0 + ldrh r2, [r6] + cmp r5, r2 + bge _08003A86 + ldr r0, _08003AA4 @ =gOamBuffer + mov ip, r0 + ldr r1, _08003AA8 @ =0xFFFFFE00 + mov sb, r1 + mov r4, r8 + adds r4, #8 +_08003A46: + ldrh r3, [r4] + lsls r3, r3, #3 + add r3, ip + movs r0, #2 + ldrsh r2, [r4, r0] + mov sl, r2 + mov r1, r8 + movs r2, #2 + ldrsh r0, [r1, r2] + mov r2, sl + adds r1, r2, r0 + ldr r2, _08003AAC @ =0x000001FF + adds r0, r2, #0 + ands r1, r0 + ldrh r2, [r3, #2] + mov r0, sb + ands r0, r2 + orrs r0, r1 + strh r0, [r3, #2] + ldrh r1, [r4] + lsls r1, r1, #3 + add r1, ip + mov r2, r8 + ldrb r0, [r2, #4] + ldrb r2, [r4, #4] + adds r0, r0, r2 + strb r0, [r1] + adds r4, #8 + adds r5, #1 + ldrh r0, [r6] + cmp r5, r0 + blt _08003A46 +_08003A86: + movs r0, #0 + strh r0, [r7] + mov r1, r8 + strh r0, [r1] + 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 +_08003A9C: .4byte 0x086A54D8 +_08003AA0: .4byte 0x0202A58C +_08003AA4: .4byte gOamBuffer +_08003AA8: .4byte 0xFFFFFE00 +_08003AAC: .4byte 0x000001FF +_08003AB0: .4byte 0x0202BEC0 + + thumb_func_start sub_3AB4 +sub_3AB4: @ 0x08003AB4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r4, _08003B08 @ =0x0202A58C + movs r0, #0 + ldrsb r0, [r4, r0] + movs r1, #0xb8 + muls r0, r1, r0 + ldr r2, _08003B0C @ =0x0200B3B8 + adds r7, r0, r2 + ldr r0, _08003B10 @ =0x0202BEC0 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + muls r0, r1, r0 + adds r0, r0, r2 + mov r8, r0 + ldr r0, _08003B14 @ =0x0202C584 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r7] + movs r0, #1 + mov r1, r8 + strh r0, [r1] + ldr r0, _08003B18 @ =0x086A54D8 + movs r1, #0xd + bl sub_2414 + ldrh r0, [r7] + cmp r0, #1 + bne _08003B80 + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #0 + bne _08003B1C + movs r0, #0x78 + strh r0, [r7, #2] + movs r0, #0x64 + b _08003B22 + .align 2, 0 +_08003B08: .4byte 0x0202A58C +_08003B0C: .4byte 0x0200B3B8 +_08003B10: .4byte 0x0202BEC0 +_08003B14: .4byte 0x0202C584 +_08003B18: .4byte 0x086A54D8 +_08003B1C: + movs r0, #0x78 + strh r0, [r7, #2] + movs r0, #0x50 +_08003B22: + strh r0, [r7, #4] + ldr r1, _08003C04 @ =0x086A54D8 + ldr r0, _08003C08 @ =0x0202A58C + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r6, [r0] + movs r5, #0 + ldrh r2, [r6] + cmp r5, r2 + bge _08003B80 + ldr r0, _08003C0C @ =gOamBuffer + mov ip, r0 + ldr r1, _08003C10 @ =0xFFFFFE00 + mov sb, r1 + adds r4, r7, #0 + adds r4, #8 +_08003B48: + ldrh r3, [r4] + lsls r3, r3, #3 + add r3, ip + movs r2, #2 + ldrsh r1, [r4, r2] + movs r2, #2 + ldrsh r0, [r7, r2] + adds r1, r1, r0 + ldr r2, _08003C14 @ =0x000001FF + adds r0, r2, #0 + ands r1, r0 + ldrh r2, [r3, #2] + mov r0, sb + ands r0, r2 + orrs r0, r1 + strh r0, [r3, #2] + ldrh r1, [r4] + lsls r1, r1, #3 + add r1, ip + ldrb r0, [r7, #4] + ldrb r2, [r4, #4] + adds r0, r0, r2 + strb r0, [r1] + adds r4, #8 + adds r5, #1 + ldrh r0, [r6] + cmp r5, r0 + blt _08003B48 +_08003B80: + movs r0, #0x78 + mov r1, r8 + strh r0, [r1, #2] + movs r0, #0x18 + strh r0, [r1, #4] + ldr r1, _08003C04 @ =0x086A54D8 + ldr r0, _08003C18 @ =0x0202BEC0 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r6, [r0] + movs r5, #0 + ldrh r2, [r6] + cmp r5, r2 + bge _08003BEE + ldr r0, _08003C0C @ =gOamBuffer + mov ip, r0 + ldr r1, _08003C10 @ =0xFFFFFE00 + mov sb, r1 + mov r4, r8 + adds r4, #8 +_08003BAE: + ldrh r3, [r4] + lsls r3, r3, #3 + add r3, ip + movs r0, #2 + ldrsh r2, [r4, r0] + mov sl, r2 + mov r1, r8 + movs r2, #2 + ldrsh r0, [r1, r2] + mov r2, sl + adds r1, r2, r0 + ldr r2, _08003C14 @ =0x000001FF + adds r0, r2, #0 + ands r1, r0 + ldrh r2, [r3, #2] + mov r0, sb + ands r0, r2 + orrs r0, r1 + strh r0, [r3, #2] + ldrh r1, [r4] + lsls r1, r1, #3 + add r1, ip + mov r2, r8 + ldrb r0, [r2, #4] + ldrb r2, [r4, #4] + adds r0, r0, r2 + strb r0, [r1] + adds r4, #8 + adds r5, #1 + ldrh r0, [r6] + cmp r5, r0 + blt _08003BAE +_08003BEE: + movs r0, #0 + strh r0, [r7] + mov r1, r8 + strh r0, [r1] + 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 +_08003C04: .4byte 0x086A54D8 +_08003C08: .4byte 0x0202A58C +_08003C0C: .4byte gOamBuffer +_08003C10: .4byte 0xFFFFFE00 +_08003C14: .4byte 0x000001FF +_08003C18: .4byte 0x0202BEC0 + + thumb_func_start sub_3C1C +sub_3C1C: @ 0x08003C1C + push {r4, lr} + ldr r0, _08003C64 @ =0x0202A564 + movs r1, #0 + strb r1, [r0] + ldr r0, _08003C68 @ =0x02019C20 + strb r1, [r0] + ldr r0, _08003C6C @ =0x0202ADE8 + strb r1, [r0] + ldr r1, _08003C70 @ =0x0202C5F0 + movs r2, #0 + adds r0, r1, #0 + adds r0, #0xe +_08003C34: + strh r2, [r0] + subs r0, #2 + cmp r0, r1 + bge _08003C34 + movs r1, #0 + ldr r4, _08003C74 @ =0x0201A4D0 + movs r3, #0 +_08003C42: + lsls r0, r1, #1 + adds r2, r1, #1 + movs r1, #7 + adds r0, r0, r4 + adds r0, #0x1c +_08003C4C: + strh r3, [r0] + subs r0, #4 + subs r1, #1 + cmp r1, #0 + bge _08003C4C + adds r1, r2, #0 + cmp r1, #1 + ble _08003C42 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08003C64: .4byte 0x0202A564 +_08003C68: .4byte 0x02019C20 +_08003C6C: .4byte 0x0202ADE8 +_08003C70: .4byte 0x0202C5F0 +_08003C74: .4byte 0x0201A4D0 + + thumb_func_start sub_3C78 +sub_3C78: @ 0x08003C78 + ldr r0, _08003C8C @ =0x02019C20 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _08003C98 + ldr r1, _08003C90 @ =0x0202C5F0 + ldr r0, _08003C94 @ =0x0000DFDF + strh r0, [r1] + b _08003CD0 + .align 2, 0 +_08003C8C: .4byte 0x02019C20 +_08003C90: .4byte 0x0202C5F0 +_08003C94: .4byte 0x0000DFDF +_08003C98: + ldr r3, _08003CB4 @ =0x0202ADE8 + movs r1, #0 + ldrsb r1, [r3, r1] + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _08003CC0 + ldr r0, _08003CB8 @ =0x0202C5F0 + movs r2, #0 + ldr r1, _08003CBC @ =0x0000CDFE + strh r1, [r0] + strb r2, [r3] + b _08003CD0 + .align 2, 0 +_08003CB4: .4byte 0x0202ADE8 +_08003CB8: .4byte 0x0202C5F0 +_08003CBC: .4byte 0x0000CDFE +_08003CC0: + ldr r1, _08003CD4 @ =0x0202C5F0 + movs r2, #0 + adds r0, r1, #0 + adds r0, #0xe +_08003CC8: + strh r2, [r0] + subs r0, #2 + cmp r0, r1 + bge _08003CC8 +_08003CD0: + movs r0, #0 + bx lr + .align 2, 0 +_08003CD4: .4byte 0x0202C5F0 + + thumb_func_start sub_3CD8 +sub_3CD8: @ 0x08003CD8 + push {r4, lr} + ldr r0, _08003D24 @ =gMain + ldrh r1, [r0, #0x18] + movs r0, #1 + ands r0, r1 + ldr r2, _08003D28 @ =0x0202A564 + cmp r0, #0 + beq _08003D02 + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, #0 + bne _08003D0A + movs r0, #1 + rsbs r0, r0, #0 + adds r1, r0, #0 + strb r1, [r2] + ldr r0, _08003D2C @ =0x0202ADE8 + strb r1, [r0] + ldr r1, _08003D30 @ =0x0202A58C + movs r0, #1 + strb r0, [r1] +_08003D02: + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, #0 + beq _08003D7A +_08003D0A: + ldr r3, _08003D34 @ =0x02019C20 + movs r0, #0 + ldrsb r0, [r3, r0] + cmp r0, #0 + bne _08003D66 + ldr r1, _08003D38 @ =0x0201A4D0 + ldrh r0, [r1] + ldr r2, _08003D3C @ =0x0000FEDC + cmp r0, r2 + bne _08003D44 + ldr r0, _08003D40 @ =0x0202BEEC + ldrh r1, [r1, #4] + b _08003D4E + .align 2, 0 +_08003D24: .4byte gMain +_08003D28: .4byte 0x0202A564 +_08003D2C: .4byte 0x0202ADE8 +_08003D30: .4byte 0x0202A58C +_08003D34: .4byte 0x02019C20 +_08003D38: .4byte 0x0201A4D0 +_08003D3C: .4byte 0x0000FEDC +_08003D40: .4byte 0x0202BEEC +_08003D44: + ldrh r0, [r1, #2] + cmp r0, r2 + bne _08003D7A + ldr r0, _08003D5C @ =0x0202BEEC + ldrh r1, [r1, #6] +_08003D4E: + strh r1, [r0] + movs r1, #1 + rsbs r1, r1, #0 + adds r0, r1, #0 + strb r0, [r3] + b _08003D7A + .align 2, 0 +_08003D5C: .4byte 0x0202BEEC +_08003D60: + movs r0, #1 + rsbs r0, r0, #0 + b _08003D9C +_08003D66: + movs r1, #0 + ldr r3, _08003DA4 @ =0x0000DFDF + ldr r2, _08003DA8 @ =0x0201A4D0 +_08003D6C: + ldrh r0, [r2] + cmp r0, r3 + beq _08003D60 + adds r2, #2 + adds r1, #1 + cmp r1, #1 + ble _08003D6C +_08003D7A: + movs r1, #0 + ldr r4, _08003DA8 @ =0x0201A4D0 + movs r3, #0 +_08003D80: + lsls r0, r1, #1 + adds r2, r1, #1 + movs r1, #7 + adds r0, r0, r4 + adds r0, #0x1c +_08003D8A: + strh r3, [r0] + subs r0, #4 + subs r1, #1 + cmp r1, #0 + bge _08003D8A + adds r1, r2, #0 + cmp r1, #1 + ble _08003D80 + movs r0, #0 +_08003D9C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08003DA4: .4byte 0x0000DFDF +_08003DA8: .4byte 0x0201A4D0 diff --git a/asm/high_scores.s b/asm/high_scores.s index 95fc366..baa9b12 100755 --- a/asm/high_scores.s +++ b/asm/high_scores.s @@ -20,8 +20,9 @@ HighScoresMain: @ 0x0800CE48 _0800CE60: .4byte 0x080793E8 _0800CE64: .4byte gMain - thumb_func_start sub_CE68_Main -sub_CE68_Main: @ 0x0800CE68 +@ This is triggered after the idle pinball game catches its first pokemon + thumb_func_start IdleHighScoresMain +IdleHighScoresMain: @ 0x0800CE68 push {lr} ldr r1, _0800CE80 @ =0x08079424 ldr r0, _0800CE84 @ =gMain diff --git a/asm/options.s b/asm/options.s index 09f8a5b..f5b3129 100755 --- a/asm/options.s +++ b/asm/options.s @@ -94,7 +94,7 @@ sub_51240: @ 0x08051240 str r3, [r5, #4] str r6, [r5, #8] ldr r0, [r5, #8] - ldr r0, _08051394 @ =0x02019C0C + ldr r0, _08051394 @ =gGameBoyPlayerEnabled ldr r0, [r0] cmp r0, #1 beq _080512F8 @@ -170,7 +170,7 @@ _08051384: .4byte 0x80000600 _08051388: .4byte 0x08528028 _0805138C: .4byte 0x03005C00 _08051390: .4byte 0x80000400 -_08051394: .4byte 0x02019C0C +_08051394: .4byte gGameBoyPlayerEnabled _08051398: .4byte 0x0852A048 _0805139C: .4byte 0x06000800 _080513A0: .4byte gGBAButtonIcons_Pals @@ -258,7 +258,7 @@ _08051432: cmp r1, #3 ble _08051424 bl sub_52528 - ldr r0, _08051478 @ =0x02019C0C + ldr r0, _08051478 @ =gGameBoyPlayerEnabled ldr r4, [r0] cmp r4, #1 bne _0805147C @@ -277,7 +277,7 @@ _08051468: .4byte 0x02002920 _0805146C: .4byte 0x0200B134 _08051470: .4byte 0x02031AF0 _08051474: .4byte 0x08527ED6 -_08051478: .4byte 0x02019C0C +_08051478: .4byte gGameBoyPlayerEnabled _0805147C: ldr r2, _080514B0 @ =0x02002920 adds r0, r2, #0 @@ -402,7 +402,7 @@ _0805156C: ands r0, r1 cmp r0, #0 beq _08051594 - ldr r0, _080515EC @ =0x02019C0C + ldr r0, _080515EC @ =gGameBoyPlayerEnabled ldr r0, [r0] cmp r0, #1 bne _08051594 @@ -422,7 +422,7 @@ _08051594: ands r0, r1 cmp r0, #0 beq _080515C2 - ldr r0, _080515EC @ =0x02019C0C + ldr r0, _080515EC @ =gGameBoyPlayerEnabled ldr r0, [r0] cmp r0, #1 bne _080515C2 @@ -461,7 +461,7 @@ _080515DC: mov pc, r0 .align 2, 0 _080515E8: .4byte gMain -_080515EC: .4byte 0x02019C0C +_080515EC: .4byte gGameBoyPlayerEnabled _080515F0: .4byte 0x02002920 _080515F4: .4byte _080515F8 _080515F8: @ jump table @@ -576,7 +576,7 @@ _080516D0: _080516F0: .4byte 0x02002920 _080516F4: .4byte 0x0200B134 _080516F8: - ldr r0, _08051730 @ =0x02019C0C + ldr r0, _08051730 @ =gGameBoyPlayerEnabled ldr r0, [r0] cmp r0, #1 beq _08051702 @@ -606,10 +606,10 @@ _08051720: strb r2, [r0] b _08051A96 .align 2, 0 -_08051730: .4byte 0x02019C0C +_08051730: .4byte gGameBoyPlayerEnabled _08051734: .4byte 0x02002920 _08051738: - ldr r0, _08051774 @ =0x02019C0C + ldr r0, _08051774 @ =gGameBoyPlayerEnabled ldr r4, [r0] cmp r4, #1 beq _08051742 @@ -639,7 +639,7 @@ _0805175E: strb r4, [r0] b _08051A96 .align 2, 0 -_08051774: .4byte 0x02019C0C +_08051774: .4byte gGameBoyPlayerEnabled _08051778: .4byte 0x02002920 _0805177C: movs r0, #2 diff --git a/asm/rom_11B9C.s b/asm/rom_11B9C.s index ab35f66..e0f9bd9 100755 --- a/asm/rom_11B9C.s +++ b/asm/rom_11B9C.s @@ -14547,8 +14547,8 @@ _0801901C: _08019020: .4byte 0x020314E0 _08019024: .4byte 0x00000532 - thumb_func_start sub_19028_Main -sub_19028_Main: @ 0x08019028 + thumb_func_start IdlePinballGameMain +IdlePinballGameMain: @ 0x08019028 push {lr} ldr r1, _08019040 @ =0x08137918 ldr r0, _08019044 @ =gMain diff --git a/asm/rom_25A4.s b/asm/rom_25A4.s deleted file mode 100755 index 3c41293..0000000 --- a/asm/rom_25A4.s +++ /dev/null @@ -1,810 +0,0 @@ - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_25A4_Main -sub_25A4_Main: @ 0x080025A4 - push {lr} - ldr r1, _080025BC @ =0x0805C750 - ldr r0, _080025C0 @ =gMain - ldrb r0, [r0, #3] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r0, [r0] - bl _call_via_r0 - pop {r0} - bx r0 - .align 2, 0 -_080025BC: .4byte 0x0805C750 -_080025C0: .4byte gMain - - thumb_func_start sub_25C4 -sub_25C4: @ 0x080025C4 - push {r4, lr} - bl sub_438 - movs r2, #0x80 - lsls r2, r2, #0x13 - movs r1, #0x84 - lsls r1, r1, #5 - adds r0, r1, #0 - strh r0, [r2] - ldr r1, _080026A8 @ =0x04000008 - movs r0, #5 - strh r0, [r1] - ldrh r0, [r2] - movs r3, #0x80 - lsls r3, r3, #1 - adds r1, r3, #0 - orrs r0, r1 - strh r0, [r2] - ldr r1, _080026AC @ =0x0400000A - adds r3, #6 - adds r0, r3, #0 - strh r0, [r1] - ldrh r0, [r2] - adds r3, #0xfa - adds r1, r3, #0 - orrs r0, r1 - strh r0, [r2] - ldr r1, _080026B0 @ =0x0400000C - adds r3, #0xb - adds r0, r3, #0 - strh r0, [r1] - ldrh r0, [r2] - movs r3, #0x80 - lsls r3, r3, #3 - adds r1, r3, #0 - orrs r0, r1 - strh r0, [r2] - ldr r4, _080026B4 @ =gMain - ldrh r0, [r2] - strh r0, [r4, #0x16] - ldr r0, _080026B8 @ =0x040000D4 - ldr r1, _080026BC @ =0x0807C2E0 - str r1, [r0] - movs r1, #0xa0 - lsls r1, r1, #0x13 - str r1, [r0, #4] - ldr r1, _080026C0 @ =0x80000100 - str r1, [r0, #8] - ldr r1, [r0, #8] - ldr r1, _080026C4 @ =gFieldSelectWindow_Gfx - str r1, [r0] - ldr r1, _080026C8 @ =0x06004000 - str r1, [r0, #4] - ldr r1, _080026CC @ =0x80002000 - str r1, [r0, #8] - ldr r1, [r0, #8] - ldr r1, _080026D0 @ =0x0807C4E0 - str r1, [r0] - ldr r1, _080026D4 @ =0x06008000 - str r1, [r0, #4] - ldr r1, _080026D8 @ =0x80000C00 - str r1, [r0, #8] - ldr r1, [r0, #8] - ldr r1, _080026DC @ =0x0807AAE0 - str r1, [r0] - movs r1, #0xc0 - lsls r1, r1, #0x13 - str r1, [r0, #4] - ldr r2, _080026E0 @ =0x80000400 - str r2, [r0, #8] - ldr r1, [r0, #8] - ldr r1, _080026E4 @ =0x0807B2E0 - str r1, [r0] - ldr r1, _080026E8 @ =0x06000800 - str r1, [r0, #4] - str r2, [r0, #8] - ldr r1, [r0, #8] - ldr r1, _080026EC @ =0x0807BAE0 - str r1, [r0] - ldr r1, _080026F0 @ =0x06001000 - str r1, [r0, #4] - str r2, [r0, #8] - ldr r1, [r0, #8] - ldr r1, _080026F4 @ =gFieldSelectSpritePals - str r1, [r0] - ldr r1, _080026F8 @ =0x05000200 - str r1, [r0, #4] - ldr r1, _080026FC @ =0x80000030 - str r1, [r0, #8] - ldr r1, [r0, #8] - ldr r1, _08002700 @ =gFieldSelectSpriteGfx - str r1, [r0] - ldr r1, _08002704 @ =0x06010000 - str r1, [r0, #4] - ldr r1, _08002708 @ =0x80002010 - str r1, [r0, #8] - ldr r0, [r0, #8] - bl sub_CBC - bl sub_2710 - ldr r0, _0800270C @ =sub_29C8 + 1 - bl sub_FD5C - movs r0, #3 - bl m4aSongNumStart - ldrb r0, [r4, #3] - adds r0, #1 - strb r0, [r4, #3] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080026A8: .4byte 0x04000008 -_080026AC: .4byte 0x0400000A -_080026B0: .4byte 0x0400000C -_080026B4: .4byte gMain -_080026B8: .4byte 0x040000D4 -_080026BC: .4byte 0x0807C2E0 -_080026C0: .4byte 0x80000100 -_080026C4: .4byte gFieldSelectWindow_Gfx -_080026C8: .4byte 0x06004000 -_080026CC: .4byte 0x80002000 -_080026D0: .4byte 0x0807C4E0 -_080026D4: .4byte 0x06008000 -_080026D8: .4byte 0x80000C00 -_080026DC: .4byte 0x0807AAE0 -_080026E0: .4byte 0x80000400 -_080026E4: .4byte 0x0807B2E0 -_080026E8: .4byte 0x06000800 -_080026EC: .4byte 0x0807BAE0 -_080026F0: .4byte 0x06001000 -_080026F4: .4byte gFieldSelectSpritePals -_080026F8: .4byte 0x05000200 -_080026FC: .4byte 0x80000030 -_08002700: .4byte gFieldSelectSpriteGfx -_08002704: .4byte 0x06010000 -_08002708: .4byte 0x80002010 -_0800270C: .4byte sub_29C8 + 1 - - thumb_func_start sub_2710 -sub_2710: @ 0x08002710 - ldr r0, _08002740 @ =0x0201A4F8 - movs r1, #0 - strb r1, [r0] - ldr r0, _08002744 @ =0x0202BED0 - strb r1, [r0] - ldr r0, _08002748 @ =0x0202A560 - movs r1, #0 - strh r1, [r0] - ldr r0, _0800274C @ =0x0202BE1C - strh r1, [r0] - ldr r0, _08002750 @ =0x0202BEE8 - strb r1, [r0] - ldr r0, _08002754 @ =0x0201A4F4 - strh r1, [r0] - ldr r0, _08002758 @ =0x0201A4B0 - strb r1, [r0] - ldr r0, _0800275C @ =0x0202BEE4 - strb r1, [r0] - ldr r1, _08002760 @ =0x0201A4C0 - ldr r0, _08002764 @ =0x0200B134 - adds r0, #0xce - ldrb r0, [r0] - strb r0, [r1] - bx lr - .align 2, 0 -_08002740: .4byte 0x0201A4F8 -_08002744: .4byte 0x0202BED0 -_08002748: .4byte 0x0202A560 -_0800274C: .4byte 0x0202BE1C -_08002750: .4byte 0x0202BEE8 -_08002754: .4byte 0x0201A4F4 -_08002758: .4byte 0x0201A4B0 -_0800275C: .4byte 0x0202BEE4 -_08002760: .4byte 0x0201A4C0 -_08002764: .4byte 0x0200B134 - - thumb_func_start sub_2768 -sub_2768: @ 0x08002768 - push {r4, r5, r6, lr} - bl sub_29C8 - ldr r6, _08002784 @ =0x0202BED0 - movs r4, #0 - ldrsb r4, [r6, r4] - cmp r4, #1 - bne _0800277A - b _08002884 -_0800277A: - cmp r4, #1 - bgt _08002788 - cmp r4, #0 - beq _08002790 - b _0800296E - .align 2, 0 -_08002784: .4byte 0x0202BED0 -_08002788: - cmp r4, #2 - bne _0800278E - b _0800291C -_0800278E: - b _0800296E -_08002790: - ldr r0, _080027B8 @ =gMain - ldrh r1, [r0, #0x18] - movs r0, #0x20 - ands r0, r1 - cmp r0, #0 - beq _080027C0 - ldr r4, _080027BC @ =0x0201A4F8 - movs r0, #0 - ldrsb r0, [r4, r0] - cmp r0, #0 - beq _080027E2 - cmp r0, #3 - beq _080027E2 - movs r0, #0x6d - bl m4aSongNumStart - ldrb r0, [r4] - subs r0, #1 - b _080027E0 - .align 2, 0 -_080027B8: .4byte gMain -_080027BC: .4byte 0x0201A4F8 -_080027C0: - movs r0, #0x10 - ands r0, r1 - cmp r0, #0 - beq _080027E2 - ldr r4, _08002804 @ =0x0201A4F8 - movs r0, #0 - ldrsb r0, [r4, r0] - cmp r0, #2 - beq _080027E2 - cmp r0, #5 - beq _080027E2 - movs r0, #0x6d - bl m4aSongNumStart - ldrb r0, [r4] - adds r0, #1 -_080027E0: - strb r0, [r4] -_080027E2: - ldr r0, _08002808 @ =gMain - ldrh r1, [r0, #0x18] - movs r0, #0x40 - ands r0, r1 - cmp r0, #0 - beq _0800280C - ldr r4, _08002804 @ =0x0201A4F8 - movs r0, #0 - ldrsb r0, [r4, r0] - cmp r0, #2 - ble _0800282A - movs r0, #0x6d - bl m4aSongNumStart - ldrb r0, [r4] - subs r0, #3 - b _08002828 - .align 2, 0 -_08002804: .4byte 0x0201A4F8 -_08002808: .4byte gMain -_0800280C: - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0800282A - ldr r4, _0800286C @ =0x0201A4F8 - movs r0, #0 - ldrsb r0, [r4, r0] - cmp r0, #2 - bgt _0800282A - movs r0, #0x6d - bl m4aSongNumStart - ldrb r0, [r4] - adds r0, #3 -_08002828: - strb r0, [r4] -_0800282A: - ldr r4, _08002870 @ =gMain - ldrh r1, [r4, #0x18] - movs r5, #1 - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _0800284C - movs r0, #0x65 - bl m4aSongNumStart - ldr r0, _08002874 @ =0x0202BED0 - strb r5, [r0] - ldr r0, _08002878 @ =0x0201A4B0 - strb r5, [r0] - ldr r1, _0800287C @ =0x0202A560 - movs r0, #0 - strh r0, [r1] -_0800284C: - ldrh r1, [r4, #0x18] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - bne _08002858 - b _0800296E -_08002858: - movs r0, #0x66 - bl m4aSongNumStart - ldr r0, _08002880 @ =0x0202BEE4 - strb r5, [r0] - ldrb r0, [r4, #3] - adds r0, #1 - strb r0, [r4, #3] - b _0800296E - .align 2, 0 -_0800286C: .4byte 0x0201A4F8 -_08002870: .4byte gMain -_08002874: .4byte 0x0202BED0 -_08002878: .4byte 0x0201A4B0 -_0800287C: .4byte 0x0202A560 -_08002880: .4byte 0x0202BEE4 -_08002884: - ldr r5, _08002904 @ =gMain - ldrh r1, [r5, #0x18] - movs r0, #0x30 - ands r0, r1 - cmp r0, #0 - beq _080028A0 - movs r0, #0x67 - bl m4aSongNumStart - ldr r2, _08002908 @ =0x0201A4C0 - ldrb r1, [r2] - movs r0, #1 - subs r0, r0, r1 - strb r0, [r2] -_080028A0: - ldrh r0, [r5, #0x18] - ands r4, r0 - cmp r4, #0 - beq _080028CC - movs r0, #0x65 - bl m4aSongNumStart - ldr r0, _0800290C @ =0x0202A560 - movs r1, #0 - strh r1, [r0] - ldr r0, _08002910 @ =0x0202BE1C - strh r1, [r0] - ldr r0, _08002908 @ =0x0201A4C0 - ldrb r0, [r0] - movs r2, #0xa1 - lsls r2, r2, #1 - adds r1, r5, r2 - strb r0, [r1] - bl sub_52B30 - movs r0, #2 - strb r0, [r6] -_080028CC: - ldrh r1, [r5, #0x18] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _080028E4 - movs r0, #0x66 - bl m4aSongNumStart - ldr r1, _08002914 @ =0x0201A4B0 - movs r0, #0 - strb r0, [r1] - strb r0, [r6] -_080028E4: - ldr r1, _0800290C @ =0x0202A560 - ldrh r0, [r1] - adds r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #4 - ble _0800296E - movs r0, #0 - strh r0, [r1] - ldr r2, _08002918 @ =0x0201A4F4 - ldrh r1, [r2] - movs r0, #1 - subs r0, r0, r1 - strh r0, [r2] - b _0800296E - .align 2, 0 -_08002904: .4byte gMain -_08002908: .4byte 0x0201A4C0 -_0800290C: .4byte 0x0202A560 -_08002910: .4byte 0x0202BE1C -_08002914: .4byte 0x0201A4B0 -_08002918: .4byte 0x0201A4F4 -_0800291C: - ldr r1, _08002974 @ =0x0202A560 - ldrh r0, [r1] - adds r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #5 - ble _0800296E - movs r3, #0 - strh r3, [r1] - ldr r2, _08002978 @ =0x0202BEE8 - ldrb r1, [r2] - movs r0, #2 - subs r0, r0, r1 - strb r0, [r2] - ldr r1, _0800297C @ =0x0202BE1C - ldrh r0, [r1] - adds r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #5 - ble _0800296E - ldr r1, _08002980 @ =gMain - strb r3, [r1, #0xd] - ldr r2, _08002984 @ =0x086A4CF0 - ldr r0, _08002988 @ =0x0201A4F8 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, r0, r2 - ldrb r0, [r0] - strb r0, [r1, #4] - strb r0, [r1, #5] - movs r0, #1 - strb r0, [r1, #6] - ldr r0, _0800298C @ =0x0202BEE4 - strb r4, [r0] - ldrb r0, [r1, #3] - adds r0, #1 - strb r0, [r1, #3] -_0800296E: - pop {r4, r5, r6} - pop {r0} - bx r0 - .align 2, 0 -_08002974: .4byte 0x0202A560 -_08002978: .4byte 0x0202BEE8 -_0800297C: .4byte 0x0202BE1C -_08002980: .4byte gMain -_08002984: .4byte 0x086A4CF0 -_08002988: .4byte 0x0201A4F8 -_0800298C: .4byte 0x0202BEE4 - - thumb_func_start sub_2990 -sub_2990: @ 0x08002990 - push {lr} - ldr r0, _080029BC @ =sub_29C8 + 1 - bl sub_FE04 - bl m4aMPlayAllStop - bl sub_D10 - ldr r1, _080029C0 @ =gAutoDisplayTitlescreenMenu - movs r0, #1 - strb r0, [r1] - ldr r0, _080029C4 @ =0x0202BEE4 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - bl SetMainGameState - pop {r0} - bx r0 - .align 2, 0 -_080029BC: .4byte sub_29C8 + 1 -_080029C0: .4byte gAutoDisplayTitlescreenMenu -_080029C4: .4byte 0x0202BEE4 - - thumb_func_start sub_29C8 -sub_29C8: @ 0x080029C8 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #0x18 - ldr r1, _08002C14 @ =gMain - ldrh r0, [r1, #0x38] - ldr r0, _08002C18 @ =0x00000C14 - strh r0, [r1, #0x38] - ldrh r0, [r1, #0x3a] - ldr r0, _08002C1C @ =0x00000808 - strh r0, [r1, #0x3a] - ldr r2, _08002C20 @ =0x04000050 - ldrh r0, [r1, #0x38] - strh r0, [r2] - adds r2, #2 - ldrh r0, [r1, #0x3a] - strh r0, [r2] - ldr r7, _08002C24 @ =0x0201A4F8 - movs r0, #0xe9 - lsls r0, r0, #3 - adds r3, r1, r0 - ldr r4, _08002C28 @ =0x0201A4C0 - ldr r5, _08002C2C @ =0x0201A4F4 - ldr r2, _08002C30 @ =0x0201A4B0 - mov sb, r2 - ldr r0, _08002C34 @ =0x086A4C80 - mov ip, r0 - movs r2, #0xd2 - lsls r2, r2, #3 - adds r1, r1, r2 - add r0, sp, #0x14 -_08002A0A: - str r1, [r0] - subs r1, #0xb8 - subs r0, #4 - cmp r0, sp @ warning: use of r13 is deprecated - bge _08002A0A - movs r0, #0 - ldrsb r0, [r7, r0] - movs r2, #0xb8 - muls r0, r2, r0 - adds r0, r0, r3 - mov sl, r0 - ldrb r1, [r4] - lsls r1, r1, #1 - movs r4, #0 - ldrsh r0, [r5, r4] - adds r0, #0xc - adds r1, r1, r0 - muls r1, r2, r1 - ldr r2, _08002C38 @ =0xFFFFFBB0 - adds r0, r3, r2 - adds r1, r1, r0 - mov r8, r1 - movs r2, #1 - mov r1, sp - movs r6, #5 -_08002A3C: - ldm r1!, {r0} - strh r2, [r0] - subs r6, #1 - cmp r6, #0 - bge _08002A3C - movs r0, #0 - ldrsb r0, [r7, r0] - lsls r0, r0, #2 - add r0, sp - ldr r1, [r0] - movs r0, #0 - strh r0, [r1] - movs r0, #1 - mov r3, sl - strh r0, [r3] - mov r4, sb - movs r0, #0 - ldrsb r0, [r4, r0] - mov r7, r8 - strh r0, [r7] - mov r0, ip - movs r1, #0x10 - ldr r2, _08002C3C @ =0x0200B3B8 - bl LoadSpriteSets - movs r1, #0 -_08002A70: - lsls r2, r1, #2 - mov r0, sp - adds r4, r0, r2 - ldr r3, [r4] - ldrh r0, [r3] - adds r1, #1 - mov sb, r1 - cmp r0, #1 - bne _08002AEC - ldr r1, _08002C40 @ =0x086A4CC0 - adds r1, r2, r1 - ldrh r0, [r1] - strh r0, [r3, #2] - ldr r2, [r4] - ldrh r0, [r1, #2] - strh r0, [r2, #4] - adds r5, r4, #0 - ldr r1, _08002C44 @ =gOamBuffer - mov ip, r1 - movs r7, #8 - movs r6, #3 -_08002A9A: - ldr r4, [r5] - adds r4, r4, r7 - ldrh r2, [r4] - lsls r2, r2, #3 - add r2, ip - ldrb r1, [r2, #1] - movs r0, #0xd - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #4 - orrs r0, r1 - strb r0, [r2, #1] - ldrh r2, [r4] - lsls r2, r2, #3 - add r2, ip - movs r3, #2 - ldrsh r1, [r4, r3] - ldr r0, [r5] - movs r3, #2 - ldrsh r0, [r0, r3] - adds r1, r1, r0 - ldr r3, _08002C48 @ =0x000001FF - adds r0, r3, #0 - ands r1, r0 - ldrh r3, [r2, #2] - ldr r0, _08002C4C @ =0xFFFFFE00 - ands r0, r3 - orrs r0, r1 - strh r0, [r2, #2] - ldrh r1, [r4] - lsls r1, r1, #3 - add r1, ip - ldr r0, [r5] - ldrb r0, [r0, #4] - ldrb r4, [r4, #4] - adds r0, r0, r4 - strb r0, [r1] - adds r7, #8 - subs r6, #1 - cmp r6, #0 - bge _08002A9A -_08002AEC: - mov r1, sb - cmp r1, #5 - ble _08002A70 - movs r0, #0x58 - mov r4, sl - strh r0, [r4, #2] - movs r0, #0x85 - strh r0, [r4, #4] - ldr r5, _08002C44 @ =gOamBuffer - movs r7, #0xd - rsbs r7, r7, #0 - mov sb, r7 - ldr r0, _08002C4C @ =0xFFFFFE00 - mov ip, r0 - adds r4, #8 - movs r6, #1 -_08002B0C: - ldrh r1, [r4] - lsls r1, r1, #3 - adds r1, r1, r5 - ldrb r2, [r1, #1] - mov r0, sb - ands r0, r2 - strb r0, [r1, #1] - ldrh r2, [r4] - lsls r2, r2, #3 - adds r2, r2, r5 - ldr r3, _08002C50 @ =0x0202BEE8 - ldrb r1, [r3] - lsls r1, r1, #4 - ldrb r3, [r2, #5] - movs r0, #0xf - ands r0, r3 - orrs r0, r1 - strb r0, [r2, #5] - ldrh r3, [r4] - lsls r3, r3, #3 - adds r3, r3, r5 - movs r7, #2 - ldrsh r1, [r4, r7] - mov r2, sl - movs r7, #2 - ldrsh r0, [r2, r7] - adds r1, r1, r0 - ldr r2, _08002C48 @ =0x000001FF - adds r0, r2, #0 - ands r1, r0 - ldrh r2, [r3, #2] - mov r0, ip - ands r0, r2 - orrs r0, r1 - strh r0, [r3, #2] - ldrh r1, [r4] - lsls r1, r1, #3 - adds r1, r1, r5 - mov r3, sl - ldrb r0, [r3, #4] - ldrb r7, [r4, #4] - adds r0, r0, r7 - strb r0, [r1] - adds r4, #8 - subs r6, #1 - cmp r6, #0 - bge _08002B0C - mov r1, r8 - ldrh r0, [r1] - cmp r0, #1 - bne _08002BEA - ldr r2, _08002C54 @ =0x086A4CD8 - ldr r1, _08002C24 @ =0x0201A4F8 - movs r0, #0 - ldrsb r0, [r1, r0] - lsls r0, r0, #2 - adds r0, r0, r2 - ldrh r0, [r0] - mov r3, r8 - strh r0, [r3, #2] - movs r0, #0 - ldrsb r0, [r1, r0] - lsls r0, r0, #2 - adds r0, r0, r2 - ldrh r0, [r0, #2] - strh r0, [r3, #4] - ldr r5, _08002C44 @ =gOamBuffer - movs r4, #0xd - rsbs r4, r4, #0 - mov sb, r4 - ldr r7, _08002C4C @ =0xFFFFFE00 - mov ip, r7 - mov r4, r8 - adds r4, #8 - movs r6, #4 -_08002BA2: - ldrh r1, [r4] - lsls r1, r1, #3 - adds r1, r1, r5 - ldrb r2, [r1, #1] - mov r0, sb - ands r0, r2 - strb r0, [r1, #1] - ldrh r3, [r4] - lsls r3, r3, #3 - adds r3, r3, r5 - movs r0, #2 - ldrsh r1, [r4, r0] - mov r2, r8 - movs r7, #2 - ldrsh r0, [r2, r7] - adds r1, r1, r0 - ldr r2, _08002C48 @ =0x000001FF - adds r0, r2, #0 - ands r1, r0 - ldrh r2, [r3, #2] - mov r0, ip - ands r0, r2 - orrs r0, r1 - strh r0, [r3, #2] - ldrh r1, [r4] - lsls r1, r1, #3 - adds r1, r1, r5 - mov r3, r8 - ldrb r0, [r3, #4] - ldrb r7, [r4, #4] - adds r0, r0, r7 - strb r0, [r1] - adds r4, #8 - subs r6, #1 - cmp r6, #0 - bge _08002BA2 -_08002BEA: - movs r2, #0 - mov r1, sp - movs r6, #5 -_08002BF0: - ldm r1!, {r0} - strh r2, [r0] - subs r6, #1 - cmp r6, #0 - bge _08002BF0 - movs r0, #0 - mov r1, sl - strh r0, [r1] - mov r2, r8 - strh r0, [r2] - add sp, #0x18 - 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 -_08002C14: .4byte gMain -_08002C18: .4byte 0x00000C14 -_08002C1C: .4byte 0x00000808 -_08002C20: .4byte 0x04000050 -_08002C24: .4byte 0x0201A4F8 -_08002C28: .4byte 0x0201A4C0 -_08002C2C: .4byte 0x0201A4F4 -_08002C30: .4byte 0x0201A4B0 -_08002C34: .4byte 0x086A4C80 -_08002C38: .4byte 0xFFFFFBB0 -_08002C3C: .4byte 0x0200B3B8 -_08002C40: .4byte 0x086A4CC0 -_08002C44: .4byte gOamBuffer -_08002C48: .4byte 0x000001FF -_08002C4C: .4byte 0xFFFFFE00 -_08002C50: .4byte 0x0202BEE8 -_08002C54: .4byte 0x086A4CD8 diff --git a/asm/rom_2C58.s b/asm/rom_2C58.s deleted file mode 100755 index da52ca9..0000000 --- a/asm/rom_2C58.s +++ /dev/null @@ -1,2085 +0,0 @@ - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start EReaderMain -EReaderMain: @ 0x08002C58 - push {lr} - ldr r1, _08002C70 @ =0x0805C75C - ldr r0, _08002C74 @ =gMain - ldrb r0, [r0, #3] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r0, [r0] - bl _call_via_r0 - pop {r0} - bx r0 - .align 2, 0 -_08002C70: .4byte 0x0805C75C -_08002C74: .4byte gMain - - thumb_func_start sub_2C78 -sub_2C78: @ 0x08002C78 - push {r4, r5, r6, lr} - mov r6, sb - mov r5, r8 - push {r5, r6} - bl sub_438 - movs r2, #0x80 - lsls r2, r2, #0x13 - movs r1, #0x86 - lsls r1, r1, #5 - adds r0, r1, #0 - strh r0, [r2] - ldr r1, _08002D80 @ =0x04000008 - movs r0, #4 - strh r0, [r1] - ldrh r0, [r2] - movs r3, #0x80 - lsls r3, r3, #1 - adds r1, r3, #0 - orrs r0, r1 - strh r0, [r2] - ldr r1, _08002D84 @ =0x0400000A - adds r3, #5 - adds r0, r3, #0 - strh r0, [r1] - ldrh r0, [r2] - adds r3, #0xfb - adds r1, r3, #0 - orrs r0, r1 - strh r0, [r2] - ldr r6, _08002D88 @ =gMain - movs r0, #0xba - lsls r0, r0, #2 - adds r1, r6, r0 - movs r5, #0 - ldr r0, _08002D8C @ =0x0000FFE8 - strh r0, [r1] - adds r3, #0xea - adds r1, r6, r3 - subs r0, #0x48 - strh r0, [r1] - ldrh r0, [r2] - strh r0, [r6, #0x16] - ldr r4, _08002D90 @ =0x040000D4 - ldr r0, _08002D94 @ =0x08081D20 - str r0, [r4] - movs r0, #0xa0 - lsls r0, r0, #0x13 - str r0, [r4, #4] - ldr r0, _08002D98 @ =0x80000020 - str r0, [r4, #8] - ldr r0, [r4, #8] - ldr r0, _08002D9C @ =0x080897E0 - str r0, [r4] - ldr r0, _08002DA0 @ =0x05000040 - str r0, [r4, #4] - ldr r0, _08002DA4 @ =0x80000010 - str r0, [r4, #8] - ldr r0, [r4, #8] - ldr r0, _08002DA8 @ =0x08080500 - str r0, [r4] - ldr r0, _08002DAC @ =0x03000000 - mov r8, r0 - str r0, [r4, #4] - ldr r1, _08002DB0 @ =0x80001800 - mov sb, r1 - str r1, [r4, #8] - ldr r0, [r4, #8] - ldr r0, _08002DB4 @ =0x0807DD00 - str r0, [r4] - movs r0, #0xc0 - lsls r0, r0, #0x13 - str r0, [r4, #4] - ldr r1, _08002DB8 @ =0x80000400 - str r1, [r4, #8] - ldr r0, [r4, #8] - ldr r0, _08002DBC @ =0x0807FD00 - str r0, [r4] - ldr r0, _08002DC0 @ =0x06000800 - str r0, [r4, #4] - str r1, [r4, #8] - ldr r0, [r4, #8] - ldr r0, _08002DC4 @ =0x08089960 - str r0, [r4] - ldr r0, _08002DC8 @ =0x05000200 - str r0, [r4, #4] - ldr r0, _08002DCC @ =0x80000060 - str r0, [r4, #8] - ldr r0, [r4, #8] - ldr r0, _08002DD0 @ =0x08089B60 - str r0, [r4] - ldr r0, _08002DD4 @ =0x06010000 - str r0, [r4, #4] - ldr r0, _08002DD8 @ =0x80003610 - str r0, [r4, #8] - ldr r0, [r4, #8] - bl sub_2DF0 - ldr r0, _08002DDC @ =0x0202C604 - strb r5, [r0] - ldr r0, _08002DE0 @ =0x0202A580 - strb r5, [r0] - ldr r0, _08002DE4 @ =0x0202C5A4 - strb r5, [r0] - ldr r0, _08002DE8 @ =0x0202AD90 - strb r5, [r0] - bl sub_377C - mov r3, r8 - str r3, [r4] - ldr r0, _08002DEC @ =0x06004000 - str r0, [r4, #4] - mov r0, sb - str r0, [r4, #8] - ldr r0, [r4, #8] - bl sub_394C - movs r0, #5 - bl m4aSongNumStart - bl sub_CBC - bl sub_24C - movs r0, #1 - strb r0, [r6, #3] - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6} - pop {r0} - bx r0 - .align 2, 0 -_08002D80: .4byte 0x04000008 -_08002D84: .4byte 0x0400000A -_08002D88: .4byte gMain -_08002D8C: .4byte 0x0000FFE8 -_08002D90: .4byte 0x040000D4 -_08002D94: .4byte 0x08081D20 -_08002D98: .4byte 0x80000020 -_08002D9C: .4byte 0x080897E0 -_08002DA0: .4byte 0x05000040 -_08002DA4: .4byte 0x80000010 -_08002DA8: .4byte 0x08080500 -_08002DAC: .4byte 0x03000000 -_08002DB0: .4byte 0x80001800 -_08002DB4: .4byte 0x0807DD00 -_08002DB8: .4byte 0x80000400 -_08002DBC: .4byte 0x0807FD00 -_08002DC0: .4byte 0x06000800 -_08002DC4: .4byte 0x08089960 -_08002DC8: .4byte 0x05000200 -_08002DCC: .4byte 0x80000060 -_08002DD0: .4byte 0x08089B60 -_08002DD4: .4byte 0x06010000 -_08002DD8: .4byte 0x80003610 -_08002DDC: .4byte 0x0202C604 -_08002DE0: .4byte 0x0202A580 -_08002DE4: .4byte 0x0202C5A4 -_08002DE8: .4byte 0x0202AD90 -_08002DEC: .4byte 0x06004000 - - thumb_func_start sub_2DF0 -sub_2DF0: @ 0x08002DF0 - ldr r0, _08002E1C @ =0x0202A58C - movs r1, #0 - strb r1, [r0] - ldr r0, _08002E20 @ =0x0202C584 - strb r1, [r0] - ldr r2, _08002E24 @ =0x0202BEC0 - movs r0, #4 - strb r0, [r2] - ldr r0, _08002E28 @ =0x0201B174 - strb r1, [r0] - ldr r0, _08002E2C @ =0x0202C5A0 - movs r1, #0 - strh r1, [r0] - ldr r0, _08002E30 @ =0x0201A44C - strh r1, [r0] - ldr r0, _08002E34 @ =0x0202BEF8 - strb r1, [r0] - ldr r0, _08002E38 @ =0x0200282C - strb r1, [r0] - ldr r0, _08002E3C @ =0x0200282D - strb r1, [r0] - bx lr - .align 2, 0 -_08002E1C: .4byte 0x0202A58C -_08002E20: .4byte 0x0202C584 -_08002E24: .4byte 0x0202BEC0 -_08002E28: .4byte 0x0201B174 -_08002E2C: .4byte 0x0202C5A0 -_08002E30: .4byte 0x0201A44C -_08002E34: .4byte 0x0202BEF8 -_08002E38: .4byte 0x0200282C -_08002E3C: .4byte 0x0200282D - - thumb_func_start sub_2E40 -sub_2E40: @ 0x08002E40 - push {r4, r5, r6, r7, lr} - ldr r4, _08002E84 @ =0x0202C604 - ldr r2, _08002E88 @ =0x086A551A - ldr r3, _08002E8C @ =0x0202AD90 - movs r0, #0 - ldrsb r0, [r3, r0] - adds r0, r0, r2 - movs r1, #0 - ldrsb r1, [r4, r1] - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r1, r0 - bgt _08002E94 - ldr r1, _08002E90 @ =0x0202A580 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #2 - ble _08002EF0 - movs r0, #0 - strb r0, [r1] - movs r0, #0 - ldrsb r0, [r3, r0] - movs r1, #0 - ldrsb r1, [r4, r1] - bl sub_3828 - ldrb r0, [r4] - adds r0, #1 - strb r0, [r4] - b _08002EF0 - .align 2, 0 -_08002E84: .4byte 0x0202C604 -_08002E88: .4byte 0x086A551A -_08002E8C: .4byte 0x0202AD90 -_08002E90: .4byte 0x0202A580 -_08002E94: - ldr r1, _08002ECC @ =0x0202A580 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #6 - ble _08002EF0 - movs r0, #0 - strb r0, [r1] - ldr r0, _08002ED0 @ =0x0202C5A4 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _08002ED4 - movs r0, #0 - ldrsb r0, [r3, r0] - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - movs r1, #0xea - lsls r1, r1, #6 - bl sub_38A0 - b _08002EE6 - .align 2, 0 -_08002ECC: .4byte 0x0202A580 -_08002ED0: .4byte 0x0202C5A4 -_08002ED4: - movs r0, #0 - ldrsb r0, [r3, r0] - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - movs r1, #0 - bl sub_38A0 -_08002EE6: - ldr r2, _08002F2C @ =0x0202C5A4 - ldrb r1, [r2] - movs r0, #1 - subs r0, r0, r1 - strb r0, [r2] -_08002EF0: - ldr r7, _08002F30 @ =gMain - ldrh r1, [r7, #0x18] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _08002F78 - ldr r5, _08002F34 @ =0x0202C604 - ldr r6, _08002F38 @ =0x086A551A - ldr r4, _08002F3C @ =0x0202AD90 - movs r2, #0 - ldrsb r2, [r4, r2] - adds r0, r2, r6 - movs r1, #0 - ldrsb r1, [r5, r1] - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r1, r0 - bgt _08002F40 - adds r0, r2, #0 - bl sub_37B4 - movs r0, #0 - ldrsb r0, [r4, r0] - adds r0, r0, r6 - ldrb r0, [r0] - adds r0, #1 - strb r0, [r5] - b _08002F90 - .align 2, 0 -_08002F2C: .4byte 0x0202C5A4 -_08002F30: .4byte gMain -_08002F34: .4byte 0x0202C604 -_08002F38: .4byte 0x086A551A -_08002F3C: .4byte 0x0202AD90 -_08002F40: - ldr r0, _08002F54 @ =0x086A5528 - adds r0, r2, r0 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _08002F58 - movs r0, #2 - b _08002F8E - .align 2, 0 -_08002F54: .4byte 0x086A5528 -_08002F58: - bl sub_377C - movs r1, #0 - strb r1, [r5] - ldr r0, _08002F70 @ =0x0202A580 - strb r1, [r0] - ldr r0, _08002F74 @ =0x0202C5A4 - strb r1, [r0] - ldrb r0, [r4] - adds r0, #1 - strb r0, [r4] - b _08002F90 - .align 2, 0 -_08002F70: .4byte 0x0202A580 -_08002F74: .4byte 0x0202C5A4 -_08002F78: - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _08002F90 - movs r0, #0x66 - bl m4aSongNumStart - ldr r0, _08002FAC @ =0x0202BEF8 - movs r1, #1 - strb r1, [r0] - movs r0, #8 -_08002F8E: - strb r0, [r7, #3] -_08002F90: - bl sub_394C - ldr r1, _08002FB0 @ =0x040000D4 - ldr r0, _08002FB4 @ =0x03000000 - str r0, [r1] - ldr r0, _08002FB8 @ =0x06004000 - str r0, [r1, #4] - ldr r0, _08002FBC @ =0x80001800 - str r0, [r1, #8] - ldr r0, [r1, #8] - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_08002FAC: .4byte 0x0202BEF8 -_08002FB0: .4byte 0x040000D4 -_08002FB4: .4byte 0x03000000 -_08002FB8: .4byte 0x06004000 -_08002FBC: .4byte 0x80001800 - - thumb_func_start sub_2FC0 -sub_2FC0: @ 0x08002FC0 - push {r4, r5, lr} - ldr r4, _0800302C @ =0x0202C5A0 - ldrh r0, [r4] - adds r0, #1 - strh r0, [r4] - ldr r2, _08003030 @ =0x086A550C - ldr r3, _08003034 @ =0x0201B174 - movs r1, #0 - ldrsb r1, [r3, r1] - lsls r1, r1, #1 - adds r1, r1, r2 - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - movs r2, #0 - ldrsh r1, [r1, r2] - cmp r0, r1 - ble _08003012 - movs r5, #0 - strh r5, [r4] - ldrb r0, [r3] - adds r0, #1 - strb r0, [r3] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #6 - bne _08003012 - bl sub_19B4 - bl sub_3C1C - ldr r0, _08003038 @ =0x0201B124 - strb r5, [r0] - ldr r1, _0800303C @ =0x0202C584 - movs r0, #1 - strb r0, [r1] - movs r0, #0x76 - bl m4aSongNumStart - ldr r1, _08003040 @ =gMain - movs r0, #3 - strb r0, [r1, #3] -_08003012: - ldr r1, _08003044 @ =0x0202A58C - movs r0, #0 - strb r0, [r1] - ldr r1, _08003048 @ =0x0202BEC0 - ldr r0, _08003034 @ =0x0201B174 - ldrb r0, [r0] - adds r0, #4 - strb r0, [r1] - bl sub_3AB4 - pop {r4, r5} - pop {r0} - bx r0 - .align 2, 0 -_0800302C: .4byte 0x0202C5A0 -_08003030: .4byte 0x086A550C -_08003034: .4byte 0x0201B174 -_08003038: .4byte 0x0201B124 -_0800303C: .4byte 0x0202C584 -_08003040: .4byte gMain -_08003044: .4byte 0x0202A58C -_08003048: .4byte 0x0202BEC0 - - thumb_func_start sub_304C -sub_304C: @ 0x0800304C - push {r4, r5, lr} - bl sub_3AB4 - ldr r5, _08003114 @ =gMain - ldrh r1, [r5, #0x18] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _08003076 - bl sub_2568 - bl sub_1AA4 - bl sub_2B4 - bl m4aMPlayAllStop - bl sub_D10 - movs r0, #0 - strb r0, [r5, #3] -_08003076: - ldr r4, _08003118 @ =0x0202ADD0 - ldr r0, _0800311C @ =0x0202BEC8 - ldr r1, _08003120 @ =0x0202C5F0 - ldr r2, _08003124 @ =0x0201A4D0 - bl sub_1B04 - str r0, [r4] - ldr r1, _08003128 @ =0x0202BDF0 - movs r3, #3 - ands r3, r0 - str r3, [r1] - ldr r2, _0800312C @ =0x0201C1AC - movs r1, #0x1c - ands r1, r0 - lsrs r1, r1, #2 - strb r1, [r2] - ldr r2, _08003130 @ =0x0202ADDC - movs r1, #0xe0 - lsls r1, r1, #4 - ands r1, r0 - lsrs r1, r1, #9 - strb r1, [r2] - movs r1, #0x40 - ands r1, r0 - cmp r1, #0 - bne _080030AC - b _080031DC -_080030AC: - cmp r3, #1 - bls _080030B2 - b _080031DC -_080030B2: - bl sub_3C78 - ldr r0, [r4] - movs r1, #0x80 - lsls r1, r1, #1 - ands r0, r1 - cmp r0, #0 - bne _0800316C - bl sub_3CD8 - lsls r0, r0, #0x10 - asrs r4, r0, #0x10 - movs r0, #1 - rsbs r0, r0, #0 - cmp r4, r0 - bne _0800316C - bl sub_38F0 - ldr r1, _08003134 @ =0x0201C184 - strh r0, [r1] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, r4 - beq _0800313C - cmp r0, #4 - bgt _0800313C - adds r3, r5, #0 - adds r4, r1, #0 - ldr r5, _08003138 @ =0x0201A44C - movs r2, #0 - movs r1, #4 - adds r0, r3, #0 - adds r0, #0xb -_080030F4: - strb r2, [r0] - subs r0, #1 - subs r1, #1 - cmp r1, #0 - bge _080030F4 - movs r0, #0 - ldrsh r1, [r4, r0] - adds r0, r3, #7 - adds r1, r1, r0 - movs r2, #0 - movs r0, #1 - strb r0, [r1] - strh r2, [r5] - movs r0, #5 - strb r0, [r3, #3] - b _0800316C - .align 2, 0 -_08003114: .4byte gMain -_08003118: .4byte 0x0202ADD0 -_0800311C: .4byte 0x0202BEC8 -_08003120: .4byte 0x0202C5F0 -_08003124: .4byte 0x0201A4D0 -_08003128: .4byte 0x0202BDF0 -_0800312C: .4byte 0x0201C1AC -_08003130: .4byte 0x0202ADDC -_08003134: .4byte 0x0201C184 -_08003138: .4byte 0x0201A44C -_0800313C: - ldr r0, _080031E4 @ =0x0201A44C - movs r2, #0 - strh r2, [r0] - ldr r1, _080031E8 @ =0x0202A58C - movs r0, #2 - strb r0, [r1] - ldr r1, _080031EC @ =0x0202BEC0 - movs r0, #0xa - strb r0, [r1] - ldr r0, _080031F0 @ =0x0202C604 - strb r2, [r0] - ldr r0, _080031F4 @ =0x0202C5A4 - strb r2, [r0] - ldr r1, _080031F8 @ =0x0202AD90 - movs r0, #0xd - strb r0, [r1] - bl sub_377C - ldr r1, _080031FC @ =gMain - movs r0, #4 - strb r0, [r1, #3] - movs r0, #0x8a - bl m4aSongNumStart -_0800316C: - ldr r4, _080031E8 @ =0x0202A58C - movs r0, #0 - ldrsb r0, [r4, r0] - cmp r0, #1 - bne _080031DC - ldr r3, _080031E4 @ =0x0201A44C - ldrh r0, [r3] - adds r0, #1 - strh r0, [r3] - ldrh r0, [r3] - movs r1, #7 - ands r0, r1 - cmp r0, #0 - bne _08003192 - ldr r2, _080031EC @ =0x0202BEC0 - ldrb r1, [r2] - movs r0, #0x15 - subs r0, r0, r1 - strb r0, [r2] -_08003192: - ldr r0, _08003200 @ =0x0202ADD0 - ldr r0, [r0] - movs r1, #0xfe - lsls r1, r1, #0xf - ands r0, r1 - cmp r0, #0 - beq _080031DC - ldr r1, _08003204 @ =0x0201A444 - ldrh r0, [r1] - adds r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0xb4 - ble _080031DC - movs r2, #0 - strh r2, [r3] - movs r0, #2 - strb r0, [r4] - ldr r1, _080031EC @ =0x0202BEC0 - movs r0, #0xa - strb r0, [r1] - ldr r0, _080031F0 @ =0x0202C604 - strb r2, [r0] - ldr r0, _080031F4 @ =0x0202C5A4 - strb r2, [r0] - ldr r1, _080031F8 @ =0x0202AD90 - movs r0, #0xd - strb r0, [r1] - bl sub_377C - ldr r1, _080031FC @ =gMain - movs r0, #4 - strb r0, [r1, #3] - movs r0, #0x8a - bl m4aSongNumStart -_080031DC: - pop {r4, r5} - pop {r0} - bx r0 - .align 2, 0 -_080031E4: .4byte 0x0201A44C -_080031E8: .4byte 0x0202A58C -_080031EC: .4byte 0x0202BEC0 -_080031F0: .4byte 0x0202C604 -_080031F4: .4byte 0x0202C5A4 -_080031F8: .4byte 0x0202AD90 -_080031FC: .4byte gMain -_08003200: .4byte 0x0202ADD0 -_08003204: .4byte 0x0201A444 - - thumb_func_start sub_3208 -sub_3208: @ 0x08003208 - push {r4, r5, r6, r7, lr} - ldr r1, _0800326C @ =0x0201A44C - ldrh r0, [r1] - adds r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #8 - ble _08003228 - movs r0, #0 - strh r0, [r1] - ldr r2, _08003270 @ =0x0202BEC0 - ldrb r1, [r2] - movs r0, #0x16 - subs r0, r0, r1 - strb r0, [r2] -_08003228: - ldr r4, _08003274 @ =0x0202C604 - ldr r2, _08003278 @ =0x086A551A - ldr r3, _0800327C @ =0x0202AD90 - movs r0, #0 - ldrsb r0, [r3, r0] - adds r0, r0, r2 - movs r1, #0 - ldrsb r1, [r4, r1] - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r1, r0 - bgt _08003284 - ldr r1, _08003280 @ =0x0202A580 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #2 - ble _080032E0 - movs r0, #0 - strb r0, [r1] - movs r0, #0 - ldrsb r0, [r3, r0] - movs r1, #0 - ldrsb r1, [r4, r1] - bl sub_3828 - ldrb r0, [r4] - adds r0, #1 - strb r0, [r4] - b _080032E0 - .align 2, 0 -_0800326C: .4byte 0x0201A44C -_08003270: .4byte 0x0202BEC0 -_08003274: .4byte 0x0202C604 -_08003278: .4byte 0x086A551A -_0800327C: .4byte 0x0202AD90 -_08003280: .4byte 0x0202A580 -_08003284: - ldr r1, _080032BC @ =0x0202A580 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #6 - ble _080032E0 - movs r0, #0 - strb r0, [r1] - ldr r0, _080032C0 @ =0x0202C5A4 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _080032C4 - movs r0, #0 - ldrsb r0, [r3, r0] - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - movs r1, #0xea - lsls r1, r1, #6 - bl sub_38A0 - b _080032D6 - .align 2, 0 -_080032BC: .4byte 0x0202A580 -_080032C0: .4byte 0x0202C5A4 -_080032C4: - movs r0, #0 - ldrsb r0, [r3, r0] - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - movs r1, #0 - bl sub_38A0 -_080032D6: - ldr r2, _0800331C @ =0x0202C5A4 - ldrb r1, [r2] - movs r0, #1 - subs r0, r0, r1 - strb r0, [r2] -_080032E0: - ldr r7, _08003320 @ =gMain - ldrh r1, [r7, #0x18] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _0800336E - ldr r6, _08003324 @ =0x0202C604 - ldr r4, _08003328 @ =0x086A551A - ldr r5, _0800332C @ =0x0202AD90 - movs r2, #0 - ldrsb r2, [r5, r2] - adds r0, r2, r4 - movs r1, #0 - ldrsb r1, [r6, r1] - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r1, r0 - bgt _08003330 - adds r0, r2, #0 - bl sub_37B4 - movs r0, #0 - ldrsb r0, [r5, r0] - adds r0, r0, r4 - ldrb r0, [r0] - adds r0, #1 - strb r0, [r6] - b _0800336E - .align 2, 0 -_0800331C: .4byte 0x0202C5A4 -_08003320: .4byte gMain -_08003324: .4byte 0x0202C604 -_08003328: .4byte 0x086A551A -_0800332C: .4byte 0x0202AD90 -_08003330: - ldr r0, _08003354 @ =0x086A5528 - adds r0, r2, r0 - movs r4, #0 - ldrsb r4, [r0, r4] - cmp r4, #0 - bne _08003358 - bl sub_2568 - bl sub_1AA4 - bl sub_2B4 - bl m4aMPlayAllStop - bl sub_D10 - strb r4, [r7, #3] - b _0800336E - .align 2, 0 -_08003354: .4byte 0x086A5528 -_08003358: - bl sub_377C - movs r1, #0 - strb r1, [r6] - ldr r0, _08003388 @ =0x0202A580 - strb r1, [r0] - ldr r0, _0800338C @ =0x0202C5A4 - strb r1, [r0] - ldrb r0, [r5] - adds r0, #1 - strb r0, [r5] -_0800336E: - bl sub_394C - ldr r1, _08003390 @ =0x040000D4 - ldr r0, _08003394 @ =0x03000000 - str r0, [r1] - ldr r0, _08003398 @ =0x06004000 - str r0, [r1, #4] - ldr r0, _0800339C @ =0x80001800 - str r0, [r1, #8] - ldr r0, [r1, #8] - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_08003388: .4byte 0x0202A580 -_0800338C: .4byte 0x0202C5A4 -_08003390: .4byte 0x040000D4 -_08003394: .4byte 0x03000000 -_08003398: .4byte 0x06004000 -_0800339C: .4byte 0x80001800 - - thumb_func_start sub_33A0 -sub_33A0: @ 0x080033A0 - push {lr} - bl sub_3AB4 - ldr r2, _080033BC @ =0x0201A44C - movs r0, #0 - ldrsh r1, [r2, r0] - cmp r1, #0x96 - beq _080033D4 - cmp r1, #0x96 - bgt _080033C0 - cmp r1, #4 - beq _080033CA - b _080033FE - .align 2, 0 -_080033BC: .4byte 0x0201A44C -_080033C0: - movs r0, #0x87 - lsls r0, r0, #1 - cmp r1, r0 - beq _080033E8 - b _080033FE -_080033CA: - bl sub_2568 - bl sub_1AA4 - b _080033FE -_080033D4: - ldr r1, _080033E4 @ =0x0202A58C - movs r0, #3 - strb r0, [r1] - movs r0, #0x65 - bl m4aSongNumStart - b _080033FE - .align 2, 0 -_080033E4: .4byte 0x0202A58C -_080033E8: - movs r0, #0 - strh r0, [r2] - bl sub_2B4 - bl m4aMPlayAllStop - bl sub_D10 - ldr r1, _0800342C @ =gMain - movs r0, #6 - strb r0, [r1, #3] -_080033FE: - ldr r0, _08003430 @ =0x0202A58C - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldr r3, _08003434 @ =0x0201A44C - cmp r0, #1 - bne _08003420 - ldrh r0, [r3] - movs r1, #7 - ands r0, r1 - cmp r0, #0 - bne _08003420 - ldr r2, _08003438 @ =0x0202BEC0 - ldrb r1, [r2] - movs r0, #0x15 - subs r0, r0, r1 - strb r0, [r2] -_08003420: - ldrh r0, [r3] - adds r0, #1 - strh r0, [r3] - pop {r0} - bx r0 - .align 2, 0 -_0800342C: .4byte gMain -_08003430: .4byte 0x0202A58C -_08003434: .4byte 0x0201A44C -_08003438: .4byte 0x0202BEC0 - - thumb_func_start sub_343C -sub_343C: @ 0x0800343C - push {r4, r5, r6, lr} - mov r6, sb - mov r5, r8 - push {r5, r6} - bl sub_438 - movs r2, #0x80 - lsls r2, r2, #0x13 - movs r1, #0x86 - lsls r1, r1, #5 - adds r0, r1, #0 - strh r0, [r2] - ldr r1, _08003550 @ =0x04000008 - movs r0, #4 - strh r0, [r1] - ldrh r0, [r2] - movs r3, #0x80 - lsls r3, r3, #1 - adds r1, r3, #0 - orrs r0, r1 - strh r0, [r2] - ldr r1, _08003554 @ =0x0400000A - adds r3, #5 - adds r0, r3, #0 - strh r0, [r1] - ldrh r0, [r2] - adds r3, #0xfb - adds r1, r3, #0 - orrs r0, r1 - strh r0, [r2] - ldr r6, _08003558 @ =gMain - movs r0, #0xba - lsls r0, r0, #2 - adds r1, r6, r0 - movs r5, #0 - ldr r0, _0800355C @ =0x0000FFE8 - strh r0, [r1] - adds r3, #0xea - adds r1, r6, r3 - subs r0, #0x48 - strh r0, [r1] - ldrh r0, [r2] - strh r0, [r6, #0x16] - ldr r4, _08003560 @ =0x040000D4 - ldr r0, _08003564 @ =0x08081D20 - str r0, [r4] - movs r0, #0xa0 - lsls r0, r0, #0x13 - str r0, [r4, #4] - ldr r0, _08003568 @ =0x80000020 - str r0, [r4, #8] - ldr r0, [r4, #8] - ldr r0, _0800356C @ =0x080897E0 - str r0, [r4] - ldr r0, _08003570 @ =0x05000040 - str r0, [r4, #4] - ldr r0, _08003574 @ =0x80000010 - str r0, [r4, #8] - ldr r0, [r4, #8] - ldr r0, _08003578 @ =0x08080500 - str r0, [r4] - ldr r0, _0800357C @ =0x03000000 - mov r8, r0 - str r0, [r4, #4] - ldr r1, _08003580 @ =0x80001800 - mov sb, r1 - str r1, [r4, #8] - ldr r0, [r4, #8] - ldr r0, _08003584 @ =0x0807DD00 - str r0, [r4] - movs r0, #0xc0 - lsls r0, r0, #0x13 - str r0, [r4, #4] - ldr r1, _08003588 @ =0x80000400 - str r1, [r4, #8] - ldr r0, [r4, #8] - ldr r0, _0800358C @ =0x0807FD00 - str r0, [r4] - ldr r0, _08003590 @ =0x06000800 - str r0, [r4, #4] - str r1, [r4, #8] - ldr r0, [r4, #8] - ldr r0, _08003594 @ =0x08089960 - str r0, [r4] - ldr r0, _08003598 @ =0x05000200 - str r0, [r4, #4] - ldr r0, _0800359C @ =0x80000060 - str r0, [r4, #8] - ldr r0, [r4, #8] - ldr r0, _080035A0 @ =0x08089B60 - str r0, [r4] - ldr r0, _080035A4 @ =0x06010000 - str r0, [r4, #4] - ldr r0, _080035A8 @ =0x80003610 - str r0, [r4, #8] - ldr r0, [r4, #8] - bl sub_2DF0 - ldr r0, _080035AC @ =0x0202C604 - strb r5, [r0] - ldr r0, _080035B0 @ =0x0202A580 - strb r5, [r0] - ldr r0, _080035B4 @ =0x0202C5A4 - strb r5, [r0] - ldr r2, _080035B8 @ =0x0202AD90 - ldr r1, _080035BC @ =0x086A5536 - ldr r0, _080035C0 @ =0x0201C184 - movs r3, #0 - ldrsh r0, [r0, r3] - adds r0, r0, r1 - ldrb r0, [r0] - strb r0, [r2] - bl sub_377C - mov r0, r8 - str r0, [r4] - ldr r0, _080035C4 @ =0x06004000 - str r0, [r4, #4] - mov r1, sb - str r1, [r4, #8] - ldr r0, [r4, #8] - bl sub_394C - movs r0, #5 - bl m4aSongNumStart - bl sub_CBC - bl sub_24C - movs r0, #7 - strb r0, [r6, #3] - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6} - pop {r0} - bx r0 - .align 2, 0 -_08003550: .4byte 0x04000008 -_08003554: .4byte 0x0400000A -_08003558: .4byte gMain -_0800355C: .4byte 0x0000FFE8 -_08003560: .4byte 0x040000D4 -_08003564: .4byte 0x08081D20 -_08003568: .4byte 0x80000020 -_0800356C: .4byte 0x080897E0 -_08003570: .4byte 0x05000040 -_08003574: .4byte 0x80000010 -_08003578: .4byte 0x08080500 -_0800357C: .4byte 0x03000000 -_08003580: .4byte 0x80001800 -_08003584: .4byte 0x0807DD00 -_08003588: .4byte 0x80000400 -_0800358C: .4byte 0x0807FD00 -_08003590: .4byte 0x06000800 -_08003594: .4byte 0x08089960 -_08003598: .4byte 0x05000200 -_0800359C: .4byte 0x80000060 -_080035A0: .4byte 0x08089B60 -_080035A4: .4byte 0x06010000 -_080035A8: .4byte 0x80003610 -_080035AC: .4byte 0x0202C604 -_080035B0: .4byte 0x0202A580 -_080035B4: .4byte 0x0202C5A4 -_080035B8: .4byte 0x0202AD90 -_080035BC: .4byte 0x086A5536 -_080035C0: .4byte 0x0201C184 -_080035C4: .4byte 0x06004000 - - thumb_func_start sub_35C8 -sub_35C8: @ 0x080035C8 - push {r4, r5, r6, lr} - ldr r4, _0800360C @ =0x0202C604 - ldr r2, _08003610 @ =0x086A551A - ldr r3, _08003614 @ =0x0202AD90 - movs r0, #0 - ldrsb r0, [r3, r0] - adds r0, r0, r2 - movs r1, #0 - ldrsb r1, [r4, r1] - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r1, r0 - bgt _0800361C - ldr r1, _08003618 @ =0x0202A580 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #2 - ble _08003678 - movs r0, #0 - strb r0, [r1] - movs r0, #0 - ldrsb r0, [r3, r0] - movs r1, #0 - ldrsb r1, [r4, r1] - bl sub_3828 - ldrb r0, [r4] - adds r0, #1 - strb r0, [r4] - b _08003678 - .align 2, 0 -_0800360C: .4byte 0x0202C604 -_08003610: .4byte 0x086A551A -_08003614: .4byte 0x0202AD90 -_08003618: .4byte 0x0202A580 -_0800361C: - ldr r1, _08003654 @ =0x0202A580 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #6 - ble _08003678 - movs r0, #0 - strb r0, [r1] - ldr r0, _08003658 @ =0x0202C5A4 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _0800365C - movs r0, #0 - ldrsb r0, [r3, r0] - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - movs r1, #0xea - lsls r1, r1, #6 - bl sub_38A0 - b _0800366E - .align 2, 0 -_08003654: .4byte 0x0202A580 -_08003658: .4byte 0x0202C5A4 -_0800365C: - movs r0, #0 - ldrsb r0, [r3, r0] - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - movs r1, #0 - bl sub_38A0 -_0800366E: - ldr r2, _080036B4 @ =0x0202C5A4 - ldrb r1, [r2] - movs r0, #1 - subs r0, r0, r1 - strb r0, [r2] -_08003678: - ldr r2, _080036B8 @ =gMain - ldrh r1, [r2, #0x18] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _0800371A - ldr r5, _080036BC @ =0x0202C604 - ldr r6, _080036C0 @ =0x086A551A - ldr r4, _080036C4 @ =0x0202AD90 - movs r3, #0 - ldrsb r3, [r4, r3] - adds r0, r3, r6 - movs r1, #0 - ldrsb r1, [r5, r1] - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r1, r0 - bgt _080036C8 - adds r0, r3, #0 - bl sub_37B4 - movs r0, #0 - ldrsb r0, [r4, r0] - adds r0, r0, r6 - ldrb r0, [r0] - adds r0, #1 - strb r0, [r5] - b _0800371A - .align 2, 0 -_080036B4: .4byte 0x0202C5A4 -_080036B8: .4byte gMain -_080036BC: .4byte 0x0202C604 -_080036C0: .4byte 0x086A551A -_080036C4: .4byte 0x0202AD90 -_080036C8: - ldr r0, _080036E8 @ =0x086A5528 - adds r0, r3, r0 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _08003704 - ldr r0, _080036EC @ =0x0201C184 - movs r1, #0 - ldrsh r0, [r0, r1] - cmp r0, #4 - bne _080036F4 - ldr r1, _080036F0 @ =0x0202BEF8 - movs r0, #0xb - b _080036F8 - .align 2, 0 -_080036E8: .4byte 0x086A5528 -_080036EC: .4byte 0x0201C184 -_080036F0: .4byte 0x0202BEF8 -_080036F4: - ldr r1, _08003700 @ =0x0202BEF8 - movs r0, #1 -_080036F8: - strb r0, [r1] - movs r0, #8 - strb r0, [r2, #3] - b _0800371A - .align 2, 0 -_08003700: .4byte 0x0202BEF8 -_08003704: - bl sub_377C - movs r1, #0 - strb r1, [r5] - ldr r0, _08003734 @ =0x0202A580 - strb r1, [r0] - ldr r0, _08003738 @ =0x0202C5A4 - strb r1, [r0] - ldrb r0, [r4] - adds r0, #1 - strb r0, [r4] -_0800371A: - bl sub_394C - ldr r1, _0800373C @ =0x040000D4 - ldr r0, _08003740 @ =0x03000000 - str r0, [r1] - ldr r0, _08003744 @ =0x06004000 - str r0, [r1, #4] - ldr r0, _08003748 @ =0x80001800 - str r0, [r1, #8] - ldr r0, [r1, #8] - pop {r4, r5, r6} - pop {r0} - bx r0 - .align 2, 0 -_08003734: .4byte 0x0202A580 -_08003738: .4byte 0x0202C5A4 -_0800373C: .4byte 0x040000D4 -_08003740: .4byte 0x03000000 -_08003744: .4byte 0x06004000 -_08003748: .4byte 0x80001800 - - thumb_func_start sub_374C -sub_374C: @ 0x0800374C - push {lr} - bl sub_2B4 - bl m4aMPlayAllStop - bl sub_D10 - ldr r1, _08003774 @ =gAutoDisplayTitlescreenMenu - movs r0, #1 - strb r0, [r1] - ldr r0, _08003778 @ =0x0202BEF8 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - bl SetMainGameState - pop {r0} - bx r0 - .align 2, 0 -_08003774: .4byte gAutoDisplayTitlescreenMenu -_08003778: .4byte 0x0202BEF8 - - thumb_func_start sub_377C -sub_377C: @ 0x0800377C - push {r4, r5, r6, r7, lr} - movs r1, #0 - ldr r7, _080037AC @ =0x03001800 -_08003782: - movs r5, #0 - lsls r0, r1, #0xb - adds r6, r1, #1 - adds r4, r7, r0 -_0800378A: - ldr r0, _080037B0 @ =0x080ACC60 - adds r1, r4, #0 - movs r2, #1 - movs r3, #2 - bl sub_10708 - adds r4, #0x20 - adds r5, #1 - cmp r5, #0x17 - ble _0800378A - adds r1, r6, #0 - cmp r1, #2 - ble _08003782 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_080037AC: .4byte 0x03001800 -_080037B0: .4byte 0x080ACC60 - - thumb_func_start sub_37B4 -sub_37B4: @ 0x080037B4 - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - movs r2, #0 - lsls r0, r0, #0x18 - ldr r1, _08003818 @ =0x086A4CF8 - mov sb, r1 - asrs r0, r0, #0x18 - lsls r1, r0, #3 - adds r1, r1, r0 - lsls r1, r1, #4 - mov r8, r1 -_080037CE: - movs r5, #0 - lsls r1, r2, #1 - lsls r6, r2, #0xb - adds r7, r2, #1 - adds r1, r1, r2 - lsls r1, r1, #4 - mov r0, r8 - add r0, sb - adds r4, r1, r0 -_080037E0: - ldrh r1, [r4] - ldr r2, _0800381C @ =0x0000FFF0 - adds r0, r2, #0 - ands r0, r1 - ldr r1, _08003820 @ =0x080ACC60 - adds r0, r0, r1 - lsls r1, r5, #5 - ldr r2, _08003824 @ =0x03001800 - adds r1, r1, r2 - adds r1, r6, r1 - movs r2, #1 - movs r3, #2 - bl sub_10708 - adds r4, #2 - adds r5, #1 - cmp r5, #0x17 - ble _080037E0 - adds r2, r7, #0 - cmp r2, #2 - ble _080037CE - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_08003818: .4byte 0x086A4CF8 -_0800381C: .4byte 0x0000FFF0 -_08003820: .4byte 0x080ACC60 -_08003824: .4byte 0x03001800 - - thumb_func_start sub_3828 -sub_3828: @ 0x08003828 - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r4, r1, #0 - lsls r5, r5, #0x18 - lsrs r5, r5, #0x18 - lsls r4, r4, #0x18 - asrs r4, r4, #0x18 - adds r0, r4, #0 - movs r1, #0x18 - bl __divsi3 - adds r6, r0, #0 - lsls r6, r6, #0x18 - asrs r6, r6, #0x18 - adds r0, r4, #0 - movs r1, #0x18 - bl __modsi3 - adds r2, r0, #0 - lsls r2, r2, #0x18 - asrs r2, r2, #0x18 - ldr r3, _08003890 @ =0x086A4CF8 - lsls r1, r6, #1 - adds r1, r1, r6 - lsls r1, r1, #3 - adds r1, r1, r2 - lsls r1, r1, #1 - lsls r5, r5, #0x18 - asrs r5, r5, #0x18 - lsls r0, r5, #3 - adds r0, r0, r5 - lsls r0, r0, #4 - adds r1, r1, r0 - adds r1, r1, r3 - ldrh r1, [r1] - ldr r0, _08003894 @ =0x0000FFF0 - ands r0, r1 - ldr r1, _08003898 @ =0x080ACC60 - adds r0, r0, r1 - lsls r6, r6, #0xb - lsls r2, r2, #5 - ldr r1, _0800389C @ =0x03001800 - adds r2, r2, r1 - adds r6, r6, r2 - adds r1, r6, #0 - movs r2, #1 - movs r3, #2 - bl sub_10708 - pop {r4, r5, r6} - pop {r0} - bx r0 - .align 2, 0 -_08003890: .4byte 0x086A4CF8 -_08003894: .4byte 0x0000FFF0 -_08003898: .4byte 0x080ACC60 -_0800389C: .4byte 0x03001800 - - thumb_func_start sub_38A0 -sub_38A0: @ 0x080038A0 - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r6, r1, #0 - lsls r6, r6, #0x10 - lsrs r6, r6, #0x10 - lsls r5, r5, #0x18 - asrs r5, r5, #0x18 - adds r0, r5, #0 - movs r1, #0x18 - bl __divsi3 - adds r4, r0, #0 - lsls r4, r4, #0x18 - asrs r4, r4, #0x18 - adds r0, r5, #0 - movs r1, #0x18 - bl __modsi3 - lsls r0, r0, #0x18 - ldr r1, _080038E8 @ =0x080ACC60 - adds r6, r6, r1 - lsls r4, r4, #0xb - asrs r0, r0, #0x13 - ldr r1, _080038EC @ =0x03001800 - adds r0, r0, r1 - adds r4, r4, r0 - adds r0, r6, #0 - adds r1, r4, #0 - movs r2, #1 - movs r3, #2 - bl sub_10708 - pop {r4, r5, r6} - pop {r0} - bx r0 - .align 2, 0 -_080038E8: .4byte 0x080ACC60 -_080038EC: .4byte 0x03001800 - - thumb_func_start sub_38F0 -sub_38F0: @ 0x080038F0 - ldr r0, _08003900 @ =0x0202BEEC - movs r2, #0 - ldrsh r1, [r0, r2] - ldr r0, _08003904 @ =0x00001F52 - cmp r1, r0 - bne _08003908 - movs r0, #0 - b _0800394A - .align 2, 0 -_08003900: .4byte 0x0202BEEC -_08003904: .4byte 0x00001F52 -_08003908: - ldr r0, _08003914 @ =0x00003E1A - cmp r1, r0 - bne _08003918 - movs r0, #1 - b _0800394A - .align 2, 0 -_08003914: .4byte 0x00003E1A -_08003918: - ldr r0, _08003924 @ =0x000025AF - cmp r1, r0 - bne _08003928 - movs r0, #2 - b _0800394A - .align 2, 0 -_08003924: .4byte 0x000025AF -_08003928: - ldr r0, _08003934 @ =0x00004A09 - cmp r1, r0 - bne _08003938 - movs r0, #3 - b _0800394A - .align 2, 0 -_08003934: .4byte 0x00004A09 -_08003938: - ldr r0, _08003944 @ =0x00006B12 - cmp r1, r0 - beq _08003948 - movs r0, #1 - rsbs r0, r0, #0 - b _0800394A - .align 2, 0 -_08003944: .4byte 0x00006B12 -_08003948: - movs r0, #4 -_0800394A: - bx lr - - thumb_func_start sub_394C -sub_394C: @ 0x0800394C - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - ldr r4, _080039A0 @ =0x0202A58C - movs r0, #0 - ldrsb r0, [r4, r0] - movs r1, #0xb8 - muls r0, r1, r0 - ldr r2, _080039A4 @ =0x0200B3B8 - adds r7, r0, r2 - ldr r0, _080039A8 @ =0x0202BEC0 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - muls r0, r1, r0 - adds r0, r0, r2 - mov r8, r0 - ldr r0, _080039AC @ =0x0202C584 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - strh r0, [r7] - movs r0, #1 - mov r1, r8 - strh r0, [r1] - ldr r0, _080039B0 @ =0x086A54D8 - movs r1, #0xd - bl LoadSpriteSets - ldrh r0, [r7] - cmp r0, #1 - bne _08003A18 - movs r0, #0 - ldrsb r0, [r4, r0] - cmp r0, #0 - bne _080039B4 - movs r0, #0x78 - strh r0, [r7, #2] - movs r0, #0x64 - b _080039BA - .align 2, 0 -_080039A0: .4byte 0x0202A58C -_080039A4: .4byte 0x0200B3B8 -_080039A8: .4byte 0x0202BEC0 -_080039AC: .4byte 0x0202C584 -_080039B0: .4byte 0x086A54D8 -_080039B4: - movs r0, #0x78 - strh r0, [r7, #2] - movs r0, #0x50 -_080039BA: - strh r0, [r7, #4] - ldr r1, _08003A9C @ =0x086A54D8 - ldr r0, _08003AA0 @ =0x0202A58C - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r6, [r0] - movs r5, #0 - ldrh r2, [r6] - cmp r5, r2 - bge _08003A18 - ldr r0, _08003AA4 @ =gOamBuffer - mov ip, r0 - ldr r1, _08003AA8 @ =0xFFFFFE00 - mov sb, r1 - adds r4, r7, #0 - adds r4, #8 -_080039E0: - ldrh r3, [r4] - lsls r3, r3, #3 - add r3, ip - movs r2, #2 - ldrsh r1, [r4, r2] - movs r2, #2 - ldrsh r0, [r7, r2] - adds r1, r1, r0 - ldr r2, _08003AAC @ =0x000001FF - adds r0, r2, #0 - ands r1, r0 - ldrh r2, [r3, #2] - mov r0, sb - ands r0, r2 - orrs r0, r1 - strh r0, [r3, #2] - ldrh r1, [r4] - lsls r1, r1, #3 - add r1, ip - ldrb r0, [r7, #4] - ldrb r2, [r4, #4] - adds r0, r0, r2 - strb r0, [r1] - adds r4, #8 - adds r5, #1 - ldrh r0, [r6] - cmp r5, r0 - blt _080039E0 -_08003A18: - movs r0, #0x78 - mov r1, r8 - strh r0, [r1, #2] - movs r0, #0x18 - strh r0, [r1, #4] - ldr r1, _08003A9C @ =0x086A54D8 - ldr r0, _08003AB0 @ =0x0202BEC0 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r6, [r0] - movs r5, #0 - ldrh r2, [r6] - cmp r5, r2 - bge _08003A86 - ldr r0, _08003AA4 @ =gOamBuffer - mov ip, r0 - ldr r1, _08003AA8 @ =0xFFFFFE00 - mov sb, r1 - mov r4, r8 - adds r4, #8 -_08003A46: - ldrh r3, [r4] - lsls r3, r3, #3 - add r3, ip - movs r0, #2 - ldrsh r2, [r4, r0] - mov sl, r2 - mov r1, r8 - movs r2, #2 - ldrsh r0, [r1, r2] - mov r2, sl - adds r1, r2, r0 - ldr r2, _08003AAC @ =0x000001FF - adds r0, r2, #0 - ands r1, r0 - ldrh r2, [r3, #2] - mov r0, sb - ands r0, r2 - orrs r0, r1 - strh r0, [r3, #2] - ldrh r1, [r4] - lsls r1, r1, #3 - add r1, ip - mov r2, r8 - ldrb r0, [r2, #4] - ldrb r2, [r4, #4] - adds r0, r0, r2 - strb r0, [r1] - adds r4, #8 - adds r5, #1 - ldrh r0, [r6] - cmp r5, r0 - blt _08003A46 -_08003A86: - movs r0, #0 - strh r0, [r7] - mov r1, r8 - strh r0, [r1] - 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 -_08003A9C: .4byte 0x086A54D8 -_08003AA0: .4byte 0x0202A58C -_08003AA4: .4byte gOamBuffer -_08003AA8: .4byte 0xFFFFFE00 -_08003AAC: .4byte 0x000001FF -_08003AB0: .4byte 0x0202BEC0 - - thumb_func_start sub_3AB4 -sub_3AB4: @ 0x08003AB4 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - ldr r4, _08003B08 @ =0x0202A58C - movs r0, #0 - ldrsb r0, [r4, r0] - movs r1, #0xb8 - muls r0, r1, r0 - ldr r2, _08003B0C @ =0x0200B3B8 - adds r7, r0, r2 - ldr r0, _08003B10 @ =0x0202BEC0 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - muls r0, r1, r0 - adds r0, r0, r2 - mov r8, r0 - ldr r0, _08003B14 @ =0x0202C584 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - strh r0, [r7] - movs r0, #1 - mov r1, r8 - strh r0, [r1] - ldr r0, _08003B18 @ =0x086A54D8 - movs r1, #0xd - bl sub_2414 - ldrh r0, [r7] - cmp r0, #1 - bne _08003B80 - movs r0, #0 - ldrsb r0, [r4, r0] - cmp r0, #0 - bne _08003B1C - movs r0, #0x78 - strh r0, [r7, #2] - movs r0, #0x64 - b _08003B22 - .align 2, 0 -_08003B08: .4byte 0x0202A58C -_08003B0C: .4byte 0x0200B3B8 -_08003B10: .4byte 0x0202BEC0 -_08003B14: .4byte 0x0202C584 -_08003B18: .4byte 0x086A54D8 -_08003B1C: - movs r0, #0x78 - strh r0, [r7, #2] - movs r0, #0x50 -_08003B22: - strh r0, [r7, #4] - ldr r1, _08003C04 @ =0x086A54D8 - ldr r0, _08003C08 @ =0x0202A58C - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r6, [r0] - movs r5, #0 - ldrh r2, [r6] - cmp r5, r2 - bge _08003B80 - ldr r0, _08003C0C @ =gOamBuffer - mov ip, r0 - ldr r1, _08003C10 @ =0xFFFFFE00 - mov sb, r1 - adds r4, r7, #0 - adds r4, #8 -_08003B48: - ldrh r3, [r4] - lsls r3, r3, #3 - add r3, ip - movs r2, #2 - ldrsh r1, [r4, r2] - movs r2, #2 - ldrsh r0, [r7, r2] - adds r1, r1, r0 - ldr r2, _08003C14 @ =0x000001FF - adds r0, r2, #0 - ands r1, r0 - ldrh r2, [r3, #2] - mov r0, sb - ands r0, r2 - orrs r0, r1 - strh r0, [r3, #2] - ldrh r1, [r4] - lsls r1, r1, #3 - add r1, ip - ldrb r0, [r7, #4] - ldrb r2, [r4, #4] - adds r0, r0, r2 - strb r0, [r1] - adds r4, #8 - adds r5, #1 - ldrh r0, [r6] - cmp r5, r0 - blt _08003B48 -_08003B80: - movs r0, #0x78 - mov r1, r8 - strh r0, [r1, #2] - movs r0, #0x18 - strh r0, [r1, #4] - ldr r1, _08003C04 @ =0x086A54D8 - ldr r0, _08003C18 @ =0x0202BEC0 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r6, [r0] - movs r5, #0 - ldrh r2, [r6] - cmp r5, r2 - bge _08003BEE - ldr r0, _08003C0C @ =gOamBuffer - mov ip, r0 - ldr r1, _08003C10 @ =0xFFFFFE00 - mov sb, r1 - mov r4, r8 - adds r4, #8 -_08003BAE: - ldrh r3, [r4] - lsls r3, r3, #3 - add r3, ip - movs r0, #2 - ldrsh r2, [r4, r0] - mov sl, r2 - mov r1, r8 - movs r2, #2 - ldrsh r0, [r1, r2] - mov r2, sl - adds r1, r2, r0 - ldr r2, _08003C14 @ =0x000001FF - adds r0, r2, #0 - ands r1, r0 - ldrh r2, [r3, #2] - mov r0, sb - ands r0, r2 - orrs r0, r1 - strh r0, [r3, #2] - ldrh r1, [r4] - lsls r1, r1, #3 - add r1, ip - mov r2, r8 - ldrb r0, [r2, #4] - ldrb r2, [r4, #4] - adds r0, r0, r2 - strb r0, [r1] - adds r4, #8 - adds r5, #1 - ldrh r0, [r6] - cmp r5, r0 - blt _08003BAE -_08003BEE: - movs r0, #0 - strh r0, [r7] - mov r1, r8 - strh r0, [r1] - 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 -_08003C04: .4byte 0x086A54D8 -_08003C08: .4byte 0x0202A58C -_08003C0C: .4byte gOamBuffer -_08003C10: .4byte 0xFFFFFE00 -_08003C14: .4byte 0x000001FF -_08003C18: .4byte 0x0202BEC0 - - thumb_func_start sub_3C1C -sub_3C1C: @ 0x08003C1C - push {r4, lr} - ldr r0, _08003C64 @ =0x0202A564 - movs r1, #0 - strb r1, [r0] - ldr r0, _08003C68 @ =0x02019C20 - strb r1, [r0] - ldr r0, _08003C6C @ =0x0202ADE8 - strb r1, [r0] - ldr r1, _08003C70 @ =0x0202C5F0 - movs r2, #0 - adds r0, r1, #0 - adds r0, #0xe -_08003C34: - strh r2, [r0] - subs r0, #2 - cmp r0, r1 - bge _08003C34 - movs r1, #0 - ldr r4, _08003C74 @ =0x0201A4D0 - movs r3, #0 -_08003C42: - lsls r0, r1, #1 - adds r2, r1, #1 - movs r1, #7 - adds r0, r0, r4 - adds r0, #0x1c -_08003C4C: - strh r3, [r0] - subs r0, #4 - subs r1, #1 - cmp r1, #0 - bge _08003C4C - adds r1, r2, #0 - cmp r1, #1 - ble _08003C42 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08003C64: .4byte 0x0202A564 -_08003C68: .4byte 0x02019C20 -_08003C6C: .4byte 0x0202ADE8 -_08003C70: .4byte 0x0202C5F0 -_08003C74: .4byte 0x0201A4D0 - - thumb_func_start sub_3C78 -sub_3C78: @ 0x08003C78 - ldr r0, _08003C8C @ =0x02019C20 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _08003C98 - ldr r1, _08003C90 @ =0x0202C5F0 - ldr r0, _08003C94 @ =0x0000DFDF - strh r0, [r1] - b _08003CD0 - .align 2, 0 -_08003C8C: .4byte 0x02019C20 -_08003C90: .4byte 0x0202C5F0 -_08003C94: .4byte 0x0000DFDF -_08003C98: - ldr r3, _08003CB4 @ =0x0202ADE8 - movs r1, #0 - ldrsb r1, [r3, r1] - movs r0, #1 - rsbs r0, r0, #0 - cmp r1, r0 - bne _08003CC0 - ldr r0, _08003CB8 @ =0x0202C5F0 - movs r2, #0 - ldr r1, _08003CBC @ =0x0000CDFE - strh r1, [r0] - strb r2, [r3] - b _08003CD0 - .align 2, 0 -_08003CB4: .4byte 0x0202ADE8 -_08003CB8: .4byte 0x0202C5F0 -_08003CBC: .4byte 0x0000CDFE -_08003CC0: - ldr r1, _08003CD4 @ =0x0202C5F0 - movs r2, #0 - adds r0, r1, #0 - adds r0, #0xe -_08003CC8: - strh r2, [r0] - subs r0, #2 - cmp r0, r1 - bge _08003CC8 -_08003CD0: - movs r0, #0 - bx lr - .align 2, 0 -_08003CD4: .4byte 0x0202C5F0 - - thumb_func_start sub_3CD8 -sub_3CD8: @ 0x08003CD8 - push {r4, lr} - ldr r0, _08003D24 @ =gMain - ldrh r1, [r0, #0x18] - movs r0, #1 - ands r0, r1 - ldr r2, _08003D28 @ =0x0202A564 - cmp r0, #0 - beq _08003D02 - movs r0, #0 - ldrsb r0, [r2, r0] - cmp r0, #0 - bne _08003D0A - movs r0, #1 - rsbs r0, r0, #0 - adds r1, r0, #0 - strb r1, [r2] - ldr r0, _08003D2C @ =0x0202ADE8 - strb r1, [r0] - ldr r1, _08003D30 @ =0x0202A58C - movs r0, #1 - strb r0, [r1] -_08003D02: - movs r0, #0 - ldrsb r0, [r2, r0] - cmp r0, #0 - beq _08003D7A -_08003D0A: - ldr r3, _08003D34 @ =0x02019C20 - movs r0, #0 - ldrsb r0, [r3, r0] - cmp r0, #0 - bne _08003D66 - ldr r1, _08003D38 @ =0x0201A4D0 - ldrh r0, [r1] - ldr r2, _08003D3C @ =0x0000FEDC - cmp r0, r2 - bne _08003D44 - ldr r0, _08003D40 @ =0x0202BEEC - ldrh r1, [r1, #4] - b _08003D4E - .align 2, 0 -_08003D24: .4byte gMain -_08003D28: .4byte 0x0202A564 -_08003D2C: .4byte 0x0202ADE8 -_08003D30: .4byte 0x0202A58C -_08003D34: .4byte 0x02019C20 -_08003D38: .4byte 0x0201A4D0 -_08003D3C: .4byte 0x0000FEDC -_08003D40: .4byte 0x0202BEEC -_08003D44: - ldrh r0, [r1, #2] - cmp r0, r2 - bne _08003D7A - ldr r0, _08003D5C @ =0x0202BEEC - ldrh r1, [r1, #6] -_08003D4E: - strh r1, [r0] - movs r1, #1 - rsbs r1, r1, #0 - adds r0, r1, #0 - strb r0, [r3] - b _08003D7A - .align 2, 0 -_08003D5C: .4byte 0x0202BEEC -_08003D60: - movs r0, #1 - rsbs r0, r0, #0 - b _08003D9C -_08003D66: - movs r1, #0 - ldr r3, _08003DA4 @ =0x0000DFDF - ldr r2, _08003DA8 @ =0x0201A4D0 -_08003D6C: - ldrh r0, [r2] - cmp r0, r3 - beq _08003D60 - adds r2, #2 - adds r1, #1 - cmp r1, #1 - ble _08003D6C -_08003D7A: - movs r1, #0 - ldr r4, _08003DA8 @ =0x0201A4D0 - movs r3, #0 -_08003D80: - lsls r0, r1, #1 - adds r2, r1, #1 - movs r1, #7 - adds r0, r0, r4 - adds r0, #0x1c -_08003D8A: - strh r3, [r0] - subs r0, #4 - subs r1, #1 - cmp r1, #0 - bge _08003D8A - adds r1, r2, #0 - cmp r1, #1 - ble _08003D80 - movs r0, #0 -_08003D9C: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08003DA4: .4byte 0x0000DFDF -_08003DA8: .4byte 0x0201A4D0 diff --git a/asm/rom_9BC.s b/asm/rom_9BC.s index fde21ba..9f97371 100755 --- a/asm/rom_9BC.s +++ b/asm/rom_9BC.s @@ -4,642 +4,6 @@ .text - thumb_func_start sub_EB8 -sub_EB8: @ 0x08000EB8 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - movs r7, #0 - movs r0, #0 - mov sl, r0 - mov sb, r0 - mov r8, r0 - bl VBlankIntrWait - ldr r0, _08000F30 @ =0x040000D4 - ldr r1, _08000F34 @ =0x08058248 - str r1, [r0] - ldr r1, _08000F38 @ =0x06008000 - str r1, [r0, #4] - ldr r1, _08000F3C @ =0x80002000 - str r1, [r0, #8] - ldr r1, [r0, #8] - ldr r1, _08000F40 @ =0x08058048 - str r1, [r0] - movs r1, #0xa0 - lsls r1, r1, #0x13 - str r1, [r0, #4] - ldr r1, _08000F44 @ =0x80000100 - str r1, [r0, #8] - ldr r1, [r0, #8] - ldr r1, _08000F48 @ =0x0805C248 - str r1, [r0] - ldr r2, _08000F4C @ =0x02002008 - str r2, [r0, #4] - ldr r1, _08000F50 @ =0x80000280 - str r1, [r0, #8] - ldr r1, [r0, #8] - str r2, [r0] - movs r1, #0xc0 - lsls r1, r1, #0x13 - str r1, [r0, #4] - ldr r1, _08000F54 @ =0x80000400 - str r1, [r0, #8] - ldr r0, [r0, #8] - ldr r1, _08000F58 @ =0x04000008 - movs r0, #0x88 - strh r0, [r1] - movs r4, #0 - ldr r6, _08000F5C @ =0x04000054 - movs r5, #0x10 -_08000F18: - bl VBlankIntrWait - subs r0, r5, r4 - strh r0, [r6] - adds r4, #1 - cmp r4, #0x10 - bls _08000F18 - ldr r6, _08000F60 @ =0x02002002 - ldr r5, _08000F64 @ =0x02002000 - ldr r4, _08000F30 @ =0x040000D4 - b _08000FA4 - .align 2, 0 -_08000F30: .4byte 0x040000D4 -_08000F34: .4byte 0x08058248 -_08000F38: .4byte 0x06008000 -_08000F3C: .4byte 0x80002000 -_08000F40: .4byte 0x08058048 -_08000F44: .4byte 0x80000100 -_08000F48: .4byte 0x0805C248 -_08000F4C: .4byte 0x02002008 -_08000F50: .4byte 0x80000280 -_08000F54: .4byte 0x80000400 -_08000F58: .4byte 0x04000008 -_08000F5C: .4byte 0x04000054 -_08000F60: .4byte 0x02002002 -_08000F64: .4byte 0x02002000 -_08000F68: - ldrh r0, [r6] - ldrh r1, [r5] - eors r0, r1 - ands r0, r1 - movs r1, #0xf0 - ands r0, r1 - cmp r0, #0xf0 - bne _08000F7C - mov r8, sb - mov sb, r7 -_08000F7C: - mov r1, r8 - cmp r1, #0 - beq _08000F8E - mov r2, sb - subs r0, r2, r1 - cmp r0, #3 - bgt _08000F8E - movs r0, #1 - mov sl, r0 -_08000F8E: - adds r7, #1 - bl VBlankIntrWait - ldr r0, _08000FB0 @ =0x02002008 - str r0, [r4] - movs r0, #0xc0 - lsls r0, r0, #0x13 - str r0, [r4, #4] - ldr r0, _08000FB4 @ =0x84000200 - str r0, [r4, #8] - ldr r0, [r4, #8] -_08000FA4: - cmp r7, #0x1d - bgt _08000FB8 - bl sub_E90 - b _08000F68 - .align 2, 0 -_08000FB0: .4byte 0x02002008 -_08000FB4: .4byte 0x84000200 -_08000FB8: - movs r4, #0 - ldr r5, _08000FD4 @ =0x04000054 -_08000FBC: - bl VBlankIntrWait - strh r4, [r5] - adds r4, #1 - cmp r4, #0x10 - bls _08000FBC - mov r1, sl - cmp r1, #0 - bne _08000FD8 - movs r0, #0 - b _08000FDA - .align 2, 0 -_08000FD4: .4byte 0x04000054 -_08000FD8: - movs r0, #1 -_08000FDA: - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7} - pop {r1} - bx r1 - - thumb_func_start sub_FE8 -sub_FE8: @ 0x08000FE8 - push {r4, r5, r6, lr} - mov r6, r8 - push {r6} - sub sp, #4 - ldr r2, _08001080 @ =0x04000200 - ldrh r0, [r2] - movs r1, #1 - orrs r0, r1 - strh r0, [r2] - ldr r6, _08001084 @ =0x04000004 - ldrh r0, [r6] - movs r1, #8 - orrs r0, r1 - strh r0, [r6] - ldr r1, _08001088 @ =0x04000050 - ldr r3, _0800108C @ =0x00003FBF - adds r0, r3, #0 - strh r0, [r1] - adds r1, #4 - movs r0, #0x10 - strh r0, [r1] - movs r0, #0x80 - lsls r0, r0, #0x13 - mov r8, r0 - movs r1, #0x88 - lsls r1, r1, #5 - adds r0, r1, #0 - mov r3, r8 - strh r0, [r3] - ldr r0, _08001090 @ =0x02019C00 - movs r4, #0 - str r4, [r0] - ldr r0, _08001094 @ =0x02019BEC - str r4, [r0] - ldr r0, _08001098 @ =0x02019BF4 - str r4, [r0] - ldr r0, _0800109C @ =0x02019BF0 - str r4, [r0] - ldr r5, _080010A0 @ =0x02019C0C - str r2, [sp] - bl sub_EB8 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - str r0, [r5] - ldr r2, [sp] - ldrh r1, [r2] - ldr r0, _080010A4 @ =0x0000FFFE - ands r0, r1 - strh r0, [r2] - ldrh r1, [r6] - ldr r0, _080010A8 @ =0x0000FFF7 - ands r0, r1 - strh r0, [r6] - mov r0, r8 - strh r4, [r0] - ldr r1, _080010AC @ =0x02019BFC - movs r0, #1 - rsbs r0, r0, #0 - str r0, [r1] - ldr r0, _080010B0 @ =0x02019BE4 - str r4, [r0] - ldr r0, _080010B4 @ =0x02019BE8 - str r4, [r0] - ldr r0, _080010B8 @ =0x02019BF8 - str r4, [r0] - ldr r1, _080010BC @ =0x02019C08 - movs r0, #2 - str r0, [r1] - add sp, #4 - pop {r3} - mov r8, r3 - pop {r4, r5, r6} - pop {r0} - bx r0 - .align 2, 0 -_08001080: .4byte 0x04000200 -_08001084: .4byte 0x04000004 -_08001088: .4byte 0x04000050 -_0800108C: .4byte 0x00003FBF -_08001090: .4byte 0x02019C00 -_08001094: .4byte 0x02019BEC -_08001098: .4byte 0x02019BF4 -_0800109C: .4byte 0x02019BF0 -_080010A0: .4byte 0x02019C0C -_080010A4: .4byte 0x0000FFFE -_080010A8: .4byte 0x0000FFF7 -_080010AC: .4byte 0x02019BFC -_080010B0: .4byte 0x02019BE4 -_080010B4: .4byte 0x02019BE8 -_080010B8: .4byte 0x02019BF8 -_080010BC: .4byte 0x02019C08 - - thumb_func_start sub_10C0 -sub_10C0: @ 0x080010C0 - push {lr} - ldr r0, _080010F8 @ =0x02019C0C - ldr r2, [r0] - cmp r2, #1 - bne _080010DC - ldr r1, _080010FC @ =0x02003060 - ldr r0, _08001100 @ =sub_13FC + 1 - str r0, [r1] - ldr r0, _08001104 @ =sub_1828 + 1 - str r0, [r1, #4] - ldr r0, _08001108 @ =0x02019BF4 - str r2, [r0] - bl sub_1340 -_080010DC: - ldr r1, _0800110C @ =0x02019BFC - movs r0, #1 - rsbs r0, r0, #0 - str r0, [r1] - ldr r0, _08001110 @ =0x02019BE4 - movs r2, #0 - str r2, [r0] - ldr r1, _08001114 @ =0x02019C08 - movs r0, #2 - str r0, [r1] - ldr r0, _08001118 @ =0x02019C04 - str r2, [r0] - pop {r0} - bx r0 - .align 2, 0 -_080010F8: .4byte 0x02019C0C -_080010FC: .4byte 0x02003060 -_08001100: .4byte sub_13FC + 1 -_08001104: .4byte sub_1828 + 1 -_08001108: .4byte 0x02019BF4 -_0800110C: .4byte 0x02019BFC -_08001110: .4byte 0x02019BE4 -_08001114: .4byte 0x02019C08 -_08001118: .4byte 0x02019C04 - - thumb_func_start sub_111C -sub_111C: @ 0x0800111C - ldr r2, _0800114C @ =0x02019BF4 - movs r1, #0 - ldr r0, _08001150 @ =0x02019C00 - str r1, [r0] - ldr r0, _08001154 @ =0x02019BEC - str r1, [r0] - str r1, [r2] - ldr r0, _08001158 @ =0x02019BF0 - str r1, [r0] - ldr r2, _0800115C @ =0x02019BFC - movs r0, #1 - rsbs r0, r0, #0 - str r0, [r2] - ldr r0, _08001160 @ =0x02019BE4 - str r1, [r0] - ldr r0, _08001164 @ =0x02019BE8 - str r1, [r0] - ldr r0, _08001168 @ =0x02019BF8 - str r1, [r0] - ldr r1, _0800116C @ =0x02019C08 - movs r0, #2 - str r0, [r1] - bx lr - .align 2, 0 -_0800114C: .4byte 0x02019BF4 -_08001150: .4byte 0x02019C00 -_08001154: .4byte 0x02019BEC -_08001158: .4byte 0x02019BF0 -_0800115C: .4byte 0x02019BFC -_08001160: .4byte 0x02019BE4 -_08001164: .4byte 0x02019BE8 -_08001168: .4byte 0x02019BF8 -_0800116C: .4byte 0x02019C08 - - thumb_func_start sub_1170 -sub_1170: @ 0x08001170 - ldr r0, _0800118C @ =0x02019C0C - ldr r0, [r0] - cmp r0, #1 - bne _08001194 - ldr r0, _08001190 @ =0x02019C10 - ldrb r0, [r0] - subs r0, #4 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #1 - bls _08001194 - movs r0, #0 - b _08001196 - .align 2, 0 -_0800118C: .4byte 0x02019C0C -_08001190: .4byte 0x02019C10 -_08001194: - movs r0, #1 -_08001196: - bx lr - - thumb_func_start sub_1198 -sub_1198: @ 0x08001198 - ldr r0, _080011A4 @ =0x02003060 - ldr r1, _080011A8 @ =SerialIntr + 1 - str r1, [r0] - ldr r1, _080011AC @ =Timer3Intr + 1 - str r1, [r0, #4] - bx lr - .align 2, 0 -_080011A4: .4byte 0x02003060 -_080011A8: .4byte SerialIntr + 1 -_080011AC: .4byte Timer3Intr + 1 - - thumb_func_start sub_11B0 -sub_11B0: @ 0x080011B0 - adds r1, r0, #0 - ldr r0, _080011D0 @ =0x0200B134 - adds r0, #0xcd - ldrb r0, [r0] - cmp r0, #0 - beq _080011CE - ldr r0, _080011D4 @ =0x02019BF8 - str r1, [r0] - ldr r0, _080011D8 @ =0x02019BFC - movs r1, #0 - str r1, [r0] - ldr r0, _080011DC @ =0x02019BE4 - str r1, [r0] - ldr r0, _080011E0 @ =0x02019BE8 - str r1, [r0] -_080011CE: - bx lr - .align 2, 0 -_080011D0: .4byte 0x0200B134 -_080011D4: .4byte 0x02019BF8 -_080011D8: .4byte 0x02019BFC -_080011DC: .4byte 0x02019BE4 -_080011E0: .4byte 0x02019BE8 - - thumb_func_start sub_11E4 -sub_11E4: @ 0x080011E4 - ldr r1, _080011EC @ =0x02019C08 - str r0, [r1] - bx lr - .align 2, 0 -_080011EC: .4byte 0x02019C08 - - thumb_func_start sub_11F0 -sub_11F0: @ 0x080011F0 - ldr r1, _080011F8 @ =0x02019C04 - str r0, [r1] - bx lr - .align 2, 0 -_080011F8: .4byte 0x02019C04 - - thumb_func_start sub_11FC -sub_11FC: @ 0x080011FC - push {r4, r5, r6, r7, lr} - ldr r0, _0800121C @ =0x02019C0C - ldr r0, [r0] - cmp r0, #1 - beq _08001208 - b _08001324 -_08001208: - ldr r0, _08001220 @ =0x02019C10 - ldrb r0, [r0] - cmp r0, #5 - bls _08001212 - b _08001324 -_08001212: - lsls r0, r0, #2 - ldr r1, _08001224 @ =_08001228 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0800121C: .4byte 0x02019C0C -_08001220: .4byte 0x02019C10 -_08001224: .4byte _08001228 -_08001228: @ jump table - .4byte _08001324 @ case 0 - .4byte _08001324 @ case 1 - .4byte _08001324 @ case 2 - .4byte _08001240 @ case 3 - .4byte _08001240 @ case 4 - .4byte _08001308 @ case 5 -_08001240: - ldr r0, _080012A8 @ =0x02019BFC - ldr r1, [r0] - mov ip, r0 - cmp r1, #0 - blt _080012FC - ldr r0, _080012AC @ =0x02019C08 - ldr r3, [r0] - cmp r3, #0 - beq _080012FC - ldr r0, _080012B0 @ =0x02019C04 - ldr r2, [r0] - cmp r2, #0 - bne _080012FC - ldr r0, _080012B4 @ =0x02019BE8 - ldr r1, [r0] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - bne _080012DC - ldr r1, _080012B8 @ =0x086A4C44 - ldr r0, _080012BC @ =0x02019BF8 - ldr r0, [r0] - lsls r0, r0, #2 - adds r7, r0, r1 - mov r5, ip - movs r6, #1 - rsbs r6, r6, #0 -_08001276: - ldr r2, [r5] - ldr r0, [r7] - lsls r1, r2, #2 - adds r1, r1, r0 - ldr r3, [r1] - adds r2, #1 - str r2, [r5] - lsls r1, r2, #2 - adds r1, r1, r0 - ldr r4, [r1] - cmp r3, r6 - beq _080012F8 - cmp r3, r6 - bge _080012D0 - ldr r1, _080012C0 @ =0x02019BE4 - ldr r0, [r1] - cmp r0, #0 - beq _080012C4 - subs r0, #1 - str r0, [r1] - cmp r0, #0 - bne _080012C8 - adds r0, r2, #1 - str r0, [r5] - b _08001276 - .align 2, 0 -_080012A8: .4byte 0x02019BFC -_080012AC: .4byte 0x02019C08 -_080012B0: .4byte 0x02019C04 -_080012B4: .4byte 0x02019BE8 -_080012B8: .4byte 0x086A4C44 -_080012BC: .4byte 0x02019BF8 -_080012C0: .4byte 0x02019BE4 -_080012C4: - mvns r0, r3 - str r0, [r1] -_080012C8: - subs r0, r2, #1 - subs r0, r0, r4 - str r0, [r5] - b _08001276 -_080012D0: - ldr r0, _080012D8 @ =0x02019C00 - str r3, [r0] - b _08001324 - .align 2, 0 -_080012D8: .4byte 0x02019C00 -_080012DC: - lsrs r0, r1, #0x1f - adds r0, r1, r0 - asrs r0, r0, #1 - lsls r0, r0, #1 - subs r0, r1, r0 - cmp r0, #1 - bne _08001324 - cmp r3, #1 - bne _08001324 - ldr r0, _080012F4 @ =0x02019C00 - str r2, [r0] - b _08001324 - .align 2, 0 -_080012F4: .4byte 0x02019C00 -_080012F8: - mov r0, ip - str r3, [r0] -_080012FC: - ldr r1, _08001304 @ =0x02019C00 - movs r0, #0 - str r0, [r1] - b _08001324 - .align 2, 0 -_08001304: .4byte 0x02019C00 -_08001308: - ldr r4, _08001334 @ =0x02019BF0 - ldr r0, [r4] - adds r0, #1 - str r0, [r4] - cmp r0, #0x3c - bls _08001324 - ldr r0, _08001338 @ =0x02019BF4 - ldr r0, [r0] - cmp r0, #0 - beq _08001320 - bl sub_1340 -_08001320: - movs r0, #0 - str r0, [r4] -_08001324: - ldr r1, _0800133C @ =0x02019BE8 - ldr r0, [r1] - adds r0, #1 - str r0, [r1] - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_08001334: .4byte 0x02019BF0 -_08001338: .4byte 0x02019BF4 -_0800133C: .4byte 0x02019BE8 - - thumb_func_start sub_1340 -sub_1340: @ 0x08001340 - push {r4, r5, r6, lr} - mov r6, r8 - push {r6} - sub sp, #4 - ldr r6, _080013D0 @ =0x04000208 - movs r3, #0 - strh r3, [r6] - ldr r2, _080013D4 @ =0x04000200 - ldrh r1, [r2] - ldr r0, _080013D8 @ =0x0000FF3F - ands r0, r1 - strh r0, [r2] - movs r0, #1 - mov r8, r0 - strh r0, [r6] - ldr r0, _080013DC @ =0x04000134 - strh r3, [r0] - ldr r4, _080013E0 @ =0x04000128 - ldr r1, _080013E4 @ =0x00001008 - adds r0, r1, #0 - strh r0, [r4] - ldrh r0, [r4] - movs r5, #0x80 - lsls r5, r5, #7 - adds r1, r5, #0 - orrs r0, r1 - strh r0, [r4] - ldr r0, _080013E8 @ =0x04000202 - movs r1, #0xc0 - strh r1, [r0] - strh r3, [r6] - ldrh r0, [r2] - orrs r0, r1 - strh r0, [r2] - mov r0, r8 - strh r0, [r6] - ldrb r1, [r4] - movs r0, #2 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4] - ldr r0, _080013EC @ =0x02019C10 - strb r3, [r0] - movs r5, #0 - str r5, [sp] - ldr r1, _080013F0 @ =0x02002808 - ldr r2, _080013F4 @ =0x05000003 - mov r0, sp - bl CpuSet - strh r5, [r6] - ldrh r0, [r4] - movs r1, #0x80 - orrs r0, r1 - strh r0, [r4] - mov r1, r8 - strh r1, [r6] - ldr r1, _080013F8 @ =0x0400010C - movs r2, #0x80 - lsls r2, r2, #8 - adds r0, r2, #0 - strh r0, [r1] - adds r1, #2 - movs r0, #0xc1 - strh r0, [r1] - add sp, #4 - pop {r3} - mov r8, r3 - pop {r4, r5, r6} - pop {r0} - bx r0 - .align 2, 0 -_080013D0: .4byte 0x04000208 -_080013D4: .4byte 0x04000200 -_080013D8: .4byte 0x0000FF3F -_080013DC: .4byte 0x04000134 -_080013E0: .4byte 0x04000128 -_080013E4: .4byte 0x00001008 -_080013E8: .4byte 0x04000202 -_080013EC: .4byte 0x02019C10 -_080013F0: .4byte 0x02002808 -_080013F4: .4byte 0x05000003 -_080013F8: .4byte 0x0400010C - thumb_func_start sub_13FC sub_13FC: @ 0x080013FC push {r4, r5, r6, r7, lr} @@ -1220,6 +584,8 @@ _08001878: .4byte 0x0400010E _0800187C: .4byte 0x0400010C _08001880: .4byte 0x02019C10 +@ file boundary? + thumb_func_start sub_1884 sub_1884: @ 0x08001884 push {r4, r5, r6, lr} diff --git a/data/rom.s b/data/rom.s index a2bf679..f745968 100755 --- a/data/rom.s +++ b/data/rom.s @@ -652,7 +652,17 @@ gEmptyOamData:: @ 0x08057C46 .4byte 0x00F000F4, 0x00000000 .4byte 0x00F000F4, 0x00000000 -.incbin "baserom.gba", 0x58046, 0x79890 - 0x58046 + .align 2, 0 +gUnknown_08058048:: @ 0x08058058 + .incbin "baserom.gba", 0x58048, 0x200 + +gUnknown_08058248:: @ 0x08058248 + .incbin "baserom.gba", 0x58248, 0x4000 + +gUnknown_0805C248:: @ 0x0805C248 + .incbin "baserom.gba", 0x5C248, 0x500 + +.incbin "baserom.gba", 0x5C748, 0x79890 - 0x5C748 gTitlescreenStateFuncs:: @ 0x08079890 .4byte LoadTitlescreenGraphics @@ -742,17 +752,79 @@ gMainFuncs:: @ 0x086A4AD8 .4byte IntroMain .4byte TitlescreenMain .4byte PinballGameMain - .4byte sub_19028_Main + .4byte IdlePinballGameMain .4byte OptionsMain .4byte PokedexMain .4byte sub_9BC_Main .4byte EReaderMain .4byte HighScoresMain - .4byte sub_CE68_Main + .4byte IdleHighScoresMain .4byte FieldSelectMain - .4byte sub_25A4_Main + .4byte BonusFieldSelectMain + +gUnknown_086A4B08:: @ 0x086A4B08 + .4byte 2, 1, -1 + +gUnknown_086A4B14:: @ 0x086A4B14 + .4byte 2, 0, -1 + +gUnknown_086A4B20:: @ 0x086A4B20 + .4byte 2, 2, 1, -1 + +gUnknown_086A4B30:: @ 0x086A4B30 + .4byte 2, 2, 0, -1 + +gUnknown_086A4B40:: @ 0x086A4B40 + .4byte 2, 1, -21, 2, -1 + +gUnknown_086A4B54:: @ 0x086A4B54 + .4byte 2, 2, 1, 0, -11, 4, -1 + +gUnknown_086A4B70:: @ 0x086A4B70 + .4byte 2, 2, 1, -1 + +gUnknown_086A4B80:: @ 0x086A4B80 + .4byte 2, 2, 2, 1, -1 + +gUnknown_086A4B94:: @ 0x086A4B94 + .4byte 2, 2, 2, 2, 1, -1 + +gUnknown_086A4BAC:: @ 0x086A4BAC + .4byte 2, 2, 2, 2, 2, 1, -1 + +gUnknown_086A4BC8:: @ 0x086A4BC8 + .4byte 1, 1, 2, 2, 2, 2, 1, -1 + +gUnknown_086A4BE8:: @ 0x086A4BE8 + .4byte 2, 2, -10, 2, -1 + +gUnknown_086A4BFC:: @ 0x086A4BFC + .4byte 2, 2, 1, 1, -3, 4, -1 + +gUnknown_086A4C18:: @ 0x086A4C18 + .4byte 2, 2, -5, 2, -1 + +gUnknown_086A4C2C:: @ 0x086A4C2C + .4byte 2, 2, 1, -11, 3, -1 + +gUnknown_086A4C44:: @ 0x086A4C44 + .4byte gUnknown_086A4B08 + .4byte gUnknown_086A4B14 + .4byte gUnknown_086A4B20 + .4byte gUnknown_086A4B30 + .4byte gUnknown_086A4B40 + .4byte gUnknown_086A4B54 + .4byte gUnknown_086A4B70 + .4byte gUnknown_086A4B80 + .4byte gUnknown_086A4B94 + .4byte gUnknown_086A4BAC + .4byte gUnknown_086A4BC8 + .4byte gUnknown_086A4BE8 + .4byte gUnknown_086A4BFC + .4byte gUnknown_086A4C18 + .4byte gUnknown_086A4C2C -.incbin "baserom.gba", 0x6A4B08, 0x6A964C - 0x6A4B08 +.incbin "baserom.gba", 0x6A4C80, 0x6A964C - 0x6A4C80 gUnknown_086A964C:: @ 0x086A964C .2byte 0x0002 diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h index 03faa1a..b5aac20 100755 --- a/include/gba/io_reg.h +++ b/include/gba/io_reg.h @@ -477,6 +477,7 @@ #define REG_TM3CNT_L (*(vu16 *)REG_ADDR_TM3CNT_L) #define REG_TM3CNT_H (*(vu16 *)REG_ADDR_TM3CNT_H) +#define REG_SIOCNT_L (*(vs8 *)REG_ADDR_SIOCNT) #define REG_SIOCNT (*(vu16 *)REG_ADDR_SIOCNT) #define REG_SIODATA8 (*(vu16 *)REG_ADDR_SIODATA8) #define REG_SIODATA32 (*(vu32 *)REG_ADDR_SIODATA32) diff --git a/include/gbplayer.h b/include/gbplayer.h new file mode 100755 index 0000000..94555bd --- /dev/null +++ b/include/gbplayer.h @@ -0,0 +1,8 @@ +#ifndef GUARD_GBPLAYER_H +#define GUARD_GBPLAYER_H + +#include "global.h" + +void InitGameBoyPlayer(void); + +#endif // GUARD_GBPLAYER_H diff --git a/include/main.h b/include/main.h index a0162b7..e27249d 100755 --- a/include/main.h +++ b/include/main.h @@ -78,8 +78,38 @@ struct Main /*0x2F8*/ struct SpriteGroup spriteGroups[NUM_SPRITE_GROUPS]; }; +struct Unk0200B134 +{ + /*0x00*/ u8 filler0[0xCD]; + /*0xCD*/ u8 unkCD; +}; + extern struct Main gMain; +extern struct Unk0200B134 gUnknown_0200B134; extern struct SpriteGroup gUnknown_0200B3B8[]; +extern u32 IntrMain_Buffer[0x200]; +extern u32 IntrMain[]; +extern IntrFunc *gUnknown_0200FB98; +extern IntrFunc *gUnknown_02019BE0; +extern int gUnknown_02019BE4; +extern int gUnknown_02019BE8; +extern int gUnknown_02019BEC; +extern u32 gUnknown_02019BF0; +extern int gUnknown_02019BF4; +extern int gUnknown_02019BF8; +extern int gUnknown_02019BFC; +extern int gUnknown_02019C00; +extern int gUnknown_02019C04; +extern int gUnknown_02019C08; +extern int gGameBoyPlayerEnabled; +extern u8 gUnknown_02019C10; +extern u8 gUnknown_02002008[]; +#define INTR_COUNT 14 +extern IntrFunc gIntrTable[14]; +extern void (*gUnknown_0200FB9C)(void); +extern void (*gUnknown_0200FBA0)(void); +extern void (*gUnknown_02017BD0)(void); +extern void (*gUnknown_02017BD4)(void); extern StateFunc gMainFuncs[]; extern struct OamData gOamBuffer[128]; extern u16 gUnknown_03005C00[0x600]; @@ -90,7 +120,11 @@ void sub_2B4(void); void sub_490(void); void sub_518(void); void sub_578(void); +void sub_CBC(void); +void sub_D10(void); void sub_D74(void); +void SerialIntr(void); +void Timer3Intr(void); s16 LoadSpriteSets(const struct SpriteSet* const*, u16, struct SpriteGroup*); #endif // GUARD_MAIN_H diff --git a/ld_script.txt b/ld_script.txt index 1f1d401..04c2f6a 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -30,9 +30,10 @@ SECTIONS src/util.o(.text); src/rom_850.o(.text); src/main.o(.text); + src/gbplayer.o(.text); asm/rom_9BC.o(.text); - asm/rom_25A4.o(.text); - asm/rom_2C58.o(.text); + asm/bonus_field_select.o(.text); + asm/ereader.o(.text); asm/pokedex.o(.text); asm/field_select.o(.text); asm/intro.o(.text); diff --git a/src/gbplayer.c b/src/gbplayer.c new file mode 100755 index 0000000..3b74f5b --- /dev/null +++ b/src/gbplayer.c @@ -0,0 +1,433 @@ +#include "global.h" +#include "gbplayer.h" +#include "main.h" + +extern void sub_1340(void); +extern void sub_13FC(void); +extern void sub_1828(void); +extern u8 gUnknown_02002808[]; +extern u16 sGbPlayerCurKeys; +extern u16 sGbPlayerPrevKeys; +extern const u8 gUnknown_08058048[]; +extern const u8 gUnknown_08058248[]; +extern const u8 gUnknown_0805C248[]; + +extern const int *gUnknown_086A4C44[]; + +/*static*/ void ReadGbPlayerKeys(void) +{ + u16 keyInput = REG_KEYINPUT ^ KEYS_MASK; + sGbPlayerPrevKeys = sGbPlayerCurKeys; + sGbPlayerCurKeys = keyInput; +} + +#ifdef NONMATCHING +static u8 CheckGameBoyPlayer(void) +{ + u32 i; + u16 *curKeys; + u16 *prevKeys; + u16 newKeys; + int gbPlayerDetected; + int curFrame, lastDetectedFrame, prevDetectedFrame; + + curFrame = 0; + gbPlayerDetected = 0; + lastDetectedFrame = 0; + prevDetectedFrame = 0; + VBlankIntrWait(); + DmaCopy16(3, gUnknown_08058248, (void *)BG_CHAR_ADDR(2), BG_CHAR_SIZE); + DmaCopy16(3, gUnknown_08058048, (void *)BG_PLTT, BG_PLTT_SIZE); + DmaCopy16(3, gUnknown_0805C248, gUnknown_02002008, 0x500); + DmaCopy16(3, gUnknown_02002008, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE); + REG_BG0CNT = BGCNT_256COLOR | BGCNT_CHARBASE(2); + for (i = 0; i <= 16; i++) + { + VBlankIntrWait(); + REG_BLDY = 16 - i; + } + + prevKeys = &sGbPlayerPrevKeys; + curKeys = &sGbPlayerCurKeys; + while (1) + { + if (curFrame < 30) + ReadGbPlayerKeys(); + else + break; + + newKeys = (*prevKeys ^ *curKeys) & *curKeys; + if ((newKeys & DPAD_ANY) == DPAD_ANY) + { + prevDetectedFrame = lastDetectedFrame; + lastDetectedFrame = curFrame; + } + + if (prevDetectedFrame && lastDetectedFrame - prevDetectedFrame < 4) + gbPlayerDetected = 1; + + curFrame++; + VBlankIntrWait(); + DmaCopy32(3, gUnknown_02002008, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE); + } + + for (i = 0; i <= 16; i++) + { + VBlankIntrWait(); + REG_BLDY = i; + } + + if (gbPlayerDetected) + return 1; + else + return 0; +} +#else +NAKED +static u8 CheckGameBoyPlayer(void) +{ + asm_unified("\n\ + push {r4, r5, r6, r7, lr}\n\ + mov r7, sl\n\ + mov r6, sb\n\ + mov r5, r8\n\ + push {r5, r6, r7}\n\ + movs r7, #0\n\ + movs r0, #0\n\ + mov sl, r0\n\ + mov sb, r0\n\ + mov r8, r0\n\ + bl VBlankIntrWait\n\ + ldr r0, _08000F30 @ =0x040000D4\n\ + ldr r1, _08000F34 @ =0x08058248\n\ + str r1, [r0]\n\ + ldr r1, _08000F38 @ =0x06008000\n\ + str r1, [r0, #4]\n\ + ldr r1, _08000F3C @ =0x80002000\n\ + str r1, [r0, #8]\n\ + ldr r1, [r0, #8]\n\ + ldr r1, _08000F40 @ =0x08058048\n\ + str r1, [r0]\n\ + movs r1, #0xa0\n\ + lsls r1, r1, #0x13\n\ + str r1, [r0, #4]\n\ + ldr r1, _08000F44 @ =0x80000100\n\ + str r1, [r0, #8]\n\ + ldr r1, [r0, #8]\n\ + ldr r1, _08000F48 @ =0x0805C248\n\ + str r1, [r0]\n\ + ldr r2, _08000F4C @ =0x02002008\n\ + str r2, [r0, #4]\n\ + ldr r1, _08000F50 @ =0x80000280\n\ + str r1, [r0, #8]\n\ + ldr r1, [r0, #8]\n\ + str r2, [r0]\n\ + movs r1, #0xc0\n\ + lsls r1, r1, #0x13\n\ + str r1, [r0, #4]\n\ + ldr r1, _08000F54 @ =0x80000400\n\ + str r1, [r0, #8]\n\ + ldr r0, [r0, #8]\n\ + ldr r1, _08000F58 @ =0x04000008\n\ + movs r0, #0x88\n\ + strh r0, [r1]\n\ + movs r4, #0\n\ + ldr r6, _08000F5C @ =0x04000054\n\ + movs r5, #0x10\n\ +_08000F18:\n\ + bl VBlankIntrWait\n\ + subs r0, r5, r4\n\ + strh r0, [r6]\n\ + adds r4, #1\n\ + cmp r4, #0x10\n\ + bls _08000F18\n\ + ldr r6, _08000F60 @ =0x02002002\n\ + ldr r5, _08000F64 @ =0x02002000\n\ + ldr r4, _08000F30 @ =0x040000D4\n\ + b _08000FA4\n\ + .align 2, 0\n\ +_08000F30: .4byte 0x040000D4\n\ +_08000F34: .4byte 0x08058248\n\ +_08000F38: .4byte 0x06008000\n\ +_08000F3C: .4byte 0x80002000\n\ +_08000F40: .4byte 0x08058048\n\ +_08000F44: .4byte 0x80000100\n\ +_08000F48: .4byte 0x0805C248\n\ +_08000F4C: .4byte 0x02002008\n\ +_08000F50: .4byte 0x80000280\n\ +_08000F54: .4byte 0x80000400\n\ +_08000F58: .4byte 0x04000008\n\ +_08000F5C: .4byte 0x04000054\n\ +_08000F60: .4byte 0x02002002\n\ +_08000F64: .4byte 0x02002000\n\ +_08000F68:\n\ + ldrh r0, [r6]\n\ + ldrh r1, [r5]\n\ + eors r0, r1\n\ + ands r0, r1\n\ + movs r1, #0xf0\n\ + ands r0, r1\n\ + cmp r0, #0xf0\n\ + bne _08000F7C\n\ + mov r8, sb\n\ + mov sb, r7\n\ +_08000F7C:\n\ + mov r1, r8\n\ + cmp r1, #0\n\ + beq _08000F8E\n\ + mov r2, sb\n\ + subs r0, r2, r1\n\ + cmp r0, #3\n\ + bgt _08000F8E\n\ + movs r0, #1\n\ + mov sl, r0\n\ +_08000F8E:\n\ + adds r7, #1\n\ + bl VBlankIntrWait\n\ + ldr r0, _08000FB0 @ =0x02002008\n\ + str r0, [r4]\n\ + movs r0, #0xc0\n\ + lsls r0, r0, #0x13\n\ + str r0, [r4, #4]\n\ + ldr r0, _08000FB4 @ =0x84000200\n\ + str r0, [r4, #8]\n\ + ldr r0, [r4, #8]\n\ +_08000FA4:\n\ + cmp r7, #0x1d\n\ + bgt _08000FB8\n\ + bl ReadGbPlayerKeys\n\ + b _08000F68\n\ + .align 2, 0\n\ +_08000FB0: .4byte 0x02002008\n\ +_08000FB4: .4byte 0x84000200\n\ +_08000FB8:\n\ + movs r4, #0\n\ + ldr r5, _08000FD4 @ =0x04000054\n\ +_08000FBC:\n\ + bl VBlankIntrWait\n\ + strh r4, [r5]\n\ + adds r4, #1\n\ + cmp r4, #0x10\n\ + bls _08000FBC\n\ + mov r1, sl\n\ + cmp r1, #0\n\ + bne _08000FD8\n\ + movs r0, #0\n\ + b _08000FDA\n\ + .align 2, 0\n\ +_08000FD4: .4byte 0x04000054\n\ +_08000FD8:\n\ + movs r0, #1\n\ +_08000FDA:\n\ + pop {r3, r4, r5}\n\ + mov r8, r3\n\ + mov sb, r4\n\ + mov sl, r5\n\ + pop {r4, r5, r6, r7}\n\ + pop {r1}\n\ + bx r1"); +} +#endif // NONMATCHING + +void InitGameBoyPlayer(void) +{ + REG_IE |= INTR_FLAG_VBLANK; + REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; + REG_BLDCNT = BLDCNT_TGT2_ALL | BLDCNT_EFFECT_LIGHTEN | BLDCNT_TGT1_ALL; + REG_BLDY = 0x10; + REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG0_ON; + gUnknown_02019C00 = 0; + gUnknown_02019BEC = 0; + gUnknown_02019BF4 = 0; + gUnknown_02019BF0 = 0; + gGameBoyPlayerEnabled = CheckGameBoyPlayer(); + REG_IE &= ~INTR_FLAG_VBLANK; + REG_DISPSTAT &= ~DISPSTAT_VBLANK_INTR; + REG_DISPCNT = 0; + gUnknown_02019BFC = -1; + gUnknown_02019BE4 = 0; + gUnknown_02019BE8 = 0; + gUnknown_02019BF8 = 0; + gUnknown_02019C08 = 2; +} + +void sub_10C0(void) +{ + if (gGameBoyPlayerEnabled == 1) + { + gIntrTable[0] = sub_13FC; + gIntrTable[1] = sub_1828; + gUnknown_02019BF4 = 1; + sub_1340(); + } + + gUnknown_02019BFC = -1; + gUnknown_02019BE4 = 0; + gUnknown_02019C08 = 2; + gUnknown_02019C04 = 0; +} + +void sub_111C(void) +{ + // This probably wasn't the original code, but it matches. + int *var0 = &gUnknown_02019BF4; + int val = 0; + gUnknown_02019C00 = val; + gUnknown_02019BEC = val; + *var0 = val; + gUnknown_02019BF0 = val; + gUnknown_02019BFC = -1; + gUnknown_02019BE4 = val; + gUnknown_02019BE8 = val; + gUnknown_02019BF8 = val; + gUnknown_02019C08 = 2; +} + +int sub_1170(void) +{ + if (gGameBoyPlayerEnabled == 1) + { + u8 val = gUnknown_02019C10 - 4; + if (val > 1) + return 0; + } + + return 1; +} + +void sub_1198(void) +{ + gIntrTable[0] = SerialIntr; + gIntrTable[1] = Timer3Intr; +} + +void sub_11B0(int arg0) +{ + if (gUnknown_0200B134.unkCD) + { + gUnknown_02019BF8 = arg0; + gUnknown_02019BFC = 0; + gUnknown_02019BE4 = 0; + gUnknown_02019BE8 = 0; + } +} + +void sub_11E4(int arg0) +{ + gUnknown_02019C08 = arg0; +} + +void sub_11F0(int arg0) +{ + gUnknown_02019C04 = arg0; +} + +void sub_11FC(void) +{ + int var0; + int var1; + + if (gGameBoyPlayerEnabled == 1) + { + switch (gUnknown_02019C10) + { + case 0: + case 1: + case 2: + break; + case 3: + case 4: + if (gUnknown_02019BFC >= 0 && gUnknown_02019C08 && !gUnknown_02019C04) + { + if (!(gUnknown_02019BE8 & 1)) + { + while (1) + { + var0 = gUnknown_086A4C44[gUnknown_02019BF8][gUnknown_02019BFC++]; + var1 = gUnknown_086A4C44[gUnknown_02019BF8][gUnknown_02019BFC]; + if (var0 == -1) + { + gUnknown_02019BFC = var0; + gUnknown_02019C00 = 0; + break; + } + + if (var0 < -1) + { + if (gUnknown_02019BE4) + { + if (--gUnknown_02019BE4 == 0) + { + gUnknown_02019BFC++; + } + else + { + gUnknown_02019BFC--; + gUnknown_02019BFC -= var1; + } + } + else + { + gUnknown_02019BE4 = ~var0; + gUnknown_02019BFC--; + gUnknown_02019BFC -= var1; + } + } + else + { + gUnknown_02019C00 = var0; + break; + } + } + } + else if (gUnknown_02019BE8 % 2 == 1 && gUnknown_02019C08 == 1) + { + gUnknown_02019C00 = 0; + } + } + else + { + gUnknown_02019C00 = 0; + } + break; + case 5: + if (++gUnknown_02019BF0 > 60) + { + if (gUnknown_02019BF4) + sub_1340(); + + gUnknown_02019BF0 = 0; + } + break; + } + } + + gUnknown_02019BE8++; +} + +void sub_1340(void) +{ + REG_IME = 0; + REG_IE &= ~(INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL); + REG_IME = 1; + REG_RCNT = 0; + REG_SIOCNT = SIO_32BIT_MODE | SIO_MULTI_SD; + REG_SIOCNT |= SIO_INTR_ENABLE; + REG_IF = INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL; + REG_IME = 0; + REG_IE |= INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL; + REG_IME = INTR_FLAG_VBLANK; + REG_SIOCNT_L &= -2; + gUnknown_02019C10 = 0; + CpuFill32(0, gUnknown_02002808, 0xC); + REG_IME = 0; + REG_SIOCNT |= SIO_MULTI_BUSY; + REG_IME = INTR_FLAG_VBLANK; + REG_TM3CNT_L = 0x8000; + REG_TM3CNT_H = TIMER_ENABLE | TIMER_INTR_ENABLE | TIMER_64CLK; +} + +// void sub_13FC(void) +// { + +// } diff --git a/src/main.c b/src/main.c index a6f56be..fb287b2 100755 --- a/src/main.c +++ b/src/main.c @@ -1,39 +1,24 @@ #include "global.h" -#include "m4a.h" #include "main.h" +#include "gbplayer.h" +#include "m4a.h" extern void sub_438(void); extern void sub_8BC(void); extern void sub_8FC(void); extern void sub_940(void); -extern void sub_B54(void); -extern void sub_B8C(void); -static void InitIntrHandlers(void); -extern void sub_CBC(void); -extern void sub_D10(void); -extern void sub_D74(void); -extern void sub_FE8(void); -extern void ReadKeys(void); extern void sub_1F4C(void); extern void sub_1F5C(void); extern void sub_1090C(void); extern void sub_52A18(void); -extern u32 IntrMain_Buffer[0x200]; -extern u32 IntrMain[]; -extern IntrFunc *gUnknown_0200FB98; -extern IntrFunc *gUnknown_02019BE0; -extern const IntrFunc gIntrTableTemplate[14]; -#define INTR_COUNT ((int)(sizeof(gIntrTableTemplate)/sizeof(IntrFunc))) -extern IntrFunc gIntrTable[INTR_COUNT]; -extern void (*gUnknown_0200FB9C)(void); -extern void (*gUnknown_0200FBA0)(void); -extern void (*gUnknown_02017BD0)(void); -extern void (*gUnknown_02017BD4)(void); -extern u16 gUnknown_02002000; -extern u16 gUnknown_02002002; +static void sub_B54(void); +static void sub_B8C(void); +static void InitIntrHandlers(void); +static void ReadKeys(void); -extern s16 gUnknown_08055C44[]; +extern const IntrFunc gIntrTableTemplate[14]; +extern const s16 gUnknown_08055C44[]; void AgbMain(void) { @@ -42,7 +27,7 @@ void AgbMain(void) DmaCopy32(3, IntrMain, IntrMain_Buffer, sizeof(IntrMain_Buffer)); INTR_VECTOR = IntrMain_Buffer; sub_B54(); - sub_FE8(); + InitGameBoyPlayer(); while (1) { ReadKeys(); @@ -149,7 +134,7 @@ void IntrDummy(void) { } -void sub_B54(void) +static void sub_B54(void) { REG_WAITCNT = WAITCNT_AGB | WAITCNT_PREFETCH_ENABLE @@ -169,7 +154,7 @@ void sub_B54(void) sub_52A18(); } -void sub_B8C(void) +static void sub_B8C(void) { gMain.mainState = 0; gMain.subState = 0; @@ -275,7 +260,7 @@ s16 sub_C74(u16 arg0) return sub_C24(arg0 + 0x4000); } -void ReadKeys(void) +static void ReadKeys(void) { u16 keyInput = ~REG_KEYINPUT; gMain.newKeys = keyInput & (keyInput ^ gMain.heldKeys); @@ -385,10 +370,3 @@ void sub_DC4(void) m4aSoundMain(); } } - -void sub_E90(void) -{ - u16 keyInput = REG_KEYINPUT ^ KEYS_MASK; - gUnknown_02002002 = gUnknown_02002000; - gUnknown_02002000 = keyInput; -} diff --git a/sym_ewram.txt b/sym_ewram.txt index 4433922..3cfe8b9 100755 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1,12 +1,22 @@ .space 0x2000 -gUnknown_02002000: @ 0x2002000 - .space 2 +sGbPlayerCurKeys: @ 0x2002000 + .space 0x2 -gUnknown_02002002: @ 0x2002002 - .space 2 +sGbPlayerPrevKeys: @ 0x2002002 + .space 0x2 - .space 0x884 + .space 0x4 + +gUnknown_02002008: @ 0x2002008 + .space 0x500 + + .space 0x300 + +gUnknown_02002808: @ 0x2002808 + .space 0xC + + .space 0x74 gTitlescreen: @ 0x2002888 .space 0x18 @@ -42,7 +52,11 @@ gIntrTable: @ 0x2003060 gMain: @ 0x200B0C0 - .space 0x2F8 + .space 0x74 + +gUnknown_0200B134: @ 0x200B134 + + .space 0x284 gUnknown_0200B3B8: @ 0x200B3B8 @@ -75,10 +89,46 @@ gUnknown_02017BE0: @ 0x2017BE0 gUnknown_02019BE0: @ 0x2019BE0 .space 0x4 - .space 0x8D0 +gUnknown_02019BE4: @ 0x2019BE4 + .space 0x4 + +gUnknown_02019BE8: @ 0x2019BE8 + .space 0x4 + +gUnknown_02019BEC: @ 0x2019BEC + .space 0x4 + +gUnknown_02019BF0: @ 0x2019BF0 + .space 0x4 + +gUnknown_02019BF4: @ 0x2019BF4 + .space 0x4 + +gUnknown_02019BF8: @ 0x2019BF8 + .space 0x4 + +gUnknown_02019BFC: @ 0x2019BFC + .space 0x4 + +gUnknown_02019C00: @ 0x2019C00 + .space 0x4 + +gUnknown_02019C04: @ 0x2019C04 + .space 0x4 + +gUnknown_02019C08: @ 0x2019C08 + .space 0x4 + +gGameBoyPlayerEnabled: @ 0x2019C0C + .space 0x4 + +gUnknown_02019C10: @ 0x2019C10 + .space 0x4 + + .space 0x8A0 gAutoDisplayTitlescreenMenu: @ 0x201A4B4 - .space 4 + .space 0x4 .space 0x1CD8 -- cgit v1.2.3