Trecho de código que faz a descompressão dos gráficos do Megaman Legends 2. Compressão simples, LZ.
- t3 inicializa com $80000000 e serve para teste dos bits de cada word do header.
- t5 inicializa com a primeira word de header. As demais words são lidas via lw t5,$0(t0), ou seja, t0 possui o endereço do início do bloco de header.
- a1 possui o endereço da área de dados.
- t4 e t1 possuem o endereço de escrita inicial do dado descomprimido. t4 é usado para a escrita do dado atual, enquanto t1 apenas para cálculo da origem do par LZ.
8001D36C lw t0,$8(a0)
8001D370 lw t1,$10(a0)
8001D374 lw t2,$1C(a0)
8001D378 lw t3,$14(a0)
8001D37C lw t4,$4(a0)
8001D380 lw t5,$18(a0)
8001D384 and v1,0
8001D388 ori v1,$FFFF
8001D38C and t7,t5,t3
8001D390 bne t7,0,$8001D3A8
8001D394 lhu t8,$0(a1)
8001D398 addiu a1,$2
8001D39C sh t8,$0(t4)
8001D3A0 j $8001D3E0
8001D3A4 addiu t4,$2
8001D3A8 addiu a1,$2
8001D3AC beq t8,v1,$8001D420
8001D3B0 srl t7,t8,$3
8001D3B4 addu t7,t1
8001D3B8 andi t8,$7
8001D3BC addiu t8,$2
8001D3C0 lbu t9,$0(t7)
8001D3C4 lbu v0,$1(t7)
8001D3C8 sb t9,$0(t4)
8001D3CC sb v0,$1(t4)
8001D3D0 addiu t7,$2
8001D3D4 subiu t8,$1
8001D3D8 bne t8,0,$8001D3C0
8001D3DC addiu t4,$2
8001D3E0 srl t3,$1
8001D3E4 bne t3,0,$8001D3F8
8001D3E8 subiu a2,$1
8001D3EC lw t5,$0(t0)
8001D3F0 addiu t0,$4
8001D3F4 lui t3,$8000
8001D3F8 bne a2,0,$8001D390
8001D3FC and t7,t5,t3
8001D400 sw t0,$8(a0)
8001D404 sw t2,$1C(a0)
8001D408 sw t3,$14(a0)
8001D40C sw t4,$4(a0)
8001D410 sw t5,$18(a0)
8001D414 sw t1,$10(a0)
8001D418 jr ra