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. Received on 2007-06-28 14:00:39
This archive was generated by hypermail 2.4.0 : 2020-01-13 12:15:14 EST