pjasicek / OpenClaw

Reimplementation of Captain Claw (1997) platformer
GNU General Public License v3.0
338 stars 39 forks source link

Zoomed in on rg353p #173

Open 31337-4554551n opened 2 years ago

31337-4554551n commented 2 years ago

When installing through portmaster and running on ambernic rg353p it's all zoomed into a corner and you can't really see anything. Unsure where to post the bug. Here, OS github, or portmaster github. Sorry, very new to all of this.

pjasicek commented 2 years ago

Hi, it's my first time hearing about "portmaster" or "ambernic rg353p" :-)

Are you trying to run the native aplication ? Or Emscripten build in the browser ?

31337-4554551n commented 2 years ago

I am using jelos, which is a port of emuelec/351 elec. It's a linux distro made to work on the ambernic consoles. https://github.com/christianhaitian/PortMaster/wiki#openClaw Portmaster is included in the operating system, which is a tool to install ports for it. Yours is one of them. I can give you any other information you'd like, and a big thank you

pjasicek commented 2 years ago

Sorry, I can't really help you with this. Contact the PortMaster guys for help or support.

31337-4554551n commented 2 years ago

They don't accept requests, only push requests :( Such a shame, I was so excited for this Maybe you could take a quick gander with me as proxy?

31337-4554551n commented 2 years ago

image

31337-4554551n commented 2 years ago

Though it works if you plug it into an external screen with hdmi. So it's something to do with the port not detecting the screen size I think :D

pjasicek commented 2 years ago

Looking at the PortMaster stuff it looks like your "model" is not supported. Download this:

https://github.com/christianhaitian/PortMaster/blob/main/Openclaw.zip

and open OpenClaw.sh

you can then see this section of script:

if [ "$LOWRES" == "Y" ]; then
  sed -i '/width\=\"1920\"/s//width\=\"480\"/g' $GAMEDIR/config.xml
  sed -i '/width\=\"857\"/s//width\=\"480\"/g' $GAMEDIR/config.xml
  sed -i '/width\=\"640\"/s//width\=\"480\"/g' $GAMEDIR/config.xml
  sed -i '/height\=\"1080\"/s//height\=\"320\"/g' $GAMEDIR/config.xml
  sed -i '/height\=\"480\"/s//height\=\"320\"/g' $GAMEDIR/config.xml
  sed -i '/<Scale>3/s//<Scale>1/g' $GAMEDIR/config.xml
elif [[ "$(cat /sys/firmware/devicetree/base/model)" == "Anbernic RG552" ]] || [[ -e "/dev/input/by-path/platform-singleadc-joypad-event-joystick" ]]; then
  if [[ -e "/usr/share/plymouth/themes/text.plymouth" ]] || [[ "$(cat "/etc/os-release")" == *"RG503"* ]]; then
    sed -i '/width\=\"857\"/s//width\=\"960\"/g' $GAMEDIR/config.xml
    sed -i '/width\=\"640\"/s//width\=\"960\"/g' $GAMEDIR/config.xml
    sed -i '/width\=\"480\"/s//width\=\"960\"/g' $GAMEDIR/config.xml
    sed -i '/height\=\"480\"/s//height\=\"544\"/g' $GAMEDIR/config.xml
    sed -i '/height\=\"320\"/s//height\=\"544\"/g' $GAMEDIR/config.xml
    sed -i '/<Scale>3/s//<Scale>1/g' $GAMEDIR/config.xml
  else
    sed -i '/width\=\"857\"/s//width\=\"1920\"/g' $GAMEDIR/config.xml
    sed -i '/width\=\"640\"/s//width\=\"1920\"/g' $GAMEDIR/config.xml
    sed -i '/width\=\"480\"/s//width\=\"1920\"/g' $GAMEDIR/config.xml
    sed -i '/height\=\"480\"/s//height\=\"1080\"/g' $GAMEDIR/config.xml
    sed -i '/height\=\"320\"/s//height\=\"1080\"/g' $GAMEDIR/config.xml
    sed -i '/<Scale>1/s//<Scale>3/g' $GAMEDIR/config.xml
  fi
elif [[ -e "/dev/input/by-path/platform-odroidgo3-joypad-event-joystick" ]]; then
  sed -i '/width\=\"1920\"/s//width\=\"857\"/g' $GAMEDIR/config.xml
  sed -i '/width\=\"640\"/s//width\=\"857\"/g' $GAMEDIR/config.xml
  sed -i '/width\=\"480\"/s//width\=\"857\"/g' $GAMEDIR/config.xml
  sed -i '/height\=\"1080\"/s//height\=\"480\"/g' $GAMEDIR/config.xml
  sed -i '/height\=\"320\"/s//height\=\"480\"/g' $GAMEDIR/config.xml
  sed -i '/<Scale>3/s//<Scale>1/g' $GAMEDIR/config.xml
else
  sed -i '/width\=\"1920\"/s//width\=\"640\"/g' $GAMEDIR/config.xml
  sed -i '/width\=\"857\"/s//width\=\"640\"/g' $GAMEDIR/config.xml
  sed -i '/width\=\"480\"/s//width\=\"640\"/g' $GAMEDIR/config.xml
  sed -i '/height\=\"1080\"/s//height\=\"480\"/g' $GAMEDIR/config.xml
  sed -i '/height\=\"320\"/s//height\=\"480\"/g' $GAMEDIR/config.xml
  sed -i '/<Scale>3/s//<Scale>1/g' $GAMEDIR/config.xml
fi

Not sure how linux-savvy you are, but basically it checks for the HW model of your device trying various stuff, e.g.:

elif [[ "$(cat /sys/firmware/devicetree/base/model)" == "Anbernic RG552" ]] || [[ -e "/dev/input/by-path/platform-singleadc-joypad-event-joystick" ]]; then

Then is sets the "correct" resolution for the given model. My guess is you will need to do the same:

1) find our what HW model you have - you need to come up with a way how to determine that 2) add the section specific to your model to that script and set the correct resolution for you (width/height/scale)

pjasicek commented 2 years ago

As it is now, it is using 640x480 resolution with scale 3, from what I can see:

/openclaw/config.xml

<Configuration>
  <Display>
    <Size width="640" height="480" />
    <Scale>3</Scale>
...

Or, you can try to edit this directly and see what fits your device. Though I don't know how the OpenClaw.zip from PortMaster works in any way (if you upload it to your device with some SW or anything like that ...)

31337-4554551n commented 2 years ago

Alright, I'll try that now. Quick question also, how can I use your port to change controls scheme? Clicking on the controls in options gives confirmation sound but nothing opens

pjasicek commented 2 years ago

That's not implemented, no easy way to do that other than modifying and recompiling the source code.

31337-4554551n commented 2 years ago

Ah, dang. It's like south button jump, right shoot, north punch. Awkward. Is that being worked on? :P

So what I should be able to do is cheat a little, and use

else sed -i '/width\=\"1920\"/s//width\=\"640\"/g' $GAMEDIR/config.xml sed -i '/width\=\"857\"/s//width\=\"640\"/g' $GAMEDIR/config.xml sed -i '/width\=\"480\"/s//width\=\"640\"/g' $GAMEDIR/config.xml sed -i '/height\=\"1080\"/s//height\=\"480\"/g' $GAMEDIR/config.xml sed -i '/height\=\"320\"/s//height\=\"480\"/g' $GAMEDIR/config.xml sed -i '/3/s//1/g' $GAMEDIR/config.xml fi

For my own parameters? So my display is 640*480, so I need to remove scale? or maybe modify some of those settings

pjasicek commented 2 years ago

This project is more or less in a state of maintenance, I am not actively working on it anymore (these past 2 days being an exception). If you will need something specific done for you platform / hardware, your best bet is to do it yourself and send me a merge request.

For the resolution values, you will need to tinker with it, I don't really know to be honest - try deleting the whole if/elif/else construct from the /OpenClaw.sh and directly edit /openclaw/config.xml and see which values fit you.

Once you find them, you can try to incorporate them imto OpenClaw.sh if you want and then send the maintainers a merge request with your hardware config. That's atleast how me personally would go about it.

31337-4554551n commented 2 years ago

Definitely out of my skill set, but thank you so much for your time :)

31337-4554551n commented 2 years ago

I'm trying to puzzle this out, but the screen is already 640*480, so that last else statement should work, right?

31337-4554551n commented 2 years ago

For anyone that ever comes across this in the future. The fix is Modifying the openclaw.sh file like this

GAMEDIR="/$directory/ports/openclaw"
cd $GAMEDIR

#if [ "$LOWRES" == "Y" ]; then
#  sed -i '/width\=\"1920\"/s//width\=\"480\"/g' $GAMEDIR/config.xml
#  sed -i '/width\=\"857\"/s//width\=\"480\"/g' $GAMEDIR/config.xml
#  sed -i '/width\=\"640\"/s//width\=\"480\"/g' $GAMEDIR/config.xml
#  sed -i '/height\=\"1080\"/s//height\=\"320\"/g' $GAMEDIR/config.xml
#  sed -i '/height\=\"480\"/s//height\=\"320\"/g' $GAMEDIR/config.xml
#  sed -i '/<Scale>3/s//<Scale>1/g' $GAMEDIR/config.xml
if [[ -e "/dev/input/by-path/platform-odroidgo3-joypad-event-joystick" ]]; then
  sed -i '/width\=\"1920\"/s//width\=\"640\"/g' $GAMEDIR/config.xml
  sed -i '/width\=\"640\"/s//width\=\"1920\"/g' $GAMEDIR/config.xml
  sed -i '/width\=\"480\"/s//width\=\"857\"/g' $GAMEDIR/config.xml
  sed -i '/height\=\"1080\"/s//height\=\"480\"/g' $GAMEDIR/config.xml
  sed -i '/height\=\"480\"/s//height\=\"1080\"/g' $GAMEDIR/config.xml
  sed -i '/<Scale>1/s//<Scale>3/g' $GAMEDIR/config.xml
else
  sed -i '/width\=\"1920\"/s//width\=\"640\"/g' $GAMEDIR/config.xml
  sed -i '/width\=\"857\"/s//width\=\"640\"/g' $GAMEDIR/config.xml
  sed -i '/width\=\"480\"/s//width\=\"640\"/g' $GAMEDIR/config.xml
  sed -i '/height\=\"1080\"/s//height\=\"480\"/g' $GAMEDIR/config.xml
  sed -i '/height\=\"320\"/s//height\=\"480\"/g' $GAMEDIR/config.xml
  sed -i '/<Scale>3/s//<Scale>1/g' $GAMEDIR/config.xml
fi

And it works on the small screen. Hopefully someone kind drops by a way to fix controls and swap the north and west buttons

pjasicek commented 2 years ago

What's wrong with the buttons ?

pjasicek commented 2 years ago

There is some button mapping I see, check:

/openclaw/openclaw.gptk.1

31337-4554551n commented 2 years ago

I love you! Everything works perfectly! I'm going to try to figure out how to submit that to their github for the rg353p. Only ever used git for issues requests. One last question, how do I disable the max bullets etc and play with the lives and supplies you're meant to have in the original, is there a config for that?

pjasicek commented 2 years ago

In /openclaw/config.xml

change this:

...
<LoadAllLevelSaves>true</LoadAllLevelSaves>
...

to this:

...
<LoadAllLevelSaves>false</LoadAllLevelSaves>
...

This will basically give you a clean-slate of the game - just Level 1 with no checkpoints, 3 lives, 10 bullets, 5 magic claws, 3 dynamites.

Hopefully the game save mechanism works on the port ;-)

31337-4554551n commented 2 years ago

Omg, you're amazing. Everything is perfect. The only thing left to do is detect that there's an HDMI cable and change resolution in that if statement. I've got it all worked out, except the OS I'm using doesn't have xrandr and doesn't set that $LOWRES variable the script mentions. But I've got it working on the small screen, with good controls, starting from scratch (just gotta test that saves work) and we're good! My current work around is to flip the resolution and the scale ever time. A bit annoying, but it lets me play on either haha. Now when you say hope the save mechanism works, if it does, great. But also, would it overwrite your special settings (like if later I want to go back to all unlocked, will your save still be there, or mine will overwrite it?) You've been amazing, thank you.

Are there any other changes in your port that differ from the oringinal experience I can tweak?

pjasicek commented 2 years ago

But also, would it overwrite your special settings (like if later I want to go back to all unlocked, will your save still be there, or mine will overwrite it?

The option to show all available levels will always be there, just switch back from LoadAllLevelSaves=false to LoadAllLevelSaves=true

Are there any other changes in your port that differ from the oringinal experience I can tweak?

You can look in the config.xml, but I don't thing anything is worth modifying. If sound is weird, you can play with the sound options there, but other than that, I don't think so

31337-4554551n commented 2 years ago

Awesome so all timings, powers etc are the same. Some really touchy settings there. Thanx man, this is so awesome. Nostalgia is hitting me like a tank, I'm probably gonna play this till the sun comes up and worry about work later lol