feat(a1): SYS4 container parser (header + code decode + data_array_end shrink)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
gamer147
2026-07-06 13:51:32 -04:00
parent f3fe8ffe58
commit 0cb83fcb62
2 changed files with 91 additions and 0 deletions

View File

@@ -0,0 +1,22 @@
using Age.Engine.Sys4;
using Xunit;
public class Sys4LoaderTests
{
[Fact]
public void ParsesMenuBinLikeSys4load()
{
var table = OpcodeTableJson.Load(Paths.OpcodesJson);
var s = Sys4Loader.Load(Path.Combine(Paths.Data1, "MENU.BIN"), table);
// header F0..F5 from `sys4load MENU.BIN --summary`
Assert.Equal(0x17, s.Header.LocalInt1);
Assert.Equal(1, s.Header.LocalFloats);
Assert.Equal(1, s.Header.LocalStrings1);
Assert.Equal(2, s.Header.LocalInt2);
Assert.Equal(1, s.Header.Unknown);
Assert.Equal(1, s.Header.LocalStrings2);
Assert.Equal(148, s.Instructions.Count); // sys4load: 148 instructions
Assert.Equal(3, s.Strings.Count); // sys4load: 3 inline strings
Assert.All(s.Instructions, ins => Assert.True(s.IndexByOffset.ContainsKey(ins.Offset)));
}
}