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

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!