Romhacking.net

Romhacking => ROM Hacking Discussion => Topic started by: pbandpickle on June 08, 2020, 06:46:11 PM

Title: Solstice Randomizer (NES)
Post by: pbandpickle on June 08, 2020, 06:46:11 PM
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/ (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/ (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.

(https://pbandpickle.com/SolRand/Images/sol1.png)
(https://pbandpickle.com/SolRand/Images/sol2.png)
(https://pbandpickle.com/SolRand/Images/sol3.png)
Title: Re: Solstice Randomizer (NES)
Post by: 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.
Title: Re: Solstice Randomizer (NES)
Post by: pbandpickle on June 09, 2020, 12:31:46 AM
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.
Title: Re: Solstice Randomizer (NES)
Post by: JP32 on June 09, 2020, 10:38:05 AM
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.
Title: Re: Solstice Randomizer (NES)
Post by: Googie on June 10, 2020, 11:27:17 AM
I'm gonna try this randomizer, I love Solstice, thanks for the hookup! :D
Title: Re: Solstice Randomizer (NES)
Post by: pbandpickle on June 11, 2020, 08:34:39 PM
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?
Title: Re: Solstice Randomizer (NES)
Post by: JP32 on June 15, 2020, 09:52:16 AM
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?
Title: Re: Solstice Randomizer (NES)
Post by: 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 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.
Title: Re: Solstice Randomizer (NES)
Post by: Googie on June 16, 2020, 07:36:11 PM
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
Title: Re: Solstice Randomizer (NES)
Post by: pbandpickle on June 16, 2020, 09:10:17 PM
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:

(https://pbandpickle.com/SolRand/Images/sol4.png)

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...
Title: Re: Solstice Randomizer (NES)
Post by: Googie on June 20, 2020, 08:19:01 PM
I can't wait to play with the randomizer when it's updated.  :beer:
Title: Re: Solstice Randomizer (NES)
Post by: pbandpickle on June 20, 2020, 08:33:22 PM
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!
Title: Re: Solstice Randomizer (NES)
Post by: JP32 on June 21, 2020, 05:03:25 AM
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.
Title: Re: Solstice Randomizer (NES)
Post by: pbandpickle on June 21, 2020, 09:59:56 AM
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.***
Title: Re: Solstice Randomizer (NES)
Post by: pbandpickle on July 04, 2020, 10:45:40 PM
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.
Title: Re: Solstice Randomizer (NES)
Post by: JP32 on July 05, 2020, 07:09:38 AM
Awesome!  :)

Some bugs I found:
(this is the seed and settings I used)
(https://i.ibb.co/2YRVKgS/Solstice-021733-Cd-KIPTLBR-1.png)
In these two rooms the item palette correction isn't applied (room ID's 3E and 3F)
(https://i.ibb.co/CvD2wzp/Solstice-021733-Cd-KIPTLBR-2.png)
(https://i.ibb.co/Qkf4SC2/Solstice-021733-Cd-KIPTLBR-3.png)
but is on the lowest room:
(https://i.ibb.co/kqd5QjZ/Solstice-021733-Cd-KIPTLBR-4.png)
mis-placed block:
(https://i.ibb.co/GnY2p3t/Solstice-021733-Cd-KIPTLBR-0.png)

I'll report more once I beat this seed :thumbsup:
Title: Re: Solstice Randomizer (NES)
Post by: pbandpickle on July 05, 2020, 01:41:33 PM
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!
Title: Re: Solstice Randomizer (NES)
Post by: JP32 on July 05, 2020, 06:34:22 PM
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 (https://pastebin.com/hyeinpRY), 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?
(https://i.ibb.co/pdqG87s/Solstice-021733-Cd-KIPTLBR-23.png)
Oh shit its blue one
(https://i.ibb.co/JtYJrvH/Solstice-021733-Cd-KIPTLBR-24.png)
Mis-placed block
(https://i.ibb.co/QC67XWc/Solstice-021733-Cd-KIPTLBR-19.png)
messed up floor
(https://i.ibb.co/zffS8pd/Solstice-021733-Cd-KIPTLBR-18.png)
This room looks little too messy, this was the only one out of all other edited rooms that stuck out like sore thumb
(https://i.ibb.co/wszL1cz/Solstice-021733-Cd-KIPTLBR-16.png)
Blue potion?
(https://i.ibb.co/cxFHVDw/Solstice-021733-Cd-KIPTLBR-14.png)
Surprise its actually yellow!
(https://i.ibb.co/8003zjJ/Solstice-021733-Cd-KIPTLBR-15.png)
Hmm, let me guess, green potion?
(https://i.ibb.co/yWd6P3S/Solstice-021733-Cd-KIPTLBR-9.png)
Nope purple potion
(https://i.ibb.co/Qkf4SC2/Solstice-021733-Cd-KIPTLBR-3.png)
Yellow potion? I hope?
(https://i.ibb.co/XJm18S1/Solstice-021733-Cd-KIPTLBR-6.png)
sorry no
(https://i.ibb.co/JtYJrvH/Solstice-021733-Cd-KIPTLBR-24.png)
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)
(https://i.ibb.co/MCpcdqP/Solstice-021733-Cd-KIPTLBR-5.png)
What is spike ball doing here?
(https://i.ibb.co/Gp2hc2c/Solstice-021733-Cd-KIPTLBR-12.png)

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:
Title: Re: Solstice Randomizer (NES)
Post by: pbandpickle on July 05, 2020, 06:54:59 PM
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.
Title: Re: Solstice Randomizer (NES)
Post by: JP32 on July 06, 2020, 05:13:45 PM
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?
(https://i.ibb.co/VxkfHKb/Solstice-f6deed-Cd-KIPTLBR-0.png)
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
(https://i.ibb.co/GxCYjht/Solstice-f6deed-Cd-KIPTLBR-15.png)
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
(https://i.ibb.co/KDscWjs/Solstice-f6deed-Cd-KIPTLBR-14.png)
This time around I was able to finish the run 8)
(https://i.ibb.co/YDMJ44q/Solstice-f6deed-Cd-KIPTLBR-16.png)
Seed: f6deed    Options: CdKIPTLBR
Title: Re: Solstice Randomizer (NES)
Post by: pbandpickle on July 06, 2020, 05:27:54 PM
Well, the magic boot randomizer being broken makes complete sense as I am incapable of fixing anything without breaking something :P I'll review this later today.

I will review my detonator code again and will implement the room change that you have suggested.

EDIT:
-The magic boot randomizer appears to be working as intended. Please note that there are currently only 10 spots where the magic boots will spawn and 3 of them are in A3. So currently, there is a 30% chance the boots will be there. This will not be as prevalent once magic boot randomization is expanded.

-Detonator randomization is now disabled for the time being.
Title: Re: Solstice Randomizer (NES)
Post by: pbandpickle on July 19, 2020, 09:06:04 PM
Slight update. I fixed up the graphics a bit in rm 0x30. It's still a bit jacked but much better than before. I probably won't be touching it any further as solstice graphics are kind of complicated.

If playing on Random Start, room 0xFC has received a complete redesign to prevent a softlock while also making the room not boring. If you do not use random start, this room stays vanilla.

Here is the current roadmap:
   1. Fix detonator randomization
   2. Fix color correction
   3. Expand magic boots randomization
   4. Any other goofy things I can think of.

I haven't had as much time to work on it as I would like but I'll still be updating periodically.

Also, one randomization quirk i need to fix:
   Both rooms 60 and 5E are valid locations for Cave of the Doomed Souls key. This means if you happen to drop down the wrong shaft, it's a softlock. I may adjust this so that it can not spawn there but I dunno.

Another note, I am very curious what bytes 0x01A371 -> 0x01A3FE are used for. These bytes are strangely sandwiched between data for room 0x45 and 0x46 but is definitely NOT room data. I'll like to look into that some day....
Title: Re: Solstice Randomizer (NES)
Post by: pbandpickle on July 26, 2020, 10:34:21 PM
Not much to add except detonator randomization has been fixed. All this time I assumed there was something wrong with my randomization code when it was actually a side-effect of the game's programming.

Detonators are still only randomized with detonators but they should work correctly now. The only sideeffect is that you can hit the same detonator multiple times (doesn't do anything extra). It will never show a trigger detonator. Also, detonator randomization is forced on at the moment. I'll fix it during my vacation next week.
Title: Re: Solstice Randomizer (NES)
Post by: pbandpickle on August 23, 2020, 07:44:35 PM
***NEW UPDATE***

Expert Mode! - Start with 0 lives, cannot gain more lives, start with 1 use of each potion. Cannot hold more than 1 usage of each potion
New "Bottomless Hole" in the Caves of the Doom Souls when playing rando (to prevent softlocks)
Teleporter randomization now works instead of just pretending to work! wow!
Other miscellaneous bug fixes and text changes

detonator rando is still forced on. That will be a included in my next update.
Title: Re: Solstice Randomizer (NES)
Post by: pbandpickle on August 30, 2020, 08:33:29 PM
I was hoping to get detonator randomization done today but I ran into some issues. My next update will be out probably next weekend and will feature full detonator randomization and a greatly expanded magic boots randomization.

September 05, 2020, 10:50:22 PM - (Auto Merged - Double Posts are not allowed before 7 days.)

*** New Update is now live and contains the following features: ***

-Full detonator randomization (optional)
-Greatly expanded Magic Boots randomization (10+ more rooms it can appear in)
-"Fix object color palettes" actually works now

There are a few important notes about this latest update:

-Detonators will NEVER be replaced with a "triggered" detonator but they still work
-Enabling Magic Boots randomization will also apply the Random Start room edits. Sorry.

I pretty much break something every time I update it so plz let me know if something is not working or seems strange. Also, some room edits will seem strange (that's on purpose).
Title: Re: Solstice Randomizer (NES)
Post by: JonnyManjiro on October 04, 2020, 08:28:49 AM
Got through a seed of this with the latest build. Really enjoyed it and hope you keep up the good work ;)
Title: Re: Solstice Randomizer (NES)
Post by: pbandpickle on February 15, 2021, 06:10:40 PM
I'm finally coming back to this after a personal hiatus. I'll have some additional randomization options soon and finally fix the item color correction. The item color correction logic is technically correct but does not use the right colors due to a documentation error on my part. I plan to implement an update by this weekend.
Title: Re: Solstice Randomizer (NES)
Post by: pbandpickle on April 02, 2021, 10:30:52 PM
Heeeeeey, so this isn't dead. I did fix the color correction several seeks ago but forgot to update this topic. In other news, I finally found the room pointers. I'm not super knowledgeable with assembly or anything so figuring this out took quite a long time. With this info it should be fairly easy to make all sorts of adjustments to rooms.

Room Pointer Data:

Room pointer data starts at 0x18010 in the rom. The pointers are stored in two groups, the first byte for all rooms, in order, followed by the second byte for all rooms, also in order.

First bytes are 0x18010 - 0x1810C
Second bytes are 0x1810D - 0x18209

During a room transition, the room data is very briefly switched into memory. The room pointers are then stored at 0x0016 and 0x0017 in memory and used as an offset to lookup the room data.

So for example:
Room 02:
    1st byte: 0x18012 = 03
    2nd byte: 0x1810F = 84

This means the room data for Room 02 is currently loaded into memory address 0x8403. And sure enough, here is is:

(https://pbandpickle.com/img/leveldata.png)

Interestingly enough, this also explains why Room A2 does not exist. The pointer data for A2 just points to Room 00. With this information, you could easily adjust the pointer and add room A2 back in somewhere.

Room 00: 0x18010 = 88, 0x1810F = 83
Room A2: 0x180B2 = 88, 0x181AF = 83

Super neat!

Also, if you make room edits and need to update the pointers in the ROM your room data should start at 0x010010 + room offset. For example, room 2A:

2A offset byte 1 @ 0x1803A: D7
2A offset byte 2 @ 0x18137: 98

Room start should be located in ROM at byte 10010 + 98D7 = 0x0198E7 which is correct. This works for every single room in game and I have validated it accordingly. I already have an idea on how to reintroduce missing room A2 into my randomizer... so many ideas!

Regarding room data, there are three groups of bytes in the middle of room data that I don't believe are ever utilized. While I am not 100% sure yet, this appears to be left over partial room data or just garbage.

Unused Bytes #1: 0x183CB -> 0x183F9 (47 bytes)
Unused Bytes #2: 0x1A321 -> 0x1A3FE (222 bytes)
Unused Bytes #3: 0x1E57F -> 0x1E597 (25 bytes)

While this isn't tons of space, it does give us an additional 294 bytes of room data space for whatever adjustments we would like to make. 99% of rooms are < 300 bytes so this is fairly substation extra space.

One thing that still eludes me in exactly how the graphics are stored in the ROM. Currently, this is beyond my grasp but I hope to figure this out eventually because adding custom graphics would be great.
Title: Re: Solstice Randomizer (NES)
Post by: JP32 on April 04, 2021, 06:51:18 AM
You just need to press +1 byte button few times in yy-chr to make graphics appear properly:

(https://i.imgur.com/zqZgqtA.png)

(https://i.imgur.com/4icfu03.png)
Like here I replaced the solstice guy sprites with the troll enemy via editing graphics. I have no idea how to do the same thing outside of yy-chr though ;D.

Quote
Regarding room data, there are three groups of bytes in the middle of room data that I don't believe are ever utilized. While I am not 100% sure yet, this appears to be left over partial room data or just garbage.

Unused Bytes #1: 0x183CB -> 0x183F9 (47 bytes)
Unused Bytes #2: 0x1A321 -> 0x1A3FE (222 bytes)
Unused Bytes #3: 0x1E57F -> 0x1E597 (25 bytes)
Interesting, I'll poke around to see if theres any stray room data there or if the game ever accesses that.

Also do you mind if I add your Room Pointer Data findings to my doc?


EDIT:

Unused Bytes #1: 0x183CB -> 0x183F9 (47 bytes)
Unused room!
Nothing special, it has no sprites and it only has on exit to room ID 01


27 17 37 13 00 ;orange room, 5x3 size
00 FF 00 81 00 00 FF FF FF FF FF FF FF ;main castle 1 wall graphics window-less, basic floor.
04 18 01 ;only one exit to room ID 01
06 ;how many normal blocks
00 01 00 80 ;normal blocks start
00 01 01 80 ;basic block graphics
00 01 02 80
00 11 00 80
00 11 01 80 
00 21 00 80  ;normal blocks end
00 ;end of room data

(https://i.imgur.com/8bqczv5.png)

Sooo.. early version of the very first room, its also located right after where final room ID 00 is  ::) .
Title: Re: Solstice Randomizer (NES)
Post by: pbandpickle on April 04, 2021, 03:06:03 PM
Please go ahead and add to your notes! I couldn't have done any of this without your documentation anyway.

I zeroed out the bytes in group 1 and 2 and played around a bit. There were no issues but I wasn't thorough in any way.

That is awesome that you figured out the graphics, at least within yy-chr. I'll take a look at it soon and see if I can get any more information.

I have a lot of other documentation I have gathered over the year. I created a complete, color-coded spread sheet of all room data. I have color coded each section of room data so that it is easy to tell what part it is. Specifically, I have objects, room graphics, exits, normal blocks, special blocks all color coded.

I plan on making an room exit randomizer soon but it will take some serious planning...
Title: Re: Solstice Randomizer (NES)
Post by: JP32 on April 05, 2021, 05:47:10 AM
Unused Bytes #2: 0x1A321 -> 0x1A3FE (222 bytes) Junk, not accessed by the game ever.

01 03 16 03 80 09 03 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 03 10 03 00 00 00 00 00 00 00 00 00 00 00 00 00 03 20 03 00 00 00 00 00
00 00 00 00 00 00 00 00 03 06 03 02 00 00 00 00 00 00 00 00 00 00 00 00 03 16 03 02 00 00 00 00 00 00 00 00 00 00 00 00 03 26 03 02 00 00
00 00 00 00 00 00 00 00 00 00 00 02 03 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 22 03 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 14
03 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00


Junk/stray/erased data, not accessed by the game ever.
Located in-between of rooms ID 45 and ID 46 (1a2f5 and 1A3FF), its possible that one point room ID 45 was larger or had more objects in it,
and then they made it smaller, or maybe there was room/rooms in this space, but since the leftover data is just junk its impossible to tell.


Unused Bytes #3: 0x1E57F -> 0x1E597 (25 bytes)

Used by the intro's rooms:

(https://i.imgur.com/O84FEQG.png)
(https://i.imgur.com/l9awWpJ.png)

Kinda weird placement since its in-between rooms FC and FE. Room attributes(palette, room size) is in 0x0006e6, which is also shared by room ID FE / ending cut-scene.

(https://i.imgur.com/umvCV6V.png)
Like here I changed rooms palette to blue, and same and only change changes ending cut-scene:

(https://i.imgur.com/Ipa6KQn.png)

So the devs used same Room attributes for both and everything else in different locations. the endings full room (room ID FE) data is located in 0x1e598 - 0x01e601, which interestingly enough has its unique room palette(14 04 24, purple/pink) that gets overridden to green.
Title: Re: Solstice Randomizer (NES)
Post by: pbandpickle on October 23, 2021, 03:18:36 PM
Hey, I am back after half a year with a update! Wow! Lots of things going on in my life have prevented me from working on this. With this update I bring one new feature.

There is now the option of randomizing the Shadax player sprite. There are 10 different possible sprites (including standard Shadax). The list of possible sprites are as follows: Bug, Eye, Foot, Orc, Skeleton, Slime, Spider, Worm and one more super special sprite!

All sprites have custom death animations, some more custom than others. Hooray.
Title: Re: Solstice Randomizer (NES)
Post by: JP32 on October 24, 2021, 11:54:13 AM
Nice.

Theres also Solstice disassembly available here (https://github.com/cyneprepou4uk/NES-Games-Disassembly) by Cyneprepou4uk, I've poked around and its neat, one step closer to the solstice room editor that I want to make someday. :beer:
Title: Re: Solstice Randomizer (NES)
Post by: RobertCorwen on May 24, 2022, 04:53:36 PM
Hi,

Just a little note to let you know that I've tried to create a randomized file. It seemed to generate properly (I could get to the IPS/LOG download page), however when trying to download the IPS patch, I get a 404 error every single time.

That makes me sad, this game is in my Top 3 of all-time fave games. I didn't know a randomizer existed until now, otherwise I would have abused it! 😀

Thanks,

RC
Title: Re: Solstice Randomizer (NES)
Post by: RobertCorwen on July 06, 2022, 01:23:08 PM
Hi,

Just a few screenshots to show you what happens when the patch is generated. Please note that the filename truncated, which *MAY* mean there is some path error when generating/storing the file for download (the "S" from "Solstice" is missing).

Thanks,

RC

(https://i.ibb.co/7GzGC5h/1.png)
(https://i.ibb.co/Q6hbcxp/2.png)
Title: Re: Solstice Randomizer (NES)
Post by: pbandpickle on August 17, 2022, 02:32:04 PM
This is now fixed. I did something incredibly stupid ever since Shadax sprite randomization was implemented at the end of 2021. As a result the filenames would only generate correctly if sprite randomization was enabled.

Please try again and I apologize for the inconvenience.

I stepped away from this a long time ago due to life complications but would like to revisit and fix this up. I have a few projects in the way but will update here if/when I come back to it.
Title: Re: Solstice Randomizer (NES)
Post by: RobertCorwen on August 17, 2022, 04:25:54 PM
It does work now, thanks @pbandpickle!

I tried it a little bit, I noticed the infinite hole in the basement. That's quite a lifesaver, especially when you don't yet have the magical boots!

I also like that you included the Shadax/potions color fix into your randomizer. This makes this even better!

After playing this gem at least a dozen times a year since the game came out ages ago (gosh, I am getting old), it feels all weird to have the items swapped all around! Clearly many hours in perspective...

QuoteI stepped away from this a long time ago due to life complications but would like to revisit and fix this up. I have a few projects in the way but will update here if/when I come back to it.
Sorry to hear that, I hope you'll get well very soon!

Unrelated: I was wondering, is this a python script running server-side that applies the different options in the file?

Thx!

RC
Title: Re: Solstice Randomizer (NES)
Post by: RobertCorwen on August 21, 2022, 07:11:10 PM
I passed through this room, and in place of the key there was a credit (continue). If you 'Game Over' and respawn into this room, Shadax continuously falls onto the spikes and loses all lives.

(https://www.imgbly.com/ib/qrOgtwjV9i.png)
Title: Re: Solstice Randomizer (NES)
Post by: RobertCorwen on November 14, 2022, 10:55:47 PM
Hi pbandpickle,

I've been playing a lot of seeds so far, mix-and-matching many optional switches.

First, I recently discovered what I consider a bug in the vanilla ROM that I never thought existed regarding credits. I've (and many people online) always considered that losing all lives and using a credit would put you in the same exact state you were when pickup up the said credit... Boy was I mistaken.

In fact, when resuming play using a credit, it appears that on the pause screen, the game gives you a total of 3 hats and +2 potion shots for each potion. I formerly thought it would not be the case, I'm really baffled I haven't come across this behaviour before (maybe it's because I haven't really used a credit in years)...

That being said, your "expert mode" happens to be a really good idea, but unless credits get fixed in the base ROM, it's pretty much next to useless, as getting a credit gives you lives and potions back. Although, getting a new potion will reduce the count to 1 single shot for said potion.

I can see two outcomes really for the accuracy of "expert mode". Either:
1) When selecting expert mode, credits can get picked but their behaviour is deactivated (they will never act as continues and upon dying you get back to the title screen no matter what); or
2) Someone hacks the base vanilla ROM to fix the credits behaviour to it's intended one (making it avail here on this site), which would then be used as a new base for the rando hack (to be applied on top).

Let me know what you think! I can give you more precisions if needs be.

Regards,

Robert


PS.: I thoroughly tested all this using both FCEU and Nestopia using 2 different dumps of Solstice, and the results were exactly the same in all cases. The SHA1 fingerprints I tested are:
1) 992da7fac9248204cddcdf2e37412007359603ba (what I consider should be a valid vanilla ROM);
2) e21f7982913b11933b3a6730316c81026575c70d (which seems to be some variant allowing to skip the title screen quickly).
Title: Re: Solstice Randomizer (NES)
Post by: JP32 on November 15, 2022, 03:26:53 PM
Okay I took look at the disassembly and figured it out.


So for lives, in short the game just sets lives to 3 after continue.
So to fix it, change byte at address "0x00013B" to "00" (default "03")
Or in disassembly bank_00.asm control+f "0x00013A 00:812A: A9 03" and change "LDA #$03" to "LDA #$00"


For potions, this took little bit to find, but in short the game just adds +2 to whatever your potion amount was when you died, regardless how much you had when you picked up the credit coin, I guess that was easy and quick solution as it prevents any possible softlocks. This is the intended behavior by the developers AFAIK, after taking quick look at the disassembly.


So to fix it, change byte at address "0x00015C" to "00" (default "02"), doing this the game doesn't add anything to your potions. Change to "01" to only add +1 etc.
Or in disassembly bank_00.asm control+f "0x00015B 00:814B: 69 02" and change "ADC #$02" to "ADC #$00" Change to "#$01" to only add +1 etc.

This is just dirty quick fix, to make it "save" how much you had at the time would take extra code and shit.

To change starting potion amount:
At address "0x000d2b" change byte to "00" (default "02").
Or in disassembly bank_00.asm control+f "0x000D2A 00:8D1A: A9 02" and change "LDA #$02" to "LDA #$00"

To change starting lives amount:
At address "0x000d56" change byte to "00" (default "04").
Or in disassembly bank_00.asm control+f "0x000D55 00:8D45: A9 04" and change "LDA #$04" to "LDA #$00"

Anyway heres two patches (https://www.mediafire.com/file/m3k7c6r6er3ewla/solstice+stuff.zip/file), one changes the continue thing and one does that and also changes starting stuff to zero too, I only quickly tested these so let me know if there are any problems, I also didn't check the cheat code if that still works, it mostly likely should work.
Title: Re: Solstice Randomizer (NES)
Post by: Cyneprepou4uk on November 15, 2022, 06:52:16 PM
@JP32, 0x000155 subroutine is also executed when you collect all staff pieces.
Title: Re: Solstice Randomizer (NES)
Post by: RobertCorwen on November 15, 2022, 09:56:46 PM
Thanks @JP32, I quickly applied those fixes using my hex editor and it seemed to have worked. Now I'll try to use my modified ROM with the randomizer patch with expert mode enabled to see if it works.

@Cyneprepou4uk
What does that subroutine implies exactly? Is there something to fix regarding staff pieces?
Title: Re: Solstice Randomizer (NES)
Post by: RobertCorwen on November 15, 2022, 10:19:02 PM
Quote from: RobertCorwen on November 15, 2022, 09:56:46 PMNow I'll try to use my modified ROM with the randomizer patch with expert mode enabled to see if it works.

OK, it does seem to work as expected if you set both "0x00013B" and "0x00015C" to 0 as @JP32 kindly advised. It obviously is not as perfect as the "save state" behaviour I expected from credits, but it's close enough to make the expert mode viable in the randomizer.

@JP32
Are we able to modify the game code so after losing all lives, we are brought to the game over screen and then the title screen directly (bypassing the credits completely regardless of how many has been collected)? Here is a screenshot of what I mean.

Or alternatively, if the above is too hard to do, is there a way to keep the credits count at 0 in RAM at all times after picking a credit? Please let me know!

(https://i.ibb.co/zVYtbW9/concept.png)


Thanks!

Robert
Title: Re: Solstice Randomizer (NES)
Post by: JP32 on November 16, 2022, 09:37:08 AM
Quote from: Cyneprepou4uk on November 15, 2022, 06:52:16 PM@JP32, 0x000155 subroutine is also executed when you collect all staff pieces.
Oh yeah that, the game does that too, you dont notice these things as at most time you have full potions anyway. But yeah the game also fills up the potions after getting all staff pieces + gives permanent invincibility.

Quote from: RobertCorwen on November 15, 2022, 10:19:02 PM@JP32
Are we able to modify the game code so after losing all lives, we are brought to the game over screen and then the title screen directly (bypassing the credits completely regardless of how many has been collected)? Here is a screenshot of what I mean.

Or alternatively, if the above is too hard to do, is there a way to keep the credits count at 0 in RAM at all times after picking a credit? Please let me know!

(https://i.ibb.co/zVYtbW9/concept.png)


Thanks!

Robert
That should be easy enough, I'll poke around later today.
Title: Re: Solstice Randomizer (NES)
Post by: RobertCorwen on November 16, 2022, 09:58:11 AM
QuoteThat should be easy enough, I'll poke around later today.
Thanks @JP32!

QuoteOh yeah that, the game does that too, you dont notice these things as at most time you have full potions anyway. But yeah the game also fills up the potions after getting all staff pieces + gives permanent invincibility.
I think this should be left as is. This is the only real perk of getting the staff.

Although, if I were allowed a wish, I would want a piece of staff to constantly appear in room FB, replacing any of the 3 items that are there (the room adjacent to the one that holds the last piece of staff in the vanilla ROM, locked by a detonator). However, the detonator that opens room FB must be located anywhere but in room FB for that to work.

This would ensure that no matter the item placement of the rando, you can't get all 6 pieces of staff without climbing all the way atop the "Tower of Ultimate Terror", which otherwise gets bypassed quite often in a typical rando run. And the fact it is locked into a detonator room makes it more likely that you can only get the last piece at the very end of the run (thus having full potions at that time would be less of an issue really, akin to the vanilla ROM).

My two cents 😀

Robert
Title: Re: Solstice Randomizer (NES)
Post by: JP32 on November 16, 2022, 10:15:12 AM
Okay so that didn't took long.

At address "0x001480" change byte to "60" (default "B9").
Or in disassembly bank_00.asm control+f "ofs_005_9470_credit:" and change "LDA tbl_947A_credits - $EB,Y" to "RTS", or just remove first three lines to save space.

So basically this makes the credit items code to be skipped, so the game doesn't update credits stuff so it acts like you never picked one, completion % still raises and game remembers that you picked it up though.

Again this is little bit crude "fix" but it seems to work lol.

I think the all staff pieces permanent invincibility code is elsewhere and these shouldn't change this but I have not tested these changes fully.
Title: Re: Solstice Randomizer (NES)
Post by: RobertCorwen on November 16, 2022, 12:11:34 PM
QuoteAgain this is little bit crude "fix" but it seems to work lol.
I confirm that it works quite well. From now on, I will keep a ROM with the "0x001480" fix and the palette inconsistencies fix (https://www.romhacking.net/hacks/6581/) applied as a base before applying any rando hack on top (the rando hack applies the necessary fixes to potions and lives if you enable the expert mode). Since the credits are completely bypassed now, I won't be needing the previous fixes listed in post #39 (although I'll keep them handy for future reference, who knows!).

Even in a rando without expert mode enabled, credits are really buggy when shuffled around. That's because each single credit come with an in-the-room location for Shadax to appear at. For instance, lets say you pick a credit in a small room during a rando, but said credit was normally in a large room in the vanilla ROM, when using the credit Shadax will appear out of bounds. In some other cases, like in my post #37, Shadax can even respawn on top of spikes and get killed instantly.

What I'm really trying to say is that in any rando starting now (regardless of the expert switch), it's beneficial to make sure to fix the base ROM in order to completely disable the credits, cause using a randomized credit almost always results in a mess, and trying to fix that would be too involving. I consider that anyone interested to play Solstice randomized has enough experience and skills to avoid reliance on credits anyway. It's a known fact that Solstice can be quite hard to master, especially for newcomers.

Thank you @JP32!

Robert

(https://i.ibb.co/6v5ddXY/solstice-oob.png)
Title: Re: Solstice Randomizer (NES)
Post by: RobertCorwen on November 16, 2022, 01:10:55 PM
Hi,

I have one more question today, in 2 panels. On a vanilla ROM, which address(es) should I modify if:

1) I want to prevent new lives being added when picking them up?
2) I want potions to never exceed 1 shot available? (if 0 shots it goes to 1, if 1 shot it stays at 1)

I don't know how you guys are able to locate those address with such precision, it feels like total wizardry to me as things goes. It's really a skill I'd like to learn, as overwhelming it looks at first glance...

As always, thanks in advance!

Robert
Title: Re: Solstice Randomizer (NES)
Post by: JP32 on November 16, 2022, 02:52:57 PM
1.
At address "0x001465" change byte to "60" (default "EE").
Or in disassembly bank_00.asm control+f "ofs_005_9455_hat:" and change "INC ram_lives" to "RTS", or just remove the line completely to save single byte
Like with credits this skips hats code, so the game doesn't increase lives ram value when its picked up.

2.
At address "0x00147A" change byte to "01" (default "04").
Or in disassembly bank_00.asm control+f "0x00147A 00:946A: A9 04" and change "LDA #$04" to "LDA #$01"
This changes what value potions go to when picked up, by default it goes to hex "04"(full), with "01" it forces minimum.

Hat code is untested but should work, I only quickly tested the potion one but it should work too. You probably should combine the latter one with the starting&after continue potion amount changes too.


With the disassembly, which is basically the source code its pretty straightforward(although solstices one is jungle of uncommented/non-documented mess due to my laziness lol), assembly can be scary, but with some practice and learning its not impossible to read/write/understand, start simple. Before the disassembly I had to use FCEUX's debugging tools and hex editor which was even more tedious.


As for the credits making you go out of bounds, pbandpickle should fix the credit X/Y/Z positions in the credit table ("tbl_9674:" in the disassembly) (https://pastebin.com/hX2wZkwS) so that when credits are randomized, that table is also correctly modified to match where the credits are after being randomized. It sounds like the XYZ positions are not updated so player ends up in wrong location.
Title: Re: Solstice Randomizer (NES)
Post by: Cyneprepou4uk on November 16, 2022, 03:27:08 PM
Quote from: JP32 on November 16, 2022, 09:37:08 AMOh yeah that, the game does that too, you dont notice these things as at most time you have full potions anyway. But yeah the game also fills up the potions after getting all staff pieces + gives permanent invincibility.

What I meant is, if you change something inside this subroutine like you did for respawning via a credit, this will have the same effect for picking up all staff pieces.
Title: Re: Solstice Randomizer (NES)
Post by: JP32 on November 16, 2022, 04:03:36 PM
Quote from: Cyneprepou4uk on November 16, 2022, 03:27:08 PMWhat I meant is, if you change something inside this subroutine like you did for respawning via a credit, this will have the same effect for picking up all staff pieces.
I know(I probably just worded my initial response badly), but I also said I've only quickly tested these so I dont know if there are side effects, since RobertCorwen requested them he can do full testing, I dont have time for that until weekend.

And what the game does after picking up all staff pieces AFAIK is give player permanent blue potion effect, adds +2 to all potions and opens up the ending Room(to room FE, in F3) and displays the message, so what my change does in this case, in theory anyway, is that after collecting all staff pieces does not give any extra potions(or just one). I did say its dirty quick fix :).
Title: Re: Solstice Randomizer (NES)
Post by: Cyneprepou4uk on November 16, 2022, 04:39:56 PM
The best thing to do here would be leaving the subroutine intact, and just NOP'ing out the JSR to it when respawning.

Also, by mentioning the disassembly, you should at least provide a link to it. I don't thing this dude even knows what or where it is.

Anyway, we are getting off topic here. It is about randomizer after all, not Solstice hacking requests.
Title: Re: Solstice Randomizer (NES)
Post by: RobertCorwen on November 16, 2022, 08:24:15 PM
QuoteJP32 said: "I know(I probably just worded my initial response badly), but I also said I've only quickly tested these so I dont know if there are side effects, since RobertCorwen requested them he can do full testing, I dont have time for that until weekend."
First, the default behaviour when getting the full staff: Shadax becomes invulnerable and flashes continually (only spikes can affect him, so it's basically the same effect as a blue potion, but permanent). The potions are also maxed out (you can use them infinitely, they remain full).

Also, note that with any of the fixes below applied, I had no problem getting 100% runs, which means that none of these fixes affect the completion rate (as previously expected by @JP32).

I did several 100% playthroughs on a vanilla ROM with various fixes applied, but without applying a randomizer patch, so the latter can't interfere with my testing. In a nutshell, here are my observations/recommendations:

The following fixes do not seem to have any negative side effects:
"0x000d56" (starting amount of lives);   => AFAIK, the randomizer fixes this setting when Expert mode is enabled, no need to enable manually.
"0x000d2b" (starting amount of uses per potion);   => AFAIK, the randomizer fixes this setting when Expert mode is enabled, no need to enable manually.
"0x00147A" (max amount of uses per potion);   => AFAIK, the randomizer fixes this setting when Expert mode is enabled, no need to enable manually. I strongly recommend not to go lower than 2 when applying this fix to a vanilla ROM, otherwise you may not be able to finish the game (you need at least 2 back-to-back blue potion uses to get past rooms D5 and D7, with no other blue potion refills available in that area. It can still be done with 1 use of a blue potion if you make your way to D7 from the "Mines of Insanity", however this route is not obvious and really cumbersome).
"0x001465" (prevents lives from being added when picked up);   => AFAIK, the randomizer fixes this setting when Expert mode is enabled, no need to enable manually.
"0x001480" (prevents credits from being added when picked up).   => Recommended with the randomizer patch, no matter the options selected.

The following fixes ARE NOT recommended:
"0x00015C" (amount of potion uses added after using a credit)   => Obsolete when the credits fix is applied
Reason for rejecting: affects the potion levels after getting the full staff, in comparison to the default bahaviour. The potion levels are kept the same as before getting the full staff (they are not maxed out and if you continue using them, they will deplete). This fix should thus be avoided.
"0x00013B" (amount of lives added after using a credit)   => Obsolete when the credit fix is applied
Reason for rejecting: has no use when the credits fix is applied (setting "0x001480" to "60"), so I recommend not applying it.

QuoteCyneprepou4uk said: "Also, by mentioning the disassembly, you should at least provide a link to it. I don't thing this dude even knows what or where it is."
I already noticed the Github link (https://github.com/cyneprepou4uk/NES-Games-Disassembly) in the footer of your posts. I quickly looked at the Solstice files from the repo yesterday, but as @JP32 mentioned, Solstice code lacks comments in several places, so it's really difficult to know what affects what, especially for the uninitiated (and it's why I reached for help here).

QuoteCyneprepou4uk said: "Anyway, we are getting off topic here. It is about randomizer after all, not Solstice hacking requests."
With maybe the exception of post #44 in which I dared voicing a wish of mine, I tried my very best to keep in line with the randomizer topic. The idea behind my recent posts was an attempt to fix the Expert mode of the randomizer, which currently is broken because of the way credits work by default. I consider that @JP32 greatly delivered on that front.

Don't worry, I'm keeping most of my requests for @pbandpickle's official return; I have many core ideas that could greatly involve the randomizer, if he would consider listening to them!

Thank you all!

Robert
Title: Re: Solstice Randomizer (NES)
Post by: JP32 on November 17, 2022, 02:42:57 PM
QuoteI strongly recommend not to go lower than 2 when applying this fix to a vanilla ROM, otherwise you may not be able to finish the game (you need at least 2 back-to-back blue potion uses to get past rooms D5 and D7, with no other blue potion refills available in that area. It can still be done with 1 use of a blue potion if you make your way to D7 from the "Mines of Insanity", however this route is not obvious and really cumbersome).
Huh? Where do you even need blue potion in room D5? How can you even go from caves to stonehedge garden to the final area, without the block? Theres like ten way to go from D6 to D7 (https://webmshare.com/8KzKV) and I just dont see reason to use blue potion in D5 unless you meant some other room.

Like I know you need blue potion in D7, but going from the usual route from slaughter yards -> mines of insanity -> stonehedge gardens -> final area, but you only need one blue potion use in D7.. now that I think about it, can you go through F0 room without using potions if you take the item? I always use blue/purple potion there.
Title: Re: Solstice Randomizer (NES)
Post by: RobertCorwen on November 18, 2022, 11:18:13 PM
Quote from: JP32 on November 17, 2022, 02:42:57 PMHuh? Where do you even need blue potion in room D5? How can you even go from caves to stonehedge garden to the final area, without the block? Theres like ten way to go from D6 to D7 (https://webmshare.com/8KzKV) and I just dont see reason to use blue potion in D5 unless you meant some other room.

Like I know you need blue potion in D7, but going from the usual route from slaughter yards -> mines of insanity -> stonehedge gardens -> final area, but you only need one blue potion use in D7.. now that I think about it, can you go through F0 room without using potions if you take the item? I always use blue/purple potion there.

Hi @JP32,

Please find the attached screenshot which also contains what I meant in my previous comment. It may be appearing a bit small here, just open the image in a new tab.

It's not unfeasible by any means, it's just very different than any route I've taken before, since I don't usually have a potion constraint. As it stands, the Mines of Insanity route cannot be integrated in my routing without severely affecting my pacing. I need to start to consider using a whole new route that will allow for the lowest potion usage rate possible (less menu fidgeting), altho I need to figure this all out in detail and make sure it's faster than my old route before I start putting some serious time grinding this.

My two cents, have a good weekend!

Robert

(https://i.ibb.co/SfvcQ2j/capture.png)
Title: Re: Solstice Randomizer (NES)
Post by: JP32 on November 19, 2022, 07:07:16 AM
Ahh now I understand, it never even occurred to me that you could use shrek goblin to get the block lol. I always took the, I guess, intended long route.
Title: Re: Solstice Randomizer (NES)
Post by: RobertCorwen on November 24, 2022, 05:38:33 PM
Quote from: JP32 on November 16, 2022, 02:52:57 PM1.
At address "0x001465" change byte to "60" (default "EE").
Or in disassembly bank_00.asm control+f "ofs_005_9455_hat:" and change "INC ram_lives" to "RTS", or just remove the line completely to save single byte
Like with credits this skips hats code, so the game doesn't increase lives ram value when its picked up.

@JP32
Is there a way to do the same thing as above (from posts #47/48), but for potions instead?

I want to be sure that picking a potion refill on the map does not affect the count in the pause screen. Let's say I modify 0x000d2b (starting potions) to 1 and 0x00147A (max amount of potions) to 0, I need to be sure that newly picked up potion refills will be skipped in the code.

Right now, if you modify the 2 addresses above, you start with 1 potion, but as soon as you get 1 potion refill on the map, the potion count gets to 0; I want it to stay at 1, but if the player uses the starting potion and then picks up a refill on the map, it will then stay at 0. I hope you get what I mean.

Please let me know if this is possible or not, I can't find what I'm looking for in the disassembly, I'm puzzled on this one.

Also, as @Cyneprepou4uk implied in his recent comments, should we consider starting a new thread for game modifications (separate from the rando)? I mean, after this one request I don't foresee any more else in the short/middle term, but I want everyone to keep being happy if I can.

Thanks a lot!

Robert
Title: Re: Solstice Randomizer (NES)
Post by: RobertCorwen on November 25, 2022, 09:42:28 PM
Quote from: RobertCorwen on November 24, 2022, 05:38:33 PM@JP32
Is there a way to do the same thing as above (from posts #47/48), but for potions instead?

OK nevermind, I found what I was looking for!

I took the hat skipping fix you gave me in post #48 as a hint, and looked at other subs in it's vicinity in the disassembly. I found 4 short subs (1 for each potion color); following the blue potion lines was the line I was looking for. So I basically changed "0x00147C" from "99" to "60", which completely removes the effect of picking potion refills on the map (they're still being counted towards 100% tho), and leaves untouched any starting potion amount one may have set by fixing the value for "0x000D2B".

I've tested it up with a few 100% runs, it seems to work exactly as I intended in my previous post, without any side-effect of any kind. Potions still max out when getting the full staff, which is desired bahaviour.

If he finds this pertinent, I suggest @pbandpickle to add the fix above to the rando's expert mode, as well as the no credits fix described in post #45. This will make the challenge more real, since the player will only get 1 shot at each potion (more if he feels 1 starting potion is not enough) without a possibility to refill, as well as removing the possibility to rely on credits to get more lives and potions back. Or maybe make this a new difficulty setting; hardcore seems like a fitting name.

Have a good weekend,

Robert
Title: Re: Solstice Randomizer (NES)
Post by: JP32 on November 26, 2022, 04:39:00 AM
Cool that you found solution yourself less work for me ;D  .

Anyway, if its completely unrelated to the randomzier(imo these previous posts haven't been so far, since the expert mode is little broken and we found solution for it),  you can use my hacks thread instead. (https://www.romhacking.net/forum/index.php?topic=35711.0) But dont flood it with requests as Im 99% likely to ignore them if they get too complicated or crazy, but Im happy to explain anything about how the game works or help with disassembly/hacking.