• March -93: Sound routines revised again. (I'm still not satisfied.) Sound routine names changed.
• 20/4 -93: Added utilities for modifying the background, namely SATPlotFace and SATBackChanged.
• 21/4 -93: Added two new simple demos, SATcollision and SATcollision][, both demonstrating collision handling. SATcollision uses the simple method using the kind field, while SATcollision][ uses the more powerful method with callback routines. It also demonstrates how SATPlotFace is used (by drawing applecores when apples are eaten).
The demos are not yet documented anywhere else. I hope they can clarify how collision detection can be handled.
• 29/4 -93: Utility program ICN#->cicn for users of Macs without Color QD.
• 30/4 -93: Added DisposeIcon, to dispose of "Faces". Fixed that old clipping bug that only appeared on small screens in "safe" mode. (Finally!) LoadIcon renamed to GetFace.
• 2/5 -93: Checks for depth change in the update event handler for the game window in HeartQuest and SAT Invaders.
• 15/5 -93: Added CustomInitSAT, ShowMBar and HideMBar. (Lots of new flexibility that we were missing before!)
• 17/5 -93: Revised collision detection. Added a SearchWidth parameter to ConfigureSAT.
• 18/5 -93: Changed AppSort to LayerSort, which now uses a special field, "layer". (If AppLong is for "free use", it shouldn't have this kind of specific function.)
• 20/5 -93: Sprites wider than 32 pixels work (again?)
• 22/5 -93: Improved error detection, making crashes less likely when running out of memory. Renamed MakeSoundHandle and MakeNamedSoundHandle to SATGetSound and SATGetNamedSound. Added SATDisposeSound. Documented SATSoundEvents. (Oops.)
• 30/5 -93: Added pattern utilities plus SATDrawPicts. Revised sound code: somewhat safer, SATSoundEvents no longer needed (usually).
• 31/5 -93: Fixed a bug in SATminimalC. µRuntime.π is now a file of its own.
• 2/6 -93: Bugfix in "KindCollision" collision detection. The "kind" is now modified before calling the HitTasks (which means that the HitTasks can change it back, if desired).
• 10/6 -93: Bugfixes in the sound routines. New, experimental sound calls.
• 11/6 -93: CopyBits replacements, SATPlotFaceOnScreen, configurable sprite record size.
• 17/6 -93: Resources for ReportStr and QuestionStr no longer necessary.
• 18/6 -93: Lower memory consumption, rebuilt Face structure. Fixed bug that caused 8 pixel wide icons to crash old Macs.
• 19/6 -93: Fixed a bug that caused invisible sprites to draw in the screen. Fixed another bug that finally allows SkipSAT to work. Cleaned up, speeded up a little bit.
• 23/6 -93: Speeded up 256 color "safe" graphics a lot. Changed ConfigureSAT in order to make it work from C.
• 24/6 -93: Revised a number of calls to accept a GDHandle. Added SATMakeOffScreen, SATDisposeOffScreen and two color-only calls from Apples technote "Princincipia Off-Screen Drawing", all for making extra offscreen buffers. Added SATSetPort calls.
• 26/6 -93: Dithering icons for 4-bit graphics (usually looks a lot better when an icon is drawn for 8-bit).
• 27/6 -93: A slight overall speedup (due to an operation that I did too many times).
• 29/6 -93: 4-bit graphics improved. Fixed bugs in SATPlotFaceOnScreen.
• 4/7 -93: Fixed a bug that took a whole week to find. (Phew.)
• 13/7 -93: Fixed a bug in fast b/w graphics. (SATCopyBits on big areas didn't work.)
• 21/7 -93: Moved over the manual to MS Word (to make table of contents and formatting easier). I'll make a MacWrite copy available somewhere for the few who don't have something that can read MS Word.
• 27/7 -93: Added support for MACE-compressed sounds (except when using Sound Driver). (Due to a bug in Apple's Sound Manager, I have a timeout for the sound channel, and that timeout had to be calculated differently for compressed sounds.)
• 31/7 -93: Fixed keyboard shortcuts (return and command-period) in the message boxes (ReportStr and QuestionStr).
• 31/8 -93: Face from PICT works in 1-bit and 8-bit only. (Not in 4-bit yet.) Second screen support fixed.
• 16/9 -93: Better error checking - found a number of places where out-of-memory conditions could cause crashes, and fixed it.
Added KillSAT for disposing everything except FacePtrs, sounds and SpritePtrs (making it possible to re-init SAT in another configuration).
Added SATInstallEmergency, for custom emergency routines (i.e. save game) to be run before quitting due to an error.
Started cleaning up capitalization. (Procedures should be capitalized, variables not.)
• 4/10 -93: Time for release! Reorganized files in order to have C and Pascal versions in the same folders, and to let C users move the lib and SAT.h to the Think C folder without trouble. Some files were renamed.
––
• Dec -93: Major revision!
Introduced NewFace, ChangedFace, SetPortFace, SetPortMask to allow faces to be loaded from any source.
Faster 1-bit graphics (but uses more memory).
Revised all direct-to-screen routines to allow for arbitrary sprite sizes.
Offscreens use less memory.
Faces do no longer have to have widths divisible by 8.
SAT.lib has been split into two libraries. (It has grown too big for one library!)
InitSAT and CustomInitSAT no longer return WindowPtrs. They set the global SATwind instead.
SAT Invaders source was cleaned up and better commented.
Error handling in the sound module revised: you can now get errors reported to a procedure of your choice, or choose to ignore them. (Might be better than getting dozens of alerts when there's no free channel.)
Error messages and button names can be customized, in order to make programs in other (human) languages.
Support for scrolling games. (Added beSmart flag to CustomInitSAT, and gave the synch procedure the option to disable all drawing on screen.
Fixed a bug that caused an "unimplemented trap" error when running on a color capable Mac without 32-bit QD (e.g SE/30 and IIcx with systems before 7.0 and without the 32-bit QD init).
SATCollision and SATCollision][ renamed to Collision and Collision][. (Almost all folders had names starting with SAT, which is a little bit impractical.)
Most globals are in the record gSAT, to get a firm naming standard and to prepare for environment switches. (E.g. SATwind is now gSAT.wind, ourDepth is now gSAT.initDepth.)
• Jan -94: More fixes. Bug fix in the scrolling demo. The scrolling system works nicely, but there is a risk that the wrong device is set. Apparently, some SAT routines fail to restore the device properly.
• Feb -94: Put back the old 1-bit graphics; the new took too long to load on old Macs, and the speedup was marginal if at all noticeable. Unfortunately, other changes has made the old routines useless, so they have to be rewritten…
• 1/3 -94: 1-bit graphics works on '020+, but I'm not sure about 68000 yet. Allocation of 1-bit offscreen grafports now include a rather ugly hack to give us some margins (which makes the blitting routines simpler and faster). I hope this won't bite us too often.
• 10/3 -94: Finally, I could try SAT with Symantec C++ (i.e. Think C 6), and it took only about half an hour to get around the problem that's been bugging people for over half a year – and without any recompiling; Anyone with a copy of Think C 5 around could have done it! And it was a bug in Symantec's linker, not a bug in SAT.
• 27/3 -94: Fixed a serious bug in SATDepthChangeTest. Put "k" before constants.
• 28/5 -94: Fixed two bugs that caused problems on Macs without color QuickDraw. Added code that makes mask regions available when we run in b/w (was previously only created when running in color).
• 30/5 -94: New demo: Collision ///. Minor corrections in FaceFromPICT.c.
• 2/6 -94: Multi-channel sound. Changed parameters to SATCopyBits to Rects, to make it more similar to CopyBits.
• 10/6-94: Modified SAT Invaders; hide menu bar, nicer start of each level.
• 24/6-94: Some new backdrops. Added SetPortFace2 to make sprite scaling easier. Added scaling demo to Collision ///.
• 25/6-94: Added KillSAT demonstration to Collision ///.
• 26/6-94: Changed the order of operation in RunSAT, so collision detection comes before drawing. (Yes, I know it was stupid to draw before checking collisions.) Warning: THIS MIGHT HAVE NOTICEABLE EFFECTS ON SOME PROGRAMS - usually for the better, but I'm warning you just the same! Made a SAT version of Offscreen Toys, with five marbles in a bowl. Enough collision-demos yet? :-)
• 27/6-94: SAT 2.1. Offscreen Toys SAT not included at this time.
• 28/6-94: Added destructTask to the sprite structure. Cleaned up the manual a bit.
• 30/6-94: Fixed Offscreen Toys SAT. (Silly me, I had forgot that offscreens must be word-aligned to the screen, not just byte-aligned.)
• 1/7 -94: Fixed a bug in GetFace/DisposeFace (memory leak on color Macs). Updated SAT.h, replacing ProcPtr with proper pointer types.
• 2/7 -94: Some more fixes, released "cicn" resources when not needed, added SATDisposeCicn. Corrected Collision/// (to make it re-scale on depth changes).