God of War Launcher v0.2.9
This release changes the game's runtime, so it asks for a rebuild. It fixes a way the game could wait forever for the graphics chip, and stops reporting movies as freezes.
English
Fixes
- A dropped graphics interrupt no longer leaves the game waiting. The game finishes each batch of drawing work by waiting for a flag that an interrupt from the graphics chip (GS) sets. If that interrupt arrived while the game had it disabled for a moment, or before its handler was registered, the port dropped it for good: the game then slept in its frame wait with the graphics idle, until you closed it. The interrupt is now held until it can be delivered, as the real console does, and one that stays unacknowledged for 100 ms is delivered again. I could not prove this is the cause of the freeze some players see at the same spot, so please tell me if it still happens (#20 is a different freeze).
- A cutscene is not reported as a freeze. The freeze watchdog (on with the launcher's performance log) fired about 5 seconds into every movie, because the movie player does not use the game's frame function. It now stays quiet while a movie plays.
- A freeze now says what the game waits for. When the game stops drawing for 5 seconds,
last.loggets[gow-hang]lines: the game's graphics-done flag, the graphics status and mask, how many VBlanks passed in the last second, and every guest thread with its wait.[gow-gs-irq]lines show when the port had to deliver the graphics interrupt late. With these two I can tell a lost interrupt from another cause.
Updating
This release changes the game's code, so after the launcher updates, a Rebuild notice appears over the banner and in Performance: press it. It takes about 45 minutes the first time because the step that prepares the VU1 code reads every captured microcode file; the game itself keeps working with the current build until the rebuild ends. Do not open the game while it runs: Play asks first and pauses the rebuild.
| You are on | What to do |
|---|---|
| 0.2.8 | The launcher updates itself (Windows setup and AppImage), then press Rebuild. |
| 0.2.7 or older | Update the launcher (0.2.5 and newer update themselves; older ones show a notice that opens this page, install the setup or unzip the portable ZIP over the old one), then press Rebuild now in Performance. |
| 0.1.0 | No update check in that version: download this release by hand and install it over the old one, then run the installation again from the wizard. If the C++ step still stops, delete the build folder inside your install folder and run it again. Your saves are in game/Mcd001.ps2: back it up first anyway.
|
| A new install | Install and play. It updates itself from the next release on. |
Downloads: Windows installer or portable ZIP; Linux .deb or AppImage (experimental). Files ending in .sig and latest.json are for the self-update; you do not need them.
No game files are included. You need your own original USA God of War disc image (SCUS-97399). Allow about 30 GB free space and 30 to 90 minutes for the first build.
Known issues
- Nothing in this release was tested in the game. The runtime changes were checked with the compiler only. The graphics interrupt fix targets one plausible cause of a wait that repeats at the same spot; if the freeze still happens, the new
[gow-hang]lines inlast.logare what I need. - A game freeze that ends in a call to address 0 in the HUD code is being investigated (#20). It is not fixed here.
- Frame rate drops on modest graphics cards at internal resolution 2x come from the GPU load, not from a defect: use 1x (#13). Optimization work continues.
- Only the USA disc (
SCUS-97399) is supported. Linux remains experimental. A hang after saving is still open on Windows.
Checksums are in SHA256SUMS-*.txt.
Português (Brasil)
Esta release muda o runtime do jogo, então pede uma recompilação. Ela corrige um jeito de o jogo esperar para sempre pelo chip gráfico e deixa de relatar vídeos como travadas.
Correções
- Uma interrupção gráfica perdida não deixa mais o jogo esperando. O jogo termina cada lote de desenho esperando um flag que uma interrupção do chip gráfico (GS) liga. Se essa interrupção chegasse quando o jogo a tinha desligada por um instante, ou antes de o tratador dela ser registrado, o port a descartava de vez: o jogo dormia na espera de quadro com a parte gráfica parada, até você fechar. A interrupção agora fica guardada até poder ser entregue, como no console de verdade, e uma que continua sem confirmação por 100 ms é entregue de novo. Não consegui provar que essa é a causa da travada que alguns jogadores veem no mesmo ponto, então me avise se ela ainda acontecer (#20 é outra travada).
- Uma cena não é relatada como travada. O vigia de travadas (ligado com o registro de desempenho do launcher) disparava uns 5 segundos depois do começo de todo vídeo, porque o tocador de vídeo não usa a função de quadro do jogo. Agora ele fica quieto enquanto um vídeo toca.
- Uma travada agora diz o que o jogo espera. Quando o jogo para de desenhar por 5 segundos, o
last.logganha linhas[gow-hang]: o flag de "gráfico terminou" do jogo, o status e a máscara do chip gráfico, quantos VBlanks passaram no último segundo e cada thread do jogo com a sua espera. As linhas[gow-gs-irq]mostram quando o port teve de entregar a interrupção gráfica atrasada. Com as duas, consigo distinguir uma interrupção perdida de outra causa.
Como atualizar
Esta release muda o código do jogo, então depois de o launcher atualizar, aparece um aviso Recompilar sobre o banner e em Desempenho: aperte. Leva uns 45 minutos na primeira vez, porque o passo que prepara o código do VU1 lê todos os arquivos de microcódigo capturados; o jogo continua funcionando com a versão atual até a recompilação terminar. Não abra o jogo enquanto ela roda: o Jogar pergunta antes e pausa a recompilação.
| Você está na | O que fazer |
|---|---|
| 0.2.8 | O launcher se atualiza sozinho (setup do Windows e AppImage), depois aperte Recompilar. |
| 0.2.7 ou anterior | Atualize o launcher (a 0.2.5 e as mais novas se atualizam sozinhas; as mais antigas mostram um aviso que abre esta página, instale o setup ou descompacte o ZIP portátil por cima da versão antiga), depois aperte Recompilar agora em Desempenho. |
| 0.1.0 | Essa versão não tem verificação de atualização: baixe esta release à mão e instale por cima, e rode a instalação de novo pelo assistente. Se a etapa do C++ ainda parar, apague a pasta build dentro da pasta de instalação e rode de novo. Seus saves estão em game/Mcd001.ps2: faça uma cópia antes, por garantia.
|
| Instalação nova | Instale e jogue. Ela se atualiza sozinha a partir da próxima release. |
Downloads: instalador ou ZIP portátil para Windows; .deb ou AppImage para Linux (experimental). Os arquivos .sig e o latest.json são da atualização automática; você não precisa deles.
Esta release não inclui arquivos do jogo. Você precisa da sua própria imagem original americana de God of War (SCUS-97399). Reserve cerca de 30 GB livres e de 30 a 90 minutos para a primeira compilação.
Problemas conhecidos
- Nada nesta release foi testado no jogo. As mudanças do runtime foram conferidas só com o compilador. A correção da interrupção gráfica ataca uma causa plausível de uma espera que se repete no mesmo ponto; se a travada ainda acontecer, as novas linhas
[gow-hang]dolast.logsão o que preciso. - Um travamento do jogo que termina numa chamada ao endereço 0 no código do HUD está sendo investigado (#20). Não foi corrigido aqui.
- Quedas de fps em placas de vídeo modestas com resolução interna 2x vêm da carga da GPU, não de um defeito: use 1x (#13). O trabalho de otimização continua.
- Só o disco americano (
SCUS-97399) é suportado. O Linux continua experimental. Um travamento depois de salvar continua em aberto no Windows.
Os checksums estão em SHA256SUMS-*.txt.