-
Notifications
You must be signed in to change notification settings - Fork 27
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
32x crashes on launch with recent dynarec changes #9
Comments
I discovered a cut-and-paste error in the arm drc code, which may be related to this. However, it works fine on my arm9 caanoo.
If it works with this, I'm cherrypicking this commit to my master ASAP. libretro can then cherrypick it from there. |
Awesome! That fixed the crash. Now I'm just seeing the other issue, where loading a 32x game will quit to the home menu with the message, "host register 1 is locked". |
Is this with a certain rom or with every one?
Justin Weiss <[email protected]> schrieb am Mi., 28. Okt. 2020,
02:54:
… Awesome! That fixed the crash. Now I'm just seeing the other issue, where
loading a 32x game will quit to the home menu with the message, "host
register 1 is locked".
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#9 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AHR2L4TVLASTP2R7UVDDVEDSM52VVANCNFSM4TAC3GFQ>
.
|
I only have a couple, but it happens with both Star Wars Arcade and Virtua Fighter. It looks like the host register problem started with the batch of commits from early July -- both games work with libretro@8d2a03b from June. |
Could you possibly apply the diff I posted to libretro#135 and send me the result? It produces debug output from the drc which might help in analysing this. |
Sure thing. Here are logs from Virtua Fighter and Star Wars Arcade. I had to override printf to log as much as I could, let me know if I missed anything. |
OK... somehow the arm disassembly from the host_dasm function isn't there. Nevermind. |
Sorry about that. The 3DS ties console output to the bottom screen, and I haven't figured out a way to redirect it to the log globally. Instead, I've been overriding printf to lprintf to redirect to the RA logs, but it looks like I missed a place. This should have more: I'm using the 3ds.tar.xz toolchain from https://github.com/libretro/libretro-toolchains, and point to it with this:
3DS is statically built. I get the
This will give |
ok... I fear this might probably be going to take a while :-( Could you please send me your ELF executable with debug symbols to my email address (its in the README) or upload it somewhere?
Use the Star Wars rom for this, please. |
BTW it's most probably not a toolchain problem. I compiled an arm-linux sdl version with it, and that works fine using qemu-arm on ubuntu. |
@irixxxx I don't know if justinweiss has already tested those commits, but I just complied them myself and can confirm that 32x content now runs fine on 3DS. In addition, on the RG350M there is a small but noticeable performance improvement with the latest updates vs. your original fixes in the other issue thread. This is wonderful. I cannot thank you enough for all your hard work on this! |
Thanks @jdgleaver for trying them out! Sorry it took me so long -- things have been busy. And thanks a ton @irixxxx for those fixes, 32x feels like something you can actually play and enjoy on the 3ds now. Such a big improvement. |
Fixed. Thanks for the feedback, guys. |
I filed this in the libretro fork (libretro#135), and it was recommended that I also raise this here.
It looks like the most recent few batches of dynarec changes have been causing crashes on 3DS, and possibly Vita and OpenDingux as well. Here's what I've been able to discover:
Unfortunately I have not been able to bisect closer than that, because many of the intermediate commits won't build for me for 3DS without changes. Happy to help with symbols or lookups if necessary.
The crash happens because some code changes
pc
to point to the first element ofblink_free
, which is 0. I don't thinkblink_free
should ever be executable code, so that seems incorrect. I haven't been able to find stack breadcrumbs or break anywhere close to the crash. The best clue I have is that it crashes sometime after hitting this block of code, where the registers look very similar to what they look like when it crashes:Here is the full crash dump:
The text was updated successfully, but these errors were encountered: