Extension para DAAD imagenes de disco y nuvo compilador

Foro dedicado a la retroinformática, tienen cabida todas las cuestiones relacionadas con microordenadores clásicos.
Avatar de Usuario
Uto
MSX Turbo R
MSX Turbo R
Mensajes: 442
Registrado: 28 Abr 2014, 15:50
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo SNES
Primera consola: TV Games/Pong Clone
Gracias dadas: 5 veces
Gracias recibidas: 26 veces

Extension para DAAD imagenes de disco y nuvo compilador

Mensajepor Uto » 22 Abr 2019, 12:21

¡Hola!

Me comentan por ahi que hago cosas y luego no las cuento, así que vengo a hablar de mi libro: durante el ultimo año y pico he estado desarrollando una extensión para el parser DAAD de Aventuras AD, que permite cargar imágenes desde disco en lugar de usar los gráficos vectoriales.

Cuando empecé di soporte para ESXDOS en Spectrum, pero luego me fueron liando o me fui liando y añadí Amstrad CPC, luego MSX y finalmente hará como un més añadí el soporte para C64.

También hay, aunque un poco a medias, una version para Dandanator (Spectrum).

La extensión se llama MALUVA, en honor al viejo enano de la Aventura Original, y podéis encontrar toda la información aqui:

https://github.com/Utodev/MALUVA

Y un poco más de info en plan cutre aquí:

https://medium.com/@uto_dev/maluva-for- ... 62e48fa8ea

También dentro de Maluva hay una versión compilable para Windows/OSX/Linux de MCRF, una herramienta que los que hayan trasteado con DAAD en CPC conocerán (por el coñazo que es tener que ejecutarla en CP/M, con esta versión ya no hace falta).

La extensión Maluva soporta por tanto:

ZX Spectrum: ESXDOS y Dandanator(parcial)
CPC: Disquetes clásicos y M4
MSX: Disquetes MSX2 con MSDOS 1.0 o superior, y cualquier ermulación de dichos disquetes.
C64: Disquetera clásica o SD2IEC.

Además de Maluva, estoy desarrollando un compilador para DAAD ejecutable en maquinas actuales (sin tener que usar DOSBOX), el cual está ahora mismo en beta privada, pero pronto estará disponible.

Bueno, pues ya lo he contado :-)
http://www.ngpaws.com
Twitter: @uto_dev

Avatar de Usuario
llopis
Amstrad CPC 464
Amstrad CPC 464
Mensajes: 57
Registrado: 31 Jul 2018, 23:59
Sistema Favorito: Amstrad CPC
primer_sistema: Amstrad CPC
consola_favorita: Nintendo NES/Clónica
Ubicación: Asturias
Gracias dadas: 34 veces
Gracias recibidas: 18 veces
Contactar:

Re: Extension para DAAD imagenes de disco y nuvo compilador

Mensajepor llopis » 22 Abr 2019, 15:06

Muy bueno el proyecto! Me lo voy a tener que mirar detenidamente. Muchas gracias por publicarlo.

Avatar de Usuario
Demiurgo
Amstrad PC 1640
Amstrad PC 1640
Mensajes: 579
Registrado: 26 Oct 2014, 11:04
Sistema Favorito: MSX
primer_sistema: (Otro)
consola_favorita: Vectrex
Primera consola: Sega Game Gear
Gracias dadas: 81 veces
Gracias recibidas: 180 veces

Re: Extension para DAAD imagenes de disco y nuvo compilador

Mensajepor Demiurgo » 24 Abr 2019, 09:19

El señor Uto se ha dado un currazo impresionante. Iba a meterse con la versión para PCW cuando le dije que esa ya leía de disco en origen. 8-[

Y además también sabe programar aventuras. Toda mi admiración y respeto. Y envidia. =D>
Web del CAAD (Club de Aventuras AD): https://caad.club

Avatar de Usuario
GXY
Amiga 1200
Amiga 1200
Mensajes: 1445
Registrado: 05 Oct 2013, 08:21
Sistema Favorito: Commodore Amiga
primer_sistema: Spectrum +2
consola_favorita: Sony PlayStation 1
Primera consola: Sony PlayStation 1
Gracias dadas: 36 veces
Gracias recibidas: 119 veces

Re: Extension para DAAD imagenes de disco y nuvo compilador

Mensajepor GXY » 25 Abr 2019, 00:32

pues muy buen trabajo monsieur @uto mis felicitaciones.
RetroPescando... :mrgreen:

Avatar de Usuario
zup
Amiga 2500
Amiga 2500
Mensajes: 2967
Registrado: 04 Sep 2009, 20:07
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo DS/3DS
Primera consola: Nintendo GameBoy
Ubicación: Navarra
Gracias dadas: 68 veces
Gracias recibidas: 322 veces
Contactar:

Re: Extension para DAAD imagenes de disco y nuvo compilador

Mensajepor zup » 25 Abr 2019, 07:13

Preguntas rápidas/sugerencias de mejora...
- ¿Se va a implementar el soporte a +3DOS en el caso del ZX Spectrum? Es curioso que sea el único sistema sin soporte "nativo".
- ¿Cada gráfico va en un fichero aparte? ¿Sería posible meter toooodos los gráficos en un solo fichero?
- ¿Los gráficos utilizan algún sistema de compresión para ocupar menos (p.ej.: zx7)?

Preguntas generales de DAAD (por curiosidad):
- En el caso del Spectrum, prácticamente todos los juegos utilizan solo 48k... ¿limitación del DAAD? Si DAAD solo puede usar 48k... ¿se podría hacer un módulo externo que cargara los gráficos desde la memoria extra?
- Siempre me ha parecido sangrante que AD publicara sus aventuras para +3 en disco, pero que dichas aventuras graben y carguen desde cinta. Un proyecto que inicié hace tiempo (y no terminé) fue parchearlas para que grabaran/cargaran desde disco, y en alguna parte leí que el DAAD sí que soportaba grabar/cargar en disco. ¿Existen descompiladores de DAAD (y así poder recompilar con soporte de disco, o modificar aventuras de las que no existen los fuentes)?
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start.
Además vendo cosas!

Avatar de Usuario
Uto
MSX Turbo R
MSX Turbo R
Mensajes: 442
Registrado: 28 Abr 2014, 15:50
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo SNES
Primera consola: TV Games/Pong Clone
Gracias dadas: 5 veces
Gracias recibidas: 26 veces

Re: Extension para DAAD imagenes de disco y nuvo compilador

Mensajepor Uto » 26 Abr 2019, 10:41

zup escribió:Preguntas rápidas/sugerencias de mejora...


Hola!, antes de contestar a tus preguntas, quisiera plantear un poco con que objetivo se hizo esta extensión, y a donde ha llegado: inicialmente iba a ser una extensión para poder usar DAAD con ESXDOS en ZX Spectrum, de modo que

1) Se pudieran hacer gráficos más detallados al no tener que ser vectoriales
2) Se pudieran hacer aventuras más largas, al liberar el espacio ocupado por los gráficos vectoriales.

Debido al segundo objetivo, se creó otro objetivo secundario: que ocupe lo menos posible en RAM, para dejar todo el espacio posible para el autor de la aventura. Es por eso que seguramente revisando sus fuentes, podáis encontrar optimizaciones en velocidad posibles, pero ese no era el objetivo, las optimizaciones, salvo en casos muy concretos, se han hecho en espacio, no en velocidad.

Además, dentro de que estas cosas no son sencillas, se trataba de que el autor de juegos con DAAD, que por regla general no tiene grandes conocimientos técnicos, pudiera crear sus aventuras con gráficos sin tener en ningún momento que precouparse de temas técnicos como "en qué dirección se carga esto" o "no sé si me cabe el gráfico".

Voy con las preguntas:
zup escribió:Preguntas rápidas/sugerencias de mejora...
- ¿Se va a implementar el soporte a +3DOS en el caso del ZX Spectrum? Es curioso que sea el único sistema sin soporte "nativo".

La verdad es que está en mi to-do-list, pero sinceramente me parece irrelevante. De hecho aunque hay soporte nativo en otras máquinas, también me parece irrelevante, porque la extensión se ha hecho pensando en los dispositivos de alta velocidad disponibles para esas máquinas, lo que pasa es que en CPC, C64 y MSX, da la casualidad de que esos dispositivos lo que hacen es precisamente "engancharse" a las llamadas de leer disquetes, y en consecuencia, funciona con disquetes reales. +3DOS es un SO antiguo, para una maquina concreta, que no mucha gente tiene, y que el que la tiene pocas veces tiene disquetes. Hoy en día quien tiene un Spectrum físico montado, es raro que no tenga un DivMMC/IDE (o un ZX-Uno y en el futuro los Next), quien usa emuladores tiene estupendas soluciones como ZesarUX o RVM2 que soportan DivMMC. Si os fijáis últimamente todos los juegos que necesitan un almacenamiento así en Spectrum salen para Dandanator o ESXDOS. Pero bueno, esa es mi opinión. ¿Que si lo haré? Pues puede, pero más que nada por cerrar el círculo, no porque me parezca útil.

zup escribió:- ¿Cada gráfico va en un fichero aparte? ¿Sería posible meter toooodos los gráficos en un solo fichero?

Sí, cada uno aparte, y no, no es posible salvo quizá en ESXDOS, al menos que yo sepa. MSX DOS 1.0 no tiene un "fseek", en C64 ni lo he mirado, pero creo que tampoco y aunque lo tuviera, teniendo en cuenta que el acceso a disquetera es como es, lo más seguro es que tuviera que leer el fichero entero hasta llegar al punto en cuestion, lo cual en C64 es increíblemente lento. En cuanto a CPC, tampoco me acuerdo, hace un año que acabé esa versión, pero tampoco me suena ninguna llamada del firmware que permita hacer "SEEK". Quizá en el firmaware extendido de la interfaz M4 lo haya y se pudiera hacer.
zup escribió:- ¿Los gráficos utilizan algún sistema de compresión para ocupar menos (p.ej.: zx7)?

No, salvo en C64, que usa un RLE sencillo. La razón es que usar compresión implica

1) Tener un buffer donde cargar el comprimido, lo cual va en contra del objetivo de ocupar la menor memoria posible
2) Decidir de que tamaño va a ser ese buffer, y no poder poner gráficos que aun comprimido ocupe más
3) Hacerle la vida más difícil al usuario de la herramienta

No obstante, Maluva es una herramienta de código abierto con una licencia MIT que permitiría que cualquiera que vaya a hacer una aventura y tenga un amigo programador, o lo sea él mismo, pueda modificarla. Añadir compresión zx7 es realmente sencillo si sabes hacerlo, y para un juego concreto tú mismo decides de que tamaño vas a hacer el buffer una vez que sabes qué gráficos son.

En C64 hice un RLE sencillo, que la propia herramienta que trae Maluva genera, porque la disquetera del C64, e incluso sus sustitutos tipo SD2IEC, son increíblemente lentos, y consideré que era conveniente. Como fue él último al que se lo apliqué, no he vuelto atrás a aplicarle lo mismo a MSX, CPC y ZX, pero no creo que lo haga porque en MSXDOS 1.0 la carga era bastante rápida (unos 2 segundos), en CPC más o menos lo mismo (con M4 instantáneo claro) y además por usar modo 0 creo que el RLE no sería muy eficiente, y en ESXDOS la carga es instantánea.

Seguramente se puede coger la rutina de descompresión de zx7 y hacer que vaya leyendo byte a byte del disco, pero eso implicaría entender la rutina de descompresión zx7, cosa que se escapa a mis posibilidades actuales :-D

zup escribió:Preguntas generales de DAAD (por curiosidad):
- En el caso del Spectrum, prácticamente todos los juegos utilizan solo 48k... ¿limitación del DAAD? Si DAAD solo puede usar 48k... ¿se podría hacer un módulo externo que cargara los gráficos desde la memoria extra?

El DAAD está hecho para máquinas con 64k sí. Y sí, se podría hacer un módulo que cargara desde las páginas de RAM altas tanto para Spectrum como para CP6128 o C128 (y no sé si hay MSX1 de 128K). Eso sí, en ESXDOS no tiene sentido porque no vas a notar la diferencia de cargarlo de disco y cargarlo de la RAM, salvo que tengas conectado un DivIDE con un CDROM o algo así, pero vamos que hoy en día todo el mundo tiene su SD o CF como poco. en +3DOS podría tener más sentido, o incluso usar la RAM como caché de disco.


zup escribió:- Siempre me ha parecido sangrante que AD publicara sus aventuras para +3 en disco, pero que dichas aventuras graben y carguen desde cinta. Un proyecto que inicié hace tiempo (y no terminé) fue parchearlas para que grabaran/cargaran desde disco, y en alguna parte leí que el DAAD sí que soportaba grabar/cargar en disco. ¿Existen descompiladores de DAAD (y así poder recompilar con soporte de disco, o modificar aventuras de las que no existen los fuentes)?

[/quote]
El soporte de disco depende del intérprete, y hasta donde yo sé, el de Spectrum efectivamente graba solo a cinta. De hecho, es la versión de Spectrum de ESXDOS la única que tiene dos funciones más aparte de la de cargar gráfico, que son la de grabar partida y cargar partida a disco. Es desde luego viable extraer la BBDD del juego, añadirle un EXTERN para grabar y cargar y volver a compilarlo.

En la version ESXDOS de Maluva, sustituí las llamadas al SAVE y LOAD de DAAD por llamadas al addon, y este addon a su vez llama a las rutinas de pedir el nombre del fichero, y luego graba en ESXDOS.


Bueno, menuda chapa que he soltado. Espero que sea interesante!
http://www.ngpaws.com
Twitter: @uto_dev

Avatar de Usuario
zup
Amiga 2500
Amiga 2500
Mensajes: 2967
Registrado: 04 Sep 2009, 20:07
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo DS/3DS
Primera consola: Nintendo GameBoy
Ubicación: Navarra
Gracias dadas: 68 veces
Gracias recibidas: 322 veces
Contactar:

Re: Extension para DAAD imagenes de disco y nuvo compilador

Mensajepor zup » 27 Abr 2019, 09:57

Bueno, +3DOS es el sistema operativo que utilizan tanto el +3 como los +2e/+3e. Si instalabas las ROMs modificadas, podías escribir a tarjetas SD/CF o HDD con divide bastante antes de que ESXDOS existiera. El mayor problema de +3DOS (en divide) es que no soporta directorios (salvo ese chanchullo de espacios de usuario que comparte con AMSDOS y CP/M), lo que supone tener toooodos los ficheros desperdigados en el mismo sitio. De ahí la importancia de "integrar" todo en el mismo fichero... en un diskette puedes permitirte tener un par de docenas de archivos; si necesitas todos esos ficheros por juego tu SD va a parecer el almacén de "En busca del arca perdida".

Es curioso lo que comentas sobre fseek, yo creía que esas funciones formaban parte del ABC de un sistema de disco. Imagino que en aquellos años no se podían dar por supuestas las comodidades del mundo moderno ;)

Lo he comprobado y efectivamente en AMSDOS parece que no existe y en MSXDOS es una función reservada para DOS2 (que creo que solo corre en MSX2). Supongo que solo existe para +3DOS (privilegiados que somos) y CP/M (CPC y PCW... ¿soportaba DAAD crear juegos para CP/M? ¿o crear juegos bootables?).

Y lo que dices de la disquetera de C64... la verdad es que más que una disquetera parece un cassette con cintas planas. Aún así parece que los americanos la compraban como churros...
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start.
Además vendo cosas!

garillete
Amiga 2500
Amiga 2500
Mensajes: 3250
Registrado: 08 May 2006, 19:31
Gracias dadas: 234 veces
Gracias recibidas: 420 veces

Re: Extension para DAAD imagenes de disco y nuvo compilador

Mensajepor garillete » 27 Abr 2019, 17:57

Tambien los alemanes e ingleses en Europa principalmente que eran los que tenian dinero en la epoca... eso si es un mamotreto de narices y como comentas muy rapida no es...
Antiguos Bytes.
http://zonadepruebas.org/garillete

garillete
Amiga 2500
Amiga 2500
Mensajes: 3250
Registrado: 08 May 2006, 19:31
Gracias dadas: 234 veces
Gracias recibidas: 420 veces

Re: Extension para DAAD imagenes de disco y nuvo compilador

Mensajepor garillete » 27 Abr 2019, 18:18

Estee se me orvidaba.. los must have de la epoca para c64

Fatloaders...

https://www.c64-wiki.com/wiki/Compariso ... st_loaders

Aunque como se comentaba.. con las moderneces los tiempos de carga son muuuu rapidos....y en emulador para que hablar
Antiguos Bytes.

http://zonadepruebas.org/garillete


Avatar de Usuario
Uto
MSX Turbo R
MSX Turbo R
Mensajes: 442
Registrado: 28 Abr 2014, 15:50
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo SNES
Primera consola: TV Games/Pong Clone
Gracias dadas: 5 veces
Gracias recibidas: 26 veces

Re: Extension para DAAD imagenes de disco y nuvo compilador

Mensajepor Uto » 04 May 2019, 00:56

zup escribió:Bueno, +3DOS es el sistema operativo que utilizan tanto el +3 como los +2e/+3e. Si instalabas las ROMs modificadas, podías escribir a tarjetas SD/CF o HDD con divide bastante antes de que ESXDOS existiera.

Sí, soy consciente de la existencia de +3e/+2e, pero es aun más raro tenerlo que tener un +3 tal cual, por lo que solo ahondamos en sistemas muy superados -entrañables sí -pero ampliamente superados por DivMMC/IDE, tanto en caracteristicas como en unidades operativas a día de hoy.

Y efectivamente puedes usar fseek con MSX-DOS 2.0, pero está ligado a MSX2 hasta donde yo sé, algo en lo que no quise entrar por compatibildad. Yo también me llevé un sorpresón al no encontrar el fseek, también pensaba que era una cosa básica que llevaban todos los SO.

Respecto a crear juegos par Cp/M, si no me equivoco los juegos que genera DAAD para PCW en realidad funcionan bajo CP/M, así que supongo que es posible, pero solo en PCW.

Ahora mismo hay una persona creando un intérprete MSX2, con soporte de modos graficos mas avanzados que el modo 2 de MSX1, quizá en ese se pueda poner ese soporte de "fichero único".
http://www.ngpaws.com
Twitter: @uto_dev


Volver a “Microordenadores”

¿Quién está conectado?

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