Karoshi MSX Community

Desarrollo MSX => Desarrollo (Español/Spanish) => Mensaje iniciado por: LocoMJ en 25 de Abril de 2011, 10:18:14 pm



Título: Dudas de novatoide!
Publicado por: LocoMJ en 25 de Abril de 2011, 10:18:14 pm
A las buenas noches!

Con motivo de unas camisetas de IOTZM, el señor Viejo Archivero, hizo en mi Pc un "fastproject" con lo básico para explicarme el ABC de este mundillo. El menda, que es un desastre, lo fue dejando parado hasta hoy   :griel:

Y ahora que se como tratar de forma básica una colisión, me gustaría poder añadir un SCORE a la pantalla principal. (Si la duda sé que es de novato total  ::) )

Mi intención es hacer un juego super sencillo en el que van apareciendo unas llaves por la pantalla y "potatoboy" debe ser capaz de conseguir todas antes de que se acabe el tiempo. Por supuesto que todo está en pañales y en la pantalla tendrá sus paredes a modo de laberinto. Seguramente cuando esté acabado no será ni parecido a lo que es este primer pantallazo.

(http://lamaisondeleiaylocomj.homelinux.com/cole/potatoboy.jpg)

Muchas zankius, en especial al señor Viejo Archivero  :)



Título: Re: Dudas de novatoide!
Publicado por: pitpan en 26 de Abril de 2011, 07:49:44 am
Para programar un marcador lo suyo es aprender como funcionan los BCD (binary coded decimal). Hace algún tiempo programé un documento al respecto, que debería estar en algún lugar, pero no he sido capaz de encontrarlo. Si alguien tiene una versión off-line, que la añada aquí sin miedo.


Título: Re: Dudas de novatoide!
Publicado por: LocoMJ en 26 de Abril de 2011, 08:51:31 am
Sin problema Robsy :)
El BCD sé como funciona ya que he estudiado electronica asi que esta tarde toca darle caña :)


Título: Re: Dudas de novatoide!
Publicado por: pitpan en 26 de Abril de 2011, 09:06:06 am
Pues si ya lo tienes claro, sólo darte un par de pistas:

- La instrucción para "corregir" la suma o resta de BCDs es DAA, pero no funciona con las operaciones INC/DEC
- El Z80 emplea BCD empaquetado, ocupando cada dígito decimal un nibble (4 bits)

Por lo tanto, para un contador de doble dígito, lo que harías sería algo así:

Código:
; leer valor
ld hl,[CONTADOR]
ld a,[hl]

; sumar uno
add a,01h
daa

; guardar valor
ld [hl],a

; escribir en pantalla
ld b,a
rrca
rrca
rrca
rrca
and 0Fh
add 30h ; el código ASCII del carácter '0'
ld hl,NAMTBL+COLUMNA*32+FILA
call WRTVRM

; siguiente dígito
inc hl
ld a,b
and 0Fh
add 30h
call WRTVRM

Es un ejemplo sencillo y guarro, pero creo que los conceptos se entienden bien. A partir de aquí, todo tuyo.


Título: Re: Dudas de novatoide!
Publicado por: LocoMJ en 26 de Abril de 2011, 10:32:11 am
Muchas gracias Robsy!

El juego esta hecho con tiles. Hace falta dibujar los numeros con el polska?


Título: Re: Dudas de novatoide!
Publicado por: pitpan en 26 de Abril de 2011, 10:44:19 am
Evidentemente, tienes que tener una fuente cargada en VRAM en el banco que vayas a utilizar. En el código que te he pasado, se asume que los caracteres 48 a 57 (30h a 39h) incluyen los gráficos de los dígitos 0 al 9. Puedes dibujarlos en Polka o en lo que tú quieras, o copiar directamente los de la BIOS del MSX, que es la opción fea pero barata.


Título: Re: Dudas de novatoide!
Publicado por: pitpan en 26 de Abril de 2011, 11:02:34 am
Por cierto, que si te paseas por la parte de juegos opensource de Karoshi encontrarás algunas implementaciones de BCD, así como fuentes listas para emplear. Por ejemplo, échale un vistazo al Classic MineSweeper (http://karoshi.auic.es/index.php?topic=833.0).


Título: Re: Dudas de novatoide!
Publicado por: Jon_Cortazar en 26 de Abril de 2011, 11:15:26 am
Jejeje, ya me acuerdo Loco! ;-), lo hicimos en un momentín, si, todo basado en caracteres: movimiento del personaje con las teclas y colisión con las tiles del escenario. Me alegro de que lo retomes y que se convierta en un mini-proyecto: al final, es importante ser capaz de terminar un juego completo, con su intro, gameplay, pantalla de game over... ¡Ánimo! :laugh:


Título: Re: Dudas de novatoide!
Publicado por: LocoMJ en 26 de Abril de 2011, 02:04:38 pm
Esta noche me pongo con lo que Robsy ha comentado, ademas tengo que mirar la forma de hacer una cuenta de tiempo atras. Con eso ya habria algo jugable, en plan, consigue todas las llaves en X segundos.

A la tarde me toca convencer a la chavalilla para que se haga cargo de la pantalla de inicio y para la de game over que esta visto que controla el tema de los hama beads ( grande ese Ned Friks que se curró ;) )


Título: Re: Dudas de novatoide!
Publicado por: LocoMJ en 27 de Abril de 2011, 11:39:16 pm
Bueno, tengo un marcador con tiles y consigo que se mueva con el codigo de robsy con algún pequeño cambio, aunque va a toda pastilla.

Mañana toca seguir dandole caña y a ver si hago que se mueva cada X ciclos de reloj que lo tengo a medio hacer pero no se muestra ni leches en pantalla :( , que ya es hora de ir a planchar la oreja y mañana todavía es jueves.


Nas noches hijos de Cyndi Lauper!  :cindylauper:


Título: Re: Dudas de novatoide!
Publicado por: pitpan en 28 de Abril de 2011, 09:21:34 am
Para hacerlo ir "más lento", basta con que añadas un contador de refrescos. Así puedes ralentizar el movimiento. Es decir, añade HALT con un contador y que se salga del bucle si se deja de pulsar la tecla del cursor o se indica otra dirección.