News: 11 March 2016 - Forum Rules, Mobile Version
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - darkmoon2321

Pages: [1] 2 3
Personal Projects / Re: Deadpool (Nes Hack)
« on: February 28, 2018, 10:36:24 pm »
I am working on a couple of Ninja Gaiden hacks myself, and I wonder if your team would be willing to share or publish some knowledge you seem to have figured out.
1) Fixing Ryu's hitbox for collision. This is an old frustration with the game that I would love to fix as well.
2) Changing the music. In the video, I recognize the classic NG songs with slight alterations (note changes and pitch shifting of the drums). Could your team make a tutorial (or just publish your notes) about the music engine? I have gotten as far as finding and manipulating the drum sequence data.
3) Implementing SRAM save. How does this work?
4) Custom cut-scenes. More specifically, I would like to compose my own cut-scenes that splice images from all cut-scenes in the game. I don't know if you guys have done that, or if you have overhauled the cut-scenes so much that you have not had to alter their sequence.
5) Changing player sprites in-game, like the tag-team feature in Castlevania 3. I don't see how you have the space to put the sprites for multiple players in, but this would be a cool feature to play with.

Thank you for any help you are willing to offer. Keep up the good work!

1. Yeah, the collision detection in the original was pretty bad.  I kind of want to wait until after the release before I post up the code I did, but if you are interested in trying to do the fix yourself, I can tell you exactly where to find the code for it.  Hit detection for Ryu hitting enemies with his sword is located at x1DEDF.  Hit detection for enemies hitting Ryu is located at x1E154.  I've already posted a huge list of such locations on Data Crystal, in the ROM map and RAM map:
2. Retroslam or Dr. Floppy could help more there.  I do know more or less how it works, but I've never actually tried to compose anything other than a machine gun sound effect.
3. SRAM turned out to be fairly simple, really.  A couple changes to the iNES header to indicate the presence of battery backed save data, writing a few important bytes to PRG-RAM every time a level is loaded or re-loaded after death, then adding a hook in the cut-scene code to check if the player presses select instead of start during the first cut-scene in order to load saved data.  Only a few values really needed to be saved, the most important of which is the current stage ($6D).  I also stored score ($60/61), lives ($76), and ninja power/ammo ($64), and a bunch of things that were specific to our hack but that aren't part of NG (difficulty settings, total time, deaths, # of powerups obtained).  I also added a checksum/sanity check to make sure that you could not load a game without a pre-existing save.
4. I've got a pretty solid understanding of how the cut-scenes work, but I've only had to make relatively minor changes to the scenes since the other team members had done a pretty good job with it before I figured it all out.  I did make a tool that could interpret the scene scripting to a read-able form, but I never made one to re-insert, since I found it easier just to do it myself.  Here is an example of the script output:
Obviously, the text and palettes are going to look different from the original, but most of the rest is the same.
5. We've changed the mapper from MMC1 to MMC3, which allows us to swap out sprite CHR in x400 byte chunks instead of x1000.  That's how we added some of the extra attack animations, and allowed for different costumes for Deadpool that are independent of the type of monsters in the level.  Now, if you are talking about adding 2P mode where both players are on-screen at once, that would require either having the second player use the same set of sprites, or using the MMC5 mapper which gives you twice as much space for 8x16 sprites.

Personal Projects / Re: Deadpool (Nes Hack)
« on: January 27, 2018, 08:25:31 am »
One big question that I ask way more then I'm willing to admit, will this game have a save feature? You were talking about porting it to other platforms so you are obviously skilled in the engine, making this more of a possibility.

I hadn't really considered it much before, but that does seem like a pretty good idea.  The more experienced beta testers can get through the game in like 1.5 hours, but first-timers take a lot longer.  I did my first full play-through a couple months ago and took almost five hours, and we've added a new stage and boss since then.  It shouldn't be that hard to add, it would only take about 14 bytes or so to return you to a similar state at the start of your current level.

Edit: Just added SRAM saving.  Nothing fancy, but you can resume your last game by pressing select at the title screen instead of start.

Gaming Discussion / Re: NESMaker
« on: January 17, 2018, 08:34:38 am »
I saw this project a couple days ago.  From what I understand, they basically constructed the engine for a homebrew game, and they are providing a set of tools needed to create content for it (aka hack it).  From a romhacker's perspective, it is similar in ease/difficulty to making content for any NES game that already has had a set of good tools created for it.  The main advantage is that they freely allow you to use, edit, and possibly distribute that content.  I actually didn't see any mention of distribution, so I'm not sure about that last bit.  They only mentioned playing the game that you created yourself, not allowing others to play it too.  The quality of the tools and legal right to distribute your created content will determine how big of an impact this will end up having on the homebrew scene.  There is also a bit of a risk that the homebrew scene will get flooded with low effort productions.  I'm sure there will also be some good ones too though.

Personal Projects / Re: Deadpool (Nes Hack)
« on: January 16, 2018, 10:13:08 pm »
Definitely this year.  We've been avoiding giving a specific release date, but based on what we have already done and how much is left, I can say at least that much.  Some on the team are looking at around the time Deadpool 2 comes out (May 18th now since it got moved up 2 weeks).  Personally I'd prefer earlier than that to avoid any conflict.  The most significant remaining changes to gameplay should be completed by the end of this month.  How long it takes after that likely depends on just how much more we customize the cut-scenes.  The edits we have made to the scenes so far have been mostly sprite, text, and palette edits, only occasionally changing the image layouts/tilemaps and scripting.  So you can still make out the bare bones of Ninja Gaiden in the cut-scenes if you are familiar with the original.  We are capable of doing better, but that still requires writing some more tools.  I've deciphered most of the cut-scene scripting, as well as the format for sprite and background image layouts.  The challenge for me is writing a utility that presents the information in an easy to understand and edit way, and also accounting for all the quirks.

Personal Projects / Re: Deadpool (Nes Hack)
« on: December 09, 2017, 11:45:50 am »
Doesn't look too bad honestly.  Is it suppose to represent some sort of gelatinous substance?  Haven't been following up on this project lately so I'm behind on everything :)

We wanted to create the atmosphere of a level that was alien and alive.  As for being able to see the boundaries of the tiles, I think I figured it out.  Certain tiles had vertical lines right on the edge, that were moved to the opposite side when I shifted the pixels in YY-CHR.  That made it really easy to see where the divisions were.  Also, tiles with blank space on the corners looked a lot better than the ones that filled the whole tile, so I rounded out some of the corners and it is looking better.

Personal Projects / Re: Deadpool (Nes Hack)
« on: December 08, 2017, 02:43:44 pm »
I've been working on an animation for the background in the Lair stage, and I would like to get some opinions on it:

When viewed on a small screen or at first glance, it seems to look good.  My main issue is that when viewed on a larger screen, the boundaries of the 16x16 tile sizes I used to draw it become readily apparent.  There are only three distinct frames of animation, although they cycle in order 1-2-3-2-1-2-3 rather than the usual 1-2-3-1-2-3.  I can add more frames of animation, although I don't think that will solve the problem.  I might be able to have it look a little better by only having specific arrangements of tiles that can occur next to each other, although I'm afraid that might make the background look repetitive.  Any opinions or advice would be appreciated.

Personal Projects / Re: Deadpool (Nes Hack)
« on: November 07, 2017, 11:23:06 am »

Can you guys make those fetuses in the last scene moves?

That animated graphics page is shared between two different stages, but there is enough room to animate the fetuses.  One of the other team members suggested that too, so it should happen sooner or later.  Currently I'm working on moving around the level data in the ROM to allow for a few more stages.  We're planning on adding an optional tutorial stage to help new players learn the ropes.

I have some ideas for ROM hacks mainly some improvements for games. For Ninja gaiden and Ninja gaiden 2 make it so that the enemies don't respawn so quickly or make them stay dead once you kill them. Also make it so that if you die to the final bosses of all the Ninja Gaidens you would start back in the third area of the last stages rather then starting back at the beginning of the final stages.

I've actually already done both of those things for NG1 as part of the Deadpool hack I'm helping with.  That hack is enormous though, and is still at least a few months away from completion.  I suppose if there is interest I could extract those changes and make a separate improvement patch for NG1.

Newcomer's Board / Re: Need help submitting nes rom hack
« on: October 11, 2017, 06:13:42 pm »
The file needs to be compressed to one of the accepted file types. I use 7zip (.7z).

ROM Hacking Discussion / Re: Zelda 2 FDS Translation
« on: October 09, 2017, 07:45:02 pm »
The checksum checking of BPS is a problem for the reason KingMike mentioned - though incidentally my patch deletes the save data, and I hope others making patches will do the same as it's probably appreciated by people who want a nice clean file. How about Xdelta? I've not used it, would it yield a better result in my case? Do you have to manually say where the extra bytes are or can it just figure it out by itself?

I use the utility here as a frontend for xdelta:

You can select whether or not to add a checksum when you create the patch.  As long as you disable the checksum you should be good.  It can figure out where the bytes are by itself.

ROM Hacking Discussion / Re: Zelda 2 FDS Translation
« on: October 09, 2017, 02:51:12 pm »
Sorry if I'm derailing the thread here, but can anyone explain to me the benefit of any patching programs besides Lunar IPS - or patch formats besides IPS? The size of the files is so minuscule that that's clearly not a problem, so what's better about the others? The only thing I know is that BPS files will throw an error if the checksum doesn't match, which is nice, but not that big of a deal.

Given the IPS format is so damn simple - go to this part, put this many bytes in, here are the bytes, lather rinse repeat - I don't see why there's a need to change it. Sure, when you get to something above 16-bit, it might need to be more sophisticated (it supports 24-bit addresses, so I guess any file above 16MB is a problem), but for most of the hacking that goes on here, it seems perfectly satisfactory.

If I need to make an IPS patch, I pretty much only use Lunar IPS.  It's simple and I know it works.  But for larger hacks, typically those that involve expanding the ROM, moving large chunks of data, or editing compressed data, it's better to use a patch format that can handle data insertion.  For instance, if you insert a single byte into a long string, IPS will see every byte after the initial change as being different and will include the data in the patch.  This can lead to your patch containing copyrighted information.  In the case of expanded ROMS, the patch size for an IPS can be as big as the original ROM itself, and will undoubtedly contain copyrighted data.  IPS is more popular however, and the average user can apply a patch without having to go download a new patching tool.  So basically, I use IPS when I can, but for the more complicated projects, I'll use something that can handle data insertion, like BPS or xdelta.

I got a contact from MrRichard999 about incorporating the addendum into the original patch.  He gave me approval, and I submitted the changes.  Changes were approved, so everything should be good now.

I just went ahead and submitted an addendum patch with the changes I mentioned previously.  It would have been better to have it incorporated into the other so you only have to apply a single patch, but meh.  As long as it gets approved, it should be available in a day or two.

I actually did get a response from him, but that was like a week ago and I've heard nothing since.  I've checked the queue occasionally to look for an update but nothing.  He indicated that he was only responsible for the title screen on that project, and that he would contact the other contributors about it.  I can only assume he was talking about MrRichard999 and Helly.

I've got a working solution to this.  Made a patch that sets it so that English uppercase is the first alphabet that appears if English sentences are specified in the options menu, and the first set of Japanese symbols appear if Japanese sentences are specified.  I also translated the names of the initial characters and set the default language options to English if there is no existing save for the game.  I'll try contacting Pacnsacdave first to see if I can get my changes incorporated into his translation.  If not, I'll just submit an addendum.

Newcomer's Board / Re: Has Anyone Ever Documented a Full ROM Hack?
« on: September 26, 2017, 08:51:30 am »
I'm basically looking for "There is byte x at offset x, which I used to change x."

Any game on Data Crystal that has a ROM map should give you some good information on this.  Of course, it seems to be highly variable what you'll get depending on the game and how it was written.  There's a decent one for Final Fantasy on there that you can use to make some interesting changes:
Of course, there's plenty of information out there on Final Fantasy already.  As far as hacking streams, I tend to write things up that way in a notepad file while I'm working.  Some of those files end up being quite large, and very disorganized.  I've got a huge one for Ninja Gaiden right now, but I'm still working on that hack.  Honestly though I feel like it would mostly just end up being confusing for somebody trying to read my notes.  My code often goes through several revisions, and the same code snipped will appear several times in different forms, and may or may not match the version in the finished hack.  Data Crystal is better for more organized notes on hacking.

Sounds similar to the controls in Wizardry V.  Pressing select during character naming changes the alphabet between two sets of Japanese characters and also English uppercase and lowercase.  I agree though that it is confusing for English players when they first see all the Japanese characters.  There should be a way to change the initial character set to English when English text is chosen from the options menu.  If I was able to do it for the Wizardry V translation, it should be possible for this game as well.

Personal Projects / Re: Secret of Evermore Scroll Hack
« on: September 22, 2017, 07:18:15 pm »
Secret of Evermore actually uses a completely different engine than Mana.  The developers basically tried to mimic it, but they didn't use any of the original code.  It's probably still feasible to do though.

For an unheadered ROM, it looks like x108EC0 and x108EC7 control the right margin and left margin width.  Increasing the values from x48 causes the screen to scroll when you are farther from the edges.  x108ED5 controls the bottom margin, and x108ECE controls the top margin.  By default the top margin is x68 and bottom is x38.  Changing them all to x68 will keep you pretty close to the center.

Programming / Re: NES Question - Best Method for Sprite Engine?
« on: August 22, 2017, 06:46:30 pm »
This is a very relevant topic to me right now, as I'm thinking about attempting to optimize the sprite display code in the Ninja Gaiden hack I'm working on.  I find that a large portion of the code executed each frame is dedicated to arranging sprite data.  Ninja Gaiden uses a system similar to the method Disch talked about above, but there's also additional processing to constantly rotate the order of the sprites every frame.  Basically, they write xF0 to the Y position for each sprite every frame to place it off-screen, then they recalculate the position for every sprite, starting at a different place in the OAM array each frame.  They also alternate the top bit of the offset into the OAM array after each tile they place.  For example, since OAM data to transmit to the PPU starts at $200 in RAM, they'll write sprite Y position data in an order something like $240, $2C4, $248, $2C8, and so on.  The end result is that even with a lot of sprites on-screen, you get flickering, but you don't have sprites permanently hidden because of too many other higher priority sprites.  It seems like there's a lot of room for improvement in the efficiency department though.

The only other thing I have to add right now is to check the carry flag when you're calculating sprite positions to ensure that some of the wider sprites don't end up displaying parts on the wrong side of the screen.  I'll be looking into this more over the next few days.

ROM Hacking Discussion / Re: SNES Scripting and Code Compression
« on: June 18, 2017, 01:26:36 pm »
The project I linked above was capable of outputting the script and assembly for Romance of the three Kingdoms II, and Gemfire for the NES.  Originally it only worked for ROTK2, but I made the plugin more generic so it would work for both.  It's SNES only though, so it can't be used for the NES titles.  Unfortunately, I had a heck of a time trying to get it to work completely offline, and in the end I tied the tool to BSNES plus, so it would record the script as it was executed.

If you would like to see the instructions for the script you can check out:

Scroll down to 008000 to start seeing script.  Since the tool only works on script that it sees executed in the emulator, I had to piece parts of it together and it's still not complete, but there's a lot available.  My interpretation of the instruction set is a little more primitive than AWJ's, as when I first wrote it I didn't record the stack positions as Local variables/arguments but instead just wrote down the relative position.  In some ways though it can be more useful to a hacker though, since it's easier to see the addresses used if you want to make modifications.  I have analyzed all of the script commands though.  There are a few that are unused, and don't appear to be very useful.

Pages: [1] 2 3