Mensajepor na_th_an » Lun, 18 Nov 2013, 08:35
Si va a tener un componente aleatorio, deberías dar un valor a la semilla inicial del generador de números aleatorios que fuese diferente cada vez, si no el juego sale igual siempre. Si te fijas, en draw_scr_background se establece la semilla al número de pantalla para conseguir que el tile 19, que sale aleatoriamente, siempre dibuje las mismas estrellas en cada pantalla. Tendrías que quitarlo de ahí y colocar uno al principio del juego, antes de desactivar las interrupciones, que estableciese la semilla de números aleatorios con el valor del byte menos significativo de la variable del sistema "FRAMES", que por lo general siempre es diferente cuando se termina de cargar el juego (el Spectrum mide el número de frames que han pasado desde que se encendió usando tres bytes, el menos significativo es el que más cambia).
Llama a srand con el valor de la posición de memoria 23672 y lo tienes. Pero hazlo antes del primer "DI" del juego, en mainloop.h, porque en cuanto se desactivan las interrupciones dejará de actualizarse.
$this->bbcode_second_pass_code('', 'srand (*((unsigned char *) (23672))); // Creo :*) ')
Una vez hagas esto, no vuelvas a llamar a srand jamás (quítalo de draw_scr_background), y así cada partida será diferente.
Como diría Rorshach: "Urm..."