Original Post

So, yeah. I’m one of the chosen ones that got the Faceball ROM early. Just to prevent misunderstandings: I got the ROM early because I’m a nice guy. I don’t do this for money or to get a free copy. I will buy both, the normal and the collectors edition. The original version is a really great game. I played through it multiple times and I think it is easily worth 100$.

I spent the last 4 or 5 days hacking around in the ROM and have already discovered allot of things. It is my first ROM hacking project, so I needed some time to figure everything out. I focus on changing the gameplay and don’t try to fix the typos. Special thanks go to Greg Stevens and HorvatM who pointed me at the right tools. The Sacred Tech Scroll from Guy Perfect made things allot easier for me. He also took the time to explain me how to write asm statements and get them into a ROM (even though he didn’t know what he was helping me with).

That said. manipulating the ROM is fairly easy. After 2 days I could already do things I would have thought are not possible. I can’t wait for what guys like HovratM or Greg Stevens can pull of. So here is what is possible so far.

There are 14 mazes in the ROM which I can freely modify. Meaning I know how to:

– change wall positions
– change wall types (I was hoping to find a mirror wall-type as there are some hints in the game that this was planned but it seems like they didn’t make it into the code.)
– change enemy start position
– change enemy strength
– change enemy drop item
– change enemy attack behavior
– change enemy movement behavior
– change enemy escape behavior
– how to attach a shield to an enemy
– some other stuff I can’t remember right now
– oh yeah, there is a Facball enemy I can use

I also think I know where the items that simply lie around in the levels are stored, but I didn’t play around with that yet.

On top of that I figured out how the mazes are loaded. This allows me to create completely new ones, put them somewhere in the ROM and load them instead of the existing ones.

As I said before, there are only 14 mazes. This means if I manipulate maze 1 it changes for all 4 stages. However, I figured out where the selected stage is stored. After that I wrote some code that is executed instead the original maze-loading code. This allows me to load what ever maze I want and yeah, this means I can have 56 different mazes in the game.
However, I only tested this in a very simple way.

OK, that it for now. Ask questions if you want to. I will keep the updates coming.

178 Replies

I say go with whatever you feel is best thunder, unless there is a mass of people against it. As Dor-Si states this is the remastered edition, and there is always the option of patching the Rom for FB+ play.

If the end goal of this project is for you to develop a complete hack for a physical cart release, then go with what you feel is best. After all, it will be your project and you should be happy with the end result.

If the end goal of this project is to release an editor so others can make their own custom builds, then please consider providing a drop down that allows us to patch 1. default controls, 2. strafing on the left d-pad, or 3. strafing on the right d-pad. Unless, of course, this is easier said then done, in which case, continue to go with what you feel is best.

As gamers, we will adapt.

thunderstruck. Please no change control of NikoChan Battle game. If you change game control, then NikoChan Battle is no more NikoChan Battle. Please keep NikoChan Battle same. Please keep control same.

Have a nice day.

Wow Mr. G is back; we haven’t seen you in a long while.

I found a way to enable strafing on the right D-Pad as well. I also added it to the Level-Editor. I hope everyone is happy now!!!!!!! I added a screenshot as a proof.

There were several request about how exactly I hack the controls so here is a brief explanation:

The game copies the low and high byte of the input controls to 0x500926d. Note that the ‘Always 1’ will be set to 0 during the copy process. It took a while for me to figure this out but in the end you can see it if you add a read-breakpoint at 0x02000014 (Game Pad Input High) and look what happens with the loaded value.

If you want to change the input controls you can simply add a read-breakpoint to 0x500926d and check what happens when playing a level. There is a piece of code for every input control and the value is loaded every time. So you can just go ahead and jump from breakpoint to breakpoint to see the code for the respective input controls.

The game usually loads the value to r10. After that it performs an “andi” with some value on r10. This is done to exclude certain buttons from the following check. After that there will be a “movea” which loads the compare value to r1. To find a specific control you can just look at this. The button combination for the debug menu is for example 0x303C. After that there will be a “cmp” that compares r1 and r10. The compare condition then jumps to the respective code if the correct buttons had been pressed or otherwise to the next check for input controls.

I hacked the controls by manipulating these jumps. Meaning if left on left d-pad (0x200) is detected I don’t jump to the original code but to the code that is executed if left on both D-Pads (0x4200) is detected.

Finally, here are the positions where the code for the controversial movement controls can be found:

Strafe Left (0x4200): 0xfff0d888
Strafe Right (0x180): 0xfff0d958
Left D-Pad Left (0x200): 0xfff0d8b8
Left D-Pad Right (0x100): 0xfff0d988
Right D-Pad Left (0x4000): 0xfff0d8d0
Right D-Pad Right (0x80): 0xfff0d9a0

I didn’t check if there is another hidden button-combination that triggers anything. But know that everyone knows how to check I also don’t have to.

Attachments:

OK, I added an option to the Level-Editor that allows the user to write into the credits whatever he wants. I already figured everything out a while ago but wasn’t in the mood for adding it to the editor. So it was kind of boarding but now I’m done with the credits. I still have a few optimizations I want to do but the game should be done soon.

Also, there are already some levels done. I didn’t do them though. Benjamin Stevens jumped in and is now helping me by designing 2 stages. This is great because that way I also have a new game (well, a half game) to look forward to.

Besides designing the remaining levels there is only one bigger thing left to do. It is something I thought I was done with but somehow I think I can do better. However, we are close!

I made my final changes to the level-editor. Unless I find some Bug this will be the final version. There are some nice-to-have features left I could implement but I will make a cut here. (Wait for applause to stop)

Furthermore, I made my final changes to the ROM (just missing the new levels). I never liked how my Faceball Logo looked like. I didn’t want to change it though because converting a bitmap, copy it to the ROM, make sure everything is loaded correct and fine-tune the window parameters is allot boring work.

However, Morintari contacted me and told me that he could provide my with the original logo. Apparently, he already had a 3D model which he could use to generate a pretty cool looking Faceball logo. Honorable mention goes to RunnerPack who fine-tuned the result. Obviously, I have already put you guys in the credits.

Just as a side-note between us: Usually you have to pay for artwork like this or agree on a restrictive license. Morintari gave away his work for free without any restrictions though. It is really great to see people supporting a project like this just because they like what is happening.

With this awesome new logo image in my hands I had no chance but to code it into the ROM (I was faster then I thought).

I attached a screenshot of the result. I think it looks a 1000 times better then my initial try. A video will follow soon.

Attachments:

Logo looks great But hey I think I may be partial. Thanks Thunder for your generous praise.

You guys are all just the best. It makes me happy to be a part of this community. 🙂 Thank you all!

I was just looking though games I could play with my SuperScope (there are not so many in the end) and I couldn’t believe what I was seeing: Faceball 2000. This game is just everywhere. So I guess the next thing to do is somehow connect my SuperScope to my VB… never mind.

Here’s a patch that lets you to strafe with the left D-pad while turning with the right D-pad, allowing you to circlestrafe. However, you can’t also walk at the same time, but you can still walk and strafe without turning.

If there’s enough demand, I can try to improve this control scheme or even add support for multiple schemes in the game.

This patch should work with thunderstruck’s additions, but I have not verified that.

HorvatM wrote:
Here’s a patch that lets you to strafe with the left D-pad while turning with the right D-pad, allowing you to circlestrafe. However, you can’t also walk at the same time, but you can still walk and strafe without turning.

If there’s enough demand, I can try to improve this control scheme or even add support for multiple schemes in the game.

This patch should work with thunderstruck’s additions, but I have not verified that.

It makes the controls pretty smooth. I for sure would like to see what else you can come up with. Let me know when you are done so I can add your control-scheme to the editor.

I designed 3 levels today. I already had an idea of how the levels should look like. Took me about an hour or so to fine tune everything. Doing the levels is pretty fast using the FacEdit so I might be done with my stages soon.

Of course I need to make sure every level can be beaten on hardware so that may take some time as well.

thunderstruck wrote:

Benjamin Stevens jumped in and is now helping me by designing 2 stages. This is great because that way I also have a new game (well, a half game) to look forward to.

I sure hope that people want more enemies, larger levels, and a much tougher challenge, because that is exactly what every maze across my 2 stages is going to deliver. I’m trying to make them in such a way that a player will likely have to move as quickly as possible the whole time and utilize the controls as well as the items to their full potential in order to win. Right now, it is pretty tough to beat any stage and have more than 30 seconds left on the timer (if playing on hardware). I myself actually get pretty angry at my own game, but hey, that’s good replayability, right? 😉

I have 8 mazes now and I slowly run out of ideas. I try my best to give every level a unique feel. I started with the invisible enemy stage so there is not too much variety in terms of enemies.

New version of my control scheme patch. This one modifies the controls like this:

Left D-pad: strafe and move forward/backward
Right D-pad: turn
L: hold down to run

Other controls are the same as before.

Attachments:

HorvatM wrote:
New version of my control scheme patch. This one modifies the controls like this:

Left D-pad: strafe and move forward/backward
Right D-pad: turn
L: hold down to run

Other controls are the same as before.

Pretty cool. Do you plan more changes?

I designed 13 levels till now. I feel like I should do something special for the last level so I stopped here. I tested every level to check if technically works. However, I feel like someone should play-check the levels (Ben, I’m looking in your direction!) to make sure the levels are well ballanced.

thunderstruck wrote:
Pretty cool. Do you plan more changes?

Not really. I’d like to remove some of the limitations on movement and add a control scheme selection screen, but it looks like everybody is fine with patching the ROM to change the controls.

thunderstruck wrote:

I feel like someone should play-check the levels (Ben, I’m looking in your direction!) to make sure the levels are well ballanced.

If you want me to play test your mazes, I am definitely up for that. 🙂

HorvatM – If you could add some kind of control screen to set the controls..that would be best. That way when we make physical copies of the game..people would have a choice.

-Eric

 

Write a reply

You must be logged in to reply to this topic.