mirror of
https://github.com/par274/sharpemu.git
synced 2026-07-30 22:49:53 +08:00
2b6bd5a532
* [audio] added sdl audio backend and in-tree atrac9 decoder * [input] replaced per-platform pad readers with sdl gamepad input * [video] added sdl window and host display plumbing * [gui] added host display options and per-game render settings * [bink] synced host movie playback to the guest audio clock * [cpu] hooked windows write faults into guest image tracking * [perf] added guest and render profiling, reserved host cpu lanes * [kernel] fixed stale pthread mutex handle alias * [host] wired the sdl session, save-data paths and project references * [audio] hoisted ajm trace stackalloc out of its loop * [video] Add guest image sync setting * [build] Strip native symbols * reuse
25 lines
961 B
C#
25 lines
961 B
C#
// SPDX-License-Identifier: MIT
|
|
#nullable disable
|
|
namespace LibAtrac9.Utilities
|
|
{
|
|
internal static class Bit
|
|
{
|
|
private static uint BitReverse32(uint value)
|
|
{
|
|
value = ((value & 0xaaaaaaaa) >> 1) | ((value & 0x55555555) << 1);
|
|
value = ((value & 0xcccccccc) >> 2) | ((value & 0x33333333) << 2);
|
|
value = ((value & 0xf0f0f0f0) >> 4) | ((value & 0x0f0f0f0f) << 4);
|
|
value = ((value & 0xff00ff00) >> 8) | ((value & 0x00ff00ff) << 8);
|
|
return (value >> 16) | (value << 16);
|
|
}
|
|
private static uint BitReverse32(uint value, int bitCount) => BitReverse32(value) >> (32 - bitCount);
|
|
public static int BitReverse32(int value, int bitCount) => (int) BitReverse32((uint) value, bitCount);
|
|
|
|
public static int SignExtend32(int value, int bits)
|
|
{
|
|
int shift = 8 * sizeof(int) - bits;
|
|
return (value << shift) >> shift;
|
|
}
|
|
}
|
|
}
|