diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/field/slot_machine.c | 98 |
1 files changed, 90 insertions, 8 deletions
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); |