Points of Required Attention™
Please chime in on a proposed restructuring of the ROM hacking sections.
Views: 88,433,035
Main | FAQ | Uploader | IRC chat | Radio | Memberlist | Active users | Latest posts | Calendar | Stats | Online users | Search 04-18-24 07:15 PM
Guest: Register | Login

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

Main - ROM Hacking - Help with Mega Man (U) Configuration Settings New thread | New reply

Pages: 1 2

Jimmy52905
Posted on 05-25-08 07:29 PM Link | Quote | ID: 84153


Paratroopa
Level: 29

Posts: 39/152
EXP: 144291
Next: 3594

Since: 01-25-08

Last post: 5096 days
Last view: 4152 days
This might be a noobish question, but right now I am working on a MM1 Hack, and I wanted to make it so that there are color cycles in Wily Stage 1, so I opened Mega Man (U).ini and copied the color cycles offset from Fireman's Stage to Wily Stage 1, but when I play it in the emulator, it doesn't seem to be working. Does anyone here know what the problem might be?

____________________
Come join my IRC channel, #Megahax for Mega Man hacking related discussions.

Reini
Posted on 05-25-08 07:57 PM Link | Quote | ID: 84155


Koopa
Level: 25

Posts: 90/104
EXP: 83370
Next: 6250

Since: 05-19-07

Last post: 5245 days
Last view: 5231 days
How did you open Megaman.nes? Sorry for this bump, but I really want to know.

Jimmy52905
Posted on 05-25-08 08:05 PM Link | Quote | ID: 84156


Paratroopa
Level: 29

Posts: 40/152
EXP: 144291
Next: 3594

Since: 01-25-08

Last post: 5096 days
Last view: 4152 days
I right-clicked on the ROM file and clicked "Open With..." and chose Rock And Roll. Does this have anything to do with the problem?

____________________
Come join my IRC channel, #Megahax for Mega Man hacking related discussions.

NetSplit
Posted on 05-25-08 08:38 PM (rev. 4 of 05-26-08 12:26 AM) Link | Quote | ID: 84157


Level: 32

Posts: 69/178
EXP: 187916
Next: 18526

Since: 02-26-07

Last post: 2209 days
Last view: 2134 days
Early warning: You're going to need a hex editor. But don't worry; they're not scary. If you don't know how to use one, ask and I or someone will help you. Otherwise, this post is everything you'll need. I tried to explain everything (even the technical stuff, if you're interested) so that you'll understand it without too much prior knowledge, but I assume you know how to use a hex editor and know about addresses and such. Read on.


The .ini file does nothing to your ROM; the various ini's are in charge of telling the editor where certain data is. The advantages to an ini file (as opposed to having no ini file, and thus all of the data is hard-coded into the editor) are that it makes the data available with minimal effort for anyone who's willing to wade through the ini for it and it makes the editor more flexible, so if you were to hack the game so that a level is at one location rather than another (which, in fact, I've done) or something of that sort, you can just modify the ini file and the editor will continue to work with the ROM.

My point is, editing that in the .ini does absolutely nothing. What you want is the palette cycle sprite, which is sprite #$32. You'll see that it's placed at the beginning of Fire Man's stage; it initiates the palette animation. If used in Fire Man's stage, it uses the palette cycle for the lava, whereas it will use the Wily2 palette cycle that is used at the Mega Man clone boss if you use it in any other stage.

I assume you want to preserve the clone's palette animation, so if you simply change $1F3E6 in a header ROM from #$03 (Fire Man's stage) to #$06 (Wily1), then Wily1 will be set as the exception stage for the palette animation rather than Fire Man's stage.


If you're interested more in how this works, #$32 is a sprite object, so if you check the sprite AI (every sprite has some sort of AI in the code, and they all come in a conveniently organized section of the ROM), there's code for #$32 at $1F3CD. If you go through this code a bit, you'll come across this (of which the first two lines are the main ones we care about):

0001F3D3: A5 31     lda CurrentStage  ;Load the current stage to the A register
0001F3D5: C9 03     cmp #$03  ;Compare it to #$03 (Fire Man)
0001F3D7: F0 05     beq +     ;If Fire Man's stage, branch ahead
0001F3D9: 18        clc
0001F3DA: 98        tya
0001F3DB: 69 05     adc #$05  ;Not Fire Man's stage, so add #$05 to the palette address
0001F3DD: A8        tay
+
0001F3DE: A2 00     ldx #$00  ;Make X = 0.
-
0001F3E0: B9 F2 F3  lda Object32_paletteTable,y  ;Load from the table + Y. Y starts at 0 or 5.
0001F3E3: 9D DD 03  sta BGPalettes + $D,x
0001F3E6: C8        iny       ;Increment X
0001F3E7: E8        inx       ;Increment Y
0001F3E8: E0 03     cpx #$03  ;Compare X to 3
0001F3EA: D0 F4     bne -     ;If it's not 3, go back

Object32_paletteTable:
        .byte $26, $16, $06, $26, $16  ;FireMan palette cycle
        .byte $21, $25, $2A, $21, $25  ;Elsewhere (Wily2) colors


Hopefully this hasn't made your eyes glaze over or anything. The short, simple explanation is that you care about the VERY start of this code. The code loads the current stage and then compares it to Fire Man. You want to compare it to Wily1. The order of stages is Cut, Ice, Bomb, Fire, Elec, Guts, Wily1, Wily2, Wily3, Wily4, [Wily5/Title], Ending (valued #$00 through #$0B, respectively). Thus, you change the #$03 to #$06. Pretty simple.

Also worth noting is that table. The Fire Man palette stuff is in that table there, which is located at $1F402. But this code also tells us that $1F407 is the location of the palette data for the non-exception stage (so the MM clone battle's palette cycle), because it's $1F402 + 5 (we add 5 if it's not Fire Man's stage).

Hope that helped. Got questions? Please ask.

Edit: Fixed a typo in the address of the byte in question.

Jimmy52905
Posted on 05-25-08 10:12 PM Link | Quote | ID: 84166


Paratroopa
Level: 29

Posts: 41/152
EXP: 144291
Next: 3594

Since: 01-25-08

Last post: 5096 days
Last view: 4152 days
Posted by NetSplit
I assume you want to preserve the clone's palette animation, so if you simply change $1F5E6 in a header ROM from #$03 (Fire Man's stage) to #$06 (Wily1), then Wily1 will be set as the exception stage for the palette animation rather than Fire Man's stage.



Okay...now I'm confused. You said that at $1F5E6, I change #$03 to #$06, and I opened up my rom in Translhextion, but at $1F5E6 it says #$47. Did you give me the wrong offset or something? Or am I doing something wrong? (Sorry for all these noobish questions)

____________________
Come join my IRC channel, #Megahax for Mega Man hacking related discussions.

NetSplit
Posted on 05-26-08 12:24 AM (rev. 2 of 05-26-08 12:29 AM) Link | Quote | ID: 84175


Level: 32

Posts: 70/178
EXP: 187916
Next: 18526

Since: 02-26-07

Last post: 2209 days
Last view: 2134 days
I had meant to type 1F3E6. Sorry about that. If you look at the code I posted, you'll see that #$03 at $1F3D6; that's the one we're editing. We add #$10 for the header in the .nes ROM, so the address winds up being $1F3E6.

Jimmy52905
Posted on 05-26-08 12:45 AM Link | Quote | ID: 84177


Paratroopa
Level: 29

Posts: 44/152
EXP: 144291
Next: 3594

Since: 01-25-08

Last post: 5096 days
Last view: 4152 days
Thank you so much for the info. I probably never could've figured this out on my own. I just now tested the it, and it works perfectly.

____________________
Come join my IRC channel, #Megahax for Mega Man hacking related discussions.

NetSplit
Posted on 05-26-08 01:03 AM Link | Quote | ID: 84179


Level: 32

Posts: 71/178
EXP: 187916
Next: 18526

Since: 02-26-07

Last post: 2209 days
Last view: 2134 days
If you have any other questions, just ask. I probably know most everything about the stuff you'd want to edit.

Jimmy52905
Posted on 05-26-08 01:11 AM (rev. 2 of 05-26-08 01:12 AM) Link | Quote | ID: 84180


Paratroopa
Level: 29

Posts: 46/152
EXP: 144291
Next: 3594

Since: 01-25-08

Last post: 5096 days
Last view: 4152 days
Alright, I have another question regarding the .ini file. If I were able to find where the offsets for the ending and title screen are located, and copy down that information into the .ini file, would I be able to edit those with Rock And Roll?

____________________
Come join my IRC channel, #Megahax for Mega Man hacking related discussions.

NetSplit
Posted on 05-26-08 01:19 AM Link | Quote | ID: 84181


Level: 32

Posts: 72/178
EXP: 187916
Next: 18526

Since: 02-26-07

Last post: 2209 days
Last view: 2134 days
If you stick the data for the ending into the ini, then the editor should support it. You'd have to change the number of levels to 11 rather than 10 and put in the various bits of necessary info for level 11, but it SHOULD work. Note that the latter 6 levels share data with the former 6 levels, so the ending shares with Guts Man. All of the data for the ending comes after the data for Guts Man in his block, which is the 14010-1500F block.

The title screen uses a unique format that you wouldn't be able to edit in Rock & Roll; it's nothing like a level. If you did add level support for Wily5/title, though, you'd be able to see the 5 or so unused screens for Wily5 that are there. They're pretty ugly because no graphics fit them, but the design is clearly unused screens.

Jimmy52905
Posted on 05-26-08 06:37 PM Link | Quote | ID: 84197


Paratroopa
Level: 29

Posts: 49/152
EXP: 144291
Next: 3594

Since: 01-25-08

Last post: 5096 days
Last view: 4152 days
Alright, I've been working on putting in the necessary data for the ending level. One question though. Do you know where the offsets for the enemy data and special objects in the ending level are located? I can't seem to find them.

____________________
Come join my IRC channel, #Megahax for Mega Man hacking related discussions.

NetSplit
Posted on 05-27-08 03:07 AM Link | Quote | ID: 84243


Level: 32

Posts: 73/178
EXP: 187916
Next: 18526

Since: 02-26-07

Last post: 2209 days
Last view: 2134 days
The ending doesn't use special objects or enemy data, so there's no offset to give. If the editor requires something, just point it to an FF for the enemy data (FF terminates enemy data). For the special object data, I'm less sure what to tell you; the first byte says how many objects there are, and then each object is 6 bytes. The final object must be 01FF00000000. Pointing the editor to a 00 might work, though, since it'll (hopefully) tell it there are 0 objects.

Jimmy52905
Posted on 05-27-08 03:22 AM (rev. 2 of 05-27-08 03:23 AM) Link | Quote | ID: 84246


Paratroopa
Level: 29

Posts: 59/152
EXP: 144291
Next: 3594

Since: 01-25-08

Last post: 5096 days
Last view: 4152 days
Well, I guess that'll work...but I wan't to make it so that I can still insert enemies into the ending level. Do you know of any way I could do this?

____________________
Come join my IRC channel, #Megahax for Mega Man hacking related discussions.

NetSplit
Posted on 05-27-08 05:05 AM Link | Quote | ID: 84255


Level: 32

Posts: 76/178
EXP: 187916
Next: 18526

Since: 02-26-07

Last post: 2209 days
Last view: 2134 days
The ending is an exception stage and disregards special object and enemy data, so far as I know. The enemy data pointers are located at 1A462. There are a total of 11 pointers: 1 for each of the 10 used stages and 1 for Wily5 (I argue that the game was originally going to have 11 stages. There probably wasn't enough space for everything required by another stage (boss AI, for example)). The ending would be pointer 12, but there is no pointer 12; the enemy data starts immediately after the 11th pointer. The enemy data could all be shifted over by 2 bytes, though, and a 12th pointer could be added.

If you really want enemies in your ending, I could look into how to get them to work. There's only one A531C90B and, even more telling, only one C90B (A531 = load current stage, C90B = compare to #$0B. #$0B = ending stage ID), so getting the enemies working would require figuring out where the enemy loading code is and jumping to it rather than just killing off a comparison. It's probably doable.

Why do you want enemies in the ending?

Jimmy52905
Posted on 05-27-08 06:05 AM Link | Quote | ID: 84257


Paratroopa
Level: 29

Posts: 63/152
EXP: 144291
Next: 3594

Since: 01-25-08

Last post: 5096 days
Last view: 4152 days
Well, I was thinking about transforming the ending into a hands-free course. Like, for example: putting in those moving platform enemies that shoot bullets, and have them carry him to higher platforms and stuff like that. Just an idea, though.

____________________
Come join my IRC channel, #Megahax for Mega Man hacking related discussions.

NetSplit
Posted on 05-27-08 09:34 PM Link | Quote | ID: 84278


Level: 32

Posts: 78/178
EXP: 187916
Next: 18526

Since: 02-26-07

Last post: 2209 days
Last view: 2134 days
I figure it'd probably be pretty difficult to achieve that. One of the problems is randomness; it's likely that the variable that determine randomness won't always be the same every time the ending is reached, and the vertical movement of those foothold enemies is random. I suppose you could set the randomness variables to specific values at the beginning, but even then, MM1 doesn't seem conducive to this sort of setting because Mega Man doesn't slide on any surfaces like Mario does. You'd have to hit him a lot and properly, and make good use of non-random foothold enemies and moving platforms (of the sort in Guts' stage)

Jimmy52905
Posted on 05-28-08 01:22 AM Link | Quote | ID: 84298


Paratroopa
Level: 29

Posts: 64/152
EXP: 144291
Next: 3594

Since: 01-25-08

Last post: 5096 days
Last view: 4152 days
Posted by NetSplit
MM1 doesn't seem conducive to this sort of setting because Mega Man doesn't slide on any surfaces like Mario does.


Actually, sliding on platforms won't be necessary (Mega Man automatically runs in the ending, remember?) And I don't think the platforms movements aren't really all that random. I think they just move differently depending on what Mega Man does. And if it does move just depending on what Mega Man does, then that shouldn't be a problem. (Could be wrong about this, though.)

____________________
Come join my IRC channel, #Megahax for Mega Man hacking related discussions.

NetSplit
Posted on 05-28-08 01:37 AM Link | Quote | ID: 84300


Level: 32

Posts: 79/178
EXP: 187916
Next: 18526

Since: 02-26-07

Last post: 2209 days
Last view: 2134 days
I justed looked at the Footholder code and it uses the random function. The random function returns a random value between 0 and the value passed to it based on the random seed. The seed is written with this code:

0001D574: A5 0D		lda $0D
0001D576: 45 46 eor RandomSeed
0001D578: 65 23 adc FrameCounter
0001D57A: 4A lsr a
0001D57B: 85 46 sta RandomSeed


So no, it's based on the frame counter, not MM's movements. On the plus side, though, setting the frame counter and random seed to 0 at the start of the ending sequence should make it act the same every time through.

And I had thought that Mega Man would be standing still. It makes more sense if he's running, but the game's lack of slopes would make it difficult to move Mega Man upward after he's fallen any distance. The footholders are too thin to be useful, since Mega Man would run off of them before they raise him much.

kuja killer
Posted on 05-28-08 01:47 AM (rev. 2 of 05-28-08 01:52 AM) Link | Quote | ID: 84301


Level: 55

Posts: 41/628
EXP: 1243113
Next: 71076

Since: 03-20-07
From: Lake Havasu City, Arizona

Last post: 274 days
Last view: 14 hours
What about when those platform things drop you to your death sometimes (in iceman) all of a sudden somehow? :-/ Usually if you get hit by those flying penguins while standing on those moving platforms, you fall right through and die. :-/ That's a bug right? not supposed to happen? Or by the other moving platforms, i just tested a minute ago, and yup, I get hit by a bullet from the other moving platforms, and instantly fall down and die.

Jimmy52905
Posted on 05-28-08 01:58 AM Link | Quote | ID: 84302


Paratroopa
Level: 29

Posts: 66/152
EXP: 144291
Next: 3594

Since: 01-25-08

Last post: 5096 days
Last view: 4152 days
Maybe I'm just going to leave that part of the ending alone. I still plan on changing the background, though. But I'm very confused on some of the ending effects. Like the palette changes, the sun setting in the background, etc. Is there some kind of sprite that creates those effects, or is it something else?

____________________
Come join my IRC channel, #Megahax for Mega Man hacking related discussions.
Pages: 1 2


Main - ROM Hacking - Help with Mega Man (U) Configuration Settings New thread | New reply

Acmlmboard 2.1+4δ (2023-01-15)
© 2005-2023 Acmlm, blackhole89, Xkeeper et al.

Page rendered in 0.027 seconds. (350KB of memory used)
MySQL - queries: 87, rows: 127/127, time: 0.017 seconds.