uvmac/docs/change/v3.1.html
2020-03-14 15:28:01 -04:00

1 line
16 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title> Changes in Mini vMac 3.1.3 </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="canonical" href="v3.1.html">
</head>
<body>
<div>
<i> <a href="https://www.gryphel.com/index.html">www.gryphel.com</a>/c/<a href="../index.html">minivmac</a>/<a href="index.html">change</a>/v3.1
- <a href="https://www.gryphel.com/c/feedback.html">feedback</a> </i>
</div>
<hr>
<h3 align=center>
Mini vMac 3.1.3
</h3>
<h3 align=center>
Changes
</h3>
<hr>
<p> What has changed in Mini vMac 3.1.3, compared to Mini vMac 3.0.4.
This only lists changes that affect behavior, and so doesn't
include cleanups of the source code. </p>
<p> : </p>
<p>
default compile:
</p>
<blockquote>
<p>
<a href="v3.1.html#feature">New features</a>
</p><p>
<a href="v3.1.html#modified">Changed behavior</a>
</p><p>
<a href="v3.1.html#bugs">Bug fixes</a>
</p>
</blockquote>
<p>
not in default compile:
</p>
<blockquote>
<p>
<a href="v3.1.html#compile_feature">New features</a>
</p><p>
<a href="v3.1.html#compile_modified">Changed behavior</a>
</p><p>
<a href="v3.1.html#compile_bugs">Bug fixes</a>
</p>
</blockquote>
<p>
<a href="v3.1.html#build">Build System</a>
</p>
<p> : </p>
<p> <a name="feature"> <b> New features in default compile </b> </a> </p>
<p> * If Mini vMac, on Mac OS X or Windows, doesn't find the
<a href="../hardware.html#rom">ROM</a>
file in the folder containing the application, it will now
also look in a specific central location. In OS X it
checks in "/Users/[your_UserName]/Library/Preferences/Gryphel/mnvm_rom/".
In Windows XP, "C:\Documents and Settings\[your_UserName]\Application Data\Gryphel\mnvm_rom\".
Windows 98, "C:\WINDOWS\Application Data\Gryphel\mnvm_rom\". And
in Vista, I think "C:\Users\[your_UserName]\AppData\Roaming\Gryphel\mnvm_rom\".
Usually "mnvm_rom" would be an alias (on OS X, on Windows this is called a short cut)
to where ever you keep your ROM collection.
This avoids having to create an alias to the ROM image
for each emulated Mac you use. </p>
<p> <a name="modified"> <b> Changed behavior in default compile </b> </a> </p>
<p> * The alternate CPU emulation of Mini vMac 3.0.4 is now the main and only emulation.
(The &ldquo;-alt-cpu&rdquo; build option is gone.) This makes Mini vMac slightly
faster, and allows more accurate detection of illegal instructions without
speed penalty. It also reduces the amount of code to be optimized in
assembly language (Currently only done for PowerPC).
The PowerPC assembly code version has been revised to match the new emulation,
and is now used for the PowerPC Linux version. </p>
<p> * More accurate mouse and keyboard event handling, by using an event
queue to communicate between the platform dependent code and the platform
independent code. Previously, the platform dependent code would tell
the platform independent code every emulated sixtieth of a second the
current mouse position and up/down state of the mouse button and keys.
If the host computer was very busy, or just slow, then a down and up
pair could end up being processed in the same emulated sixtieth, and
they would cancel each other out and be lost entirely. Also a mouse
button state change might not be processed until well after it happened,
and the mouse position might be different by then.
(Though if Mini vMac is not getting time every sixtieth of a second,
so that these problems can be observed, then sound emulation isn't
likely to work either, emitting horrible noises. But it is possible
to compile Mini vMac without sound. And also if the host computer
is a device without a keyboard, such as using handwriting recognition,
then there might not be separate key down and key up.) </p>
<p> * The Macintosh and Windows versions now match the X version in
not initially filling the sound buffer with silence, but
instead waiting to accumulate real sound samples before starting
to play sound. This may reduce the tendency to stutter
as the program starts, mostly by giving the emulation
more time to get settled into a regular rhythm before
attempting sound.
I also changed the X version to match the Macintosh and
Windows version in only skipping a single sound block on
underrun, rather than stop playing sound until the
buffer is refilled. </p>
<p> * Includes code sent by Jes&uacute;s A. &Aacute;lvarez ("zydeco") from his
<a href="http://namedfork.net/iphone/minivmac">iPhone/iPod Touch port</a>
that improves support for the Disk Copy 4.2 disk image format,
using information found in the
<a href="http://lisa.sunder.net/">Lisa Emulator Project</a>
by Ray A. Arachelian. Mini vMac will now get the correct size
of the data in a Disk Copy 4.2 disk image,
and will identify such an image even if it is not in
HFS or MFS format. </p>
<p> * When Mini vMac is in full screen mode, it tries
to send all key events to the emulated computer,
instead of any normal meanings they would have
in the host operating system. But I've decided
that it went too far with this. So now in OS X,
in full screen mode, it will no longer disable
force quit (command-option-escape). This was
just too dangerous, especially during development
of Mini vMac. You can still send command-option-escape
to the emulated computer, using the F1 and F2 keys,
which are mapped to 'option' and 'command'. </p>
<p> * The X version now uses mouse motion events when possible instead
of XQueryPointer, which is alleged to be inefficient. (Especially if
the program is using the display on another computer, so that XQueryPointer
requires a round trip over the network. I've never tried this.
I don't know if anyone has.) </p>
<p> * Thanks to a tip from William Nolan, Mini vMac now
has, when accessing the emulated computer's memory,
a special case for little endian processors
that allow unaligned access (such Intel), similar
to the existing special case for big endian (such as PowerPC).
This makes it a bit faster. </p>
<p> * I've made a number of small changes
to the replacement disk driver that I think make
it act closer to original Apple versions. (But which
don't make any known observable difference.) </p>
<p> <a name="bugs"> <b> Bug fixes in default compile </b> </a> </p>
<p> * None Yet. </p>
<p> <a name="compile_feature"> <b> New features not in default compile </b> </a> </p>
<p> * Support for the new
<a href="../var/mnvm0159.html">Mini vMac Variations</a>
service.
<p> * You can choose the emulated screen size
(&ldquo;<a href="../options.html#option_xres">-hres and -vres</a>&rdquo;). </p>
<p> * There is an initial port to GTK+. However, this port
isn't complete yet. It will allow the Linux
version to better match the other ports, with menus
and an open file dialog. It also will make possible
a port to Maemo, which is based on Gtk. The build option is
&ldquo;<a href="../options.html#option_t">-t lx86</a>
<a href="../options.html#option_api">-api gtk</a>&rdquo;.
(The build system now optionally
allows you to choose what API to use, instead of automatically
setting it from the selected target.) </p>
<p> * Can now use a Macintosh Classic ROM, thanks to assistance from
<a href="http://www.mac128.com/">David Sibley</a> and "Gord".
The build option is
<a href="../options.html#option_m">-m Classic</a>&rdquo;.
Though it runs, it is not necessarily an accurate emulation of a
Mac Classic. A Mac Classic is supposed to be nearly identical
to a Mac SE, but there are a few minor differences. There
may be more differences that I don't know about. I can't
really work on this much further until I own a Mac
Classic.
Getting the Mac Classic emulation to work to this extent involved
fixing some issues in the emulation of the VIA chip. </p>
<p> One thing to be aware of is that the Mac Classic ROM should be
512K. Apparently some ROM acquisition programs only save the
first 256K. The
<a href="../extras/copyroms/index.html">CopyRoms</a>
program should save the correct size. </p>
<p> * Can now use a Macintosh SE FDHD ROM, thanks to assistance from
Steve Secker and <a href="http://www.mac128.com/">David Sibley</a>.
The build option is
<a href="../options.html#option_m">-m SEFDHD</a>&rdquo;.
It is currently identical to the Macintosh SE
emulation, except for expecting a different ROM (which should
be named 'SEFDHD.ROM'). </p>
<p> * Have begun emulation of the Macintosh II.
The build option is
<a href="../options.html#option_m">-m II</a>&rdquo;.
It doesn't yet emulate the FPU or ASC, but some
software will still run. Since a Macintosh II
can be hard to find there is also a build
option <a href="../options.html#option_m">-m IIx</a>&rdquo;
which accepts the ROM from a IIx, but otherwise
currently is identical to the Mac II emulation.
The Macintosh IIcx, the Macintosh II FDHD,
and the Macintosh SE/30 all have the same ROM as the
Macintosh IIx. </p>
<p> * You can choose the emulated screen color depth
(&ldquo;<a href="../options.html#option_depth">-depth</a>&rdquo;)
in the Macintosh II emulation. </p>
<p> * With the build system option
&ldquo;<a href="../options.html#option_sony_sum">-sony-sum 1</a>&rdquo;,
Mini vMac will update the checksum in a Disk Copy 4.2 disk image
when it is unmounted. This prevents other programs that deal with
such images from complaining about an invalid checksum.
(I didn't include this by default, because it makes Mini vMac
slightly bigger and slower.) </p>
<p> * With the build system option
&ldquo;<a href="../options.html#option_sony_tag">-sony-tag 1</a>&rdquo;,
Mini vMac tries to support file tags. There are an additional 12 bytes
for each 512 byte block on a 400K or 800K floppy disk, containing
some additional information that was supposed to aid in
recovering damaged disks, but was never actually used much.
The Disk Copy 4.2 disk image format can support these tags.
(The more usual raw format, such as found in
<a href="../extras/blanks/index.html">Blanks</a>, does not.) </p>
<p> * The build system option
&ldquo;<a href="../options.html#option_sony_dc42">-sony-dc42 0</a>&rdquo;
completely disables support for disk images in disk copy 4.2
format. This could be useful when trying to compile the
smallest and simplest version of Mini vMac possible for
some specific purpose. It should not be used when compiling
a version of Mini vMac for general distribution, because
a primary goal of Mini vMac is that disk images that
work with any past version of the program should also
work with the current and any future version (at least
when default compile options are used). </p>
<p> * There is now a build system option
&ldquo;<a href="../options.html#option_vsync">-vsync 1</a>&rdquo;
for OS X only, which turns on OpenGL double buffering
and sets AGL_SWAP_INTERVAL to 1. This eliminates the
"tearing" issues noted Manuel Alfayate. Unfortunately
it isn't yet a real solution. Beside using much more
memory, it also reduces the maximum speed of emulation
unpredictably and erratically, because it makes
aglSwapBuffers block until the vertical retrace,
when Mini vMac is expecting to give the emulation
extra time, for above "1x" speed. Anyway it helps
to illustrate the issue. Now that I've seen what
it looks like with vsync, I can see the difference
in certain games. </p>
<p> <a name="compile_modified"> <b> Changed behavior not in default compile </b> </a> </p>
<p> * There are some refinements to the
&ldquo;<a href="../options.html#option_akm">Alternate Keyboard Mode</a>&rdquo;.
Typing ';' now locks the mode on, there is no temporary
state. (I found holding ';' while typing other keys too
much strain.) Typing 'm' now leaves the mode. (I find
'm' slightly easier to hit than 'u', and it is no
longer needed for entering the mode.) The 'shift' and
'option' keys now override the mode like the 'command'
key does. (So anything except lowercase letters can be
typed without leaving the mode.) When compiled with the
Alternate Keyboard Mode, Mini vMac now starts up with the
mode on rather than off. (I think I've reinvented what
I've read about the vi editor. You are normally in
command mode, and only use insert mode temporarily.)
A number of the mappings are changed: 'a' - semicolon,
'b' - backslash, 'e' - backspace, 'h' - equal, 'n' - minus,
'o' - ], 'r' - return, 't' - tab, 'u' - [, and 'p' and 'w'
are now not used. </p>
<p> * The
&ldquo;<a href="../options.html#option_akm">Alternate Keyboard Mode</a>&rdquo;
option now gives a visual
indication of the current keyboard mode, intended
to be easy to see in peripheral vision, without covering
up where text is normally typed. </p>
<p> * The Macintosh SE emulation, in full screen mode, will now emulate
the ADB protocol for mouse movement, instead of just poking the changes
into emulated low memory. This turned up a bug where apparently emulated
ADB devices were responding to commands too quickly, before the emulated
Mac was ready. I increased the constant that specifies the delay. </p>
<p> <a name="compile_bugs"> <b> Bug fixes not in default compile </b> </a> </p>
<p> * Two bug fixes in the
<a href="../options.html#option_em_cpu">68020</a>
emulation, in distinguishing between long DIV and MUL,
and in bit field operations with width of 32. </p>
<p> <a name="build"> <b> Build System </b> </a> </p>
<p> * The build system
now has a separate argument for the memory size of
the emulated machine
(&ldquo;<a href="../options.html#option_mem">-mem</a>&rdquo;),
instead of including
this in the model
(&ldquo;<a href="../options.html#option_m">-m</a>&rdquo;). </p>
<p> * The build system now supports Xcode 3.1, using the option
&ldquo;<a href="../options.html#option_ev">-ev 3100</a>&rdquo;.
Mini vMac compiles without warnings,
which wasn't possible with the SDK that comes
with Xcode 2.4.1. </p>
<p> * The build system now supports
Microsoft Visual Studio 2008 Express, using
&ldquo;<a href="../options.html#option_t">-t wx86</a>
<a href="../options.html#option_ev">-ev 9000</a>&rdquo;.
<p> * The build system supports compiling the Pocket PC version
with Microsoft Embedded Visual C++ 4 for ARM and the emulator
(&ldquo;<a href="../options.html#option_t">-t wcar</a>&rdquo; and
&ldquo;<a href="../options.html#option_t">-t wc86</a>&rdquo;).
</p>
<p> * The build system supports using the command line tools of the LCC compiler
(&ldquo;<a href="../options.html#option_e">-e lcc</a>
<a href="../options.html#option_cl">-cl</a>&rdquo;). </p>
<p> * The build system supports the Sun c compiler
(&ldquo;<a href="../options.html#option_e">-e snc</a>&rdquo;). </p>
<p> * The build system now has an
&ldquo;<a href="../options.html#option_an">-an</a>&rdquo;
option, for changing
the programs abbreviated name, from the default "minivmac".
So the Mini vMac variations are compiled with say "-an mnvm0001",
instead of "-n mnvm0001-3.1.0-umch". The abbreviated
name must be 8 characters or less, and should only include
lowercase letters, numbers, and underscores. </p>
<p> * The build system will now check if the folder
"System Folder:Preferences:Gryphel:Build:output" exists,
and if so direct output there, instead of
"minivmac:output:". This is useful
if you keep the minivmac source disk image on
a flash drive, avoiding excessive wear. </p>
<p> * The build system can now resolve aliases of folders, such as the
output preference folder. So the output can be directed anywhere,
such as to another disk. </p>
<p> * The build system can now handle multiple sets of options
at once, separated by ";". I use this in the process of
compiling the set of Mini vMac Variations. To allow this
to work, the build system no longer replaces the entire output
folder on each run, but just replaces folders within
the output folder. </p>
<p> * I've removed the "-pk" option of the build system to
restrict the program to a more manageable scope. And anyway
I find it more convenient to handle post processing in external
scripts. </p>
<p> : </p>
<p> If you find Mini vMac useful, please consider
<a href="https://www.gryphel.com/c/help/index.html">helping the Gryphel Project</A>,
of which it is a part. </p>
<a href="https://www.gryphel.com/index.html">
<img src="https://www.gryphel.com/d/gryphel-32.gif" width=32 height=32 border=0
alt="gryphel logo, 1K"
>
</a>
<p> Back up to - <b><a href="index.html">Changes in Mini vMac versions</a></b></p>
<hr>
<div>
<i> <a href="https://www.gryphel.com/index.html">www.gryphel.com</a>/c/<a href="../index.html">minivmac</a>/<a href="index.html">change</a>/v3.1
- <a href="https://www.gryphel.com/c/feedback.html">feedback</a> </i>
<br>
copyright (c) 2009 Paul C. Pratt - last update 11/8/2009
</div>
</body>
</html>