Mega Man 2: Mega Man 2 + Rockman 2 Scrolling Fix Nintendo Entertainment System

  • ~
  • Share
This patch rewrites the method used by MM2/RM2 for vertical scrolling so that it no longer shows visual artifacts on the top and bottom of the screen during scrolling.

This patch began as part of the MM2 FamiTracker support patch, before being split into its own patch as it could be useful even without FamiTracker support. The buggy implementation of DPCM sound in the NES can corrupt reads from other hardware such as the screen buffer and controllers, and requires special care when reading from this hardware to work around this corruption. One of the two places MM2 reads from the screen buffer is in performing vertical scrolls, as it does not take advantage of NES screen mirroring in this scroll direction (seemingly a holdover from MM1, which lacked the ability to switch between screen mirroring directions). This design also results in a visible scrolling seam at the top and bottom of the screen as new level data is loaded in real time.

This patch implements mirroring for vertical scrolling, allowing smooth, artifact-free vertical scrolling. In doing so, it also eliminates one of the ways MM2 reads from the screen buffer.

Patches for both Mega Man 2 (USA) and Rockman 2 (Japan) are included.

This patch incorporates my MM2 MMC3 patch from https://www.romhacking.net/hacks/7478/.

Mega Man 2 Scrolling Fix
v1.0

By Justin Olbrantz (Quantam)

This patch rewrites the method used by MM2/RM2 for vertical scrolling so that it no longer shows visual artifacts on the top and bottom of the screen during scrolling.

Patches for both Mega Man 2 (USA) and Rockman 2 (Japan) are included.

This patch incorporates my MM2 MMC3 patch from https://www.romhacking.net/hacks/7478/. As there is the possibility that in the future the MMC3 patch could be updated out of sync with this patch, this patch includes the .inc files from the mm2mmc3 version it uses, and the compatibility section includes information for mm2mmc3 as well.

Mega Man 2 (USA):
PRG-ROM CRC32 0FCFC04D / MD5 0527A0EE512F69E08B8DB6DC97964632
File CRC32 5E268761 / MD5 8E4BC5B03FFBD4EF91400E92E50DD294
File CRC32 80E08660 / MD5 302761A666AC89C21F185052D02127D3
File CRC32 A9BD44BC / MD5 CAAEB9EE3B52839DE261FD16F93103E6

Rockman 2:
PRG-ROM CRC32 6150517C / MD5 770D55A19AE91DCAA9560D6AA7321737
File CRC32 30B91650 / MD5 055FB8DC626FB1FBADC0A193010A3E3F

Others with the same PRG-ROM checksums will likely work just as well.

WHY?

This patch began as part of the MM2 FamiTracker support patch, before being split into its own patch as it could be useful even without FamiTracker support. The buggy implementation of DPCM sound in the NES can corrupt reads from other hardware such as the screen buffer and controllers, and requires special care when reading from this hardware to work around this corruption. One of the two places MM2 reads from the screen buffer is in performing vertical scrolls, as it does not take advantage of NES screen mirroring in this scroll direction (seemingly a holdover from MM1, which lacked the ability to switch between screen mirroring directions). This design also results in a visible scrolling seam at the top and bottom of the screen as new level data is loaded in real time.

This patch implements mirroring for vertical scrolling, allowing smooth, artifact-free vertical scrolling. In doing so, it also eliminates one of the ways MM2 reads from the screen buffer.

COMPATIBILITY

This patch uses file offsets 3bd34-3bd3f that were previously free.

As well, this patch frees up the following ranges that were previously used:
3ca26-3cb1b (US) / 3ca23-3cb18 (J) ($f6 bytes)
3d1a2-3d1ee (US) / 3d19f-3d1eb (J) ($4d bytes)

Additionally, this patch significantly modifies the following ranges:
3d191-3d1a1 (US) / 3d18e-3d19e (J)

MMC3 Patch

mm2mmc3 frees up the following previously used range of file offsets:
3804f-38060 (12)

As well, mm2mmc3 substantially modifies the following ranges:
38038-3804e
38061-38066
3c010-3c060
3d09d-3d0e6 (US) / 3d09a-3d0e3 (J)

Additionally, to free up space mm2mmc3 eliminates the SetMmc1Ctrl function used to set the screen mirroring mode. Instead, hacks should directly set the mirror register MirrorReg to either MIRROR_VERTICAL or MIRROR_HORIZONTAL, should they need to change the mirroring mode.

INCORPORATION INTO OTHER HACKS

It's perfectly fine to incorporate this patch into other hacks. In such case, please add a line to that hack's readme (or hack description/credits if no readme) indicating that hack uses this patch and link to this patch on RHDN.

Mega Man 2 (USA):
PRG-ROM CRC32 0FCFC04D / MD5 0527A0EE512F69E08B8DB6DC97964632
File CRC32 5E268761 / MD5 8E4BC5B03FFBD4EF91400E92E50DD294
File CRC32 80E08660 / MD5 302761A666AC89C21F185052D02127D3
File CRC32 A9BD44BC / MD5 CAAEB9EE3B52839DE261FD16F93103E6
-
Rockman 2:
PRG-ROM CRC32 6150517C / MD5 770D55A19AE91DCAA9560D6AA7321737
File CRC32 30B91650 / MD5 055FB8DC626FB1FBADC0A193010A3E3F
Time to Beat
Main Story 2h 50m
Main + Extras 3h 0m
Speedrun Avg 0h 49m
Release Date
Jan 23, 2023
1 years ago
Similar Games
Popular Nintendo Entertainment System Games

Play Mega Man 2: Mega Man 2 + Rockman 2 Scrolling Fix Game

Experience Mega Man 2: Mega Man 2 + Rockman 2 Scrolling Fix Game (USA) online exclusivly at RetroSpot.net. Get Mega Man 2: Mega Man 2 + Rockman 2 Scrolling Fix ROM and use it with an emulator of your choice. Mega Man 2: Mega Man 2 + Rockman 2 Scrolling Fix can be played on PC, Mac, iOS and Android using our high quality downloads. PastGames is Americas #1 choice for Retro Games like Mega Man 2: Mega Man 2 + Rockman 2 Scrolling Fix.