News: 11 March 2016 - Forum Rules

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.

Topics - diaspora

Pages: [1]
ROM Hacking Discussion / How to make a minimal N64 ROM?
« on: September 20, 2015, 02:56:06 am »
When I started out learning NES programming/hacking, I followed a tutorial that showed how to construct the header for the ROM file, how to do basic ASM coding, and how to draw a sprite to the screen. Looking at N64 programming guides, it all seems to be "download this toolchain, write a program in C and compile with GCC, and bam, working N64 ROM", which isn't what I'm looking for. I've been able to find r4300i ASM tutorials and assemblers, but nothing on the basics of what makes an N64 ROM. What do I need for a header (and is there an additional header for the emulator to use, or is it just a raw ROM file)? How do I read data from the cart, get input from the controllers, and send commands to the RCP? Thanks much.

Personal Projects / Ninja Gaiden: Asshole Edition (Alpha ver. download)
« on: September 07, 2015, 11:53:51 pm »
Hey. This is my first and latest romhacking project. I'm taking taking Ninja Gaiden and making it 3 times more sadistic, "for the evulz". Well, that was the original goal, anyway. At this point the hack consists almost entirely of ASM code tweaks. Mostly changing enemy behavior, hit points, damage, etc. And it's damn hard, but not Kaizo hard (I have beaten each stage, individually, without savestates). Here's a list of enemy changes:

-The birds got the biggest overhaul. They'll never go past the edges of the screen, so you can't outrun them and scroll them off the screen- the only way to get rid of them is to kill them. Their movement pattern is much more unpredictable and harder to dodge- good luck!
-Tysons (the boxing guys) have 2 HP now, and they regain 1 HP each time they do their punching attack, so the best way to kill them is either from afar, or with two strikes in quick succession.
-The knife-throwing gangsters' knives do 2 points, and they start throwing as soon as they spawn, also the rate of throwing is increased
-Ghouls (and other sword/mace throwing enemies) throw swords twice as fast, up to twice as far, and the swords do 2 points of damage
-Commandos (the machine gun guys) shoot as soon as they spawn, their bullets travel faster, their rate of fire is increased slightly, and their bullets do 2 damage.
-Bats move faster, do 2 points of damage, and swoop a bit higher and lower than before.

-The first boss (who was a total pushover in the first game) also got an overhaul. He's much faster, deals 4 points of damage, his sword swing actually has appropriate range to match the animation, and the walls of the arena are gone, so now you need to jump over him. Once you get the rhythm down, it's not too hard, but he's pretty tough at first.
-I plan to overhaul every boss eventually.

And there's more...
One of the first changes I made to the game involves enemy spawning behavior. Instead of spawning at the edge of the screen, enemies now spawn almost halfway towards the center- this gives you a lot less time to react to enemies like those crawling Ninjas. It's kind of an exaggerated parody of one of the quirks of the original game, where enemies seemed to materialize on the edges of the screen rather than scrolling onto it. It's pretty diabolical, but I think the challenge it adds is mostly fair, save for a few spots which can be adjusted by hand. I actually like the challenge this adds, but I think some people will find it cheap, and it looks kind of unpolished, so I'm considering toning it down or removing it for the final version (or maybe making two versions of the hack) - feedback would be appreciated on this.

I also made another change to spawning behavior. In the original game, an enemy would respawn instantly whenever you were standing in their 1-tile wide "spawn zone". Now the spawn zones have been greatly extended- probably to about 4 16x16 tiles. Now moving forward through the level to get past the spawn zones is even more critical than before. This is one change I'm probably going to keep. However, it causes some bugs with enemies sometimes spawning in walls, over pits, and other glitchy behaviors. I have a plan to fix this, I just haven't gotten around to it yet as it doesn't impact the gameplay much- it's more of a visual distraction.

Here are some YouTube videos. These were made before my recent changes to the Commandos, Ghouls, and Bats, but they nicely showcase the changes to the birds and spawning. Sorry for the awful quality- I couldn't figure out how to get fceux to record at a resolution higher than 240p.

Stage 3-1:
Stage 4-2:
The first boss:

Here's a download link for the IPS patch:

Oh, and savestates from the original game should work with the hack, but if anyone wants a savestate for the beginning of any level (ex. 3-1, if you want to check out the new bird AI), I can give you one.

Basically, I'm going to take everything that anyone ever found frustrating about the game and turn it up to 11. Not to the point where you would need savestates to beat it, but to the point where you need to use savestates to maintain your sanity. And it'll be annoying as hell. I'm mostly just doing it for laughs, and for the fun of making it. After this hack is done, I might make a more reasonable one. The main focus is on changing enemy attack patterns to make them more difficult, and changing enemy placement.

The only thing I've done so far is to change the enemy spawn code to make them spawn much closer to Ryu, about halfway towards the center of the screen. This gives you much less reaction time, especially for fast-moving enemies. It makes no sense, and it's annoying. That's basically what I'm going for. >:D

Some other changes I plan to make:
-Rooms with continuously spawning birds and bats. It won't matter where you're standing, they'll be flying at you constantly.
-More unpredictable bird AI.
-Projectile enemies throw/shoot their projectiles as soon as they spawn, leaving you with no grace period to kill them.
-Make the bosses harder. Not sure how, yet. Maybe I'll add some birds...
-Game overs always send you back to the beginning of the act
-Less ammo
-Make most enemies take multiple hits to defeat, if possible

Feel free to share any ideas you have for how to make the game harder and more evil.

ROM Hacking Discussion / fceux debug/CDL strange behavior
« on: May 08, 2015, 03:12:11 pm »
I'm looking at a subroutine in the Ninja Gaiden ROM. At the start of the subroutine, there are 3 instructions that the code/data logger has logged as data, so I assume they're local variables for the subroutine. The first "code" byte of the subroutine is at DD34, so I set an execute breakpoint there so I could see what other routines call this one. But by mistake, I typed in DD32 instead, which should be one of the data bytes. To my surprise, the breakpoint triggered anyway, so it seems that DD32 actually is executed as code, even though the CDL has it logged only as data. The debugger disassembly has the 3 bytes from DD31-DD33 grouped into one instruction, and listed as data. But when the DD32 breakpoint is triggered, a new line appears in the disassembly comprised of only bytes DD32 and DD33 (and it's logged as code, too). Then if I scroll the disassembly window at all, that line disappears, and it goes back to listing DD31-DD33 on one line together, logged as data.

So my question is, if DD32 and DD33 are really executed as one code instruction, why does the disassembly group them together into one instruction/line with DD31, and why are they logged as data?

Pages: [1]