diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-12-31 20:18:22 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-12-31 20:18:22 -0500 |
commit | 39d2d1f37c62ffc458c82943fbfceb86959ef1a3 (patch) | |
tree | 9139d0217e012a078a899ab927c9a5abb2e0df67 | |
parent | a357c07d83a3b90adf0353501cbc0f84f6eeeddc (diff) |
through sub_81056C0
-rw-r--r-- | asm/slot_machine.s | 197 | ||||
-rw-r--r-- | include/slot_machine.h | 3 | ||||
-rw-r--r-- | src/field/slot_machine.c | 61 |
3 files changed, 63 insertions, 198 deletions
diff --git a/asm/slot_machine.s b/asm/slot_machine.s index f043fb536..5518d4395 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -5,203 +5,6 @@ .text - thumb_func_start sub_8105578 -sub_8105578: @ 8105578 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - ldr r0, _0810561C @ =gSpriteTemplate_83ED504 - mov r10, r0 - movs r1, 0x98 - movs r2, 0x20 - movs r3, 0x5 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r2, _08105620 @ =gSprites - mov r9, r2 - adds r3, r1, r2 - ldrb r2, [r3, 0x5] - movs r4, 0xD - negs r4, r4 - adds r1, r4, 0 - ands r1, r2 - movs r2, 0x4 - mov r8, r2 - mov r2, r8 - orrs r1, r2 - strb r1, [r3, 0x5] - adds r5, r3, 0 - adds r5, 0x3F - ldrb r1, [r5] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r5] - ldr r5, _08105624 @ =gSharedMem - adds r1, r5, 0 - adds r1, 0x50 - strb r0, [r1] - movs r0, 0x8 - strh r0, [r3, 0x2E] - ldr r0, _08105628 @ =0x0000ffff - strh r0, [r3, 0x30] - movs r0, 0x1 - negs r0, r0 - strh r0, [r3, 0x32] - movs r6, 0x20 - strh r6, [r3, 0x3C] - mov r0, r10 - movs r1, 0xB8 - movs r2, 0x20 - movs r3, 0x5 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - mov r2, r9 - adds r3, r1, r2 - ldrb r1, [r3, 0x5] - ands r4, r1 - mov r1, r8 - orrs r4, r1 - strb r4, [r3, 0x5] - adds r5, 0x51 - strb r0, [r5] - movs r0, 0x1 - strh r0, [r3, 0x30] - subs r0, 0x2 - strh r0, [r3, 0x32] - strh r6, [r3, 0x3C] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0810561C: .4byte gSpriteTemplate_83ED504 -_08105620: .4byte gSprites -_08105624: .4byte gSharedMem -_08105628: .4byte 0x0000ffff - thumb_func_end sub_8105578 - - thumb_func_start sub_810562C -sub_810562C: @ 810562C - push {r4,lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - movs r1, 0x2E - ldrsh r4, [r2, r1] - cmp r4, 0 - beq _08105650 - subs r0, 0x1 - movs r1, 0 - strh r0, [r2, 0x2E] - strh r1, [r2, 0x24] - strh r1, [r2, 0x26] - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - b _08105682 -_08105650: - adds r3, r2, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - ldrh r0, [r2, 0x30] - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x32] - ldrh r1, [r2, 0x26] - adds r0, r1 - strh r0, [r2, 0x26] - ldrh r0, [r2, 0x34] - adds r0, 0x1 - strh r0, [r2, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _08105682 - ldrh r0, [r2, 0x3C] - strh r0, [r2, 0x2E] - strh r4, [r2, 0x34] -_08105682: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_810562C - - thumb_func_start sub_8105688 -sub_8105688: @ 8105688 - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - ldr r4, _081056B8 @ =gSprites - ldr r3, _081056BC @ =gSharedMem - adds r1, r3, 0 - adds r1, 0x50 - ldrb r2, [r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - strh r0, [r1, 0x3C] - adds r3, 0x51 - ldrb r2, [r3] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - strh r0, [r1, 0x3C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081056B8: .4byte gSprites -_081056BC: .4byte gSharedMem - thumb_func_end sub_8105688 - - thumb_func_start sub_81056C0 -sub_81056C0: @ 81056C0 - push {r4,r5,lr} - movs r4, 0 - ldr r5, _081056E8 @ =gSharedMem + 0x50 -_081056C6: - adds r0, r4, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _081056EC @ =gSprites - adds r0, r1 - bl DestroySprite - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1 - bls _081056C6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081056E8: .4byte gSharedMem + 0x50 -_081056EC: .4byte gSprites - thumb_func_end sub_81056C0 - thumb_func_start sub_81056F0 sub_81056F0: @ 81056F0 push {r4-r6,lr} diff --git a/include/slot_machine.h b/include/slot_machine.h index 882ec6d52..7d7d8a24d 100644 --- a/include/slot_machine.h +++ b/include/slot_machine.h @@ -38,7 +38,8 @@ struct SlotMachineEwramStruct { /*0x49*/ u8 unk49[2]; /*0x49*/ u8 unk4B[3]; /*0x4E*/ u8 unk4E[2]; - /*0x50*/ u8 filler50[8]; + /*0x50*/ u8 unk50[2]; + /*0x52*/ u8 filler52[6]; /*0x58*/ u16 win0h; /*0x5a*/ u16 win0v; /*0x5c*/ u16 winIn; diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 4b580839c..8ca873e84 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -3313,6 +3313,67 @@ void sub_8105554(void) DestroySprite(gSprites + eSlotMachine->unk42); } +extern const struct SpriteTemplate gSpriteTemplate_83ED504; + +void sub_8105578(void) +{ + u8 spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0x98, 0x20, 5); + struct Sprite *sprite = gSprites + spriteId; + sprite->oam.priority = 1; + sprite->hFlip = TRUE; + eSlotMachine->unk50[0] = spriteId; + sprite->data[0] = 8; + sprite->data[1] = -1; + sprite->data[2] = -1; + sprite->data[7] = 0x20; + + spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0xb8, 0x20, 5); + sprite = gSprites + spriteId; + sprite->oam.priority = 1; + eSlotMachine->unk50[1] = spriteId; + sprite->data[1] = 1; + sprite->data[2] = -1; + sprite->data[7] = 0x20; +} + +void sub_810562C(struct Sprite *sprite) +{ + if (sprite->data[0] != 0) + { + sprite->data[0]--; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->invisible = TRUE; + } + else + { + sprite->invisible = FALSE; + sprite->pos2.x += sprite->data[1]; + sprite->pos2.y += sprite->data[2]; + if (++sprite->data[3] >= 8) + { + sprite->data[0] = sprite->data[7]; + sprite->data[3] = 0; + } + } +} + +void sub_8105688(s16 a0) +{ + gSprites[eSlotMachine->unk50[0]].data[7] = a0; + gSprites[eSlotMachine->unk50[1]].data[7] = a0; +} + +void sub_81056C0(void) +{ + u8 i; + + for (i = 0; i < 2; i++) + { + DestroySprite(gSprites + eSlotMachine->unk50[i]); + } +} + asm(".section .text_b"); static void sub_8106448(void) { |