Karoshi MSX Community
05 de Julio de 2021, 06:51:42 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]
  Imprimir  
Autor Tema: Reset y a reiniciar todo  (Leído 2968 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Darth_Fistro
Karoshi Hero
*****
Mensajes: 507


Email
« : 03 de Febrero de 2012, 01:22:41 pm »

Bueno, creo que mirando códigos y probando he vuelto a recuperar la soltura en asm.

Ahí está el Goonies, al 99% terminado, con 84 pantallas y a falta de una música para el final... y el caso es que no estoy contento... ahora me doy cuenta de muchos fallos... rutinas duplicadas, el listado es una sopa, va leeento a pesar de ser en asm (uso mucho pantallas buffer y hago animaciones de fondo de pantalla barriendo esa pantalla buffer posición a posición... imaginad por cada frame la cantidad de operaciones) y sobre todo un mapeado poco flexible a base de tiles de 4x4 caracteres que desde luego no es la mejor idea. Así que aprovechando lo que hay como guía, me he propuesto reprogramar todos los proyectos desde cero, más optimizados, elegantes y sobre todo documentados (cojones, que me he dado cuenta que el Goonies por ejemplo lo empecé en 2006 y ahora tengo que descifrar el código para saber lo que hacía).

A ver, algunas cosillas básicas...

Habláis de 25 o 50 frames por segundo y todas esas cosas en chino (pa mí el asm va más rápido que el basic y yastá, ni papa de lo demás)... hago una cosa así al final del bucle principal...

ld hl,PANT_BUFFER
ld de,6144
ld bc,768
halt
call LDIRVM    ;por ejemplo, vuelco la pantalla buffer a la VRAM

ld hl,TBL_SPRITES
ld de,6912
ld bc,tamaño
call LDIRVM   ;vuelco los sprites

Todo esto con el Caruso sonando. ¿Es una forma correcta de hacerlo? Aquí se habla de interrupciones y demás, pero NPI  Tongue

Y sobre el mapeado, uso tiles de 4x4 consecutivos pero es poco flexible. He pensado en hacer una tabla de objetos, cada uno con su tamaño y que cada pantalla se defina más o menos así:

1- pon ventana en y=15,x=20, por ejemplo
2- pon puerta en y=20, x=10
3-...
4- FIN DE PANTALLA

Y así sucesivamente... ¿merece la pena? ¿Any other ideas?

Y sobre todo, hacer las rutinas lo más genéricas posibles, sólo pasar unos cuantos parámetros y a rular (enemigos, balas, etc).

Gracias por leer el tocho. Voy a hincharme ánimos porque el trabajo es ingente, pero creo que valdrá la pena.

Voy al tecleo  Wink
En línea

MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #1 : 03 de Febrero de 2012, 01:51:44 pm »

Buf. Enfrentarse a código "antiguo" es siempre una tarea ingrata, así que muchos ánimos.

Por lo demás, usar interrupciones te puede servir no sólo para la música, sino para otras muchas cosillas periódicas sin tener que hacer bucles larguísimos y incluir código redundante. Pero bueno, prueba a ver qué tal te va...

En cuanto al Caruso, creo que ahora mismo hay herramientas mucho más cómodas y potentes, como los replayers para PT3, MuSICA o la excelente opción de WYZ, así que dale una vuelta al tema.

Evidentemente, para pantallas complejas, es mejor utilizar "metatiles". Es decir, funcionarías a 3 niveles:

- El nivel de tile o carácter gráfico de 8x8
- El nivel de bloque, que podría agrupar cualquier número de tiles en forma cuadrada (aunque le puedas añadir transparencia)
- El nivel de pantalla, construida por un listado de bloques y sus coordenadas

Así, definirías simplemente "árbol" y lo pondrías en una o más posiciones sin complicarte más. Es un gran ahorro de memoria.

En cualquier caso, la otra opción es seguir funcionando a nivel de tiles o pantallazos completos de la tabla de nombres, comprimidos uno por uno con un compresor que sea eficiente y rápido. Ésta solución es muy a saco pero te permite que la parte de programación sea sencilla y no te consuma mucho espacio en ROM. En cualquier caso, sí que te comerá RAM probablemente...

Bueno, que bienvenido de nuevo al ruedo de los desarrolladores para MSX.
En línea
Darth_Fistro
Karoshi Hero
*****
Mensajes: 507


Email
« Respuesta #2 : 03 de Febrero de 2012, 02:01:04 pm »

Mil gracias por la pronta respuesta. Creo que antes de iniciar nada, me voy a poner con el tutorial de ZilogZ80 en cuanto esté disponible  Cheesy Muy buena la idea de los metatiles con transparencias  Wink
En línea

MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
Dioniso
Visitante
« Respuesta #3 : 03 de Febrero de 2012, 04:47:12 pm »

Buf. Enfrentarse a código "antiguo" es siempre una tarea ingrata,

Ahí está el Krakonia ... olvidado. Lo intenté pillar de nuevo y ... uff ... Ahí se va a quedar hasta no sé cuándo.  Huh
En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #4 : 03 de Febrero de 2012, 05:52:28 pm »

Pues me voy a callar lo mío porque tiene delito... O mejor no me lo callo y comparto mis vergüenzas:

- DODGIN' RAVEN - le falta corregir un problema cuando funciona a 60 Hz y diseñar los niveles. Todo lo demás hecho y operativo. Los que se lo bajaron a tiempo de MSXDEV saben de lo que hablo Wink
- PUCKMAN - falta establecer las tablas de dificultad, la gestión de los fantasmas devorados y las intermissions. Los que pasaron por alguna RU saben también de lo que hablo Smiley
- ***** ******* - sonido y presentación pendientes; los gráficos, el motor de juego y los niveles están operativos al 100%. Este no ha salido más allá de mi cocina.
- ******* ***** - motor de juego básico operativo. Este tampoco ha visto la luz ni por asomo.

Y alguno más que ni me atrevo a nombrar... Y lo triste es que no veo cuándo voy a poder sacar tiempo para terminarlos.
En línea
Darth_Fistro
Karoshi Hero
*****
Mensajes: 507


Email
« Respuesta #5 : 03 de Febrero de 2012, 06:05:51 pm »

Oye, Edu, del juego de cochecillos en plan 3D stock cars (¿Final lap?), ¿llegaste a hacer la rutina de ocultación de sprites o no pasó de un "concept art" los pantallazos que mostrásteis? Mira que el vídeo promocional en screen 3 era para mear y no echar gota...  Smiley
En línea

MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
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!