Skip to content

Commit

Permalink
Refactor sample index storage (#675)
Browse files Browse the repository at this point in the history
Part of #653.
  • Loading branch information
lahm86 authored May 17, 2024
1 parent d9615fe commit e766d7c
Show file tree
Hide file tree
Showing 127 changed files with 82 additions and 102 deletions.
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.

0 comments on commit e766d7c

Please sign in to comment.