[ASM PATCHING] Aula Básica - 02

Iniciado por Anime_World, Setembro 03, 2020, 22:05:36 PM

tópico anterior - próximo tópico

0 Membros e 1 Visitante estão vendo este tópico.

Anime_World

Continuando nossa aula básica de introdução a tradução via asm patching.
Se você leu a primeira aula e colocou em prática, muito bom. Se não leu clique aqui para receber a introdução adequada: http://www.romhacking.net.br/index.php?topic=1578.0

Na aula passada vimos como inserir um texto em determinado endereço da ROM usando o comando origin e o comando db, aprendemos também como criamos um label. Para esta aula, vou demonstrar como criamos uma tabela para os textos que vamos inserir. Já que é bem comum para muitos jogos não usar a tabela padrão ASCII, principalmente os em japonês que usam SJIS.

Nosso patch para o jogo Altered Beast estava desta forma:


O que executando o comando:
bass patch.asm no linux
bass.exe patch.asm no windows

produz o seguinte resultado:



se a tela ficar toda azul, ative a opção de autofix checksum do emulador.

Agora temos na introdução a palavra "PRESS START" traduzida, consequentemente, precisamos editar os outros textos do jogo. Apertando START, caímos no primeiro texto relevante a ser traduzido, a celebre frase "I COMMAND YOU TO RISE FROM YOUR GRAVE AND RESCUE MY DAUGHTER!":



para traduzir essa frase, vamos repetir da mesma forma como foi feito na aula anterior:


porem este texto usa outra tabela que não é a padrão ascii, essa tabela consiste nos seguintes valores:

00=A
01=B
02=C
03=D
04=E
05=F
06=G
07=H
08=I
09=J
0A=K
0B=L
0C=M
0D=N
0E=O
0F=P
10=Q
11=R
12=S
13=T
14=U
15=V
16=W
17=X
18=Y
19=Z
1A=[
1B=\
1C=]
1D=^
1E=_
1F=`
20=a
21=b
22=c
23=d
24=e
25=f
26=g
27=h
28=i
29=j
2A=k
2B=l
2C=m
2D=n
2E=o
2F=p
30=q
31=r
32=s
33=t
34=u
35=v
36=w
37=x
38=y
39=z
3A={
3B=|
3C=}
3D=~
DF=
E0=!
E1="
E2=#
E3=$
E4=%
E5=&
E6='
E7=(
E8=)
E9=*
EA=+
EB=,
EC=-
ED=.
EE=/
EF=0
F0=1
F1=2
F2=3
F3=4
F4=5
F5=6
F6=7
F7=8
F8=9
F9=:
FA=;
FB=<
FC==
FD=>
FE=?
FF=@


para adicionar ela ao nosso patch, faremos da seguinte forma, usando o comando map:


Assim teremos o seguinte código:

//-- ARQUITETURA DO SISTEMA: megadrive
arch md.cpu

//-- TIPO DA ROM: big-endian
endian msb

//-- ROM Patcheada: patcheada.gen
output "patcheada.bin",create

//-- ROM Original
origin $00000000
insert "rom.bin"

//-- Texto do PRESS START
origin $0000BC92
aperte_start:
    db "  APERTE  START  "


//-- Tabela de caracteres para os outros textos
map 'A', $00, 26 // Mapeia os 26 caracteres maiusculos de A-Z com valores de $00 à $19
map 'a', $20, 26 // Mapeia os 26 caracteres minusculos de a-z com valores de $20 à $39
map ' ', $FD     // Mapeia o espaço como sendo $FD
map '/', $FE     // Mapeia / como quebra de linha e valor $FE

//-- Texto do RISE FROM YOUR GRAVE
origin $00053162
rise_from_your_grave:
    db "EU ZEUS/ORDENO QUE LEVANTE/DE SEU TUMULO E/RESGATE MINHA FILHA"


que produzirá o seguinte resultado no jogo Altered Beast:



Na próxima aula, mostrarei como trabalhar com os ponteiros usando o asm patching.
nonononono

ØX-Carnage

 :scripts: :scripts:

Boara para a parte 3....
No aguardo dos gráficos.
Parabéns manolo muito bom.

Anime_World

Citação de: ØX-Carnage online Setembro 17, 2020, 00:28:23 AM
:scripts: :scripts:

Boara para a parte 3....
No aguardo dos gráficos.
Parabéns manolo muito bom.

Já estou preparando a aula 3 pra mostrar a manipulação dos ponteiros.
nonononono

Gambas

Bem didático, heim tio! Muito bom!
[quero mais]
:parabens: