Match sub_080A56A0

This commit is contained in:
Tal Hayon
2022-04-11 19:45:48 +03:00
parent 157990d545
commit 6c9d4969aa
5 changed files with 104 additions and 401 deletions
@@ -1,117 +0,0 @@
.syntax unified
push {r4, r5, lr}
ldr r0, _080A7468 @ =gFadeControl
ldrb r0, [r0]
cmp r0, #0
beq _080A73B4
b _080A74BC
_080A73B4:
bl DeleteAllEntities
bl sub_0805E974
ldr r1, _080A746C @ =gCurrentRoomProperties
ldr r5, _080A7470 @ =gUI
ldr r0, [r5, #0x10]
str r0, [r1]
ldr r0, _080A7474 @ =gPlayerState
ldrb r1, [r5, #0xc]
adds r0, #0x8b
strb r1, [r0]
ldr r1, _080A7478 @ =gMapBottom
ldr r0, [r5, #0x14]
str r0, [r1]
ldr r1, _080A747C @ =gMapTop
ldr r0, [r5, #0x18]
str r0, [r1]
movs r1, #0xea
lsls r1, r1, #2
adds r0, r5, r1
ldr r1, _080A7480 @ =gActiveScriptInfo
movs r2, #0xc
bl MemCopy
movs r1, #0xaa
lsls r1, r1, #2
adds r0, r5, r1
ldr r1, _080A7484 @ =gUnk_03000420
movs r2, #0x80
lsls r2, r2, #1
bl MemCopy
movs r1, #0x9a
lsls r1, r1, #2
adds r0, r5, r1
ldr r1, _080A7488 @ =gPaletteList
movs r2, #0x40
bl MemCopy
adds r0, r5, #0
adds r0, #0x54
ldr r1, _080A748C @ =gGFXSlots
movs r2, #0x85
lsls r2, r2, #2
bl MemCopy
adds r0, r5, #0
adds r0, #0x1c
ldr r4, _080A7490 @ =gRoomControls
adds r1, r4, #0
movs r2, #0x38
bl MemCopy
ldr r0, _080A7494 @ =gUnk_03001020
ldr r1, _080A7498 @ =gScreen
movs r2, #0x7c
bl MemCopy
ldrb r0, [r4, #4]
bl GetFlagBankOffset
ldr r4, _080A749C @ =gArea
strh r0, [r4, #4]
bl GetCurrentRoomInfo
ldr r1, _080A74A0 @ =0x0000085C
adds r4, r4, r1
str r0, [r4]
ldrb r0, [r5, #6]
bl RestoreGameTask
ldrb r1, [r5, #0xd]
rsbs r0, r1, #0
orrs r0, r1
lsrs r0, r0, #0x1f
bl sub_0801D000
bl sub_080A74F4
ldrh r1, [r5, #8]
ldr r0, _080A74A4 @ =0x0000FFFF
cmp r1, r0
beq _080A74A8
adds r0, r1, #0
ldrh r1, [r5, #0xa]
bl SetFade
b _080A74AE
.align 2, 0
_080A7468: .4byte gFadeControl
_080A746C: .4byte gCurrentRoomProperties
_080A7470: .4byte gUI
_080A7474: .4byte gPlayerState
_080A7478: .4byte gMapBottom
_080A747C: .4byte gMapTop
_080A7480: .4byte gActiveScriptInfo
_080A7484: .4byte gUnk_03000420
_080A7488: .4byte gPaletteList
_080A748C: .4byte gGFXSlots
_080A7490: .4byte gRoomControls
_080A7494: .4byte gUnk_03001020
_080A7498: .4byte gScreen
_080A749C: .4byte gArea
_080A74A0: .4byte 0x0000085C
_080A74A4: .4byte 0x0000FFFF
_080A74A8:
ldrh r0, [r5, #0xa]
bl SetFadeInverted
_080A74AE:
ldr r1, _080A74C0 @ =gUI
movs r2, #0
movs r0, #4
strb r0, [r1]
ldr r0, _080A74C4 @ =gRoomTransition
adds r0, #0x30
strb r2, [r0]
_080A74BC:
pop {r4, r5, pc}
.align 2, 0
_080A74C0: .4byte gUI
_080A74C4: .4byte gRoomTransition
.syntax divided
-236
View File
@@ -1,236 +0,0 @@
.syntax unified
push {r4, lr}
bl sub_080A51F4
cmp r0, #0
bne _080A56AC
b _080A57F0
_080A56AC:
ldr r2, _080A56D0 @ =gMenu
ldr r0, _080A56D4 @ =gUnk_08128C00
str r0, [r2, #0xc]
ldrb r0, [r2, #3]
lsls r0, r0, #3
ldr r1, _080A56D8 @ =gUnk_08128C14
adds r4, r0, r1
movs r3, #0xff
ldr r0, _080A56DC @ =gInput
ldrh r1, [r0, #4]
cmp r1, #0x20
beq _080A56F2
cmp r1, #0x20
bgt _080A56E0
cmp r1, #0x10
beq _080A56F6
b _080A56F8
.align 2, 0
_080A56D0: .4byte gMenu
_080A56D4: .4byte gUnk_08128C00
_080A56D8: .4byte gUnk_08128C14
_080A56DC: .4byte gInput
_080A56E0:
cmp r1, #0x40
beq _080A56EA
cmp r1, #0x80
beq _080A56EE
b _080A56F8
_080A56EA:
ldrb r3, [r4]
b _080A56F8
_080A56EE:
ldrb r3, [r4, #1]
b _080A56F8
_080A56F2:
ldrb r3, [r4, #2]
b _080A56F8
_080A56F6:
ldrb r3, [r4, #3]
_080A56F8:
cmp r3, #0xff
beq _080A570C
ldr r0, _080A5708 @ =gMenu
strb r3, [r0, #3]
movs r0, #0x69
bl SoundReq
b _080A575E
.align 2, 0
_080A5708: .4byte gMenu
_080A570C:
ldrh r0, [r0, #2]
cmp r0, #1
bne _080A575E
ldrb r3, [r2, #3]
.ifdef DEMO_USA
movs r4, #0
.else
.ifdef DEMO_JP
movs r4, #0
.else
movs r1, #0
.endif
.endif
cmp r3, #2
beq _080A572E
cmp r3, #2
bhi _080A5724
cmp r3, #0
beq _080A572E
b _080A574E
_080A5724:
cmp r3, #4
beq _080A5748
cmp r3, #5
beq _080A574C
b _080A574E
_080A572E:
ldr r0, _080A5744 @ =gMenu
adds r0, #0x10
adds r0, r3, r0
ldrb r0, [r0]
cmp r0, #0
beq _080A574E
.ifdef DEMO_USA
movs r4, #8
.else
.ifdef DEMO_JP
movs r4, #8
.else
movs r1, #8
.endif
.endif
cmp r3, #0
bne _080A574E
.ifdef DEMO_USA
movs r4, #7
.else
.ifdef DEMO_JP
movs r4, #7
.else
movs r1, #7
.endif
.endif
b _080A5752
.align 2, 0
_080A5744: .4byte gMenu
_080A5748:
.ifdef DEMO_USA
movs r0, #0x6d
bl SoundReq
b _080A574E
_080A574C:
movs r0, #0x6d
bl SoundReq
.else
.ifdef DEMO_JP
movs r0, #0x6d
bl SoundReq
b _080A574E
_080A574C:
movs r0, #0x6d
bl SoundReq
.else
movs r1, #9
b _080A5752
_080A574C:
movs r1, #0xa
.endif
.endif
_080A574E:
.ifdef DEMO_USA
cmp r4, #0
.else
.ifdef DEMO_JP
cmp r4, #0
.else
cmp r1, #0
.endif
.endif
beq _080A575E
_080A5752:
.ifdef DEMO_USA
adds r0, r4, #0
.else
.ifdef DEMO_JP
adds r0, r4, #0
.else
adds r0, r1, #0
.endif
.endif
bl sub_080A4E84
movs r0, #0x6a
bl SoundReq
_080A575E:
ldr r0, _080A5780 @ =gMenu
ldrb r1, [r0, #3]
adds r2, r0, #0
cmp r1, #0
beq _080A576C
cmp r1, #2
bne _080A5788
_080A576C:
adds r0, r2, #0
adds r0, #0x10
adds r0, r1, r0
ldrb r0, [r0]
cmp r0, #0
beq _080A5788
ldr r1, _080A5784 @ =gUnk_0200AF00
movs r0, #0x10
b _080A578C
.align 2, 0
_080A5780: .4byte gMenu
_080A5784: .4byte gUnk_0200AF00
_080A5788:
ldr r1, _080A57AC @ =gUnk_0200AF00
ldr r0, _080A57B0 @ =0x0000FFF0
_080A578C:
strh r0, [r1, #0x1c]
ldrb r3, [r2, #3]
adds r0, r2, #0
adds r0, #0x10
adds r0, r3, r0
ldrb r2, [r0]
cmp r2, #0
beq _080A57E6
cmp r3, #5
bhi _080A57E6
lsls r0, r3, #2
ldr r1, _080A57B4 @ =_080A57B8
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080A57AC: .4byte gUnk_0200AF00
_080A57B0: .4byte 0x0000FFF0
_080A57B4: .4byte _080A57B8
_080A57B8: @ jump table
.4byte _080A57D0 @ case 0
.4byte _080A57D8 @ case 1
.4byte _080A57DC @ case 2
.4byte _080A57E6 @ case 3
.4byte _080A57E0 @ case 4
.4byte _080A57E4 @ case 5
_080A57D0:
cmp r2, #0x3d
beq _080A57E6
movs r2, #0x67
b _080A57E6
_080A57D8:
movs r2, #0x63
b _080A57E6
_080A57DC:
movs r2, #0x70
b _080A57E6
_080A57E0:
movs r2, #0x74
b _080A57E6
_080A57E4:
movs r2, #0x73
_080A57E6:
movs r0, #0x80
lsls r0, r0, #3
adds r0, r2, r0
bl sub_080A6F6C
_080A57F0:
pop {r4, pc}
.align 2, 0
.syntax divided
@@ -1,18 +0,0 @@
.syntax unified
push {lr}
ldr r0, _080A6670 @ =gUnk_08128E84
bl sub_080A70AC
ldr r0, _080A6674 @ =gPauseMenuOptions
ldrb r0, [r0, #6]
ldr r1, _080A6678 @ =gMenu
strb r0, [r1, #3]
bl sub_080A67C4
bl sub_080A68D4
movs r0, #1
bl SetMenuType
pop {pc}
.align 2, 0
_080A6670: .4byte gUnk_08128E84
_080A6674: .4byte gPauseMenuOptions
_080A6678: .4byte gMenu
.syntax divided
@@ -1,29 +0,0 @@
.syntax unified
push {lr}
bl sub_08056338
cmp r0, #0
beq _080A65CC
cmp r0, #1
beq _080A65D8
b _080A65EA
_080A65CC:
ldr r1, _080A65D4 @ =gMenu
movs r0, #2
b _080A65DC
.align 2, 0
_080A65D4: .4byte gMenu
_080A65D8:
ldr r1, _080A65ECEU @ =gMenu
movs r0, #3
_080A65DC:
strb r0, [r1]
movs r0, #1
cmp r0, #0
beq _080A65EA
movs r0, #3
bl SetMenuType
_080A65EA:
pop {pc}
.align 2, 0
_080A65ECEU: .4byte gMenu
.syntax divided
+104 -1
View File
@@ -49,6 +49,7 @@ struct_08127F94* sub_080A6A80(u32 param_1, u32 param_2);
void sub_080A698C(u32 param_1, u32 param_2, u32 param_3, u32 param_4);
void sub_080A6438();
void sub_080A5F48(u32, u32);
void sub_080A6F6C(u32);
extern void DrawDungeonMap(u32 floor, struct_02019EE0* data, u32 size);
extern void LoadDungeonMap(void);
@@ -126,6 +127,7 @@ typedef struct {
} struct_gUnk_08128E94;
extern const struct_gUnk_08128E94 gUnk_08128E94[];
extern struct_gUnk_08128E94 gUnk_08128C14[];
typedef struct {
u8 unk00 : 5;
@@ -223,7 +225,108 @@ void sub_080A5594(void) {
SetMenuType(1);
}
ASM_FUNC("asm/non_matching/subtask2/sub_080A56A0.inc", void sub_080A56A0())
void sub_080A56A0(void) {
int iVar1;
u32 uVar2;
u32 uVar4;
struct_gUnk_08128E94* ptr;
if (!sub_080A51F4()) {
return;
}
gMenu.field_0xc = gUnk_08128C00;
ptr = &gUnk_08128C14[gMenu.field_0x3];
uVar2 = 0xff;
switch (gInput.unk4) {
case 0x40:
uVar2 = ptr->unk0;
break;
case 0x80:
uVar2 = ptr->unk1;
break;
case 0x20:
uVar2 = ptr->unk2;
break;
case 0x10:
uVar2 = ptr->unk3;
break;
}
if (uVar2 != 0xff) {
gMenu.field_0x3 = uVar2;
SoundReq(SFX_TEXTBOX_CHOICE);
} else if (gInput.newKeys == 1) {
uVar2 = gMenu.field_0x3;
iVar1 = 0;
switch (uVar2) {
case 0:
case 2:
if (gGenericMenu.unk10.a[uVar2] != 0) {
iVar1 = 8;
if (uVar2 == 0) {
iVar1 = 7;
}
}
break;
#if !defined(DEMO_USA) && !defined(DEMO_JP)
case 4:
iVar1 = 9;
break;
case 5:
iVar1 = 10;
break;
#else
case 4:
SoundReq(SFX_MENU_ERROR);
break;
case 5:
SoundReq(SFX_MENU_ERROR);
break;
#endif
}
if (iVar1 != 0) {
sub_080A4E84(iVar1);
SoundReq(SFX_TEXTBOX_SELECT);
}
}
switch (gMenu.field_0x3) {
case 0:
case 2:
if (gGenericMenu.unk10.a[gMenu.field_0x3] != 0) {
gUnk_0200AF00.buttonY[0] = 0x10;
} else {
gUnk_0200AF00.buttonY[0] = 0xfff0;
}
break;
default:
gUnk_0200AF00.buttonY[0] = 0xfff0;
break;
}
uVar2 = gMenu.field_0x3;
uVar4 = gGenericMenu.unk10.a[uVar2];
if (uVar4 != 0) {
switch (uVar2) {
case 0:
if (uVar4 != 0x3d) {
uVar4 = 0x67;
}
break;
case 1:
uVar4 = 99;
break;
case 2:
uVar4 = 0x70;
break;
case 4:
uVar4 = 0x74;
break;
case 5:
uVar4 = 0x73;
}
}
sub_080A6F6C(uVar4 + 0x400);
}
ASM_FUNC("asm/non_matching/subtask2/sub_080A57F4.inc", void sub_080A57F4())