Algunas utilidades para ROMs...
Publicado: 31 May 2020, 12:54
Aquí van unas cuantas utilidades cutres para tratar (fundamentalmente) con ROMs. Son cosas que nunca encuentro una herramienta para hacerlas (aunque varias de las de tamaño se pueden hacer con dd), y que me han venido bien para algunas cosas que tenía en mente. Todas son para línea de comandos, ya que están pensadas para ir metidas en un script.
Descodificar las ROMs del Amiga Forever:
(Curiosidad: las versiones viejas de Amiga Forever incluyen rom.key, las nuevas parece que no)
Crear una imagen de discquete vacío (por ejemplo, para Virtualbox):
Comprobar si hay ficheros vacíos, llenos de ceros o 255 en un directorio (posiblemente ROMs inválidas):
Intercambiar los bits 3 y 4 de una ROM (la ROM del Ramjet tiene estos bits intercambiados):
Intercambiar los bytes pares e impares de una ROM (ambas alternativas funcionan):
El código es bastante cutre, pero al menos funciona sin errores (conocidos). La página web correspondiente es esta:
https://blogmeas.wordpress.com/2020/05/ ... para-roms/
- Para manipular el tamaño: pad_file, remove_header, remove_tail, cut_file, split_file y make_fill
- Para manipular el orden de bytes: join_oddeven, split_oddeven y swap_oddeven.
- Comprobar el contenido: is_rep.
- (De)codificar ficheros: xorfiles, bit_scramble, bit_invert, addr_scramble, addr_invert.
Descodificar las ROMs del Amiga Forever:
Código: Seleccionar todo
@echo off
for %%z in (*.rom) do remove_header 11 %%z %%z.noheader
for %%z in (*.noheader) do xorfiles rom.key %%z %%z.decrypt
del *.noheader
Crear una imagen de discquete vacío (por ejemplo, para Virtualbox):
Código: Seleccionar todo
make_fill disco.img 1440k 0
Código: Seleccionar todo
@echo off
del resultado.temporal
dir /s /a /b /l %1 > listado.temporal
for /f "delims=" %%z in (listado.temporal) do is_rep "%%z" 255 >> resultado.temporal
type resultado.temporal | find "V:" > resultado.txt
type resultado.temporal | find "0:" >> resultado.txt
type resultado.temporal | find "I:" >> resultado.txt
del resultado.temporal
del listado.temporal
type resultado.txt
Código: Seleccionar todo
bit_scramble 76534210 ramjet2.rom ramjet2u.rom
Código: Seleccionar todo
swap_oddeven bios.rom bios.swapped
Código: Seleccionar todo
addr_invert ===============i rom.bios rom.swapped
https://blogmeas.wordpress.com/2020/05/ ... para-roms/