Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor sample index storage #675

Merged
merged 4 commits into from
May 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 22 additions & 23 deletions TRLevelControl/Control/TR2LevelControl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -322,7 +322,6 @@ private void ReadSoundEffects(TRLevelReader reader)
{
Volume = reader.ReadUInt16(),
Chance = reader.ReadUInt16(),
Samples = new()
});

sfx[i].SetFlags(reader.ReadUInt16());
Expand All @@ -331,14 +330,9 @@ private void ReadSoundEffects(TRLevelReader reader)
uint numSampleIndices = reader.ReadUInt32();
uint[] sampleIndices = reader.ReadUInt32s(numSampleIndices);

foreach (int soundID in sampleMap.Keys)
foreach (var (soundID, samplePointer) in sampleMap)
{
TR2SoundEffect effect = sfx[soundID];
ushort baseIndex = sampleMap[soundID];
for (int i = 0; i < effect.Samples.Capacity; i++)
{
effect.Samples.Add(sampleIndices[baseIndex + i]);
}
sfx[soundID].SampleID = sampleIndices[samplePointer];
}

for (int i = 0; i < soundMap.Length; i++)
Expand All @@ -354,33 +348,38 @@ private void ReadSoundEffects(TRLevelReader reader)

private void WriteSoundEffects(TRLevelWriter writer)
{
short detailsIndex = 0;
foreach (TR2SFX id in Enum.GetValues<TR2SFX>())
List<TR2SoundEffect> effects = new(_level.SoundEffects.Values);
List<uint> sampleIndices = effects.SelectMany(s => Enumerable.Range((int)s.SampleID, s.SampleCount))
.Select(s => (uint)s)
.Distinct().ToList();

sampleIndices.Sort();

Dictionary<TR2SoundEffect, ushort> sampleMap = new();
foreach (TR2SoundEffect effect in effects)
{
writer.Write(_level.SoundEffects.ContainsKey(id) ? detailsIndex++ : (short)-1);
sampleMap[effect] = (ushort)sampleIndices.IndexOf(effect.SampleID);
}

List<uint> samplePointers = new();
foreach (var (_, effect) in _level.SoundEffects)
effects.Sort((e1, e2) => sampleMap[e1].CompareTo(sampleMap[e2]));

foreach (TR2SFX id in Enum.GetValues<TR2SFX>())
{
if (!samplePointers.Contains(effect.Samples.First()))
{
samplePointers.AddRange(effect.Samples);
}
writer.Write(_level.SoundEffects.ContainsKey(id)
? (short)effects.IndexOf(_level.SoundEffects[id])
: (short)-1);
}
samplePointers.Sort();

writer.Write((uint)_level.SoundEffects.Count);
foreach (var (_, effect) in _level.SoundEffects)
foreach (TR2SoundEffect effect in effects)
{
uint firstSample = effect.Samples.First();
writer.Write((ushort)samplePointers.IndexOf(firstSample));
writer.Write(sampleMap[effect]);
writer.Write(effect.Volume);
writer.Write(effect.Chance);
writer.Write(effect.GetFlags());
}

writer.Write((uint)samplePointers.Count);
writer.Write(samplePointers);
writer.Write((uint)sampleIndices.Count);
writer.Write(sampleIndices);
}
}
45 changes: 22 additions & 23 deletions TRLevelControl/Control/TR3LevelControl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,6 @@ private void ReadSoundEffects(TRLevelReader reader)
Range = reader.ReadByte(),
Chance = reader.ReadByte(),
Pitch = reader.ReadByte(),
Samples = new()
});

sfx[i].SetFlags(reader.ReadUInt16());
Expand All @@ -333,14 +332,9 @@ private void ReadSoundEffects(TRLevelReader reader)
uint numSampleIndices = reader.ReadUInt32();
uint[] sampleIndices = reader.ReadUInt32s(numSampleIndices);

foreach (int soundID in sampleMap.Keys)
foreach (var (soundID, samplePointer) in sampleMap)
{
TR3SoundEffect effect = sfx[soundID];
ushort baseIndex = sampleMap[soundID];
for (int i = 0; i < effect.Samples.Capacity; i++)
{
effect.Samples.Add(sampleIndices[baseIndex + i]);
}
sfx[soundID].SampleID = sampleIndices[samplePointer];
}

for (int i = 0; i < soundMap.Length; i++)
Expand All @@ -356,35 +350,40 @@ private void ReadSoundEffects(TRLevelReader reader)

private void WriteSoundEffects(TRLevelWriter writer)
{
short detailsIndex = 0;
foreach (TR3SFX id in Enum.GetValues<TR3SFX>())
List<TR3SoundEffect> effects = new(_level.SoundEffects.Values);
List<uint> sampleIndices = effects.SelectMany(s => Enumerable.Range((int)s.SampleID, s.SampleCount))
.Select(s => (uint)s)
.Distinct().ToList();

sampleIndices.Sort();

Dictionary<TR3SoundEffect, ushort> sampleMap = new();
foreach (TR3SoundEffect effect in effects)
{
writer.Write(_level.SoundEffects.ContainsKey(id) ? detailsIndex++ : (short)-1);
sampleMap[effect] = (ushort)sampleIndices.IndexOf(effect.SampleID);
}

List<uint> samplePointers = new();
foreach (var (_, effect) in _level.SoundEffects)
effects.Sort((e1, e2) => sampleMap[e1].CompareTo(sampleMap[e2]));

foreach (TR3SFX id in Enum.GetValues<TR3SFX>())
{
if (!samplePointers.Contains(effect.Samples.First()))
{
samplePointers.AddRange(effect.Samples);
}
writer.Write(_level.SoundEffects.ContainsKey(id)
? (short)effects.IndexOf(_level.SoundEffects[id])
: (short)-1);
}
samplePointers.Sort();

writer.Write((uint)_level.SoundEffects.Count);
foreach (var (_, effect) in _level.SoundEffects)
foreach (TR3SoundEffect effect in effects)
{
uint firstSample = effect.Samples.First();
writer.Write((ushort)samplePointers.IndexOf(firstSample));
writer.Write(sampleMap[effect]);
writer.Write(effect.Volume);
writer.Write(effect.Range);
writer.Write(effect.Chance);
writer.Write(effect.Pitch);
writer.Write(effect.GetFlags());
}

writer.Write((uint)samplePointers.Count);
writer.Write(samplePointers);
writer.Write((uint)sampleIndices.Count);
writer.Write(sampleIndices);
}
}
7 changes: 4 additions & 3 deletions TRLevelControl/Model/TR2/TR2SoundEffect.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,12 @@ public class TR2SoundEffect : TRSoundEffect<TR2SFXMode>
{
public ushort Volume { get; set; }
public ushort Chance { get; set; }
public List<uint> Samples { get; set; }
public uint SampleID { get; set; }
public int SampleCount { get; set; }

protected override void SetSampleCount(int count)
=> Samples.Capacity = count;
=> SampleCount = count;

protected override int GetSampleCount()
=> Samples.Count;
=> SampleCount;
}
7 changes: 4 additions & 3 deletions TRLevelControl/Model/TR3/TR3SoundEffect.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,12 @@ public class TR3SoundEffect : TRSoundEffect<TR3SFXMode>
public byte Chance { get; set; }
public byte Range { get; set; }
public byte Pitch { get; set; }
public List<uint> Samples { get; set; }
public uint SampleID { get; set; }
public int SampleCount { get; set; }

protected override void SetSampleCount(int count)
=> Samples.Capacity = count;
=> SampleCount = count;

protected override int GetSampleCount()
=> Samples.Count;
=> SampleCount;
}
24 changes: 9 additions & 15 deletions TRRandomizerCore/Randomizers/TR2/TR2AudioRandomizer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ namespace TRRandomizerCore.Randomizers;

public class TR2AudioRandomizer : BaseTR2Randomizer
{
private const int _numSamples = 408; // Number of entries in MAIN.SFX

private AudioRandomizer _audioRandomizer;

private List<TR2SFXDefinition> _soundEffects;
Expand Down Expand Up @@ -142,12 +144,10 @@ private void RandomizeSecretTracks(TR2Level level)
{
entries.Add(new FDTriggerEntry
{
Actions = new List<FDActionItem>
TrigType = FDTrigType.Pickup,
Actions = new()
{
new()
{
Parameter = (short)entityIndex
},
new() { Parameter = (short)entityIndex },
musicAction
}
});
Expand Down Expand Up @@ -208,20 +208,14 @@ private void RandomizeSoundEffects(TR2CombinedLevel level)
if (IsUncontrolledLevel(level.Script))
{
// Choose a random but unique pointer into MAIN.SFX for each sample.
int maxSample = Enum.GetValues<TR2SFX>().Length;
HashSet<uint> indices = new();
foreach (var (_, effect) in level.Data.SoundEffects)
foreach (TR2SoundEffect effect in level.Data.SoundEffects.Values)
{
for (int i = 0; i < effect.Samples.Count; i++)
do
{
uint sample;
do
{
sample = (uint)_generator.Next(0, maxSample + 1);
}
while (!indices.Add(sample));
effect.Samples[i] = sample;
effect.SampleID = (uint)_generator.Next(0, _numSamples + 1 - Math.Max(effect.SampleCount, 1));
}
while (!indices.Add(effect.SampleID));
}
}
else
Expand Down
22 changes: 8 additions & 14 deletions TRRandomizerCore/Randomizers/TR2R/TR2RAudioRandomizer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ namespace TRRandomizerCore.Randomizers;

public class TR2RAudioRandomizer : BaseTR2RRandomizer
{
private const int _numSamples = 412;

private AudioRandomizer _audioRandomizer;

private List<TR2SFXDefinition> _soundEffects;
Expand Down Expand Up @@ -129,12 +131,10 @@ private void RandomizeSecretTracks(TR2Level level)
{
entries.Add(new FDTriggerEntry
{
TrigType = FDTrigType.Pickup,
Actions = new()
{
new()
{
Parameter = (short)entityIndex
},
new() { Parameter = (short)entityIndex },
musicAction
}
});
Expand Down Expand Up @@ -188,20 +188,14 @@ private void RandomizeSoundEffects(TR2RCombinedLevel level)

if (IsUncontrolledLevel(level.Script))
{
int maxSample = Enum.GetValues<TR2SFX>().Length;
HashSet<uint> indices = new();
foreach (var (_, effect) in level.Data.SoundEffects)
foreach (TR2SoundEffect effect in level.Data.SoundEffects.Values)
{
for (int i = 0; i < effect.Samples.Count; i++)
do
{
uint sample;
do
{
sample = (uint)_generator.Next(0, maxSample + 1);
}
while (!indices.Add(sample));
effect.Samples[i] = sample;
effect.SampleID = (uint)_generator.Next(0, _numSamples + 1 - Math.Max(effect.SampleCount, 1));
}
while (!indices.Add(effect.SampleID));
}
}
else
Expand Down
17 changes: 6 additions & 11 deletions TRRandomizerCore/Randomizers/TR3/TR3AudioRandomizer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ namespace TRRandomizerCore.Randomizers;
public class TR3AudioRandomizer : BaseTR3Randomizer
{
private const int _defaultSecretTrack = 122;
private const int _numSamples = 414;

private AudioRandomizer _audioRandomizer;
private TRAudioTrack _fixedSecretTrack;
Expand Down Expand Up @@ -176,21 +177,15 @@ private void RandomizeSoundEffects(TR3CombinedLevel level)

if (IsUncontrolledLevel(level.Script))
{
// Choose a random sample for each current entry and replace the entire index list.
int maxSample = Enum.GetValues<TR3SFX>().Length;
// Choose a random but unique pointer into MAIN.SFX for each sample.
HashSet<uint> indices = new();
foreach (var (_, effect) in level.Data.SoundEffects)
foreach (TR3SoundEffect effect in level.Data.SoundEffects.Values)
{
for (int i = 0; i < effect.Samples.Count; i++)
do
{
uint sample;
do
{
sample = (uint)_generator.Next(0, maxSample + 1);
}
while (!indices.Add(sample));
effect.Samples[i] = sample;
effect.SampleID = (uint)_generator.Next(0, _numSamples + 1 - Math.Max(effect.SampleCount, 1));
}
while (!indices.Add(effect.SampleID));
}
}
else
Expand Down
17 changes: 7 additions & 10 deletions TRRandomizerCore/Randomizers/TR3R/TR3RAudioRandomizer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ namespace TRRandomizerCore.Randomizers;
public class TR3RAudioRandomizer : BaseTR3RRandomizer
{
private const int _defaultSecretTrack = 122;
private const int _numSamples = 414;

private AudioRandomizer _audioRandomizer;

Expand Down Expand Up @@ -151,20 +152,16 @@ private void RandomizeSoundEffects(TR3RCombinedLevel level)

if (IsUncontrolledLevel(level.Script))
{
int maxSample = Enum.GetValues<TR3SFX>().Length;
HashSet<uint> indices = new();
foreach (var (_, effect) in level.Data.SoundEffects)
foreach (TR3SoundEffect effect in level.Data.SoundEffects.Values)
{
for (int i = 0; i < effect.Samples.Count; i++)
uint sampleIndex;
do
{
uint sample;
do
{
sample = (uint)_generator.Next(0, maxSample + 1);
}
while (!indices.Add(sample));
effect.Samples[i] = sample;
sampleIndex = (uint)_generator.Next(0, _numSamples + 1 - Math.Max(effect.SampleCount, 1));
}
while (!indices.Add(sampleIndex));
effect.SampleID = sampleIndex;
}
}
else
Expand Down
Binary file modified TRRandomizerCore/Resources/TR2/Objects/BENGALTIGER.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/BIRDMONSTER.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/BLACKMORAYEEL.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/BOAT.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/CROW.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/DOBERMAN.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/DRAGONEXPLOSION1_H.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/DRAGONFRONT_H.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/EAGLE.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/FLAMETHROWERGOONOG.TRB
Binary file not shown.
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/GIANTSPIDER.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/GUNMAN1OG.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/GUNMAN1TOPIXTORCAC.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/GUNMAN1TOPIXTORORC.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/GUNMAN2.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/KNIFETHROWER.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/LARABOATANIM_H.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/LARAGRENADEANIM_H.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/LARAHARPOONANIM_H.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/LARAHOME.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/LARAM16ANIM_H.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/LARAMISCANIM_H_UNWATER.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/LARASHOTGUNANIM_H.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/LARASNOW.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/LARASNOWMOBANIM_H.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/LARASUN.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/LARAUNWATER.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/MASKEDGOON1.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/MERCENARY1.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/MERCENARY2.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/MERCSNOWMOBDRIVER.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/MONKWITHKNIFESTICK.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/MONKWITHLONGSTICK.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/RAT.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/REDSNOWMOBILE.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/SCUBADIVER.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/SHARK.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/SHOTGUNGOON.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/SNOWLEOPARD.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/SPIDER.TRB
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/STICKWIELDINGGOON2.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/TREX.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/WHITETIGER.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/WINSTON.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/XIANGUARDSPEAR.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/XIANGUARDSWORD.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR2/Objects/YETI.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/BOAT.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/BRUTEMUTANT.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/COBRAINDIA.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/COBRANEVADA.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/COMPSOGNATHUS.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/CRAWLER.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/CRAWLERMUTANTINCLOSET.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/CROC.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/CROW.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/DAMGUARD.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/DOGANTARC.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/DOGLONDON.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/DOGNEVADA.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/DOOR1.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/DOOR4.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/KILLERWHALE.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/LARAANTARC.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/LARACOASTAL.TRB
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/LARAEXTRAANIMATION_H.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/LARAHOME.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/LARAINDIA.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/LARALONDON.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/LARANEVADA.TRB
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/LARASKIN_H_HOME.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/LARASKIN_H_NEVADA.TRB
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/LIZARDMAN.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/LONDONGUARD.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/LONDONMERC.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/MERCENARY.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/MONKEY.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/MPWITHGUN.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/MPWITHMP5.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/MPWITHSTICK.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/PRISONER.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/PUNA.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/PUNK.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/QUAD.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/RAPTOR.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/RAT.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/RXGUNLAD.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/RXREDBOI.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/SCUBASTEVE.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/SHIVA.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/SOPHIALEE.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/TIGER.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/TINNOSMONSTER.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/TINNOSWASP.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/TONYFIREHANDS.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/TRIBESMANAXE.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/TRIBESMANDART.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/TYRANNOSAUR.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/UPV.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/VULTURE.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/WILLIE.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/WINSTON.TRB
Binary file not shown.
Binary file modified TRRandomizerCore/Resources/TR3/Objects/WINSTONINCAMOSUIT.TRB
Binary file not shown.
Loading