Autor Tópico: [Documentação] Compressão Megaman Legends 2 - Ps1  (Lida 57 vezes)

denim

  • AsmRomhacker
  • Administrador
  • Macaco Jovem
  • **
  • Mensagens: 97
    • Ver perfil
  • Itens:



[Documentação] Compressão Megaman Legends 2 - Ps1
« Online: Novembro 27, 2017, 19:29:33 pm »
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.

Código: [Selecionar]
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