summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xasm/bonus_field_select.s304
-rwxr-xr-xasm/crt0.s (renamed from asm/start.s)0
-rwxr-xr-xasmdiff.sh2
-rwxr-xr-xld_script.txt2
-rwxr-xr-xsrc/bonus_field_select.c125
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}
diff --git a/asm/start.s b/asm/crt0.s
index ab124f4..ab124f4 100755
--- a/asm/start.s
+++ b/asm/crt0.s
diff --git a/asmdiff.sh b/asmdiff.sh
index df85c50..9441660 100755
--- a/asmdiff.sh
+++ b/asmdiff.sh
@@ -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;
+ }
+}