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
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