slot_machine through sub_8141020
This commit is contained in:
@@ -5,369 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8140D7C
|
||||
sub_8140D7C: @ 8140D7C
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0xC
|
||||
adds r3, r0, 0
|
||||
movs r2, 0
|
||||
ldr r0, _08140E34 @ =gUnknown_203F3A4
|
||||
mov r8, r0
|
||||
_08140D90:
|
||||
movs r4, 0
|
||||
ldrsh r6, [r3, r4]
|
||||
movs r4, 0
|
||||
ldrsh r0, [r1, r4]
|
||||
lsls r0, 3
|
||||
mov r10, r0
|
||||
lsls r0, r2, 2
|
||||
adds r3, 0x2
|
||||
str r3, [sp]
|
||||
adds r1, 0x2
|
||||
str r1, [sp, 0x4]
|
||||
adds r1, r2, 0x1
|
||||
str r1, [sp, 0x8]
|
||||
adds r0, r2
|
||||
lsls r0, 2
|
||||
adds r2, r0
|
||||
mov r9, r2
|
||||
adds r5, r0, 0
|
||||
movs r7, 0x4
|
||||
_08140DB6:
|
||||
mov r2, r8
|
||||
ldr r1, [r2]
|
||||
adds r1, 0xC
|
||||
adds r1, r5
|
||||
ldr r0, [r1]
|
||||
mov r3, r10
|
||||
strh r3, [r0, 0x26]
|
||||
ldr r2, _08140E38 @ =gUnknown_8464926
|
||||
mov r4, r9
|
||||
adds r0, r6, r4
|
||||
adds r0, r2
|
||||
ldrb r4, [r0]
|
||||
ldr r0, [r1]
|
||||
adds r1, r4, 0
|
||||
bl StartSpriteAnim
|
||||
mov r1, r8
|
||||
ldr r0, [r1]
|
||||
adds r0, 0xC
|
||||
adds r0, r5
|
||||
ldr r0, [r0]
|
||||
adds r1, r4, 0
|
||||
bl StartSpriteAnim
|
||||
ldr r0, _08140E3C @ =gUnknown_8465608
|
||||
lsls r4, 1
|
||||
adds r4, r0
|
||||
ldrh r0, [r4]
|
||||
bl IndexOfSpritePaletteTag
|
||||
mov r2, r8
|
||||
ldr r1, [r2]
|
||||
adds r1, 0xC
|
||||
adds r1, r5
|
||||
ldr r3, [r1]
|
||||
lsls r0, 4
|
||||
ldrb r2, [r3, 0x5]
|
||||
movs r1, 0xF
|
||||
ands r1, r2
|
||||
orrs r1, r0
|
||||
strb r1, [r3, 0x5]
|
||||
adds r6, 0x1
|
||||
cmp r6, 0x14
|
||||
ble _08140E10
|
||||
movs r6, 0
|
||||
_08140E10:
|
||||
adds r5, 0x4
|
||||
subs r7, 0x1
|
||||
cmp r7, 0
|
||||
bge _08140DB6
|
||||
ldr r3, [sp]
|
||||
ldr r1, [sp, 0x4]
|
||||
ldr r2, [sp, 0x8]
|
||||
cmp r2, 0x2
|
||||
ble _08140D90
|
||||
add sp, 0xC
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08140E34: .4byte gUnknown_203F3A4
|
||||
_08140E38: .4byte gUnknown_8464926
|
||||
_08140E3C: .4byte gUnknown_8465608
|
||||
thumb_func_end sub_8140D7C
|
||||
|
||||
thumb_func_start sub_8140E40
|
||||
sub_8140E40: @ 8140E40
|
||||
push {lr}
|
||||
ldr r0, _08140E68 @ =0x04000006
|
||||
ldrh r0, [r0]
|
||||
adds r3, r0, 0
|
||||
subs r3, 0x2B
|
||||
cmp r3, 0x53
|
||||
bhi _08140E7C
|
||||
ldr r0, _08140E6C @ =gUnknown_203F3A4
|
||||
ldr r0, [r0]
|
||||
ldr r2, [r0, 0x70]
|
||||
ldr r1, _08140E70 @ =gUnknown_8465616
|
||||
lsls r0, r3, 1
|
||||
adds r0, r1
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r2]
|
||||
ldr r1, _08140E74 @ =0x04000054
|
||||
ldr r0, _08140E78 @ =gUnknown_84656D6
|
||||
adds r0, r3, r0
|
||||
ldrb r0, [r0]
|
||||
b _08140E8E
|
||||
.align 2, 0
|
||||
_08140E68: .4byte 0x04000006
|
||||
_08140E6C: .4byte gUnknown_203F3A4
|
||||
_08140E70: .4byte gUnknown_8465616
|
||||
_08140E74: .4byte 0x04000054
|
||||
_08140E78: .4byte gUnknown_84656D6
|
||||
_08140E7C:
|
||||
ldr r0, _08140E94 @ =gUnknown_203F3A4
|
||||
ldr r0, [r0]
|
||||
ldr r1, [r0, 0x70]
|
||||
movs r2, 0x80
|
||||
lsls r2, 1
|
||||
adds r0, r2, 0
|
||||
strh r0, [r1]
|
||||
ldr r1, _08140E98 @ =0x04000054
|
||||
movs r0, 0
|
||||
_08140E8E:
|
||||
strh r0, [r1]
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08140E94: .4byte gUnknown_203F3A4
|
||||
_08140E98: .4byte 0x04000054
|
||||
thumb_func_end sub_8140E40
|
||||
|
||||
thumb_func_start sub_8140E9C
|
||||
sub_8140E9C: @ 8140E9C
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
movs r5, 0
|
||||
ldr r0, _08140F20 @ =gUnknown_846587C
|
||||
mov r10, r0
|
||||
ldr r0, _08140F24 @ =gUnknown_203F3A4
|
||||
mov r9, r0
|
||||
ldr r0, _08140F28 @ =gSprites
|
||||
mov r8, r0
|
||||
movs r7, 0x85
|
||||
lsls r7, 16
|
||||
movs r6, 0xAA
|
||||
lsls r6, 15
|
||||
_08140EBC:
|
||||
asrs r1, r6, 16
|
||||
mov r0, r10
|
||||
movs r2, 0x1E
|
||||
movs r3, 0
|
||||
bl CreateSprite
|
||||
lsls r0, 24
|
||||
lsrs r2, r0, 24
|
||||
mov r0, r9
|
||||
ldr r1, [r0]
|
||||
lsls r4, r5, 2
|
||||
adds r1, 0x48
|
||||
adds r1, r4
|
||||
lsls r0, r2, 4
|
||||
adds r0, r2
|
||||
lsls r0, 2
|
||||
add r0, r8
|
||||
str r0, [r1]
|
||||
asrs r1, r7, 16
|
||||
mov r0, r10
|
||||
movs r2, 0x1E
|
||||
movs r3, 0
|
||||
bl CreateSprite
|
||||
lsls r0, 24
|
||||
lsrs r2, r0, 24
|
||||
mov r0, r9
|
||||
ldr r1, [r0]
|
||||
adds r1, 0x58
|
||||
adds r1, r4
|
||||
lsls r0, r2, 4
|
||||
adds r0, r2
|
||||
lsls r0, 2
|
||||
add r0, r8
|
||||
str r0, [r1]
|
||||
movs r0, 0xE0
|
||||
lsls r0, 11
|
||||
adds r7, r0
|
||||
adds r6, r0
|
||||
adds r5, 0x1
|
||||
cmp r5, 0x3
|
||||
ble _08140EBC
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08140F20: .4byte gUnknown_846587C
|
||||
_08140F24: .4byte gUnknown_203F3A4
|
||||
_08140F28: .4byte gSprites
|
||||
thumb_func_end sub_8140E9C
|
||||
|
||||
thumb_func_start sub_8140F2C
|
||||
sub_8140F2C: @ 8140F2C
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
bl GetCoins
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
mov r9, r0
|
||||
bl sub_8140BDC
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
mov r8, r0
|
||||
movs r6, 0xFA
|
||||
lsls r6, 2
|
||||
movs r7, 0
|
||||
ldr r0, _08140FC0 @ =gUnknown_203F3A4
|
||||
mov r10, r0
|
||||
_08140F54:
|
||||
mov r0, r9
|
||||
adds r1, r6, 0
|
||||
bl __divsi3
|
||||
adds r4, r0, 0
|
||||
mov r1, r10
|
||||
ldr r0, [r1]
|
||||
lsls r5, r7, 2
|
||||
adds r0, 0x48
|
||||
adds r0, r5
|
||||
ldr r0, [r0]
|
||||
lsls r1, r4, 24
|
||||
lsrs r1, 24
|
||||
bl StartSpriteAnim
|
||||
adds r0, r4, 0
|
||||
muls r0, r6
|
||||
mov r1, r9
|
||||
subs r1, r0
|
||||
mov r9, r1
|
||||
mov r0, r8
|
||||
adds r1, r6, 0
|
||||
bl __divsi3
|
||||
adds r4, r0, 0
|
||||
mov r1, r10
|
||||
ldr r0, [r1]
|
||||
adds r0, 0x58
|
||||
adds r0, r5
|
||||
ldr r0, [r0]
|
||||
lsls r1, r4, 24
|
||||
lsrs r1, 24
|
||||
bl StartSpriteAnim
|
||||
adds r0, r4, 0
|
||||
muls r0, r6
|
||||
mov r1, r8
|
||||
subs r1, r0
|
||||
mov r8, r1
|
||||
adds r0, r6, 0
|
||||
movs r1, 0xA
|
||||
bl __divsi3
|
||||
adds r6, r0, 0
|
||||
adds r7, 0x1
|
||||
cmp r7, 0x3
|
||||
ble _08140F54
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08140FC0: .4byte gUnknown_203F3A4
|
||||
thumb_func_end sub_8140F2C
|
||||
|
||||
thumb_func_start sub_8140FC4
|
||||
sub_8140FC4: @ 8140FC4
|
||||
push {r4-r6,lr}
|
||||
ldr r6, _08141014 @ =gUnknown_84658D8
|
||||
adds r0, r6, 0
|
||||
movs r1, 0x10
|
||||
movs r2, 0x88
|
||||
movs r3, 0x1
|
||||
bl CreateSprite
|
||||
lsls r0, 24
|
||||
lsrs r2, r0, 24
|
||||
ldr r5, _08141018 @ =gUnknown_203F3A4
|
||||
ldr r1, [r5]
|
||||
lsls r0, r2, 4
|
||||
adds r0, r2
|
||||
lsls r0, 2
|
||||
ldr r4, _0814101C @ =gSprites
|
||||
adds r0, r4
|
||||
str r0, [r1, 0x68]
|
||||
adds r0, r6, 0
|
||||
movs r1, 0xE0
|
||||
movs r2, 0x88
|
||||
movs r3, 0x1
|
||||
bl CreateSprite
|
||||
lsls r0, 24
|
||||
lsrs r2, r0, 24
|
||||
ldr r1, [r5]
|
||||
lsls r0, r2, 4
|
||||
adds r0, r2
|
||||
lsls r0, 2
|
||||
adds r0, r4
|
||||
str r0, [r1, 0x6C]
|
||||
adds r0, 0x3F
|
||||
ldrb r1, [r0]
|
||||
movs r2, 0x1
|
||||
orrs r1, r2
|
||||
strb r1, [r0]
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08141014: .4byte gUnknown_84658D8
|
||||
_08141018: .4byte gUnknown_203F3A4
|
||||
_0814101C: .4byte gSprites
|
||||
thumb_func_end sub_8140FC4
|
||||
|
||||
thumb_func_start sub_8141020
|
||||
sub_8141020: @ 8141020
|
||||
push {r4-r6,lr}
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
movs r4, 0
|
||||
ldr r6, _08141048 @ =gUnknown_203F3A4
|
||||
_0814102A:
|
||||
ldr r0, [r6]
|
||||
lsls r1, r4, 2
|
||||
adds r0, 0x68
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
adds r1, r5, 0
|
||||
bl StartSpriteAnim
|
||||
adds r4, 0x1
|
||||
cmp r4, 0x1
|
||||
ble _0814102A
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08141048: .4byte gUnknown_203F3A4
|
||||
thumb_func_end sub_8141020
|
||||
|
||||
thumb_func_start sub_814104C
|
||||
sub_814104C: @ 814104C
|
||||
push {r4,lr}
|
||||
|
||||
+117
-12
@@ -38,12 +38,14 @@ struct SlotMachineGfxManager
|
||||
{
|
||||
u32 field_00[3];
|
||||
struct Sprite * field_0C[3][5];
|
||||
u8 filler_4C[0x28];
|
||||
u32 field_70;
|
||||
struct Sprite * field_48[4];
|
||||
struct Sprite * field_58[4];
|
||||
struct Sprite * field_68[2];
|
||||
vu16 * field_70;
|
||||
};
|
||||
|
||||
EWRAM_DATA struct SlotMachineState * sSlotMachineState = NULL;
|
||||
EWRAM_DATA struct SlotMachineGfxManager * gUnknown_203F3A4 = NULL;
|
||||
EWRAM_DATA struct SlotMachineGfxManager * sSlotMachineGfxManager = NULL;
|
||||
|
||||
void sub_813F84C(struct SlotMachineState * ptr);
|
||||
void sub_813F898(void);
|
||||
@@ -71,7 +73,7 @@ void sub_81409B4(void);
|
||||
void sub_8140A70(void);
|
||||
u16 sub_8140A80(void);
|
||||
void sub_8140C6C(struct SlotMachineGfxManager * manager);
|
||||
void sub_8140D7C(s16 *, s16 *);
|
||||
void sub_8140D7C(const s16 *, const s16 *);
|
||||
bool32 sub_814104C(void);
|
||||
void sub_8141094(void);
|
||||
void sub_8141148(u16 a0, u8 a1);
|
||||
@@ -195,6 +197,8 @@ const u8 gUnknown_84656D6[] = {
|
||||
};
|
||||
|
||||
extern const struct SpriteTemplate gUnknown_84657E4;
|
||||
extern const struct SpriteTemplate gUnknown_846587C;
|
||||
extern const struct SpriteTemplate gUnknown_84658D8;
|
||||
|
||||
void PlaySlotMachine(u16 machineIdx, MainCallback savedCallback)
|
||||
{
|
||||
@@ -1411,19 +1415,19 @@ bool32 sub_8140C0C(void)
|
||||
for (i = 0; i < NELEMS(gUnknown_84655B0); i++)
|
||||
LoadCompressedObjectPic(&gUnknown_84655B0[i]);
|
||||
LoadSpritePalettes(gUnknown_84655C8);
|
||||
gUnknown_203F3A4 = Alloc(sizeof(*gUnknown_203F3A4));
|
||||
if (gUnknown_203F3A4 == NULL)
|
||||
sSlotMachineGfxManager = Alloc(sizeof(*sSlotMachineGfxManager));
|
||||
if (sSlotMachineGfxManager == NULL)
|
||||
return FALSE;
|
||||
sub_8140C6C(gUnknown_203F3A4);
|
||||
sub_8140C6C(sSlotMachineGfxManager);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void sub_8140C50(void)
|
||||
{
|
||||
if (gUnknown_203F3A4 != NULL)
|
||||
if (sSlotMachineGfxManager != NULL)
|
||||
{
|
||||
Free(gUnknown_203F3A4);
|
||||
gUnknown_203F3A4 = NULL;
|
||||
Free(sSlotMachineGfxManager);
|
||||
sSlotMachineGfxManager = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1461,8 +1465,109 @@ void sub_8140CA0(void)
|
||||
sprite->data[2] = j;
|
||||
sprite->data[3] = 0;
|
||||
sprite->oam.matrixNum = 0;
|
||||
gUnknown_203F3A4->field_0C[i][j] = sprite;
|
||||
gUnknown_203F3A4->field_70 = 0x07000006;
|
||||
sSlotMachineGfxManager->field_0C[i][j] = sprite;
|
||||
sSlotMachineGfxManager->field_70 = (vu16 *)(OAM + 0 * sizeof(struct OamData) + offsetof(struct OamData, affineParam));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8140D7C(const s16 * a0, const s16 * a1)
|
||||
{
|
||||
s32 i, j;
|
||||
s32 r6, r10;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
r6 = *a0;
|
||||
r10 = *a1 * 8;
|
||||
for (j = 0; j < 5; j++)
|
||||
{
|
||||
sSlotMachineGfxManager->field_0C[i][j]->pos2.y = r10;
|
||||
{
|
||||
s32 r4 = gUnknown_8464926[i][r6];
|
||||
struct Sprite * sprite = sSlotMachineGfxManager->field_0C[i][j];
|
||||
StartSpriteAnim(sprite, r4);
|
||||
}
|
||||
{
|
||||
s32 r4 = gUnknown_8464926[i][r6];
|
||||
struct Sprite * sprite = sSlotMachineGfxManager->field_0C[i][j];
|
||||
StartSpriteAnim(sprite, r4);
|
||||
}
|
||||
sSlotMachineGfxManager->field_0C[i][j]->oam.paletteNum = IndexOfSpritePaletteTag(gUnknown_8465608[gUnknown_8464926[i][r6]]);
|
||||
r6++;
|
||||
if (r6 >= 21)
|
||||
r6 = 0;
|
||||
}
|
||||
a0++;
|
||||
a1++;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8140E40(void)
|
||||
{
|
||||
s32 vcount = REG_VCOUNT - 0x2B;
|
||||
if (vcount >= 0 && vcount < 0x54)
|
||||
{
|
||||
*sSlotMachineGfxManager->field_70 = gUnknown_8465616[vcount];
|
||||
REG_BLDY = gUnknown_84656D6[vcount];
|
||||
}
|
||||
else
|
||||
{
|
||||
*sSlotMachineGfxManager->field_70 = 0x100;
|
||||
REG_BLDY = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8140E9C(void)
|
||||
{
|
||||
s32 i;
|
||||
s32 spriteId;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
spriteId = CreateSprite(&gUnknown_846587C, 0x55 + 7 * i, 30, 0);
|
||||
sSlotMachineGfxManager->field_48[i] = &gSprites[spriteId];
|
||||
spriteId = CreateSprite(&gUnknown_846587C, 0x85 + 7 * i, 30, 0);
|
||||
sSlotMachineGfxManager->field_58[i] = &gSprites[spriteId];
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8140F2C(void)
|
||||
{
|
||||
s32 coins = GetCoins();
|
||||
s32 payout = sub_8140BDC();
|
||||
s32 i;
|
||||
s32 divisor = 1000;
|
||||
s32 quotient;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
quotient = coins / divisor;
|
||||
StartSpriteAnim(sSlotMachineGfxManager->field_48[i], quotient);
|
||||
coins -= quotient * divisor;
|
||||
quotient = payout / divisor;
|
||||
StartSpriteAnim(sSlotMachineGfxManager->field_58[i], quotient);
|
||||
payout -= quotient * divisor;
|
||||
divisor /= 10;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8140FC4(void)
|
||||
{
|
||||
s32 spriteId;
|
||||
|
||||
spriteId = CreateSprite(&gUnknown_84658D8, 0x10, 0x88, 1);
|
||||
sSlotMachineGfxManager->field_68[0] = &gSprites[spriteId];
|
||||
spriteId = CreateSprite(&gUnknown_84658D8, 0xE0, 0x88, 1);
|
||||
sSlotMachineGfxManager->field_68[1] = &gSprites[spriteId];
|
||||
sSlotMachineGfxManager->field_68[1]->hFlip = TRUE;
|
||||
}
|
||||
|
||||
void sub_8141020(u8 a0)
|
||||
{
|
||||
s32 i;
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
StartSpriteAnim(sSlotMachineGfxManager->field_68[i], a0);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user