Slingo Supreme (DSiWare) Save File Mumbojumbo

Slingo Supreme is a puzzle game by Funkitron, based in a long-standing series of Slingo games- the premise of which, is to combine slot machines, and bingo together. Not for everyone but, I grew up playing a CD-ROM Slingo game on my mom's computer. So, I'd say about 6 years ago, shortly after I got my 3DS, I decided to buy the DSiWare port of this puzzle game on the 3DS eShop, I believe it is $6.99? Anywho, it was ported by a company called Magellan Interactive.

Overall, I liked the game but after an hour or to mindlessly tapping away at numbers and pulling the lever with the TV playing in the background- I noticed that two of the important Pattern powerups wouldn't unlock, even though it plainly said that I had met the requirement, I continued on anyway, thinking maybe the numbers it said I had needed were just a typo, but hours later I'd unlocked nearly everything else in the game, I decided to google for help.

No luck. I only was supposed to need 7 cleared easy patterns, I ended up clearing 712. So I eventually just rolled my eyes and went online, and to no great surprise, nobody else really has posted about the issue anywhere. So I posted about it on GameFAQs, which is a place I regularly visited at the time. The next day some woman on facebook posted something about it, saying they were having the same issue.

So, I guess it's a just bug- the patterns never unlock for some reason. Rather unfortunate because that makes getting the highest scores quite a bit more difficult.

Fast forward to now, the other day I was at my grandma's house and she was playing the IOS port of Slingo, and I thought about it again. When I had this issue originally, it was before 3DS hacking was even a thing. I thought about it and decided to try my hand at fixing it, or at least working around it. I'm not much for disassembly- so I decided to take a gander at the Save File in GodMode9- which didn't help much- so instead I put it off until today, where I dumped many saves and asked around on the DSi Homebrew Discord for some help.

@ChampionLeake pointed me to his document on finding checksums, and I went ahead and started to figure it out.
Eventually, I managed to figure it out completely, and then I asked @ihaveamac if he'd be down to help me by making a little python script to automate the process of correcting the checksums in the files, which he did. (Thanks, btw!)

The saves for Slingo Supreme are 11KB exactly, and they have 4 bytes at 0x8 to 0xB that say "SLNG".
The first four bytes of the file (0x0 to 0x3) are a checksum of the rest of the file (which is 0x4 to 0x2BFF).

The checksum it uses is actually just a simple CRC32 hash, subtracted from FFFFFFFF (I'm guessing this was some vain attempt to obfuscate it? Wasn't exactly hard to figure out...)

Anyway, with that- ihaveamac was able to make this in a minute or two:

Code:
#!/usr/bin/env python3
import glob
import os
import zlib
for i in glob.iglob('./**/*.dat', recursive=True):
    if os.path.getsize(i) == 0x2C00:
        with open(i, 'rb+') as f:
            f.seek(4)
            data = f.read(0x2BFC)
            if data[4:8] == b'SLNG':
                print('Fixing', i)
                cc = zlib.crc32(data) & 0xFFFFFFFF
                real_cc = 0xFFFFFFFF - cc
                f.seek(0)
                f.write(real_cc.to_bytes(4, 'little'))

It's a Python 3 script to recursively read dat files in the current folder, check the size and also for the identifying string SLNG, and then correct the checksum in the file.

After that, I decided to just use some good old fashioned trial and error to sort out what some of the bytes in the file controlled.

While I didn't figure out everything, I did manage to find out the info I needed to edit the save files to unlocked the unobtainable patterns powerups.

Slingo Supreme Save File Offsets
---------------------------------------------------------------------
Offset Size Function
---------------------------------------------------------------------
0x0000 4 Checksum of 0x0004 to 0x2BFF
0x000C 1 Year
0x000E 1 Month
0x000F 1 Day
0x0010 1 Player's Chosen Sex
0x0018 1 Year(2)
0x001A 1 Month(2)
0x001B 1 Day(2)
0x002C ? Flags for Hints Viewed?
0x0034 2 Flags for Power Up "New Status"
0x0038 2 Possibly Flags for Enabled Power Ups?
0x003A 2 Flags for Power Up Unlocks
0x003C 8 Stars Earned in Stars Menu
0x00B8 4 Number of Games Played
0x00C0 4 Number of Full Cards Cleared
0x00C4 4 Number of Coins Found
0x00C8 4 Number of Devils Encountered
0x00CC 4 Number of Secrets Found
0x00D0 4 Number of Jokers Encountered
0x00D4 4 Number of Fast Matches
0x00D8 4 Number of Matches Matched
0x00DC 4 Number of Slingos
0x00E0 4 Number of Spins Spun
0x00F4 4 Current Total Score
---------------------------------------------------------------------

Notes on 0x003A, The Flags for Power Up Unlocks
(Also 0x0034, the flags for Power Up New Status)
------------------------------------------------
0x003A and 0x003B are two bytes that control 16 different variables.
This means it's binary flags. Meaning, you break the hexadecimal numbers into binary and each binary bit controls something. Here's a breakdown of them.

0 = Locked (and Not New)
1 = Unlocked (and New, respectively)

0x003A (& 0x0034) value breakdown binary flags:
-----------------------------------------------
Binary bit | function
1 = Extra Coins
2 = Cell Jokers
3 = Extra Spins
4 = Reel Nudge
-
5 = Hard Patterns
6 = Medium Patters
7 = Easy Patterns
8 = Slingo-vision

0x003B (& 0x0035) value breakdown binary flags:
-----------------------------------------------
Binary bit | function
1 = Super Multipliers
2 = Bouncing Slingos
3 = Super Extra Coins
4 = Instant Slingos
-
5 = Power Shot
6 = Multipliers
7 = Devil Protection
8 = Mystery Chests

With that info above, I decided to just make a couple of save files for the game available to download here that start you off with all 3 patterns unlocked, instead of just the Easy ones, since Medium and Hard are unobtainable due to a bug.

To use these, simply copy the dat you want to use to your 3DS' SD card, open GodMode9, navigate to the file on the SD, copy it with Y, then navigate into SYSNAND TWLN, and navigate to 2:/title/00030004/4b335345/data/ and press A on public.sav and choose to Mount as FAT image and Navigate to it right away. Then click on the file "mxnds.dat" and choose Inject data @offset and leave the offset as 00000000. It'll ask you to unlock SysNAND writing as well, so input the combo to write the data.

After that, you can press Start to Reboot and then see if it worked. If it did, your Slingo Supreme will have the unobtainable patterns powerups unlocked with a fresh save file. To be honest, I doubt anyone will really appreciate this, but I figured I'd post it anyway. If it's worth doing, it's worth sharing- or something like that. ¯\_(ツ)_/¯

Comments

Heyo, managed to come across this blog (well, wasn't exactly hard to find, really, this was actually the very first result when I googled "Slingo Supreme DSiWare"), and am I just dumb or am I not finding the download link to the save files you mentioned here? Granted, it's been about three years since you made this post, so you probably don't have the save files anymore, but with the whole eShop closing thing going on, I figured to sort out the DSiWare stuff first and then focus on getting physical copies for games that do have them.
 
Heyo, managed to come across this blog (well, wasn't exactly hard to find, really, this was actually the very first result when I googled "Slingo Supreme DSiWare"), and am I just dumb or am I not finding the download link to the save files you mentioned here? Granted, it's been about three years since you made this post, so you probably don't have the save files anymore, but with the whole eShop closing thing going on, I figured to sort out the DSiWare stuff first and then focus on getting physical copies for games that do have them.
Seems at some point the attachments on GBAtemp blogs have just sorta disappeared?
Weird. Here is a mirror of the file that was attached.
 

Blog entry information

Author
CheatFreak47
Views
424
Comments
5
Last update

More entries in Personal Blogs

More entries from CheatFreak47

Share this entry

General chit-chat
Help Users
    Xdqwerty @ Xdqwerty: https://www.youtube.com/watch?v=pA63mm5FnMo&embeds_referring_euri=https%3A%2F%2Flostmediawiki.com...