News:

11 March 2016 - Forum Rules

Main Menu

Solstice Randomizer (NES)

Started by pbandpickle, June 08, 2020, 06:46:11 PM

Previous topic - Next topic

pbandpickle

Hello All,

I have just published my first rom hack ever! I am very excited to bring you my first public version of the Solstice Randomizer.

https://pbandpickle.com/

The randomizer will mix up all collectible objects (with logic). It also supports custom seed and outputs a "spoiler" log if desired. The output is a simple IPS patch which you will want to apply to an unmodified US Solstice rom.
There are currently a few limitations involving Credits and Detonators but those will be cleared up eventually. I also have made a few minor edits to certain rooms to allow access to a greater area without the Magic Boots.

I would like to throw out a big thanks to Jp32 for his documentation (http://www.romhacking.net/documents/783/) as it gave me a huge jump-start to tackle a project like this.
Various randomization options will be implemented over the next couple weeks. I'll keep an updated feature / update log on at my website as they are added.

I hope someone gets some enjoyment of of it!

-pbandpickle

EDIT:  Now featuring optional CREDIT and KEY randomization
EDIT2: Added optional object color correction. Adjusted title text
EDIT3: Added optional teleporter randomization
EDIT4: Added magic boot strength and starting room randomizer. Color correction is a bit broken currently
EDIT5: Color correction is fixed. Added Shadax sprite randomization.





nesrocks

This should probably make the game easier. Because it's not possible that by chance it would make the items appear in a more awkward order than the original order. Sounds fun, I'll give it a go in a few days.

pbandpickle

I would reckon it's a bit harder now as you are almost required to search every room to find the staff pieces (assuming you don't peek at the log file). Additionally, there is a much larger area you have to explore without the magic boots.

Also, since this version does not color palette correction,  it's impossible to tell which kind of potion is which until until you pick it up.

I have big plans for the future of this hack. i'm very excited to add more features.

JP32

Good to see something came out of my documentation :)

Quote from: nesrocks on June 08, 2020, 11:30:43 PM
This should probably make the game easier. Because it's not possible that by chance it would make the items appear in a more awkward order than the original order. Sounds fun, I'll give it a go in a few days.
Actually you can explore surprisingly good part of the game without magic boots, you just have get creative with enemies and blue/yellow potions, though you do get soft-locked if you go into cave of doomed souls(the bottom layer, the 3x3 room maze), well it the original game anyway, as you need the extra jump height to get out of there. The changed item location isn't as easy as it sound as there are some obscure rooms there
Spoiler
like the one where you have to jump into spikes which disappears with hidden room underneath
[close]
. Plus there is a lot potential yet as this currently just shuffles items around.

Googie

I'm gonna try this randomizer, I love Solstice, thanks for the hookup! :D

pbandpickle

#5
I have added in optional Key and Credit randomization. I have also cleaned up the title screen text to be a little less dumb.

Item Palette correction is just about finished. I added support into the interface but it doesn't quite work yet. I'll probably get it working over the weekend.

I also slightly expanded the possible rooms for the Magic Boots to appear.

June 12, 2020, 08:07:01 PM - (Auto Merged - Double Posts are not allowed before 7 days.)

UPDATE:

Object Color palette correction is now available. You can choose to fix non-potion colors, just potion colors or everything. Fixing potion colors is nice is you want to be able to see what potion it is before picking it up.

June 14, 2020, 09:59:56 PM - (Auto Merged - Double Posts are not allowed before 7 days.)

Teleporter randomization is now working. If chosen, all teleports will pair up randomly.

I have some other cool things coming soon as well. Random starting room is almost done. I just need to work out some of the obvious softlock issues.

Are there any feature suggestions?

JP32

Randomize rooms palette, wall and floor graphics, normal blocks too maybe, though considering how the game handles them its probably better not to even attempt(blocks graphics part) lol.

Randomize enemies, their behavior and type, should be doable fairly easily, though randomizer should ignore rooms like 1C and D7 for example as those require their specif enemies to get across.

I dont think theres anything else to randomize, other than room exits which isn't feasible as if the both rooms exits dont line up perfectly, you end in death loop or stuck in out of bounds. Maybe randomize the 3x3 rooms in caves of doomed souls to make pseudo-maze?

pbandpickle

I don't think I'll be randomizing monster types as I feel that would ruin the "flow" of too many rooms. However, I'd be more than happy to implement it if people actually want it

I do have some palette randomization stuff coming very soon. I'll also have a few other wacky randomizations coming soon, one of which I hope surprises you J^P.

Googie

Quote from: pbandpickle on June 15, 2020, 04:20:05 PM
I don't think I'll be randomizing monster types as I feel that would ruin the "flow" of too many rooms. However, I'd be more than happy to implement it if people actually want it.

I'm down with this, it'd be pretty cool. :D

pbandpickle

Okay. I'll put it on my to do list. Also some of my palette correction stuff isn't working. It's not a priority though as the potion color correction does seem to work fine.

Right now I'm trying to finish up starting room randomization. It's sort of a headache because a single byte controls both your starting X and Y position (offset 0x000D60). This means your starting spawn location can only be anywhere in a straight line from the top corner as shown in the following screenshot:



As you can imagine this causes some soft lock or instant death issues. I am still going through each room and documenting where edits need to be made to avoid these because I really don't want to exclude any rooms entirely. It's going steadily though so I should have it done by this weekend I'm thinking...

Googie

I can't wait to play with the randomizer when it's updated.  :beer:

pbandpickle

I have completed documenting the changes required to do random starting room. Some rooms need minor edits, some need major edits, and then depending on starting room, other rooms need edits to prevent softlock.

For the time being and for my own sanity, the magic boots will still only be randomized within the main castle area only. This means regardless of your starting room, you will need to make your way back to the main castle to find the magic boots. Eventually I'll have a more comprehensive magic boot location randomizer but logistically it is much more difficult.

I am still working on implementing start randomizer and hope to have it live some time tomorrow.

If I can't finish it by tomorrow I'll at least update it with a couple other minor features and then add random start some time in the coming days.

Some fun facts:
-Room A2 does not exist. As in it literally does not exist in the ROM. Any attempt to start in or exit a room to A2 spawns you in Room 00 instead.
-Exiting to a room that is not yet accessible (exiting a room that is usually opened via detonator without yet triggering the detonator) will skip over the inaccessible room and instead spawn you in the next logic room
-Detonators do not seem to work correctly if placed in any room other than a detonator room. I will try to find a way around this but outlook not so good
-Any object can be flagged as an enemy. You can make a trap potion that kills you when you jump on it!

JP32

Im pretty sure I placed detonator outside of their room in my manual randomizer hack and it worked just fine, though it doesn't stay triggered if you leave and re-enter room, but it still activates the exit.

Do you have any idea of rooms FD(crashes the game) or FF(loads garbage)? Though Im somewhat sure they dont exit either.

pbandpickle

#13
Thanks for letting me know. I tested the detonators a long time ago and wrote it off as not working so maybe I had made a mistake. I'll have to check it out again.

Both FF and FD cause the game to lock up if set as the starting room. There is no room data for FF whatsoever. There does appear to be a a handful of bytes for FD but not a complete set of room data.

Fun Fact: There is a nearly identical byte for byte duplicate of room 00 immediately after 00s room data. It doesn't appear to be referenced or used in any way.

June 21, 2020, 10:12:27 PM - (Auto Merged - Double Posts are not allowed before 7 days.)

I just published an update to the randomizer. Sadly, Random Start did not make it in today. It's going to take me longer than I thought to get it right. It's going to be my priority this week but I likely won't have much time to work on it.

New Features:

-Shadax palette randomization
Now you can be funky colored Shadax! I'll likely include a way to specify the colors but for now its totally random.

-Magic Boot strength!
The Magic Boots now have a strength ranging from normal to nearly 4 blocks jump (max strength 127, up from standard 95)! Totally breaks the game but it's fun as heck. Jump height can NOT EVER reach 4 blocks unfortunately. The boot strength byte is signed and cannot exceed 127

-Web page looks better!
My friend threw together some CSS quickly for me so the randomizer isn't so plain. I hope you like it!

***Please note I haven't tested this too thoroughly but I do not anticipate any new issues.***

pbandpickle

I have made a huge update!

You can now select a random starting room. ANY room can be the beginning of the game! Please note that if you use the random start, MANY rooms have been edited to prevent soft-lock. I will follow up on the details of the room edits a bit later. I also fixed a few bugs that were generating ugly graphics.

JP32

Awesome!  :)

Some bugs I found:
(this is the seed and settings I used)

In these two rooms the item palette correction isn't applied (room ID's 3E and 3F)


but is on the lowest room:

mis-placed block:


I'll report more once I beat this seed :thumbsup:

pbandpickle

#16
Thank you so much for the bug reports! I found that in quite a few cases I accidentally flipped some bytes when transcribing them from my notes (06 -> 60). That's likely what happened here. I'll fix that later today.

***EDIT***
The bugs listed above have been squashed. I also corrected a couple other bugs I found.

Also, currently starting in room E4 or FC results in an immediate softlock. I may be able to fix that today. If you get this room, I'm sorry!

JP32

I think you need to double check detonators, on the seed I used room E4 has sprites 2A (triggered detonator #1 room e4) and 2B (detonator #2, room 46), and room 46 has sprites 2C (Triggered detonator #2, Room 46) and sprite 29 (Detonator #1, Room E4), now because of this Im softlocked because detonator in room 46 wont trigger properly, and the patch between rooms 45 and 47 wont open and since I picked up the item in room 42 I cant progress without cheating  ::) on that note the last detonator is same as stock so it behaves normally.

Now if I change the wrong detonator sprite in 46 to 2B it fixed itself, so if randomized detonator is in the room where there was originally detonator, both detonator and triggered detonator should be paired, so one room has sprites 29&2A, next room 2b&2c and then finally 2d&2e :-X Now that I think about it, I didn't do this to my manual randomizer and it was fine? Or maybe the game doesn't like when you put two different detonators in one room, regardless if its triggered or not? :-\

Also the seed I used, staff piece w/ sprite id DA is listed as sprite id D1(key1), so the staff piece in room 80 wont spawn, so it wont spawn, so Im still softlocked unless I hex edit  :angel: Full log here, seed also doesn't seem to include the randomized room? I didn't save my original cheat log, so I made one after the fact using same seed number and settings and the log reports different room

Purple potion?

Oh shit its blue one

Mis-placed block

messed up floor

This room looks little too messy, this was the only one out of all other edited rooms that stuck out like sore thumb

Blue potion?

Surprise its actually yellow!

Hmm, let me guess, green potion?

Nope purple potion

Yellow potion? I hope?

sorry no

This is just little nitpick, make the green potion use darker shade of green like the original(the potion itself in the pic is correct one)

What is spike ball doing here?


Other than it was centrally interesting playing through this, and I got magic boots in same location twice in two different seeds(room A3, I think its just coincidence lol), oh and the changed jump boost really messed me up few times. Other than the issues I listed, good job! :thumbsup:

pbandpickle

#18
The staff piece having the wrong ID should have been fixed already! Dang it, I probably copied over one of my rando tables with an old one.

I'll get that fixed up ASAP.

EDIT:
-I have fixed both the Staff Piece and the detonator issue. I did, in fact, overwrite my random tables with an older one, re-breaking the staff piece.

-The detonator issue was a bad copy/paste. Until I have the time to work out full detonator randomization, I hard-coded the detonator randomization instead of including it in my randomization tables. I was accidentally overwriting sprite 2A and with 2E. This should be all good.

-As for the random spike ball with orc colors, this was actually intentional. There is no random start location to spawn in that room without instantly dying. I attempted to modify the corner spikes but I ended up with graphics corruption. I just opted to change the orc into a spike ball. This give you a spot to random start but also leave in a bit of danger.

-The misplaced block and corrupted floor are due to the same error, I modified byte 1A5ED when I meant to modify 1AB5E. Correcting this has fixed both problems.

-The staff room with the sort of jacked up graphics are because there are a considerable number of custom graphics blocks that I couldn't be bother to fix. :P I might go back and fix those some day.

-I noticed a huge oversight in my color correction code. It's causing most items to not color correct... correctly. colorrectly? I will have to put some more work into it. That may be a next weekend sort of thing.

-I have also expanded the random seed capacity from 1000000 (arbitrary) to 16777215 (24-bit). As such, seed value is now displayed in hexadecimal.

JP32

I played through another seed.

Now I think that the magic boots location randomizer is broken, three seeds in row and they always in this spot?

I got magic boots that lets me jump three blocks, so if I jump here I can get to the room above this one without being on the item.. which makes this item almost impossible to get, well I dont know if this trick works for all items, but for credits at least it works, if you move towards the credit(hold direction) and tap the jump button, you dont do full jump, the jump stops exactly at the items height and allows me to get top of it without going to the room above so I can collect the item, this needs some testing so player can get all items and not be one item short.
Lazy fix to this is to move the block below item one block higher and more the item somewhere else ;D

This detonator is broken currently, in this seed it triggers the item heaven in the lowermost floor/maze area, but it was already "triggered" when I got there(I triggered the other two and they worked fine) so I missed out on some items

This time around I was able to finish the run 8)

Seed: f6deed    Options: CdKIPTLBR