mirror of
https://github.com/HayatoG/iss_pc.git
synced 2026-11-07 10:46:10 -10:00
Docs: README, player guide and docs updated for the new launcher, saves, fixes and acknowledgements (#86)
* 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]>
This commit is contained in:
15 files changed
+558
-101
No files matched your search
@@ -182,7 +182,7 @@ jobs:
|
||||
Automatic build of commit ${short}. **No game files included**: see README-player.md inside the package for what to copy from your PS4.
|
||||
|
||||
- Linux x86-64 (glibc 2.39+): \`infamous-linux-x86_64.tar.gz\`
|
||||
- Windows 10/11 64-bit: \`infamous-windows-x86_64.zip\` (ainda não testado em jogo / not yet tested in game)
|
||||
- Windows 10/11 64-bit: \`infamous-windows-x86_64.zip\`
|
||||
|
||||
**Sensor de movimento e touchpad** (grafite, absorver poderes, portas): no DualShock 4/DualSense funcionam direto. Em outros controles, um toque em **L3+R3** liga/desliga o modo sensor (ou Share no Xbox Series): ele é a lata de spray do grafite: o controle fica de lado, X/A sacode, R2 pinta e o **analógico esquerdo mira** o cursor (para os lados e para cima/baixo; ele fica onde você soltar). **View/Select** é o clique do touchpad (segurar para absorver fumaça, neon...), e **View/Select + analógico direito** desliza. Teclado: T/G viram de lado (as setas miram enquanto seguram), Y sacode, F pinta (R2), Tab/Backspace clicam, Tab + setas deslizam, Tab + Backspace apertam as duas pontas (View/Select + R1 no controle: levantar o carro de cima do Reggie). A zona morta dos analógicos fica no launcher.
|
||||
|
||||
|
||||
@@ -30,6 +30,12 @@ Por **HayatoG** · YouTube [@hayatog-dev](https://www.youtube.com/@hayatog-dev)
|
||||
|
||||
## Novidades
|
||||
|
||||
- **Launcher novo (Qt Quick), agora o padrão:** com 8 telas (Jogar, Gráficos, Controles, Correções, Saves e dados, Guias de controle, Suporte, Atualizações), interface em português e inglês e o idioma do jogo seguindo o do sistema por padrão. O launcher antigo (Tk) continua no pacote como **inFAMOUS Second Son (classic)**, de reserva. Veja [O launcher](#o-launcher).
|
||||
- **Saves e dados:** pasta de dados configurável, backup antes de cada partida, exportar/importar `.zip`, duplicar e excluir saves, e a busca de saves de outras instalações. Resolve o "perdi meu save depois de atualizar". Veja [Saves e dados](#saves-e-dados).
|
||||
- **Faróis piscando e brilho que atravessava personagens: corrigido.** O contador de oclusão que o jogo lê para saber quanto de uma luz está visível era falso; o novo modo 3 (o padrão) devolve contagem zero, e isso corrigiu o problema, **confirmado no Windows e no Linux**. Veja [Luzes e oclusão](#luzes-e-oclusão).
|
||||
- **Correções experimentais BP01–BP12:** doze correções trazidas de outros ports de PS4 e do shadPS4, com chave individual, perfil Recomendado e o "Como a release anterior" para comparar. Veja [Correções experimentais](#correções-experimentais).
|
||||
- **Logs mais úteis:** todo log começa com um bloco `Config:` (suas opções, sem caminhos) e mostra as linhas `Backports:`; a tela **Suporte** monta o relatório sem dados pessoais. Veja [Logs e relatórios](#logs-e-relatórios).
|
||||
- **Guias de controle:** imagens prontas (Xbox, Switch Pro e 8BitDo, em português e inglês) do modo sensor e do touchpad, na seção [Sensor de movimento e touchpad](#sensor-de-movimento-e-touchpad) e na tela **Guias de controle** do launcher.
|
||||
- **Processadores sem F16C (Sandy Bridge, #51):** as 13 conversões de meia precisão do jogo (`VCVTPH2PS`/`VCVTPS2PH`) passam a ser emuladas na partida, com o mesmo resultado bit a bit do processador (arredondamento, denormais, Inf e NaN). Antes o jogo parava com "13 sites use encodings the rewrite cannot emulate".
|
||||
- **Mouse:** o mouse gira a câmera (analógico direito) e também faz o papel do **touchpad**. Esquerdo = R2, direito = L2, do meio = R3. **Segure Ctrl esquerdo (ou o botão lateral X1)** e o mouse vira um dedo no touchpad: esquerdo toca/clica (segurar = absorver poder), arrastar com o esquerdo desliza (porta "Open Door", scanner), direito = dois dedos (levantar o carro do Reggie). A janela prende o mouse; Esc solta e um clique prende de novo. Veja [Mouse](#mouse).
|
||||
- **Explicação do grafite na tela:** na primeira vez que o modo sensor liga, uma tela no meio mostra os passos (sacudir, pintar, mirar, sair) com os botões do seu controle; fecha com "Entendi". O menu Insert ganhou a aba **Controle**, que mostra essa tela de novo e ajusta a **velocidade da mira do grafite** (25–200%, também `ISS_SENSOR_AIM`).
|
||||
@@ -67,9 +73,14 @@ Por **HayatoG** · YouTube [@hayatog-dev](https://www.youtube.com/@hayatog-dev)
|
||||
| Controle | ✅ DualSense, DualShock 4, Xbox e 8BitDo via SDL3 |
|
||||
| Desempenho | 🔧 20–30 FPS típicos numa RTX 2060, instável; otimização em andamento |
|
||||
| Engasgos | 🔧 Na primeira vez que cada shader é compilado (cutscenes e áreas novas) |
|
||||
| Imagem | 🔧 Alguns efeitos de névoa, água e luz piscam |
|
||||
| Luzes (faróis piscando, brilho atravessando personagens) | ✅ Corrigido pelo modo de oclusão 3 (padrão), confirmado no Windows e no Linux; se o brilho das luzes ficar fraco, use o modo 0 |
|
||||
| Imagem | 🔧 Alguns efeitos de névoa, água e fogo ainda piscam |
|
||||
| Launcher | ✅ Qt Quick (padrão) com o Tk de reserva; português e inglês |
|
||||
| Saves e dados | ✅ Pasta configurável, backup, exportar/importar |
|
||||
| Mouse (câmera e touchpad) | 🧪 Implementado, ainda pouco testado em jogo |
|
||||
| Correções experimentais (BP01–BP12) | 🧪 As de padrão ligado vêm no perfil Recomendado; BP06–BP09 (desligadas) são experimentais |
|
||||
| Linux | ✅ Testado (Nobara/Fedora 44) |
|
||||
| Windows | 🧪 Build automático, ainda sem teste em jogo |
|
||||
| Windows | 🧪 Testado por jogadores (a correção de luzes foi confirmada); crash conhecido em RX 580/Polaris, veja [Problemas conhecidos](#problemas-conhecidos) |
|
||||
|
||||

|
||||
|
||||
@@ -80,7 +91,9 @@ Por **HayatoG** · YouTube [@hayatog-dev](https://www.youtube.com/@hayatog-dev)
|
||||
A [**última versão**](https://github.com/HayatoG/iss_pc/releases/latest) é gerada pelo GitHub Actions a cada mudança; as anteriores ficam em [Releases](https://github.com/HayatoG/iss_pc/releases) como histórico:
|
||||
|
||||
- **Linux x86-64** (glibc 2.39+: Ubuntu 24.04, Fedora 40, SteamOS 3.6 ou mais novos): `infamous-linux-x86_64.tar.gz`
|
||||
- **Windows 10/11 64 bits**: `infamous-windows-x86_64.zip`
|
||||
- **Windows 10 (1903 ou mais novo) / 11, 64 bits**: `infamous-windows-x86_64.zip`
|
||||
|
||||
Os pacotes abrem o launcher Qt por padrão; ele soma cerca de 55 MB ao download (valor medido no Linux; no Windows é uma estimativa). Se o launcher novo não abrir na sua máquina, use o **inFAMOUS Second Son (classic)**, na mesma pasta.
|
||||
|
||||
## Arquivos do jogo necessários
|
||||
|
||||
@@ -98,18 +111,87 @@ Tudo vem do **seu** PS4 (GoldHEN + Itemzflow). Nada disso vai no download. Use *
|
||||
|
||||
A lista completa e o passo a passo, que também vão nas notas de cada Release, estão em [`docs/ARQUIVOS_NECESSARIOS.md`](docs/ARQUIVOS_NECESSARIOS.md).
|
||||
|
||||
**PC:** placa de vídeo com Vulkan 1.3 (6 GB de VRAM recomendados) e ~33 GB livres.
|
||||
**PC:** Windows 10 (1903+)/11 64 bits ou Linux x86-64 (glibc 2.39+), placa de vídeo com Vulkan 1.3 (6 GB de VRAM recomendados) e ~33 GB livres.
|
||||
|
||||
## Como jogar
|
||||
|
||||
1. Extraia o pacote.
|
||||
2. Abra o **inFAMOUS Second Son**, escolha a pasta do jogo e o idioma e clique em **Jogar**. Se a imagem engasgar demais, a opção "Precisão da GPU" tem um modo rápido (sem as partículas da GPU).
|
||||
2. Abra o **inFAMOUS Second Son** (no Windows, se aparecer "O Windows protegeu o computador", clique em *Mais informações* e *Executar assim mesmo*: o programa não é assinado digitalmente). Escolha a pasta do jogo e clique em **Jogar**. O idioma do jogo é o do seu sistema por padrão; dá para trocar na mesma tela. Se a imagem engasgar demais, a opção "Precisão da GPU" (tela **Gráficos**) tem um modo rápido (sem as partículas da GPU).
|
||||
3. No jogo, **F10** liga o contador de FPS, e **Insert** (ou R3 + L2 no controle) abre o menu do port.
|
||||
4. Quando o jogo pedir para virar ou sacudir o controle e o seu não tiver sensor: toque em L3+R3 (ou Share no Xbox Series). O controle já fica de lado; X/A sacode, R2 pinta e o analógico esquerdo mira. Toque de novo para sair. No teclado: T/G (com as setas para mirar) e Y. Veja [Sensor de movimento e touchpad](#sensor-de-movimento-e-touchpad).
|
||||
|
||||
O passo a passo completo está em [`README-player.md`](port/packaging/README-player.md), que também vem dentro do pacote.
|
||||
|
||||
**Correções experimentais:** o botão **Correções experimentais…** do launcher liga e desliga as 12 correções `TLG_BP01` a `TLG_BP12` (de outros ports de PS4 e do shadPS4), as chaves de diagnóstico (`TLG_WQM`, `TLG_LDS_*`, `TLG_BC_TINY`...) e as opções do menu Insert, com etiqueta de "no jogo" ou "reinicia o jogo". Sem mexer em nada valem os padrões. Lista completa: [`docs/EXPERIMENTAL_FIXES.md`](docs/EXPERIMENTAL_FIXES.md).
|
||||
## O launcher
|
||||
|
||||
O launcher é o programa que abre ao executar **inFAMOUS Second Son**. O novo (Qt Quick) é o padrão; o antigo (Tk) fica ao lado, como **inFAMOUS Second Son (classic)**, para o caso de o novo não abrir. Os dois usam as mesmas configurações e os mesmos saves, e aceitam `--play`, `--script` e `--clear-shader-cache`.
|
||||
|
||||
| Tela | Para que serve |
|
||||
|---|---|
|
||||
| **Jogar** | pasta do jogo, idioma do jogo, GPU e versão detectadas, perfil de correções, seletor de oclusão (luzes), botão Continuar/Jogar |
|
||||
| **Gráficos** | modo de janela, VSync, limite de FPS, FSR 1 e nitidez, precisão da GPU, orçamento de VRAM, cache de shaders, overlay e predefinições (Desempenho, Equilibrado, Qualidade, Fiel ao PS4) |
|
||||
| **Controles** | zona morta dos analógicos, velocidade da mira do grafite, mouse (câmera e modo touchpad), mapa do teclado e remapeamento |
|
||||
| **Correções** | BP01–BP12, chaves de diagnóstico (A/B) e opções do menu Insert; perfil Recomendado e "Como a release anterior" |
|
||||
| **Saves e dados** | pasta de dados, lista de saves, backups, exportar/importar `.zip`; veja [Saves e dados](#saves-e-dados) |
|
||||
| **Guias de controle** | imagens Xbox, Switch Pro e 8BitDo (português e inglês): salvar, copiar, abrir a pasta |
|
||||
| **Suporte** | problemas conhecidos para a sua GPU, links e o relatório de problema; veja [Logs e relatórios](#logs-e-relatórios) |
|
||||
| **Atualizações** | mostra a versão instalada e verifica a última release (veja abaixo) |
|
||||
|
||||
**Idioma da interface:** português (Brasil) ou inglês (EUA), que o launcher escolhe pelo idioma do sistema e dá para trocar. Quando você escolhe um, o launcher passa a escolha ao jogo (`ISS_UI_LANG`) para o overlay.
|
||||
|
||||
**Idioma do jogo:** a primeira opção é **Automático (idioma do sistema)**, o padrão, e depois vêm 6 idiomas: English (1), Português (Brasil) (17), Español (Latinoamérica) (20), Français (Canada) (22), Türkçe (19) e Русский (8). Português vira pt-BR, espanhol vira es-LA, francês vira fr-CA, turco e russo ficam como são, e o resto vira inglês. A escolha vale na próxima partida e vira `ISS_LANGUAGE` (um `ISS_LANGUAGE` definido por você vence). **Só funciona se os arquivos do seu jogo tiverem o idioma:** turco e russo, por exemplo, só aparecem se o seu dump tiver esses idiomas. É separado do idioma da interface.
|
||||
|
||||
**Atualizações:** a tela **Atualizações** faz uma única consulta HTTPS à última release no GitHub (nada seu é enviado), mostra as notas no idioma da interface e o botão **Baixar** só abre a página da release. **Ela não baixa nem instala nada: um atualizador automático de verdade ainda não existe.** "Verificar ao abrir" vem desligado.
|
||||
|
||||
**Rodar do código-fonte:** precisa de Python 3 com PySide6 (>= 6.7):
|
||||
|
||||
```bash
|
||||
python3 -m venv .venv-qt
|
||||
.venv-qt/bin/pip install -r port/launcher/qt/requirements.txt
|
||||
./infamous_launcher_qt.sh # o launcher antigo: ./infamous_launcher.sh
|
||||
```
|
||||
|
||||
No Windows: `py -m venv .venv-qt`, `.venv-qt\Scripts\pip install -r port\launcher\qt\requirements.txt` e `.venv-qt\Scripts\python port\launcher\infamous_launcher_qt.py`. Sem o PySide6 o ponto de entrada diz como instalar. O pacote já leva tudo congelado, sem Python.
|
||||
|
||||
**Autoteste:** `"inFAMOUS Second Son" --selftest` abre o launcher fora da tela, confere QML, fontes, ícone e traduções, visita todas as telas e imprime `selftest ok` (não lê suas configurações nem saves e não inicia o jogo). O CI roda isso em cada pacote. Detalhes: [`docs/LAUNCHER_QT.md`](docs/LAUNCHER_QT.md) e [`docs/QT_PACKAGING.md`](docs/QT_PACKAGING.md).
|
||||
|
||||
## Correções experimentais
|
||||
|
||||
A tela **Correções** do launcher (e o botão **Correções experimentais…** do launcher Tk) liga e desliga, uma a uma, as 12 correções `BP01` a `BP12`, trazidas de outros ports de PS4 e do shadPS4. Cada uma tem a chave `ISS_BPnn` (ou `TLG_BPnn`) e a linha `bpnn` no `tlg.ini`; sem mexer em nada valem os padrões, que formam o perfil **Recomendado**. "No jogo" quer dizer que também muda pelo menu Insert, na hora; "reinicia" vale na próxima partida (as que mudam shader recompilam os shaders na primeira partida, e a imagem pode piscar ou ficar verde por um tempo).
|
||||
|
||||
| Id | O que faz | Origem | Padrão | Vale |
|
||||
|---|---|---|---|---|
|
||||
| BP01 | libera os buffers de comando aninhados | shadPS4 #5258 | ligado | no jogo |
|
||||
| BP02 | busca de texturas mais rápida (só a primeira página) | shadPS4 #5240 | ligado | no jogo |
|
||||
| BP03 | mantém o EXEC depois de um desvio divergente vazio | shadPS4 c34ca21f | ligado | reinicia, recompila shaders |
|
||||
| BP04 | recíproco/raiz/log sem clamp, como o hardware | shadPS4 #5346 | ligado | reinicia, recompila shaders |
|
||||
| BP05 | saturate trata NaN como a GPU (vira 0) | shadPS4 #5257 | ligado | reinicia, recompila shaders |
|
||||
| BP06 | reconvergência máxima nos shaders de compute | port nativo de Shadow of the Colossus | **desligado** (experimental) | reinicia, recompila shaders |
|
||||
| BP07 | compilação assíncrona sem pular draws pequenos ou indiretos | bbport (bloodborne_pc) | **desligado** (experimental) | no jogo |
|
||||
| BP08 | guarda o cache de pipelines do driver entre partidas | Mrsuss, 0xCydral (bloodborne_pc) | **desligado** (experimental) | reinicia |
|
||||
| BP09 | toda imagem 1D vira 2D de altura 1 | CTR | **desligado** (experimental) | reinicia, recompila shaders |
|
||||
| BP10 | barreiras para buffers de vértice, índice e indiretos | shadPS4 #5262 | ligado | no jogo |
|
||||
| BP11 | `firstInstance` contado uma vez nos draws indiretos | shadPS4 #5348 | ligado | reinicia, recompila shaders |
|
||||
| BP12 | `EarlyFragmentTests` quando o jogo pede depth antes do shader | shadPS4 #5264 | ligado | reinicia, recompila shaders |
|
||||
|
||||
- **Como a release anterior:** `TLG_BACKPORTS=0` (ou o botão do launcher) desliga todas as BP que vêm ligadas, para comparar com a versão sem elas; um `TLG_BPnn` individual ainda vence. Na primeira abertura depois de atualizar, uma mensagem única explica isso. Se uma cena piorar, teste primeiro assim e depois ligue uma a uma.
|
||||
- **Voltar ao recomendado** apaga todas as suas escolhas. Só o que difere do padrão é gravado.
|
||||
- **Chaves de diagnóstico (A/B):** `ISS_WQM`, `ISS_LDS_SMALL`, `ISS_LDS_MULTI`, `ISS_LDS_READLANE`, `ISS_LANE_DIVERGENCE`, `ISS_RFL_ALL`, `ISS_BLOCK1D`, `ISS_BC_TINY`, `ISS_NO_MSAA`, `ISS_BACKGROUND_WARMUP`, `ISS_PIPELINE_BINARIES` (ainda derruba o jogo no driver NVIDIA 595) e o seletor de oclusão (`ISS_OCCLUSION_MODE`); `0` desliga, `1` liga. Servem para descobrir qual mudança causa um problema.
|
||||
- O BP08 (cache de pipelines do driver em disco) é experimental e vem desligado; o cache de pipelines em disco "de verdade" contra os engasgos ainda está no [roadmap](docs/ROADMAP.md).
|
||||
- Tabela completa, com as chaves do `tlg.ini` e as opções do menu Insert: [`docs/EXPERIMENTAL_FIXES.md`](docs/EXPERIMENTAL_FIXES.md).
|
||||
|
||||
## Luzes e oclusão
|
||||
|
||||
Os faróis piscavam e o brilho das luzes aparecia **através** dos personagens. A causa: o contador de oclusão (`ZPASS_DONE`) que o jogo lê para saber quanto de cada luz está visível era um número falso, que só crescia. Com o modo **3** (contagem zero, o padrão desta versão) o problema **foi corrigido, confirmado no Windows e no Linux**.
|
||||
|
||||
| `ISS_OCCLUSION_MODE` | Efeito |
|
||||
|---|---|
|
||||
| `0` | comportamento antigo (contador falso; o brilho pode atravessar) |
|
||||
| `1` | teste: as luzes contam como tapadas |
|
||||
| `2` | teste: as luzes contam como totalmente visíveis |
|
||||
| `3` | contagem zero: **padrão** |
|
||||
|
||||
O seletor **Brilho das luzes (oclusão)** está na tela **Jogar** do launcher (e entre as chaves de diagnóstico); a variável também aceita o prefixo `TLG_`. **Risco:** em algumas cenas o brilho das luzes pode ficar mais fraco com o modo 3; se isso incomodar, use o modo 0. Esta é uma solução por aproximação; a oclusão real, medida pelo Vulkan, ainda não existe (veja o [roadmap](docs/ROADMAP.md)). Se você achar uma cena pior, mande o log e uma captura de cada modo.
|
||||
|
||||
## Mouse
|
||||
|
||||
@@ -157,16 +239,47 @@ O dedo começa no meio do touchpad e fica onde você o deixou. Os atalhos do tec
|
||||
| `ISS_KEY_MAP` | — | remapeia teclas e mouse: `"r2=Mouse Left\|F,l2=Mouse Right\|R,r1=Mouse X2,l1=Wheel Down"`; vários por botão com `\|`, `none` tira todos |
|
||||
| `ISS_MOUSE_LOG` | `0` | `1` mostra no log o que o jogo recebe do mouse |
|
||||
|
||||
O menu Insert, aba **Controle**, tem os ajustes da câmera do mouse.
|
||||
O menu Insert, aba **Controle**, tem os ajustes da câmera do mouse, e a tela **Controles** do launcher tem os mesmos ajustes, o modo touchpad e o mapa do teclado. **O mouse é novo e ainda foi pouco testado em jogo por outros jogadores**: se algo se comportar mal, `ISS_MOUSE=0` o desliga e o relato ajuda.
|
||||
|
||||
### Onde ficam seus saves e como atualizar sem perdê-los
|
||||
**Teclado (mapa padrão):** funciona com ou sem controle (as teclas somam aos botões do controle).
|
||||
|
||||
Por padrão os saves e configurações ficam em `user/`, ao lado do jogo. **A atualização não apaga nada**, mas se você extrair o zip novo em outra pasta (ou apagar a antiga), o jogo abre sem saves: eles continuam na pasta antiga, em `user/savedata`. Para nunca mais passar por isso, abra o launcher Qt, vá em **Saves e dados** e escolha uma pasta fixa fora do jogo (sugestão: `Documentos\inFAMOUS-PC` no Windows, `~/.local/share/infamous-pc` no Linux); o launcher copia seus saves para lá e guarda a escolha num arquivo do seu usuário (`%APPDATA%\inFAMOUS-PC\launcher.json` / `~/.config/infamous-pc/launcher.json`), que sobrevive a reinstalações. A mesma tela acha saves de outras pastas do port, importa e exporta `.zip`, e faz backups (também antes de cada partida). Variável `ISS_USER_DIR` tem prioridade sobre tudo.
|
||||
| Tecla | Botão do PS4 | Tecla | Botão do PS4 |
|
||||
|---|---|---|---|
|
||||
| W / S (A / D) | analógico esquerdo | setas | analógico direito |
|
||||
| Espaço | X | Shift esquerdo | O (círculo) |
|
||||
| E | quadrado | Q | triângulo |
|
||||
| 1 | L1 | 3 | R1 |
|
||||
| R | L2 | F | R2 |
|
||||
| Z | L3 | C | R3 |
|
||||
| Enter | Options | Tab / Backspace | clique do touchpad (esquerdo / direito) |
|
||||
| I / K / J / L | direcional (cima / baixo / esquerda / direita) | T / G / Y | modo sensor simulado (veja abaixo) |
|
||||
|
||||
**Remapear:** `ISS_KEY_MAP` (ou o campo avançado da tela **Controles**) troca teclas e botões do mouse: `"cross=Q,r2=Mouse Left|F"`. Os botões são `cross`, `circle`, `square`, `triangle`, `l1`, `r1`, `l2`, `r2`, `l3`, `r3`, `options`, `up`, `down`, `left`, `right`, `touchpad_left`, `touchpad_right`.
|
||||
|
||||
## Saves e dados
|
||||
|
||||
Por padrão os saves e as configurações ficam em `user/`, ao lado do jogo. **A atualização não apaga nada** (o zip não traz `user/`), mas se você extrair o zip novo em **outra pasta**, ou apagar a pasta antiga, o jogo abre sem saves: eles continuam na pasta antiga, em `user/savedata`. É por isso que parece que "a atualização apagou o save".
|
||||
|
||||
**Receita para atualizar sem perder saves:**
|
||||
1. Abra o launcher, vá em **Saves e dados** e clique em **Fazer backup agora** (e, se quiser, **exportar tudo** para um `.zip`).
|
||||
2. Escolha uma pasta de dados fixa fora do jogo (sugestão: `Documentos\inFAMOUS-PC` no Windows, `~/.local/share/infamous-pc` no Linux). O launcher pergunta se copia seus saves e configurações para lá (copia, nunca move).
|
||||
3. Baixe e extraia a versão nova onde quiser: ela encontra os saves pela escolha, que fica num arquivo do seu usuário e sobrevive a reinstalações.
|
||||
4. Se você já extraiu a versão nova e o save sumiu, a tela acha as outras instalações (Downloads, Área de Trabalho, Documentos, pastas vizinhas...) e oferece **Importar**.
|
||||
|
||||
**Onde fica a pasta de dados**, nesta ordem: a variável `ISS_USER_DIR`; o arquivo-ponteiro do usuário (`%APPDATA%\inFAMOUS-PC\launcher.json` no Windows, `~/.config/infamous-pc/launcher.json` no Linux); e, sem nenhum dos dois, `user/` ao lado do jogo (modo portátil). A mesma pasta guarda `tlg.ini`, saves, backups e o cache de shaders.
|
||||
|
||||
**Na tela Saves e dados:** um cartão por slot (título, capítulo, karma, data, tamanho e a miniatura do próprio save) com exportar `.zip`, duplicar e excluir; importar `.zip`; backups com **Restaurar**, manter os últimos N (padrão 10) e uma pasta extra de backup (outro disco). **Um backup é feito antes de cada partida** (pulado se nada mudou). Toda operação que escreve num save exige o jogo fechado e faz um backup de segurança antes; um `.zip` inválido ou perigoso (caminhos com `..`, absolutos, links) é recusado sem escrever nada.
|
||||
|
||||
## Sensor de movimento e touchpad
|
||||
|
||||
O jogo pede o sensor de movimento e o touchpad em várias cenas: grafite, absorver poderes (fumaça, neon...), abrir portas e outras interações. No **DualShock 4 e no DualSense** o giroscópio e o touchpad funcionam direto, sem ligar nada. Nos outros controles e no teclado, o port simula os dois.
|
||||
|
||||
**Guias de controle** (as mesmas imagens estão na tela **Guias de controle** do launcher, com botões para salvar e copiar):
|
||||
|
||||
| Xbox / Xbox Series | Nintendo Switch Pro | 8BitDo |
|
||||
|---|---|---|
|
||||
|  |  |  |
|
||||
|
||||
**Modo sensor (ligar e desligar):**
|
||||
- **Um toque em L3+R3 juntos** liga o modo sensor; outro toque desliga. Funciona em qualquer controle. Também serve o botão extra do controle: **Share** no Xbox Series, **Capture** no Switch Pro e **microfone** no DualSense. No DualShock 4 e no DualSense, o Share/Create **não** liga o modo sensor: ele é o clique do touchpad.
|
||||
- Um aviso na tela confirma: "Modo sensor LIGADO (lata de spray): X sacode, R2 pinta, analógico esquerdo mira" ou "Modo sensor desligado".
|
||||
@@ -203,12 +316,34 @@ O jogo pede o sensor de movimento e o touchpad em várias cenas: grafite, absorv
|
||||
|
||||
**Placas AMD no Windows (RX 580): texturas BC minúsculas.** O driver da AMD no Windows (`amdvlk64.dll`) quebra logo depois dos logos (`Fault: write access to 0 at amdvlk64.dll+0xebbbb`, #16/#31/#49) na primeira textura comprimida BC 1D do jogo (512x1), seja ela criada 1D ou 2D. No driver da AMD o port decodifica na CPU as texturas BC1–BC5 que são 1D ou menores que um bloco de 4x4 e manda ao driver imagens comuns (RGBA8, R8 ou RG8, mantendo sRGB e snorm); o log mostra `GPU: tiny block-compressed textures ...` dizendo o modo. `ISS_BC_TINY=0` desliga e `ISS_BC_TINY=1` liga em qualquer placa (teste).
|
||||
|
||||
## Logs e relatórios
|
||||
|
||||
Cada partida grava um log em `out/logs/run-AAAAMMDD-HHMMSS.log` (os mais recentes ficam; `out/last_run.log` aponta para o último). O log começa com a linha `Build:` e um bloco **`Config:`** com as chaves do seu `tlg.ini` e as variáveis `TLG_`/`ISS_` definidas (valores que parecem caminhos ficam de fora), e traz as linhas `Backports:` (cada BP com o estado ligado/desligado e o modo de oclusão) e, junto das estatísticas de quadros, `Backport hits (total): ...` (quantas vezes cada correção realmente rodou). Com isso um relato diz quais correções estavam ligadas.
|
||||
|
||||
**Como reportar um problema:** abra a tela **Suporte** do launcher e use **Relatar um problema**: ela coleta GPU, driver, VRAM, sistema, CPU, versão do port e do jogo, deixa escolher o log, **tira dos textos os caminhos pessoais** (nome de usuário e pasta) e oferece **Copiar relatório**, **Salvar .zip** (relatório e log sem caminhos) e **Abrir issue no GitHub**. Nada é enviado sem o seu clique. Para reportar à mão, anexe o log em uma [issue](https://github.com/HayatoG/iss_pc/issues) ou mande no [Discord](https://discord.gg/UMkdMYZh9g).
|
||||
|
||||
**Log grande:** o GitHub recusa arquivos grandes. Compacte o log em `.zip` (a tela Suporte já faz isso) antes de anexar.
|
||||
|
||||
## Problemas conhecidos
|
||||
|
||||
A tela **Suporte** do launcher mostra os que casam com a sua GPU (uma tabela local, sem consulta à internet). Os conhecidos hoje:
|
||||
|
||||
| Situação | O que acontece | O que fazer |
|
||||
|---|---|---|
|
||||
| **AMD RX 580 / Polaris no Windows** (#31, #49, #59, #65, #67, #81) | crash logo depois dos logos em `amdvlk64.dll+0xebbbb` | **causa ainda em investigação.** Atualize o driver da AMD e teste `ISS_BP09=1` (BP09, imagens 1D como 2D); mande o log |
|
||||
| **GPU com 4 GB de VRAM** (#72, #75) | a memória de textura estoura; FPS muito baixo | baixe a resolução (tela Gráficos) e mantenha o orçamento de VRAM abaixo da memória da placa. Atenção: **"Precisão da GPU: Rápido" escurece a imagem** |
|
||||
| **NVIDIA Quadro / Maxwell** (#70) | pode estar abaixo do mínimo do port; tela preta ou jogo que não abre | conte o que você viu; ainda sem solução |
|
||||
| **CPU sem SSE4A ou F16C** (Intel, Sandy Bridge...) | o port emula essas instruções na partida | é automático; veja [Processadores Intel](#sensor-de-movimento-e-touchpad) |
|
||||
| **Versão do jogo** | testado com **CUSA00223 1.00 + 1.07**; o CUSA00004 também inicia | use o CUSA00223 com o update 1.07 |
|
||||
|
||||
Placas NVIDIA RTX 30 no Windows já relataram luzes e fumaça piscando; use o perfil Recomendado e jogue duas partidas seguidas (a primeira recompila os shaders). Para os demais problemas abertos, veja as [issues](https://github.com/HayatoG/iss_pc/issues).
|
||||
|
||||
## Compilar do código-fonte
|
||||
|
||||
```bash
|
||||
git clone --recursive https://github.com/HayatoG/iss_pc.git && cd iss_pc
|
||||
cd port && ISS_LTO=OFF bash build.sh # Linux: SDL3, Vulkan, FFmpeg, FreeType, Boost, fmt, Zydis, glslang
|
||||
cd .. && ./infamous_launcher.sh # ou ./run_infamous.sh pelo terminal
|
||||
cd .. && ./infamous_launcher_qt.sh # launcher Qt (precisa do PySide6); ./infamous_launcher.sh é o Tk; ./run_infamous.sh pelo terminal
|
||||
```
|
||||
|
||||
No Windows, o build roda no MSYS2 CLANG64 ([`port/packaging/windows/README.md`](port/packaging/windows/README.md)). O workflow [`.github/workflows/build.yml`](.github/workflows/build.yml) mostra o processo completo nas duas plataformas.
|
||||
@@ -223,12 +358,19 @@ No Windows, o build roda no MSYS2 CLANG64 ([`port/packaging/windows/README.md`](
|
||||
|
||||
## Próximos passos
|
||||
|
||||
O que falta está em [`docs/ROADMAP.md`](docs/ROADMAP.md): desempenho (esperas por leituras da GPU), cache de pipelines em disco contra os engasgos, os efeitos que piscam, o brilho do dreno de drones e os idiomas do jogo no launcher.
|
||||
O que falta está em [`docs/ROADMAP.md`](docs/ROADMAP.md): desempenho (esperas por leituras da GPU), cache de pipelines em disco contra os engasgos (o BP08 é só o primeiro passo), oclusão real pelo Vulkan, os efeitos de névoa, água e fogo que ainda piscam, o brilho do dreno de drones, o crash da RX 580 no Windows, um atualizador automático e a validação do mouse.
|
||||
|
||||
## Créditos e aviso legal
|
||||
|
||||
Base de código: [tlg_pc](https://github.com/HayatoG/tlg_pc), [gr2_pc](https://github.com/HayatoG/gr2_pc), [gow3_pc](https://github.com/FelipePrado0/gow3_pc) (FelipePrado0), [bloodborne_pc](https://github.com/deadinside28/bloodborne_pc) e [shadPS4](https://github.com/shadps4-emu/shadPS4) o fork [shadPS4-Infamous-FixBuild](https://github.com/rayhlancaner-png/shadPS4-Infamous-FixBuild) (Eye Of The Ruins/rayhlancaner-png, TOXIC-KID, 0xDeftones) e o port nativo [ShadowOfTheColossus-PC](https://github.com/AjncSystem/ShadowOfTheColossus-PC) (AjncSystem; com partes do Pink-shadPS4 de luizgustavs), todos GPL-2.0, assim como este projeto ([LICENSE](port/LICENSE)). Áudio ATRAC9 via [LibAtrac9](https://github.com/Thealexbarney/LibAtrac9); fontes via [FreeType](https://freetype.org).
|
||||
|
||||
**Origem das correções experimentais (BP01–BP12):** as correções do tradutor de shaders e do vídeo vêm do [shadPS4](https://github.com/shadps4-emu/shadPS4) (BP01–BP05, BP10–BP12), do port nativo de [Shadow of the Colossus](https://github.com/AjncSystem/ShadowOfTheColossus-PC) (BP06), do bbport, o [bloodborne_pc](https://github.com/deadinside28/bloodborne_pc) (BP07), do [bloodborne_pc_windows_port](https://github.com/Mrsuss60/bloodborne_pc_windows_port) de Mrsuss e do [bloodborne_pc](https://github.com/0xCydral/bloodborne_pc) de 0xCydral (BP08) e do CTR ([T3CHNOLOG1C/CTR](https://github.com/T3CHNOLOG1C/CTR)) (BP09). Os commits exatos estão em [`docs/EXPERIMENTAL_FIXES.md`](docs/EXPERIMENTAL_FIXES.md) e em `port/gpu/VENDOR.txt`. Fontes do launcher: Big Shoulders Stencil Display e Barlow (licença OFL, em `port/launcher/qt/fonts/`).
|
||||
|
||||
### Agradecimentos
|
||||
|
||||
- **Kazu**, pelos logs, capturas de tela e testes, no Windows e no Linux, que levaram à correção dos faróis que piscavam e do brilho que atravessava os personagens (o modo de oclusão 3).
|
||||
- Aos jogadores que reportaram problemas nas [issues](https://github.com/HayatoG/iss_pc/issues), com logs que mudaram o rumo do port: jacckkss (#50, luzes e fumaça piscando), heyzerr (#51, #65, #67, CPUs sem F16C e RX 580), Andrade2244 (#29), MrRobot11214 (#31), fghacksr (#49), AngelHomura (#59) e aledieb93-svg (#81) (crashes na RX 580 e no Windows), ViniSnapeS (#72) e kudetgaming-art (#75) (memória de vídeo), summer882 (#71), manymanyyyd-afk (#63) e Kpopping (#73) (idiomas turco e russo), mahmoudmahran2112-crypto (#70, Quadro/Maxwell), Milicksp (#16), gsev3333 (#41) e todos os outros que abriram uma issue ou testaram uma versão.
|
||||
|
||||
Este projeto não tem vínculo com a Sony Interactive Entertainment ou a Sucker Punch Productions. inFAMOUS é marca da Sony Interactive Entertainment. Nenhum código, arquivo ou arte do jogo é distribuído aqui. O ícone é uma arte original do projeto.
|
||||
|
||||
---
|
||||
@@ -249,6 +391,12 @@ The screenshots are at the top of this page.
|
||||
|
||||
## What's new
|
||||
|
||||
- **New launcher (Qt Quick), now the default:** 8 screens (Play, Graphics, Controls, Fixes, Saves & data, Controller guides, Support, Updates), the interface in Portuguese and English, and the game language following the system's by default. The old launcher (Tk) stays in the package as **inFAMOUS Second Son (classic)**, as a fallback. See [The launcher](#the-launcher).
|
||||
- **Saves and data:** a configurable data folder, a backup before every play session, `.zip` export/import, duplicate and delete saves, and a search for saves from other installs. It fixes the "I lost my save after updating" problem. See [Saves and data](#saves-and-data).
|
||||
- **Flickering headlights and glare that showed through characters: fixed.** The occlusion counter the game reads to know how much of a light is visible was a fake; the new mode 3 (the default) answers with zero counts, and that fixed the problem, **confirmed on Windows and on Linux**. See [Lights and occlusion](#lights-and-occlusion).
|
||||
- **Experimental fixes BP01–BP12:** twelve fixes brought from other PS4 ports and from shadPS4, each with its own switch, a Recommended profile and a "Like the previous release" button to compare. See [Experimental fixes](#experimental-fixes).
|
||||
- **More useful logs:** every log starts with a `Config:` block (your options, no paths) and shows the `Backports:` lines; the **Support** screen builds the report without personal data. See [Logs and reports](#logs-and-reports).
|
||||
- **Controller guides:** ready-made images (Xbox, Switch Pro and 8BitDo, in Portuguese and English) of sensor mode and the touchpad, in [Motion sensor and touchpad](#motion-sensor-and-touchpad) and in the launcher's **Controller guides** screen.
|
||||
- **CPUs without F16C (Sandy Bridge, #51):** the game's 13 half-precision conversions (`VCVTPH2PS`/`VCVTPS2PH`) are now emulated at start, bit-exact with the CPU (rounding, denormals, Inf and NaN). The game used to stop with "13 sites use encodings the rewrite cannot emulate".
|
||||
- **Mouse:** the mouse turns the camera (right stick) and also plays the **touchpad**. Left = R2, right = L2, middle = R3. **Hold Left Ctrl (or the X1 side button)** and the mouse becomes a finger on the touchpad: left touches/clicks (hold = absorb a power), dragging with the left slides (the "Open Door" swipe, the scanner), right = two fingers (lift the car off Reggie). The window captures the mouse; Esc releases it and a click captures it again. See [Mouse](#mouse-1).
|
||||
- **Graffiti steps on screen:** the first time sensor mode turns on, a screen in the middle shows the steps (shake, spray, aim, leave) with your controller's buttons; "Got it" closes it. The Insert menu has a new **Controls** tab that shows it again and sets the **graffiti aiming speed** (25–200%, also `ISS_SENSOR_AIM`).
|
||||
@@ -286,9 +434,14 @@ The screenshots are at the top of this page.
|
||||
| Controller | ✅ DualSense, DualShock 4, Xbox and 8BitDo via SDL3 |
|
||||
| Performance | 🔧 20–30 FPS typical on an RTX 2060, unstable; optimization ongoing |
|
||||
| Stutter | 🔧 The first time each shader is compiled (cutscenes and new areas) |
|
||||
| Graphics | 🔧 Some fog, water and light effects flicker |
|
||||
| Lights (flickering headlights, glare showing through characters) | ✅ Fixed by occlusion mode 3 (default), confirmed on Windows and on Linux; if light glare looks weak, use mode 0 |
|
||||
| Graphics | 🔧 Some fog, water and fire effects still flicker |
|
||||
| Launcher | ✅ Qt Quick (default) with the Tk one as a fallback; Portuguese and English |
|
||||
| Saves and data | ✅ Configurable folder, backup, export/import |
|
||||
| Mouse (camera and touchpad) | 🧪 Implemented, not yet tested much in game |
|
||||
| Experimental fixes (BP01–BP12) | 🧪 The ones on by default come in the Recommended profile; BP06–BP09 (off) are experimental |
|
||||
| Linux | ✅ Tested (Nobara/Fedora 44) |
|
||||
| Windows | 🧪 Automatic build, not yet tested in game |
|
||||
| Windows | 🧪 Tested by players (the lights fix was confirmed); known crash on RX 580/Polaris, see [Known problems](#known-problems) |
|
||||
|
||||

|
||||
|
||||
@@ -299,7 +452,9 @@ The screenshots are at the top of this page.
|
||||
The [**latest release**](https://github.com/HayatoG/iss_pc/releases/latest) is built by GitHub Actions on every change; older ones stay under [Releases](https://github.com/HayatoG/iss_pc/releases) as history:
|
||||
|
||||
- **Linux x86-64** (glibc 2.39+: Ubuntu 24.04, Fedora 40, SteamOS 3.6 or newer): `infamous-linux-x86_64.tar.gz`
|
||||
- **Windows 10/11 64-bit**: `infamous-windows-x86_64.zip`
|
||||
- **Windows 10 (1903 or newer) / 11, 64-bit**: `infamous-windows-x86_64.zip`
|
||||
|
||||
The packages open the Qt launcher by default; it adds about 55 MB to the download (measured on Linux; an estimate on Windows). If the new launcher does not open on your machine, use **inFAMOUS Second Son (classic)**, in the same folder.
|
||||
|
||||
## Required game files
|
||||
|
||||
@@ -317,18 +472,87 @@ Everything comes from **your own** PS4 (GoldHEN + Itemzflow). None of it is in t
|
||||
|
||||
The full list and the step-by-step guide, which also go in the notes of every Release, are in [`docs/ARQUIVOS_NECESSARIOS.md`](docs/ARQUIVOS_NECESSARIOS.md).
|
||||
|
||||
**PC:** a graphics card with Vulkan 1.3 (6 GB of VRAM recommended) and ~33 GB free.
|
||||
**PC:** 64-bit Windows 10 (1903+)/11 or x86-64 Linux (glibc 2.39+), a graphics card with Vulkan 1.3 (6 GB of VRAM recommended) and ~33 GB free.
|
||||
|
||||
## How to play
|
||||
|
||||
1. Extract the package.
|
||||
2. Open **inFAMOUS Second Son**, pick the game folder and the language, and click **Play**. If it stutters too much, the "GPU accuracy" option has a fast mode (without GPU particles).
|
||||
2. Open **inFAMOUS Second Son** (on Windows, if "Windows protected your PC" appears, click *More info*, then *Run anyway*: the program is not digitally signed). Pick the game folder and click **Play**. The game language follows your system by default; you can change it on the same screen. If it stutters too much, the "GPU accuracy" option (**Graphics** screen) has a fast mode (without GPU particles).
|
||||
3. In game, **F10** toggles the FPS counter, and **Insert** (or R3 + L2 on a controller) opens the port's menu.
|
||||
4. When the game asks you to turn or shake the controller and yours has no sensor: tap L3+R3 (or Share on an Xbox Series). The controller is then on its side; cross/A shakes, R2 sprays and the left stick aims. Tap again to leave. On the keyboard: T/G (with the arrow keys to aim) and Y. See [Motion sensor and touchpad](#motion-sensor-and-touchpad).
|
||||
|
||||
The full guide is in [`README-player.md`](port/packaging/README-player.md), which also ships inside the package.
|
||||
|
||||
**Experimental fixes:** the launcher's **Experimental fixes…** button turns the 12 fixes `TLG_BP01` to `TLG_BP12` (from other PS4 ports and shadPS4), the diagnostic switches (`TLG_WQM`, `TLG_LDS_*`, `TLG_BC_TINY`...) and the Insert menu options on and off, tagged "in game" or "restarts the game". Untouched, the defaults hold. Full list: [`docs/EXPERIMENTAL_FIXES.md`](docs/EXPERIMENTAL_FIXES.md).
|
||||
## The launcher
|
||||
|
||||
The launcher is the program that opens when you run **inFAMOUS Second Son**. The new one (Qt Quick) is the default; the old one (Tk) sits next to it as **inFAMOUS Second Son (classic)**, in case the new one does not open. Both use the same settings and the same saves, and accept `--play`, `--script` and `--clear-shader-cache`.
|
||||
|
||||
| Screen | What it is for |
|
||||
|---|---|
|
||||
| **Play** | game folder, game language, detected GPU and version, fixes profile, the occlusion (lights) selector, the Continue/Play button |
|
||||
| **Graphics** | window mode, VSync, FPS limit, FSR 1 and sharpening, GPU accuracy, VRAM budget, shader cache, overlay and presets (Performance, Balanced, Quality, Faithful to PS4) |
|
||||
| **Controls** | stick dead zone, graffiti aiming speed, mouse (camera and touchpad mode), keyboard map and remapping |
|
||||
| **Fixes** | BP01–BP12, diagnostic (A/B) switches and Insert menu options; Recommended profile and "Like the previous release" |
|
||||
| **Saves & data** | data folder, list of saves, backups, `.zip` export/import; see [Saves and data](#saves-and-data) |
|
||||
| **Controller guides** | Xbox, Switch Pro and 8BitDo images (Portuguese and English): save, copy, open the folder |
|
||||
| **Support** | known problems for your GPU, links and the problem report; see [Logs and reports](#logs-and-reports) |
|
||||
| **Updates** | shows the installed version and checks the latest release (see below) |
|
||||
|
||||
**Interface language:** Portuguese (Brazil) or English (US), which the launcher picks from the system language and you can change. When you pick one, the launcher passes it to the game (`ISS_UI_LANG`) for the overlay.
|
||||
|
||||
**Game language:** the first option is **Automatic (system language)**, the default, followed by 6 languages: English (1), Português (Brasil) (17), Español (Latinoamérica) (20), Français (Canada) (22), Türkçe (19) and Русский (8). Portuguese becomes pt-BR, Spanish becomes es-LA, French becomes fr-CA, Turkish and Russian stay as they are, and anything else becomes English. The choice applies on the next start and becomes `ISS_LANGUAGE` (an `ISS_LANGUAGE` you set yourself wins). **It only works if your game files have that language:** Turkish and Russian, for example, only show up if your dump has them. It is separate from the interface language.
|
||||
|
||||
**Updates:** the **Updates** screen makes a single HTTPS query for the latest release on GitHub (nothing of yours is sent), shows the notes in the interface language, and the **Download** button only opens the release page. **It does not download or install anything: a real automatic updater does not exist yet.** "Check on open" is off by default.
|
||||
|
||||
**Running from source:** needs Python 3 with PySide6 (>= 6.7):
|
||||
|
||||
```bash
|
||||
python3 -m venv .venv-qt
|
||||
.venv-qt/bin/pip install -r port/launcher/qt/requirements.txt
|
||||
./infamous_launcher_qt.sh # the old launcher: ./infamous_launcher.sh
|
||||
```
|
||||
|
||||
On Windows: `py -m venv .venv-qt`, `.venv-qt\Scripts\pip install -r port\launcher\qt\requirements.txt` and `.venv-qt\Scripts\python port\launcher\infamous_launcher_qt.py`. Without PySide6 the entry point says how to install it. The package already ships everything frozen, no Python needed.
|
||||
|
||||
**Self-test:** `"inFAMOUS Second Son" --selftest` opens the launcher off screen, checks QML, fonts, icon and translations, visits every screen and prints `selftest ok` (it does not read your settings or saves and does not start the game). The CI runs it on every package. Details: [`docs/LAUNCHER_QT.md`](docs/LAUNCHER_QT.md) and [`docs/QT_PACKAGING.md`](docs/QT_PACKAGING.md).
|
||||
|
||||
## Experimental fixes
|
||||
|
||||
The launcher's **Fixes** screen (and the **Experimental fixes…** button of the Tk launcher) turns the 12 fixes `BP01` to `BP12`, brought from other PS4 ports and from shadPS4, on and off one by one. Each has the `ISS_BPnn` (or `TLG_BPnn`) switch and a `bpnn` line in `tlg.ini`; if you touch nothing the defaults hold, and they make up the **Recommended** profile. "In game" means it can also be changed from the Insert menu, on the spot; "restarts" applies on the next start (the ones that change shaders recompile the shaders on the first game, and the image may flicker or look green for a while).
|
||||
|
||||
| Id | What it does | Source | Default | Applies |
|
||||
|---|---|---|---|---|
|
||||
| BP01 | frees the frame of nested command buffers | shadPS4 #5258 | on | in game |
|
||||
| BP02 | faster texture lookup (first page only) | shadPS4 #5240 | on | in game |
|
||||
| BP03 | keeps EXEC after an empty divergent branch | shadPS4 c34ca21f | on | restarts, recompiles shaders |
|
||||
| BP04 | reciprocal/root/log without clamp, like the hardware | shadPS4 #5346 | on | restarts, recompiles shaders |
|
||||
| BP05 | saturate treats NaN like the GPU (becomes 0) | shadPS4 #5257 | on | restarts, recompiles shaders |
|
||||
| BP06 | maximal reconvergence in compute shaders | native Shadow of the Colossus port | **off** (experimental) | restarts, recompiles shaders |
|
||||
| BP07 | async compile never skips small or indirect draws | bbport (bloodborne_pc) | **off** (experimental) | in game |
|
||||
| BP08 | keeps the driver pipeline cache between sessions | Mrsuss, 0xCydral (bloodborne_pc) | **off** (experimental) | restarts |
|
||||
| BP09 | every 1D image becomes 2D with height 1 | CTR | **off** (experimental) | restarts, recompiles shaders |
|
||||
| BP10 | barriers for vertex, index and indirect buffers | shadPS4 #5262 | on | in game |
|
||||
| BP11 | `firstInstance` counted once in indirect draws | shadPS4 #5348 | on | restarts, recompiles shaders |
|
||||
| BP12 | `EarlyFragmentTests` when the game asks for depth before the shader | shadPS4 #5264 | on | restarts, recompiles shaders |
|
||||
|
||||
- **Like the previous release:** `TLG_BACKPORTS=0` (or the launcher button) turns off every BP that is on by default, to compare with the version without them; an individual `TLG_BPnn` still wins. On the first start after updating, a one-time message explains this. If a scene gets worse, test this way first, then turn them back on one by one.
|
||||
- **Back to recommended** clears all your choices. Only what differs from the default is written.
|
||||
- **Diagnostic (A/B) switches:** `ISS_WQM`, `ISS_LDS_SMALL`, `ISS_LDS_MULTI`, `ISS_LDS_READLANE`, `ISS_LANE_DIVERGENCE`, `ISS_RFL_ALL`, `ISS_BLOCK1D`, `ISS_BC_TINY`, `ISS_NO_MSAA`, `ISS_BACKGROUND_WARMUP`, `ISS_PIPELINE_BINARIES` (still crashes the game on the NVIDIA 595 driver) and the occlusion selector (`ISS_OCCLUSION_MODE`); `0` turns off, `1` turns on. They exist to find which change causes a problem.
|
||||
- BP08 (the on-disk driver pipeline cache) is experimental and off; a "real" on-disk pipeline cache against stutter is still on the [roadmap](docs/ROADMAP.md).
|
||||
- Full table, with the `tlg.ini` keys and the Insert menu options: [`docs/EXPERIMENTAL_FIXES.md`](docs/EXPERIMENTAL_FIXES.md).
|
||||
|
||||
## Lights and occlusion
|
||||
|
||||
Headlights flickered and the glare of lights showed up **through** characters. The cause: the occlusion counter (`ZPASS_DONE`) that the game reads to know how much of each light is visible was a fake number that only grew. With mode **3** (zero counts, the default of this version) the problem **was fixed, confirmed on Windows and on Linux**.
|
||||
|
||||
| `ISS_OCCLUSION_MODE` | Effect |
|
||||
|---|---|
|
||||
| `0` | old behavior (fake counter; glare may show through) |
|
||||
| `1` | test: lights count as hidden |
|
||||
| `2` | test: lights count as fully visible |
|
||||
| `3` | zero counts: **default** |
|
||||
|
||||
The **Light glare (occlusion)** selector is on the launcher's **Play** screen (and among the diagnostic switches); the variable also takes the `TLG_` prefix. **Risk:** in some scenes the glare of lights may look weaker with mode 3; if that bothers you, use mode 0. This is an approximation; real occlusion, measured through Vulkan, does not exist yet (see the [roadmap](docs/ROADMAP.md)). If you find a scene that looks worse, send the log and a screenshot of each mode.
|
||||
|
||||
## Mouse
|
||||
|
||||
@@ -376,16 +600,47 @@ The finger starts in the middle of the touchpad and stays where you leave it. Th
|
||||
| `ISS_KEY_MAP` | — | remaps keys and mouse: `"r2=Mouse Left\|F,l2=Mouse Right\|R,r1=Mouse X2,l1=Wheel Down"`; several per button with `\|`, `none` removes all |
|
||||
| `ISS_MOUSE_LOG` | `0` | `1` logs what the game gets from the mouse |
|
||||
|
||||
The Insert menu's **Controls** tab has the mouse camera settings.
|
||||
The Insert menu's **Controls** tab has the mouse camera settings, and the launcher's **Controls** screen has the same ones, the touchpad mode and the keyboard map. **The mouse is new and has not been tested much in game by other players yet**: if something misbehaves, `ISS_MOUSE=0` turns it off and a report helps.
|
||||
|
||||
### Where your saves live and how to update without losing them
|
||||
**Keyboard (default map):** works with or without a controller (the keys add to the controller's buttons).
|
||||
|
||||
By default saves and settings live in `user/`, next to the game. **Updating deletes nothing**, but if you extract the new zip somewhere else (or delete the old folder) the game opens without saves: they are still in the old folder, under `user/savedata`. To never go through that again, open the Qt launcher, go to **Saves & data** and pick a fixed folder outside the game (suggestion: `Documents\inFAMOUS-PC` on Windows, `~/.local/share/infamous-pc` on Linux); the launcher copies your saves there and keeps the choice in a per-user file (`%APPDATA%\inFAMOUS-PC\launcher.json` / `~/.config/infamous-pc/launcher.json`) that survives reinstalls. The same screen finds saves in other port folders, imports and exports `.zip`, and makes backups (also before every play session). The `ISS_USER_DIR` variable overrides everything.
|
||||
| Key | PS4 button | Key | PS4 button |
|
||||
|---|---|---|---|
|
||||
| W / S (A / D) | left stick | arrow keys | right stick |
|
||||
| Space | cross | Left Shift | circle |
|
||||
| E | square | Q | triangle |
|
||||
| 1 | L1 | 3 | R1 |
|
||||
| R | L2 | F | R2 |
|
||||
| Z | L3 | C | R3 |
|
||||
| Enter | Options | Tab / Backspace | touchpad click (left / right) |
|
||||
| I / K / J / L | d-pad (up / down / left / right) | T / G / Y | simulated sensor mode (see below) |
|
||||
|
||||
**Remapping:** `ISS_KEY_MAP` (or the advanced field of the launcher's **Controls** screen) changes keys and mouse buttons: `"cross=Q,r2=Mouse Left|F"`. The buttons are `cross`, `circle`, `square`, `triangle`, `l1`, `r1`, `l2`, `r2`, `l3`, `r3`, `options`, `up`, `down`, `left`, `right`, `touchpad_left`, `touchpad_right`.
|
||||
|
||||
## Saves and data
|
||||
|
||||
By default saves and settings live in `user/`, next to the game. **Updating deletes nothing** (the zip does not carry `user/`), but if you extract the new zip into **another folder**, or delete the old one, the game opens without saves: they are still in the old folder, under `user/savedata`. That is why it looks like "the update deleted my save".
|
||||
|
||||
**Recipe to update without losing saves:**
|
||||
1. Open the launcher, go to **Saves & data** and click **Back up now** (and, if you like, **export all** to a `.zip`).
|
||||
2. Pick a fixed data folder outside the game (suggestion: `Documents\inFAMOUS-PC` on Windows, `~/.local/share/infamous-pc` on Linux). The launcher asks whether to copy your saves and settings there (it copies, never moves).
|
||||
3. Download and extract the new version anywhere: it finds the saves through that choice, which is kept in a per-user file and survives reinstalls.
|
||||
4. If you already extracted the new version and the save is gone, the screen finds the other installs (Downloads, Desktop, Documents, neighbor folders...) and offers **Import**.
|
||||
|
||||
**Where the data folder is**, in this order: the `ISS_USER_DIR` variable; the per-user pointer file (`%APPDATA%\inFAMOUS-PC\launcher.json` on Windows, `~/.config/infamous-pc/launcher.json` on Linux); and, with neither, `user/` next to the game (portable mode). The same folder holds `tlg.ini`, saves, backups and the shader cache.
|
||||
|
||||
**On the Saves & data screen:** one card per slot (title, chapter, karma, date, size and the save's own thumbnail) with `.zip` export, duplicate and delete; `.zip` import; backups with **Restore**, keeping the last N (default 10) and an extra backup folder (another disk). **A backup is made before every play session** (skipped if nothing changed). Every operation that writes to a save needs the game closed and makes a safety backup first; an invalid or dangerous `.zip` (paths with `..`, absolute paths, links) is refused without writing anything.
|
||||
|
||||
## Motion sensor and touchpad
|
||||
|
||||
The game asks for the motion sensor and the touchpad in many scenes: graffiti, absorbing powers (smoke, neon...), opening doors and other interactions. On a **DualShock 4 or DualSense** the gyro and the touchpad work as is, with nothing to turn on. On other controllers and on the keyboard, the port simulates both.
|
||||
|
||||
**Controller guides** (the same images are on the launcher's **Controller guides** screen, with buttons to save and copy):
|
||||
|
||||
| Xbox / Xbox Series | Nintendo Switch Pro | 8BitDo |
|
||||
|---|---|---|
|
||||
|  |  |  |
|
||||
|
||||
**Sensor mode (turning it on and off):**
|
||||
- **One tap on L3+R3 together** turns sensor mode on; another tap turns it off. It works on any controller. The controller's extra button works too: **Share** on an Xbox Series, **Capture** on a Switch Pro and the **microphone** button on a DualSense. On a DualShock 4 or DualSense, Share/Create does **not** toggle sensor mode: it is the touchpad click.
|
||||
- A notice on screen confirms it: "Sensor mode ON (spray can): cross shakes, R2 sprays, left stick aims" or "Sensor mode off".
|
||||
@@ -422,12 +677,34 @@ The game asks for the motion sensor and the touchpad in many scenes: graffiti, a
|
||||
|
||||
**AMD cards on Windows (RX 580): tiny BC textures.** AMD's Windows driver (`amdvlk64.dll`) crashes right after the logos (`Fault: write access to 0 at amdvlk64.dll+0xebbbb`, #16/#31/#49) on the game's first BC-compressed 1D texture (512x1), whether it is created 1D or 2D. On AMD's driver the port decodes BC1–BC5 textures that are 1D or smaller than a 4x4 block on the CPU and gives the driver plain images (RGBA8, R8 or RG8, sRGB and snorm kept); the log line `GPU: tiny block-compressed textures ...` says which mode is on. `ISS_BC_TINY=0` turns it off and `ISS_BC_TINY=1` turns it on on any GPU (testing).
|
||||
|
||||
## Logs and reports
|
||||
|
||||
Every game writes a log to `out/logs/run-YYYYMMDD-HHMMSS.log` (the most recent ones are kept; `out/last_run.log` points to the latest). The log starts with the `Build:` line and a **`Config:`** block with the keys of your `tlg.ini` and the `TLG_`/`ISS_` variables that are set (values that look like paths are left out), and has the `Backports:` lines (each BP with its on/off state, and the occlusion mode) and, with the frame statistics, `Backport hits (total): ...` (how many times each fix actually ran). With that, a report says which fixes were on.
|
||||
|
||||
**How to report a problem:** open the launcher's **Support** screen and use **Report a problem**: it collects GPU, driver, VRAM, system, CPU, port and game versions, lets you pick the log, **strips personal paths from the text** (user name and folder) and offers **Copy report**, **Save .zip** (report and log without paths) and **Open issue on GitHub**. Nothing is sent without your click. To report by hand, attach the log to an [issue](https://github.com/HayatoG/iss_pc/issues) or send it on [Discord](https://discord.gg/UMkdMYZh9g).
|
||||
|
||||
**Big log:** GitHub refuses big files. Compress the log into a `.zip` (the Support screen already does) before attaching it.
|
||||
|
||||
## Known problems
|
||||
|
||||
The launcher's **Support** screen shows the ones that match your GPU (a local table, no internet query). The ones known today:
|
||||
|
||||
| Situation | What happens | What to do |
|
||||
|---|---|---|
|
||||
| **AMD RX 580 / Polaris on Windows** (#31, #49, #59, #65, #67, #81) | crash right after the logos in `amdvlk64.dll+0xebbbb` | **cause still under investigation.** Update the AMD driver and try `ISS_BP09=1` (BP09, 1D images as 2D); send the log |
|
||||
| **GPU with 4 GB of VRAM** (#72, #75) | texture memory runs out; very low FPS | lower the resolution (Graphics screen) and keep the VRAM budget below your card's memory. Note: **"GPU accuracy: Fast" darkens the image** |
|
||||
| **NVIDIA Quadro / Maxwell** (#70) | may be below the port's minimum; black screen or the game does not open | tell us what you saw; no fix yet |
|
||||
| **CPU without SSE4A or F16C** (Intel, Sandy Bridge...) | the port emulates those instructions at start | automatic; see [Intel CPUs](#motion-sensor-and-touchpad) |
|
||||
| **Game version** | tested with **CUSA00223 1.00 + 1.07**; CUSA00004 also boots | use CUSA00223 with the 1.07 update |
|
||||
|
||||
NVIDIA RTX 30 cards on Windows have reported flickering lights and smoke; use the Recommended profile and play two sessions in a row (the first one recompiles the shaders). For the other open problems, see the [issues](https://github.com/HayatoG/iss_pc/issues).
|
||||
|
||||
## Building from source
|
||||
|
||||
```bash
|
||||
git clone --recursive https://github.com/HayatoG/iss_pc.git && cd iss_pc
|
||||
cd port && ISS_LTO=OFF bash build.sh # Linux: SDL3, Vulkan, FFmpeg, FreeType, Boost, fmt, Zydis, glslang
|
||||
cd .. && ./infamous_launcher.sh # or ./run_infamous.sh from a terminal
|
||||
cd .. && ./infamous_launcher_qt.sh # Qt launcher (needs PySide6); ./infamous_launcher.sh is the Tk one; ./run_infamous.sh from a terminal
|
||||
```
|
||||
|
||||
On Windows, the build runs in MSYS2 CLANG64 ([`port/packaging/windows/README.md`](port/packaging/windows/README.md)). The workflow [`.github/workflows/build.yml`](.github/workflows/build.yml) shows the full process on both platforms.
|
||||
@@ -442,10 +719,17 @@ On Windows, the build runs in MSYS2 CLANG64 ([`port/packaging/windows/README.md`
|
||||
|
||||
## Next steps
|
||||
|
||||
What is left is in [`docs/ROADMAP.md`](docs/ROADMAP.md): performance (waits on GPU readbacks), an on-disk pipeline cache against the stutter, the flickering effects, the drone-drain glow and the game languages in the launcher.
|
||||
What is left is in [`docs/ROADMAP.md`](docs/ROADMAP.md): performance (waits on GPU readbacks), an on-disk pipeline cache against the stutter (BP08 is only the first step), real occlusion through Vulkan, the fog, water and fire effects that still flicker, the drone-drain glow, the RX 580 crash on Windows, an automatic updater and validating the mouse.
|
||||
|
||||
## Credits and legal notice
|
||||
|
||||
Code base: [tlg_pc](https://github.com/HayatoG/tlg_pc), [gr2_pc](https://github.com/HayatoG/gr2_pc), [gow3_pc](https://github.com/FelipePrado0/gow3_pc) (FelipePrado0), [bloodborne_pc](https://github.com/deadinside28/bloodborne_pc) and [shadPS4](https://github.com/shadps4-emu/shadPS4) the [shadPS4-Infamous-FixBuild](https://github.com/rayhlancaner-png/shadPS4-Infamous-FixBuild) fork (Eye Of The Ruins/rayhlancaner-png, TOXIC-KID, 0xDeftones) and the native [ShadowOfTheColossus-PC](https://github.com/AjncSystem/ShadowOfTheColossus-PC) port (AjncSystem; with parts of Pink-shadPS4 by luizgustavs), all GPL-2.0, as is this project ([LICENSE](port/LICENSE)). ATRAC9 audio via [LibAtrac9](https://github.com/Thealexbarney/LibAtrac9); fonts via [FreeType](https://freetype.org).
|
||||
|
||||
**Origin of the experimental fixes (BP01–BP12):** the recompiler and video fixes come from [shadPS4](https://github.com/shadps4-emu/shadPS4) (BP01–BP05, BP10–BP12), the native [Shadow of the Colossus](https://github.com/AjncSystem/ShadowOfTheColossus-PC) port (BP06), bbport, i.e. [bloodborne_pc](https://github.com/deadinside28/bloodborne_pc) (BP07), Mrsuss's [bloodborne_pc_windows_port](https://github.com/Mrsuss60/bloodborne_pc_windows_port) and 0xCydral's [bloodborne_pc](https://github.com/0xCydral/bloodborne_pc) (BP08) and CTR ([T3CHNOLOG1C/CTR](https://github.com/T3CHNOLOG1C/CTR)) (BP09). The exact commits are in [`docs/EXPERIMENTAL_FIXES.md`](docs/EXPERIMENTAL_FIXES.md) and `port/gpu/VENDOR.txt`. Launcher fonts: Big Shoulders Stencil Display and Barlow (OFL license, in `port/launcher/qt/fonts/`).
|
||||
|
||||
### Acknowledgements
|
||||
|
||||
- **Kazu**, for the logs, screenshots and tests, on Windows and on Linux, that led to the fix for the flickering headlights and the glare showing through characters (occlusion mode 3).
|
||||
- The players who reported problems in the [issues](https://github.com/HayatoG/iss_pc/issues), with logs that changed the port's course: jacckkss (#50, flickering lights and smoke), heyzerr (#51, #65, #67, CPUs without F16C and the RX 580), Andrade2244 (#29), MrRobot11214 (#31), fghacksr (#49), AngelHomura (#59) and aledieb93-svg (#81) (crashes on the RX 580 and on Windows), ViniSnapeS (#72) and kudetgaming-art (#75) (video memory), summer882 (#71), manymanyyyd-afk (#63) and Kpopping (#73) (Turkish and Russian), mahmoudmahran2112-crypto (#70, Quadro/Maxwell), Milicksp (#16), gsev3333 (#41) and everyone else who opened an issue or tested a build.
|
||||
|
||||
This project is not affiliated with Sony Interactive Entertainment or Sucker Punch Productions. inFAMOUS is a trademark of Sony Interactive Entertainment. No game code, files or art are distributed here. The icon is original artwork made for this project.
|
||||
@@ -14,6 +14,10 @@ Tudo vem do **seu** PS4 (GoldHEN + Itemzflow). Nada disso vai no download. Use *
|
||||
| `art/` (`cache/`, `movies/`, `ui/`) | base + update | conteúdo do jogo (o update substitui parte de `art/cache` e `art/movies`) |
|
||||
| `playgo.pgm`, `sce_discmap.plt`, `sce_discmap_patch.plt` | base + update | mapa de arquivos e instalação |
|
||||
|
||||
**Versões do jogo:** testado com **CUSA00223 (1.00 + update 1.07)**; o launcher só aceita a pasta com o update 1.07. Há relato de que o CUSA00004 também inicia (ainda não testado a fundo). Idiomas: o launcher oferece 6 (inglês, português do Brasil, espanhol latino, francês do Canadá, turco e russo), mas turco e russo só funcionam se os arquivos do seu dump tiverem esses idiomas.
|
||||
|
||||
**Requisitos do PC:** Windows 10 (1903+)/11 64 bits ou Linux x86-64 (glibc 2.39+), placa de vídeo com Vulkan 1.3 (6 GB de VRAM recomendados) e ~33 GB livres para o jogo. O `sce_sys/pic1.png` do seu dump aparece como fundo do launcher (lido da sua pasta, nunca distribuído).
|
||||
|
||||
**Do firmware do console:** nada. Este jogo não usa nenhum módulo do sistema do PS4 (`libSceNgs2`, `libSceSecure` e `libSceJobManager` não são importados). A pasta `system_lib/` do pacote fica vazia.
|
||||
|
||||
**Como montar a pasta:**
|
||||
@@ -34,6 +38,10 @@ Everything comes from **your own** PS4 (GoldHEN + Itemzflow). None of it is in t
|
||||
| `art/` (`cache/`, `movies/`, `ui/`) | base + update | game content (the update replaces part of `art/cache` and `art/movies`) |
|
||||
| `playgo.pgm`, `sce_discmap.plt`, `sce_discmap_patch.plt` | base + update | file map and install info |
|
||||
|
||||
**Game versions:** tested with **CUSA00223 (1.00 + update 1.07)**; the launcher only accepts the folder with the 1.07 update. There is a report that CUSA00004 also boots (not tested in depth yet). Languages: the launcher offers 6 (English, Brazilian Portuguese, Latin American Spanish, Canadian French, Turkish and Russian), but Turkish and Russian only work if your dump's files have those languages.
|
||||
|
||||
**PC requirements:** 64-bit Windows 10 (1903+)/11 or x86-64 Linux (glibc 2.39+), a graphics card with Vulkan 1.3 (6 GB of VRAM recommended) and ~33 GB free for the game. The `sce_sys/pic1.png` from your dump is used as the launcher's background (read from your folder, never distributed).
|
||||
|
||||
**From the console firmware:** nothing. This game uses no PS4 system module (`libSceNgs2`, `libSceSecure` and `libSceJobManager` are not imported). The package's `system_lib/` folder stays empty.
|
||||
|
||||
**How to build the folder:**
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# Correções experimentais e opções do menu no launcher
|
||||
|
||||
O botão **Correções experimentais…** do launcher abre uma janela com três abas. Tudo é salvo no `tlg.ini` (pasta `user/` do port) e vale na **próxima partida**; os itens marcados "no jogo" também podem ser mudados durante a partida, no menu Insert. Se você não mexer em nada, valem os padrões do port. Só o que difere do padrão é gravado: voltar ao padrão apaga a chave.
|
||||
No launcher novo (Qt) é a tela **Correções**; no launcher Tk de reserva (**inFAMOUS Second Son (classic)**), o botão **Correções experimentais…** abre uma janela com três abas. Os dois leem e gravam as mesmas chaves. Tudo é salvo no `tlg.ini` (pasta `user/` do port) e vale na **próxima partida**; os itens marcados "no jogo" também podem ser mudados durante a partida, no menu Insert. Se você não mexer em nada, valem os padrões do port. Só o que difere do padrão é gravado: voltar ao padrão apaga a chave.
|
||||
|
||||
- **Menu do jogo (Insert):** as opções do menu do jogo que não estão no resto do launcher (imagem, desempenho, controle e overlay). Modo de exibição, VSync e o botão do overlay de FPS continuam no quadro Vídeo.
|
||||
- **Correções experimentais (BPnn):** as 12 correções portadas de outros ports de PS4 e do shadPS4 (`port/gpu/shadps4/common/backports.h`). As de padrão desligado (BP06 a BP09) são experimentais. Em cada uma, o launcher mostra a origem; as que mudam shader avisam que a primeira partida depois de mudar recompila os shaders (pode piscar ou ficar verde por um tempo).
|
||||
- **Chaves de diagnóstico / A-B:** chaves que só existiam como variável de ambiente, para descobrir qual mudança causa um problema. `TLG_PIPELINE_BINARIES` ainda derruba o jogo no driver NVIDIA 595.
|
||||
- **Chaves de diagnóstico / A-B:** chaves que só existiam como variável de ambiente, para descobrir qual mudança causa um problema. Inclui o **modo de oclusão** (`ISS_OCCLUSION_MODE`, padrão 3; veja abaixo), que também tem um seletor na tela inicial. `TLG_PIPELINE_BINARIES` ainda derruba o jogo no driver NVIDIA 595.
|
||||
|
||||
Botões: **Voltar ao recomendado** (apaga todas as escolhas; o perfil Recomendado são os padrões da tabela, com o selo "recomendado" nas linhas que o compõem; a janela mostra "Perfil: Recomendado" ou "Perfil: personalizado (N mudanças)") e **Como a release anterior** (grava `bp01=0` ... para todo BPnn que vem ligado; é o mesmo que iniciar com `TLG_BACKPORTS=0`, mas as caixas mostram o estado e dá para religar uma a uma).
|
||||
|
||||
@@ -40,12 +40,15 @@ Variáveis: o launcher passa `ISS_<nome>=0/1` ao jogo (o `tlg-probe` copia para
|
||||
| Texturas BC 1D como 2D | `block1d` | ISS_/TLG_BLOCK1D | automático | reinicia o jogo, recompila shaders | |
|
||||
| Texturas BC minúsculas na CPU | `bc_tiny` | ISS_/TLG_BC_TINY | automático | reinicia o jogo, recompila shaders | |
|
||||
| Desligar multisampling | `no_msaa` | ISS_/TLG_NO_MSAA | automático | reinicia o jogo, recompila shaders | |
|
||||
| Consulta de oclusão (0 a 3) | `occlusion_mode` | ISS_/TLG_OCCLUSION_MODE | 3 | reinicia o jogo | diagnóstico (`liverpool.cpp`, `ZPASS_DONE`) |
|
||||
| Compilação assíncrona de shaders | `async_shaders` | (lido do tlg.ini) | ligado | no jogo (Insert) | |
|
||||
| Leituras da GPU adiadas | `deferred_readback` | (lido do tlg.ini) | ligado | reinicia o jogo | |
|
||||
| Leituras da GPU com um quadro de atraso | `stale_readback` | (lido do tlg.ini) | ligado | reinicia o jogo | |
|
||||
| Carregar pipelines durante o jogo | `background_warmup` | ISS_/TLG_BACKGROUND_WARMUP | ligado | reinicia o jogo | |
|
||||
| Pipeline binaries (VK_KHR_pipeline_binary) | `pipeline_binaries` | ISS_/TLG_PIPELINE_BINARIES | desligado | reinicia o jogo | |
|
||||
|
||||
**Modo de oclusão (`occlusion_mode`):** o contador `ZPASS_DONE` que o jogo lê para saber quanto de uma luz está visível era um número falso e crescente, e isso fazia os faróis piscarem e o brilho atravessar personagens. `3` (padrão, contagem zero) corrigiu isso, confirmado no Windows e no Linux; `0` é o comportamento antigo; `1` (luzes tapadas) e `2` (luzes totalmente visíveis) são testes. Risco: o brilho das luzes pode ficar mais fraco com o `3`; nesse caso use `0`. `TLG_OCCLUSION_LOG=1` registra os eventos no log.
|
||||
|
||||
`TLG_DEFERRED_READBACK` usa a opção que o launcher já tinha (settings.json), `TLG_ASYNC_SHADERS` e `TLG_STALE_READBACK` são lidas do `tlg.ini` pelo jogo (o menu Insert escreve as mesmas chaves).
|
||||
|
||||
## Opções do menu do jogo
|
||||
@@ -70,15 +73,25 @@ Variáveis: o launcher passa `ISS_<nome>=0/1` ao jogo (o `tlg-probe` copia para
|
||||
| Opacidade do fundo do overlay | `overlay_opacity` | (lido do tlg.ini) | 50 | no jogo (Insert) | |
|
||||
| Disposição do overlay | `overlay_layout` | (lido do tlg.ini) | 0 | no jogo (Insert) | |
|
||||
|
||||
Na primeira abertura do launcher depois de atualizar, uma mensagem única explica que as correções novas já vêm ativadas e como voltar ("Como a release anterior"); a chave `backports_notice_seen` no settings do launcher impede que ela se repita.
|
||||
|
||||
## No log
|
||||
|
||||
Todo log (`out/logs/run-*.log`) começa com `Build:` e um bloco `Config:` com as chaves do `tlg.ini` e as variáveis `TLG_`/`ISS_` definidas (sem valores que pareçam caminhos), seguido das linhas `Backports:` (uma por BPnn, com o estado, mais o modo de oclusão); com as estatísticas de quadros aparece `Backport hits (total): BPnn n, ...`, que conta quantas vezes cada correção realmente rodou (só as que se mexeram). Isso diz, num relato, quais correções estavam ligadas.
|
||||
|
||||
## Origem das correções
|
||||
|
||||
BP01–BP05, BP10–BP12: [shadPS4](https://github.com/shadps4-emu/shadPS4) (números de PR/commits na tabela). BP06: port nativo de [Shadow of the Colossus](https://github.com/AjncSystem/ShadowOfTheColossus-PC). BP07: bbport ([bloodborne_pc](https://github.com/deadinside28/bloodborne_pc)). BP08: [Mrsuss60/bloodborne_pc_windows_port](https://github.com/Mrsuss60/bloodborne_pc_windows_port) e [0xCydral/bloodborne_pc](https://github.com/0xCydral/bloodborne_pc). BP09: [T3CHNOLOG1C/CTR](https://github.com/T3CHNOLOG1C/CTR). Detalhes em `port/gpu/VENDOR.txt` e nas mensagens dos commits `Backport BPnn`.
|
||||
|
||||
---
|
||||
|
||||
# Experimental fixes and game menu options in the launcher
|
||||
|
||||
The launcher's **Experimental fixes…** button opens a window with three tabs. Everything is saved in `tlg.ini` (the port's `user/` folder) and applies on the **next start**; items tagged "in game" can also be changed while playing, in the Insert menu. If you touch nothing, the port's defaults hold. Only what differs from the default is written: going back to the default removes the key.
|
||||
In the new (Qt) launcher it is the **Fixes** screen; in the fallback Tk launcher (**inFAMOUS Second Son (classic)**), the **Experimental fixes…** button opens a window with three tabs. Both read and write the same keys. Everything is saved in `tlg.ini` (the port's `user/` folder) and applies on the **next start**; items tagged "in game" can also be changed while playing, in the Insert menu. If you touch nothing, the port's defaults hold. Only what differs from the default is written: going back to the default removes the key.
|
||||
|
||||
- **Game menu (Insert):** the in-game menu options the rest of the launcher does not have (image, performance, controls, overlay). Display mode, VSync and the FPS overlay switch stay in the Video box.
|
||||
- **Experimental fixes (BPnn):** the 12 fixes ported from other PS4 ports and from shadPS4 (`port/gpu/shadps4/common/backports.h`). Those off by default (BP06 to BP09) are experimental. Each shows its origin; the ones that change shaders warn that the first game after changing recompiles the shaders (it may flicker or look green for a while).
|
||||
- **Diagnostic / A-B switches:** switches that were environment variables only, to find which change causes a problem. `TLG_PIPELINE_BINARIES` still crashes the game on the NVIDIA 595 driver.
|
||||
- **Diagnostic / A-B switches:** switches that were environment variables only, to find which change causes a problem. It includes the **occlusion mode** (`ISS_OCCLUSION_MODE`, default 3; see below), which also has a selector on the home screen. `TLG_PIPELINE_BINARIES` still crashes the game on the NVIDIA 595 driver.
|
||||
|
||||
Buttons: **Back to recommended** (clears every choice; the Recommended profile is the table defaults, rows in it carry a "recommended" badge; the window shows "Profile: Recommended" or "Profile: custom (N changes)") and **Like the previous release** (writes `bp01=0` ... for every BPnn that is on by default; same as starting with `TLG_BACKPORTS=0`, but the boxes show the state and you can turn single ones back on).
|
||||
|
||||
@@ -114,12 +127,15 @@ Variables: the launcher gives the game `ISS_<name>=0/1` (`tlg-probe` copies it t
|
||||
| BC 1D textures as 2D | `block1d` | ISS_/TLG_BLOCK1D | automatic | restarts the game, recompiles shaders | |
|
||||
| Tiny BC textures on the CPU | `bc_tiny` | ISS_/TLG_BC_TINY | automatic | restarts the game, recompiles shaders | |
|
||||
| Disable multisampling | `no_msaa` | ISS_/TLG_NO_MSAA | automatic | restarts the game, recompiles shaders | |
|
||||
| Occlusion query (0 to 3) | `occlusion_mode` | ISS_/TLG_OCCLUSION_MODE | 3 | restarts the game | diagnostic (`liverpool.cpp`, `ZPASS_DONE`) |
|
||||
| Asynchronous shader compile | `async_shaders` | (read from tlg.ini) | on | in game (Insert) | |
|
||||
| Deferred GPU readbacks | `deferred_readback` | (read from tlg.ini) | on | restarts the game | |
|
||||
| Stale readbacks | `stale_readback` | (read from tlg.ini) | on | restarts the game | |
|
||||
| Load pipelines while playing | `background_warmup` | ISS_/TLG_BACKGROUND_WARMUP | on | restarts the game | |
|
||||
| Pipeline binaries (VK_KHR_pipeline_binary) | `pipeline_binaries` | ISS_/TLG_PIPELINE_BINARIES | off | restarts the game | |
|
||||
|
||||
**Occlusion mode (`occlusion_mode`):** the `ZPASS_DONE` counter the game reads to know how much of a light is visible was a fake, ever-growing number, which made headlights flicker and glare show through characters. `3` (default, zero counts) fixed it, confirmed on Windows and on Linux; `0` is the old behavior; `1` (lights hidden) and `2` (lights fully visible) are tests. Risk: the glare of lights may look weaker with `3`; if so, use `0`. `TLG_OCCLUSION_LOG=1` logs the events in the log.
|
||||
|
||||
`TLG_DEFERRED_READBACK` uses the launcher's existing option (settings.json); `TLG_ASYNC_SHADERS` and `TLG_STALE_READBACK` are read from `tlg.ini` by the game (the Insert menu writes the same keys).
|
||||
|
||||
## Game menu options
|
||||
@@ -146,5 +162,13 @@ Variables: the launcher gives the game `ISS_<name>=0/1` (`tlg-probe` copies it t
|
||||
|
||||
The table is generated from `port/launcher/backports_table.py`; `port/tests/test_backports_table.py` keeps it in step with the sources.
|
||||
|
||||
Na primeira abertura do launcher depois de atualizar, uma mensagem única explica que as correções novas já vêm ativadas e como voltar ("Como a release anterior"); a chave `backports_notice_seen` no settings do launcher impede que ela se repita.
|
||||
On the first launcher start after updating, a one-time message explains that the new fixes are already on and how to go back ("Like the previous release"); the `backports_notice_seen` key in the launcher settings keeps it from repeating.
|
||||
|
||||
## In the log
|
||||
|
||||
Every log (`out/logs/run-*.log`) starts with `Build:` and a `Config:` block with the `tlg.ini` keys and the `TLG_`/`ISS_` variables that are set (no values that look like paths), followed by the `Backports:` lines (one per BPnn, with its state, plus the occlusion mode); with the frame statistics comes `Backport hits (total): BPnn n, ...`, counting how many times each fix actually ran (only the ones that moved). In a report that says which fixes were on.
|
||||
|
||||
## Source of the fixes
|
||||
|
||||
BP01–BP05, BP10–BP12: [shadPS4](https://github.com/shadps4-emu/shadPS4) (PR numbers/commits in the table). BP06: the native [Shadow of the Colossus](https://github.com/AjncSystem/ShadowOfTheColossus-PC) port. BP07: bbport ([bloodborne_pc](https://github.com/deadinside28/bloodborne_pc)). BP08: [Mrsuss60/bloodborne_pc_windows_port](https://github.com/Mrsuss60/bloodborne_pc_windows_port) and [0xCydral/bloodborne_pc](https://github.com/0xCydral/bloodborne_pc). BP09: [T3CHNOLOG1C/CTR](https://github.com/T3CHNOLOG1C/CTR). Details in `port/gpu/VENDOR.txt` and in the `Backport BPnn` commit messages.
|
||||
|
||||
+7
-3
@@ -1,6 +1,6 @@
|
||||
# Novo launcher (Qt Quick) - fase 1
|
||||
# Launcher Qt Quick (o padrão dos pacotes)
|
||||
|
||||
O novo launcher usa Qt Quick (PySide6) e segue a maquete aprovada: trilho de navegação à esquerda, tela **Início** com o botão **Jogar** e as telas **Correções** (BP01-BP12 e chaves A/B). **Gráficos** e **Controles** estão descritos abaixo; Suporte e Atualizações aparecem como "Em breve". O launcher Tk (`infamous_launcher.py`) continua sendo o padrão e funciona como antes.
|
||||
O launcher usa Qt Quick (PySide6) e é o **padrão** dos pacotes (veja [QT_PACKAGING.md](QT_PACKAGING.md)); o launcher Tk (`infamous_launcher.py`) continua no pacote como **inFAMOUS Second Son (classic)**, de reserva. O trilho de navegação à esquerda tem oito telas: **Jogar** (com o botão Jogar, o idioma do jogo e o seletor de oclusão), **Gráficos**, **Controles**, **Correções** (BP01-BP12 e chaves A/B), **Saves e dados**, **Guias de controle**, **Suporte** e **Atualizações**. A interface vem em pt-BR e en-US (idioma do sistema por padrão).
|
||||
|
||||
Ele **não reimplementa nada**: usa `infamous_run.py` (`prepare`, `launch`, `build_env`, `save_experimental`), `backports_table.py`, `shader_cache.py` e `tlg_vulkan.py`. O mesmo `settings.json` e o mesmo `tlg.ini` valem nos dois launchers.
|
||||
|
||||
@@ -24,6 +24,10 @@ Seletor "Idioma do jogo / Game language" no canto do herói, sob **Escolher a pa
|
||||
|
||||
Escolher grava a chave por `save_settings` e vale na próxima partida; a ajuda diz isso e que só funciona se os arquivos do jogo tiverem o idioma. É separado da língua da interface (PT-BR / EN-US). Código: `Backend.gameLanguageOptions/gameLanguageIndex/gameLanguageNow/setGameLanguage`.
|
||||
|
||||
## Oclusão (Início)
|
||||
|
||||
Seletor **Brilho das luzes (oclusão)** na tela Início, com os quatro valores de `ISS_OCCLUSION_MODE` (0 como antes, 1 luzes tapadas, 2 luzes totalmente visíveis, 3 contagem zero, o padrão); grava `occlusion_mode` pela mesma tabela da tela Correções (`Backend.occlusionOptions/occlusionIndex/setOcclusion`) e vale na próxima partida. O modo 3 corrigiu os faróis que piscavam e o brilho que atravessava personagens (confirmado no Windows e no Linux); veja o [README](../README.md#luzes-e-oclusão). O launcher Tk tem a mesma caixa.
|
||||
|
||||
## O que a tela Início lê
|
||||
|
||||
| Item | De onde |
|
||||
@@ -80,7 +84,7 @@ Entrada **Gráficos** (azul `#4d8bff`). Reúne, sem chave nova, o que o launcher
|
||||
Entrada **Controles** (néon `#ff3d9a`). Lógica e nomes de tecla em `launcher/padsettings.py`, conferidos com o código do jogo (`port/src/runtime_pad.c`, `port/gpu/shim/tlg_settings.cpp`) por `test_qt_screens_a.py`.
|
||||
|
||||
- **Controle:** nome e tipo detectados (o mesmo detector do chip do Início), zona morta dos analógicos (0-40%, `stick_deadzone`, reinicia) e velocidade da mira do grafite (`sensor_aim`, no jogo). Texto curto sobre sensor/touchpad e botão para a tela **Guias de controle** (só aparece se essa tela existir).
|
||||
- **Mouse:** `mouse_enabled`, `mouse_sensitivity`, `mouse_invert_y`, `mouse_smoothing`, `mouse_accel`, `mouse_deadzone` no `tlg.ini` (a chave sai quando volta ao padrão) e o botão **Desligar o mouse** (`mouse_enabled=0`, o mesmo que `TLG_MOUSE=0`). Modo touchpad do mouse: `settings.json` (`mouse_pad`, `mouse_pad_key`, `mouse_pad_mode`, `mouse_pad_sens`, `mouse_pad_drag`) virando `ISS_MOUSE_PAD`, `ISS_MOUSE_PAD_KEY` (Ctrl esquerdo ou X1 por padrão), `ISS_MOUSE_PAD_MODE` (`hold`/`toggle`), `ISS_MOUSE_PAD_SENS` e `ISS_MOUSE_PAD_DRAG` em `build_env`, só quando diferem do padrão. O código do mouse está em `feat/mouse-camera`; sem ele no jogo, as chaves são gravadas e ignoradas.
|
||||
- **Mouse:** `mouse_enabled`, `mouse_sensitivity`, `mouse_invert_y`, `mouse_smoothing`, `mouse_accel`, `mouse_deadzone` no `tlg.ini` (a chave sai quando volta ao padrão) e o botão **Desligar o mouse** (`mouse_enabled=0`, o mesmo que `TLG_MOUSE=0`). Modo touchpad do mouse: `settings.json` (`mouse_pad`, `mouse_pad_key`, `mouse_pad_mode`, `mouse_pad_sens`, `mouse_pad_drag`) virando `ISS_MOUSE_PAD`, `ISS_MOUSE_PAD_KEY` (Ctrl esquerdo ou X1 por padrão), `ISS_MOUSE_PAD_MODE` (`hold`/`toggle`), `ISS_MOUSE_PAD_SENS` e `ISS_MOUSE_PAD_DRAG` em `build_env`, só quando diferem do padrão. O mouse como câmera e como touchpad já está no jogo; ainda foi pouco testado por outros jogadores.
|
||||
- **Teclado:** tabela do mapa padrão (lida do `key_map` de `runtime_pad.c`; um teste compara) e o campo avançado do `TLG_KEY_MAP` (`botão=tecla`, vírgulas, `|` para várias fontes, `none`, até 1023 caracteres e 8 fontes por botão; botões e nomes de mouse como em `apply_button_map`). Erros de formato bloqueiam o botão Salvar; nome de tecla que a lista do launcher não conhece é só aviso (quem decide é o SDL no jogo). O valor vai em `settings.json` (`key_map`) e sai como `ISS_KEY_MAP`; um `TLG_KEY_MAP`/`ISS_KEY_MAP` do sistema vale mais.
|
||||
|
||||
## Suporte e Atualizações
|
||||
|
||||
@@ -20,6 +20,7 @@ caminho de início do jogo (`infamous_run`). `--play`, `--script` e `--clear-sha
|
||||
- Dados do Qt (QML, `fonts/`, `i18n/`, e qualquer pasta nova de arquivos que não sejam código em `launcher/qt/`,
|
||||
como `assets/`) entram sozinhos em `qt/...` dentro do pacote; `qt/app.py` os acha por `Path(__file__).parent`,
|
||||
que no executável congelado aponta para esse mesmo lugar. O ícone da janela vai em `infamous.png` na raiz.
|
||||
- O pacote leva um arquivo `VERSION` (`vAAAA.MM.DD-<commit>`), escrito por `package.sh` quando `GITHUB_SHA` existe (o CI); é com ele que a tela Atualizações sabe a versão instalada.
|
||||
- Redução de tamanho: módulos PySide6 que o launcher não usa são excluídos (WebEngine, Multimedia, 3D,
|
||||
Quick3D, Pdf, Sql, Charts, Widgets, ...) e o spec descarta arquivos que o launcher nunca carrega: estilos
|
||||
do Qt Quick Controls que não são o Basic, traduções do Qt, plugins de depuração QML, plataformas para
|
||||
|
||||
+40
-19
@@ -1,16 +1,17 @@
|
||||
# inFAMOUS Second Son PC: roadmap
|
||||
|
||||
Port de inFAMOUS Second Son (Sucker Punch, PS4, CUSA00223, base 1.00 + update 1.07, SDK 4.00).
|
||||
Atualizado em 13/10/2026. O estado de quem joga está no [README](../README.md#status); a lista de
|
||||
trabalho completa, com as investigações, fica em `~/decomp/PORT_INFAMOUS.md` (fora do repositório),
|
||||
e cada item aberto vira uma issue com o tempo.
|
||||
Atualizado em 15/10/2026. O estado de quem joga está no [README](../README.md#status); cada item
|
||||
aberto vira uma issue com o tempo.
|
||||
|
||||
## Onde estamos
|
||||
|
||||
**Jogável, em desenvolvimento:** boot, título, intro e gameplay (testado até "Go to Longhouse"),
|
||||
com som próprio (AudioOut + Ajm, sem arquivo do firmware), saves, HUD correto, sensor de movimento
|
||||
(real ou simulado), touchpad simulado e partículas da GPU com a leitura precisa (padrão).
|
||||
20–30 FPS típicos numa RTX 2060, instável.
|
||||
20–30 FPS típicos numa RTX 2060, instável. Launcher Qt como padrão (com o Tk de reserva), saves e dados
|
||||
configuráveis, 12 correções experimentais (BP01–BP12) e o contador de oclusão corrigido (faróis e brilho
|
||||
de luzes), confirmado no Windows e no Linux.
|
||||
|
||||
## Feito
|
||||
|
||||
@@ -25,34 +26,54 @@ com som próprio (AudioOut + Ajm, sem arquivo do firmware), saves, HUD correto,
|
||||
| Partículas da GPU (fumaça do dreno, drones) | leitura precisa da GPU por padrão; modo rápido no launcher ("Precisão da GPU") |
|
||||
| Stencil `test_val`/`op_val` | uma referência Vulkan quando as máscaras permitem |
|
||||
| Cache de shaders | pasta com a chave do tradutor; o cache antigo é apagado sozinho |
|
||||
| Launcher Qt | padrão nos pacotes, 8 telas, pt-BR/en-US, Tk de reserva ("classic"), `--selftest` no CI |
|
||||
| Idioma do jogo | "Automático (idioma do sistema)" por padrão e 6 idiomas (inclui turco e russo, se o dump tiver) |
|
||||
| Saves e dados | pasta configurável (`ISS_USER_DIR`, arquivo-ponteiro), achar saves de outras instalações, backup antes de cada partida, exportar/importar `.zip` |
|
||||
| Correções experimentais | BP01–BP12 (shadPS4, SotC, bbport, Mrsuss/0xCydral, CTR) com chave individual, perfil Recomendado e `TLG_BACKPORTS=0`; log com `Config:`, `Backports:` e `Backport hits` |
|
||||
| Oclusão | modo 3 (contagem zero) por padrão: corrige faróis que piscavam e brilho que atravessava personagens (Windows e Linux) |
|
||||
| Mouse | câmera, botões e modo touchpad (`ISS_MOUSE_*`, `ISS_KEY_MAP`); falta validar em mais jogadores |
|
||||
| Guias de controle | imagens Xbox/Switch Pro/8BitDo em pt-BR e en-US |
|
||||
| Suporte e Atualizações | relatório sem caminhos pessoais; verificação da última release (sem instalar nada) |
|
||||
| CPUs sem F16C | as conversões de meia precisão são emuladas na partida (#51) |
|
||||
|
||||
## Aberto (por prioridade)
|
||||
|
||||
| # | Item | Detalhe |
|
||||
|---|---|---|
|
||||
| 1 | Desempenho | a thread do jogo espera leituras da GPU (escritas de `memcpy` em páginas modificadas pela GPU); correção: rastrear a memória em pedaços menores que a página (`ISS_WRITE_MERGE=1` é o primeiro passo, desligado por padrão) |
|
||||
| 2 | Engasgo de shader | 64–118 compilações por janela de 5 s em cenas novas; precisa do cache de pipelines em disco (`ISS_PIPELINE_BINARIES=1` ainda derruba o jogo) |
|
||||
| 3 | Névoa, água, fogo e luzes piscando; grade fina de linhas escuras | suspeitas: ballots wave64 em fluxo divergente, texturas BC 1D |
|
||||
| 4 | Brilho azul do dreno de drones | não aparece; ballot wave64, stencil ou readback |
|
||||
| 5 | Texturas BC 1D | promoção para 2D automática nos drivers que recusam BC 1D, menos a NVIDIA; `ISS_BLOCK1D=0/1` decide. Na NVIDIA fica desligada porque estraga o HUD. O driver da AMD no Windows quebrava com BC 1D e também com a promoção (#16, #31, #49): lá as BC1–BC5 1D ou menores que um bloco são decodificadas na CPU (`ISS_BC_TINY=0/1`); falta confirmar numa RX 580 |
|
||||
| 6 | Idiomas do jogo no launcher | a lista ainda é a do GR2; ler do `param.sfo`/dados |
|
||||
| 7 | `param.sfo` 1.07 na visão do jogo | a visão usa o 1.00 |
|
||||
| 8 | Prefixo `ISS_` nas variáveis | ✅ feito: o jogador usa `ISS_*`; o núcleo ainda lê `TLG_*` por dentro (o `tlg-probe` traduz na partida). Quando todos os ports usarem o ps4_core, o prefixo comum vira `PSCORE_` |
|
||||
| 9 | Launcher novo (C++/SDL3/ImGui) | protótipo aqui, depois em todos os ports |
|
||||
| 1 | Desempenho | a thread do jogo espera leituras da GPU (escritas de `memcpy` em páginas modificadas pela GPU); correção: rastrear a memória em pedaços menores que a página. O primeiro passo existe (`ISS_WRITE_MERGE`, ligado pelo launcher, e as leituras adiadas), e o FPS segue instável |
|
||||
| 2 | Engasgo de shader | 64–118 compilações por janela de 5 s em cenas novas; precisa do cache de pipelines em disco. O BP08 (blob do cache do driver) é experimental e desligado; `ISS_PIPELINE_BINARIES=1` ainda derruba o jogo no driver NVIDIA 595 |
|
||||
| 3 | Oclusão real | o modo 3 é uma aproximação (contagem zero); falta medir a oclusão de verdade pelo Vulkan (occlusion queries). Risco atual: brilho de luzes mais fraco em algumas cenas (modo 0 volta ao antigo) |
|
||||
| 4 | Névoa, água e fogo piscando; grade fina de linhas escuras | suspeitas: ballots wave64 em fluxo divergente, texturas BC 1D; os faróis e o brilho de luzes que piscavam já foram corrigidos (oclusão, modo 3) |
|
||||
| 5 | Brilho azul do dreno de drones | não aparece; ballot wave64, stencil ou readback |
|
||||
| 6 | RX 580 / Polaris no Windows | crash em `amdvlk64.dll+0xebbbb` (#31, #49, #59, #65, #67, #81); causa em investigação; as BC 1D minúsculas são decodificadas na CPU (`ISS_BC_TINY`) e o BP09 está para teste |
|
||||
| 7 | GPU de 4 GB de VRAM | a memória de textura estoura (#72, #75); a investigar; por enquanto baixe a resolução. "Precisão da GPU: Rápido" escurece a imagem |
|
||||
| 8 | Quadro / Maxwell | pode estar abaixo do mínimo (#70); a investigar |
|
||||
| 9 | Texturas BC 1D | promoção para 2D automática nos drivers que recusam BC 1D, menos a NVIDIA; `ISS_BLOCK1D=0/1` decide. Na NVIDIA fica desligada porque estraga o HUD |
|
||||
| 10 | Atualizador automático | a tela Atualizações só verifica a última release e abre a página; baixar e instalar sozinho ainda não existe |
|
||||
| 11 | Mouse | validar com mais jogadores (câmera, botões, modo touchpad) |
|
||||
| 12 | Windows | validar em mais PCs e placas (hoje o teste é por relatos de jogadores) |
|
||||
| 13 | `param.sfo` 1.07 na visão do jogo | a visão usa o 1.00 |
|
||||
| 14 | Idiomas | turco e russo dependem de o dump ter o idioma; ler do `param.sfo`/dados quais idiomas existem |
|
||||
| 15 | Prefixo `ISS_`/`TLG_` | o jogador usa `ISS_*` e o núcleo ainda lê `TLG_*` por dentro; quando todos os ports usarem o ps4_core, o prefixo comum vira `PSCORE_` |
|
||||
|
||||
---
|
||||
|
||||
# inFAMOUS Second Son PC: roadmap (English)
|
||||
|
||||
Port of inFAMOUS Second Son (Sucker Punch, PS4, CUSA00223, base 1.00 + update 1.07, SDK 4.00).
|
||||
Updated 13/10/2026. The player-facing status is in the [README](../README.md#english); the full work
|
||||
list with the investigations lives in `~/decomp/PORT_INFAMOUS.md`, outside the repository.
|
||||
Updated 15/10/2026. The player-facing status is in the [README](../README.md#english).
|
||||
|
||||
**Playable, in development:** boot, title, intro and gameplay (tested up to "Go to Longhouse"), own
|
||||
audio (no firmware file), saves, correct HUD, real or simulated motion sensor, simulated touchpad and
|
||||
GPU particles with precise readbacks (default). 20–30 FPS typical on an RTX 2060, unstable.
|
||||
|
||||
Open, by priority: (1) performance — the game thread waits on GPU readbacks; (2) shader-compile
|
||||
stutter — needs an on-disk pipeline cache; (3) flickering fog/water/fire/lights and a fine dark grid;
|
||||
(4) the missing blue drone-drain glow; (5) BC 1D textures; (6) game languages in the launcher;
|
||||
(7) the 1.07 `param.sfo` in the game view; (8) `ISS_` variable prefix; (9) new C++/ImGui launcher.
|
||||
Done since the last roadmap: the Qt launcher as the default (Tk as a fallback), configurable saves and data,
|
||||
12 experimental fixes (BP01–BP12), the occlusion counter fix (headlights and light glare; confirmed on Windows and
|
||||
Linux), mouse camera and touchpad mode, controller guides, the Support and Updates screens, and the F16C emulation.
|
||||
|
||||
Open, by priority: (1) performance — the game thread waits on GPU readbacks; (2) shader-compile stutter — needs an
|
||||
on-disk pipeline cache (BP08 is experimental and off); (3) real occlusion through Vulkan (mode 3 is an approximation);
|
||||
(4) flickering fog/water/fire and a fine dark grid; (5) the missing blue drone-drain glow; (6) the RX 580/Polaris crash
|
||||
on Windows; (7) GPUs with 4 GB of VRAM; (8) Quadro/Maxwell; (9) BC 1D textures; (10) an automatic updater (the Updates
|
||||
screen only checks); (11) validating the mouse; (12) validating Windows on more PCs; (13) the 1.07 `param.sfo` in the
|
||||
game view; (14) game languages from the game data; (15) the `ISS_`/`TLG_`/`PSCORE_` prefix.
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
# inFAMOUS Second Son launcher, Qt Quick edition (em desenvolvimento; o padrão ainda é infamous_launcher.sh).
|
||||
# inFAMOUS Second Son launcher, Qt Quick edition (the default launcher of the packages; infamous_launcher.sh is the Tk one, kept as a fallback).
|
||||
# Usa o venv ~/.../.venv-qt ou o python do sistema com PySide6-Essentials instalado.
|
||||
here="$(dirname -- "$(readlink -f -- "$0")")"
|
||||
py=python3
|
||||
|
||||
@@ -20,3 +20,10 @@ GPL-2.0, AjncSystem; its multi-wave/ReadLane part credits Pink-shadPS4 by luizgu
|
||||
(shader_recompiler/recompiler_toggles.h):
|
||||
6f0b3e56 + shared_memory_barrier_pass.cpp at 70bb4385 LDS barriers for partial-wave and multi-wave
|
||||
compute workgroups (IR SubgroupBarrier), debb0c49 + e3227814 S_WQM_B64.
|
||||
Backported as switchable "BPnn" fixes (common/backports.h; TLG_BPnn / ISS_BPnn, one commit each, origin in the commit message):
|
||||
BP01 shadPS4 #5258, BP02 shadPS4 145932bf (#5240), BP03 shadPS4 c34ca21f, BP04 shadPS4 1c2b8f97 (#5346),
|
||||
BP05 shadPS4 #5257, BP10 shadPS4 #5262, BP11 shadPS4 #5348, BP12 shadPS4 7d28d279 (#5264);
|
||||
BP06 Shadow of the Colossus native port 8d84cf7 (maximal reconvergence);
|
||||
BP07 bbport (deadinside/bloodborne_pc) 10baf9d (async compile that does not skip draws);
|
||||
BP08 Mrsuss60/bloodborne_pc_windows_port b972798 and 0xCydral/bloodborne_pc bdb9769 + 4f16e00 (driver pipeline cache blob);
|
||||
BP09 T3CHNOLOG1C/CTR d26bcb2 (1D images lowered to 2D).
|
||||
@@ -364,8 +364,9 @@ class Launcher:
|
||||
self.game_language_now.config(text='')
|
||||
else:
|
||||
name = GAME_LANGUAGE_NAMES[tlg_run.resolve_game_language(self.settings)]
|
||||
self.game_language_now.config(text=self.t('game_language_now').format(name=name))
|
||||
self.refresh_status()
|
||||
self.game_language_now.config(text=self.t('game_language_now', name=name))
|
||||
if hasattr(self, 'play_button'): # called while the window is still being built: the button comes later
|
||||
self.refresh_status()
|
||||
|
||||
def check(self, parent, row, key):
|
||||
var = tk.BooleanVar(value=bool(self.settings[key]))
|
||||
|
||||
+39
-13
@@ -161,28 +161,54 @@ def detect_gpu(timeout=6):
|
||||
return parse_vulkaninfo(out)
|
||||
|
||||
|
||||
_PAD_WORDS = (('DualSense', 'DualSense'), ('Wireless Controller', 'DualShock 4'), ('Xbox', 'Xbox'),
|
||||
('Pro Controller', 'Switch Pro'), ('8BitDo', '8BitDo'), ('Controller', None), ('Gamepad', None))
|
||||
_PAD_WORDS = (('8BitDo', '8BitDo'), ('DualSense', 'DualSense'), ('Wireless Controller', 'DualShock 4'),
|
||||
('DualShock', 'DualShock 4'), ('Xbox', 'Xbox'), ('XInput', 'Xbox'), ('Microsoft', 'Xbox'),
|
||||
('Pro Controller', 'Switch Pro'), ('Switch', 'Switch Pro'), ('Nintendo', 'Switch Pro'),
|
||||
('Controller', None), ('Gamepad', None))
|
||||
|
||||
|
||||
def _pad_from_name(name):
|
||||
low = name.lower()
|
||||
if 'touchpad' in low or 'motion sensors' in low or 'keyboard' in low or 'mouse' in low:
|
||||
return None
|
||||
for word, label in _PAD_WORDS:
|
||||
if word.lower() in low:
|
||||
return label or name
|
||||
return None
|
||||
|
||||
|
||||
def _probe_pad_name():
|
||||
"""Controller name from `tlg-probe --gamepad` (SDL3, works on Windows too); None when it is
|
||||
missing, fails or finds nothing."""
|
||||
try:
|
||||
out = subprocess.run([str(tlg_run.PROBE), '--gamepad'], stdin=subprocess.DEVNULL, capture_output=True,
|
||||
text=True, timeout=10, creationflags=tlg_run.NO_WINDOW,
|
||||
env=tlg_run.probe_env()).stdout
|
||||
except (OSError, subprocess.SubprocessError):
|
||||
return None
|
||||
for line in out.splitlines():
|
||||
if line.startswith('Gamepad:') and 'name=' in line:
|
||||
return line.split('name=', 1)[1].strip() or None
|
||||
return None
|
||||
|
||||
|
||||
def detect_pad(devices_text=None):
|
||||
"""Name of a connected game controller (Linux: /proc/bus/input/devices, free); None if none
|
||||
is found or the platform has no cheap way to ask."""
|
||||
"""Name of a connected game controller. With devices_text (the format of Linux's
|
||||
/proc/bus/input/devices) only that text is read; otherwise the game's probe is asked first
|
||||
(the only way on Windows) and Linux's /proc is the fallback. None if none is found."""
|
||||
if devices_text is None:
|
||||
name = _probe_pad_name()
|
||||
if name:
|
||||
return _pad_from_name(name) or name
|
||||
try:
|
||||
devices_text = Path('/proc/bus/input/devices').read_text(errors='replace')
|
||||
except OSError:
|
||||
return None
|
||||
for line in devices_text.splitlines():
|
||||
if not line.startswith('N: Name='):
|
||||
continue
|
||||
name = line.split('=', 1)[1].strip().strip('"')
|
||||
low = name.lower()
|
||||
if 'touchpad' in low or 'motion sensors' in low or 'keyboard' in low or 'mouse' in low:
|
||||
continue
|
||||
for word, label in _PAD_WORDS:
|
||||
if word.lower() in low:
|
||||
return label or name
|
||||
if line.startswith('N: Name='):
|
||||
found = _pad_from_name(line.split('=', 1)[1].strip().strip('"'))
|
||||
if found:
|
||||
return found
|
||||
return None
|
||||
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# inFAMOUS Second Son — port para PC / PC port
|
||||
|
||||
Por HayatoG · YouTube: [@hayatog-dev](https://www.youtube.com/@hayatog-dev) · Discord: [discord.gg/UMkdMYZh9g](https://discord.gg/UMkdMYZh9g) · Código: [github.com/HayatoG/infamous_pc](https://github.com/HayatoG/infamous_pc)
|
||||
Por HayatoG · YouTube: [@hayatog-dev](https://www.youtube.com/@hayatog-dev) · Discord: [discord.gg/UMkdMYZh9g](https://discord.gg/UMkdMYZh9g) · Código: [github.com/HayatoG/iss_pc](https://github.com/HayatoG/iss_pc)
|
||||
|
||||
**Nenhum arquivo do jogo vem neste pacote.** Você precisa da sua própria cópia de inFAMOUS Second Son para PS4. / **No game files are included.** You need your own copy of inFAMOUS Second Son for PS4.
|
||||
|
||||
Versão de desenvolvimento: **o jogo ainda não inicia.** / Development build: **the game does not boot yet.**
|
||||
Jogável, em desenvolvimento: o jogo inicia e chega ao gameplay, mas o desempenho ainda é instável e há falhas de imagem conhecidas. / Playable, in development: the game boots and reaches gameplay, but performance is still unstable and there are known graphics glitches.
|
||||
|
||||
---
|
||||
|
||||
@@ -29,13 +29,21 @@ Tudo vem do **seu** PS4 (GoldHEN + Itemzflow). Nada disso vai no download. Use *
|
||||
2. No PC, copie a pasta do jogo base e depois copie o conteúdo do update **por cima**, substituindo os arquivos.
|
||||
3. O `param.sfo` da versão 1.07 fica no PS4 em `/system_data/priv/appmeta/CUSA00223/param.sfo`: copie para o `sce_sys/` da pasta montada.
|
||||
|
||||
**PC:** Windows 10 (1903+)/11 64 bits ou Linux x86-64 (glibc 2.39+), placa de vídeo com Vulkan 1.3 (6 GB de VRAM recomendados).
|
||||
**PC:** Windows 10 (1903+)/11 64 bits ou Linux x86-64 (glibc 2.39+), placa de vídeo com Vulkan 1.3 (6 GB de VRAM recomendados) e ~33 GB livres.
|
||||
|
||||
### Como jogar
|
||||
|
||||
1. Extraia o pacote numa pasta qualquer (no Windows, fora do .zip).
|
||||
2. Abra **inFAMOUS Second Son** (`inFAMOUS Second Son.exe` no Windows). No Windows, se aparecer "O Windows protegeu o computador", clique em *Mais informações* e depois em *Executar assim mesmo*. O programa não é assinado digitalmente.
|
||||
3. Em **Pasta do jogo**, escolha a pasta que tem o `eboot.bin`. Escolha o idioma e clique em **Jogar**.
|
||||
3. Em **Pasta do jogo**, escolha a pasta que tem o `eboot.bin` e clique em **Jogar**.
|
||||
|
||||
O launcher tem 8 telas: **Jogar**, **Gráficos**, **Controles**, **Correções**, **Saves e dados**, **Guias de controle**, **Suporte** e **Atualizações**. O launcher antigo continua na mesma pasta como **inFAMOUS Second Son (classic)**: use-o se o novo não abrir.
|
||||
|
||||
- **Idioma do jogo:** por padrão é o do seu sistema ("Automático"); dá para escolher English, Português (Brasil), Español (Latinoamérica), Français (Canada), Türkçe ou Русский na tela **Jogar**. Só funciona se os arquivos do seu jogo tiverem o idioma. A interface do launcher é em português ou inglês.
|
||||
- **Saves:** ficam em `user/`, ao lado do jogo. A atualização não apaga nada, mas **extrair o zip novo em outra pasta faz o jogo abrir sem saves** (eles continuam na pasta antiga, em `user/savedata`). Para atualizar sem perder nada, abra **Saves e dados**, faça um backup e escolha uma pasta fixa fora do jogo (a tela copia seus saves para lá); ela também acha saves de outras pastas, importa e exporta `.zip` e faz backup antes de cada partida.
|
||||
- **Luzes:** os faróis que piscavam e o brilho que atravessava personagens foram corrigidos (seletor "Brilho das luzes (oclusão)" na tela **Jogar**; padrão 3). Se o brilho das luzes ficar fraco, escolha 0.
|
||||
- **Correções experimentais:** a tela **Correções** liga e desliga 12 correções (BP01–BP12) e chaves de diagnóstico. O padrão é o perfil Recomendado; "Como a release anterior" desliga as novas para comparar.
|
||||
- **Atualizações:** a tela só verifica se há uma release mais nova e abre a página para baixar; não instala nada.
|
||||
|
||||
No Linux, `./install_desktop.sh` adiciona o jogo ao menu de aplicativos.
|
||||
|
||||
@@ -49,10 +57,14 @@ Para o grafite, absorver poderes (fumaça, neon...), abrir portas e outras cenas
|
||||
- **Touchpad:** **View/Select** clica (segurar = segurar o touchpad, para absorver poderes); **segure View/Select + analógico direito** para deslizar (porta "Open Door", scanner de mão); **View/Select + R1** aperta as duas pontas (levantar o carro de cima do Reggie).
|
||||
- **Mouse:** mover gira a câmera; esquerdo = R2, direito = L2, do meio = R3; **Esc** solta o mouse e um clique prende de novo. **Segure Ctrl esquerdo (ou o botão lateral X1)** para usar o mouse como touchpad: esquerdo toca/clica (segurar = absorver poder), esquerdo + arrastar desliza ("Open Door", scanner), direito = dois dedos (carro do Reggie). `ISS_MOUSE=0` desliga.
|
||||
- **Teclado:** **T/G** viram o controle de lado (enquanto seguram, as **setas** miram), **Y** sacode, **F** é o R2 (pintar); **Tab/Backspace** clicam o touchpad, **Tab + setas** deslizam, **Tab + Backspace** apertam as duas pontas.
|
||||
- **Launcher:** "Zona morta dos analógicos" (padrão 10%), se algo se mexer sozinho.
|
||||
- **Launcher:** "Zona morta dos analógicos" (padrão 10%), se algo se mexer sozinho. A tela **Guias de controle** tem imagens Xbox, Switch Pro e 8BitDo desse passo a passo, para salvar ou copiar.
|
||||
- O mouse é novo e foi pouco testado em jogo: se der problema, `ISS_MOUSE=0` o desliga.
|
||||
|
||||
### Problemas
|
||||
- **Não abre ou fecha sozinho**: é o esperado nesta fase. Mande o `out/last_run.log` no [Discord](https://discord.gg/UMkdMYZh9g) ou numa [issue](https://github.com/HayatoG/infamous_pc/issues) se quiser ajudar.
|
||||
- **Não abre ou fecha sozinho**: tela **Suporte** > **Relatar um problema** monta o relatório (GPU, driver, versão) com o log **sem caminhos pessoais**, e deixa copiar, salvar um `.zip` ou abrir uma issue. Os logs ficam em `out/logs/run-*.log` e começam com um bloco `Config:` com as suas opções. Se o log for grande, compacte em `.zip` antes de anexar (o GitHub recusa arquivo grande). Mande no [Discord](https://discord.gg/UMkdMYZh9g) ou numa [issue](https://github.com/HayatoG/iss_pc/issues).
|
||||
- **Placa AMD RX 580 / Polaris no Windows** fecha logo depois dos logos (`amdvlk64.dll+0xebbbb`): a causa ainda está em investigação; atualize o driver e teste `ISS_BP09=1`.
|
||||
- **GPU de 4 GB de VRAM**: a memória de textura pode estourar; baixe a resolução. A opção "Precisão da GPU: Rápido" escurece a imagem.
|
||||
- **NVIDIA Quadro / Maxwell**: pode estar abaixo do mínimo do port.
|
||||
- **Tela congelada (o jogo para, a janela continua aberta)**: depois de 10 s sem quadro novo, o `out/last_run.log` recebe um bloco `FREEZE:` com o que cada thread está esperando. Feche o jogo e mande esse log. `ISS_FREEZE_REPORT_SECONDS` muda o tempo (`0` desliga).
|
||||
|
||||
---
|
||||
@@ -78,13 +90,21 @@ Everything comes from **your own** PS4 (GoldHEN + Itemzflow). None of it is in t
|
||||
2. On the PC, copy the base game folder, then copy the update's contents **over it**, replacing files.
|
||||
3. The 1.07 `param.sfo` is at `/system_data/priv/appmeta/CUSA00223/param.sfo` on the PS4: copy it into the merged folder's `sce_sys/`.
|
||||
|
||||
**PC:** 64-bit Windows 10 (1903+)/11 or x86-64 Linux (glibc 2.39+), a graphics card with Vulkan 1.3 (6 GB of VRAM recommended).
|
||||
**PC:** 64-bit Windows 10 (1903+)/11 or x86-64 Linux (glibc 2.39+), a graphics card with Vulkan 1.3 (6 GB of VRAM recommended) and ~33 GB free.
|
||||
|
||||
### How to play
|
||||
|
||||
1. Extract the package anywhere (on Windows, outside the .zip).
|
||||
2. Open **inFAMOUS Second Son** (`inFAMOUS Second Son.exe` on Windows). On Windows, if "Windows protected your PC" appears, click *More info*, then *Run anyway*. The program is not digitally signed.
|
||||
3. Under **Game folder**, choose the folder that has `eboot.bin`. Pick the language and click **Play**.
|
||||
3. Under **Game folder**, choose the folder that has `eboot.bin` and click **Play**.
|
||||
|
||||
The launcher has 8 screens: **Play**, **Graphics**, **Controls**, **Fixes**, **Saves & data**, **Controller guides**, **Support** and **Updates**. The old launcher stays in the same folder as **inFAMOUS Second Son (classic)**: use it if the new one does not open.
|
||||
|
||||
- **Game language:** it follows your system by default ("Automatic"); you can pick English, Português (Brasil), Español (Latinoamérica), Français (Canada), Türkçe or Русский on the **Play** screen. It only works if your game files have that language. The launcher interface is in Portuguese or English.
|
||||
- **Saves:** they live in `user/`, next to the game. Updating deletes nothing, but **extracting the new zip into another folder makes the game open without saves** (they stay in the old folder, under `user/savedata`). To update without losing anything, open **Saves & data**, make a backup and pick a fixed folder outside the game (the screen copies your saves there); it also finds saves in other folders, imports and exports `.zip`, and backs up before every play session.
|
||||
- **Lights:** the flickering headlights and the glare showing through characters are fixed ("Light glare (occlusion)" selector on the **Play** screen; default 3). If light glare looks weak, pick 0.
|
||||
- **Experimental fixes:** the **Fixes** screen turns 12 fixes (BP01–BP12) and diagnostic switches on and off. The default is the Recommended profile; "Like the previous release" turns the new ones off to compare.
|
||||
- **Updates:** the screen only checks whether a newer release exists and opens the page to download it; it installs nothing.
|
||||
|
||||
On Linux, `./install_desktop.sh` adds the game to the applications menu.
|
||||
|
||||
@@ -98,10 +118,14 @@ For the graffiti, absorbing powers (smoke, neon...), opening doors and other sen
|
||||
- **Touchpad:** **View/Select** clicks (hold = hold the touchpad, to absorb powers); **hold View/Select + right stick** to swipe ("Open Door", hand scanner); **View/Select + R1** presses both ends (lifting the car off Reggie).
|
||||
- **Mouse:** moving turns the camera; left = R2, right = L2, middle = R3; **Esc** releases the mouse and a click captures it again. **Hold Left Ctrl (or the X1 side button)** to use the mouse as the touchpad: left touches/clicks (hold = absorb a power), left + drag swipes ("Open Door", scanner), right = two fingers (Reggie's car). `ISS_MOUSE=0` turns it off.
|
||||
- **Keyboard:** **T/G** turn the controller sideways (while held, the **arrow keys** aim), **Y** shakes, **F** is R2 (spray); **Tab/Backspace** click the touchpad, **Tab + arrow keys** swipe, **Tab + Backspace** press both ends.
|
||||
- **Launcher:** "Stick dead zone" (default 10%), if something moves on its own.
|
||||
- **Launcher:** "Stick dead zone" (default 10%), if something moves on its own. The **Controller guides** screen has Xbox, Switch Pro and 8BitDo images of these steps, to save or copy.
|
||||
- The mouse is new and has not been tested much in game: if it misbehaves, `ISS_MOUSE=0` turns it off.
|
||||
|
||||
### Problems
|
||||
- **Does not start or closes by itself**: expected at this stage. Send `out/last_run.log` on [Discord](https://discord.gg/UMkdMYZh9g) or in an [issue](https://github.com/HayatoG/infamous_pc/issues) if you want to help.
|
||||
- **Does not start or closes by itself**: the **Support** screen > **Report a problem** builds the report (GPU, driver, version) with the log **without personal paths**, and lets you copy it, save a `.zip` or open an issue. Logs are in `out/logs/run-*.log` and start with a `Config:` block with your options. If the log is big, compress it into a `.zip` before attaching (GitHub refuses big files). Send it on [Discord](https://discord.gg/UMkdMYZh9g) or in an [issue](https://github.com/HayatoG/iss_pc/issues).
|
||||
- **AMD RX 580 / Polaris on Windows** closes right after the logos (`amdvlk64.dll+0xebbbb`): the cause is still under investigation; update the driver and try `ISS_BP09=1`.
|
||||
- **GPU with 4 GB of VRAM**: texture memory can run out; lower the resolution. The "GPU accuracy: Fast" option darkens the image.
|
||||
- **NVIDIA Quadro / Maxwell**: may be below the port's minimum.
|
||||
- **Frozen screen (the game stops, the window stays open)**: after 10 s without a new frame, `out/last_run.log` gets a `FREEZE:` block with what each thread is waiting on. Close the game and send that log. `ISS_FREEZE_REPORT_SECONDS` changes the time (`0` turns it off).
|
||||
|
||||
---
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# tlg on Windows
|
||||
# inFAMOUS Second Son on Windows
|
||||
|
||||
The port builds and runs natively on 64-bit Windows 10 (1903+) / 11 with the same sources as
|
||||
on Linux. Players: see `README-Windows.txt` (it ships in the package).
|
||||
on Linux. Players: see `README-player.md` (it ships in the package, pt-BR and en).
|
||||
|
||||
## Build
|
||||
|
||||
@@ -22,36 +22,33 @@ Then, in the repository:
|
||||
|
||||
```bash
|
||||
git submodule update --init --recursive
|
||||
bash build.sh # out/tlg-probe.exe, out/tlg-gpu-capabilities.exe
|
||||
TLG_GAME_DIR=F:/path/to/CUSA01623 python run.py
|
||||
python launcher/tlg_launcher_win.py
|
||||
bash packaging/windows/package.sh # dist/tlg-windows/ and .zip: God of War III.exe + DLLs
|
||||
bash build.sh # out/tlg-probe.exe, out/tlg-gpu-capabilities.exe, out/tlg-play.exe
|
||||
TLG_GAME_DIR=F:/path/to/CUSA00223 python run.py
|
||||
python launcher/infamous_launcher_qt.py # the Qt launcher (needs PySide6); infamous_launcher.py is the Tk one
|
||||
bash packaging/windows/package.sh # dist/infamous-windows-x86_64.zip: inFAMOUS Second Son.exe + DLLs
|
||||
```
|
||||
|
||||
`run.py` is the Windows `run.sh` (same variables; works from a plain Windows Python too).
|
||||
The package freezes the launcher with PyInstaller (a private venv in `out/pyenv`, from a
|
||||
python.org Python) into `God of War III.exe`, which also runs `run.py` (`--run`), the preparation
|
||||
scripts (`--script`) and the game without the window (`--play`): players need no Python.
|
||||
`Play God of War III.exe` (`packaging/windows/play.c`) is a small native program that runs
|
||||
`God of War III.exe --play` from its folder and waits for it, for players who want to start the
|
||||
The package freezes the launchers with PyInstaller (a private venv in `out/pyenv`, from a
|
||||
python.org Python) into `inFAMOUS Second Son.exe` (Qt) and `inFAMOUS Second Son (classic).exe` (Tk).
|
||||
Both also run the preparation scripts (`--script`) and the game without the window (`--play`):
|
||||
players need no Python.
|
||||
`Play inFAMOUS Second Son.exe` (`packaging/windows/play.c`) is a small native program that runs
|
||||
the launcher's `--play` from its folder and waits for it, for players who want to start the
|
||||
game directly with the saved settings.
|
||||
`patches.py` applies the built-in patches only to the game build they were checked against
|
||||
(CUSA01623 01.02, by eboot.bin sha256; `TLG_FORCE_PATCHES=1` overrides); other builds run unpatched.
|
||||
`scripts/patches.py` applies the built-in patches only to the game build they were checked against
|
||||
(by `eboot.bin` sha256; `TLG_FORCE_PATCHES=1` overrides); other builds run unpatched.
|
||||
From a source tree it adds `C:\msys64\clang64\bin` (or `$MSYS2_ROOT`) to `PATH` for the DLLs.
|
||||
`bash tools/fetch_fsr4_assets.sh` works in the CLANG64 shell as on Linux.
|
||||
|
||||
DLSS (optional): `DLSS_SDK_ROOT=<checkout of github.com/NVIDIA/DLSS> bash
|
||||
packaging/windows/build_dlss.sh` builds `tlg_dlss.dll` (`gpu/dlss_bridge`, the only code that
|
||||
uses the NVIDIA SDK, compiled with MSVC 2022) and copies it with `nvngx_dlss.dll` next to
|
||||
`out/tlg-probe.exe`; `package.sh` ships both when present. The renderer loads the bridge at run
|
||||
time (`vk_dlss.cpp`), adds the Vulkan extensions NGX asks for, and DLSS gets the same inputs as
|
||||
FSR 3 (scene color, depth, render-pixel motion vectors, jitter). `TLG_DLSS=0` turns it off.
|
||||
The shared core also carries optional upscaler code from other ports (a DLSS bridge built with
|
||||
`packaging/windows/build_dlss.sh`, FSR 4 helpers in `tools/`). **inFAMOUS does not use them**: the
|
||||
game's menu only has FSR 1 and sharpening (RCAS), and the launcher runs with the native image
|
||||
(`ISS_UPSCALER=off`).
|
||||
|
||||
The launcher texts are written in English with the Russian beside them; the other languages
|
||||
are in `launcher/tlg_lang.py` (one list per language in the order of `KEYS`; a missing or
|
||||
empty text falls back to English). The icon (`launcher/tlg.ico`/`.png`) is drawn by
|
||||
`packaging/windows/make_icon.py` and built into `God of War III.exe`, `tlg-probe.exe` (the game
|
||||
window) and `tlg-gpu-capabilities.exe`.
|
||||
The launcher texts are in Portuguese (Brazil) and English (`launcher/qt/i18n/strings.json`, plus the
|
||||
Tk launcher's own table). The icon (`launcher/infamous.ico`/`.png`) is original art drawn by
|
||||
`packaging/windows/make_icon.py` and built into the executables and `tlg-probe.exe` (the game
|
||||
window).
|
||||
|
||||
## What is different from Linux
|
||||
|
||||
@@ -85,3 +82,16 @@ under `qt\`; unused Qt modules, Controls styles, translations and platform plugi
|
||||
(see `docs/QT_PACKAGING.md`). `"inFAMOUS Second Son.exe" --selftest` opens the QML offscreen, renders one
|
||||
frame and writes `selftest ok` to the file in `ISS_SELFTEST_OUT` (a windowed exe has no console); the
|
||||
CI runs it after Package. Estimated size: the zip grows by 55-70 MB.
|
||||
|
||||
## Status on Windows
|
||||
|
||||
Players have tested the Windows package (the occlusion fix for headlights and light glare was confirmed on Windows).
|
||||
Windows-specific points, all described in the top-level `README.md`:
|
||||
|
||||
- Saves and settings live in `user/` next to the game by default; the launcher can move them to a fixed folder
|
||||
(suggestion `Documents\inFAMOUS-PC`), remembered in `%APPDATA%\inFAMOUS-PC\launcher.json`. `ISS_USER_DIR` overrides it.
|
||||
- Logs go to `out\logs\run-*.log`; the Support screen builds a report without personal paths.
|
||||
- Red-zone protection (crash at `0x1cfaaf`, #29/#41) is on by default on Windows (`ISS_RED_ZONE_REWRITE=0` turns it off).
|
||||
- AMD's Windows driver: tiny BC textures are decoded on the CPU (`ISS_BC_TINY`). RX 580 / Polaris still crashes in
|
||||
`amdvlk64.dll+0xebbbb` (#31, #49, #59, #65, #67, #81): cause under investigation; try `ISS_BP09=1` and the latest driver.
|
||||
- The executables are not digitally signed: Windows shows "Windows protected your PC" (More info, Run anyway).
|
||||
@@ -143,8 +143,23 @@ GPU1:
|
||||
text = 'N: Name="Sony Interactive Entertainment DualSense Wireless Controller"\nN: Name="DualSense Touchpad"\n'
|
||||
self.assertEqual('DualSense', logic.detect_pad(text))
|
||||
self.assertEqual('Xbox', logic.detect_pad('N: Name="Microsoft Xbox Series pad"\n'))
|
||||
for name, label in (('XInput Controller #1', 'Xbox'), ('Controller (Xbox One For Windows)', 'Xbox'),
|
||||
('8BitDo Ultimate 2 Wireless Controller', '8BitDo'),
|
||||
('Nintendo Switch Pro Controller', 'Switch Pro'), ('Wireless Controller', 'DualShock 4')):
|
||||
self.assertEqual(label, logic.detect_pad(f'N: Name="{name}"\n'), name)
|
||||
self.assertIsNone(logic.detect_pad('N: Name="Logitech USB Keyboard"\nN: Name="Power Button"\n'))
|
||||
|
||||
def test_guide_for_detected_pads(self):
|
||||
for name, kind in (('Xbox', 'xbox'), ('8BitDo', '8bitdo'), ('Switch Pro', 'switch'), ('DualSense', 'xbox')):
|
||||
self.assertEqual(kind, logic.guide_kind(name))
|
||||
|
||||
def test_controller_from_the_probe(self):
|
||||
from unittest import mock
|
||||
class R:
|
||||
stdout = 'Gamepad: type=standard south=a east=b west=x north=y name=XInput Controller #1\n'
|
||||
with mock.patch.object(logic.subprocess, 'run', return_value=R()):
|
||||
self.assertEqual('Xbox', logic.detect_pad())
|
||||
|
||||
|
||||
class NewsTests(unittest.TestCase):
|
||||
README = ('# x\n\n## Novidades\n\n- **Primeira coisa (#51):** detalhe longo.\n- Segunda sem negrito.\n'
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
"""The classic (Tk) launcher must build its window. A real display is needed; the test is skipped
|
||||
without one (CI has none), so run it by hand after touching launcher/infamous_launcher.py.
|
||||
Regression: show_game_language() ran during build() and used the play button, which is created later."""
|
||||
import os
|
||||
import sys
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parent.parent / 'launcher'))
|
||||
|
||||
|
||||
class TkLauncherBuilds(unittest.TestCase):
|
||||
def test_window_builds_and_updates(self):
|
||||
try:
|
||||
import tkinter as tk
|
||||
root = tk.Tk()
|
||||
except Exception as error: # no tkinter or no display
|
||||
self.skipTest(f'no Tk display: {error}')
|
||||
try:
|
||||
import infamous_launcher
|
||||
app = infamous_launcher.Launcher(root)
|
||||
root.update_idletasks()
|
||||
root.update()
|
||||
self.assertTrue(hasattr(app, 'play_button'))
|
||||
app.show_game_language() # also safe when called again after the build
|
||||
finally:
|
||||
root.destroy()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Reference in new issue
Block a user