ROM Hack Need Help Editing a ROM

drfsupercenter

Flash Cart Aficionado
OP
Member
Joined
Mar 26, 2008
Messages
1,909
Trophies
1
XP
1,163
Country
United States
Alright guys,

This may sound like a strange request, but I have my reasons for wanting to do this.

Basically, I want to take Play Coin Setter and make it appear to the 3DS as a legit retail game card. Something like Pokémon X, or maybe Mario Kart 7 (if a CARD2 won't work), or possibly Cubic Ninja? Something that would be logical to boot up and quit a minute later.

Simply setting the ROM to not show up in activity log doesn't work. It still adds a title to your software library, it's just invisible. Still blatantly obvious you're hacking.

So the first thing I tried was using "3DS To CIA Converter v4.1"
There's an option in there to unpack and repack ROM files. Since PlayCoinSetter.csu isn't encrypted, I didn't need xorpads to unpack it. I tried a simple mod to start - I let the program unpack the ROM, which gave me a folder for romFS (which is just one tiny file), and exeFS. I replaced banner.bin and icon.bin with the same files from Mario Kart 7. I had used Queno's tool to unpack the MK7 ROM.

The icon was the same 14KB, banner was a bit larger since it's animated.

I let it repack, and much to my dismay the ROM it gave me didn't work. I put it on my Gateway and it showed a white square rather than the icon I wanted, and it had no title either. Selecting it didn't help either, it didn't show that I inserted a cartridge.

And at this point, literally all I changed was the icon and banner. I haven't even touched the ROM title and unique ID yet.

Why is this happening? Does anyone know a better way to do it?

Picture of broken ROM: http://i.imgur.com/H8Vbpln.jpg

Edit: OK, this is strange. I tried simply unpacking and repacking without touching any files, and it has that same problem. I'm pretty certain it isn't encrypted, as when I try to unpack Mario Kart 7 the same way, it doesn't give me any files. I'm using the one from SDK 5.2.2 as found in the Scene pack.

I have no idea how RSF files work, but obviously something's getting screwed up. It does extract the exeFS and romFS correctly from PlayCoinSetter.3ds (I just renamed the .csu) but then it completely fails when repacking, even when I don't modify anything. It becomes 128MB instead of 300KB, but I assumed that was intentional.
 

drfsupercenter

Flash Cart Aficionado
OP
Member
Joined
Mar 26, 2008
Messages
1,909
Trophies
1
XP
1,163
Country
United States
Hey, I got it to work!

Rather than simply delete this thread, I figured I'd mention what I did so if anyone else wants to try, the answer is here. (Anyone hate when you're trying to search an obscure error and only find forum threads where someone says "nvm, I got it" and never says what they did?)

I utilized the same two tools as before - "3DS To CIA Converter v4.1" to unpack the ROM (though honestly, I could have done this with ctrtool by itself), it gave me exheader.bin as well as a romfs and exefs folder.
I then used Queno's 3DS to CIA pack to convert Mario Kart 7 ROM with xorpads to a CIA - which left the extracted exefs files behind for me to work with.

Lastly, I used 3DS Builder. That's a nifty tool that cearp told me about which doesn't require RSF files.

So, there were two parts to it. First, I had to replace the icon.bin and banner.bin with that of MK7. Simple, just drag, drop, and overwrite.
Then came hex editing. I opened MK7's exheader and PlayCoinSetter's exheader, changed the initial text "PlayCoin" to "MarioKar", and replaced the two instances of its little endian title ID with MK7's - basically, replacing 0x000DF40F with 0x00080300.

In 3DS Builder, it automatically detected MK7 and offered to set the game serial to CTR-P-AMKE which was correct, and I selected the modified exefs file with the untouched romfs. Unchecked to make it Card2 (it says it's less compatible or something, but MK7 is a Card1...) and told it where to make the ROM. The result was a 128MB ROM, and testing it out, it shows up in Activity Log just as legit MK7 does but lets me set play coins :D
I was also able to trim it down to 752KB.

Just a note though, downloading the title update breaks it. I shouldn't be surprised, since it's trying to patch data that isn't there. I might look into repeating the process with a game that has no title updates just so I don't have to go removing it from my emuNAND just for this purpose - mainly I wanted a proof of concept and I proved it's doable!
 

gamesquest1

Nabnut
Former Staff
Joined
Sep 23, 2013
Messages
15,153
Trophies
2
XP
12,247
Hey, I got it to work!

Rather than simply delete this thread, I figured I'd mention what I did so if anyone else wants to try, the answer is here. (Anyone hate when you're trying to search an obscure error and only find forum threads where someone says "nvm, I got it" and never says what they did?)

I utilized the same two tools as before - "3DS To CIA Converter v4.1" to unpack the ROM (though honestly, I could have done this with ctrtool by itself), it gave me exheader.bin as well as a romfs and exefs folder.
I then used Queno's 3DS to CIA pack to convert Mario Kart 7 ROM with xorpads to a CIA - which left the extracted exefs files behind for me to work with.

Lastly, I used 3DS Builder. That's a nifty tool that cearp told me about which doesn't require RSF files.

So, there were two parts to it. First, I had to replace the icon.bin and banner.bin with that of MK7. Simple, just drag, drop, and overwrite.
Then came hex editing. I opened MK7's exheader and PlayCoinSetter's exheader, changed the initial text "PlayCoin" to "MarioKar", and replaced the two instances of its little endian title ID with MK7's - basically, replacing 0x000DF40F with 0x00080300.

In 3DS Builder, it automatically detected MK7 and offered to set the game serial to CTR-P-AMKE which was correct, and I selected the modified exefs file with the untouched romfs. Unchecked to make it Card2 (it says it's less compatible or something, but MK7 is a Card1...) and told it where to make the ROM. The result was a 128MB ROM, and testing it out, it shows up in Activity Log just as legit MK7 does but lets me set play coins :D
I was also able to trim it down to 752KB.

Just a note though, downloading the title update breaks it. I shouldn't be surprised, since it's trying to patch data that isn't there. I might look into repeating the process with a game that has no title updates just so I don't have to go removing it from my emuNAND just for this purpose - mainly I wanted a proof of concept and I proved it's doable!
yeah i made a few "stealth apps" a while back, i just used crappy games so i wouldnt get confused as to which was which.......for the super paranoid they would be good :P
 

drfsupercenter

Flash Cart Aficionado
OP
Member
Joined
Mar 26, 2008
Messages
1,909
Trophies
1
XP
1,163
Country
United States
yeah i made a few "stealth apps" a while back, i just used crappy games so i wouldnt get confused as to which was which.......for the super paranoid they would be good :P

Gotta love how nobody replied before I figured it out myself :P

I'm actually trying to figure out what to use, I'd like to use something already in my game library so that it seems a little more legit - especially games that use StreetPass, I used to actually load up Mario Kart 7 for a minute just to check my received data, then close it, so it doesn't seem too unreasonable I'd do the same on the stealth Play Coin Setter.

I was initially going to go with Pokémon X, but that's a CARD2 and I wasn't sure if it would cause the 3DS to notice something was off since the recompiled one wouldn't have any save area in the ROM.

Was thinking Cubic Ninja, but since that game is synonimous with hacking, I'd rather not throw up a red flag. Hm, maybe I could use Crush 3D, that title has StreetPass, it just never actually works...
 

gamesquest1

Nabnut
Former Staff
Joined
Sep 23, 2013
Messages
15,153
Trophies
2
XP
12,247
Gotta love how nobody replied before I figured it out myself :P

I'm actually trying to figure out what to use, I'd like to use something already in my game library so that it seems a little more legit - especially games that use StreetPass, I used to actually load up Mario Kart 7 for a minute just to check my received data, then close it, so it doesn't seem too unreasonable I'd do the same on the stealth Play Coin Setter.

I was initially going to go with Pokémon X, but that's a CARD2 and I wasn't sure if it would cause the 3DS to notice something was off since the recompiled one wouldn't have any save area in the ROM.

Was thinking Cubic Ninja, but since that game is synonimous with hacking, I'd rather not throw up a red flag. Hm, maybe I could use Crush 3D, that title has StreetPass, it just never actually works...
yeah i didnt see the thread until just now :P, why exactly do you want a game that has streetpass? you only need 3 games, doesn't really matter if its games that you would want to play, just as long as they are real games....dev-menu barbie edition anyone? :rofl:

i suppose if you intend to do the same for homebrew too, depending on how many homebrew/dev apps you want to install, things could get a bit confusing
 

drfsupercenter

Flash Cart Aficionado
OP
Member
Joined
Mar 26, 2008
Messages
1,909
Trophies
1
XP
1,163
Country
United States
It doesn't need to be StreetPass, but I was just thinking it made sense to have a game that I could actually justify opening for a minute at a time frequently. You wouldn't normally do that with most games, accidental boots sure but 20 times a week?

I think I'll go with Sonic Generations though. I own the retail game and since I've 100%'ed it legitimately, the only thing I use it for anymore is StreetPass data (honestly, I could disable it, I already cleared all the missions... I just keep it enabled so I can help everyone else over HomePass who needs to unlock missions!) so usually I do just open it, go to options, review the data, and close it. Perfect excuse. And there are no title updates for it.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Psionic Roshambo @ Psionic Roshambo: @SylverReZ, Indeed lol