Bueno, aquí está. Lo he probado con mis fuentes y funciona. Paso el código fuente (freeBasic) por si alguien lo quiere compilar para Linux (debería detectarlo en tiempo de compilación y usar "/" en lugar de "\" para los paths).
Yo lo he probado así: Tengo mi /dev con un montón de .exo que incluyo en el código del juego (niveles, músicas...). Dentro de /dev tengo un directorio "src" que tiene los fuentes originales .hp y .cp que contienen instrucciones BINARY/INCBIN dentro de bloques __asm para incluir dichos .exo.
Si desde /dev ejecuto
La pequeña utilidad escanea "src", lee los archivos ".hp" y ".cp", y genera archivos ".h" y ".c" en "." (o sea, en "/dev") incluyendo los binarios como ".DB".
La salida por pantalla es:
Código: Seleccionar todo
SDCC Preprocessor by The Mojon Twins v0.1
Input folder src
Output folder .
Preprocessing src\ababol2a.cp
Writing output to .\ababol2a.c
Preprocessing src\basio.hp
Writing output to .\basio.h
Preprocessing src\config.hp
Writing output to .\config.h
Preprocessing src\definitions.hp
Writing output to .\definitions.h
Preprocessing src\engine.hp
Writing output to .\engine.h
Preprocessing src\levelmanager.hp
Writing output to .\levelmanager.h
Including level0c.exo
Including level1c.exo
Preprocessing src\mysystem.hp
Writing output to .\mysystem.h
Preprocessing src\pantallas.hp
Writing output to .\pantallas.h
Including titlec.exo
Preprocessing src\printer.hp
Writing output to .\printer.h
Preprocessing src\sound.hp
Writing output to .\sound.h
Including m_title.exo
Including m_level_1.exo
Including m_level_2.exo
Including m_level.exo
Including m_gover.exo
Preprocessing src\spriteset.hp
Writing output to .\spriteset.h
DONE!
Por ejemplo, en sound.hp teníamos un...
y ahora hay esto en el sitio equivalente de sound.h:
Código: Seleccionar todo
; [3] Game Over
_song_4:
.DB #0x00, #0x06, #0x34, #0x50, #0x10, #0x00, #0x00, #0x00
.DB #0x00, #0x00, #0x14, #0x35, #0x02, #0x46, #0x04, #0x70
.DB #0x00, #0x00, #0x01, #0x30, #0x01, #0x03, #0x45, #0x63
.DB #0x00, #0x02, #0x04, #0xD3, #0x07, #0x00, #0x3F, #0x01
.DB #0xD2, #0x97, #0x57, #0x59, #0x9F, #0x96, #0x92, #0xBE
.DB #0x52, #0x54, #0x26, #0xCE, #0xF4, #0x94, #0xD7, #0xFE
.DB #0xA8, #0xD4, #0x85, #0xC1, #0x43, #0xA8, #0x07, #0xB8
.DB #0x3F, #0xFD, #0x0F, #0x63, #0x62, #0xA0, #0x04, #0xFD
.DB #0x9E, #0x60, #0x5E, #0xA2, #0xCB, #0x01, #0xF3, #0xE3
.DB #0x51, #0xE0, #0x63, #0x41, #0x80, #0x7E, #0x73, #0x0C
.DB #0xAF, #0xC8, #0xAE, #0xAC, #0xC4, #0xAA, #0x96, #0xEF
.DB #0x5F, #0x3F, #0x03, #0x80, #0xEC, #0x1F, #0xAA, #0xC1
.DB #0x00, #0x00, #0x20
A mí me viene de arte, según mi forma de hacer las cosas. Lo comparto por si a alguien también le viene guay.