We're in the section of the class where we discuss malware, and what better way to practice all of the same skill-set of skills than to do some ROM hacking!
Games are fun, and in tribute to one of the great game franchises with a fairly new release last year, let's have some fun with the original Metroid. Here is your mission: Samus needs your help! She hasn't updated her Power Suit since 1986 and it needs to have the latest tech installed. Turns out, her new Power Suit looks exactly like her old one...but it's purple.
So here is where you come in. Change Samus's power suit color from yellow to purple to put her in the new suit and send her off to kick some metroid butt! Samus told me that it was okay to credit yourself as her new "tailor", so give yourself credit during the opening title screen within the game.
You will have to grab an emulator for old NES-roms. Check the following sites for emulators on your operating system:
OS | Emulator |
---|---|
All OSes | Mesen |
I got a lot of my info (really, virtually everything for doing this assignment) from ROMhacking.net. I recommend you look at that site too, particularly the documents section.
Here are a few documents I found helpful:
Plus, of course, a healthy dose of knowledge from classes like CECS 341 or similar architecture class. You will also need to tinker with this assignment: get creative; try things; make an early copy of your ROM file and don't worry about messing it up; experiment; play around with this. Many hackers learn more from play than work.
- Don't apply any patches or third-party code to your ROM file other than the code you change. A simple run of a
diff
program will easily tell me which pieces have been changed and which haven't. - Do your own work. Cheating and plagiarism are at all time highs in our department and we are being extra watchful right now.
- Come to me if you need help. Really. I'm surprised people don't do this more. There are some things that I won't be able tell you about, but quite a bit that I can.
- Have fun with this assignment. It's supposed to be fun. Hard, yes. But the best puzzles are always the hardest ones ;-).
Here is what I will need from you:
- Your modified, runnable (in working order)
metroid.nes
file which will include:- Samus's in-game suit changed to purple (NES color code:
0x23
or some other purple-looking one) - Your name as hacking credits in the game code, preferably displayed when the game runs
- Samus's in-game suit changed to purple (NES color code:
- At least one screenshot of the game, with Samus's color change and a unique background image within the game. Something to show that you did this.
- A write up with the following info:
- The offsets of the locations changed
- Which value each offset now contains
- Your experiences with the project
- Anything else you want to tell me
- Your writeup must be done in Markdown format and must be included in the repository as a separate file. View the file
README.md
for an example of Markdown. - Screenshots should be done in
*.jpg
,*.png
, or*.gif
formats, and be included individually as files in your repository (i.e. no binary ‘document’ with the images pasted inside). Screenshots which are too zoomed-in, which do not show your desktop, or are otherwise unidentifiable as belonging to you will not be counted. - Screenshots may be linked in your Markdown file writeup if you wish to do so.
Your submission must follow the following rules, else I will not grade it and you will receive a zero for the submission:
- Do not use compression on your files
- Make sure that all significant code is commented with your own explanations