ROM hacking
On Dezembro 28, 2021 by adminHaving foi criado por muitos programadores ou equipes de programação diferentes, os dados da ROM podem ser muito diversos.
Hex editingEdit
Um editor hexadecimal é uma das ferramentas mais fundamentais no repertório de qualquer hacker de ROM. Editores hexadecimais são normalmente usados para editar texto, e para editar outros dados para os quais a estrutura é conhecida (por exemplo, propriedades do item), e montagem de hacking.
Editar texto é uma das formas mais básicas de hacking. Muitos jogos não armazenam seu texto na forma ASCII, e por causa disso, alguns editores hexadecimais especializados foram desenvolvidos, que podem ser informados quais valores de byte correspondem a qual letra(s) do alfabeto, para facilitar a edição de texto; um arquivo que define essas relações byte=letra é chamado de arquivo “table”. Outros jogos usam técnicas simples de compressão de texto (como a codificação de pares de bytes, também chamada de codificação de dois azulejos ou DTE, na qual certas combinações de duas ou mais letras são codificadas como um byte) que um editor hexadecimal devidamente equipado pode facilitar a edição.
Um editor hexadecimal é a ferramenta de escolha para editar coisas como propriedades de caracteres/itens, se a estrutura e localização destes dados for conhecida e não houver um editor específico para o jogo que possa editar esta informação. Alguns intrépidos hackers também fazem edição de níveis com um editor hexadecimal, mas isto é extremamente difícil (exceto em jogos cujo formato de armazenamento de níveis se assemelha muito ao que é apresentado em um editor hexadecimal).
Edição de gráficosEditar
Outra habilidade básica de hacking é o hacking gráfico, que está mudando a aparência dos ambientes do jogo, personagens, fontes, ou outras coisas do gênero. O formato dos dados gráficos varia de console para console, mas a maioria dos primeiros (NES, Super NES, Game Boy, etc.) armazenam gráficos em tiles, que são unidades de dados de 8×8 pixels, que são dispostos na tela para produzir o resultado desejado. A edição destes tiles também é possível com um editor hexadecimal, mas geralmente é feita com um editor de tiles (como Tile Layer ou Tile Molester), que pode exibir os dados da ROM de forma gráfica, assim como encontrar e editar tiles.
Hacks gráficos podem variar de simples edições (como dar ao Luigi um taco de golfe, ou fazer sprites pixelizados para Pokemon de geração posterior) até “portar” personagens de um jogo para outro, até mudanças temáticas completas (geralmente com mudanças de paleta acompanhando; veja abaixo).
Hacking gráfico mais sofisticado envolve a mudança de mais do que apenas tiles e cores, mas também a forma como os tiles são dispostos, ou grupos de tiles gerados, dando mais flexibilidade e controle sobre a aparência final. Isto é conseguido através da edição hexadecimal ou de uma ferramenta especializada (seja para o jogo específico ou para um sistema específico). Um bom exemplo de um hack gráfico é o Pokémon Torzach inacabado, um hack que tentou adicionar toda uma nova geração de Pokémon e tiles ao jogo. O hack foi entretanto descontinuado, mas ainda serve como um bom exemplo do que pode ser alcançado com as ferramentas disponíveis.
Edição de paletaEdit
Outra forma comum de hacking é o hacking de paleta, onde os valores de cor são modificados para alterar as cores que um jogador vê no jogo (isto muitas vezes anda de mãos dadas com o hacking gráfico); Os valores de paleta são normalmente armazenados no Hex. Isto é bastante fácil para jogos NES, cujos gráficos utilizam um conjunto pré-definido de cores entre as quais um jogo selecciona; o hacking de paleta neste caso implica alterar quais dessas cores são seleccionadas. A questão é um pouco mais complicada com jogos Super NES e jogos para outros sistemas, que armazenam valores absolutos de cores RGB. Os editores de paleta são normalmente simples e muitas vezes são com editores de nível, ou editores gráficos específicos do jogo.
Level editingEdit
Uma das formas mais populares de hacking de ROM, a edição de níveis implica modificar ou redesenhar os níveis ou mapas de um jogo. Isto é feito quase exclusivamente com um editor especialmente feito para um jogo em particular (chamado editor de níveis). A edição de níveis pode ser feita para tornar o jogo mais desafiador, para alterar o fluxo do enredo do jogo ou apenas para dar algo novo a um jogo antigo. Combinado com hacking gráfico extensivo, o jogo pode assumir uma aparência e sensação muito diferente.
Edição de dadosEditar
Um componente central de muitos hacks (especialmente de jogos de vídeo role-playing) é a edição de dados como personagem, item, e propriedades inimigas. Isto normalmente é feito “à mão” (com um editor hexadecimal) se a localização e estrutura dos dados for conhecida, ou com um editor específico do jogo que tenha esta funcionalidade. Através disto, um hacker pode alterar a forma como as armas funcionam, como os inimigos são fortes ou como eles agem, etc. Isto pode ser feito para tornar o jogo mais fácil ou mais difícil, ou para criar novos cenários para o jogador enfrentar.
Assembly hackingEdit
A mais poderosa, e sem dúvida a mais difícil, técnica de hacking é a edição do código real do jogo, um processo chamado ASM hacking (“ASM” significa “assembly”, referindo-se ao tipo de linguagem de programação usada nos primeiros jogos de vídeo). Não há um padrão definido para hacking ASM, pois o código varia muito de jogo para jogo, mas a maioria dos hackers ASM habilidosos ou usam um emulador equipado com um depurador ou traçador embutido, ou rodam a ROM através de um desassemblador, depois analisam o código e o modificam usando um editor hexadecimal ou assembler de acordo com suas necessidades. Embora bastante desafiador em comparação com os métodos relativamente simples listados acima, tudo é possível com o hacking ASM (claro, dentro dos limites do hardware/software da plataforma de jogos), desde alterar a IA inimiga até mudar a forma como os gráficos são gerados. (É claro, as possibilidades ainda são limitadas pela capacidade do hacker de compreender e modificar o código existente.)
Se os desenvolvedores usaram uma linguagem digitada, o hacker pode ser capaz de compilar seu próprio código para o jogo na mesma linguagem, se eles tiverem acesso a um compilador adequado. Um exemplo disso seria usar o C para hackear jogos Nintendo 64, já que o MIPS-GCC pode compilar código para o Nintendo 64.
HackingEdit de música
Hacking de música são relativamente raros, devido à grande variedade de formas como os jogos armazenam dados musicais (daí a dificuldade em localizar e modificar esses dados) e as dificuldades em compor novas músicas (ou portar músicas de outro jogo). Como o cracking de música é muito incomum, muitos hacks não têm nenhuma música portada/composta adicionada. O programa SapTapper pode ser usado para piratear dados musicais da Game Boy Advance, no entanto, como muitos jogos Game Boy Advance usam o M4A Engine (também chamado “Sappy Driver”) para música. Vários outros utilitários foram criados para funcionar com o motor como Sappy 2006.
Outra instância do mesmo motor a ser usada entre jogos está na Nintendo 64, na qual a maioria dos jogos usa o mesmo formato; embora usem bancos de som diferentes. Um utilitário conhecido como a Ferramenta Midi N64 foi criado para editar as sequências que a maioria dos jogos para Nintendo 64 utiliza, embora não abranja os títulos para N64 de primeira viagem que utilizam uma engine ligeiramente diferente, como Super Mario 64.Vários jogos Mega Drive utilizam uma engine de som não oficialmente conhecida como “SMPS”, que tem sido pesquisada há décadas por muitos hackers. A partir de hoje, existem várias ferramentas para alterar a música dos jogos que utilizam a engine SMPS (Sonic the Hedgehog games em particular), e muitos deles foram para o Steam Workshop.
ROM expansionEdit
Generalmente falando, um hacker da ROM normalmente não pode adicionar conteúdo a um jogo, mas apenas alterar o conteúdo existente. Este limite pode ser ultrapassado através da expansão da ROM, onde o tamanho total da imagem ROM é aumentado, dando espaço para mais conteúdo e, por sua vez, para um jogo maior. A dificuldade em fazer isto varia dependendo do sistema para o qual o jogo foi feito. Por exemplo, a expansão de uma ROM NES pode ser difícil ou mesmo impossível devido ao mapeador utilizado pelo jogo. Por exemplo, se um cartógrafo permite 16 bancos de ROM e todos eles são usados, expandir a ROM ainda mais é impossível sem de alguma forma converter o jogo para outro cartógrafo, o que poderia ser fácil ou extremamente difícil. Por outro lado, a expansão de um jogo SNES é (relativamente) simples. Para utilizar o espaço adicionado, partes do código do jogo têm de ser modificadas ou reescritas (ver montagem de hacking acima) para que o jogo saiba onde procurar. Outro tipo de expansão da ROM que é bastante fácil é a Game Boy Advance ROMs. As ROMs em si são geralmente pequenas, mas o espaço de memória disponível por vezes ultrapassa-o em múltiplos de até 17.
.
Deixe uma resposta