| |||
Views: 88,316,827 |
Main | FAQ | Uploader | IRC chat | Radio | Memberlist | Active users | Latest posts | Calendar | Stats | Online users | Search | 03-29-24 08:34 AM |
|
Guest: Register | Login |
0 users currently in ROM Hacking | 4 guests |
Main - ROM Hacking - Mega Man Upgrade Patch | New thread | New reply |
Vanya |
| ||
Red Koopa Level: 27 Posts: 32/139 EXP: 104729 Next: 11430 Since: 01-22-13 Last post: 3265 days Last view: 3264 days |
Thanks a lot!
I'll admit that it took a little thinking outside the box to get it done. Here's the last patch I did when I was hacking MM5 if you'd like to check it out for yourself: Mega Man Powered Down R2 Demo Patch EDIT: Apparently my emulator is a liar. There are sprite limit breaks on the top and bottom rows. Apparently I have to reload the emulator for the sprite limit option to reset. ____________________ Krakenskin Leather Works, my Etsy store. LordVanya, my art page. FundamentalEssence, my game development page. |
infidelity |
| ||
Fuzz Ball Level: 66 Posts: 473/968 EXP: 2362674 Next: 99177 Since: 05-24-07 Last post: 930 days Last view: 786 days |
Those pesky emulators, lol. :-p |
Chaobomr |
| ||
Buster Beetle Banned: Spammer takeover? Level: 45 Posts: 203/467 EXP: 636554 Next: 23610 Since: 05-07-13 From: The dirty south Last post: 3452 days Last view: 3450 days |
Yeah, you might wanna make sure your emulator emulates an NES perfectly. That includes programming issues. ____________________ Sorry for the stupidity. That jerk will be dealt with in the most insane way possible. |
infidelity |
| ||
Fuzz Ball Level: 66 Posts: 474/968 EXP: 2362674 Next: 99177 Since: 05-24-07 Last post: 930 days Last view: 786 days |
Totally off topic, but with kuja killers help, he was able to find out that fceux was lacking the proper mmc5 emulation for $5130. My Zelda hack uses 1024kb of CHR-ROM, 4 pages worth of 00-FF, but at the time, fceux only showed the first page of 00-FF, and not the other 3 pages. |
Vanya |
| ||
Red Koopa Level: 27 Posts: 37/139 EXP: 104729 Next: 11430 Since: 01-22-13 Last post: 3265 days Last view: 3264 days |
Posted by Chaobomr It does. It just didn't say that turning sprite limits back on requires closing the emulator for it to take effect. At any rate I could fix it simply by redesigning the cursor to either not use the side sprites or simply not use sprites at all. ____________________ Krakenskin Leather Works, my Etsy store. LordVanya, my art page. FundamentalEssence, my game development page. |
Chaobomr |
| ||
Buster Beetle Banned: Spammer takeover? Level: 45 Posts: 204/467 EXP: 636554 Next: 23610 Since: 05-07-13 From: The dirty south Last post: 3452 days Last view: 3450 days |
Posted by VanyaI don't remember that happening to me. Then again, I'm using FCEUXD, if that makes any difference. ____________________ Sorry for the stupidity. That jerk will be dealt with in the most insane way possible. |
Vanya |
| ||
Red Koopa Level: 27 Posts: 38/139 EXP: 104729 Next: 11430 Since: 01-22-13 Last post: 3265 days Last view: 3264 days |
That's also what I'm using and the sprite limit didn't turn back on until I closed it and re-opened it. ____________________ Krakenskin Leather Works, my Etsy store. LordVanya, my art page. FundamentalEssence, my game development page. |
Isstanar |
| ||
Newcomer Level: 5 Posts: 1/4 EXP: 487 Next: 42 Since: 01-29-14 Last post: 3704 days Last view: 3275 days |
I'm seeing weird graphics issues with this hack and my Everdrive N8.
I understand it might not be a bug and maybe a compatibility issue with the Everdrive, but I thought I would mention it anyways. The first problem I noticed occurred after I selected a robot master, the background wouldn't change from the select screen you first see with all the robot masters. Then after you select one, the animation of the robot master jumping into the middle of the screen with their text occurs, but just kind of pastes over the background. The other problem, and the one that makes it impossible to play, happens when you are on one of the stages moving right and new sections of the stage are being drawn onto the screen. The new sections of the stage seemed jumbled around and will keep jumbling around as you move right. All the graphics looks normal when you start a stage though. I applied this patch to the "Megaman (U) [!].nes" rom with Lunar IPS. I can take pics later when I get home if you would like. |
infidelity |
| ||
Fuzz Ball Level: 66 Posts: 485/968 EXP: 2362674 Next: 99177 Since: 05-24-07 Last post: 930 days Last view: 786 days |
Sounds like a mirroring issue.
Need to properly set vertical/horizontal mirroring values within MMC3's $A001 register. Find all the mirror writes to whatever MMC1 register it uses, i forget the register, then create a jmp routine from that spot, and do 2 cmps for 2 specific mirroring values, then have them branch to the MMC3 equivilant mirroring value into $A001. EDIT In MMC1, $8000-$9FFF uses the last 2 bits for mirroring. So #2 is vertical, and #3 is horizontal. In MMC3, $A001 uses the last bit. So #0 is vertical, and #1 is horizontal. So however Megaman originaly stored to $8000-$9FFF, do searches for... A902 20#### / A902 4C#### A903 20#### / A903 4C#### Now you can go about this 2 ways. 1. The actual location to where the jsr/jmp's take you, perform a cmp routine to determine if either #2 or #3 are being sent here, and whichever is true, have it branch to either A900 8D01A0 or A901 8D01A0 for the mmc3 proper mirroring. 2. If the actual location is being used by other things within the rom, you will have to find free space to create your custom mmc3 mirror routine, and you will have to change each jsr/jmp within the entire rom, that does mmc1 mirroring, and them jsr/jmp to your new mmc3 mirroring routine. Good luck. :-) |
Isstanar |
| ||
Newcomer Level: 5 Posts: 2/4 EXP: 487 Next: 42 Since: 01-29-14 Last post: 3704 days Last view: 3275 days |
Posted by infidelity I thank you for taking the time to try and help me solve the problem, but all of that is lost on me since I have never done any hacking lol. Unless you were just saying that so Retrorain sees it, since he made the hack. I was posting my issue because Retrorain said to post any bugs with the hack from the romhacking.net webpage for this hack. Again though, thank you for trying. |
tomaitheous |
| ||
Level: 9 Posts: 10/11 EXP: 2227 Next: 935 Since: 01-13-14 From: a desert-y place Last post: 3697 days Last view: 3726 days |
Yeah, sounds like the mapper isn't initialize on startup (mirror control reg). Relying on a specific state because that's how the emulator setups it up by default, will run you into problems on the real hardware. ____________________ http://pcedev.wordpress.com |
RetroRain |
| ||
Fuzz Ball Level: 66 Posts: 697/994 EXP: 2432531 Next: 29320 Since: 09-30-07 Last post: 1907 days Last view: 929 days |
Posted by infidelityinfidelity, with all do respect, this is not correct. If Megaman 1 was MMC1, then yes it might. Megaman 1 is UNROM. And the MMC3 Mirroring register isn't $A001. It's $A000. $A001 is the SRAM register, which in the case of my hack, was already enabled. Posted by tomaitheousThis is precisely it. The mapper registers were not written to at startup. This was one of the things I intended to do, so that this ROM would run on real hardware. But, when I was having my bad eye strain, I wanted to get the bare minimum done to get this hack out, or it may have never gotten released. I was at a point where I either finish this hack, or shelve it. And I did not want to shelve all the work I did, especially since I was so close to the end. So I wrote in the readme the list of all the things I wanted to do, but couldn't do for health reasons, and that if I were to do them, they would be in a future release. However, it wouldn't be difficult at all to write to the mapper addresses. I did a full trace/code-data log on the whole ROM, and there was a ton of free space in the ROM that Capcom never used. After my custom code, there will be some #$20s, and some other values that weren't used in the ROM. That is where I intended to put my mapper initialization code. Then all you'd have to do is a JSR to that code from the code that is run at startup, and the game should work on real hardware. I did also plan ahead for this. I NOPed out the page flags from $C000 - $C007, so that all I'd have to do is put the JSR there. However, having put some initialization code there before, I found that for some reason the code didn't run if put there. I guess for some reason that $C000-$C007 was never meant to be executed line by line, merely written to, as part of the game's original bankswitch routine, which used those page flags. We'll see how I feel. Because what was mentioned, isn't really a gameplay bug (since it does play fine on emulators), and it can easily be fixed by any hacker that knows ASM. It's just that this project has exhausted me, and did cause me some health problems, and I don't really want to be bothered with it anymore. But, as I said, it shouldn't be hard to do at all. In fact, I'm not 100% sure on this, but I don't think every mapper address has to be written to. For instance, the mapper addresses $C000 - $E000 are IRQ addresses. I believe with $E000, any value written to it enables IRQs. I don't really know how IRQS work in ROMs, so I'm not sure if Megaman uses them or not. But if it doesn't, then I don't see why you'd need to write to $E000 at startup. From what was mentioned above, it seems as if the only real mapper address that has to be written to, is $A000, which takes care of the mirroring issues. So it could be as simple as this: JSR Free Space Free Space: LDA #$01 (01 is Vertical Mirroring, which Megaman 1 uses) STA $A000 RTS Done! In fact, I already have a piece of code in the ROM that does some initialization. The code that takes care of the Initial CHR Setup and Enables the SRAM address. What may really be all that is required is a simple one-line added piece of code! This is the piece of code in my hack:
Simply adding a STA $A000 could solve the whole problem:
Just add it before or after the $A001 (I prefer before the $A001, because I'm OCD like that ). But if you add that one line of code in there, you just have to make sure to update all of the JSRs that point to those custom code locations and the table reading codes. Which in the case of the JSRs, you'd have to jot down the code locations before adding that one line of code, and then go in and change them. Or you could simply add this, at $FFDE: LDA #$01 STA $A000 RTS and then simply JSR to it from some code that runs at startup. That would work too. Like I said, we'll see how I feel. In the meantime, anyone is more than welcome to make a patch that adds this small piece of code, so that it can run on real hardware. ____________________ My YouTube Channel |
infidelity |
| ||
Fuzz Ball Level: 66 Posts: 486/968 EXP: 2362674 Next: 99177 Since: 05-24-07 Last post: 930 days Last view: 786 days |
My apologies, idk why my mentality was thinking mm was an mmc1 game. Sorry on the $A000/$A001 mixup too. |
RetroRain |
| ||
Fuzz Ball Level: 66 Posts: 700/994 EXP: 2432531 Next: 29320 Since: 09-30-07 Last post: 1907 days Last view: 929 days |
Mega Man: Upgrade Patch v1.2 Released.
This latest version of the Upgrade Patch adds a write to MMC3 Mapper Address $A000 at start-up, to allow the ROM to run on real hardware. Also included in the zip file is a Change Log. You can get it at the other thread. Can anyone test the patch for me, to see if it runs on the Everdrive N8 and the real NES? Thanks. ____________________ My YouTube Channel |
Isstanar |
| ||
Newcomer Level: 5 Posts: 3/4 EXP: 487 Next: 42 Since: 01-29-14 Last post: 3704 days Last view: 3275 days |
Posted by RetroRain Oh nice, thanks for making that patch. I'll give it a shot when I get home on my Everdrive N8 and let you know how it works. |
Isstanar |
| ||
Newcomer Level: 5 Posts: 4/4 EXP: 487 Next: 42 Since: 01-29-14 Last post: 3704 days Last view: 3275 days |
Alright, I guess the board has a posting limit for new people so I had to wait, but I did test the 1.2 Upgrade patch you made on my Everdrive N8
I played through 4 stages and everything seemed to be fine, except for anything that moved through the air like projectiles or flying enemies. As the projectile/enemy was flying they would randomly disappear then reappear shortly a little distance away continuing their pattern of flight. For example, the pickaxe-throwing-guys in Gutsman stage would launch their pickaxe in an arc, after it would follow it's arc a little, it would dissapear then reappear lower, but then continue it's arc. |
RetroRain |
| ||
Fuzz Ball Level: 66 Posts: 704/994 EXP: 2432531 Next: 29320 Since: 09-30-07 Last post: 1907 days Last view: 929 days |
I tested the ROM in the emulator, and it plays fine. I played Guts Man stage to see if there was any problems when I got up to the pickaxe enemy, and I didn't see any problem. If you'd like, you can post a video of the problem/s. But, I'm not really sure what else I can do to correct this thing you are talking about. I'm not really familiar with the Everdrive N8 anyway. What exactly is it? Does this ROM show any problems when played on a regular NES? Does the original Mega Man ROM show the same problems you mentioned wnen played on the Everdrive N8?
Does anyone happen to know if the MMC3 Mapper IRQ Adresses $C000 - $E000 have to be written to at start-up? I don't know if Megaman 1 uses IRQs or not. I don't think it does, since I looked at the disassembly, and there is no mention of it. If it doesn't, do they have to be written to anyway? I'm wondering if there is a possibility that not having these written to at start-up is causing the problem that Isstanar is talking about. Thanks. Copied from Firebug's Comprehensive NES Mapper Document:
____________________ My YouTube Channel |
RetroRain |
| ||
Fuzz Ball Level: 66 Posts: 730/994 EXP: 2432531 Next: 29320 Since: 09-30-07 Last post: 1907 days Last view: 929 days |
Mega Man: Upgrade Patch v1.3 Released.
The game now saves your progress! This version adds two things: 1. Added writes to all mapper addresses, to ensure that this ROM will run on real hardware. 2. The game saves your lives and completed stages and weapons after you complete a stage, or obtain the special beam weapon, or after returning to the stage select screen from the credits. The game will only save up to the first Dr. Wily stage. ____________________ My YouTube Channel |
Chaobomr |
| ||
Buster Beetle Banned: Spammer takeover? Level: 45 Posts: 325/467 EXP: 636554 Next: 23610 Since: 05-07-13 From: The dirty south Last post: 3452 days Last view: 3450 days |
I found a glitch, although you may not think it is. See, everytime I get a game over, the game goes back to how many lives I had since the last save. That wouldn't be a problem if I had like 3 extra lives, but I'm at only one. I'm not talking 00 here, yet. ____________________ Sorry for the stupidity. That jerk will be dealt with in the most insane way possible. |
RetroRain |
| ||
Fuzz Ball Level: 66 Posts: 734/994 EXP: 2432531 Next: 29320 Since: 09-30-07 Last post: 1907 days Last view: 929 days |
Thanks for reporting the glitch, Chaobomr. I fixed it. Version 1.4 has been released.
There may be one more version of this hack. But it will be the final version. THINGS LEFT TO DO FOR THE FINAL VERSION, 1.5: 1. Adding the horizontal bars to cover over the first and last blue bars of the boss preview screen. I already have the horizontal bar graphics added to the CHR. 2. Adding scrolling stars to the boss preview screen (stars are one pixel sprites, with the X coordinates constantly being decremented). With 1 and 2 above, this would make the boss preview screen look like Mega Man 2's. 3. Program the "PAUSED" text by simply writing to the SPR-RAM during pause mode. The "PAUSED" text I already put in the CHR. 4. Add an option to the title screen, which allows the player to erase their saved progress. And that should do it. That should complete this package! ____________________ My YouTube Channel |
Main - ROM Hacking - Mega Man Upgrade Patch | New thread | New reply |
© 2005-2023 Acmlm, blackhole89, Xkeeper et al. |
MySQL - queries: 127, rows: 166/167, time: 0.019 seconds. |