Menu

Mostrar postagens

Esta seção permite que você visualize todas as postagens feitas por este membro. Observe que você só pode ver postagens feitas em áreas às quais tem acesso atualmente.

Menu Mostrar postagens

Tópicos - Ingram

#1
Olá. Há algum tempo que não estou ativo em romhacking, e estou a tentar aprender um pouco mais sobre a NES. Na verdade já fiz alguns hacks para NES (principalmente para amigos) mas já passaram alguns anos e regressar não está a ser fáci.

Especificamente, queria fazer algumas modificações ao Mighty Final Fight. Não penso que sejam modificações difíceis em si (especialmente para hackers mais avançados9, mas simplesmente não estou a conseguir encontrar os valores necessários. Mais especificamente, estou a tentar encontrar o seguinte:

1) Bytes que definem a velocidade das personagens em movimento. Mesmo sem recorrer a debuggers, é possível encontrar alguns valores relativos às personagens mediante comparação direta entre, por exemplo, valores afetados por Game Genie e um ROM normal (ou até fazer uso de mapas de RAM). Porém, não consegui ainda encontrar nada relativo a velocidade. O intuito é descobrir uma tabela que contenha os valores dos "atributos" das personagens. Eu já encontrei valores que definem a força dos ataques, por exemplo, mas nada relativo à velocidade.

2) Os pointers de diálogo. Este é o caso mais "bicudo" porque penso que é a primeira vez que não estou a conseguir encontrar pointers de NES. Além de que também são usados 5 bytes extra antes do diálogo, e não estou a conseguir perceber se os pointers estarão direcionados para eles também. Exemplo:



No ROM (da versão norte-americana) isto encontra-se em:
9D81 (com header) / 9D71 (sem header): 35 00 02 02 02
9D86/76: 17 14 17 78 17 14 17 2B 00 18 00 10 1C 00 23 17 21 10 22 17 14 21 2C FF (diálogo indicado acima).

Na primeira linha de código, os 5 bytes precedem sempre "blocos" de diálogo (ou seja, nao é usado sempre que há um diálogo, mas é usado onde o jogo define blocos distintos de texto). O valor $35 define o som a usar ao imprimir cada letra no ecrã; ainda não consegui definir os outros quatro valores (presumo que apontem para a localização das letras no ROM, mas ainda não validei isso). A segunda linha pertence ao diálogo em si. $17 = H, $14 = E, $78 = -, etc. $FF termina uma sequência e passa à próxima ($FE não é apresentado mas é usado para novas linhas ou espaçamento).

Ou a instrução é indireta, ou algo me está a passar ao lado, mas após múltiplas tentativas simplesmente não consigo encontrar os pointers para o texto. Também não ajuda ter sido necessário adicionar uma header ao jogo, porque estou a usar o Mesen, e o emulador consegue ler ROMs sem header, mas exige uma sempre que é feita uma modificação, por isso os cálculos também poderão estar errados. Além disso, apenas sei que cada bloco de texto está claramente "à espera" de encontrar apenas texto, porque tentar reapontar com comandos JMP não resulta.

Gostaria de saber se alguém me pode ajudar a encontrar estes valores sendo que o mais interessante seria entender o que o jogo está a fazer com o texto (eu sei que a Capcom costumava implementar coisas de um modo um pouco estranho nos seus jogos, e pode ser um desses casos). Por outro lado, ter noção dos atributos das personagens também seria curioso (para hacks mais generalistas).

Obrigado!