Showing posts with label My Projects. Show all posts
Showing posts with label My Projects. Show all posts

Wednesday, March 21, 2012

How to make the most epic Zelda climax even more epic


So I was listening to the "Inception" soundtrack one day and started picturing "The Legend of Zelda: the Wind Waker" to appropriate parts. And now I am on YouTube. I realized this video was well within my abilities and just had to do it. I've been thinking a lot about the series, frequenting Zelda Dungeon and Kotaku, and altogether trying to collect my thoughts about everything gaming so that I can start a blog to share them publicly. Hopefully I can make good progress in that area, as this is sure to garner some attention (I hope). Afterwards maybe I can make more videos.

Saturday, January 3, 2009

SMB2 Hack: Mario's Gaming Dream

Our internet protection service wasn't working yesterday, so I couldn't access the internet to blog. Instead, I returned to my ROM hacking and dusted off the resulting project of my first venture in the hobby:

I wrote this plot (pretty much an excuse to change whatever I want) shortly after learning to text hack, but the work began over a year ago when I first laid a finger on ROM hacking tools. I had read a tutorial on NES graphics hacking that demonstrated the program with Final Fantasy's characters, then tried it myself. Grabbing the knight's various frames straight out of Final Fantasy, I stuck them where Mario's sprites went in Super Mario Bros. 2. The result excited me so much I decided to draw my own sprites for climbing ladders, ducking, and throwing, the only moves that ripped FF sprites didn't cover. I must have played that ROM for an hour, I was having so much fun.
Then the fighter (who grows up to be the knight) took small Mario's place, making things even more complete. Except for one problem: the knight and the fighter both take up the same amount of space in FF, so they didn't work for being big and small in SMB2. In fact, the knight was half a tile short to take big Mario's place, which was really bad for where the top of the character belonged.



Though it took a lot of work, I found the solution. I noticed how the small characters' heads are oversized for the rest of them in SMB2, so I took the head of the fighter and gave it a homemade, tiny body. I was amazed at my own work; I never expected I could do it so well, being such a lousy artist (I still don't think the knight's climbing sprite looks right...). The time I put into it certainly paid off. As for the knight, I just made his legs longer. = )



The verdict at that junction was to overhaul everything and make an SMB2-style Final Fantasy game, but that never saw the light of day because the other FF characters have too many colors. They get away with having one more color than can fit in SMB2 because the battle background in FF is black, allowing transparency to be used for what has to be black in SMB2. That said, the hack "collected dust" while an alternative goal was sought.

I hit upon the idea to use anything that would work some time ago, and later hacked the storyline to be something like what is shown above. Finally, the idea hit me yesterday to use Simon Belmont, from the Castlevania series, in place of Luigi. I'm nowhere near done with this change (he still has Luigi's colors...), but its completion will be a great feat, as Simon is rather sophisticated for an 8-bit figure. Hopefully people won't find it too weird how Simon flutters his legs in mid-air. Luigi did that, so what can I do? Changing such qualities falls under ASM (assembly) hacking, which is a rather advanced branch of the science (hobby? art? science?). Well, I'm using Simon's sprites (with some refinement) from Castlevania II, in which he actually fell rather slowly, so it works out in my opinion.

Friday, November 14, 2008

Spiff Hack Update

Being the end of the week, I've had time to continue (resume?) working on my hack of Solar Jetman. I figured I'd announce where I am and where I'm going at this point.

Changing the graphics of the pod is proving to be a slow and difficult process. The pod turns 360 degrees while corkscrewing so that you see the top when it faces up and you see the bottom when it faces down. This makes everything in between hard to draw and smoothly connect, especially since Spiff's ship is a saucer and I have to work with a solid red unless I decide to take extra liberties.

Since graphics work was tiring, I decided to look for a utility for overall level editing; I found none. In order to change the level layouts, types and positions of enemies and items, what makes you go where, and so forth, I need an editor. These kinds of things are rocket science to change via raw coding, and if one knows enough to do so, they might as well create a utility to make it easier. Rather than devote my entire computer life to such a thing, I'm going to wait, and possibly ask, for such a program to be made by a ROM hacking veteran. Unfortunately, this could place restraints on what I do until such ability comes into my hands, as I won't be able to fit planet names with planet environments and such all at once. In fact, if I finish this hack in every other way, it may remain a visual hack only, depending on my interest to come back and rework the level designs once I possess the requirements to do so.

So what can I change right now besides graphics? Text. Text hacking is a category unto itself due to how it is stored in a ROM. There are graphical tiles for each letter and number, and the game uses strings of hex numbers in which one number translates to one tile. This makes the hacking a matter of locating the hex strings that represent text. But how is this done, and how do you know what number corresponds to which letter? I viewed this as a complicated problem in the past; in fact, this is the first time I've done it. I once again (I had tried once before) read a tutorial on the procedure, and since I could not get the recommended DOS hex editor (Hexposure) to work properly on the computer, attempted it with the editor I have, differently though it works.

A table file, containing the key for hex and text, is needed to locate and change the right data. Since none existed for Solar Jetman, I had to make my own (I believe this is where I said "forget it" in the past, since Hexposure wasn't cooperating and I didn't know how to use the Zelda table I found with my favored editor). Opening the ROM in a debug emulator, I called up the tile viewer, found the text tiles, and wrote down their hex values in Notepad. After saving the key as a ".tbl" file, I opened it in my hex editor along with the ROM. All the hex numbers in the ROM were displayed on one side and, thanks to the table, the corresponding numbers and letters (where applicable) on the other.

A given hex number may appear several times in the data, and an editor will show it as a text graphic wherever it crops up, regardless of whether it is text or not. Finding the actual text was the easy part, though. I just had to scroll through the data until I found actual words from the game. Then all that had to be done was change the hex numbers so they made the text I wanted.

However, Solar Jetman had a catch. Each planet's name was missing the last letter in the editor, with one untranslated hex number in its place before the text for the next planet. I had to tinker with this on my own in order to figure out how to deal with it. Experimenting with planet 2, I first tried replacing the untranslated number with the hex for "D;" but when I opened the game I found that "2 MEXOMORF" (the F was missing in the editor) had become "2 MEXOMORD3 OMEBRU." The text had been squished together with planet 3's. I could draw two conclusions from this: the unrecognized hex contained the missing letter, and it also served as a sort of break or finisher, ending the line of text. I made certain of this by replacing the number in between planets 1 and 2 with the one in between planets 2 and 3. Sure enough, this made "1 PRELUDON" say "1 PRELUDOF." At this point I began to jot down the values for these "letters and breaks" in my table file, and suddenly noticed that if I filled in the rest of the letters of the alphabet that the game's planets didn't use, I would have sequential hex for every letter followed by one of those breaks. The last question, then, was whether or not I could use the resulting table to end a planet's name with a letter that the game never did. I tried it, and it worked!

I am very pleased with this accomplishment; maybe I'll be a great ROM hacker yet.

Sunday, October 12, 2008

Solar Jetman hack: Spaceman Spiff


This is a hack I am working on, as of a few days ago. I got the idea some time before, but never sat down to experiment with it. Now I have Spiff's graphics completed, including palette changes, and am working on his ship. It's very time-taking to redraw every frame of the ship turning 360 degrees and sort of flipping upside-down in the process (if you've played the game you will know what I'm talking about), especially with a saucer as opposed to the original egg shape of the pod. What's more, I can't get as 3D a look as I'd like, because the ship and the spaceman share the same color palette; having only 4 colors per sprite to work with in the first place, the ship can only have one color other than yellow, blue, or transparency, all of which are needed for Spiff. This means that the saucer must be a solid red instead of the 3D shading you can see in the screenshot.

This will take a long time to complete, especially since I won't be spending all my time working on it. Technical issues may arise and ideas for the game may change, but I don't intend to abandon this endeavor. Eventually this should join the ranks of fan creations as "Spaceman Spiff: The Hunt for the Flying Tiger!"