summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-x.travis/calcrom/calcrom.pl30
-rw-r--r--asm/text_printer.s1517
-rw-r--r--ld_script.txt1
-rw-r--r--src/text_printer.c115
4 files changed, 137 insertions, 1526 deletions
diff --git a/.travis/calcrom/calcrom.pl b/.travis/calcrom/calcrom.pl
index f7966d6ea..fb0a9df8c 100755
--- a/.travis/calcrom/calcrom.pl
+++ b/.travis/calcrom/calcrom.pl
@@ -145,9 +145,16 @@ my $docPct = sprintf("%.4f", 100 * $documented / $total_syms);
my $partialPct = sprintf("%.4f", 100 * $partial_documented / $total_syms);
my $undocPct = sprintf("%.4f", 100 * $undocumented / $total_syms);
-print "$total total bytes of code\n";
-print "$src bytes of code in src ($srcPct%)\n";
-print "$asm bytes of code in asm ($asmPct%)\n";
+if ($asm == 0)
+{
+ print "Code decompilation is 100% complete\n"
+}
+else
+{
+ print "$total total bytes of code\n";
+ print "$src bytes of code in src ($srcPct%)\n";
+ print "$asm bytes of code in asm ($asmPct%)\n";
+}
print "\n";
if ($verbose != 0)
@@ -160,12 +167,19 @@ if ($verbose != 0)
print "\n";
}
-print "$total_syms total symbols\n";
-print "$documented symbols documented ($docPct%)\n";
-print "$partial_documented symbols partially documented ($partialPct%)\n";
-print "$undocumented symbols undocumented ($undocPct%)\n";
-
+if ($partial_documented == 0 && $undocumented == 0)
+{
+ print "Documentation is 100% complete\n"
+}
+else
+{
+ print "$total_syms total symbols\n";
+ print "$documented symbols documented ($docPct%)\n";
+ print "$partial_documented symbols partially documented ($partialPct%)\n";
+ print "$undocumented symbols undocumented ($undocPct%)\n";
+}
print "\n";
+
my $dataTotal = $srcdata + $data;
my $srcDataPct = sprintf("%.4f", 100 * $srcdata / $dataTotal);
my $dataPct = sprintf("%.4f", 100 * $data / $dataTotal);
diff --git a/asm/text_printer.s b/asm/text_printer.s
deleted file mode 100644
index 531ce3da7..000000000
--- a/asm/text_printer.s
+++ /dev/null
@@ -1,1517 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start CopyGlyphToWindow
-CopyGlyphToWindow: @ 8003014
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x6C
- adds r6, r0, 0
- ldr r0, _08003084 @ =gWindows
- mov r9, r0
- ldrb r1, [r6, 0x4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- mov r1, r9
- adds r2, r0, r1
- ldrb r0, [r2, 0x3]
- lsls r0, 3
- ldrb r1, [r6, 0x8]
- subs r1, r0, r1
- ldr r3, _08003088 @ =gGlyphInfo
- mov r8, r3
- mov r0, r8
- adds r0, 0x80
- ldrb r7, [r0]
- cmp r1, r7
- bge _0800304A
- adds r7, r1, 0
-_0800304A:
- ldrb r0, [r2, 0x4]
- lsls r0, 3
- ldrb r4, [r6, 0x9]
- subs r0, r4
- adds r1, r3, 0
- adds r1, 0x81
- ldrb r1, [r1]
- mov r10, r1
- adds r5, r4, 0
- cmp r0, r10
- bge _08003062
- mov r10, r0
-_08003062:
- movs r1, 0
- cmp r7, 0x8
- ble _0800306A
- movs r1, 0x1
-_0800306A:
- mov r0, r10
- cmp r0, 0x8
- ble _08003074
- movs r0, 0x2
- orrs r1, r0
-_08003074:
- cmp r1, 0x1
- beq _08003134
- cmp r1, 0x1
- bgt _0800308C
- cmp r1, 0
- beq _0800309A
- b _080035FC
- .align 2, 0
-_08003084: .4byte gWindows
-_08003088: .4byte gGlyphInfo
-_0800308C:
- cmp r1, 0x2
- bne _08003092
- b _08003268
-_08003092:
- cmp r1, 0x3
- bne _08003098
- b _080033A0
-_08003098:
- b _080035FC
-_0800309A:
- adds r2, r3, 0
- movs r1, 0
- adds r0, r5, 0
- cmp r1, r10
- blt _080030A6
- b _080035FC
-_080030A6:
- ldm r2!, {r3}
- str r3, [sp]
- movs r5, 0
- ldrb r4, [r6, 0x8]
- str r2, [sp, 0x28]
- adds r1, 0x1
- str r1, [sp, 0x20]
- adds r1, r0, 0x1
- str r1, [sp, 0x24]
- cmp r5, r7
- bge _08003124
- ldr r2, _08003130 @ =gWindows
- mov r12, r2
- asrs r3, r0, 3
- mov r9, r3
- lsls r0, 29
- lsrs r0, 27
- mov r8, r0
-_080030CA:
- ldrb r0, [r6, 0x4]
- lsls r3, r0, 1
- adds r3, r0
- lsls r3, 2
- mov r1, r12
- adds r1, 0x8
- adds r1, r3, r1
- asrs r2, r4, 1
- movs r0, 0x3
- ands r2, r0
- ldr r1, [r1]
- adds r1, r2
- asrs r0, r4, 3
- lsls r0, 5
- adds r1, r0
- add r3, r12
- ldrb r0, [r3, 0x3]
- mov r2, r9
- muls r2, r0
- adds r0, r2, 0
- lsls r0, 5
- adds r1, r0
- mov r0, r8
- adds r3, r1, r0
- lsls r0, r5, 2
- ldr r2, [sp]
- lsrs r2, r0
- movs r0, 0xF
- ands r2, r0
- cmp r2, 0
- beq _0800311C
- movs r0, 0x1
- ands r0, r4
- lsls r0, 2
- lsls r2, r0
- movs r1, 0xF0
- asrs r1, r0
- ldrb r0, [r3]
- ands r1, r0
- orrs r2, r1
- strb r2, [r3]
-_0800311C:
- adds r5, 0x1
- adds r4, 0x1
- cmp r5, r7
- blt _080030CA
-_08003124:
- ldr r2, [sp, 0x28]
- ldr r1, [sp, 0x20]
- ldr r0, [sp, 0x24]
- cmp r1, r10
- blt _080030A6
- b _080035FC
- .align 2, 0
-_08003130: .4byte gWindows
-_08003134:
- movs r2, 0
- adds r1, r5, 0
- cmp r2, r10
- bge _080031BE
-_0800313C:
- ldm r3!, {r0}
- mov r9, r0
- movs r5, 0
- ldrb r4, [r6, 0x8]
- lsls r0, r1, 29
- str r3, [sp, 0x38]
- adds r2, 0x1
- str r2, [sp, 0x30]
- adds r2, r1, 0x1
- str r2, [sp, 0x34]
- asrs r1, 3
- mov r12, r1
- lsrs r0, 27
- mov r8, r0
-_08003158:
- ldrb r0, [r6, 0x4]
- lsls r3, r0, 1
- adds r3, r0
- lsls r3, 2
- ldr r1, _08003260 @ =gWindows
- adds r1, 0x8
- adds r1, r3, r1
- asrs r2, r4, 1
- movs r0, 0x3
- ands r2, r0
- ldr r1, [r1]
- adds r1, r2
- asrs r0, r4, 3
- lsls r0, 5
- adds r1, r0
- ldr r0, _08003260 @ =gWindows
- adds r3, r0
- ldrb r0, [r3, 0x3]
- mov r2, r12
- muls r2, r0
- adds r0, r2, 0
- lsls r0, 5
- adds r1, r0
- mov r0, r8
- adds r3, r1, r0
- lsls r0, r5, 2
- mov r2, r9
- lsrs r2, r0
- movs r0, 0xF
- ands r2, r0
- cmp r2, 0
- beq _080031AC
- movs r0, 0x1
- ands r0, r4
- lsls r0, 2
- lsls r2, r0
- movs r1, 0xF0
- asrs r1, r0
- ldrb r0, [r3]
- ands r1, r0
- orrs r2, r1
- strb r2, [r3]
-_080031AC:
- adds r5, 0x1
- adds r4, 0x1
- cmp r5, 0x7
- ble _08003158
- ldr r3, [sp, 0x38]
- ldr r2, [sp, 0x30]
- ldr r1, [sp, 0x34]
- cmp r2, r10
- blt _0800313C
-_080031BE:
- ldr r3, _08003264 @ =gGlyphInfo + 0x20
- movs r2, 0
- ldrb r1, [r6, 0x9]
- cmp r2, r10
- blt _080031CA
- b _080035FC
-_080031CA:
- subs r7, 0x8
- str r7, [sp, 0x64]
- str r7, [sp, 0x4]
-_080031D0:
- ldm r3!, {r0}
- mov r12, r0
- movs r5, 0
- ldrb r0, [r6, 0x8]
- adds r4, r0, 0
- adds r4, 0x8
- str r3, [sp, 0x50]
- adds r2, 0x1
- str r2, [sp, 0x48]
- adds r2, r1, 0x1
- str r2, [sp, 0x4C]
- ldr r3, [sp, 0x4]
- cmp r5, r3
- bge _08003254
- ldr r7, _08003260 @ =gWindows
- asrs r0, r1, 3
- mov r9, r0
- lsls r0, r1, 29
- lsrs r0, 27
- mov r8, r0
-_080031F8:
- ldrb r0, [r6, 0x4]
- lsls r3, r0, 1
- adds r3, r0
- lsls r3, 2
- adds r1, r7, 0
- adds r1, 0x8
- adds r1, r3, r1
- asrs r2, r4, 1
- movs r0, 0x3
- ands r2, r0
- ldr r1, [r1]
- adds r1, r2
- asrs r0, r4, 3
- lsls r0, 5
- adds r1, r0
- adds r3, r7
- ldrb r0, [r3, 0x3]
- mov r2, r9
- muls r2, r0
- adds r0, r2, 0
- lsls r0, 5
- adds r1, r0
- mov r0, r8
- adds r3, r1, r0
- lsls r0, r5, 2
- mov r2, r12
- lsrs r2, r0
- movs r0, 0xF
- ands r2, r0
- cmp r2, 0
- beq _0800324A
- movs r0, 0x1
- ands r0, r4
- lsls r0, 2
- lsls r2, r0
- movs r1, 0xF0
- asrs r1, r0
- ldrb r0, [r3]
- ands r1, r0
- orrs r2, r1
- strb r2, [r3]
-_0800324A:
- adds r5, 0x1
- adds r4, 0x1
- ldr r1, [sp, 0x64]
- cmp r5, r1
- blt _080031F8
-_08003254:
- ldr r3, [sp, 0x50]
- ldr r2, [sp, 0x48]
- ldr r1, [sp, 0x4C]
- cmp r2, r10
- blt _080031D0
- b _080035FC
- .align 2, 0
-_08003260: .4byte gWindows
-_08003264: .4byte gGlyphInfo + 0x20
-_08003268:
- adds r1, r3, 0
- movs r2, 0
- adds r0, r5, 0
- mov r3, r10
- subs r3, 0x8
- str r3, [sp, 0x68]
-_08003274:
- ldm r1!, {r3}
- mov r10, r3
- movs r5, 0
- ldrb r4, [r6, 0x8]
- str r1, [sp, 0x60]
- adds r2, 0x1
- str r2, [sp, 0x58]
- adds r1, r0, 0x1
- str r1, [sp, 0x5C]
- cmp r5, r7
- bge _080032F2
- ldr r2, _08003398 @ =gWindows
- mov r12, r2
- asrs r3, r0, 3
- mov r9, r3
- lsls r0, 29
- lsrs r0, 27
- mov r8, r0
-_08003298:
- ldrb r0, [r6, 0x4]
- lsls r3, r0, 1
- adds r3, r0
- lsls r3, 2
- mov r1, r12
- adds r1, 0x8
- adds r1, r3, r1
- asrs r2, r4, 1
- movs r0, 0x3
- ands r2, r0
- ldr r1, [r1]
- adds r1, r2
- asrs r0, r4, 3
- lsls r0, 5
- adds r1, r0
- add r3, r12
- ldrb r0, [r3, 0x3]
- mov r2, r9
- muls r2, r0
- adds r0, r2, 0
- lsls r0, 5
- adds r1, r0
- mov r0, r8
- adds r3, r1, r0
- lsls r0, r5, 2
- mov r2, r10
- lsrs r2, r0
- movs r0, 0xF
- ands r2, r0
- cmp r2, 0
- beq _080032EA
- movs r0, 0x1
- ands r0, r4
- lsls r0, 2
- lsls r2, r0
- movs r1, 0xF0
- asrs r1, r0
- ldrb r0, [r3]
- ands r1, r0
- orrs r2, r1
- strb r2, [r3]
-_080032EA:
- adds r5, 0x1
- adds r4, 0x1
- cmp r5, r7
- blt _08003298
-_080032F2:
- ldr r1, [sp, 0x60]
- ldr r2, [sp, 0x58]
- ldr r0, [sp, 0x5C]
- cmp r2, 0x7
- ble _08003274
- ldr r2, _0800339C @ =gGlyphInfo + 0x40
- movs r1, 0
- ldrb r0, [r6, 0x9]
- adds r0, 0x8
- ldr r3, [sp, 0x68]
- cmp r1, r3
- blt _0800330C
- b _080035FC
-_0800330C:
- ldm r2!, {r3}
- mov r10, r3
- movs r5, 0
- ldrb r4, [r6, 0x8]
- str r2, [sp, 0x1C]
- adds r1, 0x1
- str r1, [sp, 0x14]
- adds r1, r0, 0x1
- str r1, [sp, 0x18]
- cmp r5, r7
- bge _0800338A
- ldr r2, _08003398 @ =gWindows
- mov r12, r2
- asrs r3, r0, 3
- mov r9, r3
- lsls r0, 29
- lsrs r0, 27
- mov r8, r0
-_08003330:
- ldrb r0, [r6, 0x4]
- lsls r3, r0, 1
- adds r3, r0
- lsls r3, 2
- mov r1, r12
- adds r1, 0x8
- adds r1, r3, r1
- asrs r2, r4, 1
- movs r0, 0x3
- ands r2, r0
- ldr r1, [r1]
- adds r1, r2
- asrs r0, r4, 3
- lsls r0, 5
- adds r1, r0
- add r3, r12
- ldrb r0, [r3, 0x3]
- mov r2, r9
- muls r2, r0
- adds r0, r2, 0
- lsls r0, 5
- adds r1, r0
- mov r0, r8
- adds r3, r1, r0
- lsls r0, r5, 2
- mov r2, r10
- lsrs r2, r0
- movs r0, 0xF
- ands r2, r0
- cmp r2, 0
- beq _08003382
- movs r0, 0x1
- ands r0, r4
- lsls r0, 2
- lsls r2, r0
- movs r1, 0xF0
- asrs r1, r0
- ldrb r0, [r3]
- ands r1, r0
- orrs r2, r1
- strb r2, [r3]
-_08003382:
- adds r5, 0x1
- adds r4, 0x1
- cmp r5, r7
- blt _08003330
-_0800338A:
- ldr r2, [sp, 0x1C]
- ldr r1, [sp, 0x14]
- ldr r0, [sp, 0x18]
- ldr r3, [sp, 0x68]
- cmp r1, r3
- blt _0800330C
- b _080035FC
- .align 2, 0
-_08003398: .4byte gWindows
-_0800339C: .4byte gGlyphInfo + 0x40
-_080033A0:
- mov r2, r8
- movs r3, 0
- adds r1, r4, 0
- subs r7, 0x8
- str r7, [sp, 0x64]
- mov r0, r10
- subs r0, 0x8
- str r0, [sp, 0x68]
-_080033B0:
- ldm r2!, {r0}
- mov r9, r0
- movs r5, 0
- ldrb r4, [r6, 0x8]
- lsls r0, r1, 29
- str r2, [sp, 0x2C]
- adds r3, 0x1
- mov r10, r3
- adds r2, r1, 0x1
- mov r12, r2
- asrs r1, 3
- mov r8, r1
- lsrs r7, r0, 27
-_080033CA:
- ldrb r0, [r6, 0x4]
- lsls r3, r0, 1
- adds r3, r0
- lsls r3, 2
- ldr r1, _080034D0 @ =gWindows
- adds r1, 0x8
- adds r1, r3, r1
- asrs r2, r4, 1
- movs r0, 0x3
- ands r2, r0
- ldr r1, [r1]
- adds r1, r2
- asrs r0, r4, 3
- lsls r0, 5
- adds r1, r0
- ldr r0, _080034D0 @ =gWindows
- adds r3, r0
- ldrb r0, [r3, 0x3]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- lsls r0, 5
- adds r1, r0
- adds r3, r1, r7
- lsls r0, r5, 2
- mov r2, r9
- lsrs r2, r0
- movs r0, 0xF
- ands r2, r0
- cmp r2, 0
- beq _0800341C
- movs r0, 0x1
- ands r0, r4
- lsls r0, 2
- lsls r2, r0
- movs r1, 0xF0
- asrs r1, r0
- ldrb r0, [r3]
- ands r1, r0
- orrs r2, r1
- strb r2, [r3]
-_0800341C:
- adds r5, 0x1
- adds r4, 0x1
- cmp r5, 0x7
- ble _080033CA
- ldr r2, [sp, 0x2C]
- mov r3, r10
- mov r1, r12
- cmp r3, 0x7
- ble _080033B0
- ldr r3, _080034D4 @ =gGlyphInfo + 0x20
- movs r2, 0
- ldrb r1, [r6, 0x9]
- ldr r0, [sp, 0x64]
- mov r12, r0
-_08003438:
- ldm r3!, {r0}
- mov r10, r0
- movs r5, 0
- ldrb r0, [r6, 0x8]
- adds r4, r0, 0
- adds r4, 0x8
- str r3, [sp, 0x44]
- adds r2, 0x1
- str r2, [sp, 0x3C]
- adds r2, r1, 0x1
- str r2, [sp, 0x40]
- cmp r5, r12
- bge _080034B8
- ldr r7, _080034D0 @ =gWindows
- asrs r3, r1, 3
- mov r9, r3
- lsls r0, r1, 29
- lsrs r0, 27
- mov r8, r0
-_0800345E:
- ldrb r0, [r6, 0x4]
- lsls r3, r0, 1
- adds r3, r0
- lsls r3, 2
- adds r1, r7, 0
- adds r1, 0x8
- adds r1, r3, r1
- asrs r2, r4, 1
- movs r0, 0x3
- ands r2, r0
- ldr r1, [r1]
- adds r1, r2
- asrs r0, r4, 3
- lsls r0, 5
- adds r1, r0
- adds r3, r7
- ldrb r0, [r3, 0x3]
- mov r2, r9
- muls r2, r0
- adds r0, r2, 0
- lsls r0, 5
- adds r1, r0
- mov r0, r8
- adds r3, r1, r0
- lsls r0, r5, 2
- mov r2, r10
- lsrs r2, r0
- movs r0, 0xF
- ands r2, r0
- cmp r2, 0
- beq _080034B0
- movs r0, 0x1
- ands r0, r4
- lsls r0, 2
- lsls r2, r0
- movs r1, 0xF0
- asrs r1, r0
- ldrb r0, [r3]
- ands r1, r0
- orrs r2, r1
- strb r2, [r3]
-_080034B0:
- adds r5, 0x1
- adds r4, 0x1
- cmp r5, r12
- blt _0800345E
-_080034B8:
- ldr r3, [sp, 0x44]
- ldr r2, [sp, 0x3C]
- ldr r1, [sp, 0x40]
- cmp r2, 0x7
- ble _08003438
- ldr r3, _080034D8 @ =gGlyphInfo + 0x40
- movs r2, 0
- ldrb r0, [r6, 0x9]
- adds r1, r0, 0
- adds r1, 0x8
- b _08003556
- .align 2, 0
-_080034D0: .4byte gWindows
-_080034D4: .4byte gGlyphInfo + 0x20
-_080034D8: .4byte gGlyphInfo + 0x40
-_080034DC:
- ldm r3!, {r0}
- mov r9, r0
- movs r5, 0
- ldrb r4, [r6, 0x8]
- lsls r0, r1, 29
- str r3, [sp, 0x54]
- adds r2, 0x1
- mov r10, r2
- adds r2, r1, 0x1
- mov r12, r2
- asrs r1, 3
- mov r8, r1
- lsrs r7, r0, 27
-_080034F6:
- ldrb r0, [r6, 0x4]
- lsls r3, r0, 1
- adds r3, r0
- lsls r3, 2
- ldr r1, _0800360C @ =gWindows
- adds r1, 0x8
- adds r1, r3, r1
- asrs r2, r4, 1
- movs r0, 0x3
- ands r2, r0
- ldr r1, [r1]
- adds r1, r2
- asrs r0, r4, 3
- lsls r0, 5
- adds r1, r0
- ldr r0, _0800360C @ =gWindows
- adds r3, r0
- ldrb r0, [r3, 0x3]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- lsls r0, 5
- adds r1, r0
- adds r3, r1, r7
- lsls r0, r5, 2
- mov r2, r9
- lsrs r2, r0
- movs r0, 0xF
- ands r2, r0
- cmp r2, 0
- beq _08003548
- movs r0, 0x1
- ands r0, r4
- lsls r0, 2
- lsls r2, r0
- movs r1, 0xF0
- asrs r1, r0
- ldrb r0, [r3]
- ands r1, r0
- orrs r2, r1
- strb r2, [r3]
-_08003548:
- adds r5, 0x1
- adds r4, 0x1
- cmp r5, 0x7
- ble _080034F6
- ldr r3, [sp, 0x54]
- mov r2, r10
- mov r1, r12
-_08003556:
- ldr r0, [sp, 0x68]
- cmp r2, r0
- blt _080034DC
- ldr r3, _08003610 @ =gGlyphInfo + 0x60
- movs r2, 0
- ldrb r0, [r6, 0x9]
- adds r1, r0, 0
- adds r1, 0x8
- ldr r0, [sp, 0x68]
- cmp r2, r0
- bge _080035FC
- ldr r0, [sp, 0x64]
- mov r10, r0
-_08003570:
- ldm r3!, {r0}
- mov r12, r0
- movs r5, 0
- ldrb r0, [r6, 0x8]
- adds r4, r0, 0
- adds r4, 0x8
- str r3, [sp, 0x10]
- adds r2, 0x1
- str r2, [sp, 0x8]
- adds r2, r1, 0x1
- str r2, [sp, 0xC]
- cmp r5, r10
- bge _080035F0
- ldr r7, _0800360C @ =gWindows
- asrs r3, r1, 3
- mov r9, r3
- lsls r0, r1, 29
- lsrs r0, 27
- mov r8, r0
-_08003596:
- ldrb r0, [r6, 0x4]
- lsls r3, r0, 1
- adds r3, r0
- lsls r3, 2
- adds r1, r7, 0
- adds r1, 0x8
- adds r1, r3, r1
- asrs r2, r4, 1
- movs r0, 0x3
- ands r2, r0
- ldr r1, [r1]
- adds r1, r2
- asrs r0, r4, 3
- lsls r0, 5
- adds r1, r0
- adds r3, r7
- ldrb r0, [r3, 0x3]
- mov r2, r9
- muls r2, r0
- adds r0, r2, 0
- lsls r0, 5
- adds r1, r0
- mov r0, r8
- adds r3, r1, r0
- lsls r0, r5, 2
- mov r2, r12
- lsrs r2, r0
- movs r0, 0xF
- ands r2, r0
- cmp r2, 0
- beq _080035E8
- movs r0, 0x1
- ands r0, r4
- lsls r0, 2
- lsls r2, r0
- movs r1, 0xF0
- asrs r1, r0
- ldrb r0, [r3]
- ands r1, r0
- orrs r2, r1
- strb r2, [r3]
-_080035E8:
- adds r5, 0x1
- adds r4, 0x1
- cmp r5, r10
- blt _08003596
-_080035F0:
- ldr r3, [sp, 0x10]
- ldr r2, [sp, 0x8]
- ldr r1, [sp, 0xC]
- ldr r0, [sp, 0x68]
- cmp r2, r0
- blt _08003570
-_080035FC:
- add sp, 0x6C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0800360C: .4byte gWindows
-_08003610: .4byte gGlyphInfo + 0x60
- thumb_func_end CopyGlyphToWindow
-
- thumb_func_start sub_8003614
-sub_8003614: @ 8003614
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x40
- str r0, [sp]
- ldr r0, [sp, 0x60]
- lsls r1, 16
- lsrs r1, 16
- str r1, [sp, 0x4]
- lsls r2, 16
- lsrs r2, 16
- str r2, [sp, 0x8]
- lsls r3, 16
- lsrs r3, 16
- lsls r0, 16
- lsrs r4, r0, 16
- subs r1, r3, r1
- ldr r5, _08003688 @ =gGlyphInfo
- adds r0, r5, 0
- adds r0, 0x80
- ldrb r7, [r0]
- adds r2, r5, 0
- cmp r1, r7
- bge _0800364A
- adds r7, r1, 0
-_0800364A:
- ldr r1, [sp, 0x8]
- subs r0, r4, r1
- adds r1, r2, 0
- adds r1, 0x81
- ldrb r1, [r1]
- str r1, [sp, 0xC]
- cmp r0, r1
- bge _0800365C
- str r0, [sp, 0xC]
-_0800365C:
- movs r1, 0
- movs r0, 0x7
- ands r0, r3
- adds r0, r3, r0
- lsrs r0, 3
- str r0, [sp, 0x10]
- cmp r7, 0x8
- ble _0800366E
- movs r1, 0x1
-_0800366E:
- ldr r3, [sp, 0xC]
- cmp r3, 0x8
- ble _08003678
- movs r0, 0x2
- orrs r1, r0
-_08003678:
- cmp r1, 0x1
- beq _08003718
- cmp r1, 0x1
- bgt _0800368C
- cmp r1, 0
- beq _0800369A
- b _08003B00
- .align 2, 0
-_08003688: .4byte gGlyphInfo
-_0800368C:
- cmp r1, 0x2
- bne _08003692
- b _0800381C
-_08003692:
- cmp r1, 0x3
- bne _08003698
- b _0800391C
-_08003698:
- b _08003B00
-_0800369A:
- adds r1, r2, 0
- movs r0, 0
- ldr r2, [sp, 0x8]
- ldr r3, [sp, 0xC]
- cmp r0, r3
- blt _080036A8
- b _08003B00
-_080036A8:
- ldm r1!, {r3}
- mov r8, r3
- movs r5, 0
- ldr r3, [sp, 0x4]
- str r1, [sp, 0x28]
- adds r0, 0x1
- mov r9, r0
- adds r0, r2, 0x1
- mov r10, r0
- cmp r5, r7
- bge _0800370A
- asrs r0, r2, 3
- ldr r1, [sp, 0x10]
- muls r0, r1
- lsls r0, 5
- mov r12, r0
- lsls r0, r2, 29
- lsrs r6, r0, 27
-_080036CC:
- asrs r1, r3, 1
- movs r0, 0x3
- ands r1, r0
- ldr r2, [sp]
- adds r1, r2, r1
- asrs r0, r3, 3
- lsls r0, 5
- adds r1, r0
- add r1, r12
- adds r4, r1, r6
- lsls r0, r5, 2
- mov r2, r8
- lsrs r2, r0
- movs r0, 0xF
- ands r2, r0
- cmp r2, 0
- beq _08003702
- movs r0, 0x1
- ands r0, r3
- lsls r0, 2
- lsls r2, r0
- movs r1, 0xF0
- asrs r1, r0
- ldrb r0, [r4]
- ands r1, r0
- orrs r2, r1
- strb r2, [r4]
-_08003702:
- adds r5, 0x1
- adds r3, 0x1
- cmp r5, r7
- blt _080036CC
-_0800370A:
- ldr r1, [sp, 0x28]
- mov r0, r9
- mov r2, r10
- ldr r3, [sp, 0xC]
- cmp r0, r3
- blt _080036A8
- b _08003B00
-_08003718:
- adds r5, r2, 0
- movs r4, 0
- ldr r2, [sp, 0x8]
- ldr r0, [sp, 0xC]
- cmp r4, r0
- bge _0800378E
-_08003724:
- ldm r5!, {r1}
- mov r8, r1
- movs r6, 0
- ldr r3, [sp, 0x4]
- asrs r0, r2, 3
- lsls r1, r2, 29
- str r5, [sp, 0x2C]
- adds r4, 0x1
- mov r9, r4
- adds r2, 0x1
- mov r10, r2
- ldr r2, [sp, 0x10]
- muls r0, r2
- lsls r0, 5
- mov r12, r0
- lsrs r5, r1, 27
-_08003744:
- asrs r1, r3, 1
- movs r0, 0x3
- ands r1, r0
- ldr r0, [sp]
- adds r1, r0, r1
- asrs r0, r3, 3
- lsls r0, 5
- adds r1, r0
- add r1, r12
- adds r4, r1, r5
- lsls r0, r6, 2
- mov r2, r8
- lsrs r2, r0
- movs r0, 0xF
- ands r2, r0
- cmp r2, 0
- beq _0800377A
- movs r0, 0x1
- ands r0, r3
- lsls r0, 2
- lsls r2, r0
- movs r1, 0xF0
- asrs r1, r0
- ldrb r0, [r4]
- ands r1, r0
- orrs r2, r1
- strb r2, [r4]
-_0800377A:
- adds r6, 0x1
- adds r3, 0x1
- cmp r6, 0x7
- ble _08003744
- ldr r5, [sp, 0x2C]
- mov r4, r9
- mov r2, r10
- ldr r1, [sp, 0xC]
- cmp r4, r1
- blt _08003724
-_0800378E:
- ldr r1, _08003818 @ =gGlyphInfo + 0x20
- movs r0, 0
- ldr r2, [sp, 0x8]
- ldr r3, [sp, 0xC]
- cmp r0, r3
- blt _0800379C
- b _08003B00
-_0800379C:
- subs r7, 0x8
- str r7, [sp, 0x18]
- str r7, [sp, 0x14]
-_080037A2:
- ldm r1!, {r3}
- mov r8, r3
- movs r5, 0
- ldr r3, [sp, 0x4]
- adds r3, 0x8
- mov r12, r1
- adds r0, 0x1
- mov r9, r0
- adds r0, r2, 0x1
- mov r10, r0
- ldr r1, [sp, 0x14]
- cmp r5, r1
- bge _08003808
- asrs r0, r2, 3
- ldr r1, [sp, 0x10]
- muls r0, r1
- lsls r7, r0, 5
- lsls r0, r2, 29
- lsrs r6, r0, 27
-_080037C8:
- asrs r1, r3, 1
- movs r0, 0x3
- ands r1, r0
- ldr r2, [sp]
- adds r1, r2, r1
- asrs r0, r3, 3
- lsls r0, 5
- adds r1, r0
- adds r1, r7
- adds r4, r1, r6
- lsls r0, r5, 2
- mov r2, r8
- lsrs r2, r0
- movs r0, 0xF
- ands r2, r0
- cmp r2, 0
- beq _080037FE
- movs r0, 0x1
- ands r0, r3
- lsls r0, 2
- lsls r2, r0
- movs r1, 0xF0
- asrs r1, r0
- ldrb r0, [r4]
- ands r1, r0
- orrs r2, r1
- strb r2, [r4]
-_080037FE:
- adds r5, 0x1
- adds r3, 0x1
- ldr r0, [sp, 0x18]
- cmp r5, r0
- blt _080037C8
-_08003808:
- mov r1, r12
- mov r0, r9
- mov r2, r10
- ldr r3, [sp, 0xC]
- cmp r0, r3
- blt _080037A2
- b _08003B00
- .align 2, 0
-_08003818: .4byte gGlyphInfo + 0x20
-_0800381C:
- adds r0, r2, 0
- movs r1, 0
- ldr r2, [sp, 0x8]
- adds r3, r2, 0
- adds r3, 0x8
- str r3, [sp, 0x1C]
- ldr r3, [sp, 0xC]
- subs r3, 0x8
- str r3, [sp, 0x20]
-_0800382E:
- ldm r0!, {r3}
- mov r8, r3
- movs r5, 0
- ldr r3, [sp, 0x4]
- str r0, [sp, 0x34]
- adds r1, 0x1
- mov r9, r1
- adds r0, r2, 0x1
- mov r10, r0
- cmp r5, r7
- bge _08003890
- asrs r0, r2, 3
- ldr r1, [sp, 0x10]
- muls r0, r1
- lsls r0, 5
- mov r12, r0
- lsls r0, r2, 29
- lsrs r6, r0, 27
-_08003852:
- asrs r1, r3, 1
- movs r0, 0x3
- ands r1, r0
- ldr r2, [sp]
- adds r1, r2, r1
- asrs r0, r3, 3
- lsls r0, 5
- adds r1, r0
- add r1, r12
- adds r4, r1, r6
- lsls r0, r5, 2
- mov r2, r8
- lsrs r2, r0
- movs r0, 0xF
- ands r2, r0
- cmp r2, 0
- beq _08003888
- movs r0, 0x1
- ands r0, r3
- lsls r0, 2
- lsls r2, r0
- movs r1, 0xF0
- asrs r1, r0
- ldrb r0, [r4]
- ands r1, r0
- orrs r2, r1
- strb r2, [r4]
-_08003888:
- adds r5, 0x1
- adds r3, 0x1
- cmp r5, r7
- blt _08003852
-_08003890:
- ldr r0, [sp, 0x34]
- mov r1, r9
- mov r2, r10
- cmp r1, 0x7
- ble _0800382E
- ldr r2, _08003918 @ =gGlyphInfo + 0x40
- movs r0, 0
- ldr r1, [sp, 0x1C]
- ldr r3, [sp, 0x20]
- cmp r0, r3
- blt _080038A8
- b _08003B00
-_080038A8:
- ldm r2!, {r3}
- mov r8, r3
- movs r5, 0
- ldr r3, [sp, 0x4]
- str r2, [sp, 0x38]
- adds r0, 0x1
- mov r9, r0
- adds r0, r1, 0x1
- mov r10, r0
- cmp r5, r7
- bge _0800390A
- asrs r0, r1, 3
- ldr r2, [sp, 0x10]
- muls r0, r2
- lsls r0, 5
- mov r12, r0
- lsls r0, r1, 29
- lsrs r6, r0, 27
-_080038CC:
- asrs r1, r3, 1
- movs r0, 0x3
- ands r1, r0
- ldr r0, [sp]
- adds r1, r0, r1
- asrs r0, r3, 3
- lsls r0, 5
- adds r1, r0
- add r1, r12
- adds r4, r1, r6
- lsls r0, r5, 2
- mov r2, r8
- lsrs r2, r0
- movs r0, 0xF
- ands r2, r0
- cmp r2, 0
- beq _08003902
- movs r0, 0x1
- ands r0, r3
- lsls r0, 2
- lsls r2, r0
- movs r1, 0xF0
- asrs r1, r0
- ldrb r0, [r4]
- ands r1, r0
- orrs r2, r1
- strb r2, [r4]
-_08003902:
- adds r5, 0x1
- adds r3, 0x1
- cmp r5, r7
- blt _080038CC
-_0800390A:
- ldr r2, [sp, 0x38]
- mov r0, r9
- mov r1, r10
- ldr r3, [sp, 0x20]
- cmp r0, r3
- blt _080038A8
- b _08003B00
- .align 2, 0
-_08003918: .4byte gGlyphInfo + 0x40
-_0800391C:
- movs r2, 0
- ldr r4, [sp, 0x8]
- ldr r0, [sp, 0x4]
- adds r0, 0x8
- str r0, [sp, 0x3C]
- subs r7, 0x8
- str r7, [sp, 0x18]
- adds r1, r4, 0
- adds r1, 0x8
- str r1, [sp, 0x1C]
- ldr r3, [sp, 0xC]
- subs r3, 0x8
- str r3, [sp, 0x20]
-_08003936:
- ldm r5!, {r0}
- mov r8, r0
- movs r6, 0
- ldr r3, [sp, 0x4]
- asrs r0, r4, 3
- lsls r1, r4, 29
- mov r10, r5
- adds r2, 0x1
- mov r12, r2
- adds r4, 0x1
- mov r9, r4
- ldr r2, [sp, 0x10]
- muls r0, r2
- lsls r7, r0, 5
- lsrs r5, r1, 27
-_08003954:
- asrs r1, r3, 1
- movs r0, 0x3
- ands r1, r0
- ldr r0, [sp]
- adds r1, r0, r1
- asrs r0, r3, 3
- lsls r0, 5
- adds r1, r0
- adds r1, r7
- adds r4, r1, r5
- lsls r0, r6, 2
- mov r2, r8
- lsrs r2, r0
- movs r0, 0xF
- ands r2, r0
- cmp r2, 0
- beq _0800398A
- movs r0, 0x1
- ands r0, r3
- lsls r0, 2
- lsls r2, r0
- movs r1, 0xF0
- asrs r1, r0
- ldrb r0, [r4]
- ands r1, r0
- orrs r2, r1
- strb r2, [r4]
-_0800398A:
- adds r6, 0x1
- adds r3, 0x1
- cmp r6, 0x7
- ble _08003954
- mov r5, r10
- mov r2, r12
- mov r4, r9
- cmp r2, 0x7
- ble _08003936
- ldr r1, _08003B10 @ =gGlyphInfo + 0x20
- movs r0, 0
- ldr r2, [sp, 0x8]
- ldr r3, [sp, 0x18]
- mov r12, r3
-_080039A6:
- ldm r1!, {r3}
- mov r8, r3
- movs r5, 0
- ldr r3, [sp, 0x3C]
- str r1, [sp, 0x24]
- adds r0, 0x1
- mov r9, r0
- adds r0, r2, 0x1
- mov r10, r0
- cmp r5, r12
- bge _08003A06
- asrs r0, r2, 3
- ldr r1, [sp, 0x10]
- muls r0, r1
- lsls r7, r0, 5
- lsls r0, r2, 29
- lsrs r6, r0, 27
-_080039C8:
- asrs r1, r3, 1
- movs r0, 0x3
- ands r1, r0
- ldr r2, [sp]
- adds r1, r2, r1
- asrs r0, r3, 3
- lsls r0, 5
- adds r1, r0
- adds r1, r7
- adds r4, r1, r6
- lsls r0, r5, 2
- mov r2, r8
- lsrs r2, r0
- movs r0, 0xF
- ands r2, r0
- cmp r2, 0
- beq _080039FE
- movs r0, 0x1
- ands r0, r3
- lsls r0, 2
- lsls r2, r0
- movs r1, 0xF0
- asrs r1, r0
- ldrb r0, [r4]
- ands r1, r0
- orrs r2, r1
- strb r2, [r4]
-_080039FE:
- adds r5, 0x1
- adds r3, 0x1
- cmp r5, r12
- blt _080039C8
-_08003A06:
- ldr r1, [sp, 0x24]
- mov r0, r9
- mov r2, r10
- cmp r0, 0x7
- ble _080039A6
- ldr r6, _08003B14 @ =gGlyphInfo + 0x40
- movs r4, 0
- ldr r2, [sp, 0x1C]
- ldr r3, [sp, 0x20]
- cmp r4, r3
- bge _08003A84
-_08003A1C:
- ldm r6!, {r0}
- mov r8, r0
- movs r5, 0
- ldr r3, [sp, 0x4]
- asrs r0, r2, 3
- lsls r1, r2, 29
- mov r12, r6
- adds r4, 0x1
- mov r9, r4
- adds r2, 0x1
- mov r10, r2
- ldr r2, [sp, 0x10]
- muls r0, r2
- lsls r7, r0, 5
- lsrs r6, r1, 27
-_08003A3A:
- asrs r1, r3, 1
- movs r0, 0x3
- ands r1, r0
- ldr r0, [sp]
- adds r1, r0, r1
- asrs r0, r3, 3
- lsls r0, 5
- adds r1, r0
- adds r1, r7
- adds r4, r1, r6
- lsls r0, r5, 2
- mov r2, r8
- lsrs r2, r0
- movs r0, 0xF
- ands r2, r0
- cmp r2, 0
- beq _08003A70
- movs r0, 0x1
- ands r0, r3
- lsls r0, 2
- lsls r2, r0
- movs r1, 0xF0
- asrs r1, r0
- ldrb r0, [r4]
- ands r1, r0
- orrs r2, r1
- strb r2, [r4]
-_08003A70:
- adds r5, 0x1
- adds r3, 0x1
- cmp r5, 0x7
- ble _08003A3A
- mov r6, r12
- mov r4, r9
- mov r2, r10
- ldr r1, [sp, 0x20]
- cmp r4, r1
- blt _08003A1C
-_08003A84:
- ldr r2, _08003B18 @ =gGlyphInfo + 0x60
- movs r0, 0
- ldr r1, [sp, 0x1C]
- ldr r3, [sp, 0x20]
- cmp r0, r3
- bge _08003B00
- ldr r3, [sp, 0x18]
- mov r12, r3
-_08003A94:
- ldm r2!, {r3}
- mov r8, r3
- movs r5, 0
- ldr r3, [sp, 0x3C]
- str r2, [sp, 0x30]
- adds r0, 0x1
- mov r9, r0
- adds r0, r1, 0x1
- mov r10, r0
- cmp r5, r12
- bge _08003AF4
- asrs r0, r1, 3
- ldr r2, [sp, 0x10]
- muls r0, r2
- lsls r7, r0, 5
- lsls r0, r1, 29
- lsrs r6, r0, 27
-_08003AB6:
- asrs r1, r3, 1
- movs r0, 0x3
- ands r1, r0
- ldr r0, [sp]
- adds r1, r0, r1
- asrs r0, r3, 3
- lsls r0, 5
- adds r1, r0
- adds r1, r7
- adds r4, r1, r6
- lsls r0, r5, 2
- mov r2, r8
- lsrs r2, r0
- movs r0, 0xF
- ands r2, r0
- cmp r2, 0
- beq _08003AEC
- movs r0, 0x1
- ands r0, r3
- lsls r0, 2
- lsls r2, r0
- movs r1, 0xF0
- asrs r1, r0
- ldrb r0, [r4]
- ands r1, r0
- orrs r2, r1
- strb r2, [r4]
-_08003AEC:
- adds r5, 0x1
- adds r3, 0x1
- cmp r5, r12
- blt _08003AB6
-_08003AF4:
- ldr r2, [sp, 0x30]
- mov r0, r9
- mov r1, r10
- ldr r3, [sp, 0x20]
- cmp r0, r3
- blt _08003A94
-_08003B00:
- add sp, 0x40
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08003B10: .4byte gGlyphInfo + 0x20
-_08003B14: .4byte gGlyphInfo + 0x40
-_08003B18: .4byte gGlyphInfo + 0x60
- thumb_func_end sub_8003614
-
- thumb_func_start ClearTextSpan
-ClearTextSpan: @ 8003B1C
- bx lr
- thumb_func_end ClearTextSpan
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/ld_script.txt b/ld_script.txt
index c79508a78..fc9e5f946 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -51,7 +51,6 @@ SECTIONS {
src/bg.o(.text);
src/malloc.o(.text);
src/text_printer.o(.text);
- asm/text_printer.o(.text);
src/window.o(.text);
src/blit.o(.text);
src/window_8bpp.o(.text);
diff --git a/src/text_printer.c b/src/text_printer.c
index 0d1f86114..c39bc04e3 100644
--- a/src/text_printer.c
+++ b/src/text_printer.c
@@ -4,6 +4,7 @@
#include "string_util.h"
#include "window.h"
#include "text.h"
+#include "blit.h"
static EWRAM_DATA struct TextPrinter sTempTextPrinter = {0};
static EWRAM_DATA struct TextPrinter sTextPrinters[NUM_TEXT_PRINTERS] = {0};
@@ -211,3 +212,117 @@ u8 GetLastTextColor(u8 colorType)
return 0;
}
}
+
+#define GLYPH_COPY(widthOffset, heightOffset, width, height, a4, a5, a6, sizeX) \
+{ \
+ int xAdd, v1, yAdd, v3, toOrr, bits; \
+ u8 * src, * dst; \
+ u32 v8; \
+ \
+ src = gGlyphInfo + (heightOffset / 8 * 0x40) + (widthOffset / 8 * 0x20); \
+ for (yAdd = 0, v3 = a6 + heightOffset; yAdd < height; yAdd++, v3++) \
+ { \
+ v8 = *(u32 *)src; \
+ for (xAdd = 0, v1 = a5 + widthOffset; xAdd < width; xAdd++, v1++) \
+ { \
+ dst = (u8 *)((a4) + ((v1 >> 1) & 3) + ((v1 >> 3) << 5) + (((v3 >> 3) * (sizeX)) << 5) + ((u32)(v3 << 29) >> 27)); \
+ toOrr = (v8 >> (xAdd * 4)) & 0xF; \
+ if (toOrr != 0) \
+ { \
+ bits = (v1 & 1) * 4; \
+ *dst = (toOrr << bits) | (*dst & (0xF0 >> bits)); \
+ } \
+ } \
+ src += 4; \
+ } \
+}
+
+void CopyGlyphToWindow(struct TextPrinter *textPrinter)
+{
+ int r0, r1;
+ u8 r2;
+
+ if (gWindows[textPrinter->printerTemplate.windowId].window.width * 8 - textPrinter->printerTemplate.currentX < gGlyphInfo[0x80])
+ r0 = gWindows[textPrinter->printerTemplate.windowId].window.width * 8 - textPrinter->printerTemplate.currentX;
+ else
+ r0 = gGlyphInfo[0x80];
+ if (gWindows[textPrinter->printerTemplate.windowId].window.height * 8 - textPrinter->printerTemplate.currentY < gGlyphInfo[0x81])
+ r1 = gWindows[textPrinter->printerTemplate.windowId].window.height * 8 - textPrinter->printerTemplate.currentY;
+ else
+ r1 = gGlyphInfo[0x81];
+
+ r2 = 0;
+ if (r0 > 8)
+ r2 |= 1;
+ if (r1 > 8)
+ r2 |= 2;
+
+ switch (r2)
+ {
+ case 0:
+ GLYPH_COPY(0, 0, r0, r1, gWindows[textPrinter->printerTemplate.windowId].tileData, textPrinter->printerTemplate.currentX, textPrinter->printerTemplate.currentY, ((gWindows[textPrinter->printerTemplate.windowId].window.width * 8 + ((gWindows[textPrinter->printerTemplate.windowId].window.width * 8) & 7)) >> 3));
+ return;
+ case 1:
+ GLYPH_COPY(0, 0, 8, r1, gWindows[textPrinter->printerTemplate.windowId].tileData, textPrinter->printerTemplate.currentX, textPrinter->printerTemplate.currentY, ((gWindows[textPrinter->printerTemplate.windowId].window.width * 8 + ((gWindows[textPrinter->printerTemplate.windowId].window.width * 8) & 7)) >> 3));
+ GLYPH_COPY(8, 0, r0 - 8, r1, gWindows[textPrinter->printerTemplate.windowId].tileData, textPrinter->printerTemplate.currentX, textPrinter->printerTemplate.currentY, ((gWindows[textPrinter->printerTemplate.windowId].window.width * 8 + ((gWindows[textPrinter->printerTemplate.windowId].window.width * 8) & 7)) >> 3));
+ return;
+ case 2:
+ GLYPH_COPY(0, 0, r0, 8, gWindows[textPrinter->printerTemplate.windowId].tileData, textPrinter->printerTemplate.currentX, textPrinter->printerTemplate.currentY, ((gWindows[textPrinter->printerTemplate.windowId].window.width * 8 + ((gWindows[textPrinter->printerTemplate.windowId].window.width * 8) & 7)) >> 3));
+ GLYPH_COPY(0, 8, r0, r1 - 8, gWindows[textPrinter->printerTemplate.windowId].tileData, textPrinter->printerTemplate.currentX, textPrinter->printerTemplate.currentY, ((gWindows[textPrinter->printerTemplate.windowId].window.width * 8 + ((gWindows[textPrinter->printerTemplate.windowId].window.width * 8) & 7)) >> 3));
+ return;
+ case 3:
+ GLYPH_COPY(0, 0, 8, 8, gWindows[textPrinter->printerTemplate.windowId].tileData, textPrinter->printerTemplate.currentX, textPrinter->printerTemplate.currentY, ((gWindows[textPrinter->printerTemplate.windowId].window.width * 8 + ((gWindows[textPrinter->printerTemplate.windowId].window.width * 8) & 7)) >> 3));
+ GLYPH_COPY(8, 0, r0 - 8, 8, gWindows[textPrinter->printerTemplate.windowId].tileData, textPrinter->printerTemplate.currentX, textPrinter->printerTemplate.currentY, ((gWindows[textPrinter->printerTemplate.windowId].window.width * 8 + ((gWindows[textPrinter->printerTemplate.windowId].window.width * 8) & 7)) >> 3));
+ GLYPH_COPY(0, 8, 8, r1 - 8, gWindows[textPrinter->printerTemplate.windowId].tileData, textPrinter->printerTemplate.currentX, textPrinter->printerTemplate.currentY, ((gWindows[textPrinter->printerTemplate.windowId].window.width * 8 + ((gWindows[textPrinter->printerTemplate.windowId].window.width * 8) & 7)) >> 3));
+ GLYPH_COPY(8, 8, r0 - 8, r1 - 8, gWindows[textPrinter->printerTemplate.windowId].tileData, textPrinter->printerTemplate.currentX, textPrinter->printerTemplate.currentY, ((gWindows[textPrinter->printerTemplate.windowId].window.width * 8 + ((gWindows[textPrinter->printerTemplate.windowId].window.width * 8) & 7)) >> 3));
+ return;
+ }
+}
+
+void sub_8003614(void * tileData, u16 currentX, u16 currentY, u16 width, u16 height)
+{
+ int r0, r1;
+ u8 r2;
+ u16 r3;
+
+ if (width - currentX < gGlyphInfo[0x80])
+ r0 = width - currentX;
+ else
+ r0 = gGlyphInfo[0x80];
+ if (height - currentY < gGlyphInfo[0x81])
+ r1 = height - currentY;
+ else
+ r1 = gGlyphInfo[0x81];
+
+ r2 = 0;
+ r3 = (width + (width & 7)) >> 3;
+ if (r0 > 8)
+ r2 |= 1;
+ if (r1 > 8)
+ r2 |= 2;
+
+ switch (r2)
+ {
+ case 0:
+ GLYPH_COPY(0, 0, r0, r1, tileData, currentX, currentY, r3);
+ return;
+ case 1:
+ GLYPH_COPY(0, 0, 8, r1, tileData, currentX, currentY, r3);
+ GLYPH_COPY(8, 0, r0 - 8, r1, tileData, currentX, currentY, r3);
+ return;
+ case 2:
+ GLYPH_COPY(0, 0, r0, 8, tileData, currentX, currentY, r3);
+ GLYPH_COPY(0, 8, r0, r1 - 8, tileData, currentX, currentY, r3);
+ return;
+ case 3:
+ GLYPH_COPY(0, 0, 8, 8, tileData, currentX, currentY, r3);
+ GLYPH_COPY(8, 0, r0 - 8, 8, tileData, currentX, currentY, r3);
+ GLYPH_COPY(0, 8, 8, r1 - 8, tileData, currentX, currentY, r3);
+ GLYPH_COPY(8, 8, r0 - 8, r1 - 8, tileData, currentX, currentY, r3);
+ return;
+ }
+}
+
+void ClearTextSpan(struct TextPrinter *textPrinter, u32 width)
+{
+}