Averno para ORIC

dancresp
Mensajes: 6224
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona
Agradecido : 664 veces
Agradecimiento recibido: 1016 veces

Averno para ORIC

Mensajepor dancresp » 25 Mar 2019 18:18

Averno_Oric-Spectrum.gif
Averno_Oric-Spectrum.gif (133.08 KiB) Visto 3753 veces


EL JUEGO
Averno es un juego publicado para varios sistemas en el año 1989. Es un juego tipo puzzle en el que controlamos a un fantasma que tiene que recoger todas las llaves que hay en el nivel para poder abrir la puerta. Debe abrir las 13 puertas para poder escapar del averno. Hay que evitar quedarnos sin tiempo o quedarnos atrapados.

El fantasma tiene la capacidad de hacer caer bloques de ladrillos para poder acceder a ciertas partes del nivel o para subirnos a ellos, ya que no puede subir paredes de más de dos bloques de ladrillos. Solo puede hacer caer bloques que no tengan nada debajo.

Esta versión sigue exactamente la misma mecánica y las 13 pantallas son idénticas al juego original, a excepción de que se han eliminado los bloques invisibles, lo que no afecta a la resolución de los niveles.

Controles:
Mueve al fantasma a derecha o izquierda con “Z” y “X”.
Pulsa “Enter” para hacer caer un bloque de ladrillos, según estés encima o parcialmente sobre él.
Pulsa “Esc” si te quedas bloqueado. Perderás una de tus 5 vidas.

Descargar "Averno" para ORIC-Atmos en formato TAP:
AVERNO.zip
(3.27 KiB) Descargado 91 veces

Descargar "Averno" para ORIC-1 / ORIC-Atmos en formato TAP:
AVERNO_Oric1-Atmos.zip
(3.34 KiB) Descargado 64 veces


Averno_1.png
Averno_1.png (54.48 KiB) Visto 3753 veces


BLOQUES
Se ha dividido el listado en 10 bloques:

- Declaración de las matrices e inicio del juego.
- Bucle principal de desarrollo.
- Pasar el Nivel o perder una Vida.
- Movimiento del fantasma.
- Presentación e inicio de la partida.
- Rutina para mostrar el nivel.
- Pantalla de victoria final.
- Preparar y mostrar la zona de juego.
- Cargar UDG.
- DATA con los UDG del juego y valores de matrices.


COMO FUNCIONA
Todo el programa ocupa 137 líneas.

10 - Definimos las matrices del juego.
20 – Salto a la subrutina que redefine los caracteres y define variables globales.
30 – Mostrar la pantalla de presentación.
40 – Mostrar el nivel.
100 – Inicio del bucle principal.
105 – Coger la tecla pulsada. Si se pulsa “Esc” salir del bucle y perder una vida.
110 – Movimiento del fantasma según la tecla pulsada.
122 – Refrescar el marcador de tiempo.
125 – Mira que hay debajo del fantasma, actuando en consecuencia.
135 – Descontar tiempo, saliendo del bucle si se acaba.
140 – Volver al REPEAT si la variable U=0.
150 – Al salir del bucle mira el valor de U. U=1 para pasar de nivel o U=2 para perder una vida.
155 – Rutina de muerte.
200 – Mover al fantasma a la derecha.
250 - Mover al fantasma a la izquierda.
300 – Controla la caída del fantasma, mirando si pasa por encima de una llave o puerta.
400 - Muestra el fantasma. Con D=1 mira a la derecha y D=-1 mira a la izquierda.
420 – Rutina de recogida de llave. Pone U=1 si se han recogido todas.
450 - Refresca al marcador del tiempo.
460 - Refresca al marcador de puntos.
500 – Tirar un bloque de ladrillos. Calcula la posición del fantasma para decir que bloque debe caer.
2000 – Pantalla de presentación.
2100 – Rutina que muestra el nivel. Los datos están codificados en la matriz M$.
2130 – Doble bucle que guarda en la matriz D los caracteres de cada posición de la pantalla.
2200 – Pantalla de final de juego al completar el nivel 13.
3000 – Selección de colores, borrar de pantalla, ocultar cursor y ocultar el “CAPS” superior.
3005 – Lectura de los DATA de los UDG.
3010 – Montar matrices con tiras de caracteres y posiciones del fantasma.
9000 – DATA con los gráficos de los UDG, posiciones, bloques de gráficos y codificación de los niveles.


EL LISTADO

Código: Seleccionar todo

Aquí va el código BASIC, pero no hay forma de meterlo !!!

Adjunto en formato TXT...
Averno_BASIC.zip
(3.49 KiB) Descargado 84 veces



APUNTES FINALES
Casi cuatro años sin programar nada para el ORIC. Como pasa el tiempo !!!

Pues nada que volvemos al ataque, que chema o hace de Juan Palomo, o pocas novedades encuentra para su sistema favorito.

En esta ocasión he adaptado bastante fielmente un juego que en su día me compré para mi MSX, me gustó mucho y del que guardaba un buen recuerdo. Existen versiones para varios sistemas, y ahora ya se puede añadir la del ORIC, teniendo una mecánica idéntica al original, con alguna mejora y alguna cosilla que he dejado fuera. En una semana he dejado esta versión lista para jugar.

La verdad es que he quedado muy satisfecho ya que el juego tiene los mismos niveles que la versión original, la misma resolución de los niveles y el rendimiento del juego es igual, sino algo superior… excepto en la creación de la pantalla.

Las cosillas de la versión ORIC
Como siempre que se programa en el ORIC, los gráficos se han tenido que rediseñar ya que en lugar de la habitual matriz de 8x8 pixels pasamos a una de 8x6. Como los gráficos se forman con dos bloques de 1x2 caracteres o 2x2 caracteres de 8x8 pixels, tenemos bloques 8x16 pixels o 16x16 pixels. La solución que he tomado ha consistido en usar bloques de 1x3 o 2x3 caracteres, de forma que los bloques tienen 18 pixels de ancho y no 16. Como no puedo usar colores para delimitar los bloques, he dejado una tira de pixels en blanco al principio y al final de algunos gráficos para hacerlos menos confusos. El resultado creo que es bueno. A diferencia de la versión original, tanto a la puerta como a las llaves les he creado una máscara para que queden más integrados con el fondo.

Al poner los gráficos en pantalla, casi se comen el ancho de la pantalla, con lo que he eliminado algunos marcadores, y al resto los he puesto en la parte superior, ya que el ORIC tiene más filas que la mayoría de equipos.

Otro problema ha sido el tema del color, ya que por la forma como gestiona los atributos lo he tenido que hacer monocromo, dando un poco de color en la presentación y en los marcadores. Es una lástima, pero muy ORIC.

Y en este punto llegamos a la creación de la pantalla. Cada pantalla se compone de una matriz de 20 filas y 10 columnas. En cada una de las columnas hay un gráfico o parte de él, como en las puertas y llaves. Codificando de una forma bruta, se podría haber creado una matriz de 13 (pantallas) x 20 (filas) x 10 (columnas). En total 260 líneas de código, con su correspondiente cantidad de memoria, de 600 bytes por nivel. En lugar de esto he optado por codificar los niveles, quedando cada nivel entre los 50 y 100 bytes. La presentación del nivel tarda aproximadamente unos 6 segundos, y la codificación se realizada de la siguiente forma, mientras la pantalla es azul:

- Una letra entre la “A” y la “Z” tiene un valor entre 1 y 26, y corresponde a los bloques de ladrillos del fondo que se han de mostrar.
- Una letra entre la “a” y la “z” tiene un valor entre 1 y 26, y corresponde a los bloques de piedra que se han de mostrar.
- Un número entre 1 y 8 corresponde a un bloque predefinido almacenado en la matriz B$, poniendo lo que entre en la fila correspondiente.

Pero aquí no acaban los problemas, ya que es la primera vez en BASIC que me encuentro con la necesidad de hacer que el protagonista se mueva sobre el fondo sin borrarlo. Para ello hay que hacer un segundo proceso, que consume unos 10 segundos en el que con un doble bucle leo la memoria de pantalla y voy guardando los caracteres de la pantalla en la matriz "S". Durante el proceso de lectura de la memoria de vídeo hago un efecto persiana cambiado el color de la línea al amarillo definitivo. No me acaba de gustar, pero es necesario y sirve para que después el personaje se mueva de forma rápida.

Averno_67.png
Averno_67.png (66.03 KiB) Visto 3753 veces


El juego original hace uso de bloques ocultos en un par de niveles, cosa que descubrí viendo un vídeo cuando el juego estaba casi acabado, y opté por ignorarlos. Esto me obligó a hacer algún pequeño cambio en estos niveles, ya que en esta versión los bloques sí que son visibles. Con todo, no afectan a la resolución de los niveles.

Para el control del cursor se lee el teclado mediante un “PEEK 520” y así se evitan problemas con las mayúsculas/minúsculas y te aseguras que siempre lea la última tecla pulsada, accediendo al buffer del teclado.

Y para el sonido, una vez más he tirado de los predefinidos por el ORIC demostrando mi incapacidad en este campo...

Como nota final, con el respeto a los niveles originales, encuentro que la dificultad no es lineal, y los niveles más sencillos están al principio y final del juego. Pero como el juego original es así, así lo he dejado.

Pues nada más, solo me queda esperar que os guste...

Os invito a probarlo.

Averno_2.png
Averno_2.png (144.71 KiB) Visto 3753 veces

Averno_3.png
Averno_3.png (143.84 KiB) Visto 3753 veces

Averno_8.png
Averno_8.png (144.51 KiB) Visto 3753 veces

Averno_9.png
Averno_9.png (144.57 KiB) Visto 3753 veces

Averno_10.png
Averno_10.png (144.31 KiB) Visto 3753 veces

Averno_5.png
Averno_5.png (65.62 KiB) Visto 3753 veces

Averno_4.png
Averno_4.png (120.17 KiB) Visto 3753 veces
Buscando la IP de la W.O.P.R. he encontrado mi índice

jltursan
Mensajes: 5619
Registrado: 20 Sep 2011 13:59
Ubicación: Madrid
Agradecido : 990 veces
Agradecimiento recibido: 2040 veces
Contactar:

Re: Averno para ORIC

Mensajepor jltursan » 25 Mar 2019 18:33

Como siempre -thanks

Avatar de Usuario
Chema
Mensajes: 2664
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 3190 veces
Agradecimiento recibido: 926 veces
Contactar:

Re: Averno para ORIC

Mensajepor Chema » 25 Mar 2019 18:43

¡¡Ostras qué sorpresón!!

dancresp escribió:
Pues nada que volvemos al ataque, que chema o hace de Juan Palomo, o pocas novedades encuentra para su sistema favorito.



-rofl -rofl De verdad que es que no me da la vida... no sé qué pasa últimamente, pero no encuentro hueco. Tampoco tengo ninguna idea así que me "obligue". Creo que necesitaba un pequeño hiato -grin

Bueno, en realidad tenía una idea en la recámara, pero otro usuario se me ha adelantado con una pequeña demo que hace lo mismo que yo tenía pensando y, ahora, tiene menos gracia -507

Te ha quedado muy, muy chulo, dancresp. Tienes que empezar a usar el vídeo inverso, para poder tener algún color más en pantalla. Pero no es la panacea. Sólo intercambia tinta y papel por sus inversos lógicos (blanco por negro, cyan por rojo, amarillo por azul y así). No siempre sirve, pero ayuda un poco a mostrar más colorido y no necesita un atributo ocupando un bloque en pantalla.

Enhorabuena, dancresp. Lo has vuelto a hacer... tengo que probarlo inmediatamente :)

Avatar de Usuario
Chema
Mensajes: 2664
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 3190 veces
Agradecimiento recibido: 926 veces
Contactar:

Re: Averno para ORIC

Mensajepor Chema » 25 Mar 2019 18:55

Por si acaso.. prueba

Código: Seleccionar todo

                               
   10 CLS                               
   20 PAPER 4:INK 6                     
   50 POKE #BC00,65                     
   60 POKE #BC01,128+65                                                       


Con que sumes 128 al código ascii de los caracteres que quieras colorear (por ejemplo los que forman ladrillos o el fantasma) basta para que se invierta al pintar.

Avatar de Usuario
ron
Mensajes: 21855
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 3862 veces
Agradecimiento recibido: 4752 veces

Re: Averno para ORIC

Mensajepor ron » 25 Mar 2019 20:10

oTTia y esto ???? !!!! WOW ! Sorpresón. Y encima, para ORIC !
dancresp que lo ha vuelto a hacer.
CONGRATULATIONS

Avatar de Usuario
minter
Mensajes: 4826
Registrado: 22 Jul 2014 18:51
Agradecido : 6762 veces
Agradecimiento recibido: 2602 veces

Re: Averno para ORIC

Mensajepor minter » 25 Mar 2019 20:17

que bueno!
Lo pruebo ahora mismo!
El enemigo del Paku Palu!

Avatar de Usuario
duca750
Mensajes: 2160
Registrado: 19 May 2015 10:52
Ubicación: Olivenza (Badajoz)
Agradecido : 775 veces
Agradecimiento recibido: 275 veces

Re: Averno para ORIC

Mensajepor duca750 » 25 Mar 2019 21:34

Enhorabuena buena por dar de nuevo vida a nuestros orics, gracias!
-4mstr4d CPC464,472,6128 -sp3zy 16K,48K,+2,+2A/2B +3 -cocbm1 64 Y -coam1** -0r1c 1 y ATMOS** -m3s3x CAN.V20, Goldstar, Sony HB10,20,55,75,101,201,501 SPECTRAVIDEO 728,TOS HX10, VG8010,8020,NMS 8250 -j4tar1 STFM 800XL -3nt3r 64-A ELECTRON -codrg132 y 64

Avatar de Usuario
ron
Mensajes: 21855
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 3862 veces
Agradecimiento recibido: 4752 veces

Re: Averno para ORIC

Mensajepor ron » 25 Mar 2019 21:47

Dancresp, te lo pongo blanco y en botella, el BAS va dentro del DSK....

dancrespcompiler.dsk.zip
(47.75 KiB) Descargado 105 veces


Dale un tiento a ver si sirve para algo.

garillete
Mensajes: 2327
Registrado: 30 Oct 2010 20:58
Agradecido : 478 veces
Agradecimiento recibido: 966 veces

Re: Averno para ORIC

Mensajepor garillete » 25 Mar 2019 22:01

Muchisimas graciaa por programar y ofrecernos todos estos juegos y lo mejor... explicarlo..:-)

Avatar de Usuario
minter
Mensajes: 4826
Registrado: 22 Jul 2014 18:51
Agradecido : 6762 veces
Agradecimiento recibido: 2602 veces

Re: Averno para ORIC

Mensajepor minter » 25 Mar 2019 22:16

Por cierto dancresp.
Con el Oricutron, para hacer caer el bloque, tengo que pulsar el ENTER, no el ESPACIO.
¿Has subido un versión distinta o tengo mal mapeado el emulador? :)

dancresp
Mensajes: 6224
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona
Agradecido : 664 veces
Agradecimiento recibido: 1016 veces

Re: Averno para ORIC

Mensajepor dancresp » 25 Mar 2019 22:50

minter escribió:Por cierto dancresp.
Con el Oricutron, para hacer caer el bloque, tengo que pulsar el ENTER, no el ESPACIO.
¿Has subido un versión distinta o tengo mal mapeado el emulador? :)

Tu versión es correcta, me he colado yo !!!
Cierto, el bloque cae con RETURN y no con SPACE... -banghead
Más tarde lo vuelvo a subir corregido. Gracias.

ron escribió:Dancresp, te lo pongo blanco y en botella, el BAS va dentro del DSK....
Dale un tiento a ver si sirve para algo.

Gracias ron, lo miro a ver que tal...

Chema escribió:Por si acaso.. prueba

Código: Seleccionar todo

                               
   10 CLS                               
   20 PAPER 4:INK 6                     
   50 POKE #BC00,65                     
   60 POKE #BC01,128+65                                                       


Con que sumes 128 al código ascii de los caracteres que quieras colorear (por ejemplo los que forman ladrillos o el fantasma) basta para que se invierta al pintar.

No tenía ni idea... -shock
Lo probaré, que nunca se sabe.

Chema escribió: -rofl -rofl De verdad que es que no me da la vida... no sé qué pasa últimamente, pero no encuentro hueco. Tampoco tengo ninguna idea así que me "obligue". Creo que necesitaba un pequeño hiato -grin

Bueno, yo he tenido una temporada un poco chunga, que me ha obligado a estar en el dique seco. Mi salud bien, como siempre, eso sí.

Con todo, si que había pensado en ti, que teniendo en cuenta que has hecho juegos con Filmation, 3D vectoriales, Matamarcianos, Conversacionales, inclasificables como el School Daze, etc... no se te ha pasado por la cabeza un juego con "Freescape", como el Total Eclipse, Driller, Dark Star, Castle Master o así. Sería curioso ver una versión ORIC de alguno de estos juegos.
Buscando la IP de la W.O.P.R. he encontrado mi índice

Avatar de Usuario
ron
Mensajes: 21855
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 3862 veces
Agradecimiento recibido: 4752 veces

Re: Averno para ORIC

Mensajepor ron » 25 Mar 2019 22:56

Tienes que decirnos si has encontrado en el basic del oric alguna particularidad que sea exclusiva de M$. Ya nos explico hace unos cuantos años el profesor Walken Silicebit que el BASIC del ORIC era un derivado de la versión de M$.

Tangerine version of Extended Microsoft BASIC (V1.0).

La ventaja que al ser de M$ con los comandos de sonido y video / color, es que ha sido bastante usable y altamente compatible, sobre todo cuando tocaba picar programas de otros micros.

http://retrowiki.es/viewtopic.php?f=7&t ... p200033248

Código: Seleccionar todo

10 B=#E435:E=B+9
20 FOR I=E TO B STEP -1
30 J=PEEK(I):J=J-INT(J/64)*64
40 IF I>B THEN A$=A$+CHR$(J+64) ELSE A$=A$+CHR$(J)
50 NEXT
60 PRINT A$

Avatar de Usuario
ron
Mensajes: 21855
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 3862 veces
Agradecimiento recibido: 4752 veces

Re: Averno para ORIC

Mensajepor ron » 25 Mar 2019 22:57

minter escribió:Por cierto dancresp.
Con el Oricutron, para hacer caer el bloque, tengo que pulsar el ENTER, no el ESPACIO.
¿Has subido un versión distinta o tengo mal mapeado el emulador? :)


Tu lo que quieres es hackear y gusarapear el programa de dani, eres un Minter ! -drinks -shock -grin -rofl -0r1c

Avatar de Usuario
ron
Mensajes: 21855
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 3862 veces
Agradecimiento recibido: 4752 veces

Re: Averno para ORIC

Mensajepor ron » 25 Mar 2019 23:10

Aprovecho para reivindicar el core de ORIC 1 y/o ATMOS en FPGA.
Si estuviera disponible en MiSTica y MiSTer a buen seguro mucha gente que no tiene Oricutron lo probaba.

dancresp
Mensajes: 6224
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona
Agradecido : 664 veces
Agradecimiento recibido: 1016 veces

Re: Averno para ORIC

Mensajepor dancresp » 25 Mar 2019 23:45

ron escribió:Tu lo que quieres es hackear y gusarapear el programa de dani, eres un Minter ! -drinks -shock -grin -rofl -0r1c

No se porque no puedo meter el código en BASIC en el post.
Siempre lo había hecho, pero hoy no me deja.

ron escribió:Aprovecho para reivindicar el core de ORIC 1 y/o ATMOS en FPGA.
Si estuviera disponible en MiSTica y MiSTer a buen seguro mucha gente que no tiene Oricutron lo probaba.

En el ZX-UNO existir existe, pero no acabo de entender que no pueda cargar ni por audio... -no
Buscando la IP de la W.O.P.R. he encontrado mi índice

Avatar de Usuario
ron
Mensajes: 21855
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 3862 veces
Agradecimiento recibido: 4752 veces

Re: Averno para ORIC

Mensajepor ron » 26 Mar 2019 00:01

dancresp escribió:
ron escribió:Tu lo que quieres es hackear y gusarapear el programa de dani, eres un Minter ! -drinks -shock -grin -rofl -0r1c

No se porque no puedo meter el código en BASIC en el post.
Siempre lo había hecho, pero hoy no me deja.

ron escribió:Aprovecho para reivindicar el core de ORIC 1 y/o ATMOS en FPGA.
Si estuviera disponible en MiSTica y MiSTer a buen seguro mucha gente que no tiene Oricutron lo probaba.

En el ZX-UNO existir existe, pero no acabo de entender que no pueda cargar ni por audio... -no


Lo tiene desUBIKado explicado en otro post. LO que si hace es usar el método de Hirudov de los Pravetz 8, que es aprovechando la controladora Disk][ de los Apple ][ y que lo hemos comentado a lo largo de estos años en RW. Al parecer funciona pero ya sabes del engorro que es.

http://retrowiki.es/viewtopic.php?f=7&t=200028960


Volver a “Lenguajes de Programación y herramientas Dev”

¿Quién está conectado?

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