It's a very interesting and good game. I like the varied options. The setting and the objects of the game are cool. I hope you'll enlarge your creation in the future.
I love your game and I've been having a lot of fun with it! Unfortunately I've discovered a rare bug that causes it to freeze up, I think it may have something to do with the audio driver. Music keeps playing but everything else is frozen while the CPU loads register $2140 forever waiting for it to be not-zero. (Could be related to the small white enemies that chase you around, I think I've only seen it when they're on screen and was only able to reproduce it with 3 of them chasing me.)
I have a savestate and/or trace log of the event available if that'll help you figure out what happened! Could provide it over discord or whatever else is convenient. Great work on everything else!
Update: I tried 0.9.1 and the incident no longer happens on my savestate, but it looks like the problem may still occur elsewhere. vBlank is interrupting the audio driver while it's still waiting for a response from $2140 , causing it to miss it entirely and get stuck. I'm not sure what the best fix is but FYI!
I'll join in on the discussion. Khaz is explaining a crash that occurs due to a fault in SNESGSS's communication protocol (Yes, I know what sound driver this game uses. I've known it for many years.): namely, it sends out the last command ID ran to $2140/$F4. However, it then clears the latches some time afterwards, which zeroes out both sides. The SNES can miss the read (with VBLANK being a plausible cause), thus causing an infinite loop. (We were discussing this on the SNES Development Server Discord, actually.)
There are a couple of solutions running through my head per our discussion: the first is to disable vblanks (or other interruptions) entirely while a command is being sent through. The second is to keep track of what vertical scanline you're on (the value to check will be NTSC/PAL dependent, and I see you're targeting NTSC) and wait for vblank if the vertical scanline count is too high, then run the code in question that communicates with the SPC700.
Yeah I know of the issue, sfx_play is not NMI protected because my preferred solution is to have the game fast enough to never drop to 30fps.
It's not quite achieved here, when you're near a boss and with lots of enemies on screen the game may drop to 30fps. Turns out a big, open-world game with 1k entities is a lot for a SNES ;)
Surprisingly I haven't run into the boss yet. I'm just mostly doing exploring and crystal collecting. And yes, I know of the lots of enemies on screen case: surprisingly, I have decided to decline to attack any of them and instead just tank and/or avoid the hits. It also means I find the shields to be practical for this scenario.
If you don't want to deal with a missed VBLANK, then I recommend the scanline check approach to avoid that edge case. Either that, or both the SPC700 and SNES-side programming need to be modified to avoid that entirely.
That was one my of excuses to the theme, perspectives; are you a conqueror or a peaceful explorer? It's possible to win the game without killing a single enemy.
There's more than one boss, and one of them is involved in a quest.
Nice work! I've sunk a few hours into this so far, exploring and discovering secrets. Unfortunately I'm here to report a bug or two—the Fighter chassis design screen seems to be broken. I can't navigate past the second Shield slot, it just takes me straight to Done and then loops back to the engine slot again. Since the design screen doesn't fill in the battery slot by default, I can't select Done and exit the screen, so I'm stuck there with no way to bail out and save :( Wish I had saved more recently...
Also, buying the Carrier hull didn't work for me. I had 16 CY and the game still wouldn't let me buy it. I didn't try again with more currency.
Hope you can fix these bugs soon! I'm having a good time with the game on my SD2SNES/FxPak otherwise.
← Return to game
Comments
Log in with itch.io to leave a comment.
It's a very interesting and good game. I like the varied options. The setting and the objects of the game are cool. I hope you'll enlarge your creation in the future.
I love your game and I've been having a lot of fun with it! Unfortunately I've discovered a rare bug that causes it to freeze up, I think it may have something to do with the audio driver. Music keeps playing but everything else is frozen while the CPU loads register $2140 forever waiting for it to be not-zero. (Could be related to the small white enemies that chase you around, I think I've only seen it when they're on screen and was only able to reproduce it with 3 of them chasing me.)
I have a savestate and/or trace log of the event available if that'll help you figure out what happened! Could provide it over discord or whatever else is convenient. Great work on everything else!
Update: I tried 0.9.1 and the incident no longer happens on my savestate, but it looks like the problem may still occur elsewhere. vBlank is interrupting the audio driver while it's still waiting for a response from $2140 , causing it to miss it entirely and get stuck. I'm not sure what the best fix is but FYI!
I'll join in on the discussion. Khaz is explaining a crash that occurs due to a fault in SNESGSS's communication protocol (Yes, I know what sound driver this game uses. I've known it for many years.): namely, it sends out the last command ID ran to $2140/$F4. However, it then clears the latches some time afterwards, which zeroes out both sides. The SNES can miss the read (with VBLANK being a plausible cause), thus causing an infinite loop. (We were discussing this on the SNES Development Server Discord, actually.)
There are a couple of solutions running through my head per our discussion: the first is to disable vblanks (or other interruptions) entirely while a command is being sent through. The second is to keep track of what vertical scanline you're on (the value to check will be NTSC/PAL dependent, and I see you're targeting NTSC) and wait for vblank if the vertical scanline count is too high, then run the code in question that communicates with the SPC700.
Yeah I know of the issue, sfx_play is not NMI protected because my preferred solution is to have the game fast enough to never drop to 30fps.
It's not quite achieved here, when you're near a boss and with lots of enemies on screen the game may drop to 30fps. Turns out a big, open-world game with 1k entities is a lot for a SNES ;)
Surprisingly I haven't run into the boss yet. I'm just mostly doing exploring and crystal collecting. And yes, I know of the lots of enemies on screen case: surprisingly, I have decided to decline to attack any of them and instead just tank and/or avoid the hits. It also means I find the shields to be practical for this scenario.
If you don't want to deal with a missed VBLANK, then I recommend the scanline check approach to avoid that edge case. Either that, or both the SPC700 and SNES-side programming need to be modified to avoid that entirely.
That was one my of excuses to the theme, perspectives; are you a conqueror or a peaceful explorer? It's possible to win the game without killing a single enemy.
There's more than one boss, and one of them is involved in a quest.
Nice work! I've sunk a few hours into this so far, exploring and discovering secrets. Unfortunately I'm here to report a bug or two—the Fighter chassis design screen seems to be broken. I can't navigate past the second Shield slot, it just takes me straight to Done and then loops back to the engine slot again. Since the design screen doesn't fill in the battery slot by default, I can't select Done and exit the screen, so I'm stuck there with no way to bail out and save :( Wish I had saved more recently...
Also, buying the Carrier hull didn't work for me. I had 16 CY and the game still wouldn't let me buy it. I didn't try again with more currency.
Hope you can fix these bugs soon! I'm having a good time with the game on my SD2SNES/FxPak otherwise.
Thank you for the report! I've fixed both bugs and uploading a new build now. Existing saves are compatible.
Awesome, thank you!