sub_812F4A8

This commit is contained in:
scnorton
2019-04-10 11:00:39 -04:00
parent bf7084cb60
commit dfc2fa2b39
2 changed files with 101 additions and 303 deletions
-303
View File
@@ -5,309 +5,6 @@
.text
thumb_func_start sub_812F4A8
sub_812F4A8: @ 812F4A8
push {r4-r7,lr}
sub sp, 0x14
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r6, r0, 3
ldr r7, _0812F4D8 @ =gTasks+0x8
adds r5, r6, r7
ldr r0, _0812F4DC @ =gMain
movs r1, 0x87
lsls r1, 3
adds r3, r0, r1
ldrb r1, [r3]
adds r4, r0, 0
cmp r1, 0x4
bls _0812F4CC
b _0812F6C0
_0812F4CC:
lsls r0, r1, 2
ldr r1, _0812F4E0 @ =_0812F4E4
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0812F4D8: .4byte gTasks+0x8
_0812F4DC: .4byte gMain
_0812F4E0: .4byte _0812F4E4
.align 2, 0
_0812F4E4:
.4byte _0812F4F8
.4byte _0812F538
.4byte _0812F5B4
.4byte _0812F644
.4byte _0812F688
_0812F4F8:
ldr r0, _0812F534 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _0812F506
b _0812F71C
_0812F506:
movs r0, 0x40
movs r1, 0xF0
bl SetGpuReg
movs r1, 0x85
lsls r1, 5
movs r0, 0x44
bl SetGpuReg
movs r0, 0x48
movs r1, 0x3F
bl SetGpuReg
movs r0, 0x4A
movs r1, 0x1F
bl SetGpuReg
movs r1, 0x80
lsls r1, 6
movs r0, 0
bl SetGpuRegBits
b _0812F676
.align 2, 0
_0812F534: .4byte gPaletteFade
_0812F538:
ldrh r1, [r4, 0x2E]
movs r0, 0x3
ands r0, r1
cmp r0, 0
bne _0812F544
b _0812F71C
_0812F544:
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _0812F55C
ldr r0, _0812F558 @ =sOakSpeechResources
ldr r1, [r0]
ldrh r0, [r1, 0x12]
adds r0, 0x1
b _0812F56A
.align 2, 0
_0812F558: .4byte sOakSpeechResources
_0812F55C:
ldr r0, _0812F58C @ =sOakSpeechResources
ldr r1, [r0]
ldrh r0, [r1, 0x12]
cmp r0, 0
bne _0812F568
b _0812F71C
_0812F568:
subs r0, 0x1
_0812F56A:
strh r0, [r1, 0x12]
movs r0, 0x5
bl PlaySE
ldr r0, _0812F58C @ =sOakSpeechResources
ldr r0, [r0]
ldrh r0, [r0, 0x12]
cmp r0, 0x3
bne _0812F594
ldr r0, _0812F590 @ =gMain
movs r1, 0x87
lsls r1, 3
adds r0, r1
movs r1, 0x4
strb r1, [r0]
b _0812F71C
.align 2, 0
_0812F58C: .4byte sOakSpeechResources
_0812F590: .4byte gMain
_0812F594:
ldr r1, _0812F5B0 @ =0x00000241
movs r0, 0x50
bl SetGpuReg
ldrh r0, [r5, 0x1E]
movs r1, 0x10
subs r1, r0
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
b _0812F6A2
.align 2, 0
_0812F5B0: .4byte 0x00000241
_0812F5B4:
ldrh r1, [r5, 0x1E]
subs r1, 0x2
strh r1, [r5, 0x1E]
movs r0, 0x10
subs r0, r1
lsls r0, 8
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r1, 0x1E
ldrsh r0, [r5, r1]
cmp r0, 0
ble _0812F5D6
b _0812F71C
_0812F5D6:
ldrb r0, [r5, 0x1C]
movs r1, 0
bl FillWindowPixelBuffer
ldrb r0, [r5, 0x1C]
movs r1, 0x1
str r1, [sp]
movs r2, 0
str r2, [sp, 0x4]
ldr r1, _0812F620 @ =gUnknown_8462EEC
str r1, [sp, 0x8]
str r2, [sp, 0xC]
ldr r2, _0812F624 @ =gUnknown_8462EF0
ldr r4, _0812F628 @ =sOakSpeechResources
ldr r1, [r4]
ldrh r1, [r1, 0x12]
lsls r1, 2
adds r1, r2
ldr r1, [r1]
str r1, [sp, 0x10]
movs r1, 0x2
movs r2, 0x3
movs r3, 0x5
bl AddTextPrinterParametrized2
ldr r0, [r4]
ldrh r0, [r0, 0x12]
cmp r0, 0
bne _0812F630
bl sub_810F71C
ldr r0, _0812F62C @ =gUnknown_8415D48
movs r1, 0
movs r2, 0x1
bl sub_810F5E8
b _0812F6A2
.align 2, 0
_0812F620: .4byte gUnknown_8462EEC
_0812F624: .4byte gUnknown_8462EF0
_0812F628: .4byte sOakSpeechResources
_0812F62C: .4byte gUnknown_8415D48
_0812F630:
bl sub_810F71C
ldr r0, _0812F640 @ =gUnknown_8415D50
movs r1, 0
movs r2, 0x1
bl sub_810F5E8
b _0812F6A2
.align 2, 0
_0812F640: .4byte gUnknown_8415D50
_0812F644:
ldrh r1, [r5, 0x1E]
adds r1, 0x2
strh r1, [r5, 0x1E]
movs r4, 0x10
subs r0, r4, r1
lsls r0, 8
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
movs r1, 0x1E
ldrsh r0, [r5, r1]
cmp r0, 0xF
ble _0812F71C
strh r4, [r5, 0x1E]
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
_0812F676:
ldr r0, _0812F684 @ =gMain
movs r1, 0x87
lsls r1, 3
adds r0, r1
movs r1, 0x1
strb r1, [r0]
b _0812F71C
.align 2, 0
_0812F684: .4byte gMain
_0812F688:
ldr r1, _0812F6B4 @ =gTasks
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
adds r0, r1
ldrb r0, [r0, 0x12]
bl sub_8006398
ldr r0, _0812F6B8 @ =0x00000145
bl PlayBGM
movs r0, 0x18
strh r0, [r5, 0x1E]
_0812F6A2:
ldr r1, _0812F6BC @ =gMain
movs r0, 0x87
lsls r0, 3
adds r1, r0
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
b _0812F71C
.align 2, 0
_0812F6B4: .4byte gTasks
_0812F6B8: .4byte 0x00000145
_0812F6BC: .4byte gMain
_0812F6C0:
ldrh r0, [r5, 0x1E]
movs r1, 0x1E
ldrsh r4, [r5, r1]
cmp r4, 0
beq _0812F6D0
subs r0, 0x1
strh r0, [r5, 0x1E]
b _0812F71C
_0812F6D0:
strb r4, [r3]
ldr r0, _0812F724 @ =sOakSpeechResources
ldr r0, [r0]
strh r4, [r0, 0x12]
movs r0, 0x40
movs r1, 0
bl SetGpuReg
movs r0, 0x44
movs r1, 0
bl SetGpuReg
movs r0, 0x48
movs r1, 0
bl SetGpuReg
movs r0, 0x4A
movs r1, 0
bl SetGpuReg
movs r1, 0x80
lsls r1, 6
movs r0, 0
bl ClearGpuRegBits
movs r0, 0x1
negs r0, r0
str r4, [sp]
movs r1, 0x2
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
adds r0, r7, 0
subs r0, 0x8
adds r0, r6, r0
ldr r1, _0812F728 @ =sub_812F72C
str r1, [r0]
_0812F71C:
add sp, 0x14
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0812F724: .4byte sOakSpeechResources
_0812F728: .4byte sub_812F72C
thumb_func_end sub_812F4A8
thumb_func_start sub_812F72C
sub_812F72C: @ 812F72C
push {r4-r7,lr}
+101
View File
@@ -43,6 +43,7 @@ void sub_812F180(u8 taskId);
void sub_812F274(u8 taskId);
void sub_812F33C(u8 taskId);
void sub_812F4A8(u8 taskId);
void sub_812F72C(u8 taskId);
void sub_8130FD4(u8 taskId, u8 state);
extern const u8 gUnknown_8415D2C[];
@@ -844,3 +845,103 @@ void sub_812F33C(u8 taskId)
gTasks[taskId].func = sub_812F4A8;
}
}
void sub_812F4A8(u8 taskId)
{
s16 * data = gTasks[taskId].data;
switch (gMain.state)
{
case 0:
if (!gPaletteFade.active)
{
SetGpuReg(REG_OFFSET_WIN0H, 0x00F0);
SetGpuReg(REG_OFFSET_WIN0V, 0x10A0);
SetGpuReg(REG_OFFSET_WININ, 0x003F);
SetGpuReg(REG_OFFSET_WINOUT, 0x001F);
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
gMain.state = 1;
}
break;
case 1:
if (JOY_NEW((A_BUTTON | B_BUTTON)))
{
if (JOY_NEW(A_BUTTON))
{
sOakSpeechResources->unk_0012++;
}
else if (sOakSpeechResources->unk_0012 != 0)
{
sOakSpeechResources->unk_0012--;
}
else
{
break;
}
PlaySE(SE_SELECT);
if (sOakSpeechResources->unk_0012 == 3)
{
gMain.state = 4;
}
else
{
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1);
SetGpuReg(REG_OFFSET_BLDALPHA, (16 - data[15]) | data[15]);
gMain.state++;
}
}
break;
case 2:
data[15] -= 2;
SetGpuReg(REG_OFFSET_BLDALPHA, ((16 - data[15]) << 8) | data[15]);
if (data[15] <= 0)
{
FillWindowPixelBuffer(data[14], 0x00);
AddTextPrinterParametrized2(data[14], 2, 3, 5, 1, 0, &gUnknown_8462EEC, 0, gUnknown_8462EF0[sOakSpeechResources->unk_0012]);
if (sOakSpeechResources->unk_0012 == 0)
{
sub_810F71C();
sub_810F5E8(gUnknown_8415D48, 0, 1);
}
else
{
sub_810F71C();
sub_810F5E8(gUnknown_8415D50, 0, 1);
}
gMain.state++;
}
break;
case 3:
data[15] += 2;
SetGpuReg(REG_OFFSET_BLDALPHA, ((16 - data[15]) << 8) | data[15]);
if (data[15] >= 16)
{
data[15] = 16;
SetGpuReg(REG_OFFSET_BLDCNT, 0);
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
gMain.state = 1;
}
break;
case 4:
sub_8006398(gTasks[taskId].data[5]);
PlayBGM(325);
data[15] = 24;
gMain.state++;
break;
default:
if (data[15] != 0)
data[15]--;
else
{
gMain.state = 0;
sOakSpeechResources->unk_0012 = 0;
SetGpuReg(REG_OFFSET_WIN0H, 0);
SetGpuReg(REG_OFFSET_WIN0V, 0);
SetGpuReg(REG_OFFSET_WININ, 0);
SetGpuReg(REG_OFFSET_WINOUT, 0);
ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, RGB_BLACK);
gTasks[taskId].func = sub_812F72C;
}
break;
}
}