Merge pull request #570 from hatal175/sub_080432A8

This commit is contained in:
notyourav
2022-09-05 11:33:54 -07:00
committed by GitHub
15 changed files with 373 additions and 1083 deletions
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
-155
View File
@@ -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
-89
View File
@@ -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
-109
View File
@@ -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
+38 -1
View File
@@ -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;
+5 -3
View File
@@ -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,
+12 -12
View File
@@ -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,
+63 -4
View File
@@ -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;
static NONMATCH("asm/non_matching/vaati/sub_0804334C.inc", void sub_0804334C(Entity* this)) {
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;
}
}
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;
+118 -2
View File
@@ -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) {
+82 -1
View File
@@ -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;
+55 -1
View File
@@ -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;