sub_812F4A8
This commit is contained in:
@@ -5,309 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.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
|
thumb_func_start sub_812F72C
|
||||||
sub_812F72C: @ 812F72C
|
sub_812F72C: @ 812F72C
|
||||||
push {r4-r7,lr}
|
push {r4-r7,lr}
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ void sub_812F180(u8 taskId);
|
|||||||
void sub_812F274(u8 taskId);
|
void sub_812F274(u8 taskId);
|
||||||
void sub_812F33C(u8 taskId);
|
void sub_812F33C(u8 taskId);
|
||||||
void sub_812F4A8(u8 taskId);
|
void sub_812F4A8(u8 taskId);
|
||||||
|
void sub_812F72C(u8 taskId);
|
||||||
void sub_8130FD4(u8 taskId, u8 state);
|
void sub_8130FD4(u8 taskId, u8 state);
|
||||||
|
|
||||||
extern const u8 gUnknown_8415D2C[];
|
extern const u8 gUnknown_8415D2C[];
|
||||||
@@ -844,3 +845,103 @@ void sub_812F33C(u8 taskId)
|
|||||||
gTasks[taskId].func = sub_812F4A8;
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user