summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-07-04 19:31:07 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-07-04 19:31:07 -0400
commitb3b439fd8ab05eed4be632e2f265b79f1ce2173e (patch)
tree74fc9f790ca59eaabe8edf37e3d1126dcf4cc02c
parent5bad031d18f1e0813e12680d4e257ebaa6f4a0e7 (diff)
intro: through sub_80EE6A4
-rw-r--r--asm/intro.s415
-rw-r--r--src/intro.c164
2 files changed, 162 insertions, 417 deletions
diff --git a/asm/intro.s b/asm/intro.s
index d5ebd1f99..275119991 100644
--- a/asm/intro.s
+++ b/asm/intro.s
@@ -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}
diff --git a/src/intro.c b/src/intro.c
index 79a1afba8..3e0b9e498 100644
--- a/src/intro.c
+++ b/src/intro.c
@@ -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;
+}