Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - ZvikaZ

Pages: [1] 2 3 ... 9
AGI Development Tools / Re: WinAGI Version 2.1.10
« on: April 04, 2021, 09:22:26 AM »
Thanks, man. Unfortunately the list of people who know about Sierra + Apple IIGS games is about as long as the people who actually know details about Sierra's MIDI implementation- something like less than 5, and they don't know each other. :P

I think you're too pessimistic...

Anyway, if you want information regarding Sierra's Apple IIgs games, I assume you've read Another, less known resource -
You might also want to just read ScummVM's implementation, it's not too long:

It's been posited the AppleII GS version sends SysEx data at game launch.
Where have you seen that? I don't think it's accurate.

If it's true, you should be able to find it either in the game source files, or in the aforementioned ScummVM's 2gs 'driver'.
ScummVM doesn't have such code. I haven't searched the game source files, but I believe it's not there either. You can simply check it.

BTW, it won't help you with your 2gs query, but I have added a feature to ScummVM to dump MIDI commands, if using standard MIDI devices. Just run it with '--dump-midi'.

Maybe it's a known fact, but I just discovered that today, so, wanted to share...

I have always thought that in AGI the sound is either turned on, or off.

However, WinAGI help says:
v23: Sound Attenuation

For Tandy systems, this variable is used as a global volume control

OK, having a global volume control is great, but how does the user control it?

Well, I have found this at PQ1: (I assume it's similar for other games as well...)

Code: [Select]
if (machineType == TANDY)
  set.key(61, 0, c38);
  set.key(45, 0, c39);
  set.key(43, 0, c38);

and Logic0:
Code: [Select]
if (machineType == TANDY)
  if (controller(c38))
  if (controller(c39) &&
      attenuation < 15)

i.e., if the machine is Tandy, then the user can press '-' to increase attenuation (= decrease volume), and '+' (or '=', which are on the same key) to decrease attenuation (= increase volume).

ScummVM already supports PCjr sound emulation, which as far as I remember should be similar to Tandy, (is it possible with DOSBox? I have never tried...), however, it currently doesn't have a PCjr or Tandy computer types:
Code: [Select]
enum AgiComputerType {
kAgiComputerPC = 0,
kAgiComputerAtariST = 4,
kAgiComputerAmiga = 5, // Newer Amiga AGI interpreters' value (Commonly used)
kAgiComputerApple2GS = 7,
kAgiComputerAmigaOld = 20 // Older Amiga AGI interpreters' value (Seldom used)

Compared to the types in WinAGI help:
Value Computer Type
0 IBM PC compatibles
1 IBM PCjr
2 Tandy 1000
3 Apple IIe, IIc
4 Atari ST
5 Amiga
6 Macintosh
7 Cortland*
8* PS2 with MCGA

It's interesting that these two lists don't perfectly much each other. WinAGI help explain that 'Cortland' is actually 'Apple IIgs'. ScummVM is missing PCjr, Tandy, Apple IIe/c, Macintosh and PS2 - I assume because they aren't supported. However, WinAGI help is missing '20 // Older Amiga AGI interpreters' value (Seldom used)'.

- Sierra added volume control keys to Tandy. Was it a known fact?
- Why didn't they add volume control keys to other platforms that had better-than-PC-speaker sound device?
- Maybe the Older Amiga machine type should be added to WinAGI help?
- What were the differences between the Tandy and a regular PC, besides improved music? In other words, is it a good idea to set machine type for Tandy (2) in ScummVM, instead of PC (0)? 'grep'ping in PQ1 source code shows that it's harmless, but that's not enough indication to make such a change...

I have tried my last idea, with KQ2 (because of the sea sounds at the beginning which are great for volume tests), and '+' and '-' really change the volume. Cool!
('=' doesn't work, because in KQ2 it's saved for swimming)

However, another strange thing is that these keys don't appear in the menu, or in the in game help.

You've convinced me.
Now I'm really looking forward to read your series ;)

Nice update.

You might be interested in searching this forum for various threads regarding historical issues. I vaguely remember (*) few occasions that the conclusion was that the human's memory is weak, and if you have some hard evidence regarding something, that contradicts some ex-employee's memory, many times the ex-employee just doesn't remember well...

And of course, Ken Williams himself might be wrong (I'm not saying that he's wrong, I'm just raising the option that he doesn't remember well, and you should verify what he says...). And besides, when you'll read his book, you'll see that his general attitude is (in my words... ) "I'm looking forward to the future, and don't think about the past too much", so he gives the impression that he didn't try hard to memorize those things.

Anyway, if you'll ask *me* about things that I've done more than 30 years ago, I will probably forget most of the details...

(*) It's an interesting irony, that I've just demonstrated my claim by 'vaguely remembering' what I've read here ;)

You might want to read this thread:
And it refers to a post in a *very* comprehensive blog series: , which I think you should also check.

I think it's a good question, and your planned series sounds like a great idea. Please update how it's going!

Regarding ADL - you might want to read Ken Williams' recent book. He speaks a little about how they designed the mystery house, gives examples of Roberta's tables that described the games, and few more details. He doesn't give exact technical details, but still, it might interest you.

Regarding ScummVM's ADL support - you might want to speak with ScummVM guys. I assume they will be glad to give you more information. You can even interview waltervn who developed the ADL engine for ScummVM. I think that the reversing effort is an interesting story; and anyway, he's probably one of the people who know most about ADL today...

He's reachable in ScummVM's Discord server, under that nickname.

SCI Development Tools / Re: Message file format?
« on: March 11, 2021, 05:09:40 PM »
Thanks for the detailed answer!

Can you translate 'lame/ok/best' ( ;D) to some more common terms? (SCI1.1, etc.)

And what's the meaning of the best's reference bytes? What are they used for?

In PQ1 (AGI) there is a Chief Whipplestick, which is once called Captain Whipplestick.
I'm not familiar with American PDs, but does it make sense that the chief of the police department in only a captain?
Or maybe it does make sense, considering that Lytton is a small town?

It's also interesting that Whipplestick is mentioned only once in the SCI version (as 'Lytton police chief Randolph Whipplestick')

AGI Development Tools / Re: WinAGI Version 2.1.10
« on: March 08, 2021, 02:33:00 AM »
If you've mentioned extended characters handling - it'd be nice to be able to choose the encoding of the extended character set.
It's not really important for me, as I export all the strings to a csv file, and they are translated by a team in a Google Drive, and then imported back to the logic files by a script - but still, it's a nice feature - if it's not too hard to implement.

SCI Development Tools / Message file format?
« on: February 28, 2021, 10:42:53 AM »
Is there some documentation for the message file format?
(besides reading ScummVM's message.cpp , or the original

Currently, when decompiling logic files, the object names are explicitly written.
For example, from PQ1:
Code: [Select]
  if (has("Patrol Car Keys"))
However, this complicates things when the object names are translated, because it's not enough to update the objects files, but the object name has to be searched for in all logic files and updated. And if the translation is fixed, again, all the usage places should be updated.

It'd be much easier if it was possible to just retain the the i- syntax:
Code: [Select]
if (has(i1))
(similarly to the option "Show message arguments by number")


AGI Development Tools / Re: How to distribute fan made translation?
« on: February 21, 2021, 03:59:43 AM »
The GUI isn't installed by default, but it doesn't really matter. I prefer without GUIs ;)

@Collector, it's a great tool, but it'd be nice to elaborate a little in the documentation (e.g, recommend usage of the 'VPatchFile' macro) and give more complete example (e.g., with error catching).

If it's interesting anyone, I'm pasting my code, complete with backing up the original files, a handy macro, an uninstaller, removing of previous installation before installing a new one, and registering to Windows Add/Remove programs.

Code: [Select]
# In order to create the patches, run:
# "C:\Program Files (x86)\NSIS\Bin\GenPat.exe" C:\Zvika\Games\PoliceQuest\AGI.check\WORDS.TOK C:\Zvika\Games\PoliceQuest\AGI\WORDS.TOK WORDS.TOK.patch
# "C:\Program Files (x86)\NSIS\Bin\GenPat.exe" C:\Zvika\ames\PoliceQuest\AGI.check\LOGDIR C:\Zvika\Games\PoliceQuest\AGI\LOGDIR logdir.patch
# "C:\Program Files (x86)\NSIS\Bin\GenPat.exe" C:\Zvika\Games\PoliceQuest\AGI.check\VOL.0 C:\Zvika\Games\PoliceQuest\AGI\VOL.0 VOL.0.patch

!include MUI2.nsh

!define UNINSTALLER_NAME "pq1_heb_uninsaller.exe"

!macro BackupAndUpdateFile FILE
    IfFileExists "$INSTDIR\${BACKUPDIR}\*.*" +2
        CreateDirectory "$INSTDIR\${BACKUPDIR}"
    IfFileExists "$INSTDIR\${BACKUPDIR}\${FILE}" +2
        CopyFiles "$INSTDIR\${FILE}" "$INSTDIR\${BACKUPDIR}\${FILE}"

    DetailPrint "Updating ${FILE} using patch..."
    !insertmacro VPatchFile ${FILE}.patch "$INSTDIR\${FILE}" "$INSTDIR\${FILE}.tmp"

    IfErrors 0 +2

Name "התרגום העברי של PQ1"

OutFile "pq1-hebrew-installer.exe"

BrandingText "הרפתקה עברית"
Unicode true

InstallDir "C:\Zvika\Games\PoliceQuest\AGI.check"  #TODO remove this

!define MUI_TEXT_WELCOME_INFO_TEXT "ברוכים הבאים.$\r$\n \
$\r$\n \
לפני שנמשיך, יש לוודא כי:$\r$\n$\r$\n  \
יש ברשותך עותק תקין של PQ1 בגרסה המקורית עם ממשק הקלדת פקודות (ניתן לקנות ב GoG)$\r$\n \
מותקנת גרסת Daily של ScummVM$\r$\n \
המשחק באנגלית רץ בצורה תקינה ב ScummVM" ;" ; gvim get's confused without that extra "

!define MUI_FINISHPAGE_TEXT  "ההתקנה הושלמה בהצלחה.$\r$\n$\r$\n \
נשמח לשמור על קשר! $\r$\n \
חפשו 'הרפתקה עברית' בפייסבוק.$\r$\n \
מוזמנים להצטרף לדיונים, או סתם לראות איך דברים נראים מאחורי הקלעים, בערוץ הדיסקורד שלנו \
(קישור בתחתית העמוד)." ;"

!define MUI_FINISHPAGE_LINK "הצטרפות לדיסקורד 'הרפתקה עברית'"

!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_FINISH

!insertmacro MUI_LANGUAGE "Hebrew"

; The text to prompt the user to enter game's directory
DirText "בחר את התיקייה שקבצי PQ1 נמצאים בה"

!include "VPatchLib.nsh"

Section "Update file"
    ; Set output path to the installation directory
    SetOutPath $INSTDIR

    !insertmacro BackupAndUpdateFile VOL.0
    !insertmacro BackupAndUpdateFile LOGDIR
    !insertmacro BackupAndUpdateFile WORDS.TOK
    File agi-font-dos.bin
    File PQ1.WAG

    WriteUninstaller $INSTDIR\${UNINSTALLER_NAME}

    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\PQ1_Hebrew" \
                     "DisplayName" "PQ1 Hebrew translation"
    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\PQ1_Hebrew" \
                     "UninstallString" "$INSTDIR\${UNINSTALLER_NAME}"

Section "Uninstall"
    Delete $INSTDIR\agi-font-dos.bin
    Delete $INSTDIR\PQ1.WAG
    CopyFiles "$INSTDIR\${BACKUPDIR}\*.*" $INSTDIR
    Rmdir /r "$INSTDIR\${BACKUPDIR}"
    DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\PQ1_Hebrew"
Function .onInit
    IfFileExists $INSTDIR\${UNINSTALLER_NAME} 0 +3
        MessageBox MB_OK "יש להסיר תחילה את ההתקנה הישנה"

AGI Development Tools / Re: Russian translation / AGDS tool?
« on: February 18, 2021, 04:22:22 AM »
Thanks, that's very helpful!

However, AGI can print ascii codes in the ranges of 128 and 255, see
The problem is that as far as I understand, WORDS.TOK only support less than 128 codes.
Therefore, unless some hack is done to the interpreter, and WORDS.TOK is written in different format, it should be impossible to write commands in the ascii codes of 128 and above.

In the PQ1 games that you've sent, I see both English and Russian characters, which means that they left English in place, and used the 128 and above for Russian.
That's make sense with the Russian supporting code I've seen in ScummVM's AGI engine.
Also, the Russian game does accept commands in English.
I suspect that it doesn't accept commands in Russian (because of WORDS.TOK limitations), but I haven't checked that...

Well, it understands 'look', but not much beyond that.
So, maybe I'm wrong here regarding the commands it accept...

I've opened the game in WinAGI. It seems that it accepts commands in Russian, but in Latin letters.
For example, words group #2 ('look') is:
"issledui" , "izuyi" , "look", "pohupai" , "pokawi" , "posmotri" , "posmotri na", "proyti" , "yitai"

Are these (except 'look'...) valid Russian words?
Or maybe it's some kind of a hack, and each letter English letter here actually represents some Cyrillic letter?

AGI Development Tools / Re: WinAGI: feature request - batch mode
« on: February 18, 2021, 04:09:12 AM »
Thanks, now it's working.

If you could print error messages for '/d' and '/r' as well, it'd be nice.
Also, it'd be helpful to have what you wrote here documented in the help file. It will save you questions in the future ;)

Gumby. Essentially I'm trying to display an item, say crackers, but also let the player know how many crackers they have. My goal is to display in the description message a number of the particular item they have. Most items the player will just have (1 of), but I would like to have multiples for other items.
I haven't followed the discussion, but if I understand you correctly, there's a similar system at QFG1VGA (and maybe other QFGs?). You might want to take a look at its scripts.

Pages: [1] 2 3 ... 9

SMF 2.0.14 | SMF © 2017, Simple Machines
Simple Audio Video Embedder

Page created in 0.114 seconds with 20 queries.