Wednesday, May 28, 2008

iFrodo - The keyboard is shaping up

I have the basic framework for rendering any virtual keyboard (in a resolution independent manner) almost completed. The keyboard supports touch events; however, I now have to complete the shift-key support and a few other enhancements for switching layouts (to numbers, etc).

For nostalgia, the colors are pulled from numerous pictures of Commodore 64 keyboards:


iPhone keyboard for emulators
Update: I will be including full support for all the Commodore 64 keys (C64 key, del, clr, etc)

Sunday, May 25, 2008

iControlPad

I'll definitely purchase one of these when they are released. In addition, I'll be particularly interested in adding support for the device to iFrodo, using their provided SDK. assuming I can access the unit via the Apple SDK

Thursday, May 22, 2008

iFrodo - 'Touch-Stick' demonstration

Attached is a short video to demonstrate the joystick (touch-stick) emulation in action using the iPhone Simulator and Impossible Mission by Epyx. Hopefully, once I receive my developer certificate, the experience will be functional on the device. I do plan to support landscape mode, along with switching the position of the fire button area.

Saturday, May 17, 2008

SQLite management tool

For those using SQLite (particularly relevant given it's the default database engine for the iPhone / iPod Touch), here is a great tool for visually managing you database. What is most impressive is the tool is a Firefox add-on, compatible with versions 2.0 - 3.0.*.

Monday, May 12, 2008

iFrodo - Let there be sound

Watch and listen.
Be aware that the video and audio are greatly compressed on it's journey to YouTube.  It sounds significantly better on the simulator.

Sunday, May 11, 2008

iFrodo - progress

Where are we today?

  • Graphics: Done
    • I am using the scan-line mode for the emulator, but I may change to the single-cycle mode after some performance testing. So far it screams on the simulator. I could deploy both versions of the emulator, but that would require considerable work. Hopefully this runs with similar performance characteristics as the real device. I won't know until Apple accepts my application...

  • User Experience : None
    • Portrait: Partial
      • In this mode, the full keyboard will be available, as well as playing games

    • Landscape: None
      • This mode will be primarily for playing games, with the availability of the joystick and probably the Fn keys. Switching to portrait will be necessary to perform more work with the keyboard.

  • Audio : Researching
    • I've found that the Audio Queue Services look to be exactly what I need. Frodo was conveniently built to support sound 'drivers', so shouldn't be too much work here.

  • Input, Keyboard : Planning
    • What I have to day is a 'line editor', using the built-in keyboard (as you can see in the video clip). I type a line of text and 'send' it to the emulator. This is just a debugging tool and will go away before the release.

    • The iPhone SDK and associated frameworks do not allow the built-in keyboard to be repurposed, so I'm going to have to roll my own. This is probably okay, as I'd like to make it generic enough to work with other emulators in the future - think Atari 800XL and Apple II.

  • Input, Joystick : Planning
    • Two options
      • Multi-Touch: I have some ideas for joystick support, which I'll document in a future post - it's going to take advantage of the multi-touch interface and the entire screen surface - 'Touch Stick'.

      • Accelerometer: Something similar to what was shown for the initial SDK release for the space shoot-em-up style game.

Show and Tell
Here is a short video showing 'Hello World' and running IK+ (International Karate +). As mentioned above, it uses the built in keyboard, in 'line mode', which is simply a debugging tool, until I build the UI. No sound either, but that is underway. I'll follow up with another video once sound is activated.

Note about the video recording: It was recorded at 15 frames/sec to limit the size up to youtube; however, the emulator runs at 30 fps without breaking a sweat.

Thursday, May 08, 2008

iFrodo - Success!

After getting over the Objective C and Cocoa learning hump, I have a running C64 on the iPhone simulator.
Next will be to create a UI to manage the user experience, such as
  • Save / Resume state
  • File browser for disk / tape images
    • Ability to 'auto launch' games
  • Virtual keyboard and joystick

First run of C64 in iPhone

Monday, May 05, 2008

iFrodo - porting C64 emulator to the iPhone / iPod Touch

As an Objective-C / Objective-C++ / XCode / iPhone development learning experience, I have began porting the Frodo C64 emulator to the mobile OS X platform. I chose Frodo, as I have experience with this code-base, and there is a certain satisfaction of seeing the READY prompt for the first time.

What will some of the challenges be?
Display
  • The iPhone screen is 320x480 pixels. The C64 had a 320x200 pixel display, so ideally the top of the screen will represent the C64's virtual display, without the need to scale.
Input
  • The C64 had a keyboard and games were typically played with a joystick. We have 280 pixels left to represent these devices. I'm not sure if I can display the iPhone's virtual keyboard, and it is unlikely I can reconfigure the keys. Therefore, I'm probably going to have to design my own virtual keyboard image.
  • For the joystick, I'll probably model something off the NES emulator, with a virtual D-Pad and fire button.
Where are we today?
I have reached my first milestone, which was to create an XCode project and compile the basic Frodo engine for the iPhone platform.

What is next?
An emulator typically virtualises numerous devices of the original hardware, so the first I will tackle is the display, as this provides the most immediate rewards. We need an in-memory buffer to write the output of the virtual display device, which finally is rendered to host screen. I experimented with the OpenGL ES API, but found that Core Graphics / CGImage will do the job just fine.

Last night I achieved my goal of writing to an in-memory buffer and rendering this to the iPhone screen. Next is to incorporate this test code into the Frodo engine, to get a C64 running. Screenshots will follow.

Sunday, May 04, 2008

SDL coming to iPhone / Touch

I've learnt that Google SoC is sponsoring a project to bring SDL to the iPhone / iPod Touch. Great news!