diff options
author | Marcus Huderle <huderlem@gmail.com> | 2020-07-05 20:55:30 -0500 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2020-07-05 20:55:30 -0500 |
commit | 9b8813a72e9d9a6ed23eb1c389ed9a3e39a49a6e (patch) | |
tree | cd1a69535f1211e8888f8b5d2f29bdefdb3b1d0e | |
parent | 2453ee7a97d83b12c5751cc27b523814488e0924 (diff) |
Start decompiling bonus_field_select.c
-rwxr-xr-x | asm/bonus_field_select.s | 154 | ||||
-rw-r--r-- | include/functions.h | 1 | ||||
-rwxr-xr-x | ld_script.txt | 1 | ||||
-rwxr-xr-x | src/bonus_field_select.c | 50 |
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++; +} |