diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2021-07-22 15:56:24 -0400 |
---|---|---|
committer | huderlem <huderlem@gmail.com> | 2021-07-23 09:32:38 -0500 |
commit | a1ad5cb2d9e463fa2b77d2fc4a7b995a4f7ed5e2 (patch) | |
tree | 60db8b836e6112286714979500f359091f61784d | |
parent | 3a4437a42d67ea0ea606e5f0a751b61a32881d8e (diff) |
through sub_2768
-rwxr-xr-x | asm/bonus_field_select.s | 304 | ||||
-rwxr-xr-x | asm/crt0.s (renamed from asm/start.s) | 0 | ||||
-rwxr-xr-x | asmdiff.sh | 2 | ||||
-rwxr-xr-x | ld_script.txt | 2 | ||||
-rwxr-xr-x | src/bonus_field_select.c | 125 |
5 files changed, 127 insertions, 306 deletions
diff --git a/asm/bonus_field_select.s b/asm/bonus_field_select.s index a000bab..7d444d0 100755 --- a/asm/bonus_field_select.s +++ b/asm/bonus_field_select.s @@ -4,310 +4,6 @@ .text - thumb_func_start sub_2710 -sub_2710: @ 0x08002710 - ldr r0, _08002740 @ =gUnknown_0201A4F8 - movs r1, #0 - strb r1, [r0] - ldr r0, _08002744 @ =gUnknown_0202BED0 - strb r1, [r0] - ldr r0, _08002748 @ =gUnknown_0202A560 - movs r1, #0 - strh r1, [r0] - ldr r0, _0800274C @ =gUnknown_0202BE1C - strh r1, [r0] - ldr r0, _08002750 @ =gUnknown_0202BEE8 - strb r1, [r0] - ldr r0, _08002754 @ =gUnknown_0201A4F4 - strh r1, [r0] - ldr r0, _08002758 @ =gUnknown_0201A4B0 - strb r1, [r0] - ldr r0, _0800275C @ =gUnknown_0202BEE4 - strb r1, [r0] - ldr r1, _08002760 @ =gUnknown_0201A4C0 - ldr r0, _08002764 @ =gMain+0x74 - adds r0, #0xce - ldrb r0, [r0] - strb r0, [r1] - bx lr - .align 2, 0 -_08002740: .4byte gUnknown_0201A4F8 -_08002744: .4byte gUnknown_0202BED0 -_08002748: .4byte gUnknown_0202A560 -_0800274C: .4byte gUnknown_0202BE1C -_08002750: .4byte gUnknown_0202BEE8 -_08002754: .4byte gUnknown_0201A4F4 -_08002758: .4byte gUnknown_0201A4B0 -_0800275C: .4byte gUnknown_0202BEE4 -_08002760: .4byte gUnknown_0201A4C0 -_08002764: .4byte gMain+0x74 - - thumb_func_start sub_2768 -sub_2768: @ 0x08002768 - push {r4, r5, r6, lr} - bl sub_29C8 - ldr r6, _08002784 @ =gUnknown_0202BED0 - 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 gUnknown_0202BED0 -_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 @ =gUnknown_0201A4F8 - 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 gUnknown_0201A4F8 -_080027C0: - movs r0, #0x10 - ands r0, r1 - cmp r0, #0 - beq _080027E2 - ldr r4, _08002804 @ =gUnknown_0201A4F8 - 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 @ =gUnknown_0201A4F8 - 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 gUnknown_0201A4F8 -_08002808: .4byte gMain -_0800280C: - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0800282A - ldr r4, _0800286C @ =gUnknown_0201A4F8 - 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 @ =gUnknown_0202BED0 - strb r5, [r0] - ldr r0, _08002878 @ =gUnknown_0201A4B0 - strb r5, [r0] - ldr r1, _0800287C @ =gUnknown_0202A560 - 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 @ =gUnknown_0202BEE4 - strb r5, [r0] - ldrb r0, [r4, #3] - adds r0, #1 - strb r0, [r4, #3] - b _0800296E - .align 2, 0 -_0800286C: .4byte gUnknown_0201A4F8 -_08002870: .4byte gMain -_08002874: .4byte gUnknown_0202BED0 -_08002878: .4byte gUnknown_0201A4B0 -_0800287C: .4byte gUnknown_0202A560 -_08002880: .4byte gUnknown_0202BEE4 -_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 @ =gUnknown_0201A4C0 - 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 @ =gUnknown_0202A560 - movs r1, #0 - strh r1, [r0] - ldr r0, _08002910 @ =gUnknown_0202BE1C - strh r1, [r0] - ldr r0, _08002908 @ =gUnknown_0201A4C0 - ldrb r0, [r0] - movs r2, #0xa1 - lsls r2, r2, #1 - adds r1, r5, r2 - strb r0, [r1] - bl SaveFile_WriteToSram - 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 @ =gUnknown_0201A4B0 - movs r0, #0 - strb r0, [r1] - strb r0, [r6] -_080028E4: - ldr r1, _0800290C @ =gUnknown_0202A560 - 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 @ =gUnknown_0201A4F4 - ldrh r1, [r2] - movs r0, #1 - subs r0, r0, r1 - strh r0, [r2] - b _0800296E - .align 2, 0 -_08002904: .4byte gMain -_08002908: .4byte gUnknown_0201A4C0 -_0800290C: .4byte gUnknown_0202A560 -_08002910: .4byte gUnknown_0202BE1C -_08002914: .4byte gUnknown_0201A4B0 -_08002918: .4byte gUnknown_0201A4F4 -_0800291C: - ldr r1, _08002974 @ =gUnknown_0202A560 - 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 @ =gUnknown_0202BEE8 - ldrb r1, [r2] - movs r0, #2 - subs r0, r0, r1 - strb r0, [r2] - ldr r1, _0800297C @ =gUnknown_0202BE1C - 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 @ =gUnknown_086A4CF0 - ldr r0, _08002988 @ =gUnknown_0201A4F8 - 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 @ =gUnknown_0202BEE4 - 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 gUnknown_0202A560 -_08002978: .4byte gUnknown_0202BEE8 -_0800297C: .4byte gUnknown_0202BE1C -_08002980: .4byte gMain -_08002984: .4byte gUnknown_086A4CF0 -_08002988: .4byte gUnknown_0201A4F8 -_0800298C: .4byte gUnknown_0202BEE4 - thumb_func_start sub_2990 sub_2990: @ 0x08002990 push {lr} @@ -4,4 +4,4 @@ OBJDUMP="$DEVKITARM/bin/arm-none-eabi-objdump -D -bbinary -marmv4t -Mforce-thumb OPTIONS="--start-address=$(($1)) --stop-address=$(($1 + $2))" $OBJDUMP $OPTIONS baserom.gba > baserom.dump $OBJDUMP $OPTIONS pokepinballrs.gba > pokepinballrs.dump -diff baserom.dump pokepinballrs.dump +diff -u baserom.dump pokepinballrs.dump diff --git a/ld_script.txt b/ld_script.txt index d7379c3..21ac6d9 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -28,7 +28,7 @@ SECTIONS . = 0x08000000; .text : { - asm/start.o(.text); + asm/crt0.o(.text); src/util.o(.text); src/rom_850.o(.text); src/main.o(.text); diff --git a/src/bonus_field_select.c b/src/bonus_field_select.c index 6bc2b89..b60ceec 100755 --- a/src/bonus_field_select.c +++ b/src/bonus_field_select.c @@ -48,3 +48,128 @@ void sub_25C4(void) gMain.subState++; } + +EWRAM_DATA u16 gUnknown_0201A4F4 = 0; +EWRAM_DATA s8 gUnknown_0201A4F8 = 0; +EWRAM_DATA u8 gUnknown_0201A4B0 = 0; +EWRAM_DATA u8 gUnknown_0201A4C0 = 0; +EWRAM_DATA s16 gUnknown_0202A560 = 0; +EWRAM_DATA s16 gUnknown_0202BE1C = 0; +EWRAM_DATA s8 gUnknown_0202BED0 = 0; +EWRAM_DATA u8 gUnknown_0202BEE4 = 0; +EWRAM_DATA u8 gUnknown_0202BEE8 = 0; + +extern const u8 gUnknown_086A4CF0[]; + +void sub_2710(void) +{ + gUnknown_0201A4F8 = 0; + gUnknown_0202BED0 = 0; + gUnknown_0202A560 = 0; + gUnknown_0202BE1C = 0; + gUnknown_0202BEE8 = 0; + gUnknown_0201A4F4 = 0; + gUnknown_0201A4B0 = 0; + gUnknown_0202BEE4 = 0; + gUnknown_0201A4C0 = gMain_saveData.ballSpeed; +} + +void sub_2768(void) +{ + sub_29C8(); + switch (gUnknown_0202BED0) + { + case 0: + if (gMain.newKeys & DPAD_LEFT) + { + if (gUnknown_0201A4F8 != 0 && gUnknown_0201A4F8 != 3) + { + m4aSongNumStart(0x6D); + gUnknown_0201A4F8--; + } + } + else if (gMain.newKeys & DPAD_RIGHT) + { + if (gUnknown_0201A4F8 != 2 && gUnknown_0201A4F8 != 5) + { + m4aSongNumStart(0x6D); + gUnknown_0201A4F8++; + } + } + if (gMain.newKeys & DPAD_UP) + { + if (gUnknown_0201A4F8 > 2) + { + m4aSongNumStart(0x6D); + gUnknown_0201A4F8 -= 3; + } + } + else if (gMain.newKeys & DPAD_DOWN) + { + if (gUnknown_0201A4F8 < 3) + { + m4aSongNumStart(0x6D); + gUnknown_0201A4F8 += 3; + } + } + if (gMain.newKeys & A_BUTTON) + { + m4aSongNumStart(0x65); + gUnknown_0202BED0 = 1; + gUnknown_0201A4B0 = 1; + gUnknown_0202A560 = 0; + } + if (gMain.newKeys & B_BUTTON) + { + m4aSongNumStart(0x66); + gUnknown_0202BEE4 = 1; + gMain.subState++; + } + break; + case 1: + if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) + { + m4aSongNumStart(0x67); + gUnknown_0201A4C0 = 1 - gUnknown_0201A4C0; + } + if (gMain.newKeys & A_BUTTON) + { + m4aSongNumStart(0x65); + gUnknown_0202A560 = 0; + gUnknown_0202BE1C = 0; + gMain.saveData.ballSpeed = gUnknown_0201A4C0; + SaveFile_WriteToSram(); + gUnknown_0202BED0 = 2; + } + if (gMain.newKeys & B_BUTTON) + { + m4aSongNumStart(0x66); + gUnknown_0201A4B0 = 0; + gUnknown_0202BED0 = 0; + } + gUnknown_0202A560++; + if (gUnknown_0202A560 > 4) + { + gUnknown_0202A560 = 0; + gUnknown_0201A4F4 = 1 - gUnknown_0201A4F4; + } + break; + case 2: + gUnknown_0202A560++; + if (gUnknown_0202A560 > 5) + { + gUnknown_0202A560 = 0; + gUnknown_0202BEE8 = 2 - gUnknown_0202BEE8; + gUnknown_0202BE1C++; + if (gUnknown_0202BE1C > 5) + { + gMain.unkD = 0; + gMain.unk5 = gMain.unk4 = gUnknown_086A4CF0[gUnknown_0201A4F8]; + gMain.unk6 = 1; + gUnknown_0202BEE4 = 2; + gMain.subState++; + } + } + break; + } +} |