+  RHDN Forum Archive
|-+  Romhacking
| |-+  ROM Hacking Discussion
| | |-+  Solar Jetman (Now with objects)
Pages: [1]
Author Topic: Solar Jetman (Now with objects)  (Read 1 times)
salmondance
Guest
« on: August 12, 2010, 10:16:07 am »

I've been looking into hacking Solar Jetman, and I've decided to share my progress.

Each map is constructed from 128-by-128 pixel tiles, each listed as a byte starting from the top-left corner of the map and going down in rows. The width of each row is always one more than the planet diameter described in the "Now Approaching" screens. Each planets tiles are stored at the following addresses (note that they are not in the same order as encountered in the game):

1 Preludon- $1871B - $1875A
4 Corso Qwero-  $1875B - $189B2
6 Lemonte - $189B3 - $19041
2 Meximorf - $19042 - $19381
9 Zlaz Tordus - $19382 - $19783
7 Chorlton - $19784 -$19C03
5 Bokky - $19C04 - $19F0F
3 Omebru - $19F10 - $1A0EF
8 Shishkebab - $1A0F0 - $1A419
10 Shammy Gen - $1A41A - $1A705
11 Shankoo - $1A706 - $1AA75
12 Miplezur - $1AA76 - $1B343
13 Urownd - $1B344 - $1B5C3

The link below contains diagrams of each tile and its corresponding byte.

http://rapidshare.com/files/412526236/SolarJetman_Tilelist__Telluric_and_most_Metamorphic_tiles_.rar
(If someone could upload this to RHDN, that'd be a big help. Ask me to upload it again if it expires.)


******
Back with more!


Objects such as Fuel Cells, Crystals and Black Holes can also be edited, but some objects will appear as junk if placed on certain maps. Each object is defined by 5 bytes; 2 for it's position on the x axis, 2 for it's position on the y axis (the 0,0 point is the top left corner), and 1 byte to determine what the object is.


Example: Starting at $11A50, the 5 bytes for the Shield item on Preludon are as follows:

F9 00 52 03 03

For the x axis, the bytes are flipped to give 00 F9 (249 in decimal), stating that the object is 249 pixels (Or almost one whole double-tile, as I've come to view it) from the left edge of the map.

For the y axis, again the bytes are flipped to give 03 52 (850), stating that the object is 850 pixels (Or 3-and-a-bit double-128-tiles) from the top of the map.

The byte 03 is for the Shield item. I'll list the bytes for each different item below.

01 - Spare Jetpod
02 - Unknown (Crashes Game)
03 - Shield
04 - Boosters
05 - Fancy Alien Item
06 - Navigators
07 - Unknown
08 - Unknown
09 - Box (Contents depends on position in list)
0A - Fuel Cell
0B - Gas Tank
0C - Radioactives
0D - Unknown
0E - Mini-box that Saucer Forcers drop, but it can be towed. Weird.
0F - Red Crystal
10 - Blue Crystal
11 - Warp
12 - Black Hole
13 - Warpship Piece (I think)
14 - Secret Warp? (Doesn't seem to appear on maps)
15 - 0/4 Fuel Gauge
16 - 1/4 Fuel Gauge
17 - 2/4 Fuel Gauge
18 - 3/4 Fuel Gauge
19 - 4/4 Fuel Gauge
1A - Secret Warp?
1B - Bonus Room/Level Warp


The locations in the ROM where each planets objects are listed are as follows (Once again, they're not in order you'd expect):

1 Preludon - $11A46 - $11A63
4 Corso Qwero - $11A64 - $11ACC
Chorlton - $11ACD - $11B49
Miplezur - $11B4A - $11BC6
Urownd - $11BC7 - $11C2A
Bokky - $11C2B - $11C8E
Omebru - $11C8F - $11CE3
Shishkebab - $11CE4 - $11D56
Shammy Gen - $11D57 - $11DBF
Lemonte - $11DC0 - $11E3C
Meximorf - $11E3D - $11EB4
Zlaz Tordus - $11EB5 - $11F27
Shankoo - $11F28 - $11F9F

I have a bit on enemies and their positions, but that's much harder. It works in a similar way to objects, but the data for their position and type are kept seperately. I'll hopefully post about that on a later date.
« Last Edit: August 12, 2010, 02:21:18 pm by salmondance »
Tony H
Guest
« Reply #1 on: August 13, 2010, 11:35:22 am »

One of my favorite games on the NES.  Good work.
salmondance
Guest
« Reply #2 on: August 16, 2010, 01:02:18 pm »

I'll list the addresses where the types of enemies that appear on each planet are listed. These were actually pretty easy to find, considering that only certain types of enemy appear in each level. Note that I'm not 100% sure on some of these.

As an example, the list for Preludon goes from $2044D to $20454 and lists 8 enemies; 7 Limpet Guns of various orientations, and a Spheerie Generator.

Preludon- $2044D - $20454
Corso Qwero- $20548 - $2058D
Cholton- $206AE - $206FB (Give or take)
Bokky- $2078F - $207B5
Lemonte- $208D0 - $20924
Meximorf- $20A3B - $20A89
Zlaz Tordus- $20BA6 - $20BF4 (I think)
Omebru- $20C51 - $20C68
Shishkebab- $20CEA - $20D0C
Shammy Gen- $20DB6 - $20DE6
Shankoo- $20F05 - $20F58
Miplezur- $21095 - $210E9
Urownd- $211DC - $21221

And below are the bytes which refer to each type of enemy.

01- Limpet Gun (0 Degrees)
02- Limpet Gun (180 Degrees)
03- Limpet Gun (22 Degrees)
04- Limpet Gun (337)
05- Limpet Gun (157)
06- Limpet Gun (202)
07- Limpet Gun (45)
08- Limpet Gun (315)
09- Limpet Gun (135)
0A- Limpet Gun (225)
0B- Limpet Gun (67)
0C- Limpet Gun (292)
0D- Limpet Gun (112)
0E- Limpet Gun (247)
0F- Limpet Gun (90)
10- Limpet Gun (270)
11- Battle Factory (Fires Missiles, produces Drones)
12- Vertical Turret (Weak point on right)
13- Double Piston-Jumper (Rarely jumps, shoots a lot)
14- Single Piston-Jumper (Jumps when below player)
15- Double Piston-Pumper (Shoots a lot)
16- Single Piston Jumper
17- Vertical Turret (Weak point on right, forms blockade with 18)
18- Vertical Turret (Shoots downwards, weak point on right, forms blockade with 17)
19- Drone Hive (Produces Drones)
1A- Drone Hive (Upside-down, produces Drones)
1B- Double Drone Hive (Double ended, produces many Drones)
1C- Battle Platform (Fires Missiles)
1D- Battle Platform (Upside-down, fires Missiles)
1E- Battleship (Eventually moves about, fires Missiles)
1F- Gravity Orb (Drags player in)
20- Anti-Gravity Orb (Forces player away)
21- Armoured Cruiser (Moves vertically, damaged only from behind)
22- Armoured Cruiser (Moves horizontally, damaged only from behind)
23- Rotator (Moves in a circle)
The Rotators go on for a bit, until...

43- Crystal Snapper
44- Crystal Snapper
45- Crystal Snapper
46- Crystal Snapper
47- Vertical Turret (Weak point on the left)
48- Spheerie Generator (Generates lots)
49- Spheerie Generator (Generates few)
4A- Sentry
4B- Drone Generator (Generates lots)
4C- Drone Generator (Generates few)
4D- Space-snake Generator (Generates lots!!!)
4E- Space-snake Generator (Generates few)
4F- Meteor (From "Destiny Summons")
The Meteors go on, I think until...

60- Guardian (Can be followed by Option)
61- Option (Will follow player if intact when Guardian is defeated)

I only know the addresses that handle enemy positions for Preludon, which start at $2042C and go on to $2044B. This works in the same way as item positions, but with the respective bytes for type taken out. The other lists seem to be divided up in some way, but I'll hopeful figure it out at some point.

With the data I've collected so far, I'm thinking about making an editor (At the very least, I'll be able make a Preludon Editor), but I don't really know the first thing about making applications. Does anyone have any advice about where to start learning/what software to start using, etc?

Other things that need to be worked out include where planet gravity and diameter are kept, how to change a tiles colours (from within the levels palette, which I know a little about), and how to change between graphics sets for tiles, objects and enemies.
Tony H
Guest
« Reply #3 on: August 16, 2010, 08:05:05 pm »

This may help with finding planet gravity...

13\tUNSPLSLE        Reversed gravity for planet 1
14\tVTSOZVTO       Reversed gravity for planet 2
15\tKVOPATGP       Reversed gravity for planet 3
16\tXNVOTSZE       Reversed gravity for planet 4
17\tETXPGTAZ\t        Reversed gravity for planet 5
18\tOTUOYVPX       Reversed gravity for planet 6
19\tUTEOPTLZ        Reversed gravity for planet 7
20\tAOXOLVEV       Normal gravity for planet 8

Those are official Galoob Game Genie codes for Solar Jetman.  I'm sure it uses a memory mapper (or bank switching? whatever it's called), so you'll have to use fceuxd sp to find the right offset.
« Last Edit: August 16, 2010, 08:16:58 pm by Tony H »
salmondance
Guest
« Reply #4 on: August 18, 2010, 12:56:12 pm »

Those codes were really helpful! Many thanks Smiley
The addresses they were referring to effect not only a planets gravity, but it also the tileset graphics it supports. The first three bits in the byte (1, 2 and 4) determine the planets tileset graphics, and are as follows:

$00 (0,0,0) Crystaline tileset used for Bokky and Shishkebab
$01 (0,0,1) Metamorphic tilset used for Lemonte and Shankoo
$02 (0,1,0) Telluric tileset used for Corso Qwero, Miplezur and Urownd
$03 (0,1,1) Telluric tileset used for Preludon and Chorlton
$04 (1,0,0) Crystaline tileset used for Omebru and Shammy Gen
$05 (1,0,1) Same as 02 (I think)
$06 (1,1,0) Metamorphic tileset used for Meximorf and Zlaz Tordus
$07 (1,1,1) Don't use (Junk, crashes game)

Gravity, because its handled by the last 5 bits (8, 16, 32, 64 and 128), can only ever be a multiple of 8. For positive gravity, simply enter a multiple of 8 in hex up to $78 (120 gravity!). Enter $00 for zero gravity. Negative gravity works backwards, starting at $F8 for -8 gravity, $F0 for -16 gravity, $E8 for -24 gravity and so on, all the way down to $80 for -128 gravity.

To get the desired combination of graphics and gravity simply add the two hex numbers together (For a planet in Omebru's style with -8 gravity for example, $04 + $F8 = $FC.), and enter it into the address for the corresponding planet, as listed below:

Preludon- $115E3
Meximorf- $1166A
Omebru- $116A0
Corso Qwero- $115FE
Bokky- $11634
Lemonte- $1164F
Chorlton- $11619
Shishkebab- $116BB
Zlaz Tordus- $11685
Shammy Gen- $116D6
Shankoo- $116F1
Miplezur- $1170C
Urownd- $11727

Immediately after these bytes are the palettes for each planet, which consist of groups of three colours, and can be altered in the usual fashion. Also, 3 bytes before the gravity/tileset bytes, bytes for planet diameter (as shown on the "Now Approaching" screen) and depth can be found. These seem to allow you to change map dimensions, but I haven't experimented with them a lot.
St.Whiskey
Guest
« Reply #5 on: September 21, 2010, 12:16:43 pm »

Nice going man!
Im not joking when I say this game ranks high on my list of all time favorites.

I tried to hack into it myself long ago but I dont have the knowledge it takes so Im glad to see someone else do it :p
I hope you will continue your work and if theres anything or whatever that I can contribute with I will! (I just dont know how to do a whole lot...)

EDIT

Could you fix the download link?
It seems to have expired/moved or something.

EDIT AGAIN

I had some fun experimenting around, and will do some more when Im not sick (damn fever wont go away).
I was going to try what the map would look like in level 1 with the diameter changed to 8 cause it seems to screw everything up when I do that. Even collisions.
Oh and FF gave -1, so theres negative dimensions? :p
« Last Edit: September 21, 2010, 01:07:51 pm by St.Whiskey »
KingMike
Guest
« Reply #6 on: September 21, 2010, 12:57:55 pm »

Yeah, rapidshare is practically worthless now.
You only get 10 downloads now before links expire, making it pretty hard to rapid share. Tongue

I use Megaupload, but there's probably better alternatives.
Pages: [1]  


Powered by SMF 1.1.4 | SMF © 2006-2007, Simple Machines LLC