Archive for the 'Systems' Category

Neo Geo cart hacking is still alive and well

October 16th, 2010
Spencer Nielsen Follow snielsen42 on Twitter

A couple of years ago I wrote an article called Neo Geo Cart Conversions which detailed a cool hobby project that involved turning a Neo Geo game called Metal Slug from an MVS (Arcade) version cartridge into an AES (Home) version.  The primary reason for performing the conversion was to save the thousands of dollars it would take get a hold of an authentic AES cartridge and experience the original game at home legally (plus, doing the actual conversion was tons of fun!).  A few years later I decided that it would also be fun to do a write up of my experiences and share my findings for others to enjoy.  Over the years people have occasionally emailed me about the article with compliments and questions about the article.  It has also been especially satisfying to hear about people who have successfully performed their own Metal Slug conversions by following my article.  So far there have been four people that I know of who have done so, the latest of which is Akira Van who sends this image of his finished product:

It just goes to show that despite the end of officially produced Neo Geo carts, the wide and cheap availability of Neo Geo games in virtual console/compilation form and essentially the entire video gaming world moving on that there is still a vibrant and thriving community of enthusiasts and hackers dedicated to this great platform.

Language Aid is on MacZOT!

December 2nd, 2008
Spencer Nielsen Follow snielsen42 on Twitter

For today only you can purchase Language Aid for half price (US$10) through a promotion at MacZOT! To take advantage of the promotion pricing, buy your copy of Language Aid through MacZOT and once the promotion is over you will receive an email with an application attached to it that will configure your computer for Language Aid registration. All you have to do is run the application and then click the “Register” button in the Language Aid preference pane. It will be fun to see how the promotion turns out.

iTunes 8.0 supports the Accessibility API!

September 17th, 2008
Spencer Nielsen Follow snielsen42 on Twitter

That means that Language Aid can now grab text from it and perform lookups. It has been a long time coming and it a significant enough change that Steve mentioned it in his keynote at the music event. This is somewhat less significant these days because there are two other ways independent from the Accessibility API that Language Aid has to grab text from applications. However, the fact that iTunes was a first party app made it quite a big omission. To its credit I suspect that this was due to the entire interface being implemented independently of any OS frameworks to allow for easier porting to Windows and higher consistency in behavior between the app on the two platforms.

There are a few major apps that still do not fully support Apple’s Accessibility API fully (Office, Firefox, I am looking at you…) but every little step helps.

Language Aid 1.1.4 is out!

August 18th, 2008
Spencer Nielsen Follow snielsen42 on Twitter

Normal LAID window

The changes included in this round are the usual bug fixes for stability/performance and the like. There is also one major change involving the results window. The results windows are now normal Mac OS X windows with typical window behavior instead of the previous overlay window style. This allows you to put other windows in-front of the results windows instead of them always floating on top of everything. With that there is also the change that you can use command-W to close the results windows in addition to the other methods of dismissal.

Almost all of the feature or behavior additions/changes that have gone in to Language Aid updates have originated from user feedback. I am very grateful to my users for their suggestions and requests so that Language Aid can continue to grow and improve. Thanks and keep it coming!

iPhone SDK, initial impressions

March 8th, 2008
Spencer Nielsen Follow snielsen42 on Twitter

I have spent quite a few hours with the iPhone SDK now and must say that I am quite impressed. The experience of bringing some of my code written for Mac OS X over to the iPhone with no changes and having it just work is quite a pleasant experience. I REALLY enjoy being able to use Objective-C 2.0 synthsized properties and fast enumerators in my code (garbage collection would have been nice but hey, this is a mobile device). I maintain Tiger support for Language Aid and develop purely for Leopard in Razor and it is kind of an interesting mix of both to code for the iPhone. I am really excited to to flesh out a game I have been thinking of for the iPhone that would take advantage of a lot of its unique features.

nativearch

So the posted requirements say that this beta version of the SDK requires an Intel Mac but so far I have not run in to much trouble developing with it on my G5 (the only Intel mac in the house right now is a Core Solo mini which is already pulling duty as a source server, build server, DVR and media center). Inspecting the simulator and the xcode plugins show that they are all universal binaries. The only gotcha that I ran into is that I had to make sure that in my build settings that the “Architectures” setting is set to “Native Architecture of Build Machine” so that the binaries produced are ppc so that the simulator (I have heard a surprising number of people errantly referring to it as an emulator) can load and run them. For some reason this reset itself to i386 one time and I had to track it down to that setting.

Other small quirks that may or may not be related to me running on ppc are that it seems like every 10th click event or so on the simulator window seems to fall through and hit the window behind it. Also, for some reason the simulator is also not responding to the “Rotate” commands whereas it would correctly respond on my Intel mini. Of the example code on the developer website there are a lot of projects that will not run in the simulator due to a pragma that intentionally errors itself out if built targeting the simulator:

#if TARGET_ASPEN_SIMULATOR
#error This application cannot be run in the Aspen Simulator. Please change Active SDK to "Device" and ensure a device is connected.
#endif

The common theme of which projects will and will not run seemed to be that they all used Open GL ES. I eventually stopped to read the description before downloading the example which explicitly states as much:
Simply build the sample using Xcode and run it on the device (OpenGL ES is not supported in the simulator).

It is inevitable that I will plunk down the $99 to be able to perform remote debugging/use Instruments/use Shark with a real iPhone. However, for now while I am busy bringing up the core game engine and getting used to the new platform, the simulator is doing just fine.

Of NSServices and lsregister

March 5th, 2008
Spencer Nielsen Follow snielsen42 on Twitter

Services

Launch Services is one of those things that does a lot of magic for Mac OS X but is not really visible on the surface and is somewhat vague and ethereal. Launch Services is responsible among other things, for associating file types with applications, associating icons, associating system services and many other wonderful things that make your experience just work. Fortunately there is a tool to poke at the Launch Services database buried in the system at:

/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister

Most notably the -dump command basically outputs the database so that you can see exactly why a certain file type wants to be opened by which app and why certain files get their icons and association hijacked by some other random new app. The -f command will let you update the database with any new changes you have made to an application or bundle.

Some of things managed by this database are the system services that show up in the “Services” option under the application menu (these are outlined in the NSServices array of a bundle’s Info.plist). Language Aid provides one of these as an alternative to the lookup trigger and contextual menu as a way to lookup text. Unfortunately, it appears that just tickling the database with the new information about which options you want available in the menu (dictated by which plugins you have selected), is not enough to rebuild the Services menu. A reboot seems to do the trick, but it would really be nice if I could figure out what causes that menu to rebuild.

Entries (RSS) and Comments (RSS).