@Echo off
:: Frotz Mode Selector 2.0
::
:: This batch program helps selecting visualization modes and colors
:: for the Z-Machine DOS interpreter Frotz by Stefan Jokisch.
:: This file (INF.BAT), FROTZ.EXE and the Z-Machine executable
:: must be in the same directory for it to work correctly.
:: Examples:
::          INF ZORK.DAT
::          INF ENCHANTR.Z3
::
::
:: Please send bug reports, ideas for future improvements and
:: complaints to:
::                                              [email protected]
::
::      Thank you
::
:: Guido Mureddu, 27/01/2003


:: If no filename is typed after the INF command, an error
:: message appears. (If a wrong filename is typed, though,
:: the program continues until the user tries to play.)

IF "%1" == "" GOTO Nofile



::                                          SELECT MODES
:BEGIN
SET fmode=
SET ami=
CLS
ECHO.
Echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͻ
Echo º        Frotz Mode Selector         º
Echo º                2.0                 º
Echo ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
Echo º      (C) Guido Mureddu, 2002       º
Echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Echo.
Echo.
Echo Choose a visualization mode for Frotz
Echo (A) Custom text mode
Echo (B) Infocom monochrome
Echo (C) Infocom color
Echo (D) CGA
Echo (E) EGA
Echo (F) MCGA
Echo (G) Amiga
Echo.
Echo (Q) Quit
Echo.
Choice Your choice (A-Q): /C:abcdefgq /N


IF Errorlevel 8 GOTO Quit
IF Errorlevel 7 GOTO Amiga
IF Errorlevel 6 GOTO MCGA
IF Errorlevel 5 GOTO EGA
IF Errorlevel 4 GOTO CGA
IF Errorlevel 3 GOTO INFCOL
IF Errorlevel 2 GOTO INFMONO
IF Errorlevel 1 GOTO TXT

:Amiga
SET fmode=-d5
Echo.
Echo (A) Standard Amiga Mode
Echo (B) Select Font and Colors
Echo.
Choice (A-B): /C:ab /N
IF Errorlevel 2 GOTO AMIFONT
IF Errorlevel 1 GOTO STANDARD
GOTO LOAD

:MCGA
SET fmode=-d4
Echo.
Echo (A) Standard MCGA Mode
Echo (B) Select Colors
Echo.
CHOICE (A-B): /C:ab /N
IF Errorlevel 2 GOTO TBCOLOR
IF Errorlevel 1 GOTO STANDARD

GOTO LOAD

:EGA
SET fmode=-d3
Echo.
Echo (A) Standard EGA Mode
Echo (B) Select Colors
Echo.
CHOICE (A-B): /C:ab /N
IF Errorlevel 2 GOTO TBCOLOR
IF Errorlevel 1 GOTO STANDARD


:CGA
SET fmode=-d2
GOTO STANDARD

:INFCOL
SET fmode=-d1
GOTO STANDARD

:INFMONO
SET fmode=-d0
GOTO STANDARD

:TXT
SET fmode=
GOTO TBCOLOR



::                                          SELECT COLORS


:TBCOLOR
CLS
Echo.
Echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͻ
Echo º                                    º
Echo º   Normal Text Background Color     º
Echo º                                    º
Echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Echo.
Echo (A) Black              (I) Grey
Echo (B) Blue               (J) Light Blue
Echo (C) Green              (K) Light Green
Echo (D) Cyan               (L) Light Cyan
Echo (E) Red                (M) Light Red
Echo (F) Magenta            (N) Light Magenta
Echo (G) Brown              (O) Yellow
Echo (H) Silver Grey        (P) Bright White
Echo.
Echo.
Echo Your choice:
Choice /C:abcdefghijklmnop /N
IF Errorlevel 16 GOTO TBWhite
IF Errorlevel 15 GOTO TBYellow
IF Errorlevel 14 GOTO TBLightMagenta
IF Errorlevel 13 GOTO TBLightRed
IF Errorlevel 12 GOTO TBLightCyan
IF Errorlevel 11 GOTO TBLightGreen
IF Errorlevel 10 GOTO TBLightBlue
IF Errorlevel 9 GOTO TBGrey
IF Errorlevel 8 GOTO TBSilver
IF Errorlevel 7 GOTO TBBrown
IF Errorlevel 6 GOTO TBMagenta
IF Errorlevel 5 GOTO TBRed
IF Errorlevel 4 GOTO TBCyan
IF Errorlevel 3 GOTO TBGreen
IF Errorlevel 2 GOTO TBBlue
IF Errorlevel 1 GOTO TBBlack

:TBWhite
SET TBCOL=-b15
GOTO TFCOLOR

:TBYellow
SET TBCOL=-b14
GOTO TFCOLOR

:TBLightMagenta
SET TBCOL=-b13
GOTO TFCOLOR

:TBLightRed
SET TBCOL=-b12
GOTO TFCOLOR

:TBLightCyan
SET TBCOL=-b11
GOTO TFCOLOR

:TBLightGreen
SET TBCOL=-b10
GOTO TFCOLOR

:TBLightBlue
SET TBCOL=-b9
GOTO TFCOLOR

:TBGrey
SET TBCOL=-b8
GOTO TFCOLOR

:TBSilver
SET TBCOL=-b7
GOTO TFCOLOR

:TBBrown
SET TBCOL=-b6
GOTO TFCOLOR

:TBMagenta
SET TBCOL=-b5
GOTO TFCOLOR

:TBRed
SET TBCOL=-b4
GOTO TFCOLOR

:TBCyan
SET TBCOL=-b3
GOTO TFCOLOR

:TBGreen
SET TBCOL=-b2
GOTO TFCOLOR

:TBBlue
SET TBCOL=-b1
GOTO TFCOLOR

:TBBlack
SET TBCOL=-b0
GOTO TFCOLOR

:TFCOLOR
CLS
Echo.
Echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͻ
Echo º                                    º
Echo º   Normal Text Foreground Color     º
Echo º                                    º
Echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Echo.
Echo (A) Black              (I) Grey
Echo (B) Blue               (J) Light Blue
Echo (C) Green              (K) Light Green
Echo (D) Cyan               (L) Light Cyan
Echo (E) Red                (M) Light Red
Echo (F) Magenta            (N) Light Magenta
Echo (G) Brown              (O) Yellow
Echo (H) Silver Grey        (P) Bright White
Echo.
Echo.
Echo Your choice:
Choice /C:abcdefghijklmnop /N
IF Errorlevel 16 GOTO TFWhite
IF Errorlevel 15 GOTO TFYellow
IF Errorlevel 14 GOTO TFLightMagenta
IF Errorlevel 13 GOTO TFLightRed
IF Errorlevel 12 GOTO TFLightCyan
IF Errorlevel 11 GOTO TFLightGreen
IF Errorlevel 10 GOTO TFLightBlue
IF Errorlevel 9 GOTO TFGrey
IF Errorlevel 8 GOTO TFSilver
IF Errorlevel 7 GOTO TFBrown
IF Errorlevel 6 GOTO TFMagenta
IF Errorlevel 5 GOTO TFRed
IF Errorlevel 4 GOTO TFCyan
IF Errorlevel 3 GOTO TFGreen
IF Errorlevel 2 GOTO TFBlue
IF Errorlevel 1 GOTO TFBlack

:TFWhite
SET TFCOL=-f15
GOTO SBCOLOR

:TFYellow
SET TFCOL=-f14
GOTO SBCOLOR

:TFLightMagenta
SET TFCOL=-f13
GOTO SBCOLOR

:TFLightRed
SET TFCOL=-f12
GOTO SBCOLOR

:TFLightCyan
SET TFCOL=-f11
GOTO SBCOLOR

:TFLightGreen
SET TFCOL=-f10
GOTO SBCOLOR

:TFLightBlue
SET TFCOL=-f9
GOTO SBCOLOR

:TFGrey
SET TFCOL=-f8
GOTO SBCOLOR

:TFSilver
SET TFCOL=-f7
GOTO SBCOLOR

:TFBrown
SET TFCOL=-f6
GOTO SBCOLOR

:TFMagenta
SET TFCOL=-f5
GOTO SBCOLOR

:TFRed
SET TFCOL=-f4
GOTO SBCOLOR

:TFCyan
SET TFCOL=-f3
GOTO SBCOLOR

:TFGreen
SET TFCOL=-f2
GOTO SBCOLOR

:TFBlue
SET TFCOL=-f1
GOTO SBCOLOR

:TFBlack
SET TFCOL=-f0
GOTO SBCOLOR

:SBCOLOR
CLS
Echo.
Echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͻ
Echo º                                    º
Echo º      Status Background Color       º
Echo º                                    º
Echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Echo.
Echo (A) Black              (I) Grey
Echo (B) Blue               (J) Light Blue
Echo (C) Green              (K) Light Green
Echo (D) Cyan               (L) Light Cyan
Echo (E) Red                (M) Light Red
Echo (F) Magenta            (N) Light Magenta
Echo (G) Brown              (O) Yellow
Echo (H) Silver Grey        (P) Bright White
Echo.
Echo.
Echo Your choice:
Choice /C:abcdefghijklmnop /N
IF Errorlevel 16 GOTO SBWhite
IF Errorlevel 15 GOTO SBYellow
IF Errorlevel 14 GOTO SBLightMagenta
IF Errorlevel 13 GOTO SBLightRed
IF Errorlevel 12 GOTO SBLightCyan
IF Errorlevel 11 GOTO SBLightGreen
IF Errorlevel 10 GOTO SBLightBlue
IF Errorlevel 9 GOTO SBGrey
IF Errorlevel 8 GOTO SBSilver
IF Errorlevel 7 GOTO SBBrown
IF Errorlevel 6 GOTO SBMagenta
IF Errorlevel 5 GOTO SBRed
IF Errorlevel 4 GOTO SBCyan
IF Errorlevel 3 GOTO SBGreen
IF Errorlevel 2 GOTO SBBlue
IF Errorlevel 1 GOTO SBBlack

:SBWhite
SET SBCOL=-B15
GOTO SFCOLOR

:SBYellow
SET SBCOL=-B14
GOTO SFCOLOR

:SBLightMagenta
SET SBCOL=-B13
GOTO SFCOLOR

:SBLightRed
SET SBCOL=-B12
GOTO SFCOLOR

:SBLightCyan
SET SBCOL=-B11
GOTO SFCOLOR

:SBLightGreen
SET SBCOL=-B10
GOTO SFCOLOR

:SBLightBlue
SET SBCOL=-B9
GOTO SFCOLOR

:SBGrey
SET SBCOL=-B8
GOTO SFCOLOR

:SBSilver
SET SBCOL=-B7
GOTO SFCOLOR

:SBBrown
SET SBCOL=-B6
GOTO SFCOLOR

:SBMagenta
SET SBCOL=-B5
GOTO SFCOLOR

:SBRed
SET SBCOL=-B4
GOTO SFCOLOR

:SBCyan
SET SBCOL=-B3
GOTO SFCOLOR

:SBGreen
SET SBCOL=-B2
GOTO SFCOLOR

:SBBlue
SET SBCOL=-B1
GOTO SFCOLOR

:SBBlack
SET SBCOL=-B0
GOTO SFCOLOR

:SFCOLOR
CLS
Echo.
Echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͻ
Echo º                                    º
Echo º      Status Foreground Color       º
Echo º                                    º
Echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Echo.
Echo (A) Black              (I) Grey
Echo (B) Blue               (J) Light Blue
Echo (C) Green              (K) Light Green
Echo (D) Cyan               (L) Light Cyan
Echo (E) Red                (M) Light Red
Echo (F) Magenta            (N) Light Magenta
Echo (G) Brown              (O) Yellow
Echo (H) Silver Grey        (P) Bright White
Echo.
Echo.
Echo Your choice:
Choice /C:abcdefghijklmnop /N
IF Errorlevel 16 GOTO SFWhite
IF Errorlevel 15 GOTO SFYellow
IF Errorlevel 14 GOTO SFLightMagenta
IF Errorlevel 13 GOTO SFLightRed
IF Errorlevel 12 GOTO SFLightCyan
IF Errorlevel 11 GOTO SFLightGreen
IF Errorlevel 10 GOTO SFLightBlue
IF Errorlevel 9 GOTO SFGrey
IF Errorlevel 8 GOTO SFSilver
IF Errorlevel 7 GOTO SFBrown
IF Errorlevel 6 GOTO SFMagenta
IF Errorlevel 5 GOTO SFRed
IF Errorlevel 4 GOTO SFCyan
IF Errorlevel 3 GOTO SFGreen
IF Errorlevel 2 GOTO SFBlue
IF Errorlevel 1 GOTO SFBlack

:SFWhite
SET SFCOL=-F15
GOTO RMARGIN

:SFYellow
SET SFCOL=-F14
GOTO RMARGIN

:SFLightMagenta
SET SFCOL=-F13
GOTO RMARGIN

:SFLightRed
SET SFCOL=-F12
GOTO RMARGIN

:SFLightCyan
SET SFCOL=-F11
GOTO RMARGIN

:SFLightGreen
SET SFCOL=-F10
GOTO RMARGIN

:SFLightBlue
SET SFCOL=-F9
GOTO RMARGIN

:SFGrey
SET SFCOL=-F8
GOTO RMARGIN

:SFSilver
SET SFCOL=-F7
GOTO RMARGIN

:SFBrown
SET SFCOL=-F6
GOTO RMARGIN

:SFMagenta
SET SFCOL=-F5
GOTO RMARGIN

:SFRed
SET SFCOL=-F4
GOTO RMARGIN

:SFCyan
SET SFCOL=-F3
GOTO RMARGIN

:SFGreen
SET SFCOL=-F2
GOTO RMARGIN

:SFBlue
SET SFCOL=-F1
GOTO RMARGIN

:SFBlack
SET SFCOL=-F0
GOTO RMARGIN

:RMARGIN
GOTO LOAD


::                                          SELECT AMIGA FONTS

:AMIFONT
CLS
Echo.
Echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͻ
Echo º                                    º
Echo º        Amiga Font Selection        º
Echo º                                    º
Echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Echo.
Echo (A) System font
Echo (B) Sans Serif
Echo (C) Comic Style
Echo (D) Times
Echo (E) Serif
Echo.
Echo.
Choice Your Choice (A-E): /C:abcde /N

IF Errorlevel 5 GOTO SERIF
IF Errorlevel 4 GOTO TIMES
IF Errorlevel 3 GOTO COMIC
IF Errorlevel 2 GOTO SANS
IF Errorlevel 1 GOTO SYSTEM

:SYSTEM
SET ami=-g0
GOTO TBCOLOR

:SANS
SET ami=-g1
GOTO TBCOLOR

:COMIC
SET ami=-g2
GOTO TBCOLOR

:TIMES
SET ami=-g3
GOTO TBCOLOR

:SERIF
SET ami=-g4
GOTO TBCOLOR



::                                         LOADING COMMANDS

:STANDARD
FROTZ %fmode%  %1
SET modes=FROTZ %fmode% %1
GOTO AFTERQUIT

:LOAD
IF %fmode% == "" GOTO TEXTLOAD
FROTZ %fmode% %TBCOL% %TFCOL% %SBCOL% %SFCOL% %ami% %1
SET modes=FROTZ %fmode% %TBCOL% %TFCOL% %SBCOL% %SFCOL% %ami% %1
GOTO AFTERQUIT

:TEXTLOAD
FROTZ %TBCOL% %TFCOL% %SBCOL% %SFCOL% %ami% %1
SET modes=FROTZ %TBCOL% %TFCOL% %SBCOL% %SFCOL% %ami% %1
GOTO AFTERQUIT

::            MENU DISPLAYED RIGHT AFTER THE PLAYER QUITS THE GAME

:AFTERQUIT
CLS
Echo.
Echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͻ
Echo º                                    º
Echo º            Quit Options            º
Echo º                                    º
Echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Echo.
Echo.
Echo (A) Create RUNME.BAT to play the game later
Echo     with these settings and quit
Echo.
Echo (B) Try different settings
Echo.
Echo.
Echo (Q) Quit
Echo.
Echo.
CHOICE A,B,Q? /C:abq /N
IF Errorlevel 3 GOTO Quit
IF Errorlevel 2 GOTO BEGIN
IF Errorlevel 1 GOTO RUNBAT

:RUNBAT
@ECHO %modes% > RUNME.BAT
CLS
Echo.
Echo Type RUNME to play the game with your settings
Echo.
GOTO End


:Nofile
Echo You must enter the filename of the story after INF
Echo Example: INF zork.dat
Echo.
GOTO End

:Quit
CLS
GOTO End


:End

:: Guido Mureddu, 2003
:: Made with VIM - Vi IMproved (www.vim.org)