diff options
Diffstat (limited to 'ARMeilleure/State/NativeContext.cs')
-rw-r--r-- | ARMeilleure/State/NativeContext.cs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/ARMeilleure/State/NativeContext.cs b/ARMeilleure/State/NativeContext.cs index 962783f5..f911f762 100644 --- a/ARMeilleure/State/NativeContext.cs +++ b/ARMeilleure/State/NativeContext.cs @@ -95,6 +95,25 @@ namespace ARMeilleure.State GetStorage().Flags[(int)flag] = value ? 1u : 0u; } + public unsafe uint GetPstate() + { + uint value = 0; + for (int flag = 0; flag < RegisterConsts.FlagsCount; flag++) + { + value |= GetStorage().Flags[flag] != 0 ? 1u << flag : 0u; + } + return value; + } + + public unsafe void SetPstate(uint value) + { + for (int flag = 0; flag < RegisterConsts.FlagsCount; flag++) + { + uint bit = 1u << flag; + GetStorage().Flags[flag] = (value & bit) == bit ? 1u : 0u; + } + } + public unsafe bool GetFPStateFlag(FPState flag) { if ((uint)flag >= RegisterConsts.FpFlagsCount) |