> I have built both "libsmpeg" and "libsmpeg2" (for SDL_mixer and SDL2_mixer) from source code --
> they are not identical (or symlinked against each others), but probably prepared to build against
> SDL_mixer 1.2.x and SDL2_mixer 2.0.x.
Ok, so I really am using a bastardized mix right now -- SDL builds with SDL1.2 + libsmpeg 0.4, SDL2 builds with SDL2 + still libsmpeg 0.4.
But wait -- `ldd rocksndiamonds` shows no reference. So I linked a different library to the pathname for libsmpeg2.so, rebuilt, and -- RnD linked successfully. Then I did `nm -DC libsmpeg.so` and grepped all of your source for references -- AFAICT RnD doesn't use libsmpeg at all!
So I edited the Makefile, took out references to -lsmpeg{,2}, and the binaries still built and ran.
With or without that surgery, SDL1 binaries play music (without help from libsmpeg); SDL2 binaries do not. Tested entirely by starting the levels I'm currently playing and hearing, or not hearing, the greeting music. Failing (i.e. SDL2) binaries print these messages:
Code: Select all
rocksndiamonds: warning: cannot read music file '/usr/share/games/rocksndiamonds/levels/Emerald Mine Club/mus_classic_em/music/./em_title.mp3'
rocksndiamonds: warning: cannot load artwork file 'em_title.mp3'
On the other hand, both SDL1 and SDL2 binaries play in-game music (e.g. in the Niko Boehm tutorial levels which it is so easy to fall back into). (SDL2's rendition is much louder for some reason, and I wasn't sure if it was distorted or I just wasn't used to hearing it that loudly...)
> > - SDL2 binary plays back levels about 20-30% slower than SDL1.2 (at 100% scale)
I was referring to
drawn playback speed ('551' == "FF" in my recent post).
Graphical output is slower. (That said: I ran the -e autoplay BD2K tests and SDL2 was still slower, though by a smaller margin. SDL1: 4m50.058s, SDL2: 5m24.331s, about 12% slower.)
I don't have concrete numbers on the graphical slowness since all measurements are manual. A -e flag to autoplay levels with live display (as mentioned on
viewtopic.php?f=7&t=2086) would make this much easier... The main way I compare them is to run two RnD binaries at the same time, go to the same (long-playing) level, hit '55' in each window, then '1' in each window (trying to minimize the amount of time that one gets to free-run ahead of the other). No matter which one gets the head start, the SDL1 window wins. Then I pause SDL2, subtract SDL2's time counter from this level-solution's completion time, and it's 20-30% away from the end.
I had done a `git pull` before my last post; doing it again now, I get no new update.
Likewise with the mouse cursor: the problem does occur with the latest git code.
But I noticed a very important detail I'd missed last time. Mouse cursor
does disappear in normal play mode. It doesn't disappear in single-step mode.
A few months ago you fixed this, and it worked in all modes. Then, somewhat more recently, I noticed the feature broke / disappeared. But now I realize it's still working, just not in single-step mode.
Further nuance noticed just now: the cursor
does disappear in single-step mode, only to reappear immediately (blinks out for maybe 1/4 second). It blinks out when I hit a playing key (not just motion keys like "left arrow", also other keys like "left ctrl" which advance the game clock without moving me). Then, if I'm hitting keys rapidly, it doesn't blink for the next few keys. After about 2 seconds it is "re-sensitized" and again blinks off for 1/4s when I next hit a key. But if I hit keys very slowly, >2s apart, it winks out for each key.
I see it winks on when I hit space to pause. Single-step is a lot like hitting space to pause immediately after every move; probably the same code path. Turning the cursor on when I pause in the middle of live action seems good; turning it on when auto-paused by single-step mode, not so much.
> Hm, that's right. Maybe I should change this to check for a "<command basename>.conf"
> file first, and if it does not find any, use "rocksndiamonds" as the "command basename".
> This would require a config file for all renamed binaries that should get their own
> personal data directory, which seems fair enough.
Seems fair enough, but ... it's very convenient to be able to run 'rocksndiamonds.old' or whatever, but it would
also be convenient to run 'rocksndiamonds-jue.old' and have it also do the right thing. So I'm not sure if it is sufficient to just fall back to "rocksndiamonds".