Karoshi MSX Community

Desarrollo MSX => Desarrollo (Español/Spanish) => Mensaje iniciado por: j4mk3 en 01 de Enero de 2012, 02:47:32 pm



Título: .CAS + MSX2 + BLOAD de pantalla
Publicado por: j4mk3 en 01 de Enero de 2012, 02:47:32 pm
Buenas,
Como algunos ya sabreis, la entrada de ThePetsMode al concurso de Basic de Konamito, no ha podido ser aceptada por el formato de entrega del juego.
Nos fue imposible conseguir que desde un .CAS se cargara un grafico con BLOAD,S en screen 5, en la página 2 de VRAM. [Si, tengo 128k VRAM configurados]
Los datos guardados eran correctos. Miré los bytes del fichero generado con BSAVE y veia la forma del dibujo correctamente en sus datos hexadecimales.

El mismo programa en .DSK cojonudo...sin problema.

Quisiera saber el porque no hemos podido ser capaces de realizar correctamente la carga.
Os dejo aquí un codigo de prueba, muy sencillito para que alguno de vosotros que quiera experimentar me diga en que me estoy equivocando para crear un archivo BASIC y un archivo BSAVE (binario) de pantalla (,S) y no me cargue nada de nada, aun que el BASIC dice que no ha tenido problemas para cargarlo.

Cargador BASIC (no tiene ningun misterio) ;)
Código:
10 SCREEN 5
20 SET PAGE 2,2
30 BLOAD"CAS:pict",S
40 IF INKEY$="" THEN 40
50 END

Creador de fichero binario (dibujo unos circulos concentricos y los salvo detrás del cargador BASIC anterior)
Código:
10 SCREEN 5
20 SET PAGE 2,2
30 FOR R=150 TO 10 STEP -10
40 CIRCLE (128,106),R,R/10
50 NEXT R
60 BSAVE"CAS:pict",0,&H6FFF,S
70 END

NOTA : He probado lo mismo en PAGE 0...y nada...que no carga el grafico. :(

A ver si me podeis resolver el misterio.


Título: Re: .CAS + MSX2 + BLOAD de pantalla
Publicado por: SapphiRe_MSX en 01 de Enero de 2012, 03:28:51 pm
Si mal no recuerdo, el ",S" sólo funciona desde disco...


Título: Re: .CAS + MSX2 + BLOAD de pantalla
Publicado por: j4mk3 en 01 de Enero de 2012, 03:50:08 pm
Si mal no recuerdo, el ",S" sólo funciona desde disco...
::wow:: ::wow:: ::wow::
Pues nada....no era un juego valido para el concurso de Konamito. END.


Título: Re: .CAS + MSX2 + BLOAD de pantalla
Publicado por: MsxKun en 01 de Enero de 2012, 03:57:38 pm
@SapphiRe: Xasto.
@J4mk3: Lo cual no quiere decir que no puedas colgar el juego en algun otro lado en formato DSK para que lo podamos ver :D


Título: Re: .CAS + MSX2 + BLOAD de pantalla
Publicado por: theNestruo en 01 de Enero de 2012, 04:37:15 pm
Joer, pues qué chasco :(

Puedes probar a convertir el BLOAD,S a BLOAD+LDIRVM (la rutina ensamblador que viene en las reglas) de la siguiente forma:

A la hora de generar el binario, pasas la parte de VRAM que quieras guardar a RAM y haces BSAVE normal. Como lo que quieres guardar es bastante tocho, tendrás que partirlo en fragmentos. Por ejemplo, dos:
- Pasas de VRAM &H0000-&H37FF a RAM a partir de &H9000 o &HA000 (esto se puede hacer en ensamblador, pero no sé cómo; en BASIC sería un FOR de POKEs y VPEEKs) y lo guardas con un BSAVE normal.
- Pasas de VRAM &H3800-&H6FFF a RAM y lo guardas también con un BSAVE normal.
A la hora de hacer el cargador, cargas el primer bloque con BLOAD y lo vuelcas a VRAM con la rutina que viene en las reglas del concurso. Luego cargas el segundo bloque y lo vuelcas igual (actualizando los valores de la rutina para que lo vuelque en su sitio).

Todo esto es válido si se hace el BLOAD,S desde un cargador antes de llamar al juego, que es un momento en el que hay mucha RAM libre. Otro tema sería que se hicieran diferentes BLOAD,S desde dentro del juego, lo que complicaría un poco el asunto: seguramente el código del juego acabe más allá de &HA000 o incluso &HB000 y entonces los fragmentos BLOAD deberían ser más y más pequeños...