Compare commits

...

719 commits

Author SHA1 Message Date
GhostlyDark
9ce1e45d64
README: Add missing libusb dependency (#379)
The mupen64plus-input-gca plugin can't run without libusb-1.0.dll being present, but is able to build fine without libusb being installed. If not installed, the dependency script silently fails to find/copy the DLL.
2025-06-23 17:58:21 +02:00
Rosalie Wanders
be738f0cb7 ci: use windows-2022 2025-06-09 16:01:11 +02:00
Rosalie Wanders
e882e0f22c RMG: add NETPLAY guard to QWebSocket in NetplayCommon.hpp 2025-06-09 15:59:54 +02:00
Rosalie Wanders
f7a1d0f952 RMG: add IPv4 resolver to NetplayCommon and use it 2025-06-09 15:35:46 +02:00
Logan McNaughton
6b8990fa1a
RMG: ensure that netplay only connects using IPv4 (#374) 2025-06-09 15:18:35 +02:00
Rosalie Wanders
a74cff50f8 Package: add vulkan-headers to makedepends of PKGBUILD 2025-05-20 09:35:34 +02:00
Rosalie Wanders
d4ac45a9c5 Package: v0.7.9 2025-05-19 23:59:01 +02:00
Rosalie Wanders
32aebfec1a RMG-Core: change default of RomBrowser_MaxItems to 2048 2025-05-19 23:51:06 +02:00
Rosalie Wanders
aee7da8068 RMG: hide RomBrowserSearchWidget by default 2025-05-19 23:47:36 +02:00
Rosalie Wanders
078361e2e6 RMG: use const reference for slots 2025-05-19 23:41:28 +02:00
Rosalie Wanders
e0cae9c1a9 RMG: disable action_View_Game{List,Grid} during emulation 2025-05-19 23:34:01 +02:00
Rosalie Wanders
c8d46ee919 RMG: showSearchLineEdit -> showSearchWidget 2025-05-19 23:23:47 +02:00
Rosalie Wanders
c5965b3940 RMG: introduce RomBrowserSearchWidget 2025-05-19 23:06:39 +02:00
Rosalie Wanders
affb0ee0ee RMG: change placeholder text of searchLineEdit in RomBrowserWidget.cpp 2025-05-19 23:06:39 +02:00
Rosalie Wanders
dd6ea4f22a RMG-Core: change casing of default KeyBinding_ViewSearch setting value 2025-05-19 23:06:39 +02:00
Rosalie Wanders
006a7c8eff RMG: re-add nullptr check in RomBrowserWidget::getCurrentData() 2025-05-18 19:32:59 +02:00
Rosalie Wanders
5f10f39ac0 3rdParty: update mupen64plus-rsp-hle 2025-05-18 19:19:12 +02:00
Rosalie Wanders
6e1df7fc79 3rdParty: update mupen64plus-video-GLideN64 2025-05-18 19:18:44 +02:00
Rosalie Wanders
5cab9282e7 3rdParty: allow cropping each side separately in mupen64plus-video-parallel 2025-05-18 19:17:12 +02:00
Rosalie Wanders
1c6d8a6f59 RMG: fix ROM browser index mapping 2025-05-18 19:02:29 +02:00
Rosalie Wanders
c43f43e634 RMG-Core: Keybinding_ViewLog -> KeyBinding_ViewLog 2025-05-06 01:28:09 +02:00
Rosalie Wanders
409aac2caa RMG-Core: remove unrequired include 2025-05-06 01:28:09 +02:00
Rosalie Wanders
21b187dacc RMG: implement search for the ROM browser 2025-05-06 01:28:09 +02:00
Rosalie Wanders
a110f48fad RMG-Core: add KeyBinding_ViewSearch setting 2025-05-06 00:48:47 +02:00
Rosalie Wanders
1f24d20054 RMG-Core: fix name having incorrect count in CoreGetCurrentRomHeader() 2025-05-03 16:38:56 +02:00
Rosalie Wanders
8e61b79ecf 3rdParty: update mupen64plus-core 2025-05-02 15:08:02 +02:00
Rosalie Wanders
f459c456de RMG-Core: use const reference for local functions in Settings.cpp 2025-05-02 14:36:19 +02:00
Rosalie Wanders
0813a6e3ea RMG-Core: fix compile error with newer minizip-ng versions 2025-04-24 00:59:31 +02:00
Rosalie Wanders
606eb976cb 3rdParty: apply netplay optimization patch to mupen64plus-core 2025-04-24 00:10:05 +02:00
Rosalie Wanders
443ff545ab 3rdParty: update mupen64plus-video-GLideN64 2025-03-31 13:29:08 +02:00
Rosalie Wanders
3c615c8459 Package: v0.7.8 2025-03-23 13:55:18 +01:00
Rosalie Wanders
7973b5d151 Package: update InputSettings.png 2025-03-23 13:51:45 +01:00
Rosalie Wanders
8f0cd29366 RMG-Input: remove unrequired includes 2025-03-23 13:14:33 +01:00
Rosalie Wanders
b39357efda 3rdParty: update rom size patch for mupen64plus-core 2025-03-23 13:14:24 +01:00
Rosalie Wanders
3e0efac610 RMG-Core: shutdown mupen64plus-core in CoreShutdown() 2025-03-22 18:47:23 +01:00
Rosalie Wanders
595427aa98 RMG-Input: also make other buttons consistent height wise 2025-03-20 00:06:07 +01:00
Rosalie Wanders
62c30a4b4d RMG-Core: mark result from split_string() const 2025-03-19 23:58:18 +01:00
Rosalie Wanders
13f7ede034 RMG-Core: remove more unrequired usage of std::vector<T>::at() 2025-03-19 23:48:03 +01:00
Rosalie Wanders
f89b73cec1 RMG-Core: slightly optimize get_cache_entry_iter() 2025-03-19 23:47:44 +01:00
Rosalie Wanders
30d1f17329 RMG-Input: make add/remove buttons have a consistent height 2025-03-19 23:34:07 +01:00
Rosalie Wanders
b8ad7d1dce RMG-Input: swap around Z-Trigger and Start button mapping UI elements 2025-03-19 22:23:06 +01:00
Rosalie Wanders
6552aa23ec RMG-Core: remove unrequired usage of std::vector<T>::at() 2025-03-19 22:11:49 +01:00
Rosalie Wanders
6d81b8cda3 RMG-Input: don't set window icon 2025-03-19 22:06:53 +01:00
Rosalie Wanders
f5de7e8320 RMG-Input: mark variable const in ControllerImageWidget.cpp 2025-03-19 22:04:05 +01:00
Rosalie Wanders
0d2b88037f RMG-Input: fix accuracy of stick movement in ControllerImageWidget.cpp 2025-03-19 22:00:58 +01:00
Rosalie Wanders
ac7b9bce27 RMG-Input: fix percentage for new image in ControllerImageWidget.cpp 2025-03-19 22:00:58 +01:00
Rosalie Wanders
d87bcc3a21 RMG-Input: remove unused image 2025-03-18 19:40:48 +01:00
Rosalie Wanders
7261903186 RMG-Input: center C letter in controller image 2025-03-18 19:37:01 +01:00
Rosalie Wanders
2e6263ea5c RMG: add new contributors to AboutDialog.ui 2025-03-18 12:02:59 +01:00
Rosalie Wanders
fa9a288e0a RMG-Input: fix typo in Controller_Pressed_DpadRight.svg 2025-03-18 11:57:07 +01:00
Jaffacakelover
7fced2d3eb
RMG-Input: introduce new controller image (#349) 2025-03-18 11:55:37 +01:00
Rosalie Wanders
9bc56e90ee RMG-Core: use std::runtime_error instead of std::terminate in Directories.cpp 2025-03-17 00:15:10 +01:00
Rosalie Wanders
64d4c41d1d RMG-Core: delete copy constructor of m64p api classes 2025-03-17 00:13:44 +01:00
Rosalie Wanders
c2197b3053 RMG-Core: use references instead of pointers in Plugins.cpp 2025-03-17 00:13:02 +01:00
Rosalie Wanders
3f7c1584a4 RMG-Core: use static_cast in CoreDebugCallback() 2025-03-13 22:36:08 +01:00
Rosalie Wanders
17dc26779e RMG-Core: fix casing in error message in Core.cpp 2025-03-13 22:14:40 +01:00
Rosalie Wanders
edc8c0bb98 Script: add UpdateCopyrightYear.sh 2025-03-13 22:08:38 +01:00
Rosalie Wanders
5bf5d0ed16 RMG-Audio: update copyright year 2025-03-13 22:07:12 +01:00
Rosalie Wanders
7114338cec RMG-Input: update copyright year 2025-03-13 22:07:12 +01:00
Rosalie Wanders
64d0a90b82 RMG: update copyright year 2025-03-13 22:07:12 +01:00
Rosalie Wanders
d6b0f024da RMG-Core: update copyright year 2025-03-13 22:07:12 +01:00
Rosalie Wanders
3b2668977d RMG-Core: use reinterpret_cast instead of c style cast in Archive.cpp 2025-03-10 12:55:32 +01:00
Rosalie Wanders
5aa7ee0fe3 RMG-Core: use correct include version in Archive.cpp 2025-03-09 22:12:22 +01:00
Rosalie Wanders
f0119ec75d RMG-Core: add and use CORE_DIR_MAX_LEN 2025-03-09 18:52:14 +01:00
Rosalie Wanders
249654a879 RMG-Core: remove usage of PATH_MAX in Archive.cpp and use our own define 2025-03-09 18:45:28 +01:00
Rosalie Wanders
950becc1b3 Package: add libhidapi-hidraw to AppImage 2025-03-09 16:16:39 +01:00
Rosalie Wanders
b3424f3fc5 RMG-Input: fix dialog not quitting when pressing esc 2025-03-09 13:47:23 +01:00
Rosalie Wanders
e0e19824a5 3rdParty: apply pending IS viewer bounds check PR to mupen64plus-core 2025-03-09 13:41:35 +01:00
Rosalie Wanders
b3b8c2d8b1 3rdParty: apply pending PR patch to mupen64plus-core 2025-03-09 00:50:26 +01:00
Samuel
d9cd714c2c
Package: remove --patch-rpath argument to lib4bin in Create.sh 2025-03-08 18:43:37 +01:00
Rosalie Wanders
fb85a42477 RMG: ensure rom count is not 0 in RomBrowserLoadingWidget.cpp 2025-03-08 18:13:39 +01:00
Rosalie Wanders
1458f3df0b RMG: support using file path for server json for netplay 2025-03-07 18:49:18 +01:00
Rosalie Wanders
ad3973998f Package: v0.7.7 2025-03-05 19:46:27 +01:00
Rosalie Wanders
8ef1da8e0b RMG: only update list view column sizes when we have any row items 2025-03-05 19:40:51 +01:00
Rosalie Wanders
06cc95852e RMG-Core: use const pointer in zlib_filefunc_open() 2025-03-05 17:36:47 +01:00
Rosalie Wanders
44c6c17191 3rdParty: build imgui as a static library 2025-03-05 17:24:52 +01:00
Rosalie Wanders
fc9a249dd9 RMG: remove unrequired (void*) casts in on_Action_Settings_{type} 2025-03-05 17:18:09 +01:00
Rosalie Wanders
648c7fbc26 RMG-Input: use c++ style casts instead of c style casts 2025-03-05 17:05:09 +01:00
Rosalie Wanders
59fc11c8f4 RMG-Input: PluginConfig2 -> PluginConfigWithRomConfig 2025-03-05 17:04:30 +01:00
Rosalie Wanders
7d9e34abcf RMG-Core: PluginConfig2 -> PluginConfigWithRomConfig 2025-03-05 17:04:16 +01:00
Rosalie Wanders
d05fa8b91b RMG-Core: use const reference for string helpers in Settings.cpp 2025-03-05 16:43:43 +01:00
Rosalie Wanders
10bb0b9df2 RMG: fix crash when quitting RMG during a ROM browser refresh 2025-03-05 16:40:54 +01:00
Rosalie Wanders
5311d04957 RMG-Core: bump CACHE_FILE_ITEMS_MAX to 250000 2025-03-05 01:52:40 +01:00
Rosalie Wanders
f9de2fe9ef RMG-Core: add invalid ROM entries to the cache 2025-03-05 01:52:17 +01:00
Rosalie Wanders
6d77fd7e1e RMG-Core: use const reference in local functions in Cheats.cpp 2025-03-05 00:29:42 +01:00
Rosalie Wanders
5fc0de6da7 3rdParty: update imgui 2025-03-04 22:17:53 +01:00
Rosalie Wanders
0d114412e6 RMG-Core: don't export m64p::Core and m64p::Config 2025-03-04 22:08:49 +01:00
Rosalie Wanders
9a5c151de5 RMG: use CoreGetVideoMode() instead of using m64p::Core.DoCommand() 2025-03-04 22:08:31 +01:00
Rosalie Wanders
97c58d6e66 RMG-Core: add CoreGetVideoMode() 2025-03-04 22:08:11 +01:00
Rosalie Wanders
4a931f81c4 RMG-Core: use c++ style casts instead of c style casts 2025-03-04 22:07:31 +01:00
Rosalie Wanders
3c3c0d2b16 RMG: remove unrequired force checks in MainWindow::showErrorMessage() 2025-03-04 18:41:19 +01:00
Rosalie Wanders
39877ae948 RMG: fix incorrect size check in exception_handler() 2025-03-04 18:39:02 +01:00
Rosalie Wanders
f9137d3a63 RMG: show error message when emulation fails when launched with -q 2025-03-04 18:35:54 +01:00
Rosalie Wanders
ac1274eba4 RMG: use helper when error message is forced in MainWindow.cpp 2025-03-04 18:35:21 +01:00
Rosalie Wanders
d88db0fb88 Package: update InputSettings.png 2025-03-03 01:37:53 +01:00
Rosalie Wanders
9c121ad436 RMG: "Join Session" -> "Browse Sessions" 2025-03-03 01:08:33 +01:00
Rosalie Wanders
70598b1fcd 3rdParty: remove "Synchronize RDP and CPU" setting from mupen64plus-video-parallel 2025-03-03 00:49:13 +01:00
Rosalie Wanders
bfd3d078ad 3rdParty: fix RDRAM initialization patch in mupen64plus-core 2025-03-02 19:04:51 +01:00
Rosalie Wanders
7d99159388 3rdParty: respect rdp full sync in mupen64plus-video-parallel 2025-03-02 19:00:16 +01:00
Rosalie Wanders
f77475ee7f Package: add libspeexdsp to AppImage 2025-03-02 17:45:47 +01:00
Rosalie Wanders
048772344b 3rdParty: update mupen64plus-rsp-hle 2025-03-02 16:09:59 +01:00
Rosalie Wanders
23120150f9 3rdParty: update mupen64plus-video-GLideN64 2025-03-02 16:09:39 +01:00
Rosalie Wanders
2c32dfd552 RMG-Input: remove PluginConfig2HasRomConfig() 2025-02-27 23:04:59 +01:00
Rosalie Wanders
1624b1a4cc RMG-Core: remove usage of PluginConfig2HasRomConfig() 2025-02-27 23:04:54 +01:00
Rosalie Wanders
1db6a578b2 RMG-Core: export symbols 2025-02-27 21:37:34 +01:00
Rosalie Wanders
acc2c808f5 RMG-Core: ensure core is hooked in CoreGetUser{Data,Cache}Directory() 2025-02-27 19:24:56 +01:00
Rosalie Wanders
e1bbf66ff1 RMG: improve error message in exception_handler() 2025-02-27 19:18:52 +01:00
Rosalie Wanders
b4a0642122 RMG: fix error messages from MainWindow::Init() not showing 2025-02-27 19:15:05 +01:00
Rosalie Wanders
e7906c93a7 RMG: add minidump handler in main.cpp 2025-02-27 18:53:28 +01:00
Rosalie Wanders
d5af42a7a5 RMG-Core: hardcode MAX_FILENAME_LEN instead of using system MAX_PATH 2025-02-27 15:58:22 +01:00
Rosalie Wanders
e4cbfc388f RMG-Core: remove unrequired Rom.hpp include in Cheats.cpp 2025-02-27 15:53:49 +01:00
Rosalie Wanders
572792a1c8 RMG-Core: remove invalid name in get_plugin_type_name() 2025-02-27 15:19:51 +01:00
Rosalie Wanders
3570200e53 RMG-Core: make arrays const 2025-02-27 15:18:27 +01:00
Rosalie Wanders
e11d1884c8 RMG-Core: use std::array in apply_plugin_settings() 2025-02-27 15:18:15 +01:00
Rosalie Wanders
77a201f52a RMG-Core: use std::optional in CoreGetPortableDirectoryMode() 2025-02-27 15:17:52 +01:00
Rosalie Wanders
4416343761 RMG-Core: use int instead of int32_t for CoreStringToInt() 2025-02-25 22:20:33 +01:00
Rosalie Wanders
88a6685a6b RMG-Core: add missing cstdint include 2025-02-24 21:59:25 +01:00
Rosalie Wanders
e0def96cb7 RMG-Core: fix CoreLowerString() 2025-02-24 21:37:29 +01:00
Rosalie Wanders
dfca82520d RMG-Core: add & use CoreStringToInt() instead of std::stoi() 2025-02-24 21:37:29 +01:00
Rosalie Wanders
ea9313aa1b RMG-Core: use noexcept versions of std::filesystem functions 2025-02-24 21:32:51 +01:00
Rosalie Wanders
9ef92c3578 RMG-Core: fix variable names in MediaLoader.cpp 2025-02-24 21:31:48 +01:00
Rosalie Wanders
ef3a68f509 Package: v0.7.6 2025-02-22 14:54:57 +01:00
Rosalie Wanders
2060facc2a RMG-Input: disable hotplug support for now 2025-02-20 14:31:13 +01:00
Rosalie Wanders
474eff65fb RMG-Input: fix incorrect logic in on_SDLThread_DeviceSearchFinished() 2025-02-19 23:20:47 +01:00
Rosalie Wanders
6345ec6eb3 RMG: fix parent of QMenu items in RomBrowserWidget.cpp 2025-02-18 18:41:20 +01:00
Rosalie Wanders
b65692f12b 3rdParty: fix crash when vulkan initialization fails in parallel-rdp 2025-02-17 23:26:48 +01:00
Rosalie Wanders
8615c5efe1 RMG: only return surface extensions in VidExt_VK_GetInstanceExtensions() 2025-02-17 23:08:52 +01:00
Rosalie Wanders
ae5813a635 Package: v0.7.5 2025-02-16 19:56:01 +01:00
Rosalie Wanders
219f74bb8b RMG-Input: {Left,Right}Trigger -> {Left,Right}Shoulder 2025-02-16 19:46:20 +01:00
Rosalie Wanders
91b4213044 RMG-Core: {Left,Right}Trigger -> {Left,Right}Shoulder 2025-02-16 19:43:34 +01:00
Rosalie Wanders
297968f319 RMG-Input: add spacer between L-Trigger and R-Trigger elements 2025-02-16 19:30:39 +01:00
Rosalie Wanders
a40d1d34f5 README: correct package name for msys2 2025-02-16 19:28:41 +01:00
Rosalie Wanders
b964415ac7 RMG: remove double semicolon usage 2025-02-16 19:17:03 +01:00
Rosalie Wanders
4707fe143c RMG-Input: remove double semicolon usage 2025-02-16 19:16:57 +01:00
Rosalie Wanders
66fc3492ca RMG-Core: remove double semicolon usage 2025-02-16 19:16:51 +01:00
Rosalie Wanders
45e0231214 RMG: fix possible crash on Windows 2025-02-16 15:44:04 +01:00
Rosalie Wanders
b05b0faeea RMG-Input: use ROM header and settings in CorePluginsOpenROMConfig() 2025-02-16 00:51:06 +01:00
Rosalie Wanders
7b4b8c5c90 RMG: implement cache support for CorePluginsOpenROMConfig() 2025-02-16 00:51:06 +01:00
Rosalie Wanders
97bd81c287 RMG-Core: utilize cache for CorePluginsOpenROMConfig() 2025-02-16 00:50:08 +01:00
Rosalie Wanders
3222b962cc 3rdParty: use parent from PluginConfig() in mupen64plus-video-GLideN64 2025-02-16 00:34:26 +01:00
Rosalie Wanders
37f89b448f 3rdParty: use parent from PluginConfig() in mupen64plus-video-angrylion-plus 2025-02-16 00:34:26 +01:00
Rosalie Wanders
f91ed8d848 3rdParty: use parent from PluginConfig() in mupen64plus-video-parallel 2025-02-16 00:15:22 +01:00
Rosalie Wanders
437733c9fd RMG-Input: use parent from PluginConfig2() 2025-02-16 00:15:22 +01:00
Rosalie Wanders
8f6496db86 RMG-Audio: use parent from PluginConfig() 2025-02-16 00:15:22 +01:00
Rosalie Wanders
e1cd2f8400 RNG: set parent for CorePluginsOpenConfig() 2025-02-16 00:15:22 +01:00
Rosalie Wanders
94341526d7 RMG-Core: set parent in plugin configuration dialogs 2025-02-16 00:15:21 +01:00
Rosalie Wanders
e1bc2e4a89 RMG-Core: fix error message in Plugins.cpp 2025-02-15 17:17:52 +01:00
Rosalie Wanders
7a28f1df17 Package: v0.7.4 2025-02-15 00:11:09 +01:00
Rosalie Wanders
4a67f98a3b RMG-Audio: turn sample messages from warnings into verbose messages 2025-02-15 00:06:19 +01:00
Rosalie Wanders
9908431e0a RMG: improve logging of retrieving of OpenGL context failure 2025-02-15 00:01:25 +01:00
Rosalie Wanders
a6dca6618e RMG: use CORE_DIR_SEPERATOR_STR instead of "/" 2025-02-14 23:58:04 +01:00
Rosalie Wanders
56ebe38849 RMG-Input: use CORE_DIR_SEPERATOR_STR instead of "/" 2025-02-14 23:55:46 +01:00
Rosalie Wanders
32a1a26fcf RMG-Core: use CORE_DIR_SEPERATOR_STR instead of "/" 2025-02-14 23:55:36 +01:00
Rosalie Wanders
cbdfa2b307 RMG-Input: add caption to file dialogs 2025-02-14 23:38:40 +01:00
Rosalie Wanders
2be09f9e03 RMG: add caption to file and directory dialogs 2025-02-14 23:38:27 +01:00
Rosalie Wanders
51ce612bd9 RMG: slightly improve formatting of MainWindow.cpp 2025-02-10 23:06:56 +01:00
Rosalie Wanders
e37bc3faf9 RMG: improve EmulationThread by inhibiting screensaver during emulation 2025-02-10 23:00:51 +01:00
Rosalie Wanders
7059a974ed Script: include qjpeg and qjp2 Qt plugins in BundleDependencies.sh 2025-02-10 17:29:59 +01:00
Rosalie Wanders
4b17a8a494 Package: v0.7.3 2025-02-09 23:36:25 +01:00
Rosalie Wanders
428ef7549a RMG-Core: make arguments to CoreGetCachedRomHeaderAndSettings() optional 2025-02-09 18:30:16 +01:00
Rosalie Wanders
c0d81fdc9f RMG: use cached default and current settings for SettingsDialog 2025-02-09 18:30:16 +01:00
Rosalie Wanders
78a9ae5fe1 RMG-Core: extend cache with default and current settings 2025-02-09 18:02:17 +01:00
Rosalie Wanders
80f9fd0234 RMG: 'Controller pack' -> 'Controller pak' 2025-02-09 18:01:28 +01:00
Rosalie Wanders
c046984a37 RMG: fix flicker UI logic of NetplaySessionBrowserWidget 2025-02-09 16:35:58 +01:00
Rosalie Wanders
1ec02c59f3 3rdParty: apply pending crash fix patch to mupen64plus-core 2025-02-09 14:42:11 +01:00
Rosalie Wanders
383eab48c8 3rdParty: implement register mirroring in mupen64plus-core 2025-02-09 14:34:53 +01:00
Rosalie Wanders
358cb337dc 3rdParty: update vosk-api 2025-02-09 02:02:30 +01:00
Rosalie Wanders
141aefd81a 3rdParty: update mupen64plus-video-GLideN64 2025-02-08 19:39:37 +01:00
Rosalie Wanders
39a7887b35 cmake: remove unused argument to BundleDependencies.sh 2025-02-07 21:21:10 +01:00
Rosalie Wanders
653d0f49a3 Script: exclude unused qt plugins and simplify BundleDependencies.sh 2025-02-07 21:21:10 +01:00
Rosalie Wanders
3e8b3656e7 RMG: RMG_WAYLAND -> RMG_ALLOW_WAYLAND 2025-02-06 17:03:10 +01:00
Rosalie Wanders
4d975a731e RMG: remove unused signals from EmulationThread.hpp 2025-02-06 16:36:08 +01:00
Rosalie Wanders
0dee590f75 RMG: add Netplay -> View Session 2025-02-06 15:59:32 +01:00
Rosalie Wanders
f5bed2b464 RMG: improve validation of chat line edit in NetplaySessionDialog 2025-02-06 15:58:30 +01:00
Rosalie Wanders
38a78e2627 RMG: improve signal names in KeybindButton 2025-02-06 15:20:12 +01:00
Rosalie Wanders
f94ea3b6f8 RMG-Core: remove RomBrowser_SortAfterSearch setting 2025-02-06 15:16:45 +01:00
Rosalie Wanders
2af3c8a7f5 RMG: remove 'Sort results after search' setting 2025-02-06 15:16:35 +01:00
Rosalie Wanders
92dfc7c4d0 RMG-Core: use const reference in for loops in Cheats.cpp 2025-02-04 18:58:26 +01:00
Rosalie Wanders
4ff94efa4b ci: further improve workflow 2025-02-04 18:51:41 +01:00
Rosalie Wanders
ef493de942 3rdParty: change minimum cmake version in discord-rpc 2025-02-04 18:47:38 +01:00
Rosalie Wanders
3067049d5c 3rdParty: fix warning in mupen64plus-core 2025-02-04 18:39:41 +01:00
Rosalie Wanders
08be74297f RMG-Core: get_romheader_romsettings() -> get_romheader_and_romsettings() 2025-02-04 18:13:04 +01:00
Rosalie Wanders
6122d4ff21 RMG-Core: use CoreGetCurrentDefaultRomSettings() in CoreGetCachedRomHeaderAndSettings() 2025-02-04 18:11:08 +01:00
Rosalie Wanders
27665e7221 RMG: make local functions static in main.cpp 2025-02-04 18:09:25 +01:00
Rosalie Wanders
6a5d0d6547 RMG-Core: remove CoreHasRomHeaderAndSettingsCached() 2025-02-04 18:09:13 +01:00
Rosalie Wanders
a2c6a54b90 RMG: improve performance of cheats dialog & ROM information dialog 2025-02-04 18:03:14 +01:00
Rosalie Wanders
0c88d6584f RMG-Core: improve performance of cheats API 2025-02-04 18:02:14 +01:00
Rosalie Wanders
f0f0795733 RMG: simplify RomSearcherThread.cpp 2025-02-04 18:02:14 +01:00
Rosalie Wanders
e32fe57080 RMG-Core: simplify CoreGetCachedRomHeaderAndSettings() usage 2025-02-04 18:02:04 +01:00
Rosalie Wanders
d536e20da8 RMG-Core: add header country code to CachedRomHeaderAndSettings 2025-02-04 18:01:51 +01:00
Rosalie Wanders
4f850136fa 3rdParty: use libvosk.dll compiled in UCRT64 environment 2025-02-02 17:51:06 +01:00
Rosalie Wanders
612a9192d3 README: update mingw package list 2025-02-02 17:48:10 +01:00
Rosalie Wanders
0480872e40 cmake: use UCRT64 environment libraries 2025-02-02 17:48:09 +01:00
Rosalie Wanders
88be43a1b1 ci: use UCRT64 environment 2025-02-02 17:48:09 +01:00
Rosalie Wanders
808960b1c1 ci: simplify workflow 2025-02-02 17:30:05 +01:00
Rosalie Wanders
0962c6969f 3rdParty: update mupen64plus-video-parallel 2025-02-02 08:10:36 +01:00
Rosalie Wanders
c4929d9ac7 3rdParty: update mupen64plus-rsp-parallel 2025-02-02 08:00:14 +01:00
Rosalie Wanders
85159348a1 3rdParty: update mupen64plus-video-angrylion-plus 2025-02-02 07:47:33 +01:00
Rosalie Wanders
3b385d48f9 RMG-Core: add typedef for file time & correct failure result 2025-02-01 23:15:05 +01:00
Rosalie Wanders
a396b372dd RMG-Core: move osal functions to File.cpp and Library.cpp 2025-02-01 22:57:40 +01:00
Rosalie Wanders
f5b0452e77 RMG-Input: fix VRU support 2025-02-01 22:55:23 +01:00
Rosalie Wanders
b82dcbac57 Script: switch to make 2025-02-01 22:20:42 +01:00
Rosalie Wanders
964ed7837b ci: use make instead of ninja 2025-02-01 22:20:42 +01:00
Rosalie Wanders
5e592ed9c0 RMG-Core: remove all includes from Core.hpp 2025-02-01 21:53:38 +01:00
Rosalie Wanders
018de840ab RMG: use only needed headers from RMG-Core 2025-02-01 21:53:38 +01:00
Rosalie Wanders
e3086fb6a8 RMG-Input: use only needed headers from RMG-Core 2025-02-01 21:44:54 +01:00
Rosalie Wanders
1ed5a39345 RMG-Audio: use only needed headers from RMG-Core 2025-02-01 21:44:46 +01:00
Rosalie Wanders
7e546b351a RMG-Core: remove CoreInit() for plugins 2025-02-01 20:54:58 +01:00
Rosalie Wanders
4b0cd7562d RMG-Input: remove unneeded call to CoreInit() 2025-02-01 20:54:45 +01:00
Rosalie Wanders
3b1e5153d3 RMG-Audio: remove unneeded call to CoreInit() 2025-02-01 20:54:37 +01:00
Rosalie Wanders
f0d9bbfbbb 3rdParty: update mupen64plus-video-GLideN64 2025-02-01 20:29:58 +01:00
Rosalie Wanders
e0925e564b RMG: make update check not an error message box 2025-02-01 15:36:32 +01:00
Rosalie Wanders
85b4daa005 RMG: expand details by default in message boxes 2025-02-01 15:35:46 +01:00
Rosalie Wanders
c7dd5a6a29 RMG-Core: use const reference for CoreSetNetplayCheats() 2025-02-01 13:50:54 +01:00
Rosalie Wanders
701d1f9ab7 RMG: make cheatsTreeWidget's expandable items read-only 2025-02-01 13:37:26 +01:00
Rosalie Wanders
aa32706de0 RMG: simplify message_handler in main.cpp 2025-01-31 14:34:01 +01:00
Pcgaming575
b9a58101f9 Data: add cheats for some spanish translated games 2025-01-31 14:22:31 +01:00
Rosalie Wanders
c0cdfb2db8 RMG: fix filename validation for portable windows in UpdateDialog.cpp 2025-01-31 08:44:32 +01:00
Rosalie Wanders
ffc45e2bce Package: v0.7.2 2025-01-31 00:06:50 +01:00
Rosalie Wanders
5d078322a7 RMG-Core: add netplay bool to CoreStartEmulation to improve readability 2025-01-31 00:00:09 +01:00
Rosalie Wanders
988c4f030a RMG: correct CoreOpenRom() argument in NetplaySessionDialog.cpp 2025-01-30 23:56:24 +01:00
Rosalie Wanders
d217d0bae3 RMG: show enabled cheats in NetplaySessionDialog 2025-01-30 23:43:54 +01:00
Rosalie Wanders
6ca31dbb82 ci: update packages on Linux 2025-01-30 22:26:20 +01:00
Rosalie Wanders
5f97be5e94 RMG: set window icon in NetplaySessionDialog 2025-01-30 22:22:50 +01:00
Rosalie Wanders
b014fdf424 RMG-Input: detect devices using serial and path instead of device index 2025-01-30 22:01:29 +01:00
Rosalie Wanders
31110c01f1 RMG-Core: add Input_Device{Path,Serial} settings 2025-01-30 22:00:01 +01:00
Rosalie Wanders
9dc250694b RMG: show ping in netplay dialogs 2025-01-29 23:48:06 +01:00
Rosalie Wanders
80d6d8a07e RMG: add refresh icon to refresh button in NetplaySessionBrowserDialog 2025-01-29 23:21:30 +01:00
Rosalie Wanders
c8d8e2ac71 RMG: adds cheats icon to cheats button in NetplaySessionDialog 2025-01-29 23:18:11 +01:00
Rosalie Wanders
7e90d59d86 RMG: remove unrequired QString include from CheatsCommon.hpp 2025-01-29 23:05:08 +01:00
Rosalie Wanders
8e02a0ecda RMG: implement netplay cheat support 2025-01-29 23:00:43 +01:00
Rosalie Wanders
d468794979 RMG-Core: add netplay cheat functions 2025-01-29 22:47:00 +01:00
Rosalie Wanders
7b4629b1f9 RMG: check failure state for reply_begin_game in NetplaySessionDialog 2025-01-26 12:38:46 +01:00
Rosalie Wanders
8312b2a299 RMG: add comment to NetplayCommon.hpp 2025-01-24 22:41:58 +01:00
Rosalie Wanders
5fd9b780e5 RMG: save and restore selected server in netplay dialogs 2025-01-24 22:40:39 +01:00
Rosalie Wanders
881e0c9582 RMG-Core: add Netplay_SelectedServer setting 2025-01-24 22:39:31 +01:00
Rosalie Wanders
82291ce5f0 RMG: add minimize button hint to LogDialog and NetplaySessionDialog 2025-01-24 22:26:39 +01:00
Rosalie Wanders
191c7b1def RMG: decouple NetplaySessionDialog from MainWindow & fix function names 2025-01-24 22:26:08 +01:00
Rosalie Wanders
393a9e40fe Package: v0.7.1 2025-01-21 22:24:02 +01:00
Rosalie Wanders
4752e1530c RMG: change minor spacing in NetplaySessionBrowserWidget.hpp 2025-01-21 22:22:00 +01:00
Rosalie Wanders
847f832aff RMG: keep track of game launch in NetplaySessionDialog 2025-01-21 21:26:34 +01:00
Rosalie Wanders
c93f82928f RMG: improve handling of reply_players reply in NetplaySessionDialog.cpp 2025-01-21 19:06:31 +01:00
Rosalie Wanders
c1db77afea RMG: turn 'Play Game with Disk' context menu item into a dynamic context menu 2025-01-21 18:36:37 +01:00
Rosalie Wanders
667c2d5272 RMG: fix compilation failure by adding even more NETPLAY guards 2025-01-21 18:36:04 +01:00
Rosalie Wanders
fe7abb585a RMG: fix compilation failure by adding more NETPLAY guards 2025-01-21 18:24:17 +01:00
Rosalie Wanders
c0ebf11420 RMG: make Netplay Session dialog stay open while in-game 2025-01-21 17:28:36 +01:00
Rosalie Wanders
26b35eb299 RMG: only add cartridges to Create Netplay Session dialog 2025-01-21 17:26:36 +01:00
Rosalie Wanders
a2a9ea2648 RMG: add Samueru-sama as contributor to AboutDialog.ui 2025-01-20 18:29:49 +01:00
Rosalie Wanders
42fd1827b3 RMG-Core: add missing cstring include to Archive.cpp 2025-01-20 18:23:24 +01:00
Rosalie Wanders
053f9931c4 RMG: add *.zip *.7z to filter in on_RomBrowser_PlayGameWith() 2025-01-20 18:15:13 +01:00
Rosalie Wanders
5e3315b471 RMG-Core: add support for 64DD disks in an archive in MediaLoader.cpp 2025-01-20 18:10:40 +01:00
Rosalie Wanders
da1d7fcd2e RMG-Core: move archive functions to Archive.{cpp,hpp} 2025-01-20 18:09:34 +01:00
Rosalie Wanders
f6039bad01 RMG-Core: add common string functions to String.{cpp,hpp} 2025-01-20 18:08:42 +01:00
Rosalie Wanders
7aeeb70db2 RMG-Core: Utils/File.{cpp,hpp} -> File.{cpp,hpp} 2025-01-20 18:08:42 +01:00
Rosalie Wanders
50ee41435e RMG: fix UpdateDialog.cpp 2025-01-20 17:24:15 +01:00
Rosalie Wanders
592994ee87 RMG: fix casing in UpdateDialog.cpp 2025-01-20 16:47:51 +01:00
Rosalie Wanders
216284faff gitignore: add AppImage build files 2025-01-20 16:45:02 +01:00
Rosalie Wanders
6f67e1edd5 RMG: add more strict filename checks in UpdateDialog.cpp 2025-01-20 16:43:17 +01:00
Rosalie Wanders
2ada580a30 Package: improve AppImage script 2025-01-20 16:41:33 +01:00
Samuel
7f02a764ce
Package: improve AppImage (#324) 2025-01-20 14:44:27 +01:00
Rosalie Wanders
ddaf58c7b6 3rdParty: apply RDRAM initialization patch to mupen64plus-core 2025-01-16 20:58:14 +01:00
Rosalie Wanders
817ef4535b 3rdParty: apply pending warning fix patch to mupen64plus-core 2025-01-10 22:39:18 +01:00
Rosalie Wanders
530a48a30c 3rdParty: update rom size patch for mupen64plus-core 2025-01-10 18:36:52 +01:00
Rosalie Wanders
116eeb35d4 3rdParty: apply experimental rom size patch to mupen64plus-core 2025-01-09 13:42:58 +01:00
Rosalie Wanders
b266371fa3 3rdParty: apply pending patches to mupen64plus-core 2025-01-09 13:41:12 +01:00
Rosalie Wanders
d4e6db211c Package: v0.7.0 2025-01-05 01:57:30 +01:00
Rosalie Wanders
0ec790e61f 3rdParty: apply temp fix for Mario Kart 64 to mupen64plus-video-GLideN64 2025-01-05 01:11:52 +01:00
Rosalie Wanders
ae5b141d16 RMG: also set transfer timeout for update check 2024-12-30 16:30:41 +01:00
Rosalie Wanders
66364892f9 RMG: set transfer timeout in netplay dialogs 2024-12-30 16:29:54 +01:00
Rosalie Wanders
5144e1748b RMG: make nickname validation consistent in netplay dialogs 2024-12-29 23:04:05 +01:00
Rosalie Wanders
6375a30d00 RMG-Core: disable Core{Pause,Resume}Emulation() during netplay 2024-12-29 22:56:36 +01:00
Rosalie
4514b530ab RMG-Input: fix freeze when opening configuration GUI during netplay 2024-12-29 22:56:07 +01:00
Rosalie
c102aa042d
ci: use consistent build_dir 2024-12-29 20:04:05 +01:00
Rosalie Wanders
0f28fb6d13 RMG: hide netplay tab in settings dialog when built with netplay disabled 2024-12-29 19:46:17 +01:00
Rosalie Wanders
4e8ab796ba ci: use strategy matrix 2024-12-29 19:37:21 +01:00
Rosalie Wanders
91feda3427 RMG-Core: fix compilation when compiling with netplay disabled 2024-12-29 18:33:05 +01:00
Rosalie Wanders
a8e4f058be RMG: reset session browser widget when requesting sessions fails 2024-12-28 09:20:25 +01:00
Rosalie Wanders
e9168e935d Package: v0.6.9 2024-12-28 09:09:36 +01:00
Rosalie Wanders
73be38bedc RMG: minor code style change for NetplaySessionBrowserDialog::accept() 2024-12-28 09:09:07 +01:00
Rosalie Wanders
8a69d687ab Package: update screenshots 2024-12-28 08:54:43 +01:00
Rosalie Wanders
4f20b94b7a RMG: 'Server URL' -> 'Server list URL' in SettingsDialog 2024-12-27 23:08:35 +01:00
Rosalie Wanders
7f4ff9eb54 RMG: correct error messages in netplay dialogs 2024-12-27 23:08:35 +01:00
Rosalie Wanders
72b3b4fb75 RMG: update netplay to API version 17 2024-12-27 23:08:35 +01:00
Rosalie Wanders
9b5a7848d3 RMG: improve UI of CreateNetplaySessionDialog 2024-12-27 23:08:35 +01:00
Rosalie Wanders
6ca2cbf297 RMG: improve UI of NetplaySessionBrowserDialog 2024-12-27 23:07:31 +01:00
Rosalie Wanders
d3d1facadd 3rdParty: apply pending font patch to mupen64plus-video-GLideN64 2024-12-27 13:37:56 +01:00
Rosalie Wanders
bc723bffb0 RMG: remove unrequired QMessageBox includes 2024-12-27 13:22:02 +01:00
Rosalie Wanders
8f0299c302 RMG: add common QtMessageBox::Error() function 2024-12-25 22:25:54 +01:00
Rosalie Wanders
abdcb74978 RMG-Audio: disable audio sync during netplay 2024-12-25 21:57:45 +01:00
Rosalie Wanders
80565331d8 3rdParty: disable vsync during netplay in mupen64plus-video-parallel 2024-12-25 21:46:45 +01:00
Rosalie Wanders
38cabc1ced RMG: don't respect M64P_GL_SWAP_CONTROL during netplay in VidExt.cpp 2024-12-25 21:41:09 +01:00
Rosalie Wanders
84fb6243c8 RMG: change logic order in CreateNetplaySessionDialog::accept() 2024-12-25 21:32:48 +01:00
Rosalie Wanders
48e21f1450 RMG: add nullptr check to CreateNetplaySessionDialog::accept() 2024-12-25 13:41:32 +01:00
Rosalie Wanders
7c76e8c3ff RMG: add error when downloading json file fails in CreateNetplaySessionDialog 2024-12-25 13:20:53 +01:00
Rosalie Wanders
5a443348cc RMG: make sendPushButton default automatically in NetplaySessionDialog 2024-12-25 13:18:14 +01:00
Rosalie Wanders
c6480e258c 3rdParty: apply 'Disable VRU during netplay' patch to mupen64plus-core 2024-12-25 13:09:14 +01:00
Rosalie Wanders
9602aa2ef7 RMG: don't enforce same cpu_emulator because it gets synced 2024-12-25 12:56:22 +01:00
Rosalie Wanders
a0369def10 RMG: also fix the game name we send to the server 2024-12-25 12:55:11 +01:00
Rosalie Wanders
7930965ff2 RMG: fix names not matching ROM browser in CreateNetplaySessionDialog 2024-12-24 22:10:42 +01:00
Rosalie Wanders
2bea2f07f7 RMG: fix storing ROM data duplicates in RomBrowserWidget.cpp 2024-12-24 22:10:11 +01:00
Rosalie Wanders
b75aea7f26 RMG-Core: move Settings.{cpp,hpp} and include SettingsID.hpp 2024-12-24 17:38:33 +01:00
Rosalie Wanders
e9f0f427b8 RMG: remove unrequired Settings.hpp include 2024-12-24 17:36:42 +01:00
Rosalie Wanders
a5e685becd RMG-Audio: remove unrequired Settings.hpp includes 2024-12-24 17:36:31 +01:00
Rosalie Wanders
f3986284ab RMG: remove unrequired include in CreateNetplaySessionDialog.cpp 2024-12-24 17:28:57 +01:00
Rosalie Wanders
33650061aa RMG-Core: change default of RomBrowser_MaxItems setting 2024-12-24 17:27:29 +01:00
Rosalie Wanders
421f1d105a Package: v0.6.8 2024-12-22 18:49:39 +01:00
Rosalie Wanders
b6cbc52cb8 RMG: add refresh button to NetplaySessionBrowserDialog 2024-12-22 17:47:09 +01:00
Rosalie Wanders
82687d5db3 RMG: implement netplay support 2024-12-22 16:35:16 +01:00
Rosalie Wanders
08eb1e5ba4 RMG-Core: add netplay settings 2024-12-22 16:33:24 +01:00
Rosalie Wanders
83bc8f8c20 RMG-Core: implement netplay support 2024-12-22 16:33:11 +01:00
Rosalie Wanders
cb9eb2ddee ci: install SDL2_net 2024-12-22 16:31:57 +01:00
Rosalie Wanders
3e61a72cf1 cmake: add NETPLAY option 2024-12-22 16:31:34 +01:00
Rosalie Wanders
cc75ce55cb RMG-Core: fix crash on windows when opening an archive in Rom.cpp 2024-12-22 02:55:31 +01:00
Rosalie Wanders
1a84d6b7c4 RMG: fix vulkan video extension function definitions in VidExt.cpp 2024-12-20 14:15:52 +01:00
Rosalie Wanders
5fd460d4b9 Package: v0.6.7 2024-12-16 01:39:47 +01:00
Rosalie Wanders
fea5ed99f8 RMG: add cursedUs64-git as contributor to AboutDialog.ui 2024-12-16 01:38:18 +01:00
Rosalie Wanders
aa824cc1f7 3rdParty: update LZMA SDK to v24.09 2024-12-16 01:38:18 +01:00
Rosalie Wanders
a575eff7ec 3rdParty: update SDL_GameControllerDB 2024-12-16 01:38:18 +01:00
Rosalie Wanders
4eaa2a9b5f 3rdParty: update mupen64plus-video-GLideN64 2024-12-16 01:38:18 +01:00
cursedUs64-git
d406a421e9
RMG-Input: fix typo in ControllerWidget.ui (#306)
Fix a typo, instead of being `left:` it should be `Left:` to match with the other instances of the same.
2024-11-30 13:40:04 +01:00
Rosalie Wanders
b6b1e9138c RMG-Core: correct error message in Volume.cpp 2024-11-22 13:08:11 +01:00
orbea
4596d2e6cf
3rdParty: remove -fno-strict-aliasing from mupen64plus-input-raphnetraw (#301)
The build succeeds with -Werror=strict-aliasing so this is not needed.
2024-11-04 18:21:51 +01:00
Rosalie Wanders
4cd4f4c6ea 3rdParty: update mupen64plus-core 2024-11-03 16:46:38 +01:00
Rosalie Wanders
37839b0178 RMG: fix out of bounds read in SettingsDialog::loadGamePluginSettings() 2024-10-21 21:20:08 +02:00
orbea
69c24b9131
3rdParty: improve the hidapi check in mupen64plus-input-raphnetraw (#297)
Better matches the style in mupen64plus-core.

Upstream-PR: https://github.com/raphnet/mupen64plus-input-raphnetraw/pull/17
2024-10-21 07:09:23 +02:00
Rosalie Wanders
e68483fce2 3rdParty: update mupen64plus-video-GLideN64 2024-10-20 18:01:04 +02:00
orbea
f6b73b86c6
3rdParty: don't hard-code pkg-config in mupen64plus-input-raphnetraw (#296) 2024-10-20 17:59:56 +02:00
Rosalie Wanders
9cae93b9bb Package: v0.6.6 2024-09-30 23:33:32 +02:00
Rosalie Wanders
63e24586d4 3rdParty: update SDL_GameControllerDB 2024-09-30 23:31:35 +02:00
Rosalie Wanders
dfd0958b21 3rdParty: update mupen64plus-core 2024-09-30 23:26:44 +02:00
Rosalie Wanders
6e2d29dc60 3rdParty: update mupen64plus-video-GLideN64 2024-09-30 23:25:28 +02:00
GhostlyDark
1b45907ab2
3rdParty: allow disabling buttons for GC Adapter (#291) 2024-09-09 11:22:05 +02:00
Rosalie Wanders
53c0c3310a RMG-Core: add static keyword to local functions in Plugins.cpp 2024-09-03 21:25:25 +02:00
GhostlyDark
0a7c1094e7
3rdParty: Build mupen64plus-input-gca in bin dir (#289) 2024-08-27 21:15:22 +02:00
GhostlyDark
8a1e4b57cd
README: Add OpenSUSE instructions and pkgconfig (#287) 2024-08-26 13:26:32 +02:00
GhostlyDark
8fed4db258
README: Update info on dependencies (#285) 2024-08-21 19:07:35 +02:00
Rosalie Wanders
9b5cc05b9f RMG-Input: add 'SDL controller mode' option 2024-07-28 14:44:55 +02:00
Rosalie Wanders
e112e324f7 RMG-Core: add Input_ControllerMode setting 2024-07-28 14:44:19 +02:00
Rosalie Wanders
51fd8393d8 3rdParty: apply pending patch to mupen64plus-video-GLideN64 2024-07-19 12:30:49 +02:00
Rosalie Wanders
6fcff85201 RMG: use QCoreApplication::applicationName() in creating window title 2024-07-19 12:00:07 +02:00
Rosalie Wanders
240e8d7b39 3rdParty: update mupen64plus-core 2024-07-18 18:22:11 +02:00
Rosalie Wanders
d67187a90a Script: improve Build.sh by using the builtin [[]] instead of [] 2024-07-08 19:14:43 +02:00
Rosalie Wanders
0f6834b196 3rdParty: update mupen64plus-video-GLideN64 2024-07-08 19:11:29 +02:00
Rosalie Wanders
f237d8872c 3rdParty: apply pending PR patch to mupen64plus-core 2024-07-04 15:23:22 +02:00
Rosalie Wanders
d71f65e3b7 RMG: fix mupen64plus-core URL in AboutDialog 2024-07-04 15:20:36 +02:00
Rosalie Wanders
a51cb04e4d Package: v0.6.5 2024-07-04 15:01:47 +02:00
Rosalie Wanders
1ade89723d 3rdParty: update SDL_GameControllerDB 2024-07-04 14:53:06 +02:00
Rosalie Wanders
1047b1bd9a RMG: fix casing for hotkeys tab in settings dialog 2024-07-04 14:50:57 +02:00
Rosalie Wanders
e90376a800 RMG: add vosk-api and SDL_GameControllerDB to AboutDialog 2024-07-04 14:44:10 +02:00
Rosalie Wanders
21272091e1 RMG-Core: remove unused CORE_INSTALL_PREFIX 2024-07-04 14:35:25 +02:00
Rosalie Wanders
330c91d024 RMG: add RemixIcon to AboutDialog 2024-07-04 11:12:20 +02:00
Rosalie Wanders
fce18f0ccf 3rdParty: dynamically use GLES in mupen64plus-video-angrylion-plus 2024-07-01 17:35:55 +02:00
Rosalie Wanders
3d145e2d71 RMG: correct typo in AboutDialog 2024-07-01 16:54:42 +02:00
Rosalie Wanders
f65a9be6b4 RMG: add special thanks section to about dialog 2024-07-01 16:34:26 +02:00
Rosalie Wanders
92cd2b90c6 RMG: improve AboutDialog 2024-07-01 16:26:05 +02:00
Rosalie Wanders
acf425611e RMG: correct more letter casing 2024-07-01 15:03:38 +02:00
Rosalie Wanders
7604f9789d RMG-Audio: improve letter casing 2024-07-01 14:55:05 +02:00
Rosalie Wanders
cd36bdbd59 RMG-Input: improve letter casing 2024-07-01 14:54:56 +02:00
Rosalie Wanders
acb551d21d RMG: improve letter casing 2024-07-01 14:54:33 +02:00
Rosalie Wanders
e17685f906 RMG: implement OpenGL ES option 2024-06-30 22:13:05 +02:00
Rosalie Wanders
ec60999e02 RMG-Core: add GUI_OpenGLES setting 2024-06-30 22:13:05 +02:00
Rosalie Wanders
4b8b453cf8 RMG: remove --gles commandline option 2024-06-30 21:49:06 +02:00
Rosalie Wanders
5c069c7abe RMG: add -g/--gles commandline option 2024-06-30 21:00:18 +02:00
Rosalie Wanders
b3c1b4558f 3rdParty: apply OpenGL ES fix to mupen64plus-video-GLideN64 2024-06-30 20:33:38 +02:00
Rosalie Wanders
80546108b9 3rdParty: update mupen64plus-video-GLideN64 2024-06-30 19:23:27 +02:00
Rosalie Wanders
b785f93a4e RMG: move Misc settings dialog tab, rename it to General and refactor 2024-06-29 22:55:14 +02:00
Rosalie Wanders
c930f6a2c8 RMG: improve plugin behavior in settings dialog for per-game settings 2024-06-29 22:33:51 +02:00
Rosalie Wanders
147533ea45 RMG-Core: improve handling of non-existent plugin files 2024-06-29 22:25:46 +02:00
Rosalie Wanders
ce4321dcea 3rdParty: fix screensize saving crash in mupen64plus-video-angrylion-plus 2024-06-27 19:43:57 +02:00
Rosalie Wanders
41ef46b284 3rdParty: fix screensize saving crash in mupen64plus-video-parallel 2024-06-27 19:43:38 +02:00
Rosalie Wanders
cc97608bb7 3rdParty: make screen size editable in mupen64plus-video-angrylion-plus 2024-06-27 19:35:03 +02:00
Rosalie Wanders
425dbf4eb5 3rdParty: make screen size editable in mupen64plus-video-parallel 2024-06-27 19:34:39 +02:00
Rosalie Wanders
365752e128 3rdParty: implement default button for mupen64plus-video-angrylion-plus 2024-06-27 19:15:53 +02:00
Rosalie Wanders
f297929e49 3rdParty: implement default button for mupen64plus-video-parallel 2024-06-27 19:02:07 +02:00
Rosalie Wanders
f85fc5b461 Package: v0.6.4 2024-06-25 20:55:38 +02:00
Fanatic-64
fce1c94ade
RMG-Core: change audio resampler setting default to "src-linear" (#275) 2024-06-25 16:34:12 +02:00
Rosalie Wanders
67cf2814c0 RMG-Core: add defaults for audio hotkey settings 2024-06-25 16:25:36 +02:00
Rosalie Wanders
247b0c97ce RMG: add System Region to RomInfoDialog 2024-06-25 16:19:13 +02:00
Rosalie Wanders
efff2e8bdd RMG: remove unneeded iostream includes 2024-06-25 11:25:00 +02:00
Rosalie Wanders
7ed3ad165a RMG: handle duplicate plugins in settings dialog 2024-06-25 10:47:13 +02:00
Rosalie Wanders
b874af19b7 RMG-Core: sort plugin list in CoreGetAllPlugins() 2024-06-25 10:44:12 +02:00
Rosalie Wanders
d477722da1 3rdParty: fix soft and hard reset in mupen64plus-rsp-parallel 2024-06-25 09:54:48 +02:00
Rosalie Wanders
6eab08cce5 Package: fix Fedora's RMG.spec 2024-06-24 13:18:35 +02:00
Rosalie Wanders
08bd7580fe Package: v0.6.3 2024-06-24 13:13:59 +02:00
Rosalie Wanders
70300d1557 RMG: remove '!' from error messages 2024-06-24 13:09:52 +02:00
Rosalie Wanders
71fb623ac9 RMG: add md5 validation to PIF ROM in settings dialog 2024-06-24 13:04:50 +02:00
Rosalie Wanders
4d8015daa5 RMG: remove 'path' from 64DD IPL settings in the settings dialog 2024-06-24 12:48:42 +02:00
Rosalie Wanders
2c438fefbc RMG: expose Game_TransferPak setting in settings dialog 2024-06-24 12:48:25 +02:00
Rosalie Wanders
3203c25495 RMG-Core: add Game_TransferPak setting 2024-06-24 12:46:59 +02:00
Rosalie Wanders
e040c56a26 RMG-Core: add TransferPak to CoreRomSettings 2024-06-24 12:46:48 +02:00
Rosalie Wanders
0d63f9248b RMG: add PIF settings to settings dialog 2024-06-24 12:18:28 +02:00
Rosalie Wanders
9e57d50f6e RMG-Core: add and use PIF settings 2024-06-24 12:18:28 +02:00
Rosalie Wanders
927e447034 RMG-Core: add CoreSystemType to CoreRomHeader 2024-06-24 12:18:28 +02:00
Rosalie Wanders
d2a59fa18d RMG-Core: add Utils/File.cpp 2024-06-24 12:18:28 +02:00
Rosalie Wanders
3160c26c77 3rdParty: apply pending PIF ROM patch to mupen64plus-core 2024-06-24 12:18:28 +02:00
Rosalie Wanders
0b629a015a RMG: re-add NoFocusDelegate.{cpp,hpp}
This was needed after all, whoops
2024-06-12 14:44:39 +02:00
Rosalie Wanders
0ba52c4483 RMG: don't link to unneeded Qt6::OpenGL 2024-06-12 14:42:14 +02:00
Rosalie Wanders
4af1d47a3a RMG: fix possible memory leak in CheatsDialog.cpp 2024-06-11 13:24:01 +02:00
Rosalie Wanders
d9c754a11b RMG: remove unneeded includes 2024-06-11 12:55:48 +02:00
Rosalie Wanders
f0efdd9142 RMG: remove unneeded NoFocusDelegate.{cpp,hpp} 2024-06-11 12:25:02 +02:00
Rosalie Wanders
e78b849c7f RMG-Core: fix error message in Plugins.cpp 2024-06-11 12:10:09 +02:00
Rosalie Wanders
ad22d40769 RMG: improve behavior when a plugin hasn't been found 2024-06-11 12:05:56 +02:00
Rosalie Wanders
ed43a4bdd8 RMG: add callback messages on failure in VidExt.cpp 2024-06-10 13:35:34 +02:00
Rosalie Wanders
1fa2c06119 Package: update metainfo.xml and screenshots 2024-06-09 13:53:15 +02:00
Rosalie Wanders
9a1e77c689 Package: appdata.xml -> metainfo.xml 2024-06-09 13:10:20 +02:00
Rosalie Wanders
ea958fe70c Package: v0.6.2 2024-06-08 13:37:57 +02:00
Rosalie Wanders
e76fcd3bd3 Revert "3rdParty: update mupen64plus-video-parallel" 2024-06-08 13:31:19 +02:00
Rosalie Wanders
487c84c085 3rdParty: update mupen64plus-video-parallel 2024-06-08 12:00:25 +02:00
Rosalie Wanders
87d1413c99 cmake: correct library permissions 2024-06-07 19:46:25 +02:00
Rosalie Wanders
550fb0ebb4 RMG: simplify loop in MainWindow::on_Core_DebugCallback() 2024-06-07 18:52:21 +02:00
Rosalie Wanders
4467c6ba75 RMG: improve statusbar message code in MainWindowon_Core_DebugCallback() 2024-06-07 18:34:41 +02:00
Rosalie Wanders
a8f522d0ab 3rdParty: update mupen64plus-video-GLideN64 2024-06-07 18:17:43 +02:00
Rosalie Wanders
b46eb87220 RMG: use native path separator in OSD 2024-06-07 18:13:32 +02:00
Rosalie Wanders
848d852395 RMG: add 'Project64 Save State' option when saving save state to file 2024-06-07 18:13:10 +02:00
Rosalie Wanders
26c35c7bb5 RMG-Core: add type argument to CoreSaveState() 2024-06-07 18:12:36 +02:00
Rosalie Wanders
efaafc0156 RMG: improve failure message in InstallUpdateDialog.cpp 2024-06-06 23:30:10 +02:00
Rosalie Wanders
c4c03c5186 RMG: fix updater on windows 2024-06-06 23:24:53 +02:00
Rosalie Wanders
b985e6a4bc Package: v0.6.1 2024-06-05 23:09:19 +02:00
Rosalie Wanders
02713ae1ff RMG-Core: remove GUI_SettingsDialog{Width,Height} settings 2024-06-05 22:58:31 +02:00
Rosalie Wanders
f01e3e33ab RMG: don't store and restore window size of settings dialog 2024-06-05 22:57:27 +02:00
Rosalie Wanders
8adc8000a4 3rdParty: fix cmake version warning in discord-rpc 2024-06-05 22:53:44 +02:00
Rosalie Wanders
30d14ff95f 3rdParty: update SDL_GameControllerDB 2024-06-05 22:52:36 +02:00
Rosalie Wanders
a4f993b424 RMG: correctly cleanup render widgets in MainWindow::on_VidExt_Quit() 2024-06-05 10:59:30 +02:00
Rosalie Wanders
8fd4be7452 RMG: add some extra safety to MainWindow::on_VidExt_{Init,Quit}() 2024-06-05 00:09:53 +02:00
Rosalie Wanders
e576da6cba RMG: reset render widget to nullptr in MainWindow::on_VidExt_Quit() 2024-06-05 00:02:42 +02:00
Rosalie Wanders
f0405d769e RMG: fix monospace font not working on windows in LogDialog.cpp 2024-06-04 09:18:04 +02:00
Rosalie Wanders
fd9623bef8 3rdParty: update mupen64plus-video-GLideN64 2024-06-03 17:21:28 +02:00
Rosalie Wanders
f2e09157db RMG: re-create render widget on every emulation run 2024-06-03 17:14:23 +02:00
Rosalie Wanders
334d7cdd6b 3rdParty: update mupen64plus-video-angrylion-plus 2024-06-03 16:47:45 +02:00
Rosalie Wanders
525c7a4b60 3rdParty: update mupen64plus-video-parallel 2024-06-03 10:13:34 +02:00
Rosalie Wanders
940344c70c 3rdParty: update imgui 2024-05-24 20:55:23 +02:00
Rosalie Wanders
0c2f7a19b6 RMG: fix assertion in imgui in debug builds 2024-05-24 20:48:04 +02:00
Rosalie Wanders
6acb03e155 RMG: remove unused variable in OnScreenDisplay.cpp 2024-05-24 20:34:13 +02:00
Rosalie Wanders
9742deb7ac Package: v0.6.0 2024-05-24 20:24:29 +02:00
Rosalie Wanders
a234cb0463 RMG: rename variable MainWindow.{cpp,hpp} 2024-05-24 13:40:11 +02:00
Rosalie Wanders
85c1c1af91 RMG: rate limit callbacks to prevent freezing 2024-05-24 13:25:49 +02:00
Rosalie Wanders
c81575610c 3rdParty: update mupen64plus-core 2024-05-24 12:24:38 +02:00
Rosalie Wanders
f306caa55b 3rdParty: apply pending patches for mupen64plus-video-GLideN64 2024-05-24 12:24:18 +02:00
Rosalie Wanders
5febea43de 3rdParty: update mupen64plus-video-GLideN64 2024-05-24 12:21:36 +02:00
Rosalie Wanders
8ce42a52ce RMG-Input: use macro for loading input mapping settings 2024-05-22 21:12:56 +02:00
Rosalie Wanders
7d9b6175f5 3rdParty: update mupen64plus-video-angrylion-plus 2024-05-04 20:54:18 +02:00
Rosalie Wanders
ec9f4f9806 3rdParty: update SDL_GameControllerDB 2024-05-04 20:51:24 +02:00
Rosalie Wanders
82295c8394 3rdParty: apply pending patches for mupen64plus-core 2024-05-04 15:19:33 +02:00
Rosalie Wanders
6b050464ba 3rdParty: build mupen64plus-core with VULKAN=0
RMG overrides the video extension functions anyways,
so we don't need to have vulkan support in the default
video extension implementation, which just adds an
unneeded dependency in some cases
2024-05-04 14:47:42 +02:00
Rosalie Wanders
1a05e6aec0 3rdParty: update mupen64plus-core 2024-05-04 14:25:48 +02:00
Rosalie Wanders
49c7db75ba 3rdParty: update mupen64plus-video-GLideN64 2024-05-04 14:24:17 +02:00
Rosalie Wanders
e62094efcf RMG: add .7z to RomBrowserEmptyWidget.ui 2024-05-04 14:23:03 +02:00
Rosalie Wanders
4a30160398 Package: v0.5.9 2024-05-01 12:23:57 +02:00
Rosalie Wanders
478f226cad RMG: add safety around --load-state-slot commandline option 2024-05-01 12:19:18 +02:00
Rosalie Wanders
6746711bc3 RMG: account for CoreSetSaveStateSlot() failure 2024-05-01 12:18:51 +02:00
Rosalie Wanders
7bd9c320ea RMG: add --load-state-slot commandline option 2024-05-01 12:10:55 +02:00
Rosalie Wanders
ec197c3ee9 3rdParty: update mupen64plus-video-GLideN64 2024-05-01 11:57:15 +02:00
Rosalie Wanders
4c000101e3 RMG: fix speedAction signal handler in MainWindow.cpp 2024-05-01 11:54:25 +02:00
Rosalie Wanders
4107ee598b RMG: fix slotAction signal handler in MainWindow.cpp 2024-05-01 11:51:14 +02:00
Rosalie Wanders
1b4820c7f7 RMG: give up loading save state slot after 5 attempts 2024-05-01 11:51:14 +02:00
Rosalie Wanders
cc398720b6 RMG: fix unneeded argument for ->addAction() 2024-05-01 02:23:34 +02:00
Rosalie Wanders
256d1c512a RMG: implement 'Play Game with State' 2024-05-01 01:56:40 +02:00
Rosalie Wanders
642e768e92 RMG-Core: add another version of CoreGetSaveStatePath() 2024-05-01 01:51:06 +02:00
Rosalie Wanders
8660efe2dc RMG-Input: fix ci build failure 2024-04-30 13:30:55 +02:00
Rosalie Wanders
a47160714a RMG-Input: make 'Test Rumble' button visible when rumble pak is selected 2024-04-30 13:22:33 +02:00
Rosalie Wanders
9155faf1d2 RMG-Input: implement 'Test Rumble' button in the options dialog 2024-04-30 13:17:16 +02:00
Rosalie Wanders
042717c3a4 3rdParty: change copyToRDRAM default in GLideN64 2024-04-30 12:36:23 +02:00
Rosalie Wanders
5e0c5bfbb0 RMG: implement custom color settings for the OSD 2024-04-30 12:17:57 +02:00
Rosalie Wanders
08ff5a5ad4 RMG-Core: add GUI_OnScreenDisplay{Background,Text}Color settings 2024-04-30 12:14:44 +02:00
Rosalie Wanders
b89655e4b3 Data: update generated cheats 2024-04-30 10:44:02 +02:00
Rosalie Wanders
c6cbda856b Script: update commit used by GenerateCheatFiles.sh 2024-04-30 10:41:06 +02:00
Rosalie Wanders
b5b97b187a RMG: simplify on_Action_Audio_{Increase,Decrease}Volume() 2024-04-04 23:18:11 +02:00
Rosalie Wanders
c6ec9c0686 3rdParty: update mupen64plus-rsp-parallel 2024-03-27 15:20:09 +01:00
Rosalie Wanders
eb6dd8068e Package: v0.5.8 2024-03-25 22:40:43 +01:00
Rosalie Wanders
30993dd73a 3rdParty: update mupen64plus-video-GLideN64 2024-03-25 22:25:12 +01:00
Rosalie Wanders
363131c175 3rdParty: fix rapidjson compilation failure for discord-rpc 2024-03-25 22:24:04 +01:00
Rosalie Wanders
41b510e7c5 RMG: misc warning fixes 2024-03-25 22:06:31 +01:00
Rosalie Wanders
a6da96cf82 RMG-Core: remove unused function in Directories.cpp 2024-03-25 22:06:17 +01:00
Rosalie Wanders
dcfcf8bc27 RMG: correct types in for loops 2024-03-25 22:06:00 +01:00
Rosalie Wanders
86c240f669 RMG-Input: correct types in for loops 2024-03-25 22:05:40 +01:00
Rosalie Wanders
56b14ab54c RMG-Core: correct types in for loops 2024-03-25 22:05:19 +01:00
Rosalie Wanders
7dee6c3989 ci: install mingw-w64-x86_64-vulkan-headers 2024-03-25 21:38:54 +01:00
psykose
b86f520ee7 RMG: set stack size in EmulationThread.cpp 2024-03-25 21:09:26 +01:00
Rosalie Wanders
31ae8cbc57 3rdParty: update mupen64plus-rsp-parallel 2024-03-22 20:27:18 +01:00
Rosalie Wanders
e8f10693c7 3rdParty: update SDL_GameControllerDB 2024-03-17 17:25:44 +01:00
Rosalie Wanders
cb07131fbb 3rdParty: update mupen64plus-rsp-parallel 2024-03-17 17:11:15 +01:00
Rosalie Wanders
3392fe8d62 3rdParty: update mupen64plus-video-GLideN64 2024-03-17 16:59:02 +01:00
Rosalie Wanders
bc7efed0ba Fedora: fix RMG.spec for Fedora 40 2024-02-29 19:07:48 +01:00
Rosalie Wanders
e80e202f7b RMG-Core: correct zlib_filefunc_read() in Rom.cpp 2024-02-29 18:43:13 +01:00
Rosalie Wanders
db9bd5d9ca RMG-Core: fix compilation with minizip-ng 2024-02-28 21:04:28 +01:00
Cosima Neidahl
685aa597c7
RMG-Core: Fix GNUInstallDirs usage (#226)
One may not manually prepend `CMAKE_INSTALL_*DIR` variables with `CMAKE_INSTALL_PREFIX`, because `CMAKE_INSTALL_*DIR` variables
may already be absolute paths - inside *or* outside of `CMAKE_INSTALL_PREFIX`.

To get a guaranteed-absolute version of them, `CMAKE_INSTALL_FULL_*DIR` must be used.
2024-01-28 21:37:42 +01:00
Rosalie Wanders
ed9d9cbc0d Package: v0.5.7 2024-01-26 18:45:43 +01:00
Rosalie Wanders
3044f406c4 3rdParty: remove risky code from mupen64plus-core 2024-01-26 18:42:59 +01:00
Rosalie Wanders
7e596c1509 RMG-Core: fix CoreGetLibraryDirectory() returning a path with trailing slash 2024-01-26 18:41:28 +01:00
Rosalie Wanders
7e239ae2ae 3rdParty: update mupen64plus-core 2024-01-25 21:08:00 +01:00
Rosalie Wanders
84681fdd0d RMG-Core: change default screenshot directory on Linux 2024-01-25 21:02:43 +01:00
orbea
2d3514de7f
cmake: fix the NO_ASM option (#222)
Fixes: 768064a2e1
2024-01-24 19:50:15 +01:00
orbea
768064a2e1
cmake: add NO_ASM option (#220)
Optionally disables the use of assembly in the mupen64plus-core.
2024-01-24 05:54:56 +01:00
Rosalie Wanders
df426f12cf Package: correct RMG.spec for debug symbols 2024-01-23 20:44:46 +01:00
Rosalie Wanders
a0608384d9 Package: v0.5.6 2024-01-23 19:09:36 +01:00
Rosalie Wanders
d94d6ce0a9 RMG: improve log dialog clear behavior 2024-01-23 18:36:55 +01:00
Rosalie Wanders
a6d5a8cfab RMG-Core: try to fix windows build (again) 2024-01-23 18:36:29 +01:00
Rosalie Wanders
d65b23f49f RMG-Core: fix windows build 2024-01-23 18:27:05 +01:00
Rosalie Wanders
932b6b6aa2 RMG: use CoreAddCallbackMessage() 2024-01-23 17:43:27 +01:00
Rosalie Wanders
8dccc6d72e RMG-Core: add & use CoreAddCallbackMessage() 2024-01-23 17:43:18 +01:00
Rosalie Wanders
b5b596ca5d RMG: connect callback signals earlier 2024-01-23 17:25:47 +01:00
Rosalie Wanders
a075ed734b RMG-Core: store pending callbacks and send them after setup 2024-01-23 17:25:37 +01:00
Rosalie Wanders
48baa1bed0 3rdParty: respect RelWithDebInfo configuration properly 2024-01-23 14:06:46 +01:00
Rosalie Wanders
4e46452d9b Script: don't strip when using RelWithDebInfo in Build.sh 2024-01-23 13:58:41 +01:00
Rosalie Wanders
4ff1272403 3rdParty: use sub-make when generator is Unix or MSYS Makefiles 2024-01-23 13:50:04 +01:00
Rosalie Wanders
7c6b2392bc 3rdParty: rename 7-Zip to lzma and don't include tar.gz 2024-01-23 13:20:33 +01:00
Rosalie Wanders
ccbd6bc772 3rdParty: respect CMAKE_{C,CXX}_FLAGS for projects using cmake 2024-01-23 13:10:35 +01:00
Rosalie Wanders
0afc565bda 3rdParty: respect CMAKE_C_FLAGS for projects with Makefiles 2024-01-23 12:53:10 +01:00
Rosalie Wanders
81b26274c2 3rdParty: fix mupen64plus-video-GLideN64 with RelWithDebInfo 2024-01-23 12:53:10 +01:00
Rosalie Wanders
895438d83d ci: specify CMAKE_INSTALL_LIBDIR for AppImage 2024-01-22 23:32:58 +01:00
Rosalie Wanders
e943e86447 RMG-Core: use GNUInstallDirs paths 2024-01-22 23:31:11 +01:00
Rosalie Wanders
15014408c1 cmake: use GNUInstallDirs 2024-01-22 23:30:50 +01:00
Rosalie Wanders
c6b9f5b2a1 Script: enable USE_ANGRYLION in Build.sh 2024-01-22 18:30:22 +01:00
Rosalie Wanders
3a58264bf6 ci: enable USE_ANGRYLION 2024-01-22 18:30:07 +01:00
Rosalie Wanders
559cb6ba37 cmake: add USE_ANGRYLION option 2024-01-22 18:29:44 +01:00
Rosalie Wanders
73f97dec3e 3rdParty: delete mupen64plus-rsp-parallel/lightning/gnulib 2024-01-16 17:25:59 +01:00
Rosalie Wanders
3c8adb3898 3rdParty: delete .gitmodules from discord-pc and mupen64plus-rsp-parallel 2024-01-16 17:15:19 +01:00
Rosalie Wanders
1111e94e17 3rdParty: update mupen64plus-video-GLideN64 2024-01-16 17:14:38 +01:00
Rosalie Wanders
3158404408 3rdParty: fix building GLideN64 with RelWithDebInfo 2024-01-16 16:59:49 +01:00
JakobDev
4fc3177c1b
RMG: update copyright year in AboutDialog Update (#211) 2024-01-15 16:40:59 +01:00
Rosalie Wanders
3c95a91edb RMG-Core: improve CoreUnzip() 2024-01-15 16:09:59 +01:00
Rosalie Wanders
9c5b6f1ec6 RMG-Core: change default value of SettingsID::Keybinding_ViewLog 2024-01-14 20:55:51 +01:00
Rosalie Wanders
fdd46b04eb Package: v0.5.5 2024-01-14 20:50:18 +01:00
Rosalie Wanders
a052239ffa 3rdParty: update SDL_GameControllerDB 2024-01-14 20:49:05 +01:00
Rosalie Wanders
7c8f53eced ci: update actions 2024-01-14 20:43:45 +01:00
Rosalie Wanders
7f55b61721 3rdParty: update mupen64plus-video-GLideN64 2024-01-14 20:40:31 +01:00
Rosalie Wanders
8d3f2d4d88 3rdParty: update mupen64plus-rsp-hle 2024-01-14 20:37:26 +01:00
Rosalie Wanders
5cfe3489a7 3rdParty: update mupen64plus-rsp-parallel 2024-01-14 20:27:56 +01:00
Rosalie Wanders
5035c53784 3rdParty: update mupen64plus-core 2024-01-14 20:18:59 +01:00
Rosalie Wanders
e68f2b91cd RMG: change overclock factor limit to 20 2024-01-14 20:18:53 +01:00
JakobDev
dbca21883b
Package: add TryExec to desktop file (#204) 2023-12-19 21:41:26 +01:00
Rosalie Wanders
bbad41b1a9 Package: v0.5.4 2023-12-17 21:12:41 +01:00
Rosalie Wanders
a52073487f RMG: fix issue with vulkan video plugins 2023-12-17 21:07:36 +01:00
Rosalie Wanders
bd0fe08545 Package: v0.5.3 2023-12-17 19:11:11 +01:00
Rosalie Wanders
b36e8223f9 RMG: introduce a video size check timer 2023-12-17 19:05:16 +01:00
Rosalie Wanders
8af850ba29 RMG: start fullscreen timer after plugins are ready 2023-12-17 19:04:43 +01:00
Rosalie Wanders
51e044e68c RMG-Core: introduce CoreGetVideoSize() and add a mutex to Video.cpp 2023-12-17 19:03:24 +01:00
Rosalie Wanders
e6e67058c7 3rdParty: update SDL_GameControllerDB 2023-12-17 18:27:16 +01:00
Rosalie Wanders
ea8e9d6227 RMG-Input: use QDir::toNativeSeparators() 2023-12-17 15:57:30 +01:00
Rosalie Wanders
23a0e517fb RMG: use QDir::toNativeSeparators() 2023-12-17 15:50:38 +01:00
Rosalie Wanders
994a87e871 RMG-Core: use std::filesystem::path::make_preferred() in Directories.cpp 2023-12-17 15:50:17 +01:00
Rosalie Wanders
2aa1a5fe80 3rdParty: update mupen64plus-core 2023-12-17 15:41:59 +01:00
Rosalie Wanders
6fb6fa59ad 3rdParty: update mupen64plus-video-GLideN64 2023-12-17 15:38:26 +01:00
Rosalie Wanders
7713a9ec86 RMG: allow empty lines in AddCheatDialog.cpp 2023-12-17 15:34:28 +01:00
Rosalie Wanders
0f7e89dd57 RMG-Core: correct minor includes 2023-12-17 15:14:50 +01:00
Rosalie Wanders
b4ad3f89f6 README: add Fedora COPR link to Linux downloads 2023-11-01 00:22:35 +01:00
Rosalie Wanders
53d6dcbefc Package: fix RMG.spec 2023-11-01 00:07:51 +01:00
Rosalie Wanders
671eba964b gitignore: add Fedora build files 2023-11-01 00:06:43 +01:00
Rosalie Wanders
d21e6bb532 Package: add Fedora spec file 2023-11-01 00:05:51 +01:00
Rosalie Wanders
b6e1737007 ci: don't update packages on Linux 2023-10-29 22:31:02 +01:00
Rosalie Wanders
30586fa637 RMG-Core: use 'const std::vector<std::string>&' in Cheats.{cpp,hpp} 2023-10-29 22:16:51 +01:00
Rosalie Wanders
a0ec85c7af RMG: add force parameter to showErrorMessage in MainWindow.cpp 2023-09-07 00:04:20 +02:00
Rosalie Wanders
7581316162 Package: v0.5.2 2023-09-06 23:41:29 +02:00
Rosalie Wanders
f0aa87d0bb RMG-Core: cleanup Directories.cpp 2023-09-06 10:56:03 +02:00
Rosalie Wanders
b4c33ceae8 RMG-Core: add error to get_exe_directory() in Directories.cpp 2023-09-06 01:57:52 +02:00
Rosalie Wanders
2c146d7f15 RMG: use CoreGetPortableDirectoryMode() 2023-09-06 01:50:39 +02:00
Rosalie Wanders
005db96f02 RMG-Core: introduce CoreGetPortableDirectoryMode() and fix linux 2023-09-06 01:50:32 +02:00
Rosalie Wanders
4cbecea0c3 ci: create portable.txt for the portable windows builds 2023-09-06 01:37:18 +02:00
Rosalie Wanders
c70f59d7b6 RMG: adjust the directory code in main.cpp 2023-09-06 01:30:03 +02:00
Rosalie Wanders
edbce2e415 RMG-Core: change default directories on windows 2023-09-06 01:29:47 +02:00
Rosalie Wanders
edc92b7b15 Script: update BundleDependencies.sh to remove *.a files 2023-09-05 23:48:45 +02:00
Rosalie Wanders
b994902ed9 RMG-Input: use 'if ()' instead of 'if()' 2023-09-05 23:39:36 +02:00
Rosalie Wanders
79c9ea193c RMG-Input: use std::vector<char> instead of malloc() and free() 2023-09-05 23:36:17 +02:00
Rosalie Wanders
a45c3ba7f3 RMG-Core: only convert string encoding when debug callback is from core 2023-09-05 23:33:37 +02:00
Rosalie Wanders
7873de64e0 RMG-Core: add some extra safety to Plugins.cpp 2023-09-05 23:25:57 +02:00
Rosalie Wanders
bfb7953c91 RMG-Core: use std::vector<char> instead of malloc() and free() 2023-09-05 23:13:39 +02:00
Rosalie Wanders
b0acaaa681 cmake: only enable UPDATER on WIN32 by default 2023-09-03 00:14:22 +02:00
Rosalie Wanders
92e26d6980 cmake: don't use WIN32 OR MSYS but just use WIN32 2023-09-03 00:12:26 +02:00
Rosalie Wanders
6624708348 RMG: improve behavior when there are a lot of errors 2023-09-02 23:31:55 +02:00
Rosalie Wanders
a327923ecf cmake: correct description of USE_LIBFMT 2023-09-01 18:35:13 +02:00
Rosalie Wanders
dd521eac70 RMG-Core: limit reading internal ROM name to 20 chars in RomHeader.cpp 2023-09-01 18:10:33 +02:00
Rosalie Wanders
180877a518 RMG-Input: fix warnings about implicit capture of this 2023-08-29 19:37:01 +02:00
Rosalie Wanders
9039a96fef RMG: fix warnings about implicit capture of this 2023-08-29 19:37:01 +02:00
Rosalie Wanders
f3f8085d70 ci: don't use -DUSE_LIBFMT=ON 2023-08-29 19:24:43 +02:00
Rosalie Wanders
4b99d9de67 cmake: detect if compiler supports std::format when USE_LIBFMT is OFF 2023-08-29 18:59:42 +02:00
Rosalie Wanders
d0928b5124 RMG: don't switch to rom browser widget when rom searcher was canceled 2023-08-28 16:49:51 +02:00
Rosalie Wanders
697b35808c RMG: implement drag & drop for RomBrowserLoadingWidget.cpp 2023-08-28 16:35:36 +02:00
Rosalie Wanders
5f2d8ed804 RMG: pass on refreshRomListAfterEmulation in on_EventFilter_FileDropped 2023-08-28 16:35:02 +02:00
Rosalie Wanders
2c92dbeb8e RMG: improve ROM browser refresh logic in on_Emulation_Finished() 2023-08-28 16:19:34 +02:00
Rosalie Wanders
251755a4ba RMG: rename onStartup to refreshRomListAfterEmulation in launchEmulation 2023-08-28 16:12:24 +02:00
Rosalie Wanders
ece590e760 Package: v0.5.1 2023-08-27 19:56:02 +02:00
Rosalie Wanders
9e827f97f2 RMG: fix 'open_rom(): not a valid ROM image' error showing up sometimes 2023-08-27 19:49:48 +02:00
Rosalie Wanders
0e2a1ba3d9 RMG: add license header to QtKeyToSdl2Key.cpp 2023-08-27 19:31:46 +02:00
Rosalie Wanders
e00cfb4226 RMG: pass core debug callback to the log dialog manually 2023-08-27 19:22:37 +02:00
Rosalie Wanders
2d64acdcfe 3rdParty: update mupen64plus-core 2023-08-27 19:18:30 +02:00
Rosalie Wanders
010035d697 3rdParty: update SDL_GameControllerDB 2023-08-27 19:17:14 +02:00
Rosalie Wanders
37754e5cba 3rdParty: update mupen64plus-video-parallel 2023-08-27 19:15:46 +02:00
Rosalie Wanders
4ab78b79c3 RMG-Core: remove the TODO in Cheats.cpp 2023-08-27 19:12:48 +02:00
Rosalie Wanders
6c4ce4fb63 3rdParty: update mupen64plus-video-GLideN64 2023-08-27 19:10:41 +02:00
Rosalie Wanders
c3c4dedebb RMG: remove workaround for non-fatal interpreter errors in Callbacks.cpp
These errors were removed by the interpreter accuracy improvements patch
2023-08-27 19:09:13 +02:00
Rosalie Wanders
fb640cad8e RMG-Input: fix crash when using control+c when PluginConfig2() is running 2023-08-26 21:55:50 +02:00
Rosalie Wanders
45cb32b429 RMG-Input: improve handling of deleting the game section 2023-08-26 21:34:14 +02:00
Rosalie Wanders
6c66268002 RMG-Input: fix CheckInputDeviceSettings() not working correctly in some cases 2023-08-26 21:33:41 +02:00
Rosalie Wanders
1e03d59592 RMG-Input: improve hasAnyGameSettingChanged() in ControllerWidget.cpp 2023-08-26 21:04:44 +02:00
Rosalie Wanders
8fbcf92e2d 3rdParty: update mupen64plus-core 2023-08-26 20:32:32 +02:00
Rosalie Wanders
422f7d0801 RMG: slightly improve VidExt_VK_GetSurface() 2023-08-26 20:24:11 +02:00
Rosalie Wanders
38b946926a RMG: set QT_VULKAN_LIB to libvulkan.so.1 on Linux in main.cpp 2023-08-26 20:24:11 +02:00
Rosalie Wanders
01dbc476b3 Installer: correct window title name 2023-08-16 23:14:01 +02:00
Rosalie Wanders
558a48f64d RMG-Core: fix default settings being incorrect 2023-08-13 21:43:46 +02:00
Rosalie Wanders
79ad4a9b29 Package: v0.5.0 2023-08-12 22:09:23 +02:00
Rosalie Wanders
cc9975bf02 Revert "RMG-Audio: add simple_sdl_backend.cpp"
This reverts commit 9bbe27e169.
2023-08-12 21:34:15 +02:00
Rosalie Wanders
4cfa8fdd29 Revert "RMG-Audio: add some safety to circular_buffer.cpp and sdl_backend.cpp"
This reverts commit ee76297fc0.
2023-08-12 21:34:07 +02:00
Rosalie Wanders
3a3b17001e ci: don't use gcc-13 due to using the system's libstdc++ on AppImage 2023-08-12 20:50:30 +02:00
Rosalie Wanders
295040ed56 Package: v0.4.9 2023-08-12 13:55:25 +02:00
Rosalie Wanders
54f6723d96 RMG-Core: fix requesting incorrect type of setting in RomSettings.cpp 2023-08-12 13:54:34 +02:00
Rosalie Wanders
44e5395ed3 RMG-Core: support USE_LIBFMT option 2023-08-12 13:43:51 +02:00
Rosalie Wanders
d499c1a2d4 cmake: add USE_LIBFMT option 2023-08-12 13:43:22 +02:00
Rosalie Wanders
d4a29dd609 3rdParty: add fmt 2023-08-12 13:05:59 +02:00
Rosalie Wanders
bc68f99693 Package: v0.4.8 2023-08-11 23:33:59 +02:00
Rosalie Wanders
aa7cfc3969 RMG-Core: use std::variant instead of a custom struct in Settings.cpp 2023-08-11 22:40:13 +02:00
Rosalie Wanders
9f4dfbb146 RMG: ensure mimeData doesn't have an empty urls list 2023-08-11 21:36:21 +02:00
Rosalie Wanders
ee76297fc0 RMG-Audio: add some safety to circular_buffer.cpp and sdl_backend.cpp 2023-08-11 21:36:06 +02:00
Rosalie Wanders
0546ea3255 RMG: clear undo & redo stack in AddCheatDialog.cpp 2023-08-11 20:59:54 +02:00
Rosalie Wanders
df6870c990 ci: install & use gcc-13 2023-08-11 20:59:54 +02:00
Rosalie Wanders
07158dadf6 RMG-Core: refactor Cheats.cpp 2023-08-11 20:59:54 +02:00
Rosalie Wanders
9bbe27e169 RMG-Audio: add simple_sdl_backend.cpp 2023-08-11 19:48:10 +02:00
Rosalie Wanders
aa72d3defc RMG-Core: add Audio_SimpleBackend setting 2023-08-11 19:48:05 +02:00
Rosalie Wanders
5d12991e6e Script: don't strip binaries when making a Debug build 2023-08-11 00:24:38 +02:00
Rosalie Wanders
1c5f22c18a cmake: skip LTO on Debug builds 2023-08-11 00:24:10 +02:00
kev4cards
7ed0245969
RMG-Input: improve control stick behavior (#164) 2023-08-11 00:12:34 +02:00
Rosalie Wanders
ea3830f784 RMG: also implement drag & drop in RomBrowserEmptyWidget.cpp 2023-08-10 22:50:38 +02:00
Rosalie Wanders
5fdfbf50d7 RMG: add drag & drop support 2023-08-10 22:44:18 +02:00
Rosalie Wanders
5d1f17fa0b RMG-Core: add GUI_ConfirmDragDrop setting 2023-08-10 22:43:34 +02:00
Rosalie Wanders
70623111e7 cmake: add DRAG_DROP option 2023-08-10 22:43:29 +02:00
Rosalie Wanders
148eeb7f07 RMG: add volume hotkeys 2023-08-10 21:23:08 +02:00
Rosalie Wanders
a688644a14 RMG-Core: add volume hotkey settings 2023-08-10 21:22:27 +02:00
Rosalie Wanders
76c76b2661 RMG-Core: ensure core is hooked in Volume.cpp 2023-08-08 19:41:51 +02:00
Rosalie Wanders
696977ee83 RMG-Core: introduce volume functions 2023-08-08 01:27:27 +02:00
Rosalie Wanders
3d076cfacd RMG-Audio: support Volume{Mute,Up,Down,GetLevel,SetLevel}() 2023-08-08 01:26:08 +02:00
Rosalie Wanders
f3df6c4ceb RMG: actually restart timer in RomSearcherThread.cpp 2023-08-08 00:41:38 +02:00
Rosalie Wanders
d691498642 RMG: improve loading time of the ROM browser 2023-08-08 00:16:49 +02:00
Rosalie Wanders
eb8c5469f3 Package: update screenshots 2023-08-05 22:25:33 +02:00
Rosalie Wanders
829713066b Package: v0.4.7 2023-08-05 22:17:14 +02:00
Rosalie Wanders
ec6fa2aa36 README: add libvulkan-dev to the ubuntu dependencies 2023-08-05 22:16:38 +02:00
Rosalie Wanders
c1643aff28 RMG-Input: fix joystick hat handling in ControllerWidget.cpp 2023-08-05 22:09:36 +02:00
Rosalie Wanders
ec4f65ffa0 RMG-Input: replace CoreDebugCallbackMessage() with PluginDebugMessage() 2023-08-05 22:07:47 +02:00
Rosalie Wanders
fdbcc928ee RMG-Core: remove Core{Setup,}DebugCallbackMessage() 2023-08-05 21:41:23 +02:00
Rosalie Wanders
75e5e53589 RMG: initialize ui_VidExtRenderMode in MainWindow.hpp 2023-08-05 13:37:53 +02:00
Rosalie Wanders
4233d317ac RMG: simplify {OGL,VK}Widget.cpp 2023-08-05 13:35:25 +02:00
Rosalie Wanders
7476c92298 3rdParty: update mupen64plus-video-angrylion-plus 2023-08-05 13:23:46 +02:00
Rosalie Wanders
e0a5205db5 3rdParty: update SDL_GameControllerDB 2023-08-05 13:13:22 +02:00
Rosalie Wanders
d20d6c4069 Script: enable CMAKE_EXPORT_COMPILE_COMMANDS in Build.sh 2023-08-05 13:12:04 +02:00
Rosalie Wanders
eecbe5753d RMG: fix hiding cursor not working for Vulkan 2023-08-05 13:06:30 +02:00
Rosalie Wanders
8e6853d74e RMG-Input: reserve word entries amount in VRUwords.cpp 2023-08-05 12:14:46 +02:00
Rosalie Wanders
c00534d739 RMG-Input: correct joystick hat code in main.cpp 2023-08-05 12:11:19 +02:00
Rosalie Wanders
2cd2098460 Package: v0.4.6 2023-08-04 13:25:12 +02:00
Rosalie Wanders
edf8dbca70 RMG: restructure widget and dialog files 2023-08-04 10:10:28 +02:00
Rosalie Wanders
b9dfabf2e6 3rdParty: build mupen64plus-video-parallel with -DCONFIG_GUI=ON 2023-08-04 10:01:27 +02:00
Rosalie Wanders
29bf915919 3rdParty: update mupen64plus-video-parallel 2023-08-04 09:59:38 +02:00
Rosalie Wanders
99036b797f RMG: add support for vulkan 2023-08-04 09:59:09 +02:00
Rosalie Wanders
3987f6c9df ci: install libvulkan-dev 2023-08-04 09:57:12 +02:00
Rosalie Wanders
efc8e08c02 RMG-Core: update mupen64plus api headers 2023-08-04 09:57:12 +02:00
Rosalie Wanders
369596490f 3rdParty: update mupen64plus-core 2023-08-04 09:56:22 +02:00
Rosalie Wanders
8ad727b33f Script: fix UpdateMupenHeaders.sh 2023-08-04 09:53:35 +02:00
Rosalie Wanders
a760cd5412 3rdParty: don't extract 7-Zip archive verbosely 2023-08-04 07:35:28 +02:00
Rosalie Wanders
409a42ec3d RMG-Input: fix joystick hats not visualizing properly 2023-08-04 06:06:32 +02:00
Rosalie Wanders
be21461312 RMG-Core: fix reading out of bounds in Plugins.cpp 2023-08-01 12:07:25 +02:00
Rosalie Wanders
1cf1111a62 README: correct description 2023-07-31 23:11:57 +02:00
Rosalie Wanders
f2246e3293 3rdParty: update mupen64plus-video-GLideN64 2023-07-31 22:47:31 +02:00
Rosalie Wanders
2283bd1bb2 3rdParty: update mupen64plus-video-GLideN64 2023-07-31 22:39:09 +02:00
Rosalie Wanders
e69e251c5c RMG: remove debugger variables and add break in SettingsDialog.cpp 2023-07-31 22:34:54 +02:00
Rosalie Wanders
16276852b2 RMG-Core: initialize l_DynamicValue in l_Setting in Settings.cpp 2023-07-31 22:34:12 +02:00
Rosalie Wanders
f4cf856ef5 RMG-Core: fix copying string out of bounds in Plugins.cpp 2023-07-31 22:33:00 +02:00
Rosalie Wanders
45cf5a8663 RMG-Core: only include command functions in Directories.cpp when needed 2023-07-31 22:31:57 +02:00
Rosalie Wanders
77187d4bde RMG-Input: correct joystick hat code in main.cpp 2023-07-31 14:43:55 +02:00
Rosalie Wanders
662023c24d RMG-Input: implement support for joystick hats 2023-07-30 22:19:11 +02:00
Rosalie Wanders
df68694645 3rdParty: update mupen64plus-video-parallel 2023-07-30 22:13:56 +02:00
Rosalie Wanders
c1e0a04dd1 Package: add more keywords to the desktop file 2023-07-30 21:49:41 +02:00
Logan McNaughton
87587426ca
Package: add RMG keyword to the desktop file (#151) 2023-07-29 16:10:28 +02:00
Rosalie Wanders
4065d12158 3rdParty: enable BUILD_ALWAYS 2023-07-27 13:09:36 +02:00
Rosalie Wanders
7cf3437542 RMG: fail VidExt_OglSetup() when OpenGL context is invalid 2023-07-26 22:22:11 +02:00
Rosalie Wanders
6aff463b10 RMG: set OpenGL 3.3 as default in VidExt.cpp 2023-07-26 22:15:43 +02:00
Rosalie Wanders
04ae630418 cmake: remove FORCE_XCB option 2023-07-26 22:14:46 +02:00
Rosalie Wanders
4bd2af5cc8 RMG: add RMG_WAYLAND environment variable 2023-07-26 22:14:36 +02:00
Rosalie Wanders
1c9dca25f9 RMG: add wayland support 2023-07-23 07:38:14 +02:00
Rosalie Wanders
86dfb96937 cmake: use VERSION file when git fails 2023-07-22 00:03:58 +02:00
Rosalie Wanders
34915876e5 RMG-Input: don't try to open device when it's VRU in MainDialog.cpp 2023-07-21 23:40:11 +02:00
Rosalie Wanders
ad06ffeeca 3rdParty: build mupen64plus-input-raphnetraw out-of-tree 2023-07-21 23:28:53 +02:00
Rosalie Wanders
7ac7bed45a 3rdParty: update mupen64plus-input-raphnetraw 2023-07-21 23:25:05 +02:00
Rosalie Wanders
af31b8f8ba 3rdParty: update imgui 2023-07-21 23:22:07 +02:00
Rosalie Wanders
c3528f99cd cmake: only set RPATH to $ORIGIN in portable installs 2023-07-20 13:25:45 +02:00
Rosalie Wanders
63906086b4 ci: use --strip for AppImage 2023-07-20 13:21:44 +02:00
Rosalie Wanders
63441c34aa Script: add --strip to Build.sh 2023-07-20 13:21:07 +02:00
Rosalie Wanders
6a50c09517 cmake: add USE_LTO option 2023-07-20 13:19:33 +02:00
Rosalie Wanders
7c46d9ef41 Package: v0.4.5 2023-07-19 16:48:19 +02:00
Rosalie Wanders
fd2f0ea18e 3rdParty: update mupen64plus-video-GLideN64 2023-07-19 16:17:56 +02:00
Rosalie Wanders
72574046ed gitignore: add 3rdParty build leftovers 2023-07-19 16:17:56 +02:00
Rosalie Wanders
e8f0850eb2 cmake: remove NO_GIT_CLONE option 2023-07-19 16:17:56 +02:00
Rosalie Wanders
44f8db26c7 3rdParty: fix CMakeLists.txt 2023-07-19 16:17:56 +02:00
Rosalie Wanders
b3664ea00e 3rdParty: add SDL_GameControllerDB 2023-07-19 16:17:56 +02:00
Rosalie Wanders
ed9f89a14d 3rdParty: add imgui 2023-07-19 16:17:56 +02:00
Rosalie Wanders
427341977c 3rdParty: add rapidjson 2023-07-19 16:17:56 +02:00
Rosalie Wanders
a8b4230368 3rdParty: add discord-rpc 2023-07-19 11:36:21 +02:00
Rosalie Wanders
18a42f2363 3rdParty: add mupen64plus-video-parallel 2023-07-19 11:04:20 +02:00
Rosalie Wanders
938f457fea 3rdParty: add mupen64plus-video-GLideN64 2023-07-19 11:04:20 +02:00
Rosalie Wanders
d005e24f51 3rdParty: add mupen64plus-video-angrylion-plus 2023-07-19 11:04:20 +02:00
Rosalie Wanders
63c8dfd530 3rdParty: add mupen64plus-input-gca 2023-07-19 11:04:20 +02:00
Rosalie Wanders
6d1da7514c 3rdParty: add mupen64plus-input-raphnetraw 2023-07-19 11:00:22 +02:00
Rosalie Wanders
06164d41b1 3rdParty: add mupen64plus-rsp-parallel 2023-07-19 10:59:53 +02:00
Rosalie Wanders
cd54058e1a 3rdParty: add mupen64plus-rsp-hle 2023-07-19 10:59:23 +02:00
Rosalie Wanders
850ad78d3a 3rdParty: add mupen64plus-rsp-cxd4 2023-07-19 10:59:13 +02:00
Rosalie Wanders
bf0d24d967 3rdParty: add mupen64plus-core 2023-07-19 10:57:51 +02:00
Rosalie Wanders
3db473f0df RMG-Input: fix button slots 2023-07-19 10:55:19 +02:00
Rosalie Wanders
d842baa2c5 Package: v0.4.4 2023-07-17 15:58:04 +02:00
Rosalie Wanders
86db43aab4 RMG: set OnScreenDisplay{Pause,Resume} in on_Core_StateCallback() 2023-07-17 15:55:44 +02:00
Rosalie Wanders
4397a0c614 3rdParty: update mupen64plus-core 2023-07-17 15:36:42 +02:00
Rosalie Wanders
898e1596b3 RMG: use CoreStateCallbackType::ScreenshotCaptured 2023-07-17 15:00:06 +02:00
Rosalie Wanders
66e08de2fe RMG-Core: add ScreenshotCaptured to CoreStateCallbackType 2023-07-17 14:59:04 +02:00
Rosalie Wanders
7b73254ad2 3rdParty: update mupen64plus-core 2023-07-17 14:58:47 +02:00
Rosalie Wanders
9bd77efbdb Package: fix AppImage LD_LIBRARY_PATH hack 2023-07-17 14:17:06 +02:00
Rosalie Wanders
aaf42ea8b9 ci: correct $build_dir 2023-07-17 14:16:17 +02:00
JaxonWasTaken
57c5af0f30
RMG-Input: refactor deadzone and sensitivity (#143)
* rework application of deadzone

 * Move application of deadzone outside octagon simulation.
 * Scale result after applying deadzone back to the range ±[0, 1].
 * Remove deadzone from octagon simulation, as a real N64 controller can
   output output values in the full range.

* move application of sensitivity

The sensitivity is only for the real controller and doesn't really have
anything to do with simulating an octagon, so we move its application to
the processing of input from the real controller.

* use std::hypot instead of manual calculation
2023-07-17 14:12:44 +02:00
Rosalie Wanders
43c3e55466 RMG-Input: add hotkeys for inc/decr save state slot and switching paks 2023-07-16 16:43:17 +02:00
Rosalie Wanders
ffbd84df82 RMG-Core: add more controller hotkey settings 2023-07-16 16:41:28 +02:00
Rosalie Wanders
25ee5f2ca1 RMG-Core: introduce Core{Increase,Decrease}SaveStateSlot() 2023-07-16 16:07:02 +02:00
Rosalie Wanders
f223b88803 RMG-Input: add support for joystick/triggers in HotkeysDialog.cpp 2023-07-16 15:36:06 +02:00
Rosalie Wanders
cd56680e38 RMG-Core: fix mupen64plus-rsp-hle fallback not working on first run 2023-07-16 15:16:26 +02:00
Rosalie Wanders
b9e1e230f9 RMG-Core: minor code fixes 2023-07-15 11:24:41 +02:00
Rosalie Wanders
eb8294363a RMG-Core: fix memory leak in Rom.cpp 2023-07-15 11:10:05 +02:00
3014 changed files with 1086949 additions and 6868 deletions

View file

@ -3,74 +3,96 @@ name: RMG
on: [push, pull_request] on: [push, pull_request]
jobs: jobs:
Linux: build-linux:
runs-on: ubuntu-20.04 runs-on: ubuntu-24.04
strategy:
matrix:
features: [ ON, OFF ]
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
with: with:
fetch-depth: 0 fetch-depth: 0
- uses: hendrikmuhs/ccache-action@v1.2.5 - uses: hendrikmuhs/ccache-action@v1.2
with: with:
key: Linux key: linux-features-${{ matrix.features }}
- name: Install Packages - name: Install Packages
run: | run: |
sudo apt-get purge grub\* --yes --allow-remove-essential sudo apt-get -y update
sudo add-apt-repository ppa:okirby/qt6-backports --yes sudo apt-get -y upgrade
sudo apt-get -qq update sudo apt-get -y install cmake libhidapi-dev libsamplerate0-dev libspeex-dev libminizip-dev libsdl2-dev libsdl2-net-dev libfreetype6-dev \
sudo apt-get upgrade libgl1-mesa-dev libglu1-mesa-dev pkg-config zlib1g-dev binutils-dev libspeexdsp-dev qt6-base-dev libqt6svg6-dev libqt6websockets6-dev libvulkan-dev \
sudo apt-get -y install cmake ninja-build libhidapi-dev libsamplerate0-dev libspeex-dev libminizip-dev libsdl2-dev libfreetype6-dev libgl1-mesa-dev libglu1-mesa-dev pkg-config zlib1g-dev binutils-dev libspeexdsp-dev qt6-base-dev libqt6svg6-dev build-essential nasm git zip appstream build-essential nasm git zip appstream xvfb qt6ct mesa-vulkan-drivers
- name: Prepare Environment - name: Prepare Environment
run: | run: |
echo "GIT_REVISION=$(git describe --tags --always)" >> $GITHUB_ENV echo "GIT_REVISION=$(git describe --tags --always)" >> $GITHUB_ENV
- name: Build RMG (AppImage) - name: Build RMG (AppImage)
run: | run: |
mkdir Build Build/AppImage Bin/ -p
export src_dir="$(pwd)" export src_dir="$(pwd)"
export build_dir="$(pwd)/build" export build_dir="$(pwd)/Build/AppImage"
export bin_dir="$(pwd)/Bin/AppImage" export bin_dir="$(pwd)/Bin/AppImage"
cmake -S "$src_dir" -B "$build_dir" -DCMAKE_BUILD_TYPE="Release" -DPORTABLE_INSTALL="OFF" -DUPDATER=ON -DAPPIMAGE_UPDATER=ON -DCMAKE_INSTALL_PREFIX="/usr" -G "Ninja"
cmake --build "$build_dir" mkdir $build_dir Bin/ -p
cmake --install "$build_dir" --prefix="$bin_dir/usr" cmake -S "$src_dir" -B "$build_dir" -DCMAKE_BUILD_TYPE="Release" \
-DDISCORD_RPC=${{ matrix.features }} \
-DDRAG_DROP=${{ matrix.features }} \
-DNETPLAY=${{ matrix.features }} \
-DVRU=${{ matrix.features }} \
-DUSE_ANGRYLION=${{ matrix.features }} \
-DUPDATER=${{ matrix.features }} \
-DAPPIMAGE_UPDATER=${{ matrix.features }} \
-DPORTABLE_INSTALL=OFF \
-DCMAKE_INSTALL_PREFIX="/usr" \
-DCMAKE_INSTALL_LIBDIR="lib" \
-G "Unix Makefiles"
cmake --build "$build_dir" --parallel "$(nproc)"
cmake --install "$build_dir" --strip --prefix="$bin_dir/usr"
shell: bash shell: bash
- name: Create AppImage - name: Create AppImage
if: ${{ matrix.features == 'ON' }}
run: | run: |
./Package/AppImage/Create.sh ./Package/AppImage/Create.sh
shell: bash shell: bash
- name: Upload RMG (AppImage) - name: Upload RMG (AppImage)
uses: actions/upload-artifact@v3 if: ${{ matrix.features == 'ON' }}
uses: actions/upload-artifact@v4
with: with:
name: RMG-Portable-Linux64-${{ env.GIT_REVISION }} name: RMG-Portable-Linux64-${{ env.GIT_REVISION }}
path: Bin/*.AppImage path: Bin/*.AppImage
Windows: build-windows:
runs-on: windows-2019 runs-on: windows-2022
strategy:
matrix:
features: [ ON, OFF ]
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
with: with:
fetch-depth: 0 fetch-depth: 0
- uses: hendrikmuhs/ccache-action@v1.2.5 - uses: hendrikmuhs/ccache-action@v1.2
with: with:
key: Windows key: windows-features-${{ matrix.features }}
- uses: msys2/setup-msys2@v2 - uses: msys2/setup-msys2@v2
with: with:
path-type: inherit path-type: inherit
update: true update: true
msystem: ucrt64
install: >- install: >-
make make
mingw-w64-x86_64-cmake mingw-w64-ucrt-x86_64-cmake
mingw-w64-x86_64-ninja mingw-w64-ucrt-x86_64-gcc
mingw-w64-x86_64-gcc mingw-w64-ucrt-x86_64-hidapi
mingw-w64-x86_64-hidapi mingw-w64-ucrt-x86_64-freetype
mingw-w64-x86_64-freetype mingw-w64-ucrt-x86_64-libpng
mingw-w64-x86_64-libpng mingw-w64-ucrt-x86_64-SDL2
mingw-w64-x86_64-SDL2 mingw-w64-ucrt-x86_64-SDL2_net
mingw-w64-x86_64-qt6 mingw-w64-ucrt-x86_64-qt6
mingw-w64-x86_64-SDL2 mingw-w64-ucrt-x86_64-hidapi
mingw-w64-x86_64-hidapi mingw-w64-ucrt-x86_64-speexdsp
mingw-w64-x86_64-speexdsp mingw-w64-ucrt-x86_64-libsamplerate
mingw-w64-x86_64-libsamplerate mingw-w64-ucrt-x86_64-nasm
mingw-w64-x86_64-nasm mingw-w64-ucrt-x86_64-minizip
mingw-w64-x86_64-minizip mingw-w64-ucrt-x86_64-vulkan-headers
git git
- name: Prepare Environment - name: Prepare Environment
run: | run: |
@ -78,17 +100,40 @@ jobs:
echo "GIT_REVISION=$env:revision" >> $env:GITHUB_ENV echo "GIT_REVISION=$env:revision" >> $env:GITHUB_ENV
shell: pwsh shell: pwsh
- name: Build RMG (Portable) - name: Build RMG (Portable)
run: ./Source/Script/Build.sh Release run: |
export src_dir="$(pwd)"
export build_dir="$(pwd)/Build/Release"
cmake -S "$src_dir" -B "$build_dir" -DCMAKE_BUILD_TYPE="Release" \
-DDISCORD_RPC=${{ matrix.features }} \
-DDRAG_DROP=${{ matrix.features }} \
-DNETPLAY=${{ matrix.features }} \
-DVRU=${{ matrix.features }} \
-DUSE_ANGRYLION=${{ matrix.features }} \
-DUPDATER=${{ matrix.features }} \
-DPORTABLE_INSTALL=ON \
-G "MSYS Makefiles"
cmake --build "$build_dir" --parallel "$(nproc)"
cmake --install "$build_dir" --strip --prefix="$src_dir"
cmake --build "$build_dir" --target=bundle_dependencies
shell: msys2 {0} shell: msys2 {0}
- name: Create Installer - name: Create Installer
if: ${{ matrix.features == 'ON' }}
run: .\Build\Release\Source\Installer\CreateInstaller.bat run: .\Build\Release\Source\Installer\CreateInstaller.bat
- name: Configure RMG (Portable)
if: ${{ matrix.features == 'ON' }}
run: touch Bin/Release/portable.txt
shell: msys2 {0}
- name: Upload RMG (Portable) - name: Upload RMG (Portable)
uses: actions/upload-artifact@v3 if: ${{ matrix.features == 'ON' }}
uses: actions/upload-artifact@v4
with: with:
name: RMG-Portable-Windows64-${{ env.GIT_REVISION }} name: RMG-Portable-Windows64-${{ env.GIT_REVISION }}
path: Bin/Release/* path: Bin/Release/*
- name: Upload RMG (Installer) - name: Upload RMG (Installer)
uses: actions/upload-artifact@v3 if: ${{ matrix.features == 'ON' }}
uses: actions/upload-artifact@v4
with: with:
name: RMG-Setup-Windows64-${{ env.GIT_REVISION }} name: RMG-Setup-Windows64-${{ env.GIT_REVISION }}
path: Bin/*.exe path: Bin/*.exe

12
.gitignore vendored
View file

@ -8,8 +8,18 @@ Package/ArchLinux/pkg/
Package/ArchLinux/rmg/ Package/ArchLinux/rmg/
Package/ArchLinux/src/ Package/ArchLinux/src/
Package/ArchLinux/*.pkg.* Package/ArchLinux/*.pkg.*
# Fedora Package
Package/Fedora/*.rpm
Package/Fedora/*.tar.gz
Package/Fedora/results_*/
# Clangd compile_commands.json # Clangd compile_commands.json
compile_commands.json compile_commands.json
# AppImage # AppImage
squashfs-root squashfs-root
*.AppImage *.AppImage
Package/AppImage/appimagetool
Package/AppImage/lib4bin
Package/AppImage/sharun
# 3rdParty Build
Source/3rdParty/mupen64plus-core/src/asm_defines/asm_defines_gas.h
Source/3rdParty/mupen64plus-core/src/asm_defines/asm_defines_nasm.h

View file

@ -4,25 +4,38 @@
cmake_minimum_required(VERSION 3.15) cmake_minimum_required(VERSION 3.15)
option(PORTABLE_INSTALL "Portable Installation" ON) option(PORTABLE_INSTALL "Portable Installation" ON)
option(NO_GIT_CLONE "Disables git clone usage for 3rdParty dependencies" OFF) option(UPDATER "Enables updater" ${WIN32})
option(UPDATER "Enables updater" ${PORTABLE_INSTALL})
option(APPIMAGE_UPDATER "Enables AppImage updater" OFF) option(APPIMAGE_UPDATER "Enables AppImage updater" OFF)
option(DISCORD_RPC "Enables Discord Rich Presence" ON) option(DISCORD_RPC "Enables Discord Rich Presence" ON)
option(DRAG_DROP "Enables drag and drop" ON)
option(NETPLAY "Enables netplay" ON)
option(VRU "Enables VRU support in RMG-Input" ON) option(VRU "Enables VRU support in RMG-Input" ON)
option(USE_CCACHE "Enables usage of ccache when ccache has been found" ON) option(USE_CCACHE "Enables usage of ccache when ccache has been found" ON)
option(FORCE_XCB "Forces Qt to use the xcb platform on linux" ${LINUX}) option(USE_LTO "Enables building with LTO/IPO when compiler supports it" ON)
option(NO_ASM "Disables the usage of assembly in the mupen64plus-core" OFF)
option(NO_RUST "Disables the building of rust subprojects" OFF) option(NO_RUST "Disables the building of rust subprojects" OFF)
option(USE_LIBFMT "Enables usage of libfmt instead of detecting whether std::format is supported" OFF)
option(USE_ANGRYLION "Enables building angrylion-rdp-plus which uses a non-GPL compliant license" OFF)
project(RMG) project(RMG)
find_package(Git REQUIRED) find_package(Git)
execute_process( if (GIT_FOUND)
COMMAND ${GIT_EXECUTABLE} describe --tags --always execute_process(
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" COMMAND ${GIT_EXECUTABLE} describe --tags --always
OUTPUT_VARIABLE GIT_VERSION WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
ERROR_QUIET RESULT_VARIABLE GIT_RESULT
OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE GIT_VERSION
) ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE
)
endif(GIT_FOUND)
if (NOT GIT_FOUND OR NOT ${GIT_RESULT} EQUAL 0)
if (NOT ${GIT_RESULT} EQUAL 0)
message(WARNING "git failed to retrieve the current revision, falling back to VERSION file!")
endif()
file(STRINGS "VERSION" GIT_VERSION)
endif()
if (USE_CCACHE) if (USE_CCACHE)
find_program(CCACHE_FOUND ccache) find_program(CCACHE_FOUND ccache)
@ -33,7 +46,40 @@ if (USE_CCACHE)
endif(CCACHE_FOUND) endif(CCACHE_FOUND)
endif(USE_CCACHE) endif(USE_CCACHE)
if (NOT PORTABLE_INSTALL AND (WIN32 OR MSYS)) if (USE_LTO)
include(CheckIPOSupported)
check_ipo_supported(RESULT ENABLE_IPO)
# ensure we don't enable LTO on Debug builds
if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
if(ENABLE_IPO)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON)
endif(ENABLE_IPO)
endif()
endif(USE_LTO)
if (NOT USE_LIBFMT)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
include(CheckCXXSourceCompiles)
check_cxx_source_compiles("
#include <format>
int main(void)
{
std::string str = std::format(\"number: {}\", 10);
return 0;
}" HAVE_STDFORMAT)
# fallback to libfmt if std::format
# isn't supported in the compiler
if (NOT HAVE_STDFORMAT)
set(USE_LIBFMT ON)
endif(NOT HAVE_STDFORMAT)
endif(NOT USE_LIBFMT)
if (NOT PORTABLE_INSTALL AND WIN32)
message(WARNING "Not-Portable build not supported on windows, re-enabling PORTABLE_INSTALL!") message(WARNING "Not-Portable build not supported on windows, re-enabling PORTABLE_INSTALL!")
set(PORTABLE_INSTALL ON) set(PORTABLE_INSTALL ON)
endif() endif()
@ -43,17 +89,17 @@ if (NOT PORTABLE_INSTALL AND UPDATER AND NOT APPIMAGE_UPDATER)
set(UPDATER OFF) set(UPDATER OFF)
endif() endif()
if (APPIMAGE_UPDATER AND (WIN32 OR MSYS)) if (APPIMAGE_UPDATER AND WIN32)
message(WARNING "AppImage updater not supported on windows, disabling APPIMAGE_UPDATER!") message(WARNING "AppImage updater not supported on windows, disabling APPIMAGE_UPDATER!")
set(APPIMAGE_UPDATER OFF) set(APPIMAGE_UPDATER OFF)
endif() endif()
if (UPDATER AND NOT (WIN32 OR MSYS) AND NOT APPIMAGE_UPDATER) if (UPDATER AND NOT WIN32 AND NOT APPIMAGE_UPDATER)
message(WARNING "Only AppImage updater is supported on linux, disabling UPDATER!") message(WARNING "Only AppImage updater is supported on linux, disabling UPDATER!")
set(UPDATER OFF) set(UPDATER OFF)
endif() endif()
if (FORCE_XCB AND (WIN32 OR MSYS)) if (FORCE_XCB AND WIN32)
message(WARNING "XCB Qt platform not supported on windows, disabling FORCE_XCB!") message(WARNING "XCB Qt platform not supported on windows, disabling FORCE_XCB!")
set(FORCE_XCB OFF) set(FORCE_XCB OFF)
endif() endif()
@ -69,20 +115,21 @@ if (PORTABLE_INSTALL)
set(DATA_INSTALL_PATH "${INSTALL_PATH}/Data") set(DATA_INSTALL_PATH "${INSTALL_PATH}/Data")
set(INSTALL_DESKTOP_FILE OFF) set(INSTALL_DESKTOP_FILE OFF)
else() else()
set(RMG_INSTALL_PATH "bin") include(GNUInstallDirs)
set(SYSTEM_LIB_INSTALL_PATH "lib") set(RMG_INSTALL_PATH "${CMAKE_INSTALL_BINDIR}")
set(LIB_INSTALL_PATH "lib/RMG") set(SYSTEM_LIB_INSTALL_PATH "${CMAKE_INSTALL_LIBDIR}")
set(CORE_INSTALL_PATH "lib/RMG/Core") set(LIB_INSTALL_PATH "${SYSTEM_LIB_INSTALL_PATH}/RMG")
set(PLUGIN_INSTALL_PATH "lib/RMG/Plugin") set(CORE_INSTALL_PATH "${SYSTEM_LIB_INSTALL_PATH}/RMG/Core")
set(DATA_INSTALL_PATH "share/RMG") set(PLUGIN_INSTALL_PATH "${SYSTEM_LIB_INSTALL_PATH}/RMG/Plugin")
set(DATA_INSTALL_PATH "${CMAKE_INSTALL_DATADIR}/RMG")
set(INSTALL_DESKTOP_FILE ON) set(INSTALL_DESKTOP_FILE ON)
set(APPDATA_INSTALL_PATH "share/metainfo/") set(METAINFO_INSTALL_PATH "${CMAKE_INSTALL_DATADIR}/metainfo/")
set(DESKTOP_INSTALL_PATH "share/applications") set(DESKTOP_INSTALL_PATH "${CMAKE_INSTALL_DATADIR}/applications")
set(ICON_INSTALL_PATH "share/icons/hicolor/scalable/apps/") set(ICON_INSTALL_PATH "${CMAKE_INSTALL_DATADIR}/icons/hicolor/scalable/apps/")
endif() endif()
add_subdirectory(Source/3rdParty) add_subdirectory(Source/3rdParty)
add_subdirectory(Source/3rdParty/7-Zip) add_subdirectory(Source/3rdParty/lzma)
if (VRU) if (VRU)
add_subdirectory(Source/3rdParty/vosk-api) add_subdirectory(Source/3rdParty/vosk-api)
endif(VRU) endif(VRU)
@ -108,12 +155,17 @@ if (WIN32)
add_subdirectory(Source/Installer) add_subdirectory(Source/Installer)
add_custom_target(bundle_dependencies add_custom_target(bundle_dependencies
COMMAND bash "${CMAKE_SOURCE_DIR}/Source/Script/BundleDependencies.sh" "${CMAKE_SOURCE_DIR}/Bin/${CMAKE_BUILD_TYPE}/RMG.exe" "${CMAKE_SOURCE_DIR}/Bin/${CMAKE_BUILD_TYPE}" "/mingw64/bin" COMMAND bash "${CMAKE_SOURCE_DIR}/Source/Script/BundleDependencies.sh" "${CMAKE_SOURCE_DIR}/Bin/${CMAKE_BUILD_TYPE}/RMG.exe" "${CMAKE_SOURCE_DIR}/Bin/${CMAKE_BUILD_TYPE}"
) )
endif(WIN32) endif(WIN32)
set(LIB_PERMISSIONS OWNER_READ OWNER_EXECUTE OWNER_WRITE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)
install(FILES ${MUPEN64PLUSCORE_LIB} install(FILES ${MUPEN64PLUSCORE_LIB}
DESTINATION ${CORE_INSTALL_PATH} DESTINATION ${CORE_INSTALL_PATH}
PERMISSIONS ${LIB_PERMISSIONS}
) )
install(FILES ${MUPEN64PLUSCORE_INI} Data/font.ttf install(FILES ${MUPEN64PLUSCORE_INI} Data/font.ttf
DESTINATION ${DATA_INSTALL_PATH} DESTINATION ${DATA_INSTALL_PATH}
@ -121,6 +173,7 @@ install(FILES ${MUPEN64PLUSCORE_INI} Data/font.ttf
if (VRU) if (VRU)
install(FILES ${VOSK_API_LIBRARY} install(FILES ${VOSK_API_LIBRARY}
DESTINATION ${LIB_INSTALL_PATH} DESTINATION ${LIB_INSTALL_PATH}
PERMISSIONS ${LIB_PERMISSIONS}
) )
install(FILES ${VOSK_API_MODEL} install(FILES ${VOSK_API_MODEL}
DESTINATION ${DATA_INSTALL_PATH} DESTINATION ${DATA_INSTALL_PATH}
@ -136,27 +189,40 @@ install(FILES ${GENERATED_CHEAT_FILES} ${CUSTOM_CHEAT_FILES}
) )
install(FILES ${MUPEN64PLUS_PLUGIN_RSP_CXD4} install(FILES ${MUPEN64PLUS_PLUGIN_RSP_CXD4}
DESTINATION ${PLUGIN_INSTALL_PATH}/RSP DESTINATION ${PLUGIN_INSTALL_PATH}/RSP
PERMISSIONS ${LIB_PERMISSIONS}
) )
install(FILES ${MUPEN64PLUS_PLUGIN_RSP_HLE} install(FILES ${MUPEN64PLUS_PLUGIN_RSP_HLE}
DESTINATION ${PLUGIN_INSTALL_PATH}/RSP DESTINATION ${PLUGIN_INSTALL_PATH}/RSP
PERMISSIONS ${LIB_PERMISSIONS}
) )
install(FILES ${MUPEN64PLUS_PLUGIN_RSP_PARALLEL} install(FILES ${MUPEN64PLUS_PLUGIN_RSP_PARALLEL}
DESTINATION ${PLUGIN_INSTALL_PATH}/RSP DESTINATION ${PLUGIN_INSTALL_PATH}/RSP
PERMISSIONS ${LIB_PERMISSIONS}
) )
install(FILES ${MUPEN64PLUS_PLUGIN_INPUT_RAPHNET} install(FILES ${MUPEN64PLUS_PLUGIN_INPUT_RAPHNET}
DESTINATION ${PLUGIN_INSTALL_PATH}/Input DESTINATION ${PLUGIN_INSTALL_PATH}/Input
PERMISSIONS ${LIB_PERMISSIONS}
) )
install(FILES ${MUPEN64PLUS_PLUGIN_INPUT_GCA} install(FILES ${MUPEN64PLUS_PLUGIN_INPUT_GCA}
DESTINATION ${PLUGIN_INSTALL_PATH}/Input DESTINATION ${PLUGIN_INSTALL_PATH}/Input
PERMISSIONS ${LIB_PERMISSIONS}
) )
install(FILES ${MUPEN64PLUS_PLUGIN_GFX_ANGRYLION} if (USE_ANGRYLION)
DESTINATION ${PLUGIN_INSTALL_PATH}/GFX install(FILES ${MUPEN64PLUS_PLUGIN_GFX_ANGRYLION}
) DESTINATION ${PLUGIN_INSTALL_PATH}/GFX
PERMISSIONS ${LIB_PERMISSIONS}
)
endif(USE_ANGRYLION)
install(FILES ${MUPEN64PLUS_PLUGIN_GFX_GLIDEN64} install(FILES ${MUPEN64PLUS_PLUGIN_GFX_GLIDEN64}
DESTINATION ${PLUGIN_INSTALL_PATH}/GFX DESTINATION ${PLUGIN_INSTALL_PATH}/GFX
PERMISSIONS ${LIB_PERMISSIONS}
)
install(FILES ${MUPEN64PLUS_PLUGIN_GFX_GLIDEN64_DATA}
DESTINATION ${PLUGIN_INSTALL_PATH}/GFX
) )
install(FILES ${MUPEN64PLUS_PLUGIN_GFX_PARALLEL} install(FILES ${MUPEN64PLUS_PLUGIN_GFX_PARALLEL}
DESTINATION ${PLUGIN_INSTALL_PATH}/GFX DESTINATION ${PLUGIN_INSTALL_PATH}/GFX
PERMISSIONS ${LIB_PERMISSIONS}
) )
if (INSTALL_DESKTOP_FILE) if (INSTALL_DESKTOP_FILE)
@ -166,7 +232,7 @@ if (INSTALL_DESKTOP_FILE)
install(FILES Package/com.github.Rosalie241.RMG.svg install(FILES Package/com.github.Rosalie241.RMG.svg
DESTINATION ${ICON_INSTALL_PATH} DESTINATION ${ICON_INSTALL_PATH}
) )
install(FILES Package/com.github.Rosalie241.RMG.appdata.xml install(FILES Package/com.github.Rosalie241.RMG.metainfo.xml
DESTINATION ${APPDATA_INSTALL_PATH} DESTINATION ${METAINFO_INSTALL_PATH}
) )
endif(INSTALL_DESKTOP_FILE) endif(INSTALL_DESKTOP_FILE)

View file

@ -0,0 +1,148 @@
[34AEB154-A4253B86-C:45]
Name=Conker's Bad Fur Day (U) [T+Spa1.1_Blade133bo]
$$Acceso\Todos los Capítulos, Escenas & Personajes Multijugador
50000401 0000
800E9D01 00FF
$$Acceso\Todos los Personajes & Armas en Multi Race
810E9D02 ??FF
FF Todos los Personajes & Bate de Béisbol
FB Todos los Personajes & Sartén
F3 Todos los Personajes & Huesos
$$Seleccionar Velocidad de Conker
810CC318 ????
3F00 Conker Lento
3F80 Conker Normal
3FF0 Conker Rápido
4030 Conker Superrápido
$$Infinito\Recuento de Precisión Jugador 1
Note=SOLO EN MULTI. Solo pon este código una vez que estés en el juego.
800E0B67 0001
$$Infinito\Bolsas En Heist
800E0BE4 00FF
$$Infinito\Bombas
802055CA 0030
$$Infinito\Recuento de Disparos a la Cabeza Jugador 1
Note=SOLO EN MULTI. Solo pon este código una vez que estés en el juego. Una vez que recojas un arma y dispares una vez, acertarás al 100%.
800E0B6B 03E7
$$Infinito\Salud\Jugador 1
800CC49A 0006
$$Infinito\Salud\Jugador 2
800CC7C6 270F
$$Infinito\Salud\Jugador 3
800CCAF2 270F
$$Infinito\Salud\Jugador 4
800CCE1E 270F
$$Infinito\Vidas Jugador 1
800D2144 0064
$$Infinito\Máximo de Muertes Jugador 1
800E0B47 03E7
$$Infinito\Lotes de Dinero
810D214A FFFF
$$Infinito\Tiempo En Multi
8108FD7A 7500
$$Modo Matrix (En Cualquier Momento)
Note=Pulsa R para activar y luego C-Derecha para salir.
D1042A14 0010
800BEA0C 0001
D1042A14 0010
810BE574 D202
D1042A14 0001
800BEA0C 0000
D1042A14 0001
810BE574 0000
$$Jugar como Opción 1
Note=Aquí puedes elegir con quién quieres jugar, pero solo una opción a la vez. La sombra no será visible, excepto cuando juegues como Conker.
800D213F 00??
01 Comadreja
02 Comadreja (Traje negro)
03 Tedi
04 Ardilla de Combate
05 Conker
08 Tanque (No se puede mover)
09 Dinosaurio (No se puede mover)
0B Uga
0C Cavernícola Calvo
0D Cavernícola
0E Cavernícola Mohicano
0F Cavernícola Spikey
10 Conker Neo
11 Aldeano Masculino
12 Aldeano Masculino (con gafas)
13 Aldeano Masculino (con bigote)
14 Aldeano Masculino (con gafas y bigote)
15 Aldeano Masculino (con sombrero)
16 Aldeano Masculino (con sombrero y gafas)
17 Aldeano Masculino (con sombrero y bigote)
18 Aldeano Masculino (con sombrero y gafas y bigote)
19 Aldeano Masculino (con gorra)
1A Aldeano Masculino (con gorra y gafas)
1B Aldeano Masculino (con gorra y bigote)
1C Aldeano Masculino (con gorra y gafas y bigote)
1D Aldeana Femenina
1F Aldeana Femenina (con capucha y gafas)
21 Zombi Masculino
22 Zombi Femenino
23 Murciélago Enemigo
24 Conker el Murciélago
25 Capitán del Ejercito
26 Jefe Tedi
27 Gregg
28 Gregg Huesudo
$$Pulsa L Para Levitar\Jugador 1
Note=Pulsa el Botón L para Levitar y Sueltalo para bajar
D0042A15 0020
810CC2F0 41CB
$$Pulsa L Para Levitar\Jugador 2
Note=Pulsa el Botón L para Levitar y Sueltalo para bajar
D0042A1D 0020
810CC61C 41CB
$$Pulsa L Para Levitar\Jugador 3
Note=Pulsa el Botón L para Levitar y Sueltalo para bajar
D0042A25 0020
810CC948 41CB
$$Pulsa L Para Levitar\Jugador 4
Note=Pulsa el Botón L para Levitar y Sueltalo para bajar
D0042A2D 0020
810CCC74 41CB
$$Activador de Animación de Espera
800CC5C8 00??
00 Por defecto como máximo
02 Animaciones de espera deshabilitadas
$$Selección de Arma en Multi (Al recoger)
Note=Selecciona el arma que quieras en el modo multijugador y luego, en una recogida de armas, tendrás el arma de tu elección. (Debes tener un arma ya recogida para cambiar por la próxima.)
80180873 00??
01 Espada
02 Nada
03 Motosierra Amarilla
04 Cuchillos Arrojadizos
05 Rifle
06 Revolver con Mira
07 Lanzacohetes
08 Escopeta
0A Rifle Francotirador Con Alcance
0C Metralletas Dobles
13 Máscara Antigás

View file

@ -0,0 +1,112 @@
[3A03E50F-E78D1CA7-C:45]
Name=GoldenEye 007 (U) [T+Spa2.0_Sogun&IlDucci]
$$Modo Depuración
Note=Pulsa A o Start para habilitar la opción actualmente seleccionada. Al pulsar Start cuando tengas el control del jugador, abrirá el menú reloj y cerrará el menú de depuración.
80036FCB 0001
$$Tener Todo\64 personajes en multijugador
Note=Habilita todos los personajes seleccionables para jugar en multijugador
8002B197 0040
$$Tener Todo\Objetivos Completados
80036FD3 0001
$$Todo Desbloqueado\Guardado 1
Note=Esto desbloquea todos los niveles, etapas, personajes en el modo multijugador y elementos del menú de trucos (habilite Invencible en el menú de trucos para tener salud infinita)
50002902 0000
810699EE FFFF
$$Todo Desbloqueado\Guardado 2
Note=Esto desbloquea todos los niveles, etapas, personajes en el modo multijugador y elementos del menú de trucos (habilite Invencible en el menú de trucos para tener salud infinita)
50002902 0000
8106992E FFFF
$$Todo Desbloqueado\Guardado 3
Note=Esto desbloquea todos los niveles, etapas, personajes en el modo multijugador y elementos del menú de trucos (habilite Invencible en el menú de trucos para tener salud infinita)
50002902 0000
81069A4E FFFF
$$Todo Desbloqueado\Guardado 4
Note=Esto desbloquea todos los niveles, etapas, personajes en el modo multijugador y elementos del menú de trucos (habilite Invencible en el menú de trucos para tener salud infinita)
50002902 0000
8106998E FFFF
$$Infinito\Munición (Todos los Niveles)
80079E3B 0001
$$Tener\Tiempo Infinito 00:00 (Todos los Niveles)
8004837E 0000
8004838E 0000
80048396 0000
80079A22 0000
80079F26 0000
$$Infinito\Salud (Todos los Niveles)
8100C0F4 0801
8100C0F6 8090
8100C0F8 AFA4
8100C0FA 0000
81060240 0004
81060242 7600
81060244 3C02
81060246 8008
81060248 8C42
8106024A 9EE0
8106024C 3401
8106024E 3F80
81060250 A441
81060252 00DC
81060254 0800
81060256 303F
$f
80048673 0013
81048678 3FC0
80048677 00D0
8004867F 000D
80048683 000A
8004868B 0013
81048690 3FC0
8004868F 00D0
80048697 000D
8004869B 000A
800486A3 0019
810486A8 3FC0
800486A7 00D3
800486AF 0006
800486B3 0003
800486BB 0019
810486C0 3FC0
800486BF 00D3
800486C7 0006
800486CB 0003
800486D3 0013
810486D8 3FC0
800486D7 00D0
800486DF 000D
800486E3 000A
800486EB 0013
810486F0 3FC0
800486EF 00D0
800486F7 000D
800486FB 000A
80048703 0019
81048708 3FC0
80048707 00D3
8004870F 0006
80048713 0003
8004871B 0019
81048720 3FC0
8004871F 00D3
80048727 0006
8004872B 0003
812AEA50 476F
812AEA52 6C64
812AEA54 656E
812AEA56 2047
812AEA58 756E
812AEA5A 2046
812AEA5C 756E
802AEA5E 0000

View file

@ -0,0 +1,50 @@
[D8C74049-29CDD8C4-C:50]
Name=007 - The World is Not Enough (E) [T+Spa1.0.1_IlDucci]
$$Acceso\Todos los Gadgets e Items
801147DD 0001
$$Acceso\Todas las Armas
Note=Viene con munición
801147DC 0001
$$Acceso\Todos los Niveles & Dificultades
81103B66 0021
50000D01 0000
80118F38 0001
$$Infinito\Oxígeno
800E25E4 0004
$$Infinito\Tiempo
81103B82 0000
$$Invencible
811147D8 0101
$$Multijugador\Acceso a Todos los Personajes Malvados
801147EB 0001
811147EC 0101
801147EE 0001
$$Multijugador\Acceso a Todas las Arenas
50005C0C 0000
800C0167 0081
$$Multijugador\Acceso a Todos los Escenarios
801147EF 0001
811147F0 0101
$$Multijugador\Acceso a Todos los Modos de Armamento
811147F2 0101
801147F4 0001
$$Multijugador\Acceso a Q Malvado
800C06EF 0081
$$Multijugador\Acceso a Q Bueno
800C06EF 0001
$$Multijugador\Invencible
811147D8 0101

View file

@ -377,3 +377,12 @@ Note=Put this code on and it will now take where you wanted to go, turn it back
9214 Zora Shop 9214 Zora Shop
B214 Snowhead (Path to temple - warp in) B214 Snowhead (Path to temple - warp in)
D214 East Clock Down D214 East Clock Down
$Time Control
Note=Control the speed of time with the D-pad. Up stops the time, left enables double time, and down restores the notmal speed.
D01F30F6 0008
811E6F06 FFFD
D01F30F6 0004
811E6F06 0000
D01F30F6 0002
811E6F06 FFFE

View file

@ -421,3 +421,12 @@ D03E6B3A 0000
9214 Zora Shop 9214 Zora Shop
B214 Snowhead (Path to temple - warp in) B214 Snowhead (Path to temple - warp in)
D214 East Clock Down D214 East Clock Down
$Time Control
Note=Control the speed of time with the D-pad. Up stops the time, left enables double time, and down restores the notmal speed.
D01FB876 0008
811EF686 FFFD
D01FB876 0004
811EF686 0000
D01FB876 0002
811EF686 FFFE

View file

@ -361,3 +361,12 @@ D03E6FCA 0000
9214 Zora Shop 9214 Zora Shop
B214 Snowhead (Path to temple - warp in) B214 Snowhead (Path to temple - warp in)
D214 East Clock Down D214 East Clock Down
$Time Control
Note=Control the speed of time with the D-pad. Up stops the time, left enables double time, and down restores the notmal speed.
D01FBC96 0008
811EF726 FFFD
D01FBC96 0004
811EF726 0000
D01FBC96 0002
811EF726 FFFE

View file

@ -388,3 +388,12 @@ Note=Put this code on and it will now take where you wanted to go, turn it back
9214 Zora Shop 9214 Zora Shop
B214 Snowhead (Path to temple - warp in) B214 Snowhead (Path to temple - warp in)
D214 East Clock Down D214 East Clock Down
$Time Control
Note=Control the speed of time with the D-pad. Up stops the time, left enables double time, and down restores the notmal speed.
D01F0496 0008
811E5496 FFFD
D01F0496 0004
811E5496 0000
D01F0496 0002
811E5496 FFFE

View file

@ -383,3 +383,12 @@ Note=Put this code on and it will now take where you wanted to go, turn it back
9214 Zora Shop 9214 Zora Shop
B214 Snowhead (Path to temple - warp in) B214 Snowhead (Path to temple - warp in)
D214 East Clock Down D214 East Clock Down
$Time Control
Note=Control the speed of time with the D-pad. Up stops the time, left enables double time, and down restores the notmal speed.
D01F8836 0008
811ED836 FFFD
D01F8836 0004
811ED836 0000
D01F8836 0002
811ED836 FFFE

View file

@ -418,3 +418,12 @@ D03E4CFA 0000
9214 Zora Shop 9214 Zora Shop
B214 Snowhead (Path to temple - warp in) B214 Snowhead (Path to temple - warp in)
D214 East Clock Down D214 East Clock Down
$Time Control
Note=Control the speed of time with the D-pad. Up stops the time, left enables double time, and down restores the notmal speed.
D01F88A0 0008
811ED846 FFFD
D01F88A0 0004
811ED846 0000
D01F88A0 0002
811ED846 FFFE

View file

@ -1,5 +1,5 @@
[C0F6DB17-80E0D532-C:44] [C0F6DB17-80E0D532-C:44]
Name=Armorines Project S. Name=Armorines - Project S.W.A.R.M. (G)
$[Press L For Levitate] $[Press L For Levitate]
D10F7550 0020 D10F7550 0020

View file

@ -394,3 +394,12 @@ Note=Put this code on and it will now take where you wanted to go, turn it back
9214 Zora Shop 9214 Zora Shop
B214 Snowhead (Path to temple - warp in) B214 Snowhead (Path to temple - warp in)
D214 East Clock Down D214 East Clock Down
$Time Control
Note=Control the speed of time with the D-pad. Up stops the time, left enables double time, and down restores the notmal speed.
D01F2D56 0008
811E6B66 FFFD
D01F2D56 0004
811E6B66 0000
D01F2D56 0002
811E6B66 FFFE

View file

@ -361,3 +361,12 @@ D05EC55A 0000
9214 Zora Shop 9214 Zora Shop
B214 Snowhead (Path to temple - warp in) B214 Snowhead (Path to temple - warp in)
D214 East Clock Down D214 East Clock Down
$Time Control
Note=Control the speed of time with the D-pad. Up stops the time, left enables double time, and down restores the notmal speed.
D01FBA40 0008
811EF476 FFFD
D01FBA40 0004
811EF476 0000
D01FBA40 0002
811EF476 FFFE

18
Package/AppImage/AppRun Normal file → Executable file
View file

@ -1,11 +1,11 @@
#!/usr/bin/env bash #!/usr/bin/env sh
set -e [ -f "$APPIMAGE".stylesheet ] && APPIMAGE_QT_THEME="$APPIMAGE.stylesheet"
[ -f "$APPIMAGE_QT_THEME" ] && set -- "$@" "-stylesheet" "$APPIMAGE_QT_THEME"
cur_dir="$(readlink -f "$(dirname "$0")")" cur_dir="$(readlink -f "$(dirname "$0")")"
exec "$cur_dir/usr/bin/RMG" \ exec "$cur_dir/bin/RMG" \
--lib-path="$cur_dir/usr/lib/RMG" \ --lib-path="$cur_dir/shared/lib/RMG" \
--core-path="$cur_dir/usr/lib/RMG/Core" \ --core-path="$cur_dir/shared/lib/RMG/Core" \
--plugin-path="$cur_dir/usr/lib/RMG/Plugin" \ --plugin-path="$cur_dir/shared/lib/RMG/Plugin" \
--shared-data-path="$cur_dir/usr/share/RMG" \ --shared-data-path="$cur_dir/share/RMG" \
"$@" "$@"

View file

@ -4,37 +4,80 @@ set -ex
script_dir="$(dirname "$0")" script_dir="$(dirname "$0")"
toplvl_dir="$(realpath "$script_dir/../../")" toplvl_dir="$(realpath "$script_dir/../../")"
bin_dir="$toplvl_dir/Bin/AppImage" # RMG should be installed here bin_dir="$toplvl_dir/Bin/AppImage" # RMG should be installed here
lib_dir="/usr/lib64"
export QMAKE="$(which qmake6)" XVFB_RUN="xvfb-run -a --"
export EXTRA_QT_PLUGINS="imageformats;iconengines;" LIB4BIN_URL="https://raw.githubusercontent.com/VHSgunzo/sharun/refs/heads/main/lib4bin"
APPIMAGETOOL_URL="https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage"
SHARUN_URL="https://github.com/VHSgunzo/sharun/releases/latest/download/sharun-x86_64"
export ARCH="$(uname -m)"
export APPIMAGE_EXTRACT_AND_RUN=1
export VERSION="$(git describe --tags --always)" export VERSION="$(git describe --tags --always)"
export OUTPUT="$bin_dir/../RMG-Portable-Linux64-$VERSION.AppImage" export OUTPUT="$bin_dir/../RMG-Portable-Linux64-$VERSION.AppImage"
export LD_LIBRARY_PATH="$toplvl_dir/build/Source/RMG-Core" # hack export LD_LIBRARY_PATH="$toplvl_dir/Build/AppImage/Source/RMG-Core" # hack
export SHARUN="$script_dir/sharun"
if [ ! -f "$script_dir/linuxdeploy-x86_64.AppImage" ] if [[ ! -f "$script_dir/lib4bin" ]]
then then
curl -L https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage \ curl -L "$LIB4BIN_URL" -o "$script_dir/lib4bin"
-o "$script_dir/linuxdeploy-x86_64.AppImage" chmod +x "$script_dir/lib4bin"
chmod +x "$script_dir/linuxdeploy-x86_64.AppImage"
fi fi
if [ ! -f "$script_dir/linuxdeploy-plugin-qt-x86_64.AppImage" ] if [[ ! -f "$script_dir/appimagetool" ]]
then then
curl -L https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage \ curl -L "$APPIMAGETOOL_URL" -o "$script_dir/appimagetool"
-o "$script_dir/linuxdeploy-plugin-qt-x86_64.AppImage" chmod +x "$script_dir/appimagetool"
chmod +x "$script_dir/linuxdeploy-plugin-qt-x86_64.AppImage"
fi fi
"$script_dir/linuxdeploy-plugin-qt-x86_64.AppImage" --appimage-extract if [[ ! -f "$script_dir/sharun" ]]
"$script_dir/linuxdeploy-x86_64.AppImage" --appimage-extract then
curl -L "$SHARUN_URL" -o "$script_dir/sharun"
chmod +x "$script_dir/sharun"
fi
# delete appimages if [[ "x$DISPLAY" != "x" ]]
rm "$script_dir/linuxdeploy-x86_64.AppImage" \ then
"$script_dir/linuxdeploy-plugin-qt-x86_64.AppImage" XVFB_RUN=""
fi
"$(pwd)/squashfs-root/AppRun" \ if [[ -d "/usr/lib/x86_64-linux-gnu/" ]]
--plugin=qt \ then
--appdir="$bin_dir" \ lib_dir="/usr/lib/x86_64-linux-gnu/"
--custom-apprun="$script_dir/AppRun" \ fi
--output=appimage \
--desktop-file="$bin_dir/usr/share/applications/com.github.Rosalie241.RMG.desktop" cp "$bin_dir/usr/share/applications/com.github.Rosalie241.RMG.desktop" "$bin_dir"
cp "$bin_dir/usr/share/icons/hicolor/scalable/apps/com.github.Rosalie241.RMG.svg" "$bin_dir"
ln -s ./com.github.Rosalie241.RMG.svg "$bin_dir"/.DirIcon
mv "$bin_dir/usr/share" "$bin_dir/share"
mv "$bin_dir/usr" "$bin_dir/shared"
$XVFB_RUN "$script_dir/lib4bin" --dst-dir "$bin_dir" \
--hard-links --strip --with-hooks \
--strace-mode --with-sharun \
"$bin_dir/shared/bin/RMG" \
"$lib_dir"/libSDL* \
"$lib_dir"/libspeexdsp* \
"$lib_dir"/libhidapi-hidraw* \
"$lib_dir"/libGL* \
"$lib_dir"/libEGL* \
"$lib_dir"/libvulkan* \
"$lib_dir"/dri/* \
"$lib_dir"/libssl.so* \
"$lib_dir"/qt6/plugins/iconengines/* \
"$lib_dir"/qt6/plugins/imageformats/* \
"$lib_dir"/qt6/plugins/platforms/* \
"$lib_dir"/qt6/plugins/platformthemes/* \
"$lib_dir"/qt6/plugins/styles/* \
"$lib_dir"/qt6/plugins/xcbglintegrations/* \
"$lib_dir"/qt6/plugins/tls/* \
"$lib_dir"/qt6/plugins/wayland-*/*
# Prepare sharun
"$bin_dir/sharun" -g
cp "$script_dir/AppRun" "$bin_dir"
# make appimage
"$script_dir/appimagetool" --comp zstd \
--mksquashfs-opt -Xcompression-level --mksquashfs-opt 22 \
-n "$bin_dir" "$OUTPUT"

View file

@ -1,14 +1,14 @@
# Maintainer: Rosalie Wanders <rosalie@mailbox.org> # Maintainer: Rosalie Wanders <rosalie@mailbox.org>
pkgname=rmg pkgname=rmg
pkgver=0.4.3 pkgver=0.7.9
pkgrel=1 pkgrel=2
pkgdesc="Rosalie's Mupen GUI" pkgdesc="Rosalie's Mupen GUI"
arch=('x86_64') arch=('x86_64' 'aarch64')
url="https://github.com/Rosalie241/$pkgname" url="https://github.com/Rosalie241/$pkgname"
license=('GPL3') license=('GPL3')
depends=("hidapi" "libsamplerate" "speexdsp" "minizip" "sdl2" "zlib" "freetype2" "qt6-base" "qt6-svg" "xdg-user-dirs") depends=("hidapi" "libsamplerate" "speexdsp" "minizip" "sdl2" "sdl2_net" "zlib" "freetype2" "qt6-base" "qt6-svg" "qt6-websockets")
makedepends=("git" "nasm" "cmake" "ninja") makedepends=("git" "nasm" "cmake" "vulkan-headers")
source=("git+https://github.com/Rosalie241/$pkgname.git#tag=v$pkgver") source=("git+https://github.com/Rosalie241/$pkgname.git#tag=v$pkgver")
sha256sums=('SKIP') sha256sums=('SKIP')
@ -25,7 +25,7 @@ build()
-DPORTABLE_INSTALL="OFF" \ -DPORTABLE_INSTALL="OFF" \
-DCMAKE_INSTALL_PREFIX="/usr" \ -DCMAKE_INSTALL_PREFIX="/usr" \
-DNO_RUST="ON" \ -DNO_RUST="ON" \
-G "Ninja" -G "Unix Makefiles"
cmake --build "$srcdir/$pkgname/build" cmake --build "$srcdir/$pkgname/build"
} }

63
Package/Fedora/RMG.spec Normal file
View file

@ -0,0 +1,63 @@
Name: RMG
Version: 0.7.9
Release: %autorelease
Summary: Rosalie's Mupen GUI
License: GPL-3.0-only
URL: https://github.com/Rosalie241/RMG
Source0: https://github.com/Rosalie241/RMG/archive/refs/tags/v%{version}.tar.gz
BuildRequires: gcc
BuildRequires: g++
BuildRequires: nasm
BuildRequires: cmake
BuildRequires: hidapi-devel
BuildRequires: libsamplerate-devel
BuildRequires: minizip-compat-devel
BuildRequires: SDL2-devel
BuildRequires: SDL2_net-devel
BuildRequires: freetype-devel
BuildRequires: mesa-libGL-devel
BuildRequires: mesa-libGLU-devel
BuildRequires: zlib-ng-devel
BuildRequires: binutils-devel
BuildRequires: speexdsp-devel
BuildRequires: qt6-qtbase-devel
BuildRequires: qt6-qtsvg-devel
BuildRequires: qt6-qtwebsockets-devel
BuildRequires: libxkbcommon-devel
Requires: hidapi
Requires: SDL2
Requires: SDL2_net
Requires: zlib-ng
Requires: libsamplerate
Requires: speexdsp
Requires: qt6-qtbase
Requires: qt6-qtsvg
Requires: qt6-qtwebsockets
%description
Rosalie's Mupen GUI is a free and open-source mupen64plus front-end written in C++
%prep
%autosetup
%build
%cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DPORTABLE_INSTALL=OFF -DDISCORD_RPC=OFF
%cmake_build
%install
%cmake_install
%files
/usr/bin/RMG
/usr/lib64/libRMG-Core.so
/usr/lib64/RMG/
/usr/share/RMG/
/usr/share/applications/com.github.Rosalie241.RMG.desktop
/usr/share/icons/hicolor/scalable/apps/com.github.Rosalie241.RMG.svg
/usr/share/metainfo/com.github.Rosalie241.RMG.metainfo.xml
%changelog
%autochangelog

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 276 KiB

After

Width:  |  Height:  |  Size: 460 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

View file

@ -1,431 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<!-- Copyright 2022 Rosalie Wanders -->
<component type="desktop">
<!--Created with jdAppdataEdit 2.1-->
<id>com.github.Rosalie241.RMG</id>
<name>Rosalie's Mupen GUI</name>
<summary>An easy to use &amp; cross-platform mupen64plus front-end written in C++ &amp; Qt</summary>
<developer_name>Rosalie</developer_name>
<launchable type="desktop-id">com.github.Rosalie241.RMG.desktop</launchable>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-3.0-only</project_license>
<description><p>Rosalie's Mupen GUI is an easy to use yet customizable mupen64plus front-end, allowing you to easily play N64 games.</p></description>
<screenshots>
<screenshot type="default">
<caption>01 - The Rom Browser</caption>
<image type="source">https://github.com/Rosalie241/RMG/raw/master/Package/Screenshots/RomBrowser.png</image>
</screenshot>
<screenshot type="default">
<caption>02 - During A Game</caption>
<image type="source">https://github.com/Rosalie241/RMG/raw/master/Package/Screenshots/InGame.png</image>
</screenshot>
<screenshot type="default">
<caption>03 - Cheats</caption>
<image type="source">https://github.com/Rosalie241/RMG/raw/master/Package/Screenshots/Cheats.png</image>
</screenshot>
<screenshot type="default">
<caption>04 - Settings</caption>
<image type="source">https://github.com/Rosalie241/RMG/raw/master/Package/Screenshots/Settings.png</image>
</screenshot>
<screenshot type="default">
<caption>05 - Input Settings</caption>
<image type="source">https://github.com/Rosalie241/RMG/raw/master/Package/Screenshots/InputSettings.png</image>
</screenshot>
</screenshots>
<releases>
<release version="v0.4.3" date="2023-07-11" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix minor corruption issues when using GLideN64 in Wave Race 64 and Space Station Silicon Valley</li>
<li>Fix some potential issues with out of bounds RDRAM reads (thank you loganmc10)</li>
<li>Fix ROM browser not updating entries when they've changed in the ROM database</li>
<li>Fix mupen64plus-rsp-hle not having a fallback configured (fixes Xeno Crisis not booting with mupen64plus-rsp-hle)</li>
<li>Fix Xeno Crisis showing an error message</li>
<li>Add Xeno Crisis to the ROM database</li>
</ul>
</description>
</release>
<release version="v0.4.2" date="2023-07-07" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix window behavior issues when saving GLideN64 settings while in-game</li>
<li>Add VRU support to RMG-Input</li>
<li>Add controller hotkey support to RMG-Input</li>
<li>Improve window title by using the ROM filename when the ROM isn't in the database</li>
</ul>
</description>
</release>
<release version="v0.4.1" date="2023-06-19" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix debug callbacks not printing before GUI has been started</li>
<li>Fix emulation error being incorrect in some cases</li>
<li>Fix user cheat file location (new ones will be placed in the user config directory instead of the user data directory)</li>
<li>Fix mupen64plus-input-gca crashing in v0.4.0 due to updating to a broken commit</li>
<li>Fix Paper Mario crashing when using the hammer on a specific tree in-game by implementing RDRAM address range 0x0800000-0x03EFFFFF</li>
<li>Improve accuracy of the pure and cached interpreter</li>
<li>Add *.st* and *.pj* to the file filter when loading a save state from a file</li>
</ul>
</description>
</release>
<release version="v0.4.0" date="2023-05-04" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix updater on windows always installing the desktop icon</li>
<li>Fix updater on windows not re-launching RMG after installation</li>
<li>Fix the speed limiter toggle and speed factor options not working on linux on some systems</li>
<li>Fix the 1080 Snowboarding cheats (thank you Gent)</li>
<li>Add support for moving the toolbar (changes to the docked position are persistent across application runs)</li>
<li>Update GLideN64 and mupen64plus-input-gca</li>
</ul>
</description>
</release>
<release version="v0.3.9" date="2023-04-06" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix "Don't check for updates again" checkbox appearing when requesting an update check through Help -> Check For Updates</li>
<li>Add game format, file name, file extension, file size, game I.D. and game region columns to the list view of the ROM browser which can be toggled in the "Show/Hide Columns" menu of the context menu in the list view of the ROM browser (thank you RetraCarteR)</li>
<li>Add "Reset Column Sizes" to context menu of the list view of the ROM browser (thank you RetraCarteR)</li>
<li>Add "Analog Stick Sensitivity" setting to RMG-Input (thank you JaxonWasTaken)</li>
<li>Add "Save Filename Format" setting to the Core tab of the settings dialog</li>
<li>Add "Edit Game Input Settings" to the context menu of the ROM browser</li>
<li>Add support for 7z files</li>
<li>Add progress status to the loading screen in the ROM browser when loading takes more than 5 seconds</li>
</ul>
</description>
</release>
<release version="v0.3.8" date="2023-02-24" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix RMG not having the correct video size in some cases (i.e on a WM where resizing is not allowed to be done by an application)</li>
<li>Fix translations not working in GLideN64</li>
<li>Add -n/--nogui commandline option</li>
<li>Add -d/--debug-messages commandline option</li>
<li>Add hotkeys for graphics, audio, RSP and input settings</li>
<li>Add hotkey for viewing the log</li>
<li>Add SIGINT and SIGTERM handling on linux</li>
<li>Add "Check For Updates" to "View" in the toolbar</li>
<li>Add information about LLE plugins in the settings dialog</li>
<li>Add support for toggling visibility of columns in the ROM browser list view (thank you RetraCarteR)</li>
<li>Add date and time to the save state slot items in "Current Save State" menu in the menubar</li>
<li>Add date and time to the OSD when selecting a save state slot</li>
<li>Add failure messages to the OSD when loading/saving a save state fails</li>
<li>Improve updater behavior by checking for an update on startup with at least an hour in-between checks</li>
</ul>
</description>
</release>
<release version="v0.3.7" date="2023-02-19" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix icons not showing up in some cases when migrating from a version before v0.3.6</li>
<li>Fix plugin settings not being loaded properly in the settings dialog when migrating from a version before v0.3.6</li>
</ul>
</description>
</release>
<release version="v0.3.6" date="2023-02-19" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix RMG not using xwayland when using wayland (wayland has lots of issues, can be disabled by building with the "-DFORCE_XCB=OFF" option)</li>
<li>Fix some non-fatal mupen64plus errors showing a pop-up</li>
<li>Fix window not returning to ROM browser when launching a game through the commandline and the plugins aren't ready</li>
<li>Add support for Qt stylesheets (place them in the 'user data directory/Styles' directory with the '.qss' extension, they'll show up in "Themes")</li>
<li>Add "Icon Theme" setting</li>
<li>Add "Speed Factor" to System menu bar</li>
<li>Add support for re-ordering columns in the list view of the ROM browser (thank you RetraCarteR)</li>
<li>Add AppImage to github releases (this replaces the old portable linux builds on github releases)</li>
</ul>
</description>
</release>
<release version="v0.3.5" date="2023-02-14" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix reset button not working properly in RMG-Input</li>
<li>Fix profiles not being deleted properly when clicking on cancel/close in some cases in RMG-Input</li>
<li>Fix paraLLEl not logging to the log window</li>
<li>Fix paraLLEl's odd window behavior by not saving the window size when emulation ends</li>
<li>Fix GLideN64 initializing a noise texture being slow</li>
<li>Fix issue where an unbound mapping in RMG-Input would respond to an A controller button press in-game</li>
<li>Fix issue where RMG-Input wouldn't save anything but the currently opened profile</li>
</ul>
</description>
</release>
<release version="v0.3.4" date="2023-02-11" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix mapping button size increasing when reloading settings in RMG-Input</li>
<li>Fix analog stick mapping in-game when having buttons and axis bound in RMG-Input</li>
<li>Fix height mismatch of "Profile" and "Input Device" UI elements in RMG-Input</li>
<li>Fix updater script not using the correct path seperators on Windows</li>
<li>Fix GLideN64's per game settings being overwritten by the updater on windows (or not being updated on linux)</li>
<li>Fix "Automatic" input device not opening controller device when clicking on 'Refresh' in RMG-Input</li>
<li>Fix game specific profile having unexpected UI behavior in RMG-Input</li>
<li>Fix cancel and close button not working correctly in RMG-Input</li>
<li>Fix profile saving not working correctly when having the same profile selected for multiple players in RMG-Input</li>
<li>Add "Filter Events Based On Joystick Type For Buttons" setting to RMG-Input</li>
<li>Add "Filter Events Based On Joystick Type For Axis" setting to RMG-Input</li>
</ul>
</description>
</release>
<release version="v0.3.3" date="2023-02-09" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Remove "Controller Is Plugged In" checkbox in RMG-Input</li>
<li>Remove text from 'Remove' button in RMG-Input</li>
<li>Add "None" input device to RMG-Input (replacing the "Controller Is Plugged In" checkbox)</li>
<li>Add "Automatic" input device to RMG-Input</li>
<li>Add support for creating profiles in RMG-Input</li>
<li>Add icons to 'Remove', 'Refresh', 'Reset' and 'Options' buttons in RMG-Input</li>
</ul>
</description>
</release>
<release version="v0.3.2" date="2023-02-06" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix ndd/d64 files in zip files not working when the disk file is inside a subdirectory inside the zip file</li>
<li>Fix ndd/d64 files in zip files not working correctly on windows</li>
<li>Fix controller image in RMG-Input sometimes being stuck when having a trigger bound to a button</li>
<li>Fix trigger mapping in RMG-Input</li>
<li>Remove "Invert Axis Mapped To LRZ" setting in RMG-Input</li>
<li>Add "Sort Results After Search" ROM Browser setting</li>
</ul>
</description>
</release>
<release version="v0.3.1" date="2023-02-04" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix taking a screenshot not working in some cases</li>
<li>Fix some games being unable to save due to having an illegal character in the save filename</li>
<li>Fix OSD tab crash in GLideN64</li>
<li>Fix an issue where the graphics plugin would show the 64DD IPL as ROM name in the settings even after booting a cartridge</li>
<li>Fix "Refresh ROM List" in Hotkeys tab in settings dialog not reverting back to defaults when clicking on 'restore defaults'</li>
<li>Fix "Remove Duplicate Keybindings" in settings dialog not behaving correctly in some cases</li>
<li>Fix fallback application icons not respecting system icon theme on linux</li>
<li>Add support for ndd/d64 files in zip files</li>
<li>Add support for using the basename of the ROM filename for covers</li>
<li>Add support for binding multiple inputs in RMG-Input</li>
<li>Improve behavior of window when launching RMG with a ROM using the commandline</li>
<li>Improve behavior of error message when emulation fails</li>
<li>Improve behavior of hotkey buttons in settings dialog</li>
</ul>
</description>
</release>
<release version="v0.3.0" date="2023-01-23" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix GLideN64 not being able to load texture packs from relative paths</li>
<li>Fix "Save State Slot" keybindings not working in fullscreen</li>
<li>Fix deadzone percentage being incorrect when set to 0% in RMG-Input</li>
<li>Fix low deadzone value not working in RMG-Input (thank you porcino)</li>
<li>Fix toolbar being hidden when ending emulation while in fullscreen</li>
<li>Fix zip files with japanese characters in the file name not being able to be opened on windows</li>
<li>Fix ROM Browser not returning to a maximized state when ending emulation</li>
<li>Fix ROM Browser not opening maximized when closing RMG with it maximized</li>
<li>Fix window not being able to be maximized during emulation when scaling is enabled</li>
<li>Fix read-only ROM files not being able to be opened on linux</li>
<li>Remove "Allow Manual Window Resizing" setting due to it being always enabled</li>
<li>Remove Styles tab from settings dialog on windows</li>
<li>Add "Play Game with Cartridge" to context menu when a 64DD disk is selected in the ROM Browser</li>
<li>Add "Open ROM Directory" to context menu in the ROM Browser</li>
<li>Add an On-Screen Display (see the OSD tab in the settings dialog for settings)</li>
<li>Add Theme setting to settings dialog (see Interface -> Miscellaneous, this is a replacement for the previous Styles settings)</li>
<li>Improve error message when opening a zip file fails</li>
<li>Improve tab order and naming in settings dialog</li>
</ul>
</description>
</release>
<release version="v0.2.9" date="2023-01-03" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix wrong 64DD Disk extension being listed in empty ROM browser</li>
<li>Fix memory corruption when having 64DD Disk files</li>
<li>Fix possible crash when render window wasn't visible yet</li>
<li>Fix RMG changing the current directory on non-portable installs</li>
<li>Remove Qt warning messages (you can view them by setting RMG_SHOW_DEBUG_QT_MESSAGES to 1)</li>
<li>Change "Choose ROM Directory" to "Change ROM Directory"</li>
<li>Add -q/--quit-after-emulation commandline option</li>
<li>Add 2 more icons to menubar menus/items</li>
<li>Add "Current Save State" tab to Hotkeys tab in settings dialog (this allows you to use a hotkey to change save state slots)</li>
<li>Improve behavior of Hotkeys tab in settings dialog</li>
<li>Improve behavior of window when exiting RMG while in-game</li>
</ul>
</description>
</release>
<release version="v0.2.8" date="2023-01-01" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix 'Uniform Size (Grid View)' not being disabled during emulation</li>
<li>Fix toolbar not respecting the view setting</li>
<li>Fix being stuck at the loading screen when having more ROMs than the ROM search limit</li>
<li>Improve error message when opening a ROM fails</li>
</ul>
</description>
</release>
<release version="v0.2.7" date="2022-12-29" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix core error not showing when the statusbar was hidden</li>
<li>Fix .ndd/.64d not being in the empty ROM Browser widget</li>
<li>Fix .jpg/.jpeg files not working on covers on Windows</li>
<li>Fix updater script not copying subdirectories on Windows (for portable installs)</li>
<li>Fix 64DD Disks which required the development IPL not working</li>
<li>Fix 64DD Disks showing the wrong internal ROM name (this fix requires clearing the ROM cache)</li>
<li>Fix cover filenames allowing invalid characters (they will now be replaced by _)</li>
<li>Add more icons to View menu in the menu bar</li>
<li>Add 'Uniform Size (Grid View)' to View menu in the menu bar</li>
<li>Add smooth scrolling to List View and Grid View</li>
</ul>
</description>
</release>
<release version="v0.2.6" date="2022-12-28" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix default save state/game directory being incorrect on first run (on non-portable installs)</li>
<li>Fix angrylion-rdp-plus not loading settings correctly</li>
<li>Fix cheat settings not moving over when renaming a cheat</li>
<li>Remove fullscreen resolution combobox from GLideN64 because it did nothing</li>
<li>Remove File menu from menu bar</li>
<li>Implement disk support without requiring a cartridge</li>
<li>Add toolbar</li>
<li>Add View menu to menu bar</li>
<li>Add Grid view to ROM browser</li>
<li>Add icons to all menu bar items</li>
<li>Add log dialog</li>
</ul>
</description>
</release>
<release version="v0.2.5" date="2022-12-14" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix incorrect controller being selected in RMG-Input when having 2 controllers with the same name</li>
<li>Fix some UI elements being enabled while the 'Controller Is Plugged In' checkbox is disabled in RMG-Input</li>
<li>Fix extra padding being added when having a controller selected and opening RMG-Input</li>
<li>Fix creating a new profile in GLideN64</li>
<li>Add Z-Trigger visualization in RMG-Input</li>
<li>Remove Debugger checkbox in the settings dialog because it did nothing</li>
<li>Remove About buttons in the plugin tab of the settings dialog because it did nothing</li>
<li>Implement close button on all dialogs</li>
<li>Implement custom style support (for Windows only)</li>
<li>Implement the ability to remove/reset the main profile in RMG-Input</li>
<li>Rename Interface tab in settings dialog to User Interface</li>
<li>Migrate to Qt6 (currently the flatpak will remain Qt5)</li>
</ul>
</description>
</release>
<release version="v0.2.4" date="2022-12-08" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix Discord Rich Presence breaking when opening the settings dialog</li>
<li>Fix install update window not showing</li>
<li>Fix 'Limit FPS' not working with new RMG-Audio (this disables the 'synchronize audio' option)</li>
<li>Implement support for Japanese characters in the ROM header</li>
<li>Implement dynamic buffer sizes in the ROM browser cache (this reduces the ROM browser cache size)</li>
<li>Add more cheats from Gent</li>
</ul>
</description>
</release>
<release version="v0.2.3" date="2022-12-05" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Add updater for portable installations</li>
<li>Add Discord Rich Presence</li>
</ul>
</description>
</release>
<release version="v0.2.2" date="2022-12-03" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix trivial resampler not being available in RMG-Audio</li>
<li>Fix save games/states showing up in multiple patched ROMs based on the same game</li>
</ul>
</description>
</release>
<release version="v0.2.1" date="2022-12-02" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Improve cheat error handling</li>
<li>Improve cheat dialog slightly (ok button is now disabled by default)</li>
<li>Improve RMG-Audio by using mupen64plus-audio-sdl as base</li>
<li>Add iQue cheats from Gent</li>
<li>Add CRLF support in cheat files</li>
<li>Add 'Remove Duplicate Keybindings' in settings dialog</li>
<li>Change maximum ROM browser cache items to 10000</li>
<li>Change default ROM browser limit to 250</li>
<li>Fix cheat settings being gone after opening the settings dialog in-game</li>
</ul>
</description>
</release>
<release version="v0.2.0" date="2022-11-29" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix out of bounds read in ROM browser cache</li>
<li>Fix --fullscreen not working like expected</li>
<li>Fix crash on windows when exiting</li>
<li>Implement octagon simulation in RMG-Input (thank you Jaxon)</li>
<li>implement cheat support</li>
<li>Add 'Invert Axis Mapped To LRZ' option to RMG-Input</li>
<li>Add --disk commandline argument (for opening N64 ROMs with 64DD disk files)</li>
<li>Add configuration GUI to angrylion-rdp-plus (thank you GhostlyDark)</li>
<li>Remove range setting from RMG-Input </li>
</ul>
</description>
</release>
<release version="v0.1.9" date="2022-11-19" type="stable"/>
<release version="v0.1.8" date="2022-11-17" type="stable"/>
<release version="v0.1.7" date="2022-11-14" type="stable"/>
<release version="v0.1.6" date="2022-09-12" type="stable"/>
<release version="v0.1.5" date="2022-09-10" type="stable"/>
<release version="v0.1.4" date="2022-03-13" type="stable"/>
<release version="v0.1.3" date="2022-02-14" type="stable"/>
<release version="v0.1.2" date="2022-01-21" type="stable"/>
<release version="v0.1.1" date="2022-01-19" type="stable"/>
<release version="v0.1.0" date="2022-01-07" type="stable"/>
<release version="v0.0.9" date="2021-12-25" type="stable"/>
<release version="v0.0.8" date="2021-12-24" type="stable"/>
<release version="v0.0.7" date="2021-12-23" type="stable"/>
<release version="v0.0.6" date="2021-10-18" type="stable"/>
<release version="v0.0.5" date="2021-10-17" type="stable"/>
<release version="v0.0.4" date="2021-10-06" type="stable"/>
<release version="v0.0.3" date="2021-10-04" type="stable"/>
<release version="v0.0.2" date="2021-09-26" type="stable"/>
</releases>
<url type="homepage">https://github.com/Rosalie241/RMG</url>
<url type="bugtracker">https://github.com/Rosalie241/RMG/issues</url>
<categories>
<category>Game</category>
<category>Emulator</category>
<category>Qt</category>
</categories>
<recommends>
<control>pointing</control>
<control>keyboard</control>
</recommends>
<content_rating type="oars-1.1"/>
<keywords>
<keyword>mupen64plus</keyword>
<keyword>RMG</keyword>
</keywords>
</component>

View file

@ -3,7 +3,9 @@ Type=Application
Name=Rosalie's Mupen GUI Name=Rosalie's Mupen GUI
Comment=An easy to use & cross-platform mupen64plus front-end written in C++ & Qt Comment=An easy to use & cross-platform mupen64plus front-end written in C++ & Qt
Exec=RMG %f Exec=RMG %f
TryExec=RMG
Icon=com.github.Rosalie241.RMG Icon=com.github.Rosalie241.RMG
Terminal=false Terminal=false
Categories=Game;Emulator;Qt; Categories=Game;Emulator;Qt;
MimeType=application/x-n64-rom; MimeType=application/x-n64-rom;
Keywords=emulator;mupen64plus;n64;RMG

View file

@ -0,0 +1,919 @@
<?xml version='1.0' encoding='utf-8'?>
<!-- Copyright 2024 Rosalie Wanders -->
<component type="desktop-application">
<!--Created with jdAppStreamEdit 9.1-->
<id>com.github.Rosalie241.RMG</id>
<name>Rosalie's Mupen GUI</name>
<summary>Play Nintendo 64 games easily</summary>
<developer id="com.github.rosalie241">
<name>Rosalie</name>
</developer>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-3.0-only</project_license>
<update_contact>rosalie@mailbox.org</update_contact>
<description>
<p>Rosalie's Mupen GUI is an easy to use yet customizable mupen64plus front-end, allowing you to easily play Nintendo 64 games.</p>
</description>
<screenshots>
<screenshot type="default">
<caption>The Rom Browser</caption>
<image type="source">https://github.com/Rosalie241/RMG/raw/master/Package/Screenshots/RomBrowser.png</image>
</screenshot>
<screenshot type="default">
<caption>During A Game</caption>
<image type="source">https://github.com/Rosalie241/RMG/raw/master/Package/Screenshots/InGame.png</image>
</screenshot>
<screenshot type="default">
<caption>Input Settings</caption>
<image type="source">https://github.com/Rosalie241/RMG/raw/master/Package/Screenshots/InputSettings.png</image>
</screenshot>
</screenshots>
<releases>
<release version="v0.7.9" date="2025-05-19" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix netplay allocating UDP packets during emulation</li>
<li>Fix 'Game List' and 'Game Grid' UI elements not being disabled during emulation</li>
<li>Fix compilation error with newer minizip-ng versions</li>
<li>Add search feature to the ROM browser</li>
<li>Add crop settings for each side in mupen64plus-video-parallel</li>
<li>Change default ROM search limit to 2048</li>
<li>Update mupen64plus-video-GLideN64 and mupen64plus-rsp-hle</li>
</ul>
</description>
</release>
<release version="v0.7.8" date="2025-03-23" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix ROM browser loading screen showing '[0/0]'</li>
<li>Fix configuration dialog of RMG-Input not closing when pressing escape</li>
<li>Fix AppImage not including libhidapi-hidraw</li>
<li>Fix AppImage not working on nvidia GPUs since v0.7.7 (thank you Samueru-sama)</li>
<li>Fix casing in error message in RMG-Core</li>
<li>Fix missing space for 'Start:' label in RMG-Input</li>
<li>Fix inconsistent height for UI elements in RMG-Input</li>
<li>Fix mupen64plus not being shutdown properly</li>
<li>Fix high memory requirement introduced in v0.7.1</li>
<li>Add bounds checking for some DMA operations</li>
<li>Add new controller image to RMG-Input (thank you Jaffacakelover)</li>
<li>Add support for using a local file path for the netplay server list URL</li>
<li>Swap Z-Trigger and Start UI elements in RMG-Input</li>
</ul>
</description>
</release>
<release version="v0.7.7" date="2025-03-05" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix error messages not being shown when initialization fails</li>
<li>Fix emulation error not being shown when launched with '--quit-after-emulation'</li>
<li>Fix AppImage not including libspeexdsp</li>
<li>Fix mupen64plus-video-parallel not respecting rdp full sync</li>
<li>Fix crash when quitting RMG while the ROM browser is refreshing</li>
<li>Fix initial column sizes being incorrect in some cases</li>
<li>Add exception handler for Windows which generates a minidump</li>
<li>Change "Join Session" to "Browse Sessions" in the Netplay menu</li>
<li>Change ROM browser cache limit to 250000</li>
<li>Remove "Synchronize RDP and CPU" setting from mupen64plus-video-parallel</li>
<li>Improve loading time of the ROM browser when there are invalid ROMs in the ROM directory</li>
</ul>
</description>
</release>
<release version="v0.7.6" date="2025-02-22" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix possible crash in parallel when vulkan initialization fails</li>
<li>Remove support for hotplugging controllers while in-game in RMG-Input</li>
</ul>
</description>
</release>
<release version="v0.7.5" date="2025-02-16" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix incorrect error message in RMG-Core</li>
<li>Fix possible crash on Windows (thank you Thirteen1355 for assisting with debugging)</li>
<li>Fix missing space between 'L-Shoulder' and 'R-Shoulder' in RMG-Input</li>
<li>Fix 'L-Trigger' and 'R-Trigger' names by changing it to 'L-Shoulder' and 'R-Shoulder' in RMG-Input</li>
<li>Improve opening time of 'Edit Game Input Settings' by utilizing the ROM browser cache</li>
<li>Improve configuration dialogs from plugins by setting the parent window</li>
</ul>
</description>
</release>
<release version="v0.7.4" date="2025-02-15" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix covers in JPEG format not loading on windows since v0.7.3</li>
<li>Fix RMG not inhibiting the screensaver during emulation</li>
<li>Fix not having supported archives listed when opening 64DD Disks through 'Open Combo'</li>
<li>Fix RMG-Audio spamming the log with sample warnings</li>
<li>Add captions to all file and directory dialogs</li>
<li>Improve logging when retrieving OpenGL context fails</li>
</ul>
</description>
</release>
<release version="v0.7.3" date="2025-02-09" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix portable windows version not being able to find update file</li>
<li>Fix cheat sections being able to be hidden in Netplay Session dialog</li>
<li>Fix 'You're already on the latest version' message being shown as an error</li>
<li>Fix empty messages being able to be sent in the Netplay Session dialog</li>
<li>Fix flicker in the Netplay Session Browser dialog</li>
<li>Fix 'Controller pak' typo in the settings dialog</li>
<li>Fix potential crashes when using the dynamic recompiler</li>
<li>Add cheats for Spanish translation of 007 The world is not enough, Conker's Bad Fur Day and Goldeneye 007 (thank you Pcgaming575)</li>
<li>Add 'View Session' to 'Netplay' menu allowing you to re-open the Netplay Session dialog after closing it when in-game</li>
<li>Improve message boxes by expanding the details by default</li>
<li>Improve windows build by building in an UCRT64 environment</li>
<li>Improve cheats dialog, settings dialog and ROM Information dialog opening time by utilizing the ROM browser cache</li>
<li>Implement register mirroring</li>
<li>Change 'RMG_WAYLAND' variable name to 'RMG_ALLOW_WAYLAND'</li>
<li>Remove 'Sort results after search' setting</li>
<li>Remove 'RMG_SHOW_DEBUG_QT_MESSAGES' variable</li>
<li>Update GLideN64 and paraLLEl</li>
</ul>
</description>
</release>
<release version="v0.7.2" date="2025-01-31" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix Log dialog and Netplay Session dialog not having a minimize button</li>
<li>Fix Netplay Session dialog not having an icon</li>
<li>Fix cheats not applying at emulation start</li>
<li>Improve netplay dialogs by saving and restoring the server selection</li>
<li>Improve netplay dialogs by adding icons to some buttons</li>
<li>Improve netplay dialogs by showing the ping</li>
<li>Improve device detection of RMG-Input</li>
<li>Implement cheat support for netplay</li>
</ul>
</description>
</release>
<release version="v0.7.1" date="2025-01-21" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix RDRAM initialization allowing for libdragon IPL3 to boot</li>
<li>Fix AppImage not working on some Linux distributions (thank you Samueru-sama)</li>
<li>Fix 64DD disks being shown in the Create Netplay Session dialog</li>
<li>Add support for ROMs that are bigger than 64MiB</li>
<li>Add support for launching a cartridge + disk combo where the disk is in an archive</li>
<li>Add stricter filename validation in the update dialog</li>
<li>Improve Netplay Session dialog by keeping it open while in-game</li>
<li>Improve 'Play Game with Disk' by turning it into a context menu</li>
</ul>
</description>
</release>
<release version="v0.7.0" date="2025-01-05" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix Netplay Session Browser dialog not resetting properly when requesting sessions fails</li>
<li>Fix freeze when opening the input configuration GUI from RMG-Input during netplay</li>
<li>Fix nickname validation not being consistent in the netplay dialogs</li>
<li>Fix downloading server list not having a timeout</li>
<li>Fix update check not having a timeout</li>
<li>Fix build failure when building with netplay disabled</li>
<li>Fix minimap in Mario Kart 64 not displaying properly during splitscreen in GLideN64</li>
</ul>
</description>
</release>
<release version="v0.6.9" date="2024-12-28" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix ROM browser storing multiple copies of the ROM information in memory</li>
<li>Fix game names in the Create Netplay Session dialog</li>
<li>Fix same CPU emulator setting being enforced during netplay</li>
<li>Fix VRU being able to be initialized during netplay</li>
<li>Fix enter key not clicking on the 'Send' button in the Netplay Session dialog</li>
<li>Fix vsync being able to be enabled during netplay</li>
<li>Fix 'Synchronize audio' in RMG-Audio being able to be enabled during netplay</li>
<li>Fix OSD tab of GLideN64 not listing all installed fonts on Linux</li>
<li>Add more error messages to the netplay dialogs</li>
<li>Add loading screen to the Netplay Session Browser dialog</li>
<li>Add no sessions screen to the Netplay Session Browser dialog</li>
<li>Add no ROMs screen to the Create Netplay Session dialog</li>
<li>Change default ROM search limit from 250 to 1024</li>
<li>Change 'Server URL' to 'Server list URL' in the settings dialog</li>
</ul>
</description>
</release>
<release version="v0.6.8" date="2024-12-22" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix crash on windows when opening a archive with files with an invalid character sequence</li>
<li>Fix video extension function definitions to prevent them from being exported</li>
<li>Implement netplay support (thank you loganmc10 for the hosted servers)</li>
</ul>
</description>
</release>
<release version="v0.6.7" date="2024-12-16" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix out of bounds read in game specific plugin settings</li>
<li>Fix inconsistent casing for the 'Left:' label in RMG-Input (thank you cursedUs64-git)</li>
<li>Fix incorrect error message in RMG-Core</li>
<li>Update mupen64plus-video-GLideN64, mupen64plus-core, LZMA SDK and SDL_GameControllerDB</li>
</ul>
</description>
</release>
<release version="v0.6.6" date="2024-09-30" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix mupen64plus-core URL in the about dialog</li>
<li>Fix GLideN64 not showing native path seperator in the configuration dialog</li>
<li>Add 'SDL controller mode' option to the options dialog of RMG-Input</li>
<li>Add 'None' option to configuration file of mupen64plus-input-gca (thank you GhostlyDark)</li>
<li>Update GLideN64, mupen64plus-core and SDL_GameControllerDB</li>
</ul>
</description>
</release>
<release version="v0.6.5" date="2024-07-04" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix not showing an error when per-game plugin settings are invalid</li>
<li>Fix settings dialog behavior for plugins not being the same for per-game plugin settings</li>
<li>Add 'restore defaults' button to configuration GUI of paraLLEl and angrylion-rdp-plus</li>
<li>Add 'OpenGL type' option to the settings dialog which allows choosing OpenGL ES</li>
<li>Add dynamic OpenGL ES detection to angrylion-rdp-plus</li>
<li>Improve screen size selection by making it editable in the configuration GUI of paraLLEl and angrylion-rdp-plus</li>
<li>Improve letter casing in settings dialog, RMG-Input and RMG-Audio</li>
<li>Improve about dialog</li>
<li>Change 'Miscellaneous' tab name to 'General' and change position in settings dialog</li>
<li>Update GLideN64 and SDL_GameControllerDB</li>
</ul>
</description>
</release>
<release version="v0.6.4" date="2024-06-25" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix soft and hard reset freezing RMG when using parallel-rsp</li>
<li>Add 'System Region' to ROM Information dialog</li>
<li>Add defaults for the audio hotkey settings</li>
<li>Improve settings dialog behavior when having plugins with the same name</li>
<li>Improve settings dialog behavior by sorting the plugins</li>
<li>Change audio resampler default to "src-linear" in RMG-Audio (thank you Fanatic-64)</li>
</ul>
</description>
</release>
<release version="v0.6.3" date="2024-06-24" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix possible memory leak in the cheat dialog</li>
<li>Add log messages when initializing OpenGL or Vulkan fails</li>
<li>Add PIF ROM settings to the settings dialog</li>
<li>Add Transfer Pak setting to the settings dialog</li>
<li>Improve settings dialog behavior when a plugin hasn't been found</li>
<li>Improve error messages by removing the exclamation mark</li>
</ul>
</description>
</release>
<release version="v0.6.2" date="2024-06-08" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix updater not working on windows with non-portable installs</li>
<li>Fix OSD not showing native path separator when saving and loading a state from a file</li>
<li>Fix statusbar message not being up-to-date in some cases</li>
<li>Fix GLideN64 regression introduced in v0.6.1</li>
<li>Fix cmake not making installed libraries executable</li>
<li>Add 'Project64 Save State' option when saving a state to a file</li>
<li>Revert update to mupen64plus-video-parallel (thank you themaister for looking into the regression)</li>
</ul>
</description>
</release>
<release version="v0.6.1" date="2024-06-05" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix vulkan video plugins crashing on second emulation run on some systems</li>
<li>Fix log dialog not showing a monospace font on windows</li>
<li>Remove settings dialog storing and restoring the window size</li>
<li>Add missing vsync option to angrylion-rdp-plus</li>
<li>Update imgui, mupen64plus-video-parallel, GLideN64 and SDL_GameControllerDB</li>
</ul>
</description>
</release>
<release version="v0.6.0" date="2024-05-24" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix 7z not being listed in the ROM browser when there are no ROMs found</li>
<li>Fix crash in GLideN64 with certain texture packs</li>
<li>Fix GLideN64 being able to create a large log file</li>
<li>Fix possible freezing by rate limiting callback messages</li>
<li>Update mupen64plus-core, angrylion-rdp-plus, GLideN64 and SDL_GameControllerDB</li>
</ul>
</description>
</release>
<release version="v0.5.9" date="2024-05-01" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix parallel-rsp regression introduced in v0.5.8</li>
<li>Fix corruption when using GLideN64 and resizing the window</li>
<li>Fix changing save state slot always selecting slot 0 on some system configurations</li>
<li>Fix changing speed factor always using 0% on some system configurations</li>
<li>Add color settings for the OSD in the settings dialog</li>
<li>Add 'Test Rumble' button to the options dialog in RMG-Input</li>
<li>Add 'Play Game with State' to the context menu of the ROM browser</li>
<li>Add '--load-state-slot' commandline option</li>
<li>Update cheats and GLideN64</li>
</ul>
</description>
</release>
<release version="v0.5.8" date="2024-03-25" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix incorrect usage of cmake's GNUInstallDirs (thank you OPNA2608)</li>
<li>Fix opening zipped ROMs when compiling with minizip-ng instead of minizip</li>
<li>Fix RMG with paraLLEl crashing in mesa when using musl libc (thank you orbea and nekopsykose)</li>
<li>Update GLideN64, parallel-rsp and SDL_GameControllerDB</li>
</ul>
</description>
</release>
<release version="v0.5.7" date="2024-01-26" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix backwards compatibility with older plugin setting format</li>
<li>Add NO_ASM build option to build mupen64plus-core without asm (thank you orbea)</li>
<li>Change default screenshot directory on Linux (thank you orbea)</li>
<li>Update mupen64plus-core</li>
</ul>
</description>
</release>
<release version="v0.5.6" date="2024-01-23" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix updater for portable installs on windows failing to extract the zip file</li>
<li>Fix Load State and View Log having the same default shortcut</li>
<li>Fix not being GPL compliant by disabling the building of angrylion-rdp-plus by default (thank you orbea and carmiker)</li>
<li>Fix installation not respecting CMAKE_INSTALL_LIBDIR</li>
<li>Fix third party projects not respecting CMAKE_C_FLAGS and CMAKE_CXX_FLAGS</li>
<li>Fix not all third party projects respecting the RelWithDebInfo configuration properly</li>
<li>Fix GLideN64 not installing correctly with the RelWithDebInfo configuration</li>
<li>Fix mupen64plus callbacks during initialization not showing up in the log window</li>
<li>Add a few GUI logging messages</li>
<li>Improve view log dialog behavior with clearing the log</li>
<li>Update copyright year in the about dialog (thank you JakobDev)</li>
</ul>
</description>
</release>
<release version="v0.5.5" date="2024-01-14" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Add TryExec to desktop file (thank you JakobDev)</li>
<li>Update mupen64plus-core, parallel-rsp, mupen64plus-rsp-hle, GLideN64 and SDL_GameControllerDB</li>
</ul>
</description>
</release>
<release version="v0.5.4" date="2023-12-17" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix issue with vulkan video plugins</li>
</ul>
</description>
</release>
<release version="v0.5.3" date="2023-12-17" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix some error messages not being shown when there are a lot of errors</li>
<li>Fix cheat dialog not allowing empty lines</li>
<li>Fix forward slashes being displayed in paths on windows</li>
<li>Fix some timers starting before plugins are ready</li>
<li>Improve video size behavior by ensuring the video size matches the window size</li>
<li>Update mupen64plus-core, GLideN64 and SDL_GameControllerDB</li>
</ul>
</description>
</release>
<release version="v0.5.2" date="2023-09-06" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix drag and drop not working in the loading screen of the ROM browser</li>
<li>Fix ROM browser not refreshing when launching RMG with a ROM specified through the commandline, using drag and drop and then returning to the ROM browser</li>
<li>Fix ROM browser refreshing with '--quit-after-emulation' specified through the commandline after a ROM has finished executing causing some extra debug callbacks to be displayed</li>
<li>Fix ROMs which have a ROM header name with 20 characters without a 0 byte at the end (fixes a crash on windows)</li>
<li>Improve build process by automatically detecting whether 'std::format' is supported or not (if not, use libfmt)</li>
<li>Improve message box behavior when there are a lot of errors</li>
<li>Improve default directories on windows (it'll now use '%APPDATA%\RMG' unless 'portable.txt' or 'Config\mupen64plus.cfg' exists)</li>
</ul>
</description>
</release>
<release version="v0.5.1" date="2023-08-27" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix window title of the windows installer</li>
<li>Fix video plugins which use vulkan not working on some Linux distributions</li>
<li>Fix 'Edit Game Input Settings' not saving settings when changing certain settings</li>
<li>Fix crash when having the RMG-Input configuration GUI open and closing RMG with control+c on Linux</li>
<li>Fix 'open_rom(): not a valid ROM image' error showing up sometimes when launching RMG with a ROM specified on the commandline</li>
<li>Update mupen64plus-core, GLideN64, paraLLEl and SDL_GameControllerDB</li>
</ul>
</description>
</release>
<release version="v0.5.0" date="2023-08-12" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix AppImage not working on LTS distributions</li>
<li>Fix audio issues by reverting the audio changes from v0.4.8</li>
</ul>
</description>
</release>
<release version="v0.4.9" date="2023-08-12" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix crash when opening the per-game settings</li>
<li>Add support for using libfmt when the compiler doesn't support std::format</li>
</ul>
</description>
</release>
<release version="v0.4.8" date="2023-08-11" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix undo and redo stack not being cleared in the edit cheat dialog</li>
<li>Add hotkeys to increase, decrease and mute the volume (see the new Audio tab in the Hotkeys tab of the settings dialog)</li>
<li>Add support for drag and drop (the flatpak has it disabled due to Qt not supporting drag and drop in the file portal yet)</li>
<li>Add an implementation selection in RMG-Audio (see the advanced audio settings, the simple implementation might solve some audio issues for some people)</li>
<li>Improve loading time duration of the ROM browser (the ROM browser should load faster when ROM entries are in the ROM browser cache)</li>
<li>Improve control stick behavior in RMG-Input (thank you kev4cards)</li>
<li>Improve cheats and settings code in RMG-Core</li>
</ul>
</description>
</release>
<release version="v0.4.7" date="2023-08-05" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix diagonals not working for joystick hats in RMG-Input</li>
<li>Fix visualization of joystick hats in the configuration GUI of RMG-Input</li>
<li>Fix "Hide Cursor During Fullscreen Emulation" not working when using a Vulkan video plugin</li>
<li>Improve VRU initialization code in RMG-Input</li>
<li>Update SDL_GameControllerDB</li>
</ul>
</description>
</release>
<release version="v0.4.6" date="2023-08-04" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix copying a string out-of-bounds in RMG-Core</li>
<li>Fix memory leak in GLideN64</li>
<li>Add experimental support for wayland on linux (you can enable it by setting RMG_WAYLAND to 1)</li>
<li>Add RMG, mupen64plus and n64 keywords to the desktop file (thank you loganmc10)</li>
<li>Add joystick hat support to RMG-Input</li>
<li>Add native vulkan support (video plugins can now use vulkan natively without having to use OpenGL for presentation)</li>
<li>Add current render mode to the status bar (OpenGL or Vulkan)</li>
<li>Add information regarding the On-Screen display to the OSD tab of the settings dialog (the OSD will only work with OpenGL video plugins)</li>
<li>Improve build process by building with LTO and stripping release binaries</li>
<li>Update mupen64plus-video-parallel</li>
</ul>
</description>
</release>
<release version="v0.4.5" date="2023-07-19" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix "Change" buttons in the transfer pak tab of the options dialog of RMG-Input not working since v0.4.2</li>
</ul>
</description>
</release>
<release version="v0.4.4" date="2023-07-17" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix memory leak when using a 64DD disk in an archive</li>
<li>Fix fallback of mupen64plus-rsp-hle not working on first run</li>
<li>Fix 'Screenshot Captured' OSD message not appearing when using controller hotkeys</li>
<li>Fix dynamic recompiler crashing on ARM64 since v0.4.1</li>
<li>Add support for joysticks/triggers for hotkeys in RMG-Input</li>
<li>Add hotkeys for increasing and decreasing the save state slot in RMG-Input</li>
<li>Add hotkeys for switching controller paks in RMG-Input</li>
<li>Improve deadzone and sensitivity code in RMG-Input (thank you JaxonWasTaken)</li>
</ul>
</description>
</release>
<release version="v0.4.3" date="2023-07-11" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix minor corruption issues when using GLideN64 in Wave Race 64 and Space Station Silicon Valley</li>
<li>Fix some potential issues with out of bounds RDRAM reads (thank you loganmc10)</li>
<li>Fix ROM browser not updating entries when they've changed in the ROM database</li>
<li>Fix mupen64plus-rsp-hle not having a fallback configured (fixes Xeno Crisis not booting with mupen64plus-rsp-hle)</li>
<li>Fix Xeno Crisis showing an error message</li>
<li>Add Xeno Crisis to the ROM database</li>
</ul>
</description>
</release>
<release version="v0.4.2" date="2023-07-07" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix window behavior issues when saving GLideN64 settings while in-game</li>
<li>Add VRU support to RMG-Input</li>
<li>Add controller hotkey support to RMG-Input</li>
<li>Improve window title by using the ROM filename when the ROM isn't in the database</li>
</ul>
</description>
</release>
<release version="v0.4.1" date="2023-06-19" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix debug callbacks not printing before GUI has been started</li>
<li>Fix emulation error being incorrect in some cases</li>
<li>Fix user cheat file location (new ones will be placed in the user config directory instead of the user data directory)</li>
<li>Fix mupen64plus-input-gca crashing in v0.4.0 due to updating to a broken commit</li>
<li>Fix Paper Mario crashing when using the hammer on a specific tree in-game by implementing RDRAM address range 0x0800000-0x03EFFFFF</li>
<li>Improve accuracy of the pure and cached interpreter</li>
<li>Add *.st* and *.pj* to the file filter when loading a save state from a file</li>
</ul>
</description>
</release>
<release version="v0.4.0" date="2023-05-04" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix updater on windows always installing the desktop icon</li>
<li>Fix updater on windows not re-launching RMG after installation</li>
<li>Fix the speed limiter toggle and speed factor options not working on linux on some systems</li>
<li>Fix the 1080 Snowboarding cheats (thank you Gent)</li>
<li>Add support for moving the toolbar (changes to the docked position are persistent across application runs)</li>
<li>Update GLideN64 and mupen64plus-input-gca</li>
</ul>
</description>
</release>
<release version="v0.3.9" date="2023-04-06" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix "Don't check for updates again" checkbox appearing when requesting an update check through Help -&gt; Check For Updates</li>
<li>Add game format, file name, file extension, file size, game I.D. and game region columns to the list view of the ROM browser which can be toggled in the "Show/Hide Columns" menu of the context menu in the list view of the ROM browser (thank you RetraCarteR)</li>
<li>Add "Reset Column Sizes" to context menu of the list view of the ROM browser (thank you RetraCarteR)</li>
<li>Add "Analog Stick Sensitivity" setting to RMG-Input (thank you JaxonWasTaken)</li>
<li>Add "Save Filename Format" setting to the Core tab of the settings dialog</li>
<li>Add "Edit Game Input Settings" to the context menu of the ROM browser</li>
<li>Add support for 7z files</li>
<li>Add progress status to the loading screen in the ROM browser when loading takes more than 5 seconds</li>
</ul>
</description>
</release>
<release version="v0.3.8" date="2023-02-24" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix RMG not having the correct video size in some cases (i.e on a WM where resizing is not allowed to be done by an application)</li>
<li>Fix translations not working in GLideN64</li>
<li>Add -n/--nogui commandline option</li>
<li>Add -d/--debug-messages commandline option</li>
<li>Add hotkeys for graphics, audio, RSP and input settings</li>
<li>Add hotkey for viewing the log</li>
<li>Add SIGINT and SIGTERM handling on linux</li>
<li>Add "Check For Updates" to "View" in the toolbar</li>
<li>Add information about LLE plugins in the settings dialog</li>
<li>Add support for toggling visibility of columns in the ROM browser list view (thank you RetraCarteR)</li>
<li>Add date and time to the save state slot items in "Current Save State" menu in the menubar</li>
<li>Add date and time to the OSD when selecting a save state slot</li>
<li>Add failure messages to the OSD when loading/saving a save state fails</li>
<li>Improve updater behavior by checking for an update on startup with at least an hour in-between checks</li>
</ul>
</description>
</release>
<release version="v0.3.7" date="2023-02-19" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix icons not showing up in some cases when migrating from a version before v0.3.6</li>
<li>Fix plugin settings not being loaded properly in the settings dialog when migrating from a version before v0.3.6</li>
</ul>
</description>
</release>
<release version="v0.3.6" date="2023-02-19" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix RMG not using xwayland when using wayland (wayland has lots of issues, can be disabled by building with the "-DFORCE_XCB=OFF" option)</li>
<li>Fix some non-fatal mupen64plus errors showing a pop-up</li>
<li>Fix window not returning to ROM browser when launching a game through the commandline and the plugins aren't ready</li>
<li>Add support for Qt stylesheets (place them in the 'user data directory/Styles' directory with the '.qss' extension, they'll show up in "Themes")</li>
<li>Add "Icon Theme" setting</li>
<li>Add "Speed Factor" to System menu bar</li>
<li>Add support for re-ordering columns in the list view of the ROM browser (thank you RetraCarteR)</li>
<li>Add AppImage to github releases (this replaces the old portable linux builds on github releases)</li>
</ul>
</description>
</release>
<release version="v0.3.5" date="2023-02-14" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix reset button not working properly in RMG-Input</li>
<li>Fix profiles not being deleted properly when clicking on cancel/close in some cases in RMG-Input</li>
<li>Fix paraLLEl not logging to the log window</li>
<li>Fix paraLLEl's odd window behavior by not saving the window size when emulation ends</li>
<li>Fix GLideN64 initializing a noise texture being slow</li>
<li>Fix issue where an unbound mapping in RMG-Input would respond to an A controller button press in-game</li>
<li>Fix issue where RMG-Input wouldn't save anything but the currently opened profile</li>
</ul>
</description>
</release>
<release version="v0.3.4" date="2023-02-11" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix mapping button size increasing when reloading settings in RMG-Input</li>
<li>Fix analog stick mapping in-game when having buttons and axis bound in RMG-Input</li>
<li>Fix height mismatch of "Profile" and "Input Device" UI elements in RMG-Input</li>
<li>Fix updater script not using the correct path seperators on Windows</li>
<li>Fix GLideN64's per game settings being overwritten by the updater on windows (or not being updated on linux)</li>
<li>Fix "Automatic" input device not opening controller device when clicking on 'Refresh' in RMG-Input</li>
<li>Fix game specific profile having unexpected UI behavior in RMG-Input</li>
<li>Fix cancel and close button not working correctly in RMG-Input</li>
<li>Fix profile saving not working correctly when having the same profile selected for multiple players in RMG-Input</li>
<li>Add "Filter Events Based On Joystick Type For Buttons" setting to RMG-Input</li>
<li>Add "Filter Events Based On Joystick Type For Axis" setting to RMG-Input</li>
</ul>
</description>
</release>
<release version="v0.3.3" date="2023-02-09" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Remove "Controller Is Plugged In" checkbox in RMG-Input</li>
<li>Remove text from 'Remove' button in RMG-Input</li>
<li>Add "None" input device to RMG-Input (replacing the "Controller Is Plugged In" checkbox)</li>
<li>Add "Automatic" input device to RMG-Input</li>
<li>Add support for creating profiles in RMG-Input</li>
<li>Add icons to 'Remove', 'Refresh', 'Reset' and 'Options' buttons in RMG-Input</li>
</ul>
</description>
</release>
<release version="v0.3.2" date="2023-02-06" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix ndd/d64 files in zip files not working when the disk file is inside a subdirectory inside the zip file</li>
<li>Fix ndd/d64 files in zip files not working correctly on windows</li>
<li>Fix controller image in RMG-Input sometimes being stuck when having a trigger bound to a button</li>
<li>Fix trigger mapping in RMG-Input</li>
<li>Remove "Invert Axis Mapped To LRZ" setting in RMG-Input</li>
<li>Add "Sort Results After Search" ROM Browser setting</li>
</ul>
</description>
</release>
<release version="v0.3.1" date="2023-02-04" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix taking a screenshot not working in some cases</li>
<li>Fix some games being unable to save due to having an illegal character in the save filename</li>
<li>Fix OSD tab crash in GLideN64</li>
<li>Fix an issue where the graphics plugin would show the 64DD IPL as ROM name in the settings even after booting a cartridge</li>
<li>Fix "Refresh ROM List" in Hotkeys tab in settings dialog not reverting back to defaults when clicking on 'restore defaults'</li>
<li>Fix "Remove Duplicate Keybindings" in settings dialog not behaving correctly in some cases</li>
<li>Fix fallback application icons not respecting system icon theme on linux</li>
<li>Add support for ndd/d64 files in zip files</li>
<li>Add support for using the basename of the ROM filename for covers</li>
<li>Add support for binding multiple inputs in RMG-Input</li>
<li>Improve behavior of window when launching RMG with a ROM using the commandline</li>
<li>Improve behavior of error message when emulation fails</li>
<li>Improve behavior of hotkey buttons in settings dialog</li>
</ul>
</description>
</release>
<release version="v0.3.0" date="2023-01-23" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix GLideN64 not being able to load texture packs from relative paths</li>
<li>Fix "Save State Slot" keybindings not working in fullscreen</li>
<li>Fix deadzone percentage being incorrect when set to 0% in RMG-Input</li>
<li>Fix low deadzone value not working in RMG-Input (thank you porcino)</li>
<li>Fix toolbar being hidden when ending emulation while in fullscreen</li>
<li>Fix zip files with japanese characters in the file name not being able to be opened on windows</li>
<li>Fix ROM Browser not returning to a maximized state when ending emulation</li>
<li>Fix ROM Browser not opening maximized when closing RMG with it maximized</li>
<li>Fix window not being able to be maximized during emulation when scaling is enabled</li>
<li>Fix read-only ROM files not being able to be opened on linux</li>
<li>Remove "Allow Manual Window Resizing" setting due to it being always enabled</li>
<li>Remove Styles tab from settings dialog on windows</li>
<li>Add "Play Game with Cartridge" to context menu when a 64DD disk is selected in the ROM Browser</li>
<li>Add "Open ROM Directory" to context menu in the ROM Browser</li>
<li>Add an On-Screen Display (see the OSD tab in the settings dialog for settings)</li>
<li>Add Theme setting to settings dialog (see Interface -&gt; Miscellaneous, this is a replacement for the previous Styles settings)</li>
<li>Improve error message when opening a zip file fails</li>
<li>Improve tab order and naming in settings dialog</li>
</ul>
</description>
</release>
<release version="v0.2.9" date="2023-01-03" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix wrong 64DD Disk extension being listed in empty ROM browser</li>
<li>Fix memory corruption when having 64DD Disk files</li>
<li>Fix possible crash when render window wasn't visible yet</li>
<li>Fix RMG changing the current directory on non-portable installs</li>
<li>Remove Qt warning messages (you can view them by setting RMG_SHOW_DEBUG_QT_MESSAGES to 1)</li>
<li>Change "Choose ROM Directory" to "Change ROM Directory"</li>
<li>Add -q/--quit-after-emulation commandline option</li>
<li>Add 2 more icons to menubar menus/items</li>
<li>Add "Current Save State" tab to Hotkeys tab in settings dialog (this allows you to use a hotkey to change save state slots)</li>
<li>Improve behavior of Hotkeys tab in settings dialog</li>
<li>Improve behavior of window when exiting RMG while in-game</li>
</ul>
</description>
</release>
<release version="v0.2.8" date="2023-01-01" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix 'Uniform Size (Grid View)' not being disabled during emulation</li>
<li>Fix toolbar not respecting the view setting</li>
<li>Fix being stuck at the loading screen when having more ROMs than the ROM search limit</li>
<li>Improve error message when opening a ROM fails</li>
</ul>
</description>
</release>
<release version="v0.2.7" date="2022-12-29" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix core error not showing when the statusbar was hidden</li>
<li>Fix .ndd/.64d not being in the empty ROM Browser widget</li>
<li>Fix .jpg/.jpeg files not working on covers on Windows</li>
<li>Fix updater script not copying subdirectories on Windows (for portable installs)</li>
<li>Fix 64DD Disks which required the development IPL not working</li>
<li>Fix 64DD Disks showing the wrong internal ROM name (this fix requires clearing the ROM cache)</li>
<li>Fix cover filenames allowing invalid characters (they will now be replaced by _)</li>
<li>Add more icons to View menu in the menu bar</li>
<li>Add 'Uniform Size (Grid View)' to View menu in the menu bar</li>
<li>Add smooth scrolling to List View and Grid View</li>
</ul>
</description>
</release>
<release version="v0.2.6" date="2022-12-28" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix default save state/game directory being incorrect on first run (on non-portable installs)</li>
<li>Fix angrylion-rdp-plus not loading settings correctly</li>
<li>Fix cheat settings not moving over when renaming a cheat</li>
<li>Remove fullscreen resolution combobox from GLideN64 because it did nothing</li>
<li>Remove File menu from menu bar</li>
<li>Implement disk support without requiring a cartridge</li>
<li>Add toolbar</li>
<li>Add View menu to menu bar</li>
<li>Add Grid view to ROM browser</li>
<li>Add icons to all menu bar items</li>
<li>Add log dialog</li>
</ul>
</description>
</release>
<release version="v0.2.5" date="2022-12-14" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix incorrect controller being selected in RMG-Input when having 2 controllers with the same name</li>
<li>Fix some UI elements being enabled while the 'Controller Is Plugged In' checkbox is disabled in RMG-Input</li>
<li>Fix extra padding being added when having a controller selected and opening RMG-Input</li>
<li>Fix creating a new profile in GLideN64</li>
<li>Add Z-Trigger visualization in RMG-Input</li>
<li>Remove Debugger checkbox in the settings dialog because it did nothing</li>
<li>Remove About buttons in the plugin tab of the settings dialog because it did nothing</li>
<li>Implement close button on all dialogs</li>
<li>Implement custom style support (for Windows only)</li>
<li>Implement the ability to remove/reset the main profile in RMG-Input</li>
<li>Rename Interface tab in settings dialog to User Interface</li>
<li>Migrate to Qt6 (currently the flatpak will remain Qt5)</li>
</ul>
</description>
</release>
<release version="v0.2.4" date="2022-12-08" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix Discord Rich Presence breaking when opening the settings dialog</li>
<li>Fix install update window not showing</li>
<li>Fix 'Limit FPS' not working with new RMG-Audio (this disables the 'synchronize audio' option)</li>
<li>Implement support for Japanese characters in the ROM header</li>
<li>Implement dynamic buffer sizes in the ROM browser cache (this reduces the ROM browser cache size)</li>
<li>Add more cheats from Gent</li>
</ul>
</description>
</release>
<release version="v0.2.3" date="2022-12-05" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Add updater for portable installations</li>
<li>Add Discord Rich Presence</li>
</ul>
</description>
</release>
<release version="v0.2.2" date="2022-12-03" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix trivial resampler not being available in RMG-Audio</li>
<li>Fix save games/states showing up in multiple patched ROMs based on the same game</li>
</ul>
</description>
</release>
<release version="v0.2.1" date="2022-12-02" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Improve cheat error handling</li>
<li>Improve cheat dialog slightly (ok button is now disabled by default)</li>
<li>Improve RMG-Audio by using mupen64plus-audio-sdl as base</li>
<li>Add iQue cheats from Gent</li>
<li>Add CRLF support in cheat files</li>
<li>Add 'Remove Duplicate Keybindings' in settings dialog</li>
<li>Change maximum ROM browser cache items to 10000</li>
<li>Change default ROM browser limit to 250</li>
<li>Fix cheat settings being gone after opening the settings dialog in-game</li>
</ul>
</description>
</release>
<release version="v0.2.0" date="2022-11-29" type="stable">
<description>
<p>Changes:</p>
<ul>
<li>Fix out of bounds read in ROM browser cache</li>
<li>Fix --fullscreen not working like expected</li>
<li>Fix crash on windows when exiting</li>
<li>Implement octagon simulation in RMG-Input (thank you Jaxon)</li>
<li>Implement cheat support</li>
<li>Add 'Invert Axis Mapped To LRZ' option to RMG-Input</li>
<li>Add --disk commandline argument (for opening N64 ROMs with 64DD disk files)</li>
<li>Add configuration GUI to angrylion-rdp-plus (thank you GhostlyDark)</li>
<li>Remove range setting from RMG-Input </li>
</ul>
</description>
</release>
<release version="v0.1.9" date="2022-11-19" type="stable"/>
<release version="v0.1.8" date="2022-11-17" type="stable"/>
<release version="v0.1.7" date="2022-11-14" type="stable"/>
<release version="v0.1.6" date="2022-09-12" type="stable"/>
<release version="v0.1.5" date="2022-09-10" type="stable"/>
<release version="v0.1.4" date="2022-03-13" type="stable"/>
<release version="v0.1.3" date="2022-02-14" type="stable"/>
<release version="v0.1.2" date="2022-01-21" type="stable"/>
<release version="v0.1.1" date="2022-01-19" type="stable"/>
<release version="v0.1.0" date="2022-01-07" type="stable"/>
<release version="v0.0.9" date="2021-12-25" type="stable"/>
<release version="v0.0.8" date="2021-12-24" type="stable"/>
<release version="v0.0.7" date="2021-12-23" type="stable"/>
<release version="v0.0.6" date="2021-10-18" type="stable"/>
<release version="v0.0.5" date="2021-10-17" type="stable"/>
<release version="v0.0.4" date="2021-10-06" type="stable"/>
<release version="v0.0.3" date="2021-10-04" type="stable"/>
<release version="v0.0.2" date="2021-09-26" type="stable"/>
</releases>
<url type="homepage">https://github.com/Rosalie241/RMG</url>
<url type="bugtracker">https://github.com/Rosalie241/RMG/issues</url>
<categories>
<category>Game</category>
<category>Emulator</category>
<category>Qt</category>
</categories>
<recommends>
<control>pointing</control>
<control>keyboard</control>
<control>gamepad</control>
</recommends>
<supports>
<control>voice</control>
</supports>
<content_rating type="oars-1.1"/>
<launchable type="desktop-id">com.github.Rosalie241.RMG.desktop</launchable>
<keywords>
<keyword>mupen64plus</keyword>
<keyword>RMG</keyword>
</keywords>
</component>

View file

@ -1,6 +1,6 @@
# Rosalie's Mupen GUI # Rosalie's Mupen GUI
Rosalie's Mupen GUI is a free and open-source mupen64plus GUI written in C++. Rosalie's Mupen GUI is a free and open-source mupen64plus front-end written in C++.
It offers a simple-to-use user interface. It offers a simple-to-use user interface.
@ -14,6 +14,7 @@ You can download Rosalie's Mupen GUI on
* [Github Releases (AppImage)](https://github.com/Rosalie241/RMG/releases) * [Github Releases (AppImage)](https://github.com/Rosalie241/RMG/releases)
* [Flathub (Flatpak)](https://flathub.org/apps/details/com.github.Rosalie241.RMG) * [Flathub (Flatpak)](https://flathub.org/apps/details/com.github.Rosalie241.RMG)
* [Arch User Repository](https://aur.archlinux.org/packages/rmg) * [Arch User Repository](https://aur.archlinux.org/packages/rmg)
* [Fedora COPR](https://copr.fedorainfracloud.org/coprs/rosalie/RMG/)
## Support ## Support
@ -37,13 +38,25 @@ Rosalie's Mupen GUI is licensed under the [GNU General Public License v3.0](http
* Portable Debian/Ubuntu * Portable Debian/Ubuntu
```bash ```bash
sudo apt-get -y install cmake libhidapi-dev libsamplerate0-dev libspeex-dev libminizip-dev libsdl2-dev libfreetype6-dev libgl1-mesa-dev libglu1-mesa-dev pkg-config zlib1g-dev binutils-dev libspeexdsp-dev qt6-base-dev libqt6svg6-dev build-essential nasm git zip ninja-build sudo apt-get -y install cmake libhidapi-dev libsamplerate0-dev libspeex-dev libminizip-dev libsdl2-dev libfreetype6-dev libgl1-mesa-dev libglu1-mesa-dev pkg-config zlib1g-dev binutils-dev libspeexdsp-dev qt6-base-dev libqt6svg6-dev libvulkan-dev build-essential nasm git zip ninja-build
./Source/Script/Build.sh Release ./Source/Script/Build.sh Release
``` ```
* Portable Fedora * Portable Fedora
```bash ```bash
sudo dnf install hidapi-devel libsamplerate-devel minizip-compat-devel SDL2-devel freetype-devel mesa-libGL-devel mesa-libGLU-devel zlib-ng-devel binutils-devel speexdsp-devel qt6-qtbase-devel qt6-qtsvg-devel gcc-c++ nasm git ninja-build sudo dnf install hidapi-devel libsamplerate-devel minizip-compat-devel SDL2-devel freetype-devel mesa-libGL-devel mesa-libGLU-devel pkgconfig zlib-ng-devel binutils-devel speexdsp-devel qt6-qtbase-devel qt6-qtsvg-devel vulkan-devel gcc-c++ nasm git ninja-build
./Source/Script/Build.sh Release
```
* Portable Arch Linux
```bash
sudo pacman -S --needed make cmake gcc hidapi freetype2 libpng qt6 sdl2 libsamplerate nasm minizip pkgconf vulkan-headers git
./Source/Script/Build.sh Release
```
* Portable OpenSUSE Tumbleweed
```bash
sudo zypper install SDL2-devel cmake freetype2-devel gcc gcc-c++ libhidapi-devel libhidapi-hidraw0 libpng16-devel libsamplerate-devel make nasm ninja pkgconf-pkg-config speex-devel vulkan-devel zlib-devel qt6-tools-devel qt6-opengl-devel qt6-widgets-devel qt6-svg-devel minizip-devel git
./Source/Script/Build.sh Release ./Source/Script/Build.sh Release
``` ```
@ -60,9 +73,9 @@ cmake --install "$build_dir" --prefix="/usr"
``` ```
#### Windows #### Windows
* Download & Install [MSYS2](https://www.msys2.org/) * Download & Install [MSYS2](https://www.msys2.org/) (UCRT64)
```bash ```bash
pacman -S --needed make mingw-w64-x86_64-cmake mingw-w64-x86_64-gcc mingw-w64-x86_64-hidapi mingw-w64-x86_64-freetype mingw-w64-x86_64-libpng mingw-w64-x86_64-SDL2 mingw-w64-x86_64-qt6 mingw-w64-x86_64-SDL2 mingw-w64-x86_64-hidapi mingw-w64-x86_64-speexdsp mingw-w64-x86_64-libsamplerate mingw-w64-x86_64-nasm mingw-w64-x86_64-minizip git pacman -S --needed make mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-hidapi mingw-w64-ucrt-x86_64-freetype mingw-w64-ucrt-x86_64-libpng mingw-w64-ucrt-x86_64-qt6 mingw-w64-ucrt-x86_64-SDL2 mingw-w64-ucrt-x86_64-SDL2_net mingw-w64-ucrt-x86_64-speexdsp mingw-w64-ucrt-x86_64-libsamplerate mingw-w64-ucrt-x86_64-libusb mingw-w64-ucrt-x86_64-nasm mingw-w64-ucrt-x86_64-minizip mingw-w64-ucrt-x86_64-vulkan-headers git
./Source/Script/Build.sh Release ./Source/Script/Build.sh Release
``` ```

View file

@ -1,40 +0,0 @@
#
# 7-Zip CMakeLists.txt
#
project(7Zip)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(7ZIP_SOURCES
${CMAKE_CURRENT_BINARY_DIR}/C/Bcj2.c
${CMAKE_CURRENT_BINARY_DIR}/C/Bra.c
${CMAKE_CURRENT_BINARY_DIR}/C/Bra86.c
${CMAKE_CURRENT_BINARY_DIR}/C/BraIA64.c
${CMAKE_CURRENT_BINARY_DIR}/C/CpuArch.c
${CMAKE_CURRENT_BINARY_DIR}/C/Delta.c
${CMAKE_CURRENT_BINARY_DIR}/C/Lzma2Dec.c
${CMAKE_CURRENT_BINARY_DIR}/C/LzmaDec.c
${CMAKE_CURRENT_BINARY_DIR}/C/Ppmd7.c
${CMAKE_CURRENT_BINARY_DIR}/C/Ppmd7Dec.c
${CMAKE_CURRENT_BINARY_DIR}/C/7zCrc.c
${CMAKE_CURRENT_BINARY_DIR}/C/7zCrcOpt.c
${CMAKE_CURRENT_BINARY_DIR}/C/Sha256.c
${CMAKE_CURRENT_BINARY_DIR}/C/Sha256Opt.c
${CMAKE_CURRENT_BINARY_DIR}/C/7zAlloc.c
${CMAKE_CURRENT_BINARY_DIR}/C/7zArcIn.c
${CMAKE_CURRENT_BINARY_DIR}/C/7zBuf.c
${CMAKE_CURRENT_BINARY_DIR}/C/7zBuf2.c
${CMAKE_CURRENT_BINARY_DIR}/C/7zDec.c
${CMAKE_CURRENT_BINARY_DIR}/C/7zFile.c
${CMAKE_CURRENT_BINARY_DIR}/C/7zStream.c
)
add_custom_command(
OUTPUT ${7ZIP_SOURCES}
COMMAND ${CMAKE_COMMAND} -E tar "xvz" "${CMAKE_CURRENT_SOURCE_DIR}/lzma2301.tar.gz"
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)
add_definitions(-D_7ZIP_PPMD_SUPPPORT -DNDEBUG -D_REENTRANT -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE)
add_library(7Zip STATIC ${7ZIP_SOURCES})

Binary file not shown.

View file

@ -3,8 +3,6 @@
# #
include(ExternalProject) include(ExternalProject)
set(THIRDPARTY_DIR ${CMAKE_BINARY_DIR}/Source/3rdParty)
find_program(RUST_CARGO cargo) find_program(RUST_CARGO cargo)
if(NO_RUST) if(NO_RUST)
set(BUILD_INPUT_GCA OFF) set(BUILD_INPUT_GCA OFF)
@ -15,7 +13,7 @@ else()
set(BUILD_INPUT_GCA ON) set(BUILD_INPUT_GCA ON)
endif() endif()
set(M64P_CORE_DIR ${THIRDPARTY_DIR}/mupen64plus-core) set(M64P_CORE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/mupen64plus-core)
if(WIN32) if(WIN32)
set(SO_EXT "dll") set(SO_EXT "dll")
set(GCA_LIB "mupen64plus_input_gca.${SO_EXT}") set(GCA_LIB "mupen64plus_input_gca.${SO_EXT}")
@ -26,7 +24,9 @@ else(WIN32)
set(CORE_FILE "libmupen64plus.so") set(CORE_FILE "libmupen64plus.so")
endif(WIN32) endif(WIN32)
set(BASE_CMAKE_CONFIGURE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}) set(BASE_CMAKE_CONFIGURE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS})
if (USE_CCACHE) if (USE_CCACHE)
set(CMAKE_CONFIGURE_ARGS ${BASE_CMAKE_CONFIGURE_ARGS} -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache) set(CMAKE_CONFIGURE_ARGS ${BASE_CMAKE_CONFIGURE_ARGS} -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache)
set(MAKE_CC_COMPILER "ccache ${CMAKE_C_COMPILER}") set(MAKE_CC_COMPILER "ccache ${CMAKE_C_COMPILER}")
@ -37,230 +37,213 @@ else(USE_CCACHE)
set(MAKE_CXX_COMPILER "${CMAKE_CXX_COMPILER}") set(MAKE_CXX_COMPILER "${CMAKE_CXX_COMPILER}")
endif(USE_CCACHE) endif(USE_CCACHE)
if(NOT NO_GIT_CLONE) # use sub-make when available
set(MUPEN64PLUSCORE_URL "https://github.com/Rosalie241/mupen64plus-core") if ("${CMAKE_GENERATOR}" STREQUAL "Unix Makefiles" OR
set(MUPEN64PLUSCORE_TAG "bb6949ad2ab268024ee4049279abc2f3c7fbdbb4") "${CMAKE_GENERATOR}" STREQUAL "MSYS Makefiles")
set(MAKE_CMD "$(MAKE)")
else()
set(MAKE_CMD "make")
endif()
set(MUPEN64PLUS_RSP_CXD4_URL "https://github.com/mupen64plus/mupen64plus-rsp-cxd4") if ("${CMAKE_C_FLAGS}" STREQUAL "")
set(MUPEN64PLUS_RSP_CXD4_TAG "39f79201baa15890c4cbae92f2215a634cc3ee6d") if (USE_LTO)
set(MAKE_OPTFLAGS "-O3 -flto")
else(USE_LTO)
set(MAKE_OPTFLAGS "-O3")
endif(USE_LTO)
else()
set(MAKE_OPTFLAGS "${CMAKE_C_FLAGS}")
endif()
set(MUPEN64PLUS_RSP_HLE_URL "https://github.com/mupen64plus/mupen64plus-rsp-hle") if ("${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo" OR
set(MUPEN64PLUS_RSP_HLE_TAG "88093cb43499eff53d343653cddcae2132af17ef") "${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
set(MAKE_DEBUG "1")
set(MUPEN64PLUS_RSP_PARALLEL_URL "https://github.com/Rosalie241/parallel-rsp") else()
set(MUPEN64PLUS_RSP_PARALLEL_TAG "dbecbe3a120e428436c5972fa7b872cfc2c9db3e") set(MAKE_DEBUG "0")
endif()
set(MUPEN64PLUS_INPUT_RAPHNET_URL "https://github.com/raphnet/mupen64plus-input-raphnetraw")
set(MUPEN64PLUS_INPUT_RAPHNET_TAG "86112413e98a8648edb11d199673cc24d5799af8")
set(MUPEN64PLUS_INPUT_GCA_URL "https://github.com/amatho/mupen64plus-input-gca")
set(MUPEN64PLUS_INPUT_GCA_TAG "21639fb13dfa797a7c0949ffd9bbda9a3456fc69")
set(MUPEN64PLUS_GFX_ANGRYLION_URL "https://github.com/Rosalie241/angrylion-rdp-plus")
set(MUPEN64PLUS_GFX_ANGRYLION_TAG "670abbc972bd430fa77291b0967dd73128314317")
set(MUPEN64PLUS_GFX_GLIDEN64_URL "https://github.com/Rosalie241/GLideN64")
set(MUPEN64PLUS_GFX_GLIDEN64_TAG "2f1b358028e700fcae2502a53f4f5e6822ce0367")
set(MUPEN64PLUS_GFX_PARALLEL_URL "https://github.com/Rosalie241/parallel-rdp-standalone")
set(MUPEN64PLUS_GFX_PARALLEL_TAG "2c2226517c4c8929e08ec944654867e26efe0cf5")
set(DISCORD_RPC_URL "https://github.com/discord/discord-rpc")
set(DISCORD_RPC_TAG "963aa9f3e5ce81a4682c6ca3d136cddda614db33")
set(IMGUI_URL "https://github.com/ocornut/imgui")
set(IMGUI_TAG "d7c8516a4b848c0291e3d75b627c0843f515f591")
set(SDL_GAMECONTROLLERDB_URL "https://github.com/gabomdq/SDL_GameControllerDB")
set(SDL_GAMECONTROLLERDB_TAG "5e25aeccb84fb166451443c4cd9fff349e8b0360")
endif(NOT NO_GIT_CLONE)
ExternalProject_Add(mupen64plus-core ExternalProject_Add(mupen64plus-core
SOURCE_DIR mupen64plus-core/ SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/mupen64plus-core/
CONFIGURE_COMMAND "" CONFIGURE_COMMAND ""
INSTALL_COMMAND "" INSTALL_COMMAND ""
GIT_REPOSITORY ${MUPEN64PLUSCORE_URL} BUILD_COMMAND ${MAKE_CMD} all -f ${M64P_CORE_DIR}/projects/unix/Makefile
GIT_TAG ${MUPEN64PLUSCORE_TAG} SRCDIR=${CMAKE_CURRENT_SOURCE_DIR}/mupen64plus-core/src
SUBDIR=${CMAKE_CURRENT_SOURCE_DIR}/mupen64plus-core/subprojects
BUILD_COMMAND make all OSD=0 NEW_DYNAREC=1 KEYBINDINGS=0 ACCURATE_FPU=1 TARGET=${CORE_FILE} DEBUG=$<CONFIG:Debug> CC=${MAKE_CC_COMPILER} CXX=${MAKE_CXX_COMPILER} OSD=0 NEW_DYNAREC=1 NO_ASM=$<BOOL:${NO_ASM}>
KEYBINDINGS=0 ACCURATE_FPU=1 VULKAN=0 NETPLAY=$<BOOL:${NETPLAY}>
TARGET=${CORE_FILE} DEBUG=${MAKE_DEBUG}
CC=${MAKE_CC_COMPILER} CXX=${MAKE_CXX_COMPILER}
OPTFLAGS=${MAKE_OPTFLAGS}
BUILD_IN_SOURCE False BUILD_IN_SOURCE False
BUILD_ALWAYS True
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/mupen64plus-core
BINARY_DIR ${M64P_CORE_DIR}/projects/unix BUILD_BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/mupen64plus-core/${CORE_FILE}
BUILD_BYPRODUCTS ${M64P_CORE_DIR}/projects/unix/${CORE_FILE}
) )
set(APIDIR "${CMAKE_BINARY_DIR}/Source/3rdParty/mupen64plus-core/src/api") set(APIDIR "${CMAKE_SOURCE_DIR}/Source/3rdParty/mupen64plus-core/src/api")
ExternalProject_Add(mupen64plus-rsp-cxd4 ExternalProject_Add(mupen64plus-rsp-cxd4
SOURCE_DIR mupen64plus-rsp-cxd4/ SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/mupen64plus-rsp-cxd4/
CONFIGURE_COMMAND "" CONFIGURE_COMMAND ""
INSTALL_COMMAND "" INSTALL_COMMAND ""
GIT_REPOSITORY ${MUPEN64PLUS_RSP_CXD4_URL} BUILD_COMMAND ${MAKE_CMD} all -f ${CMAKE_CURRENT_SOURCE_DIR}/mupen64plus-rsp-cxd4/projects/unix/Makefile
GIT_TAG ${MUPEN64PLUS_RSP_CXD4_TAG} SRCDIR=${CMAKE_CURRENT_SOURCE_DIR}/mupen64plus-rsp-cxd4
APIDIR=${APIDIR} DEBUG=${MAKE_DEBUG} POSTFIX=
BUILD_COMMAND make all APIDIR=${APIDIR} DEBUG=$<CONFIG:Debug> POSTFIX= CC=${MAKE_CC_COMPILER} CXX=${MAKE_CXX_COMPILER} CC=${MAKE_CC_COMPILER} CXX=${MAKE_CXX_COMPILER}
OPTFLAGS=${MAKE_OPTFLAGS}
BUILD_IN_SOURCE False BUILD_IN_SOURCE False
BUILD_ALWAYS True
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/mupen64plus-rsp-cxd4
BINARY_DIR ${THIRDPARTY_DIR}/mupen64plus-rsp-cxd4/projects/unix BUILD_BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/mupen64plus-rsp-cxd4/mupen64plus-rsp-cxd4.${SO_EXT}
BUILD_BYPRODUCTS ${THIRDPARTY_DIR}/mupen64plus-rsp-cxd4/projects/unix/mupen64plus-rsp-cxd4.${SO_EXT}
DEPENDS mupen64plus-core
) )
ExternalProject_Add(mupen64plus-rsp-hle ExternalProject_Add(mupen64plus-rsp-hle
SOURCE_DIR mupen64plus-rsp-hle/ SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/mupen64plus-rsp-hle/
CONFIGURE_COMMAND "" CONFIGURE_COMMAND ""
INSTALL_COMMAND "" INSTALL_COMMAND ""
GIT_REPOSITORY ${MUPEN64PLUS_RSP_HLE_URL} BUILD_COMMAND ${MAKE_CMD} all -f ${CMAKE_CURRENT_SOURCE_DIR}/mupen64plus-rsp-hle/projects/unix/Makefile
GIT_TAG ${MUPEN64PLUS_RSP_HLE_TAG} SRCDIR=${CMAKE_CURRENT_SOURCE_DIR}/mupen64plus-rsp-hle/src
APIDIR=${APIDIR} DEBUG=${MAKE_DEBUG}
BUILD_COMMAND make all APIDIR=${APIDIR} DEBUG=$<CONFIG:Debug> CC=${MAKE_CC_COMPILER} CXX=${MAKE_CXX_COMPILER} CC=${MAKE_CC_COMPILER} CXX=${MAKE_CXX_COMPILER}
OPTFLAGS=${MAKE_OPTFLAGS}
BUILD_IN_SOURCE False BUILD_IN_SOURCE False
BUILD_ALWAYS True
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/mupen64plus-rsp-hle
BINARY_DIR ${THIRDPARTY_DIR}/mupen64plus-rsp-hle/projects/unix BUILD_BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/mupen64plus-rsp-hle/mupen64plus-rsp-hle.${SO_EXT}
BUILD_BYPRODUCTS ${THIRDPARTY_DIR}/mupen64plus-rsp-hle/projects/unix/mupen64plus-rsp-hle.${SO_EXT}
DEPENDS mupen64plus-core
) )
ExternalProject_Add(mupen64plus-rsp-parallel ExternalProject_Add(mupen64plus-rsp-parallel
SOURCE_DIR mupen64plus-rsp-parallel SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/mupen64plus-rsp-parallel/
GIT_REPOSITORY ${MUPEN64PLUS_RSP_PARALLEL_URL}
GIT_TAG ${MUPEN64PLUS_RSP_PARALLEL_TAG}
INSTALL_COMMAND "" INSTALL_COMMAND ""
BUILD_IN_SOURCE True BUILD_IN_SOURCE False
BUILD_ALWAYS True
CMAKE_ARGS ${CMAKE_CONFIGURE_ARGS} CMAKE_ARGS ${CMAKE_CONFIGURE_ARGS}
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/mupen64plus-rsp-parallel
BUILD_BYPRODUCTS ${THIRDPARTY_DIR}/mupen64plus-rsp-parallel/mupen64plus-rsp-parallel.${SO_EXT} BUILD_BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/mupen64plus-rsp-parallel/mupen64plus-rsp-parallel.${SO_EXT}
DEPENDS mupen64plus-core
) )
ExternalProject_Add(mupen64plus-input-raphnetraw ExternalProject_Add(mupen64plus-input-raphnetraw
SOURCE_DIR mupen64plus-input-raphnetraw/ SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/mupen64plus-input-raphnetraw/
CONFIGURE_COMMAND "" CONFIGURE_COMMAND ""
INSTALL_COMMAND "" INSTALL_COMMAND ""
GIT_REPOSITORY ${MUPEN64PLUS_INPUT_RAPHNET_URL} BUILD_COMMAND ${MAKE_CMD} all -f ${CMAKE_CURRENT_SOURCE_DIR}/mupen64plus-input-raphnetraw/projects/unix/Makefile
GIT_TAG ${MUPEN64PLUS_INPUT_RAPHNET_TAG} SRCDIR=${CMAKE_CURRENT_SOURCE_DIR}/mupen64plus-input-raphnetraw/src
APIDIR=${APIDIR} DEBUG=${MAKE_DEBUG}
BUILD_COMMAND make all APIDIR=${APIDIR} DEBUG=$<CONFIG:Debug> CC=${MAKE_CC_COMPILER} CXX=${MAKE_CXX_COMPILER} CC=${MAKE_CC_COMPILER} CXX=${MAKE_CXX_COMPILER}
OPTFLAGS=${MAKE_OPTFLAGS}
BUILD_IN_SOURCE False BUILD_IN_SOURCE False
BUILD_ALWAYS True
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/mupen64plus-input-raphnetraw
BINARY_DIR ${THIRDPARTY_DIR}/mupen64plus-input-raphnetraw/projects/unix BUILD_BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/mupen64plus-input-raphnetraw/mupen64plus-input-raphnetraw.${SO_EXT}
BUILD_BYPRODUCTS ${THIRDPARTY_DIR}/mupen64plus-input-raphnetraw/projects/unix/mupen64plus-input-raphnetraw.${SO_EXT}
DEPENDS mupen64plus-core
) )
if (BUILD_INPUT_GCA) if (BUILD_INPUT_GCA)
ExternalProject_Add(mupen64plus-input-gca ExternalProject_Add(mupen64plus-input-gca
SOURCE_DIR mupen64plus-input-gca/ SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/mupen64plus-input-gca/
CONFIGURE_COMMAND "" CONFIGURE_COMMAND ""
INSTALL_COMMAND "" INSTALL_COMMAND ""
GIT_REPOSITORY ${MUPEN64PLUS_INPUT_GCA_URL} BUILD_COMMAND cargo build --manifest-path ${CMAKE_CURRENT_SOURCE_DIR}/mupen64plus-input-gca/Cargo.toml --release --features "m64p_compat" --target-dir=${CMAKE_CURRENT_BINARY_DIR}/mupen64plus-input-gca/target
GIT_TAG ${MUPEN64PLUS_INPUT_GCA_TAG} BUILD_IN_SOURCE False
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/mupen64plus-input-gca/target/release
BUILD_COMMAND cargo build --release --features "m64p_compat" BUILD_BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/mupen64plus-input-gca/target/release/${GCA_LIB}
BUILD_IN_SOURCE True
BUILD_BYPRODUCTS ${THIRDPARTY_DIR}/mupen64plus-input-gca/target/release/${GCA_LIB}
DEPENDS mupen64plus-core
) )
endif(BUILD_INPUT_GCA) endif(BUILD_INPUT_GCA)
set(GLIDEN64_DIR "${THIRDPARTY_DIR}/mupen64plus-video-GLideN64") set(GLIDEN64_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mupen64plus-video-GLideN64")
set(GLIDEN64_BUILD_DIR "${GLIDEN64_DIR}/projects/cmake") set(GLIDEN64_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/mupen64plus-video-GLideN64")
set(GLIDEN64_CUSTOM_INI "${GLIDEN64_DIR}/ini/GLideN64.custom.ini") set(GLIDEN64_CUSTOM_INI "${GLIDEN64_DIR}/ini/GLideN64.custom.ini")
if (WIN32) # taken from GLideN64's CMakeLists.txt
set(GLIDEN64_LIB "${GLIDEN64_BUILD_DIR}/mupen64plus-video-GLideN64.${SO_EXT}") if("${CMAKE_BUILD_TYPE}" STREQUAL "Release" OR
else(WIN32) "${CMAKE_BUILD_TYPE}" STREQUAL "MinSizeRel" OR
set(GLIDEN64_LIB "${GLIDEN64_BUILD_DIR}/plugin/${CMAKE_BUILD_TYPE}/mupen64plus-video-GLideN64.${SO_EXT}") "${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo")
endif(WIN32) set(GLIDEN64_BUILD_TYPE Release)
elseif("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
set(GLIDEN64_BUILD_TYPE Debug)
endif()
set(GLIDENUI_TRANSLATIONS_LANGS "de;es;fr;it;ja;pl;pt_BR") set(GLIDENUI_TRANSLATIONS_LANGS "de;es;fr;it;ja;pl;pt_BR")
foreach(LANG ${GLIDENUI_TRANSLATIONS_LANGS}) foreach(LANG ${GLIDENUI_TRANSLATIONS_LANGS})
list(APPEND GLIDENUI_TRANSLATIONS "${GLIDEN64_DIR}/translations/release/gliden64_${LANG}.qm") list(APPEND GLIDENUI_TRANSLATIONS "${GLIDEN64_DIR}/translations/release/gliden64_${LANG}.qm")
endforeach() endforeach()
ExternalProject_Add(mupen64plus-video-angrylion-plus if (USE_ANGRYLION)
SOURCE_DIR mupen64plus-video-angrylion-plus ExternalProject_Add(mupen64plus-video-angrylion-plus
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/mupen64plus-video-angrylion-plus
GIT_REPOSITORY ${MUPEN64PLUS_GFX_ANGRYLION_URL} INSTALL_COMMAND ""
GIT_TAG ${MUPEN64PLUS_GFX_ANGRYLION_TAG}
INSTALL_COMMAND "" BUILD_IN_SOURCE False
BUILD_ALWAYS True
CMAKE_ARGS -DBUILD_MUPEN64PLUS=ON -DBUILD_PROJECT64=OFF -DUSE_QT5=OFF ${CMAKE_CONFIGURE_ARGS}
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/mupen64plus-video-angrylion-plus
BUILD_IN_SOURCE True BUILD_BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/mupen64plus-video-angrylion-plus/mupen64plus-video-angrylion-plus.${SO_EXT}
CMAKE_ARGS -DBUILD_MUPEN64PLUS=ON -DBUILD_PROJECT64=OFF -DUSE_QT5=OFF ${CMAKE_CONFIGURE_ARGS} )
endif(USE_ANGRYLION)
BUILD_BYPRODUCTS ${THIRDPARTY_DIR}/mupen64plus-video-angrylion-plus/mupen64plus-video-angrylion-plus.${SO_EXT}
DEPENDS mupen64plus-core
)
ExternalProject_Add(mupen64plus-video-GLideN64 ExternalProject_Add(mupen64plus-video-GLideN64
SOURCE_DIR mupen64plus-video-GLideN64 SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/mupen64plus-video-GLideN64
GIT_REPOSITORY ${MUPEN64PLUS_GFX_GLIDEN64_URL}
GIT_TAG ${MUPEN64PLUS_GFX_GLIDEN64_TAG}
INSTALL_COMMAND "" INSTALL_COMMAND ""
BUILD_IN_SOURCE False BUILD_IN_SOURCE False
BUILD_ALWAYS True
CMAKE_ARGS -DMUPENPLUSAPI=ON -DMUPENPLUSAPI_GLIDENUI=ON -DGLIDENUI_QT6=ON -DUSE_SYSTEM_LIBS=ON ${CMAKE_CONFIGURE_ARGS} CMAKE_ARGS -DMUPENPLUSAPI=ON -DMUPENPLUSAPI_GLIDENUI=ON -DGLIDENUI_QT6=ON -DUSE_SYSTEM_LIBS=ON ${CMAKE_CONFIGURE_ARGS}
SOURCE_SUBDIR ./src/ SOURCE_SUBDIR ./src/
BINARY_DIR ${GLIDEN64_BUILD_DIR} BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/mupen64plus-video-GLideN64
BUILD_BYPRODUCTS ${GLIDEN64_LIB} BUILD_BYPRODUCTS ${GLIDEN64_BUILD_DIR}/plugin/${GLIDEN64_BUILD_TYPE}/mupen64plus-video-GLideN64.${SO_EXT}
) )
ExternalProject_Add(mupen64plus-video-parallel ExternalProject_Add(mupen64plus-video-parallel
SOURCE_DIR mupen64plus-video-parallel SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/mupen64plus-video-parallel
GIT_REPOSITORY ${MUPEN64PLUS_GFX_PARALLEL_URL}
GIT_TAG ${MUPEN64PLUS_GFX_PARALLEL_TAG}
INSTALL_COMMAND "" INSTALL_COMMAND ""
BUILD_IN_SOURCE True BUILD_IN_SOURCE False
CMAKE_ARGS -DUSE_QT5=OFF ${CMAKE_CONFIGURE_ARGS} BUILD_ALWAYS True
CMAKE_ARGS -DCONFIG_GUI=ON ${CMAKE_CONFIGURE_ARGS}
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/mupen64plus-video-parallel
BUILD_BYPRODUCTS ${THIRDPARTY_DIR}/mupen64plus-video-parallel/mupen64plus-video-parallel.${SO_EXT} BUILD_BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/mupen64plus-video-parallel/mupen64plus-video-parallel.${SO_EXT}
DEPENDS mupen64plus-core
) )
if (DISCORD_RPC) if (DISCORD_RPC)
ExternalProject_Add(discord-rpc ExternalProject_Add(discord-rpc
SOURCE_DIR discord-rpc SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/discord-rpc
GIT_REPOSITORY ${DISCORD_RPC_URL}
GIT_TAG ${DISCORD_RPC_TAG}
INSTALL_COMMAND "" INSTALL_COMMAND ""
BUILD_IN_SOURCE True BUILD_IN_SOURCE False
BUILD_ALWAYS True
CMAKE_ARGS -DBUILD_EXAMPLES=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON ${CMAKE_CONFIGURE_ARGS} CMAKE_ARGS -DBUILD_EXAMPLES=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON ${CMAKE_CONFIGURE_ARGS}
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/discord-rpc
BUILD_BYPRODUCTS ${THIRDPARTY_DIR}/discord-rpc/src/libdiscord-rpc.a BUILD_BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/discord-rpc/src/libdiscord-rpc.a
) )
endif(DISCORD_RPC) endif(DISCORD_RPC)
set(IMGUI_DIR ${THIRDPARTY_DIR}/imgui) set(IMGUI_DIR ${CMAKE_CURRENT_SOURCE_DIR}/imgui)
set(IMGUI_BUILD_DIR ${IMGUI_DIR}/build) set(IMGUI_SOURCES
set(IMGUI_SOURCES_IN
${IMGUI_DIR}/imgui_draw.cpp ${IMGUI_DIR}/imgui_draw.cpp
${IMGUI_DIR}/imgui_tables.cpp ${IMGUI_DIR}/imgui_tables.cpp
${IMGUI_DIR}/imgui_widgets.cpp ${IMGUI_DIR}/imgui_widgets.cpp
@ -269,30 +252,11 @@ set(IMGUI_SOURCES_IN
${IMGUI_DIR}/backends/imgui_impl_opengl3.h ${IMGUI_DIR}/backends/imgui_impl_opengl3.h
${IMGUI_DIR}/backends/imgui_impl_opengl3_loader.h ${IMGUI_DIR}/backends/imgui_impl_opengl3_loader.h
) )
set(IMGUI_SOURCES_OUT add_library(imgui STATIC ${IMGUI_SOURCES})
${IMGUI_BUILD_DIR}/imgui_draw.cpp target_include_directories(imgui PRIVATE ${IMGUI_DIR})
${IMGUI_BUILD_DIR}/imgui_tables.cpp
${IMGUI_BUILD_DIR}/imgui_widgets.cpp
${IMGUI_BUILD_DIR}/imgui.cpp
${IMGUI_BUILD_DIR}/imgui_impl_opengl3.cpp
${IMGUI_BUILD_DIR}/imgui_impl_opengl3.h
${IMGUI_BUILD_DIR}/imgui_impl_opengl3_loader.h
)
ExternalProject_Add(imgui
SOURCE_DIR imgui
GIT_REPOSITORY ${IMGUI_URL} set(SDL_GAMECONTROLLERDB_DIR ${CMAKE_CURRENT_SOURCE_DIR}/SDL_GameControllerDB)
GIT_TAG ${IMGUI_TAG} set(SDL_GAMECONTROLLERDB_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/SDL_GameControllerDB)
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E make_directory ${IMGUI_BUILD_DIR}
BUILD_COMMAND ${CMAKE_COMMAND} -E copy ${IMGUI_SOURCES_IN} ${IMGUI_BUILD_DIR}
INSTALL_COMMAND ""
BUILD_BYPRODUCTS ${IMGUI_SOURCES_OUT}
)
set(SDL_GAMECONTROLLERDB_DIR ${THIRDPARTY_DIR}/SDL_GameControllerDB)
set(SDL_GAMECONTROLLERDB_BUILD_DIR ${SDL_GAMECONTROLLERDB_DIR}/build)
set(SDL_GAMECONTROLLERDB_SOURCES_IN set(SDL_GAMECONTROLLERDB_SOURCES_IN
${SDL_GAMECONTROLLERDB_DIR}/gamecontrollerdb.txt ${SDL_GAMECONTROLLERDB_DIR}/gamecontrollerdb.txt
) )
@ -300,10 +264,7 @@ set(SDL_GAMECONTROLLERDB_SOURCES_OUT
${SDL_GAMECONTROLLERDB_BUILD_DIR}/gamecontrollerdb.txt ${SDL_GAMECONTROLLERDB_BUILD_DIR}/gamecontrollerdb.txt
) )
ExternalProject_Add(SDL_GameControllerDB ExternalProject_Add(SDL_GameControllerDB
SOURCE_DIR SDL_GameControllerDB SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/SDL_GameControllerDB
GIT_REPOSITORY ${SDL_GAMECONTROLLERDB_URL}
GIT_TAG ${SDL_GAMECONTROLLERDB_TAG}
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E make_directory ${SDL_GAMECONTROLLERDB_BUILD_DIR} CONFIGURE_COMMAND ${CMAKE_COMMAND} -E make_directory ${SDL_GAMECONTROLLERDB_BUILD_DIR}
BUILD_COMMAND ${CMAKE_COMMAND} -E copy ${SDL_GAMECONTROLLERDB_SOURCES_IN} ${SDL_GAMECONTROLLERDB_SOURCES_OUT} BUILD_COMMAND ${CMAKE_COMMAND} -E copy ${SDL_GAMECONTROLLERDB_SOURCES_IN} ${SDL_GAMECONTROLLERDB_SOURCES_OUT}
@ -333,11 +294,14 @@ if (BUILD_INPUT_GCA)
set(MUPEN64PLUS_PLUGIN_INPUT_GCA ${BUILD_BYPRODUCTS} PARENT_SCOPE) set(MUPEN64PLUS_PLUGIN_INPUT_GCA ${BUILD_BYPRODUCTS} PARENT_SCOPE)
endif(BUILD_INPUT_GCA) endif(BUILD_INPUT_GCA)
ExternalProject_Get_property(mupen64plus-video-angrylion-plus BUILD_BYPRODUCTS) if (USE_ANGRYLION)
set(MUPEN64PLUS_PLUGIN_GFX_ANGRYLION ${BUILD_BYPRODUCTS} PARENT_SCOPE) ExternalProject_Get_property(mupen64plus-video-angrylion-plus BUILD_BYPRODUCTS)
set(MUPEN64PLUS_PLUGIN_GFX_ANGRYLION ${BUILD_BYPRODUCTS} PARENT_SCOPE)
endif(USE_ANGRYLION)
ExternalProject_Get_property(mupen64plus-video-GLideN64 BUILD_BYPRODUCTS) ExternalProject_Get_property(mupen64plus-video-GLideN64 BUILD_BYPRODUCTS)
set(MUPEN64PLUS_PLUGIN_GFX_GLIDEN64 ${BUILD_BYPRODUCTS} ${GLIDENUI_TRANSLATIONS} ${GLIDEN64_CUSTOM_INI} PARENT_SCOPE) set(MUPEN64PLUS_PLUGIN_GFX_GLIDEN64 ${BUILD_BYPRODUCTS} PARENT_SCOPE)
set(MUPEN64PLUS_PLUGIN_GFX_GLIDEN64_DATA ${GLIDENUI_TRANSLATIONS} ${GLIDEN64_CUSTOM_INI} PARENT_SCOPE)
ExternalProject_Get_property(mupen64plus-video-parallel BUILD_BYPRODUCTS) ExternalProject_Get_property(mupen64plus-video-parallel BUILD_BYPRODUCTS)
set(MUPEN64PLUS_PLUGIN_GFX_PARALLEL ${BUILD_BYPRODUCTS} PARENT_SCOPE) set(MUPEN64PLUS_PLUGIN_GFX_PARALLEL ${BUILD_BYPRODUCTS} PARENT_SCOPE)
@ -347,9 +311,7 @@ if (DISCORD_RPC)
set(DISCORD_RPC_LIB ${BUILD_BYPRODUCTS} PARENT_SCOPE) set(DISCORD_RPC_LIB ${BUILD_BYPRODUCTS} PARENT_SCOPE)
endif(DISCORD_RPC) endif(DISCORD_RPC)
ExternalProject_Get_property(imgui BUILD_BYPRODUCTS) set(IMGUI_DIR ${CMAKE_CURRENT_SOURCE_DIR}/imgui PARENT_SCOPE)
set(IMGUI_SOURCES ${BUILD_BYPRODUCTS} PARENT_SCOPE)
set(IMGUI_DIR ${THIRDPARTY_DIR}/imgui PARENT_SCOPE)
ExternalProject_Get_property(SDL_GameControllerDB BUILD_BYPRODUCTS) ExternalProject_Get_property(SDL_GameControllerDB BUILD_BYPRODUCTS)
set(SDL_GAMECONTROLLERDB ${BUILD_BYPRODUCTS} PARENT_SCOPE) set(SDL_GAMECONTROLLERDB ${BUILD_BYPRODUCTS} PARENT_SCOPE)

View file

@ -0,0 +1,11 @@
name: Data check
on:
push:
branches: [master]
jobs:
duplicates:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- run: |
python duplicates.py

View file

@ -0,0 +1,12 @@
; DO NOT EDIT (unless you know what you are doing)
;
; This subdirectory is a git "subrepo", and this file is maintained by the
; git-subrepo command. See https://github.com/ingydotnet/git-subrepo#readme
;
[subrepo]
remote = git@github.com:/gabomdq/SDL_GameControllerDB.git
branch = master
commit = 9e4f34deb5569dfdd8c16c2320710aeb2a7e2f12
parent = e4491ca9f4add28c3f0cb428fd9b129af6f978fe
method = merge
cmdver = 0.4.6

View file

@ -0,0 +1,17 @@
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.

View file

@ -0,0 +1,57 @@
# SDL_GameControllerDB
A community sourced database of game controller mappings to be used with SDL2 and SDL3 Game Controller functionality.
# Usage
Download gamecontrollerdb.txt, place it in your app's directory and load it.
SDL2:
```c
SDL_GameControllerAddMappingsFromFile("gamecontrollerdb.txt");
```
SDL3:
```c
SDL_AddGamepadMappingsFromFile("gamecontrollerdb.txt");
```
The database is compatible with SDL v2.0.10 and newer.
## Create New Mappings
A mapping looks like this:
```
030000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
```
It includes controller GUID (`030000004c050000c405000000010000`), a name (`PS4 Controller`), button / axis mappings (`leftshoulder:b4`) and a platform (`platform:Mac OS X`).
Please make sure to check that the name is a good description of the controller. If relevant, include the controller's name and model number.
## Mapping Guide
![SDL Game Controller Mapping Guide](mapping_guide.png)
## Mapping Tools
There are a few different tools that let you create mappings.
### [SDL2 Gamepad Tool](http://www.generalarcade.com/gamepadtool/)
Third party cross-platform tool with GUI (Windows, macOS and Linux)
#### Note: While convenient, this tool has fallen out of date as SDL has amended and added new features for gamepad support (see issue [#478](https://github.com/gabomdq/SDL_GameControllerDB/issues/476)). As such, maps authored with this tool require greater scrutiny to ensure they will not break support for explicit mappings the SDL project provides.
### [SDL2 Gamepad Mapper](https://gitlab.com/ryochan7/sdl2-gamepad-mapper/-/releases)
Open source GUI app for authoring mappings. Builds available for Windows and Linux.
### [SDL](https://github.com/libsdl-org/SDL/releases/latest)
[testcontroller (SDL3)](https://github.com/libsdl-org/SDL/blob/main/test/testcontroller.c) and [controllermap (SDL2)](https://github.com/libsdl-org/SDL/blob/SDL2/test/controllermap.c) utilities are the official tools to create these mappings on all SDL supported platforms (Windows, Mac, Linux, iOS, Android, etc).
### [Steam](http://store.steampowered.com)
In Steam's Big Picture mode, configure your gamepad. Then look in `[steam_installation_directory]/config/config.vdf` in your Steam installation directory for the `SDL_GamepadBind` entry. It is one of the last entries, it will look something like this:
```
"SDL_GamepadBind" "030000004c050000c405000000010000,PS4 Controller,platform:Windows,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,"
```
## Resources
* [SDL2](http://www.libsdl.org)
* [SDL_GameControllerAddMappingsFromFile](http://wiki.libsdl.org/SDL_GameControllerAddMappingsFromFile)

View file

@ -0,0 +1,26 @@
# SPDX-License-Identifier: Zlib
import difflib
import sys
CROSS_PLATFORM=False
cdict = {}
for i, l in enumerate(open("gamecontrollerdb.txt")):
l = l.strip()
if l.startswith("#") or not l:
continue
c = l.split(",")
key = tuple([c[0]]+[ce for ce in c[1:] if "platform:" in ce])
if CROSS_PLATFORM:
key = c[0]
if key in cdict:
print("Duplicate:", c[1], "at line", i + 1)
out = list(difflib.unified_diff(cdict[key], sorted(c), n=0))[3:]
out = [o for o in out if not o.startswith("@@")]
print("\t", " ".join(out))
if not CROSS_PLATFORM:
sys.exit(1)
cdict[key] = sorted(c)

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View file

@ -0,0 +1,92 @@
---
AccessModifierOffset: -4
AlignAfterOpenBracket: true
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlines: Left
AlignOperands: false
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: InlineOnly
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: true
BinPackArguments: false
BinPackParameters: false
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Stroustrup
BreakBeforeInheritanceComma: true
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: BeforeComma
BreakStringLiterals: true
ColumnLimit: 100
CommentPragmas: ''
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 2
ContinuationIndentWidth: 2
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat: false
FixNamespaceComments: true
ForEachMacros: []
IndentCaseLabels: false
IncludeCategories:
- Regex: '^("|<)stdafx\.h(pp)?("|>)'
Priority: -1
- Regex: '^<(W|w)indows.h>'
Priority: 1
- Regex: '^<'
Priority: 2
- Regex: '.*'
Priority: 3
IncludeIsMainRegex: '(_test|_win|_linux|_mac|_ios|_osx|_null)?$'
IndentCaseLabels: false
IndentWidth: 4
IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: false
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
PenaltyBreakAssignment: 0
PenaltyBreakBeforeFirstCallParameter: 1
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 9999999
PointerAlignment: Left
ReflowComments: true
SortIncludes: false
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInContainerLiterals: true
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp11
TabWidth: 4
UseTab: Never
---
Language: Cpp
---
Language: ObjC
ObjCBlockIndentWidth: 4
ObjCSpaceAfterProperty: true
ObjCSpaceBeforeProtocolList: false
---
Language: Java
BasedOnStyle: Google
BreakAfterJavaFieldAnnotations: true
...

View file

@ -0,0 +1,5 @@
/build*/
/.vscode/
/thirdparty/
.vs/
.DS_Store

12
Source/3rdParty/discord-rpc/.gitrepo vendored Normal file
View file

@ -0,0 +1,12 @@
; DO NOT EDIT (unless you know what you are doing)
;
; This subdirectory is a git "subrepo", and this file is maintained by the
; git-subrepo command. See https://github.com/ingydotnet/git-subrepo#readme
;
[subrepo]
remote = git@github.com:/discord/discord-rpc.git
branch = 963aa9f3e5ce81a4682c6ca3d136cddda614db33
commit = 963aa9f3e5ce81a4682c6ca3d136cddda614db33
parent = d28c28e9d34337b80c906572e2046a77ab3cb9dd
method = merge
cmdver = 0.4.6

47
Source/3rdParty/discord-rpc/.travis.yml vendored Normal file
View file

@ -0,0 +1,47 @@
language: cpp
env:
global:
- CLANG_FORMAT_SUFFIX="-dummy" # don't use formatting on Travis, this is
# needed not to use default 3.5 version
# which is too old.
matrix:
include:
- os: linux
env: MATRIX_EVAL="CC=gcc-5 && CXX=g++-5"
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-5
- os: linux
env: MATRIX_EVAL="CC=clang-4.0 && CXX=clang++-4.0"
addons:
apt:
sources:
- llvm-toolchain-trusty-4.0
packages:
- clang-4.0
- os: linux
env: MATRIX_EVAL="CC=clang-5.0 && CXX=clang++-5.0"
addons:
apt:
sources:
- llvm-toolchain-trusty-5.0
packages:
- clang-5.0
- os: osx
osx_image: xcode9
# prevent Travis from overwriting our CXX variables
before_install:
- eval "${MATRIX_EVAL}"
- echo $CXX
script:
- mkdir build
- cd build
- cmake -DCLANG_FORMAT_SUFFIX=$CLANG_FORMAT_SUFFIX -DWARNINGS_AS_ERRORS=On --config Release ..
- cmake --build . -- -j2

View file

@ -0,0 +1,56 @@
cmake_minimum_required (VERSION 3.10)
project (DiscordRPC)
include(GNUInstallDirs)
option(BUILD_EXAMPLES "Build example apps" ON)
# format
file(GLOB_RECURSE ALL_SOURCE_FILES
examples/*.cpp examples/*.h examples/*.c
include/*.h
src/*.cpp src/*.h src/*.c
)
# Set CLANG_FORMAT_SUFFIX if you are using custom clang-format, e.g. clang-format-5.0
#find_program(CLANG_FORMAT_CMD clang-format${CLANG_FORMAT_SUFFIX})
set(CLANG_FORMAT_CMD OFF)
if (CLANG_FORMAT_CMD)
add_custom_target(
clangformat
COMMAND ${CLANG_FORMAT_CMD}
-i -style=file -fallback-style=none
${ALL_SOURCE_FILES}
DEPENDS
${ALL_SOURCE_FILES}
)
endif(CLANG_FORMAT_CMD)
# thirdparty stuff
execute_process(
COMMAND mkdir ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty
ERROR_QUIET
)
find_file(RAPIDJSONTEST NAMES rapidjson rapidjson-1.1.0 PATHS ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty CMAKE_FIND_ROOT_PATH_BOTH)
if (NOT RAPIDJSONTEST)
message("no rapidjson, download")
set(RJ_TAR_FILE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/v1.1.0.tar.gz)
file(DOWNLOAD https://github.com/miloyip/rapidjson/archive/v1.1.0.tar.gz ${RJ_TAR_FILE})
execute_process(
COMMAND ${CMAKE_COMMAND} -E tar xzf ${RJ_TAR_FILE}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty
)
file(REMOVE ${RJ_TAR_FILE})
endif(NOT RAPIDJSONTEST)
find_file(RAPIDJSON NAMES rapidjson rapidjson-1.1.0 PATHS ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty CMAKE_FIND_ROOT_PATH_BOTH)
add_library(rapidjson STATIC IMPORTED ${RAPIDJSON})
# add subdirs
add_subdirectory(src)
if (BUILD_EXAMPLES)
add_subdirectory(examples/send-presence)
endif(BUILD_EXAMPLES)

19
Source/3rdParty/discord-rpc/LICENSE vendored Normal file
View file

@ -0,0 +1,19 @@
Copyright 2017 Discord, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

158
Source/3rdParty/discord-rpc/README.md vendored Normal file
View file

@ -0,0 +1,158 @@
# Discord RPC
## Deprecation Notice
This library has been deprecated in favor of Discord's GameSDK. [Learn more here](https://discordapp.com/developers/docs/game-sdk/sdk-starter-guide)
---
This is a library for interfacing your game with a locally running Discord desktop client. It's known to work on Windows, macOS, and Linux. You can use the lib directly if you like, or use it as a guide to writing your own if it doesn't suit your game as is. PRs/feedback welcome if you have an improvement everyone might want, or can describe how this doesn't meet your needs.
Included here are some quick demos that implement the very minimal subset to show current status, and
have callbacks for where a more complete game would do more things (joining, spectating, etc).
## Documentation
The most up to date documentation for Rich Presence can always be found on our [developer site](https://discordapp.com/developers/docs/rich-presence/how-to)! If you're interested in rolling your own native implementation of Rich Presence via IPC sockets instead of using our SDK—hey, you've got free time, right?—check out the ["Hard Mode" documentation](https://github.com/discordapp/discord-rpc/blob/master/documentation/hard-mode.md).
## Basic Usage
Zeroith, you should be set up to build things because you are a game developer, right?
First, head on over to the [Discord developers site](https://discordapp.com/developers/applications/me) and make yourself an app. Keep track of `Client ID` -- you'll need it here to pass to the init function.
### Unreal Engine 4 Setup
To use the Rich Presense plugin with Unreal Engine Projects:
1. Download the latest [release](https://github.com/discordapp/discord-rpc/releases) for each operating system you are targeting and the zipped source code
2. In the source code zip, copy the UE plugin—`examples/unrealstatus/Plugins/discordrpc`—to your project's plugin directory
3. At `[YOUR_UE_PROJECT]/Plugins/discordrpc/source/ThirdParty/DiscordRpcLibrary/`, create an `Include` folder and copy `discord_rpc.h` and `discord_register.h` to it from the zip
4. Follow the steps below for each OS
5. Build your UE4 project
6. Launch the editor, and enable the Discord plugin.
#### Windows
- At `[YOUR_UE_PROJECT]/Plugins/discordrpc/source/ThirdParty/DiscordRpcLibrary/`, create a `Win64` folder
- Copy `lib/discord-rpc.lib` and `bin/discord-rpc.dll` from `[RELEASE_ZIP]/win64-dynamic` to the `Win64` folder
#### Mac
- At `[YOUR_UE_PROJECT]/Plugins/discordrpc/source/ThirdParty/DiscordRpcLibrary/`, create a `Mac` folder
- Copy `libdiscord-rpc.dylib` from `[RELEASE_ZIP]/osx-dynamic/lib` to the `Mac` folder
#### Linux
- At `[YOUR_UE_PROJECT]/Plugins/discordrpc/source/ThirdParty/DiscordRpcLibrary/`, create a `Linux` folder
- Inside, create another folder `x86_64-unknown-linux-gnu`
- Copy `libdiscord-rpc.so` from `[RELEASE_ZIP]/linux-dynamic/lib` to `Linux/x86_64-unknown-linux-gnu`
### Unity Setup
If you're a Unity developer looking to integrate Rich Presence into your game, follow this simple guide to get started towards success:
1. Download the DLLs for any platform that you need from [our releases](https://github.com/discordapp/discord-rpc/releases)
2. In your Unity project, create a `Plugins` folder inside your `Assets` folder if you don't already have one
3. Copy the file `DiscordRpc.cs` from [here](https://github.com/discordapp/discord-rpc/blob/master/examples/button-clicker/Assets/DiscordRpc.cs) into your `Assets` folder. This is basically your header file for the SDK
We've got our `Plugins` folder ready, so let's get platform-specific!
#### Windows
4. Create `x86` and `x86_64` folders inside `Assets/Plugins/`
5. Copy `discord-rpc-win/win64-dynamic/bin/discord-rpc.dll` to `Assets/Plugins/x86_64/`
6. Copy `discord-rpc-win/win32-dynamic/bin/discord-rpc.dll` to `Assets/Plugins/x86/`
7. Click on both DLLs and make sure they are targetting the correct architectures in the Unity editor properties pane
8. Done!
#### MacOS
4. Copy `discord-rpc-osx/osx-dynamic/lib/libdiscord-rpc.dylib` to `Assets/Plugins/`
5. Rename `libdiscord-rpc.dylib` to `discord-rpc.bundle`
6. Done!
#### Linux
4. Copy `discord-rpc-linux/linux-dynamic-lib/libdiscord-rpc.so` to `Assets/Plugins/`
5. Done!
You're ready to roll! For code examples on how to interact with the SDK using the `DiscordRpc.cs` header file, check out [our example](https://github.com/discordapp/discord-rpc/blob/master/examples/button-clicker/Assets/DiscordController.cs)
### From package
Download a release package for your platform(s) -- they have subdirs with various prebuilt options, select the one you need add `/include` to your compile includes, `/lib` to your linker paths, and link with `discord-rpc`. For the dynamically linked builds, you'll need to ship the associated file along with your game.
### From repo
First-eth, you'll want `CMake`. There's a few different ways to install it on your system, and you should refer to [their website](https://cmake.org/install/). Many package managers provide ways of installing CMake as well.
To make sure it's installed correctly, type `cmake --version` into your flavor of terminal/cmd. If you get a response with a version number, you're good to go!
There's a [CMake](https://cmake.org/download/) file that should be able to generate the lib for you; Sometimes I use it like this:
```sh
cd <path to discord-rpc>
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=<path to install discord-rpc to>
cmake --build . --config Release --target install
```
There is a wrapper build script `build.py` that runs `cmake` with a few different options.
Usually, I run `build.py` to get things started, then use the generated project files as I work on things. It does depend on `click` library, so do a quick `pip install click` to make sure you have it if you want to run `build.py`.
There are some CMake options you might care about:
| flag | default | does |
| ---------------------------------------------------------------------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ENABLE_IO_THREAD` | `ON` | When enabled, we start up a thread to do io processing, if disabled you should call `Discord_UpdateConnection` yourself. |
| `USE_STATIC_CRT` | `OFF` | (Windows) Enable to statically link the CRT, avoiding requiring users install the redistributable package. (The prebuilt binaries enable this option) |
| [`BUILD_SHARED_LIBS`](https://cmake.org/cmake/help/v3.7/variable/BUILD_SHARED_LIBS.html) | `OFF` | Build library as a DLL |
| `WARNINGS_AS_ERRORS` | `OFF` | When enabled, compiles with `-Werror` (on \*nix platforms). |
## Continuous Builds
Why do we have three of these? Three times the fun!
| CI | badge |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| TravisCI | [![Build status](https://travis-ci.org/discordapp/discord-rpc.svg?branch=master)](https://travis-ci.org/discordapp/discord-rpc) |
| AppVeyor | [![Build status](https://ci.appveyor.com/api/projects/status/qvkoc0w1c4f4b8tj?svg=true)](https://ci.appveyor.com/project/crmarsh/discord-rpc) |
| Buildkite (internal) | [![Build status](https://badge.buildkite.com/e103d79d247f6776605a15246352a04b8fd83d69211b836111.svg)](https://buildkite.com/discord/discord-rpc) |
## Sample: send-presence
This is a text adventure "game" that inits/deinits the connection to Discord, and sends a presence update on each command.
## Sample: button-clicker
This is a sample [Unity](https://unity3d.com/) project that wraps a DLL version of the library, and sends presence updates when you click on a button. Run `python build.py unity` in the root directory to build the correct library files and place them in their respective folders.
## Sample: unrealstatus
This is a sample [Unreal](https://www.unrealengine.com) project that wraps the DLL version of the library with an Unreal plugin, exposes a blueprint class for interacting with it, and uses that to make a very simple UI. Run `python build.py unreal` in the root directory to build the correct library files and place them in their respective folders.
## Wrappers and Implementations
Below is a table of unofficial, community-developed wrappers for and implementations of Rich Presence in various languages. If you would like to have yours added, please make a pull request adding your repository to the table. The repository should include:
- The code
- A brief ReadMe of how to use it
- A working example
###### Rich Presence Wrappers and Implementations
| Name | Language |
| ------------------------------------------------------------------------- | --------------------------------- |
| [Discord RPC C#](https://github.com/Lachee/discord-rpc-csharp) | C# |
| [Discord RPC D](https://github.com/voidblaster/discord-rpc-d) | [D](https://dlang.org/) |
| [discord-rpc.jar](https://github.com/Vatuu/discord-rpc 'Discord-RPC.jar') | Java |
| [java-discord-rpc](https://github.com/MinnDevelopment/java-discord-rpc) | Java |
| [Discord-IPC](https://github.com/jagrosh/DiscordIPC) | Java |
| [Discord Rich Presence](https://npmjs.org/discord-rich-presence) | JavaScript |
| [drpc4k](https://github.com/Bluexin/drpc4k) | [Kotlin](https://kotlinlang.org/) |
| [lua-discordRPC](https://github.com/pfirsich/lua-discordRPC) | LuaJIT (FFI) |
| [pypresence](https://github.com/qwertyquerty/pypresence) | [Python](https://python.org/) |
| [SwordRPC](https://github.com/Azoy/SwordRPC) | [Swift](https://swift.org) |

View file

@ -0,0 +1,17 @@
version: '{build}'
install:
- python -m pip install click
build_script:
- mkdir examples\unrealstatus\Plugins\discordrpc\Binaries\ThirdParty\discordrpcLibrary\Win64
- python build.py
artifacts:
- path: builds\install\win32-dynamic
name: win32-dynamic
- path: builds\install\win32-static
name: win32-static
- path: builds\install\win64-dynamic
name: win64-dynamic
- path: builds\install\win64-static
name: win64-static

304
Source/3rdParty/discord-rpc/build.py vendored Executable file
View file

@ -0,0 +1,304 @@
#!/usr/bin/env python
import os
import subprocess
import sys
import shutil
import zipfile
from contextlib import contextmanager
import click
def get_platform():
""" a name for the platform """
if sys.platform.startswith('win'):
return 'win'
elif sys.platform == 'darwin':
return 'osx'
elif sys.platform.startswith('linux'):
return 'linux'
raise Exception('Unsupported platform ' + sys.platform)
SCRIPT_PATH = os.path.dirname(os.path.abspath(__file__))
# we use Buildkite which sets this env variable by default
IS_BUILD_MACHINE = os.environ.get('CI', '') == 'true'
PLATFORM = get_platform()
INSTALL_ROOT = os.path.join(SCRIPT_PATH, 'builds', 'install')
def get_signtool():
""" get path to code signing tool """
if PLATFORM == 'win':
sdk_dir = 'c:\\Program Files (x86)\\Windows Kits\\10' # os.environ['WindowsSdkDir']
return os.path.join(sdk_dir, 'bin', 'x86', 'signtool.exe')
elif PLATFORM == 'osx':
return '/usr/bin/codesign'
@contextmanager
def cd(new_dir):
""" Temporarily change current directory """
if new_dir:
old_dir = os.getcwd()
os.chdir(new_dir)
yield
if new_dir:
os.chdir(old_dir)
def mkdir_p(path):
""" mkdir -p """
if not os.path.isdir(path):
click.secho('Making ' + path, fg='yellow')
os.makedirs(path)
@click.group(invoke_without_command=True)
@click.pass_context
@click.option('--clean', is_flag=True)
def cli(ctx, clean):
""" click wrapper for command line stuff """
if ctx.invoked_subcommand is None:
ctx.invoke(libs, clean=clean)
if IS_BUILD_MACHINE:
ctx.invoke(sign)
ctx.invoke(archive)
@cli.command()
@click.pass_context
def unity(ctx):
""" build just dynamic libs for use in unity project """
ctx.invoke(libs, clean=False, static=False, shared=True, skip_formatter=True, just_release=True)
BUILDS = []
click.echo('--- Copying libs and header into unity example')
UNITY_PROJECT_PATH = os.path.join(SCRIPT_PATH, 'examples', 'button-clicker', 'Assets', 'Plugins')
if sys.platform.startswith('win'):
LIBRARY_NAME = 'discord-rpc.dll'
BUILD_64_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'win64-dynamic', 'src', 'Release')
UNITY_64_DLL_PATH = os.path.join(UNITY_PROJECT_PATH, 'x86_64')
BUILDS.append({BUILD_64_BASE_PATH: UNITY_64_DLL_PATH})
BUILD_32_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'win32-dynamic', 'src', 'Release')
UNITY_32_DLL_PATH = os.path.join(UNITY_PROJECT_PATH, 'x86')
BUILDS.append({BUILD_32_BASE_PATH: UNITY_32_DLL_PATH})
elif sys.platform == 'darwin':
LIBRARY_NAME = 'discord-rpc.bundle'
BUILD_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'osx-dynamic', 'src')
UNITY_DLL_PATH = UNITY_PROJECT_PATH
os.rename(
os.path.join(BUILD_BASE_PATH, 'libdiscord-rpc.dylib'), os.path.join(BUILD_BASE_PATH, 'discord-rpc.bundle'))
BUILDS.append({BUILD_BASE_PATH: UNITY_DLL_PATH})
elif sys.platform.startswith('linux'):
LIBRARY_NAME = 'discord-rpc.so'
BUILD_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'linux-dynamic', 'src')
UNITY_DLL_PATH = os.path.join(UNITY_PROJECT_PATH, 'x86')
os.rename(os.path.join(BUILD_BASE_PATH, 'libdiscord-rpc.so'), os.path.join(BUILD_BASE_PATH, 'discord-rpc.so'))
BUILDS.append({BUILD_BASE_PATH: UNITY_DLL_PATH})
else:
raise Exception('Unsupported platform ' + sys.platform)
for build in BUILDS:
for i in build:
mkdir_p(build[i])
shutil.copy(os.path.join(i, LIBRARY_NAME), build[i])
@cli.command()
@click.pass_context
def unreal(ctx):
""" build libs and copy them into the unreal project """
ctx.invoke(libs, clean=False, static=False, shared=True, skip_formatter=True, just_release=True)
BUILDS = []
click.echo('--- Copying libs and header into unreal example')
UNREAL_PROJECT_PATH = os.path.join(SCRIPT_PATH, 'examples', 'unrealstatus', 'Plugins', 'discordrpc')
UNREAL_INCLUDE_PATH = os.path.join(UNREAL_PROJECT_PATH, 'Source', 'ThirdParty', 'DiscordRpcLibrary', 'Include')
mkdir_p(UNREAL_INCLUDE_PATH)
shutil.copy(os.path.join(SCRIPT_PATH, 'include', 'discord_rpc.h'), UNREAL_INCLUDE_PATH)
if sys.platform.startswith('win'):
LIBRARY_NAME = 'discord-rpc.lib'
BUILD_64_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'win64-dynamic', 'src', 'Release')
UNREAL_64_DLL_PATH = os.path.join(UNREAL_PROJECT_PATH, 'Source', 'ThirdParty', 'DiscordRpcLibrary', 'Win64')
BUILDS.append({BUILD_64_BASE_PATH: UNREAL_64_DLL_PATH})
BUILD_32_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'win32-dynamic', 'src', 'Release')
UNREAL_32_DLL_PATH = os.path.join(UNREAL_PROJECT_PATH, 'Source', 'ThirdParty', 'DiscordRpcLibrary', 'Win32')
BUILDS.append({BUILD_32_BASE_PATH: UNREAL_32_DLL_PATH})
elif sys.platform == 'darwin':
LIBRARY_NAME = 'libdiscord-rpc.dylib'
BUILD_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'osx-dynamic', 'src')
UNREAL_DLL_PATH = os.path.join(UNREAL_PROJECT_PATH, 'Source', 'ThirdParty', 'DiscordRpcLibrary', 'Mac')
BUILDS.append({BUILD_BASE_PATH: UNREAL_DLL_PATH})
elif sys.platform.startswith('linux'):
LIBRARY_NAME = 'libdiscord-rpc.so'
BUILD_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'linux-dynamic', 'src')
UNREAL_DLL_PATH = os.path.join(UNREAL_PROJECT_PATH, 'Source', 'ThirdParty', 'DiscordRpcLibrary', 'Linux')
BUILDS.append({BUILD_BASE_PATH: UNREAL_DLL_PATH})
else:
raise Exception('Unsupported platform ' + sys.platform)
for build in BUILDS:
for i in build:
mkdir_p(build[i])
shutil.copy(os.path.join(i, LIBRARY_NAME), build[i])
def build_lib(build_name, generator, options, just_release):
""" Create a dir under builds, run build and install in it """
build_path = os.path.join(SCRIPT_PATH, 'builds', build_name)
install_path = os.path.join(INSTALL_ROOT, build_name)
mkdir_p(build_path)
mkdir_p(install_path)
with cd(build_path):
initial_cmake = ['cmake', SCRIPT_PATH, '-DCMAKE_INSTALL_PREFIX=%s' % os.path.join('..', 'install', build_name)]
if generator:
initial_cmake.extend(['-G', generator])
for key in options:
val = options[key]
if type(val) is bool:
val = 'ON' if val else 'OFF'
initial_cmake.append('-D%s=%s' % (key, val))
click.echo('--- Building ' + build_name)
subprocess.check_call(initial_cmake)
if not just_release:
subprocess.check_call(['cmake', '--build', '.', '--config', 'Debug'])
subprocess.check_call(['cmake', '--build', '.', '--config', 'Release', '--target', 'install'])
@cli.command()
def archive():
""" create zip of install dir """
click.echo('--- Archiving')
archive_file_path = os.path.join(SCRIPT_PATH, 'builds', 'discord-rpc-%s.zip' % get_platform())
archive_file = zipfile.ZipFile(archive_file_path, 'w', zipfile.ZIP_DEFLATED)
archive_src_base_path = INSTALL_ROOT
archive_dst_base_path = 'discord-rpc'
with cd(archive_src_base_path):
for path, _, filenames in os.walk('.'):
for fname in filenames:
fpath = os.path.join(path, fname)
dst_path = os.path.normpath(os.path.join(archive_dst_base_path, fpath))
click.echo('Adding ' + dst_path)
archive_file.write(fpath, dst_path)
@cli.command()
def sign():
""" Do code signing within install directory using our cert """
tool = get_signtool()
signable_extensions = set()
if PLATFORM == 'win':
signable_extensions.add('.dll')
sign_command_base = [
tool,
'sign',
'/n',
'Discord Inc.',
'/a',
'/tr',
'http://timestamp.digicert.com/rfc3161',
'/as',
'/td',
'sha256',
'/fd',
'sha256',
]
elif PLATFORM == 'osx':
signable_extensions.add('.dylib')
sign_command_base = [
tool,
'--keychain',
os.path.expanduser('~/Library/Keychains/login.keychain'),
'-vvvv',
'--deep',
'--force',
'--sign',
'Developer ID Application: Hammer & Chisel Inc. (53Q6R32WPB)',
]
else:
click.secho('Not signing things on this platform yet', fg='red')
return
click.echo('--- Signing')
for path, _, filenames in os.walk(INSTALL_ROOT):
for fname in filenames:
ext = os.path.splitext(fname)[1]
if ext not in signable_extensions:
continue
fpath = os.path.join(path, fname)
click.echo('Sign ' + fpath)
sign_command = sign_command_base + [fpath]
subprocess.check_call(sign_command)
@cli.command()
@click.option('--clean', is_flag=True)
@click.option('--static', is_flag=True)
@click.option('--shared', is_flag=True)
@click.option('--skip_formatter', is_flag=True)
@click.option('--just_release', is_flag=True)
def libs(clean, static, shared, skip_formatter, just_release):
""" Do all the builds for this platform """
if clean:
shutil.rmtree('builds', ignore_errors=True)
mkdir_p('builds')
if not (static or shared):
static = True
shared = True
static_options = {}
dynamic_options = {
'BUILD_SHARED_LIBS': True,
'USE_STATIC_CRT': True,
}
if skip_formatter or IS_BUILD_MACHINE:
static_options['CLANG_FORMAT_SUFFIX'] = 'none'
dynamic_options['CLANG_FORMAT_SUFFIX'] = 'none'
if IS_BUILD_MACHINE:
just_release = True
static_options['WARNINGS_AS_ERRORS'] = True
dynamic_options['WARNINGS_AS_ERRORS'] = True
if PLATFORM == 'win':
generator32 = 'Visual Studio 14 2015'
generator64 = 'Visual Studio 14 2015 Win64'
if static:
build_lib('win32-static', generator32, static_options, just_release)
build_lib('win64-static', generator64, static_options, just_release)
if shared:
build_lib('win32-dynamic', generator32, dynamic_options, just_release)
build_lib('win64-dynamic', generator64, dynamic_options, just_release)
elif PLATFORM == 'osx':
if static:
build_lib('osx-static', None, static_options, just_release)
if shared:
build_lib('osx-dynamic', None, dynamic_options, just_release)
elif PLATFORM == 'linux':
if static:
build_lib('linux-static', None, static_options, just_release)
if shared:
build_lib('linux-dynamic', None, dynamic_options, just_release)
if __name__ == '__main__':
os.chdir(SCRIPT_PATH)
sys.exit(cli())

View file

@ -0,0 +1,164 @@
# Hard Mode: Roll Your Own Client
Discord's Rich Presence feature is designed as an obfuscated addition to our existing [RPC infrastructure](https://discordapp.com/developers/docs/topics/rpc). The standalone library and header files make it easy for any dev to drop it into their game.
Our library communicates with Discord over the local Discord RPC socket. We've already done the work in connecting properly, handling disconnects and reconnects, and other RPC intracacies, but those who have done this implementation for our private alpha Voice and Chat SDK can simply make use of the new RPC commands and events to implement Rich Presence.
## Hark! A warning!
By committing to an RPC-only integration, you decide to forego the work our library and header file have done for you in the way of error handling, state storage, disconnecting and reconnecting, and other quality of life abstractions. While simply implementing the new RPC command and events will enable Rich Presence for your game, we highly suggest that you do your best to mimic the functionality of the SDK the most that you can. It ensure not only code quality on your part, but also an excellent experience on the part of your players.
## Application Protocol Registration
One thing that cannot be explicitly done over RPC is registering an application protocol for your game. If you choose to do an RPC-only implementation, you will have to register your application protocol yourself in the format of `discord-[your_app_id]://`. You can use `Discord_Register()` as a good(?) example of how to properly register an application protocol for use with Discord. For OSX and Linux it is probably simpler to handle the protocol registration as part of your install/packaging.
## New RPC Command
The new RPC command for Rich Presence is `SET_ACTIVITY`. The fields are similar to what is outlined in the SDK; we've combined similar fields into objects for the sake of less data on the wire.
The one major difference is the `party.size` field. It is an array with a size of two. The first element is the current party size, `partySize` from the main documentation. The second element is the maximum party size, `partyMax` from the main documentation.
Below is a full example of a `SET_ACTIVITY` command. Field restrictions like size are the same as outlined in the main documentation.
```
{
"cmd": "SET_ACTIVITY",
"args": {
"pid": 9999, // Your application's process id - required field
"activity": {
"state": "In a Group",
"details": "Competitive | In a Match",
"timestamps": {
"start": time(nullptr),
"end": time(nullptr) + ((60 * 5) + 23)
},
"assets": {
"large_image": "numbani_map",
"large_text": "Numbani",
"small_image": "pharah_profile",
"small_text": "Pharah"
},
"party": {
"id": GameEngine.GetPartyId(),
"size": [3, 6]
},
"secrets": {
"join": "025ed05c71f639de8bfaa0d679d7c94b2fdce12f",
"spectate": "e7eb30d2ee025ed05c71ea495f770b76454ee4e0",
"match": "4b2fdce12f639de8bfa7e3591b71a0d679d7c93f"
},
"instance": true
}
},
"nonce": "647d814a-4cf8-4fbb-948f-898abd24f55b"
}
```
## New RPC Events
The three new RPC events for Rich Presence power the ability to join and spectate your friends' games.
First is the `ACTIVITY_JOIN` event:
```json
{
"cmd": "DISPATCH",
"data": {
"secret": "025ed05c71f639de8bfaa0d679d7c94b2fdce12f"
},
"evt": "ACTIVITY_JOIN"
}
```
Second is the `ACTIVITY_SPECTATE` event:
```json
{
"cmd": "DISPATCH",
"data": {
"secret": "e7eb30d2ee025ed05c71ea495f770b76454ee4e0"
},
"evt": "ACTIVITY_SPECTATE"
}
```
And third is the `ACTIVITY_JOIN_REQUEST` event:
```json
{
"cmd": "DISPATCH",
"data": {
"user": {
"id": "53908232506183680",
"username": "Mason",
"discriminator": "1337",
"avatar": "a_bab14f271d565501444b2ca3be944b25"
}
},
"evt": "ACTIVITY_JOIN_REQUEST"
}
```
In order to receive these events, you need to [subscribe](https://discordapp.com/developers/docs/topics/rpc#subscribe) to them like so:
```json
{
"nonce": "be9a6de3-31d0-4767-a8e9-4818c5690015",
"evt": "ACTIVITY_JOIN",
"cmd": "SUBSCRIBE"
}
```
```json
{
"nonce": "ae9qdde3-31d0-8989-a8e9-dnakwy174he",
"evt": "ACTIVITY_SPECTATE",
"cmd": "SUBSCRIBE"
}
```
```json
{
"nonce": "5dc0c062-98c6-47a0-8922-bbb52e9d6afa",
"evt": "ACTIVITY_JOIN_REQUEST",
"cmd": "SUBSCRIBE"
}
```
To unsubscribe from these events, resend with the command `UNSUBSCRIBE`
## Responding
A discord user will request access to the game. If the ACTIVITY_JOIN_REQUEST has been subscribed too, the ACTIVITY_JOIN_REQUEST event will be sent to the host's game. Accept it with following model:
```json
{
"nonce": "5dc0c062-98c6-47a0-8922-15aerg126",
"cmd": "SEND_ACTIVITY_JOIN_INVITE",
"args":
{
"user_id": "53908232506183680"
}
}
```
To reject the request, use `CLOSE_ACTIVITY_REQUEST`:
```json
{
"nonce": "5dc0c062-98c6-47a0-8922-dasg256eafg",
"cmd": "CLOSE_ACTIVITY_REQUEST",
"args":
{
"user_id": "53908232506183680"
}
}
```
## Notes
Here are just some quick notes to help with some common troubleshooting problems.
* IPC will echo back every command you send as a response. Use this as a lock-step feature to avoid flooding messages. Can be used to validate messages such as the Presence or Subscribes.
* The pipe expects for frames to be written in a single byte array. You cannot do multiple `stream.Write(opcode);` `stream.Write(length);` as it will break the pipe. Instead create a buffer, write the data to the buffer, then send the entire buffer to the stream.
* Discord can be on any pipe ranging from `discord-ipc-0` to `discord-ipc-9`. It is a good idea to try and connect to each one and keeping the first one you connect too. For multiple clients (eg Discord and Canary), you might want to add a feature to manually select the pipe so you can more easily debug the application.
* All enums are `lower_snake_case`.
* The opcode and length in the header are `Little Endian Unsigned Integers (32bits)`. In some languages, you must convert them as they can be architecture specific.
* [Discord Rich Presence How-To](https://discordapp.com/developers/docs/rich-presence/how-to) contains a lot of the information this document doesn't. For example, it will tell you about the response payload.
* In the documentation, DISCORD_REPLY_IGNORE is just implemented the same as DISCORD_REPLY_NO.
* You can test the Join / Spectate feature by enabling them in your profile and whitelisting a test account. Use Canary to run 2 accounts on the same machine.

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View file

@ -0,0 +1,8 @@
/Library/
/Temp/
/obj/
/Assets/Plugins/
/Assets/Plugins.meta
*.sln
*.csproj
*.userprefs

View file

@ -0,0 +1,125 @@
using UnityEngine;
[System.Serializable]
public class DiscordJoinEvent : UnityEngine.Events.UnityEvent<string> { }
[System.Serializable]
public class DiscordSpectateEvent : UnityEngine.Events.UnityEvent<string> { }
[System.Serializable]
public class DiscordJoinRequestEvent : UnityEngine.Events.UnityEvent<DiscordRpc.DiscordUser> { }
public class DiscordController : MonoBehaviour
{
public DiscordRpc.RichPresence presence = new DiscordRpc.RichPresence();
public string applicationId;
public string optionalSteamId;
public int clickCounter;
public DiscordRpc.DiscordUser joinRequest;
public UnityEngine.Events.UnityEvent onConnect;
public UnityEngine.Events.UnityEvent onDisconnect;
public UnityEngine.Events.UnityEvent hasResponded;
public DiscordJoinEvent onJoin;
public DiscordJoinEvent onSpectate;
public DiscordJoinRequestEvent onJoinRequest;
DiscordRpc.EventHandlers handlers;
public void OnClick()
{
Debug.Log("Discord: on click!");
clickCounter++;
presence.details = string.Format("Button clicked {0} times", clickCounter);
presence.joinSecret = "aSecret";
presence.partyId = "aPartyId";
presence.partySize = 1;
presence.partyMax = 3;
presence.partyPrivacy = DiscordRpc.PartyPrivacy.Public;
DiscordRpc.UpdatePresence(presence);
}
public void RequestRespondYes()
{
Debug.Log("Discord: responding yes to Ask to Join request");
DiscordRpc.Respond(joinRequest.userId, DiscordRpc.Reply.Yes);
hasResponded.Invoke();
}
public void RequestRespondNo()
{
Debug.Log("Discord: responding no to Ask to Join request");
DiscordRpc.Respond(joinRequest.userId, DiscordRpc.Reply.No);
hasResponded.Invoke();
}
public void ReadyCallback(ref DiscordRpc.DiscordUser connectedUser)
{
Debug.Log(string.Format("Discord: connected to {0}#{1}: {2}", connectedUser.username, connectedUser.discriminator, connectedUser.userId));
onConnect.Invoke();
}
public void DisconnectedCallback(int errorCode, string message)
{
Debug.Log(string.Format("Discord: disconnect {0}: {1}", errorCode, message));
onDisconnect.Invoke();
}
public void ErrorCallback(int errorCode, string message)
{
Debug.Log(string.Format("Discord: error {0}: {1}", errorCode, message));
}
public void JoinCallback(string secret)
{
Debug.Log(string.Format("Discord: join ({0})", secret));
onJoin.Invoke(secret);
}
public void SpectateCallback(string secret)
{
Debug.Log(string.Format("Discord: spectate ({0})", secret));
onSpectate.Invoke(secret);
}
public void RequestCallback(ref DiscordRpc.DiscordUser request)
{
Debug.Log(string.Format("Discord: join request {0}#{1}: {2}", request.username, request.discriminator, request.userId));
joinRequest = request;
onJoinRequest.Invoke(request);
}
void Start()
{
}
void Update()
{
DiscordRpc.RunCallbacks();
}
void OnEnable()
{
Debug.Log("Discord: init");
handlers = new DiscordRpc.EventHandlers();
handlers.readyCallback += ReadyCallback;
handlers.disconnectedCallback += DisconnectedCallback;
handlers.errorCallback += ErrorCallback;
handlers.joinCallback += JoinCallback;
handlers.spectateCallback += SpectateCallback;
handlers.requestCallback += RequestCallback;
DiscordRpc.Initialize(applicationId, ref handlers, true, optionalSteamId);
}
void OnDisable()
{
Debug.Log("Discord: shutdown");
DiscordRpc.Shutdown();
}
void OnDestroy()
{
}
}

View file

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 27f0a5f59ffffa84c86547736e2e730a
timeCreated: 1501697692
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,231 @@
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
using AOT;
public class DiscordRpc
{
[MonoPInvokeCallback(typeof(OnReadyInfo))]
public static void ReadyCallback(ref DiscordUser connectedUser) { Callbacks.readyCallback(ref connectedUser); }
public delegate void OnReadyInfo(ref DiscordUser connectedUser);
[MonoPInvokeCallback(typeof(OnDisconnectedInfo))]
public static void DisconnectedCallback(int errorCode, string message) { Callbacks.disconnectedCallback(errorCode, message); }
public delegate void OnDisconnectedInfo(int errorCode, string message);
[MonoPInvokeCallback(typeof(OnErrorInfo))]
public static void ErrorCallback(int errorCode, string message) { Callbacks.errorCallback(errorCode, message); }
public delegate void OnErrorInfo(int errorCode, string message);
[MonoPInvokeCallback(typeof(OnJoinInfo))]
public static void JoinCallback(string secret) { Callbacks.joinCallback(secret); }
public delegate void OnJoinInfo(string secret);
[MonoPInvokeCallback(typeof(OnSpectateInfo))]
public static void SpectateCallback(string secret) { Callbacks.spectateCallback(secret); }
public delegate void OnSpectateInfo(string secret);
[MonoPInvokeCallback(typeof(OnRequestInfo))]
public static void RequestCallback(ref DiscordUser request) { Callbacks.requestCallback(ref request); }
public delegate void OnRequestInfo(ref DiscordUser request);
static EventHandlers Callbacks { get; set; }
public struct EventHandlers
{
public OnReadyInfo readyCallback;
public OnDisconnectedInfo disconnectedCallback;
public OnErrorInfo errorCallback;
public OnJoinInfo joinCallback;
public OnSpectateInfo spectateCallback;
public OnRequestInfo requestCallback;
}
[Serializable, StructLayout(LayoutKind.Sequential)]
public struct RichPresenceStruct
{
public IntPtr state; /* max 128 bytes */
public IntPtr details; /* max 128 bytes */
public long startTimestamp;
public long endTimestamp;
public IntPtr largeImageKey; /* max 32 bytes */
public IntPtr largeImageText; /* max 128 bytes */
public IntPtr smallImageKey; /* max 32 bytes */
public IntPtr smallImageText; /* max 128 bytes */
public IntPtr partyId; /* max 128 bytes */
public int partySize;
public int partyMax;
public int partyPrivacy;
public IntPtr matchSecret; /* max 128 bytes */
public IntPtr joinSecret; /* max 128 bytes */
public IntPtr spectateSecret; /* max 128 bytes */
public bool instance;
}
[Serializable]
public struct DiscordUser
{
public string userId;
public string username;
public string discriminator;
public string avatar;
}
public enum Reply
{
No = 0,
Yes = 1,
Ignore = 2
}
public enum PartyPrivacy
{
Private = 0,
Public = 1
}
public static void Initialize(string applicationId, ref EventHandlers handlers, bool autoRegister, string optionalSteamId)
{
Callbacks = handlers;
EventHandlers staticEventHandlers = new EventHandlers();
staticEventHandlers.readyCallback += DiscordRpc.ReadyCallback;
staticEventHandlers.disconnectedCallback += DiscordRpc.DisconnectedCallback;
staticEventHandlers.errorCallback += DiscordRpc.ErrorCallback;
staticEventHandlers.joinCallback += DiscordRpc.JoinCallback;
staticEventHandlers.spectateCallback += DiscordRpc.SpectateCallback;
staticEventHandlers.requestCallback += DiscordRpc.RequestCallback;
InitializeInternal(applicationId, ref staticEventHandlers, autoRegister, optionalSteamId);
}
[DllImport("discord-rpc", EntryPoint = "Discord_Initialize", CallingConvention = CallingConvention.Cdecl)]
static extern void InitializeInternal(string applicationId, ref EventHandlers handlers, bool autoRegister, string optionalSteamId);
[DllImport("discord-rpc", EntryPoint = "Discord_Shutdown", CallingConvention = CallingConvention.Cdecl)]
public static extern void Shutdown();
[DllImport("discord-rpc", EntryPoint = "Discord_RunCallbacks", CallingConvention = CallingConvention.Cdecl)]
public static extern void RunCallbacks();
[DllImport("discord-rpc", EntryPoint = "Discord_UpdatePresence", CallingConvention = CallingConvention.Cdecl)]
private static extern void UpdatePresenceNative(ref RichPresenceStruct presence);
[DllImport("discord-rpc", EntryPoint = "Discord_ClearPresence", CallingConvention = CallingConvention.Cdecl)]
public static extern void ClearPresence();
[DllImport("discord-rpc", EntryPoint = "Discord_Respond", CallingConvention = CallingConvention.Cdecl)]
public static extern void Respond(string userId, Reply reply);
[DllImport("discord-rpc", EntryPoint = "Discord_UpdateHandlers", CallingConvention = CallingConvention.Cdecl)]
public static extern void UpdateHandlers(ref EventHandlers handlers);
public static void UpdatePresence(RichPresence presence)
{
var presencestruct = presence.GetStruct();
UpdatePresenceNative(ref presencestruct);
presence.FreeMem();
}
public class RichPresence
{
private RichPresenceStruct _presence;
private readonly List<IntPtr> _buffers = new List<IntPtr>(10);
public string state; /* max 128 bytes */
public string details; /* max 128 bytes */
public long startTimestamp;
public long endTimestamp;
public string largeImageKey; /* max 32 bytes */
public string largeImageText; /* max 128 bytes */
public string smallImageKey; /* max 32 bytes */
public string smallImageText; /* max 128 bytes */
public string partyId; /* max 128 bytes */
public int partySize;
public int partyMax;
public PartyPrivacy partyPrivacy;
public string matchSecret; /* max 128 bytes */
public string joinSecret; /* max 128 bytes */
public string spectateSecret; /* max 128 bytes */
public bool instance;
/// <summary>
/// Get the <see cref="RichPresenceStruct"/> reprensentation of this instance
/// </summary>
/// <returns><see cref="RichPresenceStruct"/> reprensentation of this instance</returns>
internal RichPresenceStruct GetStruct()
{
if (_buffers.Count > 0)
{
FreeMem();
}
_presence.state = StrToPtr(state);
_presence.details = StrToPtr(details);
_presence.startTimestamp = startTimestamp;
_presence.endTimestamp = endTimestamp;
_presence.largeImageKey = StrToPtr(largeImageKey);
_presence.largeImageText = StrToPtr(largeImageText);
_presence.smallImageKey = StrToPtr(smallImageKey);
_presence.smallImageText = StrToPtr(smallImageText);
_presence.partyId = StrToPtr(partyId);
_presence.partySize = partySize;
_presence.partyMax = partyMax;
_presence.partyPrivacy = (int)partyPrivacy;
_presence.matchSecret = StrToPtr(matchSecret);
_presence.joinSecret = StrToPtr(joinSecret);
_presence.spectateSecret = StrToPtr(spectateSecret);
_presence.instance = instance;
return _presence;
}
/// <summary>
/// Returns a pointer to a representation of the given string with a size of maxbytes
/// </summary>
/// <param name="input">String to convert</param>
/// <returns>Pointer to the UTF-8 representation of <see cref="input"/></returns>
private IntPtr StrToPtr(string input)
{
if (string.IsNullOrEmpty(input)) return IntPtr.Zero;
var convbytecnt = Encoding.UTF8.GetByteCount(input);
var buffer = Marshal.AllocHGlobal(convbytecnt + 1);
for (int i = 0; i < convbytecnt + 1; i++)
{
Marshal.WriteByte(buffer, i, 0);
}
_buffers.Add(buffer);
Marshal.Copy(Encoding.UTF8.GetBytes(input), 0, buffer, convbytecnt);
return buffer;
}
/// <summary>
/// Convert string to UTF-8 and add null termination
/// </summary>
/// <param name="toconv">string to convert</param>
/// <returns>UTF-8 representation of <see cref="toconv"/> with added null termination</returns>
private static string StrToUtf8NullTerm(string toconv)
{
var str = toconv.Trim();
var bytes = Encoding.Default.GetBytes(str);
if (bytes.Length > 0 && bytes[bytes.Length - 1] != 0)
{
str += "\0\0";
}
return Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(str));
}
/// <summary>
/// Free the allocated memory for conversion to <see cref="RichPresenceStruct"/>
/// </summary>
internal void FreeMem()
{
for (var i = _buffers.Count - 1; i >= 0; i--)
{
Marshal.FreeHGlobal(_buffers[i]);
_buffers.RemoveAt(i);
}
}
}
}

View file

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: b4474a677de9d80409e98c5393ec5b1e
timeCreated: 1501697692
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,101 @@
using UnityEditor;
using System.Diagnostics;
using System.IO;
[InitializeOnLoad]
public class ScriptBatch
{
static ScriptBatch()
{
EnsureDLL();
}
public static bool FileExists(string filename)
{
return new FileInfo(filename).Exists;
}
public static bool RunRpcBuildScript()
{
UnityEngine.Debug.Log("Try to run build script");
Process proc = new Process();
#if UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX
proc.StartInfo.UseShellExecute = false;
// brew installs cmake in /usr/local/bin, which Unity seems to strip from PATH?
string newPath = proc.StartInfo.EnvironmentVariables["PATH"] + ":/usr/local/bin";
proc.StartInfo.EnvironmentVariables["PATH"] = newPath;
#endif
proc.StartInfo.FileName = "python";
proc.StartInfo.Arguments = "build.py unity";
proc.StartInfo.WorkingDirectory = "../..";
proc.Start();
proc.WaitForExit();
return proc.ExitCode == 0;
}
public static void EnsureDLL()
{
#if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN
string[] dstDirs = { "Assets/Plugins", "Assets/Plugins/x86", "Assets/Plugins/x86_64" };
string[] dstDlls = { "Assets/Plugins/x86/discord-rpc.dll", "Assets/Plugins/x86_64/discord-rpc.dll" };
string[] srcDlls = { "../../builds/install/win64-dynamic/bin/discord-rpc.dll", "../../builds/install/win64-dynamic/bin/discord-rpc.dll" };
#elif UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX
string[] dstDirs = { "Assets/Plugins" };
string[] dstDlls = { "Assets/Plugins/discord-rpc.bundle" };
string[] srcDlls = { "../../builds/install/osx-dynamic/lib/libdiscord-rpc.dylib" };
#else
string[] dstDirs = { "Assets/Plugins", "Assets/Plugins/x86", "Assets/Plugins/x86_64" };
string[] dstDlls = { "Assets/Plugins/discord-rpc.so" };
string[] srcDlls = { "../../builds/install/linux-dynamic/lib/libdiscord-rpc.so" };
#endif
Debug.Assert(dstDlls.Length == srcDlls.Length);
bool exists = true;
foreach (string fname in dstDlls)
{
if (!FileExists(fname))
{
exists = false;
break;
}
}
if (exists)
{
return;
}
exists = true;
foreach (string fname in srcDlls)
{
if (!FileExists(fname))
{
exists = false;
break;
}
}
if (!exists)
{
if (!RunRpcBuildScript())
{
UnityEngine.Debug.LogError("Build failed");
return;
}
}
// make sure the dirs exist
foreach (string dirname in dstDirs)
{
Directory.CreateDirectory(dirname);
}
// Copy dlls
for (int i = 0; i < dstDlls.Length; ++i)
{
FileUtil.CopyFileOrDirectory(srcDlls[i], dstDlls[i]);
}
}
}

View file

@ -0,0 +1,13 @@
fileFormatVersion: 2
guid: e5aecc4633e5f594b85eaa39f49bb402
timeCreated: 1512071254
licenseType: Free
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3b03d21bb25fa494e8694cd6e4b6d769
timeCreated: 1501696924
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,17 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!11 &1
AudioManager:
m_ObjectHideFlags: 0
m_Volume: 1
Rolloff Scale: 1
Doppler Factor: 1
Default Speaker Mode: 2
m_SampleRate: 0
m_DSPBufferSize: 0
m_VirtualVoiceCount: 512
m_RealVoiceCount: 32
m_SpatializerPlugin:
m_AmbisonicDecoderPlugin:
m_DisableAudio: 0
m_VirtualizeEffects: 1

View file

@ -0,0 +1,6 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!236 &1
ClusterInputManager:
m_ObjectHideFlags: 0
m_Inputs: []

View file

@ -0,0 +1,20 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!55 &1
PhysicsManager:
m_ObjectHideFlags: 0
serializedVersion: 3
m_Gravity: {x: 0, y: -9.81, z: 0}
m_DefaultMaterial: {fileID: 0}
m_BounceThreshold: 2
m_SleepThreshold: 0.005
m_DefaultContactOffset: 0.01
m_DefaultSolverIterations: 6
m_DefaultSolverVelocityIterations: 1
m_QueriesHitBackfaces: 0
m_QueriesHitTriggers: 1
m_EnableAdaptiveForce: 0
m_EnablePCM: 1
m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
m_AutoSimulation: 1
m_AutoSyncTransforms: 1

View file

@ -0,0 +1,10 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1045 &1
EditorBuildSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Scenes:
- enabled: 1
path: Assets/main.unity
guid: 3b03d21bb25fa494e8694cd6e4b6d769

View file

@ -0,0 +1,16 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!159 &1
EditorSettings:
m_ObjectHideFlags: 0
serializedVersion: 4
m_ExternalVersionControlSupport: Visible Meta Files
m_SerializationMode: 2
m_DefaultBehaviorMode: 1
m_SpritePackerMode: 4
m_SpritePackerPaddingPower: 1
m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd
m_ProjectGenerationRootNamespace:
m_UserGeneratedProjectSuffix:
m_CollabEditorSettings:
inProgressEnabled: 1

View file

@ -0,0 +1,61 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!30 &1
GraphicsSettings:
m_ObjectHideFlags: 0
serializedVersion: 12
m_Deferred:
m_Mode: 1
m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
m_DeferredReflections:
m_Mode: 1
m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
m_ScreenSpaceShadows:
m_Mode: 1
m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
m_LegacyDeferred:
m_Mode: 1
m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}
m_DepthNormals:
m_Mode: 1
m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
m_MotionVectors:
m_Mode: 1
m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
m_LightHalo:
m_Mode: 1
m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
m_LensFlare:
m_Mode: 1
m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
m_AlwaysIncludedShaders:
- {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
m_PreloadedShaders: []
m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
type: 0}
m_CustomRenderPipeline: {fileID: 0}
m_TransparencySortMode: 0
m_TransparencySortAxis: {x: 0, y: 0, z: 1}
m_DefaultRenderingPath: 1
m_DefaultMobileRenderingPath: 1
m_TierSettings: []
m_LightmapStripping: 0
m_FogStripping: 0
m_InstancingStripping: 0
m_LightmapKeepPlain: 1
m_LightmapKeepDirCombined: 1
m_LightmapKeepDynamicPlain: 1
m_LightmapKeepDynamicDirCombined: 1
m_LightmapKeepShadowMask: 1
m_LightmapKeepSubtractive: 1
m_FogKeepLinear: 1
m_FogKeepExp: 1
m_FogKeepExp2: 1
m_AlbedoSwatchInfos: []
m_LightsUseLinearIntensity: 0
m_LightsUseColorTemperature: 0

View file

@ -0,0 +1,295 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!13 &1
InputManager:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Axes:
- serializedVersion: 3
m_Name: Horizontal
descriptiveName:
descriptiveNegativeName:
negativeButton: left
positiveButton: right
altNegativeButton: a
altPositiveButton: d
gravity: 3
dead: 0.001
sensitivity: 3
snap: 1
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Vertical
descriptiveName:
descriptiveNegativeName:
negativeButton: down
positiveButton: up
altNegativeButton: s
altPositiveButton: w
gravity: 3
dead: 0.001
sensitivity: 3
snap: 1
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Fire1
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: left ctrl
altNegativeButton:
altPositiveButton: mouse 0
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Fire2
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: left alt
altNegativeButton:
altPositiveButton: mouse 1
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Fire3
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: left shift
altNegativeButton:
altPositiveButton: mouse 2
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Jump
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: space
altNegativeButton:
altPositiveButton:
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Mouse X
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton:
altNegativeButton:
altPositiveButton:
gravity: 0
dead: 0
sensitivity: 0.1
snap: 0
invert: 0
type: 1
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Mouse Y
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton:
altNegativeButton:
altPositiveButton:
gravity: 0
dead: 0
sensitivity: 0.1
snap: 0
invert: 0
type: 1
axis: 1
joyNum: 0
- serializedVersion: 3
m_Name: Mouse ScrollWheel
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton:
altNegativeButton:
altPositiveButton:
gravity: 0
dead: 0
sensitivity: 0.1
snap: 0
invert: 0
type: 1
axis: 2
joyNum: 0
- serializedVersion: 3
m_Name: Horizontal
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton:
altNegativeButton:
altPositiveButton:
gravity: 0
dead: 0.19
sensitivity: 1
snap: 0
invert: 0
type: 2
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Vertical
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton:
altNegativeButton:
altPositiveButton:
gravity: 0
dead: 0.19
sensitivity: 1
snap: 0
invert: 1
type: 2
axis: 1
joyNum: 0
- serializedVersion: 3
m_Name: Fire1
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: joystick button 0
altNegativeButton:
altPositiveButton:
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Fire2
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: joystick button 1
altNegativeButton:
altPositiveButton:
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Fire3
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: joystick button 2
altNegativeButton:
altPositiveButton:
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Jump
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: joystick button 3
altNegativeButton:
altPositiveButton:
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Submit
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: return
altNegativeButton:
altPositiveButton: joystick button 0
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Submit
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: enter
altNegativeButton:
altPositiveButton: space
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Cancel
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: escape
altNegativeButton:
altPositiveButton: joystick button 1
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0

View file

@ -0,0 +1,89 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!126 &1
NavMeshProjectSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
areas:
- name: Walkable
cost: 1
- name: Not Walkable
cost: 1
- name: Jump
cost: 2
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
m_LastAgentTypeID: -887442657
m_Settings:
- serializedVersion: 2
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.75
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
m_SettingNames:
- Humanoid

View file

@ -0,0 +1,8 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!149 &1
NetworkManager:
m_ObjectHideFlags: 0
m_DebugLevel: 0
m_Sendrate: 15
m_AssetToPrefab: {}

View file

@ -0,0 +1,37 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!19 &1
Physics2DSettings:
m_ObjectHideFlags: 0
serializedVersion: 3
m_Gravity: {x: 0, y: -9.81}
m_DefaultMaterial: {fileID: 0}
m_VelocityIterations: 8
m_PositionIterations: 3
m_VelocityThreshold: 1
m_MaxLinearCorrection: 0.2
m_MaxAngularCorrection: 8
m_MaxTranslationSpeed: 100
m_MaxRotationSpeed: 360
m_BaumgarteScale: 0.2
m_BaumgarteTimeOfImpactScale: 0.75
m_TimeToSleep: 0.5
m_LinearSleepTolerance: 0.01
m_AngularSleepTolerance: 2
m_DefaultContactOffset: 0.01
m_AutoSimulation: 1
m_QueriesHitTriggers: 1
m_QueriesStartInColliders: 1
m_ChangeStopsCallbacks: 0
m_CallbacksOnDisable: 1
m_AutoSyncTransforms: 1
m_AlwaysShowColliders: 0
m_ShowColliderSleep: 1
m_ShowColliderContacts: 0
m_ShowColliderAABB: 0
m_ContactArrowScale: 0.2
m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

View file

@ -0,0 +1,610 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!129 &1
PlayerSettings:
m_ObjectHideFlags: 0
serializedVersion: 13
productGUID: 5eccc60d3e382a346a65f512d6b81b84
AndroidProfiler: 0
AndroidFilterTouchesWhenObscured: 0
defaultScreenOrientation: 4
targetDevice: 2
useOnDemandResources: 0
accelerometerFrequency: 60
companyName: Discord Inc.
productName: button-clicker
defaultCursor: {fileID: 0}
cursorHotspot: {x: 0, y: 0}
m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}
m_ShowUnitySplashScreen: 1
m_ShowUnitySplashLogo: 1
m_SplashScreenOverlayOpacity: 1
m_SplashScreenAnimation: 1
m_SplashScreenLogoStyle: 1
m_SplashScreenDrawMode: 0
m_SplashScreenBackgroundAnimationZoom: 1
m_SplashScreenLogoAnimationZoom: 1
m_SplashScreenBackgroundLandscapeAspect: 1
m_SplashScreenBackgroundPortraitAspect: 1
m_SplashScreenBackgroundLandscapeUvs:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
m_SplashScreenBackgroundPortraitUvs:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
m_SplashScreenLogos: []
m_VirtualRealitySplashScreen: {fileID: 0}
m_HolographicTrackingLossScreen: {fileID: 0}
defaultScreenWidth: 1024
defaultScreenHeight: 768
defaultScreenWidthWeb: 960
defaultScreenHeightWeb: 600
m_StereoRenderingPath: 0
m_ActiveColorSpace: 0
m_MTRendering: 1
m_StackTraceTypes: 010000000100000001000000010000000100000001000000
iosShowActivityIndicatorOnLoading: -1
androidShowActivityIndicatorOnLoading: -1
tizenShowActivityIndicatorOnLoading: -1
iosAppInBackgroundBehavior: 0
displayResolutionDialog: 1
iosAllowHTTPDownload: 1
allowedAutorotateToPortrait: 1
allowedAutorotateToPortraitUpsideDown: 1
allowedAutorotateToLandscapeRight: 1
allowedAutorotateToLandscapeLeft: 1
useOSAutorotation: 1
use32BitDisplayBuffer: 1
disableDepthAndStencilBuffers: 0
androidBlitType: 0
defaultIsFullScreen: 1
defaultIsNativeResolution: 1
macRetinaSupport: 1
runInBackground: 0
captureSingleScreen: 0
muteOtherAudioSources: 0
Prepare IOS For Recording: 0
Force IOS Speakers When Recording: 0
submitAnalytics: 1
usePlayerLog: 1
bakeCollisionMeshes: 0
forceSingleInstance: 0
resizableWindow: 0
useMacAppStoreValidation: 0
macAppStoreCategory: public.app-category.games
gpuSkinning: 0
graphicsJobs: 0
xboxPIXTextureCapture: 0
xboxEnableAvatar: 0
xboxEnableKinect: 0
xboxEnableKinectAutoTracking: 0
xboxEnableFitness: 0
visibleInBackground: 1
allowFullscreenSwitch: 1
graphicsJobMode: 0
macFullscreenMode: 2
d3d9FullscreenMode: 1
d3d11FullscreenMode: 1
xboxSpeechDB: 0
xboxEnableHeadOrientation: 0
xboxEnableGuest: 0
xboxEnablePIXSampling: 0
metalFramebufferOnly: 0
n3dsDisableStereoscopicView: 0
n3dsEnableSharedListOpt: 1
n3dsEnableVSync: 0
ignoreAlphaClear: 0
xboxOneResolution: 0
xboxOneMonoLoggingLevel: 0
xboxOneLoggingLevel: 1
xboxOneDisableEsram: 0
xboxOnePresentImmediateThreshold: 0
videoMemoryForVertexBuffers: 0
psp2PowerMode: 0
psp2AcquireBGM: 1
wiiUTVResolution: 0
wiiUGamePadMSAA: 1
wiiUSupportsNunchuk: 0
wiiUSupportsClassicController: 0
wiiUSupportsBalanceBoard: 0
wiiUSupportsMotionPlus: 0
wiiUSupportsProController: 0
wiiUAllowScreenCapture: 1
wiiUControllerCount: 0
m_SupportedAspectRatios:
4:3: 1
5:4: 1
16:10: 1
16:9: 1
Others: 1
bundleVersion: 1.0
preloadedAssets: []
metroInputSource: 0
m_HolographicPauseOnTrackingLoss: 1
xboxOneDisableKinectGpuReservation: 0
xboxOneEnable7thCore: 0
vrSettings:
cardboard:
depthFormat: 0
enableTransitionView: 0
daydream:
depthFormat: 0
useSustainedPerformanceMode: 0
enableVideoLayer: 0
useProtectedVideoMemory: 0
hololens:
depthFormat: 1
protectGraphicsMemory: 0
useHDRDisplay: 0
m_ColorGamuts: 00000000
targetPixelDensity: 0
resolutionScalingMode: 0
androidSupportedAspectRatio: 1
androidMaxAspectRatio: 2.1
applicationIdentifier: {}
buildNumber: {}
AndroidBundleVersionCode: 1
AndroidMinSdkVersion: 16
AndroidTargetSdkVersion: 0
AndroidPreferredInstallLocation: 1
aotOptions:
stripEngineCode: 1
iPhoneStrippingLevel: 0
iPhoneScriptCallOptimization: 0
ForceInternetPermission: 0
ForceSDCardPermission: 0
CreateWallpaper: 0
APKExpansionFiles: 0
keepLoadedShadersAlive: 0
StripUnusedMeshComponents: 0
VertexChannelCompressionMask:
serializedVersion: 2
m_Bits: 238
iPhoneSdkVersion: 988
iOSTargetOSVersionString: 7.0
tvOSSdkVersion: 0
tvOSRequireExtendedGameController: 0
tvOSTargetOSVersionString: 9.0
uIPrerenderedIcon: 0
uIRequiresPersistentWiFi: 0
uIRequiresFullScreen: 1
uIStatusBarHidden: 1
uIExitOnSuspend: 0
uIStatusBarStyle: 0
iPhoneSplashScreen: {fileID: 0}
iPhoneHighResSplashScreen: {fileID: 0}
iPhoneTallHighResSplashScreen: {fileID: 0}
iPhone47inSplashScreen: {fileID: 0}
iPhone55inPortraitSplashScreen: {fileID: 0}
iPhone55inLandscapeSplashScreen: {fileID: 0}
iPadPortraitSplashScreen: {fileID: 0}
iPadHighResPortraitSplashScreen: {fileID: 0}
iPadLandscapeSplashScreen: {fileID: 0}
iPadHighResLandscapeSplashScreen: {fileID: 0}
appleTVSplashScreen: {fileID: 0}
tvOSSmallIconLayers: []
tvOSLargeIconLayers: []
tvOSTopShelfImageLayers: []
tvOSTopShelfImageWideLayers: []
iOSLaunchScreenType: 0
iOSLaunchScreenPortrait: {fileID: 0}
iOSLaunchScreenLandscape: {fileID: 0}
iOSLaunchScreenBackgroundColor:
serializedVersion: 2
rgba: 0
iOSLaunchScreenFillPct: 100
iOSLaunchScreenSize: 100
iOSLaunchScreenCustomXibPath:
iOSLaunchScreeniPadType: 0
iOSLaunchScreeniPadImage: {fileID: 0}
iOSLaunchScreeniPadBackgroundColor:
serializedVersion: 2
rgba: 0
iOSLaunchScreeniPadFillPct: 100
iOSLaunchScreeniPadSize: 100
iOSLaunchScreeniPadCustomXibPath:
iOSDeviceRequirements: []
iOSURLSchemes: []
iOSBackgroundModes: 0
iOSMetalForceHardShadows: 0
metalEditorSupport: 1
metalAPIValidation: 1
iOSRenderExtraFrameOnPause: 0
appleDeveloperTeamID:
iOSManualSigningProvisioningProfileID:
tvOSManualSigningProvisioningProfileID:
appleEnableAutomaticSigning: 0
AndroidTargetDevice: 0
AndroidSplashScreenScale: 0
androidSplashScreen: {fileID: 0}
AndroidKeystoreName:
AndroidKeyaliasName:
AndroidTVCompatibility: 1
AndroidIsGame: 1
AndroidEnableTango: 0
androidEnableBanner: 1
androidUseLowAccuracyLocation: 0
m_AndroidBanners:
- width: 320
height: 180
banner: {fileID: 0}
androidGamepadSupportLevel: 0
resolutionDialogBanner: {fileID: 0}
m_BuildTargetIcons: []
m_BuildTargetBatching: []
m_BuildTargetGraphicsAPIs: []
m_BuildTargetVRSettings: []
m_BuildTargetEnableVuforiaSettings: []
openGLRequireES31: 0
openGLRequireES31AEP: 0
m_TemplateCustomTags: {}
mobileMTRendering:
Android: 1
iPhone: 1
tvOS: 1
wiiUTitleID: 0005000011000000
wiiUGroupID: 00010000
wiiUCommonSaveSize: 4096
wiiUAccountSaveSize: 2048
wiiUOlvAccessKey: 0
wiiUTinCode: 0
wiiUJoinGameId: 0
wiiUJoinGameModeMask: 0000000000000000
wiiUCommonBossSize: 0
wiiUAccountBossSize: 0
wiiUAddOnUniqueIDs: []
wiiUMainThreadStackSize: 3072
wiiULoaderThreadStackSize: 1024
wiiUSystemHeapSize: 128
wiiUTVStartupScreen: {fileID: 0}
wiiUGamePadStartupScreen: {fileID: 0}
wiiUDrcBufferDisabled: 0
wiiUProfilerLibPath:
playModeTestRunnerEnabled: 0
actionOnDotNetUnhandledException: 1
enableInternalProfiler: 0
logObjCUncaughtExceptions: 1
enableCrashReportAPI: 0
cameraUsageDescription:
locationUsageDescription:
microphoneUsageDescription:
switchNetLibKey:
switchSocketMemoryPoolSize: 6144
switchSocketAllocatorPoolSize: 128
switchSocketConcurrencyLimit: 14
switchScreenResolutionBehavior: 2
switchUseCPUProfiler: 0
switchApplicationID: 0x01004b9000490000
switchNSODependencies:
switchTitleNames_0:
switchTitleNames_1:
switchTitleNames_2:
switchTitleNames_3:
switchTitleNames_4:
switchTitleNames_5:
switchTitleNames_6:
switchTitleNames_7:
switchTitleNames_8:
switchTitleNames_9:
switchTitleNames_10:
switchTitleNames_11:
switchPublisherNames_0:
switchPublisherNames_1:
switchPublisherNames_2:
switchPublisherNames_3:
switchPublisherNames_4:
switchPublisherNames_5:
switchPublisherNames_6:
switchPublisherNames_7:
switchPublisherNames_8:
switchPublisherNames_9:
switchPublisherNames_10:
switchPublisherNames_11:
switchIcons_0: {fileID: 0}
switchIcons_1: {fileID: 0}
switchIcons_2: {fileID: 0}
switchIcons_3: {fileID: 0}
switchIcons_4: {fileID: 0}
switchIcons_5: {fileID: 0}
switchIcons_6: {fileID: 0}
switchIcons_7: {fileID: 0}
switchIcons_8: {fileID: 0}
switchIcons_9: {fileID: 0}
switchIcons_10: {fileID: 0}
switchIcons_11: {fileID: 0}
switchSmallIcons_0: {fileID: 0}
switchSmallIcons_1: {fileID: 0}
switchSmallIcons_2: {fileID: 0}
switchSmallIcons_3: {fileID: 0}
switchSmallIcons_4: {fileID: 0}
switchSmallIcons_5: {fileID: 0}
switchSmallIcons_6: {fileID: 0}
switchSmallIcons_7: {fileID: 0}
switchSmallIcons_8: {fileID: 0}
switchSmallIcons_9: {fileID: 0}
switchSmallIcons_10: {fileID: 0}
switchSmallIcons_11: {fileID: 0}
switchManualHTML:
switchAccessibleURLs:
switchLegalInformation:
switchMainThreadStackSize: 1048576
switchPresenceGroupId: 0x01004b9000490000
switchLogoHandling: 0
switchReleaseVersion: 0
switchDisplayVersion: 1.0.0
switchStartupUserAccount: 0
switchTouchScreenUsage: 0
switchSupportedLanguagesMask: 0
switchLogoType: 0
switchApplicationErrorCodeCategory:
switchUserAccountSaveDataSize: 0
switchUserAccountSaveDataJournalSize: 0
switchApplicationAttribute: 0
switchCardSpecSize: 4
switchCardSpecClock: 25
switchRatingsMask: 0
switchRatingsInt_0: 0
switchRatingsInt_1: 0
switchRatingsInt_2: 0
switchRatingsInt_3: 0
switchRatingsInt_4: 0
switchRatingsInt_5: 0
switchRatingsInt_6: 0
switchRatingsInt_7: 0
switchRatingsInt_8: 0
switchRatingsInt_9: 0
switchRatingsInt_10: 0
switchRatingsInt_11: 0
switchLocalCommunicationIds_0: 0x01004b9000490000
switchLocalCommunicationIds_1:
switchLocalCommunicationIds_2:
switchLocalCommunicationIds_3:
switchLocalCommunicationIds_4:
switchLocalCommunicationIds_5:
switchLocalCommunicationIds_6:
switchLocalCommunicationIds_7:
switchParentalControl: 0
switchAllowsScreenshot: 1
switchDataLossConfirmation: 0
switchSupportedNpadStyles: 3
switchSocketConfigEnabled: 0
switchTcpInitialSendBufferSize: 32
switchTcpInitialReceiveBufferSize: 64
switchTcpAutoSendBufferSizeMax: 256
switchTcpAutoReceiveBufferSizeMax: 256
switchUdpSendBufferSize: 9
switchUdpReceiveBufferSize: 42
switchSocketBufferEfficiency: 4
switchSocketInitializeEnabled: 1
switchNetworkInterfaceManagerInitializeEnabled: 1
switchPlayerConnectionEnabled: 1
ps4NPAgeRating: 12
ps4NPTitleSecret:
ps4NPTrophyPackPath:
ps4ParentalLevel: 11
ps4ContentID: ED1633-NPXX51362_00-0000000000000000
ps4Category: 0
ps4MasterVersion: 01.00
ps4AppVersion: 01.00
ps4AppType: 0
ps4ParamSfxPath:
ps4VideoOutPixelFormat: 0
ps4VideoOutInitialWidth: 1920
ps4VideoOutBaseModeInitialWidth: 1920
ps4VideoOutReprojectionRate: 120
ps4PronunciationXMLPath:
ps4PronunciationSIGPath:
ps4BackgroundImagePath:
ps4StartupImagePath:
ps4SaveDataImagePath:
ps4SdkOverride:
ps4BGMPath:
ps4ShareFilePath:
ps4ShareOverlayImagePath:
ps4PrivacyGuardImagePath:
ps4NPtitleDatPath:
ps4RemotePlayKeyAssignment: -1
ps4RemotePlayKeyMappingDir:
ps4PlayTogetherPlayerCount: 0
ps4EnterButtonAssignment: 1
ps4ApplicationParam1: 0
ps4ApplicationParam2: 0
ps4ApplicationParam3: 0
ps4ApplicationParam4: 0
ps4DownloadDataSize: 0
ps4GarlicHeapSize: 2048
ps4ProGarlicHeapSize: 2560
ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ
ps4pnSessions: 1
ps4pnPresence: 1
ps4pnFriends: 1
ps4pnGameCustomData: 1
playerPrefsSupport: 0
restrictedAudioUsageRights: 0
ps4UseResolutionFallback: 0
ps4ReprojectionSupport: 0
ps4UseAudio3dBackend: 0
ps4SocialScreenEnabled: 0
ps4ScriptOptimizationLevel: 0
ps4Audio3dVirtualSpeakerCount: 14
ps4attribCpuUsage: 0
ps4PatchPkgPath:
ps4PatchLatestPkgPath:
ps4PatchChangeinfoPath:
ps4PatchDayOne: 0
ps4attribUserManagement: 0
ps4attribMoveSupport: 0
ps4attrib3DSupport: 0
ps4attribShareSupport: 0
ps4attribExclusiveVR: 0
ps4disableAutoHideSplash: 0
ps4videoRecordingFeaturesUsed: 0
ps4contentSearchFeaturesUsed: 0
ps4attribEyeToEyeDistanceSettingVR: 0
ps4IncludedModules: []
monoEnv:
psp2Splashimage: {fileID: 0}
psp2NPTrophyPackPath:
psp2NPSupportGBMorGJP: 0
psp2NPAgeRating: 12
psp2NPTitleDatPath:
psp2NPCommsID:
psp2NPCommunicationsID:
psp2NPCommsPassphrase:
psp2NPCommsSig:
psp2ParamSfxPath:
psp2ManualPath:
psp2LiveAreaGatePath:
psp2LiveAreaBackroundPath:
psp2LiveAreaPath:
psp2LiveAreaTrialPath:
psp2PatchChangeInfoPath:
psp2PatchOriginalPackage:
psp2PackagePassword: F69AzBlax3CF3EDNhm3soLBPh71Yexui
psp2KeystoneFile:
psp2MemoryExpansionMode: 0
psp2DRMType: 0
psp2StorageType: 0
psp2MediaCapacity: 0
psp2DLCConfigPath:
psp2ThumbnailPath:
psp2BackgroundPath:
psp2SoundPath:
psp2TrophyCommId:
psp2TrophyPackagePath:
psp2PackagedResourcesPath:
psp2SaveDataQuota: 10240
psp2ParentalLevel: 1
psp2ShortTitle: Not Set
psp2ContentID: IV0000-ABCD12345_00-0123456789ABCDEF
psp2Category: 0
psp2MasterVersion: 01.00
psp2AppVersion: 01.00
psp2TVBootMode: 0
psp2EnterButtonAssignment: 2
psp2TVDisableEmu: 0
psp2AllowTwitterDialog: 1
psp2Upgradable: 0
psp2HealthWarning: 0
psp2UseLibLocation: 0
psp2InfoBarOnStartup: 0
psp2InfoBarColor: 0
psp2ScriptOptimizationLevel: 0
psmSplashimage: {fileID: 0}
splashScreenBackgroundSourceLandscape: {fileID: 0}
splashScreenBackgroundSourcePortrait: {fileID: 0}
spritePackerPolicy:
webGLMemorySize: 256
webGLExceptionSupport: 1
webGLNameFilesAsHashes: 0
webGLDataCaching: 0
webGLDebugSymbols: 0
webGLEmscriptenArgs:
webGLModulesDirectory:
webGLTemplate: APPLICATION:Default
webGLAnalyzeBuildSize: 0
webGLUseEmbeddedResources: 0
webGLUseWasm: 0
webGLCompressionFormat: 1
scriptingDefineSymbols: {}
platformArchitecture: {}
scriptingBackend: {}
incrementalIl2cppBuild: {}
additionalIl2CppArgs:
scriptingRuntimeVersion: 0
apiCompatibilityLevelPerPlatform: {}
m_RenderingPath: 1
m_MobileRenderingPath: 1
metroPackageName: button-clicker
metroPackageVersion:
metroCertificatePath:
metroCertificatePassword:
metroCertificateSubject:
metroCertificateIssuer:
metroCertificateNotAfter: 0000000000000000
metroApplicationDescription: button-clicker
wsaImages: {}
metroTileShortName:
metroCommandLineArgsFile:
metroTileShowName: 0
metroMediumTileShowName: 0
metroLargeTileShowName: 0
metroWideTileShowName: 0
metroDefaultTileSize: 1
metroTileForegroundText: 2
metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}
metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628,
a: 1}
metroSplashScreenUseBackgroundColor: 0
platformCapabilities: {}
metroFTAName:
metroFTAFileTypes: []
metroProtocolName:
metroCompilationOverrides: 1
tizenProductDescription:
tizenProductURL:
tizenSigningProfileName:
tizenGPSPermissions: 0
tizenMicrophonePermissions: 0
tizenDeploymentTarget:
tizenDeploymentTargetType: -1
tizenMinOSVersion: 1
n3dsUseExtSaveData: 0
n3dsCompressStaticMem: 1
n3dsExtSaveDataNumber: 0x12345
n3dsStackSize: 131072
n3dsTargetPlatform: 2
n3dsRegion: 7
n3dsMediaSize: 0
n3dsLogoStyle: 3
n3dsTitle: GameName
n3dsProductCode:
n3dsApplicationId: 0xFF3FF
stvDeviceAddress:
stvProductDescription:
stvProductAuthor:
stvProductAuthorEmail:
stvProductLink:
stvProductCategory: 0
XboxOneProductId:
XboxOneUpdateKey:
XboxOneSandboxId:
XboxOneContentId:
XboxOneTitleId:
XboxOneSCId:
XboxOneGameOsOverridePath:
XboxOnePackagingOverridePath:
XboxOneAppManifestOverridePath:
XboxOnePackageEncryption: 0
XboxOnePackageUpdateGranularity: 2
XboxOneDescription:
XboxOneLanguage:
- enus
XboxOneCapability: []
XboxOneGameRating: {}
XboxOneIsContentPackage: 0
XboxOneEnableGPUVariability: 0
XboxOneSockets: {}
XboxOneSplashScreen: {fileID: 0}
XboxOneAllowedProductIds: []
XboxOnePersistentLocalStorageSize: 0
xboxOneScriptCompiler: 0
vrEditorSettings:
daydream:
daydreamIconForeground: {fileID: 0}
daydreamIconBackground: {fileID: 0}
cloudServicesEnabled: {}
facebookSdkVersion: 7.9.4
apiCompatibilityLevel: 2
cloudProjectId:
projectName:
organizationId:
cloudEnabled: 0
enableNativePlatformBackendsForNewInputSystem: 0
disableOldInputManagerSupport: 0

View file

@ -0,0 +1 @@
m_EditorVersion: 2017.2.0f3

View file

@ -0,0 +1,193 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!47 &1
QualitySettings:
m_ObjectHideFlags: 0
serializedVersion: 5
m_CurrentQuality: 5
m_QualitySettings:
- serializedVersion: 2
name: Very Low
pixelLightCount: 0
shadows: 0
shadowResolution: 0
shadowProjection: 1
shadowCascades: 1
shadowDistance: 15
shadowNearPlaneOffset: 3
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 0
blendWeights: 1
textureQuality: 1
anisotropicTextures: 0
antiAliasing: 0
softParticles: 0
softVegetation: 0
realtimeReflectionProbes: 0
billboardsFaceCameraPosition: 0
vSyncCount: 0
lodBias: 0.3
maximumLODLevel: 0
particleRaycastBudget: 4
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 4
resolutionScalingFixedDPIFactor: 1
excludedTargetPlatforms: []
- serializedVersion: 2
name: Low
pixelLightCount: 0
shadows: 0
shadowResolution: 0
shadowProjection: 1
shadowCascades: 1
shadowDistance: 20
shadowNearPlaneOffset: 3
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 0
blendWeights: 2
textureQuality: 0
anisotropicTextures: 0
antiAliasing: 0
softParticles: 0
softVegetation: 0
realtimeReflectionProbes: 0
billboardsFaceCameraPosition: 0
vSyncCount: 0
lodBias: 0.4
maximumLODLevel: 0
particleRaycastBudget: 16
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 4
resolutionScalingFixedDPIFactor: 1
excludedTargetPlatforms: []
- serializedVersion: 2
name: Medium
pixelLightCount: 1
shadows: 1
shadowResolution: 0
shadowProjection: 1
shadowCascades: 1
shadowDistance: 20
shadowNearPlaneOffset: 3
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 0
blendWeights: 2
textureQuality: 0
anisotropicTextures: 1
antiAliasing: 0
softParticles: 0
softVegetation: 0
realtimeReflectionProbes: 0
billboardsFaceCameraPosition: 0
vSyncCount: 1
lodBias: 0.7
maximumLODLevel: 0
particleRaycastBudget: 64
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 4
resolutionScalingFixedDPIFactor: 1
excludedTargetPlatforms: []
- serializedVersion: 2
name: High
pixelLightCount: 2
shadows: 2
shadowResolution: 1
shadowProjection: 1
shadowCascades: 2
shadowDistance: 40
shadowNearPlaneOffset: 3
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 1
blendWeights: 2
textureQuality: 0
anisotropicTextures: 1
antiAliasing: 0
softParticles: 0
softVegetation: 1
realtimeReflectionProbes: 1
billboardsFaceCameraPosition: 1
vSyncCount: 1
lodBias: 1
maximumLODLevel: 0
particleRaycastBudget: 256
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 4
resolutionScalingFixedDPIFactor: 1
excludedTargetPlatforms: []
- serializedVersion: 2
name: Very High
pixelLightCount: 3
shadows: 2
shadowResolution: 2
shadowProjection: 1
shadowCascades: 2
shadowDistance: 70
shadowNearPlaneOffset: 3
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 1
blendWeights: 4
textureQuality: 0
anisotropicTextures: 2
antiAliasing: 2
softParticles: 1
softVegetation: 1
realtimeReflectionProbes: 1
billboardsFaceCameraPosition: 1
vSyncCount: 1
lodBias: 1.5
maximumLODLevel: 0
particleRaycastBudget: 1024
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 4
resolutionScalingFixedDPIFactor: 1
excludedTargetPlatforms: []
- serializedVersion: 2
name: Ultra
pixelLightCount: 4
shadows: 2
shadowResolution: 2
shadowProjection: 1
shadowCascades: 4
shadowDistance: 150
shadowNearPlaneOffset: 3
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 1
blendWeights: 4
textureQuality: 0
anisotropicTextures: 2
antiAliasing: 2
softParticles: 1
softVegetation: 1
realtimeReflectionProbes: 1
billboardsFaceCameraPosition: 1
vSyncCount: 1
lodBias: 2
maximumLODLevel: 0
particleRaycastBudget: 4096
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 4
resolutionScalingFixedDPIFactor: 1
excludedTargetPlatforms: []
m_PerPlatformDefaultQuality:
Android: 2
Nintendo 3DS: 5
Nintendo Switch: 5
PS4: 5
PSM: 5
PSP2: 2
Samsung TV: 2
Standalone: 5
Tizen: 2
Web: 5
WebGL: 3
WiiU: 5
Windows Store Apps: 5
XboxOne: 5
iPhone: 2
tvOS: 2

View file

@ -0,0 +1,43 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!78 &1
TagManager:
serializedVersion: 2
tags: []
layers:
- Default
- TransparentFX
- Ignore Raycast
-
- Water
- UI
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
m_SortingLayers:
- name: Default
uniqueID: 0
locked: 0

View file

@ -0,0 +1,9 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!5 &1
TimeManager:
m_ObjectHideFlags: 0
Fixed Timestep: 0.02
Maximum Allowed Timestep: 0.33333334
m_TimeScale: 1
Maximum Particle Timestep: 0.03

View file

@ -0,0 +1,34 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!310 &1
UnityConnectSettings:
m_ObjectHideFlags: 0
m_Enabled: 0
m_TestMode: 0
m_TestEventUrl:
m_TestConfigUrl:
m_TestInitMode: 0
CrashReportingSettings:
m_EventUrl: https://perf-events.cloud.unity3d.com/api/events/crashes
m_Enabled: 0
m_CaptureEditorExceptions: 1
UnityPurchasingSettings:
m_Enabled: 0
m_TestMode: 0
UnityAnalyticsSettings:
m_Enabled: 0
m_InitializeOnStartup: 1
m_TestMode: 0
m_TestEventUrl:
m_TestConfigUrl:
UnityAdsSettings:
m_Enabled: 0
m_InitializeOnStartup: 1
m_TestMode: 0
m_EnabledPlatforms: 4294967295
m_IosGameId:
m_AndroidGameId:
m_GameIds: {}
m_GameId:
PerformanceReportingSettings:
m_Enabled: 0

View file

@ -0,0 +1,4 @@
{
"dependencies": {
}
}

View file

@ -0,0 +1,21 @@
include_directories(${PROJECT_SOURCE_DIR}/include)
add_executable(
send-presence
MACOSX_BUNDLE
send-presence.c
)
set_target_properties(send-presence PROPERTIES
MACOSX_BUNDLE_BUNDLE_NAME "Send Presence"
MACOSX_BUNDLE_GUI_IDENTIFIER "com.discordapp.examples.send-presence"
)
target_link_libraries(send-presence discord-rpc)
install(
TARGETS send-presence
RUNTIME
DESTINATION "bin"
CONFIGURATIONS Release
BUNDLE
DESTINATION "bin"
CONFIGURATIONS Release
)

View file

@ -0,0 +1,206 @@
/*
This is a simple example in C of using the rich presence API asynchronously.
*/
#define _CRT_SECURE_NO_WARNINGS /* thanks Microsoft */
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include "discord_rpc.h"
static const char* APPLICATION_ID = "345229890980937739";
static int FrustrationLevel = 0;
static int64_t StartTime;
static int SendPresence = 1;
static int prompt(char* line, size_t size)
{
int res;
char* nl;
printf("\n> ");
fflush(stdout);
res = fgets(line, (int)size, stdin) ? 1 : 0;
line[size - 1] = 0;
nl = strchr(line, '\n');
if (nl) {
*nl = 0;
}
return res;
}
static void updateDiscordPresence()
{
if (SendPresence) {
char buffer[256];
DiscordRichPresence discordPresence;
memset(&discordPresence, 0, sizeof(discordPresence));
discordPresence.state = "West of House";
sprintf(buffer, "Frustration level: %d", FrustrationLevel);
discordPresence.details = buffer;
discordPresence.startTimestamp = StartTime;
discordPresence.endTimestamp = time(0) + 5 * 60;
discordPresence.largeImageKey = "canary-large";
discordPresence.smallImageKey = "ptb-small";
discordPresence.partyId = "party1234";
discordPresence.partySize = 1;
discordPresence.partyMax = 6;
discordPresence.partyPrivacy = DISCORD_PARTY_PUBLIC;
discordPresence.matchSecret = "xyzzy";
discordPresence.joinSecret = "join";
discordPresence.spectateSecret = "look";
discordPresence.instance = 0;
Discord_UpdatePresence(&discordPresence);
}
else {
Discord_ClearPresence();
}
}
static void handleDiscordReady(const DiscordUser* connectedUser)
{
printf("\nDiscord: connected to user %s#%s - %s\n",
connectedUser->username,
connectedUser->discriminator,
connectedUser->userId);
}
static void handleDiscordDisconnected(int errcode, const char* message)
{
printf("\nDiscord: disconnected (%d: %s)\n", errcode, message);
}
static void handleDiscordError(int errcode, const char* message)
{
printf("\nDiscord: error (%d: %s)\n", errcode, message);
}
static void handleDiscordJoin(const char* secret)
{
printf("\nDiscord: join (%s)\n", secret);
}
static void handleDiscordSpectate(const char* secret)
{
printf("\nDiscord: spectate (%s)\n", secret);
}
static void handleDiscordJoinRequest(const DiscordUser* request)
{
int response = -1;
char yn[4];
printf("\nDiscord: join request from %s#%s - %s\n",
request->username,
request->discriminator,
request->userId);
do {
printf("Accept? (y/n)");
if (!prompt(yn, sizeof(yn))) {
break;
}
if (!yn[0]) {
continue;
}
if (yn[0] == 'y') {
response = DISCORD_REPLY_YES;
break;
}
if (yn[0] == 'n') {
response = DISCORD_REPLY_NO;
break;
}
} while (1);
if (response != -1) {
Discord_Respond(request->userId, response);
}
}
static void discordInit()
{
DiscordEventHandlers handlers;
memset(&handlers, 0, sizeof(handlers));
handlers.ready = handleDiscordReady;
handlers.disconnected = handleDiscordDisconnected;
handlers.errored = handleDiscordError;
handlers.joinGame = handleDiscordJoin;
handlers.spectateGame = handleDiscordSpectate;
handlers.joinRequest = handleDiscordJoinRequest;
Discord_Initialize(APPLICATION_ID, &handlers, 1, NULL);
}
static void gameLoop()
{
char line[512];
char* space;
StartTime = time(0);
printf("You are standing in an open field west of a white house.\n");
while (prompt(line, sizeof(line))) {
if (line[0]) {
if (line[0] == 'q') {
break;
}
if (line[0] == 't') {
printf("Shutting off Discord.\n");
Discord_Shutdown();
continue;
}
if (line[0] == 'c') {
if (SendPresence) {
printf("Clearing presence information.\n");
SendPresence = 0;
}
else {
printf("Restoring presence information.\n");
SendPresence = 1;
}
updateDiscordPresence();
continue;
}
if (line[0] == 'y') {
printf("Reinit Discord.\n");
discordInit();
continue;
}
if (time(NULL) & 1) {
printf("I don't understand that.\n");
}
else {
space = strchr(line, ' ');
if (space) {
*space = 0;
}
printf("I don't know the word \"%s\".\n", line);
}
++FrustrationLevel;
updateDiscordPresence();
}
#ifdef DISCORD_DISABLE_IO_THREAD
Discord_UpdateConnection();
#endif
Discord_RunCallbacks();
}
}
int main(int argc, char* argv[])
{
discordInit();
gameLoop();
Discord_Shutdown();
return 0;
}

View file

@ -0,0 +1,78 @@
# Visual Studio 2015 user specific files
.vs/
# Visual Studio 2015 database file
*.VC.db
# Compiled Object files
*.slo
*.lo
*.o
*.obj
# Precompiled Headers
*.gch
*.pch
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
# Fortran module files
*.mod
# Compiled Static libraries
*.lai
*.la
*.a
*.lib
# Executables
*.exe
*.out
*.app
*.ipa
# These project files can be generated by the engine
*.xcodeproj
*.xcworkspace
*.sln
*.suo
*.opensdf
*.sdf
*.VC.db
*.VC.opendb
# Precompiled Assets
SourceArt/**/*.png
SourceArt/**/*.tga
# Binary Files
Binaries/
# Builds
Build/*
# Whitelist PakBlacklist-<BuildConfiguration>.txt files
!Build/*/
Build/*/**
!Build/*/PakBlacklist*.txt
# Don't ignore icon files in Build
!Build/**/*.ico
# Built data for maps
*_BuiltData.uasset
# Configuration files generated by the Editor
Saved/*
# Compiled source files for the engine to use
Intermediate/
# Cache files for the editor to use
DerivedDataCache/
# Library headers must be copied automatically by the build script (build.py unreal)
Plugins/DiscordRpc/Source/ThirdParty/DiscordRpcLibrary/Include

View file

@ -0,0 +1,54 @@
[URL]
[/Script/HardwareTargeting.HardwareTargetingSettings]
TargetedHardwareClass=Desktop
AppliedTargetedHardwareClass=Desktop
DefaultGraphicsPerformance=Maximum
AppliedDefaultGraphicsPerformance=Maximum
[/Script/Engine.EndUserSettings]
bSendAnonymousUsageDataToEpic=False
[/Script/Engine.PhysicsSettings]
DefaultGravityZ=-980.000000
DefaultTerminalVelocity=4000.000000
DefaultFluidFriction=0.300000
SimulateScratchMemorySize=262144
RagdollAggregateThreshold=4
TriangleMeshTriangleMinAreaThreshold=5.000000
bEnableAsyncScene=False
bEnableShapeSharing=False
bEnablePCM=False
bEnableStabilization=False
bWarnMissingLocks=True
bEnable2DPhysics=False
LockedAxis=Invalid
DefaultDegreesOfFreedom=Full3D
BounceThresholdVelocity=200.000000
FrictionCombineMode=Average
RestitutionCombineMode=Average
MaxAngularVelocity=3600.000000
MaxDepenetrationVelocity=0.000000
ContactOffsetMultiplier=0.010000
MinContactOffset=0.000100
MaxContactOffset=1.000000
bSimulateSkeletalMeshOnDedicatedServer=True
DefaultShapeComplexity=CTF_UseSimpleAndComplex
bDefaultHasComplexCollision=True
bSuppressFaceRemapTable=False
bSupportUVFromHitResults=False
bDisableActiveActors=False
bDisableCCD=False
MaxPhysicsDeltaTime=0.033333
bSubstepping=False
bSubsteppingAsync=False
MaxSubstepDeltaTime=0.016667
MaxSubsteps=6
SyncSceneSmoothingFactor=0.000000
AsyncSceneSmoothingFactor=0.990000
InitialAverageFrameRate=0.016667
[/Script/EngineSettings.GameMapsSettings]
EditorStartupMap=/Game/ShowTheUILevel.ShowTheUILevel
GameDefaultMap=/Game/ShowTheUILevel.ShowTheUILevel

View file

@ -0,0 +1,7 @@
[/Script/EngineSettings.GeneralProjectSettings]
ProjectID=E5977A24492699DF20B8ADBF736AF6C6
ProjectName=Discord RPC Example
CompanyName=Discord Inc.
Homepage="https://discordapp.com/"
CopyrightNotice=

View file

@ -0,0 +1,29 @@
{
"FileVersion": 3,
"Version": 1,
"VersionName": "1.0",
"FriendlyName": "Discord RPC",
"Description": "Wrap the Discord RPC library.",
"Category": "Messaging",
"CreatedBy": "Chris Marsh <chris@discordapp.com>",
"CreatedByURL": "https://discordapp.com/",
"DocsURL": "",
"MarketplaceURL": "",
"SupportURL": "",
"CanContainContent": true,
"IsBetaVersion": true,
"Installed": false,
"Modules": [
{
"Name": "DiscordRpc",
"Type": "Runtime",
"LoadingPhase": "PreDefault",
"WhitelistPlatforms" :
[
"Win64",
"Linux",
"Mac"
]
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

View file

@ -0,0 +1,57 @@
// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
using UnrealBuildTool;
using System.IO;
public class DiscordRpc : ModuleRules
{
#if WITH_FORWARDED_MODULE_RULES_CTOR
public DiscordRpc(ReadOnlyTargetRules Target) : base(Target)
#else
public DiscordRpc(TargetInfo Target)
#endif
{
Definitions.Add("DISCORD_DYNAMIC_LIB=1");
PublicIncludePaths.AddRange(
new string[] {
"DiscordRpc/Public"
}
);
PrivateIncludePaths.AddRange(
new string[] {
"DiscordRpc/Private"
}
);
PublicDependencyModuleNames.AddRange(
new string[]
{
"Core",
"DiscordRpcLibrary"
}
);
PrivateDependencyModuleNames.AddRange(
new string[]
{
"CoreUObject",
"Engine",
"Slate",
"SlateCore",
"Projects"
}
);
DynamicallyLoadedModuleNames.AddRange(
new string[]
{
// ... add any modules that your module loads dynamically here ...
}
);
string BaseDirectory = Path.GetFullPath(Path.Combine(ModuleDirectory, "..", "..", "Source", "ThirdParty", "DiscordRpcLibrary"));
PublicIncludePaths.Add(Path.Combine(BaseDirectory, "Include"));
}
}

View file

@ -0,0 +1,76 @@
// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
#include "DiscordRpcPrivatePCH.h"
#include "IPluginManager.h"
#include "ModuleManager.h"
#define LOCTEXT_NAMESPACE "FDiscordRpcModule"
void FDiscordRpcModule::StartupModule()
{
#if !PLATFORM_LINUX
#if defined(DISCORD_DYNAMIC_LIB)
// Get the base directory of this plugin
FString BaseDir = IPluginManager::Get().FindPlugin("DiscordRpc")->GetBaseDir();
const FString SDKDir =
FPaths::Combine(*BaseDir, TEXT("Source"), TEXT("ThirdParty"), TEXT("DiscordRpcLibrary"));
#if PLATFORM_WINDOWS
const FString LibName = TEXT("discord-rpc");
const FString LibDir = FPaths::Combine(*SDKDir, TEXT("Win64"));
if (!LoadDependency(LibDir, LibName, DiscordRpcLibraryHandle)) {
FMessageDialog::Open(
EAppMsgType::Ok,
LOCTEXT(LOCTEXT_NAMESPACE,
"Failed to load DiscordRpc plugin. Plug-in will not be functional."));
FreeDependency(DiscordRpcLibraryHandle);
}
#elif PLATFORM_MAC
const FString LibName = TEXT("libdiscord-rpc");
const FString LibDir = FPaths::Combine(*SDKDir, TEXT("Mac"));
if (!LoadDependency(LibDir, LibName, DiscordRpcLibraryHandle)) {
FMessageDialog::Open(
EAppMsgType::Ok,
LOCTEXT(LOCTEXT_NAMESPACE,
"Failed to load DiscordRpc plugin. Plug-in will not be functional."));
FreeDependency(DiscordRpcLibraryHandle);
}
#endif
#endif
#endif
}
void FDiscordRpcModule::ShutdownModule()
{
// Free the dll handle
#if !PLATFORM_LINUX
#if defined(DISCORD_DYNAMIC_LIB)
FreeDependency(DiscordRpcLibraryHandle);
#endif
#endif
}
bool FDiscordRpcModule::LoadDependency(const FString& Dir, const FString& Name, void*& Handle)
{
FString Lib = Name + TEXT(".") + FPlatformProcess::GetModuleExtension();
FString Path = Dir.IsEmpty() ? *Lib : FPaths::Combine(*Dir, *Lib);
Handle = FPlatformProcess::GetDllHandle(*Path);
if (Handle == nullptr) {
return false;
}
return true;
}
void FDiscordRpcModule::FreeDependency(void*& Handle)
{
if (Handle != nullptr) {
FPlatformProcess::FreeDllHandle(Handle);
Handle = nullptr;
}
}
#undef LOCTEXT_NAMESPACE
IMPLEMENT_MODULE(FDiscordRpcModule, DiscordRpc)

View file

@ -0,0 +1,172 @@
#include "DiscordRpcPrivatePCH.h"
#include "DiscordRpcBlueprint.h"
#include "discord_rpc.h"
DEFINE_LOG_CATEGORY(Discord)
static UDiscordRpc* self = nullptr;
static void ReadyHandler(const DiscordUser* connectedUser)
{
FDiscordUserData ud;
ud.userId = ANSI_TO_TCHAR(connectedUser->userId);
ud.username = ANSI_TO_TCHAR(connectedUser->username);
ud.discriminator = ANSI_TO_TCHAR(connectedUser->discriminator);
ud.avatar = ANSI_TO_TCHAR(connectedUser->avatar);
UE_LOG(Discord,
Log,
TEXT("Discord connected to %s - %s#%s"),
*ud.userId,
*ud.username,
*ud.discriminator);
if (self) {
self->IsConnected = true;
self->OnConnected.Broadcast(ud);
}
}
static void DisconnectHandler(int errorCode, const char* message)
{
auto msg = FString(message);
UE_LOG(Discord, Log, TEXT("Discord disconnected (%d): %s"), errorCode, *msg);
if (self) {
self->IsConnected = false;
self->OnDisconnected.Broadcast(errorCode, msg);
}
}
static void ErroredHandler(int errorCode, const char* message)
{
auto msg = FString(message);
UE_LOG(Discord, Log, TEXT("Discord error (%d): %s"), errorCode, *msg);
if (self) {
self->OnErrored.Broadcast(errorCode, msg);
}
}
static void JoinGameHandler(const char* joinSecret)
{
auto secret = FString(joinSecret);
UE_LOG(Discord, Log, TEXT("Discord join %s"), *secret);
if (self) {
self->OnJoin.Broadcast(secret);
}
}
static void SpectateGameHandler(const char* spectateSecret)
{
auto secret = FString(spectateSecret);
UE_LOG(Discord, Log, TEXT("Discord spectate %s"), *secret);
if (self) {
self->OnSpectate.Broadcast(secret);
}
}
static void JoinRequestHandler(const DiscordUser* request)
{
FDiscordUserData ud;
ud.userId = ANSI_TO_TCHAR(request->userId);
ud.username = ANSI_TO_TCHAR(request->username);
ud.discriminator = ANSI_TO_TCHAR(request->discriminator);
ud.avatar = ANSI_TO_TCHAR(request->avatar);
UE_LOG(Discord,
Log,
TEXT("Discord join request from %s - %s#%s"),
*ud.userId,
*ud.username,
*ud.discriminator);
if (self) {
self->OnJoinRequest.Broadcast(ud);
}
}
void UDiscordRpc::Initialize(const FString& applicationId,
bool autoRegister,
const FString& optionalSteamId)
{
self = this;
IsConnected = false;
DiscordEventHandlers handlers{};
handlers.ready = ReadyHandler;
handlers.disconnected = DisconnectHandler;
handlers.errored = ErroredHandler;
if (OnJoin.IsBound()) {
handlers.joinGame = JoinGameHandler;
}
if (OnSpectate.IsBound()) {
handlers.spectateGame = SpectateGameHandler;
}
if (OnJoinRequest.IsBound()) {
handlers.joinRequest = JoinRequestHandler;
}
auto appId = StringCast<ANSICHAR>(*applicationId);
auto steamId = StringCast<ANSICHAR>(*optionalSteamId);
Discord_Initialize(
(const char*)appId.Get(), &handlers, autoRegister, (const char*)steamId.Get());
}
void UDiscordRpc::Shutdown()
{
Discord_Shutdown();
self = nullptr;
}
void UDiscordRpc::RunCallbacks()
{
Discord_RunCallbacks();
}
void UDiscordRpc::UpdatePresence()
{
DiscordRichPresence rp{};
auto state = StringCast<ANSICHAR>(*RichPresence.state);
rp.state = state.Get();
auto details = StringCast<ANSICHAR>(*RichPresence.details);
rp.details = details.Get();
auto largeImageKey = StringCast<ANSICHAR>(*RichPresence.largeImageKey);
rp.largeImageKey = largeImageKey.Get();
auto largeImageText = StringCast<ANSICHAR>(*RichPresence.largeImageText);
rp.largeImageText = largeImageText.Get();
auto smallImageKey = StringCast<ANSICHAR>(*RichPresence.smallImageKey);
rp.smallImageKey = smallImageKey.Get();
auto smallImageText = StringCast<ANSICHAR>(*RichPresence.smallImageText);
rp.smallImageText = smallImageText.Get();
auto partyId = StringCast<ANSICHAR>(*RichPresence.partyId);
rp.partyId = partyId.Get();
auto matchSecret = StringCast<ANSICHAR>(*RichPresence.matchSecret);
rp.matchSecret = matchSecret.Get();
auto joinSecret = StringCast<ANSICHAR>(*RichPresence.joinSecret);
rp.joinSecret = joinSecret.Get();
auto spectateSecret = StringCast<ANSICHAR>(*RichPresence.spectateSecret);
rp.spectateSecret = spectateSecret.Get();
rp.startTimestamp = RichPresence.startTimestamp;
rp.endTimestamp = RichPresence.endTimestamp;
rp.partySize = RichPresence.partySize;
rp.partyMax = RichPresence.partyMax;
rp.partyPrivacy = (int)RichPresence.partyPrivacy;
rp.instance = RichPresence.instance;
Discord_UpdatePresence(&rp);
}
void UDiscordRpc::ClearPresence()
{
Discord_ClearPresence();
}
void UDiscordRpc::Respond(const FString& userId, int reply)
{
UE_LOG(Discord, Log, TEXT("Responding %d to join request from %s"), reply, *userId);
FTCHARToUTF8 utf8_userid(*userId);
Discord_Respond(utf8_userid.Get(), reply);
}

View file

@ -0,0 +1,2 @@
#include "Core.h"
#include "DiscordRpc.h"

View file

@ -0,0 +1,20 @@
// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
#pragma once
#include "ModuleManager.h"
class FDiscordRpcModule : public IModuleInterface {
public:
/** IModuleInterface implementation */
virtual void StartupModule() override;
virtual void ShutdownModule() override;
private:
/** Handle to the test dll we will load */
void* DiscordRpcLibraryHandle;
/** StartupModule is covered with defines, these functions are the place to put breakpoints */
static bool LoadDependency(const FString& Dir, const FString& Name, void*& Handle);
static void FreeDependency(void*& Handle);
};

View file

@ -0,0 +1,181 @@
#pragma once
#include "CoreMinimal.h"
#include "Engine.h"
#include "DiscordRpcBlueprint.generated.h"
// unreal's header tool hates clang-format
// clang-format off
/**
* Ask to join callback data
*/
USTRUCT(BlueprintType)
struct FDiscordUserData {
GENERATED_USTRUCT_BODY()
UPROPERTY(BlueprintReadOnly)
FString userId;
UPROPERTY(BlueprintReadOnly)
FString username;
UPROPERTY(BlueprintReadOnly)
FString discriminator;
UPROPERTY(BlueprintReadOnly)
FString avatar;
};
/**
* Valid response codes for Respond function
*/
UENUM(BlueprintType)
enum class EDiscordJoinResponseCodes : uint8
{
DISCORD_REPLY_NO UMETA(DisplayName="No"),
DISCORD_REPLY_YES UMETA(DisplayName="Yes"),
DISCORD_REPLY_IGNORE UMETA(DisplayName="Ignore")
};
/**
* Valid party privacy values
*/
UENUM(BlueprintType)
enum class EDiscordPartyPrivacy: uint8
{
DISCORD_PARTY_PRIVATE UMETA(DisplayName="Private"),
DISCORD_PARTY_PUBLIC UMETA(DisplayName="Public")
};
DECLARE_LOG_CATEGORY_EXTERN(Discord, Log, All);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDiscordConnected, const FDiscordUserData&, joinRequest);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FDiscordDisconnected, int, errorCode, const FString&, errorMessage);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FDiscordErrored, int, errorCode, const FString&, errorMessage);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDiscordJoin, const FString&, joinSecret);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDiscordSpectate, const FString&, spectateSecret);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDiscordJoinRequest, const FDiscordUserData&, joinRequest);
// clang-format on
/**
* Rich presence data
*/
USTRUCT(BlueprintType)
struct FDiscordRichPresence {
GENERATED_USTRUCT_BODY()
UPROPERTY(BlueprintReadWrite)
FString state;
UPROPERTY(BlueprintReadWrite)
FString details;
// todo, timestamps are 64bit, does that even matter?
UPROPERTY(BlueprintReadWrite)
int startTimestamp;
UPROPERTY(BlueprintReadWrite)
int endTimestamp;
UPROPERTY(BlueprintReadWrite)
FString largeImageKey;
UPROPERTY(BlueprintReadWrite)
FString largeImageText;
UPROPERTY(BlueprintReadWrite)
FString smallImageKey;
UPROPERTY(BlueprintReadWrite)
FString smallImageText;
UPROPERTY(BlueprintReadWrite)
FString partyId;
UPROPERTY(BlueprintReadWrite)
int partySize;
UPROPERTY(BlueprintReadWrite)
int partyMax;
UPROPERTY(BlueprintReadWrite)
EDiscordPartyPrivacy partyPrivacy;
UPROPERTY(BlueprintReadWrite)
FString matchSecret;
UPROPERTY(BlueprintReadWrite)
FString joinSecret;
UPROPERTY(BlueprintReadWrite)
FString spectateSecret;
UPROPERTY(BlueprintReadWrite)
bool instance;
};
/**
*
*/
UCLASS(BlueprintType, meta = (DisplayName = "Discord RPC"), Category = "Discord")
class DISCORDRPC_API UDiscordRpc : public UObject {
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable,
meta = (DisplayName = "Initialize connection", Keywords = "Discord rpc"),
Category = "Discord")
void Initialize(const FString& applicationId,
bool autoRegister,
const FString& optionalSteamId);
UFUNCTION(BlueprintCallable,
meta = (DisplayName = "Shut down connection", Keywords = "Discord rpc"),
Category = "Discord")
void Shutdown();
UFUNCTION(BlueprintCallable,
meta = (DisplayName = "Check for callbacks", Keywords = "Discord rpc"),
Category = "Discord")
void RunCallbacks();
UFUNCTION(BlueprintCallable,
meta = (DisplayName = "Send presence", Keywords = "Discord rpc"),
Category = "Discord")
void UpdatePresence();
UFUNCTION(BlueprintCallable,
meta = (DisplayName = "Clear presence", Keywords = "Discord rpc"),
Category = "Discord")
void ClearPresence();
UFUNCTION(BlueprintCallable,
meta = (DisplayName = "Respond to join request", Keywords = "Discord rpc"),
Category = "Discord")
void Respond(const FString& userId, int reply);
UPROPERTY(BlueprintReadOnly,
meta = (DisplayName = "Is Discord connected", Keywords = "Discord rpc"),
Category = "Discord")
bool IsConnected;
UPROPERTY(BlueprintAssignable,
meta = (DisplayName = "On connection", Keywords = "Discord rpc"),
Category = "Discord")
FDiscordConnected OnConnected;
UPROPERTY(BlueprintAssignable,
meta = (DisplayName = "On disconnection", Keywords = "Discord rpc"),
Category = "Discord")
FDiscordDisconnected OnDisconnected;
UPROPERTY(BlueprintAssignable,
meta = (DisplayName = "On error message", Keywords = "Discord rpc"),
Category = "Discord")
FDiscordErrored OnErrored;
UPROPERTY(BlueprintAssignable,
meta = (DisplayName = "When Discord user presses join", Keywords = "Discord rpc"),
Category = "Discord")
FDiscordJoin OnJoin;
UPROPERTY(BlueprintAssignable,
meta = (DisplayName = "When Discord user presses spectate", Keywords = "Discord rpc"),
Category = "Discord")
FDiscordSpectate OnSpectate;
UPROPERTY(BlueprintAssignable,
meta = (DisplayName = "When Discord another user sends a join request",
Keywords = "Discord rpc"),
Category = "Discord")
FDiscordJoinRequest OnJoinRequest;
UPROPERTY(BlueprintReadWrite,
meta = (DisplayName = "Rich presence info", Keywords = "Discord rpc"),
Category = "Discord")
FDiscordRichPresence RichPresence;
};

View file

@ -0,0 +1,59 @@
// Fill out your copyright notice in the Description page of Project Settings.
using System.IO;
using UnrealBuildTool;
public class DiscordRpcLibrary : ModuleRules
{
#if WITH_FORWARDED_MODULE_RULES_CTOR
public DiscordRpcLibrary(ReadOnlyTargetRules Target) : base(Target)
#else
public DiscordRpcLibrary(TargetInfo Target)
#endif
{
Type = ModuleType.External;
Definitions.Add("DISCORD_DYNAMIC_LIB=1");
string BaseDirectory = Path.GetFullPath(Path.Combine(ModuleDirectory, "..", "..", "ThirdParty", "DiscordRpcLibrary"));
if (Target.Platform == UnrealTargetPlatform.Win64)
{
string lib = Path.Combine(BaseDirectory, "Win64");
// Include headers
PublicIncludePaths.Add(Path.Combine(BaseDirectory, "Include"));
// Add the import library
PublicLibraryPaths.Add(lib);
PublicAdditionalLibraries.Add(Path.Combine(lib, "discord-rpc.lib"));
// Dynamic
RuntimeDependencies.Add(new RuntimeDependency(Path.Combine(lib, "discord-rpc.dll")));
PublicDelayLoadDLLs.Add("discord-rpc.dll");
}
else if (Target.Platform == UnrealTargetPlatform.Linux)
{
string lib = Path.Combine(BaseDirectory, "Linux", "x86_64-unknown-linux-gnu");
// Include headers
PublicIncludePaths.Add(Path.Combine(BaseDirectory, "Include"));
// Add the import library
PublicLibraryPaths.Add(lib);
PublicAdditionalLibraries.Add(Path.Combine(lib, "libdiscord-rpc.so"));
RuntimeDependencies.Add(new RuntimeDependency(Path.Combine(lib, "libdiscord-rpc.so")));
}
else if (Target.Platform == UnrealTargetPlatform.Mac)
{
string lib = Path.Combine(BaseDirectory, "Mac");
// Include headers
PublicIncludePaths.Add(Path.Combine(BaseDirectory, "Include"));
// Add the import library
PublicLibraryPaths.Add(lib);
PublicAdditionalLibraries.Add(Path.Combine(lib, "libdiscord-rpc.dylib"));
RuntimeDependencies.Add(new RuntimeDependency(Path.Combine(lib, "libdiscord-rpc.dylib")));
}
}
}

View file

@ -0,0 +1,14 @@
// Fill out your copyright notice in the Description page of Project Settings.
using UnrealBuildTool;
using System.Collections.Generic;
public class unrealstatusTarget : TargetRules
{
public unrealstatusTarget(TargetInfo Target) : base(Target)
{
Type = TargetType.Game;
ExtraModuleNames.AddRange( new string[] { "unrealstatus" } );
}
}

View file

@ -0,0 +1,23 @@
// Fill out your copyright notice in the Description page of Project Settings.
using UnrealBuildTool;
public class unrealstatus : ModuleRules
{
public unrealstatus(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" });
PrivateDependencyModuleNames.AddRange(new string[] { });
// Uncomment if you are using Slate UI
// PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });
// Uncomment if you are using online features
// PrivateDependencyModuleNames.Add("OnlineSubsystem");
// To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true
}
}

View file

@ -0,0 +1,6 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "unrealstatus.h"
#include "Modules/ModuleManager.h"
IMPLEMENT_PRIMARY_GAME_MODULE(FDefaultGameModuleImpl, unrealstatus, "unrealstatus");

Some files were not shown because too many files have changed in this diff Show more