Cómo llenar de ROMs el Megaflash desde una programadora

Sistemas 464, 664, 6128, 472, ...
Avatar de Usuario
wilco2009
MSX Turbo R
MSX Turbo R
Mensajes: 401
Registrado: 29 Ago 2013, 15:48
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: ZX81
consola_favorita: Sega Master System
Primera consola: Atari 2600
Gracias dadas: 1 vez
Gracias recibidas: 7 veces

Cómo llenar de ROMs el Megaflash desde una programadora

Mensajepor wilco2009 » 10 Ene 2014, 11:54

A sugerencia de algún compañero que le falla la disquetera del CPC, voy a intentar explicar en unas pocas líneas como llenar de ROMs el megaflash con una programadora.

[hr]
EDITO: Adjunto este programa, cortesía de pachuquin que hace todo el proceso por nosotros, dejando un archivo listo para quemar
El programa permite seleccionar archivos .ROM, eliminando automáticamente la cabecera de AMSDOS y completándolos hasta 16Kb si es necesario.

Sólo hay que cargar las ROMs, ordenarlas en el orden deseado y generar el archivo .BIN listo para se quemado con la programadora en nuestra flash.

https://mega.co.nz/#!kABkhI5C!EC-IU19dg ... 0od_gSEhBc

Además el programa permite añadir huecos libres y guardar compilaciones para poder modificarlas más tarde.

Que lo disfrutéis.
[hr]

El primer paso es bajarse todas las ROMs que queremos instalar.
Yo aconsejaría que hicieramos una carpeta específica para esto, ya que nos va a resultar mucho más sencillo todo después.

Entre las ROMs que debemos copiar a la carpeta deben estar la ROM del basic y la del AMSDOS que instalaremos en las roms 0 y 7 respectivamente.

No es necesario que escojamos 32 ROMs, pero sí tenemos que instalarlas seguidas y sin huecos. Se podrían insertar hueco pero para eso necesitaríamos generar un archivo de 16384 bytes con $FF en todos sus bytes.

Como ejemplo aa carpeta podría quedar como sigue:

Imagen

El espacio que tenemos para cada ROM es de 16384 bytes, sin embargo, en la imagen anterior vemos algunos archivos que son más grande e incluso alguno que es más pequeño. Los archivos en esas condiciones no nos sirven y debemos modificarlos para que ocupen exactamente 16384 bytes.

Pero, ¿Porqué esos archivos ocupan diferente?.
Pues muy sencillo, hay dos motivos posibles:

  1. Los archivos que aparecen como ocupando 17Kb contienen una cabecera de $80 bytes (128 byte) que les añade el sistema operativo de disco (AMSDOS). En este caso hay que eliminar los primeros 80$ bytes con un editor hexadecimal.
  2. También puede ocurrir que el programa ocupe menos de 16Kb y el autor no haya rellenado la parte final hasta ocuparlos, por lo que deberemos hacerlo nosotros. En este último caso también puede ocurrir que lleve cabecera de AMSDOS, por lo que habría que eliminar estar cabecera y luego completar con $FF al final hasta los 16384 bytes

Para hacer lo anterior podéis usar cualquier editor hexadecimal. Yo he usado para el ejemplo el HxD que es gratuito.

Para cada ROM de las que aparecen con 17Kb eliminamos los primeros 128bytes:

Imagen

Y en la que aparece con 14Kb tenemos doble trabajo, porque tenemos que eliminar la cabecera AMSDOS como las demás partes de la ROM del Art Studio, pero además hay que completarla hasta los 16Kb con $FF, con la opción de insertar.

Imagen

Una vez tengamos recortados o ampliados los archivos que correspondan, nos deberían quedar todas las ROM con 16Kb:

Imagen

Ahora lo que debemos hacer en juntar todas las ROMs en un solo archivo para poder grabar el chip con la programadora.

Para ello abriremos una ventana de comandos y usaremos el comando "copy" de MSDOS pero con la opción /b para que la copia sea binaria y no termine al encontrar un caracter <EOF>.
Para facilitar un poco el trabajo yo lo que hago es hacerme un archivo bat con la ayuda del comando dir y las opciones redirección.

Como podemos ver en la siguiente imagen, el comando dir /b nos muestra el directorio actual pero solo con los nombres de archivo.
Si tecleamos "dir /b > copia.bat" nos generará un archivo de texto con todos los nombres de archivo de la carpeta actual.

Imagen

Ahora tendremos que editar el archivo con el notepad para conseguir el comando copy tal y como nos hace falta.

Lo que queremos conseguir es un comando con la siguiente estructura:

Código: Seleccionar todo

copy /b <nombre ROM0>+<nombre ROM1>+.........<nombre ROMn> <archivo a grabar>

Como veis en la imagen siguiente el truco consiste en ordenar los nombres que tenemos en el archivo generado con dir/b para que coincidan con el orden deseado, añadiendo un + al final.
Debemos recordar que hay que grabar el basic en la ROM0 y el AMSDOS en la ROM7. Adicionalmente puede interesarnos grabar el Booster ("-RMA---B.ROM") en la posición 15 para que se puedan inicializar las ROMs de la 16 a la 31. Aunque ya os aviso de que es incompatible con algunas ROMs y yo personalmente prefiero desoldar la ROM interna del CPC, poner un zócalo y sustituirla por la ROM parcheada que ya las inicializa de serie y que no tiene incompatibilidades conocidas.

El archivo quedaría algo así como este.

Imagen

Evidentemente debemos añadir el copy /b al principio y entrecomillar los archivos largos que contengan caracteres especiales.
Una vez hecho esto borramos los retornos de carro de cada línea para conseguir una sola línea:

Imagen

Guardamos el archivo y lo ejecutamos.

El resultado debería ser un archivo de un tamaño múltiplo de 16384. Es decir si hubieramos incluido 10 ROMs el tamaño final debería de ser 163840 bytes, ni uno más ni uno menos.

Ya con el archivo generado arrancaremos el programa de gestión de la grabadora, seleccionaremos el chip 29C040 (muy importante la "C"):

Imagen

Cargaremos el archivo bin que hemos generado, indicándole al programa que se trata de un archivo ".BIN".

Imagen

Y una vez con el archivo en memoria seleccionaremos la opción "Prog" para volcar el archivo en el chip.

Imagen

Cuando termine la grabación deberíamos seleccionar la opción "Unprotect" ya que al copiar el archivo desde el programador la memoria se vuelve a proteger contraescritura.

Pues a partir de ahora ya solo nos queda volver a insertar el chip en el megaflash y disfrutar de su contenido.

Suerte.....
Última edición por wilco2009 el 14 Ene 2014, 16:31, editado 1 vez en total.

Avatar de Usuario
jrodriguezv
MSX Turbo R
MSX Turbo R
Mensajes: 325
Registrado: 02 Jun 2012, 18:21
Sistema Favorito: Amstrad CPC
primer_sistema: Amstrad CPC
consola_favorita: Sega Genesis/Megadrive
Ubicación: Madrid

Re: Cómo llenar de ROMs el Megaflash desde una programadora

Mensajepor jrodriguezv » 11 Ene 2014, 09:20

Gracias Wilco, haces unos tutorial estupendos!!

Avatar de Usuario
Pachuquin
Amstrad PCW 8256
Amstrad PCW 8256
Mensajes: 146
Registrado: 07 Ago 2013, 17:37
Sistema Favorito: Spectrum +2
primer_sistema: Dragon
consola_favorita: Nintendo DS/3DS
Primera consola: TV Games/Pong Clone
Gracias recibidas: 1 vez

Re: Cómo llenar de ROMs el Megaflash desde una programadora

Mensajepor Pachuquin » 11 Ene 2014, 12:25

Hola Wilco2009:

Me ha parecido muy interesante y estaba pensando en hacer una pequeña utilidad que haga todo el trabajo tedioso, pero al buscar por internet como saber si un archivo tenía cabecera o no, he encontrado el CPR Builder. ¿Serviria?

Avatar de Usuario
wilco2009
MSX Turbo R
MSX Turbo R
Mensajes: 401
Registrado: 29 Ago 2013, 15:48
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: ZX81
consola_favorita: Sega Master System
Primera consola: Atari 2600
Gracias dadas: 1 vez
Gracias recibidas: 7 veces

Re: Cómo llenar de ROMs el Megaflash desde una programadora

Mensajepor wilco2009 » 11 Ene 2014, 13:11

Casi pero no.
Si te das cuenta está hecho para cartuchos del GX4000 y el Amstrad+, no para un interface del tipo del megaflash. Estos cartuchos soportan añadirle la lowerROM o firmware del CPC (que en el megaflash no está incluida) y parece que le han cambiado el orden a la información.

De todas formas la aplicación está muy curiosa y podría automatizarse para el megaflash de la misma forma.

Avatar de Usuario
Pachuquin
Amstrad PCW 8256
Amstrad PCW 8256
Mensajes: 146
Registrado: 07 Ago 2013, 17:37
Sistema Favorito: Spectrum +2
primer_sistema: Dragon
consola_favorita: Nintendo DS/3DS
Primera consola: TV Games/Pong Clone
Gracias recibidas: 1 vez

Re: Cómo llenar de ROMs el Megaflash desde una programadora

Mensajepor Pachuquin » 12 Ene 2014, 00:34

Wilco2009, al final he hecho la utilidad y parece que funciona. He comparado la romset que me generaba con la que obtenía siguiendo los pasos de tu primer post y el HxD me dice que ambos archivos son idénticos. No lo he podido probar ya que todavía no tengo el megaflash, pero te dejo aquí un enlace para que lo pruebes y me cuentes.

Megaflash.zip
Última edición por Pachuquin el 13 Ene 2014, 00:13, editado 2 veces en total.

Avatar de Usuario
wilco2009
MSX Turbo R
MSX Turbo R
Mensajes: 401
Registrado: 29 Ago 2013, 15:48
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: ZX81
consola_favorita: Sega Master System
Primera consola: Atari 2600
Gracias dadas: 1 vez
Gracias recibidas: 7 veces

Re: Cómo llenar de ROMs el Megaflash desde una programadora

Mensajepor wilco2009 » 12 Ene 2014, 00:45

Me parece genial!!!. :D
Muchas gracias por compartirlo.
Imagino que me das tu permiso para publicarlo por en otros foros, diciendo que es tuyo por supuesto.

Avatar de Usuario
Pachuquin
Amstrad PCW 8256
Amstrad PCW 8256
Mensajes: 146
Registrado: 07 Ago 2013, 17:37
Sistema Favorito: Spectrum +2
primer_sistema: Dragon
consola_favorita: Nintendo DS/3DS
Primera consola: TV Games/Pong Clone
Gracias recibidas: 1 vez

Re: Cómo llenar de ROMs el Megaflash desde una programadora

Mensajepor Pachuquin » 12 Ene 2014, 01:31

Que te parece si lo probamos primero y lo mejoramos . ¿Como ves ponerle una opción para que inserte huecos vacios? ¿Es util?

Estoy abierto a todo tipo de sugerencias.

Si lo has probado, ves que funciona y quieres puedes publicarlo por ahí con total libertad.

Avatar de Usuario
wilco2009
MSX Turbo R
MSX Turbo R
Mensajes: 401
Registrado: 29 Ago 2013, 15:48
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: ZX81
consola_favorita: Sega Master System
Primera consola: Atari 2600
Gracias dadas: 1 vez
Gracias recibidas: 7 veces

Re: Cómo llenar de ROMs el Megaflash desde una programadora

Mensajepor wilco2009 » 12 Ene 2014, 14:06

Pues aparentemente funciona de maravilla. :D
No estaría de más poderle añadir huecos y poder guardar las compilaciones de ROMsets para que no hiciera falta seleccionar todas las ROMs desde 0 cuando quieres añadir o quitar alguna.

Avatar de Usuario
Pachuquin
Amstrad PCW 8256
Amstrad PCW 8256
Mensajes: 146
Registrado: 07 Ago 2013, 17:37
Sistema Favorito: Spectrum +2
primer_sistema: Dragon
consola_favorita: Nintendo DS/3DS
Primera consola: TV Games/Pong Clone
Gracias recibidas: 1 vez

Re: Cómo llenar de ROMs el Megaflash desde una programadora

Mensajepor Pachuquin » 13 Ene 2014, 00:14

He actualizado el enlace con la nueva versión que incorpora tus sugerencias. Ya me cuentas.

Avatar de Usuario
wilco2009
MSX Turbo R
MSX Turbo R
Mensajes: 401
Registrado: 29 Ago 2013, 15:48
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: ZX81
consola_favorita: Sega Master System
Primera consola: Atari 2600
Gracias dadas: 1 vez
Gracias recibidas: 7 veces

Re: Cómo llenar de ROMs el Megaflash desde una programadora

Mensajepor wilco2009 » 13 Ene 2014, 08:31

Lo veo genial! :D :D

Me parece perfecto. Esta tarde probaré a generar alguna ROM con huecos y probarla en el megaflash.

-- Actualizado 13 Ene 2014, 21:42 --

Funciona perfecto, por lo que si quieres lo podemos distribuir por los foros en los que puse el tema del Megaflash, poniendo bien claro que tú eres el autor.

Incluso si quieres podemos subirlo a CPCWiki. Yo podría hablar con ellos.


Volver a “Amstrad CPC”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados