mirror of
https://github.com/pret/pokefirered.git
synced 2026-04-24 06:46:58 -05:00
help_system: through sub_813C3AC
This commit is contained in:
parent
2ffcf13f6b
commit
e30052e271
|
|
@ -5,546 +5,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_813C004
|
||||
sub_813C004: @ 813C004
|
||||
push {r4-r6,lr}
|
||||
sub sp, 0x8
|
||||
lsls r0, 24
|
||||
lsrs r2, r0, 24
|
||||
lsls r1, 24
|
||||
lsrs r6, r1, 24
|
||||
cmp r6, 0
|
||||
beq _0813C01A
|
||||
cmp r6, 0x1
|
||||
beq _0813C040
|
||||
b _0813C06A
|
||||
_0813C01A:
|
||||
ldr r5, _0813C03C @ =0x000001ff
|
||||
movs r4, 0x1
|
||||
str r4, [sp]
|
||||
str r6, [sp, 0x4]
|
||||
adds r0, r5, 0
|
||||
movs r1, 0x1C
|
||||
movs r2, 0x3
|
||||
movs r3, 0x1
|
||||
bl sub_813BC78
|
||||
str r4, [sp]
|
||||
str r6, [sp, 0x4]
|
||||
adds r0, r5, 0
|
||||
movs r1, 0x1C
|
||||
movs r2, 0x12
|
||||
b _0813C050
|
||||
.align 2, 0
|
||||
_0813C03C: .4byte 0x000001ff
|
||||
_0813C040:
|
||||
cmp r2, 0
|
||||
bne _0813C058
|
||||
movs r0, 0xFF
|
||||
lsls r0, 1
|
||||
str r6, [sp]
|
||||
str r2, [sp, 0x4]
|
||||
movs r1, 0x1C
|
||||
movs r2, 0x3
|
||||
_0813C050:
|
||||
movs r3, 0x1
|
||||
bl sub_813BC78
|
||||
b _0813C06A
|
||||
_0813C058:
|
||||
ldr r0, _0813C074 @ =0x000001fd
|
||||
str r6, [sp]
|
||||
movs r1, 0
|
||||
str r1, [sp, 0x4]
|
||||
movs r1, 0x1C
|
||||
movs r2, 0x12
|
||||
movs r3, 0x1
|
||||
bl sub_813BC78
|
||||
_0813C06A:
|
||||
add sp, 0x8
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0813C074: .4byte 0x000001fd
|
||||
thumb_func_end sub_813C004
|
||||
|
||||
thumb_func_start HelpSystemRenderText
|
||||
HelpSystemRenderText: @ 813C078
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x38
|
||||
str r1, [sp, 0x28]
|
||||
mov r9, r2
|
||||
ldr r1, [sp, 0x58]
|
||||
ldr r2, [sp, 0x5C]
|
||||
ldr r4, [sp, 0x60]
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
str r0, [sp, 0x24]
|
||||
lsls r3, 24
|
||||
lsrs r7, r3, 24
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
mov r10, r1
|
||||
lsls r2, 24
|
||||
lsrs r2, 24
|
||||
str r2, [sp, 0x2C]
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
str r4, [sp, 0x30]
|
||||
str r7, [sp, 0x34]
|
||||
_0813C0AC:
|
||||
mov r0, r9
|
||||
ldrb r1, [r0]
|
||||
movs r2, 0x1
|
||||
add r9, r2
|
||||
adds r0, r1, 0
|
||||
subs r0, 0xF8
|
||||
cmp r0, 0x7
|
||||
bls _0813C0BE
|
||||
b _0813C358
|
||||
_0813C0BE:
|
||||
lsls r0, 2
|
||||
ldr r1, _0813C0C8 @ =_0813C0CC
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_0813C0C8: .4byte _0813C0CC
|
||||
.align 2, 0
|
||||
_0813C0CC:
|
||||
.4byte _0813C2D4
|
||||
.4byte _0813C348
|
||||
.4byte _0813C1E4
|
||||
.4byte _0813C1E4
|
||||
.4byte _0813C200
|
||||
.4byte _0813C0EC
|
||||
.4byte _0813C1E4
|
||||
.4byte _0813C39C
|
||||
_0813C0EC:
|
||||
mov r0, r9
|
||||
ldrb r1, [r0]
|
||||
movs r2, 0x1
|
||||
add r9, r2
|
||||
cmp r1, 0x1
|
||||
bne _0813C154
|
||||
movs r4, 0
|
||||
ldr r0, _0813C14C @ =gSaveBlock2Ptr
|
||||
ldr r1, [r0]
|
||||
ldrb r1, [r1]
|
||||
cmp r1, 0xFF
|
||||
beq _0813C0AC
|
||||
ldr r5, _0813C150 @ =gGlyphInfo + 0x80
|
||||
_0813C106:
|
||||
ldr r0, [r0]
|
||||
adds r0, r4
|
||||
ldrb r1, [r0]
|
||||
ldr r0, [sp, 0x28]
|
||||
str r0, [sp]
|
||||
str r7, [sp, 0x4]
|
||||
mov r2, r10
|
||||
str r2, [sp, 0x8]
|
||||
ldr r0, [sp, 0x2C]
|
||||
str r0, [sp, 0xC]
|
||||
ldr r2, [sp, 0x30]
|
||||
str r2, [sp, 0x10]
|
||||
ldr r0, [sp, 0x24]
|
||||
add r2, sp, 0x14
|
||||
add r3, sp, 0x1C
|
||||
bl sub_813C3AC
|
||||
ldr r0, [sp, 0x24]
|
||||
ldrb r0, [r5]
|
||||
adds r0, r7, r0
|
||||
lsls r0, 24
|
||||
lsrs r7, r0, 24
|
||||
adds r0, r4, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
cmp r4, 0x9
|
||||
bhi _0813C0AC
|
||||
ldr r0, _0813C14C @ =gSaveBlock2Ptr
|
||||
ldr r1, [r0]
|
||||
adds r1, r4
|
||||
ldrb r1, [r1]
|
||||
cmp r1, 0xFF
|
||||
bne _0813C106
|
||||
b _0813C0AC
|
||||
.align 2, 0
|
||||
_0813C14C: .4byte gSaveBlock2Ptr
|
||||
_0813C150: .4byte gGlyphInfo + 0x80
|
||||
_0813C154:
|
||||
cmp r1, 0x2
|
||||
bne _0813C0AC
|
||||
movs r4, 0
|
||||
ldr r5, _0813C160 @ =gGlyphInfo + 0x80
|
||||
b _0813C1BC
|
||||
.align 2, 0
|
||||
_0813C160: .4byte gGlyphInfo + 0x80
|
||||
_0813C164:
|
||||
ldrb r1, [r1]
|
||||
ldr r2, [sp, 0x28]
|
||||
str r2, [sp]
|
||||
str r7, [sp, 0x4]
|
||||
mov r0, r10
|
||||
str r0, [sp, 0x8]
|
||||
ldr r2, [sp, 0x2C]
|
||||
str r2, [sp, 0xC]
|
||||
ldr r0, [sp, 0x30]
|
||||
str r0, [sp, 0x10]
|
||||
ldr r0, [sp, 0x24]
|
||||
add r2, sp, 0x14
|
||||
add r3, sp, 0x1C
|
||||
bl sub_813C3AC
|
||||
b _0813C1AC
|
||||
_0813C184:
|
||||
ldr r0, _0813C1D8 @ =gUnknown_841CB41
|
||||
adds r1, r4, r0
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0xFF
|
||||
beq _0813C0AC
|
||||
adds r1, r0, 0
|
||||
ldr r2, [sp, 0x28]
|
||||
str r2, [sp]
|
||||
str r7, [sp, 0x4]
|
||||
mov r0, r10
|
||||
str r0, [sp, 0x8]
|
||||
ldr r2, [sp, 0x2C]
|
||||
str r2, [sp, 0xC]
|
||||
ldr r0, [sp, 0x30]
|
||||
str r0, [sp, 0x10]
|
||||
ldr r0, [sp, 0x24]
|
||||
add r2, sp, 0x14
|
||||
add r3, sp, 0x1C
|
||||
bl sub_813C3AC
|
||||
_0813C1AC:
|
||||
ldr r1, [sp, 0x24]
|
||||
ldrb r0, [r5]
|
||||
adds r0, r7, r0
|
||||
lsls r0, 24
|
||||
lsrs r7, r0, 24
|
||||
adds r0, r4, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
_0813C1BC:
|
||||
ldr r0, _0813C1DC @ =0x00000834
|
||||
bl FlagGet
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x1
|
||||
bne _0813C184
|
||||
ldr r0, _0813C1E0 @ =gUnknown_841CB3C
|
||||
adds r1, r4, r0
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0xFF
|
||||
bne _0813C164
|
||||
b _0813C0AC
|
||||
.align 2, 0
|
||||
_0813C1D8: .4byte gUnknown_841CB41
|
||||
_0813C1DC: .4byte 0x00000834
|
||||
_0813C1E0: .4byte gUnknown_841CB3C
|
||||
_0813C1E4:
|
||||
ldr r7, [sp, 0x34]
|
||||
ldr r1, _0813C1FC @ =gGlyphInfo
|
||||
adds r1, 0x81
|
||||
mov r0, r10
|
||||
adds r0, 0x1
|
||||
ldrb r1, [r1]
|
||||
adds r0, r1
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
mov r10, r0
|
||||
b _0813C0AC
|
||||
.align 2, 0
|
||||
_0813C1FC: .4byte gGlyphInfo
|
||||
_0813C200:
|
||||
mov r2, r9
|
||||
ldrb r1, [r2]
|
||||
movs r0, 0x1
|
||||
add r9, r0
|
||||
subs r0, r1, 0x1
|
||||
cmp r0, 0x15
|
||||
bls _0813C210
|
||||
b _0813C0AC
|
||||
_0813C210:
|
||||
lsls r0, 2
|
||||
ldr r1, _0813C21C @ =_0813C220
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_0813C21C: .4byte _0813C220
|
||||
.align 2, 0
|
||||
_0813C220:
|
||||
.4byte _0813C2C8
|
||||
.4byte _0813C2C8
|
||||
.4byte _0813C2C8
|
||||
.4byte _0813C278
|
||||
.4byte _0813C2C8
|
||||
.4byte _0813C2C8
|
||||
.4byte _0813C0AC
|
||||
.4byte _0813C2C8
|
||||
.4byte _0813C0AC
|
||||
.4byte _0813C0AC
|
||||
.4byte _0813C27C
|
||||
.4byte _0813C2C8
|
||||
.4byte _0813C2C8
|
||||
.4byte _0813C2C8
|
||||
.4byte _0813C0AC
|
||||
.4byte _0813C27C
|
||||
.4byte _0813C2CE
|
||||
.4byte _0813C2CE
|
||||
.4byte _0813C282
|
||||
.4byte _0813C2CE
|
||||
.4byte _0813C0AC
|
||||
.4byte _0813C0AC
|
||||
_0813C278:
|
||||
movs r1, 0x1
|
||||
add r9, r1
|
||||
_0813C27C:
|
||||
movs r2, 0x1
|
||||
add r9, r2
|
||||
b _0813C2C8
|
||||
_0813C282:
|
||||
mov r2, r9
|
||||
ldrb r0, [r2]
|
||||
ldr r1, [sp, 0x34]
|
||||
adds r0, r1
|
||||
subs r6, r0, r7
|
||||
cmp r6, 0
|
||||
ble _0813C2C8
|
||||
ldr r2, [sp, 0x28]
|
||||
str r2, [sp, 0x1C]
|
||||
ldr r1, [sp, 0x2C]
|
||||
lsls r0, r1, 3
|
||||
add r4, sp, 0x1C
|
||||
movs r5, 0
|
||||
strh r0, [r4, 0x4]
|
||||
ldr r2, [sp, 0x30]
|
||||
lsls r0, r2, 3
|
||||
strh r0, [r4, 0x6]
|
||||
ldr r0, [sp, 0x24]
|
||||
movs r1, 0x1
|
||||
bl GetFontAttribute
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
lsls r3, r6, 16
|
||||
lsrs r3, 16
|
||||
str r0, [sp]
|
||||
str r5, [sp, 0x4]
|
||||
adds r0, r4, 0
|
||||
adds r1, r7, 0
|
||||
mov r2, r10
|
||||
bl FillBitmapRect4Bit
|
||||
adds r0, r7, r6
|
||||
lsls r0, 24
|
||||
lsrs r7, r0, 24
|
||||
_0813C2C8:
|
||||
movs r0, 0x1
|
||||
add r9, r0
|
||||
b _0813C0AC
|
||||
_0813C2CE:
|
||||
movs r1, 0x1
|
||||
add r9, r1
|
||||
b _0813C0AC
|
||||
_0813C2D4:
|
||||
mov r2, r9
|
||||
ldrb r1, [r2]
|
||||
movs r0, 0x1
|
||||
add r9, r0
|
||||
adds r6, r1, 0
|
||||
adds r0, r6, 0
|
||||
bl GetKeypadIconTileOffset
|
||||
lsls r0, 24
|
||||
lsrs r0, 19
|
||||
ldr r1, _0813C344 @ =gKeypadIconTiles
|
||||
adds r0, r1
|
||||
str r0, [sp, 0x14]
|
||||
add r1, sp, 0x14
|
||||
movs r2, 0
|
||||
mov r8, r2
|
||||
movs r0, 0x80
|
||||
strh r0, [r1, 0x4]
|
||||
strh r0, [r1, 0x6]
|
||||
ldr r0, [sp, 0x28]
|
||||
str r0, [sp, 0x1C]
|
||||
ldr r1, [sp, 0x2C]
|
||||
lsls r0, r1, 3
|
||||
add r5, sp, 0x1C
|
||||
strh r0, [r5, 0x4]
|
||||
ldr r2, [sp, 0x30]
|
||||
lsls r0, r2, 3
|
||||
strh r0, [r5, 0x6]
|
||||
adds r0, r6, 0
|
||||
bl GetKeypadIconWidth
|
||||
adds r4, r0, 0
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
adds r0, r6, 0
|
||||
bl GetKeypadIconHeight
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
str r7, [sp]
|
||||
mov r1, r10
|
||||
str r1, [sp, 0x4]
|
||||
str r4, [sp, 0x8]
|
||||
str r0, [sp, 0xC]
|
||||
mov r2, r8
|
||||
str r2, [sp, 0x10]
|
||||
add r0, sp, 0x14
|
||||
adds r1, r5, 0
|
||||
movs r2, 0
|
||||
movs r3, 0
|
||||
bl BlitBitmapRect4Bit
|
||||
adds r0, r6, 0
|
||||
bl GetKeypadIconWidth
|
||||
b _0813C38E
|
||||
.align 2, 0
|
||||
_0813C344: .4byte gKeypadIconTiles
|
||||
_0813C348:
|
||||
mov r0, r9
|
||||
ldrb r1, [r0]
|
||||
movs r2, 0x80
|
||||
lsls r2, 1
|
||||
adds r0, r2, 0
|
||||
orrs r1, r0
|
||||
movs r0, 0x1
|
||||
add r9, r0
|
||||
_0813C358:
|
||||
cmp r1, 0
|
||||
bne _0813C36A
|
||||
ldr r1, [sp, 0x24]
|
||||
cmp r1, 0
|
||||
bne _0813C366
|
||||
adds r0, r7, 0x5
|
||||
b _0813C390
|
||||
_0813C366:
|
||||
adds r0, r7, 0x4
|
||||
b _0813C390
|
||||
_0813C36A:
|
||||
add r3, sp, 0x1C
|
||||
ldr r2, [sp, 0x28]
|
||||
str r2, [sp]
|
||||
str r7, [sp, 0x4]
|
||||
mov r0, r10
|
||||
str r0, [sp, 0x8]
|
||||
ldr r2, [sp, 0x2C]
|
||||
str r2, [sp, 0xC]
|
||||
ldr r0, [sp, 0x30]
|
||||
str r0, [sp, 0x10]
|
||||
ldr r0, [sp, 0x24]
|
||||
add r2, sp, 0x14
|
||||
bl sub_813C3AC
|
||||
ldr r1, [sp, 0x24]
|
||||
ldr r0, _0813C398 @ =gGlyphInfo
|
||||
adds r0, 0x80
|
||||
ldrb r0, [r0]
|
||||
_0813C38E:
|
||||
adds r0, r7, r0
|
||||
_0813C390:
|
||||
lsls r0, 24
|
||||
lsrs r7, r0, 24
|
||||
b _0813C0AC
|
||||
.align 2, 0
|
||||
_0813C398: .4byte gGlyphInfo
|
||||
_0813C39C:
|
||||
add sp, 0x38
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end HelpSystemRenderText
|
||||
|
||||
thumb_func_start sub_813C3AC
|
||||
sub_813C3AC: @ 813C3AC
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x14
|
||||
adds r7, r2, 0
|
||||
mov r8, r3
|
||||
ldr r2, [sp, 0x38]
|
||||
ldr r3, [sp, 0x3C]
|
||||
ldr r4, [sp, 0x40]
|
||||
ldr r5, [sp, 0x44]
|
||||
lsls r0, 24
|
||||
lsrs r6, r0, 24
|
||||
lsls r1, 16
|
||||
lsrs r0, r1, 16
|
||||
adds r1, r0, 0
|
||||
lsls r2, 24
|
||||
lsrs r2, 24
|
||||
mov r10, r2
|
||||
lsls r3, 24
|
||||
lsrs r3, 24
|
||||
mov r9, r3
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
lsls r5, 24
|
||||
lsrs r5, 24
|
||||
cmp r6, 0
|
||||
bne _0813C3EE
|
||||
movs r1, 0
|
||||
bl DecompressGlyphFont0
|
||||
b _0813C402
|
||||
_0813C3EE:
|
||||
cmp r6, 0x5
|
||||
bne _0813C3FA
|
||||
movs r1, 0
|
||||
bl DecompressGlyphFont5
|
||||
b _0813C402
|
||||
_0813C3FA:
|
||||
adds r0, r1, 0
|
||||
movs r1, 0
|
||||
bl DecompressGlyphFont2
|
||||
_0813C402:
|
||||
ldr r1, _0813C450 @ =gGlyphInfo
|
||||
str r1, [r7]
|
||||
movs r2, 0
|
||||
movs r0, 0x10
|
||||
strh r0, [r7, 0x4]
|
||||
strh r0, [r7, 0x6]
|
||||
ldr r0, [sp, 0x34]
|
||||
mov r3, r8
|
||||
str r0, [r3]
|
||||
lsls r0, r4, 3
|
||||
strh r0, [r3, 0x4]
|
||||
lsls r0, r5, 3
|
||||
strh r0, [r3, 0x6]
|
||||
mov r0, r10
|
||||
str r0, [sp]
|
||||
mov r3, r9
|
||||
str r3, [sp, 0x4]
|
||||
adds r0, r1, 0
|
||||
adds r0, 0x80
|
||||
ldrb r0, [r0]
|
||||
str r0, [sp, 0x8]
|
||||
adds r1, 0x81
|
||||
ldrb r0, [r1]
|
||||
str r0, [sp, 0xC]
|
||||
str r2, [sp, 0x10]
|
||||
adds r0, r7, 0
|
||||
mov r1, r8
|
||||
movs r3, 0
|
||||
bl BlitBitmapRect4Bit
|
||||
add sp, 0x14
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0813C450: .4byte gGlyphInfo
|
||||
thumb_func_end sub_813C3AC
|
||||
|
||||
thumb_func_start sub_813C454
|
||||
sub_813C454: @ 813C454
|
||||
push {r4,lr}
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ EventScript_17064A:: @ 817064A
|
|||
setflag FLAG_0x235
|
||||
setflag FLAG_0x031
|
||||
setflag FLAG_0x234
|
||||
setflag FLAG_0x834
|
||||
setflag FLAG_SYS_NOT_SOMEONES_PC
|
||||
goto EventScript_170640
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@
|
|||
#define FLAG_0x82C 0x82C
|
||||
#define FLAG_0x82F 0x82F
|
||||
#define FLAG_0x830 0x830
|
||||
#define FLAG_0x834 0x834
|
||||
#define FLAG_SYS_NOT_SOMEONES_PC 0x834
|
||||
#define FLAG_0x83C 0x83C
|
||||
#define FLAG_0x83E 0x83E
|
||||
#define FLAG_0x841 0x841
|
||||
|
|
|
|||
|
|
@ -143,6 +143,8 @@ extern const u8 gUnknown_841DFBE[];
|
|||
extern const u8 gUnknown_841DFC9[];
|
||||
|
||||
// help_system
|
||||
extern const u8 gUnknown_841CB3C[];
|
||||
extern const u8 gUnknown_841CB41[];
|
||||
extern const u8 gUnknown_841CB49[];
|
||||
extern const u8 gUnknown_841CB4E[];
|
||||
|
||||
|
|
|
|||
|
|
@ -68,7 +68,8 @@
|
|||
#define CHAR_y 0xED
|
||||
#define CHAR_z 0xEE
|
||||
#define CHAR_SPECIAL_F7 0xF7
|
||||
#define CHAR_SPECIAL_F9 0xF9
|
||||
#define CHAR_KEYPAD_ICON 0xF8
|
||||
#define CHAR_EXTRA_EMOJI 0xF9
|
||||
#define CHAR_COLON 0xF0
|
||||
#define CHAR_PROMPT_SCROLL 0xFA // waits for button press and scrolls dialog
|
||||
#define CHAR_PROMPT_CLEAR 0xFB // waits for button press and clears dialog
|
||||
|
|
@ -192,6 +193,8 @@ extern u8 gStringVar2[];
|
|||
extern u8 gStringVar3[];
|
||||
extern u8 gStringVar4[];
|
||||
|
||||
extern const u8 gKeypadIconTiles[];
|
||||
|
||||
void SetFontsPointer(const struct FontInfo *fonts);
|
||||
void DeactivateAllTextPrinters(void);
|
||||
u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16));
|
||||
|
|
@ -248,6 +251,7 @@ s32 GetGlyphWidthFont1(u16 glyphId, bool32 isJapanese);
|
|||
void DecompressGlyphFont9(u16 glyphId);
|
||||
s32 GetGlyphWidthFont3(u16 glyphId, bool32 isJapanese);
|
||||
s32 GetGlyphWidthFont4(u16 glyphId, bool32 isJapanese);
|
||||
void DecompressGlyphFont5(u16 glyphId, bool32 isJapanese);
|
||||
s32 GetGlyphWidthFont5(u16 glyphId, bool32 isJapanese);
|
||||
void sub_80062B0(struct Sprite *sprite);
|
||||
u8 CreateTextCursorSpriteForOakSpeech(u8 sheetId, u16 x, u16 y, u8 priority, u8 subpriority);
|
||||
|
|
|
|||
|
|
@ -9,7 +9,12 @@
|
|||
#include "sound.h"
|
||||
#include "strings.h"
|
||||
#include "text.h"
|
||||
#include "blit.h"
|
||||
#include "event_data.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/flags.h"
|
||||
|
||||
extern u8 gGlyphInfo[];
|
||||
|
||||
struct DmaController
|
||||
{
|
||||
|
|
@ -51,6 +56,7 @@ void sub_813BF50(u8);
|
|||
void sub_813BC2C(void);
|
||||
void sub_813BC48(void);
|
||||
void sub_813BC5C(void);
|
||||
void sub_813C3AC(u8, u16, struct Bitmap *, struct Bitmap *, u8 *, u8, u8, u8, u8);
|
||||
void sub_813C454(const u8 * str);
|
||||
void sub_813C5D4(void);
|
||||
|
||||
|
|
@ -379,3 +385,575 @@ void sub_813BFC0(u8 mode)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_813C004(u8 a0, u8 mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case 0:
|
||||
sub_813BC78(0x1FF, 28, 3, 1, 1, 0);
|
||||
sub_813BC78(0x1FF, 28, 18, 1, 1, 0);
|
||||
break;
|
||||
case 1:
|
||||
if (a0 == 0)
|
||||
sub_813BC78(0x1FE, 28, 3, 1, 1, 0);
|
||||
else
|
||||
sub_813BC78(0x1FD, 28, 18, 1, 1, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#define HelpSystemHandleRenderGlyph(character) ({\
|
||||
do {sub_813C3AC(font, character, &srcBlit, &destBlit, dest, x, y, width, height);} while (0); font;\
|
||||
})
|
||||
|
||||
#ifdef NONMATCHING
|
||||
void HelpSystemRenderText(u8 font, u8 * dest, const u8 * src, u8 x, u8 y, u8 width, u8 height)
|
||||
{
|
||||
// font -> sp+24
|
||||
// dest -> sp+28
|
||||
// src -> r9
|
||||
// x -> sp+34
|
||||
// y -> r10
|
||||
// width -> sp+2C
|
||||
// height -> sp+30
|
||||
struct Bitmap srcBlit;
|
||||
struct Bitmap destBlit;
|
||||
u8 i;
|
||||
u8 orig_x = x;
|
||||
s32 clearPixels;
|
||||
|
||||
while (1)
|
||||
{
|
||||
u16 curChar = *src++;
|
||||
switch (curChar)
|
||||
{
|
||||
case EOS:
|
||||
return;
|
||||
case PLACEHOLDER_BEGIN:
|
||||
curChar = *src++;
|
||||
if (curChar == 1) {
|
||||
for (i = 0; i < 10; i++)
|
||||
{
|
||||
if (gSaveBlock2Ptr->playerName[i] == EOS)
|
||||
break;
|
||||
HelpSystemHandleRenderGlyph(gSaveBlock2Ptr->playerName[i]);
|
||||
x += gGlyphInfo[0x80];
|
||||
}
|
||||
}
|
||||
else if (curChar == 2)
|
||||
{
|
||||
for (i = 0; ; i++)
|
||||
{
|
||||
if (FlagGet(FLAG_SYS_NOT_SOMEONES_PC) == TRUE)
|
||||
{
|
||||
if (gUnknown_841CB3C[i] == EOS)
|
||||
break;
|
||||
HelpSystemHandleRenderGlyph(gUnknown_841CB3C[i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gUnknown_841CB41[i] == EOS)
|
||||
break;
|
||||
HelpSystemHandleRenderGlyph(gUnknown_841CB41[i]);
|
||||
}
|
||||
x += gGlyphInfo[0x80];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case CHAR_PROMPT_SCROLL:
|
||||
case CHAR_PROMPT_CLEAR:
|
||||
case CHAR_NEWLINE:
|
||||
x = orig_x;
|
||||
y += gGlyphInfo[0x81] + 1;
|
||||
break;
|
||||
case EXT_CTRL_CODE_BEGIN:
|
||||
curChar = *src++;
|
||||
switch (curChar)
|
||||
{
|
||||
case 4:
|
||||
src++;
|
||||
//fallthrough
|
||||
case 11:
|
||||
case 16:
|
||||
src++;
|
||||
//fallthrough
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 5:
|
||||
case 6:
|
||||
case 8:
|
||||
case 12:
|
||||
case 13:
|
||||
case 14:
|
||||
src++;
|
||||
break;
|
||||
case 19:
|
||||
clearPixels = *src + orig_x - x;
|
||||
if (clearPixels > 0)
|
||||
{
|
||||
destBlit.pixels = dest;
|
||||
destBlit.width = width * 8;
|
||||
destBlit.height = height * 8;
|
||||
FillBitmapRect4Bit(&destBlit, x, y, clearPixels, GetFontAttribute(font, 1), 0);
|
||||
x += clearPixels;
|
||||
}
|
||||
src++;
|
||||
break;
|
||||
case 17:
|
||||
case 18:
|
||||
case 20:
|
||||
src++;
|
||||
break;
|
||||
case 7:
|
||||
case 9:
|
||||
case 10:
|
||||
case 15:
|
||||
case 21:
|
||||
case 22:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case CHAR_KEYPAD_ICON:
|
||||
curChar = *src++;
|
||||
srcBlit.pixels = (u8 *)gKeypadIconTiles + 0x20 * GetKeypadIconTileOffset(curChar);
|
||||
srcBlit.width = 0x80;
|
||||
srcBlit.height = 0x80;
|
||||
destBlit.pixels = dest;
|
||||
destBlit.width = width * 8;
|
||||
destBlit.height = height * 8;
|
||||
BlitBitmapRect4Bit(&srcBlit, &destBlit, 0, 0, x, y, GetKeypadIconWidth(curChar), GetKeypadIconHeight(curChar), 0);
|
||||
x += GetKeypadIconWidth(curChar);
|
||||
break;
|
||||
case CHAR_EXTRA_EMOJI:
|
||||
curChar = 0x100 | *src++;
|
||||
//fallthrough
|
||||
default:
|
||||
if (curChar == CHAR_SPACE)
|
||||
{
|
||||
if (font == 0)
|
||||
x += 5;
|
||||
else
|
||||
x += 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
HelpSystemHandleRenderGlyph(curChar);
|
||||
x += gGlyphInfo[0x80];
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
void HelpSystemRenderText(u8 font, u8 * dest, const u8 * src, u8 x, u8 y, u8 width, u8 height)
|
||||
{
|
||||
asm_unified("\tpush {r4-r7,lr}\n"
|
||||
"\tmov r7, r10\n"
|
||||
"\tmov r6, r9\n"
|
||||
"\tmov r5, r8\n"
|
||||
"\tpush {r5-r7}\n"
|
||||
"\tsub sp, 0x38\n"
|
||||
"\tstr r1, [sp, 0x28]\n"
|
||||
"\tmov r9, r2\n"
|
||||
"\tldr r1, [sp, 0x58]\n"
|
||||
"\tldr r2, [sp, 0x5C]\n"
|
||||
"\tldr r4, [sp, 0x60]\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r0, 24\n"
|
||||
"\tstr r0, [sp, 0x24]\n"
|
||||
"\tlsls r3, 24\n"
|
||||
"\tlsrs r7, r3, 24\n"
|
||||
"\tlsls r1, 24\n"
|
||||
"\tlsrs r1, 24\n"
|
||||
"\tmov r10, r1\n"
|
||||
"\tlsls r2, 24\n"
|
||||
"\tlsrs r2, 24\n"
|
||||
"\tstr r2, [sp, 0x2C]\n"
|
||||
"\tlsls r4, 24\n"
|
||||
"\tlsrs r4, 24\n"
|
||||
"\tstr r4, [sp, 0x30]\n"
|
||||
"\tstr r7, [sp, 0x34]\n"
|
||||
"_0813C0AC_masterLoop:\n"
|
||||
"\tmov r0, r9\n"
|
||||
"\tldrb r1, [r0]\n"
|
||||
"\tmovs r2, 0x1\n"
|
||||
"\tadd r9, r2\n"
|
||||
"\tadds r0, r1, 0\n"
|
||||
"\tsubs r0, 0xF8\n"
|
||||
"\tcmp r0, 0x7\n"
|
||||
"\tbls _0813C0BE\n"
|
||||
"\tb _0813C358\n"
|
||||
"_0813C0BE:\n"
|
||||
"\tlsls r0, 2\n"
|
||||
"\tldr r1, _0813C0C8 @ =_0813C0CC\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tldr r0, [r0]\n"
|
||||
"\tmov pc, r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0813C0C8: .4byte _0813C0CC\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0813C0CC:\n"
|
||||
"\t.4byte _0813C2D4\n"
|
||||
"\t.4byte _0813C348\n"
|
||||
"\t.4byte _0813C1E4\n"
|
||||
"\t.4byte _0813C1E4\n"
|
||||
"\t.4byte _0813C200\n"
|
||||
"\t.4byte _0813C0EC\n"
|
||||
"\t.4byte _0813C1E4\n"
|
||||
"\t.4byte _0813C39C\n"
|
||||
"_0813C0EC:\n"
|
||||
"\tmov r0, r9\n"
|
||||
"\tldrb r1, [r0]\n"
|
||||
"\tmovs r2, 0x1\n"
|
||||
"\tadd r9, r2\n"
|
||||
"\tcmp r1, 0x1\n"
|
||||
"\tbne _0813C154\n"
|
||||
"\tmovs r4, 0\n"
|
||||
"\tldr r0, _0813C14C @ =gSaveBlock2Ptr\n"
|
||||
"\tldr r1, [r0]\n"
|
||||
"\tldrb r1, [r1]\n"
|
||||
"\tcmp r1, 0xFF\n"
|
||||
"\tbeq _0813C0AC_masterLoop\n"
|
||||
"\tldr r5, _0813C150 @ =gGlyphInfo + 0x80\n"
|
||||
"_0813C106:\n"
|
||||
"\tldr r0, [r0]\n"
|
||||
"\tadds r0, r4\n"
|
||||
"\tldrb r1, [r0]\n"
|
||||
"\tldr r0, [sp, 0x28]\n"
|
||||
"\tstr r0, [sp]\n"
|
||||
"\tstr r7, [sp, 0x4]\n"
|
||||
"\tmov r2, r10\n"
|
||||
"\tstr r2, [sp, 0x8]\n"
|
||||
"\tldr r0, [sp, 0x2C]\n"
|
||||
"\tstr r0, [sp, 0xC]\n"
|
||||
"\tldr r2, [sp, 0x30]\n"
|
||||
"\tstr r2, [sp, 0x10]\n"
|
||||
"\tldr r0, [sp, 0x24]\n"
|
||||
"\tadd r2, sp, 0x14\n"
|
||||
"\tadd r3, sp, 0x1C\n"
|
||||
"\tbl sub_813C3AC\n"
|
||||
"\tldr r0, [sp, 0x24]\n"
|
||||
"\tldrb r0, [r5]\n"
|
||||
"\tadds r0, r7, r0\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r7, r0, 24\n"
|
||||
"\tadds r0, r4, 0x1\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r4, r0, 24\n"
|
||||
"\tcmp r4, 0x9\n"
|
||||
"\tbhi _0813C0AC_masterLoop\n"
|
||||
"\tldr r0, _0813C14C @ =gSaveBlock2Ptr\n"
|
||||
"\tldr r1, [r0]\n"
|
||||
"\tadds r1, r4\n"
|
||||
"\tldrb r1, [r1]\n"
|
||||
"\tcmp r1, 0xFF\n"
|
||||
"\tbne _0813C106\n"
|
||||
"\tb _0813C0AC_masterLoop\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0813C14C: .4byte gSaveBlock2Ptr\n"
|
||||
"_0813C150: .4byte gGlyphInfo + 0x80\n"
|
||||
"_0813C154:\n"
|
||||
"\tcmp r1, 0x2\n"
|
||||
"\tbne _0813C0AC_masterLoop\n"
|
||||
"\tmovs r4, 0\n"
|
||||
"\tldr r5, _0813C160 @ =gGlyphInfo + 0x80\n"
|
||||
"\tb _0813C1BC\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0813C160: .4byte gGlyphInfo + 0x80\n"
|
||||
"_0813C164:\n"
|
||||
"\tldrb r1, [r1]\n"
|
||||
"\tldr r2, [sp, 0x28]\n"
|
||||
"\tstr r2, [sp]\n"
|
||||
"\tstr r7, [sp, 0x4]\n"
|
||||
"\tmov r0, r10\n"
|
||||
"\tstr r0, [sp, 0x8]\n"
|
||||
"\tldr r2, [sp, 0x2C]\n"
|
||||
"\tstr r2, [sp, 0xC]\n"
|
||||
"\tldr r0, [sp, 0x30]\n"
|
||||
"\tstr r0, [sp, 0x10]\n"
|
||||
"\tldr r0, [sp, 0x24]\n"
|
||||
"\tadd r2, sp, 0x14\n"
|
||||
"\tadd r3, sp, 0x1C\n"
|
||||
"\tbl sub_813C3AC\n"
|
||||
"\tb _0813C1AC\n"
|
||||
"_0813C184:\n"
|
||||
"\tldr r0, _0813C1D8 @ =gUnknown_841CB41\n"
|
||||
"\tadds r1, r4, r0\n"
|
||||
"\tldrb r0, [r1]\n"
|
||||
"\tcmp r0, 0xFF\n"
|
||||
"\tbeq _0813C0AC_masterLoop\n"
|
||||
"\tadds r1, r0, 0\n"
|
||||
"\tldr r2, [sp, 0x28]\n"
|
||||
"\tstr r2, [sp]\n"
|
||||
"\tstr r7, [sp, 0x4]\n"
|
||||
"\tmov r0, r10\n"
|
||||
"\tstr r0, [sp, 0x8]\n"
|
||||
"\tldr r2, [sp, 0x2C]\n"
|
||||
"\tstr r2, [sp, 0xC]\n"
|
||||
"\tldr r0, [sp, 0x30]\n"
|
||||
"\tstr r0, [sp, 0x10]\n"
|
||||
"\tldr r0, [sp, 0x24]\n"
|
||||
"\tadd r2, sp, 0x14\n"
|
||||
"\tadd r3, sp, 0x1C\n"
|
||||
"\tbl sub_813C3AC\n"
|
||||
"_0813C1AC:\n"
|
||||
"\tldr r1, [sp, 0x24]\n"
|
||||
"\tldrb r0, [r5]\n"
|
||||
"\tadds r0, r7, r0\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r7, r0, 24\n"
|
||||
"\tadds r0, r4, 0x1\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r4, r0, 24\n"
|
||||
"_0813C1BC:\n"
|
||||
"\tldr r0, _0813C1DC @ =0x00000834\n"
|
||||
"\tbl FlagGet\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r0, 24\n"
|
||||
"\tcmp r0, 0x1\n"
|
||||
"\tbne _0813C184\n"
|
||||
"\tldr r0, _0813C1E0 @ =gUnknown_841CB3C\n"
|
||||
"\tadds r1, r4, r0\n"
|
||||
"\tldrb r0, [r1]\n"
|
||||
"\tcmp r0, 0xFF\n"
|
||||
"\tbne _0813C164\n"
|
||||
"\tb _0813C0AC_masterLoop\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0813C1D8: .4byte gUnknown_841CB41\n"
|
||||
"_0813C1DC: .4byte 0x00000834\n"
|
||||
"_0813C1E0: .4byte gUnknown_841CB3C\n"
|
||||
"_0813C1E4:\n"
|
||||
"\tldr r7, [sp, 0x34]\n"
|
||||
"\tldr r1, _0813C1FC @ =gGlyphInfo\n"
|
||||
"\tadds r1, 0x81\n"
|
||||
"\tmov r0, r10\n"
|
||||
"\tadds r0, 0x1\n"
|
||||
"\tldrb r1, [r1]\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r0, 24\n"
|
||||
"\tmov r10, r0\n"
|
||||
"\tb _0813C0AC_masterLoop\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0813C1FC: .4byte gGlyphInfo\n"
|
||||
"_0813C200:\n"
|
||||
"\tmov r2, r9\n"
|
||||
"\tldrb r1, [r2]\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tadd r9, r0\n"
|
||||
"\tsubs r0, r1, 0x1\n"
|
||||
"\tcmp r0, 0x15\n"
|
||||
"\tbls _0813C210\n"
|
||||
"\tb _0813C0AC_masterLoop\n"
|
||||
"_0813C210:\n"
|
||||
"\tlsls r0, 2\n"
|
||||
"\tldr r1, _0813C21C @ =_0813C220\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tldr r0, [r0]\n"
|
||||
"\tmov pc, r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0813C21C: .4byte _0813C220\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0813C220:\n"
|
||||
"\t.4byte _0813C2C8\n"
|
||||
"\t.4byte _0813C2C8\n"
|
||||
"\t.4byte _0813C2C8\n"
|
||||
"\t.4byte _0813C278\n"
|
||||
"\t.4byte _0813C2C8\n"
|
||||
"\t.4byte _0813C2C8\n"
|
||||
"\t.4byte _0813C0AC_masterLoop\n"
|
||||
"\t.4byte _0813C2C8\n"
|
||||
"\t.4byte _0813C0AC_masterLoop\n"
|
||||
"\t.4byte _0813C0AC_masterLoop\n"
|
||||
"\t.4byte _0813C27C\n"
|
||||
"\t.4byte _0813C2C8\n"
|
||||
"\t.4byte _0813C2C8\n"
|
||||
"\t.4byte _0813C2C8\n"
|
||||
"\t.4byte _0813C0AC_masterLoop\n"
|
||||
"\t.4byte _0813C27C\n"
|
||||
"\t.4byte _0813C2CE\n"
|
||||
"\t.4byte _0813C2CE\n"
|
||||
"\t.4byte _0813C282\n"
|
||||
"\t.4byte _0813C2CE\n"
|
||||
"\t.4byte _0813C0AC_masterLoop\n"
|
||||
"\t.4byte _0813C0AC_masterLoop\n"
|
||||
"_0813C278:\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tadd r9, r1\n"
|
||||
"_0813C27C:\n"
|
||||
"\tmovs r2, 0x1\n"
|
||||
"\tadd r9, r2\n"
|
||||
"\tb _0813C2C8\n"
|
||||
"_0813C282:\n"
|
||||
"\tmov r2, r9\n"
|
||||
"\tldrb r0, [r2]\n"
|
||||
"\tldr r1, [sp, 0x34]\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tsubs r6, r0, r7\n"
|
||||
"\tcmp r6, 0\n"
|
||||
"\tble _0813C2C8\n"
|
||||
"\tldr r2, [sp, 0x28]\n"
|
||||
"\tstr r2, [sp, 0x1C]\n"
|
||||
"\tldr r1, [sp, 0x2C]\n"
|
||||
"\tlsls r0, r1, 3\n"
|
||||
"\tadd r4, sp, 0x1C\n"
|
||||
"\tmovs r5, 0\n"
|
||||
"\tstrh r0, [r4, 0x4]\n"
|
||||
"\tldr r2, [sp, 0x30]\n"
|
||||
"\tlsls r0, r2, 3\n"
|
||||
"\tstrh r0, [r4, 0x6]\n"
|
||||
"\tldr r0, [sp, 0x24]\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tbl GetFontAttribute\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r0, 24\n"
|
||||
"\tlsls r3, r6, 16\n"
|
||||
"\tlsrs r3, 16\n"
|
||||
"\tstr r0, [sp]\n"
|
||||
"\tstr r5, [sp, 0x4]\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tadds r1, r7, 0\n"
|
||||
"\tmov r2, r10\n"
|
||||
"\tbl FillBitmapRect4Bit\n"
|
||||
"\tadds r0, r7, r6\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r7, r0, 24\n"
|
||||
"_0813C2C8:\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tadd r9, r0\n"
|
||||
"\tb _0813C0AC_masterLoop\n"
|
||||
"_0813C2CE:\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tadd r9, r1\n"
|
||||
"\tb _0813C0AC_masterLoop\n"
|
||||
"_0813C2D4:\n"
|
||||
"\tmov r2, r9\n"
|
||||
"\tldrb r1, [r2]\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tadd r9, r0\n"
|
||||
"\tadds r6, r1, 0\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tbl GetKeypadIconTileOffset\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r0, 19\n"
|
||||
"\tldr r1, _0813C344 @ =gKeypadIconTiles\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tstr r0, [sp, 0x14]\n"
|
||||
"\tadd r1, sp, 0x14\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tmov r8, r2\n"
|
||||
"\tmovs r0, 0x80\n"
|
||||
"\tstrh r0, [r1, 0x4]\n"
|
||||
"\tstrh r0, [r1, 0x6]\n"
|
||||
"\tldr r0, [sp, 0x28]\n"
|
||||
"\tstr r0, [sp, 0x1C]\n"
|
||||
"\tldr r1, [sp, 0x2C]\n"
|
||||
"\tlsls r0, r1, 3\n"
|
||||
"\tadd r5, sp, 0x1C\n"
|
||||
"\tstrh r0, [r5, 0x4]\n"
|
||||
"\tldr r2, [sp, 0x30]\n"
|
||||
"\tlsls r0, r2, 3\n"
|
||||
"\tstrh r0, [r5, 0x6]\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tbl GetKeypadIconWidth\n"
|
||||
"\tadds r4, r0, 0\n"
|
||||
"\tlsls r4, 24\n"
|
||||
"\tlsrs r4, 24\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tbl GetKeypadIconHeight\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r0, 24\n"
|
||||
"\tstr r7, [sp]\n"
|
||||
"\tmov r1, r10\n"
|
||||
"\tstr r1, [sp, 0x4]\n"
|
||||
"\tstr r4, [sp, 0x8]\n"
|
||||
"\tstr r0, [sp, 0xC]\n"
|
||||
"\tmov r2, r8\n"
|
||||
"\tstr r2, [sp, 0x10]\n"
|
||||
"\tadd r0, sp, 0x14\n"
|
||||
"\tadds r1, r5, 0\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tbl BlitBitmapRect4Bit\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tbl GetKeypadIconWidth\n"
|
||||
"\tb _0813C38E\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0813C344: .4byte gKeypadIconTiles\n"
|
||||
"_0813C348:\n"
|
||||
"\tmov r0, r9\n"
|
||||
"\tldrb r1, [r0]\n"
|
||||
"\tmovs r2, 0x80\n"
|
||||
"\tlsls r2, 1\n"
|
||||
"\tadds r0, r2, 0\n"
|
||||
"\torrs r1, r0\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tadd r9, r0\n"
|
||||
"_0813C358:\n"
|
||||
"\tcmp r1, 0\n"
|
||||
"\tbne _0813C36A\n"
|
||||
"\tldr r1, [sp, 0x24]\n"
|
||||
"\tcmp r1, 0\n"
|
||||
"\tbne _0813C366\n"
|
||||
"\tadds r0, r7, 0x5\n"
|
||||
"\tb _0813C390\n"
|
||||
"_0813C366:\n"
|
||||
"\tadds r0, r7, 0x4\n"
|
||||
"\tb _0813C390\n"
|
||||
"_0813C36A:\n"
|
||||
"\tadd r3, sp, 0x1C\n"
|
||||
"\tldr r2, [sp, 0x28]\n"
|
||||
"\tstr r2, [sp]\n"
|
||||
"\tstr r7, [sp, 0x4]\n"
|
||||
"\tmov r0, r10\n"
|
||||
"\tstr r0, [sp, 0x8]\n"
|
||||
"\tldr r2, [sp, 0x2C]\n"
|
||||
"\tstr r2, [sp, 0xC]\n"
|
||||
"\tldr r0, [sp, 0x30]\n"
|
||||
"\tstr r0, [sp, 0x10]\n"
|
||||
"\tldr r0, [sp, 0x24]\n"
|
||||
"\tadd r2, sp, 0x14\n"
|
||||
"\tbl sub_813C3AC\n"
|
||||
"\tldr r1, [sp, 0x24]\n"
|
||||
"\tldr r0, _0813C398 @ =gGlyphInfo\n"
|
||||
"\tadds r0, 0x80\n"
|
||||
"\tldrb r0, [r0]\n"
|
||||
"_0813C38E:\n"
|
||||
"\tadds r0, r7, r0\n"
|
||||
"_0813C390:\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r7, r0, 24\n"
|
||||
"\tb _0813C0AC_masterLoop\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0813C398: .4byte gGlyphInfo\n"
|
||||
"_0813C39C:\n"
|
||||
"\tadd sp, 0x38\n"
|
||||
"\tpop {r3-r5}\n"
|
||||
"\tmov r8, r3\n"
|
||||
"\tmov r9, r4\n"
|
||||
"\tmov r10, r5\n"
|
||||
"\tpop {r4-r7}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0");
|
||||
}
|
||||
#endif //NONMATCHING
|
||||
|
||||
void sub_813C3AC(u8 font, u16 glyph, struct Bitmap *srcBlit, struct Bitmap *destBlit, u8 *destBuffer, u8 x, u8 y, u8 width, u8 height)
|
||||
{
|
||||
if (font == 0)
|
||||
DecompressGlyphFont0(glyph, FALSE);
|
||||
else if (font == 5)
|
||||
DecompressGlyphFont5(glyph, FALSE);
|
||||
else
|
||||
DecompressGlyphFont2(glyph, FALSE);
|
||||
srcBlit->pixels = gGlyphInfo;
|
||||
srcBlit->width = 16;
|
||||
srcBlit->height = 16;
|
||||
destBlit->pixels = destBuffer;
|
||||
destBlit->width = width * 8;
|
||||
destBlit->height = height * 8;
|
||||
BlitBitmapRect4Bit(srcBlit, destBlit, 0, 0, x, y, gGlyphInfo[0x80], gGlyphInfo[0x81], 0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
#include "global.h"
|
||||
#include "songs.h"
|
||||
#include "sound.h"
|
||||
#include "task.h"
|
||||
#include "malloc.h"
|
||||
|
|
@ -23,6 +22,7 @@
|
|||
#include "map_obj_8097404.h"
|
||||
#include "unk_810c3a4.h"
|
||||
#include "constants/movement_commands.h"
|
||||
#include "constants/songs.h"
|
||||
#include "vs_seeker.h"
|
||||
|
||||
typedef enum
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user