Karoshi MSX Community
05 de Julio de 2021, 07:58:32 pm *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias:
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: 1 2 [3] 4 5
  Imprimir  
Autor Tema: Cóctel de dudas vol.1  (Leído 28576 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Darth_Fistro
Karoshi Hero
*****
Mensajes: 507


Email
« Respuesta #30 : 13 de Abril de 2007, 08:32:23 pm »

¡Gracias a todos!

Ya veo que estaba equivocado, resulta algo muy útil  Smiley ¿Hay alguna bandera para ver si se producen colisiones entre sprites?

Y respecto a lo de la tabla de 768 bytes, ¿es posible?

Edu, menudo afortunado por ponerle las zarpas a un trasto así  Wink Por cierto, ejem, ejem... ¿qué tal un snippet con esa rutina de transferencia a VRAM?  Grin ejem, ejem...

Claveliiiitos, claveliiiiitos (la tuna de la facultad de Derecho de Valladolid bajo la ventana del Sr.Robsy y Darth cortejándolo)  Kiss Kiss Kiss
En línea

MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
Jon_Cortazar
Administrator
Karoshi Forum's God
********
Mensajes: 2777



WWW Email
« Respuesta #31 : 14 de Abril de 2007, 01:20:48 pm »

Ya veo que estaba equivocado, resulta algo muy útil  Smiley ¿Hay alguna bandera para ver si se producen colisiones entre sprites?

Pozi. Quoteando desde el Portar MSX Tech Doch:

Código:

Port 99 VDP Status Registers (Read Only)

MSX1 includes only one VDP Status Register (Register 0), for MSX2 VDP Status Registers 0-9 exist.

Status register 0 (default):
  Bit  Name  Expl.
  0-4  5/9th Number for the 5th sprite (9th in screen 4-8) on a line
  5    C     1 if overlapping sprites
  6    5D    1 if more than 4 sprites on a horizontal line (8 in screen 4-8)
  7    F     V-Blank IRQ Flag (1=interrupt) (See also IE0 flag)


 
En línea

Jon Cortázar Abraido (aka El Viejo Archivero)
RELEVO Videogames
[Dioniso: La cafeína está haciendo su trabajo; yo espero hacer el mío.]
[pitpan: Me sigue pareciendo más productivo jugar al SNAIL MAZE que seguir esta discusión.]
Darth_Fistro
Karoshi Hero
*****
Mensajes: 507


Email
« Respuesta #32 : 14 de Abril de 2007, 02:31:15 pm »

¡Gracias!  Smiley
En línea

MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
Darth_Fistro
Karoshi Hero
*****
Mensajes: 507


Email
« Respuesta #33 : 17 de Abril de 2007, 10:22:05 pm »

Preguntilla rápida:
-¿es equivalente sra a sla? (solo que desplazando con carry a la derecha?
En línea

MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
Darth_Fistro
Karoshi Hero
*****
Mensajes: 507


Email
« Respuesta #34 : 17 de Abril de 2007, 10:24:19 pm »

Otra rápida: las rutinillas de transferencia rápida a VRAM que he visto desactivan las interrupciones para hacer OTIR y demases, pero mi duda es: si la transferencia es grande y dura más de 1/50 de segundo, no se activa la interrupción correspondiente y te puedes quedar sin música o lo que sea, ¿verdad?
En línea

MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
Darth_Fistro
Karoshi Hero
*****
Mensajes: 507


Email
« Respuesta #35 : 17 de Abril de 2007, 10:26:39 pm »

La última y me acuesto Wink : ¿es más rápido jr nz/z que jp nz/z si la condición no se va a cumplir?
En línea

MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
Dioniso
Visitante
« Respuesta #36 : 17 de Abril de 2007, 11:21:29 pm »

La última y me acuesto Wink : ¿es más rápido jr nz/z que jp nz/z si la condición no se va a cumplir?

Un JP NZ es más rápido.
En línea
Dioniso
Visitante
« Respuesta #37 : 17 de Abril de 2007, 11:23:39 pm »

Otra rápida: las rutinillas de transferencia rápida a VRAM que he visto desactivan las interrupciones para hacer OTIR y demases, pero mi duda es: si la transferencia es grande y dura más de 1/50 de segundo, no se activa la interrupción correspondiente y te puedes quedar sin música o lo que sea, ¿verdad?

Bueno, casi te respondes tú mismo a tus propias preguntas ... si te pasas de un barrido de pantalla para hacer algo se va todo al carajo; música, movimiento suave, etc ... en caso de tener que actualizar el PSG y demás datos (como nuevas coordenadas y ordenadas en VRAM) a cada barrido.
En línea
SapphiRe
Visitante
« Respuesta #38 : 18 de Abril de 2007, 11:48:57 am »

Otra rápida: las rutinillas de transferencia rápida a VRAM que he visto desactivan las interrupciones para hacer OTIR y demases, pero mi duda es: si la transferencia es grande y dura más de 1/50 de segundo, no se activa la interrupción correspondiente y te puedes quedar sin música o lo que sea, ¿verdad?

No sólo. En MSX1 si te pasas del retrazado no puedes utilizar OTIR porque es una instrucción demasiado rápida para el pobre VDP. Si te pasas corres el riesgo (muy muy alto) de que los gráficos se corrompan.

Saludos
--
Sph.
En línea
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #39 : 18 de Abril de 2007, 03:39:16 pm »

Y aun más, no hay porque desactivar las interrupciones cuando se ejecuta una transferencia a VRAM, sólo es estrictamente necesario cuando estás programando la dirección de escritura o lectura al VDP, a partir de ahí puedes mantenerlas activadas.
El Z80 chequea la existencia de una interrupción tras ejecutar cada instrucción, el caso del OTIR es especial ya que no hace chequeo cada vez que se ejecuta un OUTI; asi que se trata de una operación atómica desde el punto de vista de las interrupciones. Si se produce alguna cuando se está ejecutando, saltará inmediatamente al acabar el OTIR. Esto unido a que las iteraciones máximas permitidas en un OTIR son 256, hacen que como mucho se produca un ligero retraso en la ejecución de la interrupción.
El problema surge, como ya te ha comentado Sapphire, cuando todo está medido, encajado y sincronizado. Si por alguna razón se te ejecuta un OTIR gordo y te descuadra el tiempo usado en cada fotograma; pues nada si desbordas el tiempo total tendrás parones, saltos y demás impertinencias. En el peor de los casos puedes acabar incluso con cuelgue si en la interrupción no tienes mucho cuidadín con la pila y los registros que guardas en ella.
Y por supuesto, en MSX1 hay que tener muy clarito donde y como se usa el OTIR, que por regla general no funciona nada bien... Tongue
En línea

Doom dee doom dee doom
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #40 : 19 de Abril de 2007, 03:34:53 pm »

Pues nada, como rectificar es de sabios.... Tongue
El OTIR si que es interrumpible; así que bueno, habrá que llevar cuidadín de, si no se han desactivado las interrupciones durante su ejecución, que el código que ejecutemos en la interrupción no acceda al VDP porque en ese caso nos cargariamos el OTIR.
En línea

Doom dee doom dee doom
SapphiRe
Visitante
« Respuesta #41 : 19 de Abril de 2007, 03:43:34 pm »

Pues nada, como rectificar es de sabios.... Tongue
El OTIR si que es interrumpible; así que bueno, habrá que llevar cuidadín de, si no se han desactivado las interrupciones durante su ejecución, que el código que ejecutemos en la interrupción no acceda al VDP porque en ese caso nos cargariamos el OTIR.

Eso me parecía a mí, que es interrumpible al igual que el LDIR...
En línea
Darth_Fistro
Karoshi Hero
*****
Mensajes: 507


Email
« Respuesta #42 : 19 de Abril de 2007, 09:03:57 pm »

Gracias por las lecciones magistrales, ahora sólo tengo que encontrar la forma de mandar al menos 1,5kb por frame  Cheesy
En línea

MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
SapphiRe
Visitante
« Respuesta #43 : 20 de Abril de 2007, 11:48:55 am »

Gracias por las lecciones magistrales, ahora sólo tengo que encontrar la forma de mandar al menos 1,5kb por frame  Cheesy

¿Tanto? Shocked Shocked
En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #44 : 20 de Abril de 2007, 01:00:27 pm »

Gracias por las lecciones magistrales, ahora sólo tengo que encontrar la forma de mandar al menos 1,5kb por frame  Cheesy

¿Tanto? Shocked Shocked

¿Tan poco?  Grin  Grin  Grin
En línea
Páginas: 1 2 [3] 4 5
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.21 | SMF © 2013, Simple Machines XHTML 1.0 válido! CSS válido!