summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/intro.s575
-rw-r--r--src/intro.c285
-rw-r--r--sym_ewram.txt58
3 files changed, 282 insertions, 636 deletions
diff --git a/asm/intro.s b/asm/intro.s
index 8e908cebe..87afc0815 100644
--- a/asm/intro.s
+++ b/asm/intro.s
@@ -5,581 +5,6 @@
.text
- thumb_func_start sub_80ED898
-sub_80ED898: @ 80ED898
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldrb r0, [r4, 0x4]
- cmp r0, 0xF
- bls _080ED8A6
- b _080EDA98
-_080ED8A6:
- lsls r0, 2
- ldr r1, _080ED8B0 @ =_080ED8B4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080ED8B0: .4byte _080ED8B4
- .align 2, 0
-_080ED8B4:
- .4byte _080ED8F4
- .4byte _080ED8F8
- .4byte _080ED910
- .4byte _080ED918
- .4byte _080ED936
- .4byte _080ED946
- .4byte _080ED95E
- .4byte _080ED97C
- .4byte _080ED998
- .4byte _080ED9A0
- .4byte _080ED9BA
- .4byte _080ED9D2
- .4byte _080ED9DC
- .4byte _080EDA1C
- .4byte _080EDA5C
- .4byte _080EDA7C
-_080ED8F4:
- movs r0, 0
- b _080EDA6C
-_080ED8F8:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1E
- bhi _080ED908
- b _080EDAC4
-_080ED908:
- adds r0, r4, 0
- bl sub_80EE5E4
- b _080EDA6E
-_080ED910:
- adds r0, r4, 0
- bl sub_80EE850
- b _080EDA64
-_080ED918:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1E
- bhi _080ED928
- b _080EDAC4
-_080ED928:
- bl sub_80ED760
- adds r0, r4, 0
- bl sub_80EDF94
- movs r0, 0
- b _080EDA6C
-_080ED936:
- ldrb r0, [r4, 0x6]
- cmp r0, 0
- bne _080ED93E
- b _080EDAC4
-_080ED93E:
- adds r0, r4, 0
- bl sub_80EE6A4
- b _080EDA6E
-_080ED946:
- adds r0, r4, 0
- bl sub_80EE850
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- beq _080ED956
- b _080EDAC4
-_080ED956:
- bl sub_80ED788
- strh r5, [r4, 0x12]
- b _080EDA6E
-_080ED95E:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x10
- bhi _080ED96E
- b _080EDAC4
-_080ED96E:
- ldr r0, [r4, 0x18]
- movs r1, 0x8
- movs r2, 0xC
- movs r3, 0x5
- bl sub_80EE970
- b _080EDA6E
-_080ED97C:
- adds r0, r4, 0
- bl sub_80EE850
- lsls r0, 24
- cmp r0, 0
- beq _080ED98A
- b _080EDAC4
-_080ED98A:
- ldr r0, [r4, 0x18]
- movs r1, 0x8
- movs r2, 0xC
- movs r3, 0x5
- bl sub_80EE970
- b _080EDA6E
-_080ED998:
- adds r0, r4, 0
- bl sub_80EE850
- b _080EDA64
-_080ED9A0:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x14
- bhi _080ED9B0
- b _080EDAC4
-_080ED9B0:
- adds r0, r4, 0
- bl sub_80EEA94
- movs r0, 0
- b _080EDA6C
-_080ED9BA:
- bl sub_80ED7B0
- lsls r0, 24
- cmp r0, 0
- beq _080ED9C6
- b _080EDAC4
-_080ED9C6:
- bl sub_80ED760
- adds r0, r4, 0
- bl sub_80EDAF0
- b _080EDA6E
-_080ED9D2:
- movs r0, 0
- bl HideBg
- movs r0, 0
- b _080EDA6C
-_080ED9DC:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x30
- bne _080ED9FA
- ldr r0, _080EDA18 @ =0x00007fff
- str r0, [sp]
- movs r0, 0x6
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_080ED9FA:
- ldrh r0, [r4, 0x12]
- cmp r0, 0x78
- bls _080EDAC4
- adds r0, r4, 0
- bl sub_80EDB70
- adds r0, r4, 0
- bl sub_80EDBAC
- ldrb r0, [r4, 0x4]
- adds r0, 0x1
- strb r0, [r4, 0x4]
- movs r0, 0
- b _080EDAC2
- .align 2, 0
-_080EDA18: .4byte 0x00007fff
-_080EDA1C:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x8
- bls _080EDAC4
- add r1, sp, 0x4
- ldr r2, _080EDA50 @ =0x00007fff
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _080EDA54 @ =gPlttBufferUnfaded + 0x20
- ldr r2, _080EDA58 @ =0x01000020
- add r0, sp, 0x4
- bl CpuSet
- movs r1, 0x2
- negs r1, r1
- movs r0, 0
- str r0, [sp]
- adds r0, r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _080EDA6E
- .align 2, 0
-_080EDA50: .4byte 0x00007fff
-_080EDA54: .4byte gPlttBufferUnfaded + 0x20
-_080EDA58: .4byte 0x01000020
-_080EDA5C:
- ldr r0, _080EDA78 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
-_080EDA64:
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _080EDAC4
-_080EDA6C:
- strh r0, [r4, 0x12]
-_080EDA6E:
- ldrb r0, [r4, 0x4]
- adds r0, 0x1
- strb r0, [r4, 0x4]
- b _080EDAC4
- .align 2, 0
-_080EDA78: .4byte gPaletteFade
-_080EDA7C:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x3C
- bls _080EDAC4
- ldr r1, _080EDA94 @ =sub_80EDBE8
- adds r0, r4, 0
- bl sub_80ECAA8
- b _080EDAC4
- .align 2, 0
-_080EDA94: .4byte sub_80EDBE8
-_080EDA98:
- ldr r0, _080EDACC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _080EDAC4
- ldr r0, _080EDAD0 @ =0xffff0064
- ldr r2, _080EDAD4 @ =0x00007fff
- movs r1, 0
- bl BlendPalettes
- ldr r1, [r4, 0x18]
- movs r0, 0
- strh r0, [r1, 0x24]
- ldr r1, [r4, 0x18]
- movs r0, 0xB4
- strh r0, [r1, 0x20]
- movs r0, 0x1
- strb r0, [r4, 0x4]
- movs r0, 0x1E
-_080EDAC2:
- strh r0, [r4, 0x12]
-_080EDAC4:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080EDACC: .4byte gMain
-_080EDAD0: .4byte 0xffff0064
-_080EDAD4: .4byte 0x00007fff
- thumb_func_end sub_80ED898
-
- thumb_func_start sub_80EDAD8
-sub_80EDAD8: @ 80EDAD8
- push {lr}
- ldrb r3, [r0, 0x1]
- lsrs r1, r3, 6
- ldrb r2, [r0, 0x3]
- lsrs r2, 6
- lsls r3, 30
- lsrs r3, 30
- bl CalcCenterToCornerVec
- pop {r0}
- bx r0
- thumb_func_end sub_80EDAD8
-
- thumb_func_start sub_80EDAF0
-sub_80EDAF0: @ 80EDAF0
- push {r4-r7,lr}
- adds r7, r0, 0
- movs r5, 0
-_080EDAF6:
- movs r6, 0x1
- ands r6, r5
- lsls r1, r6, 1
- adds r1, r6
- lsls r1, 20
- lsrs r2, r5, 31
- adds r2, r5, r2
- asrs r2, 1
- lsls r2, 22
- movs r0, 0xC4
- lsls r0, 14
- adds r1, r0
- asrs r1, 16
- movs r0, 0x90
- lsls r0, 15
- adds r2, r0
- asrs r2, 16
- ldr r0, _080EDB68 @ =gUnknown_840BE4C
- movs r3, 0x8
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080EDB5C
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080EDB6C @ =gSprites
- adds r4, r0, r1
- lsls r1, r5, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- lsls r1, r5, 2
- adds r0, r7, 0
- adds r0, 0x28
- adds r2, r0, r1
- str r4, [r2]
- cmp r6, 0
- beq _080EDB56
- ldrb r0, [r4, 0x1]
- movs r1, 0x3F
- ands r1, r0
- movs r0, 0x80
- orrs r1, r0
- strb r1, [r4, 0x1]
-_080EDB56:
- ldr r0, [r2]
- bl sub_80EDAD8
-_080EDB5C:
- adds r5, 0x1
- cmp r5, 0x3
- ble _080EDAF6
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080EDB68: .4byte gUnknown_840BE4C
-_080EDB6C: .4byte gSprites
- thumb_func_end sub_80EDAF0
-
- thumb_func_start sub_80EDB70
-sub_80EDB70: @ 80EDB70
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, [r4, 0x18]
- ldrh r0, [r1, 0x24]
- ldrh r2, [r1, 0x20]
- adds r0, r2
- strh r0, [r1, 0x20]
- ldr r1, [r4, 0x18]
- ldrh r0, [r1, 0x26]
- ldrh r2, [r1, 0x22]
- adds r0, r2
- strh r0, [r1, 0x22]
- ldr r0, [r4, 0x18]
- movs r1, 0
- movs r2, 0x2A
- bl sub_8007FFC
- ldr r0, [r4, 0x18]
- ldr r1, _080EDBA4 @ =SpriteCallbackDummy
- str r1, [r0, 0x1C]
- movs r1, 0x1
- bl StartSpriteAffineAnim
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EDBA4: .4byte SpriteCallbackDummy
- thumb_func_end sub_80EDB70
-
- thumb_func_start nullsub_83
-nullsub_83: @ 80EDBA8
- bx lr
- thumb_func_end nullsub_83
-
- thumb_func_start sub_80EDBAC
-sub_80EDBAC: @ 80EDBAC
- push {r4-r7,lr}
- adds r7, r0, 0
- movs r6, 0
- ldr r5, _080EDBE0 @ =gUnknown_840BBB8
-_080EDBB4:
- lsls r0, r6, 2
- adds r4, r7, 0
- adds r4, 0x28
- adds r4, r0
- ldr r0, [r4]
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r0, [r4]
- ldr r1, _080EDBE4 @ =nullsub_83
- str r1, [r0, 0x1C]
- ldrb r1, [r5]
- ldrb r2, [r5, 0x1]
- bl sub_8007FFC
- adds r5, 0x2
- adds r6, 0x1
- cmp r6, 0x3
- ble _080EDBB4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080EDBE0: .4byte gUnknown_840BBB8
-_080EDBE4: .4byte nullsub_83
- thumb_func_end sub_80EDBAC
-
- thumb_func_start sub_80EDBE8
-sub_80EDBE8: @ 80EDBE8
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4, 0x4]
- cmp r0, 0
- beq _080EDBF8
- cmp r0, 0x1
- beq _080EDC0C
- b _080EDC34
-_080EDBF8:
- movs r2, 0x80
- lsls r2, 3
- movs r0, 0
- movs r1, 0
- bl FillPalette
- ldrb r0, [r4, 0x4]
- adds r0, 0x1
- strb r0, [r4, 0x4]
- b _080EDC34
-_080EDC0C:
- bl FreeTempTileDataBuffersIfPossible
- lsls r0, 24
- cmp r0, 0
- bne _080EDC34
- ldrb r0, [r4, 0x5]
- bl DestroyTask
- adds r0, r4, 0
- bl Free
- movs r0, 0x2
- bl DisableInterrupts
- movs r0, 0
- bl SetHBlankCallback
- ldr r0, _080EDC3C @ =CB2_InitTitleScreen
- bl SetMainCallback2
-_080EDC34:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EDC3C: .4byte CB2_InitTitleScreen
- thumb_func_end sub_80EDBE8
-
- thumb_func_start sub_80EDC40
-sub_80EDC40: @ 80EDC40
- push {r4-r6,lr}
- movs r5, 0
- ldr r4, _080EDCE4 @ =gUnknown_840BBC0
-_080EDC46:
- adds r0, r4, 0
- bl LoadCompressedSpriteSheet
- adds r4, 0x8
- adds r5, 0x1
- cmp r5, 0x4
- bls _080EDC46
- ldr r0, _080EDCE8 @ =gUnknown_840BBE8
- bl LoadSpritePalettes
- ldr r6, _080EDCEC @ =gUnknown_203AB0E
- movs r0, 0x60
- strh r0, [r6]
- ldr r5, _080EDCF0 @ =gUnknown_203AB10
- movs r0, 0x10
- strh r0, [r5]
- ldr r1, _080EDCF4 @ =gUnknown_203AB12
- movs r0, 0x7
- strh r0, [r1]
- ldr r0, _080EDCF8 @ =gUnknown_203AB14
- movs r2, 0x5
- strh r2, [r0]
- ldr r1, _080EDCFC @ =gUnknown_203AB16
- movs r0, 0x8
- strh r0, [r1]
- ldr r1, _080EDD00 @ =gUnknown_203AB18
- movs r0, 0x5A
- strh r0, [r1]
- ldr r1, _080EDD04 @ =gUnknown_203AB1A
- movs r0, 0x78
- strh r0, [r1]
- ldr r0, _080EDD08 @ =gUnknown_203AB1E
- movs r1, 0x1
- strh r1, [r0]
- ldr r0, _080EDD0C @ =gUnknown_203AB20
- strh r1, [r0]
- ldr r0, _080EDD10 @ =gUnknown_203AB22
- strh r2, [r0]
- ldr r0, _080EDD14 @ =gUnknown_203AB24
- strh r2, [r0]
- ldr r4, _080EDD18 @ =gUnknown_203AB28
- ldr r0, [r4]
- cmp r0, 0
- bne _080EDCA2
- ldr r0, _080EDD1C @ =0x151b9245
- str r0, [r4]
-_080EDCA2:
- ldr r0, _080EDD20 @ =gUnknown_840BC6C
- movs r1, 0xF8
- movs r2, 0x37
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080EDCDE
- ldr r0, _080EDD24 @ =gSprites
- lsls r3, r1, 4
- adds r3, r1
- lsls r3, 2
- adds r2, r3, r0
- movs r1, 0xF8
- lsls r1, 4
- strh r1, [r2, 0x2E]
- movs r1, 0xDC
- lsls r1, 2
- strh r1, [r2, 0x30]
- ldrh r1, [r6]
- strh r1, [r2, 0x32]
- ldrh r1, [r5]
- strh r1, [r2, 0x34]
- adds r0, r3
- adds r0, 0x3A
- ldr r1, [r4]
- bl StoreWordInTwoHalfwords
-_080EDCDE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080EDCE4: .4byte gUnknown_840BBC0
-_080EDCE8: .4byte gUnknown_840BBE8
-_080EDCEC: .4byte gUnknown_203AB0E
-_080EDCF0: .4byte gUnknown_203AB10
-_080EDCF4: .4byte gUnknown_203AB12
-_080EDCF8: .4byte gUnknown_203AB14
-_080EDCFC: .4byte gUnknown_203AB16
-_080EDD00: .4byte gUnknown_203AB18
-_080EDD04: .4byte gUnknown_203AB1A
-_080EDD08: .4byte gUnknown_203AB1E
-_080EDD0C: .4byte gUnknown_203AB20
-_080EDD10: .4byte gUnknown_203AB22
-_080EDD14: .4byte gUnknown_203AB24
-_080EDD18: .4byte gUnknown_203AB28
-_080EDD1C: .4byte 0x151b9245
-_080EDD20: .4byte gUnknown_840BC6C
-_080EDD24: .4byte gSprites
- thumb_func_end sub_80EDC40
-
thumb_func_start sub_80EDD28
sub_80EDD28: @ 80EDD28
push {r4-r7,lr}
diff --git a/src/intro.c b/src/intro.c
index 944f661dc..19e59401f 100644
--- a/src/intro.c
+++ b/src/intro.c
@@ -14,6 +14,9 @@
#include "save.h"
#include "sound.h"
#include "new_game.h"
+#include "title_screen.h"
+#include "decompress.h"
+#include "util.h"
#include "constants/songs.h"
struct IntroSequenceData
@@ -21,17 +24,18 @@ struct IntroSequenceData
void (*field_0000)(struct IntroSequenceData *);
u8 field_0004;
u8 field_0005;
- u8 filler_0006[2];
+ u8 field_0006;
u16 field_0008;
u16 field_000A;
- u8 field_000C[6];
+ u8 filler_000C[6];
u16 field_0012;
struct Sprite * field_0014;
struct Sprite * field_0018;
struct Sprite * field_001C;
struct Sprite * field_0020;
struct Sprite * field_0024;
- u8 filler_0028[0x14];
+ struct Sprite * field_0028[4];
+ u8 filler_0038[0x4];
u8 field_003C[0x400];
u8 field_043C[0x400];
u8 filler_083C[0x2080];
@@ -40,6 +44,27 @@ struct IntroSequenceData
EWRAM_DATA struct GcmbStruct gUnknown_203AAD4 = {0};
EWRAM_DATA u16 gUnknown_203AB00 = 0;
EWRAM_DATA u16 gUnknown_203AB02 = 0;
+EWRAM_DATA u16 gUnknown_203AB04 = 0;
+EWRAM_DATA u16 gUnknown_203AB06 = 0;
+EWRAM_DATA u16 gUnknown_203AB08 = 0;
+EWRAM_DATA u16 gUnknown_203AB0A = 0;
+EWRAM_DATA u16 gUnknown_203AB0C = 0;
+EWRAM_DATA u16 gUnknown_203AB0E = 0;
+EWRAM_DATA u16 gUnknown_203AB10 = 0;
+EWRAM_DATA u16 gUnknown_203AB12 = 0;
+EWRAM_DATA u16 gUnknown_203AB14 = 0;
+EWRAM_DATA u16 gUnknown_203AB16 = 0;
+EWRAM_DATA u16 gUnknown_203AB18 = 0;
+EWRAM_DATA u16 gUnknown_203AB1A = 0;
+EWRAM_DATA u16 gUnknown_203AB1C = 0;
+EWRAM_DATA u16 gUnknown_203AB1E = 0;
+EWRAM_DATA u16 gUnknown_203AB20 = 0;
+EWRAM_DATA u16 gUnknown_203AB22 = 0;
+EWRAM_DATA u16 gUnknown_203AB24 = 0;
+EWRAM_DATA u16 gUnknown_203AB26 = 0;
+EWRAM_DATA u32 gUnknown_203AB28 = 0;
+EWRAM_DATA u16 gUnknown_203AB2C = 0;
+EWRAM_DATA u16 gUnknown_203AB2E = 0;
void sub_80EC870(void);
void sub_80EC9D4(void);
@@ -68,12 +93,15 @@ void sub_80ED714(u8 taskId);
void sub_80ED7D4(struct IntroSequenceData * ptr);
void sub_80ED818(struct Sprite * sprite);
void sub_80ED898(struct IntroSequenceData * ptr);
+void sub_80EDAF0(struct IntroSequenceData * ptr);
+void sub_80EDB70(struct IntroSequenceData * ptr);
+void sub_80EDBAC(struct IntroSequenceData * ptr);
void sub_80EDBE8(struct IntroSequenceData * ptr);
-void sub_80ED40C(u8 taskId);
void sub_80EDC40(void);
void sub_80EDDF0(void);
void sub_80EDED8(void);
struct Sprite * sub_80EDF68(void);
+void sub_80EDF94(struct IntroSequenceData * ptr);
void sub_80EE1C4(struct Sprite * sprite);
void sub_80EE200(u8 taskId);
void sub_80EE29C(struct Sprite * sprite);
@@ -82,7 +110,12 @@ void sub_80EE4DC(struct Sprite * sprite);
void sub_80EE4F8(struct IntroSequenceData * ptr);
void sub_80EE528(struct Sprite * sprite, u16 a1, u16 a2, u16 a3);
bool32 sub_80EE5C8(struct IntroSequenceData * ptr);
+void sub_80EE5E4(struct IntroSequenceData * ptr);
+void sub_80EE6A4(struct IntroSequenceData * ptr);
+bool8 sub_80EE850(struct IntroSequenceData * ptr);
void sub_80EE8E4(struct Sprite * sprite);
+void sub_80EE970(struct Sprite * sprite, s16 a1, u16 a2, u8 a3);
+void sub_80EEA94(struct IntroSequenceData * ptr);
void sub_80EEBE4(void);
extern const u32 gMultiBootProgram_PokemonColosseum_Start[];
@@ -1205,3 +1238,247 @@ void sub_80ED818(struct Sprite * sprite)
break;
}
}
+
+void sub_80ED898(struct IntroSequenceData * this)
+{
+ switch (this->field_0004)
+ {
+ case 0:
+ this->field_0012 = 0;
+ this->field_0004++;
+ break;
+ case 1:
+ this->field_0012++;
+ if (this->field_0012 > 30)
+ {
+ sub_80EE5E4(this);
+ this->field_0004++;
+ }
+ break;
+ case 2:
+ if (!sub_80EE850(this))
+ {
+ this->field_0012 = 0;
+ this->field_0004++;
+ }
+ break;
+ case 3:
+ this->field_0012++;
+ if (this->field_0012 > 30)
+ {
+ sub_80ED760();
+ sub_80EDF94(this);
+ this->field_0012 = 0;
+ this->field_0004++;
+ }
+ break;
+ case 4:
+ if (this->field_0006)
+ {
+ sub_80EE6A4(this);
+ this->field_0004++;
+ }
+ break;
+ case 5:
+ if (!sub_80EE850(this))
+ {
+ sub_80ED788();
+ this->field_0012 = 0;
+ this->field_0004++;
+ }
+ break;
+ case 6:
+ this->field_0012++;
+ if (this->field_0012 > 16)
+ {
+ sub_80EE970(this->field_0018, 8, 12, 5);
+ this->field_0004++;
+ }
+ break;
+ case 7:
+ if (!sub_80EE850(this))
+ {
+ sub_80EE970(this->field_0018, 8, 12, 5);
+ this->field_0004++;
+ }
+ break;
+ case 8:
+ if (!sub_80EE850(this))
+ {
+ this->field_0012 = 0;
+ this->field_0004++;
+ }
+ break;
+ case 9:
+ this->field_0012++;
+ if (this->field_0012 > 20)
+ {
+ sub_80EEA94(this);
+ this->field_0012 = 0;
+ this->field_0004++;
+ }
+ break;
+ case 10:
+ if (!sub_80ED7B0())
+ {
+ sub_80ED760();
+ sub_80EDAF0(this);
+ this->field_0004++;
+ }
+ break;
+ case 11:
+ HideBg(0);
+ this->field_0012 = 0;
+ this->field_0004++;
+ break;
+ case 12:
+ this->field_0012++;
+ if (this->field_0012 == 48)
+ BeginNormalPaletteFade(0x00000006, 2, 0, 16, RGB_WHITE);
+ if (this->field_0012 > 120)
+ {
+ sub_80EDB70(this);
+ sub_80EDBAC(this);
+ this->field_0004++;
+ this->field_0012 = 0;
+ }
+ break;
+ case 13:
+ this->field_0012++;
+ if (this->field_0012 > 8)
+ {
+ CpuFill16(RGB_WHITE, gPlttBufferUnfaded + 16, 64);
+ BeginNormalPaletteFade(0xFFFFFFFE, -2, 0, 16, RGB_BLACK);
+ this->field_0004++;
+ }
+ break;
+ case 14:
+ if (!gPaletteFade.active)
+ {
+ this->field_0012 = 0;
+ this->field_0004++;
+ }
+ break;
+ case 15:
+ this->field_0012++;
+ if (this->field_0012 > 60)
+ sub_80ECAA8(this, sub_80EDBE8);
+ break;
+ default:
+ if (JOY_NEW(R_BUTTON))
+ {
+ BlendPalettes(0xFFFF0064, 0, RGB_WHITE);
+ this->field_0018->pos2.x = 0;
+ this->field_0018->pos1.x = 0xB4;
+ this->field_0004 = 1;
+ this->field_0012 = 30;
+ }
+ break;
+ }
+}
+
+void sub_80EDAD8(struct Sprite * sprite)
+{
+ CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode);
+}
+
+void sub_80EDAF0(struct IntroSequenceData * this)
+{
+ int i;
+
+ for (i = 0; i < 4; i++)
+ {
+ int x = (i & 1) * 48 + 49;
+ int y = (i / 2) * 64 + 72;
+ u8 spriteId = CreateSprite(&gUnknown_840BE4C, x, y, 8);
+ if (spriteId != MAX_SPRITES)
+ {
+ StartSpriteAnim(&gSprites[spriteId], i);
+ this->field_0028[i] = &gSprites[spriteId];
+ if (i & 1)
+ this->field_0028[i]->oam.shape = ST_OAM_V_RECTANGLE;
+ sub_80EDAD8(this->field_0028[i]);
+ }
+ }
+}
+
+void sub_80EDB70(struct IntroSequenceData * this)
+{
+ this->field_0018->pos1.x += this->field_0018->pos2.x;
+ this->field_0018->pos1.y += this->field_0018->pos2.y;
+ sub_8007FFC(this->field_0018, 0, 0x2A);
+ this->field_0018->callback = SpriteCallbackDummy;
+ StartSpriteAffineAnim(this->field_0018, 1);
+}
+
+void nullsub_83(struct Sprite * sprite)
+{
+
+}
+
+void sub_80EDBAC(struct IntroSequenceData * this)
+{
+ int i;
+
+ for (i = 0; i < 4; i++)
+ {
+ StartSpriteAffineAnim(this->field_0028[i], 1);
+ this->field_0028[i]->callback = nullsub_83;
+ sub_8007FFC(this->field_0028[i], gUnknown_840BBB8[i][0], gUnknown_840BBB8[i][1]);
+ }
+}
+
+void sub_80EDBE8(struct IntroSequenceData * this)
+{
+ switch (this->field_0004)
+ {
+ case 0:
+ FillPalette(RGB_BLACK, 0, 0x400);
+ this->field_0004++;
+ break;
+ case 1:
+ if (!FreeTempTileDataBuffersIfPossible())
+ {
+ DestroyTask(this->field_0005);
+ Free(this);
+ DisableInterrupts(INTR_FLAG_HBLANK);
+ SetHBlankCallback(NULL);
+ SetMainCallback2(CB2_InitTitleScreen);
+ }
+ break;
+ }
+}
+
+void sub_80EDC40(void)
+{
+ int i;
+ u8 spriteId;
+
+ for (i = 0; i < NELEMS(gUnknown_840BBC0); i++)
+ {
+ LoadCompressedSpriteSheet(&gUnknown_840BBC0[i]);
+ }
+ LoadSpritePalettes(gUnknown_840BBE8);
+ gUnknown_203AB0E = 0x60;
+ gUnknown_203AB10 = 0x10;
+ gUnknown_203AB12 = 0x07;
+ gUnknown_203AB14 = 0x05;
+ gUnknown_203AB16 = 0x08;
+ gUnknown_203AB18 = 0x5A;
+ gUnknown_203AB1A = 0x78;
+ gUnknown_203AB1E = 0x01;
+ gUnknown_203AB20 = 0x01;
+ gUnknown_203AB22 = 0x05;
+ gUnknown_203AB24 = 0x05;
+ if (gUnknown_203AB28 == 0)
+ gUnknown_203AB28 = 0x151B9245;
+ spriteId = CreateSprite(&gUnknown_840BC6C, 0xF8, 0x37, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[0] = 0xF80;
+ gSprites[spriteId].data[1] = 0x370;
+ gSprites[spriteId].data[2] = gUnknown_203AB0E;
+ gSprites[spriteId].data[3] = gUnknown_203AB10;
+ StoreWordInTwoHalfwords(&gSprites[spriteId].data[6], gUnknown_203AB28);
+ }
+}
diff --git a/sym_ewram.txt b/sym_ewram.txt
index ec2d2149d..58be99913 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -1114,63 +1114,7 @@ gUnknown_203AAC6: @ 203AAC6
.include "src/intro.o"
-gUnknown_203AB04: @ 203AB04
- .space 0x2
-
-gUnknown_203AB06: @ 203AB06
- .space 0x2
-
-gUnknown_203AB08: @ 203AB08
- .space 0x2
-
-gUnknown_203AB0A: @ 203AB0A
- .space 0x2
-
-gUnknown_203AB0C: @ 203AB0C
- .space 0x2
-
-gUnknown_203AB0E: @ 203AB0E
- .space 0x2
-
-gUnknown_203AB10: @ 203AB10
- .space 0x2
-
-gUnknown_203AB12: @ 203AB12
- .space 0x2
-
-gUnknown_203AB14: @ 203AB14
- .space 0x2
-
-gUnknown_203AB16: @ 203AB16
- .space 0x2
-
-gUnknown_203AB18: @ 203AB18
- .space 0x2
-
-gUnknown_203AB1A: @ 203AB1A
- .space 0x2
-
-gUnknown_203AB1C: @ 203AB1C
- .space 0x2
-
-gUnknown_203AB1E: @ 203AB1E
- .space 0x2
-
-gUnknown_203AB20: @ 203AB20
- .space 0x2
-
-gUnknown_203AB22: @ 203AB22
- .space 0x2
-
-gUnknown_203AB24: @ 203AB24
- .space 0x4
-
-gUnknown_203AB28: @ 203AB28
- .space 0x4
-
-gUnknown_203AB2C: @ 203AB2C
- .space 0x4
-
+ .align 2
gUnknown_203AB30: @ 203AB30
.space 0x4