New Hypseus and lr-Daphne to add on Retropie-Setup
-
@dirtbagxon said in New Hypseus and lr-Daphne to add on Retropie-Setup:
On my RPi the font loads fine, horrible font but fine:
I updated to the newer version of Time Traveler (2.0) and it works straight-away (FWIW, the older one only uses one font... Suspect my issue had something to do with not having an overlay font, as an overlay font was probably expected?)
Something odd though (and again, not your fault, rather what is inherited) --
The TTF is clean, when you view it by itself. Not sure why Hypseus is rendering the font in such a strange way (many characters (eg. H, I, L, X, Y, 1, 4) render higher than the other characters. They are also rendering somewhat inaccurately. Little errors all over the place, which gives it the ugly look.
Something wrong with the vector to raster system, my guess. Clean font: -
@roslof said in New Hypseus and lr-Daphne to add on Retropie-Setup:
@dirtbagxon said in New Hypseus and lr-Daphne to add on Retropie-Setup:
On my RPi the font loads fine, horrible font but fine:
I updated to the newer version of Time Traveler (2.0) and it works straight-away (FWIW, the older one only uses one font... Suspect my issue had something to do with not having an overlay font, as an overlay font was probably expected?)
Something odd though (and again, not your fault, rather what is inherited)
On the old Singe I see the same thing:
It could be coded like that in the .singe file, to be honest I never noticed despite my OCD. But always thought it was an ugly font.....
Maybe they were trying to emulate the original game font? I don't believe I ever saw it.
What about the other games?
Oh and make sure you have grabbed the latest merge in repo, it fixes a few things.
Just so you are aware no game functionality was changed in the port, just ported to use SDL2 functions, so basically a graphics update. SDL2 does however have quite a few differences in the way it renders things, and drops quite a few functions that were present in the original Singe code. I therefore had to get inventive and attempt to clone the behaviour. I tried to get it as close to the earlier Singe as I could, but it is never going to be an exact copy.
-
@dirtbagxon said in New Hypseus and lr-Daphne to add on Retropie-Setup:
What about the other games?
Oh and make sure you have grabbed the latest merge in repo, it fixes a few things.Depends. Your new font in Dragon's Lair for the scoreboard header looks inaccurate too (not as egregious as Time Traveler) but the Lair 2 font looks pretty damn good. Maybe size matters. Actually, font rez may be restricted by video size and not screen size. Wonder if it's just a SW scaling issue.
-
@roslof said in New Hypseus and lr-Daphne to add on Retropie-Setup:
Wonder if it's just a SW scaling issue.
Yes, it could be scaling, or it could be just bad rendering via standard SDL_ttf functions, all font are loaded into SDL in the same manner through the same functions. I went through quite a few fonts before I thought it looked 'right'.
The beauty is now all these are external .tff fonts so if you find one that is better just drop it in, but share it with us and I can put in the repo ;)
lair/ace/tq uses pixelboy
lair2 uses whitrabt
Edit:
Found some other SDL font libraries, which render nicely, BUT work at the 'renderer' not 'surface' level that is currently required for the underlying YUV video updates.
But this points the finger at the native SDL_ttf libraries. Not an efficient way to implement:
However, I'm not sure these clean fonts look 'retro'.......
Another option is to 'blend' the current font - (in -fullscreen this looks pretty good):
-
After further investigation, the standard SDL_ttf displays better blending with all the fonts in -fullscreen SDL_WINDOW_FULLSCREEN_DESKTOP mode.
I have merged changes, on the DL overlay blending, to the repo. Use arguments '-blend_osd -fullscreen' for this behaviour:
-
@dirtbagxon ah, nice. Will give this a go. Looks more than promising.
-
@roslof said in New Hypseus and lr-Daphne to add on Retropie-Setup:
@dirtbagxon ah, nice. Will give this a go. Looks more than promising.
Okay, checked it out. DEFINITELY looks better w/Dragon's Lair overlay (just like your screenshot). Great stuff!
So this could also be applied to Time Traveler and other Daphne/Hypseus/Singe-based games?
-
@DirtBagXon just noticed that for any Singe game, the longer a video plays after a LaserDisc seek, the further the audio gets out of sync. This wasn't as obvious at first with Time Gal, but it does occur. Was MUCH more obvious with either of the Mad Dog McCree games. Doesn't take long before the video drifts away from the audio.
Are you seeing/hearing similar? FWIW: I played around a bit with the -sound_buffer command-line, but it didn't have an impact on this issue.
FWIW: Audio/Video is fine with any of the Daphne/Hypseus games.
Cheers!
-Ros -
@roslof said in New Hypseus and lr-Daphne to add on Retropie-Setup:
@roslof said in New Hypseus and lr-Daphne to add on Retropie-Setup:
@dirtbagxon ah, nice. Will give this a go. Looks more than promising.
Okay, checked it out. DEFINITELY looks better w/Dragon's Lair overlay (just like your screenshot). Great stuff!
So this could also be applied to Time Traveler and other Daphne/Hypseus/Singe-based games?
In Singe based games there are options to do this by the game developer within the LUA code itself via the fontQuality argument:
lua_register(g_se_lua_context, "fontQuality", sep_font_quality);
switch (g_fontQuality) { case 1: textsurface = TTF_RenderText_Solid(font, message, g_colorForeground); break; case 2: textsurface = TTF_RenderText_Shaded(font, message, g_colorForeground, g_colorBackground); break; case 3: textsurface = TTF_RenderText_Blended(font, message, g_colorForeground); break; }
Check/Edit your .singe files.
I could force an override via the -blend_osd flag, but due to the variation in font type, font colour and size (per game) it will give unpredictable results.
For instance this is original (above) and forced blending (below) in TimeTraveler:
-
@dirtbagxon said in New Hypseus and lr-Daphne to add on Retropie-Setup:
Check/Edit your .singe files.
Will give it a go now, thanks again!
-
@roslof said in New Hypseus and lr-Daphne to add on Retropie-Setup:
@dirtbagxon said in New Hypseus and lr-Daphne to add on Retropie-Setup:
Check/Edit your .singe files.
Will give it a go now, thanks again!
When you say give it a go, I assume you meant altering the .singe files ?
I made no changes.
Doesn't make sense from my side.
-
@roslof said in New Hypseus and lr-Daphne to add on Retropie-Setup:
@DirtBagXon just noticed that for any Singe game, the longer a video plays after a LaserDisc seek, the further the audio gets out of sync. This wasn't as obvious at first with Time Gal, but it does occur. Was MUCH more obvious with either of the Mad Dog McCree games. Doesn't take long before the video drifts away from the audio.
Are you seeing/hearing similar? FWIW: I played around a bit with the -sound_buffer command-line, but it didn't have an impact on this issue.
FWIW: Audio/Video is fine with any of the Daphne/Hypseus games.
Cheers!
-RosThis may be a weird LUA os_clock timing issue, I have seen it before on the previous Singe.
In the file
src/game/singe.cpp
- locate the line that reads:g_ldp->think_delay(15);
Try altering this value up or down, it will need a recompile (make) and reinstall (cp) after each change I'm afraid.
But the recompile will be very fast as only one file has changed.The value is in micro seconds.
'15' works well on x86_64.
Let me know what value works best on the Pi.
-
@dirtbagxon said in New Hypseus and lr-Daphne to add on Retropie-Setup:
When you say give it a go, I assume you meant altering the .singe files ?
I made no changes.
Doesn't make sense from my side.Yes, exactly -- just played around with the three (3) settings (SOLID, SHADED & BLENDED). It's interesting how things line up better with SHADED & BLENDED, but the odd outline appears. Still, better then SOLID, which looks like it was made with a 70's typewriter. :) Also played around with font size. No matter how large the font, the alignment is still wrong with SOLID.
Again, I completely understand this was inherited and I hope you don't think that I'm asking you to fix anything. This is really amazing (and kind of fun) having these games run on Pi's.
-
@roslof said in New Hypseus and lr-Daphne to add on Retropie-Setup:
@dirtbagxon said in New Hypseus and lr-Daphne to add on Retropie-Setup:
Again, I completely understand this was inherited and I hope you don't think that I'm asking you to fix anything. This is really amazing (and kind of fun) having these games run on Pi's.
It's fun diving into the source code too :)
-
@dirtbagxon said in New Hypseus and lr-Daphne to add on Retropie-Setup:
Try altering this value up or down, it will need a recompile (make) and reinstall after each change I'm afraid.
The value is in micro seconds.
'15' works well on x86_64.
Let me know what value works best on the Pi.Happy to help. Will play around (edit, build, test, weep softly, repeat). Catch you in about... 13 weeks. :)
-
@roslof said in New Hypseus and lr-Daphne to add on Retropie-Setup:
@dirtbagxon said in New Hypseus and lr-Daphne to add on Retropie-Setup:
Try altering this value up or down, it will need a recompile (make) and reinstall after each change I'm afraid.
The value is in micro seconds.
'15' works well on x86_64.
Let me know what value works best on the Pi.Happy to help. Will play around (edit, build, test, weep softly, repeat). Catch you in about... 13 weeks. :)
g_ldp->think_delay(30);
seems to work fine... Will need to play around a lot and make sure, but so far, all games sync perfectly.EDIT: Played quite a lot, and with multiple games. No unusual issues with this setting. All long videos sync fine.
-
@roslof said in New Hypseus and lr-Daphne to add on Retropie-Setup:
@roslof said in New Hypseus and lr-Daphne to add on Retropie-Setup:
@dirtbagxon said in New Hypseus and lr-Daphne to add on Retropie-Setup:
Try altering this value up or down, it will need a recompile (make) and reinstall after each change I'm afraid.
The value is in micro seconds.
'15' works well on x86_64.
Let me know what value works best on the Pi.Happy to help. Will play around (edit, build, test, weep softly, repeat). Catch you in about... 13 weeks. :)
g_ldp->think_delay(30);
seems to work fine... Will need to play around a lot and make sure, but so far, all games sync perfectly.EDIT: Played quite a lot, and with multiple games. No unusual issues with this setting. All long videos sync fine.
@roslof you are a star.
Exactly double, interesting - wonder if this is a 32/64bit size_t related.
I will do a check at compile time which will set this according to what architecture it is compiled on - many thanks for testing that :)
-
@dirtbagxon said in New Hypseus and lr-Daphne to add on Retropie-Setup:
@roslof said in New Hypseus and lr-Daphne to add on Retropie-Setup:
@roslof said in New Hypseus and lr-Daphne to add on Retropie-Setup:
@dirtbagxon said in New Hypseus and lr-Daphne to add on Retropie-Setup:
Try altering this value up or down, it will need a recompile (make) and reinstall after each change I'm afraid.
The value is in micro seconds.
'15' works well on x86_64.
Let me know what value works best on the Pi.Happy to help. Will play around (edit, build, test, weep softly, repeat). Catch you in about... 13 weeks. :)
g_ldp->think_delay(30);
seems to work fine... Will need to play around a lot and make sure, but so far, all games sync perfectly.EDIT: Played quite a lot, and with multiple games. No unusual issues with this setting. All long videos sync fine.
@roslof you are a star.
Exactly double, interesting - wonder if this is a 32/64bit related.
I will do a check at compile time which will set this according to what architecture it is compiled on - many thanks for testing that :)
I actually made it a run-time check, but hopeful fix pushed to RetroPie branch.
Could you test and confirm latest merge fixes it without modifications ?
To revert your local file changes, do this as update order:git checkout src/game/singe.cpp git pull origin RetroPie
You are using the 64bit kernel and 32bit userland, so let's see if the check on
sizeof(size_t)
in the fix, works in this environment....Edit: Just to give me an ideas of what the clock() environment is in this 64/32 mixup, could you also grab this utility:
wget https://raw.githubusercontent.com/DirtBagXon/singe/master/src/debug_utils/clock_debug.c -O clock_debug.c
Compile it
cc -o clock_debug clock_debug.c -Wno-format
on the Pi and run it:./clock_debug
Then let me see the results.
-
@dirtbagxon said in New Hypseus and lr-Daphne to add on Retropie-Setup:
Could you test and confirm latest merge fixes it without modifications ?
Done. Works perfectly.
Compile it cc -o clock_debug clock_debug.c -Wno-format on the Pi and run it:
./clock_debug
Then let me see the results.No trouble (good instructions).
Ran it using the 32bit and 64bit kernel. Funny, but for 64-bit, even though the kernel reads as aarch64, "System" shows up as 32-bit with the tool... Must be based on userland and not kernel.
32bit:
Linux retropie 5.10.17-v7l+ #1403 SMP Mon Feb 22 11:33:35 GMT 2021 armv7l GNU/Linux
System: 32bit sizeof(clock_t)=4, CLOCKS_PER_SEC=1000000 sizeof(size_t)=4, sizeof(int)=4 clock() C Native: 1987 C Multiplier: 3974 (x2) C Multiplier: 7948 (x4) C Multiplier: 11922 (x6) C Multiplier: 15896 (x8) C Multiplier: 19870 (x10) One sec sleep: 2025 - 1987 = 38
64bit:
Linux retropie 5.10.17-v8+ #1403 SMP PREEMPT Mon Feb 22 11:37:54 GMT 2021 aarch64 GNU/Linux
System: 32bit sizeof(clock_t)=4, CLOCKS_PER_SEC=1000000 sizeof(size_t)=4, sizeof(int)=4 clock() C Native: 1968 C Multiplier: 3936 (x2) C Multiplier: 7872 (x4) C Multiplier: 11808 (x6) C Multiplier: 15744 (x8) C Multiplier: 19680 (x10) One sec sleep: 2000 - 1968 = 32
-
@roslof said in New Hypseus and lr-Daphne to add on Retropie-Setup:
Ran it using the 32bit and 64bit kernel. Funny, but for 64-bit, even though the kernel reads as aarch64, "System" shows up as 32-bit with the tool... Must be based on userland and not kernel.
Exactly what I was checking - cool.
Fix should be working fine.
Thanks again.
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.