#Void Stranger
1725 messages ¡ Page 2 of 2 (latest)
no worries, just thought about it
With all gamefiles
okay cool including the splash
Okay its working, just needed a chmod for the splash
Scales properly
Its not stretched so all goodđ
Ill give this a go on amber without sound
dang it, I didn't push the script revision with that in there sorry
its fine, i think the pm installer does this for all files anyway
Just for manual installs its required
should I add it into the script just in case?
yeah i would
dammit my portmaster on amber is too old
Dont have lzma enabled xdelta on here yet
Let me just copy a patched one to amber :p
yeah just grab a game.droid
do you have 2 tsp's? lol
Ones from my mom and sister haha
stardew machine
Couldnt let it slide for 40 euros on sale
Looking good on amberđ
Cant test the sound properly but i can faintly hear the music through the speaker. Id say shes ready for a prđ

last potential test before final pr is 720x720 res
otherwise, repo is prepped and good to go
And Iâll just keep adding stuff unless I complete this pr haha
exec > >(tee "$GAMEDIR/log.txt") 2>&1 change to > "$GAMEDIR/log.txt" && exec > >(tee "$GAMEDIR/log.txt") 2>&1, the new log method
RGB30/Arkos Boot logo with the patching splash screen appears and then it goes black (is this normal behaviour?)
Will test more soon*
Did it go black with no sound? if so, for how long?
looks like it scales pretty well with that resolution
Goes black with no sound for about a minute or 2 (probably the patching)
that's a shame
Yes
Normal behavior
So the splash will appear until gmloader takes over and controls the screen
Did the patching splash last 7ish seconds?
Nothing I can do once gmloader takes control unfortunately, unless I change Johnnyâs source code
Also expected⌠would be good if I could make the splash stay the whole time but đ¤ˇââď¸
Iâm taking this as confirmation that 720x720 is good to go đ ty Frax
Yeah the scaling looks awesome, would like to see more pictures
Excellent port, just completed it. Took alot out of me, I thought I was gonna have a stroke around 217ish.
Also what hardware were you on?
also yeah B217 sucks, it's burned into my eyes 
||Matty going full spooky credits mode rn||
Hey I'm ok with it if I didn't reach the true end, I read an article about animal well once. Shit got crazy, then back to square 1. I did take a few screenshots but don't want to spoil anything
all i'll say is the full exhaustive test was brutal, and if you enjoyed what you played already you'll enjoy what's coming
also what hardware and firmware?
353p/Final jelos
Will only have more time after my presentation tomorrow :/
good luck!
Have a good presentation! Iâll take a look at that updated logging process, I donât really understand the difference but if it still logs properly for me I can change it.
From my rudimentary understanding this new method creates a new log.txt with each start up of the launch script so if things crash⌠you wouldnât have accumulated the old logs
i eat and play, what can i say? :p
Oh my..
Yes. I bought one and Anbernic sent me one. I sent it on to another PortMaster member to use. đ
I also sent the 35xx plus to another member.
okay updating a few small things, I'll test the updated script methodology, then we are doing a PR today
I kind of want another device just to help test other OSs at this point lol
but all three of my devices are running muos
so there appears to be no functional difference between these logging methods as far as I can tell; they seem to be behaving the same
but I can use the new one
i agreee with you haha but u need to PR to Cebion's standards :p
for sure
making the change now
thanks for testing 720x720 Frax đ
Hope the presentation went well
thanks everyone for testing, it was really fun making this port with nate and i'm excited to see this game played on these devices it belongs on 
Mark thread as finished tag đ
finnish tag...

Rohkea rokan syĂś
Good job on this one, I left a review for you
very cool I've never done github collaboration like this
Not everything I wrote is demanding a change btw
Theyâre mostly optimization suggestions
oh okay
taking a look at the ut yellow code
@dim star do we still need the 32-bit export in
export LD_LIBRARY_PATH="/usr/lib:/usr/lib32:/$GAMEDIR/lib:$LD_LIBRARY_PATH"
I believe this had to do with some Ark incompatibility otherwise
but maybe it was just for troubleshooting
No this is fully 64bit so that wont do anything good đ
If your checksum code gets to be too long you can put it in an external file and source it like in https://github.com/JeodC/PortMaster-ShipOfHarkinian/blob/main/Ship of Harkinian.sh
I like how the checksum code is because it's straightforward to read; however, for future support it will get more difficult
planning to add support for future major patches but keep compatibility with this game version, so it could get even longer for sure
When you add a new commit reviews will turn outdated, you can also mark comments as resolved
Iâll need to test out the script to make sure nothing is broken real quick
that's nicer lol
is there a reason to do chmod 777 instead of chmod +x?
777 is full read/write access and +x just makes it executable right?
I think the md5 check code ended up being like this because of all the patching and debugging during the testing process
but rereading it, probably everything could be packed into one startup function like ut yellow
I'm clearly just worried about people using the incorrect data files lol
As long as your instructions are clear itâs just âread the manualâ
If you try to cover every niche case itâll be endless
I combined all startup code into one if statement; it's still pretty hefty because the MD5 checking still needs to happen in order to determine if a user has added steam or itch files
Some amount of failsave is nice to avoid every single user that has problems ask about it here
I'm still dumping the patched game md5 on startup though
that will be such a useful troubleshooting tool
like when a user runs the game, we will instantly know "is their game patched correctly"
from the log
Yes thats good to keep
any thoughts about this? still 115 lines, lol
Jk Iâm on mobile everything is hideous
Iâll check it out when Iâm home and can use notepad++. At a glance I spotted a potential syntax error.
I have not ran this yet
trying now
it defintely works
also the first time splash screen stayed for the entire initial patching process for me đ
nice!
it looks so good also, thanks for creating it

basically the fallback here is that "if patching didn't happen or you don't have audio, start from square 1 on the instructions please"
patching and audio packing are now tied together
It passes shellcheck
Itâs a preference but for an if block that long I like to source it in a separate file
Makes troubleshooting easier
Changes look good đ
like a separate script? like
if installed then
run
else
setup_script_run()
See the Harkinian example I linked above
If no otr files it sources otrgen.txt which itself is just another sh file disguised as a .txt so PortMaster doesnât complain about it at upload time.
https://github.com/JeodC/PortMaster-ShipOfHarkinian/blob/main/soh/assets/extractor/otrgen.txt
Pretty sure if I had all this in the launch script cebion would have an aneurysm.
ah I see
yeah this would make long-term version support much more viable
so you call it with ./assets/extractor/otrgen.txt if no otr is found
damn I think I did this part myself, did you just update soh?
Yeah just source ./path-to-script
No that was last week
nice
that case structure probably isn't necessary for it rn because there are only two cases
but next time we update this it will be 4
just takes a lot of visual space in the script
Nothing wrong with futureproofing
looks a lot better than if/else
did you not need to chmod +x the otrgen script?
PortMaster should do that for you when installed through the gui
am I OK to export controlfolder so that I can still get xdelta patching into this script?
like
if [ -d "/opt/system/Tools/PortMaster/" ]; then export controlfolder="/opt/system/Tools/PortMaster" elif [ -d "/opt/tools/PortMaster/" ]; then export controlfolder="/opt/tools/PortMaster" elif [ -d "$XDG_DATA_HOME/PortMaster/" ]; then export controlfolder="$XDG_DATA_HOME/PortMaster" else export controlfolder="/roms/ports/PortMaster" fi
What do you mean? Thatâs in the header of the launch script.
You donât need to do it twice
it's not normally exported
Idk I didnât export it in Harkinian and it works
Then again I donât think otrgen did anything needing controlfolder
I think youâre fine though, sourcing a script means adding the sourced to your session
Shouldnât run into any issues
Harkinian otrgen has access to GAMEDIR for example but that isnât set twice
hmm
yeah weird
okay
I get this
./game_patching.txt: line 24: /xdelta3: No such file or directory
(changed the name to game_patching.txt)
If export doesnât work you could do the patching line right after source based on what the function returns.
You can get specific with it too
export works fine!
okay I need someone besides myself to test this two-script setup before I update the PR
I have it working on my end though
I would if I owned the game and wasnât at work
lol no worries we have testers
Upload the zip or link to repo or whatever
is there a way that I can see if my new script has exited early?
I could just add a variable, export, set to true when exiting the other script, then check that variable in the main script
but is there some inherent "return"-like value?
ok ty
export scr_err=false ./game_patching.txt if [ $scr_error ]; then exit 0 fi
pretty jank
Usually âif error return 1â
In source you use âretval=$?â then check its status
So if retval > 0 then you had an error
You can return different error levels this way too to show where it failed.
it's not a function though; I can still use return?
Yep
ok cool
The sourced script acts like a big function
I got this
./game_patching.txt: line 32: return: can only `return' from a function or sourced script
okay had to do
. ./game_patching.txt
then it works
sorry new to bash lol
Nate gonna join muos team after this
this also means I don't need to export controlfolder
@blissful raptor @dim star sorry to ping y'all, but just want to make sure this actually works for someone else before I pr again
doesn't need to be tested this second or anything
Itâs up on the GH
Functionally identical to before except now it will not allow you to finish the patching process if it doesnât find both audio groups
Also with the new script it should be way easier to add new patch revisions in the future
I can ping the navigators if you want
testing it right now!
the splash does look pretty good on this screen
boots up perfectly
Ngl thought that was a progress bar
if it's too confusing i can use another promo image
Not all floors offer a strong foothold. Some might require more forethought than expected...
Or are we missing something crucial?
#VoidStranger #screenshotsaturday #sokoban #puzzle #gamedev #indiedev https:âŚ
đ 101 đ 22
Nah but it did get me wondering how I might do progress bars for soh
haha this rules!
Hooray for organized scripts!
Much cleaner
did it stay up for a bit?
stayed up for 5 mins, then 10 seconds black before the game started
upon reboot the normal splash shows until the game starts like on PC
you did it, you got an image to display for enough time 
Lmao
I think it actually wouldnât be too bad to add the code from splash into a splash function in gmloadernext. Johnny stripped the existing code because it created bugs though
However, gmloader would not even be able to splash until it runs. That means we couldnât make it do a âfirst time setupâ splash
You could petition Kloptops to add it to PortMaster app so it can be called in general
Next or splash?
Splash
Hell yeah
So I think kloptops actually has a pretty advanced splash app called imageshow that can do all kinds of stuff
Splash just takes in a path to an image and a timer haha
Idk I favor simplicity
Same
But if you want a progress bar, splash wonât help you
That could be cool
Looks like there is a GIFLIB
Probably not standard on most cfws
You fellas want peak splash, check out mreader or mcli. Also I find it strange seeing people use color palettes other than zero ranger.
Splash is doing its job for now (rendering a static texture) besides a weird quirk with muos on startup.
Yeah gooey made that palette itâs rad
I really like the portmaster palette that someone from the SE discord made
Also the GB GREEN is perfect for the rg35xx+
Would you potentially like to test the latest version on GH? You can copy over your save files pretty easily
Gooey and I confirmed itâs good on muos
Then I can move forward with the pr đ¤
I can, but it probably won't be for a few hours
I wish I had a device compatible with like one other cfw that wasnât Knulli lol
What device?
Just for testing- I have three rgxx style devices running muos
+,h,40
Hey unrelated but how far along would you say gptokeyb2 is? Is it being distributed with any ports currently?
Use muOS? đ
A few. It needs some work.
Yeah Iâm running it on all three
Mainly a few weird edge cases and fix the text input.
I was trying to compile my own version of gptokeyb because of an interesting quirk with this gameâs control scheme; basically the âSelectâ button maps to ESC but for in-game functionality to work as expected, the button must be held down for a couple seconds. Default gptokeyb will only send an input from start/select when you lift up off of the button, so holding select doesnât really work like youâd expect.
I âfixedâ this in a custom version of gptokeyb but of course I broke all force quit functionality! lol
Just wondering if this could be a toggle in gptokeyb2, where a user could specify if start/select/guide needed to send inputs like abxy
Itâs definitely a niche use case
Yeah well thatâs one of the edge cases I need to fix. Select and start send key codes like abxy.
That breaks other things. 
To be clear we get a pass on this with this port because gmloader-next will see holding select as a controller input instead of a keyboard input, so we can still use the button as expected- with the quirk that you have to touch any other button when a room first loads before holding select will be recognized
Itâs fine for the most part
Just would be nice to be able to toggle this in gptk
I can 100% for sure say thatâs not how it works on gptokeyb2.
All button presses use the same code.
For better and worse. đ
Latest is all good on rg353p/jelos, patching splash, subsequent run splash
Everything looks good
I can send you a newer build later. đ
Thanks matty!
Sounds good 
Updated PR
I left comments! Please donât hate me.
huh, didnât know about Ash, interesting
I learned about it when I was helping fix some of my ports on tsp when it came out.
Theyâre niche systems so we donât demand compatibility, but it seems GitHub took my comments to mean I requested changes.
Ah yes
Though idk if any of them actually still use ash
@dim star might be up for testing it
Since he owns the game

ANYWAY feel free to ignore the ash thing, it was meant to be simple commentary not a request for changes
doesn't look too bad, I had a question about the log though
I originally had the log you are suggesting, but Frax recommend I change it to what's in there now
going to be honest I have never heard of Ash before today
unless you mean
we did change the way the log file is created per Frax
I think after you tested last
Okay ill give it a go tonight
I'll just make the edits to ensure compatibility, nbd
@charred dawn @shut stirrup any thoughts about the log file generation?
Ash does not support process substitution.
Replace > "$GAMEDIR/log.txt" && exec > >(tee "$GAMEDIR/log.txt") 2>&1 with exec > "$GAMEDIR/log.txt" 2>&1
any issue using exec > "$GAMEDIR/log.txt" 2>&1 to ensure ash compatibility?
because I'm pretty sure that's what I had in there from before
@nocturne cradle What still uses ash?
muOS and TrimUI
Thanks guess thatâs not changing anytime soon
Muos definitely ran both versions of the logging code
It might just be fine as is
Iâm going to make the changes just in case
Maybe donât commit them until Jan has the chance to test
Ok sounds good
Updating splash rn anyway to ensure if itâs writing status or errors to the log they are formatted properly
Right now it just dumps the resolution randomly into the log script, so improving that
quick question for you, changing "return" back to "exit" in the source script seems to break my $? != 0 logic
is there something similar to see what a source script exited with?
Donât think so. You can try keeping return there and see if it works with ash.
If it doesnât you can set an error variable just before the exit
Use that instead of $?
so this one basically
Kinda, but you I donât think you have to init the variable first.
I'll see what happens in testing here first
just noticed the screenshot included in for this port, lol
interesting room
||is that from the O room from the reveal trailer?||
||Gooey, did you take that screenshot? lol||
||
||
such a good palette
btw, you can change the screen size from inter to fit in order to fill most of the screen
love the first time setup splash screen
it's great to let people know everything is working as it should when the screen stays black for longer than expected
oops!
why is my copy crashing now, haha
odd
game.droid is indeed missing
I would say do everything from scratch
and add your saves in after
assuming you updated to the newest, splashiest version?
I'll call this one "the mav"
yeah, i had deleted everything but my saves basically
can I see what files are present right now?
you shouldn't have the "installed" file in there without game.droid
can you do the install process again? delete "installed," re-add all game data to the gamedata/ directory?
and lmk what happens/send the log
Yeah, i actually removed everything now. backed my save up to my PC and do the install process from Zero
i did think the patching process finished oddly quick, lol
yeah that's what I was worried about
weird that you got passed through though
it should have kicked you out if something was wrong
not sure what would make my fresh install different from other fresh installs on muOS with the same chip (eg. yours) anyway
let me see your install log this time
it should be on that first-time splash for a while
is the install log a separate file?
no, just the log from the first time you ran basically
patching fails
i forgot which symbols to use for discord code blocks haha
Loading APK /mnt/mmc/ports/voidstranger/game.apkJust before strdup
CommandLine: -game game.droid
MemoryManager allocated: 95753
Could not look up method getPackageManager, NULL class.
Class RunnerJNILib does not have field ms_context.
Could not look up method hasSystemFeature, NULL class.
android.software.leanback = 0
Finished Init
Create Error Form
but this doesn't sound good
` three of these
xdelta up top is the issue
I never tested this new patcher with the itch version
thank you mav lol
I cancatch this error if it does happen in the future
well, i sure am glad i decided to try the latest version after all, haha
yeah like hours from release lol
here is the new mav section lol
at least to catch the issue
but it's probably just a dumb syntax thing, give me a moment
missing a semicolon lol
the classic!
okay wow
that was like three issues
semicolon, if statement syntax, and windows line endings for the version I posted here somehow
@fleet egret culprit was the game_patching.txt file; grab it from the GH or start from scratch. lmk if you have issues. https://github.com/EzDzzIt/vsaarch64/blob/main/voidstranger/game_patching.txt
Tiny Best Set style art

Are you sure...
this is hilarious
would it be able to use the screenshot in the repo?
just since the default palette is grayscale
@ornate sparrow
or is this just for your own thing, i did provide a cover.png
Yeah, you can do this yourself easily. I only showed off my own.
https://github.com/JeodC/EmulationStation-ImageMaker
đ
https://github.com/EzDzzIt/PortMaster-New/blob/Void-Stranger/ports/voidstranger/port.json are these descriptions and install instructions good for on-device and md?
Yeah I think so, I approved the pr
this is what my ES-DE page for Void Stranger looks like
Ys1+2 chronicles
Would be amazing to port natively⌠like I know itâs a psp game but still
you would never believe me when i tell you i'm still in the middle of an YS 2 playthrough
actually in the village just after someone got abducted
i died and lost like 2 hours of progress after remembering that this game doesn't have autosaves
i will continue once my emotional wounds have healed
the screenshot was just taken from the itch.io page. love that the screenshots on the games page are just ||taken from the very end of your first playthrough||
Oh shoot lol
At least thatâs not obvious at a glance
i noticed something similarly funny when rewatching the reveal trailer
Itâs like when movie trailers will throw quick 1s clips from random parts of a pivotal scene
Only after you watch it you go back to the trailer and itâs like WTF
looks nice!
i think the smaller screenshot is from a puzzle that doesn't even end up being used in-game--found this out from someone else who was making a GBA demake of the game
oh i meant the smaller one. The background thing is a little preview video i recorded of the first few rooms
https://system-erasure.itch.io/void-stranger
||all three are the first few rooms of the voided ending||
if anyone is using a frontend that also takes preview videos (like Emulation Station on Knulli) and is looking for a preview video since Screenscraper doesn't have one, here it is:
i should figure out how to post stuff on screenscraper, haha
look at me totally pretending to play like a newbie to sell the early game illusion. I definitely didn't record this when i barely had any experience with the game
eebro's music is something else, man
Still works on tsp @rugged maple
Ram is really close to the max im noticing now, seems to be fine with it though
Whatâs it at?
0.91/0.95
I played the game for an hour or so on vacation and didnt notice anything
So probably fine to ignore.
Or texture compressing
We could pr for now though assuming itâs not leaking
Textures are usually the culprit
Ill compress them tonight and see if its worth doing at all
This will take some timeđ
Does the gpu not have dedicated vram??
Nope its all shared system memory
Oh shoot
Unlike consoles like the vita
Btw tina linux uses 0.28gb on idle, thats prob why haha
Not terrible but not muos either
So check it out, if you go in to ssh and run the script from there, watch the ram usage on mobaxterm you can see it spike when the audio groups get loaded about 200+mb
At least I assume itâs from the audio
The textures in this game should be so basic lol
Yeah i think youre right
Textures are the big one for gmloader though, and i actually dont know if utmt just packs it more effiently or if compressing actually helps
I compressed the audio already and it saves about 100mb of ram
not that it's relevant but i think when i checked data.win's chunks the TXTR chunk ended up being smaller than the ROOM and CODE chunks, which is just hilarious
Thats a decent amount
The problem is to rebuild the audio groups, itâs from scratch in utmt. The scripts included donât repack automatically into external audio groups, only internal audio
So I have to go through song by song
And add them manually
Its not possible to open the audiogroup itself in utmt?
Like 150 sounds/songs
It is but not dynamically repack it
Thatâs how youâd have to do it actually
Well that sucksđ
there isn't a repack script for it?
i see
But then we could use it too hehe
Then like if one track was messed up out of 100s it would potentially be a nightmare to debug
lol
I will send my bash scripts for compressing oggs and wavs if you want that
Oh gotcha yeah I couldnât find a tool that wasnât a scammy website
But luckily itâs a basic script
i usually end up importing them all into Audacity and exporting the tracks back out with whatever compression/format
Each one at a time??
you can import them all at once
ctrl+a the folder and it loads them all as tracks
Well audacity is really good at handling compression and all audio formats
So thatâs cool
I just used ffmpeg
But yeah I got all the audio compressed just need to re-pack
Could add an audio patch to a future update
Textures are halfway. Thats usually an easier shave
Ive gone from 1.1gb to 0.7 once lol
Oh thatâs nice
I had no idea we didnât have dedicated vram
I actually donât know why VS experiences slowdown at this certain part then
Because itâs not cpu or ram limited
Yeah thats why im always a bit worried with high ram usage as it will immediately tank performance if you go over
Tsp doesnt use swap either afaik
Well good to know
Well our pr should be ready to rock and roll
Thanks for testing as always Jan
Yupđ
Gongrats on your first port đ
120mb save
Patch grows about 10mb
Iâll dm you
oki
by the way, the PR is still marked as unable to merge but the changes requested by Cebion were made, should be ready to merge and release
Yeah probably just waiting on folks to review, I think Jeod approved it but I donât know the whole process

You dismissed his review with the latest commit :p
Cebion is on vacation, so its all a bit slower than usual
i think it automatically dismissed it after i edited the .json
True
Just checked it over, looks alright. đ
Thank You for porting this over. I'll test the last two.
No problem! Definitely grab the latest from the GitHub if you want to test-
Tomura Shigaraki?!
not particularly 
it says the last thing on the PR is for Cebion to approve the requested changes, so i guess that will wait until they're back? sorry if i sound impatient, just curious about what's going on
Nah just had to dismiss him
Thanks Jeod!
@blissful raptor I'm building out a support workflow for future patching; UTMT can export all code so it's as simple as exporting from the base/updated file then running a script to log diffs
should make it much easier to support new versions and I won't forget changes I've made this way lol
i can put together a few save files at some point for quickly testing the main fixes
like that mid-game NPC despawning and the enemy direction fix
heck yeah!
you can post a folder of saves into the vsaarch64 main in a separate dir and then they're stored there also; just need to modify the .gitignore
I can store diffs somewhere probably as long as it's my code changes and not entire original game code
You two are adorable haha
it's a team effort to get ensure support into the future haha
also it's pretty exciting to do a pr, never done this before so 
ditto, now i'm just waiting for the next PM release...
also at least 2 people in the System Erasure discord have bought anbernic handhelds since this port started development
I'm hoping there are some people who will buy the game for this, so just want to make sure their experience is good
running my diff script takes 10+min lol
I bought it
heck yeah!! hope you enjoy
it can get tough but it's doable
and it's completely packed to the brim with content...
like way, way, more than it would appear
Art reminded me of Link's Awakening.
Gameplay reminded me of Zelda but just the puzzles.
Guess it's not going to be so simple the more I play huh?
it's very simple gameplay but the complexity comes from some of the puzzle solving and meta puzzles, etc
think like Tunic or something
gooey runs the SE discord, you can always check that out for help
but be careful googling
just because spoilers are such a big deal in this one
Help?
Imagine asking for help with video games, that ruins the experience!
I'm an old soul. I missed out on the early days where kids would meet up on the playground to compare notes for Zelda NES.
These days anyone can look up a guide on a whim. Pfft.
Have you played Tunic? That was another amazing blind playthrough I'm so glad I didn't look up guides for
especially if you like Zelda
I have Tunic on switch. Haven't played through it. Got stuck.
the combat is not the best
I suppose there are times where you need a little nudge.
not really well balanced
I played through while my daughter sat with me and watched so it was one of those awesome shared experiences
I played tunic, had good fun the first couple hours but lost interest towards the end of the game
Solid 7/10 for me
yeah somehow I never lost momentum
testing RoR rn btw
just had to move over to the H
i bought the game after Nate invited me to test it, haha
and i've overtaken Nate since 
yeah, that'll happen 
haven't joined the SE discord but i think Minish brought me up there indirectly.
||i fell into Mon's hole during my first (/second?) Gray playthrough with infinite locusts turned on|| (Spoilers for Nate i think. You're kind of around that part right now) and Minish asked over there if there was any way for me to get out of that situation. (There isn't and it was incredibly funny)
it's a pretty cool community they have some good emotes and really helpful modders
pr should be moving forward soon so I'm jumping back in today/tonight
im taking a break after ||an ending you don't have yet|| and going back to my ZeroRanger grind
I'm so close to getting the run
pff good luck!
and if anyone here wants to join: https://discord.gg/system-erasure
I kinda want to boot it up also now seeing y'all discussing it
but gotta stay focused on actually finishing VS
too deep to quit now haha
you'll get a good break point soon
lol
get your role 
Amity kind of kick-started ZeroRanger back into life haha
SE's next game is going to be "Spoilers: The Game"
yeah I saw, nice reshade btw
someone shows up every few weeks playing one of the two games for the first time and then everyone comes out of the weeds again
your Void Stranger port brought more life into the SE thread on a server Nate and me share than there was even during the VS release
I just saw the announcement bot on the portmaster-news (#portmaster-news message)
đĽ Void Stranger is now on PortMaster! đĽ
Congrats! You did a great job
(I am gonna send everybody digital beers to celebrate the good news)
Thanks! I need to remove the âexperimentalâ tag from it to get the game to show up on the PM app unfortunately, but so close now lol
Awesome port nate! much better than anything I could've done
thank you đť
And @blissful raptor too! 
It's now available through the app!
thanks to the crew for getting it pushed through so fast
Install works at least on muos-
i had heard the sticks on the regular h were pretty useless
not super responsive, feels more 8-way than 360°, that kinda stuff
ah, i see
What a shame :/
yeah they're like 8-ways but better than nothing for sure
nooooo
wait, what? how so?
The sticks snap like a dpad. Gamma reverse engineered the kernel to fix it
Yeah it wouldnât be so bad if the sticks had octagonal gates
But with normal circle gates youâd expect true analog
what an odd choice to make
@blissful raptor Here's a new void stranger port for 1.1.2, it uses the newest gmloadernext and audio compression, all it's missing is a patch which may or may not be needed.
Just needs 1GB testing to see if xdelta is still necessary.
Appreciate it! i'll test it shortly
the fixes implemented before were related to slowdown in a late part of the game as well as issues with gmloader not saving properly on exit (this game exits a lot)
Well, it appears to save. But not the global options like color palette.
yep, it's still patching on my RG35XX+ but if that's the case then the xdelta is probably gonna be needed, we moved a lot of the save_game script around to ensure it saves everything before gmloader kills it
It's a decent AP measure anyway.
shouldn't be too much of a hassle, but i did the PR for the instructions since i'm not sure when Nate and I will have the chance to copy over those changes
Hope you kept your patch notes.
we've got em all đ
Executing runnable script end_game, page: 0
MoveTaskToBack called.
###game_end###0
/storage/roms/ports/Void Stranger.sh: line 52: 197072 Segmentation fault (core dumped) ./gmloadernext.aarch64 -c gmloader.json
I wonder if this is something gmloadernext needs to handle. Is saving the global options a part of the game_end loop?
i think it's part of a separate script that gets run at the same time, but gmloadernext doesn't run it in the same order as on PC or something? so it was a race condition, some things saved and some things did not. but it's been a while so i'm not sure if that's all true
If you can point me to it I can dig around
Ideally we eliminate the race conditions on gmloader's side.
did a cursory look at the code diffs between the current PM version and the new one and a lot of the race condition stuff is changes like this, where the function game_end isn't guaranteed to save the game properly so the script exit_game is called first
@rugged maple knows better about it than i do though
Ah, it doesn't do "live" saving so alt-f4 (what gptokeyb hotkey is to close the game) wouldn't save anything correct?
The weird thing is, that should be happening when we exit the game from the normal menu and it doesn't seem to be the case??
I am using the newest ver without the patch fyi for testing purposes.
So much of the patch is duct tape to ensure saving works because it's so critical to gameplay
Global stranger: 0
Player spawned!
Player spawn position: 120 x 72
Floorswitches: 0
Grid path created!
Music is playing: 1
Lev statues in the room: 0
Locust dummy value updated
Final surface created
Number of chests: 1
Controller count: 1
Current controller number/slot: 0
Current controller count: 1
Controller in use
Keyboard in use
Executing toggle script change_window_mode with arguments 0, page: 2
Executing toggle script change_fullscreen_scaling with arguments 0, page: 2
Executing toggle script change_border_fill with arguments 1, page: 2
Executing toggle script toggle_vsync with arguments 1, page: 2
VSYNC should be OFF
Final surface created
Executing toggle script change_flicker with arguments 0, page: 2
Controller in use
Keyboard in use
Executing toggle script change_palette with arguments 4, page: 2
Controller in use
Keyboard in use
Enemies, act!
Grid path updated!
Dead end value = 2
Enemies, act!
Grid path updated!
Dead end value = 3
Enemies, act!
Grid path updated!
Dead end value = 2
Enemies, act!
Grid path updated!
Dead end value = 3
Enemies, act!
Grid path updated!
Dead end value = 2
Controller in use
Keyboard in use
Controller in use
Keyboard in use
Executing toggle script change_palette with arguments 5, page: 2
Controller in use
Keyboard in use
Controller in use
Keyboard in use
Controller in use
Keyboard in use
Controller in use
Executing runnable script end_game, page: 0
MoveTaskToBack called.
###game_end###0
See here where I would expect to see the debug messages about save confirmation
Oh you ended through the menu?
Yeah
How does this game normally save without the xdelta then?
That's just bad game design, it should at least save the settings whenever the player changes something.
Oh it should save settings when you modify them though
It doesn't
Got a sec to hop on vc?
I don't do vc :p
In v1.1.2 it appears savesettings only gets run in the exit_game func.
No problem
Just doing too much at one time here haha
Then exit_game gets called in 3 separate objects, but I don't know how the Other scripts get called.
Talking solutions out is easier than typing them for me sometimes
Yeah I get it, I just have a noisy family and no closed office space
Yeah unfortunately looking like there's no way around needing an xdelta for this one
The audio compression seems to get it below 1GB mem usage but the code additions needed...
The SE discord could probably tell you how game settings get saved. All I can say is if I enter the game, go to settings, and change my palette color or some other stuff, then quit via menu, it doesn't take.
Yeah man that's why I had to patch it originally haha. Well one reason
Was hoping the new gmloader would fix some of the issues though
Glad you tested it
Can't fix poor game design especially with custom functions.
Stuff built into gms we can catch and do reimplementations. Code the dev creates is untouchable by gmloader afaik and not worth trying to touch since we have xdeltas for that.
Interesting so you added some compression?
It only ever peaked at 700mb for me but compression wouldn't hurt
Yeah kdog designed a script for audio compression a while back
Nice
testing it with almost all the changes now, except for one performance thing that i wanted to see if audio compression helped with
i'll also check how much memory it uses with htop to see if the audio compression is really worth it in this case or not--it already runs without issue on 1GB devices without it, and takes like half an hour to compress, so unless it reaches the threshold for 512MB devices i don't really think it'd be of much benefit
seems like the audio compression makes the dialogue sfx stutter? maybe because it's playing it several times very quickly
probably worth it though
patching it one more time with all the changes, if it works i'll share the new zip here for others to test before making a PR
okay, new zip file. this one applies an xdelta patch, and requires the Steam version. i included an xdelta for the itch version as well, but i'm not sure how to check if the user added the itch data.win or the steam data.win. in testing, this takes about 30 minutes to compress the audio, but launching the game takes less than 10 seconds after that. i haven't played through the entire game but in the segments i did play, i didn't notice any regressions and can't think of any that would occur based on the code changed
@rugged maple @ornate sparrow if you have the chance to test it out, please let me know!
i've got an exam tomorrow so i won't be able to edit it much more today, but i'll take a look shortly after
apply_xdelta() {
# Check if the data.win file exists and apply xdelta
md5_steam="aed5b6b074e2386c1cb8255a1ab19104"
if [ -f "$DATADIR/data.win" ]; then
if [ "$(md5sum "$DATADIR/data.win" | cut -d ' ' -f1)" = "$md5_steam" ]; then
output=$(xdelta3 -d -s "$DATADIR/data.win" -f "./tools/patches/voidstranger_steam.xdelta" "$DATADIR/game.droid" 2>&1)
else
output=$(xdelta3 -d -s "$DATADIR/data.win" -f "./tools/patches/voidstranger_itch.xdelta" "$DATADIR/game.droid" 2>&1)
fi
if [ $? -eq 0 ]; then
echo "Patch applied successfully"
echo "$output"
rm "$DATADIR/data.win"
else
echo "Failed to apply patch"
echo "$output"
mv $LOGFILE $LOGERR
exit 1
fi
else
echo "No data.win file found to patch!"
fi
}
Would be better if you had the md5sum of the itch version as well though
Audio compression taking its time on the rpflip2 as well. @livid hare Have you had a chance to check out the multicore pr yet? đ I think it has some issues with older gms titles, maybe I messed up some detection logic.
Game works better, it saved my palette this time
the itch version's md5 is 31bab78237372df504789b9e322d9499
Cool, then you do this
apply_xdelta() {
# Check if the data.win file exists and apply xdelta
md5_steam="aed5b6b074e2386c1cb8255a1ab19104"
md5_itch="31bab78237372df504789b9e322d9499"
if [ -f "$DATADIR/data.win" ]; then
if [ "$(md5sum "$DATADIR/data.win" | cut -d ' ' -f1)" = "$md5_steam" ]; then
output=$(xdelta3 -d -s "$DATADIR/data.win" -f "./tools/patches/voidstranger_steam.xdelta" "$DATADIR/game.droid" 2>&1)
elif [ "$(md5sum "$DATADIR/data.win" | cut -d ' ' -f1)" = "$md5_itch" ]; then
output=$(xdelta3 -d -s "$DATADIR/data.win" -f "./tools/patches/voidstranger_itch.xdelta" "$DATADIR/game.droid" 2>&1)
else
echo "Unsupported game version found! Cannot proceed with patching..."
mv $LOGFILE $LOGERR
exit 1
fi
if [ $? -eq 0 ]; then
echo "Patch applied successfully"
echo "$output"
rm "$DATADIR/data.win"
else
echo "Failed to apply patch"
echo "$output"
mv $LOGFILE $LOGERR
exit 1
fi
else
echo "No data.win file found to patch!"
fi
}
𫡠added that to the patchscript for this version
Hi Jeod, not yet sorry. on my TODO list đ
i've done a good amount of testing on my own (not exhaustive, but a lot) and i'll probably put together a pull request for this soon. made new patches since one of the fixes implemented (some improper text spacing) is no longer required. i don't know for sure that nothing breaks in the new version, but there's nothing obvious from my code review or testing.
given the much smaller memory usage (hovers around ~320-360MB on my RG35XX+) i wanted to see if someone with a 512MB device could test it? would be nice to let this port onto even weaker handhelds if it's capable.

