summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfig02 <fig02srl@gmail.com>2020-03-23 20:21:50 -0400
committerGitHub <noreply@github.com>2020-03-23 20:21:50 -0400
commit5160cc1954ef87be00a00dae787bed2455a3bc30 (patch)
treeab7b666cb1adef13789dc5eb2267799b96cafbc3
parent875d962b4cca028429bbacd5d8fc2056d48bce43 (diff)
parent4bbbdc39fd5e5a44511d8c21012013692f805ec4 (diff)
Merge pull request #31 from pixel-stuck/master
fix final non-matching in fault_drawer.c
-rw-r--r--asm/non_matchings/code/fault_drawer/FaultDrawer_DrawChar.s102
-rw-r--r--src/code/fault_drawer.c21
2 files changed, 10 insertions, 113 deletions
diff --git a/asm/non_matchings/code/fault_drawer/FaultDrawer_DrawChar.s b/asm/non_matchings/code/fault_drawer/FaultDrawer_DrawChar.s
deleted file mode 100644
index 16994afb6..000000000
--- a/asm/non_matchings/code/fault_drawer/FaultDrawer_DrawChar.s
+++ /dev/null
@@ -1,102 +0,0 @@
-glabel FaultDrawer_DrawChar
-/* B4DA3C 800D689C AFA40000 */ sw $a0, ($sp)
-/* B4DA40 800D68A0 3C0C8017 */ lui $t4, %hi(sFaultDrawerStruct) # $t4, 0x8017
-/* B4DA44 800D68A4 258CB680 */ addiu $t4, %lo(sFaultDrawerStruct) # addiu $t4, $t4, -0x4980
-/* B4DA48 800D68A8 308400FF */ andi $a0, $a0, 0xff
-/* B4DA4C 800D68AC 95830016 */ lhu $v1, 0x16($t4)
-/* B4DA50 800D68B0 95880004 */ lhu $t0, 4($t4)
-/* B4DA54 800D68B4 00802825 */ move $a1, $a0
-/* B4DA58 800D68B8 30B80004 */ andi $t8, $a1, 4
-/* B4DA5C 800D68BC 01030019 */ multu $t0, $v1
-/* B4DA60 800D68C0 0018C883 */ sra $t9, $t8, 2
-/* B4DA64 800D68C4 8D980018 */ lw $t8, 0x18($t4)
-/* B4DA68 800D68C8 95820014 */ lhu $v0, 0x14($t4)
-/* B4DA6C 800D68CC 04A10003 */ bgez $a1, .L800D68DC
-/* B4DA70 800D68D0 000570C3 */ sra $t6, $a1, 3
-/* B4DA74 800D68D4 24A10007 */ addiu $at, $a1, 7
-/* B4DA78 800D68D8 000170C3 */ sra $t6, $at, 3
-.L800D68DC:
-/* B4DA7C 800D68DC 000E7900 */ sll $t7, $t6, 4
-/* B4DA80 800D68E0 01F96821 */ addu $t5, $t7, $t9
-/* B4DA84 800D68E4 00007812 */ mflo $t7
-/* B4DA88 800D68E8 000D7080 */ sll $t6, $t5, 2
-/* B4DA8C 800D68EC 000FC840 */ sll $t9, $t7, 1
-/* B4DA90 800D68F0 8D8D0000 */ lw $t5, ($t4)
-/* B4DA94 800D68F4 958F000C */ lhu $t7, 0xc($t4)
-/* B4DA98 800D68F8 030E3021 */ addu $a2, $t8, $t6
-/* B4DA9C 800D68FC 00027040 */ sll $t6, $v0, 1
-/* B4DAA0 800D6900 032DC021 */ addu $t8, $t9, $t5
-/* B4DAA4 800D6904 004F082A */ slt $at, $v0, $t7
-/* B4DAA8 800D6908 1420003E */ bnez $at, .L800D6A04
-/* B4DAAC 800D690C 030E3821 */ addu $a3, $t8, $t6
-/* B4DAB0 800D6910 9184001C */ lbu $a0, 0x1c($t4)
-/* B4DAB4 800D6914 9599000E */ lhu $t9, 0xe($t4)
-/* B4DAB8 800D6918 00826821 */ addu $t5, $a0, $v0
-/* B4DABC 800D691C 25B8FFFF */ addiu $t8, $t5, -1
-/* B4DAC0 800D6920 0338082A */ slt $at, $t9, $t8
-/* B4DAC4 800D6924 14200037 */ bnez $at, .L800D6A04
-/* B4DAC8 800D6928 00000000 */ nop
-/* B4DACC 800D692C 958E0008 */ lhu $t6, 8($t4)
-/* B4DAD0 800D6930 006E082A */ slt $at, $v1, $t6
-/* B4DAD4 800D6934 14200033 */ bnez $at, .L800D6A04
-/* B4DAD8 800D6938 00000000 */ nop
-/* B4DADC 800D693C 9182001D */ lbu $v0, 0x1d($t4)
-/* B4DAE0 800D6940 958F000A */ lhu $t7, 0xa($t4)
-/* B4DAE4 800D6944 00436821 */ addu $t5, $v0, $v1
-/* B4DAE8 800D6948 25B9FFFF */ addiu $t9, $t5, -1
-/* B4DAEC 800D694C 01F9082A */ slt $at, $t7, $t9
-/* B4DAF0 800D6950 1420002C */ bnez $at, .L800D6A04
-/* B4DAF4 800D6954 00000000 */ nop
-/* B4DAF8 800D6958 1840002A */ blez $v0, .L800D6A04
-/* B4DAFC 800D695C 00001825 */ move $v1, $zero
-/* B4DB00 800D6960 04A10004 */ bgez $a1, .L800D6974
-/* B4DB04 800D6964 30B80003 */ andi $t8, $a1, 3
-/* B4DB08 800D6968 13000002 */ beqz $t8, .L800D6974
-/* B4DB0C 800D696C 00000000 */ nop
-/* B4DB10 800D6970 2718FFFC */ addiu $t8, $t8, -4
-.L800D6974:
-/* B4DB14 800D6974 3C0E1000 */ lui $t6, 0x1000
-/* B4DB18 800D6978 030E5804 */ sllv $t3, $t6, $t8
-/* B4DB1C 800D697C 01602825 */ move $a1, $t3
-.L800D6980:
-/* B4DB20 800D6980 8CC90000 */ lw $t1, ($a2)
-/* B4DB24 800D6984 18800018 */ blez $a0, .L800D69E8
-/* B4DB28 800D6988 00005025 */ move $t2, $zero
-.L800D698C:
-/* B4DB2C 800D698C 00A96824 */ and $t5, $a1, $t1
-/* B4DB30 800D6990 51A00008 */ beql $t5, $zero, .L800D69B4
-/* B4DB34 800D6994 95820012 */ lhu $v0, 0x12($t4)
-/* B4DB38 800D6998 958F0010 */ lhu $t7, 0x10($t4)
-/* B4DB3C 800D699C 000AC840 */ sll $t9, $t2, 1
-/* B4DB40 800D69A0 00F97021 */ addu $t6, $a3, $t9
-/* B4DB44 800D69A4 A5CF0000 */ sh $t7, ($t6)
-/* B4DB48 800D69A8 10000009 */ b .L800D69D0
-/* B4DB4C 800D69AC 9184001C */ lbu $a0, 0x1c($t4)
-/* B4DB50 800D69B0 95820012 */ lhu $v0, 0x12($t4)
-.L800D69B4:
-/* B4DB54 800D69B4 000A6840 */ sll $t5, $t2, 1
-/* B4DB58 800D69B8 00EDC821 */ addu $t9, $a3, $t5
-/* B4DB5C 800D69BC 30580001 */ andi $t8, $v0, 1
-/* B4DB60 800D69C0 53000004 */ beql $t8, $zero, .L800D69D4
-/* B4DB64 800D69C4 254A0001 */ addiu $t2, $t2, 1
-/* B4DB68 800D69C8 A7220000 */ sh $v0, ($t9)
-/* B4DB6C 800D69CC 9184001C */ lbu $a0, 0x1c($t4)
-.L800D69D0:
-/* B4DB70 800D69D0 254A0001 */ addiu $t2, $t2, 1
-.L800D69D4:
-/* B4DB74 800D69D4 0144082A */ slt $at, $t2, $a0
-/* B4DB78 800D69D8 1420FFEC */ bnez $at, .L800D698C
-/* B4DB7C 800D69DC 00052902 */ srl $a1, $a1, 4
-/* B4DB80 800D69E0 95880004 */ lhu $t0, 4($t4)
-/* B4DB84 800D69E4 9182001D */ lbu $v0, 0x1d($t4)
-.L800D69E8:
-/* B4DB88 800D69E8 00087840 */ sll $t7, $t0, 1
-/* B4DB8C 800D69EC 00EF3821 */ addu $a3, $a3, $t7
-/* B4DB90 800D69F0 24C60008 */ addiu $a2, $a2, 8
-/* B4DB94 800D69F4 24630001 */ addiu $v1, $v1, 1
-/* B4DB98 800D69F8 0062082A */ slt $at, $v1, $v0
-/* B4DB9C 800D69FC 5420FFE0 */ bnezl $at, .L800D6980
-/* B4DBA0 800D6A00 01602825 */ move $a1, $t3
-.L800D6A04:
-/* B4DBA4 800D6A04 03E00008 */ jr $ra
-/* B4DBA8 800D6A08 00000000 */ nop \ No newline at end of file
diff --git a/src/code/fault_drawer.c b/src/code/fault_drawer.c
index b17679d35..ef7a784ae 100644
--- a/src/code/fault_drawer.c
+++ b/src/code/fault_drawer.c
@@ -94,30 +94,32 @@ void FaultDrawer_DrawRecImpl(s32 xStart, s32 yStart, s32 xEnd, s32 yEnd, u16 col
}
}
-#ifdef NON_MATCHING
-// regalloc and minor ordering differences
void FaultDrawer_DrawChar(char c) {
u16* fb;
s32 x, y;
u32* dataPtr;
+ u32 data;
s32 cursorX = sFaultDrawerStruct.cursorX;
s32 cursorY = sFaultDrawerStruct.cursorY;
+ u32** fontData = &sFaultDrawerStruct.fontData;
+ s32 shift = c % 4;
- dataPtr = &sFaultDrawerStruct.fontData[((c & 4) >> 2) + ((c / 8) * 16)];
- fb = sFaultDrawerStruct.fb + sFaultDrawerStruct.w * cursorY + cursorX;
+ dataPtr = &fontData[0][(((c / 8) * 16) + ((c & 4) >> 2))];
+ fb = sFaultDrawerStruct.fb + (sFaultDrawerStruct.w * cursorY) + cursorX;
if ((sFaultDrawerStruct.xStart <= cursorX) &&
((sFaultDrawerStruct.charW + cursorX - 1) <= sFaultDrawerStruct.xEnd) &&
(sFaultDrawerStruct.yStart <= cursorY) &&
((sFaultDrawerStruct.charH + cursorY - 1) <= sFaultDrawerStruct.yEnd)) {
for (y = 0; y < sFaultDrawerStruct.charH; y++) {
- u32 mask = 0x10000000 << (c % 4);
- u32 data = *dataPtr;
+ u32 mask = 0x10000000 << shift;
+ data = *dataPtr;
for (x = 0; x < sFaultDrawerStruct.charW; x++) {
- if (mask & data)
+ if (mask & data) {
fb[x] = sFaultDrawerStruct.foreColor;
- else if (sFaultDrawerStruct.backColor & 1)
+ } else if (sFaultDrawerStruct.backColor & 1) {
fb[x] = sFaultDrawerStruct.backColor;
+ }
mask >>= 4;
}
fb += sFaultDrawerStruct.w;
@@ -125,9 +127,6 @@ void FaultDrawer_DrawChar(char c) {
}
}
}
-#else
-#pragma GLOBAL_ASM("asm/non_matchings/code/fault_drawer/FaultDrawer_DrawChar.s")
-#endif
s32 FaultDrawer_ColorToPrintColor(u16 color) {
s32 i;