github phforner0/Xendroid-Plus XenDroid-v132-80237530
Xendroid+ 0.2.0

4 hours ago

First step toward XNA games such as Bastion: the console kernel's user mode, which their .NET runtime needs.

Controller navigation: the focus no longer gets stuck in the search field, and B no longer closes the app at once.

Settings that games change, and more useful diagnostic logs.

Prototype's city is lit again, and Dirt 3 loses its harsh contrast.

Naruto: Rise of a Ninja no longer closes a few seconds after it starts.

GPU fixes from Xenia Edge, and Forza Motorsport 4's car shadow.

Kernel, CPU and file fixes from Xenia Edge.

Content and profile fixes from Xenia Edge, as a console behaves, and installed packages that keep opening.

Network fixes from Xenia Edge, and socket options that work on Android.

User mode fixes from Xenia Edge for XNA games such as Bastion.

GPU diagnostics for bug reports: the packets around a GPU command failure go to the log, and a diagnostic build can capture a frame.

  • The kernel's user mode, where the runtime of XNA games runs the game's code, is now implemented.
  • Code a game compiles while it runs is now translated, and dropped again when the game rewrites it.
  • Text fields let the D-pad and B out, and A shows the keyboard again.
  • A controller's first press in the library goes to the games, not to the search field.
  • With a controller, sheets and the Start menu take the focus on their first control, and B closes them at once.
  • B at the library asks "Press B again to exit" before leaving the app.
  • The Settings summary lists the games with settings of their own again, and a setting shows how many games use another value.
  • The Drivers screen marks a driver that games use and warns before removing it.
  • Shared diagnostic logs keep the start of the emulator log, with the GPU, driver and settings, the end of the previous session's log, where a crash is, and the times of the system log.
  • Prototype no longer draws the ground, buildings and people black on Turnip drivers.
  • Dirt 3's menus and stages no longer come out nearly black and overly contrasted on Turnip drivers.
  • Naruto: Rise of a Ninja no longer closes with "Guest crashed" a few seconds after starting, which happened in about half of the launches. Its threads run as system threads again.
  • 16-bit fixed render targets use the hardware's 10 fractional bits, and packed mip tails, 8-bit format aliases and one-component vertex fetches load correctly.
  • float16 render targets and memory exports round as the Xbox 360 GPU does.
  • Forza Motorsport 4's car no longer sits on a black square: its shadow's depth moments resolve and sample as integers.
  • A longjmp lands in the frame of the function it returns to: code no longer runs twice or crashes after a setjmp.
  • Arguments past the eighth register, such as the 64-bit ones of sprintf and DbgPrint, come from the right bytes.
  • Unloading a title update no longer unloads the game's own module, and saves no longer turn read-only from a bad attribute write.
  • Saves and DLC copied from Xenia Canary in its current header format are read without conversion.
  • Content names are checked as the console checks them, so no name reaches outside its own package.
  • A title update or DLC installed from a file with a comma, plus sign or accent in its name gets a folder name the game can open; ones installed before are renamed when the game starts.
  • Offline profiles report the console's language and country instead of none.
  • Socket timeouts a game sets now take effect on Android, where they failed.
  • Sockets and network events are freed when the game closes them, and closed when the game ends.
  • XNet startup parameters read back as the console reports them.
  • In XNA games, a TB flush keeps the pages whose entries didn't change mapped instead of dropping them all, and a new page can't be written by another thread before its protection is set.
  • When the GPU can't execute a command, the log shows the last commands read and the bytes around the failing one.
  • The window paint request no longer fills a quarter of the log.
  • A diagnostic build (XENDROID_GPU_TRACE=true) adds Capture frame to the in-game menu, which writes the next frame's GPU commands in Xenia Edge's trace format; regular builds are unchanged.

Full Changelog: XenDroid-v104-8715d0fb...XenDroid-v132-80237530

🇧🇷 Em português

Primeiro passo para jogos XNA como o Bastion: o user mode do kernel do console, de que o runtime .NET deles precisa.

Navegação por controle: o foco não fica mais preso na busca, e o B não fecha mais o app de uma vez.

Configurações que os jogos mudam, e logs de diagnóstico mais úteis.

A cidade do Prototype volta a ser iluminada, e o Dirt 3 perde o contraste exagerado.

O Naruto: Rise of a Ninja não fecha mais alguns segundos depois de abrir.

Correções de GPU do Xenia Edge, e a sombra do carro do Forza Motorsport 4.

Correções do Xenia Edge no kernel, na CPU e nos arquivos.

Correções do Xenia Edge em conteúdo e perfis, como o console se comporta, e pacotes instalados que continuam abrindo.

Correções de rede do Xenia Edge, e opções de socket que funcionam no Android.

Correções do Xenia Edge no user mode, para jogos XNA como o Bastion.

Diagnóstico de GPU para relatos de bug: os pacotes em volta de uma falha de comando da GPU vão para o log, e um build de diagnóstico pode capturar um quadro.

  • O user mode do kernel, onde o runtime dos jogos XNA roda o código do jogo, agora está implementado.
  • Código que um jogo compila enquanto roda agora é traduzido, e descartado de novo quando o jogo o reescreve.
  • Os campos de texto deixam o direcional e o B saírem, e o A reabre o teclado.
  • O primeiro direcional na biblioteca vai para os jogos, não para a busca.
  • Com controle, as folhas e o menu Start recebem o foco no primeiro controle, e o B as fecha de uma vez.
  • O B na biblioteca pede "Aperte B de novo para sair" antes de fechar o app.
  • O resumo das configurações volta a listar os jogos com configurações próprias, e uma configuração mostra quantos jogos usam outro valor.
  • A tela de drivers marca o driver que jogos usam e avisa antes de removê-lo.
  • Os logs de diagnóstico compartilhados mantêm o começo do log do emulador, com GPU, driver e configurações, o fim do log da sessão anterior, onde fica um crash, e as horas do log do sistema.
  • O Prototype não desenha mais o chão, os prédios e as pessoas em preto com os drivers Turnip.
  • Os menus e as fases do Dirt 3 não saem mais quase pretos e com contraste exagerado com os drivers Turnip.
  • O Naruto: Rise of a Ninja não fecha mais com "Guest crashed" alguns segundos depois de abrir, o que acontecia em cerca de metade das aberturas. Os threads dele voltam a ser threads do sistema.
  • Alvos de 16 bits fixos usam os 10 bits de fração do hardware, e mip tails empacotados, os apelidos dos formatos de 8 bits e os vertex fetches de um componente carregam certo.
  • Alvos float16 e memexports arredondam como a GPU do Xbox 360.
  • O carro do Forza Motorsport 4 não fica mais sobre um quadrado preto: os momentos de profundidade da sombra são resolvidos e amostrados como inteiros.
  • Um longjmp volta para o frame da função certa: o código não roda duas vezes nem cai depois de um setjmp.
  • Os argumentos depois do oitavo registrador, como os de 64 bits do sprintf e do DbgPrint, são lidos dos bytes certos.
  • Descarregar uma title update não descarrega mais o módulo do jogo, e o save não fica mais só leitura por um atributo mal lido.
  • Saves e DLC copiados do Xenia Canary no formato de cabeçalho atual são lidos sem conversão.
  • Os nomes de conteúdo são checados como o console checa, e nenhum nome sai da pasta do próprio pacote.
  • Um TU ou DLC instalado de um arquivo com vírgula, sinal de mais ou acento no nome recebe uma pasta que o jogo abre; os instalados antes são renomeados quando o jogo começa.
  • Perfis offline informam o idioma e o país do console em vez de nenhum.
  • Os timeouts de socket que um jogo define passam a valer no Android, onde falhavam.
  • Sockets e eventos de rede são liberados quando o jogo os fecha, e fechados quando o jogo termina.
  • Os parâmetros de início do XNet são devolvidos como o console os devolve.
  • Nos jogos XNA, um flush do TB mantém mapeadas as páginas cujas entradas não mudaram, em vez de derrubar todas, e outra thread não consegue escrever numa página nova antes de a proteção dela ser aplicada.
  • Quando a GPU não consegue executar um comando, o log mostra os últimos comandos lidos e os bytes em volta do que falhou.
  • O pedido de pintura da janela não ocupa mais um quarto do log.
  • Um build de diagnóstico (XENDROID_GPU_TRACE=true) acrescenta "Capturar quadro" ao menu do jogo, que grava os comandos de GPU do próximo quadro no formato de trace do Xenia Edge; os builds normais ficam iguais.
📜 Every change since build 104 · 11 pull requests, 154 commits
  • #58 Upstream, XNA: user mode do kernel para jogos XNA (Bastion, #48) · @phforner0
    • [CPU/PPC] Read guest instructions through the owning module · fcf8fa45
    • [Memory] Map a user mode address space on demand · 3171103b
    • [CPU] Let the kernel handle guest system calls · 32a0f6cf
    • [CPU/x64] Run guest code that no module claims · fbceba22
    • [Base/Threading] Let a created fiber restart from its entry · 79977a26
    • [Kernel] Report XEX section protection from KeGetImagePageTableEntry · 8e9fbd11
    • [CPU/x64] Keep separate stackpoint records per host stack · bbd8a8ca
    • [Kernel] Implement Ke*UserMode · 0fbe97f7
    • [a64] Port the backend half of user mode to a64 · 64da28a1
    • [Kernel] Log the stack pointer of a dropped user mode trap · 9dfe54dc
    • [CPU/PPC] Take a function's extent from the last instruction scanned · a6d035af
    • [CPU] Invalidate compiled code when a guest sweeps the instruction cache · 2992575d
    • [Memory] Translate user mode addresses through the guest page table · b41d1f8a
    • [CPU] Commit the indirection table on demand · 849b7177
    • [CPU] Bound dynamic code functions by the range the guest swept · 5194935f
    • [CPU] Read dynamic code through the physical view · f064caa1
    • [Kernel/win32] Deliver user mode page faults to the guest · 83e6f7a6
    • [Memory] Drive every user mode segment from the page table · 6533804c
    • [Memory] Emulate the kernel page table self-map · 466c718b
    • [Memory] Apply GPU write watches to the user mode views · 49d85fa5
    • [Kernel] Implement KeContextToKframes and the user mode context flag · c9ebea78
    • [Kernel] Give a user mode context with no stack part of the kernel stack · 2d0092d2
    • [CPU] Bound dynamic code by swept range ending on any unconditional branch · 7c2d3dbf
    • [CPU] Implement PPCContext::set_cr · 440479d7
    • [CPU] Stop calls from reaching dropped dynamic code · 639f8baa
    • [CPU] Keep a swept span when a sweep patches one instruction inside it · 3a5fd138
    • [CPU] Drop dynamic code compiled under another name for swept memory · d2779369
    • [Kernel/CPU] Deliver an instruction fetch fault at a user mode call target · b25f7238
    • [Memory] Map file views into single pages of a reserved range · 05e172c5
    • [Memory] Show user mode pages in 4 KB views and honor PTE protection · 38cd766c
    • [Memory] Fault on a missing 4 KB user mode entry next to present ones · 1b1dcf9a
    • [Memory] Let the user mode page table decide over kernel allocations · 9634bd29
    • [Kernel] Keep a trap frame for interrupted user mode code · 651a3e17
    • [Memory] Show kernel memory for a user entry with no frame · 58f45ccf
    • [CPU] Compile dynamic code again when a sweep lands during the compile · 36cd0093
    • [Memory] Set the changed bit of user mode page table entries · 237beaaf
    • [Memory/Posix] Hold the user mode window as a view reservation · 3b66c301
    • [Memory/Posix] Log a failed user mode page reservation · 68b685c6
    • [XAM] Sign in the XamUserLogon set slot by slot · 041635d7
    • [Kernel] Place the trap frame's ctr, cr and xer where XeFu reads them · 2de48e7a
    • and 4 more commits
  • #62 Navegação por controle: campos de texto, primeiro foco, folhas e confirmação para sair · @phforner0
    • UI: text fields let a controller out · 4758ac1e
    • Library: a controller's first press goes to the covers · b862f897
    • Sheets and the Start menu: no focus stops around the controls · 3f8b4004
    • App: a controller's B at the library asks before leaving · 888fbe7e
    • Tests: controller focus on the JVM · 7ff87be0
  • #79 Configurações e diagnóstico: os valores próprios dos jogos voltam a ser lidos, e logs longos guardam o começo e o fim · @phforner0
    • Settings: the games' own values are read again · fce25753
    • Diagnostics: keep the start and end of long logs, and logcat's times · aec92734
    • Site: the per-game config folder comes from perGameConfigDir() · c009fd09
    • Site: the extractor also reads the stable release's ConfigStore · efc9849d
  • #80 Prototype e Dirt 3: o arredondamento de 21 bits volta à forma com seleção (a cena volta a ser iluminada) · @phforner0
    • GPU: the 21-bit rounding with the select again, except for the Forza titles · 8d77678c
  • #82 Naruto: os threads voltam a ser do sistema (o jogo fechava alguns segundos depois de abrir) · @phforner0
    • Naruto: its threads on host threads again · 05cddf50
  • #90 Upstream, lote 9: GPU (16 bits fixos com 10 bits de fração, mip tail, float16) e a sombra do carro do FM4 · @phforner0
    • [GPU] Answer the 8 bit format alias questions · f0e9cb0f
    • [GPU] Proper fixed 16 bit EDRAM scaling · 32578305
    • [GPU] Fix packed mip tail addressing and 2x1 offsets · 2caf2b57
    • [GPU] Unwatch destroyed textures under the global lock · d76297fc
    • [GPU] Fix invalid SPIR-V scaling one-component vertex fetches · 15b32e2e
    • [GPU] Fix converted index buffer pages being sized 16 times too large · 97e98edc
    • [GPU] Fix shader interpreter's loop stack overflow on wrong aL · 98d21f05
    • [GPU] Blend the fixed point formats in 10-bit ints in FSI/ROV · fa4bd442
    • [GPU] Fix float16 render targets and exports rounding · 2ab9fcaf
    • GPU: 16-bit fixed resolves to signed integers can copy the integers · 8e930244
    • FM4: its car shadow resolves and samples its depth moments as integers · 4b34ca56
    • FM4: the car shadow quirk says how it was measured · 90671f84
    • Merge branch 'main' into upstream/lote-9 · e767a71c
  • #85 Upstream, lote 10: kernel, CPU e arquivos (longjmp no frame certo, argumentos de 64 bits, APCs) · @phforner0
    • [Kernel/CPU] Fix module unloads freeing another module with same name · 212050a4
    • [Kernel] Free title update modules once they are applied · bf5f6437
    • [APU] Fix buffer and file cleanup when loading a song · cf5dbddd
    • [Kernel] Fix stack arguments past r10 being read from the wrong bytes · 938fa214
    • [Kernel] Fix overlapped completions writing the thread handle into InternalContext · 5a62a89d
    • [Kernel] Don't signal the overlapped event when a completion routine is set · dcad93e6
    • [XboxKrnl] Fix APC kernel routines getting the list entry instead of the APC · 8788cd6c
    • [Kernel] Hold kernel APCs off inside a critical region · 4c5ce7bc
    • [XboxKrnl] Run kernel APC queued to the current thread before KeInsertQueueApc returns · 16ad693a
    • [Kernel] Implement IoCreateFile · e0bf5c44
    • [Kernel] Define StfsCreateDevice and StfsControlDevice · a2414f2a
    • [Kernel] Fix failed opens writing -1 as handle and action as information · e2a45e11
    • [Kernel] Fix NtCancelTimer reporting every timer as not signaled · 3f2e4200
    • [Kernel] Fix failed file information calls writing the status block · 7147bc29
    • [Kernel] Fix NtSetInformationFile reading basic attributes from the padding · b4616e24
    • [A64] Cache dynamic code targets of direct calls and at return sites · 8f3de3d9
    • [A64] Let a dynamic blr target take its caller's frame · 626d081f
    • [A64] Return to host code from a branch to the host return address · 1d377461
    • [A64] Land a longjmp only in a frame of the function it lands in · 46af8ef8
    • [Base] Classify arm64 cache maintenance faults as reads · efb82bde
    • [XboxKrnl/Crypt] Fix xefu's Xbox HD key coming from uninitialized memory · 675bc184
    • [XboxKrnl/Crypt] XeKeysGetKey hands out key 0x19 · 49d79c68
    • [Kernel] Fix KeSetEvent and KeResetEvent reporting wrong previous state · da7f3464
    • [Kernel] Fix NtCreate* opening existing named object without OBJ_OPENIF · ab3df4a2
    • [Kernel] Fix named objects losing their name when one of their handles closes · 1015ca16
    • [Kernel] Write the overlapped result after its length · 8ffcc8ce
    • [Kernel] Keep handle table lookups within the table · 8065131c
    • [Kernel] Don't leak the name lookup's reference in ObReferenceObjectByName · 85e445c7
  • #88 Upstream, lote 11: conteúdo e perfis (nomes validados como no FATX, cabeçalhos do Canary, instalador) · @phforner0
    • [XAM] Fix titles reading a stale creator flag for missing content · 6d0360a6
    • [XAM] Support content headers in canary's current format · 9b6d1089
    • [XAM] Fix content calls leaving outputs stale or failing · f574aa1a
    • [XAM] Fix content creates on in-use root / content calls for other users · 8e3590e8
    • [XAM] Fix content file names that reach past their package · a2f10586
    • [XAM] Store content named with the shared bit under XUID 0 · 15b61d1d
    • [XAM] Fix XamContentGetThumbnail writing the size when it fails or gets a buffer · 8418bdf0
    • [XAM] Fix content requests completing an overlapped with the raw error · 371750c1
    • [XAM] Fix missing content giving the wrong error and SetThumbnail creating it · ea4c2daf
    • [XAM] Fix deleting open content giving the wrong error or missing it's open · a6a95cce
    • [XAM] Fix TRUNCATE_EXISTING recreating content instead of emptying it · 3e240929
    • [XAM] Fix content creates on a root in use leaving no package · 5e3e8453
    • [XAM] Fix XamUserGetName writing nothing for a buffer length of 0 · 67414095
    • [XAM] Fail XamUserGetSigninInfo past the last user with an invalid argument · 40391e23
    • [XAM] Fail XamUserContentRestrictionGetFlags past the last user · 8720f6b9
    • [XAM] Fail profile setting reads for an empty or oversized XUID array · 3ad7575d
    • [XAM] Use the console language and country for profiles without one · d341b28c
    • [XAM] Fail XamUserContentRestrictionGetRating for content type 0 · 75e3ef0b
    • [XAM] Complete XamUserContentRestrictionCheckAccess for content type 0 synchronously · 9c47be94
    • [XAM] Fail XamUserCreateTitlesPlayedEnumerator for an empty slot · 2722ea2c
    • [XAM] Fail XamWriteGamerTile past the last user with function failed · bbfc5750
    • [XAM] Return HRESULTs from XamUserGetSubscriptionType · 5d3fc290
    • [XAM] Fail XamUserGetUserTenure for an empty slot with no such user · 40f3f8e0
    • [XAM] Accept gamer tile keys that aren't hex strings · 30fbe752
    • [XAM] Fix XamPartyGetUserListInternal leaving user list unwritten · aa40e529
    • Content: installed packages take names the content calls accept · bd9c49e4
  • #86 Upstream, lote 12: rede (sockets liberados e fechados, timeouts de socket no Android) · @phforner0
    • [XAM/Net] Fix sockets never being destroyed · 637379ab
    • [Kernel] Close host sockets left open at kernel teardown · 43f8c15d
    • [Kernel/Socket] Set SO_REUSEADDR only on stream sockets · 2ae27cba
    • [XAM/Net] Fix WSA events never being destroyed · b7d5a18f
    • [Net] Accept a one-byte BOOL for SO_BROADCAST · 38c83425
    • Net: socket timeouts kept off the host, integer options in the host's form · 82772119
    • [XAM/Net] Fix titles reading back zero XNet startup parameters · 84970603
    • [XAM/Net] Implement XNetGetBroadcastVersionStatus · bb0a3065
    • Merge branch 'main' into upstream/lote-12 · 1598262b
  • #87 Upstream, lote 13: user mode do XNA (vistas protegidas e flush do TB) · @phforner0
    • [Memory] Keep user mode views inaccessible until they're protected · 31cbd73a
    • [Memory] Keep user mode pages whose entries didn't change across TB flushes · c4df1456
    • [Kernel] Drop every user mode page on an entire TB flush · 2b1835c1
  • #91 Diagnóstico de GPU: pacotes PM4 no log e "Capturar quadro" no APK de diagnóstico · @phforner0
    • GPU: the last packets read go to the log when one can't be executed · 29aaec41
    • Android: the window paint request logs at debug level · 27bd88d3
    • [GPU] Add trace replay and shader bisect tooling · 33ea10d9
    • [GPU] Record the Metal shared memory into frame traces · df177ff9
    • [GPU] Hoist EDRAM snapshot capture into the shared render target cache · becff5cf
    • [GPU] Record used textures into frame traces · 36736d42
    • Diagnostic build: Capture frame writes the next frame's GPU trace · ae1db6d2
    • GPU: frame traces invalidate the readback memory they read · b353aa9b
    • Diagnostic build: a scaled capture says it has no EDRAM · 44c8c947

Built by Xendroid+ #132 from 80237530, signed with the release key.

File Size SHA-256
XenDroid_Release_80237530.apk 40.6 MiB f5d845d2dea871d2a1a3aa8b97098c6d8d8fb692982c14b8b42bdb00deefbf9b

Don't miss a new Xendroid-Plus release

NewReleases is sending notifications on new releases.