summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2020-07-05 20:55:30 -0500
committerMarcus Huderle <huderlem@gmail.com>2020-07-05 20:55:30 -0500
commit9b8813a72e9d9a6ed23eb1c389ed9a3e39a49a6e (patch)
treecd1a69535f1211e8888f8b5d2f29bdefdb3b1d0e
parent2453ee7a97d83b12c5751cc27b523814488e0924 (diff)
Start decompiling bonus_field_select.c
-rwxr-xr-xasm/bonus_field_select.s154
-rw-r--r--include/functions.h1
-rwxr-xr-xld_script.txt1
-rwxr-xr-xsrc/bonus_field_select.c50
4 files changed, 51 insertions, 155 deletions
diff --git a/asm/bonus_field_select.s b/asm/bonus_field_select.s
index f1b177d..a000bab 100755
--- a/asm/bonus_field_select.s
+++ b/asm/bonus_field_select.s
@@ -4,160 +4,6 @@
.text
- thumb_func_start BonusFieldSelectMain
-BonusFieldSelectMain: @ 0x080025A4
- push {lr}
- ldr r1, _080025BC @ =gUnknown_0805C750
- 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 gUnknown_0805C750
-_080025C0: .4byte gMain
-
- thumb_func_start sub_25C4
-sub_25C4: @ 0x080025C4
- push {r4, lr}
- bl ResetSomeGraphicsRelatedStuff
- 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 @ =gUnknown_0807C2E0
- 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 @ =gUnknown_0807C4E0
- 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 @ =gUnknown_0807AAE0
- 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 @ =gUnknown_0807B2E0
- str r1, [r0]
- ldr r1, _080026E8 @ =0x06000800
- str r1, [r0, #4]
- str r2, [r0, #8]
- ldr r1, [r0, #8]
- ldr r1, _080026EC @ =gUnknown_0807BAE0
- 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 gUnknown_0807C2E0
-_080026C0: .4byte 0x80000100
-_080026C4: .4byte gFieldSelectWindow_Gfx
-_080026C8: .4byte 0x06004000
-_080026CC: .4byte 0x80002000
-_080026D0: .4byte gUnknown_0807C4E0
-_080026D4: .4byte 0x06008000
-_080026D8: .4byte 0x80000C00
-_080026DC: .4byte gUnknown_0807AAE0
-_080026E0: .4byte 0x80000400
-_080026E4: .4byte gUnknown_0807B2E0
-_080026E8: .4byte 0x06000800
-_080026EC: .4byte gUnknown_0807BAE0
-_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 @ =gUnknown_0201A4F8
diff --git a/include/functions.h b/include/functions.h
index 9179ff2..e5b0525 100644
--- a/include/functions.h
+++ b/include/functions.h
@@ -29,7 +29,6 @@ u32 Random(void);
s16 sub_C24(u16 arg0);
s16 sub_C24(u16 arg0);
s16 sub_C74(u16 arg0);
-void sub_CBC(void);
void sub_D10(void);
void MainLoopIter(void);
void DefaultMainCallback(void);
diff --git a/ld_script.txt b/ld_script.txt
index 985ec21..d7379c3 100755
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -34,6 +34,7 @@ SECTIONS
src/main.o(.text);
src/gbplayer.o(.text);
asm/rom_9BC.o(.text);
+ src/bonus_field_select.o(.text);
asm/bonus_field_select.o(.text);
asm/ereader.o(.text);
asm/pokedex.o(.text);
diff --git a/src/bonus_field_select.c b/src/bonus_field_select.c
new file mode 100755
index 0000000..6bc2b89
--- /dev/null
+++ b/src/bonus_field_select.c
@@ -0,0 +1,50 @@
+#include "global.h"
+#include "m4a.h"
+#include "main.h"
+#include "functions.h"
+
+extern void (*const gUnknown_0805C750[])(void);
+extern const u16 gUnknown_0807C2E0[];
+extern const u8 gUnknown_0807C4E0[];
+extern const u8 gUnknown_0807AAE0[];
+extern const u8 gUnknown_0807B2E0[];
+extern const u8 gUnknown_0807BAE0[];
+
+void sub_2710(void);
+void sub_29C8(void);
+
+void BonusFieldSelectMain(void)
+{
+ gUnknown_0805C750[gMain.subState]();
+}
+
+void sub_25C4(void)
+{
+ ResetSomeGraphicsRelatedStuff();
+
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_FORCED_BLANK | DISPCNT_OBJ_ON;
+ REG_BG0CNT = BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(0) | BGCNT_PRIORITY(1) | BGCNT_TXT256x256;
+ REG_DISPCNT |= DISPCNT_BG0_ON;
+ REG_BG1CNT = BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(1) | BGCNT_PRIORITY(2) | BGCNT_TXT256x256;
+ REG_DISPCNT |= DISPCNT_BG1_ON;
+ REG_BG2CNT = BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(2) | BGCNT_PRIORITY(3) | BGCNT_TXT256x256;
+ REG_DISPCNT |= DISPCNT_BG2_ON;
+
+ gMain.unk16 = REG_DISPCNT;
+
+ DmaCopy16(3, gUnknown_0807C2E0, (void *)PLTT, 0x200);
+ DmaCopy16(3, gFieldSelectWindow_Gfx, (void *)(VRAM + 0x4000), 0x4000);
+ DmaCopy16(3, gUnknown_0807C4E0, (void *)(VRAM + 0x8000), 0x1800);
+ DmaCopy16(3, gUnknown_0807AAE0, (void *)VRAM, 0x800);
+ DmaCopy16(3, gUnknown_0807B2E0, (void *)(VRAM + 0x800), 0x800);
+ DmaCopy16(3, gUnknown_0807BAE0, (void *)(VRAM + 0x1000), 0x800);
+ DmaCopy16(3, gFieldSelectSpritePals, (void *)(PLTT + 0x200), 0x60);
+ DmaCopy16(3, gFieldSelectSpriteGfx, (void *)(VRAM + 0x10000), 0x4020);
+
+ sub_CBC();
+ sub_2710();
+ sub_FD5C(sub_29C8);
+ m4aSongNumStart(0x3);
+
+ gMain.subState++;
+}