Making a Gradius 1 NES Hack. (May Move this to Personal Projects)

Started by RhysOwens101, March 27, 2017, 05:03:39 PM

Previous topic - Next topic

RhysOwens101

...and I would like to know how to change screen locations and the stage orders.
I thought it would go like this: 00,01,02,03,04,05,06
00 is Stage 1, 01 is Stage 2 and so on, but apparently not, according to searching the ROM in a Hex Editor.

Also, I'm hacking the Japanese Version (Gradius (Japan)).

mrrichard999

If you do a hack, you should definitely use this as a base to start off with, so many awesome features were added with this. - http://www.romhacking.net/hacks/1573/

This patch is used on the Japan ROM.

RhysOwens101

Quote from: mrrichard999 on March 28, 2017, 02:40:43 PM
If you do a hack, you should definitely use this as a base to start off with, so many awesome features were added with this. - http://www.romhacking.net/hacks/1573/

This patch is used on the Japan ROM.
I already have that in my ROM collection.
I'm sticking with the original JP version for now because it's smaller so it will be easier to find the hex stuff.

nesrocks

#3
How would this work? Isn't the game one huge single level?

Anyway, the address at 0x864 seem to do just this (a list of songs, a list of CHRs to load, a list of "allow vertical scrolling" flags) etc, but the level itself is not there.
0x1CD7 is the list of viper's starting positions and level's starting scrolls.
$26 is a ram for current level (0-6)
The pointers at 0x1884 (2 bytes each) seem to do something with the levels too.

This is (J) rom btw.

RhysOwens101

Quote from: nesrocks on March 28, 2017, 04:33:59 PM
How would this work? Isn't the game one huge single level?

Anyway, the address at 0x864 seem to do just this (a list of songs, a list of CHRs to load, a list of "allow vertical scrolling" flags) etc, but the level itself is not there.
0x1CD7 is the list of viper's starting positions and level's starting scrolls.
$26 is a ram for current level (0-6)

This is (J) rom btw.
I changed 0x864 to BC but all it did was corrupt the title screen.
Also, I'm gonna guess that $26 changes every time the level's boss is destroyed.

nesrocks

Oh, that was the AC version, not the J one, my bad. On the J one the addresses are:
partial list of levels (music, chr, vertical scrolling, etc): 0x359
viper's starting positions: 0x1BA7
level pointers: 0x1802

As for $26 you don't need to guess. Open fceux's debugger, set a breakpoint for writes to 26 and play.

RhysOwens101

Quote from: nesrocks on March 28, 2017, 05:24:31 PM
Oh, that was the AC version, not the J one, my bad. On the J one the addresses are:
partial list of levels (music, chr, vertical scrolling, etc): 0x359
viper's starting positions: 0x1BA7
level pointers: 0x1802

As for $26 you don't need to guess. Open fceux's debugger, set a breakpoint for writes to 26 and play.
I don't understand 0x1802. I changed around some values but the game kept crashing when I started the game.
Could you try to explain to me?

nesrocks

It is a list of pointers. Pointers are 2 bytes long. In this case (I don't know how long the list is, so lets take the first 4 pointers):
109AD199AC998399
is
109A
D199
AC99
8399

So you can change their order like so
D199
109A

Which is D199109A
So just paste that into that address to switch the order.

--------------------------------------
Pointers are nothing more than addresses. You don't need to know how to convert them, but here goes:
109A:
1 - switch both bytes (9A10)
2 - subtract 10 (9A00) because the NES header is #10 bytes long

So #109A points to $9A00. This is NES memory, but it points to the loaded ROM bank. You can't know which bank is read from just by looking at the ROM, but you can use data logger and the debugger to set breakpoints on read to this address and find out.

RhysOwens101

#8
Quote from: nesrocks on March 28, 2017, 05:41:43 PM
It is a list of pointers. Pointers are 2 bytes long. In this case (I don't know how long the list is, so lets take the first 4 pointers):
109AD199AC998399
is
109A
D199
AC99
8399

So you can change their order like so
D199
109A

Which is D199109A
So just paste that into that address to switch the order.

--------------------------------------
Pointers are nothing more than addresses. You don't need to know how to convert them, but here goes:
109A:
1 - switch both bytes (9A10)
2 - subtract 10 (9A00) because the NES header is #10 bytes long

So #109A points to $9A00. This is NES memory, but it points to the loaded ROM bank. You can't know which bank is read from just by looking at the ROM, but you can use data logger and the debugger to set breakpoints on read to this address and find out.
I did what you said, but all I got was Level 1 with no enemies.

March 29, 2017, 09:10:22 AM - (Auto Merged - Double Posts are not allowed before 7 days.)


Also, the hack is gonna be set before the events of the original game, where you play as a Big Core prototype.

March 30, 2017, 02:58:39 AM - (Auto Merged - Double Posts are not allowed before 7 days.)

I did some more editing to the level pointers bit and here's my guess on
how the 1st level is formatted.
10 is the Flight Screens. 9A is the Main Part of the level and D1 is the Volcano sub-boss activation.

cospefogo

Quote from: mrrichard999 on March 28, 2017, 02:40:43 PM
If you do a hack, you should definitely use this as a base to start off with, so many awesome features were added with this. - http://www.romhacking.net/hacks/1573/

This patch is used on the Japan ROM.

Ohh man!
Thanks so much for this link!
I never heard about it before!

I applied the patch to a USA ROM and it seems to be worked.
Are you sure it requires a JAPAN ROM?

Thanks thanks!
C.
"Replicants are like any other machine - they're either a benefit or a hazard.
If they're a benefit, it's not my problem."

RhysOwens101

The options are now copies of your core (because why not)


Also, what do you think the Big Core boss should be replaced by and what should I name the hack?

RhysOwens101

I'm gonna keep Big Core (the boss) as is because the plot is gonna be about you controlling the last active Big Core Prototype after the others were deactivated in replacement with the Final, Larger Big Cores because the Bacterians thought the fact that the cores were able to fire lasers caused them to overheat and eventually explode.

mrrichard999

Quote from: cospefogo on March 31, 2017, 01:20:54 PM
Ohh man!
Thanks so much for this link!
I never heard about it before!

I applied the patch to a USA ROM and it seems to be worked.
Are you sure it requires a JAPAN ROM?

Thanks thanks!
C.

It came from a Japanese site which they used the Japan ROM, not sure if there are any real differences though between the both of them. I was hoping the author of this hack would take advantage of the updates this patch provided though :(

Regardless I am looking forward to this when its done! Gradius hacks are always good!

RhysOwens101

Quote from: mrrichard999 on April 11, 2017, 02:40:04 PM
It came from a Japanese site which they used the Japan ROM, not sure if there are any real differences though between the both of them. I was hoping the author of this hack would take advantage of the updates this patch provided though :(

Regardless I am looking forward to this when its done! Gradius hacks are always good!
I haven't seen many Gradius Hacks. And most of them are just Graphic Hacks, that's why I'm trying to hack the levels and such.

w1ck3d

Quote from: mrrichard999 on March 28, 2017, 02:40:43 PM
If you do a hack, you should definitely use this as a base to start off with, so many awesome features were added with this. - http://www.romhacking.net/hacks/1573/

This patch is used on the Japan ROM.

I'm not sure if that is an outdated version or a different hack altogether, but AC Death 1.9 is available here: https://messatu.wordpress.com/

RhysOwens101

Quote from: w1ck3d on April 29, 2017, 10:15:56 PM
I'm not sure if that is an outdated version or a different hack altogether, but AC Death 1.9 is available here: https://messatu.wordpress.com/
That's Gradius II, I'm doing Gradius I.