Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

Macintosh (Basilisk II) 8-bit Color


  • Global Moderator

    Meneer Jansen over in "Gaming and General Discussion" was talking about an older Mac game he got working on RetroPie's Basilisk Emulator and it reminded me that I've yet to get a game working that requires 256 colors (8-bit color). This is particularly frustrating because almost any game for the Mac of that era requires it be run in 8-bit color. I have a posting aimed in his direction, but I thought someone here might have some insight as well.

    What happens is, every time the emulated MacOS tries to make the switch to 256 colors, Basilisk freezes and RetroPie must be restarted. I have tried MacOS 8.1 & 7.5.5, as well as a Performa and Quadra 900 system rom (changing the corresponding config settings with each), all with the same results. I have tried the default config, as well as trying it with 32 & 64 MB of emulated memory. All in all, I've tried more combinations than I can really work into this post. If anyone has manged to get Basilisk to run or boot in 256 colors without crashing, I would be most interested to learn the technique.


  • Global Moderator

    I've done a bit more research and have discovered that the version of Basilisk II in RetroPie is simply incapable of running in 8-bit color. I have to admit, it's a little disappointing, as it severely cuts the number of games that are capable of running to a much smaller list. However, the later games that use 16-bit color and higher should run fine, so I guess I'm going to settle on MacOS 8.1, which is the highest version that Basilisk II will support. That should ensure the greatest level of compatibility with later generation games and stay within the technical limitations of the emulator.

    Edit: For anyone interested now or in the future, a workaround is being discussed at:
    https://retropie.org.uk/forum/topic/166/what-are-you-playing/41



  • Thank you for opening a separate topic about this.

    I didn't even know that BasiliskII (a classic Apple Mackintosh emulator) was included in RetroPie (or Raspbian for that matter). I compiled it from source code the first time. I compiled it as described in ref. [1] and [2]. That leaves you w/ a BII version that uses SDL for video and audio. SDL video is nice because it does not need an X server (i.e. something like LXDE) to work. So you can start it from the Emulationstation menu.

    However, like said above, BII cannot be run in 8 bit color (= 256 color) mode. The greatest platform game ever made by man (Prince of Persia 2 - The Shadow and the Flame) must be run in 8 bit mode. Bummer! So one has to de-install the version installed by RetroPie (or Raspbian for that matter) and compile an other one instead.

    This leaves you w/ another problem. If you've installed RetroPie from an SC card image than I think that no LXDE (i.e. a graphical desktop environment) is included on your Pi. I installed Raspbian (a Linux operating ystem for the Pi based on Debian) on my Pi and afterwards I installed RetroPie from a (shell) script (link).

    Anyway, to play PoP2 on your Pi, here's my personal HowTo:

    Compile BII from source

    1. Instead of like in [1] do not try to install libgtk2-dev but install libgtk2.0-dev!

    2. Don't forget to apt-get update.

    3. Use git clone https://github.com/cebix/macemu.git

    4. The command aclocal ; autoconf don't work (?)

    5. BII w/ SDL graphics (no X needed) does not support 8 bit (256) color mode so NO Prince2 that way. So one has to compile BasiliskII w/ framebuffer support instead of SDL. Unfortunately this also meand that BII has to be started from within X (i.e. LXDE in Raspbian). Use the following options to compile BII and (SDL) sound and 8 bit mode will work in X.

      ./configure --disable-vosf --disable-jit-compiler --without-gtk --enable-sdl-audio --enable-fbdev-dga

    From the Readme [3]:

    dga/<frame buffer name> [if Basilisk II was configured with --enable-fbdev-dga] Full-screen display using the frame buffer device /dev/fb. The color depth (8/15/24 bit) depends on the depth of the underlying X11 screen. The "frame buffer name" is looked up in the "fbdevices" file (whose path can be specified with the "fbdevicefile" prefs item) to determine certain characteristics of the device (doing a "ls -l /dev/fb" should tell you what your frame buffer name is).

    1. Add to settings file /home/pi/.basilisk_ii_prefs for PoP2 in full screen in BasiliskII:

      screen win/512/384

    2. Full screen in LXDE: Alt F11.

    3. Set LXDE to 512 x 384: start the Pi in 512 x 384 mode. For this to one should edit on the Pi the file /boot/config.txt and alter/add the following options (example below for my flatscreen 16:9 television):

          # uncomment to force a console size. By default it will be display's size minus overscan.
          framebuffer_width=512
          framebuffer_height=384
          # It is recommended to set monitor mode to DMT (i.e hdmi_group=2), see below in HDMI section
          # HDMI SECTION:
          # HDMI group 1 = CEA, group 2 = DMT.
          # [http://elinux.org/RPiconfig]
          # CEA modes (goup 1) are meant for TV, DMT modes (group 2) for computer monitors.  
          # Group1/mode1 = VGA; group2/mode4 = 640 x 480 @60 Hz; 
          # group2/mode9 = 800 x 600 @60 Hz; group2/mode16 = 1024 x 768 @60 Hz;
          # group2/mode23 = 1280 x 768 @60Hz (16:9);
          hdmi_group=1
          hdmi_mode=1
    
    1. After startx you'll get the LXDE desktop environnment/GUI and then you should run BasiliskII from there (in a terminal window for instance). Music is a bit too slow but effects work just fine. The music probably is generated by a (virtual) sound card (Midi?) and the sound effects might be samples. The samples play fine, the emulation of the sound card might be too slow.

    The game itself is playable, i.e. not too slow. Great!

    Procedure from [2]

    Basilisk II, a 68K Mac emulator running on the Raspberry Pi. Everyone asks if the Pi can do this or that. If you can do it on Linux and compile it, the answer is usually "yes"! The other limiting factor is CPU power, but Basilisk runs just fine as you can see. The only trick here was building from source (it's not in the Raspbian repos) which was easy (updated for May 2013 Raspbian):

    # apt-get install git libsdl1.2-dev autoconf libgtk2-dev libxxf86dga-dev libxxf86vm-dev libesd0-dev
    # git clone github.com/cebix/macemu
    # cd macemu/BasiliskII/src/Unix
    # aclocal ; autoconf         
    

    Remark: maybe: ./autogen.sh (might not be necessary if custom ./configure is used)

    # autoreconf -I ./m4
    # ./configure --enable-sdl-video --enable-sdl-audio --disable-vosf --disable-jit-compiler --without-gtk
    # make install
    

    There is no 68000 JIT for ARM CPUs yet so it's not lightning-fast but is eminently usable. As ever, it runs faster on the console (as shown here) without the bloat of Xorg. 8-bit color mode crashed but all the other modes including 16-bit color works fine. Audio lags by around or perhaps a little more than 500ms.

    The contents of my .basilisk_ii_prefs:

    disk /home/pi/mac/Basildisk < == changeme
    extfs /home/pi/mac < == changeme
    screen win/640/480
    seriala /dev/cu.Bluetooth-Modem
    serialb /dev/null
    ether slirp
    udptunnel false
    udpport 6066
    rom /home/pi/mac/iici.rom < == changeme
    bootdrive 0
    bootdriver 0
    ramsize 67108864
    frameskip 0
    modelid 5
    cpu 3
    fpu true
    nocdrom false
    nosound false
    noclipconversion false
    nogui false
    jit false
    jitfpu false
    jitdebug false
    jitcachesize 8192
    jitlazyflush true
    jitinline true
    keyboardtype 5
    keycodes false
    mousewheelmode 1
    mousewheellines 3
    dsp /dev/dsp
    mixer /dev/mixer
    ignoresegv true
    idlewait true
    

    Procedure from [1]

    # apt-get install git libsdl1.2-dev
    # git clone github.com/cebix/macemu
    # cd macemu/BasiliskII/src/Unix
    # NO_CONFIGURE=1 ./autogen.sh
    # ./configure --enable-sdl-video --enable-sdl-audio --disable-vosf --disable-jit-compiler
    # make install
    

    References

    [1] www.emaculation.com/forum/viewtopic.php?f=6&t=8009

    [2]

    [3] Readme:
    http://basilisk.cebix.net/README
    (see official website under "Genaral infoermation": http://basilisk.cebix.net)

    [4] Official website:
    http://basilisk.cebix.net

    Still reading this? Then you're a real tough fellow ! If you've ever played PoP2 on MS-DOS and liked it then I can really recommend the procedure above to compile BII to play the superior Mac version! The orig. Mac version is close to something that might even be commercially released on a lightweight portable game platform today. Well, almost then... ;-)


  • Global Moderator

    @Meneer-Jansen said in Macintosh (Basilisk II) 8-bit Color:

    The orig. Mac version is close to something that might even be commercially released on a lightweight portable game platform today. Well, almost then... ;-)

    I agree. It's a gorgeous game. I up-voted your post here earlier, but I wanted to wait until I could digest it's contents completely before I commented. This reference guide you put together really is streets ahead. Seeing as how so many of the old Mac games relied on 8-bit color, this will likely serve as a great one-stop tutorial to all the Pi users out there left scratching their heads over this issue. I look forward to giving it a go myself and vanquishing the evil Jaffar once and for all.

    Thanks again.



  • @mediamogul said in Macintosh (Basilisk II) 8-bit Color:

    @Meneer-Jansen said in Macintosh (Basilisk II) 8-bit Color:

    The orig. Mac version is close to something that might even be commercially released on a lightweight portable game platform today. Well, almost then... ;-)

    I agree. It's a gorgeous game. I up-voted your post here earlier, but I wanted to wait until I could digest it's contents completely before I commented. This reference guide you put together really is streets ahead. Seeing as how so many of the old Mac games relied on 8-bit color, this will likely serve as a great one-stop tutorial to all the Pi users out there left scratching their heads over this issue. I look forward to giving it a go myself and vanquishing the evil Jaffar once and for all.

    Thanks again.

    I'm afraid I have to agree w/ you that it's not for the faint of hart. You'l need quite some Pi skills and Linux skills. Most of the fun must be sought in acquiring computer skills, not so much in playing PoP2, ha ha.

    Anyway, summarizing it comes to this:

    1. Install the graphical user interface/desktop environment
      or this (if at all (still) possible on RetroPie) or re-install RetroPie w/ a script after instaling Raspbian on your Pi (again, if at all still possible) with this script and tutorial.
    2. Compile BasiliskII from source code w/ the option to not use SDL for video but framebuffer/DGA.
    3. Install MacOS operating system on it or download from PoP Unofficial Website the so called PoP Macintosh Total Pack.
    4. Optionally: fiddle a bit w/ RetroPie to get a 512x384 game to play full screen.

    You might also try to use the executable/binary that I compiled for my Pi 1B (mediafire link). I don't even know if it will run stand-alone though... Good luck! :-)


  • Global Moderator

    @Meneer-Jansen said in Macintosh (Basilisk II) 8-bit Color:

    it's not for the faint of hart.

    Fortune favors the bold. ;)

    Thanks again. Your time and attention to this issue is much appreciated.


  • Global Moderator

    @Meneer-Jansen said in Macintosh (Basilisk II) 8-bit Color:

    You might also try to use the executable/binary that I compiled for my Pi 1B (mediafire link). I don't even know if it will run stand-alone though... Good luck! :-)

    Just a FYI to those who might try. By itself, this executable has dependencies that are not met. Thanks for the link though. It was worth a shot, and I still look forward to using your guide in full when I get a little more time to experiment.



  • @mediamogul said in Macintosh (Basilisk II) 8-bit Color:

    @Meneer-Jansen said in Macintosh (Basilisk II) 8-bit Color:

    You might also try to use the executable/binary that I compiled for my Pi 1B (mediafire link). I don't even know if it will run stand-alone though... Good luck! :-)

    Just a FYI to those who might try. By itself, this executable has dependencies that are not met. Thanks for the link though. It was worth a shot, and I still look forward to using your guide in full when I get a little more time to experiment.

    I could also post the files it needs and tell you where they are installed. Also realize that you need to run this executable in a terminal window in LXDE (it needs X). Do you get an error message and could you post it here? Maybe in the error mess tells what files it misses...


  • Global Moderator

    @Meneer-Jansen

    I do appreciate it, but it's probably best that it be compiled and installed as your guide intends or else we'll just be asking for trouble.



  • I tried to run the BasiliskII executable from a location other than the standard location (i.e. /home/pi/ instead of /usr/local/bin/). It appears to need a config file (i.e. /home/pi/.basilisk_ii_prefs), a ROM for the virtual Mac and a hard disk image for the virtual Mac (both can be nicked from the PoP Mac total Pack). And BasiliskII needs to be started from within LXDE. One might try to find a good tutorial to install and start LXDE in RetroPie and do an experiment w/ the BasiliskII executable that I posted. Might save one the time and trouble of compiling it from source...

    Good luck everybody. :-)


  • Global Moderator

    Last night, I was fortunate enough to stumble onto somewhat of a solution to this problem. Using the runcommand-onstart, we can now set the framebuffer to 8-bit color on launch by adding:

    if [ "$2" = "basilisk" ]; then
    fbset -depth 8
    fi
    

    With this enabled, games running in 8-bit color will now be visible. From here, I want to reset the default color depth on exit in the runcommand-onend script. Am I correct in assuming that the default color depth is 16-bit 32-bit?

    if [ "$2" = "basilisk" ]; then
    fbset -depth 32
    fi
    

  • administrators

    @mediamogul it's 32 bit now.

    I could probably add some framebuffer depth setting to runcommand. Ill look into it.


  • Global Moderator

    @BuZz

    Oh wow, that would be fantastic. Thanks.


  • administrators

    @mediamogul I haven't looked into it too extensively but there are some colour type Macs for the minivmac emulator though currently the macplus is the only binary it compiles


  • Global Moderator

    @herb_fargus

    Very keen! My childhood best friend had a Macintosh Plus. I think that was the first time I ever played 'Deja Vu'. Has SheepShaver ever been considered for Retropie? If I remember right, it's capable of emulating a PowerPC up to System 9.0.4.


  • Global Moderator

    Just tested 'Prince of Persia 2: The Shadow and the Flame' and it runs like a champ with the framebuffer set to 8-bit color depth. A runcommand setting would indeed be most helpful for games that require a higher color depth, as the screen now turns black when the emulated Mac is set to "Thousands of Colors". It's been a long time coming, but it was well worth the wait to play this great game again. I'm marking this as solved. Thanks again @Meneer-Jansen and @BuZz for your help with this.


  • administrators

    @mediamogul I made a ticket for myself on the issue tracker. Nice find btw. Strangely I did try switching framebuffer depth before and it didn't work. I obviously did something wrong or a firmware change has affected something. Nice one!



  • Got this all working today with a "1gb hard drive". Now i notice on the pi the mouse skips. Which makes using paint impossible. Closing stuff gets to be a pain too. Is it possible to have the mouse working a little better? On windows obviously it is flawless. Im going to install doom for fun just to see how bad it runs.


  • Global Moderator

    @edmaul69

    The mouse doesn't skip on mine for whatever reason. I've even tried it with a few mouse-based games and it's pretty smooth.



  • @mediamogul strange. I have it with a premade 30mb drive and the 1gb one i made. The skip is so big that the blue squares on the background are slightly smaller than the space between each mouse jump. I watched a youtube video where the guy had the same issue.



Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.