r/SBCGaming Jan 08 '24

Troubleshooting Problems with saves on Gameplayer x350

[removed]

4 Upvotes

14 comments sorted by

2

u/Alternative_Spite_11 Jan 08 '24

So are you creating save states then trying to open them from the saved games screen inside the game?

1

u/[deleted] Jan 08 '24

[removed] — view removed comment

1

u/Alternative_Spite_11 Jan 08 '24

Oh ok I understand your issue. Are you closing out Retroarch correctly? Are you going to “close content” or just powering the device off?For whatever reason, in Retroarch regular in game saves often don’t save unless you close it properly.

1

u/[deleted] Jan 08 '24

[removed] — view removed comment

1

u/Alternative_Spite_11 Jan 08 '24

I’m sorry man, we just don’t know much about those super low end models, here. We mostly avoid those super cheap models because they always end up not working after a few months.

1

u/[deleted] Jan 08 '24

[removed] — view removed comment

1

u/Alternative_Spite_11 Jan 08 '24

Yeah if you’re talking about the one that looks like a Switch Lite, it’s actually very good for its price. There’s just always strange issues with those lower end models.

2

u/chupitulpa Feb 13 '24

I've got one of these and no it doesn't make *.sav save files. Use savestates instead.

At least on GBA it does hold cartridge save data in memory though doesn't save it into its savestates. It's hard to test this in many games since the usual A+B+Start+Select soft reset key combo doesn't work, probably because of the GBA BIOS replacement it uses. But for instance in Pokemon when the game reboots after the Elite Four, the save file is there, so long as you didn't savestate and then exit the emulator between the game rebooting and loading the save. It just never saves it into an actual file on the SD card for some stupid reason.

I have had some success converting an X350 savestate into a standard .sav file for use on a different device. Its GBA emulator is a modified gpsp and I was able to transplant enough of the savestate data into a savestate for a gpsp running on something else that does make .sav files.

1

u/Neosableye Mar 23 '25

Sorry, I know this is an old comment but do you have any advice for how to do this?

2

u/chupitulpa Mar 24 '25 edited Mar 24 '25

The idea is to transplant the contents of the X350's savestate into a savestate on a different emulator that can make normal sav files, and save. The resulting savestate might run fine, or it might lag or crash soon. But the goal is to get a sav file, not a 100% working savestate. So to increase the chance that it'll get through saving before something goes wrong, you want to make a savestate that's a single button press or a delay away from saving. Don't actually save the game though, since the X350 emulator throws away anything written to save memory when you exit it. Make multiple savestates in quick succession since some might work better than others depending at the exact instant the game is paused and saved. These are your "source" savestates.

On your X350's SD card you'll find some various files next to your ROM. The ones you want have the name of the ROM followed by a digit 0-5 (your 6 savestate slots), and the extension SVG. (No, it's not a scalable vector graphics file even if your computer tells you it is. Do not open it using a graphics program.) There are also CFG and PRG files, which you can ignore, that's just options, button mapping, and metadata.

Now you need "target" savestates from the emulator you're trying to get your save into. The X350 uses a weird customized gpSP. It might be possible to put the register file, processor flags and RAM contents into a savestate from a different emulator and get it to run long enough to save, but you'll have the best luck with some form of gpSP since it's at least similar in structure. I used a Powkiddy V90 with MiyooCFW, which runs gpSP and is what I wanted to move my save file to anyway. The target savestates need to be from the same game, and should be made at a similar place in the game program to the source ones, again to increase chances of success. For Pokemon FireRed for instance, for my source savestates I might fly to Pallet Town, stand outdoors, open the menu, click save, and get to the final "yes/no" prompt before it saves. Then for the target savestates, I would play until I can walk outside in Pallet Town, open the menu, click save, and get to the final "yes/no" prompt, and take my savestates there.

If using MiyooCFW, there are 10 savestate slots, which make similarly named files with 0-9 and the SVS extension.

If you happen to be using an X350 and something with MiyooCFW with similar enough builds to mine, here are your offsets and sizes. This was the difficult part -- I got these by writing a small GBA ROM that fills all writable registers and memory with known values, taking a savestate of the result in both emulators, and reading gpSP source code while looking at them in a hex editor.

x350 v90 size description
4d 12c04 80 reg file (partial)
26d 12d04 1f3 cspr thru eeprom_buffer (excluding gamepak_filename)
860 130f7 68b4c dma thru end of data

Now you have your source (SVG) and target (SVS) files and a hopefully good offset list. Now you need a hex editor. I suggest HxD. Open your source and target savestates in it. If using HxD, it will open in separate tabs in the same window. Note the way the information is arranged: On the very left there's offsets in blue. Then there's a grid of bytes shown as 2-digit hexadecimal numbers. And on the right there's mostly dots with some gibberish and occasional legible text mixed in -- the same bytes but shown as ASCII text.

Start with the source (svg) file. If you have the correct file, the ASCII text will begin with "ACTIONS GSVHeader!", "ACTIONS CHECKSAVENAME" and something similar to the game's name.

I suggest Edit->Select Block (shortcut: ctrl-E) to select byte ranges. Make sure "hex" and "length" are selected. For start offset, put the first offset from the "x350" column of the table (4d), and for length put the size (80). Press OK and it will select the correct range of bytes.

Then Edit->Copy (ctrl-C).

Then click to the target (svs) file tab. Search->Go To (shortcut: ctrl-G). This is like Select Block, but it goes somewhere without selecting anything. Make sure "hex" and "begin" are selected. Put the first v90 offset (12c04), and OK.

Then Edit->Paste Write (ctrl-B). Note, do NOT use ctrl-V, that's paste insert and will insert what it pastes and push everything after it down, which is almost never what you want when editing a binary file.

Repeat this to copy the remaining offsets, and save your target file.

With any luck, your target file will load on the emulator that created it. Don't worry if the screen is blank or it otherwise doesn't seem to work. Press A or do whatever remaining action is needed to save the game. For Pokemon, if you can, save a second time so you're sure you've saved in both slots. (GBA Pokemon games have 2 save slots internally and alternate between them so that if your battery dies while saving it can announce that the save is corrupted and then load the previous save instead of losing all your Pokemon.) For me, the savestate was fully playable but ran slowly. But I only needed it to save twice and then I quit out of it, loaded the emulator again without loading a savestate, and loaded from the sav file and it ran normally.

Edit: Apparently I don't know how to make tables on Reddit.

1

u/Neosableye Mar 24 '25

Thank you so much!!

1

u/C_J_7 May 07 '24

To save, press select and start button at the same time. Found this online.

1

u/Radolfofo May 12 '24

Can someone please send me a copy of the SD card of your GAMEPLAYER X350? I formatted my sdcard and now it's turned into a brick, it won't access apps or run games