Mega Man X3 - Zero Project (V4.4 & Source Code Released)

Started by justin3009, July 16, 2010, 01:38:59 PM

Previous topic - Next topic

justin3009

Zero Project (V4.4)
Zero Project, thus far, is complete!

https://github.com/justin3009/MMX3-ZeroProject - Source code is here and free for anyone to modify and use. Be warned though, it's kind of a messy disaster.
'We have to find some way to incorporate the general civilians in the plot.'

'We'll kill off children in the Juuban district with an infection where they cough up blood and are found hanging themselves from cherry blossom trees.'

Mauron

Quote from: justin3009 on July 16, 2010, 01:38:59 PM
First off, it is a pain in the ass to uses Geiger's SNES9X Debugger for this.  It's probably how the game's written but essentially, if the value in Geiger's SNES9X is something like 049349, it's actually 021349 in hex.  It's really strange.

It's a LoROM address. LoRoM games only use the upper half of a bank for some reason (not sure why), so the addressing gets weird.

Looking forward to seeing more of this.
Mauron wuz here.

Gideon Zhi

That *is* neat, but it seems the Z-Saber is just a weeeeee bit overpowered. Killing a boss in three hits? I can see why they disallowed him from boss fights!

justin3009

Two hits actually.  I'm definitely going to be trying to nerf it down a bit so it's maybe 8-10 hits instead.  Depends on how it goes.

I figured out how to get Zero to Air Dash, minus the effect that it gives him the ability to Air Jump as well.  Going to have to figure out how to fix that.
'We have to find some way to incorporate the general civilians in the plot.'

'We'll kill off children in the Juuban district with an infection where they cough up blood and are found hanging themselves from cherry blossom trees.'

andrewclunn

I say scrap X and play just as Zero.  If people want to play as X, well then they can just play the unedited game.

Metal Knuckles

Sure the Z-saber is powerful, but it's also unwieldy as fuck. 1 slash < 3 slash combo.

spralwers

When it comes to going through levels, I still think using just plain, fully charged shots are a lot better. Z saber takes too long to charge and it has a tiny range. You're better off just firing tons of uncharged shots. As it is, it really only would be useful against bosses.

Do you plan on allowing the Z sabre to be used without charging? I think that'll make playing as Zero just a tiny bit more fun and balance out his nerfed weapon :p

QuoteFirst off, it is a pain in the ass to uses Geiger's SNES9X Debugger for this.  It's probably how the game's written but essentially, if the value in Geiger's SNES9X is something like 049349, it's actually 021349 in hex.  It's really strange.

How did you figure that out? That might explain why I'm having huge difficulties modifying another game that uses LoROM addressing.

justin3009

I wanted to take a look using Translhextion and I noticed the addresses were off by however.  So I looked for the same coding in translhextion that was being viewed in Geiger's SNES9X Debugger and that showed it.
'We have to find some way to incorporate the general civilians in the plot.'

'We'll kill off children in the Juuban district with an infection where they cough up blood and are found hanging themselves from cherry blossom trees.'

DarknessSavior

Use Lunar Address. It's very useful for address differences between types of SNES ROMs.

~DS
Red Comet: :'( Poor DS. Nobody loves him like RC does. :'(
Sliver-X: LET ME INFRINGE UPON IT WITH MY MOUTH
DSRH - Currently working on: Demon's Blazon, Romancing SaGa, FFIV EasyType.
http://www.youtube.com/user/DarknessSavior

Piotyr

If you want to give Zero armor and not just color changes to black I suggest looking up the manga ex armors.

justin3009

#10
@Darkness - Thanks for that little tip
@Piotry - Oh that's actually a good idea.  That'd be a neat little thing to add.

Updates
------------
1. Zero can now scroll through Sub-Weapons.
2. Zero is able to gather Heart Tanks and Sub tanks.  Heart tanks increase his and X's life, which is bad right now unless I'm able to set Zero's life to X's at default.
3. Zero is able to open Capsules AND retrieve them like X.  The only 2 issues is that his palette quickly turns into X's and it tries to load up a victory animation that Zero does not have.
4. Zero's able to pick-up free lives now.

Bugs
-----------
1. Zero's life does not get saved to memory when you swap him  :-\
2. Zero's sprites turn into X's in the Ride Armor.
3. Body flash areas are wrong on Zero in capsule.
4. His palette turns into X's when in capsule.
5. Zero has no victory stance or anyway to load the sprite yet. 

---> Edit: Found where it's loading the sprite but it's not loading it completely.  My guess is I need to find animation data, that's probably why it's not loading it correctly.  I believe that if it was loading a full animation, Zero's sprites would be loading all scattered for a victory.  Instead, it's only loading a very small few pixels as 1 block so something's up.
'We have to find some way to incorporate the general civilians in the plot.'

'We'll kill off children in the Juuban district with an infection where they cough up blood and are found hanging themselves from cherry blossom trees.'

flashman

Quote from: justin3009 on July 16, 2010, 01:38:59 PM
The main goal of this is to sort of be like the PC version.  Have Zero be able to gather Energy Tanks, use Sub-Weapons, gather Heart Tanks, use Ride armors etc..

what do you mean? can zero use tanks, weapons, ... on the pc version of X3?

justin3009

#12
The hack of the PC version allows Zero to use all of that I believe, except maybe Ride Armors, though I haven't played it much to find out.

Edit: The PC version from, what I just checked, has more bugs than this one.  Then again, PC version is much harder to hack and it's fantastic so far.

Edit 2: I'm wanting to ask to make sure, but is this how it's read?

$13/C151 AD 8E 0A    LDA $0A8E  [$06:0A8E]   A:0000 X:0000 Y:00FA P:envMXdIZc
$13/C154 D0 5E       BNE $5E    [$C1B4]      A:0000 X:0000 Y:00FA P:envMXdIZc
$13/C1B2 E2 20       SEP #$20                A:0000 X:0000 Y:00FA P:envmXdIZc
$13/C1B4 22 4A B9 04 JSL $04B94A[$04:B94A]   A:0000 X:0000 Y:00FA P:envMXdIZc
$13/C1B8 60          RTS                     A:0000 X:0000 Y:00FA P:envMXdIZcc


13C151 is where it loads the accumulator which is where it defines who is who.  0 = X, 2 = Zero.  So if you're X, 060A8E will be 0, if you're Zero it'll be 2.
13C154 is the branch.  It's stating if 060A8E does not equal 0, then it braches off, adds $5E and ends up at 13C1B4 where it ends the routine pretty much.

I NOP'd the branch so now Zero or X can open the capsule.  I could probably NOP the accumulator too if I wanted I think, but is this how it's read right?  I'm wanting to make sure because I maybe able to have a simple branch for text or weapon checking to make it more diverse.
'We have to find some way to incorporate the general civilians in the plot.'

'We'll kill off children in the Juuban district with an infection where they cough up blood and are found hanging themselves from cherry blossom trees.'

flashman

Quote from: justin3009 on July 18, 2010, 10:02:13 AM
The hack of the PC version allows Zero to use all of that I believe, except maybe Ride Armors, though I haven't played it much to find out.

justin you filthy liar... no, seriously, i just got myself the pc version of X3 and i'm sorry to disappoint you (and even more myself), but it's exactly the same as the SNES and PSX version (and probably the Saturn version too), meaning no weapons, sub-tanks, armors, etc. for zero...

justin3009

#14
Re-read what I said Flashman.  I said THE HACK of the PC version.  Go youtube "DHS System", then you'll see.  THAT'S the PC version I'm talking about.  Please read carefully next time.

I've finally figured out how branches work so that's helping a bit on this, but I've run into a REALLY annoying issue.  I cannot for the life me find the frikin function or anything to remove where your body flashes where you got the armor part.  I've been trying to find it for about 4 hours now and I've found a few things but I have not even come relatively close to removing it at all.

The reason I'm doing so is because I'm doing a branch command where it checks if it's Zero.  If it does, then it skips the armor flash and just goes to the victory pose and leaves the capsule.  It's extremely annoying and tedious as all hell.

Here's an updated feature list so far
-----------------------------
1. Can play as Zero anytime except when you lose him for the Z-Sabre
2. Can collect Heart Tanks, E-Tanks and lives with Zero
3. Can open the Leg Upgrade capsule and retrieve it with Zero
4. Zero can use sub weapons and scroll through them via L or R, and can use the menu to select them
5. Zero can use Ride Armors

Features Left
------------------------------
1. Victory pose for Zero
2. Have it so when Zero retrieves a capsule, no body part glows and he doesn't demonstrate it
3. Sprites in Ride Armor
4. Lower Z-Sabre damage by A LOT.  It should at least take 6-8 hits to kill a boss with it, not 2.
5. Somehow make Zero able to Air Dash without him being able double jump in the air like X.
6. Alternate capsule dialogue
7. Alternate dialogue in general when facing bosses
8. Have Zero's life be saved to memory
'We have to find some way to incorporate the general civilians in the plot.'

'We'll kill off children in the Juuban district with an infection where they cough up blood and are found hanging themselves from cherry blossom trees.'

Piotyr

Why do you need him to airdash? Couldn't we just switch to X for the air dash and keep Zero with the double jump?

justin3009

I'm limited on what I can do right now because I'm not exactly sure how the sprites are assembled, how the animation is loaded, or how the animation is done.  So if I enable double jump with Zero, all we get is a bunch of scrambled pixels that inevitably destroy the game's graphics cause they can't be found.  I'll eventually figure it out, but right now I'll just leave it so Zero can't do any of that.
'We have to find some way to incorporate the general civilians in the plot.'

'We'll kill off children in the Juuban district with an infection where they cough up blood and are found hanging themselves from cherry blossom trees.'

Dragonsbrethren

I was going to suggest making the weakened saber the default special weapon (so we didn't need to charge to use it), but then I remembered the SNES games didn't actually have a dedicated special weapons button. :-[

Anyway, great project you have going here. I remember using GG codes right after I got the game to use Zero everywhere - incredibly broken, but still a lot of fun.

justin3009

With my experiments, I corrupted some bytes to test stuff and I can give Zero X's Beam sabre.  I've also seen a few times where the Z-Sabre would be the only weapon to go off.  It is possible to flip around what's loaded first and stuff.  I've been wanting to remove his buster and have him use his Z-Sabre do perform a tri-combo like Megaman X4+ but I'll save that for last and only as a last feature.

Edit: I'm also still having massive issues changing the Z-Sabre's damage.  I have absolutely no idea how any type of damage is even being loaded.  It reminds me of how Chrono Trigger's stuff is done but a bit more complicated.
'We have to find some way to incorporate the general civilians in the plot.'

'We'll kill off children in the Juuban district with an infection where they cough up blood and are found hanging themselves from cherry blossom trees.'

MutantBuster

ideally I'd like Zero to play like he did in X4, albeit without the awesome sword technique upgrades.