rename all the things
This commit is contained in:
parent
f02080b61b
commit
7cf8c968df
|
@ -59,8 +59,8 @@
|
|||
[submodule "ExternalProjects/librcheevos/rcheevos"]
|
||||
path = ExternalProjects/librcheevos/rcheevos
|
||||
url = https://github.com/RetroAchievements/rcheevos.git
|
||||
[submodule "citra/citra"]
|
||||
path = citra/citra
|
||||
[submodule "encore/encore"]
|
||||
path = encore/encore
|
||||
url = https://github.com/CasualPokePlayer/encore.git
|
||||
branch = headless
|
||||
[submodule "ExternalProjects/SDL2/SDL"]
|
||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -1 +0,0 @@
|
|||
/build
|
|
@ -1,12 +0,0 @@
|
|||
rmdir /s /q build
|
||||
mkdir build
|
||||
SET GLSLANG_VALIDATOR_DIR="%cd%\glslangValidator"
|
||||
cd build
|
||||
cmake ..\citra -DENABLE_SDL2=OFF -DUSE_SYSTEM_SDL2=OFF -DENABLE_QT=OFF -DENABLE_QT_TRANSLATION=OFF -DENABLE_QT_UPDATER=OFF ^
|
||||
-DENABLE_TESTS=OFF -DENABLE_DEDICATED_ROOM=OFF -DENABLE_WEB_SERVICE=OFF -DENABLE_CUBEB=OFF -DENABLE_OPENAL=OFF ^
|
||||
-DENABLE_LIBUSB=OFF -DUSE_DISCORD_PRESENCE=OFF -DUSE_SYSTEM_BOOST=OFF -DUSE_SYSTEM_OPENSSL=OFF -DUSE_SYSTEM_LIBUSB=OFF ^
|
||||
-DENABLE_COMPATIBILITY_LIST_DOWNLOAD=OFF -DENABLE_HEADLESS=ON -DCMAKE_PROGRAM_PATH=%GLSLANG_VALIDATOR_DIR% ^
|
||||
-DCMAKE_BUILD_TYPE=Release -DENABLE_LTO=ON -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl ^
|
||||
-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -G Ninja
|
||||
ninja
|
||||
cd ..
|
|
@ -1,21 +0,0 @@
|
|||
#!/bin/sh
|
||||
set -e
|
||||
if [ -z "$CC" ]; then export CC="clang"; fi
|
||||
if [ -z "$CXX" ]; then export CXX="clang++"; fi
|
||||
|
||||
# stdlibc++ has a bug in some versions (at least in Ubuntu 22.04, probably Debian 12 too) that will cause compilation to fail for Citra
|
||||
# Debian 11's stdlibc++ is unaffected (and probably Ubuntu 20.04's too)
|
||||
# Note that Debian 10's stdlibc++ is too old (nearly no c++20 support), so at least Debian 11 must be used to compile this core
|
||||
# At least cmake 3.20 must be present too, so get cmake from bullseye-backports
|
||||
|
||||
rm -rf build
|
||||
mkdir build
|
||||
export GLSLANG_VALIDATOR_DIR=$(realpath ./glslangValidator)
|
||||
cd build
|
||||
cmake ../citra -DENABLE_SDL2=OFF -DUSE_SYSTEM_SDL2=OFF -DENABLE_QT=OFF -DENABLE_QT_TRANSLATION=OFF -DENABLE_QT_UPDATER=OFF \
|
||||
-DENABLE_TESTS=OFF -DENABLE_DEDICATED_ROOM=OFF -DENABLE_WEB_SERVICE=OFF -DENABLE_CUBEB=OFF -DENABLE_OPENAL=OFF \
|
||||
-DENABLE_LIBUSB=OFF -DUSE_DISCORD_PRESENCE=OFF -DUSE_SYSTEM_BOOST=OFF -DUSE_SYSTEM_OPENSSL=OFF -DUSE_SYSTEM_LIBUSB=OFF \
|
||||
-DENABLE_COMPATIBILITY_LIST_DOWNLOAD=OFF -DENABLE_HEADLESS=ON -DCMAKE_PROGRAM_PATH=$GLSLANG_VALIDATOR_DIR \
|
||||
-DCMAKE_BUILD_TYPE=Release -DENABLE_LTO=ON -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX \
|
||||
-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_CXX_FLAGS="-Wno-deprecated -include limits.h" -G Ninja
|
||||
ninja
|
|
@ -1 +0,0 @@
|
|||
Subproject commit e665c6a86b45876cc8267425300c9617c0dc4229
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
|
@ -480,7 +480,7 @@ namespace BizHawk.Client.Common
|
|||
return GlobalEmulator switch
|
||||
{
|
||||
NDS nds => new ScreenControlNDS(nds),
|
||||
Citra citra => new ScreenControl3DS(citra),
|
||||
Encore citra => new ScreenControl3DS(citra),
|
||||
_ => null
|
||||
};
|
||||
}
|
||||
|
|
|
@ -207,21 +207,21 @@ namespace BizHawk.Client.Common.Filters
|
|||
/// </summary>
|
||||
public class ScreenControl3DS : BaseFilter
|
||||
{
|
||||
private readonly Citra _citra;
|
||||
private readonly Encore _encore;
|
||||
|
||||
public ScreenControl3DS(Citra citra)
|
||||
public ScreenControl3DS(Encore encore)
|
||||
{
|
||||
_citra = citra;
|
||||
_encore = encore;
|
||||
}
|
||||
|
||||
public override Vector2 UntransformPoint(string channel, Vector2 point)
|
||||
{
|
||||
if (_citra.TouchScreenEnabled)
|
||||
if (_encore.TouchScreenEnabled)
|
||||
{
|
||||
var rect = _citra.TouchScreenRectangle;
|
||||
var rotated = _citra.TouchScreenRotated;
|
||||
var bufferWidth = (float)_citra.AsVideoProvider().BufferWidth;
|
||||
var bufferHeight = (float)_citra.AsVideoProvider().BufferHeight;
|
||||
var rect = _encore.TouchScreenRectangle;
|
||||
var rotated = _encore.TouchScreenRotated;
|
||||
var bufferWidth = (float)_encore.AsVideoProvider().BufferWidth;
|
||||
var bufferHeight = (float)_encore.AsVideoProvider().BufferHeight;
|
||||
|
||||
// reset the point's origin to the top left of the screen
|
||||
point.X -= rect.X;
|
||||
|
@ -248,10 +248,10 @@ namespace BizHawk.Client.Common.Filters
|
|||
|
||||
public override Vector2 TransformPoint(string channel, Vector2 point)
|
||||
{
|
||||
if (_citra.TouchScreenEnabled)
|
||||
if (_encore.TouchScreenEnabled)
|
||||
{
|
||||
var rect = _citra.TouchScreenRectangle;
|
||||
var rotated = _citra.TouchScreenRotated;
|
||||
var rect = _encore.TouchScreenRectangle;
|
||||
var rotated = _encore.TouchScreenRotated;
|
||||
|
||||
if (rotated)
|
||||
{
|
||||
|
|
|
@ -2747,7 +2747,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
items.Add(CreateCoreSubmenu(VSystemCategory.Consoles, CoreNames.ChannelFHawk, CreateGenericCoreConfigItem<ChannelF>(CoreNames.ChannelFHawk)));
|
||||
|
||||
// Encore
|
||||
items.Add(CreateCoreSubmenu(VSystemCategory.Handhelds, CoreNames.Encore, CreateGenericCoreConfigItem<Citra>(CoreNames.Encore)));
|
||||
items.Add(CreateCoreSubmenu(VSystemCategory.Handhelds, CoreNames.Encore, CreateGenericCoreConfigItem<Encore>(CoreNames.Encore)));
|
||||
|
||||
// ColecoHawk
|
||||
var colecoHawkGamepadSettingsItem = CreateSettingsItem("Controller Settings...", (_, _) => OpenColecoHawkGamepadSettingsDialog(GetSettingsAdapterFor<ColecoVision>()));
|
||||
|
|
|
@ -2,7 +2,7 @@ using BizHawk.Emulation.Common;
|
|||
|
||||
namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
||||
{
|
||||
public partial class Citra : IEmulator
|
||||
public partial class Encore : IEmulator
|
||||
{
|
||||
private readonly BasicServiceProvider _serviceProvider;
|
||||
|
||||
|
@ -28,12 +28,12 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
|
||||
if (_controller.IsPressed("Reset"))
|
||||
{
|
||||
_core.Citra_Reset(_context);
|
||||
_core.Encore_Reset(_context);
|
||||
// memory domain pointers are no longer valid, reset them
|
||||
WireMemoryDomains();
|
||||
}
|
||||
|
||||
_core.Citra_RunFrame(_context);
|
||||
_core.Encore_RunFrame(_context);
|
||||
|
||||
OnVideoRefresh();
|
||||
|
||||
|
@ -53,10 +53,10 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
|
||||
private void OnVideoRefresh()
|
||||
{
|
||||
_core.Citra_GetVideoDimensions(_context, out _citraVideoProvider.Width, out _citraVideoProvider.Height);
|
||||
_citraVideoProvider.VideoDirty = true;
|
||||
_core.Encore_GetVideoDimensions(_context, out _encoreVideoProvider.Width, out _encoreVideoProvider.Height);
|
||||
_encoreVideoProvider.VideoDirty = true;
|
||||
|
||||
_core.Citra_GetTouchScreenLayout(_context, out var x, out var y, out var width, out var height, out var rotated, out var enabled);
|
||||
_core.Encore_GetTouchScreenLayout(_context, out var x, out var y, out var width, out var height, out var rotated, out var enabled);
|
||||
TouchScreenRectangle = new(x, y, width, height);
|
||||
TouchScreenRotated = rotated;
|
||||
TouchScreenEnabled = enabled;
|
||||
|
@ -78,7 +78,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
return;
|
||||
}
|
||||
|
||||
_core.Citra_DestroyContext(_context);
|
||||
_core.Encore_DestroyContext(_context);
|
||||
|
||||
foreach (var glContext in _glContexts)
|
||||
{
|
|
@ -5,7 +5,7 @@ using BizHawk.Emulation.Common;
|
|||
|
||||
namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
||||
{
|
||||
public partial class Citra : IInputPollable
|
||||
public partial class Encore : IInputPollable
|
||||
{
|
||||
public int LagCount { get; set; }
|
||||
public bool IsLagFrame { get; set; }
|
||||
|
@ -27,38 +27,38 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
.AddXYPair("Tilt {0}", AxisPairOrientation.RightAndUp, 0.RangeTo(320), 160, 0.RangeTo(240), 120)
|
||||
.MakeImmutable();
|
||||
|
||||
private bool GetButtonCallback(LibCitra.Buttons button) => button switch
|
||||
private bool GetButtonCallback(LibEncore.Buttons button) => button switch
|
||||
{
|
||||
LibCitra.Buttons.A => _controller.IsPressed("A"),
|
||||
LibCitra.Buttons.B => _controller.IsPressed("B"),
|
||||
LibCitra.Buttons.X => _controller.IsPressed("X"),
|
||||
LibCitra.Buttons.Y => _controller.IsPressed("Y"),
|
||||
LibCitra.Buttons.Up => _controller.IsPressed("Up"),
|
||||
LibCitra.Buttons.Down => _controller.IsPressed("Down"),
|
||||
LibCitra.Buttons.Left => _controller.IsPressed("Left"),
|
||||
LibCitra.Buttons.Right => _controller.IsPressed("Right"),
|
||||
LibCitra.Buttons.L => _controller.IsPressed("L"),
|
||||
LibCitra.Buttons.R => _controller.IsPressed("R"),
|
||||
LibCitra.Buttons.Start => _controller.IsPressed("Start"),
|
||||
LibCitra.Buttons.Select => _controller.IsPressed("Select"),
|
||||
LibCitra.Buttons.Debug => _controller.IsPressed("Debug"),
|
||||
LibCitra.Buttons.Gpio14 => _controller.IsPressed("GPIO14"),
|
||||
LibCitra.Buttons.ZL => _controller.IsPressed("ZL"),
|
||||
LibCitra.Buttons.ZR => _controller.IsPressed("ZR"),
|
||||
LibCitra.Buttons.Home => false, // not supported (can only be used if Home menu is booted, which is never be the case for us)
|
||||
LibCitra.Buttons.Power => false, // not supported (can only be used if Home menu is booted, which is never be the case for us)
|
||||
LibEncore.Buttons.A => _controller.IsPressed("A"),
|
||||
LibEncore.Buttons.B => _controller.IsPressed("B"),
|
||||
LibEncore.Buttons.X => _controller.IsPressed("X"),
|
||||
LibEncore.Buttons.Y => _controller.IsPressed("Y"),
|
||||
LibEncore.Buttons.Up => _controller.IsPressed("Up"),
|
||||
LibEncore.Buttons.Down => _controller.IsPressed("Down"),
|
||||
LibEncore.Buttons.Left => _controller.IsPressed("Left"),
|
||||
LibEncore.Buttons.Right => _controller.IsPressed("Right"),
|
||||
LibEncore.Buttons.L => _controller.IsPressed("L"),
|
||||
LibEncore.Buttons.R => _controller.IsPressed("R"),
|
||||
LibEncore.Buttons.Start => _controller.IsPressed("Start"),
|
||||
LibEncore.Buttons.Select => _controller.IsPressed("Select"),
|
||||
LibEncore.Buttons.Debug => _controller.IsPressed("Debug"),
|
||||
LibEncore.Buttons.Gpio14 => _controller.IsPressed("GPIO14"),
|
||||
LibEncore.Buttons.ZL => _controller.IsPressed("ZL"),
|
||||
LibEncore.Buttons.ZR => _controller.IsPressed("ZR"),
|
||||
LibEncore.Buttons.Home => false, // not supported (can only be used if Home menu is booted, which is never be the case for us)
|
||||
LibEncore.Buttons.Power => false, // not supported (can only be used if Home menu is booted, which is never be the case for us)
|
||||
_ => throw new InvalidOperationException(),
|
||||
};
|
||||
|
||||
private void GetAxisCallback(LibCitra.AnalogSticks stick, out float x, out float y)
|
||||
private void GetAxisCallback(LibEncore.AnalogSticks stick, out float x, out float y)
|
||||
{
|
||||
switch (stick)
|
||||
{
|
||||
case LibCitra.AnalogSticks.CirclePad:
|
||||
case LibEncore.AnalogSticks.CirclePad:
|
||||
x = _controller.AxisValue("Circle Pad X") / 128.0f;
|
||||
y = _controller.AxisValue("Circle Pad Y") / 128.0f;
|
||||
break;
|
||||
case LibCitra.AnalogSticks.CStick:
|
||||
case LibEncore.AnalogSticks.CStick:
|
||||
x = _controller.AxisValue("C-Stick X") / 128.0f;
|
||||
y = _controller.AxisValue("C-Stick Y") / 128.0f;
|
||||
break;
|
|
@ -5,7 +5,7 @@ using BizHawk.Emulation.Common;
|
|||
|
||||
namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
||||
{
|
||||
public partial class Citra
|
||||
public partial class Encore
|
||||
{
|
||||
private IMemoryDomains _memoryDomains;
|
||||
|
||||
|
@ -36,17 +36,17 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
|
||||
private void WireMemoryDomains()
|
||||
{
|
||||
void WireDomain(LibCitra.MemoryRegion region, MemoryDomainIntPtr domain)
|
||||
void WireDomain(LibEncore.MemoryRegion region, MemoryDomainIntPtr domain)
|
||||
{
|
||||
_core.Citra_GetMemoryRegion(_context, region, out var ptr, out var size);
|
||||
_core.Encore_GetMemoryRegion(_context, region, out var ptr, out var size);
|
||||
domain.Data = ptr;
|
||||
domain.SetSize(size);
|
||||
}
|
||||
|
||||
WireDomain(LibCitra.MemoryRegion.FCRAM, _fcram);
|
||||
WireDomain(LibCitra.MemoryRegion.VRAM, _vram);
|
||||
WireDomain(LibCitra.MemoryRegion.DSP, _dspRam);
|
||||
WireDomain(LibCitra.MemoryRegion.N3DS, _n3dsExRam);
|
||||
WireDomain(LibEncore.MemoryRegion.FCRAM, _fcram);
|
||||
WireDomain(LibEncore.MemoryRegion.VRAM, _vram);
|
||||
WireDomain(LibEncore.MemoryRegion.DSP, _dspRam);
|
||||
WireDomain(LibEncore.MemoryRegion.N3DS, _n3dsExRam);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -10,10 +10,10 @@ using System.Text;
|
|||
|
||||
namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
||||
{
|
||||
public partial class Citra : ISettable<Citra.CitraSettings, Citra.CitraSyncSettings>
|
||||
public partial class Encore : ISettable<Encore.EncoreSettings, Encore.EncoreSyncSettings>
|
||||
{
|
||||
private CitraSettings _settings;
|
||||
private CitraSyncSettings _syncSettings;
|
||||
private EncoreSettings _settings;
|
||||
private EncoreSyncSettings _syncSettings;
|
||||
private readonly string _userPath;
|
||||
|
||||
private bool GetBooleanSettingCallback(string label) => label switch
|
||||
|
@ -36,7 +36,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
private ulong GetIntegerSettingCallback(string label) => label switch
|
||||
{
|
||||
"cpu_clock_percentage" => (ulong)_syncSettings.CpuClockPercentage,
|
||||
"graphics_api" => (ulong)CitraSyncSettings.EGraphicsApi.OpenGL,//_supportsOpenGL43 ? (ulong)_syncSettings.GraphicsApi : (ulong)CitraSyncSettings.EGraphicsApi.Software,
|
||||
"graphics_api" => (ulong)EncoreSyncSettings.EGraphicsApi.OpenGL,//_supportsOpenGL43 ? (ulong)_syncSettings.GraphicsApi : (ulong)EncoreSyncSettings.EGraphicsApi.Software,
|
||||
"region_value" => (ulong)_syncSettings.RegionValue,
|
||||
"init_clock" => _syncSettings.UseRealTime && !DeterministicEmulation ? 0UL : 1UL,
|
||||
"init_time" => (ulong)(_syncSettings.InitialTime - _epoch).TotalSeconds,
|
||||
|
@ -89,28 +89,28 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
Marshal.WriteByte(buffer, numToCopy, 0);
|
||||
}
|
||||
|
||||
public CitraSettings GetSettings()
|
||||
public EncoreSettings GetSettings()
|
||||
=> _settings.Clone();
|
||||
|
||||
public CitraSyncSettings GetSyncSettings()
|
||||
public EncoreSyncSettings GetSyncSettings()
|
||||
=> _syncSettings.Clone();
|
||||
|
||||
public PutSettingsDirtyBits PutSettings(CitraSettings o)
|
||||
public PutSettingsDirtyBits PutSettings(EncoreSettings o)
|
||||
{
|
||||
_settings = o;
|
||||
_core.Citra_ReloadConfig(_context);
|
||||
_core.Encore_ReloadConfig(_context);
|
||||
return PutSettingsDirtyBits.None;
|
||||
}
|
||||
|
||||
public PutSettingsDirtyBits PutSyncSettings(CitraSyncSettings o)
|
||||
public PutSettingsDirtyBits PutSyncSettings(EncoreSyncSettings o)
|
||||
{
|
||||
var ret = CitraSyncSettings.NeedsReboot(_syncSettings, o);
|
||||
var ret = EncoreSyncSettings.NeedsReboot(_syncSettings, o);
|
||||
_syncSettings = o;
|
||||
return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
|
||||
}
|
||||
|
||||
[CoreSettings]
|
||||
public class CitraSettings
|
||||
public class EncoreSettings
|
||||
{
|
||||
[DisplayName("Resolution Scale Factor")]
|
||||
[Description("Scale factor for the 3DS resolution.")]
|
||||
|
@ -234,15 +234,15 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
[TypeConverter(typeof(ConstrainedIntConverter))]
|
||||
public int CustomLayoutSecondLayerOpacity { get; set; }
|
||||
|
||||
public CitraSettings Clone()
|
||||
=> (CitraSettings)MemberwiseClone();
|
||||
public EncoreSettings Clone()
|
||||
=> (EncoreSettings)MemberwiseClone();
|
||||
|
||||
public CitraSettings()
|
||||
public EncoreSettings()
|
||||
=> SettingsUtil.SetDefaultValues(this);
|
||||
}
|
||||
|
||||
[CoreSettings]
|
||||
public class CitraSyncSettings
|
||||
public class EncoreSyncSettings
|
||||
{
|
||||
[DisplayName("Use CPU JIT")]
|
||||
[Description("Whether to use the Just-In-Time (JIT) compiler for CPU emulation")]
|
||||
|
@ -297,7 +297,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
public bool UseVirtualSd { get; set; }
|
||||
|
||||
[DisplayName("Is New 3DS")]
|
||||
[Description("The system model that Citra will try to emulate.")]
|
||||
[Description("The system model that Encore will try to emulate.")]
|
||||
[DefaultValue(true)]
|
||||
public bool IsNew3ds { get; set; }
|
||||
|
||||
|
@ -314,7 +314,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
}
|
||||
|
||||
[DisplayName("Region Value")]
|
||||
[Description("The system region that Citra will use during emulation")]
|
||||
[Description("The system region that Encore will use during emulation")]
|
||||
[DefaultValue(ERegionValue.Autodetect)]
|
||||
public ERegionValue RegionValue { get; set; }
|
||||
|
||||
|
@ -330,8 +330,8 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
public DateTime InitialTime { get; set; }
|
||||
|
||||
[DisplayName("CFG Username")]
|
||||
[Description("The system username that Citra will use during emulation")]
|
||||
[DefaultValue("CITRA")]
|
||||
[Description("The system username that Encore will use during emulation")]
|
||||
[DefaultValue("ENCORE")]
|
||||
[MaxLength(10)]
|
||||
[TypeConverter(typeof(ConstrainedStringConverter))]
|
||||
public string CFGUsername { get; set; }
|
||||
|
@ -353,12 +353,12 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
}
|
||||
|
||||
[DisplayName("CFG Birthday Month")]
|
||||
[Description("The system birthday month that Citra will use during emulation")]
|
||||
[Description("The system birthday month that Encore will use during emulation")]
|
||||
[DefaultValue(ECFGBirthdayMonth.March)]
|
||||
public ECFGBirthdayMonth CFGBirthdayMonth { get; set; }
|
||||
|
||||
[DisplayName("CFG Birthday Day")]
|
||||
[Description("The system birthday day that Citra will use during emulation")]
|
||||
[Description("The system birthday day that Encore will use during emulation")]
|
||||
[DefaultValue(25)]
|
||||
[Range(1, 31)]
|
||||
[TypeConverter(typeof(ConstrainedIntConverter))]
|
||||
|
@ -381,7 +381,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
}
|
||||
|
||||
[DisplayName("CFG System Language")]
|
||||
[Description("The system language that Citra will use during emulation")]
|
||||
[Description("The system language that Encore will use during emulation")]
|
||||
[DefaultValue(ECFGSystemLanguage.English)]
|
||||
public ECFGSystemLanguage CFGSystemLanguage { get; set; }
|
||||
|
||||
|
@ -393,22 +393,22 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
}
|
||||
|
||||
[DisplayName("CFG Sound Output Mode")]
|
||||
[Description("The system sound output mode that Citra will use during emulation")]
|
||||
[Description("The system sound output mode that Encore will use during emulation")]
|
||||
[DefaultValue(ECFGSoundOutputMode.Stereo)]
|
||||
public ECFGSoundOutputMode CFGSoundOutputMode { get; set; }
|
||||
|
||||
[DisplayName("CFG Sound Output Mode")]
|
||||
[Description("The system sound output mode that Citra will use during emulation")]
|
||||
[Description("The system sound output mode that Encore will use during emulation")]
|
||||
[DefaultValue(typeof(ushort), "42")]
|
||||
public ushort PTMPlayCoins { get; set; }
|
||||
|
||||
public CitraSyncSettings Clone()
|
||||
=> (CitraSyncSettings)MemberwiseClone();
|
||||
public EncoreSyncSettings Clone()
|
||||
=> (EncoreSyncSettings)MemberwiseClone();
|
||||
|
||||
public static bool NeedsReboot(CitraSyncSettings x, CitraSyncSettings y)
|
||||
public static bool NeedsReboot(EncoreSyncSettings x, EncoreSyncSettings y)
|
||||
=> !DeepEquality.DeepEquals(x, y);
|
||||
|
||||
public CitraSyncSettings()
|
||||
public EncoreSyncSettings()
|
||||
=> SettingsUtil.SetDefaultValues(this);
|
||||
}
|
||||
}
|
|
@ -5,14 +5,14 @@ using BizHawk.Emulation.Common;
|
|||
|
||||
namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
||||
{
|
||||
public partial class Citra : ISoundProvider
|
||||
public partial class Encore : ISoundProvider
|
||||
{
|
||||
private short[] _sampleBuf = new short[1024 * 2];
|
||||
private int _nsamps;
|
||||
|
||||
private void ProcessSound()
|
||||
{
|
||||
_core.Citra_GetAudio(_context, out var buffer, out var frames);
|
||||
_core.Encore_GetAudio(_context, out var buffer, out var frames);
|
||||
if (frames > _sampleBuf.Length)
|
||||
{
|
||||
_sampleBuf = new short[frames];
|
|
@ -5,7 +5,7 @@ using BizHawk.Emulation.Common;
|
|||
|
||||
namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
||||
{
|
||||
public partial class Citra : IStatable
|
||||
public partial class Encore : IStatable
|
||||
{
|
||||
private byte[] _stateBuf = Array.Empty<byte>();
|
||||
|
||||
|
@ -13,7 +13,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
|
||||
public void SaveStateBinary(BinaryWriter writer)
|
||||
{
|
||||
var stateLen = _core.Citra_StartSaveState(_context);
|
||||
var stateLen = _core.Encore_StartSaveState(_context);
|
||||
writer.Write(stateLen);
|
||||
|
||||
if (stateLen > _stateBuf.Length)
|
||||
|
@ -21,7 +21,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
_stateBuf = new byte[stateLen];
|
||||
}
|
||||
|
||||
_core.Citra_FinishSaveState(_context, _stateBuf);
|
||||
_core.Encore_FinishSaveState(_context, _stateBuf);
|
||||
writer.Write(_stateBuf, 0, stateLen);
|
||||
|
||||
// other variables
|
||||
|
@ -57,7 +57,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
}
|
||||
|
||||
reader.Read(_stateBuf, 0, stateLen);
|
||||
_core.Citra_LoadState(_context, _stateBuf, stateLen);
|
||||
_core.Encore_LoadState(_context, _stateBuf, stateLen);
|
||||
|
||||
// other variables
|
||||
IsLagFrame = reader.ReadBoolean();
|
|
@ -4,16 +4,16 @@ using BizHawk.Emulation.Common;
|
|||
|
||||
namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
||||
{
|
||||
public class CitraVideoProvider : IVideoProvider
|
||||
public class EncoreVideoProvider : IVideoProvider
|
||||
{
|
||||
internal int Width = 400;
|
||||
internal int Height = 480;
|
||||
internal bool VideoDirty;
|
||||
|
||||
protected readonly LibCitra _core;
|
||||
protected readonly LibEncore _core;
|
||||
protected readonly IntPtr _context;
|
||||
|
||||
public CitraVideoProvider(LibCitra core, IntPtr context)
|
||||
public EncoreVideoProvider(LibEncore core, IntPtr context)
|
||||
{
|
||||
_core = core;
|
||||
_context = context;
|
||||
|
@ -39,7 +39,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
_vbuf = new int[Width * Height];
|
||||
}
|
||||
|
||||
_core.Citra_ReadFrameBuffer(_context, _vbuf);
|
||||
_core.Encore_ReadFrameBuffer(_context, _vbuf);
|
||||
VideoDirty = false;
|
||||
}
|
||||
|
||||
|
@ -47,14 +47,14 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
}
|
||||
}
|
||||
|
||||
public class CitraGLTextureProvider : CitraVideoProvider, IGLTextureProvider
|
||||
public class EncoreGLTextureProvider : EncoreVideoProvider, IGLTextureProvider
|
||||
{
|
||||
public CitraGLTextureProvider(LibCitra core, IntPtr context)
|
||||
public EncoreGLTextureProvider(LibEncore core, IntPtr context)
|
||||
: base(core, context)
|
||||
{
|
||||
}
|
||||
|
||||
public int GetGLTexture()
|
||||
=> _core.Citra_GetGLTexture(_context);
|
||||
=> _core.Encore_GetGLTexture(_context);
|
||||
}
|
||||
}
|
|
@ -13,38 +13,38 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
{
|
||||
[PortedCore(CoreNames.Encore, "", "nightly-2104", "https://github.com/CasualPokePlayer/encore", singleInstance: true, isReleased: false)]
|
||||
[ServiceNotApplicable(new[] { typeof(IDriveLight), typeof(IRegionable) })]
|
||||
public partial class Citra
|
||||
public partial class Encore
|
||||
{
|
||||
private static DynamicLibraryImportResolver _resolver;
|
||||
private static LibCitra _core;
|
||||
private static LibEncore _core;
|
||||
|
||||
// This is a hack, largely just so we can forcefully evict file handles Citra keeps open even after shutdown.
|
||||
// This is a hack, largely just so we can forcefully evict file handles Encore keeps open even after shutdown.
|
||||
// While keeping these file handles open is mostly harmless, this ends up being bad when recording a movie.
|
||||
// These file handles would be in the user folder, and the user folder must be cleared out when recording a movie!
|
||||
private static void ResetCitraResolver()
|
||||
private static void ResetEncoreResolver()
|
||||
{
|
||||
_resolver?.Dispose();
|
||||
_resolver = new(OSTailoredCode.IsUnixHost ? "libcitra-headless.so" : "citra-headless.dll", hasLimitedLifetime: true);
|
||||
_core = BizInvoker.GetInvoker<LibCitra>(_resolver, CallingConventionAdapters.Native);
|
||||
_resolver = new(OSTailoredCode.IsUnixHost ? "libencore-headless.so" : "encore-headless.dll", hasLimitedLifetime: true);
|
||||
_core = BizInvoker.GetInvoker<LibEncore>(_resolver, CallingConventionAdapters.Native);
|
||||
}
|
||||
|
||||
private static Citra CurrentCore;
|
||||
private static Encore CurrentCore;
|
||||
|
||||
private readonly IOpenGLProvider _openGLProvider;
|
||||
private readonly bool _supportsOpenGL43;
|
||||
private readonly List<object> _glContexts = new();
|
||||
private readonly LibCitra.ConfigCallbackInterface _configCallbackInterface;
|
||||
private readonly LibCitra.GLCallbackInterface _glCallbackInterface;
|
||||
private readonly LibCitra.InputCallbackInterface _inputCallbackInterface;
|
||||
private readonly LibEncore.ConfigCallbackInterface _configCallbackInterface;
|
||||
private readonly LibEncore.GLCallbackInterface _glCallbackInterface;
|
||||
private readonly LibEncore.InputCallbackInterface _inputCallbackInterface;
|
||||
private readonly IntPtr _context;
|
||||
private readonly CitraVideoProvider _citraVideoProvider;
|
||||
private readonly EncoreVideoProvider _encoreVideoProvider;
|
||||
|
||||
public Rectangle TouchScreenRectangle { get; private set; }
|
||||
public bool TouchScreenRotated { get; private set; }
|
||||
public bool TouchScreenEnabled { get; private set; }
|
||||
|
||||
[CoreConstructor(VSystemID.Raw.N3DS)]
|
||||
public Citra(CoreLoadParameters<CitraSettings, CitraSyncSettings> lp)
|
||||
public Encore(CoreLoadParameters<EncoreSettings, EncoreSyncSettings> lp)
|
||||
{
|
||||
if (lp.Roms.Exists(r => r.RomPath.Contains("|")))
|
||||
{
|
||||
|
@ -52,7 +52,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
}
|
||||
|
||||
CurrentCore?.Dispose();
|
||||
ResetCitraResolver();
|
||||
ResetEncoreResolver();
|
||||
|
||||
CurrentCore = this;
|
||||
|
||||
|
@ -62,7 +62,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
|
||||
DeterministicEmulation = lp.DeterministicEmulationRequested;
|
||||
_userPath = lp.Comm.CoreFileProvider.GetUserPath(SystemId, temp: DeterministicEmulation) + Path.DirectorySeparatorChar;
|
||||
_userPath = _userPath.Replace('\\', '/'); // Citra doesn't like backslashes in the user folder, for whatever reason
|
||||
_userPath = _userPath.Replace('\\', '/'); // Encore doesn't like backslashes in the user folder, for whatever reason
|
||||
|
||||
_configCallbackInterface.GetBoolean = GetBooleanSettingCallback;
|
||||
_configCallbackInterface.GetInteger = GetIntegerSettingCallback;
|
||||
|
@ -71,7 +71,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
|
||||
_openGLProvider = lp.Comm.OpenGLProvider;
|
||||
_supportsOpenGL43 = _openGLProvider.SupportsGLVersion(4, 3);
|
||||
if (!_supportsOpenGL43/* && _syncSettings.GraphicsApi == CitraSyncSettings.EGraphicsApi.OpenGL*/)
|
||||
if (!_supportsOpenGL43/* && _syncSettings.GraphicsApi == EncoreSyncSettings.EGraphicsApi.OpenGL*/)
|
||||
{
|
||||
throw new("OpenGL 4.3 is required, but it is not supported on this machine");
|
||||
// lp.Comm.Notify("OpenGL 4.3 is not supported on this machine, falling back to software renderer", null);
|
||||
|
@ -87,18 +87,18 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
_inputCallbackInterface.GetTouch = GetTouchCallback;
|
||||
_inputCallbackInterface.GetMotion = GetMotionCallback;
|
||||
|
||||
_context = _core.Citra_CreateContext(ref _configCallbackInterface, ref _glCallbackInterface, ref _inputCallbackInterface);
|
||||
_context = _core.Encore_CreateContext(ref _configCallbackInterface, ref _glCallbackInterface, ref _inputCallbackInterface);
|
||||
|
||||
if (_supportsOpenGL43/* && _syncSettings.GraphicsApi == CitraSyncSettings.EGraphicsApi.OpenGL*/)
|
||||
if (_supportsOpenGL43/* && _syncSettings.GraphicsApi == EncoreSyncSettings.EGraphicsApi.OpenGL*/)
|
||||
{
|
||||
_citraVideoProvider = new CitraGLTextureProvider(_core, _context);
|
||||
_encoreVideoProvider = new EncoreGLTextureProvider(_core, _context);
|
||||
}
|
||||
else
|
||||
{
|
||||
_citraVideoProvider = new(_core, _context);
|
||||
_encoreVideoProvider = new(_core, _context);
|
||||
}
|
||||
|
||||
_serviceProvider.Register<IVideoProvider>(_citraVideoProvider);
|
||||
_serviceProvider.Register<IVideoProvider>(_encoreVideoProvider);
|
||||
|
||||
var sysDataDir = Path.Combine(_userPath, "sysdata");
|
||||
if (!Directory.Exists(sysDataDir))
|
||||
|
@ -122,7 +122,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
if (lp.Roms[0].Extension.ToLowerInvariant() == ".cia")
|
||||
{
|
||||
var message = new byte[1024];
|
||||
var res = _core.Citra_InstallCIA(_context, romPath, message, message.Length);
|
||||
var res = _core.Encore_InstallCIA(_context, romPath, message, message.Length);
|
||||
var outMsg = Encoding.UTF8.GetString(message).TrimEnd('\0');
|
||||
if (res)
|
||||
{
|
||||
|
@ -148,20 +148,20 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
throw new("ROMs after the index 0 should be CIAs");
|
||||
}
|
||||
|
||||
_core.Citra_InstallCIA(_context, lp.Roms[i].RomPath, dummyBuffer, dummyBuffer.Length);
|
||||
_core.Encore_InstallCIA(_context, lp.Roms[i].RomPath, dummyBuffer, dummyBuffer.Length);
|
||||
}
|
||||
|
||||
var errorMessage = new byte[1024];
|
||||
if (!_core.Citra_LoadROM(_context, romPath, errorMessage, errorMessage.Length))
|
||||
if (!_core.Encore_LoadROM(_context, romPath, errorMessage, errorMessage.Length))
|
||||
{
|
||||
Dispose();
|
||||
throw new($"{Encoding.UTF8.GetString(errorMessage).TrimEnd()}");
|
||||
}
|
||||
|
||||
InitMemoryDomains();
|
||||
// for some reason, if a savestate is created on frame 0, Citra will crash if another savestate is made after loading that state
|
||||
// for some reason, if a savestate is created on frame 0, Encore will crash if another savestate is made after loading that state
|
||||
// advance one frame to avoid that issue
|
||||
_core.Citra_RunFrame(_context);
|
||||
_core.Encore_RunFrame(_context);
|
||||
OnVideoRefresh();
|
||||
}
|
||||
|
|
@ -5,7 +5,7 @@ using BizHawk.BizInvoke;
|
|||
|
||||
namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
||||
{
|
||||
public abstract class LibCitra
|
||||
public abstract class LibEncore
|
||||
{
|
||||
private const CallingConvention cc = CallingConvention.Cdecl;
|
||||
|
||||
|
@ -101,49 +101,49 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
}
|
||||
|
||||
[BizImport(cc, Compatibility = true)]
|
||||
public abstract IntPtr Citra_CreateContext(
|
||||
public abstract IntPtr Encore_CreateContext(
|
||||
ref ConfigCallbackInterface configCallbackInterface,
|
||||
ref GLCallbackInterface glCallbackInterface,
|
||||
ref InputCallbackInterface inputCallbackInterface);
|
||||
|
||||
[BizImport(cc)]
|
||||
public abstract void Citra_DestroyContext(IntPtr context);
|
||||
public abstract void Encore_DestroyContext(IntPtr context);
|
||||
|
||||
[BizImport(cc)]
|
||||
public abstract bool Citra_InstallCIA(IntPtr context, string ciaPath, byte[] messageBuffer, int messageBufferLen);
|
||||
public abstract bool Encore_InstallCIA(IntPtr context, string ciaPath, byte[] messageBuffer, int messageBufferLen);
|
||||
|
||||
[BizImport(cc)]
|
||||
public abstract bool Citra_LoadROM(IntPtr context, string romPath, byte[] errorMessageBuffer, int errorMessageBufferLen);
|
||||
public abstract bool Encore_LoadROM(IntPtr context, string romPath, byte[] errorMessageBuffer, int errorMessageBufferLen);
|
||||
|
||||
[BizImport(cc)]
|
||||
public abstract void Citra_RunFrame(IntPtr context);
|
||||
public abstract void Encore_RunFrame(IntPtr context);
|
||||
|
||||
[BizImport(cc)]
|
||||
public abstract void Citra_Reset(IntPtr context);
|
||||
public abstract void Encore_Reset(IntPtr context);
|
||||
|
||||
[BizImport(cc)]
|
||||
public abstract void Citra_GetVideoDimensions(IntPtr context, out int width, out int height);
|
||||
public abstract void Encore_GetVideoDimensions(IntPtr context, out int width, out int height);
|
||||
|
||||
[BizImport(cc)]
|
||||
public abstract int Citra_GetGLTexture(IntPtr context);
|
||||
public abstract int Encore_GetGLTexture(IntPtr context);
|
||||
|
||||
[BizImport(cc)]
|
||||
public abstract void Citra_ReadFrameBuffer(IntPtr context, int[] buffer);
|
||||
public abstract void Encore_ReadFrameBuffer(IntPtr context, int[] buffer);
|
||||
|
||||
[BizImport(cc)]
|
||||
public abstract void Citra_GetAudio(IntPtr context, out IntPtr buffer, out int frames);
|
||||
public abstract void Encore_GetAudio(IntPtr context, out IntPtr buffer, out int frames);
|
||||
|
||||
[BizImport(cc)]
|
||||
public abstract void Citra_ReloadConfig(IntPtr context);
|
||||
public abstract void Encore_ReloadConfig(IntPtr context);
|
||||
|
||||
[BizImport(cc)]
|
||||
public abstract int Citra_StartSaveState(IntPtr context);
|
||||
public abstract int Encore_StartSaveState(IntPtr context);
|
||||
|
||||
[BizImport(cc)]
|
||||
public abstract void Citra_FinishSaveState(IntPtr context, byte[] buffer);
|
||||
public abstract void Encore_FinishSaveState(IntPtr context, byte[] buffer);
|
||||
|
||||
[BizImport(cc)]
|
||||
public abstract void Citra_LoadState(IntPtr context, byte[] buffer, int stateLen);
|
||||
public abstract void Encore_LoadState(IntPtr context, byte[] buffer, int stateLen);
|
||||
|
||||
public enum MemoryRegion
|
||||
{
|
||||
|
@ -154,9 +154,9 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
|
|||
}
|
||||
|
||||
[BizImport(cc)]
|
||||
public abstract void Citra_GetMemoryRegion(IntPtr context, MemoryRegion region, out IntPtr ptr, out int size);
|
||||
public abstract void Encore_GetMemoryRegion(IntPtr context, MemoryRegion region, out IntPtr ptr, out int size);
|
||||
|
||||
[BizImport(cc)]
|
||||
public abstract void Citra_GetTouchScreenLayout(IntPtr context, out int x, out int y, out int width, out int height, out bool rotated, out bool enabled);
|
||||
public abstract void Encore_GetTouchScreenLayout(IntPtr context, out int x, out int y, out int width, out int height, out bool rotated, out bool enabled);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue