While the spray can is held (sensor mode, T or G) a quick back-and-forth
of the mouse now shakes it, like Y does, and spinning the wheel does too
unless the wheel is bound in the key map. The mouse already pointed the
can there; the can now holds still while it shakes, so the wiggle does
not move the cursor.
src/mouse_shake.h cuts the motion into strokes per axis: a stroke of at
least 40 counts that ends within 250 ms is a swing, three swings in
600 ms start the shake and it lasts 300 ms past the last one. Slow aiming
and small jitter never count. TLG_MOUSE_SHAKE=0 turns it off and
TLG_MOUSE_SHAKE_COUNTS changes the swing size.
tests/test_mouse_shake.c covers aiming, jitter, horizontal and vertical
wiggles, the wheel, the hold time and the threshold. The player README
and the README describe the mouse aim and shake in both languages.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Bundle an opt-in, version-scoped logo movie skip patch and resolve unique masked byte patterns in executable segments. Include the patch in launcher discovery and packaged builds.
Co-Authored-By: OpenAI Codex <[email protected]>
Claude-Session: Codex session
* Docs: README for the next release (Qt launcher, saves, BP fixes, occlusion, logs, known problems)
Both halves (pt-BR and en): new What's new items, status table, requirements, launcher section, BP01-BP12 table, occlusion modes, keyboard map, controller guides, saves recipe, logs and reports, known problems by GPU, credits and acknowledgements.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
* Docs: experimental fixes (occlusion mode, log lines, sources) and VENDOR credits for BP01-BP12
EXPERIMENTAL_FIXES.md mentions the Qt Fixes screen, the occlusion_mode switch, the Config/Backports log lines and the origin of each fix; VENDOR.txt lists the backport origins.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
* Docs: player guide in the package is no longer 'does not boot yet'
README-player.md (pt-BR and en): playable status, Qt launcher screens and classic fallback, game language, saves and updating, lights, experimental fixes, updates screen, logs/report, known problems by GPU, repo link fixed.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
* Docs: Qt launcher is the default (LAUNCHER_QT, QT_PACKAGING)
Drop the 'phase 1 / Tk is the default / coming soon' wording, list the eight screens, add the occlusion selector, mouse status and the VERSION file.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
* Docs: roadmap updated (done and open items)
ROADMAP.md: what shipped (Qt launcher, saves, BP01-BP12, occlusion, mouse, guides, F16C) and what is open (real occlusion, on-disk pipeline cache, RX 580, 4 GB VRAM, auto updater, mouse and Windows validation).
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
* Docs: required files (game versions, languages, PC requirements)
ARQUIVOS_NECESSARIOS.md: tested versions, Turkish/Russian caveat, PC requirements, launcher art note (pt-BR and en).
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
* Docs: Windows packaging README is about inFAMOUS, not God of War III
Names, paths and commands now match this port (Qt and classic launchers, CUSA00223, --selftest); drops the unused TLG launcher texts; notes that the DLSS/FSR4 code is not used; adds a Windows status section.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
* Launcher script: comment says Qt is the default
Only the header comment of infamous_launcher_qt.sh changes.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
* Docs: README lights section without unverified scene details
Drops 'night scenes / car' wording that was not backed by the sources.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
* CI release notes: drop "Windows not yet tested in game"
Players have been running the Windows package for days (logs, issues and the occlusion fix were
confirmed on Windows), so the line in every release body was wrong.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
* Fix: the classic (Tk) launcher did not open ('Launcher' has no attribute 'play_button')
show_game_language() runs while the window is still being built and called refresh_status(), which
uses the play button created at the end of build(). Behind it, the note text used str.format on
a string that self.t() had already formatted (KeyError: 'name'). Both fixed, and a test now builds
the real window when a display is available. Introduced by the game language "Automatic" option.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
* Fix: the Qt launcher did not detect Xbox/XInput controllers on Windows
detect_pad only read /proc/bus/input/devices (Linux). It now asks tlg-probe --gamepad
(SDL3, cross-platform) first and keeps /proc as the fallback; XInput, Microsoft, Switch
and DualShock names are recognised and the guide follows the detected pad.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
---------
Co-authored-by: HayatoG <[email protected]>
Co-authored-by: Claude Sonnet 5.5 <[email protected]>
- tests/test_mouse_touch.c: the finger (motion, bounds, tap, hold, drag to swipe, middle, ids,
lift) with explicit timestamps.
- tests/test_mouse_pad.c: scePadReadState with a stubbed window mouse: motion to right stick,
buttons to R2/L2/R3, touchpad mode (hover, touch, click lead, swipe, tail, middle, two
fingers, leaving the mode).
- build.sh --test runs test_pad_map, test_mouse_stick, test_mouse_touch and test_mouse_pad too;
the Windows CMake gets mouse-stick-test.
- README (pt-BR and en) and the player README: the Mouse section with the button table, the
touchpad-mode gestures, where each is used in the game and the ISS_MOUSE* variables; the
touchpad action table gets the mouse column entries.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
inFAMOUS asks to press both ends of the touchpad to lift the car off Reggie.
Pads without a touchpad now send two fingers at the left and right ends, then
the click CLICK_LEAD_US later, while View/Select + R1 is held (R1 hidden from the
game), or both click sources (keyboard Tab + Backspace, scripted touchpad_left +
touchpad_right). Pad tests cover both; docs and the launcher hint in pt-BR/en-US.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01KHxhRF717FsAPVntc7R6zU
A monitor thread (runtime_freeze.c) watches the flips shown by VideoOut. After
TLG_FREEZE_REPORT_SECONDS (default 10, 0 = off; ISS_ alias) without a new one it
writes one "FREEZE: no frame for N s; threads:" block to stdout, then
"FREEZE: frames resumed after N s" if they come back. Never stops the game.
- Wait slots per thread (runtime_thread.c): guest threads in their record, host
threads in a lock-free fixed table. Marked: contended guest mutexes (with
holder), condition variables, semaphores, event flags, sleeps, file
open/read/write/sync, the runtime memory-map rwlock (contended), and from the
GPU library through hooks: sceKernelWaitEqueue (queue name), sceGnmSubmitDone,
sceVideoOutWaitVblank, Liverpool SendCommand<true>, texture readbacks and the
page-fault handler.
- Registers: Linux SIGURG to each thread (handler copies RIP and the rbp chain),
Windows SuspendThread/GetThreadContext/ResumeThread over a Toolhelp thread list.
Guest offsets as in the crash report; frame counters (submitted, shown,
presented, vblanks, faults in progress) with deltas since the last frame.
- tests/test_freeze.c: monitor state machine, wait levels and descriptions,
contended mutex/cond/semaphore end to end, full report on Linux.
Verified: gcc and clang -fsyntax-only (-Wall -Wextra -Werror) of every changed C
file on Linux, clang --target=x86_64-w64-mingw32 syntax check with mingw-w64 13
headers. Pending: full build, build.sh --test, C++ GPU-library changes not yet
compiled (lock held for the user's play session).
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01KHxhRF717FsAPVntc7R6zU
Turning the controller sideways with a square tap felt odd: on the console the
can is held on its side through the whole graffiti, and that is the only scene
that asks for motion. Sensor mode now holds it on its side by itself, so the
player only shakes (cross), sprays (R2) and aims (left stick, or the right);
square goes back to the game. Aiming grows with the square of the push past
the dead zone, up to ~70 degrees/s, so small pushes trace the stencil. On the
keyboard the arrow keys aim while T or G hold the can sideways (and leave the
camera alone meanwhile). Notice, launcher hint, READMEs and release notes.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01KHxhRF717FsAPVntc7R6zU
Aiming the graffiti took both sticks (left held sideways, right aiming). Now
the left stick (or the right) turns the controller left/right and up/down, and
a tap on square toggles it on its side and back upright, with a notice. Square
is hidden from the game in sensor mode; leaving the mode puts it upright.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01KHxhRF717FsAPVntc7R6zU
Sensor mode only simulated tilting sideways and forward/back, so the graffiti
cursor moved up and down but never sideways: aiming left/right is a turn about
the vertical axis, which the simulation lacked. In sensor mode the right stick
now turns the controller (left/right) and tips it (up/down) at a rate, so the
aim stays where it is left; it is hidden from the game like the left stick.
The gyro rate is now the turn between samples in the controller's frame, right
for any mix of roll, pitch and turn. Notice, launcher hint and READMEs updated.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01KHxhRF717FsAPVntc7R6zU
Bilingual section with the sensor-mode toggle (L3+R3, or misc1: Share on
Xbox Series, Capture on Switch Pro, mic on DualSense), the touchpad click
and swipe on View/Select and Tab/Backspace, the keyboard T/G/Y keys and a
table mapping the game's graffiti, drain and swipe actions to each input.
Share/Create on DualShock 4/DualSense is the touchpad click, not the
sensor toggle, so the old "tap Share" wording is corrected.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JyWhQUvUQf2YSf8HJWnAtd
README in pt_BR (English below) with the gr2_pc structure and an honest status:
in development, does not boot yet, no screenshots or download yet.
docs/ARQUIVOS_NECESSARIOS.md lists CUSA00223 base 1.00 + update 1.07 (the
update's libc/Fios2 and eboot, the update param.sfo from appmeta) and no
firmware files. docs/ROADMAP.md points to ~/decomp/PORT_INFAMOUS.md.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JyWhQUvUQf2YSf8HJWnAtd
- packaging/port.env: per-port profile (name, package slug, launcher, icon)
read by the Linux and Windows package scripts; same keys for every port
- package names gr2-linux-x86_64.tar.gz / gr2-windows-x86_64.zip, frozen
launcher 'Gravity Rush 2', the GR2 player README (pt + en, required files),
install_desktop.sh from the profile
- Play <Game>.exe derives the game executable from its own name
- original placeholder icon (packaging/icon/gr2-icon-1024.png, launcher
gr2.png/.ico); TLG's icon and launcher left this repo
- sceFiber on Windows with Win32 fibers (CreateFiber/SwitchToFiber)
- CI: the current TLG workflow (PR builds without publishing, safe nightly
swap, old-build cleanup, required files in the release notes), FreeType on
Ubuntu and MSYS2, xbyak submodule fallback
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JyWhQUvUQf2YSf8HJWnAtd
- .github/workflows/build.yml: Ubuntu 24.04 and MSYS2 CLANG64 builds, the nightly
pre-release replaced on every push to main, versioned releases on v* tags
- packaging/linux: dependency build (SDL3, Zydis 5, fmt 11, minimal FFmpeg),
tarball with the frozen launcher and the bundled libraries
- packaging/windows/package.sh adapted to TLG; play.c renamed
- packaging/README-player.md (pt_BR/en_US), check_package.sh
- launcher: frozen mode (--script, --play), port icon (a feather, drawn by
make_icon.py) when the dump has no icon0.png
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JyWhQUvUQf2YSf8HJWnAtd