Points of Required Attention™
Please chime in on a proposed restructuring of the ROM hacking sections.
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
Posted on 08-04-09 05:43 PM Link | Quote | ID: 112001


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
Posted on 08-04-09 07:16 PM Link | Quote | ID: 112011


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
Posted on 08-04-09 07:38 PM (rev. 2 of 08-04-09 07:39 PM) Link | Quote | ID: 112014


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
Posted on 08-04-09 08:00 PM Link | Quote | ID: 112015


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
Posted on 08-04-09 08:57 PM (rev. 2 of 08-04-09 09:01 PM) Link | Quote | ID: 112018


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
Posted on 08-04-09 10:59 PM Link | Quote | ID: 112058


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
Posted on 08-06-09 02:06 AM Link | Quote | ID: 112137


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
Posted on 08-06-09 04:18 AM Link | Quote | ID: 112168


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
Posted on 08-06-09 04:29 AM Link | Quote | ID: 112175


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
Posted on 08-06-09 04:39 AM (rev. 2 of 08-06-09 05:03 AM) Link | Quote | ID: 112180


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
Posted on 08-06-09 10:47 PM Link | Quote | ID: 112414


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
Posted on 08-07-09 12:12 AM (rev. 2 of 08-07-09 12:13 AM) Link | Quote | ID: 112430


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

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

Page rendered in 0.026 seconds. (347KB of memory used)
MySQL - queries: 92, rows: 124/124, time: 0.018 seconds.