summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2020-03-07 20:46:29 -0500
committerPikalaxALT <PikalaxALT@gmail.com>2020-03-07 20:46:29 -0500
commit40e4ef8f77caf47932d3b2c75481be9680eeea17 (patch)
treef2b0776caaf7649dc3cd772e217c27f854ebfd9e
parent1346f7287c06d25258b559398d827a41c281a128 (diff)
through sub_8101BA8
-rw-r--r--asm/easy_chat_2.s164
-rw-r--r--data/easy_chat_2.s28
-rw-r--r--include/graphics.h4
-rw-r--r--src/easy_chat_3.c114
4 files changed, 117 insertions, 193 deletions
diff --git a/asm/easy_chat_2.s b/asm/easy_chat_2.s
index 979abfa5e..5c66680e2 100644
--- a/asm/easy_chat_2.s
+++ b/asm/easy_chat_2.s
@@ -5,170 +5,6 @@
.text
- thumb_func_start sub_8101A90
-sub_8101A90: @ 8101A90
- push {r4,r5,lr}
- ldr r0, _08101AB8 @ =gUnknown_843F8F0
- bl LoadSpriteSheets
- ldr r0, _08101ABC @ =gUnknown_843F910
- bl LoadSpritePalettes
- movs r5, 0
- ldr r4, _08101AC0 @ =gUnknown_843F938
-_08101AA2:
- adds r0, r4, 0
- bl LoadCompressedSpriteSheet
- adds r4, 0x8
- adds r5, 0x1
- cmp r5, 0x3
- bls _08101AA2
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08101AB8: .4byte gUnknown_843F8F0
-_08101ABC: .4byte gUnknown_843F910
-_08101AC0: .4byte gUnknown_843F938
- thumb_func_end sub_8101A90
-
- thumb_func_start sub_8101AC4
-sub_8101AC4: @ 8101AC4
- push {lr}
- bl GetEasyChatScreenFrameId
- lsls r0, 24
- ldr r1, _08101B10 @ =sPhraseFrameDimensions
- lsrs r0, 22
- adds r0, r1
- ldrb r1, [r0]
- lsls r1, 19
- ldrb r2, [r0, 0x1]
- adds r2, 0x1
- lsls r2, 3
- adds r2, 0x1
- ldr r0, _08101B14 @ =gUnknown_843F968
- movs r3, 0xD0
- lsls r3, 12
- adds r1, r3
- asrs r1, 16
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08101B18 @ =gUnknown_203ACEC
- ldr r2, [r1]
- movs r1, 0xB6
- lsls r1, 2
- adds r2, r1
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _08101B1C @ =gSprites
- adds r1, r0
- str r1, [r2]
- movs r0, 0x1
- strh r0, [r1, 0x30]
- pop {r0}
- bx r0
- .align 2, 0
-_08101B10: .4byte sPhraseFrameDimensions
-_08101B14: .4byte gUnknown_843F968
-_08101B18: .4byte gUnknown_203ACEC
-_08101B1C: .4byte gSprites
- thumb_func_end sub_8101AC4
-
- thumb_func_start sub_8101B20
-sub_8101B20: @ 8101B20
- push {lr}
- adds r1, r0, 0
- movs r2, 0x30
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _08101B4E
- ldrh r0, [r1, 0x2E]
- adds r0, 0x1
- strh r0, [r1, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _08101B4E
- 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 _08101B4E
- ldr r0, _08101B54 @ =0x0000fffa
- strh r0, [r1, 0x24]
-_08101B4E:
- pop {r0}
- bx r0
- .align 2, 0
-_08101B54: .4byte 0x0000fffa
- thumb_func_end sub_8101B20
-
- thumb_func_start sub_8101B58
-sub_8101B58: @ 8101B58
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _08101B84 @ =gUnknown_203ACEC
- ldr r2, [r2]
- movs r3, 0xB6
- lsls r3, 2
- adds r2, r3
- ldr r3, [r2]
- movs r4, 0
- strh r0, [r3, 0x20]
- ldr r0, [r2]
- strh r1, [r0, 0x22]
- ldr r0, [r2]
- strh r4, [r0, 0x24]
- ldr r0, [r2]
- strh r4, [r0, 0x2E]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08101B84: .4byte gUnknown_203ACEC
- thumb_func_end sub_8101B58
-
- thumb_func_start sub_8101B88
-sub_8101B88: @ 8101B88
- ldr r0, _08101BA4 @ =gUnknown_203ACEC
- ldr r1, [r0]
- movs r0, 0xB6
- lsls r0, 2
- adds r1, r0
- ldr r0, [r1]
- movs r2, 0
- strh r2, [r0, 0x2E]
- ldr r0, [r1]
- strh r2, [r0, 0x30]
- ldr r0, [r1]
- strh r2, [r0, 0x24]
- bx lr
- .align 2, 0
-_08101BA4: .4byte gUnknown_203ACEC
- thumb_func_end sub_8101B88
-
- thumb_func_start sub_8101BA8
-sub_8101BA8: @ 8101BA8
- ldr r0, _08101BBC @ =gUnknown_203ACEC
- ldr r0, [r0]
- movs r1, 0xB6
- lsls r1, 2
- adds r0, r1
- ldr r1, [r0]
- movs r0, 0x1
- strh r0, [r1, 0x30]
- bx lr
- .align 2, 0
-_08101BBC: .4byte gUnknown_203ACEC
- thumb_func_end sub_8101BA8
-
thumb_func_start sub_8101BC0
sub_8101BC0: @ 8101BC0
push {r4-r6,lr}
diff --git a/data/easy_chat_2.s b/data/easy_chat_2.s
index 2eca1d8b0..8298f8cbb 100644
--- a/data/easy_chat_2.s
+++ b/data/easy_chat_2.s
@@ -7,34 +7,6 @@
.section .rodata
.align 2
-gUnknown_843F8F0:: @ 843F8F0 sprite_sheet
- obj_tiles gUnknown_843F3F8, 0x0020, 0
- obj_tiles gUnknown_843F418, 0x0100, 2
- obj_tiles gUnknown_843F518, 0x0100, 3
- null_obj_tiles
-
-gUnknown_843F910:: @ 843F910 sprite_palette
- obj_pal gUnknown_843F3B8, 0
- obj_pal gUnknown_843F3D8, 1
- obj_pal gUnknown_8E99F24, 2
- obj_pal gUnknown_843F618, 3
- null_obj_pal
-
-gUnknown_843F938:: @ 843F938 sprite_sheet
- obj_tiles gUnknown_843F638, 0x0800, 5
- obj_tiles gUnknown_8E9BD28, 0x1000, 1
- obj_tiles gUnknown_8E99F44, 0x0800, 6
- obj_tiles gUnknown_8E9A168, 0x1000, 4
-
-gUnknown_843F958:: @ 843F958 data8
- .byte 0x00, 0x0c, 0x18, 0x38, 0x44, 0x50, 0x5c, 0x00
-
-gUnknown_843F960::
- .4byte 0x00000000, 0x00000c00
-
-gUnknown_843F968:: @ 843F968 sprite_template
- spr_template 0, 0, gUnknown_843F960, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8101B20
-
gUnknown_843F980::
.4byte 0xc0004000, 0x00000400
diff --git a/include/graphics.h b/include/graphics.h
index 2b449ea94..19f2ad4a8 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -4890,5 +4890,9 @@ extern const u32 gUnknown_8EB0ADC[];
extern const u32 gEasyChatWindow_Gfx[];
extern const u32 gEasyChatWindow_Tilemap[];
extern const u32 gEasyChatMode_Pal[];
+extern const u16 gUnknown_8E99F24[];
+extern const u32 gUnknown_8E9BD28[];
+extern const u32 gUnknown_8E99F44[];
+extern const u32 gUnknown_8E9A168[];
#endif //GUARD_GRAPHICS_H
diff --git a/src/easy_chat_3.c b/src/easy_chat_3.c
index 75fdb20a3..3f9b3c65b 100644
--- a/src/easy_chat_3.c
+++ b/src/easy_chat_3.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "gflib.h"
#include "data_8479668.h"
+#include "decompress.h"
#include "easy_chat.h"
#include "graphics.h"
#include "menu.h"
@@ -102,7 +103,8 @@ s32 sub_8101A48(void);
void sub_8101A5C(u8 left, u8 top, u8 right, u8 bottom);
void sub_8101A90(void);
void sub_8101AC4(void);
-void sub_8101B58(u8 a0, u8 a1);
+void sub_8101B20(struct Sprite * sprite);
+void sub_8101B58(u8 x, u8 y);
void sub_8101B88(void);
void sub_8101BA8(void);
void sub_8101BC0(void);
@@ -274,6 +276,63 @@ const u8 *const sEasyChatKeyboardText[] = {
gUnknown_847A934
};
+const struct SpriteSheet sEasyChatSpriteSheets[] = {
+ {gUnknown_843F3F8, 0x0020, 0},
+ {gUnknown_843F418, 0x0100, 2},
+ {gUnknown_843F518, 0x0100, 3},
+ {}
+};
+
+const struct SpritePalette sEasyChatSpritePalettes[] = {
+ {gUnknown_843F3B8, 0},
+ {gUnknown_843F3D8, 1},
+ {gUnknown_8E99F24, 2},
+ {gUnknown_843F618, 3},
+ {}
+};
+
+const struct CompressedSpriteSheet gUnknown_843F938[] = {
+ {gUnknown_843F638, 0x0800, 5},
+ {gUnknown_8E9BD28, 0x1000, 1},
+ {gUnknown_8E99F44, 0x0800, 6},
+ {gUnknown_8E9A168, 0x1000, 4}
+};
+
+const u8 gUnknown_843F958[] = {
+ 0,
+ 12,
+ 24,
+ 56,
+ 68,
+ 80,
+ 92
+};
+
+const struct OamData gUnknown_843F960 = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .mosaic = FALSE,
+ .shape = SPRITE_SHAPE(8x8),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(8x8),
+ .tileNum = 0x000,
+ .priority = 3,
+ .paletteNum = 0
+};
+
+const struct SpriteTemplate gUnknown_843F968 = {
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gUnknown_843F960,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8101B20
+};
+
bool8 sub_80FFF80(void)
{
if (!sub_8100BF4())
@@ -1640,3 +1699,56 @@ void sub_8101A5C(u8 left, u8 top, u8 width, u8 height)
SetGpuReg(REG_OFFSET_WIN0H, horizontalDimensions);
SetGpuReg(REG_OFFSET_WIN0V, verticalDimensions);
}
+
+void sub_8101A90(void)
+{
+ u32 i;
+
+ LoadSpriteSheets(sEasyChatSpriteSheets);
+ LoadSpritePalettes(sEasyChatSpritePalettes);
+ for (i = 0; i < NELEMS(gUnknown_843F938); i++)
+ LoadCompressedSpriteSheet(&gUnknown_843F938[i]);
+}
+
+void sub_8101AC4(void)
+{
+ u8 frameId = GetEasyChatScreenFrameId();
+ s16 x = sPhraseFrameDimensions[frameId].left * 8 + 13;
+ s16 y = (sPhraseFrameDimensions[frameId].top + 1) * 8 + 1;
+ u8 spriteId = CreateSprite(&gUnknown_843F968, x, y, 2);
+ gUnknown_203ACEC->unk2D8 = &gSprites[spriteId];
+ gSprites[spriteId].data[1] = 1;
+}
+
+void sub_8101B20(struct Sprite *sprite)
+{
+ if (sprite->data[1])
+ {
+ if (++sprite->data[0] > 2)
+ {
+ sprite->data[0] = 0;
+ if (++sprite->pos2.x > 0)
+ sprite->pos2.x = -6;
+ }
+ }
+}
+
+void sub_8101B58(u8 x, u8 y)
+{
+ gUnknown_203ACEC->unk2D8->pos1.x = x;
+ gUnknown_203ACEC->unk2D8->pos1.y = y;
+ gUnknown_203ACEC->unk2D8->pos2.x = 0;
+ gUnknown_203ACEC->unk2D8->data[0] = 0;
+}
+
+void sub_8101B88(void)
+{
+ gUnknown_203ACEC->unk2D8->data[0] = 0;
+ gUnknown_203ACEC->unk2D8->data[1] = 0;
+ gUnknown_203ACEC->unk2D8->pos2.x = 0;
+}
+
+void sub_8101BA8(void)
+{
+ gUnknown_203ACEC->unk2D8->data[1] = 1;
+}