diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-07 21:29:31 -0500 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-07 21:29:31 -0500 |
commit | c81edda7956500731d66b55b5b3c98cada723347 (patch) | |
tree | fead1c24884b2ac5a285721c89e7b6adb055dea5 | |
parent | 40e4ef8f77caf47932d3b2c75481be9680eeea17 (diff) |
through sub_8101F80
-rw-r--r-- | asm/easy_chat_2.s | 516 | ||||
-rw-r--r-- | data/easy_chat_2.s | 64 | ||||
-rw-r--r-- | include/easy_chat.h | 2 | ||||
-rw-r--r-- | src/easy_chat_2.c | 2 | ||||
-rw-r--r-- | src/easy_chat_3.c | 268 |
5 files changed, 270 insertions, 582 deletions
diff --git a/asm/easy_chat_2.s b/asm/easy_chat_2.s index 5c66680e2..450329ec2 100644 --- a/asm/easy_chat_2.s +++ b/asm/easy_chat_2.s @@ -5,522 +5,6 @@ .text - thumb_func_start sub_8101BC0 -sub_8101BC0: @ 8101BC0 - push {r4-r6,lr} - mov r6, r8 - push {r6} - ldr r6, _08101C38 @ =gUnknown_843F9B8 - adds r0, r6, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x3 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r5, _08101C3C @ =gUnknown_203ACEC - ldr r2, [r5] - movs r1, 0xB7 - lsls r1, 2 - mov r8, r1 - add r2, r8 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r4, _08101C40 @ =gSprites - adds r1, r4 - str r1, [r2] - movs r0, 0x20 - strh r0, [r1, 0x24] - adds r0, r6, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x3 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r2, [r5] - movs r1, 0xB8 - lsls r1, 2 - adds r3, r2, r1 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - str r1, [r3] - ldr r0, _08101C44 @ =0x0000ffe0 - strh r0, [r1, 0x24] - add r2, r8 - ldr r1, [r2] - adds r1, 0x3F - ldrb r0, [r1] - movs r2, 0x1 - orrs r0, r2 - strb r0, [r1] - bl sub_8101C80 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08101C38: .4byte gUnknown_843F9B8 -_08101C3C: .4byte gUnknown_203ACEC -_08101C40: .4byte gSprites -_08101C44: .4byte 0x0000ffe0 - thumb_func_end sub_8101BC0 - - thumb_func_start sub_8101C48 -sub_8101C48: @ 8101C48 - push {r4-r6,lr} - ldr r5, _08101C7C @ =gUnknown_203ACEC - ldr r0, [r5] - movs r4, 0xB7 - lsls r4, 2 - adds r0, r4 - ldr r0, [r0] - bl DestroySprite - ldr r0, [r5] - adds r4, r0, r4 - movs r6, 0 - str r6, [r4] - movs r4, 0xB8 - lsls r4, 2 - adds r0, r4 - ldr r0, [r0] - bl DestroySprite - ldr r0, [r5] - adds r0, r4 - str r6, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08101C7C: .4byte gUnknown_203ACEC - thumb_func_end sub_8101C48 - - thumb_func_start sub_8101C80 -sub_8101C80: @ 8101C80 - push {r4,lr} - sub sp, 0x4 - ldr r0, _08101CC8 @ =gUnknown_203ACEC - ldr r1, [r0] - movs r2, 0xB7 - lsls r2, 2 - adds r0, r1, r2 - ldr r0, [r0] - cmp r0, 0 - beq _08101CDC - adds r2, 0x4 - adds r0, r1, r2 - ldr r0, [r0] - cmp r0, 0 - beq _08101CDC - mov r4, sp - adds r4, 0x1 - mov r0, sp - adds r1, r4, 0 - bl sub_80FFE08 - bl sub_80FFE1C - lsls r0, 24 - cmp r0, 0 - bne _08101CCC - mov r0, sp - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - movs r1, 0 - ldrsb r1, [r4, r1] - bl sub_8101CE4 - b _08101CDC - .align 2, 0 -_08101CC8: .4byte gUnknown_203ACEC -_08101CCC: - mov r0, sp - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - movs r1, 0 - ldrsb r1, [r4, r1] - bl sub_8101D9C -_08101CDC: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8101C80 - - thumb_func_start sub_8101CE4 -sub_8101CE4: @ 8101CE4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r1, 24 - lsrs r7, r1, 24 - lsls r0, 24 - asrs r5, r0, 24 - movs r0, 0x1 - negs r0, r0 - cmp r5, r0 - beq _08101D48 - ldr r0, _08101D44 @ =gUnknown_203ACEC - mov r8, r0 - ldr r0, [r0] - movs r4, 0xB7 - lsls r4, 2 - adds r0, r4 - ldr r0, [r0] - movs r1, 0 - bl StartSpriteAnim - mov r2, r8 - ldr r1, [r2] - adds r4, r1, r4 - ldr r2, [r4] - movs r0, 0x54 - muls r5, r0 - adds r5, 0x3A - strh r5, [r2, 0x20] - ldr r0, [r4] - lsls r4, r7, 24 - asrs r4, 20 - adds r4, 0x60 - strh r4, [r0, 0x22] - movs r6, 0xB8 - lsls r6, 2 - adds r1, r6 - ldr r0, [r1] - movs r1, 0 - bl StartSpriteAnim - mov r1, r8 - ldr r0, [r1] - adds r0, r6 - ldr r1, [r0] - strh r5, [r1, 0x20] - b _08101D8A - .align 2, 0 -_08101D44: .4byte gUnknown_203ACEC -_08101D48: - ldr r6, _08101D98 @ =gUnknown_203ACEC - ldr r0, [r6] - movs r4, 0xB7 - lsls r4, 2 - adds r0, r4 - ldr r0, [r0] - movs r1, 0x1 - bl StartSpriteAnim - ldr r1, [r6] - adds r4, r1, r4 - ldr r0, [r4] - movs r2, 0xD8 - mov r8, r2 - mov r2, r8 - strh r2, [r0, 0x20] - ldr r0, [r4] - lsls r4, r7, 24 - asrs r4, 20 - adds r4, 0x70 - strh r4, [r0, 0x22] - movs r5, 0xB8 - lsls r5, 2 - adds r1, r5 - ldr r0, [r1] - movs r1, 0x1 - bl StartSpriteAnim - ldr r0, [r6] - adds r0, r5 - ldr r1, [r0] - mov r2, r8 - strh r2, [r1, 0x20] -_08101D8A: - ldr r0, [r0] - strh r4, [r0, 0x22] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08101D98: .4byte gUnknown_203ACEC - thumb_func_end sub_8101CE4 - - thumb_func_start sub_8101D9C -sub_8101D9C: @ 8101D9C - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - lsrs r4, r0, 24 - asrs r2, r0, 24 - movs r0, 0x1 - negs r0, r0 - cmp r2, r0 - beq _08101E2C - lsls r0, r5, 24 - asrs r1, r0, 24 - lsls r0, r1, 4 - adds r0, 0x60 - mov r8, r0 - movs r7, 0x20 - cmp r2, 0x6 - bne _08101DCE - cmp r1, 0 - bne _08101DCE - movs r7, 0x9D - movs r6, 0x2 - b _08101DE4 -_08101DCE: - ldr r3, _08101E24 @ =gUnknown_843F958 - lsls r1, r4, 24 - lsrs r0, r1, 24 - movs r2, 0 - cmp r0, 0x6 - bhi _08101DDC - asrs r2, r1, 24 -_08101DDC: - adds r0, r2, r3 - ldrb r0, [r0] - adds r7, r0 - movs r6, 0x3 -_08101DE4: - ldr r5, _08101E28 @ =gUnknown_203ACEC - ldr r0, [r5] - movs r4, 0xB7 - lsls r4, 2 - adds r0, r4 - ldr r0, [r0] - adds r1, r6, 0 - bl StartSpriteAnim - ldr r1, [r5] - adds r4, r1, r4 - ldr r0, [r4] - strh r7, [r0, 0x20] - ldr r0, [r4] - mov r2, r8 - strh r2, [r0, 0x22] - movs r4, 0xB8 - lsls r4, 2 - adds r1, r4 - ldr r0, [r1] - adds r1, r6, 0 - bl StartSpriteAnim - ldr r0, [r5] - adds r0, r4 - ldr r1, [r0] - strh r7, [r1, 0x20] - ldr r0, [r0] - mov r1, r8 - strh r1, [r0, 0x22] - b _08101E72 - .align 2, 0 -_08101E24: .4byte gUnknown_843F958 -_08101E28: .4byte gUnknown_203ACEC -_08101E2C: - ldr r6, _08101E7C @ =gUnknown_203ACEC - ldr r0, [r6] - movs r4, 0xB7 - lsls r4, 2 - adds r0, r4 - ldr r0, [r0] - movs r1, 0x1 - bl StartSpriteAnim - ldr r1, [r6] - adds r4, r1, r4 - ldr r0, [r4] - movs r2, 0xD8 - mov r8, r2 - mov r2, r8 - strh r2, [r0, 0x20] - ldr r0, [r4] - lsls r4, r5, 24 - asrs r4, 20 - adds r4, 0x70 - strh r4, [r0, 0x22] - movs r5, 0xB8 - lsls r5, 2 - adds r1, r5 - ldr r0, [r1] - movs r1, 0x1 - bl StartSpriteAnim - ldr r0, [r6] - adds r0, r5 - ldr r1, [r0] - mov r2, r8 - strh r2, [r1, 0x20] - ldr r0, [r0] - strh r4, [r0, 0x22] -_08101E72: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08101E7C: .4byte gUnknown_203ACEC - thumb_func_end sub_8101D9C - - thumb_func_start sub_8101E80 -sub_8101E80: @ 8101E80 - push {lr} - ldr r0, _08101EC4 @ =gUnknown_843F968 - movs r1, 0 - movs r2, 0 - movs r3, 0x4 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08101EC8 @ =gUnknown_203ACEC - ldr r2, [r1] - movs r1, 0xB9 - lsls r1, 2 - adds r2, r1 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _08101ECC @ =gSprites - adds r1, r0 - str r1, [r2] - ldr r0, _08101ED0 @ =sub_8101ED4 - str r0, [r1, 0x1C] - ldrb r2, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - movs r2, 0x8 - orrs r0, r2 - strb r0, [r1, 0x5] - bl sub_8101F04 - pop {r0} - bx r0 - .align 2, 0 -_08101EC4: .4byte gUnknown_843F968 -_08101EC8: .4byte gUnknown_203ACEC -_08101ECC: .4byte gSprites -_08101ED0: .4byte sub_8101ED4 - thumb_func_end sub_8101E80 - - thumb_func_start sub_8101ED4 -sub_8101ED4: @ 8101ED4 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _08101EFA - movs r0, 0 - strh r0, [r1, 0x2E] - ldrh r0, [r1, 0x24] - adds r0, 0x1 - strh r0, [r1, 0x24] - lsls r0, 16 - cmp r0, 0 - ble _08101EFA - ldr r0, _08101F00 @ =0x0000fffa - strh r0, [r1, 0x24] -_08101EFA: - pop {r0} - bx r0 - .align 2, 0 -_08101F00: .4byte 0x0000fffa - thumb_func_end sub_8101ED4 - - thumb_func_start sub_8101F04 -sub_8101F04: @ 8101F04 - push {r4,lr} - sub sp, 0x4 - mov r4, sp - adds r4, 0x1 - mov r0, sp - adds r1, r4, 0 - bl sub_80FFE34 - mov r0, sp - movs r1, 0 - ldrsb r1, [r0, r1] - movs r0, 0xD - muls r0, r1 - adds r0, 0x3 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r1, 25 - movs r2, 0xB0 - lsls r2, 20 - adds r1, r2 - lsrs r1, 24 - bl sub_8101F40 - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8101F04 - - thumb_func_start sub_8101F40 -sub_8101F40: @ 8101F40 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - ldr r0, _08101F7C @ =gUnknown_203ACEC - ldr r0, [r0] - movs r1, 0xB9 - lsls r1, 2 - adds r3, r0, r1 - ldr r1, [r3] - cmp r1, 0 - beq _08101F74 - lsls r0, r2, 3 - adds r0, 0x4 - movs r2, 0 - strh r0, [r1, 0x20] - ldr r1, [r3] - adds r0, r4, 0x1 - lsls r0, 3 - adds r0, 0x1 - strh r0, [r1, 0x22] - ldr r0, [r3] - strh r2, [r0, 0x24] - ldr r0, [r3] - strh r2, [r0, 0x2E] -_08101F74: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08101F7C: .4byte gUnknown_203ACEC - thumb_func_end sub_8101F40 - - thumb_func_start sub_8101F80 -sub_8101F80: @ 8101F80 - push {r4,lr} - ldr r4, _08101FA8 @ =gUnknown_203ACEC - ldr r0, [r4] - movs r1, 0xB9 - lsls r1, 2 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - beq _08101FA2 - bl DestroySprite - ldr r0, [r4] - movs r1, 0xB9 - lsls r1, 2 - adds r0, r1 - movs r1, 0 - str r1, [r0] -_08101FA2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08101FA8: .4byte gUnknown_203ACEC - thumb_func_end sub_8101F80 - thumb_func_start sub_8101FAC sub_8101FAC: @ 8101FAC push {r4-r6,lr} diff --git a/data/easy_chat_2.s b/data/easy_chat_2.s index 8298f8cbb..854454238 100644 --- a/data/easy_chat_2.s +++ b/data/easy_chat_2.s @@ -7,70 +7,6 @@ .section .rodata .align 2 -gUnknown_843F980:: - .4byte 0xc0004000, 0x00000400 - -gUnknown_843F988:: - obj_image_anim_frame 0x0000, 0 - obj_image_anim_end - -gUnknown_843F990:: - obj_image_anim_frame 0x0020, 0 - obj_image_anim_end - -gUnknown_843F998:: - obj_image_anim_frame 0x0040, 0 - obj_image_anim_end - -gUnknown_843F9A0:: - obj_image_anim_frame 0x0060, 0 - obj_image_anim_end - -gUnknown_843F9A8:: - .4byte gUnknown_843F988 - .4byte gUnknown_843F990 - .4byte gUnknown_843F998 - .4byte gUnknown_843F9A0 - -gUnknown_843F9B8:: @ 843F9B8 sprite_template - spr_template 1, 1, gUnknown_843F980, gUnknown_843F9A8, NULL, gDummySpriteAffineAnimTable, sub_8101B20 - -gUnknown_843F9D0:: - .4byte 0xc0004000, 0x00000400 - -gUnknown_843F9D8:: - obj_image_anim_frame 0x0060, 0 - obj_image_anim_end - -gUnknown_843F9E0:: - obj_image_anim_frame 0x0040, 4 - obj_image_anim_frame 0x0020, 4 - obj_image_anim_end - -gUnknown_843F9EC:: - obj_image_anim_frame 0x0040, 4 - obj_image_anim_frame 0x0000, 4 - obj_image_anim_end - -gUnknown_843F9F8:: - obj_image_anim_frame 0x0040, 4 - obj_image_anim_frame 0x0060, 0 - obj_image_anim_end - -gUnknown_843FA04:: - obj_image_anim_frame 0x0040, 4 - obj_image_anim_end - -gUnknown_843FA0C:: - .4byte gUnknown_843F9D8 - .4byte gUnknown_843F9E0 - .4byte gUnknown_843F9EC - .4byte gUnknown_843F9F8 - .4byte gUnknown_843FA04 - -gUnknown_843FA20:: @ 843FA20 sprite_template - spr_template 4, 2, gUnknown_843F9D0, gUnknown_843FA0C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - gUnknown_843FA38:: .4byte 0xc0000000, 0x00000c00 diff --git a/include/easy_chat.h b/include/easy_chat.h index 12c096136..5e918c887 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -66,7 +66,7 @@ void GetEasyChatConfirmDeletionText(const u8 **str1, const u8 **str2); void sub_80FFE08(u8 *arg0, u8 *arg1); u8 sub_80FFE1C(void); u8 sub_80FFE28(void); -void sub_80FFE34(u8 *arg0, u8 *arg1); +void sub_80FFE34(s8 *arg0, s8 *arg1); u8 sub_80FFE48(void); u8 sub_80FFE54(void); u8 unref_sub_80FFE60(void); diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index 28c091dc6..409c1a0f7 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -1271,7 +1271,7 @@ u8 sub_80FFE28(void) return sEasyChatScreen->unk_0c; } -void sub_80FFE34(u8 *arg0, u8 *arg1) +void sub_80FFE34(s8 *arg0, s8 *arg1) { *arg0 = sEasyChatScreen->unk_10; *arg1 = sEasyChatScreen->unk_11; diff --git a/src/easy_chat_3.c b/src/easy_chat_3.c index 3f9b3c65b..419f32e56 100644 --- a/src/easy_chat_3.c +++ b/src/easy_chat_3.c @@ -110,8 +110,12 @@ void sub_8101BA8(void); void sub_8101BC0(void); void sub_8101C48(void); void sub_8101C80(void); +void sub_8101CE4(s8 a0, s8 a1); +void sub_8101D9C(s8 a0, s8 a1); void sub_8101E80(void); +void sub_8101ED4(struct Sprite * sprite); void sub_8101F04(void); +void sub_8101F40(u8 x, u8 y); void sub_8101F80(void); void sub_8101FAC(void); bool8 sub_8102018(void); @@ -333,6 +337,119 @@ const struct SpriteTemplate gUnknown_843F968 = { .callback = sub_8101B20 }; +const struct OamData gUnknown_843F980 = { + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .mosaic = FALSE, + .shape = SPRITE_SHAPE(64x32), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(64x32), + .tileNum = 0x000, + .priority = 1, + .paletteNum = 0 +}; + +const union AnimCmd gUnknown_843F988[] = { + ANIMCMD_FRAME(0x00, 0), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_843F990[] = { + ANIMCMD_FRAME(0x20, 0), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_843F998[] = { + ANIMCMD_FRAME(0x40, 0), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_843F9A0[] = { + ANIMCMD_FRAME(0x60, 0), + ANIMCMD_END +}; + +const union AnimCmd *const gUnknown_843F9A8[] = { + gUnknown_843F988, + gUnknown_843F990, + gUnknown_843F998, + gUnknown_843F9A0 +}; + +const struct SpriteTemplate gUnknown_843F9B8 = { + .tileTag = 1, + .paletteTag = 1, + .oam = &gUnknown_843F980, + .anims = gUnknown_843F9A8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8101B20 +}; + +const struct OamData gUnknown_843F9D0 = { + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .mosaic = FALSE, + .shape = SPRITE_SHAPE(64x32), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(64x32), + .tileNum = 0x000, + .priority = 1, + .paletteNum = 0 +}; + +const union AnimCmd gUnknown_843F9D8[] = { + ANIMCMD_FRAME(0x60, 0), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_843F9E0[] = { + ANIMCMD_FRAME(0x40, 4), + ANIMCMD_FRAME(0x20, 4), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_843F9EC[] = { + ANIMCMD_FRAME(0x40, 4), + ANIMCMD_FRAME(0x00, 4), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_843F9F8[] = { + ANIMCMD_FRAME(0x40, 4), + ANIMCMD_FRAME(0x60, 0), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_843FA04[] = { + ANIMCMD_FRAME(0x40, 4), + ANIMCMD_END +}; + +const union AnimCmd *const gUnknown_843FA0C[] = { + gUnknown_843F9D8, + gUnknown_843F9E0, + gUnknown_843F9EC, + gUnknown_843F9F8, + gUnknown_843FA04 +}; + +const struct SpriteTemplate gUnknown_843FA20 = { + .tileTag = 4, + .paletteTag = 2, + .oam = &gUnknown_843F9D0, + .anims = gUnknown_843FA0C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + bool8 sub_80FFF80(void) { if (!sub_8100BF4()) @@ -1752,3 +1869,154 @@ void sub_8101BA8(void) { gUnknown_203ACEC->unk2D8->data[1] = 1; } + +void sub_8101BC0(void) +{ + u8 spriteId = CreateSprite(&gUnknown_843F9B8, 0, 0, 3); + gUnknown_203ACEC->unk2DC = &gSprites[spriteId]; + gUnknown_203ACEC->unk2DC->pos2.x = 32; + + spriteId = CreateSprite(&gUnknown_843F9B8, 0, 0, 3); + gUnknown_203ACEC->unk2E0 = &gSprites[spriteId]; + gUnknown_203ACEC->unk2E0->pos2.x = -32; + + gUnknown_203ACEC->unk2DC->hFlip = 1; + sub_8101C80(); +} + +void sub_8101C48(void) +{ + DestroySprite(gUnknown_203ACEC->unk2DC); + gUnknown_203ACEC->unk2DC = NULL; + DestroySprite(gUnknown_203ACEC->unk2E0); + gUnknown_203ACEC->unk2E0 = NULL; +} + +void sub_8101C80(void) +{ + u8 var0; + u8 var1; + + if (gUnknown_203ACEC->unk2DC && gUnknown_203ACEC->unk2E0) + { + sub_80FFE08(&var0, &var1); + if (!sub_80FFE1C()) + sub_8101CE4(var0, var1); + else + sub_8101D9C(var0, var1); + } +} + +void sub_8101CE4(s8 arg0, s8 arg1) +{ + if (arg0 != -1) + { + StartSpriteAnim(gUnknown_203ACEC->unk2DC, 0); + gUnknown_203ACEC->unk2DC->pos1.x = arg0 * 84 + 58; + gUnknown_203ACEC->unk2DC->pos1.y = arg1 * 16 + 96; + + StartSpriteAnim(gUnknown_203ACEC->unk2E0, 0); + gUnknown_203ACEC->unk2E0->pos1.x = arg0 * 84 + 58; + gUnknown_203ACEC->unk2E0->pos1.y = arg1 * 16 + 96; + } + else + { + StartSpriteAnim(gUnknown_203ACEC->unk2DC, 1); + gUnknown_203ACEC->unk2DC->pos1.x = 216; + gUnknown_203ACEC->unk2DC->pos1.y = arg1 * 16 + 112; + + StartSpriteAnim(gUnknown_203ACEC->unk2E0, 1); + gUnknown_203ACEC->unk2E0->pos1.x = 216; + gUnknown_203ACEC->unk2E0->pos1.y = arg1 * 16 + 112; + } +} + +void sub_8101D9C(s8 arg0, s8 arg1) +{ + int anim; + int x, y; + + if (arg0 != -1) + { + y = arg1 * 16 + 96; + x = 32; + if (arg0 == 6 && arg1 == 0) + { + x = 157; + anim = 2; + } + else + { + x += gUnknown_843F958[arg0 < NELEMS(gUnknown_843F958) ? arg0 : 0]; + anim = 3; + } + + StartSpriteAnim(gUnknown_203ACEC->unk2DC, anim); + gUnknown_203ACEC->unk2DC->pos1.x = x; + gUnknown_203ACEC->unk2DC->pos1.y = y; + + StartSpriteAnim(gUnknown_203ACEC->unk2E0, anim); + gUnknown_203ACEC->unk2E0->pos1.x = x; + gUnknown_203ACEC->unk2E0->pos1.y = y; + } + else + { + StartSpriteAnim(gUnknown_203ACEC->unk2DC, 1); + gUnknown_203ACEC->unk2DC->pos1.x = 216; + gUnknown_203ACEC->unk2DC->pos1.y = arg1 * 16 + 112; + + StartSpriteAnim(gUnknown_203ACEC->unk2E0, 1); + gUnknown_203ACEC->unk2E0->pos1.x = 216; + gUnknown_203ACEC->unk2E0->pos1.y = arg1 * 16 + 112; + } +} + +void sub_8101E80(void) +{ + u8 spriteId = CreateSprite(&gUnknown_843F968, 0, 0, 4); + gUnknown_203ACEC->unk2E4 = &gSprites[spriteId]; + gUnknown_203ACEC->unk2E4->callback = sub_8101ED4; + gUnknown_203ACEC->unk2E4->oam.priority = 2; + sub_8101F04(); +} + +void sub_8101ED4(struct Sprite *sprite) +{ + if (++sprite->data[0] > 2) + { + sprite->data[0] = 0; + if (++sprite->pos2.x > 0) + sprite->pos2.x = -6; + } +} + +void sub_8101F04(void) +{ + s8 var0, var1; + u8 x, y; + + sub_80FFE34(&var0, &var1); + x = var0 * 13 + 3; + y = var1 * 2 + 11; + sub_8101F40(x, y); +} + +void sub_8101F40(u8 x, u8 y) +{ + if (gUnknown_203ACEC->unk2E4) + { + gUnknown_203ACEC->unk2E4->pos1.x = x * 8 + 4; + gUnknown_203ACEC->unk2E4->pos1.y = (y + 1) * 8 + 1; + gUnknown_203ACEC->unk2E4->pos2.x = 0; + gUnknown_203ACEC->unk2E4->data[0] = 0; + } +} + +void sub_8101F80(void) +{ + if (gUnknown_203ACEC->unk2E4) + { + DestroySprite(gUnknown_203ACEC->unk2E4); + gUnknown_203ACEC->unk2E4 = NULL; + } +} |