#Salvagette

166 messages Β· Page 1 of 1 (latest)

maiden cobalt
#

Turn-based bullet-hell class warfare!

Swipe to move in each of the four directions. Ram into things to destroy them, but avoid the dangerous projectiles.

Instructions:

  1. Extract the content of the zip here onto your ports directory
  2. Download Salvagette from: https://e1sif.itch.io/salvagette
  3. Extract salvagette.pck into the "gamedata" folder inside the "salvagette" folder in your ports directory.

Testing requirements:
(X) [480x320]
(X) [640x480]
() [720x720]
() [Higher Res]
() AmberELEC
(X) JELOS
(X) ArkOS

itch.io

Turn-base bullet-hell class warfare!

queen sonnet
#

<@&1123159718874058882>

fluid nova
#

Good on 353VS / OGA Arkos

noble rapids
#

trying on JELOS // RGB30
in the next version, make sure port.json and screenshot are in the directory πŸ™‚

stone dock
#

Thats how its structured in the repo right?

noble rapids
#

yeah, but in the zip the screenshot is next to the sh, should be in the salvagette dir

#

bug in the game itself: go to the menu before starting the game (I wanted to turn down the music), this then breaks the contols

#

this also happens on windows when just navigating with keyboard

#

game is made for 16:9 (1280x720) but stretches without maintaining aspect ratio, which isn't too bad in 4:3 but the grid looks very out of whack on 1:1 on the RGB30

#

actually, looks like it might do 640x480 with correct aspect ratio, just not 1:1

#

seems to run fine on ArkOS/RBG30 otherwise

#

Just saw I played arachnowopunk (arachnOWOpunk?) by this creator as well, cool games here

#

creator might be open to fixing the menu/aspect ratio thing (and/or we can probably patch it)

maiden cobalt
noble rapids
#

let me get a picture

#

1 picture, 1000 words, something something...

#

you can set this in godot under project settings, display -> window

#

"keep" will both letterbox and pillerbox as needed

#

it's probably set to keep_width

#

educated guess, haven't looked tbh

maiden cobalt
# noble rapids

Oh yep, that definitely looks off, keep aspect ration typically shouldn't do that πŸ˜‚

#

Looks like it should be a pretty easy fix though, I'll make sure to take a look at it

#

I ordered an rgb30 myself a couple days ago, so I should be able to do some testing myself then too

noble rapids
#

nice

#

just let me know if you need me to have a look at the godot part if it's not that

maiden cobalt
#

Thanks, it should be alright though, I've messed around with it enough at this point to have a decent understanding of the godot suite and it's scripting language (i mean it's basically just python )

noble rapids
#

haha, yeah, it's like python for sure, same like I can understand American now that I know English πŸ˜‚

gusty iris
#

@maiden cobalt Abandoned?

fluid nova
#

huh. I totally forgot about this one rotting here, so I fixed the resolution + small menu bug and I will send the author a message for permission. Depending on response (or lack of) I will post a rtr or make a patch.

fluid nova
#

permission granted, so I will put it together tomorrow

stone dock
#

Sweet

fluid nova
#

https://e1sif.itch.io/salvagette
Turn-based bullet-hell class warfare!
Swipe to move in each of the four directions. Ram into things to destroy them, but avoid the dangerous projectiles.

Instructions: Ready to run. Thanks to elsif for the permission to distribute the game file.

CFW Tests:
[x] AmberELEC
[x] ArkOS
[x] MuOS
[x] ROCKNIX
-> [x] Panfrost
-> [x] Adreno (Optional)
[] Knulli (Optional)

Resolutions:
[x] 480x320 (Optional)
[x] 640x480
[] 720x720 (RGB30) (Optional)
[x] Higher resolutions (e.g., 1280

Port files:
https://download-directory.github.io/?url=https%3A%2F%2Fgithub.com%2FGanimoth%2FPortMaster-New%2Ftree%2Fsalvagette%2Fports%2Fsalvagette

itch.io

Turn-base bullet-hell class warfare!

#

<@&1216123318122577972>

queen sonnet
#
2025-02-01 10:30:03.283 | DEBUG    | harbourmaster.config:<module>:145 - HM_DEFAULT_TOOLS_DIR:   /userdata/roms/ports/salvagette/conf
2025-02-01 10:30:03.284 | DEBUG    | harbourmaster.config:<module>:146 - HM_DEFAULT_PORTS_DIR:   /userdata/roms/ports
2025-02-01 10:30:03.285 | DEBUG    | harbourmaster.config:<module>:147 - HM_DEFAULT_SCRIPTS_DIR: /userdata/roms/ports
2025-02-01 10:30:03.847 | ERROR    | __main__:<module>:697 - An error has been caught in function '<module>', process 'MainProcess' (8369), thread 'MainThread' (548125941792):
Traceback (most recent call last):

> File "/userdata/system/.local/share/PortMaster/harbourmaster", line 697, in <module>
    exit(main(sys.argv))
         β”‚    β”‚   β”” ['/userdata/system/.local/share/PortMaster/harbourmaster', '--quiet', '--no-check', 'runtime_check', 'frt_3.2.3.squashfs']
         β”‚    β”” <module 'sys' (built-in)>
         β”” <function main at 0x7f9b054040>
  File "/userdata/system/.local/share/PortMaster/harbourmaster", line 670, in main
    hm = HarbourMaster(config, temp_dir=temp_dir, callback=ccb)
         β”‚             β”‚                β”‚                  β”” <__main__.ConsoleCallback object at 0x7f9b04e610>
         β”‚             β”‚                β”” PosixPath('/tmp/tmpf5h8k8k5')
         β”‚             β”” {'quiet': True, 'no-check': True, 'offline': False, 'debug': False, 'no-colour': False, 'force-colour': False, 'no-log': Fals...
         β”” <class 'harbourmaster.harbour.HarbourMaster'>

  File "/userdata/system/.local/share/PortMaster/pylibs/harbourmaster/harbour.py", line 138, in __init__
    self.platform.first_run()
    β”‚    β”‚        β”” <function PlatformBatocera.first_run at 0x7f9b0249a0>
    β”‚    β”” <harbourmaster.platform.PlatformKnulli object at 0x7f9b448f90>
    β”” <harbourmaster.harbour.HarbourMaster object at 0x7f9bd14310>

  File "/userdata/system/.local/share/PortMaster/pylibs/harbourmaster/platform.py", line 390, in first_run
    self.portmaster_install()
    β”‚    β”” <function PlatformKnulli.portmaster_install at 0x7f9b024b80>
    β”” <harbourmaster.platform.PlatformKnulli object at 0x7f9b448f90>

  File "/userdata/system/.local/share/PortMaster/pylibs/harbourmaster/platform.py", line 429, in portmaster_install
    shutil.copy(BC_DIR / "control.txt", TL_DIR / "control.txt")
    β”‚      β”‚    β”‚                       β”” PosixPath('/userdata/roms/ports/salvagette/conf/PortMaster')
    β”‚      β”‚    β”” PosixPath('/userdata/roms/ports/salvagette/conf/PortMaster/knulli')
    β”‚      β”” <function copy at 0x7f9bd1cd60>
    β”” <module 'shutil' from '/usr/lib/python3.11/shutil.py'>

  File "/usr/lib/python3.11/shutil.py", line 431, in copy
    copyfile(src, dst, follow_symlinks=follow_symlinks)
    β”‚        β”‚    β”‚                    β”” True
    β”‚        β”‚    β”” PosixPath('/userdata/roms/ports/salvagette/conf/PortMaster/control.txt')
    β”‚        β”” PosixPath('/userdata/roms/ports/salvagette/conf/PortMaster/knulli/control.txt')
    β”” <function copyfile at 0x7f9bd1cae0>
  File "/usr/lib/python3.11/shutil.py", line 256, in copyfile
    with open(src, 'rb') as fsrc:
              β”” PosixPath('/userdata/roms/ports/salvagette/conf/PortMaster/knulli/control.txt')

FileNotFoundError: [Errno 2] No such file or directory: '/userdata/roms/ports/salvagette/conf/PortMaster/knulli/control.txt'
umount: /userdata/system/.local/share/PortMaster/libs/frt_3.2.3.squashfs: no mount point specified.
mount: /userdata/system/godot: special device /userdata/system/.local/share/PortMaster/libs/frt_3.2.3.squashfs does not exist.
       dmesg(1) may have more information after failed mount system call.
/userdata/roms/ports/Salvagette.sh: line 59: frt_3.2.3: command not found
umount: /userdata/system/godot: not mounted.
Running in UINPUT output mode.
Running in Fake Keyboard mode
Using ConfigFile salvagette.gptk
Joystick 0 has game controller name 'Anbernic RG CubeXX Controller'
fluid nova
queen sonnet
#

@austere halo something with hm wanting to install runtime right?

fluid nova
#

I need get some more cards and make a knulli install

queen sonnet
fluid nova
#

or better, time to get cubexx

austere halo
#

Knulli?

fluid nova
#

y

austere halo
#

Looks like something is borked.

queen sonnet
#

.sh is clean

queen sonnet
austere halo
#

Pm

queen sonnet
#

works on amber, so something knulli i think

austere halo
#

This is sus

#

That path is wrong

#

Oh

queen sonnet
austere halo
#

Are you setting XDG data home before calling harbourmaster?

queen sonnet
#
#!/bin/bash

XDG_DATA_HOME=${XDG_DATA_HOME:-$HOME/.local/share}

if [ -d "/opt/system/Tools/PortMaster/" ]; then
  controlfolder="/opt/system/Tools/PortMaster"
elif [ -d "/opt/tools/PortMaster/" ]; then
  controlfolder="/opt/tools/PortMaster"
elif [ -d "$XDG_DATA_HOME/PortMaster/" ]; then
  controlfolder="$XDG_DATA_HOME/PortMaster"
else
  controlfolder="/roms/ports/PortMaster"
fi

source $controlfolder/control.txt

[ -f "${controlfolder}/mod_${CFW_NAME}.txt" ] && source "${controlfolder}/mod_${CFW_NAME}.txt"

get_controls

GAMEDIR=/$directory/ports/salvagette/
CONFDIR="$GAMEDIR/conf/"

> "$GAMEDIR/log.txt" && exec > >(tee "$GAMEDIR/log.txt") 2>&1
# Ensure the conf directory exists
mkdir -p "$GAMEDIR/conf"

# Set the XDG environment variables for config & savefiles
export XDG_DATA_HOME="$CONFDIR"
export SDL_GAMECONTROLLERCONFIG="$sdl_controllerconfig"

cd $GAMEDIR

runtime="frt_3.2.3"
if [ ! -f "$controlfolder/libs/${runtime}.squashfs" ]; then
  # Check for runtime if not downloaded via PM
  if [ ! -f "$controlfolder/harbourmaster" ]; then
    pm_message "This port requires the latest PortMaster to run, please go to https://portmaster.games/ for more info."
    sleep 5
    exit 1
  fi

  $ESUDO $controlfolder/harbourmaster --quiet --no-check runtime_check "${runtime}.squashfs"
fi

# Setup Godot
godot_dir="$HOME/godot"
godot_file="$controlfolder/libs/${runtime}.squashfs"
$ESUDO mkdir -p "$godot_dir"
$ESUDO umount "$godot_file" || true
$ESUDO mount "$godot_file" "$godot_dir"
PATH="$godot_dir:$PATH"

export FRT_NO_EXIT_SHORTCUTS=FRT_NO_EXIT_SHORTCUTS

$GPTOKEYB "$runtime" -c "salvagette.gptk" &
pm_platform_helper "$godot_dir/$runtime"
"$runtime" $GODOT_OPTS --main-pack "gamedata/salvagette.pck"


if [[ "$PM_CAN_MOUNT" != "N" ]]; then
    $ESUDO umount "$godot_dir"
fi
pm_finish
austere halo
#

Yeah you are

queen sonnet
#

That's the default we're using right now

austere halo
#

Yeah but

#

What’s the port structure like?

#

Use tree

queen sonnet
# austere halo What’s the port structure like?
[root@KNULLI /userdata/roms/ports]# tree salvagette/
salvagette/
β”œβ”€β”€ conf
β”‚Β Β  └── PortMaster
β”‚Β Β      β”œβ”€β”€ config
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ 020_portmaster.source.json
β”‚Β Β      β”‚Β Β  └── 021_portmaster.multiverse.source.json
β”‚Β Β      β”œβ”€β”€ harbourmaster.txt
β”‚Β Β      β”œβ”€β”€ libs
β”‚Β Β      └── themes
β”œβ”€β”€ gamedata
β”‚Β Β  └── salvagette.pck
β”œβ”€β”€ licenses
β”‚Β Β  β”œβ”€β”€ LICENSE.FRT.txt
β”‚Β Β  └── LICENSE.SALVAGETTE.png
β”œβ”€β”€ log.txt
β”œβ”€β”€ port.json
└── salvagette.gptk

8 directories, 9 files
[root@KNULLI /userdata/roms/ports]# ```
#

uhm

#

lol

austere halo
#

πŸ‘€

#

Delete that PortMaster directory.

queen sonnet
#

i installed the port via hm

austere halo
#

Look

#

PortMaster is not smart

#

It does some dumb things to figure out where shit goes

#

And you confused it

#

πŸ˜„

queen sonnet
#

let me try that install again and we'll look into pugwash.txt πŸ˜›

austere halo
#

Harbourmaster.txt

#

Pugwash is for gui

queen sonnet
austere halo
#

You broke it

austere halo
#

Wanna know how?

fluid nova
#

by not doing manual installs like us plebs? πŸ˜›

austere halo
#

By not installing it with a port.json that will fetch the runtime

queen sonnet
#

i have an idea πŸ˜›

#

πŸ˜„

#

that's beside the .sh

austere halo
#

It turns out allowing the port to fetch the runtime is broken on Knulli with that template and we’ve never tested it.

fluid nova
#

well, at least this gravedigging was useful for something

queen sonnet
# austere halo It turns out allowing the port to fetch the runtime is broken on Knulli with tha...

so the port.json that came with the port had the runtime but this is the instaleld one

{
    "version": 3,
    "name": "salvagette.zip",
    "items": [
        "Salvagette.sh",
        "salvagette/"
    ],
    "items_opt": null,
    "attr": {
        "title": "",
        "desc": "",
        "inst": "",
        "genres": [],
        "porter": [],
        "image": {},
        "rtr": false,
        "exp": false,
        "runtime": null,
        "min_glibc": "",
        "reqs": [],
        "arch": []
    },
    "status": {
        "source": "url",
        "md5": "e02340a3616333aba054f3763bf2856f",
        "url": "https://cdn.discordapp.com/attachments/1207765777969840240/1335179256841371688/salvagette.zip?ex=679f3a15&is=679de895&hm=191717f7c36a7287de99a5dfa54243141ae5e57950424f1f19df74ac983d7733&",
        "status": "Installed"
    },
    "files": {
        "port.json": "salvagette/port.json",
        "Salvagette.sh": "Salvagette.sh",
        "salvagette/": "salvagette/"
    }
}```
austere halo
#

Port.json doesn’t go there

#

Goes in the directory.

queen sonnet
austere halo
#

Have a look at another port

fluid nova
#

maybe not, I dont use that script πŸ˜„

austere halo
#

I wrote the package manager.

#

I’m fairly certain I have an idea how it works

queen sonnet
#

btw I didn't package this thing πŸ˜„

#

@fluid nova did πŸ˜„

austere halo
#

Fucking @fluid nova

fluid nova
#

πŸ˜„

austere halo
fluid nova
austere halo
#

πŸ‘€

queen sonnet
#

which spits out a .zip

queen sonnet
#
2025-02-01 10:58:30.073 | DEBUG    | harbourmaster.config:<module>:145 - HM_DEFAULT_TOOLS_DIR:   /userdata/roms/ports/salvagette/conf
2025-02-01 10:58:30.074 | DEBUG    | harbourmaster.config:<module>:146 - HM_DEFAULT_PORTS_DIR:   /userdata/roms/ports
2025-02-01 10:58:30.075 | DEBUG    | harbourmaster.config:<module>:147 - HM_DEFAULT_SCRIPTS_DIR: /userdata/roms/ports
2025-02-01 10:58:30.608 | ERROR    | __main__:<module>:697 - An error has been caught in function '<module>', process 'MainProcess' (7726), thread 'MainThread' (547508989984):
Traceback (most recent call last):

> File "/userdata/system/.local/share/PortMaster/harbourmaster", line 697, in <module>
    exit(main(sys.argv))
         β”‚    β”‚   β”” ['/userdata/system/.local/share/PortMaster/harbourmaster', '--quiet', '--no-check', 'runtime_check', 'frt_3.2.3.squashfs']
         β”‚    β”” <module 'sys' (built-in)>
         β”” <function main at 0x7f7639fec0>
  File "/userdata/system/.local/share/PortMaster/harbourmaster", line 670, in main
    hm = HarbourMaster(config, temp_dir=temp_dir, callback=ccb)
         β”‚             β”‚                β”‚                  β”” <__main__.ConsoleCallback object at 0x7f763c5350>
         β”‚             β”‚                β”” PosixPath('/tmp/tmpah8ejkxm')
         β”‚             β”” {'quiet': True, 'no-check': True, 'offline': False, 'debug': False, 'no-colour': False, 'force-colour': False, 'no-log': Fals...
         β”” <class 'harbourmaster.harbour.HarbourMaster'>

  File "/userdata/system/.local/share/PortMaster/pylibs/harbourmaster/harbour.py", line 138, in __init__
    self.platform.first_run()
    β”‚    β”‚        β”” <function PlatformBatocera.first_run at 0x7f7639c9a0>
    β”‚    β”” <harbourmaster.platform.PlatformKnulli object at 0x7f763b2b10>
    β”” <harbourmaster.harbour.HarbourMaster object at 0x7f763c5410>

  File "/userdata/system/.local/share/PortMaster/pylibs/harbourmaster/platform.py", line 390, in first_run
    self.portmaster_install()
    β”‚    β”” <function PlatformKnulli.portmaster_install at 0x7f7639cb80>
    β”” <harbourmaster.platform.PlatformKnulli object at 0x7f763b2b10>

  File "/userdata/system/.local/share/PortMaster/pylibs/harbourmaster/platform.py", line 429, in portmaster_install
    shutil.copy(BC_DIR / "control.txt", TL_DIR / "control.txt")
    β”‚      β”‚    β”‚                       β”” PosixPath('/userdata/roms/ports/salvagette/conf/PortMaster')
    β”‚      β”‚    β”” PosixPath('/userdata/roms/ports/salvagette/conf/PortMaster/knulli')
    β”‚      β”” <function copy at 0x7f770b8d60>
    β”” <module 'shutil' from '/usr/lib/python3.11/shutil.py'>

  File "/usr/lib/python3.11/shutil.py", line 431, in copy
    copyfile(src, dst, follow_symlinks=follow_symlinks)
    β”‚        β”‚    β”‚                    β”” True
    β”‚        β”‚    β”” PosixPath('/userdata/roms/ports/salvagette/conf/PortMaster/control.txt')
    β”‚        β”” PosixPath('/userdata/roms/ports/salvagette/conf/PortMaster/knulli/control.txt')
    β”” <function copyfile at 0x7f770b8ae0>
  File "/usr/lib/python3.11/shutil.py", line 256, in copyfile
    with open(src, 'rb') as fsrc:
              β”” PosixPath('/userdata/roms/ports/salvagette/conf/PortMaster/knulli/control.txt')

FileNotFoundError: [Errno 2] No such file or directory: '/userdata/roms/ports/salvagette/conf/PortMaster/knulli/control.txt'
umount: /userdata/system/.local/share/PortMaster/libs/frt_3.2.3.squashfs: no mount point specified.
mount: /userdata/system/godot: special device /userdata/system/.local/share/PortMaster/libs/frt_3.2.3.squashfs does not exist.
       dmesg(1) may have more information after failed mount system call.
./Salvagette.sh: line 59: frt_3.2.3: command not found
umount: /userdata/system/godot: not mounted.
Running in UINPUT output mode.
[root@KNULLI /userdata/roms/ports]# Running in Fake Keyboard mode
Using ConfigFile salvagette.gptk
Joystick 0 has game controller name 'Anbernic RG CubeXX Controller'```
austere halo
# queen sonnet

Btw all those files except the script go inside the port directory.

austere halo
#

Am cooking a bbq

queen sonnet
#

I thought this is how your testing packages looked like via your python thing

#

πŸ˜„

#

that's why i tested it like this

austere halo
#

Nope

queen sonnet
#
[root@KNULLI /userdata/roms/ports]# tree salvagette/
salvagette/
β”œβ”€β”€ gamedata
β”‚Β Β  └── salvagette.pck
β”œβ”€β”€ licenses
β”‚Β Β  β”œβ”€β”€ LICENSE.FRT.txt
β”‚Β Β  └── LICENSE.SALVAGETTE.png
β”œβ”€β”€ log.txt
β”œβ”€β”€ port.json
└── salvagette.gptk

3 directories, 6 files
[root@KNULLI /userdata/roms/ports]# ```
#
[root@KNULLI /userdata/roms/ports]# cat port.json 
{
  "version": 3,
  "name": "salvagette.zip",
  "items": [
    "Salvagette.sh",
    "salvagette"
  ],
  "items_opt": [],
  "attr": {
    "title": "Salvagette",
    "porter": [
      "Ganimoth"
    ],
    "desc": "Turn-based bullet-hell class warfare!\nSwipe to move in each of the four directions. Ram into things to destroy them, but avoid the dangerous projectiles.",
    "desc_md": null,
    "inst": "Ready to run!",
    "inst_md": null,
    "genres": [
      "action"
    ],
    "image": null,
    "rtr": true,
    "exp": false,
    "runtime": "frt_3.2.3.squashfs",
    "reqs": [],
    "arch": [],
    "min_glibc": ""
  }
}[root@KNULLI /userdata/roms/ports]# ```
#

still doing it 😦

austere halo
#

Okay zip that up and install via harbourmaster.

queen sonnet
austere halo
queen sonnet
queen sonnet
austere halo
#

Yup

#

So yeah

#

Can’t adjust XDG DATA HOME before you call harbourmaster.

queen sonnet
# austere halo Yup

If i delete the runtime from libs hm shits itself again. So that's a bug that still remains, I'm sure it's something simple

austere halo
#

Need to do it after.

#

Inside the script

queen sonnet
#

now i knoiw what oyu mean

#

ffs

austere halo
queen sonnet
#

this shit export XDG_DATA_HOME="$CONFDIR"

austere halo
#

Yup

#

πŸ˜„

#

All godot ports are broken if it tries to install the runtime on Knulli.

queen sonnet
#

I'll update the website

fluid nova
#

looking at it right now

queen sonnet
#

done on the website

austere halo
queen sonnet
austere halo
#

What do you mean?

queen sonnet
#

i don't even have a grill πŸ˜„

austere halo
#

Charcoal chimney makes a huge difference. The pc fan hooked up to a drill battery makes it even faster.

queen sonnet
#

πŸ˜„

austere halo
#

This song is a must to listen to also

queen sonnet
fluid nova
#

ffs I am trying to be on diet

#

and then I see this

austere halo
vernal imp
#

holy shit, crashing into the left wall on the first level literally crashed my entire device and made it hard restart'

#

cant make iy happen againbut it almopst blew my devices speakers out

fluid nova
#

O.O

#

I tried to replicate that without success o.O

vernal imp
#

X55

#

I couldn't make it happen again either but its happening a lot on Half Life 2 when I use my pistol in certain scenarios