diff options
-rwxr-xr-x | .travis/calcrom/calcrom.pl | 30 | ||||
-rw-r--r-- | asm/text_printer.s | 1517 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/text_printer.c | 115 |
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) +{ +} |