Nueva compañía retrosoft español, Cañadul.

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

Moderador: Sir Cilve Sinclair

Notapor Cañadul el Dom Oct 28, 2007 10:50 pm

Hola.

Efectivamente, los niveles del 19 al 25 tenian la misma contraseña.

He subido una nueva version, con las contraseñas nuevas para estos niveles.

Podeis descargarla en http://perso.orange.es/elitelmotril

Gracias.
Cañadul
rst 0
 
Mensajes: 4
Registrado: Dom Oct 28, 2007 9:57 pm

Notapor miguel el Dom Oct 28, 2007 10:58 pm

Cañadul escribió:Hola.

Efectivamente, los niveles del 19 al 25 tenian la misma contraseña.

He subido una nueva version, con las contraseñas nuevas para estos niveles.

Podeis descargarla en http://perso.orange.es/elitelmotril

Gracias.


Hola y bienvenidos al foro.

Lo primero dar la enhorabuena por el juego, me parece muy aditivo.

Y ahora una pregunta ¿sería mucho pedir que, a la vez que el archivo SNA, se ponga disponible para descarga un TZX o TAP? Para meterlo a la Compact Flash o a disco sería más sencillo.

Muchas gracias.
Mi colección retro.
10 PRINT "TODOS SOMOS SROMERO, MENOS UNO QUE SE CREE QUE SÍ"
20 GO TO 10
Avatar de Usuario
miguel
Manic Miner
 
Mensajes: 293
Registrado: Mar Abr 17, 2007 12:27 am
Ubicación: Parla - Madrid

Notapor Cañadul el Dom Oct 28, 2007 11:13 pm

Hola.

Hemos tenido que usar un SNA, por motivos de falta de memoria, asi el juego aprovecha desde la 4000 hexadecimal hasta casi la FFFF hexadecimal.

Por ejemplo el Menu es una pantalla, no es un grafico que luego se imprime, por ese motivo, una vez que se esta jugando, no se puede volver a el. Y al pulsar la tecla "Y" solo presenta los guines para escribir el codigo del nivel sin fondo.

No se exactamente como se construye un TAP o TZX, pero si con este mapa de memoria se puede hacer, si alguien me dice como, por mi no habria problema en hacerlo.

Saludos.
Cañadul
rst 0
 
Mensajes: 4
Registrado: Dom Oct 28, 2007 9:57 pm

Notapor mcleod_ideafix el Dom Oct 28, 2007 11:16 pm

Ese "casi" puede que sea suficiente para una rutinilla en ensamblador que cargue el resto del juego...
Por ejemplo, veo un hueco muy gordo comenzando en #FE5B . Ahí cabe de sobras un cargador. El bloque que se cargue contendrá el mismo código del cargador, de tal forma que al sobreescribirlo no quede afectado.
Web: ZX Projects | Twitter: @zxprojects
Avatar de Usuario
mcleod_ideafix
Johnny Jones
 
Mensajes: 3982
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera

Notapor mcleod_ideafix el Lun Oct 29, 2007 3:51 am

Cañadul escribió:No se exactamente como se construye un TAP o TZX, pero si con este mapa de memoria se puede hacer, si alguien me dice como, por mi no habria problema en hacerlo.
Saludos.

Pues mira, dicho y hecho. Aquí tienes un TAP con vuestro juego y ehem, ehem... pantalla de carga incluida.

El cargador se aloja en una linea REM, y se encarga de poner la pila en el buffer de impresora, para que no moleste, cargar la pantalla, y un bloque principal que en vuestro juego va desde 24000 hasta 65535. En ese bloque principal he usado un hueco de 5 bytes que he pillado a partir de la posición #FE5B para alojar la última parte de la rutina de carga, consistente en un CALL #0556 seguido de un RETN.

El cargador, después de cargar este bloque, pone la pila en #FFFB (tal y como estaba en el SNA), da valores a IX y DE para que carguen un segundo bloque desde 16384 hasta 23999, y por último, salta a #FE5B donde se hace la llamada a LOAD y con RETN se recupera el PC y comienza el juego.
Web: ZX Projects | Twitter: @zxprojects
Avatar de Usuario
mcleod_ideafix
Johnny Jones
 
Mensajes: 3982
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera

Notapor mcleod_ideafix el Lun Oct 29, 2007 5:23 am

Para hacer el TAP:

He usado Spectaculator, la especificación de los SNA, la especificación de los TAP y un editor hexadecimal (HexEdit).

1. Miro con el debugger de Spectaculator que hay un pequeño hueco de unos 21 bytes a partir de #F5FB. Me lo apunto para luego.

2. Observo el SNA con el editor hexadecimal y apunto los parámetros importantes: en este caso, la dirección de la pila, que es #FFFB. Aquí se almacena el PC ya que los SNA "comienzan" la ejecución con un RETN (para conservar las interrupciones como estaban y todo eso).

3. Con el mismo editor hexadecimal corto los primeros 27 bytes y me quedo con el mapa de la memoria del Spectrum: 49152 bytes. Cojo y grabo dos archivos: uno con la parte de memoria que va desde 16384 hasta 23999 y le llamo menu.bin, y otra que va desde 24000 hasta 65535, que le llamo main.bin. También elaboro con mucho sufrimiento, esfuerzo, tesón y constancia una pantalla de carga, que grabo como screen.bin (6912 bytes).

4. Hago un cargador BASIC con una rutina en C/M incrustrada en la primera linea REM. El C/M es éste:
Código: Seleccionar todo
;Cargador para TAP de Astro 2008

          org 23760   ;Cargador en linea REM
Cargador  proc
          ld sp,23551  ;Pila en area de impresora

          ;Carga de pantalla
          ld ix,16384
          ld de,6912
          scf
          ld a,255
          call 1366
         
          ;Carga parte principal: los últimos 41536 bytes
          ld ix,24000
          ld de,41536
          scf
          ld a,255
          call 1366

          ;Carga parametros ultima carga y salta ultima carga
          ld sp,#0fffb
          di
          ;Borrado de pantalla
          ld hl,22528
          ld (hl),0
          ld de,22529
          ld bc,767
          ldir
          ld ix,16384
          ld de,7616
          scf
          ld a,255
          jp #0fe5b   ;En esta posicion estarán los bytes: C4 56 05 ED 45
          endp
         
          end 23760

4a. Para ello, primero compilo este código con PASMO y genero un .BIN de 59 bytes.
4b. Escribo un programa en BASIC con la primera línea REM seguida de 59 caracteres, seguida de unos borders, unos papers, mensajito de carga, etc. y al final, un RANDOMIZE USR (PEEK 23635+256*PEEK 23636+5)
4c. Con Spectaculator, cargo el .BIN de la rutina y al preguntar por dirección le digo la 23760 (en el Spectaculator previamente he desactivado Interface 1 y demás para que no desplace la variable PROG). El resultado es una línea REM con basura. Pokeo en 23755 y 23756 sendos ceros para hacer esa línea intocable.
4d. Creo en el Spectaculator un nuevo fichero TAP. Le llamo astro2008.tap. Desde BASIC hago un SAVE "astro2008" LINE 1, y al aparecer el "Start tape..." pulso Ctrl+Alt+Espacio para poner en marcha la "grabadora virtual" de Spectaculator. Pulso ENTER y ya tengo un TAP con un bonito cargador.

5. Sin abandonar Spectaculator, hago un reset al Spectrum y luego un CLEAR 23999. Cargo screen.bin arrastrando el fichero a Spectaculator. A la pregunta de dónde lo cargo, le digo que 24000. Después, grabo ese código al TAP con SAVE "screen" CODE 24000,6912

6. Hago lo mismo con main.bin y menu.bin, en este orden. Para cada uno de ellos, primero arrastro el fichero a Spectaculator, le digo que lo cargue a partir de 24000 y grabo el bloque al TAP como SAVE "main" CODE 24000,41536 y SAVE "menu" CODE 24000,7616. Antes de grabar "main" al TAP, pokeo a mano a partir de la dirección 65115 los valores 205,86,5,237,69. Estos son los códigos de CALL #0556 ; RETN (también hubiera valido modificarlo en el editor hexadecimal).

7. La cosa ya está casi lista. Sólo falta un retoque al TAP: la rutina que he escrito espera tres bloques sin cabecera, y los que he grabado están con cabecera, así que hay que quitársela. Esto seguro que se puede hacer mucho más comodamente con algún editor ad-hoc para ficheros TAP, pero como no tenía ninguno a mano, usé de nuevo el editor hexadecimal.

8. Con el editor hexadecimal cargo el TAP y busco cada uno de los tres bloques donde se almacenan las cabeceras (la primera parte de la carga). Cada uno de estos bloques ocupa 21 bytes
- 2 bytes para indicar la longitud del bloque sin contar estos 2 bytes (en la cabecera la longitud vale 19)
- De los 19 siguientes, tenemos:
* 1 que indica el byte de flag (vale 0 para la cabecera)
---------- AQUI VIENE LA INFORMACION ESTANDAR DE CABECERA -----
* 1 para indicar el tipo de bloque (vale 3 para Bytes:)
* 10 para el nombre del bloque, relleno con espacios
* 2 que indican la longitud del bloque de datos
* 2 que indican la dirección de comienzo del bloque de datos
* 2 no usados en bloques tipo Byte:
--------------------------------------------------------------------------------------
* 1 para el checksum
Así que uso el editor para suprimir los tres bloques del TAP que tienen esta información, quedándome sólo con el bloque completo (cabecera + datos) del BASIC, y tres bloques sin cabecera con la pantalla de carga, bloque principal, y bloque con la pantalla del menú. Grabo el resultado y listo.
Web: ZX Projects | Twitter: @zxprojects
Avatar de Usuario
mcleod_ideafix
Johnny Jones
 
Mensajes: 3982
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera

Notapor na_th_an el Lun Oct 29, 2007 11:14 am

Joe, qué dominio.

Genial, ahora podemos disfrutar del juego en formato cinta, mucho más adecuado sobre todo para jugar en la máquina real (aunque yo no pueda :P).
Avatar de Usuario
na_th_an
Nonamed
 
Mensajes: 1889
Registrado: Lun May 07, 2007 10:16 am
Ubicación: Andalucía

Notapor miguel el Lun Oct 29, 2007 12:09 pm

mcleod_ideafix escribió:Pues mira, dicho y hecho. Aquí tienes un TAP con vuestro juego y ehem, ehem... pantalla de carga incluida.


Muchas gracias por el curro.
Mi colección retro.
10 PRINT "TODOS SOMOS SROMERO, MENOS UNO QUE SE CREE QUE SÍ"
20 GO TO 10
Avatar de Usuario
miguel
Manic Miner
 
Mensajes: 293
Registrado: Mar Abr 17, 2007 12:27 am
Ubicación: Parla - Madrid

Notapor Cañadul el Lun Oct 29, 2007 5:54 pm

Hola.

Acabo de subir la version TAP publicada por mcleod_ideafix.

Estando disponible en la pagina de cañadul las version sna y tap.

Gracias.
Cañadul
rst 0
 
Mensajes: 4
Registrado: Dom Oct 28, 2007 9:57 pm

Notapor sromero el Lun Oct 29, 2007 7:41 pm

Hola ...

Desde hoy mismo tenéis la página Web de Cañadul hospedada en Speccy.org:

http://canadul.speccy.org/

Un saludo
NoP / Compiler
Avatar de Usuario
sromero
Nonamed
 
Mensajes: 1221
Registrado: Mar Abr 17, 2007 12:35 pm
Ubicación: Valencia

Notapor Ivanzx el Lun Oct 29, 2007 10:22 pm

Pues ya he tenido tiempo de jugar, y si que engancha el juego. Muy buenas criticas para este grupo, de momento estoy en el nivel 6, pero cuando tenga mas tiempo le meteré mas caña.

Un saludo pa los granadinos y a ver que nos tienen preparado para el futuro!
Ivanzx
Nonamed
 
Mensajes: 1185
Registrado: Lun May 07, 2007 12:11 pm
Ubicación: Frankfurt, Germany

Notapor mcleod_ideafix el Mar Oct 30, 2007 12:04 am

Cañadul escribió:Acabo de subir la version TAP publicada por mcleod_ideafix.

Espero que hayais cambiado la pantalla de carga :D
Web: ZX Projects | Twitter: @zxprojects
Avatar de Usuario
mcleod_ideafix
Johnny Jones
 
Mensajes: 3982
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera

Notapor Ivanzx el Mar Oct 30, 2007 12:36 am

mcleod_ideafix escribió:
Cañadul escribió:Acabo de subir la version TAP publicada por mcleod_ideafix.

Espero que hayais cambiado la pantalla de carga :D


Pues va a ser que no :lol:
Ivanzx
Nonamed
 
Mensajes: 1185
Registrado: Lun May 07, 2007 12:11 pm
Ubicación: Frankfurt, Germany

Notapor zyloj el Mar Oct 30, 2007 12:37 am

mcleod_ideafix escribió:
Cañadul escribió:Acabo de subir la version TAP publicada por mcleod_ideafix.

Espero que hayais cambiado la pantalla de carga :D

Carne de cañón para una denuncia por plagio para el señor Gates. ;P

Saludos
Avatar de Usuario
zyloj
Freddy Hardest
 
Mensajes: 711
Registrado: Mar Abr 17, 2007 12:31 am
Ubicación: cada día más lejos de aquí

Notapor mcleod_ideafix el Mar Oct 30, 2007 12:40 am

Por eso lo digo... esto pasa por no cargar las cosas a la velocidad adecuada... :D
Web: ZX Projects | Twitter: @zxprojects
Avatar de Usuario
mcleod_ideafix
Johnny Jones
 
Mensajes: 3982
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera

PrevioSiguiente

Volver a Programación y nuevos desarrollos

¿Quién está conectado?

Usuarios navegando este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron