summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-12-31 19:58:37 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2017-12-31 19:58:37 -0500
commita357c07d83a3b90adf0353501cbc0f84f6eeeddc (patch)
tree345e5f31b1a221dc0bfd5bcf5d622947161d9e4d
parent26d22691dc88b3c9e61fa3612c46d3b24167d0eb (diff)
through sub_8105554
-rw-r--r--asm/slot_machine.s236
-rw-r--r--include/slot_machine.h10
-rw-r--r--src/field/slot_machine.c70
3 files changed, 71 insertions, 245 deletions
diff --git a/asm/slot_machine.s b/asm/slot_machine.s
index 83e89cc22..f043fb536 100644
--- a/asm/slot_machine.s
+++ b/asm/slot_machine.s
@@ -5,242 +5,6 @@
.text
- thumb_func_start sub_81053A0
-sub_81053A0: @ 81053A0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r1, 0xB8
- lsls r1, 1
- ldr r0, _0810544C @ =gSpriteTemplate_83ED4D4
- movs r2, 0x64
- movs r3, 0x9
- bl CreateSprite
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- ldr r7, _08105450 @ =gSprites
- adds r2, r0, r7
- adds r1, r2, 0
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r3, 0x2
- mov r10, r3
- mov r3, r10
- orrs r0, r3
- strb r0, [r1]
- ldrb r1, [r2, 0x5]
- movs r5, 0xD
- negs r5, r5
- adds r0, r5, 0
- ands r0, r1
- movs r1, 0x4
- mov r8, r1
- mov r3, r8
- orrs r0, r3
- strb r0, [r2, 0x5]
- ldr r0, _08105454 @ =gSubspriteTables_83ED7B4
- mov r9, r0
- adds r0, r2, 0
- mov r1, r9
- bl SetSubspriteTables
- ldr r6, _08105458 @ =gSharedMem
- adds r0, r6, 0
- adds r0, 0x4E
- strb r4, [r0]
- movs r1, 0x90
- lsls r1, 1
- ldr r0, _0810544C @ =gSpriteTemplate_83ED4D4
- movs r2, 0x68
- movs r3, 0x4
- bl CreateSprite
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r2, r0, r7
- adds r1, r2, 0
- adds r1, 0x3E
- ldrb r0, [r1]
- mov r3, r10
- orrs r0, r3
- strb r0, [r1]
- ldrb r0, [r2, 0x5]
- ands r5, r0
- mov r0, r8
- orrs r5, r0
- strb r5, [r2, 0x5]
- adds r0, r2, 0
- mov r1, r9
- bl SetSubspriteTables
- adds r6, 0x4F
- strb r4, [r6]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810544C: .4byte gSpriteTemplate_83ED4D4
-_08105450: .4byte gSprites
-_08105454: .4byte gSubspriteTables_83ED7B4
-_08105458: .4byte gSharedMem
- thumb_func_end sub_81053A0
-
- thumb_func_start sub_810545C
-sub_810545C: @ 810545C
- push {r4,lr}
- ldr r0, _081054A8 @ =gSpriteTemplate_83ED4EC
- movs r1, 0xB8
- lsls r1, 1
- movs r2, 0x4C
- movs r3, 0xB
- bl CreateSprite
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- ldr r1, _081054AC @ =gSprites
- adds r0, r1
- adds r3, r0, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r3]
- ldrb r2, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0, 0x5]
- ldr r1, _081054B0 @ =gSubspriteTables_83ED7D4
- bl SetSubspriteTables
- ldr r0, _081054B4 @ =gSharedMem
- adds r0, 0x40
- strb r4, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081054A8: .4byte gSpriteTemplate_83ED4EC
-_081054AC: .4byte gSprites
-_081054B0: .4byte gSubspriteTables_83ED7D4
-_081054B4: .4byte gSharedMem
- thumb_func_end sub_810545C
-
- thumb_func_start sub_81054B8
-sub_81054B8: @ 81054B8
- push {r4,r5,lr}
- ldr r4, _08105518 @ =gSharedMem
- adds r0, r4, 0
- adds r0, 0x40
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0810551C @ =gSprites
- adds r0, r1
- bl DestroySprite
- movs r5, 0
- adds r4, 0x49
-_081054D4:
- adds r0, r5, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0810551C @ =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1
- bls _081054D4
- movs r5, 0
- ldr r4, _08105520 @ =gSharedMem + 0x4B
-_081054F4:
- adds r0, r5, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0810551C @ =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _081054F4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08105518: .4byte gSharedMem
-_0810551C: .4byte gSprites
-_08105520: .4byte gSharedMem + 0x4B
- thumb_func_end sub_81054B8
-
- thumb_func_start sub_8105524
-sub_8105524: @ 8105524
- push {r4,r5,lr}
- movs r4, 0
- ldr r5, _0810554C @ =gSharedMem + 0x4E
-_0810552A:
- adds r0, r4, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08105550 @ =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- bls _0810552A
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810554C: .4byte gSharedMem + 0x4E
-_08105550: .4byte gSprites
- thumb_func_end sub_8105524
-
- thumb_func_start sub_8105554
-sub_8105554: @ 8105554
- push {lr}
- ldr r0, _08105570 @ =gSharedMem
- adds r0, 0x42
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08105574 @ =gSprites
- adds r0, r1
- bl DestroySprite
- pop {r0}
- bx r0
- .align 2, 0
-_08105570: .4byte gSharedMem
-_08105574: .4byte gSprites
- thumb_func_end sub_8105554
-
thumb_func_start sub_8105578
sub_8105578: @ 8105578
push {r4-r6,lr}
diff --git a/include/slot_machine.h b/include/slot_machine.h
index 78744d0e4..882ec6d52 100644
--- a/include/slot_machine.h
+++ b/include/slot_machine.h
@@ -30,15 +30,15 @@ struct SlotMachineEwramStruct {
/*0x3D*/ u8 unk3D;
/*0x3E*/ u8 unk3E;
/*0x3F*/ u8 unk3F;
- /*0x40*/ u8 filler40[2];
+ /*0x40*/ u8 unk40;
+ /*0x41*/ u8 unk41;
/*0x42*/ u8 unk42;
/*0x43*/ u8 unk43;
/*0x44*/ u8 unk44[5];
- /*0x49*/ u8 unk49;
- /*0x4A*/ u8 unk4A;
+ /*0x49*/ u8 unk49[2];
/*0x49*/ u8 unk4B[3];
- /*0x4E*/ u8 unk4E;
- /*0x4F*/ u8 filler4F[9];
+ /*0x4E*/ u8 unk4E[2];
+ /*0x50*/ u8 filler50[8];
/*0x58*/ u16 win0h;
/*0x5a*/ u16 win0v;
/*0x5c*/ u16 winIn;
diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c
index 3aaad9a8b..4b580839c 100644
--- a/src/field/slot_machine.c
+++ b/src/field/slot_machine.c
@@ -2821,7 +2821,7 @@ void sub_81048CC(struct Task *task)
sub_81056C0();
sub_8105804();
sub_8105854();
- gSprites[eSlotMachine->unk4E].invisible = TRUE;
+ gSprites[eSlotMachine->unk4E[0]].invisible = TRUE;
StartSpriteAnimIfDifferent(gSprites + eSlotMachine->unk3F, 5);
task->data[0]++;
task->data[4] = 4;
@@ -2845,7 +2845,7 @@ void sub_8104940(struct Task *task)
sub_81058C4();
sub_8105284();
sub_81059E8();
- gSprites[eSlotMachine->unk4E].invisible = FALSE;
+ gSprites[eSlotMachine->unk4E[0]].invisible = FALSE;
task->data[0]++;
task->data[5] = 0;
}
@@ -3203,14 +3203,14 @@ void sub_81051C0(void)
sprite->oam.priority = 1;
sprite->coordOffsetEnabled = TRUE;
SetSubspriteTables(sprite, gSubspriteTables_83ED73C);
- eSlotMachine->unk49 = spriteId;
+ eSlotMachine->unk49[0] = spriteId;
spriteId = CreateSprite(&gSpriteTemplate_83ED48C, 0x170, 0x54, 7);
sprite = gSprites + spriteId;
sprite->oam.priority = 1;
sprite->coordOffsetEnabled = TRUE;
SetSubspriteTables(sprite, gSubspriteTables_83ED75C);
- eSlotMachine->unk4A = spriteId;
+ eSlotMachine->unk49[1] = spriteId;
}
extern const struct SpriteTemplate gSpriteTemplate_83ED4A4;
@@ -3251,6 +3251,68 @@ void sub_810535C(struct Sprite *sprite)
StartSpriteAnimIfDifferent(sprite, sub_8102C48(r0 / 20));
}
+extern const struct SpriteTemplate gSpriteTemplate_83ED4D4;
+extern const struct SubspriteTable gSubspriteTables_83ED7B4[];
+
+void sub_81053A0(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4D4, 0x170, 0x64, 9);
+ struct Sprite *sprite = gSprites + spriteId;
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = 1;
+ SetSubspriteTables(sprite, gSubspriteTables_83ED7B4);
+ eSlotMachine->unk4E[0] = spriteId;
+
+ spriteId = CreateSprite(&gSpriteTemplate_83ED4D4, 0x120, 0x68, 4);
+ sprite = gSprites + spriteId;
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = 1;
+ SetSubspriteTables(sprite, gSubspriteTables_83ED7B4);
+ eSlotMachine->unk4E[1] = spriteId;
+}
+
+extern const struct SpriteTemplate gSpriteTemplate_83ED4EC;
+extern const struct SubspriteTable gSubspriteTables_83ED7D4[];
+
+void sub_810545C(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4EC, 0x170, 0x4c, 11);
+ struct Sprite *sprite = gSprites + spriteId;
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = 1;
+ SetSubspriteTables(sprite, gSubspriteTables_83ED7D4);
+ eSlotMachine->unk40 = spriteId;
+}
+
+void sub_81054B8(void)
+{
+ u8 i;
+
+ DestroySprite(gSprites + eSlotMachine->unk40);
+ for (i = 0; i < 2; i++)
+ {
+ DestroySprite(gSprites + eSlotMachine->unk49[i]);
+ }
+ for (i = 0; i < 3; i++)
+ {
+ DestroySprite(gSprites + eSlotMachine->unk4B[i]);
+ }
+}
+
+void sub_8105524(void)
+{
+ u8 i;
+ for (i = 0; i < 2; i++)
+ {
+ DestroySprite(gSprites + eSlotMachine->unk4E[i]);
+ }
+}
+
+void sub_8105554(void)
+{
+ DestroySprite(gSprites + eSlotMachine->unk42);
+}
+
asm(".section .text_b");
static void sub_8106448(void) {