Closed Three3Fitty closed 1 year ago
N64 support was always troublesome. I won't bore you with the details, but basically Mupen64 uses some stuff which makes it hard to use and unstable with Go (CGO). Unless we move the Libretro frontend into C completely, it won't work properly. In regard to your issues:
go build -buildmode=exe -o bin/ ./cmd/worker
.Also, there are dev Docker images here: https://github.com/giongto35/cloud-game/pkgs/container/cloud-game%2Fcloud-game.
Thank you for responding. Here are the logs from launch to crash. With the dev image you mentioned these logs are, launching the emulator opening, pressing share, then crashing. emuworkssharecrashes.txt
Too bad about the N64 Emu. It will run just fine after a fresh build as long as the save state, share button works.
I’ll work on the build you mentioned. I’m not too sure how to go about the method you mentioned. <go build -buildmode=exe -o bin/ ./cmd/worker> I’m more of an infrastructure and endpoint guy so dev stuff is a little confusing to me. If you have an article I can learn from I can definitely give it a try! Thanks again.
The main Docker file calls build here, which is here.
These Docker images are built without ASLR :/, so you could try the other way around, with ASLR, then. Just remove this part -buildmode=exe
.
Also, if you could find an old version of the core somewhere to try (I have only Win dlls), it might work. By old I mean a 1 year old or so. Share function did work before, but... actually, what you can try is some old cloud-retro version, for example, it should have mupen .so. Try to build the image from that git snapshot.
Thanks for the logs, this crash is reproducible. :^)
In the meantime I tried a super ugly hack in order to test my theory and it seems I was right. Now I know what problem is, but not sure how to fix it properly (C is not my strong suit and I'm not the author of the N64 support here). Maybe, I will fix it some time later.
https://user-images.githubusercontent.com/846874/206714612-6f68ec84-1237-438b-aff3-735fa6f18866.mp4
Wanted to get some time on my findings before responding. I think I’ve figured out a good work around while the issue gets fixed at the root. I found that using the new dev image along with the old N64 core from the example you linked. I now have a much more reliable N64 experience that doesn’t crash when share is used. Yes I lose some of the compatibility and 3 years of mupen64 refinements, but now I can now play retro games with my brothers across the country like we did growing up. Thank you so much for your help.
No problem, glad you got it working. To be clear, in the latest commit I disabled save/load for Mupen, what did the trick for me. You could try the latest Mupen with it, in case if you haven't already done so.
I see what you're saying, Yes it does work with the new cores in the new image!
Looking for some help after about a week of trying many different things, thank you so much for putting together this project. I tried to review as many of the past issues and bugs as I could and nothing really looks to cover my exact problem.
What I’m seeing: I’ve stood up this project from the docker image raymond17/cloud-game-local. All other emulators work well, PSX, SNES, NES with emulation and with sharing the session. The N64 emulation and sharing together will work 1 out of 20 attempts.
When the emulation works the share button fails and crashes the container with the logs under the file brokenshare brokenshare.txt
The second issue I'm having is when standing up a new emulation session with N64 the screen will go to a black widescreen. Looking at the logs for docker I see the video has failed. These logs are under brokenvideo. brokenvideo.txt
In order for N64 to work I have to change the MESA_GL_VERSION_OVERRIDE to 4.3 or 4.5 seem to work best and rebuild the container and launch N64 and hope the share works.
I’ve also included a working session under goodhappysession. Once when one of the two issues shows up the container is in a broken state and a rebuild is needed. goodhappysession.txt
What I’ve tried so far with no success: Changing the MESA_GL_VERSION_OVERRIDE from 3.3 through 4.5 Rebuilding the docker image from the git repo Disconnecting the GPU from the container Multiple versions of mupen64plus_next_libretro.so Multiple configuration changes in mupen64plus_next_libretro.cfg Multiple browsers Tried on a lesser spec docker environment with the exact same issue
Docker host: Ryzen 5 3400G Nvidia1050 with latest drivers 256gb ssd 16gb of ram Portainer latest CE version Latest Ubuntu on host docker image raymond17/cloud-game-local