Imagen

TILES / PATRONES / BLOQUES en el FM77AV2

Avatar de Usuario
jimbobaby
Mensajes: 424
Registrado: 13 Ago 2023 21:17

Re: TILES on the FM77AV2

Mensaje por jimbobaby »

pser1 escribió:Efectivamente,
ahí añadí el chequeo del Subsystem y si NO tiene el bit 7 a uno le hago esperar, luego tras el mapeo del area I/O es donde he puesto
el pshs x,y,d y luego el puls x,y,d para retrasar algunos ciclos ...
Pues he comentado esas lineas y no soy capaz de reproducirlo. Era solo curiosidad, nada mas, no te preocupes -thumbup

He estado revisando las rutinas de dibujo, 8 pixeles es muy poquito para darle cera al stack blasting -grin .

Tambien he probado, solo por tontear, en cambiar el orden, y en vez de que en cada linea del tile se cambie a los 4 bitplanes, dibujar toda la pantalla bitplane a bitplane. No se ahora mismo cual seria la mejor manera de medir la velocidad (con rutinas de menos de 1 frame si se, pero de mas, no lo he pensado).

Eso si queda "curioso" el efecto de ir alternando bitplanes sin borrar los datos anteriores -507 (aunque lo suyo seria o paleta a negro o parar el CRTC de mientras)
No tienes los permisos requeridos para ver los archivos adjuntos a este mensaje.
-sp3zy PC 386 -coam1 -m3s3x
Avatar de Usuario
pser1
Mensajes: 4561
Registrado: 08 Dic 2012 18:34

Re: TILES on the FM77AV2

Mensaje por pser1 »

jimbobaby escribió:
pser1 escribió:Efectivamente,
ahí añadí el chequeo del Subsystem y si NO tiene el bit 7 a uno le hago esperar, luego tras el mapeo del area I/O es donde he puesto
el pshs x,y,d y luego el puls x,y,d para retrasar algunos ciclos ...
Pues he comentado esas lineas y no soy capaz de reproducirlo. Era solo curiosidad, nada mas, no te preocupes -thumbup
He estado revisando las rutinas de dibujo, 8 pixeles es muy poquito para darle cera al stack blasting -grin .
Tambien he probado, solo por tontear, en cambiar el orden, y en vez de que en cada linea del tile se cambie a los 4 bitplanes, dibujar toda la pantalla bitplane a bitplane. No se ahora mismo cual seria la mejor manera de medir la velocidad (con rutinas de menos de 1 frame si se, pero de mas, no lo he pensado).
Eso si queda "curioso" el efecto de ir alternando bitplanes sin borrar los datos anteriores -507 (aunque lo suyo seria o paleta a negro o parar el CRTC de mientras)
Hola,
he intentado ahora comentando las líneas añadidas y me pasa como a tí, no se reproduce el problema ...
Igual era cosa de mi PC que podía estar haciendo algún trabajo en otra área. No me creo que fuera problema de una mala compilación ...
En fin, que funciona sin problemas.
La forma de evaluar tiempos/velocidad solo puedes hacerlo compilando con LWASM del LW Tool chain de William Astle, pero creo recordar que
algún cambio había que hacer para que no diera errores un fuente preparado para ASM6809.
De todas formas, creo que como lo hice yo hay cambios de mapeo 32x24x4 veces en una pantalla, 4 por tile
Como tu dices solamente harás cuatro, pero para cada tile tendrás que calcular el puntero a sus datos cuatro veces, o sea 32x24x4
mientras yo solo hago 32x24x1 ya que los datos son contiguos. Además tendrás que leer el mapa de pantalla 4 veces, yo solo hago una.
No creo que se gane tiempo con dicho cambio
saludos
Avatar de Usuario
pser1
Mensajes: 4561
Registrado: 08 Dic 2012 18:34

Re: TILES on the FM77AV2

Mensaje por pser1 »

Hola,
he probado la versión haciendo la pantalla completa por bitplanes y he visto como desaparece la anterior mientras se van pintando
los bitplanes con la nueva pantalla. En la versión original no se ve este efecto, creo que porqué es mucho mas rápido el dibujado.
En ningún caso se ven tiles de la pantalla anterior mientras pinta los de la nueva ...
saludos
Avatar de Usuario
pser1
Mensajes: 4561
Registrado: 08 Dic 2012 18:34

Re: TILES on the FM77AV2

Mensaje por pser1 »

No se si habría alguna posibilidad de 'pasar' el trabajo de pintar los tiles al Subsistema, descargando así a la cpu principal para otras cosas
Como la SUB cpu no tiene acceso alguno a la memoria RAM de la cpu principal y menos de la RAM extendida (bloque 0), no se si copiando
los 32 bytes de un tile al área común ($FC82 en adelante) junto con la dirección 'arriba izquierda' a usar, se podría ganar algo.
El único código que necesitaría el Subsistema es la rutina DrawTile que debería ser adaptada.
El mayor ahorro sería el hecho de no requerir los mapeos de los cuatro 'bitplanes' de VRAM, dejando mas memoria para el programa.
Habrá que investigar como pasar los 34 bytes (32 de tiles mas 2 de dirección VRAM) y revisar el tema del comando IKEMOTO que nos
explicó malikto999 para reservar una pequeña área para ubicar el código de DrawTile en la RAM del Subsistema ...
saludos
pere
Avatar de Usuario
pser1
Mensajes: 4561
Registrado: 08 Dic 2012 18:34

Re: TILES on the FM77AV2

Mensaje por pser1 »

Una vez solventados los escollos sufridos al separar el código del programa que permite ver las 39 pantallas del juego SPRINGBOT
en dos partes, ya podemos empezar a buscar en Shounen Mike como maneja los sprites, o sea estructura de datos, formato
de los 'frames' para cada sprite y que rutinas o funciones del subsistema los gestionan
saludos
Avatar de Usuario
jimbobaby
Mensajes: 424
Registrado: 13 Ago 2023 21:17

Re: TILES on the FM77AV2

Mensaje por jimbobaby »

pser1 escribió: 01 Jun 2024 00:24 Una vez solventados los escollos sufridos al separar el código del programa que permite ver las 39 pantallas del juego SPRINGBOT
en dos partes, ya podemos empezar a buscar en Shounen Mike como maneja los sprites, o sea estructura de datos, formato
de los 'frames' para cada sprite y que rutinas o funciones del subsistema los gestionan
Bueno, los viajes siempre hay que empezarlos por algun sitio, asi que...

BLK 122 ($788B), ahi se pintan los sprites. Se pintan en MAIN (usando MMR).
Durante la ejecucion del comando se pintan los sprites (64 colores, los 6 bitplanes enteros de la pagina 0 de VRAM). Los mapeos son los siguientes
[10][11][05][06]
[12][13][05][06]
[14][15][05][06]
[16][17][05][06]
[18][19][05][06]
[1A][1B][05][06]
(vamos, que la de 0000 a $3000 de MAIN se va mapeando de 2 en 2 a VRAM en cada iteracion, y $3000 a $5000 std RAM son fijas a $5000 a $7000 de extended ram). En extended RAM estan los datos de sprites. Es un modus operandi similar a cuando se pinta el fondo -grin .

Y hablando de sprites, unos pocos para empezar (los que se ven cuando esta Mike que acaba de caer al fondo, al principio). Los sprites tienen un esquema en memoria similar a los tiles, un header de 8 bytes (de los cuales los ultimos 4 bytes son 0), y despues van los datos de cada bitplane secuencialmente en memoria (*)

(direcciones en extended RAM)
$4110-$41CB - 16x15 pixels?, 180 bytes spritedata (30bytes * 6 bitplanes?) + 8 cabecera. creo que son las "chispas" cuando chocas con un enemigo
$507c-$5143 - 16x12 pixels, 192 bytes spritedata (48 bytes * 4 bitplanes) + 8 cabecera, Mike quieto
$6B64-$6C55 - 24x13 pixels?, 234 bytes spritedata (39 bytes * 6 bitplanes?) +8 cabebera, murcielago
$6C56-$6D47 - Lo mismo que el anterior, otra animacion del murcielago

Por cierto, me gustaria saber que narices hace en $40B0 (BLK 09). Son unas pocas lineas y se pierde mucho tiempo ahi pero no se que "espera"...(DP reg =$F0)

(*) Aun no se interpretar exactamente los campos de la cabecera (hay algun bit que significa otra cosa en los de resolucion X e Y, p.e.) y los bits de color tambien estan de aquella manera. Lo que si he visto es que aunque Mike esta guardado como 16 colores, a la hora de pintar hace el bucle igual por los 6 bitplanes.
-sp3zy PC 386 -coam1 -m3s3x
Avatar de Usuario
jimbobaby
Mensajes: 424
Registrado: 13 Ago 2023 21:17

Re: TILES / SPRITES en el FM77AV2

Mensaje por jimbobaby »

(si antes lo digo... -507 )

Creo que ya lo tengo.

Los datos de la cabecera son 8 bytes, que deberian ser esto:
Byte 0 : 0 para sprites/tiles
Byte 1 : tamaño X en bytes (multiplicar por 8 para la equivalencia en pixeles)
Byte 2 : tamaño Y
Byte 3 : Colores usados ($F = 16, $3F = 64)
Byte 4,5,6,7 : son 0

-thumbup
-sp3zy PC 386 -coam1 -m3s3x
Avatar de Usuario
pser1
Mensajes: 4561
Registrado: 08 Dic 2012 18:34

Re: TILES / SPRITES en el FM77AV2

Mensaje por pser1 »

jimbobaby escribió: 01 Jun 2024 10:16 (si antes lo digo... -507 )
Creo que ya lo tengo.
Los datos de la cabecera son 8 bytes, que deberian ser esto:
Byte 0 : 0 para sprites/tiles
Byte 1 : tamaño X en bytes (multiplicar por 8 para la equivalencia en pixeles)
Byte 2 : tamaño Y
Byte 3 : Colores usados ($F = 16, $3F = 64)
Byte 4,5,6,7 : son 0
-thumbup
Perfecto,
parece bastante genérico entonces. Podria ser útil directamente para cuatro bitplanes ...
saludos!
Avatar de Usuario
jimbobaby
Mensajes: 424
Registrado: 13 Ago 2023 21:17

Re: TILES / SPRITES en el FM77AV2

Mensaje por jimbobaby »

pser1 escribió: 01 Jun 2024 12:31
jimbobaby escribió: 01 Jun 2024 10:16 (si antes lo digo... -507 )
Creo que ya lo tengo.
Los datos de la cabecera son 8 bytes, que deberian ser esto:
Byte 0 : 0 para sprites/tiles
Byte 1 : tamaño X en bytes (multiplicar por 8 para la equivalencia en pixeles)
Byte 2 : tamaño Y
Byte 3 : Colores usados ($F = 16, $3F = 64)
Byte 4,5,6,7 : son 0
-thumbup
Perfecto,
parece bastante genérico entonces. Podria ser útil directamente para cuatro bitplanes ...
saludos!
Estoy revisando algunos casos mas, y creo que ese byte de "colores usados", mas bien se ha de transformar en "bitplanes usados". Con lo cual si cuentas el numero de bits a 1 tienes el numero de colores usados, pero a su vez puedes especificar los bitplanes que quieres usar.

WIP -grin
-sp3zy PC 386 -coam1 -m3s3x
Avatar de Usuario
pser1
Mensajes: 4561
Registrado: 08 Dic 2012 18:34

Re: TILES on the FM77AV2

Mensaje por pser1 »

jimbobaby escribió: 01 Jun 2024 09:58 BLK 122 ($788B), ahi se pintan los sprites. Se pintan en MAIN (usando MMR).
Durante la ejecucion del comando se pintan los sprites (64 colores, los 6 bitplanes enteros de la pagina 0 de VRAM). Los mapeos son los siguientes
[10][11][05][06]
[12][13][05][06]
[14][15][05][06]
[16][17][05][06]
[18][19][05][06]
[1A][1B][05][06]
(vamos, que la de 0000 a $3000 de MAIN se va mapeando de 2 en 2 a VRAM en cada iteracion, y $3000 a $5000 std RAM son fijas a $5000 a $7000 de extended ram). En extended RAM estan los datos de sprites. Es un modus operandi similar a cuando se pinta el fondo -grin .
Cabía esperarlo ya que no parece haber otra forma de llenar los bitplanes ...
Y hablando de sprites, unos pocos para empezar (los que se ven cuando esta Mike que acaba de caer al fondo, al principio). Los sprites tienen un esquema en memoria similar a los tiles, un header de 8 bytes (de los cuales los ultimos 4 bytes son 0), y despues van los datos de cada bitplane secuencialmente en memoria (*)
(direcciones en extended RAM)
$4110-$41CB - 16x15 pixels?, 180 bytes spritedata (30bytes * 6 bitplanes?) + 8 cabecera. creo que son las "chispas" cuando chocas con un enemigo
$507c-$5143 - 16x12 pixels, 192 bytes spritedata (48 bytes * 4 bitplanes) + 8 cabecera, Mike quieto
$6B64-$6C55 - 24x13 pixels?, 234 bytes spritedata (39 bytes * 6 bitplanes?) +8 cabebera, murcielago
$6C56-$6D47 - Lo mismo que el anterior, otra animacion del murcielago
Ahí me sorprenden los datos de Mike
si realmente fuera 16x12 sería mas ancho que alto, pero usaría 2x12=24 bytes por bitplane esto da 96 para 4 bitplanes o 144 para 6
Así que el 192 no me cuadra. Sobre 6 bitplanes debería usar 32 en cada uno, lo cual implicaría una definición de 16x16
Habría que mirar de nuevo los datos en la EXTended RAM
Por cierto, me gustaria saber que narices hace en $40B0 (BLK 09). Son unas pocas lineas y se pierde mucho tiempo ahi pero no se que "espera"...(DP reg =$F0)
Esta mini rutina es un 'retardo/delay' controlado por dos variables. Se compara el valor de $F06C con el de $F00E
Este último es incrementado en una unidad cada interrupción IRQ en el bloque 52
El primero se carga con un valor de la tabla MB785 en el BLK409. Este bloque es la dirección de retorno del BLK388 que se encarga de hacer
la presentación que se desplaza hacia arriba.
saludos
Avatar de Usuario
jimbobaby
Mensajes: 424
Registrado: 13 Ago 2023 21:17

Re: TILES on the FM77AV2

Mensaje por jimbobaby »

pser1 escribió: 01 Jun 2024 12:44 Ahí me sorprenden los datos de Mike
si realmente fuera 16x12 sería mas ancho que alto, pero usaría 2x12=24 bytes por bitplane esto da 96 para 4 bitplanes o 144 para 6
Así que el 192 no me cuadra. Sobre 6 bitplanes debería usar 32 en cada uno, lo cual implicaría una definición de 16x16
Tiene usted toda la razon, si de hecho en su momento ya lo puse bien (aunque por las razones equivocadas -grin ). Son 16 de ancho x 24 de alto, 16 colores (4 bitplanes).
pser1 escribió: 01 Jun 2024 12:44 Esta mini rutina es un 'retardo/delay' controlado por dos variables. Se compara el valor de $F06C con el de $F00E
Este último es incrementado en una unidad cada interrupción IRQ en el bloque 52
El primero se carga con un valor de la tabla MB785 en el BLK409. Este bloque es la dirección de retorno del BLK388 que se encarga de hacer
la presentación que se desplaza hacia arriba.
Ok, es la forma que tiene de bajar la velocidad de las animaciones a menos de los 60 fps (supongo que seran 15 por lo "agil" del movimiento).

Gracias! -thumbup
-sp3zy PC 386 -coam1 -m3s3x
Avatar de Usuario
pser1
Mensajes: 4561
Registrado: 08 Dic 2012 18:34

Re: TILES / SPRITES en el FM77AV2

Mensaje por pser1 »

Hola,
tras revisar la subrutina BLK 122 que es la encargada de dibujar los sprites, he ido añadiendo o modificando comentarios en los
bloques relacionados ...
El BLK 131 hace una serie de testeos con la variable F03E y en función de su valor se asigna un número de imagen que
se usará para añadirlo (x2) como offset al inicio de la tabla $4A60.
La dirección encontrada se utiliza (en regU) para acceder a los datos del sprite que están en la memoria EXTendida
Además, regA se carga con valor cero a menos que la variable F03E se hubiera recibido con valor cero en cuyo caso
regA recibiría el valor 15.
Una vez hecho esto llama a BLK 92 y posteriormente al BLK 122 antes mencionado.
El BLK 92 llama al BLK 93 que mapea la memoria EXTendida a las páginas $2000-$3FFF, apunta regU a dicha RAM y mapea las dos primeras
páginas VRAM a $0000-$1FFF y guarda datos del sprite (anchura en bytes, altura en pixels y numero de bitplanes usados en variables
($2E-$2F-$30). Luego el BLK 92 rellena el área común con el comando 7 ($C7) para el Subsistema, añade los parámetros necesarios
y arranca el subsistema.
El subsistema procesa el comando 7 en RC17A. Al ejecutarse se verifica el parámetro que lleva el valor de regA en el bloque 131
Si es cero, sale sin hacer nada, pero si fuera valor 15 entonces se 'patea' la VRAM apuntada por regX tantos bytes horizontales como indicaba
la variable $2E (ahora en la CA) y tantas filas como indicaba $2F, pero se limita a hacer una operación BITA al bitplane apuntado y al
siguiente. Ni la mas remota idea de para que puede servir esto, tal vez 'borrar' el sprite? -banghead
La llamada final al BLK 122 que vuelve a llamar al BLK 93 para remapear de nuevo sprite y VRAM, hace que se lean datos del sprite solo
para los bitplanes que están a 1 en el byte (anterior $30), una forma inteligente de ahorrar espacio en la definición de los sprites.
Vaya peñazo me ha salido, para variar -507
Adjunto última versión del fichero fuente actualizado
saludos
Code0335.zip
No tienes los permisos requeridos para ver los archivos adjuntos a este mensaje.
Avatar de Usuario
pser1
Mensajes: 4561
Registrado: 08 Dic 2012 18:34

Re: TILES / SPRITES en el FM77AV2

Mensaje por pser1 »

Hola,
he estado trazando un rato el programa para ver donde se dibuja a Mike realmente y, como cabía suponer, es en el BLK 122
Poniendo un breakpoint en $788B esperaba ver llamadas solamente cuando yo moviera a Mike, pero para mi sorpresa el juego
está continuamente llamando al bloque que pinta sprites con los datos de Mike (2 bytes ancho, 24 altura, 4 bitplanes)
Mirando el comando 7 que ejecuta el Subsistema, me da la impresión de que habilita el método de Tiles y marca, poniendo
a cero $D41C-1D-1E, que se afecten los bitplanes B-R-G respectivamente, por lo que pintando el el área de Azul, en este juego
biplanes B1-B0 (limpiando el bitplane apuntado y el siguiente), se produce el borrado completo del sprite
Entiendo que esto sucede porqué $D412 (mask register) ha recibido el valor $00 y presuntamente esto provoca el borrado, o no?
Lo molesto es que cuando BLK 122 acaba su trabajo la pantalla no se ha actualizado, solo se puede ver el efecto abriendo
la ventana que muestra la VRAM en bitplanes en el XM7
Si se consigue confirmar este comportamiento, en nuestro caso de solamente 16 colores, deberemos evitar poner a cero $D41E para
evitar que nos afecte el área de los bitplanes G1-G0 donde podríamos tener datos de sprites ... o incluso, tal vez, código!
saludos
Avatar de Usuario
pser1
Mensajes: 4561
Registrado: 08 Dic 2012 18:34

Re: TILES / SPRITES en el FM77AV2

Mensaje por pser1 »

Hola,
se va poniendo interesante!
cuando movemos a Mike hacia la izquierda, el programa llama al Subsistema con el comando 7 y subcomando 4 pasándole las
dimensiones del sprite y su posición en pantalla arriba izquierda.
El subcomando 4 se despacha en ZD6F3 donde testea el bit 0 del parámetro recibido en $D487, pasándolo al carry. Al ser cero no hace nada
Nuevo chequeo en ZD702 pasando otro bit al carry. Todavía es cero luego no hace nada
Otro chequeo en ZD708 llegando el bit 2 al carry. Ahora está a uno por lo que lee la anchura del sprite, le descuenta uno y lo suma
al puntero a VRAM, dando: $1A5E+(2-1)=$1A5F así que ahora apunta a la columna de la derecha del sprite
Con el Tile Painting habilitado, borra cada bit de los 26 en columna tanto en el bitplane B1 como en B0 (+$2000)
el resultado es que se BORRA dicha columna (en todos los bitplanes).
Luego se llama a la ya conocida BLK 122 que con la nueva dirección $1A5D (1 byte a la izquierda) repintará a Mike usando
otro frame para simular el movimiento.
O sea, la CPU principal dibuja los sprites mientras que el SUBsistema se dedica a borrar la parte que no 'debe' verse tras el movimiento
solicitado. El comando 7 acepta diferentes valores de subcomando.
Tal como está programado, se mueve un BYTE completo a derecha o izquierda, lo cual son 8 pixels de golpe. A mi me parece mucho
salto para tener un movimiento suave en pantalla. En el motor AGD para Blanco y Negro disponemos de rutinas especiales que pueden
mover los sprites dos pixels cada vez en lugar de ocho. Habrá que meditar a fondo al respecto.
saludos
pere
Avatar de Usuario
pser1
Mensajes: 4561
Registrado: 08 Dic 2012 18:34

Re: TILES / SPRITES en el FM77AV2

Mensaje por pser1 »

Hola,
de momento voy a intentar trabajar 'imitando' el movimiento en el juego Shounen Mike, aunque no me gusta nada saltos tan grandes
En AGD, si tenemos un enemigo a 16 pixels y estamos quietos, tardará 8 movimientos (frames) en alcanzarnos mientras que en este juego
en solo dos movimientos nos alcanza!
Y si nos movemos uno hacia el otro, en AGD se requieren cuatro movimientos para chocar mientras que en este juego en un solo
movimiento ya chocamos!
Ya discutiremos este tema en el hilo de "AGD", aquí vamos a hablar de estructura de datos para sprites
El juego guarda todos los bitplanes necesarios juntos, o sea, 4 para 16 colores o 6 para 64 colores. El byte indicador de cuales bitplanes
deben ser llenados contiene $0F para 4 bitplanes o $3F para 6 bitplanes. Cada bit a uno hace que se copien datos al bitplane
Dicho byte indirectamente nos dice cuantos colores maneja: 2 elevado a numero de bits a uno. 2^4=16, 2^6=64
Los Patrones/Tiles siempre son a 64 colores en el juego, pero en las demos SHOWSCR9 y SHOWS91 solo admiten 16 colores y con la
restricción AGD de mostrar solo dos colores en cada tile (papel, tinta), pero como son pequeños, 8x8 pixels en lugar de 16x16, pues dan
el pego bastante bien aunque si alguien se lo currara podrían ser mucho mas espectaculares. La definición de los Tiles lo permite ya que
se guardan en cuatro bitplanes permitiendo 16 colores en cada pixel de los 64 que tiene.
Para los sprites, en V9958 permito 16 colores distintos en las 16 filas que ocupa un sprite, o sea cada dos bytes horizontales, un color
Sin embargo, mirando los juegos que ya he convertido, veo que la mayoría de veces el jugador usa cuatro colores mientras que muchos
enemigos solo usan uno o dos colores. Como además cada 'instancia' de una clase de sprite podría tener asignados distintos colores, esto
no permite definirlos como cuatro bitplanes, sinó simplemente su forma en un bitplane y guardaremos los bytes de color en la estructura
que controla los sprites que hay en pantalla (añadiendo hasta 16 bytes si hace falta)
Esto permitiría usar las definiciones de imáges y frames directamente de AGD sin conversión alguna
Los datos de colores serían como mucho 16 bytes, que podrían ser bits indicadores de bitplanes a llenar ($01-$03-$07-$0F para 1-2-3-4)
pero como sobran bits (el nibble alto siempre seria cero) podríamos guardar los bitplanes para el byte de la izquierda en el nibble alto
y el de la derecha en el nibble bajo. Así cada par de bytes en la definición de forma del sprite podría recibir dos colores distintos
Me temo que esto complicará un poco la programación del pintado del sprite, pero podría intentarse como experimento. Realmente
no creo que cambie mucho ya que un sprite 16x16 no permite 'ver' con detalle cambios de color en pixels vecinos ...
¿Qué opináis al respecto?
Cualquier idea será bien recibida -thumbup
saludos
Avatar de Usuario
jimbobaby
Mensajes: 424
Registrado: 13 Ago 2023 21:17

Re: TILES / SPRITES en el FM77AV2

Mensaje por jimbobaby »

pser1 escribió: 03 Jun 2024 10:36 Entiendo que esto sucede porqué $D412 (mask register) ha recibido el valor $00 y presuntamente esto provoca el borrado, o no?
Lo molesto es que cuando BLK 122 acaba su trabajo la pantalla no se ha actualizado, solo se puede ver el efecto abriendo
la ventana que muestra la VRAM en bitplanes en el XM7
Cualquier cosa de la VRAM que toques no la ves al momento. La veras en el frame siguiente, o, si tienes la opcion de raster activada, lo veras en el mismo frame si y solo si se ha modificado antes de que el barrido de pantalla (emulado, claro) llegue a esa linea (si acaba de pasar no lo veras hasta el frame siguiente).
pser1 escribió: 03 Jun 2024 10:36 Si se consigue confirmar este comportamiento, en nuestro caso de solamente 16 colores, deberemos evitar poner a cero $D41E para
evitar que nos afecte el área de los bitplanes G1-G0 donde podríamos tener datos de sprites ... o incluso, tal vez, código!
El mecanismo de tile painting esta pensado para los tres RGB (como tantas cosas, herencia del FM7 original con 8 colores). Segun como organices la memoria y como la uses puedes bloquear la escritura de uno de los "colores"(2 bitplanes x 2 bancos en modo B) , pero tambien significa que en vez de tener el speedup x3 por usar tile paint, tendrias "solo" x2 (que un x2 esta genial, pero viniendo de un x3 es un downgrade -grin ).
pser1 escribió: 03 Jun 2024 10:36 Tal como está programado, se mueve un BYTE completo a derecha o izquierda, lo cual son 8 pixels de golpe. A mi me parece mucho
salto para tener un movimiento suave en pantalla. En el motor AGD para Blanco y Negro disponemos de rutinas especiales que pueden
mover los sprites dos pixels cada vez en lugar de ocho. Habrá que meditar a fondo al respecto.
Si, eso es una de las cosas que ando pensando. No es que sea momento de optimizar ahora, ni mucho menos, primero porque es mejor tener una base que funcione y sea clara antes de "romperla" con optimizaciones que no entiende ni el tato -507 , y segundo para no optimizar lo que no es necesario.
En el caso de los tiles, al ser tan "pequeños" (en cuanto a ancho), el codigo es "poco favorable" al formato planar.
En el caso de los sprites, ademas, dibujarlos en coordenadas modulo 8 != 0 es un dolor de eggs -grin . No veo forma sencila de hacerlo, y no es plan de almacenar versiones preshifted de todos los sprites.
Es mi primera vez con un formato no chunky y le estoy viendo muchas pegas -507 . Pero bueno, peor seria un spectrum -507
pser1 escribió: 03 Jun 2024 10:36 ¿Qué opináis al respecto?
El ultimo mensaje tengo que leermelo con cariño. Si lo he entendido bien, la idea seria convertir los sprites de "RGB" nativos a usar paleta (aunque sea virtual).

Tambien tengo una duda (generica y un poco offtopic) sobre el AGD. A nivel de editor/framework/engine, tiene las especificaciones que tiene, por tanto entiendo que, independientemente de que se puedan portear mas o menos de forma directa los juegos ya existentes, si se quisiera hacer un "remaster" de uno de ellos (o uno completamente nuevo) aprovechando al maximo, los limites los marcaria AGD o nuestra capacidad con la maquina?
-sp3zy PC 386 -coam1 -m3s3x
Responder

Volver a “Fujitsu FM7”