(https://greenhillszone.com/wp-content/uploads/2015/09/hang-on.jpg)
INFORMAÇÕES
Nome: Hang-On
Desenvolvedor: SEGA
Gênero: Corrida
Lançamento: 1985
Console: Master System
CREDITOS
Tradução: Gabriel Teixeira
Ferramenta Utilizada: WindHex32, TableManager, Mmoore
PROGRESSO DA TRADUÇÃO
Menus: 100%
Textos: 100%
Textos da Tela: 0%
OBSERVAÇÕES
● Patch deve ser aplicado na versão (Europe) do jogo original
● Não consegui traduzir esses ícones na tela de Jogo "Score", "Speed" etc. Caso alguém saiba e quiser me indicar algum editor para isso eu faço a tradução dessas palavras, fora isso todos os demais textos estão traduzidos.
SOBRE O JOGO
● Hang-On é um classico dos Arcades e posteriormente portado para consoles como Mega Drive, Master System que é basicamente um jogo de corrida que você disputa as fases contra o tempo afim de fazer a maior pontuação possível.
● É um jogo bem simples nos dias de hoje, mas que rende alguns momentos de diversão.
(https://lh3.googleusercontent.com/pw/AP1GczOErRKCfb0lsjZwQS33oFQLvgG_kGN_GnRUXvR8l19kRTIEki3rao32R6h5vGbT2G5eiX1wHNbd0zabTDsxqmrYE8d5bpYQA5_Ho1OS6Eg1L3iUVlzeZrMzpLjhU8J32bUnJarTdT5XeG9g4m1p0eFq=w623-h432-s-no-gm?authuser=1) (https://lh3.googleusercontent.com/pw/AP1GczNqtL5z4iTYur64eKCh68nHvr0xE2_v0Ia2yyf11Yjtsxv046NmjKg1927r90Xjxivn8kb4U4fyC_OhBgT3llOk2uh-mI5HSOkWbY6yumQmD_H_qNuwNu3pdFhHX_dUrh0WN0KbQYszHfR57Gzv8Xj4=w604-h422-s-no-gm?authuser=1) (https://lh3.googleusercontent.com/pw/AP1GczMvwUp8aQKiHcPCo_INhdgR5OhAe5yMCX18JZ9VEXXaNnx1SSqVdswRuIIC7oIe6fi46daLvyVttkQoRMEefjmymDnVoJk755teHxnFXz3duL9RHPVZGbrTuIlI9tASpEt1RWlY7Y0cu-89lp9w6dx-=w592-h418-s-no-gm?authuser=1)
Boa mano esse jogo é muito legal.
É só essas frases do HUD que você não conseguiu achar, ou tem mais coisas como grafios também?
Citação de: GabrielTPrado online Setembro 01, 2026, 18:08:05 PMCitação de: ØX-Carnage online Setembro 01, 2026, 13:31:41 PMBoa mano esse jogo é muito legal.
É só essas frases do HUD que você não conseguiu achar, ou tem mais coisas como grafios também?
Somente essas frases no Hud no demais tudo foi traduzido.
Bom vi que também não acentuou as fontes. Mas veja se isso ajuda
1. O que realmente acontece com os textos do HUD?À primeira vista parece que palavras como:
- SCORE
- SPEED
- COURSE
- LEFT
- LOW
- TOP
não existem como ASCII dentro da ROM.
Isso é parcialmente verdade.
As letras que aparecem na tela são
tiles gráficos de 8x8 pixels, mas o jogo possui uma pequena tabela de HUD que diz quais tiles devem ser colocados em cada posição.
O interessante é que, para as letras normais, o número do tile foi feito para coincidir com o código ASCII.
Exemplo:
A = 41
B = 42
C = 43
...
L = 4C
O = 4F
P = 50
R = 52
S = 53
T = 54
U = 55
V = 56
...
Z = 5A
espaço = 20
Porém, cada caractere ocupa
DOIS bytes no HUD.
O segundo byte normalmente é
09.
Por isso "SCORE" não aparece na ROM desta maneira:
53 43 4F 52 45Ele aparece assim:
53 09 43 09 4F 09 52 09 45 09
S C O R E
O byte
09 é o atributo do tile usado pelo Master System.
Não altere os 09.Na maioria das traduções basta modificar somente o primeiro byte de cada par.
2. Ferramenta mais simplesPara essas palavras pode ser usado somente um editor hexadecimal, por exemplo o
HxD.
Passos:
- Abra uma cópia da ROM no HxD.
- Use "Pesquisar > Localizar".
- Escolha pesquisa por "Valores hexadecimais".
- Procure uma das sequências indicadas abaixo.
- Altere os bytes diretamente, sempre em modo Overwrite/Sobrescrever.
- Nunca insira bytes novos no arquivo.
- Salve com outro nome e teste no emulador.
3. Endereços exatos do HUD na ROMA tabela usada para as duas linhas superiores do HUD começa aproximadamente em:
ROM: $08D9O jogo copia essa tabela para o tilemap do VDP.
As palavras que interessam estão nestes offsets:
SCOREOffset:
$08DB
Bytes originais:
53 09 43 09 4F 09 52 09 45 09
S C O R E
A pesquisa por:
53 09 43 09 4F 09 52 09 45 09leva diretamente para o lugar correto nesta ROM.
COURSEOffset:
$0903Bytes:
43 09 4F 09 55 09 52 09 53 09 45 09
C O U R S E
SPEEDOffset:
$091BBytes:
53 09 50 09 45 09 45 09 44 09
S P E E D
LEFTOffset:
$0943Bytes:
4C 09 45 09 46 09 54 09
L E F T
Essas quatro sequências aparecem de forma única na ROM Europe CRC32 071B045E.
4. Exemplo prático de traduçãoPor exemplo, para trocar:
COURSE -> FASECOURSE possui espaço para 6 caracteres.
Original:
43 09 4F 09 55 09 52 09 53 09 45 09
C O U R S E
Pode ser substituído por:
46 09 41 09 53 09 45 09 20 09 20 09
F A S E espaço espaço
Portanto não é preciso desenhar "FASE" como gráfico.
O jogo já possui os tiles:
F = 46
A = 41
S = 53
E = 45--------------------------------------------------
Outro exemplo:
SPEED -> VELOCOriginal:
53 09 50 09 45 09 45 09 44 09Novo:
56 09 45 09 4C 09 4F 09 43 09
V E L O C
Existe ainda um espaço depois desse campo antes dos números da velocidade.
--------------------------------------------------
Para
SCORE, uma tradução de 5 caracteres pode ser feita sem mexer no código.
Exemplo:
SCORE -> PONTO50 09 4F 09 4E 09 54 09 4F 09
P O N T O
Se for obrigatório usar
PONTOS com 6 caracteres, veja a seção mais abaixo, pois é preciso mover o placar numérico um tile para a direita.
--------------------------------------------------
Para
LEFT, uma abreviação de 4 caracteres também é simples.
Exemplo:
LEFT -> FALTBytes:
46 09 41 09 4C 09 54 09
F A L T
Também é possível usar FALTA, mas existe um pequeno ajuste adicional explicado abaixo.
5. LOW e TOP são diferentesAqui existe uma exceção importante.
LOW e TOP NÃO são montados usando três letras normais.O programador desenhou cada palavra comprimida em apenas
dois tiles de 8x8.
Ou seja:
LOW =
tiles $16C + $16DTOP =
tiles $16E + $16FNa tabela do HUD aparecem somente os números baixos desses tiles.
LOWOffset:
$08FDOriginal:
6C 09 6D 09TOPOffset:
$093DOriginal:
6E 09 6F 09Isso explica por que procurar:
em ASCII não encontra nada.
6. Forma fácil de traduzir LOW/TOPComo existem dois espaços de tile para cada palavra, a solução mais simples é usar abreviações de duas letras.
Por exemplo:
LOW -> BX (Baixa)
Trocar em $08FD:
6C 09 6D 09por:
42 09 58 09
B X
E:
TOP -> AL (Alta)
Trocar em $093D:
6E 09 6F 09por:
41 09 4C 09
A L
Dessa forma não é necessário mexer na compressão gráfica.
Será usada a mesma fonte normal do HUD.
7. Se quiser manter LOW/TOP como gráficos personalizadosSe a intenção for desenhar algo especial no mesmo estilo compacto do original, aí é necessário mexer nos gráficos.
Na versão analisada, o bloco que contém:
- estrada
- fonte
- HUD
- nuvens
- montanhas
está comprimido na ROM em:
$3F00 - $4E1FTamanho comprimido reservado:
IMPORTANTE:Não tente abrir diretamente
$3F00 no Tile Molester ou YY-CHR esperando enxergar as letras.
O conteúdo está comprimido.
Depois de descomprimido, esse bloco possui:
$1900 bytes
6400 bytes
200 tilesEle corresponde aos tiles:
$100 até $1C7Cada tile do Master System ocupa:
32 bytesOs gráficos especiais de LOW/TOP ficam nestes offsets dentro do ARQUIVO DESCOMPRIMIDO:
- Tile $16C = $0D80-$0D9F
- Tile $16D = $0DA0-$0DBF
- Tile $16E = $0DC0-$0DDF
- Tile $16F = $0DE0-$0DFF
Portanto:
$16C + $16D = LOW
$16E + $16F = TOPO procedimento avançado é:
- Extrair $3F00-$4E1F da ROM.
- Descomprimir o bloco usando o formato usado pelo jogo.
- Abrir os 6400 bytes resultantes como gráficos 4bpp do Master System.
- Editar somente os tiles $16C-$16F.
- Recomprimir.
- Reinserir em $3F00.
O arquivo recomprimido
não pode ultrapassar 3872 bytes, porque em $4E20 já começa outro bloco de dados do jogo. Cao passe é necessario expandir para o final da rom.
8. Caso seja obrigatório usar PONTOSO campo original SCORE possui 5 tiles.
É possível usar 6 letras porque existe um tile imediatamente ao lado, mas o número do placar começa ali durante o jogo.
Por isso é necessário mover o placar numérico um tile para a direita.
Primeiro escreva PONTOS começando em $08DB:
50 09 4F 09 4E 09 54 09 4F 09 53 09
P O N T O S
Depois vá ao offset:
$3599Original:
0ETroque por:
10Isso altera no código:
VRAM $780E
↓
VRAM $7810
Ou seja, os seis dígitos do placar são deslocados
1 tile para a direita.
Eles continuam cabendo antes do gráfico seguinte do HUD.
Portanto, para PONTOS:
$08DB = escrever PONTOS
$3599 = 0E -> 10
9. Caso seja obrigatório usar FALTATambém é possível usar cinco letras.
Em $0943 escreva:
46 09 41 09 4C 09 54 09 41 09
F A L T A
Para manter um espaço entre FALTA e o número, podemos deslocar o contador de distância um tile para a direita.
No offset:
$370Ctroque:
76por:
78Isso muda:
VRAM $7876
↓
VRAM $7878
Também troque o placeholder existente em:
$094Dde:
30para:
20Assim aquele tile passa de "0" para espaço.
Resultado lógico:
FALTA 3.86
em vez de:
LEFT 3.86
Os quatro caracteres do valor X.YY continuam cabendo até o final da linha.
10. Resumo dos offsets importantesHUD/TILEMAP
-----------------------------
- SCORE $08DB
- LOW $08FD
- COURSE $0903
- SPEED $091B
- TOP $093D
- LEFT $0943
Código para mover SCORE
-----------------------------
$3599
0E -> 10
necessário se usar PONTOS
Código para mover distância
-----------------------------
$370C
76 -> 78
útil se usar FALTA com espaço
Gráficos comprimidos
-----------------------------
$3F00-$4E1F
LOW/TOP após descompressão
-----------------------------
$16C -> $0D80
$16D -> $0DA0
$16E -> $0DC0
$16F -> $0DE0
ConclusãoPara SCORE, SPEED, COURSE e LEFT não é necessário redesenhar a fonte nem descomprimir gráficos.
O método mais simples é editar diretamente a tabela de tiles no editor.
Já LOW e TOP são gráficos compactados em dois tiles cada. Mesmo assim, é possível substituí-los facilmente, sem tocar na compressão.