intro: through sub_80ECC3C

This commit is contained in:
PikalaxALT
2019-07-02 15:30:30 -04:00
parent 2c953c5baf
commit 4f63b54a6b
2 changed files with 65 additions and 144 deletions
-143
View File
@@ -5,149 +5,6 @@
.text
thumb_func_start sub_80ECB98
sub_80ECB98: @ 80ECB98
push {r4,r5,lr}
adds r4, r0, 0
ldrb r5, [r4, 0x4]
cmp r5, 0x1
beq _080ECBE2
cmp r5, 0x1
bgt _080ECBAC
cmp r5, 0
beq _080ECBB2
b _080ECC32
_080ECBAC:
cmp r5, 0x2
beq _080ECBFC
b _080ECC32
_080ECBB2:
movs r1, 0x80
lsls r1, 7
movs r0, 0
bl SetGpuRegBits
movs r1, 0xFC
lsls r1, 6
movs r0, 0x48
bl SetGpuReg
movs r0, 0x4A
movs r1, 0
bl SetGpuReg
movs r0, 0x42
movs r1, 0xF0
bl SetGpuReg
movs r0, 0x46
movs r1, 0
bl SetGpuReg
strh r5, [r4, 0x12]
b _080ECBF4
_080ECBE2:
movs r0, 0x3
bl ShowBg
movs r0, 0x1
negs r0, r0
movs r1, 0
movs r2, 0
bl BlendPalettes
_080ECBF4:
ldrb r0, [r4, 0x4]
adds r0, 0x1
strb r0, [r4, 0x4]
b _080ECC32
_080ECBFC:
ldrh r0, [r4, 0x12]
adds r0, 0x8
strh r0, [r4, 0x12]
lsls r0, 16
lsrs r0, 16
cmp r0, 0x2F
bls _080ECC0E
movs r0, 0x30
strh r0, [r4, 0x12]
_080ECC0E:
ldrh r0, [r4, 0x12]
movs r1, 0x50
subs r1, r0
lsls r1, 8
adds r0, 0x50
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x46
bl SetGpuReg
ldrh r0, [r4, 0x12]
cmp r0, 0x30
bne _080ECC32
ldr r1, _080ECC38 @ =sub_80ECC3C
adds r0, r4, 0
bl sub_80ECAA8
_080ECC32:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080ECC38: .4byte sub_80ECC3C
thumb_func_end sub_80ECB98
thumb_func_start sub_80ECC3C
sub_80ECC3C: @ 80ECC3C
push {r4,r5,lr}
adds r4, r0, 0
ldrb r5, [r4, 0x4]
cmp r5, 0x1
beq _080ECC68
cmp r5, 0x1
bgt _080ECC50
cmp r5, 0
beq _080ECC56
b _080ECC9C
_080ECC50:
cmp r5, 0x2
beq _080ECC86
b _080ECC9C
_080ECC56:
ldr r0, _080ECC64 @ =0x00000141
bl PlaySE
bl sub_80EDC40
strh r5, [r4, 0x12]
b _080ECC7E
.align 2, 0
_080ECC64: .4byte 0x00000141
_080ECC68:
ldrh r0, [r4, 0x12]
adds r0, 0x1
strh r0, [r4, 0x12]
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1E
bne _080ECC9C
bl sub_80EDDF0
movs r0, 0
strh r0, [r4, 0x12]
_080ECC7E:
ldrb r0, [r4, 0x4]
adds r0, 0x1
strb r0, [r4, 0x4]
b _080ECC9C
_080ECC86:
ldrh r0, [r4, 0x12]
adds r0, 0x1
strh r0, [r4, 0x12]
lsls r0, 16
lsrs r0, 16
cmp r0, 0x5A
bne _080ECC9C
ldr r1, _080ECCA4 @ =sub_80ECCA8
adds r0, r4, 0
bl sub_80ECAA8
_080ECC9C:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080ECCA4: .4byte sub_80ECCA8
thumb_func_end sub_80ECC3C
thumb_func_start sub_80ECCA8
sub_80ECCA8: @ 80ECCA8
push {r4,r5,lr}
+65 -1
View File
@@ -12,14 +12,18 @@
#include "link.h"
#include "menu.h"
#include "save.h"
#include "sound.h"
#include "new_game.h"
#include "constants/songs.h"
struct IntroSequenceData
{
void (*field_0000)(struct IntroSequenceData *);
u8 field_0004;
u8 field_0005;
u8 filler_0006[0x36];
u8 filler_0006[0xC];
u16 field_0012;
u8 filler_0014[0x28];
u8 field_003C[0x400];
u8 field_043C[0x400];
u8 filler_083C[0x2080];
@@ -36,7 +40,11 @@ void sub_80ECAB0(u8 taskId);
void sub_80ECAA8(struct IntroSequenceData * ptr, void (*cb)(struct IntroSequenceData *));
void sub_80ECAF0(struct IntroSequenceData * ptr);
void sub_80ECB98(struct IntroSequenceData * ptr);
void sub_80ECC3C(struct IntroSequenceData * ptr);
void sub_80ECCA8(struct IntroSequenceData * ptr);
void sub_80EDBE8(struct IntroSequenceData * ptr);
void sub_80EDC40(void);
void sub_80EDDF0(void);
extern const u32 gMultiBootProgram_PokemonColosseum_Start[];
@@ -287,3 +295,59 @@ void sub_80ECAF0(struct IntroSequenceData * this)
break;
}
}
void sub_80ECB98(struct IntroSequenceData * this)
{
switch (this->field_0004)
{
case 0:
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN1_ON);
SetGpuReg(REG_OFFSET_WININ, 0x3F00);
SetGpuReg(REG_OFFSET_WINOUT, 0x0000);
SetGpuReg(REG_OFFSET_WIN1H, 0x00F0);
SetGpuReg(REG_OFFSET_WIN1V, 0x0000);
this->field_0012 = 0;
this->field_0004++;
break;
case 1:
ShowBg(3);
BlendPalettes(0xFFFFFFFF, 0x00, RGB_BLACK);
this->field_0004++;
break;
case 2:
this->field_0012 += 8;
if (this->field_0012 >= 0x30)
this->field_0012 = 0x30;
SetGpuReg(REG_OFFSET_WIN1V, ((0x50 - this->field_0012) << 8) | (0x50 + this->field_0012));
if (this->field_0012 == 0x30)
sub_80ECAA8(this, sub_80ECC3C);
break;
}
}
void sub_80ECC3C(struct IntroSequenceData * this)
{
switch (this->field_0004)
{
case 0:
PlaySE(BGM_FRLG_GAMEFREAK_LOGO);
sub_80EDC40();
this->field_0012 = 0;
this->field_0004++;
break;
case 1:
this->field_0012++;
if (this->field_0012 == 30)
{
sub_80EDDF0();
this->field_0012 = 0;
this->field_0004++;
}
break;
case 2:
this->field_0012++;
if (this->field_0012 == 90)
sub_80ECAA8(this, sub_80ECCA8);
break;
}
}