mirror of
https://github.com/zeldaret/tmc
synced 2026-05-25 15:25:26 -04:00
Merge pull request #486 from hatal175/subtask3
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
|
||||
@@ -1,47 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, lr}
|
||||
ldr r0, _080A65E4 @ =gFadeControl
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _080A6600
|
||||
ldr r4, _080A65E8 @ =gMenu
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x2c
|
||||
ldrb r0, [r1]
|
||||
adds r0, #1
|
||||
strb r0, [r1]
|
||||
ldrh r0, [r4, #8]
|
||||
cmp r0, #0
|
||||
beq _080A65EC
|
||||
cmp r0, #0x1e
|
||||
bne _080A65DA
|
||||
ldrh r0, [r4, #0x12]
|
||||
strh r0, [r4, #0x10]
|
||||
movs r0, #0x20
|
||||
strb r0, [r1]
|
||||
adds r0, #0xe3
|
||||
bl SoundReq
|
||||
_080A65DA:
|
||||
ldrh r0, [r4, #8]
|
||||
subs r0, #1
|
||||
strh r0, [r4, #8]
|
||||
b _080A6600
|
||||
.align 2, 0
|
||||
_080A65E4: .4byte gFadeControl
|
||||
_080A65E8: .4byte gMenu
|
||||
_080A65EC:
|
||||
ldr r0, _080A6604 @ =gInput
|
||||
ldrh r0, [r0, #2]
|
||||
cmp r0, #1
|
||||
blt _080A6600
|
||||
cmp r0, #2
|
||||
ble _080A65FC
|
||||
cmp r0, #8
|
||||
bne _080A6600
|
||||
_080A65FC:
|
||||
bl Subtask_Exit
|
||||
_080A6600:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_080A6604: .4byte gInput
|
||||
.syntax divided
|
||||
@@ -1,85 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
sub sp, #4
|
||||
adds r7, r0, #0
|
||||
adds r6, r1, #0
|
||||
orrs r0, r6
|
||||
cmp r0, #0
|
||||
beq _080A6A06
|
||||
adds r0, r7, #0
|
||||
adds r1, r6, #0
|
||||
bl sub_080A6A80
|
||||
adds r3, r0, #0
|
||||
cmp r3, #0
|
||||
beq _080A6A06
|
||||
ldr r0, _080A6A0C @ =gMenu
|
||||
ldrb r1, [r0, #3]
|
||||
ldrb r2, [r3, #4]
|
||||
cmp r1, r2
|
||||
beq _080A6A10
|
||||
_080A6A06:
|
||||
movs r0, #1
|
||||
rsbs r0, r0, #0
|
||||
b _080A6A74
|
||||
.align 2, 0
|
||||
_080A6A0C: .4byte gMenu
|
||||
_080A6A10:
|
||||
ldrb r1, [r0, #3]
|
||||
cmp r1, #7
|
||||
beq _080A6A26
|
||||
cmp r1, #7
|
||||
bgt _080A6A20
|
||||
cmp r1, #4
|
||||
beq _080A6A26
|
||||
b _080A6A48
|
||||
_080A6A20:
|
||||
cmp r1, #0xf
|
||||
beq _080A6A44
|
||||
b _080A6A48
|
||||
_080A6A26:
|
||||
ldrb r0, [r0, #3]
|
||||
movs r2, #7
|
||||
cmp r0, #4
|
||||
bne _080A6A30
|
||||
movs r2, #9
|
||||
_080A6A30:
|
||||
ldr r1, _080A6A40 @ =gAreaRoomHeaders
|
||||
lsls r0, r2, #2
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
ldrh r0, [r0, #2]
|
||||
subs r6, r6, r0
|
||||
b _080A6A48
|
||||
.align 2, 0
|
||||
_080A6A40: .4byte gAreaRoomHeaders
|
||||
_080A6A44:
|
||||
ldr r0, _080A6A78 @ =0xFFFFFEF8
|
||||
adds r7, r7, r0
|
||||
_080A6A48:
|
||||
ldrb r0, [r3]
|
||||
lsls r0, r0, #4
|
||||
subs r0, r7, r0
|
||||
movs r4, #0x64
|
||||
muls r0, r4, r0
|
||||
ldr r5, _080A6A7C @ =0x0000023A
|
||||
adds r1, r5, #0
|
||||
str r3, [sp]
|
||||
bl __divsi3
|
||||
adds r7, r0, #0
|
||||
ldr r3, [sp]
|
||||
ldrb r0, [r3, #1]
|
||||
lsls r0, r0, #4
|
||||
subs r0, r6, r0
|
||||
muls r0, r4, r0
|
||||
adds r1, r5, #0
|
||||
bl __divsi3
|
||||
adds r6, r0, #0
|
||||
lsls r0, r6, #0x10
|
||||
orrs r0, r7
|
||||
_080A6A74:
|
||||
add sp, #4
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_080A6A78: .4byte 0xFFFFFEF8
|
||||
_080A6A7C: .4byte 0x0000023A
|
||||
.syntax divided
|
||||
@@ -1,82 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, lr}
|
||||
ldr r0, _080A6D08 @ =gFadeControl
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _080A6D6E
|
||||
ldr r1, _080A6D0C @ =gMenu
|
||||
movs r0, #1
|
||||
strb r0, [r1]
|
||||
movs r4, #0
|
||||
ldr r0, _080A6D10 @ =gInput
|
||||
ldrh r0, [r0, #2]
|
||||
adds r2, r1, #0
|
||||
cmp r0, #0x10
|
||||
beq _080A6D34
|
||||
cmp r0, #0x10
|
||||
bgt _080A6D1A
|
||||
cmp r0, #2
|
||||
beq _080A6D4C
|
||||
cmp r0, #2
|
||||
bgt _080A6D14
|
||||
cmp r0, #1
|
||||
beq _080A6D38
|
||||
b _080A6D54
|
||||
.align 2, 0
|
||||
_080A6D08: .4byte gFadeControl
|
||||
_080A6D0C: .4byte gMenu
|
||||
_080A6D10: .4byte gInput
|
||||
_080A6D14:
|
||||
cmp r0, #8
|
||||
beq _080A6D38
|
||||
b _080A6D54
|
||||
_080A6D1A:
|
||||
cmp r0, #0x40
|
||||
beq _080A6D2E
|
||||
cmp r0, #0x40
|
||||
bgt _080A6D28
|
||||
cmp r0, #0x20
|
||||
beq _080A6D2E
|
||||
b _080A6D54
|
||||
_080A6D28:
|
||||
cmp r0, #0x80
|
||||
beq _080A6D34
|
||||
b _080A6D54
|
||||
_080A6D2E:
|
||||
movs r4, #1
|
||||
rsbs r4, r4, #0
|
||||
b _080A6D58
|
||||
_080A6D34:
|
||||
movs r4, #1
|
||||
b _080A6D58
|
||||
_080A6D38:
|
||||
movs r0, #2
|
||||
strb r0, [r2]
|
||||
bl SetMenuType
|
||||
ldr r0, _080A6D48 @ =0x00000704
|
||||
bl MessageFromTarget
|
||||
b _080A6D54
|
||||
.align 2, 0
|
||||
_080A6D48: .4byte 0x00000704
|
||||
_080A6D4C:
|
||||
movs r0, #3
|
||||
strb r0, [r1]
|
||||
bl SetMenuType
|
||||
_080A6D54:
|
||||
cmp r4, #0
|
||||
beq _080A6D6E
|
||||
_080A6D58:
|
||||
adds r0, r4, #0
|
||||
bl sub_080A6D74
|
||||
ldr r1, _080A6D70 @ =gMenu
|
||||
ldrb r2, [r1, #3]
|
||||
cmp r0, r2
|
||||
beq _080A6D6E
|
||||
strb r0, [r1, #3]
|
||||
movs r0, #0x69
|
||||
bl SoundReq
|
||||
_080A6D6E:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_080A6D70: .4byte gMenu
|
||||
.syntax divided
|
||||
@@ -1,110 +0,0 @@
|
||||
.syntax unified
|
||||
.ifdef EU
|
||||
push {r4, r5, lr}
|
||||
ldr r1, _080A66CC @ =gOamCmd
|
||||
movs r0, #0
|
||||
strh r0, [r1, #4]
|
||||
strh r0, [r1, #6]
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #3
|
||||
strh r0, [r1, #8]
|
||||
ldr r1, _080A66D0 @ =gMenu
|
||||
adds r4, r1, #0
|
||||
adds r4, #0x2c
|
||||
ldrb r0, [r4]
|
||||
adds r0, #1
|
||||
strb r0, [r4]
|
||||
ldrb r0, [r1, #3]
|
||||
bl sub_080A6EE0
|
||||
ldrb r1, [r4]
|
||||
movs r0, #0x10
|
||||
ands r0, r1
|
||||
movs r1, #0x5e
|
||||
cmp r0, #0
|
||||
beq _080A6698
|
||||
movs r1, #0x5d
|
||||
_080A6698:
|
||||
movs r0, #0xfd
|
||||
lsls r0, r0, #1
|
||||
bl DrawDirect
|
||||
movs r4, #0
|
||||
ldr r5, _080A66D4 @ =gSave
|
||||
_080A66A4EU:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x18
|
||||
movs r1, #1
|
||||
lsls r1, r0
|
||||
ldr r0, [r5, #0x40]
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _080A66C4
|
||||
adds r0, r4, #0
|
||||
bl sub_080A6EE0
|
||||
movs r0, #0xfd
|
||||
lsls r0, r0, #1
|
||||
movs r1, #0x5c
|
||||
bl DrawDirect
|
||||
_080A66C4:
|
||||
adds r4, #1
|
||||
cmp r4, #7
|
||||
bls _080A66A4EU
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_080A66CC: .4byte gOamCmd
|
||||
_080A66D0: .4byte gMenu
|
||||
_080A66D4: .4byte gSave
|
||||
.else
|
||||
push {r4, r5, lr}
|
||||
ldr r1, _080A6ED0 @ =gOamCmd
|
||||
movs r0, #0
|
||||
strh r0, [r1, #4]
|
||||
strh r0, [r1, #6]
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #3
|
||||
strh r0, [r1, #8]
|
||||
ldr r1, _080A6ED4 @ =gMenu
|
||||
adds r4, r1, #0
|
||||
adds r4, #0x2c
|
||||
ldrb r0, [r4]
|
||||
adds r0, #1
|
||||
strb r0, [r4]
|
||||
ldrb r0, [r1, #3]
|
||||
bl sub_080A6EE0
|
||||
ldrb r1, [r4]
|
||||
movs r0, #0x10
|
||||
ands r0, r1
|
||||
movs r1, #0x5e
|
||||
cmp r0, #0
|
||||
beq _080A6EA0
|
||||
movs r1, #0x5d
|
||||
_080A6EA0:
|
||||
ldr r0, _080A6ED8 @ =0x000001FB
|
||||
bl DrawDirect
|
||||
movs r4, #0
|
||||
ldr r5, _080A6EDC @ =gSave
|
||||
_080A6EAA:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x18
|
||||
movs r1, #1
|
||||
lsls r1, r0
|
||||
ldr r0, [r5, #0x40]
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _080A6EC8
|
||||
adds r0, r4, #0
|
||||
bl sub_080A6EE0
|
||||
ldr r0, _080A6ED8 @ =0x000001FB
|
||||
movs r1, #0x5c
|
||||
bl DrawDirect
|
||||
_080A6EC8:
|
||||
adds r4, #1
|
||||
cmp r4, #7
|
||||
bls _080A6EAA
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_080A6ED0: .4byte gOamCmd
|
||||
_080A6ED4: .4byte gMenu
|
||||
_080A6ED8: .4byte 0x000001FB
|
||||
_080A6EDC: .4byte gSave
|
||||
.endif
|
||||
.syntax divided
|
||||
@@ -1,69 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, lr}
|
||||
adds r2, r0, #0
|
||||
movs r4, #0
|
||||
cmp r1, #1
|
||||
beq _080A6FF0
|
||||
cmp r1, #1
|
||||
blo _080A6FC8
|
||||
cmp r1, #2
|
||||
beq _080A6FD6
|
||||
b _080A6FFA
|
||||
_080A6FC8:
|
||||
ldr r0, _080A6FE4 @ =gSave
|
||||
movs r1, #1
|
||||
lsls r1, r2
|
||||
ldr r0, [r0, #0x40]
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _080A6FFA
|
||||
_080A6FD6:
|
||||
ldr r1, _080A6FE8 @ =gUnk_08127F94
|
||||
lsls r0, r2, #3
|
||||
adds r0, r0, r1
|
||||
ldrh r4, [r0, #6]
|
||||
ldr r5, _080A6FEC @ =gUnk_08128FC0
|
||||
b _080A6FFA
|
||||
.align 2, 0
|
||||
_080A6FE4: .4byte gSave
|
||||
_080A6FE8: .4byte gUnk_08127F94
|
||||
_080A6FEC: .4byte gUnk_08128FC0
|
||||
_080A6FF0:
|
||||
ldr r1, _080A702C @ =gUnk_08128FF0
|
||||
lsls r0, r2, #1
|
||||
adds r0, r0, r1
|
||||
ldrh r4, [r0]
|
||||
ldr r5, _080A7030 @ =gUnk_08128FD8
|
||||
_080A6FFA:
|
||||
ldr r1, _080A7034 @ =gMenu
|
||||
ldrh r0, [r1, #0x2e]
|
||||
cmp r0, r4
|
||||
beq _080A7024
|
||||
strh r4, [r1, #0x2e]
|
||||
ldr r0, _080A7038 @ =gUnk_020350F0
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #1
|
||||
bl MemClear
|
||||
movs r0, #0xff
|
||||
ands r0, r4
|
||||
cmp r0, #0
|
||||
beq _080A701E
|
||||
adds r0, r4, #0
|
||||
adds r1, r5, #0
|
||||
bl sub_0805F46C
|
||||
_080A701E:
|
||||
ldr r1, _080A703C @ =gScreen
|
||||
movs r0, #1
|
||||
strh r0, [r1, #0xe]
|
||||
_080A7024:
|
||||
ldr r1, _080A703C @ =gScreen
|
||||
movs r0, #2
|
||||
strh r0, [r1, #0xc]
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_080A702C: .4byte gUnk_08128FF0
|
||||
_080A7030: .4byte gUnk_08128FD8
|
||||
_080A7034: .4byte gMenu
|
||||
_080A7038: .4byte gUnk_020350F0
|
||||
_080A703C: .4byte gScreen
|
||||
.syntax divided
|
||||
@@ -1,47 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, lr}
|
||||
adds r5, r0, #0
|
||||
ldr r1, _080A7090 @ =gMenu
|
||||
ldrh r0, [r1, #0x2e]
|
||||
cmp r0, r5
|
||||
beq _080A708C
|
||||
strh r5, [r1, #0x2e]
|
||||
ldr r4, _080A7094 @ =gUnk_02022130
|
||||
movs r1, #0xc0
|
||||
lsls r1, r1, #2
|
||||
adds r0, r4, #0
|
||||
bl MemClear
|
||||
ldr r0, _080A7098 @ =0xFFFFFE00
|
||||
adds r4, r4, r0
|
||||
ldr r1, _080A709C @ =0x0600E000
|
||||
movs r2, #0x80
|
||||
lsls r2, r2, #4
|
||||
adds r0, r4, #0
|
||||
bl MemCopy
|
||||
ldr r1, _080A70A0 @ =gUnk_08128D70
|
||||
lsls r0, r5, #3
|
||||
adds r4, r0, r1
|
||||
ldrb r0, [r4]
|
||||
bl GetInventoryValue
|
||||
cmp r0, #0
|
||||
beq _080A7082
|
||||
ldrh r0, [r4, #6]
|
||||
ldr r1, _080A70A4 @ =gUnk_08129004
|
||||
bl sub_0805F46C
|
||||
_080A7082:
|
||||
ldr r0, _080A70A8 @ =gScreen
|
||||
movs r1, #3
|
||||
strh r1, [r0, #0x18]
|
||||
movs r1, #1
|
||||
strh r1, [r0, #0x1a]
|
||||
_080A708C:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_080A7090: .4byte gMenu
|
||||
_080A7094: .4byte gUnk_02022130
|
||||
_080A7098: .4byte 0xFFFFFE00
|
||||
_080A709C: .4byte 0x0600E000
|
||||
_080A70A0: .4byte gUnk_08128D70
|
||||
_080A70A4: .4byte gUnk_08129004
|
||||
_080A70A8: .4byte gScreen
|
||||
.syntax divided
|
||||
@@ -1,53 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, lr}
|
||||
adds r5, r0, #0
|
||||
ldr r4, _080A7110 @ =gUnk_0200AF34
|
||||
movs r1, #0xc0
|
||||
lsls r1, r1, #2
|
||||
adds r0, r4, #0
|
||||
bl MemClear
|
||||
adds r2, r4, #0
|
||||
subs r2, #0x34
|
||||
movs r0, #0x7f
|
||||
strb r0, [r2, #0x13]
|
||||
strb r0, [r2, #0x14]
|
||||
ldrb r0, [r5]
|
||||
strh r0, [r2, #0x16]
|
||||
movs r0, #1
|
||||
ldrsb r0, [r5, r0]
|
||||
strh r0, [r2, #0x1c]
|
||||
ldrb r1, [r5, #2]
|
||||
subs r0, r4, #4
|
||||
strb r1, [r0]
|
||||
ldrb r0, [r5, #3]
|
||||
strh r0, [r2, #0x18]
|
||||
movs r0, #4
|
||||
ldrsb r0, [r5, r0]
|
||||
strh r0, [r2, #0x1e]
|
||||
ldrb r1, [r5, #5]
|
||||
subs r0, r4, #3
|
||||
strb r1, [r0]
|
||||
ldrb r0, [r5, #6]
|
||||
strh r0, [r2, #0x1a]
|
||||
movs r0, #7
|
||||
ldrsb r0, [r5, r0]
|
||||
strh r0, [r2, #0x20]
|
||||
ldrb r0, [r5, #8]
|
||||
subs r4, #2
|
||||
strb r0, [r4]
|
||||
adds r5, #9
|
||||
movs r4, #1
|
||||
rsbs r4, r4, #0
|
||||
_080A70FC:
|
||||
ldrb r0, [r5]
|
||||
ldrb r1, [r5, #1]
|
||||
bl CreateUIElement
|
||||
adds r5, #2
|
||||
movs r0, #0
|
||||
ldrsb r0, [r5, r0]
|
||||
cmp r0, r4
|
||||
bne _080A70FC
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_080A7110: .4byte gUnk_0200AF34
|
||||
.syntax divided
|
||||
@@ -53,7 +53,6 @@ extern struct_02019EE0 gMapDataBottomSpecial;
|
||||
|
||||
extern void sub_08056FEC(u32, struct_020227E8*);
|
||||
extern u32 sub_0805F46C(u32, Font*);
|
||||
extern void RecoverUI(u32 bottomPt, u32 topPt);
|
||||
extern void ClearTilemaps(void);
|
||||
extern void sub_0805194C(u32);
|
||||
extern WStruct* sub_0805F2C8(void);
|
||||
|
||||
@@ -24,7 +24,6 @@ extern void CreateMinishEntrance(u32 tile);
|
||||
extern u32 CreateRandomItemDrop(Entity*, u32);
|
||||
extern void DrawDirect(u32, u32);
|
||||
extern void DrawEntities(void);
|
||||
extern void DrawUIElements(void);
|
||||
extern bool32 EntityWithinDistance(Entity*, s32, s32, s32);
|
||||
extern void FlushSprites(void);
|
||||
extern LayerStruct* GetLayerByIndex(u32);
|
||||
@@ -79,7 +78,6 @@ extern void sub_08016AD2(Entity*);
|
||||
extern u32 sub_0801766C(Entity*);
|
||||
extern void sub_0801AFE4(void);
|
||||
extern void UpdateUIElements(void);
|
||||
extern void sub_0801C25C(void);
|
||||
extern void sub_0801E104(void);
|
||||
extern void sub_08027870(Entity*);
|
||||
extern void sub_08030118(u32);
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
#ifndef UI_H
|
||||
#define UI_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
extern void DrawUIElements(void);
|
||||
extern void CreateUIElement(u32, u32);
|
||||
extern u32 sub_0801C2F0(u32, u32);
|
||||
extern void sub_0801C25C(void);
|
||||
extern void DrawUI(void);
|
||||
extern void InitUI(bool32);
|
||||
extern void RefreshUI(void);
|
||||
extern void RecoverUI(u32 bottomPt, u32 topPt);
|
||||
|
||||
#endif
|
||||
@@ -16,6 +16,7 @@
|
||||
#include "subtask.h"
|
||||
#include "item.h"
|
||||
#include "game.h"
|
||||
#include "ui.h"
|
||||
|
||||
// copy, erase, start
|
||||
#define NUM_FILE_OPERATIONS 3
|
||||
|
||||
+1
-2
@@ -32,6 +32,7 @@
|
||||
#include "player.h"
|
||||
#include "transitions.h"
|
||||
#include "roomid.h"
|
||||
#include "ui.h"
|
||||
|
||||
// Game task
|
||||
|
||||
@@ -100,7 +101,6 @@ extern void sub_080185F8(void);
|
||||
extern void UpdateDoorTransition(void);
|
||||
extern bool32 CheckInitPortal(void);
|
||||
extern void UpdateCarriedObject(void);
|
||||
extern void DrawUI(void);
|
||||
extern void CollisionMain(void);
|
||||
extern void sub_0805BB74(s32);
|
||||
extern void CreateZeldaFollower(void);
|
||||
@@ -112,7 +112,6 @@ extern void UpdateScroll(void);
|
||||
extern void UpdateBgAnimations(void);
|
||||
extern void CleanUpGFXSlots(void);
|
||||
extern void sub_080ADE24(void);
|
||||
extern void InitUI(bool32);
|
||||
extern void sub_0801AE44(u32);
|
||||
extern void GenerateAreaHint(void);
|
||||
extern void ForceSetPlayerState(u32);
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "screen.h"
|
||||
#include "gba/m4a.h"
|
||||
#include "object.h"
|
||||
#include "ui.h"
|
||||
|
||||
extern u8 gUnk_03003DE0;
|
||||
extern u8 gUnk_03000C30;
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "game.h"
|
||||
#include "functions.h"
|
||||
#include "message.h"
|
||||
#include "ui.h"
|
||||
|
||||
extern const struct {
|
||||
u8 filler[7];
|
||||
|
||||
@@ -14,12 +14,12 @@
|
||||
#include "npc.h"
|
||||
#include "enemy.h"
|
||||
#include "functions.h"
|
||||
#include "ui.h"
|
||||
|
||||
extern u32 sub_08000E44(u32);
|
||||
extern void sub_080A3B74(void);
|
||||
extern s32 sub_080A3B48(void);
|
||||
extern void sub_0805ECEC(u32, u32, u32, u32);
|
||||
extern void sub_0801C2F0(u32, u32);
|
||||
extern void sub_0801E6C8(u32);
|
||||
extern void sub_0801E798(u32);
|
||||
extern WStruct* sub_0805F2C8(void);
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "itemMetaData.h"
|
||||
#include "structures.h"
|
||||
#include "functions.h"
|
||||
#include "ui.h"
|
||||
|
||||
extern void sub_080A4DB8(u32);
|
||||
|
||||
|
||||
+1
-2
@@ -6,6 +6,7 @@
|
||||
#include "functions.h"
|
||||
#include "message.h"
|
||||
#include "save.h"
|
||||
#include "ui.h"
|
||||
|
||||
#define MESSAGE_ADVANCE_KEYS (A_BUTTON | B_BUTTON | DPAD_ANY | R_BUTTON)
|
||||
#define MESSAGE_PRESS_ANY_ADVANCE_KEYS ((gInput.newKeys & MESSAGE_ADVANCE_KEYS) != 0)
|
||||
@@ -32,8 +33,6 @@ enum {
|
||||
|
||||
extern void WriteBit(u32*, u32);
|
||||
extern bool32 sub_0805EF40(Token* tok, const u8*);
|
||||
extern void RecoverUI(u32 bottomPt, u32 topPt);
|
||||
extern void RefreshUI(void);
|
||||
extern void sub_0805F918(u32, u32, void*);
|
||||
extern u32 DecToHex(u32, u8*, u32);
|
||||
|
||||
|
||||
+2
-3
@@ -8,6 +8,7 @@
|
||||
#include "kinstone.h"
|
||||
#include "functions.h"
|
||||
#include "item.h"
|
||||
#include "ui.h"
|
||||
|
||||
void InitScriptForEntity(Entity*, ScriptExecutionContext*, u16*);
|
||||
void InitScriptExecutionContext(ScriptExecutionContext* context, u16* script);
|
||||
@@ -152,8 +153,6 @@ void ScriptCommand_CameraTargetPlayer(Entity* entity, ScriptExecutionContext* co
|
||||
void ScriptCommand_0807F0B4(Entity* entity, ScriptExecutionContext* context);
|
||||
void ScriptCommand_0807F0C8(Entity* entity, ScriptExecutionContext* context);
|
||||
|
||||
extern void RecoverUI(u32);
|
||||
|
||||
typedef void (*ScriptCommand)(Entity*, ScriptExecutionContext*);
|
||||
|
||||
extern u16* gUnk_08001A7C[];
|
||||
@@ -455,7 +454,7 @@ void sub_0807DF38(void) {
|
||||
void sub_0807DF50(void) {
|
||||
gPauseMenuOptions.disabled = 0;
|
||||
gUnk_0200AF00.unk_1 = 0;
|
||||
RecoverUI(0);
|
||||
RecoverUI(0, 0);
|
||||
ResetPlayerAnimationAndAction();
|
||||
PlayerDropHeldObject();
|
||||
}
|
||||
|
||||
+347
-15
@@ -10,6 +10,7 @@
|
||||
#include "functions.h"
|
||||
#include "main.h"
|
||||
#include "message.h"
|
||||
#include "ui.h"
|
||||
|
||||
extern u8 gUnk_08128D38[];
|
||||
extern u8 gUnk_08128D43[];
|
||||
@@ -26,6 +27,8 @@ u32 sub_080A6F40();
|
||||
void sub_080A67C4(u32);
|
||||
void sub_080A68D4();
|
||||
u32 sub_080A69E0();
|
||||
void sub_080A6EE0(u32 param_1);
|
||||
struct_08127F94* sub_080A6A80(u32 param_1, u32 param_2);
|
||||
|
||||
extern void DrawDungeonMap(u32 floor, struct_02019EE0* data, u32 size);
|
||||
extern void LoadDungeonMap(void);
|
||||
@@ -68,7 +71,6 @@ extern void (*const gUnk_0812901C[])(void);
|
||||
|
||||
void sub_080A74F4(void);
|
||||
|
||||
extern void DrawUI(void);
|
||||
extern void UpdateCarriedObject(void);
|
||||
|
||||
extern void (*const gSubtasks[])(void);
|
||||
@@ -86,6 +88,30 @@ 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[];
|
||||
|
||||
typedef struct {
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
u8 unk3;
|
||||
u8 unk4;
|
||||
s8 unk5;
|
||||
u16 unk6;
|
||||
} struct_gUnk_08128D70;
|
||||
|
||||
extern const struct_gUnk_08128D70 gUnk_08128D70[];
|
||||
|
||||
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 +129,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 +230,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 +456,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,9 +488,46 @@ 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())
|
||||
void sub_080A65AC(void) {
|
||||
if (!gFadeControl.active) {
|
||||
gGenericMenu.unk2c++;
|
||||
switch (gMenu.transitionTimer) {
|
||||
case 0x1e:
|
||||
gGenericMenu.unk10.h[0] = gGenericMenu.unk10.h[1];
|
||||
gGenericMenu.unk2c = 0x20;
|
||||
SoundReq(SFX_103);
|
||||
default:
|
||||
gMenu.transitionTimer--;
|
||||
break;
|
||||
case 0:
|
||||
switch (gInput.newKeys) {
|
||||
case A_BUTTON:
|
||||
case B_BUTTON:
|
||||
case START_BUTTON:
|
||||
Subtask_Exit();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080A6608(void) {
|
||||
extern void (*const gUnk_08128E78[])(void);
|
||||
@@ -439,7 +607,40 @@ void sub_080A698C(u32 param_1, u32 param_2, u32 param_3, u32 param_4) {
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/subtask2/sub_080A69E0.inc", u32 sub_080A69E0())
|
||||
u32 sub_080A69E0(u32 param_1, u32 param_2) {
|
||||
const struct_08127F94* pbVar1;
|
||||
int iVar3;
|
||||
|
||||
if ((param_1 | param_2) == 0)
|
||||
return -1;
|
||||
|
||||
pbVar1 = sub_080A6A80(param_1, param_2);
|
||||
if (pbVar1 == NULL)
|
||||
return -1;
|
||||
|
||||
if (gMenu.field_0x3 != pbVar1->_4)
|
||||
return -1;
|
||||
|
||||
switch (gMenu.field_0x3) {
|
||||
case 4:
|
||||
case 7:
|
||||
if (gMenu.field_0x3 == 4) {
|
||||
iVar3 = 9;
|
||||
} else {
|
||||
iVar3 = 7;
|
||||
}
|
||||
param_2 -= gAreaRoomHeaders[iVar3]->map_y;
|
||||
break;
|
||||
break;
|
||||
case 15:
|
||||
param_1 -= 0x108;
|
||||
break;
|
||||
}
|
||||
|
||||
param_1 = (s32)((param_1 - pbVar1->_0 * 0x10) * 100) / 0x23a;
|
||||
param_2 = (s32)((param_2 - pbVar1->_1 * 0x10) * 100) / 0x23a;
|
||||
return (param_2 << 0x10) | param_1;
|
||||
}
|
||||
|
||||
struct_08127F94* sub_080A6A80(u32 param_1, u32 param_2) {
|
||||
struct_08127F94* pbVar1;
|
||||
@@ -507,7 +708,46 @@ void sub_080A6CA8(void) {
|
||||
SetFade(4, 8);
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/subtask2/sub_080A6CD8.inc", void sub_080A6CD8())
|
||||
void sub_080A6CD8(void) {
|
||||
u32 uVar1;
|
||||
u32 uVar2;
|
||||
|
||||
if (gFadeControl.active) {
|
||||
return;
|
||||
}
|
||||
|
||||
gMenu.field_0x0 = 1;
|
||||
uVar2 = 0;
|
||||
|
||||
switch (gInput.newKeys) {
|
||||
case DPAD_LEFT:
|
||||
case DPAD_UP:
|
||||
uVar2 = -1;
|
||||
break;
|
||||
case DPAD_RIGHT:
|
||||
case DPAD_DOWN:
|
||||
uVar2 = 1;
|
||||
break;
|
||||
case A_BUTTON:
|
||||
case START_BUTTON:
|
||||
gMenu.field_0x0 = 2;
|
||||
SetMenuType(2);
|
||||
MessageFromTarget(0x704);
|
||||
break;
|
||||
case B_BUTTON:
|
||||
gMenu.field_0x0 = 3;
|
||||
SetMenuType(3);
|
||||
break;
|
||||
}
|
||||
|
||||
if (uVar2) {
|
||||
uVar1 = sub_080A6D74(uVar2);
|
||||
if (uVar1 != gMenu.field_0x3) {
|
||||
gMenu.field_0x3 = uVar1;
|
||||
SoundReq(SFX_TEXTBOX_CHOICE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_080A6D74(u32 param_1) {
|
||||
u32 uVar1;
|
||||
@@ -581,9 +821,39 @@ void sub_080A6E44(void) {
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/subtask2/sub_080A6E70.inc", void sub_080A6E70())
|
||||
void sub_080A6E70(void) {
|
||||
u32 uVar1;
|
||||
u32 i;
|
||||
|
||||
ASM_FUNC("asm/non_matching/subtask2/sub_080A6EE0.inc", void sub_080A6EE0())
|
||||
gOamCmd._4 = 0;
|
||||
gOamCmd._6 = 0;
|
||||
gOamCmd._8 = 0x400;
|
||||
gGenericMenu.unk2c++;
|
||||
sub_080A6EE0(gMenu.field_0x3);
|
||||
if ((gGenericMenu.unk2c & 0x10) != 0) {
|
||||
uVar1 = 0x5d;
|
||||
} else {
|
||||
uVar1 = 0x5e;
|
||||
}
|
||||
|
||||
#ifdef EU
|
||||
DrawDirect(0x1fa, uVar1);
|
||||
#else
|
||||
DrawDirect(0x1fb, uVar1);
|
||||
#endif
|
||||
for (i = 0; i < 8; i++) {
|
||||
if ((gSave.windcrests & (1 << (i + 0x18))) != 0) {
|
||||
sub_080A6EE0(i);
|
||||
#ifdef EU
|
||||
DrawDirect(0x1fa, 0x5c);
|
||||
#else
|
||||
DrawDirect(0x1fb, 0x5c);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/subtask2/sub_080A6EE0.inc", void sub_080A6EE0(u32 param_1))
|
||||
|
||||
u32 sub_080A6F40(void) {
|
||||
extern u8 gUnk_08128F38[];
|
||||
@@ -611,11 +881,73 @@ void sub_080A6F6C(u32 param_1) {
|
||||
gScreen.bg0.yOffset = 2;
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/subtask2/sub_080A6FB4.inc", void sub_080A6FB4(u32 a, u32 b))
|
||||
void sub_080A6FB4(u32 param_1, u32 param_2) {
|
||||
extern u16 gUnk_08128FF0[];
|
||||
extern Font gUnk_08128FD8;
|
||||
extern Font gUnk_08128FC0;
|
||||
u32 uVar1;
|
||||
Font* font;
|
||||
|
||||
ASM_FUNC("asm/non_matching/subtask2/sub_080A7040.inc", void sub_080A7040(u32 a))
|
||||
uVar1 = 0;
|
||||
switch (param_2) {
|
||||
case 0:
|
||||
if ((gSave.windcrests & (1 << param_1)) == 0)
|
||||
break;
|
||||
case 2:
|
||||
uVar1 = gUnk_08127F94[param_1]._6;
|
||||
font = &gUnk_08128FC0;
|
||||
break;
|
||||
case 1:
|
||||
uVar1 = gUnk_08128FF0[param_1];
|
||||
font = &gUnk_08128FD8;
|
||||
break;
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/subtask2/sub_080A70AC.inc", void sub_080A70AC(const KeyButtonLayout* layout))
|
||||
if (gGenericMenu.unk2e.HWORD != uVar1) {
|
||||
gGenericMenu.unk2e.HWORD = uVar1;
|
||||
MemClear(&gUnk_020350F0, 0x100);
|
||||
if ((uVar1 & 0xff) != 0) {
|
||||
sub_0805F46C(uVar1, font);
|
||||
}
|
||||
gScreen.bg0.updated = 1;
|
||||
}
|
||||
gScreen.bg0.yOffset = 2;
|
||||
}
|
||||
|
||||
void sub_080A7040(u32 param_1) {
|
||||
extern Font gUnk_08129004;
|
||||
extern u8 gUnk_02022130[];
|
||||
if (gGenericMenu.unk2e.HWORD != param_1) {
|
||||
gGenericMenu.unk2e.HWORD = param_1;
|
||||
MemClear(gUnk_02022130, 0x300);
|
||||
MemCopy(gUnk_02022130 - 0x200, (void*)0x600e000, 0x800);
|
||||
if (GetInventoryValue(gUnk_08128D70[param_1].unk0) != 0) {
|
||||
sub_0805F46C(gUnk_08128D70[param_1].unk6, &gUnk_08129004);
|
||||
}
|
||||
gScreen.bg1.yOffset = 3;
|
||||
gScreen.bg1.updated = 1;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080A70AC(const KeyButtonLayout* layout) {
|
||||
MemClear(&gUnk_0200AF00.elements, 0x300);
|
||||
gUnk_0200AF00.unk_13 = 0x7f;
|
||||
gUnk_0200AF00.unk_14 = 0x7f;
|
||||
gUnk_0200AF00.buttonX[0] = layout->aButtonX;
|
||||
gUnk_0200AF00.buttonY[0] = (s8)layout->aButtonY;
|
||||
gUnk_0200AF00.unk_30[0] = layout->aButtonText;
|
||||
gUnk_0200AF00.buttonX[1] = layout->bButtonX;
|
||||
gUnk_0200AF00.buttonY[1] = (s8)layout->bButtonY;
|
||||
gUnk_0200AF00.unk_30[1] = layout->bButtonText;
|
||||
gUnk_0200AF00.buttonX[2] = layout->rButtonX;
|
||||
gUnk_0200AF00.buttonY[2] = (s8)layout->rButtonY;
|
||||
gUnk_0200AF00.unk_32 = layout->rButtonText;
|
||||
layout++;
|
||||
do {
|
||||
CreateUIElement(layout->aButtonX, layout->aButtonY);
|
||||
layout = (KeyButtonLayout*)&layout->aButtonText;
|
||||
} while ((s8)layout->aButtonX != -1);
|
||||
}
|
||||
|
||||
void SetMenuType(u32 menuType) {
|
||||
gMenu.menuType = menuType;
|
||||
@@ -624,12 +956,12 @@ void SetMenuType(u32 menuType) {
|
||||
}
|
||||
|
||||
void ResetUI(void) {
|
||||
MemClear(&gUI, 0x3b4);
|
||||
MemClear(&gUI, sizeof(gUI));
|
||||
}
|
||||
|
||||
void MenuFadeIn(u32 param_1, u32 param_2) {
|
||||
if (gUI.nextToLoad == 0) {
|
||||
MemClear(&gUI, 0x3b4);
|
||||
MemClear(&gUI, sizeof(gUI));
|
||||
gUI.lastState = param_1;
|
||||
gUI.field_0x3 = param_2;
|
||||
gUI.pauseFadeIn = gMain.substate;
|
||||
|
||||
Reference in New Issue
Block a user