Gerador de arquivos IPS

ips

Recentemente para um artigo no Retrocomputaria Plus eu precisei produzir uns patches no formato IPS e enquanto procurava uma forma de fazê-los acabei me dando conta de que apesar de ser razoavelmente fácil achar programas que aplicam os partches é meio complicado achar ferramentas que os produzem.

Assim, resolvi criar uma!

De acordo com as lendas o IPS é o acrônimo para “international patching system” e é uma dos métodos mais comuns para a distribuição de hacks (pequenas correções, cheats, traduções etc) nos jogos usados em emuladores — bem, se você gravá-lo em um cassete, disquete e/ou numa EPROM também poderá utilizar no hardware real.

A ideia é que você não (re)distribua o arquivo completo (que pode caracterizar violação da legislação de direitos autorais) mas apenas os trechos que precisam ser modificados (no final, alguns poucos bytes — os quatro arquivos IPS que criei não somam 2KiB juntos).

A estrutura do arquivo IPS é razoavelmente simples:

  • Cabeçalho com a sequência “PATCH”.
  • A área de registros que podem ser de dois tipos:
    • Normal
      • Posição onde ocorrerá a mudança (3 bytes)
      • Quantidade de bytes a modificar (2 bytes, sempre maior que zero) e
      • Sequência de bytes com a alteração
    • RLE
      • Posição onde ocorrerá a mudança (3 bytes)
      • Identificação de que é registro RLE (2 bytes com valor zero)
      • Número de bytes a repetir (2 bytes) e
      • O byte a ser repetido (1 byte).
  • Para encerrar, um sinalizador de término, a sequência “EOF”.

Mas apesar de simples eu acabei não implementando o registro RLE, para aquilo que precisava não havia necessidade — sim, foi pura preguiça 🙂

Para usá-lo basta:

$ ./ipsmaker.pl <arquivo original> <arquivo alterado> <nome do IPS>

Durante o processamento ele exibe em STDOUT um resumo das alterações (era a minha informação de debug) mas se não quiser visualizá-lo acrescente “> /dev/null” na linha de comando.

Este programa tem seu próprio módulo, o IPSmaker.pm, que não é apenas um conjunto de rotinas, ele é uma classe — Um uso bem tímido de orientação à objetos no Perl, diga-se de passagem, mas que já serve de exemplo de como é que se faz.

Anúncios

6 comentários sobre “Gerador de arquivos IPS

  1. Pingback: Orientação a objetos em Perl, o básico | giovannireisnunes

  2. Pingback: A menos que… | giovannireisnunes

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s