summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2021-07-22 15:56:32 -0400
committerhuderlem <huderlem@gmail.com>2021-07-23 09:32:38 -0500
commit096a979f784945a1c453f2b821205bf46f5a02cb (patch)
tree7d572222eaf981f5332562d7fec4dc49ad7c4230
parenta1ad5cb2d9e463fa2b77d2fc4a7b995a4f7ed5e2 (diff)
Through sub_29C8
-rwxr-xr-xasm/bonus_field_select.s347
-rwxr-xr-xdata/rom.s35
-rwxr-xr-xsrc/bonus_field_select.c91
3 files changed, 119 insertions, 354 deletions
diff --git a/asm/bonus_field_select.s b/asm/bonus_field_select.s
index 7d444d0..e4aaa6c 100755
--- a/asm/bonus_field_select.s
+++ b/asm/bonus_field_select.s
@@ -3,350 +3,3 @@
.syntax unified
.text
-
- 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 @ =gUnknown_0202BEE4
- 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 gUnknown_0202BEE4
-
- 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 @ =gUnknown_0201A4F8
- movs r0, #0xe9
- lsls r0, r0, #3
- adds r3, r1, r0
- ldr r4, _08002C28 @ =gUnknown_0201A4C0
- ldr r5, _08002C2C @ =gUnknown_0201A4F4
- ldr r2, _08002C30 @ =gUnknown_0201A4B0
- mov sb, r2
- ldr r0, _08002C34 @ =gUnknown_086A4C80
- 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 @ =gUnknown_0200B3B8
- 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 @ =gUnknown_086A4CC0
- 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 @ =gUnknown_0202BEE8
- 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 @ =gUnknown_086A4CD8
- ldr r1, _08002C24 @ =gUnknown_0201A4F8
- 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 gUnknown_0201A4F8
-_08002C28: .4byte gUnknown_0201A4C0
-_08002C2C: .4byte gUnknown_0201A4F4
-_08002C30: .4byte gUnknown_0201A4B0
-_08002C34: .4byte gUnknown_086A4C80
-_08002C38: .4byte 0xFFFFFBB0
-_08002C3C: .4byte gUnknown_0200B3B8
-_08002C40: .4byte gUnknown_086A4CC0
-_08002C44: .4byte gOamBuffer
-_08002C48: .4byte 0x000001FF
-_08002C4C: .4byte 0xFFFFFE00
-_08002C50: .4byte gUnknown_0202BEE8
-_08002C54: .4byte gUnknown_086A4CD8
diff --git a/data/rom.s b/data/rom.s
index 4505e1b..7b74afa 100755
--- a/data/rom.s
+++ b/data/rom.s
@@ -2101,18 +2101,45 @@ gUnknown_086A4C44:: @ 0x086A4C44
.4byte gUnknown_086A4C18
.4byte gUnknown_086A4C2C
+ .align 2, 0
gUnknown_086A4C80:: @ 0x086A4C80
- .incbin "baserom.gba", 0x6A4C80, 0x40
+ .4byte 0x086A699E
+ .4byte 0x086A699E
+ .4byte 0x086A699E
+ .4byte 0x086A699E
+ .4byte 0x086A699E
+ .4byte 0x086A699E
+ .4byte 0x086A69C0
+ .4byte 0x086A69D2
+ .4byte 0x086A69E4
+ .4byte 0x086A69F6
+ .4byte 0x086A6A08
+ .4byte 0x086A6A1A
+ .4byte 0x086A6A2C
+ .4byte 0x086A6A56
+ .4byte 0x086A6A80
+ .4byte 0x086A6AAA
gUnknown_086A4CC0:: @ 0x086A4CC0
- .incbin "baserom.gba", 0x6A4CC0, 0x18
+ .2byte 0x20, 0x20
+ .2byte 0x60, 0x20
+ .2byte 0xa0, 0x20
+ .2byte 0x20, 0x58
+ .2byte 0x60, 0x58
+ .2byte 0xa0, 0x58
gUnknown_086A4CD8:: @ 0x086A4CD8
- .incbin "baserom.gba", 0x6A4CD8, 0x18
+ .2byte 0x18, 0x24
+ .2byte 0x58, 0x24
+ .2byte 0x98, 0x24
+ .2byte 0x18, 0x5C
+ .2byte 0x58, 0x5C
+ .2byte 0x98, 0x5C
gUnknown_086A4CF0:: @ 0x086A4CF0
- .incbin "baserom.gba", 0x6A4CF0, 0x8
+ .byte 2, 3, 7, 5, 4, 6
+ .align 2, 0
gUnknown_086A4CF8:: @ 0x086A4CF8
.incbin "baserom.gba", 0x6A4CF8, 0x7E0
diff --git a/src/bonus_field_select.c b/src/bonus_field_select.c
index b60ceec..bb690aa 100755
--- a/src/bonus_field_select.c
+++ b/src/bonus_field_select.c
@@ -2,6 +2,7 @@
#include "m4a.h"
#include "main.h"
#include "functions.h"
+#include "titlescreen.h"
extern void (*const gUnknown_0805C750[])(void);
extern const u16 gUnknown_0807C2E0[];
@@ -49,16 +50,19 @@ void sub_25C4(void)
gMain.subState++;
}
-EWRAM_DATA u16 gUnknown_0201A4F4 = 0;
+EWRAM_DATA s16 gUnknown_0201A4F4 = 0;
EWRAM_DATA s8 gUnknown_0201A4F8 = 0;
-EWRAM_DATA u8 gUnknown_0201A4B0 = 0;
+EWRAM_DATA s8 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 s8 gUnknown_0202BEE4 = 0;
EWRAM_DATA u8 gUnknown_0202BEE8 = 0;
+extern const struct SpriteSet *const gUnknown_086A4C80[16];
+extern const struct Coord16 gUnknown_086A4CC0[];
+extern const struct Coord16 gUnknown_086A4CD8[];
extern const u8 gUnknown_086A4CF0[];
void sub_2710(void)
@@ -173,3 +177,84 @@ void sub_2768(void)
break;
}
}
+
+void sub_2990(void)
+{
+ sub_FE04(sub_29C8);
+ m4aMPlayAllStop();
+ sub_D10();
+ gAutoDisplayTitlescreenMenu = 1;
+ SetMainGameState(gUnknown_0202BEE4);
+}
+
+void sub_29C8(void)
+{
+ struct SpriteGroup * sgptrs[6];
+ struct SpriteGroup * r8;
+ struct SpriteGroup * r10;
+ struct OamDataSimple * simple;
+ s32 i;
+ s32 j;
+
+ gMain.blendControl = BLDCNT_TGT1_BG2 | BLDCNT_TGT1_OBJ | BLDCNT_EFFECT_NONE | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3;
+ gMain.blendAlpha = BLDALPHA_BLEND(8, 8);
+ REG_BLDCNT = gMain.blendControl;
+ REG_BLDALPHA = gMain.blendAlpha;
+ for (i = 0; i < 6; i++)
+ {
+ sgptrs[i] = &gMain.spriteGroups[i];
+ }
+ r10 = &gMain.spriteGroups[6 + gUnknown_0201A4F8];
+ r8 = &gMain.spriteGroups[12 + gUnknown_0201A4C0 * 2 + gUnknown_0201A4F4];
+ for (j = 0; j < 6; j++)
+ {
+ sgptrs[j]->available = 1;
+ }
+ sgptrs[gUnknown_0201A4F8]->available = 0;
+ r10->available = 1;
+ r8->available = gUnknown_0201A4B0;
+ LoadSpriteSets(gUnknown_086A4C80, 16, gUnknown_0200B3B8);
+ for (i = 0; i < 6; i++)
+ {
+ if (sgptrs[i]->available == 1)
+ {
+ sgptrs[i]->baseX = gUnknown_086A4CC0[i].x;
+ sgptrs[i]->baseY = gUnknown_086A4CC0[i].y;
+ for (j = 0; j < 4; j++)
+ {
+ simple = &sgptrs[i]->oam[j];
+ gOamBuffer[simple->oamId].objMode = ST_OAM_OBJ_BLEND;
+ gOamBuffer[simple->oamId].x = simple->xOffset + sgptrs[i]->baseX;
+ gOamBuffer[simple->oamId].y = simple->yOffset + sgptrs[i]->baseY;
+ }
+ }
+ }
+ r10->baseX = 0x58;
+ r10->baseY = 0x85;
+ for (j = 0; j < 2; j++)
+ {
+ simple = &r10->oam[j];
+ gOamBuffer[simple->oamId].objMode = ST_OAM_OBJ_NORMAL;
+ gOamBuffer[simple->oamId].paletteNum = gUnknown_0202BEE8;
+ gOamBuffer[simple->oamId].x = simple->xOffset + r10->baseX;
+ gOamBuffer[simple->oamId].y = simple->yOffset + r10->baseY;
+ }
+ if (r8->available == 1)
+ {
+ r8->baseX = gUnknown_086A4CD8[gUnknown_0201A4F8].x;
+ r8->baseY = gUnknown_086A4CD8[gUnknown_0201A4F8].y;
+ for (j = 0; j < 5; j++)
+ {
+ simple = &r8->oam[j];
+ gOamBuffer[simple->oamId].objMode = ST_OAM_OBJ_NORMAL;
+ gOamBuffer[simple->oamId].x = simple->xOffset + r8->baseX;
+ gOamBuffer[simple->oamId].y = simple->yOffset + r8->baseY;
+ }
+ }
+ for (j = 0; j < 6; j++)
+ {
+ sgptrs[j]->available = 0;
+ }
+ r10->available = 0;
+ r8->available = 0;
+}