EN-US
Windows test build for the 2.6.0 crash on every timed QTE on CPUs without BMI1 (Intel 3rd generation / Ivy Bridge and older, e.g. i7-3770, i5-3470, Xeon E3-1230 v2), reported in #811, #818, #833, #860, #874 and in a comment on #814. Log signature: Fault: exception 0xc000001d at guest offset 0x2090015, with CPU: missing ... BMI1 earlier in the log.
Candidate fix. It has not yet been confirmed on a CPU without BMI1.
Download spartanport-windows.zip, the complete Windows package. Python and a separate patch installation are not required. No Linux package is included.
What changed
- The timed QTE hook added with Automatic QTE (#729) used
andn, a BMI1 instruction. The CPU instruction rewrite only covers the game's own code, not the hook, so every timed QTE stopped the game on these CPUs, even with Automatic QTE turned off. The hook now usesmov/not/and, which give the same result on every supported CPU. - Added a regression test that decodes every hook stub and fails on BMI1, BMI2, LZCNT, MOVBE, F16C, AVX2 or FMA instructions.
How to test
- Keep your working installation and back up your saves. Extract this ZIP into a separate folder and select the same game dump.
- On a CPU that crashed in 2.6.0, load a save before the QTE that crashed (finisher on the Centaur, Chain of Balance, the three-headed dogs, etc.) and complete it. Try it once with Automatic QTE off and once with it on.
- Play a few more QTEs, then close the game normally.
- Reply in your issue with this build tag, your CPU, whether the QTEs passed, and the complete
user/last_run.log. When using a custom saves folder, the log is inside that folder. Do not upload game files.
Validation so far
- The new hook-instruction test failed on 2.6.0 with
andn ecx,eax,[rdi+94h] (BMI1)and passes with this change. - The native QTE hook test, which runs the stubs, passed: a new press yields the expected button mask, and Automatic QTE still sets only the prompt's button.
- Python suite: 269 tests passed, 58 skipped (they need built binaries). This package passed the clean-runner smoke test.
- Not validated yet: gameplay on a CPU without BMI1.
Source and download verification
Built from commit 080470c on branch worktree-fix-qte-bmi1, based on main 6eba8da (the base of the other 2.6.0 test builds). The launcher's version remains 2.6.0.
SHA-256: see spartanport-windows.zip.sha256.
You need your own game files. None are included.
PT-BR
Build de teste para Windows do crash da 2.6.0 em todo QTE cronometrado em CPUs sem BMI1 (Intel de 3ª geração / Ivy Bridge e anteriores, por exemplo i7-3770, i5-3470, Xeon E3-1230 v2), relatado em #811, #818, #833, #860, #874 e em um comentário da #814. Assinatura no log: Fault: exception 0xc000001d at guest offset 0x2090015, com CPU: missing ... BMI1 antes no log.
Correção candidata. Ainda não foi confirmada em uma CPU sem BMI1.
Baixe spartanport-windows.zip, o pacote completo para Windows. Não é necessário instalar Python nem aplicar um patch separado. Esta release não inclui pacote Linux.
O que mudou
- O hook de QTE cronometrado adicionado com o QTE Automático (#729) usava
andn, uma instrução BMI1. A reescrita de instruções para CPUs antigas cobre só o código do próprio jogo, não o hook, então todo QTE cronometrado fechava o jogo nessas CPUs, mesmo com o QTE Automático desligado. O hook agora usamov/not/and, que dão o mesmo resultado em todas as CPUs suportadas. - Adicionado um teste de regressão que decodifica todos os stubs de hook e falha se encontrar instruções BMI1, BMI2, LZCNT, MOVBE, F16C, AVX2 ou FMA.
Como testar
- Mantenha sua instalação funcional e faça backup dos saves. Extraia o ZIP em uma pasta separada e selecione o mesmo dump.
- Em uma CPU que travava na 2.6.0, carregue um save antes do QTE que fechava o jogo (finalização do Centauro, Corrente do Equilíbrio, cães de três cabeças etc.) e complete o QTE. Teste uma vez com o QTE Automático desligado e outra com ele ligado.
- Faça mais alguns QTEs e feche o jogo normalmente.
- Responda na sua issue com a tag deste build, sua CPU, se os QTEs passaram e o
user/last_run.logcompleto. Se usar uma pasta personalizada de saves, o log estará nela. Não envie arquivos do jogo.
Validação realizada
- O novo teste de instruções dos hooks falhou na 2.6.0 com
andn ecx,eax,[rdi+94h] (BMI1)e passa com esta mudança. - O teste nativo dos hooks de QTE, que executa os stubs, passou: um botão novo gera a máscara esperada e o QTE Automático continua marcando só o botão do prompt.
- Suíte Python: 269 testes aprovados, 58 ignorados (precisam dos binários compilados). Este pacote passou no teste de fumaça em máquina limpa.
- Pendente: gameplay em uma CPU sem BMI1.
Código-fonte e verificação do download
Compilado do commit 080470c da branch worktree-fix-qte-bmi1, com base na main 6eba8da (a mesma base das outras builds de teste da 2.6.0). A versão exibida pelo launcher continua sendo 2.6.0.
SHA-256: consulte spartanport-windows.zip.sha256.
Você precisa dos seus próprios arquivos do jogo. Nenhum está incluído.