Points of Required Attention™
Friendly reminder: Please don't respond to spammers! Their posts inevitably get memory-holed when staff get around to, leaving behind an inexplicable tableau of you shouting at nothing and (if they otherwise would have been alone in a thread) dangling posts and wrong postcounts.
Views: 49,148,541
Main | FAQ | Uploader | IRC chat | Radio | Memberlist | Active users | Latest posts | Calendar | Stats | Online users | Search 11-12-18 08:09 PM
Guest: Register | Login

0 users currently in ROM Hacking | 1 guest | 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

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


Cheep-cheep
Level: 29

Posts: 135/196
EXP: 144059
Next: 3826

Since: 04-27-11

Last post: 1061 days
Last view: 772 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: 50

Posts: 295/588
EXP: 930122
Next: 17195

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

Last post: 44 days
Last view: 11 hours
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: 29

Posts: 137/196
EXP: 144059
Next: 3826

Since: 04-27-11

Last post: 1061 days
Last view: 772 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: 50

Posts: 296/588
EXP: 930122
Next: 17195

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

Last post: 44 days
Last view: 11 hours
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: 24

Posts: 32/113
EXP: 67887
Next: 10238

Since: 02-13-10
From: Texas

Last post: 677 days
Last view: 107 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: 50

Posts: 299/588
EXP: 930122
Next: 17195

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

Last post: 44 days
Last view: 11 hours
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: 29

Posts: 139/196
EXP: 144059
Next: 3826

Since: 04-27-11

Last post: 1061 days
Last view: 772 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: 33

Posts: 208/225
EXP: 219704
Next: 9475

Since: 04-07-07
From: Norway

Last post: 1114 days
Last view: 55 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: 29

Posts: 140/196
EXP: 144059
Next: 3826

Since: 04-27-11

Last post: 1061 days
Last view: 772 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: 33

Posts: 209/225
EXP: 219704
Next: 9475

Since: 04-07-07
From: Norway

Last post: 1114 days
Last view: 55 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: 29

Posts: 141/196
EXP: 144059
Next: 3826

Since: 04-27-11

Last post: 1061 days
Last view: 772 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: 33

Posts: 210/225
EXP: 219704
Next: 9475

Since: 04-07-07
From: Norway

Last post: 1114 days
Last view: 55 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: 29

Posts: 142/196
EXP: 144059
Next: 3826

Since: 04-27-11

Last post: 1061 days
Last view: 772 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: 50

Posts: 300/588
EXP: 930122
Next: 17195

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

Last post: 44 days
Last view: 11 hours
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: 64

Posts: 757/1051
EXP: 2133822
Next: 80275

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

Last post: 47 days
Last view: 47 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: 39

Posts: 50/385
EXP: 380586
Next: 24185

Since: 12-01-11
From: Hungary

Last post: 45 days
Last view: 42 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: 30

Posts: 166/178
EXP: 155318
Next: 10551

Since: 02-26-07

Last post: 225 days
Last view: 150 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: 39

Posts: 52/385
EXP: 380586
Next: 24185

Since: 12-01-11
From: Hungary

Last post: 45 days
Last view: 42 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: 64

Posts: 767/1051
EXP: 2133822
Next: 80275

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

Last post: 47 days
Last view: 47 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: 39

Posts: 58/385
EXP: 380586
Next: 24185

Since: 12-01-11
From: Hungary

Last post: 45 days
Last view: 42 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


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

Acmlmboard 2.1+3δ (2016-01-08)
© 2005-2016 Acmlm, blackhole89, Xkeeper et al.

Page rendered in 0.195 seconds. (347KB of memory used)
MySQL - queries: 106, rows: 147/0, time: 0.152 seconds.