Sunday, July 12, 2015

Compiling (or Downloading) aseprite V1.1-dev on Mac OS

Hi folks,

lately I've found some time (hu?) and get back to my nerdy roots. So I decided to build some retro-style point-and-click adventure (lucas-style) for my (retina) kids. ;)

I found out that asperite seems to be a nice and open-source sprite editor and animator.

Building this one from the sources at is relatively easy (just read Doing the trick at a recent MacOS needs some extra-thinking.


You need a recent Xcode (I used Xcode 6.1.1). Get it from the Appstore. Additionally you need MacOSX10.4.Universal.pkg from folder "Packages" of Xcode 3.1.4 (you need a free developer account at Apple).

Install cmake. I prefer cmake from the homebrew distribution. If you got brew already installed, just type:

brew install cmake

Step-By-Step Guide

Install MacOSX10.4.Universal.pkg by holding down Ctrl while opening the file. It goes to "/SDKs". You can move it to wherever you like. I assume it's at "SDKs".

Clone github repo:

git clone --recursive

Create a build directory and make it the current directory:
cd aseprite
mkdir build
cd build
Then create the build files:
If everything went through just type:
make all
The build process takes some time. After it's finished you'll find a new directory "bin". So type
 cd bin
And here we go. If you need a fancy app-bundle you can get the trial of the commercial version at In the bundle replace "aseprite" in "Contents/MacOS" and the folder "data" at "Contents/Ressources".

If you like you may download my compiled app here.

Sunday, February 26, 2012

Compiling ScummVM for iOS (iPhone/iPad) with Xcode

It's a shame that there is no official release of the excellent ScummVM engine available at the AppStore. Although there is an official port of the ScummVM for Apple's iOS platform available for download, this makes only the ones with a jail brake happy.

I'm very happy with my un-jailbroken iPhone/iPad combination and have no plans for jailbraking. The main reason for this decision is, that I'm just too lazy for rejailbraking my devices after every OS update.

So for all non-jailbrakers the only chance to get ScummVM on you device is to build it yourself, sign it with an official developer certificate (only available from Apple) and sync it to your device manually.

There's a short explanation how to compile in the wiki.

Getting the source from ScummVM is no problem at all.

Just open the command line and enter
git clone scummvm
This gets you a fresh copy directly out of the developer branch. You'll find the Xcode project files at /dists/iphone. You can get the needed external libraries from here. Just extract them to /dists/iphone

Unfortunately the Xcode project is (intentionally) outdated and doesn't build.

All my efforts to get it up and running led to nowhere. Well, this is just my fault. Missing experience with Xcode, you know.

Fortunately someone else managed to build a working Xcode project. So here is how I got a fresh ScummVM build for my iOS devices:

Get the fork with the working Xcode project from github by entering:
git clone scummvm
Select the correct branch (this may vary) by entering:
git checkout remotes/origin/aspectRatio
Now open /dists/iphone/scummvm.xcodeproj and build (Cmd-B) the binary.

Attention! Get the result out of /tmp/scumm-dst. There should be a
Use Xcode Organizer (Shift-Cmd-2) to install to your device. Copy compatible games to the Documents directory with XCode Organizer or use iExplorer and experience ScummVM on your iOS device.

If you're too lazy to compile it yourself, download ScummVM 1.5git as an IPA here.

To install you need to resign it with a valid code signing certificate. You can easily resign the package with iModResign.

Sunday, August 7, 2011

Amiga 1200 Pimping Project

Recently I bought a used - well, a really used - Amiga 1200 and decided to pimp it a bit just to reminiscence my youth. My plan was as follows: Disassemble the machine, mod the housing for the fantastic HxC floppy emulator, varnish the housing and put a 68030 accelerator card in it.

Well, disassembling is not that difficult (keeping the screws together over some weeks is different from that!). Before the varnishing I drilled three holes directly under the slot of the floppy drive. This should become the "front panel" of the HxC emulator (two keys for up/down, the middle one for select).

After that I thought a while about the display of the emulator. Although it's not necessary to have it connected, because there is some sort of manager software available for the Amiga, I decided to do it "the right way".

So I "dremeled" a hole in the middle of the upper part of the top case and put a black display frame there to hide the roughness of the border due to my limited drilling experience! ;)

Now I had to mount the LCD from the backside of the top case so it fits nicely under the display frame. I glued there four screws with a nut on each for the right distance to the case. To my surprise it fits really good. ;)

Than I glued the display frame on the top case and took a break. It was too easy, wasn't it?

Now I had to find the right place for the floppy emulator. It's halve the length of a real floppy. First I tought about of replacing the internal drive of the Amiga, but than I decided not to do so because of nostalgic reasons. So I found a place directly above the video port. If you remove the electrical shield (what is necessary for many other extensions, too) there is plenty of room.

Although I thought I finished all the drilling work I found out that there must be some access to the SD card reader of the emulator. ;) So once again I turned on the Dremel and drilled a small slot for the SD card.

Well, work done. Time for varnishing. I considered doing this myself with some varnish spray but then decided to let it do someone more professional. Well, the local varnisher did his job at least "ok". I'm a bit disappointed of the quality but it's probably far more better than what I could have done with my own varnishing skills.

So here are the results of the local varnishing vote: now for the mounting of the floppy emulator. I "dremeled" out two plastic plates and mounted the emulator on it with four screws and a nut on each as a distance holder. Than I glued the plastic plates on the left inner side of the top cover.

Now I installed the "front panel" connector. As the floppy emulator has a 14-pin header for connecting the buttons (and the LCD, too - but I didn't connect it there) I soldered an adapter and connected the buttons to the appropriate pins.
That was easy. ;) 

They only have to be connected to GND. I did a "first shot soldering". Everything worked fine after a short multimeter test.

So now I headed for the assembly of everything.

And here are the final results with the wiring.

Sunday, July 31, 2011

Netatalk 2.2 released!

Netatalk - the AFP-compatible fileserver - is ready in version 2.2. Well, that sounds not worth noting at all - just another open-source software climbs one up. But this time it's different. Netatalk is used throughout many NAS appliances including those of QNAP and Western Digital and the new version 2.2 is needed for TimeMachine backups under Mac OS "Lion" to network shares.
The guys developing Netatalk seemed to be not very happy with their situation at: They did the developing and the big (NAS-)companies got the money! So the developers wrote a open letter asking "Making money from Opensource, but who makes the source ?". A good question, isn't it? ;)
Fortunately Data Robotics, Western Digital Corporation and QNAP jumped in with a commitment and so we will (hopefully) see Mac OS Lion compatible TimeMachine shares in NAS firmwares soon. I'm at the moment waiting for a 0.7 release of FreeNAS with Netatalk 2.2. But maybe I should ask the same question as the Netatalk developers the other way around?
"I'm in need of source, who needs money?"

Saturday, July 2, 2011

Fresh Scumm for PS3 - yum, yum!

Since the ScummVM-Team has merged all necessary patches for the PS3, it's damn easy to compile binaries for the PlayStation. Unfortunately the ScummVM-Team has not yet integrated PS3-builds in their buildbot, so I decided to do the job and upload it here!

Download a fresh one (1.4.0git967) for your PS3 here.

Friday, July 1, 2011

Porting PUAE to PlayStation 3

Well, since I've setup PUAE to build properly on my MacBook Pro i7, I'm really interested in porting it to run on my jailbroken Sony Playstation 3 using the psl1ght SDK, a fully open source SDK for building app running on Sony PS3's GameOS. EUAE is already ported - but PUAE seems worth the effort.

Any help is appreciated. It should be possible to take the OS-dependent stuff from the PS3-version of EUAE.

P-UAE - The Amiga-Retro-Feeling on my Mac!

GnoStiC really made my day. While trying to get the latest version of E-UAE running on my MacBook Pro i7 I found out that GnoStiC is actively developing a new child of E-UAE and WinUAE named PUAE.

And it's running quite well with a nice Cocoa Interface. I've tested it with prebuilt MacOS binaries from BinaryDevotion. Unfortunately bulding the MacOS version myself didn't succeed. I've got the following error:
gcc -O2 -ffast-math -msse3 -pipe  -mdynamic-no-pic -fomit-frame-pointer -ffast-math   -Wall -Wno-unused -Wno-format -W -Wmissing-prototypes -Wstrict-prototypes -fno-strength-reduce -DREGPARAM="__attribute__((regparm(3)))"  -m32 -DNO_MAIN_IN_MAIN_C    -m32 -march=pentium2  -m32 -o uae  main.o newcpu.o memory.o rommgr.o custom.o serial.o dongle.o cia.o blitter.o autoconf.o traps.o keybuf.o expansion.o inputrecord.o diskutil.o zfile.o zfile_archive.o cfgfile.o picasso96.o inputdevice.o gfxutil.o audio.o sinctable.o statusline.o drawing.o consolehook.o native2amiga.o disk.o crc32.o savestate.o arcadia.o cdtv.o cd32_fmv.o uaeexe.o uaelib.o uaeresource.o uaeserial.o fdi2raw.o hotkeys.o amax.o ar.o driveclick.o enforcer.o misc.o a2065.o gayle.o ncr_scsi.o missing.o readcpu.o aros.rom.o hrtmon.rom.o md-i386-gcc/libmachdep.a jd-none/libjoydep.a sd-none/libsnddep.a gfx-x11/libgfxdep.a gui-cocoa/libguidep.a keymap/libkeymap.a archivers/dms/libdms.a archivers/zip/libzip.a caps/libcaps.a blitfunc.o blittable.o cpustbl.o cpudefs.o libcpuemu.a writelog.o filesys.o fsdb.o fsusage.o hardfile.o filesys_unix.o fsdb_unix.o hardfile_unix.o bsdsocket-posix-new.o bsdsocket.o scsi-none.o debug.o identify.o  td-posix/libthreaddep.a od-macosx/libosdep.a -framework Cocoa  -L/usr/X11/lib -R/usr/X11/lib  -lSM -lICE -lXext -lX11     -ldl -lz  -lm -L/usr/lib -lpthread -lstdc++  
Undefined symbols:
  "_picasso96_state", referenced from:
      _picasso96_state$non_lazy_ptr in inputdevice.o
      _picasso96_state$non_lazy_ptr in libgfxdep.a(xwin.o)
     (maybe you meant: _picasso96_state$non_lazy_ptr)
  "_InitPicasso96", referenced from:
      _drawing_init in drawing.o
  "_picasso_handle_vsync", referenced from:
      _hsync_handler in custom.o
  "_picasso_vidinfo", referenced from:
      _picasso_vidinfo$non_lazy_ptr in libgfxdep.a(xwin.o)
     (maybe you meant: _picasso_vidinfo$non_lazy_ptr)
  "_picasso_refresh", referenced from:
      _vsync_handle_redraw in drawing.o
  "_p96_rgbx16", referenced from:
      _p96_rgbx16$non_lazy_ptr in gfxutil.o
     (maybe you meant: _p96_rgbx16$non_lazy_ptr)
  "_picasso_demux", referenced from:
      _uaelib_demux in uaelib.o
  "_restore_p96_finish", referenced from:
      _savestate_restore_finish in savestate.o
  "_have_sound", referenced from:
      _have_sound$non_lazy_ptr in audio.o
     (maybe you meant: _have_sound$non_lazy_ptr)
  "_DisplayModes", referenced from:
      _DisplayModes$non_lazy_ptr in libgfxdep.a(xwin.o)
     (maybe you meant: _DisplayModes$non_lazy_ptr)
  "_init_hz_p96", referenced from:
      _init_hz_fullinit in custom.o
  "_clear_sound_buffers", referenced from:
      _check_prefs_changed_audio in audio.o
      _audio_hsync in audio.o
  "_picasso96_alloc", referenced from:
      _filesys_init_storeinfo in filesys.o
  "_config_filename", referenced from:
      _config_filename$non_lazy_ptr in libguidep.a(cocoaui.o)
     (maybe you meant: _config_filename$non_lazy_ptr)
  "_handle_input_event", referenced from:
      _handle_events in libgfxdep.a(xwin.o)
  "_setmaintitle", referenced from:
      _refreshtitle in misc.o
  "_picasso_reset", referenced from:
      _reset_all_systems in main.o
      _custom_reset in custom.o
  "_have_done_picasso", referenced from:
      _have_done_picasso$non_lazy_ptr in libcpuemu.a(compemu_support.o)
     (maybe you meant: _have_done_picasso$non_lazy_ptr)
  "_gfxmem_bank", referenced from:
      _gfxmem_bank$non_lazy_ptr in expansion.o
     (maybe you meant: _gfxmem_bank$non_lazy_ptr)
  "_picasso_handle_hsync", referenced from:
      _hsync_handler in custom.o
  "_picasso_enablescreen", referenced from:
      _vsync_handle_redraw in drawing.o
      _check_prefs_changed_gfx in libgfxdep.a(xwin.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[3]: *** [uae] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all] Error 2
make: *** [all-recursive] Error 1
I think this has something to do with SDL. I will try to figure it out and post the results later. Happy hackin'! ;)

Update 1: it is...
checking for SDL framework... no
configure: WARNING: SDL support wanted, but libSDL could not be found
This should throw an error, I think, because PUAE doesn't build without libSDL and a successful configure with unpredictable building errors led me to the red herring while seeking for the error.

Anyway, now that I found out, I'll try to fix it.

Update 2:

Hmm...configure will not find my MacPorts libSDL, although it sits nicely where it should under /opt/local. Confusing. Anyway, I installed SDL.framework in /Library/Framewoks and configure does it's job. Make, too! ;)

So my selfbuild PUAE is up and running. Happy hacking!