diff --git a/board/recalbox/rpi/patches/libretro-parallel-n64/0001-force-rice-plugin.patch b/board/recalbox/rpi/patches/libretro-parallel-n64/0001-force-rice-plugin.patch index 8e3968c018a1c3f02ef83d98fcf467d4aa2ff142..e6e96b81776dfd96fba9d602a2975b61e80fd229 100644 --- a/board/recalbox/rpi/patches/libretro-parallel-n64/0001-force-rice-plugin.patch +++ b/board/recalbox/rpi/patches/libretro-parallel-n64/0001-force-rice-plugin.patch @@ -1,6 +1,6 @@ --- ./libretro/libretro.c.orig 2021-03-16 23:47:27.547996607 +0100 +++ ./libretro/libretro.c 2021-03-16 23:51:25.700753540 +0100 -@@ -203,10 +203,14 @@ +@@ -206,10 +206,14 @@ } #endif @@ -16,3 +16,6 @@ return; } #endif +-- +2.51.1 + diff --git a/package/libretro-mupen64plus-nx/0001-add-odroidgo2-support.patch b/package/libretro-mupen64plus-nx/0001-add-odroidgo2-support.patch index 584653e965c03372ac2a2301008378ee6df42040..5edc1f7fda79d56e183109444c882d06c4ff59cc 100644 --- a/package/libretro-mupen64plus-nx/0001-add-odroidgo2-support.patch +++ b/package/libretro-mupen64plus-nx/0001-add-odroidgo2-support.patch @@ -1,17 +1,17 @@ From 215317ce4850a903c9229d8c836bba7cef8ff2e4 Mon Sep 17 00:00:00 2001 From: David Barbion Date: Sat, 22 Jan 2022 09:34:54 +0100 -Subject: [PATCH 1/3] add odroidgo2 support +Subject: [PATCH 1/4] add odroidgo2 support --- Makefile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Makefile b/Makefile -index 3d2b37c..9d9b3d3 100644 +index 481e8b9..dcb1899 100644 --- a/Makefile +++ b/Makefile -@@ -234,6 +234,12 @@ else ifneq (,$(findstring odroid64,$(platform))) +@@ -259,6 +259,12 @@ else ifneq (,$(findstring odroid64,$(platform))) GLES = 0 GLES3= 1 GL_LIB := -lGLESv3 diff --git a/package/libretro-mupen64plus-nx/0002-compile-asm-defines-no-lto.patch b/package/libretro-mupen64plus-nx/0002-compile-asm-defines-no-lto.patch index 94f465abed93b8b7c6b2182eb6cc1ace7f964d6f..532926b00d80544d8bf0fd97265f50bf025414a7 100644 --- a/package/libretro-mupen64plus-nx/0002-compile-asm-defines-no-lto.patch +++ b/package/libretro-mupen64plus-nx/0002-compile-asm-defines-no-lto.patch @@ -1,22 +1,22 @@ From 0ea91aa9227f73e83bd04a18cb9ba36bc8450c1d Mon Sep 17 00:00:00 2001 From: David Barbion Date: Sat, 22 Jan 2022 09:35:17 +0100 -Subject: [PATCH 2/3] compile asm defines no lto +Subject: [PATCH 2/4] compile asm defines no lto --- Makefile | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Makefile b/Makefile -index 9d9b3d3..0ff8982 100644 +index 27c62dd..dfd4bd2 100644 --- a/Makefile +++ b/Makefile -@@ -590,6 +590,14 @@ $(AWK_DEST_DIR)/asm_defines_gas.h: $(AWK_DEST_DIR)/asm_defines_nasm.h +@@ -686,6 +686,14 @@ $(AWK_DEST_DIR)/asm_defines_gas.h: $(AWK_DEST_DIR)/asm_defines_nasm.h $(AWK_DEST_DIR)/asm_defines_nasm.h: $(ASM_DEFINES_OBJ) $(STRINGS) "$<" | $(TR) -d '\r' | $(AWK) -v dest_dir="$(AWK_DEST_DIR)" -f $(CORE_DIR)/tools/gen_asm_defines.awk +# It is important to disable LTO for this object file -+# otherwise we can't extract usefull information from it. ++# otherwise we can't extract useful information from it. +$(ASM_DEFINES_OBJ): $(CORE_DIR)/src/asm_defines/asm_defines.c + $(COMPILE.c) -fno-lto -o $@ $< + diff --git a/package/libretro-mupen64plus-nx/0003-fix-missing-extern-log_cb-definition.patch b/package/libretro-mupen64plus-nx/0003-fix-missing-extern-log_cb-definition.patch index fac178653334a4f03db0081cf42778891453d3d0..bb9a0704bfbed6e8e555e7faf88a316c9dafc8a7 100644 --- a/package/libretro-mupen64plus-nx/0003-fix-missing-extern-log_cb-definition.patch +++ b/package/libretro-mupen64plus-nx/0003-fix-missing-extern-log_cb-definition.patch @@ -1,18 +1,18 @@ From f7f336d7abd2047399774bb58d4051fcc71262e3 Mon Sep 17 00:00:00 2001 From: David Barbion Date: Sat, 22 Jan 2022 09:40:22 +0100 -Subject: [PATCH 3/3] fix missing extern log_cb definition +Subject: [PATCH 3/4] fix missing extern log_cb definition --- mupen64plus-core/src/backends/file_storage.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mupen64plus-core/src/backends/file_storage.c b/mupen64plus-core/src/backends/file_storage.c -index 9fbbf43..b07b515 100644 +index 0f281d2..ecc7e73 100644 --- a/mupen64plus-core/src/backends/file_storage.c +++ b/mupen64plus-core/src/backends/file_storage.c -@@ -32,6 +32,8 @@ - +@@ -33,6 +33,8 @@ + #include #include +extern retro_log_printf_t log_cb; diff --git a/package/libretro-mupen64plus-nx/0004-fix-pagesize.patch b/package/libretro-mupen64plus-nx/0004-fix-pagesize.patch index 598e8579b0a79840c846ee6d70cbcb9be6a29caa..c980d7131ecd315976a4cbafd1d5515b0597239f 100644 --- a/package/libretro-mupen64plus-nx/0004-fix-pagesize.patch +++ b/package/libretro-mupen64plus-nx/0004-fix-pagesize.patch @@ -1,6 +1,16 @@ ---- a/mupen64plus-core/src/device/r4300/new_dynarec/new_dynarec.c 2025-04-06 11:32:23.526503234 +0200 -+++ b/mupen64plus-core/src/device/r4300/new_dynarec/new_dynarec.c 2025-04-06 11:30:27.273791437 +0200 -@@ -8632,7 +8632,7 @@ +From b704c31fbe6c3e3f74ed378d8b7ab5c4d90602af Mon Sep 17 00:00:00 2001 +From: Bkg2k +Date: Fri, 06 Apr 2025 11:32:23 +0100 +Subject: [PATCH 4/4] fix pagesize + +--- + mupen64plus-core/src/device/r4300/new_dynarec/new_dynarec.c | 2 +- + 1 file changed, 1 insertions(+), 1 deletion(-) + +diff --git a//mupen64plus-core/src/device/r4300/new_dynarec/new_dynarec.c b//mupen64plus-core/src/device/r4300/new_dynarec/new_dynarec.c +--- a/mupen64plus-core/src/device/r4300/new_dynarec/new_dynarec.c ++++ b/mupen64plus-core/src/device/r4300/new_dynarec/new_dynarec.c +@@ -8632,7 +8632,7 @@ static void pagespan_ds(void) /**** Recompiler ****/ #ifdef HAVE_LIBNX diff --git a/package/libretro-mupen64plus-nx/libretro-mupen64plus-nx.mk b/package/libretro-mupen64plus-nx/libretro-mupen64plus-nx.mk index a457135aff7a76896c6dad704c3e50b35f021561..7684c8a3af501d5f363bd3dbace85f3057349b5b 100644 --- a/package/libretro-mupen64plus-nx/libretro-mupen64plus-nx.mk +++ b/package/libretro-mupen64plus-nx/libretro-mupen64plus-nx.mk @@ -4,8 +4,8 @@ # ################################################################################ -# Commit of 2024/07/19 -LIBRETRO_MUPEN64PLUS_NX_VERSION = c7cd8edcd015ddcbd4a2e984573c9c1d1ddd0b6e +# Commit of 2025/11/14 +LIBRETRO_MUPEN64PLUS_NX_VERSION = 680e033fc8ed1a49df7b156d97164e0050ee13bc LIBRETRO_MUPEN64PLUS_NX_SITE = $(call github,libretro,mupen64plus-libretro-nx,$(LIBRETRO_MUPEN64PLUS_NX_VERSION)) LIBRETRO_MUPEN64PLUS_NX_LICENSE = GPLv3 LIBRETRO_MUPEN64PLUS_NX_DEPENDENCIES += host-nasm @@ -72,7 +72,8 @@ define LIBRETRO_MUPEN64PLUS_NX_BUILD_CMDS CPPFLAGS="$(TARGET_CPPFLAGS) $(COMPILER_COMMONS_CPPFLAGS_SO)" \ $(MAKE) NASM="$(HOST_DIR)/bin/nasm" CXX="$(TARGET_CXX)" CC="$(TARGET_CC)" LD="$(TARGET_LD)" \ AR="$(TARGET_AR)" RANLIB="$(TARGET_RANLIB)" -C $(@D)/ -f Makefile platform="$(LIBRETRO_MUPEN64PLUS_NX_PLATFORM)" $(LIBRETRO_MUPEN64PLUS_NX_SUPP_OPT) \ - WITH_DYNAREC=$(LIBRETRO_MUPEN64PLUS_NX_DYNAREC) + WITH_DYNAREC=$(LIBRETRO_MUPEN64PLUS_NX_DYNAREC) \ + GIT_VERSION="$(shell echo $(LIBRETRO_MUPEN64PLUS_NX_VERSION) | cut -c 1-8)" endef define LIBRETRO_MUPEN64PLUS_NX_INSTALL_TARGET_CMDS diff --git a/package/libretro-parallel-n64/0001-add-odroidgo2-board.patch b/package/libretro-parallel-n64/0001-add-odroidgo2-board.patch index 5d1c7aaf9e8512cf6debe8a56fa4b0cb51dbbc9f..aebf605130cac2a409f879d6b7f5443c0e2632ef 100644 --- a/package/libretro-parallel-n64/0001-add-odroidgo2-board.patch +++ b/package/libretro-parallel-n64/0001-add-odroidgo2-board.patch @@ -1,6 +1,17 @@ ---- a/Makefile 2024-12-06 21:07:10.798235213 +0100 -+++ b/Makefile 2024-12-06 21:09:03.325146479 +0100 -@@ -181,18 +181,26 @@ +From 32db227a72ae11b78eca8662e2f8d8de887fe618 Mon Sep 17 00:00:00 2001 +From: David Barbion +Date: Wed, 17 Mar 2021 22:29:33 +0200 +Subject: [PATCH 1/5] add odroidgo2 board + +--- + Makefile | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index fc2885de..22877ee4 100644 +--- a/Makefile ++++ b/Makefile +@@ -179,18 +179,26 @@ ifneq (,$(findstring unix,$(platform))) GLES = 1 GL_LIB := -lGLESv2 CPUFLAGS += -DNO_ASM -DARM -D__arm__ -DARM_ASM -D__NEON_OPT -DNOSSE -DARM_FIX @@ -10,21 +21,24 @@ ifneq (,$(findstring ODROIDC,$(BOARD))) # ODROID-C1 CPUFLAGS += -mcpu=cortex-a5 -mfpu=neon -+ CPUFLAGS += -marm -mfloat-abi=hard ++ CPUFLAGS += -marm -mfloat-abi=hard else ifneq (,$(findstring ODROID-XU,$(BOARD))) # ODROID-XU3 XU4 and XU3-Lite CPUFLAGS += -mcpu=cortex-a15 -mtune=cortex-a15.cortex-a7 -mfpu=neon-vfpv4 -+ CPUFLAGS += -marm -mfloat-abi=hard ++ CPUFLAGS += -marm -mfloat-abi=hard + else ifneq (,$(findstring ODROIDGO2,$(BOARD))) -+ # ODROIDGO2 and ODROIDGO3 (64 bits) -+ HAVE_PARALLEL = 1 -+ WITH_DYNAREC=aarch64 -+ CPUFLAGS += -DCLASSIC -DARM64 -+ CPUFLAGS += -march=armv8-a+crc+simd -mtune=cortex-a35 -mcpu=cortex-a35 ++ # ODROIDGO2 and ODROIDGO3 (64 bits) ++ HAVE_PARALLEL = 1 ++ WITH_DYNAREC = aarch64 ++ CPUFLAGS += -DCLASSIC -DARM64 ++ CPUFLAGS += -march=armv8-a+crc+simd -mtune=cortex-a35 -mcpu=cortex-a35 else # ODROID-U3, U2, X2 & X -- CPUFLAGS += -mcpu=cortex-a9 -mfpu=neon -+ CPUFLAGS += -mcpu=cortex-a9 -mfpu=neon -+ CPUFLAGS += -marm -mfloat-abi=hard + CPUFLAGS += -mcpu=cortex-a9 -mfpu=neon ++ CPUFLAGS += -marm -mfloat-abi=hard endif endif + +-- +2.51.1 + diff --git a/package/libretro-parallel-n64/0001-add-rpi5-board.patch b/package/libretro-parallel-n64/0002-add-rpi5-board.patch similarity index 64% rename from package/libretro-parallel-n64/0001-add-rpi5-board.patch rename to package/libretro-parallel-n64/0002-add-rpi5-board.patch index 226b17e3cbdc76919d05d910c74c361b306b74bc..71fb54396d1645221fe6555e43f68750746d927b 100644 --- a/package/libretro-parallel-n64/0001-add-rpi5-board.patch +++ b/package/libretro-parallel-n64/0002-add-rpi5-board.patch @@ -1,8 +1,17 @@ +From 922cf811c9f2ef8a5a3f8909d9165915d66c2fe9 Mon Sep 17 00:00:00 2001 +From: Adrien Beudin +Date: Mon, 20 Jan 2025 15:40:28 +0200 +Subject: [PATCH 2/5] add rpi5 board + +--- + Makefile | 10 ++++++++++ + 1 file changed, 10 insertions(+) + diff --git a/Makefile b/Makefile -index 9cf9b6c516..c4927c31f6 100644 +index 22877ee4..16a74323 100644 --- a/Makefile +++ b/Makefile -@@ -177,6 +177,16 @@ ifneq (,$(findstring unix,$(platform))) +@@ -167,6 +167,16 @@ ifneq (,$(findstring unix,$(platform))) HAVE_OPENGL = 0 GLES = 0 GL_LIB := @@ -19,3 +28,6 @@ index 9cf9b6c516..c4927c31f6 100644 else CPUFLAGS += -DARMv5_ONLY -DNO_ASM endif +-- +2.51.1 + diff --git a/package/libretro-parallel-n64/0003-bios-path.patch b/package/libretro-parallel-n64/0003-bios-path.patch index b043e5563958a8884d1bcfab7247160b3c4607eb..bfaa6016dbd2ba5ba75137b3c119e439fdb95f13 100644 --- a/package/libretro-parallel-n64/0003-bios-path.patch +++ b/package/libretro-parallel-n64/0003-bios-path.patch @@ -1,6 +1,17 @@ ---- a/libretro/libretro.c 2023-10-01 19:16:02.280027000 +0200 -+++ b/libretro/libretro.c 2023-10-01 19:18:25.266298360 +0200 -@@ -568,7 +568,7 @@ +From 25216185bd07f3d66db016f3e9cab3dcc39cc000 Mon Sep 17 00:00:00 2001 +From: Pit64 +Date: Wed, 11 Jun 2025 01:07:50 +0200 +Subject: [PATCH 3/5] bios path + +--- + libretro/libretro.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libretro/libretro.c b/libretro/libretro.c +index 16525703..43ab795f 100644 +--- a/libretro/libretro.c ++++ b/libretro/libretro.c +@@ -573,7 +573,7 @@ static bool emu_step_load_data() disk_data = NULL; /* 64DD IPL LOAD - assumes "64DD_IPL.bin" is in system folder */ @@ -9,3 +20,6 @@ if (log_cb) log_cb(RETRO_LOG_INFO, "64DD_IPL.bin path: %s\n", disk_ipl_path); +-- +2.51.1 + diff --git a/package/libretro-parallel-n64/0004-fix-pagesize.patch b/package/libretro-parallel-n64/0004-fix-pagesize.patch index bb5e77ef9e9da95996b97aa057af1ca0043484bc..a2afbb6aeb58335b22f67759118e5267142b465a 100644 --- a/package/libretro-parallel-n64/0004-fix-pagesize.patch +++ b/package/libretro-parallel-n64/0004-fix-pagesize.patch @@ -1,5 +1,16 @@ ---- a/mupen64plus-core/src/r4300/new_dynarec/arm64/linkage_aarch64.S 2025-04-06 11:05:35.859496992 +0200 -+++ b/mupen64plus-core/src/r4300/new_dynarec/arm64/linkage_aarch64.S 2025-04-06 10:58:21.845500243 +0200 +From 4f012a63ac8f4014aa273930476728e87dfbc7f3 Mon Sep 17 00:00:00 2001 +From: Bkg2k +Date: Sun, 6 Apr 2025 11:54:58 +0200 +Subject: [PATCH 4/5] fix pagesize + +--- + mupen64plus-core/src/r4300/new_dynarec/arm64/linkage_aarch64.S | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mupen64plus-core/src/r4300/new_dynarec/arm64/linkage_aarch64.S b/mupen64plus-core/src/r4300/new_dynarec/arm64/linkage_aarch64.S +index 0cb9af4a..5343d1b2 100644 +--- a/mupen64plus-core/src/r4300/new_dynarec/arm64/linkage_aarch64.S ++++ b/mupen64plus-core/src/r4300/new_dynarec/arm64/linkage_aarch64.S @@ -43,7 +43,7 @@ BSS_SECTION @@ -9,3 +20,6 @@ GLOBAL_VARIABLE(extra_memory, 33554432) GLOBAL_VARIABLE(dynarec_local, 256) GLOBAL_VARIABLE(next_interrupt, 4) +-- +2.51.1 + diff --git a/package/libretro-parallel-n64/0005-fix-64dd-launch.patch b/package/libretro-parallel-n64/0005-fix-64dd-launch.patch new file mode 100644 index 0000000000000000000000000000000000000000..887558025bb50d0efec36e95d48af45e78a4acb4 --- /dev/null +++ b/package/libretro-parallel-n64/0005-fix-64dd-launch.patch @@ -0,0 +1,68 @@ +From e027b5fc96e8dc7f49cdc51c182ed26ea2fb6b42 Mon Sep 17 00:00:00 2001 +From: Pit64 +Date: Sun, 19 Oct 2025 18:56:09 +0200 +Subject: [PATCH 5/5] fix 64dd launch + +--- + mupen64plus-core/src/pi/pi_controller.c | 20 ++++---------------- + 1 file1 changed, 4 insertions(+), 16 deletions(-) + +diff --git a/mupen64plus-core/src/pi/pi_controller.c b/mupen64plus-core/src/pi/pi_controller.c +index 70934489..46cc7cc9 100644 +--- a/mupen64plus-core/src/pi/pi_controller.c ++++ b/mupen64plus-core/src/pi/pi_controller.c +@@ -32,13 +32,10 @@ + #include "../r4300/r4300_core.h" + #include "../ri/rdram_detection_hack.h" + #include "../ri/ri_controller.h" +-#include "../ri/safe_rdram.h" + #include "../dd/dd_controller.h" + + #include + +-extern int g_rom_size; +- + enum + { + /* PI_STATUS - read */ +@@ -90,11 +87,7 @@ static void dma_pi_read(struct pi_controller *pi) + dram = (uint8_t*)pi->ri->rdram.dram; + + for (i = 0; i < length; ++i) +- { +- const unsigned int rom_i = (rom_address + i) ^ S8; +- if (rom_i >= (uint32_t)g_rom_size) continue; +- rom[rom_i] = rdram_safe_read_byte(dram, (dram_address + i) ^ S8); +- } ++ rom[(rom_address + i) ^ S8] = dram[(dram_address + i) ^ S8]; + } + else if (pi->regs[PI_CART_ADDR_REG] >= 0x08000000 + && pi->regs[PI_CART_ADDR_REG] < 0x08010000) +@@ -188,10 +181,7 @@ static void dma_pi_write(struct pi_controller *pi) + dram = (uint8_t*)pi->ri->rdram.dram; + + for (i = 0; i < length; ++i) +- { +- const unsigned int rom_i = (rom_address + i) ^ S8; +- rdram_safe_write_byte(dram, (dram_address + i) ^ S8, (rom_i < (uint32_t)g_rom_size) ? rom[rom_i] : 0u); +- } ++ dram[(dram_address + i) ^ S8] = rom[(rom_address + i) ^ S8]; + + invalidate_r4300_cached_code(0x80000000 + dram_address, length); + invalidate_r4300_cached_code(0xa0000000 + dram_address, length); +@@ -284,10 +274,8 @@ static void dma_pi_write(struct pi_controller *pi) + rom = pi->cart_rom.rom; + } + +- for (i = 0; i < length; ++i) { +- const unsigned int rom_i = (rom_address + i) ^ S8; +- rdram_safe_write_byte(dram, (dram_address + i) ^ S8, (rom_i < (uint32_t)g_rom_size) ? rom[rom_i] : 0); +- } ++ for (i = 0; i < length; ++i) ++ dram[(dram_address + i) ^ S8] = rom[(rom_address + i) ^ S8]; + + invalidate_r4300_cached_code(0x80000000 + dram_address, length); + invalidate_r4300_cached_code(0xa0000000 + dram_address, length); +-- +2.51.1 + diff --git a/package/libretro-parallel-n64/libretro-parallel-n64.mk b/package/libretro-parallel-n64/libretro-parallel-n64.mk index ced02f27e204a7afd0677e013366a13a2f9c1a62..858622e252244e187bf3d8df4d0ed3c352247173 100644 --- a/package/libretro-parallel-n64/libretro-parallel-n64.mk +++ b/package/libretro-parallel-n64/libretro-parallel-n64.mk @@ -4,8 +4,8 @@ # ################################################################################ -# Commit of 2024/10/21 -LIBRETRO_PARALLEL_N64_VERSION = e372c5e327dcd649e9d840ffc3d88480b6866eda +# Commit of 2025/12/04 +LIBRETRO_PARALLEL_N64_VERSION = 1da824e13e725a7144f3245324f43d59623974f8 LIBRETRO_PARALLEL_N64_SITE = $(call github,libretro,parallel-n64,$(LIBRETRO_PARALLEL_N64_VERSION)) LIBRETRO_PARALLEL_N64_LICENSE = GPL-3.0 @@ -79,7 +79,8 @@ define LIBRETRO_PARALLEL_N64_BUILD_CMDS LDFLAGS="$(TARGET_LDFLAGS) $(LIBRETRO_PARALLEL_N64_LDFLAGS)" \ $(MAKE) CXX="$(TARGET_CXX)" CC="$(TARGET_CC)" -C $(@D)/ -f Makefile \ platform="$(LIBRETRO_PARALLEL_N64_PLATFORM)" $(LIBRETRO_PARALLEL_N64_SUPP_OPT) \ - WITH_DYNAREC=$(LIBRETRO_PARALLEL_N64_DYNAREC) + WITH_DYNAREC=$(LIBRETRO_PARALLEL_N64_DYNAREC) \ + GIT_VERSION="$(shell echo $(LIBRETRO_PARALLEL_N64_VERSION) | cut -c 1-8)" # HAVE_PARALLEL=1 HAVE_PARALLEL_RSP=1 endef diff --git a/package/mupen64plus-audio-sdl/mupen64plus-audio-sdl.mk b/package/mupen64plus-audio-sdl/mupen64plus-audio-sdl.mk index 04cb3633a2a6da763ba1a6c815d33166f3f6b451..7e998349c5d1de5ab47c642118e59714c9bb229c 100644 --- a/package/mupen64plus-audio-sdl/mupen64plus-audio-sdl.mk +++ b/package/mupen64plus-audio-sdl/mupen64plus-audio-sdl.mk @@ -4,8 +4,8 @@ # ################################################################################ -# commit of 2024/07/15 -MUPEN64PLUS_AUDIO_SDL_VERSION = 6c2c3f8ae10b7f0f6dfe06f45ca7ca598a6b659a +# Commit of 2025/06/21 +MUPEN64PLUS_AUDIO_SDL_VERSION = 07c866bd2b897fcbce2131dc36066c179422c3c9 MUPEN64PLUS_AUDIO_SDL_SITE = $(call github,mupen64plus,mupen64plus-audio-sdl,$(MUPEN64PLUS_AUDIO_SDL_VERSION)) MUPEN64PLUS_AUDIO_SDL_LICENSE = MIT MUPEN64PLUS_AUDIO_SDL_DEPENDENCIES = sdl2 alsa-lib mupen64plus-core diff --git a/package/mupen64plus-core/5000-fix-gcc14-compilation.patch b/package/mupen64plus-core/5000-fix-gcc14-compilation.patch index 0dc0268dbe91919e3ef70283ce97d99bb7c0b70f..422e8c56eaa214c13b5b439236a6630a78ae4b30 100644 --- a/package/mupen64plus-core/5000-fix-gcc14-compilation.patch +++ b/package/mupen64plus-core/5000-fix-gcc14-compilation.patch @@ -1,5 +1,16 @@ ---- mupen64plus-core-312a5befde1b44db8beee7868b929c23d896991f/src/device/r4300/new_dynarec/arm/arm_cpu_features.c.orig 2024-09-26 23:27:50.622744477 +0200 -+++ mupen64plus-core-312a5befde1b44db8beee7868b929c23d896991f/src/device/r4300/new_dynarec/arm/arm_cpu_features.c 2024-09-26 23:29:08.661722145 +0200 +From ec844925020f79d80ebbfb6a9c8f7a72418d9ed4 Mon Sep 17 00:00:00 2001 +From: David Barbion +Date: Thu, 26 Sep 2024 09:34:54 +0100 +Subject: [PATCH 1/2] fix gcc14 compilation + +--- + src/device/r4300/new_dynarec/arm/arm_cpu_features.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/device/r4300/new_dynarec/arm/arm_cpu_features.c b/src/device/r4300/new_dynarec/arm/arm_cpu_features.c +index e369b9e1..0ee7ede9 100644 +--- a/src/device/r4300/new_dynarec/arm/arm_cpu_features.c ++++ b/src/device/r4300/new_dynarec/arm/arm_cpu_features.c @@ -25,6 +25,7 @@ #include "api/callbacks.h" @@ -8,3 +19,6 @@ arm_cpu_features_t arm_cpu_features; +-- +2.52.0 + diff --git a/package/mupen64plus-core/5001-fix-pagesize.patch b/package/mupen64plus-core/5001-fix-pagesize.patch index 5f2a60c2820e680db8e4bb8bda1db3ad537b62eb..78b384b28b05572ccf14be9c954caaee826be210 100644 --- a/package/mupen64plus-core/5001-fix-pagesize.patch +++ b/package/mupen64plus-core/5001-fix-pagesize.patch @@ -1,11 +1,25 @@ ---- a/src/device/r4300/r4300_core.h 2025-04-06 11:43:43.099787784 +0200 -+++ b/src/device/r4300/r4300_core.h 2025-04-06 11:41:54.816063342 +0200 -@@ -181,7 +181,7 @@ +From 72cba9b7de3f19137740f3b59a96e71e3aa8949e Mon Sep 17 00:00:00 2001 +From: Bkg2k +Date: Sun, 6 Apr 2025 13:56:03 +0100 +Subject: [PATCH 2/2] fix pagesize + +--- + src/device/r4300/r4300_core.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/device/r4300/r4300_core.h b/src/device/r4300/r4300_core.h +index bce19d2f..8cef04a6 100644 +--- a/src/device/r4300/r4300_core.h ++++ b/src/device/r4300/r4300_core.h +@@ -181,7 +181,7 @@ struct r4300_core /* FIXME: better put that near linkage_arm code * to help generate call beyond the +/-32MB range. */ -- ALIGN(4096, char extra_memory[33554432]); -+ ALIGN(16384, char extra_memory[33554432]); +- ALIGN(4096, unsigned char extra_memory_buffer[NEW_DYNAREC_CACHE_SIZE + NEW_DYNAREC_CACHE_PAGE_PAD]); ++ ALIGN(16384, unsigned char extra_memory_buffer[NEW_DYNAREC_CACHE_SIZE + NEW_DYNAREC_CACHE_PAGE_PAD]); + unsigned char* extra_memory; struct new_dynarec_hot_state new_dynarec_hot_state; #endif /* NEW_DYNAREC */ - +-- +2.52.0 + diff --git a/package/mupen64plus-core/mupen64plus-core.mk b/package/mupen64plus-core/mupen64plus-core.mk index ef227b196843f045bdaf5ba470d590053b90ca4a..74ca4ae1f77137673a577721a71df1a7493dc703 100644 --- a/package/mupen64plus-core/mupen64plus-core.mk +++ b/package/mupen64plus-core/mupen64plus-core.mk @@ -4,8 +4,8 @@ # ################################################################################ -# Commit of 2024/09/10 -MUPEN64PLUS_CORE_VERSION = 312a5befde1b44db8beee7868b929c23d896991f +# Commit of 2025/12/08 +MUPEN64PLUS_CORE_VERSION = 37791911f120d43cd108aa8eea261729cbd0628b MUPEN64PLUS_CORE_SITE = $(call github,mupen64plus,mupen64plus-core,$(MUPEN64PLUS_CORE_VERSION)) MUPEN64PLUS_CORE_LICENSE = GPLv2+ MUPEN64PLUS_CORE_DEPENDENCIES = sdl2 alsa-lib libpng freetype host-nasm host-binutils diff --git a/package/mupen64plus-gliden64-20/mupen64plus-gliden64-20.mk b/package/mupen64plus-gliden64-20/mupen64plus-gliden64-20.mk index 05e90f0d28012b409bfb5437a7e8fdb13cfde1d3..5f00cbca9c3778c0861d73b2ece9990ef20c5e70 100644 --- a/package/mupen64plus-gliden64-20/mupen64plus-gliden64-20.mk +++ b/package/mupen64plus-gliden64-20/mupen64plus-gliden64-20.mk @@ -4,7 +4,7 @@ # ################################################################################ -# commit of 19/10/2015 +# Commit of 2015/10/19 MUPEN64PLUS_GLIDEN64_20_VERSION = 34fa719a61fa2338025facc9810ad2ef1a00e7ee MUPEN64PLUS_GLIDEN64_20_SITE = $(call github,gonetz,GLideN64,$(MUPEN64PLUS_GLIDEN64_20_VERSION)) MUPEN64PLUS_GLIDEN64_20_LICENSE = MIT diff --git a/package/mupen64plus-gliden64/mupen64plus-gliden64.mk b/package/mupen64plus-gliden64/mupen64plus-gliden64.mk index 9e6ec7cf295b6b425c1d81fa104f01413cbbb486..37bd3e030e984abe68f2107b930e866fd28534ad 100644 --- a/package/mupen64plus-gliden64/mupen64plus-gliden64.mk +++ b/package/mupen64plus-gliden64/mupen64plus-gliden64.mk @@ -4,8 +4,8 @@ # ################################################################################ -# commit of 2024/09/08 -MUPEN64PLUS_GLIDEN64_VERSION = f4b0755e2722d59fe1c20d7e470f7b8929dcae85 +# Commit of 2025/11/29 +MUPEN64PLUS_GLIDEN64_VERSION = a249be101870db681feb419d647c3e3031d0e057 MUPEN64PLUS_GLIDEN64_SITE = $(call github,gonetz,GLideN64,$(MUPEN64PLUS_GLIDEN64_VERSION)) MUPEN64PLUS_GLIDEN64_LICENSE = MIT MUPEN64PLUS_GLIDEN64_DEPENDENCIES = sdl2 alsa-lib mupen64plus-core diff --git a/package/mupen64plus-input-sdl/mupen64plus-input-sdl.mk b/package/mupen64plus-input-sdl/mupen64plus-input-sdl.mk index e0b5ebbc290b438d05464dc8ca1f080dd81dc601..59b6bff7696b5da8955bdb73da3db7c3f4c2fea5 100644 --- a/package/mupen64plus-input-sdl/mupen64plus-input-sdl.mk +++ b/package/mupen64plus-input-sdl/mupen64plus-input-sdl.mk @@ -4,8 +4,8 @@ # ################################################################################ -# Commit version 2024/07/15 -MUPEN64PLUS_INPUT_SDL_VERSION = f2ca3839415d45a547f79d21177dfe15a0ce6d8c +# Commit of 2025/08/31 +MUPEN64PLUS_INPUT_SDL_VERSION = cc808d57cd1aa1f619845ac9ac6be271266ab711 MUPEN64PLUS_INPUT_SDL_SITE = $(call github,mupen64plus,mupen64plus-input-sdl,$(MUPEN64PLUS_INPUT_SDL_VERSION)) MUPEN64PLUS_INPUT_SDL_LICENSE = MIT MUPEN64PLUS_INPUT_SDL_DEPENDENCIES = sdl2 alsa-lib mupen64plus-core diff --git a/package/mupen64plus-omx/mupen64plus-omx.mk b/package/mupen64plus-omx/mupen64plus-omx.mk index a7a017242e3c1f900009fd641f76241d124847ab..57544dda1f7003e5529bd68415a4cf4550e36f24 100644 --- a/package/mupen64plus-omx/mupen64plus-omx.mk +++ b/package/mupen64plus-omx/mupen64plus-omx.mk @@ -4,6 +4,7 @@ # ################################################################################ +# Commit of 2016/02/13 MUPEN64PLUS_OMX_VERSION = 3225ca52206c0a484a22212a76c9cf94e219c8c7 MUPEN64PLUS_OMX_SITE = $(call github,ricrpi,mupen64plus-audio-omx,$(MUPEN64PLUS_OMX_VERSION)) MUPEN64PLUS_OMX_LICENSE = MIT diff --git a/package/mupen64plus-rsphle/mupen64plus-rsphle.mk b/package/mupen64plus-rsphle/mupen64plus-rsphle.mk index 49b8e6818de1f30ad8ce5d889726142a8f624573..00df158f5439dcda95d84f3b8ee70afd4219fed3 100644 --- a/package/mupen64plus-rsphle/mupen64plus-rsphle.mk +++ b/package/mupen64plus-rsphle/mupen64plus-rsphle.mk @@ -4,8 +4,8 @@ # ################################################################################ -# commit of 2024/07/15 -MUPEN64PLUS_RSPHLE_VERSION = 2798e65d6fc89d89aace0b0d779af6406809b940 +# Commit of 2025/09/27 +MUPEN64PLUS_RSPHLE_VERSION = 21f8bc494305fac47003202522249e81af95067e MUPEN64PLUS_RSPHLE_SITE = $(call github,mupen64plus,mupen64plus-rsp-hle,$(MUPEN64PLUS_RSPHLE_VERSION)) MUPEN64PLUS_RSPHLE_LICENSE = MIT MUPEN64PLUS_RSPHLE_DEPENDENCIES = sdl2 alsa-lib mupen64plus-core diff --git a/package/mupen64plus-uiconsole/mupen64plus-uiconsole.mk b/package/mupen64plus-uiconsole/mupen64plus-uiconsole.mk index e76a48423f59554ece3442bbfd310e3589638bda..c51004975e94bb7255a0acbbcf474f41f38725a0 100644 --- a/package/mupen64plus-uiconsole/mupen64plus-uiconsole.mk +++ b/package/mupen64plus-uiconsole/mupen64plus-uiconsole.mk @@ -4,8 +4,8 @@ # ################################################################################ -# commit of 2024/09/10 -MUPEN64PLUS_UICONSOLE_VERSION = beddd15785663f1c3b4e9476998defea36223cf3 +# Commit of 2025/06/21 +MUPEN64PLUS_UICONSOLE_VERSION = 44bc0d8e82da88efa2bd700472c10f9166314e00 MUPEN64PLUS_UICONSOLE_SITE = $(call github,mupen64plus,mupen64plus-ui-console,$(MUPEN64PLUS_UICONSOLE_VERSION)) MUPEN64PLUS_UICONSOLE_LICENSE = MIT MUPEN64PLUS_UICONSOLE_DEPENDENCIES = sdl2 alsa-lib mupen64plus-core diff --git a/package/mupen64plus-video-gles2n64/mupen64plus-video-gles2n64.mk b/package/mupen64plus-video-gles2n64/mupen64plus-video-gles2n64.mk index afe23888b84f87e89058dcd550e0e81f54e9179e..11f214716741765e1ea3577db5b241b1193ab083 100644 --- a/package/mupen64plus-video-gles2n64/mupen64plus-video-gles2n64.mk +++ b/package/mupen64plus-video-gles2n64/mupen64plus-video-gles2n64.mk @@ -4,6 +4,7 @@ # ################################################################################ +# Commit of 2019/08/08 MUPEN64PLUS_VIDEO_GLES2N64_VERSION = 1f53773f9045f5f18b895fe41f166d272175d72f MUPEN64PLUS_VIDEO_GLES2N64_SITE = $(call github,ricrpi,mupen64plus-video-gles2n64,$(MUPEN64PLUS_VIDEO_GLES2N64_VERSION)) MUPEN64PLUS_VIDEO_GLES2N64_LICENSE = MIT diff --git a/package/mupen64plus-video-gles2rice/mupen64plus-video-gles2rice.mk b/package/mupen64plus-video-gles2rice/mupen64plus-video-gles2rice.mk index 0fef9d9294a59f177a587eb68da283cb341c879f..ef1236e1c6990b80a17606ac774a51872a36ae4d 100644 --- a/package/mupen64plus-video-gles2rice/mupen64plus-video-gles2rice.mk +++ b/package/mupen64plus-video-gles2rice/mupen64plus-video-gles2rice.mk @@ -4,7 +4,7 @@ # ################################################################################ -# Commit of 2023/10/23 - pandora backport for RPi +# Commit of 2023/10/29 - pandora backport for RPi MUPEN64PLUS_VIDEO_GLES2RICE_VERSION = 1dcd6ddb6c60750c9fe4dd6dab6a2d04c304221e MUPEN64PLUS_VIDEO_GLES2RICE_SITE = $(call github,ricrpi,mupen64plus-video-gles2rice,$(MUPEN64PLUS_VIDEO_GLES2RICE_VERSION)) MUPEN64PLUS_VIDEO_GLES2RICE_LICENSE = MIT diff --git a/package/mupen64plus-video-glide64mk2/mupen64plus-video-glide64mk2.mk b/package/mupen64plus-video-glide64mk2/mupen64plus-video-glide64mk2.mk index af27fbf8eeb7afeea799b41280b27e3cc99994ee..8ce1d0f149301ef3b79711d140e9d7aeaaaf0da2 100644 --- a/package/mupen64plus-video-glide64mk2/mupen64plus-video-glide64mk2.mk +++ b/package/mupen64plus-video-glide64mk2/mupen64plus-video-glide64mk2.mk @@ -4,8 +4,8 @@ # ################################################################################ -# Commit of 2024/09/14 -MUPEN64PLUS_VIDEO_GLIDE64MK2_VERSION = 39a8c11e8a041e16bcc6d67ebc2281b8632ba5ed +# Commit of 2025/06/21 +MUPEN64PLUS_VIDEO_GLIDE64MK2_VERSION = d82d5715111bc50cf6dd8066e531e9cc6fbb9eab MUPEN64PLUS_VIDEO_GLIDE64MK2_SITE = $(call github,mupen64plus,mupen64plus-video-glide64mk2,$(MUPEN64PLUS_VIDEO_GLIDE64MK2_VERSION)) MUPEN64PLUS_VIDEO_GLIDE64MK2_LICENSE = MIT diff --git a/package/mupen64plus-video-rice/mupen64plus-video-rice.mk b/package/mupen64plus-video-rice/mupen64plus-video-rice.mk index bb36e213effe6d14b40de9dff84bc5899c229cb7..c3c3fa7b69ee73711fdbbbc75aa1b2859b1abec9 100644 --- a/package/mupen64plus-video-rice/mupen64plus-video-rice.mk +++ b/package/mupen64plus-video-rice/mupen64plus-video-rice.mk @@ -4,8 +4,8 @@ # ################################################################################ -# Commit of 2024/07/15 -MUPEN64PLUS_VIDEO_RICE_VERSION = fcf00779f08a9503ef30d26422f6b0350684820d +# Commit of 2025/06/21 +MUPEN64PLUS_VIDEO_RICE_VERSION = 50be36007f26500bd48d4b2c1574bb977af9e2e4 MUPEN64PLUS_VIDEO_RICE_SITE = $(call github,mupen64plus,mupen64plus-video-rice,$(MUPEN64PLUS_VIDEO_RICE_VERSION)) MUPEN64PLUS_VIDEO_RICE_LICENSE = MIT MUPEN64PLUS_VIDEO_RICE_DEPENDENCIES = sdl2 alsa-lib mupen64plus-core diff --git a/projects/configgen/configgen/generators/mupen/mupenConfig.py b/projects/configgen/configgen/generators/mupen/mupenConfig.py index 5dfe49a50d757fc47d48e24623cb1c09c1271981..be23e2ca7e31a45e2aafc0c102ff4aaebbff5c9d 100644 --- a/projects/configgen/configgen/generators/mupen/mupenConfig.py +++ b/projects/configgen/configgen/generators/mupen/mupenConfig.py @@ -26,9 +26,9 @@ def writeMupenConfig(system: Emulator, controllers: ControllerPerPlayer, rom: st romName = os.path.basename(rom) # Crop resulted image. - mupenSettings.setInt('Video-Rice', 'CropMode', 1) # This option no longer exist! + mupenSettings.setInt('Video-Rice', 'CropMode', 1) # This option no longer exist! # Size of texture cache in megabytes. - mupenSettings.setInt('Video-Rice', 'CacheSize', 100) # This option no longer exist! + mupenSettings.setInt('Video-Rice', 'CacheSize', 100) # This option no longer exist! # Bilinear filtering mode. mupenSettings.setInt('Video-GLideN64', 'bilinearMode', 1) # Enable color buffer copy to RDRAM. @@ -101,10 +101,11 @@ def __writeHotKeyConfig(controllers: ControllerPerPlayer, mupenSettings: IniSett mupenSettings.setString(section, 'Joy Mapping Reset', "\"J{}{}/{}\"".format(controller.SdlIndex, __createButtonCode(controller.Hotkey), __createButtonCode(controller.A))) -def __createButtonCode(button: InputItem) -> str: - if button.IsAxis: return 'A' + str(button.Id) + ('-' if button.Value < 0 else '+') +def __createButtonCode(button: InputItem) -> str | None: + if button.IsAxis : return 'A' + str(button.Id) + ('-' if button.Value < 0 else '+') if button.IsButton: return 'B' + str(button.Id) - if button.IsHat: return 'H' + str(button.Id) + 'V' + str(button.Value) + if button.IsHat : return 'H' + str(button.Id) + 'V' + str(button.Value) + return None def __setPaths(mupenSettings: IniSettings): @@ -114,7 +115,7 @@ def __setPaths(mupenSettings: IniSettings): mupenSettings.setString(section, 'SaveSRAMPath', recalboxFiles.mupenSaves) def __setIpl64DD(system: Emulator, mupenSettings: IniSettings): - #Set ipl only for n64 + # Set ipl only for n64 section = '64DD' if system.Name == "64dd": mupenSettings.setString(section, "IPL-ROM", "/recalbox/share/bios/64DD_IPL.bin") diff --git a/projects/configgen/configgen/generators/mupen/mupenControllers.py b/projects/configgen/configgen/generators/mupen/mupenControllers.py index a982ce0dacde3eaa71b8d555e2ecc2c621b99c05..6ed29943fc18bdf62f791eef7258aa570a1967ed 100644 --- a/projects/configgen/configgen/generators/mupen/mupenControllers.py +++ b/projects/configgen/configgen/generators/mupen/mupenControllers.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +import pygame from typing import Dict from configgen.controllers.controller import InputItem, Controller, ControllerPerPlayer from configgen.settings.iniSettings import IniSettings @@ -8,7 +9,7 @@ import configgen.recalboxFiles as recalboxFiles # http://mupen64plus.org/wiki/index.php?title=Mupen64Plus_Plugin_Parameters # Mupen doesn't like to have 2 buttons mapped for N64 pad entry. That's why r2 is commented for now. 1 axis and 1 button is ok -mupenHatToAxis = { 1: 'Up', 2: 'Right', 4: 'Down', 8: 'Left'} +mupenHatToAxis = {1: 'Up', 2: 'Right', 4: 'Down', 8: 'Left'} mupenDoubleAxis = {0: 'X Axis', 1: 'Y Axis'} def getMupenMappingFile() -> str: @@ -31,7 +32,7 @@ def getMupenMapping() -> Dict[str, str]: return dictio # Write a configuration for a specified controller -def writeControllersConfig(controllers: ControllerPerPlayer): +def writeControllersConfig(controllers: ControllerPerPlayer) -> None: # Do not load previous file padConfig = IniSettings(recalboxFiles.mupenInput) padConfig.loadFile(True) \ @@ -85,13 +86,12 @@ def defineControllerKeys(controller: Controller) -> Dict[str, str]: if controller.DeviceName == 'Nintendo Switch N64 Controller': # Specific case for the official N64 controller for Nintendo Switch - config['C Button U'] = "button(3)"; - config['C Button D'] = "button(8)"; - config['C Button L'] = "button(2)"; - config['C Button R'] = "button(9)"; + config['C Button U'] = "button(3)" + config['C Button D'] = "button(8)" + config['C Button L'] = "button(2)" + config['C Button R'] = "button(9)" return config - def setControllerLine(_, item: InputItem, mupenSettingName: str) -> str: value = '' if item.IsButton: @@ -110,9 +110,8 @@ def setControllerLine(_, item: InputItem, mupenSettingName: str) -> str: else: value = "axis({}-)".format(item.Id) return value - -def writeToIni(controller: Controller, config: Dict[str, str], padConfig: IniSettings): - section = controller.DeviceName +def writeToIni(controller: Controller, config: Dict[str, str], padConfig: IniSettings) -> None: + section = get_sdl_joystick_name(controller.SdlIndex) # Write static config padConfig.setBool(section, 'plugged', True) @@ -128,3 +127,13 @@ def writeToIni(controller: Controller, config: Dict[str, str], padConfig: IniSet # Write dynamic config for inputName in sorted(config): padConfig.setString(section, inputName, config[inputName]) + +def get_sdl_joystick_name(index: int) -> str: + pygame.init() + pygame.joystick.init() + + joystick = pygame.joystick.Joystick(index) + joystick.init() + controller_name = joystick.get_name() + + return controller_name diff --git a/projects/configgen/configgen/generators/mupen/mupenGenerator.py b/projects/configgen/configgen/generators/mupen/mupenGenerator.py index 57fff197f2d4561921a208101bba6f67b23b639e..ae5bd132e0fba039fec1e239127c388354c0d31f 100644 --- a/projects/configgen/configgen/generators/mupen/mupenGenerator.py +++ b/projects/configgen/configgen/generators/mupen/mupenGenerator.py @@ -50,6 +50,4 @@ class MupenGenerator(Generator): commandArray.append(args.rom) - return Command(videomode=system.VideoMode, - array=commandArray, - env=commandEnv) + return Command(videomode=system.VideoMode, array=commandArray, env=commandEnv) diff --git a/projects/configgen/tests/generators/mupenGenerator_test.py b/projects/configgen/tests/generators/mupenGenerator_test.py index e9ecadd7f33ed9b0af20bc17794c04464f68c0b2..eafbad9a812b375928ecc7975a8ea87df54d1ecf 100644 --- a/projects/configgen/tests/generators/mupenGenerator_test.py +++ b/projects/configgen/tests/generators/mupenGenerator_test.py @@ -1,6 +1,7 @@ #!/usr/bin/env python import pytest import shutil +from unittest.mock import patch, MagicMock from configgen.Emulator import Emulator import configgen.generators.mupen.mupenControllers as mupenControllers import configgen.generators.mupen.mupenConfig as mupenConfig @@ -28,8 +29,13 @@ def system_gliden64(): return Emulator(name='n64', videoMode='1920x1080', ratio='auto', emulator='mupen64plus', core='gliden64') +@patch('pygame.joystick.Joystick') @pytest.mark.usefixtures("controller_configuration") -def test_simple_generate_mupen_gliden64(emulator, system_gliden64, controller_configuration): +def test_simple_generate_mupen_gliden64(mock_joystick_class, emulator, system_gliden64, controller_configuration): + mock_joystick = MagicMock() + mock_joystick.get_name.return_value = "Test Controller" + mock_joystick_class.return_value = mock_joystick + command = emulator.generate(system_gliden64, controller_configuration, keyValueSettings("", False), Arguments('path/to/test.n64')) assert command.videomode == '1920x1080' assert command.array == ['/usr/bin/mupen64plus', '--corelib', '/usr/lib/libmupen64plus.so.2.0.0',