Match sub_080A62E0

This commit is contained in:
Tal Hayon 2022-04-07 15:02:54 +03:00
parent d4e8e23028
commit c6efed628b
2 changed files with 47 additions and 86 deletions

View File

@ -1,81 +0,0 @@
.syntax unified
push {r4, lr}
bl sub_080A51F4
cmp r0, #0
beq _080A6372
ldr r0, _080A6310 @ =gMenu
ldrb r3, [r0, #3]
lsls r1, r3, #3
ldr r0, _080A6314 @ =gUnk_08128DE8
adds r1, r1, r0
movs r4, #1
rsbs r4, r4, #0
ldr r0, _080A6318 @ =gInput
ldrh r2, [r0, #2]
cmp r2, #0x20
beq _080A634E
cmp r2, #0x20
bgt _080A631C
cmp r2, #1
beq _080A6326
cmp r2, #0x10
beq _080A6354
b _080A635A
.align 2, 0
_080A6310: .4byte gMenu
_080A6314: .4byte gUnk_08128DE8
_080A6318: .4byte gInput
_080A631C:
cmp r2, #0x40
beq _080A6344
cmp r2, #0x80
beq _080A634A
b _080A635A
_080A6326:
ldr r0, _080A6340 @ =gSave
lsls r2, r3
ldr r0, [r0, #0x40]
ands r0, r2
cmp r0, #0
beq _080A635A
movs r0, #0x6a
bl SoundReq
movs r0, #6
bl sub_080A4E84
b _080A635A
.align 2, 0
_080A6340: .4byte gSave
_080A6344:
ldrb r0, [r1]
lsls r0, r0, #0x1b
b _080A6358
_080A634A:
ldrh r0, [r1]
b _080A6356
_080A634E:
ldrb r0, [r1, #2]
lsls r0, r0, #0x1b
b _080A6358
_080A6354:
ldrh r0, [r1, #2]
_080A6356:
lsls r0, r0, #0x16
_080A6358:
lsrs r4, r0, #0x1b
_080A635A:
cmp r4, #0
blt _080A6368
ldr r0, _080A6374 @ =gMenu
strb r4, [r0, #3]
movs r0, #0x69
bl SoundReq
_080A6368:
ldr r0, _080A6374 @ =gMenu
ldrb r0, [r0, #3]
movs r1, #0
bl sub_080A6FB4
_080A6372:
pop {r4, pc}
.align 2, 0
_080A6374: .4byte gMenu
.syntax divided

View File

@ -108,10 +108,14 @@ typedef struct {
extern const struct_gUnk_08128E94 gUnk_08128E94[];
typedef struct {
u8 unk0;
u8 unk1;
u8 unk2;
u8 unk3;
u8 unk00 : 5;
u8 unk05 : 5;
u8 unk10 : 6;
} PACKED gUnk_08128DE8_struct_2;
typedef struct {
gUnk_08128DE8_struct_2 unk0;
gUnk_08128DE8_struct_2 unk2;
u8 unk4;
u8 unk5;
u8 unk6;
@ -449,7 +453,45 @@ void sub_080A6290(void) {
gMenu.menuType = 1;
}
ASM_FUNC("asm/non_matching/subtask2/sub_080A62E0.inc", void sub_080A62E0())
void sub_080A62E0(void) {
u32 uVar1;
int windcrest;
gUnk_08128DE8_struct* ptr;
if (!sub_080A51F4()) {
return;
}
ptr = &gUnk_08128DE8[gMenu.field_0x3];
windcrest = -1;
switch (gInput.newKeys) {
case A_BUTTON:
if ((gSave.windcrests & (1 << gMenu.field_0x3)) != 0) {
SoundReq(SFX_TEXTBOX_SELECT);
sub_080A4E84(6);
windcrest = -1;
}
break;
case DPAD_UP:
windcrest = ptr->unk0.unk00;
break;
case DPAD_DOWN:
windcrest = ptr->unk0.unk05;
break;
case DPAD_LEFT:
windcrest = ptr->unk2.unk00;
break;
case DPAD_RIGHT:
windcrest = ptr->unk2.unk05;
break;
}
if (-1 < windcrest) {
gMenu.field_0x3 = windcrest;
SoundReq(SFX_TEXTBOX_CHOICE);
}
sub_080A6FB4(gMenu.field_0x3, 0);
}
void sub_080A6378(void) {
u32 frameIndex;