mirror of
https://github.com/zeldaret/tmc
synced 2026-05-31 01:16:04 -04:00
Decompile some UI
This commit is contained in:
+34
-32
@@ -280,8 +280,8 @@ UpdateCollision: @ 0x080B1C54
|
||||
strb r1, [r3]
|
||||
bx lr
|
||||
|
||||
arm_func_start CollideAll
|
||||
CollideAll: @ 0x080B1C7C
|
||||
arm_func_start arm_CollideAll
|
||||
arm_CollideAll: @ 0x080B1C7C
|
||||
push {r4, r5, r6, r7, r8, sb, sl, lr}
|
||||
add r0, pc, #0x104 @ =_080B1D8C
|
||||
ldm r0, {r8, sb, sl}
|
||||
@@ -326,7 +326,7 @@ _080B1CC8:
|
||||
orrs r0, r0, r2
|
||||
bne _080B1CC8
|
||||
_080B1D20:
|
||||
bl CalcCollision
|
||||
bl arm_CalcCollision
|
||||
cmp r0, #0
|
||||
beq _080B1CC8
|
||||
ldrb r3, [r4, #0x3c]
|
||||
@@ -360,8 +360,8 @@ _080B1D8C: .4byte gUnk_02018EA0
|
||||
_080B1D90: .4byte gCollidableList
|
||||
_080B1D94: .4byte gCollidableCount
|
||||
|
||||
arm_func_start CalcCollision
|
||||
CalcCollision: @ 0x080B1D98
|
||||
arm_func_start arm_CalcCollision
|
||||
arm_CalcCollision: @ 0x080B1D98
|
||||
@ r6 = this, r7 = other
|
||||
|
||||
push {r2, r3, r6, r7, r8, sb, ip, lr}
|
||||
@@ -422,7 +422,7 @@ CalcCollision: @ 0x080B1D98
|
||||
_080B1E74:
|
||||
mov r2, #0
|
||||
mov ip, #0
|
||||
bl CalcCollisionDirection
|
||||
bl arm_CalcCollisionDirection
|
||||
mov r6, r0
|
||||
ldrb r1, [r5, #0x3f]
|
||||
mov r0, #0x22
|
||||
@@ -473,8 +473,8 @@ _080B1F28:
|
||||
mov r0, #0
|
||||
b _080B1F20
|
||||
|
||||
arm_func_start sub_080B1F30
|
||||
sub_080B1F30: @ 0x080B1F30
|
||||
arm_func_start arm_sub_080B1F30
|
||||
arm_sub_080B1F30: @ 0x080B1F30
|
||||
ldrh r0, [r4, #0x2e]
|
||||
ldrh r1, [r5, #0x2e]
|
||||
sub r0, r0, r1
|
||||
@@ -487,8 +487,8 @@ sub_080B1F30: @ 0x080B1F30
|
||||
sub r1, r1, r2
|
||||
bx lr
|
||||
|
||||
arm_func_start sub_080B1F5C
|
||||
sub_080B1F5C: @ 0x080B1F5C
|
||||
arm_func_start arm_sub_080B1F5C
|
||||
arm_sub_080B1F5C: @ 0x080B1F5C
|
||||
ldrh r0, [r4, #0x2e]
|
||||
ldrh r1, [r5, #0x2e]
|
||||
sub r0, r0, r1
|
||||
@@ -501,8 +501,8 @@ sub_080B1F5C: @ 0x080B1F5C
|
||||
add r1, r1, r2
|
||||
bx lr
|
||||
|
||||
arm_func_start sub_080B1F88
|
||||
sub_080B1F88: @ 0x080B1F88
|
||||
arm_func_start arm_sub_080B1F88
|
||||
arm_sub_080B1F88: @ 0x080B1F88
|
||||
ldrh r0, [r4, #0x2e]
|
||||
ldrh r1, [r5, #0x2e]
|
||||
sub r0, r0, r1
|
||||
@@ -511,8 +511,8 @@ sub_080B1F88: @ 0x080B1F88
|
||||
sub r1, r1, r2
|
||||
bx lr
|
||||
|
||||
arm_func_start sub_080B1FA4
|
||||
sub_080B1FA4: @ 0x080B1FA4
|
||||
arm_func_start arm_sub_080B1FA4
|
||||
arm_sub_080B1FA4: @ 0x080B1FA4
|
||||
ldrb r0, [r5, #0x15]
|
||||
eor r0, r0, #0x10
|
||||
b _080B1FB4
|
||||
@@ -532,8 +532,8 @@ _080B1FB4:
|
||||
and r6, r6, #0x1f
|
||||
bx lr
|
||||
|
||||
arm_func_start sub_080B1FE4
|
||||
sub_080B1FE4: @ 0x080B1FE4
|
||||
arm_func_start arm_sub_080B1FE4
|
||||
arm_sub_080B1FE4: @ 0x080B1FE4
|
||||
ldrb r6, [r4, #0x15]
|
||||
_080B1FE8:
|
||||
bx lr
|
||||
@@ -630,8 +630,8 @@ _080B20FC:
|
||||
mov r0, #1
|
||||
bx lr
|
||||
|
||||
arm_func_start MakeFadeBuff256
|
||||
MakeFadeBuff256: @ 0x080B2124
|
||||
arm_func_start arm_MakeFadeBuff256
|
||||
arm_MakeFadeBuff256: @ 0x080B2124
|
||||
push {r4, r5, r6, r7, r8, sb, sl, fp}
|
||||
mul r3, r2, r3
|
||||
mov r4, #0x400
|
||||
@@ -670,7 +670,7 @@ _080B21A4: .4byte 0x01010101
|
||||
_080B21A8: .4byte 0x02000000 + 6 @ brightness preference
|
||||
_080B21AC: .4byte gUnk_08000F54
|
||||
|
||||
_ClearAndUpdateEntities:
|
||||
arm_ClearAndUpdateEntities:
|
||||
ldr r11, _080B2270 @ =gUpdateContext
|
||||
ldr r1, [r11]
|
||||
ldm r1, {r7, r8, r9, r10}
|
||||
@@ -686,8 +686,8 @@ _ClearAndUpdateEntities:
|
||||
@ void* restore_sp;
|
||||
@ }
|
||||
|
||||
arm_func_start _UpdateEntities
|
||||
_UpdateEntities: @ 0x080B21B0 @
|
||||
arm_func_start arm_UpdateEntities
|
||||
arm_UpdateEntities: @ 0x080B21B0 @
|
||||
@ UpdateEntities starts here
|
||||
@ arg0 (r0) : 0 = entities, 1 = managers
|
||||
ldr r1, _080B2274 @ =gUnk_080026A4
|
||||
@@ -742,8 +742,8 @@ _080B2270: .4byte gUpdateContext
|
||||
_080B2274: .4byte gUnk_080026A4
|
||||
_080B2278: .4byte gUpdateContext
|
||||
|
||||
arm_func_start sub_080B227C
|
||||
sub_080B227C: @ 0x080B227C
|
||||
arm_func_start arm_sub_080B227C
|
||||
arm_sub_080B227C: @ 0x080B227C
|
||||
push {r4, r5, r6, r7, r8, lr}
|
||||
ldr r2, [r0, #0x48]
|
||||
cmp r2, #0
|
||||
@@ -812,8 +812,8 @@ _080B236C:
|
||||
.align 2, 0
|
||||
_080B2378: .4byte sub_080044AE
|
||||
|
||||
arm_func_start CalcCollisionDirection
|
||||
CalcCollisionDirection: @ 0x080B237C
|
||||
arm_func_start arm_CalcCollisionDirection
|
||||
arm_CalcCollisionDirection: @ 0x080B237C
|
||||
subs r2, r2, r0
|
||||
movpl r0, #0
|
||||
movmi r0, #0x20
|
||||
@@ -845,8 +845,8 @@ CalcCollisionDirection: @ 0x080B237C
|
||||
.align 2, 0
|
||||
_080B23EC: .4byte gUnk_0800464E
|
||||
|
||||
arm_func_start sub_080B23F0
|
||||
sub_080B23F0: @ 0x080B23F0
|
||||
arm_func_start arm_DrawEntities
|
||||
arm_DrawEntities: @ 0x080B23F0
|
||||
.ifdef EU
|
||||
push {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
ldr fp, _080B2A30 @ =gOAMControls
|
||||
@@ -1528,8 +1528,8 @@ sub_080B27F4: @ 0x080B27F4
|
||||
add sl, sl, r0
|
||||
b sub_080B2874
|
||||
|
||||
arm_func_start sub_080B280C
|
||||
sub_080B280C: @ 0x080B280C
|
||||
arm_func_start arm_DrawDirect
|
||||
arm_DrawDirect: @ 0x080B280C
|
||||
cmp r2, #0xff
|
||||
bxeq lr
|
||||
ldr r3, _080B2A60 @ =gFrameObjLists
|
||||
@@ -1537,7 +1537,7 @@ sub_080B280C: @ 0x080B280C
|
||||
add r1, r1, r2, lsl #2
|
||||
ldr r1, [r3, r1]
|
||||
add r1, r1, r3
|
||||
_080B2828:
|
||||
arm_sub_080ADA04:
|
||||
ldrb r2, [r1]
|
||||
cmp r2, #0
|
||||
bxeq lr
|
||||
@@ -1741,8 +1741,9 @@ _080B2074EU:
|
||||
cmp r5, #0x1f
|
||||
bls _080B1FECEU
|
||||
bx sl
|
||||
arm_func_start sub_080B2088
|
||||
sub_080B2088: @ 0x080B2088
|
||||
|
||||
arm_func_start arm_sub_080B2088
|
||||
arm_sub_080B2088: @ 0x080B2088
|
||||
ldr r5, [r4, #0x48]
|
||||
cmp r5, #0
|
||||
bxeq lr
|
||||
@@ -1856,6 +1857,7 @@ _080B2074EU:
|
||||
cmp r5, #0x1f
|
||||
bls _080B1FECEU
|
||||
bx sl
|
||||
|
||||
arm_func_start sub_080B2088
|
||||
sub_080B2088: @ 0x080B2088
|
||||
ldr r5, [r4, #0x48]
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, lr}
|
||||
adds r3, r0, #0
|
||||
ldr r0, _0801CF10 @ =gUnk_0200AF00
|
||||
adds r1, r0, #0
|
||||
adds r1, #0x24
|
||||
ldrb r4, [r1]
|
||||
cmp r4, #1
|
||||
bne _0801CF0E
|
||||
movs r2, #2
|
||||
movs r0, #2
|
||||
strb r0, [r1]
|
||||
movs r1, #0
|
||||
movs r0, #0x10
|
||||
strh r0, [r3, #0xc]
|
||||
movs r0, #0x90
|
||||
strh r0, [r3, #0xe]
|
||||
strb r1, [r3, #6]
|
||||
movs r0, #7
|
||||
strb r0, [r3, #1]
|
||||
strb r4, [r3, #4]
|
||||
ldrb r0, [r3]
|
||||
orrs r0, r2
|
||||
strb r0, [r3]
|
||||
ldr r1, _0801CF14 @ =gUnk_080C9094
|
||||
adds r0, r3, #0
|
||||
bl sub_0801CAB8
|
||||
_0801CF0E:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0801CF10: .4byte gUnk_0200AF00
|
||||
_0801CF14: .4byte gUnk_080C9094
|
||||
.syntax divided
|
||||
@@ -41,7 +41,7 @@
|
||||
_080A70FC:
|
||||
ldrb r0, [r5]
|
||||
ldrb r1, [r5, #1]
|
||||
bl sub_0801CA6C
|
||||
bl CreateUIElement
|
||||
adds r5, #2
|
||||
movs r0, #0
|
||||
ldrsb r0, [r5, r0]
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, lr}
|
||||
adds r5, r0, #0
|
||||
ldrb r0, [r5, #2]
|
||||
movs r6, #8
|
||||
cmp r0, #0
|
||||
bne _0801CC10
|
||||
movs r6, #4
|
||||
cmp r0, #0
|
||||
bne _0801CC10
|
||||
ldr r3, _0801CC08 @ =gUnk_0200AF00
|
||||
ldrb r0, [r3, #1]
|
||||
ldrb r2, [r5, #1]
|
||||
asrs r0, r2
|
||||
movs r1, #1
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0801CBF6
|
||||
ldr r0, _0801CC0C @ =gMessage
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0801CC10
|
||||
_0801CBF6:
|
||||
lsls r0, r2, #1
|
||||
adds r1, r3, #0
|
||||
adds r1, #0x1c
|
||||
adds r0, r0, r1
|
||||
movs r1, #0
|
||||
ldrsh r0, [r0, r1]
|
||||
adds r1, r0, #0
|
||||
subs r1, #0x28
|
||||
b _0801CC1E
|
||||
.align 2, 0
|
||||
_0801CC08: .4byte gUnk_0200AF00
|
||||
_0801CC0C: .4byte gMessage
|
||||
_0801CC10:
|
||||
ldr r1, _0801CC7C @ =gUnk_0200AF00
|
||||
ldrb r0, [r5, #1]
|
||||
lsls r0, r0, #1
|
||||
adds r1, #0x1c
|
||||
adds r0, r0, r1
|
||||
movs r2, #0
|
||||
ldrsh r1, [r0, r2]
|
||||
_0801CC1E:
|
||||
movs r2, #0xe
|
||||
ldrsh r0, [r5, r2]
|
||||
subs r4, r1, r0
|
||||
adds r1, r4, #0
|
||||
cmp r4, #0
|
||||
bge _0801CC2C
|
||||
rsbs r4, r4, #0
|
||||
_0801CC2C:
|
||||
cmp r6, r4
|
||||
bgt _0801CC32
|
||||
adds r4, r6, #0
|
||||
_0801CC32:
|
||||
adds r0, r1, #0
|
||||
bl sub_08000E44
|
||||
muls r4, r0, r4
|
||||
cmp r4, #0
|
||||
beq _0801CC44
|
||||
ldrh r0, [r5, #0xe]
|
||||
adds r0, r0, r4
|
||||
strh r0, [r5, #0xe]
|
||||
_0801CC44:
|
||||
ldr r0, _0801CC7C @ =gUnk_0200AF00
|
||||
ldrb r1, [r5, #1]
|
||||
lsls r1, r1, #1
|
||||
adds r0, #0x16
|
||||
adds r1, r1, r0
|
||||
movs r0, #0
|
||||
ldrsh r1, [r1, r0]
|
||||
movs r2, #0xc
|
||||
ldrsh r0, [r5, r2]
|
||||
subs r4, r1, r0
|
||||
adds r1, r4, #0
|
||||
cmp r4, #0
|
||||
bge _0801CC60
|
||||
rsbs r4, r4, #0
|
||||
_0801CC60:
|
||||
cmp r6, r4
|
||||
bgt _0801CC66
|
||||
adds r4, r6, #0
|
||||
_0801CC66:
|
||||
adds r0, r1, #0
|
||||
bl sub_08000E44
|
||||
muls r4, r0, r4
|
||||
cmp r4, #0
|
||||
beq _0801CC78
|
||||
ldrh r0, [r5, #0xc]
|
||||
adds r0, r0, r4
|
||||
strh r0, [r5, #0xc]
|
||||
_0801CC78:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_0801CC7C: .4byte gUnk_0200AF00
|
||||
.syntax divided
|
||||
@@ -0,0 +1,41 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r5, r0, #0
|
||||
adds r6, r1, #0
|
||||
movs r3, #0
|
||||
ldr r7, _0801CAA8 @ =gUnk_0200AF34
|
||||
movs r0, #1
|
||||
mov ip, r0
|
||||
ldr r1, _0801CAAC @ =gUIElementDefinitions
|
||||
lsls r0, r5, #4
|
||||
adds r4, r0, r1
|
||||
_0801CA80:
|
||||
lsls r0, r3, #5
|
||||
adds r1, r0, r7
|
||||
ldrb r2, [r1]
|
||||
movs r0, #1
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
bne _0801CAB0
|
||||
strb r5, [r1, #1]
|
||||
strb r6, [r1, #2]
|
||||
movs r0, #0xff
|
||||
strb r0, [r1, #0x10]
|
||||
mov r0, ip
|
||||
orrs r0, r2
|
||||
strb r0, [r1]
|
||||
ldrh r0, [r4, #4]
|
||||
strh r0, [r1, #0x1a]
|
||||
ldrb r0, [r4, #0xc]
|
||||
strb r0, [r1, #3]
|
||||
b _0801CAB6
|
||||
.align 2, 0
|
||||
_0801CAA8: .4byte gUnk_0200AF34
|
||||
_0801CAAC: .4byte gUIElementDefinitions
|
||||
_0801CAB0:
|
||||
adds r3, #1
|
||||
cmp r3, #0x17
|
||||
bls _0801CA80
|
||||
_0801CAB6:
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.syntax divided
|
||||
@@ -0,0 +1,155 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, lr}
|
||||
movs r2, #0
|
||||
ldr r5, _0801C884 @ =gUnk_0200AF00
|
||||
ldrb r1, [r5, #1]
|
||||
movs r0, #0x20
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0801C878
|
||||
ldr r0, _0801C888 @ =gPlayerState
|
||||
adds r0, #0xa0
|
||||
ldrb r1, [r0]
|
||||
rsbs r0, r1, #0
|
||||
orrs r0, r1
|
||||
lsrs r2, r0, #0x1f
|
||||
_0801C878:
|
||||
cmp r2, #0
|
||||
bne _0801C88C
|
||||
bl sub_0801C824
|
||||
b _0801C984
|
||||
.align 2, 0
|
||||
_0801C884: .4byte gUnk_0200AF00
|
||||
_0801C888: .4byte gPlayerState
|
||||
_0801C88C:
|
||||
ldrb r0, [r5, #4]
|
||||
ldr r4, _0801C92C @ =gUnk_02034D30
|
||||
cmp r0, #0x28
|
||||
bls _0801C896
|
||||
adds r4, #0x40
|
||||
_0801C896:
|
||||
ldr r0, _0801C930 @ =gPlayerState
|
||||
adds r0, #0xa4
|
||||
movs r1, #0
|
||||
ldrsh r0, [r0, r1]
|
||||
adds r0, #0x13
|
||||
movs r1, #0x14
|
||||
bl Div
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0x28
|
||||
bls _0801C8AE
|
||||
movs r1, #0x28
|
||||
_0801C8AE:
|
||||
ldrb r0, [r5, #6]
|
||||
cmp r0, #0
|
||||
beq _0801C8BA
|
||||
ldrb r0, [r5, #7]
|
||||
cmp r0, r1
|
||||
beq _0801C910
|
||||
_0801C8BA:
|
||||
movs r6, #1
|
||||
strb r6, [r5, #6]
|
||||
strb r1, [r5, #7]
|
||||
adds r0, r1, #0
|
||||
movs r1, #4
|
||||
bl Div
|
||||
adds r3, r0, #0
|
||||
adds r5, r1, #0
|
||||
ldr r1, _0801C934 @ =0x0000F016
|
||||
adds r0, r1, #0
|
||||
strh r0, [r4]
|
||||
ldr r1, _0801C938 @ =0x0000F416
|
||||
adds r0, r1, #0
|
||||
strh r0, [r4, #0x16]
|
||||
ldr r2, _0801C93C @ =0x040000D4
|
||||
movs r0, #0xa
|
||||
subs r0, r0, r3
|
||||
lsls r0, r0, #1
|
||||
ldr r1, _0801C940 @ =gUnk_080C8F54
|
||||
adds r0, r0, r1
|
||||
str r0, [r2]
|
||||
adds r0, r4, #2
|
||||
str r0, [r2, #4]
|
||||
ldr r0, _0801C944 @ =0x8000000A
|
||||
str r0, [r2, #8]
|
||||
ldr r0, [r2, #8]
|
||||
cmp r5, #0
|
||||
beq _0801C90C
|
||||
lsls r2, r3, #1
|
||||
adds r2, r2, r4
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x17
|
||||
ldr r3, _0801C948 @ =0x000003FF
|
||||
adds r1, r3, #0
|
||||
ands r0, r1
|
||||
movs r3, #0xf0
|
||||
lsls r3, r3, #8
|
||||
adds r1, r3, #0
|
||||
orrs r0, r1
|
||||
strh r0, [r2, #2]
|
||||
_0801C90C:
|
||||
ldr r0, _0801C94C @ =gScreen
|
||||
strh r6, [r0, #0xe]
|
||||
_0801C910:
|
||||
ldr r0, _0801C930 @ =gPlayerState
|
||||
adds r0, #0xa0
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #5
|
||||
bgt _0801C962
|
||||
cmp r0, #4
|
||||
blt _0801C962
|
||||
ldr r2, _0801C950 @ =gUnk_0200AF00
|
||||
ldrb r1, [r2, #9]
|
||||
adds r4, r2, #0
|
||||
cmp r0, #4
|
||||
bne _0801C954
|
||||
adds r0, r1, #2
|
||||
b _0801C956
|
||||
.align 2, 0
|
||||
_0801C92C: .4byte gUnk_02034D30
|
||||
_0801C930: .4byte gPlayerState
|
||||
_0801C934: .4byte 0x0000F016
|
||||
_0801C938: .4byte 0x0000F416
|
||||
_0801C93C: .4byte 0x040000D4
|
||||
_0801C940: .4byte gUnk_080C8F54
|
||||
_0801C944: .4byte 0x8000000A
|
||||
_0801C948: .4byte 0x000003FF
|
||||
_0801C94C: .4byte gScreen
|
||||
_0801C950: .4byte gUnk_0200AF00
|
||||
_0801C954:
|
||||
adds r0, r1, #1
|
||||
_0801C956:
|
||||
strb r0, [r2, #9]
|
||||
ldrb r0, [r4, #9]
|
||||
lsrs r3, r0, #4
|
||||
movs r0, #3
|
||||
ands r3, r0
|
||||
b _0801C966
|
||||
_0801C962:
|
||||
movs r3, #0
|
||||
ldr r4, _0801C988 @ =gUnk_0200AF00
|
||||
_0801C966:
|
||||
ldrb r0, [r4, #8]
|
||||
cmp r3, r0
|
||||
beq _0801C984
|
||||
strb r3, [r4, #8]
|
||||
ldr r4, _0801C98C @ =0x0600C2C0
|
||||
ldr r1, _0801C990 @ =0x040000D4
|
||||
ldr r2, _0801C994 @ =gUnk_080C8F7C
|
||||
lsls r0, r3, #2
|
||||
adds r0, r0, r2
|
||||
ldr r0, [r0]
|
||||
str r0, [r1]
|
||||
str r4, [r1, #4]
|
||||
ldr r0, _0801C998 @ =0x84000030
|
||||
str r0, [r1, #8]
|
||||
ldr r0, [r1, #8]
|
||||
_0801C984:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_0801C988: .4byte gUnk_0200AF00
|
||||
_0801C98C: .4byte 0x0600C2C0
|
||||
_0801C990: .4byte 0x040000D4
|
||||
_0801C994: .4byte gUnk_080C8F7C
|
||||
_0801C998: .4byte 0x84000030
|
||||
.syntax divided
|
||||
@@ -0,0 +1,196 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
ldr r2, _0801C6CC @ =gUnk_0200AF00
|
||||
ldrb r1, [r2, #1]
|
||||
movs r0, #0x10
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0801C6D0
|
||||
bl sub_0801C824
|
||||
bl sub_0801C66C
|
||||
b _0801C802
|
||||
.align 2, 0
|
||||
_0801C6CC: .4byte gUnk_0200AF00
|
||||
_0801C6D0:
|
||||
ldr r5, _0801C6F8 @ =gSave
|
||||
adds r0, r5, #0
|
||||
adds r0, #0xab
|
||||
ldrb r0, [r0]
|
||||
lsrs r4, r0, #1
|
||||
ldrb r0, [r2, #4]
|
||||
cmp r4, r0
|
||||
beq _0801C6EA
|
||||
strb r4, [r2, #4]
|
||||
bl sub_0801C824
|
||||
bl sub_0801C66C
|
||||
_0801C6EA:
|
||||
adds r1, r5, #0
|
||||
adds r1, #0xaa
|
||||
ldrb r0, [r1]
|
||||
cmp r0, #1
|
||||
beq _0801C6FC
|
||||
lsrs r1, r0, #1
|
||||
b _0801C6FE
|
||||
.align 2, 0
|
||||
_0801C6F8: .4byte gSave
|
||||
_0801C6FC:
|
||||
movs r1, #1
|
||||
_0801C6FE:
|
||||
cmp r1, r4
|
||||
ble _0801C704
|
||||
adds r1, r4, #0
|
||||
_0801C704:
|
||||
movs r4, #0
|
||||
ldr r0, _0801C748 @ =gUnk_0200AF00
|
||||
ldrb r2, [r0, #3]
|
||||
adds r7, r0, #0
|
||||
cmp r1, r2
|
||||
beq _0801C718
|
||||
movs r4, #1
|
||||
cmp r1, r2
|
||||
ble _0801C718
|
||||
movs r4, #2
|
||||
_0801C718:
|
||||
cmp r4, #1
|
||||
beq _0801C750
|
||||
cmp r4, #2
|
||||
bne _0801C756
|
||||
ldrb r0, [r7, #5]
|
||||
adds r1, r0, #1
|
||||
strb r1, [r7, #5]
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r1, r0, #0x18
|
||||
movs r0, #1
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0801C74C
|
||||
movs r0, #7
|
||||
ands r1, r0
|
||||
cmp r1, #0
|
||||
bne _0801C740
|
||||
movs r0, #0x71
|
||||
bl SoundReq
|
||||
_0801C740:
|
||||
ldrb r0, [r7, #3]
|
||||
adds r0, #1
|
||||
strb r0, [r7, #3]
|
||||
b _0801C75A
|
||||
.align 2, 0
|
||||
_0801C748: .4byte gUnk_0200AF00
|
||||
_0801C74C:
|
||||
movs r4, #0
|
||||
b _0801C75A
|
||||
_0801C750:
|
||||
ldrb r0, [r7, #3]
|
||||
subs r0, #1
|
||||
strb r0, [r7, #3]
|
||||
_0801C756:
|
||||
movs r0, #0
|
||||
strb r0, [r7, #5]
|
||||
_0801C75A:
|
||||
ldrb r0, [r7, #2]
|
||||
cmp r0, #0
|
||||
beq _0801C764
|
||||
cmp r4, #0
|
||||
beq _0801C802
|
||||
_0801C764:
|
||||
movs r0, #2
|
||||
strb r0, [r7, #2]
|
||||
ldrb r0, [r7, #3]
|
||||
lsrs r3, r0, #2
|
||||
cmp r3, #0xa
|
||||
ble _0801C77A
|
||||
movs r1, #0xa
|
||||
mov r8, r1
|
||||
adds r6, r3, #0
|
||||
subs r6, #0xa
|
||||
b _0801C77E
|
||||
_0801C77A:
|
||||
mov r8, r3
|
||||
movs r6, #0
|
||||
_0801C77E:
|
||||
ldrb r0, [r7, #4]
|
||||
lsrs r4, r0, #2
|
||||
adds r1, r4, #0
|
||||
cmp r4, #0xa
|
||||
ble _0801C78A
|
||||
movs r4, #0xa
|
||||
_0801C78A:
|
||||
adds r2, r1, #0
|
||||
subs r2, #0xa
|
||||
ldr r0, _0801C808 @ =gUnk_080C8F2C
|
||||
mov ip, r0
|
||||
cmp r2, #0
|
||||
ble _0801C7B8
|
||||
ldr r5, _0801C80C @ =gUnk_02034D30
|
||||
ldr r1, _0801C810 @ =0x0000F010
|
||||
adds r0, r1, #0
|
||||
strh r0, [r5]
|
||||
ldr r1, _0801C814 @ =0x040000D4
|
||||
movs r0, #0xa
|
||||
subs r0, r0, r6
|
||||
lsls r0, r0, #1
|
||||
add r0, ip
|
||||
str r0, [r1]
|
||||
adds r0, r5, #2
|
||||
str r0, [r1, #4]
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #0x18
|
||||
orrs r2, r0
|
||||
str r2, [r1, #8]
|
||||
ldr r0, [r1, #8]
|
||||
_0801C7B8:
|
||||
ldr r5, _0801C818 @ =gUnk_02034CF0
|
||||
ldr r2, _0801C810 @ =0x0000F010
|
||||
adds r0, r2, #0
|
||||
strh r0, [r5]
|
||||
ldr r1, _0801C814 @ =0x040000D4
|
||||
movs r0, #0xa
|
||||
mov r2, r8
|
||||
subs r0, r0, r2
|
||||
lsls r0, r0, #1
|
||||
add r0, ip
|
||||
str r0, [r1]
|
||||
adds r0, r5, #2
|
||||
str r0, [r1, #4]
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #0x18
|
||||
orrs r4, r0
|
||||
str r4, [r1, #8]
|
||||
ldr r0, [r1, #8]
|
||||
ldrb r0, [r7, #3]
|
||||
movs r1, #3
|
||||
ands r1, r0
|
||||
cmp r1, #0
|
||||
beq _0801C7FC
|
||||
cmp r3, #9
|
||||
ble _0801C7EE
|
||||
subs r3, #0xa
|
||||
adds r5, #0x40
|
||||
_0801C7EE:
|
||||
lsls r0, r3, #1
|
||||
adds r0, r0, r5
|
||||
adds r1, #0x11
|
||||
ldr r3, _0801C81C @ =0xFFFFF000
|
||||
adds r2, r3, #0
|
||||
orrs r1, r2
|
||||
strh r1, [r0, #2]
|
||||
_0801C7FC:
|
||||
ldr r1, _0801C820 @ =gScreen
|
||||
movs r0, #1
|
||||
strh r0, [r1, #0xe]
|
||||
_0801C802:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_0801C808: .4byte gUnk_080C8F2C
|
||||
_0801C80C: .4byte gUnk_02034D30
|
||||
_0801C810: .4byte 0x0000F010
|
||||
_0801C814: .4byte 0x040000D4
|
||||
_0801C818: .4byte gUnk_02034CF0
|
||||
_0801C81C: .4byte 0xFFFFF000
|
||||
_0801C820: .4byte gScreen
|
||||
.syntax divided
|
||||
@@ -0,0 +1,101 @@
|
||||
.syntax unified
|
||||
push {r4, r5, lr}
|
||||
ldr r4, _0801C9E0 @ =gUnk_0200AF00
|
||||
ldrb r1, [r4, #1]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0801C9B2
|
||||
bl AreaHasKeys
|
||||
cmp r0, #0
|
||||
bne _0801C9EC
|
||||
_0801C9B2:
|
||||
ldrb r0, [r4, #0x10]
|
||||
cmp r0, #0
|
||||
beq _0801CA50
|
||||
movs r0, #0
|
||||
strb r0, [r4, #0x10]
|
||||
ldr r2, _0801C9E4 @ =gUnk_020350E2
|
||||
strh r0, [r2]
|
||||
strh r0, [r2, #2]
|
||||
strh r0, [r2, #4]
|
||||
strh r0, [r2, #6]
|
||||
adds r1, r2, #0
|
||||
adds r1, #0x40
|
||||
strh r0, [r1]
|
||||
adds r1, #2
|
||||
strh r0, [r1]
|
||||
adds r1, #2
|
||||
strh r0, [r1]
|
||||
adds r1, #2
|
||||
strh r0, [r1]
|
||||
ldr r1, _0801C9E8 @ =gScreen
|
||||
movs r0, #1
|
||||
strh r0, [r1, #0xe]
|
||||
b _0801CA50
|
||||
.align 2, 0
|
||||
_0801C9E0: .4byte gUnk_0200AF00
|
||||
_0801C9E4: .4byte gUnk_020350E2
|
||||
_0801C9E8: .4byte gScreen
|
||||
_0801C9EC:
|
||||
ldrb r0, [r4, #0x10]
|
||||
cmp r0, #0
|
||||
bne _0801CA1E
|
||||
ldr r2, _0801CA54 @ =gUnk_020350E2
|
||||
adds r1, r2, #0
|
||||
adds r1, #0x40
|
||||
ldr r3, _0801CA58 @ =0x0000F01C
|
||||
strh r3, [r2]
|
||||
adds r0, r3, #1
|
||||
strh r0, [r2, #2]
|
||||
adds r0, r3, #2
|
||||
strh r0, [r1]
|
||||
adds r0, r3, #3
|
||||
strh r0, [r1, #2]
|
||||
adds r3, #0x5a
|
||||
strh r3, [r2, #4]
|
||||
adds r0, r3, #1
|
||||
strh r0, [r1, #4]
|
||||
adds r0, r3, #2
|
||||
strh r0, [r2, #6]
|
||||
adds r0, r3, #3
|
||||
strh r0, [r1, #6]
|
||||
ldr r1, _0801CA5C @ =gScreen
|
||||
movs r0, #1
|
||||
strh r0, [r1, #0xe]
|
||||
_0801CA1E:
|
||||
ldr r0, _0801CA60 @ =gSave
|
||||
ldr r3, _0801CA64 @ =gArea
|
||||
ldrb r1, [r3, #3]
|
||||
ldr r5, _0801CA68 @ =0x0000045C
|
||||
adds r2, r0, r5
|
||||
adds r1, r1, r2
|
||||
ldrb r0, [r4, #0x12]
|
||||
ldrb r1, [r1]
|
||||
cmp r0, r1
|
||||
bne _0801CA38
|
||||
ldrb r0, [r4, #0x10]
|
||||
cmp r0, #0
|
||||
bne _0801CA50
|
||||
_0801CA38:
|
||||
movs r0, #2
|
||||
strb r0, [r4, #0x10]
|
||||
ldrb r0, [r3, #3]
|
||||
adds r0, r0, r2
|
||||
ldrb r0, [r0]
|
||||
strb r0, [r4, #0x12]
|
||||
ldrb r1, [r4, #0x12]
|
||||
movs r0, #0x76
|
||||
movs r2, #0
|
||||
movs r3, #2
|
||||
bl sub_0801C5E0
|
||||
_0801CA50:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0801CA54: .4byte gUnk_020350E2
|
||||
_0801CA58: .4byte 0x0000F01C
|
||||
_0801CA5C: .4byte gScreen
|
||||
_0801CA60: .4byte gSave
|
||||
_0801CA64: .4byte gArea
|
||||
_0801CA68: .4byte 0x0000045C
|
||||
.syntax divided
|
||||
@@ -0,0 +1,152 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, lr}
|
||||
ldr r2, _0801C4F0 @ =gUnk_0200AF00
|
||||
ldrb r1, [r2, #1]
|
||||
movs r0, #0x40
|
||||
ands r0, r1
|
||||
adds r6, r2, #0
|
||||
cmp r0, #0
|
||||
beq _0801C4FC
|
||||
ldrb r0, [r6, #0xa]
|
||||
cmp r0, #0
|
||||
bne _0801C4C8
|
||||
b _0801C5D0
|
||||
_0801C4C8:
|
||||
movs r0, #0
|
||||
strb r0, [r6, #0xa]
|
||||
ldr r3, _0801C4F4 @ =gUnk_02035160
|
||||
strh r0, [r3]
|
||||
strh r0, [r3, #2]
|
||||
strh r0, [r3, #4]
|
||||
strh r0, [r3, #6]
|
||||
strh r0, [r3, #8]
|
||||
adds r4, r3, #0
|
||||
adds r4, #0x40
|
||||
strh r0, [r4]
|
||||
strh r0, [r4, #2]
|
||||
strh r0, [r4, #4]
|
||||
strh r0, [r4, #6]
|
||||
strh r0, [r4, #8]
|
||||
ldr r1, _0801C4F8 @ =gScreen
|
||||
movs r0, #1
|
||||
strh r0, [r1, #0xe]
|
||||
b _0801C5D0
|
||||
.align 2, 0
|
||||
_0801C4F0: .4byte gUnk_0200AF00
|
||||
_0801C4F4: .4byte gUnk_02035160
|
||||
_0801C4F8: .4byte gScreen
|
||||
_0801C4FC:
|
||||
ldrb r0, [r6, #0xa]
|
||||
cmp r0, #0
|
||||
bne _0801C560
|
||||
movs r0, #2
|
||||
strb r0, [r6, #0xa]
|
||||
ldr r3, _0801C54C @ =gUnk_02035160
|
||||
adds r4, r3, #0
|
||||
adds r4, #0x40
|
||||
ldr r1, _0801C550 @ =gWalletSizes
|
||||
ldr r2, _0801C554 @ =gSave
|
||||
adds r0, r2, #0
|
||||
adds r0, #0xa8
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldrh r1, [r0, #2]
|
||||
strh r1, [r3]
|
||||
adds r0, r1, #1
|
||||
strh r0, [r3, #2]
|
||||
adds r0, r1, #2
|
||||
strh r0, [r4]
|
||||
adds r0, r1, #3
|
||||
strh r0, [r4, #2]
|
||||
ldr r1, _0801C558 @ =0x0000F070
|
||||
strh r1, [r3, #4]
|
||||
adds r0, r1, #1
|
||||
strh r0, [r4, #4]
|
||||
adds r0, r1, #2
|
||||
strh r0, [r3, #6]
|
||||
adds r0, r1, #3
|
||||
strh r0, [r4, #6]
|
||||
adds r0, r1, #4
|
||||
strh r0, [r3, #8]
|
||||
adds r0, r1, #5
|
||||
strh r0, [r4, #8]
|
||||
ldr r1, _0801C55C @ =gScreen
|
||||
movs r0, #1
|
||||
strh r0, [r1, #0xe]
|
||||
movs r4, #1
|
||||
b _0801C564
|
||||
.align 2, 0
|
||||
_0801C54C: .4byte gUnk_02035160
|
||||
_0801C550: .4byte gWalletSizes
|
||||
_0801C554: .4byte gSave
|
||||
_0801C558: .4byte 0x0000F070
|
||||
_0801C55C: .4byte gScreen
|
||||
_0801C560:
|
||||
movs r4, #0
|
||||
ldr r2, _0801C580 @ =gSave
|
||||
_0801C564:
|
||||
adds r5, r6, #0
|
||||
adds r0, r2, #0
|
||||
adds r0, #0xc0
|
||||
ldrh r1, [r5, #0xe]
|
||||
adds r3, r1, #0
|
||||
ldrh r0, [r0]
|
||||
cmp r3, r0
|
||||
beq _0801C58A
|
||||
cmp r3, r0
|
||||
bhs _0801C584
|
||||
adds r0, r1, #1
|
||||
strh r0, [r5, #0xe]
|
||||
b _0801C588
|
||||
.align 2, 0
|
||||
_0801C580: .4byte gSave
|
||||
_0801C584:
|
||||
subs r0, r1, #1
|
||||
strh r0, [r6, #0xe]
|
||||
_0801C588:
|
||||
movs r4, #2
|
||||
_0801C58A:
|
||||
cmp r4, #1
|
||||
beq _0801C5A4
|
||||
cmp r4, #2
|
||||
bne _0801C5CC
|
||||
ldr r0, _0801C5D4 @ =gUnk_0200AF00
|
||||
ldrb r0, [r0, #0xc]
|
||||
movs r1, #3
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0801C5A4
|
||||
movs r0, #0x6f
|
||||
bl SoundReq
|
||||
_0801C5A4:
|
||||
ldr r4, _0801C5D4 @ =gUnk_0200AF00
|
||||
ldrh r3, [r4, #0xe]
|
||||
movs r2, #0
|
||||
ldr r1, _0801C5D8 @ =gWalletSizes
|
||||
ldr r0, _0801C5DC @ =gSave
|
||||
adds r0, #0xa8
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldrh r0, [r0]
|
||||
cmp r0, r3
|
||||
bhi _0801C5BE
|
||||
movs r2, #1
|
||||
_0801C5BE:
|
||||
movs r0, #0x70
|
||||
adds r1, r3, #0
|
||||
movs r3, #3
|
||||
bl sub_0801C5E0
|
||||
ldrb r0, [r4, #0xc]
|
||||
adds r4, r0, #1
|
||||
_0801C5CC:
|
||||
ldr r0, _0801C5D4 @ =gUnk_0200AF00
|
||||
strb r4, [r0, #0xc]
|
||||
_0801C5D0:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_0801C5D4: .4byte gUnk_0200AF00
|
||||
_0801C5D8: .4byte gWalletSizes
|
||||
_0801C5DC: .4byte gSave
|
||||
.syntax divided
|
||||
@@ -0,0 +1,117 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r1, [r4]
|
||||
movs r0, #3
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
strb r0, [r4]
|
||||
adds r0, r4, #0
|
||||
bl sub_0801CC80
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
beq _0801CD90
|
||||
ldrb r0, [r4, #8]
|
||||
cmp r0, r1
|
||||
beq _0801CCE0
|
||||
strb r1, [r4, #8]
|
||||
ldr r0, _0801CD1C @ =gSpriteAnimations_322
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r0
|
||||
ldr r1, [r1]
|
||||
adds r0, r4, #0
|
||||
bl sub_0801CAB8
|
||||
_0801CCE0:
|
||||
ldrb r0, [r4, #1]
|
||||
movs r1, #3
|
||||
eors r0, r1
|
||||
rsbs r1, r0, #0
|
||||
orrs r1, r0
|
||||
lsrs r6, r1, #0x1f
|
||||
ldr r3, _0801CD20 @ =gUnk_0200AF13
|
||||
cmp r6, #0
|
||||
beq _0801CCF4
|
||||
adds r3, #1
|
||||
_0801CCF4:
|
||||
ldrb r0, [r4, #8]
|
||||
cmp r0, #7
|
||||
blt _0801CD60
|
||||
cmp r0, #8
|
||||
ble _0801CD28
|
||||
cmp r0, #0xa
|
||||
bgt _0801CD60
|
||||
ldr r1, _0801CD24 @ =gSave
|
||||
adds r0, r1, #0
|
||||
adds r0, #0xad
|
||||
ldrb r2, [r0]
|
||||
ldrb r0, [r3]
|
||||
adds r5, r1, #0
|
||||
cmp r0, r2
|
||||
beq _0801CD4C
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x80
|
||||
strb r0, [r3]
|
||||
b _0801CD4C
|
||||
.align 2, 0
|
||||
_0801CD1C: .4byte gSpriteAnimations_322
|
||||
_0801CD20: .4byte gUnk_0200AF13
|
||||
_0801CD24: .4byte gSave
|
||||
_0801CD28:
|
||||
ldr r5, _0801CD44 @ =gSave
|
||||
adds r0, r5, #0
|
||||
adds r0, #0xac
|
||||
ldrb r2, [r0]
|
||||
ldrb r0, [r3]
|
||||
cmp r0, r2
|
||||
beq _0801CD3C
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x80
|
||||
strb r0, [r3]
|
||||
_0801CD3C:
|
||||
ldr r1, _0801CD48 @ =gBombBagSizes
|
||||
adds r0, r5, #0
|
||||
adds r0, #0xae
|
||||
b _0801CD52
|
||||
.align 2, 0
|
||||
_0801CD44: .4byte gSave
|
||||
_0801CD48: .4byte gBombBagSizes
|
||||
_0801CD4C:
|
||||
ldr r1, _0801CD5C @ =gQuiverSizes
|
||||
adds r0, r5, #0
|
||||
adds r0, #0xaf
|
||||
_0801CD52:
|
||||
ldrb r0, [r0]
|
||||
adds r0, r0, r1
|
||||
ldrb r0, [r0]
|
||||
b _0801CD64
|
||||
.align 2, 0
|
||||
_0801CD5C: .4byte gQuiverSizes
|
||||
_0801CD60:
|
||||
movs r0, #1
|
||||
movs r2, #0
|
||||
_0801CD64:
|
||||
movs r1, #3
|
||||
cmp r0, r2
|
||||
bhi _0801CD6C
|
||||
movs r1, #4
|
||||
_0801CD6C:
|
||||
strb r1, [r4, #0x18]
|
||||
adds r0, r6, #0
|
||||
bl FindUIElement
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
beq _0801CD90
|
||||
ldrh r0, [r1, #0xc]
|
||||
strh r0, [r4, #0xc]
|
||||
ldrh r0, [r1, #0xe]
|
||||
strh r0, [r4, #0xe]
|
||||
ldrb r0, [r4]
|
||||
movs r1, #2
|
||||
orrs r0, r1
|
||||
strb r0, [r4]
|
||||
adds r0, r4, #0
|
||||
bl sub_0801CAD0
|
||||
_0801CD90:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
@@ -0,0 +1,75 @@
|
||||
.syntax unified
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #2]
|
||||
ldr r1, _0801CDC0 @ =gUnk_0200AF00
|
||||
cmp r0, #9
|
||||
bne _0801CDD4
|
||||
adds r0, r1, #0
|
||||
adds r0, #0x2f
|
||||
ldrb r2, [r0]
|
||||
cmp r2, #0
|
||||
bne _0801CDCE
|
||||
ldr r0, _0801CDC4 @ =gArea
|
||||
ldrb r0, [r0, #0x18]
|
||||
cmp r0, #2
|
||||
beq _0801CDC8
|
||||
cmp r0, #3
|
||||
beq _0801CDCC
|
||||
adds r0, r1, #0
|
||||
adds r0, #0x2c
|
||||
ldrb r2, [r0]
|
||||
b _0801CDCE
|
||||
.align 2, 0
|
||||
_0801CDC0: .4byte gUnk_0200AF00
|
||||
_0801CDC4: .4byte gArea
|
||||
_0801CDC8:
|
||||
movs r2, #0xb
|
||||
b _0801CDCE
|
||||
_0801CDCC:
|
||||
movs r2, #0xa
|
||||
_0801CDCE:
|
||||
adds r0, r1, #0
|
||||
adds r0, #0x32
|
||||
strb r2, [r0]
|
||||
_0801CDD4:
|
||||
adds r0, r1, #0
|
||||
adds r0, #0x30
|
||||
ldrb r1, [r4, #3]
|
||||
adds r0, r0, r1
|
||||
ldrb r2, [r0]
|
||||
ldrb r1, [r4]
|
||||
movs r0, #3
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
strb r0, [r4]
|
||||
cmp r2, #0
|
||||
beq _0801CE1E
|
||||
ldr r1, _0801CE20 @ =gUnk_080C9044
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #0x12
|
||||
ldrb r0, [r0, #7]
|
||||
adds r0, r0, r1
|
||||
ldrb r0, [r0]
|
||||
adds r2, r2, r0
|
||||
adds r0, r4, #0
|
||||
adds r1, r2, #0
|
||||
bl sub_0801CAFC
|
||||
ldrb r0, [r4, #3]
|
||||
bl FindUIElement
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
beq _0801CE1E
|
||||
ldrh r0, [r1, #0xc]
|
||||
strh r0, [r4, #0xc]
|
||||
ldrh r0, [r1, #0xe]
|
||||
strh r0, [r4, #0xe]
|
||||
ldrb r0, [r4]
|
||||
movs r1, #2
|
||||
orrs r0, r1
|
||||
strb r0, [r4]
|
||||
_0801CE1E:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0801CE20: .4byte gUnk_080C9044
|
||||
.syntax divided
|
||||
@@ -0,0 +1,75 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
movs r4, #0
|
||||
ldr r5, _0801C2E4 @ =gUnk_0200AF34
|
||||
adds r6, r5, #0
|
||||
subs r6, #0x34
|
||||
movs r7, #0xd
|
||||
rsbs r7, r7, #0
|
||||
ldr r3, _0801C2E8 @ =0x040000D4
|
||||
_0801C26C:
|
||||
lsls r0, r4, #5
|
||||
adds r2, r0, r5
|
||||
ldrb r1, [r2]
|
||||
movs r0, #3
|
||||
ands r0, r1
|
||||
cmp r0, #3
|
||||
bne _0801C2A8
|
||||
lsls r0, r1, #0x1c
|
||||
lsrs r0, r0, #0x1e
|
||||
cmp r0, #1
|
||||
bne _0801C2A8
|
||||
adds r0, r7, #0
|
||||
ands r0, r1
|
||||
movs r1, #8
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
ldr r0, [r2, #0x1c]
|
||||
str r0, [r3]
|
||||
ldrh r0, [r2, #0x1a]
|
||||
lsls r0, r0, #5
|
||||
ldr r1, _0801C2EC @ =0x06010000
|
||||
adds r0, r0, r1
|
||||
str r0, [r3, #4]
|
||||
ldrb r0, [r2, #0x19]
|
||||
lsls r0, r0, #3
|
||||
movs r1, #0x84
|
||||
lsls r1, r1, #0x18
|
||||
orrs r0, r1
|
||||
str r0, [r3, #8]
|
||||
ldr r0, [r3, #8]
|
||||
_0801C2A8:
|
||||
adds r4, #1
|
||||
cmp r4, #0x17
|
||||
ble _0801C26C
|
||||
adds r2, r6, #0
|
||||
ldrb r3, [r2, #0x13]
|
||||
movs r0, #0x13
|
||||
ldrsb r0, [r2, r0]
|
||||
cmp r0, #0
|
||||
bge _0801C2C8
|
||||
movs r1, #0x7f
|
||||
ands r1, r3
|
||||
strb r1, [r2, #0x13]
|
||||
movs r0, #0x8d
|
||||
lsls r0, r0, #1
|
||||
bl sub_0801C2F0
|
||||
_0801C2C8:
|
||||
ldrb r2, [r6, #0x14]
|
||||
movs r0, #0x14
|
||||
ldrsb r0, [r6, r0]
|
||||
cmp r0, #0
|
||||
bge _0801C2E0
|
||||
movs r1, #0x7f
|
||||
ands r1, r2
|
||||
strb r1, [r6, #0x14]
|
||||
movs r0, #0x93
|
||||
lsls r0, r0, #1
|
||||
bl sub_0801C2F0
|
||||
_0801C2E0:
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_0801C2E4: .4byte gUnk_0200AF34
|
||||
_0801C2E8: .4byte 0x040000D4
|
||||
_0801C2EC: .4byte 0x06010000
|
||||
.syntax divided
|
||||
@@ -0,0 +1,39 @@
|
||||
.syntax unified
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, r1, #0
|
||||
lsls r5, r4, #5
|
||||
ldr r1, _0801C330 @ =0x06010000
|
||||
adds r4, r5, r1
|
||||
movs r1, #0xa
|
||||
bl Div
|
||||
cmp r0, #9
|
||||
bls _0801C308
|
||||
movs r0, #9
|
||||
_0801C308:
|
||||
ldr r2, _0801C334 @ =0x040000D4
|
||||
lsls r0, r0, #5
|
||||
ldr r3, _0801C338 @ =gUnk_085C4620
|
||||
adds r0, r0, r3
|
||||
str r0, [r2]
|
||||
str r4, [r2, #4]
|
||||
ldr r4, _0801C33C @ =0x84000008
|
||||
str r4, [r2, #8]
|
||||
ldr r0, [r2, #8]
|
||||
adds r1, #0xa
|
||||
lsls r1, r1, #5
|
||||
adds r1, r1, r3
|
||||
str r1, [r2]
|
||||
ldr r1, _0801C340 @ =0x06010020
|
||||
adds r0, r5, r1
|
||||
str r0, [r2, #4]
|
||||
str r4, [r2, #8]
|
||||
ldr r0, [r2, #8]
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0801C330: .4byte 0x06010000
|
||||
_0801C334: .4byte 0x040000D4
|
||||
_0801C338: .4byte gUnk_085C4620
|
||||
_0801C33C: .4byte 0x84000008
|
||||
_0801C340: .4byte 0x06010020
|
||||
.syntax divided
|
||||
@@ -0,0 +1,66 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r4, r0, #0
|
||||
adds r5, r1, #0
|
||||
ldr r7, _0801C650 @ =gUnk_085C4B20
|
||||
cmp r2, #0
|
||||
bne _0801C5F0
|
||||
ldr r0, _0801C654 @ =0xFFFFFD80
|
||||
adds r7, r7, r0
|
||||
_0801C5F0:
|
||||
ldr r0, _0801C658 @ =0x000003FF
|
||||
ands r0, r4
|
||||
lsls r6, r0, #5
|
||||
ldr r0, _0801C65C @ =0x0600C000
|
||||
adds r4, r6, r0
|
||||
cmp r3, #2
|
||||
beq _0801C620
|
||||
cmp r3, #3
|
||||
bne _0801C63C
|
||||
adds r0, r5, #0
|
||||
movs r1, #0x64
|
||||
bl Div
|
||||
adds r5, r1, #0
|
||||
ldr r1, _0801C660 @ =0x040000D4
|
||||
lsls r0, r0, #6
|
||||
adds r0, r7, r0
|
||||
str r0, [r1]
|
||||
str r4, [r1, #4]
|
||||
ldr r0, _0801C664 @ =0x84000010
|
||||
str r0, [r1, #8]
|
||||
ldr r0, [r1, #8]
|
||||
ldr r0, _0801C668 @ =0x0600C040
|
||||
adds r4, r6, r0
|
||||
_0801C620:
|
||||
adds r0, r5, #0
|
||||
movs r1, #0xa
|
||||
bl Div
|
||||
adds r5, r1, #0
|
||||
ldr r1, _0801C660 @ =0x040000D4
|
||||
lsls r0, r0, #6
|
||||
adds r0, r7, r0
|
||||
str r0, [r1]
|
||||
str r4, [r1, #4]
|
||||
ldr r0, _0801C664 @ =0x84000010
|
||||
str r0, [r1, #8]
|
||||
ldr r0, [r1, #8]
|
||||
adds r4, #0x40
|
||||
_0801C63C:
|
||||
ldr r1, _0801C660 @ =0x040000D4
|
||||
lsls r0, r5, #6
|
||||
adds r0, r7, r0
|
||||
str r0, [r1]
|
||||
str r4, [r1, #4]
|
||||
ldr r0, _0801C664 @ =0x84000010
|
||||
str r0, [r1, #8]
|
||||
ldr r0, [r1, #8]
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_0801C650: .4byte gUnk_085C4B20
|
||||
_0801C654: .4byte 0xFFFFFD80
|
||||
_0801C658: .4byte 0x000003FF
|
||||
_0801C65C: .4byte 0x0600C000
|
||||
_0801C660: .4byte 0x040000D4
|
||||
_0801C664: .4byte 0x84000010
|
||||
_0801C668: .4byte 0x0600C040
|
||||
.syntax divided
|
||||
+23
-23
@@ -20988,7 +20988,7 @@
|
||||
"size": 40
|
||||
},
|
||||
{
|
||||
"path": "data_080B7B74/gUnk_080C8F8C_EU.bin",
|
||||
"path": "data_080B7B74/gUIElementDefinitions_EU.bin",
|
||||
"variants": [
|
||||
"EU"
|
||||
],
|
||||
@@ -20998,7 +20998,7 @@
|
||||
"size": 8
|
||||
},
|
||||
{
|
||||
"path": "data_080B7B74/gUnk_080C8F8C_1_USA-JP-DEMO_USA-DEMO_JP.bin",
|
||||
"path": "data_080B7B74/gUIElementDefinitions_1_USA-JP-DEMO_USA-DEMO_JP.bin",
|
||||
"variants": [
|
||||
"USA",
|
||||
"JP",
|
||||
@@ -21009,7 +21009,7 @@
|
||||
"size": 8
|
||||
},
|
||||
{
|
||||
"path": "data_080B7B74/gUnk_080C8F8C_2_EU.bin",
|
||||
"path": "data_080B7B74/gUIElementDefinitions_2_EU.bin",
|
||||
"variants": [
|
||||
"EU"
|
||||
],
|
||||
@@ -21019,7 +21019,7 @@
|
||||
"size": 12
|
||||
},
|
||||
{
|
||||
"path": "data_080B7B74/gUnk_080C8F8C_3_USA-JP-DEMO_USA-DEMO_JP.bin",
|
||||
"path": "data_080B7B74/gUIElementDefinitions_3_USA-JP-DEMO_USA-DEMO_JP.bin",
|
||||
"variants": [
|
||||
"USA",
|
||||
"JP",
|
||||
@@ -21030,7 +21030,7 @@
|
||||
"size": 12
|
||||
},
|
||||
{
|
||||
"path": "data_080B7B74/gUnk_080C8F8C_4_EU.bin",
|
||||
"path": "data_080B7B74/gUIElementDefinitions_4_EU.bin",
|
||||
"variants": [
|
||||
"EU"
|
||||
],
|
||||
@@ -21040,7 +21040,7 @@
|
||||
"size": 12
|
||||
},
|
||||
{
|
||||
"path": "data_080B7B74/gUnk_080C8F8C_5_USA-JP-DEMO_USA-DEMO_JP.bin",
|
||||
"path": "data_080B7B74/gUIElementDefinitions_5_USA-JP-DEMO_USA-DEMO_JP.bin",
|
||||
"variants": [
|
||||
"USA",
|
||||
"JP",
|
||||
@@ -21051,7 +21051,7 @@
|
||||
"size": 12
|
||||
},
|
||||
{
|
||||
"path": "data_080B7B74/gUnk_080C8F8C_6_EU.bin",
|
||||
"path": "data_080B7B74/gUIElementDefinitions_6_EU.bin",
|
||||
"variants": [
|
||||
"EU"
|
||||
],
|
||||
@@ -21061,7 +21061,7 @@
|
||||
"size": 12
|
||||
},
|
||||
{
|
||||
"path": "data_080B7B74/gUnk_080C8F8C_7_USA-JP-DEMO_USA-DEMO_JP.bin",
|
||||
"path": "data_080B7B74/gUIElementDefinitions_7_USA-JP-DEMO_USA-DEMO_JP.bin",
|
||||
"variants": [
|
||||
"USA",
|
||||
"JP",
|
||||
@@ -21072,7 +21072,7 @@
|
||||
"size": 12
|
||||
},
|
||||
{
|
||||
"path": "data_080B7B74/gUnk_080C8F8C_8_EU.bin",
|
||||
"path": "data_080B7B74/gUIElementDefinitions_8_EU.bin",
|
||||
"variants": [
|
||||
"EU"
|
||||
],
|
||||
@@ -21082,7 +21082,7 @@
|
||||
"size": 12
|
||||
},
|
||||
{
|
||||
"path": "data_080B7B74/gUnk_080C8F8C_9_USA-JP-DEMO_USA-DEMO_JP.bin",
|
||||
"path": "data_080B7B74/gUIElementDefinitions_9_USA-JP-DEMO_USA-DEMO_JP.bin",
|
||||
"variants": [
|
||||
"USA",
|
||||
"JP",
|
||||
@@ -21093,7 +21093,7 @@
|
||||
"size": 12
|
||||
},
|
||||
{
|
||||
"path": "data_080B7B74/gUnk_080C8F8C_10_EU.bin",
|
||||
"path": "data_080B7B74/gUIElementDefinitions_10_EU.bin",
|
||||
"variants": [
|
||||
"EU"
|
||||
],
|
||||
@@ -21103,7 +21103,7 @@
|
||||
"size": 12
|
||||
},
|
||||
{
|
||||
"path": "data_080B7B74/gUnk_080C8F8C_11_USA-JP-DEMO_USA-DEMO_JP.bin",
|
||||
"path": "data_080B7B74/gUIElementDefinitions_11_USA-JP-DEMO_USA-DEMO_JP.bin",
|
||||
"variants": [
|
||||
"USA",
|
||||
"JP",
|
||||
@@ -21114,7 +21114,7 @@
|
||||
"size": 12
|
||||
},
|
||||
{
|
||||
"path": "data_080B7B74/gUnk_080C8F8C_12_EU.bin",
|
||||
"path": "data_080B7B74/gUIElementDefinitions_12_EU.bin",
|
||||
"variants": [
|
||||
"EU"
|
||||
],
|
||||
@@ -21124,7 +21124,7 @@
|
||||
"size": 12
|
||||
},
|
||||
{
|
||||
"path": "data_080B7B74/gUnk_080C8F8C_13_USA-JP-DEMO_USA-DEMO_JP.bin",
|
||||
"path": "data_080B7B74/gUIElementDefinitions_13_USA-JP-DEMO_USA-DEMO_JP.bin",
|
||||
"variants": [
|
||||
"USA",
|
||||
"JP",
|
||||
@@ -21135,7 +21135,7 @@
|
||||
"size": 12
|
||||
},
|
||||
{
|
||||
"path": "data_080B7B74/gUnk_080C8F8C_14_EU.bin",
|
||||
"path": "data_080B7B74/gUIElementDefinitions_14_EU.bin",
|
||||
"variants": [
|
||||
"EU"
|
||||
],
|
||||
@@ -21145,7 +21145,7 @@
|
||||
"size": 12
|
||||
},
|
||||
{
|
||||
"path": "data_080B7B74/gUnk_080C8F8C_15_USA-JP-DEMO_USA-DEMO_JP.bin",
|
||||
"path": "data_080B7B74/gUIElementDefinitions_15_USA-JP-DEMO_USA-DEMO_JP.bin",
|
||||
"variants": [
|
||||
"USA",
|
||||
"JP",
|
||||
@@ -21156,7 +21156,7 @@
|
||||
"size": 12
|
||||
},
|
||||
{
|
||||
"path": "data_080B7B74/gUnk_080C8F8C_16_EU.bin",
|
||||
"path": "data_080B7B74/gUIElementDefinitions_16_EU.bin",
|
||||
"variants": [
|
||||
"EU"
|
||||
],
|
||||
@@ -21166,7 +21166,7 @@
|
||||
"size": 12
|
||||
},
|
||||
{
|
||||
"path": "data_080B7B74/gUnk_080C8F8C_17_USA-JP-DEMO_USA-DEMO_JP.bin",
|
||||
"path": "data_080B7B74/gUIElementDefinitions_17_USA-JP-DEMO_USA-DEMO_JP.bin",
|
||||
"variants": [
|
||||
"USA",
|
||||
"JP",
|
||||
@@ -21177,7 +21177,7 @@
|
||||
"size": 12
|
||||
},
|
||||
{
|
||||
"path": "data_080B7B74/gUnk_080C8F8C_18_EU.bin",
|
||||
"path": "data_080B7B74/gUIElementDefinitions_18_EU.bin",
|
||||
"variants": [
|
||||
"EU"
|
||||
],
|
||||
@@ -21187,7 +21187,7 @@
|
||||
"size": 12
|
||||
},
|
||||
{
|
||||
"path": "data_080B7B74/gUnk_080C8F8C_19_USA-JP-DEMO_USA-DEMO_JP.bin",
|
||||
"path": "data_080B7B74/gUIElementDefinitions_19_USA-JP-DEMO_USA-DEMO_JP.bin",
|
||||
"variants": [
|
||||
"USA",
|
||||
"JP",
|
||||
@@ -21198,7 +21198,7 @@
|
||||
"size": 12
|
||||
},
|
||||
{
|
||||
"path": "data_080B7B74/gUnk_080C8F8C_20_EU.bin",
|
||||
"path": "data_080B7B74/gUIElementDefinitions_20_EU.bin",
|
||||
"variants": [
|
||||
"EU"
|
||||
],
|
||||
@@ -21208,7 +21208,7 @@
|
||||
"size": 12
|
||||
},
|
||||
{
|
||||
"path": "data_080B7B74/gUnk_080C8F8C_21_USA-JP-DEMO_USA-DEMO_JP.bin",
|
||||
"path": "data_080B7B74/gUIElementDefinitions_21_USA-JP-DEMO_USA-DEMO_JP.bin",
|
||||
"variants": [
|
||||
"USA",
|
||||
"JP",
|
||||
@@ -21219,7 +21219,7 @@
|
||||
"size": 12
|
||||
},
|
||||
{
|
||||
"path": "data_080B7B74/gUnk_080C8F8C_22.bin",
|
||||
"path": "data_080B7B74/gUIElementDefinitions_22.bin",
|
||||
"start": 823352,
|
||||
"size": 4
|
||||
},
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
+45
-49
@@ -6,14 +6,8 @@
|
||||
|
||||
gCollisionMtx:: @ 080B7B74
|
||||
.incbin "data_080B7B74/gCollisionMtx.bin"
|
||||
|
||||
gUnk_080B802E:: @ 080B802E
|
||||
.incbin "data_080B7B74/gUnk_080B802E.bin"
|
||||
|
||||
gUnk_080BA2C0:: @ 080BA2C0
|
||||
.incbin "data_080B7B74/gUnk_080BA2C0.bin"
|
||||
|
||||
gUnk_080BB2A0:: @ 080BB2A0
|
||||
.ifdef EU
|
||||
.incbin "data_080B7B74/gUnk_080B7B74_1_EU.bin"
|
||||
.else
|
||||
@@ -39,13 +33,15 @@ gUnk_080BB2A0:: @ 080BB2A0
|
||||
.endif
|
||||
.incbin "data_080B7B74/gUnk_080B7B74_9.bin"
|
||||
|
||||
@ ui.c const
|
||||
|
||||
gUnk_080C8F2C:: @ 080C8F2C
|
||||
.incbin "data_080B7B74/gUnk_080C8F2C.bin"
|
||||
|
||||
gUnk_080C8F54:: @ 080C8F54
|
||||
.incbin "data_080B7B74/gUnk_080C8F54.bin"
|
||||
|
||||
@ TODO this data is accessed using DMA in sub_0801C85C
|
||||
@ TODO this data is accessed using DMA in DrawChargeBar
|
||||
gUnk_080C8F7C:: @ 080C8F7C
|
||||
.4byte gUnk_data0_085C4DA0
|
||||
.4byte gUnk_data1_085C4E60
|
||||
@@ -53,97 +49,97 @@ gUnk_080C8F7C:: @ 080C8F7C
|
||||
.4byte gUnk_data3_085C4FE0
|
||||
|
||||
|
||||
gUnk_080C8F8C:: @ 080C8F8C
|
||||
gUIElementDefinitions:: @ 080C8F8C
|
||||
.ifdef EU
|
||||
@ TODO only small differences
|
||||
.incbin "data_080B7B74/gUnk_080C8F8C_EU.bin"
|
||||
.incbin "data_080B7B74/gUIElementDefinitions_EU.bin"
|
||||
.else
|
||||
.incbin "data_080B7B74/gUnk_080C8F8C_1_USA-JP-DEMO_USA-DEMO_JP.bin"
|
||||
.incbin "data_080B7B74/gUIElementDefinitions_1_USA-JP-DEMO_USA-DEMO_JP.bin"
|
||||
.endif
|
||||
.4byte sub_0801CB78
|
||||
.4byte ButtonUIElement
|
||||
.ifdef EU
|
||||
@ TODO only small differences
|
||||
.incbin "data_080B7B74/gUnk_080C8F8C_2_EU.bin"
|
||||
.incbin "data_080B7B74/gUIElementDefinitions_2_EU.bin"
|
||||
.else
|
||||
.incbin "data_080B7B74/gUnk_080C8F8C_3_USA-JP-DEMO_USA-DEMO_JP.bin"
|
||||
.incbin "data_080B7B74/gUIElementDefinitions_3_USA-JP-DEMO_USA-DEMO_JP.bin"
|
||||
.endif
|
||||
.4byte sub_0801CB78
|
||||
.4byte ButtonUIElement
|
||||
.ifdef EU
|
||||
@ TODO only small differences
|
||||
.incbin "data_080B7B74/gUnk_080C8F8C_4_EU.bin"
|
||||
.incbin "data_080B7B74/gUIElementDefinitions_4_EU.bin"
|
||||
.else
|
||||
.incbin "data_080B7B74/gUnk_080C8F8C_5_USA-JP-DEMO_USA-DEMO_JP.bin"
|
||||
.incbin "data_080B7B74/gUIElementDefinitions_5_USA-JP-DEMO_USA-DEMO_JP.bin"
|
||||
.endif
|
||||
.4byte sub_0801CB78
|
||||
.4byte ButtonUIElement
|
||||
.ifdef EU
|
||||
@ TODO only small differences
|
||||
.incbin "data_080B7B74/gUnk_080C8F8C_6_EU.bin"
|
||||
.incbin "data_080B7B74/gUIElementDefinitions_6_EU.bin"
|
||||
.else
|
||||
.incbin "data_080B7B74/gUnk_080C8F8C_7_USA-JP-DEMO_USA-DEMO_JP.bin"
|
||||
.incbin "data_080B7B74/gUIElementDefinitions_7_USA-JP-DEMO_USA-DEMO_JP.bin"
|
||||
.endif
|
||||
.4byte sub_0801CCB0
|
||||
.4byte ItemUIElement
|
||||
.ifdef EU
|
||||
@ TODO only small differences
|
||||
.incbin "data_080B7B74/gUnk_080C8F8C_8_EU.bin"
|
||||
.incbin "data_080B7B74/gUIElementDefinitions_8_EU.bin"
|
||||
.else
|
||||
.incbin "data_080B7B74/gUnk_080C8F8C_9_USA-JP-DEMO_USA-DEMO_JP.bin"
|
||||
.incbin "data_080B7B74/gUIElementDefinitions_9_USA-JP-DEMO_USA-DEMO_JP.bin"
|
||||
.endif
|
||||
.4byte sub_0801CCB0
|
||||
.4byte ItemUIElement
|
||||
.ifdef EU
|
||||
@ TODO only small differences
|
||||
.incbin "data_080B7B74/gUnk_080C8F8C_10_EU.bin"
|
||||
.incbin "data_080B7B74/gUIElementDefinitions_10_EU.bin"
|
||||
.else
|
||||
.incbin "data_080B7B74/gUnk_080C8F8C_11_USA-JP-DEMO_USA-DEMO_JP.bin"
|
||||
.incbin "data_080B7B74/gUIElementDefinitions_11_USA-JP-DEMO_USA-DEMO_JP.bin"
|
||||
.endif
|
||||
.4byte sub_0801CD94
|
||||
.4byte TextUIElement
|
||||
.ifdef EU
|
||||
@ TODO only small differences
|
||||
.incbin "data_080B7B74/gUnk_080C8F8C_12_EU.bin"
|
||||
.incbin "data_080B7B74/gUIElementDefinitions_12_EU.bin"
|
||||
.else
|
||||
.incbin "data_080B7B74/gUnk_080C8F8C_13_USA-JP-DEMO_USA-DEMO_JP.bin"
|
||||
.incbin "data_080B7B74/gUIElementDefinitions_13_USA-JP-DEMO_USA-DEMO_JP.bin"
|
||||
.endif
|
||||
.4byte sub_0801CE58
|
||||
.4byte HeartUIElement
|
||||
.ifdef EU
|
||||
@ TODO only small differences
|
||||
.incbin "data_080B7B74/gUnk_080C8F8C_14_EU.bin"
|
||||
.incbin "data_080B7B74/gUIElementDefinitions_14_EU.bin"
|
||||
.else
|
||||
.incbin "data_080B7B74/gUnk_080C8F8C_15_USA-JP-DEMO_USA-DEMO_JP.bin"
|
||||
.incbin "data_080B7B74/gUIElementDefinitions_15_USA-JP-DEMO_USA-DEMO_JP.bin"
|
||||
.endif
|
||||
.4byte EzloNag
|
||||
.4byte EzloNagUIElement
|
||||
.ifdef EU
|
||||
@ TODO only small differences
|
||||
.incbin "data_080B7B74/gUnk_080C8F8C_16_EU.bin"
|
||||
.incbin "data_080B7B74/gUIElementDefinitions_16_EU.bin"
|
||||
.else
|
||||
.incbin "data_080B7B74/gUnk_080C8F8C_17_USA-JP-DEMO_USA-DEMO_JP.bin"
|
||||
.incbin "data_080B7B74/gUIElementDefinitions_17_USA-JP-DEMO_USA-DEMO_JP.bin"
|
||||
.endif
|
||||
.4byte EzloNag
|
||||
.4byte EzloNagUIElement
|
||||
.ifdef EU
|
||||
@ TODO only small differences
|
||||
.incbin "data_080B7B74/gUnk_080C8F8C_18_EU.bin"
|
||||
.incbin "data_080B7B74/gUIElementDefinitions_18_EU.bin"
|
||||
.else
|
||||
.incbin "data_080B7B74/gUnk_080C8F8C_19_USA-JP-DEMO_USA-DEMO_JP.bin"
|
||||
.incbin "data_080B7B74/gUIElementDefinitions_19_USA-JP-DEMO_USA-DEMO_JP.bin"
|
||||
.endif
|
||||
.4byte sub_0801CD94
|
||||
.4byte TextUIElement
|
||||
.ifdef EU
|
||||
@ TODO only small differences
|
||||
.incbin "data_080B7B74/gUnk_080C8F8C_20_EU.bin"
|
||||
.incbin "data_080B7B74/gUIElementDefinitions_20_EU.bin"
|
||||
.else
|
||||
.incbin "data_080B7B74/gUnk_080C8F8C_21_USA-JP-DEMO_USA-DEMO_JP.bin"
|
||||
.incbin "data_080B7B74/gUIElementDefinitions_21_USA-JP-DEMO_USA-DEMO_JP.bin"
|
||||
.endif
|
||||
.4byte sub_0801CD94
|
||||
.incbin "data_080B7B74/gUnk_080C8F8C_22.bin"
|
||||
.4byte TextUIElement
|
||||
.incbin "data_080B7B74/gUIElementDefinitions_22.bin"
|
||||
|
||||
gUnk_080C903C:: @ 080C903C
|
||||
.4byte sub_0801CB90
|
||||
.4byte sub_0801CBC8
|
||||
ButtonUIElement_Actions:: @ 080C903C
|
||||
.4byte ButtonUIElement_Action0
|
||||
.4byte ButtonUIElement_Action1
|
||||
|
||||
gUnk_080C9044:: @ 080C9044
|
||||
.incbin "data_080B7B74/gUnk_080C9044.bin"
|
||||
|
||||
gUnk_080C904C:: @ 080C904C
|
||||
.4byte sub_0801CED8
|
||||
.4byte sub_0801CF18
|
||||
.4byte sub_0801CF60
|
||||
EzloNagUIElement_Actions:: @ 080C904C
|
||||
.4byte EzloNagUIElement_Action0
|
||||
.4byte EzloNagUIElement_Action1
|
||||
.4byte EzloNagUIElement_Action2
|
||||
|
||||
gUnk_080C9058:: @ 080C9058
|
||||
.incbin "data_080B7B74/gUnk_080C9058.bin"
|
||||
|
||||
+3
-3
@@ -28,9 +28,9 @@ extern Entity* CreatePlayerBomb(ItemBehavior*, u32);
|
||||
extern u32 CreateRandomItemDrop(Entity*, u32);
|
||||
extern void CreateSparkle(Entity*);
|
||||
extern void DoPlayerAction(Entity*);
|
||||
extern void DrawDirect(u32, u32); // trampoline to sub_080B27F4
|
||||
extern void DrawDirect(u32, u32);
|
||||
extern void DrawEntities(void);
|
||||
extern void DrawOAMCmd(void);
|
||||
extern void DrawUIElements(void);
|
||||
extern void EnemyFunctionHandlerAfterCollision(Entity*, void (*const[])());
|
||||
extern bool32 EntityWithinDistance(Entity*, s32, s32, s32);
|
||||
extern void FlushSprites(void);
|
||||
@@ -115,7 +115,7 @@ extern void sub_080171F0(void);
|
||||
extern u32 sub_0801766C(Entity*);
|
||||
extern void sub_0801AF18(const u8*, u32, u32);
|
||||
extern void sub_0801AFE4(void);
|
||||
extern void sub_0801C1D4(void);
|
||||
extern void UpdateUIElements(void);
|
||||
extern void sub_0801C25C(void);
|
||||
extern void sub_0801E104(void);
|
||||
extern void sub_08027870(Entity*);
|
||||
|
||||
+78
-5
@@ -45,14 +45,87 @@ typedef struct {
|
||||
} struct_020354C0;
|
||||
extern struct_020354C0 gUnk_020354C0[0x20];
|
||||
|
||||
#define MAX_UI_ELEMENTS 24
|
||||
|
||||
typedef enum {
|
||||
UI_ELEMENT_BUTTON_A,
|
||||
UI_ELEMENT_BUTTON_B,
|
||||
UI_ELEMENT_BUTTON_R,
|
||||
UI_ELEMENT_ITEM_A,
|
||||
UI_ELEMENT_ITEM_B,
|
||||
UI_ELEMENT_TEXT_R,
|
||||
UI_ELEMENT_HEART,
|
||||
UI_ELEMENT_EZLONAGSTART,
|
||||
UI_ELEMENT_EZLONAGACTIVE,
|
||||
UI_ELEMENT_TEXT_A,
|
||||
UI_ELEMENT_TEXT_B
|
||||
} UIElementType;
|
||||
|
||||
/**
|
||||
* @brief Floating UI element
|
||||
*/
|
||||
typedef struct {
|
||||
u8 filler0[0x1A];
|
||||
u16 rButtonX;
|
||||
u8 filler1C[0x4];
|
||||
u16 rButtonY;
|
||||
u8 used : 1;
|
||||
u8 unk_0_1 : 1;
|
||||
u8 unk_0_2 : 2; // Load data into VRAM? 0: do not load, 1: ready to load 2: loaded
|
||||
u8 unk_0_4 : 4;
|
||||
u8 type; /**< @see UIElementType */
|
||||
u8 type2; // Subtype
|
||||
u8 buttonElementId; /**< Id of the button UI element this text is attached to */
|
||||
u8 action;
|
||||
u8 unk_5;
|
||||
u8 unk_6;
|
||||
u8 unk_7;
|
||||
u8 unk_8;
|
||||
u8 unk_9[3];
|
||||
u16 x;
|
||||
u16 y;
|
||||
u8 frameIndex;
|
||||
u8 duration;
|
||||
u8 spriteSettings;
|
||||
u8 frameSettings;
|
||||
Frame* framePtr;
|
||||
u8 unk_18;
|
||||
u8 numTiles;
|
||||
u16 unk_1a; // TODO oam id? VRAM target (element->unk_1a * 0x20 + 0x6010000)
|
||||
u32* firstTile;
|
||||
} UIElement;
|
||||
|
||||
typedef struct {
|
||||
u8 unk_0;
|
||||
u8 unk_1;
|
||||
u8 unk_2;
|
||||
u8 health;
|
||||
u8 maxHealth;
|
||||
u8 unk_5;
|
||||
u8 unk_6;
|
||||
u8 unk_7;
|
||||
u8 unk_8;
|
||||
u8 unk_9;
|
||||
u8 unk_a;
|
||||
u8 unk_b;
|
||||
u8 unk_c;
|
||||
u8 unk_d;
|
||||
u16 rupees;
|
||||
u8 unk_10;
|
||||
u8 unk_11;
|
||||
u8 unk_12;
|
||||
s8 unk_13;
|
||||
s8 unk_14;
|
||||
u8 unk_15;
|
||||
u16 buttonX[3]; /**< X coordinates for the button UI elements */
|
||||
u16 buttonY[3]; /**< Y coordinates for the button UI elements */
|
||||
u8 filler22[0x2];
|
||||
u8 ezloNagFuncIndex;
|
||||
u8 filler25[0x30F];
|
||||
u8 filler25[7];
|
||||
u8 unk_2c;
|
||||
u8 unk_2d;
|
||||
u8 unk_2e;
|
||||
u8 unk_2f;
|
||||
u8 unk_30[2];
|
||||
u8 unk_32;
|
||||
u8 unk_33;
|
||||
UIElement elements[MAX_UI_ELEMENTS];
|
||||
} struct_0200AF00;
|
||||
extern struct_0200AF00 gUnk_0200AF00;
|
||||
|
||||
|
||||
@@ -244,10 +244,10 @@ SECTIONS {
|
||||
. = 0x00005FBC; ram_sub_080B2248 = .;
|
||||
. = 0x00005FF0; ram_sub_080B227C = .;
|
||||
. = 0x000060F0; ram_CalcCollisionDirection = .;
|
||||
. = 0x00006164; ram_sub_080B23F0 = .;
|
||||
. = 0x00006164; ram_DrawEntities = .;
|
||||
#if defined(EU) || defined(DEMO_JP)
|
||||
. = 0x000065AC; ram_sub_080B280C = .;
|
||||
. = 0x000065C8; ram_sub_080B2828 = .;
|
||||
. = 0x000065AC; ram_DrawDirect = .;
|
||||
. = 0x000065C8; ram_sub_080ADA04 = .;
|
||||
. = 0x0000689C; ram_sub_080B2088 = .;
|
||||
. = 0x000068F0; ram_sub_080B20DC = .;
|
||||
. = 0x00006954; ram_sub_080B2140 = .;
|
||||
@@ -257,8 +257,8 @@ SECTIONS {
|
||||
. = 0x00006B24; ram_0x80b2be8 = .; /* 0x80b2be8 */
|
||||
. = 0x00006C14; gUnk_03006C14 = .;
|
||||
#else
|
||||
. = 0x00006580; ram_sub_080B280C = .;
|
||||
. = 0x0000659C; ram_sub_080B2828 = .;
|
||||
. = 0x00006580; ram_DrawDirect = .;
|
||||
. = 0x0000659C; ram_sub_080ADA04 = .;
|
||||
. = 0x000067E4; ram_gUnk_080B2A70 = .;
|
||||
. = 0x000068CC; ram_0x80b2b58 = .; /* TODO 0x80b2b58 in unusedLabel_080B2AA8*/
|
||||
. = 0x0000694C; ram_0x80b2bd8 = .; /* 0x80b2bd8 */
|
||||
@@ -314,7 +314,6 @@ SECTIONS {
|
||||
src/playerItem/playerItemC.o(.text);
|
||||
src/playerItem/playerItemBottle.o(.text);
|
||||
src/playerItem/playerItemCellOverwriteSet.o(.text);
|
||||
asm/ui.o(.text);
|
||||
src/ui.o(.text);
|
||||
src/color.o(.text);
|
||||
src/common.o(.text);
|
||||
|
||||
+9
-8
@@ -6,9 +6,9 @@
|
||||
|
||||
extern u32 gFrameObjLists[];
|
||||
|
||||
extern void ram_sub_080B23F0(void);
|
||||
extern void ram_sub_080B2828(OAMCommand*, void*);
|
||||
extern void ram_sub_080B280C(OAMCommand*, u32, u32);
|
||||
extern void ram_DrawEntities(void);
|
||||
extern void ram_sub_080ADA04(OAMCommand*, void*);
|
||||
extern void ram_DrawDirect(OAMCommand*, u32, u32);
|
||||
|
||||
// regalloc
|
||||
NONMATCH("asm/non_matching/vram/sub_080AD8F0.inc", void* sub_080AD8F0(u32 sprite, u32 frame)) {
|
||||
@@ -59,16 +59,17 @@ void DrawEntities(void) {
|
||||
gOAMControls._4 = gRoomControls.aff_x + gRoomControls.scroll_x;
|
||||
gOAMControls._6 = gRoomControls.aff_y + gRoomControls.scroll_y;
|
||||
gOAMControls.field_0x1++;
|
||||
fn = &ram_sub_080B23F0;
|
||||
fn = &ram_DrawEntities;
|
||||
fn();
|
||||
}
|
||||
|
||||
// TODO second parameter is a frame obj entry from gFrameObjLists
|
||||
void sub_080ADA04(OAMCommand* cmd, void* dst) {
|
||||
void (*fn)(OAMCommand*, void*) = ram_sub_080B2828;
|
||||
void (*fn)(OAMCommand*, void*) = ram_sub_080ADA04;
|
||||
fn(cmd, dst);
|
||||
}
|
||||
|
||||
void DrawDirect(u32 a1, u32 a2) {
|
||||
void (*fn)(OAMCommand*, u32, u32) = ram_sub_080B280C;
|
||||
fn(&gOamCmd, a1, a2);
|
||||
void DrawDirect(u32 spriteIndex, u32 frameIndex) {
|
||||
void (*fn)(OAMCommand*, u32, u32) = ram_DrawDirect;
|
||||
fn(&gOamCmd, spriteIndex, frameIndex);
|
||||
}
|
||||
|
||||
+6
-6
@@ -185,8 +185,8 @@ void FileSelectTask(void) {
|
||||
gMapDataBottomSpecial.isTransitioning = FALSE;
|
||||
UpdateEntities();
|
||||
sub_0805066C();
|
||||
sub_0801C1D4();
|
||||
DrawOAMCmd();
|
||||
UpdateUIElements();
|
||||
DrawUIElements();
|
||||
DrawEntities();
|
||||
CopyOAM();
|
||||
if (gMapDataBottomSpecial.unk3 != gSaveHeader->language) {
|
||||
@@ -346,13 +346,13 @@ void sub_08050790(void) {
|
||||
}
|
||||
|
||||
static void HideButtonR(void) {
|
||||
gUnk_0200AF00.rButtonX = 0x140;
|
||||
gUnk_0200AF00.rButtonY = 0x24;
|
||||
gUnk_0200AF00.buttonX[2] = 0x140;
|
||||
gUnk_0200AF00.buttonY[2] = 0x24;
|
||||
}
|
||||
|
||||
static void ShowButtonR(void) {
|
||||
gUnk_0200AF00.rButtonX = 0xD0;
|
||||
gUnk_0200AF00.rButtonY = 0x24;
|
||||
gUnk_0200AF00.buttonX[2] = 0xD0;
|
||||
gUnk_0200AF00.buttonY[2] = 0x24;
|
||||
}
|
||||
|
||||
static void HandleFileSelect(void) {
|
||||
|
||||
+10
-10
@@ -113,7 +113,7 @@ extern void UpdateScroll(void);
|
||||
extern void UpdateBgAnim(void);
|
||||
extern void CleanUpGFXSlots(void);
|
||||
extern void sub_080ADE24(void);
|
||||
extern void InitUI(u32);
|
||||
extern void InitUI(bool32);
|
||||
extern void sub_0801AE44(u32);
|
||||
extern void GenerateAreaHint(void);
|
||||
extern void ForceSetPlayerState(u32);
|
||||
@@ -350,7 +350,7 @@ static void GameMain_InitRoom(void) {
|
||||
gRoomTransition.field_0x4[1] = 0;
|
||||
MessageInitialize();
|
||||
InitRoom();
|
||||
InitUI(0);
|
||||
InitUI(FALSE);
|
||||
InitializeEntities();
|
||||
#ifndef EU
|
||||
sub_0801855C();
|
||||
@@ -366,7 +366,7 @@ static void GameMain_ChangeRoom(void) {
|
||||
DrawUI();
|
||||
UpdateManagers();
|
||||
FlushSprites();
|
||||
DrawOAMCmd();
|
||||
DrawUIElements();
|
||||
UpdateCarriedObject();
|
||||
DrawEntities();
|
||||
CopyOAM();
|
||||
@@ -443,7 +443,7 @@ static void GameMain_Update(void) {
|
||||
sub_08052C3C();
|
||||
DrawUI();
|
||||
UpdateManagers();
|
||||
DrawOAMCmd();
|
||||
DrawUIElements();
|
||||
UpdateCarriedObject();
|
||||
DrawEntities();
|
||||
CheckRoomExit();
|
||||
@@ -476,7 +476,7 @@ static void GameMain_BarrelUpdate(void) {
|
||||
DrawUI();
|
||||
UpdateManagers();
|
||||
FlushSprites();
|
||||
DrawOAMCmd();
|
||||
DrawUIElements();
|
||||
UpdateCarriedObject();
|
||||
DrawEntities();
|
||||
CheckRoomExit();
|
||||
@@ -488,7 +488,7 @@ static void GameMain_BarrelUpdate(void) {
|
||||
|
||||
static void GameMain_ChangeArea(void) {
|
||||
FlushSprites();
|
||||
DrawOAMCmd();
|
||||
DrawUIElements();
|
||||
DrawEntities();
|
||||
gMain.pad = 1;
|
||||
CopyOAM();
|
||||
@@ -1151,7 +1151,7 @@ void RestoreGameTask(u32 a1) {
|
||||
CleanUpGFXSlots();
|
||||
#endif
|
||||
sub_080ADE24();
|
||||
InitUI(1);
|
||||
InitUI(TRUE);
|
||||
sub_0801AE44(a1);
|
||||
MemCopy(gUnk_02024090, gPaletteBuffer, 1024);
|
||||
gUsedPalettes = 0xffffffff;
|
||||
@@ -1302,7 +1302,7 @@ bool32 CanDispEzloMessage(void) {
|
||||
s32 tmp = PL_STATE_WALK;
|
||||
|
||||
if (!(gInput.heldKeys & SELECT_BUTTON) || gPlayerState.controlMode != CONTROL_ENABLED || gUnk_02034490.unk0 ||
|
||||
gUnk_0200AF00.filler0[1])
|
||||
gUnk_0200AF00.unk_1)
|
||||
return 0;
|
||||
|
||||
if ((gPlayerState.flags & (PL_NO_CAP | 0x110)) || (gPlayerState.framestate_last > tmp) || gPlayerState.item ||
|
||||
@@ -2291,8 +2291,8 @@ void ForceEquipItem(u32 itemID, u32 itemSlot) {
|
||||
}
|
||||
gSave.stats.itemButtons[itemSlot] = itemID;
|
||||
gSave.stats.itemButtons[otherItemIndex] = otherItem;
|
||||
gUnk_0200AF00.filler0[0x13] = 0x7f;
|
||||
gUnk_0200AF00.filler0[0x14] = 0x7f;
|
||||
gUnk_0200AF00.unk_13 = 0x7f;
|
||||
gUnk_0200AF00.unk_14 = 0x7f;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+6
-6
@@ -227,9 +227,9 @@ void PlayerUpdate(Entity* this) {
|
||||
void HandlePlayerLife(Entity* this) {
|
||||
u32 temp;
|
||||
|
||||
gUnk_0200AF00.filler25[10] = 0;
|
||||
gUnk_0200AF00.filler25[8] = 0;
|
||||
gUnk_0200AF00.filler25[9] = 0;
|
||||
gUnk_0200AF00.unk_2f = 0;
|
||||
gUnk_0200AF00.unk_2d = 0;
|
||||
gUnk_0200AF00.unk_2e = 0;
|
||||
|
||||
if ((gPlayerEntity.bitfield & 0x80) && (gPlayerEntity.iframes > 0))
|
||||
SoundReq(SFX_86);
|
||||
@@ -257,7 +257,7 @@ void HandlePlayerLife(Entity* this) {
|
||||
return;
|
||||
|
||||
#ifdef EU
|
||||
if ((gUnk_0200AF00.filler0[1] == 0) && gRoomTransition.frameCount % 90 == 0) {
|
||||
if ((gUnk_0200AF00.unk_1 == 0) && gRoomTransition.frameCount % 90 == 0) {
|
||||
temp = gSave.stats.maxHealth / 4;
|
||||
if (temp > 24)
|
||||
temp = 24;
|
||||
@@ -278,7 +278,7 @@ void HandlePlayerLife(Entity* this) {
|
||||
|
||||
if (gSave.stats.health <= temp) {
|
||||
gRoomVars.unk2 = 1;
|
||||
if ((gUnk_0200AF00.filler0[1] == 0) && gRoomTransition.frameCount % 90 == 0) {
|
||||
if ((gUnk_0200AF00.unk_1 == 0) && gRoomTransition.frameCount % 90 == 0) {
|
||||
EnqueueSFX(SFX_LOW_HEALTH);
|
||||
}
|
||||
}
|
||||
@@ -325,7 +325,7 @@ void sub_080171F0(void) {
|
||||
sub_080028E0(&gPlayerEntity);
|
||||
|
||||
if (gPlayerState.flags & PL_CLONING)
|
||||
gUnk_0200AF00.filler25[10] = 1;
|
||||
gUnk_0200AF00.unk_2f = 1;
|
||||
|
||||
sub_08078180();
|
||||
gPlayerState.field_0x7 &= ~0x80;
|
||||
|
||||
@@ -84,8 +84,8 @@ void Subtask_FigurineMenu(void) {
|
||||
figurineMenu1_Types[gMenu.menuType]();
|
||||
}
|
||||
UpdateEntities();
|
||||
sub_0801C1D4();
|
||||
DrawOAMCmd();
|
||||
UpdateUIElements();
|
||||
DrawUIElements();
|
||||
DrawEntities();
|
||||
FigurineMenu_080A4978();
|
||||
CopyOAM();
|
||||
@@ -598,7 +598,7 @@ void sub_080A4DB8(u32 param_1) {
|
||||
MemClear(&gBG0Buffer, 0x800);
|
||||
MemClear(&gBG1Buffer, 0x800);
|
||||
MemClear(&gBG2Buffer, 0x800);
|
||||
MemClear(gUnk_0200AF00.filler25 + 0xf, 0x300);
|
||||
MemClear(gUnk_0200AF00.elements, sizeof(gUnk_0200AF00.elements));
|
||||
MemClear(&gFigurineMenu, sizeof(gFigurineMenu));
|
||||
gFigurineMenu.unk2e = 0xffff;
|
||||
gMenu.field_0x3 = gUnk_02034490.unk2[param_1];
|
||||
|
||||
@@ -85,8 +85,8 @@ void Subtask_KinstoneMenu(void) {
|
||||
kinstoneMenuTypes[gMenu.menuType]();
|
||||
sub_080A3B74();
|
||||
KinstoneMenu_080A4054();
|
||||
sub_0801C1D4();
|
||||
DrawOAMCmd();
|
||||
UpdateUIElements();
|
||||
DrawUIElements();
|
||||
UpdateEntities();
|
||||
DrawEntities();
|
||||
CopyOAM();
|
||||
|
||||
@@ -38,8 +38,8 @@ void Subtask_PauseMenu(void) {
|
||||
FlushSprites();
|
||||
pauseMenu_Variants[gUnk_02034490.unk11]();
|
||||
sub_080A5128();
|
||||
sub_0801C1D4();
|
||||
DrawOAMCmd();
|
||||
UpdateUIElements();
|
||||
DrawUIElements();
|
||||
if (gUnk_02034490.unk11 != 4) {
|
||||
gUnk_08128A38[gUnk_02034490.unk1].func();
|
||||
}
|
||||
|
||||
@@ -172,9 +172,9 @@ void CrenelBeanSprout_Action1(CrenelBeanSproutEntity* this) {
|
||||
this->unk_70 = ((super->x.HALF.HI + (s8)gUnk_08123184[tmp]) & -0x10) | 8;
|
||||
this->unk_72 = ((super->y.HALF.HI + (s8)gUnk_08123184[(tmp) + 1]) & -0x10) | 8;
|
||||
if (sub_080B1AB4(this->unk_70, this->unk_72, super->collisionLayer) == 0x19) {
|
||||
gUnk_0200AF00.filler25[10] = 3;
|
||||
gUnk_0200AF00.unk_2f = 3;
|
||||
} else {
|
||||
gUnk_0200AF00.filler25[10] = 0;
|
||||
gUnk_0200AF00.unk_2f = 0;
|
||||
}
|
||||
PositionRelative(&gPlayerEntity, super, 0, 0x10000);
|
||||
if (sub_080B1AA8(super) == 0x19) {
|
||||
@@ -184,7 +184,7 @@ void CrenelBeanSprout_Action1(CrenelBeanSproutEntity* this) {
|
||||
if ((gPlayerState.field_0x92 & 0xc0) == 0) {
|
||||
return;
|
||||
}
|
||||
if (gUnk_0200AF00.filler25[10] != 3) {
|
||||
if (gUnk_0200AF00.unk_2f != 3) {
|
||||
return;
|
||||
}
|
||||
gPlayerState.heldObject = 0;
|
||||
|
||||
@@ -85,7 +85,7 @@ void ItemForSale_Init(ItemForSaleEntity* this) {
|
||||
void ItemForSale_Action1(ItemForSaleEntity* this) {
|
||||
if (super->subAction != 0) {
|
||||
super->action = 2;
|
||||
gUnk_0200AF00.filler25[10] = 2;
|
||||
gUnk_0200AF00.unk_2f = 2;
|
||||
} else {
|
||||
if (super->type == 0x36) {
|
||||
if (super->interactType != 0) {
|
||||
@@ -102,7 +102,7 @@ void ItemForSale_Action1(ItemForSaleEntity* this) {
|
||||
ResetPlayer();
|
||||
gPlayerState.heldObject = 4;
|
||||
gNewPlayerEntity.unk_74 = super;
|
||||
gUnk_0200AF00.filler25[10] = 2;
|
||||
gUnk_0200AF00.unk_2f = 2;
|
||||
MessageClose();
|
||||
}
|
||||
}
|
||||
@@ -112,14 +112,14 @@ void ItemForSale_Action1(ItemForSaleEntity* this) {
|
||||
void ItemForSale_Action2(ItemForSaleEntity* this) {
|
||||
void* ptr;
|
||||
|
||||
gUnk_0200AF00.filler25[10] = 2;
|
||||
gUnk_0200AF00.unk_2f = 2;
|
||||
super->spriteSettings.draw = gPlayerEntity.spriteSettings.draw;
|
||||
if ((gPlayerState.heldObject == 0) || (super != gNewPlayerEntity.unk_74)) {
|
||||
sub_080819B4(this);
|
||||
} else {
|
||||
ptr = sub_080784E4();
|
||||
if (((*(int*)(ptr + 8) == 0) ||
|
||||
((*(u8*)(ptr + 1) != 1 || (gUnk_0200AF00.filler25[10] = 7, (gPlayerState.field_0x92 & 0x88) == 0)))) &&
|
||||
((*(u8*)(ptr + 1) != 1 || (gUnk_0200AF00.unk_2f = 7, (gPlayerState.field_0x92 & 0x88) == 0)))) &&
|
||||
((gPlayerState.field_0x92 & 0x98) != 0)) {
|
||||
sub_080819B4(this);
|
||||
}
|
||||
@@ -141,8 +141,8 @@ void sub_080819B4(ItemForSaleEntity* this) {
|
||||
gNewPlayerEntity.unk_74 = 0;
|
||||
ptr = &gUnk_0200AF00;
|
||||
gRoomVars.shopItemType = 0;
|
||||
ptr->filler25[7] = 0;
|
||||
ptr->filler25[10] = 0;
|
||||
ptr->unk_2c = 0;
|
||||
ptr->unk_2f = 0;
|
||||
gRoomVars.shopItemType2 = 0;
|
||||
super->x.HALF.HI = this->unk_80 + gRoomControls.origin_x;
|
||||
super->y.HALF.HI = this->unk_82 + gRoomControls.origin_y;
|
||||
|
||||
+2
-2
@@ -1862,7 +1862,7 @@ static void PlayerPull(Entity* this) {
|
||||
|
||||
gPlayerState.framestate = PL_STATE_PULL;
|
||||
sPlayerPullStates[this->subAction](this);
|
||||
gUnk_0200AF00.filler25[9] = 8;
|
||||
gUnk_0200AF00.unk_2e = 8;
|
||||
}
|
||||
|
||||
static void sub_08072214(Entity* this) {
|
||||
@@ -2802,7 +2802,7 @@ void sub_08073584(Entity* this) {
|
||||
return;
|
||||
}
|
||||
|
||||
gUnk_0200AF00.filler25[10] = 1;
|
||||
gUnk_0200AF00.unk_2f = 1;
|
||||
if (sub_0807A2F8(0)) {
|
||||
this->subAction++;
|
||||
this->direction = 4 * (this->animationState & 6);
|
||||
|
||||
+1
-1
@@ -143,7 +143,7 @@ NONMATCH("asm/non_matching/playerUtils/sub_080777A0.inc", bool32 sub_080777A0(vo
|
||||
RequestPriorityDuration(&gPlayerEntity, 0xb4);
|
||||
return TRUE;
|
||||
}
|
||||
} else if ((((gUnk_0200AF00.filler25[7] == 0xc) && (gPlayerState.field_0x1c == 0)) &&
|
||||
} else if ((((gUnk_0200AF00.unk_2c == 0xc) && (gPlayerState.field_0x1c == 0)) &&
|
||||
(gPlayerState.floor_type != 0x11)) &&
|
||||
((((gPlayerState.field_0x90 & 0xf00) != 0 &&
|
||||
((gPlayerState.flags & (PL_BURNING | PL_ROLLING)) == 0)) &&
|
||||
|
||||
+2
-2
@@ -448,13 +448,13 @@ void sub_0807DF28(void) {
|
||||
}
|
||||
|
||||
void sub_0807DF38(void) {
|
||||
gUnk_0200AF00.filler0[1] = 0xff;
|
||||
gUnk_0200AF00.unk_1 = 0xff;
|
||||
gUnk_02034490.unk0 = 0xff;
|
||||
}
|
||||
|
||||
void sub_0807DF50(void) {
|
||||
gUnk_02034490.unk0 = 0;
|
||||
gUnk_0200AF00.filler0[1] = 0;
|
||||
gUnk_0200AF00.unk_1 = 0;
|
||||
RecoverUI(0);
|
||||
ResetPlayerAnimationAndAction();
|
||||
sub_08079184();
|
||||
|
||||
+1
-1
@@ -401,7 +401,7 @@ void sub_080A74F4(void) {
|
||||
UpdateEntities();
|
||||
UpdateManagers();
|
||||
DrawUI();
|
||||
DrawOAMCmd();
|
||||
DrawUIElements();
|
||||
UpdateCarriedObject();
|
||||
DrawEntities();
|
||||
CopyOAM();
|
||||
|
||||
@@ -1,77 +1,475 @@
|
||||
#include "global.h"
|
||||
#include "sound.h"
|
||||
#include "message.h"
|
||||
|
||||
typedef struct {
|
||||
s8 unk0;
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
u8 unk3;
|
||||
u8 unk4;
|
||||
u8 unk5;
|
||||
u8 unk6;
|
||||
u8 unk7;
|
||||
u8 unk8;
|
||||
u8 unk9;
|
||||
u8 unkA;
|
||||
u8 unkB;
|
||||
u16 unkC;
|
||||
u16 unkE;
|
||||
u16 unk10;
|
||||
u8 unk12;
|
||||
u8 unk13;
|
||||
} Element;
|
||||
#include "functions.h"
|
||||
#include "screen.h"
|
||||
#include "common.h"
|
||||
#include "save.h"
|
||||
#include "player.h"
|
||||
#include "area.h"
|
||||
#include "game.h"
|
||||
|
||||
extern void sub_0805ECEC(u32, u32, u32, u32);
|
||||
extern void sub_0801CAD0(Element*);
|
||||
extern bool32 ItemIsBottle(u32);
|
||||
|
||||
extern void (*const gUnk_080C904C[])(Element*);
|
||||
typedef struct {
|
||||
u16 unk_0;
|
||||
u16 unk_2;
|
||||
u16 unk_4;
|
||||
u16 unk_6;
|
||||
u16 unk_8;
|
||||
} substruct_160;
|
||||
|
||||
typedef struct {
|
||||
substruct_160 unk_0;
|
||||
u8 unk_9[54];
|
||||
substruct_160 unk_40;
|
||||
} struct_02035160;
|
||||
extern struct_02035160 gUnk_02035160;
|
||||
|
||||
typedef struct {
|
||||
u32 unk_0;
|
||||
u32 unk_4;
|
||||
u32 unk_8;
|
||||
u32 unk_c;
|
||||
u32 unk_10;
|
||||
u32 unk_14;
|
||||
u8 unk_18[40];
|
||||
} struct_02034CF0;
|
||||
|
||||
extern struct_02034CF0 gUnk_02034CF0[];
|
||||
|
||||
typedef struct {
|
||||
struct_02034CF0 unk_0;
|
||||
struct_02034CF0 unk_40;
|
||||
} struct_02034D30;
|
||||
|
||||
extern struct_02034D30 gUnk_02034D30;
|
||||
|
||||
typedef struct {
|
||||
u16 unk_0;
|
||||
u16 unk_2;
|
||||
u16 unk_4;
|
||||
u16 unk_6;
|
||||
u8 pad[56];
|
||||
} substruct_0E2;
|
||||
|
||||
typedef struct {
|
||||
substruct_0E2 unk_0[2];
|
||||
} struct_020350E2;
|
||||
|
||||
extern struct_020350E2 gUnk_020350E2;
|
||||
|
||||
typedef struct {
|
||||
u16 unk_0; // -> gOamCmd._4
|
||||
u16 unk_2; // -> gOamCmd._6
|
||||
u16 unk_4; // -> element->unk_1a
|
||||
u16 spriteIndex;
|
||||
void (*updateFunction)(UIElement*);
|
||||
u8 buttonElementId;
|
||||
u8 unk_d;
|
||||
u8 unk_e;
|
||||
u8 unk_f;
|
||||
} UIElementDefinition;
|
||||
|
||||
extern UIElementDefinition gUIElementDefinitions[];
|
||||
extern void (*const ButtonUIElement_Actions[])(UIElement*);
|
||||
extern const u8 gUnk_080C9044[];
|
||||
extern void (*const EzloNagUIElement_Actions[])(UIElement*);
|
||||
extern u16 gUnk_080C9058[];
|
||||
extern Frame gUnk_080C9094[];
|
||||
|
||||
void EzloNag(Element* arg0) {
|
||||
gUnk_080C904C[arg0->unk4](arg0);
|
||||
void sub_0801C2F0(u32, u32);
|
||||
void DrawHearts(void);
|
||||
void DrawChargeBar(void);
|
||||
void DrawRupees(void);
|
||||
void DrawKeys(void);
|
||||
void CreateUIElement(u32, u32);
|
||||
void sub_0801C5E0(u32, u32, u32, u32);
|
||||
void sub_0801CAFC(UIElement*, u32);
|
||||
void sub_0801CB20(UIElement*, UIElementDefinition*);
|
||||
UIElement* FindUIElement(u32);
|
||||
void sub_0801CAD0(UIElement*);
|
||||
void sub_0801CAB8(UIElement*, Frame*);
|
||||
|
||||
void UpdateUIElements(void) {
|
||||
u32 index;
|
||||
UIElement* element;
|
||||
const UIElementDefinition* definition;
|
||||
for (index = 0; index < MAX_UI_ELEMENTS; index++) {
|
||||
element = &gUnk_0200AF00.elements[index];
|
||||
if (element->used != 0) {
|
||||
definition = &gUIElementDefinitions[element->type];
|
||||
definition->updateFunction(element);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extern u32 gUnk_080C9094;
|
||||
extern void sub_0801CAB8(Element*, u32*);
|
||||
void DrawUIElements(void) {
|
||||
u32 index;
|
||||
UIElement* element;
|
||||
UIElementDefinition* definition;
|
||||
index = 0;
|
||||
for (index = 0; index < MAX_UI_ELEMENTS; index++) {
|
||||
element = &gUnk_0200AF00.elements[index];
|
||||
if (element->used == 1 && element->unk_0_1 == 1) {
|
||||
gOamCmd.x = element->x;
|
||||
gOamCmd.y = element->y;
|
||||
definition = &gUIElementDefinitions[element->type];
|
||||
gOamCmd._4 = definition->unk_0;
|
||||
gOamCmd._6 = definition->unk_2;
|
||||
gOamCmd._8 = element->unk_18 << 0xc | element->unk_1a;
|
||||
DrawDirect(definition->spriteIndex, element->frameIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
NONMATCH("asm/non_matching/sub_0801CED8.inc", void sub_0801CED8(Element* arg0)) {
|
||||
if (gUnk_0200AF00.ezloNagFuncIndex == 1) {
|
||||
gUnk_0200AF00.ezloNagFuncIndex = 2;
|
||||
arg0->unkC = 0x10;
|
||||
arg0->unkE = 0x90;
|
||||
arg0->unk6 = 0;
|
||||
arg0->unk1 = 7;
|
||||
arg0->unk4 = 1;
|
||||
arg0->unk0 |= 2;
|
||||
sub_0801CAB8(arg0, &gUnk_080C9094);
|
||||
NONMATCH("asm/non_matching/ui/sub_0801C25C.inc", void sub_0801C25C(void)) {
|
||||
u32 uVar1;
|
||||
s32 index;
|
||||
u8 tmp;
|
||||
UIElement* element;
|
||||
|
||||
for (index = 0; index < MAX_UI_ELEMENTS; index++) {
|
||||
element = &gUnk_0200AF00.elements[index];
|
||||
if (((element->used) == 1) && ((element->unk_0_1) == 1)) {
|
||||
// TODO wrong bitfield access here
|
||||
if (element->unk_0_2 == 1) {
|
||||
element->unk_0_2 = 2;
|
||||
DmaSet(3, element->firstTile, element->unk_1a * 0x20 + 0x6010000, element->numTiles << 3 | 0x84000000);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (gUnk_0200AF00.unk_13 < 0) {
|
||||
tmp = gUnk_0200AF00.unk_13 & 0x7f;
|
||||
gUnk_0200AF00.unk_13 = tmp;
|
||||
sub_0801C2F0(0x11a, tmp);
|
||||
}
|
||||
if (gUnk_0200AF00.unk_14 < 0) {
|
||||
tmp = gUnk_0200AF00.unk_14 & 0x7f;
|
||||
gUnk_0200AF00.unk_14 = tmp;
|
||||
sub_0801C2F0(0x126, tmp);
|
||||
}
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
void sub_0801CF18(Element* arg0) {
|
||||
u32 temp;
|
||||
ASM_FUNC("asm/non_matching/ui/sub_0801C2F0.inc", void sub_0801C2F0(u32 a, u32 b))
|
||||
|
||||
temp = gUnk_080C9058[arg0->unk6++];
|
||||
sub_0805ECEC(0, temp, temp, 0);
|
||||
if (temp == 0) {
|
||||
arg0->unk4 = 2;
|
||||
arg0->unk1 = 8;
|
||||
void DrawUI(void) {
|
||||
gUnk_0200AF00.unk_0 &= ~gUnk_0200AF00.unk_1;
|
||||
DrawHearts();
|
||||
DrawChargeBar();
|
||||
DrawRupees();
|
||||
DrawKeys();
|
||||
gUnk_0200AF00.unk_0 = 0;
|
||||
UpdateUIElements();
|
||||
}
|
||||
|
||||
void InitUI(bool32 keepHealthAndRupees) {
|
||||
u32 health;
|
||||
u32 rupees;
|
||||
|
||||
if (!keepHealthAndRupees) {
|
||||
health = gSave.stats.health >> 1;
|
||||
rupees = gSave.stats.rupees;
|
||||
} else {
|
||||
health = gUnk_0200AF00.health;
|
||||
rupees = gUnk_0200AF00.rupees;
|
||||
}
|
||||
MemClear(&gUnk_0200AF00, sizeof(struct_0200AF00));
|
||||
gUnk_0200AF00.health = health;
|
||||
gUnk_0200AF00.rupees = rupees;
|
||||
gUnk_0200AF00.maxHealth = gSave.stats.maxHealth >> 1;
|
||||
LoadPaletteGroup(0xc);
|
||||
LoadGfxGroup(0x10);
|
||||
MemClear(&gBG0Buffer, 0x800);
|
||||
gScreen.bg0.tilemap = &gBG0Buffer;
|
||||
gScreen.bg0.control = 0x1f0c;
|
||||
gScreen.lcd.displayControl |= 0x100;
|
||||
gOAMControls.unk[0].unk7 = 1;
|
||||
gOAMControls.unk[0].unk6 = 1;
|
||||
gOAMControls.unk[1].unk6 = 1;
|
||||
gUnk_0200AF00.unk_13 = 0x7f;
|
||||
gUnk_0200AF00.unk_14 = 0x7f;
|
||||
gUnk_0200AF00.unk_8 = 0x7f;
|
||||
DrawHearts();
|
||||
DrawRupees();
|
||||
DrawChargeBar();
|
||||
DrawKeys();
|
||||
gUnk_0200AF00.buttonX[0] = 0xd0;
|
||||
gUnk_0200AF00.buttonX[1] = 0xb8;
|
||||
gUnk_0200AF00.buttonX[2] = 0xd8;
|
||||
gUnk_0200AF00.buttonY[0] = 0x1c;
|
||||
gUnk_0200AF00.buttonY[1] = 0x1c;
|
||||
gUnk_0200AF00.buttonY[2] = 0xe;
|
||||
// TODO why is this array cleared again? Is it filled by the function calls in the mean time?
|
||||
MemClear(gUnk_0200AF00.elements, sizeof(gUnk_0200AF00.elements));
|
||||
CreateUIElement(UI_ELEMENT_TEXT_R, 9);
|
||||
CreateUIElement(UI_ELEMENT_ITEM_A, 0);
|
||||
CreateUIElement(UI_ELEMENT_ITEM_B, 0);
|
||||
CreateUIElement(UI_ELEMENT_BUTTON_R, 0);
|
||||
CreateUIElement(UI_ELEMENT_BUTTON_B, 0);
|
||||
CreateUIElement(UI_ELEMENT_BUTTON_A, 0);
|
||||
CreateUIElement(UI_ELEMENT_EZLONAGSTART, 0);
|
||||
CreateUIElement(UI_ELEMENT_HEART, 0);
|
||||
}
|
||||
|
||||
void RefreshUI(void) {
|
||||
gScreen.bg0.updated = 1;
|
||||
}
|
||||
|
||||
void RecoverUI(u32 bottomPt, u32 topPt) {
|
||||
gUnk_0200AF00.unk_2 = 0;
|
||||
gUnk_0200AF00.unk_10 = 0;
|
||||
gUnk_0200AF00.unk_a = 0;
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/ui/DrawRupees.inc", void DrawRupees(void))
|
||||
|
||||
// Draw icon with text for rupees or keys
|
||||
ASM_FUNC("asm/non_matching/ui/sub_0801C5E0.inc",
|
||||
void sub_0801C5E0(u32 iconVramIndex, u32 count, bool32 isTextYellow, u32 d))
|
||||
|
||||
void sub_0801C66C(void) {
|
||||
struct_02034CF0* ptr;
|
||||
s32 index;
|
||||
|
||||
if (gUnk_0200AF00.unk_2 != 0) {
|
||||
gUnk_0200AF00.unk_2 = 0;
|
||||
if (gUnk_0200AF00.maxHealth > 0x28) {
|
||||
index = 2;
|
||||
} else {
|
||||
index = 1;
|
||||
}
|
||||
ptr = gUnk_02034CF0;
|
||||
do {
|
||||
ptr->unk_0 = 0;
|
||||
ptr->unk_4 = 0;
|
||||
ptr->unk_8 = 0;
|
||||
ptr->unk_c = 0;
|
||||
ptr->unk_10 = 0;
|
||||
ptr->unk_14 = 0;
|
||||
ptr++;
|
||||
index--;
|
||||
} while (index > 0);
|
||||
gScreen.bg0.updated = 1;
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/ui/DrawHearts.inc", void DrawHearts())
|
||||
|
||||
void sub_0801C824(void) {
|
||||
struct_02034CF0* ptr;
|
||||
|
||||
if (gUnk_0200AF00.unk_6 != 0) {
|
||||
gUnk_0200AF00.unk_6 = 0;
|
||||
if (gUnk_0200AF00.maxHealth > 4 * 10) {
|
||||
ptr = &gUnk_02034D30.unk_40; // Show second row of hearts
|
||||
} else {
|
||||
ptr = &gUnk_02034D30.unk_0;
|
||||
}
|
||||
ptr->unk_0 = 0;
|
||||
ptr->unk_4 = 0;
|
||||
ptr->unk_8 = 0;
|
||||
ptr->unk_c = 0;
|
||||
ptr->unk_10 = 0;
|
||||
ptr->unk_14 = 0;
|
||||
gScreen.bg0.updated = 1;
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/ui/DrawChargeBar.inc", void DrawChargeBar())
|
||||
|
||||
ASM_FUNC("asm/non_matching/ui/DrawKeys.inc", void DrawKeys(void))
|
||||
|
||||
ASM_FUNC("asm/non_matching/ui/CreateUIElement.inc", void CreateUIElement(u32 type, u32 type2))
|
||||
|
||||
void sub_0801CAB8(UIElement* element, Frame* frame) {
|
||||
element->framePtr = frame;
|
||||
element->duration = frame->duration;
|
||||
element->spriteSettings = frame->spriteSettings.raw;
|
||||
element->frameSettings = frame->frameSettings.raw;
|
||||
sub_0801CAFC(element, frame->index);
|
||||
}
|
||||
|
||||
void sub_0801CAD0(UIElement* element) {
|
||||
if (--element->duration == 0) {
|
||||
Frame* frame = element->framePtr;
|
||||
if ((s8)frame->frameSettings.raw < 0) {
|
||||
frame -= frame[1].index;
|
||||
}
|
||||
sub_0801CAB8(element, frame + 1);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0801CAFC(UIElement* element, u32 frameIndex) {
|
||||
UIElementDefinition* definition = &gUIElementDefinitions[element->type];
|
||||
if (frameIndex != element->frameIndex) {
|
||||
element->frameIndex = frameIndex;
|
||||
sub_0801CB20(element, definition);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0801CB20(UIElement* element, UIElementDefinition* definition) {
|
||||
if (definition->unk_e == 0) {
|
||||
SpritePtr* ptr = &gSpritePtrs[definition->spriteIndex];
|
||||
SpriteFrame* frame = &ptr->frames[element->frameIndex];
|
||||
u32* firstTile = (u32*)(ptr->ptr + frame->firstTileIndex * 0x20);
|
||||
u8 numTiles = frame->numTiles;
|
||||
if (numTiles == 0) {
|
||||
element->unk_0_2 = 0;
|
||||
} else {
|
||||
if ((element->numTiles != numTiles) || (element->firstTile != firstTile)) {
|
||||
element->firstTile = firstTile;
|
||||
element->unk_0_2 = 1;
|
||||
}
|
||||
}
|
||||
element->numTiles = numTiles;
|
||||
}
|
||||
}
|
||||
|
||||
void ButtonUIElement(UIElement* element) {
|
||||
ButtonUIElement_Actions[element->action](element);
|
||||
}
|
||||
|
||||
void ButtonUIElement_Action0(UIElement* element) {
|
||||
element->x = gUnk_0200AF00.buttonX[element->type];
|
||||
element->y = gUnk_0200AF00.buttonY[element->type] - 0x20;
|
||||
element->action = 1;
|
||||
element->unk_0_1 = 1;
|
||||
sub_0801CAFC(element, element->type);
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/ui/ButtonUIElement_Action1.inc", void ButtonUIElement_Action1())
|
||||
|
||||
u32 sub_0801CC80(UIElement* element) {
|
||||
u8 type = element->type;
|
||||
u32 buttonId = (type ^ 3) != 0;
|
||||
u32 itemId = gSave.stats.itemButtons[buttonId];
|
||||
if (ItemIsBottle(itemId)) {
|
||||
itemId = gSave.saved_status.field_0x24[itemId - 6];
|
||||
}
|
||||
return itemId;
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/ui/ItemUIElement.inc", void ItemUIElement())
|
||||
|
||||
NONMATCH("asm/non_matching/ui/TextUIElement.inc", void TextUIElement(UIElement* element)) {
|
||||
UIElement* buttonUIElement;
|
||||
u32 tmp;
|
||||
extern struct_0200AF00* ptr;
|
||||
u32 tmp1;
|
||||
UIElement* ptr2;
|
||||
|
||||
if (element->type2 == 9) {
|
||||
if (gUnk_0200AF00.unk_2f == 0) {
|
||||
switch (gArea.field_0x18) {
|
||||
case 2:
|
||||
tmp1 = 0xb;
|
||||
break;
|
||||
case 3:
|
||||
tmp1 = 0xa;
|
||||
break;
|
||||
default:
|
||||
tmp1 = gUnk_0200AF00.unk_2c;
|
||||
break;
|
||||
}
|
||||
gUnk_0200AF00.unk_32 = tmp1;
|
||||
}
|
||||
}
|
||||
tmp = gUnk_0200AF00.unk_30[element->buttonElementId];
|
||||
element->unk_0_1 = 0;
|
||||
if (tmp != 0) {
|
||||
sub_0801CAFC(element, tmp + gUnk_080C9044[((SaveHeader*)0x2000000)->language]);
|
||||
buttonUIElement = FindUIElement(element->buttonElementId);
|
||||
if (buttonUIElement != NULL) {
|
||||
element->x = buttonUIElement->x;
|
||||
element->y = buttonUIElement->y;
|
||||
element->unk_0_1 = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
UIElement* FindUIElement(u32 type) {
|
||||
UIElement* element;
|
||||
u32 index;
|
||||
for (index = 0; index < MAX_UI_ELEMENTS; index++) {
|
||||
element = &gUnk_0200AF00.elements[index];
|
||||
if (element->used != 0 && type == element->type) {
|
||||
return element;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void HeartUIElement(UIElement* element) {
|
||||
s32 tmp;
|
||||
u32 x;
|
||||
u16 y;
|
||||
u32 health;
|
||||
u32 frameIndex;
|
||||
element->unk_0_1 = 0;
|
||||
if (((gUnk_0200AF00.unk_1 & 0x10) == 0) && ((gMessage.doTextBox & 0x7f) == 0)) {
|
||||
health = gUnk_0200AF00.health;
|
||||
if (health != 0) {
|
||||
element->unk_0_1 = 1;
|
||||
// Calculate the position for this heart.
|
||||
tmp = ((health + 3) >> 2) * 8;
|
||||
x = tmp + 3;
|
||||
y = 0xc;
|
||||
if (health > 0x28) {
|
||||
y = 0x14;
|
||||
x = tmp - 0x4d;
|
||||
}
|
||||
element->x = x;
|
||||
element->y = y;
|
||||
if ((health & 3) == 0) {
|
||||
frameIndex = 4; // Full heart
|
||||
} else {
|
||||
frameIndex = health & 3; // Quarters
|
||||
}
|
||||
sub_0801CAFC(element, frameIndex + 0x71);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void EzloNagUIElement(UIElement* element) {
|
||||
EzloNagUIElement_Actions[element->action](element);
|
||||
}
|
||||
|
||||
void EzloNagUIElement_Action0(UIElement* element) {
|
||||
if (gUnk_0200AF00.ezloNagFuncIndex == 1) {
|
||||
gUnk_0200AF00.ezloNagFuncIndex = 2;
|
||||
element->x = 0x10;
|
||||
element->y = 0x90;
|
||||
element->unk_6 = 0;
|
||||
element->type = UI_ELEMENT_EZLONAGSTART;
|
||||
element->action = 1;
|
||||
element->unk_0_1 = 1;
|
||||
sub_0801CAB8(element, gUnk_080C9094);
|
||||
}
|
||||
}
|
||||
|
||||
void EzloNagUIElement_Action1(UIElement* element) {
|
||||
u32 tmp = gUnk_080C9058[element->unk_6++];
|
||||
sub_0805ECEC(0, tmp, tmp, 0);
|
||||
if (tmp == 0) {
|
||||
element->action = 2;
|
||||
element->type = UI_ELEMENT_EZLONAGACTIVE;
|
||||
gUnk_0200AF00.ezloNagFuncIndex = 3;
|
||||
SoundReq(SFX_EZLO_UI);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0801CF60(Element* arg0) {
|
||||
|
||||
if ((gUnk_0200AF00.ezloNagFuncIndex >= 5) || (gMessage.doTextBox & 0x7f)) {
|
||||
arg0->unk4 = 0;
|
||||
arg0->unk0 &= -3;
|
||||
void EzloNagUIElement_Action2(UIElement* element) {
|
||||
if (gUnk_0200AF00.ezloNagFuncIndex >= 5 || (gMessage.doTextBox & 0x7f)) {
|
||||
element->action = 0;
|
||||
element->unk_0_1 = 0;
|
||||
return;
|
||||
}
|
||||
sub_0801CAD0(arg0);
|
||||
if (arg0->unk13 == 1) {
|
||||
sub_0801CAD0(element);
|
||||
if (element->frameSettings == 1) {
|
||||
gUnk_0200AF00.ezloNagFuncIndex = 4;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user