iiLunarTides is a C# library supporting the modification of files relating to Solar Winds, the 1993 space RPG game developed by James Schmalz.
| Name | Read | Write | Comment |
|---|---|---|---|
| bh_char | 〰️ | RLE sprite sheet (partial) | |
| bh_conv | |||
| bh_epal | ✔ | VGA palette (Epic logo) | |
| bh_epic | ✔ | Fullscreen RLE (count−1), 320×200 | |
| bh_expl | ✔ | Uncompressed / RLE sprites | |
| bh_hype | ✔ | RLE sprites | |
| bh_imp | ✗ | ||
| bh_iord | ✗ | ||
| bh_mis | ✔ | Uncompressed / RLE sprites | |
| bh_mp1 | ✔ | VGA palette | |
| bh_mp2 | ✔ | VGA palette | |
| bh_mp3 | ✔ | VGA palette | |
| bh_ms | ✗ | ||
| bh_mu1 | Music - Creative Media File | ||
| bh_mu2 | Music - Creative Media File | ||
| bh_mu3 | Music - Creative Media File | ||
| bh_mu4 | Music - Creative Media File | ||
| bh_mu5 | Music - Creative Media File | ||
| bh_mu6 | Music - Creative Media File | ||
| bh_mu7 | Music - Creative Media File | ||
| bh_mu8 | Music - Creative Media File | ||
| bh_mu9 | Music - Creative Media File | ||
| bh_mu10 | Music - Creative Media File | ||
| bh_mu11 | Music - Creative Media File | ||
| bh_mu12 | Music - Creative Media File | ||
| bh_mu13 | Music - Creative Media File | ||
| bh_mw1a | ✔ | Fullscreen RLE (count−1), 320×200 | |
| bh_mw1b | ✔ | Fullscreen RLE (count−1), 320×200 | |
| bh_mw2a | ✔ | Fullscreen RLE (count−1), 320×200 | |
| bh_mw2b | ✔ | Fullscreen RLE (count−1), 320×200 | |
| bh_mw2p | ✔ | Fullscreen RLE (count−1), 320×200 | |
| bh_mw3a | ✔ | RLE sprites | |
| bh_mw3b | ✔ | RLE sprites | |
| bh_obj | ✗ | ||
| bh_ord | ✔ | Fullscreen RLE (count−1), 320×200 | |
| bh_pal | ✔ | VGA palette (8-bit/channel) | |
| bh_pan | ✗ | ||
| bh_peop | 〰️ | RLE portraits | |
| bh_pic | ✔ | 320×80 title banner | |
| bh_plan | ✔ | RLE sprites | |
| bh_scrn | ✔ | B800 Text | |
| bh_seq | ✔ | Fullscreen RLE (count−1), 320×200 | |
| bh_seq2 | ✔ | RLE sprites | |
| bh_shd | ✔ | Shield overlays | |
| bh_ship | ✗ | ||
| bh_sml | ✔ | Uncompressed / RLE sprites | |
| bh_start | ✔ | Ship scanner text (initial game state) | |
| bh_title | ✔ | Fullscreen RLE (count−1), 320×200 | |
| bh_vfd | ✔ | Creative VOC → mono 8-bit WAV | |
| bh_wr | ✔ | Fullscreen RLE (count−1), 320×200 | |
| config | ✗ | ||
| page | ✗ | ||
| HSAV## | ✔ | Save game | |
| SAVLST | ✔ | Save slot index (10 labels) |
Instantiate Processor and call Read with the file path and an optional palette.
The decoder is chosen from the filename automatically:
var gameDirectory = @"D:\Games\SolarWinds\ep1-the-escape\";
var processor = new Processor();
foreach (var d in Directory.GetFiles(gameDirectory, "*.dat"))
{
var filename = Path.GetFileName(d);
var palette = processor.GetAssociatedPaletteFilename(d);
var result= palette != null ? processor.Read(d, Path.Combine(gameDirectory, palette)) : processor.Read(d);
if (result.Images != null)
{
for (var i = 0; i < result.Images.Count; i++)
{
result.Images[i].SaveAsJpeg($@"D:\data\solarwinds\{filename}-{i}.jpg");
}
}
if (result.WavSamples != null)
{
for (var i = 0; i < result.WavSamples.Count; i++)
{
File.WriteAllBytes($@"D:\data\solarwinds\{filename}-{i}.wav", result.WavSamples[i].Wav);
}
}
}To clone and run this application, you'll need Git and .NET installed on your computer. From your command line:
# Clone this repository
$ git clone https://github.com/btigi/iiLunarTides
# Go into the repository
$ cd src
# Build the app
$ dotnet build
iiLunarTides is licenced under the MIT License. Full licence details are available in licence.md