Audio, graphics and CPU fixes from xenia-edge. The first launch of each game after this update rebuilds its pipeline cache.
Scheduler, kernel, input and network fixes from xenia-edge, plus Android-specific fixes to sockets and thread sync.
CPU, ARM64 code generation, kernel and XAM fixes from xenia-edge.
Texture and resolve fixes from xenia-edge and Xenia Canary.
Kernel cryptography and executable decryption now run on Mbed TLS, as in xenia-edge, fixing several results that differed from the console.
Faster CPU emulation on ARM64 from xenia-edge, and audio that game threads no longer hold up.
Xendroid+ now has a license of its own: the GNU AGPL, version 3 or later.
- Audio fixes: LEGO games no longer freeze in their opening cutscenes, NBA Live 06's menus no longer stall the audio, the musou games' music plays without skips, and Tekken Tag Tournament 2 keeps its sound.
- Graphics fixes: draws that used mirrored memory addresses are no longer dropped, and texture formats, shader translation and the Gears of War: Judgment scene decode are corrected.
- CPU instructions that returned wrong results now behave like the console.
- Black Ops II plays its music.
- Halo: Reach no longer hangs in its menu, Oblivion shows the character name prompt, Eternal Sonata's battle tutorial appears, and Crackdown no longer runs out of memory on the sign-in screen.
- Events reset by the game itself, timers and signal-and-wait calls wake their threads as on the console.
- Online code: closed connections, socket errors and select calls behave like Winsock, and select no longer crashes or stalls other game threads.
- Several ARM64 instruction sequences that returned wrong results now match the console, including 8- and 16-bit values, dot products and floating-point modes around system calls.
- The JIT no longer races other threads on ARM64 when it publishes a compiled function, and games that patch or move their executable image start correctly.
- Kernel cryptography and profile handling are fixed, and games no longer read profiles with a language set as parental controlled.
- Wide 1D textures sample the right texels and filter as the game asks.
- Texture layouts in memory are corrected for arrays, volumes, packed mips and tiled 3D textures, and textures no longer show stale data in Dynasty Warriors 5 and 6 Empires.
- Effects that games build with resolves, such as opacity planes, fog and water refraction, render correctly.
- MD5 no longer writes past the game's own memory, and SHA-512, HMAC, DES parity and AES decryption return the console's results.
- Encrypted data whose size is not a multiple of the block size is no longer read or written past its buffer.
- A game that signs its saves with these functions may report a save made with an earlier version as damaged.
- Leaner ARM64 code for common guest instructions, and dead condition-register writes removed before code generation.
- PowerPC overflow flags (XER OV and SO) are now emulated.
- Audio conversion uses NEON, and the audio pump no longer waits behind the emulator's global lock.
- Anyone who distributes a modified Xendroid+, or runs one as a service over the network, has to publish its source code under the same license.
- About → Licenses shows the license, its text and where the source code is.
Full Changelog: XenDroid-v79-726ef8f8...XenDroid-v87-29223981
✅ Tested on a POCO F7 (Snapdragon 8s Gen 4): Forza Horizon in game — the game's own threads do 11% less CPU work per frame, at the same 30 fps.
What's new
Other changes
- Varredura do upstream (xenia-edge, Canary e game-patches): o que vale portar, em 37 temas e 6 lotes (#39)
🇧🇷 Em português
Correções de áudio, gráficos e CPU do xenia-edge. Na primeira vez que cada jogo abre depois desta atualização, o cache de pipelines é refeito.
Correções do escalonador, do kernel, da entrada e da rede do xenia-edge, mais correções próprias do Android em sockets e sincronização de threads.
Correções de CPU, geração de código ARM64, kernel e XAM do xenia-edge.
Correções de texturas e resolves do xenia-edge e do Xenia Canary.
A criptografia do kernel e a decifragem dos executáveis passam a usar o Mbed TLS, como no xenia-edge, e vários resultados que diferiam do console foram corrigidos.
Emulação da CPU mais rápida em ARM64, do xenia-edge, e áudio que as threads do jogo não seguram mais.
O Xendroid+ agora tem licença própria: a GNU AGPL, versão 3 ou posterior.
- Áudio: os jogos LEGO não travam mais nas cutscenes de abertura, os menus do NBA Live 06 não param mais o áudio, a música dos musou toca sem pulos e o Tekken Tag Tournament 2 não perde o som.
- Gráficos: draws com endereços espelhados não são mais descartados, e formatos de textura, tradução de shaders e a decodificação da cena do Gears of War: Judgment estão corrigidos.
- Instruções da CPU que davam resultado errado agora se comportam como no console.
- O Black Ops II toca a música.
- O Halo: Reach não trava mais no menu, o Oblivion mostra o prompt de nome do personagem, o tutorial de batalha do Eternal Sonata aparece e o Crackdown não esgota mais a memória na tela de login.
- Eventos que o próprio jogo reinicia, timers e chamadas de sinalizar-e-esperar acordam as threads como no console.
- Código online: conexões fechadas, erros de socket e o select se comportam como no Winsock, e o select não derruba mais o processo nem trava as outras threads do jogo.
- Várias sequências de instruções ARM64 que davam resultado errado agora batem com o console, incluindo valores de 8 e 16 bits, produtos escalares e modos de ponto flutuante em volta de chamadas do sistema.
- O JIT não corre mais contra outras threads em ARM64 ao publicar uma função compilada, e jogos que aplicam patches ou movem a imagem do executável iniciam certo.
- A criptografia do kernel e o tratamento de perfis foram corrigidos, e perfis com idioma definido não são mais lidos como sob controle dos pais.
- Texturas 1D largas amostram os texels certos e filtram como o jogo pede.
- O layout das texturas na memória foi corrigido para arrays, volumes, mips empacotados e texturas 3D tiled, e as texturas não mostram mais dados velhos no Dynasty Warriors 5 e 6 Empires.
- Efeitos que os jogos montam com resolves, como planos de opacidade, neblina e refração da água, aparecem certos.
- O MD5 não escreve mais além da memória do próprio jogo, e SHA-512, HMAC, paridade do DES e decifragem AES devolvem os resultados do console.
- Dados cifrados com tamanho que não é múltiplo do bloco não são mais lidos nem escritos além do buffer.
- Um jogo que assina os saves com essas funções pode dizer que um save feito numa versão anterior está danificado.
- Código ARM64 mais enxuto para instruções comuns do guest, e escritas mortas de registradores de condição removidas antes da geração de código.
- As flags de overflow do PowerPC (XER OV e SO) agora são emuladas.
- A conversão de áudio usa NEON, e o pump de áudio não espera mais atrás da trava global do emulador.
- Quem distribuir um Xendroid+ modificado, ou rodá-lo como serviço pela rede, tem de publicar o código-fonte sob a mesma licença.
- Sobre → Licenças mostra a licença, o texto dela e onde está o código-fonte.
✅ Testado num POCO F7 (Snapdragon 8s Gen 4): Forza Horizon em jogo — as threads do próprio jogo fazem 11% menos trabalho de CPU por quadro, nos mesmos 30 fps.
Outras mudanças
- Varredura do upstream (xenia-edge, Canary e game-patches): o que vale portar, em 37 temas e 6 lotes (#39)
📜 Every change since build 79 · 8 pull requests, 172 commits
- #41 Upstream, lote 2: cache de pipelines, XMA, correções de GPU e instruções PPC · @phforner0
- [GPU] Sample locked mip unnormalized fetches in the mip's grid ·
1bd47b44 - [GPU] Walk the guest swizzle for integer scales; update comments Fixed integer fetches are updated to look widths up through the guest swizzle, so every output channel is scaled by the width it came from. ·
fd0fa088 - [GPU] Give integer scales the channel width that feeds each lane ·
bfaab00e - [GPU] Mask guest fetch addresses to physical ·
6aa53642 - [GPU] Fix scalar ALU swizzles with three-source vector ops ·
1b8a3f9c - [GPU/SPIRV] Write the documented result value for kill instructions ·
92254bc5 - [CPU] Set both vcmpbfp bounds bits for a NaN operand ·
af371519 - [Kernel/XboxKrnl] Give arm64 a real spin hint ·
a924deac - [APU] Follow the sub-stream skip chain past frameless packets ·
55e5430b - Revert "Revert "[Kernel] Initial XMP Notifications"" ·
057517e7 - [APU] Drain the current frame before ending the XMA work loop ·
119d21bd - [CPU/HIR] Flip the lane index in the constant Extract fold ·
13070c2f - [CPU] Fix mcrf: copy the CR field instead of comparing it against zero ·
a236818a - [Vulkan] Cache host viewport info across draws ·
6e65c21d - [Vulkan] Fix swapped stage and access masks on scratch buffer growth ·
1554ba33 - [GPU/PM4] Publish ring read pointer every RB_BLKSZ dwords not per burst ·
f8d56eec - [XboxKrnl] Deliver guest C++ throws to a catch(...) handler ·
13dd64ac - [XMA] Count the frame whose header crosses the packet boundary ·
b158aa79 - [GPU] Sum the pipeline storage versions instead of taking the max ·
e6673018 - [XMA] Resolve XMA loop_start to a frame boundary ·
cf4a2526 - [PPC] Fix VMX128/disassembly opcode table entries ·
56aee46a - [CPU] Compare HIR constants by raw bits when merging compares ·
bfd94414 - [GPU] Let the host viewport start at a negative coordinate ·
440947bb - [GPU] Handle PM4_WAIT_IB_PFD_COMPLETE ·
9f3030a8 - [CPU] Implement mtfsb0 and mtfsb1 ·
6311899f - [Emulator] Stop host worker threads instead of terminating them ·
f66bccf0 - [PPC] Clear only the exception bits in mcrfs ·
ca0f684a - [GPU] Drop cached primitive conversions a guest write overlaps ·
bea30c1d - [PPC] Decode the mtfsfi immediate from the top of the RB field ·
8722bcb7 - [XAM] Fix XUserMuteListQuery logging an error on every call ·
bfa98fd4 - [GPU] Gate the 7e3 to 8_8_8_8 decode on the written channels ·
439ba5ef - [GPU] Wake parked guest threads on the intermediate ring read pointer ·
74149634 - [GPU] Check memexport routing on the physical vertex fetch address ·
c107f39f
- [GPU] Sample locked mip unnormalized fetches in the mip's grid ·
- #42 Upstream, lote 3: escalonador de fibras, objetos do kernel, timers, entrada e rede · @phforner0
- [Kernel] Split guest scheduler re-poll bumps from real preemptions ·
1e627ccc - [Kernel] Add the console's background window to the guest scheduler ·
d94ffd88 - [Kernel] Reconcile the guest dispatch header on native object lookup ·
4d3bc8c8 - [Kernel] Resolve the cooperative waiter once instead of per poll ·
5c6a077b - [Kernel] Guest scheduler re-home ready guest thread on affinity change ·
dcbe120b - [Kernel] Reuse one APC per timer instead of allocating one per expiry ·
eea6ebe2 - [Kernel] Signal guest scheduler timer waits from the expiry callback ·
31604dc7 - [XAM] Fix getsockname byte order and add getpeername ·
ab6a6c91 - [XAM] Poll select on guest scheduler fibers ·
0bc8b478 - [Kernel] Leave the target's IRQL alone on a host-thread APC insert ·
cedd2330 - [XAM] Return ERROR_EMPTY from XamInputGetKeystrokeEx with no keystroke ·
81db9a94 - [XAM] Report controllers like xam while UI holds the input ·
48c3949f - [XAM/Net] Fixes WSAWaitForMultipleEvents timeouts reporting ·
c78512aa - [XAM/Net] Fix socket errors not reaching WSAGetLastError ·
4f016929 - [Kernel/XSocket] Fixes recv reporting closed TCP connection as an error ·
fad9c95c - [XAM/Net] select on Android: closed sockets, nfds and failures ·
3fa6572b - [Kernel] Enter the cooperative wait before signaling in SignalAndWait ·
c34b1555 - [Kernel] Mutant release clears its owner visibly before the header (ARM64) ·
b2e00d7c - [Kernel] Thread-exit APC rundown no longer follows a timer's APC ·
0a4089cc
- [Kernel] Split guest scheduler re-poll bumps from real preemptions ·
- #44 Upstream, lote 4: backend A64, núcleo da CPU, cripto do kernel, XAM e emulador · @phforner0
- [XAM] Fixed returning incorrect max property size ·
0b22626a - [XAM] Bound profile setting and GPD string reads ·
8ef0f57b - [CPU/a64] Fix narrow (I8/I16) value-width bugs vs the x64 reference backend ·
9c9e1232 - [CPU] Don't assert on unknown thread in OnThreadExit/OnThreadDestroyed ·
4c52f179 - [A64] Preserve infinities through dot product instead of returning QNaN ·
1f421e41 - [XAM] Fixed potential OOB memory write in copy utils ·
e7216cfe - [A64] Keep a constant vector operand off the clobbered scratch ·
4546011a - [CPU/x64] Constant-initialize the emitter's XMM constant table ·
dbcba163 - [A64] Load the lvlx/lvrx base control from the literal pool ·
661190a0 - add memfd fallback and remove gate check ·
23e0f2f2 - [CPU] Publish JIT entry results under the entry table lock ·
8e07f263 - [CPU/A64] Revert the LDR + REV byte-swap detection in MMIO decode ·
79b27ef4 - [CPU] Skip the granularity call for addresses below the physical heap ·
c4c490db - [CPU] Emit the stack sync check after the source offset stamp ·
f834e997 - [CPU] Run the pending stack sync check before the epilog ·
ac135c14 - [Patcher] Fixed loading plugin configs on linux ·
df310069 - [Kernel] Take the deployment type from the container content type ·
e98da7c3 - [XboxKrnl/Crypt] Leave the padded block in the SHA context ·
62efd830 - [Emulator] Add media_type cvar to override detected media type (odd/hdd) ·
65fa42bc - [CPU] Move overlapping XEX patch regions with memmove ·
88c504df - [CPU] Record MMIO faults on a64 and gate the 0xE0000000 host offset ·
f9b12c63 - [HID] Don't treat a device-type mismatch as a controller disconnect ·
e08fc2f4 - [Emulator] Load title plugins before main thread execution begins ·
11c675f4 - [CPU] Precompile CRT static initializers before launch ·
6f99ab4a - [CPU] Replace EntryTable's split_map with a hash map and ready index ·
d2328ce3 - [CPU] Fix XEX patches that move the image base ·
f0f6bc15 - [Core] Report JIT exceptions outside any guest function safely ·
c53a68c1 - [PPC] Lower a direct call with no owning module as an indirect call ·
d7ee3759 - [A64] Forget the FPCR mode across CallNativeSafe ·
a602bc4a - [A64] Load both constants in float MAX/MIN ·
1f6f7328 - [A64] Enter host code with the host FPCR, not the guest's ·
fce63b9b - [CPU] Keep host and guest FP modes apart around guest callbacks ·
f7599498 - [CPU] Never resolve a longjmp onto a function's first instruction ·
8d0f9f69 - [Kernel] Schedule the RC4 key with its own size ·
0c398806 - [Kernel] Fix RSA bignum long division ·
2c7d8f58 - [Emulator] Keep migrated headers until every copy of them succeeds ·
fe8111f0 - [APU] Give the null audio system a driver that discards frames ·
f0a58ec9 - [XAM] Add mutex for properties vector ·
02f4af85 - [XAM] Fix profiles with a language set reading as parental controlled ·
6d22962f - [APU] Keep the pump top-up off the null audio driver ·
865fee0a - and 1 more commits
- [XAM] Fixed returning incorrect max property size ·
- #43 Upstream, lote 5: texturas 1D largas, layout de texturas, resolves e memexport (depende do #41) · @phforner0
- [GPU] Sample locked mip unnormalized fetches in the mip's grid ·
1bd47b44 - [GPU] Walk the guest swizzle for integer scales; update comments Fixed integer fetches are updated to look widths up through the guest swizzle, so every output channel is scaled by the width it came from. ·
fd0fa088 - [GPU] Give integer scales the channel width that feeds each lane ·
bfaab00e - [GPU] Mask guest fetch addresses to physical ·
6aa53642 - [GPU] Fix scalar ALU swizzles with three-source vector ops ·
1b8a3f9c - [GPU/SPIRV] Write the documented result value for kill instructions ·
92254bc5 - [CPU] Set both vcmpbfp bounds bits for a NaN operand ·
af371519 - [Kernel/XboxKrnl] Give arm64 a real spin hint ·
a924deac - [APU] Follow the sub-stream skip chain past frameless packets ·
55e5430b - Revert "Revert "[Kernel] Initial XMP Notifications"" ·
057517e7 - [APU] Drain the current frame before ending the XMA work loop ·
119d21bd - [CPU/HIR] Flip the lane index in the constant Extract fold ·
13070c2f - [CPU] Fix mcrf: copy the CR field instead of comparing it against zero ·
a236818a - [Vulkan] Cache host viewport info across draws ·
6e65c21d - [Vulkan] Fix swapped stage and access masks on scratch buffer growth ·
1554ba33 - [GPU/PM4] Publish ring read pointer every RB_BLKSZ dwords not per burst ·
f8d56eec - [XboxKrnl] Deliver guest C++ throws to a catch(...) handler ·
13dd64ac - [XMA] Count the frame whose header crosses the packet boundary ·
b158aa79 - [GPU] Sum the pipeline storage versions instead of taking the max ·
e6673018 - [XMA] Resolve XMA loop_start to a frame boundary ·
cf4a2526 - [PPC] Fix VMX128/disassembly opcode table entries ·
56aee46a - [CPU] Compare HIR constants by raw bits when merging compares ·
bfd94414 - [GPU] Let the host viewport start at a negative coordinate ·
440947bb - [GPU] Handle PM4_WAIT_IB_PFD_COMPLETE ·
9f3030a8 - [CPU] Implement mtfsb0 and mtfsb1 ·
6311899f - [Emulator] Stop host worker threads instead of terminating them ·
f66bccf0 - [PPC] Clear only the exception bits in mcrfs ·
ca0f684a - [GPU] Drop cached primitive conversions a guest write overlaps ·
bea30c1d - [PPC] Decode the mtfsfi immediate from the top of the RB field ·
8722bcb7 - [XAM] Fix XUserMuteListQuery logging an error on every call ·
bfa98fd4 - [GPU] Gate the 7e3 to 8_8_8_8 decode on the written channels ·
439ba5ef - [GPU] Wake parked guest threads on the intermediate ring read pointer ·
74149634 - [GPU] Check memexport routing on the physical vertex fetch address ·
c107f39f - [GPU] Handle two component tfetch1D coordinates ·
91790b6a - [GPU] Select alpha for A8 resolves ·
231e2265 - [GPU] Wide 1D textures: sample at the row center, row pitch of 8192 ·
9198eaa5 - [GPU] Select promoted tfetch1D layouts at runtime ·
4ad5b4a8 - [GPU] Fix base map selection with a separate mip page ·
8073cdf4 - [Vulkan] Push scaled resolve barriers instead of recording directly ·
2fb20ea8 - [GPU] Specialize FSI pixel shaders for the guest MSAA sample count ·
4853b8e4 - and 15 more commits
- [GPU] Sample locked mip unnormalized fetches in the mip's grid ·
- #45 Upstream, cripto: criptografia do kernel e decifragem de XEX sobre o Mbed TLS · @phforner0
- [XAM] Fixed returning incorrect max property size ·
0b22626a - [XAM] Bound profile setting and GPD string reads ·
8ef0f57b - [CPU/a64] Fix narrow (I8/I16) value-width bugs vs the x64 reference backend ·
9c9e1232 - [CPU] Don't assert on unknown thread in OnThreadExit/OnThreadDestroyed ·
4c52f179 - [A64] Preserve infinities through dot product instead of returning QNaN ·
1f421e41 - [XAM] Fixed potential OOB memory write in copy utils ·
e7216cfe - [A64] Keep a constant vector operand off the clobbered scratch ·
4546011a - [CPU/x64] Constant-initialize the emitter's XMM constant table ·
dbcba163 - [A64] Load the lvlx/lvrx base control from the literal pool ·
661190a0 - add memfd fallback and remove gate check ·
23e0f2f2 - [CPU] Publish JIT entry results under the entry table lock ·
8e07f263 - [CPU/A64] Revert the LDR + REV byte-swap detection in MMIO decode ·
79b27ef4 - [CPU] Skip the granularity call for addresses below the physical heap ·
c4c490db - [CPU] Emit the stack sync check after the source offset stamp ·
f834e997 - [CPU] Run the pending stack sync check before the epilog ·
ac135c14 - [Patcher] Fixed loading plugin configs on linux ·
df310069 - [Kernel] Take the deployment type from the container content type ·
e98da7c3 - [XboxKrnl/Crypt] Leave the padded block in the SHA context ·
62efd830 - [Emulator] Add media_type cvar to override detected media type (odd/hdd) ·
65fa42bc - [CPU] Move overlapping XEX patch regions with memmove ·
88c504df - [CPU] Record MMIO faults on a64 and gate the 0xE0000000 host offset ·
f9b12c63 - [HID] Don't treat a device-type mismatch as a controller disconnect ·
e08fc2f4 - [Emulator] Load title plugins before main thread execution begins ·
11c675f4 - [CPU] Precompile CRT static initializers before launch ·
6f99ab4a - [CPU] Replace EntryTable's split_map with a hash map and ready index ·
d2328ce3 - [CPU] Fix XEX patches that move the image base ·
f0f6bc15 - [Core] Report JIT exceptions outside any guest function safely ·
c53a68c1 - [PPC] Lower a direct call with no owning module as an indirect call ·
d7ee3759 - [A64] Forget the FPCR mode across CallNativeSafe ·
a602bc4a - [A64] Load both constants in float MAX/MIN ·
1f6f7328 - [A64] Enter host code with the host FPCR, not the guest's ·
fce63b9b - [CPU] Keep host and guest FP modes apart around guest callbacks ·
f7599498 - [CPU] Never resolve a longjmp onto a function's first instruction ·
8d0f9f69 - [Kernel] Schedule the RC4 key with its own size ·
0c398806 - [Kernel] Fix RSA bignum long division ·
2c7d8f58 - [Emulator] Keep migrated headers until every copy of them succeeds ·
fe8111f0 - [APU] Give the null audio system a driver that discards frames ·
f0a58ec9 - [XAM] Add mutex for properties vector ·
02f4af85 - [XAM] Fix profiles with a language set reading as parental controlled ·
6d22962f - [APU] Keep the pump top-up off the null audio driver ·
865fee0a - and 18 more commits
- [XAM] Fixed returning incorrect max property size ·
- #46 Upstream, lote 6: desempenho da CPU (backend A64, frontend PPC, passes do HIR) e do áudio · @phforner0
- [GPU] Sample locked mip unnormalized fetches in the mip's grid ·
1bd47b44 - [GPU] Walk the guest swizzle for integer scales; update comments Fixed integer fetches are updated to look widths up through the guest swizzle, so every output channel is scaled by the width it came from. ·
fd0fa088 - [GPU] Give integer scales the channel width that feeds each lane ·
bfaab00e - [GPU] Mask guest fetch addresses to physical ·
6aa53642 - [GPU] Fix scalar ALU swizzles with three-source vector ops ·
1b8a3f9c - [GPU/SPIRV] Write the documented result value for kill instructions ·
92254bc5 - [CPU] Set both vcmpbfp bounds bits for a NaN operand ·
af371519 - [Kernel/XboxKrnl] Give arm64 a real spin hint ·
a924deac - [APU] Follow the sub-stream skip chain past frameless packets ·
55e5430b - Revert "Revert "[Kernel] Initial XMP Notifications"" ·
057517e7 - [APU] Drain the current frame before ending the XMA work loop ·
119d21bd - [CPU/HIR] Flip the lane index in the constant Extract fold ·
13070c2f - [CPU] Fix mcrf: copy the CR field instead of comparing it against zero ·
a236818a - [Vulkan] Cache host viewport info across draws ·
6e65c21d - [Vulkan] Fix swapped stage and access masks on scratch buffer growth ·
1554ba33 - [GPU/PM4] Publish ring read pointer every RB_BLKSZ dwords not per burst ·
f8d56eec - [XboxKrnl] Deliver guest C++ throws to a catch(...) handler ·
13dd64ac - [XMA] Count the frame whose header crosses the packet boundary ·
b158aa79 - [GPU] Sum the pipeline storage versions instead of taking the max ·
e6673018 - [XMA] Resolve XMA loop_start to a frame boundary ·
cf4a2526 - [PPC] Fix VMX128/disassembly opcode table entries ·
56aee46a - [CPU] Compare HIR constants by raw bits when merging compares ·
bfd94414 - [GPU] Let the host viewport start at a negative coordinate ·
440947bb - [GPU] Handle PM4_WAIT_IB_PFD_COMPLETE ·
9f3030a8 - [CPU] Implement mtfsb0 and mtfsb1 ·
6311899f - [Emulator] Stop host worker threads instead of terminating them ·
f66bccf0 - [PPC] Clear only the exception bits in mcrfs ·
ca0f684a - [GPU] Drop cached primitive conversions a guest write overlaps ·
bea30c1d - [PPC] Decode the mtfsfi immediate from the top of the RB field ·
8722bcb7 - [XAM] Fix XUserMuteListQuery logging an error on every call ·
bfa98fd4 - [GPU] Gate the 7e3 to 8_8_8_8 decode on the written channels ·
439ba5ef - [GPU] Wake parked guest threads on the intermediate ring read pointer ·
74149634 - [GPU] Check memexport routing on the physical vertex fetch address ·
c107f39f - [XAM] Fixed returning incorrect max property size ·
0b22626a - [XAM] Bound profile setting and GPD string reads ·
8ef0f57b - [CPU/a64] Fix narrow (I8/I16) value-width bugs vs the x64 reference backend ·
9c9e1232 - [CPU] Don't assert on unknown thread in OnThreadExit/OnThreadDestroyed ·
4c52f179 - [A64] Preserve infinities through dot product instead of returning QNaN ·
1f421e41 - [XAM] Fixed potential OOB memory write in copy utils ·
e7216cfe - [A64] Keep a constant vector operand off the clobbered scratch ·
4546011a - and 58 more commits
- [GPU] Sample locked mip unnormalized fetches in the mip's grid ·
- #39 Varredura do upstream (xenia-edge, Canary e game-patches): o que vale portar, em 37 temas e 6 lotes · @phforner0
- Docs: upstream sweep of xenia-edge, Canary and game-patches (2026-10-15) ·
d93fb6e6 - Docs: upstream sweep, what moved while porting batches 1 and 2 ·
2003e9f6 - Docs: upstream sweep, what moved while porting batch 3, and what the triage missed ·
2ffd215c - Docs: upstream sweep, what moved while porting batches 4 and 5 ·
d034e4e5 - Docs: upstream sweep, the crypto and batch 6 PRs, and what batch 1 gained ·
fcf9f366 - Docs: upstream sweep, review fixes to the batch 1, crypto and batch 6 notes ·
b6b9d523 - Docs: upstream sweep, the batch 6 A/B on the POCO F7 ·
c49ad6b8
- Docs: upstream sweep of xenia-edge, Canary and game-patches (2026-10-15) ·
- #49 Licença: o código do Xendroid+ sob a AGPL-3.0-or-later · @phforner0
- License Xendroid+'s own code under the AGPL-3.0-or-later ·
902f010f
- License Xendroid+'s own code under the AGPL-3.0-or-later ·
Built by Xendroid+ #87 from 29223981, signed with the release key.
| File | Size | SHA-256 |
|---|---|---|
XenDroid_Release_29223981.apk
| 40.5 MiB | 5d7613446422b31849e46792c6c7b2b4745266e8e1d258d949e5b220327710d6
|