Antes de que se me olvide como pasé los TAPs de IDEALOGIC a PRG... que me estoy enrroscando con los NOVALOAD...
Así en breve: Los juegos para niños de IDEALOGIC vienen con una primera presentación de IDEALOGIC y luego el juego en si.
Para conservar la esencia de la cinta, quise conservar esa presentación, pero que estuviera todo contenido en un único bloque PRG.
Bien, el primer bloque contiene el cargador con la presentación escrita en BASIC, pero además, tiene parte oculta en ensamblador mas allá del BASIC donde se encuentra el código del turbo, los graficos de los CHARTs para las letras de IDEALOGIC y el lanzador del juego, pero en algunos casos la llamada al juego estaba oculta en la parte BASIC, por lo que tenía que conservar esa parte también.
Luego, el segundo bloque de la cinta, tenía el propio juego, pero no podía ser llamado independientemente, porque necesitaba parte del código contenido en el cargador.
El proceso fue el siguiente:
Cargar el programa en BASIC-ASSEMBLER y luego desde el monitor del VICE y con ayuda del DIRMASTER también, buscar donde empezaba el bloque de emsamblador y grabarlo independientemente. No podía hacer ninguna modificación en el BASIC, porque se cambiaban las posiciones en memoria y entonces no funcionaba bien. (errores en las letras o no funcionaba el cargador)
Una vez separado el archivo en dos, procedía a realizar unos pequeños cambios en el BASIC, como eliminar lo de "TIEMPO DE CARGA" y poniendo un titulo adicional y cambiando "CARGAR" por "EMPEZAR" ¿Sencillo, no?
Bueno, luego en el cargador, eliminaba la parte de carga de cinta y la sustituía por la llamada al JUEGO directamente. (El juego ya estaba incorporado en memoria como explicaré mas adelante)
Dependiendo del editor del juego, o Spinnaker o Fisher-Price, el sistema de llamada al juego cambiada. Por supuesto, tenía que buscar la llamada al juego en el cargador, para luego incorporarlo al programa BASIC mediante un SYS.
Fisher-Price tenía oculto el SYS de llamada en las lineas DATA. ¿como es eso? Pues deshabilitaban el buffer del teclado, luego cargaban los DATAS en el buffer del teclado, que no era mas que un "Clear Home, RETURN, SYS (Dirección), RETURN" (Escrito en PETASCII, tuve que consultar tabla) Y nuevamente habilitaban el buffer del teclado. Por lo que era como si se metiera la orden mas RETURN.
Los de SPINNAKER ocultaban la llamada desde el BASIC haciendo una jugarreta con una linea REM y tabulador hacia atrás. Desde el BASIC en el C64 no se ven esas trampas, pero desde el DIRMASTER, se ven todos esos trafullos para ocultar comandos.
También comentar que tenían codigo ensamblador oculto en las primeras lineas de REM del programa. Hay una pequeña técnica que permite mezclar ensamblador en estas lineas, pero cuando se hace un LIST, arroja cosas raras que solo son detectables como programa desde el Monitor de codigo maquina.
Bueno, pues con el programa en BASIC por un lado, la parte ensamblador por otro, colocado en su lugar que le corresponde, solo faltaba añadir el bloque del juego.
Aquí es donde interviene el EXOMIZER, que me permite unir los tres bloques y darle la dirección de arranque. Como el cargador es en BASIC, que contiene la llamada al juego, pues le decía al compresor que arrancara la primera posición en BASIC.
Un ejemplo del comando:
exomizer sfx basic "ranchobas2.prg" "ranchoasm.prg" "rancho.prg" -s "lsr $d011" -f "rol $d011" -x "lda $fb eor #$01 sta $fb beq skip inc $d020 skip:" -o "el rancho fisher price.prg"
Le digo me que junte la parte en BASIC, la parte en ensamblador del loader (que había separado previamente) y el bloque del juego en sí. Al principio del comando le digo mediante "sfx basic" que arranque en la primera posición del BASIC. Si el juego empieza en $4000, pues le diría "sfx 0x4000"
El resto de parametros es inyectar el la descomrpesión el efecto de como si estuvieramos cargando una cinta, pero lo que está haciendo es descomprimir en memoria. Y finalmente nos da un unico archivo como "el rancho fisher price.prg.
No lo he comentado, pero lo hago ahora. Los bloques de la cinta los extraigo con el FinalTAP.
Bueno, es mas o menos a groso modo como se han realizado los PRGs de IDEALOGIC.
Estoy apuntando todas las direcciones de arranque de los juegos y los comandos empleados con el Exomizer para poder luego juntarlo todo en un documento en un futuro cercano. Pero si alguien le pica la curiosidad respecto algún juego que vaya pasando, puede preguntar.
Un saludo.
Minter
