Files
sShemet 8e506a6912 init
2025-10-04 11:53:04 +05:00

92 lines
8.3 KiB
NASM

**************************************************************
* FUNCTION *
**************************************************************
undefined __stdcall makeCharPixels(undefined4 r4, undefi
assume gp = 0x8007b190
undefined v0:1 <RETURN>
undefined4 a0:4 r4
undefined4 a1:4 a1
undefined4 a2:4 isSmallChar XREF[1]: 8001a11c(W)
undefined4 t2:4 t2 XREF[1]: 8001a0f8(W)
undefined4 t1:4 t1 XREF[1]: 8001a118(W)
undefined4 a2:4 a2 XREF[1]: 8001a11c(W)
undefined2 HASH:5f64aad curByte
makeCharPixels XREF[4]: PrintTimeinSaveLoad?:8001621c(c),
CreateCharCopyToDMAChain:800198dc(c),
GenerateSmallChar:8001a298(c),
PrintPlayerNameInBattle!:8001b0ec(c)
8001a0f8 ac 00 8a 93 lbu t2,0xac(gp)=>DAT_8007b23c load colIndex(b) to r10 from 7b23c
assume gp = <UNKNOWN>
8001a0fc 09 00 c0 14 bne isSmallChar,zero,initSmFontAddr if r6 <> 0 then Branch (small text)
8001a100 21 40 80 00 _move t0,r4 load ScrathAddr to r8
8001a104 1e 80 03 3c lui v1,0x801e
8001a108 80 f4 63 34 ori v1,v1,0xf480 load font addr in mem to r3
8001a10c c0 10 05 00 sll v0,a1,0x3 r2 = a1 (r5) << 3
8001a110 21 10 45 00 addu v0,v0,a1 r2 += r5 (ITOGO r2 = r5*9)
8001a114 40 10 02 00 sll v0,v0,0x1 r2 << 1. ITOGO r2 = r5 * 18 (12h)
8001a118 21 48 43 00 addu t1,v0,v1 r9 (charAddr) = r2(offs)+r3(start) = 801F0224
8001a11c 50 68 00 08 j contLoadChar
8001a120 09 00 06 24 _li a2,0x9 r6 = charBytesLength = 9
initSmFontAddr XREF[1]: 8001a0fc(j)
8001a124 1e 80 03 3c lui v1,0x801e
8001a128 00 f0 63 34 ori v1,v1,0xf000 load font addr to r3 (801ef000)
8001a12c 40 10 05 00 sll v0,a1,0x1 r2 = r5 << 1 (*2)
8001a130 21 10 45 00 addu v0,v0,a1 r2 += r5 (it. *3)
8001a134 80 10 02 00 sll v0,v0,0x2 r2 << 2 (*4) (r2 = r5 *12)
8001a138 21 48 43 00 addu t1,v0,v1 r9 = r2(offs) + r3 (start)
8001a13c 06 00 06 24 li a2,0x6 r6 = byteslength = 6
contLoadChar XREF[1]: 8001a11c(j)
8001a140 21 10 c0 00 move v0,a2 r2 = r6 (counter)
8001a144 2f 00 40 10 beq v0,zero,charLoaded if counter=0 then branch
8001a148 ff ff c6 24 _addiu a2,a2,-0x1 dec r6
8001a14c 80 1f 07 3c lui a3,0x1f80
8001a150 e0 02 e7 34 ori a3,a3,0x2e0 set scratch convert addr r7 = 1f8002e0
charLoop XREF[1]: 8001a1fc(j)
8001a154 00 00 23 95 lhu v1=>DAT_801ef480_font12x12,0x0(CharF load upperhalf of char to r3
8001a158 00 00 00 00 nop
8001a15c 0f 00 64 30 andi r4,v1,0xf r4 = r3 & 0f - cutting left semibyte
8001a160 02 19 03 00 srl v1,v1,0x4 r3 >> 4
8001a164 0f 00 62 30 andi v0,v1,0xf r2 = r3 & 0f
8001a168 40 10 02 00 sll v0,v0,0x1 r2 << 1
8001a16c 21 10 47 00 addu v0,v0,a3 r2 = r2 + to4bitConvertTableAddr (r7)
8001a170 00 00 42 94 lhu v0,0x0(v0)=>DAT_1f8002e0 r2 = *r2(half) pixel pattern
8001a174 00 00 00 00 nop
8001a178 18 00 4a 00 mult v0,t2 r2*r10. make Color
8001a17c 40 20 04 00 sll r4,r4,0x1 r4 << 1
8001a180 21 20 87 00 addu r4,r4,a3 r4 += r6 counter
8001a184 12 28 00 00 mflo a1 load lo to r5
8001a188 00 00 82 94 lhu v0,0x0(r4)=>DAT_1f8002e0 load table+r4
8001a18c 00 00 00 00 nop
8001a190 18 00 4a 00 mult v0,t2 r2 * colorIndex r10
8001a194 02 19 03 00 srl v1,v1,0x4 r3 >> 4, right 4 bits
8001a198 0f 00 64 30 andi r4,v1,0xf r4 = r3 & f0 (cut right semibyte)
8001a19c 02 19 03 00 srl v1,v1,0x4 r3 >> 4
8001a1a0 40 18 03 00 sll v1,v1,0x1 r3 << 1 = *2
8001a1a4 21 18 67 00 addu v1,v1,a3 r3=r3+Table r7
8001a1a8 00 14 05 00 sll v0,a1,0x10 r2 = r5 << 10 bits
8001a1ac 12 60 00 00 mflo t4 load r12,low
8001a1b0 25 10 82 01 or v0,t4,v0 r2 = r12 | r2
8001a1b4 00 00 02 ad sw v0,0x0(t0) load *r8(current Scratch) from r2(result)
8001a1b8 00 00 62 94 lhu v0,0x0(v1)=>DAT_1f8002e0 load r2 from TablePattern Half from r3
8001a1bc 00 00 00 00 nop
8001a1c0 18 00 4a 00 mult v0,t2 r2*color r10
8001a1c4 40 20 04 00 sll r4,r4,0x1 r4 << 1
8001a1c8 21 20 87 00 addu r4,r4,a3 r4 = r4 + TableStart
8001a1cc 12 28 00 00 mflo a1 ld r5,lo
8001a1d0 00 00 82 94 lhu v0,0x0(r4)=>DAT_1f8002e0 ld half r2 from *r4
8001a1d4 00 00 00 00 nop
8001a1d8 18 00 4a 00 mult v0,t2 r2*col
8001a1dc 02 00 29 25 addiu t1,t1,0x2 move charFont + +2
8001a1e0 21 18 c0 00 move v1,a2 r3 = byteCount (r6)
8001a1e4 ff ff c6 24 addiu a2,a2,-0x1 r6 -= 1
8001a1e8 04 00 08 25 addiu t0,t0,0x4 scrathAddr r8 += 4
8001a1ec 00 14 05 00 sll v0,a1,0x10 r2 = r5 << 10 bits (move to hi)
8001a1f0 12 60 00 00 mflo t4 ld r12,lo (result)
8001a1f4 25 10 82 01 or v0,t4,v0 combine r2 & r 12 (0001 x 1111)
8001a1f8 00 00 02 ad sw v0,0x0(t0) store result to scratch r2 to *r8
8001a1fc d5 ff 60 14 bne v1,zero,charLoop if r3 counter<>0 goto loop
8001a200 04 00 08 25 _addiu t0,t0,0x4 r8 scrath += 4
charLoaded XREF[1]: 8001a144(j)
8001a204 08 00 e0 03 jr ra
8001a208 00 00 00 00 _nop