Skip to content

Releases: Oussama268/ShadowOfTheColossus-PC

v0.57-opt6: draw thread (+10% shrine), short first-visit freezes, PS4 Pro save fix, launcher updates

Choose a tag to compare

@Oussama268 Oussama268 released this 18 Oct 01:21
6087c85

Sixth optimization build, from main @ 6087c85 (adds PR #38, #40 and #41 to v0.57-opt5). Built with ThinLTO and Clang PGO; the PGO profile was retrained on the new code.

English

What's new since v0.57-opt5:

  • more FPS from a thread of its own for drawing;
  • much shorter freezes on a first visit with empty caches;
  • PS4 Pro mode save fix;
  • the launcher can now update itself.

Draw thread. The command thread (the port's bottleneck) now only reads the game's commands and picks the pipelines. A second thread binds and records the draws in Vulkan. The idea and the code are by Lucas-blip-png (upstream PR AjncSystem#99). They were reviewed here, and several fixes were added.

Test (RTX 3060 Laptop, runs alternated) v0.57-opt5 v0.57-opt6
Shrine of Worship 34.7 FPS, 1% low 24 38.2 FPS, 1% low 29
Title-screen demo 55.8 FPS 57.0 FPS
Heaviest open-world stretch of the demo 34.0 FPS 36.1 FPS

First visit with empty caches (first launch, or after a driver update). Compute pipelines are now built on several threads, and only the draw that needs one waits for it.

Shrine, empty caches v0.57-opt5 v0.57-opt6
Worst freeze 22.2 s 6.0 s
Playable at 110 s 88 s

PS4 Pro mode (issue #35). Loading a save in Pro mode crashed at guest offset 0x1a371. Pro mode needs more direct memory, and it now gets it. The save that crashed on opt5 now loads (3 runs, ~39 FPS).

Launcher updates (issue #37). At startup the launcher checks this repository's releases and asks before downloading anything.

  • The download is checked: size and SHA-256.
  • It is installed over the folder without touching user/ (saves, shader cache) or your sotc.ini.
  • If anything fails, the old files are put back.
  • It can be turned off in Advanced; "Check for updates" checks right away.

Starting with this version, later releases can be installed this way.

Black-frame fix. Found while testing this build; it only happened with the draw thread.

  • In the first seconds of the game, a shader could read a pointer that was still empty. The port then patched that shader for good and saved the patched version into the shader cache, so later sessions showed a black Shrine.
  • Now that one read returns zero, just that once, and nothing is patched.

The shader cache is rebuilt on first launch (expect more stutter in the first session).

Tested:

  • shrine and demo runs alternated against v0.57-opt5;
  • empty-cache runs;
  • a 45-minute demo session: no errors, video memory peak 3.5 GB and flat;
  • saves in normal and Pro mode;
  • screenshots correct;
  • the launcher update end to end with a test release, including the rollback when an install fails.

Off switches if something looks wrong:

  • SOTC_CP_THREADS=0: one thread, as before;
  • SOTC_ASYNC_COMPUTE=0;
  • SOTC_RB_ASYNC=0.

Português

Novo desde a v0.57-opt5:

  • Mais FPS com uma thread só para desenhar (ideia e código de Lucas-blip-png, PR AjncSystem#99 do repositório principal, revisados e com correções):
    • santuário 34,7 → 38,2 FPS (1% low 24 → 29);
    • demo 55,8 → 57,0 FPS;
    • trecho mais pesado do mundo aberto 34,0 → 36,1 FPS.
  • Primeira visita a uma área com o cache vazio: pipelines de compute montados em várias threads. Pior travada 22,2 s → 6,0 s; jogável em 88 s em vez de 110 s.
  • Correção: o jogo fechava ao carregar o save no modo PS4 Pro (#35).
  • Atualização pelo lançador (#37):
    • pergunta antes de baixar e confere o arquivo;
    • não mexe em user/ nem no sotc.ini;
    • se a instalação falha, os arquivos antigos voltam.
  • Correção de tela preta que podia ficar salva no cache de shaders (só com a thread de desenho; achada nos testes desta versão).
  • O cache de shaders é refeito na primeira abertura.

Testado:

  • santuário e demo alternados com a v0.57-opt5;
  • cache vazio;
  • 45 minutos de demo sem erro;
  • saves no modo normal e Pro;
  • imagens certas;
  • atualização pelo lançador de ponta a ponta.

Para desligar: SOTC_CP_THREADS=0, SOTC_ASYNC_COMPUTE=0, SOTC_RB_ASYNC=0.

v0.57-opt5: stable long sessions, rare crash fix

Choose a tag to compare

@Oussama268 Oussama268 released this 17 Oct 05:55
a7b3d3d

Fifth optimization build, from main @ a7b3d3d (adds PR #27, #29, #31 and #32 to v0.57-opt4), built with ThinLTO and Clang PGO. The PGO profile was retrained on the new code.

English

What's new since v0.57-opt4: long sessions keep their video memory, a rare crash is fixed, and the open world is a bit faster.

Long sessions. GPU buffer memory used to grow for as long as you played, about 45 MB per minute in the title-screen demo. On a 6 GB card that went over the budget after ~40 minutes, and the stutter came back. The game reuses addresses inside its own 4 GB memory pool, so memory once used never went back.

Now, once buffer memory passes 1.5 GB, blocks that haven't been used for 30 seconds and hold no GPU-written data are given back: at most 64 MB every 2 seconds, about 20 ms each time. Each block is read back and compared with the game's memory first, so the picture cannot change.

30-minute title-screen demo v0.57-opt4 v0.57-opt5
Peak video memory 4.3–4.4 GB, still rising 3.4 GB, flat
Buffer memory 0.4 → 4.2 GB held at ~1.5 GB
Emergency collections / crashes 0 / 0 0 / 0

Rare crash. v0.57-opt4 sometimes closed while loading the save with "Attempted to protect region as write-only". It happened 2 times in ~16 test runs, including once with the released build. The likely cause is fixed. If it still happens, the page is now fully protected and the game carries on, and user/last_run.log gets a "Write-only protection" line that shows where it came from.

Early submit. When a command writes a page the game will read back, that work is now sent to the GPU right away (SOTC_RB_EARLY, now on by default). Title-screen demo: 55.2 / 54.8 → 56.0 / 56.4 FPS (+2%). Shrine: the same within noise.

Tested:

  • the 30-minute demo above, plus 15 minutes with the final build;
  • shrine and demo runs alternated against v0.57-opt4;
  • identical screenshots.

The shader cache stays valid.

Off switches if something looks wrong: SOTC_ARENA_EVICT_MB=0 (no memory give-back) and SOTC_RB_EARLY=0.

Português

Novo desde a v0.57-opt4:

  • Sessões longas sem a memória de vídeo crescer: a memória de buffers sem uso volta para a GPU (30 minutos de demo: pico 3,4 GB, estável; antes 4,3–4,4 GB e subindo).
  • Correção de uma queda rara ao carregar o save ("write-only").
  • Mundo aberto ~2% mais rápido (demo 55,0 → 56,2 FPS; santuário igual).

Testado: 30 minutos de demo, mais 15 minutos com o build final; santuário e demo alternados com a v0.57-opt4; imagens iguais. O cache de shaders continua valendo. Para desligar: SOTC_ARENA_EVICT_MB=0, SOTC_RB_EARLY=0.


Requirements: your own game dump (CUSA08809, EU 1.01). Sound uses the libSceNgs2/libSceUlt modules from YOUR console (not included). / Requisitos: o seu próprio dump (CUSA08809, EU 1.01); o som usa os módulos libSceNgs2/libSceUlt do SEU console.

SotC-PC.zip SHA-256: d39ce519b8b81625d72f7672564f959990abea99f93f4bf991826de9d0cb6bce

v0.57-opt4: +18% FPS (command thread system-call and lock cuts)

Choose a tag to compare

@Oussama268 Oussama268 released this 16 Oct 17:30
89d14b1

Fourth optimization build, from main @ 89d14b1 (adds PR #25 and #26 to v0.57-opt3), ThinLTO + Clang PGO (profile retrained on the new code).

English

What's new since v0.57-opt3: more FPS everywhere.

The thread that turns the game's GPU commands into Vulkan commands is the port's bottleneck. A profile showed it spent ~42% of its time inside Windows and the C runtime: locks, page-protection calls, copies and allocations. This build cuts most of that.

Same PC (RTX 3060 Laptop), same time of day, runs alternated between the two builds:

v0.57-opt3 v0.57-opt4
Shrine of Worship 29.3 / 29.1 FPS 35.0 / 34.1 FPS (+18%)
Title-screen demo 47.4 FPS 53.5 FPS
Demo 1% low 29.4 FPS 37.9 FPS
Demo frames over 50 ms 129 26

What changed:

  • Texture-cache lock: taken once per group of textures instead of twice per texture (62,000 times per frame), with no atomic instruction on the command thread.
  • Fill-shader tables (done on the CPU): only the pages that really changed are written, and they go straight to GPU memory. Buffer uploads fell from 21 to ~13 MB per frame.
  • Depth/colour image pair: reused instead of being created and destroyed every frame ("depth twin", now on by default).
  • Faster memory lookups, and a retrained PGO profile.

Tested: shrine and demo with no errors, identical screenshots, a 15-minute demo soak. The shader cache stays valid.

Off switches if something looks wrong: SOTC_TC_BATCH=0, SOTC_TC_BIASED=0, SOTC_TC_SKIP_EMPTY=0, SOTC_FILL_HLE_PAGES=0, SOTC_DEPTH_TWIN=0, SOTC_REGION_DIRECT=0.

Português

Novo desde a v0.57-opt3: mais FPS em todo lugar. A thread de comandos (o gargalo do port) gastava ~42% do tempo em travas, proteções de página, cópias e alocações do Windows. Mesmo PC, mesma hora, execuções alternadas:

  • Santuário: 29,3 / 29,1 → 35,0 / 34,1 FPS (+18%).
  • Demo: 47,4 → 53,5 FPS; 1% low 29,4 → 37,9; quadros acima de 50 ms 129 → 26.

Testado: santuário e demo sem erro, imagens iguais, 15 minutos de demo. O cache de shaders continua valendo.


Requirements: your own game dump (CUSA08809, EU 1.01). Sound uses the libSceNgs2/libSceUlt modules from YOUR console (not included). / Requisitos: o seu próprio dump (CUSA08809, EU 1.01); o som usa os módulos libSceNgs2/libSceUlt do SEU console.

SotC-PC.zip SHA-256: b20d8d9576c65737166cd2ea7d91b5bc6d0b9edb65c5a9dec54247b0f8577691

Shadow of the Colossus PC 0.57-opt3 (less first-visit freezing)

Choose a tag to compare

@Oussama268 Oussama268 released this 16 Oct 06:51
77ee884

Third optimization build, from main @ 77ee884 (adds PR #23 and #24 to v0.57-opt2), ThinLTO + Clang PGO.

English

What's new since v0.57-opt2: less freezing the first time you see an area.

  • New graphics pipelines are now built on background threads.
  • An object whose pipeline is still being built simply isn't drawn for a few frames and then appears, instead of the whole game freezing.
  • Full-screen passes (post-processing) are still built on the spot, so there are no black frames.

With an empty shader cache (first play), title-screen demo, RTX 3060 Laptop:

v0.57-opt2 v0.57-opt3
Frames over 50 ms 235 156
1% low 23.9 FPS 29.1 FPS

With a warm cache nothing changes: shrine 32.4 FPS, demo 50.0 FPS. It held up through a 15-minute cold-cache stress run with no errors.

Still to do: shader translation, most of the remaining first-visit freeze (up to ~1–2 s at a big scene change), still runs on the main command thread. Moving it to the background needs deeper changes (its JIT code buffer is shared), so it's the next step. Revisits stay smooth, because everything is cached.

SOTC_ASYNC_SHADERS=0 restores the old behaviour. Everything from v0.57-opt2 is included: mip tails, async readbacks, arena release, crash logs and minidumps.

Português

Novo desde a v0.57-opt2: menos travadas na primeira visita a uma área. Os pipelines gráficos novos são montados em segundo plano; o objeto que ainda não tem pipeline aparece um instante depois, em vez de o jogo parar. Passes de tela cheia continuam sendo montados na hora (sem quadro preto). Com cache vazio no demo: quadros acima de 50 ms 235 → 156, 1% low 23,9 → 29,1 FPS. Com cache cheio, nada muda (santuário 32,4 FPS, demo 50,0 FPS). A tradução dos shaders ainda roda na thread principal (próximo passo). SOTC_ASYNC_SHADERS=0 desliga.


Requirements: your own game dump (CUSA08809, EU 1.01). Sound uses the libSceNgs2/libSceUlt modules from YOUR console (not included). / Requisitos: o seu próprio dump (CUSA08809, EU 1.01); o som usa os módulos libSceNgs2/libSceUlt do SEU console.

SotC-PC.zip SHA-256: a8d8fa2f8fdab637bbef2682c85a3a3a401031ad0bcc4c21e739bf9f0244f907

🤖 Generated with Claude Code

Shadow of the Colossus PC 0.57-opt2 (less stutter, VRAM fixes)

Choose a tag to compare

@Oussama268 Oussama268 released this 16 Oct 05:12
7b54a17

Second optimization build, from main @ 7b54a17 (PRs #16–#22 on this fork), ThinLTO + Clang PGO retrained on the new code.

English

What changed

  • Much less stutter when entering new areas on 6 GB cards. Textures now keep only the mip levels they actually use. Video memory in the title-screen demo: ~6.1 GB → ~3.3 GB. The worst streaming frame went from 460 ms to ~270 ms.
  • Asynchronous GPU readbacks. The game reads GPU-written memory every frame; now only the game's own thread waits for the GPU, and the command processor keeps working.
  • Buffer memory is given back on unmap. Before, video memory grew ~90 MB per minute for the whole session (1.6 → 6.0 GB in 48 minutes), until memory ran out. It now grows much more slowly.
  • Crashes leave evidence. The launcher keeps the last 5 session logs, copies the log of a crashed session to user\crashes\, and the game writes a minidump (.dmp) there.

Measured (RTX 3060 Laptop 6 GB, 1080p), compared to v0.57-opt1:

v0.57-opt1 v0.57-opt2
Shrine of Worship, idle ~28 FPS 31.3–32.2 FPS
Title-screen demo ~47 FPS, 100–150 frames over 50 ms 50.0 FPS, 47–93 frames over 50 ms
Demo peak video memory ~6.1 GB ~3.3 GB

Switches: SOTC_MIP_TAIL=0, SOTC_RB_ASYNC=0 and SOTC_ARENA_RELEASE=0 restore the old behaviour of each change.

Known

  • First-visit shader compile stutter is not fixed yet. The first time you enter an area, shaders compile and frames can freeze for 1–2 s. Later visits are smooth (the cache is kept). Background compilation is the next step.
  • Releasing buffer memory used to be opt-in, because of an old crash when loading saves. It did not reproduce in testing (3 save loads, 25 minutes of demo, plus a 50-minute soak of the other changes). If a crash appears when loading, try SOTC_ARENA_RELEASE=0 and send user\crashes\.
  • The shader cache stays valid; a few new shaders compile on first start.

Install: unzip, preferably next to your CUSA08809 dump folder, and run SotC.exe. To update an existing install, copy the new files over it; your user\ folder (saves, shader cache) stays.

Português

O que mudou

  • Muito menos engasgos ao entrar em áreas novas em placas de 6 GB: as texturas guardam só os mips usados. Memória de vídeo no demo: ~6,1 → ~3,3 GB; pior quadro ao carregar uma área: 460 → ~270 ms.
  • Leituras da GPU assíncronas: só a thread do jogo espera a GPU; o processador de comandos segue trabalhando.
  • Memória de buffers devolvida ao desmapear: antes a memória de vídeo crescia ~90 MB por minuto até acabar; agora cresce bem mais devagar.
  • Quedas deixam registro: logs das últimas 5 sessões, log da sessão que caiu em user\crashes\ e um minidump (.dmp).

Medido (RTX 3060 Laptop 6 GB):

  • Santuário: ~28 → 31,3–32,2 FPS
  • Demo: ~47 → 50,0 FPS, quadros acima de 50 ms 100–150 → 47–93
  • Memória de vídeo no demo: ~6,1 → ~3,3 GB

Ainda não resolvido: na primeira vez em cada área os shaders são compilados e o jogo pode travar 1–2 s; da segunda vez em diante fica liso.


Requirements: your own game dump (CUSA08809, EU 1.01). Sound uses the libSceNgs2/libSceUlt modules from YOUR console (not included). / Requisitos: o seu próprio dump (CUSA08809, EU 1.01); o som usa os módulos libSceNgs2/libSceUlt do SEU console (não vêm no pacote).

SotC-PC.zip SHA-256: 14693ee768bad4a280d7d841890e2260aee856106440ce7d5d3527c269184a14

🤖 Generated with Claude Code

Shadow of the Colossus PC 0.57-opt1 (optimized build)

Choose a tag to compare

@Oussama268 Oussama268 released this 15 Oct 13:14
690efd1

Optimized build on top of upstream 0.57. Built from main @ 690efd1 (PRs #1–#15 on this fork), with ThinLTO and Clang PGO.

English

Performance

  • Faster on the CPU-bound scenes. The port is limited by the GPU command-processor thread, not the GPU. That thread now does much less work per draw, submits every 1000 µs, and is compiled with ThinLTO + PGO. Measured on an RTX 3060 Laptop (6 GB):
    • idle Shrine of Worship scene: ~21 → ~28 FPS
    • title-screen attract demo: ~40 → ~45 FPS
  • Boot is much faster. The shader/pipeline cache is now read in parallel: the warm-up went from ~50 s to ~1 s on the machine where it was measured.
  • Fewer stutters and crashes on 6 GB cards. More VRAM headroom, emergency texture collection under memory pressure, and fixes to page tracking.

Stability and saves

  • Crash-safe saves. Writes are atomic, with automatic backups. Saves imported from shadPS4 get their sidecars repaired. The "corrupted save" prompt no longer answers YES on its own.
  • Startup-crash guard and better crash diagnostics.

Other

  • Bloodborne-only leftovers removed; the project is now Shadow of the Colossus only.

Testing

  • Every change was built and benchmarked on one machine (RTX 3060 Laptop).
  • The save-dialog change has not been tested in game.
  • Two optional experiments are not measured. The third batch of command-processor cuts is on, and each cut has its own switch. The depth twin is opt-in (SOTC_DEPTH_TWIN=1).
  • Shader cache: kept, no rebuild needed.

Install: unzip anywhere, ideally next to your CUSA08809 dump folder. Run SotC.exe and set the game folder and the sound-modules folder in the launcher.

Português

Desempenho

  • Mais FPS nas cenas limitadas pela CPU. O limite é a thread do command processor da GPU, não a placa. Essa thread agora faz bem menos trabalho por draw, envia a cada 1000 µs e é compilada com ThinLTO + PGO. Medido numa RTX 3060 Laptop (6 GB):
    • Santuário parado: ~21 → ~28 FPS
    • demo da tela de título: ~40 → ~45 FPS
  • Abertura bem mais rápida. O cache de shaders/pipelines agora é lido em paralelo: o aquecimento caiu de ~50 s para ~1 s na máquina onde foi medido.
  • Menos travadas e quedas em placas de 6 GB. Mais folga de VRAM, coleta de emergência de texturas quando a memória aperta e correções no rastreamento de páginas.

Estabilidade e saves

  • Saves à prova de queda. Gravação atômica, com backups automáticos. Saves importados do shadPS4 têm os arquivos auxiliares reparados. O aviso de "save corrompido" não responde mais SIM sozinho.
  • Proteção contra a queda na abertura e diagnósticos melhores.

Outros

  • Restos do Bloodborne removidos; o projeto agora é só Shadow of the Colossus.

Testes

  • Tudo foi compilado e medido numa única máquina (RTX 3060 Laptop).
  • A mudança do diálogo de save ainda não foi testada no jogo.
  • Duas otimizações opcionais não foram medidas. O terceiro lote de cortes do command processor está ligado, e cada corte tem a sua chave. O depth twin é opcional (SOTC_DEPTH_TWIN=1).
  • Cache de shaders: mantido, não precisa ser refeito.

Instalação: descompacte em qualquer pasta, de preferência ao lado da pasta do dump CUSA08809. Abra o SotC.exe e indique no lançador a pasta do jogo e a dos módulos de som.


Requirements: your own game dump (CUSA08809, EU 1.01). Sound uses the libSceNgs2/libSceUlt modules from YOUR console (not included). / Requisitos: o seu próprio dump do jogo (CUSA08809, EU 1.01). O som usa os módulos libSceNgs2/libSceUlt do SEU console (não vêm no pacote).

SotC-PC.zip SHA-256: 622c20c15e235f007006d0c45fb9523c4befa39489dd00f80fca96630d51123d

🤖 Generated with Claude Code