mirror of
https://github.com/zeldaret/tmc
synced 2026-05-25 07:23:16 -04:00
Decompile some subtask2 functions
This commit is contained in:
@@ -1,72 +0,0 @@
|
||||
.syntax unified
|
||||
push {lr}
|
||||
bl sub_080A51F4
|
||||
cmp r0, #0
|
||||
beq _080A5A52
|
||||
ldr r1, _080A59EC @ =gMenu
|
||||
ldrb r2, [r1, #3]
|
||||
movs r3, #0
|
||||
ldr r0, _080A59F0 @ =gInput
|
||||
ldrh r0, [r0, #2]
|
||||
cmp r0, #2
|
||||
beq _080A5A02
|
||||
cmp r0, #2
|
||||
bgt _080A59F4
|
||||
cmp r0, #1
|
||||
beq _080A5A0A
|
||||
b _080A5A0C
|
||||
.align 2, 0
|
||||
_080A59EC: .4byte gMenu
|
||||
_080A59F0: .4byte gInput
|
||||
_080A59F4:
|
||||
cmp r0, #0x40
|
||||
beq _080A59FE
|
||||
cmp r0, #0x80
|
||||
beq _080A5A06
|
||||
b _080A5A0C
|
||||
_080A59FE:
|
||||
movs r2, #0
|
||||
b _080A5A0C
|
||||
_080A5A02:
|
||||
cmp r2, #0
|
||||
bne _080A5A10
|
||||
_080A5A06:
|
||||
movs r2, #1
|
||||
b _080A5A0C
|
||||
_080A5A0A:
|
||||
movs r3, #1
|
||||
_080A5A0C:
|
||||
cmp r3, #0
|
||||
beq _080A5A3C
|
||||
_080A5A10:
|
||||
movs r0, #0xff
|
||||
strh r0, [r1, #8]
|
||||
cmp r2, #0
|
||||
bne _080A5A2E
|
||||
movs r0, #8
|
||||
movs r1, #0
|
||||
bl CreateDialogBox
|
||||
movs r0, #2
|
||||
bl SetMenuType
|
||||
movs r0, #0x6a
|
||||
bl SoundReq
|
||||
b _080A5A52
|
||||
_080A5A2E:
|
||||
movs r0, #3
|
||||
bl SetMenuType
|
||||
movs r0, #0x6c
|
||||
bl SoundReq
|
||||
b _080A5A52
|
||||
_080A5A3C:
|
||||
ldrb r0, [r1, #3]
|
||||
cmp r0, r2
|
||||
beq _080A5A52
|
||||
strb r2, [r1, #3]
|
||||
movs r0, #0
|
||||
adds r1, r2, #0
|
||||
bl SetPopupState
|
||||
movs r0, #0x69
|
||||
bl SoundReq
|
||||
_080A5A52:
|
||||
pop {pc}
|
||||
.syntax divided
|
||||
@@ -1,68 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, lr}
|
||||
bl sub_080A51F4
|
||||
cmp r0, #0
|
||||
beq _080A5BB6
|
||||
ldr r1, _080A5B58 @ =gMenu
|
||||
ldrb r4, [r1, #3]
|
||||
movs r5, #0
|
||||
ldr r0, _080A5B5C @ =gInput
|
||||
ldrh r0, [r0, #2]
|
||||
adds r6, r1, #0
|
||||
cmp r0, #2
|
||||
beq _080A5B6C
|
||||
cmp r0, #2
|
||||
bgt _080A5B60
|
||||
cmp r0, #1
|
||||
beq _080A5B74
|
||||
b _080A5B76
|
||||
.align 2, 0
|
||||
_080A5B58: .4byte gMenu
|
||||
_080A5B5C: .4byte gInput
|
||||
_080A5B60:
|
||||
cmp r0, #0x10
|
||||
beq _080A5B70
|
||||
cmp r0, #0x20
|
||||
bne _080A5B76
|
||||
movs r4, #0
|
||||
b _080A5B76
|
||||
_080A5B6C:
|
||||
cmp r4, #0
|
||||
bne _080A5B74
|
||||
_080A5B70:
|
||||
movs r4, #1
|
||||
b _080A5B76
|
||||
_080A5B74:
|
||||
movs r5, #1
|
||||
_080A5B76:
|
||||
adds r1, r6, #0
|
||||
ldrb r0, [r1, #3]
|
||||
cmp r0, r4
|
||||
beq _080A5B8E
|
||||
strb r4, [r1, #3]
|
||||
movs r0, #2
|
||||
adds r1, r4, #0
|
||||
bl SetPopupState
|
||||
movs r0, #0x69
|
||||
bl SoundReq
|
||||
_080A5B8E:
|
||||
cmp r5, #0
|
||||
beq _080A5BB6
|
||||
cmp r4, #0
|
||||
bne _080A5BAA
|
||||
movs r0, #7
|
||||
movs r1, #0x20
|
||||
bl SetFade
|
||||
movs r0, #0x3c
|
||||
strh r0, [r6, #8]
|
||||
movs r0, #2
|
||||
bl SetMenuType
|
||||
b _080A5BB6
|
||||
_080A5BAA:
|
||||
movs r0, #0x6c
|
||||
bl SoundReq
|
||||
movs r0, #2
|
||||
bl sub_080A4E84
|
||||
_080A5BB6:
|
||||
pop {r4, r5, r6, pc}
|
||||
.syntax divided
|
||||
@@ -1,97 +0,0 @@
|
||||
.syntax unified
|
||||
.ifdef EU
|
||||
push {r4, r5, r6, r7, lr}
|
||||
ldr r0, _080A5CDCEU @ =gOamCmd
|
||||
movs r2, #0
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #4
|
||||
strh r1, [r0, #4]
|
||||
strh r2, [r0, #6]
|
||||
strh r2, [r0, #8]
|
||||
movs r4, #0
|
||||
ldr r7, _080A5CE0 @ =gSave
|
||||
adds r6, r0, #0
|
||||
movs r5, #0x28
|
||||
_080A5CA4:
|
||||
movs r1, #1
|
||||
lsls r1, r4
|
||||
ldr r0, [r7, #0x40]
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _080A5CC8EU
|
||||
lsls r1, r4, #3
|
||||
ldr r0, _080A5CE4 @ =gUnk_08128DE8
|
||||
adds r1, r1, r0
|
||||
ldrb r0, [r1, #6]
|
||||
strh r0, [r6]
|
||||
ldrb r0, [r1, #7]
|
||||
strh r0, [r6, #2]
|
||||
movs r0, #0xfd
|
||||
lsls r0, r0, #1
|
||||
adds r1, r5, #0
|
||||
bl DrawDirect
|
||||
_080A5CC8EU:
|
||||
adds r5, #3
|
||||
adds r4, #1
|
||||
cmp r4, #0x10
|
||||
bls _080A5CA4
|
||||
ldr r0, _080A5CE8 @ =gScreen
|
||||
adds r0, #0x62
|
||||
ldr r1, _080A5CEC @ =0x00003D3F
|
||||
strh r1, [r0]
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_080A5CDCEU: .4byte gOamCmd
|
||||
_080A5CE0: .4byte gSave
|
||||
_080A5CE4: .4byte gUnk_08128DE8
|
||||
_080A5CE8: .4byte gScreen
|
||||
_080A5CEC: .4byte 0x00003D3F
|
||||
.else
|
||||
push {r4, r5, r6, r7, lr}
|
||||
ldr r0, _080A64E4 @ =gOamCmd
|
||||
movs r2, #0
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #4
|
||||
strh r1, [r0, #4]
|
||||
strh r2, [r0, #6]
|
||||
strh r2, [r0, #8]
|
||||
movs r4, #0
|
||||
ldr r7, _080A64E8 @ =gSave
|
||||
adds r6, r0, #0
|
||||
movs r5, #0x28
|
||||
_080A64B0:
|
||||
movs r1, #1
|
||||
lsls r1, r4
|
||||
ldr r0, [r7, #0x40]
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _080A64D2
|
||||
lsls r1, r4, #3
|
||||
ldr r0, _080A64EC @ =gUnk_08128DE8
|
||||
adds r1, r1, r0
|
||||
ldrb r0, [r1, #6]
|
||||
strh r0, [r6]
|
||||
ldrb r0, [r1, #7]
|
||||
strh r0, [r6, #2]
|
||||
ldr r0, _080A64F0 @ =0x000001FB
|
||||
adds r1, r5, #0
|
||||
bl DrawDirect
|
||||
_080A64D2:
|
||||
adds r5, #3
|
||||
adds r4, #1
|
||||
cmp r4, #0x10
|
||||
bls _080A64B0
|
||||
ldr r0, _080A64F4 @ =gScreen
|
||||
adds r0, #0x62
|
||||
ldr r1, _080A64F8 @ =0x00003D3F
|
||||
strh r1, [r0]
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_080A64E4: .4byte gOamCmd
|
||||
_080A64E8: .4byte gSave
|
||||
_080A64EC: .4byte gUnk_08128DE8
|
||||
_080A64F0: .4byte 0x000001FB
|
||||
_080A64F4: .4byte gScreen
|
||||
_080A64F8: .4byte 0x00003D3F
|
||||
.endif
|
||||
.syntax divided
|
||||
@@ -1,50 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, lr}
|
||||
bl sub_080A4D34
|
||||
movs r0, #4
|
||||
bl sub_080A4DB8
|
||||
bl sub_080A6290
|
||||
ldr r2, _080A6590 @ =gScreen
|
||||
ldrh r1, [r2]
|
||||
ldr r0, _080A6594 @ =0x0000F7FF
|
||||
ands r0, r1
|
||||
movs r4, #0
|
||||
strh r0, [r2]
|
||||
ldr r0, _080A6598 @ =gPaletteBuffer
|
||||
adds r0, #0xa2
|
||||
ldrh r1, [r0]
|
||||
movs r0, #0
|
||||
bl SetColor
|
||||
ldr r1, _080A659C @ =gUnk_08128F4C
|
||||
ldr r0, _080A65A0 @ =gUI
|
||||
ldrb r0, [r0, #3]
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
ldrh r2, [r0]
|
||||
ldr r3, _080A65A4 @ =gSave
|
||||
ldrh r1, [r3, #0x20]
|
||||
adds r0, r2, #0
|
||||
orrs r0, r1
|
||||
strh r0, [r3, #0x20]
|
||||
ldr r1, _080A65A8 @ =gMenu
|
||||
ldrh r0, [r1, #0x10]
|
||||
ands r2, r0
|
||||
strh r2, [r1, #0x12]
|
||||
strh r4, [r1, #0x10]
|
||||
movs r0, #0x3c
|
||||
strh r0, [r1, #8]
|
||||
movs r0, #1
|
||||
bl SetMenuType
|
||||
movs r0, #4
|
||||
movs r1, #8
|
||||
bl SetFade
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_080A6590: .4byte gScreen
|
||||
_080A6594: .4byte 0x0000F7FF
|
||||
_080A6598: .4byte gPaletteBuffer
|
||||
_080A659C: .4byte gUnk_08128F4C
|
||||
_080A65A0: .4byte gUI
|
||||
_080A65A4: .4byte gSave
|
||||
_080A65A8: .4byte gMenu
|
||||
.syntax divided
|
||||
+136
-4
@@ -86,6 +86,18 @@ typedef struct {
|
||||
|
||||
extern const struct_gUnk_08128E94 gUnk_08128E94[];
|
||||
|
||||
typedef struct {
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
u8 unk3;
|
||||
u8 unk4;
|
||||
u8 unk5;
|
||||
u8 unk6;
|
||||
u8 unk7;
|
||||
} gUnk_08128DE8_struct;
|
||||
extern gUnk_08128DE8_struct gUnk_08128DE8[];
|
||||
|
||||
ASM_FUNC("asm/non_matching/subtask2/sub_080A5594.inc", void sub_080A5594())
|
||||
|
||||
ASM_FUNC("asm/non_matching/subtask2/sub_080A56A0.inc", void sub_080A56A0())
|
||||
@@ -103,7 +115,51 @@ void sub_080A59AC(void) {
|
||||
SetMenuType(1);
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/subtask2/sub_080A59C8.inc", void sub_080A59C8())
|
||||
void sub_080A59C8(void) {
|
||||
u32 uVar2;
|
||||
u32 bVar3;
|
||||
|
||||
if (!sub_080A51F4()) {
|
||||
return;
|
||||
}
|
||||
uVar2 = gMenu.field_0x3;
|
||||
bVar3 = FALSE;
|
||||
|
||||
switch (gInput.newKeys) {
|
||||
case DPAD_UP:
|
||||
uVar2 = 0;
|
||||
break;
|
||||
case B_BUTTON:
|
||||
if (gMenu.field_0x3 == 0) {
|
||||
uVar2 = 1;
|
||||
} else {
|
||||
bVar3 = TRUE;
|
||||
}
|
||||
break;
|
||||
case DPAD_DOWN:
|
||||
uVar2 = 1;
|
||||
break;
|
||||
case A_BUTTON:
|
||||
bVar3 = TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
if (bVar3) {
|
||||
gMenu.transitionTimer = 0xff;
|
||||
if (uVar2 == 0) {
|
||||
CreateDialogBox(8, 0);
|
||||
SetMenuType(2);
|
||||
SoundReq(SFX_TEXTBOX_SELECT);
|
||||
} else {
|
||||
SetMenuType(3);
|
||||
SoundReq(SFX_MENU_CANCEL);
|
||||
}
|
||||
} else if (gMenu.field_0x3 != uVar2) {
|
||||
gMenu.field_0x3 = uVar2;
|
||||
SetPopupState(0, uVar2);
|
||||
SoundReq(SFX_TEXTBOX_CHOICE);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080A5A54(void) {
|
||||
switch (HandleSave(0)) {
|
||||
@@ -160,7 +216,49 @@ void sub_080A5AF4(void) {
|
||||
SetMenuType(1);
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/subtask2/sub_080A5B34.inc", void sub_080A5B34())
|
||||
void sub_080A5B34(void) {
|
||||
bool32 bVar1;
|
||||
u32 uVar3;
|
||||
|
||||
if (!sub_080A51F4()) {
|
||||
return;
|
||||
}
|
||||
uVar3 = gMenu.field_0x3;
|
||||
bVar1 = FALSE;
|
||||
switch (gInput.newKeys) {
|
||||
case DPAD_LEFT:
|
||||
uVar3 = 0;
|
||||
break;
|
||||
case B_BUTTON:
|
||||
if (gMenu.field_0x3 != 0) {
|
||||
bVar1 = TRUE;
|
||||
} else {
|
||||
uVar3 = 1;
|
||||
}
|
||||
break;
|
||||
case DPAD_RIGHT:
|
||||
uVar3 = 1;
|
||||
break;
|
||||
case A_BUTTON:
|
||||
bVar1 = TRUE;
|
||||
break;
|
||||
}
|
||||
if (gMenu.field_0x3 != uVar3) {
|
||||
gMenu.field_0x3 = uVar3;
|
||||
SetPopupState(2, uVar3);
|
||||
SoundReq(SFX_TEXTBOX_CHOICE);
|
||||
}
|
||||
if (bVar1) {
|
||||
if (uVar3 == 0) {
|
||||
SetFade(7, 0x20);
|
||||
gMenu.transitionTimer = 0x3c;
|
||||
SetMenuType(2);
|
||||
} else {
|
||||
SoundReq(SFX_MENU_CANCEL);
|
||||
sub_080A4E84(2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080A5BB8(void) {
|
||||
Main* m;
|
||||
@@ -344,7 +442,26 @@ void sub_080A6438(void) {
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/subtask2/sub_080A6498.inc", void sub_080A6498())
|
||||
void sub_080A6498(void) {
|
||||
u32 i;
|
||||
|
||||
gOamCmd._4 = 0x800;
|
||||
gOamCmd._6 = 0;
|
||||
gOamCmd._8 = 0;
|
||||
for (i = 0; i <= 0x10; i++) {
|
||||
if ((gSave.windcrests & (1 << i)) == 0) {
|
||||
gUnk_08128DE8_struct* ptr = &gUnk_08128DE8[i];
|
||||
gOamCmd.x = ptr->unk6;
|
||||
gOamCmd.y = ptr->unk7;
|
||||
#ifdef EU
|
||||
DrawDirect(0x1fa, 0x28 + 3 * i);
|
||||
#else
|
||||
DrawDirect(0x1fb, 0x28 + 3 * i);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
gScreen.controls.windowOutsideControl = 0x3d3f;
|
||||
}
|
||||
|
||||
void Subtask_MapHint(void) {
|
||||
extern void (*const gUnk_08128E70[])(void);
|
||||
@@ -357,7 +474,22 @@ void Subtask_MapHint(void) {
|
||||
CopyOAM();
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/subtask2/sub_080A6534.inc", void sub_080A6534())
|
||||
void sub_080A6534(void) {
|
||||
extern const u16 gUnk_08128F4C[];
|
||||
u32 val;
|
||||
sub_080A4D34();
|
||||
sub_080A4DB8(4);
|
||||
sub_080A6290();
|
||||
gScreen.lcd.displayControl = gScreen.lcd.displayControl & 0xf7ff;
|
||||
SetColor(0, gPaletteBuffer[0x51]);
|
||||
val = gUnk_08128F4C[gUI.field_0x3];
|
||||
gSave.field_0x20 |= val;
|
||||
gGenericMenu.unk10.h[1] = val & gGenericMenu.unk10.h[0];
|
||||
gGenericMenu.unk10.h[0] = 0;
|
||||
gMenu.transitionTimer = 0x3c;
|
||||
SetMenuType(1);
|
||||
SetFade(4, 8);
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/subtask2/sub_080A65AC.inc", void sub_080A65AC())
|
||||
|
||||
|
||||
Reference in New Issue
Block a user