Karoshi MSX Community
06 de Julio de 2021, 04:52:44 am *
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]
  Imprimir  
Autor Tema: La regla del 5º Sprite  (Leído 5464 veces)
0 Usuarios y 1 Visitante están viendo este tema.
OKI09
Karoshi Maniac
****
Mensajes: 275



WWW Email
« : 07 de Septiembre de 2009, 06:05:54 pm »

Antes de nada decir, que ya se que hay hilos que comentan este problema Roll Eyes, pero es que como
estan practicamente todos en ingles y como no tengo demasiada idea del idem, pues como que no
me aclaro. Angry

Podeis ayudarme plisss.

He hecho una rutina en la que pongo 4 sprites en linea, (planos 0,1,2,3) llamo a la rutina de retardo
(ejecuto un HALT) y en el siguiente ciclo visualizo los 4 sprites siguientes (planos 4,5,6,7).

Es esto correcto, la verdad que veo demasiado parpadeo, no creo que lo este haciendo bien.

Por favor orientarme un poco en el tema, que me he topado con este problema y me gustaria
solventarlo de la forma mas digna posible.

Gracias
En línea

La derrota no es una opción y no hay excusas.
"Parasiempre"
Jon_Cortazar
Administrator
Karoshi Forum's God
********
Mensajes: 2777



WWW Email
« Respuesta #1 : 07 de Septiembre de 2009, 08:30:02 pm »

Depende de como lo estés enfocando. ¿Los sprites forman parte de personajes que tienen más de un sprite solapado? De ser así, estaría bien que fueras alternando los sprites 1 de los personajes y luego los sprites 2, de esta forma, nunca pierdes de vista del todo los personajes. Si tus personajes no tienen más que un sprite, me da que algo no haces bien, o que tardas más de una interrupción en hacer la alternancia entre un grupo de sprites y el otro (el control de los personajes o lo que sea está tardando más de la cuenta y te pasas del frame). Es que todo depende: ¿podrías concretar más el problema, pero dentro de su contexto real? Magical Stones
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.]
OKI09
Karoshi Maniac
****
Mensajes: 275



WWW Email
« Respuesta #2 : 07 de Septiembre de 2009, 10:26:59 pm »

Lo que he hecho de momento es una pequeña prueba con unos sprites cualquiera.

Ahora bien mirado no parece que este tan mal, pero mi pregunta es si es normal
la irregularidad en el parpadeo de los Sprite, o sea, que no me parece siempre la
misma frecuencia de parpadeo.

Pongo el ejemplo que he hecho , le hechais un ojo, plisss.


Código:
.bios
.page 1
.rom

CLIKSW  EQU     $F3DB
FORCLR  EQU     $F3E9
DI
IM 0
LD SP,$F380

INICIO: LD HL,FORCLR
LD [HL],$0F
INC HL
LD [HL],$01
INC HL
LD [HL],$01
XOR A
LD [CLIKSW],A
CALL INIGRP
CALL ERAFNK
LD BC,$E201
CALL WRTVDP
LD A,0
LD R,A
xor a
ld [sprite],a

LD HL,GHOST
LD DE,14336
LD BC,32
CALL LDIRVM

bucle: call retardo
ld a,[sprite]
dec a
jr z,dir5678
ld hl,buffer
LD DE,6912
LD BC,8*4
CALL LDIRVM
jr bucle
dir5678: ld hl,buffer+4*4
LD DE,6912
LD BC,8*4
CALL LDIRVM
jr bucle

retardo: halt
ld a,[sprite]
or a
jr z,ponera1
xor a
ld [sprite],a
ret
ponera1: inc a
ld [sprite],a
ret

buffer: db 100,10,0,2,100,30,0,4,100,50,0,6,100,70,0,7,100,90,0,9,100,110,0,10,100,130,0,13,100,150,0,15
copia_buffer: db 100,10,0,2,100,30,0,4,100,50,0,6,100,70,0,7,100,90,0,9,100,110,0,10,100,130,0,13,100,150,0,15

GHOST: db  000h,003h,00Fh,01Fh,027h,003h,003h,043h,067h,07Fh,07Fh,07Fh,07Fh,06Eh,046h,000h
        db  000h,0C0h,0F0h,0F8h,09Ch,00Ch,00Ch,00Eh,09Eh,0FEh,0FEh,0FEh,0FEh,076h,062h,000h
.page 3
sprite: ds 1
En línea

La derrota no es una opción y no hay excusas.
"Parasiempre"
Jon_Cortazar
Administrator
Karoshi Forum's God
********
Mensajes: 2777



WWW Email
« Respuesta #3 : 08 de Septiembre de 2009, 05:18:33 am »

No entiendo, OKI Wink (??). He compilado el código y está todo perfecto. Es decir, si, hay parpadeo, pero es que estás poniendo 8 sprites en linea en MSX Tongue, y viéndolos "a la vez", bastante bien se ve Cheesy

Tu piensa que es una situación que se te dará en tu juego en ciertos momentos críticos, y si puedes asumir ese parpadeo o no (yo te diría que si). Luego es ver como te lo gestionas: yo, por ejemplo, en los casos de rutina para parpadeo de sprites, nunca hago que el protagonista parpadee, es decir, que la rotación la hago solo cono los enemigos y el resto de sprites. Luego, como te comenté, si tus personajes están formados por dos sprites, puedes alternar en el parpadeo esas partes de los personajes en cada frame, de forma que en un frame se vea el color 1 de todos los personajes y luego el color 2. En fin, que luego hay mil formas de optimizarlo, pero eso depende del enfoque concreto de cada juego.

Yo ya te digo que por mi parte el parpadeo que se ve en tu código es más que asumible Griel
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.]
OKI09
Karoshi Maniac
****
Mensajes: 275



WWW Email
« Respuesta #4 : 08 de Septiembre de 2009, 10:20:45 am »

Gracias Jon.

Por ejemplo, el personaje de mi juego esta compuesto por dos Sprites (Bueno 3, pero el tercero no esta en linea con los otros dos) estan situados en los planos 0,1,y 2.
Como bien indicas ya habia pensado en hacer la rotacion solamente de los demas Sprites, pero la verdad es que no se como hacerlo, o sea no se como enfocar el problema.

En este ejemplo yo se que los Sprites 4,5,6 y 7 son los que estan en la misma X, pero como se yo en mi juego cuando hay este conflicto y asi hacer la rotacion.?

O por el contrario, la rotacion la tengo que hacer siempre? Huh
En línea

La derrota no es una opción y no hay excusas.
"Parasiempre"
Jon_Cortazar
Administrator
Karoshi Forum's God
********
Mensajes: 2777



WWW Email
« Respuesta #5 : 08 de Septiembre de 2009, 05:37:08 pm »

Yo lo haría siempre, es lo más cómodo. Alguien plantea otra opción?

 Anyone?
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.]
Dioniso
Visitante
« Respuesta #6 : 08 de Septiembre de 2009, 06:48:53 pm »

Yo lo haría siempre, es lo más cómodo. Alguien plantea otra opción?

La haces siempre y ya está. Recuerda que el parpadeo sólo ocurrirá cuando coincidan más de 4 en línea horizontal y no en otro momento, aunque cambies los planos.
En línea
OKI09
Karoshi Maniac
****
Mensajes: 275



WWW Email
« Respuesta #7 : 08 de Septiembre de 2009, 11:06:42 pm »

Gracias chicos. Wink

Ahora recuerdo lo que pensaba cuando era un chavaluco y empezaba con esto de los ordenadores.

"Porque tanto lio con lo del 5º Sprite, si con 4 vale"

Ingenua juventud. Grin Grin Grin Grin Grin
En línea

La derrota no es una opción y no hay excusas.
"Parasiempre"
Jon_Cortazar
Administrator
Karoshi Forum's God
********
Mensajes: 2777



WWW Email
« Respuesta #8 : 09 de Septiembre de 2009, 06:57:58 am »

Porque tanto lio con lo del 5º Sprite, si con 4 vale... Ingenua juventud. Grin Grin Grin Grin Grin

LOL Cheesy Cheesy Cheesy Cheesy Cheesy
Dale un vistazo al Infinity de Karoshi, que tiene una rutina que hice de flickering para enemigos. Funciona siempre, cada frame y el resultado es bastante decente. Verás que el personaje nunca parpadea (tiene 4 sprites, aunque no más de 2 en linea), y los enemigos si (tienen 2 sprites, aunque no más de 1 en linea), así que se acerca un poco a lo que tu pretendes.
« Última modificación: 09 de Septiembre de 2009, 10:12:23 am por Viejo_archivero » 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.]
OKI09
Karoshi Maniac
****
Mensajes: 275



WWW Email
« Respuesta #9 : 09 de Septiembre de 2009, 11:47:19 am »

Citar
Verás que el personaje nunca parpadea (tiene 4 sprites, aunque no más de 2 en linea), y los enemigos si (tienen 2 sprites, aunque no más de 1 en linea)

Entonces no necesitarias la rutina de flickering, no? Solamente tendrias como maximo 4 en linea.
Serian 2 del personaje y otros 2 del enemigo?
En línea

La derrota no es una opción y no hay excusas.
"Parasiempre"
Jon_Cortazar
Administrator
Karoshi Forum's God
********
Mensajes: 2777



WWW Email
« Respuesta #10 : 09 de Septiembre de 2009, 01:44:16 pm »

Nope. Mira, hay 3 malos en pantalla (cada uno de ellos 1 sprite en linea) y Phantomas (3 en línea).

El único caso crítico es cuando tengo al prota + los tres malos en la misma linea horizontal (5 spites en linea). Entonces en ese momento se percibe la rotación de sprites (que se hace siempre, pero que no se ve hasta que no llega ese único momento "critico"). Carga la ROM y prueba a ponerte en linea con 3 enemigos, ya verás como flickea que da gusto Wink
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.]
OKI09
Karoshi Maniac
****
Mensajes: 275



WWW Email
« Respuesta #11 : 10 de Septiembre de 2009, 11:24:10 am »

Ok, gracias.

Voy a ver que me sale a mi, ya os comentare. Cheesy
En línea

La derrota no es una opción y no hay excusas.
"Parasiempre"
Páginas: [1]
  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!