intro: through sub_80EE6A4

This commit is contained in:
PikalaxALT 2019-07-04 19:31:07 -04:00
parent 5bad031d18
commit b3b439fd8a
2 changed files with 162 additions and 417 deletions

View File

@ -5,421 +5,6 @@
.text
thumb_func_start sub_80EE40C
sub_80EE40C: @ 80EE40C
push {r4,lr}
adds r4, r0, 0
ldrh r1, [r4, 0x32]
movs r2, 0x32
ldrsh r0, [r4, r2]
cmp r0, 0
beq _080EE490
subs r0, r1, 0x1
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 20
strh r0, [r4, 0x22]
cmp r0, 0x56
ble _080EE438
movs r0, 0x4A
strh r0, [r4, 0x22]
movs r0, 0x94
lsls r0, 3
strh r0, [r4, 0x30]
_080EE438:
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080EE4D4
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080EE46C
ldrh r0, [r4, 0x20]
adds r1, r0, 0
adds r1, 0x1A
strh r1, [r4, 0x20]
lsls r0, r1, 16
asrs r0, 16
cmp r0, 0xBC
ble _080EE486
movs r2, 0xBC
lsls r2, 1
adds r0, r2, 0
subs r0, r1
strh r0, [r4, 0x20]
movs r0, 0x1
b _080EE484
_080EE46C:
ldrh r0, [r4, 0x20]
adds r1, r0, 0
subs r1, 0x1A
strh r1, [r4, 0x20]
lsls r0, r1, 16
asrs r0, 16
cmp r0, 0x33
bgt _080EE486
movs r0, 0x68
subs r0, r1
strh r0, [r4, 0x20]
movs r0, 0
_080EE484:
strh r0, [r4, 0x2E]
_080EE486:
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAnim
b _080EE4D4
_080EE490:
movs r1, 0x34
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080EE49E
adds r0, r4, 0
bl DestroySprite
_080EE49E:
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080EE4B4
adds r0, r4, 0
movs r1, 0
bl StartSpriteAnim
_080EE4B4:
ldrh r0, [r4, 0x30]
adds r0, 0x4
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 20
strh r0, [r4, 0x22]
ldrh r0, [r4, 0x36]
adds r0, 0x1
strh r0, [r4, 0x36]
lsls r0, 16
asrs r0, 16
cmp r0, 0x32
ble _080EE4D4
adds r0, r4, 0
bl DestroySprite
_080EE4D4:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80EE40C
thumb_func_start sub_80EE4DC
sub_80EE4DC: @ 80EE4DC
push {lr}
adds r2, r0, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080EE4F2
adds r0, r2, 0
bl DestroySprite
_080EE4F2:
pop {r0}
bx r0
thumb_func_end sub_80EE4DC
thumb_func_start sub_80EE4F8
sub_80EE4F8: @ 80EE4F8
push {r4,lr}
adds r4, r0, 0
ldr r0, _080EE520 @ =gUnknown_840BD88
movs r1, 0
movs r2, 0
movs r3, 0x9
bl CreateSprite
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
ldr r0, _080EE524 @ =gSprites
adds r1, r0
str r1, [r4, 0x18]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080EE520: .4byte gUnknown_840BD88
_080EE524: .4byte gSprites
thumb_func_end sub_80EE4F8
thumb_func_start sub_80EE528
sub_80EE528: @ 80EE528
push {r4-r6,lr}
mov r6, r9
mov r5, r8
push {r5,r6}
adds r4, r0, 0
adds r0, r2, 0
adds r5, r3, 0
lsls r1, 16
lsls r0, 16
lsls r5, 16
lsrs r5, 16
lsrs r2, r1, 16
mov r9, r2
asrs r1, 16
lsls r2, r1, 4
movs r3, 0
mov r8, r3
strh r2, [r4, 0x2E]
lsrs r6, r0, 16
asrs r0, 16
subs r0, r1
lsls r0, 4
adds r1, r5, 0
bl __divsi3
strh r0, [r4, 0x30]
strh r5, [r4, 0x32]
strh r6, [r4, 0x34]
mov r0, r8
strh r0, [r4, 0x36]
mov r2, r9
strh r2, [r4, 0x20]
movs r0, 0x64
strh r0, [r4, 0x22]
ldr r0, _080EE57C @ =sub_80EE580
str r0, [r4, 0x1C]
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080EE57C: .4byte sub_80EE580
thumb_func_end sub_80EE528
thumb_func_start sub_80EE580
sub_80EE580: @ 80EE580
push {r4,lr}
adds r2, r0, 0
ldrh r0, [r2, 0x36]
adds r0, 0x1
strh r0, [r2, 0x36]
lsls r0, 16
asrs r0, 16
cmp r0, 0x27
ble _080EE5A0
ldrh r1, [r2, 0x30]
movs r3, 0x30
ldrsh r0, [r2, r3]
cmp r0, 0x1
ble _080EE5A0
subs r0, r1, 0x1
strh r0, [r2, 0x30]
_080EE5A0:
ldrh r0, [r2, 0x30]
ldrh r4, [r2, 0x2E]
adds r0, r4
strh r0, [r2, 0x2E]
lsls r0, 16
asrs r0, 20
strh r0, [r2, 0x20]
ldrh r3, [r2, 0x34]
movs r4, 0x34
ldrsh r1, [r2, r4]
cmp r0, r1
blt _080EE5BE
strh r3, [r2, 0x20]
ldr r0, _080EE5C4 @ =SpriteCallbackDummy
str r0, [r2, 0x1C]
_080EE5BE:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080EE5C4: .4byte SpriteCallbackDummy
thumb_func_end sub_80EE580
thumb_func_start sub_80EE5C8
sub_80EE5C8: @ 80EE5C8
push {lr}
movs r2, 0
ldr r0, [r0, 0x18]
ldr r1, [r0, 0x1C]
ldr r0, _080EE5E0 @ =sub_80EE580
cmp r1, r0
bne _080EE5D8
movs r2, 0x1
_080EE5D8:
adds r0, r2, 0
pop {r1}
bx r1
.align 2, 0
_080EE5E0: .4byte sub_80EE580
thumb_func_end sub_80EE5C8
thumb_func_start sub_80EE5E4
sub_80EE5E4: @ 80EE5E4
push {r4,lr}
adds r4, r0, 0
ldr r0, [r4, 0x18]
movs r1, 0x2
bl StartSpriteAnim
ldr r0, [r4, 0x18]
movs r1, 0
strh r1, [r0, 0x2E]
ldr r0, [r4, 0x18]
strh r1, [r0, 0x30]
ldr r1, [r4, 0x18]
movs r0, 0x3
strh r0, [r1, 0x26]
ldr r1, [r4, 0x18]
ldr r0, _080EE60C @ =sub_80EE610
str r0, [r1, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080EE60C: .4byte sub_80EE610
thumb_func_end sub_80EE5E4
thumb_func_start sub_80EE610
sub_80EE610: @ 80EE610
push {r4,r5,lr}
adds r4, r0, 0
movs r0, 0x2E
ldrsh r5, [r4, r0]
cmp r5, 0x1
beq _080EE646
cmp r5, 0x1
bgt _080EE626
cmp r5, 0
beq _080EE62C
b _080EE69A
_080EE626:
cmp r5, 0x2
beq _080EE65C
b _080EE69A
_080EE62C:
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x8
ble _080EE69A
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAnim
strh r5, [r4, 0x26]
b _080EE654
_080EE646:
movs r0, 0x21
movs r1, 0x3F
movs r2, 0x1
bl PlayCry3
movs r0, 0
strh r0, [r4, 0x30]
_080EE654:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
b _080EE69A
_080EE65C:
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080EE67C
movs r0, 0
strh r0, [r4, 0x32]
movs r1, 0
movs r2, 0x26
ldrsh r0, [r4, r2]
cmp r0, 0
bne _080EE67A
movs r1, 0x1
_080EE67A:
strh r1, [r4, 0x26]
_080EE67C:
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x30
ble _080EE69A
adds r0, r4, 0
movs r1, 0
bl StartSpriteAnim
movs r0, 0
strh r0, [r4, 0x26]
ldr r0, _080EE6A0 @ =SpriteCallbackDummy
str r0, [r4, 0x1C]
_080EE69A:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080EE6A0: .4byte SpriteCallbackDummy
thumb_func_end sub_80EE610
thumb_func_start sub_80EE6A4
sub_80EE6A4: @ 80EE6A4
push {r4,lr}
adds r4, r0, 0
ldr r1, _080EE6F0 @ =gUnknown_203AB0A
movs r0, 0x10
strh r0, [r1]
ldr r1, _080EE6F4 @ =gUnknown_203AB04
movs r0, 0x3
strh r0, [r1]
ldr r1, _080EE6F8 @ =gUnknown_203AB08
movs r0, 0x5
strh r0, [r1]
ldr r1, _080EE6FC @ =gUnknown_203AB06
movs r0, 0
strh r0, [r1]
ldr r0, [r4, 0x18]
movs r1, 0x2
bl StartSpriteAnim
ldr r0, [r4, 0x18]
movs r1, 0
strh r1, [r0, 0x2E]
ldr r0, [r4, 0x18]
strh r1, [r0, 0x30]
ldr r0, [r4, 0x18]
strh r1, [r0, 0x32]
ldr r0, [r4, 0x18]
strh r1, [r0, 0x34]
ldr r0, [r4, 0x18]
strh r1, [r0, 0x36]
ldr r1, [r4, 0x18]
movs r0, 0x28
strh r0, [r1, 0x3C]
ldr r1, [r4, 0x18]
ldr r0, _080EE700 @ =sub_80EE704
str r0, [r1, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080EE6F0: .4byte gUnknown_203AB0A
_080EE6F4: .4byte gUnknown_203AB04
_080EE6F8: .4byte gUnknown_203AB08
_080EE6FC: .4byte gUnknown_203AB06
_080EE700: .4byte sub_80EE704
thumb_func_end sub_80EE6A4
thumb_func_start sub_80EE704
sub_80EE704: @ 80EE704
push {r4,r5,lr}

View File

@ -19,6 +19,7 @@
#include "util.h"
#include "trig.h"
#include "constants/songs.h"
#include "constants/species.h"
struct IntroSequenceData
{
@ -115,10 +116,13 @@ void sub_80EE350(struct Sprite * sprite);
void sub_80EE40C(struct Sprite * sprite);
void sub_80EE4DC(struct Sprite * sprite);
void sub_80EE4F8(struct IntroSequenceData * ptr);
void sub_80EE528(struct Sprite * sprite, u16 a1, u16 a2, u16 a3);
void sub_80EE528(struct Sprite * sprite, s16 a1, s16 a2, u16 a3);
void sub_80EE580(struct Sprite * sprite);
bool32 sub_80EE5C8(struct IntroSequenceData * ptr);
void sub_80EE5E4(struct IntroSequenceData * ptr);
void sub_80EE610(struct Sprite * sprite);
void sub_80EE6A4(struct IntroSequenceData * ptr);
void sub_80EE704(struct Sprite * sprite);
bool8 sub_80EE850(struct IntroSequenceData * ptr);
void sub_80EE8E4(struct Sprite * sprite);
void sub_80EE970(struct Sprite * sprite, s16 a1, u16 a2, u8 a3);
@ -1758,10 +1762,166 @@ void sub_80EE350(struct Sprite * sprite)
sprite->pos2.y = sprite->data[5] >> gUnknown_203AB1C;
if (sprite->data[7] > gUnknown_203AB18)
{
sprite->invisible = sprite->invisible ? FALSE : TRUE;
sprite->invisible = !sprite->invisible;
if (sprite->data[7] > gUnknown_203AB1A)
DestroySprite(sprite);
}
if (sprite->pos1.y + sprite->pos2.y < 0 || sprite->pos1.y + sprite->pos2.y > 160)
DestroySprite(sprite);
}
void sub_80EE40C(struct Sprite * sprite)
{
if (sprite->data[2])
{
sprite->data[2]--;
sprite->data[1]++;
sprite->pos1.y = sprite->data[1] >> 4;
if (sprite->pos1.y > 0x56)
{
sprite->pos1.y = 0x4A;
sprite->data[1] = 0x4A0;
}
if (sprite->animEnded)
{
if (sprite->data[0] == 0)
{
sprite->pos1.x += 26;
if (sprite->pos1.x > 188)
{
sprite->pos1.x = 376 - sprite->pos1.x;
sprite->data[0] = 1;
}
}
else
{
sprite->pos1.x -= 26;
if (sprite->pos1.x < 52)
{
sprite->pos1.x = 104 - sprite->pos1.x;
sprite->data[0] = 0;
}
}
StartSpriteAnim(sprite, 1);
}
}
else
{
if (sprite->data[3])
DestroySprite(sprite);
if (sprite->animEnded)
StartSpriteAnim(sprite, 0);
sprite->data[1] += 4;
sprite->pos1.y = sprite->data[1] >> 4;
sprite->data[4]++;
if (sprite->data[4] > 50)
DestroySprite(sprite);
}
}
void sub_80EE4DC(struct Sprite * sprite)
{
if (sprite->animEnded)
DestroySprite(sprite);
}
void sub_80EE4F8(struct IntroSequenceData * this)
{
u8 spriteId = CreateSprite(&gUnknown_840BD88, 0, 0, 9);
this->field_0018 = &gSprites[spriteId];
}
void sub_80EE528(struct Sprite * sprite, s16 a1, s16 a2, u16 a3)
{
sprite->data[0] = a1 << 4;
sprite->data[1] = ((a2 - a1) << 4) / a3;
sprite->data[2] = a3;
sprite->data[3] = a2;
sprite->data[4] = 0;
sprite->pos1.x = a1;
sprite->pos1.y = 100;
sprite->callback = sub_80EE580;
}
void sub_80EE580(struct Sprite * sprite)
{
sprite->data[4]++;
if (sprite->data[4] >= 40)
{
if (sprite->data[1] > 1)
sprite->data[1]--;
}
sprite->data[0] += sprite->data[1];
sprite->pos1.x = sprite->data[0] >> 4;
if (sprite->pos1.x >= sprite->data[3])
{
sprite->pos1.x = sprite->data[3];
sprite->callback = SpriteCallbackDummy;
}
}
bool32 sub_80EE5C8(struct IntroSequenceData * ptr)
{
return ptr->field_0018->callback == sub_80EE580 ? TRUE : FALSE;
}
void sub_80EE5E4(struct IntroSequenceData * ptr)
{
StartSpriteAnim(ptr->field_0018, 2);
ptr->field_0018->data[0] = 0;
ptr->field_0018->data[1] = 0;
ptr->field_0018->pos2.y = 3;
ptr->field_0018->callback = sub_80EE610;
}
void sub_80EE610(struct Sprite * sprite)
{
switch (sprite->data[0])
{
case 0:
sprite->data[1]++;
if (sprite->data[1] > 8)
{
StartSpriteAnim(sprite, 1);
sprite->pos2.y = 0;
sprite->data[0]++;
}
break;
case 1:
PlayCry3(SPECIES_NIDORINO, 0x3F, 1);
sprite->data[1] = 0;
sprite->data[0]++;
break;
case 2:
sprite->data[2]++;
if (sprite->data[2] > 1)
{
sprite->data[2] = 0;
sprite->pos2.y = sprite->pos2.y == 0 ? 1 : 0;
}
sprite->data[1]++;
if (sprite->data[1] > 48)
{
StartSpriteAnim(sprite, 0);
sprite->pos2.y = 0;
sprite->callback = SpriteCallbackDummy;
}
break;
}
}
void sub_80EE6A4(struct IntroSequenceData * ptr)
{
gUnknown_203AB0A = 16;
gUnknown_203AB04 = 3;
gUnknown_203AB08 = 5;
gUnknown_203AB06 = 0;
StartSpriteAnim(ptr->field_0018, 2);
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[7] = 40;
ptr->field_0018->callback = sub_80EE704;
}