Points of Required Attention™
Friendly reminder: Please don't respond to spammers! Their posts inevitably get memory-holed when staff get around to, leaving behind an inexplicable tableau of you shouting at nothing and (if they otherwise would have been alone in a thread) dangling posts and wrong postcounts.
Views: 46,862,197
Main | FAQ | Uploader | IRC chat | Radio | Memberlist | Active users | Latest posts | Calendar | Stats | Online users | Search 03-19-18 02:21 AM
Guest: Register | Login

0 users currently in ROM Hacking | 1 guest | 1 bot

Main - ROM Hacking - The Ultimate Mega Man 1 (U) Hacking Notepad New thread | New reply

Posted on 03-09-18 04:09 PM Link | Quote | ID: 166261

Level: 38

Posts: 371/373
EXP: 345442
Next: 25005

Since: 12-01-11
From: Hungary

Last post: 9 days
Last view: 9 days
The Ultimate Mega Man 1 (U) Hacking Notepad

Data in the (E) and (J) ROMs should be at the same adresses or close.


Rock and Roll editor help

To delete enemies in RnR, simply Ctrl+RMB on the object you wish to delete.
Shift+LMB opens up another menu:
Enemies - Let's you change the enemy type, screen number and global health (damage it deals to Mega Man)
Objects - Let's you change the block type, width and height and also the screen it's on.


Short Hallways / Door data

First and second door tables (last bytes are for Wily 5 - yes, there is an unused Wily 5 but the beginning of it is Elec Man now RIP)
15F12: 13 13 13 0F 13 0E FF FF FF FF FF - First door (Wily levels only use the second door)
15F07: 16 16 FF 12 FF 11 FF FF FF 22 20 - Second door (If the entrance is from above or below, it must be FF as they're special doors. The first three Wily doors are in the same boots.)

If everything is correctly set up, it's possible to have properly working 1 screen corridors.


Which direction is a boss room entered from. First set is RMs and second is Wily. 00 is default, 10 is up, 20 is down.
15390: 00 00 20 00 10 00
15396: 00 20 00 00 00


Palette animation in boss rooms

Each level uses three sets of palettes. The first is the before door palettes, the second is the sprite palettes that are loaded when you start the stage, and the third one is the boss appears palettes.

Simply search for the palette you use in your level in the ROM and you should easily find it. After door palettes are stored elsewhere.



The Rock and Roll editor (nor Visine appearently) doesn't seem to save checkpoints correctly. All the tables for checkpoint stuff are located here, however Rock and Roll does edit the first 4 tables just fine, so that's good. I highlighted the tables that are not editable with Rock and Roll properly. Use Screen No. for reference for most of them.

Checkpoint activate table. Which rooms activate a checkpoint. This works fine in the Rock and Roll editor.
Checkpoint 1 activate: 1C2E4, 12 bytes **
Checkpoint 2 activate: 1C2F0, 12 bytes **

Screen data table. This is weird. It is only for loading the correct room graphics before teleporting. RnR edits these properly.
Initial screen: 1C2FB, 10 bytes
Checkpoint 1 respawn: 1C307, 12 bytes ** #
Checkpoint 2 respawn: 1C313, 11 bytes * ##

Room order table. The scroll editor in RnR edits these correctly. If you want to edit these manually, don't forget the first scroll point is 0.
Initial scroll point: 153B0, 12 bytes **
Checkpoint 1: 153BC, 12 bytes **
Checkpoint 2: 153C8, 11 bytes *

First screen enemy table. The enemy manager in RnR edits these correctly, however it can't edit the initial screen ones. Keep in mind you have to select the last enemy in the checkpoint room, not the last.
Initial screen: 153D3, 12 bytes **

Checkpoint 1: 153DF, 12 bytes **
Checkpoint 2: 153EB, 11 bytes *

First room of the checkpoint section. Rock and Roll does in fact edit these values, however incorrectly. Usually it saves values between A0 and CF for some reason, so it's probably a formula error. You have to edit these manually.
Checkpoint 1 first room: 1540A, 12 bytes ** #
Checkpoint 2 first room: 15416, 12 bytes ** ##

Last room of the checkpoint section. This is the last screen of the checkpoint. So if your checkpoint is on screen 0A and that section ends at 0C, you're going to write 0C here. Also, if you have a one screen long section, you're going to write the first room value. Like the first room table, RnR edits these incorrectly, and should be fairly easy to find since RnR saves the same incorrect values here too.
Checkpoint 1 first room: 15422, 12 bytes **
Checkpoint 2 first room: 1542E, 12 bytes **

* last byte is Wily 5
** last two bytes are Wily 5 and Ending
# should be the same as Checkpoint 1 activate
## should be the same as Checkpoint 2 activate

Some checkpoints actually require at least 1-4 enemies in them on the first screen, that can be edited in the first screen enemy table mentioned before. Also, try not to use FF enemies unless you know how to use them. They are used for changing PPU data, and placing them just anywhere will cause crashes.
Moving them is not a good idea, which is why I recommend either leaving them alone or just deleteing them in case you don't want to do fancy enemy set changes in long sections. By the way, these FF enemies are the cause of the Ice Man glitch too for example.

There should always be a Boss/End type scroll (00) before the start of any Wily level scroll data, or else bad stuff happens.

With all that data, you should be able to change all the checkpoints in the game without running into problems!

EDIT: Appearently this was right here on the forums for a long time. It was just buried. I mean, it's a 10 year old thread. I wish I found this when I made that crappy MM1 hack of mine. Mega Man (1) respawn points...


Enemy weakness / damage tables

The global enemy health thing in RnR is not what it seems to be. It's the damage they deal to the player instead. (I'm not mentioning it here since editing them works just fine in RnR, bit it's after the tables mentioned below in the ROM)

Weapon damage data against enemies can be found at these offsets. Use RnR's to get the enemy IDs. Each enemy has 20 HP (14 in HEX) by default, and that can't be changed (at least I have not found the location for that yet). Also, each table is 59 entries long (3B in HEX), each table ends with CWU-01P's damage data.
1FC61-1FC9B: Buster
1FC9C-1FCD6: Cut
1FCD7-1FD11: Ice
1FD12-1FD4C: Bomb
1FD4D-1FD87: Fire
1FD88-1FDC2: Elec
1FDC3-1FDFD: Magnet Beam? Possibly guts block debris?

To easily find a value, just copy a table's starting offset depending on the weapon and add the Enemy's ID to it.


Weapon Energy Consume and Damage

168E8 - How many shots until weapon energy is consumed. Order is CIBFEGM.
168EF - How much power a weapon uses. They messed up the code during localization, so numbers other than 1 or 2 will cause a glitch depending on how much weapon energy you have left when you are about to run out of energy. (Infinite ammo)

Damage values against bosses can be changed in the Level Properties menu (MM head, second tab), however some values are stored elsewhere (which is the reason why some hacks have weakness inconsistencies, including even MM3 ones), like getting 10 damage from Elec Man if you have Rolling Cutter equipped, even though you've changed his damage output. (Maybe they wanted to make you weak to boss weapons if they were the weakness against the weapon's RM you had equipped at some point? I can't word.)

If you want to edit them using a hex editor, here are the offsets and the order (PCIBFEGM):
1FDFE-1FE05 - Cut
1FE06-1FE0D - Ice
1FE0E-1FE15 - Bomb
1FE16-1FE1D - Fire
1FE1E-1FE25 - Elec
1FE26-1FE2D - Guts
1FE2E-1FE35 - Yellow Devil
1FE36-1FE3D - Mega Man Clone
1FE3E-1FE45 - CWU-01P, but it doesn't use this table. Refer to the offsets below this table.
1FE46-1FE4D - Wily Phase 1
1FE4E-1FE55 - Wily Phase 2
1FE56-1FE5D - ???? (Possibly Wily 5 boss)

CWU-01P damage data. Each CWU-01P unit has 20 HP (14 in HEX), so edit them accordingly.
1FC9B: Buster
1FCD6: Cut
1FD11: Ice
1FD4C: Bomb
1FD87: Fire
1FDC2: Elec
1FDFD: Magnet Beam? Possibly guts block debris?


Weapon related notes

In case you'd like to make very simple changes to the weapons.

1649A - time until bomb explodes
164A4 - number of small explosions, without modificating the spawn order of the small ones, 03 (bomberman) and 07 (round shape) are good values for less projectiles (and less lag). You might want to edit their speed though, and if you do then experiment here, but it will also affect RM explosions or MM dying:
164C3 - time until explosion disappears, must be higher than 1649A
16A21-16A26: 11 00 03 80 01 FC 0C - flag (more about flags later), vertical speed fraction, vertical speed, horizontal speed fraction, horizontal speed, spawn y pos, spawn x pos respectively

Editing the following affects all explosions, including both Bomb Man's and Copy Mega Man's bombs and the Killer Bullet's.
1F89A-1F8A5 - positions? No, definitely not.
1F8A6-1F8B1 - horizontal speeds for small explosions (experiment with them values)
1F8B2-1F8BD - positions? No, definitely not.
1F8BE-1F8C9 - vertical speeds for small explosions (same)

It's possible to make the bomb explode instantly, but it requires editing the throwing animation.

Guts block
169C6-169CC: 15 00 03 A0 03 F0 10 - flag, vertical speed fraction, vertical speed, horizontal speed fraction, horizontal speed, spawn y pos, spawn x pos

Guts block pieces, each column is one piece, affects Guts Man's blocks too.
1F836: 08 18 08 18 - spawn x pos
1F83A: 08 08 18 18 - spawn y pos
1F83E: 04 04 03 03 - piece horizontal speed
1F842: 02 00 02 00 - piece vertical speed
1F846: 6D 6D 6D 6D 6D 6D 56 6D 6D 6D 56 6D - sprite id for each level, including Wily 5 and the Ending.

169A9 - sprite to use, 5F is tiny explosion, 60 is default, 61 is the fireball around MM. 55 and 56 are tiny and small gutsblock pieces.
169AB-169AF: 04 00 00 00 04 - flag, vertical speed fraction, vertical speed, horizontal speed fraction, horizontal speed

Fire shield (Editing these also affects Copy Mega Man's fire shield)
1650A: 20 14 0 -14 -20 -14 0 14 - y positions
16512: 0 -14 -20 -14 0 14 20 14 - x positions
1651A: 0 -1 -1 -1 0 0 0 0 - I don't really get it but has to do something with the positions

Elec is a completely different story, each piece seems to have it's own speed and stuff (and it's made up of 6-7 objects omg).
to be included later

169D6 - sprite to use, 5E is Magnet Beam, 5F is tiny explosion
169D8-169DE - 04 00 00 00 04 00 10 - flag, vertical speed fraction, vertical speed, horizontal speed fraction, horizontal speed, spawn y pos, spawn x pos

to be included later

You can use the following values for flags for the weapons:

00= disappears when hits enemies, doesn't detect walls and has no gravity. (Buster)
01= collision detection
04= no gravity
11= affected by gravity and collision detection
14= affected by gravity
15= used by super arm's guts block
24= super arm?

Flag notes

First bit of a flag:
even= no gravity
uneven= gravity
2= super arm uses it but ???
8+ even or uneven= changes how y position is calculated.

Second bit of a flag
even= no collision detection
uneven= collision detection
8+ even or uneven= changes how x position is calculated.


Boss invulnerability frames

1C9A4-1C9AE - Invulnerability frames for each boss. Only Cut and Elec have knockback as far as I'm aware. The last two bytes are both for the Wily Machine. It's time to make Elec Man worse.


Relocating the Ending scene to make more space for Guts Man's level

Simply change:
1AB21 from 14 to 04/24 - Ending last screen (or should I say, where the house is)
1AB25 from 1E to 0E/2E - Ending first screen (where MM teleports in)
1AC5E from 10 to 00/20 - To make sure the sunset happens on these screens. (You can also "disable" the sunset effect completely with this value btw, however MM's sprite still changes when he jumps)
1ACDC from 14 to 04/24 - End the Ending (make MM jump), should be same as 1AB21

Move those rooms in Rock and Roll's Room Order Editor too. Doing this moves the ending to screens 04-0E or 24-2E depending on which column of values you used.


Moving the ending to screens 04-0E means you will need to move Guts Man's level. That is not a huge deal if you know how to edit checkpoint data properly.

Moving the ending to screens 24-2E is easier because you don't have to worry about relocating Guts Man's level, however the game doesn't forget the special objects when loads the ending cutscene, and that can cause the game to softlock, if an object is on screen 25 for example. Mega Man will run into it and the cutscene will be unable to end (unless you set 1ACDC to 25). So having that object on screens 25-2E means the ending will softlock.
If you want to have a long Wily 4, you'll probably want to move the ending to screens 04-0E, or make sure Mega Man can't get stuck on special objects.

The ending cutscene is kind of hardcoded, so these are the only options. Also, I think you also have to edit the checkpoint data for the ending level if you do this.


Quick access to Wily levels from the Stage Select for testing purposes

All you have to do is changing the initial level of the Stage Select.

Simply change the value at 1B6FF from 00 to
- 06 for Wily 1
- 07 for Wily 2
- 08 for Wily 3
- 09 for Wily 4
- 0A for the unused Wily 5
- 0B for Ending (can be glitchy - sun will always flicker)

Note that the Stage Select screen will be slightly glitchy after doing so. You may save the glitchy stage select screen using savestates even after finishing the game, as it will have the same results and you'll also have all weapons if you do.

I've been messing around with it 0B a bit because glitches are fun.
- pressing left right right start loads Wily 3
- pressing left right left right left right start loads Wily 4


Graphics the game loads for guts block when you equip super arm on each level

1B2F1-1B2FB - offset (increasing this by one makes it load the next 4 16x16 tiles for example, valid values are 80-BF)
1B2FC-1B306 - which bank the graphics is loaded from (valid values are 01-08, 00 crashes the game)
The last byte is for Wily 5

The level tilesets in
- bank 1 are at offsets 90-BF (Robot Master level tilesets)
- bank 3 are at offsets 90-A7 (Wily level and Ending tilesets)


Graphics the game replaces guts blocks with when picked up

Regular blocks:
Structure ID to replace buts block with.
1CE4E-1CE58 - First Block Table

Blocks in boss rooms (needed for the second block table):
Which room a boss is fought in.
1CE59-1CE5F - Robot Masters
1CE60-1CE63 - Wily Bosses

Structure ID to replace guts block with in boss room (00 crashes the game)
1CE41-1CE4B - Second Block Table
1CE4C-1CE4D - ???


A blast from the past - Useful links
How to make sure the correct special objects get "removed" when a rematch boss is defeated
Mega Man (1) respawn points... - Checkpoint stuff.
Help with Mega Man (U) Configuration Settings - Footholder and Palette animation in Fire and W2
Googie's hack thread - Contains a bit of useful info.

Let me know if there are other threads related to MM1 hacking and I'll add them.


Reply here if you want to
- move Wily 2 refights to Wily 4 and edit where the teleporter spawns or you want to drop something instead when you beat a rematch boss (doesn't require free programming space.) There's no point in spawning a teleporter AND an item though (since the player could easily miss the item), so forget that. You may also go here and read the second paragraph after the code block: http://acmlm.kafuka.org/board/thread.php?pid=89177#89177, but that isn't everything you need. I'm not going to link to that certain post I made in the past about relocating the refights because it's a mess and I was really dumb back then (that didn't change though).
- properly change the powerups to the new ones (no animation for the small ones though).
- i dunno, anything else. I'm still a noob at ASM though!


Should fully research and include later (reply here if it's important)
- CWU-01P pattern editing (vertical and horizontal travel limits found, needs to be documented.)
- Door editing (Palette overwrite flags not understood yet, everything else - location, tile data - needs to be documented. Find by searching for door mask TSA data - order: top-right, bottom right, top-left, bottom-left)
- PPU data editing (PPU data includes MM's palette when the level loads, making them fairly easy to find. Needs to be documented)
- Behind Foreground Effect editing
- Disappearing Block editing
- Guts Lift pattern editing


Edit logs

Edit: More stuff.
Edit 2: I forgot to include the rest of the checkpoint stuff, and I've found more of it too! Good! Anyway, it's there now.
Edit 3: Some enemy damage data added. Also cleaned up this mess a tiny bit.
Edit 4: Added how to find the boss appears palette for the levels. It's really easy btw.
Edit 5: Corrected some mistakes.
Edit 6: Corrected some more mistakes.
Edit 7: Corrected even more mistakes.
Edit 8: Ending cutscene shenanigans added.
Edit 9: Rewrote some stuff to actually make some sense. Should add more stuff about boss rematches.
Edit 10: Added how to quickly access some Wily levels without editing the Stage Select screen too much.
Edit 11: This post is already too long so I can't include everything here so scroll back a tiny bit.
Edit 12: Some super arm and guts block related stuff and some useful links added.
Edit 13: CWU-01P and scroll order related data added. I should try removing the score system... RetroRain really should have made a standalone IPS for that!
Edit 14: I dunno. Shouldn't I make a new thread for this? I probably should...
Edit 15: Created a thread for this.

Posted on 03-14-18 07:32 PM Link | Quote | ID: 166271

Level: 61

Posts: 946/946
EXP: 1829151
Next: 47445

Since: 05-24-07

Last post: 4 days
Last view: 16 days
Very in depth, awesome contribution! :-)

Posted on 03-15-18 12:58 PM Link | Quote | ID: 166272

Level: 27

Posts: 176/176
EXP: 103807
Next: 12352

Since: 10-19-12

Last post: 3 days
Last view: 12 hours
This is very nice. You should also include the notes on how to hack the titlescreen.


Main - ROM Hacking - The Ultimate Mega Man 1 (U) Hacking Notepad New thread | New reply

Acmlmboard 2.1+3δ (2016-01-08)
© 2005-2016 Acmlm, blackhole89, Xkeeper et al.

Page rendered in 0.078 seconds. (356KB of memory used)
MySQL - queries: 47, rows: 71/0, time: 0.055 seconds.