| |||
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 |
Jimmy52905 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 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 |
| ||
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:
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 |
| ||
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 |
| ||
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. |
Main - ROM Hacking - Help with Mega Man (U) Configuration Settings | New thread | New reply |
© 2005-2023 Acmlm, blackhole89, Xkeeper et al. |
MySQL - queries: 87, rows: 127/127, time: 0.017 seconds. |