(SNES) Bug Na Ferramenta PIC2SNES

Iniciado por MachineMX, Agosto 14, 2018, 20:09:30 PM

tópico anterior - próximo tópico

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

MachineMX

Boa Noite

O Arquivo pic2snes tem dois arquivos gfx2sopt e pcx2sopt, meu arquivo está exatamente com 16 cores e não 17 cores após usar o xnview resumindo o assunto ele faz a conversão normal de arquivos de imagens 256 x 224 passa tranquilo, mas quando passo exatos 64x64 ele aparece todo tosco, as vezes ele fica todo preto a tela no meu windows 7 de 32 bits, vcs prefere usa o pic2snes em windows xp em maquinas virtuais, ou porque ele aparece todo errado após compila, a rotina dma está certa, alguém j´passou por isso?
Abs a todos

tvtoon

Eu não conheço esses programas que você mencionou, mas pela sua mensagem há dois conceitos claramente diferentes no que você está produzindo...

O primeiro, que passou, é uma amostra de tela a ser exibida, com a resolução padrão. Isso pode ser uma camada do fundo.

O segundo, que não passou, é o tamanho máximo de um "sprite" a ser exibido em tela. Seria bom você especificar como pretende usar este, pois a composição é diferente.

E mais: 17 cores? Não seriam 15?

huskie

O título deste tópico foi alterado e resumido para se adequar às regras.
Espero que consiga solucionar o problema.
Through PS4 PSXItarch v3 Linux!

MachineMX

#3
Boa Noite tvtoon e huskie

É exatamente isso tvtoon o primeiro é o arquivo set eu consegui exibi corretamente graças ao pcx2snes que roda tranquilo no windows 7 em vez do arquivo set, gera o arquivo.pic com tamanho 63x64, Esse sim funciona, mas quando gero pelo gif2sopt com arquivo gif em 15(0-15 cores), com tamanho 64x64 ele aparece errado.

Eu tentei fazer como o arquivo set + arquivo map + arquivo col não deu certo.
Como o pcx2snes não gera o arquivo.map pro tamanho 64x64
Tentei pega o arquivo.map do gif2sopt mas aparece errado, meu problema tá no arquivo tilemap eu deixei no code assim:
Ex:
  LDA #$80
  STA $2100
  LDX #$3000
  STX $2116
 
  LDX #$1801
  STX $4300
  LDA #$00
  STA $4304
  LDX #(face_set)
  STX $4302
  LDX #$0800
  STX $4305
  LDA #$01
  STA $420B

  LDX #$2000
  STX $2116
  LDX #$1801
  STX $4300
  LDA #$00
  STA $4304
  LDX #(face_map)
  STX $4302
  LDX #$0800
  STX $4305
  LDA #$01
  STA $420B
  LDA #$0F
  STA $2100


O arquivo asm completo está tudo certo mais se vc quiser eu anexo aqui eu posto.

denim

Sugiro utilizar o programa snesgfx para gerar os três arquivos que precisa.
https://www.smwcentral.net/?p=section&a=details&id=6523

MachineMX

#5
Valeu Denim
:parabens:

Eu acho que agora vai da certo, eu vou testa e já te falo.

Melhorou bastante mais ainda não deu certo. Olhe o print.

A minha rotina dma está assim:

  LDA #$80
  STA $2100
  LDX #$3000
  STX $2116
 
  LDX #$1801
  STX $4300
  LDA #$00
  STA $4304
  LDX #(face_set)
  STX $4302 
  LDX #$0800
  STX $4305
  LDA #$01
  STA $420B

  LDX #$2000
  STX $2116
  LDX #$1801
  STX $4300
  LDA #$00
  STA $4304
  LDX #(face_map)
  STX $4302
  LDX #$0800
  STX $4305
  LDA #$01
  STA $420B

  STZ $2121
  LDX #$2200
  STX $4300
  LDA #$00
  STA $4304
  LDX #(face_col)
  STX $4302
  LDX #$0200
  STX $4305
  LDA #$01
  STA $420B
  LDA #$0F
  STA $2100

loop:
  JMP loop

denim

Aparentemente você esqueceu de inicializar o snes no modo correto, via $2105. Então, ele deve estar no modo 0, que possui apenas 4 cores na BG0, e seu gráfico está com 16 cores (4bpp). Para o seu caso, o modo 1 seria um dos modos possíveis para a correta exibição. Esta seria a primeira correção que eu sugiro.

MachineMX

#7
Entendi Denim ele deve esta no modo 0 do BG0 que está apenas com 4 cores, então pra corrigi devo muda pro modo 1 do BG que tem 16 cores, eu vou conferi aqui e já te falo, eu vou corrigi isso.

    LDX #$1FFF
    TXS
    JSL format_routine
    SEP #$20
    REP #$10

  STZ $2121
  LDA #$80
  STA $2115
  LDA #$11
  STA $2105
  LDA #$20
  STA $2107
  LDA #$00
  STA $2109
  LDA #$03
  STA $210B
  LDA #$01
  STA $210C
  LDA #$05
  STA $212C
  LDA #$0F
  STA $2100


Ele também, carrega o BG2 com 4 cores no registro tilemap $0000

O mode 1 seria 12h no registro $2105?


denim

Precisa entender o significado dos registradores. No caso do $2105, se escrever $12 nele, vai ter o modo 2, que já atende o que você precisa. O problema entretanto é que com $12, você está configurando o background do bg0 para que tenha tamanho 16x16 e não o usual, que é 8x8. O seu mapa provavelmente foi gerado para tiles de 8x8, então o correto seria escrever $02 no $2105.

2105  wb+++-
        DCBAemmm

        A/B/C/D   = BG character size for BG1/BG2/BG3/BG4
             mmm  = BG Mode
            e     = Mode 1 BG3 priority bit

If the BG character size for BG1/BG2/BG3/BG4 bit is set, then the BG is made of 16x16 tiles. Otherwise, 8x8 tiles are used.
         

MachineMX

#9
Eu tirei de um tutorial na net: https://problemkaputt.de/fullsnes.htm

  5    BG2 Tile Size (0=8x8, 1=16x16)  ; (BgMode6: fixed 16x8?)
  4    BG1 Tile Size (0=8x8, 1=16x16)  ;/(BgMode7: fixed 8x8)

Se o bit do Character Size é set ou 1 é igual a 16x16 no meu caso é 0 porque está em 8x8 o bloco.
Em BG Mode 2-0 eu deixei como 02 consegui entender em números bits vai 0-7 ou 111 em BG mode.

Edit:
Valeu Denim
:parabens:

Finalmente consegui valeu mestre, se vc não tivesse olhado eu não sai desse ponto. eu fico horas e horas por dia estudando esses videos do youtube, e colocando em prática o que eu assisto e acompanho sempre o forum romhacking.net.br e o site romhackers.org. Eu troquei o snesgfs pelo pcx2sopt e deu certo.
Obrigado a vc denim e a todos que postaram neste tópico.