#Void Stranger

1725 messages ¡ Page 2 of 2 (latest)

dim star
#

I just used your zip

rugged maple
#

no worries, just thought about it

dim star
#

With all gamefiles

rugged maple
#

okay cool including the splash

dim star
#

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

rugged maple
dim star
#

its fine, i think the pm installer does this for all files anyway

#

Just for manual installs its required

rugged maple
#

should I add it into the script just in case?

dim star
#

yeah i would

rugged maple
#

$ESUDO chmod +x "$GAMEDIR/lib/splash"

#

ty

dim star
#

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

rugged maple
rugged maple
#

do you have 2 tsp's? lol

dim star
#

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🎉

blissful raptor
rugged maple
#

last potential test before final pr is 720x720 res

rugged maple
#

otherwise, repo is prepped and good to go

rugged maple
#

And I’ll just keep adding stuff unless I complete this pr haha

charred dawn
#

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*

blissful raptor
#

looks like it scales pretty well with that resolution

charred dawn
blissful raptor
#

that's a shame

rugged maple
#

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

rugged maple
#

I’m taking this as confirmation that 720x720 is good to go 🙏 ty Frax

rugged maple
calm palm
#

Excellent port, just completed it. Took alot out of me, I thought I was gonna have a stroke around 217ish.

blissful raptor
#

completed, you say...

#

tell me ||what was the ending like?||

rugged maple
blissful raptor
#

also yeah B217 sucks, it's burned into my eyes dead

rugged maple
#

Ah yeah b217

#

Yeah damn that one is like, remake the entire level

rugged maple
blissful raptor
#

bad news matty...

calm palm
#

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

blissful raptor
#

yeslord 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?

calm palm
#

353p/Final jelos

charred dawn
blissful raptor
#

good luck!

rugged maple
charred dawn
charred dawn
dim star
#

Looks like it scales well 🙂

#

Also clean your damn screen fraxdoggokek

charred dawn
#

i eat and play, what can i say? :p

dim star
#

Oh my..

fleet egret
#

well loved

#

are those two SPs?

nocturne cradle
#

I also sent the 35xx plus to another member.

rugged maple
#

okay updating a few small things, I'll test the updated script methodology, then we are doing a PR today

rugged maple
# nocturne cradle

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

rugged maple
#

but I can use the new one

charred dawn
#

i agreee with you haha but u need to PR to Cebion's standards :p

rugged maple
#

for sure

#

making the change now

#

thanks for testing 720x720 Frax 🙏

#

Hope the presentation went well

blissful raptor
#

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 hyearh

rugged maple
#

okay I submitted the PR for review

#

please ping me or dm me if there are issues

ornate sparrow
blissful raptor
#

finnish tag... saimaa voileipa

rugged maple
#

Rohkea rokan syĂś

ornate sparrow
#

Good job on this one, I left a review for you

rugged maple
#

very cool I've never done github collaboration like this

ornate sparrow
#

Not everything I wrote is demanding a change btw

#

They’re mostly optimization suggestions

rugged maple
#

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

dim star
#

No this is fully 64bit so that wont do anything good 🙂

ornate sparrow
rugged maple
#

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

ornate sparrow
#

When you add a new commit reviews will turn outdated, you can also mark comments as resolved

rugged maple
#

I’ll need to test out the script to make sure nothing is broken real quick

rugged maple
#

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?

ornate sparrow
#

Yep

#

You can do +xwr too

rugged maple
#

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

ornate sparrow
#

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

rugged maple
#

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

dim star
#

Some amount of failsave is nice to avoid every single user that has problems ask about it here

rugged maple
#

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

dim star
#

Yes thats good to keep

rugged maple
ornate sparrow
#

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.

rugged maple
#

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 🙏

blissful raptor
#

nice!

rugged maple
blissful raptor
rugged maple
#

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

ornate sparrow
#

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 🙂

rugged maple
#

like a separate script? like

if installed then
run
else
setup_script_run()

ornate sparrow
#

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.

rugged maple
#

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?

ornate sparrow
#

Yeah just source ./path-to-script

ornate sparrow
rugged maple
#

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

ornate sparrow
#

Nothing wrong with futureproofing

rugged maple
#

looks a lot better than if/else

rugged maple
ornate sparrow
#

PortMaster should do that for you when installed through the gui

rugged maple
#

idk if this works tho

ornate sparrow
#

Yoo that looks clean my man moppin that floor

rugged maple
#

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

ornate sparrow
#

What do you mean? That’s in the header of the launch script.

#

You don’t need to do it twice

rugged maple
#

it's not normally exported

ornate sparrow
#

Idk I didn’t export it in Harkinian and it works

#

Then again I don’t think otrgen did anything needing controlfolder

rugged maple
#

yeah reviewing it

#

I don't see any calls to it

ornate sparrow
#

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

rugged maple
#

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)

ornate sparrow
#

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

rugged maple
#

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

ornate sparrow
#

I would if I owned the game and wasn’t at work

rugged maple
#

lol no worries we have testers

ornate sparrow
#

Upload the zip or link to repo or whatever

rugged maple
#

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?

ornate sparrow
#

You have to catch early exits with returns

#

Sourced scripts only return once

rugged maple
#

ok ty

#

export scr_err=false ./game_patching.txt if [ $scr_error ]; then exit 0 fi

#

pretty jank

ornate sparrow
#

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.

rugged maple
#

it's not a function though; I can still use return?

ornate sparrow
#

Yep

rugged maple
#

ok cool

ornate sparrow
#

The sourced script acts like a big function

rugged maple
#

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

ornate sparrow
#

Nate gonna join muos team after this

rugged maple
#

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

ornate sparrow
#

I can ping the navigators if you want

blissful raptor
#

testing it right now!

#

the splash does look pretty good on this screen

#

boots up perfectly

ornate sparrow
blissful raptor
#

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

▶ Play video
ornate sparrow
#

Nah but it did get me wondering how I might do progress bars for soh

rugged maple
ornate sparrow
#

Hooray for organized scripts!

rugged maple
#

way nicer for sure

ornate sparrow
#

Much cleaner

rugged maple
blissful raptor
#

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

rugged maple
#

let's go

blissful raptor
#

you did it, you got an image to display for enough time zrCute

rugged maple
#

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

ornate sparrow
rugged maple
#

Next or splash?

ornate sparrow
#

Splash

rugged maple
#

Hell yeah

ornate sparrow
#

Nice replacement for tty0

#

And some cfws don’t have that

rugged maple
#

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

ornate sparrow
#

Idk I favor simplicity

rugged maple
#

Same

ornate sparrow
#

Imageshow might be too advanced for a simple png

#

But who knows

#

Just ask

rugged maple
#

But if you want a progress bar, splash won’t help you

ornate sparrow
#

True

#

Unless it’s a controlled gif

rugged maple
#

That could be cool

#

Looks like there is a GIFLIB

#

Probably not standard on most cfws

calm palm
#

You fellas want peak splash, check out mreader or mcli. Also I find it strange seeing people use color palettes other than zero ranger.

rugged maple
#

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+

rugged maple
#

Gooey and I confirmed it’s good on muos

#

Then I can move forward with the pr 🤞

calm palm
rugged maple
#

I wish I had a device compatible with like one other cfw that wasn’t Knulli lol

rugged maple
#

+,h,40

rugged maple
nocturne cradle
rugged maple
#

Yeah I’m running it on all three

nocturne cradle
#

Mainly a few weird edge cases and fix the text input.

rugged maple
# nocturne cradle A few. It needs some work.

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

nocturne cradle
#

That breaks other things. doggokek

rugged maple
#

Yeah I can tell at least for gptokeyb-classic haha

#

Sure it’s similar in 2

rugged maple
#

It’s fine for the most part

#

Just would be nice to be able to toggle this in gptk

nocturne cradle
#

All button presses use the same code.

rugged maple
#

Oh interesting

#

Ok cool

nocturne cradle
#

For better and worse. 😄

rugged maple
#

I may play around with it at some point

#

Do you want any test feedback or not yet

calm palm
#

Latest is all good on rg353p/jelos, patching splash, subsequent run splash

#

Everything looks good

nocturne cradle
rugged maple
rugged maple
rugged maple
#

Updated PR

ornate sparrow
#

I left comments! Please don’t hate me.

blissful raptor
#

huh, didn’t know about Ash, interesting

ornate sparrow
#

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

dim star
#

I didnt have issues on the tsp

#

What needs testing?

ornate sparrow
#

Tsp knulli doesn’t use ash anymore?

#

Just try the latest and see if it boots up

rugged maple
#

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

rugged maple
#

I think after you tested last

dim star
#

Okay ill give it a go tonight

rugged maple
#

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?

charred dawn
#

I don’t haha

#

But I have no approval permissions for PR

rugged maple
#

because I'm pretty sure that's what I had in there from before

ornate sparrow
#

@nocturne cradle What still uses ash?

nocturne cradle
#

muOS and TrimUI

ornate sparrow
#

Thanks guess that’s not changing anytime soon

rugged maple
#

Muos definitely ran both versions of the logging code

ornate sparrow
rugged maple
#

I’m going to make the changes just in case

ornate sparrow
#

Maybe don’t commit them until Jan has the chance to test

rugged maple
#

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

rugged maple
#

is there something similar to see what a source script exited with?

ornate sparrow
#

If it doesn’t you can set an error variable just before the exit

#

Use that instead of $?

ornate sparrow
#

Kinda, but you I don’t think you have to init the variable first.

rugged maple
#

I'll see what happens in testing here first

fleet egret
#

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||

blissful raptor
#

|| destroyed ||

calm palm
fleet egret
#

such a good palette

calm palm
fleet egret
#

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

#

game.droid is indeed missing

rugged maple
#

and add your saves in after

#

assuming you updated to the newest, splashiest version?

#

I'll call this one "the mav"

fleet egret
#

yeah, i had deleted everything but my saves basically

rugged maple
fleet egret
rugged maple
#

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

fleet egret
#

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

rugged maple
#

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

fleet egret
#

not sure what would make my fresh install different from other fresh installs on muOS with the same chip (eg. yours) anyway

rugged maple
#

let me see your install log this time

#

it should be on that first-time splash for a while

fleet egret
#

is the install log a separate file?

rugged maple
#

no, just the log from the first time you ran basically

fleet egret
rugged maple
#

patching fails

fleet egret
#

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

rugged maple
#

xdelta up top is the issue

#

I never tested this new patcher with the itch version

#

thank you mav lol

fleet egret
rugged maple
#

I cancatch this error if it does happen in the future

fleet egret
#

well, i sure am glad i decided to try the latest version after all, haha

rugged maple
#

yeah like hours from release lol

rugged maple
#

at least to catch the issue

#

but it's probably just a dumb syntax thing, give me a moment

#

missing a semicolon lol

fleet egret
#

the classic!

rugged maple
#

okay wow

#

that was like three issues

#

semicolon, if statement syntax, and windows line endings for the version I posted here somehow

fleet egret
#

everything's working now

#

Thanks!

ornate sparrow
#

Tiny Best Set style art

blissful raptor
#

tall stranger

ornate sparrow
#

I mean, it looks great

rugged maple
ornate sparrow
#

What?

#

Is this better? Lol

dim star
#

Yes haha

#

Stretching = evil

blissful raptor
#

Are you sure...

blissful raptor
blissful raptor
#

just since the default palette is grayscale

#

@ornate sparrow

#

or is this just for your own thing, i did provide a cover.png

ornate sparrow
blissful raptor
#

👍

ornate sparrow
#

Yeah I think so, I approved the pr

blissful raptor
#

thanks!

fleet egret
#

this is what my ES-DE page for Void Stranger looks like

rugged maple
#

Ys1+2 chronicles

#

Would be amazing to port natively… like I know it’s a psp game but still

fleet egret
#

you would never believe me when i tell you i'm still in the middle of an YS 2 playthrough

rugged maple
#

In the last dungeon?

#

That takes half the game? lol

fleet egret
#

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

fleet egret
rugged maple
#

At least that’s not obvious at a glance

fleet egret
#

i noticed something similarly funny when rewatching the reveal trailer

rugged maple
#

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

blissful raptor
blissful raptor
fleet egret
#

oh i meant the smaller one. The background thing is a little preview video i recorded of the first few rooms

fleet egret
#

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

fleet egret
#

eebro's music is something else, man

dim star
#

Ram is really close to the max im noticing now, seems to be fine with it though

rugged maple
#

What’s it at?

dim star
#

0.91/0.95

rugged maple
#

Oof

#

Okay hovers below 0.8 on muOS

dim star
#

I played the game for an hour or so on vacation and didnt notice anything

#

So probably fine to ignore.

rugged maple
#

Maybe I should look at audio compression after all

#

Just in case

dim star
#

Or texture compressing

rugged maple
#

We could pr for now though assuming it’s not leaking

dim star
#

Yeah for sure

#

Its stable there

rugged maple
#

Audio is 200mb of ram

#

Rn

dim star
#

Textures are usually the culprit

#

Ill compress them tonight and see if its worth doing at all

#

This will take some time😄

rugged maple
dim star
#

Nope its all shared system memory

rugged maple
#

Oh shoot

dim star
#

Unlike consoles like the vita

#

Btw tina linux uses 0.28gb on idle, thats prob why haha

#

Not terrible but not muos either

rugged maple
#

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

dim star
#

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

rugged maple
#

I compressed the audio already and it saves about 100mb of ram

blissful raptor
#

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

dim star
rugged maple
#

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

dim star
#

Its not possible to open the audiogroup itself in utmt?

rugged maple
#

Like 150 sounds/songs

rugged maple
#

That’s how you’d have to do it actually

dim star
#

Well that sucks😄

blissful raptor
#

there isn't a repack script for it?

rugged maple
#

There’s one for the data.win

#

For embedded audio not external

blissful raptor
#

i see

rugged maple
#

I could write one in c#

#

But that would take me as long as doing it manually lol

dim star
#

But then we could use it too hehe

rugged maple
#

Then like if one track was messed up out of 100s it would potentially be a nightmare to debug

rugged maple
#

I will send my bash scripts for compressing oggs and wavs if you want that

dim star
#

Im lazy and just use tools for that lol

#

"mass ogg compress pls"

rugged maple
#

Oh gotcha yeah I couldn’t find a tool that wasn’t a scammy website

#

But luckily it’s a basic script

dim star
#

pnggauntlet is good for textures

#

Im sure theres something for audio

blissful raptor
#

i usually end up importing them all into Audacity and exporting the tracks back out with whatever compression/format

blissful raptor
#

you can import them all at once

rugged maple
#

Or through a script

#

Oh nice

blissful raptor
#

ctrl+a the folder and it loads them all as tracks

rugged maple
#

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

dim star
#

Textures are halfway. Thats usually an easier shave

#

Ive gone from 1.1gb to 0.7 once lol

rugged maple
#

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

dim star
#

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

rugged maple
#

Do you know if the rgxx mali g31 uses vram

#

I assume not if the tsp doesn’t

dim star
#

Thats rk3326 right?

#

None of the pm handhelds have vram

rugged maple
#

Well good to know

#

Well our pr should be ready to rock and roll

#

Thanks for testing as always Jan

dim star
#

Gongrats on your first port 🙂

#

120mb save

#

Patch grows about 10mb

rugged maple
#

How does it look in-game?

dim star
#

Exactly the same since this is lossless compression

#

The only cost is patch size😄

rugged maple
#

I’ll dm you

dim star
#

oki

blissful raptor
blissful raptor
#

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

rugged maple
#

Yeah probably just waiting on folks to review, I think Jeod approved it but I don’t know the whole process

blissful raptor
dim star
#

Cebion is on vacation, so its all a bit slower than usual

blissful raptor
#

i think it automatically dismissed it after i edited the .json

dim star
#

True

nocturne cradle
#

Just checked it over, looks alright. 👍

stark ember
#

Thank You for porting this over. I'll test the last two.

rugged maple
ornate sparrow
blissful raptor
#

not particularly uhhh

blissful raptor
rugged maple
#

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

blissful raptor
#

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

rugged maple
#

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

ornate sparrow
#

You two are adorable haha

rugged maple
#

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 LinkYay

blissful raptor
#

ditto, now i'm just waiting for the next PM release...

rugged maple
#

same lol

#

going to re-download and hope it all installs

blissful raptor
#

also at least 2 people in the System Erasure discord have bought anbernic handhelds since this port started development

rugged maple
#

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

ornate sparrow
#

I bought it

rugged maple
#

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

ornate sparrow
#

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?

rugged maple
#

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

ornate sparrow
#

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.

rugged maple
#

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

ornate sparrow
#

I have Tunic on switch. Haven't played through it. Got stuck.

rugged maple
#

the combat is not the best

ornate sparrow
#

I suppose there are times where you need a little nudge.

rugged maple
#

not really well balanced

#

I played through while my daughter sat with me and watched so it was one of those awesome shared experiences

dim star
#

Solid 7/10 for me

rugged maple
#

yeah somehow I never lost momentum

#

testing RoR rn btw

#

just had to move over to the H

fleet egret
#

and i've overtaken Nate since EvilGrin

blissful raptor
#

yeah, that'll happen uhhh

fleet egret
#

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)

rugged maple
#

it's a pretty cool community they have some good emotes and really helpful modders

rugged maple
fleet egret
#

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

blissful raptor
#

pff good luck!

rugged maple
#

but gotta stay focused on actually finishing VS

#

too deep to quit now haha

fleet egret
#

you'll get a good break point soon

blissful raptor
#

get your role yeslord

fleet egret
rugged maple
#

SE's next game is going to be "Spoilers: The Game"

rugged maple
blissful raptor
#

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

fleet egret
#

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

earnest delta
#

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)

rugged maple
charred dawn
#

Awesome port nate! much better than anything I could've done

charred dawn
#

And @blissful raptor too! LinkYay

rugged maple
#

It's now available through the app!

#

thanks to the crew for getting it pushed through so fast

rugged maple
#

Install works at least on muos-

fleet egret
#

uuuh you got the 40H?

#

how are the analog sticks?

dim star
#

Like all the other switch sticks

#

Pretty good

fleet egret
#

i had heard the sticks on the regular h were pretty useless

dim star
#

In what way?

#

They still snap to the 8 directions, but that will be fixed soon

fleet egret
#

not super responsive, feels more 8-way than 360°, that kinda stuff

rugged maple
#

my screen is busted

#

looks like an old dsi

dim star
#

What a shame :/

rugged maple
fleet egret
little drift
dim star
#

The sticks snap like a dpad. Gamma reverse engineered the kernel to fix it

rugged maple
#

Yeah it wouldn’t be so bad if the sticks had octagonal gates

#

But with normal circle gates you’d expect true analog

fleet egret
#

what an odd choice to make

ornate sparrow
#

@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.

blissful raptor
#

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)

ornate sparrow
#

Well, it appears to save. But not the global options like color palette.

blissful raptor
#

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

ornate sparrow
#

It's a decent AP measure anyway.

blissful raptor
#

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

ornate sparrow
#

Hope you kept your patch notes.

blissful raptor
#

we've got em all 👍

ornate sparrow
#
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?

blissful raptor
#

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

ornate sparrow
#

If you can point me to it I can dig around

#

Ideally we eliminate the race conditions on gmloader's side.

blissful raptor
#

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

ornate sparrow
#

Ah, it doesn't do "live" saving so alt-f4 (what gptokeyb hotkey is to close the game) wouldn't save anything correct?

rugged maple
#

Right

#

Yeah exit game calls ensure saving

ornate sparrow
#

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.

rugged maple
#

So much of the patch is duct tape to ensure saving works because it's so critical to gameplay

ornate sparrow
#
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

rugged maple
#

Oh you ended through the menu?

ornate sparrow
#

Yeah

rugged maple
#

Yeah it doesn't save that way haha

#

Like in the original

ornate sparrow
#

How does this game normally save without the xdelta then?

rugged maple
#

It saves every time you hit a new floor

#

And for some other stuff

ornate sparrow
#

That's just bad game design, it should at least save the settings whenever the player changes something.

rugged maple
#

Oh it should save settings when you modify them though

ornate sparrow
#

It doesn't

rugged maple
#

Got a sec to hop on vc?

ornate sparrow
#

I don't do vc :p

#

In v1.1.2 it appears savesettings only gets run in the exit_game func.

rugged maple
#

Just doing too much at one time here haha

ornate sparrow
#

Then exit_game gets called in 3 separate objects, but I don't know how the Other scripts get called.

rugged maple
#

Talking solutions out is easier than typing them for me sometimes

ornate sparrow
#

Yeah I get it, I just have a noisy family and no closed office space

rugged maple
#

So we will definitely need to update the xdelta

#

Gooey is working on it rn

ornate sparrow
#

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.

rugged maple
#

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

ornate sparrow
#

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.

rugged maple
#

It only ever peaked at 700mb for me but compression wouldn't hurt

ornate sparrow
rugged maple
#

Nice

blissful raptor
#

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

blissful raptor
#

seems like the audio compression makes the dialogue sfx stutter? maybe because it's playing it several times very quickly

#

probably worth it though

blissful raptor
#

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

blissful raptor
#

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

ornate sparrow
# blissful raptor okay, new zip file. this one applies an xdelta patch, and requires the Steam ver...
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

blissful raptor
#

the itch version's md5 is 31bab78237372df504789b9e322d9499

ornate sparrow
#

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
}
blissful raptor
livid hare
blissful raptor
#

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.