Título: La regla del 5º Sprite Publicado por: OKI09 en 07 de Septiembre de 2009, 06:05:54 pm Antes de nada decir, que ya se que hay hilos que comentan este problema ::), pero es que como
estan practicamente todos en ingles y como no tengo demasiada idea del idem, pues como que no me aclaro. >:( 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 Título: Re: La regla del 5º Sprite Publicado por: Jon_Cortazar en 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? :magicalstones:
Título: Re: La regla del 5º Sprite Publicado por: OKI09 en 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 Título: Re: La regla del 5º Sprite Publicado por: Jon_Cortazar en 08 de Septiembre de 2009, 05:18:33 am No entiendo, OKI ;) (??). 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 :P, y viéndolos "a la vez", bastante bien se ve :D
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: Título: Re: La regla del 5º Sprite Publicado por: OKI09 en 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? ??? Título: Re: La regla del 5º Sprite Publicado por: Jon_Cortazar en 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:: Título: Re: La regla del 5º Sprite Publicado por: Dioniso en 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. Título: Re: La regla del 5º Sprite Publicado por: OKI09 en 08 de Septiembre de 2009, 11:06:42 pm Gracias chicos. ;)
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. ;D ;D ;D ;D ;D Título: Re: La regla del 5º Sprite Publicado por: Jon_Cortazar en 09 de Septiembre de 2009, 06:57:58 am Porque tanto lio con lo del 5º Sprite, si con 4 vale... Ingenua juventud. ;D ;D ;D ;D ;D LOL :D :D :D :D :D Dale un vistazo al Infinity de Karoshi (http://msxgamesbox.com/karoshi/index.php?topic=907.0), 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. Título: Re: La regla del 5º Sprite Publicado por: OKI09 en 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? Título: Re: La regla del 5º Sprite Publicado por: Jon_Cortazar en 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 ;) Título: Re: La regla del 5º Sprite Publicado por: OKI09 en 10 de Septiembre de 2009, 11:24:10 am Ok, gracias.
Voy a ver que me sale a mi, ya os comentare. :D |