Points of Required Attention™
Please chime in on a proposed restructuring of the ROM hacking sections.
Views: 88,588,857
Main | FAQ | Uploader | IRC chat | Radio | Memberlist | Active users | Latest posts | Calendar | Stats | Online users | Search 05-15-24 10:25 PM
Guest: Register | Login

Main - Posts by za909

Pages: 1 2 3 4 5 6 7 8 9 10

za909
Posted on 12-29-13 03:20 PM, in General Megaman Hacking Thread Link | Quote | ID: 155314


Cheep-cheep
Level: 32

Posts: 167/196
EXP: 189460
Next: 16982

Since: 04-27-11

Last post: 3072 days
Last view: 2783 days
Oh never mind I found it!
One last thing I think, I want to make Megaman run to the left on the screen a little lower during the Dr. Light Scrapbook part in the ending. This is simply a Y coordinate I presume.

za909
Posted on 12-29-13 06:40 PM, in General Megaman Hacking Thread Link | Quote | ID: 155316


Cheep-cheep
Level: 32

Posts: 168/196
EXP: 189460
Next: 16982

Since: 04-27-11

Last post: 3072 days
Last view: 2783 days
Gotcha that's what I was looking for thank you!

za909
Posted on 01-19-14 10:04 AM, in Capcom Music Engine document + Tutorial Link | Quote | ID: 155485


Cheep-cheep
Level: 32

Posts: 169/196
EXP: 189460
Next: 16982

Since: 04-27-11

Last post: 3072 days
Last view: 2783 days
Hello people! Now that I finally have the process of hacking a music track in the common Capcom sound engine (used in MM3-6) down, I thought I'd throw this together, so if you're interested, you can learn it as well!

Please keep in mind that this requires some experience with Famitracker, as well as general hex editing.

In this document, you can learn everything through a tutorial, which helps you hack the Megaman 4 stage selec music to sound like the Megaman 2 stage select music.

Get the tutorial pack here

za909
Posted on 01-19-14 10:38 PM, in Capcom Music Engine document + Tutorial Link | Quote | ID: 155487


Cheep-cheep
Level: 32

Posts: 170/196
EXP: 189460
Next: 16982

Since: 04-27-11

Last post: 3072 days
Last view: 2783 days
A lot of these can't be perfectly recreated. The Pxx in famitracker is the same as the fine tuning in the capcom engine, the only difference is that Pxx uses a the more common signed 7-bit value, so 80 is the default pitch, 7F is a bit lower, and 81 is a bit higher, than a normal note. The capcom engine has 00 as default

Axy in fami is a slow fade in, or fade out. You can't do this with the capcom engine, as the only way to control the volume of your sound is through instrument settings, or the volume command.

Gxx delays the row it's on by xx video frames. The capcom engine doesn't allow you to do such things, the only thing you can do, is delay something using a short rest, and then making sure you end up with the same lenght as the other channels, at the end, otherwise you'll desync everything.

Famitracker is simply a user-friendlier environment, which also allows you to do basically anything with the sound hardware, where as the Capcom engine was designed to fulfill the needs of the composers back in the day. In famitracker, everything is about frames, and timing, and in the Capcom engine, everything is based around time signatures and note durations.

za909
Posted on 01-22-14 05:53 AM, in Capcom Music Engine document + Tutorial Link | Quote | ID: 155501


Cheep-cheep
Level: 32

Posts: 171/196
EXP: 189460
Next: 16982

Since: 04-27-11

Last post: 3072 days
Last view: 2783 days
It was your documents I learned it from in the first place. The only things I never managed to get were speed related things, like what the exact definition is of 05 xx and how fast the instrument envelopes work (The 5-bit values must be there to add extra "smoothness" by having slower fade times, othwise they would be pointless, since all the volume on hardware level is 4-bit)

I've also been meaning to add a DPCM playback feature to this, using your disassembly of the engine for MM4. Thanks to you I was able to locate the 04 xx bitflags command handler in a hex editor, and NOP-d out all the code, and then tried to replace it with a DPCM channel reset by writing $0F and then $1F to $4015. Nothing was really broken, except the music tracks used the wrong octave sometimes, as the command was not working anymore.
The only thing I really have to figure out now, is how to get around the DPCM glitch corrupting the controller input and/or writes to the PPU, before I start writing a proper sample playing routine. (And also find out how much junk data there is loaded in the $C000-$FFFF area for me to replace it with samples.

But basically the routine would simply check which one of two samples would have to be played, and what pitch to use. Bit 7 being the sample ID, and Bits 3-6 the playback rate. So simple DPCM bass fill-ins are possible!

za909
Posted on 01-22-14 04:52 PM, in Capcom Music Engine document + Tutorial Link | Quote | ID: 155505


Cheep-cheep
Level: 32

Posts: 172/196
EXP: 189460
Next: 16982

Since: 04-27-11

Last post: 3072 days
Last view: 2783 days
I know, and that's really cool! But the thing is, I want to add it to a game that didn't have it originally, and thus, the PPU, and controller reading routines were not designed to deal with the DPCM glitch. And that is what I have to get around somehow.

za909
Posted on 01-22-14 07:36 PM, in Capcom Music Engine document + Tutorial (rev. 3 of 01-22-14 07:42 PM) Link | Quote | ID: 155508


Cheep-cheep
Level: 32

Posts: 173/196
EXP: 189460
Next: 16982

Since: 04-27-11

Last post: 3072 days
Last view: 2783 days
Yes, I want to program a DPCM engine into either Megaman sound engine (probably 3 though because I'm more familiar with how that game works)

And I could do that no problem, by simply overwriting one of the song effect programs and tell it to jump to my own subroutine somewhere else instead, to play a sample. That's the easy part.
The thing is, that all 2A03 processors have a bug, whenever a DPCM sample is played because the CPU goes ahead to do other things while the 8 bits from the currently loaded sample are played, and the sample buffer needs the next 8 bits to play. However, there's some technical thingo with the data bus having low voltage when reading the PPU and the controller ports in a few CPU cycles. And if a read happens to be in these cycles, the data read will get corrupted. (Bits shifted around and all kinds of randomness)

In the first version of Rockman 4 MI, this bug was there, and the cursor in weapon menu could move randomly on its own as a result. Puresabe fixed it afterwards.

za909
Posted on 02-03-14 03:35 PM, in General Megaman Hacking Thread Link | Quote | ID: 155592


Cheep-cheep
Level: 32

Posts: 174/196
EXP: 189460
Next: 16982

Since: 04-27-11

Last post: 3072 days
Last view: 2783 days
Booyah! At long last I made Megaman 3 use DPCM samples!
The engine is a bit glitchy though and doesn't get note durations right for now, hopefully I'll be able to fix that!

MegaDPCM

za909
Posted on 04-11-14 08:32 PM, in General Megaman Hacking Thread (rev. 2 of 04-11-14 08:36 PM) Link | Quote | ID: 156334


Cheep-cheep
Level: 32

Posts: 175/196
EXP: 189460
Next: 16982

Since: 04-27-11

Last post: 3072 days
Last view: 2783 days
Posted by 32x1000
Does anybody else want to compose the music for the hack?


If the offer is still relevant, I'd like to say yes! These days I'm much more into music, than any other part of a game. That is if I can get some documents about the music format, but that shouldn't be that difficult to figure out, thanks to my experience with the MM3 engine.

One thing you should note though, is that my music isn't much like Megaman music, anyway, here's some examples I'm planning to use in my own hack eventually. (With DPCM samples hacked in)
NSF

za909
Posted on 09-13-14 08:58 PM, in General Megaman Hacking Thread (rev. 2 of 09-14-14 10:37 AM) Link | Quote | ID: 158368


Cheep-cheep
Level: 32

Posts: 176/196
EXP: 189460
Next: 16982

Since: 04-27-11

Last post: 3072 days
Last view: 2783 days
Posted by kuja killer
yea most of it is just before every level's level data.

like level data is A10-200F for about 20 something levels right ??

A10-200F: needle, 2A10-400F: magnet, 4A10-600F: gemini, etc etc

well the rest of the A00 bytes before that contain misc stuff like mid bosses and boss fight AI, but not all of it used used, just filled with tons of random numbers. NOT code...not data... just random garbage that can be used for whatever you want to do.

theres some of that spread around in other places too like around 3F300 to 3F600 or something


There's an old disassembly for Megaman 3 made by a person associated with Color Dreams.
All the unused stuff is marked in these. I used the garbage data in the last bank to add DPCM samples to the music engine, it's pretty useful! Source website

I also have a question. I've examined the RAM during gameplay, and $07E0-$07FF seem to be completely unused, is that right? It would be really handy for custom code later on!



za909
Posted on 09-18-14 08:30 PM, in General Megaman Hacking Thread Link | Quote | ID: 158435


Cheep-cheep
Level: 32

Posts: 177/196
EXP: 189460
Next: 16982

Since: 04-27-11

Last post: 3072 days
Last view: 2783 days
The newest FCEUX debugger should tell you the address, where the current instruction is found at in the ROM, at the bottom of its screen.

za909
Posted on 11-12-14 10:01 PM, in General Megaman Hacking Thread Link | Quote | ID: 158971


Cheep-cheep
Level: 32

Posts: 178/196
EXP: 189460
Next: 16982

Since: 04-27-11

Last post: 3072 days
Last view: 2783 days
Hey people! For a while I've been doing some other things, but decided to come back to ROM hacking one more time!
Just like before I'm using Megaman 3, it's the one I know the most about, and having educated myself on the subject of 6502 asm, I'm really looking forward to this!
So far I've added a DPCM player to the music engine, a song from the game you can listen to Here
All the music will be my own original songs.
And I made one of Puresabe's simple hacks compatible with the US version, one that lets you jump from a slide and keep your sliding velocity, which works very much like the dash in the MMX series.
There's also a couple screenshots, since I'm absolute shit at graphics, I'm taking them from various Capcom titles.

za909
Posted on 12-17-14 07:10 PM, in Mega Man Crimson - a Mega Man 3 hack with Improvement 2.1! Link | Quote | ID: 159134


Cheep-cheep
Level: 32

Posts: 179/196
EXP: 189460
Next: 16982

Since: 04-27-11

Last post: 3072 days
Last view: 2783 days
This is looking really great, but don't tell me you're not good at doing graphics, everything I've seen from you so far whether it's NES or Gameboy, was absolute eye-candy.
Like I said a long time ago, I'm always available if there's some help needed with the music. (Though if I'm told to compose my own tracks, it's to be expected that they won't sound too Megaman-like)

I've learned how to program the NES, but hacking can sometimes prove to be of much greater difficulty, as you have to insert your own pieces of code into a working system.
(I believe there's a pointer table for all the enemy and boss AI, don't know where it is though)
There's a ton of junk data in the MM3 ROM, so it's not nearly as tedious to add stuff. If it's not like adding an entirely new game mechanic, you can probably get away with it without having to expand the PRG ROM to the 512kB limit of the MMC3.

You can listen to my hack music alpha .nsf (made with Famitracker)
Some of these are already in my hack.

za909
Posted on 01-02-15 02:00 AM, in Rockman 3 Hacking Question. Link | Quote | ID: 159238


Cheep-cheep
Level: 32

Posts: 180/196
EXP: 189460
Next: 16982

Since: 04-27-11

Last post: 3072 days
Last view: 2783 days
Yeah, I found them by looking at the RAM $0200-$02FF is where the sprite locations on the screen are stored and I searched for the same stuff in the ROM to find them. It's format is always Y position; Tile ID; Mirroring & Palette number; X position

za909
Posted on 01-05-15 07:51 AM, in General Megaman Hacking Thread Link | Quote | ID: 159275


Cheep-cheep
Level: 32

Posts: 181/196
EXP: 189460
Next: 16982

Since: 04-27-11

Last post: 3072 days
Last view: 2783 days
Posted by za909

There's an old disassembly for Megaman 3 made by a person associated with Color Dreams.
All the unused stuff is marked in these. I used the garbage data in the last bank to add DPCM samples to the music engine, it's pretty useful! Source website

I also have a question. I've examined the RAM during gameplay, and $07E0-$07FF seem to be completely unused, is that right? It would be really handy for custom code later on!


I think this might prove to be useful to you Zieldak! It's certainly done a lot for me whenever I had to re-route something. Generally speaking, if there's a JSR to an address higher than $C000 it's a common function, since $C000-$FFFF is fixed to the last two banks of the PRG ROM, so routines with parts that have to be available at any time must sit here. For example, to play a sound effect, it jsr-s to $F... something (can't remember off the top of my head) with the sound ID in the A register. The code switches $8000-$BFFF to the right sound engine banks, and then jsr-s to $8000 and lets the engine do the rest. Once it's done initiating the sound effect, it returns, puts back the old banks to $8000-$BFFF and things move on.

za909
Posted on 04-21-15 10:02 PM, in General Megaman Hacking Thread Link | Quote | ID: 159978


Cheep-cheep
Level: 32

Posts: 182/196
EXP: 189460
Next: 16982

Since: 04-27-11

Last post: 3072 days
Last view: 2783 days
Hey it's been a long time, but I need to ask if anyone knows if there is a MMC5 mapper conversion of the US Megaman 3 out there. If not, then I'll try my hand at it, as I have found, a relatively small number of registers have to be changed around, and initializing the mapper would be no problem with extended space as the game would start by loading the last banks with my original code.

I've also been looking into finding all the RAM space the original sound engine uses to try and completely replace it with my own engine I made from scratch for another project in ASM6.
From what I can tell it uses some of the zero page ($0000-$00FF) and page 7 ($0700-$07FF).

za909
Posted on 05-10-15 12:08 PM, in Mega Man Crimson - a Mega Man 3 hack with Improvement 2.1! Link | Quote | ID: 160075


Cheep-cheep
Level: 32

Posts: 183/196
EXP: 189460
Next: 16982

Since: 04-27-11

Last post: 3072 days
Last view: 2783 days
It's amazing to see these fresh and new graphics, are they completely made from scratch?
I'm still willing to help with the music, you just need to ask. If you haven't touched the junk data at the end, it's even possible to get a few DPCM drums in there, best choice imo would be the ones you can hear in the Bucky o' Hare soundtrack (and Lagrange Point) because those fit the available size perfectly.
Or ultimately, if I know which parts of the RAM are dedicated to the sound engine I can throw it all away and put my own in there, which does a lot of things you never hear in Capcom games (Duty modulation, arpeggio chords, DPCM samples)
I would post an example of what it does here but it's a ROM file and I'm not sure if it's fine to post those even if I made everything in them.

za909
Posted on 05-20-15 01:17 PM, in I'm having a problem writing PPU tiles to SMB2's titlescreen Link | Quote | ID: 160130


Cheep-cheep
Level: 32

Posts: 184/196
EXP: 189460
Next: 16982

Since: 04-27-11

Last post: 3072 days
Last view: 2783 days
Is your code running during VBlank? If not, then your code will disturb the PPU as it's rendering (outputting the picture to the screen) and during that process it has to use the $2006 and $2005 registers (maybe even others) along with its internals to fetch pixel data from tiles and output them to the screen. If you want to write something to the PPU outside of VBlank you have to turn the rendering off in $2002, but if you do that for too long, parts of the screen might be missing.

Most games have a tile buffer in RAM to prepare which tiles have to be updated during VBlank, so the code during VBlank only has to copy-paste the data to $2007, as VBlank time is very short.(~2200-2300 cycles, DPCM samples playing can steal a maximum of around 150)

za909
Posted on 05-20-15 04:49 PM, in I'm having a problem writing PPU tiles to SMB2's titlescreen Link | Quote | ID: 160133


Cheep-cheep
Level: 32

Posts: 185/196
EXP: 189460
Next: 16982

Since: 04-27-11

Last post: 3072 days
Last view: 2783 days
If it's just a simple update of a few tiles on the screen, and it only has to execute once, I guess you can put your code in between these:

lda #$00
sta $2002 ; turn off rendering

;... this is where you do your update

lda #$1E ; this value might not be what your game uses
sta $2002
;... more stuff...

This might even avoid the black screen for a frame. You could get a few scanlines of blackness though if your update takes more than 113-114 CPU cycles. (that's how many pass during the processing of every horizontal pixel line by the PPU)
Here, you can see how many CPU cycles each instruction takes based on the addressing mode, and other conditions
But ultimately, I don't think anyone's going to care about a single glitchy frame.

za909
Posted on 05-20-15 08:21 PM, in I'm having a problem writing PPU tiles to SMB2's titlescreen Link | Quote | ID: 160135


Cheep-cheep
Level: 32

Posts: 186/196
EXP: 189460
Next: 16982

Since: 04-27-11

Last post: 3072 days
Last view: 2783 days
Oh, if you are waiting for VBlank with a loop looking at the VBlank flag, you might have a problem because the NMI triggers, which then eats up all the VBlank time to do its thing, and by the time it returns to your code, you could be past VBlank again. But that's just some speculation on my part.
Waiting to see if it works
Pages: 1 2 3 4 5 6 7 8 9 10


Main - Posts by za909

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

Page rendered in 1.253 seconds. (331KB of memory used)
MySQL - queries: 130, rows: 162/162, time: 1.238 seconds.