Saludos desde una lejana galaxia! XD

Chit chat general. Habla con los MojonTwins y con los amigos de los MojonTwins. Reza a Vah-ka. Delinque. Aviso: está PROHIBIDO tirarse peos fuerte. Si les cortas el pescuezo, vale.

Moderador: na_th_an

Avatar de Usuario
D_Skywalk
Mensajes: 352
Registrado: Mar, 01 Oct 2013, 13:36

Re: Saludos desde una lejana galaxia! XD

Mensajepor D_Skywalk » Vie, 11 Oct 2013, 10:39

A ver hay cosas muy sencillas como por ejemplo en printer:
$this->bbcode_second_pass_code('', '//optimized print_str
void print_str (unsigned char x, unsigned char y, unsigned char c, unsigned char *s, unsigned char border) {
while (*s) {
if(border){
sp_PrintAtInv (y - 1, x, c, 0); //SPACE CHR is 0 (32 - 32)
sp_PrintAtInv (y + 1, x, c, 0);
}
sp_PrintAtInv (y, x ++, c, (*s ++) - 32);
}
}
')
De esta forma no hay que hacer algo como:
$this->bbcode_second_pass_code('', '
print_str (10, 11, 79, " ");
print_str (10, 12, 79, " GAME OVER! ");
print_str (10, 13, 79, " ");
')
Y se queda en un sencillo:
$this->bbcode_second_pass_code('', '
print_str (10, 12, 79, " GAME OVER! ", TRUE);
')
Que como tengas mas de un texto te ahorras unos 100bytes por frase ^^_

Un Saludo!
David Skywalker
Weblog: http://david.dantoine.org
Avatar de Usuario
na_th_an
Mensajes: 26413
Registrado: Vie, 09 Ene 2009, 12:18

Re: Saludos desde una lejana galaxia! XD

Mensajepor na_th_an » Vie, 11 Oct 2013, 10:40

Vaya, eso mola :)
Como diría Rorshach: "Urm..."
Avatar de Usuario
D_Skywalk
Mensajes: 352
Registrado: Mar, 01 Oct 2013, 13:36

Re: Saludos desde una lejana galaxia! XD

Mensajepor D_Skywalk » Vie, 11 Oct 2013, 11:53

:mrgreen: :mrgreen:

¿Tienes idea de por que esta optimización no funcionaba?
$this->bbcode_second_pass_code('', '
void game_over (void) {
...
gpit = 4;
while (gpit--)
peta_el_beeper (7);
peta_el_beeper (9);

...
}
')

Empieza a dar vueltas sin parar, aunque sea unsigned llega a 0... :?

Luego hay un bug en el sistema de scripts si la pantalla es 0, se ejecutan todos los scripts. Yo añadí esto para que no la liara XD
$this->bbcode_second_pass_code('', ' if(n_pant) { // sky - bug si pantalla es 0, se ejecutan todos los scripts - reportar
script = e_scripts [n_pant];
run_script ();
}
')
Ej:
$this->bbcode_second_pass_code('', '
ENTERING SCREEN 13 ; Pantalla final, Win Game condition!
IF TRUE
THEN
WIN GAME
END
END
')

También añadí un parámetro de configuración mas que tienes encima, no siempre necesitas ejecutar en los juegos los scripts generales, pero vamos esto es una optimización que hice yo por que si no no me cabía, quizás sea ya demasiado...

Luego poder hacer frames estáticos, aunque quizás tambien sea complicar un poco...
$this->bbcode_second_pass_code('', ' // sprites with greater count are static
if( en_an [gpit].count <= 4 ) {
// Animate
en_an [gpit].count ++;
if (en_an [gpit].count == 4) {
en_an [gpit].count = 0;
en_an [gpit].frame = !en_an [gpit].frame;
en_an [gpit].next_frame = enem_frames [en_an [gpit].base_frame + en_an [gpit].frame];
}
}
')
Cualquier cosa con el count mayor de 4 se considera ya estático (yo la tengo inicializada a 0xFF para la plataforma XD)

De memoria esto es lo que recuerdo XD

Un Saludo! :corchoneta:
David Skywalker
Weblog: http://david.dantoine.org
Avatar de Usuario
na_th_an
Mensajes: 26413
Registrado: Vie, 09 Ene 2009, 12:18

Re: Saludos desde una lejana galaxia! XD

Mensajepor na_th_an » Vie, 11 Oct 2013, 12:05

Estoy super liao, te contesto rápido y mal.

$this->bbcode_second_pass_quote('D_Skywalk', ':')mrgreen: :mrgreen:

¿Tienes idea de por que esta optimización no funcionaba?
$this->bbcode_second_pass_code('', '
void game_over (void) {
...
gpit = 4;
while (gpit--)
peta_el_beeper (7);
peta_el_beeper (9);

...
}
')

Empieza a dar vueltas sin parar, aunque sea unsigned llega a 0... :?


Puede ser por cualquier paranoia del compilador. Sé que tiene algunos problemas. Prueba --gpit a ver, no vaya a ser por paranoias de orden de evaluación y precedencia.

$this->bbcode_second_pass_quote('D_Skywalk', '
')Luego hay un bug en el sistema de scripts si la pantalla es 0, se ejecutan todos los scripts. Yo añadí esto para que no la liara XD
$this->bbcode_second_pass_code('', ' if(n_pant) { // sky - bug si pantalla es 0, se ejecutan todos los scripts - reportar
script = e_scripts [n_pant];
run_script ();
}
')
Ej:
$this->bbcode_second_pass_code('', '
ENTERING SCREEN 13 ; Pantalla final, Win Game condition!
IF TRUE
THEN
WIN GAME
END
END
')


Esto lo tengo que mirar más despacio, porque no tiene sentido que ejecute todos los scripts (sobre tengo juegos en los que pasan cosas en la pantalla 0 y no he visto ningún problema). ¿Será un efecto colateral? Tengo que mirar eso porque no sé cuál puede ser el problema. Se ejecuta el script que diga el puntero metido en un array, y ninguno más. Voy a comprobar bien las banderas de los bucles.

También voy a mirar tu msc.h, porque a lo mejor es una paranoia del compilador de scripts.

$this->bbcode_second_pass_quote('D_Skywalk', 'T')ambién añadí un parámetro de configuración mas que tienes encima, no siempre necesitas ejecutar en los juegos los scripts generales, pero vamos esto es una optimización que hice yo por que si no no me cabía, quizás sea ya demasiado...


Bueno, ahorrar siempre está bien :)

$this->bbcode_second_pass_quote('D_Skywalk', 'L')uego poder hacer frames estáticos, aunque quizás tambien sea complicar un poco...
$this->bbcode_second_pass_code('', ' // sprites with greater count are static
if( en_an [gpit].count <= 4 ) {
// Animate
en_an [gpit].count ++;
if (en_an [gpit].count == 4) {
en_an [gpit].count = 0;
en_an [gpit].frame = !en_an [gpit].frame;
en_an [gpit].next_frame = enem_frames [en_an [gpit].base_frame + en_an [gpit].frame];
}
}
')
Cualquier cosa con el count mayor de 4 se considera ya estático (yo la tengo inicializada a 0xFF para la plataforma XD)

De memoria esto es lo que recuerdo XD

Un Saludo! :corchoneta:


Esto es que veo que requiere demasiada customización y embrolla aún más si cabe el tema de la gestión de sprites (que es algo que tengo que BORRAR y REESCRIBIR, pero que no he hecho aún porque soy el tonto de la compatibilidad hacia atrás). Quizá documentarlo y proponerlo como "modificación sencilla" estaría bien.

Luego te digo más, que ando liao.
Como diría Rorshach: "Urm..."