summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-12-21 16:32:23 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2017-12-21 16:32:23 -0500
commit2fe7a0e1542fa24731d233ed3b9e97ce4efa9c31 (patch)
tree9e2cb2bb2c752e92970f8f4c2c614f4437d40672
parent994bf583aa4d50b95f7b43179206639a81aa68ea (diff)
through sub_8102090
-rw-r--r--asm/slot_machine.s195
-rw-r--r--include/slot_machine.h2
-rw-r--r--src/field/slot_machine.c173
3 files changed, 139 insertions, 231 deletions
diff --git a/asm/slot_machine.s b/asm/slot_machine.s
index 2eb52583a..75202fc81 100644
--- a/asm/slot_machine.s
+++ b/asm/slot_machine.s
@@ -5,201 +5,6 @@
.text
- thumb_func_start sub_8101F60
-sub_8101F60: @ 8101F60
- push {lr}
- ldr r0, _08101F80 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _08101F78
- bl MenuZeroFillScreen
- ldr r1, _08101F84 @ =gSharedMem
- movs r0, 0x5
- strb r0, [r1]
-_08101F78:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08101F80: .4byte gMain
-_08101F84: .4byte gSharedMem
- thumb_func_end sub_8101F60
-
- thumb_func_start sub_8101F88
-sub_8101F88: @ 8101F88
- push {lr}
- bl sub_8104AEC
- lsls r0, 24
- cmp r0, 0
- beq _08101F9A
- ldr r1, _08101FA0 @ =gSharedMem
- movs r0, 0x5
- strb r0, [r1]
-_08101F9A:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08101FA0: .4byte gSharedMem
- thumb_func_end sub_8101F88
-
- thumb_func_start sub_8101FA4
-sub_8101FA4: @ 8101FA4
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8102484
- bl sub_8104DA4
- movs r0, 0
- bl sub_8102DEC
- movs r0, 0x1
- bl sub_8102DEC
- movs r0, 0x2
- bl sub_8102DEC
- movs r0, 0
- strh r0, [r4, 0x8]
- ldr r4, _08101FDC @ =gSharedMem
- ldrb r1, [r4, 0x4]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08101FE0
- bl sub_810430C
- movs r0, 0xA
- b _08101FE8
- .align 2, 0
-_08101FDC: .4byte gSharedMem
-_08101FE0:
- movs r0, 0x1
- bl sub_8104CAC
- movs r0, 0xB
-_08101FE8:
- strb r0, [r4]
- ldr r4, _08102004 @ =gSharedMem
- movs r0, 0x8
- strh r0, [r4, 0x1A]
- ldrb r0, [r4, 0xA]
- cmp r0, 0
- beq _08101FFC
- bl dp15_jump_random_unknown
- strh r0, [r4, 0x1A]
-_08101FFC:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08102004: .4byte gSharedMem
- thumb_func_end sub_8101FA4
-
- thumb_func_start sub_8102008
-sub_8102008: @ 8102008
- push {lr}
- bl sub_810432C
- lsls r0, 24
- cmp r0, 0
- beq _08102028
- movs r0, 0x1
- bl sub_8104CAC
- ldr r1, _08102030 @ =gSharedMem
- ldrb r2, [r1, 0x4]
- movs r0, 0xDF
- ands r0, r2
- strb r0, [r1, 0x4]
- movs r0, 0xB
- strb r0, [r1]
-_08102028:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08102030: .4byte gSharedMem
- thumb_func_end sub_8102008
-
- thumb_func_start sub_8102034
-sub_8102034: @ 8102034
- push {lr}
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x1D
- ble _0810204E
- bl sub_81024F0
- ldr r1, _08102054 @ =gSharedMem
- movs r0, 0xC
- strb r0, [r1]
-_0810204E:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08102054: .4byte gSharedMem
- thumb_func_end sub_8102034
-
- thumb_func_start sub_8102058
-sub_8102058: @ 8102058
- push {r4,lr}
- ldr r0, _08102088 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810207E
- movs r0, 0x18
- bl PlaySE
- ldr r4, _0810208C @ =gSharedMem
- ldrb r0, [r4, 0x18]
- bl sub_8102E1C
- ldrb r0, [r4, 0x18]
- bl sub_8103C14
- movs r0, 0xD
- strb r0, [r4]
-_0810207E:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08102088: .4byte gMain
-_0810208C: .4byte gSharedMem
- thumb_func_end sub_8102058
-
- thumb_func_start sub_8102090
-sub_8102090: @ 8102090
- push {r4,lr}
- ldr r4, _081020BC @ =gSharedMem
- ldrb r0, [r4, 0x18]
- bl sub_8102E40
- lsls r0, 24
- cmp r0, 0
- bne _081020C0
- ldrh r0, [r4, 0x18]
- adds r0, 0x1
- strh r0, [r4, 0x18]
- movs r1, 0xC
- strb r1, [r4]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _081020B6
- movs r0, 0xE
- strb r0, [r4]
-_081020B6:
- movs r0, 0x1
- b _081020C2
- .align 2, 0
-_081020BC: .4byte gSharedMem
-_081020C0:
- movs r0, 0
-_081020C2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8102090
-
thumb_func_start sub_81020C8
sub_81020C8: @ 81020C8
push {r4,lr}
diff --git a/include/slot_machine.h b/include/slot_machine.h
index 421946103..057713a1b 100644
--- a/include/slot_machine.h
+++ b/include/slot_machine.h
@@ -16,7 +16,7 @@ struct SlotMachineEwramStruct {
/*0x10*/ u16 unk10;
/*0x12*/ s16 bet;
/*0x14*/ u8 filler14[4];
- /*0x18*/ u16 unk18;
+ /*0x18*/ s16 unk18;
/*0x1A*/ u16 unk1A;
/*0x1C*/ s16 unk1C[3];
/*0x22*/ u16 unk22[3];
diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c
index 4cf93d5d6..94dd5b08f 100644
--- a/src/field/slot_machine.c
+++ b/src/field/slot_machine.c
@@ -34,30 +34,39 @@ extern const u16 gUnknown_08E95A18[];
extern u16 gUnknown_08E95AB8[];
extern u16 gUnknown_08E95FB8[];
-void sub_81018B8(void);
-void sub_8101954(void);
-void sub_81019B0(u8 arg0, void *ptr);
-void nullsub_67(u8 taskId);
-void sub_8101A28(void);
-void sub_8101A44(void);
-void sub_8101A8C(void);
-void sub_8101AE0(void);
-void sub_8101B04(void);
-void sub_8101BA4(void);
-void sub_8101C84(void);
-void sub_8101CA0(void);
-void sub_8101CC0(void);
-void sub_8101CD4(void);
-void sub_8101CEC(void);
-void sub_8101D04(void);
-void sub_8101D24(u8 taskId);
-
+static void sub_81018B8(void);
+static void sub_8101954(void);
+static void sub_81019B0(u8 arg0, void *ptr);
+static void nullsub_67(u8 taskId);
+static void sub_8101A28(void);
+static void sub_8101A44(void);
+static void sub_8101A8C(void);
+static void sub_8101AE0(void);
+static void sub_8101B04(void);
+static void sub_8101BA4(void);
+static void sub_8101C84(void);
+static void sub_8101CA0(void);
+static void sub_8101CC0(void);
+static void sub_8101CD4(void);
+static void sub_8101CEC(void);
+static void sub_8101D04(void);
+static void sub_8101D24(u8 taskId);
+
+void sub_8102484(void);
+void sub_81024F0(void);
void sub_8102DA8(void);
+void sub_8102DEC(u8 a0);
+void sub_8102E1C(u8 a0);
+bool8 sub_8102E40(u8 a0);
+void sub_8103C14(u8 a0);
void sub_8103D50(u8 a0);
void sub_8103DC8(void);
void sub_8104048(void);
void sub_810423C(u8 a0);
+void sub_810430C(void);
+bool8 sub_810432C(void);
void sub_8104AB8(u8 a0);
+bool8 sub_8104AEC(void);
void sub_8104C5C(void);
void sub_8104CAC(u8 arg0);
bool8 sub_8104E18(void);
@@ -67,6 +76,7 @@ void sub_81050C4(void);
void sub_81063C0(void);
void sub_8106448(void);
void sub_81064B8(void);
+u16 dp15_jump_random_unknown(void);
void PlaySlotMachine(u8 arg0, void *ptr)
{
@@ -74,7 +84,7 @@ void PlaySlotMachine(u8 arg0, void *ptr)
SetMainCallback2(sub_81018B8);
}
-void sub_81018B8(void)
+static void sub_81018B8(void)
{
switch (gMain.state)
{
@@ -113,7 +123,7 @@ void sub_81018B8(void)
}
}
-void sub_8101954(void)
+static void sub_8101954(void)
{
RunTasks();
AnimateSprites();
@@ -132,7 +142,7 @@ void sub_810196C(void)
REG_WINOUT = eSlotMachine->winOut;
}
-void sub_81019B0(u8 arg0, void *ptr)
+static void sub_81019B0(u8 arg0, void *ptr)
{
struct Task *task = &gTasks[CreateTask(nullsub_67, 0xFF)];
task->data[0] = arg0;
@@ -146,18 +156,18 @@ void sub_81019EC(void)
LoadWordFromTwoHalfwords((u16 *)(task->data + 1), (u32 *)&eSlotMachine->unk64);
}
-void nullsub_67(u8 taskId)
+static void nullsub_67(u8 taskId)
{
}
-void sub_8101A28(void)
+static void sub_8101A28(void)
{
SetVBlankCallback(NULL);
SetHBlankCallback(NULL);
REG_DISPCNT = 0;
}
-void sub_8101A44(void)
+static void sub_8101A44(void)
{
u16 imeBak;
SetVBlankCallback(sub_810196C);
@@ -169,17 +179,17 @@ void sub_8101A44(void)
REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON;
}
-void sub_8101A8C(void)
+static void sub_8101A8C(void)
{
DmaClearLarge16(3, (u16 *)(BG_VRAM), BG_VRAM_SIZE, 0x1000);
}
-void sub_8101AE0(void)
+static void sub_8101AE0(void)
{
DmaClear16(3, (u16 *)OAM, OAM_SIZE);
}
-void sub_8101B04(void)
+static void sub_8101B04(void)
{
REG_BG0CNT = 0;
REG_BG1CNT = 0;
@@ -205,7 +215,7 @@ void sub_8101B04(void)
extern const s16 gUnknown_083ECCF8[3][2];
-void sub_8101BA4(void)
+static void sub_8101BA4(void)
{
u8 i;
@@ -237,13 +247,13 @@ void sub_8101BA4(void)
}
}
-void sub_8101C84(void)
+static void sub_8101C84(void)
{
SetUpWindowConfig(&gWindowConfig_81E7128);
InitMenuWindow(&gWindowConfig_81E7128);
}
-void sub_8101CA0(void)
+static void sub_8101CA0(void)
{
ResetPaletteFade();
ResetSpriteData();
@@ -252,14 +262,14 @@ void sub_8101CA0(void)
ResetTasks();
}
-void sub_8101CC0(void)
+static void sub_8101CC0(void)
{
sub_8106448();
sub_81064B8();
sub_81063C0();
}
-void sub_8101CD4(void)
+static void sub_8101CD4(void)
{
sub_8104EA8();
sub_8104F8C();
@@ -267,7 +277,7 @@ void sub_8101CD4(void)
sub_81050C4();
}
-void sub_8101CEC(void)
+static void sub_8101CEC(void)
{
sub_8104048();
sub_8102DA8();
@@ -277,12 +287,12 @@ void sub_8101CEC(void)
extern bool8 (*const gUnknown_083ECAAC[])(struct Task *task);
-void sub_8101D04(void)
+static void sub_8101D04(void)
{
sub_8101D24(CreateTask(sub_8101D24, 0));
}
-void sub_8101D24(u8 taskId)
+static void sub_8101D24(u8 taskId)
{
while (gUnknown_083ECAAC[eSlotMachine->state](gTasks + taskId));
}
@@ -404,6 +414,99 @@ bool8 sub_8101F44(struct Task *task)
return FALSE;
}
+bool8 sub_8101F60(struct Task *task)
+{
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ MenuZeroFillScreen();
+ eSlotMachine->state = 5;
+ }
+ return FALSE;
+}
+
+bool8 sub_8101F88(struct Task *task)
+{
+ if (sub_8104AEC())
+ {
+ eSlotMachine->state = 5;
+ }
+ return FALSE;
+}
+
+bool8 sub_8101FA4(struct Task *task)
+{
+ sub_8102484();
+ sub_8104DA4();
+ sub_8102DEC(0);
+ sub_8102DEC(1);
+ sub_8102DEC(2);
+ task->data[0] = 0;
+ if (eSlotMachine->unk04 & 0x20)
+ {
+ sub_810430C();
+ eSlotMachine->state = 10;
+ }
+ else
+ {
+ sub_8104CAC(1);
+ eSlotMachine->state = 11;
+ }
+ eSlotMachine->unk1A = 8;
+ if (eSlotMachine->unk0A)
+ {
+ eSlotMachine->unk1A = dp15_jump_random_unknown();
+ }
+ return FALSE;
+}
+
+bool8 sub_8102008(struct Task *task)
+{
+ if (sub_810432C())
+ {
+ sub_8104CAC(1);
+ eSlotMachine->unk04 &= 0xDF;
+ eSlotMachine->state = 11;
+ }
+ return FALSE;
+}
+
+bool8 sub_8102034(struct Task *task)
+{
+ if (++task->data[0] >= 30)
+ {
+ sub_81024F0();
+ eSlotMachine->state = 12;
+ }
+ return FALSE;
+}
+
+bool8 sub_8102058(struct Task *task)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_JYUNI);
+ sub_8102E1C(eSlotMachine->unk18);
+ sub_8103C14(eSlotMachine->unk18);
+ eSlotMachine->state = 13;
+ }
+ return FALSE;
+}
+
+bool8 sub_8102090(struct Task *task)
+{
+ if (!sub_8102E40(eSlotMachine->unk18))
+ {
+ eSlotMachine->unk18++;
+ eSlotMachine->state = 12;
+ if (eSlotMachine->unk18 > 2)
+ {
+ eSlotMachine->state = 14;
+ }
+ return TRUE;
+ }
+ return FALSE;
+}
+
asm(".section .text_a");
static void LoadSlotMachineWheelOverlay(void);