Difference between revisions of "Temp"

From SCI Wiki
Jump to navigationJump to search
 
(94 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Sierra Aftermarket ==
+
<!-- {{SCI2}}<br />
 +
{{SCI3}}<br />
 +
{{SCI32}}
 +
-->
  
{| class="wikitable sortable" width="800"
+
<div class="CodeBlockHeader">Code:</div>
 +
<syntaxhighlight lang="sci">
 +
/******************************************************************************
 +
SCI Template Game VER 1.1a
 +
By Brian Provinciano
 +
******************************************************************************
 +
main.sc
 +
Contains the game's main instance and inventory items.
 +
******************************************************************************/
 +
(include "sci.sh")
 +
(include "game.sh")
 +
/******************************************************************************/
 +
(script MAIN_SCRIPT)
 +
/******************************************************************************/
 +
(use "controls")
 +
(use "sound")
 +
(use "syswindow")
 +
(use "cycle")
 +
(use "game")
 +
(use "inv")
 +
(use "user")
 +
(use "menubar")
 +
(use "feature")
 +
(use "obj")
 +
(use "disposeload")
 +
/******************************************************************************
 +
* These are the global variables. You can access them from any script as long
 +
* as it "use"es this script
 +
******************************************************************************/
 +
(local
 +
    gEgo                    // points to the ego's class
 +
    gGame                  /* points to the game instance */
 +
    gRoom                  /* points to the current room instance */
 +
    gSpeed                  /* the game speed (delay each interpreter cycle) */
 +
    gQuitGame = FALSE      /* if set to TRUE, the game will exit */
 +
   
 +
    gCast                  /* points to the cast class (list of actors) */
 +
    gRegions                /* points to the regions class (list of regions) */
 +
    gLocales                /* points to the locales class (list of locales) */
 +
    gTimers                /* points to the timers class (list of timers) */
 +
    gSounds                /* points to the sounds class (list of sounds) */
 +
    gInv                    /* points to the inventory class */
 +
    gAddToPics              /* points to the add to pics class */
 +
    gFeatures              /* points to the add to features class */     
 +
    gSFeatures              /* points to the add to sfeatures class */
 +
   
 +
    gRoomNumberExit        /* room number exit */
 +
    gPreviousRoomNumber    /* the number of the previous room */
 +
    gRoomNumber            /* the number of the current room */
 +
    gDebugOnExit = FALSE    /* enter debug mode on room exit */
 +
   
 +
    gScore = 0              /* the game score */       
 +
    gMaxScore = 0          /* the maximum game score */
 +
    gOldScore              /* previous score */
 +
   
 +
    gCurrentCursor          /* the number of the current cursor */
 +
    gNormalCursor = 999    /* the number of the normal cursor (ie. arrow) */
 +
    gLoadingCursor = 997    /* the number of the loading cursor (ie. hand) */
 +
   
 +
    gDefaultFont = 1        /* the number of the default font */
 +
    gSaveRestoreFont = 0    /* the number of the font for the save/restore dialogs*/
 +
    gDeadFont = 0          /* the number of the font for the dialog when ego dies */
 +
   
 +
    gUserEvent              /* points to the user's event object */
 +
    gPrintDlg              /* points to the current Print() window */
 +
    gVolume                /* the sound volume */
 +
    gVersion                /* the version string */
 +
    gSaveDirPtr            /* points to the save directory string */
 +
    gCheckAniWait          /* the checkAni delay */
 +
    gSetRegions            /* a flag -- see User:doit() */
 +
   
 +
    gPicAngle              /* the room's pic angle */
 +
    gOverlay = -1          /* whether to overlay the picture when drawing */
 +
    gDefaultPicAni          /* the default pic animation */
 +
    gDefaultPalette        /* the default palette to use for the pictures (0-3) */
 +
    gCastMotionCue          /* if set, the cast's motionCue() is called */
 +
   
 +
    gTheWindow              /* points to the window class */
 +
    gWndColor              /* the colour of the game's windows foreground (ie. text) */
 +
    gWndBack                /* the colour of the game's windows background */
 +
 
 +
    gOldPort                /* the previous port */
 +
   
 +
    gEgoView                /* ego's current view number */
 +
   
 +
    /* hh:mm:ss | gTimeHours:gTimeMinutes:gTimeSeconds */
 +
    /* the time elapsed since the game started */
 +
    gTimeSeconds            /* the seconds */
 +
    gTimeMinutes            /* the minutes */
 +
    gTimeHours              /* the hours */
 +
   
 +
    gCurrentTime                /* the current time in seconds */
 +
   
 +
    gTheMusic              /* points to the music class */
 +
    gTheSoundFX            /* points to the sound fx class */
 +
    gProgramControl        /* states whether the program has control or the user */
 +
)
 +
/******************************************************************************/
 +
(instance public Hello World of Game
 +
    (properties)
 +
    (method (init)
 +
        // Set up the base window
 +
        = gTheWindow theWindow
 +
        = gWndColor clBLACK
 +
        = gWndBack clWHITE
 +
        (send gTheWindow:
 +
            color(gWndColor)
 +
            back(gWndBack)
 +
        )
 +
 
 +
        // Initialize
 +
        (super:init())
 +
 
 +
        /******************************
 +
        * Set your game version here *
 +
        ******************************/
 +
        = gVersion "1.0"
 +
           
 +
        // General initialization stuff
 +
        = gVolume 15
 +
        DoSound(sndVOLUME gVolume)
 +
           
 +
        (SL:code(statusCode))
 +
        (TheMenuBar:init())
 +
   
 +
        (scoreSound:
 +
            owner(self)
 +
            init()
 +
        )
 +
        = gTheMusic theMusic
 +
        (send gTheMusic:
 +
            owner(self)
 +
            init()
 +
        )
 +
        = gTheSoundFX theSoundFX
 +
        (send gTheSoundFX:
 +
            owner(self)
 +
            init()
 +
        )
 +
       
 +
        = gEgo ego
 +
        (User:
 +
            alterEgo(gEgo)
 +
            blocks(0)
 +
            y(150)
 +
        )
 +
           
 +
        Load(rsFONT    gDeadFont)
 +
        Load(rsFONT    gDefaultFont)
 +
        Load(rsFONT    gSaveRestoreFont)
 +
   
 +
        Load(rsCURSOR  gNormalCursor)
 +
        Load(rsCURSOR  gLoadingCursor)
 +
           
 +
        (if(HaveMouse())
 +
            (send gGame:setCursor(gNormalCursor SET_CURSOR_VISIBLE))
 +
        )(else
 +
            (send gGame:setCursor(gNormalCursor SET_CURSOR_VISIBLE 304 174))
 +
        )
 +
           
 +
        /*************************************************
 +
        * Initialize the inventory with it's items here *
 +
        *************************************************/
 +
        (Inv:
 +
            add(
 +
                {Nothing}
 +
                {Test Object}
 +
            )
 +
        )
 +
           
 +
        // Start the room
 +
        (if(GameIsRestarting())
 +
            (self:newRoom(INITROOMS_SCRIPT))
 +
        )(else
 +
            (self:newRoom(TITLESCREEN_SCRIPT))
 +
        )
 +
    )
 +
    (method (doit)
 +
        (super:doit())
 +
        (if(gProgramControl)
 +
            (User:
 +
                canControl(FALSE)
 +
                canInput(FALSE)
 +
            )
 +
        )
 +
        (if(<> gCurrentTime (= gCurrentTime GetTime(gtTIME_OF_DAY)))
 +
            (if(>= ++gTimeSeconds 60)
 +
                = gTimeSeconds 0
 +
                ++ gTimeMinutes
 +
                (if(>= gTimeMinutes 60)
 +
                    = gTimeMinutes 0
 +
                    ++ gTimeHours
 +
                )
 +
            )
 +
        )
 +
        (if(> gOldScore gScore)
 +
                = gOldScore gScore
 +
                (SL:doit())
 +
        )
 +
        (if(< gOldScore gScore)
 +
            = gOldScore gScore
 +
            (SL:doit())
 +
        )
 +
    )
 +
    (method (replay)
 +
        (TheMenuBar:draw())
 +
        (SL:enable())
 +
       
 +
        (if(DoSound(sndSET_SOUND))
 +
            SetMenu(MENU_TOGGLESOUND #text "Turn Off")
 +
        )(else
 +
            SetMenu(MENU_TOGGLESOUND #text "Turn On")
 +
        )
 +
        (super:replay())
 +
    )
 +
    (method (newRoom roomNum picAni)
 +
            DisposePrintDlg()
 +
            Load(rsFONT    gDeadFont)
 +
            Load(rsFONT    gDefaultFont)
 +
            Load(rsFONT    gSaveRestoreFont)
 +
 
 +
            Load(rsCURSOR  gNormalCursor)
 +
            Load(rsCURSOR  gLoadingCursor)
 +
   
 +
            (super:newRoom(roomNum))
 +
            (if(< paramTotal 2)
 +
                = gDefaultPicAni Random(0 5)
 +
            )(else
 +
                = gDefaultPicAni picAni
 +
            )
 +
    )
 +
    (method (startRoom roomNum)
 +
        DisposeLoad(
 +
            NULL
 +
            FILEIO_SCRIPT JUMP_SCRIPT EXTRA_SCRIPT WINDOW_SCRIPT
 +
                TIMER_SCRIPT FOLLOW_SCRIPT REV_SCRIPT DCICON_SCRIPT
 +
                DOOR_SCRIPT AUTODOOR_SCRIPT WANDER_SCRIPT AVOID_SCRIPT
 +
        )
 +
        DisposeScript(DISPOSELOAD_SCRIPT)
 +
        (if(gDebugOnExit)
 +
            = gDebugOnExit FALSE
 +
            SetDebug()
 +
        )
 +
        (send gTheSoundFX:
 +
            stop()
 +
            number(1)
 +
        )
 +
        (super:startRoom(roomNum))
 +
        (if(== gTheSoundFX 11)
 +
            (send gEgo:baseSetter(NormalBase))
 +
        )
 +
    )
 +
    (method (changeScore addScore)
 +
        = gScore + gScore addScore
 +
        (if(> addScore 0)
 +
            (scoreSound:playMaybe())
 +
        )
 +
    )
 +
    (method (handleEvent pEvent)
 +
 
 +
        //////////////////////////////////////////////////////////////////////
 +
        // ** This is debug functionality                                  //
 +
        // ** Comment it out if you don't want people to cheat in your game //
 +
        //////////////////////////////////////////////////////////////////////
 +
          (if (== evKEYBOARD (send pEvent:type))
 +
            // Check for ALT keys
 +
            (switch (send pEvent:message)
 +
                (case $2f00 // alt-v
 +
                  Show(1) // Show visual
 +
                )
 +
                (case $2e00 // alt-c
 +
                  Show(4) // Show control
 +
                )
 +
                (case $1900 // alt-p
 +
                  Show(2) // Show priority
 +
                )
 +
                (case $3200 // alt-m
 +
                  // Show memory usage
 +
                      ShowFree()
 +
                      FormatPrint(
 +
                          "Free Heap: %u Bytes\nLargest ptr: %u Bytes\nFreeHunk: %u KBytes\nLargest hunk: %u Bytes"
 +
                          MemoryInfo(miFREEHEAP)
 +
                          MemoryInfo(miLARGESTPTR)
 +
                          (>> MemoryInfo(miFREEHUNK) 6)
 +
                          MemoryInfo(miLARGESTHUNK)
 +
                      )
 +
                )
 +
                (case $1400 // alt-t
 +
                  // teleport to room
 +
                        (send gRoom:newRoom(GetNumber("Which Room Number?")))
 +
                )
 +
                (case $1700 // alt-i
 +
                  // get inventory
 +
                  (send gEgo:get(GetNumber("Which inventory#?")))
 +
                )
 +
                (case $1f00 // alt-s
 +
                  // Show cast
 +
                  (send gCast:eachElementDo(#showSelf))
 +
                )
 +
            )
 +
          )
 +
          ////////////////////////////////////////////////////
 +
          // End of debug functionality                    //
 +
          ////////////////////////////////////////////////////
 +
 
 +
        (super:handleEvent(pEvent))
 +
        (if((<> (send pEvent:type) evSAID) or (send pEvent:claimed))
 +
            return(TRUE)
 +
        )
 +
 
 +
        /***********************************/
 +
        /* Add global said statements here */
 +
        /***********************************/
 +
       
 +
        (if(Said('hi'))
 +
            Print("Well hello to you too!")
 +
        )
 +
 
 +
 
 +
        return(FALSE)
 +
    )
 +
)
 +
/******************************************************************************/
 +
(class Iitem of InvI
 +
    (properties
 +
    said 0
 +
    description 0
 +
    owner 0
 +
    view 0
 +
    loop 0
 +
    cel 0
 +
    script 0
 +
    )
 +
(method (showSelf)
 +
    Print(
 +
    description
 +
    #title objectName
 +
    #icon view loop cel // Changed from: #icon view 0 0
 +
    )
 +
  )
 +
)
 +
/******************************************************************************/
 +
(instance statusCode  of Code
 +
    (properties)
 +
    (method (doit param1)
 +
        Format(param1 " Score: %d of %-3d                      Template Game " gScore gMaxScore)
 +
    )
 +
)
 +
/******************************************************************************/
 +
(instance ego of Ego
 +
    (properties
 +
        y 1111
 +
        x 0
 +
        z 0
 +
        heading 0
 +
        yStep 2
 +
        view 0
 +
        loop 0
 +
        cel 0
 +
        priority 0
 +
        underBits 0
 +
        signal $2000
 +
        nsTop 0
 +
        nsLeft 0
 +
        nsBottom 0
 +
        nsRight 0
 +
        lsTop 0
 +
        lsLeft 0
 +
        lsBottom 0
 +
        lsRight 0
 +
        brTop 0
 +
        brLeft 0
 +
        brBottom 0
 +
        brRight 0
 +
        cycleSpeed 0
 +
        script 0
 +
        cycler 0
 +
        timer 0
 +
        illegalBits $8000
 +
        xLast 0
 +
        yLast 0
 +
        xStep 3
 +
        moveSpeed 0
 +
        blocks 0
 +
        baseSetter 0
 +
        mover 0
 +
        looper 0
 +
        viewer 0
 +
        avoider 0
 +
        edgeHit 0
 +
    )
 +
)
 +
/******************************************************************************/
 +
(instance scoreSound of Sound
 +
    (properties
 +
        state 0
 +
        number SCORE_SOUND
 +
        priority 10
 +
        loop 1
 +
        handle 0
 +
        signal 0
 +
        prevSignal 0
 +
        client 0
 +
        owner 0
 +
    )
 +
)
 +
/******************************************************************************/
 +
(instance theMusic  of Sound
 +
    (properties
 +
        state 0
 +
        number 1
 +
        priority 0
 +
        loop 1
 +
        handle 0
 +
        signal 0
 +
        prevSignal 0
 +
        client 0
 +
        owner 0
 +
    )
 +
)
 +
/******************************************************************************/
 +
(instance theSoundFX  of Sound
 +
    (properties
 +
        state 0
 +
        number 1
 +
        priority 5
 +
        loop 1
 +
        handle 0
 +
        signal 0
 +
        prevSignal 0
 +
        client 0
 +
        owner 0
 +
    )
 +
)
 +
/******************************************************************************/
 +
(instance theWindow  of SysWindow
 +
    (properties)
 +
    (method (open)
 +
        (if(< Graph(grGET_COLOURS) 9)
 +
            (if( (< color 7) or (== color 8) )
 +
                = color 0
 +
                = back  15
 +
            )(else
 +
                = color 15
 +
                = back  0
 +
            )
 +
        )
 +
        (super:open())
 +
    )
 +
)
 +
/******************************************************************************/
 +
(instance NormalBase of Code
 +
    (properties)
 +
    (method (doit)
 +
        (var temp0)
 +
        (if(== gRoomNumberExit 253)
 +
            = temp0 22
 +
        )(else
 +
            = temp0 10
 +
        )
 +
        (send gEgo:
 +
            brBottom(
 +
                (+ (send gEgo:y) 1)
 +
            )
 +
        )
 +
        (send gEgo:
 +
            brTop(
 +
                (- (send gEgo:brBottom) (send gEgo:yStep))
 +
            )
 +
        )
 +
        (send gEgo:
 +
            brLeft(
 +
                (- (send gEgo:x) temp0)
 +
            )
 +
        )
 +
        (send gEgo:
 +
            brRight(
 +
                (+ (send gEgo:x) temp0)
 +
            )
 +
        )
 +
    )
 +
)
 +
 
 +
/******************************************************************************
 +
* THE PUBLIC PROCEDURES
 +
******************************************************************************/
 +
(procedure public (SetUpEgo theLoop theView)
 +
    PlayerControl()
 +
    (send gEgo:edgeHit(EDGE_NONE))
 +
    (switch(paramTotal)
 +
        (case 0
 +
            SetUpActor(gEgo (send gEgo:loop) gEgoView)
 +
        )
 +
        (case 1
 +
            SetUpActor(gEgo theLoop gEgoView)
 +
        )
 +
        (case 2
 +
            SetUpActor(gEgo theLoop theView)
 +
        )
 +
    )
 +
)
 +
/******************************************************************************/
 +
(procedure public (SetUpActor pActor theLoop theView)
 +
    (if(> paramTotal 1)
 +
        (send pActor:loop(theLoop))
 +
    )
 +
    (if(> paramTotal 2)
 +
        (send pActor:view(theView))
 +
    )
 +
    (send pActor:
 +
        setLoop(-1)
 +
        setPri(-1)
 +
        setStep(3 2)
 +
        setCycle(Walk)
 +
        illegalBits($8000)
 +
        cycleSpeed(0)
 +
        moveSpeed(0)
 +
        ignoreActors(0)
 +
    )
 +
)
 +
/******************************************************************************/
 +
(procedure public (ProgramControl)
 +
    (User:
 +
        canControl(FALSE)
 +
        canInput(FALSE)
 +
    )
 +
    (send gEgo:setMotion(NULL))
 +
    = gProgramControl TRUE
 +
)
 +
/******************************************************************************/
 +
(procedure public (PlayerControl)
 +
    (User:
 +
        canControl(TRUE)
 +
        canInput(TRUE)
 +
    )
 +
    (send gEgo:setMotion(NULL))
 +
    = gProgramControl FALSE
 +
)
 +
/******************************************************************************/
 +
(procedure public (DisposePrintDlg)
 +
    (if(gPrintDlg)
 +
        (send gPrintDlg:dispose())
 +
    )
 +
)
 +
/******************************************************************************/
 +
(procedure public (PrintOK)
 +
    Print("O.K.")
 +
)
 +
/******************************************************************************/
 +
(procedure public (PrintItIs)
 +
    Print("It is.")
 +
)
 +
/******************************************************************************/
 +
(procedure public (PrintYouAre)
 +
    Print("You are.")
 +
)
 +
/******************************************************************************/
 +
(procedure public (PrintGoodIdea)
 +
    Print("Good idea. You might try that again later.")
 +
)
 +
/******************************************************************************/
 +
(procedure public (PrintNotCloseEnough)
 +
    Print("You're not close enough.")
 +
)
 +
/******************************************************************************/
 +
(procedure public (PrintAlreadyTookIt)
 +
    Print("You already took it.")
 +
)
 +
/******************************************************************************/
 +
(procedure public (PrintDontHaveIt)
 +
    Print("You don't have it.")
 +
)
 +
/******************************************************************************/
 +
(procedure public (PrintCantDoThat mem)
 +
    (if(> MemoryInfo(miLARGESTPTR) mem)
 +
        return(TRUE)
 +
    )(else
 +
        Print("You can't do that here; at least, not now.")
 +
        return(FALSE)
 +
    )
 +
)
 +
/******************************************************************************/
 +
(procedure public (AddViewToPic pView)
 +
    (var hView)
 +
    (if(pView)
 +
        = hView (View:new())
 +
        (send hView:
 +
            view(send pView:view)
 +
            loop(send pView:loop)
 +
            cel(send pView:cel)
 +
            priority(send pView:priority)
 +
            posn( (send pView:x) (send pView:y) )
 +
            addToPic()
 +
        )
 +
        (send pView:
 +
            posn( (send pView:x) (+ 1000 (send pView:y)) )
 +
        )
 +
    )
 +
)
 +
/******************************************************************************/
 +
(procedure public (SetInvIOwner index owner)
 +
    (var hInvI)
 +
    = hInvI (send gInv:at(index))
 +
    (if(< paramTotal 2)
 +
        (send hInvI:owner(gRoomNumberExit))
 +
    )(else
 +
        (send hInvI:owner(owner))
 +
    )
 +
)
 +
 
 +
 
 +
/******************************************************************************
 +
* THE INVENTORY ITEMS                                                        *
 +
******************************************************************************/
 +
(instance Nothing  of Iitem
 +
    (properties)
 +
)
 +
/******************************************************************************/
 +
(instance {Test Object} of Iitem
 +
    (properties
 +
        said 'object'
 +
        description
 +
            "This is a test object in your inventory."
 +
        owner 0
 +
        view 800
 +
        loop 0
 +
        cel 0
 +
        script 0
 +
    )
 +
)
 +
/******************************************************************************/
 +
 
 +
</syntaxhighlight>
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
== Sierra After-market ==
 +
 
 +
{| class="wikitable sortable" <!-- width="800" -->
 
|-
 
|-
!Game!!486SBDRV!!AWESOL!!DACBLAST!!E29PATCH!!GENMIDI!!GUS32!!GUSDRV!!SB16DRV!!SBSCI32!!SNDBLAST
+
!Game!!486SBDRV!!AWESOL!!DACBLAST!!E29PATCH!!GENMIDI!!GUS32!!GUSDRV!!SB16DRV!!SBSCI32
 
|-
 
|-
|[[Conquests of Camelot|Camelot]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|SNDBLAST
+
|[[Conquests of the Longbow|Longbow]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#AWESOL|AWESOL]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#GENMIDI|GENMIDI]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
 
|-
 
|-
|[[Conquests of the Longbow|Longbow]]||align="center"|&nbsp;||align="center"|AWESOL||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|GENMIDI||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
+
|[[Island of Dr. Brain|Dr. Brain 2]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#GUSDRV|GUSDRV]]||align="center"|&nbsp;||align="center"|&nbsp;
 
|-
 
|-
|[[Island of Dr. Brain|Dr. Brain 2]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|GUSDRV||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
+
|[[EcoQuest: The Search for Cetus|EcoQuest 1]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#AWESOL|AWESOL]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#GENMIDI|GENMIDI]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#GUSDRV|GUSDRV]]||align="center"|&nbsp;||align="center"|&nbsp;
 
|-
 
|-
|[[EcoQuest: The Search for Cetus|EcoQuest 1]]||align="center"|&nbsp;||align="center"|AWESOL||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|GENMIDI||align="center"|&nbsp;||align="center"|GUSDRV||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
+
|[[EcoQuest: The Search for Cetus|EcoQuest 1 CD]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#SB16DRV|SB16DRV]]||align="center"|&nbsp;
 
|-
 
|-
|[[EcoQuest: The Search for Cetus|EcoQuest 1 CD]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|SB16DRV||align="center"|&nbsp;||align="center"|&nbsp;
+
|[[EcoQuest 2: Lost Secret of The Rainforest|EcoQuest 2]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#GUSDRV|GUSDRV]]||align="center"|&nbsp;||align="center"|&nbsp;
 
|-
 
|-
|[[EcoQuest 2: Lost Secret of The Rainforest|EcoQuest 2]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|GUSDRV||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
+
|[[Freddy Pharkas: Frontier Pharmacist|Freddy Pharkas]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#GUSDRV|GUSDRV]]||align="center"|&nbsp;||align="center"|&nbsp;
 
|-
 
|-
|[[Freddy Pharkas: Frontier Pharmacist|Freddy Pharkas]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|GUSDRV||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
+
|[[Gabriel Knight: Sins of the Fathers|Gabriel Knight 1]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#AWESOL|AWESOL]]||align="center"|[[Updated Sound Drivers#DACBLAST|DACBLAST]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#GUS32|GUS32]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#SBSCI32|SBSCI32]]
 
|-
 
|-
|[[A Fun Seekers Guide to East Madera County|Fun&nbsp;Seeker's&nbsp;Guide]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|SNDBLAST
+
|[[Gabriel Knight: Sins of the Fathers|Gabriel Knight 1 CD]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#AWESOL|AWESOL]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#GENMIDI|GENMIDI]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#GUS32|GUS32]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#SBSCI32|SBSCI32]]
 
|-
 
|-
|[[Gabriel Knight: Sins of the Fathers|Gabriel Knight 1]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|DACBLAST||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|GUS32||align="center"|&nbsp;||align="center"|SBSCI32||align="center"|&nbsp;
+
|[[Hoyle Official Book of Games, Volume 3: Great Board Games|Hoyle 3]]||align="center"|[[Updated Sound Drivers#486SBDRV|486SBDRV]]||align="center"|[[Updated Sound Drivers#AWESOL|AWESOL]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#E29PATCH|E29PATCH]]||align="center"|[[Updated Sound Drivers#GENMIDI|GENMIDI]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
 
|-
 
|-
|[[Gabriel Knight: Sins of the Fathers|Gabriel Knight 1 CD]]||align="center"|&nbsp;||align="center"|AWESOL||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|GENMIDI||align="center"|&nbsp;||align="center"|GUS32||align="center"|&nbsp;||align="center"|SBSCI32||align="center"|&nbsp;
+
|[[Hoyle Classic Card Games|Hoyle 4]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#GUSDRV|GUSDRV]]||align="center"|&nbsp;||align="center"|&nbsp;
 
|-
 
|-
|[[Hoyle Official Book of Games, Volume 1|Hoyle 1]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|SNDBLAST
+
|[[King's Quest VI: Heir Today, Gone Tomorrow|KQ6]]"||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#GUSDRV|GUSDRV]]||align="center"|&nbsp;||align="center"|&nbsp;
 
|-
 
|-
|[[Hoyle Official Book of Games, Volume 2: Solitaire|Hoyle 2]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|SNDBLAST
+
|[[King's Quest VI: Heir Today, Gone Tomorrow|KQ6CD]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#GUSDRV|GUSDRV]]||align="center"|[[Updated Sound Drivers#SB16DRV|SB16DRV]]||align="center"|&nbsp;
 
|-
 
|-
|[[Hoyle Official Book of Games, Volume 3: Great Board Games|Hoyle 3]]||align="center"|486SBDRV||align="center"|AWESOL||align="center"|&nbsp;||align="center"|E29PATCH||align="center"|GENMIDI||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
+
|[[Dagger of Amon Ra Demo|<span class="Alert">LB</span>2CD]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#GUSDRV|GUSDRV]]||align="center"|[[Updated Sound Drivers#SB16DRV|SB16DRV]]||align="center"|&nbsp;
 
|-
 
|-
|[[Hoyle Classic Card Games|Hoyle 4]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|GUSDRV||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
+
|[[Leisure Suit Larry 1: In the Land of the Lounge Lizards SCI|LSL1VGA]]||align="center"|[[Updated Sound Drivers#486SBDRV|486SBDRV]]||align="center"|[[Updated Sound Drivers#AWESOL|AWESOL]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#E29PATCH|E29PATCH]]||align="center"|[[Updated Sound Drivers#GENMIDI|GENMIDI]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
 
|-
 
|-
|[[Code-Name: ICEMAN|ICEMAN]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|SNDBLAST
+
|[[Leisure Suit Larry 5: Passionate Patti Does a Little Undercover Work|LSL5]]||align="center"|[[Updated Sound Drivers#486SBDRV|486SBDRV]]||align="center"|[[Updated Sound Drivers#AWESOL|AWESOL]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#E29PATCH|E29PATCH]]||align="center"|[[Updated Sound Drivers#GENMIDI|GENMIDI]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
 
|-
 
|-
|[[King's Quest I: Quest for the Crown (SCI remake)|KQ1SCI]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|SNDBLAST
+
|[[Leisure Suit Larry 6: Shape Up or Slip Out!|LSL6CD]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#AWESOL|AWESOL]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#GENMIDI|GENMIDI]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
 
|-
 
|-
|[[King's Quest IV: The Perils of Rosella|KQ4]]*||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|SNDBLAST
+
|[[Mixed-Up Fairy Tales|Mixed-Up&nbsp;Fairy&nbsp;Tales]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#AWESOL|AWESOL]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#GENMIDI|GENMIDI]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
 
|-
 
|-
|[[King's Quest VI: Heir Today, Gone Tomorrow|KQ6]]"||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|GUSDRV||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
+
|[[Pepper's Adventures in Time|Pepper]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#GUSDRV|GUSDRV]]||align="center"|&nbsp;||align="center"|&nbsp;
 
|-
 
|-
|[[King's Quest VI: Heir Today, Gone Tomorrow|KQ6CD]]"||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|GUSDRV||align="center"|SB16DRV||align="center"|&nbsp;||align="center"|&nbsp;
+
|[[Police Quest 1: In Pursuit of the Death Angel SCI|PQ1VGA]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#GUSDRV|GUSDRV]]||align="center"|&nbsp;||align="center"|&nbsp;
 
|-
 
|-
|[[The Colonel's Bequest|LB1]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|SNDBLAST
+
|[[Police Quest 3: The Kindred|PQ3]]||align="center"|[[Updated Sound Drivers#486SBDRV|486SBDRV]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#E29PATCH|E29PATCH]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
 
|-
 
|-
|[[Dagger of Amon Ra Demo|LB2CD]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|GUSDRV||align="center"|SB16DRV||align="center"|&nbsp;||align="center"|&nbsp;
+
|[[Police Quest: Open Season|PQ4]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#AWESOL|AWESOL]]||align="center"|[[Updated Sound Drivers#DACBLAST|DACBLAST]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#GUS32|GUS32]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#SBSCI32|SBSCI32]]
 
|-
 
|-
|[[Leisure Suit Larry 1: In the Land of the Lounge Lizards SCI|LSL1VGA]]||align="center"|486SBDRV||align="center"|AWESOL||align="center"|&nbsp;||align="center"|E29PATCH||align="center"|GENMIDI||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
+
|[[Police Quest: Open Season|PQ4 CD]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#AWESOL|AWESOL]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
 
|-
 
|-
|[[Leisure Suit Larry Goes Looking for Love (In Several Wrong Places)|LSL2]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|SNDBLAST
+
|[[Quest for Glory I: So You Want to Be a Hero (VGA)|QfG1VGA]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#SB16DRV|SB16DRV]]||align="center"|&nbsp;
 
|-
 
|-
|[[Leisure Suit Larry 3: Passionate Patti in Pursuit of the Pulsating Pectorals|LSL3]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|SNDBLAST
+
|[[Quest for Glory IV: Shadows of Darkness|QfG4]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#AWESOL|AWESOL]]||align="center"|[[Updated Sound Drivers#DACBLAST|DACBLAST]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#GUS32|GUS32]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#SBSCI32|SBSCI32]]
 
|-
 
|-
|[[Leisure Suit Larry 5: Passionate Patti Does a Little Undercover Work|LSL5]]||align="center"|486SBDRV||align="center"|AWESOL||align="center"|&nbsp;||align="center"|E29PATCH||align="center"|GENMIDI||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
+
|[[Quest for Glory IV: Shadows of Darkness|QfG4CD]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#AWESOL|AWESOL]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#GENMIDI|GENMIDI]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
 
|-
 
|-
|[[Leisure Suit Larry 6: Shape Up or Slip Out!|LSL6CD]]||align="center"|&nbsp;||align="center"|AWESOL||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|GENMIDI||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
+
|[[Slater & Charlie Go Camping|Slater & Charlie]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#GUSDRV|GUSDRV]]||align="center"|&nbsp;||align="center"|&nbsp;
 
|-
 
|-
|[[Mixed-Up Fairy Tales|Mixed-Up&nbsp;Fairy&nbsp;Tales]]||align="center"|&nbsp;||align="center"|AWESOL||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|GENMIDI||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
+
|[[Space Quest I: The Sarien Encounter SCI|SQ1VGA]]||align="center"|[[Updated Sound Drivers#486SBDRV|486SBDRV]]||align="center"|[[Updated Sound Drivers#AWESOL|AWESOL]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#E29PATCH|E29PATCH]]||align="center"|[[Updated Sound Drivers#GENMIDI|GENMIDI]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
 
|-
 
|-
|[[Pepper's Adventures in Time|Pepper]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|GUSDRV||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
+
|[[Space Quest IV: Roger Wilco and the Time Rippers|SQ4]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#AWESOL|AWESOL]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#GENMIDI|GENMIDI]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
 
|-
 
|-
|[[Police Quest 1: In Pursuit of the Death Angel SCI|PQ1VGA]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|GUSDRV||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
+
|[[Space Quest IV: Roger Wilco and the Time Rippers|SQ4CD]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#SB16DRV|SB16DRV]]||align="center"|&nbsp;
 
|-
 
|-
|[[Police Quest 2: The Vengeance|PQ2]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|SNDBLAST
+
|[[Space Quest V: The Next Mutation|SQ5]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#GUSDRV|GUSDRV]]||align="center"|&nbsp;||align="center"|&nbsp;
 +
|}
 +
 
 +
== Ravi's Drivers ==
 +
 
 +
{| class="wikitable sortable" <!-- width="800" -->
 
|-
 
|-
|[[Police Quest 3: The Kindred|PQ3]]||align="center"|486SBDRV||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|E29PATCH||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
+
! Game!!RAVI_GMDRV!!RAVI_MPUMAP!!RAVI_MPUMIDI!!RAVI_NOSND!!RAVI_NOSND-B
 
|-
 
|-
|[[Police Quest: Open Season|PQ4]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|DACBLAST||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|GUS32||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|SBSCI32||align="center"|&nbsp;
+
|[[Conquests of Camelot|Camelot]]||align="center"|[[Updated Sound Drivers#RAVI_GMDRV|RAVI_GMDRV]]||align="center"|[[Updated Sound Drivers#RAVI_MPUMAP|RAVI_MPUMAP]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#RAVI_NOSND|RAVI_NOSND]]||align="center"|&nbsp;
 
|-
 
|-
|[[Police Quest: Open Season|PQ4]]||align="center"|&nbsp;||align="center"|AWESOL||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|GENMIDI||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
+
|[[Hoyle Official Book of Games, Volume 1|Hoyle 1]]||align="center"|[[Updated Sound Drivers#RAVI_GMDRV|RAVI_GMDRV]]||align="center"|[[Updated Sound Drivers#RAVI_MPUMAP|RAVI_MPUMAP]]||align="center"|[[Updated Sound Drivers#RAVI_MPUMIDI|RAVI_MPUMIDI]]||align="center"|[[Updated Sound Drivers#RAVI_NOSND|RAVI_NOSND]]||align="center"|&nbsp;
 
|-
 
|-
|[[Hero's Quest: So You Want to Be a Hero|Hero]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|SNDBLAST
+
|[[Hoyle Official Book of Games, Volume 2: Solitaire|Hoyle 2]]||align="center"|[[Updated Sound Drivers#RAVI_GMDRV|RAVI_GMDRV]]||align="center"|[[Updated Sound Drivers#RAVI_MPUMAP|RAVI_MPUMAP]]||align="center"|[[Updated Sound Drivers#RAVI_MPUMIDI|RAVI_MPUMIDI]]||align="center"|[[Updated Sound Drivers#RAVI_NOSND|RAVI_NOSND]]||align="center"|&nbsp;
 
|-
 
|-
|[[Quest for Glory I: So You Want to Be a Hero (EGA)|QfG1EGA]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|SNDBLAST
+
|[[Code-Name: ICEMAN|ICEMAN]]||align="center"|[[Updated Sound Drivers#RAVI_GMDRV|RAVI_GMDRV]]||align="center"|[[Updated Sound Drivers#RAVI_MPUMAP|RAVI_MPUMAP]]||align="center"|[[Updated Sound Drivers#RAVI_MPUMIDI|RAVI_MPUMIDI]]||align="center"|[[Updated Sound Drivers#RAVI_NOSND|RAVI_NOSND]]||align="center"|&nbsp;
 
|-
 
|-
|[[Quest for Glory I: So You Want to Be a Hero (VGA)|QfG1VGA]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|SB16DRV||align="center"|&nbsp;||align="center"|&nbsp;
+
|[[King's Quest I: Quest for the Crown (SCI remake)|KQ1SCI]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#RAVI_MPUMAP|RAVI_MPUMAP]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#RAVI_NOSND-B|RAVI_NOSND-B]]
 
|-
 
|-
|[[Quest for Glory II: Trial by Fire|QfG2]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|SNDBLAST
+
|[[King's Quest IV: The Perils of Rosella|KQ4]]||align="center"|[[Updated Sound Drivers#RAVI_GMDRV|RAVI_GMDRV]]||align="center"|[[Updated Sound Drivers#RAVI_MPUMAP|RAVI_MPUMAP]]||align="center"|[[Updated Sound Drivers#RAVI_MPUMIDI|RAVI_MPUMIDI]]||align="center"|[[Updated Sound Drivers#RAVI_NOSND|RAVI_NOSND]]||align="center"|&nbsp;
 
|-
 
|-
|[[Quest for Glory IV: Shadows of Darkness|QfG4]]||align="center"|&nbsp;||align="center"|AWESOL||align="center"|DACBLAST||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|GUS32||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|SBSCI32||align="center"|&nbsp;
+
|[[Colonel's Bequest, The|LB1]]||align="center"|[[Updated Sound Drivers#RAVI_GMDRV|RAVI_GMDRV]]||align="center"|[[Updated Sound Drivers#RAVI_MPUMAP|RAVI_MPUMAP]]||align="center"|[[Updated Sound Drivers#RAVI_MPUMIDI|RAVI_MPUMIDI]]||align="center"|[[Updated Sound Drivers#RAVI_NOSND|RAVI_NOSND]]||align="center"|&nbsp;
 
|-
 
|-
|[[Quest for Glory IV: Shadows of Darkness|QfG4CD]]||align="center"|&nbsp;||align="center"|AWESOL||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|GENMIDI||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
+
|[[Leisure Suit Larry Goes Looking for Love (In Several Wrong Places)|LSL2]]||align="center"|[[Updated Sound Drivers#RAVI_GMDRV|RAVI_GMDRV]]||align="center"|[[Updated Sound Drivers#RAVI_MPUMAP|RAVI_MPUMAP]]||align="center"|[[Updated Sound Drivers#RAVI_MPUMIDI|RAVI_MPUMIDI]]||align="center"|[[Updated Sound Drivers#RAVI_NOSND|RAVI_NOSND]]||align="center"|&nbsp;
 
|-
 
|-
|[[Slater & Charlie Go Camping|Slater & Charlie]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|GUSDRV||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
+
|[[Leisure Suit Larry 3: Passionate Patti in Pursuit of the Pulsating Pectorals|LSL3]]||align="center"|[[Updated Sound Drivers#RAVI_GMDRV|RAVI_GMDRV]]||align="center"|[[Updated Sound Drivers#RAVI_MPUMAP|RAVI_MPUMAP]]||align="center"|[[Updated Sound Drivers#RAVI_MPUMIDI|RAVI_MPUMIDI]]||align="center"|[[Updated Sound Drivers#RAVI_NOSND|RAVI_NOSND]]||align="center"|&nbsp;
 
|-
 
|-
|[[Space Quest I: The Sarien Encounter SCI|SQ1VGA]]||align="center"|486SBDRV||align="center"|AWESOL||align="center"|&nbsp;||align="center"|E29PATCH||align="center"|GENMIDI||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
+
|[[Police Quest 2: The Vengeance|PQ2]]||align="center"|[[Updated Sound Drivers#RAVI_GMDRV|RAVI_GMDRV]]||align="center"|[[Updated Sound Drivers#RAVI_MPUMAP|RAVI_MPUMAP]]||align="center"|[[Updated Sound Drivers#RAVI_MPUMIDI|RAVI_MPUMIDI]]||align="center"|[[Updated Sound Drivers#RAVI_NOSND|RAVI_NOSND]]||align="center"|&nbsp;
 
|-
 
|-
|[[Space Quest III: The Pirates of Pestulon|SQ3]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|SNDBLAST
+
|[[Hero's Quest: So You Want to Be a Hero|Hero]]||align="center"|[[Updated Sound Drivers#RAVI_GMDRV|RAVI_GMDRV]]||align="center"|[[Updated Sound Drivers#RAVI_MPUMAP|RAVI_MPUMAP]]||align="center"|[[Updated Sound Drivers#RAVI_MPUMIDI|RAVI_MPUMIDI]]||align="center"|[[Updated Sound Drivers#RAVI_NOSND|RAVI_NOSND]]||align="center"|&nbsp;
 
|-
 
|-
|[[Space Quest IV: Roger Wilco and the Time Rippers|SQ4]]||align="center"|&nbsp;||align="center"|AWESOL||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|GENMIDI||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
+
|[[Quest for Glory I: So You Want to Be a Hero (EGA)|QfG1EGA]]||align="center"|[[Updated Sound Drivers#RAVI_GMDRV|RAVI_GMDRV]]||align="center"|[[Updated Sound Drivers#RAVI_MPUMAP|RAVI_MPUMAP]]||align="center"|[[Updated Sound Drivers#RAVI_MPUMIDI|RAVI_MPUMIDI]]||align="center"|[[Updated Sound Drivers#RAVI_NOSND|RAVI_NOSND]]||align="center"|&nbsp;
 
|-
 
|-
|[[Space Quest IV: Roger Wilco and the Time Rippers|SQ4CD]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|SB16DRV||align="center"|&nbsp;||align="center"|&nbsp;
+
|[[Quest for Glory II: Trial by Fire|QfG2]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#RAVI_MPUMAP|RAVI_MPUMAP]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#RAVI_NOSND-B|RAVI_NOSND-B]]
 
|-
 
|-
|[[Space Quest V: The Next Mutation|SQ5]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|GUSDRV||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;
+
|[[Space Quest III: The Pirates of Pestulon|SQ3]]||align="center"|[[Updated Sound Drivers#RAVI_GMDRV|RAVI_GMDRV]]||align="center"|[[Updated Sound Drivers#RAVI_MPUMAP|RAVI_MPUMAP]]||align="center"|[[Updated Sound Drivers#RAVI_MPUMIDI|RAVI_MPUMIDI]]||align="center"|[[Updated Sound Drivers#RAVI_NOSND|RAVI_NOSND]]||align="center"|&nbsp;
 
|-
 
|-
|[[Sierra Christmas Card 1988|Xmas Card 88]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|SNDBLAST
+
|[[Sierra Christmas Card 1988|Xmas Card 88]]||align="center"|[[Updated Sound Drivers#RAVI_GMDRV|RAVI_GMDRV]]||align="center"|[[Updated Sound Drivers#RAVI_MPUMAP|RAVI_MPUMAP]]||align="center"|[[Updated Sound Drivers#RAVI_MPUMIDI|RAVI_MPUMIDI]]||align="center"|[[Updated Sound Drivers#RAVI_NOSND|RAVI_NOSND]]||align="center"|&nbsp;
 
|-
 
|-
|[[Christmas Card EGA 1990|Xmas Card 90 EGA]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|SNDBLAST
+
|[[Christmas Card 1990 - The Seasoned Professional (EGA)|Xmas Card 90 EGA]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#RAVI_NOSND-B|RAVI_NOSND-B]]
 
|-
 
|-
|[[Christmas Card VGA 1990|Xmas Card 90 VGA]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|SNDBLAST
+
|[[Christmas Card 1990 - The Seasoned Professional (VGA)|Xmas Card 90 VGA]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#RAVI_NOSND-B|RAVI_NOSND-B]]
 
|}
 
|}
  
 +
== Hacked Drivers ==
  
Ravi's Drivers
+
{| class="wikitable sortable" <!-- width="800" -->
 
+
|-
{| class="wikitable sortable" width="800"
+
!Game!!GMBLAST!!MTBLAST!!SNDBLAST
 +
|-
 +
|[[Conquests of Camelot|Camelot]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#MTBLAST|MTBLAST]]||align="center"|[[Updated Sound Drivers#SNDBLAST|SNDBLAST]]
 +
|-
 +
|[[EcoQuest: The Search for Cetus|EcoQuest 1]]||align="center"|[[Updated Sound Drivers#GMBLAST|GMBLAST]]||align="center"|&nbsp;||align="center"|&nbsp;
 +
|-
 +
|[[Hoyle Official Book of Games, Volume 1|Hoyle 1]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#MTBLAST|MTBLAST]]||align="center"|[[Updated Sound Drivers#SNDBLAST|SNDBLAST]]
 +
|-
 +
|[[Hoyle Official Book of Games, Volume 2: Solitaire|Hoyle 2]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#MTBLAST|MTBLAST]]||align="center"|[[Updated Sound Drivers#MTBLAST|MTBLAST]]
 +
|-
 +
|[[Hoyle Official Book of Games, Volume 3: Great Board Games|Hoyle 3]]||align="center"|[[Updated Sound Drivers#GMBLAST|GMBLAST]]||align="center"|&nbsp;||align="center"|&nbsp;
 
|-
 
|-
!Game!!RAVI_GMDRV!!RAVI_MPUMAP!!&nbsp;RAVI_MPUMIDI!!RAVI_NOSND!!RAVI_NOSND-B
+
|[[Code-Name: ICEMAN|ICEMAN]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#MTBLAST|MTBLAST]]||align="center"|[[Updated Sound Drivers#SNDBLAST|SNDBLAST]]
 
|-
 
|-
|[[Conquests of Camelot|Camelot]]||align="center"|RAVI_GMDRV||align="center"|RAVI_MPUMAP||align="center"|&nbsp;||align="center"|RAVI_NOSND||align="center"|&nbsp;
+
|[[King's Quest I: Quest for the Crown (SCI remake)|KQ1SCI]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#MTBLAST|MTBLAST]]||align="center"|[[Updated Sound Drivers#SNDBLAST|SNDBLAST]]
 
|-
 
|-
|[[A Fun Seekers Guide to East Madera County|Fun&nbsp;Seeker's&nbsp;Guide]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|RAVI_NOSND||align="center"|&nbsp;
+
|[[King's Quest IV: The Perils of Rosella|KQ4]]*||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#MTBLAST|MTBLAST]]||align="center"|[[Updated Sound Drivers#SNDBLAST|SNDBLAST]]
 
|-
 
|-
|[[Hoyle Official Book of Games||align="center"|&nbsp; Volume 1|Hoyle 1]]||align="center"|RAVI_GMDRV||align="center"|RAVI_MPUMAP||align="center"|&nbsp;RAVI_MPUMIDI||align="center"|RAVI_NOSND||align="center"|&nbsp;
+
|[[Colonel's Bequest, The|LB1]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#MTBLAST|MTBLAST]]||align="center"|[[Updated Sound Drivers#SNDBLAST|SNDBLAST]]
 
|-
 
|-
|[[Hoyle Official Book of Games||align="center"|&nbsp; Volume 2: Solitaire|Hoyle 2]]||align="center"|RAVI_GMDRV||align="center"|RAVI_MPUMAP||align="center"|&nbsp;RAVI_MPUMIDI||align="center"|RAVI_NOSND||align="center"|&nbsp;
+
|[[Leisure Suit Larry 1: In the Land of the Lounge Lizards SCI|LSL1VGA]]||align="center"|[[Updated Sound Drivers#GMBLAST|GMBLAST]]||align="center"|&nbsp;||align="center"|&nbsp;
 
|-
 
|-
|[[Code-Name: ICEMAN|ICEMAN]]||align="center"|RAVI_GMDRV||align="center"|RAVI_MPUMAP||align="center"|&nbsp;RAVI_MPUMIDI||align="center"|RAVI_NOSND||align="center"|&nbsp;
+
|[[Leisure Suit Larry Goes Looking for Love (In Several Wrong Places)|LSL2]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#MTBLAST|MTBLAST]]||align="center"|[[Updated Sound Drivers#SNDBLAST|SNDBLAST]]
 
|-
 
|-
|[[King's Quest I: Quest for the Crown (SCI remake)|KQ1SCI]]||align="center"|&nbsp;||align="center"|RAVI_MPUMAP||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|RAVI_NOSND-B
+
|[[Leisure Suit Larry 3: Passionate Patti in Pursuit of the Pulsating Pectorals|LSL3]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#MTBLAST|MTBLAST]]||align="center"|[[Updated Sound Drivers#SNDBLAST|SNDBLAST]]
 
|-
 
|-
|[[King's Quest IV: The Perils of Rosella|KQ4]]*||align="center"|RAVI_GMDRV||align="center"|RAVI_MPUMAP||align="center"|&nbsp;RAVI_MPUMIDI||align="center"|RAVI_NOSND||align="center"|&nbsp;
+
|[[Leisure Suit Larry 5: Passionate Patti Does a Little Undercover Work|LSL5]]||align="center"|[[Updated Sound Drivers#GMBLAST|GMBLAST]]||align="center"|&nbsp;||align="center"|&nbsp;
 
|-
 
|-
|[[The Colonel's Bequest|LB1]]||align="center"|RAVI_GMDRV||align="center"|RAVI_MPUMAP||align="center"|&nbsp;RAVI_MPUMIDI||align="center"|RAVI_NOSND||align="center"|&nbsp;
+
|[[Mixed-Up Fairy Tales|Mixed-Up&nbsp;Fairy&nbsp;Tales]]||align="center"|[[Updated Sound Drivers#GMBLAST|GMBLAST]]||align="center"|&nbsp;||align="center"|&nbsp;
 
|-
 
|-
|[[Leisure Suit Larry Goes Looking for Love (In Several Wrong Places)|LSL2]]||align="center"|RAVI_GMDRV||align="center"|RAVI_MPUMAP||align="center"|&nbsp;RAVI_MPUMIDI||align="center"|RAVI_NOSND||align="center"|&nbsp;
+
|[[Police Quest 2: The Vengeance|PQ2]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#MTBLAST|MTBLAST]]||align="center"|[[Updated Sound Drivers#SNDBLAST|SNDBLAST]]
 
|-
 
|-
|[[Leisure Suit Larry 3: Passionate Patti in Pursuit of the Pulsating Pectorals|LSL3]]||align="center"|RAVI_GMDRV||align="center"|RAVI_MPUMAP||align="center"|&nbsp;RAVI_MPUMIDI||align="center"|RAVI_NOSND||align="center"|&nbsp;
+
|[[Hero's Quest: So You Want to Be a Hero|Hero]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#MTBLAST|MTBLAST]]||align="center"|[[Updated Sound Drivers#SNDBLAST|SNDBLAST]]
 
|-
 
|-
|[[Police Quest 2: The Vengeance|PQ2]]||align="center"|RAVI_GMDRV||align="center"|RAVI_MPUMAP||align="center"|&nbsp;RAVI_MPUMIDI||align="center"|RAVI_NOSND||align="center"|&nbsp;
+
|[[Quest for Glory I: So You Want to Be a Hero (EGA)|QfG1EGA]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#MTBLAST|MTBLAST]]||align="center"|[[Updated Sound Drivers#SNDBLAST|SNDBLAST]]
 
|-
 
|-
|[[Hero's Quest: So You Want to Be a Hero|Hero]]||align="center"|RAVI_GMDRV||align="center"|RAVI_MPUMAP||align="center"|&nbsp;RAVI_MPUMIDI||align="center"|RAVI_NOSND||align="center"|&nbsp;
+
|[[Quest for Glory II: Trial by Fire|QfG2]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#MTBLAST|MTBLAST]]||align="center"|[[Updated Sound Drivers#SNDBLAST|SNDBLAST]]
 
|-
 
|-
|[[Quest for Glory I: So You Want to Be a Hero (EGA)|QfG1EGA]]||align="center"|RAVI_GMDRV||align="center"|RAVI_MPUMAP||align="center"|&nbsp;RAVI_MPUMIDI||align="center"|RAVI_NOSND||align="center"|&nbsp;
+
|[[Space Quest I: The Sarien Encounter SCI|SQ1VGA]]||align="center"|[[Updated Sound Drivers#GMBLAST|GMBLAST]]||align="center"|&nbsp;||align="center"|&nbsp;
 
|-
 
|-
|[[Quest for Glory II: Trial by Fire|QfG2]]||align="center"|&nbsp;||align="center"|RAVI_MPUMAP||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|RAVI_NOSND-B
+
|[[Space Quest III: The Pirates of Pestulon|SQ3]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#MTBLAST|MTBLAST]]||align="center"|[[Updated Sound Drivers#SNDBLAST|SNDBLAST]]
 
|-
 
|-
|[[Space Quest III: The Pirates of Pestulon|SQ3]]||align="center"|RAVI_GMDRV||align="center"|RAVI_MPUMAP||align="center"|&nbsp;RAVI_MPUMIDI||align="center"|RAVI_NOSND||align="center"|&nbsp;
+
|[[Space Quest IV: Roger Wilco and the Time Rippers|SQ4]]||align="center"|[[Updated Sound Drivers#GMBLAST|GMBLAST]]||align="center"|&nbsp;||align="center"|&nbsp;
 
|-
 
|-
|[[Christmas Card EGA 1988|Xmas Card 88]]||align="center"|RAVI_GMDRV||align="center"|RAVI_MPUMAP||align="center"|&nbsp;RAVI_MPUMIDI||align="center"|RAVI_NOSND||align="center"|&nbsp;
+
|[[Sierra Christmas Card 1988|Xmas Card 88]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#MTBLAST|MTBLAST]]||align="center"|[[Updated Sound Drivers#SNDBLAST|SNDBLAST]]
 
|-
 
|-
|[[Christmas Card EGA 1990|Xmas Card 90 EGA]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|RAVI_NOSND-B
+
|[[Christmas Card 1990 - The Seasoned Professional (EGA)|Xmas Card 90 EGA]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#MTBLAST|MTBLAST]]||align="center"|[[Updated Sound Drivers#SNDBLAST|SNDBLAST]]
 
|-
 
|-
|[[Christmas Card VGA 1990|Xmas Card 90 VGA]]||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|&nbsp;||align="center"|RAVI_NOSND-B
+
|[[Christmas Card 1990 - The Seasoned Professional (VGA)|Xmas Card 90 VGA]]||align="center"|&nbsp;||align="center"|[[Updated Sound Drivers#MTBLAST|MTBLAST]]||align="center"|[[Updated Sound Drivers#SNDBLAST|SNDBLAST]]
 
|}
 
|}
  
 +
<nowiki>*</nowiki> no digital sound effects, but stereo music
 +
 +
 +
* GMBLAST - GMBLAST.zip
 +
 +
=== Game Specific Hacked Drivers ===
 +
 +
* [[Freddy Pharkas: Frontier Pharmacist|Freddy Pharkas]] - FreddyPharkas(GENMID).zip
 +
* [[Gabriel Knight: Sins of the Fathers|Gabriel Knight 1]] - GabrielKnight(GENMID).zip
 +
* [[Jones in the Fast Lane|Jones in the Fast Lane CD]] - JonesInTheFastLaneCD-ROM(AUDCDROM).zip
 +
* [[King's Quest I: Quest for the Crown (SCI remake)|King's Quest I SCI]] - KingsQuestISCI(MTBLAST).zip
 +
* [[King's Quest VI]] - KingsQuestVI(GENMID).zip
 +
* [[King's Quest VII: The Princeless Bride|King's Quest VII]] - KingsQuestVII(GENMID,speech).zip
 +
* [[Leisure Suit Larry 6: Shape Up or Slip Out!|Leisure Suit Larry 6]] - LeisureSuitLarry6(GENMID).zip
 +
* [[Pepper's Adventures in Time]] - PeppersAdventuresInTime(GENMID).zip
 +
* [[Police Quest: Open Season|Police Quest IV]] - PoliceQuestIV(GENMID,adpcm).zip
 +
* [[Quest for Glory II: Trial by Fire|Quest for Glory II]] - QuestForGloryII(MTBLAST).zip
 +
* [[Quest for Glory III: Wages of War|Quest for Glory III]] - QuestForGloryIII(GENMID).zip
 +
* [[Quest for Glory IV]] - QuestForGloryIV(GENMID).zip
 +
* [[Slater & Charlie Go Camping]] - Slater&CharlieGoCamping(GENMID).zip
 +
* [[Space Quest III]] - SpaceQuestIII(MTBLAST).zip
 +
* [[Space Quest IV|Space Quest IV CD]] - SpaceQuest IVCD(introSubtitles).zip
 +
* [[Space Quest V: The Next Mutation|Space Quest V]] - SpaceQuestV(GENMID).zip
  
 +
&nbsp;
  
Hacked Drivers
+
[[Category:SCI Driver Resources]]

Latest revision as of 18:09, 11 October 2018


Code:
/******************************************************************************
 SCI Template Game VER 1.1a
 By Brian Provinciano
 ******************************************************************************
 main.sc
 Contains the game's main instance and inventory items.
 ******************************************************************************/
(include "sci.sh")
(include "game.sh")
/******************************************************************************/
(script MAIN_SCRIPT)
/******************************************************************************/
(use "controls")
(use "sound")
(use "syswindow")
(use "cycle")
(use "game")
(use "inv")
(use "user")
(use "menubar")
(use "feature")
(use "obj")
(use "disposeload")
/******************************************************************************
 * These are the global variables. You can access them from any script as long
 * as it "use"es this script
 ******************************************************************************/
(local
    gEgo                    // points to the ego's class
    gGame                   /* points to the game instance */
    gRoom                   /* points to the current room instance */
    gSpeed                  /* the game speed (delay each interpreter cycle) */
    gQuitGame = FALSE       /* if set to TRUE, the game will exit */
    
    gCast                   /* points to the cast class (list of actors) */
    gRegions                /* points to the regions class (list of regions) */
    gLocales                /* points to the locales class (list of locales) */
    gTimers                 /* points to the timers class (list of timers) */
    gSounds                 /* points to the sounds class (list of sounds) */
    gInv                    /* points to the inventory class */
    gAddToPics              /* points to the add to pics class */
    gFeatures               /* points to the add to features class */       
    gSFeatures              /* points to the add to sfeatures class */
    
    gRoomNumberExit         /* room number exit */
    gPreviousRoomNumber     /* the number of the previous room */
    gRoomNumber             /* the number of the current room */ 
    gDebugOnExit = FALSE    /* enter debug mode on room exit */ 
    
    gScore = 0              /* the game score */        
    gMaxScore = 0           /* the maximum game score */
    gOldScore               /* previous score */
    
    gCurrentCursor          /* the number of the current cursor */
    gNormalCursor = 999     /* the number of the normal cursor (ie. arrow) */
    gLoadingCursor = 997    /* the number of the loading cursor (ie. hand) */
    
    gDefaultFont = 1        /* the number of the default font */
    gSaveRestoreFont = 0    /* the number of the font for the save/restore dialogs*/
    gDeadFont = 0           /* the number of the font for the dialog when ego dies */
    
    gUserEvent              /* points to the user's event object */
    gPrintDlg               /* points to the current Print() window */
    gVolume                 /* the sound volume */
    gVersion                /* the version string */
    gSaveDirPtr             /* points to the save directory string */
    gCheckAniWait           /* the checkAni delay */
    gSetRegions             /* a flag -- see User:doit() */
    
    gPicAngle               /* the room's pic angle */
    gOverlay = -1           /* whether to overlay the picture when drawing */
    gDefaultPicAni          /* the default pic animation */
    gDefaultPalette         /* the default palette to use for the pictures (0-3) */
    gCastMotionCue          /* if set, the cast's motionCue() is called */
    
    gTheWindow              /* points to the window class */
    gWndColor               /* the colour of the game's windows foreground (ie. text) */
    gWndBack                /* the colour of the game's windows background */

    gOldPort                /* the previous port */
    
    gEgoView                /* ego's current view number */
    
    /* hh:mm:ss | gTimeHours:gTimeMinutes:gTimeSeconds */
    /* the time elapsed since the game started */
    gTimeSeconds            /* the seconds */
    gTimeMinutes            /* the minutes */
    gTimeHours              /* the hours */
    
    gCurrentTime                /* the current time in seconds */
    
    gTheMusic               /* points to the music class */
    gTheSoundFX             /* points to the sound fx class */
    gProgramControl         /* states whether the program has control or the user */
)
/******************************************************************************/
(instance public Hello World of Game
    (properties)
    (method (init)
        // Set up the base window
        = gTheWindow theWindow
        = gWndColor clBLACK
        = gWndBack clWHITE
        (send gTheWindow:
            color(gWndColor)
            back(gWndBack)
        )

        // Initialize
        (super:init())

        /******************************
         * Set your game version here *
         ******************************/
        = gVersion "1.0"
            
        // General initialization stuff
        = gVolume 15
        DoSound(sndVOLUME gVolume)
            
        (SL:code(statusCode))
        (TheMenuBar:init())
    
        (scoreSound:
            owner(self)
            init()
        )
        = gTheMusic theMusic
        (send gTheMusic:
            owner(self)
            init()
        )
        = gTheSoundFX theSoundFX
        (send gTheSoundFX:
            owner(self)
            init()
        )
        
        = gEgo ego
        (User:
            alterEgo(gEgo)
            blocks(0)
            y(150)
        )
            
        Load(rsFONT     gDeadFont)
        Load(rsFONT     gDefaultFont)
        Load(rsFONT     gSaveRestoreFont)
    
        Load(rsCURSOR   gNormalCursor)
        Load(rsCURSOR   gLoadingCursor)
            
        (if(HaveMouse())
            (send gGame:setCursor(gNormalCursor SET_CURSOR_VISIBLE))
        )(else
            (send gGame:setCursor(gNormalCursor SET_CURSOR_VISIBLE 304 174))
        )
            
        /*************************************************
         * Initialize the inventory with it's items here *
         *************************************************/
        (Inv:
            add(
                {Nothing}
                {Test Object}
            )
        )
            
        // Start the room
        (if(GameIsRestarting())
            (self:newRoom(INITROOMS_SCRIPT))
        )(else
            (self:newRoom(TITLESCREEN_SCRIPT))
        )
    )
    (method (doit)
        (super:doit())
        (if(gProgramControl)
            (User:
                canControl(FALSE)
                canInput(FALSE)
            )
        )
        (if(<> gCurrentTime (= gCurrentTime GetTime(gtTIME_OF_DAY)))
            (if(>= ++gTimeSeconds 60)
                = gTimeSeconds 0
                ++ gTimeMinutes
                (if(>= gTimeMinutes 60)
                    = gTimeMinutes 0
                    ++ gTimeHours
                )
            )
        )
        (if(> gOldScore gScore)
                = gOldScore gScore
                (SL:doit())
        )
        (if(< gOldScore gScore)
            = gOldScore gScore
            (SL:doit())
        )
    )
    (method (replay)
        (TheMenuBar:draw())
        (SL:enable())
        
        (if(DoSound(sndSET_SOUND))
            SetMenu(MENU_TOGGLESOUND #text "Turn Off")
        )(else
            SetMenu(MENU_TOGGLESOUND #text "Turn On")
        )
        (super:replay())
    )
    (method (newRoom roomNum picAni)
            DisposePrintDlg()
            Load(rsFONT     gDeadFont)
            Load(rsFONT     gDefaultFont)
            Load(rsFONT     gSaveRestoreFont)

            Load(rsCURSOR   gNormalCursor)
            Load(rsCURSOR   gLoadingCursor)
     
            (super:newRoom(roomNum))
            (if(< paramTotal 2)
                = gDefaultPicAni Random(0 5)
            )(else
                = gDefaultPicAni picAni
            )
    )
    (method (startRoom roomNum)
        DisposeLoad(
            NULL
            FILEIO_SCRIPT JUMP_SCRIPT EXTRA_SCRIPT WINDOW_SCRIPT
                TIMER_SCRIPT FOLLOW_SCRIPT REV_SCRIPT DCICON_SCRIPT
                DOOR_SCRIPT AUTODOOR_SCRIPT WANDER_SCRIPT AVOID_SCRIPT
        )
        DisposeScript(DISPOSELOAD_SCRIPT)
        (if(gDebugOnExit)
            = gDebugOnExit FALSE
            SetDebug()
        )
        (send gTheSoundFX:
            stop()
            number(1)
        )
        (super:startRoom(roomNum))
        (if(== gTheSoundFX 11)
            (send gEgo:baseSetter(NormalBase))
        )
    )
    (method (changeScore addScore)
        = gScore + gScore addScore
        (if(> addScore 0)
            (scoreSound:playMaybe())
        )
    )
    (method (handleEvent pEvent)

        //////////////////////////////////////////////////////////////////////
        // ** This is debug functionality                                   //
        // ** Comment it out if you don't want people to cheat in your game //
        //////////////////////////////////////////////////////////////////////
          (if (== evKEYBOARD (send pEvent:type))
             // Check for ALT keys
             (switch (send pEvent:message)
                (case $2f00 // alt-v
                   Show(1) // Show visual
                )
                (case $2e00 // alt-c
                   Show(4) // Show control
                )
                (case $1900 // alt-p
                   Show(2) // Show priority
                )
                (case $3200 // alt-m
                   // Show memory usage
                      ShowFree()
                      FormatPrint(
                          "Free Heap: %u Bytes\nLargest ptr: %u Bytes\nFreeHunk: %u KBytes\nLargest hunk: %u Bytes"
                          MemoryInfo(miFREEHEAP)
                          MemoryInfo(miLARGESTPTR)
                          (>> MemoryInfo(miFREEHUNK) 6)
                          MemoryInfo(miLARGESTHUNK)
                      )
                )
                (case $1400 // alt-t
                   // teleport to room
                        (send gRoom:newRoom(GetNumber("Which Room Number?")))
                )
                (case $1700 // alt-i
                   // get inventory
                   (send gEgo:get(GetNumber("Which inventory#?")))
                )
                (case $1f00 // alt-s
                   // Show cast
                   (send gCast:eachElementDo(#showSelf))
                )
             )
          )
          ////////////////////////////////////////////////////
          // End of debug functionality                     //
          ////////////////////////////////////////////////////

        (super:handleEvent(pEvent))
        (if((<> (send pEvent:type) evSAID) or (send pEvent:claimed))
            return(TRUE)
        )

        /***********************************/
        /* Add global said statements here */
        /***********************************/
        
        (if(Said('hi'))
            Print("Well hello to you too!")
        )
  
  
        return(FALSE)
    )
)
/******************************************************************************/
(class Iitem of InvI
    (properties
    said 0
    description 0
    owner 0
    view 0
    loop 0
    cel 0
    script 0
    )
(method (showSelf)
    Print(
    description
    #title objectName
    #icon view loop cel // Changed from: #icon view 0 0
    )
  )
)
/******************************************************************************/
(instance statusCode  of Code
    (properties)
    (method (doit param1)
        Format(param1 " Score: %d of %-3d                      Template Game " gScore gMaxScore)
    )
)
/******************************************************************************/
(instance ego of Ego
    (properties
        y 1111
        x 0
        z 0
        heading 0
        yStep 2
        view 0
        loop 0
        cel 0
        priority 0
        underBits 0
        signal $2000
        nsTop 0
        nsLeft 0
        nsBottom 0
        nsRight 0
        lsTop 0
        lsLeft 0
        lsBottom 0
        lsRight 0
        brTop 0
        brLeft 0
        brBottom 0
        brRight 0
        cycleSpeed 0
        script 0
        cycler 0
        timer 0
        illegalBits $8000
        xLast 0
        yLast 0
        xStep 3
        moveSpeed 0
        blocks 0
        baseSetter 0
        mover 0
        looper 0
        viewer 0
        avoider 0
        edgeHit 0
    )
)
/******************************************************************************/
(instance scoreSound of Sound
    (properties
        state 0
        number SCORE_SOUND
        priority 10
        loop 1
        handle 0
        signal 0
        prevSignal 0
        client 0
        owner 0
    )
)
/******************************************************************************/
(instance theMusic  of Sound
    (properties
        state 0
        number 1
        priority 0
        loop 1
        handle 0
        signal 0
        prevSignal 0
        client 0
        owner 0
    )
)
/******************************************************************************/
(instance theSoundFX  of Sound
    (properties
        state 0
        number 1
        priority 5
        loop 1
        handle 0
        signal 0
        prevSignal 0
        client 0
        owner 0
    )
)
/******************************************************************************/
(instance theWindow  of SysWindow
    (properties)
    (method (open)
        (if(< Graph(grGET_COLOURS) 9)
            (if( (< color 7) or (== color 8) )
                = color 0
                = back  15
            )(else
                = color 15
                = back  0
            )
        )
        (super:open())
    )
)
/******************************************************************************/
(instance NormalBase of Code
    (properties)
    (method (doit)
        (var temp0)
        (if(== gRoomNumberExit 253)
            = temp0 22
        )(else
            = temp0 10
        )
        (send gEgo:
            brBottom(
                (+ (send gEgo:y) 1)
            )
        )
        (send gEgo:
            brTop(
                (- (send gEgo:brBottom) (send gEgo:yStep))
            )
        )
        (send gEgo:
            brLeft(
                (- (send gEgo:x) temp0)
            )
        )
        (send gEgo:
            brRight(
                (+ (send gEgo:x) temp0)
            )
        )
    )
)

/******************************************************************************
 * THE PUBLIC PROCEDURES
 ******************************************************************************/
(procedure public (SetUpEgo theLoop theView)
    PlayerControl()
    (send gEgo:edgeHit(EDGE_NONE))
    (switch(paramTotal)
        (case 0
            SetUpActor(gEgo (send gEgo:loop) gEgoView)
        )
        (case 1
            SetUpActor(gEgo theLoop gEgoView)
        )
        (case 2
            SetUpActor(gEgo theLoop theView)
        )
    )
)
/******************************************************************************/
(procedure public (SetUpActor pActor theLoop theView)
    (if(> paramTotal 1)
        (send pActor:loop(theLoop))
    )
    (if(> paramTotal 2)
        (send pActor:view(theView))
    )
    (send pActor:
        setLoop(-1)
        setPri(-1)
        setStep(3 2)
        setCycle(Walk)
        illegalBits($8000)
        cycleSpeed(0)
        moveSpeed(0)
        ignoreActors(0)
    )
)
/******************************************************************************/
(procedure public (ProgramControl)
    (User:
        canControl(FALSE)
        canInput(FALSE)
    )
    (send gEgo:setMotion(NULL))
    = gProgramControl TRUE
)
/******************************************************************************/
(procedure public (PlayerControl)
    (User:
        canControl(TRUE)
        canInput(TRUE)
    )
    (send gEgo:setMotion(NULL))
    = gProgramControl FALSE
)
/******************************************************************************/
(procedure public (DisposePrintDlg)
    (if(gPrintDlg)
        (send gPrintDlg:dispose())
    )
)
/******************************************************************************/
(procedure public (PrintOK)
    Print("O.K.")
)
/******************************************************************************/
(procedure public (PrintItIs)
    Print("It is.")
)
/******************************************************************************/
(procedure public (PrintYouAre)
    Print("You are.")
)
/******************************************************************************/
(procedure public (PrintGoodIdea)
    Print("Good idea. You might try that again later.")
)
/******************************************************************************/
(procedure public (PrintNotCloseEnough)
    Print("You're not close enough.")
)
/******************************************************************************/
(procedure public (PrintAlreadyTookIt)
    Print("You already took it.")
)
/******************************************************************************/
(procedure public (PrintDontHaveIt)
    Print("You don't have it.")
)
/******************************************************************************/
(procedure public (PrintCantDoThat mem)
    (if(> MemoryInfo(miLARGESTPTR) mem)
        return(TRUE)
    )(else
        Print("You can't do that here; at least, not now.")
        return(FALSE)
    )
)
/******************************************************************************/
(procedure public (AddViewToPic pView)
    (var hView)
    (if(pView)
        = hView (View:new())
        (send hView:
            view(send pView:view)
            loop(send pView:loop)
            cel(send pView:cel)
            priority(send pView:priority)
            posn( (send pView:x) (send pView:y) )
            addToPic()
        )
        (send pView:
            posn( (send pView:x) (+ 1000 (send pView:y)) )
        )
    )
)
/******************************************************************************/
(procedure public (SetInvIOwner index owner)
    (var hInvI)
    = hInvI (send gInv:at(index))
    (if(< paramTotal 2)
        (send hInvI:owner(gRoomNumberExit))
    )(else
        (send hInvI:owner(owner))
    )
)


/******************************************************************************
 * THE INVENTORY ITEMS                                                        *
 ******************************************************************************/
(instance Nothing  of Iitem
    (properties)
)
/******************************************************************************/
(instance {Test Object} of Iitem
    (properties
        said 'object'
        description
             "This is a test object in your inventory."
        owner 0
        view 800
        loop 0
        cel 0
        script 0
    )
)
/******************************************************************************/









Sierra After-market

Game 486SBDRV AWESOL DACBLAST E29PATCH GENMIDI GUS32 GUSDRV SB16DRV SBSCI32
Longbow   AWESOL     GENMIDI        
Dr. Brain 2             GUSDRV    
EcoQuest 1   AWESOL     GENMIDI   GUSDRV    
EcoQuest 1 CD               SB16DRV  
EcoQuest 2             GUSDRV    
Freddy Pharkas             GUSDRV    
Gabriel Knight 1   AWESOL DACBLAST       GUS32   SBSCI32
Gabriel Knight 1 CD   AWESOL     GENMIDI   GUS32   SBSCI32
Hoyle 3 486SBDRV AWESOL   E29PATCH GENMIDI        
Hoyle 4             GUSDRV    
KQ6"             GUSDRV    
KQ6CD             GUSDRV SB16DRV  
LB2CD             GUSDRV SB16DRV  
LSL1VGA 486SBDRV AWESOL   E29PATCH GENMIDI        
LSL5 486SBDRV AWESOL   E29PATCH GENMIDI        
LSL6CD   AWESOL     GENMIDI        
Mixed-Up Fairy Tales   AWESOL     GENMIDI        
Pepper             GUSDRV    
PQ1VGA             GUSDRV    
PQ3 486SBDRV     E29PATCH          
PQ4   AWESOL DACBLAST     GUS32     SBSCI32
PQ4 CD   AWESOL              
QfG1VGA               SB16DRV  
QfG4   AWESOL DACBLAST     GUS32     SBSCI32
QfG4CD   AWESOL     GENMIDI        
Slater & Charlie             GUSDRV    
SQ1VGA 486SBDRV AWESOL   E29PATCH GENMIDI        
SQ4   AWESOL     GENMIDI        
SQ4CD               SB16DRV  
SQ5             GUSDRV    

Ravi's Drivers

Game RAVI_GMDRV RAVI_MPUMAP RAVI_MPUMIDI RAVI_NOSND RAVI_NOSND-B
Camelot RAVI_GMDRV RAVI_MPUMAP   RAVI_NOSND  
Hoyle 1 RAVI_GMDRV RAVI_MPUMAP RAVI_MPUMIDI RAVI_NOSND  
Hoyle 2 RAVI_GMDRV RAVI_MPUMAP RAVI_MPUMIDI RAVI_NOSND  
ICEMAN RAVI_GMDRV RAVI_MPUMAP RAVI_MPUMIDI RAVI_NOSND  
KQ1SCI   RAVI_MPUMAP     RAVI_NOSND-B
KQ4 RAVI_GMDRV RAVI_MPUMAP RAVI_MPUMIDI RAVI_NOSND  
LB1 RAVI_GMDRV RAVI_MPUMAP RAVI_MPUMIDI RAVI_NOSND  
LSL2 RAVI_GMDRV RAVI_MPUMAP RAVI_MPUMIDI RAVI_NOSND  
LSL3 RAVI_GMDRV RAVI_MPUMAP RAVI_MPUMIDI RAVI_NOSND  
PQ2 RAVI_GMDRV RAVI_MPUMAP RAVI_MPUMIDI RAVI_NOSND  
Hero RAVI_GMDRV RAVI_MPUMAP RAVI_MPUMIDI RAVI_NOSND  
QfG1EGA RAVI_GMDRV RAVI_MPUMAP RAVI_MPUMIDI RAVI_NOSND  
QfG2   RAVI_MPUMAP     RAVI_NOSND-B
SQ3 RAVI_GMDRV RAVI_MPUMAP RAVI_MPUMIDI RAVI_NOSND  
Xmas Card 88 RAVI_GMDRV RAVI_MPUMAP RAVI_MPUMIDI RAVI_NOSND  
Xmas Card 90 EGA         RAVI_NOSND-B
Xmas Card 90 VGA         RAVI_NOSND-B

Hacked Drivers

Game GMBLAST MTBLAST SNDBLAST
Camelot   MTBLAST SNDBLAST
EcoQuest 1 GMBLAST    
Hoyle 1   MTBLAST SNDBLAST
Hoyle 2   MTBLAST MTBLAST
Hoyle 3 GMBLAST    
ICEMAN   MTBLAST SNDBLAST
KQ1SCI   MTBLAST SNDBLAST
KQ4*   MTBLAST SNDBLAST
LB1   MTBLAST SNDBLAST
LSL1VGA GMBLAST    
LSL2   MTBLAST SNDBLAST
LSL3   MTBLAST SNDBLAST
LSL5 GMBLAST    
Mixed-Up Fairy Tales GMBLAST    
PQ2   MTBLAST SNDBLAST
Hero   MTBLAST SNDBLAST
QfG1EGA   MTBLAST SNDBLAST
QfG2   MTBLAST SNDBLAST
SQ1VGA GMBLAST    
SQ3   MTBLAST SNDBLAST
SQ4 GMBLAST    
Xmas Card 88   MTBLAST SNDBLAST
Xmas Card 90 EGA   MTBLAST SNDBLAST
Xmas Card 90 VGA   MTBLAST SNDBLAST

* no digital sound effects, but stereo music


  • GMBLAST - GMBLAST.zip

Game Specific Hacked Drivers