through sub_8129560

This commit is contained in:
PikalaxALT
2020-01-24 17:03:03 -05:00
parent 14b7ed7a5f
commit d22dd0f08b
4 changed files with 327 additions and 558 deletions
+2 -489
View File
@@ -5,493 +5,6 @@
.text
thumb_func_start sub_8129218
sub_8129218: @ 8129218
ldr r1, _08129224 @ =gUnknown_203B0E0
ldr r1, [r1]
movs r2, 0
strh r0, [r1, 0x4]
strh r2, [r1, 0x6]
bx lr
.align 2, 0
_08129224: .4byte gUnknown_203B0E0
thumb_func_end sub_8129218
thumb_func_start sub_8129228
sub_8129228: @ 8129228
push {lr}
ldr r0, _08129258 @ =gMain
ldrh r2, [r0, 0x30]
movs r0, 0x40
ands r0, r2
lsls r0, 16
lsrs r3, r0, 16
cmp r3, 0
bne _081292B2
movs r0, 0x80
ands r0, r2
cmp r0, 0
beq _08129268
ldr r0, _0812925C @ =gUnknown_203B0E0
ldr r2, [r0]
ldr r1, _08129260 @ =gUnknown_845A8A8
ldrb r0, [r2, 0x10]
adds r0, r1
ldrb r1, [r2, 0x12]
ldrb r0, [r0]
cmp r1, r0
bcs _08129264
adds r0, r1, 0x1
b _081292CC
.align 2, 0
_08129258: .4byte gMain
_0812925C: .4byte gUnknown_203B0E0
_08129260: .4byte gUnknown_845A8A8
_08129264:
strb r3, [r2, 0x12]
b _081292CE
_08129268:
ldr r0, _0812928C @ =gUnknown_203B0E0
ldr r1, [r0]
ldrb r0, [r1, 0x10]
cmp r0, 0x3
beq _081292AE
movs r0, 0x20
ands r0, r2
lsls r0, 16
lsrs r3, r0, 16
cmp r3, 0
beq _08129296
ldrb r0, [r1, 0x11]
cmp r0, 0
beq _08129290
subs r0, 0x1
strb r0, [r1, 0x11]
b _081292CE
.align 2, 0
_0812928C: .4byte gUnknown_203B0E0
_08129290:
movs r0, 0x4
strb r0, [r1, 0x11]
b _081292CE
_08129296:
movs r0, 0x10
ands r0, r2
cmp r0, 0
beq _081292AE
ldrb r0, [r1, 0x11]
cmp r0, 0x3
bhi _081292AA
adds r0, 0x1
strb r0, [r1, 0x11]
b _081292CE
_081292AA:
strb r3, [r1, 0x11]
b _081292CE
_081292AE:
movs r0, 0
b _081292D0
_081292B2:
ldr r0, _081292C0 @ =gUnknown_203B0E0
ldr r2, [r0]
ldrb r0, [r2, 0x12]
cmp r0, 0
beq _081292C4
subs r0, 0x1
b _081292CC
.align 2, 0
_081292C0: .4byte gUnknown_203B0E0
_081292C4:
ldr r0, _081292D4 @ =gUnknown_845A8A8
ldrb r1, [r2, 0x10]
adds r1, r0
ldrb r0, [r1]
_081292CC:
strb r0, [r2, 0x12]
_081292CE:
movs r0, 0x1
_081292D0:
pop {r1}
bx r1
.align 2, 0
_081292D4: .4byte gUnknown_845A8A8
thumb_func_end sub_8129228
thumb_func_start sub_81292D8
sub_81292D8: @ 81292D8
push {r4-r6,lr}
sub sp, 0x18
ldr r0, _08129318 @ =gUnknown_203B0E0
ldr r5, [r0]
ldrb r0, [r5, 0x10]
cmp r0, 0x3
beq _08129320
ldr r3, _0812931C @ =gUnknown_845A9AC
ldrb r1, [r5, 0x12]
lsls r1, 2
adds r2, r0, 0
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
adds r1, r0
adds r1, r3
ldr r4, [r1]
ldrb r0, [r5, 0x11]
cmp r0, 0
beq _08129312
adds r1, r0, 0
_08129302:
ldrb r0, [r4]
cmp r0, 0xF9
bne _0812930A
adds r4, 0x1
_0812930A:
adds r4, 0x1
subs r1, 0x1
cmp r1, 0
bne _08129302
_08129312:
movs r5, 0x1
b _08129346
.align 2, 0
_08129318: .4byte gUnknown_203B0E0
_0812931C: .4byte gUnknown_845A9AC
_08129320:
ldrb r0, [r5, 0x12]
lsls r1, r0, 2
adds r1, r0
lsls r1, 2
adds r1, r0
adds r1, 0xB9
adds r1, r5, r1
mov r0, sp
bl StringCopy
movs r1, 0
strb r1, [r0]
movs r1, 0xFF
strb r1, [r0, 0x1]
mov r4, sp
mov r0, sp
bl StringLength_Multibyte
adds r5, r0, 0
_08129346:
ldr r6, _081293A8 @ =gUnknown_203B0E0
ldr r1, [r6]
ldrb r0, [r1, 0x15]
strb r0, [r1, 0x14]
cmp r4, 0
beq _0812939E
bl sub_81294C8
adds r2, r0, 0
subs r5, 0x1
movs r0, 0x1
negs r0, r0
cmp r5, r0
beq _0812939A
ldr r0, [r6]
ldrb r0, [r0, 0x15]
cmp r0, 0xE
bhi _0812939A
adds r3, r6, 0
_0812936C:
ldrb r0, [r4]
cmp r0, 0xF9
bne _08129378
strb r0, [r2]
adds r4, 0x1
adds r2, 0x1
_08129378:
ldrb r0, [r4]
strb r0, [r2]
adds r4, 0x1
adds r2, 0x1
ldr r1, [r3]
ldrb r0, [r1, 0x15]
adds r0, 0x1
strb r0, [r1, 0x15]
subs r5, 0x1
movs r0, 0x1
negs r0, r0
cmp r5, r0
beq _0812939A
ldr r0, [r3]
ldrb r0, [r0, 0x15]
cmp r0, 0xE
bls _0812936C
_0812939A:
movs r0, 0xFF
strb r0, [r2]
_0812939E:
add sp, 0x18
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_081293A8: .4byte gUnknown_203B0E0
thumb_func_end sub_81292D8
thumb_func_start sub_81293AC
sub_81293AC: @ 81293AC
push {r4,lr}
ldr r4, _081293D4 @ =gUnknown_203B0E0
ldr r1, [r4]
ldrb r0, [r1, 0x15]
strb r0, [r1, 0x14]
ldr r0, [r4]
ldrb r0, [r0, 0x15]
cmp r0, 0
beq _081293CE
bl sub_81294EC
movs r1, 0xFF
strb r1, [r0]
ldr r1, [r4]
ldrb r0, [r1, 0x15]
subs r0, 0x1
strb r0, [r1, 0x15]
_081293CE:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_081293D4: .4byte gUnknown_203B0E0
thumb_func_end sub_81293AC
thumb_func_start sub_81293D8
sub_81293D8: @ 81293D8
push {lr}
ldr r0, _08129400 @ =gUnknown_203B0E0
ldr r1, [r0]
ldrb r0, [r1, 0x15]
subs r0, 0x1
strb r0, [r1, 0x14]
bl sub_81294EC
adds r2, r0, 0
ldrb r0, [r2]
cmp r0, 0xF9
beq _081293FC
ldr r1, _08129404 @ =gUnknown_845A8AC
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
beq _081293FC
strb r0, [r2]
_081293FC:
pop {r0}
bx r0
.align 2, 0
_08129400: .4byte gUnknown_203B0E0
_08129404: .4byte gUnknown_845A8AC
thumb_func_end sub_81293D8
thumb_func_start sub_8129408
sub_8129408: @ 8129408
push {lr}
ldr r0, _08129418 @ =gUnknown_203B0E0
ldr r0, [r0]
ldrb r0, [r0, 0x15]
cmp r0, 0
bne _0812941C
movs r0, 0
b _0812941E
.align 2, 0
_08129418: .4byte gUnknown_203B0E0
_0812941C:
movs r0, 0x1
_0812941E:
pop {r1}
bx r1
thumb_func_end sub_8129408
thumb_func_start sub_8129424
sub_8129424: @ 8129424
push {r4,lr}
bl sub_8129758
adds r1, r0, 0
ldr r4, _08129450 @ =gUnknown_203B0E0
ldr r0, [r4]
ldrb r3, [r0, 0x12]
lsls r2, r3, 2
adds r2, r3
lsls r2, 2
adds r2, r3
adds r2, 0xB9
adds r0, r2
bl StringCopy
ldr r1, [r4]
movs r0, 0x1
strb r0, [r1, 0x18]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08129450: .4byte gUnknown_203B0E0
thumb_func_end sub_8129424
thumb_func_start sub_8129454
sub_8129454: @ 8129454
ldr r1, _0812946C @ =gUnknown_203B0E0
ldr r2, [r1]
movs r0, 0xFF
strb r0, [r2, 0x1A]
ldr r2, [r1]
movs r3, 0
movs r0, 0xF
strb r0, [r2, 0x14]
ldr r0, [r1]
strb r3, [r0, 0x15]
bx lr
.align 2, 0
_0812946C: .4byte gUnknown_203B0E0
thumb_func_end sub_8129454
thumb_func_start sub_8129470
sub_8129470: @ 8129470
push {r4-r7,lr}
mov r7, r8
push {r7}
ldr r0, _081294A4 @ =gSaveBlock1Ptr
mov r8, r0
ldr r7, _081294A8 @ =gUnknown_203B0E0
movs r6, 0xB9
ldr r5, _081294AC @ =0x00003ad4
movs r4, 0x9
_08129482:
mov r1, r8
ldr r0, [r1]
adds r0, r5
ldr r1, [r7]
adds r1, r6
bl StringCopy
adds r6, 0x15
adds r5, 0x15
subs r4, 0x1
cmp r4, 0
bge _08129482
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_081294A4: .4byte gSaveBlock1Ptr
_081294A8: .4byte gUnknown_203B0E0
_081294AC: .4byte 0x00003ad4
thumb_func_end sub_8129470
thumb_func_start sub_81294B0
sub_81294B0: @ 81294B0
ldr r2, _081294C4 @ =gUnknown_203B0E0
lsls r1, r0, 2
adds r1, r0
lsls r1, 2
adds r1, r0
adds r1, 0xB9
ldr r0, [r2]
adds r0, r1
bx lr
.align 2, 0
_081294C4: .4byte gUnknown_203B0E0
thumb_func_end sub_81294B0
thumb_func_start sub_81294C8
sub_81294C8: @ 81294C8
push {lr}
ldr r0, _081294E8 @ =gUnknown_203B0E0
ldr r0, [r0]
adds r1, r0, 0
adds r1, 0x1A
ldrb r0, [r0, 0x1A]
cmp r0, 0xFF
beq _081294E0
_081294D8:
adds r1, 0x1
ldrb r0, [r1]
cmp r0, 0xFF
bne _081294D8
_081294E0:
adds r0, r1, 0
pop {r1}
bx r1
.align 2, 0
_081294E8: .4byte gUnknown_203B0E0
thumb_func_end sub_81294C8
thumb_func_start sub_81294EC
sub_81294EC: @ 81294EC
push {lr}
ldr r0, _08129518 @ =gUnknown_203B0E0
ldr r0, [r0]
adds r2, r0, 0
adds r2, 0x1A
adds r1, r2, 0
ldrb r0, [r0, 0x1A]
cmp r0, 0xFF
beq _08129510
_081294FE:
adds r2, r1, 0
ldrb r0, [r2]
cmp r0, 0xF9
bne _08129508
adds r1, r2, 0x1
_08129508:
adds r1, 0x1
ldrb r0, [r1]
cmp r0, 0xFF
bne _081294FE
_08129510:
adds r0, r2, 0
pop {r1}
bx r1
.align 2, 0
_08129518: .4byte gUnknown_203B0E0
thumb_func_end sub_81294EC
thumb_func_start sub_812951C
sub_812951C: @ 812951C
push {r4,lr}
ldr r4, _0812955C @ =gUnknown_203B0E0
ldr r0, [r4]
adds r0, 0x1A
bl StringLength_Multibyte
adds r2, r0, 0
ldr r0, [r4]
adds r1, r0, 0
adds r1, 0x1A
movs r4, 0
cmp r2, 0xA
bls _08129550
subs r2, 0xA
movs r3, 0
cmp r4, r2
bcs _08129550
_0812953E:
ldrb r0, [r1]
cmp r0, 0xF9
bne _08129546
adds r1, 0x1
_08129546:
adds r1, 0x1
adds r4, 0x1
adds r3, 0x1
cmp r3, r2
bcc _0812953E
_08129550:
lsls r0, r4, 16
lsrs r0, 16
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0812955C: .4byte gUnknown_203B0E0
thumb_func_end sub_812951C
thumb_func_start sub_8129560
sub_8129560: @ 8129560
movs r1, 0
strb r1, [r0]
bx lr
thumb_func_end sub_8129560
thumb_func_start sub_8129568
sub_8129568: @ 8129568
push {r4,lr}
@@ -3013,7 +2526,7 @@ _0812A84C:
movs r7, 0
movs r6, 0
lsls r0, r2, 2
ldr r1, _0812A89C @ =gUnknown_845A9AC
ldr r1, _0812A89C @ =sUnionRoomKeyboardText
adds r0, r2
lsls r0, 3
adds r4, r0, r1
@@ -3051,7 +2564,7 @@ _0812A866:
ble _0812A85E
b _0812A96C
.align 2, 0
_0812A89C: .4byte gUnknown_845A9AC
_0812A89C: .4byte sUnionRoomKeyboardText
_0812A8A0:
movs r1, 0x4
str r1, [sp, 0x40]
-69
View File
@@ -6,75 +6,6 @@
.section .rodata
.align 2
gUnknown_845A8A8:: @ 845A8A8
.byte 0x09, 0x09, 0x09, 0x09
gUnknown_845A8AC:: @ 845A8AC
.byte 0x00, 0x16, 0x17, 0x68, 0x19, 0x1a, 0x1b, 0x1c
.byte 0x1d, 0x1e, 0x00, 0x20, 0x21, 0x22, 0x23, 0x24
.byte 0x25, 0x26, 0x27, 0x28, 0x29, 0x15, 0x01, 0x02
.byte 0x00, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00
.byte 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12
.byte 0x13, 0x14, 0x2a, 0x2b, 0x2c, 0x2d, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x36, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x53, 0x54, 0x55, 0x56, 0x00
.byte 0x00, 0x00, 0x6f, 0x5b, 0x5c, 0x5d, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x84, 0x85, 0x86, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7
.byte 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf
.byte 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7
.byte 0xb8, 0xb9, 0xba, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9
.byte 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1
.byte 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9
.byte 0xea, 0xeb, 0xec, 0xed, 0xee, 0xbb, 0xbc, 0xbd
.byte 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5
.byte 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd
.byte 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xef
.byte 0xf0, 0xf4, 0xf5, 0xf6, 0xf1, 0xf2, 0xf3, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
gUnknown_845A9AC:: @ 845A9AC
.4byte gText_UnionRoomChatKeyboard_ABCDE
.4byte gText_UnionRoomChatKeyboard_FGHIJ
.4byte gText_UnionRoomChatKeyboard_KLMNO
.4byte gText_UnionRoomChatKeyboard_PQRST
.4byte gText_UnionRoomChatKeyboard_UVWXY
.4byte gText_UnionRoomChatKeyboard_Z
.4byte gText_UnionRoomChatKeyboard_01234Upper
.4byte gText_UnionRoomChatKeyboard_56789Upper
.4byte gText_UnionRoomChatKeyboard_PunctuationUpper
.4byte gText_UnionRoomChatKeyboard_SymbolsUpper
.4byte gText_UnionRoomChatKeyboard_abcde
.4byte gText_UnionRoomChatKeyboard_fghij
.4byte gText_UnionRoomChatKeyboard_klmno
.4byte gText_UnionRoomChatKeyboard_pqrst
.4byte gText_UnionRoomChatKeyboard_uvwxy
.4byte gText_UnionRoomChatKeyboard_z
.4byte gText_UnionRoomChatKeyboard_01234Lower
.4byte gText_UnionRoomChatKeyboard_56789Lower
.4byte gText_UnionRoomChatKeyboard_PunctuationLower
.4byte gText_UnionRoomChatKeyboard_SymbolsLower
.4byte gText_UnionRoomChatKeyboard_Emoji1
.4byte gText_UnionRoomChatKeyboard_Emoji2
.4byte gText_UnionRoomChatKeyboard_Emoji3
.4byte gText_UnionRoomChatKeyboard_Emoji4
.4byte gText_UnionRoomChatKeyboard_Emoji5
.4byte gText_UnionRoomChatKeyboard_Emoji6
.4byte gText_UnionRoomChatKeyboard_Emoji7
.4byte gText_UnionRoomChatKeyboard_Emoji8
.4byte gText_UnionRoomChatKeyboard_Emoji9
.4byte gText_UnionRoomChatKeyboard_Emoji10
gUnknown_845AA24:: @ 845AA24
.incbin "graphics/union_room_chat/unk_845AA24.gbapal"
+14
View File
@@ -5,10 +5,24 @@
#define CHAR_SPACE 0x00
#define CHAR_0 0xA1
#define CHAR_1 0xA2
#define CHAR_2 0xA3
#define CHAR_3 0xA4
#define CHAR_4 0xA5
#define CHAR_5 0xA6
#define CHAR_6 0xA7
#define CHAR_7 0xA8
#define CHAR_8 0xA9
#define CHAR_9 0xAA
#define CHAR_EXCL_MARK 0xAB
#define CHAR_QUESTION_MARK 0xAC
#define CHAR_PERIOD 0xAD
#define CHAR_HYPHEN 0xAE
#define CHAR_ELLIPSIS 0xB0
#define CHAR_DBL_QUOT_LEFT 0xB1
#define CHAR_DBL_QUOT_RIGHT 0xB2
#define CHAR_SGL_QUOT_LEFT 0xB3
#define CHAR_SGL_QUOT_RIGHT 0xB4
#define CHAR_MALE 0xB5
#define CHAR_FEMALE 0xB6
#define CHAR_CURRENCY 0xB7
+311
View File
@@ -11,6 +11,7 @@
#include "save.h"
#include "scanline_effect.h"
#include "task.h"
#include "data_8479668.h"
#include "constants/songs.h"
enum
@@ -76,12 +77,15 @@ bool32 sub_8129408(void);
void sub_8129424(void);
void sub_8129454(void);
void sub_8129470(void);
u8 *sub_81294C8(void);
u8 *sub_81294EC(void);
void sub_8129560(u8 *ptr);
void sub_8129568(u8 *ptr);
void sub_8129590(u8 *ptr);
void sub_81295C0(u8 *ptr);
void sub_81295EC(u8 *ptr);
void sub_8129614(u8 *ptr);
u8 *sub_8129758(void);
void sub_81298F8(u8 taskId);
void sub_8129B14(void);
bool32 sub_8129B78(void);
@@ -104,6 +108,88 @@ static void (*const gUnknown_845A880[])(void) = {
sub_8128FB8
};
static const u8 sKeyboardPageMaxRow[] =
{
[UNION_ROOM_KB_PAGE_UPPER] = 9,
[UNION_ROOM_KB_PAGE_LOWER] = 9,
[UNION_ROOM_KB_PAGE_EMOJI] = 9,
9
};
const u8 gUnknown_845A8AC[] = {
CHAR_SPACE, 0x16, 0x17, 0x68, 0x19, 0x1A, 0x1B, 0x1C,
0x1D, 0x1E, CHAR_SPACE, 0x20, 0x21, 0x22, 0x23, 0x24,
0x25, 0x26, 0x27, 0x28, 0x29, 0x15, 0x01, 0x02,
CHAR_SPACE, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, CHAR_SPACE,
0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12,
0x13, 0x14, 0x2A, 0x2B, 0x2C, 0x2D, CHAR_SPACE, CHAR_SPACE,
CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, 0x35, 0x36, CHAR_SPACE,
CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE,
CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE,
CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE,
CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, 0x53, 0x54, 0x55, 0x56, CHAR_SPACE,
CHAR_SPACE, CHAR_SPACE, 0x6F, 0x5B, 0x5C, 0x5D, CHAR_SPACE, CHAR_SPACE,
CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE,
0x03, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, 0x5A,
CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE,
CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE,
CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, 0x84, 0x85, 0x86, CHAR_SPACE,
CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE,
CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE,
CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE,
0xA0, CHAR_0, CHAR_1, CHAR_2, CHAR_3, CHAR_4, CHAR_5, CHAR_6,
CHAR_7, CHAR_8, CHAR_9, CHAR_EXCL_MARK, CHAR_QUESTION_MARK, CHAR_PERIOD, CHAR_HYPHEN, 0xAF,
CHAR_ELLIPSIS, CHAR_DBL_QUOT_LEFT, CHAR_DBL_QUOT_RIGHT, CHAR_SGL_QUOT_LEFT, CHAR_SGL_QUOT_RIGHT, CHAR_MALE, CHAR_FEMALE, CHAR_CURRENCY,
CHAR_COMMA, CHAR_MULT_SIGN, CHAR_SLASH, CHAR_a, CHAR_b, CHAR_c, CHAR_d, CHAR_e,
CHAR_f, CHAR_g, CHAR_h, CHAR_i, CHAR_j, CHAR_k, CHAR_l, CHAR_m,
CHAR_n, CHAR_o, CHAR_p, CHAR_q, CHAR_r, CHAR_s, CHAR_t, CHAR_u,
CHAR_v, CHAR_w, CHAR_x, CHAR_y, CHAR_z, CHAR_A, CHAR_B, CHAR_C,
CHAR_D, CHAR_E, CHAR_F, CHAR_G, CHAR_H, CHAR_I, CHAR_J, CHAR_K,
CHAR_L, CHAR_M, CHAR_N, CHAR_O, CHAR_P, CHAR_Q, CHAR_R, CHAR_S,
CHAR_T, CHAR_U, CHAR_V, CHAR_W, CHAR_X, CHAR_Y, CHAR_Z, 0xEF,
CHAR_COLON, 0xF4, 0xF5, 0xF6, 0xF1, 0xF2, 0xF3, CHAR_SPACE,
CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE
};
const u8 *const sUnionRoomKeyboardText[UNION_ROOM_KB_PAGE_COUNT][UNION_ROOM_KB_ROW_COUNT] = {
[UNION_ROOM_KB_PAGE_UPPER] = {
gText_UnionRoomChatKeyboard_ABCDE,
gText_UnionRoomChatKeyboard_FGHIJ,
gText_UnionRoomChatKeyboard_KLMNO,
gText_UnionRoomChatKeyboard_PQRST,
gText_UnionRoomChatKeyboard_UVWXY,
gText_UnionRoomChatKeyboard_Z,
gText_UnionRoomChatKeyboard_01234Upper,
gText_UnionRoomChatKeyboard_56789Upper,
gText_UnionRoomChatKeyboard_PunctuationUpper,
gText_UnionRoomChatKeyboard_SymbolsUpper
},
[UNION_ROOM_KB_PAGE_LOWER] = {
gText_UnionRoomChatKeyboard_abcde,
gText_UnionRoomChatKeyboard_fghij,
gText_UnionRoomChatKeyboard_klmno,
gText_UnionRoomChatKeyboard_pqrst,
gText_UnionRoomChatKeyboard_uvwxy,
gText_UnionRoomChatKeyboard_z,
gText_UnionRoomChatKeyboard_01234Lower,
gText_UnionRoomChatKeyboard_56789Lower,
gText_UnionRoomChatKeyboard_PunctuationLower,
gText_UnionRoomChatKeyboard_SymbolsLower
},
[UNION_ROOM_KB_PAGE_EMOJI] = {
gText_UnionRoomChatKeyboard_Emoji1,
gText_UnionRoomChatKeyboard_Emoji2,
gText_UnionRoomChatKeyboard_Emoji3,
gText_UnionRoomChatKeyboard_Emoji4,
gText_UnionRoomChatKeyboard_Emoji5,
gText_UnionRoomChatKeyboard_Emoji6,
gText_UnionRoomChatKeyboard_Emoji7,
gText_UnionRoomChatKeyboard_Emoji8,
gText_UnionRoomChatKeyboard_Emoji9,
gText_UnionRoomChatKeyboard_Emoji10
}
};
void sub_8128420(void)
{
gUnknown_203B0E0 = Alloc(sizeof(struct UnionRoomChat));
@@ -801,3 +887,228 @@ void sub_8128FB8(void)
break;
}
}
void sub_8129218(u16 arg0)
{
gUnknown_203B0E0->unk4 = arg0;
gUnknown_203B0E0->unk6 = 0;
}
bool32 sub_8129228(void)
{
if (!(gMain.newAndRepeatedKeys & DPAD_UP))
{
if (gMain.newAndRepeatedKeys & DPAD_DOWN)
{
if (gUnknown_203B0E0->currentRow < sKeyboardPageMaxRow[gUnknown_203B0E0->currentPage])
gUnknown_203B0E0->currentRow++;
else
gUnknown_203B0E0->currentRow = 0;
return TRUE;
}
if (gUnknown_203B0E0->currentPage != UNION_ROOM_KB_PAGE_COUNT)
{
if (gMain.newAndRepeatedKeys & DPAD_LEFT)
{
if (gUnknown_203B0E0->unk11)
gUnknown_203B0E0->unk11--;
else
gUnknown_203B0E0->unk11 = 4;
}
else if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
{
if (gUnknown_203B0E0->unk11 > 3)
gUnknown_203B0E0->unk11 = 0;
else
gUnknown_203B0E0->unk11++;
}
else
{
return FALSE;
}
return TRUE;
}
return FALSE;
}
else
{
if (gUnknown_203B0E0->currentRow)
gUnknown_203B0E0->currentRow--;
else
gUnknown_203B0E0->currentRow = sKeyboardPageMaxRow[gUnknown_203B0E0->currentPage];
return TRUE;
}
}
void sub_81292D8(void)
{
int i;
const u8 *charsStr;
int strLength;
u8 *str;
u8 buffer[21];
if (gUnknown_203B0E0->currentPage != UNION_ROOM_KB_PAGE_COUNT)
{
charsStr = sUnionRoomKeyboardText[gUnknown_203B0E0->currentPage][gUnknown_203B0E0->currentRow];
for (i = 0; i < gUnknown_203B0E0->unk11; i++)
{
if (*charsStr == CHAR_EXTRA_EMOJI)
charsStr++;
charsStr++;
}
strLength = 1;
}
else
{
u8 *tempStr = StringCopy(buffer, gUnknown_203B0E0->unkB9[gUnknown_203B0E0->currentRow]);
tempStr[0] = CHAR_SPACE;
tempStr[1] = EOS;
charsStr = buffer;
strLength = StringLength_Multibyte(buffer);
}
gUnknown_203B0E0->unk14 = gUnknown_203B0E0->unk15;
if (!charsStr)
return;
str = sub_81294C8();
while (--strLength != -1 && gUnknown_203B0E0->unk15 < 15)
{
if (*charsStr == CHAR_EXTRA_EMOJI)
{
*str = *charsStr;
charsStr++;
str++;
}
*str = *charsStr;
charsStr++;
str++;
gUnknown_203B0E0->unk15++;
}
*str = EOS;
}
void sub_81293AC(void)
{
gUnknown_203B0E0->unk14 = gUnknown_203B0E0->unk15;
if (gUnknown_203B0E0->unk15)
{
u8 *str = sub_81294EC();
*str = EOS;
gUnknown_203B0E0->unk15--;
}
}
void sub_81293D8(void)
{
u8 *str;
u8 character;
gUnknown_203B0E0->unk14 = gUnknown_203B0E0->unk15 - 1;
str = sub_81294EC();
if (*str != CHAR_EXTRA_EMOJI)
{
character = gUnknown_845A8AC[*str];
if (character)
*str = character;
}
}
bool32 sub_8129408(void)
{
if (gUnknown_203B0E0->unk15)
return TRUE;
else
return FALSE;
}
void sub_8129424(void)
{
u8 *src = sub_8129758();
StringCopy(gUnknown_203B0E0->unkB9[gUnknown_203B0E0->currentRow], src);
gUnknown_203B0E0->unk18 = 1;
}
void sub_8129454(void)
{
gUnknown_203B0E0->unk1A[0] = EOS;
gUnknown_203B0E0->unk14 = 15;
gUnknown_203B0E0->unk15 = 0;
}
void sub_8129470(void)
{
int i;
for (i = 0; i < UNION_ROOM_KB_ROW_COUNT; i++)
StringCopy(gSaveBlock1Ptr->unk3AD4[i], gUnknown_203B0E0->unkB9[i]);
}
u8 *sub_81294B0(int arg0)
{
return gUnknown_203B0E0->unkB9[arg0];
}
// GetEndOfUnk1A
u8 *sub_81294C8(void)
{
u8 *str = gUnknown_203B0E0->unk1A;
while (*str != EOS)
str++;
return str;
}
// GetPtrToLastCharOfUnk1A
u8 *sub_81294EC(void)
{
u8 *str = gUnknown_203B0E0->unk1A;
u8 *str2 = str;
while (*str != EOS)
{
str2 = str;
if (*str == CHAR_EXTRA_EMOJI)
str++;
str++;
}
return str2;
}
u16 sub_812951C(void)
{
u8 *str;
u32 i, numChars, strLength;
strLength = StringLength_Multibyte(gUnknown_203B0E0->unk1A);
str = gUnknown_203B0E0->unk1A;
numChars = 0;
if (strLength > 10)
{
strLength -= 10;
for (i = 0; i < strLength; i++)
{
if (*str == CHAR_EXTRA_EMOJI)
str++;
str++;
numChars++;
}
}
return numChars;
}
void sub_8129560(u8 *arg0)
{
arg0[0] = CHAR_SPACE;
}