Commit Graph
2075 Commits
Author SHA1 Message Date
Henrik RydgårdandClaude Opus 5.5 8f70003cce Remove the PaceVideocodecDecode workaround for Ys I & II
The blit cost model now paces its movies at 30 fps without it.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-09-25 16:44:28 -06:00
Henrik RydgårdandClaude Opus 5.5 d6b3d590eb VFPU: Compute log2, sin/cos and asin without correction tables, too
They use the same quadratic interpolator as rcp and friends, with three
twists. sin indexes the quarter wave from the top, and asin and sin work
in a per-segment exponent whose 4-ulp truncation also applies to results
in a lower binade. log2 truncates exponent + log2(1.m) toward zero to 22
significant bits, and where that step is coarser than 2^-24 the datapath
drops coefficient bits to match; that also covers the region just below
1.0 that needed a special case.

vfpu_sincos now reduces the angle once. With every table gone, so are
the asset folder, the loader, InitVFPU and the fallbacks for tables that
failed to load. All seven functions are bit-exact with the table-based
code over every 32-bit input.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-09-24 10:07:01 -06:00
Henrik RydgårdandClaude Opus 5.5 dade876474 VFPU: Compute vrcp, vrsq, vsqrt and vexp2 without correction tables
The four share one quadratic interpolator: 128 segments picked by the top
7 bits of the input, each with a constant, a linear and a squared-term
coefficient, and a squarer on the top 10 bits of the rest that rounds t^2
up to a multiple of 256. 128 small coefficient sets per function
replace the 1 MB of delta tables. Derived from the output of the
table-based code, and bit-exact with it over every 32-bit input.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-09-24 10:06:53 -06:00
sum2012 a8b85eec8b Add ForceEnableGPUReadback compat
To solve gpu readback issue
2026-09-23 22:06:28 +08:00
Henrik Rydgård ffc32d02fe Merge pull request #22336 from hrydgard/misc-work
Code cleanup, add a dismissable reminder about the 32-bit version on a 64-bit OS.
2026-09-22 13:15:12 -06:00
Henrik Rydgård 85ed46d97e Add new translation string 2026-09-22 12:42:05 -06:00
sum2012 f5b6b45b5b Remove IgnoreEnqueue hack 2026-09-22 20:19:57 +08:00
sum2012 14fd9d1752 Remove Fontltn12Hack 2026-09-22 20:10:33 +08:00
Henrik Rydgård 12e7d222a7 Merge pull request #22324 from hrydgard/minor-changes-rollup
Decide vertex decoder based on JIT ability, not CPU core. Plus misc small changes.
2026-09-21 11:09:03 -06:00
Daniel Nylander 15f30c6831 i18n: complete current Swedish language keys 2026-09-21 09:13:31 -06:00
Henrik RydgårdandClaude Opus 5 282647803c Add PaceVideocodecDecode compat.ini option
There are a few games that seem to rely on performance problems or
timing quirks to hold the correct pace when playing sceMpeg - have not
been able to nail down any other timing mechanism.

This adds a timing enforcement function.

Coded by Claude.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
2026-09-21 09:00:48 -06:00
sum2012 6116e98e44 Add other version of mga2 hack
#10906 , Sorry I forget to add before
2026-09-20 03:38:39 +08:00
Henrik RydgårdandClaude Opus 5 0990890640 Translate the sceMp4 firmware message
Follows each language file's own word for firmware rather than imposing one, so
this reads the way the neighbouring strings in [System] already do: fastvare in
Norwegian, systemprogramvara in Swedish, laiteohjelmisto in Finnish, proshivka
in Russian and Ukrainian, and the English word where that is what the language
has settled on.

Thirteen files keep the English string as a placeholder. Those are the ones with
no translation for the firmware strings already in that section either, so there
was no house style to follow and guessing would leave nobody able to check it.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
2026-09-18 13:50:25 -06:00
Henrik Rydgård 202b78d95b AI-generated translation strings 2026-09-14 10:59:38 -06:00
Henrik RydgårdandClaude Opus 5 7bebc8db21 Translate the missing-firmware warning
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
2026-09-12 11:11:51 -06:00
Henrik RydgårdandClaude Opus 5 4a51602adf Translate the firmware auto-install strings
The five new [System] keys, in the 33 languages that already had a rendering of
"firmware" to follow - they disagree on it (fastvare, prosjivka, systemprogramvara,
laiteohjelmisto), so each one matches whatever its own file already chose. The
other 13 fall back to English.

Firmware screen: call it "Uninstall firmware", not "Erase firmware"

Translate the rest of the firmware screen strings

"Uninstall firmware", "No firmware installed" and "Launch XMB", in the same 33
languages as the auto-install strings. XMB stays untranslated - it's Sony's
name for it, and pl_PL already wrote it bare.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
2026-09-10 15:52:53 -06:00
Henrik RydgårdandClaude Opus 5 2b16e107b9 Translate "RAIntegrationNotWritable"
36 languages, following each file's existing handling of the sibling RAIntegration
string - most keep the name as-is, pl_PL uses "Integracja RA", tr_TR "RA Entegrasyonu",
ja_JP "RAインテグレーション" - and its formality. The rest are left to fall back to
English rather than guessed at.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01GgACRqkQNpfJQ4fjwyoEup
2026-09-07 09:02:19 -06:00
Henrik RydgårdandClaude Opus 5 afeab27186 Don't load RAIntegration from an install we can't write to
RAIntegration keeps its cache and local achievement data next to the
executable. If PPSSPP is installed somewhere that needs elevation to write -
Program Files being the obvious case - that write fails and takes the emulator
down as soon as a set or code notes are loaded, with no log to show for it since
the log can't be written either.

Check whether the exe directory is writable before handing the DLL to rcheevos,
and if it isn't, say so and point at the portable .zip instead. Achievements
themselves still work, so carry on to the normal login.

Fixes #21260

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01GgACRqkQNpfJQ4fjwyoEup
2026-09-05 16:15:45 -06:00
Henrik RydgårdandClaude Opus 5 c93b0de8cb Translate "Show timestamps in chat"
31 languages, following each file's existing chat terminology (chatt,
bate-papo, obrolan, sembang, 聊天, الشات, ...). The rest are left to fall
back to English rather than guessed at.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01JvJR8oJNSCimCM9KXVLjfq
2026-09-04 13:10:54 -06:00
Henrik Rydgård 77a93c1dfe Add the Andexplaystream adhoc server
Its data.json works over plain http on port 80, which is why the
earlier attempts to confirm it failed.

Fixes #22164
2026-09-03 20:39:47 -06:00
Katharine Chui 11e226c312 add aemu_postoffice test server to adhoc-servers.json
Test server ran by the https://github.com/Kethen/aemu_postoffice
project
2026-09-04 00:50:18 +02:00
Henrik Rydgård 6a36ed7de9 Translation string for run command 2026-08-31 11:33:51 +02:00
Henrik RydgårdandClaude Opus 5 595cfc49b8 lang: regenerate he_IL_invert from he_IL
The file holds the Hebrew strings in visual order, for renderers with no bidi
of their own, but only 101 of its 269 Hebrew entries were actually a reversal
of he_IL. The rest were left unreversed, reversed by word instead of by
character, or garbled outright ("Win" read as gibberish either way round).

Derived them all mechanically instead. The transform reproduces the entries
that were already right, and keeps as single units the things that must not be
spelled backwards: the \n escape, %N placeholders, runs of Latin and digits,
and an & accelerator together with the character it marks.

The [Dialog] save/OSK strings are the exception - he_IL already stores those
reversed, since PPGeDraw draws them and has no bidi, so the invert file just
mirrors he_IL for those 22 keys.

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01R9fKXvYBrnqtp1QQGaGWVv
2026-08-29 23:50:59 +02:00
Henrik RydgårdandClaude Opus 5 1ceae377f7 lang: translate "Enable FPU exceptions"
Left out of 8 languages where I couldn't get the terminology right - they
fall back to the English string.

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01R9fKXvYBrnqtp1QQGaGWVv
2026-08-29 23:40:52 +02:00
Jonatan Nyberg d6acd69388 Update sv_SE.ini 2026-08-27 09:41:46 +03:00
a-blondel 6a8b11ad2b Add madden 06 to infra-dns.json 2026-08-25 23:12:37 +02:00
Henrik RydgårdandClaude Opus 5 cc1cdfcec4 Translate the firmware updater install strings
Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-24 17:23:20 +02:00
Henrik Rydgård e4f66f3809 Merge pull request #22132 from hrydgard/langtool-updates
Langtool updates, translation fixes
2026-08-23 17:29:33 +02:00
Henrik RydgårdandClaude Opus 5 396f9e802d GameInfoCache: report the firmware updater bundled on a game disc
Adds GameInfoFlags::BUNDLED_UPDATE_INFO, holding the version, title, size
and timestamp of the updater in PSP_GAME/SYSDIR/UPDATE. It comes from the
PARAM.SFO and the directory entry next to the archive, so it's a couple of
small reads on the ISOFileSystem the worker already has open - no
decryption, and DATA.BIN itself is only sniffed for its magic. Only
computed for ISOs; everything else is marked complete with an empty struct.

ISOFileSystem now parses the date out of the ISO9660 directory record,
stored as Unix UTC seconds and reported as the PSP's atime/ctime/mtime.
Those used to always read back as zero, so games calling sceIoGetstat on a
UMD file saw 1900 where hardware gives the mastering date.

Shown on GameScreen as e.g. "Firmware update on disc: 6.60 (2011-10-05),
25.6 MB".

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_0149QcTVgZEXKXbgHyvXF4ZY
2026-08-23 16:44:38 +02:00
Henrik RydgårdandClaude Opus 5 bb4563e6ca Fix the broken translations that langtool validate found
57 strings across nine language files:

* 33 in km_KH where a space snuck in between the % and the digit ("% 1"), plus
  one where "%0.2f Hz" ended up as "0.2% f Hz".
* fa_IR "Quick chat %1" had the %1 replaced by a Persian numeral, and ko_KR
  "Submitted %1 for %2" lost its %2.
* tr_TR "Earned" had the key translated instead of the value, so the whole
  sentence with its four placeholders was replaced by the word "Earned".
  The new Turkish string needs a look from someone who speaks Turkish.
* 20 strings across five files that were wrapped in quotes. PPSSPP's ini parser
  strips those on load, so nothing changes on screen, but they tripped the
  validator.

Turkish writes percentages as "% 0", so the "% <digit>" fix was only applied
where it makes the placeholders match the English string again.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_0164UKoXpz9r155TRfQsoc3H
2026-08-23 16:18:07 +02:00
Henrik RydgårdandClaude Opus 5 8bfc151395 iOS: Hide the status bar when immersive mode is enabled
prefersStatusBarHidden was dead code - it computed an orientation and a
(commented out) user preference, then unconditionally returned false. So the
status bar was only ever hidden on iPhone in landscape, and only because iOS
does that on its own in compact height.

Now it honors bImmersiveMode from the DisplayLayoutConfig matching the current
orientation, so it also applies in portrait and on iPad. Adds the corresponding
checkbox to the iOS system settings, and updates the status bar on rotation and
when the setting is toggled.

Also fixes a missing break in the ROTATE_UPDATED case in System_Notify, and a
static/non-static mismatch on sceKernelLoadModuleBufferUsbWlan that broke the
build (the header intentionally exposes it for sceVshBridge).

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JZk5y4Fzw811WJoNWZb8Sc
2026-08-06 20:56:37 +02:00
Henrik Rydgård db30fabf03 Add a setting (defaulting to false) for enabling file handler plugins 2026-08-03 11:24:36 +02:00
Henrik Rydgård f7c2eb7b4d Add Alpha adhoc server 2026-07-27 18:37:28 +02:00
a-blondel fcf585d291 Add FIFA06 to infra-dns.json 2026-07-26 23:40:37 +02:00
AgRichard 6cd5c535d9 Update en_US.ini
Add name to translator
2026-07-24 15:31:43 +02:00
AgRichard c95fb99701 Update ms_MY.ini
All update for Malay language.
2026-07-24 14:16:37 +08:00
Henrik Rydgård 8f52820b0d Add more sprite texturing fixes (Another Road, Naruto 3) 2026-07-23 11:17:14 +02:00
Henrik Rydgård 4381a8d59b Hot Pixel: Work around missing text on main menu with vertex depth rounding.
Fixes #15826
2026-07-19 02:06:09 +02:00
crashGG c1d8d59d63 fix(shader): follow-up fix for last commit
fix: follow-up to ensure mixFactor is 1.0 when E is fully transparent)
2026-07-16 15:43:14 +03:00
crashGG 55b1f99e32 MMPX adv:fix fully transparent pixel bug & refine floating-point tolerance
Fixed a cross-case bug involving fully transparent pixels
Adjusted the floating-point comparison tolerance from `0.1` to `0.01`.
2026-07-16 13:01:01 +03:00
Henrik Rydgård 993c3a9c67 Avoid accurately computing disk space on iOS and Android (where it can be slow). Add a setting. 2026-07-14 22:22:29 +02:00
Henrik Rydgård 61e1ef8f7a Remove the "Software skinning" option. Now always on. 2026-07-14 17:02:57 +02:00
Henrik Rydgård 219c97c531 Apply sprite fix in Naturo Shippuden: UNH 3 2026-07-14 15:32:25 +02:00
Henrik Rydgård 1833b51b98 Dev tools: Shader viewer: Add button to copy generated shader code to clipboard 2026-07-13 12:42:32 +02:00
fayez bast 3e7b2549c8 Update Arabic translation 2026-07-11 14:12:38 +03:00
crashGG 41b39afcf4 MMPX Enhanced Lite
update MMPX Enhanced Lite version
It eliminates most artifacts found in the original algorithm while remaining highly efficient and lightweight.
2026-07-10 17:58:01 +03:00
Henrik Rydgård a954e6d719 Update the jeddah adhoc server 2026-07-10 12:49:57 +02:00
Henrik Rydgård 4bf662c4ac Merge pull request #21898 from crashGG/mmpx
perf(MMPX adv): optimize target out-of-bounds check again
2026-07-10 11:00:44 +02:00
crashGG 7ef1767010 perf(MMPX adv): optimize target out-of-bounds check
perf(MMPX adv): optimize transparent out-of-bounds sampling and bug fix
2026-07-08 20:10:06 +03:00
Henrik Rydgård 167f8af0a2 Bump Cargo.lock for langtool, remove string 2026-07-08 18:29:40 +02:00