uvmac/docs/change/v3.4.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.4.1 </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.4.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.4
- <a href="https://www.gryphel.com/c/feedback.html">feedback</a> </i>
</div>
<hr>
<h3 align=center>
Mini vMac 3.4.1 <!-- *<i>Beta</i>* -->
</h3>
<h3 align=center>
Changes
</h3>
<hr>
<p> What has changed in Mini vMac 3.4.1, compared to Mini vMac 3.3.3.
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.4.html#feature">New features</a>
</p><p>
<a href="v3.4.html#modified">Changed behavior</a>
</p><p>
<a href="v3.4.html#bugs">Bug fixes</a>
</p>
</blockquote>
<p>
not in default compile:
</p>
<blockquote>
<p>
<a href="v3.4.html#compile_feature">New features</a>
</p><p>
<a href="v3.4.html#compile_modified">Changed behavior</a>
</p><p>
<a href="v3.4.html#compile_bugs">Bug fixes</a>
</p>
</blockquote>
<p>
<a href="v3.4.html#build">Build System</a>
</p>
<p> : </p>
<p> <a name="feature"> <b> New features in default compile </b> </a> </p>
<!-- A new feature is something you would not notice if you used
Mini vMac as you used it previously. If using it as you would previously
would behave differently, that is "changed behavior". -->
<!-- -->
<p> * None Yet. </p>
<p> <a name="modified"> <b> Changed behavior in default compile </b> </a> </p>
<!--
<p> * None Yet. </p>
-->
<p> * Changed URL displayed in about screen to
"<a href="https://www.gryphel.com/index.html">http://www.gryphel.com/c/minivmac/</a>".
</p>
<p> * To make Mini vMac simpler and more maintainable, the interaction
between platform dependent code and platform independent code has
been changed a bit. Instead of the platform dependent code calling
a routine to emulate one tick (sixtieth of a second) whenever
appropriate, the main loop of the program is now in platform
independent code, which periodically calls platform dependent
code to check for events. A visible consequence of this is that
the emulation will now stop running in certain circumstances
when it used to continue running, such as during the open disk
image dialog. The exact situations this happens varies for
each platform.
</p>
<p> * To minimize glitches in sound output when emulation starts,
stops, or just isn't running fast enough, the sound call back
functions in the various Macintosh versions and the SDL version will
now try to play an appropriate transition in each of these
circumstances.
</p>
<p> * In the Cocoa port, when the platform dependent code checks for
events, rather than using a time out value, it turns out there
is a bit less overhead to check for events, sleep, and then
check for events again. This allows matching the performance
of the Carbon version, making the Cocoa version more ready
for prime time. (Apple has declared Carbon very, very
deprecated.)
</p>
<p>
The same fix actually also applies to Carbon. Mini vMac
used to use a standard Carbon event loop with a complicated
system of timer events only because a manual event loop
didn't get quite as good performance. With this change, all
ports can use the same platform independent event loop,
as described above.
</p>
<p> <a name="bugs"> <b> Bug fixes in default compile </b> </a> </p>
<!--
<p> * None Yet. </p>
-->
<p> * The Virtual-Key Codes of Microsoft Windows, that are independent
of differences in keyboard hardware, turn out not to be independent
of the choice of Keyboard Layout. Changing the Keyboard Layout
to something other than "US" may scramble the Virtual-Key Codes,
strangely enough. Mini vMac will now check the current Keyboard
Layout, and attempt to unscramble the codes, so that the Keyboard
Layout chosen in Macintosh operating system running within Mini vMac
will work properly. There is a new build option to disable this
fix, <a href="../options.html#option_ikb">-ikb 0</a>&rdquo;, because
this is fairly large amount of code and US only users don't need it.
But also because I'm not sure I really understand this. Why has
no one complained about this issue in the last decade?
</p>
<p> * Mini vMac on Microsoft Windows will now recognize the
Virtual-Key code of VK_OEM_102, and translate it to the Macintosh
key code of 0x0A. This key is used for angle brackets in the
German keyboard layout, for example.
</p>
<p> * Mini vMac on Microsoft Windows passed an invalid Window Style
to CreateWindowEx (when not in full screen mode). When compiled
with certain development tools this could result in the window
being the wrong size, and other odd behavior. Before finding
and fixing this, I also made Mini vMac more robust in adjusting
for window border sizes by using AdjustWindowRectEx and MapWindowPoints,
rather than various results from GetSystemMetrics. (Thanks to
the anonymous user who
<a href="https://www.gryphel.com/c/mail/v3.html#m27">reported this issue</a>.)
</p>
<p> * The OS X version of Mini vMac
was using the wrong syntax for the value of the LSRequiresCarbon
key in the Info.plist file in the application bundle, as
<a href="https://www.gryphel.com/c/mail/v2.html#m43">reported by Ryan Schmidt</a>.
</p>
<p> * The Linux, and other X, versions of Mini vMac would crash
when exporting a file, if the &ldquo;out&rdquo; folder in the
application directory didn't exist, and Mini vMac lacked
permission to create it, due to not properly handling errors in the
routine &ldquo;FindOrMakeChild&rdquo; in the source file
&ldquo;MYOSGLUE.c&rdquo;, as
<a href="https://www.gryphel.com/c/mail/v2.html#m42">reported by &Eacute;ric of Montr&eacute;al</a>.
</p>
<p> * The Linux, and other X, versions of Mini vMac can crash
if the HOME environment variable is not set, due to missing
error checking (which in turn was due to incorrectly disabling an
alternate implementation), as
<a href="https://www.gryphel.com/c/mail/v2.html#m44">reported by fzn</a>.
</p>
<p> * The Linux, and other X, versions of Mini vMac will now
look for the ROM image in the application directory before looking
in the &ldquo;~/.gryphel/mnvm_rom&rdquo;, instead of after, to match
the behavior of the other ports. This makes it easier to have a ROM
image for general use, and still be able try out another ROM
image.
</p>
<p> * The autoscroll feature (used in full screen mode when the
emulated screen size is larger than the real screen) would
not work when the emulation was stopped (using the
&ldquo;Stopped toggle&rdquo; in the &ldquo;S&rdquo; command of the
Control Mode). </p>
<p> * In the Cocoa port, Mini vMac would fail to mount a disk
image located on a file system that doesn't support locking.
It now checks the result from the flock call, and only prevents
mounting if the file is already locked, and doesn't prevent
mounting for other errors.
</p>
<p> <a name="compile_feature"> <b> New features not in default compile </b> </a> </p>
<!--
<p> * None Yet. </p>
-->
<p> * The hack allowing the emulated Mac Plus (and other models without Color Quickdraw)
to have a larger screen always allocated enough memory for a screen with up to
1048576 pixels. It now allocates more closely to just the memory needed, and
can handle screens up to 2097152 pixels (the size of the unused area in the address
space that is used by this hack). I believe the previous limitation was mostly
consequence of how earlier versions handled memory access in the CPU emulator.
The build system will now give an error when the requested screen size contains
more than 2097152 pixels (before it would compile fine and just not work right).
</p>
<p> * A new build system option
&ldquo;<a href="../options.html#option_sss">-sss</a>&rdquo;
selects the output Sound Sample Size.
</p>
<p> * A new build system option
&ldquo;<a href="../options.html#option_cbt">-cbt</a>&rdquo;
selects the initial value of Caret Blink Time
(Rate of Insertion Point Blinking) in the Parameter RAM.
</p>
<p> * A new build system option
&ldquo;<a href="../options.html#option_dct">-dct</a>&rdquo;
selects the initial value of Double Click Time
in the Parameter RAM.
</p>
<p> * A new build system option
&ldquo;<a href="../options.html#option_mnb">-mnb</a>&rdquo;
selects the initial value of Menu Blinks
in the Parameter RAM.
</p>
</p>
<p> * A new build system option
&ldquo;<a href="../options.html#option_kyt">-kyt</a>&rdquo;
selects the initial value of Keyboard Repeat Threshold
in the Parameter RAM.
</p>
<p> * A new build system option
&ldquo;<a href="../options.html#option_kyr">-kyr</a>&rdquo;
selects the initial value of Keyboard Repeat Rate
in the Parameter RAM.
</p>
<p> * A new build system option
&ldquo;<a href="../options.html#option_svl">-svl</a>&rdquo;
selects the initial value of the Sound Volume in the Parameter RAM.
</p>
<p> <a name="compile_modified"> <b> Changed behavior not in default compile </b> </a> </p>
<!-- -->
<p> * None Yet. </p>
<p> <a name="compile_bugs"> <b> Bug fixes not in default compile </b> </a> </p>
<!--
<p> * None Yet. </p>
-->
<p> * Sound in the Macintosh II emulation is much improved. The
build system now enables it by default.
</p>
<p> * The Windows version wouldn't compile with magnification disabled
(<a href="../options.html#option_magnify">-mf 1</a>) and screen depth
(<a href="../options.html#option_depth">-depth</a>) of thousands,
millions, or 4 colors.
</p>
<p> * The Classic Mac versions
(&ldquo;<a href="../develop.html#option_t">-t m68k</a>&rdquo; and
&ldquo;<a href="../develop.html#option_t">-t mppc</a>&rdquo;)
didn't always request a large enough memory allocation in the
SIZE resource, particulary for large screen sizes and color
depths. The build system now tries to compute the memory
requirements more exactly.
</p>
<p> * The Pocket PC version wouldn't compile with
"<a href="../options.html#option_im">-im 1</a>". Removing
the call to GetShortPathName for Pocket PC allows it
to compile, but then registration won't work
if the path of the application contains spaces.
Upon further investigation, it seems all that is needed
is to put the application path in quotes when setting
registry entries, so GetShortPathName isn't needed.
So have made this change for both Pocket PC and
the regular Windows version.
</p>
<p> <a name="build"> <b> Build System </b> </a> </p>
<!--
<p> * None Yet. </p>
-->
<p> * The build system now supports Xcode 6.3.2
(with &ldquo;<a href="../develop.html#option_ev">-ev 6320</a>&rdquo;),
and also Xcode 6.4 Beta (&ldquo;-ev 6400&rdquo;),
Xcode 6.2 (&ldquo;-ev 6200&rdquo;),
and Xcode 4.6.3 (&ldquo;-ev 4630&rdquo;).
Though not tested,
other versions of Xcode in between should also work, by constructing
the &ldquo;-ev&rdquo; option in the same way.
</p>
<p> * The build system now supports Microsoft Visual Studio 2013
(with &ldquo;<a href="../develop.html#option_ev">-ev 12000</a>&rdquo;),
and also Microsoft Visual Studio 2012 (&ldquo;-ev 11000&rdquo;),
and Microsoft Visual Studio 2015 RC (&ldquo;-ev 14000&rdquo;).
</p>
<p> * Added build system option
&ldquo;<a href="../develop.html#option_api">-api sd2</a>&rdquo;
to use the
<a href="http://www.libsdl.org">Simple DirectMedia Layer</a>
2.0 API (the older 1.2 API was previously supported), based upon a
<a href="https://github.com/vanfanel/minivmac_sdl2">port by Manuel Alfayate</a>,
after this
<a href="http://www.emaculation.com/forum/viewtopic.php?f=7&t=8807">discussion</a>.
<p> * Files can now be dropped onto the build system
application icon. This is equivalent to copying the
contents of the file, and pasting it into the build
system window after removing any existing text
(such as by the &lsquo;Select All&rsquo; and &lsquo;Clear&rsquo; commands),
and then choosing the &lsquo;Go&rsquo; command. Multiple files
can be dropped, and they will be all be
processed. (Though if there is an error, that error
is reported, and all remaining files are forgotten.)
If the build system application was not yet running
when icons are dropped on it, then the application
automatically quits after processing all the files.
Other ways of generating kAEOpenDocuments apple events,
besides dropping files on the application icon,
should also work, such as AppleScript.
</p>
<p> * The Build System now supports drag and drop (when
the drag and drop operating system software is present)
onto its window, which has equivalent function to dropping
a file on the application icon as described above.
</p>
<p> * The Build System has a new &ldquo;Import&rdquo; command
in the File menu, which has equivalent function to dropping
a file on the application icon as described above.
</p>
<p> * The Build System has a new &ldquo;Export&rdquo; command
in the File menu, which saves the window&rsquo;s contents
to a new file, that the &ldquo;Import&rdquo; command can
read. The new file has the creator set to the Build System,
so double clicking on the file will work. The Build System
application defines an icon for the files it saves.
</p>
<p> * The Build System now has a progress indicator at
the bottom of the window. It can display information
about what is going on. Clicking on the progress
indicator is equivalent to choosing the &ldquo;Go&rdquo; command
from the File menu. The Build System can now potentially allow
the user interface to remain functional while processing. But
calls have to be added to the processing code to allow this,
calls that report progress and can yield time to the user
interface code.
</p>
<p> * Renamed the Build System application to include branch
information - "MnvM_b34". This makes it easier to deal with
the Stable and Development branches at the same time.
</p>
<p> * Prevent warning about unused code when using options
"-var-fullscreen 0 -fullscreen 1 -mf 1".
</p>
<p> * Added build system option
&ldquo;<a href="../develop.html#option_t">-t fbpc</a>&rdquo;
for FreeBSD on PowerPC. </p>
<p> * Added build system option
&ldquo;<a href="../develop.html#option_cpu">-t cpu</a>&rdquo;,
to provide a starting point for compiling a combination of
operating system and CPU that is not yet supported.
</p>
<p> * The Build System now generates a compile time check
in a configuration file when compiling with gcc for
x86-64 or x86-32, to make sure the 64 bit configuration
is not compiled with a 32 bit compiler, or vice versa.
This can result (especially when used with
"<a href="../develop.html#option_no_asm">-no-asm</a>"),
in a binary that almost but doesn't quite work correctly.
The check is for the wrong predefine being present, rather than
checking that the correct predefine exists, to reduce
the chance of incorrectly giving an error on an
unusual compiler version.
</p>
<p> * It does not make sense to combine the build options
&ldquo;<a href="../options.html#option_magnify">-magnify 1</a>&rdquo;
(to start with magnification on)
and
&ldquo;<a href="../options.html#option_magnify">-mf 1</a>&rdquo;
(to disable magnification),
and the Build System now prevents this.
</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.4
- <a href="https://www.gryphel.com/c/feedback.html">feedback</a> </i>
<br>
copyright (c) 2016 Paul C. Pratt - last update 8/28/2016
</div>
</body>
</html>