92 lines
8.3 KiB
NASM
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
|