0% found this document useful (0 votes)
29 views4 pages

Startropics Notes

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
29 views4 pages

Startropics Notes

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

(RHDN archived post: by Jiggleysaint, Oct.

8, 2007)

Ha! I bet you thought I was asking for help!

Anyway, since I haven't seen the game disassembled much, I though I'd find out
where the levels are stored, and how they are compressed. After about a day of
searching, I found it.

So basicaly, how things work, is that at offset 2201a in the Rom, there is a list
of pointers, except they are like relative pointers. The first byte acts as usual,
and the second byte is the page that's addressed. The first room is 02 04, so that
makes the offset 22412, with the header added. This data leads to a second list of
pointes that are also relative, with additional properties.

Rooms are assembled several pieces at a time. For example, room $01 in the C-
Island cave, shares some common data with room $02. How it works is that each room
has several pointers. Room 01 has 3, and room 02 has 2. Both rooms share a
pointer to the top half of the room. Like with the first set of pointers, these
ones have a similar format. The first byte + $10 is where on a given page the data
starts. The second byte has the page number, but the upper bits control, as it
appears to me, how much of the data to grab. In room 01, three pointers are
needed, but in 02, only 2. That's because the second pointer in room 02 also
inludes data from the third pointer in room 1. What's happening is that the
pointers grab snippits of level data, and depending on if the room is finisted or
not, there's additional pointers. It's still not totally figured out yet, but it's
getting there.

$22F0D in the rom is where the data starts for the first pointer in room $01(and
other rooms that use this data piece). The format is RLE, in different formats.
The first byte, 86, tells the game to place tile $00 6 times. If $10 is set, then
it will use that tile ID + 1. The next compression format is simple, and always
seems to start with a $20. For example, 23 will tell the game to make the next
three bytes tile ID values. The third format uses $10, with the second nybble
being the length. This is used when the tiles needed exceed 7, because the one
byte code only goes that far. $1A 0A would place tile $0A, which is a normal
walkable surface, 10 times, wheras DA would end up placing normal tiles only 2
times because bit $10 is used to toggle between ID value and ID value +1.

The last format, and one that's rather odd, uses the upper bits between $40 and
$60. When used, it seems to have a combination of two different tiles, usually
water and steppable tiles. For example, $62 tells the game to have a water tile
with a shadow appear, then a steppable tile. After that it's told to repeat the
pattern 2 times, which makes 4 tiles appear in all. $6A on the other hand, seems
to do the same, except it's reversed. If water came first, then this time the
steppable tile would come first, then water. The 2 bits, $40 and $20, seem to have
3 combinations. I've seen shadowless water and shadowed water, shadowless water
and tiles, and shadowed water and tiles.

So that's it basically. I've also found the room headers and event data, but not
where each room leads when you exit it.

(RHDN archived post: by ETG, Oct. 9, 2007)

I looked into Startropics a little bit a while back. I found data for the overworld
map for C-island.
I made a list of values that changed one tile, but I could not figure out anything
else.

Here's from my notes.


2070 = TILE MAKEUP

2BF0 = Spot on map somewhere near the center of the island.

00 GRASS
01 GRASS, BOTTOM EDGE
02 BEACH
03 CLIFF SIDE
04 TREE
05 MOUNTAIN
06 WATER
07 WATER, TOP EDGE
08 WHITE WATER
09 WHITE WATER, TOP EDGE
0A GRASS, TOP EDGE
0B GRASS, TOP & BOTTOM EDGE
0C RED TREE;
0D BLUE TREE, NW OFF
0E WATER, TOP & LEFT & BOTTOM EDGE
0F WATER
10 GRASS, NW BUSH
11 GRASS, EDGE LEFT
12 GRASS, EDGE RIGHT
13 CAVE
14 LANDING PAD
15 GRASS, LEFT & BOTTOM EDGE
16 GRASS, RIGHT & BOTTOM EDGE
17 GRASS, LEFT & TOP EDGE
18 GRASS, TOP & RIGHT EDGE
19 GRASS, LEFT & BOTTOM & RIGHT EDGE
1A GRASS, LEFT & BOTTOM & RIGHT EDGE
1B LAB, LEFT SIDE
1C LAB, RIGHT SIDE
1D VILLAGE, LEFT SIDE
1E VILLAGE, RIGHT SIDE
1F STAIRS
20 WHITE WATER, LEFT & TOP EDGE
21 WHITE WATER, TOP & RIGHT EDGE
22 WATER, RIGHT EDGE
23 WATER, LEFT EDGE
24 WATER, LEFT & TOP EDGE
25 WATER, TOP & RIGHT EDGE
26 WATER, RIGHT & LEFT EDGE
27 WHITE WATER, RIGHT EDGE
28 WHITE WATER, LEFT EDGE
29 WATER, BOTTOM & RIGHT EDGE
2A GRASS, LEFT & RIGHT EDGE
2B GRASS, TOP & BOTTOM & RIGHT EDGE
2C CAVE, CLIFF SIDE
2D HUT
2E LIGHTHOUSE, TOP SIDE
2F LIGHTHOUSE, BOTTOM SIDE
30 WATER, LEFT & TOP & RIGHT EDGE
31 WATER, LEFT & TOP & BOTTOM EDGE
32 PORT, RIGHT
33 PORT, BOTTOM
34 WAVE WATER, LEFT & TOP EDGE
35 WAVE WATER, TOP & RIGHT EDGE
36 WAVE WATER, RIGHT EDGE
37 WATER ROCKS
38 GRASS, TOP & BOTTOM EDGE
39 MOUNTAIN
3A GRASS, LEFT & RIGHT EDGE
3B MOUNTAIN, PASS
3C BLACK
3D WATER
3E WHITE WATER, LEFT & TOP & RIGHT EDGE
3F WATER, LEFT & BOTTOM EDGE
40 CASTLE, LEFT SIDE
41 CASTLE, RIGHT SIDE
42 CAVE ENTER
43 WATER DOTS
44 WATER, LEFT & TOP EDGE /W SE DOTS
45 WATER, TOP & RIGHT EDGE /W SW DOTS
46 WATER, TOP EDGE /W BOTTOM DOTS
47 WATER, LEFT EDGE /W RIGHT DOTS
48 WATER, RIGHT EDGE /W LEFT DOTS
49 WATER, LEFT & BOTTOM EDGE /W NE DOTS
4A WATER, BOTTOM EDGE /W TOP DOTS
4B WATER, BOTTOM & RIGHT EDGE /W NE DOTS
4C WATER DOTS, RIGHT MT.
4D WATER DOTS, LEFT MT.
4E MT., LEFT & UPPER SIDE
4F MT., RIGHT & UPPER SIDE
50 MT., LEFT & LOWER SIDE
51 MT., RIGHT & LOWER SIDE
52 GRASS, LEFT & TOP & BOTTOM EDGE
53 WATER, BOTTOM EDGE
54 PORT, LEFT

(Jiggleysaint, Oct. 11, 2007)


So now I need to figure out how the events data work, and also how the rooms are
connected. I'm actually thinking of doing minihack, like a boss rush mode where
you have to fight all the bosses room after room. There is one thing I've noticed,
and that is that the game has a ton of free space to create levels and whatnot. In
fact the game has more free space than is really physically capable of using.
Also, in the game, data is not in order. The first room's data is near the end,
and stuff at the beginning might be used for room $40 or somthing. Quite
disorganized. It also does not use standard pointers in the least bit.

(Jiggleysaint, Oct. 12, 2007)


Yes, very much so then. For one thing the room headers for the second dungeon is
before the room headers for the first dungeon, and so forth. It's like everything
was coded backwards!

Edit: Okay so now I understand how the room order works. Basically it's a
standard grid, 8x8 in size. Each room has a byte that tells the game which room is
in which spot. As long as there is a room, the game will let you go there. If a
room has not been defined, then the game will crash. The first room starts at 02,
and above it(+8) is 0A. If I want the room to the left to be used, I'd put one of
the rooms co-ordinates at 01, and to the right, 03. Quite simple.

On second look, it looks like it uses the entire 16x16 grid. Furthermore, stairs
work by incrementing the rooms by a certain amount. For example, in Magma's cave
in chapter 3, the stairs to the volcanic area is E2 in ram. When you go down the
stairs, it changes to 22. Go down one more time at it goes to 62. So as it seems,
that's how it works.

(Jiggleysaint, Oct. 13, 2007)

If you think that's weird, apprently in Captain Bell's cave, when you leave room
that at position 58, you go to position 1F. I think I know why. It's possible
that each dungeon has specific "areas" for each part of the dungeon. I didn't see
anything like this on C-Island, although there is no wrapping arround in that
dungeon. I guess how it works, is that each row is 8 rooms long, and when you
reach the last in the row, it goes to the next row. So it could be like this:

38393A3B3C3D3E3F 78797A7B7C7D7E7F
3031323334353637 7071727374757677
28292A2B2C2D2E2F 68696A6B6C6D6E6F
2021222324252627 6061626364656667
18191A1B1C1D1E1F 58595A5B5C5D5E5F
1011121314151617 5051525354555657
08090A0B0C0D0E0F 48494A4B4C4D4E4F
0001020304050607 4011224344454647

And of course it repeats for the other 128 bytes. Dungeons can still be huge, but
they have this form of a system rather than an actual grid with co-oridiates system
like you would see in Zelda.

You might also like