mirror of
https://github.com/zeldaret/tmc
synced 2026-06-02 02:00:32 -04:00
Merge branch 'master' into tilemap-docs
This commit is contained in:
@@ -462,7 +462,7 @@
|
||||
.2byte \s
|
||||
.endm
|
||||
|
||||
.macro _0807E9F0
|
||||
.macro UpdateFusion
|
||||
.2byte 0x0456
|
||||
.endm
|
||||
|
||||
|
||||
@@ -1,131 +0,0 @@
|
||||
.syntax unified
|
||||
ldr r3, _08016DF0 @ =gScreen
|
||||
ldrh r1, [r3]
|
||||
ldrh r0, [r3, #6]
|
||||
ands r0, r1
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #0x13
|
||||
strh r0, [r1]
|
||||
adds r1, #8
|
||||
ldrh r0, [r3, #8]
|
||||
strh r0, [r1]
|
||||
adds r1, #2
|
||||
ldrh r0, [r3, #0x14]
|
||||
strh r0, [r1]
|
||||
adds r1, #2
|
||||
ldrh r0, [r3, #0x20]
|
||||
strh r0, [r1]
|
||||
adds r1, #2
|
||||
ldrh r0, [r3, #0x2c]
|
||||
strh r0, [r1]
|
||||
adds r1, #2
|
||||
ldrh r0, [r3, #0xa]
|
||||
strh r0, [r1]
|
||||
adds r1, #2
|
||||
ldrh r0, [r3, #0xc]
|
||||
strh r0, [r1]
|
||||
adds r1, #2
|
||||
ldrh r0, [r3, #0x16]
|
||||
strh r0, [r1]
|
||||
adds r1, #2
|
||||
ldrh r0, [r3, #0x18]
|
||||
strh r0, [r1]
|
||||
adds r1, #2
|
||||
ldrh r0, [r3, #0x22]
|
||||
strh r0, [r1]
|
||||
adds r1, #2
|
||||
ldrh r0, [r3, #0x24]
|
||||
strh r0, [r1]
|
||||
adds r1, #2
|
||||
ldrh r0, [r3, #0x2e]
|
||||
strh r0, [r1]
|
||||
adds r1, #2
|
||||
ldrh r0, [r3, #0x30]
|
||||
strh r0, [r1]
|
||||
adds r1, r3, #0
|
||||
adds r1, #0x38
|
||||
ldr r2, _08016DF4 @ =0x04000020
|
||||
ldrh r0, [r3, #0x38]
|
||||
strh r0, [r2]
|
||||
adds r2, #2
|
||||
ldrh r0, [r1, #2]
|
||||
strh r0, [r2]
|
||||
adds r2, #2
|
||||
ldrh r0, [r1, #4]
|
||||
strh r0, [r2]
|
||||
adds r2, #2
|
||||
ldrh r0, [r1, #6]
|
||||
strh r0, [r2]
|
||||
adds r2, #2
|
||||
ldrh r0, [r1, #8]
|
||||
strh r0, [r2]
|
||||
adds r2, #2
|
||||
ldrh r0, [r1, #0xa]
|
||||
strh r0, [r2]
|
||||
adds r2, #2
|
||||
ldrh r0, [r1, #0xc]
|
||||
strh r0, [r2]
|
||||
adds r2, #2
|
||||
ldrh r0, [r1, #0xe]
|
||||
strh r0, [r2]
|
||||
adds r1, #0x10
|
||||
adds r2, #2
|
||||
ldrh r0, [r1]
|
||||
strh r0, [r2]
|
||||
adds r2, #2
|
||||
ldrh r0, [r1, #2]
|
||||
strh r0, [r2]
|
||||
adds r2, #2
|
||||
ldrh r0, [r1, #4]
|
||||
strh r0, [r2]
|
||||
adds r2, #2
|
||||
ldrh r0, [r1, #6]
|
||||
strh r0, [r2]
|
||||
adds r2, #2
|
||||
ldrh r0, [r1, #8]
|
||||
strh r0, [r2]
|
||||
adds r2, #2
|
||||
ldrh r0, [r1, #0xa]
|
||||
strh r0, [r2]
|
||||
adds r2, #2
|
||||
ldrh r0, [r1, #0xc]
|
||||
strh r0, [r2]
|
||||
adds r2, #2
|
||||
ldrh r0, [r1, #0xe]
|
||||
strh r0, [r2]
|
||||
adds r1, #0x10
|
||||
adds r2, #2
|
||||
ldrh r0, [r1]
|
||||
strh r0, [r2]
|
||||
adds r2, #2
|
||||
ldrh r0, [r1, #2]
|
||||
strh r0, [r2]
|
||||
adds r2, #2
|
||||
ldrh r0, [r1, #4]
|
||||
strh r0, [r2]
|
||||
adds r2, #2
|
||||
ldrh r0, [r1, #6]
|
||||
strh r0, [r2]
|
||||
adds r2, #2
|
||||
ldrh r0, [r1, #8]
|
||||
strh r0, [r2]
|
||||
adds r2, #2
|
||||
ldrh r0, [r1, #0xa]
|
||||
strh r0, [r2]
|
||||
adds r2, #2
|
||||
ldrh r0, [r1, #0xc]
|
||||
strh r0, [r2]
|
||||
adds r2, #4
|
||||
ldrh r0, [r1, #0xe]
|
||||
strh r0, [r2]
|
||||
adds r2, #2
|
||||
ldrh r0, [r1, #0x10]
|
||||
strh r0, [r2]
|
||||
adds r2, #2
|
||||
ldrh r0, [r1, #0x12]
|
||||
strh r0, [r2]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08016DF0: .4byte gScreen
|
||||
_08016DF4: .4byte 0x04000020
|
||||
.syntax divided
|
||||
@@ -1,454 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
mov r5, r8
|
||||
push {r5, r6, r7}
|
||||
adds r6, r0, #0
|
||||
mov sl, r1
|
||||
cmp r6, #0
|
||||
bne _0801A58C
|
||||
ldr r0, _0801A588 @ =0x0000FFFF
|
||||
b _0801A8C2
|
||||
.align 2, 0
|
||||
_0801A588: .4byte 0x0000FFFF
|
||||
_0801A58C:
|
||||
adds r4, r6, #0
|
||||
adds r4, #0x38
|
||||
ldrb r0, [r4]
|
||||
bl GetLayerByIndex
|
||||
mov r8, r0
|
||||
ldr r0, _0801A668 @ =0x00005004
|
||||
add r0, r8
|
||||
mov ip, r0
|
||||
movs r5, #4
|
||||
movs r7, #2
|
||||
ldrb r0, [r6, #0x14]
|
||||
lsrs r0, r0, #1
|
||||
mov sb, r4
|
||||
cmp r0, #1
|
||||
beq _0801A678
|
||||
cmp r0, #1
|
||||
ble _0801A5BC
|
||||
cmp r0, #2
|
||||
bne _0801A5B6
|
||||
b _0801A73C
|
||||
_0801A5B6:
|
||||
cmp r0, #3
|
||||
bne _0801A5BC
|
||||
b _0801A7FC
|
||||
_0801A5BC:
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r6, r1]
|
||||
ldr r2, _0801A66C @ =gRoomControls
|
||||
ldrh r1, [r2, #6]
|
||||
subs r0, r0, r1
|
||||
asrs r4, r0, #4
|
||||
movs r3, #0x3f
|
||||
ands r4, r3
|
||||
movs r1, #0x32
|
||||
ldrsh r0, [r6, r1]
|
||||
ldrh r1, [r2, #8]
|
||||
adds r1, #0xa
|
||||
subs r0, r0, r1
|
||||
asrs r0, r0, #4
|
||||
ands r0, r3
|
||||
lsls r0, r0, #6
|
||||
orrs r4, r0
|
||||
mov r2, r8
|
||||
adds r2, #4
|
||||
movs r3, #0xdc
|
||||
lsls r3, r3, #2
|
||||
lsls r0, r4, #1
|
||||
adds r1, r0, r2
|
||||
_0801A5EA:
|
||||
ldrh r0, [r1]
|
||||
lsls r0, r0, #1
|
||||
add r0, ip
|
||||
ldrh r0, [r0]
|
||||
cmp r0, r3
|
||||
beq _0801A600
|
||||
subs r1, #2
|
||||
subs r4, #1
|
||||
subs r5, #1
|
||||
cmp r5, #0
|
||||
bne _0801A5EA
|
||||
_0801A600:
|
||||
subs r4, #0x40
|
||||
movs r3, #0xdd
|
||||
lsls r3, r3, #2
|
||||
lsls r0, r4, #1
|
||||
adds r1, r0, r2
|
||||
_0801A60A:
|
||||
ldrh r0, [r1]
|
||||
lsls r0, r0, #1
|
||||
add r0, ip
|
||||
ldrh r0, [r0]
|
||||
cmp r0, r3
|
||||
bne _0801A620
|
||||
adds r7, #1
|
||||
subs r1, #0x80
|
||||
subs r4, #0x40
|
||||
cmp r7, #3
|
||||
bls _0801A60A
|
||||
_0801A620:
|
||||
mov r2, sl
|
||||
cmp r2, #0
|
||||
bne _0801A628
|
||||
b _0801A8C0
|
||||
_0801A628:
|
||||
mov r0, sb
|
||||
ldrb r1, [r0]
|
||||
adds r0, r4, #0
|
||||
bl GetMetaTileType
|
||||
adds r5, r0, #0
|
||||
ldr r1, _0801A670 @ =0xFFFFFC97
|
||||
adds r0, r5, r1
|
||||
cmp r0, #1
|
||||
bls _0801A63E
|
||||
b _0801A8B4
|
||||
_0801A63E:
|
||||
ldr r2, _0801A674 @ =0x00001FC4
|
||||
adds r0, r4, r2
|
||||
mov r2, r8
|
||||
adds r1, r2, r0
|
||||
movs r5, #0
|
||||
cmp r5, r7
|
||||
blo _0801A64E
|
||||
b _0801A8B6
|
||||
_0801A64E:
|
||||
ldrb r0, [r1]
|
||||
cmp r0, #0
|
||||
beq _0801A656
|
||||
b _0801A8B4
|
||||
_0801A656:
|
||||
adds r5, #1
|
||||
cmp r5, r7
|
||||
blo _0801A65E
|
||||
b _0801A8B6
|
||||
_0801A65E:
|
||||
adds r0, r1, r5
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _0801A656
|
||||
b _0801A8B4
|
||||
.align 2, 0
|
||||
_0801A668: .4byte 0x00005004
|
||||
_0801A66C: .4byte gRoomControls
|
||||
_0801A670: .4byte 0xFFFFFC97
|
||||
_0801A674: .4byte 0x00001FC4
|
||||
_0801A678:
|
||||
movs r0, #0x2e
|
||||
ldrsh r1, [r6, r0]
|
||||
ldr r3, _0801A730 @ =gRoomControls
|
||||
ldrh r0, [r3, #6]
|
||||
subs r0, #0xa
|
||||
subs r1, r1, r0
|
||||
asrs r4, r1, #4
|
||||
movs r2, #0x3f
|
||||
ands r4, r2
|
||||
movs r1, #0x32
|
||||
ldrsh r0, [r6, r1]
|
||||
ldrh r1, [r3, #8]
|
||||
subs r0, r0, r1
|
||||
asrs r0, r0, #4
|
||||
ands r0, r2
|
||||
lsls r0, r0, #6
|
||||
orrs r4, r0
|
||||
mov r2, r8
|
||||
adds r2, #4
|
||||
mov r3, ip
|
||||
movs r6, #0xdc
|
||||
lsls r6, r6, #2
|
||||
lsls r0, r4, #1
|
||||
adds r1, r0, r2
|
||||
_0801A6A8:
|
||||
ldrh r0, [r1]
|
||||
lsls r0, r0, #1
|
||||
adds r0, r3, r0
|
||||
ldrh r0, [r0]
|
||||
cmp r0, r6
|
||||
beq _0801A6BE
|
||||
adds r1, #0x80
|
||||
adds r4, #0x40
|
||||
subs r5, #1
|
||||
cmp r5, #0
|
||||
bne _0801A6A8
|
||||
_0801A6BE:
|
||||
subs r4, #0x40
|
||||
movs r3, #0xdd
|
||||
lsls r3, r3, #2
|
||||
lsls r0, r4, #1
|
||||
adds r1, r0, r2
|
||||
_0801A6C8:
|
||||
ldrh r0, [r1]
|
||||
lsls r0, r0, #1
|
||||
add r0, ip
|
||||
ldrh r0, [r0]
|
||||
cmp r0, r3
|
||||
bne _0801A6DE
|
||||
adds r7, #1
|
||||
subs r1, #0x80
|
||||
subs r4, #0x40
|
||||
cmp r7, #3
|
||||
bls _0801A6C8
|
||||
_0801A6DE:
|
||||
mov r2, sl
|
||||
cmp r2, #0
|
||||
bne _0801A6E6
|
||||
b _0801A8C0
|
||||
_0801A6E6:
|
||||
mov r0, sb
|
||||
ldrb r1, [r0]
|
||||
adds r0, r4, #0
|
||||
bl GetMetaTileType
|
||||
adds r5, r0, #0
|
||||
ldr r0, _0801A734 @ =0x00000369
|
||||
cmp r5, r0
|
||||
beq _0801A700
|
||||
adds r0, #4
|
||||
cmp r5, r0
|
||||
beq _0801A700
|
||||
b _0801A8B4
|
||||
_0801A700:
|
||||
adds r0, r4, r7
|
||||
ldr r1, _0801A738 @ =0x00002004
|
||||
adds r0, r0, r1
|
||||
mov r2, r8
|
||||
adds r1, r2, r0
|
||||
movs r5, #0
|
||||
cmp r5, r7
|
||||
blo _0801A712
|
||||
b _0801A8B6
|
||||
_0801A712:
|
||||
ldrb r0, [r1]
|
||||
cmp r0, #0
|
||||
beq _0801A71A
|
||||
b _0801A8B4
|
||||
_0801A71A:
|
||||
adds r5, #1
|
||||
cmp r5, r7
|
||||
blo _0801A722
|
||||
b _0801A8B6
|
||||
_0801A722:
|
||||
lsls r0, r5, #6
|
||||
adds r0, r0, r1
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _0801A71A
|
||||
b _0801A8B4
|
||||
.align 2, 0
|
||||
_0801A730: .4byte gRoomControls
|
||||
_0801A734: .4byte 0x00000369
|
||||
_0801A738: .4byte 0x00002004
|
||||
_0801A73C:
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r6, r1]
|
||||
ldr r2, _0801A7E8 @ =gRoomControls
|
||||
ldrh r1, [r2, #6]
|
||||
subs r0, r0, r1
|
||||
asrs r4, r0, #4
|
||||
movs r3, #0x3f
|
||||
ands r4, r3
|
||||
movs r1, #0x32
|
||||
ldrsh r0, [r6, r1]
|
||||
ldrh r1, [r2, #8]
|
||||
subs r1, #0xa
|
||||
subs r0, r0, r1
|
||||
asrs r0, r0, #4
|
||||
ands r0, r3
|
||||
lsls r0, r0, #6
|
||||
orrs r4, r0
|
||||
mov r2, r8
|
||||
adds r2, #4
|
||||
mov r3, ip
|
||||
ldr r6, _0801A7EC @ =0x0000036F
|
||||
lsls r0, r4, #1
|
||||
adds r1, r0, r2
|
||||
_0801A76A:
|
||||
ldrh r0, [r1]
|
||||
lsls r0, r0, #1
|
||||
adds r0, r3, r0
|
||||
ldrh r0, [r0]
|
||||
cmp r0, r6
|
||||
beq _0801A780
|
||||
adds r1, #2
|
||||
adds r4, #1
|
||||
subs r5, #1
|
||||
cmp r5, #0
|
||||
bne _0801A76A
|
||||
_0801A780:
|
||||
subs r4, #1
|
||||
ldr r3, _0801A7F0 @ =0x00000372
|
||||
lsls r0, r4, #1
|
||||
adds r1, r0, r2
|
||||
_0801A788:
|
||||
ldrh r0, [r1]
|
||||
lsls r0, r0, #1
|
||||
add r0, ip
|
||||
ldrh r0, [r0]
|
||||
cmp r0, r3
|
||||
bne _0801A79E
|
||||
adds r7, #1
|
||||
subs r1, #2
|
||||
subs r4, #1
|
||||
cmp r7, #3
|
||||
bls _0801A788
|
||||
_0801A79E:
|
||||
mov r2, sl
|
||||
cmp r2, #0
|
||||
bne _0801A7A6
|
||||
b _0801A8C0
|
||||
_0801A7A6:
|
||||
mov r0, sb
|
||||
ldrb r1, [r0]
|
||||
adds r0, r4, #0
|
||||
bl GetMetaTileType
|
||||
adds r5, r0, #0
|
||||
ldr r0, _0801A7F4 @ =0x00000369
|
||||
cmp r5, r0
|
||||
beq _0801A7BE
|
||||
adds r0, #2
|
||||
cmp r5, r0
|
||||
bne _0801A8B4
|
||||
_0801A7BE:
|
||||
lsls r0, r7, #6
|
||||
adds r0, r4, r0
|
||||
ldr r1, _0801A7F8 @ =0x00002004
|
||||
adds r0, r0, r1
|
||||
mov r2, r8
|
||||
adds r1, r2, r0
|
||||
movs r5, #0
|
||||
cmp r5, r7
|
||||
bhs _0801A8B6
|
||||
ldrb r0, [r1]
|
||||
cmp r0, #0
|
||||
bne _0801A8B4
|
||||
_0801A7D6:
|
||||
adds r5, #1
|
||||
cmp r5, r7
|
||||
bhs _0801A8B6
|
||||
adds r0, r1, r5
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _0801A7D6
|
||||
b _0801A8B4
|
||||
.align 2, 0
|
||||
_0801A7E8: .4byte gRoomControls
|
||||
_0801A7EC: .4byte 0x0000036F
|
||||
_0801A7F0: .4byte 0x00000372
|
||||
_0801A7F4: .4byte 0x00000369
|
||||
_0801A7F8: .4byte 0x00002004
|
||||
_0801A7FC:
|
||||
movs r0, #0x2e
|
||||
ldrsh r1, [r6, r0]
|
||||
ldr r3, _0801A890 @ =gRoomControls
|
||||
ldrh r0, [r3, #6]
|
||||
adds r0, #0xa
|
||||
subs r1, r1, r0
|
||||
asrs r4, r1, #4
|
||||
movs r2, #0x3f
|
||||
ands r4, r2
|
||||
movs r1, #0x32
|
||||
ldrsh r0, [r6, r1]
|
||||
ldrh r1, [r3, #8]
|
||||
subs r0, r0, r1
|
||||
asrs r0, r0, #4
|
||||
ands r0, r2
|
||||
lsls r0, r0, #6
|
||||
orrs r4, r0
|
||||
mov r2, r8
|
||||
adds r2, #4
|
||||
mov r3, ip
|
||||
ldr r6, _0801A894 @ =0x0000036F
|
||||
lsls r0, r4, #1
|
||||
adds r1, r0, r2
|
||||
_0801A82A:
|
||||
ldrh r0, [r1]
|
||||
lsls r0, r0, #1
|
||||
adds r0, r3, r0
|
||||
ldrh r0, [r0]
|
||||
cmp r0, r6
|
||||
beq _0801A840
|
||||
subs r1, #0x80
|
||||
subs r4, #0x40
|
||||
subs r5, #1
|
||||
cmp r5, #0
|
||||
bne _0801A82A
|
||||
_0801A840:
|
||||
subs r4, #1
|
||||
ldr r3, _0801A898 @ =0x00000372
|
||||
lsls r0, r4, #1
|
||||
adds r1, r0, r2
|
||||
_0801A848:
|
||||
ldrh r0, [r1]
|
||||
lsls r0, r0, #1
|
||||
add r0, ip
|
||||
ldrh r0, [r0]
|
||||
cmp r0, r3
|
||||
bne _0801A85E
|
||||
adds r7, #1
|
||||
subs r1, #2
|
||||
subs r4, #1
|
||||
cmp r7, #3
|
||||
bls _0801A848
|
||||
_0801A85E:
|
||||
mov r2, sl
|
||||
cmp r2, #0
|
||||
beq _0801A8C0
|
||||
mov r0, sb
|
||||
ldrb r1, [r0]
|
||||
adds r0, r4, #0
|
||||
bl GetMetaTileType
|
||||
adds r5, r0, #0
|
||||
ldr r0, _0801A89C @ =0x00000369
|
||||
cmp r5, r0
|
||||
beq _0801A87C
|
||||
adds r0, #3
|
||||
cmp r5, r0
|
||||
bne _0801A8B4
|
||||
_0801A87C:
|
||||
ldr r1, _0801A8A0 @ =0x00002003
|
||||
adds r0, r4, r1
|
||||
mov r2, r8
|
||||
adds r1, r2, r0
|
||||
movs r5, #0
|
||||
cmp r5, r7
|
||||
bhs _0801A8B6
|
||||
ldrb r0, [r1]
|
||||
b _0801A8B0
|
||||
.align 2, 0
|
||||
_0801A890: .4byte gRoomControls
|
||||
_0801A894: .4byte 0x0000036F
|
||||
_0801A898: .4byte 0x00000372
|
||||
_0801A89C: .4byte 0x00000369
|
||||
_0801A8A0: .4byte 0x00002003
|
||||
_0801A8A4:
|
||||
adds r5, #1
|
||||
cmp r5, r7
|
||||
bhs _0801A8B6
|
||||
lsls r0, r5, #6
|
||||
adds r0, r0, r1
|
||||
ldrb r0, [r0]
|
||||
_0801A8B0:
|
||||
cmp r0, #0
|
||||
beq _0801A8A4
|
||||
_0801A8B4:
|
||||
ldr r4, _0801A8CC @ =0x0000FFFF
|
||||
_0801A8B6:
|
||||
mov r0, sl
|
||||
cmp r0, #0
|
||||
beq _0801A8C0
|
||||
lsls r0, r7, #0xc
|
||||
orrs r4, r0
|
||||
_0801A8C0:
|
||||
adds r0, r4, #0
|
||||
_0801A8C2:
|
||||
pop {r3, r4, r5}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
mov sl, r5
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_0801A8CC: .4byte 0x0000FFFF
|
||||
.syntax divided
|
||||
@@ -1,264 +0,0 @@
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
push {r6, r7}
|
||||
adds r6, r0, #0
|
||||
adds r5, r1, #0
|
||||
ldr r1, _0807D2B0 @ =gRoomControls
|
||||
movs r0, #0xa
|
||||
ldrsh r2, [r1, r0]
|
||||
ldrh r0, [r1, #6]
|
||||
subs r3, r2, r0
|
||||
movs r0, #0xc
|
||||
ldrsh r2, [r1, r0]
|
||||
ldrh r0, [r1, #8]
|
||||
subs r4, r2, r0
|
||||
ldrb r0, [r1, #0x10]
|
||||
mov r8, r1
|
||||
cmp r0, #1
|
||||
beq _0807D330
|
||||
cmp r0, #1
|
||||
bgt _0807D2B4
|
||||
cmp r0, #0
|
||||
beq _0807D2BA
|
||||
b _0807D404
|
||||
.align 2, 0
|
||||
_0807D2B0: .4byte gRoomControls
|
||||
_0807D2B4:
|
||||
cmp r0, #2
|
||||
beq _0807D3A0
|
||||
b _0807D404
|
||||
_0807D2BA:
|
||||
mov r2, r8
|
||||
ldrh r1, [r2, #0x18]
|
||||
movs r0, #3
|
||||
ands r0, r1
|
||||
cmp r0, #1
|
||||
beq _0807D2C8
|
||||
b _0807D462
|
||||
_0807D2C8:
|
||||
movs r2, #0x1c
|
||||
asrs r3, r3, #4
|
||||
mov sb, r3
|
||||
movs r3, #0x40
|
||||
adds r3, r3, r5
|
||||
mov ip, r3
|
||||
ldr r4, _0807D328 @ =0x040000D4
|
||||
ldr r7, _0807D32C @ =0x80000020
|
||||
movs r0, #0xe8
|
||||
lsls r0, r0, #3
|
||||
adds r3, r5, r0
|
||||
subs r0, #0x80
|
||||
adds r1, r5, r0
|
||||
_0807D2E2:
|
||||
str r1, [r4]
|
||||
str r3, [r4, #4]
|
||||
str r7, [r4, #8]
|
||||
ldr r0, [r4, #8]
|
||||
subs r3, #0x40
|
||||
subs r1, #0x40
|
||||
subs r2, #1
|
||||
cmp r2, #0
|
||||
bgt _0807D2E2
|
||||
mov r1, r8
|
||||
ldrh r0, [r1, #0x20]
|
||||
lsrs r0, r0, #4
|
||||
subs r0, #1
|
||||
ldrh r1, [r1, #0x18]
|
||||
lsrs r1, r1, #2
|
||||
subs r0, r0, r1
|
||||
lsls r0, r0, #8
|
||||
mov r2, sb
|
||||
lsls r1, r2, #1
|
||||
adds r0, r0, r1
|
||||
lsls r0, r0, #1
|
||||
adds r6, r6, r0
|
||||
ldr r0, _0807D328 @ =0x040000D4
|
||||
str r6, [r0]
|
||||
str r5, [r0, #4]
|
||||
ldr r2, _0807D32C @ =0x80000020
|
||||
str r2, [r0, #8]
|
||||
ldr r1, [r0, #8]
|
||||
movs r3, #0x80
|
||||
lsls r3, r3, #1
|
||||
adds r1, r6, r3
|
||||
str r1, [r0]
|
||||
mov r1, ip
|
||||
b _0807D3F0
|
||||
.align 2, 0
|
||||
_0807D328: .4byte 0x040000D4
|
||||
_0807D32C: .4byte 0x80000020
|
||||
_0807D330:
|
||||
mov r2, r8
|
||||
ldrh r3, [r2, #0x18]
|
||||
movs r0, #3
|
||||
ands r0, r3
|
||||
cmp r0, #0
|
||||
beq _0807D33E
|
||||
b _0807D462
|
||||
_0807D33E:
|
||||
asrs r7, r4, #4
|
||||
movs r0, #0x3c
|
||||
adds r0, r0, r5
|
||||
mov sb, r0
|
||||
cmp r3, #0
|
||||
beq _0807D36A
|
||||
ldr r4, _0807D398 @ =0x040000D4
|
||||
ldr r1, _0807D39C @ =0x8000001E
|
||||
mov ip, r1
|
||||
adds r3, r5, #4
|
||||
adds r1, r5, #0
|
||||
movs r2, #0x15
|
||||
_0807D356:
|
||||
str r3, [r4]
|
||||
str r1, [r4, #4]
|
||||
mov r0, ip
|
||||
str r0, [r4, #8]
|
||||
ldr r0, [r4, #8]
|
||||
adds r3, #0x40
|
||||
adds r1, #0x40
|
||||
subs r2, #1
|
||||
cmp r2, #0
|
||||
bge _0807D356
|
||||
_0807D36A:
|
||||
lsls r1, r7, #8
|
||||
mov r2, r8
|
||||
ldrh r0, [r2, #0x18]
|
||||
lsrs r0, r0, #2
|
||||
lsls r0, r0, #1
|
||||
adds r1, r1, r0
|
||||
lsls r1, r1, #1
|
||||
adds r6, r6, r1
|
||||
mov r5, sb
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #1
|
||||
movs r2, #0x15
|
||||
_0807D382:
|
||||
ldrh r0, [r6]
|
||||
strh r0, [r5]
|
||||
ldrh r0, [r6, #2]
|
||||
strh r0, [r5, #2]
|
||||
adds r5, #0x40
|
||||
adds r6, r6, r1
|
||||
subs r2, #1
|
||||
cmp r2, #0
|
||||
bge _0807D382
|
||||
b _0807D462
|
||||
.align 2, 0
|
||||
_0807D398: .4byte 0x040000D4
|
||||
_0807D39C: .4byte 0x8000001E
|
||||
_0807D3A0:
|
||||
mov r0, r8
|
||||
ldrh r1, [r0, #0x18]
|
||||
movs r0, #3
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0807D462
|
||||
lsls r2, r1, #0x10
|
||||
cmp r2, #0
|
||||
beq _0807D3C2
|
||||
ldr r1, _0807D3F8 @ =0x040000D4
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x80
|
||||
str r0, [r1]
|
||||
str r5, [r1, #4]
|
||||
ldr r0, _0807D3FC @ =0x800003C0
|
||||
str r0, [r1, #8]
|
||||
ldr r0, [r1, #8]
|
||||
_0807D3C2:
|
||||
lsrs r0, r2, #0x12
|
||||
lsls r0, r0, #8
|
||||
asrs r1, r3, #4
|
||||
lsls r1, r1, #1
|
||||
adds r0, r0, r1
|
||||
lsls r0, r0, #1
|
||||
adds r6, r6, r0
|
||||
ldr r0, _0807D3F8 @ =0x040000D4
|
||||
str r6, [r0]
|
||||
movs r2, #0xa0
|
||||
lsls r2, r2, #3
|
||||
adds r1, r5, r2
|
||||
str r1, [r0, #4]
|
||||
ldr r2, _0807D400 @ =0x80000020
|
||||
str r2, [r0, #8]
|
||||
ldr r1, [r0, #8]
|
||||
movs r3, #0x80
|
||||
lsls r3, r3, #1
|
||||
adds r1, r6, r3
|
||||
str r1, [r0]
|
||||
movs r3, #0xa8
|
||||
lsls r3, r3, #3
|
||||
adds r1, r5, r3
|
||||
_0807D3F0:
|
||||
str r1, [r0, #4]
|
||||
str r2, [r0, #8]
|
||||
ldr r0, [r0, #8]
|
||||
b _0807D462
|
||||
.align 2, 0
|
||||
_0807D3F8: .4byte 0x040000D4
|
||||
_0807D3FC: .4byte 0x800003C0
|
||||
_0807D400: .4byte 0x80000020
|
||||
_0807D404:
|
||||
mov r0, r8
|
||||
ldrh r1, [r0, #0x18]
|
||||
movs r0, #3
|
||||
ands r0, r1
|
||||
cmp r0, #1
|
||||
bne _0807D462
|
||||
movs r2, #0
|
||||
asrs r7, r4, #4
|
||||
mov ip, r5
|
||||
_0807D416:
|
||||
movs r1, #0x1d
|
||||
mov r3, ip
|
||||
adds r3, #0x3a
|
||||
_0807D41C:
|
||||
ldrh r0, [r3]
|
||||
strh r0, [r3, #4]
|
||||
subs r3, #2
|
||||
subs r1, #1
|
||||
cmp r1, #0
|
||||
bge _0807D41C
|
||||
movs r1, #0x40
|
||||
add ip, r1
|
||||
adds r2, #1
|
||||
cmp r2, #0x15
|
||||
ble _0807D416
|
||||
lsls r0, r7, #8
|
||||
mov r2, r8
|
||||
ldrh r1, [r2, #0x1e]
|
||||
lsrs r1, r1, #4
|
||||
subs r1, #1
|
||||
ldrh r2, [r2, #0x18]
|
||||
lsrs r2, r2, #2
|
||||
subs r1, r1, r2
|
||||
lsls r1, r1, #1
|
||||
adds r0, r0, r1
|
||||
lsls r0, r0, #1
|
||||
adds r6, r6, r0
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #1
|
||||
movs r2, #0x15
|
||||
_0807D450:
|
||||
ldrh r0, [r6]
|
||||
strh r0, [r5]
|
||||
ldrh r0, [r6, #2]
|
||||
strh r0, [r5, #2]
|
||||
adds r5, #0x40
|
||||
adds r6, r6, r1
|
||||
subs r2, #1
|
||||
cmp r2, #0
|
||||
bge _0807D450
|
||||
_0807D462:
|
||||
pop {r3, r4}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
|
||||
.syntax divided
|
||||
@@ -1,346 +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
|
||||
str r0, [sp]
|
||||
str r1, [sp, #4]
|
||||
ldr r0, _0807D494 @ =gRoomControls
|
||||
ldrb r2, [r0, #0x10]
|
||||
mov sb, r0
|
||||
cmp r2, #1
|
||||
bne _0807D488
|
||||
b _0807D5C4
|
||||
_0807D488:
|
||||
cmp r2, #1
|
||||
bgt _0807D498
|
||||
cmp r2, #0
|
||||
beq _0807D4A4
|
||||
b _0807D6CC
|
||||
.align 2, 0
|
||||
_0807D494: .4byte gRoomControls
|
||||
_0807D498:
|
||||
cmp r2, #2
|
||||
beq _0807D4A4
|
||||
cmp r2, #3
|
||||
bne _0807D4A2
|
||||
b _0807D5C4
|
||||
_0807D4A2:
|
||||
b _0807D6CC
|
||||
_0807D4A4:
|
||||
mov r1, sb
|
||||
movs r2, #0xa
|
||||
ldrsh r0, [r1, r2]
|
||||
ldrh r1, [r1, #6]
|
||||
subs r5, r0, r1
|
||||
cmp r5, #7
|
||||
ble _0807D4B4
|
||||
subs r5, #8
|
||||
_0807D4B4:
|
||||
mov r3, sb
|
||||
ldr r0, [r3, #0x30]
|
||||
movs r2, #0x2e
|
||||
ldrsh r0, [r0, r2]
|
||||
subs r0, r0, r1
|
||||
subs r3, r0, #4
|
||||
mov r8, r3
|
||||
cmp r3, #7
|
||||
ble _0807D4CA
|
||||
subs r0, #0xc
|
||||
mov r8, r0
|
||||
_0807D4CA:
|
||||
mov r0, sb
|
||||
movs r2, #0xc
|
||||
ldrsh r1, [r0, r2]
|
||||
ldrh r0, [r0, #8]
|
||||
subs r1, r1, r0
|
||||
mov ip, r1
|
||||
cmp r1, #7
|
||||
ble _0807D4E0
|
||||
movs r3, #8
|
||||
rsbs r3, r3, #0
|
||||
add ip, r3
|
||||
_0807D4E0:
|
||||
mov r1, sb
|
||||
ldrh r0, [r1, #0x18]
|
||||
lsls r0, r0, #3
|
||||
mov r2, r8
|
||||
subs r0, r2, r0
|
||||
adds r7, r5, #0
|
||||
adds r7, #0xf8
|
||||
cmp r0, r5
|
||||
blt _0807D548
|
||||
mov r1, ip
|
||||
asrs r3, r1, #3
|
||||
lsls r1, r3, #8
|
||||
ldr r2, [sp]
|
||||
adds r1, r2, r1
|
||||
asrs r0, r0, #3
|
||||
lsls r2, r0, #1
|
||||
adds r4, r1, r2
|
||||
movs r1, #0x1f
|
||||
ands r0, r1
|
||||
lsls r0, r0, #1
|
||||
ldr r2, [sp, #4]
|
||||
adds r6, r2, r0
|
||||
ands r3, r1
|
||||
lsls r2, r3, #5
|
||||
mov r3, sb
|
||||
ldrh r0, [r3, #0x20]
|
||||
lsls r1, r0, #0x10
|
||||
lsrs r0, r1, #0x10
|
||||
cmp r0, #0xaf
|
||||
bhi _0807D520
|
||||
lsrs r3, r1, #0x13
|
||||
b _0807D522
|
||||
_0807D520:
|
||||
movs r3, #0x16
|
||||
_0807D522:
|
||||
adds r7, r5, #0
|
||||
adds r7, #0xf8
|
||||
cmp r3, #0
|
||||
ble _0807D548
|
||||
ldr r0, _0807D55C @ =0x000003FF
|
||||
mov sl, r0
|
||||
_0807D52E:
|
||||
lsls r0, r2, #1
|
||||
adds r0, r0, r6
|
||||
ldrh r1, [r4]
|
||||
strh r1, [r0]
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #1
|
||||
adds r4, r4, r1
|
||||
adds r2, #0x20
|
||||
mov r0, sl
|
||||
ands r2, r0
|
||||
subs r3, #1
|
||||
cmp r3, #0
|
||||
bgt _0807D52E
|
||||
_0807D548:
|
||||
mov r1, sb
|
||||
ldrh r0, [r1, #0x18]
|
||||
adds r0, #1
|
||||
lsls r0, r0, #3
|
||||
add r0, r8
|
||||
ldrh r2, [r1, #0x1e]
|
||||
cmp r7, r2
|
||||
blt _0807D560
|
||||
adds r1, r7, #0
|
||||
b _0807D566
|
||||
.align 2, 0
|
||||
_0807D55C: .4byte 0x000003FF
|
||||
_0807D560:
|
||||
movs r3, #0x80
|
||||
lsls r3, r3, #1
|
||||
adds r1, r5, r3
|
||||
_0807D566:
|
||||
cmp r0, r1
|
||||
blt _0807D56C
|
||||
b _0807D6CC
|
||||
_0807D56C:
|
||||
mov r1, ip
|
||||
asrs r3, r1, #3
|
||||
lsls r1, r3, #8
|
||||
ldr r2, [sp]
|
||||
adds r1, r2, r1
|
||||
asrs r0, r0, #3
|
||||
lsls r2, r0, #1
|
||||
adds r4, r1, r2
|
||||
movs r1, #0x1f
|
||||
ands r0, r1
|
||||
lsls r0, r0, #1
|
||||
ldr r2, [sp, #4]
|
||||
adds r6, r2, r0
|
||||
ands r3, r1
|
||||
lsls r2, r3, #5
|
||||
mov r3, sb
|
||||
ldrh r0, [r3, #0x20]
|
||||
lsls r1, r0, #0x10
|
||||
lsrs r0, r1, #0x10
|
||||
cmp r0, #0xaf
|
||||
bhi _0807D59A
|
||||
lsrs r3, r1, #0x13
|
||||
b _0807D59C
|
||||
_0807D59A:
|
||||
movs r3, #0x16
|
||||
_0807D59C:
|
||||
cmp r3, #0
|
||||
bgt _0807D5A2
|
||||
b _0807D6CC
|
||||
_0807D5A2:
|
||||
movs r7, #0x80
|
||||
lsls r7, r7, #1
|
||||
ldr r5, _0807D5C0 @ =0x000003FF
|
||||
_0807D5A8:
|
||||
lsls r0, r2, #1
|
||||
adds r0, r0, r6
|
||||
ldrh r1, [r4]
|
||||
strh r1, [r0]
|
||||
adds r4, r4, r7
|
||||
adds r2, #0x20
|
||||
ands r2, r5
|
||||
subs r3, #1
|
||||
cmp r3, #0
|
||||
bgt _0807D5A8
|
||||
b _0807D6CC
|
||||
.align 2, 0
|
||||
_0807D5C0: .4byte 0x000003FF
|
||||
_0807D5C4:
|
||||
mov r1, sb
|
||||
movs r2, #0xc
|
||||
ldrsh r0, [r1, r2]
|
||||
ldrh r2, [r1, #8]
|
||||
subs r5, r0, r2
|
||||
cmp r5, #7
|
||||
ble _0807D5D4
|
||||
subs r5, #8
|
||||
_0807D5D4:
|
||||
mov r3, sb
|
||||
movs r0, #0xa
|
||||
ldrsh r1, [r3, r0]
|
||||
ldrh r0, [r3, #6]
|
||||
subs r1, r1, r0
|
||||
mov r8, r1
|
||||
cmp r1, #7
|
||||
ble _0807D5EA
|
||||
movs r1, #8
|
||||
rsbs r1, r1, #0
|
||||
add r8, r1
|
||||
_0807D5EA:
|
||||
mov r3, sb
|
||||
ldr r0, [r3, #0x30]
|
||||
movs r1, #0x32
|
||||
ldrsh r0, [r0, r1]
|
||||
subs r0, r0, r2
|
||||
subs r2, r0, #4
|
||||
mov ip, r2
|
||||
cmp r2, #7
|
||||
ble _0807D600
|
||||
subs r0, #0xc
|
||||
mov ip, r0
|
||||
_0807D600:
|
||||
mov r3, sb
|
||||
ldrh r0, [r3, #0x18]
|
||||
lsls r0, r0, #3
|
||||
mov r1, ip
|
||||
subs r0, r1, r0
|
||||
adds r7, r5, #0
|
||||
adds r7, #0xa8
|
||||
movs r2, #0xb0
|
||||
adds r2, r2, r5
|
||||
mov sl, r2
|
||||
cmp r0, r5
|
||||
blt _0807D66A
|
||||
asrs r2, r0, #3
|
||||
lsls r0, r2, #8
|
||||
ldr r3, [sp]
|
||||
adds r0, r3, r0
|
||||
mov r1, r8
|
||||
asrs r3, r1, #3
|
||||
lsls r1, r3, #1
|
||||
adds r4, r0, r1
|
||||
movs r0, #0x1f
|
||||
ands r2, r0
|
||||
lsls r2, r2, #6
|
||||
ldr r1, [sp, #4]
|
||||
adds r6, r1, r2
|
||||
adds r2, r0, #0
|
||||
ands r2, r3
|
||||
mov r3, sb
|
||||
ldrh r0, [r3, #0x1e]
|
||||
lsls r1, r0, #0x10
|
||||
lsrs r0, r1, #0x10
|
||||
cmp r0, #0xff
|
||||
bhi _0807D646
|
||||
lsrs r3, r1, #0x13
|
||||
b _0807D648
|
||||
_0807D646:
|
||||
movs r3, #0x20
|
||||
_0807D648:
|
||||
adds r7, r5, #0
|
||||
adds r7, #0xa8
|
||||
adds r5, #0xb0
|
||||
mov sl, r5
|
||||
cmp r3, #0
|
||||
ble _0807D66A
|
||||
movs r5, #0x1f
|
||||
_0807D656:
|
||||
lsls r0, r2, #1
|
||||
adds r0, r0, r6
|
||||
ldrh r1, [r4]
|
||||
strh r1, [r0]
|
||||
adds r4, #2
|
||||
adds r2, #1
|
||||
ands r2, r5
|
||||
subs r3, #1
|
||||
cmp r3, #0
|
||||
bgt _0807D656
|
||||
_0807D66A:
|
||||
mov r1, sb
|
||||
ldrh r0, [r1, #0x18]
|
||||
adds r0, #1
|
||||
lsls r0, r0, #3
|
||||
add r0, ip
|
||||
mov r2, sl
|
||||
ldrh r1, [r1, #0x20]
|
||||
cmp r7, r1
|
||||
blt _0807D67E
|
||||
adds r2, r7, #0
|
||||
_0807D67E:
|
||||
cmp r0, r2
|
||||
bge _0807D6CC
|
||||
asrs r2, r0, #3
|
||||
lsls r0, r2, #8
|
||||
ldr r1, [sp]
|
||||
adds r0, r1, r0
|
||||
mov r1, r8
|
||||
asrs r3, r1, #3
|
||||
lsls r1, r3, #1
|
||||
adds r4, r0, r1
|
||||
movs r0, #0x1f
|
||||
ands r2, r0
|
||||
lsls r2, r2, #6
|
||||
ldr r1, [sp, #4]
|
||||
adds r6, r1, r2
|
||||
adds r2, r0, #0
|
||||
ands r2, r3
|
||||
mov r3, sb
|
||||
ldrh r0, [r3, #0x1e]
|
||||
lsls r1, r0, #0x10
|
||||
lsrs r0, r1, #0x10
|
||||
cmp r0, #0xff
|
||||
bhi _0807D6B0
|
||||
lsrs r3, r1, #0x13
|
||||
b _0807D6B2
|
||||
_0807D6B0:
|
||||
movs r3, #0x20
|
||||
_0807D6B2:
|
||||
cmp r3, #0
|
||||
ble _0807D6CC
|
||||
movs r5, #0x1f
|
||||
_0807D6B8:
|
||||
lsls r0, r2, #1
|
||||
adds r0, r0, r6
|
||||
ldrh r1, [r4]
|
||||
strh r1, [r0]
|
||||
adds r4, #2
|
||||
adds r2, #1
|
||||
ands r2, r5
|
||||
subs r3, #1
|
||||
cmp r3, #0
|
||||
bgt _0807D6B8
|
||||
_0807D6CC:
|
||||
add sp, #8
|
||||
pop {r3, r4, r5}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
mov sl, r5
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
|
||||
.syntax divided
|
||||
@@ -1,482 +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, #0x44
|
||||
str r0, [sp]
|
||||
str r1, [sp, #4]
|
||||
ldr r5, _0807D8BC @ =gRoomControls
|
||||
ldrh r0, [r5, #0x18]
|
||||
cmp r0, #0
|
||||
bne _0807D6F2
|
||||
b _0807DA62
|
||||
_0807D6F2:
|
||||
ldrh r0, [r5, #0x1a]
|
||||
cmp r0, #0
|
||||
bne _0807D6FA
|
||||
b _0807DA62
|
||||
_0807D6FA:
|
||||
movs r1, #0xa
|
||||
ldrsh r0, [r5, r1]
|
||||
ldrh r1, [r5, #6]
|
||||
subs r0, r0, r1
|
||||
movs r4, #0x10
|
||||
rsbs r4, r4, #0
|
||||
ands r0, r4
|
||||
str r0, [sp, #0x24]
|
||||
ldr r3, [r5, #0x30]
|
||||
movs r2, #0x2e
|
||||
ldrsh r0, [r3, r2]
|
||||
subs r0, r0, r1
|
||||
movs r2, #8
|
||||
rsbs r2, r2, #0
|
||||
ands r0, r2
|
||||
str r0, [sp, #0x14]
|
||||
ldr r1, [sp, #0x24]
|
||||
subs r0, r0, r1
|
||||
str r0, [sp, #0x1c]
|
||||
movs r1, #0xc
|
||||
ldrsh r0, [r5, r1]
|
||||
ldrh r1, [r5, #8]
|
||||
subs r0, r0, r1
|
||||
ands r0, r4
|
||||
str r0, [sp, #0x28]
|
||||
movs r4, #0x32
|
||||
ldrsh r0, [r3, r4]
|
||||
subs r0, r0, r1
|
||||
ands r0, r2
|
||||
str r0, [sp, #0x18]
|
||||
ldr r1, [sp, #0x28]
|
||||
subs r0, r0, r1
|
||||
str r0, [sp, #0x20]
|
||||
ldrh r0, [r5, #0x18]
|
||||
adds r2, r0, #0
|
||||
muls r2, r0, r2
|
||||
str r2, [sp, #0xc]
|
||||
ldrh r3, [r5, #0x1a]
|
||||
str r3, [sp, #8]
|
||||
adds r4, r3, #0
|
||||
muls r4, r3, r4
|
||||
str r4, [sp, #0x10]
|
||||
adds r4, r0, #0
|
||||
movs r0, #0
|
||||
mov sb, r0
|
||||
lsls r0, r4, #1
|
||||
rsbs r0, r0, #0
|
||||
adds r0, #1
|
||||
ldr r1, [sp, #0x10]
|
||||
muls r0, r1, r0
|
||||
lsls r6, r2, #1
|
||||
adds r7, r0, r6
|
||||
adds r2, r4, #0
|
||||
muls r2, r1, r2
|
||||
mov r8, r2
|
||||
mov r0, r8
|
||||
ldr r1, [sp, #0xc]
|
||||
bl __divsi3
|
||||
mov ip, r0
|
||||
cmp sb, ip
|
||||
ble _0807D778
|
||||
b _0807D8D8
|
||||
_0807D778:
|
||||
mov sl, r5
|
||||
ldr r3, [sp, #0xc]
|
||||
adds r0, r6, r3
|
||||
lsls r0, r0, #1
|
||||
str r0, [sp, #0x3c]
|
||||
mov r0, r8
|
||||
str r0, [sp, #0x40]
|
||||
ldr r1, [sp, #0x14]
|
||||
subs r1, r1, r4
|
||||
mov r8, r1
|
||||
ldr r2, [sp, #0x14]
|
||||
adds r6, r4, r2
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #1
|
||||
ldr r3, [sp, #0x24]
|
||||
adds r0, r3, r0
|
||||
str r0, [sp, #0x2c]
|
||||
_0807D79A:
|
||||
ldr r0, [sp, #0x28]
|
||||
adds r0, #0xb0
|
||||
ldr r1, [sp, #0x18]
|
||||
add r1, sb
|
||||
cmp r0, r1
|
||||
ble _0807D812
|
||||
ldr r0, [sp, #0x20]
|
||||
add r0, sb
|
||||
asrs r0, r0, #3
|
||||
movs r5, #0x1f
|
||||
ands r0, r5
|
||||
cmp r0, #0x1f
|
||||
beq _0807D812
|
||||
lsls r0, r0, #6
|
||||
ldr r3, [sp, #4]
|
||||
adds r2, r3, r0
|
||||
asrs r0, r1, #3
|
||||
lsls r0, r0, #8
|
||||
ldr r1, [sp]
|
||||
adds r3, r1, r0
|
||||
ldr r0, [sp, #0x2c]
|
||||
cmp r0, r6
|
||||
ble _0807D7EA
|
||||
ldr r0, [sp, #0x1c]
|
||||
adds r1, r0, r4
|
||||
asrs r1, r1, #3
|
||||
ands r1, r5
|
||||
lsls r1, r1, #1
|
||||
adds r1, r1, r2
|
||||
asrs r0, r6, #3
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r3
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r1]
|
||||
mov r1, sl
|
||||
ldrh r0, [r1, #0x1c]
|
||||
movs r1, #1
|
||||
orrs r0, r1
|
||||
mov r1, sl
|
||||
strh r0, [r1, #0x1c]
|
||||
_0807D7EA:
|
||||
ldr r0, [sp, #0x24]
|
||||
cmp r0, r8
|
||||
bge _0807D812
|
||||
ldr r0, [sp, #0x1c]
|
||||
subs r1, r0, r4
|
||||
asrs r1, r1, #3
|
||||
ands r1, r5
|
||||
lsls r1, r1, #1
|
||||
adds r1, r1, r2
|
||||
mov r2, r8
|
||||
asrs r0, r2, #3
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r3
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r1]
|
||||
mov r3, sl
|
||||
ldrh r0, [r3, #0x1c]
|
||||
movs r1, #2
|
||||
orrs r0, r1
|
||||
strh r0, [r3, #0x1c]
|
||||
_0807D812:
|
||||
ldr r0, [sp, #0x18]
|
||||
mov r2, sb
|
||||
subs r1, r0, r2
|
||||
adds r0, r1, #0
|
||||
adds r0, #8
|
||||
ldr r3, [sp, #0x28]
|
||||
cmp r3, r0
|
||||
bge _0807D88E
|
||||
ldr r3, [sp, #0x20]
|
||||
subs r0, r3, r2
|
||||
asrs r0, r0, #3
|
||||
movs r5, #0x1f
|
||||
ands r0, r5
|
||||
cmp r0, #0x1f
|
||||
beq _0807D88E
|
||||
lsls r0, r0, #6
|
||||
ldr r3, [sp, #4]
|
||||
adds r2, r3, r0
|
||||
asrs r0, r1, #3
|
||||
lsls r0, r0, #8
|
||||
ldr r1, [sp]
|
||||
adds r3, r1, r0
|
||||
ldr r0, [sp, #0x2c]
|
||||
cmp r0, r6
|
||||
ble _0807D866
|
||||
ldr r0, [sp, #0x1c]
|
||||
adds r1, r0, r4
|
||||
asrs r1, r1, #3
|
||||
ands r1, r5
|
||||
lsls r1, r1, #1
|
||||
adds r1, r1, r2
|
||||
asrs r0, r6, #3
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r3
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r1]
|
||||
mov r1, sl
|
||||
ldrh r0, [r1, #0x1c]
|
||||
movs r1, #4
|
||||
orrs r0, r1
|
||||
mov r1, sl
|
||||
strh r0, [r1, #0x1c]
|
||||
_0807D866:
|
||||
ldr r0, [sp, #0x24]
|
||||
cmp r0, r8
|
||||
bge _0807D88E
|
||||
ldr r0, [sp, #0x1c]
|
||||
subs r1, r0, r4
|
||||
asrs r1, r1, #3
|
||||
ands r1, r5
|
||||
lsls r1, r1, #1
|
||||
adds r1, r1, r2
|
||||
mov r2, r8
|
||||
asrs r0, r2, #3
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r3
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r1]
|
||||
mov r3, sl
|
||||
ldrh r0, [r3, #0x1c]
|
||||
movs r1, #8
|
||||
orrs r0, r1
|
||||
strh r0, [r3, #0x1c]
|
||||
_0807D88E:
|
||||
cmp r7, #0
|
||||
ble _0807D8C0
|
||||
lsls r0, r4, #2
|
||||
rsbs r0, r0, #0
|
||||
adds r0, #4
|
||||
ldr r1, [sp, #0x10]
|
||||
muls r0, r1, r0
|
||||
ldr r2, [sp, #0x3c]
|
||||
adds r0, r0, r2
|
||||
adds r7, r7, r0
|
||||
ldr r3, [sp, #0x40]
|
||||
subs r3, r3, r1
|
||||
str r3, [sp, #0x40]
|
||||
movs r0, #1
|
||||
add r8, r0
|
||||
subs r6, #1
|
||||
subs r4, #1
|
||||
adds r0, r3, #0
|
||||
ldr r1, [sp, #0xc]
|
||||
bl __divsi3
|
||||
mov ip, r0
|
||||
b _0807D8C4
|
||||
.align 2, 0
|
||||
_0807D8BC: .4byte gRoomControls
|
||||
_0807D8C0:
|
||||
ldr r1, [sp, #0x3c]
|
||||
adds r7, r7, r1
|
||||
_0807D8C4:
|
||||
ldr r2, [sp, #0xc]
|
||||
lsls r0, r2, #2
|
||||
ldr r3, [sp, #0x3c]
|
||||
adds r3, r3, r0
|
||||
str r3, [sp, #0x3c]
|
||||
movs r0, #1
|
||||
add sb, r0
|
||||
cmp sb, ip
|
||||
bgt _0807D8D8
|
||||
b _0807D79A
|
||||
_0807D8D8:
|
||||
movs r4, #0
|
||||
ldr r1, [sp, #8]
|
||||
mov sb, r1
|
||||
ldr r2, [sp, #0x10]
|
||||
lsls r6, r2, #1
|
||||
lsls r0, r1, #1
|
||||
rsbs r0, r0, #0
|
||||
adds r0, #1
|
||||
ldr r3, [sp, #0xc]
|
||||
muls r0, r3, r0
|
||||
adds r7, r6, r0
|
||||
mov r5, sb
|
||||
muls r5, r3, r5
|
||||
adds r0, r5, #0
|
||||
adds r1, r2, #0
|
||||
bl __divsi3
|
||||
mov ip, r0
|
||||
cmp r4, ip
|
||||
ble _0807D902
|
||||
b _0807DA62
|
||||
_0807D902:
|
||||
ldr r0, _0807DA40 @ =gRoomControls
|
||||
mov sl, r0
|
||||
ldr r1, [sp, #0x10]
|
||||
adds r0, r6, r1
|
||||
lsls r0, r0, #1
|
||||
str r0, [sp, #0x34]
|
||||
ldr r6, [sp, #0x14]
|
||||
mov r8, r6
|
||||
str r5, [sp, #0x38]
|
||||
movs r3, #0x80
|
||||
lsls r3, r3, #1
|
||||
ldr r2, [sp, #0x24]
|
||||
adds r3, r2, r3
|
||||
str r3, [sp, #0x30]
|
||||
_0807D91E:
|
||||
ldr r0, [sp, #0x28]
|
||||
adds r0, #0xb0
|
||||
ldr r1, [sp, #0x18]
|
||||
add r1, sb
|
||||
cmp r0, r1
|
||||
ble _0807D996
|
||||
ldr r0, [sp, #0x20]
|
||||
add r0, sb
|
||||
asrs r0, r0, #3
|
||||
movs r5, #0x1f
|
||||
ands r0, r5
|
||||
cmp r0, #0x1f
|
||||
beq _0807D996
|
||||
lsls r0, r0, #6
|
||||
ldr r3, [sp, #4]
|
||||
adds r2, r3, r0
|
||||
asrs r0, r1, #3
|
||||
lsls r0, r0, #8
|
||||
ldr r1, [sp]
|
||||
adds r3, r1, r0
|
||||
ldr r0, [sp, #0x30]
|
||||
cmp r0, r6
|
||||
ble _0807D96E
|
||||
ldr r0, [sp, #0x1c]
|
||||
adds r1, r0, r4
|
||||
asrs r1, r1, #3
|
||||
ands r1, r5
|
||||
lsls r1, r1, #1
|
||||
adds r1, r1, r2
|
||||
asrs r0, r6, #3
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r3
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r1]
|
||||
mov r1, sl
|
||||
ldrh r0, [r1, #0x1c]
|
||||
movs r1, #0x10
|
||||
orrs r0, r1
|
||||
mov r1, sl
|
||||
strh r0, [r1, #0x1c]
|
||||
_0807D96E:
|
||||
ldr r0, [sp, #0x24]
|
||||
cmp r0, r8
|
||||
bge _0807D996
|
||||
ldr r0, [sp, #0x1c]
|
||||
subs r1, r0, r4
|
||||
asrs r1, r1, #3
|
||||
ands r1, r5
|
||||
lsls r1, r1, #1
|
||||
adds r1, r1, r2
|
||||
mov r2, r8
|
||||
asrs r0, r2, #3
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r3
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r1]
|
||||
mov r3, sl
|
||||
ldrh r0, [r3, #0x1c]
|
||||
movs r1, #0x20
|
||||
orrs r0, r1
|
||||
strh r0, [r3, #0x1c]
|
||||
_0807D996:
|
||||
ldr r0, [sp, #0x18]
|
||||
mov r2, sb
|
||||
subs r1, r0, r2
|
||||
adds r0, r1, #0
|
||||
adds r0, #8
|
||||
ldr r3, [sp, #0x28]
|
||||
cmp r3, r0
|
||||
bge _0807DA12
|
||||
ldr r3, [sp, #0x20]
|
||||
subs r0, r3, r2
|
||||
asrs r0, r0, #3
|
||||
movs r5, #0x1f
|
||||
ands r0, r5
|
||||
cmp r0, #0x1f
|
||||
beq _0807DA12
|
||||
lsls r0, r0, #6
|
||||
ldr r3, [sp, #4]
|
||||
adds r2, r3, r0
|
||||
asrs r0, r1, #3
|
||||
lsls r0, r0, #8
|
||||
ldr r1, [sp]
|
||||
adds r3, r1, r0
|
||||
ldr r0, [sp, #0x30]
|
||||
cmp r0, r6
|
||||
ble _0807D9EA
|
||||
ldr r0, [sp, #0x1c]
|
||||
adds r1, r0, r4
|
||||
asrs r1, r1, #3
|
||||
ands r1, r5
|
||||
lsls r1, r1, #1
|
||||
adds r1, r1, r2
|
||||
asrs r0, r6, #3
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r3
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r1]
|
||||
mov r1, sl
|
||||
ldrh r0, [r1, #0x1c]
|
||||
movs r1, #0x40
|
||||
orrs r0, r1
|
||||
mov r1, sl
|
||||
strh r0, [r1, #0x1c]
|
||||
_0807D9EA:
|
||||
ldr r0, [sp, #0x24]
|
||||
cmp r0, r8
|
||||
bge _0807DA12
|
||||
ldr r0, [sp, #0x1c]
|
||||
subs r1, r0, r4
|
||||
asrs r1, r1, #3
|
||||
ands r1, r5
|
||||
lsls r1, r1, #1
|
||||
adds r1, r1, r2
|
||||
mov r2, r8
|
||||
asrs r0, r2, #3
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r3
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r1]
|
||||
mov r3, sl
|
||||
ldrh r0, [r3, #0x1c]
|
||||
movs r1, #0x80
|
||||
orrs r0, r1
|
||||
strh r0, [r3, #0x1c]
|
||||
_0807DA12:
|
||||
cmp r7, #0
|
||||
ble _0807DA44
|
||||
mov r1, sb
|
||||
lsls r0, r1, #2
|
||||
rsbs r0, r0, #0
|
||||
adds r0, #4
|
||||
ldr r2, [sp, #0xc]
|
||||
muls r0, r2, r0
|
||||
ldr r3, [sp, #0x34]
|
||||
adds r0, r3, r0
|
||||
adds r7, r7, r0
|
||||
ldr r0, [sp, #0x38]
|
||||
subs r0, r0, r2
|
||||
str r0, [sp, #0x38]
|
||||
movs r1, #1
|
||||
rsbs r1, r1, #0
|
||||
add sb, r1
|
||||
ldr r1, [sp, #0x10]
|
||||
bl __divsi3
|
||||
mov ip, r0
|
||||
b _0807DA48
|
||||
.align 2, 0
|
||||
_0807DA40: .4byte gRoomControls
|
||||
_0807DA44:
|
||||
ldr r2, [sp, #0x34]
|
||||
adds r7, r7, r2
|
||||
_0807DA48:
|
||||
ldr r3, [sp, #0x10]
|
||||
lsls r0, r3, #2
|
||||
ldr r1, [sp, #0x34]
|
||||
adds r1, r1, r0
|
||||
str r1, [sp, #0x34]
|
||||
movs r2, #1
|
||||
rsbs r2, r2, #0
|
||||
add r8, r2
|
||||
adds r6, #1
|
||||
adds r4, #1
|
||||
cmp r4, ip
|
||||
bgt _0807DA62
|
||||
b _0807D91E
|
||||
_0807DA62:
|
||||
add sp, #0x44
|
||||
pop {r3, r4, r5}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
mov sl, r5
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
|
||||
.syntax divided
|
||||
@@ -1,189 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
mov r5, r8
|
||||
push {r5, r6, r7}
|
||||
sub sp, #0x20
|
||||
str r0, [sp]
|
||||
str r1, [sp, #4]
|
||||
mov sl, r2
|
||||
mov sb, r3
|
||||
ldr r0, _0801E3AC @ =gUnk_03003DE4
|
||||
ldrb r1, [r0]
|
||||
lsls r0, r1, #2
|
||||
adds r0, r0, r1
|
||||
lsls r0, r0, #9
|
||||
ldr r1, _0801E3B0 @ =gUnk_02017AA0
|
||||
adds r0, r0, r1
|
||||
movs r1, #0xa0
|
||||
lsls r1, r1, #4
|
||||
bl MemClear
|
||||
cmp sl, sb
|
||||
bge _0801E3DC
|
||||
movs r6, #0
|
||||
mov r8, sl
|
||||
mov r7, r8
|
||||
mov r0, r8
|
||||
lsls r1, r0, #1
|
||||
movs r0, #3
|
||||
subs r5, r0, r1
|
||||
cmp r6, r8
|
||||
ble _0801E35E
|
||||
b _0801E45E
|
||||
_0801E35E:
|
||||
mov r1, r8
|
||||
lsls r0, r1, #2
|
||||
ldr r4, _0801E3B4 @ =gUnk_02018EE0
|
||||
adds r0, r0, r4
|
||||
str r0, [sp, #0x10]
|
||||
mov r1, sb
|
||||
mov r0, r8
|
||||
muls r0, r1, r0
|
||||
str r0, [sp, #0x14]
|
||||
movs r3, #0
|
||||
_0801E372:
|
||||
adds r0, r3, #0
|
||||
mov r1, sl
|
||||
str r3, [sp, #0x18]
|
||||
bl Div
|
||||
adds r4, r0, #0
|
||||
lsls r4, r4, #0x10
|
||||
lsrs r4, r4, #0x10
|
||||
str r4, [sp, #0x1c]
|
||||
ldr r0, [sp, #0x14]
|
||||
mov r1, sl
|
||||
bl Div
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
lsls r2, r6, #2
|
||||
ldr r4, _0801E3B4 @ =gUnk_02018EE0
|
||||
adds r1, r2, r4
|
||||
str r0, [r1]
|
||||
ldr r0, [sp, #0x1c]
|
||||
ldr r1, [sp, #0x10]
|
||||
str r0, [r1]
|
||||
ldr r3, [sp, #0x18]
|
||||
cmp r5, #0
|
||||
bge _0801E3B8
|
||||
adds r0, r5, #6
|
||||
adds r5, r0, r2
|
||||
b _0801E3D2
|
||||
.align 2, 0
|
||||
_0801E3AC: .4byte gUnk_03003DE4
|
||||
_0801E3B0: .4byte gUnk_02017AA0
|
||||
_0801E3B4: .4byte gUnk_02018EE0
|
||||
_0801E3B8:
|
||||
adds r1, r5, #0
|
||||
adds r1, #0xa
|
||||
subs r0, r6, r7
|
||||
lsls r0, r0, #2
|
||||
adds r5, r1, r0
|
||||
ldr r4, [sp, #0x10]
|
||||
subs r4, #4
|
||||
str r4, [sp, #0x10]
|
||||
ldr r0, [sp, #0x14]
|
||||
mov r1, sb
|
||||
subs r0, r0, r1
|
||||
str r0, [sp, #0x14]
|
||||
subs r7, #1
|
||||
_0801E3D2:
|
||||
add r3, sb
|
||||
adds r6, #1
|
||||
cmp r6, r7
|
||||
ble _0801E372
|
||||
b _0801E45E
|
||||
_0801E3DC:
|
||||
movs r6, #0
|
||||
mov r8, sb
|
||||
mov r7, r8
|
||||
mov r4, r8
|
||||
lsls r1, r4, #1
|
||||
movs r0, #3
|
||||
subs r5, r0, r1
|
||||
cmp r6, r8
|
||||
bgt _0801E45E
|
||||
lsls r0, r4, #2
|
||||
ldr r1, _0801E438 @ =gUnk_02018EE0
|
||||
adds r0, r0, r1
|
||||
str r0, [sp, #8]
|
||||
mov r0, sl
|
||||
mov r4, r8
|
||||
muls r4, r0, r4
|
||||
str r4, [sp, #0xc]
|
||||
movs r3, #0
|
||||
_0801E400:
|
||||
adds r0, r3, #0
|
||||
mov r1, sb
|
||||
str r3, [sp, #0x18]
|
||||
bl Div
|
||||
adds r4, r0, #0
|
||||
lsls r4, r4, #0x10
|
||||
lsrs r4, r4, #0x10
|
||||
str r4, [sp, #0x1c]
|
||||
ldr r0, [sp, #0xc]
|
||||
mov r1, sb
|
||||
bl Div
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
lsls r2, r6, #2
|
||||
ldr r4, _0801E438 @ =gUnk_02018EE0
|
||||
adds r1, r2, r4
|
||||
str r0, [r1]
|
||||
ldr r0, [sp, #0x1c]
|
||||
ldr r1, [sp, #8]
|
||||
str r0, [r1]
|
||||
ldr r3, [sp, #0x18]
|
||||
cmp r5, #0
|
||||
bge _0801E43C
|
||||
adds r0, r5, #6
|
||||
adds r5, r0, r2
|
||||
b _0801E456
|
||||
.align 2, 0
|
||||
_0801E438: .4byte gUnk_02018EE0
|
||||
_0801E43C:
|
||||
adds r1, r5, #0
|
||||
adds r1, #0xa
|
||||
subs r0, r6, r7
|
||||
lsls r0, r0, #2
|
||||
adds r5, r1, r0
|
||||
ldr r4, [sp, #8]
|
||||
subs r4, #4
|
||||
str r4, [sp, #8]
|
||||
ldr r0, [sp, #0xc]
|
||||
mov r1, sl
|
||||
subs r0, r0, r1
|
||||
str r0, [sp, #0xc]
|
||||
subs r7, #1
|
||||
_0801E456:
|
||||
add r3, sl
|
||||
adds r6, #1
|
||||
cmp r6, r7
|
||||
ble _0801E400
|
||||
_0801E45E:
|
||||
ldr r0, [sp]
|
||||
ldr r1, [sp, #4]
|
||||
mov r2, r8
|
||||
bl sub_0801E290
|
||||
ldr r0, _0801E48C @ =gUnk_03003DE4
|
||||
ldrb r1, [r0]
|
||||
lsls r0, r1, #2
|
||||
adds r0, r0, r1
|
||||
lsls r0, r0, #9
|
||||
ldr r1, _0801E490 @ =gUnk_02017AA0
|
||||
adds r0, r0, r1
|
||||
ldr r1, _0801E494 @ =0x04000040
|
||||
ldr r2, _0801E498 @ =0xA2600001
|
||||
bl SetVBlankDMA
|
||||
add sp, #0x20
|
||||
pop {r3, r4, r5}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
mov sl, r5
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_0801E48C: .4byte gUnk_03003DE4
|
||||
_0801E490: .4byte gUnk_02017AA0
|
||||
_0801E494: .4byte 0x04000040
|
||||
_0801E498: .4byte 0xA2600001
|
||||
.syntax divided
|
||||
@@ -1,211 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
mov r5, r8
|
||||
push {r5, r6, r7}
|
||||
sub sp, #8
|
||||
mov r8, r0
|
||||
str r1, [sp, #4]
|
||||
mov sb, r2
|
||||
adds r5, r3, #0
|
||||
ldr r0, _0801E5E4 @ =0x0000FFFF
|
||||
movs r2, #0xf0
|
||||
lsls r2, r2, #3
|
||||
ldr r1, _0801E5E8 @ =gUnk_02018EE0
|
||||
bl MemFill16
|
||||
adds r3, r5, #0
|
||||
subs r3, #0x40
|
||||
movs r2, #0xff
|
||||
ands r3, r2
|
||||
ldr r1, _0801E5EC @ =gSineTable
|
||||
adds r0, r3, #0
|
||||
adds r0, #0x40
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
movs r4, #0
|
||||
ldrsh r0, [r0, r4]
|
||||
mov r4, sb
|
||||
muls r4, r0, r4
|
||||
adds r0, r4, #0
|
||||
asrs r0, r0, #8
|
||||
mov r4, r8
|
||||
adds r7, r4, r0
|
||||
lsls r0, r3, #1
|
||||
adds r0, r0, r1
|
||||
movs r3, #0
|
||||
ldrsh r0, [r0, r3]
|
||||
mov r4, sb
|
||||
muls r4, r0, r4
|
||||
adds r0, r4, #0
|
||||
asrs r0, r0, #8
|
||||
ldr r3, [sp, #4]
|
||||
adds r3, r3, r0
|
||||
mov sl, r3
|
||||
adds r3, r5, #0
|
||||
adds r3, #0x68
|
||||
ands r3, r2
|
||||
adds r0, r3, #0
|
||||
adds r0, #0x40
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
movs r4, #0
|
||||
ldrsh r0, [r0, r4]
|
||||
mov r4, sb
|
||||
muls r4, r0, r4
|
||||
adds r0, r4, #0
|
||||
asrs r0, r0, #8
|
||||
mov r4, r8
|
||||
adds r6, r4, r0
|
||||
lsls r0, r3, #1
|
||||
adds r0, r0, r1
|
||||
movs r3, #0
|
||||
ldrsh r0, [r0, r3]
|
||||
mov r4, sb
|
||||
muls r4, r0, r4
|
||||
adds r0, r4, #0
|
||||
asrs r0, r0, #8
|
||||
ldr r3, [sp, #4]
|
||||
adds r4, r3, r0
|
||||
adds r3, r5, #0
|
||||
subs r3, #0xe8
|
||||
ands r3, r2
|
||||
adds r0, r3, #0
|
||||
adds r0, #0x40
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
movs r2, #0
|
||||
ldrsh r0, [r0, r2]
|
||||
mov r2, sb
|
||||
muls r2, r0, r2
|
||||
adds r0, r2, #0
|
||||
asrs r0, r0, #8
|
||||
mov r2, r8
|
||||
adds r5, r2, r0
|
||||
lsls r0, r3, #1
|
||||
adds r0, r0, r1
|
||||
movs r3, #0
|
||||
ldrsh r0, [r0, r3]
|
||||
mov r1, sb
|
||||
muls r1, r0, r1
|
||||
adds r0, r1, #0
|
||||
asrs r0, r0, #8
|
||||
ldr r2, [sp, #4]
|
||||
adds r2, r2, r0
|
||||
mov r8, r2
|
||||
movs r0, #0
|
||||
str r0, [sp]
|
||||
adds r0, r7, #0
|
||||
mov r1, sl
|
||||
adds r2, r6, #0
|
||||
adds r3, r4, #0
|
||||
bl sub_0801E64C
|
||||
movs r0, #1
|
||||
str r0, [sp]
|
||||
adds r0, r7, #0
|
||||
mov r1, sl
|
||||
adds r2, r5, #0
|
||||
mov r3, r8
|
||||
bl sub_0801E64C
|
||||
movs r0, #2
|
||||
str r0, [sp]
|
||||
adds r0, r6, #0
|
||||
adds r1, r4, #0
|
||||
adds r2, r5, #0
|
||||
mov r3, r8
|
||||
bl sub_0801E64C
|
||||
ldr r5, _0801E5F0 @ =gUnk_03003DE4
|
||||
ldrb r1, [r5]
|
||||
lsls r0, r1, #2
|
||||
adds r0, r0, r1
|
||||
lsls r0, r0, #9
|
||||
ldr r6, _0801E5F4 @ =gUnk_02017AA0
|
||||
adds r0, r0, r6
|
||||
movs r1, #0xa0
|
||||
lsls r1, r1, #4
|
||||
bl MemClear
|
||||
ldr r2, _0801E5E8 @ =gUnk_02018EE0
|
||||
ldrb r1, [r5]
|
||||
lsls r0, r1, #2
|
||||
adds r0, r0, r1
|
||||
lsls r0, r0, #9
|
||||
adds r1, r0, r6
|
||||
movs r3, #0xa0
|
||||
mov sl, r3
|
||||
_0801E5B0:
|
||||
ldr r7, [r2]
|
||||
ldr r6, [r2, #4]
|
||||
ldr r5, [r2, #8]
|
||||
adds r2, #0xc
|
||||
cmp r7, r6
|
||||
ble _0801E5C2
|
||||
adds r4, r7, #0
|
||||
adds r7, r6, #0
|
||||
adds r6, r4, #0
|
||||
_0801E5C2:
|
||||
cmp r7, r5
|
||||
ble _0801E5CC
|
||||
adds r4, r7, #0
|
||||
adds r7, r5, #0
|
||||
adds r5, r4, #0
|
||||
_0801E5CC:
|
||||
cmp r6, r5
|
||||
ble _0801E5D6
|
||||
adds r4, r6, #0
|
||||
adds r6, r5, #0
|
||||
adds r5, r4, #0
|
||||
_0801E5D6:
|
||||
movs r0, #1
|
||||
rsbs r0, r0, #0
|
||||
cmp r7, r0
|
||||
beq _0801E5F8
|
||||
strb r5, [r1]
|
||||
strb r7, [r1, #1]
|
||||
b _0801E60A
|
||||
.align 2, 0
|
||||
_0801E5E4: .4byte 0x0000FFFF
|
||||
_0801E5E8: .4byte gUnk_02018EE0
|
||||
_0801E5EC: .4byte gSineTable
|
||||
_0801E5F0: .4byte gUnk_03003DE4
|
||||
_0801E5F4: .4byte gUnk_02017AA0
|
||||
_0801E5F8:
|
||||
cmp r6, r7
|
||||
beq _0801E602
|
||||
strb r5, [r1]
|
||||
strb r6, [r1, #1]
|
||||
b _0801E60A
|
||||
_0801E602:
|
||||
cmp r5, r7
|
||||
beq _0801E60A
|
||||
strb r7, [r1, #1]
|
||||
strb r7, [r1]
|
||||
_0801E60A:
|
||||
movs r4, #1
|
||||
rsbs r4, r4, #0
|
||||
add sl, r4
|
||||
adds r1, #2
|
||||
mov r0, sl
|
||||
cmp r0, #0
|
||||
bgt _0801E5B0
|
||||
ldr r0, _0801E63C @ =gUnk_03003DE4
|
||||
ldrb r1, [r0]
|
||||
lsls r0, r1, #2
|
||||
adds r0, r0, r1
|
||||
lsls r0, r0, #9
|
||||
ldr r1, _0801E640 @ =gUnk_02017AA0
|
||||
adds r0, r0, r1
|
||||
ldr r1, _0801E644 @ =0x04000040
|
||||
ldr r2, _0801E648 @ =0xA2600001
|
||||
bl SetVBlankDMA
|
||||
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
|
||||
_0801E63C: .4byte gUnk_03003DE4
|
||||
_0801E640: .4byte gUnk_02017AA0
|
||||
_0801E644: .4byte 0x04000040
|
||||
_0801E648: .4byte 0xA2600001
|
||||
.syntax divided
|
||||
@@ -1,171 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
mov r5, r8
|
||||
push {r5, r6, r7}
|
||||
mov ip, r0
|
||||
movs r0, #3
|
||||
add ip, r0
|
||||
subs r0, #7
|
||||
mov r1, ip
|
||||
ands r1, r0
|
||||
mov ip, r1
|
||||
ldr r6, _0801D90C @ =gzHeap
|
||||
mov sb, r6
|
||||
ldrh r7, [r6]
|
||||
movs r5, #1
|
||||
movs r3, #0x80
|
||||
lsls r3, r3, #5
|
||||
add r3, sb
|
||||
subs r4, r3, r1
|
||||
movs r2, #0
|
||||
b _0801D926
|
||||
.align 2, 0
|
||||
_0801D90C: .4byte gzHeap
|
||||
_0801D910:
|
||||
cmp r1, r4
|
||||
bhi _0801D918
|
||||
cmp r3, r0
|
||||
bls _0801D952
|
||||
_0801D918:
|
||||
cmp r4, r1
|
||||
bhi _0801D920
|
||||
cmp r0, r3
|
||||
bls _0801D952
|
||||
_0801D920:
|
||||
adds r0, r2, #1
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r2, r0, #0x10
|
||||
_0801D926:
|
||||
cmp r2, r7
|
||||
bhs _0801D94A
|
||||
lsls r0, r2, #2
|
||||
add r0, sb
|
||||
ldrh r1, [r0, #2]
|
||||
ldr r6, _0801D95C @ =gzHeap
|
||||
adds r1, r1, r6
|
||||
ldrh r0, [r0, #4]
|
||||
adds r0, r0, r6
|
||||
cmp r1, r4
|
||||
bhi _0801D940
|
||||
cmp r4, r0
|
||||
bls _0801D952
|
||||
_0801D940:
|
||||
cmp r1, r3
|
||||
bhi _0801D910
|
||||
cmp r3, r0
|
||||
bhi _0801D910
|
||||
movs r5, #0
|
||||
_0801D94A:
|
||||
lsls r0, r7, #2
|
||||
mov sl, r0
|
||||
cmp r5, #0
|
||||
bne _0801D9D8
|
||||
_0801D952:
|
||||
movs r1, #0
|
||||
mov r8, r1
|
||||
lsls r6, r7, #2
|
||||
mov sl, r6
|
||||
b _0801D970
|
||||
.align 2, 0
|
||||
_0801D95C: .4byte gzHeap
|
||||
_0801D960:
|
||||
movs r5, #0
|
||||
_0801D962:
|
||||
mov r0, r8
|
||||
adds r0, #1
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
mov r8, r0
|
||||
cmp r8, r7
|
||||
bhs _0801D9D4
|
||||
_0801D970:
|
||||
mov r1, r8
|
||||
lsls r0, r1, #2
|
||||
add r0, sb
|
||||
ldrh r0, [r0, #2]
|
||||
ldr r6, _0801D994 @ =gzHeap
|
||||
adds r3, r0, r6
|
||||
mov r0, ip
|
||||
subs r4, r3, r0
|
||||
movs r5, #0
|
||||
mov r0, sl
|
||||
adds r0, #2
|
||||
add r0, sb
|
||||
adds r0, #4
|
||||
cmp r4, r0
|
||||
blo _0801D962
|
||||
movs r5, #1
|
||||
movs r2, #0
|
||||
b _0801D9AE
|
||||
.align 2, 0
|
||||
_0801D994: .4byte gzHeap
|
||||
_0801D998:
|
||||
cmp r1, r4
|
||||
bhi _0801D9A0
|
||||
cmp r3, r0
|
||||
bls _0801D960
|
||||
_0801D9A0:
|
||||
cmp r4, r1
|
||||
bhi _0801D9A8
|
||||
cmp r0, r3
|
||||
bls _0801D960
|
||||
_0801D9A8:
|
||||
adds r0, r2, #1
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r2, r0, #0x10
|
||||
_0801D9AE:
|
||||
cmp r2, r7
|
||||
bhs _0801D9D0
|
||||
lsls r0, r2, #2
|
||||
add r0, sb
|
||||
ldrh r1, [r0, #2]
|
||||
adds r1, r1, r6
|
||||
ldrh r0, [r0, #4]
|
||||
adds r0, r0, r6
|
||||
cmp r1, r4
|
||||
bhi _0801D9C6
|
||||
cmp r4, r0
|
||||
blo _0801D960
|
||||
_0801D9C6:
|
||||
cmp r1, r3
|
||||
bhs _0801D998
|
||||
cmp r3, r0
|
||||
bhi _0801D998
|
||||
movs r5, #0
|
||||
_0801D9D0:
|
||||
cmp r5, #0
|
||||
beq _0801D962
|
||||
_0801D9D4:
|
||||
cmp r5, #0
|
||||
beq _0801DA00
|
||||
_0801D9D8:
|
||||
ldr r0, _0801D9FC @ =gUnk_02035542
|
||||
mov r1, sl
|
||||
adds r2, r1, r0
|
||||
subs r3, r0, #2
|
||||
subs r1, r4, r3
|
||||
strh r1, [r2]
|
||||
adds r0, #2
|
||||
add r0, sl
|
||||
add r1, ip
|
||||
strh r1, [r0]
|
||||
adds r0, r7, #1
|
||||
strh r0, [r3]
|
||||
adds r0, r4, #0
|
||||
mov r1, ip
|
||||
bl MemClear
|
||||
adds r0, r4, #0
|
||||
b _0801DA02
|
||||
.align 2, 0
|
||||
_0801D9FC: .4byte gUnk_02035542
|
||||
_0801DA00:
|
||||
movs r0, #0
|
||||
_0801DA02:
|
||||
pop {r3, r4, r5}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
mov sl, r5
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.syntax divided
|
||||
@@ -1,365 +0,0 @@
|
||||
.syntax unified
|
||||
.ifdef JP
|
||||
push {r4, lr}
|
||||
adds r2, r0, #0
|
||||
lsls r1, r1, #3
|
||||
ldr r0, _08087FB0 @ =gUnk_080FC3E4
|
||||
adds r1, r1, r0
|
||||
movs r4, #0
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x7c
|
||||
ldrb r0, [r0]
|
||||
ldrb r3, [r1, #6]
|
||||
cmp r0, r3
|
||||
bhs _08088068
|
||||
ldrb r0, [r1, #6]
|
||||
cmp r0, #0x10
|
||||
beq _08087FC6
|
||||
cmp r0, #0x10
|
||||
bgt _08087FB4
|
||||
cmp r0, #8
|
||||
beq _08087FBC
|
||||
b _0808806A
|
||||
.align 2, 0
|
||||
_08087FB0: .4byte gUnk_080FC3E4
|
||||
_08087FB4:
|
||||
cmp r0, #0x20
|
||||
beq _08087FCA
|
||||
cmp r0, #0x40
|
||||
bne _0808806A
|
||||
_08087FBC:
|
||||
ldr r0, [r1]
|
||||
ldrh r1, [r1, #4]
|
||||
bl CheckLocalFlagByBank
|
||||
b _08088064EU
|
||||
_08087FC6:
|
||||
ldrh r0, [r1, #4]
|
||||
b _08088060EU
|
||||
_08087FCA:
|
||||
ldrh r0, [r1, #4]
|
||||
cmp r0, #4
|
||||
bhi _0808806A
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _08087FDC @ =_08087FE0
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08087FDC: .4byte _08087FE0
|
||||
_08087FE0: @ jump table
|
||||
.4byte _08087FF4 @ case 0
|
||||
.4byte _0808800C @ case 1
|
||||
.4byte _0808801A @ case 2
|
||||
.4byte _08088032 @ case 3
|
||||
.4byte _0808804A @ case 4
|
||||
_08087FF4:
|
||||
movs r0, #0x20
|
||||
bl CheckKinstoneFused
|
||||
cmp r0, #0
|
||||
bne _08088068
|
||||
movs r0, #0x10
|
||||
bl CheckKinstoneFused
|
||||
cmp r0, #0
|
||||
bne _08088068
|
||||
movs r0, #0x19
|
||||
b _08088060EU
|
||||
_0808800C:
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x7c
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #4
|
||||
bls _0808806A
|
||||
movs r0, #0x28
|
||||
b _08088060EU
|
||||
_0808801A:
|
||||
movs r0, #0x54
|
||||
bl CheckKinstoneFused
|
||||
cmp r0, #0
|
||||
bne _08088068
|
||||
movs r0, #0x56
|
||||
bl CheckKinstoneFused
|
||||
cmp r0, #0
|
||||
bne _08088068
|
||||
movs r0, #0x3d
|
||||
b _08088060EU
|
||||
_08088032:
|
||||
movs r0, #0x3b
|
||||
bl CheckKinstoneFused
|
||||
cmp r0, #0
|
||||
bne _08088068
|
||||
movs r0, #0x4a
|
||||
bl CheckKinstoneFused
|
||||
cmp r0, #0
|
||||
bne _08088068
|
||||
movs r0, #0xd
|
||||
b _08088060EU
|
||||
_0808804A:
|
||||
movs r0, #0x49
|
||||
bl CheckKinstoneFused
|
||||
cmp r0, #0
|
||||
bne _08088068
|
||||
movs r0, #0x55
|
||||
bl CheckKinstoneFused
|
||||
cmp r0, #0
|
||||
bne _08088068
|
||||
movs r0, #0x3c
|
||||
_08088060EU:
|
||||
bl CheckKinstoneFused
|
||||
_08088064EU:
|
||||
cmp r0, #0
|
||||
beq _0808806A
|
||||
_08088068:
|
||||
movs r4, #1
|
||||
_0808806A:
|
||||
adds r0, r4, #0
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
.else
|
||||
.ifdef EU
|
||||
push {r4, lr}
|
||||
adds r2, r0, #0
|
||||
lsls r1, r1, #3
|
||||
ldr r0, _08087B44 @ =gUnk_080FC3E4
|
||||
adds r1, r1, r0
|
||||
movs r4, #0
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x7d
|
||||
ldrb r0, [r0]
|
||||
ldrb r3, [r1, #6]
|
||||
cmp r0, r3
|
||||
bhs _08087BFC
|
||||
ldrb r0, [r1, #6]
|
||||
cmp r0, #0x10
|
||||
beq _08087B5A
|
||||
cmp r0, #0x10
|
||||
bgt _08087B48
|
||||
cmp r0, #8
|
||||
beq _08087B50
|
||||
b _08087BFE
|
||||
.align 2, 0
|
||||
_08087B44: .4byte gUnk_080FC3E4
|
||||
_08087B48:
|
||||
cmp r0, #0x20
|
||||
beq _08087B5E
|
||||
cmp r0, #0x40
|
||||
bne _08087BFE
|
||||
_08087B50:
|
||||
ldr r0, [r1]
|
||||
ldrh r1, [r1, #4]
|
||||
bl CheckLocalFlagByBank
|
||||
b _08087BF8
|
||||
_08087B5A:
|
||||
ldrh r0, [r1, #4]
|
||||
b _08087BF4
|
||||
_08087B5E:
|
||||
ldrh r0, [r1, #4]
|
||||
cmp r0, #4
|
||||
bhi _08087BFE
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _08087B70 @ =_08087B74
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08087B70: .4byte _08087B74
|
||||
_08087B74: @ jump table
|
||||
.4byte _08087B88 @ case 0
|
||||
.4byte _08087BA0 @ case 1
|
||||
.4byte _08087BAE @ case 2
|
||||
.4byte _08087BC6 @ case 3
|
||||
.4byte _08087BDE @ case 4
|
||||
_08087B88:
|
||||
movs r0, #0x20
|
||||
bl CheckKinstoneFused
|
||||
cmp r0, #0
|
||||
bne _08087BFC
|
||||
movs r0, #0x10
|
||||
bl CheckKinstoneFused
|
||||
cmp r0, #0
|
||||
bne _08087BFC
|
||||
movs r0, #0x19
|
||||
b _08087BF4
|
||||
_08087BA0:
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x7d
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #4
|
||||
bls _08087BFE
|
||||
movs r0, #0x28
|
||||
b _08087BF4
|
||||
_08087BAE:
|
||||
movs r0, #0x54
|
||||
bl CheckKinstoneFused
|
||||
cmp r0, #0
|
||||
bne _08087BFC
|
||||
movs r0, #0x56
|
||||
bl CheckKinstoneFused
|
||||
cmp r0, #0
|
||||
bne _08087BFC
|
||||
movs r0, #0x3d
|
||||
b _08087BF4
|
||||
_08087BC6:
|
||||
movs r0, #0x3b
|
||||
bl CheckKinstoneFused
|
||||
cmp r0, #0
|
||||
bne _08087BFC
|
||||
movs r0, #0x4a
|
||||
bl CheckKinstoneFused
|
||||
cmp r0, #0
|
||||
bne _08087BFC
|
||||
movs r0, #0xd
|
||||
b _08087BF4
|
||||
_08087BDE:
|
||||
movs r0, #0x49
|
||||
bl CheckKinstoneFused
|
||||
cmp r0, #0
|
||||
bne _08087BFC
|
||||
movs r0, #0x55
|
||||
bl CheckKinstoneFused
|
||||
cmp r0, #0
|
||||
bne _08087BFC
|
||||
movs r0, #0x3c
|
||||
_08087BF4:
|
||||
bl CheckKinstoneFused
|
||||
_08087BF8:
|
||||
cmp r0, #0
|
||||
beq _08087BFE
|
||||
_08087BFC:
|
||||
movs r4, #1
|
||||
_08087BFE:
|
||||
adds r0, r4, #0
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
.else
|
||||
push {r4, lr}
|
||||
adds r2, r0, #0
|
||||
lsls r1, r1, #3
|
||||
ldr r0, _08088188 @ =gUnk_080FC3E4
|
||||
adds r1, r1, r0
|
||||
movs r4, #0
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x7c
|
||||
ldrb r0, [r0]
|
||||
ldrb r3, [r1, #6]
|
||||
cmp r0, r3
|
||||
bhs _08088266
|
||||
ldrb r0, [r1, #6]
|
||||
cmp r0, #0x10
|
||||
beq _0808819E
|
||||
cmp r0, #0x10
|
||||
bgt _0808818C
|
||||
cmp r0, #8
|
||||
beq _08088194
|
||||
b _08088268
|
||||
.align 2, 0
|
||||
_08088188: .4byte gUnk_080FC3E4
|
||||
_0808818C:
|
||||
cmp r0, #0x20
|
||||
beq _080881A6
|
||||
cmp r0, #0x40
|
||||
bne _08088268
|
||||
_08088194:
|
||||
ldr r0, [r1]
|
||||
ldrh r1, [r1, #4]
|
||||
bl CheckLocalFlagByBank
|
||||
b _08088262
|
||||
_0808819E:
|
||||
ldrh r0, [r1, #4]
|
||||
.ifndef JP
|
||||
bl CheckKinstoneFused
|
||||
.endif
|
||||
b _08088262
|
||||
_080881A6:
|
||||
ldrh r0, [r1, #4]
|
||||
cmp r0, #5
|
||||
bhi _08088268
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _080881B8 @ =_080881BC
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_080881B8: .4byte _080881BC
|
||||
_080881BC: @ jump table
|
||||
.4byte _080881D4 @ case 0
|
||||
.4byte _080881F0 @ case 1
|
||||
.4byte _080881FE @ case 2
|
||||
.4byte _0808821A @ case 3
|
||||
.4byte _08088236 @ case 4
|
||||
.4byte _08088252 @ case 5
|
||||
_080881D4:
|
||||
movs r0, #0x20
|
||||
bl CheckKinstoneFused
|
||||
cmp r0, #0
|
||||
bne _08088266
|
||||
movs r0, #0x10
|
||||
bl CheckKinstoneFused
|
||||
cmp r0, #0
|
||||
bne _08088266
|
||||
movs r0, #0x19
|
||||
_080881EA:
|
||||
bl CheckKinstoneFused
|
||||
b _08088262
|
||||
_080881F0:
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x7c
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #4
|
||||
bls _08088268
|
||||
movs r0, #0x28
|
||||
b _080881EA
|
||||
_080881FE:
|
||||
movs r0, #0x54
|
||||
bl CheckKinstoneFused
|
||||
cmp r0, #0
|
||||
bne _08088266
|
||||
movs r0, #0x56
|
||||
bl CheckKinstoneFused
|
||||
cmp r0, #0
|
||||
bne _08088266
|
||||
movs r0, #0x3d
|
||||
bl CheckKinstoneFused
|
||||
b _08088262
|
||||
_0808821A:
|
||||
movs r0, #0x3b
|
||||
bl CheckKinstoneFused
|
||||
cmp r0, #0
|
||||
bne _08088266
|
||||
movs r0, #0x4a
|
||||
bl CheckKinstoneFused
|
||||
cmp r0, #0
|
||||
bne _08088266
|
||||
movs r0, #0xd
|
||||
bl CheckKinstoneFused
|
||||
b _08088262
|
||||
_08088236:
|
||||
movs r0, #0x49
|
||||
bl CheckKinstoneFused
|
||||
cmp r0, #0
|
||||
bne _08088266
|
||||
movs r0, #0x55
|
||||
bl CheckKinstoneFused
|
||||
cmp r0, #0
|
||||
bne _08088266
|
||||
movs r0, #0x3c
|
||||
bl CheckKinstoneFused
|
||||
b _08088262
|
||||
_08088252:
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x7c
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #1
|
||||
bls _08088268
|
||||
movs r0, #0x12
|
||||
bl CheckGlobalFlag
|
||||
_08088262:
|
||||
cmp r0, #0
|
||||
beq _08088268
|
||||
_08088266:
|
||||
movs r4, #1
|
||||
_08088268:
|
||||
adds r0, r4, #0
|
||||
pop {r4, pc}
|
||||
.endif
|
||||
.endif
|
||||
.syntax divided
|
||||
@@ -1,219 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r5, r0, #0
|
||||
adds r6, r1, #0
|
||||
ldr r4, _08076334 @ =gPlayerState
|
||||
ldrb r0, [r4, #5]
|
||||
movs r1, #0xcf
|
||||
ands r1, r0
|
||||
strb r1, [r4, #5]
|
||||
adds r0, r5, #0
|
||||
adds r1, r6, #0
|
||||
bl PlayerTryDropObject
|
||||
cmp r0, #0
|
||||
bne _080762F6
|
||||
b _08076486
|
||||
_080762F6:
|
||||
ldr r0, _08076338 @ =gPlayerEntity
|
||||
adds r1, r0, #0
|
||||
adds r1, #0x3d
|
||||
ldrb r1, [r1]
|
||||
lsls r1, r1, #0x18
|
||||
asrs r1, r1, #0x18
|
||||
adds r3, r0, #0
|
||||
cmp r1, #8
|
||||
bgt _0807636C
|
||||
adds r0, #0x42
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _0807636C
|
||||
ldr r2, [r5, #0x18]
|
||||
cmp r2, #0
|
||||
beq _08076340
|
||||
ldrh r1, [r2, #0xc]
|
||||
ldr r0, _0807633C @ =0x00000502
|
||||
cmp r1, r0
|
||||
bne _08076376
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x90
|
||||
ldrh r1, [r0]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08076340
|
||||
movs r0, #6
|
||||
strb r0, [r2, #0xd]
|
||||
b _08076376
|
||||
.align 2, 0
|
||||
_08076334: .4byte gPlayerState
|
||||
_08076338: .4byte gPlayerEntity
|
||||
_0807633C: .4byte 0x00000502
|
||||
_08076340:
|
||||
ldr r2, _08076364 @ =gPlayerState
|
||||
adds r1, r2, #0
|
||||
adds r1, #0xa8
|
||||
movs r0, #5
|
||||
strb r0, [r1]
|
||||
ldr r0, _08076368 @ =gHUD
|
||||
adds r0, #0x2e
|
||||
movs r1, #8
|
||||
strb r1, [r0]
|
||||
ldrb r0, [r2, #2]
|
||||
cmp r0, #0
|
||||
beq _0807635A
|
||||
b _0807647E
|
||||
_0807635A:
|
||||
ldrb r0, [r2, #5]
|
||||
cmp r0, #1
|
||||
bne _08076394
|
||||
b _08076380
|
||||
.align 2, 0
|
||||
_08076364: .4byte gPlayerState
|
||||
_08076368: .4byte gHUD
|
||||
_0807636C:
|
||||
ldr r1, [r5, #0x18]
|
||||
cmp r1, #0
|
||||
beq _08076376
|
||||
movs r0, #6
|
||||
strb r0, [r1, #0xd]
|
||||
_08076376:
|
||||
adds r0, r5, #0
|
||||
adds r1, r6, #0
|
||||
bl PlayerCancelHoldItem
|
||||
b _08076486
|
||||
_08076380:
|
||||
adds r0, r3, #0
|
||||
movs r1, #6
|
||||
adds r2, r5, #0
|
||||
bl sub_0800875A
|
||||
cmp r0, #0
|
||||
beq _08076394
|
||||
adds r0, r5, #0
|
||||
movs r1, #0
|
||||
b _080763EC
|
||||
_08076394:
|
||||
ldr r1, _080763F4 @ =gUnk_0811BE38
|
||||
ldr r7, _080763F8 @ =gPlayerEntity
|
||||
ldrb r0, [r7, #0x14]
|
||||
lsrs r0, r0, #1
|
||||
lsls r3, r0, #1
|
||||
adds r1, r3, r1
|
||||
ldr r4, _080763FC @ =gPlayerState
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x90
|
||||
ldrh r0, [r1]
|
||||
ldrh r2, [r2]
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
beq _08076400
|
||||
adds r0, r5, #0
|
||||
bl UpdateItemAnim
|
||||
ldr r0, [r4, #0x30]
|
||||
movs r1, #8
|
||||
ands r0, r1
|
||||
movs r1, #0x94
|
||||
lsls r1, r1, #4
|
||||
cmp r0, #0
|
||||
bne _080763C8
|
||||
movs r1, #0xd0
|
||||
lsls r1, r1, #2
|
||||
_080763C8:
|
||||
ldrh r0, [r5, #0x10]
|
||||
cmp r1, r0
|
||||
beq _080763D4
|
||||
adds r0, r5, #0
|
||||
bl SetItemAnim
|
||||
_080763D4:
|
||||
ldrb r0, [r4, #5]
|
||||
movs r1, #0x10
|
||||
orrs r1, r0
|
||||
strb r1, [r4, #5]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0xa8
|
||||
movs r0, #0x1a
|
||||
strb r0, [r2]
|
||||
cmp r1, #1
|
||||
beq _08076486
|
||||
ldr r1, [r5, #0x18]
|
||||
adds r0, r5, #0
|
||||
_080763EC:
|
||||
adds r2, r6, #0
|
||||
bl sub_08076088
|
||||
b _08076486
|
||||
.align 2, 0
|
||||
_080763F4: .4byte gUnk_0811BE38
|
||||
_080763F8: .4byte gPlayerEntity
|
||||
_080763FC: .4byte gPlayerState
|
||||
_08076400:
|
||||
ldr r0, _08076418 @ =gUnk_0811BE40
|
||||
adds r0, r3, r0
|
||||
ldrh r0, [r0]
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
beq _08076460
|
||||
ldrb r0, [r7, #0xf]
|
||||
cmp r0, #5
|
||||
bhi _0807641C
|
||||
adds r0, #1
|
||||
strb r0, [r7, #0xf]
|
||||
b _08076486
|
||||
.align 2, 0
|
||||
_08076418: .4byte gUnk_0811BE40
|
||||
_0807641C:
|
||||
ldrb r0, [r5, #0xa]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x35
|
||||
strb r0, [r1]
|
||||
ldrb r0, [r4, #6]
|
||||
movs r1, #0x80
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #6]
|
||||
ldrb r1, [r4, #5]
|
||||
movs r0, #0x20
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #5]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0xa8
|
||||
movs r0, #0x19
|
||||
strb r0, [r1]
|
||||
ldr r0, [r4, #0x30]
|
||||
movs r1, #8
|
||||
ands r0, r1
|
||||
ldr r1, _0807645C @ =0x0000093C
|
||||
cmp r0, #0
|
||||
bne _0807644C
|
||||
movs r1, #0xcf
|
||||
lsls r1, r1, #2
|
||||
_0807644C:
|
||||
ldrh r0, [r5, #0x10]
|
||||
cmp r1, r0
|
||||
bne _08076476
|
||||
adds r0, r5, #0
|
||||
bl UpdateItemAnim
|
||||
b _08076486
|
||||
.align 2, 0
|
||||
_0807645C: .4byte 0x0000093C
|
||||
_08076460:
|
||||
strb r0, [r7, #0xf]
|
||||
ldr r0, [r4, #0x30]
|
||||
movs r1, #8
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08076472
|
||||
movs r1, #0xd0
|
||||
lsls r1, r1, #2
|
||||
b _08076476
|
||||
_08076472:
|
||||
movs r1, #0x94
|
||||
lsls r1, r1, #4
|
||||
_08076476:
|
||||
adds r0, r5, #0
|
||||
bl SetItemAnim
|
||||
b _08076486
|
||||
_0807647E:
|
||||
adds r0, r5, #0
|
||||
adds r1, r6, #0
|
||||
bl PlayerCancelHoldItem
|
||||
_08076486:
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.syntax divided
|
||||
@@ -1,112 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
push {r6, r7}
|
||||
ldr r4, _080A4210 @ =gOamCmd
|
||||
movs r0, #0
|
||||
strh r0, [r4, #4]
|
||||
strh r0, [r4, #6]
|
||||
ldr r0, _080A4214 @ =gMenu
|
||||
ldrh r0, [r0, #0x10]
|
||||
ldr r1, _080A4218 @ =0x00000B21
|
||||
bl __divsi3
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
movs r5, #3
|
||||
rsbs r5, r5, #0
|
||||
movs r1, #0xff
|
||||
mov r8, r1
|
||||
adds r7, r4, #0
|
||||
ldr r6, _080A421C @ =gSineTable
|
||||
rsbs r0, r0, #0
|
||||
adds r4, r0, #0
|
||||
subs r4, #0x45
|
||||
ldr r2, _080A4220 @ =gSave+0x12b
|
||||
mov sb, r2
|
||||
_080A4180:
|
||||
adds r2, r4, #0
|
||||
mov r3, r8
|
||||
ands r2, r3
|
||||
lsls r0, r2, #1
|
||||
adds r0, r0, r6
|
||||
movs r3, #0
|
||||
ldrsh r1, [r0, r3]
|
||||
lsls r0, r1, #4
|
||||
adds r0, r0, r1
|
||||
lsls r0, r0, #2
|
||||
cmp r0, #0
|
||||
bge _080A419A
|
||||
adds r0, #0xff
|
||||
_080A419A:
|
||||
asrs r0, r0, #8
|
||||
adds r0, #0x4f
|
||||
strh r0, [r7, #2]
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x40
|
||||
mov r1, r8
|
||||
ands r0, r1
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r6
|
||||
movs r2, #0
|
||||
ldrsh r1, [r0, r2]
|
||||
lsls r0, r1, #5
|
||||
adds r0, r0, r1
|
||||
lsls r0, r0, #1
|
||||
cmp r0, #0
|
||||
bge _080A41BC
|
||||
adds r0, #0xff
|
||||
_080A41BC:
|
||||
asrs r0, r0, #8
|
||||
subs r0, #0x10
|
||||
strh r0, [r7]
|
||||
ldr r2, _080A4214 @ =gMenu
|
||||
ldr r0, [r2, #0x10]
|
||||
cmp r0, #0
|
||||
bge _080A41CE
|
||||
ldr r3, _080A4224 @ =0x0000FFFF
|
||||
adds r0, r0, r3
|
||||
_080A41CE:
|
||||
asrs r0, r0, #0x10
|
||||
adds r3, r0, r5
|
||||
cmp r3, #0
|
||||
blt _080A4200
|
||||
mov r1, sb
|
||||
adds r0, r3, r1
|
||||
ldrb r1, [r0]
|
||||
ldr r0, _080A4228 @ =gSave
|
||||
cmp r5, #0
|
||||
bne _080A41EE
|
||||
ldrb r2, [r2, #1]
|
||||
cmp r2, #4
|
||||
bgt _080A41EE
|
||||
cmp r2, #3
|
||||
blt _080A41EE
|
||||
subs r1, #1
|
||||
_080A41EE:
|
||||
cmp r1, #0
|
||||
ble _080A4200
|
||||
movs r2, #0x8c
|
||||
lsls r2, r2, #1
|
||||
adds r0, r0, r2
|
||||
adds r0, r3, r0
|
||||
ldrb r0, [r0]
|
||||
bl sub_080A42E0
|
||||
_080A4200:
|
||||
adds r4, #0x17
|
||||
adds r5, #1
|
||||
cmp r5, #3
|
||||
ble _080A4180
|
||||
pop {r3, r4}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_080A4210: .4byte gOamCmd
|
||||
_080A4214: .4byte gMenu
|
||||
_080A4218: .4byte 0x00000B21
|
||||
_080A421C: .4byte gSineTable
|
||||
_080A4220: .4byte gSave+0x12b
|
||||
_080A4224: .4byte 0x0000FFFF
|
||||
_080A4228: .4byte gSave
|
||||
.syntax divided
|
||||
@@ -1,66 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, lr}
|
||||
mov ip, r0
|
||||
adds r5, r1, #0
|
||||
ldrb r1, [r0, #0xb]
|
||||
movs r0, #0x10
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0806650A
|
||||
mov r1, ip
|
||||
ldrh r0, [r1, #0x2e]
|
||||
adds r1, #0x86
|
||||
strh r0, [r1]
|
||||
mov r0, ip
|
||||
adds r0, #0x7e
|
||||
ldrh r2, [r0]
|
||||
adds r0, #4
|
||||
ldrh r0, [r0]
|
||||
adds r3, r2, r0
|
||||
subs r4, r2, r0
|
||||
movs r6, #0x2e
|
||||
ldrsh r0, [r5, r6]
|
||||
cmp r0, r3
|
||||
bge _080664C6
|
||||
cmp r0, r4
|
||||
ble _080664C6
|
||||
adds r2, r0, #0
|
||||
b _080664D2
|
||||
_080664C6:
|
||||
movs r2, #0x2e
|
||||
ldrsh r0, [r5, r2]
|
||||
adds r2, r4, #0
|
||||
cmp r0, r3
|
||||
blt _080664D2
|
||||
adds r2, r3, #0
|
||||
_080664D2:
|
||||
ldrh r0, [r1]
|
||||
cmp r0, r2
|
||||
bne _080664F0
|
||||
mov r1, ip
|
||||
adds r1, #0x84
|
||||
ldrh r0, [r1]
|
||||
cmp r0, #1
|
||||
bne _0806650A
|
||||
movs r0, #0
|
||||
strh r0, [r1]
|
||||
mov r0, ip
|
||||
movs r1, #2
|
||||
bl InitializeAnimation
|
||||
b _0806650A
|
||||
_080664F0:
|
||||
mov r6, ip
|
||||
strh r2, [r6, #0x2e]
|
||||
mov r1, ip
|
||||
adds r1, #0x84
|
||||
ldrh r0, [r1]
|
||||
cmp r0, #0
|
||||
bne _0806650A
|
||||
movs r0, #1
|
||||
strh r0, [r1]
|
||||
mov r0, ip
|
||||
movs r1, #6
|
||||
bl InitializeAnimation
|
||||
_0806650A:
|
||||
pop {r4, r5, r6, pc}
|
||||
.syntax divided
|
||||
@@ -1,144 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
mov r5, r8
|
||||
push {r5, r6, r7}
|
||||
sub sp, #8
|
||||
mov sb, r0
|
||||
movs r6, #0
|
||||
ldr r0, [r0, #0x64]
|
||||
str r0, [sp, #4]
|
||||
mov r4, sb
|
||||
adds r4, #0x70
|
||||
ldr r0, _080A12F8 @ =gRoomControls
|
||||
movs r2, #0xd8
|
||||
lsls r2, r2, #2
|
||||
adds r1, r2, #0
|
||||
ldrh r3, [r0, #6]
|
||||
adds r1, r1, r3
|
||||
movs r7, #0xd4
|
||||
lsls r7, r7, #2
|
||||
adds r2, r7, #0
|
||||
ldrh r0, [r0, #8]
|
||||
adds r2, r2, r0
|
||||
lsls r1, r1, #0x10
|
||||
asrs r1, r1, #0x10
|
||||
mov r8, r1
|
||||
lsls r2, r2, #0x10
|
||||
asrs r3, r2, #0x10
|
||||
movs r0, #9
|
||||
mov sl, r0
|
||||
movs r1, #1
|
||||
rsbs r1, r1, #0
|
||||
adds r5, r1, #0
|
||||
_080A12B2:
|
||||
ldr r7, [sp, #4]
|
||||
ldr r2, [r7]
|
||||
movs r0, #0
|
||||
ldrsb r0, [r4, r0]
|
||||
cmp r0, #0
|
||||
bne _080A1300
|
||||
ldr r0, [r2, #4]
|
||||
cmp r0, #0
|
||||
beq _080A132C
|
||||
cmp r2, #0
|
||||
beq _080A132C
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r2, r1]
|
||||
cmp r8, r0
|
||||
bgt _080A132E
|
||||
movs r7, #0x32
|
||||
ldrsh r0, [r2, r7]
|
||||
cmp r3, r0
|
||||
bgt _080A132E
|
||||
ldrb r0, [r2, #0xa]
|
||||
adds r0, #1
|
||||
strb r0, [r4]
|
||||
movs r0, #1
|
||||
strb r0, [r2, #0xb]
|
||||
adds r6, #1
|
||||
ldr r1, _080A12FC @ =CuccoMinigame_Sounds
|
||||
ldrb r0, [r2, #0xa]
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
ldrh r0, [r0]
|
||||
str r3, [sp]
|
||||
bl SoundReq
|
||||
ldr r3, [sp]
|
||||
b _080A132E
|
||||
.align 2, 0
|
||||
_080A12F8: .4byte gRoomControls
|
||||
_080A12FC: .4byte CuccoMinigame_Sounds
|
||||
_080A1300:
|
||||
cmp r0, #0
|
||||
ble _080A132E
|
||||
adds r6, #1
|
||||
ldr r0, [r2, #4]
|
||||
cmp r0, #0
|
||||
beq _080A132C
|
||||
cmp r2, #0
|
||||
beq _080A132C
|
||||
mov r1, r8
|
||||
adds r1, #4
|
||||
movs r7, #0x2e
|
||||
ldrsh r0, [r2, r7]
|
||||
cmp r1, r0
|
||||
ble _080A131E
|
||||
strh r1, [r2, #0x2e]
|
||||
_080A131E:
|
||||
adds r1, r3, #4
|
||||
movs r7, #0x32
|
||||
ldrsh r0, [r2, r7]
|
||||
cmp r1, r0
|
||||
ble _080A132E
|
||||
strh r1, [r2, #0x32]
|
||||
b _080A132E
|
||||
_080A132C:
|
||||
strb r5, [r4]
|
||||
_080A132E:
|
||||
movs r0, #1
|
||||
rsbs r0, r0, #0
|
||||
add sl, r0
|
||||
adds r4, #1
|
||||
ldr r1, [sp, #4]
|
||||
adds r1, #4
|
||||
str r1, [sp, #4]
|
||||
mov r2, sl
|
||||
cmp r2, #0
|
||||
bge _080A12B2
|
||||
mov r0, sb
|
||||
adds r0, #0x6a
|
||||
strh r6, [r0]
|
||||
ldr r0, _080A136C @ =gPlayerState
|
||||
adds r0, #0x27
|
||||
movs r1, #0xff
|
||||
strb r1, [r0]
|
||||
mov r1, sb
|
||||
adds r1, #0x68
|
||||
ldrh r0, [r1]
|
||||
subs r0, #1
|
||||
strh r0, [r1]
|
||||
lsls r0, r0, #0x10
|
||||
cmp r0, #0
|
||||
bgt _080A1370
|
||||
movs r0, #0xe2
|
||||
bl SoundReq
|
||||
bl sub_08050384
|
||||
b _080A1376
|
||||
.align 2, 0
|
||||
_080A136C: .4byte gPlayerState
|
||||
_080A1370:
|
||||
ldr r1, _080A1384 @ =gActiveScriptInfo
|
||||
movs r0, #0
|
||||
strb r0, [r1, #6]
|
||||
_080A1376:
|
||||
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
|
||||
_080A1384: .4byte gActiveScriptInfo
|
||||
.syntax divided
|
||||
@@ -1,315 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
mov r5, r8
|
||||
push {r5, r6, r7}
|
||||
ldr r0, _080784FC @ =gPossibleInteraction
|
||||
ldrb r1, [r0]
|
||||
mov r8, r0
|
||||
cmp r1, #0
|
||||
beq _08078500
|
||||
ldr r0, [r0, #4]
|
||||
b _0807876A
|
||||
.align 2, 0
|
||||
_080784FC: .4byte gPossibleInteraction
|
||||
_08078500:
|
||||
ldr r2, _08078528 @ =gPlayerState
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x27
|
||||
adds r3, r2, #0
|
||||
adds r3, #0x26
|
||||
ldrb r1, [r0]
|
||||
ldrb r0, [r3]
|
||||
orrs r0, r1
|
||||
cmp r0, #0
|
||||
bne _08078598
|
||||
adds r1, r2, #0
|
||||
adds r1, #0xa8
|
||||
ldrb r0, [r1]
|
||||
cmp r0, #0
|
||||
bne _0807852C
|
||||
adds r0, r2, #0
|
||||
adds r0, #0xa9
|
||||
ldrb r0, [r0]
|
||||
b _0807852E
|
||||
.align 2, 0
|
||||
_08078528: .4byte gPlayerState
|
||||
_0807852C:
|
||||
ldrb r0, [r1]
|
||||
_0807852E:
|
||||
subs r0, #2
|
||||
cmp r0, #0x14
|
||||
bhi _080785B0
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _08078540 @ =_08078544
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08078540: .4byte _08078544
|
||||
_08078544: @ jump table
|
||||
.4byte _08078598 @ case 0
|
||||
.4byte _08078598 @ case 1
|
||||
.4byte _080785B0 @ case 2
|
||||
.4byte _080785B0 @ case 3
|
||||
.4byte _080785B0 @ case 4
|
||||
.4byte _080785B0 @ case 5
|
||||
.4byte _080785B0 @ case 6
|
||||
.4byte _080785B0 @ case 7
|
||||
.4byte _080785B0 @ case 8
|
||||
.4byte _080785B0 @ case 9
|
||||
.4byte _080785B0 @ case 10
|
||||
.4byte _080785B0 @ case 11
|
||||
.4byte _080785B0 @ case 12
|
||||
.4byte _080785B0 @ case 13
|
||||
.4byte _080785B0 @ case 14
|
||||
.4byte _080785B0 @ case 15
|
||||
.4byte _08078598 @ case 16
|
||||
.4byte _080785B0 @ case 17
|
||||
.4byte _080785B0 @ case 18
|
||||
.4byte _08078598 @ case 19
|
||||
.4byte _08078598 @ case 20
|
||||
_08078598:
|
||||
movs r0, #0xff
|
||||
mov r1, r8
|
||||
strb r0, [r1, #3]
|
||||
ldr r0, _080785AC @ =gNoInteraction
|
||||
str r0, [r1, #4]
|
||||
movs r1, #1
|
||||
mov r2, r8
|
||||
strb r1, [r2]
|
||||
b _0807876A
|
||||
.align 2, 0
|
||||
_080785AC: .4byte gNoInteraction
|
||||
_080785B0:
|
||||
ldr r0, [r2, #0x30]
|
||||
movs r1, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _080785F0
|
||||
bl HasDungeonSmallKey
|
||||
cmp r0, #0
|
||||
beq _080785C4
|
||||
movs r0, #1
|
||||
_080785C4:
|
||||
adds r7, r0, #0
|
||||
bl HasDungeonBigKey
|
||||
cmp r0, #0
|
||||
beq _080785D2
|
||||
movs r0, #2
|
||||
orrs r7, r0
|
||||
_080785D2:
|
||||
ldr r3, _080785E4 @ =gPlayerEntity
|
||||
ldrb r0, [r3, #0x14]
|
||||
movs r1, #6
|
||||
ands r1, r0
|
||||
ldr r0, _080785E8 @ =gPlayerInteractHitboxOffsetNormal
|
||||
adds r2, r1, r0
|
||||
ldr r5, _080785EC @ =gPossibleInteraction
|
||||
mov r8, r5
|
||||
b _080785FE
|
||||
.align 2, 0
|
||||
_080785E4: .4byte gPlayerEntity
|
||||
_080785E8: .4byte gPlayerInteractHitboxOffsetNormal
|
||||
_080785EC: .4byte gPossibleInteraction
|
||||
_080785F0:
|
||||
ldr r3, _08078624 @ =gPlayerEntity
|
||||
ldrb r0, [r3, #0x14]
|
||||
movs r1, #6
|
||||
ands r1, r0
|
||||
ldr r0, _08078628 @ =gPlayerInteractHitboxOffsetMinish
|
||||
adds r2, r1, r0
|
||||
movs r7, #0
|
||||
_080785FE:
|
||||
mov ip, r3
|
||||
mov r0, ip
|
||||
movs r3, #0x2e
|
||||
ldrsh r1, [r0, r3]
|
||||
movs r0, #0
|
||||
ldrsb r0, [r2, r0]
|
||||
adds r1, r1, r0
|
||||
mov sl, r1
|
||||
mov r5, ip
|
||||
movs r0, #0x32
|
||||
ldrsh r1, [r5, r0]
|
||||
movs r0, #1
|
||||
ldrsb r0, [r2, r0]
|
||||
adds r1, r1, r0
|
||||
mov sb, r1
|
||||
movs r6, #0
|
||||
ldr r5, _0807862C @ =gInteractableObjects
|
||||
b _08078724
|
||||
.align 2, 0
|
||||
_08078624: .4byte gPlayerEntity
|
||||
_08078628: .4byte gPlayerInteractHitboxOffsetMinish
|
||||
_0807862C: .4byte gInteractableObjects
|
||||
_08078630:
|
||||
ldrb r1, [r5]
|
||||
movs r3, #1
|
||||
adds r0, r3, #0
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0807864E
|
||||
mov r0, ip
|
||||
adds r0, #0x38
|
||||
adds r1, r2, #0
|
||||
adds r1, #0x38
|
||||
ldrb r2, [r0]
|
||||
ldrb r0, [r1]
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
beq _08078714
|
||||
_0807864E:
|
||||
ldrb r1, [r5, #2]
|
||||
mov r2, ip
|
||||
ldrb r0, [r2, #0x14]
|
||||
lsrs r0, r0, #1
|
||||
asrs r1, r0
|
||||
ands r1, r3
|
||||
cmp r1, #0
|
||||
bne _08078714
|
||||
ldrb r0, [r5, #1]
|
||||
cmp r0, #0xa
|
||||
bhi _080786D4
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _08078670 @ =_08078674
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08078670: .4byte _08078674
|
||||
_08078674: @ jump table
|
||||
.4byte _08078714 @ case 0
|
||||
.4byte _080786A0 @ case 1
|
||||
.4byte _080786C4 @ case 2
|
||||
.4byte _080786A0 @ case 3
|
||||
.4byte _080786A0 @ case 4
|
||||
.4byte _080786C8 @ case 5
|
||||
.4byte _080786CC @ case 6
|
||||
.4byte _080786B4 @ case 7
|
||||
.4byte _080786A0 @ case 8
|
||||
.4byte _080786A0 @ case 9
|
||||
.4byte _080786D4 @ case 10
|
||||
_080786A0:
|
||||
ldr r0, _080786B0 @ =gPlayerState
|
||||
ldr r0, [r0, #0x30]
|
||||
movs r1, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08078714
|
||||
b _080786D4
|
||||
.align 2, 0
|
||||
_080786B0: .4byte gPlayerState
|
||||
_080786B4:
|
||||
ldr r0, _080786C0 @ =gPlayerState
|
||||
ldr r0, [r0, #0x30]
|
||||
movs r1, #0x80
|
||||
ands r0, r1
|
||||
b _080786D0
|
||||
.align 2, 0
|
||||
_080786C0: .4byte gPlayerState
|
||||
_080786C4:
|
||||
ldrb r0, [r5, #3]
|
||||
b _080786D0
|
||||
_080786C8:
|
||||
movs r0, #1
|
||||
b _080786CE
|
||||
_080786CC:
|
||||
movs r0, #2
|
||||
_080786CE:
|
||||
ands r0, r7
|
||||
_080786D0:
|
||||
cmp r0, #0
|
||||
beq _08078714
|
||||
_080786D4:
|
||||
ldr r0, [r5, #8]
|
||||
movs r1, #0x2e
|
||||
ldrsh r3, [r0, r1]
|
||||
movs r2, #0x32
|
||||
ldrsh r4, [r0, r2]
|
||||
ldr r1, [r5, #4]
|
||||
cmp r1, #0
|
||||
beq _080786F4
|
||||
movs r0, #0
|
||||
ldrsb r0, [r1, r0]
|
||||
adds r3, r3, r0
|
||||
movs r0, #1
|
||||
ldrsb r0, [r1, r0]
|
||||
adds r4, r4, r0
|
||||
adds r2, r1, #2
|
||||
b _080786F8
|
||||
_080786F4:
|
||||
ldr r0, [r0, #0x48]
|
||||
adds r2, r0, #6
|
||||
_080786F8:
|
||||
ldrb r1, [r2]
|
||||
mov r5, sl
|
||||
adds r0, r1, r5
|
||||
subs r0, r0, r3
|
||||
lsls r1, r1, #1
|
||||
cmp r0, r1
|
||||
bhs _08078714
|
||||
ldrb r1, [r2, #1]
|
||||
mov r2, sb
|
||||
adds r0, r1, r2
|
||||
subs r0, r0, r4
|
||||
lsls r1, r1, #1
|
||||
cmp r0, r1
|
||||
blo _0807873A
|
||||
_08078714:
|
||||
adds r6, #1
|
||||
cmp r6, #0x1f
|
||||
bhi _08078758
|
||||
lsls r0, r6, #1
|
||||
adds r0, r0, r6
|
||||
lsls r0, r0, #2
|
||||
ldr r3, _08078754 @ =gInteractableObjects
|
||||
adds r5, r0, r3
|
||||
_08078724:
|
||||
ldr r2, [r5, #8]
|
||||
cmp r2, #0
|
||||
beq _08078714
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x39
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
blt _0807873A
|
||||
b _08078630
|
||||
_0807873A:
|
||||
cmp r6, #0x1f
|
||||
bhi _08078758
|
||||
mov r5, r8
|
||||
strb r6, [r5, #3]
|
||||
lsls r0, r6, #1
|
||||
adds r0, r0, r6
|
||||
lsls r0, r0, #2
|
||||
mov r1, r8
|
||||
adds r1, #8
|
||||
adds r0, r0, r1
|
||||
str r0, [r5, #4]
|
||||
b _08078762
|
||||
.align 2, 0
|
||||
_08078754: .4byte gInteractableObjects
|
||||
_08078758:
|
||||
movs r0, #0xff
|
||||
mov r1, r8
|
||||
strb r0, [r1, #3]
|
||||
ldr r0, _08078774 @ =gNoInteraction
|
||||
str r0, [r1, #4]
|
||||
_08078762:
|
||||
movs r0, #1
|
||||
mov r2, r8
|
||||
strb r0, [r2]
|
||||
ldr r0, [r2, #4]
|
||||
_0807876A:
|
||||
pop {r3, r4, r5}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
mov sl, r5
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_08078774: .4byte gNoInteraction
|
||||
.syntax divided
|
||||
@@ -1,116 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
ldr r1, _080789BC @ =gCarriedEntity
|
||||
ldrb r0, [r1]
|
||||
cmp r0, #0
|
||||
beq _080789C0
|
||||
ldrb r0, [r1, #1]
|
||||
b _08078A88
|
||||
.align 2, 0
|
||||
_080789BC: .4byte gCarriedEntity
|
||||
_080789C0:
|
||||
ldr r0, _08078A5C @ =gPlayerState
|
||||
ldr r0, [r0, #0x30]
|
||||
movs r1, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08078A56
|
||||
ldr r0, _08078A60 @ =gPlayerEntity
|
||||
bl GetCollisionDataAtEntity
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0xf
|
||||
bls _080789E6
|
||||
ldr r0, _08078A64 @ =gUnk_080084BC
|
||||
adds r1, r4, #0
|
||||
subs r1, #0x10
|
||||
adds r1, r1, r0
|
||||
ldrb r0, [r1]
|
||||
cmp r0, #0xf
|
||||
beq _08078A56
|
||||
_080789E6:
|
||||
ldr r0, _08078A5C @ =gPlayerState
|
||||
ldrb r0, [r0, #0x12]
|
||||
cmp r0, #0x12
|
||||
beq _08078A56
|
||||
ldr r3, _08078A68 @ =gCarriedEntity
|
||||
movs r0, #1
|
||||
strb r0, [r3]
|
||||
ldrb r4, [r3, #2]
|
||||
cmp r4, #0
|
||||
beq _08078A2E
|
||||
ldr r2, _08078A60 @ =gPlayerEntity
|
||||
ldrb r1, [r2, #0x14]
|
||||
movs r0, #6
|
||||
ands r0, r1
|
||||
ldr r1, _08078A6C @ =gUnk_0811BFE0
|
||||
adds r6, r0, r1
|
||||
adds r7, r2, #0
|
||||
adds r3, #8
|
||||
mov r8, r3
|
||||
_08078A0C:
|
||||
lsls r0, r4, #2
|
||||
mov r1, r8
|
||||
adds r5, r0, r1
|
||||
ldr r1, [r5]
|
||||
cmp r1, #0
|
||||
beq _08078A26
|
||||
ldrb r2, [r6]
|
||||
ldrb r3, [r6, #1]
|
||||
adds r0, r7, #0
|
||||
bl sub_0807A180
|
||||
cmp r0, #0
|
||||
bne _08078A74
|
||||
_08078A26:
|
||||
subs r4, #1
|
||||
ldr r7, _08078A60 @ =gPlayerEntity
|
||||
cmp r4, #0
|
||||
bne _08078A0C
|
||||
_08078A2E:
|
||||
ldr r0, _08078A60 @ =gPlayerEntity
|
||||
ldrb r1, [r0, #0x14]
|
||||
movs r2, #6
|
||||
ands r2, r1
|
||||
ldr r1, _08078A70 @ =gUnk_08007DF4
|
||||
adds r2, r2, r1
|
||||
movs r1, #0
|
||||
ldrsb r1, [r2, r1]
|
||||
ldrb r2, [r2, #1]
|
||||
lsls r2, r2, #0x18
|
||||
asrs r2, r2, #0x18
|
||||
bl sub_080B1A0C
|
||||
ldr r4, _08078A68 @ =gCarriedEntity
|
||||
strh r0, [r4, #4]
|
||||
movs r1, #6
|
||||
bl sub_0806FC24
|
||||
cmp r0, #0
|
||||
bne _08078A84
|
||||
_08078A56:
|
||||
movs r0, #0
|
||||
b _08078A88
|
||||
.align 2, 0
|
||||
_08078A5C: .4byte gPlayerState
|
||||
_08078A60: .4byte gPlayerEntity
|
||||
_08078A64: .4byte gUnk_080084BC
|
||||
_08078A68: .4byte gCarriedEntity
|
||||
_08078A6C: .4byte gUnk_0811BFE0
|
||||
_08078A70: .4byte gUnk_08007DF4
|
||||
_08078A74:
|
||||
mov r0, r8
|
||||
subs r0, #8
|
||||
ldr r1, [r5]
|
||||
str r1, [r0, #8]
|
||||
movs r1, #2
|
||||
strb r1, [r0, #1]
|
||||
movs r0, #2
|
||||
b _08078A88
|
||||
_08078A84:
|
||||
movs r0, #1
|
||||
strb r0, [r4, #1]
|
||||
_08078A88:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
@@ -1,139 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, lr}
|
||||
ldr r5, _08079344 @ =gPlayerEntity
|
||||
adds r3, r5, #0
|
||||
adds r3, #0x42
|
||||
ldrb r0, [r3]
|
||||
cmp r0, #0
|
||||
beq _080793E0
|
||||
ldrb r2, [r5, #0xc]
|
||||
cmp r2, #0xb
|
||||
beq _08079338
|
||||
ldr r0, _08079348 @ =gPlayerState
|
||||
ldrb r1, [r0, #0x1e]
|
||||
adds r6, r0, #0
|
||||
cmp r1, #0
|
||||
bne _08079338
|
||||
ldrb r0, [r6, #5]
|
||||
subs r0, #1
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
cmp r0, #3
|
||||
bls _08079338
|
||||
ldrb r0, [r6, #2]
|
||||
cmp r0, #0
|
||||
bne _08079338
|
||||
ldrb r0, [r6, #0x12]
|
||||
cmp r0, #0xff
|
||||
beq _08079338
|
||||
ldrb r1, [r6, #7]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08079338
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x26
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0xf
|
||||
ands r0, r1
|
||||
subs r0, #1
|
||||
cmp r0, #0
|
||||
bgt _08079338
|
||||
cmp r2, #3
|
||||
beq _08079338
|
||||
ldr r1, [r6, #0x30]
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #0xb
|
||||
ands r1, r0
|
||||
cmp r1, #0
|
||||
beq _0807934C
|
||||
_08079338:
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x42
|
||||
movs r0, #0
|
||||
strb r0, [r1]
|
||||
b _080793E0
|
||||
.align 2, 0
|
||||
_08079344: .4byte gPlayerEntity
|
||||
_08079348: .4byte gPlayerState
|
||||
_0807934C:
|
||||
cmp r2, #0x1d
|
||||
bne _0807935E
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x3e
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0x10
|
||||
beq _0807935E
|
||||
strb r1, [r3]
|
||||
b _080793E0
|
||||
_0807935E:
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x42
|
||||
ldrb r3, [r0]
|
||||
movs r1, #0
|
||||
ldrsb r1, [r0, r1]
|
||||
adds r2, r0, #0
|
||||
cmp r1, #0
|
||||
ble _08079372
|
||||
subs r0, r3, #1
|
||||
b _08079374
|
||||
_08079372:
|
||||
adds r0, r3, #1
|
||||
_08079374:
|
||||
strb r0, [r2]
|
||||
ldrb r0, [r2]
|
||||
cmp r0, #0
|
||||
beq _080793E0
|
||||
adds r4, r6, #0
|
||||
ldrb r0, [r4, #7]
|
||||
movs r1, #0xdf
|
||||
ands r1, r0
|
||||
strb r1, [r4, #7]
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x3d
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
ble _080793CA
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x26
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _080793CA
|
||||
ldr r0, [r4, #0x30]
|
||||
movs r1, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _080793CA
|
||||
ldrb r0, [r4, #2]
|
||||
cmp r0, #0
|
||||
bne _080793CA
|
||||
bl ResetActiveItems
|
||||
ldr r0, [r4, #0x30]
|
||||
movs r1, #8
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _080793C4
|
||||
movs r0, #0x8a
|
||||
lsls r0, r0, #1
|
||||
strh r0, [r4, #8]
|
||||
b _080793CA
|
||||
_080793C4:
|
||||
movs r0, #0x83
|
||||
lsls r0, r0, #3
|
||||
strh r0, [r6, #8]
|
||||
_080793CA:
|
||||
movs r1, #0xa0
|
||||
lsls r1, r1, #2
|
||||
adds r4, r5, #0
|
||||
adds r4, #0x3e
|
||||
ldrb r2, [r4]
|
||||
adds r0, r5, #0
|
||||
bl sub_080027EA
|
||||
ldrb r0, [r4]
|
||||
bl sub_0807A5B8
|
||||
_080793E0:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
@@ -1,257 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
mov r5, r8
|
||||
push {r5, r6, r7}
|
||||
sub sp, #4
|
||||
adds r4, r0, #0
|
||||
ldr r0, _0807A364 @ =gRoomControls
|
||||
mov r8, r0
|
||||
ldrb r0, [r0, #4]
|
||||
cmp r0, #8
|
||||
bne _0807A312
|
||||
b _0807A4F2
|
||||
_0807A312:
|
||||
bl sub_08079778
|
||||
orrs r0, r4
|
||||
cmp r0, #0
|
||||
bne _0807A31E
|
||||
b _0807A4F2
|
||||
_0807A31E:
|
||||
ldr r7, _0807A368 @ =gPlayerEntity
|
||||
ldrb r1, [r7, #0x14]
|
||||
movs r0, #2
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0807A36C
|
||||
movs r1, #0x2e
|
||||
ldrsh r2, [r7, r1]
|
||||
mov r6, r8
|
||||
ldrh r0, [r6, #6]
|
||||
subs r2, r2, r0
|
||||
asrs r2, r2, #4
|
||||
movs r3, #0x3f
|
||||
ands r2, r3
|
||||
movs r0, #0x32
|
||||
ldrsh r1, [r7, r0]
|
||||
ldr r0, [r7, #0x48]
|
||||
ldrb r5, [r0, #5]
|
||||
adds r0, r1, r5
|
||||
ldrh r4, [r6, #8]
|
||||
subs r0, r0, r4
|
||||
asrs r0, r0, #4
|
||||
ands r0, r3
|
||||
lsls r0, r0, #6
|
||||
orrs r0, r2
|
||||
lsls r7, r0, #1
|
||||
subs r1, r1, r5
|
||||
subs r1, r1, r4
|
||||
asrs r1, r1, #4
|
||||
ands r1, r3
|
||||
lsls r1, r1, #6
|
||||
orrs r2, r1
|
||||
lsls r6, r2, #1
|
||||
b _0807A3A2
|
||||
.align 2, 0
|
||||
_0807A364: .4byte gRoomControls
|
||||
_0807A368: .4byte gPlayerEntity
|
||||
_0807A36C:
|
||||
movs r1, #0x2e
|
||||
ldrsh r3, [r7, r1]
|
||||
ldr r0, [r7, #0x48]
|
||||
ldrb r6, [r0, #2]
|
||||
adds r1, r3, r6
|
||||
mov r2, r8
|
||||
ldrh r5, [r2, #6]
|
||||
subs r1, r1, r5
|
||||
asrs r1, r1, #4
|
||||
movs r4, #0x3f
|
||||
ands r1, r4
|
||||
movs r2, #0x32
|
||||
ldrsh r0, [r7, r2]
|
||||
mov r7, r8
|
||||
ldrh r2, [r7, #8]
|
||||
subs r0, r0, r2
|
||||
asrs r0, r0, #4
|
||||
ands r0, r4
|
||||
lsls r0, r0, #6
|
||||
orrs r1, r0
|
||||
lsls r7, r1, #1
|
||||
subs r3, r3, r6
|
||||
subs r3, r3, r5
|
||||
asrs r3, r3, #4
|
||||
ands r3, r4
|
||||
orrs r3, r0
|
||||
lsls r6, r3, #1
|
||||
_0807A3A2:
|
||||
movs r0, #0
|
||||
mov sb, r0
|
||||
ldr r1, _0807A3F4 @ =gPlayerEntity
|
||||
mov sl, r1
|
||||
_0807A3AA:
|
||||
movs r2, #0
|
||||
mov r8, r2
|
||||
mov r0, sl
|
||||
mov r1, sp
|
||||
adds r2, r7, #0
|
||||
bl sub_08004202
|
||||
adds r7, r0, #0
|
||||
lsrs r4, r7, #1
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
bl GetCollisionDataAtMetaTilePos
|
||||
cmp r0, #0
|
||||
beq _0807A3FC
|
||||
lsls r0, r4, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
mov r1, sl
|
||||
adds r1, #0x38
|
||||
ldrb r1, [r1]
|
||||
bl GetVvvAtMetaTilePos
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
mov r2, sl
|
||||
ldrb r1, [r2, #0x14]
|
||||
lsrs r1, r1, #1
|
||||
lsls r1, r1, #2
|
||||
ldr r2, _0807A3F8 @ =gUnk_0811C1D8
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl FindValueForKey
|
||||
cmp r0, #0
|
||||
beq _0807A468
|
||||
b _0807A400
|
||||
.align 2, 0
|
||||
_0807A3F4: .4byte gPlayerEntity
|
||||
_0807A3F8: .4byte gUnk_0811C1D8
|
||||
_0807A3FC:
|
||||
movs r0, #1
|
||||
mov r8, r0
|
||||
_0807A400:
|
||||
ldr r5, _0807A444 @ =gPlayerEntity
|
||||
adds r0, r5, #0
|
||||
mov r1, sp
|
||||
adds r2, r6, #0
|
||||
bl sub_08004202
|
||||
adds r6, r0, #0
|
||||
lsrs r4, r6, #1
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
bl GetCollisionDataAtMetaTilePos
|
||||
cmp r0, #0
|
||||
beq _0807A44C
|
||||
lsls r0, r4, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x38
|
||||
ldrb r1, [r1]
|
||||
bl GetVvvAtMetaTilePos
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
ldrb r1, [r5, #0x14]
|
||||
lsrs r1, r1, #1
|
||||
lsls r1, r1, #2
|
||||
ldr r2, _0807A448 @ =gUnk_0811C1D8
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl FindValueForKey
|
||||
cmp r0, #0
|
||||
beq _0807A468
|
||||
b _0807A450
|
||||
.align 2, 0
|
||||
_0807A444: .4byte gPlayerEntity
|
||||
_0807A448: .4byte gUnk_0811C1D8
|
||||
_0807A44C:
|
||||
movs r0, #1
|
||||
add r8, r0
|
||||
_0807A450:
|
||||
mov r1, r8
|
||||
cmp r1, #2
|
||||
bne _0807A45E
|
||||
mov r2, sb
|
||||
cmp r2, #0
|
||||
bne _0807A46E
|
||||
b _0807A4F2
|
||||
_0807A45E:
|
||||
movs r0, #1
|
||||
add sb, r0
|
||||
mov r1, sb
|
||||
cmp r1, #1
|
||||
bls _0807A3AA
|
||||
_0807A468:
|
||||
mov r2, sb
|
||||
cmp r2, #0
|
||||
beq _0807A4F2
|
||||
_0807A46E:
|
||||
bl AreaIsDungeon
|
||||
cmp r0, #0
|
||||
beq _0807A4B0
|
||||
ldr r4, _0807A4AC @ =gPlayerEntity
|
||||
adds r0, r4, #0
|
||||
mov r1, sp
|
||||
adds r2, r7, #0
|
||||
bl sub_08004202
|
||||
adds r7, r0, #0
|
||||
lsrs r0, r7, #1
|
||||
movs r1, #2
|
||||
bl GetCollisionDataAtMetaTilePos
|
||||
cmp r0, #0
|
||||
bne _0807A4F2
|
||||
adds r0, r4, #0
|
||||
mov r1, sp
|
||||
adds r2, r6, #0
|
||||
bl sub_08004202
|
||||
adds r6, r0, #0
|
||||
lsrs r0, r6, #1
|
||||
movs r1, #2
|
||||
_0807A4A0:
|
||||
bl GetCollisionDataAtMetaTilePos
|
||||
cmp r0, #0
|
||||
beq _0807A4EC
|
||||
b _0807A4F2
|
||||
.align 2, 0
|
||||
_0807A4AC: .4byte gPlayerEntity
|
||||
_0807A4B0:
|
||||
mov r0, sb
|
||||
cmp r0, #2
|
||||
bne _0807A4C2
|
||||
ldr r0, _0807A4E8 @ =gPlayerEntity
|
||||
mov r1, sp
|
||||
adds r2, r7, #0
|
||||
bl sub_08004202
|
||||
adds r7, r0, #0
|
||||
_0807A4C2:
|
||||
lsrs r0, r7, #1
|
||||
movs r1, #1
|
||||
bl GetCollisionDataAtMetaTilePos
|
||||
cmp r0, #0
|
||||
bne _0807A4F2
|
||||
mov r1, sb
|
||||
cmp r1, #2
|
||||
bne _0807A4E0
|
||||
ldr r0, _0807A4E8 @ =gPlayerEntity
|
||||
mov r1, sp
|
||||
adds r2, r6, #0
|
||||
bl sub_08004202
|
||||
adds r6, r0, #0
|
||||
_0807A4E0:
|
||||
lsrs r0, r6, #1
|
||||
movs r1, #1
|
||||
b _0807A4A0
|
||||
.align 2, 0
|
||||
_0807A4E8: .4byte gPlayerEntity
|
||||
_0807A4EC:
|
||||
mov r0, sb
|
||||
adds r0, #1
|
||||
b _0807A4F4
|
||||
_0807A4F2:
|
||||
movs r0, #0
|
||||
_0807A4F4:
|
||||
add sp, #4
|
||||
pop {r3, r4, r5}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
mov sl, r5
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.syntax divided
|
||||
@@ -1,123 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
bl ClearBgAnimations
|
||||
bl sub_0807BFA8
|
||||
ldr r7, _0807C0B8 @ =0x0000FFFF
|
||||
ldr r6, _0807C0BC @ =gMapBottom+0x5004
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #5
|
||||
mov r8, r0
|
||||
adds r0, r7, #0
|
||||
adds r1, r6, #0
|
||||
mov r2, r8
|
||||
bl MemFill16
|
||||
movs r5, #0
|
||||
strh r5, [r6]
|
||||
ldr r4, _0807C0C0 @ =gMapTop+0x5004
|
||||
adds r0, r7, #0
|
||||
adds r1, r4, #0
|
||||
mov r2, r8
|
||||
bl MemFill16
|
||||
strh r5, [r4]
|
||||
ldr r2, _0807C0C4 @ =gRoomControls
|
||||
ldr r0, _0807C0C8 @ =gArea
|
||||
ldr r1, _0807C0CC @ =0x0000085C
|
||||
adds r4, r0, r1
|
||||
ldr r0, [r4]
|
||||
ldr r1, [r2, #0x34]
|
||||
ldr r0, [r0, #8]
|
||||
cmp r1, r0
|
||||
beq _0807C01C
|
||||
str r0, [r2, #0x34]
|
||||
bl LoadMapData
|
||||
_0807C01C:
|
||||
ldr r0, [r4]
|
||||
ldr r0, [r0, #0x10]
|
||||
bl LoadMapData
|
||||
ldr r1, _0807C0D0 @ =gPaletteBuffer
|
||||
adds r0, r1, #0
|
||||
adds r0, #0x60
|
||||
movs r2, #0xa8
|
||||
lsls r2, r2, #2
|
||||
adds r1, r1, r2
|
||||
movs r2, #0x20
|
||||
bl MemCopy
|
||||
ldr r2, _0807C0D4 @ =gUsedPalettes
|
||||
ldr r0, [r2]
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #0xe
|
||||
orrs r0, r1
|
||||
str r0, [r2]
|
||||
ldr r0, [r4]
|
||||
ldr r0, [r0, #0x14]
|
||||
cmp r0, #0
|
||||
beq _0807C04E
|
||||
bl LoadBgAnimations
|
||||
_0807C04E:
|
||||
adds r5, r6, #0
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #5
|
||||
adds r6, r5, r0
|
||||
adds r0, r7, #0
|
||||
adds r1, r6, #0
|
||||
mov r2, r8
|
||||
bl MemFill16
|
||||
movs r2, #0
|
||||
ldr r3, _0807C0D8 @ =0x000007FF
|
||||
adds r4, r7, #0
|
||||
_0807C066:
|
||||
ldrh r0, [r5]
|
||||
cmp r0, r3
|
||||
bhi _0807C078
|
||||
lsls r0, r0, #1
|
||||
adds r1, r0, r6
|
||||
ldrh r0, [r1]
|
||||
cmp r0, r4
|
||||
bne _0807C078
|
||||
strh r2, [r1]
|
||||
_0807C078:
|
||||
adds r2, #1
|
||||
adds r5, #2
|
||||
cmp r2, r3
|
||||
ble _0807C066
|
||||
movs r2, #0x80
|
||||
lsls r2, r2, #5
|
||||
ldr r5, _0807C0C0 @ =gMapTop+0x5004
|
||||
adds r6, r5, r2
|
||||
ldr r4, _0807C0B8 @ =0x0000FFFF
|
||||
adds r0, r4, #0
|
||||
adds r1, r6, #0
|
||||
bl MemFill16
|
||||
movs r2, #0
|
||||
ldr r3, _0807C0D8 @ =0x000007FF
|
||||
_0807C096:
|
||||
ldrh r0, [r5]
|
||||
cmp r0, r3
|
||||
bhi _0807C0A8
|
||||
lsls r0, r0, #1
|
||||
adds r1, r0, r6
|
||||
ldrh r0, [r1]
|
||||
cmp r0, r4
|
||||
bne _0807C0A8
|
||||
strh r2, [r1]
|
||||
_0807C0A8:
|
||||
adds r2, #1
|
||||
adds r5, #2
|
||||
cmp r2, r3
|
||||
ble _0807C096
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_0807C0B8: .4byte 0x0000FFFF
|
||||
_0807C0BC: .4byte gMapBottom+0x5004
|
||||
_0807C0C0: .4byte gMapTop+0x5004
|
||||
_0807C0C4: .4byte gRoomControls
|
||||
_0807C0C8: .4byte gArea
|
||||
_0807C0CC: .4byte 0x0000085C
|
||||
_0807C0D0: .4byte gPaletteBuffer
|
||||
_0807C0D4: .4byte gUsedPalettes
|
||||
_0807C0D8: .4byte 0x000007FF
|
||||
.syntax divided
|
||||
@@ -1,98 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
push {r6, r7}
|
||||
mov r8, r0
|
||||
adds r4, r1, #0
|
||||
mov ip, r2
|
||||
mov r0, ip
|
||||
muls r0, r4, r0
|
||||
lsls r0, r0, #1
|
||||
add r0, r8
|
||||
subs r7, r0, #2
|
||||
mov r0, ip
|
||||
subs r0, #1
|
||||
lsls r0, r0, #7
|
||||
add r0, r8
|
||||
lsls r3, r4, #1
|
||||
subs r1, r3, #2
|
||||
adds r0, r0, r1
|
||||
movs r5, #0
|
||||
cmp r5, ip
|
||||
bhs _0807C906
|
||||
mov sb, r3
|
||||
_0807C8DE:
|
||||
movs r2, #0
|
||||
adds r6, r0, #0
|
||||
subs r6, #0x80
|
||||
cmp r2, r4
|
||||
bhs _0807C8FA
|
||||
adds r1, r7, #0
|
||||
adds r3, r0, #0
|
||||
_0807C8EC:
|
||||
ldrh r0, [r1]
|
||||
strh r0, [r3]
|
||||
subs r1, #2
|
||||
subs r3, #2
|
||||
adds r2, #1
|
||||
cmp r2, r4
|
||||
blo _0807C8EC
|
||||
_0807C8FA:
|
||||
adds r0, r6, #0
|
||||
mov r1, sb
|
||||
subs r7, r7, r1
|
||||
adds r5, #1
|
||||
cmp r5, ip
|
||||
blo _0807C8DE
|
||||
_0807C906:
|
||||
movs r0, #0x40
|
||||
subs r6, r0, r4
|
||||
movs r5, #0
|
||||
lsls r0, r4, #1
|
||||
mov r2, ip
|
||||
lsls r7, r2, #7
|
||||
mov r2, r8
|
||||
adds r1, r2, r0
|
||||
_0807C916:
|
||||
lsls r0, r5, #7
|
||||
adds r0, r1, r0
|
||||
movs r2, #0
|
||||
adds r3, r5, #1
|
||||
cmp r2, r6
|
||||
bhs _0807C92E
|
||||
movs r4, #0
|
||||
_0807C924:
|
||||
strh r4, [r0]
|
||||
adds r0, #2
|
||||
adds r2, #1
|
||||
cmp r2, r6
|
||||
blo _0807C924
|
||||
_0807C92E:
|
||||
adds r5, r3, #0
|
||||
cmp r5, #0x3f
|
||||
bls _0807C916
|
||||
movs r0, #0x40
|
||||
mov r1, ip
|
||||
subs r6, r0, r1
|
||||
mov r2, r8
|
||||
adds r0, r2, r7
|
||||
movs r5, #0
|
||||
cmp r5, r6
|
||||
bhs _0807C956
|
||||
adds r4, r0, #0
|
||||
_0807C946:
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x80
|
||||
bl MemClear
|
||||
adds r4, #0x80
|
||||
adds r5, #1
|
||||
cmp r5, r6
|
||||
blo _0807C946
|
||||
_0807C956:
|
||||
pop {r3, r4}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
@@ -1,290 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
mov r5, r8
|
||||
push {r5, r6, r7}
|
||||
sub sp, #0x38
|
||||
ldr r1, _080804F0 @ =gRoomControls
|
||||
movs r2, #0xa
|
||||
ldrsh r0, [r1, r2]
|
||||
ldrh r2, [r1, #6]
|
||||
subs r0, r0, r2
|
||||
str r0, [sp, #0x18]
|
||||
ldr r3, [r1, #0x30]
|
||||
movs r4, #0x2e
|
||||
ldrsh r0, [r3, r4]
|
||||
subs r0, r0, r2
|
||||
str r0, [sp, #0x10]
|
||||
movs r2, #0xc
|
||||
ldrsh r0, [r1, r2]
|
||||
ldrh r1, [r1, #8]
|
||||
subs r0, r0, r1
|
||||
str r0, [sp, #0x1c]
|
||||
movs r4, #0x32
|
||||
ldrsh r0, [r3, r4]
|
||||
subs r0, r0, r1
|
||||
str r0, [sp, #0x14]
|
||||
movs r0, #0x3c
|
||||
str r0, [sp, #8]
|
||||
_08080408:
|
||||
movs r7, #0
|
||||
ldr r1, [sp, #8]
|
||||
adds r1, #6
|
||||
str r1, [sp, #8]
|
||||
adds r2, r1, #0
|
||||
muls r2, r1, r2
|
||||
mov sl, r2
|
||||
lsls r4, r1, #1
|
||||
adds r0, r4, #0
|
||||
movs r1, #3
|
||||
bl __divsi3
|
||||
str r0, [sp, #0xc]
|
||||
adds r1, r0, #0
|
||||
muls r1, r0, r1
|
||||
mov sb, r1
|
||||
movs r2, #0
|
||||
str r2, [sp, #4]
|
||||
rsbs r4, r4, #0
|
||||
adds r4, #1
|
||||
mov r0, sb
|
||||
muls r0, r4, r0
|
||||
mov r4, sl
|
||||
lsls r5, r4, #1
|
||||
adds r4, r0, r5
|
||||
ldr r0, [sp, #8]
|
||||
mov r6, sb
|
||||
muls r6, r0, r6
|
||||
adds r0, r6, #0
|
||||
mov r1, sl
|
||||
bl __divsi3
|
||||
adds r2, r0, #0
|
||||
cmp r7, r2
|
||||
bgt _08080506
|
||||
ldr r1, [sp, #0x18]
|
||||
adds r1, #0xf8
|
||||
str r1, [sp, #0x20]
|
||||
mov r1, sl
|
||||
adds r0, r5, r1
|
||||
lsls r3, r0, #1
|
||||
str r6, [sp, #0x2c]
|
||||
ldr r0, [sp, #8]
|
||||
lsls r1, r0, #2
|
||||
rsbs r1, r1, #0
|
||||
adds r1, #4
|
||||
mov r8, r1
|
||||
rsbs r0, r0, #0
|
||||
adds r0, #8
|
||||
ldr r1, [sp, #0x10]
|
||||
adds r6, r0, r1
|
||||
ldr r0, [sp, #8]
|
||||
adds r5, r0, r1
|
||||
mov r0, r8
|
||||
mov r1, sb
|
||||
muls r1, r0, r1
|
||||
mov r8, r1
|
||||
_0808047A:
|
||||
ldr r1, [sp, #0x1c]
|
||||
adds r1, #0xa8
|
||||
mov ip, r1
|
||||
ldr r0, [sp, #0x14]
|
||||
ldr r1, [sp, #4]
|
||||
adds r0, r0, r1
|
||||
str r0, [sp, #0x34]
|
||||
cmp ip, r0
|
||||
ble _080804A0
|
||||
ldr r0, [sp, #0x20]
|
||||
cmp r0, r5
|
||||
ble _08080496
|
||||
movs r0, #1
|
||||
orrs r7, r0
|
||||
_08080496:
|
||||
ldr r1, [sp, #0x18]
|
||||
cmp r1, r6
|
||||
bge _080804A0
|
||||
movs r0, #2
|
||||
orrs r7, r0
|
||||
_080804A0:
|
||||
ldr r0, [sp, #0x14]
|
||||
ldr r1, [sp, #4]
|
||||
subs r0, r0, r1
|
||||
mov ip, r0
|
||||
adds r0, #8
|
||||
ldr r1, [sp, #0x1c]
|
||||
cmp r1, r0
|
||||
bge _080804C4
|
||||
ldr r0, [sp, #0x20]
|
||||
cmp r0, r5
|
||||
ble _080804BA
|
||||
movs r0, #4
|
||||
orrs r7, r0
|
||||
_080804BA:
|
||||
ldr r1, [sp, #0x18]
|
||||
cmp r1, r6
|
||||
bge _080804C4
|
||||
movs r0, #8
|
||||
orrs r7, r0
|
||||
_080804C4:
|
||||
cmp r4, #0
|
||||
ble _080804F4
|
||||
mov r2, r8
|
||||
adds r0, r2, r3
|
||||
adds r4, r4, r0
|
||||
ldr r0, [sp, #0x2c]
|
||||
mov r1, sb
|
||||
subs r0, r0, r1
|
||||
str r0, [sp, #0x2c]
|
||||
lsls r0, r1, #2
|
||||
add r8, r0
|
||||
adds r6, #1
|
||||
subs r5, #1
|
||||
ldr r0, [sp, #0x2c]
|
||||
mov r1, sl
|
||||
str r3, [sp, #0x30]
|
||||
bl __divsi3
|
||||
adds r2, r0, #0
|
||||
ldr r3, [sp, #0x30]
|
||||
b _080804F6
|
||||
.align 2, 0
|
||||
_080804F0: .4byte gRoomControls
|
||||
_080804F4:
|
||||
adds r4, r4, r3
|
||||
_080804F6:
|
||||
mov r1, sl
|
||||
lsls r0, r1, #2
|
||||
adds r3, r3, r0
|
||||
ldr r0, [sp, #4]
|
||||
adds r0, #1
|
||||
str r0, [sp, #4]
|
||||
cmp r0, r2
|
||||
ble _0808047A
|
||||
_08080506:
|
||||
movs r1, #0
|
||||
str r1, [sp]
|
||||
ldr r2, [sp, #0xc]
|
||||
str r2, [sp, #4]
|
||||
mov r4, sb
|
||||
lsls r6, r4, #1
|
||||
lsls r0, r2, #1
|
||||
rsbs r0, r0, #0
|
||||
adds r0, #1
|
||||
mov r1, sl
|
||||
muls r1, r0, r1
|
||||
adds r0, r1, #0
|
||||
adds r4, r6, r0
|
||||
mov r5, sl
|
||||
muls r5, r2, r5
|
||||
adds r0, r5, #0
|
||||
mov r1, sb
|
||||
bl __divsi3
|
||||
adds r2, r0, #0
|
||||
ldr r0, [sp]
|
||||
cmp r0, r2
|
||||
bgt _080805E4
|
||||
ldr r1, [sp, #0x18]
|
||||
adds r1, #0xf8
|
||||
str r1, [sp, #0x24]
|
||||
mov r1, sb
|
||||
adds r0, r6, r1
|
||||
lsls r0, r0, #1
|
||||
mov r8, r0
|
||||
ldr r3, [sp, #0x10]
|
||||
adds r3, #8
|
||||
ldr r6, [sp, #0x10]
|
||||
str r5, [sp, #0x28]
|
||||
ldr r1, [sp, #4]
|
||||
lsls r0, r1, #2
|
||||
rsbs r0, r0, #0
|
||||
adds r0, #4
|
||||
mov r5, sl
|
||||
muls r5, r0, r5
|
||||
_08080556:
|
||||
ldr r0, [sp, #0x1c]
|
||||
adds r0, #0xa8
|
||||
mov ip, r0
|
||||
ldr r1, [sp, #0x14]
|
||||
ldr r0, [sp, #4]
|
||||
adds r1, r1, r0
|
||||
str r1, [sp, #0x34]
|
||||
cmp ip, r1
|
||||
ble _0808057C
|
||||
ldr r1, [sp, #0x24]
|
||||
cmp r1, r6
|
||||
ble _08080572
|
||||
movs r0, #0x10
|
||||
orrs r7, r0
|
||||
_08080572:
|
||||
ldr r0, [sp, #0x18]
|
||||
cmp r0, r3
|
||||
bge _0808057C
|
||||
movs r0, #0x20
|
||||
orrs r7, r0
|
||||
_0808057C:
|
||||
ldr r1, [sp, #0x14]
|
||||
ldr r0, [sp, #4]
|
||||
subs r1, r1, r0
|
||||
mov ip, r1
|
||||
mov r0, ip
|
||||
adds r0, #8
|
||||
ldr r1, [sp, #0x1c]
|
||||
cmp r1, r0
|
||||
bge _080805A2
|
||||
ldr r0, [sp, #0x24]
|
||||
cmp r0, r6
|
||||
ble _08080598
|
||||
movs r0, #0x40
|
||||
orrs r7, r0
|
||||
_08080598:
|
||||
ldr r1, [sp, #0x18]
|
||||
cmp r1, r3
|
||||
bge _080805A2
|
||||
movs r0, #0x80
|
||||
orrs r7, r0
|
||||
_080805A2:
|
||||
cmp r4, #0
|
||||
ble _080805CE
|
||||
mov r2, r8
|
||||
adds r0, r2, r5
|
||||
adds r4, r4, r0
|
||||
ldr r0, [sp, #0x28]
|
||||
mov r1, sl
|
||||
subs r0, r0, r1
|
||||
str r0, [sp, #0x28]
|
||||
lsls r0, r1, #2
|
||||
adds r5, r5, r0
|
||||
ldr r2, [sp, #4]
|
||||
subs r2, #1
|
||||
str r2, [sp, #4]
|
||||
ldr r0, [sp, #0x28]
|
||||
mov r1, sb
|
||||
str r3, [sp, #0x30]
|
||||
bl __divsi3
|
||||
adds r2, r0, #0
|
||||
ldr r3, [sp, #0x30]
|
||||
b _080805D0
|
||||
_080805CE:
|
||||
add r4, r8
|
||||
_080805D0:
|
||||
mov r1, sb
|
||||
lsls r0, r1, #2
|
||||
add r8, r0
|
||||
subs r3, #1
|
||||
adds r6, #1
|
||||
ldr r0, [sp]
|
||||
adds r0, #1
|
||||
str r0, [sp]
|
||||
cmp r0, r2
|
||||
ble _08080556
|
||||
_080805E4:
|
||||
cmp r7, #0
|
||||
beq _080805EA
|
||||
b _08080408
|
||||
_080805EA:
|
||||
ldr r0, [sp, #8]
|
||||
add sp, #0x38
|
||||
pop {r3, r4, r5}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
mov sl, r5
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.syntax divided
|
||||
@@ -1,138 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
mov r5, r8
|
||||
push {r5, r6, r7}
|
||||
mov sl, r0
|
||||
mov r8, r1
|
||||
lsls r0, r1, #4
|
||||
movs r1, #0xa0
|
||||
lsls r1, r1, #1
|
||||
adds r0, r0, r1
|
||||
mov ip, r0
|
||||
mov r2, sl
|
||||
lsls r0, r2, #4
|
||||
adds r3, r0, r1
|
||||
ldr r1, _080AE30C @ =gGFXSlots
|
||||
lsls r0, r2, #1
|
||||
add r0, sl
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldrb r0, [r0, #5]
|
||||
lsls r0, r0, #4
|
||||
adds r7, r3, r0
|
||||
movs r4, #0
|
||||
ldr r6, _080AE310 @ =gUnk_020000C0
|
||||
mov sb, r6
|
||||
ldr r0, _080AE314 @ =gPlayerEntity
|
||||
adds r2, r0, #0
|
||||
adds r2, #0x26
|
||||
adds r5, r0, #0
|
||||
_080AE254:
|
||||
ldr r0, [r5, #4]
|
||||
cmp r0, #0
|
||||
beq _080AE276
|
||||
ldrb r0, [r2]
|
||||
cmp sl, r0
|
||||
bne _080AE264
|
||||
mov r1, r8
|
||||
strb r1, [r2]
|
||||
_080AE264:
|
||||
ldrh r0, [r2, #0x3a]
|
||||
cmp r3, r0
|
||||
bhi _080AE276
|
||||
cmp r7, r0
|
||||
bls _080AE276
|
||||
subs r0, r0, r3
|
||||
mov r6, ip
|
||||
adds r1, r0, r6
|
||||
strh r1, [r2, #0x3a]
|
||||
_080AE276:
|
||||
adds r2, #0x88
|
||||
adds r5, #0x88
|
||||
adds r4, #1
|
||||
cmp r4, #0x4f
|
||||
bls _080AE254
|
||||
movs r0, #0
|
||||
_080AE282:
|
||||
movs r4, #0
|
||||
adds r1, r0, #1
|
||||
mov r8, r1
|
||||
lsls r5, r0, #6
|
||||
_080AE28A:
|
||||
lsls r0, r4, #4
|
||||
add r0, sb
|
||||
adds r2, r5, r0
|
||||
ldrb r1, [r2]
|
||||
movs r0, #1
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _080AE2B4
|
||||
movs r0, #2
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _080AE2B4
|
||||
ldrh r1, [r2, #0xa]
|
||||
cmp r3, r1
|
||||
bhi _080AE2B4
|
||||
cmp r7, r1
|
||||
bls _080AE2B4
|
||||
subs r0, r1, r3
|
||||
mov r6, ip
|
||||
adds r1, r0, r6
|
||||
strh r1, [r2, #0xa]
|
||||
_080AE2B4:
|
||||
adds r4, #1
|
||||
cmp r4, #3
|
||||
bls _080AE28A
|
||||
mov r0, r8
|
||||
cmp r0, #0x2f
|
||||
bls _080AE282
|
||||
movs r4, #0
|
||||
ldr r0, _080AE318 @ =0xFFFFFC00
|
||||
mov sl, r0
|
||||
ldr r5, _080AE31C @ =gOAMControls
|
||||
adds r5, #0x24
|
||||
ldr r1, _080AE320 @ =0x000003FF
|
||||
mov sb, r1
|
||||
movs r2, #1
|
||||
mov r8, r2
|
||||
_080AE2D2:
|
||||
ldrh r2, [r5]
|
||||
lsls r0, r2, #0x16
|
||||
lsrs r1, r0, #0x16
|
||||
cmp r3, r1
|
||||
bhi _080AE2F8
|
||||
cmp r7, r1
|
||||
bls _080AE2F8
|
||||
subs r0, r1, r3
|
||||
mov r6, ip
|
||||
adds r1, r0, r6
|
||||
mov r0, sb
|
||||
ands r1, r0
|
||||
mov r0, sl
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
strh r0, [r5]
|
||||
mov r2, r8
|
||||
ldr r1, _080AE31C @ =gOAMControls
|
||||
strb r2, [r1]
|
||||
_080AE2F8:
|
||||
adds r5, #8
|
||||
adds r4, #1
|
||||
cmp r4, #0x7f
|
||||
bls _080AE2D2
|
||||
pop {r3, r4, r5}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
mov sl, r5
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_080AE30C: .4byte gGFXSlots
|
||||
_080AE310: .4byte gUnk_020000C0
|
||||
_080AE314: .4byte gPlayerEntity
|
||||
_080AE318: .4byte 0xFFFFFC00
|
||||
_080AE31C: .4byte gOAMControls
|
||||
_080AE320: .4byte 0x000003FF
|
||||
.syntax divided
|
||||
@@ -1,570 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
@
|
||||
@ Please leave this file as a tutorial.
|
||||
@
|
||||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
|
||||
thumb_func_start EvilSpirit
|
||||
EvilSpirit: @ 0x08086284
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r1, _080862B4 @ =gUnk_08120668
|
||||
ldrb r0, [r4, #0xc]
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldr r1, [r0]
|
||||
adds r0, r4, #0
|
||||
bl _call_via_r1
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x41
|
||||
movs r0, #0
|
||||
strb r0, [r1]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x76
|
||||
ldrh r1, [r0]
|
||||
adds r0, #4
|
||||
ldrh r2, [r0]
|
||||
adds r0, r4, #0
|
||||
movs r3, #0
|
||||
bl SetAffineInfo
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_080862B4: .4byte gUnk_08120668
|
||||
|
||||
thumb_func_start sub_080862B8
|
||||
sub_080862B8: @ 0x080862B8
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
movs r0, #0x63
|
||||
bl CheckLocalFlag
|
||||
cmp r0, #0
|
||||
beq _080862CA
|
||||
bl DeleteThisEntity
|
||||
_080862CA:
|
||||
movs r3, #1
|
||||
strb r3, [r4, #0xc]
|
||||
ldr r1, _08086350 @ =gUnk_08120678
|
||||
ldrb r0, [r4, #0xa]
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
ldrh r0, [r0]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x7c
|
||||
strh r0, [r1]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x76
|
||||
strh r0, [r2]
|
||||
ldrh r0, [r1]
|
||||
subs r1, #2
|
||||
strh r0, [r1]
|
||||
ldrb r0, [r4, #0xa]
|
||||
cmp r0, #0
|
||||
bne _08086354
|
||||
adds r1, #6
|
||||
ldr r0, [r4, #0x2c]
|
||||
str r0, [r1]
|
||||
adds r1, #4
|
||||
ldr r0, [r4, #0x30]
|
||||
str r0, [r1]
|
||||
ldrb r1, [r4, #0x19]
|
||||
movs r0, #0x3f
|
||||
ands r0, r1
|
||||
strb r0, [r4, #0x19]
|
||||
str r4, [r4, #0x50]
|
||||
ldrb r0, [r4, #0x10]
|
||||
movs r1, #0x80
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x10]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x3c
|
||||
movs r0, #7
|
||||
strb r0, [r1]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x3f
|
||||
strb r3, [r0]
|
||||
subs r1, #1
|
||||
movs r0, #4
|
||||
strb r0, [r1]
|
||||
movs r2, #0
|
||||
_08086324:
|
||||
adds r5, r2, #1
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x18
|
||||
adds r2, r5, #0
|
||||
movs r3, #0
|
||||
bl CreateObjectWithParent
|
||||
adds r1, r0, #0
|
||||
str r1, [r4, #0x54]
|
||||
cmp r1, #0
|
||||
beq _08086346
|
||||
ldr r0, [r4, #0x50]
|
||||
str r0, [r1, #0x50]
|
||||
ldr r0, [r4, #0x54]
|
||||
str r4, [r0, #0x54]
|
||||
ldr r0, [r4, #0x54]
|
||||
str r0, [r4, #0x50]
|
||||
_08086346:
|
||||
adds r2, r5, #0
|
||||
cmp r2, #3
|
||||
bls _08086324
|
||||
b _08086360
|
||||
.align 2, 0
|
||||
_08086350: .4byte gUnk_08120678
|
||||
_08086354:
|
||||
ldrb r0, [r4, #0x19]
|
||||
movs r1, #0x3f
|
||||
ands r1, r0
|
||||
movs r0, #0x40
|
||||
orrs r1, r0
|
||||
strb r1, [r4, #0x19]
|
||||
_08086360:
|
||||
ldrb r1, [r4, #0xa]
|
||||
adds r0, r4, #0
|
||||
bl InitializeAnimation
|
||||
adds r0, r4, #0
|
||||
bl sub_08086370
|
||||
pop {r4, r5, pc}
|
||||
|
||||
thumb_func_start sub_08086370
|
||||
sub_08086370: @ 0x08086370
|
||||
push {r4, r5, r6, lr}
|
||||
adds r6, r0, #0
|
||||
ldrb r2, [r6, #0xa]
|
||||
cmp r2, #0
|
||||
beq _08086440
|
||||
ldr r0, [r6, #0x54]
|
||||
adds r0, #0x7f
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _080863B6
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x7c
|
||||
ldrh r0, [r1]
|
||||
adds r2, r6, #0
|
||||
adds r2, #0x76
|
||||
strh r0, [r2]
|
||||
ldrh r0, [r1]
|
||||
subs r1, #2
|
||||
strh r0, [r1]
|
||||
movs r0, #0xc0
|
||||
lsls r0, r0, #2
|
||||
strh r0, [r6, #0x24]
|
||||
ldr r2, [r6, #0x50]
|
||||
ldr r0, [r2, #0x2c]
|
||||
ldr r1, [r6, #0x2c]
|
||||
subs r0, r0, r1
|
||||
ldr r1, [r2, #0x30]
|
||||
ldr r2, [r6, #0x30]
|
||||
subs r1, r1, r2
|
||||
bl CalculateDirectionFromOffsets
|
||||
movs r1, #0x80
|
||||
eors r0, r1
|
||||
strb r0, [r6, #0x15]
|
||||
b _08086428
|
||||
_080863B6:
|
||||
movs r0, #0xc0
|
||||
lsls r0, r0, #3
|
||||
strh r0, [r6, #0x24]
|
||||
ldr r2, _080863E8 @ =gPlayerEntity
|
||||
ldr r0, [r2, #0x2c]
|
||||
ldr r1, [r6, #0x2c]
|
||||
subs r0, r0, r1
|
||||
ldr r1, [r2, #0x30]
|
||||
ldr r2, [r6, #0x30]
|
||||
subs r1, r1, r2
|
||||
bl CalculateDirectionFromOffsets
|
||||
adds r1, r0, #0
|
||||
movs r0, #0x80
|
||||
eors r1, r0
|
||||
ldrb r2, [r6, #0x15]
|
||||
cmp r1, r2
|
||||
beq _080863F0
|
||||
subs r0, r1, r2
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
cmp r0, #0x80
|
||||
bls _080863EC
|
||||
adds r0, r2, #3
|
||||
b _080863EE
|
||||
.align 2, 0
|
||||
_080863E8: .4byte gPlayerEntity
|
||||
_080863EC:
|
||||
subs r0, r2, #3
|
||||
_080863EE:
|
||||
strb r0, [r6, #0x15]
|
||||
_080863F0:
|
||||
ldr r0, _0808640C @ =gPlayerEntity
|
||||
ldrb r1, [r0, #0x14]
|
||||
movs r0, #2
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08086410
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x7c
|
||||
ldrh r0, [r0]
|
||||
adds r0, #0x40
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x76
|
||||
b _08086426
|
||||
.align 2, 0
|
||||
_0808640C: .4byte gPlayerEntity
|
||||
_08086410:
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x7c
|
||||
ldrh r1, [r0]
|
||||
subs r1, #0x20
|
||||
adds r2, r6, #0
|
||||
adds r2, #0x76
|
||||
strh r1, [r2]
|
||||
ldrh r0, [r0]
|
||||
adds r0, #0x50
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x7a
|
||||
_08086426:
|
||||
strh r0, [r1]
|
||||
_08086428:
|
||||
ldr r1, [r6, #0x50]
|
||||
ldr r0, [r1, #0x2c]
|
||||
str r0, [r6, #0x2c]
|
||||
ldr r0, [r1, #0x30]
|
||||
str r0, [r6, #0x30]
|
||||
movs r0, #0x24
|
||||
ldrsh r1, [r6, r0]
|
||||
ldrb r2, [r6, #0x15]
|
||||
adds r0, r6, #0
|
||||
bl LinearMoveAngle
|
||||
b _0808654A
|
||||
_08086440:
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x41
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
cmp r0, #0x13
|
||||
bne _08086498
|
||||
ldrb r0, [r6, #0x15]
|
||||
adds r0, #1
|
||||
strb r0, [r6, #0x15]
|
||||
ldrb r0, [r6, #0x1d]
|
||||
subs r0, #1
|
||||
strb r0, [r6, #0x1d]
|
||||
adds r2, r6, #0
|
||||
adds r2, #0x7f
|
||||
movs r0, #1
|
||||
strb r0, [r2]
|
||||
ldr r0, _08086480 @ =gPlayerEntity
|
||||
ldrb r1, [r0, #0x14]
|
||||
movs r0, #2
|
||||
ands r0, r1
|
||||
adds r3, r2, #0
|
||||
cmp r0, #0
|
||||
bne _08086484
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x7c
|
||||
ldrh r0, [r0]
|
||||
adds r0, #0x10
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x76
|
||||
strh r0, [r1]
|
||||
b _080864BC
|
||||
.align 2, 0
|
||||
_08086480: .4byte gPlayerEntity
|
||||
_08086484:
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x7c
|
||||
ldrh r0, [r1]
|
||||
subs r0, #0x20
|
||||
adds r2, r6, #0
|
||||
adds r2, #0x76
|
||||
strh r0, [r2]
|
||||
ldrh r0, [r1]
|
||||
adds r0, #0x30
|
||||
b _080864B6
|
||||
_08086498:
|
||||
ldrb r0, [r6, #0x15]
|
||||
adds r0, #2
|
||||
strb r0, [r6, #0x15]
|
||||
movs r0, #0xf0
|
||||
strb r0, [r6, #0x1d]
|
||||
adds r3, r6, #0
|
||||
adds r3, #0x7f
|
||||
strb r2, [r3]
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x7c
|
||||
ldrh r0, [r1]
|
||||
adds r2, r6, #0
|
||||
adds r2, #0x76
|
||||
strh r0, [r2]
|
||||
ldrh r0, [r1]
|
||||
_080864B6:
|
||||
subs r1, #2
|
||||
strh r0, [r1]
|
||||
adds r1, r2, #0
|
||||
_080864BC:
|
||||
ldrb r2, [r6, #0x1d]
|
||||
cmp r2, #0
|
||||
bne _080864CA
|
||||
movs r0, #2
|
||||
strb r0, [r6, #0xc]
|
||||
strb r2, [r3]
|
||||
b _0808654A
|
||||
_080864CA:
|
||||
ldrb r0, [r6, #0x15]
|
||||
adds r0, #0x40
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
blt _080864E0
|
||||
ldrh r2, [r1]
|
||||
movs r3, #0
|
||||
ldrsh r0, [r1, r3]
|
||||
cmp r0, #0
|
||||
ble _080864EE
|
||||
b _080864EA
|
||||
_080864E0:
|
||||
ldrh r2, [r1]
|
||||
movs r3, #0
|
||||
ldrsh r0, [r1, r3]
|
||||
cmp r0, #0
|
||||
bge _080864EE
|
||||
_080864EA:
|
||||
rsbs r0, r2, #0
|
||||
strh r0, [r1]
|
||||
_080864EE:
|
||||
ldr r5, _0808654C @ =gSineTable
|
||||
ldrb r0, [r6, #0x15]
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r5
|
||||
movs r1, #0
|
||||
ldrsh r0, [r0, r1]
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #6
|
||||
bl FixedMul
|
||||
lsls r0, r0, #0x10
|
||||
asrs r0, r0, #0x10
|
||||
movs r4, #0x80
|
||||
lsls r4, r4, #1
|
||||
adds r1, r4, #0
|
||||
bl FixedDiv
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x80
|
||||
lsls r0, r0, #0x10
|
||||
asrs r0, r0, #8
|
||||
ldr r1, [r1]
|
||||
adds r1, r1, r0
|
||||
str r1, [r6, #0x2c]
|
||||
ldrb r0, [r6, #0x15]
|
||||
adds r0, #0x40
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r5
|
||||
movs r3, #0
|
||||
ldrsh r0, [r0, r3]
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #5
|
||||
bl FixedMul
|
||||
lsls r0, r0, #0x10
|
||||
asrs r0, r0, #0x10
|
||||
adds r1, r4, #0
|
||||
bl FixedDiv
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x84
|
||||
lsls r0, r0, #0x10
|
||||
asrs r0, r0, #8
|
||||
ldr r1, [r1]
|
||||
subs r1, r1, r0
|
||||
str r1, [r6, #0x30]
|
||||
_0808654A:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_0808654C: .4byte gSineTable
|
||||
|
||||
thumb_func_start sub_08086550
|
||||
sub_08086550: @ 0x08086550
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, #0x41
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
cmp r0, #0x13
|
||||
beq _08086566
|
||||
movs r0, #3
|
||||
strb r0, [r4, #0xc]
|
||||
b _08086592
|
||||
_08086566:
|
||||
adds r0, r4, #0
|
||||
bl sub_0806F3E4
|
||||
cmp r0, #0
|
||||
beq _08086592
|
||||
movs r0, #0x63
|
||||
bl SetLocalFlag
|
||||
movs r0, #0
|
||||
bl SetRoomFlag
|
||||
movs r5, #0
|
||||
_0808657E:
|
||||
ldr r0, [r4, #0x54]
|
||||
ldr r1, [r0, #0x50]
|
||||
str r1, [r4, #0x54]
|
||||
bl DeleteEntity
|
||||
adds r5, #1
|
||||
cmp r5, #3
|
||||
bls _0808657E
|
||||
bl DeleteThisEntity
|
||||
_08086592:
|
||||
pop {r4, r5, pc}
|
||||
|
||||
thumb_func_start sub_08086594
|
||||
sub_08086594: @ 0x08086594
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r7, r0, #0
|
||||
adds r0, #0x80
|
||||
ldr r0, [r0]
|
||||
ldr r1, [r7, #0x2c]
|
||||
subs r0, r0, r1
|
||||
adds r1, r7, #0
|
||||
adds r1, #0x84
|
||||
ldr r1, [r1]
|
||||
ldr r2, [r7, #0x30]
|
||||
subs r1, r1, r2
|
||||
bl CalculateDirectionFromOffsets
|
||||
strb r0, [r7, #0x15]
|
||||
adds r0, r7, #0
|
||||
adds r0, #0x41
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
cmp r0, #0x13
|
||||
bne _08086608
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #1
|
||||
strh r0, [r7, #0x24]
|
||||
ldrb r0, [r7, #0x1d]
|
||||
subs r0, #1
|
||||
strb r0, [r7, #0x1d]
|
||||
adds r2, r7, #0
|
||||
adds r2, #0x7f
|
||||
movs r0, #1
|
||||
strb r0, [r2]
|
||||
ldr r0, _080865EC @ =gPlayerEntity
|
||||
ldrb r1, [r0, #0x14]
|
||||
movs r0, #2
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _080865F0
|
||||
adds r0, r7, #0
|
||||
adds r0, #0x7c
|
||||
ldrh r0, [r0]
|
||||
adds r0, #0x10
|
||||
adds r1, r7, #0
|
||||
adds r1, #0x76
|
||||
b _0808662A
|
||||
.align 2, 0
|
||||
_080865EC: .4byte gPlayerEntity
|
||||
_080865F0:
|
||||
adds r0, r7, #0
|
||||
adds r0, #0x7c
|
||||
ldrh r1, [r0]
|
||||
subs r1, #0x20
|
||||
adds r3, r7, #0
|
||||
adds r3, #0x76
|
||||
strh r1, [r3]
|
||||
ldrh r0, [r0]
|
||||
adds r0, #0x30
|
||||
adds r1, r7, #0
|
||||
adds r1, #0x7a
|
||||
b _0808662A
|
||||
_08086608:
|
||||
movs r1, #0
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #2
|
||||
strh r0, [r7, #0x24]
|
||||
movs r0, #0xf0
|
||||
strb r0, [r7, #0x1d]
|
||||
adds r2, r7, #0
|
||||
adds r2, #0x7f
|
||||
strb r1, [r2]
|
||||
adds r1, r7, #0
|
||||
adds r1, #0x7c
|
||||
ldrh r0, [r1]
|
||||
adds r3, r7, #0
|
||||
adds r3, #0x76
|
||||
strh r0, [r3]
|
||||
ldrh r0, [r1]
|
||||
subs r1, #2
|
||||
_0808662A:
|
||||
strh r0, [r1]
|
||||
ldrb r1, [r7, #0x1d]
|
||||
cmp r1, #0
|
||||
bne _0808663A
|
||||
movs r0, #2
|
||||
strb r0, [r7, #0xc]
|
||||
strb r1, [r2]
|
||||
b _080866B8
|
||||
_0808663A:
|
||||
movs r0, #0x24
|
||||
ldrsh r1, [r7, r0]
|
||||
ldrb r2, [r7, #0x15]
|
||||
adds r0, r7, #0
|
||||
bl LinearMoveAngle
|
||||
ldrb r0, [r7, #0x15]
|
||||
movs r1, #0x80
|
||||
eors r0, r1
|
||||
strb r0, [r7, #0x15]
|
||||
ldr r6, _080866BC @ =gSineTable
|
||||
ldrb r0, [r7, #0x15]
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r6
|
||||
movs r1, #0
|
||||
ldrsh r0, [r0, r1]
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #6
|
||||
bl FixedMul
|
||||
lsls r0, r0, #0x10
|
||||
asrs r0, r0, #0x10
|
||||
movs r5, #0x80
|
||||
lsls r5, r5, #1
|
||||
adds r1, r5, #0
|
||||
bl FixedDiv
|
||||
adds r1, r7, #0
|
||||
adds r1, #0x80
|
||||
lsls r0, r0, #0x10
|
||||
asrs r0, r0, #8
|
||||
ldr r4, [r1]
|
||||
adds r4, r4, r0
|
||||
ldrb r0, [r7, #0x15]
|
||||
adds r0, #0x40
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r6
|
||||
movs r1, #0
|
||||
ldrsh r0, [r0, r1]
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #5
|
||||
bl FixedMul
|
||||
lsls r0, r0, #0x10
|
||||
asrs r0, r0, #0x10
|
||||
adds r1, r5, #0
|
||||
bl FixedDiv
|
||||
adds r1, r7, #0
|
||||
adds r1, #0x84
|
||||
lsls r0, r0, #0x10
|
||||
asrs r0, r0, #8
|
||||
ldr r2, [r1]
|
||||
subs r2, r2, r0
|
||||
adds r0, r7, #0
|
||||
adds r1, r4, #0
|
||||
movs r3, #2
|
||||
bl EntityWithinDistance
|
||||
cmp r0, #0
|
||||
beq _080866B8
|
||||
movs r0, #1
|
||||
strb r0, [r7, #0xc]
|
||||
_080866B8:
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_080866BC: .4byte gSineTable
|
||||
+4
-9
@@ -19730,11 +19730,6 @@
|
||||
"size": 4,
|
||||
"type": "animation"
|
||||
},
|
||||
{
|
||||
"path": "evilSpirit/gUnk_08120678.bin",
|
||||
"start": 1181304,
|
||||
"size": 10
|
||||
},
|
||||
{
|
||||
"path": "animations/gSpriteAnimations_EvilSpirit_0.bin",
|
||||
"start": 1181314,
|
||||
@@ -20784,19 +20779,19 @@
|
||||
"type": "animation"
|
||||
},
|
||||
{
|
||||
"path": "animations/gSpriteAnimations_Thunderbold_0.bin",
|
||||
"path": "animations/gSpriteAnimations_Thunderbolt_0.bin",
|
||||
"start": 1190252,
|
||||
"size": 16,
|
||||
"type": "animation"
|
||||
},
|
||||
{
|
||||
"path": "animations/gSpriteAnimations_Thunderbold_1.bin",
|
||||
"path": "animations/gSpriteAnimations_Thunderbolt_1.bin",
|
||||
"start": 1190268,
|
||||
"size": 12,
|
||||
"type": "animation"
|
||||
},
|
||||
{
|
||||
"path": "animations/gSpriteAnimations_Thunderbold_2.bin",
|
||||
"path": "animations/gSpriteAnimations_Thunderbolt_2.bin",
|
||||
"start": 1190280,
|
||||
"size": 28,
|
||||
"type": "animation"
|
||||
@@ -23908,4 +23903,4 @@
|
||||
},
|
||||
"size": 129
|
||||
}
|
||||
]
|
||||
]
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gSpriteAnimations_Thunderbold_0:: @ 0812296C
|
||||
.include "animations/gSpriteAnimations_Thunderbold_0.s"
|
||||
|
||||
gSpriteAnimations_Thunderbold_1:: @ 0812297C
|
||||
.include "animations/gSpriteAnimations_Thunderbold_1.s"
|
||||
|
||||
gSpriteAnimations_Thunderbold_2:: @ 08122988
|
||||
.include "animations/gSpriteAnimations_Thunderbold_2.s"
|
||||
|
||||
gSpriteAnimations_Thunderbold:: @ 081229A4
|
||||
.4byte gSpriteAnimations_Thunderbold_0
|
||||
.4byte gSpriteAnimations_Thunderbold_1
|
||||
.4byte gSpriteAnimations_Thunderbold_2
|
||||
.4byte 00000000
|
||||
@@ -0,0 +1,20 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gSpriteAnimations_Thunderbolt_0:: @ 0812296C
|
||||
.include "animations/gSpriteAnimations_Thunderbolt_0.s"
|
||||
|
||||
gSpriteAnimations_Thunderbolt_1:: @ 0812297C
|
||||
.include "animations/gSpriteAnimations_Thunderbolt_1.s"
|
||||
|
||||
gSpriteAnimations_Thunderbolt_2:: @ 08122988
|
||||
.include "animations/gSpriteAnimations_Thunderbolt_2.s"
|
||||
|
||||
gSpriteAnimations_Thunderbolt:: @ 081229A4
|
||||
.4byte gSpriteAnimations_Thunderbolt_0
|
||||
.4byte gSpriteAnimations_Thunderbolt_1
|
||||
.4byte gSpriteAnimations_Thunderbolt_2
|
||||
.4byte 00000000
|
||||
@@ -1,15 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_08120668:: @ 08120668
|
||||
.4byte sub_080862B8
|
||||
.4byte sub_08086370
|
||||
.4byte sub_08086550
|
||||
.4byte sub_08086594
|
||||
|
||||
gUnk_08120678:: @ 08120678
|
||||
.incbin "evilSpirit/gUnk_08120678.bin"
|
||||
|
||||
@@ -825,7 +825,7 @@ gSpritePtrs:: @ 080029B4
|
||||
.4byte 00000000
|
||||
.4byte 00000000
|
||||
|
||||
.4byte gSpriteAnimations_Thunderbold
|
||||
.4byte gSpriteAnimations_Thunderbolt
|
||||
.4byte 00000000
|
||||
.4byte 00000000
|
||||
.4byte 00000000
|
||||
|
||||
@@ -8,7 +8,7 @@ SCRIPT_START script_CastorWildsStatueLeft
|
||||
EndBlock
|
||||
script_0800B268:
|
||||
_0807EA4C
|
||||
_0807E9F0
|
||||
UpdateFusion
|
||||
SetPlayerIdle
|
||||
CheckKinstoneFused KINSTONE_CASTOR_WILDS_STATUE_LEFT
|
||||
JumpIf script_0800B2E2
|
||||
|
||||
@@ -8,7 +8,7 @@ SCRIPT_START script_CastorWildsStatueMiddle
|
||||
EndBlock
|
||||
script_0800B298:
|
||||
_0807EA4C
|
||||
_0807E9F0
|
||||
UpdateFusion
|
||||
SetPlayerIdle
|
||||
CheckKinstoneFused KINSTONE_CASTOR_WILDS_STATUE_MIDDLE
|
||||
JumpIf script_0800B2E2
|
||||
|
||||
@@ -8,7 +8,7 @@ SCRIPT_START script_CastorWildsStatueRight
|
||||
EndBlock
|
||||
script_0800B2C8:
|
||||
_0807EA4C
|
||||
_0807E9F0
|
||||
UpdateFusion
|
||||
SetPlayerIdle
|
||||
CheckKinstoneFused KINSTONE_CASTOR_WILDS_STATUE_RIGHT
|
||||
JumpIf script_0800B2E2
|
||||
|
||||
@@ -15,6 +15,7 @@ script_0800B6D4:
|
||||
WaitForSyncFlagAndClear 0x00000004
|
||||
SetRoomFlag 0x0000
|
||||
WaitForSyncFlagAndClear 0x00000004
|
||||
//30
|
||||
CheckLocalFlag 0x009f
|
||||
JumpIf script_0800B7A2
|
||||
MessageNoOverlap TEXT_ITEM_GET, 0x7b
|
||||
@@ -22,7 +23,7 @@ script_0800B6D4:
|
||||
CallWithArg CheckMessageEqual, TEXT_ITEM_GET << 8 | 0x7d
|
||||
JumpIf script_0800B6A6
|
||||
WaitUntilTextboxCloses
|
||||
SetLocalFlag 0x009f
|
||||
SetLocalFlag IZUMI_01_FAIRY
|
||||
GivePlayerItem ITEM_WALLET
|
||||
Jump script_0800B698
|
||||
.2byte 0x0000
|
||||
|
||||
@@ -17,9 +17,9 @@ script_08014C4C:
|
||||
script_08014C56:
|
||||
Call sub_0806CCB4
|
||||
JumpIfNot script_08014C56
|
||||
CheckLocalFlag 0x0066
|
||||
CheckLocalFlag SORA_ELDER_TALK2ND
|
||||
JumpIf script_08014C7C
|
||||
SetLocalFlag 0x0066
|
||||
SetLocalFlag SORA_ELDER_TALK2ND
|
||||
MessageNoOverlap TEXT_WIND_TRIBE, 0x0d
|
||||
WaitUntilTextboxCloses
|
||||
GivePlayerItem ITEM_LIGHT_ARROW
|
||||
|
||||
@@ -4,7 +4,7 @@ SCRIPT_START script_GregalSick
|
||||
DoPostScriptAction 0x000a
|
||||
SetAnimation 0x0000
|
||||
EndBlock
|
||||
CheckLocalFlag 0x0063
|
||||
CheckLocalFlag SORA_ELDER_RECOVER
|
||||
JumpIf script_08014BE8
|
||||
script_08014B48:
|
||||
EndBlock
|
||||
@@ -54,9 +54,9 @@ script_08014BF2:
|
||||
CheckEntityInteractType
|
||||
JumpIfNot script_08014BF2
|
||||
SetPlayerIdle
|
||||
CheckLocalFlag 0x0065
|
||||
CheckLocalFlag SORA_ELDER_TALK1ST
|
||||
JumpIf script_08014C1C
|
||||
SetLocalFlag 0x0065
|
||||
SetLocalFlag SORA_ELDER_TALK1ST
|
||||
MessageNoOverlap TEXT_WIND_TRIBE, 0x07
|
||||
WaitUntilTextboxCloses
|
||||
SetIntVariable 100
|
||||
|
||||
@@ -12,7 +12,7 @@ SCRIPT_START script_Npc4EFirstCloud
|
||||
EndBlock
|
||||
script_0800D636:
|
||||
_0807EA4C
|
||||
_0807E9F0
|
||||
UpdateFusion
|
||||
Call NPC4E_IsKinstoneFused
|
||||
JumpIf script_0800D650
|
||||
Call EnablePauseMenu
|
||||
|
||||
@@ -3,7 +3,7 @@ SCRIPT_START script_PlayerGetSword
|
||||
SetInventoryValue ITEM_SMITH_SWORD, 0x0001
|
||||
CallWithArg PutItemAnySlot, ITEM_SMITH_SWORD
|
||||
PlaySound SFX_ITEM_GET
|
||||
CallWithArg SetPlayerAnimation2, 0x0000045f
|
||||
CallWithArg SetPlayerAnimation2, ANIM_GET_ITEM_SWORD
|
||||
Call WaitForPlayerAnim
|
||||
MessageFromTargetPos TEXT_ITEM_GET, 0x01, 0x000e
|
||||
WaitUntilTextboxCloses
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
SCRIPT_START script_PlayerGetGreenCap
|
||||
BeginBlock
|
||||
Call sub_08094BE0
|
||||
CallWithArg SetPlayerAnimation2, 0x0000045b
|
||||
CallWithArg SetPlayerAnimation2, ANIM_GET_ITEM_BIG_NOCAP
|
||||
PlaySound SFX_ITEM_GET
|
||||
EndBlock
|
||||
Call WaitForPlayerAnim
|
||||
@@ -10,7 +10,7 @@ SCRIPT_START script_PlayerGetGreenCap
|
||||
SetSyncFlag 0x00000008
|
||||
BeginBlock
|
||||
CallWithArg ResetPlayerFlag, PL_NO_CAP
|
||||
CallWithArg SetPlayerAnimation2, 0x000008e4
|
||||
CallWithArg SetPlayerAnimation2, ANIM_GET_NEWCAP
|
||||
EndBlock
|
||||
Call WaitForPlayerAnim
|
||||
SetAnimationState 0x0004
|
||||
|
||||
@@ -7,11 +7,11 @@ SCRIPT_START script_PlayerAtTakeover
|
||||
MoveTo 0x0168, 0x0058
|
||||
SetAnimationState 0x0004
|
||||
DoPostScriptAction 0x0000
|
||||
CallWithArg SetPlayerAnimation2, 0x000003c5
|
||||
CallWithArg SetPlayerAnimation2, ANIM_EZLO_SEARCH
|
||||
Call WaitForPlayerAnim
|
||||
MessageFromTargetPos TEXT_VAATI, 0x18, 0x000c
|
||||
WaitUntilTextboxCloses
|
||||
CallWithArg SetPlayerAnimation2, 0x000003c9
|
||||
CallWithArg SetPlayerAnimation2, ANIM_EZLO_LEAVE_LEFT
|
||||
Call WaitForPlayerAnim
|
||||
SetAnimationState 0x0004
|
||||
DoPostScriptAction 0x0000
|
||||
|
||||
@@ -3,9 +3,9 @@ SCRIPT_START script_KingDaltusStone
|
||||
BeginBlock
|
||||
SetAnimationState 0x0004
|
||||
DoPostScriptAction 0x000a
|
||||
CheckLocalFlag 0x0071
|
||||
CheckLocalFlag LV6_1d_KEYGET
|
||||
JumpIf script_0800E3E8
|
||||
CheckLocalFlag 0x0096
|
||||
CheckLocalFlag LV6_39_KING
|
||||
JumpIf script_0800E3BE
|
||||
SetAnimation 0x000c
|
||||
CallWithArg sub_0807F8E8, 0x00000000
|
||||
@@ -28,7 +28,7 @@ script_0800E37A:
|
||||
Wait 0x001e
|
||||
DoPostScriptAction 0x0000
|
||||
FacePlayer
|
||||
SetLocalFlag 0x0096
|
||||
SetLocalFlag LV6_39_KING
|
||||
script_0800E3BE:
|
||||
DoPostScriptAction 0x0000
|
||||
_0807E9D4
|
||||
@@ -44,7 +44,7 @@ script_0800E3C8:
|
||||
Wait 0x000f
|
||||
GivePlayerItem ITEM_SMALL_KEY
|
||||
WaitPlayerGetItem
|
||||
SetLocalFlag 0x0071
|
||||
SetLocalFlag LV6_1d_KEYGET
|
||||
EnablePlayerControl
|
||||
script_0800E3E8:
|
||||
_0807E9D4
|
||||
|
||||
@@ -3,7 +3,7 @@ SCRIPT_START script_PlayerStonesFall
|
||||
EndBlock
|
||||
SetAnimationState 0x0004
|
||||
DoPostScriptAction 0x0000
|
||||
CallWithArg SetPlayerAnimation2, 0x000003c5
|
||||
CallWithArg SetPlayerAnimation2, ANIM_EZLO_SEARCH
|
||||
Call WaitForPlayerAnim
|
||||
SetSyncFlag 0x00000004
|
||||
Call SetPlayerActionNormal
|
||||
|
||||
@@ -31,7 +31,7 @@ script_0800B684:
|
||||
Jump script_0800B6A6
|
||||
script_0800B68E:
|
||||
WaitUntilTextboxCloses
|
||||
SetLocalFlag 0x009e
|
||||
SetLocalFlag IZUMI_00_FAIRY
|
||||
GivePlayerItem ITEM_LARGE_QUIVER
|
||||
script_0800B698:
|
||||
WaitPlayerGetItem
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
@ Hyrule Town Carlov
|
||||
@ Hyrule Town ~~Carlov~~ Burlov
|
||||
SCRIPT_START script_Carlov
|
||||
BeginBlock
|
||||
_0807E9D4
|
||||
|
||||
@@ -47,7 +47,7 @@ script_080146E2:
|
||||
JumpIf script_0801472E
|
||||
CheckLocalFlag 0x005f
|
||||
JumpIf script_08014720
|
||||
Call sub_08088574
|
||||
Call FigurineDevice_TryAgainMessage
|
||||
SetRoomFlag 0x000a
|
||||
Jump script_0801473C
|
||||
script_0801472E_2:
|
||||
@@ -104,7 +104,7 @@ script_080146C6:
|
||||
JumpIf script_0801472E
|
||||
CheckLocalFlag 0x005f
|
||||
JumpIf script_08014720
|
||||
Call sub_08088574
|
||||
Call FigurineDevice_TryAgainMessage
|
||||
SetRoomFlag 0x0009
|
||||
Jump script_0801473C
|
||||
.endif
|
||||
@@ -135,7 +135,7 @@ script_08014720:
|
||||
.else
|
||||
SetRoomFlag 0x0009
|
||||
.endif
|
||||
Call sub_08088504
|
||||
Call FigurineDevice_NothingNewToDrawMessage
|
||||
Jump script_0801473C
|
||||
script_0801472E:
|
||||
.ifdef EU
|
||||
@@ -144,7 +144,7 @@ script_0801472E:
|
||||
SetRoomFlag 0x0009
|
||||
.endif
|
||||
ClearRoomFlag 0x0006
|
||||
Call sub_08088544
|
||||
Call FigurineDevice_NewFigurinesMessage
|
||||
script_0801473C:
|
||||
CheckTextboxResult
|
||||
JumpIfNot script_08014770
|
||||
@@ -179,9 +179,9 @@ script_0801477A:
|
||||
CheckRoomFlag 0x0007
|
||||
JumpIf script_080147A4
|
||||
script_0801478A:
|
||||
Call sub_08088478
|
||||
Call FigurineDevice_NoFigurinesLeftMessage
|
||||
WaitUntilTextboxCloses
|
||||
Call sub_080885B0
|
||||
Call FigurineDevice_LostOrFinishedMessage
|
||||
WaitPlayerGetItem
|
||||
SetSyncFlag 0x00000008
|
||||
Jump script_080147CE
|
||||
|
||||
@@ -28,12 +28,12 @@ script_0800E974:
|
||||
SetAnimation 0x0000
|
||||
StartPlayerScript script_PlayerActivatedTrapCard
|
||||
WaitForSyncFlagAndClear 0x00000001
|
||||
SetLocalFlag 0x0074
|
||||
SetLocalFlag MIZUKAKI_STAIR
|
||||
PlaySound SFX_SECRET
|
||||
Wait 0x00f0
|
||||
MessageFromTarget TEXT_TOWN_MINISH1, 0x26
|
||||
WaitUntilTextboxCloses
|
||||
SetLocalFlag 0x0075
|
||||
SetLocalFlag MIZUKAKI_STAIR_WARP_OK
|
||||
script_0800E9E4:
|
||||
WaitUntilTextboxCloses
|
||||
Wait 0x000f
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
@ Library if you talk to him later?
|
||||
@ Librari at the lake
|
||||
SCRIPT_START script_LibrariLater
|
||||
BeginBlock
|
||||
DoPostScriptAction 0x000a
|
||||
@@ -14,9 +14,9 @@ script_08012440:
|
||||
SetAnimation 0x0009
|
||||
Call sub_0806B2B4
|
||||
WaitUntilTextboxCloses
|
||||
CheckLocalFlag 0x00b3
|
||||
CheckLocalFlag KHOUSE23_TALK1ST
|
||||
JumpIf script_08012474
|
||||
SetLocalFlag 0x00b3
|
||||
SetLocalFlag KHOUSE23_TALK1ST
|
||||
GivePlayerItem ITEM_HEART_CONTAINER
|
||||
WaitPlayerGetItem
|
||||
.ifdef USA
|
||||
|
||||
@@ -6,7 +6,7 @@ SCRIPT_START script_Rem
|
||||
SetAnimation 0x0002
|
||||
CheckInventory1 ITEM_PEGASUS_BOOTS
|
||||
JumpIf script_080130B6
|
||||
CheckLocalFlag 0x0060
|
||||
CheckLocalFlag SHOP02_KUTSU_00
|
||||
JumpIf script_08012FD2
|
||||
CheckGlobalFlag DASHBOOTS
|
||||
JumpIf script_RemFallingAsleep
|
||||
|
||||
@@ -84,7 +84,7 @@ script_0801309E:
|
||||
SetAction 0x0001
|
||||
Jump script_0801308A
|
||||
script_080130B6:
|
||||
CheckLocalFlag 0x0062
|
||||
CheckLocalFlag NPC37_REM_SLEEP
|
||||
JumpIfNot script_080130C4
|
||||
Call sub_0806A9B0
|
||||
script_080130C4:
|
||||
|
||||
@@ -23,7 +23,7 @@ script_0800B9F4:
|
||||
FacePlayer
|
||||
DoPostScriptAction 0x0000
|
||||
Call sub_0807F650
|
||||
_0807E9F0
|
||||
UpdateFusion
|
||||
SetPlayerIdle
|
||||
Call sub_0806948C
|
||||
JumpIf script_0800BA24
|
||||
|
||||
@@ -55,7 +55,7 @@ script_08009FB6:
|
||||
Jump script_08009F86
|
||||
script_08009FD2:
|
||||
EndBlock
|
||||
CheckLocalFlag 0x00b0
|
||||
CheckLocalFlag KHOUSE26_REMOCON
|
||||
JumpIf script_0800A024
|
||||
script_08009FDC:
|
||||
EndBlock
|
||||
|
||||
@@ -3,7 +3,7 @@ SCRIPT_START script_CutsceneMiscObjectBrokenSword
|
||||
BeginBlock
|
||||
CheckInventory1 ITEM_FIRE_ELEMENT
|
||||
JumpIf script_0800D24C
|
||||
CheckLocalFlag 0x007e
|
||||
CheckLocalFlag OYAKATA_DEMO
|
||||
JumpIf script_0800D242
|
||||
DoPostScriptAction 0x0008
|
||||
EndBlock
|
||||
|
||||
@@ -24,7 +24,7 @@ script_0800B734:
|
||||
Jump script_0800B6A6
|
||||
script_0800B794:
|
||||
WaitUntilTextboxCloses
|
||||
SetLocalFlag 0x00a0
|
||||
SetLocalFlag IZUMI_02_FAIRY
|
||||
GivePlayerItem ITEM_BOMBBAG
|
||||
Jump script_0800B698
|
||||
script_0800B7A2:
|
||||
|
||||
@@ -8,7 +8,7 @@ SCRIPT_START script_Melari
|
||||
EndBlock
|
||||
CheckInventory1 ITEM_FIRE_ELEMENT
|
||||
JumpIf script_0800CFD2
|
||||
CheckLocalFlag 0x007e
|
||||
CheckLocalFlag OYAKATA_DEMO
|
||||
JumpIfNot script_0800CFD2
|
||||
SetAnimation 0x0008
|
||||
script_0800CFD2:
|
||||
@@ -19,7 +19,7 @@ script_0800CFD2:
|
||||
SetSyncFlag 0x00000020
|
||||
Jump script_0800CFFA
|
||||
script_0800CFEC:
|
||||
CheckLocalFlag 0x007e
|
||||
CheckLocalFlag OYAKATA_DEMO
|
||||
JumpIfNot script_0800CFFA
|
||||
SetSyncFlag 0x00000010
|
||||
script_0800CFFA:
|
||||
@@ -60,7 +60,7 @@ script_0800D032:
|
||||
MessageFromTargetPos TEXT_MINISH2, 0x5d, 0x0002
|
||||
Jump script_0800D17C
|
||||
script_0800D098:
|
||||
CheckLocalFlag 0x007e
|
||||
CheckLocalFlag OYAKATA_DEMO
|
||||
JumpIfNot script_0800D0A8
|
||||
MessageFromTarget TEXT_MINISH2, 0x3e
|
||||
Jump script_0800D17C
|
||||
@@ -88,7 +88,7 @@ script_0800D108:
|
||||
JumpIf script_0800D108
|
||||
PlaySound SFX_F8
|
||||
SetSyncFlag 0x00000010
|
||||
SetLocalFlag 0x007e
|
||||
SetLocalFlag OYAKATA_DEMO
|
||||
MessageFromTargetPos TEXT_MINISH2, 0x3e, 0x0002
|
||||
WaitUntilTextboxCloses
|
||||
Wait 0x000f
|
||||
|
||||
@@ -7,7 +7,7 @@ SCRIPT_START script_MountainMinish3
|
||||
script_0800D282:
|
||||
CheckInventory1 ITEM_FIRE_ELEMENT
|
||||
JumpIf script_0800D292
|
||||
CheckLocalFlag 0x007e
|
||||
CheckLocalFlag OYAKATA_DEMO
|
||||
JumpIf script_0800D2EA
|
||||
script_0800D292:
|
||||
BeginBlock
|
||||
|
||||
@@ -3,7 +3,7 @@ SCRIPT_START script_PlayerGetWhiteSword
|
||||
SetInventoryValue ITEM_GREEN_SWORD, 0x0001
|
||||
CallWithArg PutItemAnySlot, ITEM_GREEN_SWORD
|
||||
PlaySound SFX_ITEM_GET
|
||||
CallWithArg SetPlayerAnimation2, 0x000001e2
|
||||
CallWithArg SetPlayerAnimation2, ANIM_GET_WHITE_SWORD
|
||||
Call WaitForPlayerAnim
|
||||
MessageNoOverlap TEXT_ITEM_GET, 0x02
|
||||
WaitUntilTextboxCloses
|
||||
|
||||
@@ -28,7 +28,7 @@ script_0800B134:
|
||||
FacePlayer
|
||||
CallWithArg sub_0806BC94, 0x00000004
|
||||
Call sub_0807F650
|
||||
_0807E9F0
|
||||
UpdateFusion
|
||||
.ifndef EU
|
||||
@! @bug: In EU, Eenie is marked as done fusing if kinstone menu is closed without fusing
|
||||
JumpIfNot script_0800B160
|
||||
|
||||
@@ -10,7 +10,7 @@ SCRIPT_START script_MysteriousWall
|
||||
EndBlock
|
||||
script_0800B98A:
|
||||
_0807EA4C
|
||||
_0807E9F0
|
||||
UpdateFusion
|
||||
JumpIf script_0800B99E
|
||||
Call EnablePauseMenu
|
||||
EnablePlayerControl
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
SCRIPT_START script_PlayerPickUpFinalSword
|
||||
CallWithArg sub_08095E7C, script_CutsceneMiscObjectSwordCharge11
|
||||
PlaySound SFX_1D3
|
||||
CallWithArg SetPlayerAnimation2, 0x000008e3
|
||||
CallWithArg SetPlayerAnimation2, ANIM_GET_LAST_SWORD
|
||||
Call sub_08096028
|
||||
Wait 0x0078
|
||||
SetSyncFlag 0x00020000
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
@ Player at Sanctuary pick up sword
|
||||
SCRIPT_START script_PlayerPickUpSword
|
||||
PlaySound SFX_1D3
|
||||
CallWithArg SetPlayerAnimation2, 0x000008bf
|
||||
CallWithArg SetPlayerAnimation2, ANIM_GET_NEW_SWORD
|
||||
Call sub_08096028
|
||||
Wait 0x003c
|
||||
SetSyncFlag 0x00020000
|
||||
|
||||
@@ -14,7 +14,7 @@ SCRIPT_START script_08016482
|
||||
DisablePlayerControl
|
||||
SetPlayerAction 0x00005408
|
||||
StartPlayerScript script_08016384
|
||||
SetPlayerAnimation 0x03a0
|
||||
SetPlayerAnimation ANIM_FALL_ON_BACK
|
||||
_0807E8E4_0
|
||||
_0807E8E4_1
|
||||
_0807E8E4_2
|
||||
|
||||
@@ -10,7 +10,7 @@ SCRIPT_START script_NPC4ESourceOfTheFlow
|
||||
EndBlock
|
||||
script_08015FE4:
|
||||
_0807EA4C
|
||||
_0807E9F0
|
||||
UpdateFusion
|
||||
SetPlayerIdle
|
||||
CheckKinstoneFused KINSTONE_SOURCE_FLOW
|
||||
JumpIf script_08015FFE
|
||||
|
||||
@@ -12,9 +12,9 @@ script_08012338:
|
||||
SetPlayerIdle
|
||||
MessageFromTarget TEXT_PERCY, 0x04
|
||||
WaitUntilTextboxCloses
|
||||
CheckLocalFlag 0x0042
|
||||
CheckLocalFlag MHOUSE08_03
|
||||
JumpIf script_0801235A
|
||||
SetLocalFlag 0x0042
|
||||
SetLocalFlag MHOUSE08_03
|
||||
GivePlayerItem ITEM_RUPEE50
|
||||
WaitPlayerGetItem
|
||||
script_0801235A:
|
||||
|
||||
@@ -7,6 +7,16 @@
|
||||
|
||||
#define MAX_ROOMS 64
|
||||
|
||||
typedef enum {
|
||||
PT_TREESTUMP,
|
||||
PT_ROCK,
|
||||
PT_2,
|
||||
PT_DUNGEON,
|
||||
PT_JAR,
|
||||
PT_5,
|
||||
PT_TOD,
|
||||
} PortalTypes;
|
||||
|
||||
typedef struct {
|
||||
u16 pixel_width;
|
||||
u16 pixel_height;
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ extern void sub_08001290(struct Entity_*, u32);
|
||||
extern void GenericKnockback(struct Entity_*);
|
||||
extern u32 GetFuserId(struct Entity_*);
|
||||
extern u32 CheckPlayerInRegion(u32 centerX, u32 centerY, u32 radiusX, u32 radiusY);
|
||||
extern u32 GravityUpdate(struct Entity_*, u32);
|
||||
extern u32 GravityUpdate(struct Entity_* entity, u32 gravity);
|
||||
extern u32 CheckOnScreen(struct Entity_*);
|
||||
extern bool32 EntityInRectRadius(struct Entity_*, struct Entity_*, u32, u32);
|
||||
extern void UpdateAnimationVariableFrames(struct Entity_*, u32);
|
||||
|
||||
+2
-2
@@ -120,8 +120,8 @@ void sub_0801E1EC(u32, u32, u32);
|
||||
void sub_0801DD58(u32, u32);
|
||||
void sub_0801E1B8(u32, u32);
|
||||
void AddKinstoneToBag(u32);
|
||||
void sub_0801DFB4(struct Entity_*, u32, u32, u32);
|
||||
u32 sub_0801E00C(void);
|
||||
void InitializeFuseInfo(struct Entity_* entity, u32 textIndex, u32 cancelledTextIndex, u32 fusingTextIndex);
|
||||
u32 PerformFuseAction(void);
|
||||
bool32 CheckFusionMapMarkerDisabled(u32);
|
||||
u32 sub_0801DB94(void);
|
||||
u32 GetRandomSharedFusion(u8*);
|
||||
|
||||
@@ -13,6 +13,14 @@
|
||||
#include "projectile.h"
|
||||
|
||||
bool32 EnemyInit(Entity* this);
|
||||
/**
|
||||
* 0: _OnTick
|
||||
* 1: _OnCollision
|
||||
* 2: _OnKnockback
|
||||
* 3: _OnDeath
|
||||
* 4: _OnConfused
|
||||
* 5: _OnGrabbed
|
||||
*/
|
||||
u32 GetNextFunction(Entity*);
|
||||
void EnemyFunctionHandler(Entity*, EntityActionArray);
|
||||
void EnemyFunctionHandlerAfterCollision(Entity*, void (*const[])());
|
||||
|
||||
@@ -20,7 +20,7 @@ typedef struct {
|
||||
static_assert(sizeof(OctorokBossHeap) == 0x30);
|
||||
|
||||
struct OctorokBossEntity {
|
||||
Entity base;
|
||||
/*0x00*/ Entity base;
|
||||
/*0x68*/ union SplitHWord field_0x68;
|
||||
/*0x6a*/ union SplitHWord field_0x6a;
|
||||
/*0x6c*/ union SplitHWord field_0x6c;
|
||||
|
||||
@@ -91,7 +91,6 @@ extern void sub_0805EC60(Entity*);
|
||||
extern void InitPlayerMacro(PlayerMacroEntry*);
|
||||
extern u32* sub_0805F25C(u32);
|
||||
extern void sub_0805F8E4(u32 r0, WStruct* r1);
|
||||
extern void sub_08060158(Entity*);
|
||||
extern void sub_0806D0B0(Entity*);
|
||||
extern bool32 sub_080806BC(u32, u32, u32, u32);
|
||||
extern void sub_0808091C(const ScreenTransitionData* screenTransition, u32 transitionType);
|
||||
|
||||
@@ -143,4 +143,11 @@ union SplitHWord {
|
||||
/* forward decls */
|
||||
struct Entity_;
|
||||
|
||||
/**
|
||||
* bitset macros
|
||||
*/
|
||||
|
||||
#define BIT(bit) (1 << (bit))
|
||||
#define IS_BIT_SET(value, bit) ((value)&BIT(bit))
|
||||
|
||||
#endif // GLOBAL_H
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
#include "player.h"
|
||||
|
||||
void CreateItemEntity(u32, u32, u32);
|
||||
void sub_08081404(Entity*, u32);
|
||||
extern void ExecuteItemFunction(ItemBehavior* this, u32 index);
|
||||
|
||||
extern void ItemDebug(ItemBehavior*, u32);
|
||||
|
||||
+14
-4
@@ -6,17 +6,27 @@
|
||||
|
||||
extern void sub_08018C58(u32);
|
||||
|
||||
typedef enum {
|
||||
FUSION_STATE_0, // fusion was not yet started
|
||||
FUSION_STATE_1, // failed?
|
||||
FUSION_STATE_2, // successful?
|
||||
FUSION_STATE_3, // fusion is being performed
|
||||
FUSION_STATE_4, // player has closed the first messagebox
|
||||
FUSION_STATE_5, // fusion declined by the player
|
||||
FUSION_STATE_6, // Successful, but not yet finished?
|
||||
} FusionState;
|
||||
|
||||
typedef struct {
|
||||
u8 _0;
|
||||
u8 fusionState; /** @see FusionState */
|
||||
u8 action;
|
||||
u8 _2;
|
||||
u8 kinstoneId;
|
||||
u8 prevUpdatePriority;
|
||||
u8 _5;
|
||||
u16 textIndex;
|
||||
u16 _8;
|
||||
u16 _a;
|
||||
Entity* ent;
|
||||
u16 cancelledTextIndex;
|
||||
u16 fusingTextIndex;
|
||||
Entity* entity;
|
||||
} FuseInfo;
|
||||
static_assert(sizeof(FuseInfo) == 0x10);
|
||||
extern FuseInfo gFuseInfo;
|
||||
|
||||
+60
-61
@@ -73,7 +73,7 @@ s32 GetFacingDirectionInRectRadius(Entity* ent, u32 x, u32 y);
|
||||
void sub_0806EE04(Entity* ent, void* a2, u32 a3);
|
||||
u32 sub_0806EE20(Entity* ent);
|
||||
s32 sub_0806F078(Entity* ent, s32 a2);
|
||||
void sub_0806F118(Entity* ent);
|
||||
void InitializeNPCFusion(Entity* ent);
|
||||
void MarkFuserDone(Entity* ent);
|
||||
void ShowNPCDialogue(Entity* ent, const Dialog* dia);
|
||||
|
||||
@@ -85,7 +85,6 @@ void CollideFollowers(void);
|
||||
|
||||
// TODO move?
|
||||
void AddInteractableWhenBigFuser(Entity* ent, u32 kinstoneId);
|
||||
u32 sub_0806F5A4(u32);
|
||||
u32 GetFusionToOffer(Entity*);
|
||||
void AddInteractableWhenBigObject(Entity*);
|
||||
void sub_0807000C(Entity*);
|
||||
@@ -222,23 +221,23 @@ enum NPC {
|
||||
/*0x7f*/ NPC_NONE_39,
|
||||
};
|
||||
|
||||
void Gentari(Entity*);
|
||||
void Gentari();
|
||||
void Gentari_Fusion(Entity*);
|
||||
void Festari(Entity*);
|
||||
void Festari_Fusion(Entity*);
|
||||
void ForestMinish(Entity*);
|
||||
void Festari();
|
||||
void Festari_Fusion();
|
||||
void ForestMinish();
|
||||
void ForestMinish_Head(Entity*);
|
||||
void ForestMinish_Fusion(Entity*);
|
||||
void Postman(Entity*);
|
||||
void Postman();
|
||||
void Postman_Fusion(Entity*);
|
||||
void NPC5(Entity*);
|
||||
void NPC5();
|
||||
void Townsperson(Entity*);
|
||||
void Townsperson_Head(Entity*);
|
||||
void Townsperson_Fusion(Entity*);
|
||||
void Kid(Entity*);
|
||||
void Kid();
|
||||
void Kid_Head(Entity*);
|
||||
void Kid_Fusion(Entity*);
|
||||
void Guard(Entity*);
|
||||
void Guard();
|
||||
void Guard_Head(Entity*);
|
||||
void NPC9(Entity*);
|
||||
void Stamp(Entity*);
|
||||
@@ -246,90 +245,90 @@ void Maid(Entity*);
|
||||
void Maid_Head(Entity*);
|
||||
void Marcy(Entity*);
|
||||
void Wheaton(Entity*);
|
||||
void Pita(Entity*);
|
||||
void Pita();
|
||||
void MinishEzlo(Entity*);
|
||||
void MinishEzlo_Head(Entity*);
|
||||
void Mailbox(Entity*);
|
||||
void Beedle(Entity*);
|
||||
void Beedle_Head(Entity*);
|
||||
void Brocco(Entity*);
|
||||
void Brocco();
|
||||
void Brocco_Fusion(Entity*);
|
||||
void SittingPerson(Entity*);
|
||||
void SittingPerson();
|
||||
void SittingPerson_Head(Entity*);
|
||||
void SittingPerson_Fusion(Entity*);
|
||||
void Pina(Entity*);
|
||||
void Pina();
|
||||
void Pina_Fusion(Entity*);
|
||||
void Din(Entity*);
|
||||
void Din();
|
||||
void Din_Fusion(Entity*);
|
||||
void Nayru(Entity*);
|
||||
void Nayru();
|
||||
void Nayru_Fusion(Entity*);
|
||||
void Farore(Entity*);
|
||||
void Farore();
|
||||
void Farore_Fusion(Entity*);
|
||||
void Sturgeon(Entity*);
|
||||
void Sturgeon();
|
||||
void Sturgeon_Head(Entity*);
|
||||
void Sturgeon_Fusion(Entity*);
|
||||
void TingleSiblings(Entity*);
|
||||
void TingleSiblings_Fusion(Entity*);
|
||||
void Stockwell(Entity*);
|
||||
void Talon(Entity*);
|
||||
void Stockwell();
|
||||
void Talon();
|
||||
void Talon_Head(Entity*);
|
||||
void Talon_Fusion(Entity*);
|
||||
void Malon(Entity*);
|
||||
void Malon();
|
||||
void Malon_Fusion(Entity*);
|
||||
void Epona(Entity*);
|
||||
void Epona_Fusion(Entity*);
|
||||
void Epona();
|
||||
void Epona_Fusion();
|
||||
void MilkCart(Entity*);
|
||||
void GhostBrothers(Entity*);
|
||||
void GhostBrothers();
|
||||
void GhostBrothers_Fusion(Entity*);
|
||||
void Smith(Entity*);
|
||||
void Smith();
|
||||
void Smith_Head(Entity*);
|
||||
void Smith_Fusion(Entity*);
|
||||
void NPC23(Entity*);
|
||||
void KingDaltus(Entity*);
|
||||
void NPC23();
|
||||
void KingDaltus();
|
||||
void KingDaltus_Fusion(Entity*);
|
||||
void MinisterPotho(Entity*);
|
||||
void MinisterPotho();
|
||||
void MinisterPotho_Fusion(Entity*);
|
||||
void NPC26(Entity*);
|
||||
void Vaati(Entity*);
|
||||
void Zelda(Entity*);
|
||||
void Mutoh(Entity*);
|
||||
void Mutoh();
|
||||
void Mutoh_Head(Entity*);
|
||||
void Mutoh_Fusion(Entity*);
|
||||
void Carpenter(Entity*);
|
||||
void Carpenter();
|
||||
void Carpenter_Head(Entity*);
|
||||
void Carpenter_Fusion(Entity*);
|
||||
void CastorWildsStatue(Entity*);
|
||||
void CastorWildsStatue();
|
||||
void CastorWildsStatue_Fusion(Entity*);
|
||||
void Cat(Entity*);
|
||||
void Cat();
|
||||
void Cat_Fusion(Entity*);
|
||||
void MountainMinish(Entity*);
|
||||
void MountainMinish();
|
||||
void MountainMinish_Head(Entity*);
|
||||
void MountainMinish_Fusion(Entity*);
|
||||
void ZeldaFollower(Entity*);
|
||||
void Melari(Entity*);
|
||||
void Melari_Head(Entity*);
|
||||
void Melari_Fusion(Entity*);
|
||||
void BladeBrothers(Entity*);
|
||||
void BladeBrothers();
|
||||
void BladeBrothers_Fusion(Entity*);
|
||||
void Cow(Entity*);
|
||||
void Cow_Fusion(Entity*);
|
||||
void Goron(Entity*);
|
||||
void Cow();
|
||||
void Cow_Fusion();
|
||||
void Goron();
|
||||
void Goron_Fusion(Entity*);
|
||||
void GoronMerchant(Entity*);
|
||||
void Gorman(Entity*);
|
||||
void Gorman();
|
||||
void Gorman_Head(Entity*);
|
||||
void Dog(Entity*);
|
||||
void Dog_Head(Entity*);
|
||||
void Dog_Fusion(Entity*);
|
||||
void Syrup(Entity*);
|
||||
void Dog();
|
||||
void Dog_Head();
|
||||
void Dog_Fusion();
|
||||
void Syrup();
|
||||
void Syrup_Head(Entity*);
|
||||
void Rem(Entity*);
|
||||
void TownMinish(Entity*);
|
||||
void TownMinish_Head(Entity*);
|
||||
void Rem();
|
||||
void TownMinish();
|
||||
void TownMinish_Head();
|
||||
void TownMinish_Fusion(Entity*);
|
||||
void Librari(Entity*);
|
||||
void Librari();
|
||||
void Librari_Fusion(Entity*);
|
||||
void Percy(Entity*);
|
||||
void Percy();
|
||||
void Percy_Head(Entity*);
|
||||
void Percy_Fusion(Entity*);
|
||||
void VaatiReborn(Entity*);
|
||||
@@ -343,26 +342,26 @@ void Dampe(Entity*);
|
||||
void Dampe_Fusion(Entity*);
|
||||
void DrLeft(Entity*);
|
||||
void KingGustaf(Entity*);
|
||||
void Gina(Entity*);
|
||||
void Gina();
|
||||
void Gina_Fusion(Entity*);
|
||||
void Simon(Entity*);
|
||||
void Anju(Entity*);
|
||||
void Anju_Fusion(Entity*);
|
||||
void Mama(Entity*);
|
||||
void Anju();
|
||||
void Anju_Fusion();
|
||||
void Mama();
|
||||
void Mama_Head(Entity*);
|
||||
void Mama_Fusion(Entity*);
|
||||
void Emma(Entity*);
|
||||
void Teachers(Entity*);
|
||||
void Teachers();
|
||||
void Teachers_Head(Entity*);
|
||||
void Teachers_Fusion(Entity*);
|
||||
void WindTribespeople(Entity*);
|
||||
void WindTribespeople_Head(Entity*);
|
||||
void WindTribespeople_Fusion(Entity*);
|
||||
void Gregal(Entity*);
|
||||
void Gregal();
|
||||
void Gregal_Fusion(Entity*);
|
||||
void MayorHagen(Entity*);
|
||||
void MayorHagen();
|
||||
void MayorHagen_Fusion(Entity*);
|
||||
void BigGoron(Entity*);
|
||||
void BigGoron();
|
||||
void Ezlo(Entity*);
|
||||
void NPC4E(Entity*);
|
||||
void NPC4E_Fusion(Entity*);
|
||||
@@ -370,18 +369,18 @@ void NPC4F(Entity*);
|
||||
void ClothesRack(Entity*);
|
||||
void PicolyteBottle(Entity*);
|
||||
void SmallTownMinish(Entity*);
|
||||
void HurdyGurdyMan(Entity*);
|
||||
void HurdyGurdyMan();
|
||||
void HurdyGurdyMan_Head(Entity*);
|
||||
void HurdyGurdyMan_Fusion(Entity*);
|
||||
void Cucco(Entity*);
|
||||
void Cucco();
|
||||
void Cucco_Fusion(Entity*);
|
||||
void CuccoChick(Entity*);
|
||||
void CuccoChick_Fusion(Entity*);
|
||||
void CuccoChick();
|
||||
void CuccoChick_Fusion();
|
||||
void FusionMenuNPC(Entity*);
|
||||
void FusionMenuNPC_Head(Entity*);
|
||||
void Phonograph(Entity*);
|
||||
void NPC58(Entity*);
|
||||
void NPC58_Head(Entity*);
|
||||
void NPC58();
|
||||
void NPC58_Head();
|
||||
|
||||
extern void (*const gNPCFunctions[128][3])(Entity*);
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
#ifndef ZELDA_H
|
||||
#define ZELDA_H
|
||||
|
||||
#include "entity.h"
|
||||
|
||||
typedef struct {
|
||||
/*0x00*/ Entity base;
|
||||
/*0x68*/ u8 unused[24];
|
||||
/*0x80*/ u16 unk_80;
|
||||
} ZeldaEntity;
|
||||
|
||||
typedef struct {
|
||||
/*0x00*/ Entity base;
|
||||
/*0x68*/ s8 unk_68;
|
||||
/*0x69*/ s8 unk_69;
|
||||
/*0x6a*/ u8 unused[10];
|
||||
/*0x74*/ u16 unk_74;
|
||||
} ZeldaFollowerEntity;
|
||||
|
||||
#endif // ZELDA_H
|
||||
+2
-2
@@ -134,7 +134,7 @@ typedef enum {
|
||||
EZLO_CAP_FLYING,
|
||||
GIANT_TWIG,
|
||||
OBJECT_63,
|
||||
THUNDERBOLD,
|
||||
THUNDERBOLT,
|
||||
LADDER_HOLE,
|
||||
WATER_DROP_OBJECT,
|
||||
GLEEROK_PARTICLE,
|
||||
@@ -330,7 +330,7 @@ void SwordsmanNewsletter();
|
||||
void EzloCapFlying();
|
||||
void GiantTwig();
|
||||
void Object63();
|
||||
void Thunderbold();
|
||||
void Thunderbolt();
|
||||
void LadderHoleInBookshelf();
|
||||
void WaterDropObject();
|
||||
void GleerokParticle();
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
#ifndef CUTSCENEORCHESTRATOR_H
|
||||
#define CUTSCENEORCHESTRATOR_H
|
||||
|
||||
#include "script.h"
|
||||
|
||||
typedef struct {
|
||||
/*0x00*/ Entity base;
|
||||
/*0x68*/ u8 unused1[28];
|
||||
/*0x84*/ ScriptExecutionContext* context;
|
||||
} CutsceneOrchestratorEntity;
|
||||
|
||||
#endif // CUTSCENEORCHESTRATOR_H
|
||||
@@ -0,0 +1,18 @@
|
||||
#ifndef ITEMONGROUND_H
|
||||
#define ITEMONGROUND_H
|
||||
|
||||
#include "entity.h"
|
||||
|
||||
typedef struct {
|
||||
/*0x00*/ Entity base;
|
||||
/*0x68*/ u8 unk_68;
|
||||
/*0x69*/ u8 unk_69;
|
||||
/*0x6a*/ u8 unk_6a;
|
||||
/*0x6b*/ u8 unused1[1];
|
||||
/*0x6c*/ u16 unk_6c;
|
||||
/*0x6e*/ u16 unk_6e;
|
||||
/*0x70*/ u8 unused2[22];
|
||||
/*0x86*/ u16 unk_86;
|
||||
} ItemOnGroundEntity;
|
||||
|
||||
#endif // ITEMONGROUND_H
|
||||
@@ -0,0 +1,21 @@
|
||||
#ifndef LILYPADLARGE_H
|
||||
#define LILYPADLARGE_H
|
||||
|
||||
#include "entity.h"
|
||||
|
||||
typedef struct {
|
||||
Entity base;
|
||||
u8 unk_68[4];
|
||||
s32 unk_6c;
|
||||
s32 unk_70;
|
||||
s16 unk_74;
|
||||
s16 unk_76;
|
||||
union SplitWord unk_78;
|
||||
union SplitWord unk_7c;
|
||||
u8 unk_80[2];
|
||||
u16 unk_82;
|
||||
u8 unk_84;
|
||||
u8 unk_85;
|
||||
} LilypadLargeEntity;
|
||||
|
||||
#endif // LILYPADLARGE_H
|
||||
+4
-2
@@ -25,7 +25,6 @@ bool32 EntityWithinDistance(Entity* entity, s32 x, s32 y, s32 distance);
|
||||
u32 sub_0806FCA0(Entity*, Entity*);
|
||||
u32 sub_0806F58C(Entity*, Entity*);
|
||||
u32 PointInsideRadius(s32 x, s32 y, s32 radius);
|
||||
u32 sub_0806F5A4(u32 idx);
|
||||
bool32 sub_0806F3E4(Entity*);
|
||||
void LinearMoveUpdate(Entity*);
|
||||
bool32 sub_0806FD54(Entity*);
|
||||
@@ -35,7 +34,10 @@ u32 sub_0806F730(Entity*);
|
||||
bool32 sub_0806F520(Entity*);
|
||||
void sub_0806F4E8(Entity*);
|
||||
bool32 sub_0806FC80(Entity*, Entity*, s32);
|
||||
u32 sub_0806F5B0(u32);
|
||||
/** Maps the direction to an animation state 0 to 3. */
|
||||
u32 GetAnimationStateForDirection4(u32 direction);
|
||||
/** Maps the direction to an animation state 0 to 8. */
|
||||
u32 GetAnimationStateForDirection8(u32 direction);
|
||||
u32 sub_0806F824(Entity*, Entity*, s32, s32);
|
||||
u32 sub_0806F948(Entity*);
|
||||
void sub_0806FBB4(Entity*);
|
||||
|
||||
+184
-5
@@ -95,6 +95,12 @@ typedef enum {
|
||||
CONTROL_DISABLED,
|
||||
} PlayerControlMode;
|
||||
|
||||
typedef enum {
|
||||
DIR_DIAGONAL = 0x4,
|
||||
DIR_NOT_MOVING_CHECK = 0x80,
|
||||
DIR_NONE = 0xff,
|
||||
} PlayerDirections;
|
||||
|
||||
typedef enum {
|
||||
PL_BUSY = 0x1,
|
||||
PL_FLAGS2 = 0x2,
|
||||
@@ -125,6 +131,8 @@ typedef enum {
|
||||
PL_SWORD_THRUST = 0x8000000,
|
||||
PL_USE_OCARINA = 0x10000000,
|
||||
PL_CLIMBING = 0x20000000,
|
||||
PL_FLAGS40000000 = 0x40000000,
|
||||
PL_FLAGS80000000 = 0x80000000,
|
||||
} PlayerFlags;
|
||||
|
||||
enum PlayerItemId {
|
||||
@@ -201,7 +209,8 @@ typedef enum {
|
||||
SURFACE_AUTO_LADDER,
|
||||
SURFACE_CLIMB_WALL,
|
||||
SURFACE_2C,
|
||||
SURFACE_2D // reuses SurfaceAction_Dust
|
||||
SURFACE_2D, // reuses SurfaceAction_Dust
|
||||
SURFACE_FF = 0xff,
|
||||
} SurfaceType;
|
||||
|
||||
typedef enum {
|
||||
@@ -275,6 +284,174 @@ typedef enum {
|
||||
SWORD_MOVE_LOW_BEAM,
|
||||
} SwordMove;
|
||||
|
||||
typedef enum {
|
||||
ANIM_DEFAULT = 0x100,
|
||||
ANIM_WALK = 0x104,
|
||||
ANIM_SWORD = 0x108,
|
||||
ANIM_BOUNCE = 0x114,
|
||||
ANIM_SPINATTACK = 0x124,
|
||||
ANIM_GREATSPIN = 0x128,
|
||||
ANIM_ROLLATTACK_SPIN = 0x12c,
|
||||
ANIM_ROLLATTACK_SLIDE = 0x130,
|
||||
ANIM_ROLLATTACK_END = 0x134,
|
||||
ANIM_SHIELD_PULLOUT = 0x158,
|
||||
ANIM_SHIELD_WALK = 0x160,
|
||||
ANIM_SHIELD = 0x164,
|
||||
ANIM_SWORD_CHARGE = 0x168,
|
||||
ANIM_SWORD_CHARGE_WALK = 0x16c,
|
||||
ANIM_SWORD_CHARGE_BUMP = 0x170,
|
||||
ANIM_DOWN_THRUST = 0x174,
|
||||
ANIM_FALL = 0x1b8,
|
||||
ANIM_GET_ITEM_BIG = 0x1b9,
|
||||
ANIM_FALL_MINISH = 0x1ba,
|
||||
ANIM_DIE1 = 0x1bc,
|
||||
ANIM_GET_WHITE_SWORD = 0x1e2,
|
||||
ANIM_BOW_PULLOUT = 0x21c,
|
||||
ANIM_TRAPPED = 0x25c,
|
||||
ANIM_BOW_SHOOT = 0x27c,
|
||||
ANIM_BOW_CHARGE = 0x280,
|
||||
ANIM_BOW_WALK = 0x284,
|
||||
ANIM_ROCS_CAPE = 0x288,
|
||||
ANIM_SWIM_STILL = 0x28c,
|
||||
ANIM_SWIM_MOVE = 0x290,
|
||||
ANIM_FROZEN = 0x294,
|
||||
ANIM_DASH = 0x298,
|
||||
ANIM_ELECTROCUTED = 0x29c,
|
||||
ANIM_ROLL = 0x2ac,
|
||||
ANIM_DIE2 = 0x2bd,
|
||||
ANIM_DIVE = 0x2be,
|
||||
ANIM_IN_LAVA = 0x2c1,
|
||||
ANIM_PORTAL = 0x2c2,
|
||||
ANIM_PORTAL_SHRINK = 0x2c3,
|
||||
ANIM_DROWN_RESPAWN = 0x2ce,
|
||||
ANIM_CLIMB1_UP = 0x2cf,
|
||||
ANIM_CLIMB2_UP = 0x2d0,
|
||||
ANIM_CLIMB1_DOWN = 0x2d1,
|
||||
ANIM_CLIMB2_DOWN = 0x2d2,
|
||||
ANIM_CLIMB_FROM_TOP = 0x2d3,
|
||||
ANIM_CLIMB_LEFT = 0x2d4,
|
||||
ANIM_CLIMB_RIGHT = 0x2d5,
|
||||
ANIM_CLIMB_TO_TOP = 0x2d6,
|
||||
ANIM_BOTTLE_DRINK = 0x2df,
|
||||
ANIM_GET_ITEM_SMALL = 0x2e0,
|
||||
ANIM_PICKUP = 0x338,
|
||||
ANIM_PUSH = 0x33c,
|
||||
ANIM_PULL = 0x340,
|
||||
ANIM_THROW = 0x344,
|
||||
ANIM_CARRY = 0x348,
|
||||
ANIM_PULL2 = 0x34c,
|
||||
ANIM_CARRY_STAND = 0x350,
|
||||
ANIM_GRAB = 0x378,
|
||||
ANIM_FALL_ON_BACK = 0x3a0,
|
||||
ANIM_LAUNCHED = 0x3c0,
|
||||
ANIM_EZLO_SEARCH = 0x3c5,
|
||||
ANIM_EZLO_APPEAR_LEFT = 0x3c6,
|
||||
ANIM_EZLO_EYES_UP = 0x3c7,
|
||||
ANIM_EZLO_HEAD_DOWN = 0x3c8,
|
||||
ANIM_EZLO_LEAVE_LEFT = 0x3c9,
|
||||
ANIM_EZLO_APPEAR_RIGHT = 0x3ca,
|
||||
ANIM_EZLO_EYES_MIDDLE = 0x3cc,
|
||||
ANIM_EZLO_LEAVE_RIGHT = 0x3cd,
|
||||
ANIM_DEFAULT_NOCAP = 0x400,
|
||||
ANIM_WALK_NOCAP = 0x404,
|
||||
ANIM_SWORD_NOCAP = 0x408,
|
||||
ANIM_SHIELD_PULLOUT_NOCAP = 0x40c,
|
||||
ANIM_SHIELD_WALK_NOCAP = 0x410,
|
||||
ANIM_SHIELD_NOCAP = 0x414,
|
||||
ANIM_BOUNCE_NOCAP = 0x418,
|
||||
ANIM_HOP_NOCAP = 0x41c,
|
||||
ANIM_JUMP_NOCAP = 0x420,
|
||||
ANIM_LAND_NOCAP = 0x424,
|
||||
ANIM_ROLL_NOCAP = 0x438,
|
||||
ANIM_DROWN_NOCAP = 0x44c,
|
||||
ANIM_FALL_NOCAP = 0x458,
|
||||
ANIM_DIE1_NOCAP = 0x459,
|
||||
ANIM_DIE2_NOCAP = 0x45a,
|
||||
ANIM_GET_ITEM_BIG_NOCAP = 0x45b,
|
||||
ANIM_GET_ITEM_SMALL_NOCAP = 0x45e,
|
||||
ANIM_GET_ITEM_SWORD = 0x45f,
|
||||
ANIM_GUSTJAR_PULLOUT = 0x500,
|
||||
ANIM_GUSTJAR_SUCK = 0x504,
|
||||
ANIM_MOLEMITTS_FLOOR = 0x508,
|
||||
ANIM_MOLEMITTS_DIG = 0x50c,
|
||||
ANIM_GUSTJAR_END = 0x510,
|
||||
ANIM_GUSTJAR_BLOW = 0x514,
|
||||
ANIM_GUSTJAR_WALK = 0x518,
|
||||
ANIM_MOLEMITTS_CLANG = 0x51c,
|
||||
ANIM_MOLEMITTS_MISS = 0x520,
|
||||
ANIM_GUSTJAR_524 = 0x524,
|
||||
ANIM_ENTER_POT = 0x52c,
|
||||
ANIM_IN_POT = 0x530,
|
||||
ANIM_LANTERN_LIGHT = 0x600,
|
||||
ANIM_LANTERN_ON = 0x604,
|
||||
ANIM_LANTERN = 0x608,
|
||||
ANIM_LANTERN_BURN = 0x60c,
|
||||
ANIM_BOTTLE_POUR = 0x610,
|
||||
ANIM_BOTTLE_SWING = 0x614,
|
||||
ANIM_BOTTLE_SWING_END = 0x618,
|
||||
ANIM_FALL_IN_HOLE = 0x61c,
|
||||
ANIM_IN_HOLE = 0x620,
|
||||
ANIM_SPRING_JUMP = 0x624,
|
||||
ANIM_CANE = 0x628,
|
||||
ANIM_PARACHUTE_ACTIVATE = 0x700,
|
||||
ANIM_BOOMERANG_MAGIC = 0x704,
|
||||
ANIM_PARACHUTE = 0x708,
|
||||
ANIM_MINECART_PAUSE = 0x70c,
|
||||
ANIM_MINECART = 0x710,
|
||||
ANIM_PARACHUTE_TURN_RIGHT = 0x714,
|
||||
ANIM_PARACHUTE_TURN_OPPOSITE = 0x718,
|
||||
ANIM_PARACHUTE_TURN_LEFT = 0x71c,
|
||||
ANIM_PARACHUTE_TURN2_RIGHT = 0x720,
|
||||
ANIM_PARACHUTE_TURN2_OPPOSITE = 0x724,
|
||||
ANIM_PARACHUTE_TURN2_LEFT = 0x728,
|
||||
ANIM_DROWN = 0x72c,
|
||||
ANIM_PARACHUTE_FALL = 0x730,
|
||||
ANIM_PUT_ON_EZLO = 0x734,
|
||||
ANIM_SLEEP = 0x736,
|
||||
ANIM_WAKEUP = 0x737,
|
||||
ANIM_PORTAL_ACTIVATE = 0x738,
|
||||
ANIM_SLEEP_NOCAP = 0x73a,
|
||||
ANIM_WAKEUP_NOCAP = 0x73b,
|
||||
ANIM_GROW = 0x73c,
|
||||
ANIM_HOP = 0x80c,
|
||||
ANIM_JUMP = 0x810,
|
||||
ANIM_BOOMERANG = 0x818,
|
||||
ANIM_LAND = 0x820,
|
||||
ANIM_MOLDWORM_CAPTURED = 0x8b0,
|
||||
ANIM_GET_NEW_SWORD = 0x8bf,
|
||||
ANIM_OCARINA = 0x8e1,
|
||||
ANIM_GET_LAST_SWORD = 0x8e3,
|
||||
ANIM_GET_NEWCAP = 0x8e4,
|
||||
ANIM_PICKUP_NOCAP = 0x928,
|
||||
ANIM_CARRY_STAND_NOCAP = 0x92c,
|
||||
ANIM_THROW_NOCAP = 0x930,
|
||||
ANIM_CARRY_NOCAP = 0x934,
|
||||
ANIM_PUSH_NOCAP = 0x93c,
|
||||
ANIM_PULL_START_NOCAP = 0x940,
|
||||
ANIM_PULL_NOCAP = 0x944,
|
||||
ANIM_GRAB_NOCAP = 0x948,
|
||||
ANIM_FALL_IN_HOLE_NOCAP = 0x950,
|
||||
ANIM_IN_HOLE_NOCAP = 0x954,
|
||||
ANIM_SWORD_MINISH = 0xc00,
|
||||
ANIM_WALK_MINISH = 0xc04,
|
||||
ANIM_ROLL_MINISH = 0xc08,
|
||||
ANIM_SWIM_MINISH = 0xc0c,
|
||||
ANIM_DASH_MINISH = 0xc10,
|
||||
ANIM_DASH_CHARGE_MINISH = 0xc14,
|
||||
ANIM_BOUNCE_MINISH = 0xc18,
|
||||
ANIM_DROWN_MINISH = 0xc19,
|
||||
ANIM_DIE1_MINISH = 0xc1a,
|
||||
ANIM_DIE2_MINISH = 0xc1b,
|
||||
ANIM_DIVE_MINISH = 0xc1c,
|
||||
} PlayerAnimation;
|
||||
|
||||
typedef enum {
|
||||
PAS_NORTH,
|
||||
PAS_EAST,
|
||||
PAS_SOUTH,
|
||||
PAS_WEST,
|
||||
} PlayerAnimationState;
|
||||
|
||||
typedef struct {
|
||||
/*0x00*/ u8 prevAnim;
|
||||
/*0x01*/ u8 grab_status;
|
||||
@@ -304,7 +481,8 @@ typedef struct {
|
||||
/*0x1c*/ u8 field_0x1c;
|
||||
/*0x1d*/ u8 gustJarSpeed;
|
||||
/*0x1e*/ u8 dash_state;
|
||||
/*0x1f*/ u8 field_0x1f[3];
|
||||
/*0x1f*/ u8 field_0x1f[2];
|
||||
/*0x21*/ u8 bow_state;
|
||||
/*0x22*/ u16 tilePosition;
|
||||
/*0x24*/ u16 tileType;
|
||||
/*0x26*/ u8 swim_state; /**< Is the player swimming? 0x80 for diving */
|
||||
@@ -354,20 +532,21 @@ typedef struct {
|
||||
/*0x05*/ u8 arrowCount;
|
||||
/*0x06*/ u8 bombBagType;
|
||||
/*0x07*/ u8 quiverType;
|
||||
/*0x08*/ u8 filler[2];
|
||||
/*0x08*/ u8 figurineCount;
|
||||
/*0x09*/ u8 _hasAllFigurines;
|
||||
/*0x0a*/ u8 charm;
|
||||
/*0x0b*/ u8 picolyteType;
|
||||
/*0x0c*/ u8 itemButtons[2];
|
||||
/*0x0e*/ u8 bottles[4];
|
||||
/*0x12*/ u8 effect;
|
||||
/*0x13*/ u8 hasAllFigurines;
|
||||
/*0x14*/ u8 filler3[4];
|
||||
/*0x14*/ u8 filler14[4];
|
||||
/*0x18*/ u16 rupees;
|
||||
/*0x1a*/ u16 shells;
|
||||
/*0x1c*/ u16 charmTimer;
|
||||
/*0x1e*/ u16 picolyteTimer;
|
||||
/*0x20*/ u16 effectTimer;
|
||||
/*0x22*/ u8 filler4[6];
|
||||
/*0x22*/ u8 filler22[2];
|
||||
} Stats;
|
||||
|
||||
#define SLOT_A 0
|
||||
|
||||
+12
-12
@@ -16,31 +16,31 @@ void DirtBallProjectile(Entity*);
|
||||
void WindProjectile(Entity*);
|
||||
void FireProjectile(Entity*);
|
||||
void IceProjectile(Entity*);
|
||||
void GleerokProjectile(Entity*);
|
||||
void GleerokProjectile();
|
||||
void KeatonDagger(Entity*);
|
||||
void GuardLineOfSight(Entity*);
|
||||
void ArrowProjectile(Entity*);
|
||||
void MazaalEnergyBeam(Entity*);
|
||||
void OctorokBossProjectile(Entity*);
|
||||
void OctorokBossProjectile();
|
||||
void StalfosProjectile(Entity*);
|
||||
void LakituCloudProjectile(Entity*);
|
||||
void LakituLightning(Entity*);
|
||||
void MandiblesProjectile(Entity*);
|
||||
void RemovableDust(Entity*);
|
||||
void SpiderWeb(Entity*);
|
||||
void MandiblesProjectile();
|
||||
void RemovableDust();
|
||||
void SpiderWeb();
|
||||
void TorchTrapProjectile(Entity*);
|
||||
void GuruguruBarProjectile(Entity*);
|
||||
void V1DarkMagicProjectile(Entity*);
|
||||
void BallAndChain(Entity*);
|
||||
void V1FireProjectile(Entity*);
|
||||
void V1DarkMagicProjectile();
|
||||
void BallAndChain();
|
||||
void V1FireProjectile();
|
||||
void CannonballProjectile(Entity*);
|
||||
void V1EyeLaser(Entity*);
|
||||
void V1EyeLaser();
|
||||
void Winder(Entity*);
|
||||
void SpikedRollers(Entity*);
|
||||
void V2Projectile(Entity*);
|
||||
void V2Projectile();
|
||||
void V3HandProjectile(Entity*);
|
||||
void V3ElectricProjectile(Entity*);
|
||||
void GyorgTail(Entity*);
|
||||
void V3ElectricProjectile();
|
||||
void GyorgTail();
|
||||
void GyorgMaleEnergyProjectile(Entity*);
|
||||
void V3TennisBallProjectile(Entity*);
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
#define WINDER_NUM_SEGMENTS 8
|
||||
|
||||
typedef struct {
|
||||
Entity base;
|
||||
s16 positions[2 * WINDER_NUM_SEGMENTS];
|
||||
/*0x00*/ Entity base;
|
||||
/*0x68*/ s16 positions[2 * WINDER_NUM_SEGMENTS];
|
||||
} WinderEntity;
|
||||
|
||||
#endif // WINDER_H
|
||||
|
||||
+16
-4
@@ -135,7 +135,7 @@ typedef struct {
|
||||
/* 0x04 */ s16 start_pos_x;
|
||||
/* 0x06 */ s16 start_pos_y;
|
||||
/* 0x08 */ u8 layer;
|
||||
/* 0x09 */ u8 field_0x15;
|
||||
/* 0x09 */ u8 filler9;
|
||||
/* 0x0a */ u8 dungeon_area;
|
||||
/* 0x0b */ u8 dungeon_room;
|
||||
/* 0x0c */ s16 dungeon_x;
|
||||
@@ -144,7 +144,7 @@ typedef struct {
|
||||
/* 0x12 */ u16 dungeon_map_y;
|
||||
/* 0x14 */ u16 overworld_map_x;
|
||||
/* 0x16 */ u16 overworld_map_y;
|
||||
/* 0x18 */ u8 field_0x24[8];
|
||||
/* 0x18 */ u8 filler18[8];
|
||||
} PlayerRoomStatus;
|
||||
static_assert(sizeof(PlayerRoomStatus) == 0x20);
|
||||
|
||||
@@ -157,8 +157,20 @@ typedef struct {
|
||||
/* 0x0a */ u16 stairs_idx; // seems to be a tile type @see MetaTileType, set in UpdateDoorTransition()
|
||||
/* 0x0c */ PlayerRoomStatus player_status;
|
||||
/* 0x2c */ u8 entity_update_type; // differentiates entity priority on kinstone menu?
|
||||
/* 0x2d */ u8 field_0x2c[0x8];
|
||||
/* 0x2d */ u8 field2d;
|
||||
/* 0x2e */ u8 location;
|
||||
/* 0x2f */ u8 field2f;
|
||||
/* 0x30 */ u8 field30;
|
||||
/* 0x31 */ u8 field31;
|
||||
/* 0x32 */ u8 field32;
|
||||
/* 0x33 */ u8 field33;
|
||||
#if defined(JP) || defined(EU)
|
||||
/* 0x34 */ u8 hint_height;
|
||||
/* 0x35 */ u8 field35;
|
||||
#else
|
||||
/* 0x34 */ u8 field35;
|
||||
/* 0x35 */ u8 hint_height;
|
||||
#endif
|
||||
/* 0x36 */ u16 hint_idx;
|
||||
/* 0x38 */ u8 field_0x38;
|
||||
/* 0x39 */ u8 field_0x39;
|
||||
@@ -239,7 +251,7 @@ void* GetRoomProperty(u32 area, u32 room, u32 property);
|
||||
|
||||
bool32 LoadFixedGFX(Entity*, u32);
|
||||
void UnloadGFXSlots(Entity*);
|
||||
void sub_0804B3C4(TileEntity*);
|
||||
void LoadSmallChestTile2(TileEntity*);
|
||||
void sub_0804B0B0(u32 arg0, u32 arg1);
|
||||
|
||||
void DoExitTransition(const ScreenTransitionData* data);
|
||||
|
||||
+56
-39
@@ -28,52 +28,69 @@ typedef enum {
|
||||
*/
|
||||
extern SaveResult HandleSave(u32 idx);
|
||||
|
||||
/**
|
||||
* Contains save data regarding kinstones
|
||||
*/
|
||||
typedef struct {
|
||||
u8 unused[2]; /**< unused */
|
||||
u8 didAllFusions; /**< completed all 100 kinstone fusions */
|
||||
u8 fusedCount; /**< number of kinstones fused */
|
||||
u8 types[19]; /**< item id for each kinstone type present in kinstone bag */
|
||||
u8 amounts[19]; /**< amount of each kinstone type above */
|
||||
u8 filler[3]; /**< unused filler */
|
||||
u8 fuserProgress[128]; /**< indexed by fuser id, incremented after fusion */
|
||||
u8 fuserOffers[128]; /**< available kinstone fusion for each fuser */
|
||||
u8 fusedKinstones[13]; /**< bitfield for fused kinstones
|
||||
* @see CheckKinstoneFused */
|
||||
u8 fusionUnmarked[13]; /**< bitfield for disabled fusion map markers
|
||||
* @see CheckFusionMapMarkerDisabled */
|
||||
} KinstoneSave;
|
||||
|
||||
/**
|
||||
* Contains all information about a save file.
|
||||
* The contents of this structure are read from and written to EEPROM.
|
||||
*/
|
||||
typedef struct {
|
||||
/*0x000*/ u8 invalid; /**< File is invalid. */
|
||||
/*0x001*/ u8 initialized; /**< File is initialized. */
|
||||
/*0x002*/ u8 msg_speed; /**< Message speed. */
|
||||
/*0x003*/ u8 brightness; /**< Brightness. */
|
||||
/*0x004*/ u8 filler4[0x2];
|
||||
/*0x006*/ u8 saw_staffroll;
|
||||
/*0x007*/ u8 unk7; // TODO rolling barrel state?
|
||||
/*0x008*/ u8 global_progress; /**< @see UpdateGlobalProgress */
|
||||
/*0x009*/ u8 field_0x9[0x17];
|
||||
/*0x020*/ u16 field_0x20;
|
||||
/*0x022*/ u8 field_0x22[0x1e];
|
||||
/*0x040*/ u32 windcrests; /**< Windcrest flags. bits 0 - 0x10: Visited area of the overworld. Above 0x18: windcrest
|
||||
activated. */
|
||||
/*0x044*/ u8 filler44[0xC];
|
||||
/*0x050*/ u32 unk50;
|
||||
/*0x054*/ u8 filler54[0x8];
|
||||
/*0x05C*/ u32 unk5C;
|
||||
/*0x060*/ u32 areaVisitFlags[8]; /**< Area visit flags. */
|
||||
/*0x080*/ char name[FILENAME_LENGTH]; /**< Save file name. */
|
||||
/*0x086*/ u8 filler86[0x2];
|
||||
/*0x000*/ u8 invalid; /**< save file is invalid */
|
||||
/*0x001*/ u8 initialized; /**< save file is initialized */
|
||||
/*0x002*/ u8 msg_speed; /**< message speed setting */
|
||||
/*0x003*/ u8 brightness; /**< brightness setting */
|
||||
/*0x004*/ u8 filler4[2]; /**< unused filler */
|
||||
/*0x006*/ u8 saw_staffroll; /**< beat the game and watched the credits */
|
||||
/*0x007*/ u8 dws_barrel_state; /**< state of the big barrel in DWS, 0 or 2 */
|
||||
/*0x008*/ u8 global_progress; /**< @see UpdateGlobalProgress */
|
||||
/*0x009*/ u8 available_figurines; /**< figurines available to get */
|
||||
/*0x00A*/ u8 fillerA[22]; /**< unused filler */
|
||||
/*0x020*/ u16 map_hints; /**< bitmask, used by subtask MapHint */
|
||||
/*0x022*/ u8 filler22[30]; /**< unused filler */
|
||||
/*0x040*/ u32 windcrests; /**< upper 8 bit Windcrest flags @see WindcrestID
|
||||
* lower bits used for other things */
|
||||
/*0x044*/ u8 filler44[12]; /**< unused filler */
|
||||
/*0x050*/ u32 enemies_killed; /**< number of enemies killed */
|
||||
/*0x054*/ u8 filler54[8]; /**< unused filler */
|
||||
/*0x05C*/ u32 items_bought; /**< number of items bought in stockwells shop */
|
||||
/*0x060*/ u32 areaVisitFlags[8]; /**< Area visit flags. */
|
||||
/*0x080*/ char name[FILENAME_LENGTH]; /**< Save file name. */
|
||||
/*0x086*/ u8 filler86[2]; /**< unused filler */
|
||||
/*0x088*/ PlayerRoomStatus saved_status; /**< Player room status. */
|
||||
/*0x0A8*/ Stats stats; /**< Player stats. */
|
||||
/*0x0D0*/ u8 fillerD0[34];
|
||||
/*0x0F2*/ u8 inventory[36];
|
||||
/*0x116*/ u8 didAllFusions;
|
||||
/*0x117*/ u8 fusedKinstoneCount;
|
||||
/*0x118*/ u8 kinstoneTypes[0x13]; // 0x65-0x75 for each kinstone type present in kinstone bag
|
||||
/*0x12B*/ u8 kinstoneAmounts[0x13]; // amount of each kinstone type above
|
||||
/*0x13E*/ u8 filler13E[3];
|
||||
/*0x141*/ u8 fuserProgress[128]; // indexed by fuser id, incremented after fusion
|
||||
/*0x1C1*/ u8 fuserOffers[128]; // available kinstone fusion for each fuser
|
||||
/*0x241*/ u8 fusedKinstones[13]; /**< Bitfield for fused kinstones. @see CheckKinstoneFused */
|
||||
/*0x24E*/ u8 fusionUnmarked[13]; /**< Bitfield for disabled fusion map markers. @see CheckFusionMapMarkerDisabled */
|
||||
/*0x25B*/ u8 filler25B;
|
||||
/*0x25C*/ u8 flags[0x200]; /**< Flags. */
|
||||
/*0x45C*/ u8 dungeonKeys[0x10]; // TODO Indexed by dungeon id, keys per dungeon
|
||||
/*0x46C*/ u8 dungeonItems[0x10]; // TODO items in the dungeon. 4: compass, 2: big key, 1: small key
|
||||
/*0x47C*/ u8 dungeonWarps[0x10]; // TODO indexed by dungeon id, EnableDungeonWarp, IsDungeonWarpActive
|
||||
/*0x48C*/ u32 timers[7];
|
||||
/*0x4A8*/ u32 demo_timer; /**< Demo timer. */
|
||||
/*0x4AC*/ u8 filler4ac[0x8];
|
||||
/*0x0CC*/ u8 fillerCC[2]; /**< unused filler */
|
||||
/*0x0D0*/ u8 figurines[36]; /**< figurine bitset */
|
||||
/*0x0F2*/ u8 inventory[34]; /**< 2 bit per item @see Item */
|
||||
/*0x114*/ KinstoneSave kinstones; /**< save data for kinstones @see KinstoneSave */
|
||||
/*0x25C*/ u8 flags[0x200]; /**< flags */
|
||||
/*0x45C*/ u8 dungeonKeys[0x10]; /**< indexed by dungeon id, keys per dungeon */
|
||||
/*0x46C*/ u8 dungeonItems[0x10]; /**< dungeon items 4: compass, 2: big key, 1: small key */
|
||||
/*0x47C*/ u8 dungeonWarps[0x10]; /**< indexed by dungeon id */
|
||||
/*0x48C*/ u32 darknut_timer; /**< timer for darknut fight before Vaati fight */
|
||||
/*0x490*/ u32 drug_kill_count; /**< "timer" enemy kill count when turning in the last drug quest item */
|
||||
/*0x494*/ u32 biggoron_timer; /**< timer for biggoron mirror shield */
|
||||
/*0x498*/ u32 vaati_timer; /**< timer for vaati wrath fight */
|
||||
/*0x49C*/ u32 timer4; /**< "timer4" unused */
|
||||
/*0x4A0*/ u32 timer5; /**< "timer5" unused */
|
||||
/*0x4A4*/ u32 timer6; /**< "timer6" unused */
|
||||
/*0x4A8*/ u32 demo_timer; /**< timer for US demo version playtime limit */
|
||||
/*0x4AC*/ u8 filler4ac[8]; /**< unused filler */
|
||||
} SaveFile;
|
||||
|
||||
/**
|
||||
|
||||
+2
-2
@@ -51,7 +51,7 @@ extern u32 GetNextScriptCommandHalfwordAfterCommandMetadata(u16*);
|
||||
void UnloadCutsceneData(Entity* entity);
|
||||
void StartPlayerScript(Script* script);
|
||||
|
||||
void sub_0807DD50(Entity* entity);
|
||||
void InitScriptForNPC(Entity* entity);
|
||||
void sub_0807DD64(Entity* entity);
|
||||
void sub_0807DD80(Entity* entity, Script* script);
|
||||
void LookAt(Entity*, ScriptExecutionContext*, u32, u32);
|
||||
@@ -60,7 +60,7 @@ ScriptExecutionContext* StartCutscene(Entity* entity, Script* script);
|
||||
void ExecuteScriptForEntity(Entity* entity, void (*postScriptCallback)(Entity*, ScriptExecutionContext*));
|
||||
void HandlePostScriptActions(Entity* entity, ScriptExecutionContext* context);
|
||||
void HandleEntity0x82Actions(Entity* entity);
|
||||
void sub_0807DD94(Entity*, void (*function)(Entity*, ScriptExecutionContext*));
|
||||
void ExecuteScriptAndHandleAnimation(Entity* entity, void (*postScriptCallback)(Entity*, ScriptExecutionContext*));
|
||||
ScriptExecutionContext* CreateScriptExecutionContext(void);
|
||||
void InitScriptForEntity(Entity* entity, ScriptExecutionContext* context, Script* script);
|
||||
|
||||
|
||||
+2
-2
@@ -168,7 +168,7 @@ typedef enum {
|
||||
SFX_FALL_HOLE,
|
||||
SFX_86,
|
||||
SFX_PLY_DIE,
|
||||
SFX_88,
|
||||
SFX_GRAB,
|
||||
SFX_BARREL_RELEASE,
|
||||
SFX_BARREL_ENTER,
|
||||
SFX_BARREL_ROLL,
|
||||
@@ -295,7 +295,7 @@ typedef enum {
|
||||
SFX_PLACE_OBJ,
|
||||
SFX_105,
|
||||
SFX_106,
|
||||
SFX_107,
|
||||
SFX_ITEM_GLOVES_AIR,
|
||||
SFX_108,
|
||||
SFX_ITEM_GET,
|
||||
SFX_10A,
|
||||
|
||||
+9
-9
@@ -118,14 +118,14 @@ typedef enum {
|
||||
META_TILE_TYPE_113, // 0x71
|
||||
META_TILE_TYPE_114, // 0x72
|
||||
META_TILE_TYPE_115, // 0x73 CHEST
|
||||
META_TILE_TYPE_116, // 0x74
|
||||
META_TILE_TYPE_116, // 0x74 CHEST_OPEN
|
||||
META_TILE_TYPE_117, // 0x75
|
||||
META_TILE_TYPE_118, // 0x76
|
||||
META_TILE_TYPE_119, // 0x77
|
||||
META_TILE_TYPE_120, // 0x78
|
||||
META_TILE_TYPE_121, // 0x79
|
||||
META_TILE_TYPE_122, // 0x7a
|
||||
META_TILE_TYPE_123, // 0x7b
|
||||
META_TILE_TYPE_118, // 0x76 TORCH
|
||||
META_TILE_TYPE_119, // 0x77 TORCH_LIT
|
||||
META_TILE_TYPE_120, // 0x78 PRESSURE_BUTTON
|
||||
META_TILE_TYPE_121, // 0x79 PRESSURE_BUTTON_PRESSED
|
||||
META_TILE_TYPE_122, // 0x7a PRESSURE_SQUARE
|
||||
META_TILE_TYPE_123, // 0x7b PRESSURE_SQUARE_PRESSED
|
||||
META_TILE_TYPE_124, // 0x7c
|
||||
META_TILE_TYPE_125, // 0x7d
|
||||
META_TILE_TYPE_126, // 0x7e
|
||||
@@ -148,8 +148,8 @@ typedef enum {
|
||||
META_TILE_TYPE_143, // 0x8f
|
||||
META_TILE_TYPE_144, // 0x90
|
||||
META_TILE_TYPE_145, // 0x91
|
||||
META_TILE_TYPE_146, // 0x92
|
||||
META_TILE_TYPE_147, // 0x93
|
||||
META_TILE_TYPE_146, // 0x92 STAIRS_UP
|
||||
META_TILE_TYPE_147, // 0x93 STAIRS_DOWN
|
||||
META_TILE_TYPE_148, // 0x94
|
||||
META_TILE_TYPE_149, // 0x95
|
||||
META_TILE_TYPE_150, // 0x96
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
#ifndef SAVEFILE_WINDCREST_H
|
||||
#define SAVEFILE_WINDCREST_H
|
||||
|
||||
typedef enum WindcrestID {
|
||||
WINDCREST_MT_CRENEL = 24,
|
||||
WINDCREST_VEIL_FALLS,
|
||||
WINDCREST_CLOUD_TOPS,
|
||||
WINDCREST_HYRULE_TOWN,
|
||||
WINDCREST_LAKE_HYLIA,
|
||||
WINDCREST_CASTOR_WILDS,
|
||||
WINDCREST_SOUTH_HYRULE_FIELD,
|
||||
WINDCREST_MINISH_WOODS,
|
||||
} WindcrestID;
|
||||
|
||||
#endif // SAVEFILE_WINDCREST_H
|
||||
@@ -628,7 +628,7 @@ SECTIONS {
|
||||
src/object/chuchuBossParticle.o(.text);
|
||||
src/object/floatingPlatform.o(.text);
|
||||
src/object/gustJarParticle.o(.text);
|
||||
asm/object/evilSpirit.o(.text);
|
||||
src/object/evilSpirit.o(.text);
|
||||
src/object/houseDoorExterior.o(.text);
|
||||
src/object/rupee.o(.text);
|
||||
src/object/greatFairy.o(.text);
|
||||
@@ -704,7 +704,7 @@ SECTIONS {
|
||||
src/object/ezloCapFlying.o(.text);
|
||||
src/object/giantTwig.o(.text);
|
||||
src/object/object63.o(.text);
|
||||
src/object/thunderbold.o(.text);
|
||||
src/object/thunderbolt.o(.text);
|
||||
src/object/ladderHoleInBookshelf.o(.text);
|
||||
src/object/waterDropObject.o(.text);
|
||||
src/object/gleerokParticle.o(.text);
|
||||
@@ -1386,7 +1386,7 @@ SECTIONS {
|
||||
src/object/chuchuBossParticle.o(.rodata);
|
||||
src/object/floatingPlatform.o(.rodata);
|
||||
src/object/gustJarParticle.o(.rodata);
|
||||
data/const/object/evilSpirit.o(.rodata);
|
||||
src/object/evilSpirit.o(.rodata);
|
||||
data/animations/object/evilSpirit.o(.rodata);
|
||||
src/object/houseDoorExterior.o(.rodata);
|
||||
src/object/rupee.o(.rodata);
|
||||
@@ -1483,8 +1483,8 @@ SECTIONS {
|
||||
src/object/ezloCapFlying.o(.rodata);
|
||||
src/object/giantTwig.o(.rodata);
|
||||
src/object/object63.o(.rodata);
|
||||
src/object/thunderbold.o(.rodata);
|
||||
data/animations/object/thunderbold.o(.rodata);
|
||||
src/object/thunderbolt.o(.rodata);
|
||||
data/animations/object/thunderbolt.o(.rodata);
|
||||
src/object/ladderHoleInBookshelf.o(.rodata);
|
||||
src/object/gleerokParticle.o(.rodata);
|
||||
src/object/linkEmptyingBottle.o(.rodata);
|
||||
|
||||
+1
-1
@@ -53,7 +53,7 @@ void CopyOAM(void) {
|
||||
void DrawEntities(void) {
|
||||
void (*fn)(void);
|
||||
|
||||
gOAMControls._0[6] = gRoomTransition.field_0x2c[2] ? 15 : 0;
|
||||
gOAMControls._0[6] = gRoomTransition.field2f ? 15 : 0;
|
||||
gOAMControls._4 = gRoomControls.aff_x + gRoomControls.scroll_x;
|
||||
gOAMControls._6 = gRoomControls.aff_y + gRoomControls.scroll_y;
|
||||
gOAMControls.field_0x1++;
|
||||
|
||||
+186
-25
@@ -116,7 +116,7 @@ void sub_08019764(void) {
|
||||
UpdateEntities();
|
||||
DrawEntities();
|
||||
CopyOAM();
|
||||
if ((--gUnk_02018EB0.unk_4 == 0) || ((gInput.newKeys & 10) != 0)) {
|
||||
if ((--gUnk_02018EB0.unk_4 == 0) || ((gInput.newKeys & (B_BUTTON | START_BUTTON)) != 0)) {
|
||||
gUnk_02018EB0.unk_0++;
|
||||
}
|
||||
}
|
||||
@@ -170,7 +170,7 @@ u32 UpdatePlayerCollision(void) {
|
||||
u32 index;
|
||||
const s16* ptr1;
|
||||
const s16* ptr2;
|
||||
s32 tmp1;
|
||||
s32 framestate;
|
||||
u32 tmp2;
|
||||
u32 tmp3;
|
||||
// There are some weird assignment necessary to access gPlayerEntity.animationState correctly.
|
||||
@@ -178,18 +178,18 @@ u32 UpdatePlayerCollision(void) {
|
||||
u32 animationState2;
|
||||
u32 animationState3;
|
||||
|
||||
if (gPlayerState.framestate == 0) {
|
||||
tmp1 = gPlayerState.framestate_last;
|
||||
if (gPlayerState.framestate == PL_STATE_IDLE) {
|
||||
framestate = gPlayerState.framestate_last;
|
||||
} else {
|
||||
tmp1 = gPlayerState.framestate;
|
||||
framestate = gPlayerState.framestate;
|
||||
}
|
||||
|
||||
switch (tmp1) {
|
||||
case 3:
|
||||
switch (framestate) {
|
||||
case PL_STATE_GUSTJAR:
|
||||
return 0;
|
||||
case 0x12:
|
||||
case PL_STATE_DIE:
|
||||
return 0;
|
||||
case 0x16:
|
||||
case PL_STATE_DROWN:
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -198,7 +198,7 @@ u32 UpdatePlayerCollision(void) {
|
||||
} else {
|
||||
direction = gPlayerState.direction;
|
||||
}
|
||||
if (((direction & 0x83) == 0) && (gPlayerState.field_0xa == 0)) {
|
||||
if (((direction & (DIR_NOT_MOVING_CHECK | 0x3)) == 0) && (gPlayerState.field_0xa == 0)) {
|
||||
index = sub_0807BDB8(&gPlayerEntity, direction >> 2);
|
||||
if (index != 0xff && (gRoomControls.scroll_flags & 4) == 0) {
|
||||
ptr1 = &gUnk_080B4490[index * 2];
|
||||
@@ -254,10 +254,11 @@ u32 UpdatePlayerCollision(void) {
|
||||
if (gPlayerState.field_0xa != 0) {
|
||||
return 0;
|
||||
}
|
||||
if ((Direction8FromAnimationState(gPlayerEntity.animationState)) - gPlayerState.direction != 0) {
|
||||
if ((Direction8FromAnimationState(gPlayerEntity.animationState)) - gPlayerState.direction !=
|
||||
DirectionNorth) {
|
||||
return 0;
|
||||
}
|
||||
if ((gPlayerEntity.direction & 0x80) != 0) {
|
||||
if ((gPlayerEntity.direction & DIR_NOT_MOVING_CHECK) != 0) {
|
||||
return 0;
|
||||
}
|
||||
if (GetCollisionDataAtMetaTilePos(position, gPlayerEntity.collisionLayer) != COLLISION_DATA_15) {
|
||||
@@ -306,10 +307,10 @@ u32 UpdatePlayerCollision(void) {
|
||||
case VVV_58:
|
||||
case VVV_91:
|
||||
case SPECIAL_META_TILE_81:
|
||||
if ((gPlayerState.flags & PL_MINISH) != 0) {
|
||||
if (gPlayerState.flags & PL_MINISH) {
|
||||
return 0;
|
||||
}
|
||||
if (gPlayerEntity.animationState != 0) {
|
||||
if (gPlayerEntity.animationState != IdleNorth) {
|
||||
return 0;
|
||||
}
|
||||
gHUD.rActionInteractTile = R_ACTION_READ;
|
||||
@@ -357,7 +358,8 @@ u32 UpdatePlayerCollision(void) {
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
if ((Direction8FromAnimationState(gPlayerEntity.animationState)) - gPlayerState.direction != 0) {
|
||||
if ((Direction8FromAnimationState(gPlayerEntity.animationState)) - gPlayerState.direction !=
|
||||
DirectionNorth) {
|
||||
return 0;
|
||||
}
|
||||
if ((gPlayerEntity.direction & 0x80) != 0) {
|
||||
@@ -417,7 +419,7 @@ u32 UpdatePlayerCollision(void) {
|
||||
if ((animationState1 & 0xff) != 0) {
|
||||
return 0;
|
||||
}
|
||||
if (((gPlayerState.field_0x35 | gPlayerState.direction) & 0x80) != 0) {
|
||||
if (((gPlayerState.field_0x35 | gPlayerState.direction) & DIR_NOT_MOVING_CHECK) != 0) {
|
||||
return 0;
|
||||
}
|
||||
if ((gPlayerEntity.frame & 2) == 0) {
|
||||
@@ -557,7 +559,7 @@ u32 UpdatePlayerCollision(void) {
|
||||
if (animationState3 == 0) {
|
||||
return 0;
|
||||
}
|
||||
if (((gPlayerState.field_0x35 | gPlayerState.direction) & 0x80) != 0) {
|
||||
if (((gPlayerState.field_0x35 | gPlayerState.direction) & DIR_NOT_MOVING_CHECK) != 0) {
|
||||
return 0;
|
||||
}
|
||||
if ((gPlayerEntity.frame & 1) == 0) {
|
||||
@@ -576,7 +578,7 @@ u32 UpdatePlayerCollision(void) {
|
||||
if ((animationState2) != 4) {
|
||||
return 0;
|
||||
}
|
||||
if (((gPlayerState.field_0x35 | gPlayerState.direction) & 0x80) != 0) {
|
||||
if (((gPlayerState.field_0x35 | gPlayerState.direction) & DIR_NOT_MOVING_CHECK) != 0) {
|
||||
return 0;
|
||||
}
|
||||
if ((gPlayerEntity.frame & 1) == 0) {
|
||||
@@ -597,7 +599,8 @@ bool32 sub_0801A2B0(MapLayer* mapLayer, u32 position, u32 collisionType) {
|
||||
u16 temp4;
|
||||
|
||||
uVar1 = gUnk_080B4488[gPlayerEntity.animationState >> 1];
|
||||
if ((((gPlayerState.field_0x35 | gPlayerState.direction) & 0x80) == 0) && ((gPlayerEntity.frame & 1) != 0)) {
|
||||
if ((((gPlayerState.field_0x35 | gPlayerState.direction) & DIR_NOT_MOVING_CHECK) == 0) &&
|
||||
((gPlayerEntity.frame & 1) != 0)) {
|
||||
position = (u16)(position - (-uVar1)); // necessary for match
|
||||
temp4 = GetVvvForMetaTileType(GetMetaTileType(position, gPlayerEntity.collisionLayer));
|
||||
switch (temp4) {
|
||||
@@ -714,18 +717,18 @@ bool32 sub_0801A4F8(void) {
|
||||
if (GetInventoryValue(ITEM_POWER_BRACELETS) != 1) {
|
||||
return FALSE;
|
||||
}
|
||||
if ((gPlayerState.direction & 0x80) != 0) {
|
||||
if ((gPlayerState.direction & DIR_NOT_MOVING_CHECK) != 0) {
|
||||
return FALSE;
|
||||
}
|
||||
if (gPlayerState.direction != gPlayerEntity.direction) {
|
||||
return FALSE;
|
||||
}
|
||||
tmp = (((gPlayerEntity.direction + 4) & 0x18) >> 3);
|
||||
tmp = (((gPlayerEntity.direction + 4) & DirectionWest) >> 3);
|
||||
if ((gUnk_080B44A0[tmp] & gPlayerEntity.collisions) == 0) {
|
||||
return FALSE;
|
||||
}
|
||||
} else {
|
||||
if (((gPlayerState.field_0x35 | gPlayerState.direction) & 0x80) != 0) {
|
||||
if (((gPlayerState.field_0x35 | gPlayerState.direction) & DIR_NOT_MOVING_CHECK) != 0) {
|
||||
return FALSE;
|
||||
}
|
||||
if ((gPlayerEntity.frame & 1) == 0) {
|
||||
@@ -735,7 +738,165 @@ bool32 sub_0801A4F8(void) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/beanstalkSubtask/sub_0801A570.inc", u32 sub_0801A570(Entity* a, u32 b))
|
||||
u32 sub_0801A570(Entity* this, u32 param_2) {
|
||||
MapLayer* layer;
|
||||
u32 tileType;
|
||||
u32 position;
|
||||
u32 index1;
|
||||
u32 index2;
|
||||
u16* metatileTypes;
|
||||
u8* collisionData;
|
||||
|
||||
if (this == NULL) {
|
||||
return 0xffff;
|
||||
}
|
||||
layer = GetLayerByIndex(this->collisionLayer);
|
||||
metatileTypes = layer->metatileTypes;
|
||||
index1 = 4;
|
||||
index2 = 2;
|
||||
switch (this->animationState >> 1) {
|
||||
case 0:
|
||||
default:
|
||||
position = COORD_TO_TILE_OFFSET(this, 0, 10);
|
||||
do {
|
||||
if (metatileTypes[layer->mapData[position]] == 0x370)
|
||||
break;
|
||||
position--;
|
||||
index1--;
|
||||
} while (index1 != 0);
|
||||
|
||||
position = position - 0x40;
|
||||
do {
|
||||
if (metatileTypes[layer->mapData[(position)]] != 0x374)
|
||||
break;
|
||||
index2++;
|
||||
position -= 0x40;
|
||||
} while (index2 < 4);
|
||||
|
||||
if (param_2 == 0) {
|
||||
return position;
|
||||
}
|
||||
|
||||
index1 = GetMetaTileType(position, this->collisionLayer);
|
||||
if ((index1 - 0x369) > 1) {
|
||||
position = 0xffff;
|
||||
} else {
|
||||
collisionData = layer->collisionData - 0x40 + position;
|
||||
for (index1 = 0; index1 < index2; index1++) {
|
||||
if (collisionData[index1] != 0) {
|
||||
position = 0xffff;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
position = COORD_TO_TILE_OFFSET(this, -10, 0);
|
||||
do {
|
||||
if (layer->metatileTypes[layer->mapData[position]] == 0x370)
|
||||
break;
|
||||
position += 0x40;
|
||||
index1--;
|
||||
} while (index1 != 0);
|
||||
|
||||
position = position - 0x40;
|
||||
do {
|
||||
if (metatileTypes[layer->mapData[(position)]] != 0x374)
|
||||
break;
|
||||
index2++;
|
||||
position -= 0x40;
|
||||
} while (index2 < 4);
|
||||
|
||||
if (param_2 == 0) {
|
||||
return position;
|
||||
}
|
||||
|
||||
index1 = GetMetaTileType(position, this->collisionLayer);
|
||||
if (!(index1 == 0x369) && !(index1 == 0x36d))
|
||||
position = 0xffff;
|
||||
else {
|
||||
collisionData = layer->collisionData + (position + index2);
|
||||
for (index1 = 0; index1 < index2; index1++) {
|
||||
if (collisionData[index1 * 0x40] != 0) {
|
||||
position = 0xffff;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
position = COORD_TO_TILE_OFFSET(this, 0, -10);
|
||||
do {
|
||||
if (layer->metatileTypes[layer->mapData[position]] == 0x36f)
|
||||
break;
|
||||
position++;
|
||||
index1--;
|
||||
} while (index1 != 0);
|
||||
|
||||
position = position - 1;
|
||||
do {
|
||||
if (metatileTypes[layer->mapData[position]] != 0x372)
|
||||
break;
|
||||
index2++;
|
||||
position--;
|
||||
} while (index2 < 4);
|
||||
|
||||
if (param_2 == 0) {
|
||||
return position;
|
||||
}
|
||||
|
||||
index1 = GetMetaTileType(position, this->collisionLayer);
|
||||
if (!(index1 == 0x369) && !(index1 == 0x36b))
|
||||
position = 0xffff;
|
||||
else {
|
||||
collisionData = layer->collisionData + (position + (index2 * 0x40));
|
||||
for (index1 = 0; index1 < index2; index1++) {
|
||||
if (collisionData[index1] != 0) {
|
||||
position = 0xffff;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
position = COORD_TO_TILE_OFFSET(this, 10, 0);
|
||||
do {
|
||||
if (layer->metatileTypes[layer->mapData[position]] == 0x36f)
|
||||
break;
|
||||
position -= 0x40;
|
||||
index1--;
|
||||
} while (index1 != 0);
|
||||
|
||||
position = position - 1;
|
||||
do {
|
||||
if (metatileTypes[layer->mapData[position]] != 0x372)
|
||||
break;
|
||||
index2++;
|
||||
position--;
|
||||
} while (index2 < 4);
|
||||
|
||||
if (param_2 == 0) {
|
||||
return position;
|
||||
}
|
||||
|
||||
index1 = GetMetaTileType(position, this->collisionLayer);
|
||||
if (!(index1 == 0x369) && !(index1 == 0x36c))
|
||||
position = 0xffff;
|
||||
else {
|
||||
collisionData = layer->collisionData - 1 + position;
|
||||
for (index1 = 0; index1 < index2; index1++) {
|
||||
if (collisionData[index1 * 0x40] != 0) {
|
||||
position = 0xffff;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (param_2 != 0) {
|
||||
position |= index2 << 0xc;
|
||||
}
|
||||
return position;
|
||||
}
|
||||
|
||||
u32 sub_0801A8D0(Entity* this, u32 param_2) {
|
||||
u16* mapData;
|
||||
@@ -1032,7 +1193,7 @@ void sub_0801AE44(bool32 loadGfx) {
|
||||
}
|
||||
sub_080809D4();
|
||||
UpdateIsDiggingCave();
|
||||
if (gRoomTransition.field_0x2c[0] != 0) {
|
||||
if (gRoomTransition.field2d != 0) {
|
||||
sub_0807C898();
|
||||
}
|
||||
if (gArea.lightType != 0) {
|
||||
@@ -1069,7 +1230,7 @@ void SetMultipleTiles(const TileData* tileData, u32 basePosition, u32 layer) {
|
||||
// Add a new entry at the end of gMetaTilesForSpecialTiles
|
||||
void StoreMetaTileForSpecialTile(u32 metaTileIndex, u32 metaTilePos, u32 layer) {
|
||||
u32 index;
|
||||
if ((metaTileIndex < 0x4000) && (gRoomTransition.field_0x2c[3] == 0)) {
|
||||
if ((metaTileIndex < 0x4000) && (gRoomTransition.field30 == 0)) {
|
||||
index = gRoomVars.specialTileCount;
|
||||
if (index < 0x100) {
|
||||
gMetaTilesForSpecialTiles[index].metaTileIndex = metaTileIndex;
|
||||
|
||||
+19
-28
@@ -77,44 +77,35 @@ void UpdatePlayerInput(void) {
|
||||
u32 prevState;
|
||||
PlayerInput* playerInput;
|
||||
PlayerMacroEntry* playerMacro;
|
||||
u32 zero;
|
||||
|
||||
if (gPlayerState.playerInput.playerMacro != NULL) {
|
||||
// Player is controlled by macro.
|
||||
playerInput = &gPlayerState.playerInput;
|
||||
playerMacro = playerInput->playerMacro;
|
||||
if (playerInput->playerMacroWaiting == 0) { // Execute next macro entry.
|
||||
zero = 0;
|
||||
goto code_2;
|
||||
code_0:
|
||||
if (flags != 2) { // !PLAYER_MACRO_IGNORE
|
||||
playerInput->playerMacroWaiting = playerMacro->flags;
|
||||
playerInput->playerMacroHeldKeys = playerMacro->keys;
|
||||
}
|
||||
playerMacro++;
|
||||
playerInput->playerMacro = playerMacro;
|
||||
goto code_4;
|
||||
code_2:
|
||||
do {
|
||||
flags = playerMacro->flags >> 0xe;
|
||||
if (flags != 1) {
|
||||
break;
|
||||
if (flags == 1) // PLAYER_MACRO_JUMPTO
|
||||
(u8*)playerMacro += ((s16)playerMacro->keys);
|
||||
else {
|
||||
if (flags == 3) { // PLAYER_MACRO_END
|
||||
playerInput->playerMacroWaiting = 0;
|
||||
playerInput->playerMacroHeldKeys = 0;
|
||||
playerMacro = NULL;
|
||||
playerInput->playerMacro = playerMacro;
|
||||
break;
|
||||
} else {
|
||||
if (flags != 2) { // !PLAYER_MACRO_IGNORE
|
||||
playerInput->playerMacroWaiting = playerMacro->flags;
|
||||
playerInput->playerMacroHeldKeys = playerMacro->keys;
|
||||
}
|
||||
playerMacro++;
|
||||
playerInput->playerMacro = playerMacro;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// PLAYER_MACRO_JUMPTO
|
||||
(u8*)playerMacro += ((s16)playerMacro->keys);
|
||||
} while (TRUE);
|
||||
|
||||
if (flags == 3) {
|
||||
// PLAYER_MACRO_END
|
||||
playerInput->playerMacroWaiting = zero;
|
||||
playerInput->playerMacroHeldKeys = zero;
|
||||
playerMacro = NULL;
|
||||
playerInput->playerMacro = playerMacro;
|
||||
} else {
|
||||
goto code_0;
|
||||
}
|
||||
}
|
||||
code_4:
|
||||
playerInput->playerMacroWaiting--;
|
||||
keys = playerInput->playerMacroHeldKeys;
|
||||
} else {
|
||||
@@ -185,7 +176,7 @@ u32 ConvInputToState(u32 keys) {
|
||||
}
|
||||
|
||||
void sub_0805EE88(void) {
|
||||
if ((gRoomTransition.field_0x2c[2] != 0) && ((gRoomTransition.frameCount & 3) == 0)) {
|
||||
if ((gRoomTransition.field2f != 0) && ((gRoomTransition.frameCount & 3) == 0)) {
|
||||
LoadPaletteGroup((((u32)gRoomTransition.frameCount & 0xc) >> 2) + 0x2f);
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -54,7 +54,7 @@ void sub_0801D000(u32 a1) {
|
||||
tmp = 0;
|
||||
}
|
||||
|
||||
roomTransition->field_0x2c[2] = tmp;
|
||||
roomTransition->field2f = tmp;
|
||||
if (a1) {
|
||||
CleanUpObjPalettes();
|
||||
sub_0801CFD0(0xf);
|
||||
|
||||
+314
-153
@@ -19,10 +19,11 @@
|
||||
|
||||
extern u8 gUnk_03003DE0;
|
||||
extern u8 gzHeap[0x1000];
|
||||
extern u8 gUnk_02035542[];
|
||||
extern u32 gDungeonMap[0x800];
|
||||
extern s16 gUnk_02018EE0[];
|
||||
|
||||
extern void (*const gUnk_080C9CAC[])(void);
|
||||
extern void (*const gFuseActions[])(void);
|
||||
|
||||
static void StoreKeyInput(Input* input, u32 keyInput);
|
||||
void ClearOAM(void);
|
||||
@@ -78,6 +79,7 @@ bool32 IsRoomVisited(TileEntity* tileEntity, u32 bank);
|
||||
u32 sub_0801DF60(u32 a1, u8* p);
|
||||
u32 sub_0801DF78(u32 a1, u32 a2);
|
||||
void DrawMapPixel(u32 x, u32 y, s32 color);
|
||||
void sub_0801E64C(s32 x1, s32 y1, s32 x2, s32 y2, s32 offset);
|
||||
|
||||
extern void* GetRoomProperty(u32, u32, u32);
|
||||
|
||||
@@ -341,20 +343,106 @@ void sub_0801D898(void* dest, void* src, u32 word, u32 size) {
|
||||
} while (--size);
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/common/zMalloc.inc", void* zMalloc(u32 size));
|
||||
void* zMalloc(u32 size) {
|
||||
u16* heapStartOffset;
|
||||
u32 slotFound;
|
||||
u8* allocatedEntryStartOffset;
|
||||
u8* allocatedEntryEndOffset;
|
||||
u8* candidateSlotEndOffset;
|
||||
u8* candidateSlotStartOffset;
|
||||
u16 index1, index2;
|
||||
u16 numEntries;
|
||||
// align to 4
|
||||
size = (size + 3) & ~3;
|
||||
|
||||
typedef struct {
|
||||
u16 start; // chunk start (offset from gzHeap)
|
||||
u16 end; // chunk end (offset from gzHeap)
|
||||
} HEAP_ENTRY;
|
||||
heapStartOffset = (u16*)(gzHeap);
|
||||
numEntries = heapStartOffset[0];
|
||||
slotFound = TRUE;
|
||||
|
||||
typedef struct {
|
||||
u16 num_entries; // allocated HEAP_ENTRYs in entries
|
||||
// Check for a candidate slot at the tail-end of the heap buffer
|
||||
candidateSlotEndOffset = (u8*)heapStartOffset + sizeof(gzHeap);
|
||||
candidateSlotStartOffset = candidateSlotEndOffset - size;
|
||||
for (index2 = 0; index2 < numEntries; index2++) {
|
||||
|
||||
// maybe union, HEAP_ENTRY and heap space share the same space
|
||||
HEAP_ENTRY entries[0];
|
||||
u8 buf[4096 - 4]; // pads to 0x1000
|
||||
} HEAP;
|
||||
// Check if there is overlap with already allocated slots
|
||||
allocatedEntryStartOffset = gzHeap + heapStartOffset[(index2 * 2) + 1];
|
||||
allocatedEntryEndOffset = gzHeap + heapStartOffset[(index2 * 2) + 2];
|
||||
|
||||
if ((allocatedEntryStartOffset <= candidateSlotStartOffset &&
|
||||
candidateSlotStartOffset <= allocatedEntryEndOffset)) {
|
||||
slotFound = FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
if ((allocatedEntryStartOffset <= candidateSlotEndOffset &&
|
||||
candidateSlotEndOffset <= allocatedEntryEndOffset)) {
|
||||
slotFound = FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
if ((allocatedEntryStartOffset <= candidateSlotStartOffset &&
|
||||
candidateSlotEndOffset <= allocatedEntryEndOffset) ||
|
||||
(candidateSlotStartOffset <= allocatedEntryStartOffset &&
|
||||
allocatedEntryEndOffset <= candidateSlotEndOffset)) {
|
||||
slotFound = FALSE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!slotFound) {
|
||||
index1 = 0;
|
||||
// Start searching for candidate slot from the left side of the heap buffer.
|
||||
do {
|
||||
candidateSlotEndOffset = gzHeap + heapStartOffset[(index1 * 2) + 1];
|
||||
candidateSlotStartOffset = candidateSlotEndOffset - size;
|
||||
slotFound = FALSE;
|
||||
|
||||
// Ensure that the candidate slot doesn't collide with heap offsets section
|
||||
if (candidateSlotStartOffset >= (u8*)(2 + (u32)heapStartOffset + (numEntries << 2) + 4)) {
|
||||
slotFound = TRUE;
|
||||
|
||||
// Check if there is overlap with already allocated slots
|
||||
for (index2 = 0; index2 < numEntries; index2++) {
|
||||
|
||||
allocatedEntryStartOffset = gzHeap + heapStartOffset[(index2 * 2) + 1];
|
||||
allocatedEntryEndOffset = gzHeap + heapStartOffset[(index2 * 2) + 2];
|
||||
|
||||
if ((allocatedEntryStartOffset <= candidateSlotStartOffset &&
|
||||
candidateSlotStartOffset < allocatedEntryEndOffset)) {
|
||||
slotFound = FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
if ((allocatedEntryStartOffset < candidateSlotEndOffset &&
|
||||
candidateSlotEndOffset <= allocatedEntryEndOffset)) {
|
||||
slotFound = FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
if ((allocatedEntryStartOffset <= candidateSlotStartOffset &&
|
||||
candidateSlotEndOffset <= allocatedEntryEndOffset) ||
|
||||
(candidateSlotStartOffset <= allocatedEntryStartOffset &&
|
||||
allocatedEntryEndOffset <= candidateSlotEndOffset)) {
|
||||
slotFound = FALSE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (slotFound) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
} while ((index1 = (u16)(index1 + 1)) < numEntries);
|
||||
}
|
||||
if (!slotFound)
|
||||
return 0;
|
||||
|
||||
// Register successful allocation
|
||||
*(u16*)(gUnk_02035542 + (numEntries << 2)) = candidateSlotStartOffset - (gUnk_02035542 - 2);
|
||||
*(u16*)(gUnk_02035542 + (numEntries << 2) + 2) = candidateSlotStartOffset - (gUnk_02035542 - 2) + size;
|
||||
*(u16*)(gUnk_02035542 - 2) = numEntries + 1;
|
||||
MemClear(candidateSlotStartOffset, size);
|
||||
return candidateSlotStartOffset;
|
||||
}
|
||||
|
||||
void zFree(void* ptr) {
|
||||
u32 uVar1;
|
||||
@@ -627,69 +715,71 @@ bool32 IsRoomVisited(TileEntity* tileEntity, u32 bank) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_0801DFB4(Entity* entity, u32 textIndex, u32 a3, u32 a4) {
|
||||
void InitializeFuseInfo(Entity* entity, u32 textIndex, u32 cancelledTextIndex, u32 fusingTextIndex) {
|
||||
MemClear(&gFuseInfo, sizeof(gFuseInfo));
|
||||
gFuseInfo.textIndex = textIndex;
|
||||
gFuseInfo._8 = a3;
|
||||
gFuseInfo._a = a4;
|
||||
gFuseInfo.ent = entity;
|
||||
gFuseInfo.cancelledTextIndex = cancelledTextIndex;
|
||||
gFuseInfo.fusingTextIndex = fusingTextIndex;
|
||||
gFuseInfo.entity = entity;
|
||||
gFuseInfo.kinstoneId = gPossibleInteraction.kinstoneId;
|
||||
if (entity != NULL) {
|
||||
gFuseInfo.prevUpdatePriority = entity->updatePriority;
|
||||
entity->updatePriority = 2;
|
||||
}
|
||||
gFuseInfo._0 = 0;
|
||||
gFuseInfo.fusionState = FUSION_STATE_0;
|
||||
}
|
||||
|
||||
u32 sub_0801E00C(void) {
|
||||
gUnk_080C9CAC[gFuseInfo.action]();
|
||||
return gFuseInfo._0;
|
||||
// returns the fusion state
|
||||
u32 PerformFuseAction(void) {
|
||||
gFuseActions[gFuseInfo.action]();
|
||||
return gFuseInfo.fusionState;
|
||||
}
|
||||
|
||||
void sub_0801E02C(void) {
|
||||
void Fuse_Action0(void) {
|
||||
MessageFromFusionTarget(gFuseInfo.textIndex);
|
||||
gFuseInfo._0 = 3;
|
||||
gFuseInfo.fusionState = FUSION_STATE_3;
|
||||
gFuseInfo.action = 1;
|
||||
}
|
||||
|
||||
void sub_0801E044(void) {
|
||||
void Fuse_Action1(void) {
|
||||
if ((gMessage.doTextBox & 0x7F) == 0) {
|
||||
MenuFadeIn(4, 0);
|
||||
gFuseInfo._0 = 4;
|
||||
gFuseInfo.fusionState = FUSION_STATE_4;
|
||||
gFuseInfo.action = 2;
|
||||
SoundReq(SFX_6B);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0801E074(void) {
|
||||
u32 tmp;
|
||||
switch (gFuseInfo._0) {
|
||||
case 5:
|
||||
tmp = gFuseInfo._8;
|
||||
// Waits until FUSION_STATE_5 or FUSION_STATE_6 is reached and displays the corresponding message.
|
||||
void Fuse_Action2(void) {
|
||||
u32 textIndex;
|
||||
switch (gFuseInfo.fusionState) {
|
||||
case FUSION_STATE_5:
|
||||
textIndex = gFuseInfo.cancelledTextIndex;
|
||||
break;
|
||||
case 6:
|
||||
tmp = gFuseInfo._a;
|
||||
case FUSION_STATE_6:
|
||||
textIndex = gFuseInfo.fusingTextIndex;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
MessageFromFusionTarget(tmp);
|
||||
MessageFromFusionTarget(textIndex);
|
||||
gFuseInfo.action = 3;
|
||||
}
|
||||
|
||||
void sub_0801E0A0(void) {
|
||||
void Fuse_Action3(void) {
|
||||
if ((gMessage.doTextBox & 0x7f) == 0) {
|
||||
if (gFuseInfo.ent != NULL) {
|
||||
gFuseInfo.ent->updatePriority = gFuseInfo.prevUpdatePriority;
|
||||
if (gFuseInfo.entity != NULL) {
|
||||
gFuseInfo.entity->updatePriority = gFuseInfo.prevUpdatePriority;
|
||||
}
|
||||
gFuseInfo._0 = gFuseInfo._0 == 6 ? 2 : 1;
|
||||
gFuseInfo.fusionState = gFuseInfo.fusionState == FUSION_STATE_6 ? FUSION_STATE_2 : FUSION_STATE_1;
|
||||
}
|
||||
}
|
||||
|
||||
void MessageFromFusionTarget(u32 textIndex) {
|
||||
if (textIndex != 0) {
|
||||
if (gFuseInfo.ent != NULL) {
|
||||
MessageNoOverlap(textIndex, gFuseInfo.ent);
|
||||
if (gFuseInfo.entity != NULL) {
|
||||
MessageNoOverlap(textIndex, gFuseInfo.entity);
|
||||
} else {
|
||||
MessageFromTarget(textIndex);
|
||||
}
|
||||
@@ -798,46 +888,159 @@ void sub_0801E290(u32 param_1, u32 param_2, u32 count) {
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/common/sub_0801E31C.inc", void sub_0801E31C(u32 a1, u32 a2, u32 a3, u32 a4));
|
||||
void sub_0801E31C(u32 sp00, u32 sp04, s32 r10, s32 r9) {
|
||||
u16 sp1c, sp1c2;
|
||||
u16 kk, kk2;
|
||||
u16 uVar2;
|
||||
s32 r5;
|
||||
s32 r6;
|
||||
s32 r7;
|
||||
s32 r8; // the lower one of param3 and param4
|
||||
|
||||
ASM_FUNC("asm/non_matching/common/sub_0801E49C.inc", void sub_0801E49C(u32 a1, u32 a2, u32 a3, u32 a4));
|
||||
MemClear(&gUnk_02017AA0[gUnk_03003DE4[0]], 0xa00);
|
||||
if (r10 < r9) {
|
||||
r6 = 0;
|
||||
r7 = r8 = r10;
|
||||
r5 = 3 - r8 * 2;
|
||||
|
||||
void sub_0801E64C(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5) {
|
||||
s32 sVar1;
|
||||
s32* ptr = (s32*)gUnk_02018EE0;
|
||||
FORCE_REGISTER(s32 tmp, r1);
|
||||
|
||||
if ((0 <= param_2 || 0 <= param_4) && (param_2 < 0xa0 || (param_4 < 0xa0))) {
|
||||
if (param_2 > param_4) {
|
||||
SWAP(param_2, param_4, tmp);
|
||||
SWAP(param_1, param_3, tmp);
|
||||
while (r6 <= r7) {
|
||||
sp1c = Div(r9 * r6, r10);
|
||||
kk = Div(r9 * r7, r10);
|
||||
// TODO: Fix data type in declaration. There shouldn't be a need to cast this.
|
||||
((u32*)gUnk_02018EE0)[r6] = kk;
|
||||
((u32*)gUnk_02018EE0)[r7] = sp1c;
|
||||
if (r5 < 0) {
|
||||
r5 += 6 + r6 * 4;
|
||||
r6++;
|
||||
} else {
|
||||
r5 += 10 + (r6 - r7) * 4;
|
||||
r7--;
|
||||
r6++;
|
||||
}
|
||||
}
|
||||
if (param_2 != param_4) {
|
||||
sVar1 = Div((param_3 - param_1) * 0x10000, param_4 - param_2);
|
||||
if (param_2 < 0) {
|
||||
param_1 += (sVar1 * -param_2) >> 0x10;
|
||||
param_2 = 0;
|
||||
} else {
|
||||
r6 = 0;
|
||||
r7 = r8 = r9;
|
||||
r5 = 3 - r8 * 2;
|
||||
|
||||
while (r6 <= r7) {
|
||||
sp1c2 = Div(r10 * r6, r9);
|
||||
kk2 = Div(r10 * r7, r9);
|
||||
// TODO: Fix data type in declaration. There shouldn't be a need to cast this.
|
||||
((u32*)gUnk_02018EE0)[r6] = kk2;
|
||||
((u32*)gUnk_02018EE0)[r7] = sp1c2;
|
||||
if (r5 < 0) {
|
||||
r5 += 6 + r6 * 4;
|
||||
r6++;
|
||||
} else {
|
||||
r5 += 10 + (r6 - r7) * 4;
|
||||
r7--;
|
||||
r6++;
|
||||
}
|
||||
if (0x9f < param_4) {
|
||||
param_4 = 0x9f;
|
||||
}
|
||||
param_3 = param_1 << 0x10;
|
||||
ptr += param_2 * 3 + param_5;
|
||||
do {
|
||||
if (param_1 < 0) {
|
||||
param_1 = 0;
|
||||
}
|
||||
if (0xf0 < param_1) {
|
||||
param_1 = 0xf0;
|
||||
}
|
||||
*ptr = param_1;
|
||||
param_3 += sVar1;
|
||||
param_1 = param_3 >> 0x10;
|
||||
param_2++;
|
||||
ptr += 3;
|
||||
} while (param_2 <= param_4);
|
||||
}
|
||||
}
|
||||
sub_0801E290(sp00, sp04, r8);
|
||||
SetVBlankDMA((u16*)&gUnk_02017AA0[gUnk_03003DE4[0]], (u16*)REG_ADDR_WIN0H,
|
||||
((DMA_ENABLE | DMA_START_HBLANK | DMA_16BIT | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_RELOAD) << 16) +
|
||||
0x1);
|
||||
}
|
||||
|
||||
void sub_0801E49C(s32 baseX, s32 baseY, s32 radius, u32 baseAngle) {
|
||||
u8* ptr2;
|
||||
u32* ptr1;
|
||||
u32 angle;
|
||||
s32 x1, x2, x3, y1, y2, y3;
|
||||
|
||||
MemFill16(0xffff, gUnk_02018EE0, 0x780);
|
||||
angle = (baseAngle - 0x40) & 0xff;
|
||||
x1 = baseX + (gSineTable[angle + 0x40] * radius >> 8);
|
||||
y1 = baseY + (gSineTable[angle] * radius >> 8);
|
||||
angle = (baseAngle + 0x68) & 0xff;
|
||||
x2 = baseX + (gSineTable[angle + 0x40] * radius >> 8);
|
||||
y2 = baseY + (gSineTable[angle] * radius >> 8);
|
||||
angle = (baseAngle - 0xe8) & 0xff;
|
||||
x3 = baseX + (gSineTable[angle + 0x40] * radius >> 8);
|
||||
y3 = baseY + (gSineTable[angle] * radius >> 8);
|
||||
sub_0801E64C(x1, y1, x2, y2, 0);
|
||||
sub_0801E64C(x1, y1, x3, y3, 1);
|
||||
sub_0801E64C(x2, y2, x3, y3, 2);
|
||||
MemClear(gUnk_02017AA0[gUnk_03003DE4[0]].filler, 0xa00);
|
||||
ptr1 = (u32*)gUnk_02018EE0;
|
||||
ptr2 = gUnk_02017AA0[gUnk_03003DE4[0]].filler;
|
||||
for (y1 = 0xa0; y1 > 0; y1--, ptr2 += 2) {
|
||||
x1 = ptr1[0];
|
||||
x2 = ptr1[1];
|
||||
x3 = ptr1[2];
|
||||
ptr1 += 3;
|
||||
if (x1 > x2) {
|
||||
SWAP(x1, x2, y2);
|
||||
}
|
||||
if (x1 > x3) {
|
||||
SWAP(x1, x3, y2);
|
||||
}
|
||||
if (x2 > x3) {
|
||||
SWAP(x2, x3, y2);
|
||||
}
|
||||
if (x1 != 0xffffffff) {
|
||||
ptr2[0] = x3;
|
||||
ptr2[1] = x1;
|
||||
} else {
|
||||
if (x2 != x1) {
|
||||
ptr2[0] = x3;
|
||||
ptr2[1] = x2;
|
||||
} else {
|
||||
if (x3 != x1) {
|
||||
ptr2[1] = x1;
|
||||
ptr2[0] = x1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
SetVBlankDMA((u16*)(gUnk_02017AA0[gUnk_03003DE4[0]].filler), (u16*)REG_ADDR_WIN0H,
|
||||
((DMA_ENABLE | DMA_START_HBLANK | DMA_16BIT | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_RELOAD) << 16) +
|
||||
0x1);
|
||||
}
|
||||
|
||||
void sub_0801E64C(s32 x1, s32 y1, s32 x2, s32 y2, s32 offset) {
|
||||
// GBA Resolutions
|
||||
const s32 MAX_X_COORD = 240;
|
||||
const s32 MAX_Y_COORD = 160;
|
||||
|
||||
s32 slope, preciseX, tmp;
|
||||
s32* drawPtr = (s32*)gUnk_02018EE0;
|
||||
|
||||
if ((y1 < 0 && y2 < 0) || (y1 >= MAX_Y_COORD && y2 >= MAX_Y_COORD))
|
||||
return;
|
||||
|
||||
if (y1 > y2) {
|
||||
SWAP(y1, y2, tmp);
|
||||
SWAP(x1, x2, tmp);
|
||||
}
|
||||
|
||||
if (y1 == y2)
|
||||
return;
|
||||
|
||||
slope = Div((x2 - x1) * 0x10000, y2 - y1);
|
||||
if (y1 < 0) {
|
||||
x1 += (slope * -y1) >> 0x10;
|
||||
y1 = 0;
|
||||
}
|
||||
if (y2 >= MAX_Y_COORD) {
|
||||
y2 = MAX_Y_COORD - 1;
|
||||
}
|
||||
preciseX = x1 << 0x10;
|
||||
drawPtr += y1 * 3 + offset;
|
||||
do {
|
||||
// Clamp x1 in range
|
||||
x1 = x1 < 0 ? 0 : x1;
|
||||
x1 = x1 < MAX_X_COORD ? x1 : MAX_X_COORD;
|
||||
|
||||
*drawPtr = x1;
|
||||
preciseX += slope;
|
||||
x1 = preciseX >> 0x10;
|
||||
y1++;
|
||||
drawPtr += 3;
|
||||
} while (y1 <= y2);
|
||||
}
|
||||
|
||||
void NotifyFusersOnFusionDone(KinstoneId kinstoneId) {
|
||||
@@ -845,13 +1048,13 @@ void NotifyFusersOnFusionDone(KinstoneId kinstoneId) {
|
||||
u32 index;
|
||||
if (kinstoneId - 1 < 100) {
|
||||
for (index = 0; index < 0x80; index++) {
|
||||
if (kinstoneId == gSave.fuserOffers[index]) {
|
||||
gSave.fuserOffers[index] = KINSTONE_NEEDS_REPLACEMENT;
|
||||
if (kinstoneId == gSave.kinstones.fuserOffers[index]) {
|
||||
gSave.kinstones.fuserOffers[index] = KINSTONE_NEEDS_REPLACEMENT;
|
||||
}
|
||||
}
|
||||
tmp = GetFuserId(gFuseInfo.ent);
|
||||
if ((tmp - 1 < 0x7f) && (gSave.fuserOffers[tmp] == KINSTONE_NEEDS_REPLACEMENT)) {
|
||||
gSave.fuserOffers[tmp] = KINSTONE_JUST_FUSED;
|
||||
tmp = GetFuserId(gFuseInfo.entity);
|
||||
if ((tmp - 1 < 0x7f) && (gSave.kinstones.fuserOffers[tmp] == KINSTONE_NEEDS_REPLACEMENT)) {
|
||||
gSave.kinstones.fuserOffers[tmp] = KINSTONE_JUST_FUSED;
|
||||
}
|
||||
for (index = 0; index < 0x20; index++) {
|
||||
if (kinstoneId == gPossibleInteraction.candidates[index].kinstoneId) {
|
||||
@@ -870,17 +1073,17 @@ void AddKinstoneToBag(KinstoneId kinstoneId) {
|
||||
index = GetIndexInKinstoneBag(kinstoneId);
|
||||
if (index < 0) {
|
||||
index = 0;
|
||||
while (gSave.kinstoneTypes[index] != KINSTONE_NONE) {
|
||||
while (gSave.kinstones.types[index] != KINSTONE_NONE) {
|
||||
index++;
|
||||
}
|
||||
}
|
||||
if ((u32)index < 0x12) {
|
||||
gSave.kinstoneTypes[index] = kinstoneId;
|
||||
tmp = gSave.kinstoneAmounts[index] + 1;
|
||||
gSave.kinstones.types[index] = kinstoneId;
|
||||
tmp = gSave.kinstones.amounts[index] + 1;
|
||||
if (tmp > 99) {
|
||||
tmp = 99;
|
||||
}
|
||||
gSave.kinstoneAmounts[index] = tmp;
|
||||
gSave.kinstones.amounts[index] = tmp;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -888,12 +1091,12 @@ void AddKinstoneToBag(KinstoneId kinstoneId) {
|
||||
void RemoveKinstoneFromBag(KinstoneId kinstoneId) {
|
||||
s32 idx = GetIndexInKinstoneBag(kinstoneId);
|
||||
if (idx >= 0) {
|
||||
s32 next = gSave.kinstoneAmounts[idx] - 1;
|
||||
s32 next = gSave.kinstones.amounts[idx] - 1;
|
||||
if (next <= 0) {
|
||||
gSave.kinstoneTypes[idx] = KINSTONE_NONE;
|
||||
gSave.kinstones.types[idx] = KINSTONE_NONE;
|
||||
next = 0;
|
||||
}
|
||||
gSave.kinstoneAmounts[idx] = next;
|
||||
gSave.kinstones.amounts[idx] = next;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -902,92 +1105,50 @@ u32 GetAmountInKinstoneBag(KinstoneId kinstoneId) {
|
||||
if (index < 0) {
|
||||
return 0;
|
||||
}
|
||||
return gSave.kinstoneAmounts[index];
|
||||
return gSave.kinstones.amounts[index];
|
||||
}
|
||||
|
||||
u32 CheckKinstoneFused(KinstoneId kinstoneId) {
|
||||
if (kinstoneId - 1 >= 100) {
|
||||
return 0;
|
||||
}
|
||||
return ReadBit(&gSave.fusedKinstones, kinstoneId);
|
||||
return ReadBit(&gSave.kinstones.fusedKinstones, kinstoneId);
|
||||
}
|
||||
|
||||
bool32 CheckFusionMapMarkerDisabled(KinstoneId kinstoneId) {
|
||||
if (kinstoneId - 1 >= 100) {
|
||||
return FALSE;
|
||||
}
|
||||
return ReadBit(&gSave.fusionUnmarked, kinstoneId);
|
||||
return ReadBit(&gSave.kinstones.fusionUnmarked, kinstoneId);
|
||||
}
|
||||
|
||||
void SortKinstoneBag(void) {
|
||||
#ifdef NON_MATCHING
|
||||
u32 r5;
|
||||
u32 i;
|
||||
|
||||
for (r5 = 0; r5 < 0x13; r5++) {
|
||||
if (gSave.kinstoneAmounts[r5] == 0) {
|
||||
gSave.kinstoneTypes[r5] = gSave.kinstoneAmounts[r5];
|
||||
KinstoneSave* ptr = &gSave.kinstones;
|
||||
|
||||
for (i = 0; i < 19; i++) {
|
||||
if (ptr->amounts[i] == 0) {
|
||||
ptr->types[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
gSave.kinstoneTypes[0x12] = 0;
|
||||
gSave.kinstoneAmounts[0x12] = 0;
|
||||
ptr->types[18] = 0;
|
||||
ptr->amounts[18] = 0;
|
||||
|
||||
for (r5 = 0; r5 < 0x12; r5++) {
|
||||
if ((gSave.kinstoneTypes[r5] - 0x65) > 0x10) {
|
||||
MemCopy(&gSave.kinstoneTypes[r5 + 1], &gSave.kinstoneTypes[r5], 0x12 - r5);
|
||||
MemCopy(&gSave.kinstoneAmounts[r5 + 1], &gSave.kinstoneAmounts[r5], 0x12 - r5);
|
||||
for (i = 0; i < 18; i++) {
|
||||
u32 t = ptr->types[i];
|
||||
if (t < 0x65 || t > 0x75) {
|
||||
MemCopy(&ptr->types[i + 1], &ptr->types[i], 0x12 - i);
|
||||
MemCopy(&ptr->amounts[i + 1], &ptr->amounts[i], 0x12 - i);
|
||||
}
|
||||
}
|
||||
#else
|
||||
u32 r0, r4, r5;
|
||||
u32 new_var;
|
||||
u8 *r1, *r2, *r3, *r6, *r7, *r8, *r9, *r10;
|
||||
|
||||
new_var = 4;
|
||||
r1 = &gSave.inventory[34];
|
||||
r5 = 0;
|
||||
r2 = gSave.kinstoneTypes;
|
||||
code0_0:
|
||||
r0 = r2[0x13];
|
||||
r3 = &r1[4];
|
||||
r10 = r3;
|
||||
if (r0 == 0) {
|
||||
*r2 = r0;
|
||||
}
|
||||
r2++;
|
||||
r5++;
|
||||
if (r5 <= 0x12)
|
||||
goto code0_0;
|
||||
|
||||
r1[0x16] = 0;
|
||||
r1[0x29] = 0;
|
||||
r5 = 0;
|
||||
r9 = &r1[0x17];
|
||||
r3 = &r1[0x18];
|
||||
r8 = r3;
|
||||
r7 = &r1[new_var];
|
||||
r6 = &r1[5];
|
||||
code0_2:
|
||||
r0 = r10[r5] - 0x65;
|
||||
if (r0 > 0x10) {
|
||||
MemCopy(r6, r7, 0x12 - r5);
|
||||
MemCopy(r8, r9, 0x12 - r5);
|
||||
}
|
||||
r9++;
|
||||
r8++;
|
||||
r7++;
|
||||
r6++;
|
||||
r5++;
|
||||
if (r5 <= 0x11)
|
||||
goto code0_2;
|
||||
#endif
|
||||
}
|
||||
|
||||
s32 GetIndexInKinstoneBag(KinstoneId kinstoneId) {
|
||||
u32 i;
|
||||
|
||||
for (i = 0; i < 0x12; ++i) {
|
||||
if (kinstoneId == gSave.kinstoneTypes[i])
|
||||
if (kinstoneId == gSave.kinstones.types[i])
|
||||
return i;
|
||||
}
|
||||
return -1;
|
||||
@@ -1055,7 +1216,7 @@ void UpdateVisibleFusionMapMarkers(void) {
|
||||
#else
|
||||
if (sub_0807CB24(tmp, s->flag)) {
|
||||
#endif
|
||||
WriteBit(&gSave.fusionUnmarked, kinstoneId);
|
||||
WriteBit(&gSave.kinstones.fusionUnmarked, kinstoneId);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1076,8 +1237,8 @@ KinstoneId GetFusionToOffer(Entity* entity) {
|
||||
if (GetInventoryValue(ITEM_KINSTONE_BAG) == 0 || fuserData[0] > gSave.global_progress) {
|
||||
return KINSTONE_NONE;
|
||||
}
|
||||
offeredFusion = gSave.fuserOffers[fuserId];
|
||||
fuserProgress = gSave.fuserProgress[fuserId];
|
||||
offeredFusion = gSave.kinstones.fuserOffers[fuserId];
|
||||
fuserProgress = gSave.kinstones.fuserProgress[fuserId];
|
||||
fuserFusionData = (u8*)(fuserProgress + (u32)fuserData);
|
||||
while (TRUE) { // loop through fusions for this fuser
|
||||
switch (offeredFusion) {
|
||||
@@ -1108,8 +1269,8 @@ KinstoneId GetFusionToOffer(Entity* entity) {
|
||||
}
|
||||
offeredFusion = KINSTONE_NEEDS_REPLACEMENT; // already completed, try next fusion in the list
|
||||
}
|
||||
gSave.fuserOffers[fuserId] = offeredFusion;
|
||||
gSave.fuserProgress[fuserId] = fuserProgress;
|
||||
gSave.kinstones.fuserOffers[fuserId] = offeredFusion;
|
||||
gSave.kinstones.fuserProgress[fuserId] = fuserProgress;
|
||||
randomMood = Random();
|
||||
fuserStability = fuserData[1];
|
||||
if (fuserStability <= randomMood % 100) {
|
||||
@@ -1619,11 +1780,11 @@ const DungeonFloorMetadata gDungeonFloorMetadatas[] = {
|
||||
{ 1, 3, 3 }, { 1, 3, 3 }, { 1, 3, 3 }, { 1, 3, 3 }, { 1, 3, 3 }, { 1, 3, 3 }, { 1, 3, 3 }, { 1, 3, 3 },
|
||||
};
|
||||
|
||||
void (*const gUnk_080C9CAC[])(void) = {
|
||||
sub_0801E02C,
|
||||
sub_0801E044,
|
||||
sub_0801E074,
|
||||
sub_0801E0A0,
|
||||
void (*const gFuseActions[])(void) = {
|
||||
Fuse_Action0,
|
||||
Fuse_Action1,
|
||||
Fuse_Action2,
|
||||
Fuse_Action3,
|
||||
};
|
||||
|
||||
// TODO merge
|
||||
|
||||
@@ -445,7 +445,7 @@ void AcroBandit_Type1Action4(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
if (this->direction & 0xf)
|
||||
if (this->direction & (0x3 | DirectionEast | DIR_DIAGONAL))
|
||||
this->spriteSettings.flipX = (this->direction >> 4 ^ 1);
|
||||
|
||||
ProcessMovement0(this);
|
||||
@@ -486,7 +486,7 @@ void AcroBandit_Type1Action6(Entity* this) {
|
||||
this->action = 7;
|
||||
dir = fallDirections[this->field_0x74.HALF.LO * 5 + this->type2];
|
||||
this->direction = dir;
|
||||
if (dir >= 0x10) {
|
||||
if (dir >= DirectionSouth) {
|
||||
this->spriteSettings.flipX = 1;
|
||||
} else {
|
||||
this->spriteSettings.flipX = 0;
|
||||
@@ -570,7 +570,7 @@ static void sub_080322E8(Entity* this) {
|
||||
}
|
||||
} else {
|
||||
u8 tmp = this->direction;
|
||||
if (tmp & 0xF) {
|
||||
if (tmp & (0x3 | DirectionEast | DIR_DIAGONAL)) {
|
||||
tmp >>= 4;
|
||||
tmp ^= 1;
|
||||
if (tmp != this->spriteSettings.flipX) {
|
||||
|
||||
+4
-3
@@ -105,7 +105,8 @@ void sub_080218CC(Entity* this) {
|
||||
if (this->subAction == 0) {
|
||||
this->subAction = 1;
|
||||
this->spriteSettings.draw = 1;
|
||||
this->direction = ((sub_08049F84(this, 1) ^ 0x10) + gUnk_080CB5DC[Random() & 7]) & 0x1f;
|
||||
this->direction = ((sub_08049F84(this, 1) ^ 0x10) + gUnk_080CB5DC[Random() & 7]) &
|
||||
(0x3 | DIR_DIAGONAL | DirectionNorth | DirectionEast | DirectionSouth | DirectionWest);
|
||||
this->speed = 0x100;
|
||||
this->zVelocity = Q_16_16(1.125);
|
||||
}
|
||||
@@ -244,9 +245,9 @@ void sub_08021B64(Entity* this) {
|
||||
this->zVelocity = Q_16_16(1.0);
|
||||
((u8*)&this->field_0x86)[1] = 0;
|
||||
if (gPlayerEntity.direction != 0xff) {
|
||||
this->direction = 0x10 ^ gPlayerEntity.direction;
|
||||
this->direction = DirectionSouth ^ gPlayerEntity.direction;
|
||||
} else {
|
||||
this->direction = (gPlayerEntity.animationState << 2) ^ 0x10;
|
||||
this->direction = (gPlayerEntity.animationState << 2) ^ DirectionSouth;
|
||||
}
|
||||
InitializeAnimation(this, 5);
|
||||
} else {
|
||||
|
||||
@@ -10,18 +10,20 @@
|
||||
#include "room.h"
|
||||
#include "object.h"
|
||||
|
||||
#define DIR_NOT_MOVING_CHECK 0x80
|
||||
|
||||
void BladeTrap(Entity* this) {
|
||||
if (this->action == 0) {
|
||||
this->action = 1;
|
||||
this->child = GetCurrentRoomProperty(this->type);
|
||||
UpdateRailMovement(this, (u16**)&this->child, &this->field_0x74.HWORD);
|
||||
}
|
||||
if (!(this->direction & 0x80)) {
|
||||
if (!(this->direction & DIR_NOT_MOVING_CHECK)) {
|
||||
LinearMoveUpdate(this);
|
||||
}
|
||||
|
||||
if (!(--this->field_0x74.HWORD)) {
|
||||
if (!(this->direction & 0x80)) {
|
||||
if (!(this->direction & DIR_NOT_MOVING_CHECK)) {
|
||||
EnqueueSFX(SFX_METAL_CLINK);
|
||||
}
|
||||
UpdateRailMovement(this, (u16**)&this->child, &this->field_0x74.HWORD);
|
||||
|
||||
+10
-10
@@ -62,7 +62,7 @@ void Bobomb_OnCollision(Entity* this) {
|
||||
this->zVelocity = Q_16_16(1.5);
|
||||
this->speed = 0;
|
||||
this->field_0x80.HALF.HI = 1;
|
||||
InitializeAnimation(this, this->direction >> 4 | 6);
|
||||
InitializeAnimation(this, this->direction >> 4 | IdleWest);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -123,7 +123,7 @@ void sub_0802C83C(Entity* this) {
|
||||
} else {
|
||||
this->field_0x82.HALF.LO = 2;
|
||||
this->timer = 120;
|
||||
InitializeAnimation(this, (this->direction >> 4) | 6);
|
||||
InitializeAnimation(this, (this->direction >> 4) | IdleWest);
|
||||
COLLISION_OFF(this);
|
||||
this->hitType = 0x6e;
|
||||
}
|
||||
@@ -147,7 +147,7 @@ void sub_0802C8D8(Entity* this) {
|
||||
this->action = 1;
|
||||
this->timer = 60;
|
||||
this->subtimer = 0;
|
||||
this->direction = (Random() & 0x18) | 4;
|
||||
this->direction = (Random() & 0x18) | DIR_DIAGONAL;
|
||||
this->carryFlags = 0;
|
||||
this->gustJarFlags = 0x12;
|
||||
this->field_0x82.HALF.LO = 0;
|
||||
@@ -163,7 +163,7 @@ void sub_0802C91C(Entity* this) {
|
||||
if (this->field_0x82.HALF.LO) {
|
||||
if (this->collisions != COL_NONE) {
|
||||
sub_0800417E(this, this->collisions);
|
||||
InitializeAnimation(this, (this->direction >> 4) | 2);
|
||||
InitializeAnimation(this, (this->direction >> 4) | IdleEast);
|
||||
}
|
||||
if (--this->timer == 0) {
|
||||
sub_0802CBC4(this);
|
||||
@@ -180,7 +180,7 @@ void sub_0802C91C(Entity* this) {
|
||||
}
|
||||
if (--this->timer == 0) {
|
||||
this->timer = 60;
|
||||
this->direction = (this->direction + 8) & 0x1c;
|
||||
this->direction = (this->direction + 8) & (DirectionWest | DIR_DIAGONAL);
|
||||
InitializeAnimation(this, this->direction >> 4);
|
||||
}
|
||||
}
|
||||
@@ -196,7 +196,7 @@ void sub_0802C9D0(Entity* this) {
|
||||
this->spritePriority.b1 = 0;
|
||||
this->field_0x82.HALF.HI = 1;
|
||||
sub_0802CC18(this);
|
||||
InitializeAnimation(this, (this->direction >> 4) | 6);
|
||||
InitializeAnimation(this, (this->direction >> 4) | IdleWest);
|
||||
GetNextFrame(this);
|
||||
}
|
||||
|
||||
@@ -210,7 +210,7 @@ void sub_0802CA10(Entity* this) {
|
||||
}
|
||||
} else {
|
||||
this->field_0x82.HALF.HI = 2;
|
||||
this->direction = (((gPlayerEntity.animationState) << 2) | 4) & 0x1c;
|
||||
this->direction = (((gPlayerEntity.animationState) << 2) | IdleSouth) & (DIR_DIAGONAL | DirectionWest);
|
||||
sub_0802CC18(this);
|
||||
GetNextFrame(this);
|
||||
}
|
||||
@@ -234,8 +234,8 @@ void sub_0802CA94(Entity* this) {
|
||||
this->speed = 0;
|
||||
this->field_0x82.HALF.HI = 0;
|
||||
this->field_0x80.HALF.HI = 0;
|
||||
this->direction = ((gPlayerEntity.animationState << 2) | 4) & 0x1c;
|
||||
InitializeAnimation(this, (this->direction >> 4) | 6);
|
||||
this->direction = ((gPlayerEntity.animationState << 2) | IdleSouth) & (DirectionWest | DIR_DIAGONAL);
|
||||
InitializeAnimation(this, (this->direction >> 4) | IdleWest);
|
||||
}
|
||||
|
||||
void sub_0802CAF8(Entity* this) {
|
||||
@@ -264,7 +264,7 @@ void sub_0802CB68(Entity* this) {
|
||||
this->action = 1;
|
||||
this->subAction = 0;
|
||||
this->direction = Random() & 0x18;
|
||||
this->direction |= 4;
|
||||
this->direction |= IdleSouth;
|
||||
COLLISION_ON(this);
|
||||
if (this->field_0x82.HALF.LO) {
|
||||
this->timer = 200;
|
||||
|
||||
@@ -141,10 +141,10 @@ void sub_0802A9A8(Entity* this) {
|
||||
this->field_0x82.HWORD = 1;
|
||||
if (this->field_0x80.HALF.LO) {
|
||||
this->x.HALF.HI = gRoomControls.scroll_x - 0x10;
|
||||
this->direction = 8;
|
||||
this->direction = DirectionEast;
|
||||
} else {
|
||||
this->x.HALF.HI = gRoomControls.scroll_x + 0x100;
|
||||
this->direction = 0x18;
|
||||
this->direction = DirectionWest;
|
||||
}
|
||||
this->y.HALF.HI = gRoomControls.scroll_y + 0x40;
|
||||
this->timer = 128;
|
||||
@@ -221,7 +221,7 @@ void sub_0802AAC0(Entity* this) {
|
||||
#ifndef EU
|
||||
this->field_0x78.HALF.LO = 0;
|
||||
this->field_0x78.HALF.HI = 4;
|
||||
this->direction = 0xff;
|
||||
this->direction = DIR_NONE;
|
||||
#endif
|
||||
InitializeAnimation(this, 0);
|
||||
}
|
||||
|
||||
+55
-55
@@ -25,14 +25,14 @@ void sub_08029078(Entity*);
|
||||
void sub_080290E0(Entity*, u32);
|
||||
void sub_080290FC(Entity*);
|
||||
bool32 sub_0802915C(Entity*);
|
||||
bool32 sub_080291DC(Entity*);
|
||||
bool32 BusinessScrub_CheckRefillFitsBag(Entity*);
|
||||
void sub_0802922C(Entity*);
|
||||
void sub_0802925C(Entity*);
|
||||
|
||||
extern const struct SalesOffering gUnk_080CC954[];
|
||||
extern const u8 kinstoneTypes[];
|
||||
extern void (*const BusinessScrub_Functions[])(Entity*);
|
||||
extern void (*const gUnk_080CC9E0[])(Entity*);
|
||||
extern void (*const BusinessScrub_Actions[])(Entity*);
|
||||
extern const u8 gUnk_080CCA04[];
|
||||
|
||||
struct SalesOffering {
|
||||
@@ -42,8 +42,8 @@ struct SalesOffering {
|
||||
u16 field_0x4;
|
||||
u16 field_0x6;
|
||||
u8 offeredItem; /**< @see Item */
|
||||
u8 field_0x9;
|
||||
u16 field_0xa;
|
||||
u8 item_subtype;
|
||||
u16 local_flag;
|
||||
};
|
||||
|
||||
void BusinessScrub(Entity* this) {
|
||||
@@ -51,7 +51,7 @@ void BusinessScrub(Entity* this) {
|
||||
}
|
||||
|
||||
void BusinessScrub_OnTick(Entity* this) {
|
||||
gUnk_080CC9E0[this->action](this);
|
||||
BusinessScrub_Actions[this->action](this);
|
||||
}
|
||||
|
||||
void BusinessScrub_OnCollision(Entity* this) {
|
||||
@@ -75,12 +75,12 @@ void BusinessScrub_OnGrabbed(Entity* this) {
|
||||
/* ... */
|
||||
}
|
||||
|
||||
void sub_08028994(Entity* this) {
|
||||
void BusinessScrub_Action0(Entity* this) {
|
||||
this->subtimer = 0;
|
||||
this->field_0x78.HWORD = this->x.HALF.HI;
|
||||
this->field_0x7a.HWORD = this->y.HALF.HI;
|
||||
this->animationState = 0;
|
||||
this->direction = 0x10;
|
||||
this->direction = DirectionSouth;
|
||||
sub_08028E9C(this);
|
||||
if ((*(u8*)this->field_0x7c.WORD & 1) || CheckFlags(this->field_0x86.HWORD)) {
|
||||
this->action = 4;
|
||||
@@ -97,7 +97,7 @@ void sub_08028994(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08028A48(Entity* this) {
|
||||
void BusinessScrub_Action1(Entity* this) {
|
||||
if (this->timer != 0) {
|
||||
this->timer--;
|
||||
} else if (sub_08028F98(this, 0)) {
|
||||
@@ -107,7 +107,7 @@ void sub_08028A48(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08028A74(Entity* this) {
|
||||
void BusinessScrub_Action2(Entity* this) {
|
||||
u32 unk;
|
||||
|
||||
GetNextFrame(this);
|
||||
@@ -185,7 +185,7 @@ void sub_08028A74(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08028BC4(Entity* this) {
|
||||
void BusinessScrub_Action3(Entity* this) {
|
||||
Entity* iVar1;
|
||||
|
||||
switch (this->subAction) {
|
||||
@@ -227,7 +227,7 @@ void sub_08028BC4(Entity* this) {
|
||||
extern void sub_0804AA1C(Entity*);
|
||||
void sub_08028F0C(Entity*);
|
||||
|
||||
void sub_08028C84(Entity* this) {
|
||||
void BusinessScrub_Action4(Entity* this) {
|
||||
if (--this->timer == 0) {
|
||||
this->timer = 48;
|
||||
if (this->subtimer) {
|
||||
@@ -244,21 +244,21 @@ void sub_08028C84(Entity* this) {
|
||||
sub_08028F0C(this);
|
||||
}
|
||||
|
||||
void sub_08028CE8(Entity* this) {
|
||||
void BusinessScrub_Action5(Entity* this) {
|
||||
struct SalesOffering* offer = (struct SalesOffering*)this->field_0x7c.WORD;
|
||||
u32 subtype;
|
||||
|
||||
if ((gMessage.doTextBox & 0x7f) == 0 && sub_0802915C(this) && !sub_08056338()) {
|
||||
if (offer->price <= gSave.stats.rupees) {
|
||||
if (sub_080291DC(this)) {
|
||||
if (BusinessScrub_CheckRefillFitsBag(this)) {
|
||||
/* Bag full. */
|
||||
MessageFromTarget(TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x04));
|
||||
SetPlayerControl(0);
|
||||
} else {
|
||||
ModRupees(-offer->price);
|
||||
switch (offer->field_0x0 >> 2) {
|
||||
case 0:
|
||||
subtype = offer->field_0x9;
|
||||
case 0: // random kinstone
|
||||
subtype = offer->item_subtype;
|
||||
if (subtype == KINSTONE_RANDOM) {
|
||||
subtype = kinstoneTypes[Random() & 7];
|
||||
}
|
||||
@@ -273,13 +273,13 @@ void sub_08028CE8(Entity* this) {
|
||||
SetLocalFlag(KS_B06);
|
||||
#endif
|
||||
return;
|
||||
case 1:
|
||||
CreateItemEntity(offer->offeredItem, offer->field_0x9, 0);
|
||||
case 1: // refill, bottle, specific kinstone
|
||||
CreateItemEntity(offer->offeredItem, offer->item_subtype, 0);
|
||||
this->timer = 4;
|
||||
sub_0802922C(this);
|
||||
return;
|
||||
case 2:
|
||||
CreateItemEntity(offer->offeredItem, offer->field_0x9, 0);
|
||||
case 2: // grip ring
|
||||
CreateItemEntity(offer->offeredItem, offer->item_subtype, 0);
|
||||
this->timer = 8;
|
||||
sub_0802922C(this);
|
||||
return;
|
||||
@@ -298,7 +298,7 @@ void sub_08028CE8(Entity* this) {
|
||||
sub_080290E0(this, 0);
|
||||
}
|
||||
|
||||
void sub_08028DE8(Entity* this) {
|
||||
void BusinessScrub_Action6(Entity* this) {
|
||||
if (gPlayerEntity.action == PLAYER_ITEMGET) {
|
||||
if (this->field_0x80.HALF.HI == 0) {
|
||||
SetPlayerControl(1);
|
||||
@@ -316,15 +316,15 @@ void sub_08028DE8(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08028E40(Entity* this) {
|
||||
void BusinessScrub_Action7(Entity* this) {
|
||||
if ((gMessage.doTextBox & 0x7f) == 0) {
|
||||
struct SalesOffering* offer = (struct SalesOffering*)this->field_0x7c.WORD;
|
||||
|
||||
this->action = 4;
|
||||
this->subAction = gMessage.doTextBox & 0x7f;
|
||||
this->timer = 1;
|
||||
if (CheckLocalFlag(offer->field_0xa) == 0) {
|
||||
SetLocalFlag(offer->field_0xa);
|
||||
if (!CheckLocalFlag(offer->local_flag)) {
|
||||
SetLocalFlag(offer->local_flag);
|
||||
}
|
||||
SetPlayerControl(0);
|
||||
}
|
||||
@@ -332,7 +332,7 @@ void sub_08028E40(Entity* this) {
|
||||
GetNextFrame(this);
|
||||
}
|
||||
|
||||
void sub_08028E84(Entity* this) {
|
||||
void BusinessScrub_Action8(Entity* this) {
|
||||
if (UpdateFuseInteraction(this)) {
|
||||
this->action = 4;
|
||||
this->timer = 1;
|
||||
@@ -344,7 +344,7 @@ bool32 sub_08029198(const struct SalesOffering*);
|
||||
void sub_08028E9C(Entity* this) {
|
||||
const struct SalesOffering* offer = &gUnk_080CC954[this->type];
|
||||
if (sub_08029198(offer) && (offer->field_0x0 & 2)) {
|
||||
offer = &gUnk_080CC954[offer->field_0xa];
|
||||
offer = &gUnk_080CC954[offer->local_flag];
|
||||
}
|
||||
this->field_0x7c.WORD = (u32)offer;
|
||||
this->field_0x80.HALF.LO = 0;
|
||||
@@ -353,21 +353,21 @@ void sub_08028E9C(Entity* this) {
|
||||
void sub_08028EDC(Entity* this) {
|
||||
const struct SalesOffering* offer = (const struct SalesOffering*)this->field_0x7c.WORD;
|
||||
if (sub_08029198(offer) && (offer->field_0x0 & 2)) {
|
||||
offer = &gUnk_080CC954[offer->field_0xa];
|
||||
offer = &gUnk_080CC954[offer->local_flag];
|
||||
this->field_0x7c.WORD = (u32)offer;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08028F0C(Entity* this) {
|
||||
if (this->interactType == 2) {
|
||||
if (this->interactType == INTERACTION_FUSE) {
|
||||
this->action = 8;
|
||||
this->interactType = 0;
|
||||
sub_0806F118(this);
|
||||
} else if (this->interactType != 0) {
|
||||
this->interactType = INTERACTION_NONE;
|
||||
InitializeNPCFusion(this);
|
||||
} else if (this->interactType != INTERACTION_NONE) {
|
||||
u16 dialog;
|
||||
const struct SalesOffering* offer = (const struct SalesOffering*)this->field_0x7c.WORD;
|
||||
|
||||
this->interactType = 0;
|
||||
this->interactType = INTERACTION_NONE;
|
||||
sub_0804AA1C(this);
|
||||
this->direction = (GetAnimationState(this) << 3);
|
||||
sub_080290E0(this, 3);
|
||||
@@ -456,8 +456,8 @@ void sub_080290FC(Entity* this) {
|
||||
if (this->timer != 0) {
|
||||
this->timer--;
|
||||
if ((this->timer < 16) && ((this->timer & 1) == 0)) {
|
||||
s32 sVar3 = ((this->direction & 0x10) != 0) ? -1 : 1;
|
||||
if ((this->direction & 8) != 0) {
|
||||
s32 sVar3 = (this->direction & DirectionSouth) ? -1 : 1;
|
||||
if (this->direction & DirectionEast) {
|
||||
this->x.HALF.HI += ((this->timer & 8) != 0) ? -sVar3 : sVar3;
|
||||
} else {
|
||||
this->y.HALF.HI += ((this->timer & 8) != 0) ? sVar3 : -sVar3;
|
||||
@@ -502,7 +502,7 @@ bool32 sub_08029198(const struct SalesOffering* offer) {
|
||||
return 0;
|
||||
}
|
||||
} else {
|
||||
tmp = CheckLocalFlag(offer->field_0xa);
|
||||
tmp = CheckLocalFlag(offer->local_flag);
|
||||
}
|
||||
|
||||
if (tmp == 0) {
|
||||
@@ -512,7 +512,7 @@ bool32 sub_08029198(const struct SalesOffering* offer) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool32 sub_080291DC(Entity* this) {
|
||||
bool32 BusinessScrub_CheckRefillFitsBag(Entity* this) {
|
||||
const struct SalesOffering* offer = (const struct SalesOffering*)this->field_0x7c.WORD;
|
||||
|
||||
switch (offer->offeredItem) {
|
||||
@@ -540,7 +540,7 @@ void sub_0802922C(Entity* this) {
|
||||
SetGlobalFlag(AKINDO_BOTTLE_SELL);
|
||||
// It only matters here that ITEM_BOMBS10 is here and some item that is higher
|
||||
// Not sure about the original code
|
||||
case ITEM_ARROWS10:
|
||||
case ITEM_ARROWS30:
|
||||
case ITEM_BOMBS10:
|
||||
default:
|
||||
sub_080290E0(this, 3);
|
||||
@@ -564,18 +564,18 @@ void sub_08029270(Entity* this) {
|
||||
|
||||
// clang-format off
|
||||
const struct SalesOffering gUnk_080CC954[] = {
|
||||
{0x06, 0x00, 0xffff, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0f), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), 0x09, 0xff, 0x0001},
|
||||
{0x04, 0x00, 0x001e, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0e), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), 0x6f, 0xff, 0xffff},
|
||||
{0x04, 0x00, 0x001e, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0b), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), 0x6c, 0xff, 0xffff},
|
||||
{0x08, 0x00, 0x0028, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0c), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x11), 0x44, 0xff, 0xffff},
|
||||
{0x00, 0x00, 0x0064, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0d), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), 0x5c, 0xff, 0xffff},
|
||||
{0x04, 0x00, 0x0014, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x10), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x11), 0x1c, 0xff, 0xffff},
|
||||
{0x06, 0x00, 0xffff, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0f), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), ITEM_BOW, 0xff, 0x0001},
|
||||
{0x04, 0x00, 30, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0e), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), ITEM_ARROWS30, 0xff, 0xffff},
|
||||
{0x04, 0x00, 30, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0b), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), ITEM_BOMBS10, 0xff, 0xffff},
|
||||
{0x08, 0x00, 40, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0c), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x11), ITEM_GRIP_RING, 0xff, 0xffff},
|
||||
{0x00, 0x00, 100, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0d), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), ITEM_KINSTONE, 0xff, 0xffff},
|
||||
{0x04, 0x00, 20, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x10), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x11), ITEM_BOTTLE1, 0xff, 0xffff},
|
||||
{0x0c, 0x00, 0xffff, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x12), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x13), 0xff, 0xff, 0x0046},
|
||||
{0x04, 0x00, 0x0064, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x13), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), 0x5c, 0x75, 0xffff},
|
||||
{0x04, 0x00, 100, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x13), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), ITEM_KINSTONE, 0x75, 0xffff},
|
||||
#ifdef EU
|
||||
{0x00, 0x00, 0x0064, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0d), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), 0x5c, 0xff, 0xffff},
|
||||
{0x00, 0x00, 100, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0d), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), ITEM_KINSTONE, 0xff, 0xffff},
|
||||
#else
|
||||
{0x00, 0x00, 0x00C8, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0d), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), 0x5c, 0xff, 0xffff},
|
||||
{0x00, 0x00, 200, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0d), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), ITEM_KINSTONE, 0xff, 0xffff},
|
||||
#endif
|
||||
};
|
||||
|
||||
@@ -590,16 +590,16 @@ void (*const BusinessScrub_Functions[])(Entity*) = {
|
||||
BusinessScrub_OnGrabbed,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CC9E0[])(Entity*) = {
|
||||
sub_08028994,
|
||||
sub_08028A48,
|
||||
sub_08028A74,
|
||||
sub_08028BC4,
|
||||
sub_08028C84,
|
||||
sub_08028CE8,
|
||||
sub_08028DE8,
|
||||
sub_08028E40,
|
||||
sub_08028E84,
|
||||
void (*const BusinessScrub_Actions[])(Entity*) = {
|
||||
BusinessScrub_Action0,
|
||||
BusinessScrub_Action1,
|
||||
BusinessScrub_Action2,
|
||||
BusinessScrub_Action3,
|
||||
BusinessScrub_Action4,
|
||||
BusinessScrub_Action5,
|
||||
BusinessScrub_Action6,
|
||||
BusinessScrub_Action7,
|
||||
BusinessScrub_Action8,
|
||||
};
|
||||
|
||||
const u8 gUnk_080CCA04[] = {
|
||||
|
||||
@@ -66,7 +66,7 @@ void sub_08045C3C(BusinessScrubPrologueEntity* this) {
|
||||
super->subtimer = 0;
|
||||
this->unk_78 = super->x.HALF.HI;
|
||||
this->unk_7a = super->y.HALF.HI;
|
||||
super->animationState = 0;
|
||||
super->animationState = IdleNorth;
|
||||
super->direction = 0x10;
|
||||
super->action = 5;
|
||||
super->timer = 120;
|
||||
@@ -75,7 +75,7 @@ void sub_08045C3C(BusinessScrubPrologueEntity* this) {
|
||||
sub_08046030(this, 0);
|
||||
sub_08095C48(super);
|
||||
StartCutscene(super, script_BusinessScrubIntro);
|
||||
sub_0807DD50(super);
|
||||
InitScriptForNPC(super);
|
||||
}
|
||||
|
||||
void sub_08045CA4(BusinessScrubPrologueEntity* this) {
|
||||
@@ -200,7 +200,7 @@ void sub_08045E14(BusinessScrubPrologueEntity* this) {
|
||||
}
|
||||
|
||||
void sub_08045EC8(BusinessScrubPrologueEntity* this) {
|
||||
sub_0807DD94(super, 0);
|
||||
ExecuteScriptAndHandleAnimation(super, NULL);
|
||||
}
|
||||
|
||||
void sub_08045ED4(BusinessScrubPrologueEntity* this) {
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@ void sub_0802B540(Entity* this) {
|
||||
this->timer--;
|
||||
} else {
|
||||
u32 direction = sub_0804A024(this, 1, 0xc);
|
||||
if (direction != 0xff) {
|
||||
if (direction != DIR_NONE) {
|
||||
this->action = 2;
|
||||
this->speed = 0x40;
|
||||
this->direction = direction;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user