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