diff --git a/Source/3rdParty/mupen64plus-video-angrylion-plus/.gitrepo b/Source/3rdParty/mupen64plus-video-angrylion-plus/.gitrepo
index cdd994d1..9ea76d45 100644
--- a/Source/3rdParty/mupen64plus-video-angrylion-plus/.gitrepo
+++ b/Source/3rdParty/mupen64plus-video-angrylion-plus/.gitrepo
@@ -6,7 +6,7 @@
[subrepo]
remote = git@github.com:/Rosalie241/angrylion-rdp-plus.git
branch = RMG
- commit = c48015782853ac017e862f2e5c8f2c81d1afa327
- parent = ec9f4f9806f7c53e78eba7b3306e1951b1acd97d
+ commit = cc7f72699623fc02a08d372b310f0cab3472c4d4
+ parent = 525c7a4b608bc0457e73fbb5daadbb8834e1cd62
method = merge
cmdver = 0.4.6
diff --git a/Source/3rdParty/mupen64plus-video-angrylion-plus/src/plugin/mupen64plus/UserInterface/MainDialog.cpp b/Source/3rdParty/mupen64plus-video-angrylion-plus/src/plugin/mupen64plus/UserInterface/MainDialog.cpp
index a68521d5..c17d029b 100644
--- a/Source/3rdParty/mupen64plus-video-angrylion-plus/src/plugin/mupen64plus/UserInterface/MainDialog.cpp
+++ b/Source/3rdParty/mupen64plus-video-angrylion-plus/src/plugin/mupen64plus/UserInterface/MainDialog.cpp
@@ -50,6 +50,7 @@ MainDialog::MainDialog(QWidget* parent) : QDialog(parent)
this->viWidescreenCheckBox->setChecked(ConfigGetParamBool(configVideoAngrylionPlus, KEY_VI_WIDESCREEN));
this->viHideOverscanCheckBox->setChecked(ConfigGetParamBool(configVideoAngrylionPlus, KEY_VI_HIDE_OVERSCAN));
this->viIntegerScalingCheckBox->setChecked(ConfigGetParamBool(configVideoAngrylionPlus, KEY_VI_INTEGER_SCALING));
+ this->viVsyncCheckBox->setChecked(ConfigGetParamBool(configVideoAngrylionPlus, KEY_VI_VSYNC));
}
MainDialog::~MainDialog()
@@ -89,16 +90,13 @@ void MainDialog::on_buttonBox_clicked(QAbstractButton* button)
ConfigSetParameter(configVideoAngrylionPlus, KEY_DP_COMPAT, M64TYPE_INT, &dpCompatValue);
// checkboxes
-// int fullscreenValue = this->fullscreenCheckBox->isChecked() ? 1 : 0; //(ConfigGetParamBool(configVideoAngrylionPlus, KEY_FULLSCREEN));
+ int parallelValue = this->parallelCheckBox->isChecked() ? 1 : 0;
+ int busyLoopValue = this->busyLoopCheckBox->isChecked() ? 1 : 0;
- int parallelValue = this->parallelCheckBox->isChecked() ? 1 : 0; //(ConfigGetParamBool(configVideoAngrylionPlus, KEY_PARALLEL));
- int busyLoopValue = this->busyLoopCheckBox->isChecked() ? 1 : 0; //(ConfigGetParamBool(configVideoAngrylionPlus, KEY_BUSY_LOOP));
-
- int viWidescreenValue = this->viWidescreenCheckBox->isChecked() ? 1 : 0; //(ConfigGetParamBool(configVideoAngrylionPlus, KEY_VI_WIDESCREEN));
- int viHideOverscanValue = this->viHideOverscanCheckBox->isChecked() ? 1 : 0; //(ConfigGetParamBool(configVideoAngrylionPlus, KEY_VI_HIDE_OVERSCAN));
- int viIntegerScalingValue = this->viIntegerScalingCheckBox->isChecked() ? 1 : 0; //(ConfigGetParamBool(configVideoAngrylionPlus, KEY_VI_INTEGER_SCALING));
-
-// ConfigSetParameter(configVideoAngrylionPlus, KEY_FULLSCREEN, M64TYPE_BOOL, &fullscreenValue);
+ int viWidescreenValue = this->viWidescreenCheckBox->isChecked() ? 1 : 0;
+ int viHideOverscanValue = this->viHideOverscanCheckBox->isChecked() ? 1 : 0;
+ int viIntegerScalingValue = this->viIntegerScalingCheckBox->isChecked() ? 1 : 0;
+ int viVsyncValue = this->viVsyncCheckBox->isChecked() ? 1 : 0;
ConfigSetParameter(configVideoAngrylionPlus, KEY_PARALLEL, M64TYPE_BOOL, ¶llelValue);
ConfigSetParameter(configVideoAngrylionPlus, KEY_BUSY_LOOP, M64TYPE_BOOL, &busyLoopValue);
@@ -106,7 +104,7 @@ void MainDialog::on_buttonBox_clicked(QAbstractButton* button)
ConfigSetParameter(configVideoAngrylionPlus, KEY_VI_WIDESCREEN, M64TYPE_BOOL, &viWidescreenValue);
ConfigSetParameter(configVideoAngrylionPlus, KEY_VI_HIDE_OVERSCAN, M64TYPE_BOOL, &viHideOverscanValue);
ConfigSetParameter(configVideoAngrylionPlus, KEY_VI_INTEGER_SCALING, M64TYPE_BOOL, &viIntegerScalingValue);
-
+ ConfigSetParameter(configVideoAngrylionPlus, KEY_VI_VSYNC, M64TYPE_BOOL, &viVsyncValue);
ConfigSaveSection("Video-AngrylionPlus");
}
diff --git a/Source/3rdParty/mupen64plus-video-angrylion-plus/src/plugin/mupen64plus/UserInterface/MainDialog.ui b/Source/3rdParty/mupen64plus-video-angrylion-plus/src/plugin/mupen64plus/UserInterface/MainDialog.ui
index 6a96c9d6..be0cc3eb 100644
--- a/Source/3rdParty/mupen64plus-video-angrylion-plus/src/plugin/mupen64plus/UserInterface/MainDialog.ui
+++ b/Source/3rdParty/mupen64plus-video-angrylion-plus/src/plugin/mupen64plus/UserInterface/MainDialog.ui
@@ -245,6 +245,13 @@
+ -
+
+
+ Multithreaded rendering
+
+
+
-
@@ -266,28 +273,21 @@
+ -
+
+
+ Enable Vsync
+
+
+
- -
-
-
- 0
-
-
-
-
-
- Multithreaded rendering
-
-
-
-
-
-
- Qt::Vertical
+ Qt::Orientation::Vertical
@@ -306,10 +306,10 @@
-
- Qt::Horizontal
+ Qt::Orientation::Horizontal
- QDialogButtonBox::Cancel|QDialogButtonBox::Ok
+ QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok
diff --git a/Source/3rdParty/mupen64plus-video-angrylion-plus/src/plugin/mupen64plus/gfx_m64p.cpp b/Source/3rdParty/mupen64plus-video-angrylion-plus/src/plugin/mupen64plus/gfx_m64p.cpp
index cbb0943b..0ec2d09f 100644
--- a/Source/3rdParty/mupen64plus-video-angrylion-plus/src/plugin/mupen64plus/gfx_m64p.cpp
+++ b/Source/3rdParty/mupen64plus-video-angrylion-plus/src/plugin/mupen64plus/gfx_m64p.cpp
@@ -106,6 +106,7 @@ EXPORT m64p_error CALL PluginStartup(m64p_dynlib_handle _CoreLibHandle, void *Co
ConfigSetDefaultBool(configVideoAngrylionPlus, KEY_VI_WIDESCREEN, config.vi.widescreen, "Use anamorphic 16:9 output mode if True");
ConfigSetDefaultBool(configVideoAngrylionPlus, KEY_VI_HIDE_OVERSCAN, config.vi.hide_overscan, "Hide overscan area in filteded mode if True");
ConfigSetDefaultBool(configVideoAngrylionPlus, KEY_VI_INTEGER_SCALING, config.vi.integer_scaling, "Display upscaled pixels as groups of 1x1, 2x2, 3x3, etc. if True");
+ ConfigSetDefaultBool(configVideoAngrylionPlus, KEY_VI_VSYNC, config.vi.vsync, "Enable vsync to prevent tearing");
ConfigSetDefaultInt(configVideoAngrylionPlus, KEY_DP_COMPAT, config.dp.compat, "Compatibility mode (0=Fast 1=Moderate 2=Slow");
ConfigSaveSection("Video-AngrylionPlus");
@@ -210,6 +211,7 @@ EXPORT int CALL RomOpen (void)
config.vi.widescreen = ConfigGetParamBool(configVideoAngrylionPlus, KEY_VI_WIDESCREEN);
config.vi.hide_overscan = ConfigGetParamBool(configVideoAngrylionPlus, KEY_VI_HIDE_OVERSCAN);
config.vi.integer_scaling = ConfigGetParamBool(configVideoAngrylionPlus, KEY_VI_INTEGER_SCALING);
+ config.vi.vsync = ConfigGetParamBool(configVideoAngrylionPlus, KEY_VI_VSYNC);
config.dp.compat = (dp_compat_profile)ConfigGetParamInt(configVideoAngrylionPlus, KEY_DP_COMPAT);
diff --git a/Source/3rdParty/mupen64plus-video-angrylion-plus/src/plugin/mupen64plus/gfx_m64p.h b/Source/3rdParty/mupen64plus-video-angrylion-plus/src/plugin/mupen64plus/gfx_m64p.h
index cb5a8836..b9eb3477 100644
--- a/Source/3rdParty/mupen64plus-video-angrylion-plus/src/plugin/mupen64plus/gfx_m64p.h
+++ b/Source/3rdParty/mupen64plus-video-angrylion-plus/src/plugin/mupen64plus/gfx_m64p.h
@@ -39,5 +39,7 @@ extern ptr_PluginGetVersion CoreGetVersion;
#define KEY_VI_WIDESCREEN "ViWidescreen"
#define KEY_VI_HIDE_OVERSCAN "ViHideOverscan"
#define KEY_VI_INTEGER_SCALING "ViIntegerScaling"
+#define KEY_VI_VSYNC "ViVsync"
+
#define KEY_DP_COMPAT "DpCompat"
diff --git a/Source/3rdParty/mupen64plus-video-angrylion-plus/src/plugin/mupen64plus/screen.c b/Source/3rdParty/mupen64plus-video-angrylion-plus/src/plugin/mupen64plus/screen.c
index 6d69afbb..dd8bab2b 100644
--- a/Source/3rdParty/mupen64plus-video-angrylion-plus/src/plugin/mupen64plus/screen.c
+++ b/Source/3rdParty/mupen64plus-video-angrylion-plus/src/plugin/mupen64plus/screen.c
@@ -34,8 +34,6 @@ void* IntGetProcAddress(const char *name)
void screen_init(struct n64video_config* config)
{
- UNUSED(config);
-
/* Get the core Video Extension function pointers from the library handle */
CoreVideo_Init = (ptr_VidExt_Init) DLSYM(CoreLibHandle, "VidExt_Init");
CoreVideo_Quit = (ptr_VidExt_Quit) DLSYM(CoreLibHandle, "VidExt_Quit");
@@ -62,6 +60,8 @@ void screen_init(struct n64video_config* config)
CoreVideo_GL_SetAttribute(M64P_GL_CONTEXT_MINOR_VERSION, 0);
#endif
+ CoreVideo_GL_SetAttribute(M64P_GL_SWAP_CONTROL, config->vi.vsync);
+
CoreVideo_SetVideoMode(win_width, win_height, 0, win_fullscreen ? M64VIDEO_FULLSCREEN : M64VIDEO_WINDOWED, M64VIDEOFLAG_SUPPORT_RESIZING);
}