No es que quiera esos ciclos para nada, ahora mismo, simplemente no quiero consumirlos a lo tonto. En las primeras fases puede que un consumo excesivo de ciclos no importe al no apreciarse, pero en fases más avanzadas, con más información que manejar, esos algoritmos mal planteados pueden llegar a ser un quebradero de cabeza.
Eso es...Lo que digo es que la referencia de cuántos ciclos consume, debe ser en el peor caso posible.Si optimizas un caso que no es el peor posible, que te permite ahorrar ciclos sólo en determinadas circunstancias, no te va a valer de mucho.
En cuanto al timing, por lo que comentas, me imagino que solo se trata de que todo fluya en más o menos el mismo tiempo en cada bucle del juego pero con las pequeñas diferencias que pueden surgir para que de la sensación de fluidez. Obviamente no puede tardar x en un dibujado y 1,5x en el siguiente, todo tiene que estar dentro de unos patrones.
Supongo que sabes los problemas que da "que te adelante" el raster mientras estás dibujando en pantalla...Media pantalla se queda en un frame actualizado, mientras la otra mitad muestra un frame antiguo..Lo que lleva, como minimo, al parpadeo de la pantalla o de los sprites..
Es por eso que el timing del juego normalmente esta dirigido por dónde está el raster.
Por frame, teniendo en cuenta "bad lines", tienes 18656 ciclos, dependiendo del numero de sprites, distribuidos en 312 lineas de raster.
Si quisieras llegar a pintar en cada frame (50 frames por segundo en PAL), en esos ciclos tendrías que meter completo el bucle de juego.
El pintado comenzará en una línea X de raster, y, si necesita, en el peor de los casos, de, digamos, 150 lineas de raster para finalizar, pones una interrupción en a linea 0 del raster (en realidad, no sería ahi...es solo un ejemplo).
Lo primero que podría hacer esa rutina, es poner una nueva interrupción, en la linea 151 de raster, para ejecutar las rutinas de movimiento.Que, si en el peor caso, toman 30 lineas de raster, lo primero que hace es poner una nueva interrupción, en la linea 181 de raster...
Por eso digo que, si en algunos casos, el movimiento, o las colisiones, o lo que sea, en vez de tomar 30 lineas de raster, toman 20, eso no va a cambiar que la siguiente fase comienza en la linea 181 de raster (o es muy dificil de aprovechar).
O sea, que el bucle de juego no va en un while(1), y si el juego se acelera/decelera poco, no se va a notar..En cuanto empieces a pintar fuera de sincronía con el raster, empezarán las cosas raras.
Además, seguramente usarás el raster para multiplexar sprites, cambiar modos de video, etc, lo cual aumenta la dependencia con el raster.
¿Por qué a los 15 años no me surgían tantas dudas? Si se me ocurría una forma de hacer una cosa y funcionaba pasaba a la siguiente y tan contento?
Aqui tienes toda, toda la razon del mundo. Con 15 años,sabías lo que sabías, así que pasaba uno a la acción de cabeza, y listo...En cuanto tienes muchisima más información, has pasado por muchos proyectos...Has pasado de la mentalidad de "ir al grano", a la mentalidad de "y si luego quisiera hacer esto?" que te permite la tecnología moderna...
Antes, ibas al grano, porque era lo que sabías. Ahora, si hiciera uno exactamente lo mismo, tendría un montón de conocimientos en la cabeza gritando "Pero qué chapuza estás haciendo???"
Y esto lleva a una reflexión que me parece interesante...Niños de 19 y 20 años, en los 80, con el conocimiento justo, sacaban juegos en 4 meses, programando directamente sobre la máquina..Y, encima, iban aprendiendo nuevas cosas, haciendo cada vez mejores juegos.
Ahora nos podemos llevar años sólo mirando tutoriales, videos, e historias, pero seguir paralizados y no acabar de sacar 1 juego.
Yo creo que hay dos alternativas: o sacar un juego, de cabeza, con lo que uno sepa, sin preocuparse de nada más, sólo de terminarlo...O ponerse a informarse de todo, leerlo todo, repensarlo todo, optimizar y depurar cada cosita,esperando algún día hacer el "megajuego"...
En la comunidad creo que hay de ambos tipos de personas..Pero creo que es importante decidir en cual de las dos opciones se mete uno, para evitar frustrarse, que es lo que hay que evitar a toda costa! :-)