Pasar "CAS" a "DSK". Turbocarga problem

Tolvatar
Mensajes: 445
Registrado: 30 Jun 2012 17:56
Agradecido : 1 vez
Agradecimiento recibido: 2 veces

Pasar "CAS" a "DSK". Turbocarga problem

Mensajepor Tolvatar » 03 Jul 2012 20:41

Hola.

Llevo un tiempo intentando pasar el juego "Templos Sagrados", de la imagen en formato CAS a ficheros para meterlos en un disco.

Bien, mi problema es que no se código máquina y aunque he hecho algunos progresos, necesito vuestra ayuda.

Adjunto el cargador de "Los Templos Sagrados" para que el que entienda código máquina me corrija y asesore.

En el "loader,bin" sale esto:

Código: Seleccionar todo

d51a dd210040  ld      ix,4000h
d51e 11001b    ld      de,1b00h
d521 cd7ed5    call    0d57eh


Para extraer la pantalla de carga hago esto:

Imagen

La muevo a &hBa00 para que se quede todo junto con el loader.bin que empieza en &hd500

Hago un bsave de la parte &hba00 hasta &hd850

Y luego intento esto:

Imagen

Imagen

Debería poder ver la pantalla de carga, pero no es así.

¿Qué estoy haciendo mal?

Perdon si mi problema está mal estructurado, planteado.

templossagradoscargador.zip

Avatar de Usuario
ron
Mensajes: 18561
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 1707 veces
Agradecimiento recibido: 1457 veces

Re: Pasar "CAS" a "DSK". Turbocarga problem

Mensajepor ron » 03 Jul 2012 21:28

Creo que Taburoto y Xgipe son tus hombres, me suena que Tabu tiene esto controlado. A ver que nos dice.

Tolvatar
Mensajes: 445
Registrado: 30 Jun 2012 17:56
Agradecido : 1 vez
Agradecimiento recibido: 2 veces

Re: Pasar "CAS" a "DSK". Turbocarga problem

Mensajepor Tolvatar » 03 Jul 2012 21:30

Ok. Esperaré
De momento me he dado cuenta de que en la linea 30 de el segundo listado he metido la gamba.
Al poner el comentario he borrado lo que debía ser:
30 poke&hd800,&hd21 osea el LD HL,XXX.
Seguramente me abré colado en algún sitio más.

BlackHole
Mensajes: 1147
Registrado: 03 Ago 2011 23:07
Ubicación: Aluche, Madrid
Agradecido : 11 veces
Agradecimiento recibido: 258 veces

Re: Pasar "CAS" a "DSK". Turbocarga problem

Mensajepor BlackHole » 04 Jul 2012 00:06

Copio lo que escribí el pasado 5 de Junio de 2012 en el foro SPAM!, en el hilo que abriste a tal efecto.

No sé si llegaste a ver mi contestación, porque unos días después te volví a preguntar si te sirvieron para algo los datos, y ahí quedó el hilo medio olvidado.

Buenas,

Yo en mi vida he usado un MSX ni siquiera en emulador. Pero bueno, he instalado el blueMSX y he visto que el juego en la cara A (la B será similar) hace lo siguiente:

- Primero mueve una rutina a 36864 ($9000) y la ejecuta. Ignoro su cometido; tiene pinta de tener algo que ver con la detección de características del equipo, activar o desactivar visibilidad de ROMs. Pero ni idea, ya he comentado que es la primera vez que me enfrento a esta máquina.

- Carga 6912 ($1B00) bytes en 16384 ($4000), correspondiente a la pantalla de carga en formato Spectrum. Podemos extraer esa parte de la memoria, grabarla a un fichero con extensión SCR y ver que la pantalla sale en cualquier emulador de Spectrum. A eso lo llamo yo ser super vagos.

- En vez de almacenar en cinta una pantalla en el orden adecuado, la anterior chapuza fuerza a llamar a una compleja y larga rutina de 196 bytes que va haciendo un parsing de la estructura original entrelazada de la pantalla de Spectrum y convirtiendo su información de color, para mandarla al VDP del MSX de forma acorde. Si no hemos puesto SCREEN 2 anteriormente desde el BASIC, sale basura.

- Carga 23605 ($5C35) bytes en 256 ($0100)
- Carga 14380 ($382C) bytes en 30676 ($77D4)
- Carga 8551 ($2167) bytes en 45056 ($B000)

Luego pokea varios valores que desconozco su uso en la máquina y salta al juego en 45056 ($B000)

Suerte...

Tolvatar
Mensajes: 445
Registrado: 30 Jun 2012 17:56
Agradecido : 1 vez
Agradecimiento recibido: 2 veces

Re: Pasar "CAS" a "DSK". Turbocarga problem

Mensajepor Tolvatar » 04 Jul 2012 00:12

Sorry Blackhole. Llevo un tiempo lejos del foro verde.
Te comento.
La primera rutina es un analizador de slots para localizar la memoria libre del MSX.
La pantalla de carga la tengo guardada pero no se como cargar la rutina de conversión. Creo que estoy metiendo la pata con la paginación de memoria.
Los bloques del programa los he podido guardar haciendo algunos cambios.
Bloque 1: Tengo que cargarlo en dos partes porque es muy grande y me pisa la zona del Basic o el programa de carga.
Bloque 2: Cargado, pero desubicado de su posición original
Bloque 3: Sin problemas.
Si alguien me explica como cargar la pantalla de presentación, lo demás sale solo.
Un saludo.

BlackHole
Mensajes: 1147
Registrado: 03 Ago 2011 23:07
Ubicación: Aluche, Madrid
Agradecido : 11 veces
Agradecimiento recibido: 258 veces

Re: Pasar "CAS" a "DSK". Turbocarga problem

Mensajepor BlackHole » 04 Jul 2012 00:28

Tolvatar escribió:La primera rutina es un analizador de slots para localizar la memoria libre del MSX.
Sí, bueno, la terminología es diferente, pero nos entendemos. Aún ignorando completamente el uso de puertos específicos en el MSX, la estrategia era similar a lo que se hace en Spectrum para saber si es de 128K: pokeamos una dirección, forzamos un supuesto cambio de banco de memoria y volvemos a comprobar el valor de dicha dirección.
Creo que estoy metiendo la pata con la paginación de memoria.
Desconozco el mapeado del MSX, pero sí, cierto que el juego sobreescribe el BASIC y por eso tiene la rutina de carga en la zona de arriba. Una de dos, o llamas al DOS para cargar los ficheros en su sitio, o te tocará mover bloques de memoria con LDIR o LDDR, pero ambas cosas implicarán código máquina.

Ahora mismo estoy ocupado con otro proyecto. Si saco un hueco, te diré dónde empieza y acaba la rutina exacta para decodificar la pantalla. Si no recuerdo mal, tenía unos bytes de código y luego una tabla de conversión de color que iba siendo referenciada en el proceso.

Tolvatar
Mensajes: 445
Registrado: 30 Jun 2012 17:56
Agradecido : 1 vez
Agradecimiento recibido: 2 veces

Re: Pasar "CAS" a "DSK". Turbocarga problem

Mensajepor Tolvatar » 04 Jul 2012 00:30

OK. Sin problema. Ya sabes que estoy liado con esto desde hace un mes. No tengo prisa.
Un saludo y gracias.

BlackHole
Mensajes: 1147
Registrado: 03 Ago 2011 23:07
Ubicación: Aluche, Madrid
Agradecido : 11 veces
Agradecimiento recibido: 258 veces

Re: Pasar "CAS" a "DSK". Turbocarga problem

Mensajepor BlackHole » 04 Jul 2012 03:19

Buenas,

Espero que no te hayas guiado en absoluto de los valores de esa captura tuya del "Turbo 5000" porque los datos de los bloques no tienen nada que ver. Por no saber, el programa no sabe ni restar, pues en el cargador inicial entre &D500 y &D79A (al ser inclusive) hay 667 bytes, no 666.

La rutina para pasar la pantalla de Spectrum a la VRAM son 196 bytes entre &D641 y &D704 (inclusive). Los parámetros de entrada son la dirección inicial de la pantalla a mover en HL (&4000 o en tu caso &BA00), número de filas en B (24) y número de columnas en C (32).

Si tomamos el loader.bin original entero, podríamos llamar a &D524 que es donde están los parámetros anteriores que llaman después a &D641, pero tendríamos que meter un RET (&C9) en &D52E para devolver el control al BASIC.

Por cierto, ¿seguro que es tu primer bloque el que te solapa el BASIC? El bloque primero del juego tras la pantalla, de 23605 bytes, debería quedar íntegro bajo la ROM. No alcanza la dirección del BASIC que empieza en &8000 si no veo mal. Es el segundo bloque tras la pantalla el que solapa el BASIC en el juego.

BlackHole
Mensajes: 1147
Registrado: 03 Ago 2011 23:07
Ubicación: Aluche, Madrid
Agradecido : 11 veces
Agradecimiento recibido: 258 veces

Re: Pasar "CAS" a "DSK". Turbocarga problem

Mensajepor BlackHole » 07 Jul 2012 03:28

Useful pokes

The following pokes can be useful to the Basic programmer:

POKE &HF677,&Hxx
POKE &HF676,&Hyy + 1
POKE &Hxxyy,0

Changes Basic load address to the given value of &Hxxyy (where you can fill in xxyy to e.g. &HC000). The next program that is loaded will run from that address instead of &H8000 (the default). Useful for hybride programming where you want to use the address &H8000-&HBFFF for assembly code or data. A loader could for example check whether these values are set, and if not, set them and reload itself.


Volver a “MSX”

¿Quién está conectado?

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