Algunas utilidades para ROMs...

Aquí solo proyectos que incluyan el código fuente

Moderador: Fundadores

Reglas del Foro
Si no se incluyen los fuentes, se debe usar el foro de proyectos de software generales
Responder
Avatar de Usuario
Zup !Sinclair 1
Aspirante a demonio
Aspirante a demonio
Mensajes: 241
Registrado: 27 Ene 2019, 17:41
Ubicación: Navarra
Been thanked: 14 times

Algunas utilidades para ROMs...

Mensaje por Zup »

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.
  • 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.
Algunos ejemplos/sugerencias de uso:

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
(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):

Código: Seleccionar todo

make_fill disco.img 1440k 0
Comprobar si hay ficheros vacíos, llenos de ceros o 255 en un directorio (posiblemente ROMs inválidas):

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
Intercambiar los bits 3 y 4 de una ROM (la ROM del Ramjet tiene estos bits intercambiados):

Código: Seleccionar todo

bit_scramble 76534210 ramjet2.rom ramjet2u.rom
Intercambiar los bytes pares e impares de una ROM (ambas alternativas funcionan):

Código: Seleccionar todo

swap_oddeven bios.rom bios.swapped

Código: Seleccionar todo

addr_invert ===============i rom.bios rom.swapped
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/
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start.
Avatar de Usuario
Zup !Sinclair 1
Aspirante a demonio
Aspirante a demonio
Mensajes: 241
Registrado: 27 Ene 2019, 17:41
Ubicación: Navarra
Been thanked: 14 times

Re: Algunas utilidades para ROMs...

Mensaje por Zup »

Actualizo las utilidades. Ahora he incluído algunas para manipular las líneas de direcciones y datos de una ROM (me ha surgido la necesidad para echar un ojo a la ROM del Ramjet).
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start.
Responder

Volver a “Proyectos de software abiertos”