¿Algun entendido que sepa el porque de esto?

Todo sobre la creación, diseño y programación de nuevo software para
nuestro Spectrum

Moderador: Sir Cilve Sinclair

Responder
Avatar de Usuario
Blackhero
Herbert
Mensajes: 59
Registrado: Vie Abr 04, 2014 11:36 am

¿Algun entendido que sepa el porque de esto?

Mensaje por Blackhero » Jue May 22, 2014 5:42 pm

¡Que tal!, muy buenas a todos/as :wink: , pues aqui vuelvo a la carga con un problema muy curioso que se presentado despues de teclear un listado, en este caso se trata de "Nivel 5", un listado bastante justito en extension, la cosa es que ya le he dado mil vueltas, llegandolo a comparar, con el de el juego que venia ya grabado e incluido con el libro, haciendole break, para verlo, y no he conseguido encontrar, ni una coma fuera de lugar, el problema que tiene, es , que mi "personaje" aparece en la pantalla y tiene que subir y bajar unas escaleras, para ir moviendose, en diferentes niveles y asi poner trampas a los "malos", para que no lleguen a subir arriba, pues bien, mi personaje y todo, se mueve perfectamente, pero cuando paso con el, por delante de alguna escalera, o me muevo por ella, esta adquiere el mismo color de mi personaje (Cyan), se queda pintada-tintada, no recupera su color, la escalera en principio es Amarilla, pues, al quedarse las escaleras pintadas del mismo color del personaje, este ya no puede subir ni bajar por ellas, se quedan anuladas, es como si "chocaran", los colores, alguien tiene idea de que puede estar ocurriendo. He llegado a identificar las lineas que definen:
-el color del muñeco cuando aparece
-el color del muñeco ya en movimiento
-y el color de las escaleras,
pero no se donde toca el tema de la mezcla de colores. Al cambiar el valor del color del personaje en movimiento por el amarillo, siendo el mismo que el de las escaleras, no me da este problema :shock: , pero otra cualquier combinacion de esos valores o hacen lo mismo o incluso da error :roll: (como es natural diran algunos ).
¿Como lo veis?, seguro que alguien que entienda ya sabra de que se puede tratar, adjunto un enlace con un .z.80 del listado listo para ejecutar con "Run", haber si alguien que tenga tiempo y quiera resolverme el mistero, me hecha una mano. Si hace falta tambien puedo enlazar el original de la cinta por si quereis comparar ambos listados.

http://ge.tt/61kkSih1/v/0


Como siempre ¡muchisimas gracias a todos/as de antemano y un gran saludo!, poco a poco con vuestra ayuda voy, aprendiendo cada dia mas :mrgreen: , Atentamente.

zup
Freddy Hardest
Mensajes: 666
Registrado: Vie Ago 15, 2008 2:43 pm

Re: ¿Algun entendido que sepa el porque de esto?

Mensaje por zup » Jue May 22, 2014 6:51 pm

Resumiendo: porque el programador no fue demasiado cuidadoso. Sin ver más el programa , poco se puede decir.

Pregunta... ¿qué colores se utilizan cuando sacas algo por pantalla?

Respuesta: los colores por defecto o los colores que lleve la sentencia PRINT.

Código: Seleccionar todo

10 PAPER 0: INK 7: PRINT 1
20 PRINT INK 6; 2
30 PRINT 3


Bonito e inútil programa. Si lo tecleas en tu Spectrum, verás que imprime:
  • 1 en blanco sobre negro.
  • 2 en amarillo sobre negro.
  • 3 en blanco sobre negro.

La línea 10 define como colores por defecto fondo negro y tinta blanca (PAPER e INK están fuera del PRINT) y después imprime el 1.
En la línea 20, se le dice al Spectrum que tiene que imprimir en amarillo. ¿El fondo? Pues el que tenía por defecto.
En la línea 30, no se le indica ningún color. Como tenía definidos fondo negro y tinta blanca, pues imprime eso.

Las posibilidades que se me ocurren para ese programa es que el programador olvidó un INK 6 al dibujar las escaleras, o puso el INK 5 del personaje fuera del PRINT y todo lo que se imprime después del personaje sale en azul cielo.
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start...

Avatar de Usuario
cybernoid
rst 0
Mensajes: 18
Registrado: Jue May 06, 2010 12:55 pm

Re: ¿Algun entendido que sepa el porque de esto?

Mensaje por cybernoid » Jue May 22, 2014 9:47 pm

Hola,

Linea 325 el poke correcto es:

poke 22528+y*32+x,n

tu tienes poke 2258+y*32+x,n probablemente un error de transcripción.



Saludos,

Avatar de Usuario
Blackhero
Herbert
Mensajes: 59
Registrado: Vie Abr 04, 2014 11:36 am

Re: ¿Algun entendido que sepa el porque de esto?

Mensaje por Blackhero » Vie May 23, 2014 3:38 am

:) , No tengo palabras Cybernoid..., ¿pero como?..., Efectivamente, fallo mio al transcribir, el listado estaba correcto, pero no mi transcripcion :roll: , bien, ahora ya salta a vista, pero :o ¿sabes cuantas veces he repasado el listado? :cry: , ademas con dos emuladores abiertos a la vez mostrandome el listado de esta y de la version correcta, :cry: ¡¡NO LO HE VISTO!! :lol: , y usted caballero a la primera :wink: , desde luego no sabes cuanto te lo agradezco Cybernoid, ya que estas cosillas no te dejan de dar vueltas a la cabeza hasta hallar la solucion, buff, vaya peso me habeis quitado, ya puedo continuar con mi aprendizaje, ¿como lo has localizado?, ¿estos son pokes que se suelen utilizar, o poseias el listado del juego? :D ¡que caña!, claro ustedes que entienden mas, a lo mejor veis mas obvio el problema y donde hay que buscar, yo acabo de empezar y me cuesta un poco, tengo ya 34 tacos, y la cabeza no va igual :lol: :roll: .
La verdad es que flipo con lo rapido que me solucionais las dudas, agradezco de verdad que siempre haya alguien dispuesto a ayudarte, tambien quiero agreadecerte Zup tu respuesta, lo unico que es un tanto tecnica, mas o menos entiendo que me explicas de que forma se comporta el color en pantalla etc, lo unico que al ser novato pues no me he enterado de mucho, de todas formas ¡¡muchisimas gracias por dedicarme un tiempo!!, seguro que lo que me has dicho tarde o temprano me va a valer :wink: , cuando termine de pillarlo :lol:. Sabia que que me ibais a solucionar la duda, de nuevo ¡¡MUCHAS GRACIAS!!. Saludos.

Avatar de Usuario
cybernoid
rst 0
Mensajes: 18
Registrado: Jue May 06, 2010 12:55 pm

Re: ¿Algun entendido que sepa el porque de esto?

Mensaje por cybernoid » Vie May 23, 2014 8:39 am

Lo he pillado rápido por que es un listado pequeño.

Yo directamente he ido a buscar la forma mas sencilla de solucionar el problema, he buscado donde leía el color (la linea n=attr(y,x)) he visto que estaba correcta, así que he ido a buscar donde volvía a poner el color al atributo y ahí ha sido donde he localizado el error (el famoso poke), la dirección de la memoria de vídeo me la se de memoria (valga la redundancia) 16384 y sabiendo que los atributos empiezan justo despues y que el spectrum tiene 32x24 caracteres pues 32x24=768 caracteres multiplicado por 8 bytes por caracter = 6144 bytes + 16384 (inicio del vídeo) = 22528 que es donde estaba el error.


Hay cosas que aprendes de pequeño y ya no se olvidan :P Sinclair Basic es una de ellas :D

Saludos!

jzx
Nonamed
Mensajes: 1047
Registrado: Lun Feb 08, 2010 8:19 pm

Re: ¿Algun entendido que sepa el porque de esto?

Mensaje por jzx » Vie May 23, 2014 2:48 pm

Cuidadin con equivocarse en los numeros de los pokes!. En este caso no ha pasado nada porque iba a la rom, pero si cae en las variables de sistema o en donde se almacena el basic, o stack, o .... puede pasar de todo y volverte loco.


zup escribió:Respuesta: los colores por defecto o los colores que lleve la sentencia PRINT.


Todavia hay mas posibilidades:

-pokear una variable de sistema que determina los colores, con lo que se pueden cambiar tambien los colores de las dos lineas bajas.

-codigos de color, que se pueden poner con chr$ o con las teclas de los numeros en modo "E". Esto es comodo cuando se escribe el programa, pero en impresora no se ve.

Avatar de Usuario
Blackhero
Herbert
Mensajes: 59
Registrado: Vie Abr 04, 2014 11:36 am

Re: ¿Algun entendido que sepa el porque de esto?

Mensaje por Blackhero » Sab May 24, 2014 3:31 am

¡Vaya!, si que vine al lugar indicado, tomo nota ( o trato de tomarla mas bien :D ), desde luego si que sabeis del tema por aqui :wink: , seguramente plantee otro reto en breve, cuando me de por teclear otro, a ver que pasa :mrgreen: ¡Saludos!, y siempre gracias. :)

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 12 invitados