Zork Grand Inquisitor

Ask for help with ScummVM problems

Moderator: ScummVM Team

Post Reply
Almagnus1
Posts: 6
Joined: Tue Feb 02, 2021 4:36 am

Zork Grand Inquisitor

Post by Almagnus1 »

So I'd like to revist a favorite adventure game, but I have the DVD version of ZGI (which I have since ripped), but unfortunately for me Windows 10 and the ZGI installer are not on speaking terms (despite what I have tried with compatibility layers). So while I have found https://wiki.scummvm.org/index.php/Data ... Inquisitor and https://github.com/scummvm/scummvm#3312 ... inquisitor , I'm reading through the instructions for the first link and since the installer doesn't work, I can't create the root directory for the game (assuming I'm understanding the doc correctly).

So what am I missing, or what do I need to copy from the DVD?
User avatar
Raziel
ScummVM Porter
Posts: 1517
Joined: Tue Oct 25, 2005 8:27 am
Location: a dying planet

Re: Zork Grand Inquisitor

Post by Raziel »

If you've got the DVD version you dont have to "install" anything, just rearrange stuff.

DVD version

Copy the following from the zgi_e directory into the game root directory:
The addon directory (game patch 1.2)
The zgi_mx directory
cursor.zfs
death.zfs
inquis.str
inquis.zix
r.svr
scripts.zfs
subtitle.zfs
Copy the eng_mpeg directory (hires MPEG2 video files) into the game root directory
Copy the zassetsc directory into the game root directory
Copy the zassetse directory into the game root directory
Almagnus1
Posts: 6
Joined: Tue Feb 02, 2021 4:36 am

Re: Zork Grand Inquisitor

Post by Almagnus1 »

Raziel wrote: Mon Feb 08, 2021 8:22 amCopy the following from the zgi_e directory into the game root directory:
So this may be where the confusion lies, but when you say game root directory, is that referring to the directory of stuff that ScummVM is going to use, or is that the directory where ZGI gets installed to?
User avatar
Raziel
ScummVM Porter
Posts: 1517
Joined: Tue Oct 25, 2005 8:27 am
Location: a dying planet

Re: Zork Grand Inquisitor

Post by Raziel »

The latter.

Root of the game directory where you placed your game files :-)

Good luck
Almagnus1
Posts: 6
Joined: Tue Feb 02, 2021 4:36 am

Re: Zork Grand Inquisitor

Post by Almagnus1 »

Raziel wrote: Sun Feb 14, 2021 2:23 pmThe latter.

Root of the game directory where you placed your game files :-)
Ok, that's the problem as I can't figure out how to get Windows 10 to run the ZGI DVD installer **AT ALL**. None of the compatibility settings in 10 work (none of the prior Windows versions, admin, etc), so while I can get the initial DVD autoplay menu to work, I can't get anything past that to work. I suspect there's audio API calls that are outright failing (and thus, the installer panics and fails) because I recall hearing background audio on that era of Activision installers (like you would in Interstate '76 and the various MechWarrior 2 products for example).

Which kinda leads into the ask... do you know what you'd need to copy from the DVD to the directory ScummVM is going to use and bypass the broken installer?

As I also have the CD version, I'd be fine with creating a couple of install scripts that will use the discs to do a ScummVM setup... but I kinda need to know what goes where to do that.
User avatar
Raziel
ScummVM Porter
Posts: 1517
Joined: Tue Oct 25, 2005 8:27 am
Location: a dying planet

Re: Zork Grand Inquisitor

Post by Raziel »

See my first answer.

The files and directories listed there should be sufficient to make the game playable in scummvm.

Though, I dont remember if I installed the game or simply ripped the files
Almagnus1
Posts: 6
Joined: Tue Feb 02, 2021 4:36 am

Re: Zork Grand Inquisitor

Post by Almagnus1 »

So to help automate the install process, I'm including the PowerShell script I wrote to get things into the ScummVM folder and have everything work as expected (well, that's was the hope in any case). Script is public domain btw, so feel free to do whatever you (or the ScummVM project for that matter) wants to do with it.

ScummVM recognizes that this is the DVD version of ZGI, but it dies immediately after launching although I do see the cursor for a split second.

I'm not seeing anything in the log, so how do I troubleshoot this?

Code: Select all

# Script that will perform the necessary copying of files from the Zork Grand Inquisitor DVD to generate a directory to use with ScummVM
# You will still need to manually add the fonts to your ScummVM extras directory
# FYI: If you are seeing errors running this script, make sure you have the latest version of PowerShell https://aka.ms/powershell

# Useful References:
# https://wiki.scummvm.org/index.php/Datafiles#Zork:_Grand_Inquisitor
# https://github.com/scummvm/scummvm#3312-zork-grand-inquisitor

param(
    [string] $zgiDvd,       # Location of the Zork Grand Inquisitor DVD
    [string] $destination   # Location where the ScummVM directory will be created
)

# Needed to abort copying files if an error occurs
$ErrorActionPreference = "Stop"

# Files
$dvdZgi = "$zgiDvd\ZGI"
$engMpeg = "$dvdZgi\eng_mpeg"
$zassetSc = "$dvdZgi\zassetsc"
$zassetSe = "$dvdZgi\zassetse"
$dvdZgiZgiE = "$dvdZgi\zgi_e"
$addonDir = "$dvdZgiZgiE\addon"
$zgiMxDir = "$dvdZgiZgiE\zgi_mx"
$cursorZfs = "$dvdZgiZgiE\cursor.zfs"
$deathZfs = "$dvdZgiZgiE\death.zfs"
$inquisStr = "$dvdZgiZgiE\inquis.str"
$inquisZix = "$dvdZgiZgiE\inquis.zix"
$rSvr = "$dvdZgiZgiE\r.svr"
$scriptsZfs = "$dvdZgiZgiE\scripts.zfs"
$subtitleZfs = "$dvdZgiZgiE\subtitle.zfs"

function Show-Usage {
    Write-Host "This script will copy the necessary files from the DVD to the folder you will use with ScummVM."
    Write-Host "Here are the following expected arguments:"
    Write-Host "    zgiDvd = Path to the Zork Grand Inquisitor DVD"
    Write-Host "scummVmDir = Path where the files will be copied for usage with ScummVM"
    Write-Host "`r`nNote: Please do not include a trailing '\' with any of the paths"
    exit
}

function Test-File {
    param(
        [string] $file,
        [string] $message
    )

    if((Test-Path $file) -ne $true){
        Write-Error $message
        Show-Usage
    }
}

# String IsNullOrEmpty check
if([string]::IsNullOrEmpty($zgiDvd) -or [string]::IsNullOrEmpty($destination)) { Show-Usage }

# Zork Grand Inquisitor DVD validation
Test-File -file $zgiDvd -message "zgiDvd is not a valid path"
Test-File -file $dvdZgi -message "Expected directory '$dvdZgi' on the ZGI DVD not found"
Test-File -file $dvdZgiZgiE -message "Expected directory '$dvdZgiZgiE' on the ZGI DVD not found"
Test-File -file $addonDir -message "Expected directory '$addonDir' on the ZGI DVD not found"
Test-File -file $zgiMxDir -message "Expected directory '$zgiMxDir' on the ZGI DVD not found"
Test-File -file $cursorZfs -message "Expected file '$cursorZfs' not found in $dvdZgiZgiE"
Test-File -file $deathZfs -message "Expected file '$deathZfs' not found in $dvdZgiZgiE"
Test-File -file $inquisStr -message "Expected file '$inquisStr' not found in $dvdZgiZgiE"
Test-File -file $inquisZix -message "Expected file '$inquisZix' not found in $dvdZgiZgiE"
Test-File -file $rSvr -message "Expected file '$rSvr' not found in $dvdZgiZgiE"
Test-File -file $scriptsZfs -message "Expected file '$scriptsZfs' not found in $dvdZgiZgiE"
Test-File -file $subtitleZfs -message "Expected file '$subtitleZfs' not found in $dvdZgiZgiE"
Test-File -file $engMpeg -message "Expected directory '$engMpeg' on the ZGI DVD not found"
Test-File -file $zassetSc -message "Expected directory '$zassetSc' on the ZGI DVD not found"
Test-File -file $zassetSe -message "Expected directory '$zassetSe' on the ZGI DVD not found"

# Check for destination directory, and create if it doesn't exist
if((Test-Path $destination) -ne $true) {
    mkdir $destination
    if((Test-Path $destination) -ne $true) {
        Write-Error "Directory failed to create"
        exit
    }
}

Write-Host "Copying directories..."
robocopy $addonDir "$destination\addon" /MIR
robocopy $zgiMxDir "$destination\zgi_mx" /MIR
robocopy $engMpeg "$destination\eng_mpeg" /MIR
robocopy $zassetSc "$destination\zassetsc" /MIR
robocopy $zassetSe "$destination\zassetse" /MIR
Write-Host "Directory copying complete.`r`nCopying files..."
Copy-Item $cursorZfs $destination
Copy-Item $deathZfs $destination
Copy-Item $inquisStr $destination
Copy-Item $inquisZix $destination
Copy-Item $rSvr $destination
Copy-Item $scriptsZfs $destination
Copy-Item $subtitleZfs $destination
Write-Host "File copy complete.  Enjoy!"
micpp
Posts: 1
Joined: Tue Dec 05, 2017 10:03 am

Re: Zork Grand Inquisitor

Post by micpp »

Almagnus1 wrote: Tue Feb 16, 2021 12:04 am ScummVM recognizes that this is the DVD version of ZGI, but it dies immediately after launching although I do see the cursor for a split second.
Are you using the 32-bit or 64-bit version of ScummVM? There seems to be a bug where the MPEG-2 movies make the 64-bit version crash to desktop - but if you disable them in the settings or use a 32-bit version then that seems to work
Almagnus1
Posts: 6
Joined: Tue Feb 02, 2021 4:36 am

Re: Zork Grand Inquisitor

Post by Almagnus1 »

micpp wrote: Tue Feb 16, 2021 12:26 am
Almagnus1 wrote: Tue Feb 16, 2021 12:04 am ScummVM recognizes that this is the DVD version of ZGI, but it dies immediately after launching although I do see the cursor for a split second.
Are you using the 32-bit or 64-bit version of ScummVM? There seems to be a bug where the MPEG-2 movies make the 64-bit version crash to desktop - but if you disable them in the settings or use a 32-bit version then that seems to work
That fixed it, DVD version works =D

I'll reply back once I have the script altered to work for the CD version.
Almagnus1
Posts: 6
Joined: Tue Feb 02, 2021 4:36 am

Re: Zork Grand Inquisitor

Post by Almagnus1 »

Here's an updated copy of the script that will handle creating the ScummVM folder for both the CD and DVD versions of ZGI. Again, don't really care what people do with the code, as it's public domain.

I'm looking into patching and also comparing the DVD vs the CD version, and see if there's a way to make patching the CD version easier. If someone else wants to look into it go for it.

<edit>
ZGI DVD version works as expected and allows for full game completion and there are no noticeable speed issues on a modern gaming system on ScummVM, so the script will work as a ScummVM install script. I haven't tested the CD version as I want to get that patched before attempting to run it.

Speaking of, the patcher is looking for information in the registry at "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Activision\Zork Grand Inquisitor" on Windows 10, so essentially I'd need a full install of ZGI to pull information from that I can use to try and fake an install so that the patching process will work as expected giving ScummVM a completely patched CD version of ZGI.

In other words, I'm going to need to know the last version of Windows that the ZGI installer works on so I can setup that environment (as I have several Windows installers ready to go), or someone else that can provide the registry information.
</edit>

Code: Select all

# Script that will perform the necessary copying of files from the Zork Grand Inquisitor DVD to generate a directory to use with ScummVM
# You will still need to manually add the fonts to your ScummVM extras directory
# FYI: If you are seeing errors running this script, make sure you have the latest version of PowerShell https://aka.ms/powershell
#
# ex: .\ZGI-Install.ps1 -zgiSource D: -destination C:\ZGIDVD -version DVD
# ex: .\ZGI-Install.ps1 -zgiSource D: -destination C:\ZGICD -version CD
# ex: .\ZGI-Install.ps1 -zgiSource D: -destination C:\ZGICD1 -version CD -disc Disc1
# ex: .\ZGI-Install.ps1 -zgiSource D: -destination C:\ZGICD2 -version CD -disc Disc2

# Useful References:
# https://wiki.scummvm.org/index.php/Datafiles#Zork:_Grand_Inquisitor
# https://github.com/scummvm/scummvm#3312-zork-grand-inquisitor

param(
    [parameter(Mandatory=$true)][string] $zgiSource, # Location of the Zork Grand Inquisitor install medium
    [parameter(Mandatory=$true)][string] $destination, # Location where the ScummVM directory will be created
    [parameter(Mandatory=$true)][string] $version, # DVD or CD verison of the game
    [parameter(Mandatory=$false)][string] $disc = "Both" # Only works with a CD copy, but indicates if only disc 1 or disc 2 is being copied
)

Add-Type -TypeDefinition @"
public enum GameType {DVD, CD}
"@ 

Add-Type -TypeDefinition @"
public enum Disc {Disc1, Disc2, Both}
"@

function Show-Usage {
    Write-Host "This script will copy the necessary files from the ZGI install media  to the folder you will use with ScummVM."
    Write-Host "These are the expected arguments:"
    Write-Host "  zgiSource = Path to the Zork Grand Inquisitor installation media"
    Write-Host "destination = Path where the files will be copied for usage with ScummVM"
    Write-Host "    version = Indicates which version of ZGI is being used: CD or DVD "
    Write-Host "       disc = Optional, and only works with CD version, and indicates the disc: Disc1 or Disc2"
    Write-Host "`r`nNote: CD assumes usage of the same drive`r`nNote: Please do not include a trailing '\' with any of the paths"
    exit
}

function Test-File {
    param(
        [string] $file,
        [string] $message
    )

    if((Test-Path $file) -ne $true){
        Write-Error $message
        Show-Usage
    }
}

#region Param verification
if($null -eq $version) { Show-Usage }
if(!(($version -eq [GameType]::DVD) -or ($version -eq [GameType]::CD))) { Show-Usage }
if(!(($disc -eq [Disc]::Disc1) -or ($disc -eq [Disc]::Disc2) -or ($disc -eq [Disc]::Both))) { Show-Usage }
if([string]::IsNullOrEmpty($zgiSource) -or [string]::IsNullOrEmpty($destination)) { Show-Usage }
Test-File -file $zgiSource -message "zgiSource is not a valid path"

# Check for destination directory, and create if it doesn't exist
if((Test-Path $destination) -ne $true) {
    mkdir $destination
    if((Test-Path $destination) -ne $true) {
        Write-Error "Directory failed to create"
        exit
    }
}
#endregion

#region DVD
if($version -eq [GameType]::DVD) {
    $zgi = "$zgiSource\ZGI"
    $engMpeg = "$zgi\eng_mpeg"
    $zassetSc = "$zgi\zassetsc"
    $zassetSe = "$zgi\zassetse"
    $zgiZgiE = "$zgi\zgi_e"
    $addonDir = "$zgiZgiE\addon"
    $zgiMxDir = "$zgiZgiE\zgi_mx"
    $cursorZfs = "$zgiZgiE\cursor.zfs"
    $deathZfs = "$zgiZgiE\death.zfs"
    $inquisStr = "$zgiZgiE\inquis.str"
    $inquisZix = "$zgiZgiE\inquis.zix"
    $rSvr = "$zgiZgiE\r.svr"
    $scriptsZfs = "$zgiZgiE\scripts.zfs"
    $subtitleZfs = "$zgiZgiE\subtitle.zfs"

    Test-File -file $zgi -message "Expected directory '$zgi' on the ZGI DVD not found"
    Test-File -file $zgiZgiE -message "Expected directory '$zgiZgiE' on the ZGI DVD not found"
    Test-File -file $addonDir -message "Expected directory '$addonDir' on the ZGI DVD not found"
    Test-File -file $zgiMxDir -message "Expected directory '$zgiMxDir' on the ZGI DVD not found"
    Test-File -file $cursorZfs -message "Expected file '$cursorZfs' not found in $dvdZgiZgiE"
    Test-File -file $deathZfs -message "Expected file '$deathZfs' not found in $dvdZgiZgiE"
    Test-File -file $inquisStr -message "Expected file '$inquisStr' not found in $dvdZgiZgiE"
    Test-File -file $inquisZix -message "Expected file '$inquisZix' not found in $dvdZgiZgiE"
    Test-File -file $rSvr -message "Expected file '$rSvr' not found in $dvdZgiZgiE"
    Test-File -file $scriptsZfs -message "Expected file '$scriptsZfs' not found in $dvdZgiZgiE"
    Test-File -file $subtitleZfs -message "Expected file '$subtitleZfs' not found in $dvdZgiZgiE"
    Test-File -file $engMpeg -message "Expected directory '$engMpeg' on the ZGI DVD not found"
    Test-File -file $zassetSc -message "Expected directory '$zassetSc' on the ZGI DVD not found"
    Test-File -file $zassetSe -message "Expected directory '$zassetSe' on the ZGI DVD not found"

    Write-Host "Copying directories..."
    robocopy $addonDir "$destination\addon" /MIR
    robocopy $zgiMxDir "$destination\zgi_mx" /MIR
    robocopy $engMpeg "$destination\eng_mpeg" /MIR
    robocopy $zassetSc "$destination\zassetsc" /MIR
    robocopy $zassetSe "$destination\zassetse" /MIR
    Write-Host "Directory copying complete.`r`nCopying files..."
    Copy-Item $cursorZfs $destination -Force
    Copy-Item $deathZfs $destination -Force
    Copy-Item $inquisStr $destination -Force
    Copy-Item $inquisZix $destination -Force
    Copy-Item $rSvr $destination -Force
    Copy-Item $scriptsZfs $destination -Force
    Copy-Item $subtitleZfs $destination -Force
    Write-Host "File copy complete.  Enjoy!"
}
#endregion
else {
    #region Disc 1
    if($disc -ne [Disc]::Disc2){
        $zgi = "$zgiSource\ZGI"
        $zgiMxDir = "$zgi\zgi_mx"
        $cursorZfs = "$zgi\cursor.zfs"
        $deathZfs = "$zgi\death.zfs"
        $inquisStr = "$zgi\inquis.str"
        $inquisZix = "$zgi\inquis.zix"
        $rSvr = "$zgi\r.svr"
        $scriptsZfs = "$zgi\scripts.zfs"
        $subtitleZfs = "$zgi\subtitle.zfs"
        $zassets1 = "$zgiSource\zassets1"

        Test-File -file $zgi -message "Expected directory '$zgi' on the ZGI CD 1 not found"
        Test-File -file $zgiMxDir -message "Expected directory '$zgiMxDir' on the ZGI CD 1 not found"
        Test-File -file $cursorZfs -message "Expected file '$cursorZfs' not found in $zgi"
        Test-File -file $deathZfs -message "Expected file '$deathZfs' not found in $zgi"
        Test-File -file $inquisStr -message "Expected file '$inquisStr' not found in $zgi"
        Test-File -file $inquisZix -message "Expected file '$inquisZix' not found in $zgi"
        Test-File -file $rSvr -message "Expected file '$rSvr' not found in $zgi"
        Test-File -file $scriptsZfs -message "Expected file '$scriptsZfs' not found in $zgi"
        Test-File -file $subtitleZfs -message "Expected file '$subtitleZfs' not found in $zgi"
        Test-File -file $zassets1 -message "Expected directory '$zassets1' on the ZGI CD 1 not found"
        
        Write-Host "Copying directories..."
        robocopy $zgiMxDir "$destination\zgi_mx" /MIR
        robocopy $zassets1 "$destination\zassets1" /MIR
        Write-Host "Directory copying complete.`r`nCopying files..."
        Copy-Item $cursorZfs $destination -Force
        Copy-Item $deathZfs $destination -Force
        Copy-Item $inquisStr $destination -Force
        Copy-Item $inquisZix $destination -Force
        Copy-Item $rSvr $destination -Force
        Copy-Item $scriptsZfs $destination -Force
        Copy-Item $subtitleZfs $destination -Force
        Write-Host "File copy complete."
    }
    #endregion

    if($disc -eq [Disc]::Both) {
        Write-Host "`r`nDisc 1 copy is complete, please swap to disc 2."
        Write-Host "Press any key to continue..."
        $null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown')
    }

    #region Disc 2
    if($disc -ne [Disc]::Disc1){
        $zassets2 = "$zgiSource\zassets2"

        Test-File -file $zassets2 -message "Expected directory '$zassets2' on the ZGI CD 1 not found"
        
        Write-Host "Copying directory..."
        robocopy $zassets2 "$destination\zassets2" /MIR
        Write-Host "Directory copying complete."
    }
    #endregion
}
Post Reply