diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 8dcaf19dd..dc16c8846 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1 +1 @@ -custom: ['https://utip.io/flyinghead', 'https://www.paypal.com/paypalme/FlycastEmu'] +custom: ['https://www.paypal.com/paypalme/FlycastEmu'] diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 55dc4fbd3..d2f50b97e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -28,6 +28,11 @@ CORE_ARGS: -DLIBRETRO=ON -G Xcode -DCMAKE_BUILD_TYPE=Release EXTRA_PATH: Release +.core-defs-ios-arm64: + extends: .core-defs + variables: + CORE_ARGS: -DLIBRETRO=ON -DCMAKE_BUILD_TYPE=Release + .core-defs-android: extends: .core-defs script: @@ -62,11 +67,19 @@ include: - project: 'libretro-infrastructure/ci-templates' file: '/android-cmake.yml' + # iOS arm64 + - project: 'libretro-infrastructure/ci-templates' + file: '/ios-cmake.yml' + ################################## CONSOLES ################################ # Nintendo Switch # - project: 'libretro-infrastructure/ci-templates' # file: '/libnx-static.yml' + # tvOS arm64 + - project: 'libretro-infrastructure/ci-templates' + file: '/tvos-cmake.yml' + # Stages for building stages: - build-prepare @@ -139,9 +152,20 @@ android-x86: - .libretro-android-cmake-x86 - .core-defs-android +libretro-build-ios-arm64: + extends: + - .libretro-ios-cmake-arm64 + - .core-defs-ios-arm64 + ################################### CONSOLES ################################# # Nintendo Switch #libretro-build-libnx-aarch64: # extends: # - .libretro-libnx-static-retroarch-master # - .core-defs + +# tvOS arm64 +libretro-build-tvos-arm64: + extends: + - .libretro-tvos-cmake-arm64 + - .core-defs-ios-arm64 diff --git a/CMakeLists.txt b/CMakeLists.txt index abb707afd..3aa2490d7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,6 +14,9 @@ if(APPLE) if(CMAKE_SYSTEM_NAME STREQUAL iOS) set(CMAKE_OSX_DEPLOYMENT_TARGET "12.0" CACHE STRING "Minimum iOS deployment version") set(CMAKE_OSX_ARCHITECTURES "arm64" CACHE STRING "") + elseif(CMAKE_SYSTEM_NAME STREQUAL tvOS) + set(CMAKE_OSX_DEPLOYMENT_TARGET "12.0" CACHE STRING "Minimum tvOS deployment version") + set(CMAKE_OSX_ARCHITECTURES "arm64" CACHE STRING "") else() set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "Minimum macOS deployment version") set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64" CACHE STRING "") @@ -62,7 +65,7 @@ option(ENABLE_GDB_SERVER "Build with GDB debugging support" OFF) option(ENABLE_DC_PROFILER "Build with support for target machine (SH4) profiler" OFF) option(ENABLE_FC_PROFILER "Build with support for host app (Flycast) profiler" OFF) -if(IOS) +if(IOS AND NOT LIBRETRO) set(USE_VULKAN OFF CACHE BOOL "Force vulkan off" FORCE) endif() @@ -128,11 +131,17 @@ if(NINTENDO_SWITCH) elseif(LIBRETRO) add_library(${PROJECT_NAME} SHARED core/emulator.cpp) if(APPLE) - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-undefined,error") + if(NOT IOS) + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-undefined,error") + endif() + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-exported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/shell/libretro/libretro.osx.def") else() set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined") endif() - set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "flycast_libretro") + set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "flycast_libretro" + XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO" + XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "" + ) set(CMAKE_SHARED_LIBRARY_PREFIX "") set(CMAKE_POSITION_INDEPENDENT_CODE ON) target_compile_definitions(${PROJECT_NAME} PRIVATE LIBRETRO) @@ -140,6 +149,11 @@ elseif(LIBRETRO) target_compile_definitions(${PROJECT_NAME} PRIVATE GLES GLES3 HAVE_OPENGLES HAVE_OPENGLES3) find_library(GLES3_LIBRARIES NAMES GLESv3 GLESv2 NO_CACHE REQUIRED) target_link_libraries(${PROJECT_NAME} PRIVATE ${GLES3_LIBRARIES}) + elseif(IOS) + target_compile_definitions(${PROJECT_NAME} PRIVATE GLES GLES3 HAVE_OPENGLES HAVE_OPENGLES3) + find_library(OPENGLES OpenGLES) + find_library(GLKIT GLKit) + target_link_libraries(${PROJECT_NAME} PRIVATE ${OPENGLES} ${GLKIT}) elseif(USE_GLES2) target_compile_definitions(${PROJECT_NAME} PRIVATE GLES GLES2 HAVE_OPENGLES HAVE_OPENGLES2) if(USE_VIDEOCORE) @@ -719,7 +733,7 @@ if(LIBRETRO) target_sources(${PROJECT_NAME} PRIVATE core/deps/libretro-common/glsm/glsm.c core/deps/libretro-common/glsym/rglgen.c) - if(ANDROID OR USE_GLES) + if(ANDROID OR IOS OR USE_GLES) target_sources(${PROJECT_NAME} PRIVATE core/deps/libretro-common/glsym/glsym_es3.c) elseif(USE_GLES2) target_sources(${PROJECT_NAME} PRIVATE core/deps/libretro-common/glsym/glsym_es2.c) diff --git a/core/deps/libretro-common/include/libretro.h b/core/deps/libretro-common/include/libretro.h index 4bd3f2f0c..983ebfc2c 100644 --- a/core/deps/libretro-common/include/libretro.h +++ b/core/deps/libretro-common/include/libretro.h @@ -1767,6 +1767,39 @@ enum retro_mod * (see enum retro_savestate_context) */ +#define RETRO_ENVIRONMENT_GET_HW_RENDER_CONTEXT_NEGOTIATION_INTERFACE_SUPPORT (73 | RETRO_ENVIRONMENT_EXPERIMENTAL) + /* struct retro_hw_render_context_negotiation_interface * -- + * Before calling SET_HW_RNEDER_CONTEXT_NEGOTIATION_INTERFACE, a core can query + * which version of the interface is supported. + * + * Frontend looks at interface_type and returns the maximum supported + * context negotiation interface version. + * If the interface_type is not supported or recognized by the frontend, a version of 0 + * must be returned in interface_version and true is returned by frontend. + * + * If this environment call returns true with interface_version greater than 0, + * a core can always use a negotiation interface version larger than what the frontend returns, but only + * earlier versions of the interface will be used by the frontend. + * A frontend must not reject a negotiation interface version that is larger than + * what the frontend supports. Instead, the frontend will use the older entry points that it recognizes. + * If this is incompatible with a particular core's requirements, it can error out early. + * + * Backwards compatibility note: + * This environment call was introduced after Vulkan v1 context negotiation. + * If this environment call is not supported by frontend - i.e. the environment call returns false - + * only Vulkan v1 context negotiation is supported (if Vulkan HW rendering is supported at all). + * If a core uses Vulkan negotiation interface with version > 1, negotiation may fail unexpectedly. + * All future updates to the context negotiation interface implies that frontend must support + * this environment call to query support. + */ + +#define RETRO_ENVIRONMENT_GET_JIT_CAPABLE 74 + /* bool * -- + * Result is set to true if the frontend has already verified JIT can be + * used, mainly for use iOS/tvOS. On other platforms the result is true. + */ + + /* VFS functionality */ /* File paths: diff --git a/core/emulator.cpp b/core/emulator.cpp index 9a2eea659..2f678481c 100644 --- a/core/emulator.cpp +++ b/core/emulator.cpp @@ -388,9 +388,9 @@ static void loadSpecialSettings() void dc_reset(bool hard) { - NetworkHandshake::term(); if (hard) { + NetworkHandshake::term(); memwatch::unprotect(); memwatch::reset(); } diff --git a/core/hw/modem/modem.cpp b/core/hw/modem/modem.cpp index 5ea4bfcae..29a273e97 100644 --- a/core/hw/modem/modem.cpp +++ b/core/hw/modem/modem.cpp @@ -32,6 +32,7 @@ #ifndef NDEBUG #include "oslib/oslib.h" #endif +#include #define MODEM_COUNTRY_RES 0 #define MODEM_COUNTRY_JAP 1 @@ -53,6 +54,8 @@ const static u32 MODEM_ID[2] = static modemreg_t modem_regs; static u8 dspram[0x1000]; +static_assert(sizeof(regs_write_mask) == sizeof(modem_regs)); +static_assert(sizeof(por_dspram) == sizeof(dspram)); static int modem_sched; @@ -345,10 +348,7 @@ static void schedule_callback(int ms) static void NormalDefaultRegs() { - verify(state == MS_NORMAL); - verify(sizeof(regs_write_mask) == sizeof(modem_regs)); - verify(sizeof(por_dspram) == sizeof(dspram)); - + assert(state == MS_NORMAL); // Default values for normal state memset(&modem_regs, 0, sizeof(modem_regs)); memcpy(dspram, por_dspram, sizeof(dspram)); @@ -369,16 +369,16 @@ static void NormalDefaultRegs() } static void DSPTestEnd() { - verify(state==MS_END_DSP); - state=MS_NORMAL; + assert(state == MS_END_DSP); + state = MS_NORMAL; LOG("DSPTestEnd"); NormalDefaultRegs(); } static void DSPTestStart() { - verify(state==MS_ST_DSP); - state=MS_END_DSP; + assert(state == MS_ST_DSP); + state = MS_END_DSP; LOG("DSPTestStart"); modem_regs.reg1e.TDBE = 1; @@ -393,8 +393,8 @@ static void DSPTestStart() } static void ControllerTestEnd() { - verify(state==MS_ST_CONTROLER); - state=MS_ST_DSP; + assert(state == MS_ST_CONTROLER); + state = MS_ST_DSP; schedule_callback(50); } @@ -402,13 +402,13 @@ static void ControllerTestEnd() //End the reset and start internal tests static void ControllerTestStart() { - verify(state==MS_RESETING); + assert(state == MS_RESETING); //Set Self test values :) - state=MS_ST_CONTROLER; + state = MS_ST_CONTROLER; //k, lets set values //1E:3 -> set - modem_regs.reg1e.TDBE=1; + modem_regs.reg1e.TDBE = 1; /* RAM1 Checksum = 0xEA3C or 0x451 @@ -419,13 +419,13 @@ static void ControllerTestStart() Part Number = 0x3730 or 0x3731 Revision Level = 0x4241 */ - SetReg16(0x1D,0x1C,0xEA3C); - SetReg16(0x1B,0x1A,0x5536); - SetReg16(0x19,0x18,0x5F4C); - SetReg16(0x17,0x16,0x3835); - SetReg16(0x15,0x14,0x801); - SetReg16(0x13,0x12,0x3730); - SetReg16(0x11,0x0,0x4241); + SetReg16(0x1D, 0x1C, 0xEA3C); + SetReg16(0x1B, 0x1A, 0x5536); + SetReg16(0x19, 0x18, 0x5F4C); + SetReg16(0x17, 0x16, 0x3835); + SetReg16(0x15, 0x14, 0x801); + SetReg16(0x13, 0x12, 0x3730); + SetReg16(0x11, 0x0, 0x4241); ControllerTestEnd(); } @@ -492,9 +492,9 @@ static void ModemNormalWrite(u32 reg, u32 data) case 0x06: LOG("PEN = %d", modem_regs.reg06.PEN); if (modem_regs.reg06.PEN) - die("PEN = 1"); + WARN_LOG(MODEM, "Parity not supported"); if (modem_regs.reg06.HDLC) - die("HDLC = 1"); + WARN_LOG(MODEM, "HDLC mode not supported"); break; case 0x08: @@ -572,7 +572,8 @@ static void ModemNormalWrite(u32 reg, u32 data) break; case 0x1a: - verify(connect_state != CONNECTED || !modem_regs.reg1a.SCIBE); + if (connect_state == CONNECTED && modem_regs.reg1a.SCIBE) + WARN_LOG(MODEM, "Unexpected state: connected and SCIBE==1"); break; //Address low diff --git a/core/hw/sh4/modules/mmu.cpp b/core/hw/sh4/modules/mmu.cpp index bb717a3b3..46b9cf985 100644 --- a/core/hw/sh4/modules/mmu.cpp +++ b/core/hw/sh4/modules/mmu.cpp @@ -411,7 +411,13 @@ retry_ITLB_Match: if (*tlb_entry_ret == nullptr) { - verify(mmach == false); +#ifndef FAST_MMU + verify(!mmach); +#else + // the matching may be approximative + if (mmach) + return MmuError::TLB_MISS; +#endif const TLB_Entry *tlb_entry; MmuError lookup = mmu_full_lookup(va, &tlb_entry, rv); if (lookup != MmuError::NONE) diff --git a/core/rec-ARM/rec_arm.cpp b/core/rec-ARM/rec_arm.cpp index 5930c9bf3..b384df772 100644 --- a/core/rec-ARM/rec_arm.cpp +++ b/core/rec-ARM/rec_arm.cpp @@ -548,6 +548,17 @@ void ngen_CC_Call(shil_opcode* op, void* function) fd = SRegister(fd.GetCode() + 1); } call(function); + for (const CC_PS& ccParam : CC_pars) + { + const shil_param& prm = *ccParam.par; + if (ccParam.type == CPT_ptr && prm.count() == 2 && reg.IsAllocf(prm) && (op->rd._reg == prm._reg || op->rd2._reg == prm._reg)) + { + // fsca rd param is a pointer to a 64-bit reg so reload the regs if allocated + const int shRegOffs = (u8*)GetRegPtr(prm._reg) - (u8*)&p_sh4rcb->cntx - sizeof(Sh4cntx); + ass.Vldr(reg.mapFReg(prm, 0), MemOperand(r8, shRegOffs)); + ass.Vldr(reg.mapFReg(prm, 1), MemOperand(r8, shRegOffs + 4)); + } + } } void ngen_CC_Finish(shil_opcode* op) @@ -1366,8 +1377,23 @@ static void ngen_compile_opcode(RuntimeBlockInfo* block, shil_opcode* op, bool o if (reg.IsAllocf(op->rd)) { verify(reg.IsAllocf(op->rs1)); - ass.Vmov(reg.mapFReg(op->rd, 0), reg.mapFReg(op->rs1, 0)); - ass.Vmov(reg.mapFReg(op->rd, 1), reg.mapFReg(op->rs1, 1)); + SRegister rd0 = reg.mapFReg(op->rd, 0); + SRegister rs0 = reg.mapFReg(op->rs1, 0); + SRegister rd1 = reg.mapFReg(op->rd, 1); + SRegister rs1 = reg.mapFReg(op->rs1, 1); + if (rd0.Is(rs1)) + { + ass.Vmov(s0, rd0); + ass.Vmov(rd0, rs0); + ass.Vmov(rd1, s0); + } + else + { + if (!rd0.Is(rs0)) + ass.Vmov(rd0, rs0); + if (!rd1.Is(rs1)) + ass.Vmov(rd1, rs1); + } } else { diff --git a/core/rec-ARM64/rec_arm64.cpp b/core/rec-ARM64/rec_arm64.cpp index 6fa684b2c..0242bbb59 100644 --- a/core/rec-ARM64/rec_arm64.cpp +++ b/core/rec-ARM64/rec_arm64.cpp @@ -391,12 +391,21 @@ public: { const VRegister& rd0 = regalloc.MapVRegister(op.rd, 0); const VRegister& rs0 = regalloc.MapVRegister(op.rs1, 0); - if (!rd0.Is(rs0)) - Fmov(rd0, rs0); const VRegister& rd1 = regalloc.MapVRegister(op.rd, 1); const VRegister& rs1 = regalloc.MapVRegister(op.rs1, 1); - if (!rd1.Is(rs1)) - Fmov(rd1, rs1); + if (rd0.Is(rs1)) + { + Fmov(w0, rd0); + Fmov(rd0, rs0); + Fmov(rd1, w0); + } + else + { + if (!rd0.Is(rs0)) + Fmov(rd0, rs0); + if (!rd1.Is(rs1)) + Fmov(rd1, rs1); + } } } break; @@ -1075,6 +1084,16 @@ public: } } GenCallRuntime((void (*)())function); + for (const CC_PS& ccParam : CC_pars) + { + const shil_param& prm = *ccParam.prm; + if (ccParam.type == CPT_ptr && prm.count() == 2 && regalloc.IsAllocf(prm) && (op->rd._reg == prm._reg || op->rd2._reg == prm._reg)) + { + // fsca rd param is a pointer to a 64-bit reg so reload the regs if allocated + Ldr(regalloc.MapVRegister(prm, 0), sh4_context_mem_operand(GetRegPtr(prm._reg))); + Ldr(regalloc.MapVRegister(prm, 1), sh4_context_mem_operand(GetRegPtr(prm._reg + 1))); + } + } } MemOperand sh4_context_mem_operand(void *p) diff --git a/core/rec-x64/rec_x64.cpp b/core/rec-x64/rec_x64.cpp index 62a68567c..277d1ed5b 100644 --- a/core/rec-x64/rec_x64.cpp +++ b/core/rec-x64/rec_x64.cpp @@ -219,14 +219,23 @@ public: mov(rcx, (uintptr_t)op.rd.reg_ptr()); mov(qword[rcx], rax); #else - Xbyak::Xmm rd = regalloc.MapXRegister(op.rd, 0); - Xbyak::Xmm rs = regalloc.MapXRegister(op.rs1, 0); - if (rd != rs) - movss(rd, rs); - rd = regalloc.MapXRegister(op.rd, 1); - rs = regalloc.MapXRegister(op.rs1, 1); - if (rd != rs) - movss(rd, rs); + Xbyak::Xmm rd0 = regalloc.MapXRegister(op.rd, 0); + Xbyak::Xmm rs0 = regalloc.MapXRegister(op.rs1, 0); + Xbyak::Xmm rd1 = regalloc.MapXRegister(op.rd, 1); + Xbyak::Xmm rs1 = regalloc.MapXRegister(op.rs1, 1); + if (rd0 == rs1) + { + movss(xmm0, rd0); + movss(rd0, rs0); + movss(rd1, xmm0); + } + else + { + if (rd0 != rs0) + movss(rd0, rs0); + if (rd1 != rs1) + movss(rd1, rs1); + } #endif } break; @@ -261,7 +270,10 @@ public: } else #endif - host_reg_to_shil_param(op.rd, rax); + { + mov(rcx, rax); + host_reg_to_shil_param(op.rd, rcx); + } } break; @@ -543,7 +555,6 @@ public: } break; - // store from EAX case CPT_u64rvL: case CPT_u32rv: @@ -587,16 +598,28 @@ public: //push the ptr itself case CPT_ptr: verify(prm.is_reg()); - mov(call_regs64[regused++], (size_t)prm.reg_ptr()); - break; + default: // Other cases handled in ngen_CC_param break; } } GenCall((void (*)())function); +#if ALLOC_F64 == true + for (const CC_PS& ccParam : CC_pars) + { + const shil_param& prm = *ccParam.prm; + if (ccParam.type == CPT_ptr && prm.count() == 2 && regalloc.IsAllocf(prm) && (op.rd._reg == prm._reg || op.rd2._reg == prm._reg)) { + // fsca rd param is a pointer to a 64-bit reg so reload the regs if allocated + mov(rax, (size_t)GetRegPtr(prm._reg)); + movss(regalloc.MapXRegister(prm, 0), dword[rax]); + mov(rax, (size_t)GetRegPtr(prm._reg + 1)); + movss(regalloc.MapXRegister(prm, 1), dword[rax]); + } + } +#endif } void RegPreload(u32 reg, Xbyak::Operand::Code nreg) @@ -923,7 +946,8 @@ private: die("Invalid immediate size"); break; } - host_reg_to_shil_param(op.rd, eax); + mov(ecx, eax); + host_reg_to_shil_param(op.rd, ecx); } } diff --git a/core/rend/dx11/oit/dx11_oitrenderer.cpp b/core/rend/dx11/oit/dx11_oitrenderer.cpp index 778006efe..757eaa6fc 100644 --- a/core/rend/dx11/oit/dx11_oitrenderer.cpp +++ b/core/rend/dx11/oit/dx11_oitrenderer.cpp @@ -310,16 +310,14 @@ struct DX11OITRenderer : public DX11Renderer else zfunc = gp->isp.DepthMode; - bool zwriteEnable = false; - if (pass == DX11OITShaders::Depth || pass == DX11OITShaders::Color) - { - // Z Write Disable seems to be ignored for punch-through. - // Fixes Worms World Party, Bust-a-Move 4 and Re-Volt - if (Type == ListType_Punch_Through) - zwriteEnable = true; - else - zwriteEnable = !gp->isp.ZWriteDis; - } + bool zwriteEnable; + // Z Write Disable seems to be ignored for punch-through. + // Fixes Worms World Party, Bust-a-Move 4 and Re-Volt + if (Type == ListType_Punch_Through) + zwriteEnable = true; + else + zwriteEnable = !gp->isp.ZWriteDis; + bool needStencil = config::ModifierVolumes && pass == DX11OITShaders::Depth && Type != ListType_Translucent; const u32 stencil = (gp->pcw.Shadow != 0) ? 0x80 : 0; deviceContext->OMSetDepthStencilState(depthStencilStates.getState(true, zwriteEnable, zfunc, needStencil), stencil); @@ -533,8 +531,8 @@ struct DX11OITRenderer : public DX11Renderer // PASS 1: Geometry pass to update depth and stencil // // unbind depth/stencil - ID3D11ShaderResourceView *p = nullptr; - deviceContext->PSSetShaderResources(4, 1, &p); + ID3D11ShaderResourceView * const nullView = nullptr; + deviceContext->PSSetShaderResources(4, 1, &nullView); // disable color writes deviceContext->OMSetBlendState(blendStates.getState(false, 0, 0, true), nullptr, 0xffffffff); deviceContext->OMSetRenderTargetsAndUnorderedAccessViews(1, &opaqueRenderTarget.get(), depthStencilView2, 0, D3D11_KEEP_UNORDERED_ACCESS_VIEWS, nullptr, nullptr); @@ -557,22 +555,22 @@ struct DX11OITRenderer : public DX11Renderer // if (current_pass.autosort) { + deviceContext->PSSetShaderResources(4, 1, &nullView); + deviceContext->OMSetRenderTargetsAndUnorderedAccessViews(1, &opaqueRenderTarget.get(), depthTexView, 0, D3D11_KEEP_UNORDERED_ACCESS_VIEWS, nullptr, nullptr); deviceContext->PSSetShaderResources(4, 1, &depthView.get()); // disable color writes deviceContext->OMSetBlendState(blendStates.getState(false, 0, 0, true), nullptr, 0xffffffff); drawList(pvrrc.global_param_tr, previous_pass.tr_count, tr_count); + // unbind depth tex + deviceContext->PSSetShaderResources(4, 1, &nullView); if (render_pass < render_pass_count - 1) { // // PASS 3b: Geometry pass with TR to update the depth for the next TA render pass // - ID3D11ShaderResourceView *p = nullptr; - deviceContext->PSSetShaderResources(4, 1, &p); - deviceContext->OMSetRenderTargetsAndUnorderedAccessViews(1, &opaqueRenderTarget.get(), depthTexView, 0, D3D11_KEEP_UNORDERED_ACCESS_VIEWS, nullptr, nullptr); + deviceContext->OMSetRenderTargetsAndUnorderedAccessViews(1, &opaqueRenderTarget.get(), depthStencilView2, 0, D3D11_KEEP_UNORDERED_ACCESS_VIEWS, nullptr, nullptr); drawList(pvrrc.global_param_tr, previous_pass.tr_count, tr_count); } - ID3D11ShaderResourceView *p = nullptr; - deviceContext->PSSetShaderResources(4, 1, &p); if (!theDX11Context.isIntel()) { // Intel Iris Plus 640 just crashes @@ -584,8 +582,7 @@ struct DX11OITRenderer : public DX11Renderer } else { - ID3D11ShaderResourceView *p = nullptr; - deviceContext->PSSetShaderResources(4, 1, &p); + deviceContext->PSSetShaderResources(4, 1, &nullView); drawList(pvrrc.global_param_tr, previous_pass.tr_count, tr_count); } if (render_pass < render_pass_count - 1) @@ -608,7 +605,7 @@ struct DX11OITRenderer : public DX11Renderer std::swap(opaqueTex, multipassTex); std::swap(opaqueRenderTarget, multipassRenderTarget); std::swap(opaqueTextureView, multipassTextureView); - deviceContext->PSSetShaderResources(0, 1, &p); + deviceContext->PSSetShaderResources(0, 1, &nullView); deviceContext->IASetInputLayout(mainInputLayout); // Clear the stencil from this pass @@ -626,7 +623,10 @@ struct DX11OITRenderer : public DX11Renderer bool Render() override { - resize(pvrrc.framebufferWidth, pvrrc.framebufferHeight); + bool is_rtt = pvrrc.isRTT; + + if (!is_rtt) + resize(pvrrc.framebufferWidth, pvrrc.framebufferHeight); if (pixelBufferSize != config::PixelBufferSize) { buffers.init(device, deviceContext); @@ -640,8 +640,6 @@ struct DX11OITRenderer : public DX11Renderer deviceContext->OMSetRenderTargets(1, &fbRenderTarget.get(), nullptr); configVertexShader(); - bool is_rtt = pvrrc.isRTT; - deviceContext->IASetInputLayout(mainInputLayout); n2Helper.resetCache(); diff --git a/core/rend/gui.cpp b/core/rend/gui.cpp index ec6cd6435..60915d578 100644 --- a/core/rend/gui.cpp +++ b/core/rend/gui.cpp @@ -1983,7 +1983,7 @@ static void gui_display_settings() ImGui::SameLine(); ShowHelpMarker("Internal render resolution. Higher is better, but more demanding on the GPU. Values higher than your display resolution (but no more than double your display resolution) can be used for supersampling, which provides high-quality antialiasing without reducing sharpness."); - OptionSlider("Horizontal Stretching", config::ScreenStretching, 100, 150, + OptionSlider("Horizontal Stretching", config::ScreenStretching, 100, 250, "Stretch the screen horizontally"); OptionArrowButtons("Frame Skipping", config::SkipFrame, 0, 6, "Number of frames to skip between two actually rendered frames"); diff --git a/core/rend/vulkan/vmallocator.h b/core/rend/vulkan/vmallocator.h index c6e89d4c2..4d61d4f10 100644 --- a/core/rend/vulkan/vmallocator.h +++ b/core/rend/vulkan/vmallocator.h @@ -63,7 +63,9 @@ public: if (allocInfo.pMappedData != nullptr) return allocInfo.pMappedData; void *p; - vmaMapMemory(allocator, allocation, &p); + VkResult res = vmaMapMemory(allocator, allocation, &p); + if (res != VK_SUCCESS) + vk::throwResultException((vk::Result)res, "vmaMapMemory failed"); VkMemoryPropertyFlags flags; vmaGetMemoryTypeProperties(allocator, allocInfo.memoryType, &flags); if ((flags & VK_MEMORY_PROPERTY_HOST_CACHED_BIT) && (flags & VK_MEMORY_PROPERTY_HOST_COHERENT_BIT) == 0) diff --git a/core/wsi/libretro.h b/core/wsi/libretro.h index 1b4e25190..3b1c8f737 100644 --- a/core/wsi/libretro.h +++ b/core/wsi/libretro.h @@ -18,6 +18,10 @@ */ #pragma once #if defined(LIBRETRO) && (defined(HAVE_OPENGL) || defined(HAVE_OPENGLES)) +#if defined(TARGET_IPHONE) //apple-specific ogles3 headers +#include +#include +#endif #include "gl_context.h" #include #include diff --git a/shell/libretro/libretro.cpp b/shell/libretro/libretro.cpp index f8870045f..7701c21e5 100644 --- a/shell/libretro/libretro.cpp +++ b/shell/libretro/libretro.cpp @@ -1797,6 +1797,16 @@ static bool set_dx11_hw_render() // Loading/unloading games bool retro_load_game(const struct retro_game_info *game) { +#if defined(IOS) + bool can_jit; + if (environ_cb(RETRO_ENVIRONMENT_GET_JIT_CAPABLE, &can_jit) && !can_jit) { + // jit is required both for performance and for audio. trying to run + // without the jit will cause a crash. + gui_display_notification("Cannot run without JIT", 5000); + return false; + } +#endif + NOTICE_LOG(BOOT, "retro_load_game: %s", game->path); extract_basename(g_base_name, game->path, sizeof(g_base_name)); diff --git a/shell/libretro/libretro.osx.def b/shell/libretro/libretro.osx.def new file mode 100644 index 000000000..53a556a60 --- /dev/null +++ b/shell/libretro/libretro.osx.def @@ -0,0 +1,27 @@ +#LIBRARY "libretro" +#EXPORTS +_retro_set_environment +_retro_set_video_refresh +_retro_set_audio_sample +_retro_set_audio_sample_batch +_retro_set_input_poll +_retro_set_input_state +_retro_init +_retro_deinit +_retro_api_version +_retro_get_system_info +_retro_get_system_av_info +_retro_set_controller_port_device +_retro_reset +_retro_run +_retro_serialize_size +_retro_serialize +_retro_unserialize +_retro_cheat_reset +_retro_cheat_set +_retro_load_game +_retro_load_game_special +_retro_unload_game +_retro_get_region +_retro_get_memory_data +_retro_get_memory_size diff --git a/shell/libretro/libretro_core_options_intl.h b/shell/libretro/libretro_core_options_intl.h index 21de47d70..a255816e4 100644 --- a/shell/libretro/libretro_core_options_intl.h +++ b/shell/libretro/libretro_core_options_intl.h @@ -3429,6 +3429,1693 @@ struct retro_core_options_v2 options_ast = { option_defs_ast }; +/* RETRO_LANGUAGE_BE */ + +#define CATEGORY_SYSTEM_LABEL_BE NULL +#define CATEGORY_SYSTEM_INFO_0_BE NULL +#define CATEGORY_VIDEO_LABEL_BE "Відэа" +#define CATEGORY_VIDEO_INFO_0_BE NULL +#define CATEGORY_PERFORMANCE_LABEL_BE NULL +#define CATEGORY_PERFORMANCE_INFO_0_BE NULL +#define CATEGORY_HACKS_LABEL_BE NULL +#define CATEGORY_HACKS_INFO_0_BE NULL +#define CATEGORY_INPUT_LABEL_BE NULL +#define CATEGORY_INPUT_INFO_0_BE NULL +#define CATEGORY_VMU_LABEL_BE NULL +#define CATEGORY_VMU_INFO_0_BE NULL +#define CORE_OPTION_NAME_REGION_LABEL_BE NULL +#define OPTION_VAL_JAPAN_BE NULL +#define OPTION_VAL_USA_BE NULL +#define OPTION_VAL_EUROPE_BE NULL +#define OPTION_VAL_DEFAULT_BE NULL +#define CORE_OPTION_NAME_LANGUAGE_LABEL_BE NULL +#define CORE_OPTION_NAME_LANGUAGE_INFO_0_BE NULL +#define OPTION_VAL_JAPANESE_BE NULL +#define OPTION_VAL_ENGLISH_BE NULL +#define OPTION_VAL_GERMAN_BE NULL +#define OPTION_VAL_FRENCH_BE NULL +#define OPTION_VAL_SPANISH_BE NULL +#define OPTION_VAL_ITALIAN_BE NULL +#define CORE_OPTION_NAME_HLE_BIOS_LABEL_BE NULL +#define CORE_OPTION_NAME_HLE_BIOS_INFO_0_BE NULL +#define CORE_OPTION_NAME_BOOT_TO_BIOS_LABEL_BE NULL +#define CORE_OPTION_NAME_BOOT_TO_BIOS_INFO_0_BE NULL +#define CORE_OPTION_NAME_ENABLE_DSP_LABEL_BE NULL +#define CORE_OPTION_NAME_ENABLE_DSP_INFO_0_BE NULL +#define CORE_OPTION_NAME_FORCE_WINCE_LABEL_BE NULL +#define CORE_OPTION_NAME_FORCE_WINCE_INFO_0_BE NULL +#define CORE_OPTION_NAME_ALLOW_SERVICE_BUTTONS_LABEL_BE NULL +#define CORE_OPTION_NAME_ALLOW_SERVICE_BUTTONS_INFO_0_BE NULL +#define CORE_OPTION_NAME_FORCE_FREEPLAY_LABEL_BE NULL +#define CORE_OPTION_NAME_FORCE_FREEPLAY_INFO_0_BE NULL +#define CORE_OPTION_NAME_EMULATE_BBA_LABEL_BE NULL +#define CORE_OPTION_NAME_EMULATE_BBA_INFO_0_BE NULL +#define CORE_OPTION_NAME_UPNP_LABEL_BE NULL +#define CORE_OPTION_NAME_UPNP_INFO_0_BE NULL +#define CORE_OPTION_NAME_INTERNAL_RESOLUTION_LABEL_BE NULL +#define CORE_OPTION_NAME_INTERNAL_RESOLUTION_INFO_0_BE NULL +#define OPTION_VAL_320X240_BE NULL +#define OPTION_VAL_640X480_BE NULL +#define OPTION_VAL_800X600_BE NULL +#define OPTION_VAL_960X720_BE NULL +#define OPTION_VAL_1024X768_BE NULL +#define OPTION_VAL_1280X960_BE NULL +#define OPTION_VAL_1440X1080_BE NULL +#define OPTION_VAL_1600X1200_BE NULL +#define OPTION_VAL_1920X1440_BE NULL +#define OPTION_VAL_2560X1920_BE NULL +#define OPTION_VAL_2880X2160_BE NULL +#define OPTION_VAL_3200X2400_BE NULL +#define OPTION_VAL_3840X2880_BE NULL +#define OPTION_VAL_4480X3360_BE NULL +#define OPTION_VAL_5120X3840_BE NULL +#define OPTION_VAL_5760X4320_BE NULL +#define OPTION_VAL_6400X4800_BE NULL +#define OPTION_VAL_7040X5280_BE NULL +#define OPTION_VAL_7680X5760_BE NULL +#define OPTION_VAL_8320X6240_BE NULL +#define OPTION_VAL_8960X6720_BE NULL +#define OPTION_VAL_9600X7200_BE NULL +#define OPTION_VAL_10240X7680_BE NULL +#define OPTION_VAL_10880X8160_BE NULL +#define OPTION_VAL_11520X8640_BE NULL +#define OPTION_VAL_12160X9120_BE NULL +#define OPTION_VAL_12800X9600_BE NULL +#define CORE_OPTION_NAME_CABLE_TYPE_LABEL_BE NULL +#define CORE_OPTION_NAME_CABLE_TYPE_INFO_0_BE NULL +#define OPTION_VAL_VGA_BE NULL +#define OPTION_VAL_TV_RGB_BE NULL +#define OPTION_VAL_TV_COMPOSITE_BE NULL +#define CORE_OPTION_NAME_BROADCAST_LABEL_BE NULL +#define OPTION_VAL_NTSC_BE NULL +#define OPTION_VAL_PAL_BE NULL +#define OPTION_VAL_PAL_N_BE NULL +#define OPTION_VAL_PAL_M_BE NULL +#define CORE_OPTION_NAME_SCREEN_ROTATION_LABEL_BE NULL +#define OPTION_VAL_HORIZONTAL_BE NULL +#define OPTION_VAL_VERTICAL_BE NULL +#define CORE_OPTION_NAME_ALPHA_SORTING_LABEL_BE NULL +#define OPTION_VAL_PER_STRIP_FAST_LEAST_ACCURATE_BE NULL +#define OPTION_VAL_PER_TRIANGLE_NORMAL_BE NULL +#define OPTION_VAL_PER_PIXEL_ACCURATE_BE NULL +#define CORE_OPTION_NAME_OIT_ABUFFER_SIZE_LABEL_BE NULL +#define CORE_OPTION_NAME_OIT_ABUFFER_SIZE_INFO_0_BE NULL +#define OPTION_VAL_512MB_BE NULL +#define OPTION_VAL_1GB_BE NULL +#define OPTION_VAL_2GB_BE NULL +#define OPTION_VAL_4GB_BE NULL +#define CORE_OPTION_NAME_OIT_LAYERS_LABEL_BE NULL +#define CORE_OPTION_NAME_OIT_LAYERS_INFO_0_BE NULL +#define CORE_OPTION_NAME_EMULATE_FRAMEBUFFER_LABEL_BE NULL +#define CORE_OPTION_NAME_EMULATE_FRAMEBUFFER_INFO_0_BE NULL +#define CORE_OPTION_NAME_ENABLE_RTTB_LABEL_BE NULL +#define CORE_OPTION_NAME_ENABLE_RTTB_INFO_0_BE NULL +#define CORE_OPTION_NAME_MIPMAPPING_LABEL_BE NULL +#define CORE_OPTION_NAME_FOG_LABEL_BE NULL +#define CORE_OPTION_NAME_VOLUME_MODIFIER_ENABLE_LABEL_BE NULL +#define CORE_OPTION_NAME_VOLUME_MODIFIER_ENABLE_INFO_0_BE NULL +#define CORE_OPTION_NAME_ANISOTROPIC_FILTERING_LABEL_BE NULL +#define CORE_OPTION_NAME_ANISOTROPIC_FILTERING_INFO_0_BE NULL +#define CORE_OPTION_NAME_TEXTURE_FILTERING_LABEL_BE NULL +#define CORE_OPTION_NAME_TEXTURE_FILTERING_INFO_0_BE NULL +#define OPTION_VAL_1_BE NULL +#define OPTION_VAL_2_BE NULL +#define CORE_OPTION_NAME_DELAY_FRAME_SWAPPING_LABEL_BE NULL +#define CORE_OPTION_NAME_DELAY_FRAME_SWAPPING_INFO_0_BE NULL +#define CORE_OPTION_NAME_DETECT_VSYNC_SWAP_INTERVAL_LABEL_BE NULL +#define CORE_OPTION_NAME_DETECT_VSYNC_SWAP_INTERVAL_INFO_0_BE NULL +#define CORE_OPTION_NAME_PVR2_FILTERING_LABEL_BE NULL +#define CORE_OPTION_NAME_PVR2_FILTERING_INFO_0_BE NULL +#define CORE_OPTION_NAME_TEXUPSCALE_LABEL_BE NULL +#define CORE_OPTION_NAME_TEXUPSCALE_INFO_0_BE NULL +#define OPTION_VAL_2_O27_BE NULL +#define OPTION_VAL_4_BE NULL +#define OPTION_VAL_6_BE NULL +#define CORE_OPTION_NAME_TEXUPSCALE_MAX_FILTERED_TEXTURE_SIZE_LABEL_BE NULL +#define CORE_OPTION_NAME_NATIVE_DEPTH_INTERPOLATION_LABEL_BE NULL +#define CORE_OPTION_NAME_NATIVE_DEPTH_INTERPOLATION_INFO_0_BE NULL +#define CORE_OPTION_NAME_THREADED_RENDERING_LABEL_BE NULL +#define CORE_OPTION_NAME_THREADED_RENDERING_INFO_0_BE NULL +#define CORE_OPTION_NAME_AUTO_SKIP_FRAME_LABEL_BE NULL +#define CORE_OPTION_NAME_AUTO_SKIP_FRAME_INFO_0_BE NULL +#define OPTION_VAL_SOME_BE NULL +#define OPTION_VAL_MORE_BE NULL +#define CORE_OPTION_NAME_FRAME_SKIPPING_LABEL_BE NULL +#define CORE_OPTION_NAME_FRAME_SKIPPING_INFO_0_BE NULL +#define CORE_OPTION_NAME_WIDESCREEN_CHEATS_LABEL_BE NULL +#define CORE_OPTION_NAME_WIDESCREEN_CHEATS_INFO_0_BE NULL +#define CORE_OPTION_NAME_WIDESCREEN_HACK_LABEL_BE NULL +#define CORE_OPTION_NAME_WIDESCREEN_HACK_INFO_0_BE NULL +#define CORE_OPTION_NAME_GDROM_FAST_LOADING_LABEL_BE NULL +#define CORE_OPTION_NAME_GDROM_FAST_LOADING_INFO_0_BE NULL +#define CORE_OPTION_NAME_CUSTOM_TEXTURES_LABEL_BE NULL +#define CORE_OPTION_NAME_DUMP_TEXTURES_LABEL_BE NULL +#define CORE_OPTION_NAME_ANALOG_STICK_DEADZONE_LABEL_BE NULL +#define OPTION_VAL_0_BE NULL +#define OPTION_VAL_5_BE NULL +#define OPTION_VAL_10_BE NULL +#define OPTION_VAL_15_BE NULL +#define OPTION_VAL_20_BE NULL +#define OPTION_VAL_25_BE NULL +#define OPTION_VAL_30_BE NULL +#define CORE_OPTION_NAME_TRIGGER_DEADZONE_LABEL_BE NULL +#define CORE_OPTION_NAME_DIGITAL_TRIGGERS_LABEL_BE NULL +#define CORE_OPTION_NAME_ENABLE_PURUPURU_LABEL_BE NULL +#define CORE_OPTION_NAME_ENABLE_PURUPURU_INFO_0_BE NULL +#define CORE_OPTION_NAME_NETWORK_OUTPUT_LABEL_BE NULL +#define CORE_OPTION_NAME_NETWORK_OUTPUT_INFO_0_BE NULL +#define CORE_OPTION_NAME_SHOW_LIGHTGUN_SETTINGS_LABEL_BE NULL +#define CORE_OPTION_NAME_SHOW_LIGHTGUN_SETTINGS_INFO_0_BE NULL +#define CORE_OPTION_NAME_LIGHTGUN1_CROSSHAIR_LABEL_BE NULL +#define OPTION_VAL_WHITE_BE NULL +#define OPTION_VAL_RED_BE NULL +#define OPTION_VAL_GREEN_BE NULL +#define OPTION_VAL_BLUE_BE NULL +#define CORE_OPTION_NAME_LIGHTGUN2_CROSSHAIR_LABEL_BE NULL +#define CORE_OPTION_NAME_LIGHTGUN3_CROSSHAIR_LABEL_BE NULL +#define CORE_OPTION_NAME_LIGHTGUN4_CROSSHAIR_LABEL_BE NULL +#define CORE_OPTION_NAME_PER_CONTENT_VMUS_LABEL_BE NULL +#define CORE_OPTION_NAME_PER_CONTENT_VMUS_LABEL_CAT_BE NULL +#define CORE_OPTION_NAME_PER_CONTENT_VMUS_INFO_0_BE NULL +#define OPTION_VAL_VMU_A1_BE NULL +#define OPTION_VAL_ALL_VMUS_BE NULL +#define CORE_OPTION_NAME_SHOW_VMU_SCREEN_SETTINGS_LABEL_BE NULL +#define CORE_OPTION_NAME_SHOW_VMU_SCREEN_SETTINGS_LABEL_CAT_BE NULL +#define CORE_OPTION_NAME_SHOW_VMU_SCREEN_SETTINGS_INFO_0_BE NULL +#define CORE_OPTION_NAME_VMU1_SCREEN_DISPLAY_LABEL_BE NULL +#define CORE_OPTION_NAME_VMU1_SCREEN_POSITION_LABEL_BE NULL +#define OPTION_VAL_UPPER_LEFT_BE NULL +#define OPTION_VAL_UPPER_RIGHT_BE NULL +#define OPTION_VAL_LOWER_LEFT_BE NULL +#define OPTION_VAL_LOWER_RIGHT_BE NULL +#define CORE_OPTION_NAME_VMU1_SCREEN_SIZE_MULT_LABEL_BE NULL +#define OPTION_VAL_1X_BE NULL +#define OPTION_VAL_3X_BE NULL +#define OPTION_VAL_5X_BE NULL +#define CORE_OPTION_NAME_VMU1_PIXEL_ON_COLOR_LABEL_BE NULL +#define OPTION_VAL_DEFAULT_ON_00_BE NULL +#define OPTION_VAL_DEFAULT_OFF_01_BE NULL +#define OPTION_VAL_BLACK_02_BE NULL +#define OPTION_VAL_LIGHT_BLUE_04_BE NULL +#define OPTION_VAL_CYAN_06_BE NULL +#define OPTION_VAL_CYAN_BLUE_07_BE NULL +#define OPTION_VAL_LIGHT_GREEN_08_BE NULL +#define OPTION_VAL_CYAN_GREEN_09_BE NULL +#define OPTION_VAL_LIGHT_CYAN_10_BE NULL +#define OPTION_VAL_PURPLE_12_BE NULL +#define OPTION_VAL_LIGHT_PURPLE_13_BE NULL +#define OPTION_VAL_YELLOW_14_BE NULL +#define OPTION_VAL_GRAY_15_BE NULL +#define OPTION_VAL_LIGHT_PURPLE_2_16_BE NULL +#define OPTION_VAL_LIGHT_GREEN_2_17_BE NULL +#define OPTION_VAL_LIGHT_GREEN_3_18_BE NULL +#define OPTION_VAL_LIGHT_CYAN_2_19_BE NULL +#define OPTION_VAL_LIGHT_RED_2_20_BE NULL +#define OPTION_VAL_MAGENTA_21_BE NULL +#define OPTION_VAL_LIGHT_PURPLE_3_22_BE NULL +#define OPTION_VAL_LIGHT_ORANGE_23_BE NULL +#define OPTION_VAL_ORANGE_24_BE NULL +#define OPTION_VAL_LIGHT_PURPLE_4_25_BE NULL +#define OPTION_VAL_LIGHT_YELLOW_26_BE NULL +#define OPTION_VAL_LIGHT_YELLOW_2_27_BE NULL +#define CORE_OPTION_NAME_VMU1_PIXEL_OFF_COLOR_LABEL_BE NULL +#define CORE_OPTION_NAME_VMU1_SCREEN_OPACITY_LABEL_BE NULL +#define OPTION_VAL_40_BE NULL +#define OPTION_VAL_50_BE NULL +#define OPTION_VAL_60_BE NULL +#define OPTION_VAL_70_BE NULL +#define OPTION_VAL_80_BE NULL +#define OPTION_VAL_90_BE NULL +#define OPTION_VAL_100_BE NULL +#define CORE_OPTION_NAME_VMU2_SCREEN_DISPLAY_LABEL_BE NULL +#define CORE_OPTION_NAME_VMU2_SCREEN_POSITION_LABEL_BE NULL +#define CORE_OPTION_NAME_VMU2_SCREEN_SIZE_MULT_LABEL_BE NULL +#define CORE_OPTION_NAME_VMU2_PIXEL_ON_COLOR_LABEL_BE NULL +#define CORE_OPTION_NAME_VMU2_PIXEL_OFF_COLOR_LABEL_BE NULL +#define CORE_OPTION_NAME_VMU2_SCREEN_OPACITY_LABEL_BE NULL +#define CORE_OPTION_NAME_VMU3_SCREEN_DISPLAY_LABEL_BE NULL +#define CORE_OPTION_NAME_VMU3_SCREEN_POSITION_LABEL_BE NULL +#define CORE_OPTION_NAME_VMU3_SCREEN_SIZE_MULT_LABEL_BE NULL +#define CORE_OPTION_NAME_VMU3_PIXEL_ON_COLOR_LABEL_BE NULL +#define CORE_OPTION_NAME_VMU3_PIXEL_OFF_COLOR_LABEL_BE NULL +#define CORE_OPTION_NAME_VMU3_SCREEN_OPACITY_LABEL_BE NULL +#define CORE_OPTION_NAME_VMU4_SCREEN_DISPLAY_LABEL_BE NULL +#define CORE_OPTION_NAME_VMU4_SCREEN_POSITION_LABEL_BE NULL +#define CORE_OPTION_NAME_VMU4_SCREEN_SIZE_MULT_LABEL_BE NULL +#define CORE_OPTION_NAME_VMU4_PIXEL_ON_COLOR_LABEL_BE NULL +#define CORE_OPTION_NAME_VMU4_PIXEL_OFF_COLOR_LABEL_BE NULL +#define CORE_OPTION_NAME_VMU4_SCREEN_OPACITY_LABEL_BE NULL + +struct retro_core_option_v2_category option_cats_be[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_BE, + CATEGORY_SYSTEM_INFO_0_BE + }, + { + "video", + CATEGORY_VIDEO_LABEL_BE, + CATEGORY_VIDEO_INFO_0_BE + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_BE, + CATEGORY_PERFORMANCE_INFO_0_BE + }, + { + "hacks", + CATEGORY_HACKS_LABEL_BE, + CATEGORY_HACKS_INFO_0_BE + }, + { + "input", + CATEGORY_INPUT_LABEL_BE, + CATEGORY_INPUT_INFO_0_BE + }, + { + "vmu", + CATEGORY_VMU_LABEL_BE, + CATEGORY_VMU_INFO_0_BE + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_be[] = { + { + CORE_OPTION_NAME "_region", + CORE_OPTION_NAME_REGION_LABEL_BE, + NULL, + "", + NULL, + "system", + { + { "Japan", OPTION_VAL_JAPAN_BE }, + { "USA", OPTION_VAL_USA_BE }, + { "Europe", OPTION_VAL_EUROPE_BE }, + { "Default", OPTION_VAL_DEFAULT_BE }, + { NULL, NULL }, + }, + "Default", + }, + { + CORE_OPTION_NAME "_language", + CORE_OPTION_NAME_LANGUAGE_LABEL_BE, + NULL, + CORE_OPTION_NAME_LANGUAGE_INFO_0_BE, + NULL, + "system", + { + { "Japanese", OPTION_VAL_JAPANESE_BE }, + { "English", OPTION_VAL_ENGLISH_BE }, + { "German", OPTION_VAL_GERMAN_BE }, + { "French", OPTION_VAL_FRENCH_BE }, + { "Spanish", OPTION_VAL_SPANISH_BE }, + { "Italian", OPTION_VAL_ITALIAN_BE }, + { "Default", OPTION_VAL_DEFAULT_BE }, + { NULL, NULL }, + }, + "Default", + }, + { + CORE_OPTION_NAME "_hle_bios", + CORE_OPTION_NAME_HLE_BIOS_LABEL_BE, + NULL, + CORE_OPTION_NAME_HLE_BIOS_INFO_0_BE, + NULL, + "system", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled", + }, + { + CORE_OPTION_NAME "_boot_to_bios", + CORE_OPTION_NAME_BOOT_TO_BIOS_LABEL_BE, + NULL, + CORE_OPTION_NAME_BOOT_TO_BIOS_INFO_0_BE, + NULL, + "system", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled", + }, + { + CORE_OPTION_NAME "_enable_dsp", + CORE_OPTION_NAME_ENABLE_DSP_LABEL_BE, + NULL, + CORE_OPTION_NAME_ENABLE_DSP_INFO_0_BE, + NULL, + "system", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, +#ifdef LOW_END + "disabled", +#else + "enabled", +#endif + }, + { + CORE_OPTION_NAME "_force_wince", + CORE_OPTION_NAME_FORCE_WINCE_LABEL_BE, + NULL, + CORE_OPTION_NAME_FORCE_WINCE_INFO_0_BE, + NULL, + "system", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled", + }, + { + CORE_OPTION_NAME "_allow_service_buttons", + CORE_OPTION_NAME_ALLOW_SERVICE_BUTTONS_LABEL_BE, + NULL, + CORE_OPTION_NAME_ALLOW_SERVICE_BUTTONS_INFO_0_BE, + NULL, + "system", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled", + }, + { + CORE_OPTION_NAME "_force_freeplay", + CORE_OPTION_NAME_FORCE_FREEPLAY_LABEL_BE, + NULL, + CORE_OPTION_NAME_FORCE_FREEPLAY_INFO_0_BE, + NULL, + "system", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled", + }, + { + CORE_OPTION_NAME "_emulate_bba", + CORE_OPTION_NAME_EMULATE_BBA_LABEL_BE, + NULL, + CORE_OPTION_NAME_EMULATE_BBA_INFO_0_BE, + NULL, + "system", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled", + }, + { + CORE_OPTION_NAME "_upnp", + CORE_OPTION_NAME_UPNP_LABEL_BE, + NULL, + CORE_OPTION_NAME_UPNP_INFO_0_BE, + NULL, + "system", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled", + }, + + { + CORE_OPTION_NAME "_internal_resolution", + CORE_OPTION_NAME_INTERNAL_RESOLUTION_LABEL_BE, + NULL, + CORE_OPTION_NAME_INTERNAL_RESOLUTION_INFO_0_BE, + NULL, + "video", + { + { "320x240", OPTION_VAL_320X240_BE }, + { "640x480", OPTION_VAL_640X480_BE }, + { "800x600", OPTION_VAL_800X600_BE }, + { "960x720", OPTION_VAL_960X720_BE }, + { "1024x768", OPTION_VAL_1024X768_BE }, + { "1280x960", OPTION_VAL_1280X960_BE }, + { "1440x1080", OPTION_VAL_1440X1080_BE }, + { "1600x1200", OPTION_VAL_1600X1200_BE }, + { "1920x1440", OPTION_VAL_1920X1440_BE }, + { "2560x1920", OPTION_VAL_2560X1920_BE }, + { "2880x2160", OPTION_VAL_2880X2160_BE }, + { "3200x2400", OPTION_VAL_3200X2400_BE }, + { "3840x2880", OPTION_VAL_3840X2880_BE }, + { "4480x3360", OPTION_VAL_4480X3360_BE }, + { "5120x3840", OPTION_VAL_5120X3840_BE }, + { "5760x4320", OPTION_VAL_5760X4320_BE }, + { "6400x4800", OPTION_VAL_6400X4800_BE }, + { "7040x5280", OPTION_VAL_7040X5280_BE }, + { "7680x5760", OPTION_VAL_7680X5760_BE }, + { "8320x6240", OPTION_VAL_8320X6240_BE }, + { "8960x6720", OPTION_VAL_8960X6720_BE }, + { "9600x7200", OPTION_VAL_9600X7200_BE }, + { "10240x7680", OPTION_VAL_10240X7680_BE }, + { "10880x8160", OPTION_VAL_10880X8160_BE }, + { "11520x8640", OPTION_VAL_11520X8640_BE }, + { "12160x9120", OPTION_VAL_12160X9120_BE }, + { "12800x9600", OPTION_VAL_12800X9600_BE }, + { NULL, NULL }, + }, +#ifdef LOW_RES + "320x240", +#else + "640x480", +#endif + }, + { + CORE_OPTION_NAME "_cable_type", + CORE_OPTION_NAME_CABLE_TYPE_LABEL_BE, + NULL, + CORE_OPTION_NAME_CABLE_TYPE_INFO_0_BE, + NULL, + "video", + { + { "VGA", OPTION_VAL_VGA_BE }, + { "TV (RGB)", OPTION_VAL_TV_RGB_BE }, + { "TV (Composite)", OPTION_VAL_TV_COMPOSITE_BE }, + { NULL, NULL }, + }, + "TV (Composite)", + }, + { + CORE_OPTION_NAME "_broadcast", + CORE_OPTION_NAME_BROADCAST_LABEL_BE, + NULL, + "", + NULL, + "video", + { + { "NTSC", OPTION_VAL_NTSC_BE }, + { "PAL", OPTION_VAL_PAL_BE }, + { "PAL_N", OPTION_VAL_PAL_N_BE }, + { "PAL_M", OPTION_VAL_PAL_M_BE }, + { "Default", OPTION_VAL_DEFAULT_BE }, + { NULL, NULL }, + }, + "NTSC", + }, + { + CORE_OPTION_NAME "_screen_rotation", + CORE_OPTION_NAME_SCREEN_ROTATION_LABEL_BE, + NULL, + "", + NULL, + "video", + { + { "horizontal", OPTION_VAL_HORIZONTAL_BE }, + { "vertical", OPTION_VAL_VERTICAL_BE }, + { NULL, NULL }, + }, + "horizontal", + }, + {/* TODO: needs explanation */ + CORE_OPTION_NAME "_alpha_sorting", + CORE_OPTION_NAME_ALPHA_SORTING_LABEL_BE, + NULL, + "", + NULL, + "video", + { + { "per-strip (fast, least accurate)", OPTION_VAL_PER_STRIP_FAST_LEAST_ACCURATE_BE }, + { "per-triangle (normal)", OPTION_VAL_PER_TRIANGLE_NORMAL_BE }, +#if defined(HAVE_OIT) || defined(HAVE_VULKAN) || defined(HAVE_D3D11) + { "per-pixel (accurate)", OPTION_VAL_PER_PIXEL_ACCURATE_BE }, +#endif + { NULL, NULL }, + }, +#if defined(LOW_END) + "per-strip (fast, least accurate)", +#else + "per-triangle (normal)", +#endif + }, +#if defined(HAVE_OIT) || defined(HAVE_VULKAN) || defined(HAVE_D3D11) + { + CORE_OPTION_NAME "_oit_abuffer_size", + CORE_OPTION_NAME_OIT_ABUFFER_SIZE_LABEL_BE, + NULL, + CORE_OPTION_NAME_OIT_ABUFFER_SIZE_INFO_0_BE, + NULL, + "video", + { + { "512MB", OPTION_VAL_512MB_BE }, + { "1GB", OPTION_VAL_1GB_BE }, + { "2GB", OPTION_VAL_2GB_BE }, + { "4GB", OPTION_VAL_4GB_BE }, + { NULL, NULL }, + }, + "512MB", + }, + { + CORE_OPTION_NAME "_oit_layers", + CORE_OPTION_NAME_OIT_LAYERS_LABEL_BE, + NULL, + CORE_OPTION_NAME_OIT_LAYERS_INFO_0_BE, + NULL, + "video", + { + { "8", NULL }, + { "16", NULL }, + { "32", NULL }, + { "64", NULL }, + { "128", NULL }, + { NULL, NULL }, + }, + "32", + }, +#endif + { + CORE_OPTION_NAME "_emulate_framebuffer", + CORE_OPTION_NAME_EMULATE_FRAMEBUFFER_LABEL_BE, + NULL, + CORE_OPTION_NAME_EMULATE_FRAMEBUFFER_INFO_0_BE, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled", + }, + {/* TODO: needs explanation */ + CORE_OPTION_NAME "_enable_rttb", + CORE_OPTION_NAME_ENABLE_RTTB_LABEL_BE, + NULL, + CORE_OPTION_NAME_ENABLE_RTTB_INFO_0_BE, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled", + }, + {/* TODO: needs explanation */ + CORE_OPTION_NAME "_mipmapping", + CORE_OPTION_NAME_MIPMAPPING_LABEL_BE, + NULL, + "", + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled", + }, + { + CORE_OPTION_NAME "_fog", + CORE_OPTION_NAME_FOG_LABEL_BE, + NULL, + "", + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled", + }, + { + CORE_OPTION_NAME "_volume_modifier_enable", + CORE_OPTION_NAME_VOLUME_MODIFIER_ENABLE_LABEL_BE, + NULL, + CORE_OPTION_NAME_VOLUME_MODIFIER_ENABLE_INFO_0_BE, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled", + }, + { + CORE_OPTION_NAME "_anisotropic_filtering", + CORE_OPTION_NAME_ANISOTROPIC_FILTERING_LABEL_BE, + NULL, + CORE_OPTION_NAME_ANISOTROPIC_FILTERING_INFO_0_BE, + NULL, + "video", + { + { "off", "disabled" }, + { "2", NULL }, + { "4", NULL }, + { "8", NULL }, + { "16", NULL }, + { NULL, NULL }, + }, + "4", + }, + { + CORE_OPTION_NAME "_texture_filtering", + CORE_OPTION_NAME_TEXTURE_FILTERING_LABEL_BE, + NULL, + CORE_OPTION_NAME_TEXTURE_FILTERING_INFO_0_BE, + NULL, + "video", + { + { "0", OPTION_VAL_DEFAULT_BE }, + { "1", OPTION_VAL_1_BE }, + { "2", OPTION_VAL_2_BE }, + { NULL, NULL }, + }, + "0", + }, + { + CORE_OPTION_NAME "_delay_frame_swapping", + CORE_OPTION_NAME_DELAY_FRAME_SWAPPING_LABEL_BE, + NULL, + CORE_OPTION_NAME_DELAY_FRAME_SWAPPING_INFO_0_BE, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled", + }, + { + CORE_OPTION_NAME "_detect_vsync_swap_interval", + CORE_OPTION_NAME_DETECT_VSYNC_SWAP_INTERVAL_LABEL_BE, + NULL, + CORE_OPTION_NAME_DETECT_VSYNC_SWAP_INTERVAL_INFO_0_BE, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled", + }, + { + CORE_OPTION_NAME "_pvr2_filtering", + CORE_OPTION_NAME_PVR2_FILTERING_LABEL_BE, + NULL, + CORE_OPTION_NAME_PVR2_FILTERING_INFO_0_BE, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled", + }, +#ifdef _OPENMP + { + CORE_OPTION_NAME "_texupscale", + CORE_OPTION_NAME_TEXUPSCALE_LABEL_BE, + NULL, + CORE_OPTION_NAME_TEXUPSCALE_INFO_0_BE, + NULL, + "video", + { + { "1", "disabled" }, + { "2", OPTION_VAL_2_O27_BE }, + { "4", OPTION_VAL_4_BE }, + { "6", OPTION_VAL_6_BE }, + { NULL, NULL }, + }, + "1", + }, + {/* TODO: needs clarification */ + CORE_OPTION_NAME "_texupscale_max_filtered_texture_size", + CORE_OPTION_NAME_TEXUPSCALE_MAX_FILTERED_TEXTURE_SIZE_LABEL_BE, + NULL, + "", + NULL, + "video", + { + { "256", NULL }, + { "512", NULL }, + { "1024", NULL }, + { NULL, NULL }, + }, + "256", + }, +#endif + { + CORE_OPTION_NAME "_native_depth_interpolation", + CORE_OPTION_NAME_NATIVE_DEPTH_INTERPOLATION_LABEL_BE, + NULL, + CORE_OPTION_NAME_NATIVE_DEPTH_INTERPOLATION_INFO_0_BE, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled", + }, + { + CORE_OPTION_NAME "_threaded_rendering", + CORE_OPTION_NAME_THREADED_RENDERING_LABEL_BE, + NULL, + CORE_OPTION_NAME_THREADED_RENDERING_INFO_0_BE, + NULL, + "performance", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled", + }, + { + CORE_OPTION_NAME "_auto_skip_frame", + CORE_OPTION_NAME_AUTO_SKIP_FRAME_LABEL_BE, + NULL, + CORE_OPTION_NAME_AUTO_SKIP_FRAME_INFO_0_BE, + NULL, + "performance", + { + { "disabled", NULL }, + { "some", OPTION_VAL_SOME_BE }, + { "more", OPTION_VAL_MORE_BE }, + { NULL, NULL }, + }, +#ifdef LOW_END + "some", +#else + "disabled", +#endif + }, + { + CORE_OPTION_NAME "_frame_skipping", + CORE_OPTION_NAME_FRAME_SKIPPING_LABEL_BE, + NULL, + CORE_OPTION_NAME_FRAME_SKIPPING_INFO_0_BE, + NULL, + "performance", + { + { "disabled", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { NULL, NULL }, + }, + "disabled", + }, + { + CORE_OPTION_NAME "_widescreen_cheats", + CORE_OPTION_NAME_WIDESCREEN_CHEATS_LABEL_BE, + NULL, + CORE_OPTION_NAME_WIDESCREEN_CHEATS_INFO_0_BE, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled", + }, + { + CORE_OPTION_NAME "_widescreen_hack", + CORE_OPTION_NAME_WIDESCREEN_HACK_LABEL_BE, + NULL, + CORE_OPTION_NAME_WIDESCREEN_HACK_INFO_0_BE, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled", + }, + { + CORE_OPTION_NAME "_gdrom_fast_loading", + CORE_OPTION_NAME_GDROM_FAST_LOADING_LABEL_BE, + NULL, + CORE_OPTION_NAME_GDROM_FAST_LOADING_INFO_0_BE, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, +#ifdef LOW_END + "enabled", +#else + "disabled", +#endif + }, + { + CORE_OPTION_NAME "_custom_textures", + CORE_OPTION_NAME_CUSTOM_TEXTURES_LABEL_BE, + NULL, + "", + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled", + }, + {/* TODO: probably needs explanation */ + CORE_OPTION_NAME "_dump_textures", + CORE_OPTION_NAME_DUMP_TEXTURES_LABEL_BE, + NULL, + "", + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled", + }, + { + CORE_OPTION_NAME "_analog_stick_deadzone", + CORE_OPTION_NAME_ANALOG_STICK_DEADZONE_LABEL_BE, + NULL, + "", + NULL, + "input", + { + { "0%", OPTION_VAL_0_BE }, + { "5%", OPTION_VAL_5_BE }, + { "10%", OPTION_VAL_10_BE }, + { "15%", OPTION_VAL_15_BE }, + { "20%", OPTION_VAL_20_BE }, + { "25%", OPTION_VAL_25_BE }, + { "30%", OPTION_VAL_30_BE }, + { NULL, NULL }, + }, + "15%", + }, + { + CORE_OPTION_NAME "_trigger_deadzone", + CORE_OPTION_NAME_TRIGGER_DEADZONE_LABEL_BE, + NULL, + "", + NULL, + "input", + { + { "0%", OPTION_VAL_0_BE }, + { "5%", OPTION_VAL_5_BE }, + { "10%", OPTION_VAL_10_BE }, + { "15%", OPTION_VAL_15_BE }, + { "20%", OPTION_VAL_20_BE }, + { "25%", OPTION_VAL_25_BE }, + { "30%", OPTION_VAL_30_BE }, + { NULL, NULL }, + }, + "0%", + }, + { + CORE_OPTION_NAME "_digital_triggers", + CORE_OPTION_NAME_DIGITAL_TRIGGERS_LABEL_BE, + NULL, + "", + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled", + }, + { + CORE_OPTION_NAME "_enable_purupuru", + CORE_OPTION_NAME_ENABLE_PURUPURU_LABEL_BE, + NULL, + CORE_OPTION_NAME_ENABLE_PURUPURU_INFO_0_BE, + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled", + }, + { + CORE_OPTION_NAME "_network_output", + CORE_OPTION_NAME_NETWORK_OUTPUT_LABEL_BE, + NULL, + CORE_OPTION_NAME_NETWORK_OUTPUT_INFO_0_BE, + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled", + }, + { + CORE_OPTION_NAME "_show_lightgun_settings", + CORE_OPTION_NAME_SHOW_LIGHTGUN_SETTINGS_LABEL_BE, + NULL, + CORE_OPTION_NAME_SHOW_LIGHTGUN_SETTINGS_INFO_0_BE, + NULL, + "input", + { + { "enabled", NULL }, + { "disabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + CORE_OPTION_NAME "_lightgun1_crosshair", + CORE_OPTION_NAME_LIGHTGUN1_CROSSHAIR_LABEL_BE, + NULL, + "", + NULL, + "input", + { + { "disabled", NULL }, + { "White", OPTION_VAL_WHITE_BE }, + { "Red", OPTION_VAL_RED_BE }, + { "Green", OPTION_VAL_GREEN_BE }, + { "Blue", OPTION_VAL_BLUE_BE }, + { NULL, NULL }, + }, + "disabled", + }, + { + CORE_OPTION_NAME "_lightgun2_crosshair", + CORE_OPTION_NAME_LIGHTGUN2_CROSSHAIR_LABEL_BE, + NULL, + "", + NULL, + "input", + { + { "disabled", NULL }, + { "White", OPTION_VAL_WHITE_BE }, + { "Red", OPTION_VAL_RED_BE }, + { "Green", OPTION_VAL_GREEN_BE }, + { "Blue", OPTION_VAL_BLUE_BE }, + { NULL, NULL }, + }, + "disabled", + }, + { + CORE_OPTION_NAME "_lightgun3_crosshair", + CORE_OPTION_NAME_LIGHTGUN3_CROSSHAIR_LABEL_BE, + NULL, + "", + NULL, + "input", + { + { "disabled", NULL }, + { "White", OPTION_VAL_WHITE_BE }, + { "Red", OPTION_VAL_RED_BE }, + { "Green", OPTION_VAL_GREEN_BE }, + { "Blue", OPTION_VAL_BLUE_BE }, + { NULL, NULL }, + }, + "disabled", + }, + { + CORE_OPTION_NAME "_lightgun4_crosshair", + CORE_OPTION_NAME_LIGHTGUN4_CROSSHAIR_LABEL_BE, + NULL, + "", + NULL, + "input", + { + { "disabled", NULL }, + { "White", OPTION_VAL_WHITE_BE }, + { "Red", OPTION_VAL_RED_BE }, + { "Green", OPTION_VAL_GREEN_BE }, + { "Blue", OPTION_VAL_BLUE_BE }, + { NULL, NULL }, + }, + "disabled", + }, + { + CORE_OPTION_NAME "_per_content_vmus", + CORE_OPTION_NAME_PER_CONTENT_VMUS_LABEL_BE, + CORE_OPTION_NAME_PER_CONTENT_VMUS_LABEL_CAT_BE, + CORE_OPTION_NAME_PER_CONTENT_VMUS_INFO_0_BE, + NULL, + "vmu", + { + { "disabled", NULL }, + { "VMU A1", OPTION_VAL_VMU_A1_BE }, + { "All VMUs", OPTION_VAL_ALL_VMUS_BE }, + { NULL, NULL}, + }, + "disabled", + }, + { + CORE_OPTION_NAME "_show_vmu_screen_settings", + CORE_OPTION_NAME_SHOW_VMU_SCREEN_SETTINGS_LABEL_BE, + CORE_OPTION_NAME_SHOW_VMU_SCREEN_SETTINGS_LABEL_CAT_BE, + CORE_OPTION_NAME_SHOW_VMU_SCREEN_SETTINGS_INFO_0_BE, + NULL, + "vmu", + { + { "enabled", NULL }, + { "disabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + CORE_OPTION_NAME "_vmu1_screen_display", + CORE_OPTION_NAME_VMU1_SCREEN_DISPLAY_LABEL_BE, + NULL, + "", + NULL, + "vmu", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled", + }, + { + CORE_OPTION_NAME "_vmu1_screen_position", + CORE_OPTION_NAME_VMU1_SCREEN_POSITION_LABEL_BE, + NULL, + "", + NULL, + "vmu", + { + { "Upper Left", OPTION_VAL_UPPER_LEFT_BE }, + { "Upper Right", OPTION_VAL_UPPER_RIGHT_BE }, + { "Lower Left", OPTION_VAL_LOWER_LEFT_BE }, + { "Lower Right", OPTION_VAL_LOWER_RIGHT_BE }, + { NULL, NULL }, + }, + "Upper Left", + }, + { + CORE_OPTION_NAME "_vmu1_screen_size_mult", + CORE_OPTION_NAME_VMU1_SCREEN_SIZE_MULT_LABEL_BE, + NULL, + "", + NULL, + "vmu", + { + { "1x", OPTION_VAL_1X_BE }, + { "2x", OPTION_VAL_2_O27_BE }, + { "3x", OPTION_VAL_3X_BE }, + { "4x", OPTION_VAL_4_BE }, + { "5x", OPTION_VAL_5X_BE }, + { NULL, NULL }, + }, + "1x", + }, + { + CORE_OPTION_NAME "_vmu1_pixel_on_color", + CORE_OPTION_NAME_VMU1_PIXEL_ON_COLOR_LABEL_BE, + NULL, + "", + NULL, + "vmu", + { + { "DEFAULT_ON 00", OPTION_VAL_DEFAULT_ON_00_BE }, + { "DEFAULT_OFF 01", OPTION_VAL_DEFAULT_OFF_01_BE }, + { "BLACK 02", OPTION_VAL_BLACK_02_BE }, + { "BLUE 03", OPTION_VAL_BLUE_BE }, + { "LIGHT_BLUE 04", OPTION_VAL_LIGHT_BLUE_04_BE }, + { "GREEN 05", OPTION_VAL_GREEN_BE }, + { "CYAN 06", OPTION_VAL_CYAN_06_BE }, + { "CYAN_BLUE 07", OPTION_VAL_CYAN_BLUE_07_BE }, + { "LIGHT_GREEN 08", OPTION_VAL_LIGHT_GREEN_08_BE }, + { "CYAN_GREEN 09", OPTION_VAL_CYAN_GREEN_09_BE }, + { "LIGHT_CYAN 10", OPTION_VAL_LIGHT_CYAN_10_BE }, + { "RED 11", OPTION_VAL_RED_BE }, + { "PURPLE 12", OPTION_VAL_PURPLE_12_BE }, + { "LIGHT_PURPLE 13", OPTION_VAL_LIGHT_PURPLE_13_BE }, + { "YELLOW 14", OPTION_VAL_YELLOW_14_BE }, + { "GRAY 15", OPTION_VAL_GRAY_15_BE }, + { "LIGHT_PURPLE_2 16", OPTION_VAL_LIGHT_PURPLE_2_16_BE }, + { "LIGHT_GREEN_2 17", OPTION_VAL_LIGHT_GREEN_2_17_BE }, + { "LIGHT_GREEN_3 18", OPTION_VAL_LIGHT_GREEN_3_18_BE }, + { "LIGHT_CYAN_2 19", OPTION_VAL_LIGHT_CYAN_2_19_BE }, + { "LIGHT_RED_2 20", OPTION_VAL_LIGHT_RED_2_20_BE }, + { "MAGENTA 21", OPTION_VAL_MAGENTA_21_BE }, + { "LIGHT_PURPLE_3 22", OPTION_VAL_LIGHT_PURPLE_3_22_BE }, + { "LIGHT_ORANGE 23", OPTION_VAL_LIGHT_ORANGE_23_BE }, + { "ORANGE 24", OPTION_VAL_ORANGE_24_BE }, + { "LIGHT_PURPLE_4 25", OPTION_VAL_LIGHT_PURPLE_4_25_BE }, + { "LIGHT_YELLOW 26", OPTION_VAL_LIGHT_YELLOW_26_BE }, + { "LIGHT_YELLOW_2 27", OPTION_VAL_LIGHT_YELLOW_2_27_BE }, + { "WHITE 28", OPTION_VAL_WHITE_BE }, + { NULL, NULL }, + }, + "DEFAULT_ON 00", + }, + { + CORE_OPTION_NAME "_vmu1_pixel_off_color", + CORE_OPTION_NAME_VMU1_PIXEL_OFF_COLOR_LABEL_BE, + NULL, + "", + NULL, + "vmu", + { + { "DEFAULT_OFF 01", OPTION_VAL_DEFAULT_OFF_01_BE }, + { "DEFAULT_ON 00", OPTION_VAL_DEFAULT_ON_00_BE }, + { "BLACK 02", OPTION_VAL_BLACK_02_BE }, + { "BLUE 03", OPTION_VAL_BLUE_BE }, + { "LIGHT_BLUE 04", OPTION_VAL_LIGHT_BLUE_04_BE }, + { "GREEN 05", OPTION_VAL_GREEN_BE }, + { "CYAN 06", OPTION_VAL_CYAN_06_BE }, + { "CYAN_BLUE 07", OPTION_VAL_CYAN_BLUE_07_BE }, + { "LIGHT_GREEN 08", OPTION_VAL_LIGHT_GREEN_08_BE }, + { "CYAN_GREEN 09", OPTION_VAL_CYAN_GREEN_09_BE }, + { "LIGHT_CYAN 10", OPTION_VAL_LIGHT_CYAN_10_BE }, + { "RED 11", OPTION_VAL_RED_BE }, + { "PURPLE 12", OPTION_VAL_PURPLE_12_BE }, + { "LIGHT_PURPLE 13", OPTION_VAL_LIGHT_PURPLE_13_BE }, + { "YELLOW 14", OPTION_VAL_YELLOW_14_BE }, + { "GRAY 15", OPTION_VAL_GRAY_15_BE }, + { "LIGHT_PURPLE_2 16", OPTION_VAL_LIGHT_PURPLE_2_16_BE }, + { "LIGHT_GREEN_2 17", OPTION_VAL_LIGHT_GREEN_2_17_BE }, + { "LIGHT_GREEN_3 18", OPTION_VAL_LIGHT_GREEN_3_18_BE }, + { "LIGHT_CYAN_2 19", OPTION_VAL_LIGHT_CYAN_2_19_BE }, + { "LIGHT_RED_2 20", OPTION_VAL_LIGHT_RED_2_20_BE }, + { "MAGENTA 21", OPTION_VAL_MAGENTA_21_BE }, + { "LIGHT_PURPLE_3 22", OPTION_VAL_LIGHT_PURPLE_3_22_BE }, + { "LIGHT_ORANGE 23", OPTION_VAL_LIGHT_ORANGE_23_BE }, + { "ORANGE 24", OPTION_VAL_ORANGE_24_BE }, + { "LIGHT_PURPLE_4 25", OPTION_VAL_LIGHT_PURPLE_4_25_BE }, + { "LIGHT_YELLOW 26", OPTION_VAL_LIGHT_YELLOW_26_BE }, + { "LIGHT_YELLOW_2 27", OPTION_VAL_LIGHT_YELLOW_2_27_BE }, + { "WHITE 28", OPTION_VAL_WHITE_BE }, + { NULL, NULL }, + }, + "DEFAULT_OFF 01", + }, + { + CORE_OPTION_NAME "_vmu1_screen_opacity", + CORE_OPTION_NAME_VMU1_SCREEN_OPACITY_LABEL_BE, + NULL, + "", + NULL, + "vmu", + { + { "10%", OPTION_VAL_10_BE }, + { "20%", OPTION_VAL_20_BE }, + { "30%", OPTION_VAL_30_BE }, + { "40%", OPTION_VAL_40_BE }, + { "50%", OPTION_VAL_50_BE }, + { "60%", OPTION_VAL_60_BE }, + { "70%", OPTION_VAL_70_BE }, + { "80%", OPTION_VAL_80_BE }, + { "90%", OPTION_VAL_90_BE }, + { "100%", OPTION_VAL_100_BE }, + { NULL, NULL }, + }, + "100%", + }, + { + CORE_OPTION_NAME "_vmu2_screen_display", + CORE_OPTION_NAME_VMU2_SCREEN_DISPLAY_LABEL_BE, + NULL, + "", + NULL, + "vmu", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled", + }, + { + CORE_OPTION_NAME "_vmu2_screen_position", + CORE_OPTION_NAME_VMU2_SCREEN_POSITION_LABEL_BE, + NULL, + "", + NULL, + "vmu", + { + { "Upper Left", OPTION_VAL_UPPER_LEFT_BE }, + { "Upper Right", OPTION_VAL_UPPER_RIGHT_BE }, + { "Lower Left", OPTION_VAL_LOWER_LEFT_BE }, + { "Lower Right", OPTION_VAL_LOWER_RIGHT_BE }, + { NULL, NULL }, + }, + "Upper Left", + }, + { + CORE_OPTION_NAME "_vmu2_screen_size_mult", + CORE_OPTION_NAME_VMU2_SCREEN_SIZE_MULT_LABEL_BE, + NULL, + "", + NULL, + "vmu", + { + { "1x", OPTION_VAL_1X_BE }, + { "2x", OPTION_VAL_2_O27_BE }, + { "3x", OPTION_VAL_3X_BE }, + { "4x", OPTION_VAL_4_BE }, + { "5x", OPTION_VAL_5X_BE }, + { NULL, NULL }, + }, + "1x", + }, + { + CORE_OPTION_NAME "_vmu2_pixel_on_color", + CORE_OPTION_NAME_VMU2_PIXEL_ON_COLOR_LABEL_BE, + NULL, + "", + NULL, + "vmu", + { + { "DEFAULT_ON 00", OPTION_VAL_DEFAULT_ON_00_BE }, + { "DEFAULT_OFF 01", OPTION_VAL_DEFAULT_OFF_01_BE }, + { "BLACK 02", OPTION_VAL_BLACK_02_BE }, + { "BLUE 03", OPTION_VAL_BLUE_BE }, + { "LIGHT_BLUE 04", OPTION_VAL_LIGHT_BLUE_04_BE }, + { "GREEN 05", OPTION_VAL_GREEN_BE }, + { "CYAN 06", OPTION_VAL_CYAN_06_BE }, + { "CYAN_BLUE 07", OPTION_VAL_CYAN_BLUE_07_BE }, + { "LIGHT_GREEN 08", OPTION_VAL_LIGHT_GREEN_08_BE }, + { "CYAN_GREEN 09", OPTION_VAL_CYAN_GREEN_09_BE }, + { "LIGHT_CYAN 10", OPTION_VAL_LIGHT_CYAN_10_BE }, + { "RED 11", OPTION_VAL_RED_BE }, + { "PURPLE 12", OPTION_VAL_PURPLE_12_BE }, + { "LIGHT_PURPLE 13", OPTION_VAL_LIGHT_PURPLE_13_BE }, + { "YELLOW 14", OPTION_VAL_YELLOW_14_BE }, + { "GRAY 15", OPTION_VAL_GRAY_15_BE }, + { "LIGHT_PURPLE_2 16", OPTION_VAL_LIGHT_PURPLE_2_16_BE }, + { "LIGHT_GREEN_2 17", OPTION_VAL_LIGHT_GREEN_2_17_BE }, + { "LIGHT_GREEN_3 18", OPTION_VAL_LIGHT_GREEN_3_18_BE }, + { "LIGHT_CYAN_2 19", OPTION_VAL_LIGHT_CYAN_2_19_BE }, + { "LIGHT_RED_2 20", OPTION_VAL_LIGHT_RED_2_20_BE }, + { "MAGENTA 21", OPTION_VAL_MAGENTA_21_BE }, + { "LIGHT_PURPLE_3 22", OPTION_VAL_LIGHT_PURPLE_3_22_BE }, + { "LIGHT_ORANGE 23", OPTION_VAL_LIGHT_ORANGE_23_BE }, + { "ORANGE 24", OPTION_VAL_ORANGE_24_BE }, + { "LIGHT_PURPLE_4 25", OPTION_VAL_LIGHT_PURPLE_4_25_BE }, + { "LIGHT_YELLOW 26", OPTION_VAL_LIGHT_YELLOW_26_BE }, + { "LIGHT_YELLOW_2 27", OPTION_VAL_LIGHT_YELLOW_2_27_BE }, + { "WHITE 28", OPTION_VAL_WHITE_BE }, + { NULL, NULL }, + }, + "DEFAULT_ON 00", + }, + { + CORE_OPTION_NAME "_vmu2_pixel_off_color", + CORE_OPTION_NAME_VMU2_PIXEL_OFF_COLOR_LABEL_BE, + NULL, + "", + NULL, + "vmu", + { + { "DEFAULT_OFF 01", OPTION_VAL_DEFAULT_OFF_01_BE }, + { "DEFAULT_ON 00", OPTION_VAL_DEFAULT_ON_00_BE }, + { "BLACK 02", OPTION_VAL_BLACK_02_BE }, + { "BLUE 03", OPTION_VAL_BLUE_BE }, + { "LIGHT_BLUE 04", OPTION_VAL_LIGHT_BLUE_04_BE }, + { "GREEN 05", OPTION_VAL_GREEN_BE }, + { "CYAN 06", OPTION_VAL_CYAN_06_BE }, + { "CYAN_BLUE 07", OPTION_VAL_CYAN_BLUE_07_BE }, + { "LIGHT_GREEN 08", OPTION_VAL_LIGHT_GREEN_08_BE }, + { "CYAN_GREEN 09", OPTION_VAL_CYAN_GREEN_09_BE }, + { "LIGHT_CYAN 10", OPTION_VAL_LIGHT_CYAN_10_BE }, + { "RED 11", OPTION_VAL_RED_BE }, + { "PURPLE 12", OPTION_VAL_PURPLE_12_BE }, + { "LIGHT_PURPLE 13", OPTION_VAL_LIGHT_PURPLE_13_BE }, + { "YELLOW 14", OPTION_VAL_YELLOW_14_BE }, + { "GRAY 15", OPTION_VAL_GRAY_15_BE }, + { "LIGHT_PURPLE_2 16", OPTION_VAL_LIGHT_PURPLE_2_16_BE }, + { "LIGHT_GREEN_2 17", OPTION_VAL_LIGHT_GREEN_2_17_BE }, + { "LIGHT_GREEN_3 18", OPTION_VAL_LIGHT_GREEN_3_18_BE }, + { "LIGHT_CYAN_2 19", OPTION_VAL_LIGHT_CYAN_2_19_BE }, + { "LIGHT_RED_2 20", OPTION_VAL_LIGHT_RED_2_20_BE }, + { "MAGENTA 21", OPTION_VAL_MAGENTA_21_BE }, + { "LIGHT_PURPLE_3 22", OPTION_VAL_LIGHT_PURPLE_3_22_BE }, + { "LIGHT_ORANGE 23", OPTION_VAL_LIGHT_ORANGE_23_BE }, + { "ORANGE 24", OPTION_VAL_ORANGE_24_BE }, + { "LIGHT_PURPLE_4 25", OPTION_VAL_LIGHT_PURPLE_4_25_BE }, + { "LIGHT_YELLOW 26", OPTION_VAL_LIGHT_YELLOW_26_BE }, + { "LIGHT_YELLOW_2 27", OPTION_VAL_LIGHT_YELLOW_2_27_BE }, + { "WHITE 28", OPTION_VAL_WHITE_BE }, + { NULL, NULL }, + }, + "DEFAULT_OFF 01", + }, + { + CORE_OPTION_NAME "_vmu2_screen_opacity", + CORE_OPTION_NAME_VMU2_SCREEN_OPACITY_LABEL_BE, + NULL, + "", + NULL, + "vmu", + { + { "10%", OPTION_VAL_10_BE }, + { "20%", OPTION_VAL_20_BE }, + { "30%", OPTION_VAL_30_BE }, + { "40%", OPTION_VAL_40_BE }, + { "50%", OPTION_VAL_50_BE }, + { "60%", OPTION_VAL_60_BE }, + { "70%", OPTION_VAL_70_BE }, + { "80%", OPTION_VAL_80_BE }, + { "90%", OPTION_VAL_90_BE }, + { "100%", OPTION_VAL_100_BE }, + { NULL, NULL }, + }, + "100%", + }, + { + CORE_OPTION_NAME "_vmu3_screen_display", + CORE_OPTION_NAME_VMU3_SCREEN_DISPLAY_LABEL_BE, + NULL, + "", + NULL, + "vmu", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled", + }, + { + CORE_OPTION_NAME "_vmu3_screen_position", + CORE_OPTION_NAME_VMU3_SCREEN_POSITION_LABEL_BE, + NULL, + "", + NULL, + "vmu", + { + { "Upper Left", OPTION_VAL_UPPER_LEFT_BE }, + { "Upper Right", OPTION_VAL_UPPER_RIGHT_BE }, + { "Lower Left", OPTION_VAL_LOWER_LEFT_BE }, + { "Lower Right", OPTION_VAL_LOWER_RIGHT_BE }, + { NULL, NULL }, + }, + "Upper Left", + }, + { + CORE_OPTION_NAME "_vmu3_screen_size_mult", + CORE_OPTION_NAME_VMU3_SCREEN_SIZE_MULT_LABEL_BE, + NULL, + "", + NULL, + "vmu", + { + { "1x", OPTION_VAL_1X_BE }, + { "2x", OPTION_VAL_2_O27_BE }, + { "3x", OPTION_VAL_3X_BE }, + { "4x", OPTION_VAL_4_BE }, + { "5x", OPTION_VAL_5X_BE }, + { NULL, NULL }, + }, + "1x", + }, + { + CORE_OPTION_NAME "_vmu3_pixel_on_color", + CORE_OPTION_NAME_VMU3_PIXEL_ON_COLOR_LABEL_BE, + NULL, + "", + NULL, + "vmu", + { + { "DEFAULT_ON 00", OPTION_VAL_DEFAULT_ON_00_BE }, + { "DEFAULT_OFF 01", OPTION_VAL_DEFAULT_OFF_01_BE }, + { "BLACK 02", OPTION_VAL_BLACK_02_BE }, + { "BLUE 03", OPTION_VAL_BLUE_BE }, + { "LIGHT_BLUE 04", OPTION_VAL_LIGHT_BLUE_04_BE }, + { "GREEN 05", OPTION_VAL_GREEN_BE }, + { "CYAN 06", OPTION_VAL_CYAN_06_BE }, + { "CYAN_BLUE 07", OPTION_VAL_CYAN_BLUE_07_BE }, + { "LIGHT_GREEN 08", OPTION_VAL_LIGHT_GREEN_08_BE }, + { "CYAN_GREEN 09", OPTION_VAL_CYAN_GREEN_09_BE }, + { "LIGHT_CYAN 10", OPTION_VAL_LIGHT_CYAN_10_BE }, + { "RED 11", OPTION_VAL_RED_BE }, + { "PURPLE 12", OPTION_VAL_PURPLE_12_BE }, + { "LIGHT_PURPLE 13", OPTION_VAL_LIGHT_PURPLE_13_BE }, + { "YELLOW 14", OPTION_VAL_YELLOW_14_BE }, + { "GRAY 15", OPTION_VAL_GRAY_15_BE }, + { "LIGHT_PURPLE_2 16", OPTION_VAL_LIGHT_PURPLE_2_16_BE }, + { "LIGHT_GREEN_2 17", OPTION_VAL_LIGHT_GREEN_2_17_BE }, + { "LIGHT_GREEN_3 18", OPTION_VAL_LIGHT_GREEN_3_18_BE }, + { "LIGHT_CYAN_2 19", OPTION_VAL_LIGHT_CYAN_2_19_BE }, + { "LIGHT_RED_2 20", OPTION_VAL_LIGHT_RED_2_20_BE }, + { "MAGENTA 21", OPTION_VAL_MAGENTA_21_BE }, + { "LIGHT_PURPLE_3 22", OPTION_VAL_LIGHT_PURPLE_3_22_BE }, + { "LIGHT_ORANGE 23", OPTION_VAL_LIGHT_ORANGE_23_BE }, + { "ORANGE 24", OPTION_VAL_ORANGE_24_BE }, + { "LIGHT_PURPLE_4 25", OPTION_VAL_LIGHT_PURPLE_4_25_BE }, + { "LIGHT_YELLOW 26", OPTION_VAL_LIGHT_YELLOW_26_BE }, + { "LIGHT_YELLOW_2 27", OPTION_VAL_LIGHT_YELLOW_2_27_BE }, + { "WHITE 28", OPTION_VAL_WHITE_BE }, + { NULL, NULL }, + }, + "DEFAULT_ON 00", + }, + { + CORE_OPTION_NAME "_vmu3_pixel_off_color", + CORE_OPTION_NAME_VMU3_PIXEL_OFF_COLOR_LABEL_BE, + NULL, + "", + NULL, + "vmu", + { + { "DEFAULT_OFF 01", OPTION_VAL_DEFAULT_OFF_01_BE }, + { "DEFAULT_ON 00", OPTION_VAL_DEFAULT_ON_00_BE }, + { "BLACK 02", OPTION_VAL_BLACK_02_BE }, + { "BLUE 03", OPTION_VAL_BLUE_BE }, + { "LIGHT_BLUE 04", OPTION_VAL_LIGHT_BLUE_04_BE }, + { "GREEN 05", OPTION_VAL_GREEN_BE }, + { "CYAN 06", OPTION_VAL_CYAN_06_BE }, + { "CYAN_BLUE 07", OPTION_VAL_CYAN_BLUE_07_BE }, + { "LIGHT_GREEN 08", OPTION_VAL_LIGHT_GREEN_08_BE }, + { "CYAN_GREEN 09", OPTION_VAL_CYAN_GREEN_09_BE }, + { "LIGHT_CYAN 10", OPTION_VAL_LIGHT_CYAN_10_BE }, + { "RED 11", OPTION_VAL_RED_BE }, + { "PURPLE 12", OPTION_VAL_PURPLE_12_BE }, + { "LIGHT_PURPLE 13", OPTION_VAL_LIGHT_PURPLE_13_BE }, + { "YELLOW 14", OPTION_VAL_YELLOW_14_BE }, + { "GRAY 15", OPTION_VAL_GRAY_15_BE }, + { "LIGHT_PURPLE_2 16", OPTION_VAL_LIGHT_PURPLE_2_16_BE }, + { "LIGHT_GREEN_2 17", OPTION_VAL_LIGHT_GREEN_2_17_BE }, + { "LIGHT_GREEN_3 18", OPTION_VAL_LIGHT_GREEN_3_18_BE }, + { "LIGHT_CYAN_2 19", OPTION_VAL_LIGHT_CYAN_2_19_BE }, + { "LIGHT_RED_2 20", OPTION_VAL_LIGHT_RED_2_20_BE }, + { "MAGENTA 21", OPTION_VAL_MAGENTA_21_BE }, + { "LIGHT_PURPLE_3 22", OPTION_VAL_LIGHT_PURPLE_3_22_BE }, + { "LIGHT_ORANGE 23", OPTION_VAL_LIGHT_ORANGE_23_BE }, + { "ORANGE 24", OPTION_VAL_ORANGE_24_BE }, + { "LIGHT_PURPLE_4 25", OPTION_VAL_LIGHT_PURPLE_4_25_BE }, + { "LIGHT_YELLOW 26", OPTION_VAL_LIGHT_YELLOW_26_BE }, + { "LIGHT_YELLOW_2 27", OPTION_VAL_LIGHT_YELLOW_2_27_BE }, + { "WHITE 28", OPTION_VAL_WHITE_BE }, + { NULL, NULL }, + }, + "DEFAULT_OFF 01", + }, + { + CORE_OPTION_NAME "_vmu3_screen_opacity", + CORE_OPTION_NAME_VMU3_SCREEN_OPACITY_LABEL_BE, + NULL, + "", + NULL, + "vmu", + { + { "10%", OPTION_VAL_10_BE }, + { "20%", OPTION_VAL_20_BE }, + { "30%", OPTION_VAL_30_BE }, + { "40%", OPTION_VAL_40_BE }, + { "50%", OPTION_VAL_50_BE }, + { "60%", OPTION_VAL_60_BE }, + { "70%", OPTION_VAL_70_BE }, + { "80%", OPTION_VAL_80_BE }, + { "90%", OPTION_VAL_90_BE }, + { "100%", OPTION_VAL_100_BE }, + { NULL, NULL }, + }, + "100%", + }, + { + CORE_OPTION_NAME "_vmu4_screen_display", + CORE_OPTION_NAME_VMU4_SCREEN_DISPLAY_LABEL_BE, + NULL, + "", + NULL, + "vmu", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled", + }, + { + CORE_OPTION_NAME "_vmu4_screen_position", + CORE_OPTION_NAME_VMU4_SCREEN_POSITION_LABEL_BE, + NULL, + "", + NULL, + "vmu", + { + { "Upper Left", OPTION_VAL_UPPER_LEFT_BE }, + { "Upper Right", OPTION_VAL_UPPER_RIGHT_BE }, + { "Lower Left", OPTION_VAL_LOWER_LEFT_BE }, + { "Lower Right", OPTION_VAL_LOWER_RIGHT_BE }, + { NULL, NULL }, + }, + "Upper Left", + }, + { + CORE_OPTION_NAME "_vmu4_screen_size_mult", + CORE_OPTION_NAME_VMU4_SCREEN_SIZE_MULT_LABEL_BE, + NULL, + "", + NULL, + "vmu", + { + { "1x", OPTION_VAL_1X_BE }, + { "2x", OPTION_VAL_2_O27_BE }, + { "3x", OPTION_VAL_3X_BE }, + { "4x", OPTION_VAL_4_BE }, + { "5x", OPTION_VAL_5X_BE }, + { NULL, NULL }, + }, + "1x", + }, + { + CORE_OPTION_NAME "_vmu4_pixel_on_color", + CORE_OPTION_NAME_VMU4_PIXEL_ON_COLOR_LABEL_BE, + NULL, + "", + NULL, + "vmu", + { + { "DEFAULT_ON 00", OPTION_VAL_DEFAULT_ON_00_BE }, + { "DEFAULT_OFF 01", OPTION_VAL_DEFAULT_OFF_01_BE }, + { "BLACK 02", OPTION_VAL_BLACK_02_BE }, + { "BLUE 03", OPTION_VAL_BLUE_BE }, + { "LIGHT_BLUE 04", OPTION_VAL_LIGHT_BLUE_04_BE }, + { "GREEN 05", OPTION_VAL_GREEN_BE }, + { "CYAN 06", OPTION_VAL_CYAN_06_BE }, + { "CYAN_BLUE 07", OPTION_VAL_CYAN_BLUE_07_BE }, + { "LIGHT_GREEN 08", OPTION_VAL_LIGHT_GREEN_08_BE }, + { "CYAN_GREEN 09", OPTION_VAL_CYAN_GREEN_09_BE }, + { "LIGHT_CYAN 10", OPTION_VAL_LIGHT_CYAN_10_BE }, + { "RED 11", OPTION_VAL_RED_BE }, + { "PURPLE 12", OPTION_VAL_PURPLE_12_BE }, + { "LIGHT_PURPLE 13", OPTION_VAL_LIGHT_PURPLE_13_BE }, + { "YELLOW 14", OPTION_VAL_YELLOW_14_BE }, + { "GRAY 15", OPTION_VAL_GRAY_15_BE }, + { "LIGHT_PURPLE_2 16", OPTION_VAL_LIGHT_PURPLE_2_16_BE }, + { "LIGHT_GREEN_2 17", OPTION_VAL_LIGHT_GREEN_2_17_BE }, + { "LIGHT_GREEN_3 18", OPTION_VAL_LIGHT_GREEN_3_18_BE }, + { "LIGHT_CYAN_2 19", OPTION_VAL_LIGHT_CYAN_2_19_BE }, + { "LIGHT_RED_2 20", OPTION_VAL_LIGHT_RED_2_20_BE }, + { "MAGENTA 21", OPTION_VAL_MAGENTA_21_BE }, + { "LIGHT_PURPLE_3 22", OPTION_VAL_LIGHT_PURPLE_3_22_BE }, + { "LIGHT_ORANGE 23", OPTION_VAL_LIGHT_ORANGE_23_BE }, + { "ORANGE 24", OPTION_VAL_ORANGE_24_BE }, + { "LIGHT_PURPLE_4 25", OPTION_VAL_LIGHT_PURPLE_4_25_BE }, + { "LIGHT_YELLOW 26", OPTION_VAL_LIGHT_YELLOW_26_BE }, + { "LIGHT_YELLOW_2 27", OPTION_VAL_LIGHT_YELLOW_2_27_BE }, + { "WHITE 28", OPTION_VAL_WHITE_BE }, + { NULL, NULL }, + }, + "DEFAULT_ON 00", + }, + { + CORE_OPTION_NAME "_vmu4_pixel_off_color", + CORE_OPTION_NAME_VMU4_PIXEL_OFF_COLOR_LABEL_BE, + NULL, + "", + NULL, + "vmu", + { + { "DEFAULT_OFF 01", OPTION_VAL_DEFAULT_OFF_01_BE }, + { "DEFAULT_ON 00", OPTION_VAL_DEFAULT_ON_00_BE }, + { "BLACK 02", OPTION_VAL_BLACK_02_BE }, + { "BLUE 03", OPTION_VAL_BLUE_BE }, + { "LIGHT_BLUE 04", OPTION_VAL_LIGHT_BLUE_04_BE }, + { "GREEN 05", OPTION_VAL_GREEN_BE }, + { "CYAN 06", OPTION_VAL_CYAN_06_BE }, + { "CYAN_BLUE 07", OPTION_VAL_CYAN_BLUE_07_BE }, + { "LIGHT_GREEN 08", OPTION_VAL_LIGHT_GREEN_08_BE }, + { "CYAN_GREEN 09", OPTION_VAL_CYAN_GREEN_09_BE }, + { "LIGHT_CYAN 10", OPTION_VAL_LIGHT_CYAN_10_BE }, + { "RED 11", OPTION_VAL_RED_BE }, + { "PURPLE 12", OPTION_VAL_PURPLE_12_BE }, + { "LIGHT_PURPLE 13", OPTION_VAL_LIGHT_PURPLE_13_BE }, + { "YELLOW 14", OPTION_VAL_YELLOW_14_BE }, + { "GRAY 15", OPTION_VAL_GRAY_15_BE }, + { "LIGHT_PURPLE_2 16", OPTION_VAL_LIGHT_PURPLE_2_16_BE }, + { "LIGHT_GREEN_2 17", OPTION_VAL_LIGHT_GREEN_2_17_BE }, + { "LIGHT_GREEN_3 18", OPTION_VAL_LIGHT_GREEN_3_18_BE }, + { "LIGHT_CYAN_2 19", OPTION_VAL_LIGHT_CYAN_2_19_BE }, + { "LIGHT_RED_2 20", OPTION_VAL_LIGHT_RED_2_20_BE }, + { "MAGENTA 21", OPTION_VAL_MAGENTA_21_BE }, + { "LIGHT_PURPLE_3 22", OPTION_VAL_LIGHT_PURPLE_3_22_BE }, + { "LIGHT_ORANGE 23", OPTION_VAL_LIGHT_ORANGE_23_BE }, + { "ORANGE 24", OPTION_VAL_ORANGE_24_BE }, + { "LIGHT_PURPLE_4 25", OPTION_VAL_LIGHT_PURPLE_4_25_BE }, + { "LIGHT_YELLOW 26", OPTION_VAL_LIGHT_YELLOW_26_BE }, + { "LIGHT_YELLOW_2 27", OPTION_VAL_LIGHT_YELLOW_2_27_BE }, + { "WHITE 28", OPTION_VAL_WHITE_BE }, + { NULL, NULL }, + }, + "DEFAULT_OFF 01", + }, + { + CORE_OPTION_NAME "_vmu4_screen_opacity", + CORE_OPTION_NAME_VMU4_SCREEN_OPACITY_LABEL_BE, + NULL, + "", + NULL, + "vmu", + { + { "10%", OPTION_VAL_10_BE }, + { "20%", OPTION_VAL_20_BE }, + { "30%", OPTION_VAL_30_BE }, + { "40%", OPTION_VAL_40_BE }, + { "50%", OPTION_VAL_50_BE }, + { "60%", OPTION_VAL_60_BE }, + { "70%", OPTION_VAL_70_BE }, + { "80%", OPTION_VAL_80_BE }, + { "90%", OPTION_VAL_90_BE }, + { "100%", OPTION_VAL_100_BE }, + { NULL, NULL }, + }, + "100%", + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_be = { + option_cats_be, + option_defs_be +}; + /* RETRO_LANGUAGE_CA */ #define CATEGORY_SYSTEM_LABEL_CA "Sistema" @@ -6817,7 +8504,7 @@ struct retro_core_options_v2 options_chs = { #define CATEGORY_INPUT_INFO_0_CHT NULL #define CATEGORY_VMU_LABEL_CHT NULL #define CATEGORY_VMU_INFO_0_CHT NULL -#define CORE_OPTION_NAME_REGION_LABEL_CHT "地區" +#define CORE_OPTION_NAME_REGION_LABEL_CHT "發售地" #define OPTION_VAL_JAPAN_CHT NULL #define OPTION_VAL_USA_CHT NULL #define OPTION_VAL_EUROPE_CHT NULL @@ -50737,12 +52424,12 @@ struct retro_core_options_v2 options_ru = { #define OPTION_VAL_11520X8640_SK NULL #define OPTION_VAL_12160X9120_SK NULL #define OPTION_VAL_12800X9600_SK NULL -#define CORE_OPTION_NAME_CABLE_TYPE_LABEL_SK NULL +#define CORE_OPTION_NAME_CABLE_TYPE_LABEL_SK "Typ kábla" #define CORE_OPTION_NAME_CABLE_TYPE_INFO_0_SK NULL #define OPTION_VAL_VGA_SK NULL #define OPTION_VAL_TV_RGB_SK NULL #define OPTION_VAL_TV_COMPOSITE_SK "TV (composite)" -#define CORE_OPTION_NAME_BROADCAST_LABEL_SK NULL +#define CORE_OPTION_NAME_BROADCAST_LABEL_SK "Vysielací štandard" #define OPTION_VAL_NTSC_SK NULL #define OPTION_VAL_PAL_SK "PAL (svet)" #define OPTION_VAL_PAL_N_SK "PAL-N (Argentína, Paraguaj, Uruguaj)" @@ -50770,7 +52457,7 @@ struct retro_core_options_v2 options_ru = { #define CORE_OPTION_NAME_FOG_LABEL_SK NULL #define CORE_OPTION_NAME_VOLUME_MODIFIER_ENABLE_LABEL_SK NULL #define CORE_OPTION_NAME_VOLUME_MODIFIER_ENABLE_INFO_0_SK NULL -#define CORE_OPTION_NAME_ANISOTROPIC_FILTERING_LABEL_SK NULL +#define CORE_OPTION_NAME_ANISOTROPIC_FILTERING_LABEL_SK "Anizotropné filtrovanie" #define CORE_OPTION_NAME_ANISOTROPIC_FILTERING_INFO_0_SK NULL #define CORE_OPTION_NAME_TEXTURE_FILTERING_LABEL_SK "Filtrovanie textúr" #define CORE_OPTION_NAME_TEXTURE_FILTERING_INFO_0_SK NULL @@ -50842,8 +52529,8 @@ struct retro_core_options_v2 options_ru = { #define CORE_OPTION_NAME_VMU1_SCREEN_POSITION_LABEL_SK NULL #define OPTION_VAL_UPPER_LEFT_SK "Hore vľavo" #define OPTION_VAL_UPPER_RIGHT_SK "Hore vpravo" -#define OPTION_VAL_LOWER_LEFT_SK NULL -#define OPTION_VAL_LOWER_RIGHT_SK NULL +#define OPTION_VAL_LOWER_LEFT_SK "Vľavo dolu" +#define OPTION_VAL_LOWER_RIGHT_SK "Vpravo dolu" #define CORE_OPTION_NAME_VMU1_SCREEN_SIZE_MULT_LABEL_SK NULL #define OPTION_VAL_1X_SK NULL #define OPTION_VAL_3X_SK NULL