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

View File

@ -5,504 +5,6 @@
.text
thumb_func_start sub_8141460
sub_8141460: @ 8141460
push {r4,lr}
sub sp, 0x4
adds r4, r0, 0
ldrb r0, [r4]
cmp r0, 0
beq _08141472
cmp r0, 0x1
beq _0814148A
b _081414A0
_08141472:
movs r1, 0x1
negs r1, r1
str r0, [sp]
adds r0, r1, 0
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
b _081414A0
_0814148A:
ldr r0, _0814149C @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _081414A0
movs r0, 0
b _081414A2
.align 2, 0
_0814149C: .4byte gPaletteFade
_081414A0:
movs r0, 0x1
_081414A2:
add sp, 0x4
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8141460
thumb_func_start sub_81414AC
sub_81414AC: @ 81414AC
push {r4,lr}
adds r4, r0, 0
ldrb r0, [r4]
cmp r0, 0
beq _081414BC
cmp r0, 0x1
beq _081414D4
b _081414E2
_081414BC:
movs r0, 0x2
bl GetBgTilemapBuffer
bl sub_8141834
movs r0, 0x2
bl CopyBgTilemapBufferToVram
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
b _081414E2
_081414D4:
bl IsDma3ManagerBusyWithBgCopy
lsls r0, 24
cmp r0, 0
bne _081414E2
movs r0, 0
b _081414E4
_081414E2:
movs r0, 0x1
_081414E4:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_81414AC
thumb_func_start sub_81414EC
sub_81414EC: @ 81414EC
push {lr}
movs r0, 0x1
bl sub_8141020
movs r0, 0
pop {r1}
bx r1
thumb_func_end sub_81414EC
thumb_func_start sub_81414FC
sub_81414FC: @ 81414FC
push {lr}
movs r0, 0x2
bl sub_8141020
ldr r0, _08141514 @ =sub_814191C
movs r1, 0x3
bl CreateTask
movs r0, 0
pop {r1}
bx r1
.align 2, 0
_08141514: .4byte sub_814191C
thumb_func_end sub_81414FC
thumb_func_start sub_8141518
sub_8141518: @ 8141518
push {r4,lr}
adds r4, r0, 0
ldrb r0, [r4]
cmp r0, 0
beq _08141528
cmp r0, 0x1
beq _08141534
b _08141550
_08141528:
bl sub_8141AB0
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
b _08141550
_08141534:
ldr r0, _0814154C @ =sub_814191C
bl FuncIsActiveTask
lsls r0, 24
cmp r0, 0
bne _08141550
movs r0, 0
bl sub_8141020
movs r0, 0
b _08141552
.align 2, 0
_0814154C: .4byte sub_814191C
_08141550:
movs r0, 0x1
_08141552:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8141518
thumb_func_start sub_8141558
sub_8141558: @ 8141558
push {lr}
movs r0, 0x3
bl sub_8141020
movs r0, 0
pop {r1}
bx r1
thumb_func_end sub_8141558
thumb_func_start sub_8141568
sub_8141568: @ 8141568
push {lr}
movs r0, 0
bl sub_8141020
movs r0, 0
pop {r1}
bx r1
thumb_func_end sub_8141568
thumb_func_start sub_8141578
sub_8141578: @ 8141578
push {lr}
bl sub_8140F2C
movs r0, 0
pop {r1}
bx r1
thumb_func_end sub_8141578
thumb_func_start sub_8141584
sub_8141584: @ 8141584
push {r4,lr}
adds r4, r0, 0
ldrb r0, [r4]
cmp r0, 0
beq _08141594
cmp r0, 0x1
beq _081415B0
b _081415BE
_08141594:
ldr r0, _081415AC @ =gUnknown_841B747
bl sub_81417E4
movs r0, 0
movs r1, 0x3
bl CopyWindowToVram
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
b _081415BE
.align 2, 0
_081415AC: .4byte gUnknown_841B747
_081415B0:
bl IsDma3ManagerBusyWithBgCopy
lsls r0, 24
cmp r0, 0
bne _081415BE
movs r0, 0
b _081415C0
_081415BE:
movs r0, 0x1
_081415C0:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8141584
thumb_func_start sub_81415C8
sub_81415C8: @ 81415C8
push {r4,lr}
adds r4, r0, 0
ldrb r0, [r4]
cmp r0, 0
beq _081415D8
cmp r0, 0x1
beq _081415F8
b _08141606
_081415D8:
ldr r0, _081415F4 @ =gUnknown_841B76B
bl sub_81417E4
movs r0, 0
bl sub_8141AD8
movs r0, 0
movs r1, 0x3
bl CopyWindowToVram
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
b _08141606
.align 2, 0
_081415F4: .4byte gUnknown_841B76B
_081415F8:
bl IsDma3ManagerBusyWithBgCopy
lsls r0, 24
cmp r0, 0
bne _08141606
movs r0, 0
b _08141608
_08141606:
movs r0, 0x1
_08141608:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_81415C8
thumb_func_start sub_8141610
sub_8141610: @ 8141610
push {r4,lr}
adds r4, r0, 0
ldrb r0, [r4]
cmp r0, 0
beq _08141620
cmp r0, 0x1
beq _08141638
b _08141646
_08141620:
bl sub_8141828
bl sub_8141B18
movs r0, 0
movs r1, 0x3
bl CopyWindowToVram
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
b _08141646
_08141638:
bl IsDma3ManagerBusyWithBgCopy
lsls r0, 24
cmp r0, 0
bne _08141646
movs r0, 0
b _08141648
_08141646:
movs r0, 0x1
_08141648:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8141610
thumb_func_start sub_8141650
sub_8141650: @ 8141650
push {r4,lr}
adds r4, r0, 0
ldrb r2, [r4]
cmp r2, 0
beq _08141660
cmp r2, 0x1
beq _08141678
b _08141686
_08141660:
adds r0, r1, 0
adds r0, 0x20
ldrb r0, [r0]
bl sub_8141BA0
movs r0, 0x2
bl CopyBgTilemapBufferToVram
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
b _08141686
_08141678:
bl IsDma3ManagerBusyWithBgCopy
lsls r0, 24
cmp r0, 0
bne _08141686
movs r0, 0
b _08141688
_08141686:
movs r0, 0x1
_08141688:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8141650
thumb_func_start sub_8141690
sub_8141690: @ 8141690
push {r4,lr}
adds r4, r0, 0
ldrb r0, [r4]
cmp r0, 0
beq _081416A0
cmp r0, 0x1
beq _081416B2
b _081416C0
_081416A0:
bl sub_8141BE4
movs r0, 0x2
bl CopyBgTilemapBufferToVram
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
b _081416C0
_081416B2:
bl IsDma3ManagerBusyWithBgCopy
lsls r0, 24
cmp r0, 0
bne _081416C0
movs r0, 0
b _081416C2
_081416C0:
movs r0, 0x1
_081416C2:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8141690
thumb_func_start sub_81416C8
sub_81416C8: @ 81416C8
push {r4-r6,lr}
adds r6, r0, 0
adds r5, r1, 0
ldrb r4, [r6]
cmp r4, 0x1
beq _08141724
cmp r4, 0x1
bgt _081416DE
cmp r4, 0
beq _081416E4
b _0814175A
_081416DE:
cmp r4, 0x2
beq _08141756
b _0814175A
_081416E4:
movs r1, 0x80
lsls r1, 6
movs r0, 0
bl SetGpuRegBits
movs r0, 0x48
movs r1, 0x3F
bl SetGpuReg
movs r0, 0x4A
movs r1, 0x3D
bl SetGpuReg
movs r0, 0x40
movs r1, 0
bl SetGpuReg
movs r0, 0x42
movs r1, 0xA0
bl SetGpuReg
movs r0, 0x1
bl ShowBg
movs r0, 0x6
bl PlaySE
str r4, [r5, 0x24]
ldrb r0, [r6]
adds r0, 0x1
strb r0, [r6]
b _0814175A
_08141724:
ldr r0, [r5, 0x24]
adds r0, 0x10
str r0, [r5, 0x24]
cmp r0, 0xFF
ble _0814173A
movs r0, 0x80
lsls r0, 1
str r0, [r5, 0x24]
ldrb r0, [r6]
adds r0, 0x1
strb r0, [r6]
_0814173A:
ldr r0, [r5, 0x24]
movs r1, 0x80
lsls r1, 1
subs r1, r0
lsls r1, 8
movs r0, 0x1
movs r2, 0
bl ChangeBgX
ldrh r1, [r5, 0x24]
movs r0, 0x40
bl SetGpuReg
b _0814175A
_08141756:
movs r0, 0
b _0814175C
_0814175A:
movs r0, 0x1
_0814175C:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_81416C8
thumb_func_start sub_8141764
sub_8141764: @ 8141764
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
ldrb r0, [r4]
cmp r0, 0x1
beq _08141790
cmp r0, 0x1
bgt _0814177A
cmp r0, 0
beq _08141784
b _081417DC
_0814177A:
cmp r0, 0x2
beq _081417C0
cmp r0, 0x3
beq _081417D8
b _081417DC
_08141784:
movs r0, 0x6
bl PlaySE
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
_08141790:
ldr r0, [r5, 0x24]
subs r0, 0x10
str r0, [r5, 0x24]
cmp r0, 0
bgt _081417A4
movs r0, 0
str r0, [r5, 0x24]
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
_081417A4:
ldr r0, [r5, 0x24]
movs r1, 0x80
lsls r1, 1
subs r1, r0
lsls r1, 8
movs r0, 0x1
movs r2, 0
bl ChangeBgX
ldrh r1, [r5, 0x24]
movs r0, 0x40
bl SetGpuReg
b _081417DC
_081417C0:
movs r0, 0x1
bl HideBg
movs r1, 0x80
lsls r1, 6
movs r0, 0
bl ClearGpuRegBits
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
b _081417DC
_081417D8:
movs r0, 0
b _081417DE
_081417DC:
movs r0, 0x1
_081417DE:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_8141764
thumb_func_start sub_81417E4
sub_81417E4: @ 81417E4
push {r4,lr}

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;
}