Finish decomp of intro
This commit is contained in:
-685
@@ -1,685 +0,0 @@
|
|||||||
.include "asm/macros.inc"
|
|
||||||
.include "constants/constants.inc"
|
|
||||||
|
|
||||||
.syntax unified
|
|
||||||
|
|
||||||
.text
|
|
||||||
|
|
||||||
thumb_func_start sub_80EE704
|
|
||||||
sub_80EE704: @ 80EE704
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
movs r1, 0x2E
|
|
||||||
ldrsh r0, [r4, r1]
|
|
||||||
cmp r0, 0x1
|
|
||||||
beq _080EE740
|
|
||||||
cmp r0, 0x1
|
|
||||||
bgt _080EE71A
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080EE726
|
|
||||||
b _080EE846
|
|
||||||
_080EE71A:
|
|
||||||
cmp r0, 0x2
|
|
||||||
beq _080EE7C4
|
|
||||||
cmp r0, 0x3
|
|
||||||
bne _080EE724
|
|
||||||
b _080EE824
|
|
||||||
_080EE724:
|
|
||||||
b _080EE846
|
|
||||||
_080EE726:
|
|
||||||
ldrh r0, [r4, 0x30]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0x30]
|
|
||||||
lsls r0, 16
|
|
||||||
asrs r0, 16
|
|
||||||
cmp r0, 0x4
|
|
||||||
bgt _080EE736
|
|
||||||
b _080EE846
|
|
||||||
_080EE736:
|
|
||||||
adds r0, r4, 0
|
|
||||||
movs r1, 0x3
|
|
||||||
bl StartSpriteAnim
|
|
||||||
b _080EE818
|
|
||||||
_080EE740:
|
|
||||||
ldrh r2, [r4, 0x3C]
|
|
||||||
ldrh r3, [r4, 0x32]
|
|
||||||
adds r1, r2, r3
|
|
||||||
movs r5, 0
|
|
||||||
strh r1, [r4, 0x32]
|
|
||||||
ldrh r0, [r4, 0x34]
|
|
||||||
adds r0, 0x8
|
|
||||||
strh r0, [r4, 0x34]
|
|
||||||
lsls r1, 16
|
|
||||||
asrs r1, 20
|
|
||||||
strh r1, [r4, 0x24]
|
|
||||||
ldr r1, _080EE7B0 @ =gSineTable
|
|
||||||
movs r3, 0x34
|
|
||||||
ldrsh r0, [r4, r3]
|
|
||||||
lsls r0, 1
|
|
||||||
adds r0, r1
|
|
||||||
movs r3, 0
|
|
||||||
ldrsh r1, [r0, r3]
|
|
||||||
ldr r0, _080EE7B4 @ =gUnknown_203AB04
|
|
||||||
ldrh r0, [r0]
|
|
||||||
muls r0, r1
|
|
||||||
ldr r1, _080EE7B8 @ =gUnknown_203AB08
|
|
||||||
ldrh r1, [r1]
|
|
||||||
asrs r0, r1
|
|
||||||
negs r0, r0
|
|
||||||
strh r0, [r4, 0x26]
|
|
||||||
ldrh r0, [r4, 0x38]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0x38]
|
|
||||||
movs r0, 0x38
|
|
||||||
ldrsh r1, [r4, r0]
|
|
||||||
ldr r0, _080EE7BC @ =gUnknown_203AB06
|
|
||||||
ldrh r0, [r0]
|
|
||||||
cmp r1, r0
|
|
||||||
ble _080EE78C
|
|
||||||
strh r5, [r4, 0x38]
|
|
||||||
subs r0, r2, 0x1
|
|
||||||
strh r0, [r4, 0x3C]
|
|
||||||
_080EE78C:
|
|
||||||
ldrh r0, [r4, 0x36]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0x36]
|
|
||||||
lsls r0, 16
|
|
||||||
asrs r0, 16
|
|
||||||
cmp r0, 0xF
|
|
||||||
ble _080EE846
|
|
||||||
adds r0, r4, 0
|
|
||||||
movs r1, 0x2
|
|
||||||
bl StartSpriteAnim
|
|
||||||
strh r5, [r4, 0x30]
|
|
||||||
ldr r0, _080EE7C0 @ =0x00004757
|
|
||||||
strh r0, [r4, 0x3A]
|
|
||||||
movs r0, 0x1C
|
|
||||||
strh r0, [r4, 0x3C]
|
|
||||||
b _080EE818
|
|
||||||
.align 2, 0
|
|
||||||
_080EE7B0: .4byte gSineTable
|
|
||||||
_080EE7B4: .4byte gUnknown_203AB04
|
|
||||||
_080EE7B8: .4byte gUnknown_203AB08
|
|
||||||
_080EE7BC: .4byte gUnknown_203AB06
|
|
||||||
_080EE7C0: .4byte 0x00004757
|
|
||||||
_080EE7C4:
|
|
||||||
ldrh r0, [r4, 0x3C]
|
|
||||||
ldrh r1, [r4, 0x32]
|
|
||||||
adds r0, r1
|
|
||||||
strh r0, [r4, 0x32]
|
|
||||||
lsls r0, 16
|
|
||||||
asrs r1, r0, 20
|
|
||||||
strh r1, [r4, 0x24]
|
|
||||||
ldrh r0, [r4, 0x30]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0x30]
|
|
||||||
lsls r0, 16
|
|
||||||
asrs r0, 16
|
|
||||||
cmp r0, 0x6
|
|
||||||
ble _080EE804
|
|
||||||
ldrh r0, [r4, 0x20]
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 16
|
|
||||||
asrs r0, 16
|
|
||||||
ldrh r1, [r4, 0x26]
|
|
||||||
ldrh r2, [r4, 0x22]
|
|
||||||
adds r1, r2
|
|
||||||
lsls r1, 16
|
|
||||||
asrs r1, 16
|
|
||||||
movs r3, 0x3A
|
|
||||||
ldrsh r2, [r4, r3]
|
|
||||||
bl sub_80EE864
|
|
||||||
movs r0, 0x3A
|
|
||||||
ldrsh r1, [r4, r0]
|
|
||||||
ldr r0, _080EE820 @ =0x41c64e6d
|
|
||||||
muls r0, r1
|
|
||||||
strh r0, [r4, 0x3A]
|
|
||||||
_080EE804:
|
|
||||||
movs r1, 0x30
|
|
||||||
ldrsh r0, [r4, r1]
|
|
||||||
cmp r0, 0xC
|
|
||||||
ble _080EE846
|
|
||||||
adds r0, r4, 0
|
|
||||||
movs r1, 0
|
|
||||||
bl StartSpriteAnim
|
|
||||||
movs r0, 0
|
|
||||||
strh r0, [r4, 0x30]
|
|
||||||
_080EE818:
|
|
||||||
ldrh r0, [r4, 0x2E]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0x2E]
|
|
||||||
b _080EE846
|
|
||||||
.align 2, 0
|
|
||||||
_080EE820: .4byte 0x41c64e6d
|
|
||||||
_080EE824:
|
|
||||||
ldrh r0, [r4, 0x30]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0x30]
|
|
||||||
lsls r0, 16
|
|
||||||
asrs r0, 16
|
|
||||||
cmp r0, 0x10
|
|
||||||
ble _080EE846
|
|
||||||
ldr r0, _080EE84C @ =gUnknown_203AB0A
|
|
||||||
ldrh r1, [r0]
|
|
||||||
ldrh r2, [r4, 0x24]
|
|
||||||
negs r2, r2
|
|
||||||
lsls r2, 16
|
|
||||||
asrs r2, 16
|
|
||||||
adds r0, r4, 0
|
|
||||||
movs r3, 0x4
|
|
||||||
bl sub_80EE970
|
|
||||||
_080EE846:
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080EE84C: .4byte gUnknown_203AB0A
|
|
||||||
thumb_func_end sub_80EE704
|
|
||||||
|
|
||||||
thumb_func_start sub_80EE850
|
|
||||||
sub_80EE850: @ 80EE850
|
|
||||||
ldr r0, [r0, 0x18]
|
|
||||||
ldr r1, [r0, 0x1C]
|
|
||||||
ldr r0, _080EE860 @ =SpriteCallbackDummy
|
|
||||||
eors r1, r0
|
|
||||||
negs r0, r1
|
|
||||||
orrs r0, r1
|
|
||||||
lsrs r0, 31
|
|
||||||
bx lr
|
|
||||||
.align 2, 0
|
|
||||||
_080EE860: .4byte SpriteCallbackDummy
|
|
||||||
thumb_func_end sub_80EE850
|
|
||||||
|
|
||||||
thumb_func_start sub_80EE864
|
|
||||||
sub_80EE864: @ 80EE864
|
|
||||||
push {r4-r7,lr}
|
|
||||||
mov r7, r8
|
|
||||||
push {r7}
|
|
||||||
lsls r2, 16
|
|
||||||
lsrs r5, r2, 16
|
|
||||||
movs r6, 0
|
|
||||||
lsls r0, 16
|
|
||||||
ldr r2, _080EE8D4 @ =0xffea0000
|
|
||||||
adds r2, r0
|
|
||||||
mov r8, r2
|
|
||||||
lsls r1, 16
|
|
||||||
movs r0, 0xC0
|
|
||||||
lsls r0, 13
|
|
||||||
adds r7, r1, r0
|
|
||||||
_080EE880:
|
|
||||||
ldr r0, _080EE8D8 @ =gUnknown_840BEC4
|
|
||||||
mov r2, r8
|
|
||||||
asrs r1, r2, 16
|
|
||||||
asrs r2, r7, 16
|
|
||||||
movs r3, 0xA
|
|
||||||
bl CreateSprite
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r1, r0, 24
|
|
||||||
cmp r1, 0x40
|
|
||||||
beq _080EE8C4
|
|
||||||
ldr r0, _080EE8DC @ =gSprites
|
|
||||||
lsls r4, r1, 4
|
|
||||||
adds r4, r1
|
|
||||||
lsls r4, 2
|
|
||||||
adds r4, r0
|
|
||||||
lsls r5, 16
|
|
||||||
asrs r5, 16
|
|
||||||
adds r0, r5, 0
|
|
||||||
movs r1, 0xD
|
|
||||||
bl __modsi3
|
|
||||||
adds r0, 0x8
|
|
||||||
strh r0, [r4, 0x34]
|
|
||||||
adds r0, r5, 0
|
|
||||||
movs r1, 0x3
|
|
||||||
bl __modsi3
|
|
||||||
strh r0, [r4, 0x36]
|
|
||||||
strh r6, [r4, 0x3C]
|
|
||||||
ldr r0, _080EE8E0 @ =0x41c64e6d
|
|
||||||
muls r0, r5
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r5, r0, 16
|
|
||||||
_080EE8C4:
|
|
||||||
adds r6, 0x1
|
|
||||||
cmp r6, 0x1
|
|
||||||
ble _080EE880
|
|
||||||
pop {r3}
|
|
||||||
mov r8, r3
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080EE8D4: .4byte 0xffea0000
|
|
||||||
_080EE8D8: .4byte gUnknown_840BEC4
|
|
||||||
_080EE8DC: .4byte gSprites
|
|
||||||
_080EE8E0: .4byte 0x41c64e6d
|
|
||||||
thumb_func_end sub_80EE864
|
|
||||||
|
|
||||||
thumb_func_start sub_80EE8E4
|
|
||||||
sub_80EE8E4: @ 80EE8E4
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r5, r0, 0
|
|
||||||
adds r4, r5, 0
|
|
||||||
adds r4, 0x2E
|
|
||||||
movs r1, 0x2E
|
|
||||||
ldrsh r0, [r5, r1]
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080EE8FA
|
|
||||||
cmp r0, 0x1
|
|
||||||
beq _080EE90C
|
|
||||||
b _080EE93E
|
|
||||||
_080EE8FA:
|
|
||||||
ldrh r0, [r5, 0x20]
|
|
||||||
lsls r0, 4
|
|
||||||
strh r0, [r4, 0x2]
|
|
||||||
ldrh r0, [r5, 0x22]
|
|
||||||
lsls r0, 4
|
|
||||||
strh r0, [r4, 0x4]
|
|
||||||
ldrh r0, [r5, 0x2E]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r5, 0x2E]
|
|
||||||
_080EE90C:
|
|
||||||
ldrh r1, [r4, 0x2]
|
|
||||||
ldrh r0, [r4, 0x6]
|
|
||||||
subs r1, r0
|
|
||||||
strh r1, [r4, 0x2]
|
|
||||||
ldrh r0, [r4, 0x8]
|
|
||||||
ldrh r2, [r4, 0x4]
|
|
||||||
adds r0, r2
|
|
||||||
strh r0, [r4, 0x4]
|
|
||||||
lsls r1, 16
|
|
||||||
asrs r1, 20
|
|
||||||
strh r1, [r5, 0x20]
|
|
||||||
ldrh r0, [r4, 0x4]
|
|
||||||
lsls r0, 16
|
|
||||||
asrs r0, 20
|
|
||||||
strh r0, [r5, 0x22]
|
|
||||||
adds r0, r5, 0
|
|
||||||
adds r0, 0x3F
|
|
||||||
ldrb r1, [r0]
|
|
||||||
movs r0, 0x10
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080EE93E
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl DestroySprite
|
|
||||||
_080EE93E:
|
|
||||||
ldrh r0, [r4, 0xE]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0xE]
|
|
||||||
lsls r0, 16
|
|
||||||
asrs r0, 16
|
|
||||||
cmp r0, 0x1
|
|
||||||
ble _080EE96A
|
|
||||||
movs r0, 0
|
|
||||||
strh r0, [r4, 0xE]
|
|
||||||
adds r3, r5, 0
|
|
||||||
adds r3, 0x3E
|
|
||||||
ldrb r2, [r3]
|
|
||||||
lsls r0, r2, 29
|
|
||||||
lsrs r0, 31
|
|
||||||
movs r1, 0x1
|
|
||||||
eors r1, r0
|
|
||||||
lsls r1, 2
|
|
||||||
movs r0, 0x5
|
|
||||||
negs r0, r0
|
|
||||||
ands r0, r2
|
|
||||||
orrs r0, r1
|
|
||||||
strb r0, [r3]
|
|
||||||
_080EE96A:
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end sub_80EE8E4
|
|
||||||
|
|
||||||
thumb_func_start sub_80EE970
|
|
||||||
sub_80EE970: @ 80EE970
|
|
||||||
push {r4-r6,lr}
|
|
||||||
mov r6, r8
|
|
||||||
push {r6}
|
|
||||||
adds r4, r0, 0
|
|
||||||
adds r5, r1, 0
|
|
||||||
adds r0, r2, 0
|
|
||||||
adds r6, r3, 0
|
|
||||||
lsls r5, 16
|
|
||||||
lsrs r5, 16
|
|
||||||
lsls r6, 24
|
|
||||||
lsrs r6, 24
|
|
||||||
movs r1, 0
|
|
||||||
mov r8, r1
|
|
||||||
mov r1, r8
|
|
||||||
strh r1, [r4, 0x2E]
|
|
||||||
strh r5, [r4, 0x30]
|
|
||||||
ldrh r1, [r4, 0x24]
|
|
||||||
lsls r1, 4
|
|
||||||
strh r1, [r4, 0x32]
|
|
||||||
lsls r0, 16
|
|
||||||
asrs r0, 12
|
|
||||||
adds r1, r5, 0
|
|
||||||
bl __divsi3
|
|
||||||
strh r0, [r4, 0x34]
|
|
||||||
mov r0, r8
|
|
||||||
strh r0, [r4, 0x36]
|
|
||||||
movs r0, 0x80
|
|
||||||
lsls r0, 4
|
|
||||||
adds r1, r5, 0
|
|
||||||
bl __divsi3
|
|
||||||
strh r0, [r4, 0x38]
|
|
||||||
mov r1, r8
|
|
||||||
strh r1, [r4, 0x3A]
|
|
||||||
strh r6, [r4, 0x3C]
|
|
||||||
adds r0, r4, 0
|
|
||||||
movs r1, 0x2
|
|
||||||
bl StartSpriteAnim
|
|
||||||
ldr r0, _080EE9D0 @ =sub_80EE9D4
|
|
||||||
str r0, [r4, 0x1C]
|
|
||||||
pop {r3}
|
|
||||||
mov r8, r3
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080EE9D0: .4byte sub_80EE9D4
|
|
||||||
thumb_func_end sub_80EE970
|
|
||||||
|
|
||||||
thumb_func_start sub_80EE9D4
|
|
||||||
sub_80EE9D4: @ 80EE9D4
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
movs r0, 0x2E
|
|
||||||
ldrsh r5, [r4, r0]
|
|
||||||
cmp r5, 0x1
|
|
||||||
beq _080EEA08
|
|
||||||
cmp r5, 0x1
|
|
||||||
bgt _080EE9EA
|
|
||||||
cmp r5, 0
|
|
||||||
beq _080EE9F0
|
|
||||||
b _080EEA88
|
|
||||||
_080EE9EA:
|
|
||||||
cmp r5, 0x2
|
|
||||||
beq _080EEA6E
|
|
||||||
b _080EEA88
|
|
||||||
_080EE9F0:
|
|
||||||
ldrh r0, [r4, 0x3A]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0x3A]
|
|
||||||
lsls r0, 16
|
|
||||||
asrs r0, 16
|
|
||||||
cmp r0, 0x4
|
|
||||||
ble _080EEA88
|
|
||||||
adds r0, r4, 0
|
|
||||||
movs r1, 0x3
|
|
||||||
bl StartSpriteAnim
|
|
||||||
b _080EEA64
|
|
||||||
_080EEA08:
|
|
||||||
ldrh r0, [r4, 0x30]
|
|
||||||
subs r0, 0x1
|
|
||||||
strh r0, [r4, 0x30]
|
|
||||||
lsls r0, 16
|
|
||||||
asrs r5, r0, 16
|
|
||||||
cmp r5, 0
|
|
||||||
beq _080EEA4C
|
|
||||||
ldrh r1, [r4, 0x34]
|
|
||||||
ldrh r2, [r4, 0x32]
|
|
||||||
adds r1, r2
|
|
||||||
strh r1, [r4, 0x32]
|
|
||||||
ldrh r0, [r4, 0x38]
|
|
||||||
ldrh r2, [r4, 0x36]
|
|
||||||
adds r0, r2
|
|
||||||
strh r0, [r4, 0x36]
|
|
||||||
lsls r1, 16
|
|
||||||
asrs r1, 20
|
|
||||||
strh r1, [r4, 0x24]
|
|
||||||
ldr r1, _080EEA48 @ =gSineTable
|
|
||||||
lsls r0, 16
|
|
||||||
asrs r0, 20
|
|
||||||
lsls r0, 1
|
|
||||||
adds r0, r1
|
|
||||||
movs r1, 0
|
|
||||||
ldrsh r0, [r0, r1]
|
|
||||||
movs r2, 0x3C
|
|
||||||
ldrsh r1, [r4, r2]
|
|
||||||
asrs r0, r1
|
|
||||||
negs r0, r0
|
|
||||||
strh r0, [r4, 0x26]
|
|
||||||
b _080EEA88
|
|
||||||
.align 2, 0
|
|
||||||
_080EEA48: .4byte gSineTable
|
|
||||||
_080EEA4C:
|
|
||||||
ldrh r0, [r4, 0x32]
|
|
||||||
lsrs r0, 4
|
|
||||||
strh r0, [r4, 0x24]
|
|
||||||
strh r5, [r4, 0x26]
|
|
||||||
adds r0, r4, 0
|
|
||||||
movs r1, 0x2
|
|
||||||
bl StartSpriteAnim
|
|
||||||
movs r1, 0x3C
|
|
||||||
ldrsh r0, [r4, r1]
|
|
||||||
cmp r0, 0x5
|
|
||||||
beq _080EEA84
|
|
||||||
_080EEA64:
|
|
||||||
strh r5, [r4, 0x3A]
|
|
||||||
ldrh r0, [r4, 0x2E]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0x2E]
|
|
||||||
b _080EEA88
|
|
||||||
_080EEA6E:
|
|
||||||
ldrh r0, [r4, 0x3A]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0x3A]
|
|
||||||
lsls r0, 16
|
|
||||||
asrs r0, 16
|
|
||||||
cmp r0, 0x4
|
|
||||||
ble _080EEA88
|
|
||||||
adds r0, r4, 0
|
|
||||||
movs r1, 0
|
|
||||||
bl StartSpriteAnim
|
|
||||||
_080EEA84:
|
|
||||||
ldr r0, _080EEA90 @ =SpriteCallbackDummy
|
|
||||||
str r0, [r4, 0x1C]
|
|
||||||
_080EEA88:
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080EEA90: .4byte SpriteCallbackDummy
|
|
||||||
thumb_func_end sub_80EE9D4
|
|
||||||
|
|
||||||
thumb_func_start sub_80EEA94
|
|
||||||
sub_80EEA94: @ 80EEA94
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
ldr r0, [r4, 0x18]
|
|
||||||
movs r2, 0
|
|
||||||
strh r2, [r0, 0x2E]
|
|
||||||
ldr r0, [r4, 0x18]
|
|
||||||
strh r2, [r0, 0x30]
|
|
||||||
ldr r0, [r4, 0x18]
|
|
||||||
strh r2, [r0, 0x32]
|
|
||||||
ldr r0, [r4, 0x18]
|
|
||||||
strh r2, [r0, 0x34]
|
|
||||||
ldr r0, [r4, 0x18]
|
|
||||||
strh r2, [r0, 0x36]
|
|
||||||
ldr r0, [r4, 0x18]
|
|
||||||
strh r2, [r0, 0x38]
|
|
||||||
ldr r1, [r4, 0x18]
|
|
||||||
ldrh r0, [r1, 0x24]
|
|
||||||
ldrh r3, [r1, 0x20]
|
|
||||||
adds r0, r3
|
|
||||||
strh r0, [r1, 0x20]
|
|
||||||
ldr r0, [r4, 0x18]
|
|
||||||
strh r2, [r0, 0x24]
|
|
||||||
ldr r1, _080EEAF4 @ =gUnknown_203AB0C
|
|
||||||
movs r0, 0x24
|
|
||||||
strh r0, [r1]
|
|
||||||
ldr r1, _080EEAF8 @ =gUnknown_203AB06
|
|
||||||
movs r0, 0x28
|
|
||||||
strh r0, [r1]
|
|
||||||
ldr r1, _080EEAFC @ =gUnknown_203AB04
|
|
||||||
movs r0, 0x3
|
|
||||||
strh r0, [r1]
|
|
||||||
ldr r1, _080EEB00 @ =gUnknown_203AB08
|
|
||||||
movs r0, 0x4
|
|
||||||
strh r0, [r1]
|
|
||||||
ldr r1, [r4, 0x18]
|
|
||||||
movs r0, 0x24
|
|
||||||
strh r0, [r1, 0x3C]
|
|
||||||
ldr r0, [r4, 0x18]
|
|
||||||
movs r1, 0x2
|
|
||||||
bl StartSpriteAnim
|
|
||||||
ldr r1, [r4, 0x18]
|
|
||||||
ldr r0, _080EEB04 @ =sub_80EEB08
|
|
||||||
str r0, [r1, 0x1C]
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080EEAF4: .4byte gUnknown_203AB0C
|
|
||||||
_080EEAF8: .4byte gUnknown_203AB06
|
|
||||||
_080EEAFC: .4byte gUnknown_203AB04
|
|
||||||
_080EEB00: .4byte gUnknown_203AB08
|
|
||||||
_080EEB04: .4byte sub_80EEB08
|
|
||||||
thumb_func_end sub_80EEA94
|
|
||||||
|
|
||||||
thumb_func_start sub_80EEB08
|
|
||||||
sub_80EEB08: @ 80EEB08
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
movs r1, 0x2E
|
|
||||||
ldrsh r0, [r4, r1]
|
|
||||||
cmp r0, 0x1
|
|
||||||
beq _080EEB58
|
|
||||||
cmp r0, 0x1
|
|
||||||
bgt _080EEB1E
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080EEB24
|
|
||||||
b _080EEBCE
|
|
||||||
_080EEB1E:
|
|
||||||
cmp r0, 0x2
|
|
||||||
beq _080EEB84
|
|
||||||
b _080EEBCE
|
|
||||||
_080EEB24:
|
|
||||||
ldrh r0, [r4, 0x30]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0x30]
|
|
||||||
movs r1, 0x1
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080EEB4A
|
|
||||||
ldrh r0, [r4, 0x32]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0x32]
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080EEB44
|
|
||||||
ldrh r0, [r4, 0x24]
|
|
||||||
adds r0, 0x1
|
|
||||||
b _080EEB48
|
|
||||||
_080EEB44:
|
|
||||||
ldrh r0, [r4, 0x24]
|
|
||||||
subs r0, 0x1
|
|
||||||
_080EEB48:
|
|
||||||
strh r0, [r4, 0x24]
|
|
||||||
_080EEB4A:
|
|
||||||
movs r3, 0x30
|
|
||||||
ldrsh r0, [r4, r3]
|
|
||||||
cmp r0, 0x11
|
|
||||||
ble _080EEBCE
|
|
||||||
movs r0, 0
|
|
||||||
strh r0, [r4, 0x30]
|
|
||||||
b _080EEB78
|
|
||||||
_080EEB58:
|
|
||||||
ldrh r0, [r4, 0x30]
|
|
||||||
adds r0, 0x1
|
|
||||||
movs r5, 0
|
|
||||||
strh r0, [r4, 0x30]
|
|
||||||
lsls r0, 16
|
|
||||||
asrs r0, 16
|
|
||||||
ldr r1, _080EEB80 @ =gUnknown_203AB06
|
|
||||||
ldrh r1, [r1]
|
|
||||||
cmp r0, r1
|
|
||||||
blt _080EEBCE
|
|
||||||
adds r0, r4, 0
|
|
||||||
movs r1, 0x4
|
|
||||||
bl StartSpriteAnim
|
|
||||||
strh r5, [r4, 0x30]
|
|
||||||
strh r5, [r4, 0x32]
|
|
||||||
_080EEB78:
|
|
||||||
ldrh r0, [r4, 0x2E]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0x2E]
|
|
||||||
b _080EEBCE
|
|
||||||
.align 2, 0
|
|
||||||
_080EEB80: .4byte gUnknown_203AB06
|
|
||||||
_080EEB84:
|
|
||||||
ldrh r2, [r4, 0x3C]
|
|
||||||
ldrh r1, [r4, 0x30]
|
|
||||||
adds r0, r2, r1
|
|
||||||
strh r0, [r4, 0x30]
|
|
||||||
lsls r0, 16
|
|
||||||
asrs r0, 20
|
|
||||||
negs r1, r0
|
|
||||||
strh r1, [r4, 0x24]
|
|
||||||
ldr r1, _080EEBD4 @ =gSineTable
|
|
||||||
lsls r0, 1
|
|
||||||
adds r0, r1
|
|
||||||
movs r3, 0
|
|
||||||
ldrsh r1, [r0, r3]
|
|
||||||
ldr r0, _080EEBD8 @ =gUnknown_203AB04
|
|
||||||
ldrh r0, [r0]
|
|
||||||
muls r0, r1
|
|
||||||
ldr r1, _080EEBDC @ =gUnknown_203AB08
|
|
||||||
ldrh r1, [r1]
|
|
||||||
asrs r0, r1
|
|
||||||
negs r0, r0
|
|
||||||
strh r0, [r4, 0x26]
|
|
||||||
ldrh r0, [r4, 0x32]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0x32]
|
|
||||||
lsls r0, r2, 16
|
|
||||||
asrs r0, 16
|
|
||||||
cmp r0, 0xC
|
|
||||||
ble _080EEBC0
|
|
||||||
subs r0, r2, 0x1
|
|
||||||
strh r0, [r4, 0x3C]
|
|
||||||
_080EEBC0:
|
|
||||||
ldrh r0, [r4, 0x30]
|
|
||||||
lsls r0, 16
|
|
||||||
asrs r0, 20
|
|
||||||
cmp r0, 0x3F
|
|
||||||
ble _080EEBCE
|
|
||||||
ldr r0, _080EEBE0 @ =SpriteCallbackDummy
|
|
||||||
str r0, [r4, 0x1C]
|
|
||||||
_080EEBCE:
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080EEBD4: .4byte gSineTable
|
|
||||||
_080EEBD8: .4byte gUnknown_203AB04
|
|
||||||
_080EEBDC: .4byte gUnknown_203AB08
|
|
||||||
_080EEBE0: .4byte SpriteCallbackDummy
|
|
||||||
thumb_func_end sub_80EEB08
|
|
||||||
|
|
||||||
thumb_func_start sub_80EEBE4
|
|
||||||
sub_80EEBE4: @ 80EEBE4
|
|
||||||
push {r4,r5,lr}
|
|
||||||
movs r5, 0
|
|
||||||
ldr r4, _080EEC04 @ =gUnknown_840BEDC
|
|
||||||
_080EEBEA:
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl LoadCompressedSpriteSheet
|
|
||||||
adds r4, 0x8
|
|
||||||
adds r5, 0x1
|
|
||||||
cmp r5, 0x6
|
|
||||||
bls _080EEBEA
|
|
||||||
ldr r0, _080EEC08 @ =gUnknown_840BF14
|
|
||||||
bl LoadSpritePalettes
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080EEC04: .4byte gUnknown_840BEDC
|
|
||||||
_080EEC08: .4byte gUnknown_840BF14
|
|
||||||
thumb_func_end sub_80EEBE4
|
|
||||||
|
|
||||||
.align 2, 0 @ Don't pad with nop.
|
|
||||||
@@ -211,7 +211,6 @@ SECTIONS {
|
|||||||
asm/battle_controller_oak.o(.text);
|
asm/battle_controller_oak.o(.text);
|
||||||
asm/player_pc.o(.text);
|
asm/player_pc.o(.text);
|
||||||
src/intro.o(.text);
|
src/intro.o(.text);
|
||||||
asm/intro.o(.text);
|
|
||||||
asm/battle_anim_special.o(.text);
|
asm/battle_anim_special.o(.text);
|
||||||
asm/hall_of_fame.o(.text);
|
asm/hall_of_fame.o(.text);
|
||||||
asm/credits.o(.text);
|
asm/credits.o(.text);
|
||||||
|
|||||||
+250
-2
@@ -124,9 +124,12 @@ void sub_80EE610(struct Sprite * sprite);
|
|||||||
void sub_80EE6A4(struct IntroSequenceData * ptr);
|
void sub_80EE6A4(struct IntroSequenceData * ptr);
|
||||||
void sub_80EE704(struct Sprite * sprite);
|
void sub_80EE704(struct Sprite * sprite);
|
||||||
bool8 sub_80EE850(struct IntroSequenceData * ptr);
|
bool8 sub_80EE850(struct IntroSequenceData * ptr);
|
||||||
|
void sub_80EE864(s16 a1, s16 a2, s16 a3);
|
||||||
void sub_80EE8E4(struct Sprite * sprite);
|
void sub_80EE8E4(struct Sprite * sprite);
|
||||||
void sub_80EE970(struct Sprite * sprite, s16 a1, u16 a2, u8 a3);
|
void sub_80EE970(struct Sprite * sprite, u16 a1, s16 a2, u8 a3);
|
||||||
|
void sub_80EE9D4(struct Sprite * sprite);
|
||||||
void sub_80EEA94(struct IntroSequenceData * ptr);
|
void sub_80EEA94(struct IntroSequenceData * ptr);
|
||||||
|
void sub_80EEB08(struct Sprite * sprite);
|
||||||
void sub_80EEBE4(void);
|
void sub_80EEBE4(void);
|
||||||
|
|
||||||
extern const u32 gMultiBootProgram_PokemonColosseum_Start[];
|
extern const u32 gMultiBootProgram_PokemonColosseum_Start[];
|
||||||
@@ -1756,7 +1759,7 @@ void sub_80EE350(struct Sprite * sprite)
|
|||||||
sprite->data[4]++;
|
sprite->data[4]++;
|
||||||
sprite->data[5] += sprite->data[4];
|
sprite->data[5] += sprite->data[4];
|
||||||
sprite->data[7]++;
|
sprite->data[7]++;
|
||||||
sprite->pos1.x = *(u16 *)&sprite->data[0] >> gUnknown_203AB22;
|
sprite->pos1.x = (u16)sprite->data[0] >> gUnknown_203AB22;
|
||||||
sprite->pos1.y = sprite->data[1] >> gUnknown_203AB24;
|
sprite->pos1.y = sprite->data[1] >> gUnknown_203AB24;
|
||||||
if (gUnknown_203AB1C && sprite->data[3] < 0)
|
if (gUnknown_203AB1C && sprite->data[3] < 0)
|
||||||
sprite->pos2.y = sprite->data[5] >> gUnknown_203AB1C;
|
sprite->pos2.y = sprite->data[5] >> gUnknown_203AB1C;
|
||||||
@@ -1925,3 +1928,248 @@ void sub_80EE6A4(struct IntroSequenceData * ptr)
|
|||||||
ptr->field_0018->data[7] = 40;
|
ptr->field_0018->data[7] = 40;
|
||||||
ptr->field_0018->callback = sub_80EE704;
|
ptr->field_0018->callback = sub_80EE704;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sub_80EE704(struct Sprite * sprite)
|
||||||
|
{
|
||||||
|
switch (sprite->data[0])
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
sprite->data[1]++;
|
||||||
|
if (sprite->data[1] > 4)
|
||||||
|
{
|
||||||
|
StartSpriteAnim(sprite, 3);
|
||||||
|
sprite->data[0]++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
sprite->data[2] += sprite->data[7];
|
||||||
|
sprite->data[3] += 8;
|
||||||
|
sprite->pos2.x = sprite->data[2] >> 4;
|
||||||
|
sprite->pos2.y = -((gSineTable[sprite->data[3]] * gUnknown_203AB04) >> gUnknown_203AB08);
|
||||||
|
sprite->data[5]++;
|
||||||
|
if (sprite->data[5] > gUnknown_203AB06)
|
||||||
|
{
|
||||||
|
sprite->data[5] = 0;
|
||||||
|
sprite->data[7]--;
|
||||||
|
}
|
||||||
|
sprite->data[4]++;
|
||||||
|
if (sprite->data[4] > 15)
|
||||||
|
{
|
||||||
|
StartSpriteAnim(sprite, 2);
|
||||||
|
sprite->data[1] = 0;
|
||||||
|
sprite->data[6] = 0x4757;
|
||||||
|
sprite->data[7] = 28;
|
||||||
|
sprite->data[0]++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
sprite->data[2] += sprite->data[7];
|
||||||
|
sprite->pos2.x = sprite->data[2] >> 4;
|
||||||
|
sprite->data[1]++;
|
||||||
|
if (sprite->data[1] > 6)
|
||||||
|
{
|
||||||
|
sub_80EE864(sprite->pos1.x + sprite->pos2.x, sprite->pos1.y + sprite->pos2.y, sprite->data[6]);
|
||||||
|
sprite->data[6] *= 1103515245;
|
||||||
|
}
|
||||||
|
if (sprite->data[1] > 12)
|
||||||
|
{
|
||||||
|
StartSpriteAnim(sprite, 0);
|
||||||
|
sprite->data[1] = 0;
|
||||||
|
sprite->data[0]++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
sprite->data[1]++;
|
||||||
|
if (sprite->data[1] > 16)
|
||||||
|
{
|
||||||
|
sub_80EE970(sprite, gUnknown_203AB0A, -sprite->pos2.x, 4);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 sub_80EE850(struct IntroSequenceData * ptr)
|
||||||
|
{
|
||||||
|
return ptr->field_0018->callback == SpriteCallbackDummy ? FALSE : TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80EE864(s16 a1, s16 a2, s16 a3)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
u8 spriteId;
|
||||||
|
|
||||||
|
for (i = 0; i < 2; i++)
|
||||||
|
{
|
||||||
|
spriteId = CreateSprite(&gUnknown_840BEC4, a1 - 22, a2 + 24, 10);
|
||||||
|
if (spriteId != MAX_SPRITES)
|
||||||
|
{
|
||||||
|
gSprites[spriteId].data[3] = (a3 % 13) + 8;
|
||||||
|
gSprites[spriteId].data[4] = a3 % 3;
|
||||||
|
gSprites[spriteId].data[7] = i;
|
||||||
|
a3 *= 1103515245;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80EE8E4(struct Sprite * sprite)
|
||||||
|
{
|
||||||
|
s16 * data = sprite->data;
|
||||||
|
|
||||||
|
switch (sprite->data[0])
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
data[1] = sprite->pos1.x << 4;
|
||||||
|
data[2] = sprite->pos1.y << 4;
|
||||||
|
sprite->data[0]++;
|
||||||
|
// fallthrough
|
||||||
|
case 1:
|
||||||
|
data[1] -= data[3];
|
||||||
|
data[2] += data[4];
|
||||||
|
sprite->pos1.x = data[1] >> 4;
|
||||||
|
sprite->pos1.y = data[2] >> 4;
|
||||||
|
if (sprite->animEnded)
|
||||||
|
DestroySprite(sprite);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
data[7]++;
|
||||||
|
if (data[7] > 1)
|
||||||
|
{
|
||||||
|
data[7] = 0;
|
||||||
|
sprite->invisible ^= TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80EE970(struct Sprite * sprite, u16 a1, s16 a2, u8 a3)
|
||||||
|
{
|
||||||
|
sprite->data[0] = 0;
|
||||||
|
sprite->data[1] = a1;
|
||||||
|
sprite->data[2] = sprite->pos2.x << 4;
|
||||||
|
sprite->data[3] = (a2 << 4) / a1;
|
||||||
|
sprite->data[4] = 0;
|
||||||
|
sprite->data[5] = 0x800 / a1;
|
||||||
|
sprite->data[6] = 0;
|
||||||
|
sprite->data[7] = a3;
|
||||||
|
StartSpriteAnim(sprite, 2);
|
||||||
|
sprite->callback = sub_80EE9D4;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80EE9D4(struct Sprite * sprite)
|
||||||
|
{
|
||||||
|
switch (sprite->data[0])
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
sprite->data[6]++;
|
||||||
|
if (sprite->data[6] > 4)
|
||||||
|
{
|
||||||
|
StartSpriteAnim(sprite, 3);
|
||||||
|
sprite->data[6] = 0;
|
||||||
|
sprite->data[0]++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
sprite->data[1]--;
|
||||||
|
if (sprite->data[1])
|
||||||
|
{
|
||||||
|
sprite->data[2] += sprite->data[3];
|
||||||
|
sprite->data[4] += sprite->data[5];
|
||||||
|
sprite->pos2.x = sprite->data[2] >> 4;
|
||||||
|
sprite->pos2.y = -(gSineTable[sprite->data[4] >> 4] >> sprite->data[7]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sprite->pos2.x = (u16)sprite->data[2] >> 4;
|
||||||
|
sprite->pos2.y = 0;
|
||||||
|
StartSpriteAnim(sprite, 2);
|
||||||
|
if (sprite->data[7] == 5)
|
||||||
|
sprite->callback = SpriteCallbackDummy;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sprite->data[6] = 0;
|
||||||
|
sprite->data[0]++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
sprite->data[6]++;
|
||||||
|
if (sprite->data[6] > 4)
|
||||||
|
{
|
||||||
|
StartSpriteAnim(sprite, 0);
|
||||||
|
sprite->callback = SpriteCallbackDummy;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80EEA94(struct IntroSequenceData * ptr)
|
||||||
|
{
|
||||||
|
ptr->field_0018->data[0] = 0;
|
||||||
|
ptr->field_0018->data[1] = 0;
|
||||||
|
ptr->field_0018->data[2] = 0;
|
||||||
|
ptr->field_0018->data[3] = 0;
|
||||||
|
ptr->field_0018->data[4] = 0;
|
||||||
|
ptr->field_0018->data[5] = 0;
|
||||||
|
ptr->field_0018->pos1.x += ptr->field_0018->pos2.x;
|
||||||
|
ptr->field_0018->pos2.x = 0;
|
||||||
|
gUnknown_203AB0C = 0x24;
|
||||||
|
gUnknown_203AB06 = 0x28;
|
||||||
|
gUnknown_203AB04 = 0x03;
|
||||||
|
gUnknown_203AB08 = 0x04;
|
||||||
|
ptr->field_0018->data[7] = 36;
|
||||||
|
StartSpriteAnim(ptr->field_0018, 2);
|
||||||
|
ptr->field_0018->callback = sub_80EEB08;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80EEB08(struct Sprite * sprite)
|
||||||
|
{
|
||||||
|
switch (sprite->data[0])
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
sprite->data[1]++;
|
||||||
|
if (sprite->data[1] & 1)
|
||||||
|
{
|
||||||
|
sprite->data[2]++;
|
||||||
|
if (sprite->data[2] & 1)
|
||||||
|
sprite->pos2.x++;
|
||||||
|
else
|
||||||
|
sprite->pos2.x--;
|
||||||
|
}
|
||||||
|
if (sprite->data[1] > 17)
|
||||||
|
{
|
||||||
|
sprite->data[1] = 0;
|
||||||
|
sprite->data[0]++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
if (++sprite->data[1] >= gUnknown_203AB06)
|
||||||
|
{
|
||||||
|
StartSpriteAnim(sprite, 4);
|
||||||
|
sprite->data[1] = 0;
|
||||||
|
sprite->data[2] = 0;
|
||||||
|
sprite->data[0]++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
sprite->data[1] += sprite->data[7];
|
||||||
|
sprite->pos2.x = -(sprite->data[1] >> 4);
|
||||||
|
sprite->pos2.y = -((gSineTable[sprite->data[1] >> 4] * gUnknown_203AB04) >> gUnknown_203AB08);
|
||||||
|
sprite->data[2]++;
|
||||||
|
if (sprite->data[7] > 12)
|
||||||
|
sprite->data[7]--;
|
||||||
|
if ((sprite->data[1] >> 4) > 0x3F)
|
||||||
|
sprite->callback = SpriteCallbackDummy;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80EEBE4(void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < NELEMS(gUnknown_840BEDC); i++)
|
||||||
|
{
|
||||||
|
LoadCompressedSpriteSheet(&gUnknown_840BEDC[i]);
|
||||||
|
}
|
||||||
|
// gUnknown_840BF14 is not properly terminated, so this
|
||||||
|
// call exhibits undefined behavior.
|
||||||
|
LoadSpritePalettes(gUnknown_840BF14);
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user