Página 1 de 10

Z88DK (curso Radastan) - Dudas Varias

Publicado: Mié, 14 May 2014, 13:06
por Hark0
Buenas!

Estoy usando printf() para sacarme por pantalla las variables...

Tengo una rutina que cuando pulso D, me pinta en pantalla con printf las variables que me interesa...

AHora bien, cada print lo hace en la posición contigua del texto...

Estoy usando \n para "saltar" a la línea siguiente...



Ahora bien... ¿Como borro la "consola" o "Modo terminal"?

Gracias 1000

Re: Z88DK - Borrar "consola" - Printf

Publicado: Mié, 14 May 2014, 13:34
por na_th_an
Ni idea. Podrías borrar el área de bitmap de la pantalla con un poco de ensamblador.

$this->bbcode_second_pass_code('', '#asm
ld hl, 16384
ld (hl), 0
ld de, 16385
ld bc, 6143
ldir ; ZASCA!
#endasm')

Luego creo que puedes ponerte arriba del todo de nuevo imprimiendo el código de AT y la posición. Supongo que imprimiendo \x16\x00\x00 te vale, pero no recuerdo bien.

Te recomiendo que pases de printf y te hagas el tuyo propio... Si no quieres ingentes cantidades de código comiéndose tu binario con mil características que realmente no necesitas.

Re: Z88DK - Borrar "consola" - Printf

Publicado: Mié, 14 May 2014, 13:49
por Hark0
Es a modo de debug solamente... pruebo ese asm...

;)

Re: Z88DK - Borrar "consola" - Printf

Publicado: Mié, 14 May 2014, 18:53
por Hark0
He añadido la función "zasca"... al motorzx.h del amigo Radastan :mrgreen:

$this->bbcode_second_pass_code('', 'void zasca (void)
{
#asm
ld hl, 16384
ld (hl), 0
ld de, 16385
ld bc, 6143
ldir ; ZASCA!
#endasm
}')

Hace un bonito CLS, pero no restaura la posición del cursor...

Nada, no te preocupes, es modo "debug"... solo para mis ojos... ;)

Re: Z88DK - Borrar "consola" - Printf

Publicado: Mié, 14 May 2014, 19:30
por na_th_an
Claro, eso sólo rellena de ceros todo el bitmap. Para volver arriba puedes probar a hacer un printf posterior con el código de at y la posición ,0,0 tal y como te puse en el anterior mensaje.

Enviado desde mi LT18i usando Tapatalk 2

Re: Z88DK - Borrar "consola" - Printf

Publicado: Jue, 15 May 2014, 07:46
por Hark0
Lo pruebo! ;)

Re: Z88DK - Borrar "consola" - Printf

Publicado: Jue, 15 May 2014, 08:00
por na_th_an
También puedes usar la rutina de la ROM, que vuelve el cursor arriba del todo. Probablemente la E/S de consola de z88dk emplée las variables del sistema para saber dónde imprimir, con lo que te valdría con un simple:

$this->bbcode_second_pass_code('', '#asm
call 3435
#endasm')

Para borrar la pantalla y volver arriba del todo. Pero claro, para usarlo necesitas la ROM del Spectrum. No podrás poner tu juego en un cartucho o usarlo en clones misteriosos, pero eso creo que es lo de menos.

Re: Z88DK - Borrar "consola" - Printf

Publicado: Vie, 16 May 2014, 10:07
por Hark0
Pues no resetea la consola!

Curioso...

Re: Z88DK - Borrar "consola" - Printf

Publicado: Vie, 16 May 2014, 10:18
por na_th_an
Pregunta en z88dk.org, entonces. La verdad es que no tengo ni idea de cómo funciona la consola. Quizás en la wiki... http://www.z88dk.org/wiki/doku.php?id=library:stdio

¿Has probado lo que te dije al principio del AT 0,0?

Re: Z88DK - Borrar "consola" - Printf

Publicado: Vie, 16 May 2014, 10:55
por Hark0
Si y tampoco.... pero como te digo no te preocupes...

Es solo debug/test... amén que añadir "printf" y cadenas está engordando la cinta que da gusto... :jias:


PD tengo algunas dudas más sobre Z88DK (esta vez sobre carga de mapas)... ¿hago un hilo nuevo o sigo aqui y renombro el hilo? :P

Por cierto, añado la cinta por si alguien la quiere catar:

https://dl.dropboxusercontent.com/u/556 ... _blog3.tap

Teclas:
Enter -> jugar
qaop -> mover
espacio -> accion
d -> debug
0 -> menu

Entrar a jugar, salir al menu y volver a entrar NO resetea nada del mapa :P