Forum:Transfering slashem save file from 32 bit linux to 64 bit

From NetHackWiki
Jump to: navigation, search

I played a bit on an old 32 computer. Naively i thought, that i could simply copy the save file over to my 64 bit computer. But it complained, that there was a "version mismatch" B[ . Any one know how to hack around this?--Quantum Immortal (talk) 18:54, 22 January 2017 (UTC)

I'm trying now, to transplant the 32 bit binary into the 64 bit machine. But weird permission stuff are needed that i'm not familiar with. If some one could help? :D --Quantum Immortal (talk) 21:16, 22 January 2017 (UTC)

There is a function in the code called uptodate that will read from the beginning of the save file to get the version info and will check the version number with a call to a function named check_version. Seems there are two numbers it checks: VERSION_COMPATIBILITY and VERSION_NUMBER. If the version number read from the file does not fall in that range, you'll get a "Version mismatch for file <whatever the filename is>." message. Maybe you could use a hex editor to fudge the version number in the save file, but who knows what unintended consequences that may have. Otherwise, you could try running a 32-bit virtual machine with your old 32-bit version of slashem and load the save that way. In practice, my two options seem a bit excessive for trying to rescue a slashem save. -- G7nation

Actually, i think i'm almost there. I copied over the 32 bit slashem binary, and seams to start, but can't write in /var/games/slashem . I gave it execute permissions and put in the "games" group (like the /var/games/slashem folder). But still "can not write blah blah blah". It's the same distro, so the 32bit libs should be exactly the same. What i'm doing wrong?——Quantum Immortal (talk) 14:40, 26 January 2017 (UTC)

Just to be clear about your environment, you are using a 64-bit distro with the 32-bit libraries installed. If that's the case, then the game should run fine assuming those 32-bit libs are the same version as your 32-bit binary. You mention the game works. That's good, because it narrows this down to a permission problem, not a linker problem. My saves are stored in /usr/share/slashem/save just because of how I installed slashem. In your case it's /var/games/slashem/save. Maybe try adding write permission directly to the save file if it doesn't already have them. I will show you the permissions I have on my slashem directory and maybe you can try to match them in your setup. The user I run the game from is "greg" (coincidentally, my first name). I have two save files for characters named "greg" and "rogue":

greg@viper:~$ ll /usr/share/slashem/
total 3240
-rw-rw---- 1 root greg    2762 Sep 23 08:45 bonD0.6.gz
-rw-r--r-- 1 root root  166802 Sep 22 15:05 Guidebook.txt
-rw-r--r-- 1 root root    4875 Sep 22 15:05 license
-rw-r--r-- 1 root root    2891 Oct 14 16:05 logfile
-rw-r--r-- 1 root root  499135 Sep 22 15:05 nhshare
-rw-r--r-- 1 root root  398051 Sep 22 15:05 nhushare
-rw-r--r-- 1 root root       0 Sep 22 15:05 perm
-rw-r--r-- 1 root root     772 Oct 14 16:05 record
-rwxr-xr-x 1 root root   13416 Sep 22 15:05 recover
drwxr-xr-x 2 root root    4096 Oct 15 17:10 save
-rwsr-xr-x 1 root root 2207744 Sep 22 15:05 slashem
greg@viper:~$ ll /usr/share/slashem/save/
total 48
-rw-rw---- 1 root greg 14368 Oct 15 17:10 1000greg.gz
-rw-rw---- 1 root greg 29450 Oct  7 14:29 1000rogue.gz

I really hope this helps. --G7nation

Wait, how an executable gets permission to white in the folder? In my case, it's a folder in the group "games" and owner root. Normal slashem installed from the repos works fine.——Quantum Immortal (talk) 15:30, 26 January 2017 (UTC)
I alredy changed the group of the executable to games, but it didn't help.——Quantum Immortal (talk) 16:23, 27 January 2017 (UTC)
Nobody knows how slashem/nethack is doing it? I'll add the info in some article too.——Quantum Immortal (talk) 14:45, 28 January 2017 (UTC)

Ok, i actually solved what i wanted to do. I simply installed the 32bit version of slashem in my 64bit system. In linux mint, the command is:

sudo apt-get install slashem:i386

This will automatically remove the 64 bit version, and install the 32 bit version and everything will be correctly configured. Then you just need to copy over the save file in /var/games/slashem/save .So now, the save files are compatible with my 32bit laptop. I'll add a burp in the save scum article.--Quantum Immortal (talk) 23:04, 29 January 2017 (UTC)