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

0 users currently in ROM Hacking | 2 guests | 1 bot

Main - ROM Hacking - General Megaman Hacking Thread New thread | New reply

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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

za909
Posted on 08-19-12 01:19 PM Link | Quote | ID: 152096


Cheep-cheep
Level: 32

Posts: 135/196
EXP: 189057
Next: 17385

Since: 04-27-11

Last post: 3052 days
Last view: 2763 days
Oh so it's the same as that. Thank you! And so I suppose bullets and stuff like that come after, which only show up as megaman sprites in the editor.

kuja killer
Posted on 08-19-12 03:24 PM Link | Quote | ID: 152098


Level: 55

Posts: 295/628
EXP: 1243797
Next: 70392

Since: 03-20-07
From: Lake Havasu City, Arizona

Last post: 281 days
Last view: 6 days
objects like bullets, projectiles, anything enemies actually shoot and throw and whatever, or anything changes once an enemy has appeared... no.

The only way to change THOSE...are in those enemies actual own AI code.
That 210-30F table is just basically the "default" for when they first spawn on the screen for the first time.

za909
Posted on 08-25-12 02:43 PM Link | Quote | ID: 152167


Cheep-cheep
Level: 32

Posts: 137/196
EXP: 189057
Next: 17385

Since: 04-27-11

Last post: 3052 days
Last view: 2763 days
Is this possible?
Now this is just me thinking what I'd like to attempt in the future, and seeing how only Rockman 4 MI was the only hack to do it, it might be a very difficult thing to do (even though it doesn't seem like it) but once I get familiar with 6502 asm, I might try to modify the sound engine to allow DPCM samples (just two very short and basic drums would take less than $1FF bytes).
I guess it's possible to move all the pointer and instrument tables in the sound engine to squeeze in the samples to the right place in PRG-ROM.

Based on this documentation it would be really easy to set this up, I'd just have to make a fifth similar "channel data checking" routine that handles the data similarly to the other 4 channels.

The DMC channel, commonly referred to as the 'PCM' channel, uses two
methods of digital audio playback: DMA and RAW.

The DMA method is most commonly used. The steps for playback are as
follows:

1) Set $4012 (DMC Address Register) to the 64-byte aligned offset
within PRG-ROM $C000-FFFF. For instance, if $8E is written here,
the sample data will be loaded from ($8E*64)+C000, or $E380.
2) Set $4013 (DMC Length Register) to the length of the sample data.
The sample length is defined as (16*x)+1, where x is the value
written.
3) Set $4010 (DMC Frequency Register) to whatever 4-bit frequency
you desire.
4) Set Bit #4 of $4015 (Channel Control) to 1, enabling the DMC
channel.


This looks like I could very easily LDA & STA the correct values to these registers. Could it be that easy?

kuja killer
Posted on 08-26-12 08:56 PM (rev. 2 of 08-26-12 08:57 PM) Link | Quote | ID: 152177


Level: 55

Posts: 296/628
EXP: 1243797
Next: 70392

Since: 03-20-07
From: Lake Havasu City, Arizona

Last post: 281 days
Last view: 6 days
Really wish i knew za909... but my lack of anything-music.

but... i want to share something with everyone.

http://acmlm.kafuka.org/uploader/get.php?id=4298
If anyone in the near future plans on making a new Rockman 5 hack, take this patch if you want. I expanded, and converted the entire Rockman 5 ROM, to the MMC5 mapper within less than 6 hours.

It expands the ROM to 1 MB, and enables battery-backed SaveRAM.
Which means, double the amount of programming, and graphics space.

The IPS patch is all setup and ready to go for any new rockman 5 hacks in the future.
megaman 5 has not been tested, im not sure if it'll work on Megaman 5 roms.

NARFNra
Posted on 08-27-12 04:50 AM Link | Quote | ID: 152182


Koopa
Level: 25

Posts: 32/114
EXP: 87644
Next: 1976

Since: 02-13-10
From: Texas

Last post: 1805 days
Last view: 1805 days
Posted by kuja killer
Really wish i knew za909... but my lack of anything-music.

but... i want to share something with everyone.

http://acmlm.kafuka.org/uploader/get.php?id=4298
If anyone in the near future plans on making a new Rockman 5 hack, take this patch if you want. I expanded, and converted the entire Rockman 5 ROM, to the MMC5 mapper within less than 6 hours.

It expands the ROM to 1 MB, and enables battery-backed SaveRAM.
Which means, double the amount of programming, and graphics space.

The IPS patch is all setup and ready to go for any new rockman 5 hacks in the future.
megaman 5 has not been tested, im not sure if it'll work on Megaman 5 roms.


W-woah... I may have to look into Rockman 5 hacking in the future, gosh, I plan to do another one after Memento... Thank you so much!

So when you say double the graphics space, how would one be able to access that?

kuja killer
Posted on 08-27-12 05:04 AM Link | Quote | ID: 152186


Level: 55

Posts: 299/628
EXP: 1243797
Next: 70392

Since: 03-20-07
From: Lake Havasu City, Arizona

Last post: 281 days
Last view: 6 days
Mentioned in the readme.

Graphics now start at 80,010 hex.
80010 to BFFFF is normal background tiles graphics.
C0010 to FFFFF is sprites graphics.

BG is only allowed to go in 80010 ~ ~
Sprites only allowed to in C0010 ~ ~

za909
Posted on 08-27-12 05:10 AM (rev. 3 of 08-27-12 05:13 AM) Link | Quote | ID: 152187


Cheep-cheep
Level: 32

Posts: 139/196
EXP: 189057
Next: 17385

Since: 04-27-11

Last post: 3052 days
Last view: 2763 days
Actually what I asked was stupid from the get-go. Since none of the sound banks are loaded to $C000-$FFFF I could not address the samples with the DMC register, so I'd have to swap everything to load normal stuff to $8000-$BFFF and read from here and I have no idea how to do that now.

Matrixz
Posted on 08-28-12 09:17 PM Link | Quote | ID: 152198


Ninji
Level: 35

Posts: 208/225
EXP: 266357
Next: 13579

Since: 04-07-07
From: Norway

Last post: 3105 days
Last view: 1783 days
Posted by za909
Actually what I asked was stupid from the get-go. Since none of the sound banks are loaded to $C000-$FFFF I could not address the samples with the DMC register, so I'd have to swap everything to load normal stuff to $8000-$BFFF and read from here and I have no idea how to do that now.

If you have enough space in the last $4000-byte bank of the PRG-ROM, you could place them there and play them back. That bank is always placed in memory $C000-$FFFF. DPCM samples must actually be in a bank which is not swapped until its finished playing.. because the NES CPU goes back to do other things, but at certain intervals, reads more data from the sample as its being played.

About the registers, you only need to write the correct data to registers $4010-$4013 and $4015. The NES will play back the sample on its own. Its that simple.

za909
Posted on 08-29-12 12:49 AM (rev. 5 of 08-29-12 12:56 AM) Link | Quote | ID: 152199


Cheep-cheep
Level: 32

Posts: 140/196
EXP: 189057
Next: 17385

Since: 04-27-11

Last post: 3052 days
Last view: 2763 days
Well yeah, that's why I'd only put samples in the same bank as the sound engine or duplicate them and have them in both of the other two sound banks. I'd be more than willing to sacrifice song data space for the engine code and just $1B2 bytes of samples. But unfortunately none of them are loaded in the $C000-$FFFF range and I suppose the actual game stuff uses that, that's why I said I'd have to edit every single instruction that reads from PRG-ROM and swap the "workspace" for the game program and the music banks. Or maybe there's a bank in the correct range that's always loaded?

Matrixz
Posted on 08-29-12 07:58 PM Link | Quote | ID: 152206


Ninji
Level: 35

Posts: 209/225
EXP: 266357
Next: 13579

Since: 04-07-07
From: Norway

Last post: 3105 days
Last view: 1783 days
Yes, the last bank of the ROM is always loaded into $C000-$FFFF. For the Mega Man 3 rom, it's the one at $3C010 to $4000F. What i meant in my previous post is.. if you can locate any free space there, you can use it for DPCM samples. I don't know about MM3, but i know Megaman 4 has lots of continous, unused space in the same kind of location of the ROM.

za909
Posted on 08-29-12 11:17 PM (rev. 3 of 08-31-12 01:08 PM) Link | Quote | ID: 152208


Cheep-cheep
Level: 32

Posts: 141/196
EXP: 189057
Next: 17385

Since: 04-27-11

Last post: 3052 days
Last view: 2763 days
Alright, well my idea is to play back a TAS run with the trace logger on to see which parts are unused because there aren't any fields of $00s so if anything, it's unused junk data (I don't have any kind of disassembly for the game) But I'm not sure if that stuff is the same in the Rockman 3 version too.

EDIT: Yes, according to THIS, there's $261 bytes of unused junk at $3F32E - $3F58F ($F31E - $F57F in RAM) and that's even a bit more than I need for my samples, so it's just a matter of diving into asm a bit more, thanks for helping me out! Actually, once my sample finished playing, can I play the next one (whether it's the same or the other one) by simply updating the register values, or do I need to disable the channel and re-enable it?

Matrixz
Posted on 09-03-12 03:05 PM Link | Quote | ID: 152272


Ninji
Level: 35

Posts: 210/225
EXP: 266357
Next: 13579

Since: 04-07-07
From: Norway

Last post: 3105 days
Last view: 1783 days
When you start playing a new sample, you need to enable its bit by writing to $4015. Actually, if you want to cancel a playing sample and start a new one, you first disable the bit in $4015, then update registers $4010-$4013, and then enable the bit again through $4015.


za909
Posted on 09-04-12 09:25 PM Link | Quote | ID: 152282


Cheep-cheep
Level: 32

Posts: 142/196
EXP: 189057
Next: 17385

Since: 04-27-11

Last post: 3052 days
Last view: 2763 days
I'm terribly sorry for turning this topic into a programming board and for constantly asking stupid little things.
I won't have enough time to rewrite everything, I'm just thinking, if this is the right way to start, built into the engine later of course. According to the disassembly, $F2 and $F3 in RAM tells which bank was swapped to $8000-$9FFF and $A000-$BFFF by the MMC3 but it's never read. Kuja killer if you could confirm that, and maybe tell me if there are any more unused zero page offsets, it would help a lot.

Kick drum: 
_SAMPLE: PHP
CLC
CLV
LDA $0F ;Reset DMC channel
STA $4015
LDA ... ;this will load either 1 or 2 from channel data
LDX #$01 ;identify whether the sample to be played is kick or snare
STX $F3
CMP $F3
BNE _DMCKICK
BEQ _DMCSNARE
PLP ;invalid sample ids do nothing
RTS
_DMCKICK: LDA #$CD ;set DMC registers
STA $4012
LDA #$08
STA $4013
LDA #$0F
STA $4010
LDA #$1F
STA $4015
LDA #$3C ;set DMC volume to cause konami like click in the sample
STA $4011
PLP
RTS





kuja killer
Posted on 09-04-12 10:57 PM (rev. 2 of 09-04-12 11:00 PM) Link | Quote | ID: 152283


Level: 55

Posts: 300/628
EXP: 1243797
Next: 70392

Since: 03-20-07
From: Lake Havasu City, Arizona

Last post: 281 days
Last view: 6 days
I really wish I actually had a RAM Map document for mm3, but I don't.

I do... but it's only Odyssey. And soooo so so much is drastically different compared to an mm3 rom. That very little is left of it.

But... yes, F2 and F3 is unused and can be used for whatever you want.
In my RAM notes for odyssey, i used F2 and F3 as apart of my custom "game time/play time" counters, not mmc3 stuff.

So you can use those.
Other unused RAM slots:
5B, 5C, 63, 68, 6C, 74, 7E and others.

Just a warning one more time, this is based on Odyssey, not un-modified mm3. So if any of those happen to actually be used, take caution.

Im not going to spend a long time searching the rom myself trying to see if they are all "maybe" used somewhere.
-------------------
Also about F2 and F3, make sure to delete any traces of those that existed originally in the rom. it should only be in the bankswap routine somewhere near the very end of the rom only. Just replace those STA $F2 and F3's with "NOP" ... hex code EA

Insectduel
Posted on 09-07-12 05:15 PM (rev. 3 of 09-07-12 05:17 PM) Link | Quote | ID: 152326


Hammer Brother
Level: 68

Posts: 757/1069
EXP: 2687589
Next: 41211

Since: 02-16-08
From: Insectduel's office

Last post: 1256 days
Last view: 1255 days
I never thought Yosaku was active again with his continued project! I just checked Rockman 4 STH today!

Also for Mega Man IV fans, you guys ever want to code a feature like Fast Scrolling, Haikei, and Effect Enemy EX in your Mega Man IV game, you just ask me and I'll insert it by hand with the .ASM file free of charge. It depends how much space you have in your MM4 rom. I'll be forking these 2 codes except Haikei which is broken into RHDN.

And, I think Rockman 1 needs more features in level header banks like visine such as changing graphics in doors open and close because Rock n' roll don't have that or even set door GFX positions! Last time in my MM1 project, I got Bombman stage door GFX positioned like other stages instead of upwards.

Zieldak
Posted on 09-26-12 09:26 PM (rev. 2 of 09-26-12 10:10 PM) Link | Quote | ID: 152483


Crow
Level: 42

Posts: 50/387
EXP: 512350
Next: 9012

Since: 12-01-11
From: Hungary

Last post: 1310 days
Last view: 1201 days
I'm asking for a little help, huh.

I think some of you read in the MMR Progress Thread, I want to make the boss halls shorter before the boss rooms, like in MM2-10 and in other games. I have a small problem with it. I shortened the scroll data by 2 rooms for every levels and replaced the doors to be on the next screen after the first door. (except Elec Man's and Bomb Man's doors.) When I die at a boss, and go back to the end checkpoint, for some reasons, the scrolling will be like the original, it will go forward for 3 screens then it scrolls to an empty boss room, but it should be only 1 room with an openable door and after it, the boss room.

Any advice, information or help on fixing it?

NetSplit
Posted on 09-27-12 06:30 AM Link | Quote | ID: 152492


Level: 32

Posts: 166/178
EXP: 188019
Next: 18423

Since: 02-26-07

Last post: 2216 days
Last view: 2141 days
Zieldak: Like I just posted in Googie's thread, you have to keep your checkpoint data synced up with your changes to scrolling and enemy data. This is covered in this post. It sounds like you just shortened the 3 screen corridor to 1 screen, but because you didn't change the table at $15422 that contains the last screen in the corridor, the game will ignore that change when starting at the checkpoint in that corridor. Either update that table or change $150F7 to 4CF690 in order to ignore that table entirely and use a correct value that is automatically calculated, instead. Depending on what all you've changed, you might have to do more than just adjust that table, but this will probably get you at least part of the way there. If it's a bug that happens only after you've started at a checkpoint, you almost certainly need to change one of the checkpoint tables.

Zieldak
Posted on 09-27-12 07:24 PM Link | Quote | ID: 152497


Crow
Level: 42

Posts: 52/387
EXP: 512350
Next: 9012

Since: 12-01-11
From: Hungary

Last post: 1310 days
Last view: 1201 days
Thanks NetSplit, I forgot about those notes.
And... I can't beleive this. Everything what I should have done is changing 4 freaking bytes in the data to make it work! It isn't even hard, is it? It seems I still have to learn a lot, huh.
Everything is fully functioning as it should, thanks again!

Insectduel
Posted on 09-29-12 05:46 PM Link | Quote | ID: 152537


Hammer Brother
Level: 68

Posts: 767/1069
EXP: 2687589
Next: 41211

Since: 02-16-08
From: Insectduel's office

Last post: 1256 days
Last view: 1255 days
I need to ask something about Mega Man / Rockman 1.

I created an ASM boss rush stage of Wily 4 and the coding is switched into a free slot than the original slot so I can fit the screen number, and boss numbers in one (or maybe) two levels.

How do special objects work and I'm talking about 01. Whenever I defeat the rematch boss, the 01 special block won't clear and stays solid. Can you tell me what the problem is!

Zieldak
Posted on 09-29-12 07:52 PM Link | Quote | ID: 152545


Crow
Level: 42

Posts: 58/387
EXP: 512350
Next: 9012

Since: 12-01-11
From: Hungary

Last post: 1310 days
Last view: 1201 days
That happened for me too once when I started hacking. I deleted the lift from the stage and that caused it. But replacing it didn't fix the problem.
I don't know how to fix it. Maybe NetSplit can say something about it.
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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86


Main - ROM Hacking - General Megaman Hacking Thread New thread | New reply

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

Page rendered in 0.048 seconds. (346KB of memory used)
MySQL - queries: 107, rows: 147/147, time: 0.038 seconds.