After several weeks of planning and prepping I’m finally making showable progress again! Yes! This is a shorter post, but hopefully I’ll make up for the shortness with the following footage and screen shots.
As always, be very aware of the spoilers involved in recording game play of a story modification. If you don’t want the new story ruined before actually playing it… don’t watch the video! I won’t judge.
Let me clear something up right from the start… limitations are not a bad thing. They are usually hard, but hard and bad are completely different things. Timeless is really an exercise in dealing with limitations, and here’s one example.
Pixelated or not, I don’t think I’ve ever actually read her dialog…
In preparing to rewrite the scene where you meet Zelda for the first time, I realized that her dialog was chopped up into many mini messages (alliteration FTW!). Each new message starts when she changes position, or the camera moves around. And while this system works great for when the dialog has already been written before hand and the original developers are simply adding a bunch of camera changes to spice things up a bit… it makes it difficult for me.
You see, now I’m stuck with the flow of the conversation while attempting to give the game a completely new storyline. When one message ends, the cutscene programming forces it to move onto the next one in the sequence, and I have no control over that.
Needless to say, this 10-15 minute dialog cutscene between Link and Zelda has been quite daunting for me. I have a general idea of how I want the conversation to go, but now I need to figure out how to make it fit within the limitations given me. Once again, this is hard… but not bad.
I’ve already done a few smaller cutscenes with good results, like when Saria stops Link on the bridge before he ventures out into the wild for the first time. The difference here is simply scale.
So here’s what I did to try and make the actual writing easier. I took a screenshot of every new message block (which also means every time the scene changed in some way), and lined it up with the message number. I blurred out the original dialog so that I wouldn’t be influenced by it, and could focus on what Zelda was physically doing. After that, I copied the original text from the message bank and lined it up under each photo. Saved it to Evernote so I could edit it on my iPad while on break at work, and voila! Prepped and ready to go!
Here’s a link to the actual note in Evernote if you want to see the mess that it is. But while it’s a mess, it’s SO MUCH NICER than it would be otherwise. To get it in game, all I need to do is copy it from Evernote into the correct location in the message bank text file, then inject it into the ROM.
The past few weeks have been incredibly busy for me, both in real life and with Timeless. In real life, I’m moving about 2300 miles to a completely different culture and climate. That’ll be going down in just about a month from now, so there has been a lot of planning involved in that.
As far as work done on Timeless, most of it has been behind the scenes type stuff. I was originally going to do a post on each thing I learned, but the wide spectrum of subjects means that’ll be spread out across several weeks. Instead, I’ll list and briefly summarize everything, then as time permits I’ll expand on them.
I swapped from the v1.0 ROM to the Debug ROM. Lots of reasons for this, but that’s a long story for its own post.
I successfully altered some in game textures.
Someone offered to make some butt kicking textures. This guy works in the game industry as an artist and is really quite phenomenal at what he does. I’m honored. More when there’s something to show off.
I’ve been learning how to implement custom music.
AnimatixReels has offered to tackle the composition of said custom music. He’s really good, and excited to jump on board. Once again, more when there’s something to show.
Continuing on the vein of music, we’re going to be including all new ocarina songs, potentially with a new 5 note scale.
I managed to completely botch the porting of dialog from the previous v1.0 ROM to the Debug ROM… and have spent a good week or so trying to fix it. I finally fixed it today!
Lastly, I figured out a way to patch the Debug version of the game into the easy to find v1.0 ROM! What this means is that the process of patching Timeless 64 will not be any more difficult than it was for Chapter 1. This makes me happy, as accessibility is a focus for me.
So, yes… while I don’t have a lot of stuff to show for the previous few weeks of hard work, I did do a lot.
Which of the above points do you want to hear about first?
I don’t know what possessed me to try something as difficult as messing with exit codes and transition actors for my very first foray into actual HEX editing, but it’s been documented for the world to see. I’m beginning to realize that most of modding (and probably programming for that matter) is failing. And this a good thing! The trick is to learn from those failures and keep trying. Let me show you what I did.
The plan was to make the Lost Woods something to be reckoned with. Because let’s face it, those woods aren’t really a challenge any more… I wanted to make it so you would walk from one room into a second, only to find yourself in a dead end. So then you would turn around and walk back into the first room only to find that somehow you’re in a third room! The possibilities are endless with such a devious incarnation of the Lost Woods. And it would fit perfectly into the theme I’ve created for the Forgotten Children in Timeless.
One “room” in a large scene
Okay, now for the gritty part. The physical locations of the game are called scenes. For example, inside the Deku Tree is one scene, the Kokiri Forest is another scene, and the Lost Woods is a third. Each scene is made up of several smaller chunks called rooms (or maps). These individual rooms are created to ease the burden of loading too many things at once into the weak sauce N64 memory.
Probably the best example is the Lost Woods. Notice how when you walk from one room to another, there’s a black plane obscuring your view? That’s separating you from an unloaded room. Once you walk up to it though, the black plane fades away and you can see the next room. With this trick, Nintendo made sure only two rooms at a time could be loaded into the memory. That black plane is called a transition actor. It transitions you from one room to another.
Making sense of rooms and transitions.
I had been reading forums that documented the way to modify the behavior of transition actors, and I wanted to try something that I thought would work. Well… this is one of those times where I learned the hard way.
Essentially, my mistake was that I imagined “load this room when walking through transition actor” to mean that it would load the requested room right next to the transition actor requesting it. In reality, it meant it loaded the room exactly where the original developers placed it…
So instead of taking advantage of the great “two rooms at a time” trick that makes the player think they’re walking through a connected seamless map… I only destroyed the illusion.
Lesson learned? Transition actors don’t teleport Link all over the map. They do exactly what they say they do… load the requested room when walked through. Haha!
Everyone hates the owl Kaepora Gaebora. He doesn’t say anything worth noting on a second play through and he has that ridiculous “Did you get all that?” question with the default set to “No“. Why?! If you look a little deeper into the code, you’ll notice that the first portion isn’t skippable, but the rest is. While it seems like that should be a blessing to the player, it really just makes it easier to hit the default No and have to repeat the dialog again. So, I decided that in Timeless Kaepora Gaebora was going to be an important character and that I’d get rid of his stupid repeat question. Well… apparently that’s easier said than done. Let me show you.
The highlighted area is his entire conversation he has with Link the very first time you walk out of Kokiri Forest. You know, when you’re bright eyed and bushy tailed… excited that you’re talking to an outsider for the first time, only to be horribly disappointed with the encounter? If looking HEX code is new, I’ll point out a few things for you. First off, notice how on the right side is readable text and on the left is a bunch of number/letter pairs. The numbers on the left are a simplified version of the actual bit-code that makes the game function, and the stuff on the right is a visual representation of what the code on the left means. Both are important and help us puny humans visualize what’s going on in the game. More important to this discussion is how his dialog is broken up into four separate sections. Observe.
Each block begins at a specific location in the memory, with each block numbered… this number can’t easily be changed without screwing up a bunch of other offsets, potentially breaking the game. Each block ends with a 02 flag. Also worth noting is the dreaded flag 1A that makes that block’s text unskippable. Notice it’s only used half the time…
Let me explain the flow of this conversation. It starts in message #2064 and goes until it reaches the 02 flag. But notice that right before the 02 are three number blocks boxed in red? The 07 portion is telling the game that once it reaches the 02 at the end of the message block, it needs to continue directly to message #2065. Message #2065 is the looping part of his dialog. Same thing happens at the end of #2065, except this time it’s telling the game to continue into message #2066.
As you can see, #2066 is the “Did you get all that?” message block. Here’s where it starts getting funky… I don’t think anyone knows how the “Yes/No” dialog choice things work. Notice how at the end of this block, the only thing that ends it is the 02. There’s no fancy string of code to reference another block. All I know from trial and error is that if you press NO it repeats the skippable loop message #2065… and if you press YES it moves on to the unkippable message #2067, which then ends the dialog and triggers the animation of the owl flying away.
Here’s a lengthy (kinda boring) but informative video of me actually editing the dialog for testing. It’s all annotated so you can follow what I’m doing.
End result? Sadly it didn’t work out the way I wanted it to! Apparently the variable that tells the game you’ve finished your conversation with the owl is triggered by selecting YES! Gah! So no skipping it without editing the code somewhere else… no simple dialog edit there.
To comply with the law, this download does not include an actual N64 ROM. Instead it includes a patch, along with instructions on how to install the patch. Please don’t ask for a ROM, as I’m not willing to provide one for you.
This was an exciting video to record, because it means I’m oh so very close to the first public beta release download. At this point, I have to make sure all the wooden signs are consistent with the rest of the game’s story, and then do a final comb through. Then it’s Public Release 0.10 time!!
As far as this video goes, there are a couple things to note. Mostly that I couldn’t help but prod some of the tired old Zelda tropes in the side (like explaining how to open doors and such), and that all the tutorial text has either been changed entirely or has been made skippable. I expect to rewrite the text that pops up when you climb the vines for the first time… but no lightning struck my brain at the time I was editing. As always, enjoy!
Since this weekend I’ve spent all of my available time either at work or preparing to make Timeless a reality. What I’ve learned is that preparation is a full time job in itself!
Y’see, I’ve been working very hard on Timeless all week… and yet I have absolutely nothing to show for it yet. All I have is the knowledge that I’ve been building a structure that will allow me to post things places with minimal time commitment or effort.
This is actually quite nice for the future… but as it is, it just feels as if I’ve not been making the game! I guess this is a good lesson to learn early. One can easily over prepare (I’ve not yet reached that point yet), and preparation is completely necessary to make a large project more than a dream.
So, hang tight! I’m working hard on Timeless and I hope to continue to be transparent about what’s going on. I’m definitely a fan of the Wolfire style.
There were a number of reasons why I chose not to do anything but edit text for this mod. Let me start with a story.
Checkers… why you so deep?!
In 2008, I started to become very interested in game design and was reading Game Design Workshop by Tracy Fullerton. In it, she repeatedly challenges the readers to put into practice whatever principle was covered in that chapter. I was reading the chapter about story in games, and the power that they can add if done well. So I decided I’d use Checkers as my guinea pig and add a backstory to all the pieces. It was a resounding success, in that each piece was so important that neither side was willing to sacrifice them. The game was absolutely no fun to play (because no one likes sacrificing the father of the farm you’re protecting from bandits) so I eventually ended up throwing it away. Heh…
But what was the lesson learned? That any game could have the exact same ruleset with a new (or added) story, and the feeling of the game could drastically change. Motivations change, connections are forged. For instance, in the above Checkers example, the original strategy is to sacrifice some of the pieces in an attempt to lure your opponent into a trap. However, when each and every piece is important to the player emotionally… then sacrificing is no longer a desired option. Do you kill off characters (permadeath style) while considering the heartache the characters will feel after the completion of the game as they deal with a hole in their family, or do you try and keep every single character alive… which will most likely result in losing entirely?
I was fascinated by the concept that human emotional bonds could create such drastically different experiences. This became the basis for Timeless 64. I wanted to give players a comfortable experience (how many gamers HAVEN’T played Ocarina Of Time at least once), while dramatically altering their perception of the events.
I’ll cover the plot motivations of Timeless in another post. In the mean time, what games do you think could benefit from a story revamp? I’m curious if anyone else has had a similar experience to the Checkers example.
Here is a continuation of the gameplay recordings. This video starts right after beating Gohma, continues through all the storyline cutscenes, and ends with Link leaving the Forgotten Forest for the first time.