Xell-Reloaded Build Compatible With All Consoles, Including Winchester

  • Thread starter Thread starter alexfree
  • Start date Start date
  • Views Views 7,017
  • Replies Replies 23
  • Likes Likes 7
Consulte fazer o Mupen64-360 rodar em um Xbox 360 com placa-mãe Winchester. Aqui está uma explicação gerada pela IA que ajudou a corrigir, juntamente com o link de download dos arquivos XeLL Reloaded e Mupen64-360 corrigidos. Eu mesmo ainda não li a explicação completa, então estou compartilhando-a enquanto a IA a produção.

Este foi basicamente um projeto de codificação de vibração com GPT Codex e Claude, e o resultado pareceu ter sido muito feito. Dito isto, levou muito tempo, dinheiro e perseverança. Também tive que confiar muito no racismo lógico para elaborar o método, decidir o que testar, interpretar os resultados e manter a investigação em andamento. A IA fez grande parte da codificação, mas chegou a um resultado funcional ainda exigiu muitos testes práticos e resolução de problemas.

Também pretendo trabalhar para conservar mais emuladores, até ficar ligado.

A investigação e as correções foram realizadas com a ajuda do GPT Codex e Claude. Ambos foram usados para analisar o código-fonte, interpretar logs, identificar bugs e desenvolver correções, consultar os resultados foram testados diretamente no Xbox 360 Winchester.

O problema não foi causado por uma incompatibilidade. Envolva o carregador XeLL ELF, uma recuperação USB no libxenon e o código de montagem em disco usado pelo Mupen64-360.

No XeLL Reloaded, primeiro corrigimos um problema de ordem de compilação no fork sem alex. O destino stage2.elf32.gz remove arquivos de objeto que ainda são necessários para o link do Stage 1, então a ordem de compilação teve que ser ajustada. Também restaurantes o arquivo de regras ausente exigido pelo conjunto de ferramentas. A mudança é mais importante para o restaurante elf.c e elf_run.S antes da reescrita do carregador ELF em maio de 2020, mantendo o restaurante do libxenon moderno. Com essa combinação, o XeLL finalmente conseguiu entrar na execução ao Mupen recompilado.

Sem libxenon, corrigimos um acesso de ponteiro nulo em qh_end_transfer() que causou a tela vermelha de falta com dar=0x3c. Também desobrimos que a recuperação USB está redefinindo a porta 0 em vez da porta onde o dispositivo está realmente conectado. No nosso caso, a unidade flash estava na porta 4, não a recuperação poder redefinir repetidamente a porta errada e deixar o driver de armamento presente em seu loop de nova tentativa. Ambas como chamadas de reinicialização foram alteradas para usar a porta real do dispositivo. Outra correção fez com que ehci_reset_usb_port() retornasse um erro ao entrar uma porta de baixa velocidade ao OHCI, impedindo que o código EHCI tente inicializar uma porta que não possua mais. EHCI_TUNE_CERR também foi restaurado de 0 para 3, agora essa não tem sido a principal causa do problema.

Mupen64-360 foi todo reconstruído contra o libxenon corrigido. Isso exige localizar, compilar e instalar ZLX-Library, libxemit e ntfs-xenon. Também ativos que reconstruir e reinstalar o ZLX depo que uma biblioteca incompleta causou erros no vinculador envolvendo símbolos como ZLX::Font, ZLX::Browser e ZLX::Console.

O congelamento do carregamento da ROM Acabou tendo uma causa separada. A unidade flash foi formatada como FAT diretamente no setor 0, sem MBR, um layout comumente chamado de superfloppy. O ZLX estava vendendo a assinatura 0x55AA e interpretando o setor de inicialização FAT como uma tabela de participação. Isso produz LBAs usados, incluindo 0x7265206B, que inicialmente parece um problema de USB ou SCSI. O esforço de retorno ajudou a resolver o problema FindPartitions() em mount.cpp.

Corrigimos a detecção de participação para que ela verifique FAT16 ou FAT32 diretamente no setor 0 antes de tentar interpretar o setor como um MBR. Se um sistema de arquivos FAT válido para encontro lá, ele será montado como uma participação chegando no setor 0. Após esta correção, a unidade flash foi montada corretamente e como ROMs vêm a carregar.

Ainda há um problema quando tanto a unidade flash quanto o HDD externo estão conectados. O driver TinyEHCI detectou ambos os dispositivos, mas o ZLX estava montado apenas uma interface USB por vez. Adicionamos suporte para montagem de ambientes como interfaces e ajustamos a ordem para que a unidade flash permanência uda0 e o HDD externo se torne udb0. Isso é importante porque a Mupen procura sua instalação em uda0:/mupen64-360/. Quando o HDD foi montado como uda0, o Mupen não conseguiu mais encontrar os arquivos esperados, o que causou problemas com o fundo e o carregamento da ROM. Com a ordem corrigida, a unidade flash continua enviando o dispositivo principal, o HDD está disponível como armamento adicional e um único dispositivo USB conectado ainda é montado como uda0.

A versão final de trabalho é baseada no Mupen64-360 0,992 beta. A versão 0.993 beta2 também foi investigada, mas antes saída de vídeo no Winchester. Pelo que observamos, não parece ter muitas diferenças de código em comparação com 0,992 beta, agora não temos realizado uma comparação completa.

Ainda não testei o emulador extensivamente, mas até agora tudo parece estar funcionando perfeitamente. Testei Castlevania e The Legend of Zelda: Ocarina of Time, e ambos funcionaram com sucesso. O XeLL carrega o Mupen64-360 recompilado, pois as ROMs funcionam a partir da unidade flash e o HDD externo pode permanecer conectado como armamento adicional.

Obrigado pela leitura!

Atualizei os links de download na minha postagem e adicionei uma versão com configurações de proporção no menu.
 

Attachments

Last edited by fixingthings,
  • Like
Reactions: Afeohtan
Awesome! I will try this out later. Thank you very much!

Could maybe make it where it doesn't stretch the screen? It's fine for widescreen games and hacks. Perhaps an option?
 
Last edited by Afeohtan,
Awesome! I will try this out later. Thank you very much!

Could maybe make it where it doesn't stretch the screen? It's fine for widescreen games and hacks. Perhaps an option?
Done! I've updated the download links in my post and added a version with aspect ratio settings in the menu.

Update: I'm still working on the fixes. The aspect ratio adjustment isn't quite right yet. Once I've finished fixing it, I'll come back and edit this post to let you know. The updated download will be available in my previous comment.
 
Last edited by fixingthings,
Awesome, thank you again. Do you have any plans to possibly update the core in the future?

If you do update and use not64 as a base, I should let you know that after the last 2019 version of not64, certain SM64 hacks no longer work, so if you decide to port any of them I would recommend that specific version, though sadly it would lack fixes for newer games.

Is there a way to remap buttons? I would like to map N64 B button to Xbox 360 X button. As far as I can tell there isn't. Would you mind adding an option? I apologize if I am asking too much and if so, please let me know.
 
Last edited by Afeohtan,

Site & Scene News

Popular threads in this forum