The Longest Journey
-
I've been trying to get The Longest Journey (I'm using my copy from GOG) with the HD mod using the latest source build of ResidualVM without much luck. I cannot make it past the main menu screen, as soon as I start the game, ResidualVM exits to EmulationStation. I've only found this thread here, but it's quite old and the game wasn't working then even without the HD mod.
Has anyone had success?
Thanks -
I did reach out to the ResidualVM team to get help for resolving this and they would need either:
-
run ResidualVM in a debugger and capture a stack trace, or
-
let it generate a core dump and provide said core dump + the executable (with debug symbols)
Sorry to quote you here for this @mitu and @BuZz but can you tell me how I can do these things?
Thanks in advance!
-
-
@GeekOB That's easy.
- install the gdb debugger (
sudo apt install gdb
) - start the game, but don't get to the point where it crashes
- login via SSH to your system, then run
gdb
and attach it to the process
gdb -p `pidof residualvm`
- come back to the game and make it crash
- return to the
gdb
session and runbt full
. You should get a full stack trace from the crashed program.
- install the gdb debugger (
-
Thanks for the very quick reply @mitu,
Interestingly enough, the game freezes the moment I entergdb -p `pidof residualvm`
It goes back to normal as soon as I exit gdb.
Thoughts? -
@GeekOB Type
continue
in thegdb
prompt to resume the program execution. -
@mitu this is what I get:
Attaching to process 7989 [New LWP 7990] [New LWP 7991] [New LWP 7992] [New LWP 7993] [New LWP 7994] [New LWP 7995] [New LWP 7996] [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1". 0x0022a598 in Video::BinkDecoder::BinkVideoTrack::decodePlane(Video::BinkDecoder::VideoFrame&, int, bool) () (gdb) continue Continuing. [Thread 0x738ff450 (LWP 7995) exited] [Thread 0x742fc450 (LWP 7994) exited] [Thread 0x72eff450 (LWP 7996) exited] [Thread 0x74afd450 (LWP 7993) exited] [Thread 0x75aff450 (LWP 7991) exited] [Thread 0x76483450 (LWP 7990) exited] [Thread 0x76fa7000 (LWP 7989) exited] [Inferior 1 (process 7989) exited with code 01] (gdb) bt full No stack.
I tried again wihout the HD Mod:
Attaching to process 9385 [New LWP 9386] [New LWP 9387] [New LWP 9388] [New LWP 9389] [New LWP 9390] [New LWP 9391] [New LWP 9392] [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1". 0x768ea030 in nanosleep () at ../sysdeps/unix/syscall-template.S:84 84 ../sysdeps/unix/syscall-template.S: No such file or directory. (gdb) continue Continuing. [Thread 0x738ff450 (LWP 9391) exited] [Thread 0x742fc450 (LWP 9390) exited] [Thread 0x730fe450 (LWP 9392) exited] [Thread 0x74afd450 (LWP 9389) exited] [Thread 0x752fe450 (LWP 9388) exited] [Thread 0x75aff450 (LWP 9387) exited] [Thread 0x764a3450 (LWP 9386) exited] [Inferior 1 (process 9385) exited with code 01] (gdb) bt full No stack.
I'm not sure why there's no trace, did I miss a step?
Thanks -
@GeekOB said in The Longest Journey:
I'm not sure why there's no trace, did I miss a step?
Maybe there's no crash and
residualvm
just exits. What's the content of/dev/shm/runcommand.log
? -
This is the content of the
runcommand.log
file @mitu ...Parameters: Executing: bash "/home/pi/RetroPie/roms/residualvm/+Start ResidualVM.sh" WARNING: Invalid joystick: 0! Virtual keyboard pack 'vkeybd_default' loaded successfully WARNING: No hardware input were defined, using defaults! User picked target 'tlj-win' (gameid 'stark')... Looking for a plugin supporting this gameid... Stark Engine Starting 'Stark Game' INFO: OpenGL Vendor: Broadcom INFO: OpenGL Renderer: VideoCore IV HW INFO: OpenGL Version: OpenGL ES 2.0 INFO: OpenGL Red bits: 8 INFO: OpenGL Green bits: 8 INFO: OpenGL Blue bits: 8 INFO: OpenGL Alpha bits: 8 INFO: OpenGL Z buffer depth bits: 24 INFO: OpenGL Double Buffer: 1 INFO: OpenGL Stencil buffer bits: 8 INFO: GLSL version: OpenGL ES GLSL ES 1.00 WARNING: Stem darkening is not available with this version of FreeType! WARNING: Stem darkening is not available with this version of FreeType! WARNING: Stem darkening is not available with this version of FreeType! WARNING: Stem darkening is not available with this version of FreeType! WARNING: Stem darkening is not available with this version of FreeType! WARNING: Stem darkening is not available with this version of FreeType! WARNING: Stem darkening is not available with this version of FreeType! WARNING: Stem darkening is not available with this version of FreeType! WARNING: Stem darkening is not available with this version of FreeType! WARNING: Stem darkening is not available with this version of FreeType! ALSA lib pcm.c:8306:(snd_pcm_recover) underrun occurred ALSA lib pcm.c:8306:(snd_pcm_recover) underrun occurred WARNING: Stark::XARC Member: "map inv.xmg" has unknown=2 with unknown meaning! WARNING: Stark::XARC Member: "map cursor.xmg" has unknown=2 with unknown meaning! WARNING: Stark::XARC Member: "april_crouch_pickup.ani" has unknown=2 with unknown meaning! WARNING: Stark::XARC Member: "april_run.ani" has unknown=2 with unknown meaning! WARNING: Stark::XARC Member: "april_swimming_idle.ani" has unknown=2 with unknown meaning! WARNING: Stark::XARC Member: "april.xmg" has unknown=3 with unknown meaning! WARNING: Stark::XARC Member: "arkadianmale_sitting.ani" has unknown=2 with unknown meaning! WARNING: Stark::XARC Member: "arkadiafemale_sitting.ani" has unknown=2 with unknown meaning! No uniform named 'boneRotation'! No uniform named 'boneRotation'!
-
@GeekOB There doesn't seem to be a crash logged in there, maybe that's why
gdb
doesn't show anything. You can try startingresidualvm
directly from the debugger, outside of Emulationstation, it may be easier to capture the crash. Just rungdb (gdb) file /opt/retropie/emulators/residualvm/bin/residualvm (gdb) run --fullscreen --joystick=0 --extrapath="/opt/retropie/emulators/residualvm/extra"
then reproduce the crash and try to get a backtrace.
-
thanks @mitu , I had to run the
gdb
without theextra
flag as it was giving me a different error, this is the output I received when I "crashed" the game:
-
The ResidualVM team has recommended the following changes to the script to build from source:
first, change
--disable-debug
to
--enable-debug
in the
build_residualvm
function, recompile ResidualVM. Then, modify the
+Start ResidualVM.sh
script to callulimit -c unlimited
so that it produces a core dump on crash.
Do you have anything to add, @mitu ?
I tried the instructions above, the game quits as expected, where would I find the core dump? I checked/var/lib/systemd/coredump
but it's not there.Thanks
-
@GeekOB A core dump is created if the game crashes. From the
gdb
output you posted (just like the previous time) I see the game does not crash, just exits:[...] Inferior 1 (process 817) exited with code 01 [...]
So there's no crash, hence no backtrace or core dump.
-
Thank you very much @mitu
A bit more from the ResidualVM dev team:This can be caused by too many uniform slots used in the shader.
The Raspberry PI GPU has a max ofGL_MAX_VERTEX_UNIFORM_VECTORS = 136
.
The vertex shader for actors blows through that budget with just the bone uniforms (140 vec4 uniforms).As a quick test, can you try editing the
stark_actor.vertex
file and lowering the number to 30 in the lineconst int maxBones = 70;
If that works, it will very probably glitch some actors pretty badly but the game should play.
You can try ramping that number back up, but the real solution is to rework the bone uniform passing, I'm afraid.Can you help me find where this file would be located in RetroPie?
-
@GeekOB said in The Longest Journey:
Can you help me find where this file would be located in RetroPie?
Maybe in
/opt/retropie/emulators/residualvm/share/residualvm/shaders/stark_actor.vertex
? -
I tried these changes @mitu but it still doesn't work.
Now I'm just wondering if the Raspberry Pi 3b, which is the model I'm using for this testing, is actually capable of handling this port properly. Escape from Monkey Island also has some issues when I try to run it at full screen.
I'm not sure if you are going to test ResidualVM with the Pi 4 model.
I'm happy to continue trying to test but, as my knowledge with compiling from source is limited I might as well be shooting in the dark here.What do you guys think?
-
@GeekOB said in The Longest Journey:
I'm not sure if you are going to test ResidualVM with the Pi 4 model.
ResidualVM works on the PI4 model, alas I don't have the game in my GOG library and didn't have the time to test this game in particular.
Is the normal game (i.e. non-HD remake) working ? -
No @mitu, it is not. If I disable the HD mod, the main menu:
will display properly but the game will not run and exit back to the ResidualVM launcher.
If the HD mod is enabled the main menu screen is all black with only the mouse pointer, ©1999 Funcom, and the names of the options showing up when hovered over. Same behavior when trying to run the game. -
I tried TLJ on the PI4, but it exits right when initialising the game. I'll try to get more info and maybe submit an issue to the
residualVM
project directly. -
Thanks @mitu, that's probably the exact same issue I'm experiencing.
Let me know if there's anything I can do to help test/troubleshoot. I'll keep the game in my SD card just in case. -
@GeekOB said in The Longest Journey:
Thanks @mitu, that's probably the exact same issue I'm experiencing.
Not quite the same issue, but it's quite similar in that's still a shader error.
While scouring for information on the project's Github repository, I stumbled upon this new addition which might help to run the game on a RPi3. You might want to keep an eye on it and - when the changes are merged - to updateresidualvm
from source.
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.