Resolve GPU conflicts while preserving performance diagnostics, RX 580 controls, support links and manual-only release policy. Keep batch GC eviction single-pass with its original diagnostic reasons. Local validation and gameplay testing follow this integration.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JyWhQUvUQf2YSf8HJWnAtd
- Enabled()/FramesEnabled() and the Span early-out are inline: a disabled hook is one
relaxed load, not a call into another translation unit.
- The Hash() salt comes from std::random_device and never leaves memory; session folders
are named by wall-clock seconds instead of the salt (IDs were invertible from the name).
- The consumer flushes frames.csv and the open capture after each pass with new events,
so a crash right after a hitch keeps what was read.
- Disabled-path work removed from hooks: the fault handler reads IsWriteError once,
pipeline key hashes are computed only while tracing, and TlgCopy::HasPending is asked
only while tracing (under the pool lock, replacing the busy flag kept on the copy path).
- PerfBuildRevision: only git's exit code 1 marks a tree dirty; a source archive is
"unknown", not "unknown-dirty".
- perf_trace_report: frame-series warnings reach the report's warnings (console and HTML),
and a mismatched span end keeps its begin in incomplete_spans.
Tests added for the last two points; not run yet.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The update's sce_sys has no param.sfo, so the view kept 1.00's APP_VER and the Mods tab never
listed the 1.07 patches.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- run.sh/run.py: the default game folder is game/CUSA00223, as in the launcher
(it was ../CUSA01623, God of War III's title id).
- newgame_test.sh/skipintro_test.sh start the game with run_infamous.sh
(run_tlg.sh no longer exists).
- The fallback window title and app metadata name inFAMOUS Second Son
(were God of War III / The Last Guardian, tlg-pc); the launcher already
sets them through ISS_APP_NAME/ISS_APP_ID.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* Launcher: compile shaders in the background in every preset, read-ahead off by default
Background shader compilation is no longer turned off by the Quality and PS4-faithful presets.
GPU read-ahead (eager readback) is off by default and old settings.json files are migrated once
(settings_rev 2): in precise mode it made smoke and glow flicker.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
* Runtime: read game files through a host buffer on Linux too
With precise readbacks the GPU tracker can protect a guest page again between touch_for_write and
the kernel copy, which then fails with EFAULT; after 64 tries the read gave up and left data
missing (10-29 reads per session). Linux now uses the bounce read Windows already had.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
* GPU: refuse a shader with an unknown ReadConst pattern instead of ending the game
FlattenExtendedUserdataPass asserted "ReadConst base low not from constant memory" and closed the
game in a new area. It now logs the shader hash and throws UnsupportedShaderError; the pipeline
cache marks the shader (or permutation) failed and skips its draws, in the asynchronous and the
synchronous compile paths. The fault-recovery pointer no longer outlives a throwing capture.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
* GPU: experimental texture-cache switches ported from gow3_pc (off by default) and an image report
- TLG_PARTIAL_HEIGHT_VIEWS (gow3_pc #348): an integer read of the top rows of a cached image reuses
that image instead of creating a new one.
- TLG_BACKING_INVALIDATE (gow3_pc #331): textures over memory a readback just wrote are reloaded.
- Exact readback waits (gow3_pc #386, only with stale readbacks): uploads and frees wait only for
copies that share bytes with the image.
- TLG_PERF_DIAG=1 prints every 5 s the images created most often and the partial views used.
The first two are listed in the Advanced screen, off by default; gow3_pc is GPL-2.0.
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]>
* Test: BC 1D on NVIDIA (TLG_BC_TINY=auto, promoted BC 1D answers dimension queries as 1D)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
* Test script: occlusion and BP09 variants
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
* Launcher: Advanced screen with the GPU/runtime tuning parameters (switches, numbers, lists)
31 environment-only parameters (synchronisation, threads, readbacks, pipelines, image
workarounds, diagnostics) with bilingual descriptions, Automatic/default handling, search,
restore defaults and a copyable combination. Choices live in tlg.ini (adv_<name>) and reach the
game as ISS_<name> only when changed; the Config: log block shows them.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
* Test tools: one-round runner, monitor and analyzer for the parameter study
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
* GPU: bounded wait for a compiling pipeline (TLG_ASYNC_WAIT_MS) and a faster driver cache save
A draw whose pipeline is still compiling in the background used to be skipped at once (missing
ground or effects while the shader cache is cold). With TLG_ASYNC_WAIT_MS=N (default 0 = off)
it first waits up to N ms for the compile, and the waits of one GPU frame add up to at most
TLG_ASYNC_WAIT_FRAME_MS (default 8). The log gets an 'Async wait (total)' line every 5 s.
The driver cache is saved every 60 s (TLG_DRIVER_CACHE_SAVE_S, was 180).
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
* GPU: bounded wait for a compiling pipeline (TLG_ASYNC_WAIT_MS) and a faster driver cache save
A draw whose pipeline is still compiling in the background used to be skipped at once (missing
ground or effects while the shader cache is cold). With TLG_ASYNC_WAIT_MS=N (default 0 = off)
it first waits up to N ms for the compile, and the waits of one GPU frame add up to at most
TLG_ASYNC_WAIT_FRAME_MS (default 8). The log gets an 'Async wait (total)' line every 5 s.
The driver cache is saved every 60 s (TLG_DRIVER_CACHE_SAVE_S, was 180).
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
* Launcher Advanced: async wait and driver cache save parameters
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
* Tools: shader_index.py, an index of the OrbShdr shaders in the player's own dump
Streaming scan of art/cache (.xpps, KCAP + OrbShdr), SQLite index hash -> file/offset/size/stage,
lookup, verify against existing shader caches, stats. Reads the dump only; nothing of the game
is copied or committed.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
* GPU: region trace (TLG_REGION_TRACE=1), step A of the per-region pre-warm
Writes region_trace.tsv in the GPU user folder: every .xpps package the game opens (O) and
the first request of each graphics/compute pipeline (P), on one monotonic clock, so an offline
pass can tell which pipelines each region needs before anything is built on top of it.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
* GPU: the bounded wait also covers a shader still being translated
A new shader is the usual reason for a skipped draw (its pipeline is only queued once the shader
is translated), so GetProgram waits too, within the same per-draw and per-frame budget.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
* GPU: region trace records whether a pipeline was ready; the async wait tally is a warning
The log keeps warnings and above, so the 'Async wait (total)' line never showed. The region trace's
P lines get a fifth column: r = the pipeline existed at its first request, m = it was missing.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
* Docs and polish: Advanced screen, pre-warm notes, region trace parameter, test variant 8
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BGrrT8Atu6mshYBUh1H1Mm
* Restore the third_party submodule entries (a worktree's symlinks had been committed)
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]>
A Windows player on Intel crashed with 0xc000001d at guest 0x8938f1:
extrq xmm4, xmm7. SSE4A exists only on AMD; inFAMOUS 1.07 (and GR2) have
96 EXTRQ (register form) in eboot.bin, no INSERTQ/MOVNTSS/MOVNTSD.
- cpu_check: SSE4A (CPUID 0x80000001 ECX bit 6) is a rewritable set, so
only hosts without it rewrite; AMD keeps the native instruction.
- isa_rewrite.py: EXTRQ/INSERTQ (register and immediate forms) become
sites (XMM numbers in dst/src1, imm length | index << 8 in disp);
MOVNTSS/MOVNTSD are recorded as UNSUPPORTED.
- isa_emulate_sse4a (general regs only) follows the AMD APM; undefined
cases match Zen 3: high qword of the destination zeroed, a field with
index + length > 64 cut at bit 63.
- Dedicated SSE4A stub: skips the red zone, saves rflags (then cld) and
the SysV caller-saved GPRs, spills dst/src XMM with legacy movdqu (YMM
upper halves untouched like EXTRQ), calls the emulation, reloads dst.
The int3 path gets the XMM registers from the signal frame (XSTATE_BV
SSE bit set) or the Windows CONTEXT.
- TLG_ISA_REWRITE/ISS_ISA_REWRITE: 1 now includes SSE4A, and a set list
("sse4a", "movbe,bmi1") forces only those; infamous_run.sh honours it.
Verified on a Ryzen 5700X3D: tests/test_isa_sse4a.c compares the
emulation with the real instructions (every length x index, 2M random
operands, every immediate pair) and runs rewritten sites (all 16x16
registers, jmp / relocated / int3) against the original code comparing
all GPRs, rflags, YMM0-15 and the red zone; mutations are caught. Python
and existing ISA/cpu-check tests pass; build.sh (LTO off) builds. The
real table for inFAMOUS 1.07: 96 SSE4A sites, 23 jmp + 73 relocated,
0 int3, including 0x8938f1. Pending: in-game run with
ISS_ISA_REWRITE=sse4a, and a check on an Intel CPU / Windows build.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01KHxhRF717FsAPVntc7R6zU
For effects that flicker in a static scene (fog/volumetrics, sea foam, lights): once the
trigger file exists, the next two complete frames (flip to flip, on the GPU command thread)
are written to TLG_DUMP_DIR/frame_record_0.txt and _1.txt, then the file is removed.
One line per command in the order the GPU thread runs them, graphics and async compute
queues (q=gfx / q=c<vqid>): draws, indirect draws, dispatches, DMA, events, WaitRegMem,
WriteData, markers, flips. Draws and dispatches carry the pgm hash and permutation index of
each stage, a hash of the user data, every bound buffer (address, size, hash of up to 64 KiB),
images (address, format, size, mips), sampler hashes, vertex/index buffers, render targets and
depth, viewport, scissor and blend/depth/stencil registers, counts or dispatch sizes.
Indirect arguments are given as the guest wrote them (args.cpu) and as the GPU read them at
that draw (args).
Buffer contents: memory the GPU wrote (buffer cache GPU-modified) is copied from the GPU
buffer at the draw into a staging buffer (TLG_FRAME_RECORD_GPU_MB, default 256) and hashed
once the frames are done (g...); everything else is hashed from guest memory (c...) under
runtime_fault_recover, so a fault (unmapped or read-protected page) gives "fault" instead of
a readback or a crash on the GPU thread. The copies end the render pass; a draw that clears
its targets inside the pass in progress skips them (gpu=skipped_clear) so nothing is cleared
twice.
While armed or recording the draw pipeline is off (one thread, stream order; one warm-up
frame lets it run dry). Not triggered: one relaxed atomic load per PM4 packet and per
UseDrawPipe call, a getenv-cached check per flip.
scripts/frame_diff.py aligns the two lists by queue, kind and shaders and prints the commands
whose inputs differ, grouped by shaders, most suspicious first (commands in one frame only,
indirect args, counts, state, GPU-written buffers...). Changes shared by many commands
(camera constants, TAA ping-pong) are listed once as frame-global and weigh little.
Verified: Linux build (TLG_LTO=OFF) clean; frame_diff.py on synthetic records. Not run in
game yet (the user tests); the shader cache key is unchanged (no recompiler or pipeline
cache sources touched).
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JyWhQUvUQf2YSf8HJWnAtd
- probe.c: each ISS_X in the environment is copied to TLG_X at start (unless TLG_X is set),
so the player, launcher and scripts use ISS_* while the shared core still reads TLG_* (one
common prefix later, once every port uses ps4_core). Launcher, scripts, README and docs
renamed to ISS_.
- TSC: upstream's process clock at 1 GHz made inFAMOUS run 3-4x too fast (the game executes
rdtsc itself in 391 places). Default is again the host rdtsc with its measured frequency;
TLG_TSC=process (ISS_TSC) opts in.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JyWhQUvUQf2YSf8HJWnAtd
- CPU bytes written without a fault (TLG_WRITE_MERGE) and their later upload change the GPU
copy after the fence: the eager copies of those pages are marked stale. Served together, a
stale copy overwrote the game's new bytes (objects vanished when a D.U.P. base exploded).
Not served after an image readback of the same range either.
- Launcher: 'Read GPU results ahead' (TLG_EAGER_READBACK) and 'Write to GPU memory without
waiting' (TLG_WRITE_MERGE), on by default; scripts/infamous_run.sh defaults match.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JyWhQUvUQf2YSf8HJWnAtd
session_chart.py takes the frame cap as an optional 4th argument (30 by default, 0 for
games without a cap: the axis follows the session, 30 and 60 FPS references, median and
time above 30/60 FPS). inFAMOUS, current main on an RTX 2060: median 27 FPS.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JyWhQUvUQf2YSf8HJWnAtd
- Hold View/Select/- (or Tab) and push the right stick (arrows): a finger slides from the
middle of the pad toward that side ("Open Door" swipe). A tap still clicks.
- TLG_READBACKS defaults to 0 in scripts/infamous_run.sh as in the launcher: 49 FPS
instead of ~22, and the player reports an image closer to the console (darker).
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JyWhQUvUQf2YSf8HJWnAtd
- Rasterizer::ReadMemory: no GPU-modified buffer data means nothing to download, so the
faulting guest thread lifts the read protection itself (TLG_FAST_READ_FAULT=0 restores
the round trip). The memcpy write faults that waited ~3 ms each (2.7 s of every 5 s) are
gone: 22 -> ~30 FPS in the first areas.
- TLG_FAULT_PROFILE=1: every 5 s, the guest instructions whose faults cost the most.
- Launcher: GPU accuracy (TLG_READBACKS) setting; scripts/infamous_run.sh honours the
variable (it forced 2 before).
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JyWhQUvUQf2YSf8HJWnAtd
- scePadReadState orientation/acceleration/angular velocity: a controller with sensors
reports them through SDL3 (gyro integration + gravity correction). Without sensors:
T/G hold the controller sideways, Y shakes; TLG_MOTION_BUTTON (misc1) + right stick
tilts. TLG_PAD_FILE tokens tilt_right/tilt_left/shake. Gets past the graffiti prompt.
- inFAMOUS runs out of VRAM loading the first level with a 5600 MB cache budget on 6 GB;
default 3500. The buffer allocation assert now reports the size and memory type.
- Screenshots: the display buffer is BGRA.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JyWhQUvUQf2YSf8HJWnAtd
- link_modules.py / probe.c (Windows): the thread-pointer load is patched for every
register, not only rax. inFAMOUS loads it into rcx/rbx/r14/... in ~690 places, which read
glibc's TLS instead of the guest's (null per-thread allocator at 0x3c69b0).
- runtime_infamous.c: the 15 imports only this game uses (NpManager A variants, PlayGo
ETA/to-do/language mask, Http, NetCtl, AppContent add-on info, SystemService string).
- TLG_IMPORT_TRACE=<n>: logs the first n calls of every runtime-resolved import.
- scripts/infamous_quick.sh: windowless CPU-only bring-up run.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JyWhQUvUQf2YSf8HJWnAtd
port.env: inFAMOUS Second Son / infamous / infamous_launcher.py / CUSA00223.
New original placeholder icon (abstract bolt drawn with PIL, no game art) at
packaging/icon/infamous-icon-1024.png and launcher/infamous.png/.ico; the GR2
icons are gone and the Windows .rc files and make_icon.py point at the new
ones. The packages' system_lib/LEIA-ME now says no firmware module is needed.
scripts/install_desktop.sh reads port.env instead of hard-coding TLG.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JyWhQUvUQf2YSf8HJWnAtd
Was scripts/gr2_run.sh: same flock on the workspace game.lock, now on
game/CUSA00223 with only the game's libc.prx and libSceFios2.prx linked (no
JobManager, libSceSecure or firmware libSceNgs2), infamous-* log names and the
inFAMOUS window name/app id.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JyWhQUvUQf2YSf8HJWnAtd
- README.md mirrors tlg_pc's: status, download, required files of 1.00 + 1.11,
how to play, build, how it works, issues #1-#6, credits; four 1080p captures
(title, pause menu, ruins, gameplay) and a 5-minute performance chart
- scripts/make_game_view.py: merged game folder (base + update) made of links;
launcher and gr2_run.sh now run game/CUSA03694 with eboot 1.11 (0 missing
imports, boots to gameplay at 30 FPS)
- session_chart.py takes the game name
- TLG's screenshots, docs and analysis reports left this repo
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JyWhQUvUQf2YSf8HJWnAtd
Gravity Rush 2 stayed in sceAvPlayerStop after its opening movie. The three
source threads are now asked to stop together and every queue they may wait
on is notified before the joins (instrumented with tlg-av log lines for now).
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JyWhQUvUQf2YSf8HJWnAtd
- README.md: pt_BR overview with 'English below', then the English version:
screenshots, status, nightly download, requirements, how to play, build
- docs/TECNICO.md: the technical notes that used to be the README
- docs/screenshots: four in-game captures (native 1080p) and a session chart
made by scripts/session_chart.py from a port log
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JyWhQUvUQf2YSf8HJWnAtd
- runtime_tlg.c: portable local time (localtime_s + _mkgmtime on Windows) instead
of a localtime_r shim that clashed with MinGW's macro
- Linux CI: robin-map and VMA built from source (not packaged in Ubuntu 24.04)
- Port icon: original artwork (packaging/icon/tlg-icon-1024.png) for the window,
the menu entry and the Windows executables
- Paths: docs and helper scripts no longer assume ~/decomp (repo now lives in
~/decomp/tlg_pc)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JyWhQUvUQf2YSf8HJWnAtd
- tlg_launcher.py: ícone da janela (icon0.png) e banner (faixa do pic1.png)
lidos de sce_sys do dump; a arte da Sony não vai para o repositório
- scripts/install_desktop.sh: instala ~/.local/share/applications/tlg-pc.desktop
e o ícone em hicolor (512..48) a partir do dump; --remove desfaz
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JyWhQUvUQf2YSf8HJWnAtd
Arquivos, identificadores, variáveis de ambiente (GOW3_* -> TLG_*), binários
(tlg-probe, libtlggpu.so), nomes de threads e mensagens de log. As
referências ao projeto de origem (gow3_pc, UPSTREAM.md, LICENSE) e os
submódulos de terceiros foram mantidos. A camada de aliases TLG_->GOW3_
deixou de ser necessária e foi removida.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JyWhQUvUQf2YSf8HJWnAtd
- probe.c: copia cada TLG_<NOME> para GOW3_<NOME> no início do main
- run_tlg.sh: padrões do TLG como TLG_* e a mesma tradução antes de
executar (cobre os inicializadores da biblioteca de GPU)
- scripts de teste usam TLG_PAD_FILE / TLG_TOGGLE_FILE
- README: seção Opções
O código herdado continua lendo GOW3_*, para manter fácil o merge com o
upstream (gow3_pc/bloodborne_pc).
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JyWhQUvUQf2YSf8HJWnAtd
- run_tlg.sh liga GOW3_FRAME_STATS=1 (linha 'Frame stats' a cada 5 s)
- scripts/watch_session.sh: avisa início/fim/crash da sessão, resumo de
FPS, e com 20 s sem frames manda kill -USR1 (dump das threads)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JyWhQUvUQf2YSf8HJWnAtd
- pixel_format.h: data_fmt reservado (15) com SnormNz -> sem conversão
(o hardware ignora), em vez de UNREACHABLE; era o crash ao pular a intro
- probe.c: em falhas no código do jogo, imprime registradores e a cadeia
rbp (offsets do eboot) para achar o chamador
- scripts/skipintro_test.sh: menu -> New Game -> pausa -> pular intro
Pendente: ponteiro nulo de handle em 0x1c4c570 (renderer) logo após pular.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JyWhQUvUQf2YSf8HJWnAtd
- scripts/import_usb_dump.sh: completa os psarc truncados a partir do
pendrive, conferindo prefixo, tamanho (LIST) e os demais arquivos
- scripts/newgame_test.sh: entrada roteirizada (GOW3_PAD_FILE) do menu
até o New Game
- sce_sys do jogo base (playgo-chunk.dat: 27 chunks) vindo do pendrive
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JyWhQUvUQf2YSf8HJWnAtd
- README com estratégia (runtime nativo + shadPS4/Vulkan), status,
inventário do dump (sha256), achados e estimativa preliminar
- Relatórios de RE do eboot 1.03: loop principal/threads, áudio,
I/O/psarc/controle/saves/sistema
- Imports SCE por biblioteca (base 1.00 e 1.03) e caminhos-fonte do engine
- Scripts: extração de imports, leitor de TOC PSARC, mirror/verify FTP,
progresso do dump USB
- .gitignore exclui arquivos do jogo, ferramentas e saída bruta de descompilação
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JyWhQUvUQf2YSf8HJWnAtd