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

Main - Posts by RetroRain

Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

RetroRain
Posted on 01-15-14 12:24 AM, in My Mapper Conversion Pack v1.2 (Pack Discontinued) (rev. 4 of 04-10-15 05:35 PM) Link | Quote | ID: 155452


Fuzz Ball
Level: 66

Posts: 690/994
EXP: 2438359
Next: 23492

Since: 09-30-07

Last post: 1936 days
Last view: 958 days
My Mapper Conversion Pack
Version 1.2







Download

____________________
My YouTube Channel

RetroRain
Posted on 01-15-14 07:07 PM, in Mario Adventure 3 - Demo 2 is out! Link | Quote | ID: 155457


Fuzz Ball
Level: 66

Posts: 691/994
EXP: 2438359
Next: 23492

Since: 09-30-07

Last post: 1936 days
Last view: 958 days
Here is a list from what I played so far. I only completed four levels, but I took notes of all the things I didn't like or felt needed fixing.

- Get rid of that quirk that sends you to the previous level you were in if you die in a level. It's one of those things that I couldn't even stand in the original game. I don't know why Nintendo programmed that in there to begin with. It's just un-necessary. And in the case of your World 1 map, which is a few screens in length, if you visit the castle, and then decide to go all the way back to the very first level (the upper-left level next to the pipe where you start the world in), and you die in the level, it will send you all the way back to the castle. It's so stupid.

- Are you supposed to start losing air if you touch the clouds that guard the dungeon? Once the air starts depleting, there is nothing you can do to stop it, except exit the level through the pipe.

- You die if you enter the first pipe of the first level (upper-left level of the world map next to the pipe you start the world from)

- I can't stand that as big Mario, if you slide under blocks, and get up, it counts as getting hurt, even if you do it as Shell Mario (not spinning of course). I understand that you probably implemented that to avoid people from taking advantage of the slide in certain areas of levels, but in my opinion being able to slide like that was one of the things that I liked about SMB3, and at least for me, never found a way in the original game that you could really abuse the slide to cheat.

- The plain green on the world map should be fixed. You may have planned on fixing that or not, but I just wanted to point that out incase. It's too bland. I would use the grass tiles from The Legend of Zelda: Link's Awakening, like Jasp did in his hack, and just cover all of the plain green tiles with that. It would probably look very good.

- In the underground level, I noticed that if you freeze the water with the Ice Balls, and then jump in and try to swim up and touch beneath the ice, you can get hurt. Not sure if you knew about that or not.

I'll probably play the rest of the levels later. But other than the things I mentioned above, the graphics are excellent, and I love the SMB2-styled level (I was kinda hoping for the SMB2 Level Music and Dream-Land music ).

I hope these things will help you improve your hack.

____________________
My YouTube Channel

RetroRain
Posted on 01-15-14 09:27 PM, in My Conversions To MMC3. Patches/Documents *UPDATED v9.1 12-3-13* Link | Quote | ID: 155460


Fuzz Ball
Level: 66

Posts: 692/994
EXP: 2438359
Next: 23492

Since: 09-30-07

Last post: 1936 days
Last view: 958 days
Hey infidelity, I checked the notes of The Legend of Zelda in your latest pack release v9.1. I noticed that the bankswap routine in the notes is still the old bankswap routine from Super Mario Bros. 2 before you noticed that the bankswap routine was causing a problem in my Mega Man conversion.

If I want to use that patch, all I have to do is simply replace those old routines with the new ones? The Legend of Zelda is a MMC1 mapper, and I noticed that there was a little bit more involved when you converted this ROM.

And speaking of the old bankswap routine, I hope you updated it for your Zelda hack as well, so it doesn't cause any surprise problems down the road.

Also, slightly curious as to why there are multiple bankswap routines instead of just one hard-wired one, in The Legend of Zelda?

Thanks.

____________________
My YouTube Channel

RetroRain
Posted on 01-22-14 07:41 PM, in Mario Adventure 3 - Demo 2 is out! Link | Quote | ID: 155509


Fuzz Ball
Level: 66

Posts: 693/994
EXP: 2438359
Next: 23492

Since: 09-30-07

Last post: 1936 days
Last view: 958 days
Interesting survey page. I will fill it out after I complete the remaining levels. It wouldn't be fair to fill it out based on the four levels I completed.

____________________
My YouTube Channel

RetroRain
Posted on 01-24-14 09:26 PM, in I need a NES/Famitracker Music Composer to compose one song (rev. 4 of 01-24-14 09:37 PM) Link | Quote | ID: 155522


Fuzz Ball
Level: 66

Posts: 694/994
EXP: 2438359
Next: 23492

Since: 09-30-07

Last post: 1936 days
Last view: 958 days
I need a Famitracker Music Composer to take a one-minute and thirty-three second MP3 that I have and convert it to a NSF file by composing it from scratch in Famitracker.

The only reason I'm asking is because I don't know anything about music. And this is coming from someone who has spent some time messing around with Famitracker. I don't know the names of the instruments in the song and I don't know how to reproduce them in NES quality.

I need this one song made for a possible new NES ROM hack that I will be doing. I say possible, because I am still uncertain if I want to go through with it, but having this one song made to go along with the intro sequence will give me a better idea and the possible motivation I need if I want to pursue this project.

I figure any Famitracker music expert could compose this song no problem. The song is already made, so all you would have to do is convert it based on what you hear.

I will not disclose the project or game I'm hacking at this time, as it is very early in development (I have done a Code/Data Log playthrough of the game I may be hacking, so I know where all of the free space is in the ROM).

If you are capable of doing this for me, send me a PM, and I will send you the MP3 that has to be converted. In the meantime, while I am waiting, I will be attempting to try to convert this MP3 myself, although I am not confident that I will be successful. I will also be working on the intro sequence in the ROM.

This could wind up being an amazing ROM hack, that I expect very little development time. I'm estimating a 6-month develeopment period.

Thanks.

____________________
My YouTube Channel

RetroRain
Posted on 01-27-14 07:14 AM, in I need a NES/Famitracker Music Composer to compose one song Link | Quote | ID: 155545


Fuzz Ball
Level: 66

Posts: 695/994
EXP: 2438359
Next: 23492

Since: 09-30-07

Last post: 1936 days
Last view: 958 days
I may have worded my post wrong. And at the same time, made the post pre-maturely.

I KNOW that it is impossible to convert a MP3 to NSF. I just wanted a NES version of the song that was in the MP3. I realize that there would be a loss of instruments, and it wouldn't be perfect. I get that. I just wanted someone who knows how to read music notes, and understand all of the music lingo, who could actually compose the song in Famitracker. Just as you would take your favorite song, and compose it in Mario Paint, you would hear the MP3, and use the FamiTracker to try to make it sound like the music as best as you can. It's obviously not going to sound EXACTLY like the actual song.

And as for my post being pre-mature, the ideas I have for the project are pretty good, and I started the project, but it's weird, because I'm conflicted at the moment. I want to do the project, but I don't think I have the will to sit there and do all of the work that is necessary to make it happen. After doing my Megaman conversion, I'm working with a different game, and I would literally have to have the same level of patience I did with that project, and at the moment I don't have it. Every game is different and has its own special code and what it does in the banks, and I just don't know if I have the patience to actually sit there and figure everything out again. I was thinking of making this a Game Maker project too, which would cut out all of the reverse-engineering hassle, but again, I know the amout of work involved. If I did it as a ROM hack, I estimate 6 months, but as a homebrew in Game Maker, it could take just as long, if not longer.

So I'm just going to drop this thread for now. Maybe at a later time when I'm more certain about the project I'll ask for help with the music.

Thanks.

____________________
My YouTube Channel

RetroRain
Posted on 01-27-14 10:19 PM, in I need a NES/Famitracker Music Composer to compose one song (rev. 6 of 01-27-14 10:24 PM) Link | Quote | ID: 155550


Fuzz Ball
Level: 66

Posts: 696/994
EXP: 2438359
Next: 23492

Since: 09-30-07

Last post: 1936 days
Last view: 958 days
Let me show you what I was going for, just for the heck of it:

A very rough version of the intro I'm going for, so you can get idea of what I was trying to accomplish.

http://www.youtube.com/watch?v=OBgl9jO9AII

Now, if only I had a NES version of that theme. I really got to learn how to compose music one of these days.

If I am to do this on the NES, then I would re-construct a new title screen, and have the scanlines scroll the screen to the right, and use sprites to display the title. I would also have the storyboard text pop up first when you load the game, and the title screen after that. It would fit the music perfectly.

If I do this on Game Maker, it would be a similar thing. On one hand, I want this as a ROM hack, because you can play it on the real thing, and it has a certain quality to it. On the other hand, if I do this in Game Maker, I have more creative potential to do the things I want to do, but better. I'm limited by what is already in the Zelda 1 ROM.

____________________
My YouTube Channel

RetroRain
Posted on 01-30-14 09:59 AM, in Mega Man Upgrade Patch Link | Quote | ID: 155564


Fuzz Ball
Level: 66

Posts: 697/994
EXP: 2438359
Next: 23492

Since: 09-30-07

Last post: 1936 days
Last view: 958 days
Posted by infidelity
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. :-)
infidelity, 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 tomaitheous
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.
This 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:


$FF4F:AD 06 01 LDA $0106 = #$01
$FF52:D0 13 BNE $FF67
$FF54:A0 05 LDY #$05
$FF56:B9 6B FF LDA $FF6B,Y @ $FFB7 = #$08
$FF59:99 00 01 STA $0100,Y @ $014C = #$00
$FF5C:88 DEY
$FF5D:10 F7 BPL $FF56
$FF5F:A9 01 LDA #$01
$FF61:8D 06 01 STA $0106 = #$01
$FF64:8D 01 A0 STA $A001 = #$30
$FF67:20 8D D5 JSR $D58D
$FF6A:60 RTS


Simply adding a STA $A000 could solve the whole problem:


$FF4F:AD 06 01 LDA $0106 = #$01
$FF52:D0 13 BNE $FF67
$FF54:A0 05 LDY #$05
$FF56:B9 6B FF LDA $FF6B,Y @ $FFB7 = #$08
$FF59:99 00 01 STA $0100,Y @ $014C = #$00
$FF5C:88 DEY
$FF5D:10 F7 BPL $FF56
$FF5F:A9 01 LDA #$01
$FF61:8D 06 01 STA $0106 = #$01
8D 00 A0 STA $A000 = #$00 <-- Add it here
$FF64:8D 01 A0 STA $A001 = #$30
$FF67:20 8D D5 JSR $D58D
$FF6A:60 RTS


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

RetroRain
Posted on 01-30-14 10:04 AM, in I need a NES/Famitracker Music Composer to compose one song (rev. 2 of 01-30-14 10:27 AM) Link | Quote | ID: 155565


Fuzz Ball
Level: 66

Posts: 698/994
EXP: 2438359
Next: 23492

Since: 09-30-07

Last post: 1936 days
Last view: 958 days
The name of the track is called "Wilderland." It's from the movie score of The Hobbit: The Desolation of Smaug. I already tried looking for the midi version of it. There doesn't appear to be one. If you happen to find one, kudos to you.

But it's not a big deal, really. My motivation for this project has died right now.

____________________
My YouTube Channel

RetroRain
Posted on 02-01-14 12:03 AM, in Mega Man 4 Voyage (Update: Out NOW) Link | Quote | ID: 155579


Fuzz Ball
Level: 66

Posts: 699/994
EXP: 2438359
Next: 23492

Since: 09-30-07

Last post: 1936 days
Last view: 958 days
Looks interesting. Looking forward to seeing more!

Posted by Trinitronity
Oh my god, did I just saw Suzy from MegaMan 1? Nice work so far, DurfarC.
By the way, what in your eyes is the most basic thing someone could do with 6502 ASM, with which that person could then learn 6502 ASM step by step? I'm considering learning 6502 ASM for hacking MM2, MM3, MM4 and MM5.


There is lots of information out there. Where you start is completely up to you. You would benefit greatly by downloading a document called nestech.txt. You can get it from Zophar's Domain. You should also download the NES Mapper documents, and the document titled 6502.txt. There is a document that tells you how to make a small NES demo, which I believe, if I remember correctly, you can get from Zophar's Domain. By programming and setting up a small NES ROM, you can see how the NES works, and it will definitely help you when it comes to ASM hacking, because you will see how the NES works.

But if you never did an ASM hack before, I would start out small, and then work your way up. I made a thread back in July, which may help you also. Here's the link:

http://acmlm.kafuka.org/board/thread.php?id=7743

Good luck!

____________________
My YouTube Channel

RetroRain
Posted on 02-03-14 11:08 PM, in Mega Man Upgrade Patch Link | Quote | ID: 155599


Fuzz Ball
Level: 66

Posts: 700/994
EXP: 2438359
Next: 23492

Since: 09-30-07

Last post: 1936 days
Last view: 958 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

RetroRain
Posted on 02-03-14 11:15 PM, in Mega Man Upgrade Patch - Download Thread Link | Quote | ID: 155601


Fuzz Ball
Level: 66

Posts: 701/994
EXP: 2438359
Next: 23492

Since: 09-30-07

Last post: 1936 days
Last view: 958 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 link above, which has been updated to the new version.

____________________
My YouTube Channel

RetroRain
Posted on 02-04-14 12:50 AM, in Mega Man 4 Voyage (Update: Out NOW) (rev. 2 of 02-04-14 12:53 AM) Link | Quote | ID: 155605


Fuzz Ball
Level: 66

Posts: 702/994
EXP: 2438359
Next: 23492

Since: 09-30-07

Last post: 1936 days
Last view: 958 days
DurfarC, how did you compose the music for your hack? Did you do it in Famitracker first, and then port it over? Or did you just do it right from the ROM?

I'm assuming that since you did the music by yourself, that you are a music pro?

It bothers me that I can do all of this ASM hacking, but I have no music skills what-so-ever. I can come up with an awesome song in my head, but I don't know how to actually compose it.

Do you have any advice on composing music, or can you recommend any good books that I can read?

I asked Matrixz about this one time. I don't remember exactly what he said (I have to re-read my PMs), but I think he mentioned something about playing a keyboard piano. I may have to buy one soon.

But I obviously need to know music lingo in order to compose something decent right? I can't even read sheet music. XD

Anyway, again, nice hack. It looks good, and you have helped inspire me. I may be getting back to my MM4 hack soon.

____________________
My YouTube Channel

RetroRain
Posted on 02-04-14 02:44 AM, in Mega Man 4 Voyage (Update: Out NOW) (rev. 2 of 02-04-14 02:45 AM) Link | Quote | ID: 155608


Fuzz Ball
Level: 66

Posts: 703/994
EXP: 2438359
Next: 23492

Since: 09-30-07

Last post: 1936 days
Last view: 958 days
Thanks for the advice! It should come in handy!

I didn't know there was a phenomenom called Absolute Pitch. That's pretty cool that you have a rare gift there.

And having used FamiTracker before, or at least "tried" to use it, I have to agree that it can be a pain to use.

____________________
My YouTube Channel

RetroRain
Posted on 02-06-14 03:54 AM, in Mega Man Upgrade Patch (rev. 6 of 02-06-14 07:19 AM) Link | Quote | ID: 155633


Fuzz Ball
Level: 66

Posts: 704/994
EXP: 2438359
Next: 23492

Since: 09-30-07

Last post: 1936 days
Last view: 958 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:


+-------+ +----------------------------------------------+
¦ $C000 +---¦ IIIIIIII ¦
+-------+ ¦ +------+ ¦
¦ ¦ ¦
¦ ¦ ¦
¦ +------- IRQ Counter Register ¦
¦ The IRQ countdown value is ¦
¦ stored here. ¦
+----------------------------------------------+

+-------+ +----------------------------------------------+
¦ $C001 +---¦ IIIIIIII ¦
+-------+ ¦ +------+ ¦
¦ ¦ ¦
¦ ¦ ¦
¦ +------- IRQ Latch Register ¦
¦ A temporary value is stored ¦
¦ here. ¦
+----------------------------------------------+

+-------+ +----------------------------------------------+
¦ $E000 +---¦ xxxxxxxx ¦
+-------+ ¦ +------+ ¦
¦ ¦ ¦
¦ ¦ ¦
¦ +------- IRQ Control Register 0 ¦
¦ Any value written here will ¦
¦ disable IRQ's and copy the ¦
¦ latch register to the actual ¦
¦ IRQ counter register. ¦
+----------------------------------------------+

+-------+ +----------------------------------------------+
¦ $E001 +---¦ xxxxxxxx ¦
+-------+ ¦ +------+ ¦
¦ ¦ ¦
¦ ¦ ¦
¦ +------- IRQ Control Register 1 ¦
¦ Any value written here will ¦
¦ enable IRQ's. ¦
+----------------------------------------------+


____________________
My YouTube Channel

RetroRain
Posted on 02-09-14 07:37 PM, in General Megaman Hacking Thread Link | Quote | ID: 155661


Fuzz Ball
Level: 66

Posts: 705/994
EXP: 2438359
Next: 23492

Since: 09-30-07

Last post: 1936 days
Last view: 958 days
Posted by Gavzilla1000
Ok... I'm going to need some help with this small ASM "hack"

With the IRC log kuja killer linked, they talk about changing the ASM so that when Mario does in SMB1, he gains a life, instead of losing one.

I thought this would be a nice exercise to do with Megaman 5.

I used the Cheat Search with FCEUX, and found that the live address is $00BF.

SWEET! I thought. I busted open the Debugger, and "Seek to" BF. The piece of ASM that was there was;

:00BF:01 00 ORA ($00,X) @ $0002 = #$62

BOOM! I'm instantly confused. Reason being, it's not as straight forward as I thought.

I know that ORA means "OR" in Memory. And I know that value $00 will be added with whatever Registry X is. "($00,X)"

But what threw me off, is that $00002 = #$62 is constantly switching around.

It switches to;

$CDFF = #$01
$0000 = #$00
$1018 = #$00
$00FF = #$88
$F000 = #$F0

And;

$0002 = #$18

I put a Break at $00BF, but that doesn't seem to help. (I should do some research on the Break option anyway.)

I sorta confused, so if anybody can help, please do.
I love the lives ASM hack.

The lives ASM hack is the easiest ASM hack, and perhaps the best ASM hack for beginners. And there are so many ways you can do it too.

You can simply change the STA to a LDA, so that the lives never gets stored if the game SBC's the lives and stores it. Or you can simpy change the SBC to an ADC. If the game decreases the lives with DEC, you can simply change it to an INC. Or, you can simply NOP out the code that decrements the lives altogether so that it is never executed!

There are so many ways to do it, and there is no wrong way. However, if you don't want lives in your game at all, I'd probably just NOP out the code, that way you have more free space in your game if you ever need it.

____________________
My YouTube Channel

RetroRain
Posted on 02-17-14 11:41 PM, in Mega Man 4 Voyage (Update: Out NOW) Link | Quote | ID: 155716


Fuzz Ball
Level: 66

Posts: 706/994
EXP: 2438359
Next: 23492

Since: 09-30-07

Last post: 1936 days
Last view: 958 days
Posted by DurfarC
I'm also planning to make weapon switching possible with the select button, although since that involves graphics loading I'm not sure if I have enough skills to do that just yet.
Hard to believe that you can create all of these new enemies and very nice new features, and yet you wouldn't be able to do the graphics loading thing you mentioned.

Have faith in yourself. Trust me, if you can do those things in the video you just posted, you can do the weapon switching routine.

Nice video by the way.

____________________
My YouTube Channel

RetroRain
Posted on 02-23-14 01:11 PM, in Fire 'n Ice, with sram saving (rev. 2 of 02-23-14 01:20 PM) Link | Quote | ID: 155756


Fuzz Ball
Level: 66

Posts: 707/994
EXP: 2438359
Next: 23492

Since: 09-30-07

Last post: 1936 days
Last view: 958 days
Very nice Drakon! I'm glad to see that the ROM hacking scene is still alive.
Posted by NARFNra
Wow, impressive work. I'm curious, I don't need technical details on a "i could do it myself" level, but what do you really do to add SRAM? Tell the game to save at predetermined points to a location in the SRAM memory, and look it up on startup?
There are a few things you have to do.

1. Change the ines mapper offset 6 so that the ROM becomes "battery-backed." You're simply toggling on the bit that enables SRAM. See the bottom of the document nestech.txt.

2. Depending on the mapper the ROM uses, you may have to enable the SRAM Address. For instance, Mega Man uses Mapper 2, UNROM, which is a very easy mapper to work with. However, there are no special mapper registers with UNROM. So you don't have to enable anything. If the game is Mapper 4, MMC3, you would have to enable $A001, by setting it to 1. $A001 is Mapper 4's SRAM (SaveRAM) Toggle Address. And you would have to enable this at start-up. To figure this out, you need mapper documents. A must-have document is Firebug's Comprehensive Mapper Document.

You can get nestech.txt and Firebug's Mapper Document both at Zophar's Domain if you need them. You NEED documents when hacking. There is no way around it.

3. If you take a look at nestech.txt, you will see that the NES SRAM addresses is between $6000 and $7FFF. It is the final RAM location in the ROM before you get to the PRG banks.

Now, I haven't actually done a SRAM hack yet, but I would imagine it would be pretty easy. Basically, you have to figure out what it is you want saved for when you turn the game off.

Let's say you want the game to save your lives. What I might do is find where the game's frame counter is (a counter that is incremented every step), and read the lives address (LDA LivesAddress), and store it to a free RAM address (STA). Since you have $6000 to $7FFF work with, you have a lot of addresses to choose from. However, if the game already uses SRAM, you have to make sure that you aren't using an address that is already being used.

So, if you are constantly reading and storing the lives to SRAM, because you have it by the game's frame counter, aren't you essentially saving the lives to RAM?

Yes. So, part 1 is done. Now, part 2. Not that hard either. When you boot up the game, you want to read what you stored, and store that into the lives address.

So let's say you want to quit playing the game, and you have 5 lives.

Save Lives:

LDA Lives_Address
STA $6000

Load Lives:

LDA $6000
STA Lives_Address

Presto!

You can do it! It really is that easy. I haven't done a SRAM hack yet, but I did a whole conversion with Megaman 1, so I have a pretty good idea of how it would be done.

Just make sure you have documentation. If you are serious about doing any kind of NES ASM hacking, get all of the documentation you can get on the NES.

nestech.txt and firebug's mapper document are a must. Also, get 6502.txt. Those give you the opcodes in hexadecimal form, so you can ASM hack in hex. But beware. Some of the opcodes may be wrong in the document. I have found errors in 6502.txt, and in the mapper document.

For instance, in firebug's mapper document, for Mapper 4, where it deals with the mirroring, I found out through a nesdev wiki page that the information was backwards.

Taken from Firebug's Mapper Document
 +-------+   +----------------------------------------------+

¦ $A000 +---¦ xxxxxxxM ¦
+-------+ ¦ ¦ ¦
¦ ¦ ¦
¦ ¦ ¦
¦ +--- Mirroring Select ¦
¦ 0 - Horizontal mirroring ¦
¦ 1 - Vertical mirroring ¦
¦ NOTE: I don't have any confidence in the ¦
¦ accuracy of this information. ¦
+----------------------------------------------+
I found out that the Vertical Mirroring is really 0, adn that the Horizontal Mirroring is 1, when I made the latest version of my Mega Man Upgrade Patch.

Anyway NARFNra, I hope this information helps you.

____________________
My YouTube Channel

RetroRain
Posted on 02-23-14 01:27 PM, in Fire 'n Ice, with sram saving Link | Quote | ID: 155758


Fuzz Ball
Level: 66

Posts: 708/994
EXP: 2438359
Next: 23492

Since: 09-30-07

Last post: 1936 days
Last view: 958 days
It depends on what you're saving I suppose. I would imagine a game like Super Mario Bros. 3, if you only made it so that the game saves RAM on the map screen, anything you get in the level before you turn the power off would not be saved. But if you had the RAM constantly being checked and saved, you could save things you obtain in a level before turning the power off. I guess it depends on what you are going for. But yeah, I would agree that saving constantly, for the most part, would be too much. But I don't think there is any harm in doing it.

I might be doing a SRAM hack of my own now, thanks to you! Seriously, nice work man!

____________________
My YouTube Channel

RetroRain
Posted on 02-23-14 01:50 PM, in Fire 'n Ice, with sram saving Link | Quote | ID: 155760


Fuzz Ball
Level: 66

Posts: 709/994
EXP: 2438359
Next: 23492

Since: 09-30-07

Last post: 1936 days
Last view: 958 days
I already have a SRAM hack in mind that I want to do!

____________________
My YouTube Channel
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50


Main - Posts by RetroRain

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

Page rendered in 0.244 seconds. (341KB of memory used)
MySQL - queries: 134, rows: 166/166, time: 0.233 seconds.