slot_machine through sub_8141764

This commit is contained in:
PikalaxALT
2019-05-26 11:34:02 -04:00
parent 36fc72f25e
commit c37b93e8a6
2 changed files with 244 additions and 499 deletions
+244 -1
View File
@@ -18,6 +18,8 @@
#include "random.h"
#include "constants/songs.h"
extern const u8 gUnknown_841B747[];
extern const u8 gUnknown_841B76B[];
extern const u8 gUnknown_841B779[];
struct SlotMachineState
@@ -61,7 +63,9 @@ struct SlotMachineSetupTaskDataSub_0000
struct SlotMachineSetupTaskData
{
struct SlotMachineSetupTaskDataSub_0000 field_0000[8];
u8 filler_0020[8];
u8 field_0020;
// align 2
s32 field_0024;
u32 field_0028;
u8 filler_002C[0x830];
u8 field_085C[0x800];
@@ -122,7 +126,16 @@ bool8 sub_8141650(u8 *, struct SlotMachineSetupTaskData *);
bool8 sub_8141690(u8 *, struct SlotMachineSetupTaskData *);
bool8 sub_81416C8(u8 *, struct SlotMachineSetupTaskData *);
bool8 sub_8141764(u8 *, struct SlotMachineSetupTaskData *);
void sub_81417E4(const u8 * str);
void sub_8141828(void);
void sub_8141834(u16 * bgTilemapBuffer);
void sub_814191C(u8 taskId);
void sub_8141AB0(void);
void sub_8141AD8(u8 a0);
void sub_8141B18(void);
void sub_8141B34(void);
void sub_8141BA0(u8 a0);
void sub_8141BE4(void);
void sub_8141C30(u8, u8);
const u8 gUnknown_8464890[][2] = {
@@ -2394,3 +2407,233 @@ bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr)
"\tbx r1");
}
#endif //NONMATCHING
bool8 sub_8141460(u8 * state, struct SlotMachineSetupTaskData * ptr)
{
switch (*state)
{
case 0:
BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, 0);
(*state)++;
break;
case 1:
if (!gPaletteFade.active)
return FALSE;
break;
}
return TRUE;
}
bool8 sub_81414AC(u8 * state, struct SlotMachineSetupTaskData * ptr)
{
switch (*state)
{
case 0:
sub_8141834(GetBgTilemapBuffer(2));
CopyBgTilemapBufferToVram(2);
(*state)++;
break;
case 1:
if (!IsDma3ManagerBusyWithBgCopy())
return FALSE;
break;
}
return TRUE;
}
bool8 sub_81414EC(u8 * state, struct SlotMachineSetupTaskData * ptr)
{
sub_8141020(1);
return FALSE;
}
bool8 sub_81414FC(u8 * state, struct SlotMachineSetupTaskData * ptr)
{
sub_8141020(2);
CreateTask(sub_814191C, 3);
return FALSE;
}
bool8 sub_8141518(u8 * state, struct SlotMachineSetupTaskData * ptr)
{
switch (*state)
{
case 0:
sub_8141AB0();
(*state)++;
break;
case 1:
if (!FuncIsActiveTask(sub_814191C))
{
sub_8141020(0);
return FALSE;
}
break;
}
return TRUE;
}
bool8 sub_8141558(u8 * state, struct SlotMachineSetupTaskData * ptr)
{
sub_8141020(3);
return FALSE;
}
bool8 sub_8141568(u8 * state, struct SlotMachineSetupTaskData * ptr)
{
sub_8141020(FALSE);
return FALSE;
}
bool8 sub_8141578(u8 * state, struct SlotMachineSetupTaskData * ptr)
{
sub_8140F2C();
return FALSE;
}
bool8 sub_8141584(u8 * state, struct SlotMachineSetupTaskData * ptr)
{
switch (*state)
{
case 0:
sub_81417E4(gUnknown_841B747);
CopyWindowToVram(0, 3);
(*state)++;
break;
case 1:
if (!IsDma3ManagerBusyWithBgCopy())
return FALSE;
break;
}
return TRUE;
}
bool8 sub_81415C8(u8 * state, struct SlotMachineSetupTaskData * ptr)
{
switch (*state)
{
case 0:
sub_81417E4(gUnknown_841B76B);
sub_8141AD8(0);
CopyWindowToVram(0, 3);
(*state)++;
break;
case 1:
if (!IsDma3ManagerBusyWithBgCopy())
return FALSE;
break;
}
return TRUE;
}
bool8 sub_8141610(u8 * state, struct SlotMachineSetupTaskData * ptr)
{
switch (*state)
{
case 0:
sub_8141828();
sub_8141B18();
CopyWindowToVram(0, 3);
(*state)++;
break;
case 1:
if (!IsDma3ManagerBusyWithBgCopy())
return FALSE;
break;
}
return TRUE;
}
bool8 sub_8141650(u8 * state, struct SlotMachineSetupTaskData * ptr)
{
switch (*state)
{
case 0:
sub_8141BA0(ptr->field_0020);
CopyBgTilemapBufferToVram(2);
(*state)++;
break;
case 1:
if (!IsDma3ManagerBusyWithBgCopy())
return FALSE;
break;
}
return TRUE;
}
bool8 sub_8141690(u8 * state, struct SlotMachineSetupTaskData * ptr)
{
switch (*state)
{
case 0:
sub_8141BE4();
CopyBgTilemapBufferToVram(2);
(*state)++;
break;
case 1:
if (!IsDma3ManagerBusyWithBgCopy())
return FALSE;
break;
}
return TRUE;
}
bool8 sub_81416C8(u8 * state, struct SlotMachineSetupTaskData * ptr)
{
switch (*state)
{
case 0:
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
SetGpuReg(REG_OFFSET_WININ, 0x3F);
SetGpuReg(REG_OFFSET_WINOUT, 0x3D);
SetGpuReg(REG_OFFSET_WIN0H, 0x00);
SetGpuReg(REG_OFFSET_WIN1H, 0xA0);
ShowBg(1);
PlaySE(SE_WIN_OPEN);
ptr->field_0024 = 0;
(*state)++;
break;
case 1:
ptr->field_0024 += 16;
if (ptr->field_0024 >= 256)
{
ptr->field_0024 = 256;
(*state)++;
}
ChangeBgX(1, 256 * (256 - ptr->field_0024), 0);
SetGpuReg(REG_OFFSET_WIN0H, ptr->field_0024);
break;
case 2:
return FALSE;
}
return TRUE;
}
bool8 sub_8141764(u8 * state, struct SlotMachineSetupTaskData * ptr)
{
switch (*state)
{
case 0:
PlaySE(SE_WIN_OPEN);
(*state)++;
// fallthrough
case 1:
ptr->field_0024 -= 16;
if (ptr->field_0024 <= 0)
{
ptr->field_0024 = 0;
(*state)++;
}
ChangeBgX(1, 256 * (256 - ptr->field_0024), 0);
SetGpuReg(REG_OFFSET_WIN0H, ptr->field_0024);
break;
case 2:
HideBg(1);
ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
(*state)++;
break;
case 3:
return FALSE;
}
return TRUE;
}