The Lisa Emulator Project, Release Candidate 2 is now ready for
download:
http://lisaem.sunder.net/downloads.html
The biggest change is in the video handling code. The following
description on video methods is a bit technical, so skip over it if you
find your eyes glaze over.
The rawbitmap method:
The video updates are now using a hidden API in wxWidgets called
rawbmp.h, which allows direct read write access to the pixels. This
isn't a secret API by any means, since wxWidgets is open source,
however, it is undocumented. To turn this on pass --with-rawbitmap on
compiling.
This is a lot faster on OS X, but it crashes win32, and shows a black
screen on Linux
The SetRGB wxImage display method:
An alternate method is also available for systems where rawbmp.h doesn't
work, such as on win32. Compile using --without-rawbitmap to enable
this slightly slower mode.
While this mode is also much faster than the original version on OS X,
it's slower than rawbmp.
The SetRGB method builds a wxImage, and access the pixels via the SetRGB
method, then converts the wxImage into a wxBitmap, and blits the result
to the display. (On wxWidgets, you can't blit Images, they must be
converted to wxBitmaps, and there's no SetRGB method on wxBitmaps.)
The original code which built 4x1 blits has been ripped out. In terms
of speed, it worked fine on Linux and Windows, but it failed miserably
on slower OS X machines. The new code is also a big hack, but at least
it's a good hack. :-)
The rest of the display mechanism is based on Brian Foley's code, which
refreshes only the changed data, and schedules CPU execution via a
timer. While Brian's UI code is a lot cleaner, the main LisaEm wx UI
code has branched off too far for it to be compatible, so I've adapted
the code to do what his code does. Future updates will aim for cleaner
C++ code.
There may be issues refreshing the display on scrolling, however.
Another issue, is that the new code causes a bit of fuzzing in the
antialiased modes. This is due to the color levels used by the new
code. This will be fixed eventually by trial and error. I suspect that
tweaking contrast/brightness levels is what's needed.
The Display refresh rate options have been removed as they're no longer
needed.
The biggest improvement is for G4 OS X machines - the new display code
is fast enough to get a 5Mhz on average for a 500Mhz G4 running OS X
10.3.9. It uses about 60M of real memory and about 160M of swap (which
includes things like profile disk images, and other mmap'ed data) on the
same G4.
Other improvements:
Dual Parallel ROM cheat - if you have this ROM and are using it, the
power on self test is very painfully slow, especially on older systems,
the new version bypasses the test routines, so power on time is a lot
faster. Should future releases of the emulator support other expansion
port cards, this method can be used there as well.
NOTE: If you do not enable the ROM cheats when using the Parallel ROM,
and set the throttle to anything other than 5MHz, the Parallel ROM tests
will not only take a very long time, but fail since they test CPU vs VIA
timing.
Unlike most standard open source software, LisaEm doesn't use
"./configure; make; make install" autoconf/automake method of building.
However, Linux distro maintainers have scripts that make use of that, so
I've built a fake configure script file that builds a makefile which
acts as a wrapper around the build.sh script.
libdc42 updates allow access to both macbinaryII wrapped DART and
DiskCopy 4.2 images, and detects Disk Copy 6 images. (Since the
NDIF/DMG file formats are undocumented, libdc42 cannot support them.)
Floppy code can now deserialize tools/install disks and offers the
option on disk mounting.
Inserting a blank floppy works again. Previously, it either attempted
to install an existing floppy, or when inserting a blank disk whilst
running Lisa Office System it would cause LOS to hang when initializing.
Added raw buffered keyboard mode to compensate for keyboard repeating
when throttle >5MHz.
The Lisa's COPS Clock is now decoupled from CPU clock, so that the time
is accurate regardless of the throttle setting.
Remaining known bugs:
Screen blurriness with new display. This is a color levels issue. (new)
win32 crashes when built --with-rawbitmap (new)
Linux shows a black screen when built --with-rawbitmap (new)
There's a problem with MacWorks emulation which has existed for a few
versions of the emulator - when quitting an application MacWorks gets
stuck in a loop refreshing the desktop and reading from the floppy.
This prevents the Hard Drive installer from completing as well. I've
done a bunch of swap & compile attempts to switch out parts of the
source code to isolate the code causing this but haven't been able to
locate the bug.
Scrollbar arrows overlap in LOS. This has existed since the very first
versions.