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

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
ROM Hacking Discussion / Re: How to form a team
« on: March 29, 2018, 03:53:22 pm »
I was more asking about how to sort out help offers after I've received them. I'm not entirely new to ROM hacking, but I've only worked alone before. I've received offers to help for things in the past, but was never sure what to do with them, how to tell how genuine they were, whether they would actually be helpful, etc. So for the purposes of what I'm asking, I'm assuming I already have something to show, and there are people interested in helping, which I wasn't clear on in the OP.

I'm currently on the team working on the Deadpool hack of Ninja Gaiden.  Danger X asked if I wanted to join after I solved some problems that he had asked about in a thread on this forum.  I know another of our current lead team members started out by showing the team some graphical assets that he had created specifically for the project.  If somebody is both willing and capable of helping, they should be able to show you samples of their work/abilities.  If you have a specific problem or area in which you need help, I'd ask about it and see whether they could actually give you something.  One option would be to make a thread about what you need in the help wanted section, and if somebody offers to help you via PM or on another forum, you could just point them to the help wanted ad.  That way if they don't work out, other people could see the ad too and you won't have wasted time waiting on somebody unknown.

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.

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.

ROM Hacking Discussion / Re: SNES Scripting and Code Compression
« on: June 16, 2017, 12:53:28 pm »
Necrobumping this topic to link my own research into the bytecode found in Koei NES and early SNES games. Executive summary: the bytecode is almost certainly the output of a C compiler.

I would have to agree.  The way they handle stack data and local variables for the functions reminds me very much of C.

I do remember Square mentioning the tool they wrote (I can't remember if it was a script editor or assembler) in a Nintendo Power preview article of SoE.

I believe it was called SIGIL.  The lead programmer, Brian Fehdrau has given a number of interviews discussing it.  He also talked about SAGE (Square's Amazing Graphical Editor).  At some point in the near future I'm planning on getting back to hacking Evermore.  I started writing an editor awhile back that was capable of importing the scripting from the game, but I got sidetracked.  I'm currently working on the Deadpool (Ninja Gaiden) hack, but it's getting close to completion.  I really love Evermore, but it's a real challenge to work with for hacking purposes.  I'm hoping I can come up with a tool to make things significantly easier to edit.

ROM Hacking Discussion / Re: Reverse
« on: June 13, 2017, 03:00:48 pm »
I've seen another project on this site recently that achieved this:

I would wager that it is actually quite a bit of work to make hacks like this though.

Bandit Kings of Ancient China (NES)

Revert the heroes name back to its original name instead of nicknames (For example: Nine Dragons should be Shi Jin).

Romance of the Three Kingdoms II

Make unplayable rulers (Kong Rong, Liu Yong, Wang Lang, etc) back playable.

Those should be easy enough to do if you understand the game's scripting language.  I'd do it, but I have a backlog of projects already at the moment.  I've done a lot of work on the SNES version of ROTK2.  I made a modification of bsnes-plus that automatically would interpret the script and output it to a text file while the game was running.  Here's an example of the output:

Script starts around hex x8000, you can get an idea of what the language looks like from this.  Koei used the same scripting language for all their NES games that I've tested.  The only SNES games that used it were ROTK2 and Gemfire, games that were made for both systems.  Obviously it's a little different under the hood for the NES (the stack management is different), but the effect of the script commands is essentially the same.  You can track the scripting in FCEUX by keeping tabs on reads from $06, which holds a pointer to the script command or operand currently being executed.  In the SNES version, $04 held a pointer to a location in the stack, used to keep track of arguments and local variables available to the current script function.

A huge amount of the logic in these games was scripted.  Unfortunately, I don't have a similar tool for the NES, so interpreting the script has to be done by hand for now.

ROM Hacking Discussion / Re: Wall climb in ninja gaiden 1 (nes)
« on: February 20, 2017, 11:07:05 am »
Yeah, I'm occasionally encountering glitches with this too.  Sometimes when you climb to the top of a wall and jump off, if you press the d-pad at just the wrong moment you can fall through the floor (it can be difficult to replicate).  I can change the maximum height that you can climb so that you don't go too far above the walls, although I'm not sure if that is what really causes the glitch.

Also, sometimes when you get to the top of a wall, you are high enough above it that if you press up and right at the same time, you start walking on top of the platform without having to jump at all.  I kind of like this, actually.  It didn't really make sense before that a ninja would be able to climb ladders but not actually get to the top of the platform without jumping off.  The downside of this is that the levels weren't really designed for this, so sometimes you get to the "top" of the platform, but it's actually just a little bit too low, such that if you walk forwards you fall through the floor.

Edit: With the changes discussed in previous posts already in place, changing x1EC35 to x4D makes it so that Deadpool can't climb as high above the screen.

I don't know if I have the time for another major project, but I can help with a few things.  I'm good with assembly, although I've spent a lot more time on the SNES than the NES.  I checked out the project page, and on the assembly side it looks like you might need:

-fix glitch, sometimes deadpool give 2 damage points to the bosses
-make second boss invincible
-Change Deadpool's weapon into a proper gun
-Regenerating health

The throwing star has a pretty similar mechanic to a gun already.  If the speed of the projectile is increased and the sprites are adjusted, it could probably pass.  Regenerating health should be easy enough, though you might need to re-balance things a little bit afterwards.

Pages: [1] 2