Register | Login
Views: 19364387
Main | Memberlist | Active users | ACS | Commons | Calendar | Online users
Ranks | FAQ | Color Chart | Photo album | IRC Chat
11-02-05 12:59 PM
1 user currently in Rom Hacking: hukka | 2 guests
Acmlm's Board - I2 Archive - Rom Hacking - Help: Solstice | |
Add to favorites | "RSS" Feed | Next newer thread | Next older thread
User Post
Exim

Micro-Goomba
Level: 6

Posts: 1/10
EXP: 549
For next: 358

Since: 01-04-05

Since last post: 102 days
Last activity: 22 min.
Posted on 01-04-05 06:11 AM Link | Quote
Ok this is my first post in this forum.
I'm pretty new to romhacking so i tried an old nes classic (gem) Solstice.
Actually I know where the roomdata starts and a lot of other stuff. But I have absolutely no idea how the rooms are adressed. They seem to be numbred, but I can't find a pointertable. maybe someone else with more experience could help.
Here 's what I know:

Roomdata starts at 0x018388
Encoded like this (1 byte each if not mentioned)
Floorpalette
Wallpalette
Boarderpalette
Roomsize (0x00 = 7x7, ... 0x18 = 3x3)
??
??
Error if not 0xFF
Wall-style-left
Wall-style-right
Floor-style, (death if bit 7 (128) set)
Floor-Graphic
0xFF
0xFF
0xFF
0xFF
0xFF
0xFF
0xFF
Exits, (bit 3, exit left, 2 exit up 1 exit right, 0 exit down)
// Per Exit bit set follows
{
Exit position
Next-Room (next room to load)
}

Number of blocks in the room
//For each block
{
Block-style
Blockposition (define by upper and lower nibble.)
Block-z-coord
0x80
}

That's for sure, I'm still working on enemys, secrets and objects.

Now for the graphics: (Those Hex include the header-info)
0x41D0-5100 Floor
0x5B50 following, wall
0x8B87-AAFF Comic-Pics, Intro/Outro
0xABC8-B618 Title-screen
0xBB74-BCD4 "The End"
0xBFEA-EF8A Shadax, Enemys, Items
0x10DE3-119D3 Menu
0x11A1C-11E8C Font
0x11E8C-1258C Title-screen
0x130EA-133BA Company-logo
0x134BA-13BCD Animationgraphics, lightning, dragonskull, princess, Moerbius
0x1E6E0-1FE00 Big Itemgraphics (when you pic up an item)

Text:
87D8-87F4 Text: Princess Elenoar is MINE
8819-8847 Text: Too late Shadax! The evil has awakened!
886C-8882 Text: Shadax! Help me!
88A6-88B3 Shadax!!
88D8-88F1 Text: Princess Eleanor!
8913-8930 Text: Morbius! Release her!
8952-89F1 Text: Ha! Ha
Shadic

Cukeman
Level: 27

Posts: 191/304
EXP: 111073
For next: 5086

Since: 08-20-04
From: Somewhere, Over the Rainbow!

Since last post: 9 days
Last activity: 2 hours
Posted on 01-04-05 08:17 AM Link | Quote
My god! I was talking to somebody about this game the other day!

I don't really know anything, so I can't help you... But I wish you the best of luck. This game was so much fun. ^.^
Jigglysaint

Red Cheep-cheep
Level: 24

Posts: 138/215
EXP: 76907
For next: 1218

Since: 03-17-04

Since last post: 7 days
Last activity: 3 days
Posted on 01-04-05 11:23 PM Link | Quote
Good job! I found data for this game like a year ago, but since nobody was interested, I didn't bother to decode the information.

As for how rooms are addressed, my guess is that they are implied, that is the first room will always start at the location where the data starts. I could go in quickly and see if I can come up with some pointers....no luck. I know that with some times, pointers to level data isn't needed, however if this is the case, then that means that all levels must be exactly the same size. If this is the case, then pointers arn't needed as the data doesn't vary. I have a feeling that is the case.

BTW, ever play the sequal, Equinox? I've hacked that game to bits and decoded all the level data and even a few cool things like how many tokens you need to summon a boss. I still wish somebody would make an editor for it though.
Exim

Micro-Goomba
Level: 6

Posts: 2/10
EXP: 549
For next: 358

Since: 01-04-05

Since last post: 102 days
Last activity: 22 min.
Posted on 01-08-05 03:49 AM Link | Quote
I've always preferred Solstice to Equinox
As each room has a different sice based on how many enemys and blocks there are, i don't think that the roomadresses are calculated. I don't know how fast the game-rom access is, but on the TI-Graphcalc it was possible to lookup levels by a loop running through the leveldatae looking for end-level-tokens and returned the adress of the needed level.
Xkeeper
The required libraries have not been defined.
Level: NAN

Posts: -2767/-863
EXP: NAN
For next: 0

Since: 03-15-04

Since last post: 2 hours
Last activity: -753366 sec.
Posted on 01-08-05 03:58 AM Link | Quote
Originally posted by Jigglysaint
I know that with some times, pointers to level data isn't needed, however if this is the case, then that means that all levels must be exactly the same size. If this is the case, then pointers arn't needed as the data doesn't vary. I have a feeling that is the case.
There are sometimes games (I know of one off the top of my head) that start the data and use no pointers to locate the next level nor are the levels equal sizes

(ex: Crystal Mines; level 1 will always start at a certain address, and then there are two FF bytes (not nessacarily in a row) ... after the second FF byte the next level begins, and so on and so on.
Jigglysaint

Red Cheep-cheep
Level: 24

Posts: 139/215
EXP: 76907
For next: 1218

Since: 03-17-04

Since last post: 7 days
Last activity: 3 days
Posted on 01-08-05 05:31 AM Link | Quote
Oh, and don't forget The Gardian Legend. Each room is a variable length, and the only way to effectivly edit the game is to wipe out the existing data and recode the entire map.
Add to favorites | "RSS" Feed | Next newer thread | Next older thread
Acmlm's Board - I2 Archive - Rom Hacking - Help: Solstice | |


ABII


AcmlmBoard vl.ol (11-01-05)
© 2000-2005 Acmlm, Emuz, et al



Page rendered in 0.013 seconds.