Photo
So I finally figured out how to get Grim Fandango to work on my Windows 7 64-bit machine.  It took a bit of work, but it’s worth it.  Here’s what I did (You need a windows xp disc/ISO and the Grim Fandango CDs):

1 - Install Virtualbox
2 - Set up a Windows XP guest with sound (I just gave mine 10 GB of space).  If you haven’t used Virtualbox before, don’t worry.  It’s pretty straight forward.  Just click “New” and follow the instructions.  Any extra stuff like sound is in the “Settings” area.
3 - (This one is optional but very helpful) With the Guest Windows XP machine running, click on Devices -> “Install Guest Additions” so you have better mouse integration etc.
4 - After windows is installed, do any windows updates you might need on it.
5 - I have a USB Xbox 360 controller, so I had to enable usb (I enabled usb 2.0 which requires the Oracle VM VirtualBox Extension Pack) in the Virtualbox settings and add a filter for the device.  Mine showed up as “Controller” in the list.  Also, I had some issues at first but I think restarting the virtual machine/virtualbox fixed them.
6 - Use Grim Fandango Setup to install the game
7 - With the Guest Windows XP machine running, go to Machine -> Switch to Scale Mode
8 - Double click the Grim Fandango shortcut.  Make sure “Run Grim From Hard Drive” is checked in the options before you launch the game.
9 - Maximize the window or go to full screen.
10 - Run Grim Fandango in full screen mode (On my computer, if I resize the virtualbox window it makes everything go black, so make sure you’re happy with the screen size when you start the game).

The reason I went through all this trouble was because Grim Fandango freezes Windows 7 64-bit completely (I had to turn off my pc - pretty frustrating).  It also has some weird sound issues that were extremely annoying.  This method seems to fix all that, and when it’s all set up it runs really nice. 
Enjoy playing this amazing game!

So I finally figured out how to get Grim Fandango to work on my Windows 7 64-bit machine.  It took a bit of work, but it’s worth it.  Here’s what I did (You need a windows xp disc/ISO and the Grim Fandango CDs):

1 - Install Virtualbox

2 - Set up a Windows XP guest with sound (I just gave mine 10 GB of space).  If you haven’t used Virtualbox before, don’t worry.  It’s pretty straight forward.  Just click “New” and follow the instructions.  Any extra stuff like sound is in the “Settings” area.

3 - (This one is optional but very helpful) With the Guest Windows XP machine running, click on Devices -> “Install Guest Additions” so you have better mouse integration etc.

4 - After windows is installed, do any windows updates you might need on it.

5 - I have a USB Xbox 360 controller, so I had to enable usb (I enabled usb 2.0 which requires the Oracle VM VirtualBox Extension Pack) in the Virtualbox settings and add a filter for the device.  Mine showed up as “Controller” in the list.  Also, I had some issues at first but I think restarting the virtual machine/virtualbox fixed them.

6 - Use Grim Fandango Setup to install the game

7 - With the Guest Windows XP machine running, go to Machine -> Switch to Scale Mode

8 - Double click the Grim Fandango shortcut.  Make sure “Run Grim From Hard Drive” is checked in the options before you launch the game.

9 - Maximize the window or go to full screen.

10 - Run Grim Fandango in full screen mode (On my computer, if I resize the virtualbox window it makes everything go black, so make sure you’re happy with the screen size when you start the game).

The reason I went through all this trouble was because Grim Fandango freezes Windows 7 64-bit completely (I had to turn off my pc - pretty frustrating).  It also has some weird sound issues that were extremely annoying.  This method seems to fix all that, and when it’s all set up it runs really nice. 

Enjoy playing this amazing game!

Text

Abby

Made this for my wife.  Description on deviantART:

For my wife. :)

This is our cat Abby. She absolutely loves this weird rubber ball we got her. Nine times out of ten, if we can’t find it anywhere, it’s under the couch. When we fish the ball out from under there, Abby FLIPS out in excitement. Seriously, I’ve never seen a cat do this. It’s like when a dog starts barking in excitement when you are going to take it for a walk, except replace those barks with meows, and you’ve got Abby. On top of that, she actually plays fetch with the thing. You throw it, and she brings it right back and drops it by your feet. This further proves our theory that Abby is actually a dog in disguise.

Created with an Inkscape .48 prerelease build.

(Click the thumbnail to see a bigger version)

Photoset

    Sweet!  A new DSI: Miami release (a big one, too)!  I spent some time on this one…  So what’s new in 1.5?  Well, as you can see in the screenshots, there is an online database now.  Any user can submit their own quotes, and the community will vote on them.  Try it out!

    Honestly, I don’t know why I’m spending so much time on what is essentially a useless app.  :P  More than anything, I’m doing this for educational reasons.  Also, I have made it my goal to polish each of my creations as much as possible.  No matter what my apps do, I at least want them to feel solid.  

    Send any feedback to mavispufordapps  at  gmail dot com.  I’d love to hear from you.

    As always, search for “dsi” in the Android Market or scan this QR code: 

Text

Android Widget Orientation Changes

I just thought I would talk a bit about how I solved an annoying problem with my DSI: Miami widget since I had a really hard time finding a solution online. The problem would show up every time the home screen would change orientations (from portrait to landscape and vice versa).  If there was an orientation change, the widget would freeze and the button/text box wouldn’t respond anymore.  This drove me nuts!  I finally solve the stupid problem today.  This is what was happening:

-I have an IntentService class called UpdateService which basically throws a PendingIntent out there to listen for the button press.  Here’s the code that is in it’s buildUpdate method:

        private RemoteViews buildUpdate(Context context) {
            RemoteViews updateViews = new RemoteViews(context.getPackageName(), R.layout.widget_message);

            Intent i = new Intent(this, DSIMiamiWidget.class);
            i.setAction(REFRESH_QUOTE);
            PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
            updateViews.setOnClickPendingIntent(R.id.WidgetButton, pi);
                   
            return (updateViews);
        }

-This code was fine, actually.  It worked great when the home screen stayed in the orientation in which the widget was born.

-The problem was when the button was pressed, it called a changeText() method which updated the text box, requiring me to do a new RemoteViews update. Here’s the gist of the code:

     public void changeText(Context context)
     {
        RemoteViews updateViews = new RemoteViews(context.getPackageName(), R.layout.widget_message);
//         int textSize;
        
         if (!randomQuotes.isEmpty())
             updateViews.setTextViewText(R.id.WidgetTextView, randomQuotes.get(0));
         else
         {
             if (quotes == null)
                 this.quotes = context.getResources().getStringArray(R.array.quotes);
             convertArrayToList();
             randomizeQuotes();
             updateViews.setTextViewText(R.id.WidgetTextView, randomQuotes.get(0));
         }
        
         randomQuotes.remove(0);
        
        ComponentName thisWidget = new ComponentName(context, DSIMiamiWidget.class);
        AppWidgetManager manager = AppWidgetManager.getInstance(context);
        manager.updateAppWidget(thisWidget, updateViews);
     }

-Well, I didn’t realize that I had to REDO all the PendingIntent stuff after doing that, too.  So, I threw this in right before “ComponentName thisWidget = new ComponentName…” at the bottom:

        Intent i = new Intent(context, this.getClass());
        i.setAction(REFRESH_QUOTE);
        PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
        updateViews.setOnClickPendingIntent(R.id.WidgetButton, pi);

TADAAAAAAAAAA.  That was a pain…

Text

This is totally soccer.