Hey there. Here's a link to all that I've gathered about MMX in these years.https://drive.google.com/drive/folders/1oeMNH2-uvaZUGKEqZ-lAcHjW5JFPvpuS?usp=sharing
One thing you'll find is a lot of documentation I've made (files can be opened with Sublime Text 3). There's a lot of files, most being notations and RAM MAPs, Lista with IDs, and some AI documentation that I've been working to someday make custom bosses.
Most importantly, it has a modified version of MegaEDX, version 1.3 made by redguy. It doesn't have a tutorial sadly, but it is inmensely powerful, and it opens up a lot of posibilities.
- Includes Event editor (camera, graphics loading, items, enemies)
- Includes Checkpoint editor
- Includes ROM expansion
- Includes Layout Editor (requires ROM expansion)
- Includes in-editor emulator
I'll try my best to explain the features, but keep in mind a) I don't know a lot of things about MMX's code, and b) I haven't used the editor in quite a few years. Also c) I didn't make it, so I can't really support it in any way.
Event Editor: Go to Editor --> Event Editor. Allows you to modify, delete, move different events. It's obtuse because the code is obtuse, but it is extremely powerful. To explain it, I'll be pointing to different events in the intro stage.
- Block: we call "Block" to each X-position where the spawning objects routine occurs. There's one of these per 32|$20 pixels.
- Event: if the current block has events, Event will list them as 00, 01, 02, etc.
- Prev Event, Next Event: Use these two buttons to scroll through the stage's events (following the order Block, Event --> Next Block). you can also click the event, try it to get familiarized with it.
- LockType, LockID, LockSubID: Check these if you want to prefilter the Prev Event, Next Event button. For example, if the Event Editor is standing in an Event with Type = 3, ID = F (i.e. a Crusher), check LockID and click on Next Event to scroll to the next Crusher enemy Event.
- Match: I honestly don't remember.
- Type: This alongside ID and SubID determines which Event is selected. 01 = Misc Objects, a lot of times stage-specific. Example, in Block 90, Event 0: Event 0, 9, 5 (meaning type 0, ID 9, SubID 5) is the floor cracking and falling.
- X-Pos: X-coordinate where the event will spawn. An important point is, X-Pos only determines where it will appear after it has spawned, meaning it shouldn't be too far off from the Block's x-pos or it will appear either too far from the edge of the screen (and despawning), or it will appear in the middle of the screen. Only exception would be in a vertical section with the camera locked.
- Y-Pos: Y-coordinate where the event will spawn, AND where the spawn event will trigger. Move the object vertically in areas with vertical movement to trigger where they spawn.
- EventID: Determines with event will spawn (see: Type)
- EventSubID: SubID is usually used as a parameter (for example, this enemy attacking left or right), but sometimes it also acts as an ID alongside EventID.
- Flag1, Flag2: Never figured these out.
- Left, Right, Top, Bottom: Used for Camera Lock events (Type 2, ID 0). SubId for these events is used for each of the camera lock events in the stage (for example, in the Intro Stage, Events (2,0,0), (2,0,1), (2,0,2), (2,0,3) are the four Camera Lock Events in the stage). Left, Right, Top, Bottom determines the green rectangle you'll see on the screen. If Mega Man enters said rectangle, the camera's border will change.
- LockNum: Don't remember.
- LockOffset: Don't remember, but it was pretty important (sorry).
- Lock--> Direction: Direction of the Camera that the event will change. Use the Lock check alongside LockType and LockEvent to scroll through different camera events with the same direction.
- Position: position (absolute) of the camera border after the change. Shown as the length of the yellow line.
- GfxNum: The following are used in Graphics Loading events, usually Type 2, ID 15. In the intro stage, check Block E, event 1 for a good example. Each of these events hold a certain number of enemy graphics. Scroll through them with this button (for example, this certain event loads the graphics for Crusher and Gun Volt. I highly recommend checking in my documentation, the file called EnemyDataID.
- GfxID: Change this ID for a different enemy graphic to load.
- Vram Slot: Asign this correctly according to how much VRAM each enemy takes. Basically, you have to "fit" the graphics in a limited space, and some enemies take more Vram slot space than others. I made a list in my EnemyDataID file but they're estimates, tried by practice. This is an important part to master, to be able to spawn plenty different enemies in areas abusing this, specially with enemies that take little vram slot.
- Palette Offset: Similar to vram, change this ID to load this certain graphic with a different palette.
- Palette Slot: Same as above.
- Remaining Byte Count: The events are read from a certain section of the ROM. each stage has a limited amount of bytes where events are written. Expanding the ROM will allow you to add a lot more events (File --> Expand ROM, use at your own risk).
- Add Event: Add an event in the current Block (provided you have the amount of free bytes in memory).
- Delete Event: Deleted the current event (frees up space)
- Move Event: Move the event to a certain block.
Also, with the ROM expanded (use at your own risk), you can use the Layout Editor, to change the size of the stage and make bigger stages.
If you want to see examples of what this can do, check my New Hard Type Project I dropped some time ago. It has 2 stages using all of these features:http://ngplus.net/index.php?/files/file/17-mega-man-x-new-hard-type-wip-alpha-release/
Well, I hope this tutorial helps. Big shoutouts to redguy for modding MegaEdX 1.3.
I love MMX and I've always felt it has a lot of potential for modding. I hope someone makes an even better editor, and loads and loads of romhacks.