Página 1 de 4

Evitar que el prota coja el color del fondo y Scripts

Publicado: Jue, 19 Jun 2014, 12:03
por Gocho
¿Como cambio el modo del color clash en la churrera?

Ahora mismo el prota coge el color del fondo por el que pasa. Y yo quiero que lo haga al revés. Que el fondo coja el color blanco del prota, para que se vea mejor.

No he visto nada en el config.h asi que imagino que tendré que cambiar algo en el engine.h

Re: Evitar que el prota coja el color del fondo

Publicado: Jue, 19 Jun 2014, 13:03
por D_Skywalk
En asylum lo que hice fue cambiar el color del tile (y luego lo recuperaba cuando dejabas las setas).

Lo tienes es el src pero básicamente es la función de pintar tiles (esta que está en printer) modificada para cambiar el color de su tile :)

Código: Seleccionar todo

void draw_coloured_tile (unsigned char x, unsigned char y, unsigned char t) {
   unsigned char *pointer;
   unsigned char xx, yy;
   t = 64 + (t << 2);
   pointer = (unsigned char *) &tileset [2048 + t];
   sp_PrintAtInv (y, x, pointer [0], t);
   sp_PrintAtInv (y, x + 1, pointer [1], t + 1);
   sp_PrintAtInv (y + 1, x, pointer [2], t + 2);
   sp_PrintAtInv (y + 1, x + 1, pointer [3], t + 3);   
}


(usa pointer para asignar el color y desde extern llamas y repintas)

Un saludo!

Re: Evitar que el prota coja el color del fondo

Publicado: Jue, 19 Jun 2014, 13:34
por Gocho
Había olvidado activarlo en el Config.h

Voy sin memoria hasta comprimiendo las pantallas de Titulo y demás XD

Re: Evitar que el prota coja el color del fondo

Publicado: Jue, 19 Jun 2014, 14:49
por D_Skywalk
Gocho escribió:Había olvidado activarlo en el Config.h

Voy sin memoria hasta comprimiendo las pantallas de Titulo y demás XD

pilla el printer optimizao de Justin.
Cambia el GAMEOVER y quita los bordes usando esa función que ganas un bastante.
pasa los for a do while (mira justin)...

había más cosas donde recortar, pero eso es lo que recuerdo ahora mismo XD

Re: Evitar que el prota coja el color del fondo

Publicado: Jue, 19 Jun 2014, 15:29
por na_th_an
Es posible hacer que los sprites tiñan el fondo de un color fijo en splib2, pero queda muy mal. Hay que tener en cuenta que siempre se tiñen 9 caracteres aunque el sprite esté perfectamente alineado, por eso siempre prefiero hacer que los sprites no tiñan el fondo. Además, es más lento.

De todos modos, es tan fácil como modificar la creación de los sprites en mainloop.h. Hay varios grupos de lineas para definir los sprites que se emplean (prota, enemigos, disparos) que se parecen a esto:

Código: Seleccionar todo

   sp_player = sp_CreateSpr (sp_OR_SPRITE, 3, sprite_2_a, 1, TRANSPARENT);
   sp_AddColSpr (sp_player, sprite_2_b, TRANSPARENT);
   sp_AddColSpr (sp_player, sprite_2_c, TRANSPARENT);


El parámetro "TRANSPARENT" es el que hace que el sprite tome el color de fondo, pero podemos cambiarlo por un atributo. Escribiendo ahí un atributo (por ejemplo "4" para INK verde, PAPER negro) los sprites tendrán color propio.

Pero ya te digo que queda bastante mal.

Re: Evitar que el prota coja el color del fondo

Publicado: Jue, 19 Jun 2014, 16:21
por Gocho
En dicho caso lo omitiré. Ya ando escaso de tiempo buscando una forma decente de pintar y borrar strings y scriptando todo antes de mañana.

Re: Evitar que el prota coja el color del fondo

Publicado: Jue, 19 Jun 2014, 16:26
por D_Skywalk
había entendido, que querías cambiar el color de los tiles, con script o algo...
sorry
enga ánimo! :cheer:

Re: Evitar que el prota coja el color del fondo

Publicado: Jue, 19 Jun 2014, 16:31
por na_th_an
Para pintar strings puedes pillar el extern.h que lleva el Dogmole de Jarlaxe... Para borrarlos lo más práctico es hacer un REENTER con lo que se redibuja la pantalla completa, pero a veces puede quedar mal.

Re: Evitar que el prota coja el color del fondo

Publicado: Jue, 19 Jun 2014, 16:37
por antoniovillena
Os dejo una rutina adaptada de FASE por si queréis pintar strings con ella, es para pintar con la fuente del ZX Spectrum.

Código: Seleccionar todo

void __CALLEE__ PrintStr ( char *string, unsigned char x, unsigned char y ){
    #asm
        pop     af
        pop     de
        pop     bc
        pop     ix
        push    af
        ld      a, e
        and     $18
        or      $40
        ld      h, a
        ld      a, e
        rrca
        rrca
        rrca
        and     $e0
        add     a, c
        ld      l, a
print:  ex      de, hl
        ld      a, (ix)
        inc     ix
        add     a, a
        ret     z
        ld      l, a
        ld      h, $0f
        add     hl, hl
        add     hl, hl
        ld      b, 4
print1: ld      a, (hl)
        ld      (de), a
        inc     l
        inc     d
        ld      a, (hl)
        ld      (de), a
        inc     l
        inc     d
        djnz    print1
        ld      hl, $f801
        add     hl, de
        jr      print
    #endasm
}

Re: Evitar que el prota coja el color del fondo

Publicado: Jue, 19 Jun 2014, 18:16
por Gocho
Lo del Dogmole es igual que el de Ramiro, ¿no? Es el que estaba tuneando además del prnt_str que tenéis en la churrera.
Funcionan ambos bien. El problema lo tengo con el borrado :?

Seguramente no esté usando bien el script. Intento pintar cuando entra en la pantalla y lo que hace es quedarse en el espera_activa () y no entra en la pantalla hasta que pulso un botón.

Voy a ver si lo cambio a pintar cuando pise un tile con un set_fire_zone y demás... ¿Puedo encadenar los IFs para hacer ELSES?

Ej:

Código: Seleccionar todo

PRESS_FIRE AT SCREEN 7
   IF PLAYER_TOUCHES (7,5)
    IF FLAG 3 = 0
   THEN
      SET FLAG 3 = 1
               # Bienvenido
                EXTERN 4
                REDRAW
   END
   IF FLAG 3 = 1
   THEN
               # No tengo nada mas que decirte
                EXTERN 2
                REDRAW
   END
END