more cut scenes

This commit is contained in:
Oliver Bell committed 2022-11-13 23:59:57 +00:00
1 parent 59353360df
commit e44949878a
2 files changed
+96 -264

No files matched your search

-263
View File
@@ -4,269 +4,6 @@
.syntax unified
.arm
thumb_func_start sub_808EF38
sub_808EF38: @ 0x0808EF38
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
ldr r0, _0808EFCC @ =gCurTask
mov r8, r0
ldr r0, [r0]
ldrh r7, [r0, #6]
movs r0, #0xc0
lsls r0, r0, #0x12
adds r4, r7, r0
ldr r1, _0808EFD0 @ =IWRAM_START + 0x40
adds r5, r7, r1
movs r6, #0
movs r0, #1
strh r0, [r5, #2]
adds r0, r5, #0
bl sub_802D4CC
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
cmp r3, #1
bne _0808EFF4
strh r6, [r5, #4]
ldr r5, _0808EFD4 @ =IWRAM_START + 0x50
adds r2, r7, r5
ldrb r0, [r2]
adds r0, #1
strb r0, [r2]
adds r5, #1
adds r1, r7, r5
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldrb r1, [r1]
cmp r0, r1
bhs _0808EFEC
ldr r1, _0808EFD8 @ =gUnknown_080E1278
ldrb r0, [r2]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
cmp r0, #0
beq _0808EFC4
ldr r0, _0808EFDC @ =0x06004000
str r0, [r4, #4]
strh r6, [r4, #0xa]
ldr r0, _0808EFE0 @ =0x0600E000
str r0, [r4, #0xc]
strh r6, [r4, #0x18]
strh r6, [r4, #0x1a]
ldrb r0, [r2]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
strh r0, [r4, #0x1c]
strh r6, [r4, #0x1e]
strh r6, [r4, #0x20]
strh r6, [r4, #0x22]
strh r6, [r4, #0x24]
movs r0, #0x1e
strh r0, [r4, #0x26]
movs r0, #0x14
strh r0, [r4, #0x28]
ldr r0, _0808EFE4 @ =IWRAM_START + 0x2A
adds r1, r7, r0
movs r0, #0
strb r0, [r1]
strh r3, [r4, #0x2e]
adds r0, r4, #0
bl sub_8002A3C
_0808EFC4:
mov r5, r8
ldr r1, [r5]
ldr r0, _0808EFE8 @ =sub_808F004
b _0808EFF2
.align 2, 0
_0808EFCC: .4byte gCurTask
_0808EFD0: .4byte IWRAM_START + 0x40
_0808EFD4: .4byte IWRAM_START + 0x50
_0808EFD8: .4byte gUnknown_080E1278
_0808EFDC: .4byte 0x06004000
_0808EFE0: .4byte 0x0600E000
_0808EFE4: .4byte IWRAM_START + 0x2A
_0808EFE8: .4byte sub_808F004
_0808EFEC:
mov r0, r8
ldr r1, [r0]
ldr r0, _0808F000 @ =sub_808F10C
_0808EFF2:
str r0, [r1, #8]
_0808EFF4:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0808F000: .4byte sub_808F10C
thumb_func_start sub_808F004
sub_808F004: @ 0x0808F004
push {r4, lr}
ldr r0, _0808F050 @ =gCurTask
ldr r2, [r0]
ldrh r0, [r2, #6]
ldr r1, _0808F054 @ =IWRAM_START + 0x40
adds r4, r0, r1
movs r1, #2
strh r1, [r4, #2]
ldr r1, _0808F058 @ =IWRAM_START + 0x4D
adds r0, r0, r1
ldrb r0, [r0]
cmp r0, #0
beq _0808F02E
ldr r0, _0808F05C @ =gPressedKeys
ldrh r1, [r0]
movs r0, #8
ands r0, r1
cmp r0, #0
beq _0808F02E
ldr r0, _0808F060 @ =sub_808F0BC
str r0, [r2, #8]
_0808F02E:
adds r0, r4, #0
bl sub_802D4CC
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _0808F048
movs r0, #0
strh r0, [r4, #4]
ldr r0, _0808F050 @ =gCurTask
ldr r1, [r0]
ldr r0, _0808F064 @ =sub_808F068
str r0, [r1, #8]
_0808F048:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0808F050: .4byte gCurTask
_0808F054: .4byte IWRAM_START + 0x40
_0808F058: .4byte IWRAM_START + 0x4D
_0808F05C: .4byte gPressedKeys
_0808F060: .4byte sub_808F0BC
_0808F064: .4byte sub_808F068
thumb_func_start sub_808F068
sub_808F068: @ 0x0808F068
push {lr}
ldr r2, _0808F084 @ =gCurTask
ldr r3, [r2]
ldrh r1, [r3, #6]
movs r0, #0xc0
lsls r0, r0, #0x12
adds r1, r1, r0
ldr r0, [r1, #0x54]
cmp r0, #0
beq _0808F088
subs r0, #1
str r0, [r1, #0x54]
b _0808F090
.align 2, 0
_0808F084: .4byte gCurTask
_0808F088:
movs r0, #0x96
str r0, [r1, #0x54]
ldr r0, _0808F0B0 @ =sub_808EF38
str r0, [r3, #8]
_0808F090:
adds r0, r1, #0
adds r0, #0x4d
ldrb r0, [r0]
cmp r0, #0
beq _0808F0AC
ldr r0, _0808F0B4 @ =gPressedKeys
ldrh r1, [r0]
movs r0, #8
ands r0, r1
cmp r0, #0
beq _0808F0AC
ldr r1, [r2]
ldr r0, _0808F0B8 @ =sub_808F0BC
str r0, [r1, #8]
_0808F0AC:
pop {r0}
bx r0
.align 2, 0
_0808F0B0: .4byte sub_808EF38
_0808F0B4: .4byte gPressedKeys
_0808F0B8: .4byte sub_808F0BC
thumb_func_start sub_808F0BC
sub_808F0BC: @ 0x0808F0BC
push {r4, r5, r6, lr}
ldr r6, _0808F0FC @ =gCurTask
ldr r0, [r6]
ldrh r5, [r0, #6]
ldr r0, _0808F100 @ =IWRAM_START + 0x40
adds r4, r5, r0
movs r0, #1
strh r0, [r4, #2]
ldr r0, _0808F104 @ =gMPlayInfo_BGM
movs r1, #0x18
bl m4aMPlayFadeOutTemporarily
adds r0, r4, #0
bl sub_802D4CC
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _0808F0F6
movs r0, #0
strh r0, [r4, #4]
ldr r1, _0808F108 @ =IWRAM_START + 0x4C
adds r0, r5, r1
ldrb r0, [r0]
bl sub_808F14C
ldr r0, [r6]
bl TaskDestroy
_0808F0F6:
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_0808F0FC: .4byte gCurTask
_0808F100: .4byte IWRAM_START + 0x40
_0808F104: .4byte gMPlayInfo_BGM
_0808F108: .4byte IWRAM_START + 0x4C
thumb_func_start sub_808F10C
sub_808F10C: @ 0x0808F10C
push {r4, lr}
ldr r4, _0808F13C @ =gCurTask
ldr r0, [r4]
ldrh r1, [r0, #6]
ldr r0, _0808F140 @ =IWRAM_START + 0x4F
adds r2, r1, r0
ldrb r0, [r2]
adds r0, #1
strb r0, [r2]
ldr r3, _0808F144 @ =IWRAM_START + 0x4C
adds r0, r1, r3
ldrb r0, [r0]
adds r3, #2
adds r1, r1, r3
ldrb r1, [r1]
ldrb r2, [r2]
bl sub_808EA50
ldr r0, [r4]
bl TaskDestroy
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0808F13C: .4byte gCurTask
_0808F140: .4byte IWRAM_START + 0x4F
_0808F144: .4byte IWRAM_START + 0x4C
thumb_func_start sub_808F148
sub_808F148: @ 0x0808F148
bx lr
.align 2, 0
@; CreateCreditsEnd
thumb_func_start sub_808F14C
sub_808F14C: @ 0x0808F14C
+96 -1
View File
@@ -945,4 +945,99 @@ void sub_808ED60(u8 a, u8 b, u8 c)
}
}
// void sub_808EF38(void) { struct CreditsCutScene2 *scene = NULL; }
void sub_808F10C(void);
void sub_808EF38(void)
{
struct CreditsCutScene2 *scene = TaskGetStructPtr(gCurTask);
struct UNK_802D4CC_UNK270 *transitionConfig = &scene->unk40;
transitionConfig->unk2 = 1;
if (sub_802D4CC(transitionConfig) == 1) {
transitionConfig->unk4 = 0;
scene->unk50++;
if (scene->unk50 < scene->unk51) {
if (gUnknown_080E1278[scene->unk50] != 0) {
struct Unk_03002400 *background = &scene->unk0;
background->unk4 = BG_SCREEN_ADDR(8);
background->unkA = 0;
background->unkC = BG_SCREEN_ADDR(28);
background->unk18 = 0;
background->unk1A = 0;
background->unk1C = gUnknown_080E1278[scene->unk50];
background->unk1E = 0;
background->unk20 = 0;
background->unk22 = 0;
background->unk24 = 0;
background->unk26 = 0x1E;
background->unk28 = 0x14;
background->unk2A = 0;
background->unk2E = 1;
sub_8002A3C(background);
}
gCurTask->main = sub_808F004;
} else {
gCurTask->main = sub_808F10C;
}
}
}
void sub_808F0BC(void);
void sub_808F068(void);
void sub_808F004(void)
{
struct CreditsCutScene2 *scene = TaskGetStructPtr(gCurTask);
struct UNK_802D4CC_UNK270 *transitionConfig = &scene->unk40;
transitionConfig->unk2 = 2;
if (scene->unk4D != 0 && (gPressedKeys & START_BUTTON)) {
gCurTask->main = sub_808F0BC;
}
if (sub_802D4CC(transitionConfig) == 1) {
transitionConfig->unk4 = 0;
gCurTask->main = sub_808F068;
}
}
void sub_808F068(void)
{
struct CreditsCutScene2 *scene = TaskGetStructPtr(gCurTask);
if (scene->unk54 != 0) {
scene->unk54--;
} else {
scene->unk54 = 0x96;
gCurTask->main = sub_808EF38;
}
if (scene->unk4D != 0 && (gPressedKeys & START_BUTTON)) {
gCurTask->main = sub_808F0BC;
}
}
void sub_808F0BC(void)
{
struct CreditsCutScene2 *scene = TaskGetStructPtr(gCurTask);
struct UNK_802D4CC_UNK270 *transitionConfig = &scene->unk40;
transitionConfig->unk2 = 1;
m4aMPlayFadeOutTemporarily(&gMPlayInfo_BGM, 24);
if (sub_802D4CC(transitionConfig) == 1) {
transitionConfig->unk4 = 0;
sub_808F14C(scene->unk4C);
TaskDestroy(gCurTask);
}
}
void sub_808F10C(void)
{
struct CreditsCutScene2 *scene = TaskGetStructPtr(gCurTask);
scene->unk4F++;
sub_808EA50(scene->unk4C, scene->unk4E, scene->unk4F);
TaskDestroy(gCurTask);
}
void sub_808F148(UNUSED struct Task *t) { }