Hey, everyone. I originally posted this over at 8bit collective and a member pointed me in the direction of the NesDev forums. Here's my original post:
Hey guys. I'd like to begin by saying I'm dead serious and that I'm looking for real advice. This will probably sound a little silly, but bear with me.
I'm thinking of tying the knot with my girlfriend and I've been mulling it over in my mind how to propose to her in some grand and surprising fashion.
My girlfriend is a huuuuge Tetris fan. She plays it on a daily basis and has a special love for the NES version. I was thinking it'd be really awesome if I could hack a cart to deliver my proposal after she finishes a round of tetris. She gets pretty focused when she's clearing lines, so there's no way she'd see it coming. All I'd have to do is switch out her cart with my hacked one and then play the waiting game. You know, go down on one knee once she tops out.
Tell me, is this at all plausible? Would it be possible to hack the ending of a game of tetris to deliver a few lines of text and maybe a simple rendering of a heart or something like that?
I'm just curious if it'd be possible. Would it be just such a huge amount of effort and work that a layman would be unable to figure it out? I'm willing to spend the man hours learning how to make it happen, if there is such a possibility.
If it can be done, I'd really appreciate it if you guys could point me in the right direction of how to get started. If I have to build a hardware interface and flash a rom onto a blank cart, so be it. I want this proposal to come out of nowhere so it'll have some flash and pizzazz. I'm still a ways off from proposing, but I'd like to have the moment ready for when I've prepared the other fun stuff (like the much less fun talk with her Dad).
Anyways, I appreciate any advice you can offer.
Alt4 wrote:
Tell me, is this at all plausible? Would it be possible to hack the ending of a game of tetris to deliver a few lines of text and maybe a simple rendering of a heart or something like that?
That'd be almost trivial. All you have to do is take an open-source NES game with the same rules as Tetris (such as my own
LJ65), change the Game Over scroll to say "WILL YOU MARRY ME?", and recompile.
Quote:
If I have to build a hardware interface and flash a rom onto a blank cart, so be it.
Really all you have to do is load the game onto a CF card and put it in a
PowerPak.
tepples wrote:
Alt4 wrote:
Tell me, is this at all plausible? Would it be possible to hack the ending of a game of tetris to deliver a few lines of text and maybe a simple rendering of a heart or something like that?
That'd be almost trivial. All you have to do is take an open-source NES game with the same rules as Tetris (such as my own
LJ65), change the Game Over scroll to say "WILL YOU MARRY ME?", and recompile.
Quote:
If I have to build a hardware interface and flash a rom onto a blank cart, so be it.
Really all you have to do is load the game onto a CF card and put it in a
PowerPak.
My guess is her reaction would be "WTF is LJ65 and WTH did you do with my Tetris???"
I think he means taking the ROM image of the game she plays daily and modifying it. Only slightly more complicated than your proposal [pun intended].
Haha, cpow's got it. The idea is to have a game of Tetris that's indistinguishable from an actual copy of tetris, except when you finish it asks you to get married.
Everything is doable, you only need either skills and knowledge how to do that, or money to get someone to make this done for you. You can't get the knowledge and skills with just reading few posts on a forum, this requires a lot of time and dedication.
Also, you actually need to do two separate, unconnected things - hack a game and put it onto a cartridge. First requires knowledge of software, second requires knowledge or hardware (or just money to get PowerPak).
cpow wrote:
My guess is her reaction would be "WTF is LJ65 and WTH did you do with my Tetris???"
"I made it faster and more responsive because I love you."
Are we talking about Nintendo's version or Tengen's version? For Nintendo's version, probably the easiest hack would be replacing "SCORE / LEVEL / HEIGHT / TOTAL" in the B-type result screen with "WILL / YOU / MARRY / ME?".
Well, I really just wanted to know if it was doable. That way I could either decide to sit down and do the research on how to make it happen, or find another way of proposing.
Beings this gang is pretty confident that it's possible, I think it'd be time to take the first steps down the road to making it happen.
I take it there will be weeks worth of studying and preparation? Where's a good place to begin my education?
General computer science concepts to read up on first:
http://wiki.nesdev.com/w/index.php/Before_the_basics
Concepts specific to hacking:
http://www.romhacking.net/start
Thanks, everybody!
And thanks for the links, Tepples.
S'gonna be a good time for sure :3
So...? Something like this? (ignore the random period in the middle, must have missed something when I put spaces everywhere)
If so, here's an IPS patch to do that much:
http://www.mediafire.com/?s7dad4fnninpxdn Took like ten minutes. So if you've got a specific message, PM me.
As for a crude rendering of a heart, that's probably also possible. It might even be possible to put a teeny, tiny picture of you or her depending on how many unique letters your message uses. (Edit: NVM, no the picture definitely can't be done. If she's good enough to get to the castle ending, we can't take those tiles out. Unless you don't mind her head blasting off, heh)
Edit: Putting this on a cart is probably easy too since this board is cloned by retrozone, but I won't do that for you.
Also, this counts on her getting to the high score table, but from what you describe it sounds like that won't be an issue.
Wow, ten minutes, Kasumi?
Heh, guys around here really know what they're doing!
Thanks so much for the help. This'll make an excellent reference. Looks like the hard part's gonna be getting the info onto the cart, but I love a good build project, so it'll be fun.
People who play a lot of games stop reading the text, they just know what it says, they don't even look at it. So when the name entry screen comes up, I bet she wouldn't even notice it.
So you need something else to get attention, so it's not just a skippable Name Entry screen with hacked text.
Hack it to also play the unused song in the game.
Or make the rest of the screen black, and stop the game (still playing music).
You're probably right, Dwedit. I won't bother with the song thing, but I'll see if I can't make it stop accepting input at the name entry screen. (So it can't be skipped at all.)
Anyway, here's how I did it: (And by the way, I'm totally happy to just do it for you. The only reason I won't put it on a cart is because I've only made one cart before, and if I mess up I'm out some cash. I'd highly recommend you do find another person unless you're a real do it yourselfer, else it's a moderate amount of money for an Eprom programmer you'll only use once. I know... because I've used mine only once. I wouldn't call the process hard though. Just burn eproms, and solder them to a board)
Open up Tetris in FCEUX. Get to the high score screen. Go to debug, name table viewer. Mouse over the text in the screen, and look at the tile ID.
Mouse over C you get 0C. Mouse over O you get 18. N is 17. G is 10, etc.
Get a hex editor. FCEUX actually has one built in. (If you're going to use that one, debug, Hex editor. Then view, rom file.)
Now search for the string of hex numbers. For instance, cong is 0C, 18, 17, 10. To replace that text, just type in the tile ID of the letters you want there. For instance, putting 00 01 02 03 in place of 0C, 18, 17, 10 would make it say 0123ratulations
To find out the hex values of the letters you'll need, go to debug, pattern viewer. Save the rom, run it and see how it looks.
And here's a new version that addresses Dwedit's concerns:
http://www.mediafire.com/?3tnp9p9ffonp8x4
It just completely locks the game up on the high score table, so she can't skip it. I even made sure it doesn't lock up in case of the castle blast off sequence, but something I did may have affected something else. No music or anything, but I wouldn't be willing to dedicate the time for all that. If a frozen screen with a message is enough, it's essentially done.
Edit: I just figured out how I can probably make it keep playing the music, but I still wouldn't know how to change the song.
Well, you're very kind, Kasumi. Thanks for doing so much tinkering on my behalf. Dwedit, you bring up an excellent point. There's quite a few games out there in which I myself just jam the start button until I'm playing again (just got it all memorized after all these years).
Thanks for the tips, Kasumi. I'll do some digging and see how much I can alter the final screen. I'll try to make it so radically different that it would be foreign to a person who's a regular tetris player.
The actual act of getting the info onto a cart is something that I'm 100% unfamiliar with, but I like to think I'm a DIYer, so it should be a fun project.
I've been into the 8-bit music scene for some time now, so getting to know how to hack roms is a skill that I'd like to have. All in all it should be a good time.
Thanks again, everyone.
If you need help getting it on a cart let me know. I'm generally not a fan of hacking up old games, but this sounds like a just cause.
He doesn't even need to hack up old games. (if you mean hack up as in destroy like what most reproduction services do and not just rom hacking which I did.) Tetris is MMC1, so he can just buy one of these:
http://www.retrousb.com/product_info.ph ... ucts_id=43
one of these:
http://www.retrousb.com/product_info.ph ... ucts_id=37
and the eproms and capacitors the board needs. He may not even need a case, he can open up the Tetris case and swap the boards for the few minutes the hacked rom will be run, then swap the boards again and the old game will be as it once was.
Yeah I guess you're right. I was thinking he'd want to make sure he had it in the original case and be hacking one up anyways.
But retrozone's boards fit in the original cases. So he could just but the new board in the old case and hang on to the original board. That way it would still have the original cart's casing as a disguise. I know the powerpak was brought up, but if she realized it wasn't the original cart it wouldn't be as surprising.
A red PCB isn't very stealthy.
Edit: Scratch that, you don't see the PCB when you look at the connector edge. But you can see a full set of pins, unusual for a Tetris game. And it also looks subtly different from a real game, the cartridge edge is whiter and looks thicker, but you'd need to be looking for it to see it.
You could even work that subtle difference into the spiel. Tape the ring into the cartridge, and then open the cartridge after she says yes.