Run Time System Changes

From SCI Wiki
Jump to navigationJump to search

Run time system changes

In reverse chronological orde.
 


Ver 1.001.097 - 8/23/93

Chris Smith

fileCopy was added as a new sub-function to the kernel FileIO function. Two arguments are

required: source-file name and destination-file name. A zero return indicates success; a

non-zero return indicates failure. Possible DOS error return codes:

2 file or path not found
9 file locked
13 file specified is a directory or file is read-only or share violation
17 file can't be created
24 too many files opened
28 device is full

 


Ver 1.001.095 - 5/25/93

Chris Smith

The command line argument -? (or any invalid argument) when passed to the non-debug

interpreter (SIERRA.EXE) will display the internal version stamp number associated with a

game. Additionally, an interpreter-game version mismatch or failure to version-stamp a

game will result in immediate (rather than delayed) termination of the interpreter.
 


Ver 1.001.094 - 5/25/93

Martin Peters

Changes where made to allow transparent views. Color 254 is now used to represent that

the color in the v map should be remaped via the remapBuffer which is set by a kernel

call. The remapBuffer is loaded with either a range modification (all color in range x to

y are inc/dec by z) or a percent lumination (all colors remaped to best matched of x

persent of color.) if no remaping is specified 254 is treated as skip. A depth of

transparency was added and works on a priority depth.

Example:
a 254 color view at priority 8 is placed o==
Ver a picture with both pri of 7 and 3.

if the remap has no depth specified then the remap view remaps all of the picture below

but, if a depth of 2 is specified then the view will modify the priority 7 or even pri 6

color in the vmap but not colors a 3 or even 5 will be remaped. this allow a depth of

field translation.

the call value is kernel 123 and is call with the following parms
call type

0 = remap by percent
1 = remap by index
2 = remap off

if type = 0<br /.
  follow by

percent illumination

[depth of field]

if type = 1<br /.
  follow by

start range

end range inclusive
remap quantity (how much to add or subtract from index)
depth of field

if type = 2<br /.
  no other var.
 


Ver 1.001.092 - 4/27/93

Chris Smith

SCI.EXE is now the only version of the interpreter with debug. It can be used to run both

file-based games and volume-based games. (Actually, there is a temporary version of

SCI.EXE called SCITESTR.EXE which is used to run the tester... it will soon/eventually be

deleted when the SCI system classes can once again manage menu bars.)

SIERRA.EXE is now the only version of the interpreter without debug. It can be used to

run both file-based games and volume-based games.

The dongle-specific version of the interpreter (BETA.EXE) is defunct. We now use

STAMPVER.EXE to encript a trackable version stamp into each prerelease version of a game

before it is sent out to beta testers, reviewers, etc. SIERRA.EXE will timeout with an

error if STAMP==
Ver has not been run against it and the corresponding game volume

resource.
 


Ver 1.001.091 - 4/13/93

Ed Critchlow

Added support for the ARIA sound board to use EMS memory. The DoLoad function in both

fileload.c and volload.c was modified to use EMS memory if sound patch 10 is being used

(the ARIA sound patch). Also fixed a bug in memmgr.s function GetHandle which trashed bp.

Sound.c was modified in the InitSound function to check if the ARIA dri==
Ver is

being used and if it is call DoLoad. Sci.c was changed slightly to make sure InitSound

made a call to ARM before ARM got the rest of memory.
 


Ver 1.001.090 - 4/13/93

Chris Smith

ARM audio buffering is always used if ARM is available. The 'audioSize=nX' convention

described in version 1.001.086 reverts to 'audioSize=nK' where n is the number of K-bytes

of conventional memory to dedicate to audio buffering only if ARM is not available

(default is 4K).

An immediate 'done' cue is generated if there is a digital sample for a particular sound

number but no midi equivalent and the user is not using a DAC driver.

If a digital sample is specified for the Init of a Sound Object and the user is not using

a DAC dri==
Ver and subsequently a midi resource is specified for the Play of that

same Sound Object with no intervening Init... the interpreter will effect a (re)Init of

the Sound Object just before executing the Play.
 


Ver 1.001.89

Mark Wilden

More pre-SCI32 cleansing. Removed all externs, externdefs and protos (except for local

functions) from source files and put them in header files. Moved global variables from

SCI.C to their appropriate source files, and their declarations from SCI.H/.I to the

appropriate header files. Moved declarations from SAVEVARS.H/.I to their appropriate

header files, so a source file only needs to include the headers that it's interested in,

instead of all the headers that the old SAVEVARS.H/.I depended on.

Split MOUSE.S into MOUSE.C and MOUSEASM.S. Split INTRPT.S into INTRPT.C

Changed most variables that began with uppercase to lowercase. Put typedefs with struct

definitions.

Removed all warnings generated by Borland C++ and included a special symbol that BC++

needs. The interpreter is now completely BC++ compatible.

Removed unused global and local variables and functions (saving hunk and a little heap).

Put Send() inline instead of calling a function.

Removed unused parameters, such as the palette parameter to DrawPic, the mode parameter to

InsertPalette and RSetDanPalette, the realYDim parameter to ScaleDrawCel.

Fixed bug where GetCelWide, GetCelHigh, GetCelXOfs, GetCelYOfs and SetNewDim didn't

protect DI.

118 files changed.
 


Ver 1.001.087 - 3/29/93

Chris Smith

Audio resources are now built into two distinct Volumes via MAKEMAPS.EXE: RESOURCE.SFX for

.AUD and .WAV files (typically sound effects) and RESOURCE.AUD for @*.* (typically

speech), #*.* (SOL syncs) and _*.* (BSTAR rave syncs). RESOURCE.SFX should always be

copied at install time to the current directory just as RESOURCE.000. RESOURCE.AUD may

exist in any directory on any device so long as an 'audio=' line exists in RESOURCE.CFG to

locate it.

Note: There is a new MAKEMAPS.EXE (dated 3/29/93 or later) and a new AUDDCOMP.EXE (dated

3/29/93 or later) corresponding to this version of the interpreter.

 


Ver 1.001.086 - 3/23/93

Chris Smith

Added support for buffering audio samples to ARM memory. Currently, audio ARM allocation

is fixed at 32K with an additional 6K of conventional memory allocated for audio DMA and

IO transfers. ARM audio buffering is activated by including the where-file or cfg-file

directive 'audioSize=nX' where n is the number of K-bytes of conventional memory to

allocate in the event of ARM allocation failure (e.g. audioSize=12X).

Note: There are new audio drivers (dated 3/23/93 or later) corresponding to this version

of the interpreter.


Mark Wilden

Added support for using ARM memory separately from resource management. Added functions

AltResMemAlloc() to get memory, ARMRead() and ARMWrite() to access it, ARMFree() to

release it, and ARMCritical() as a semaphore to determine if we're in ARM code. ARMRead()

and ARMWrite() allow moving memory to/from an offset in the ARM allocation.

Added Get32KEMS() and Free32KEMS() to allow access to 32K of EMS memory that will remain

at the top of the page frame and so can be accessed like normal DOS memory.
 


Ver 1.001.082 - 3/15/93

Mark Wilden

More pre-SCI32 cleansing. Broken PMACHINE.S up into PMACHINE.C and PMACHASM.S. Broke

START.S up into START.C and STARTASM.S. Moved dongle code to DONGLE.S. Did more cleanup

as below, including culling and sorting #includes, removing unused variables and

functions, and moving externs into the correct header files. Not released.
 


Ver 1.001.081 - 3/11/93

Chris Smith

The kernel function 'KDbugStr' will scroll text to a second monitor. It takes a single

argument: a near sring to display or 1 to select the lower text page or 2 to select the

second text page or 0 to clear the current text page.

The 'xlate=' directive can be used to display the Enlish equivalent of foreign text (or

visa-versa) to a second monitor.

If a resource can not be found or is incorrectly flagged and the user elects to abort the

game, debug (if present) will be activated before quitting.

The precedence of alternate resources relative to patches is dependent upon the location

of RESOURCE.MSG in the list of patchDir specifications. Only patches found in 'earlier' or

the same directory as the equivalent resource in RESOURCE.MSG will be used.
 


Ver 1.001.080 - 3/10/93

Mark Wilden

The main thrust of these changes was to move some functions from assembly files to C files

for ease in porting, especially to SCI32. In so doing, I did some cleaning up, fixed a

bug or two and added some minor features.

Moved many externdefs out of .S file and into .I files where they belong. Removed

LINT_ARGS from many header files, as well as unnecessary 'extern's on function

declarations. Changed some function definitions to use ANSI argument lists instead of

K&R. Sorted many lists of include files so that duplications can be seen and to avoid

order dependencies. Header files should include all the header files they need, and no

more. Moved some typedefs from TYPES.H to their appropriate header files. For instance,

Obj is now typedefed in OBJECT.H. Passing code through BC++ let me see some local

variables that weren't being accessed, which were removed. Added some casts to remove

conflicts between signed and unsigned character comparisons, and comparing signed values

to -1.

Profiling code was made conditional on PROFILER, which reduces the size of the code when

profiling is not used (as now).

If the user misspells the name of an object he is inspecting or breaking on, he can edit

the name, instead of using memory location 0.

The send stack now shows the address of a disposed object instead of ???.

Moved some debugging functions from OBJECT.S to DEBUG.C. Moved other functions from

OBJECT.S to OBJECT.C. OBJECT.S was renamed OBJASM.S.

GetProperty and SetProperty now abort the program if an invalid property is accessed.

This change immediately made Animate() abort because it was still accessing the

nonexistent 'palette' property of View. Taking this access out will speed up Animate().

If you need to determine if a property is valid, GetPropAddr will return 0 if the property

is invalid. E_INVALID_PROPERTY was added to the error messages. MacGetPropAddr was

renamed GetPropAddrMacro so it wouldn't sound like a Macintosh function.

FreeHeap() wasn't saving DI, which sometimes crashed the program after resources were

viewed.
 


Ver 1.001.077

Mark Wilden

Moved PanicMsgOutput from DOS.C to ERRMSG.C. Cleaned out some LINT_ARGS from ERRMSG.C.

Chris Smith

The functionality of RESOURCE.MSG/MESSAGE.MAP has been expanded to permit resources of any

type. The MAKEVOLS -m option can be used to build these special files via the MESSAGE.TXT

file (which functions identically to the RESOURCE.TXT file). The expanded purpose of

RESOURCE.MSG is to serve as a collection of language-dependent resources. Consequently,

RESOURCE.000 should contain only language-independent resources. The sequence for

locating resources is (1) patch files; (2) RESOURCE.MSG; (3) RESOURCE.000; (4) load error.

Audio and sync resources can be queued up to 10 sequences deep via the new kernel calls

(DoSync QueueSync) and (DoAudio Queue). These two calls can be made in any order or

interspersed, but there must be one call to (DoSync Start) for the first sync and one call

to (DoAudio Play) for the first audio. The (DoAudio Play) call (and optional (DoAudio

WPlay) call must follow all related (DoAudio Queue) calls. A call to (DoAudio Stop) will

flush all audios queued and (DoSync StopSync) will flush all syncs queued.

(DoSound Stop) called directly or indirectly will only stop a dac sample if the sound

number matches the sound number of the sample playing. (DoAudio Stop) can be called to

stop any dac sample playing.
 


Ver 1.001.076 - 2/26/93

Mark Wilden

Added rename() function and (FileIO fileRename) kernel call.
 


Ver 1.001.073 - 1/15/93

Chris Smith

.WAV resources (Microsoft WAVE audio files) are now recognized by the interpreter; .CDA

resources (CD 'Redbook' audio files) are no longer recognized as such. .WAV resources can

co-exist in a game with .AUD and .SND resources. The order of selection for a particular

'sound' number is x.AUD then x.WAV and lastly x.SND.

Base-36 audio and sync files can now be included as patches. The designations 'audio='

and 'sync=' can be used in RESOURCE.CFG to specify all of the paths to scan for audio and

sync resources.
 


Ver 1.001.072 - 1/15/93

Chris Smith

Bug fix for the -w command-line option which existed since it was first coded but was only

unmasked by changes made in ==
Ver 1.001.071.
 


Ver 1.001.071 - 1/15/93

Chris Smith

New kernel call 'SetQuitStr' (= 135) takes one near string argument (typically a message)

which it will display at the DOS screen when the interpreter exits. If multiple calls to

SetQuitStr are made, only the last will be honored. The maximum number of characters

displayed will be 255.

An unrecognized command-line argument (such as -?) will result in the version number of

the interpreter being displayed (and, if it is a 'debug' interpreter, a list of valid

command-line arguments). The interpreter will then exit. This feature can be used

without any other files being present.

The CD-ROM drive is located via the AUDIO= line in the where or cfg file. If no such line

exists, then it is assumed that the current drive is the CD-ROM drive.
 


Ver 1.001.070 - 1/15/93

Chris Smith

Modified PatchDir syntax and all pertinent patch-management routines to permit more than

one path specification for locating resource patches. If PatchDir is omitted, just the

current directory will be used for locating patches; if PatchDir is specified then the

current directory will not be used for locating patches unless it is explicitly named.

Directories are scanned in PatchDir-specified order and duplicate resources are bypassed.

CD-ROM audio 'red-book' functionality is re-introduced in part into the interpreter.

Currently, the red-book dri==
Ver must be named 'AUDCDROM.DRV' and must be located

in the same directory as the audio dri==
Ver that was loaded. If no audio dri==
Ver was sucessfully initialized then no red-book audio can be played. .
 


Ver 1.001.069 - 1/12/93

Mark Wilden

Added capability to specify arbitrary characters in message text with \xx syntax.

Trapped | character in edit controls, since it's a control character for text output.

Added (Message MsgGetKey @vals) kernel call to retrieve the module, noun, verb, case and

sequence number of the last message retrieved by (Message MsgGet) or (Message MsgNext).
 


Ver 1.001.068 - 12/30/92

Larry Scott

Changed end point calculation for container polygons when OPT = 0.
 


Ver 1.001.067 - 12/15/92

Larry Scott

Put timing loops in the show styles for picture drawing. They were drawing too fast on 486

machines.
 


Ver 1.001.066 - 12/14/92

Mark Wilden

Added new Message kernel functions:

MsgGetRefNoun, MsgGetRefVerb and MsgGetRefCase, which return the appropriate value, or -1

if the message isn't found.

MsgPush and MsgPop which save the current iterator state, so that a sequence of messages

can be displayed without interfering with a previous sequence.
 


Ver 1.001.065 - 12/10/92

Larry Scott

Fix on avoider for container polygons. Going from one container to another. See main1.c

and test76.bat.
 


Ver 1.001.064 - 12/08/92

Larry Scott

Changed sci.c method of getting the resource.cfg directory for Terry McHenry.
 


Ver 1.001.063 - 12/07/92

Larry Scott

Changed getpath.c and getpath.h to fix container polygons. Also changed some code for

clarity.
 


Ver 1.001.063 - 12/07/92

Jack Magne

Terry M. made changes to sci.c and savegame.c where saveDir is set to where the where file

is located. .
 


Ver 1.001.062 - 12/02/92

Larry Scott

Made some changes to getpath.c for container polygons. See Main55.c and test75.bat in the

regression test suite.
 


Ver 1.001.061 - 11/25/92

Larry Scott

Made some changes to getpath.c for container polygons. In some cases the path generated

did not extend as far as was possible. See Main54.c and test74.bat in the regression test

suite.
 


Ver 1.001.061 - 11/18/92

Larry Scott

Changed the keyboard polling from 6 ticks to 1 tick. This was to prevent animation cycles

from going by while there was a keyboard event waiting to be posted. Along with this

change is a change to the audio drivers to intercept the keyboard events to signal the

audio dri==
Ver that a keyboard interrupt is in progress. This is because there

will always be a small window where the audio dri==
Ver can be invoked while in the

keyboard dri==
Ver If this interpreter is used without the new drivers lockups will

result.
 


Ver 1.001.060 - 11/11/92

Ed Critchlow

Made local coordinates global for dialog box text selectio.
 


Ver 1.001.059 - 11/10/92

Ed Critchlow

Fixed a bug caused by not setting "acc" in kernel.c onl.
 


Ver 1.001.058 - 11/06/92

Jack Magne

Fixed a bug caused by the previous fix regarding stopUpdated, scaled views.

Ed C.

Created the ability to select words in dialog box with mouse..
 


Ver 1.001.043 - 10/21/92

Jack Magne

Fixed a bug where a stopUpdated, scaled view fails to erase itself from the screen when

its dispose method is invoked.
 


Ver 1.001.042 - 9/1/92

Martin Peters

Added new random number generator to math.s. It now uses a 32 bit seed and returns a 32

bit value. Changed Kernel.c to use the middle 16 bits of the 32 bit random as a

multiplier on the range of value. once the range is scaled by the random 16bits it is then

shifted left 16 to obtain a random value between 0 and (range - 1) this is added to the

low ofset to obtain a random value between low and high. Also the seed set and retrievel

is done by passing a single 16bit pointer to a 32 bit location @(array size 2) in the

first parameter to set or in the third to recieve the seed.
 


Ver 1.001.041 - 8/27/92

Larry Scott

Added default cursor view to the interpreter. If 998.v56 exits, loop 0 cel 0 of that view

will be the default cursor. If not the default cursor will be the cursor in the dri==
Ver.
 


Ver 1.001.041 - 8/27/92

Larry Scott

Fixed bug in getpath.c. It concerned a BAP polygon within a TAP polygon..
 


Ver 1.001.039 - 8/12/92

Larry Scott

Added error check for returning heap at an odd address.
 


Ver 1.001.039 - 8/12/92

Chad Bye

Changed SAVEGAME.C to use PK Implode compression instead of RLE.

Added two new kernel calls: Record and PlayBack. All sci events and mouse movements can

now be recorded and saved to a file for playback.
The format for these functions is:<br /.
  (Record flag <filename>)<br /.
  (PlayBack flag <filename>)
flag=TRUE turns the function on, flag=FALSE turns it off.
If a filename is not supplied, data is written to sci_evt.mac.
The macro file is a text file which can be edited if necessary.
The format for the file is:<br /.
  eventPollCnt, event type, event message, event modifiers, event y, event x
There must be a blank line seperating each event.
These functions will only work in the debug interpreters.<br /.
 


Ver 1.001.038 - 8/11/92

Mark Wilden

Upped message stack size to five entries..
 


Ver 1.001.037 - 8/11/92

Martin Peters

Added Fix to scaling. Changes included from IBMNEXT. changes to scale.c to calculate ne

offset values within cells. Changes to CELS.S to use new scaled offset in calculating cel

positions and procedures to return current offset values. Finally changed animate to

include new calls to these procedures to scale offsets.
 


Ver 1.001.036 - 8/11/92

Mark Wilden

Support ME 4 message file format. Support reference fields, where one message points to

others.
 


Ver 2.000.014 -

Jack Magne

Improved operation of the SetCursor call that restricts the cursor to a rectangular area.

.
 


Ver 2.000.013 -

Martin Peters

Modified animate to scale the x and y offsets of scaled cels so they are drawn relative to

a proportional x and y origin point in the cel. This removes the hopping look for cels

with movers.
 


Ver 2.000.011 - 7/27/92

Chad Bye

Added text codes to support multi-color and multi-font text messages. Two new kernel calls

were added for this: TextColors and TextFonts. TextColors and TextFonts are used to

initialize the colors and fonts that can be used in text messages. The format for the new

functions is:<br /.
  (TextColors <color 0> <color 1> <color 2> ...)<br /.
  (TextFonts ...)
The following text codes can now be inserted in any string:<br /.
  |c#| - Text following this code will be color # in the text colors table.<br

/.
  |c| - Text following this code will be the default window color.<br /.
  |f#| - Text following this code will be font # in the text fonts table.<br

/.
  |f| - Text following this code will be the default window font.<br /.
  || - Prints the character '|'

Changed ERRMSG.C. There is no longer an ErrMsg function. Panic and RAlert have both been

changed to accept a message number (which is loaded from INTERP.ERR) instead of a string.

These functions also have a variable length argument list, so formatted strings can still

be used.

Added many error messages to INTERP.ERR because of the above change.
 


Ver 1.001.029 - 6/1/92

Chris Smith

Audio samples can now follow the same NOUN-VERB convention as Msg resources and/or follow

the standard resource-naming convention (e.g. 123.AUD). A makevols-like utility named

MAKEMAPS.EXE is used to combine individual audio samples into room-specific .MAP resources

which are then built into volumes in the same manner as all other resource types (*.AUD

samples are built into 0.MAP). RESOURCE.AUD is generated in the process which can be

split across floppies and recombined at install-time just as RESOURCE.000.

CFG/WHERE files now recognize the individual lines audioSize=?K (default is now 8K),

audioDisk=YES or NO (default is YES; specify NO if your game does not stream audio from

disk -- that will save you half-a-K of hunk) and audioPort=xxx (default is 220 hex; this

line only has meaning to Sound Blasters). The parameters 'size=', 'disk=' and 'port='

(which use to be on the audioDrv= line) are no longer recognized.
 


Ver 1.001.028 - 6/1/92

Mark Wilden

Fixed ERRMSG.C to allocate larger buffer for preloaded error messages.
 


Ver 1.001.027 - 5/29/92

Mark Wilden

Preload error message for ARM checksum failure to avoid memory allocation while displaying

it.

INTERP.ERR changed.

5/28/92

Larry Scott

Added new function to PalVary kernel call. PALVARYTARGET will allow a custom palette to be

inserted into the target palette.

The DrawControl routine now looks at the NoShowBits flag instead of the PicNotValid

flag.
 


Ver 1.001.026 - 5/27/92

Mark Wilden

ARM now keeps its pageMaps in hunk instead of heap, saving even more heap. Code was

generalized to remove duplication, which saves hunk.

5/28/92

Mark Wilden

Changed name of KCheck() to KResCheck().

5/26/92

Larry Scott

Changed kernel call to KPicNotValid to set NoShowBits instead of PicNotValid. Also

KDrawCel now looks at NoShowBits to determine if ShowBits is to be called. The SCI

programmer show not be modifying PicNotValid.
 


Ver 1.001.025 - 5/22/92

Mark Wilden

Improved ARM checksum failure message. If ARM detects that the data it retrieves from

EMS/XMS/Extended memory is not the same that it wrote, it aborts with a message telling

the user to run Install and choose not to use his extra memory.

INTERP.ERR changed.
 


Ver 1.001.024 - 5/20/92

Mark Wilden

Fixed ARM bugs introduced by Jeff in the MASM 6.0 conversion and Tom Shimada in

conditional compile for NEC9801. The first reversed an error condition when running with

no memory manager. The second didn't store data when using XMS (as with QEMM with the

FR=NONE parameter).

Made ARM pagemaps dynamic, which will save at least 2K of heap.

Removed VRAM, which will save another K.

Generalized some ARM code, which will help hunk.

Made ARM checksumming always on. If ARM detects that the data it stored is bad, it will

Panic out, instead of letting things proceed with the bad data.
 


Ver 1.001.023 - 5/15/92

Larry Scott

Changes to allow PalVary work for save, restore and restart.
 


Ver 1.001.022 - 5/12/92

Mark Wilden

Fixed several bugs in FILEIO.S where drive letters were assumed to be in lower case and

where RGetFreeSpace didn't return default drive space when passed 0.
 


Ver 1.001.021 - 5/11/92

Jack Magne

Added a special effects cursor that can be used for various effects like magnification and

see-through.
 


Ver 1.001.021 - 5/11/92

Larry Scott

Added code to make PalVary work under the ega640.drv dri==
Ver The change will

always happen instantly under EGA. Also added the variable NumberColors that's set by the

video driver.
 


Ver 1.001.021 - 5/11/92

Chris Smith

Added three new where/config file arguments that are placed on the audioDrv= line:

size=nK (default n is 4) disk=x (default x is YES which means audio samples can be played

directly from disk; NO will cause the audio drivers to purge direct-disk play support,

saving about 1K memory space) port=x (default is 220 hex).

Added static buffer to audio support that does not span a 64K boundary so that continuous

DMA can be utilized for sample playback. The actual buffer allocated depends on the size=

argument as described above.

Added kernel function KCheck (works just like KLoad but returns TRUE/FALSE instead of

handle if the specified resource(s) can be located -- no read will take place).
 


Ver 1.001.021 - 5/4/92

Larry Scott

Added debug commands k and K which break on a specific kernel call. k is break once and K

is a sticky break. When you enter k or K you will be prompted for the specific kernel call

number. i.e. 113 is KPalVary.
 


Ver 1.001.020 - 5/5/92

Corey Cole

Fixed a bug in script.c which caused crashes in Mixed-Up Mother Goose and potentially

corrupted memory in other games.
 


Ver 1.001.020 - 5/4/92

Larry Scott

Expanded the functionality of CheckFreeSpace. See below for a description of the kernel

call:

<syntaxhighlight lang="c">

if only path argument

 { 
 Return boolean, there is enough free space on the disk in 'path' to save a game. 
 } 

else

 { 
 If Arg2 = 0 
    { 
    Return the amount of space needed to save the game in K 
    } 
 if Arg2 = 1 
    { 
    Return the amount of free space in K up to 32Meg 
    } 
 }

</syntaxhighlight.
 


Ver 1.001.020 - 5/4/92

Larry Scott

A bug fix was made to MergePoly in getpath.c the bug fixes regression test #101 in the set

of regression tests for getpath.c.
 


Ver 1.001.016 - 4/29/92

John Magne

This version includes Corey Cole's new fill routine which is designed to save heap

storage. Also Larry's Pal Vary scheme has been made more accurate o==
Ver short time

intervals. I have included fixes for the polygon based avoider and the ShakeScreen kernel

call. Chris Smith has fixed a bug that resulted in sampled sound calls returning

false information to the apps programmers.

Corey also eliminated the "Brush" routine in DrawPic, which will now give a PANIC error

message, and made changes to the debug routines to reduce stack usage (including some

changes made by Larry).
 


Ver 1.001.015 - 4/24/92

John Magne

This version includes Chris Smith's fix to allow volume based interpreters to work

with message files. Dan Foy has fixed a bug that caused the interpreter to trash views

saved with q3 compression.
 


Ver 1.001.014 - 4/21/92

John Magne

Pal Varying scheme will now work correctly when running the interpreter with the -p option

in effect.
 


Ver 1.001.013 - 4/21/92

John Magne

Fixed bugs to allow the Pal Varying scheme to work smoothly on room changes.
 


Ver 1.001.012 - 4/20/92

John Magne

Fixed minor bug in the Brush sub function of routine of DrawPic. Was causing occasional

lockups on room changes.
 


Ver 1.001.011 - 4/17/92

John Magne

Fixed a bug in midi.s that was resulting in writing data to memory reserved for the

operating system. This was causing various QEMM exceptions. We are still using the pre

Masm 6.0 version of midi..
 


Ver 1.001.010 - 4/15/92

John Magne

Retrieved the last version of midi.s and midi.i that used Masm 5.1 to attempt to remove

bugs created by the conversion to Masm 6.0.
 


4/6/92

John Magne

Fixed problem that resulted in overlays being drawn backwards.
 


4/1/92

Mark Wilden

Added MsgSize function to Message kernel call. The calling syntax is<br /.
    (= size (Message MsgSize module noun verb case sequence))
The function returns the size of the buffer needed to store the message, including the

trailing NULL. A blank message returns 1. A missing message returns 0. Stage directions

(all caps inside parentheses) are included in the length

Fixed Panic message.
 


3/15/92

John Magne

Added support for the dynamic scaling of views. Thus views can be sized depending upon

their position on the screen or under direct control of the programmer.
 


3/3/92

Jeff Stephenson

"Make"ing the system now does a number of version-control related tasks. First, it creates

the file 'info.c' including the VCSID of the person making the interpreter, the date/time

of the make, the version number, the path of the directory in which the make is executing,

and a comment from the file .\comment\comment. Make is then invoked recursivly after this

is created and since all interpreters depend on this file, all interpreters are then

rebuilt.

Once the interpreters have been successfully built, all version controlled files in .\vcs

are stamped with the current version number. While this takes some time, it allows the

source for any module to be retrieved by version number.

Two utilities are required for this process and should be in your execution path (they are

present in i:\interp\sci\ibm):

inc_it: Increments the last three digits of a dotted version number in a specified

file.

  inc_it version.dat

increments the version number

in 'version.dat'.

oneline: Writes its parameters to stdout as a single line. Any string bracketed by '@'

is interpreted as the name of a file which is to be included in the output line. Thus, if

the file 'test.dat' consisted of the string "is a", the command

  oneline This @test.dat@ test

would produce

  This is a test

on stdout. The '\' character works as an escape

character, allowing an '@' to be included, if necessary.

Borland C++ source code for these utilities is in i:\interp\sci\tools\utils.

The assembly language preprocessor for Intel code (as.exe and ap86.exe) are now obsolete.

All assembly source code for the interpreter has been converted to use the MASM 6.0

structured assembly constructs, which are far superior.

**** PLEASE use these constructs rather than labels and jumps! ****


If you don't have a copy of MASM 6.0, get one from Larry.
 


8/08/91

Chris Smith

Restructured map file layout: All resource entries are ordered by type and subordered by

id; bits pertaining to type are removed from each individual entry allowing ids to ranged

up to 65536; index table at head of map file indicates where each resource type group

starts -- its format is 1-byte resource type followed by 2-byte offset from start of map

file to first resource of that type -- indexes are also sorted by type but can not be

indexed into since gaps may arise from no resources of a specific type; the last index is

followed by a byte of 255 and 2-bytes of map file size (so that a specific resource entry

can be found by binary searching its type group).

Auto-patch table generation: A table of (byte)types/(word)ids is generated upon game

start or restart so that resource patch search begins with a memory-resident table look-up

rather than a disk(disc in the worse case of CDROM) search. A .cfg file entry of

patchDir=directory indicates where feed for the table generation may lie (no patchDir

entry defaults to current directory).
 


7/11/91

Mark Wilden

Added MSG resource type. These are used in text versions of games to store text messages

that are mirrored in sync and audio files in CD versions. Added<br /.
  GetMessage(int module, int talker, int msg, char* buffer)
to access this resource from the interpreter and a KGetMessage() wrapper to access from

SCI.
 


5/27/91

Pablo Ghenis

Internal rearrangement of functions and variables in SCI modules (both C and assembler) in

order to improve code reusability, size and speed (yes. there IS a free lunch!). This set

of changes affects i:\interp\sci, which contains programs SCI and MAKEVOLS. To get the

full benefit of these changes, they should also migrate as soon as possible to i:\interp

\sci\sc and i:\interp\sci\parscomp.

The following conventions are now observed (anyone linked with the generation and

compilation of non-compliant code will be summarily executed!):

  1. There are no extern declarations within .c or .s files, only within .h and .i files.

There are no duplicates.

  1. Each public symbol (variable or function) is declared in a header file with the same

name as the source file that provides it. For example, Panic is a procedure provided by

start.s, so it is externally declared in start.i (for .s files to include) and also in

start.h (for .c files that invoke Panic).

This will make it easier to find things in the interpreter directory, since all one has to

do is type:<br /.
  GREP foo *.h *.i
to find out where "foo" is defined, since the source file is guaranteed to have the same

name as the header file that declared it.

  1. All symbols that exist in the standard C header files (ie. those provided by Microsoft

C) are declared in a file that has the same name. For example, our SCI directory contains

a file named STDLIB.H that contains the prototype for atoi(strptr s), since this is where

atoi is found in the standard header file set. To comply with (2) there is now a stdlib.c

that resolves all externals declared in stdlib.h

  1. This will make it much easier to share source modules among the different tools we use,

most of which include the standard header files (except the interpreter!). For example, if

we now include our own version of string.h we are guaranteed NOT to redefine symbols

provided by other header files, unlike the previous situation where the order of inclusion

was critical to make sure that we "won" in case of redefinitions.

  1. All symbols that are local to a module are now declared "static near", which makes code

smaller AND faster. All external symbols are declared global. Every symbol is explicitly

tagged as EITHER global OR static near, to improve readability. The interpreter is now

about 2300 bytes smaller, and a bit faster as well.

  1. All programs now compile and link with ZERO warnings in i:\interp\sci. This will prevent

new warnings from being overlooked, since there are not supposed to be any.
 


3/14/91

Mark Wilden

Updated from foreign language interpreter. Changes involved calling StrSplit where

appropriate, different parameters to TextSize, StrSplit and GetFarText, adding NEC9801

conditional code.

Files changed:

DEBUG.C
DIALOG.C
FARDATA.C
KERNEL.C
LANGUAGE.C
MENU.C
TEXT.C
WINDOW.C
KERNDISP.S
FARDATA.H
KERNEL.H
LANGUAGE.H
TEXT.H.
STRSPLIT.C/.H was renamed LANGUAGE.C/.H. </blockquote.
 


3/1/91

Mark Wilden

soundDrv entry in WHERE and RESOURCE.CFG enhanced to allow a hex number following name of

the dri==
Ver (with whitespace in between), which initializes soundPort variable.
 


2/22/91

Mark Wilden

memoryDrv entry added to WHERE file and RESOURCE.CFG. If it's NO or no, ARM isn't used.

This for the benefit of INSTALL. The -a flag is still available. Changed SCI.C and

RESNAME.C.
 


2/11/91

Mark Wilden

VGA320.DRV now returns 256 on Detect (instead of -1).
 


1/30/91

Mark Wilden

Support for multiple extensions in where files added. OpenResFile added to RESNAME.C

which looks for resources with various extensions as well as in multiple paths.
MAKEVOLS reads a where file to find its resources. Routines common to FILELOAD and VOLLOAD moved into RESNAME. All programs default to new

resource names.
SCI*.EXE defaults to using ARM, and -a turns it off. Removed useNewResNames parameter

from ResNameMake, which accounts for most of the changed files.

Files changed:

DOS.C RESOURCE.H
RESNAME.C
VOLLOAD.C
FILELOAD.C
SCI.C
DEBUG.C for SCI*.EXE
MAKEVOLS.C
MAKEVOLS.MAK for SCI.EXE
SC.DEC UPDATE.C
VOCAB.C
SC.H
INPUT.C
OBJCODE.C
CLASS.C
TEXT.C
SC.C for SC.EXE
VC.C
DC.C
CTC.BAT
GC.BAT
MKVOCAB.GAM
MKVOCAB.SYS for parse tools. </blockquote.
 


1/16/91

Mark Wilden

Support for extended memory and XMS memory ARM types has been added.

Files changed:

ALTRES.C.

Files added:

XMS.S
EXTMEM.S


1/14/91

Mark Wilden

A different way of naming resource files was added (0.v56 instead of view.000, e.g.).

Where==
Ver possible, programs call ResNameMake() to create the name based on the

presence of the -N flag.

Files changed:

FILELOAD.C
DEBUG.C
RESOURCE.H
SCI.C
VOLLOAD.C
RESOURCE.C DOS.C
RESNAME.C (added) for SCI*.EXE;
UPDATE.C
VOCAB.C
TEXT.C
OBJCODE.C
CLASS.C
INPUT.C
SC.C
SC.H
SC.DEC for SC.EXE;
MAKEVOLS.C
VC.C, DC.C
CTC.BAT
GC.BAT
GC.LSP (!)
MKVOCAB.GAM
MKVOCAB.SYS. </blockquote.
 


1/09/91

Mark Wilden

ARM supports multiple alternate resource memory types. In addition to VRAM, EMS support

was added.

Files changed:

ALTRES.C
VRAM256.S
RESOURCE.H.
Added EMS.S
ALTRES.I. </blockquote.
 


1/04/91

Mark Wilden

All references to VRAM have been moved into ALTRES.C, the alternate resource memory

manager. This involved changes to START.S, RESOURCE.C/.H and DEBUG.C.

Command line processing is now done -before- main() and indeed before InitMem(). This

means that any variables set by command line flags must be initialized at definition (e.g.

int i = 0;) to prevent them being placed in the BSS segment, which is cleared by InitMem

(). Changes to START.S and SCI.C.
 


12/06/90

Mark Wilden

UPDTOOLS.BAT now archives the old tools to OLDTOOLS.LZH. Use LHARC to extract them if

necessary.
 


11/30/90

Mark Wilden

DrawStatus() now takes two arguments for foreground and background color.
 


11/29/90

Mark Wilden

Added InitMenu() call to main() and KRestartGame() so that theMenuBar's rectangle is

initialized even if no menu items are e==
Ver added. This is because the status bar

uses theMenuBar's rectangle.
 


10/31/90

Mark Wilden

Fixed bug in text.c (GetLongest) that made certain text messages print with an extra blank

line.
 


10/22/90

Bob H.

Extended floppy disk support added. At this writing it is disabled unless '-f' option is

passed to SCIVXXX. First stage support will SCAN all drives (A-F) for the required

volumes. This will allow users with MULTIPLE drives of comparable capacity to use multiple

floppies. This will work for SINGLE PACK games (3.5 or 5.25) only. Subsequent support will

handle DUAL PACK games.

Files Changed:

sci.c - Parsing of command line switch.
declaration of variable "oadAccessMode".

sci.h - EXTERN statement for oadAccessMode.

fileio.s - "Exists" function. Error trapped for drive scan.

dos.c - Relocated GetGameDisk function (from volload.c), modified to request a particular

drive. Added OpenAnyDrive() function.

fileio.h - Added various prototypes and the OAD_???? defines.

volload.c - Re-worked some of DoLoad to use new OpenAnyDrive call and modified

GetGameDisk().
 


10/12/90

Mark H.

MemoryInfo function selector added called TOTALHUNK. Also system global called hunkAvail.

Files Changed:

kernel.c
memmgr.s
memmgr.h
kernel.sh </blockquote.
 


10/11/90

Mark H.

Some additions from the JONES interpreter...Center Justification in printf and prioritized

dialogs.

Files Changed:

printf.c
dialog.c
grtypes.h </blockquote.
 


10/01/90

Mark H.

The kernel call Lock has been added to lock and unlock resources. This is to allow the

application programmer to decide which resources should locked or unlocked. Two new

functions selectors have been added to the Memory kernel call. They are MReadWord and

MWriteWord for referencing and dereferencing addresses.

Files Changed:

kernel.c
kernel.h
kerndisp.s
kernel.sh </blockquote.
 


09/17/90

Mark H.

VOCAB resources are now all unlocked, except for the character translation vocab which is

about 2K. Text resources are also unlocked and the PurgeLast function in resource.c has

been changed to purge resources on a prioritized schedual instead of just least recently

used. This change gave back at least 40k of hunk on HQ2 with the only drawback being a

slight pause when parsing a sentance or printing text. RedoStopped in animate.c was also

changed to allow changes in update status (from stopped to forced or startUpd) in views

that are behind Dialogs. This fix is not the most desirable way to do it, but HQ2 needs it

now and substantial changes to animate would be needed to fix it right.

Files Changed:

animate.c
resource.c
nlparse.c
nlsaid.c
nlvocab.c
nlvocab.h </blockquote.
 


08/30/90

Mark H.

Added Sort kernel call that implements a simple bubble sort in C based on a scoring

function passed from SCI in a Code Object.

Files Changed:

selector.h
kernel.c
kerndisp.s
selector.new
kernel.sh </blockquote.
 


08/25/90

Bob

Relocated palette matching code from PAL256.c to GRAPH256.s
This move was indicated by the need for greater speed.<br /.
 


8/19/90

'Mark Wilden'

Increased size of 'where' file buffer in SCI.EXE to allow for up to 64 char file name.<br

/.
 


8/14/90

Bob

VE256 is now under version control. All changes to this tool MUST be coordinated through

Dan Foy OR Corinna. The version control directory is vol1:interp\sci\tools\ve256. In this

directory is the proper batch file (vcscfg.bat) to get access to this project. Please see

me if you have any questions.<br /.
 


8/4/90

Bob

The following files are affected by changeable view palettes

CELS16M.S

  • Added code to handle remapping. Bulk of code in GetCelPointer. DrawCel NOW expects a

pal(ette) argument for 0 to 7. 0 = NO MAPPING 1 - 7 selects appropriate palette Monochrome

is NOT supported at this time but will be using palette data 0

DIALOG.C

  • Added an immediate 0 to the only DrawCel call in this file.

KERNEL.C

  • Changed KDrawCel to pass along an optional 7th argument. If this arg is not present it

passes 0 to DrawCel.

ANIMATE

  • All DrawCel calls are passed the value of s_palette. Also added another element to the

AniObj structure (AniObj.pal) for lastCast use.

SELECTOR.H

  • Added s_palette as selector 91

DRAWCEL.H

  • changed prototype