diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64.cs index 701cdf15e4..1f5dfa2fd3 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64.cs @@ -105,8 +105,13 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64 _videoProvider = new N64VideoProvider(api, videosettings); _audioProvider = new N64Audio(api); _inputProvider = new N64Input(api, comm, this._syncSettings.Controllers); - api.AttachPlugin(mupen64plusApi.m64p_plugin_type.M64PLUGIN_RSP, - "mupen64plus-rsp-hle.dll"); + + + string rsp = _syncSettings.RspType == N64SyncSettings.RSPTYPE.Rsp_Hle ? + "mupen64plus-rsp-hle.dll" : + "mupen64plus-rsp-z64-hlevideo.dll"; + + api.AttachPlugin(mupen64plusApi.m64p_plugin_type.M64PLUGIN_RSP, rsp); InitMemoryDomains(); RefreshMemoryCallbacks(); diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64SyncSettings.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64SyncSettings.cs index 7e60238e2c..75271afafd 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64SyncSettings.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64SyncSettings.cs @@ -22,6 +22,17 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64 Dynarec = 2, } + public RSPTYPE RspType = RSPTYPE.Rsp_Hle; + + public enum RSPTYPE + { + [Description("RSP HLE")] + Rsp_Hle = 0, + + [Description("RSP Z64 HLE Video")] + Rsp_Z64_hlevideo = 1 + } + public PLUGINTYPE VidPlugin = PLUGINTYPE.RICE; public int VideoSizeX = 320; public int VideoSizeY = 240; diff --git a/output/dll/mupen64plus-rsp-z64-hlevideo.dll b/output/dll/mupen64plus-rsp-z64-hlevideo.dll new file mode 100644 index 0000000000..3009047762 Binary files /dev/null and b/output/dll/mupen64plus-rsp-z64-hlevideo.dll differ