Título: Reset y a reiniciar todo Publicado por: Darth_Fistro en 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 :P 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 ;) Título: Re: Reset y a reiniciar todo Publicado por: pitpan en 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. Título: Re: Reset y a reiniciar todo Publicado por: Darth_Fistro en 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 :D Muy buena la idea de los metatiles con transparencias ;)
Título: Re: Reset y a reiniciar todo Publicado por: Dioniso en 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. ??? Título: Re: Reset y a reiniciar todo Publicado por: pitpan en 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 ;) - 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 :) - ***** ******* - 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. Título: Re: Reset y a reiniciar todo Publicado por: Darth_Fistro en 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... :)
|