Quite simply, Mega Man II Optimum is an upgraded version of the Megaman 2 ROM. It converts the ROM's mapper to MMC5, and its graphics format to CHR-ROM. That's it!
Unlike the Upgrade Patch done for Mega Man 1, there are no other alterations to the ROM. This is just a simple mapper and CHR-ROM conversion. The PRG-ROM was not expanded, but the CHR-ROM was maxed out to the new mapper's 1MB limit. The ROM doesn't need to be expanded anyway, since in the conversion of the game to CHR-ROM, all of that PRG space that stored the game's graphics has been freed up. Also, another reason why not to expand the ROM was so that the editors made for the game could be used. Although no testing on any of the editors yet, that was my intent. So basically, there is plenty of free space in the ROM without expansion, and there is plenty of CHR-ROM space to work with.
Unlike with Mega Man 1, which took three months to convert to CHR-ROM, this time it only took one month.
Patch and readme included inside the zip file. This patch is meant for the English version, Mega Man 2, not the Japanese version, Rockman 2. This ROM was tested to work on FCEUX 2.2.2.
If you happen to find any bugs, feel free to contact. Thanks.
MEGAMAN 2 OPTIMUM
by RetroRain
VERSION 1.0 RELEASE DATE: March 20, 2015
TIME SPAN FROM START TO FINISH: 29 Days
WHAT IS MEGAMAN 2 OPTIMUM?
Megaman 2 Optimum is an optimization patch for Megaman 2. All it does is convert the ROM's mapper to MMC5, and its graphics format to CHR-ROM. That's it! :P
Unlike the Upgrade Patch I did for Megaman 1, there are no other alterations to the ROM. This is just a simple mapper and CHR-ROM conversion. The PRG-ROM was not expanded, but the CHR-ROM was maxed out to the new mapper's 1MB limit. The ROM doesn't need to be expanded anyway, since in the conversion of the game to CHR-ROM, all of that PRG space that stored the game's graphics has been freed up. Also, another reason I didn't expand the ROM was so that the editors made for the game could be used. Although I have not tested any of the editors yet, that was my intent. So basically, there is plenty of free space in the ROM without expansion, and plenty of CHR-ROM space to work with. Unlike with Megaman 1, which used the MMC3 mapper and took me three months to convert to CHR-ROM, this time it only took me one month. I started the project February 20th, and finished it March 20th.
Only the basic MMC5 mapper registers were enabled to get the game to run, however it is entirely possible to add others to make full use of the new mapper's capabilities. If you wish to add onto the mapper's capabilities, at $F5A4, there is a JMP $FFE0. Have that jump to some free space, but make sure at the end of your code, you put that JMP $FFE0 back in.
NOTES:
$1D0 Top-left CHR Bank (Sprites)
$1D1 Bottom-left CHR Bank (Sprites)
$1D2 Top-right CHR Bank (Background)
$1D3 Bottom-right CHR Bank (Background)
$1D4 Final Boss Defeated (0 = Not Defeated, 1 = Defeated (This was used to load the Wily-defeated page))
$1D5 Temporary Sprite Storage (Stage Sprite Tables are read and stored here, and from here, the weapons are added, and stored in $1D1)
$1D6 In-Stage (0 = Not in Stage, 1 = In-Stage (Ready text and Inventory doesn't count))
$1D7 Boss Rematch (Stage Address $2A is written to this at Stage 0C, to handle Robot Master Rematches)
$1D8 Stage 0C Wily Boss (This was needed to get the correct page to be displayed at the Wily boss fight, after you defeat all of the Robot Masters again in a rematch)
PRG Bankswitch Routine is located at $F8DE
CHR Bankswitch Routine is located at $F8E7
In order to switch a PRG bank, just select a bank, and JSR to $F8DE.
In order to switch a CHR page, all you have to do is select a page, and write it to either $1D0, $1D1, $1D2 or $1D3.
The Stage Sprites (Weapons and Enemies) Code and Tables are located in Bank 0. The code is located at $9000 (0x1010). The tables begin at 0x1248 and end at 0x134a. The only stage not included in the table is Stage 0C. That is the Robot Master Rematch Stage. That stage was done manually. The hex numbers for Crash Man's stage and the final Wily stage will be in lower numbers, because they use a second section of CHR pages. I exceeded the #$FF limit, so I had to use a second section. You can use the second section by writing 01 to $5130. If you have any questions about $5130, visit acmlm.kafuka.org or forums.nesdev.com.
The stages are in this order:
00 HEATMAN
01 AIRMAN
02 WOODMAN
03 BUBBLEMAN
04 QUICKMAN
05 FLASHMAN
06 METALMAN
07 CRASHMAN
08 WILY 1
09 WILY 2
0A WILY 3
0B WILY 4
0C WILY 5 (Robot Master Rematch Stage, not included in sprite tables)
0D WILY 6
STAGE SPRITE TABLES OFFSETS (Remember, the sprites are only the weapons and enemies for the stages):
HEATMAN 0x1248 - 0x125f
AIRMAN 0x1260 - 0x1275
WOODMAN 0x1276 - 0x128d
BUBBLEMAN 0x128e - 0x12a3
QUICKMAN 0x12a4 - 0x12bb
FLASHMAN 0x12bc - 0x12cf
METALMAN 0x12d0 - 0x12e5
CRASHMAN 0x12e6 - 0x12f9
WILY 1 0x12fa - 0x130d
WILY 2 0x130e - 0x131f
WILY 3 0x1320 - 0x132f
WILY 4 0x1330 - 0x1340
WILY 6 0x1341 - 0x134a
ADDITIONAL MEGAMAN 2 NOTES FROM THE ORIGINAL GAME:
I used these in doing this conversion. Some of them I used just to make my life easier when playing through the stages.
$1A (Not sure, but this was a great point to write the proper background CHR for the stages)
$1C Frame Counter
$2A Current Stage
$9A Stages Completed
$A7 E Tanks
$A8 Lives
$A9 Current Weapon
$9B Items
$440 Screen ID
This ROM was tested to work on FCEUX 2.2.2. I have not tested it on any other emulators.
This patch is meant for the English version, Megaman 2, not the Japanese version, Rockman 2. If you happen to find any bugs, feel free to let me know. Thanks.
You may use this patch as a base for your Megaman 2 hacks. Credit is not necessary, but it is appreciated.
Have fun! :)
acmlm.kafuka.org
Mega Man 2 (USA).nes - NOINTRO
CRC32: 5E268761
MD5: 8E4BC5B03FFBD4EF91400E92E50DD294
SHA-1: 2290D8D839A303219E9327EA1451C5EEA430F53D