mirror of
https://github.com/pret/pmd-red.git
synced 2026-07-13 07:11:14 -05:00
code_8069E0C decompiled
This commit is contained in:
parent
414d291d57
commit
f8bb665a92
|
|
@ -1,907 +0,0 @@
|
|||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start sub_806C51C
|
||||
sub_806C51C:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x50
|
||||
adds r6, r0, 0
|
||||
ldr r0, [r6, 0x70]
|
||||
mov r8, r0
|
||||
ldr r0, _0806C544
|
||||
ldr r1, [r0]
|
||||
ldr r2, _0806C548
|
||||
adds r0, r1, r2
|
||||
ldr r0, [r0]
|
||||
cmp r0, r6
|
||||
bne _0806C54C
|
||||
movs r3, 0
|
||||
str r3, [sp, 0x38]
|
||||
b _0806C554
|
||||
.align 2, 0
|
||||
_0806C544: .4byte gDungeon
|
||||
_0806C548: .4byte 0x000181f8
|
||||
_0806C54C:
|
||||
ldr r4, _0806C5AC
|
||||
adds r0, r1, r4
|
||||
ldrb r0, [r0]
|
||||
str r0, [sp, 0x38]
|
||||
_0806C554:
|
||||
mov r0, r8
|
||||
adds r0, 0xC8
|
||||
ldrb r1, [r0]
|
||||
str r0, [sp, 0x40]
|
||||
cmp r1, 0x2
|
||||
bne _0806C564
|
||||
movs r7, 0x1
|
||||
str r7, [sp, 0x38]
|
||||
_0806C564:
|
||||
adds r0, r6, 0
|
||||
adds r0, 0x6B
|
||||
adds r1, r6, 0
|
||||
adds r1, 0x6A
|
||||
ldrb r2, [r0]
|
||||
str r0, [sp, 0x48]
|
||||
mov r9, r1
|
||||
adds r5, r6, 0
|
||||
adds r5, 0x6D
|
||||
adds r0, 0x1
|
||||
str r0, [sp, 0x4C]
|
||||
adds r4, r6, 0
|
||||
adds r4, 0x6F
|
||||
subs r1, 0x47
|
||||
str r1, [sp, 0x44]
|
||||
mov r3, r9
|
||||
ldrb r3, [r3]
|
||||
cmp r2, r3
|
||||
bne _0806C676
|
||||
ldrb r0, [r5]
|
||||
ldr r7, [sp, 0x4C]
|
||||
ldrb r7, [r7]
|
||||
cmp r0, r7
|
||||
bne _0806C654
|
||||
ldrb r0, [r4]
|
||||
cmp r0, 0
|
||||
bne _0806C654
|
||||
movs r2, 0
|
||||
ldrh r1, [r6, 0x28]
|
||||
movs r0, 0x80
|
||||
lsls r0, 6
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0806C5B0
|
||||
movs r0, 0
|
||||
b _0806C5B2
|
||||
.align 2, 0
|
||||
_0806C5AC: .4byte 0x00018210
|
||||
_0806C5B0:
|
||||
lsrs r0, r1, 15
|
||||
_0806C5B2:
|
||||
cmp r0, 0
|
||||
bne _0806C5B8
|
||||
movs r2, 0x1
|
||||
_0806C5B8:
|
||||
adds r0, r6, 0
|
||||
adds r0, 0x23
|
||||
str r0, [sp, 0x44]
|
||||
cmp r2, 0
|
||||
beq _0806C654
|
||||
adds r0, r6, 0
|
||||
bl sub_806CEBC
|
||||
lsls r0, 24
|
||||
lsrs r3, r0, 24
|
||||
adds r1, r6, 0
|
||||
adds r1, 0x21
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
mov r1, r8
|
||||
adds r1, 0xFE
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0x63
|
||||
bne _0806C620
|
||||
ldr r1, [sp, 0x48]
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0xC
|
||||
bhi _0806C61C
|
||||
mov r0, r8
|
||||
adds r0, 0xC0
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
bne _0806C5F4
|
||||
movs r2, 0x2
|
||||
b _0806C600
|
||||
_0806C5F4:
|
||||
ldr r2, [sp, 0x44]
|
||||
ldrb r0, [r2]
|
||||
movs r2, 0x1
|
||||
cmp r0, 0x2
|
||||
bhi _0806C600
|
||||
movs r2, 0
|
||||
_0806C600:
|
||||
ldr r1, _0806C618
|
||||
movs r0, 0xD
|
||||
muls r0, r2
|
||||
ldr r7, [sp, 0x48]
|
||||
ldrb r7, [r7]
|
||||
adds r0, r7
|
||||
adds r0, r1
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x7
|
||||
bne _0806C622
|
||||
adds r0, r3, 0
|
||||
b _0806C622
|
||||
.align 2, 0
|
||||
_0806C618: .4byte gUnknown_8106EC8
|
||||
_0806C61C:
|
||||
movs r0, 0x63
|
||||
b _0806C622
|
||||
_0806C620:
|
||||
ldrb r0, [r1]
|
||||
_0806C622:
|
||||
cmp r0, 0x63
|
||||
beq _0806C654
|
||||
mov r1, r9
|
||||
strb r0, [r1]
|
||||
ldrb r1, [r5]
|
||||
movs r0, 0x7
|
||||
ands r0, r1
|
||||
ldr r2, [sp, 0x4C]
|
||||
strb r0, [r2]
|
||||
movs r0, 0x1
|
||||
strb r0, [r4]
|
||||
mov r7, r9
|
||||
ldrb r0, [r7]
|
||||
cmp r0, 0x6
|
||||
bne _0806C654
|
||||
adds r1, r6, 0
|
||||
adds r1, 0x6E
|
||||
ldrb r0, [r1]
|
||||
adds r0, 0x1
|
||||
strb r0, [r1]
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x10
|
||||
bne _0806C654
|
||||
strb r3, [r7]
|
||||
_0806C654:
|
||||
ldr r1, [sp, 0x48]
|
||||
ldrb r0, [r1]
|
||||
mov r2, r9
|
||||
ldrb r2, [r2]
|
||||
cmp r0, r2
|
||||
bne _0806C676
|
||||
ldrb r0, [r5]
|
||||
ldr r3, [sp, 0x4C]
|
||||
ldrb r3, [r3]
|
||||
cmp r0, r3
|
||||
bne _0806C676
|
||||
ldrb r0, [r4]
|
||||
movs r7, 0x28
|
||||
adds r7, r6
|
||||
mov r10, r7
|
||||
cmp r0, 0
|
||||
beq _0806C714
|
||||
_0806C676:
|
||||
mov r1, r9
|
||||
ldrb r0, [r1]
|
||||
ldr r2, [sp, 0x48]
|
||||
strb r0, [r2]
|
||||
ldr r3, [sp, 0x4C]
|
||||
mov r10, r3
|
||||
ldrb r0, [r3]
|
||||
strb r0, [r5]
|
||||
movs r7, 0
|
||||
strb r7, [r4]
|
||||
adds r0, r6, 0
|
||||
adds r0, 0x68
|
||||
movs r1, 0
|
||||
ldrsh r7, [r0, r1]
|
||||
mov r2, r8
|
||||
movs r3, 0x4
|
||||
ldrsh r0, [r2, r3]
|
||||
mov r4, r9
|
||||
ldrb r1, [r4]
|
||||
bl sub_808DA44
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0806C6A8
|
||||
movs r7, 0
|
||||
_0806C6A8:
|
||||
ldr r0, [sp, 0x38]
|
||||
cmp r0, 0
|
||||
bne _0806C6D6
|
||||
bl Rand32Bit
|
||||
movs r4, 0x3
|
||||
ands r4, r0
|
||||
adds r5, r6, 0
|
||||
adds r5, 0x28
|
||||
ldr r1, [r6, 0x64]
|
||||
mov r3, r9
|
||||
ldrb r2, [r3]
|
||||
mov r0, r10
|
||||
ldrb r3, [r0]
|
||||
str r7, [sp]
|
||||
str r4, [sp, 0x4]
|
||||
ldr r4, [sp, 0x38]
|
||||
str r4, [sp, 0x8]
|
||||
adds r0, r5, 0
|
||||
bl AxResInitFile
|
||||
mov r10, r5
|
||||
b _0806C704
|
||||
_0806C6D6:
|
||||
ldr r0, _0806C774
|
||||
bl GetSpriteData
|
||||
adds r5, r0, 0
|
||||
bl Rand32Bit
|
||||
movs r1, 0x3
|
||||
ands r1, r0
|
||||
adds r4, r6, 0
|
||||
adds r4, 0x28
|
||||
mov r0, r9
|
||||
ldrb r2, [r0]
|
||||
ldr r0, [sp, 0x4C]
|
||||
ldrb r3, [r0]
|
||||
str r7, [sp]
|
||||
str r1, [sp, 0x4]
|
||||
movs r1, 0
|
||||
str r1, [sp, 0x8]
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
bl AxResInitFile
|
||||
mov r10, r4
|
||||
_0806C704:
|
||||
mov r2, r9
|
||||
ldrb r0, [r2]
|
||||
cmp r0, 0x6
|
||||
beq _0806C714
|
||||
adds r1, r6, 0
|
||||
adds r1, 0x6E
|
||||
movs r0, 0
|
||||
strb r0, [r1]
|
||||
_0806C714:
|
||||
ldr r0, _0806C778
|
||||
ldr r1, [r0]
|
||||
ldr r3, _0806C77C
|
||||
adds r0, r1, r3
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _0806C784
|
||||
ldr r4, [sp, 0x48]
|
||||
ldrb r0, [r4]
|
||||
cmp r0, 0x7
|
||||
bne _0806C73C
|
||||
mov r7, r8
|
||||
movs r1, 0x4
|
||||
ldrsh r0, [r7, r1]
|
||||
bl GetMovementType
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x2
|
||||
bne _0806C7E2
|
||||
_0806C73C:
|
||||
movs r0, 0xAE
|
||||
lsls r0, 1
|
||||
add r0, r8
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _0806C76A
|
||||
movs r0, 0xB0
|
||||
lsls r0, 1
|
||||
add r0, r8
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _0806C7E2
|
||||
ldr r0, _0806C780
|
||||
add r0, r8
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _0806C76A
|
||||
mov r0, r10
|
||||
bl RunAxAnimationFrame
|
||||
mov r0, r10
|
||||
bl RunAxAnimationFrame
|
||||
_0806C76A:
|
||||
mov r0, r10
|
||||
bl RunAxAnimationFrame
|
||||
b _0806C7E2
|
||||
.align 2, 0
|
||||
_0806C774: .4byte 0x000001a5
|
||||
_0806C778: .4byte gDungeon
|
||||
_0806C77C: .4byte 0x0001356c
|
||||
_0806C780: .4byte 0x0000015f
|
||||
_0806C784:
|
||||
mov r0, r8
|
||||
adds r0, 0xB0
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
beq _0806C7E2
|
||||
cmp r0, 0x6
|
||||
beq _0806C7E2
|
||||
ldr r2, _0806C7B4
|
||||
adds r0, r1, r2
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _0806C7BC
|
||||
ldr r3, _0806C7B8
|
||||
adds r0, r1, r3
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _0806C7BC
|
||||
mov r0, r10
|
||||
bl RunAxAnimationFrame
|
||||
mov r0, r10
|
||||
bl RunAxAnimationFrame
|
||||
b _0806C7DC
|
||||
.align 2, 0
|
||||
_0806C7B4: .4byte 0x0000066c
|
||||
_0806C7B8: .4byte 0x0001c05f
|
||||
_0806C7BC:
|
||||
ldr r4, [sp, 0x48]
|
||||
ldrb r0, [r4]
|
||||
cmp r0, 0
|
||||
beq _0806C7C8
|
||||
cmp r0, 0x7
|
||||
bne _0806C7DC
|
||||
_0806C7C8:
|
||||
ldr r0, [r6, 0x70]
|
||||
movs r7, 0x82
|
||||
lsls r7, 1
|
||||
adds r0, r7
|
||||
ldr r0, [r0]
|
||||
cmp r0, 0x1
|
||||
ble _0806C7DC
|
||||
mov r0, r10
|
||||
bl RunAxAnimationFrame
|
||||
_0806C7DC:
|
||||
mov r0, r10
|
||||
bl RunAxAnimationFrame
|
||||
_0806C7E2:
|
||||
ldr r1, [r6, 0xC]
|
||||
ldr r0, [r6, 0x14]
|
||||
cmp r1, r0
|
||||
bne _0806C800
|
||||
ldr r1, [r6, 0x10]
|
||||
ldr r0, [r6, 0x18]
|
||||
cmp r1, r0
|
||||
bne _0806C800
|
||||
ldr r1, [sp, 0x44]
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0x9
|
||||
bhi _0806C806
|
||||
adds r0, 0x1
|
||||
strb r0, [r1]
|
||||
b _0806C806
|
||||
_0806C800:
|
||||
movs r0, 0
|
||||
ldr r2, [sp, 0x44]
|
||||
strb r0, [r2]
|
||||
_0806C806:
|
||||
ldr r0, [r6, 0xC]
|
||||
str r0, [r6, 0x14]
|
||||
ldr r2, [r6, 0x10]
|
||||
str r2, [r6, 0x18]
|
||||
cmp r0, 0
|
||||
bge _0806C814
|
||||
adds r0, 0xFF
|
||||
_0806C814:
|
||||
asrs r1, r0, 8
|
||||
ldr r0, _0806C88C
|
||||
ldr r3, [r0]
|
||||
ldr r4, _0806C890
|
||||
adds r0, r3, r4
|
||||
movs r7, 0
|
||||
ldrsh r0, [r0, r7]
|
||||
subs r1, r0
|
||||
str r1, [sp, 0x2C]
|
||||
ldr r0, [r6, 0x1C]
|
||||
subs r0, r2, r0
|
||||
movs r1, 0xBA
|
||||
lsls r1, 1
|
||||
add r1, r8
|
||||
ldr r1, [r1]
|
||||
subs r0, r1
|
||||
cmp r0, 0
|
||||
bge _0806C83A
|
||||
adds r0, 0xFF
|
||||
_0806C83A:
|
||||
asrs r1, r0, 8
|
||||
ldr r4, _0806C894
|
||||
adds r0, r3, r4
|
||||
movs r7, 0
|
||||
ldrsh r3, [r0, r7]
|
||||
subs r1, r3
|
||||
str r1, [sp, 0x30]
|
||||
adds r0, r2, 0
|
||||
cmp r0, 0
|
||||
bge _0806C850
|
||||
adds r0, 0xFF
|
||||
_0806C850:
|
||||
asrs r0, 8
|
||||
subs r0, r3
|
||||
mov r9, r0
|
||||
lsrs r0, 31
|
||||
add r0, r9
|
||||
asrs r0, 1
|
||||
mov r9, r0
|
||||
movs r0, 0xAB
|
||||
lsls r0, 1
|
||||
add r0, r8
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _0806C870
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
add r9, r0
|
||||
_0806C870:
|
||||
movs r0, 0xAE
|
||||
lsls r0, 1
|
||||
add r0, r8
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _0806C898
|
||||
adds r0, r6, 0
|
||||
bl sub_8042768
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
str r0, [sp, 0x34]
|
||||
b _0806C8D8
|
||||
.align 2, 0
|
||||
_0806C88C: .4byte gDungeon
|
||||
_0806C890: .4byte 0x000181f0
|
||||
_0806C894: .4byte 0x000181f2
|
||||
_0806C898:
|
||||
ldr r0, _0806C8B8
|
||||
add r0, r8
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _0806C8C6
|
||||
ldr r0, _0806C8BC
|
||||
ldr r0, [r0]
|
||||
movs r1, 0x4
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0806C8C0
|
||||
ldr r1, [sp, 0x2C]
|
||||
adds r1, 0x1
|
||||
str r1, [sp, 0x2C]
|
||||
b _0806C8C6
|
||||
.align 2, 0
|
||||
_0806C8B8: .4byte 0x0000015d
|
||||
_0806C8BC: .4byte gUnknown_202EDCC
|
||||
_0806C8C0:
|
||||
ldr r2, [sp, 0x2C]
|
||||
subs r2, 0x1
|
||||
str r2, [sp, 0x2C]
|
||||
_0806C8C6:
|
||||
movs r1, 0
|
||||
movs r0, 0xAF
|
||||
lsls r0, 1
|
||||
add r0, r8
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _0806C8D6
|
||||
movs r1, 0x1
|
||||
_0806C8D6:
|
||||
str r1, [sp, 0x34]
|
||||
_0806C8D8:
|
||||
ldr r0, [r6, 0xC]
|
||||
cmp r0, 0
|
||||
bge _0806C8E0
|
||||
adds r0, 0xFF
|
||||
_0806C8E0:
|
||||
lsls r0, 8
|
||||
lsrs r0, 16
|
||||
ldr r1, _0806C998
|
||||
ldr r2, [sp, 0x28]
|
||||
ands r2, r1
|
||||
orrs r2, r0
|
||||
str r2, [sp, 0x28]
|
||||
ldr r1, [r6, 0x10]
|
||||
ldr r0, [r6, 0x1C]
|
||||
subs r1, r0
|
||||
movs r5, 0xBA
|
||||
lsls r5, 1
|
||||
add r5, r8
|
||||
ldr r0, [r5]
|
||||
subs r0, r1, r0
|
||||
cmp r0, 0
|
||||
bge _0806C904
|
||||
adds r0, 0xFF
|
||||
_0806C904:
|
||||
lsls r0, 8
|
||||
lsrs r0, 16
|
||||
lsls r0, 16
|
||||
ldr r1, _0806C99C
|
||||
ands r2, r1
|
||||
orrs r2, r0
|
||||
str r2, [sp, 0x28]
|
||||
add r0, sp, 0xC
|
||||
mov r1, r10
|
||||
bl sub_8005700
|
||||
mov r4, r8
|
||||
adds r4, 0x98
|
||||
ldr r0, [r4]
|
||||
add r1, sp, 0x28
|
||||
ldr r2, _0806C9A0
|
||||
ldr r2, [r2]
|
||||
ldr r3, _0806C9A4
|
||||
adds r2, r3
|
||||
ldrb r3, [r2]
|
||||
add r2, sp, 0xC
|
||||
bl sub_800F958
|
||||
adds r0, r6, 0
|
||||
bl EntityGetStatusSprites
|
||||
adds r2, r0, 0
|
||||
ldr r4, [r4]
|
||||
mov r0, r8
|
||||
movs r1, 0x4
|
||||
ldrsh r7, [r0, r1]
|
||||
movs r3, 0
|
||||
ldr r0, [sp, 0x34]
|
||||
cmp r0, 0
|
||||
beq _0806C958
|
||||
movs r0, 0xA6
|
||||
lsls r0, 1
|
||||
add r0, r8
|
||||
ldrb r1, [r0]
|
||||
negs r0, r1
|
||||
orrs r0, r1
|
||||
lsrs r3, r0, 31
|
||||
_0806C958:
|
||||
adds r0, r4, 0
|
||||
adds r1, r7, 0
|
||||
bl UpdateDungeonPokemonSprite
|
||||
adds r0, r6, 0
|
||||
mov r1, r9
|
||||
bl sub_8042EC8
|
||||
movs r0, 0xAE
|
||||
lsls r0, 1
|
||||
add r0, r8
|
||||
ldrb r1, [r0]
|
||||
cmp r1, 0
|
||||
bne _0806C9BA
|
||||
mov r0, r8
|
||||
adds r0, 0xFF
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
bne _0806C9AC
|
||||
ldr r1, [r5]
|
||||
ldr r0, _0806C9A8
|
||||
cmp r1, r0
|
||||
bgt _0806C9BA
|
||||
movs r2, 0x80
|
||||
lsls r2, 4
|
||||
adds r0, r1, r2
|
||||
str r0, [r5]
|
||||
movs r1, 0xC8
|
||||
lsls r1, 8
|
||||
cmp r0, r1
|
||||
ble _0806C9BA
|
||||
b _0806C9B8
|
||||
.align 2, 0
|
||||
_0806C998: .4byte 0xffff0000
|
||||
_0806C99C: .4byte 0x0000ffff
|
||||
_0806C9A0: .4byte gDungeon
|
||||
_0806C9A4: .4byte 0x00018208
|
||||
_0806C9A8: .4byte 0x0000c7ff
|
||||
_0806C9AC:
|
||||
ldr r0, [r5]
|
||||
ldr r3, _0806CA5C
|
||||
adds r0, r3
|
||||
str r0, [r5]
|
||||
cmp r0, 0
|
||||
bge _0806C9BA
|
||||
_0806C9B8:
|
||||
str r1, [r5]
|
||||
_0806C9BA:
|
||||
ldr r4, [sp, 0x34]
|
||||
cmp r4, 0
|
||||
bne _0806C9C2
|
||||
b _0806CBDE
|
||||
_0806C9C2:
|
||||
movs r4, 0
|
||||
adds r0, r6, 0
|
||||
bl sub_806CF54
|
||||
lsls r0, 24
|
||||
lsrs r7, r0, 24
|
||||
add r1, sp, 0x1C
|
||||
ldr r2, _0806CA60
|
||||
strh r2, [r1]
|
||||
ldr r0, _0806CA64
|
||||
strh r0, [r1, 0x2]
|
||||
strh r2, [r1, 0x4]
|
||||
strh r4, [r1, 0x6]
|
||||
strh r4, [r1, 0x8]
|
||||
ldr r0, _0806CA68
|
||||
ldr r0, [r0]
|
||||
ldr r2, _0806CA6C
|
||||
adds r0, r2
|
||||
ldrb r0, [r0]
|
||||
lsls r0, 10
|
||||
strh r0, [r1, 0xA]
|
||||
mov r3, r8
|
||||
ldrb r0, [r3, 0x6]
|
||||
adds r5, r1, 0
|
||||
cmp r0, 0
|
||||
beq _0806CA08
|
||||
ldr r1, _0806CA70
|
||||
adds r0, r1, 0
|
||||
ldrh r2, [r3, 0x4]
|
||||
adds r0, r2
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
cmp r0, 0x2
|
||||
bhi _0806CA08
|
||||
movs r4, 0x1
|
||||
_0806CA08:
|
||||
mov r0, r8
|
||||
adds r0, 0xE4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
bne _0806CA22
|
||||
ldr r0, _0806CA68
|
||||
ldr r0, [r0]
|
||||
ldr r3, _0806CA74
|
||||
adds r0, r3
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _0806CA22
|
||||
movs r4, 0x1
|
||||
_0806CA22:
|
||||
cmp r4, 0
|
||||
beq _0806CA32
|
||||
ldrh r1, [r5, 0x6]
|
||||
movs r4, 0x80
|
||||
lsls r4, 3
|
||||
adds r0, r4, 0
|
||||
orrs r0, r1
|
||||
strh r0, [r5, 0x6]
|
||||
_0806CA32:
|
||||
movs r0, 0
|
||||
str r0, [sp, 0x3C]
|
||||
mov r1, r8
|
||||
ldrb r0, [r1, 0x6]
|
||||
cmp r0, 0
|
||||
beq _0806CA46
|
||||
ldr r2, [sp, 0x40]
|
||||
ldrb r0, [r2]
|
||||
cmp r0, 0x2
|
||||
bne _0806CA4A
|
||||
_0806CA46:
|
||||
movs r3, 0x1
|
||||
str r3, [sp, 0x3C]
|
||||
_0806CA4A:
|
||||
mov r0, r8
|
||||
adds r0, 0x40
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x4A
|
||||
beq _0806CA58
|
||||
cmp r0, 0x47
|
||||
bne _0806CA78
|
||||
_0806CA58:
|
||||
movs r0, 0x1
|
||||
b _0806CA7A
|
||||
.align 2, 0
|
||||
_0806CA5C: .4byte 0xfffff400
|
||||
_0806CA60: .4byte 0x0000f3ff
|
||||
_0806CA64: .4byte 0x0000ffff
|
||||
_0806CA68: .4byte gDungeon
|
||||
_0806CA6C: .4byte 0x00018208
|
||||
_0806CA70: .4byte 0xfffffe5f
|
||||
_0806CA74: .4byte 0x0001820f
|
||||
_0806CA78:
|
||||
movs r0, 0
|
||||
_0806CA7A:
|
||||
cmp r0, 0
|
||||
bne _0806CA88
|
||||
mov r0, r8
|
||||
adds r0, 0xA4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
bne _0806CA8C
|
||||
_0806CA88:
|
||||
movs r4, 0x1
|
||||
str r4, [sp, 0x3C]
|
||||
_0806CA8C:
|
||||
mov r0, r8
|
||||
adds r0, 0xFF
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x2
|
||||
beq _0806CB16
|
||||
mov r0, r8
|
||||
adds r0, 0xB0
|
||||
ldrb r1, [r0]
|
||||
cmp r1, 0x6
|
||||
beq _0806CAAC
|
||||
subs r0, 0x4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x4
|
||||
beq _0806CAAC
|
||||
cmp r1, 0x2
|
||||
bne _0806CABA
|
||||
_0806CAAC:
|
||||
ldr r0, _0806CAC4
|
||||
ldr r0, [r0]
|
||||
movs r1, 0x2
|
||||
ands r0, r1
|
||||
ldr r1, [sp, 0x2C]
|
||||
adds r1, r0
|
||||
str r1, [sp, 0x2C]
|
||||
_0806CABA:
|
||||
ldr r2, [sp, 0x38]
|
||||
cmp r2, 0
|
||||
beq _0806CACC
|
||||
ldr r0, _0806CAC8
|
||||
b _0806CAD2
|
||||
.align 2, 0
|
||||
_0806CAC4: .4byte gUnknown_202EDCC
|
||||
_0806CAC8: .4byte 0x000001a5
|
||||
_0806CACC:
|
||||
mov r3, r8
|
||||
movs r4, 0x4
|
||||
ldrsh r0, [r3, r4]
|
||||
_0806CAD2:
|
||||
movs r1, 0
|
||||
bl GetPokemonOverworldPalette
|
||||
lsls r0, 24
|
||||
lsrs r2, r0, 24
|
||||
adds r0, r6, 0
|
||||
adds r0, 0x22
|
||||
ldrb r1, [r0]
|
||||
cmp r1, 0
|
||||
bne _0806CAF8
|
||||
str r2, [sp]
|
||||
str r5, [sp, 0x4]
|
||||
mov r0, r10
|
||||
ldr r1, [sp, 0x2C]
|
||||
ldr r2, [sp, 0x30]
|
||||
mov r3, r9
|
||||
bl DoAxFrame_800558C
|
||||
b _0806CB16
|
||||
_0806CAF8:
|
||||
cmp r1, 0x1
|
||||
bne _0806CB16
|
||||
ldr r0, _0806CBF0
|
||||
ldr r0, [r0]
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0806CB16
|
||||
str r2, [sp]
|
||||
str r5, [sp, 0x4]
|
||||
mov r0, r10
|
||||
ldr r1, [sp, 0x2C]
|
||||
ldr r2, [sp, 0x30]
|
||||
mov r3, r9
|
||||
bl DoAxFrame_800558C
|
||||
_0806CB16:
|
||||
ldr r0, [r6, 0xC]
|
||||
cmp r0, 0
|
||||
bge _0806CB1E
|
||||
adds r0, 0xFF
|
||||
_0806CB1E:
|
||||
asrs r0, 8
|
||||
ldrh r1, [r6, 0x38]
|
||||
adds r0, r1
|
||||
movs r1, 0xB8
|
||||
lsls r1, 1
|
||||
add r1, r8
|
||||
strh r0, [r1]
|
||||
ldr r0, [r6, 0x10]
|
||||
cmp r0, 0
|
||||
bge _0806CB34
|
||||
adds r0, 0xFF
|
||||
_0806CB34:
|
||||
asrs r0, 8
|
||||
ldrh r2, [r6, 0x3A]
|
||||
adds r0, r2
|
||||
movs r3, 0xB9
|
||||
lsls r3, 1
|
||||
add r3, r8
|
||||
strh r0, [r3]
|
||||
movs r4, 0
|
||||
ldrsh r2, [r1, r4]
|
||||
ldr r0, _0806CBF4
|
||||
ldr r1, [r0]
|
||||
ldr r4, _0806CBF8
|
||||
adds r0, r1, r4
|
||||
movs r4, 0
|
||||
ldrsh r0, [r0, r4]
|
||||
subs r4, r2, r0
|
||||
movs r0, 0
|
||||
ldrsh r2, [r3, r0]
|
||||
ldr r3, _0806CBFC
|
||||
adds r1, r3
|
||||
movs r3, 0
|
||||
ldrsh r0, [r1, r3]
|
||||
subs r5, r2, r0
|
||||
movs r0, 0x20
|
||||
negs r0, r0
|
||||
cmp r4, r0
|
||||
blt _0806CBDE
|
||||
cmp r5, r0
|
||||
blt _0806CBDE
|
||||
ldr r0, _0806CC00
|
||||
cmp r4, r0
|
||||
bgt _0806CBDE
|
||||
cmp r5, 0xBF
|
||||
bgt _0806CBDE
|
||||
cmp r7, 0x6
|
||||
beq _0806CBDE
|
||||
adds r0, r6, 0
|
||||
adds r0, 0x22
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _0806CBDE
|
||||
ldr r0, [sp, 0x3C]
|
||||
lsls r2, r0, 3
|
||||
adds r2, r0
|
||||
lsls r2, 3
|
||||
lsls r0, r7, 1
|
||||
adds r0, r7
|
||||
lsls r0, 2
|
||||
ldr r1, _0806CC04
|
||||
adds r0, r1
|
||||
adds r3, r2, r0
|
||||
movs r0, 0xAB
|
||||
lsls r0, 1
|
||||
add r0, r8
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _0806CBDE
|
||||
movs r2, 0x8
|
||||
ldrsh r1, [r3, r2]
|
||||
adds r1, r4, r1
|
||||
ldr r0, _0806CC08
|
||||
ands r1, r0
|
||||
ldrh r2, [r3, 0x2]
|
||||
movs r0, 0xFE
|
||||
lsls r0, 8
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
strh r0, [r3, 0x2]
|
||||
movs r4, 0xA
|
||||
ldrsh r1, [r3, r4]
|
||||
adds r1, r5, r1
|
||||
ldr r0, _0806CC0C
|
||||
ands r1, r0
|
||||
lsls r1, 4
|
||||
ldrh r2, [r3, 0x6]
|
||||
movs r0, 0xF
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
strh r0, [r3, 0x6]
|
||||
adds r0, r3, 0
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
movs r3, 0
|
||||
bl AddSprite
|
||||
_0806CBDE:
|
||||
add sp, 0x50
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0806CBF0: .4byte gUnknown_202EDCC
|
||||
_0806CBF4: .4byte gDungeon
|
||||
_0806CBF8: .4byte 0x000181f0
|
||||
_0806CBFC: .4byte 0x000181f2
|
||||
_0806CC00: .4byte 0x0000010f
|
||||
_0806CC04: .4byte gUnknown_202ED28
|
||||
_0806CC08: .4byte 0x000001ff
|
||||
_0806CC0C: .4byte 0x00000fff
|
||||
thumb_func_end sub_806C51C
|
||||
|
||||
.align 2,0
|
||||
|
|
@ -241,7 +241,6 @@ SECTIONS {
|
|||
src/code_8069D4C.o(.text);
|
||||
src/targeting.o(.text);
|
||||
src/code_8069E0C.o(.text);
|
||||
asm/code_8069E0C.o(.text);
|
||||
src/code_806CD90.o(.text);
|
||||
src/type_effectiveness.o(.text);
|
||||
src/code_806E8B0.o(.text);
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@
|
|||
#include "code_803E668.h"
|
||||
#include "code_8045A00.h"
|
||||
#include "code_805D8C8.h"
|
||||
#include "code_804267C.h"
|
||||
#include "random.h"
|
||||
#include "constants/ability.h"
|
||||
#include "constants/move_id.h"
|
||||
#include "constants/status.h"
|
||||
|
|
@ -2042,4 +2044,300 @@ s32 sub_806C4D4(s32 _species, s32 level, s32 categoryIndex)
|
|||
return defensiveCount;
|
||||
}
|
||||
|
||||
extern const u8 gUnknown_8106EC8[][13];
|
||||
extern s32 gUnknown_202EDCC;
|
||||
extern void sub_800F958(s32 dungeonSpriteID, DungeonPos *pos, DungeonPos *statusOffsets, u32 a3);
|
||||
extern void sub_8005700(DungeonPos *a0, struct axObject *a1);
|
||||
u32 EntityGetStatusSprites(Entity *entity);
|
||||
void UpdateDungeonPokemonSprite(int id, short species, int status, char visible);
|
||||
extern void sub_8042EC8(Entity *a0, s32 a1);
|
||||
void DoAxFrame_800558C(struct axObject *a0, s32 spriteX, s32 spriteY, u32 a3, u32 paletteNum, u16 *spriteMasks);
|
||||
|
||||
struct unkStruct_202ED28
|
||||
{
|
||||
SpriteOAM sprite;
|
||||
s16 unk8;
|
||||
s16 unkA;
|
||||
};
|
||||
|
||||
extern struct unkStruct_202ED28 gUnknown_202ED28[][6];
|
||||
|
||||
static inline u16 GetUnkFlag(Entity *entity)
|
||||
{
|
||||
if ((entity->axObj.axdata.flags & 0x2000))
|
||||
return 0;
|
||||
else
|
||||
return entity->axObj.axdata.flags >> 15;
|
||||
}
|
||||
|
||||
void sub_806C51C(Entity *entity)
|
||||
{
|
||||
s32 x, y, y2;
|
||||
bool8 var_3C;
|
||||
bool8 decoySprite;
|
||||
s32 var_34;
|
||||
DungeonPos pos1;
|
||||
DungeonPos posArray[4];
|
||||
u32 statusSprites;
|
||||
bool8 r4;
|
||||
u8 r7;
|
||||
u16 spriteMasks[6];
|
||||
s32 xSprite, ySprite;
|
||||
|
||||
EntityInfo *entInfo = GetEntInfo(entity);
|
||||
if (gDungeon->unk181e8.cameraTarget == entity) {
|
||||
decoySprite = FALSE;
|
||||
}
|
||||
else {
|
||||
decoySprite = gDungeon->unk181e8.hallucinating;
|
||||
}
|
||||
|
||||
if (entInfo->curseClassStatus.status == STATUS_DECOY) {
|
||||
decoySprite = TRUE;
|
||||
}
|
||||
|
||||
if (entity->axObj.unk43_animId2 == entity->axObj.unk42_animId1 && entity->axObj.unk45_orientation == entity->axObj.unk44_direction1 && entity->axObj.unk47 == 0) {
|
||||
bool8 r2 = FALSE;
|
||||
|
||||
if (!GetUnkFlag(entity))
|
||||
r2 = TRUE;
|
||||
|
||||
if (r2) {
|
||||
s32 r0;
|
||||
s32 r3 = sub_806CEBC(entity);
|
||||
entity->fill21 = 1;
|
||||
if (entInfo->unkFE == 99) {
|
||||
if (entity->axObj.unk43_animId2 <= 12) {
|
||||
s32 r2;
|
||||
if (entInfo->bideClassStatus.status == STATUS_BIDE) {
|
||||
r2 = 2;
|
||||
}
|
||||
else if (entity->fill23 < 3) {
|
||||
r2 = 0;
|
||||
}
|
||||
else {
|
||||
r2 = 1;
|
||||
}
|
||||
|
||||
r0 = gUnknown_8106EC8[r2][entity->axObj.unk43_animId2];
|
||||
if (r0 == 7) {
|
||||
r0 = r3;
|
||||
}
|
||||
}
|
||||
else {
|
||||
r0 = 99;
|
||||
}
|
||||
}
|
||||
else {
|
||||
r0 = entInfo->unkFE;
|
||||
}
|
||||
|
||||
if (r0 != 99) {
|
||||
entity->axObj.unk42_animId1 = r0;
|
||||
entity->axObj.unk44_direction1 = entity->axObj.unk45_orientation & DIRECTION_MASK;
|
||||
entity->axObj.unk47 = 1;
|
||||
if (entity->axObj.unk42_animId1 == 6 && ++entity->axObj.unk46 == 16) {
|
||||
entity->axObj.unk42_animId1 = r3;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (entity->axObj.unk43_animId2 != entity->axObj.unk42_animId1 || entity->axObj.unk45_orientation != entity->axObj.unk44_direction1 || entity->axObj.unk47 != 0) {
|
||||
s32 r7;
|
||||
|
||||
entity->axObj.unk43_animId2 = entity->axObj.unk42_animId1;
|
||||
entity->axObj.unk45_orientation = entity->axObj.unk44_direction1;
|
||||
entity->axObj.unk47 = 0;
|
||||
r7 = entity->axObj.unk40_maybeAnimTimer;
|
||||
if (sub_808DA44(entInfo->apparentID, entity->axObj.unk42_animId1)) {
|
||||
r7 = 0;
|
||||
}
|
||||
|
||||
if (!decoySprite) {
|
||||
s32 rnd = Rand32Bit() & 3;
|
||||
AxResInitFile(&entity->axObj.axdata, entity->axObj.spriteFile, entity->axObj.unk42_animId1, entity->axObj.unk44_direction1, r7, rnd, FALSE);
|
||||
}
|
||||
else {
|
||||
OpenedFile *spriteData = GetSpriteData(MONSTER_DECOY);
|
||||
s32 rnd = Rand32Bit() & 3;
|
||||
AxResInitFile(&entity->axObj.axdata, spriteData, entity->axObj.unk42_animId1, entity->axObj.unk44_direction1, r7, rnd, FALSE);
|
||||
}
|
||||
|
||||
if (entity->axObj.unk42_animId1 != 6) {
|
||||
entity->axObj.unk46 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (gDungeon->unk1356C) {
|
||||
if (entity->axObj.unk43_animId2 != 7 || GetMovementType(entInfo->apparentID) == 2) {
|
||||
if (entInfo->unk15C != 0) {
|
||||
if (entInfo->unk160 == 0) {
|
||||
if (entInfo->unk15F != 0) {
|
||||
RunAxAnimationFrame(&entity->axObj);
|
||||
RunAxAnimationFrame(&entity->axObj);
|
||||
RunAxAnimationFrame(&entity->axObj);
|
||||
}
|
||||
else {
|
||||
RunAxAnimationFrame(&entity->axObj);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
RunAxAnimationFrame(&entity->axObj);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (entInfo->frozenClassStatus.status != STATUS_FROZEN && entInfo->frozenClassStatus.status != STATUS_PETRIFIED) {
|
||||
if (gDungeon->unk644.unk28 != 0 && gDungeon->unk1BDD4.unk1C05F == 0) {
|
||||
RunAxAnimationFrame(&entity->axObj);
|
||||
RunAxAnimationFrame(&entity->axObj);
|
||||
}
|
||||
else if ((entity->axObj.unk43_animId2 == 0 || entity->axObj.unk43_animId2 == 7) && GetEntInfo(entity)->speedStage > 1) {
|
||||
RunAxAnimationFrame(&entity->axObj);
|
||||
}
|
||||
RunAxAnimationFrame(&entity->axObj);
|
||||
}
|
||||
}
|
||||
|
||||
if (entity->pixelPos.x == entity->prevPixelPos.x && entity->pixelPos.y == entity->prevPixelPos.y) {
|
||||
if (entity->fill23 < 10) {
|
||||
entity->fill23++;
|
||||
}
|
||||
}
|
||||
else {
|
||||
entity->fill23 = 0;
|
||||
}
|
||||
|
||||
entity->prevPixelPos.x = entity->pixelPos.x;
|
||||
entity->prevPixelPos.y = entity->pixelPos.y;
|
||||
|
||||
x = (entity->pixelPos.x / 256) - gDungeon->unk181e8.cameraPixelPos.x;
|
||||
y = (((entity->pixelPos.y - entity->unk1C) - entInfo->unk174.raw) / 256) - gDungeon->unk181e8.cameraPixelPos.y;
|
||||
y2 = (entity->pixelPos.y / 256) - gDungeon->unk181e8.cameraPixelPos.y;
|
||||
y2 /= 2;
|
||||
if (entInfo->unk156 == 0) {
|
||||
y2--;
|
||||
}
|
||||
|
||||
if (entInfo->unk15C == 0) {
|
||||
var_3C = sub_8042768(entity);
|
||||
}
|
||||
else {
|
||||
if (entInfo->unk15D != 0) {
|
||||
if (gUnknown_202EDCC & 4) {
|
||||
x++;
|
||||
}
|
||||
else {
|
||||
x--;
|
||||
}
|
||||
}
|
||||
var_3C = (entInfo->unk15E == 0);
|
||||
}
|
||||
|
||||
pos1.x = entity->pixelPos.x / 256;
|
||||
pos1.y = ((entity->pixelPos.y - entity->unk1C) - entInfo->unk174.raw) / 256;
|
||||
|
||||
sub_8005700(posArray, &entity->axObj);
|
||||
sub_800F958(entInfo->unk98, &pos1, posArray, gDungeon->unk181e8.unk18208);
|
||||
|
||||
statusSprites = EntityGetStatusSprites(entity);
|
||||
UpdateDungeonPokemonSprite(entInfo->unk98, entInfo->apparentID, statusSprites, (var_3C && entInfo->unk14C));
|
||||
|
||||
sub_8042EC8(entity, y2);
|
||||
if (entInfo->unk15C == 0) {
|
||||
if (entInfo->unkFF == 1) {
|
||||
if (entInfo->unk174.raw <= IntToF248_2(199.999).raw) {
|
||||
entInfo->unk174.raw += IntToF248_2(8).raw;
|
||||
if (entInfo->unk174.raw > IntToF248_2(200).raw) {
|
||||
entInfo->unk174.raw = IntToF248_2(200).raw;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
entInfo->unk174.raw -= IntToF248_2(12).raw;
|
||||
if (entInfo->unk174.raw < IntToF248_2(0).raw) {
|
||||
entInfo->unk174.raw = IntToF248_2(0).raw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!var_3C)
|
||||
return;
|
||||
|
||||
r4 = FALSE;
|
||||
r7 = sub_806CF54(entity);
|
||||
spriteMasks[0] = 0xF3FF;
|
||||
spriteMasks[1] = 0xFFFF;
|
||||
spriteMasks[2] = 0xF3FF;
|
||||
spriteMasks[3] = 0;
|
||||
spriteMasks[4] = 0;
|
||||
spriteMasks[5] = gDungeon->unk181e8.unk18208 << 10;
|
||||
if (entInfo->isNotTeamMember && (entInfo->apparentID == MONSTER_DEOXYS_ATTACK || entInfo->apparentID == MONSTER_DEOXYS_DEFENSE || entInfo->apparentID == MONSTER_DEOXYS_SPEED)) {
|
||||
r4 = TRUE;
|
||||
}
|
||||
if (entInfo->invisibleClassStatus.status == STATUS_INVISIBLE && !gDungeon->unk181e8.unk1820F) {
|
||||
r4 = TRUE;
|
||||
}
|
||||
if (r4) {
|
||||
spriteMasks[3] |= 0x400;
|
||||
}
|
||||
|
||||
var_34 = 0;
|
||||
if (!entInfo->isNotTeamMember || entInfo->curseClassStatus.status == STATUS_DECOY) {
|
||||
var_34 = 1;
|
||||
}
|
||||
if (IsClientOrTeamBase(entInfo->joinedAt.id) || entInfo->monsterBehavior == 1) {
|
||||
var_34 = 1;
|
||||
}
|
||||
|
||||
if (entInfo->unkFF != 2) {
|
||||
s32 overworldPal;
|
||||
|
||||
if (entInfo->frozenClassStatus.status == STATUS_PETRIFIED || entInfo->burnClassStatus.status == STATUS_PARALYSIS || entInfo->frozenClassStatus.status == STATUS_SHADOW_HOLD) {
|
||||
x += gUnknown_202EDCC & 2;
|
||||
}
|
||||
|
||||
if (decoySprite) {
|
||||
overworldPal = GetPokemonOverworldPalette(MONSTER_DECOY, 0);
|
||||
}
|
||||
else {
|
||||
overworldPal = GetPokemonOverworldPalette(entInfo->apparentID, 0);
|
||||
}
|
||||
|
||||
if (entity->unk22 == 0) {
|
||||
DoAxFrame_800558C(&entity->axObj, x, y, y2, overworldPal, spriteMasks);
|
||||
}
|
||||
else if (entity->unk22 == 1 && (gUnknown_202EDCC & 1)) {
|
||||
DoAxFrame_800558C(&entity->axObj, x, y, y2, overworldPal, spriteMasks);
|
||||
}
|
||||
}
|
||||
|
||||
entInfo->pixelPos.x = (entity->pixelPos.x / 256) + entity->axObj.axdata.sub1.shadow.x;
|
||||
entInfo->pixelPos.y = (entity->pixelPos.y / 256) + entity->axObj.axdata.sub1.shadow.y;
|
||||
|
||||
xSprite = entInfo->pixelPos.x - gDungeon->unk181e8.cameraPixelPos.x;
|
||||
ySprite = entInfo->pixelPos.y - gDungeon->unk181e8.cameraPixelPos.y;
|
||||
if (xSprite >= -32 && ySprite >= -32 && xSprite <= 271 && ySprite <= 191 && r7 != 6 && entity->unk22 == 0) {
|
||||
struct unkStruct_202ED28 *spriteStructPtr = &gUnknown_202ED28[var_34][r7];
|
||||
if (entInfo->unk156 != 0) {
|
||||
u32 finalXSprite, finalYSprite;
|
||||
|
||||
finalXSprite = xSprite + spriteStructPtr->unk8;
|
||||
finalXSprite &= SPRITEOAM_MASK_X;
|
||||
spriteStructPtr->sprite.attrib2 &= ~SPRITEOAM_MASK_X;
|
||||
spriteStructPtr->sprite.attrib2 |= finalXSprite;
|
||||
|
||||
finalYSprite = ySprite + spriteStructPtr->unkA;
|
||||
finalYSprite &= SPRITEOAM_MAX_UNK6_4;
|
||||
finalYSprite <<= SPRITEOAM_SHIFT_UNK6_4;
|
||||
spriteStructPtr->sprite.unk6 &= 0xF;
|
||||
spriteStructPtr->sprite.unk6 |= finalYSprite;
|
||||
|
||||
AddSprite(&spriteStructPtr->sprite, 0, NULL, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user