OK a quick tutorial in 2 parts... to teach you how to get started modding things yoursef!
If anything is too technical, happy to answer questions - that's what this forum is all about!
If you want to skip this tutorial and just make smilar mods on your system, the files I modified and instructions can be found here: https://www.mediafire.com/folder/utj476qq5ntou/gameta
That link also contains a short video of the mods. The background change shown is from a file found on the external SD Card.
Also, I use linux, your mileage will vary on Windows. You can't do the dynamic background trick from Windows AFAIK.
Part 1 - Fundamentals
When you load up Vert's v1.0 img on your linux machine (or insert the SD card containing that image) three ext3 formatted linux partitions appear as drives (which actually just become folders to the Gameta system) and a single FAT32 data partition of folders:
105 MB Volume <- Contains the UI config & resource files, extra apps, and other goodies
16 MB Volume <- Contains app config files for mplayer (the app that plays music and video), camera, and the
262 MB Volume <- This contains the Linux OS that powers the device
15 GB Volume <- This is the FAT32 partition that holds data like games you throw on it (the oddly named
'U Card' on the device). I extended this using gParted to fill the remainder of the 16 GB
card I'm using so the size for you might be different
All of the magic happens in the 105 MB Volume. On boot the local folder gets mapped to /usr/local/ to the gameta system, as we'll see in the config in part 2. A quick explanation of the layout:
105 MB Drive
- game <- Contains the original emulators
- local <- Gets mapped to /usr/local/ and contains all configuration
- apps <- The applications found in the bottom row of the main gameta screen
- bin <- Not important
- dmenu <- Houses the entire UI config
- etc <- Not important
- home <- Empty
- lib <- Empty
- sbin <- Not important except for show_pic.dge*
- scrpts <- Empty
- share <- Empty
- usr <- contains a sym-link** to mmc, i.e. the external SDCard when inserted
- <more sym-links that aren't important right now>
* I suspect showpic.dge contains the boot/shutdown image, or at least is the binary called to show it (No, I have no idea how to modify that yet!)
** sym-link a.k.a. symbolic link: Unlike a hard link, a symbolic link does not contain the data in the target file; it points to another entry somewhere in the file system. i.e. we can link to something that is going to exist
after boot up but doesn't exist yet before boot-up.Apps
In my setup, I added new apps from http://dl.openhandhelds.org/cgi-bin/dingoo.cgi
. Just download and extract them into the apps folder above, and they can be run from the file explorer (or make a new icon in the main screen bottom row, how-to in part 2). Important:
You must rename the executable to end in .dge if it isn't already or they will not show up in the Gameta file explorer
and thus cannot be run! Example: I put dingux-write into this folder to edit text files, it's executable is called 'dingux-write' and I had to rename this to 'dingux-write.dge' for it to work.
Here's the file structure that shows where you can modify the UI, Backgrounds, and Sounds:
105 MB Drive
- gSensor <- Code to activate an accelerometer, device doesn't seem to have one though. Likely
here since this is a modified FW of another device
- otg_configs <- Looks like unimportant button mappings
- pad <- Looks like unimportant controller on/off scripts
- resources <- Unused(?) icons
- sounds <- Where the user-selectable system sounds are kept. Modify away! (But see notes on
- scripts <- Doesn't look important
- themes <- Where the UI configuration and icons are kept
- cool_res <- Where 'Main Screen' icons live
- ipen <- Main folder for the 'ipen' theme. Do not modify the themes.cfg sym-link here!
- res <- Icons for the Main Screen, many unused
- mainface <- Unused icons
- subIcons <- All 'game menu' icons live here
- file_icon <- All 'file explorer' icons live here
- ipen-en <- Where all of the 'English' config lives. Original FW has a folder for every
language, so menus display in the right language etc.
- cooltheme.cfg <- The config for the entire Main Screen. Modify away! (After reading notes on UI
Config in Part 2)
- theme.cfg <- The config for every Sub-menu, and where the earlier sym-link actually points to
(More in Part 2)
- tv <- NTSC/Pal switching scripts
- udc <- UDC enables USB mass storage(?), but empty so disabled - would be interesting to
try A320/380 scripts here to see if it activates...
- wallpapers <- All of the selectable backgrounds. Add files sized 480x272! Also see Backgrounds
- <many files you should not touch unless you know what you are doing!>
folder contains 5 folders (for each of the 5 selectable profiles in the settings menu) and 6 scripts to activate them. Based on my experiments, the system only seems to support 5 profiles period - activating a sixth caused the UI to go nuts and didn't work. So unless someone can get it to work it seems we're limited to replacing existing sounds instead of adding new ones. The folders named s1 through s5 (s6 is not used) each contain the .wav's you can replace.
FWIW the files named sound_1 though sound_5 are bash scripts that replace a specific config line in ../../demnu.ini
to select the corresponding sound profile (the settings app runs each to make the selection). If this is confusing you can ignore it since it doesn't seem to be modifiable anyway.Backgrounds
folder contains all of the images for user-selctable backgrounds. Just add as many as you want, the settings automatically picks them up for you! If you want Dynamic Backgrouds
that can be modified via the external SD Card (so you don't have to take the thing apart to get fresh images), it's a little involved but here it is step-by-step (without images, sorry!):
1. Navigate to the /local/dmenu/wallpapers
folder in your linux file explorer (In ubuntu like I use, the Files app)
2. Right-click the file-view and choose 'Open Terminal' to get a terminal into this folder
3. Run this command to create a sym-link: ln -s /mnt/mmc/backgrounds/background1.jpg
4. Repeat the previous step for as many backgrounds as you want, changing 'background1.jpg' to 'background2.jpg', etc. Type exit
5. Now on your external SDCard, create a folder from the root called backgrounds
and add the backgrounds you want with the same names as the previous step
If you do this there are two caveats:
1. You now should have the external SD card in at all times
. Reason being, if you try to select a new background and the system can't find those files on the external card the system crashes (no permanent damage, just use the reboot button).
2. To make this work you have to fix the "SDCard Mount on Boot" bug I found by performing the steps below
Provided you've folowed these directions, you can now load backgrounds from the external SD Card! This lets you keep things fresh by replacing these images with new ones anytime you want, without disassembling the device Fixing the 'SDCard Mount On Boot' bug
You may have noticed that when you boot the device with an external SDCard inserted, the device won't 'see' it until you remove it then re-insert it. The reason for this is that the system is not configured to mount the external card on boot (for some reason). To fix this:
1. Open the '262 MB Volume' - this contains the linux OS for the device
2. Make a backup copy of /etc/inittab somewhere safe, then edit this file in your favourite editor
3. In the '#Mount appfs' section add this line as the fourth line to mount the SDCard on boot: ::sysinit:/bin/mount /dev/mmcblk1p1 /mnt/mmc -t vfat -o rw,utf8,noatime
4. Save the file, and done!
My inittab looks like this (change in bold
::sysinit:/bin/mount /dev/mmcblk0p2 /usr/mtdblock3 -t ext3 -o ro
::sysinit:/bin/mount /dev/mmcblk0p3 /usr/mtdblock4 -t ext3 -o rw
::sysinit:/bin/mount /dev/mmcblk0p4 /mnt/memory -t vfat -o rw,utf8
::sysinit:/bin/mount /dev/mmcblk1p1 /mnt/mmc -t vfat -o rw,utf8,noatime
::sysinit:/bin/mknod /dev/tcsm c 238 73
::sysinit:/bin/cp /boot/local/dmenu/dmenu_ln /tmp/dmenu_ln
Testing shows that if the SDCard is not present, the mount command is ignored, and no issues. On boot if the card is present, it will now be available right away, no re-inserts needed.
Main Screen & Menu Config
This section is long so it's Part 2