summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-12-29 19:35:05 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2017-12-29 19:35:05 -0500
commitd05e72b6b269defef8d9b1bbce42adaf48f4ed8f (patch)
tree27bfc8067988772cf90939e751cf52f9b810fdcd
parent8e79fd9e13e42961cfb1de4c44714960ae3ac668 (diff)
through sub_8103E7C
-rw-r--r--asm/slot_machine.s239
-rw-r--r--include/slot_machine.h4
-rw-r--r--src/field/slot_machine.c98
3 files changed, 93 insertions, 248 deletions
diff --git a/asm/slot_machine.s b/asm/slot_machine.s
index 53423e9e4..500441c75 100644
--- a/asm/slot_machine.s
+++ b/asm/slot_machine.s
@@ -5,245 +5,6 @@
.text
- thumb_func_start sub_8103D00
-sub_8103D00: @ 8103D00
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08103D20 @ =gUnknown_083EDD08
- lsls r1, r0, 2
- adds r1, r2
- ldr r2, [r1]
- ldr r1, _08103D24 @ =gUnknown_083EDD30
- adds r0, r1
- ldrb r1, [r0]
- adds r0, r2, 0
- movs r2, 0x2
- bl LoadPalette
- pop {r0}
- bx r0
- .align 2, 0
-_08103D20: .4byte gUnknown_083EDD08
-_08103D24: .4byte gUnknown_083EDD30
- thumb_func_end sub_8103D00
-
- thumb_func_start sub_8103D28
-sub_8103D28: @ 8103D28
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08103D48 @ =gUnknown_083EDD1C
- lsls r1, r0, 2
- adds r1, r2
- ldr r2, [r1]
- ldr r1, _08103D4C @ =gUnknown_083EDD30
- adds r0, r1
- ldrb r1, [r0]
- adds r0, r2, 0
- movs r2, 0x2
- bl LoadPalette
- pop {r0}
- bx r0
- .align 2, 0
-_08103D48: .4byte gUnknown_083EDD1C
-_08103D4C: .4byte gUnknown_083EDD30
- thumb_func_end sub_8103D28
-
- thumb_func_start sub_8103D50
-sub_8103D50: @ 8103D50
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r1, r0, 24
- movs r4, 0
- ldr r0, _08103D84 @ =gUnknown_083EDD3B
- adds r0, r1, r0
- ldrb r0, [r0]
- cmp r4, r0
- bcs _08103D7C
- ldr r7, _08103D88 @ =gUnknown_083EDD35
- adds r6, r0, 0
- lsls r5, r1, 1
-_08103D68:
- adds r0, r4, r5
- adds r0, r7
- ldrb r0, [r0]
- bl sub_8103D00
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r6
- bcc _08103D68
-_08103D7C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08103D84: .4byte gUnknown_083EDD3B
-_08103D88: .4byte gUnknown_083EDD35
- thumb_func_end sub_8103D50
-
- thumb_func_start sub_8103D8C
-sub_8103D8C: @ 8103D8C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r1, r0, 24
- movs r4, 0
- ldr r0, _08103DC0 @ =gUnknown_083EDD3B
- adds r0, r1, r0
- ldrb r0, [r0]
- cmp r4, r0
- bcs _08103DB8
- ldr r7, _08103DC4 @ =gUnknown_083EDD35
- adds r6, r0, 0
- lsls r5, r1, 1
-_08103DA4:
- adds r0, r4, r5
- adds r0, r7
- ldrb r0, [r0]
- bl sub_8103D28
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r6
- bcc _08103DA4
-_08103DB8:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08103DC0: .4byte gUnknown_083EDD3B
-_08103DC4: .4byte gUnknown_083EDD35
- thumb_func_end sub_8103D8C
-
- thumb_func_start sub_8103DC8
-sub_8103DC8: @ 8103DC8
- push {r4-r6,lr}
- movs r4, 0
- ldr r6, _08103DF8 @ =gSprites
- ldr r5, _08103DFC @ =gSharedMem + 0x44
-_08103DD0:
- ldr r0, _08103E00 @ =sub_8103EE4
- bl CreateInvisibleSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- strh r4, [r1, 0x2E]
- adds r1, r4, r5
- strb r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x4
- bls _08103DD0
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08103DF8: .4byte gSprites
-_08103DFC: .4byte gSharedMem + 0x44
-_08103E00: .4byte sub_8103EE4
- thumb_func_end sub_8103DC8
-
- thumb_func_start sub_8103E04
-sub_8103E04: @ 8103E04
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08103E30 @ =gSharedMem
- adds r1, 0x44
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08103E34 @ =gSprites
- adds r0, r1
- movs r2, 0
- movs r1, 0x1
- strh r1, [r0, 0x30]
- movs r1, 0x4
- strh r1, [r0, 0x32]
- strh r2, [r0, 0x34]
- strh r2, [r0, 0x36]
- movs r1, 0x2
- strh r1, [r0, 0x38]
- strh r2, [r0, 0x3C]
- bx lr
- .align 2, 0
-_08103E30: .4byte gSharedMem
-_08103E34: .4byte gSprites
- thumb_func_end sub_8103E04
-
- thumb_func_start sub_8103E38
-sub_8103E38: @ 8103E38
- push {r4,r5,lr}
- movs r2, 0
- ldr r4, _08103E60 @ =gSharedMem + 0x44
- ldr r3, _08103E64 @ =gSprites
-_08103E40:
- adds r0, r2, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r3
- movs r5, 0x30
- ldrsh r0, [r1, r5]
- cmp r0, 0
- beq _08103E68
- movs r5, 0x32
- ldrsh r0, [r1, r5]
- cmp r0, 0
- beq _08103E68
- movs r0, 0
- b _08103E74
- .align 2, 0
-_08103E60: .4byte gSharedMem + 0x44
-_08103E64: .4byte gSprites
-_08103E68:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x4
- bls _08103E40
- movs r0, 0x1
-_08103E74:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8103E38
-
- thumb_func_start sub_8103E7C
-sub_8103E7C: @ 8103E7C
- push {r4,r5,lr}
- movs r4, 0
- ldr r5, _08103E94 @ =gSharedMem + 0x44
-_08103E82:
- adds r0, r4, r5
- ldrb r0, [r0]
- bl sub_8103EAC
- lsls r0, 24
- cmp r0, 0
- bne _08103E98
- movs r0, 0
- b _08103EA4
- .align 2, 0
-_08103E94: .4byte gSharedMem + 0x44
-_08103E98:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x4
- bls _08103E82
- movs r0, 0x1
-_08103EA4:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8103E7C
-
thumb_func_start sub_8103EAC
sub_8103EAC: @ 8103EAC
push {lr}
diff --git a/include/slot_machine.h b/include/slot_machine.h
index 203f3bbfc..b04ee6377 100644
--- a/include/slot_machine.h
+++ b/include/slot_machine.h
@@ -28,7 +28,9 @@ struct SlotMachineEwramStruct {
/*0x34*/ s16 unk34[3];
/*0x3A*/ u8 unk3A[3];
/*0x3D*/ u8 unk3D;
- /*0x3E*/ u8 filler3E[26];
+ /*0x3E*/ u8 filler3E[6];
+ /*0x44*/ u8 unk44[5];
+ /*0x49*/ u8 filler49[15];
/*0x58*/ u16 win0h;
/*0x5a*/ u16 win0v;
/*0x5c*/ u16 winIn;
diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c
index 922ab0c4d..82ac4e9e7 100644
--- a/src/field/slot_machine.c
+++ b/src/field/slot_machine.c
@@ -103,13 +103,15 @@ static void sub_8102E1C(u8 a0);
static bool8 sub_8102E40(u8 a0);
static void sub_8102E68(u8 taskId);
static void sub_8103C14(u8 a0);
-void sub_8103C48(u8 taskId);
-void sub_8103D50(u8 a0);
-void sub_8103D8C(u8 a0);
-void sub_8103DC8(void);
-void sub_8103E04(u8 a0);
-bool8 sub_8103E38(void);
-bool8 sub_8103E7C(void);
+static void sub_8103C48(u8 taskId);
+static void sub_8103D50(u8 a0);
+static void sub_8103D8C(u8 a0);
+static void sub_8103DC8(void);
+static void sub_8103E04(u8 a0);
+static bool8 sub_8103E38(void);
+static bool8 sub_8103E7C(void);
+bool8 sub_8103EAC(u8 a0);
+void sub_8103EE4(struct Sprite *sprite);
void sub_8103F70(void);
bool8 sub_8103FA0(void);
void sub_8104048(void);
@@ -2083,7 +2085,7 @@ static void sub_8103C14(u8 a0)
extern void (*const gUnknown_083ECBA0[])(struct Task *task, u8 taskId);
-void sub_8103C48(u8 taskId)
+static void sub_8103C48(u8 taskId)
{
gUnknown_083ECBA0[gTasks[taskId].data[0]](gTasks + taskId, taskId);
}
@@ -2108,6 +2110,86 @@ void sub_8103CC8(struct Task *task, u8 taskId)
DestroyTask(taskId);
}
+extern const u16 *const gUnknown_083EDD08[];
+extern const u16 *const gUnknown_083EDD1C[];
+extern const u8 gUnknown_083EDD30[];
+
+static void sub_8103D00(u8 a0)
+{
+ LoadPalette(gUnknown_083EDD08[a0], gUnknown_083EDD30[a0], 2);
+}
+
+static void sub_8103D28(u8 a0)
+{
+ LoadPalette(gUnknown_083EDD1C[a0], gUnknown_083EDD30[a0], 2);
+}
+
+extern const u8 gUnknown_083EDD3B[];
+extern const u8 gUnknown_083EDD35[][2];
+
+static void sub_8103D50(u8 a0)
+{
+ u8 i;
+ for (i = 0; i < gUnknown_083EDD3B[a0]; i++)
+ {
+ sub_8103D00(gUnknown_083EDD35[a0][i]);
+ }
+}
+
+static void sub_8103D8C(u8 a0)
+{
+ u8 i;
+ for (i = 0; i < gUnknown_083EDD3B[a0]; i++)
+ {
+ sub_8103D28(gUnknown_083EDD35[a0][i]);
+ }
+}
+
+static void sub_8103DC8(void)
+{
+ u8 i;
+ for (i = 0; i < 5; i++)
+ {
+ u8 spriteId = CreateInvisibleSprite(sub_8103EE4);
+ gSprites[spriteId].data[0] = i;
+ eSlotMachine->unk44[i] = spriteId;
+ }
+}
+
+static void sub_8103E04(u8 a0)
+{
+ struct Sprite *sprite = gSprites + eSlotMachine->unk44[a0];
+ sprite->data[1] = 1;
+ sprite->data[2] = 4;
+ sprite->data[3] = 0;
+ sprite->data[4] = 0;
+ sprite->data[5] = 2;
+ sprite->data[7] = 0;
+}
+
+static bool8 sub_8103E38(void)
+{
+ u8 i;
+ for (i = 0; i < 5; i++)
+ {
+ struct Sprite *sprite = gSprites + eSlotMachine->unk44[i];
+ if (sprite->data[1] && sprite->data[2])
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static bool8 sub_8103E7C(void)
+{
+ u8 i;
+ for (i = 0; i < 5; i++)
+ {
+ if (!sub_8103EAC(eSlotMachine->unk44[i]))
+ return FALSE;
+ }
+ return TRUE;
+}
+
asm(".section .text_a");
static void LoadSlotMachineWheelOverlay(void);