Página 1 de 2

Extension para DAAD imagenes de disco y nuvo compilador

Publicado: 22 Abr 2019, 12:21
por Uto
¡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 :-)

Re: Extension para DAAD imagenes de disco y nuvo compilador

Publicado: 22 Abr 2019, 15:06
por llopis
Muy bueno el proyecto! Me lo voy a tener que mirar detenidamente. Muchas gracias por publicarlo.

Re: Extension para DAAD imagenes de disco y nuvo compilador

Publicado: 24 Abr 2019, 09:19
por Demiurgo
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>

Re: Extension para DAAD imagenes de disco y nuvo compilador

Publicado: 25 Abr 2019, 00:32
por GXY
pues muy buen trabajo monsieur @uto mis felicitaciones.

Re: Extension para DAAD imagenes de disco y nuvo compilador

Publicado: 25 Abr 2019, 07:13
por zup
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)?

Re: Extension para DAAD imagenes de disco y nuvo compilador

Publicado: 26 Abr 2019, 10:41
por Uto
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!

Re: Extension para DAAD imagenes de disco y nuvo compilador

Publicado: 27 Abr 2019, 09:57
por zup
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...

Re: Extension para DAAD imagenes de disco y nuvo compilador

Publicado: 27 Abr 2019, 17:57
por garillete
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...

Re: Extension para DAAD imagenes de disco y nuvo compilador

Publicado: 27 Abr 2019, 18:18
por garillete
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

Re: Extension para DAAD imagenes de disco y nuvo compilador

Publicado: 04 May 2019, 00:56
por Uto
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".