mirror of
https://github.com/par274/sharpemu.git
synced 2026-07-29 22:19:39 +08:00
79a7437cd8
* [GUI] Added Atrac9 audio decoder and improved GUI with audio preview and controller support * fix: package.lock.json for SharpEmu.CLI to match the other projects * fix: packages.lock.json file to include new dependencies for GUI improvements * rollForward: "disable"
35 lines
915 B
C#
35 lines
915 B
C#
#nullable disable
|
|
namespace LibAtrac9
|
|
{
|
|
/// <summary>
|
|
/// An Xorshift RNG used by the ATRAC9 codec
|
|
/// </summary>
|
|
internal class Atrac9Rng
|
|
{
|
|
private ushort _stateA;
|
|
private ushort _stateB;
|
|
private ushort _stateC;
|
|
private ushort _stateD;
|
|
|
|
public Atrac9Rng(ushort seed)
|
|
{
|
|
int startValue = 0x4D93 * (seed ^ (seed >> 14));
|
|
|
|
_stateA = (ushort)(3 - startValue);
|
|
_stateB = (ushort)(2 - startValue);
|
|
_stateC = (ushort)(1 - startValue);
|
|
_stateD = (ushort)(0 - startValue);
|
|
}
|
|
|
|
public ushort Next()
|
|
{
|
|
ushort t = (ushort)(_stateD ^ (_stateD << 5));
|
|
_stateD = _stateC;
|
|
_stateC = _stateB;
|
|
_stateB = _stateA;
|
|
_stateA = (ushort)(t ^ _stateA ^ ((t ^ (_stateA >> 5)) >> 4));
|
|
return _stateA;
|
|
}
|
|
}
|
|
}
|