Skip to content

Add tag cache#596

Merged
biojppm merged 2 commits into
masterfrom
add_tag_cache
May 4, 2026
Merged

Add tag cache#596
biojppm merged 2 commits into
masterfrom
add_tag_cache

Conversation

@biojppm
Copy link
Copy Markdown
Owner

@biojppm biojppm commented Apr 30, 2026

No description provided.

@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 30, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 98.73%. Comparing base (40cc950) to head (c96d75a).

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #596      +/-   ##
==========================================
+ Coverage   98.70%   98.73%   +0.03%     
==========================================
  Files          44       44              
  Lines       13711    13799      +88     
==========================================
+ Hits        13533    13624      +91     
+ Misses        178      175       -3     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@biojppm biojppm force-pushed the add_tag_cache branch 14 times, most recently from 2103af3 to c9cb04d Compare May 4, 2026 13:09
@biojppm
Copy link
Copy Markdown
Owner Author

biojppm commented May 4, 2026

The gcc CI failures are caused by failed apt-get installs, and are not related with this changeset. They can be ignored because the gcc jobs that succeed are enough to confirm that this changeset works with all gcc versions.

Merging now.

@biojppm biojppm merged commit 6abbcff into master May 4, 2026
221 of 266 checks passed
@biojppm biojppm deleted the add_tag_cache branch May 4, 2026 18:18
Hancock33 added a commit to Hancock33/batocera.piboy that referenced this pull request May 9, 2026
------------------------------------------------------------------------------------
cubeb.mk 6ad18e2b523a2c721ee1ed8ad0940521a19f5f84 # Version: Commits on Apr 23, 2026
------------------------------------------------------------------------------------
wasapi: Promote/demote render thread on start/stop.,

------------------------------------------------------------------------------------------
duckstation.mk 8056dc705741c61205bf5a7149defd9b0dfcd4a6 # Version: Commits on May 06, 2026
------------------------------------------------------------------------------------------
FullscreenUI: Fix change disc hotkey again,

-----------------------------------------------------------------------------------
eden.mk b154a7da3cb657a9e224c29ebda2cba83b16290e # Version: Commits on May 06, 2026
-----------------------------------------------------------------------------------
[hle, friend] GetFriendListForViewerV2 STUBBED and update list of functions (#3933) (#3937)

--------------------------------------------------------------------------------------
melonds.mk 1609a0f94ebad2cfcf18dbf315f1f00fe3daff35 # Version: Commits on May 06, 2026
--------------------------------------------------------------------------------------
Use Qt's QFile abstraction for the Platform.h file I/O functions (#2646)

* Use Qt's QFile abstraction for the Platform.h file I/O functions

* forgot to reimplement FileWriteFormatted,

--------------------------------------------------------------------------------------
openmsx.mk 9824509fbf0286721ec4995d30dc53adf8554fda # Version: Commits on May 06, 2026
--------------------------------------------------------------------------------------
Adds missing import,

----------------------------------------------------
pcsx2.mk v2.7.318 # Version: Commits on May 06, 2026
----------------------------------------------------
- [GS/TC: Use temporary source on invalid source TEX0](PCSX2/pcsx2#14325)

-------------------------------------------------------------------------------------
ppsspp.mk 9e2c3588f91c947eb4a697df2cba40e49d4b9209 # Version: Commits on May 06, 2026
-------------------------------------------------------------------------------------
Merge pull request #21646 from lrzlin/readme-fix

Fix contributors for 1.20.4 improvements in README,

---------------------------------------------------------------------------------------
touchhle.mk 8b5a342bd07215809410c2fd6f82bc2b9675e9f2 # Version: Commits on Aug 27, 2025
---------------------------------------------------------------------------------------
Send +initialize to classes

Change-Id: Id8a0a179ee99805b80751eea2eb345f71113b444,

-----------------------------------------------------------------------------------------
xenia-edge.mk 61aec53823526fe98e332bc5e7e607cc7e489ed5 # Version: Commits on May 06, 2026
-----------------------------------------------------------------------------------------
[Vulkan] Fix regression due to df16917f

Scale unnormalized coords to host texels for resolution-scaled fetches,

fixes res scaling issues introduced to Trials HD,

-----------------------------------------------------------------------------------
ymir.mk 82a26c6c6efc8c75efea592e63a16f655048e086 # Version: Commits on May 06, 2026
-----------------------------------------------------------------------------------
fix(app): Temporarily switch from exclusive to borderless fullscreen when opening a file dialog,

-----------------------------------------------------------------------------------------
lightspark.mk 15eb3d7194359f7b24329fbb51333ed60fe2c9a4 # Version: Commits on Apr 25, 2026
-----------------------------------------------------------------------------------------
ensure all changes on list of gc objects are done in VM thread

fixes memleaks and crash on exit

in \FormulaRacer2012\ and \Super Mario 63\,

-------------------------------------------------------
rapidyaml.mk v0.12.0 # Version: Commits on May 06, 2026
-------------------------------------------------------
## General fixes and improvements

This release focuses in compliance with the YAML standard, mostly by ensuring parse errors in invalid YAML cases. rapidyaml **is now 100% compliant to the YAML test suite, both for valid and invalid YAML cases**.

- Narrow the scope of `%TAG` to only the following document, as per the standard ([PR#588](biojppm/rapidyaml#588)). This required or prompted some API changes:

   - Added new type `TagDirectives`

   - Added `ParseOptions::resolve_tags()` and `ParseOptions::resolve_tags_all()` options to allow controling resolution of tags while parsing. When disabled (which is the default), the tree still has `Tree::resolve_tags()` to perform post-parsing or programmatic resolution.

   - Changed `TagDirective` to point at its in-scope document, changed API to reflect this.

   - `ParseEngine` now has an instance of `TagDirectives`, and is in charge of updating it and checking for directive errors.

   - Removed the old `TagDirective m_tag_directives[]` members from the ints and testsuite handlers. `Tree` also has its own `TagDirectives` member, redundantly updated during parsing: this enables programmatic manipulation the tree's tag directives .

   - The event handlers now track the current document id, in order to enable the document scope check for `%TAG` directives. This required adding node id tracking to the ints and testsuite handlers.

   - Added `Tree::ancestor_doc(node_id)` and `ConstNodeRef::ancestor_doc()` to query for the parent document of a node. This is needed to implement resolution of tags.

   - `NodeType`: rename tag directive types `TAGD`->`TAGH` (tag handle) and `TAGV`->`TAGP` (tag prefix).

   - Internal changes to improve the design of event handlers, moving relocation and error checking logic to `ParseEngine`, where it is most suited.

   - Fix warnings with clang-tidy 22

- [PR#596](biojppm/rapidyaml#596): Add `TagCache` accelerator structure (in `c4/yml/tag.hpp`), used by `Tree::resolve_tags()` and the parser engine. This reduces significantly the arena requirements for heavily-tagged YAML by ensuring reuse of resolved tags.

## YAML fixes: valid cases

Fix parsing of **valid** YAML corner cases:

  - Ambiguity of tags/anchors in ? mode ([PR#587](biojppm/rapidyaml#587)):

    ```yaml

    ? &mapanchor

      key: val

    ?

      &keyanchor key: val

    ```

  - flow tags/anchors with omitted plain scalar ([PR#587](biojppm/rapidyaml#587)):

    ```yaml

    # ... likewise for !tag

    - [&anchor,&anchor]

    - {&anchor,&anchor}

    - [&anchor :,&anchor :]

    - {&anchor :,&anchor :}

    - [: &anchor,: &anchor]

    - {: &anchor,: &anchor}

    ---

    ? anchor

    ```

  - flow tags/anchors terminating with `:` (the colon is part of the tag/anchor) ([PR#587](biojppm/rapidyaml#587)):

    ```yaml

    # ... likewise for !tag:

    - [&anchor:,&anchor:]

    - {&anchor:,&anchor:}

    - [&anchor: :,&anchor: :]

    - {&anchor: :,&anchor: :}

    - [: &anchor:,: &anchor:]

    - {: &anchor:,: &anchor:}

    ---

    ? anchor

    ```

  - Fix corner cases of explicit keys now allow same-line containers ([PR#587](biojppm/rapidyaml#587)):

    ```yaml

    ? - a     # same-line container key now parses successfully. both seqs and maps

    : - b     # same-line container val now parses successfully. both seqs and maps

    ? ? - c   # nested explicit keys were also fixed

      ? - d

    ```

  - Missing tags/anchors in some flow maps ([PR#587](biojppm/rapidyaml#587)).

## YAML fixes: invalid cases

Ensure parse errors for **invalid** YAML cases, and improve reported error location:

  - `%TAG` directives are valid only in the following document ([PR#588](biojppm/rapidyaml#588)).

    ```yaml

    %TAG !m my-

    --- !m!first a

    --- !m!second a  # error: %TAG directive out of scope here

    ...

    %TAG !m your-

    --- !m!second a  # ok: %TAG provided now.

    ```

  - colon on newline at top level ([PR#585](biojppm/rapidyaml#585)):

    ```yaml

    scalar

    : bad

    ---

    [seq]

    : bad

    ---

    {map: }

    : bad

    ```

  - colon on newline generally in block containers ([PR#585](biojppm/rapidyaml#585)):

    ```yaml

    bad cases:

      scalar

        : bad colon

      [seq]

        : bad colon

      {map: }

        : bad colon

    ```

  - colon on newline in flow sequences ([PR#586](biojppm/rapidyaml#586)):

    ```yaml

    [a

      :

      b]

    ```

  - tokens after explicit document end ([PR#585](biojppm/rapidyaml#585)):

    ```yaml

    foo: bar

    ... bad tokens

    ```

  - `-` is invalid scalar in flow sequences ([PR#586](biojppm/rapidyaml#586)):

    ```yaml

    [-]

    ---

    [-,-]

    ---

    [--,-]

    ---

    [-

     ]

    ```

  - doc start/begin tokens at zero indentation in seq flow and quoted scalars ([PR#587](biojppm/rapidyaml#587)):

    ```yaml

    [

    ---,

    --- ,

    ---\\t,

    ...,

    ... ,

    ...\\t,

    # etc

    ]

    ---

    \

    --- # error as well

    ... # error as well

    \

    ---

    '

    --- # error as well

    ... # error as well

    '

    ```

  - nested flow containers now enforce the contextual parent indentation ([PR#587](biojppm/rapidyaml#587)):

    ```yaml

    - - - [

        a  # now this is a parse error

         ]

    - - - [

         a  # this is ok

         ]

    ```

  - single/double-quoted scalars now enforce the contextual parent indentation ([PR#587](biojppm/rapidyaml#587)):

    ```yaml

    - - - \a

        b\  # now this is a parse error

    - - - \a

         b\  # this is ok

    ```

  - plain scalars in block mode starting with `,` ([PR#587](biojppm/rapidyaml#587)):

    ```yaml

    all invalid:

      - , foo

      - ,foo

      - ,

    ```

  - references with anchors or tags ([PR#587](biojppm/rapidyaml#587)):

    ```yaml

    all invalid:

      - &anchor *ref

      - !tag *ref

    ```

  - directives with extra tokens ([PR#587](biojppm/rapidyaml#587)):

    ```yaml

    %YAML 1.2 blabla     # invalid

    %YAML 1. # this is ok

    %TAG ! my- ! blabla  # this is also wrong

    ---

    ```

  - multiline implicit keys are invalid ([PR#587](biojppm/rapidyaml#587)):

    ```yaml

    multiline

        plain: invalid

    'multiline

        squoted': invalid

    \multiline

        dquoted\: invalid

    [multiline,

        seq]: invalid

    {multiline:

        map}: invalid

    ```

  - invalid block containers after document open ([PR#592](biojppm/rapidyaml#592)):

    ```yaml

    --- a: b  # invalid

    --- - a   # invalid

    --- ? a   # invalid

    ```

  - invalid block containers after in-block open ([PR#592](biojppm/rapidyaml#592)):

    ```yaml

    a: - b  # invalid

    a: ? b  # invalid

    ```

  - same-line repeated annotations ([PR#592](biojppm/rapidyaml#592)):

    ```yaml

    !a

    !b foo: bar  # ok

    ---

    &a

    &b foo: bar  # ok

    ---

    !a !b foo: bar  # invalid

    ---

    &a &b foo: bar  # invalid

    ```

  - Fix parsing of invalid YAML: block scalars with deindented first line ([PR#593](biojppm/rapidyaml#593)):

    ```yaml

    # the _ characters are not part of the YAML;

    # they are used here only to show the leading whitespace

    empty block scalar: >

     _

      _

       _

     # comment

    ```

---------------------------------------------------------------------------------------
etlegacy.mk fea8a10184e2b464af2c04c73466b4f290eab502 # Version: Commits on May 06, 2026
---------------------------------------------------------------------------------------
cgame: fix duplicate selfkill killfeed icons

Move the self-kill icon insertion to the obituary event scope so it runs

once per death event instead of potentially multiple times for each

visible popupmessages component.,

---------------------------------------------------------------------------------------
mangohud.mk ed2c2496bc666cf85a38f4b2bf19b5e2188e513a # Version: Commits on May 06, 2026
---------------------------------------------------------------------------------------
mangohud-setup: add error when we can't extract,

---------------------------------------------------------
vkd3d-proton.mk v3.0.1 # Version: Commits on May 06, 2026
---------------------------------------------------------
This is likely the last release before `VK_EXT_descriptor_heap` lands.

There are some practical reasons why this is 3.0.1 instead of 3.1,

but numbers don't really matter that much anyway.

A ton of work on descriptor heaps have been happening in the background as well,

but that is not included in this release.

### Features

- D3D12 view instancing is now experimentally supported.

  It is enabled for the one known game that requires it, Crimson Desert (1.04+).

- Implement `VK_EXT_present_timing`, allowing for smooth frame pacing for SyncInterval > 1 when supported.

- Support Independent Devices feature.

- Add support for new AGS WMMA ops required for FSR4 Ray Reconstruction and Denoiser, as used in Crimson Desert.

- Expose new interfaces for more up-to-date NVAPI and expose some support for NVAPI shader intrinsics.

  With up-to-date dxvk-nvapi, the vendor extensions for Shader Execution Reordering should work for example.

- Expose new interfaces for AMD AGS and expose some support for AGS shader intrinsics, as used in Crimson Desert.

### Fixes

- Allow `SV_PrimitiveID` to be read in more shader stages as expected.

- Various fixes for NVIDIA Reflex to improve performance in some cases. [NVIDIA contrib]

  - Rather than trying to lock NVAPI present ID to our present ID, these can now be decoupled.

    This helps frame-gen in particular, since we can now signal this situation properly.

- Various fixes to make Turnip pass vkd3d-proton test suite.

- Various fixes in dxil-spirv to make new games not crash in shader compiler.

- Fix regression in F1 2019/2020 where old workaround in old compiler was not retained in new code.

- Misc other bug fixes.

### Performance

Most of the performance work for this release revolved around giving some love to mobile chips which rely

on tiling for optimal performance:

- Implement deferred clears and discards to potentially improve performance on e.g. Turnip.

- Take advantage of render pass suspend-resume on mobile GPUs, which can potentially improve performance a lot.

  NOTE: This depends on driver and game to \do the right thing\. It does not magically make things go faster.

- Move query pool initialization and resolves around to avoid breaking render passes as much as possible.

- Rework how MSAA resolves work to make it easier for drivers to optimize.

Other performance improvements:

- Implement a batched system for complex ExecuteIndirect where existing split command list optimization did not work.

  Improves GPU bound performance in various games that spam ExecuteIndirect with state updates like Crimson Desert, Starfield and Halo Infinite.

- Implement SM 6.4 dot2add with `VK_VALVE_shader_mixed_float_dot_product` if supported.

- Finally use a proper Vulkan TRANSFER queue for D3D12 COPY queues if supported instead of Vulkan COMPUTE queue.

  RADV does not expose this by default yet, but a TRANSFER queue is now used on NVIDIA by default,

  which should improve performance when streaming assets.

### Workarounds

- Introduce a mechanism to apply workarounds based on shader entry point name instead of hash.

  This is not always available, but should avoid churn in e.g. Wuthering Waves and Crimson Desert

  which are moving targets w.r.t. shader hashes.

- Workaround DispatchRays where game forgets to set root signature correctly.

- Workaround misc game bugs in:

  - Shadows of the Tomb Raider

  - Rise of the Tomb Raider

  - Spider Man 2

  - Death Stranding 2

  - Guardians of the Galaxy

  - REANIMAL

  - Crimson Desert

  - ... and others I probably missed to mention

- Workaround hardware bug on RDNA4 with `SV_ShadingRate` on affected Mesa versions.

  - Fixed in 26.1+. Workaround is disabled on those versions.

- Remove NULL SMEM PRT HW workaround on AMD in future Mesa 26.2+.

  - Resolves a 1.5 year old nightmare in Monster Hunter Wilds.

- Add performance workaround for NVIDIA kernel when waiting for ID3D12Fences.

- Allow RDNA1 GPUs to pretend that they support barycentrics and VRS. Allows Crimson Desert to run on RDNA1.

- Remove global submission lock workaround on NVIDIA.

### Misc

Remove legacy paths for `VK_NV_device_generated_commands{,_compute}` and compute fallback for `NV_dgcc`.

No relevant driver is impacted by this cleanup.,

---------------------------------------------------------------------------------------------
easyrpg-player.mk be2a606311bcc559a67a1d37731857356049ec7f # Version: Commits on May 06, 2026
---------------------------------------------------------------------------------------------
Merge pull request #3498 from EasyRPG-NewFeatures/maniacs/SaveImage

Maniacs Patch - Save Image command,

-------------------------------------------------------------------------------------
libdof.mk 2591c0fbe2cca64bb8c866d100b80c9ebc8cca33 # Version: Commits on May 06, 2026
-------------------------------------------------------------------------------------
misc: update to support Visual Studio 2026,

-----------------------------------------------------------------------------------------
libwinevbs.mk a226c4ed9fd7bf73f4621a6ce969beb220e1996b # Version: Commits on May 05, 2026
-----------------------------------------------------------------------------------------
refactor: fix create_object callback out-param type

The third parameter of the create_object callback is the object

output slot, but it was typed as IUnknown* instead of IUnknown**.

Callers had to launder it through (IUnknown*)&obj and callbacks

had to launder it back via *(IUnknown**)obj.

Type it as IUnknown** so the API matches what it actually does.,

----------------------------------------------------------------------------------------
doomretro.mk af24396343be4252bcb10f1b43f7ea47ac7bba79 # Version: Commits on May 06, 2026
----------------------------------------------------------------------------------------
Remove sector_t::mapped,

--------------------------------------------------------------------------------------------------
libretro-beetle-psx.mk 42ab8d9943b6a9f4646dfada3f40b7c9dec7bed1 # Version: Commits on May 06, 2026
--------------------------------------------------------------------------------------------------
libretro: drop dead C-accessor layer + -Wdeclaration-after-statement clean

Three cleanups, all post-conversion-aftermath, bundled into one

commit because they touch overlapping lines.

1) psx_mem.h dedup.

The C-accessor forwarders in mednafen/psx/psx_mem.h

(ScratchRAM_ReadU8/16/24/32, WriteU8/16/24/32, ScratchRAM_data8,

MainRAM_data8/ReadU32/WriteU32, BIOSROM_data8) were added during

the cpu.cpp -> cpu.c conversion as a bridge: cpu.c could not

include masmem.h while MultiAccessSizeMem was a C++ class

template, so plain-C wrappers in libretro.cpp re-exported the

member-function calls under C linkage.

The bridge is no longer needed.  masmem.h became a plain-C

struct + free functions in B1, and libretro.cpp became

libretro.c in B2 - so every consumer can include masmem.h

directly and call MASMEM_ReadU8(ScratchRAM, addr) without going

through a forwarder.

psx_mem.h is rewritten to a five-line header that just declares

the three singleton externs (MainRAM, BIOSROM, ScratchRAM) and

pulls in masmem.h.  Consumer sites updated:

  mednafen/psx/cpu.c (12 sites): ScratchRAM_data8() -> ScratchRAM->data8,

    MainRAM_data8() -> MainRAM->data8, BIOSROM_data8() ->

    BIOSROM->data8, ScratchRAM_ReadU8(addr) -> MASMEM_ReadU8(ScratchRAM, addr) etc.

  mednafen/psx/dma.c  ( 3 sites): MainRAM_ReadU32 / WriteU32 ->

    MASMEM_ReadU32 / WriteU32(MainRAM, ...).

  libretro.c: the 11-function forwarder block at file scope is gone.

2) Dead extern-C guard sweep.

Most mednafen/psx headers carried \#ifdef __cplusplus extern \\\C\\\ {\

guards back when libretro.cpp and cpu.cpp pulled them.  Both TUs

are now C, so the guards are dead boilerplate on any header that

no remaining .cpp transitively pulls.

The audit: of mednafen/psx/*.h, only gpu.h, gpu_c.h, and timer.h

are still pulled by C++ TUs (rsx/rsx_lib_vulkan.cpp directly

includes mednafen/psx/gpu.h, which pulls gpu_c.h; timer.h has two

parallel-psx consumers).  Everything else is C-only.

Guards stripped from 14 headers: cpu.h, cpu_c.h, psx.h,

psx_events.h, cdc.h, cdc_c.h, dma.h, irq.h, gpu_common.h,

frontio.h, spu_c.h, mdec.h, sio.h, gte.h.  Kept on gpu.h,

gpu_c.h, timer.h.

psx.h gets extra cleanup: the BIOSROM / MainRAM / ScratchRAM

extern decls were inside a __cplusplus guard (because

MultiAccessSizeMem was C++-only) and the analog_combo /

analog_combo_hold externs were inside a __cplusplus guard

(because they were defined in libretro.cpp).  Neither gate is

true anymore, so both blocks come out of guards and become plain

externs.

3) libretro.c -Wdeclaration-after-statement clean.

The freshly-converted libretro.c had ~26 mid-block-decl warnings

plus one VLA warning that the rest of the codebase compiles

clean.  Standing rule is C89-compliant in new code, and now the

file is

ew\ by way of the conversion, so this brings it to the

same standard the other C TUs hold.

VLA fix: firmware_is_present had `static const size_t list_size

= 16` followed by `const char *bios_name_list[list_size]`.  C90

requires array-bound expressions to be integer constant

expressions, which a `static const size_t` is not.  Spelled with

an `enum { list_size = 16 }` instead, which is an ICE.

Mid-block decls: 26 sites hoisted to top of nearest enclosing

scope.  Functions touched: firmware_is_present, extract_basename,

extract_directory, TextMem_resize, InitCommon, LoadEXE, DecodeGS,

fallback_log, retro_init, retro_load_game, retro_run.

Mechanical hoists - the only structural change is in retro_run,

where a for-loop with a C99-style `unsigned players` /

`for(int i = ...)` cluster needs a wrapping block to give the

hoisted decls a scope.

Verification: HAVE_LIGHTREC=0 and =1 both build clean, .so sizes

bit-identical to post-B2 baseline (LR=0 15,985,736; LR=1

16,818,720).  Probe7 PASS at +3456 KB / 48 cycles, identical to

baseline drift.,

---------------------------------------------------------------------------------------------------
libretro-dosbox-pure.mk 9e0d4689acb25b8dc7900b9605c40f96262a3a3b # Version: Commits on May 06, 2026
---------------------------------------------------------------------------------------------------
Further speed improvements over f30a391 of save file writing by not calculating the CRC32 checksum at all if otherwise the existing stored file already matches (#717, #615)

This should fix any remaining short freezes of the core while it is writing large save files,

-----------------------------------------------------------------------------------------------
libretro-easyrpg.mk be2a606311bcc559a67a1d37731857356049ec7f # Version: Commits on May 06, 2026
-----------------------------------------------------------------------------------------------
Merge pull request #3498 from EasyRPG-NewFeatures/maniacs/SaveImage

Maniacs Patch - Save Image command,

---------------------------------------------------------------------------------------------
libretro-fbneo.mk 3eeec034f9c7a17c3e7a820ad034861bb1a9522f # Version: Commits on May 06, 2026
---------------------------------------------------------------------------------------------
Add pgm2 memory card option (#1123),

----------------------------------------------------------------------------------------------
libretro-ppsspp.mk 9e2c3588f91c947eb4a697df2cba40e49d4b9209 # Version: Commits on May 06, 2026
----------------------------------------------------------------------------------------------
Merge pull request #21646 from lrzlin/readme-fix

Fix contributors for 1.20.4 improvements in README,

---------------------------------------------------------------------------------------------
libretro-vba-m.mk 5f7847d1a8258d5a6de5f314113a7d144639458d # Version: Commits on May 06, 2026
---------------------------------------------------------------------------------------------
Don't reject comma's in the scale validator.,
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant