ii.Ascend
0.5.0
dotnet add package ii.Ascend --version 0.5.0
NuGet\Install-Package ii.Ascend -Version 0.5.0
<PackageReference Include="ii.Ascend" Version="0.5.0" />
<PackageVersion Include="ii.Ascend" Version="0.5.0" />
<PackageReference Include="ii.Ascend" />
paket add ii.Ascend --version 0.5.0
#r "nuget: ii.Ascend, 0.5.0"
#:package ii.Ascend@0.5.0
#addin nuget:?package=ii.Ascend&version=0.5.0
#tool nuget:?package=ii.Ascend&version=0.5.0
iiAscend
C# library supporting the modification of files relating to Descent, the 1995 FPS game developed by Parallax Software.
| Name | Read | Write | Comment |
|---|---|---|---|
| 256 | ✔ | ✔ | |
| BBM | ✔ | ✔ | BBM/IFF |
| BNK | ✔ | ✔ | |
| DEM | ✔ | ✔ | |
| DIG | ✗ | ✗ | |
| FNT | ✔ | ✔ | |
| HAM | ✔ | ✔ | |
| HMP | ✗ | ✗ | |
| HMQ | ✗ | ✗ | |
| HOG | ✔ | ✔ | |
| INI | ✗ | ✗ | Plain text |
| MID | ✔ | ✗ | |
| MN2 | ✔ | ✔ | |
| MSN | ✔ | ✔ | Plain text |
| MVL | ✔ | ✔ | |
| PCX | ✔ | ✗ | |
| PIG | ✔ | ✗ | D1, D2 |
| POF | ✔ | ✔ | |
| RAW | ✔ | ✗ | |
| RDL | ✔ | ✔ | |
| RL2 | ✗ | ✗ | |
| S11 | ✔ | ✔ | |
| S22 | ✔ | ✔ | |
| SNG | ✔ | ✔ | Plain text |
| TXB | ✔ | ✔ |
Usage
Install the nuget package e.g.
dotnet add package ii.Ascend
To edit a file you should instantiate the relevant class and call the Read method passing the filename. This will return an object model, which you can amend, before calling the Write method.
var hogProcessor = new HogProcessor();
var files = hogProcessor.Read(@"D:\Games\Descent2\DESCENT2.HOG");
foreach (var (filename, bytes) in files)
{
var outputPath = Path.Combine(@"D:\data\descent", filename);
Directory.CreateDirectory(Path.GetDirectoryName(outputPath)!);
await File.WriteAllBytesAsync(outputPath, bytes);
Console.WriteLine($"Extracted {filename} ({bytes.Length} bytes)");
}
var txbProcessor = new TxbProcessor();
var text = txbProcessor.Read(@"D:\data\descent\credits.txb");
// Reading a Descent 1 demo: extract game data from the PIG file first
var pigProcessor = new Descent1PigProcessor();
var (_, _, _, gameData) = pigProcessor.ReadDetailed(@"D:\Games\Descent\DESCENT.PIG");
var robotModelNums = gameData.Robots.Select(r => r.ModelNum).ToArray();
var robotIsBoss = gameData.Robots.Select(r => r.BossFlag != 0).ToArray();
var polyModelNumSubmodels = gameData.PolygonModels.Select(p => p.NumModels).ToArray();
var demProcessor = new DemProcessor();
var demo = demProcessor.Read(@"D:\data\descent\demo1.dem", robotModelNums, robotIsBoss, polyModelNumSubmodels);
Console.WriteLine($"Demo version: {demo.Version}, Game type: {demo.GameType}");
Console.WriteLine($"Total events: {demo.Events.Count}");
Compiling
To clone and run this repository you'll need Git and .NET installed on your computer. From your command line:
# Clone this repository
$ git clone https://github.com/btigi/iiAscend
# Go into the repository
$ cd src
# Build the app
$ dotnet build
Licencing
iiAscend is licenced under the MIT License. Full licence details are available in licence.md
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- SixLabors.ImageSharp (>= 3.1.12)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.