Un nuevo juego para Sinclair QL - OSUSQ

Subforo oficial del Sinclair QL: realiza aquí las consultas relativas a tu QL.

Moderador: Sir Cilve Sinclair

afx
Sabreman
Mensajes: 396
Registrado: Dom Feb 24, 2008 10:56 pm

Re: Un nuevo juego para Sinclair QL - OSUSQ

Mensaje por afx » Mié Abr 02, 2008 7:01 pm

badaman escribió:Bueno, pues después de darle unas cuantas vueltas al diseño, creo que ya tengo una propuesta que hacer.
¡¡ME GUSTA!! :D , ... la verdad es que mejora muchísimo el aspecto. Los paneles están más equilibrados, y el fondo blanco del tablero le da un toque más elegante. El dragón también ha encajado muy bien.

badaman escribió:He intentado mover lo menos posible el panel del juego
Esto facilita mucho las cosas.

badaman escribió:Abajo he añadido un panel chiquitillo al a derecha del todo para llenar el hueco que quedaba. Ese panel aún no se como aprovecharlo, pero se puede poner por ejemplo info sobre si estamos jugando en el nivel (F)ácil o (D)ificil o en uno (C)reado por nosotros.
O podría aprovecharse para indicar el modo de ayuda elegido por el usuario números (V)alidos o (R)esto de números.

badaman escribió:Se que es mucho trabajo mover el panel central, pero a la vista de los resultados gráficos creo que es más que imprescindible.
Estaba codificado a "capón" por pereza (igual que los paneles) pero está claro que debe ser implementarlo con coordenadas relativas para que sea inmediato rodar los paneles ... (moraleja, lo barato al final sale caro :( ). El mover las cosas sólo es un poco laborioso pero lo bueno es que no hay que pensar sino sólo ponerse a reproducir tu modelo.

badaman escribió:Por último el dragón puede ser cargado con datas y pokes. Ocupa 96x48 pixels.
Esta parte si es verdad que desconozco cómo se haría.

Por cierto, ¿cómo te curraste la pantalla?, ¿con un programa de dibujo o a capón con superbasic? Si ( -por suerte para mi- :? ) lo hiciste con la segunda opción los cambios serían en un abrir y cerrar de ojos.

Bueno, pasito a pasito esto ha mejorado mucho. Entre todos es mucho mas fácil y divertido.

Gracias una vez más.

Avatar de Usuario
badaman
Sabreman
Mensajes: 499
Registrado: Mar Ene 29, 2008 10:58 am
Contactar:

Re: Un nuevo juego para Sinclair QL - OSUSQ

Mensaje por badaman » Mié Abr 02, 2008 11:10 pm

Esncantado de que te guste. Como verás he metido los menos cambios posibles e intyentando que el diseño esté en la linea de lo que tú has hecho.

afx escribió:O podría aprovecharse para indicar el modo de ayuda elegido por el usuario números (V)alidos o (R)esto de números.


Es verdad. O ambas cosas. ya que tienes dos lineas.

afx escribió:Estaba codificado a "capón" por pereza (igual que los paneles) pero está claro que debe ser implementarlo con coordenadas relativas para que sea inmediato rodar los paneles ... (moraleja, lo barato al final sale caro :( ). El mover las cosas sólo es un poco laborioso pero lo bueno es que no hay que pensar sino sólo ponerse a reproducir tu modelo.


Bueno, en cuanto decidas si lo vas a hacer compatible para TV ya no tendrás que volverlo a tocar. Así que puedes sumar 6 pixels de ancho o 10 de alto a las coordenadas que ya tengas introducidas para no tener que currartelo mucho. Lo que sí es importante es usar ventanas y dejar libre los canales 0 a 3 para el sistema u otros programas.

afx escribió:
badaman escribió:Por último el dragón puede ser cargado con datas y pokes. Ocupa 96x48 pixels.
Esta parte si es verdad que desconozco cómo se haría.


No te preocupes por eso, yo te lo preparo junto con la portada. Es tan fácil como cargar la pantalla de muestra, leer con PEEK las posiciones de memoria del dragón, salvar en DATAS esos valores y luego leer y poner con POKES esas posiciones de memoria dentro del programa.

afx escribió:Por cierto, ¿cómo te curraste la pantalla?, ¿con un programa de dibujo o a capón con superbasic? Si ( -por suerte para mi- :? ) lo hiciste con la segunda opción los cambios serían en un abrir y cerrar de ojos.


Siento decirte que Gimp fue mi ayuda. :( Pero ya verás como es poco trabajo, y luego lucirá muchísimo..

afx escribió:Bueno, pasito a pasito esto ha mejorado mucho. Entre todos es mucho mas fácil y divertido. Gracias una vez más.


Gracias a ti por aceptar de buen grado todas nuestras sugerencias y por el trabajo que estás haciendo. Ánimo que en 15 días tenemos un nuevo juego en la comuinidad.
Sinclair QL, la respuesta profesional de los 80

afx
Sabreman
Mensajes: 396
Registrado: Dom Feb 24, 2008 10:56 pm

Re: Un nuevo juego para Sinclair QL - OSUSQ

Mensaje por afx » Jue Abr 03, 2008 5:58 pm

badaman escribió:Bueno, en cuanto decidas si lo vas a hacer compatible para TV ya no tendrás que volverlo a tocar. Así que puedes sumar 6 pixels de ancho o 10 de alto a las coordenadas que ya tengas introducidas para no tener que currartelo mucho. Lo que sí es importante es usar ventanas y dejar libre los canales 0 a 3 para el sistema u otros programas.
Lo de la compatibilidad para TV aun no lo tengo muy claro. Sería muy deseable que fuera compatible con resoluciones de TV, pero no tengo una imagen mental de cómo quedaría la pantalla ya que no cabrían los paneles tal cual. Habría que renunciar a algunos de ellos y poner dos niveles de navegación. Además actualmente, teniendo los emuladores, y el número super-reducido de posibles usuarios de Ql, ¿alguien lo usará sobre una TV?. Yo supongo que los pocos usuarios que quedan del QL, a estas alturas de la película, ya todos deben tener monitor ¿no?

Sobre lo que comentas de los canales, nunca he tenido una concepción muy clara. Hasta ahora yo he intentado aplicar siempre lo contrario de lo que tu comentas, es decir, intentar no abrir otros canales que no sean los estándar, si el usuario rompe el programa con ctrl-space se quedan esos otros canales abiertos (no sé lo que es mejor). Al margen de todos eso, en este caso ¿tú qué harías?, ¿abrir un canal para cada panel o crear otro canal (que no sea de los estándar) y montar sobre él todos los paneles del juego?

badaman escribió:Gracias a ti por aceptar de buen grado todas nuestras sugerencias ...
Sobre esto creo que tu y yo opinamos lo mismo, lo divertido de esta movida es justo las colaboraciones y las críticas sanas de unos con otros. Ninguno de nosotros vivimos de esto y lo hacemos sólo por diversión o entretenimiento.

Saludos.

Avatar de Usuario
badaman
Sabreman
Mensajes: 499
Registrado: Mar Ene 29, 2008 10:58 am
Contactar:

Re: Un nuevo juego para Sinclair QL - OSUSQ

Mensaje por badaman » Jue Abr 03, 2008 10:55 pm

afx escribió:Lo de la compatibilidad para TV aun no lo tengo muy claro. Sería muy deseable que fuera compatible con resoluciones de TV, pero no tengo una imagen mental de cómo quedaría la pantalla ya que no cabrían los paneles tal cual. Habría que renunciar a algunos de ellos y poner dos niveles de navegación. Además actualmente, teniendo los emuladores, y el número super-reducido de posibles usuarios de Ql, ¿alguien lo usará sobre una TV?. Yo supongo que los pocos usuarios que quedan del QL, a estas alturas de la película, ya todos deben tener monitor ¿no?


Pues sí, he estado haciendo pruebas de diseño y la cosa pinta mejor ocupando toda la pantalla, ya que el panel de juego es muy grande.

afx escribió:Sobre lo que comentas de los canales, nunca he tenido una concepción muy clara. Hasta ahora yo he intentado aplicar siempre lo contrario de lo que tu comentas, es decir, intentar no abrir otros canales que no sean los estándar, si el usuario rompe el programa con ctrl-space se quedan esos otros canales abiertos (no sé lo que es mejor). Al margen de todos eso, en este caso ¿tú qué harías?, ¿abrir un canal para cada panel o crear otro canal (que no sea de los estándar) y montar sobre él todos los paneles del juego?


Esto que dices es muy común dado que el QL se usaba sin expansión de memoria. Cargabas un programa y cuando terminabas reseteabas el ordenador, pero lo adecuado es dejar los canales del sistema abiertos y sin cambios para, una vez sales de un programa, o cambias de tarea entre programas (cosa que antes no hacíamos) estos canales sigan estando ahí, con sus tamaños y colores originales para no liar al usuario. (YO solía hacer tambien los programas así siempre).

Abrir nuevos canales (ventanas) no solo es recomendable, sino muy necesario. Si alguna vez has maquetado HTML ya sabrás lo util que resultan las etiquetas DIV o las tablas. Una vez defines una ventana con su canal asociado todo lo que dibujes dentro será relativo a esa ventana, y si cambias la posición de la ventana todo lo de dentro de dicha ventana se va con ella sin modificaciones. un ejemplo.

Si tienes en una ventana el panel de ayuda de la izquierda y por cuestión de diseño se te ocurre poner el panel a la derecha del tablero en vez de dejarlo donde está, con cambiar la definición de ventana lo tendrías todo hecho.

Respecto a lo del break del usuario, en SuperBASIC es posible, no así si está usando un programa en C/M o compilado. No obstante una vez cargas un nuevo programa SuperBASIC con Load o haces CLEAR o NEW si no recuerdo mal se cierran todos los canales adicionales.

Comunmente el sistema usa los canales 0, 1 y 2, y con QPAC2 también se usa el 3.

afx escribió:Sobre esto creo que tu y yo opinamos lo mismo, lo divertido de esta movida es justo las colaboraciones y las críticas sanas de unos con otros. Ninguno de nosotros vivimos de esto y lo hacemos sólo por diversión o entretenimiento.


Efectivamente, aunque no está de más de vez en cuando resaltar el esfuerzo que haces siendo, como bien dices, un hobby.

Saludos
Sinclair QL, la respuesta profesional de los 80

afx
Sabreman
Mensajes: 396
Registrado: Dom Feb 24, 2008 10:56 pm

Re: Un nuevo juego para Sinclair QL - OSUSQ

Mensaje por afx » Vie Abr 04, 2008 6:39 pm

badaman escribió:Abrir nuevos canales (ventanas) no solo es recomendable, sino muy necesario. Si alguna vez has maquetado HTML ya sabrás lo útil que resultan las etiquetas DIV o las tablas. Una vez defines una ventana con su canal asociado todo lo que dibujes dentro será relativo a esa ventana, y si cambias la posición de la ventana todo lo de dentro de dicha ventana se va con ella sin modificaciones. un ejemplo.
He estado haciendo algunos pruebas y efectivamente tienes toda la razón, el uso de canales ayuda muchísimo (a veces uno se busca los problemas solito :( ). Con los canales puede quedar muy limpio el código, además queda el camino trazado para lo de la resolución mode 8 (se me están ocurriendo algunas cosillas, a ver si las concreto).

badaman escribió:vez cargas un nuevo programa SuperBASIC con Load o haces CLEAR o NEW si no recuerdo mal se cierran todos los canales adicionales
Hice una prueba y se limpian con load o con new (con clear no), con lo cual, como dices, no es tan grave que esos canales se queden abiertos si el usuario sale con un break.

Saludos.

Avatar de Usuario
badaman
Sabreman
Mensajes: 499
Registrado: Mar Ene 29, 2008 10:58 am
Contactar:

Re: Un nuevo juego para Sinclair QL - OSUSQ

Mensaje por badaman » Sab Abr 05, 2008 8:09 am

Paso a explicar como realizar el volcado de imágenes en pantalla (modo 4) y concretamente, en este caso con el dragón pequeño:

Pasos a seguir:

1.- Crear el diseño con las medidas y la posición del dibujo adecuadas.
2.- Usar programa para convertir el área de memoria de pantalla correspondiente a fichero secuencial.
3.- usar procedimiento para volcar el fichero secuencial con la imagen en la posición de pantalla adecuada.

Paso 1

Creamos el diseño del dragón que ocupará 96x48 pixels con cualquier programa de dibujo para QL o convirtiendolo desde PC y lo colocamos en la posición superior izquierda de la imagen por comodidad. dicha imagen ocupará toda la pantalla o al menos todo el ancho de la pantalla.

Imagen

y lo guardamos.

Paso 2

Mediante el programa guardar_bas volcamos el dragón en pantalla y copiamos línea a línea el dibujo a un fichero externo.

Código: Seleccionar todo

100 REMark guarda en modo 4
110 fichero$ = "dragon"
120 LBYTES fichero$ & "_scr", 131072
130 pos = 131072
140 ancho = 96 : alto = 48
150 ancho = ancho / 4
160 reserva = ancho * alto
170 salto = 128 : incremento = 0 : suma = 0
180 mem = RESPR(reserva)
190 FOR bu = 0 TO alto - 1
200   FOR i = 0 TO ancho - 4 STEP 4
210     despla = incremento + i
220     POKE_L mem + suma, PEEK_L(pos + despla)
230     suma = suma + 4
240   END FOR i
250   incremento = incremento + salto
260 END FOR bu
270 SBYTES fichero$ & "_spr", mem, reserva


El ancho en pixels de la imagen ha de ser múltiplo de 16.

El programa carga la imagen del dragón y la vuelca linea a linea, secuencialmente, a una zona de memoria que luego guarda en el fichero dragon_spr con SBYTES.

Paso 3

Una vez guardado, sólo tenemos que crear un procedure para colocar la imagen en la posición de pantalla deseada.

Código: Seleccionar todo

100 dragon = RESPR(1152)
110 LBYTES dragon_spr, dragon
120 :
130 volcar dragon, 96, 48, 32, 20
140 :
150 DEFine PROCedure volcar(mem, ancho, alto, pos_x, pos_y)
160 REMark procedure para modo 4
170 REMark pos_x debe ser multiplo de 16
180 LOCal pantalla, salto, bu, incremento, suma, despla, pos, i
190 pantalla = 131072 : ancho = ancho / 4
200 salto = 128 : incremento = 0 : suma = 0
210 pos = ((pos_x / 4) + pantalla) + (pos_y * salto)
220 FOR bu = 0 TO alto - 1
230   FOR i = 0 TO ancho - 4 STEP 4
240     despla = incremento + i
250     POKE_L pos + despla, PEEK_L(mem + suma)
260     suma = suma + 4
270   END FOR i
280   incremento = incremento + salto
290 END FOR bu
300 END DEFine volcar


El procedure volcar sólo sirve en principio para modo 4, y el valor de pos_x ha de ser múltiplo de 16 forzosamente.

El procedure lo que hace es invertir el proceso del programa anterior. Lee los datos secuenciales que cargó a una zona de memoria y los vuelca en pantalla línea a linea.

Los parámetros de volcar son:

mem = indica la posición de memoria donde se guarda la imagen
ancho = indica la anchura en pixels de la imagen (múltiplo de 16)
alto = indica la altura en pixels de la imagen
pos_x = indica la coordenada x de la pantalla donde se visualizará la imagen (desde 0 a 511-ancho en valores múltiplos de 16)
pos_y = indica la coordenada y de la pantalla donde se visualizará la imagen (desde 0 a 255-alto)

Aquí los ficheros dragon_scr y dragon_spr en un fichero zip para probar ambos programas.

El volcado se hace mediante palabras largas, es decir, de 32 en 32 bits para aligerar la representación en pantalla. Si queremos que la imagen se posicione en una coordenada X que no sea multiplo de 16 podemos recurrir al siguiente truco o emplear un código que mueva palabras o bytes en vez de palabras largas:

Truco cutre pero efectivo:

Creamos una ventana que ocupe al menos lo mismo de alto que la imagen y de ancho el ancho de la imagen mas la suma de los pixels que queremos mover dicha imagen a derecha o a izquierda. La ventana estará justo debajo de la imagen.

Volcamos entonces la imagen a la pantalla en una posición x múltiplo de 16 como se indicó alineada a derecha o izquierda en la ventana.

Una vez volcada la imagen usamos el comando PAN (desplazamiento PANorámico de la ventana) X pixels (positivos o negativos) y tendremos la imagen en la posición deseada.

Sobre el método...

Para realizar todo esto, en primer lugar pensé en usar DATAs, evitando tener que crear un fichero externo como en el caso propuesto, pero topé de frente con el sistema de conversión de números del SuperBASIC. Cuando los números son demasiado grandes, el QL emplea redondeo y notación científica para escribirlos, así pues esos datos que volcaba a los DATAs luego al ser leídos y mostrados por pantalla no reproducían la misma imagen. En fin, peculiaridades del SuperBASIC.

Lo único que solucionó el problema es usar la sentencia PEEK dentro de la misma instrucción P0KE, y de esta forma los datos almacenados si son exactamente los mismos que los que se leyeron por pantalla.

Bueno, esto es todo por ahora.

Las dudas ya sabéis, no dejéis de preguntarlas.

P.S. Vuelvo a estar sin correo. Para contactar usa la otra cuenta. Te he enviado un par de mails.
Sinclair QL, la respuesta profesional de los 80

afx
Sabreman
Mensajes: 396
Registrado: Dom Feb 24, 2008 10:56 pm

Re: Un nuevo juego para Sinclair QL - OSUSQ

Mensaje por afx » Dom Abr 06, 2008 1:20 pm

badaman escribió:... volcado de imágenes en pantalla ...
¡¡ PERFECTO !! :D Ya he estado integrándolo en el juego y ha ido todo como la seda, se agradece lo detallado y claro que lo has puesto. Además tu post es muy didáctico, de paso me ha servido para aprender detalles nuevos sobre la pantalla del Ql.

badaman escribió:Para realizar todo esto, en primer lugar pensé en usar DATAs, evitando tener que crear un fichero externo como en el caso propuesto, pero topé de frente con el sistema de conversión de números del SuperBASIC
Sobre poner en los DATAs, ya que tenemos que arrastrar con ficheros (intro, información, ...), casi es mejor evitar ensuciar el código y mantenerlo en el fichero.

A raíz del tema de los ficheros, siempre me ha resultado un poco molesto no poder desde un programa SuperBasic saber el dispositivo (y directorio) desde el que se esté ejecutando el programa (tan vez se pueda, pero lo desconozco). El tema es cuando el usuario lo ejecute desde MDV o FLP o WIN no estar personalizando la ruta donde estan esos ficheros en el fuente o en el boot del programa. ¿Hay alguna manera de mejorar eso?

Por lo demás todo va muy bien, tal vez el fin de semana que viene pueda tener ya la versión con el nuevo "look" (últimamente no tengo demasiado tiempo libre). Quiero también optimizar algunas partes del algoritmo de solución (evitando comprobaciones inútiles) y de algunas validaciones (al cambiar de casilla es un poco "espesa" la comprobación de números válidos).

A raíz de tu post sobre el volcado de imágenes voy a hacer una propuesta, pero mejor en otro hilo del foro.

Saludos y gracias una vez más.

PD:
Tenías razón con lo de emplear canales, es todo más fácil.

Avatar de Usuario
badaman
Sabreman
Mensajes: 499
Registrado: Mar Ene 29, 2008 10:58 am
Contactar:

Re: Un nuevo juego para Sinclair QL - OSUSQ

Mensaje por badaman » Lun Abr 07, 2008 12:31 am

afx escribió:A raíz del tema de los ficheros, siempre me ha resultado un poco molesto no poder desde un programa SuperBasic saber el dispositivo (y directorio) desde el que se esté ejecutando el programa (tan vez se pueda, pero lo desconozco). El tema es cuando el usuario lo ejecute desde MDV o FLP o WIN no estar personalizando la ruta donde estan esos ficheros en el fuente o en el boot del programa. ¿Hay alguna manera de mejorar eso?


Como en otras ocasiones, la respuesta está en el Toolkit II.

Mira el Capítulo 4 del manual: Control de directorios:
http://www.speccy.org/sinclairql/man/tk2/index.htm

Allí encontrarás más info detallada sobre:

DATAD$ devuelve la omisión para datos
PROGD$ devuelve la omisión para programas
DESTD$ devuelve la omisión para destinaciones

Ánimo con el osusq.
Sinclair QL, la respuesta profesional de los 80

afx
Sabreman
Mensajes: 396
Registrado: Dom Feb 24, 2008 10:56 pm

Re: Un nuevo juego para Sinclair QL - OSUSQ

Mensaje por afx » Lun Abr 14, 2008 5:42 pm

badaman escribió:100 dragon = RESPR(1152)
110 LBYTES dragon_spr, dragon

Sobre estas instrucciones, un problema molesto es que cuando tienes algunas utilidades residentes (por ejemplo HOTKEY, Qascade, ...) hay que desalojarlas de la memoria para que la línea 100 no de problemas. ¿Hay alguna solución a esto? ¿No se puede cargar esa imagen en otra zona de la memoria?. Este es un problema típico con muchos programas para QL, al menos yo me lo he tropezado varias veces y no sé si es que estoy haciendo algo mal.

Sobre la evolución de OSUSQ, ya estoy en la recta final. He implementado la mayoría de las sugerencias de badaman. Al final simplificaré el programa quitando un par de opciones inútiles, y dejaré para una segunda versión otras mejoras que tenía en mente. Espero la semana que viene ya tener la versión definitiva solo queda acabar de implementar la opción de resto de números válidos y ajustes finos de interfaz de usuario. Con las aportaciones de badaman y radastán el programa creo que quedará mínimamente presentable.

Saludos.

Avatar de Usuario
badaman
Sabreman
Mensajes: 499
Registrado: Mar Ene 29, 2008 10:58 am
Contactar:

Re: Un nuevo juego para Sinclair QL - OSUSQ

Mensaje por badaman » Lun Abr 14, 2008 6:02 pm

afx escribió:un problema molesto es que cuando tienes algunas utilidades residentes (por ejemplo HOTKEY, Qascade, ...) hay que desalojarlas de la memoria para que la línea 100 no de problemas.


No he probado lo que dices, pero, en principio, no debería dar problemas. fíjate que esas utilidades han sido cargadas con LRESPR, con lo que usan su propio espacio en la zona de procedimientos residentes.

Se me ocurre que al estar testeando el programa, haces RUNs muchas veces, y la linea 100 reserva espacio cada vez hasta que se agota la memoria. (RESPR reserva espacio de memoria) Y por desgracia, esta memoria no puede ser liberada hasta que no reinicias. Si este es le caso, es tan fácil como meter la linea 100 dentro de un PROCedure por ejemplo:

Código: Seleccionar todo

10 DEFine PROCedure reserva
20 dragon = RESPR(1152)
30 END DEFine reserva


y llamar a este procedure sólo desde la linea de comandos, una vez, al empezar a testear el programa. Nunca desde el programa. Hasta que el programa esté terminado. En ese momento, con dejar la linea como estaba, ya lo tienes solucionado.

Si el problema no fuese este, piensa que la memoria de pantalla es muy grande. Puedes cargar el fichero dragon_spr en cualquier posición de la memoria de pantalla, y usar esa posición como el valor de la variable "dragon". Lo unico a tener en cuenta es no usar una zona de la pantalla que pueda ser pintada por el propio dibujo cuando uses el procedure volcar.

Luego sólo tienes que borrar el área de la pantalla donde cargaste el contenido de dragon_spr.

Dirás que esto es muy muy chapuza, pero para todo hay solución. Mediante un truqui podemos hacer que la pantalla del QL se desconecte literalmente, mostrando la pantalla en negro hasta que volvamos a conectarla. En ese intervalo puede pasar todo lo que te comento sin que nadie vea lo que está pasando. A ver si encuentro el par de pokes por ahi... y te cuento.

Obviamente, de esta forma, no necesitar reservar memoria con RESPR.
Sinclair QL, la respuesta profesional de los 80

afx
Sabreman
Mensajes: 396
Registrado: Dom Feb 24, 2008 10:56 pm

Re: Un nuevo juego para Sinclair QL - OSUSQ

Mensaje por afx » Lun Abr 14, 2008 6:16 pm

badaman escribió:Se me ocurre que al estar testeando el programa, haces RUNs muchas veces, y la linea 100 reserva espacio cada vez hasta que se agota la memoria.


Tuve en cuenta eso que me dices, pero me falla la primera vez que ejecuto esas instrucciones (es decir, no se llega a ejecutar ni la primera vez). A continuación con RJOB desalojo Qascade y HotKey y todo va bien.

¿Hay un tope de memoria disponible para RESPR? Lo único que se me ocurre es que si exista ese tope y que yo lo esté agotando (a parte de Qascade, Hotkey, cargo otras cosas como todo lo relacionado con PE, ...).

Eso de aprovechar zona de pantalla suena bien (siempre que no sea un lio utilizarla). Si las encuentras seguro que serían de mucho provecho.

Avatar de Usuario
badaman
Sabreman
Mensajes: 499
Registrado: Mar Ene 29, 2008 10:58 am
Contactar:

Re: Un nuevo juego para Sinclair QL - OSUSQ

Mensaje por badaman » Lun Abr 14, 2008 6:26 pm

Entonces no se me ocurre que pueda ser. Si descubres alguna cosa más, comentalo a ver si damos con el diagnóstico correcto.

Sobre lo de la pantalla, imagina que usamos el final de la pantalla. El final de pantalla sería:

131072+32767

131072: comienzo de pantalla.
32767: tamaño de memoria de pantalla -1

Si a este número le quitamos lo que ocupa dragon_spr, es decir, lo que reservavamos con RESPR ,que era 1152 bytes,

podemos sustituir la linea 100 por esta:

Código: Seleccionar todo

100 dragon = 131072 + 32767 - 1152


Y el resto del código dejarlo como está.

Luego es cosa de borrar esa zona de pantalla dibujando un recuadro encima, o haciendo CLS #0... en fin, lo que mejor venga.
Sinclair QL, la respuesta profesional de los 80

Avatar de Usuario
badaman
Sabreman
Mensajes: 499
Registrado: Mar Ene 29, 2008 10:58 am
Contactar:

Re: Un nuevo juego para Sinclair QL - OSUSQ

Mensaje por badaman » Lun Abr 14, 2008 6:35 pm

Los pokes prometidos para apagar / encender la pantalla.

Apaga la pantalla:

Código: Seleccionar todo

POKE 98403,2


Enciende / cambia la pantalla en modo 8:

Código: Seleccionar todo

POKE 98403,8


Enciende / cambia la pantalla en modo 4:

Código: Seleccionar todo

POKE 98403,0


Usar con cuidado y moderación.

Probar antes de usar.... y el resto de indicaciones que te dirían si usas un medicamento. ;)

Fíjate también que si haces:

Código: Seleccionar todo

modo=PEEK(98403)


Podrás saber que modo de pantalla es el modo actual.

Saludos.
Sinclair QL, la respuesta profesional de los 80

Zerover
Jack The Nipper
Mensajes: 112
Registrado: Mar Abr 08, 2008 9:00 am

Re: Un nuevo juego para Sinclair QL - OSUSQ

Mensaje por Zerover » Mar Abr 15, 2008 8:35 am

afx escribió:
badaman escribió:100 dragon = RESPR(1152)
110 LBYTES dragon_spr, dragon

Sobre estas instrucciones, un problema molesto es que cuando tienes algunas utilidades residentes (por ejemplo HOTKEY, Qascade, ...) hay que desalojarlas de la memoria para que la línea 100 no de problemas. ¿Hay alguna solución a esto? ¿No se puede cargar esa imagen en otra zona de la memoria?

Hotkey y Qascade son programas residentes y están muy bien en la zona de memoria de programas residentes.

Pienso que los datos de la imagen deberían estar en el montón común (common heap), y además puedes liberar la memoria que reserves después de usarla.

Si tienes el ToolKit II la memoria se reserva con ALCHP (ALlocate Common HeaP) y se libera con RECHP (RElease Common HeaP), si no, tienes que usar directamente el QDOS.

La descripción de las instrucciones ALCHP y RECHP del ToolKit II está en http://www.speccy.org/sinclairql/man/tk2/sec15.htm.

La descripción de los servicios del QDOS la puedes encontrar en http://www.speccy.org/sinclairql/man/sqlpa/cap5.htm#52 y en http://www.speccy.org/sinclairql/man/sq ... tm#mtalchp.

Saludos

Avatar de Usuario
badaman
Sabreman
Mensajes: 499
Registrado: Mar Ene 29, 2008 10:58 am
Contactar:

Re: Un nuevo juego para Sinclair QL - OSUSQ

Mensaje por badaman » Mar Abr 15, 2008 11:23 am

Es lo que pasa por tener tantos comandos, que se nos olvidan la mitad. :)

Un par de preguntas:

En D2 pasamos el ID del propietario del job. ¿Quien sería el propietario¿ ¿El superBASIC? ¿Pasamos entonces el valor 0 (cero)?

y

¿Cómo obtenemos la dirección base del área para usarla y/o liberarla luego?

Saludos
Sinclair QL, la respuesta profesional de los 80

Responder

¿Quién está conectado?

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