Resources for decoding Amiga Amberstar data files, including Hippel-CoSo sound modules.
Make sure that the Amiga Amberstar data files are in the data/
subdirectory. Their names should be in all-caps (AMBERDEV.UDO
etc.). Alternatively, use the --data parameter to specify their
location.
To compile and run, the easiest interface is the Rust cargo tool:
cargo run: Map demo, allows walking through first-person dungeonscargo run song $X: Plays the in-game song${X}(no looping)cargo run strings: Dump out all text stringscargo run gfx-demo: Shows some graphicscargo run list-pixmaps: enumerate most in-game graphicscargo run list-palettes: enumerate most in-game palettes, also lists their default palettescargo run extract-pixmap <name> [palette-name]: Extract pixmap to a png;palette-namemust be specified for pixmaps that have no default palette
I wanted a zero-stakes project to learn the basics of Rust, and this seemed fun. No promises as to whether this will or will not go anywhere.
- German/English versions: should work equally well
Very much WIP. The following bits work to some extent:
- Data: Container format decoding is fully supported
- Text: String extraction seems to work
- In-Game Songs: Can play and debug the Hippel-CoSo songs (not the intro/outro ones)
- Graphics: Decoding for most graphics works (fonts, UI icons are missing, but I'm not sure I'll want to add them)
- Maps: Get loaded and can be traversed
The following get partially decoded but don't do anything yet
- Game Scripts
- Items
- Please check the Ambermoon file formats documentation for details
- The table below lists what this project decodes
| File | Supported |
|---|---|
| AMBERDEV.UDO | songs and some tables |
| AUTOMAP.AMB | |
| BACKGRND.AMB | yes |
| CHARDATA.AMB | partially (missing some attributes) |
| CHESTDAT.AMB | |
| CODETXT.AMB | yes |
| COL_PALL.AMB | yes |
| COM_BACK.AMB | yes |
| EXTRO.UDO | |
| F_T_ANIM.ICN | not incorporated yet |
| ICON_DAT.AMB | yes |
| INTRO_P.UDO | |
| INTRO.UDO | |
| LABBLOCK.AMB | yes |
| LAB_DATA.AMB | yes |
| MAP_DATA.AMB | mostly |
| MAPTEXT.AMB | yes |
| MON_DATA.AMB | |
| MON_GFX.AMB | yes |
| PARTYDAT.SAV | |
| PICS80.AMB | yes |
| PUZZLE.ICN | |
| PUZZLE.TXT | |
| SAMPLEDA.IMG | yes |
| TACTIC.ICN | not incorporated yet |
| TH_LOGO.UDO | |
| WARESDAT.AMB |
- Ambermoon resources and format specification: https://github.com/Pyrdacor/Ambermoon
Check src/util.rs for integration with the Rust logging infrastructure. To enable logging for a specific module,
such as datafiles::map, you can set:
RUST_LOG="warn,amber_remix::datafiles::map=info" cargo run demo
This work is based by documentation collected from the following sources:
- Pyrdacor's collection of documentation for Ambermoon and Amberstar
- Pyrdacor's collection of AmberMoon documentation: [https://github.com/Pyrdacor/Ambermoon]
- Heikki Orsila's UADE, specifically m68k assembly implementations of Jochen Hippel's sound formats
- Christian Corti's Flod 4.1 player for Jochen Hippel's 4-voice formats
- Jurie Horneman for the commented Atari ST Ambermoon assembly code