pitpan
|
|
« : 16 de Abril de 2007, 11:46:15 pm » |
|
Pues he probado el JAIL BREAK de Spectrum y lo cierto es que no hay por donde cogerlo. Es malo con ganas, de verdad. No creo que el MSX se merezca que le hagamos algo así. Por otra parte, haciendo un poco de arqueología comparada, he dado con sutiles diferencias que explican bastantes cosas. Por ejemplo, ¿porque los usuarios de MSX piensan que el juego JOE BLADE es malo y los usuarios de Spectrum dicen que está bien? Pues bien sencillo, porque hay bastantes cambios entre uno y otro, y sale perdiendo con diferencia la versión de MSX. Es decir, las animaciones tienen la mitad de frames (4 pasos en ZX, sólo 2 en MSX), la velocidad se reduce a la mitad de FPS, el sonido PSG brilla por su ausencia (sólo efectos, como en la versión ZX48) y el salto en MSX no es suave, sino que tiene dos posiciones, al más puro estilo barrio sésamo, arriba y abajo. Lo cierto es que he estado jugando a la versión de Spectrum y es un juego muy curiosón. Y la versión de MSX no está a la altura, la verdad. Técnicamente es mucho más pobre y aparece "podada" respecto a la de ZX. Por cierto, que el que está todavía mejor es el JOE BLADE 2, que desgraciadamente no vio la luz para MSX. La versión de ZX tiene unos gráficos estupendos. Por cierto, ya que me aburría he hecho una versión ROM (16 KB) para MSX con el juego original de cassette. La tenéis aquí: Joe Blade (ROM). A disfrutar
|
|
« Última modificación: 18 de Abril de 2007, 06:14:59 am por Viejo_archivero »
|
En línea
|
|
|
|
Darth_Fistro
|
|
« Respuesta #1 : 17 de Abril de 2007, 04:45:28 pm » |
|
Muchas gracias, Robsy Por cierto, ya que te aburrías, ¿por qué no estabas con el Final Lap? (ah, sí, es que no hay MSXtremo, jejeje)
|
|
|
En línea
|
MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
|
|
|
pitpan
|
|
« Respuesta #2 : 17 de Abril de 2007, 05:26:30 pm » |
|
Bueno, te paso el pedazo de código fuente de la conversión de CAS a ROM: Previo: PACK JOEBLADE.CAS Programa: .bios .page 1 .rom .start INIT .org 4010h
INIT: ld hl,JOEBLADE_CAS_PCK ld de,8080h-38 ; Cabecera del PAK call DEPACK jp 8080h
DEPACK: ; Incluir aquí rutina del BitBuster
JOEBLADE_CAS_PCK: .incbin "JOEBLADE.CAS.PCK" Creo que tampoco es difícil, ¿o sí?
|
|
|
En línea
|
|
|
|
Darth_Fistro
|
|
« Respuesta #3 : 17 de Abril de 2007, 09:25:16 pm » |
|
Molón (vaya, yo me entretengo en quitarles la cabecera a los archivos y todo)
|
|
|
En línea
|
MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
|
|
|
pitpan
|
|
« Respuesta #4 : 17 de Abril de 2007, 11:39:30 pm » |
|
Pues al final sí que he hecho algo más... Os dejo una mini-demo técnica a la que le falta mucha optimización: mini-demo malévola. Moviendo arriba/abajo el cursor cambiaréis el número. Os adelanto los resultados para MSX1 a 50 Hz: De uno a tres: funciona a 50 Hz De cuatro a seis: funciona a 25 Hz De seis a nueve: 12,5 Hz En cualquier caso, no funciona demasiado bien a partir de 7/8, debido a que no se ha incluido el NOP adicional para los OUTI fuera de V-blank. Además, el código no está optimizado en absoluto, va todo muy a saco.
|
|
|
En línea
|
|
|
|
Dioniso
Visitante
|
|
« Respuesta #5 : 17 de Abril de 2007, 11:50:50 pm » |
|
Muy curioso el invento
|
|
|
En línea
|
|
|
|
Jon_Cortazar
|
|
« Respuesta #6 : 18 de Abril de 2007, 06:11:51 am » |
|
Muy interesante el thread y muy guapa la demo!!... ya sería acojonante unir esta rutina solapando sprites sobre el protagonista (solo 1 por linea) para colorearlo. Hasta tres muñecos, la cosa va super fina (3 personajes 16x32 o 6 personajes 16x16, supongo). Si esto fuera aplicable a 6 "sprites" 16x16, ya solo pensar en las posibles aplicaciones me produce terror y pavor .
|
|
|
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.]
|
|
|
Konamito
|
|
« Respuesta #7 : 18 de Abril de 2007, 07:45:09 am » |
|
¡Pedazo sprites! y menudo movimiento que tiene (hasta tres o cuatro es aceptable).
|
|
|
En línea
|
|
|
|
pitpan
|
|
« Respuesta #8 : 18 de Abril de 2007, 08:48:32 am » |
|
Pues para ordenadores a 50 Hz, debería moverse a 50 FPS para 1, 2 y 3 personajes. De 4 a 6 personajes, funcionará a 25 FPS, que era el objetivo original. Si estamos en una máquina a 60 Hz, el límite lo tendremos en unos 5 personajes en movimiento. Eso sí, si lo probáis en un Turbo-R, puede mover hasta 10 personajes a 50 FPS (qué gusto!).
Los sprites, aunque no lo parezca, funcionan como 32x32. El tema de overlay de sprites por hardware es factible y consumiría poco. El problema es que el "gasto" en sprites sería muy elevado para animaciones tan grandes y con tantos frames. Pero bueno, lo que quería demostrar es que el JOE BLADE de MSX podría haber sido idéntico al de ZX. Y eso parece bastante claro. En la versión de Speccy, hay un máximo de 3 personajes en pantalla y funciona a 25 FPS, pero aprovecha también para tener un scroller en la parte superior de la pantalla. En máquinas a 50 Hz sería totalmente factible para MSX.
|
|
|
En línea
|
|
|
|
Darth_Fistro
|
|
« Respuesta #9 : 18 de Abril de 2007, 09:22:51 am » |
|
Wow!!! Malévolos, con OUTis, NOPs y demases no hay quien se entere de nada Si eso es lo máximo a conseguir en sprites soft, mejor tiro a la basura los proyectos que tengo
|
|
|
En línea
|
MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
|
|
|
Darth_Fistro
|
|
« Respuesta #10 : 18 de Abril de 2007, 09:26:51 am » |
|
Una preguntilla, Edu, ¿qué porción de la pantalla de juego vuelcas en cada frame? ¿O utilizas la técnica de transferencia secreta y haces trampillas?
|
|
|
En línea
|
MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
|
|
|
pitpan
|
|
« Respuesta #11 : 18 de Abril de 2007, 09:49:44 am » |
|
Utilizo 2 buffers: FONDO, TRABAJO y VRAM.
Lo que hago es copiar para cada caja de 32x32 píxeles de FONDO a TRABAJO. En trabajo copio con ANDs la máscara negra y con ORs el cuerpo del sprite. Después vuelco cada rectángulo de 32x32 por separado de TRABAJO a VRAM. Y repetimos. No es difícil, la verdad, pero el tema es que el rendimiento tampoco es fantástico. Ten en cuenta que para cada sprite copias 128 bytes 3 veces (restauración del fondo, máscara, sprite) además de hacer operaciones con ello (ANDs, ORs) y luego vuelcas esos 128 bytes a VRAM.
Asumiendo fondo negro se podría ahorrar mucho. O no utilizando máscara. Se conseguiría doblar aproximadamente el rendimiento. Pero lo pagarías en cuanto al detalle obtenido.
En cualquier caso, me sigue maravillando que pudieran hacerse cosas como un Filmation 2 en MSX. Algún día averiguaré un poco más. De momento, hasta aquí he llegado. Y lo que venga después, habrá que verlo.
|
|
|
En línea
|
|
|
|
Darth_Fistro
|
|
« Respuesta #12 : 18 de Abril de 2007, 10:13:56 am » |
|
Gracias, son ideas que sirven para afrontar nuevas rutinas A mí lo que me trae por la calle de la amargura (devanándome los sesos) es la rutina de ocultación/redefinición en tiempo real de sprites del Final Lap. Pasmao me quedo. Algo así funcionando a tope daría lugar a juegos isométricos en MSX a todo color ¡Animo con eso! Por mi parte sigo un estilo más tradicional. Cargo el sprite en un buffer, lo paso a una rutina con parámetros que definen su altura, etc. Luego lo roto a derecha y hacia abajo hasta dar con su posición x,y correcta. Hago AND con su máscara y OR con el fondo (en otro buffer). Y luego todo a la VRAM a saco. Eso para sprites en plan Spectrum Como ves, el proceso es muy mejorable, pero un clásico. Por ahora no uso sprites precalculados porque chuparían mucha memoria. Para el Filmation (Fistration, en este caso ) covierto el mapa de la pantalla donde se desarrolla el juego de fondo (que en realidad está en 2D -gracias, Jon ) a coordenadas isométricas, asignando a cada posición un sprite soft. Se ordena esa lista de menor a mayor y se vuelcan todos los sprites en ese orden. Muchas cosas a mejorar: la rutina de tratamiento de los sprites, la rutina de ordenación, la de volcado a VRAM... Menuda lástima que la VRAM en los MSX no esté mapeada en la RAM. Se perderían 16kb de memoria, pero... ¡qué juegos saldrían!
|
|
« Última modificación: 18 de Abril de 2007, 10:19:21 am por Darth_Fistro »
|
En línea
|
MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
|
|
|
SapphiRe
Visitante
|
|
« Respuesta #13 : 18 de Abril de 2007, 11:46:06 am » |
|
Menuda lástima que la VRAM en los MSX no esté mapeada en la RAM. Se perderían 16kb de memoria, pero... ¡qué juegos saldrían! ¿Quién dice que se perderían 16kb de memoria? Para algo existen los slots y subslots
|
|
|
En línea
|
|
|
|
jltursan
|
|
« Respuesta #14 : 18 de Abril de 2007, 02:50:22 pm » |
|
¡Está muy divertido el asunto!, creo que si de lo que se trataba de demostrar es que bien hecho, en el MSX se puede sacar tanta velocidad como en el Spectrum, lo has conseguido En trabajo copio con ANDs la máscara negra y con ORs el cuerpo del sprite Puedes transigir un poco y utilizar únicamente un XOR, con eso ahorras el guardarte el fondo para recuperarlo y el enmascaramiento del mismo. Queda un poco "rarillo"; pero era muy típico en los juegos de Spectrum
|
|
|
En línea
|
Doom dee doom dee doom
|
|
|
|