init
This commit is contained in:
104
charCalcs.asm
Normal file
104
charCalcs.asm
Normal file
@@ -0,0 +1,104 @@
|
||||
ReturnCharsInString:
|
||||
|
||||
|
||||
lhu v0,0x0(a0)
|
||||
nop
|
||||
srl v0,v0,0xD ;;;;Check 13th bit (1byte system !!!)
|
||||
bne v0,zero,IsMy1byteString
|
||||
clear v1
|
||||
;v1 = charCount
|
||||
|
||||
j StartReading
|
||||
nop
|
||||
IsMy1byteString:
|
||||
lhu v0,0x0(a0)
|
||||
nop
|
||||
andi v0,v0,0xff ;Clear from cmd flag
|
||||
|
||||
andi v1,v0,0x1
|
||||
beq v1,zero,notAnd1
|
||||
nop
|
||||
addiu v0,v0,0x1
|
||||
|
||||
notAnd1:
|
||||
sra v0,v0,1 ;v0/2 (bytes Pairs)
|
||||
addiu v0,v0,1 ;v0 += = header 2 bytes
|
||||
jr ra
|
||||
move v1,v0 ;return v0,v1 - charsNum
|
||||
|
||||
GetNewChar:
|
||||
addiu v1,v1,1
|
||||
StartReading:
|
||||
lhu v0,0x0(a0) ;a0 - curTextAddr
|
||||
nop
|
||||
sltiu v0,v0,0x1000
|
||||
bne v0,zero,GetNewChar ;if currentChar<1000 - goto next addr+2b
|
||||
addiu a0,a0,2
|
||||
jr ra
|
||||
move v0,v1 ;return v0,v1 - charsNum
|
||||
|
||||
|
||||
calcNextXCustom:
|
||||
addiu sp,sp,-0x18
|
||||
sw ra,0x10(sp)
|
||||
|
||||
lhu v0,0x0(a0)
|
||||
nop
|
||||
andi v1,v0,0xff ;Clear from cmd flag
|
||||
srl v0,v0,0xD ;;;;Check 13th bit (1byte system !!!)
|
||||
beq v0,zero,JapOldText ;if bit 0d = 0 - OldTypeText
|
||||
nop
|
||||
j IHaveStringLength
|
||||
move v0,v1 ;double char count
|
||||
JapOldText:
|
||||
jal ReturnCharsInString
|
||||
nop
|
||||
IHaveStringLength:
|
||||
sll v1,v0,0x1
|
||||
addu v1,v1,v0
|
||||
lw ra,0x10(sp)
|
||||
sll v0,v1,0x1 ;*charcount * 6 pix
|
||||
jr ra
|
||||
addiu sp,sp,0x18
|
||||
|
||||
RetunCharsToCity:
|
||||
lhu v0,0x0(a0)
|
||||
nop
|
||||
srl v0,v0,0xD ;;;;Check 13th bit (1byte system !!!)
|
||||
bne v0,zero,IsMy1byteCity
|
||||
clear v1 ;v1 = charCount
|
||||
|
||||
j StartReading
|
||||
nop
|
||||
IsMy1byteCity:
|
||||
lhu v0,0x0(a0)
|
||||
nop
|
||||
andi v0,v0,0xff ;Clear from cmd flag
|
||||
jr ra
|
||||
move v1,v0 ;return v0,v1 - charsNum
|
||||
|
||||
|
||||
RetunCharsToCityDiv2:
|
||||
lhu v0,0x0(a0)
|
||||
nop
|
||||
srl v0,v0,0xD ;;;;Check 13th bit (1byte system !!!)
|
||||
bne v0,zero,IsMy1byteCityDiv2
|
||||
clear v1 ;v1 = charCount
|
||||
|
||||
j StartReading
|
||||
nop
|
||||
IsMy1byteCityDiv2:
|
||||
lhu v0,0x0(a0)
|
||||
nop
|
||||
andi v0,v0,0xff ;Clear from cmd flag
|
||||
|
||||
andi v1,v0,0x1
|
||||
beq v1,zero,notAnd1_2
|
||||
nop
|
||||
addiu v0,v0,0x1
|
||||
|
||||
notAnd1_2:
|
||||
sra v0,v0,1 ;v0/2 (bytes Pairs)
|
||||
; addiu v0,v0,1 ;v0 += = header 2 bytes
|
||||
jr ra
|
||||
move v1,v0 ;return v0,v1 - charsNum
|
||||
Reference in New Issue
Block a user