| |||
Views: 88,485,812 |
Main | FAQ | Uploader | IRC chat | Radio | Memberlist | Active users | Latest posts | Calendar | Stats | Online users | Search | 04-26-24 07:05 AM |
|
Guest: Register | Login |
0 users currently in ROM Hacking | 3 guests | 1 bot |
Main - ROM Hacking - Megaman III Pointers | New thread | New reply |
Kiokuffiib11 |
| ||
Porcupo Level: 40 Posts: 22/313 EXP: 407050 Next: 34259 Since: 07-10-09 From: Marquette, Michigan Last post: 3312 days Last view: 1934 days |
I was looking to change the intro song to the ending. and the ending to the intro on megaman III for a rom hack, but, does anyone happen to know where I can find all of these?
Here is what I have: 3cd1c = Pointer for Needleman Music [01] 3cd1d = Pointer for Magnetman Music [02] Values: [00] Title Music [01] Needleman [02] Magnetman [03] Gemini Man [04] Hard Man [05] Top Man [06] Snake Man [07] Spark Man [08] Shadow Man [09] Wily Stage 1-2 [0a] Wily Stage 3-4 [0b] Wily Stage 5-6 [0c] Boss Battle [0d] Wily Battle [0e] Password [0f] Credits [10] Stage Select [11] Protoman's theme [12] Protoman Music [ending] [33] Boss Selected [35] Weapon Get [36] Wily's castle intro Sou 00 would be the intro music, and 12 would be the ending, however, these values are not nearby the other ones, the other ones (The first set of bosses) are right next to one another starting at 3cd1c [value: 01] Thank you in advance for any help you can share. ____________________ セシル |
koala_knight |
| ||
Buzzy Beetle Level: 44 Posts: 311/384 EXP: 591231 Next: 20054 Since: 06-01-07 From: Miami Last post: 4125 days Last view: 4113 days |
In mm5 they used an algorithm to play any sound/music. If mm3 is the same way then you should be able to find at what point the title music is loaded and change it to load the ending music instead & vice versa. |
Insectduel |
| ||
Hammer Brother Level: 68 Posts: 363/1069 EXP: 2687732 Next: 41068 Since: 02-16-08 From: Insectduel's office Last post: 1257 days Last view: 1256 days |
I've been harrassing with Music pointer data in my life for most of the games including the ones I haven't hacked yet. Some level music uses the load as in BD XX XX to point where the address is located in ASM terms while some other ones and sound effect data uses A9 XX 20 XX XX. I even create sounds in certain slots into their freespaces in Mega Man IV.
If you're really need to find it, use the FCE Ultra Emulator with the Code/Data logger. Go anywhere with the music desired and start logging. Then open your FCE Ultra hex editor. Find A9 XX with the load music number you want and you should see A9 XX with 20 XX XX next to it in ROM Memory. Then edit the load number value in the ROM Memory and save. Hope that helps. |
Kiokuffiib11 |
| ||
Porcupo Level: 40 Posts: 23/313 EXP: 407050 Next: 34259 Since: 07-10-09 From: Marquette, Michigan Last post: 3312 days Last view: 1934 days |
The only problem is, when I do that, it usually creates about 100 meg text file, that takes forever (Doesn't open and locks up the computer) to load.
I've got 3 gig of ram, it shouldn't do it, but it does. Sou, A9 or BD is usually the first numbers before the info? I'm not following I don't think. ____________________ セシル |
infidelity |
| ||
Fuzz Ball Level: 66 Posts: 121/968 EXP: 2368023 Next: 93828 Since: 05-24-07 Last post: 958 days Last view: 814 days |
just to throw in my 2 cents
$D9 holds the current song id MM4 uses the same register for this as well With just about every MM game that i've encountered for the nes, you will never find an entire table dedicated to having all the sound id's in a neat row. MM4 has sound initializations going on within asm alot, *I believe the final wily battle does that* |
Trax |
| ||
Yellow Stalfos Level: 71 Posts: 875/1145 EXP: 3035756 Next: 131358 Since: 07-06-07 From: Québec Last post: 3626 days Last view: 2878 days |
Someone interested by Mega Man 3?!?
Whoa! Nice graphics! |
PSlugworth |
| ||
Cheep-cheep Level: 32 Posts: 175/189 EXP: 205836 Next: 606 Since: 02-19-07 From: Brooklyn, NY Last post: 5032 days Last view: 2660 days |
...there are graphics in this thread somewhere? ____________________ andrew sylvester dot com | retrogaming @ robot vaudeville |
Kiokuffiib11 |
| ||
Porcupo Level: 40 Posts: 24/313 EXP: 407050 Next: 34259 Since: 07-10-09 From: Marquette, Michigan Last post: 3312 days Last view: 1934 days |
It might be my icon he might be referring to.
Do you happen to know what the pointer to the intro song is? I'm frustrated on this. I've been changing random ones, and I'm not sure how to read ASM too well, and when I try to log it, it doesn't log correctly. Do you have any suggestions for me? ____________________ セシル |
infidelity |
| ||
Fuzz Ball Level: 66 Posts: 122/968 EXP: 2368023 Next: 93828 Since: 05-24-07 Last post: 958 days Last view: 814 days |
can you be more specific as to exactly what your doing, and what you are trying to do? i read your first post, and i just dont know if your trying to find the 2byte pointers in the pointer table, or something else? |
Kiokuffiib11 |
| ||
Porcupo Level: 40 Posts: 25/313 EXP: 407050 Next: 34259 Since: 07-10-09 From: Marquette, Michigan Last post: 3312 days Last view: 1934 days |
I'm trying to set the beginning (intro) song (When you first start the rom), to be the ending song.
I'm not trying to find where you change the notes (Although this will probably be the next step along the way), but, where the rom points to (And you can change the value with a single digit) the song. For example: Here are two pointers: 3cd1c = Pointer for Needleman Music [01] 3cd1d = Pointer for Magnetman Music [02] [00] Title Music [01] Needleman [02] Magnetman [03] Gemini Man [04] Hard Man [05] Top Man [06] Snake Man [07] Spark Man [08] Shadow Man [09] Wily Stage 1-2 [0a] Wily Stage 3-4 [0b] Wily Stage 5-6 [0c] Boss Battle [0d] Wily Battle [0e] Password [0f] Credits [10] Stage Select [11] Protoman's theme [12] Protoman Music [ending] [33] Boss Selected [35] Weapon Get [36] Wily's castle intro Therefore, if I change the value at 3cd1c (Pointer for Needleman Music) from 01 to 05, it will cause Top Man's music to play in Needleman's stage. What I'm aiming to do is find the pointer for the title screen's music (Which the value will be 00). I'd also like to find the pointer for the ending (Which the value would be 12). Thank you sou much for taking a look at this. PS: This is the Nintendo Megaman III (NOT the gameboy one) ____________________ セシル |
infidelity |
| ||
Fuzz Ball Level: 66 Posts: 123/968 EXP: 2368023 Next: 93828 Since: 05-24-07 Last post: 958 days Last view: 814 days |
As I mentioned earlier in this thread, $D9 is the register that holds the current song id.
I'm not that familiar with Megaman 3, there's other people here that have had more hands on experience with this rom. But I did some searching, and found out that the JSR subroutine for loading a sound id into $D9 is "2098F8" or $3F898. Also, $3CD1C - $3CD2D = 8 robot masters, 4 dark robot stages, & Wily 1-4 sound id's. *heh looks like i need to take back my comment on a neat table of sound id's * Anyways, I'll show you a method of finding the title screen sound id. This is going to seem way over your head, but i'm sure you'll do fine. I'm using FCEUXD SP 1.07 as the emu. *you can use any version of FCEU you want, since they all seem to have debugging tools* When you load the rom, open the following windows from the "Tools" section. 6502 Debugger, Trace logger, Hex Editor Now load the rom, and what i want you to do, is freeze the emu, pause it or something, when the screen is gray. "the gray that appears right when you load the rom." When you have the screen frozen at this point, goto the 6502 Debugger, and click the "Add" button. A window will appear called "Add Breakpoint..." In the address box, type in D9, then click the box that says "Write" then click "OK" You should now see the following in the Breakpoint window to the far right of the 6502 Debugger window "$00D9: EC-W--" Now goto the Trace logger, and click the button "Start Logging" Now go back to the 6502 Debugger, and click the button "Run" Now, if you froze the emu at the right spot, the first line of code that should appear in the giant window in the 6502 Debugger is... $FE3A:99 00 00 STA $0000,Y @ $00D9 = #$00 that code has nothing to do with the sound id's, this is just random code for when the rom is intialized. if you see that code, click "Run" one more time, and you should now see this code at the top of the giant window in 6502 Debugger... $F898:85 D9 STA $00D9 = #$00 notice the "85 D9"??? that's the register that holds the current sound id. It says that 00 is being stored into $D9. But where do we find 00??? Now, in the 6502 Debugger window, click the button "Step Into" about 3 or 4 times, it doesnt matter. *this makes it so in Trace Logger, you get a good view of the asm being logged* Now I want you to look at the Trace Logger window. In that window, you should see these 3 lines of code somwhere in the window... $C8E4:A9 00 LDA #$00 A:01 XF Y:08 P:nvUBdizc $C8E6:20 98 F8 JSR $F898 A:00 XF Y:08 P:nvUBdiZc $F898:85 D9 STA $00D9 = #$00 A:00 XF Y:08 P:nvUBdiZc as you can see, we have A900, 2098F8, 85D9. In other words LDA #$00 ;Load 00 JSR $F898 ;JSR to Sound Initialization Routine STA $D9 ;Store 00 into $D9 so, $C8E4 is where it's loading 00 for title screen. So what I want you to do now, is go back to 6502 Debugger window, and scroll through the window, to find the address $C8E4. When you find that address, take the mouse cursor, and place the cursor to the left of the "$". When you do that, a bunch of text will appear at the very bottom of the 6502 Debugger window. You should see the following... CPU Address $C8E4, Offset 0x03C8F4 in file "your roms name" (NL file: F) now, you "should" be able to right click where your mouse cursor is, and the hex editor should take you right to the address $3C8F4. If it doesn't, then goto you hex editor, click "View" then goto "ROM File" and scroll to the address $3C8F4 When you get there, you should see "A900". change the 00 to whatever sound id you want. You can now click the "Stop Logging" button on the Trace Logger window, and close it. Now go back to your 6502 Debugger window, and double clck over the following in the Breakpoint window... "$00D9: EC-W--" after the double click it should now say... "$00D9: -C-W--" what that does is disable the 6502 Debugger from snapping on you during gameplay when a sound id is initiated. Now, click the "Run" button in the 6502 Debugger, and the game should resume. You should still hear the title screen song. This is normal. Even though you changed the id, the new value you put in hasn't been logged. So what you need to do, is reset the rom, when you do so, you should now hear your new sound id for the title screen. OK, i'm done here. You've all been a wonderful audience. Thank you, good night! *crowd cheers.......fades.........gone* |
Kiokuffiib11 |
| ||
Porcupo Level: 40 Posts: 26/313 EXP: 407050 Next: 34259 Since: 07-10-09 From: Marquette, Michigan Last post: 3312 days Last view: 1934 days |
Well, I couldn't get the tracing part to come up to the same spot, however, when I went to 3c8f5 It WAS the right place. Thank you. I'm going to try this a few more times to see if I can't get it by your instructions too.
Thank you SOU much! ____________________ セシル |
Main - ROM Hacking - Megaman III Pointers | New thread | New reply |
© 2005-2023 Acmlm, blackhole89, Xkeeper et al. |
MySQL - queries: 92, rows: 124/124, time: 0.018 seconds. |