Hi Gemini,
I'm not sure but after playing with your suggestion than the text just shift left/right or up/down
I look into IDA again and found this function was call a another func and here it is.
TEXT:80068A24 # =============== S U B R O U T I N E =======================================
TEXT:80068A24
TEXT:80068A24
TEXT:80068A24 sub_80068A24: # DATA XREF: TEXT:800141ECo
TEXT:80068A24
TEXT:80068A24 arg_10 = 0x10
TEXT:80068A24 arg_20 = 0x20
TEXT:80068A24 arg_24 = 0x24
TEXT:80068A24 arg_30 = 0x30
TEXT:80068A24 arg_60 = 0x60
TEXT:80068A24
TEXT:80068A24 addiu $s2, 4 # Add Immediate Unsigned
TEXT:80068A28 move $s6, $0
TEXT:80068A2C li $s7, 1 # Load Immediate
TEXT:80068A30 lw $v0, arg_60($sp) # Load Word
TEXT:80068A34 lw $s0, -4($s2) # Load Word
TEXT:80068A38 lw $s4, arg_20($sp) # Load Word
TEXT:80068A3C lw $a0, 4($v0) # Load Word
TEXT:80068A40 lw $a1, arg_24($sp) # Load Word
TEXT:80068A44 addiu $s5, $a0, 0x2A # Add Immediate Unsigned
TEXT:80068A48 lh $v1, 0x2A($a0) # Load Halfword
TEXT:80068A4C lh $v0, 2($s5) # Load Halfword
TEXT:80068A50 addu $s1, $v1, $s4 # Add Unsigned
TEXT:80068A54 addu $v0, $a1 # Add Unsigned
TEXT:80068A58 sll $s3, $v0, 16 # Shift Left Logical
TEXT:80068A5C
TEXT:80068A5C loc_80068A5C: # CODE XREF: sub_80068A24:loc_80068ACCj
TEXT:80068A5C lbu $v0, 0($s0) # Load Byte Unsigned
TEXT:80068A60 nop
TEXT:80068A64 bnez $v0, loc_80068AA0 # Branch on Not Zero
TEXT:80068A68 sll $a1, $s1, 16 # Shift Left Logical
TEXT:80068A6C addiu $s0, 1 # Add Immediate Unsigned
TEXT:80068A70 lbu $a0, 0($s0) # Load Byte Unsigned
TEXT:80068A74 nop
TEXT:80068A78 andi $v1, $a0, 0xF0 # AND Immediate
TEXT:80068A7C bnez $v1, loc_80068A8C # Branch on Not Zero
TEXT:80068A80 li $v0, 0x40 # Load Immediate
TEXT:80068A84 j loc_80068A98 # Jump
TEXT:80068A88 move $s7, $0
TEXT:80068A8C # ---------------------------------------------------------------------------
TEXT:80068A8C
TEXT:80068A8C loc_80068A8C: # CODE XREF: sub_80068A24+58j
TEXT:80068A8C bne $v1, $v0, loc_80068A98 # Branch on Not Equal
TEXT:80068A90 andi $v0, $a0, 0xF # AND Immediate
TEXT:80068A94 sll $s6, $v0, 8 # Shift Left Logical
TEXT:80068A98
TEXT:80068A98 loc_80068A98: # CODE XREF: sub_80068A24+60j
TEXT:80068A98 # sub_80068A24:loc_80068A8Cj
TEXT:80068A98 j loc_80068ACC # Jump
TEXT:80068A9C addiu $s0, 1 # Add Immediate Unsigned
TEXT:80068AA0 # ---------------------------------------------------------------------------
TEXT:80068AA0
TEXT:80068AA0 loc_80068AA0: # CODE XREF: sub_80068A24+40j
TEXT:80068AA0 sra $a1, 16 # Shift Right Arithmetic
TEXT:80068AA4 sra $a2, $s3, 16 # Shift Right Arithmetic
TEXT:80068AA8 lw $a0, arg_60($sp) # Load Word
TEXT:80068AAC lbu $a3, 0($s0) # Load Byte Unsigned
TEXT:80068AB0 lw $v1, arg_30($sp) # Load Word
TEXT:80068AB4 or $a3, $s6 # OR
TEXT:80068AB8 jal sub_80066D38 # Jump And Link
TEXT:80068ABC sw $v1, arg_10($sp) # Store Word
TEXT:80068AC0 lw $v0, 0x2070($gp) # Load Word
TEXT:80068AC4 addiu $s0, 1 # Add Immediate Unsigned
TEXT:80068AC8 addu $s1, $v0 # Add Unsigned
TEXT:80068ACC
TEXT:80068ACC loc_80068ACC: # CODE XREF: sub_80068A24:loc_80068A98j
TEXT:80068ACC bnez $s7, loc_80068A5C # Branch on Not Zero
TEXT:80068AD0 nop
TEXT:80068AD4 j loc_80068B94 # Jump
TEXT:80068AD8 nop
TEXT:80068AD8 # End of function sub_80068A24
TEXT:80068AD8
TEXT:80068ADC
TEXT:80068ADC # =============== S U B R O U T I N E =======================================
I think VWF is the best but it's ok if we just move the cursor (or whatever it called) back to few pixel before print next char.
Thanks,
@Aganar: No, it isn't