Autor Tópico: Como encontrar/visualizar as imagens das roms de snes com editor hexadecimal  (Lida 3683 vezes)

paikuham

  • Macaquinho
  • *
  • Mensagens: 5
    • Ver perfil
  • 2342
  • Itens:
Boa noite a todos, esse é o meu primeiro post(o primeiro de muitos eu espero) aqui no fórum, decidir começar um projeto de uma ferramente de tradução para roms de snes, já faz uns dois dias que estou na faze de pesquisa e a algo que não encontro de jeito nenhum, eu gostaria de recomendações de links de tutoriais dicas(se for video é melhor que seja em espanhol ou português) de como achar, pegar, as imagens nas roms de snes com um editor de hexadecimal assim eu poço colocar os pixels numa grade e formar uma imagem, o intuito principal é trabalhar com a fonte da rom, principalmente em fazer a acentuação, e claro, só a imagens não compactadas por enquanto.

Sei que existem muitos ferramentas que já fazem isso, e muito bem pelo que parece, mas para o meu projeto eu preciso criar uma ferramenta propiá, para poder atender ao que eu preciso.
« Última modificação: Outubro 18, 2017, 20:46:12 pm por paikuham »

Ondinha

  • Visitante
  • Itens:
Re:Como encontrar/visualizar as imagens das roms de snes com editor hexadecimal
« Resposta #1 Online: Outubro 26, 2017, 09:18:49 am »
Você deve fazer isso utilizando um editor de tiles em modo 4bpp, no caso do SNES (algumas fontes podem estar em 1bpp) e não um editor hexadecimal.

paikuham

  • Macaquinho
  • *
  • Mensagens: 5
    • Ver perfil
  • 2342
  • Itens:
Re:Como encontrar/visualizar as imagens das roms de snes com editor hexadecimal
« Resposta #2 Online: Outubro 26, 2017, 17:41:28 pm »
Ondinha blz, então, eu sei que se meu intuito fosse só editar as sprites tem varias ferramentas por ai que fazem isso muito bem, só que para a ferramenta que estou tentando criar(não sei se vou conseguir, mas só saberei depois de tentar) eu preciso aprender como ler os bits nas roms de snes de forma correta.

mas vc esta certo, um editor de tile pode mesmo me ajudar com esse projeto tanto que acho que estou conseguindo chegar-la, nos testes com o "protótipo da minha ferramenta" mesmo sem saber no momento eu conseguir recriar alguns dos Codecs que o Tile Molester usa, então eu acho que estou no caminho certo :charuto:, e gostaria de tirar uma duvida com vc mesmo, se vc puder me ajudar é claro.

Estou usando agora o tile molester para me ajudar e queria saber, os jogos de Snes usam apenas os codecs "4bpp planar" e "1bpp planar"? ou tem jogos que utilizem outros codecs? como "4bpp planar, composit (2x2bpp)".

Haa, e se mais alguém puder me ajudar com o formato que os bits devem ser lidos pode falar, toda informação é bem vinda. :parabens:

OBs.: Com relação ao que eu falei no primeiro post, o que eu queria com um editor hexadecimal é entender como que ele pega e organiza os bytes, bom isso eu já aprendi o que preciso agora é saber as formas de se organizar os bits para pode montar as imagens, e ao que parece são mais de uma forma. 
« Última modificação: Outubro 26, 2017, 17:56:15 pm por paikuham »

denim

  • AsmRomhacker
  • Macaco Adulto
  • ***
  • Mensagens: 143
    • Ver perfil
  • 2697
  • Itens:





Re:Como encontrar/visualizar as imagens das roms de snes com editor hexadecimal
« Resposta #3 Online: Outubro 27, 2017, 10:09:06 am »
Usualmente snes só possui imagens no formato 2bpp planar e 4bpp planar composite. Ambos são armazenados na mesma forma na rom, exceto que no 4bpp você representa como duas imagens de 2bpp na sequência. Em suma, basta entender como funciona a imagem 2bpp que entenderá a 4bpp.

No 2bpp, cada word de 2 bytes representa 1 linha de pixels de 1 tile. Ou seja, um tile inteiro são 8 words, ou 16 bytes.

Cada pixel é obtido pela composição dos bits respectivos de cada byte da word:

Bits da word: FEDCBA98 76543210
pixel 1: bit F e bit 7
pixel 2: bit E e bit 6
..
pixel 8: bit 8 e bit 0

Exemplificando:

Código: [Selecionar]
            FEDCBA98 76543210
word AF07 = 10101111 00000111

pixel 1: 10
pixel 2: 00
pixel 3: 10
pixel 4: 00
pixel 5: 10
pixel 6: 11
pixel 7: 11
pixel 8: 11

Representação das cores da linha do tile acima: 2 0 2 0 2 3 3 3

tvtoon

  • Macaco Adulto
  • ***
  • Mensagens: 146
    • Ver perfil
  • 1446
  • Itens:



Re:Como encontrar/visualizar as imagens das roms de snes com editor hexadecimal
« Resposta #4 Online: Outubro 27, 2017, 16:58:20 pm »
Eu não entendo o que você precisa criar, mas essa informação que o Denim postou, e vários outros formatos, estão descritos no tutorial do Klarth, de maneira  simplificada.

É bom saber também que os jogos gostam de usar arranjos variáveis das fileiras, diferente do 8x8 padrão encontrado na maré de editores.

denim

  • AsmRomhacker
  • Macaco Adulto
  • ***
  • Mensagens: 143
    • Ver perfil
  • 2697
  • Itens:





Re:Como encontrar/visualizar as imagens das roms de snes com editor hexadecimal
« Resposta #5 Online: Outubro 28, 2017, 12:47:18 pm »
Vamos lá, exemplo completo agora, de 1 tile inteiro, em 2bpp planar:

bytes na rom: 10 08 28 14 44 22 44 22 7C 02 44 22 44 22 00 00

Código: [Selecionar]
linha1: 0810 = 00001000 00010000 = 00 00 00 01 10 00 00 00 = 0 0 0 1 2 0 0 0
linha2: 1428 = 00010100 00101000 = 00 00 01 10 01 10 00 00 = 0 0 1 2 1 2 0 0
linha3: 2244 = 00100010 01000100 = 00 01 10 00 00 01 10 00 = 0 1 2 0 0 1 2 0
linha4: 2244 = 00100010 01000100 = 00 01 10 00 00 01 10 00 = 0 1 2 0 0 1 2 0
linha5: 027c = 00000010 01111100 = 00 01 01 01 01 01 10 00 = 0 1 1 1 1 1 2 0
linha6: 2244 = 00100010 01000100 = 00 01 10 00 00 01 10 00 = 0 1 2 0 0 1 2 0
linha7: 2244 = 00100010 01000100 = 00 01 10 00 00 01 10 00 = 0 1 2 0 0 1 2 0
linha8: 0000 = 00000000 00000000 = 00 00 00 00 00 00 00 00 = 0 0 0 0 0 0 0 0

Ora, considerando a paleta 0 = preto, 1 = marrom, 2 = laranja, 3 = amarelo, teremos o seguinte tile:



paikuham

  • Macaquinho
  • *
  • Mensagens: 5
    • Ver perfil
  • 2342
  • Itens:
Re:Como encontrar/visualizar as imagens das roms de snes com editor hexadecimal
« Resposta #6 Online: Outubro 28, 2017, 17:36:30 pm »
Galera obrigado, acho que estou quase conseguindo compreender por completo essa questão, no momento tenho só algumas duvidas que gostaria de esclarecer nesse tópico.

- Eu não sabia que tinha que inverter os bytes antes de interligar os seus bits, como mostrado no exemplo do denin, onde vc tem o [1ª byte , 2ª bytes] e inverte deixando [2ª byte, 1ª byte] pra ai(nessa ordem) interligar os seus bits na forma que é mostrado no exemplo do denin.

- tvtoon valeu cara, não sabia do tutorial do Klarth.

- Bom a formação do tile de 2bpp esse eu entende, agora só queria saber se eu realmente entende direito os tile de 4bpp:
como o mano denin me falou o tile de 4bpp é formado(pelo menos no snes) por dois tile de 2bpp, então a logica ficaria desse jeito?

bytes na rom 10 08 28 14 44 22 44 22 7C 02 44 22 44 22 00 00
             -----------------------------------------------
                    23 05 88 C7 4F 32 18 00 00 FF 46 87 CD 12 00 FF(esse eu inventei agora)

Código: [Selecionar]
linha1: 0810 = 00001000 00010000 = 00 00 00 01 10 00 00 00 = 0 0 0 1 2 0 0 0
linha2: 1428 = 00010100 00101000 = 00 00 01 10 01 10 00 00 = 0 0 1 2 1 2 0 0
linha3: 2244 = 00100010 01000100 = 00 01 10 00 00 01 10 00 = 0 1 2 0 0 1 2 0
linha4: 2244 = 00100010 01000100 = 00 01 10 00 00 01 10 00 = 0 1 2 0 0 1 2 0
linha5: 027c = 00000010 01111100 = 00 01 01 01 01 01 10 00 = 0 1 1 1 1 1 2 0
linha6: 2244 = 00100010 01000100 = 00 01 10 00 00 01 10 00 = 0 1 2 0 0 1 2 0
linha7: 2244 = 00100010 01000100 = 00 01 10 00 00 01 10 00 = 0 1 2 0 0 1 2 0
linha8: 0000 = 00000000 00000000 = 00 00 00 00 00 00 00 00 = 0 0 0 0 0 0 0 0
----------------------------------------------------------------------------
linha1: 0523 = 00000101 00100011 = 00 00 01 00 00 10 01 11 = 0 0 1 0 0 2 1 3
linha2: C788 = 11000111 10001000 = 11 10 00 00 01 10 10 10 = 3 2 0 0 1 2 2 2
linha3: 324F = 00110010 01001111 = 00 01 10 10 01 01 11 01 = 0 1 2 2 1 1 3 1
linha4: 0018 = 00000000 00011000 = 00 00 00 01 01 00 00 00 = 0 0 0 1 1 0 0 0
linha5: FF00 = 11111111 00000000 = 10 10 10 10 10 10 10 10 = 2 2 2 2 2 2 2 2
linha6: 8746 = 10000111 01000110 = 10 01 00 00 00 11 11 10 = 2 1 0 0 0 3 3 2
linha7: 12CD = 00010010 11001101 = 01 01 00 10 01 01 10 01 = 1 1 0 2 1 1 2 1
linha8: FF00 = 11111111 00000000 = 10 10 10 10 10 10 10 10 = 2 2 2 2 2 2 2 2

mas ai como que eu vou juntar esses dois tiles, pensei em duas formas:

Código: [Selecionar]
//usando só a primeira linha como exemplo
linha1: 0810 = 00001000 00010000 = 00 00 00 01 10 00 00 00 = 0 0 0 1 2 0 0 0 //2bpp
----------------------------------------------------------------------------
linha1: 0523 = 00000101 00100011 = 00 00 01 00 00 10 01 11 = 0 0 1 0 0 2 1 3 //2bpp

//primeira forma de criar a primeira linha do tile de 4bpp composite
linha1: 00 00 00 01 10 00 00 00   00 00 01 00 00 10 01 11 = 0000 0000 0001 0100 1000 0010 0001 0011 = 0 0 1 4 8 2 1 3

//segunda forma de criar a primeira linha do tile de 4bpp composite
linha1: 00 00 01 00 00 10 01 11   00 00 00 01 10 00 00 00 = 0000 0000 0100 0001 0010 1000 0100 1100 = 0 0 4 1 2 8 4 12

Qual das duas formas esta correto? :hein:

- No tutorial do Klarth, lá fala de mais formatos, são os 3bpp(la fala que em um tipo de imagem compactada, não pretendo mexer com isso agora), 8BPP e Modo 7, preciso me preocupar com isso agora? existem muito jogos que usam esse formato?

- e por ultimo, podem me indicar algum jogo que tenha as imagens da fonte no formato de 2bpp?

denim

  • AsmRomhacker
  • Macaco Adulto
  • ***
  • Mensagens: 143
    • Ver perfil
  • 2697
  • Itens:





Re:Como encontrar/visualizar as imagens das roms de snes com editor hexadecimal
« Resposta #7 Online: Outubro 28, 2017, 21:28:26 pm »
Para formar o 4bpp composite, a forma correta é a segunda que você fez. O tile de baixo entra na parte mais significativa para compor o índice de 4 bits. E parabéns, você fez corretamente.

A inversão dos bytes é usual no snes, por trata-se de um cpu little endian.

Sobre fonte 2bpp, praticamente todos os jogos de snes a utilizam. Por ocupar menor espaço na memória e por não precisar de mais de 4 cores, praticamente todo jogo de snes utiliza fonte de 2bpp planar. De qualquer forma, segue em anexo a fonte do jogo Parodious, como exemplo.

No snes, 3bpp não é um formato suportado pelo console. O que acontece é que em alguns poucos jogos, é feita a remoção de 1 dos bits do gráfico em 4bpp, de forma a comprimir a imagem de um modo bem simples. Mas antes de enviar a imagem para a memória de vídeo, o cpu precisa descomprimir a imagem, adicionando o bit que falta, e tornando a imagem 4bpp. Existem alguns jogos com formato 8bpp, que também é empregado pelo chamado modo 7, mas não é algo que precisa se preocupar no estágio atual.


Ondinha

  • Visitante
  • Itens:
Re:Como encontrar/visualizar as imagens das roms de snes com editor hexadecimal
« Resposta #8 Online: Outubro 29, 2017, 02:45:31 am »
Antigo, em meados de 2003 ou antes eu tinha escrito algo assim: http://romhackers.org/modules/PDdownloads1/singlefile.php?cid=45&lid=99

paikuham

  • Macaquinho
  • *
  • Mensagens: 5
    • Ver perfil
  • 2342
  • Itens:
Re:Como encontrar/visualizar as imagens das roms de snes com editor hexadecimal
« Resposta #9 Online: Outubro 30, 2017, 14:50:03 pm »
 :parabens: :parabens: :parabens: :parabens:

Obrigado a todos, finalmente conseguir entender direito como funciona os tiles, e como ler os tiles de snes, agora é só continuar com o desenvolvimento, sabe o que significa né.  :raiva2: :raiva2: :raiva2: :raiva2: :raiva2: :raiva2: