Mega Man Zero 1, 2, 3 - Fast leveling up (and other stuff)

Started by acediez, November 18, 2018, 07:27:07 PM

Previous topic - Next topic

acediez

A couple of quick tweaks I made for myself (to play the excelent Restoration patches that were just updated  :laugh:)
I might as well share them... Even though I do not recommend these for people playing the game for the first time. They're meant for people comming back for a quick playthrough.

Mega Man Zero (USA, Europe)
Fast leveling up - Weapon leveling up drastically reduced (note that Zero 1 has separate level up requirements, counting separately air-attack, dash-attack, and non-charged buster shots)

Mega Man Zero 2 (USA)
Fast leveling up - Weapon leveling up drastically reduced (in Zero 2, all attacks from a weapon count equally)
Always get EX Skills - Get EX skills regardless of Rank level

Mega Man Zero 3 (USA)
Always get EX Skills - Get EX skills regardless of Rank level
Always get Mega Man Battle Network viruses on cyber areas - This is an easter egg normally unlocked by connecting to MMBN games through cable link.

And here's a list of addresses involved. They're probably better suited as gameshark codes anyway.

Thanks to SCD and emerilfryer for their work on the Restoration patches and making me want to revisit these games again!

emerilfryer

Ooh. Nice! Thanks for posting these. I was thinking about creating some for my next playthrough until I saw this. :)


I wonder if mmz3_exevirus.ips could be submitted to website, since it's more of an unlocker than a trainer or cheat.

Tsukiyomaru0

That's super nice! Could you do those for Mega Man Zero Collection too?

Zero Dozer

Of course you're whipping up great stuff for Mega Man games. Good work, sir.

PowerPanda

I had no idea these patches existed until someone highlighted them on another thread. Thank you!

ShadowOne333

Since this has been bumped already.
@acediez @SCD, it'd be better if these patches provided by acediez could be added to the packages for the Restoration hacks (as optional perhaps).
Either that, or make a separate entry for each Zero game for each of these, and these might get lost in due time in the threads.

acediez

Quote@acediez @SCD, it'd be better if these patches provided by acediez could be added to the packages for the Restoration hacks (as optional perhaps).
Either that, or make a separate entry for each Zero game for each of these, and these might get lost in due time in the threads.

I don't think I'll make my own entries for these, I'm not into GBA hacking... but I encourage SCD, or anyone who wants to, to add these to their hacks, either as optional patches or included.

You might want to also include the addresses I listed to your readme files, people like to fine-tune these things.

Thirteen 1355

That looks pretty neat! Do the ex skill patches also give the bosses their extra moves (their own ex skills)?
Helicoptering about till I find some ROM hacking treasure.

acediez

Quote from: Thirteen 1355 on March 08, 2022, 01:14:35 PM
That looks pretty neat! Do the ex skill patches also give the bosses their extra moves (their own ex skills)?
No, I didn't get that far, I didn't touch any other rank checks besides the results screen that grant you the skills.
Would love to have that permanently enabled too though.

If anyone wants to tackle it, I listed the "current rank" address in the document I posted. My guess would be that there's another check for that either at the start or during the boss fight.

Razieldemon

#9
Huh... crazy timing.

I'm working on an image hack for Zero 1 to change the mugshots to look more natural like they were in the following games.

I wanted to adjust the growth requirements for cyberelves in it as well.

I was also looking to tweak the requirements for weapon growth in Zero 2 which your documentation will help.

The original blood hack for Zero 2 had visual distortions on the forms and ex screen. I dont know if those were resolved but I was intending on comparing the rmz2 and mmz2 roms pallettes and tiles against one another to try and resolve that.

Is that no longer an issue?

I have other aspects of this series I'd like to tackle but not before making these asjustments.

Edit: I downloaded cygnus, never used a hex editor before, but for some reason I cant seem to search for the values listed in the excel document... any suggestions?

PowerPanda

I have created a hack for MMZ1 that drops the E-crystal requirements for cyber elves by about 75%. So if it cost 1000 crystals, it now costs 250. Etc. The table for how many ecrystals to require is from 2B727C to 2B729A.

I am planning to compile your patches with mine and put out a hosted patch on RHDN. However, I think I might change your weapon levelup values. I noticed when looking at your documentation that you didn't take into account the "little endian" values. So, for example, you listed Buster level 2 as "9001", which you changed to "1000". It looks like you were going for a 9x reduction. In reality though, you changed 0190 (decimal 400) to 0010 (decimal 10), a 40x reduction. Was that intentional? If so, I will probably reduce the requirements by 75%, like I did with the cyber-elves. Enough so that people can level up without grinding, but not so that they have everything by the end of the 1st mission.

acediez

Great news! I'll look forward to your hack.

Back when I made this, I only used it for a single playthrough, I didn't think about the values too throughly. What you're pointing out was most likely a mistake. So, of course, it's better if you adjust those values to your liking.

PowerPanda

So on MMZ1, I'm pretty much just tweaking all of the weapon experience and cyber elf costs to match MMZ2, since that game has costs in line with what I'm looking for. I would also love to have a MMZ1 patch where failing a mission doesn't remove the mission from your options, to make it work like MMZ2. Any ideas on how to do that? I have not played around with GBA ASM at all.


PowerPanda

#14
Okay, here's what I've found so far.

At ram value 202A6AC, you have a string of $12 bytes corresponding to your available missions, and what position they appear in. At 202A6C0, you have a value that says how many entries to read on the list. The missions are as follows:

00    エラー (Katakana for error. Will default you to the mission against Aztec Falcon)
01    Rescue Ciel (This is buggy. It will place you right in front of the door to the Golem fight, but you can't walk through it)
02    Retrieve Data
03    Rescue Reploid
04    Stop Mechaniloid   
05    Destroy Train
06    Rescue Colbor
07    Occupy Factory
08    Protect Factory
09    Find Shuttle
0A    Duel in Desert
0B    Find Hidden Base
0C    Stop the Hacking
0D    Protect the Base
0E    Enemy Base
0F    Neo Arcadia
10    Neo Arcadia Core

So you can play around with it, using VisualBoy Advance to edit a custom list of missions. If you fail a main mission, then as soon as you acknowledge the mission results screen by pressing A, the game will remove that mission from the list, add new missions that you would have gotten if you had beaten it, and then edit 202A6C0 to reflect the new list size. If you fail a side mission, it simply decreases the list size by 1, and copies any missions after the one that you failed one slot down (thus overwriting the failed mission). I promise you, this all makes sense if you keep the RAM window up while playing the game.

What we need to find is the code that says "Look through the mission list at 202A6AC, find the value that corresponds to the current mission, and remove it. Then, add new missions and change 202A6C0 to reflect the new list size." My guess is that it hooks into the exact same piece of code whether you pass the mission or fail it. So we need to find that routine, then find the place where failing the mission either jumps to it or loads it as a subroutine. Then, all we have to do is nop out that jump/subroutine, and we're golden.

I'm currently trying to figure out how to use no$GBA with breakpoints to find that info, but I'm very, very new to breakpoint hacking. If there's someone with experience who can follow the notes I just wrote, please help?

acediez

Great! Sounds to me like you already did the hard part: figuring out how it actually works, and where's the data.

Quote from: PowerPanda on August 03, 2022, 10:54:08 PMI'm currently trying to figure out how to use no$GBA with breakpoints to find that info, but I'm very, very new to breakpoint hacking.

If all you have to do is redirect a jump and 'nop' an instruction... this could be the perfect learning experience.

(I know you'd rather get help instead of encouragement, but this is exactly how I started X6 Tweaks: just looking for that one instruction that I had to 'nop' so the damn rescuable reploids wouldn't be permanently missable...)

The best part about nocash debuggers is the documentation.
Here's the GBA one:
https://problemkaputt.de/gbatek-contents.htm
...but you can jump straight to this section, the summary of opcodes:
https://problemkaputt.de/gbatek-arm-instruction-summary.htm

Seems a bit cryptic at first, but just by knowing to which group any of them belong to (a math operation, a read/store operation, etc) helps a lot.

And here's a tutorial from someone from RHDN that shows a complete live example of a simple, entry level, breakpoint debugging workflow.
https://www.youtube.com/watch?v=YVlcZa7xJz8
(you can ignore all the CheatEngine stuff they used to get started, you already have RAM addresses to hook to)

Good luck!