Fixes Forza Horizon drawing broken distant geometry at 6 fps in 0.2.1 on Adreno GPUs.
Fixes from upstream Xenia Edge: safer loading of game executables and DLLs, a batch of crash and memory-corruption fixes, and the right title update when a game has several installed.
A Vulkan driver that doesn't support the phone's GPU no longer closes every game without a word.
Analog triggers stay analog in games, and handhelds whose built-in controls Android lists twice, such as the AYN Thor, play as P1.
- Forza Horizon is back to 30 fps with a correct image on Adreno with Turnip.
- Games sharing a title ID with another edition (GTA IV and Episodes from Liberty City, Dragon Age: Origins and Awakening) get the title update built for them.
- A game waiting on the same object twice no longer freezes.
- Truncated ISOs, empty XMA audio buffers and network sends with no destination no longer crash the emulator.
- The game shows why it didn't start and offers the system driver.
- Racing games get throttle and brake control from analog triggers.
Full Changelog: XenDroid-v134-dba22de8...XenDroid-v144-a107faa9
What's new
🛠️ Fixed
- On GPUs without the round-toward-zero mode, 0.2.1 rounds some vertex shader results toward zero in software, and Turnip's shader compiler dropped the clamp of saturated results computed that way: in Forza Horizon, tree impostors covered the sky. The rounding now uses float arithmetic only. (#105)
- Executables with a zeroed DOS stub load, and DLLs get the right startup arguments and notifications. (#102)
- Overflows that could corrupt game memory: tiles and gamer pictures, cached title names, Unicode string copies and thread-local storage slots. (#102)
- Games on Demand (SVOD) packages stored as a single file mount, and one with no data files no longer crashes. (#102)
- ZArchive (.zar) games no longer log every file they open. (#102)
- With a custom driver that has no Vulkan device for the phone's GPU, such as a Turnip build without that Adreno, every game closed at once. The launch failure screen now says the driver didn't start Vulkan and offers Try with the system driver. (#108)
- Controller triggers reached games as buttons. They now send their whole travel, follow the L2/R2 key mapping, and the key mapping can capture a trigger that a controller sends only as an axis. (#109)
- A controller takes a player when it's first used, not when it connects. On handhelds whose built-in controls Android lists twice, the controls that play are P1 instead of a silent duplicate. (#109)
🇧🇷 Em português
Corrige o Forza Horizon, que na 0.2.1 desenhava a geometria distante quebrada a 6 fps em GPUs Adreno.
Correções do Xenia Edge: carga mais segura dos executáveis e DLLs dos jogos, uma leva de correções de travamento e de corrupção de memória, e a title update certa quando o jogo tem várias instaladas.
Um driver Vulkan sem suporte à GPU do celular não fecha mais todos os jogos sem explicação.
Os gatilhos analógicos continuam analógicos nos jogos, e portáteis cujos controles embutidos o Android lista duas vezes, como o AYN Thor, jogam como P1.
- O Forza Horizon volta a 30 fps com a imagem certa no Adreno com Turnip.
- Jogos que dividem o title ID com outra edição (GTA IV e Episodes from Liberty City, Dragon Age: Origins e Awakening) recebem a title update feita para eles.
- Um jogo que espera duas vezes pelo mesmo objeto não congela mais.
- ISOs truncadas, buffers de áudio XMA vazios e envios de rede sem destino não derrubam mais o emulador.
- O jogo mostra por que não iniciou e oferece o driver do sistema.
- Jogos de corrida ganham controle do acelerador e do freio pelos gatilhos analógicos.
🛠️ Corrigido
- Em GPUs sem o modo de arredondamento para zero, a 0.2.1 arredonda alguns resultados dos vertex shaders por software, e o compilador de shaders do Turnip perdia o clamp dos resultados saturados calculados assim: no Forza Horizon, os impostores de árvores cobriam o céu. O arredondamento agora usa só aritmética de float. (#105)
- Executáveis com o stub DOS zerado carregam, e as DLLs recebem os argumentos e as notificações certos ao iniciar. (#102)
- Estouros que podiam corromper a memória do jogo: tiles e fotos de perfil, nomes de títulos em cache, cópias de strings Unicode e slots de armazenamento local de thread. (#102)
- Pacotes Games on Demand (SVOD) num arquivo único montam, e um sem arquivos de dados não derruba mais. (#102)
- Jogos em ZArchive (.zar) não logam mais cada arquivo que abrem. (#102)
- Com um driver customizado sem dispositivo Vulkan para a GPU do celular, como um Turnip sem aquele Adreno, todo jogo fechava na hora. Agora a tela de falha diz que o driver não iniciou o Vulkan e oferece Tentar com o driver do sistema. (#108)
- Os gatilhos dos controles chegavam aos jogos como botões. Agora mandam o curso inteiro, seguem o mapeamento de L2/R2, e o mapeamento consegue capturar um gatilho que o controle manda só como eixo. (#109)
- Um controle pega um jogador quando é usado pela primeira vez, não quando conecta. Em portáteis cujos controles embutidos o Android lista duas vezes, os controles que jogam ficam como P1, e não uma cópia muda. (#109)
📜 Every change since build 134 · 4 pull requests, 34 commits
- #105 Arredondamento para zero dos vertex shaders sem perder a saturação no Turnip (Forza Horizon de volta a 30 fps) · @phforner0
- GPU: step vertex shader results toward zero with float arithmetic ·
46b92f51
- GPU: step vertex shader results toward zero with float arithmetic ·
- #102 Upstream, lote 15: carga de XEX e DLLs, correções de estouro do PR 306 do Edge e escolha da title update · @phforner0
- [CPU] Only release a XEX's own image between key retries ·
81c1baaa - [Memory] Give the 4k XEX range its own backing ·
3145f5fc - [VFS] Mount single-file SVOD packages laid out like multi-file ones ·
2950b9cb - [CPU] Accept XEX images with a zeroed DOS stub ·
d23e0d41 - [Kernel] Fix DllMain arguments and DLL notifications from non-title threads ·
29ebd1e9 - [Kernel] Implement XexPcToFileHeader and RtlCaptureContext ·
968130fd - [XAM] Fix XamReadTileToTexture overrunning the texture and stalling overlapped calls ·
09e06e7b - [XAM] Implement XamContentGetDefaultDevice ·
c4e630dd - [XAM] Stub XamLrcGetInputWithSeek ·
c7115db1 - [XAM] Treat ordinals 0x7DC and 0x7DD as the extra AV codec loader ·
0ee18afb - [Kernel] Fix notify listeners queueing repeats and staying signaled ·
dbdac0e1 - [Base] Fix POSIX multi-object waits spinning forever on a repeated handle ·
330c950a - [Kernel] Fix RtlCopyUnicodeString overflowing and RtlUnicodeStringToAnsiString length ·
822c6dc0 - [VFS] Fix reads from a truncated ISO crashing the emulator ·
6c38bd02 - VFS: a truncated disc image no longer maps a file past its end ·
da0bc7f2 - [VFS] Fix SVOD reading the root block from an uninitialized offset ·
8e3beaf2 - [VFS] Stop ZArchive logging and looking up every path twice ·
273da4d8 - [Kernel] Fix TLS slot accesses writing past the thread's TLS block ·
a1b78f47 - [XAM] Fix XamGetCachedTitleName ignoring the caller's buffer size ·
02c18b50 - [XAM] Fix XamReadTile and XamReadTileToTexture overflowing guest buffers ·
df917fc7 - [XAM/Net] Fix sendto with a NULL destination crashing the emulator ·
0f97fb23 - [Kernel/XSocket] Fix FIONREAD returning a byte-swapped count for host sockets ·
a8aea9f8 - [APU] Fix XMA output buffers with no blocks dividing by zero ·
b2e9a00c - [Kernel] Select the most compatible and newest title update ·
acf4d3ea
- [CPU] Only release a XEX's own image between key retries ·
- #108 Driver sem suporte à GPU mostra a tela de falha em vez de fechar o jogo · @phforner0
- #109 Gatilhos analógicos com o curso inteiro e jogador na primeira entrada do controle · @phforner0
Built by Xendroid+ #144 from a107faa9, signed with the release key.
| File | Size | SHA-256 |
|---|---|---|
XenDroid_Release_a107faa9.apk
| 40.6 MiB | ec79f1c0c2cdf6751cd53e3272e5b6c524320706f9bc3a7e97ebc7689352d899
|