summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornotyourav <65437533+notyourav@users.noreply.github.com>2022-09-05 11:33:54 -0700
committerGitHub <noreply@github.com>2022-09-05 11:33:54 -0700
commit3ecaa31df011cc6e77fe1dd4e02fe90f14fae65e (patch)
tree8e8e21872e76a6bdf01669ead6af83cb0f7fe267
parent11e57bc8e8ac9a9e73c3c3cf221670de3cdf8df7 (diff)
parentca6857fddb86871a324a4bc93b32d3e05a4d9d38 (diff)
Merge pull request #570 from hatal175/sub_080432A8
-rw-r--r--asm/non_matching/figurineDevice/sub_08087F94.inc265
-rw-r--r--asm/non_matching/madderpillar/sub_08029E0C.inc115
-rw-r--r--asm/non_matching/mulldozer/sub_08033364.inc44
-rw-r--r--asm/non_matching/playerUtils/sub_080797EC.inc178
-rw-r--r--asm/non_matching/spearMoblin/sub_08028604.inc104
-rw-r--r--asm/non_matching/ui/DrawChargeBar.inc155
-rw-r--r--asm/non_matching/vaati/sub_080432A8.inc89
-rw-r--r--asm/non_matching/vaati/sub_0804393C.inc109
-rw-r--r--src/enemy/madderpillar.c39
-rw-r--r--src/enemy/mulldozer.c8
-rw-r--r--src/enemy/spearMoblin.c24
-rw-r--r--src/enemy/vaatiArm.c67
-rw-r--r--src/object/figurineDevice.c120
-rw-r--r--src/playerUtils.c83
-rw-r--r--src/ui.c56
15 files changed, 373 insertions, 1083 deletions
diff --git a/asm/non_matching/figurineDevice/sub_08087F94.inc b/asm/non_matching/figurineDevice/sub_08087F94.inc
deleted file mode 100644
index 2581864d..00000000
--- a/asm/non_matching/figurineDevice/sub_08087F94.inc
+++ /dev/null
@@ -1,265 +0,0 @@
- .syntax unified
-.ifdef JP
- push {r4, r5, r6, r7, lr}
- adds r5, r0, #0
- adds r4, r1, #0
- movs r0, #0x5f
- bl CheckLocalFlag
- cmp r0, #0
- bne _08087E3E
- adds r0, r5, #0
- adds r0, #0x83
- movs r7, #0
- ldrsb r7, [r0, r7]
- adds r3, r7, r4
- mov ip, r0
- cmp r4, #0
- bge _08087E0A
- adds r2, r5, #0
- adds r2, #0x82
- movs r0, #0
- ldrsb r0, [r2, r0]
- cmp r3, r0
- bge _08087DF4
- mov r0, ip
- movs r1, #0
- ldrsb r1, [r0, r1]
- ldrb r3, [r2]
- movs r0, #0
- ldrsb r0, [r2, r0]
- cmp r1, r0
- beq _08087E3E
- mov r2, ip
- strb r3, [r2]
- adds r1, r5, #0
- adds r1, #0x81
- movs r0, #1
- b _08087E00
-_08087DF4:
- mov r0, ip
- strb r3, [r0]
- adds r1, r5, #0
- adds r1, #0x81
- ldrb r0, [r1]
- adds r0, r0, r4
-_08087E00:
- strb r0, [r1]
- movs r0, #0x69
- bl SoundReq
- b _08087E58
-_08087E0A:
- adds r1, r5, #0
- adds r1, #0x81
- ldrb r6, [r1]
- adds r2, r6, r4
- ldr r0, _08087E2C @ =0x02002A40
- adds r0, #0xc2
- ldrh r0, [r0]
- cmp r2, r0
- ble _08087E30
- cmp r0, r6
- beq _08087E3E
- adds r2, r0, #0
- subs r4, r2, r6
- adds r3, r7, r4
- cmp r3, #0x64
- ble _08087E4C
- b _08087E46
- .align 2, 0
-_08087E2C: .4byte 0x02002A40
-_08087E30:
- cmp r3, #0x64
- ble _08087E4C
- mov r2, ip
- movs r0, #0
- ldrsb r0, [r2, r0]
- cmp r0, #0x64
- bne _08087E46
-_08087E3E:
- adds r0, r5, #0
- bl sub_08088034
- b _08087E58
-_08087E46:
- movs r3, #0x64
- subs r4, r3, r7
- adds r2, r6, r4
-_08087E4C:
- mov r0, ip
- strb r3, [r0]
- strb r2, [r1]
- movs r0, #0x69
- bl SoundReq
-_08087E58:
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-.else
-.ifdef EU
- push {r4, r5, r6, r7, lr}
- adds r5, r0, #0
- adds r6, r1, #0
- adds r7, r5, #0
- adds r7, #0x83
- ldrb r0, [r7]
- adds r4, r0, r6
- movs r0, #0x5f
- bl CheckLocalFlag
- cmp r0, #0
- bne _080879CE
- cmp r6, #0
- bge _0808799E
- adds r0, r5, #0
- adds r0, #0x82
- ldrb r1, [r0]
- cmp r4, r1
- bhs _0808798A
- ldrb r0, [r7]
- cmp r0, r1
- beq _080879CE
- strb r1, [r7]
- adds r1, r5, #0
- adds r1, #0x81
- movs r0, #1
- b _08087994
-_0808798A:
- strb r4, [r7]
- adds r1, r5, #0
- adds r1, #0x81
- ldrb r0, [r1]
- adds r0, r0, r6
-_08087994:
- strb r0, [r1]
- movs r0, #0x69
- bl SoundReq
- b _080879EC
-_0808799E:
- adds r1, r5, #0
- adds r1, #0x81
- ldrb r3, [r1]
- adds r2, r3, r6
- ldr r0, _080879C0 @ =gSave
- adds r0, #0xc2
- ldrh r0, [r0]
- cmp r2, r0
- bls _080879C4
- cmp r0, r3
- beq _080879CE
- adds r2, r0, #0
- subs r0, r2, r3
- ldrb r7, [r7]
- adds r4, r0, r7
- b _080879DE
- .align 2, 0
-_080879C0: .4byte gSave
-_080879C4:
- cmp r4, #0x64
- bls _080879DE
- ldrb r0, [r7]
- cmp r0, #0x64
- bne _080879D6
-_080879CE:
- adds r0, r5, #0
- bl sub_08088034
- b _080879EC
-_080879D6:
- movs r4, #0x64
- ldrb r0, [r7]
- subs r6, r4, r0
- adds r2, r3, r6
-_080879DE:
- adds r0, r5, #0
- adds r0, #0x83
- strb r4, [r0]
- strb r2, [r1]
- movs r0, #0x69
- bl SoundReq
-_080879EC:
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-.else
- push {r4, r5, r6, r7, lr}
- adds r5, r0, #0
- adds r4, r1, #0
- movs r0, #0x5f
- bl CheckLocalFlag
- cmp r0, #0
- bne _08088014
- adds r0, r5, #0
- adds r0, #0x83
- movs r1, #0
- ldrsb r1, [r0, r1]
- mov ip, r1
- adds r3, r1, r4
- adds r7, r0, #0
- cmp r4, #0
- bge _08087FEA
- adds r2, r5, #0
- adds r2, #0x82
- movs r0, #0
- ldrsb r0, [r2, r0]
- cmp r3, r0
- bge _08087FD6
- movs r1, #0
- ldrsb r1, [r7, r1]
- ldrb r3, [r2]
- cmp r1, r0
- beq _08088014
- strb r3, [r7]
- adds r1, r5, #0
- adds r1, #0x81
- movs r0, #1
- b _08087FE0
-_08087FD6:
- strb r3, [r7]
- adds r1, r5, #0
- adds r1, #0x81
- ldrb r0, [r1]
- adds r0, r0, r4
-_08087FE0:
- strb r0, [r1]
- movs r0, #0x69
- bl SoundReq
- b _08088032
-_08087FEA:
- adds r1, r5, #0
- adds r1, #0x81
- ldrb r6, [r1]
- adds r2, r6, r4
- ldr r0, _0808801C @ =gSave
- adds r0, #0xc2
- ldrh r0, [r0]
- cmp r2, r0
- ble _08088008
- cmp r0, r6
- beq _08088014
- adds r2, r0, #0
- subs r4, r2, r6
- mov r0, ip
- adds r3, r0, r4
-_08088008:
- cmp r3, #0x64
- ble _08088028
- movs r0, #0
- ldrsb r0, [r7, r0]
- cmp r0, #0x64
- bne _08088020
-_08088014:
- adds r0, r5, #0
- bl sub_08088034
- b _08088032
- .align 2, 0
-_0808801C: .4byte gSave
-_08088020:
- movs r3, #0x64
- mov r0, ip
- subs r4, r3, r0
- adds r2, r6, r4
-_08088028:
- strb r3, [r7]
- strb r2, [r1]
- movs r0, #0x69
- bl SoundReq
-_08088032:
- pop {r4, r5, r6, r7, pc}
-.endif
-.endif
- .syntax divided
diff --git a/asm/non_matching/madderpillar/sub_08029E0C.inc b/asm/non_matching/madderpillar/sub_08029E0C.inc
deleted file mode 100644
index 246103ee..00000000
--- a/asm/non_matching/madderpillar/sub_08029E0C.inc
+++ /dev/null
@@ -1,115 +0,0 @@
-
- .syntax unified
-
- .text
-
- push {r4, r5, r6, r7, lr}
- mov r7, sl
- mov r6, sb
- mov r5, r8
- push {r5, r6, r7}
- sub sp, #8
- adds r5, r0, #0
- ldrb r0, [r5, #0x15]
- lsrs r0, r0, #3
- lsls r1, r0, #1
- adds r1, r1, r0
- ldr r0, _08029EE0 @ =gUnk_080CCDC8
- adds r1, r1, r0
- str r1, [sp]
- bl Random
- movs r1, #1
- ands r1, r0
- lsls r1, r1, #1
- subs r1, #1
- mov sl, r1
- bl Random
- adds r1, r0, #0
- movs r0, #0xf
- ands r0, r1
- movs r1, #3
- bl __modsi3
- mov sb, r0
- movs r1, #0x2e
- ldrsh r0, [r5, r1]
- ldr r3, _08029EE4 @ =gRoomControls
- ldrh r1, [r3, #6]
- subs r0, r0, r1
- asrs r0, r0, #4
- mov r8, r0
- movs r2, #0x3f
- ands r0, r2
- mov r8, r0
- movs r1, #0x32
- ldrsh r0, [r5, r1]
- ldrh r1, [r3, #8]
- subs r0, r0, r1
- asrs r0, r0, #4
- ands r0, r2
- lsls r0, r0, #6
- mov r1, r8
- orrs r1, r0
- mov r8, r1
- movs r7, #0
-_08029E72:
- ldr r0, [sp]
- add r0, sb
- ldrb r4, [r0]
- lsrs r0, r4, #3
- lsls r0, r0, #1
- ldr r1, _08029EE8 @ =gUnk_080B4488
- adds r0, r0, r1
- movs r1, #0
- ldrsh r0, [r0, r1]
- add r0, r8
- adds r1, r5, #0
- adds r1, #0x38
- ldrb r1, [r1]
- bl sub_080B1B44
- adds r6, r5, #0
- adds r6, #0x74
- cmp r0, #0
- bne _08029EA6
- str r4, [sp, #4]
- ldrb r1, [r5, #0x15]
- ldrb r0, [r6]
- subs r0, r1, r0
- subs r1, r4, r1
- cmp r0, r1
- bne _08029EBA
-_08029EA6:
- mov r0, sb
- add r0, sl
- adds r0, #3
- movs r1, #3
- bl __modsi3
- mov sb, r0
- adds r7, #1
- cmp r7, #2
- bls _08029E72
-_08029EBA:
- cmp r7, #3
- bne _08029EC0
- ldr r4, [sp, #4]
-_08029EC0:
- ldrb r1, [r5, #0x15]
- ldrb r0, [r6]
- cmp r0, r1
- beq _08029ECA
- strb r1, [r6]
-_08029ECA:
- strb r4, [r5, #0x15]
- adds r0, r5, #0
- bl sub_08029F0C
- add sp, #8
- pop {r3, r4, r5}
- mov r8, r3
- mov sb, r4
- mov sl, r5
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-_08029EE0: .4byte gUnk_080CCDC8
-_08029EE4: .4byte gRoomControls
-_08029EE8: .4byte gUnk_080B4488
-
- .syntax divided
diff --git a/asm/non_matching/mulldozer/sub_08033364.inc b/asm/non_matching/mulldozer/sub_08033364.inc
deleted file mode 100644
index 8667fa00..00000000
--- a/asm/non_matching/mulldozer/sub_08033364.inc
+++ /dev/null
@@ -1,44 +0,0 @@
- .syntax unified
- push {r4, lr}
- adds r4, r0, #0
- movs r0, #1
- bl sub_08049DF4
- adds r1, r0, #0
- cmp r1, #0
- beq _080333B4
- ldrb r0, [r4, #0xa]
- movs r3, #0x38
- cmp r0, #0
- beq _0803337E
- movs r3, #0x48
-_0803337E:
- adds r0, r4, #0
- adds r2, r3, #0
- bl EntityInRectRadius
- cmp r0, #0
- beq _080333B4
- ldrb r0, [r4, #0xa]
- cmp r0, #0
- bne _080333AA
- ldr r0, _080333B0 @ =gUnk_020000B0
- ldr r1, [r0]
- adds r0, r4, #0
- bl GetFacingDirection
- adds r1, r0, #0
- adds r1, #2
- movs r0, #0x1c
- ands r1, r0
- lsrs r1, r1, #2
- ldrb r0, [r4, #0x14]
- cmp r0, r1
- bne _080333B4
-_080333AA:
- movs r0, #1
- b _080333B6
- .align 2, 0
-_080333B0: .4byte gUnk_020000B0
-_080333B4:
- movs r0, #0
-_080333B6:
- pop {r4, pc}
- .syntax divided
diff --git a/asm/non_matching/playerUtils/sub_080797EC.inc b/asm/non_matching/playerUtils/sub_080797EC.inc
deleted file mode 100644
index 6dd3af5e..00000000
--- a/asm/non_matching/playerUtils/sub_080797EC.inc
+++ /dev/null
@@ -1,178 +0,0 @@
- .syntax unified
- push {r4, r5, lr}
- ldr r4, _08079804 @ =gPlayerState
- ldr r1, [r4, #0x30]
- movs r0, #8
- ands r0, r1
- cmp r0, #0
- beq _0807985C
- ldrb r0, [r4, #5]
- cmp r0, #0
- beq _0807980C
- ldr r5, _08079808 @ =0x00000934
- b _0807991E
- .align 2, 0
-_08079804: .4byte gPlayerState
-_08079808: .4byte 0x00000934
-_0807980C:
- ldrb r0, [r4, #3]
- cmp r0, #0
- beq _08079818
- movs r5, #0x82
- lsls r5, r5, #3
- b _0807991E
-_08079818:
- adds r0, r4, #0
- adds r0, #0x21
- ldrb r0, [r0]
- cmp r0, #0
- bne _080798A0
- adds r0, r4, #0
- adds r0, #0x26
- ldrb r0, [r0]
- movs r5, #0xa4
- lsls r5, r5, #2
- cmp r0, #0
- bne _0807991E
- movs r5, #0xb6
- lsls r5, r5, #1
- ldrb r1, [r4, #0x1b]
- movs r0, #0x48
- ands r0, r1
- cmp r0, #0
- bne _080798C2
- lsls r0, r1, #0x18
- cmp r0, #0
- bne _080798CE
- adds r1, r4, #0
- adds r1, #0xa8
- ldrb r0, [r1]
- cmp r0, #0
- bne _08079852
- movs r0, #1
- strb r0, [r1]
-_08079852:
- ldr r5, _08079858 @ =0x00000404
- b _0807991E
- .align 2, 0
-_08079858: .4byte 0x00000404
-_0807985C:
- ldrb r0, [r4, #0x1c]
- cmp r0, #0
- bne _0807992E
- ldrb r0, [r4, #5]
- cmp r0, #0
- beq _0807986E
- movs r5, #0xd2
- lsls r5, r5, #2
- b _0807991E
-_0807986E:
- ldrb r0, [r4, #0x1e]
- cmp r0, #0
- beq _0807987A
- movs r5, #0xa6
- lsls r5, r5, #2
- b _0807991E
-_0807987A:
- movs r0, #0x80
- lsls r0, r0, #5
- ands r1, r0
- cmp r1, #0
- beq _0807988A
- movs r5, #0xe2
- lsls r5, r5, #3
- b _0807991E
-_0807988A:
- ldrb r0, [r4, #3]
- cmp r0, #0
- beq _08079896
- movs r5, #0xb0
- lsls r5, r5, #1
- b _0807991E
-_08079896:
- adds r0, r4, #0
- adds r0, #0x21
- ldrb r0, [r0]
- cmp r0, #0
- beq _080798A6
-_080798A0:
- movs r5, #0xa1
- lsls r5, r5, #2
- b _0807991E
-_080798A6:
- adds r0, r4, #0
- adds r0, #0x26
- ldrb r0, [r0]
- movs r5, #0xa4
- lsls r5, r5, #2
- cmp r0, #0
- bne _0807991E
- movs r5, #0xb6
- lsls r5, r5, #1
- ldrb r1, [r4, #0x1b]
- movs r0, #0x48
- ands r0, r1
- cmp r0, #0
- beq _080798C8
-_080798C2:
- movs r0, #0x6c
- strb r0, [r4]
- b _0807992E
-_080798C8:
- lsls r0, r1, #0x18
- cmp r0, #0
- beq _080798FC
-_080798CE:
- movs r0, #0
- bl sub_080793E4
- cmp r0, #0
- beq _0807991E
- bl GetPlayerTilePos
- ldr r1, _080798F8 @ =gPlayerEntity
- adds r1, #0x38
- ldrb r1, [r1]
- bl sub_080B1B44
- cmp r0, #0xff
- beq _0807991E
- ldrb r1, [r4, #0x1b]
- movs r0, #0xf7
- ands r0, r1
- strb r0, [r4, #0x1b]
- movs r5, #0xb8
- lsls r5, r5, #1
- b _0807991E
- .align 2, 0
-_080798F8: .4byte gPlayerEntity
-_080798FC:
- adds r1, r4, #0
- adds r1, #0xa8
- ldrb r0, [r1]
- cmp r0, #0
- bne _0807990A
- movs r0, #1
- strb r0, [r1]
-_0807990A:
- ldr r0, [r4, #0x30]
- movs r1, #0x80
- lsls r1, r1, #0x10
- ands r0, r1
- movs r5, #0x82
- lsls r5, r5, #1
- cmp r0, #0
- beq _0807991E
- movs r5, #0xc1
- lsls r5, r5, #3
-_0807991E:
- ldr r0, _08079930 @ =gPlayerState
- strh r5, [r0, #8]
- ldrb r0, [r0, #3]
- cmp r0, #0
- bne _0807992E
- ldr r0, _08079934 @ =gPlayerEntity
- bl UpdateAnimationSingleFrame
-_0807992E:
- pop {r4, r5, pc}
- .align 2, 0
-_08079930: .4byte gPlayerState
-_08079934: .4byte gPlayerEntity
- .syntax divided
diff --git a/asm/non_matching/spearMoblin/sub_08028604.inc b/asm/non_matching/spearMoblin/sub_08028604.inc
deleted file mode 100644
index 61faa58b..00000000
--- a/asm/non_matching/spearMoblin/sub_08028604.inc
+++ /dev/null
@@ -1,104 +0,0 @@
-
- .syntax unified
-
- .text
-
- push {r4, r5, r6, lr}
- adds r4, r0, #0
- movs r1, #0
- strb r1, [r4, #0xf]
- adds r0, #0x82
- ldrb r0, [r0]
- cmp r0, #1
- bne _080286B0
- bl Random
- ldr r2, _08028650 @ =gUnk_080CC7BC
- movs r1, #3
- ands r1, r0
- adds r1, r1, r2
- ldrb r0, [r1]
- strb r0, [r4, #0xe]
- movs r0, #0x80
- strh r0, [r4, #0x24]
- adds r0, r4, #0
- bl sub_08049FA0
- cmp r0, #0
- beq _08028658
- bl Random
- ldr r2, _08028654 @ =gUnk_080CC7D0
- movs r1, #7
- ands r1, r0
- adds r1, r1, r2
- movs r0, #0
- ldrsb r0, [r1, r0]
- adds r0, #0x18
- ldrb r1, [r4, #0x15]
- adds r0, r0, r1
- movs r1, #0x18
- ands r0, r1
- strb r0, [r4, #0x15]
- b _080286B8
- .align 2, 0
-_08028650: .4byte gUnk_080CC7BC
-_08028654: .4byte gUnk_080CC7D0
-_08028658:
- adds r0, r4, #0
- bl sub_08049EE4
- adds r5, r0, #0
- adds r6, r4, #0
- adds r6, #0x83
- ldrb r0, [r6]
- cmp r0, #0
- bne _08028684
- bl Random
- ldr r2, _08028680 @ =gUnk_080CC7C0
- movs r1, #0xf
- ands r1, r0
- adds r1, r1, r2
- movs r0, #0
- ldrsb r0, [r1, r0]
- adds r5, r5, r0
- b _080286A2
- .align 2, 0
-_08028680: .4byte gUnk_080CC7C0
-_08028684:
- bl Random
- ldr r2, _080286AC @ =gUnk_080CC7C0
- movs r1, #7
- ands r1, r0
- adds r1, r1, r2
- movs r0, #0
- ldrsb r0, [r1, r0]
- adds r5, r5, r0
- ldrb r0, [r4, #0xe]
- adds r0, #0x10
- strb r0, [r4, #0xe]
- ldrb r0, [r6]
- subs r0, #1
- strb r0, [r6]
-_080286A2:
- adds r0, r5, #4
- movs r1, #0x18
- ands r0, r1
- strb r0, [r4, #0x15]
- b _080286B8
- .align 2, 0
-_080286AC: .4byte gUnk_080CC7C0
-_080286B0:
- movs r0, #0xc
- strb r0, [r4, #0xe]
- strh r1, [r4, #0x24]
- ldrb r0, [r4, #0x15]
-_080286B8:
- lsrs r5, r0, #2
- ldrb r0, [r4, #0x14]
- cmp r5, r0
- beq _080286C8
- strb r5, [r4, #0x14]
- adds r0, r4, #0
- bl sub_080287E0
-_080286C8:
- pop {r4, r5, r6, pc}
- .align 2, 0
-
- .syntax divided
diff --git a/asm/non_matching/ui/DrawChargeBar.inc b/asm/non_matching/ui/DrawChargeBar.inc
deleted file mode 100644
index 252ab19d..00000000
--- a/asm/non_matching/ui/DrawChargeBar.inc
+++ /dev/null
@@ -1,155 +0,0 @@
- .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
diff --git a/asm/non_matching/vaati/sub_080432A8.inc b/asm/non_matching/vaati/sub_080432A8.inc
deleted file mode 100644
index d075d6a5..00000000
--- a/asm/non_matching/vaati/sub_080432A8.inc
+++ /dev/null
@@ -1,89 +0,0 @@
-
- .syntax unified
- push {r4, r5, r6, r7, lr}
- adds r4, r0, #0
- movs r3, #3
- movs r2, #0
- ldr r0, [r4, #0x64]
- adds r1, r0, #0
- adds r1, #0x48
- ldrb r0, [r1, #0xc]
- cmp r0, #2
- bls _080432C2
- subs r0, #1
- strb r0, [r1, #0xc]
- movs r2, #1
-_080432C2:
- subs r3, #1
- cmp r3, #0
- blt _080432E0
- lsls r0, r3, #4
- adds r0, #0x18
- ldr r1, [r4, #0x64]
- adds r1, r1, r0
- ldrb r0, [r1, #0xc]
- cmp r0, #2
- bls _080432C2
- subs r0, #1
- strb r0, [r1, #0xc]
- adds r2, #1
- cmp r2, #1
- ble _080432C2
-_080432E0:
- ldr r0, [r4, #0x64]
- adds r1, r0, #0
- adds r1, #0x18
- ldrb r0, [r1, #5]
- subs r0, #2
- strb r0, [r1, #5]
- movs r3, #0
- movs r6, #0x80
- movs r7, #4
- rsbs r7, r7, #0
- movs r5, #1
-_080432F6:
- ldr r0, [r4, #0x64]
- lsls r1, r3, #2
- adds r0, r0, r1
- ldr r2, [r0]
- movs r1, #0x36
- ldrsh r0, [r2, r1]
- cmp r0, #3
- bgt _08043316
- ldrb r0, [r2, #0x10]
- orrs r0, r6
- strb r0, [r2, #0x10]
- ldrb r1, [r2, #0x18]
- adds r0, r7, #0
- ands r0, r1
- orrs r0, r5
- strb r0, [r2, #0x18]
-_08043316:
- adds r3, #1
- cmp r3, #3
- ble _080432F6
- ldr r1, [r4, #0x64]
- ldr r0, [r1]
- ldrb r0, [r0, #0x18]
- lsls r0, r0, #0x1e
- lsrs r2, r0, #0x1e
- cmp r2, #1
- bne _08043348
- adds r0, r1, #0
- adds r0, #0x34
- ldrb r0, [r0]
- cmp r0, #2
- bhi _08043348
- strb r2, [r4, #0xd]
- movs r0, #0x1e
- strb r0, [r4, #0xe]
- movs r0, #0x80
- lsls r0, r0, #7
- strh r0, [r1, #0x1c]
- ldr r0, [r4, #0x64]
- ldr r0, [r0, #0x10]
- bl sub_0804AA1C
-_08043348:
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
- .syntax divided
diff --git a/asm/non_matching/vaati/sub_0804393C.inc b/asm/non_matching/vaati/sub_0804393C.inc
deleted file mode 100644
index 1cd40fbe..00000000
--- a/asm/non_matching/vaati/sub_0804393C.inc
+++ /dev/null
@@ -1,109 +0,0 @@
- .syntax unified
- push {r4, r5, r6, r7, lr}
- mov r7, r8
- push {r7}
- adds r5, r0, #0
- ldr r0, [r5, #0x64]
- ldr r1, [r0]
- adds r0, r1, #0
- adds r0, #0x7c
- ldrb r0, [r0]
- lsls r2, r0, #0x18
- cmp r2, #0
- beq _0804397C
- adds r0, r1, #0
- adds r0, #0x7d
- ldrb r0, [r0]
- ldrb r1, [r5, #0xa]
- cmp r0, r1
- bhi _0804397C
- ldr r4, _08043978 @ =gUnk_080D1362
- ldrb r3, [r5, #0xa]
- lsls r1, r3, #4
- lsrs r0, r2, #0x1b
- movs r2, #0xf
- ands r0, r2
- adds r1, r1, r0
- adds r1, r1, r4
- ldrb r4, [r1]
- adds r6, r3, #0
- b _08043980
- .align 2, 0
-_08043978: .4byte gUnk_080D1362
-_0804397C:
- movs r4, #0
- ldrb r6, [r5, #0xa]
-_08043980:
- lsls r0, r6, #4
- adds r0, #0x18
- ldr r2, [r5, #0x64]
- mov ip, r2
- adds r2, r2, r0
- ldrb r0, [r2, #0xc]
- adds r0, r4, r0
- lsls r4, r0, #8
- ldr r3, _08043A0C @ =gSineTable
- ldrb r1, [r2, #5]
- adds r0, r1, #0
- adds r0, #0x40
- lsls r0, r0, #1
- adds r0, r0, r3
- movs r7, #0
- ldrsh r0, [r0, r7]
- rsbs r0, r0, #0
- adds r7, r0, #0
- muls r7, r4, r7
- mov r8, r7
- movs r0, #0x7f
- ands r1, r0
- lsls r1, r1, #1
- adds r1, r1, r3
- movs r7, #0
- ldrsh r0, [r1, r7]
- muls r0, r4, r0
- cmp r0, #0
- bge _080439BC
- adds r0, #0xff
-_080439BC:
- asrs r4, r0, #8
- ldrb r1, [r2, #1]
- lsls r0, r1, #1
- adds r0, r0, r3
- movs r2, #0
- ldrsh r0, [r0, r2]
- adds r2, r0, #0
- muls r2, r4, r2
- adds r1, #0x40
- lsls r1, r1, #1
- adds r1, r1, r3
- movs r3, #0
- ldrsh r0, [r1, r3]
- rsbs r0, r0, #0
- adds r3, r0, #0
- muls r3, r4, r3
- adds r0, r6, #1
- lsls r0, r0, #2
- add r0, ip
- ldr r0, [r0]
- adds r1, r5, #0
- bl PositionRelative
- ldr r0, [r5, #0x34]
- add r0, r8
- str r0, [r5, #0x34]
- ldr r1, [r5, #0x64]
- ldrb r0, [r5, #0xa]
- adds r0, #1
- lsls r0, r0, #2
- adds r1, r1, r0
- ldr r0, [r1]
- adds r0, #0x63
- ldrb r1, [r0]
- adds r0, r5, #0
- adds r0, #0x63
- strb r1, [r0]
- pop {r3}
- mov r8, r3
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-_08043A0C: .4byte gSineTable
- .syntax divided
diff --git a/src/enemy/madderpillar.c b/src/enemy/madderpillar.c
index 46f0d2ef..ad81c2d4 100644
--- a/src/enemy/madderpillar.c
+++ b/src/enemy/madderpillar.c
@@ -19,6 +19,9 @@ void sub_0802A18C(Entity*);
bool32 sub_08029FE4(Entity*);
void sub_08029FB4(Entity*, u32, u32);
void sub_0802A0F8(Entity*);
+void sub_08029F0C(Entity*);
+
+extern s16 gUnk_080B4488[];
extern void (*const gUnk_080CCD44[])(Entity*);
extern void (*const Madderpillar_Functions[])(Entity*);
@@ -320,7 +323,41 @@ void sub_08029DE4(Entity* this) {
}
}
-ASM_FUNC("asm/non_matching/madderpillar/sub_08029E0C.inc", void sub_08029E0C(Entity* this))
+void sub_08029E0C(Entity* this) {
+ u32 tile;
+ s32 uVar4;
+ s32 iVar3;
+ u32 i;
+ u32 uVar2;
+ const u8* ptr;
+ u32 local_24;
+ u32 dir;
+
+ uVar2 = (this->direction >> 3) * 3;
+ ptr = &gUnk_080CCDC8[uVar2];
+ uVar4 = (Random() & 1) * 2 - 1;
+ iVar3 = ((s32)Random() & 0xf) % 3;
+ tile = COORD_TO_TILE(this);
+ for (i = 0; i < 3; i++) {
+ dir = ptr[iVar3];
+ if (sub_080B1B44(gUnk_080B4488[dir >> 3] + tile, this->collisionLayer) == 0) {
+ local_24 = dir;
+ if (this->direction - this->field_0x74.HALF.LO != dir - this->direction)
+ break;
+ }
+ iVar3 = (iVar3 + uVar4 + 3) % 3;
+ }
+
+ if (i == 3) {
+ dir = local_24;
+ }
+
+ if (this->field_0x74.HALF.LO != this->direction) {
+ this->field_0x74.HALF.LO = this->direction;
+ }
+ this->direction = dir;
+ sub_08029F0C(this);
+}
void sub_08029EEC(Entity* this) {
u32 uVar1 = (this->direction >> 3) + this->field_0x74.HALF.HI;
diff --git a/src/enemy/mulldozer.c b/src/enemy/mulldozer.c
index fbb376e0..854235de 100644
--- a/src/enemy/mulldozer.c
+++ b/src/enemy/mulldozer.c
@@ -436,7 +436,7 @@ void sub_08033320(MulldozerEntity* this) {
}
}
-NONMATCH("asm/non_matching/mulldozer/sub_08033364.inc", bool32 sub_08033364(MulldozerEntity* this)) {
+bool32 sub_08033364(MulldozerEntity* this) {
Entity* entity;
u32 radius;
u32 tmp;
@@ -452,14 +452,16 @@ NONMATCH("asm/non_matching/mulldozer/sub_08033364.inc", bool32 sub_08033364(Mull
if (super->type != 0) {
return TRUE;
}
- if (((GetFacingDirection(super, gUnk_020000B0) + 2) & 0x1c) >> 2 == super->animationState) {
+ tmp = GetFacingDirection(super, gUnk_020000B0);
+ tmp = Direction8RoundUp(tmp);
+ tmp = Direction8ToAnimationState(tmp);
+ if (super->animationState == tmp) {
return TRUE;
}
}
}
return FALSE;
}
-END_NONMATCH
void (*const Mulldozer_Functions[])(MulldozerEntity*) = {
Mulldozer_OnInit,
diff --git a/src/enemy/spearMoblin.c b/src/enemy/spearMoblin.c
index 6a2874e9..29c2584f 100644
--- a/src/enemy/spearMoblin.c
+++ b/src/enemy/spearMoblin.c
@@ -24,7 +24,7 @@ extern void (*const SpearMoblin_Functions[])(Entity*);
extern void (*const gUnk_080CC7A8[])(Entity*);
extern const u8 gUnk_080CC7BC[];
extern const s8 gUnk_080CC7C0[];
-extern const u8 gUnk_080CC7D0[];
+extern const s8 gUnk_080CC7D0[];
extern const u16 gUnk_080CC7D8[];
extern const Hitbox* const gUnk_080CC944[];
@@ -242,7 +242,8 @@ void sub_08028528(Entity* this) {
}
}
-NONMATCH("asm/non_matching/spearMoblin/sub_08028604.inc", void sub_08028604(Entity* this)) {
+void sub_08028604(Entity* this) {
+ u32 iVar3;
this->subtimer = 0;
if (this->field_0x82.HALF.LO == 1) {
this->timer = gUnk_080CC7BC[Random() & 3];
@@ -251,12 +252,10 @@ NONMATCH("asm/non_matching/spearMoblin/sub_08028604.inc", void sub_08028604(Enti
u32 rand = Random();
u32 tmp;
tmp = gUnk_080CC7D0[rand & 7] + 0x18;
- tmp += this->direction;
- tmp &= 0x18;
- this->direction = tmp;
+ this->direction = DirectionRound(tmp + this->direction);
+ iVar3 = Direction8ToAnimationState(this->direction);
} else {
- u32 iVar3 = sub_08049EE4(this);
- s8 uVar1;
+ iVar3 = sub_08049EE4(this);
if (this->field_0x82.HALF.HI == 0) {
u32 rand = Random();
iVar3 += gUnk_080CC7C0[rand & 0xf];
@@ -267,18 +266,19 @@ NONMATCH("asm/non_matching/spearMoblin/sub_08028604.inc", void sub_08028604(Enti
this->field_0x82.HALF.HI--;
}
this->direction = (iVar3 + 4U) & 0x18;
+ iVar3 = Direction8ToAnimationState(this->direction);
}
} else {
- this->timer = 0xc;
+ this->timer = 12;
this->speed = 0;
+ iVar3 = Direction8ToAnimationState(this->direction);
}
- if (this->direction >> 2 != this->animationState) {
- this->animationState = this->direction >> 2;
+ if (iVar3 != this->animationState) {
+ this->animationState = iVar3;
sub_080287E0(this);
}
}
-END_NONMATCH
bool32 sub_080286CC(Entity* this) {
if (this->field_0x80.HALF.HI == 0) {
@@ -429,7 +429,7 @@ const s8 gUnk_080CC7C0[] = {
0x00, 0xFE,
};
-const u8 gUnk_080CC7D0[] = {
+const s8 gUnk_080CC7D0[] = {
0x08, 0x10,
0x08, 0x00,
0x10, 0x08,
diff --git a/src/enemy/vaatiArm.c b/src/enemy/vaatiArm.c
index 1e78d133..a6f87b9d 100644
--- a/src/enemy/vaatiArm.c
+++ b/src/enemy/vaatiArm.c
@@ -858,9 +858,45 @@ static void sub_0804325C(Entity* this) {
}
}
-static ASM_FUNC("asm/non_matching/vaati/sub_080432A8.inc", void sub_080432A8(Entity* this))
+void sub_080432A8(Entity* this) {
+ s32 iVar3;
+ s32 i;
+ VaatiArm_HeapStruct1* hs;
+ Entity* ent;
+ i = 3;
+ iVar3 = 0;
+
+ for (; i >= 0; i--) {
+ hs = &((VaatiArm_HeapStruct*)this->myHeap)->s1[i];
+ if (hs->unk0c > 2) {
+ hs->unk0c--;
+ if (++iVar3 > 1) {
+ break;
+ }
+ }
+ }
+
+ hs = &((VaatiArm_HeapStruct*)this->myHeap)->s1[0];
+ hs->unk04.HALF.HI -= 2;
+
+ for (i = 0; i < 4; i++) {
+ ent = ((VaatiArm_HeapStruct*)this->myHeap)->entities[i];
+ if (ent->z.HALF.HI < 4) {
+ COLLISION_ON(ent);
+ ent->spriteSettings.draw = 1;
+ }
+ }
- static NONMATCH("asm/non_matching/vaati/sub_0804334C.inc", void sub_0804334C(Entity* this)) {
+ if ((((VaatiArm_HeapStruct*)this->myHeap)->entities[0]->spriteSettings.draw == 1) &&
+ (((VaatiArm_HeapStruct*)this->myHeap)->s1[1].unk0c < 3)) {
+ this->subAction = 1;
+ this->timer = 0x1e;
+ ((VaatiArm_HeapStruct*)this->myHeap)->s1[0].unk04.HWORD = 0x4000;
+ sub_0804AA1C(((VaatiArm_HeapStruct*)this->myHeap)->entities[4]);
+ }
+}
+
+static NONMATCH("asm/non_matching/vaati/sub_0804334C.inc", void sub_0804334C(Entity* this)) {
int bVar1;
Entity* entity;
VaatiArm_HeapStruct1* s;
@@ -1162,9 +1198,32 @@ static u32 sub_080437DC(Entity* this) {
return 1;
}
-static ASM_FUNC("asm/non_matching/vaati/sub_0804393C.inc", void sub_0804393C(Entity* this))
+void sub_0804393C(Entity* this) {
+ s32 uVar1;
+ s32 uVar2;
+ s32 uVar6;
+ s32 iVar7;
+ VaatiArm_HeapStruct1* hs;
+ Entity* ent;
- static void sub_08043A10(Entity* this) {
+ ent = ((VaatiArm_HeapStruct*)this->myHeap)->entities[0];
+ if (ent->field_0x7c.BYTES.byte0 != 0 && ent->field_0x7c.BYTES.byte1 <= this->type) {
+ uVar2 = gUnk_080D1362[this->type * 16 + ((ent->field_0x7c.BYTES.byte0 >> 3) & 0xf)];
+ } else {
+ uVar2 = 0;
+ }
+ hs = &((VaatiArm_HeapStruct*)this->myHeap)->s1[this->type];
+ uVar2 = (uVar2 + hs->unk0c) << 8;
+ uVar1 = -gSineTable[hs->unk04.HALF.HI + 0x40] * uVar2;
+ uVar2 = (gSineTable[hs->unk04.HALF.HI & 0x7f] * uVar2) / 0x100;
+ uVar6 = gSineTable[hs->unk00.HALF.HI] * uVar2;
+ iVar7 = -gSineTable[hs->unk00.HALF.HI + 0x40] * uVar2;
+ PositionRelative(((VaatiArm_HeapStruct*)this->myHeap)->entities[this->type + 1], this, uVar6, iVar7);
+ this->z.WORD += uVar1;
+ this->spriteOffsetY = ((VaatiArm_HeapStruct*)this->myHeap)->entities[this->type + 1]->spriteOffsetY;
+}
+
+static void sub_08043A10(Entity* this) {
sub_08043B7C(this);
sub_0804393C(((VaatiArm_HeapStruct*)this->myHeap)->entities[4]);
((VaatiArm_HeapStruct*)this->myHeap)->entities[4]->y.HALF.HI -= 8;
diff --git a/src/object/figurineDevice.c b/src/object/figurineDevice.c
index e01a1304..75d626f3 100644
--- a/src/object/figurineDevice.c
+++ b/src/object/figurineDevice.c
@@ -32,10 +32,11 @@ typedef struct {
/*0x80*/ u8 unk_80;
#endif
/*0x81*/ u8 unk_81;
- /*0x82*/ s8 unk_82;
#ifdef EU
+ /*0x82*/ u8 unk_82;
/*0x83*/ u8 unk_83;
#else
+ /*0x82*/ s8 unk_82;
/*0x83*/ s8 unk_83;
#endif
} FigurineDeviceEntity;
@@ -319,7 +320,122 @@ void sub_08087F58(FigurineDeviceEntity* this) {
}
}
-ASM_FUNC("asm/non_matching/figurineDevice/sub_08087F94.inc", void sub_08087F94(FigurineDeviceEntity* this, s32 param_2))
+void sub_08087F94(FigurineDeviceEntity* this, s32 param_2) {
+#ifdef EU
+ u32 uVar8;
+ u32 iVar9;
+
+ iVar9 = this->unk_83 + param_2;
+ if (CheckLocalFlag(SHOP07_COMPLETE)) {
+ sub_08088034(this);
+ return;
+ }
+
+ if (param_2 < 0) {
+ if (iVar9 < this->unk_82) {
+ if (this->unk_83 != this->unk_82) {
+ this->unk_83 = this->unk_82;
+ this->unk_81 = 1;
+ SoundReq(SFX_TEXTBOX_CHOICE);
+ } else {
+ sub_08088034(this);
+ }
+ } else {
+ this->unk_83 = iVar9;
+ this->unk_81 += param_2;
+ SoundReq(SFX_TEXTBOX_CHOICE);
+ }
+ return;
+ }
+ uVar8 = this->unk_81 + param_2;
+ if (uVar8 > (s32)gSave.stats.shells) {
+ if (gSave.stats.shells != this->unk_81) {
+ uVar8 = gSave.stats.shells;
+ param_2 = (gSave.stats.shells - this->unk_81);
+ iVar9 = this->unk_83 + param_2;
+ } else {
+ sub_08088034(this);
+ return;
+ }
+ } else if (iVar9 > 100) {
+ if (this->unk_83 == 100) {
+ sub_08088034(this);
+ return;
+ } else {
+ iVar9 = 100;
+ param_2 = (iVar9 - this->unk_83);
+ uVar8 = this->unk_81 + param_2;
+ }
+ }
+
+#else
+ s32 uVar8;
+ s32 iVar9;
+ s32 t1, t2;
+
+ if (CheckLocalFlag(SHOP07_COMPLETE)) {
+ sub_08088034(this);
+ return;
+ }
+
+ // This could probably be done without t1 and t2
+ t1 = this->unk_83;
+ iVar9 = t1 + param_2;
+ if (param_2 < 0) {
+ if (iVar9 < this->unk_82) {
+ if (this->unk_83 != this->unk_82) {
+ this->unk_83 = this->unk_82;
+ this->unk_81 = 1;
+ SoundReq(SFX_TEXTBOX_CHOICE);
+ } else {
+ sub_08088034(this);
+ }
+ } else {
+ this->unk_83 = iVar9;
+ this->unk_81 += param_2;
+ SoundReq(SFX_TEXTBOX_CHOICE);
+ }
+ return;
+ }
+ t2 = this->unk_81;
+ uVar8 = t2 + param_2;
+ if (uVar8 > gSave.stats.shells) {
+ if (gSave.stats.shells != this->unk_81) {
+ uVar8 = gSave.stats.shells;
+ param_2 = (gSave.stats.shells - this->unk_81);
+ iVar9 = t1 + param_2;
+#ifdef JP
+ if (iVar9 > 100) {
+ iVar9 = 100;
+ param_2 = (iVar9 - t1);
+ uVar8 = t2 + param_2;
+ }
+#endif
+ } else {
+ sub_08088034(this);
+ return;
+ }
+ }
+#ifdef JP
+ else if (iVar9 > 100) {
+#else
+ if (iVar9 > 100) {
+#endif
+ if (this->unk_83 == 100) {
+ sub_08088034(this);
+ return;
+ } else {
+ iVar9 = 100;
+ param_2 = (iVar9 - t1);
+ uVar8 = t2 + param_2;
+ }
+ }
+#endif
+
+ this->unk_83 = iVar9;
+ this->unk_81 = uVar8;
+ SoundReq(SFX_TEXTBOX_CHOICE);
+}
void sub_08088034(FigurineDeviceEntity* this) {
if (super->timer == 0) {
diff --git a/src/playerUtils.c b/src/playerUtils.c
index f8d2225c..3e23404a 100644
--- a/src/playerUtils.c
+++ b/src/playerUtils.c
@@ -1618,7 +1618,88 @@ u32 sub_080797C4(void) {
return tmp == (gPlayerEntity.collisions & tmp);
}
-ASM_FUNC("asm/non_matching/playerUtils/sub_080797EC.inc", void sub_080797EC())
+void sub_080797EC(void) {
+ u32 animation;
+
+ if ((gPlayerState.flags & PL_NO_CAP) != 0) {
+ if (gPlayerState.heldObject != 0) {
+ animation = 0x934;
+ } else if (gPlayerState.shield_status != 0) {
+ animation = 0x410;
+ } else if (gPlayerState.field_0x1f[2] == 0) {
+ if (gPlayerState.swim_state != 0) {
+ animation = 0x290;
+ } else {
+ animation = 0x16c;
+ if ((gPlayerState.sword_state & 0x48) != 0) {
+ gPlayerState.prevAnim = 0x6c;
+ return;
+ } else if (gPlayerState.sword_state == 0) {
+ if (gPlayerState.framestate == 0) {
+ gPlayerState.framestate = 1;
+ }
+ animation = 0x404;
+ } else {
+ animation = 0x16c;
+ if (sub_080793E4(0)) {
+ if (sub_080B1B44(GetPlayerTilePos(), gPlayerEntity.collisionLayer) != 0xff) {
+ gPlayerState.sword_state &= ~8;
+ animation = 0x170;
+ }
+ }
+ }
+ }
+ } else {
+ animation = 0x284;
+ }
+ } else {
+ if (gPlayerState.field_0x1c != 0) {
+ return;
+ } else if (gPlayerState.heldObject != 0) {
+ animation = 0x348;
+ } else if (gPlayerState.dash_state != 0) {
+ animation = 0x298;
+ } else if ((gPlayerState.flags & PL_IN_MINECART) != 0) {
+ animation = 0x710;
+ } else if (gPlayerState.shield_status != 0) {
+ animation = 0x160;
+ } else if (gPlayerState.field_0x1f[2] != 0) {
+ animation = 0x284;
+ } else {
+ if (gPlayerState.swim_state != 0) {
+ animation = 0x290;
+ } else {
+ animation = 0x16c;
+ if ((gPlayerState.sword_state & 0x48) != 0) {
+ gPlayerState.prevAnim = 0x6c;
+ return;
+ } else if (gPlayerState.sword_state != 0) {
+ animation = 0x16c;
+ if (sub_080793E4(0)) {
+ if (sub_080B1B44(GetPlayerTilePos(), (u32)gPlayerEntity.collisionLayer) != 0xff) {
+ gPlayerState.sword_state &= ~8;
+ animation = 0x170;
+ }
+ }
+ } else {
+ if (gPlayerState.framestate == 0) {
+ gPlayerState.framestate = 1;
+ }
+ if ((gPlayerState.flags & PL_USE_LANTERN) != 0) {
+ animation = 0x608;
+ } else {
+ animation = 0x104;
+ }
+ }
+ }
+ }
+ }
+ gPlayerState.animation = animation;
+
+ if (gPlayerState.shield_status == 0) {
+ UpdateAnimationSingleFrame(&gPlayerEntity);
+ }
+}
void ResolvePlayerAnimation(void) {
u32 index;
diff --git a/src/ui.c b/src/ui.c
index 47f3599b..613afa2e 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -63,6 +63,8 @@ extern struct_020350E2 gUnk_020350E2;
extern const u16 gUnk_080C8F2C[];
extern u32 gUnk_085C4620[];
extern Frame* gSpriteAnimations_322[];
+extern u16 gUnk_080C8F54[];
+extern u32 gUnk_080C8F7C[];
typedef struct {
u16 unk_0; // -> gOamCmd._4
@@ -491,7 +493,59 @@ void sub_0801C824(void) {
}
}
-ASM_FUNC("asm/non_matching/ui/DrawChargeBar.inc", void DrawChargeBar())
+void DrawChargeBar(void) {
+ bool32 tmp1;
+ u16* ptr1;
+ u32 tmp2;
+ u32 tmp3;
+ register u32 rem asm("r1");
+ u32 tmp5;
+
+ tmp1 = FALSE;
+ if ((gUnk_0200AF00.unk_1 & 0x20) == 0) {
+ tmp1 = gPlayerState.chargeState.action != 0;
+ }
+
+ if (!tmp1)
+ return sub_0801C824();
+
+ ptr1 = (gUnk_0200AF00.maxHealth > 0x28) ? (u16*)((u8*)(&gUnk_02034D30) + 0x40) : (u16*)&gUnk_02034D30.unk_0;
+
+ tmp2 = Div(gPlayerState.chargeState.chargeTimer + 19, 20);
+ if (tmp2 > 40) {
+ tmp2 = 40;
+ }
+ if (gUnk_0200AF00.unk_6 == 0 || gUnk_0200AF00.unk_7 != tmp2) {
+ gUnk_0200AF00.unk_6 = 1;
+ gUnk_0200AF00.unk_7 = tmp2;
+ tmp3 = Div(tmp2, 4);
+ tmp5 = rem;
+ ptr1[0] = 0xf016;
+ ptr1[11] = 0xf416;
+ DmaSet(3, gUnk_080C8F54 + (10 - tmp3), ptr1 + 1, 0x8000000a);
+ if (tmp5 != 0) {
+ ptr1[tmp3 + 1] = ((tmp5 + 0x17U) & 0x3ff) | 0xf000;
+ }
+ gScreen.bg0.updated = 1;
+ }
+
+ switch (gPlayerState.chargeState.action) {
+ case 4:
+ case 5:
+ gUnk_0200AF00.unk_9 += (gPlayerState.chargeState.action == 4) ? 2 : 1;
+ tmp3 = gUnk_0200AF00.unk_9 >> 4 & 3;
+ break;
+ default:
+ tmp3 = 0;
+ break;
+ }
+
+ if (tmp3 != gUnk_0200AF00.unk_8) {
+ gUnk_0200AF00.unk_8 = tmp3;
+ ptr1 = (u16*)0x600c2c0;
+ DmaSet(3, gUnk_080C8F7C[tmp3], ptr1, 0x84000030);
+ }
+}
void DrawKeys(void) {
s32 iVar1;