summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-05-26 11:34:02 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-05-26 11:34:02 -0400
commitc37b93e8a6973e0f2cecbbc3eef628a1709b298a (patch)
tree4dfc07e838442abd0617fab6adc375937815935d
parent36fc72f25e178d53342acff66870e518ed7a144a (diff)
slot_machine through sub_8141764
-rw-r--r--asm/slot_machine.s498
-rw-r--r--src/slot_machine.c245
2 files changed, 244 insertions, 499 deletions
diff --git a/asm/slot_machine.s b/asm/slot_machine.s
index 3240a8045..5dbf01acc 100644
--- a/asm/slot_machine.s
+++ b/asm/slot_machine.s
@@ -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}
diff --git a/src/slot_machine.c b/src/slot_machine.c
index bf0cb8020..93714311c 100644
--- a/src/slot_machine.c
+++ b/src/slot_machine.c
@@ -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;
+}