Scrolling vertical?
Para já ir construindo a engine resolvi programar vários modos gráficos... um deles era duas áreas independentes com scroll horizontal/vertical. Era pra ser o mesmo truque do Super Mario Bros., onde a barra de escore fica estática e a partir de uma linha horizontal abaixo da barra o fundo se move horizontalmente.
Enfim, após esperar a renderização de uma scanline qualquer, o código era pra ser o seguinte:
Código:
LDX SECONDARY_SCROLL
LDY SECONDARY_SCROLL + 1
STX $2005
STY $2005
É só gravar a posição X e Y no endereço $2005 e acabou. Mas enfim, como sempre o NES não deixa eu ser feliz. O problema que eu esqueci e só fui lembrar depois de quebrar a cabeça para arrumar o código por meia hora é que NÃO DÁ pra mexer na posição Y durante a renderização... Depois de "lembrar" como se faz (que é, basicamente, bugar o processador gráfico no meio da renderização alterando variáveis internas do hardware), o código ficou mais ou menos assim:
Código:
LDX SECONDARY_SCROLL
LDY SECONDARY_SCROLL + 1
LDA #$00
STA $2006
STY $2005
TYA
ASL A
ASL A
AND #%11100000
STA SECONDARY_SCROLL
TXA
LSR A
LSR A
LSR A
ORA SECONDARY_SCROLL
STX $2005
STA $2006
STX SECONDARY_SCROLL
Não tentem entender... e ainda por cima está um pouco incompleto, vou ter que terminar mais tarde. :tudobem:
Grau Hut escreveu: Fascinante.
PS: Acho que nem a Nintendo sabia fazer isso no início do Famicom... Nintendo superior NADA :;bigode;: