Running .pnd's On A Beagleboard


panik

Member
Joined
Sep 21, 2008
Messages
187
Age
53
Location
Netherlands
Re: This topic and this one, I tried running some pnd-files on a beagleboard (revision C4@720 Mhz) with ubuntu-minimal-armel 10.04 and xfce4.

It's surprisingly straightforward. Mount the pnd somewhere (mount -o loop game.pnd /some/where/) and run some script file. Most missing libraries can be installed with synaptic, but I did need a few from the root-fs file. Some tinkering and editing paths in script files is sometimes necessary, but most error messages are pretty obvious (even for me). I also copied the files from the mounted .pnd to a place where I want to keep them and run them from there.

Penjin-based games run pretty well. I tried Cromozome and Pandorapanic of course. No tinkering involved at all. Panjoust runs a tad bit slower.
Zelda Classic also runs. I can walk around but I didn't find the action keys on the keyboard yet.

Snes9x runs great with Super Metroid, vba has some slowdown on the GBA rom I tried (Kurukuru Kururin) but definitely playable with soundoff=1.
The thing I was most happy with was the way gngeo runs and plays with a PS2 controller. Playing Metal Slug on my beagleboard was quite the moment :)
I took a pic:

metalslugbeagleboard_800x600.jpg
Cdogs, GameAndWatch and Quake3 gave me trouble, but I'm sure someone more knowledgeable can get them to their knees if he/she wanted.

Input is an issue with "native" pandora software. I found a lot of pandora-buttons are mapped to home, end, ins, del, pageUp, pageDown and the arrowbuttons on a keyboard. Analog controls are missing obviously, but might make for a nice AVR-project with the beagleboard gpio's. Emulators are configurable and recognise a USB joystick/gamepad.

Anyway, it surely raises my appetite for a real Pandora! (I'm #650-750 on Craig's list)
 
Last edited by a moderator:
haha... "Craig's list" anyway... seeing this makes me wonder if it won't start peoples minds buzzing about custom Pandora hardware projects... that was the first thing that hit MY mind... :p
 
Actually building libpnd on bb is trivial, and it should 'more or less' work without much tweaking... as long as you have the kernel modules for the mounts/etc, which seems like you do. I've not tried in aaaages though, but feel free to try it and let me know :)

ie: then it could be as easy as "pnd_run /foo/bar/baz.pnd", or run pndnotifyd (with a config file set up as you need) and having the .desktops show up in your home dir or whatever.

At one point, I did have it set up so I coudl just stick in SD and run stuff, just like a pandora :)

jeff
 
I had trouble getting a union FS working on my BeagleBoard. Other than that, using libpnd wasn't a major challenge.
 
Hey this is great - any chance you feel like sharing an SD image for other Beagleboard users, so we don't have to go through the same fuss? ;) I have a Beagleboard+Pico projector setup that I haven't really been using lately .. it'd be nice to have a simple SD card to get rolling with playing games on it .. ;)
 
skeezix said:
Actually building libpnd on bb is trivial, and it should 'more or less' work without much tweaking... as long as you have the kernel modules for the mounts/etc, which seems like you do. I've not tried in aaaages though, but feel free to try it and let me know :)

ie: then it could be as easy as "pnd_run /foo/bar/baz.pnd", or run pndnotifyd (with a config file set up as you need) and having the .desktops show up in your home dir or whatever.

At one point, I did have it set up so I coudl just stick in SD and run stuff, just like a pandora :)

jeff
Getting pndlib to run would be a great exercise and I would learn a lot, but to be honest I don't see the added value at the moment. I have Ubuntu on the SD-card, so there's not a lot of SD-swapping and pnd-recognising going on. If I was a linux-guru that knew where to look and what to do, I would have done this already :)

Of course, if the mighty skeezix asks me to do this I will spend all my free time trying, but I will probably need some pointers on what to do exactly :) I know a whole lot more than I did a few weeks ago, but it's a bumpy road.

torpor said:
Hey this is great - any chance you feel like sharing an SD image for other Beagleboard users, so we don't have to go through the same fuss? ;) I have a Beagleboard+Pico projector setup that I haven't really been using lately .. it'd be nice to have a simple SD card to get rolling with playing games on it .. ;)
I haven't built my own SD image yet, but I used these instructions for setting up the card.
Formatting and filling the card is running 1 scriptfile ("setup_sdcard.sh") from that page
Updating the kernel to 2.6.34 (only needed for SGX) is also 1 scriptfile ("install-me.sh" found on the same page)
The SGX drivers are a bit fiddly to get and setup, but also basically running some scriptfiles (You won't need them for 2D games anyway)
installing xfce4 is "sudo apt-get install xfce4"

That's basically it. Penjin-based games would only need the libSDL* libraries in /usr/lib/.

I spent too much time setting up Angstrom the way I wanted and I'm still not happy about it. That's ok, I've learned a lot, but with ubuntu I now actually have a very usable system :)
Let me know when you run into trouble. If the instructions on elinux.org don't work, it's probably something minor.
 
Last edited by a moderator:
panik said:
I will spend all my free time trying, but I will probably need some pointers on what to do exactly :) I know a whole lot more than I did a few weeks ago, but it's a bumpy road.
Have you read this ?
It should contain every thing you need to setup everything correctly.
As for packages dependency, the currentlist of all the ipk package used on the pandora have been posted on these board many time.
 
Last edited by a moderator:
I second what Gruso says - this is really cool. I'm very impressed. :D It almost makes me tempted to buy a BeagleBoard. :lol:

Gruso said:
Any suggestions? Dev forum? Software hacking forum?
Software Hacking, definitely.
 
Last edited by a moderator:
sebt3 said:
panik said:
I will spend all my free time trying, but I will probably need some pointers on what to do exactly :) I know a whole lot more than I did a few weeks ago, but it's a bumpy road.
Have you read this ?
It should contain every thing you need to setup everything correctly.
As for packages dependency, the currentlist of all the ipk package used on the pandora have been posted on these board many time.
Actually, no I didn't. :huh:
I will definitely give it a go! It could take a while though, as I'll be out of town for a week.
So much to learn, so much to do :)
 
Last edited by a moderator:
Once you're booting an OS from SD, a lot of the benefit of pnd goes away.. but not all; the auto-recognition etc cna be handy or not. But the big advantage if you cared at all would be .. pnd_run /foo/bar.pnd would save you doing the mount/unmount and union-magic for the appdata. ie: It'd make it pretty easy to do.

but if you don't care.. sure, you can mount and run just as well :) Just save you a few lines of typing is all :)

And you can do what you like with your free time, I'll give you that :)

jeff
 
skeezix said:
pnd_run /foo/bar.pnd would save you doing the mount/unmount and union-magic for the appdata.
I didn't bother with the appdata so far. Thanks, some error messages I get make more sense now :)
Libpnd_hub on the pandorawiki was a good read. Some day I might even understand what the hell I'm doing. :lol:
 
Last edited by a moderator:
heck, you could use pnd_run.sh -- it doesn't need any of the rest of the system; it takes command line arguments, and does the mount/union/run/unmount stuff.

So on BB, just use pnd_run.sh and your foo.pnd and see if it works :)

jeff
 
^^ Interesting. I will have to take a better look at it when I get back, but this is what I tried so far:

Code:
./pnd_run.sh -p pandorapanic.pnd -e PandoraPanic_R -b pandorapanic
./pnd_run.sh -p gngeo-0.7-xgngeo-r1.pnd -e xgngeo_startup.py -b gngeo-0.7-xgngeo-r1
./pnd_run.sh -p gngeo-0.7-xgngeo-r1.pnd -e xgngeo_startup.py -b gngeo-0 //to be sure
./pnd_run.sh -p panjoust.pnd -e panjoustpandora -b panjoust
That's how I interpreted the script at least, could be totally wrong.

I can see /mnt/pnd/$gamename and /mnt/utmp/$gamename appearing, where $gamename is the name from the -b option. A zenity script asks me about setting the speed, which is a nice touch, but won't do much on a beagleboard.

It seems to do nothing. No errors. That's probably good, but also not very helpful :) . Leaving out the -b option makes no difference. It does need the -e option (and -p of course).

Note that in order to provide the commandline options, the .pnd has to be mounted at least once, to take look inside for the filenames. That is, if I'm not wrong and/or overlooking something (wouldn't be the first time).

Thanks for thinking along! :)

Edit: I also tried including -m. No change. No errors, no nothing.

On another note:
I have UAE4ALL starting up and listening to a PS2 controller. The menu is very fast at least (too fast?). After selecting an .adf ("Disc" by Loriciel, would *love* to play that again) the screen blacks out and I have to kill it.

Code:
open ("/dev/dsp") failed with 2
If that's UAE4ALL trying to access the DSP, I will have to use another Ubuntu image that has the beagleboard DSP enabled, which is annoying. :huh:
 
panik said:
If that's UAE4ALL trying to access the DSP, I will have to use another Ubuntu image that has the beagleboard DSP enabled, which is annoying. :huh:
/dev/dsp is for "direct sound processing" not the chip :)
If you've sound on your beagleboard, you may be using alsa (never seen a beagle yet, might buy one though :p), then load the snd_pcm_oss kernel module and be done with that :)
 
Last edited by a moderator:
sebt3 said:
panik said:
If that's UAE4ALL trying to access the DSP, I will have to use another Ubuntu image that has the beagleboard DSP enabled, which is annoying. :huh:
/dev/dsp is for "direct sound processing" not the chip :)
If you've sound on your beagleboard, you may be using alsa (never seen a beagle yet, might buy one though :p ), then load the snd_pcm_oss kernel module and be done with that :)
Ah! You learn something new everyday! :) Thanks!
OK, the module is loaded now, but now I can't check because of sudden weirdness with the controller.
The menu also seems faster. So close! aargh! :angry:

Edit: Getting closer...

Code:
rik@beagleboard:~/pandorasoftware/UAE4ALL$ ./uae4all
starting sound thread..
gp2x_set_sound: 44100/16bit/mono, 32 buffers of 4096 bytes
sound_thread started
Open kick /home/rik/pandorasoftware/UAE4ALL/kickstarts/kick13.rom
Selecting file /home/rik/pandorasoftware/UAE4ALL/roms/Disc.adf
DF0 
No config file /home/rik/pandorasoftware/UAE4ALL/conf/kick13.rom.conf!
done
Killed

Somehow, the controller and the mouse were in battle. They kissed and made up.
I still have to kill it because the screen stays black after selecting the .adf in the menu.

What complicates things is that I was too CHEAP to buy a 7-port USB hub when I had the chance and went for 4 ports instead. Now I have to decide if I want internet or the PS2 controller. Doh! :blink:

Now figure out what that kick13.rom.comf is about... any ideas?
I do have /conf/uaeconfig.conf

Edit2: Also, bedtime. zzz...
 
Last edited by a moderator:
WizardStan said:
I had trouble getting a union FS working on my BeagleBoard. Other than that, using libpnd wasn't a major challenge.
How did you manage to get unionfs working on the beagleboard?
 
Last edited by a moderator:
I didn't, I hacked around it. :p
It never worked properly, so don't bother asking.
 
Back
Top