Sunday, December 28, 2008

Installing VICE

VICE, specifically for the AA1's Linux distro can be found here:

http://download1.rpmfusion.org/nonfree/fedora/updates/8/i386/repoview/vice.html

Current version here (as of this post) is 2.0, where 2.1 came out a week or 2 ago.

I should also note, doubling the screen size and full-screening can be found under "Settings->VIC-II->...".

It "should have" worked after doing the repository add-on with VLC, but it doesn't seem to. Oh well.

More files can be found by browsing RPM Fusion.

Free and Non Free.

Mame and others.

Warcraft 3 on the AA1

Alright, here's how to run Warcraft 3 on an Aspire One.

First things first, you'll need to create an ISO image of a Warcraft 3 disk. It may work by merely copying the data, but I didn't try it. If you do, simply ignore all the steps involving mounting.

My main machine is a Windows XP box, so I used the free program ImgBurn to create an ISO.

http://www.imgburn.com

You're also going to need the latest patch from Blizzard, which just happens to include a No-CD fix.

http://us.blizzard.com/support/article.xml?articleId=21220

Copy the ISO file and the Patch to a Memory Card or USB Key, and insert it in the AA1.

Next you're going to need Wine. If you don't already have it, from a terminal execute:

yum install wine-devel

This should get Wine version 1.1.9 or better.

Now that we have Wine, lets install the game.

Start by mounting the ISO image.

sudo mount -o loop /media/disk-1/Warcraft3.iso /mnt/mountfolder

/mnt/mountfolder must exist as a folder for this to work. Tweak appropriately.

If you became root by using SU, be sure to exit. Otherwise, you'll install the game in root's account, instead of your user account.

Browse to the mount and run the installer.

cd /mnt/mountfolder

wine install.exe

Follow the instructions. Feel free to place it anywhere on your C drive (it's a fake C drive anyways). C:\Warcraft 3, or under Program Files.

Let the install finish, but DON'T START the game yet.

Application installed by wine can be found in your home folder in a hidden directory ".wine/drive_c/".

cd (this goes back to your home folder)

cd .wine/drive_c

cd wherever_you_installed_Warcraft3

The first thing you must do is rename the Movies folder. This is to avoid a startup bug in Wine.

mv Movies/ _Movies/

Next, browse to the memory card or USB stick and install the patch.

cd /media/disk-1/

wine War3ROC_122a_English.exe

Wait a bit, and the patching process will begin.

The patch may start the game at this point, and it may be slow and have glitchy sound. Just exit, and we'll fix this.

First the sound fix.

From a terminal run the Wine Configuration Tool.

winecfg

Go to the Audio page.

Deselect the ALSA driver and select the OSS Driver instead.

Click Ok.

Next the performance.

We need to add a registry key. From a terminal type:

wine regedit

Browse to:

HKEY_CURRENT_USER\Software\Blizzard Entertainment\Warcraft III

From here, were going to add a new DWORD key. Call the key "Gfx OpenGL" (no quotes), and give it a value of 1.

That's it. Browse to your Warcraft 3 folder and run it by executing:

wine Warcraft\ III.exe

Tada, Warcraft 3. You can play with the graphics settings to improve performance. With everything turned off/low and running 800x600, for me it's a very playable looking 20fps or so.

Storage Expansion Notes

I plugged my 16 GB SDHC card in to the storage expansion port of the AA1. As expected, it added the space to the systems total space. Here's how it works.

The memory card is actually mounted at:

/media/disk

On the AA1's file manager, it shows up as:

Removable:///disk

The way the storage expansion works is this: in any folders that exist on both the user folder and this folder on the memory card, the files will be placed in which ever one has more free space. More often than not that's the memory card.

Also, in the case where a folder exists in one, but not the other, it'll be placed only on the device that has that folder. In other words, I have a "Writing" folder on my SDHC card, but not in my user folder. My files (imported from SVN) reside on the memory card.

And now you know.

Sorry, I can't remember where I read this.

Cave Story Linux and Wine'ing

You can grab the Linux port of Cave Story here, on Archive.org:

http://www.archive.org/details/CavestorydoukutsuForLinuxV1.01

Looked for a VICE binary suitable for the AA1, but haven't found one yet. Guess I'll have to build one.

- - - - - -

As for running apps with Wine, it was easier than I thought it would be.

First, grab wine from the repository with yum.

yum install wine-devel (the latest version will be the devel branch)

Running it creates a ".wine" directory and tree under your user account. Windows hierarchy lives in ".wine/c_drive/Program Files/Blah", if you run a Windows installer.

Running an app with Wine is easy... too easy.

wine MyApp.exe [ARGS]

Depending on the complexity of the app, wait a bit, and it should start shortly.

Easy.

I initially ran Cave Story this way, which ran 40-60% normal speed on the AA1. The Linux port runs full speed.

- - - - - - -

You can mount an ISO image on Linux as follows.

mount -o loop /path/to/file.iso /path/to/mount/point

Mount point MUST BE an existing folder. Likely /mnt/blah.

Found this by Googling.

Thursday, October 23, 2008

The BIOS Update down side

The new BIOS is fine, but I did discover a down side. It seems there were changes to a couple prior bios updates that adjusted the lowest brightness levels. Unfortunately, that now means you can't make the screen go as dark as you could with the stock BIOS. Oh well.

Sunday, October 19, 2008

Updated my BIOS

Apparently the latest Acer BIOS improves the battery life. How can I say no to that? ;)

Also fixes a problem with BIOS recovery some people have experienced. Good. So the sooner I get this on there, the sooner I'll be able to do safer BIOS updates.

I took my USB key and made it in to a flash key following these instructions.

http://macles.blogspot.com/2008/07/flashing-bios.html

Downloaded the BIOS from Acer Europe's server.

ftp://ftp.work.acer-euro.com/notebook/aspire_one_110/bios/

Made a FreeDOS bootable key, and copied the firmware "3.305" to the key. Booted the key like I booted my recovery Linux (F12 on boot).
  • Hit enter
  • Selected option 5
  • Ignored the errors and switched to the C: drive
  • Ran the batch file (3305.bat)
Done.

Thursday, October 16, 2008

Installing VLC on the Aspire One

Bring up a terminal and become root (i.e. "su").

Uninstall the old Media Player (yes, you should do this).

yum remove mplayer\*

Update to the latest Redhat Repository.

yum install fedora-release

Add the Livna repository (where the VLC binaries can be found).

rpm -ivh http://rpm.livna.org/livna-release-8.rpm

Install VLC.

yum install vlc

Lots of "y"s later, you can now play videos by double clicking.


Also! Accessing files on your Windows network.

First, find out the IP address of the system you want to access (mine is 192.168.0.101).

Create a folder under "/mnt" for the link.

Next become root and mount it.

mount -t cifs //192.168.0.101/Work /mnt/MyTargetFolder

Tada, you can now access your files from "/mnt/MyTargetFolder".

For closure, "umount" removes mounts.

Wednesday, October 15, 2008

Adding Icons to the Desktop

Edit the file "/home/user/.config/xfce4/desktop/group-app.xml" to add icons to the desktop.

These icons are ".desktop" files normally found in "/usr/share/applications/".

Typing "ls --time=ctime -c" while in the "/usr/share/applications/" will sort the files by creation time. Scroll to the top, and it should be one of the first files after that command.

If a file gives you trouble once displayed, edit it.

Broke it, then fixed it

I started off my AA1 fun today by playing with the /etc/fstab file. I got a suggestion to check and make sure I was not mounting any tmpfs partitions (specifically /tmp). Well I wasn't, but there was a commented out line in my /etc/fstab that would do exactly that.

Ha ha! Lets uncomment the line.

As a result of that genius, the system now booted up to an odd X-Windows 'esc screen featuring an X cursor and a grey background. And that was it. Good job Mike, you broke it.

In trying to come up with a way to solve this problem, I learned a few things about Grub. While booting, I can mash the TAB key to bring up my Grub interface. From here I can either edit my bootup options (adding or removing arguments from the kernel line, and such), or drop in to a pseudo shell. In the pseudo shell I can't do much, but I can read files on my drive.

cat (hd0,0)/etc/fstab

Yes, I can enjoy my stupidity from the bootloader. Excellent.


The next step was to put a small Linux on a USB key, then try to get in to my main drive from there. I went with Damn Small Linux on a 256 MB key I have. I followed the instructions here to create the key.

http://www.althack.com/2006/03/10/how-to-run-linux-on-a-usb-drive/

Now that I had a key, I got the chance to figure out how to break in to my Linpus install.

From the BIOS boot stage (Acer Logo), you can mash the F12 key to pick a device to boot from. So I picked my Dell USB key, and we were off.

Possibly of note, my key was in the port on the left side. Probably nothing, but hey, just to know. :)

Damn Small Linux is set up in such a way that sudo works without a password. So from a terminal I ran "sudo su" to work my magic.

It wasn't quick, but I eventually found out that the device name for the SSD was "/dev/hdc1", so I mounted said device.

mount /dev/hdc1 /mnt/hd

The "/mnt/hd" folder already exstisted. Then from there, I used the decent looking built in text editor to change the file.

beaver /mnt/hd/etc/fstab

Made my fix, and we were back in business.


Oh, except for one little problem. My touchpad was dead. !?!

What's even more impressive is how I fixed it. I pulled out the battery.

Wow.


Anyways, we're back in action, and we learned something. I'm starting to think this is why I bought the system. :)

Tuesday, October 14, 2008

Working in the backyard

Today, possibly the last somewhat warm day of the year, I decided to sit out in the backyard t work.

Halfway through, I started making system tweaks.

The first is one I've been afraid of. From the terminal running:

xfce-settings-show

I don't know why, but I got the impression that running this application was some sort of "forcefully switch to advanced mode" crazyness. Nope. Instead, it's merely the real configuration tool, akin to the control panel on Windows. Hidden away from you by Acer/Linpus.

From here I was able to make 2 big fixes. I enabled the right click menu (Desktop/Behavior/show desktop menu on right click), which means I can now right click on the desktop to access all this great stuff. The stock user interface I already went through the trouble of editing to include my apps is there, just now I can do more.

Next I switched the Keyboard Map to "default" instead of "emacs" (Keyboard Preferences). What this means is I can now use CTRL+A to select all. Before, it I have no idea what it used to do. Now it's normal.

No idea why that isn't a stock setting. Oh well.

From the Keyboard Preferences tool, it seems I can set up shortcut keys to launch applications, or perform actions. Oooh! If I think of any, I'll be back. :D

More key settings can be found in the User Interface config panel too.

This was followed by a minor change to firefox (about:config), to disable disk caching.


Then lame old me came back inside because it got cold out. :)


And now that I'm back on the desktop, I'm making one more.

From here, the Synaptics touch pad driver has a feature that'll disable itself as you type. As suggested, I started by adding a small shell script block to the end of my "/home/user/.bashrc" file.

However, this is probably not the best solution, as the author of the tip mentions later (haha, after I already made the change).

After commenting out the previous suggestion, I followed the later instructions. From the terminal running (NOT as su/root):

xfce4-autostart-editor

And adding an application.

Synaptics Daemon
/usr/bin/syndaemon -i 1 -d

I made the mistake of runnig this as root, which I'm guessing added this to the root account, but I always start as user.

I also took this opportunity to remove a pair of autoupdate tasks from the list. There's a few more tasks here (compiz, print queue, Acer Task Queue, services no wait) that I'll to do some investigating in to. Might be able to shave off some boot time with these.

Charging Again

Ok, I checked the system. I'm at 18% charge (28 minutes remaining estimate). I'm shutting down the system and plugging in the charger. 11:45 AM right now. I'm going to check on it every half hour or so (by looking over at the currently orange light, for it to turn green).

About 55 minutes later (12:40 PM), I'm at 80% battery. So I guess as I expected, it can "mostly charge" pretty fast. I imagine it'll be another hour to reach the 100% mark.

Well, about half an hour later (1:13 PM), it seems it's charged. I've been out of the room most of the time, so if it finished sooner, I missed it.

Not bad. Full charge in less than an hour and a half. Sure, 10 minutes would be better, but this is tolerable.

Still, keep an eye on Toshiba Netbooks in the future. If they keep them batteries to themselves, that'll be the deal maker right there. "Oh shoot! My 3 hours are up. No problem, I got 10 minutes...".

Monday, October 13, 2008

Linux Startup Research

As expected, Linux boot generally just a whole bunch of scripts. The core script is:

/etc/inittab

Though unless you're feeling extra awesome, you'll never need to touch this file.

This file include a series of scripts found under:

/etc/rc.d/

"inittab" uses the file "rc.S" as the so called "system initialization". I'm pretty sure this is still more low level than I'd ever care to know.

Next, it implements runlevels by executing a script simply called "rc" with a numeric argument. Runlevels are the Linux equivalent of booting in to DOS mode, back from the Windows 95 days. Runlevel 1 is a single user "administrative" mode. There's a few more, but the other important one is Runlevel 5, Multiuser+Networking+GUI mode. In other words, a normal Linux boot.

Inside the "inittab" file, it seems the "rc" script was overloaded (i.e. copied and renamed). "rc.5" is used alternatively to execute argument 5 (i.e. "rc.5 5" instead of "rc 5").

"rc.5" is heavily modified. Many lines are commented out, so it looks as if it's already been well tuned here.

Services scripts live in:

/etc/rc.d/init.d/

There's also a symlink here setup at "/etc/init.d/".

These scripts are just the files that'll be run. What's important is then this.

/etc/rc.d/rc5.d/

A folder full of symlinks to the various scripts found in "init.d", for our preferred runlevel (5).

Every symlink in this folder has a 3 character identity. S or K (for Start or Kill) followed by a numeric priority (01 before 10).

The OS actually calls all Kills first, then all the Starts.

What each actually does is it calls the linked script files with "stop" and "start" as the first argument respectfully. Pretty straight forward. And if I'm reading correctly, system shutdown will be the opposite (previously killed apps get started, and vice versa).

So technically, changing this involves manipulating the symlinks in the folder. Rather that battle with that tediousness, there's an application "/sbin/chkconfig" that can be used to simplify the task.

chkconfig --list

gives you a printout of what I'm guessing is a compare between the contents of "init.d" and the "rc5.d" and related folders. Use:

chkconfig --add ServiceName

to create a symlink for a service, and:

chkconfig --del ServiceName

to remove a symlink for a service.

Next, the application "/sbin/service" can be used to say what current services are running.

service --status-all

gives you a similar list likely a comparison of the contents of "init.d".


Long ass article later (awesome article I must say, I've learned a crap ton), it seems the secret to making Linux boot parallel is none other than GNU MAKE!!! ZOMG!

As I've discovered from a coding standpoint, by creating proper dependaces, I can run gnu make with the -j parameter. -j followed by a number forks that number of threads, and runs the build process concurrently (where dependaces allow). Where there's a prerequisite, it waits.

GNU Make. Mmmmm. As if I wasn't intrigued by Linux before. :D

Current Aspire One grub.conf

I've seen some slightly different grub config's on the various AA1 forums. So here's mine.
default=0
timeout=0
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu

title Linpus Linux RCD
rootnoverify (hd0,0)
kernel /boot/bzImage ro root=LABEL=linpus vga=0x311 splash=silent loglevel=1 console=tty1 quiet elevator=noop
initrd /boot/initrd-splash.img
(everything below title should be tab indented)

A brief analysis:
rootnoverify sets the root of all further mentioned directories. (hd0,0) should be obvious. It's described in full on the splashimage line up top.
kernel sets the kernel image, the file /boot/bzImage. Everything thereafter are arguments to the kernel.
initrd sets the initial ram disk. Not sure entirely what that means, but that sounds remarkably like an "instant on" sort of feature. Unsure.

elevator=noop is the SSD fix found on the various AA1 forums.

What I was adding to "try" and get bootchart working was a "init=/sbin/bootchartd" string to the kernel arguments. That part doesn't seem to work. More digging...

Speeding up the boot process... maybe

Inspired by this:

http://lwn.net/Articles/299483/

I want to take a look at my bootup, and see what I can cut/gut/move. Cool.

But I should say, I'm not having much luck yet. ;)

I yum installed bootchart. I.e.

yum install bootchart

Modified my "/boot/grub/grub.conf" file adding "init=/sbin/bootchartd" to my kernel line. And if I understood the instructions correctly, that should have done it.

However, I've looked around the system ("/var/log/bootchart.tgz", "/tmp/bootchart*"), and I'm not generating anything yet.

I suppose I did copy my old grub.conf to grub.conf.bak... I hope there's not some clever feature in Grub that would use that one instead.

Oh well. I guess I'll come back to this another day.

Charge Time, take 1

Yet another casual observation. I drained myself to something less than half battery yesterday. I plugged it in this morning. Somewhere between 1 -> 1.5 hours later, it's charged. I could have probably pulled it sooner for a 90%'ish charge, but meh.

On the subject of fast battery charge.

http://www.engadget.com/2008/10/05/toshibas-super-charge-ion-battery-gets-90-full-in-10-minutes/

Unrelated, but cool.

Sunday, October 12, 2008

Some further software tests

Ok, so I did some more tests.

Renoise is music tracking software. It's cross platform. The only down side of Renoise is it only supports a minimum resolution of about 700 pixels tall. That aside, I've been meaning to try the software out.

It does run, and can almost play the demo songs. Two of them play almost flawlessly with CPU usage check disabled. Just a few skips.

So by that, you can probably do well with it if you kept the FX to a minimum. You'll probably want to enable a larger virtual desktop while running, so you can scroll down.

Something to try later would be Aldrin (Buzz Tracker derivative).


Also, I decided to do some rough boot benchmarks. I have the "elevator=noop" optimization enabled, so I might be getting better performance.

My boot process goes like this.


0 Seconds - Push the Power Button

Between these, what appears to be the Acer BIOS pops up and goes away.

8 Seconds - Acer Logo gone, from on screen artifacts, assume to be running the grub bootloader now.

Another Acer logo with the "Aspire One" logo pops up quickly, and disappears.

14 Seconds - Cursor appears on a black screen.

The background loads, without icons.

21 Seconds - Icons are loaded and I can start an application.

At this point I can double click on an icon, and in the case of "Geany", it'll start in 2 seconds.

Waiting until the 54 Second mark, it'll be connected to my Wifi. It's possible I have another Wifi set as my primary, so I may be able to shave some time off this.

That's the startup process. Arguably, Linpus might be taking 13 seconds to boot up in to a usable state currently. I could be off, and it's actually taking 15 as promised.

These numbers are me with a stopwatch looking at the screen, tapping both the power and start button at the same time. I can't be 100% when the BIOS or grub starts and ends, but compared to my desktop that boots in like 3 minutes, this is insane.

Early Critique of Netbook GMA Video

This isn't a review. I've really only barely used the system for a 3 hour (distraction heavy) work session. But something I've observed.

Currently, I run the game on the system windowed. A 480x320 popup that I can click in all I like. Fullscreen may improve these findings, but I'm not sure yet. Not a priority ... yet.

Currently my game runs well above 60fps. I'm extremely light on overdraw, perhaps 3x a 480x320 screen max. But the questionable slowdown is capture. Right now, when I perform a full screen capture to texture (OpenGL), the game freezes for roughly half a second. Compared to the iPhone where I maybe lose a frame.

This isn't a big issue per se, just an observation. The Aspire One does ship with some out of date Intel drivers. Doing whatever 'nix kung fu that's required to install drivers may fix this. Not to mention, running full screen may fix this too.

Still, I wanted to note this observation.


Anyways, I'm not sure how much more use I'll get out of the system this week. My current TODO list is mostly art and sound creation. I know there's still bugs hidden inside, but I might be a while before I get back to this.

As a first impression review, I'd say I'm happy with the system. I have a Canadian model, so my left shift key is tinier, but I'm surprisingly used to it already. Compile time isn't too bad. It's powerful enough for me to work on. But there's still work to be done.

Because it's Linux, I'm optimistic that I'll be able to do some unheard tweaks (to Windows users). Right now the boot time is really fast. Probably 15-20 seconds, but with all this comotion of the 5 second 'nix boot, I might start exploring what I can do with a stock Linpus.

What I can get out of a stock machine is important to me. I'm not the most Linux savvy, even though I do have the odd 'nix box around the house. I want to trust that the OEM's did *something* right to make a stock system worth using. The current boot time is certainly a sign of that (unlike talked about Ubuntu boot times of 45+ seconds).

Anyways, back to the grind.

Working at Grandma's

So I got the chance to actually work on the system. Thanksgiving dinner (lunch) at Grandma's.

I configured Geany to be relatively bare bones. As mentioned, F11 toggles fullscreen, and I set up F12 to toggle the bar at the bottom (i.e. a Terminal). I really wish there was a way to have Geany set the focus to the Terminal, but oh well.

One of the first things I had to do this morning was introduce some 'nix style timer sync code. Fortunately for me, I'd already written some for the iPhone build, so it was a matter of copying and pasting from my Objective C mess.

Using the track pad as a mouse isn't that bad. I'm actually more used to the joystick like nubs, but this is usable. An related note, it seems the touch message on a touch pad (not a drag, a touch and release) sends a short burst of a mouse click/release message, a quarter of a second or slightly longer. Well, I found that interesting. ;)

I actually fixed a significant bug at Grandma's house, so when I got home I had to commit my change. I almost never use the command line svn to checkout and commit stuff, so I had to re-learn that.

svn ci -m "Message"

Message field is required. Techincally a good thing, but I have to admit a part of me wanted to "QWERTYUIOP" those commits. ;)

Being "sort of" on the road is one of those situations I'd like to have GIT, but lazy 'ol me enjoys the comfort of explorer integrated version control (TortoiseSVN, and whatever that Mac one I use is called).

I've since fixed a couple more little bugs on the machine, before putting it to rest. I didn't take exact calculations yet, but I might have actually got 3 hours (with some to spare) out of the Aspire One. This was with WIFI off, screen brightness jacked down, with the most intensive stuff being the odd compiling burst, and running my game (which I'm speed limiting 'cause it runs too fast).

I want to talk a little about a brief analysis of the video hardware, but I'll do than in another post.

So far so good

Well, everything seems to be going smoothly now. I've configured Geany well. I'm currently using the F11 key to toggle fullscreen, and the F12 key to toggle Terminal on/off. Pretty slick if I do say so myself.

I checked the game code out of the repository, and it's pretty much good to go as is. I already went through the effort of tweaking my makefile to work with my brother's Aspire One, so that part was a cinch. The tough part was remembering all the libraries (and that the SDL headers and Library were different packages).

It appears the OpenGL drivers on the Aspire One don't sync by default. Which is fine, as it means I can drop in the 'nix style timer code I use on the iPhone build to correct the timings.


I've also applied the "elevator=noop" performance fix to my system. See the section "Improve read and write performance" here for details.

http://jorge.ulver.no/2008/08/06/acer-aspire-one-tips-and-tricks/

I wasn't paying that much attention, but I gotta say my boot time is extremely quick.

My stock Aspire one didn't exactly match the kernel line. My version didn't say "nolapic_timer". I don't know if that's important or not, but it still runs well.


Anyways, that's it for tonight. She's charged up and ready for Thanksgiving dinner.

Saturday, October 11, 2008

Adding to Desktop

Adding stuff to the desktop was trickier than I'd hoped.

There's a file here:

/home/user/.config/xfce4/desktop/group-app.xml

It's the only file in the folder. This is an XML file that describes the desktop.

sudo mousepad /home/user/.config/xfce4/desktop/group-app.xml

It's not too difficult to understand, just the last guy that edited this stock one was sloppy.

In the work section, there's actually an application horizontally on the same line as another one. That was a annoying to discover.

Applications links can be found here:

/usr/share/applications/

Browsing there with the file browser is fine, except the names you see here aren't the same names as they are on disk.

fedory-geany.desktop -> Geany
xchat.desktop -> IRC
Terminal.desktop -> Terminal

So anyways, that's now done. I have usable icons on my desktop.

The next problem is the Geany application. For whatever reason, it used the generic name which was "Integrated Development Environment", or something along those lines. So I opened up the fedora-geany.desktop file and changed the generic name to Geany.

*Now* we have a good desktop.

Intalling Console Applications

So from my stock Aspire One, I've run and installed the following packages.

yum install gcc (GCC compiler)
yum install gcc-c++ (C++ support for GCC)
yum install svn (Subversion version control)
yum install make (GNU Make)
yum install mesa-libGL-devel (OpenGL "gl.h" development library)
yum install mesa-libGLU-devel (OpenGL "glu.h" utility library)

All these files came from the Fedora Core 8 repository.

GCC is version 4.1.2 (2007-09-25)
SVN is version 1.4.4
MAKE is version 3.81

SDL I'd prefer to download myself, rather than rely on whatever lives in the Fedora 8 repository. So I did.

http://www.libsdl.org

SDL version 1.2.13

SDL-1.2.13-1.i386.rpm (The shared libraries)
SDL-devel-1.2.13-1.i386.rpm (The header files for development)
SDL_mixer-devel-1.2.8-1.i386.rpm (The header files for audio playback)

SDL_mixer 1.2.8 (or a better SVN version) is already installed on the Aspire One, so you only need the headers.

Next I was going to install Geany, but the Fedora Core 8 repository only has version 0.11. The current version is up to version 0.14. So I googled "Geany RPM 0.14" and found a neat site:

http://rpm.pbone.net

An RPM search engine essentially.

Some kung fu later, the file I wanted was "geany-0.14-1.fc8.i386.rpm". Technically, I might be able to use the i586 versions, but I haven't tried yet.

So there we have it. Everything is installed. Now... what's next?

It has begun... early

Well, it seems I had to start the Aspire fun early. Sunday my family is getting together for (Canadian) Thanksgiving. My 14 days exchange with Future Shop ends Monday, which happens to be the holiday. Ouch. So I need to find out if this works ASAP.

So, I've opened. The box says it's white, however it's actually blue. Oh well.

After setting up my wireless, I've started to install tools.

ALT+F2 "Terminal".

Next post I'll start listing what I've installed.

An alternative text editor for UltraEdit fans

A friend of mine introduced me to Geany.

http://www.geany.org

It's a cross platform GTK based text editor. It features a very nice configurable UI, tabs, line numbers, syntax highlighting, pluginable, scriptable, and numerous other features that about cover the gamut of UltraEdit users that don't use the FTP stuff.

Geany also features a column mode... albeit, a work in progress one. On the Windows build, you hold down the ALT key and make a selection with the mouse, or the SHIFT and ALT key and make a selection with the keyboard. Any typing whilst you have a giant cursor works like UltraEdit's giant cursor. Also, column mode copy+paste works as expected. Currently there is no way to generate/insert numeric sequences as columns.

As for stuff it doesn't do, it doesn't have a ruler. Not really a big deal, but it's worth noting what you're losing. What it does have is the line. Normally the line is set at 80 columns, but I set mine to 100. With that, I'm sure I and most people can make due without the ruler.

I also found the font support to be light on a feature. Implicit italic and bold face generation. What that means, is if you use a font that lacks bold or italics characters, it wont do the obvious fattening or turning tricks that Windows does. Most normal fonts this isn't a problem, but I use a font called Anonymous that only has Normal and Italics.

http://www.ms-studio.com/FontSales/anonymous.html

An alternative font suggestion would be Envy Code R.

http://damieng.com/blog/2008/05/26/envy-code-r-preview-7-coding-font-released

This works well, but I think I'd prefer a stubbier font (i.e. less tall) so to fit more text on screen.

To change color preferences (and font face preferences like Bold or Italics), you need to edit the language color scheme directly. Not a big deal, but those users used to UltraEdit's will have to get a little dirty to get things tuned.

That's it really. No ruler, and 'different' font support. I think I'll still try the Wine+UltraEdit thang, but this looks to be a good compromise. I suppose also being an open source project, anyone could make changes (i.e. fixes) to it. At least when I get to the point of fire breathing at UE, I'm at least aware of an open source option I like.

Oh! If you're like me, this'll make your jaw drop.



Integrated terminal! (Non Windows only)

Friday, October 3, 2008

Dev Library and Nix Niceties

One last little brief. This time, a little bit on how I work.

First of all, I use GCC on every platform. Windows (via MinGW, and sometimes Cygwin), OS X (XCode is GCC hidden behind an IDE), and Linux.

As I work, I always have my text editor open (UltraEdit on the PC), and a Shell/Terminal Window open. For the most part, all I'm typing in the Shell/Terminal is "make run" (or up, enter), but I enjoy having the freedom to do wackier things here and there.

With my latest project, I've separated my content building process from my game building makefile. By that, the file "makefile" actually includes the file pc_makefile. In the future I could cleverly call all 3 of my makefiles from "makefile" (art_makefile, embed_makefile, pc_makefile/nix_makefile). I'd like to eventually add dependacy generation to my UI embedding site, so that may sneak in then.

Version control I use TortoiseSVN. It integrates right in to Windows explorer (and most of the Open/Save Dialogs of Windows Apps). So from a folder, I can merely right click and SVN Update or SVN Commit my changes. I do this quite often from my "open file" dialog.

My current target device is the iPhone, which is an OpenGL ES based device. GL ES is for the most part compatible with desktop OpenGL (i.e. SDL+GL), but there are a couple functions that need to be #ifdef'd (so far just 1 in my code).

But rather than using straight up GL, I'm using it through a custom general purpose graphics wrapper library. I've worked with a number of non GL API's in the past, so extra effort has gone in to making it's design suitable for wrapping other API's like DirectX or GX.

Each platform requires slightly different startup code, or libraries to link. The iPhone requries some Objective C wackyness. The PC build's code is verbatum the same the the Linux one, but I have a few different libraries to link. But the body of the game is exactly the same for everything. Some extra API calls were added to my wrapper library to emulate equal behaviors on both. Though a PC can't technically multi-touch... or at least I'm not doing it (mouse party, WinTab).

I didn't have much time to benchmark the Aspire One, but one thing I do know is it ran the PC port of my game really fast. Where on the iPhone, I'm nearly 60 fps. The tests I did on my brothers Aspire One ran at least double that. So as a proxy platform for iPhone development, it works.

That's it for now. Unless I get more crazy inspiration, I wont be back until next weekend, when I finally unbox it and start doing stuff.

Software Thoughts

I've actually done some experimenting with an Aspire One. My brother picked one up a little bit more than a month ago, and I got to toy with it. If memory serves, such exciting things I got to "yum install ..." include:
  • GCC, G++
  • MESA GL Headers
  • GNU Make
  • Subversion
  • SDL (Actually, I downloaded the RPM and installed this one)
I have Ubuntu installed on another machine, so I'm actually more used to using "apt-get ..." to install things. But the Fedora based Linpus isn't too bad... at least once I found out about "yum install". ;)

The reason I mention the above is the Aspire one ships relatively stock, with just the basic functionality to install packages, and no pre-installed compiler. The GL headers I remember being the tricky one to guess the package name for. I'm going to have to look all the exact packages up again, but I wanted to create this reminder list.

Ok, next up some wishlist stuffs.

As I mentioned, I usually work on Windows. My tools of choice include MinGW (GCC/G++), and UltraEdit as my text editor/IDE. The compiler part is a no brainer, but the editor is potentially some work.

A few weeks back I did some searching, to try and find some similar text editor. I have half a dozen names on a stickynote to look in to, but I discovered a possible solution the other day.

UltraEdit in Wine.

According to the Wine website, it's reasonabily compatible with UltraEdit. There's a known crash with one of internet related features, but I don't use those. Really, what I'm after is the IDE part with all my familiar shortcut keys, and column mode.

Man oh man, column mode. There are several 'nix text editors I found that claim to have a Column mode, but the one thing UltraEdit does right that no other does is it's Column mode. One aspect is what I like to call the "Fat Cursor". This lets you select several lines at once, and write on them simultaneously. A must have. Another nicety is number insertion. Create a fat cursor and click a button to insert numbers in a range X to Y, with increments you can set (even negative). Plus the general alignment of how you navigate in column mode changes, for the better. Hehe, yeah, I'm picky, but I'd love to have this.

Word has it that IDM is working on a cross platform UltraEdit. I toyed with the idea of picking an open source editor and reimplementing column mode as I like it, but this Wine solution sounds easier.

Anyways, enough of that column mode rant. In summary, I *really* like it. It's why I still use UltraEdit today.

Aspire One's already ship with Open Office installed. I've been using it as my primary document editor for a number of years, so that works out well for me.

A *fun* thing I also wanted was a Tracker. Renoise the music tracker, runs on Linux now. However, it's requires a minimum resolution about 100 pixels taller than the Aspire One's 1024x600 screen. I put a wishlist request in for a "lite mode" checkbox that removes some unneccisary features for smaller screens, but I'm not holding my breath.

The bulk of the music stuff I do in Ableton Live, with a number of fancy ass VST's like Kontakt/Komplete and Play. But that's some pretty heavy lifting. I figure a tracker might be a nice lightweight way to scribble down song ideas.

If nothing comes of the above, I may try Modplug on Wine, or use a virtual desktop.

Also, I'm a DVORAK keyboard user. From my looking, the Aspire One doesn't include a standard DVORAK layout, so I'll have to learn how to make one. :)

That about covers it.

I don't exepct to do any real image editing on the system. My image editor of choice is Paint Shop Pro, but Wine has poor compatibility with versions above 4. I may install GIMP for simple stuff like image arrangement and resizing, but something about GIMP always turns me off when I use it.

I also tend to sometimes work in ToonBoom, Flash, or Sketchbook Pro, which really aren't suitable for that machine. So I'll probably just accept that content creation will happen on the Workstation, or on the Tablet PC.

Oh right, I have 4 main computers I deal with.

My "workstation" which is a Quad Core desktop with a scanner, tablet, midi keyboard and drums hooked up, plus all my audio software and VST's. My "server" which is a Dual Core desktop that hosts my SVN repository and other files. The "Intel Mac Mini" which is a Dual Core Mac, running the latest OS X and iPhone SDK. And a "Tablet PC" which is a single core Celeryon (heh) that runs my art apps.

I have several more PC's including a Media Center, 3 older laptops (including a Mac), and a PPC Mac Mini, but they're not really important to my development process.

So, I think that covers the wild software configuration ideas I have floating around my head, and then some. I'm not sure what the next post will be. Cracking open the system, or more random tidbits I have the need to splurge. We'll see.

Surgery Next Week... Computer Surgery


While I have now created this blog, I wont be ready to start this project until next week (weekend?).

As mentioned, I make games, and I'm finishing one up right now. My gift to myself for finishing this project is an Acer Aspire One. I picked one up at Future Shop for a mere $299. While I already picked the machine up, I wont let myself open and use it until I ship this game. Oh the motivation! :)

I live a couple blocks away from the computer store "Mostly Digital", so I've already ordered and picked up an extra 1GB stick of RAM for $19. I want to give the machine a good burn in first, before cracking it open.

The Aspire One I picked up on Tuesday September 30th. Future Shop has a 14 day exchange/price match policy on computers. Well, given that everybody in US and Canada sell's Aspire One's for $329, and it's back up to that at Future Shop, I think the price match part wont be an issue. ;)

So, within my 14 day grace, I have until Monday October 13th (Canadian Thanksgiving!) to make sure it works correctly... or else I have to deal with Acer directly. I'm sure they're fine, but that means days instead of a 15 minute drive.

So that'll do for this hardware post. Next a quick software wishlist.

About A1 Dev

So here's an extra little blog I created to share the super technical and super nuance details of a little project of mine. Turning a stock 8GB SSD Acer Aspire One running Linpus Linux in to an ideal lightweight coding machine.

This blog will collect various technical details of things I've done to the machine, mostly software related. I'm reasonably familiar with Linux, but the bulk of my development has traditionally been on a PC (and ocassionally a Mac).

Actual development topics will be covered at my blog on TooNormal.com.

About myself. I've been developing games commercially for nearly 8 years now. Currently, I'm self employed, developing original games for iPhone. Previously I've worked on games for every Gameboy system, the DS, mobile phones, and the Playstation. Some other platforms too, but those are the ones I have released games on.