Merge pull request #486 from hatal175/subtask3

Decompile some subtask2 functions
This commit is contained in:
notyourav
2022-04-06 21:33:32 -07:00
committed by GitHub
23 changed files with 371 additions and 806 deletions
@@ -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
-110
View File
@@ -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
-1
View File
@@ -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);
-2
View File
@@ -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);
+15
View File
@@ -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
+1
View File
@@ -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
View File
@@ -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);
+1
View File
@@ -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;
+1
View File
@@ -11,6 +11,7 @@
#include "game.h"
#include "functions.h"
#include "message.h"
#include "ui.h"
extern const struct {
u8 filler[7];
+1 -1
View File
@@ -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);
+1
View File
@@ -11,6 +11,7 @@
#include "itemMetaData.h"
#include "structures.h"
#include "functions.h"
#include "ui.h"
extern void sub_080A4DB8(u32);
+1 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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;