]> 4ch.mooo.com Git - 16.git/commitdiff
removed duplicates!! wwww
authorsparky4 <sparky4@cock.li>
Tue, 25 Aug 2015 17:09:32 +0000 (12:09 -0500)
committersparky4 <sparky4@cock.li>
Tue, 25 Aug 2015 17:09:32 +0000 (12:09 -0500)
renamed:    16/v2/source/archives/V2GPL.ZIP -> 16/v2/archives/V2GPL.ZIP
deleted:    16/v2/source/ENGINE/MAKE.BAT
modified:   16/v2/source/ENGINE/MAKEFILE
modified:   16/v2/source/MAPED/GUI.C
modified:   16/v2/source/MAPED/RENDER.H
deleted:    16/v2/source/verge/ENGINE/AUDIO.H
deleted:    16/v2/source/verge/ENGINE/A_MEMORY.C
deleted:    16/v2/source/verge/ENGINE/A_MEMORY.H
deleted:    16/v2/source/verge/ENGINE/CONLIB.C
deleted:    16/v2/source/verge/ENGINE/CONLIB.H
deleted:    16/v2/source/verge/ENGINE/CONSOLE.C
deleted:    16/v2/source/verge/ENGINE/CONSOLE.H
deleted:    16/v2/source/verge/ENGINE/CONTROLS.C
deleted:    16/v2/source/verge/ENGINE/CONTROLS.H
deleted:    16/v2/source/verge/ENGINE/ENGINE.C
deleted:    16/v2/source/verge/ENGINE/ENGINE.H
deleted:    16/v2/source/verge/ENGINE/ENTITY.C
deleted:    16/v2/source/verge/ENGINE/ENTITY.H
deleted:    16/v2/source/verge/ENGINE/FLI.C
deleted:    16/v2/source/verge/ENGINE/FLI.H
deleted:    16/v2/source/verge/ENGINE/FONT.C
deleted:    16/v2/source/verge/ENGINE/FONT.H
deleted:    16/v2/source/verge/ENGINE/IMAGE.C
deleted:    16/v2/source/verge/ENGINE/IMAGE.H
deleted:    16/v2/source/verge/ENGINE/INTER.H
deleted:    16/v2/source/verge/ENGINE/KEYBOARD.H
deleted:    16/v2/source/verge/ENGINE/KEYBOARD.S
deleted:    16/v2/source/verge/ENGINE/MAIN.H
deleted:    16/v2/source/verge/ENGINE/MAKEFILE
deleted:    16/v2/source/verge/ENGINE/MESSAGE.C
deleted:    16/v2/source/verge/ENGINE/MESSAGE.H
deleted:    16/v2/source/verge/ENGINE/MIKMOD.A
deleted:    16/v2/source/verge/ENGINE/MIKMOD.C
deleted:    16/v2/source/verge/ENGINE/MIKMOD.H
deleted:    16/v2/source/verge/ENGINE/MODE13H.C
deleted:    16/v2/source/verge/ENGINE/MODEINIT.C
deleted:    16/v2/source/verge/ENGINE/MODEX.C
deleted:    16/v2/source/verge/ENGINE/MTYPES.H
deleted:    16/v2/source/verge/ENGINE/PCX.H
deleted:    16/v2/source/verge/ENGINE/RENDER.C
deleted:    16/v2/source/verge/ENGINE/RENDER.H
deleted:    16/v2/source/verge/ENGINE/SINCOS.H
deleted:    16/v2/source/verge/ENGINE/SOUND.C
deleted:    16/v2/source/verge/ENGINE/SOUND.H
deleted:    16/v2/source/verge/ENGINE/STARTUP.C
deleted:    16/v2/source/verge/ENGINE/TIMER.C
deleted:    16/v2/source/verge/ENGINE/TIMER.H
deleted:    16/v2/source/verge/ENGINE/VC.C
deleted:    16/v2/source/verge/ENGINE/VC.H
deleted:    16/v2/source/verge/ENGINE/VCCODE.H
deleted:    16/v2/source/verge/ENGINE/VDRIVER.C
deleted:    16/v2/source/verge/ENGINE/VDRIVER.H
deleted:    16/v2/source/verge/ENGINE/VERGE.C
deleted:    16/v2/source/verge/ENGINE/VERGE.H
deleted:    16/v2/source/verge/ENGINE/VESA.C
deleted:    16/v2/source/verge/ENGINE/VFILE.C
deleted:    16/v2/source/verge/ENGINE/VFILE.H
deleted:    16/v2/source/verge/MAPED/A_MEMORY.C
deleted:    16/v2/source/verge/MAPED/COLBAK.H
deleted:    16/v2/source/verge/MAPED/COLSTUFF.H
deleted:    16/v2/source/verge/MAPED/COLUMNS.C
deleted:    16/v2/source/verge/MAPED/COLUMNS.H
deleted:    16/v2/source/verge/MAPED/CONFIG.C
deleted:    16/v2/source/verge/MAPED/CONFIG.H
deleted:    16/v2/source/verge/MAPED/CONTROLS.C
deleted:    16/v2/source/verge/MAPED/GUI.C
deleted:    16/v2/source/verge/MAPED/GUI.H
deleted:    16/v2/source/verge/MAPED/GUICOMP.C
deleted:    16/v2/source/verge/MAPED/GUICOMP.H
deleted:    16/v2/source/verge/MAPED/INTER.H
deleted:    16/v2/source/verge/MAPED/KEYBOARD.C
deleted:    16/v2/source/verge/MAPED/KEYBOARD.H
deleted:    16/v2/source/verge/MAPED/MAKEFILE
deleted:    16/v2/source/verge/MAPED/MAPED.C
deleted:    16/v2/source/verge/MAPED/MAPED.H
deleted:    16/v2/source/verge/MAPED/MIKMOD.C
deleted:    16/v2/source/verge/MAPED/MIKMOD.H
deleted:    16/v2/source/verge/MAPED/MIKMOD.LIB
deleted:    16/v2/source/verge/MAPED/MINIMAP.C
deleted:    16/v2/source/verge/MAPED/MINIMAP.H
deleted:    16/v2/source/verge/MAPED/MODE13H.C
deleted:    16/v2/source/verge/MAPED/MODE13H.H
deleted:    16/v2/source/verge/MAPED/MODEX.C
deleted:    16/v2/source/verge/MAPED/MODEX.H
deleted:    16/v2/source/verge/MAPED/MOUSE.C
deleted:    16/v2/source/verge/MAPED/MOUSE.H
deleted:    16/v2/source/verge/MAPED/MTYPES.H
deleted:    16/v2/source/verge/MAPED/PCX.C
deleted:    16/v2/source/verge/MAPED/RENDER.C
deleted:    16/v2/source/verge/MAPED/RENDER.H
deleted:    16/v2/source/verge/MAPED/SMALFONT.C
deleted:    16/v2/source/verge/MAPED/SMALFONT.H
deleted:    16/v2/source/verge/MAPED/SSAVER.C
deleted:    16/v2/source/verge/MAPED/SSAVER.H
deleted:    16/v2/source/verge/MAPED/SSAVER1.C
deleted:    16/v2/source/verge/MAPED/TILEED.C
deleted:    16/v2/source/verge/MAPED/TILEED.H
deleted:    16/v2/source/verge/MAPED/TILESEL.C
deleted:    16/v2/source/verge/MAPED/TILESEL.H
deleted:    16/v2/source/verge/MAPED/TIMER.C
deleted:    16/v2/source/verge/MAPED/TIMER.H
deleted:    16/v2/source/verge/MAPED/VDRIVER.C
deleted:    16/v2/source/verge/MAPED/VDRIVER.H
deleted:    16/v2/source/verge/MAPED/VERGEPAL.H
deleted:    16/v2/source/verge/README.TXT
deleted:    16/v2/source/verge/UTIL/CHRCONV/CHRCONV.C
deleted:    16/v2/source/verge/UTIL/CHRCONV/CHRCONV.TXT
deleted:    16/v2/source/verge/UTIL/CHRCONV/DARIN.CHR
deleted:    16/v2/source/verge/UTIL/CHRCONV/MAKEDJ.BAT
deleted:    16/v2/source/verge/UTIL/CHRMAK/CHRMAK.CC
deleted:    16/v2/source/verge/UTIL/CHRMAK/CHRMAK.TXT
deleted:    16/v2/source/verge/UTIL/CHRMAK/MAKEDJ.BAT
deleted:    16/v2/source/verge/UTIL/CHRMAK/MAKEWAT.BAT
deleted:    16/v2/source/verge/UTIL/CHRMAK/VECNA.MAK
deleted:    16/v2/source/verge/UTIL/CHRMAK/VECNA.PCX
deleted:    16/v2/source/verge/UTIL/CHRMAK/VER
deleted:    16/v2/source/verge/UTIL/PACK/MAKEDJ.BAT
deleted:    16/v2/source/verge/UTIL/PACK/PACK.C
deleted:    16/v2/source/verge/UTIL/PACK/PACK.TXT
deleted:    16/v2/source/verge/UTIL/PACK/TEST
deleted:    16/v2/source/verge/UTIL/PACK/TODO
deleted:    16/v2/source/verge/UTIL/PCX2FNT/FONT0.PCX
deleted:    16/v2/source/verge/UTIL/PCX2FNT/FONT02B.PCX
deleted:    16/v2/source/verge/UTIL/PCX2FNT/MAKEDJ.BAT
deleted:    16/v2/source/verge/UTIL/PCX2FNT/PCX2FNT.C
deleted:    16/v2/source/verge/UTIL/PCX2FNT/PCX2FNT.TXT
deleted:    16/v2/source/verge/UTIL/TRANS/MAKEDJ.BAT
deleted:    16/v2/source/verge/UTIL/TRANS/SULLY.PDF
deleted:    16/v2/source/verge/UTIL/TRANS/TRANS.C
deleted:    16/v2/source/verge/UTIL/TRANS/TRANS.TXT
deleted:    16/v2/source/verge/UTIL/TRANS/TYRIAN.PDF
deleted:    16/v2/source/verge/UTIL/TRANS/TYRPAL.PCX
deleted:    16/v2/source/verge/UTIL/TRANS/VERGE.PDF
deleted:    16/v2/source/verge/UTIL/UNPACK/MAKEDJ.BAT
deleted:    16/v2/source/verge/UTIL/UNPACK/TEST
deleted:    16/v2/source/verge/UTIL/UNPACK/TODO
deleted:    16/v2/source/verge/UTIL/UNPACK/UNPACK.C
deleted:    16/v2/source/verge/UTIL/UNPACK/UNPACK.TXT
deleted:    16/v2/source/verge/VCC/CLEAN.BAT
deleted:    16/v2/source/verge/VCC/CODE.H
deleted:    16/v2/source/verge/VCC/COMPILE.C
deleted:    16/v2/source/verge/VCC/COMPILE.H
deleted:    16/v2/source/verge/VCC/FUNCLIB.C
deleted:    16/v2/source/verge/VCC/FUNCLIB.H
deleted:    16/v2/source/verge/VCC/LEXICAL.C
deleted:    16/v2/source/verge/VCC/LEXICAL.H
deleted:    16/v2/source/verge/VCC/MAKEDJ.BAT
deleted:    16/v2/source/verge/VCC/PREPROC.C
deleted:    16/v2/source/verge/VCC/PREPROC.H
deleted:    16/v2/source/verge/VCC/VCC.C
deleted:    16/v2/source/verge/VCC/VCC.H
deleted:    16/v2/source/verge/VCC/VCCODE.H
deleted:    16/v2/source/verge/gnu.txt

153 files changed:
16/v2/archives/V2GPL.ZIP [moved from 16/v2/source/archives/V2GPL.ZIP with 100% similarity]
16/v2/source/ENGINE/MAKE.BAT [deleted file]
16/v2/source/ENGINE/MAKEFILE
16/v2/source/MAPED/GUI.C
16/v2/source/MAPED/RENDER.H
16/v2/source/verge/ENGINE/AUDIO.H [deleted file]
16/v2/source/verge/ENGINE/A_MEMORY.C [deleted file]
16/v2/source/verge/ENGINE/A_MEMORY.H [deleted file]
16/v2/source/verge/ENGINE/CONLIB.C [deleted file]
16/v2/source/verge/ENGINE/CONLIB.H [deleted file]
16/v2/source/verge/ENGINE/CONSOLE.C [deleted file]
16/v2/source/verge/ENGINE/CONSOLE.H [deleted file]
16/v2/source/verge/ENGINE/CONTROLS.C [deleted file]
16/v2/source/verge/ENGINE/CONTROLS.H [deleted file]
16/v2/source/verge/ENGINE/ENGINE.C [deleted file]
16/v2/source/verge/ENGINE/ENGINE.H [deleted file]
16/v2/source/verge/ENGINE/ENTITY.C [deleted file]
16/v2/source/verge/ENGINE/ENTITY.H [deleted file]
16/v2/source/verge/ENGINE/FLI.C [deleted file]
16/v2/source/verge/ENGINE/FLI.H [deleted file]
16/v2/source/verge/ENGINE/FONT.C [deleted file]
16/v2/source/verge/ENGINE/FONT.H [deleted file]
16/v2/source/verge/ENGINE/IMAGE.C [deleted file]
16/v2/source/verge/ENGINE/IMAGE.H [deleted file]
16/v2/source/verge/ENGINE/INTER.H [deleted file]
16/v2/source/verge/ENGINE/KEYBOARD.H [deleted file]
16/v2/source/verge/ENGINE/KEYBOARD.S [deleted file]
16/v2/source/verge/ENGINE/MAIN.H [deleted file]
16/v2/source/verge/ENGINE/MAKEFILE [deleted file]
16/v2/source/verge/ENGINE/MESSAGE.C [deleted file]
16/v2/source/verge/ENGINE/MESSAGE.H [deleted file]
16/v2/source/verge/ENGINE/MIKMOD.A [deleted file]
16/v2/source/verge/ENGINE/MIKMOD.C [deleted file]
16/v2/source/verge/ENGINE/MIKMOD.H [deleted file]
16/v2/source/verge/ENGINE/MODE13H.C [deleted file]
16/v2/source/verge/ENGINE/MODEINIT.C [deleted file]
16/v2/source/verge/ENGINE/MODEX.C [deleted file]
16/v2/source/verge/ENGINE/MTYPES.H [deleted file]
16/v2/source/verge/ENGINE/PCX.H [deleted file]
16/v2/source/verge/ENGINE/RENDER.C [deleted file]
16/v2/source/verge/ENGINE/RENDER.H [deleted file]
16/v2/source/verge/ENGINE/SINCOS.H [deleted file]
16/v2/source/verge/ENGINE/SOUND.C [deleted file]
16/v2/source/verge/ENGINE/SOUND.H [deleted file]
16/v2/source/verge/ENGINE/STARTUP.C [deleted file]
16/v2/source/verge/ENGINE/TIMER.C [deleted file]
16/v2/source/verge/ENGINE/TIMER.H [deleted file]
16/v2/source/verge/ENGINE/VC.C [deleted file]
16/v2/source/verge/ENGINE/VC.H [deleted file]
16/v2/source/verge/ENGINE/VCCODE.H [deleted file]
16/v2/source/verge/ENGINE/VDRIVER.C [deleted file]
16/v2/source/verge/ENGINE/VDRIVER.H [deleted file]
16/v2/source/verge/ENGINE/VERGE.C [deleted file]
16/v2/source/verge/ENGINE/VERGE.H [deleted file]
16/v2/source/verge/ENGINE/VESA.C [deleted file]
16/v2/source/verge/ENGINE/VFILE.C [deleted file]
16/v2/source/verge/ENGINE/VFILE.H [deleted file]
16/v2/source/verge/MAPED/A_MEMORY.C [deleted file]
16/v2/source/verge/MAPED/COLBAK.H [deleted file]
16/v2/source/verge/MAPED/COLSTUFF.H [deleted file]
16/v2/source/verge/MAPED/COLUMNS.C [deleted file]
16/v2/source/verge/MAPED/COLUMNS.H [deleted file]
16/v2/source/verge/MAPED/CONFIG.C [deleted file]
16/v2/source/verge/MAPED/CONFIG.H [deleted file]
16/v2/source/verge/MAPED/CONTROLS.C [deleted file]
16/v2/source/verge/MAPED/GUI.C [deleted file]
16/v2/source/verge/MAPED/GUI.H [deleted file]
16/v2/source/verge/MAPED/GUICOMP.C [deleted file]
16/v2/source/verge/MAPED/GUICOMP.H [deleted file]
16/v2/source/verge/MAPED/INTER.H [deleted file]
16/v2/source/verge/MAPED/KEYBOARD.C [deleted file]
16/v2/source/verge/MAPED/KEYBOARD.H [deleted file]
16/v2/source/verge/MAPED/MAKEFILE [deleted file]
16/v2/source/verge/MAPED/MAPED.C [deleted file]
16/v2/source/verge/MAPED/MAPED.H [deleted file]
16/v2/source/verge/MAPED/MIKMOD.C [deleted file]
16/v2/source/verge/MAPED/MIKMOD.H [deleted file]
16/v2/source/verge/MAPED/MIKMOD.LIB [deleted file]
16/v2/source/verge/MAPED/MINIMAP.C [deleted file]
16/v2/source/verge/MAPED/MINIMAP.H [deleted file]
16/v2/source/verge/MAPED/MODE13H.C [deleted file]
16/v2/source/verge/MAPED/MODE13H.H [deleted file]
16/v2/source/verge/MAPED/MODEX.C [deleted file]
16/v2/source/verge/MAPED/MODEX.H [deleted file]
16/v2/source/verge/MAPED/MOUSE.C [deleted file]
16/v2/source/verge/MAPED/MOUSE.H [deleted file]
16/v2/source/verge/MAPED/MTYPES.H [deleted file]
16/v2/source/verge/MAPED/PCX.C [deleted file]
16/v2/source/verge/MAPED/RENDER.C [deleted file]
16/v2/source/verge/MAPED/RENDER.H [deleted file]
16/v2/source/verge/MAPED/SMALFONT.C [deleted file]
16/v2/source/verge/MAPED/SMALFONT.H [deleted file]
16/v2/source/verge/MAPED/SSAVER.C [deleted file]
16/v2/source/verge/MAPED/SSAVER.H [deleted file]
16/v2/source/verge/MAPED/SSAVER1.C [deleted file]
16/v2/source/verge/MAPED/TILEED.C [deleted file]
16/v2/source/verge/MAPED/TILEED.H [deleted file]
16/v2/source/verge/MAPED/TILESEL.C [deleted file]
16/v2/source/verge/MAPED/TILESEL.H [deleted file]
16/v2/source/verge/MAPED/TIMER.C [deleted file]
16/v2/source/verge/MAPED/TIMER.H [deleted file]
16/v2/source/verge/MAPED/VDRIVER.C [deleted file]
16/v2/source/verge/MAPED/VDRIVER.H [deleted file]
16/v2/source/verge/MAPED/VERGEPAL.H [deleted file]
16/v2/source/verge/README.TXT [deleted file]
16/v2/source/verge/UTIL/CHRCONV/CHRCONV.C [deleted file]
16/v2/source/verge/UTIL/CHRCONV/CHRCONV.TXT [deleted file]
16/v2/source/verge/UTIL/CHRCONV/DARIN.CHR [deleted file]
16/v2/source/verge/UTIL/CHRCONV/MAKEDJ.BAT [deleted file]
16/v2/source/verge/UTIL/CHRMAK/CHRMAK.CC [deleted file]
16/v2/source/verge/UTIL/CHRMAK/CHRMAK.TXT [deleted file]
16/v2/source/verge/UTIL/CHRMAK/MAKEDJ.BAT [deleted file]
16/v2/source/verge/UTIL/CHRMAK/MAKEWAT.BAT [deleted file]
16/v2/source/verge/UTIL/CHRMAK/VECNA.MAK [deleted file]
16/v2/source/verge/UTIL/CHRMAK/VECNA.PCX [deleted file]
16/v2/source/verge/UTIL/CHRMAK/VER [deleted file]
16/v2/source/verge/UTIL/PACK/MAKEDJ.BAT [deleted file]
16/v2/source/verge/UTIL/PACK/PACK.C [deleted file]
16/v2/source/verge/UTIL/PACK/PACK.TXT [deleted file]
16/v2/source/verge/UTIL/PACK/TEST [deleted file]
16/v2/source/verge/UTIL/PACK/TODO [deleted file]
16/v2/source/verge/UTIL/PCX2FNT/FONT0.PCX [deleted file]
16/v2/source/verge/UTIL/PCX2FNT/FONT02B.PCX [deleted file]
16/v2/source/verge/UTIL/PCX2FNT/MAKEDJ.BAT [deleted file]
16/v2/source/verge/UTIL/PCX2FNT/PCX2FNT.C [deleted file]
16/v2/source/verge/UTIL/PCX2FNT/PCX2FNT.TXT [deleted file]
16/v2/source/verge/UTIL/TRANS/MAKEDJ.BAT [deleted file]
16/v2/source/verge/UTIL/TRANS/SULLY.PDF [deleted file]
16/v2/source/verge/UTIL/TRANS/TRANS.C [deleted file]
16/v2/source/verge/UTIL/TRANS/TRANS.TXT [deleted file]
16/v2/source/verge/UTIL/TRANS/TYRIAN.PDF [deleted file]
16/v2/source/verge/UTIL/TRANS/TYRPAL.PCX [deleted file]
16/v2/source/verge/UTIL/TRANS/VERGE.PDF [deleted file]
16/v2/source/verge/UTIL/UNPACK/MAKEDJ.BAT [deleted file]
16/v2/source/verge/UTIL/UNPACK/TEST [deleted file]
16/v2/source/verge/UTIL/UNPACK/TODO [deleted file]
16/v2/source/verge/UTIL/UNPACK/UNPACK.C [deleted file]
16/v2/source/verge/UTIL/UNPACK/UNPACK.TXT [deleted file]
16/v2/source/verge/VCC/CLEAN.BAT [deleted file]
16/v2/source/verge/VCC/CODE.H [deleted file]
16/v2/source/verge/VCC/COMPILE.C [deleted file]
16/v2/source/verge/VCC/COMPILE.H [deleted file]
16/v2/source/verge/VCC/FUNCLIB.C [deleted file]
16/v2/source/verge/VCC/FUNCLIB.H [deleted file]
16/v2/source/verge/VCC/LEXICAL.C [deleted file]
16/v2/source/verge/VCC/LEXICAL.H [deleted file]
16/v2/source/verge/VCC/MAKEDJ.BAT [deleted file]
16/v2/source/verge/VCC/PREPROC.C [deleted file]
16/v2/source/verge/VCC/PREPROC.H [deleted file]
16/v2/source/verge/VCC/VCC.C [deleted file]
16/v2/source/verge/VCC/VCC.H [deleted file]
16/v2/source/verge/VCC/VCCODE.H [deleted file]
16/v2/source/verge/gnu.txt [deleted file]

diff --git a/16/v2/source/ENGINE/MAKE.BAT b/16/v2/source/ENGINE/MAKE.BAT
deleted file mode 100755 (executable)
index 291b92e..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-wcc386 a_memory.c\r
-wcc386 conlib.c\r
-wcc386 console.c\r
-wcc386 controls.c\r
-wcc386 engine.c\r
-wcc386 entity.c\r
-wcc386 fli.c\r
-wcc386 font.c\r
-wcc386 image.c\r
-wcc386 message.c\r
-wcc386 mikmod.c\r
-wcc386 mode13h.c\r
-wcc386 modeinit.c\r
-wcc386 modex.c\r
-wcc386 render.c\r
-wcc386 sound.c\r
-wcc386 startup.c\r
-wcc386 timer.c\r
-wcc386 vc.c\r
-wcc386 vdriver.c\r
-wcc386 verge.c\r
-wcc386 vesa.c\r
-wcc386 vfile.c\r
index db5016dafe0ebdc62106fa4625f6d004511bc215..f557fa319603f4aec43b3a9d0566eff62b7baae8 100755 (executable)
@@ -1,7 +1,7 @@
-CC = wcc386\r
+CC = gcc\r
 CFLAGS = -s -Wall -Werror\r
 \r
-OBJ = a_memory.obj conlib.obj console.obj  controls.obj engine.obj entity.obj font.obj image.obj  keyboard.obj message.obj  modeinit.obj render.obj  startup.obj  timer.obj verge.obj vc.obj  vdriver.obj vfile.obj fli.obj sound.obj mikmod.a\r
+OBJ = a_memory.o conlib.o console.o  controls.o engine.o entity.o font.o image.o  keyboard.o message.o  modeinit.o render.o  startup.o  timer.o verge.o vc.o  vdriver.o vfile.o fli.o sound.o mikmod.a\r
 \r
 verge: $(OBJ)\r
 \r
index d4869d421ab597331bd2222550a05fff7624acb0..49bdc469ea62481a85c4e2bd5cc4cdf8af899e67 100755 (executable)
@@ -260,7 +260,7 @@ void MainMenu(int dx, int dy)
        if (my>dy+47 && my<dy+54) { done=1; WaitRelease(); MPDialog(); break; }\r
        if (my>dy+53 && my<dy+60) { done=1; WaitRelease(); CDDialog(); break; }\r
        if (my>dy+59 && my<dy+66) { done=1; WaitRelease(); Columns(); break; }\r
-       if (my>dy+65 && my<dy+72) { done=1; WaitRelease(); ExecuteSubMenu(0, 0); break; }\r
+       if (my>dy+65 && my<dy+72) { done=1; WaitRelease(); ExecuteSubMenu(); break; }\r
        if (my>dy+71 && my<dy+78) { done=1; WaitRelease(); key[SCAN_X]=1; key[SCAN_ALT]=1; break; }\r
        if (my>dy+80 && my<dy+87) { done=1; About(); break; }\r
     }\r
index 5849d32b90d0439185b2f3198b4af879f0f86d76..4e9c7bc53b91fa8c9013b13bab70d0290baffccb 100755 (executable)
@@ -42,8 +42,7 @@ extern void DoCHR(int i);
 extern void DoCHRdealy();\r
 extern void BlitBackLayer(char l);\r
 extern void LucentBlitLayer(char l);\r
-extern void TransBlitLayer(char l);
-extern void TransBlitLayer_(char l);\r
+extern void TransBlitLayer(char l);\r
 extern void BlitLayer(char c);\r
 extern void DrawObstructions();\r
 extern void DrawZones();\r
diff --git a/16/v2/source/verge/ENGINE/AUDIO.H b/16/v2/source/verge/ENGINE/AUDIO.H
deleted file mode 100755 (executable)
index ee13302..0000000
+++ /dev/null
@@ -1,340 +0,0 @@
-/*\r
- * $Id: audio.h 1.17 1996/09/25 17:13:02 chasan released $\r
- *\r
- * SEAL Synthetic Audio Library API Interface\r
- *\r
- * Copyright (C) 1995, 1996 Carlos Hasan. All Rights Reserved.\r
- *\r
- */\r
-\r
-#ifndef __AUDIO_H\r
-#define __AUDIO_H\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-#ifndef WIN32\r
-#define AIAPI\r
-#else\r
-#define AIAPI __stdcall\r
-#endif\r
-\r
-#ifndef WINAPI\r
-\r
-/* atomic data types definitions */\r
-typedef void            VOID;\r
-typedef char            CHAR;\r
-typedef int             INT;\r
-typedef long            LONG;\r
-typedef int             BOOL;\r
-\r
-typedef unsigned char   BYTE;\r
-typedef unsigned short  WORD;\r
-typedef unsigned int    UINT;\r
-typedef unsigned long   DWORD;\r
-\r
-typedef VOID*           LPVOID;\r
-typedef CHAR*           LPCHAR;\r
-typedef INT*            LPINT;\r
-typedef LONG*           LPLONG;\r
-typedef BOOL*           LPBOOL;\r
-typedef BYTE*           LPBYTE;\r
-typedef WORD*           LPWORD;\r
-typedef UINT*           LPUINT;\r
-typedef DWORD*          LPDWORD;\r
-typedef CHAR*           LPSTR;\r
-typedef DWORD           HANDLE;\r
-\r
-/* helper macros */\r
-#define LOBYTE(s)       ((BYTE)(s))\r
-#define HIBYTE(s)       ((BYTE)((WORD)(s)>>8))\r
-#define LOWORD(l)       ((WORD)(l))\r
-#define HIWORD(l)       ((WORD)((DWORD)(l)>>16))\r
-#define MAKEWORD(l,h)   ((WORD)(((BYTE)(l))|(((WORD)((BYTE)(h)))<<8)))\r
-#define MAKELONG(l,h)   ((DWORD)(((WORD)(l))|(((DWORD)((WORD)(h)))<<16)))\r
-\r
-#endif\r
-\r
-\r
-/* audio system version number */\r
-#define AUDIO_SYSTEM_VERSION            0x0101\r
-\r
-/* audio capabilities bit fields definitions */\r
-#define AUDIO_FORMAT_1M08               0x00000001\r
-#define AUDIO_FORMAT_1S08               0x00000002\r
-#define AUDIO_FORMAT_1M16               0x00000004\r
-#define AUDIO_FORMAT_1S16               0x00000008\r
-#define AUDIO_FORMAT_2M08               0x00000010\r
-#define AUDIO_FORMAT_2S08               0x00000020\r
-#define AUDIO_FORMAT_2M16               0x00000040\r
-#define AUDIO_FORMAT_2S16               0x00000080\r
-#define AUDIO_FORMAT_4M08               0x00000100\r
-#define AUDIO_FORMAT_4S08               0x00000200\r
-#define AUDIO_FORMAT_4M16               0x00000400\r
-#define AUDIO_FORMAT_4S16               0x00000800\r
-\r
-/* audio format bit fields defines for devices and waveforms */\r
-#define AUDIO_FORMAT_8BITS              0x0000\r
-#define AUDIO_FORMAT_16BITS             0x0001\r
-#define AUDIO_FORMAT_LOOP               0x0010\r
-#define AUDIO_FORMAT_BIDILOOP           0x0020\r
-#define AUDIO_FORMAT_REVERSE            0x0080\r
-#define AUDIO_FORMAT_MONO               0x0000\r
-#define AUDIO_FORMAT_STEREO             0x0100\r
-#define AUDIO_FORMAT_FILTER             0x8000\r
-\r
-/* audio resource limits defines */\r
-#define AUDIO_MAX_VOICES                32\r
-#define AUDIO_MAX_SAMPLES               16\r
-#define AUDIO_MAX_PATCHES               128\r
-#define AUDIO_MAX_PATTERNS              256\r
-#define AUDIO_MAX_ORDERS                256\r
-#define AUDIO_MAX_NOTES                 96\r
-#define AUDIO_MAX_POINTS                12\r
-#define AUDIO_MIN_PERIOD                1\r
-#define AUDIO_MAX_PERIOD                31999\r
-#define AUDIO_MIN_VOLUME                0x00\r
-#define AUDIO_MAX_VOLUME                0x40\r
-#define AUDIO_MIN_PANNING               0x00\r
-#define AUDIO_MAX_PANNING               0xFF\r
-#define AUDIO_MIN_POSITION              0x00000000L\r
-#define AUDIO_MAX_POSITION              0x00100000L\r
-#define AUDIO_MIN_FREQUENCY             0x00000200L\r
-#define AUDIO_MAX_FREQUENCY             0x00080000L\r
-\r
-/* audio error code defines */\r
-#define AUDIO_ERROR_NONE                0x0000\r
-#define AUDIO_ERROR_INVALHANDLE         0x0001\r
-#define AUDIO_ERROR_INVALPARAM          0x0002\r
-#define AUDIO_ERROR_NOTSUPPORTED        0x0003\r
-#define AUDIO_ERROR_BADDEVICEID         0x0004\r
-#define AUDIO_ERROR_NODEVICE            0x0005\r
-#define AUDIO_ERROR_DEVICEBUSY          0x0006\r
-#define AUDIO_ERROR_BADFORMAT           0x0007\r
-#define AUDIO_ERROR_NOMEMORY            0x0008\r
-#define AUDIO_ERROR_NODRAMMEMORY        0x0009\r
-#define AUDIO_ERROR_FILENOTFOUND        0x000A\r
-#define AUDIO_ERROR_BADFILEFORMAT       0x000B\r
-#define AUDIO_LAST_ERROR                0x000B\r
-\r
-/* audio device identifiers */\r
-#define AUDIO_DEVICE_NONE               0x0000\r
-#define AUDIO_DEVICE_MAPPER             0xFFFF\r
-\r
-/* audio product identifiers */\r
-#define AUDIO_PRODUCT_NONE              0x0000\r
-#define AUDIO_PRODUCT_SB                0x0001\r
-#define AUDIO_PRODUCT_SB15              0x0002\r
-#define AUDIO_PRODUCT_SB20              0x0003\r
-#define AUDIO_PRODUCT_SBPRO             0x0004\r
-#define AUDIO_PRODUCT_SB16              0x0005\r
-#define AUDIO_PRODUCT_AWE32             0x0006\r
-#define AUDIO_PRODUCT_WSS               0x0007\r
-#define AUDIO_PRODUCT_ESS               0x0008\r
-#define AUDIO_PRODUCT_GUS               0x0009\r
-#define AUDIO_PRODUCT_GUSDB             0x000A\r
-#define AUDIO_PRODUCT_GUSMAX            0x000B\r
-#define AUDIO_PRODUCT_IWAVE             0x000C\r
-#define AUDIO_PRODUCT_PAS               0x000D\r
-#define AUDIO_PRODUCT_PAS16             0x000E\r
-#define AUDIO_PRODUCT_ARIA              0x000F\r
-#define AUDIO_PRODUCT_WINDOWS           0x0100\r
-#define AUDIO_PRODUCT_LINUX             0x0101\r
-#define AUDIO_PRODUCT_SPARC             0x0102\r
-#define AUDIO_PRODUCT_SGI               0x0103\r
-#define AUDIO_PRODUCT_DSOUND            0x0104\r
-\r
-/* audio envelope bit fields */\r
-#define AUDIO_ENVELOPE_ON               0x0001\r
-#define AUDIO_ENVELOPE_SUSTAIN          0x0002\r
-#define AUDIO_ENVELOPE_LOOP             0x0004\r
-\r
-/* audio pattern bit fields */\r
-#define AUDIO_PATTERN_PACKED            0x0080\r
-#define AUDIO_PATTERN_NOTE              0x0001\r
-#define AUDIO_PATTERN_SAMPLE            0x0002\r
-#define AUDIO_PATTERN_VOLUME            0x0004\r
-#define AUDIO_PATTERN_COMMAND           0x0008\r
-#define AUDIO_PATTERN_PARAMS            0x0010\r
-\r
-/* audio module bit fields */\r
-#define AUDIO_MODULE_AMIGA              0x0000\r
-#define AUDIO_MODULE_LINEAR             0x0001\r
-#define AUDIO_MODULE_PANNING            0x8000\r
-\r
-#pragma pack(1)\r
-\r
-/* audio capabilities structure */\r
-typedef struct {\r
-    WORD    wProductId;                         /* product identifier */\r
-    CHAR    szProductName[30];                  /* product name */\r
-    DWORD   dwFormats;                          /* formats supported */\r
-} AUDIOCAPS, *LPAUDIOCAPS;\r
-\r
-/* audio format structure */\r
-typedef struct {\r
-    UINT    nDeviceId;                          /* device identifier */\r
-    WORD    wFormat;                            /* playback format */\r
-    WORD    nSampleRate;                        /* sampling frequency */\r
-} AUDIOINFO, *LPAUDIOINFO;\r
-\r
-/* audio waveform structure */\r
-typedef struct {\r
-    LPBYTE  lpData;                             /* data pointer */\r
-    DWORD   dwHandle;                           /* waveform handle */\r
-    DWORD   dwLength;                           /* waveform length */\r
-    DWORD   dwLoopStart;                        /* loop start point */\r
-    DWORD   dwLoopEnd;                          /* loop end point */\r
-    WORD    nSampleRate;                        /* sampling rate */\r
-    WORD    wFormat;                            /* format bits */\r
-} AUDIOWAVE, *LPAUDIOWAVE;\r
-\r
-\r
-/* audio envelope point structure */\r
-typedef struct {\r
-    WORD    nFrame;                             /* envelope frame */\r
-    WORD    nValue;                             /* envelope value */\r
-} AUDIOPOINT, *LPAUDIOPOINT;\r
-\r
-/* audio envelope structure */\r
-typedef struct {\r
-    AUDIOPOINT aEnvelope[AUDIO_MAX_POINTS];     /* envelope points */\r
-    BYTE    nPoints;                            /* number of points */\r
-    BYTE    nSustain;                           /* sustain point */\r
-    BYTE    nLoopStart;                         /* loop start point */\r
-    BYTE    nLoopEnd;                           /* loop end point */\r
-    WORD    wFlags;                             /* envelope flags */\r
-    WORD    nSpeed;                             /* envelope speed */\r
-} AUDIOENVELOPE, *LPAUDIOENVELOPE;\r
-\r
-/* audio sample structure */\r
-typedef struct {\r
-    CHAR    szSampleName[32];                   /* sample name */\r
-    BYTE    nVolume;                            /* default volume */\r
-    BYTE    nPanning;                           /* default panning */\r
-    BYTE    nRelativeNote;                      /* relative note */\r
-    BYTE    nFinetune;                          /* finetune */\r
-    AUDIOWAVE Wave;                             /* waveform handle */\r
-} AUDIOSAMPLE, *LPAUDIOSAMPLE;\r
-\r
-/* audio patch structure */\r
-typedef struct {\r
-    CHAR    szPatchName[32];                    /* patch name */\r
-    BYTE    aSampleNumber[AUDIO_MAX_NOTES];     /* multi-sample table */\r
-    WORD    nSamples;                           /* number of samples */\r
-    BYTE    nVibratoType;                       /* vibrato type */\r
-    BYTE    nVibratoSweep;                      /* vibrato sweep */\r
-    BYTE    nVibratoDepth;                      /* vibrato depth */\r
-    BYTE    nVibratoRate;                       /* vibrato rate */\r
-    WORD    nVolumeFadeout;                     /* volume fadeout */\r
-    AUDIOENVELOPE Volume;                       /* volume envelope */\r
-    AUDIOENVELOPE Panning;                      /* panning envelope */\r
-    LPAUDIOSAMPLE aSampleTable;                 /* sample table */\r
-} AUDIOPATCH, *LPAUDIOPATCH;\r
-\r
-/* audio pattern structure */\r
-typedef struct {\r
-    WORD    nPacking;                           /* packing type */\r
-    WORD    nTracks;                            /* number of tracks */\r
-    WORD    nRows;                              /* number of rows */\r
-    WORD    nSize;                              /* data size */\r
-    LPBYTE  lpData;                             /* data pointer */\r
-} AUDIOPATTERN, *LPAUDIOPATTERN;\r
-\r
-/* audio module structure */\r
-typedef struct {\r
-    CHAR    szModuleName[32];                   /* module name */\r
-    WORD    wFlags;                             /* module flags */\r
-    WORD    nOrders;                            /* number of orders */\r
-    WORD    nRestart;                           /* restart position */\r
-    WORD    nTracks;                            /* number of tracks */\r
-    WORD    nPatterns;                          /* number of patterns */\r
-    WORD    nPatches;                           /* number of patches */\r
-    WORD    nTempo;                             /* initial tempo */\r
-    WORD    nBPM;                               /* initial BPM */\r
-    BYTE    aOrderTable[AUDIO_MAX_ORDERS];      /* order table */\r
-    BYTE    aPanningTable[AUDIO_MAX_VOICES];    /* panning table */\r
-    LPAUDIOPATTERN aPatternTable;               /* pattern table */\r
-    LPAUDIOPATCH aPatchTable;                   /* patch table */\r
-} AUDIOMODULE, *LPAUDIOMODULE;\r
-\r
-/* audio callback function defines */\r
-typedef VOID (AIAPI* LPFNAUDIOWAVE)(LPBYTE, UINT);\r
-typedef VOID (AIAPI* LPFNAUDIOTIMER)(VOID);\r
-typedef VOID (AIAPI* LPFNAUDIOCALLBACK)(BYTE, UINT, UINT);\r
-\r
-/* audio handle defines */\r
-typedef HANDLE  HAC;\r
-typedef HAC*    LPHAC;\r
-\r
-#pragma pack()\r
-\r
-\r
-/* audio interface API prototypes */\r
-UINT AIAPI AInitialize(VOID);\r
-UINT AIAPI AGetVersion(VOID);\r
-UINT AIAPI AGetAudioNumDevs(VOID);\r
-UINT AIAPI AGetAudioDevCaps(UINT nDeviceId, LPAUDIOCAPS lpCaps);\r
-UINT AIAPI AGetErrorText(UINT nErrorCode, LPSTR lpText, UINT nSize);\r
-\r
-UINT AIAPI APingAudio(LPUINT lpnDeviceId);\r
-UINT AIAPI AOpenAudio(LPAUDIOINFO lpInfo);\r
-UINT AIAPI ACloseAudio(VOID);\r
-UINT AIAPI AUpdateAudio(VOID);\r
-\r
-UINT AIAPI AOpenVoices(UINT nVoices);\r
-UINT AIAPI ACloseVoices(VOID);\r
-\r
-UINT AIAPI ASetAudioCallback(LPFNAUDIOWAVE lpfnAudioWave);\r
-UINT AIAPI ASetAudioTimerProc(LPFNAUDIOTIMER lpfnAudioTimer);\r
-UINT AIAPI ASetAudioTimerRate(UINT nTimerRate);\r
-\r
-LONG AIAPI AGetAudioDataAvail(VOID);\r
-UINT AIAPI ACreateAudioData(LPAUDIOWAVE lpWave);\r
-UINT AIAPI ADestroyAudioData(LPAUDIOWAVE lpWave);\r
-UINT AIAPI AWriteAudioData(LPAUDIOWAVE lpWave, DWORD dwOffset, UINT nCount);\r
-\r
-UINT AIAPI ACreateAudioVoice(LPHAC lphVoice);\r
-UINT AIAPI ADestroyAudioVoice(HAC hVoice);\r
-\r
-UINT AIAPI APlayVoice(HAC hVoice, LPAUDIOWAVE lpWave);\r
-UINT AIAPI APrimeVoice(HAC hVoice, LPAUDIOWAVE lpWave);\r
-UINT AIAPI AStartVoice(HAC hVoice);\r
-UINT AIAPI AStopVoice(HAC hVoice);\r
-\r
-UINT AIAPI ASetVoicePosition(HAC hVoice, LONG dwPosition);\r
-UINT AIAPI ASetVoiceFrequency(HAC hVoice, LONG dwFrequency);\r
-UINT AIAPI ASetVoiceVolume(HAC hVoice, UINT nVolume);\r
-UINT AIAPI ASetVoicePanning(HAC hVoice, UINT nPanning);\r
-\r
-UINT AIAPI AGetVoicePosition(HAC hVoice, LPLONG lpdwPosition);\r
-UINT AIAPI AGetVoiceFrequency(HAC hVoice, LPLONG lpdwFrequency);\r
-UINT AIAPI AGetVoiceVolume(HAC hVoice, LPUINT lpnVolume);\r
-UINT AIAPI AGetVoicePanning(HAC hVoice, LPUINT lpnPanning);\r
-UINT AIAPI AGetVoiceStatus(HAC hVoice, LPBOOL lpnStatus);\r
-\r
-UINT AIAPI APlayModule(LPAUDIOMODULE lpModule);\r
-UINT AIAPI AStopModule(VOID);\r
-UINT AIAPI APauseModule(VOID);\r
-UINT AIAPI AResumeModule(VOID);\r
-UINT AIAPI ASetModuleVolume(UINT nVolume);\r
-UINT AIAPI ASetModulePosition(UINT nOrder, UINT nRow);\r
-UINT AIAPI AGetModuleVolume(LPUINT lpnVolume);\r
-UINT AIAPI AGetModulePosition(LPUINT pnOrder, LPUINT lpnRow);\r
-UINT AIAPI AGetModuleStatus(LPBOOL lpnStatus);\r
-UINT AIAPI ASetModuleCallback(LPFNAUDIOCALLBACK lpfnAudioCallback);\r
-\r
-UINT AIAPI ALoadModuleFile(LPSTR lpszFileName,\r
-                LPAUDIOMODULE* lplpModule, DWORD dwFileOffset);\r
-UINT AIAPI AFreeModuleFile(LPAUDIOMODULE lpModule);\r
-\r
-UINT AIAPI ALoadWaveFile(LPSTR lpszFileName,\r
-                LPAUDIOWAVE* lplpWave, DWORD dwFileOffset);\r
-UINT AIAPI AFreeWaveFile(LPAUDIOWAVE lpWave);\r
-\r
-#ifdef __cplusplus\r
-};\r
-#endif\r
-\r
-#endif\r
diff --git a/16/v2/source/verge/ENGINE/A_MEMORY.C b/16/v2/source/verge/ENGINE/A_MEMORY.C
deleted file mode 100755 (executable)
index 9ce7f4c..0000000
+++ /dev/null
@@ -1,201 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include <stdio.h>\r
-#include <string.h>\r
-\r
-#include "verge.h"\r
-\r
-// *****\r
-// TODO: Move the chunk list from an array to a linked list?\r
-//       Would eliminate hardcoded chunk limit, but would make\r
-//       general operation slower. Probably not The Right Thing,\r
-//       sides the chunk limit can be interesting sometimes. If\r
-//       it becomes problematic, consider a Binary Tree.\r
-// *****\r
-\r
-// ***************************** Data *****************************\r
-\r
-#define MAXCHUNKS 1000\r
-#define PARANOID\r
-#define PADFILLVALUE 254\r
-#define PADSIZE 256\r
-\r
-typedef struct\r
-{\r
-   void *pointer;\r
-   int  size;\r
-   int  owner;\r
-   char desc[40];\r
-} memblockType;\r
-\r
-memblockType chunks[MAXCHUNKS+1];\r
-int numchunks=0;\r
-\r
-// ***************************** Code *****************************\r
-\r
-void *valloc(int amount, char *desc, int owner)\r
-{\r
-   if (numchunks == MAXCHUNKS)\r
-     err("Failed allocated %d bytes (%s), reason: Out of chunks.",\r
-        amount, desc);\r
-\r
-#ifdef PARANOID\r
-   CheckCorruption();\r
-   chunks[numchunks].pointer = (void *) ((int) malloc(amount + (PADSIZE * 2)) + PADSIZE);\r
-   chunks[numchunks].size = amount;\r
-   memset((char *) chunks[numchunks].pointer - PADSIZE, PADFILLVALUE, PADSIZE);\r
-   memset((char *) chunks[numchunks].pointer +\r
-               chunks[numchunks].size, PADFILLVALUE, PADSIZE);\r
-#else\r
-   chunks[numchunks].pointer = malloc(amount);\r
-   chunks[numchunks].size = amount;\r
-#endif\r
-   chunks[numchunks].owner = owner;\r
-   strncpy(chunks[numchunks].desc, desc, 39);\r
-   return chunks[numchunks++].pointer;\r
-}\r
-\r
-void *qvalloc(int amount)\r
-{\r
-   void *ptr;\r
-\r
-   // Quick and dirty memory allocation. Should be used ONLY\r
-   // for temporary blocks in speed-critical loops.\r
-\r
-   ptr = malloc(amount);\r
-   if (!ptr) err("qvalloc: Failed allocating %d bytes.", amount);\r
-   return ptr;\r
-}\r
-\r
-void qvfree(void *ptr)\r
-{\r
-   free(ptr);\r
-}\r
-\r
-int TotalBytesAllocated(void)\r
-{\r
-   int i, tally=0;\r
-\r
-   for (i=0; i<numchunks; i++)\r
-      tally += chunks[i].size;\r
-\r
-   return tally;\r
-}\r
-\r
-int FindChunk(void *pointer)\r
-{\r
-   int i;\r
-\r
-   for (i=0; i<numchunks; i++)\r
-      if (chunks[i].pointer == pointer) return i;\r
-   return -1;\r
-}\r
-\r
-void FreeChunk(int i)\r
-{\r
-#ifdef PARANOID\r
-   CheckCorruption();\r
-   free((void *) ((int) chunks[i].pointer - PADSIZE));\r
-#else\r
-   free(chunks[i].pointer);\r
-#endif\r
-   for (; i<numchunks; i++)\r
-      chunks[i]=chunks[i+1];\r
-   numchunks--;\r
-}\r
-\r
-int v_free(void *ptr)\r
-{\r
-   int i=FindChunk(ptr);\r
-   if (i == -1)\r
-   {\r
-      Log("vfree: Attempted to free ptr %u that was not allocated. [dumping mem report]", ptr);\r
-      MemReport();\r
-      return -1;\r
-   }\r
-   FreeChunk(i);\r
-\r
-   return 0;\r
-}\r
-\r
-void FreeByOwner(int owner)\r
-{\r
-   int i;\r
-\r
-   for (i=0; i<numchunks; i++)\r
-      if (chunks[i].owner == owner)\r
-         FreeChunk(i--);\r
-}\r
-\r
-void MemReport(void)\r
-{\r
-   int i;\r
-\r
-   Log("");\r
-   Log("========================================");\r
-   Log("= Memory usage report for this session =");\r
-   Log("========================================");\r
-   Log("Chunks currently allocated: %d (MAXCHUNKS %d)", numchunks, MAXCHUNKS);\r
-   Log("%d total bytes allocated. ", TotalBytesAllocated());\r
-#ifdef PARANOID\r
-   Log("PARANOID is ON. (pad size: %d pad value: %d)", PADSIZE, PADFILLVALUE);\r
-#else\r
-   Log("PARANOID is OFF.");\r
-#endif\r
-   Log("");\r
-   Log("Per-chunk analysis: ");\r
-\r
-   for (i=0; i<numchunks; i++)\r
-   {\r
-       Log("[%3d] Ptr at: %8u size: %8d owner: %3d desc: %s",\r
-          i, chunks[i].pointer, chunks[i].size, chunks[i].owner, chunks[i].desc);\r
-   }\r
-}\r
-\r
-#ifdef PARANOID\r
-int ChunkIntegrity(int i)\r
-{\r
-   char *tptr;\r
-\r
-   tptr=(char *) malloc(PADSIZE);\r
-   memset(tptr, PADFILLVALUE, PADSIZE);\r
-   if (memcmp((char *) chunks[i].pointer - PADSIZE, tptr, PADSIZE))\r
-      return -1;      // Prefix corruption\r
-   if (memcmp((char *) chunks[i].pointer + chunks[i].size, tptr, PADSIZE))\r
-      return 1;       // Suffix corruption\r
-   free(tptr);\r
-   return 0;          // no corruption\r
-}\r
-\r
-void CheckCorruption(void)\r
-{\r
-   int i, j;\r
-\r
-   for (i=0; i<numchunks; i++)\r
-   {\r
-      j=ChunkIntegrity(i);\r
-      if (!j) continue;\r
-      if (j == -1) { MemReport(); err("Prefix corruption on chunk %d.", i); }\r
-      if (j ==  1) { MemReport(); err("Suffix corruption on chunk %d.", i); }\r
-   }\r
-}\r
-#else\r
-void CheckCorruption(void)\r
-{\r
-   return;\r
-}\r
-#endif\r
diff --git a/16/v2/source/verge/ENGINE/A_MEMORY.H b/16/v2/source/verge/ENGINE/A_MEMORY.H
deleted file mode 100755 (executable)
index 51f720a..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef MEMORY_H\r
-#define MEMORY_H\r
-\r
-extern void *valloc(int amount, char *desc, int owner);\r
-extern void *qvalloc(int amount);\r
-extern void qvfree(void *ptr);\r
-extern int  TotalBytesAllocated(void);\r
-extern int  FindChunk(void *pointer);\r
-extern void FreeChunk(int i);\r
-extern int  vfree(void *pointer);\r
-extern void FreeByOwner(int owner);\r
-extern void MemReport(void);\r
-extern int  ChunkIntegrity(int i);\r
-extern void CheckCorruption(void);\r
-\r
-// Standardized OID (Owner ID) values\r
-\r
-#define OID_TEMP    0\r
-#define OID_VFILE   1\r
-#define OID_IMAGE   2\r
-#define OID_MISC    3\r
-#define OID_MAP     4\r
-#define OID_VC      5\r
-\r
-#endif // MEMORY_H\r
diff --git a/16/v2/source/verge/ENGINE/CONLIB.C b/16/v2/source/verge/ENGINE/CONLIB.C
deleted file mode 100755 (executable)
index 5dcecd6..0000000
+++ /dev/null
@@ -1,285 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include "verge.h"\r
-\r
-// ================================= Data ====================================\r
-\r
-byte cpu_watch, cpubyte=0;\r
-\r
-// ================================= Code ====================================\r
-\r
-void ListMounts()\r
-{ int i;\r
-\r
-  Con_NextLine();\r
-  sprintf(strbuf,"There are \81%d~ files mounted.",filesmounted);\r
-  Con_Printf(strbuf);\r
-  for (i=0; i<filesmounted; i++)\r
-  {\r
-    sprintf(strbuf,"File \80%s~ contains \81%d~ files.",pack[i].mountname, pack[i].numfiles);\r
-    Con_Printf(strbuf);\r
-  }\r
-}\r
-\r
-void PackInfo()\r
-{ int i,j;\r
-\r
-  Con_NextLine();\r
-  i=atoi((char *) args[1]);\r
-  sprintf(strbuf,"Files in %s:",pack[i].mountname);\r
-  Con_Printf(strbuf);\r
-\r
-  for (j=0; j<pack[i].numfiles; j++)\r
-  {\r
-    sprintf(strbuf,"\80%s~              ",pack[i].files[j].fname);\r
-    sprintf(&strbuf[20],"\81%d~ bytes",pack[i].files[j].size);\r
-    Con_Printf(strbuf);\r
-  }\r
-}\r
-\r
-void FileInfo()\r
-{ VFILE *f;\r
-\r
-  Con_NextLine();\r
-  sprintf(strbuf,"File stats for \80%s~:",args[1]);\r
-  Con_Printf(strbuf);\r
-\r
-  f=vopen((char *) args[1]);\r
-  if (!f)\r
-  {\r
-    Con_Printf("File not found.");\r
-    return;\r
-  }\r
-\r
-  if (f->s)\r
-  {\r
-    sprintf(strbuf,"File is in \80%s~, index \81%d~",pack[f->v].mountname, f->i);\r
-    Con_Printf(strbuf);\r
-    sprintf(strbuf,"Packofs: \81%d~ current ofs: \81%d~",pack[f->v].files[f->i].packofs,pack[f->v].files[f->i].curofs);\r
-    Con_Printf(strbuf);\r
-    if (pack[f->v].files[f->i].extractable)\r
-       Con_Printf("File is extractable.");\r
-    else Con_Printf("File is not extractable.");\r
-    if (pack[f->v].files[f->i].override)\r
-       Con_Printf("Override allowed.");\r
-    else Con_Printf("Override not allowed.");\r
-  }\r
-  else Con_Printf("File is external.");\r
-  sprintf(strbuf,"File is \81%d~ bytes.",filesize(f));\r
-  Con_Printf(strbuf);\r
-  vclose(f);\r
-}\r
-\r
-void vid_mode()\r
-{ int xres,yres;\r
-\r
-  xres=atoi((char *)args[1]);\r
-  yres=atoi((char *)args[2]);\r
-  Con_NextLine();\r
-\r
-  ShutdownVideo(0);\r
-  if (InitVideo(xres, yres))\r
-  {\r
-    Con_Printf("{||||||||||||}");\r
-    Con_Printf("Loading new video driver...");\r
-    Con_Printf(DriverDesc);\r
-    Con_Printf("{||||||||||||}");\r
-  }\r
-  else Con_Printf("Unsupported/unknown video mode.");\r
-  set_intensity(63);\r
-}\r
-\r
-void CPU_Usage()\r
-{\r
-  if (numargs==1)\r
-  {\r
-    sprintf(strbuf,"cpu_usage is \81%d~", cpu_watch);\r
-    Con_Printf(strbuf);\r
-  }\r
-  else cpu_watch=atoi((char *) args[1]);\r
-}\r
-\r
-void Mount()\r
-{\r
-  MountVFile((char *) args[1]);\r
-  sprintf(strbuf,"%s mounted.",args[1]);\r
-  Con_Printf(strbuf);\r
-}\r
-\r
-void ZeroConWarp(char **args)\r
-{\r
-  player->x=atoi(args[1])*16;\r
-  player->y=atoi(args[2])*16;\r
-  player->tx=atoi(args[1]);\r
-  player->ty=atoi(args[2]);\r
-}\r
-\r
-void ZeroConBrowseTiles(void)\r
-{\r
-  int x,y,n,k=0,a=0;\r
-\r
-  while(last_pressed!=SCAN_Q)\r
-  {\r
-    ClearScreen();\r
-    UpdateControls();\r
-    CheckMessages();\r
-    if(last_pressed==SCAN_A) { if(a) a=0; else a=1; last_pressed=0; }\r
-    if(last_pressed==SCAN_DOWN&&(k+(ty-3)*(tx-3)-tx+4)<numtiles)\r
-    {\r
-      k+=tx-4;\r
-      last_pressed=0;\r
-    }\r
-    if(last_pressed==SCAN_UP&&k>0)\r
-    {\r
-      k-=tx-4;\r
-      last_pressed=0;\r
-    }\r
-    for(y=1; y<ty-2; y++)\r
-    {\r
-      for(x=1; x<tx-3; x++)\r
-      {\r
-        n=((y-1)*(tx-4)+x-1+k);\r
-        if (n<numtiles)\r
-        {\r
-          if (!a) CopyTileClip(x*16,y*16,(unsigned char*)((unsigned int)vsp+((y-1)*(tx-4)+x-1+k)*256));\r
-          else CopyTileClip(x*16,y*16,(unsigned char*)((unsigned int)vsp+tileidx[(y-1)*(tx-4)+x-1+k]*256));\r
-        }\r
-\r
-      }\r
-      GotoXY((tx-2)*16-8,y*16+5);\r
-      sprintf(strbuf,"%i",(y-1)*(tx-4)+k);\r
-      printstring(0,strbuf);\r
-    }\r
-  GotoXY(16,(ty-1)*16-8);\r
-  printstring(0,"Hit Q to quit, A to toggle anim,");\r
-  GotoXY(16,(ty-1)*16);\r
-  printstring(0,"up/down to change tiles");\r
-  ShowPage();\r
-  }\r
-}\r
-\r
-void CameraTracking()\r
-{\r
-  if (numargs==1)\r
-  {\r
-    sprintf(strbuf,"cameratracking is \81%d~", cameratracking);\r
-    Con_Printf(strbuf);\r
-  }\r
-  else cameratracking=atoi((char *) args[1]);\r
-}\r
-\r
-void ZeroSetRString(char **args)\r
-{\r
-  memcpy(rstring,args[1],strlen(args[1])+1);\r
-}\r
-\r
-void ZeroGetRString(void)\r
-{\r
-  sprintf(strbuf,"Renderstring: \80%s~",rstring);\r
-  Con_Printf(strbuf);\r
-}\r
-\r
-void Obstructions()\r
-{\r
-  if (numargs==1)\r
-  {\r
-    sprintf(strbuf,"showobs is \81%d~", showobs);\r
-    Con_Printf(strbuf);\r
-  }\r
-  else showobs=atoi((char *) args[1]);\r
-}\r
-\r
-void MoveGranularity()\r
-{\r
-  if (numargs==1)\r
-  {\r
-    sprintf(strbuf,"movegranularity is \81%d~", movegranularity);\r
-    Con_Printf(strbuf);\r
-  }\r
-  else movegranularity=atoi((char *) args[1]);\r
-}\r
-\r
-void Phantom()\r
-{\r
-  if (numargs==1)\r
-  {\r
-    sprintf(strbuf,"phantom is \81%d~", phantom);\r
-    Con_Printf(strbuf);\r
-  }\r
-  else phantom=atoi((char *) args[1]);\r
-}\r
-\r
-void CurPos()\r
-{\r
-  Con_NextLine();\r
-  sprintf(strbuf,"xwc: \82%d~ ywc: \82%d~", player->x, player->y); Con_Printf(strbuf);\r
-  sprintf(strbuf,"xtc: \82%d~ ytc: \82%d~", player->x>>4, player->y>>4); Con_Printf(strbuf);\r
-}\r
-\r
-void PlayerSpeed()\r
-{\r
-  if (!player)\r
-  {\r
-    Con_Printf("No player.");\r
-    return;\r
-  }\r
-  if (numargs==1)\r
-  {\r
-    Con_NextLine();\r
-    sprintf(strbuf,"speed is is \81%d~", player->speed);\r
-    Con_Printf(strbuf);\r
-  }\r
-  else\r
-  {\r
-    player->speed=atoi((char *) args[1]);\r
-    player->speedct=0;\r
-  }\r
-}\r
-\r
-void Player()\r
-{ int i;\r
-\r
-  i=atoi((char *) args[1]);\r
-  if (i<entities)\r
-  {\r
-    player=&entity[i];\r
-    playernum=i;\r
-//    entity[i].movecode=0;\r
-    entity[i].moving=0;\r
-    SiftEntities();\r
-    Con_Printf("Player updated.");\r
-  }\r
-  else Con_Printf("No such entity.");\r
-}\r
-\r
-void SpawnEntity()\r
-{ int i;\r
-\r
-  i=AllocateEntity(atoi((char *) args[1]), atoi((char *) args[2]), (char *) args[3]);\r
-  sprintf(strbuf,"Entity %d allocated.",i);\r
-  Con_Printf(strbuf);\r
-}\r
-\r
-void ShowZones()\r
-{\r
-  if (numargs==1)\r
-  {\r
-    sprintf(strbuf,"showzones is \81%d~", showzone);\r
-    Con_Printf(strbuf);\r
-  }\r
-  else showzone=atoi((char *) args[1]);\r
-}\r
diff --git a/16/v2/source/verge/ENGINE/CONLIB.H b/16/v2/source/verge/ENGINE/CONLIB.H
deleted file mode 100755 (executable)
index 2efb457..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef CONLIB_H\r
-#define CONLIB_H\r
-\r
-#define ETC 0\r
-#define RENDER 1\r
-#define PFLIP 2\r
-\r
-extern byte cpu_watch, cpubyte;\r
-\r
-void ListMounts();\r
-void PackInfo();\r
-void FileInfo();\r
-void CD_Play();\r
-void vid_mode();\r
-void CPU_Usage();\r
-void Mount();\r
-void ZeroConWarp(char **args);\r
-void ZeroConBrowseTiles(void);\r
-void CameraTracking();\r
-void ZeroGetRString();\r
-void ZeroSetRString(char **args);\r
-void Obstructions();\r
-void MoveGranularity();\r
-void Phantom();\r
-void CurPos();\r
-void PlayerSpeed();\r
-void Player();\r
-void SpawnEntity();\r
-void ShowZones();\r
-#endif\r
diff --git a/16/v2/source/verge/ENGINE/CONSOLE.C b/16/v2/source/verge/ENGINE/CONSOLE.C
deleted file mode 100755 (executable)
index b1cc302..0000000
+++ /dev/null
@@ -1,455 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#define CONSOLE_H\r
-#include "verge.h"\r
-#define conwidth 40\r
-\r
-// ================================= Data ====================================\r
-\r
-byte *consolebg;                           // Console background image\r
-char *consoletext;                         // Console text buffer\r
-byte *cmd, *cmd2, cmdlen=0;                // command line buffer\r
-char *lastcmds, numcmds=0, cmdpos=0;       // last-command memory\r
-byte *args[10], numargs;                   // command argument pointers\r
-char cursor=1;                             // flag on/off cursor visible\r
-int cswtime=0;                             // cursor switch time.\r
-int conlines=1;                            // Number of visible lines\r
-int lines=0;                               // number of lines entered since last draw\r
-char startln=36;                           // Start display ofs (for scrollback)\r
-char allowconsole=1;\r
-char consoleoverride=0;\r
-\r
-byte key_ascii_tbl[128] =\r
-{\r
-  0,   0,   '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', 8,   9,\r
-  'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']', 13,  0,   'a', 's',\r
-  'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', 39,  0,   0,   92,  'z', 'x', 'c', 'v',\r
-  'b', 'n', 'm', ',', '.', '/', 0,   '*', 0,   ' ', 0,   3,   3,   3,   3,   8,\r
-  3,   3,   3,   3,   3,   0,   0,   0,   0,   0,   '-', 0,   0,   0,   '+', 0,\r
-  0,   0,   0,   127, 0,   0,   92,  3,   3,   0,   0,   0,   0,   0,   0,   0,\r
-  13,  0,   '/', 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   127,\r
-  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   '/', 0,   0,   0,   0,   0\r
-};\r
-\r
-byte key_shift_tbl[128] =\r
-{\r
-   0,   0,   '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', 126, 126,\r
-   'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '{', '}', 126, 0,   'A', 'S',\r
-   'D', 'F', 'G', 'H', 'J', 'K', 'L', ':', 34,  0,   0,   '|', 'Z', 'X', 'C', 'V',\r
-   'B', 'N', 'M', '<', '>', '?', 0,   '*', 0,   1,   0,   1,   1,   1,   1,   1,\r
-   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   '-', 0,   0,   0,   '+', 0,\r
-   0,   0,   1,   127, 0,   0,   0,   1,   1,   0,   0,   0,   0,   0,   0,   0,\r
-   13,  0,   '/', 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   127,\r
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   '/', 0,   0,   0,   0,   0\r
-};\r
-\r
-#define NUMCMDS 31\r
-char *concmds[] = {\r
-  "CONSOLEBG","LISTMOUNTS","PACKINFO","LISTCMDS","CD_PLAY","CD_STOP",\r
-  "CD_OPEN","CD_CLOSE","EXIT","VID_MODE","CPU_USAGE","MOUNT","MAP",\r
-  "VER","BROWSETILES","WARP","CAMERATRACKING","RSTRING","SHOWOBS",\r
-  "PHANTOM","ENTITYSTAT","ACTIVEENTS","ENTITY","CURPOS","PLAYERSPEED",\r
-  "SPEEDDEMON","RV","SV","PLAYER","SPAWNENTITY","SHOWZONES"\r
-  };\r
-byte sortedcmds[NUMCMDS];\r
-\r
-// ================================= Code ====================================\r
-\r
-void SortConCmds(void)\r
-/* -- ric: 03/Jun/98 --\r
- * creates the sorted index into concmds\r
- */\r
-{\r
-  int i,j;\r
-  int temp;\r
-\r
-  for (i=0; i<NUMCMDS; i++)\r
-    sortedcmds[i]=i;\r
-  for (i=1; i<NUMCMDS; i++)\r
-  {\r
-    for (j=NUMCMDS-1; j>=i; j--)\r
-      if (strcmp(concmds[sortedcmds[j-1]],concmds[sortedcmds[j]])>0)\r
-      {\r
-        // swap the indices\r
-        temp=sortedcmds[j-1];\r
-        sortedcmds[j-1]=sortedcmds[j];\r
-        sortedcmds[j]=temp;\r
-      }\r
-  }\r
-}\r
-\r
-void InitConsole(void)\r
-{\r
-  Logp("Initialize console.");\r
-  LoadFont("system.fnt");\r
-  consolebg=VLoadImageBuf("console.gif");\r
-\r
-  consoletext=(char *) valloc(45*50, "consoletext", OID_MISC);\r
-  cmd=(byte *) valloc(40, "InitConsole:cmd", OID_MISC);\r
-  cmd2=(byte *) valloc(40, "InitConsole:cmd2", OID_MISC);\r
-  memset(cmd, 0, 40);\r
-  memset(cmd2, 0, 40);\r
-  memset(consoletext, 0, 2250);\r
-\r
-  lastcmds=(char *) valloc(400, "InitConsole:lastcmds", OID_MISC);\r
-  memset(lastcmds, 0, 400);\r
-\r
-  SortConCmds();\r
-  LogDone();\r
-}\r
-\r
-void DrawConsole();\r
-\r
-void Con_Printf(char *str)\r
-{ char tbuf[2250];\r
-\r
-  // move buffer up a line\r
-  memcpy(tbuf, consoletext+50, 2200);\r
-  memcpy(consoletext, tbuf, 2200);\r
-\r
-  memcpy(consoletext+2200, str, strlen(str)+1);\r
-  lines++;\r
-}\r
-\r
-void Con_NextLine(void)\r
-{\r
-  Con_Printf("");\r
-  lines=0;\r
-}\r
-\r
-int ShowConsole(void)\r
-{\r
-  conlines+=2;\r
-  if (conlines > 120)\r
-  {\r
-    callback=0;\r
-    conlines=120;\r
-  }\r
-  return 0;\r
-}\r
-\r
-int HideConsole(void)\r
-{\r
-  if (conlines > 3)\r
-  {\r
-    conlines-=2;\r
-  }\r
-  else\r
-  {\r
-    conlines=1;\r
-    callback=0;\r
-  }\r
-  return 0;\r
-}\r
-\r
-void DrawConsole(void)\r
-{ int i;\r
-  int tagline=0;\r
-\r
-  lines=0;\r
-  tagline=conlines;\r
-\r
-  Render();\r
-  CopySpriteZoomClip(0,-120+tagline, 320,120, sx,120, consolebg);\r
-\r
-  // write console text\r
-\r
-  for (i=0; i<9; i++)\r
-  {\r
-    GotoXY(1, 1+(i*10)-(120-tagline));\r
-    printstring(0,consoletext+((startln+i)*50));\r
-  }\r
-\r
-  GotoXY(1,101-(120-tagline));\r
-  printstring(0,"]");\r
-  printstring(0,(char *) cmd);\r
-\r
-  if (systemtime>=cswtime)\r
-  {\r
-    cursor ^= 1;\r
-    cswtime = systemtime+40;\r
-  }\r
-\r
-  if (cursor) printstring(0, "&");\r
-\r
-  if (startln<36)\r
-  {\r
-    GotoXY(1, 91-(120-tagline));\r
-    printstring(0, "^   ^   ^   ^   ^   ^   ^   ^   ^   ^");\r
-  }\r
-}\r
-\r
-int Args(int num)\r
-{\r
-  if (numargs>=num) return 1;\r
-  sprintf(strbuf,"This function needs \81%d~ arguments.",num-1);\r
-  Con_Printf(strbuf);\r
-  return 0;\r
-}\r
-\r
-void ListCmds(void)\r
-{ int i;\r
-\r
-  Con_NextLine();\r
-  for (i=0; i<NUMCMDS; i++)\r
-    Con_Printf(concmds[sortedcmds[i]]);\r
-}\r
-\r
-void ConsoleBackground()\r
-{\r
-  vfree(consolebg);\r
-  consolebg=VLoadImageBuf((char *) args[1]);\r
-}\r
-\r
-void ExecuteCommand(int i)\r
-{\r
-  switch(i)\r
-  {\r
-    case 0: if (Args(2)) ConsoleBackground(); break;\r
-    case 1: ListMounts(); break;\r
-    case 2: if (Args(2)) PackInfo(); break;\r
-    case 3: ListCmds(); break;\r
-    case 4: break; //if (Args(2)) CD_Play(atoi((char *) args[1])); break;\r
-    case 5: break; //CD_Stop(); break;\r
-    case 6: break; //CD_Open_Door(); break;\r
-    case 7: break; //CD_Close_Door(); break;\r
-    case 8: err(""); break;\r
-    case 9: if (Args(3)) vid_mode(); break;\r
-    case 10: CPU_Usage(); break;\r
-    case 11: if (Args(2)) Mount(); break;\r
-    case 12: if (numargs<2) MAPstats(); else MAPswitch(); break;\r
-    case 13: ver(); break;\r
-    case 14: ZeroConBrowseTiles(); break;\r
-    case 15: if (numargs==3) ZeroConWarp((char**)args); else { Con_Printf("\82syntax:"); Con_Printf("Warp <x> <y>~"); } break;\r
-    case 16: CameraTracking(); break;\r
-    case 17: if (numargs==1) ZeroGetRString();\r
-             if (numargs==2) ZeroSetRString((char**)args); break;\r
-    case 18: Obstructions(); break;\r
-    case 19: Phantom(); break;\r
-    case 20: EntityStat(); break;\r
-    case 21: ListActiveEnts(); break;\r
-    case 22: if (Args(2)) EntityS(); break;\r
-    case 23: CurPos(); break;\r
-    case 24: PlayerSpeed(); break;\r
-    case 25: speeddemon=1; break;\r
-    case 26: ReadVCVar(); break;\r
-    case 27: WriteVCVar(); break;\r
-    case 28: if (Args(2)) Player(); break;\r
-    case 29: if (Args(4)) SpawnEntity(); break;\r
-    case 30: ShowZones(); break;\r
-    case NUMCMDS: Con_Printf((char *) cmd); break;\r
-  }\r
-}\r
-\r
-void ParseCommand(void)\r
-{ byte *src;\r
-  // breaks the command string into arguements and stuff. (in cmd2)\r
-\r
-  numargs=0;\r
-  src=(byte *) cmd2;\r
-  args[0]=src;\r
-\r
-  while (*src==' ') src++;\r
-\r
-  if (!*src) return;\r
-\r
-  while (1)\r
-  {\r
-    if (*src==' ')\r
-    {\r
-      while (*src== ' ')\r
-      {\r
-        *src=0;\r
-        src++;\r
-      }\r
-      if (*src)\r
-      {\r
-        numargs++;\r
-        args[numargs]=src;\r
-      }\r
-      src--;\r
-    }\r
-    src++;\r
-    if (!*src)\r
-    {\r
-      numargs++;\r
-      return;\r
-    }\r
-  }\r
-}\r
-\r
-void ProcessCommand(void)\r
-{ byte i;\r
-\r
-  memcpy(cmd2, cmd, 40);\r
-  strupr((char *) cmd2);\r
-  ParseCommand();\r
-\r
-  i=0;\r
-  while (i<NUMCMDS)\r
-  {\r
-    if (!strcmp(concmds[i], (char *) args[0])) break;\r
-    i++;\r
-  }\r
-  ExecuteCommand(i);\r
-  memcpy(lastcmds, lastcmds+40, 360);\r
-  memcpy(lastcmds+360, cmd, 40);\r
-  if (numcmds<10) numcmds++;\r
-  cmdpos=0;\r
-  memset(cmd, 0, 40);\r
-  cmdlen=0;\r
-}\r
-\r
-void CommandInput(void)\r
-{ byte c, len, cc;\r
-\r
-  UpdateControls();\r
-  if (!last_pressed) return;\r
-\r
-  // Handle the Shift key\r
-\r
-  if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT])\r
-  {\r
-    c=key_shift_tbl[last_pressed];\r
-  }\r
-  else\r
-  {\r
-    c=key_ascii_tbl[last_pressed];\r
-  }\r
-\r
-  // Handle special cases first\r
-  if (last_pressed == SCAN_PGUP)\r
-  {\r
-    if (startln) startln--;\r
-    last_pressed=0;\r
-    return;\r
-  }\r
-\r
-  if (last_pressed == SCAN_PGDN)\r
-  {\r
-    if (startln < 36) startln++;\r
-    last_pressed=0;\r
-    return;\r
-  }\r
-\r
-  if (last_pressed == SCAN_UP)\r
-  {\r
-    if (cmdpos<numcmds)\r
-    {\r
-      cmdpos++;\r
-      memcpy(cmd, lastcmds+(400-(cmdpos*40)), 40);\r
-      cmdlen=strlen((char *) cmd);\r
-    }\r
-    last_pressed=0;\r
-    return;\r
-  }\r
-\r
-  if (last_pressed == SCAN_DOWN)\r
-  {\r
-    if (cmdpos)\r
-    {\r
-      cmdpos--;\r
-      if (!cmdpos)\r
-      {\r
-        memset(cmd, 0, 40);\r
-        cmdlen=0;\r
-      }\r
-      else\r
-      {\r
-        memcpy(cmd, lastcmds+(400-(cmdpos*40)), 40);\r
-        cmdlen=strlen((char *) cmd);\r
-      }\r
-    }\r
-    last_pressed=0;\r
-    return;\r
-  }\r
-\r
-  if (!c)\r
-  {\r
-    last_pressed=0;\r
-    return;\r
-  }\r
-\r
-  if (last_pressed == SCAN_BACKSP)\r
-  {\r
-    if (cmdlen)\r
-    {\r
-      cmdlen--;\r
-      cmd[cmdlen]=0;\r
-    }\r
-    last_pressed=0;\r
-    return;\r
-  }\r
-\r
-  if (last_pressed == SCAN_TAB)\r
-  {\r
-    last_pressed=0;\r
-    len=strlen((char *) cmd);\r
-    if (!len) return;\r
-    for (cc=0; cc<NUMCMDS; cc++)\r
-        if (!strncasecmp((char *) cmd, concmds[sortedcmds[cc]], len))\r
-        {\r
-          memcpy((char *) cmd, concmds[sortedcmds[cc]], strlen(concmds[sortedcmds[cc]])+1);\r
-          strlwr((char *) cmd);\r
-          cmdlen=strlen((char *) cmd);\r
-          return;\r
-        }\r
-    return;\r
-  }\r
-\r
-  if (last_pressed == SCAN_ENTER)\r
-  {\r
-    ProcessCommand();\r
-    last_pressed=0;\r
-    return;\r
-  }\r
-\r
-  if (cmdlen<38)\r
-  {\r
-    cmd[cmdlen++]=c;\r
-    cmd[cmdlen]=0;\r
-  }\r
-\r
-  last_pressed=0;\r
-}\r
-\r
-void ActivateConsole(void)\r
-{\r
-  if (!allowconsole && !consoleoverride) return;\r
-  conlines=1;\r
-  callback=ShowConsole;\r
-  cswtime=systemtime+40;\r
-\r
-  while (!key[SCAN_RQUOTA])\r
-  {\r
-    DrawConsole();\r
-    ShowPage();\r
-    CheckMessages();\r
-    CommandInput();\r
-  }\r
-\r
-  callback=HideConsole;\r
-  while (conlines > 1)\r
-  {\r
-    CheckMessages();\r
-    DrawConsole();\r
-    ShowPage();\r
-  }\r
-  conlines=0;\r
-  key[SCAN_RQUOTA]=0;\r
-  timer_count=0;\r
-}\r
diff --git a/16/v2/source/verge/ENGINE/CONSOLE.H b/16/v2/source/verge/ENGINE/CONSOLE.H
deleted file mode 100755 (executable)
index e4e6090..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef CONSOLE_H\r
-#define CONSOLE_H\r
-\r
-#include "main.h"\r
-\r
-// -- externs --\r
-\r
-extern byte *consolebg;                   // Console background image\r
-extern byte *consoletext;                 // Console text buffer\r
-extern byte *cmd, *cmd2, cmdlen;          // command line buffer\r
-extern char *lastcmds, numcmds, cmdpos;   // last-command memory\r
-extern byte *args[10], numargs;           // command argument pointers\r
-extern char cursor, more;                 // flag on/off cursor visible\r
-extern int cswtime;                       // cursor switch time.\r
-extern int conlines;                      // Number of visible lines\r
-extern int lines;                         // number of lines entered since last draw\r
-extern char startln;                      // Start display ofs (for scrollback)\r
-extern char allowconsole;\r
-extern char consoleoverride;\r
-\r
-extern byte key_ascii_tbl[128];\r
-extern byte key_shift_tbl[128];\r
-\r
-extern char *concmds[];\r
-\r
-// -- prototypes --\r
-\r
-extern void InitConsole(void);\r
-extern void Con_Printf(char *str);\r
-extern void Con_NextLine(void);\r
-\r
-extern int ShowConsole(void);\r
-extern int HideConsole(void);\r
-\r
-extern void DrawConsole(void);\r
-extern int Args(int num);\r
-extern void ListCmds(void);\r
-extern void LastCmds(void);\r
-extern void ExecuteCommand(int i);\r
-extern void ParseCommand(void);\r
-extern void ProcessCommand(void);\r
-extern void CommandInput(void);\r
-extern void ActivateConsole(void);\r
-\r
-#endif // CONSOLE_H\r
diff --git a/16/v2/source/verge/ENGINE/CONTROLS.C b/16/v2/source/verge/ENGINE/CONTROLS.C
deleted file mode 100755 (executable)
index 728274a..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include "verge.h"\r
-\r
-// ================================= Data ====================================\r
-\r
-// -- Hardware Dependent -- //\r
-\r
-int kb1, kb2, kb3, kb4;             // keyboard controls\r
-int jb1, jb2, jb3, jb4;             // joystick controls\r
-\r
-// -- Unified Interface -- //\r
-\r
-char b1, b2, b3, b4;\r
-char up, down, left, right;\r
-\r
-// -- UnPress support variables -- //\r
-\r
-char wb1, wb2, wb3, wb4;\r
-char wup, wdown, wleft, wright;\r
-\r
-char rb1, rb2, rb3, rb4;\r
-char rup, rdown, rleft, rright;\r
-\r
-// ================================= Code ====================================\r
-\r
-void UpdateControls()\r
-{\r
-  rb1=0; rb2=0; rb3=0; rb4=0;\r
-  rup=0; rdown=0; rleft=0; rright=0;\r
-\r
-  if (key[SCAN_UP]) rup=1;\r
-  if (key[SCAN_DOWN]) rdown=1;\r
-  if (key[SCAN_RIGHT]) rright=1;\r
-  if (key[SCAN_LEFT]) rleft=1;\r
-\r
-  if (key[kb1]) rb1=1;\r
-  if (key[kb2]) rb2=1;\r
-  if (key[kb3]) rb3=1;\r
-  if (key[kb4]) rb4=1;\r
-\r
-       if (wb1 && rb1) rb1=0;\r
-  else if (wb1 && !rb1) wb1=0;\r
-  b1=rb1;\r
-\r
-       if (wb2 && rb2) rb2=0;\r
-  else if (wb2 && !rb2) wb2=0;\r
-  b2=rb2;\r
-\r
-       if (wb3 && rb3) rb3=0;\r
-  else if (wb3 && !rb3) wb3=0;\r
-  b3=rb3;\r
-\r
-       if (wb4 && rb4) rb4=0;\r
-  else if (wb4 && !rb4) wb4=0;\r
-  b4=rb4;\r
-\r
-       if (wup && rup) rup=0;\r
-  else if (wup && !rup) wup=0;\r
-  up=rup;\r
-\r
-       if (wdown && rdown) rdown=0;\r
-  else if (wdown && !rdown) wdown=0;\r
-  down=rdown;\r
-\r
-       if (wleft && rleft) rleft=0;\r
-  else if (wleft && !rleft) wleft=0;\r
-  left=rleft;\r
-\r
-       if (wright && rright) rright=0;\r
-  else if (wright && !rright) wright=0;\r
-  right=rright;\r
-}\r
-\r
-void UnPress(int control)\r
-{\r
-  switch (control)\r
-  {\r
-    case 0: wb1=1; wb2=1; wb3=1; wb4=1;\r
-            b1=0; b2=0; b3=0; b4=0;\r
-            key[kb1]=0; key[kb2]=0; key[kb3]=0; key[kb4]=0; break;\r
-    case 1: wb1=1; b1=0; key[kb1]=0; break;\r
-    case 2: wb2=1; b2=0; key[kb2]=0; break;\r
-    case 3: wb3=1; b3=0; key[kb3]=0; break;\r
-    case 4: wb4=1; b4=0; key[kb4]=0; break;\r
-    case 5: wup=1; up=0; key[SCAN_UP]=0; break;\r
-    case 6: wdown=1; down=0; key[SCAN_DOWN]=0; break;\r
-    case 7: wleft=1; left=0; key[SCAN_LEFT]=0; break;\r
-    case 8: wright=1; right=0; key[SCAN_RIGHT]=0; break;\r
-  }\r
-}\r
diff --git a/16/v2/source/verge/ENGINE/CONTROLS.H b/16/v2/source/verge/ENGINE/CONTROLS.H
deleted file mode 100755 (executable)
index aabd402..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef CONTROL_H\r
-#define CONTROL_H\r
-\r
-extern int kb1, kb2, kb3, kb4;\r
-extern int jb1, jb2, jb3, jb4;\r
-\r
-extern char b1, b2, b3, b4;\r
-extern char up, down, left, right;\r
-\r
-void UpdateControls();\r
-void UnPress(int);\r
-\r
-#endif\r
diff --git a/16/v2/source/verge/ENGINE/ENGINE.C b/16/v2/source/verge/ENGINE/ENGINE.C
deleted file mode 100755 (executable)
index 13ca67c..0000000
+++ /dev/null
@@ -1,746 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\r
-// CHANGELOG:\r
-// <zero 5.7.99>\r
-// + added ScreenShot() on F11\r
-// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\r
-\r
-\r
-#define ENGINE_H\r
-#include "verge.h"\r
-\r
-// ================================= Data ====================================\r
-\r
-typedef struct\r
-{\r
-  word start;                        // strand start\r
-  word finish;                       // strand end\r
-  word delay;                        // tile-switch delay\r
-  word mode;                         // tile-animation mode\r
-} vspanim_r;\r
-\r
-typedef struct\r
-{\r
-  char pmultx,pdivx;                 // parallax multiplier/divisor for X\r
-  char pmulty,pdivy;                 // parallax multiplier/divisor for Y\r
-  unsigned short sizex, sizey;       // layer dimensions.\r
-  unsigned char trans, hline;        // transparency flag | hline (raster fx)\r
-} layer_r;\r
-\r
-typedef struct\r
-{\r
-  char name[40];                     // zone name/desc\r
-  unsigned short script;             // script to call thingy\r
-  unsigned short percent;            // chance of executing\r
-  unsigned short delay;              // step-delay\r
-  unsigned short aaa;                // Accept Adjacent Activation\r
-  unsigned short entityscript;       // script to call for entities\r
-} zoneinfo;\r
-\r
-zoneinfo zones[256];                 // zone data records\r
-layer_r layer[6];                    // Array of layer data\r
-vspanim_r vspanim[100];              // tile animation data\r
-unsigned short vadelay[100];         // Tile animation delay ctr\r
-\r
-char mapname[60];                    // MAP filename\r
-char vspname[60];                    // VSP filemap\r
-char musname[60];                    // MAP bkgrd music default filename\r
-char rstring[20];                    // render-order string\r
-char numlayers;                      // number of layers in map\r
-byte *obstruct, *zone;               // obstruction and zone buffers\r
-char layertoggle[8];                 // layer visible toggles\r
-word xstart, ystart;                 // MAP start x/y location\r
-int bufsize;                         // how many bytes need to be written\r
-int numzones;                        // number of active zones\r
-\r
-word *layers[6];                     // Raw layer data\r
-int xwin=0, ywin=0;                  // camera offset\r
-\r
-// -- vsp data --\r
-\r
-byte *vsp=0,*vspmask;                // VSP data buffer.\r
-unsigned short numtiles;             // number of tiles in VSP.\r
-unsigned short *tileidx;             // tile index thingamajig\r
-char *flipped;                       // bi-direction looping flag\r
-\r
-// entity stuffs\r
-\r
-char *msbuf[100];                    // ptr-table to script offset\r
-char *ms;                            // script text buffer\r
-byte nms;                            // number of movescripts\r
-\r
-char numfollowers=0;                 // number of party followers\r
-byte follower[10];                   // maximum of 10 followers.\r
-char laststeps[10]={ 0 };            // record of last movements\r
-int lastent;\r
-\r
-// -- stuff --\r
-\r
-byte movegranularity; // means nothing now, please remove\r
-byte movectr=0;\r
-\r
-byte phantom=0;                      // walk-through-walls\r
-byte speeddemon=0;                   // doublespeed cheat\r
-int bindarray[128];                  // bind script offset\r
-\r
-// ================================= Code ====================================\r
-\r
-void ReadCompressedLayer1(byte *dest, int len, char *buf)\r
-{\r
-  int j,n;\r
-  byte run, w;\r
-\r
-  n=0;\r
-  do\r
-  {\r
-     w=*buf; buf++;\r
-     if (w==0xFF)\r
-     {\r
-        run=*buf; buf++;\r
-        w=*buf; buf++;\r
-        for (j=0; j<run; j++)\r
-             dest[n+j]=w;\r
-        n+=run;\r
-     }\r
-     else\r
-     {\r
-         dest[n]=w;\r
-         n++;\r
-     }\r
-  } while (n<len);\r
-}\r
-\r
-void ReadCompressedLayer2(word *dest, int len, word *buf)\r
-{\r
-  int j,n;\r
-  byte run;\r
-  word w;\r
-\r
-  n=0;\r
-  do\r
-  {\r
-    w=*buf; buf++;\r
-    if ((w & 0xFF00)==0xFF00)\r
-    {\r
-      run=(w & 0x00FF);\r
-      w=*buf; buf++;\r
-      for(j=0; j<run; j++)\r
-        dest[n+j]=w;\r
-      n+=run;\r
-    }\r
-    else\r
-    {\r
-      dest[n]=w;\r
-      n++;\r
-    }\r
-  } while(n<len);\r
-}\r
-\r
-void LoadVSP(char *fname)\r
-{\r
-  VFILE *f;\r
-  int i;\r
-  word ver;\r
-  char *cb;\r
-\r
-// Mwahaha! The Indefatigable Grue has snuck into the V2 source code! It is forever corrupted by his evil touch! Cower in fear, oh yes, FEAR! MwahahaHA..ha...hem...\r
-\r
-  if (!(f=vopen(fname))) err("*error* Could not open VSP file %s.",fname);\r
-  vread(&ver, 2, f);\r
-  vread(&pal, 768, f);\r
-  vread(&numtiles, 2, f);\r
-\r
-  vsp=(byte *) valloc(numtiles*256, "vsp", OID_IMAGE);\r
-  if (ver==2)\r
-  {\r
-    vread(vsp, (256*numtiles), f);\r
-  }\r
-  else\r
-  {\r
-    vread(&i, 4, f);\r
-    cb=(char *) valloc(i, "LoadVSP:cb", OID_TEMP);\r
-    vread(cb, i, f);\r
-    ReadCompressedLayer1(vsp, 256*numtiles, cb);\r
-    vfree(cb);\r
-  }\r
-  vread(&vspanim, sizeof vspanim, f);\r
-  vclose(f);\r
-\r
-  // Now calculate VSP transparency mask.\r
-\r
-  vspmask=(byte *) valloc(numtiles*256, "vspmask", OID_MISC);\r
-  for (i=0; i<(numtiles*256); i++)\r
-  {\r
-    if (vsp[i]) vspmask[i]=0;\r
-    else vspmask[i]=255;\r
-  }\r
-\r
-  // Allocate and build tileidx.\r
-\r
-  tileidx=(unsigned short *) valloc(numtiles*2, "tileidx", OID_MISC);\r
-  for (i=0; i<numtiles; i++)\r
-      tileidx[i]=i;\r
-\r
-  flipped=(char *) valloc(numtiles, "flipped", OID_MISC);\r
-  animate=TRUE;\r
-}\r
-\r
-void FreeVSP()\r
-{\r
-  animate=FALSE;\r
-  vfree(vsp);\r
-  vfree(vspmask);\r
-  vfree(tileidx);\r
-  vfree(flipped);\r
-  vfree(mapvc);\r
-}\r
-\r
-void LoadMAP(char *fname)\r
-{\r
-  VFILE *f;\r
-  char *cb;\r
-  int i;\r
-\r
-// No matter where you go, you're there.\r
-\r
-  Logp("Loading MAP %s.",fname);\r
-  memcpy(mapname, fname, strlen(fname)+1);\r
-  memcpy(strbuf, "MAPù5", 6);\r
-  if (!(f=vopen(fname))) err("Could not find %s.",fname);\r
-  vread(strbuf, 6, f);\r
-  if (strcmp(strbuf,"MAPù5"))\r
-      err("%s is not a recognized MAP file.",fname);\r
-\r
-// Lalala! Can you find Waldo hiding in the code? Here's a hint, he likes to dress like a candy-cane.\r
-\r
-  vread(&i, 4, f);\r
-  vread(vspname, 60, f);\r
-  vread(musname, 60, f);\r
-  vread(rstring, 20, f);\r
-  vread(&xstart, 2, f);\r
-  vread(&ystart, 2, f);\r
-  vread(strbuf, 51, f);\r
-  vread(&numlayers, 1, f);\r
-  for (i=0; i<numlayers; i++)\r
-      vread(&layer[i], 12, f);\r
-\r
-  memset(&layertoggle, 0, 8);\r
-  for (i=0; i<numlayers; i++)\r
-  {\r
-     vread(&bufsize, 4, f);\r
-     layers[i]=(unsigned short *) valloc(layer[i].sizex*(layer[i].sizey+2)*2, "LoadMAP:layers[i]", OID_MAP);\r
-     cb=(char *) valloc(bufsize, "LoadMAP:cb", OID_TEMP);\r
-     vread(cb, bufsize, f);\r
-     ReadCompressedLayer2(layers[i],(layer[i].sizex * layer[i].sizey), (word *) cb);\r
-     vfree(cb);\r
-     layertoggle[i]=1;\r
-  }\r
-  obstruct=(byte *) valloc(layer[0].sizex*(layer[0].sizey+2), "obstruct", OID_MAP);\r
-  zone=(byte *) valloc(layer[0].sizex*(layer[0].sizey+2), "zone", OID_MAP);\r
-\r
-  vread(&bufsize, 4, f);\r
-  cb=(char *) valloc(bufsize, "LoadMAP:cb (2)", OID_TEMP);\r
-  vread(cb, bufsize, f);\r
-  ReadCompressedLayer1(obstruct,(layer[0].sizex * layer[0].sizey), cb);\r
-  vfree(cb);\r
-  vread(&bufsize, 4, f);\r
-  cb=(char *) valloc(bufsize, "LoadMAP:cb (3)", OID_TEMP);\r
-  vread(cb, bufsize, f);\r
-  ReadCompressedLayer1(zone,(layer[0].sizex * layer[0].sizey), cb);\r
-  vfree(cb);\r
-  memset(&zones, 0, sizeof zones);\r
-  vread(&numzones, 4, f);\r
-  vread(&zones, numzones*50, f);\r
-\r
-  memset(&chrlist, 0, sizeof chrlist);\r
-  vread(&nmchr, 1, f);\r
-  vread(&chrlist, 60*nmchr, f);\r
-\r
-// Cheese is good, cheese is nice. Cheese is better, than body lice.\r
-\r
-  memset(&entity, 0, sizeof entity);\r
-  vread(&entities, 1, f);\r
-  vread(&entity, (sizeof(entity)/256*entities), f);\r
-  for (i=0; i<entities; i++)\r
-  {\r
-    entity[i].tx=entity[i].x;\r
-    entity[i].ty=entity[i].y;\r
-    entity[i].x*=16;\r
-    entity[i].y*=16;\r
-  }\r
-\r
-  vread(&nms, 1, f);\r
-  vread(&i, 4, f);\r
-  vread(&msbuf, nms*4, f);\r
-  if (nms)\r
-  {\r
-    ms=(char *) valloc(i, "LoadMAP:ms", OID_MAP);\r
-    vread(ms, i, f);\r
-  }\r
-  else\r
-  {\r
-    vseek(f, i, 0);\r
-    ms=(char *) malloc(16);\r
-  }\r
-  vread(&i, 4, f); // # of things\r
-  LoadMapVC(f);\r
-  vclose(f);\r
-\r
-  memset(&chr, 0, sizeof chr);\r
-  LoadVSP(vspname);\r
-  LoadCHRList();\r
-  Logp(" [%d] ",mapevents);\r
-  if (strlen(musname))\r
-    PlayMusic(musname);\r
-  LogDone();\r
-  ExecuteEvent(0);\r
-}\r
-\r
-void FreeMAP()\r
-{\r
-  int i;\r
-\r
-  vfree(obstruct);\r
-  vfree(zone);\r
-  for (i=0; i<numlayers; i++)\r
-    vfree(layers[i]);\r
-  vfree(ms);\r
-  player=0;\r
-  memset(&entity, 0, sizeof entity);\r
-  entities=0; nmchr=0; numchrs=0;\r
-  xwin=0; ywin=0;\r
-  vfree(mapvc);\r
-}\r
-\r
-void MAPswitch()\r
-{\r
-  hookretrace=0;\r
-  hooktimer=0;\r
-  kill=1;\r
-  memcpy(startmap, (char *) args[1], strlen((char *) args[1]));\r
-  key[SCAN_RQUOTA]=1;\r
-  conlines=2;\r
-}\r
-\r
-// The_Edge rules. Really. I mean it. Wyrdwad too. They're as cool as Omniphile!\r
-\r
-void MAPstats()\r
-{ int a;\r
-\r
-  Con_NextLine();\r
-  Con_Printf("{||||||||||||||||||||}");\r
-  sprintf(strbuf,"MAP stats for \80%s~ - \81%d~ layers",mapname,numlayers); Con_Printf(strbuf);\r
-  sprintf(strbuf,"Base dimensions \81%d~ x \81%d~", layer[0].sizex, layer[0].sizey);\r
-  Con_Printf(strbuf);  a=layer[0].sizex*layer[0].sizey;\r
-  sprintf(strbuf,"MAP using \81%d~ bytes of memory",\r
-          a*(2+(numlayers*2))); Con_Printf(strbuf);\r
-  sprintf(strbuf,"\81%d~ active zones.",numzones); Con_Printf(strbuf);\r
-  Con_Printf("{||||||||||||||||||||}");\r
-  sprintf(strbuf,"VSP file: \80%s~",vspname); Con_Printf(strbuf);\r
-  sprintf(strbuf,"VSP has \81%d~ tiles using \81%d~ bytes",numtiles,\r
-          (numtiles*256)+800+(numtiles*3)); Con_Printf(strbuf);\r
-  Con_Printf("{||||||||||||||||||||}");\r
-}\r
-\r
-int PlayerObstructed(char dir)\r
-{\r
-  if (phantom) return 0;\r
-  switch (dir)\r
-  {\r
-    case 0: if (ObstructionAt(player->tx, player->ty+1)) return 1; break;\r
-    case 1: if (ObstructionAt(player->tx, player->ty-1)) return 1; break;\r
-    case 2: if (ObstructionAt(player->tx-1, player->ty)) return 1; break;\r
-    case 3: if (ObstructionAt(player->tx+1, player->ty)) return 1; break;\r
-  }\r
-  switch (dir)\r
-  {\r
-    case 0: if (EntityObsAt(player->tx, player->ty+1)) return 1; break;\r
-    case 1: if (EntityObsAt(player->tx, player->ty-1)) return 1; break;\r
-    case 2: if (EntityObsAt(player->tx-1, player->ty)) return 1; break;\r
-    case 3: if (EntityObsAt(player->tx+1, player->ty)) return 1; break;\r
-  }\r
-  return 0;\r
-}\r
-\r
-void CheckZone()\r
-{\r
-  int curzone;\r
-  static int lz=0, zonedelay=0;\r
-\r
-  curzone=zone[(player->ty * layer[0].sizex) + player->tx];\r
-  if (lz!=curzone)\r
-  {\r
-    zonedelay=0;\r
-    lz=curzone;\r
-  }\r
-  if (!zones[curzone].percent) return;\r
-  if (zonedelay < zones[curzone].delay)\r
-  {\r
-    zonedelay++;\r
-    return;\r
-  }\r
-  if (curzone)\r
-    if (zones[curzone].script &&\r
-        zones[curzone].percent >= rnd(0,255))\r
-    {\r
-       ExecuteEvent(zones[curzone].script);\r
-       zonedelay=0;\r
-    }\r
-}\r
-\r
-int InvFace()\r
-{\r
-  switch(player -> facing)\r
-  {\r
-    case 0: return 1;\r
-    case 1: return 0;\r
-    case 2: return 3;\r
-    case 3: return 2;\r
-  }\r
-  return -1;\r
-}\r
-\r
-void Activate()\r
-{\r
-  byte tz;\r
-  int ax=0, ay=0;\r
-\r
-  switch(player->facing)\r
-  {\r
-    case 0: ax=player->tx; ay=player->ty+1; break;\r
-    case 1: ax=player->tx; ay=player->ty-1; break;\r
-    case 2: ax=player->tx-1; ay=player->ty; break;\r
-    case 3: ax=player->tx+1; ay=player->ty; break;\r
-  }\r
-  tz=zone[(ay*layer[0].sizex)+ax];\r
-  if (zones[tz].aaa)\r
-  {\r
-    ExecuteEvent(zones[tz].script);\r
-    return;\r
-  }\r
-  if ((tz=EntityAt(ax, ay)))\r
-  {\r
-    tz--;\r
-    if (entity[tz].face)\r
-    {\r
-      entity[tz].facing=InvFace();\r
-      AnimateEntity(&entity[tz]);\r
-    }\r
-    if (entity[tz].actscript)\r
-    {\r
-      lastent=tz;\r
-      ExecuteEvent(entity[tz].actscript);\r
-    }\r
-  }\r
-}\r
-\r
-void ResetFollowers()\r
-{\r
-  int i;\r
-\r
-  player->x=player->tx<<4;\r
-  player->y=player->ty<<4;\r
-  player->moving=0;\r
-  player->movecnt=0;\r
-  player->reset=1;\r
-  for (i=0; i<numfollowers; i++)\r
-  {\r
-    entity[follower[i]].x=player->x;\r
-    entity[follower[i]].y=player->y;\r
-    entity[follower[i]].tx=player->tx;\r
-    entity[follower[i]].ty=player->ty;\r
-    entity[follower[i]].facing=player->facing;\r
-    entity[follower[i]].reset=1;\r
-  }\r
-  memset(laststeps, 0, 10);\r
-}\r
-\r
-void MoveFollowers()\r
-{\r
-  int i;\r
-\r
-  for (i=0; i<numfollowers; i++)\r
-  {\r
-    entity[follower[i]].moving=laststeps[i+1];\r
-    entity[follower[i]].movecnt=15;\r
-    if (entity[follower[i]].reset ||\r
-        entity[follower[i]].facing != laststeps[i+1]-1)\r
-    {\r
-      //player->animofs=chr[player->chrindex].uanim;\r
-      entity[follower[i]].delayct=0;\r
-      entity[follower[i]].reset=0;\r
-    }\r
-    entity[follower[i]].facing=laststeps[i+1]-1;\r
-  }\r
-}\r
-\r
-//--- zero 5.7.99\r
-\r
-void WritePalette(FILE *f)\r
-{ char b;\r
-  int i;\r
-  byte pal3[768];\r
-\r
-  for (i=0; i<768; i++)\r
-      pal3[i]=pal2[i] << 2;\r
-\r
-  b=12; fwrite(&b, 1, 1, f);\r
-  fwrite(pal3, 1, 768, f);\r
-}\r
-\r
-void WritePCXLine(unsigned char *p,int len,FILE *pcxf)\r
-{ int i;\r
-  unsigned char byt, samect, repcode;\r
-\r
-  i=0;\r
-  do\r
-  {   byt=p[i++];\r
-      samect=1;\r
-      while (samect<(unsigned) 63 && i<len && byt==p[i])\r
-      {\r
-         samect++;\r
-         i++;\r
-      }\r
-      if (samect>1 || (byt & 0xC0) != 0)\r
-      {\r
-         repcode=0xC0 | samect;\r
-         fwrite(&repcode,1,1,pcxf);\r
-      }\r
-      fwrite(&byt,1,1,pcxf);\r
-  } while (i<len);\r
-}\r
-\r
-\r
-void ScreenShot()\r
-{\r
-  unsigned char b1;\r
-  unsigned short int w1;\r
-  int i,n;\r
-  char fnamestr[13];\r
-  static int ss=0;\r
-  FILE *pcxf;\r
-\r
-  n=0;\r
-  do\r
-  {\r
-    sprintf(fnamestr,"%d.pcx",n);\r
-    pcxf=fopen(fnamestr,"r");\r
-    i=(int)pcxf;\r
-    if(pcxf) fclose(pcxf);\r
-    n++;\r
-  } while(i);\r
-  n--;\r
-\r
-  // Takes a snapshot of the current screen.\r
-\r
-   sprintf(fnamestr,"%d.pcx",n);\r
-\r
-   pcxf=fopen(fnamestr,"wb");\r
-   ss++;\r
-\r
-// Write PCX header\r
-\r
-   b1=10; fwrite(&b1, 1, 1, pcxf); // manufacturer always = 10\r
-   b1=5; fwrite(&b1, 1, 1, pcxf);  // version = 3.0, >16 colors\r
-   b1=1; fwrite(&b1, 1, 1, pcxf);  // encoding always = 1\r
-   b1=8; fwrite(&b1, 1, 1, pcxf);  // 8 bits per pixel, for 256 colors\r
-   w1=0; fwrite(&w1, 1, 2, pcxf);  // xmin = 0;\r
-   w1=0; fwrite(&w1, 1, 2, pcxf);  // ymin = 0;\r
- w1=sx-1; fwrite(&w1, 1, 2, pcxf);  // xmax = 319;\r
- w1=sy-1; fwrite(&w1, 1, 2, pcxf);  // ymax = 199;\r
- w1=sx; fwrite(&w1, 1, 2, pcxf);  // hres = 320;\r
- w1=sy; fwrite(&w1, 1, 2, pcxf);  // vres = 200;\r
-\r
- fwrite(screen,1,48,pcxf);\r
-\r
- b1=0; fwrite(&b1, 1, 1, pcxf);   // reserved always = 0.\r
- b1=1; fwrite(&b1, 1, 1, pcxf);   // number of color planes. Just 1 for 8bit.\r
- w1=sx; fwrite(&w1, 1, 2, pcxf); // number of bytes per line\r
-\r
- w1=0; fwrite(&w1, 1, 1, pcxf);\r
- fwrite(screen, 1, 59, pcxf);          // filler\r
-\r
- for (w1=0; w1<sy; w1++)\r
-     WritePCXLine(screen+w1*tsx, sx, pcxf);\r
-\r
- WritePalette(pcxf);\r
- fclose(pcxf);\r
-// timer_count=0;\r
-}\r
-//---\r
-\r
-\r
-void LastMove(char dir)\r
-{\r
-  laststeps[9]=laststeps[8];\r
-  laststeps[8]=laststeps[7];\r
-  laststeps[7]=laststeps[6];\r
-  laststeps[6]=laststeps[5];\r
-  laststeps[5]=laststeps[4];\r
-  laststeps[4]=laststeps[3];\r
-  laststeps[3]=laststeps[2];\r
-  laststeps[2]=laststeps[1];\r
-  laststeps[1]=laststeps[0];\r
-  laststeps[0]=dir;\r
-\r
-  MoveFollowers();\r
-}\r
-\r
-void ProcessControls1()\r
-{\r
-  if (!player->moving)\r
-  {\r
-    if (down && !PlayerObstructed(0))\r
-    {\r
-      player->ty++;\r
-      player->moving=1;\r
-      player->movecnt=15;\r
-      player->y++;\r
-      if (player->reset || player->facing != 0)\r
-      {\r
-        player->animofs=chr[player->chrindex].danim;\r
-        player->delayct=0;\r
-        player->reset=0;\r
-      }\r
-      player->facing=0;\r
-      LastMove(1);\r
-      return;\r
-    }\r
-    if (up && !PlayerObstructed(1))\r
-    {\r
-      player->ty--;\r
-      player->moving=2;\r
-      player->movecnt=15;\r
-      player->y--;\r
-      if (player->reset || player->facing != 1)\r
-      {\r
-        player->animofs=chr[player->chrindex].uanim;\r
-        player->delayct=0;\r
-        player->reset=0;\r
-      }\r
-      player->facing=1;\r
-      LastMove(2);\r
-      return;\r
-    }\r
-    if (left && !PlayerObstructed(2))\r
-    {\r
-      player->tx--;\r
-      player->moving=3;\r
-      player->movecnt=15;\r
-      player->x--;\r
-      if (player->reset || player->facing != 2)\r
-      {\r
-        player->animofs=chr[player->chrindex].lanim;\r
-        player->delayct=0;\r
-        player->reset=0;\r
-      }\r
-      player->facing=2;\r
-      LastMove(3);\r
-      return;\r
-    }\r
-    if (right && !PlayerObstructed(3))\r
-    {\r
-      player->tx++;\r
-      player->moving=4;\r
-      player->movecnt=15;\r
-      player->x++;\r
-      if (player->reset || player->facing != 3)\r
-      {\r
-        player->animofs=chr[player->chrindex].ranim;\r
-        player->delayct=0;\r
-        player->reset=0;\r
-      }\r
-      player->facing=3;\r
-      LastMove(4);\r
-      return;\r
-    }\r
-    if (down) player->facing=0;\r
-    if (up) player->facing=1;\r
-    if (left) player->facing=2;\r
-    if (right) player->facing=3;\r
-  }\r
-\r
-  switch (player->moving)\r
-  {\r
-    case 0: player->reset=1; player->animofs=0; player->delayct=0; break;\r
-    case 1: player->y++; player->movecnt--; break;\r
-    case 2: player->y--; player->movecnt--; break;\r
-    case 3: player->x--; player->movecnt--; break;\r
-    case 4: player->x++; player->movecnt--; break;\r
-  }\r
-  if (!player->movecnt && player->moving)\r
-  {\r
-    player->moving=0;\r
-    CheckZone();\r
-  }\r
-  if (!player->movecnt && b1) Activate();\r
-}\r
-\r
-void ProcessControls()\r
-{ int i;\r
-\r
-  if (key[SCAN_RQUOTA])\r
-  {\r
-    key[SCAN_RQUOTA]=0; last_pressed=0;\r
-    ActivateConsole();\r
-  }\r
-  if (key[SCAN_ALT] && key[SCAN_X]) err("Exiting: ALT-X pressed.");\r
-//--- zero 5.7.99\r
-  if (key[SCAN_F11])\r
-  {\r
-    Message("ss",50);\r
-    ScreenShot();\r
-    key[SCAN_F11]=0;\r
-  }\r
-//---\r
-  if (!player) return;\r
-\r
-  if (player->speed<4)\r
-  {\r
-    switch (player->speed)\r
-    {\r
-      case 1: if (player->speedct<3) { player->speedct++; return; } break;\r
-      case 2: if (player->speedct<2) { player->speedct++; return; } break;\r
-      case 3: if (player->speedct<1) { player->speedct++; return; } break;\r
-    }\r
-  }\r
-  if (player->speed<5)\r
-  {\r
-    ProcessControls1();\r
-    player->speedct=0;\r
-    AnimateEntity(player);\r
-  }\r
-  switch (player->speed)\r
-  {\r
-    case 5: for (i=0; i<2; i++) { ProcessControls1(); AnimateEntity(player); } return;\r
-    case 6: for (i=0; i<3; i++) { ProcessControls1(); AnimateEntity(player); } return;\r
-    case 7: for (i=0; i<4; i++) { ProcessControls1(); AnimateEntity(player); } return;\r
-  }\r
-}\r
-\r
-void GameTick()\r
-{\r
-  UpdateControls();\r
-  CheckMessages();\r
-  if (bindarray[last_pressed])\r
-    HookKey(bindarray[last_pressed]);\r
-  ProcessControls();\r
-  if (speeddemon && key[SCAN_CTRL]) ProcessControls();\r
-  ProcessEntities();\r
-}\r
-\r
diff --git a/16/v2/source/verge/ENGINE/ENGINE.H b/16/v2/source/verge/ENGINE/ENGINE.H
deleted file mode 100755 (executable)
index d65545f..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\r
-// CHANGELOG:\r
-// <zero 5.7.99>\r
-// + added ScreenShot() headers\r
-// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\r
-\r
-\r
-#ifndef ENGINE_H\r
-#define ENGINE_H\r
-\r
-typedef struct\r
-{\r
-  word start;                        // strand start\r
-  word finish;                       // strand end\r
-  word delay;                        // tile-switch delay\r
-  word mode;                         // tile-animation mode\r
-} vspanim_r;\r
-\r
-typedef struct\r
-{\r
-  char pmultx,pdivx;                 // parallax multiplier/divisor for X\r
-  char pmulty,pdivy;                 // parallax multiplier/divisor for Y\r
-  unsigned short sizex, sizey;       // layer dimensions.\r
-  unsigned char trans, hline;        // transparency flag | hline (raster fx)\r
-} layer_r;\r
-\r
-typedef struct\r
-{\r
-  char name[40];                     // zone name/desc\r
-  unsigned short script;             // script to call thingy\r
-  unsigned short percent;            // chance of executing\r
-  unsigned short delay;              // step-delay\r
-  unsigned short aaa;                // Accept Adjacent Activation\r
-  unsigned short entityscript;       // script to call for entities\r
-} zoneinfo;\r
-\r
-extern layer_r layer[4];                    // Array of layer data\r
-extern vspanim_r vspanim[100];              // tile animation data\r
-extern unsigned short vadelay[100];         // Tile animation delay ctr\r
-\r
-extern char mapname[60];                    // MAP filename\r
-extern char vspname[60];                    // VSP filemap\r
-extern char rstring[20];                    // render-order string\r
-extern char numlayers;                      // number of layers in map\r
-extern byte *obstruct, *zone;               // obstruction and zone buffers\r
-extern int bufsize;                         // how many bytes need to be written\r
-extern char layertoggle[4];                 // layer visible toggles\r
-\r
-extern word *layers[4];                     // Raw layer data\r
-extern int xwin, ywin;\r
-\r
-// -- entity things --\r
-\r
-extern char *msbuf[100];                    // ptr-table to script offset\r
-extern char *ms;                            // script text buffer\r
-extern byte nms;                            // number of movescripts\r
-\r
-extern char numfollowers;                   // number of party followers\r
-extern byte follower[10];                   // maximum of 10 followers.\r
-extern char laststeps[10];                  // record of last movements\r
-extern int lastent;\r
-\r
-// -- vsp data --\r
-\r
-extern byte *vsp,*vspmask;                  // VSP data buffer.\r
-extern unsigned short numtiles;             // number of tiles in VSP.\r
-extern unsigned short *tileidx;             // tile index thingamajig\r
-extern char *flipped;                       // bi-direction looping flag\r
-extern byte movegranularity, phantom, speeddemon, movectr;\r
-extern int bindarray[128];\r
-\r
-// -- prototypes --\r
-\r
-extern void LoadVSP(char *fname);\r
-extern void FreeVSP(void);\r
-extern void LoadMAP(char *fname);\r
-extern void FreeMAP(void);\r
-extern void MAPswitch(void);\r
-extern void MAPstats(void);\r
-extern void ProcessControls(void);\r
-extern void GameTick(void);\r
-\r
-extern void ReadCompressedLayer1(byte*, int, char*);\r
-\r
-//--- zero 5.7.99\r
-void WritePalette(FILE *f);\r
-void WritePCXLine(unsigned char *p,int len,FILE *pcxf);\r
-void ScreenShot();\r
-//\r
-#endif // ENGINE_H\r
diff --git a/16/v2/source/verge/ENGINE/ENTITY.C b/16/v2/source/verge/ENGINE/ENTITY.C
deleted file mode 100755 (executable)
index add3758..0000000
+++ /dev/null
@@ -1,716 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\r
-// CHANGELOG:\r
-// <zero, 5.6.98>\r
-// + corrected oversight in movement script management by sticking a hack in\r
-//   MoveScript().  Bug caused Fx commands to not work sometimes.\r
-// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\r
-\r
-#define ENTITY_H\r
-#include "verge.h"\r
-\r
-// ================================= Data ====================================\r
-\r
-typedef struct\r
-{\r
-  int x, y;                            // xwc, ywx position\r
-  word tx, ty;                         // xtc, ytc position\r
-  byte facing;                         // direction entity is facing\r
-  byte moving, movecnt;                // direction entity is moving\r
-  byte frame;                          // bottom-line frame to display\r
-  byte specframe;                      // special-frame set thingo\r
-  byte chrindex, reset;                // CHR index | Reset animation\r
-  byte obsmode1, obsmode2;             // can be obstructed | Is an obstruction\r
-  byte speed, speedct;                 // entity speed, speedcount :)\r
-  byte delayct;                        // animation frame-delay\r
-  char *animofs, *scriptofs;           // anim script | move script\r
-  byte face, actm;                     // auto-face | activation mode\r
-  byte movecode, movescript;           // movement type | movement script\r
-  byte ctr, mode;                      // sub-tile move ctr, mode flag (internal)\r
-  word step, delay;                    // step, delay\r
-  word stepctr, delayctr;              // internal use counters\r
-  word data1, data2, data3;            //\r
-  word data4, data5, data6;            //\r
-  int  actscript;                      // activation script\r
-  int  expand1, expand2;               //\r
-  int  expand3, expand4;               //\r
-  char desc[20];                       // Entity description.\r
-} entity_r;\r
-\r
-typedef struct\r
-{\r
-  byte *imagedata;                   // CHR frame data\r
-  int fxsize, fysize;                // frame x/y dimensions\r
-  int hx, hy;                        // x/y obstruction hotspot\r
-  int totalframes;                   // total # of frames.\r
-  int lidle, ridle;\r
-  int uidle, didle;\r
-  char lanim[100];\r
-  char ranim[100];\r
-  char uanim[100];\r
-  char danim[100];\r
-} chrdata;\r
-\r
-typedef struct\r
-{\r
-  char t[60];\r
-} chrlist_r;\r
-\r
-chrlist_r chrlist[100];\r
-byte nmchr,playernum;\r
-entity_r *player=0;\r
-entity_r entity[256];\r
-byte entities=0;\r
-chrdata chr[100];\r
-byte numchrs=0;\r
-byte entidx[256], cc;\r
-byte movesuccess;\r
-\r
-// ================================= Code ====================================\r
-\r
-int ObstructionAt(int tx, int ty)\r
-{\r
-  if (obstruct[(ty*layer[0].sizex)+tx]) return 1;\r
-  if (tx==-1 || ty==-1) return 1;\r
-  if (tx==layer[0].sizex || ty==layer[0].sizey) return 1;\r
-  return 0;\r
-}\r
-\r
-int Zone(int tx, int ty)\r
-{\r
-  return zone[(ty*layer[0].sizex)+tx];\r
-}\r
-\r
-void LoadCHR(char *fname, chrdata *c)\r
-{\r
-  VFILE *f;\r
-  char b, *ptr=0;\r
-  int i;\r
-\r
-  f=vopen(fname);\r
-  if (!f) err("Could not open CHR file %s.",fname);\r
-  vread(&b, 1, f);\r
-  if (b!=2) err("CHR %s incorrect CHR format version.",fname);\r
-  vread(&c->fxsize, 2, f);\r
-  vread(&c->fysize, 2, f);\r
-  vread(&c->hx, 2, f);\r
-  vread(&c->hy, 2, f);\r
-  vread(strbuf, 4, f);          // skip the hotspot size.\r
-  vread(&c->totalframes, 2, f);\r
-\r
-  vread(&i, 4, f);\r
-  ptr=(char *) valloc(i, "LoadCHR:ptr", OID_TEMP);\r
-  vread(ptr, i, f);\r
-  c->imagedata=(byte *) valloc(c->fxsize * c->fysize * c->totalframes, "LoadCHR:c->imagedata", OID_IMAGE);\r
-  ReadCompressedLayer1(c->imagedata, c->fxsize * c->fysize * c->totalframes, ptr);\r
-  vfree(ptr);\r
-\r
-\r
-  vread(&c->lidle, 4, f);\r
-  vread(&c->ridle, 4, f);\r
-  vread(&c->uidle, 4, f);\r
-  vread(&c->didle, 4, f);\r
-\r
-  for (b=0; b<4; b++)\r
-  {\r
-    switch (b)\r
-    {\r
-      case 0: ptr=c->lanim; break;\r
-      case 1: ptr=c->ranim; break;\r
-      case 2: ptr=c->uanim; break;\r
-      case 3: ptr=c->danim; break;\r
-    }\r
-    vread(&i, 4, f);\r
-    if (i>100) err("Animation strand too long. %d",i);\r
-    vread(ptr, i, f);\r
-  }\r
-  vclose(f);\r
-}\r
-\r
-int CacheCHR(char *fname)\r
-{\r
-  LoadCHR(fname, &chr[numchrs]);\r
-  numchrs++;\r
-  return (numchrs-1);\r
-}\r
-\r
-void FreeCHRList()\r
-{\r
-  int i;\r
-\r
-  for (i=0; i<numchrs; i++)\r
-    vfree(chr[i].imagedata);\r
-  memset(chr, i, sizeof chr);\r
-}\r
-\r
-void LoadCHRList()\r
-{\r
-  int i;\r
-\r
-  for (i=0; i<nmchr; i++)\r
-      if (strlen(chrlist[i].t)) CacheCHR(chrlist[i].t);\r
-}\r
-\r
-void DrawEntity(int i)\r
-{\r
-  int a, b, dx, dy;\r
-\r
-  dx=entity[i].x-xwin;\r
-  dy=entity[i].y-ywin;\r
-  a=entity[i].chrindex;\r
-  if (a>=numchrs) return;\r
-  b=entity[i].specframe ? entity[i].specframe : entity[i].frame;\r
-  TCopySpriteClip(dx-chr[a].hx, dy-chr[a].hy, chr[a].fxsize, chr[a].fysize,\r
-                  (byte *) (chr[a].imagedata+(b*chr[a].fxsize*\r
-                  chr[a].fysize)));\r
-}\r
-\r
-static int cmpent(const void* a, const void* b)\r
-{\r
-  return entity[*(byte*)a].y - entity[*(byte*)b].y;\r
-}\r
-\r
-void RenderEntities()\r
-{\r
-  int i;\r
-\r
-  qsort(entidx, cc, 1, cmpent);\r
-  for (i=0; i<cc; i++) DrawEntity(entidx[i]);\r
-}\r
-\r
-int GetArg(entity_r *p)\r
-{\r
-  int j;\r
-  static char token[10];\r
-\r
-  j=0;\r
-  while (*p->animofs==' ') p->animofs++;\r
-  while (*p->animofs>=48 && *p->animofs<=57)\r
-  {\r
-    token[j]=*p->animofs;\r
-    p->animofs++;\r
-    j++;\r
-  }\r
-  token[j]=0;\r
-  return atoi(token);\r
-}\r
-\r
-void GetNextCommand(entity_r *p)\r
-{\r
-  byte s;\r
-\r
-  while (*p->animofs==' ') p->animofs++;\r
-  s=*p->animofs;\r
-  p->animofs++;\r
-  switch (s)\r
-  {\r
-    case 'F': p->frame=GetArg(p); break;\r
-    case 'W': p->delayct=GetArg(p); break;\r
-    case   0: if (p->moving)\r
-                switch (p->facing)\r
-                {\r
-                  case 0: p->animofs=chr[p->chrindex].danim; break;\r
-                  case 1: p->animofs=chr[p->chrindex].uanim; break;\r
-                  case 2: p->animofs=chr[p->chrindex].lanim; break;\r
-                  case 3: p->animofs=chr[p->chrindex].ranim; break;\r
-                }\r
-              else\r
-                switch (p->facing)\r
-                {\r
-                  case 0: p->animofs=0; p->frame=chr[p->chrindex].didle; break;\r
-                  case 1: p->animofs=0; p->frame=chr[p->chrindex].uidle; break;\r
-                  case 2: p->animofs=0; p->frame=chr[p->chrindex].lidle; break;\r
-                  case 3: p->animofs=0; p->frame=chr[p->chrindex].ridle; break;\r
-                }\r
-              p->delayct=0; break;\r
-  }\r
-}\r
-\r
-void AnimateEntity(entity_r *p)\r
-{\r
-  if (!p->animofs && p->moving)\r
-  {\r
-     switch (p->facing)\r
-     {\r
-       case 0: p->animofs=chr[p->chrindex].danim; break;\r
-       case 1: p->animofs=chr[p->chrindex].uanim; break;\r
-       case 2: p->animofs=chr[p->chrindex].lanim; break;\r
-       case 3: p->animofs=chr[p->chrindex].ranim; break;\r
-     }\r
-     p->delayct=0;\r
-  }\r
-  if (!p->animofs && !p->moving)\r
-  {\r
-     switch (p->facing)\r
-     {\r
-       case 0: p->animofs=0; p->frame=chr[p->chrindex].didle; break;\r
-       case 1: p->animofs=0; p->frame=chr[p->chrindex].uidle; break;\r
-       case 2: p->animofs=0; p->frame=chr[p->chrindex].lidle; break;\r
-       case 3: p->animofs=0; p->frame=chr[p->chrindex].ridle; break;\r
-     }\r
-     p->delayct=0;\r
-  }\r
-  if (p->delayct)\r
-  {\r
-    p->delayct--;\r
-  }\r
-  else GetNextCommand(p);\r
-}\r
-\r
-int EntityAt(int ex, int ey)\r
-{ int i;\r
-\r
-  for (i=0; i<cc; i++)\r
-  {\r
-    if (&entity[entidx[i]]==player) continue;\r
-    if (ex==entity[entidx[i]].tx && ey==entity[entidx[i]].ty)\r
-        return entidx[i]+1;\r
-  }\r
-  return 0;\r
-}\r
-\r
-int EntityObsAt(int ex, int ey)\r
-{ int i;\r
-\r
-  for (i=0; i<cc; i++)\r
-  {\r
-    if (&entity[entidx[i]]==player) continue;\r
-    if (ex==entity[entidx[i]].tx && ey==entity[entidx[i]].ty &&\r
-        entity[entidx[i]].obsmode2)\r
-        return entidx[i]+1;\r
-  }\r
-  return 0;\r
-}\r
-\r
-int AEntityObsAt(int ex, int ey)\r
-{ int i;\r
-\r
-  for (i=0; i<cc; i++)\r
-  {\r
-    if (ex==entity[entidx[i]].tx && ey==entity[entidx[i]].ty &&\r
-        entity[entidx[i]].obsmode2)\r
-        return entidx[i]+1;\r
-  }\r
-  return 0;\r
-}\r
-\r
-void SiftEntities()\r
-{ int i, dx, dy;\r
-\r
-  memset(&entidx, 0, 256); cc=0;\r
-  for (i=0; i<entities; i++)\r
-  {\r
-    dx=entity[i].x-xwin+16;\r
-    dy=entity[i].y-ywin+16;\r
-\r
-    if (dx<0 || dx>sx+chr[entity[i].chrindex].fxsize) continue;\r
-    if (dy<0 || dy>sy+chr[entity[i].chrindex].fysize) continue;\r
-    entidx[cc]=i; cc++;\r
-  }\r
-}\r
-\r
-void MoveRight(int i)\r
-{\r
-  int tx,ty;\r
-\r
-  tx=entity[i].tx+1; ty=entity[i].ty;\r
-  if (entity[i].obsmode1 && (ObstructionAt(tx,ty) || AEntityObsAt(tx,ty)))\r
-     { movesuccess=0; return; }\r
-  if (entity[i].facing!=3)\r
-  {\r
-    entity[i].delayct=0;\r
-    entity[i].animofs=0;\r
-  }\r
-  entity[i].x++; entity[i].facing=3; entity[i].moving=4; entity[i].ctr=15;\r
-  entity[i].tx++; movesuccess=1; entity[i].reset=0;\r
-}\r
-\r
-void MoveLeft(int i)\r
-{\r
-  int tx, ty;\r
-\r
-  tx=entity[i].tx-1; ty=entity[i].ty;\r
-  if (entity[i].obsmode1 && (ObstructionAt(tx,ty) || AEntityObsAt(tx,ty)))\r
-     { movesuccess=0; return; }\r
-\r
-  if (entity[i].facing!=2)\r
-  {\r
-    entity[i].delayct=0;\r
-    entity[i].animofs=0;\r
-  }\r
-  entity[i].x--; entity[i].facing=2; entity[i].moving=3; entity[i].ctr=15;\r
-  entity[i].tx--; movesuccess=1; entity[i].reset=0;\r
-}\r
-\r
-void MoveUp(int i)\r
-{\r
-  int tx, ty;\r
-\r
-  tx=entity[i].tx; ty=entity[i].ty-1;\r
-  if (entity[i].obsmode1 && (ObstructionAt(tx,ty) || AEntityObsAt(tx,ty)))\r
-     { movesuccess=0; return; }\r
-  if (entity[i].facing!=1)\r
-  {\r
-    entity[i].delayct=0;\r
-    entity[i].animofs=0;\r
-  }\r
-  entity[i].y--; entity[i].facing=1; entity[i].moving=2; entity[i].ctr=15;\r
-  entity[i].ty--; movesuccess=1; entity[i].reset=0;\r
-}\r
-\r
-void MoveDown(int i)\r
-{\r
-  int tx, ty;\r
-\r
-  tx=entity[i].tx; ty=entity[i].ty+1;\r
-  if (entity[i].obsmode1 && (ObstructionAt(tx,ty) || AEntityObsAt(tx,ty)))\r
-     { movesuccess=0; return; }\r
-  if (entity[i].facing!=0)\r
-  {\r
-    entity[i].delayct=0;\r
-    entity[i].animofs=0;\r
-  }\r
-  entity[i].y++; entity[i].facing=0; entity[i].moving=1; entity[i].ctr=15;\r
-  entity[i].ty++; movesuccess=1; entity[i].reset=0;\r
-}\r
-\r
-void Wander1(int i)\r
-{\r
-  if (!entity[i].data1)\r
-  {\r
-    entity[i].data2=rnd(0,3);\r
-    entity[i].data1=entity[i].step+1;\r
-  }\r
-  if (entity[i].data1==1)\r
-  {\r
-    entity[i].delayctr++;\r
-    if (entity[i].delayctr>=entity[i].delay)\r
-       entity[i].data1=0;\r
-    return;\r
-  }\r
-  if (entity[i].data1>1)\r
-  {\r
-    switch(entity[i].data2)\r
-    {\r
-      case 0: MoveUp(i); break;\r
-      case 1: MoveDown(i); break;\r
-      case 2: MoveLeft(i); break;\r
-      case 3: MoveRight(i); break;\r
-    }\r
-    entity[i].data1--;\r
-    if (entity[i].data1==1)\r
-    {\r
-      entity[i].delayctr=0;\r
-      entity[i].animofs=0;\r
-      entity[i].delayct=0;\r
-    }\r
-  }\r
-}\r
-\r
-void Wander2(int i)\r
-{\r
-  if (!entity[i].data1)\r
-  {\r
-    entity[i].data3=rnd(0,3);\r
-    entity[i].data1=entity[i].step+1;\r
-  }\r
-  if (entity[i].data1==1)\r
-  {\r
-    entity[i].delayctr++;\r
-    if (entity[i].delayctr>=entity[i].delay)\r
-       entity[i].data1=0;\r
-    return;\r
-  }\r
-  if (entity[i].data1>1)\r
-  {\r
-    switch(entity[i].data3)\r
-    {\r
-      case 0: if (Zone(entity[i].tx,entity[i].ty-1)==entity[i].data2) MoveUp(i); break;\r
-      case 1: if (Zone(entity[i].tx,entity[i].ty+1)==entity[i].data2) MoveDown(i); break;\r
-      case 2: if (Zone(entity[i].tx-1,entity[i].ty)==entity[i].data2) MoveLeft(i); break;\r
-      case 3: if (Zone(entity[i].tx+1,entity[i].ty)==entity[i].data2) MoveRight(i); break;\r
-     }\r
-    entity[i].data1--;\r
-    if (entity[i].data1==1) entity[i].delayctr=0;\r
-  }\r
-}\r
-\r
-void Wander3(int i)\r
-{\r
-  if (!entity[i].data1)\r
-  {\r
-    entity[i].data2=rnd(0,3);\r
-    entity[i].data1=entity[i].step+1;\r
-  }\r
-  if (entity[i].data1==1)\r
-  {\r
-    entity[i].delayctr++;\r
-    if (entity[i].delayctr>=entity[i].delay)\r
-       entity[i].data1=0;\r
-    return;\r
-  }\r
-  if (entity[i].data1>1)\r
-  {\r
-    switch(entity[i].data2)\r
-    {\r
-      case 0: if (entity[i].ty>entity[i].data3) MoveUp(i); break;\r
-      case 1: if (entity[i].ty<entity[i].data6) MoveDown(i); break;\r
-      case 2: if (entity[i].tx>entity[i].data2) MoveLeft(i); break;\r
-      case 3: if (entity[i].tx<entity[i].data5) MoveRight(i); break;\r
-    }\r
-    entity[i].data1--;\r
-    if (entity[i].data1==1) entity[i].delayct=0;\r
-  }\r
-}\r
-\r
-void Whitespace(int i)\r
-{\r
-  while (*entity[i].scriptofs==' ')\r
-    entity[i].scriptofs++;\r
-}\r
-\r
-void GetArgMS(int i)\r
-{ int j;\r
-  char token[10];\r
-\r
-  j=0;\r
-  Whitespace(i);\r
-  while (*entity[i].scriptofs>=48 && *entity[i].scriptofs<=57)\r
-  {\r
-    token[j]=*entity[i].scriptofs;\r
-    entity[i].scriptofs++;\r
-    j++;\r
-  }\r
-  token[j]=0;\r
-  entity[i].data1=atoi(token);\r
-}\r
-\r
-void GetNextCommandMS(int i)\r
-{ unsigned char s;\r
-\r
-  Whitespace(i);\r
-  s=*entity[i].scriptofs;\r
-  entity[i].scriptofs++;\r
-  switch (s)\r
-  {\r
-    case 'U': entity[i].mode=1; GetArgMS(i); break;\r
-    case 'D': entity[i].mode=2; GetArgMS(i); break;\r
-    case 'L': entity[i].mode=3; GetArgMS(i); break;\r
-    case 'R': entity[i].mode=4; GetArgMS(i); break;\r
-    case 'S': entity[i].mode=5; GetArgMS(i); break;\r
-    case 'W': entity[i].mode=6; GetArgMS(i); entity[i].animofs=0;\r
-              entity[i].delayct=0; break;\r
-    case 0:   switch (entity[i].facing)\r
-              {\r
-                case 0: entity[i].animofs=0; entity[i].frame=chr[entity[i].chrindex].didle; break;\r
-                case 1: entity[i].animofs=0; entity[i].frame=chr[entity[i].chrindex].uidle; break;\r
-                case 2: entity[i].animofs=0; entity[i].frame=chr[entity[i].chrindex].lidle; break;\r
-                case 3: entity[i].animofs=0; entity[i].frame=chr[entity[i].chrindex].ridle; break;\r
-              }\r
-              entity[i].movecode=0; entity[i].mode=7; entity[i].data1=0;\r
-              entity[i].scriptofs=0; entity[i].delayct=0; break;\r
-    case 'C': entity[i].mode=8; GetArgMS(i); break;\r
-    case 'B': entity[i].mode=9; break;\r
-    case 'X': entity[i].mode=10; GetArgMS(i); break;\r
-    case 'Y': entity[i].mode=11; GetArgMS(i); break;\r
-    case 'F': entity[i].mode=12; GetArgMS(i); break;\r
-    case 'Z': entity[i].mode=13; GetArgMS(i); break;\r
-    default: err("Invalid entity movement script.");\r
-  }\r
-}\r
-\r
-void MoveScript(int i)\r
-{\r
-  if (!entity[i].scriptofs) entity[i].scriptofs=(char *) (int) ms+(int) msbuf[entity[i].movescript];\r
-  if (!entity[i].mode) GetNextCommandMS(i);\r
-\r
-  switch(entity[i].mode)\r
-  {\r
-    case 1: MoveUp(i); if (movesuccess) entity[i].data1--; break;\r
-    case 2: MoveDown(i); if (movesuccess) entity[i].data1--; break;\r
-    case 3: MoveLeft(i); if (movesuccess) entity[i].data1--; break;\r
-    case 4: MoveRight(i); if (movesuccess) entity[i].data1--; break;\r
-    case 5: entity[i].speed=entity[i].data1; entity[i].data1=0; break;\r
-    case 6: entity[i].data1--; break;\r
-    case 7: return;\r
-    case 8: ExecuteEvent(entity[i].data1); entity[i].data1=0; break;\r
-    case 9: entity[i].scriptofs=(char *) (int) ms+(int) msbuf[entity[i].movescript];\r
-            entity[i].data1=0; break;\r
-    case 10: if (entity[i].tx<entity[i].data1) MoveRight(i);\r
-             if (entity[i].tx>entity[i].data1) MoveLeft(i);\r
-             if (entity[i].tx==entity[i].data1) entity[i].data1=0; break;\r
-             break;\r
-    case 11: if (entity[i].ty<entity[i].data1) MoveDown(i);\r
-             if (entity[i].ty>entity[i].data1) MoveUp(i);\r
-             if (entity[i].ty==entity[i].data1) entity[i].data1=0; break;\r
-             break;\r
-    case 12: entity[i].facing=entity[i].data1;\r
-             entity[i].data1=0;\r
-             //--- zero 5.6.99\r
-             switch(entity[i].facing)\r
-             {\r
-               case 0: entity[i].frame=chr[entity[i].chrindex].didle; break;\r
-               case 1: entity[i].frame=chr[entity[i].chrindex].uidle;        break;\r
-               case 2: entity[i].frame=chr[entity[i].chrindex].lidle; break;\r
-               case 3: entity[i].frame=chr[entity[i].chrindex].ridle; break;\r
-             }\r
-             //---\r
-             break;\r
-    case 13: entity[i].specframe=entity[i].data1;\r
-             entity[i].data1=0; break;\r
-  }\r
-  if (!entity[i].data1) entity[i].mode=0;\r
-}\r
-\r
-void TestActive(int i)\r
-{\r
-  int dx, dy;\r
-\r
-  dx=abs(entity[i].x - player->x);\r
-  dy=abs(entity[i].y - player->y);\r
-  if ((dx<=16 && dy<=3) || (dx<=3 && dy<=16))\r
-  {\r
-    if (!entity[i].expand4 && !invc)\r
-    {\r
-      entity[i].expand4=1;\r
-      ExecuteEvent(entity[i].actscript);\r
-    }\r
-  }\r
-  else\r
-    entity[i].expand4=0;\r
-}\r
-\r
-void ProcessEntity1(int i)\r
-{\r
-  entity[i].speedct=0;\r
-  if (entity[i].actm) TestActive(i);\r
-\r
-  if (!entity[i].moving)\r
-  {\r
-     switch(entity[i].movecode)\r
-     {\r
-       case 0: return;\r
-       case 1: Wander1(i); break;\r
-       case 2: Wander2(i); break;\r
-       case 3: Wander3(i); break;\r
-       case 4: MoveScript(i); break;\r
-       default: err("unknown entity movement pattern.");\r
-     }\r
-     if (!entity[i].reset) return;\r
-  }\r
-\r
-  if (entity[i].reset)\r
-  {\r
-    entity[i].animofs=0;\r
-    entity[i].delayct=0;\r
-    entity[i].reset=0;\r
-  }\r
-\r
-  if (entity[i].moving)\r
-  {\r
-      if (entity[i].moving==1)\r
-      { entity[i].y++; entity[i].ctr--; AnimateEntity(&entity[i]); }\r
-      if (entity[i].moving==2)\r
-      { entity[i].y--; entity[i].ctr--; AnimateEntity(&entity[i]); }\r
-      if (entity[i].moving==4)\r
-      { entity[i].x++; entity[i].ctr--; AnimateEntity(&entity[i]); }\r
-      if (entity[i].moving==3)\r
-      { entity[i].x--; entity[i].ctr--; AnimateEntity(&entity[i]); }\r
-      if (!entity[i].ctr) { entity[i].reset=1; entity[i].moving=0; }\r
-   }\r
-}\r
-\r
-void ProcessEntity(int i)\r
-{ int j;\r
-\r
-  if (player==&entity[i]) return;\r
-  if (entity[i].speed<4)\r
-  {\r
-    switch (entity[i].speed)\r
-    {\r
-      case 1: if (entity[i].speedct<3) { entity[i].speedct++; return; }\r
-      case 2: if (entity[i].speedct<2) { entity[i].speedct++; return; }\r
-      case 3: if (entity[i].speedct<1) { entity[i].speedct++; return; }\r
-    }\r
-  }\r
-  if (entity[i].speed<5)\r
-  {\r
-    ProcessEntity1(i);\r
-    entity[i].speedct=0;\r
-  }\r
-  switch (entity[i].speed)\r
-  {\r
-    case 5: for (j=0; j<2; j++) { ProcessEntity1(i); } return;\r
-    case 6: for (j=0; j<3; j++) { ProcessEntity1(i); } return;\r
-    case 7: for (j=0; j<4; j++) { ProcessEntity1(i); } return;\r
-  }\r
-}\r
-\r
-void ProcessEntities()\r
-{\r
-  int i;\r
-\r
-  SiftEntities();\r
-  for (i=0; i<entities; i++) ProcessEntity(i);\r
-}\r
-\r
-void EntityStat()\r
-{\r
-  Con_NextLine();\r
-  sprintf(strbuf,"There are \82%d~ entities on this map.",entities);\r
-  Con_Printf(strbuf);\r
-  sprintf(strbuf,"\82%d~ of those are onscreen / active.",cc);\r
-  Con_Printf(strbuf);\r
-}\r
-\r
-void ListActiveEnts()\r
-{ int i;\r
-\r
-  Con_NextLine();\r
-  Con_Printf("Active entities:");\r
-  for (i=0; i<cc; i++)\r
-  {\r
-    sprintf(strbuf,"\82%d~",entidx[i]);\r
-    Con_Printf(strbuf);\r
-  }\r
-}\r
-\r
-void EntityS()\r
-{ int i;\r
-\r
-  i=atoi((char *) args[1]);\r
-  Con_NextLine();\r
-\r
-  sprintf(strbuf,"Desc: \82%s~", entity[i].desc); Con_Printf(strbuf);\r
-  sprintf(strbuf,"tx: \82%d~ ty: \82%d~", entity[i].tx, entity[i].ty); Con_Printf(strbuf);\r
-  sprintf(strbuf,"CHR index: %d", entity[i].chrindex); Con_Printf(strbuf);\r
-}\r
-\r
-int AllocateEntity(int x1, int y1, char *fname)\r
-{\r
-  entity[entities].chrindex=CacheCHR(fname);\r
-  entity[entities].x=x1*16;\r
-  entity[entities].y=y1*16;\r
-  entity[entities].tx=x1;\r
-  entity[entities].ty=y1;\r
-  entity[entities].speed=4;\r
-  entity[entities].obsmode1=1;\r
-  entity[entities].obsmode2=1;\r
-  entities++;\r
-  return (entities-1);\r
-}\r
diff --git a/16/v2/source/verge/ENGINE/ENTITY.H b/16/v2/source/verge/ENGINE/ENTITY.H
deleted file mode 100755 (executable)
index f6b229d..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef ENTITY_H\r
-#define ENTITY_H\r
-\r
-typedef struct\r
-{\r
-  int x, y;                            // xwc, ywx position\r
-  word tx, ty;                         // xtc, ytc position\r
-  byte facing;                         // direction entity is facing\r
-  byte moving, movecnt;                // direction entity is moving\r
-  byte frame;                          // bottom-line frame to display\r
-  byte specframe;                      // special-frame set thingo\r
-  byte chrindex, reset;                // CHR index | Reset animation\r
-  byte obsmode1, obsmode2;             // can be obstructed | Is an obstruction\r
-  byte speed, speedct;                 // entity speed, speedcount :)\r
-  byte delayct;                        // animation frame-delay\r
-  char *animofs, *scriptofs;           // anim script | move script\r
-  byte face, actm;                     // auto-face | activation mode\r
-  byte movecode, movescript;           // movement type | movement script\r
-  byte ctr, mode;                      // sub-tile move ctr, mode flag (internal)\r
-  word step, delay;                    // step, delay\r
-  word stepctr, delayctr;              // internal use counters\r
-  word data1, data2, data3;            //\r
-  word data4, data5, data6;            //\r
-  int  actscript;                      // activation script\r
-  int  expand1, expand2;               //\r
-  int  expand3, expand4;               //\r
-  char desc[20];                       // Entity description.\r
-} entity_r;\r
-\r
-typedef struct\r
-{\r
-  char t[60];\r
-} chrlist_r;\r
-\r
-typedef struct\r
-{\r
-  byte *imagedata;                   // CHR frame data\r
-  int fxsize, fysize;                // frame x/y dimensions\r
-  int hx, hy;                        // x/y obstruction hotspot\r
-  int totalframes;                   // total # of frames.\r
-  int lidle, ridle;\r
-  int uidle, didle;\r
-  char lanim[100];\r
-  char ranim[100];\r
-  char uanim[100];\r
-  char danim[100];\r
-} chrdata;\r
-\r
-extern chrlist_r chrlist[100];\r
-extern byte nmchr, playernum;\r
-extern entity_r *player;\r
-extern entity_r entity[256];\r
-extern chrdata chr[100];\r
-extern byte entities, numchrs;\r
-extern byte entidx[256], cc;\r
-\r
-void RenderEntities();\r
-void AnimateEntity(entity_r *p);\r
-void ProcessEntities();\r
-void SiftEntities();\r
-void LoadCHRList();\r
-void FreeCHRList();\r
-void EntityStat();\r
-void ListActiveEnts();\r
-void EntityS();\r
-int EntityAt(int ex, int ey);\r
-int EntityObsAt(int ex, int ey);\r
-int ObstructionAt(int ex, int ey);\r
-int CacheCHR(char *fname);\r
-int AllocateEntity(int x1, int y1, char *fname);\r
-\r
-#endif\r
diff --git a/16/v2/source/verge/ENGINE/FLI.C b/16/v2/source/verge/ENGINE/FLI.C
deleted file mode 100755 (executable)
index 24147f3..0000000
+++ /dev/null
@@ -1,702 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-// ported by aen\r
-\r
-#define FLI_H\r
-#include <sys/stat.h>\r
-#include <fcntl.h>\r
-#include <unistd.h>\r
-#include "verge.h"\r
-\r
-// ================================= Data ====================================\r
-\r
-#ifndef __WATCOMC__\r
-#define INT_MAX 0xFFFFFFFF\r
-#define INT_MIN 0\r
-#endif\r
-\r
-#ifndef MIN\r
-#define MIN(x,y)     (((x) < (y)) ? (x) : (y))\r
-#define MAX(x,y)     (((x) > (y)) ? (x) : (y))\r
-#define MID(x,y,z)   MAX((x), MIN((y), (z)))\r
-#endif\r
-\r
-#ifndef ABS\r
-#define ABS(x)       (((x) >= 0) ? (x) : (-(x)))\r
-#endif\r
-\r
-#ifndef SGN\r
-#define SGN(x)       (((x) >= 0) ? 1 : -1)\r
-#endif\r
-\r
-#define FLI_MAGIC            0xAF11      // file header magic number\r
-#define FLC_MAGIC            0xAF12      // file magic number (Pro)\r
-#define FLI_FRAME_MAGIC      0xF1FA      // frame header magic number\r
-#define FLI_FRAME_PREFIX     0xF100      // FLC's prefix info\r
-#define FLI_FRAME_USELESS    0x00A1      // FLC's garbage frame\r
-\r
-typedef struct\r
-{\r
-  int w,h;\r
-  byte *data;\r
-} BITMAP;\r
-\r
-#define FLI_OK          0              /* FLI player return values */\r
-#define FLI_EOF         -1\r
-#define FLI_ERROR       -2\r
-#define FLI_NOT_OPEN    -3\r
-\r
-#ifdef __WATCOMC__\r
-#define PACKED\r
-#pragma pack(1);\r
-#endif\r
-\r
-#ifdef __DJGPP__\r
-#define PACKED __attribute__ ((packed))\r
-#endif\r
-\r
-typedef struct\r
-{\r
-  long size            PACKED;\r
-  word type            PACKED;\r
-  word frame_count     PACKED;\r
-  word width           PACKED;\r
-  word height          PACKED;\r
-  word bpp             PACKED;\r
-  word flags           PACKED;\r
-  word speed           PACKED;\r
-  long next_head       PACKED;\r
-  long frames_in_table PACKED;\r
-  char reserved[102]   PACKED;\r
-} FLI_HEADER;\r
-\r
-typedef struct\r
-{\r
-  quad size            PACKED;\r
-  word type            PACKED;\r
-  word chunks          PACKED;\r
-  char pad[8]          PACKED;\r
-} FLI_FRAME;\r
-\r
-typedef struct\r
-{\r
-  quad size            PACKED;\r
-  word type            PACKED;\r
-} FLI_CHUNK;\r
-\r
-#ifdef __WATCOMC__\r
-#pragma pack();\r
-#endif\r
-\r
-static int fli_status = FLI_NOT_OPEN;  // current state of the FLI player\r
-\r
-int fli_bitmap_width = 0;\r
-int fli_bitmap_height = 0;\r
-byte *fli_bitmap_data = NULL;          // current frame of the FLI\r
-byte fli_palette[768];                   // current palette the FLI is using\r
-\r
-int fli_bmp_dirty_from = INT_MAX;      // what part of fli_bitmap is dirty\r
-int fli_bmp_dirty_to = INT_MIN;\r
-int fli_pal_dirty_from = INT_MAX;      // what part of fli_palette is dirty\r
-int fli_pal_dirty_to = INT_MIN;\r
-\r
-int fli_frame = 0;                     // current frame number in the FLI\r
-long speed;\r
-\r
-static int fli_file = 0;               // the file we are reading\r
-\r
-static byte *fli_mem_data = NULL;      // the memory FLI we are playing\r
-static int fli_mem_pos = 0;            // position in the memory FLI\r
-\r
-static FLI_HEADER fli_header;          // header structure\r
-static FLI_FRAME frame_header;         // frame header structure\r
-\r
-// a block of temporary working memory\r
-byte *_scratch_mem = NULL;\r
-int _scratch_mem_size = 0;\r
-\r
-// ================================= Code ====================================\r
-\r
-void reset_fli_variables(void);\r
-void close_fli(void);\r
-int  next_fli_frame(int);\r
-int  open_fli(char *);\r
-int  open_memory_fli(byte *);\r
-\r
-void _grow_scratch_mem(int size)\r
-{\r
-  if (size > _scratch_mem_size) {\r
-    size = (size+1023) & 0xFFFFFC00;\r
-    _scratch_mem = realloc(_scratch_mem, size);\r
-    _scratch_mem_size = size;\r
-  }\r
-}\r
-\r
-void vsync()\r
-{\r
-  while (!(inp(986) & 8));\r
-}\r
-\r
-void set_palette_range(byte *pal, int from, int to, int sync)\r
-{\r
-  int i;\r
-\r
-  // swap?\r
-  if (to<from) { int t=from; from=to; to=t; }\r
-\r
-  // keep valid\r
-  if (from<0) from=0;\r
-  if (to>=256) to=255;\r
-\r
-  if (sync) vsync();\r
-\r
-  outp(968, from);\r
-  for (i=from; i<=to; i++)\r
-  {\r
-    outp(969, pal[(i*3)+0]);\r
-    outp(969, pal[(i*3)+1]);\r
-    outp(969, pal[(i*3)+2]);\r
-  }\r
-}\r
-\r
-static byte *fli_read(byte *buf, int size)\r
-{\r
-  int result;\r
-\r
-  if (fli_mem_data)\r
-  {\r
-    if (buf)\r
-      memcpy(buf, fli_mem_data+fli_mem_pos, size);\r
-    else\r
-      buf = fli_mem_data+fli_mem_pos;\r
-\r
-    fli_mem_pos += size;\r
-  }\r
-  else\r
-  {\r
-    if (!buf)\r
-    {\r
-      _grow_scratch_mem(size);\r
-      buf = _scratch_mem;\r
-    }\r
-\r
-    result = read(fli_file, buf, size);\r
-    if (result != size)\r
-      return NULL;\r
-  }\r
-  return buf;\r
-}\r
-\r
-static void fli_seek(int offset, int mode)\r
-{\r
-  if (fli_mem_data)\r
-  {\r
-    if (mode == SEEK_CUR)\r
-      fli_mem_pos += offset;\r
-    else\r
-      fli_mem_pos = offset;\r
-  }\r
-  else\r
-    lseek(fli_file, offset, mode);\r
-}\r
-\r
-// helpers for reading FLI chunk data\r
-#define READ_BYTE()  ((sz-- > 0)    ? *(((byte *)p)++) : 0)\r
-#define READ_CHAR()  ((sz-- > 0)    ? *(((signed char  *)p)++) : 0)\r
-#define READ_SHORT() (((sz-=2) > 0) ? *(((signed short *)p)++) : 0)\r
-\r
-#define READ_BLOCK(pos, size)             \\r
-  {                                       \\r
-    if (sz >= (size))                     \\r
-    {                                     \\r
-      memcpy(pos, p, size);               \\r
-      p += (size);                        \\r
-      sz -= (size);                       \\r
-    }                                     \\r
-    else                                  \\r
-    {                                     \\r
-      char *_p = (char *)(pos);           \\r
-      int _c;                             \\r
-                                          \\r
-      for (_c=0; _c < (size); _c++)       \\r
-        *(_p++) = READ_BYTE();            \\r
-    }                                     \\r
-  }\r
-\r
-#define READ_RLE_BYTE(pos, size)          \\r
-  {                                       \\r
-    memset(pos, READ_BYTE(), size);       \\r
-  }\r
-\r
-#define READ_RLE_WORD(pos, size)          \\r
-  {                                       \\r
-    short *_p = (short *)(pos);           \\r
-    short _v = READ_SHORT();              \\r
-    int _c;                               \\r
-                                          \\r
-    for (_c=0; _c < (size); _c++)         \\r
-      *(_p++) = _v;                       \\r
-  }\r
-\r
-static void do_fli_256_color(byte *p, int sz)\r
-{\r
-  int packets;\r
-  int c, c2;\r
-  int offset;\r
-  int length;\r
-\r
-  offset = 0;\r
-  packets = READ_SHORT();\r
-  for (c=0; c<packets; c++)\r
-  {\r
-    offset += READ_BYTE();\r
-    length = READ_BYTE();\r
-    if (length == 0) length = 256;\r
-    for (c2=0; c2<length; c2++)\r
-    {\r
-      fli_palette[((offset+c2)*3)+0] = READ_BYTE() / 4;\r
-      fli_palette[((offset+c2)*3)+1] = READ_BYTE() / 4;\r
-      fli_palette[((offset+c2)*3)+2] = READ_BYTE() / 4;\r
-    }\r
-    fli_pal_dirty_from = MIN(fli_pal_dirty_from, offset);\r
-    fli_pal_dirty_to = MAX(fli_pal_dirty_to, offset+length-1);\r
-    offset += length;\r
-  }\r
-}\r
-\r
-static void do_fli_delta(byte *p, int sz)\r
-{\r
-  int lines;\r
-  int packets;\r
-  int size;\r
-  int x, y;\r
-\r
-  y = 0;\r
-  lines = READ_SHORT();\r
-\r
-  // for each line...\r
-  while (lines-- > 0)\r
-  {\r
-    packets = READ_SHORT();\r
-\r
-    while (packets < 0)\r
-    {\r
-      if (packets & 0x4000)\r
-        y -= packets;\r
-      else\r
-        fli_bitmap_data[(y*fli_bitmap_width)+fli_bitmap_width-1]=packets&0xff;\r
-        //fli_bitmap->line[y][fli_bitmap->w-1] = packets & 0xFF;\r
-\r
-      packets = READ_SHORT();\r
-    }\r
-    x=0;\r
-    while (packets-- > 0)\r
-    {\r
-      // skip bytes\r
-      x += READ_BYTE();\r
-\r
-      size = READ_CHAR();\r
-\r
-      // copy size words\r
-      if (size > 0)\r
-      {\r
-        READ_BLOCK(fli_bitmap_data+(y*fli_bitmap_width)+x, size*2);\r
-        //READ_BLOCK(fli_bitmap->line[y]+x, size*2);\r
-        x += size*2;\r
-      }\r
-      // repeat word -size times\r
-      else if (size < 0)\r
-      {\r
-        READ_RLE_WORD(fli_bitmap_data+(y*fli_bitmap_width)+x, -size);\r
-        //READ_RLE_WORD(fli_bitmap->line[y]+x, -size);\r
-        x -= size*2;\r
-      }\r
-    }\r
-    fli_bmp_dirty_from = MIN(fli_bmp_dirty_from, y);\r
-    fli_bmp_dirty_to = MAX(fli_bmp_dirty_to, y);\r
-    y++;\r
-  }\r
-}\r
-\r
-static void do_fli_color(byte *p, int sz)\r
-{\r
-  int packets;\r
-  int c, c2;\r
-  int offset;\r
-  int length;\r
-\r
-  offset = 0;\r
-  packets = READ_SHORT();\r
-\r
-  for (c=0; c<packets; c++)\r
-  {\r
-    offset += READ_BYTE();\r
-    length = READ_BYTE();\r
-    if (length == 0) length = 256;\r
-\r
-    for (c2=0; c2<length; c2++)\r
-    {\r
-      fli_palette[((offset+c2)*3)+0] = READ_BYTE();\r
-      fli_palette[((offset+c2)*3)+1] = READ_BYTE();\r
-      fli_palette[((offset+c2)*3)+2] = READ_BYTE();\r
-    }\r
-\r
-    fli_pal_dirty_from = MIN(fli_pal_dirty_from, offset);\r
-    fli_pal_dirty_to = MAX(fli_pal_dirty_to, offset+length-1);\r
-    offset += length;\r
-  }\r
-}\r
-\r
-static void do_fli_lc(byte *p, int sz)\r
-{\r
-  int lines;\r
-  int packets;\r
-  int size;\r
-  int x, y;\r
-\r
-  y = READ_SHORT();\r
-  lines = READ_SHORT();\r
-  fli_bmp_dirty_from = MIN(fli_bmp_dirty_from, y);\r
-  fli_bmp_dirty_to = MAX(fli_bmp_dirty_to, y+lines-1);\r
-\r
-  // for each line...\r
-  while (lines-- > 0)\r
-  {\r
-    packets = READ_BYTE();\r
-    x = 0;\r
-    while (packets-- > 0)\r
-    {\r
-      x += READ_BYTE();\r
-      size = READ_CHAR();\r
-\r
-      // copy size bytes\r
-      if (size > 0)\r
-      {\r
-        READ_BLOCK(fli_bitmap_data+(y*fli_bitmap_width)+x, size);\r
-        //READ_BLOCK(fli_bitmap->line[y]+x, size);\r
-        x += size;\r
-      }\r
-      else if (size < 0)\r
-      {\r
-        READ_RLE_BYTE(fli_bitmap_data+(y*fli_bitmap_width)+x, -size);\r
-        //READ_RLE_BYTE(fli_bitmap->line[y]+x, -size);\r
-        x -= size;\r
-      }\r
-    }\r
-    y++;\r
-  }\r
-}\r
-\r
-static void do_fli_black(byte *p, int sz)\r
-{\r
-  memset(fli_bitmap_data, 0, fli_bitmap_width*fli_bitmap_height);\r
-  //clear(fli_bitmap);\r
-\r
-  fli_bmp_dirty_from = 0;\r
-  fli_bmp_dirty_to = fli_bitmap_height-1;\r
-}\r
-\r
-static void do_fli_brun(byte *p, int sz)\r
-{\r
-  int packets;\r
-  int size;\r
-  int x, y;\r
-\r
-  // for each line...\r
-  for (y=0; y<fli_bitmap_height; y++)\r
-  {\r
-    packets = READ_BYTE();\r
-    x = 0;\r
-    while (packets-- > 0)\r
-    {\r
-      size = READ_CHAR();\r
-      if (size < 0)\r
-      {\r
-        READ_BLOCK(fli_bitmap_data+(y*fli_bitmap_width)+x, -size);\r
-        //READ_BLOCK(fli_bitmap->line[y]+x, -size);\r
-        x -= size;\r
-      }\r
-      // repeat byte size times\r
-      else if (size > 0)\r
-      {\r
-        READ_RLE_BYTE(fli_bitmap_data+(y*fli_bitmap_width)+x, size);\r
-        //READ_RLE_BYTE(fli_bitmap->line[y]+x, size);\r
-        x += size;\r
-      }\r
-    }\r
-  }\r
-  fli_bmp_dirty_from = 0;\r
-  fli_bmp_dirty_to = fli_bitmap_height-1;\r
-}\r
-\r
-static void do_fli_copy(byte *p, int sz)\r
-{\r
-  READ_BLOCK(fli_bitmap_data, fli_bitmap_width * fli_bitmap_height);\r
-  //READ_BLOCK(fli_bitmap->dat, fli_bitmap->w * fli_bitmap->h);\r
-\r
-  fli_bmp_dirty_from = 0;\r
-  fli_bmp_dirty_to = fli_bitmap_height-1;\r
-}\r
-\r
-static void read_frame()\r
-{\r
-  byte *p;\r
-  FLI_CHUNK *chunk;\r
-  int c, sz;\r
-\r
-  if (fli_status != FLI_OK)\r
-    return;\r
-\r
-get_another_frame:\r
-  if (!fli_read((byte *)&frame_header, sizeof(FLI_FRAME)))\r
-  {\r
-    fli_status = FLI_ERROR;\r
-    return;\r
-  }\r
-\r
-  if ((frame_header.type == FLI_FRAME_PREFIX)\r
-  || (frame_header.type == FLI_FRAME_USELESS))\r
-  {\r
-    fli_seek(frame_header.size-sizeof(FLI_FRAME), SEEK_CUR);\r
-    fli_frame++;\r
-\r
-    goto get_another_frame;\r
-  }\r
-\r
-  if (frame_header.type != FLI_FRAME_MAGIC)\r
-  {\r
-    fli_status = FLI_ERROR;\r
-    return;\r
-  }\r
-\r
-  if (frame_header.size == sizeof(FLI_FRAME))\r
-  {\r
-    fli_frame++;\r
-    return;\r
-  }\r
-  p = fli_read(NULL, frame_header.size-sizeof(FLI_FRAME));\r
-  if (!p)\r
-  {\r
-    fli_status = FLI_ERROR;\r
-    return;\r
-  }\r
-  for (c=0; c<frame_header.chunks; c++)\r
-  {\r
-    chunk = (FLI_CHUNK *)p;\r
-    sz = chunk->size - sizeof(FLI_CHUNK);\r
-    p += sizeof(FLI_CHUNK);\r
-    switch (chunk->type)\r
-    {\r
-      case 4:  do_fli_256_color(p, sz); break;\r
-      case 7:  do_fli_delta(p, sz); break;\r
-      case 11: do_fli_color(p, sz); break;\r
-      case 12: do_fli_lc(p, sz); break;\r
-      case 13: do_fli_black(p, sz); break;\r
-      case 15: do_fli_brun(p, sz); break;\r
-      case 16: do_fli_copy(p, sz); break;\r
-      default: err("Corrupt FLI chunk.");\r
-    }\r
-    p = ((byte *)chunk) + chunk->size;\r
-  }\r
-  fli_frame++;\r
-}\r
-\r
-static int do_play_fli(BITMAP *bmp, int loop, int (*callback)())\r
-{\r
-  int ret;\r
-\r
-  ret = next_fli_frame(loop);\r
-  while (ret == FLI_OK)\r
-  {\r
-    if (fli_pal_dirty_from <= fli_pal_dirty_to)\r
-      set_palette_range(fli_palette, fli_pal_dirty_from, fli_pal_dirty_to, 1);\r
-\r
-    if (fli_bmp_dirty_from <= fli_bmp_dirty_to)\r
-    {\r
-      int i,to=fli_bmp_dirty_to;\r
-      if (to>=bmp->h) to=bmp->h-1;\r
-\r
-//      vsync();\r
-      for (i=fli_bmp_dirty_from; i<=to; i++)\r
-      {\r
-        memcpy(bmp->data+(i*bmp->w), fli_bitmap_data+(i*fli_bitmap_width),\r
-          (fli_bitmap_width>bmp->w) ? bmp->w : fli_bitmap_width);\r
-      }\r
-\r
-      //blit(\r
-      //  fli_bitmap, bmp, 0, fli_bmp_dirty_from, 0, fli_bmp_dirty_from,\r
-      //  fli_bitmap->w, 1+fli_bmp_dirty_to-fli_bmp_dirty_from);\r
-    }\r
-\r
-    reset_fli_variables();\r
-\r
-    if (callback)\r
-    {\r
-      ret = (*callback)();\r
-      if (ret != FLI_OK)\r
-        break;\r
-    }\r
-    ret = next_fli_frame(loop);\r
-    while (timer_count<speed) ShowPage();\r
-    timer_count=0;\r
-  }\r
-\r
-  close_fli();\r
-\r
-  return (ret == FLI_EOF) ? FLI_OK : ret;\r
-}\r
-\r
-int play_fli(char *filename, BITMAP *bmp, int loop, int (*callback)())\r
-{\r
-  if (open_fli(filename) != FLI_OK)\r
-    return FLI_ERROR;\r
-\r
-  return do_play_fli(bmp, loop, callback);\r
-}\r
-\r
-int play_memory_fli(byte *fli_data, BITMAP *bmp, int loop, int (*callback)())\r
-{\r
-  if (open_memory_fli(fli_data) != FLI_OK)\r
-    return FLI_ERROR;\r
-\r
-  return do_play_fli(bmp, loop, callback);\r
-}\r
-\r
-static int do_open_fli()\r
-{\r
-  // read the header\r
-  if (!fli_read((byte *)&fli_header, sizeof(FLI_HEADER)))\r
-  {\r
-    close_fli();\r
-    return FLI_ERROR;\r
-  }\r
-\r
-  // check magic numbers\r
-  if (((fli_header.bpp != 8) && (fli_header.bpp != 0))\r
-  || ((fli_header.type != FLI_MAGIC) && (fli_header.type != FLC_MAGIC)))\r
-  {\r
-    close_fli();\r
-    return FLI_ERROR;\r
-  }\r
-\r
-  if (fli_header.width == 0)\r
-    fli_header.width = 320;\r
-\r
-  if (fli_header.height == 0)\r
-    fli_header.height = 200;\r
-\r
-  // create the frame bitmap\r
-  fli_bitmap_width=fli_header.width;\r
-  fli_bitmap_height=fli_header.height;\r
-  fli_bitmap_data=(byte *)malloc(fli_bitmap_width*fli_bitmap_height);\r
-  if (!fli_bitmap_data)\r
-  {\r
-    close_fli();\r
-    return FLI_ERROR;\r
-  }\r
-\r
-  reset_fli_variables();\r
-  fli_frame = 0;\r
-  fli_status = FLI_OK;\r
-\r
-  if (fli_header.type == FLI_MAGIC)\r
-    speed = (long)fli_header.speed * 100 / 70;\r
-  else\r
-    speed = (long)fli_header.speed / 10;\r
-\r
-  if (speed == 0)\r
-    speed = 100;\r
-\r
-  return fli_status;\r
-}\r
-\r
-int open_fli(char *filename)\r
-{\r
-  if (fli_status != FLI_NOT_OPEN)\r
-    return FLI_ERROR;\r
-  fli_file = open(filename, O_RDONLY | O_BINARY, S_IRUSR | S_IWUSR);\r
-  if (fli_file < 0)\r
-  {\r
-    fli_file = 0;\r
-    return FLI_ERROR;\r
-  }\r
-  return do_open_fli();\r
-}\r
-\r
-int open_memory_fli(byte *fli_data)\r
-{\r
-  if (fli_status != FLI_NOT_OPEN)\r
-    return FLI_ERROR;\r
-  fli_mem_data = fli_data;\r
-  fli_mem_pos = 0;\r
-  return do_open_fli();\r
-}\r
-\r
-void close_fli()\r
-{\r
-  //remove_int(fli_timer_callback);\r
-\r
-  if (fli_file)\r
-  {\r
-    close(fli_file);\r
-    fli_file = 0;\r
-  }\r
-\r
-  if (fli_bitmap_data)\r
-  {\r
-    free(fli_bitmap_data);\r
-    fli_bitmap_data = NULL;\r
-  }\r
-\r
-  fli_mem_data = NULL;\r
-  fli_mem_pos = 0;\r
-  reset_fli_variables();\r
-  fli_status = FLI_NOT_OPEN;\r
-}\r
-\r
-int next_fli_frame(int loop)\r
-{\r
-  if (fli_status != FLI_OK)\r
-    return fli_status;\r
-\r
-  //fli_timer--;\r
-\r
-  // end of file? should we loop?\r
-  if (fli_frame >= fli_header.frame_count)\r
-  {\r
-    if (loop)\r
-    {\r
-      fli_seek(sizeof(FLI_HEADER), SEEK_SET);\r
-      fli_frame = 0;\r
-    }\r
-    else\r
-    {\r
-      fli_status = FLI_EOF;\r
-      return fli_status;\r
-    }\r
-  }\r
-  read_frame();\r
-  return fli_status;\r
-}\r
-\r
-void reset_fli_variables()\r
-{\r
-  fli_bmp_dirty_from = INT_MAX;\r
-  fli_bmp_dirty_to = INT_MIN;\r
-  fli_pal_dirty_from = INT_MAX;\r
-  fli_pal_dirty_to = INT_MIN;\r
-}\r
diff --git a/16/v2/source/verge/ENGINE/FLI.H b/16/v2/source/verge/ENGINE/FLI.H
deleted file mode 100755 (executable)
index b18995b..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef FLI_H\r
-#define FLI_H\r
-\r
-typedef struct\r
-{\r
-  int w,h;\r
-  byte *data;\r
-} BITMAP;\r
-\r
-int play_fli(char *filename, BITMAP *bmp, int loop, int (*callback)());\r
-int play_memory_fli(byte *fli_data, BITMAP *bmp, int loop, int (*callback)());\r
-#endif\r
diff --git a/16/v2/source/verge/ENGINE/FONT.C b/16/v2/source/verge/ENGINE/FONT.C
deleted file mode 100755 (executable)
index d9621ae..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#define FONT_H\r
-#include "verge.h"\r
-\r
-// ================================= Data ====================================\r
-\r
-struct fontstruct\r
-{\r
-  byte width, height;                  // Font character dimensions\r
-  byte *data;                          // Font bitmap data\r
-};\r
-\r
-struct fontstruct font[10];            // Font stuff;\r
-int numfonts=0;                        // number of loaded fonts.\r
-int curx, cury;                        // x/y font location\r
-char tc=0;                             // text color\r
-\r
-// ================================= Code ====================================\r
-\r
-int LoadFont(char *fname)\r
-{ VFILE *f=0;\r
-  struct fontstruct *cfont=0;\r
-  int z=0;\r
-\r
-  if (!(f=vopen(fname)))\r
-     err("Could not open font %s. \n",fname);\r
-\r
-  // alias current font struct\r
-  cfont=font+numfonts;\r
-\r
-  if (vgetc(f) != 1)\r
-    err("Font file incorrect version number. \n");\r
-\r
-  // font dims\r
-  cfont->width=vgetw(f);\r
-  cfont->height=vgetw(f);\r
-\r
-  // get num of sub-set; calc total bytes as well\r
-  z=vgetw(f) * 96 * cfont->width*cfont->height;\r
-\r
-  // nab room for font and read it in\r
-  cfont->data=(byte *)valloc(z, "LoadFont:cfont->data", OID_IMAGE);\r
-  vread(cfont->data, z, f);\r
-\r
-  vclose(f);\r
-\r
-  return numfonts++;\r
-}\r
-\r
-void TextColor(int c)\r
-{\r
-  tc=c;\r
-}\r
-\r
-void GotoXY(int x, int y)\r
-{\r
-  curx=x;\r
-  cury=y;\r
-}\r
-\r
-static void pchar(int fnt, int x, int y, unsigned char c)\r
-{\r
-  int w;\r
-  if (c>31 && c<127)\r
-  {\r
-    w=font[fnt].width,h=font[fnt].height;\r
-    TCopySpriteClip(x,y, w,h, font[fnt].data+((c-32)*w*h)+((tc&3)*96*w*h));\r
-  }\r
-}\r
-\r
-void printstring(int fnt, char *str)\r
-{\r
-  if (fnt<0 || fnt >= numfonts)\r
-    return;\r
-  for (; *str; str++)\r
-  {\r
-    unsigned char c=*str;\r
-    switch (c)\r
-    {\r
-      case 126: tc=0; str++; continue;\r
-      case 128: tc=1; str++; continue;\r
-      case 129: tc=2; str++; continue;\r
-      case 130: tc=3; str++; continue;\r
-    }\r
-    pchar(fnt,curx,cury,c);\r
-    curx+=font[fnt].width;\r
-  }\r
-}
\ No newline at end of file
diff --git a/16/v2/source/verge/ENGINE/FONT.H b/16/v2/source/verge/ENGINE/FONT.H
deleted file mode 100755 (executable)
index f8300c2..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef FONT_H\r
-#define FONT_H\r
-\r
-struct fontstruct\r
-{\r
-  byte width, height;                  // Font character dimensions\r
-  byte *data;                          // Font bitmap data\r
-};\r
-\r
-extern struct fontstruct font[10];      // Font stuff;\r
-extern int numfonts;                    // number of loaded fonts.\r
-extern int curx, cury;\r
-\r
-extern int LoadFont(char *fname);\r
-extern void TextColor(int c);\r
-extern void NumColor(int c);\r
-extern void GotoXY(int x, int y);\r
-extern void printstring(int fnt, char *str);\r
-extern void dec_to_asciiz(int num, char *buf);\r
-\r
-#endif // FONT_H\r
diff --git a/16/v2/source/verge/ENGINE/IMAGE.C b/16/v2/source/verge/ENGINE/IMAGE.C
deleted file mode 100755 (executable)
index 25c57ec..0000000
+++ /dev/null
@@ -1,709 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-// Mega kudos to aen for porting that GIF code.\r
-\r
-#include <conio.h>\r
-#include "verge.h"\r
-\r
-// ========================= PCX Imaging routines ============================\r
-\r
-char manufacturer;                     // pcx header\r
-char version;\r
-char encoding;\r
-char bits_per_pixel;\r
-word xmin, ymin;\r
-word xmax, ymax;\r
-word hres, vres;\r
-char palette[48];\r
-char reserved;\r
-char color_planes;\r
-word bytes_per_line;\r
-word palette_type;\r
-char filler[58];\r
-\r
-word width, depth;\r
-word bytes;\r
-byte c, run, ss=0;\r
-quad vidoffset, n=0;\r
-VFILE *pcxf;\r
-char *cb,*src;\r
-int i;\r
-\r
-// ================================= Code ====================================\r
-\r
-void ReadPCXLine(byte *dest)\r
-{ n=0;\r
-  while (n<width)\r
-  {\r
-    run=1;\r
-    c=vgetc(pcxf); //*src++;\r
-    if (c>=0xc0) //(c & 0xc0)==0xc0)\r
-    {\r
-      run=c & 0x3f;\r
-      c=vgetc(pcxf); //*src++;\r
-    }\r
-    while (run--)\r
-      dest[vidoffset+n++]=c;\r
-  }\r
-  vseek(pcxf, bytes_per_line-width, 1);\r
-}\r
-\r
-void LoadPCXHeader(char *fname)\r
-{\r
-  if (!(pcxf=vopen(fname))) err("Could not open PCX file %s.",fname);\r
-  vread(&manufacturer,1,pcxf);\r
-  vread(&version,1,pcxf);\r
-  vread(&encoding,1,pcxf);\r
-  vread(&bits_per_pixel,1,pcxf);\r
-  vread(&xmin,2,pcxf);\r
-  vread(&ymin,2,pcxf);\r
-  vread(&xmax,2,pcxf);\r
-  vread(&ymax,2,pcxf);\r
-  vread(&hres,2,pcxf);\r
-  vread(&vres,2,pcxf);\r
-  vread(&palette,48,pcxf);\r
-  vread(&reserved,1,pcxf);\r
-  vread(&color_planes,1,pcxf);\r
-  vread(&bytes_per_line,2,pcxf);\r
-  vread(&palette_type,2,pcxf);\r
-  vread(&filler,58,pcxf);\r
-  //vseek(pcxf,filesize(pcxf)-768,SEEK_SET);\r
-  //vread(&pal,768,pcxf);\r
-  vseek(pcxf,128L,SEEK_SET);\r
-  width=xmax-xmin+1;\r
-  depth=ymax-ymin+1;\r
-\r
-  bytes=bytes_per_line;\r
-\r
-  //for (i=0; i<768; i++)\r
-  //  pal[i]=pal[i] >> 2;\r
-//  SetPalette((byte *) &pal);\r
-\r
-  //i=filesize(pcxf);\r
-  //cb=(char *) valloc(i-896, "LoadPCXHeader:cb", OID_TEMP);\r
-  //vread(cb, i-(128+768+1), pcxf);\r
-}\r
-\r
-void LoadPCXHeaderNP(char *fname)\r
-{\r
-  if (!(pcxf=vopen(fname))) err("Could not open PCX file %s.",fname);\r
-  vread(&manufacturer,1,pcxf);\r
-  vread(&version,1,pcxf);\r
-  vread(&encoding,1,pcxf);\r
-  vread(&bits_per_pixel,1,pcxf);\r
-  vread(&xmin,2,pcxf);\r
-  vread(&ymin,2,pcxf);\r
-  vread(&xmax,2,pcxf);\r
-  vread(&ymax,2,pcxf);\r
-  vread(&hres,2,pcxf);\r
-  vread(&vres,2,pcxf);\r
-  vread(&palette,48,pcxf);\r
-  vread(&reserved,1,pcxf);\r
-  vread(&color_planes,1,pcxf);\r
-  vread(&bytes_per_line,2,pcxf);\r
-  vread(&palette_type,2,pcxf);\r
-  vread(&filler,58,pcxf);\r
-  vseek(pcxf,filesize(pcxf)-768,SEEK_SET);\r
-  vread(&pal,768,pcxf);\r
-  vseek(pcxf,128L,SEEK_SET);\r
-  width=xmax-xmin+1;\r
-  depth=ymax-ymin+1;\r
-  bytes=bytes_per_line;\r
-\r
-  i=filesize(pcxf);\r
-  cb=(char *) valloc(i-896, "LoadPCXHeaderNP:cb", OID_TEMP);\r
-  vread(cb, i-896, pcxf);\r
-}\r
-\r
-void LoadPCX(char *fname, byte *dest)\r
-{\r
-  LoadPCXHeader(fname);\r
-\r
-  src=cb;\r
-  for (i=0; i<depth; i++)\r
-  {\r
-    vidoffset=(i*width);\r
-    ReadPCXLine(dest);\r
-  }\r
-  vfree(cb);\r
-  vclose(pcxf);\r
-}\r
-\r
-byte *LoadPCXBuf(char *fname)\r
-{ byte *buf=0;\r
-\r
-//  LoadPCXHeaderNP(fname);\r
-  LoadPCXHeader(fname);\r
-  buf=(byte *) valloc(width*(depth+1), "LoadPCXBuf:buf", OID_IMAGE);\r
-  //src=cb;\r
-  for (vidoffset=0,i=0; i<depth; i++,vidoffset+=width)\r
-    ReadPCXLine(buf);\r
-  // palette avail?\r
-  if (12==vgetc(pcxf))\r
-  {\r
-    vread(pal,768,pcxf);\r
-    for (i=0; i<768; i++)\r
-      pal[i]>>=2;\r
-  }\r
-  //vfree(cb);\r
-  vclose(pcxf);\r
-  return buf;\r
-}\r
-\r
-// ========================= BMP Imaging routines ============================\r
-\r
-struct RGBQUAD\r
-{\r
-  unsigned char r,g,b,a;\r
-};\r
-\r
-struct RGBQUAD bmppalette[256];\r
-\r
-// ================================= Code ====================================\r
-\r
-byte *LoadBMPBuf(char *fname)\r
-{ byte pad[4], *buf;\r
-  VFILE* bmpfile;\r
-  int bwidth, bheight, y;\r
-\r
-  if (!(bmpfile=vopen(fname))) err("Could not open BMP file %s.",fname);\r
-  vseek(bmpfile, 18, SEEK_SET);\r
-  vread(&bwidth, 4, bmpfile); width=bwidth;\r
-  vread(&bheight, 4, bmpfile); depth=bheight;\r
-  vseek(bmpfile, 54, SEEK_SET);\r
-  vread(bmppalette, 1024, bmpfile);\r
-  buf=(byte*) valloc(bwidth*bheight, "LoadBMPBuf:buf", OID_IMAGE);\r
-\r
-  for (y=bheight-1; y>=0; y--)\r
-  {\r
-    vread((char *)((int)buf+y*width),width,bmpfile);\r
-    vread(pad,width%4,bmpfile);\r
-  }\r
-  for (y=0; y<256; y++)\r
-  {\r
-    pal[y*3]=bmppalette[y].b >> 2;\r
-    pal[y*3+1]=bmppalette[y].g >> 2;\r
-    pal[y*3+2]=bmppalette[y].r >> 2;\r
-  }\r
-  SetPalette((byte*)pal);\r
-  vclose(bmpfile);\r
-  return buf;\r
-}\r
-\r
-// ========================== GIF Imaging routines ===========================\r
-\r
-typedef unsigned char u8;\r
-typedef unsigned short u16;\r
-typedef unsigned long u32;\r
-\r
-typedef signed char s8;\r
-typedef signed short s16;\r
-typedef signed long s32;\r
-\r
-typedef struct\r
-{\r
-  u8 bits;\r
-  u8 background;\r
-  u8 * palette;\r
-  u8 * image;\r
-  s16 wide, deep;\r
-} gif_image_info;\r
-\r
-typedef struct\r
-{\r
-  char sig[7];\r
-  s16 screenwide, screendeep;\r
-  u8 hflags;\r
-  u8 background;\r
-  u8 aspect;\r
-} gif_header;\r
-\r
-typedef struct\r
-{\r
-  s16 top, left;\r
-  s16 wide, deep;\r
-  u8 iflags;\r
-} gif_image_descriptor;\r
-\r
-int NO_CODE = -1,// TRUE = 1,\r
-    ERROR_EOF = 0, ERROR_BAD_CODE = 1,\r
-    ERROR_BAD_HEADER = 2, ERROR_BAD_STARTCODE = 3,\r
-    ERROR_BAD_FIRST_CODE = 4, ERROR_BAD_FILE = 5,\r
-    ERROR_NO_IMAGE = 6;\r
-\r
-char* gif_error_messages[] =\r
-{\r
-  "Unexpected end of file\n",\r
-  "Bad code\n",\r
-  "Bad gif header\n",\r
-  "Bad symbol size\n",\r
-  "Bad first code\n",\r
-  "Error opening file\n",\r
-  "This file doesn't contain an image\n"\r
-};\r
-\r
-// read colour palette, vga palette values are 6 bit numbers\r
-// while gif allows for 8 bit so shift right to get correct colours\r
-\r
-u8* gif_read_palette(FILE* fp, s32 bytes)\r
-{\r
-  s32 i = 0;\r
-  u8* block = 0L;\r
-  s32 components = (bytes / 3) * 3;\r
-\r
-  block  = (unsigned char *)valloc(components, "gif_read_palette:block", OID_IMAGE);\r
-\r
-  for (i = 0; i < components; ++i)\r
-    block[i] = fgetc(fp) >> 2;\r
-\r
-  return block;\r
-}\r
-\r
-// read a block of bytes into memory\r
-s32 block_mem_read(FILE* fp, u8* buffer, s32 bytes)\r
-{\r
-  s32 status = 0;\r
-\r
-  status = fread(buffer, 1, bytes, fp);\r
-  if (status != bytes) return EOF;\r
-\r
-  return TRUE;\r
-}\r
-\r
-// read a unsigned 16 bit value from file, low byte first; note that this\r
-// is reverse endian-ness (ie. fwrite(&s,1,2,fp); writes high byte first).\r
-\r
-s16 read_word_lbf(FILE* fp)\r
-{\r
-  s32 a, b;\r
-\r
-  a = fgetc(fp);\r
-  b = fgetc(fp);\r
-\r
-  return (b << 8) | a;\r
-}\r
-\r
-// read the GIF file header structure into a sequence\r
-gif_header* get_gif_header(FILE* fp)\r
-{\r
-  gif_header* h = 0L;\r
-\r
-  h = (gif_header *)valloc(sizeof(gif_header), "get_gif_header:h", OID_IMAGE);\r
-\r
-  fread(h->sig, 1, 6, fp);\r
-  h->sig[6] = 0;\r
-\r
-  if (strncmp(h->sig, "GIF", 3) != 0)\r
-    return NULL;\r
-\r
-  h->screenwide = read_word_lbf(fp); width=h->screenwide;\r
-  h->screendeep = read_word_lbf(fp); depth=h->screendeep;\r
-  h->hflags = fgetc(fp);\r
-  h->background = fgetc(fp);\r
-  h->aspect = fgetc(fp);\r
-\r
-  return h;\r
-}\r
-\r
-// gif file can contain more than one image,\r
-// each image is preceeded by a header structure\r
-gif_image_descriptor* get_image_descriptor(FILE* fp)\r
-{\r
-  gif_image_descriptor* id = 0L;\r
-\r
-  id = (gif_image_descriptor *)valloc(sizeof(gif_image_descriptor), "get_image_descriptor:id", OID_IMAGE);\r
-\r
-  id->left = read_word_lbf(fp);\r
-  id->top = read_word_lbf(fp);\r
-  id->wide = read_word_lbf(fp);\r
-  id->deep = read_word_lbf(fp);\r
-  id->iflags = fgetc(fp);\r
-\r
-  return id;\r
-}\r
-\r
-static u16 word_mask_table[] =\r
-{\r
-  0x0000, 0x0001, 0x0003, 0x0007,\r
-  0x000F, 0x001F, 0x003F, 0x007F,\r
-  0x00FF, 0x01FF, 0x03FF, 0x07FF,\r
-  0x0FFF, 0x1FFF, 0x3FFF, 0x7FFF\r
-};\r
-\r
-static u8 inc_table[] = { 8,8,4,2,0 };\r
-static u8 start_table[] = { 0,4,2,1,0 };\r
-\r
-// enables me to use indices as per EUPHORiA (ie. converts to C's 0 base)\r
-#define eui(i) ((i)-1)\r
-\r
-// unpack an LZW compressed image\r
-// returns a sequence containing screen display lines of the image\r
-u8* unpack_image(FILE* fp, s32 start_code_size, u32 width, u32 depth, u32 flags)\r
-{\r
-  u8* buffer;\r
-  u8* line_buffer;\r
-\r
-  u16 first_code_stack[4096];\r
-  u16 last_code_stack[4096];\r
-  u16 code_stack[4096];\r
-\r
-  s32 bits_left;\r
-  s32 clear_code;\r
-  s32 code_size;\r
-  s32 code_size2;\r
-  s32 next_code;\r
-  s32 this_code;\r
-  s32 old_token;\r
-  s32 current_code;\r
-  s32 old_code;\r
-  s32 block_size=0;\r
-  s32 line;\r
-  s32 a_byte;\r
-  s32 pass;\r
-  s32 u;\r
-\r
-  u8 b[256]; // read buffer; for block reads\r
-  u8* p; // current byte in read buffer\r
-  u8* q; // last byte in read buffer + 1\r
-\r
-  line_buffer = (u8 *)valloc(width, "unpack_image:line_buffer", OID_TEMP);\r
-  buffer      = (u8 *)valloc(width * depth, "unpack_image:buffer", OID_IMAGE);\r
-\r
-  a_byte = 0;\r
-  line = 0;\r
-  pass = 0;\r
-  bits_left = 8;\r
-\r
-  if (start_code_size < 2 || start_code_size > 8)\r
-    err("\nERROR_BAD_STARTCODE"); // bad symbol size\r
-\r
-  p = b;\r
-  q = b;\r
-\r
-  clear_code = 1 << start_code_size; //pow(2, start_code_size);\r
-  next_code = clear_code + 2;\r
-  code_size = start_code_size + 1;\r
-  code_size2 = 1 << code_size; //pow(2, code_size);\r
-  old_code = NO_CODE;\r
-  old_token = NO_CODE;\r
-\r
-  while (1)\r
-  {\r
-    if (bits_left == 8)\r
-    {\r
-      ++p;\r
-      if (p >= q)\r
-      {\r
-        block_size = fgetc(fp);\r
-        if (block_mem_read(fp, b, block_size) == EOF)\r
-          err("\nERROR_EOF");\r
-        p = b;\r
-        q = b + block_size;\r
-      }\r
-      bits_left = 0;\r
-    }\r
-\r
-    this_code = *p;\r
-    current_code = code_size + bits_left;\r
-\r
-    if (current_code <= 8)\r
-    {\r
-      *p = *p >> code_size;\r
-      bits_left = current_code;\r
-    }\r
-    else\r
-    {\r
-      ++p;\r
-      if (p >= q)\r
-      {\r
-        block_size = fgetc(fp);\r
-        if (block_mem_read(fp, b, block_size) == EOF)\r
-          err("\nERROR_EOF");\r
-        p = b;\r
-        q = b + block_size;\r
-      }\r
-\r
-      this_code |= (*p << (8 - bits_left));\r
-\r
-      if (current_code <= 16)\r
-      {\r
-        bits_left = current_code - 8;\r
-        *p = *p >> bits_left;\r
-      }\r
-      else\r
-      {\r
-        if (++p >= q)\r
-        {\r
-          block_size = fgetc(fp);\r
-          if (block_mem_read(fp, b, block_size) == EOF)\r
-            err("\nERROR_EOF");\r
-          p = b;\r
-          q = b + block_size;\r
-        }\r
-\r
-        this_code |= (*p << (16 - bits_left));\r
-\r
-        bits_left = current_code - 16;\r
-        *p = *p >> bits_left;\r
-      }\r
-    }\r
-\r
-    this_code &= word_mask_table[code_size];\r
-    current_code = this_code;\r
-\r
-    if (this_code == (clear_code+1) || block_size == 0)\r
-      break;\r
-    if (this_code > next_code)\r
-      err("\nERROR_BAD_CODE");\r
-\r
-    if (this_code == clear_code)\r
-    {\r
-      next_code = clear_code + 2;\r
-      code_size = start_code_size + 1;\r
-      code_size2 = 1 << code_size; //pow(2, code_size);\r
-      old_code = NO_CODE;\r
-      old_token = NO_CODE;\r
-    }\r
-    else\r
-    {\r
-      u = 1;\r
-      if (this_code == next_code)\r
-      {\r
-        if (old_code == NO_CODE)\r
-          err("\nERROR_BAD_FIRST_CODE");\r
-\r
-        first_code_stack[eui(u)] = old_token;\r
-        u++;\r
-        this_code = old_code;\r
-      }\r
-\r
-      while (this_code >= clear_code)\r
-      {\r
-        first_code_stack[eui(u)] = last_code_stack[eui(this_code)];\r
-        u++;\r
-        this_code = code_stack[eui(this_code)];\r
-      }\r
-\r
-      old_token = this_code;\r
-      while (1)\r
-      {\r
-        line_buffer[a_byte] = this_code;\r
-        a_byte++;\r
-        if (a_byte >= width)\r
-        {\r
-          // full image line so add it into screen image\r
-          memcpy(buffer + (line * width), line_buffer, width);\r
-\r
-          a_byte = 0;\r
-          if (flags & 0x40)\r
-          {\r
-            line += inc_table[pass];\r
-            if (line >= depth)\r
-            {\r
-              pass++;\r
-              line = start_table[pass];\r
-            }\r
-          }\r
-          else\r
-          {\r
-            line++;\r
-          }\r
-        }\r
-\r
-        // no more bytes on stack\r
-        if (u == 1) break;\r
-\r
-        u--;\r
-        this_code = first_code_stack[eui(u)];\r
-      }\r
-\r
-      if (next_code < 4096 && old_code != NO_CODE)\r
-      {\r
-        code_stack[eui(next_code)] = old_code;\r
-        last_code_stack[eui(next_code)] = old_token;\r
-        next_code++;\r
-        if (next_code >= code_size2 && code_size < 12)\r
-        {\r
-          code_size++;\r
-          code_size2 = 1 << code_size; //pow(2, code_size);\r
-        }\r
-      }\r
-\r
-      old_code = current_code;\r
-    }\r
-  }\r
-\r
-  // completed reading the image so return it\r
-  free(b);\r
-  return buffer;\r
-}\r
-\r
-// skip the extension blocks as we are only after the image\r
-void skip_extension(FILE* fp)\r
-{\r
-  s32 n;\r
-  char temp[256];\r
-\r
-  n = fgetc(fp); // throwaway extension function code\r
-  n = fgetc(fp); // get length of block\r
-\r
-  while (n > 0 && n != EOF)\r
-  {\r
-    // throwaway block\r
-    fread(temp, 1, n, fp);\r
-\r
-    n = fgetc(fp); // get length of next block\r
-  }\r
-}\r
-\r
-// unpack the GIF file\r
-// returns ImageInfo sequence containing image and image data\r
-gif_image_info* unpack_gif(char* filename)\r
-{\r
-  VFILE *f;\r
-  FILE* fp;\r
-  s32 c, b;\r
-  gif_header* h = 0L;\r
-  gif_image_info* ii = 0L;\r
-  gif_image_descriptor* id = 0L;\r
-  u8* local_palette = 0L;\r
-\r
-  ii = (gif_image_info *)valloc(sizeof(gif_image_info), "unpack_gif:ii", OID_IMAGE);\r
-\r
-  f = vopen(filename);\r
-  if (!f) err("Could not open GIF file %s.",filename);\r
-  fp = f->fp;\r
-  if (!fp) err("\nBad filename");\r
-\r
-  // file starts with the Logical Screen Descriptor structure\r
-  h = get_gif_header(fp);\r
-\r
-  // Size of Global Color Table\r
-  ii->bits = (h->hflags & 7) + 1;\r
-  ii->background = h->background;\r
-\r
-  // get Global colour palette if there is one\r
-  if (h->hflags & 0x80) // is flags bit 8 set?\r
-  {\r
-    c = 3 << ii->bits; // size of global colour map\r
-    ii->palette = gif_read_palette(fp, c);\r
-\r
-/*    outp(968, 0);\r
-    // enforce global color map\r
-    for (s32 i=0; i < 768; ++i)\r
-      outp(969, ii->palette[i]); */\r
-    memcpy(pal, ii->palette, 768);\r
-  }\r
-\r
-  c = fgetc(fp);\r
-\r
-  while (c == 0x2c || c == 0x21 || c == 0)\r
-  {\r
-    // image separator so unpack the image\r
-    if (c == 0x2c)\r
-    {\r
-      id = get_image_descriptor(fp); // get the Image Descriptor\r
-      // if there is a local Color Table then overwrite the global table\r
-      if (id->iflags & 0x80)\r
-      {\r
-        ii->bits = (id->iflags & 7) + 1;\r
-        b = 3 << ii->bits;\r
-        if (local_palette)\r
-          free(local_palette);\r
-        local_palette = gif_read_palette(fp, b);\r
-      }\r
-\r
-      c = fgetc(fp); // get the LZW Minimum Code Size\r
-      ii->image = unpack_image(fp, c, id->wide, id->deep, id->iflags);\r
-      vclose(f);\r
-\r
-      // error reading image\r
-      if (!ii->image)\r
-        err("\nerror reading image data");\r
-\r
-      ii->wide = id->wide;\r
-      ii->deep = id->deep;\r
-\r
-      // return imagedata\r
-      return ii;\r
-    }\r
-    // extension introducer\r
-    else if (c == 0x21)\r
-    {\r
-      skip_extension(fp); // throw the extension away\r
-    }\r
-\r
-    c = fgetc(fp);\r
-  }\r
-\r
-  // no image?\r
-  return NULL;\r
-}\r
-\r
-byte *LoadGIFBuf(char *fname)\r
-{\r
-  gif_image_info *ii=0;\r
-  byte *t;\r
-\r
-  ii=unpack_gif(fname);\r
-  width=ii->wide;\r
-  depth=ii->deep;\r
-  t=ii->image;\r
-  free(ii);\r
-  return t;\r
-}\r
-\r
-// ====================== Universal Imaging Interface ========================\r
-\r
-byte imagetype;\r
-\r
-// ================================= Code ====================================\r
-\r
-void DetermineFileType(char *fname)\r
-{\r
-  strlwr(fname);\r
-  if (!strcmp(fname+(strlen(fname)-3),"pcx")) imagetype=0;\r
-  if (!strcmp(fname+(strlen(fname)-3),"gif")) imagetype=1;\r
-  if (!strcmp(fname+(strlen(fname)-3),"bmp")) imagetype=2;\r
-}\r
-\r
-void VLoadImage(char *fname, byte *dest)\r
-{\r
-  imagetype=255;\r
-  DetermineFileType(fname);\r
-  switch (imagetype)\r
-  {\r
-    case 0: LoadPCX(fname, dest); break;\r
-    case 1: err("VLoadImage() for GIF not supported; use VLoadImageBuf()"); break;\r
-    case 2: err("VLoadImage() for BMP not supported; use VLoadImageBuf()"); break;\r
-    default: err("%s: Unrecognized image type.",fname);\r
-  }\r
-}\r
-\r
-byte *VLoadImageBuf(char *fname)\r
-{\r
-  imagetype=255;\r
-  DetermineFileType(fname);\r
-  switch (imagetype)\r
-  {\r
-    case 0: return LoadPCXBuf(fname); break;\r
-    case 1: return LoadGIFBuf(fname); break;\r
-    case 2: return LoadBMPBuf(fname); break;\r
-    default: err("%s: Unrecognized image type.",fname);\r
-  }\r
-  return 0;\r
-}\r
diff --git a/16/v2/source/verge/ENGINE/IMAGE.H b/16/v2/source/verge/ENGINE/IMAGE.H
deleted file mode 100755 (executable)
index 5b0ac2b..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef IMAGE_H\r
-#define IMAGE_H\r
-\r
-word width, depth;\r
-\r
-void VLoadImage(char *fname, byte *dest);\r
-byte *VLoadImageBuf(char *fname);\r
-\r
-#endif\r
diff --git a/16/v2/source/verge/ENGINE/INTER.H b/16/v2/source/verge/ENGINE/INTER.H
deleted file mode 100755 (executable)
index 93bc667..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#if !defined(INTERINC)\r
-#define INTERINC\r
-\r
-#ifdef __WATCOMC__\r
-  #include <i86.h>\r
-  #define REGISTERS union REGS\r
-  #define SET_AX(r,v) (r).w.ax=(short)(v)\r
-  #define SET_BX(r,v) (r).w.bx=(short)(v)\r
-  #define SET_CX(r,v) (r).w.cx=(short)(v)\r
-  #define SET_DX(r,v) (r).w.dx=(short)(v)\r
-  #define INTERRUPT(i,r) int386((i),&(r),&(r))\r
-#elif defined(__DJGPP__)\r
-  #include <dpmi.h>\r
-  #define REGISTERS __dpmi_regs\r
-  #define SET_AX(r,v) (r).x.ax=(short)(v)\r
-  #define SET_BX(r,v) (r).x.bx=(short)(v)\r
-  #define SET_CX(r,v) (r).x.cx=(short)(v)\r
-  #define SET_DX(r,v) (r).x.dx=(short)(v)\r
-  #define INTERRUPT(i,r) __dpmi_int((i),&(r))\r
-//  #define inp inportb\r
-  #define outp outportb\r
-  #define outpw outportw\r
-#endif // watcom | djgpp\r
-\r
-#endif // INTERINC\r
diff --git a/16/v2/source/verge/ENGINE/KEYBOARD.H b/16/v2/source/verge/ENGINE/KEYBOARD.H
deleted file mode 100755 (executable)
index e39d329..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef KEYBOARD_H\r
-#define KEYBOARD_H\r
-\r
-extern volatile byte key[128];\r
-extern volatile byte last_pressed;\r
-extern int InitKeyboard(void);\r
-extern void ShutdownKeyboard(void);\r
-#ifdef DJGPP\r
-extern void keyboard_chain(int toggle);\r
-#endif\r
-\r
-/* Constants for keyboard scan-codes */\r
-\r
-#define SCAN_ESC        0x01\r
-#define SCAN_1          0x02\r
-#define SCAN_2          0x03\r
-#define SCAN_3          0x04\r
-#define SCAN_4          0x05\r
-#define SCAN_5          0x06\r
-#define SCAN_6          0x07\r
-#define SCAN_7          0x08\r
-#define SCAN_8          0x09\r
-#define SCAN_9          0x0a\r
-#define SCAN_0          0x0b\r
-#define SCAN_MINUS      0x0c\r
-#define SCAN_EQUALS     0x0d\r
-#define SCAN_BACKSP     0x0e\r
-#define SCAN_TAB        0x0f\r
-#define SCAN_Q          0x10\r
-#define SCAN_W          0x11\r
-#define SCAN_E          0x12\r
-#define SCAN_R          0x13\r
-#define SCAN_T          0x14\r
-#define SCAN_Y          0x15\r
-#define SCAN_U          0x16\r
-#define SCAN_I          0x17\r
-#define SCAN_O          0x18\r
-#define SCAN_P          0x19\r
-#define SCAN_LANGLE     0x1a\r
-#define SCAN_RANGLE     0x1b\r
-#define SCAN_ENTER      0x1c\r
-#define SCAN_CTRL       0x1d\r
-#define SCAN_A          0x1e\r
-#define SCAN_S          0x1f\r
-#define SCAN_D          0x20\r
-#define SCAN_F          0x21\r
-#define SCAN_G          0x22\r
-#define SCAN_H          0x23\r
-#define SCAN_J          0x24\r
-#define SCAN_K          0x25\r
-#define SCAN_L          0x26\r
-#define SCAN_SCOLON     0x27\r
-#define SCAN_QUOTA      0x28\r
-#define SCAN_RQUOTA     0x29\r
-#define SCAN_LSHIFT     0x2a\r
-#define SCAN_BSLASH     0x2b\r
-#define SCAN_Z          0x2c\r
-#define SCAN_X          0x2d\r
-#define SCAN_C          0x2e\r
-#define SCAN_V          0x2f\r
-#define SCAN_B          0x30\r
-#define SCAN_N          0x31\r
-#define SCAN_M          0x32\r
-#define SCAN_COMA       0x33\r
-#define SCAN_DOT        0x34\r
-#define SCAN_SLASH      0x35\r
-#define SCAN_RSHIFT     0x36\r
-#define SCAN_GREY_STAR  0x37\r
-#define SCAN_ALT        0x38\r
-#define SCAN_SPACE      0x39\r
-#define SCAN_CAPS       0x3a\r
-#define SCAN_F1         0x3b\r
-#define SCAN_F2         0x3c\r
-#define SCAN_F3         0x3d\r
-#define SCAN_F4         0x3e\r
-#define SCAN_F5         0x3f\r
-#define SCAN_F6         0x40\r
-#define SCAN_F7         0x41\r
-#define SCAN_F8         0x42\r
-#define SCAN_F9         0x43\r
-#define SCAN_F10        0x44\r
-#define SCAN_NUMLOCK    0x45\r
-#define SCAN_SCRLOCK    0x46\r
-#define SCAN_HOME       0x47\r
-#define SCAN_UP         0x48\r
-#define SCAN_PGUP       0x49\r
-#define SCAN_GREY_MINUS 0x4a\r
-#define SCAN_LEFT       0x4b\r
-#define SCAN_PAD_5      0x4c\r
-#define SCAN_RIGHT      0x4d\r
-#define SCAN_GREY_PLUS  0x4e\r
-#define SCAN_END        0x4f\r
-#define SCAN_DOWN       0x50\r
-#define SCAN_PGDN       0x51\r
-#define SCAN_INSERT     0x52\r
-#define SCAN_DEL        0x53\r
-#define SCAN_F11        0x57\r
-#define SCAN_F12        0x58\r
-#endif\r
diff --git a/16/v2/source/verge/ENGINE/KEYBOARD.S b/16/v2/source/verge/ENGINE/KEYBOARD.S
deleted file mode 100755 (executable)
index a781cde..0000000
+++ /dev/null
@@ -1,227 +0,0 @@
-#\r
-# Copyright (C) 1998 BJ Eirich (aka vecna)\r
-# This program is free software; you can redistribute it and/or\r
-# modify it under the terms of the GNU General Public License\r
-# as published by the Free Software Foundation; either version 2\r
-# of the License, or (at your option) any later version.\r
-# This program is distributed in the hope that it will be useful,\r
-# but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  \r
-# See the GNU General Public Lic\r
-# See the GNU General Public License for more details.\r
-# You should have received a copy of the GNU General Public License\r
-# along with this program; if not, write to the Free Software\r
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-#\r
-\r
-                .file   "keyboard.s"\r
-\r
-                .extern ___djgpp_base_address\r
-                .extern ___djgpp_ds_alias\r
-                .extern ___djgpp_dos_sel\r
-\r
- # public functions and variables:\r
-\r
-                .global _key\r
-                .global _InitKeyboard\r
-                .global _ShutdownKeyboard\r
-                .global _keyboard_chain\r
-                .global _last_pressed\r
-\r
-                .text\r
-\r
-                .align  4\r
-\r
-locking_region_start:\r
-\r
-_key:           .space  0x80, 0\r
-_last_pressed:  .byte  0\r
-old_vector:\r
-old_vector_ofs: .long   0\r
-old_vector_sel: .word   0\r
-chain_flag:     .long   1\r
-\r
-\r
-                .align  4\r
-\r
-handler_procedure:\r
-\r
- #\r
- # .. will be called every time a key is pressed/released\r
- #\r
-                pushl   %eax\r
-                pushl   %edx\r
-                pushw   %ds\r
- #\r
- # Load DS with our data selector\r
- #\r
-                movw    %cs:___djgpp_ds_alias, %ds\r
- #\r
- # Read the scancode from keyboard port and update key[]\r
- #\r
-                inb     $0x60, %al\r
-                movb    %al, %dl\r
-                andl    $0x7f, %edx\r
-                testb   $0x80, %al\r
-                setz    _key(%edx)\r
-                cmp     $127, %al\r
-                ja      nolastpressed\r
-                movb    %edx, _last_pressed\r
-nolastpressed:\r
-\r
- #\r
- # Chain if flag is set, otherwise do what's necessary and return\r
- #\r
-                cmpl    $0, chain_flag\r
-                jne     handler_chain\r
- #\r
- # Acknowledge keyboard and interrupt contollers\r
- #\r
-                inb     $0x61, %al\r
-                orb     $0x80, %al\r
-                outb    %al, $0x61\r
-                andb    $0x7f, %al\r
-                outb    %al, $0x61\r
-                movb    $0x20, %al\r
-                outb    %al, $0x20\r
-\r
-                popw    %ds\r
-                popl    %edx\r
-                popl    %eax\r
-                sti\r
-                iret\r
-\r
-                .align  4\r
-\r
-handler_chain:  popw    %ds\r
-                popl    %edx\r
-                popl    %eax\r
-                ljmp    %cs:(old_vector)\r
-\r
-locking_region_end:\r
-\r
-\r
-                .align  4\r
-_InitKeyboard:\r
-\r
- #\r
- # int keyboard_init(void);\r
- #\r
- # Initializes the keyboard handler and hooks the keyboard interrupt.\r
- # Returns -1 on failure, zero on success\r
- #\r
-                pushl   %esi\r
-                pushl   %edi\r
-                pushl   %ebx\r
- #\r
- # First, we need to lock the handler and memory it touches, so\r
- # it doesn't get swapped out to disk.\r
- #\r
-                leal    locking_region_start, %ecx\r
-                leal    locking_region_end, %edi\r
-                subl    %ecx, %edi\r
-                addl    ___djgpp_base_address, %ecx\r
-                shldl   $16, %ecx, %ebx         # ecx -> bx:cx\r
-                shldl   $16, %edi, %esi         # edi -> si:di\r
-                movw    $0x0600, %ax            # lock linear region\r
-                int     $0x31\r
-                jc      init_error\r
- #\r
- # Now we need to save the old interrupt vector, so we can restore\r
- # it later and also to know where to jump if chaining.\r
- #\r
-                movw    $0x0204, %ax            # get pm int vector\r
-                movb    $0x09, %bl\r
-                int     $0x31\r
-                movw    %cx, old_vector_sel\r
-                movl    %edx, old_vector_ofs\r
- #\r
- # Make sure we chain after initialization.\r
- #\r
-                movl    $1, chain_flag\r
- #\r
- # Set the interrupt vector to point to our handler.\r
- #\r
-                movw    %cs, %cx\r
-                leal    handler_procedure, %edx\r
-                movb    $0x09, %bl\r
-                movw    $0x0205, %ax            # set pm int vector\r
-                int     $0x31\r
- #*\r
- #* Actually we would have to unlock the locked region on failure\r
- #* here. But since most programs would exit with an error message\r
- #* in such case, there's no need to worry.\r
- #*\r
-\r
-init_error:\r
-\r
- #\r
- # This sets EAX to -1 if CF is set and to 0 atherwise\r
- #\r
-                movl    $0, %eax\r
-                sbbl    $0, %eax\r
-\r
-                popl    %ebx\r
-                popl    %edi\r
-                popl    %esi\r
-                ret\r
-\r
-\r
-                .align 4\r
-_ShutdownKeyboard:\r
-\r
- #\r
- # void keyboard_close(void);\r
- #\r
- # Shuts the keyboard handler down.\r
- #\r
-                pushl   %esi\r
-                pushl   %edi\r
-                pushl   %ebx\r
- #\r
- # Unlock the region we locked at initialization\r
- #\r
-                leal    locking_region_start, %ecx\r
-                leal    locking_region_end, %edi\r
-                subl    %ecx, %edi\r
-                addl    ___djgpp_base_address, %ecx\r
-                shldl   $16, %ecx, %ebx\r
-                shldl   $16, %edi, %esi\r
-                movw    $0x0601, %ax            # unlock linear region\r
-                int     $0x31\r
- #\r
- # Restore the interrupt vector to its previous value\r
- #\r
-                movw    old_vector_sel, %cx\r
-                movl    old_vector_ofs, %edx\r
-                movb    $0x09, %bl\r
-                movw    $0x0205, %ax            # set pm int vector\r
-                int     $0x31\r
-\r
-                popl    %ebx\r
-                popl    %edi\r
-                popl    %esi\r
-                ret\r
- #\r
- # void keyboard_chain(int toggle);\r
- #\r
-                .align  4\r
-_keyboard_chain:\r
-                cmpl    $0, 4(%esp)\r
-                je      chain_off\r
-chain_on:\r
-\r
- #\r
- # Set the chain_flag and clear BIOS shift/ctrl/alt status bits:\r
- #\r
-                movl    $1, chain_flag\r
-\r
-                push    %es\r
-                movw    ___djgpp_dos_sel, %es\r
-                andb    $0xf0, %es:0x417\r
-                pop     %es\r
-                jmp     chain_done\r
-chain_off:\r
-                movl    $0, chain_flag\r
-chain_done:     ret\r
-\r
diff --git a/16/v2/source/verge/ENGINE/MAIN.H b/16/v2/source/verge/ENGINE/MAIN.H
deleted file mode 100755 (executable)
index fde9367..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef MAIN_H\r
-#define MAIN_H\r
-\r
-//void *valloc(int amount);\r
-void err(char *message, ...);\r
-int sgn(int x);\r
-void ver();\r
-void CheckMessages();\r
-void Log(char *message, ...);\r
-void Logp(char *message, ...);\r
-void LogDone();\r
-void InitMouse(int, int);\r
-void ReadMouse();\r
-void SetMouse(int, int);\r
-\r
-extern char startmap[80], nocdaudio;\r
-extern int mx, my, mb;\r
-\r
-#define vfree(x) if (x) { free(x); x=0; }\r
-\r
-#ifndef DJGPP\r
-#define strncasecmp strnicmp\r
-#define strcasecmp strcmpi\r
-#endif\r
-\r
-#endif\r
diff --git a/16/v2/source/verge/ENGINE/MAKEFILE b/16/v2/source/verge/ENGINE/MAKEFILE
deleted file mode 100755 (executable)
index f557fa3..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-CC = gcc\r
-CFLAGS = -s -Wall -Werror\r
-\r
-OBJ = a_memory.o conlib.o console.o  controls.o engine.o entity.o font.o image.o  keyboard.o message.o  modeinit.o render.o  startup.o  timer.o verge.o vc.o  vdriver.o vfile.o fli.o sound.o mikmod.a\r
-\r
-verge: $(OBJ)\r
-\r
diff --git a/16/v2/source/verge/ENGINE/MESSAGE.C b/16/v2/source/verge/ENGINE/MESSAGE.C
deleted file mode 100755 (executable)
index dd3520e..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include "verge.h"\r
-\r
-// ================================= Data ====================================\r
-\r
-struct message\r
-{\r
-  char text[44];                     // message text\r
-  int exptime;                       // message expire time\r
-};\r
-\r
-struct message messages[6];          // 5-message buffer\r
-byte num_msgs=0;                     // number of active messages\r
-\r
-// -- cpu usage --\r
-\r
-int cputimer=0, frames=0;\r
-char runprf[3];\r
-// -- final numbers --\r
-int fps=0;\r
-char profile[3];\r
-\r
-// ================================= Code ====================================\r
-\r
-void CheckMessageExpirations()\r
-{ int i;\r
-\r
-  for (i=0; i<num_msgs; i++)\r
-    if (systemtime>messages[i].exptime)\r
-    {\r
-       memcpy(messages[i].text, messages[i+1].text, (48*(num_msgs-i+1)));\r
-       num_msgs--;\r
-    }\r
-}\r
-\r
-void RenderGUI()\r
-{ int i;\r
-\r
-  CheckMessageExpirations();\r
-  for (i=0; i<num_msgs; i++)\r
-  {\r
-    GotoXY(1,1+(i*10));\r
-    printstring(0,messages[i].text);\r
-  }\r
-\r
-  if (!cpu_watch) return;\r
-  frames++;\r
-\r
-  i=sx-76;\r
-  GotoXY(i,sy-39);\r
-  sprintf(strbuf,"etc:%d",profile[0]);\r
-  printstring(0,strbuf);\r
-  GotoXY(i,sy-29);\r
-  sprintf(strbuf,"Render:%d",profile[1]);\r
-  printstring(0,strbuf);\r
-  GotoXY(i,sy-19);\r
-  sprintf(strbuf,"PFlip:%d",profile[2]);\r
-  printstring(0,strbuf);\r
-  GotoXY(i,sy-9);\r
-  sprintf(strbuf,"FPS:%d",fps);\r
-  printstring(0,strbuf);\r
-}\r
-\r
-void CPUTick()\r
-{\r
-  cputimer++;\r
-  runprf[cpubyte]++;\r
-  if (cputimer==100)\r
-  {\r
-     fps=frames;\r
-     frames=0;\r
-     cputimer=0;\r
-\r
-     profile[0]=runprf[0]; runprf[0]=0;\r
-     profile[1]=runprf[1]; runprf[1]=0;\r
-     profile[2]=runprf[2]; runprf[2]=0;\r
-  }\r
-}\r
-\r
-void Message(char *text, int duration)\r
-{\r
-  Log("Message: %s", text);\r
-\r
-  if (num_msgs<5)\r
-  {\r
-    memcpy(messages[num_msgs].text, text, strlen(text));\r
-    messages[num_msgs].exptime=systemtime+duration;\r
-    num_msgs++;\r
-    return;\r
-  }\r
-\r
-  memcpy(&messages[0].text, &messages[1].text, 192);\r
-  memcpy(messages[4].text, text, strlen(text));\r
-  messages[num_msgs].exptime=systemtime+duration;\r
-}\r
diff --git a/16/v2/source/verge/ENGINE/MESSAGE.H b/16/v2/source/verge/ENGINE/MESSAGE.H
deleted file mode 100755 (executable)
index 91f0a2c..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef MESSAGE_H\r
-#define MESSAGE_H\r
-\r
-void RenderGUI();\r
-void CPUTick();\r
-void Message(char *text, int duration);\r
-\r
-#endif\r
diff --git a/16/v2/source/verge/ENGINE/MIKMOD.A b/16/v2/source/verge/ENGINE/MIKMOD.A
deleted file mode 100755 (executable)
index bd3390d..0000000
Binary files a/16/v2/source/verge/ENGINE/MIKMOD.A and /dev/null differ
diff --git a/16/v2/source/verge/ENGINE/MIKMOD.C b/16/v2/source/verge/ENGINE/MIKMOD.C
deleted file mode 100755 (executable)
index 7f90de0..0000000
+++ /dev/null
@@ -1,310 +0,0 @@
-/*\r
-\r
-Name:\r
-MIKMOD.C\r
-\r
-Description:\r
-Modplaying example of mikmod.\r
-\r
-MSDOS:  BC(y)   Watcom(y)       DJGPP(y)\r
-Win95:  BC(y*)\r
-Os2:    y\r
-Linux:  n\r
-\r
-* console mode only\r
-(y) - yes\r
-(n) - no (not possible or not useful)\r
-(?) - may be possible, but not tested\r
-\r
-*/\r
-#ifdef __WIN32__\r
-#include <windows.h>\r
-#endif\r
-\r
-#include <stdio.h>\r
-#include <stdlib.h>\r
-#include <conio.h>\r
-#include <string.h>\r
-\r
-#ifndef __OS2__\r
-#include <dos.h>\r
-#endif\r
-\r
-#include "wildfile.h"\r
-#include "mikmod.h"\r
-\r
-char helptext[]=\r
-\r
-"Available switches (CaSe SeNsItIvE!):\n"\r
-"\n"\r
-"  /d x    use device-driver #x for output (0 is autodetect). Default=0\n"\r
-"  /ld     List all available device-drivers\n"\r
-"  /ll     List all available loaders\n"\r
-"  /x      disables protracker extended speed\n"\r
-"  /p      disables panning effects (9fingers.mod)\n"\r
-"  /v xx   Sets volume from 0 (silence) to 100. Default=100\n"\r
-"  /f xxxx Sets mixing frequency. Default=44100\n"\r
-"  /m      Force mono output (so sb-pro can mix at 44100)\n"\r
-"  /8      Force 8 bit output\n"\r
-"  /i      Use interpolated mixing\n"\r
-"  /r      Restart a module when it's done playing";\r
-\r
-\r
-/*\r
-        declarations for boring old sys-v style getopt *yawn*:\r
-*/\r
-int     getopt(int argc, char *argv[], char *optionS);\r
-extern char *optarg;\r
-extern int optind;\r
-extern int opterr;\r
-\r
-\r
-void tickhandler(void)\r
-{\r
-        MP_HandleTick();    /* play 1 tick of the module */\r
-        MD_SetBPM(mp_bpm);\r
-}\r
-\r
-\r
-int main(int argc,char *argv[])\r
-{\r
-        UNIMOD *mf;\r
-        int cmderr=0;                   /* error in commandline flag */\r
-        int morehelp=0;                 /* set if user wants more help */\r
-        int quit;\r
-        int t;\r
-        static int nargc;\r
-        static char **nargv;\r
-\r
-        puts(mikbanner);\r
-\r
-        /* Expand wildcards on commandline */\r
-\r
-        nargc=argc; nargv=argv;\r
-#ifndef __DJGPP__\r
-        MyGlob(&nargc,&nargv,0);\r
-#else\r
-        setvbuf(stdout, NULL, _IONBF, 0);\r
-        __djgpp_set_ctrl_c(0);\r
-#endif\r
-\r
-        /*\r
-                Initialize soundcard parameters.. you _have_ to do this\r
-                before calling MD_Init(), and it's illegal to change them\r
-                after you've called MD_Init()\r
-        */\r
-\r
-        md_mixfreq      =44100;                     /* standard mixing freq */\r
-        md_dmabufsize   =20000;                     /* standard dma buf size */\r
-        md_mode         =DMODE_16BITS|DMODE_STEREO; /* standard mixing mode */\r
-        md_device       =0;                                                     /* standard device: autodetect */\r
-\r
-        /*\r
-                Register the loaders we want to use..\r
-        */\r
-\r
-        ML_RegisterLoader(&load_m15);    /* if you use m15load, register it as first! */\r
-        ML_RegisterLoader(&load_mod);\r
-        ML_RegisterLoader(&load_mtm);\r
-        ML_RegisterLoader(&load_s3m);\r
-        ML_RegisterLoader(&load_stm);\r
-        ML_RegisterLoader(&load_ult);\r
-        ML_RegisterLoader(&load_uni);\r
-        ML_RegisterLoader(&load_xm);\r
-\r
-        /*\r
-                Register the drivers we want to use:\r
-        */\r
-\r
-        MD_RegisterDriver(&drv_nos);\r
-#ifdef __OS2__\r
-        MD_RegisterDriver(&drv_os2);\r
-#elif defined(__WIN32__)\r
-        MD_RegisterDriver(&drv_w95);\r
-#else\r
-        MD_RegisterDriver(&drv_ss);\r
-        MD_RegisterDriver(&drv_sb);\r
-        MD_RegisterDriver(&drv_gus);\r
-#endif\r
-\r
-        MD_RegisterPlayer(tickhandler);\r
-\r
-        /* Parse option switches using standard getopt function: */\r
-\r
-        opterr=0;\r
-\r
-        while( !cmderr &&\r
-                  (t=getopt(nargc,nargv,"ohxpm8irv:f:l:d:")) != EOF ){\r
-\r
-                switch(t){\r
-\r
-                        case 'd':\r
-                                md_device=atoi(optarg);\r
-                                break;\r
-\r
-                        case 'l':\r
-                                if(optarg[0]=='d') MD_InfoDriver();\r
-                                else if(optarg[0]=='l') ML_InfoLoader();\r
-                                else{\r
-                                        cmderr=1;\r
-                                        break;\r
-                                }\r
-                                exit(0);\r
-\r
-                        case 'r':\r
-                                mp_loop=1;\r
-                                break;\r
-\r
-                        case 'm':\r
-                                md_mode&=~DMODE_STEREO;\r
-                                break;\r
-\r
-                        case '8':\r
-                                md_mode&=~DMODE_16BITS;\r
-                                break;\r
-\r
-                        case 'i':\r
-                                md_mode|=DMODE_INTERP;\r
-                                break;\r
-\r
-                        case 'x':\r
-                                mp_extspd=0;\r
-                                break;\r
-\r
-                        case 'p':\r
-                                mp_panning=0;\r
-                                break;\r
-\r
-                        case 'v':\r
-                                if((mp_volume=atoi(optarg))>100) mp_volume=100;\r
-                                break;\r
-\r
-                        case 'f':\r
-                                md_mixfreq=atol(optarg);\r
-                                break;\r
-\r
-                        case 'h':\r
-                                morehelp=1;\r
-                                cmderr=1;\r
-                                break;\r
-\r
-                        case '?':\r
-                                puts("\07Invalid switch or option needs an argument\n");\r
-                                cmderr=1;\r
-                                break;\r
-                }\r
-        }\r
-\r
-        if(cmderr || optind>=nargc){\r
-\r
-                /*\r
-                        there was an error in the commandline, or there were no true\r
-                        arguments, so display a usage message\r
-                */\r
-\r
-                puts("Usage: MIKMOD [switches] <fletch.mod> ... \n");\r
-\r
-                if(morehelp)\r
-                        puts(helptext);\r
-                else\r
-                        puts("Type MIKMOD /h for more help.");\r
-\r
-                exit(-1);\r
-        }\r
-\r
-        /*  initialize soundcard */\r
-\r
-        if(!MD_Init()){\r
-                printf("Driver error: %s.\n",myerr);\r
-                return 0;\r
-        }\r
-\r
-        printf("Using %s for %d bit %s %s sound at %u Hz\n\n",\r
-                        md_driver->Name,\r
-                        (md_mode&DMODE_16BITS) ? 16:8,\r
-                        (md_mode&DMODE_INTERP) ? "interpolated":"normal",\r
-                        (md_mode&DMODE_STEREO) ? "stereo":"mono",\r
-                        md_mixfreq);\r
-\r
-#ifdef __OS2__\r
-        DosSetPriority( PRTYS_THREAD, PRTYC_TIMECRITICAL, 5L, 0UL );\r
-#endif\r
-\r
-        for(quit=0; !quit && optind<nargc; optind++){\r
-\r
-                printf("File    : %s\n",nargv[optind]);\r
-\r
-                /* load the module */\r
-\r
-                mf=ML_LoadFN(nargv[optind]);\r
-\r
-                /* didn't work -> exit with errormsg. */\r
-\r
-                if(mf==NULL){\r
-                        printf("MikMod Error: %s\n",myerr);\r
-                        break;\r
-                }\r
-\r
-                /*      initialize modplayer to play this module */\r
-\r
-                MP_Init(mf);\r
-\r
-                printf( "Songname: %s\n"\r
-                                "Modtype : %s\n"\r
-                                "Periods : %s,%s\n",\r
-                                mf->songname,\r
-                                mf->modtype,\r
-                                (mf->flags&UF_XMPERIODS) ? "XM type" : "mod type",\r
-                                (mf->flags&UF_LINEAR) ? "Linear" : "Log");\r
-\r
-                /*\r
-                        set the number of voices to use.. you\r
-                        could add extra channels here (e.g. md_numchn=mf->numchn+4; )\r
-                        to use for your own soundeffects:\r
-                */\r
-\r
-                md_numchn=mf->numchn;\r
-\r
-                /*  start playing the module: */\r
-\r
-                MD_PlayStart();\r
-\r
-                while(!MP_Ready()){\r
-\r
-                        char c;\r
-\r
-                        c=kbhit() ? getch() : 0;\r
-\r
-                        if(c=='+')\r
-                                MP_NextPosition();\r
-                        else if(c=='-')\r
-                                MP_PrevPosition();\r
-                        else if(c==0x1b){\r
-                                quit=1;\r
-                                break;\r
-                        }\r
-                        else if(c==' ') break;\r
-\r
-                        MD_Update();\r
-\r
-                        /* wait a bit */\r
-\r
-#if defined(__OS2__)\r
-                        DosSleep(40);   /* hmmmm */\r
-#elif defined(__WIN32__)\r
-                        Sleep(10);\r
-#elif defined(__DJGPP__)\r
-                        /* no wait for djgpp ? */\r
-#else\r
-                        delay(10);\r
-#endif\r
-                        printf("\rsngpos:%d patpos:%d sngspd %d bpm %d   ",mp_sngpos,mp_patpos,mp_sngspd,mp_bpm);\r
-                }\r
-\r
-                MD_PlayStop();          /* stop playing */\r
-                ML_Free(mf);            /* and free the module */\r
-                puts("\n");\r
-        }\r
-        MD_Exit();\r
-        return 0;\r
-}\r
diff --git a/16/v2/source/verge/ENGINE/MIKMOD.H b/16/v2/source/verge/ENGINE/MIKMOD.H
deleted file mode 100755 (executable)
index 0111ccb..0000000
+++ /dev/null
@@ -1,580 +0,0 @@
-#ifndef MIKMOD_H\r
-#define MIKMOD_H\r
-\r
-#include <stdio.h>\r
-#include "mtypes.h"                    /* include atomic mikmod types */\r
-\r
-\r
-#define mikbanner \\r
-"=======================================================================\n" \\r
-"MIKMOD v2.10 - Portable version -  Programmed by MikMak of HaRDCoDE '95\n" \\r
-"=======================================================================\n" \\r
-"This program is SHAREWARE - Read MIKMOD.TXT for more info\n" \\r
-"E-Mail : mikmak@stack.urc.tue.nl\n"\r
-\r
-\r
-/*\r
-       error variables:\r
-       ===============\r
-*/\r
-\r
-extern char *ERROR_ALLOC_STRUCT;\r
-extern char *ERROR_LOADING_PATTERN;\r
-extern char *ERROR_LOADING_TRACK;\r
-extern char *ERROR_LOADING_HEADER;\r
-extern char *ERROR_NOT_A_MODULE;\r
-extern char *ERROR_LOADING_SAMPLEINFO;\r
-extern char *ERROR_OUT_OF_HANDLES;\r
-extern char *ERROR_SAMPLE_TOO_BIG;\r
-extern char *myerr;\r
-\r
-\r
-\r
-#define _mm_rewind(x) _mm_fseek(x,0,SEEK_SET)\r
-int  _mm_fseek(FILE *stream,long offset,int whence);\r
-void _mm_setiobase(long iobase);\r
-long _mm_ftell(FILE *stream);\r
-\r
-\r
-extern SBYTE  _mm_read_SBYTE   (FILE *fp);\r
-extern UBYTE _mm_read_UBYTE  (FILE *fp);\r
-\r
-extern SWORD  _mm_read_M_SWORD (FILE *fp);\r
-extern SWORD  _mm_read_I_SWORD (FILE *fp);\r
-\r
-extern UWORD _mm_read_M_UWORD(FILE *fp);\r
-extern UWORD _mm_read_I_UWORD(FILE *fp);\r
-\r
-extern SLONG  _mm_read_M_SLONG (FILE *fp);\r
-extern SLONG  _mm_read_I_SLONG (FILE *fp);\r
-\r
-extern ULONG _mm_read_M_ULONG(FILE *fp);\r
-extern ULONG _mm_read_I_ULONG(FILE *fp);\r
-\r
-extern int _mm_read_str(char *str, int size, FILE *fp);\r
-\r
-extern int _mm_read_SBYTES    (SBYTE  *buffer, int number, FILE *fp);\r
-extern int _mm_read_UBYTES   (UBYTE *buffer, int number, FILE *fp);\r
-\r
-extern int _mm_read_M_SWORDS  (SWORD  *buffer, int number, FILE *fp);\r
-extern int _mm_read_I_SWORDS  (SWORD  *buffer, int number, FILE *fp);\r
-\r
-extern int _mm_read_M_UWORDS (UWORD *buffer, int number, FILE *fp);\r
-extern int _mm_read_I_UWORDS (UWORD *buffer, int number, FILE *fp);\r
-\r
-extern int _mm_read_M_SLONGS  (SLONG  *buffer, int number, FILE *fp);\r
-extern int _mm_read_I_SLONGS  (SLONG  *buffer, int number, FILE *fp);\r
-\r
-extern int _mm_read_M_ULONGS (ULONG *buffer, int number, FILE *fp);\r
-extern int _mm_read_I_ULONGS (ULONG *buffer, int number, FILE *fp);\r
-\r
-\r
-extern void _mm_write_SBYTE            (SBYTE data,FILE *fp);\r
-extern void _mm_write_UBYTE    (UBYTE data,FILE *fp);\r
-\r
-extern void _mm_write_M_SWORD  (SWORD data,FILE *fp);\r
-extern void _mm_write_I_SWORD  (SWORD data,FILE *fp);\r
-\r
-extern void _mm_write_M_UWORD  (UWORD data,FILE *fp);\r
-extern void _mm_write_I_UWORD  (UWORD data,FILE *fp);\r
-\r
-extern void _mm_write_M_SLONG  (SLONG data,FILE *fp);\r
-extern void _mm_write_I_SLONG  (SLONG data,FILE *fp);\r
-\r
-extern void _mm_write_M_ULONG  (ULONG data,FILE *fp);\r
-extern void _mm_write_I_ULONG  (ULONG data,FILE *fp);\r
-\r
-extern void _mm_write_SBYTES           (SBYTE *data,  int number,FILE *fp);\r
-extern void _mm_write_UBYTES   (UBYTE *data, int number,FILE *fp);\r
-\r
-extern void _mm_write_M_SWORDS (SWORD *data,  int number,FILE *fp);\r
-extern void _mm_write_I_SWORDS (SWORD *data,  int number,FILE *fp);\r
-\r
-extern void _mm_write_M_UWORDS (UWORD *data, int number,FILE *fp);\r
-extern void _mm_write_I_UWORDS (UWORD *data, int number,FILE *fp);\r
-\r
-extern void _mm_write_M_SLONGS (SLONG *data,  int number,FILE *fp);\r
-extern void _mm_write_I_SLONGS (SLONG *data,  int number,FILE *fp);\r
-\r
-extern void _mm_write_M_ULONGS (ULONG *data, int number,FILE *fp);\r
-extern void _mm_write_I_ULONGS (ULONG *data, int number,FILE *fp);\r
-\r
-\r
-/**************************************************************************\r
-****** Unitrack stuff: ****************************************************\r
-**************************************************************************/\r
-\r
-/*\r
-       prototypes:\r
-*/\r
-\r
-void   UniSetRow(UBYTE *t);\r
-UBYTE  UniGetByte(void);\r
-UBYTE  *UniFindRow(UBYTE *t,UWORD row);\r
-void           UniReset(void);\r
-void           UniWrite(UBYTE data);\r
-void           UniNewline(void);\r
-void   UniInstrument(UBYTE ins);\r
-void   UniNote(UBYTE note);\r
-void   UniPTEffect(UBYTE eff,UBYTE dat);\r
-UBYTE  *UniDup(void);\r
-void   UniSkipOpcode(UBYTE op);\r
-BOOL   UniInit(void);\r
-void   UniCleanup(void);\r
-UWORD   TrkLen(UBYTE *t);\r
-BOOL    MyCmp(UBYTE *a,UBYTE *b,UWORD l);\r
-\r
-/*\r
-       all known effects:\r
-*/\r
-\r
-enum {\r
-               UNI_NOTE=1,\r
-               UNI_INSTRUMENT,\r
-               UNI_PTEFFECT0,\r
-               UNI_PTEFFECT1,\r
-               UNI_PTEFFECT2,\r
-               UNI_PTEFFECT3,\r
-               UNI_PTEFFECT4,\r
-               UNI_PTEFFECT5,\r
-               UNI_PTEFFECT6,\r
-               UNI_PTEFFECT7,\r
-               UNI_PTEFFECT8,\r
-               UNI_PTEFFECT9,\r
-               UNI_PTEFFECTA,\r
-               UNI_PTEFFECTB,\r
-               UNI_PTEFFECTC,\r
-               UNI_PTEFFECTD,\r
-               UNI_PTEFFECTE,\r
-               UNI_PTEFFECTF,\r
-               UNI_S3MEFFECTA,\r
-               UNI_S3MEFFECTD,\r
-               UNI_S3MEFFECTE,\r
-               UNI_S3MEFFECTF,\r
-               UNI_S3MEFFECTI,\r
-               UNI_S3MEFFECTQ,\r
-               UNI_S3MEFFECTT,\r
-               UNI_XMEFFECTA,\r
-                UNI_XMEFFECTG,\r
-                UNI_XMEFFECTH,\r
-               UNI_XMEFFECTP\r
-};\r
-\r
-\r
-/**************************************************************************\r
-****** mikmod types: ******************************************************\r
-**************************************************************************/\r
-\r
-\r
-/*\r
-       Sample format flags:\r
-*/\r
-\r
-#define SF_16BITS       1\r
-#define SF_SIGNED      2\r
-#define SF_DELTA        4\r
-#define SF_BIG_ENDIAN  8\r
-#define SF_LOOP         16\r
-#define SF_BIDI         32\r
-#define SF_OWNPAN       64\r
-#define SF_REVERSE             128\r
-\r
-\r
-/*\r
-       Envelope flags:\r
-*/\r
-\r
-#define EF_ON           1\r
-#define EF_SUSTAIN      2\r
-#define EF_LOOP         4\r
-\r
-\r
-/*\r
-       Unimod flags\r
-*/\r
-\r
-#define UF_XMPERIODS    1               /* if set use XM periods/finetuning */\r
-#define UF_LINEAR       2               /* if set use LINEAR periods */\r
-\r
-\r
-typedef struct ENVPT{\r
-       SWORD pos;\r
-       SWORD val;\r
-} ENVPT;\r
-\r
-\r
-typedef struct SAMPLE{\r
-       UWORD c2spd;            /* finetune frequency */\r
-       SBYTE transpose;        /* transpose value */\r
-       UBYTE volume;           /* volume 0-64 */\r
-       UBYTE panning;          /* panning */\r
-       ULONG length;           /* length of sample (in samples!) */\r
-       ULONG loopstart;        /* repeat position (relative to start, in samples) */\r
-       ULONG loopend;          /* repeat end */\r
-       UWORD flags;            /* sample format */\r
-       ULONG seekpos;                  /* seek position in file */\r
-       char *samplename;       /* name of the sample */\r
-       SWORD handle;           /* sample handle */\r
-} SAMPLE;\r
-\r
-\r
-typedef struct INSTRUMENT{\r
-       UBYTE numsmp;\r
-       UBYTE samplenumber[96];\r
-\r
-       UBYTE volflg;           /* bit 0: on 1: sustain 2: loop */\r
-       UBYTE volpts;\r
-       UBYTE volsus;\r
-       UBYTE volbeg;\r
-       UBYTE volend;\r
-       ENVPT volenv[12];\r
-\r
-       UBYTE panflg;           /* bit 0: on 1: sustain 2: loop */\r
-       UBYTE panpts;\r
-       UBYTE pansus;\r
-       UBYTE panbeg;\r
-       UBYTE panend;\r
-       ENVPT panenv[12];\r
-\r
-       UBYTE vibtype;\r
-       UBYTE vibsweep;\r
-       UBYTE vibdepth;\r
-       UBYTE vibrate;\r
-\r
-       UWORD volfade;\r
-       char  *insname;\r
-       SAMPLE *samples;\r
-} INSTRUMENT;\r
-\r
-\r
-/*\r
-       MikMod UNImod types:\r
-       ====================\r
-*/\r
-\r
-typedef struct UNIMOD{\r
-       UBYTE           numchn;                 /* number of channels */\r
-       UWORD       numpos;         /* number of positions in this song */\r
-       UWORD           reppos;                 /* restart position */\r
-       UWORD       numpat;         /* number of patterns in this song */\r
-       UWORD       numtrk;         /* number of tracks */\r
-       UWORD       numins;         /* number of samples */\r
-       UBYTE       initspeed;      /* */\r
-       UBYTE       inittempo;      /* */\r
-       UBYTE       positions[256]; /* all positions */\r
-       UBYTE       panning[32];        /* 32 panning positions */\r
-       UBYTE       flags;          /* */\r
-       char       *songname;       /* name of the song */\r
-       char       *modtype;        /* string type of module */\r
-       char       *comment;        /* module comments */\r
-       INSTRUMENT *instruments;    /* all samples */\r
-       UWORD      *patterns;       /* array of PATTERN */\r
-       UWORD      *pattrows;       /* array of number of rows for each pattern */\r
-       UBYTE     **tracks;         /* array of pointers to tracks */\r
-} UNIMOD;\r
-\r
-\r
-/**************************************************************************\r
-****** Loader stuff: ******************************************************\r
-**************************************************************************/\r
-\r
-/*\r
-       loader structure:\r
-*/\r
-\r
-typedef struct LOADER{\r
-       struct LOADER *next;\r
-       char    *type;\r
-       char    *version;\r
-       BOOL    (*Init)(void);\r
-       BOOL    (*Test)(void);\r
-       BOOL    (*Load)(void);\r
-       void    (*Cleanup)(void);\r
-} LOADER;\r
-\r
-\r
-/*\r
-       public loader variables:\r
-*/\r
-\r
-extern UNIMOD of;\r
-extern FILE *modfp;\r
-extern UWORD finetune[16];\r
-\r
-\r
-/*\r
-       main loader prototypes:\r
-*/\r
-\r
-void   ML_InfoLoader(void);\r
-void   ML_RegisterLoader(LOADER *ldr);\r
-UNIMOD *ML_LoadFP(FILE *fp);\r
-UNIMOD *ML_LoadFN(char *filename);\r
-void   ML_Free(UNIMOD *mf);\r
-\r
-\r
-/*\r
-       other loader prototypes: (used by the loader modules)\r
-*/\r
-\r
-BOOL   InitTracks(void);\r
-void   AddTrack(UBYTE *tr);\r
-BOOL   ReadComment(UWORD len);\r
-BOOL   AllocPatterns(void);\r
-BOOL   AllocTracks(void);\r
-BOOL   AllocInstruments(void);\r
-BOOL   AllocSamples(INSTRUMENT *i);\r
-char    *DupStr(char *s,UWORD len);\r
-void   *MyMalloc(size_t size);\r
-void   *MyCalloc(size_t nitems,size_t size);\r
-\r
-\r
-/*\r
-       Declare external loaders:\r
-*/\r
-extern LOADER load_uni;\r
-extern LOADER load_mod;\r
-extern LOADER load_m15;\r
-extern LOADER load_mtm;\r
-extern LOADER load_s3m;\r
-extern LOADER load_stm;\r
-extern LOADER load_ult;\r
-extern LOADER load_xm;\r
-\r
-\r
-/**************************************************************************\r
-****** Wavload stuff: *****************************************************\r
-**************************************************************************/\r
-\r
-SAMPLE *MW_LoadWavFP(FILE *fp);\r
-SAMPLE *MW_LoadWavFN(char *filename);\r
-void MW_FreeWav(SAMPLE *si);\r
-\r
-\r
-/**************************************************************************\r
-****** Driver stuff: ******************************************************\r
-**************************************************************************/\r
-\r
-/*\r
-       max. number of handles a driver has to provide. (not strict)\r
-*/\r
-\r
-#define MAXSAMPLEHANDLES 128\r
-\r
-\r
-/*\r
-       possible mixing mode bits:\r
-*/\r
-\r
-#define DMODE_STEREO    1\r
-#define DMODE_16BITS    2\r
-#define DMODE_INTERP   4\r
-\r
-\r
-/*\r
-       driver structure:\r
-*/\r
-\r
-typedef struct DRIVER{\r
-       struct DRIVER *next;\r
-       char    *Name;\r
-       char    *Version;\r
-       BOOL    (*IsPresent)            (void);\r
-       SWORD   (*SampleLoad)           (FILE *fp,ULONG size,ULONG reppos,ULONG repend,UWORD flags);\r
-       void    (*SampleUnLoad)         (SWORD handle);\r
-       BOOL    (*Init)                 (void);\r
-       void    (*Exit)                 (void);\r
-       void    (*PlayStart)            (void);\r
-       void    (*PlayStop)             (void);\r
-       void    (*Update)               (void);\r
-       void    (*VoiceSetVolume)               (UBYTE voice,UBYTE vol);\r
-       void    (*VoiceSetFrequency)    (UBYTE voice,ULONG frq);\r
-       void    (*VoiceSetPanning)              (UBYTE voice,UBYTE pan);\r
-       void    (*VoicePlay)                    (UBYTE voice,SWORD handle,ULONG start,ULONG size,ULONG reppos,ULONG repend,UWORD flags);\r
-} DRIVER;\r
-\r
-\r
-/*\r
-       public driver variables:\r
-*/\r
-\r
-extern DRIVER *md_driver;\r
-extern UWORD md_device;\r
-extern UWORD md_mixfreq;\r
-extern UWORD md_dmabufsize;\r
-extern UWORD md_mode;\r
-extern UBYTE md_numchn;\r
-extern UBYTE md_bpm;\r
-extern void (*md_player)(void);\r
-\r
-/*\r
-       main driver prototypes:\r
-*/\r
-\r
-void MD_InfoDriver(void);\r
-void MD_RegisterDriver(DRIVER *drv);\r
-void MD_RegisterPlayer(void (*plr)(void));\r
-SWORD MD_SampleLoad(FILE *fp,ULONG size,ULONG reppos,ULONG repend,UWORD flags);\r
-void MD_SampleUnLoad(SWORD handle);\r
-BOOL MD_Init(void);\r
-void MD_Exit(void);\r
-void MD_PlayStart(void);\r
-void MD_PlayStop(void);\r
-void MD_SetBPM(UBYTE bpm);\r
-void MD_Update(void);\r
-void MD_VoiceSetVolume(UBYTE voice,UBYTE ivol);\r
-void MD_VoiceSetFrequency(UBYTE voice,ULONG frq);\r
-void MD_VoiceSetPanning(UBYTE voice,ULONG pan);\r
-void MD_VoicePlay(UBYTE voice,SWORD handle,ULONG start,ULONG size,ULONG reppos,ULONG repend,UWORD flags);\r
-void SL_Init(FILE *fp,UWORD infmt,UWORD outfmt);\r
-void SL_Load(void *buffer,ULONG length);\r
-\r
-/*\r
-       Declare external drivers:\r
-*/\r
-\r
-extern DRIVER drv_gus;         /* gravis ultrasound driver */\r
-extern DRIVER drv_sb;          /* soundblaster DSP driver */\r
-extern DRIVER drv_ss;          /* ensoniq soundscape driver */\r
-extern DRIVER drv_nos;         /* nosound driver */\r
-extern DRIVER drv_raw;         /* file output driver */\r
-extern DRIVER drv_w95;         /* win95 driver */\r
-extern DRIVER drv_awe;         /* experimental SB-AWE driver */\r
-extern DRIVER drv_vox;         /* linux voxware driver */\r
-extern DRIVER drv_af;       /* Dec Alpha AudioFile driver */\r
-extern DRIVER drv_sun;      /* Sun driver */\r
-extern DRIVER drv_os2;      /* Os2 driver */\r
-extern DRIVER drv_tim;          /* timing driver */\r
-\r
-/**************************************************************************\r
-****** Player stuff: ******************************************************\r
-**************************************************************************/\r
-\r
-\r
-typedef struct ENVPR{\r
-       UBYTE flg;          /* envelope flag */\r
-       UBYTE pts;                      /* number of envelope points */\r
-       UBYTE sus;                      /* envelope sustain index */\r
-       UBYTE beg;                      /* envelope loop begin */\r
-       UBYTE end;                      /* envelope loop end */\r
-       SWORD p;                        /* current envelope counter */\r
-       UWORD a;                        /* envelope index a */\r
-       UWORD b;                        /* envelope index b */\r
-       ENVPT *env;                     /* envelope points */\r
-} ENVPR;\r
-\r
-\r
-typedef struct AUDTMP{\r
-       INSTRUMENT      *i;\r
-       SAMPLE      *s;\r
-\r
-        UWORD fadevol;          /* fading volume */\r
-\r
-       ENVPR venv;\r
-       ENVPR penv;\r
-\r
-       UBYTE keyon;            /* if true=key is pressed. */\r
-       UBYTE kick;                     /* if true=sample has to be restarted */\r
-       UBYTE sample;           /* which sample number (0-31) */\r
-       SWORD handle;           /* which sample-handle */\r
-\r
-       ULONG start;            /* The start byte index in the sample */\r
-\r
-       UBYTE panning;          /* panning position */\r
-       UBYTE pansspd;          /* panslide speed */\r
-\r
-       SBYTE volume;           /* amiga volume (0 t/m 64) to play the sample at */\r
-       UWORD period;           /* period to play the sample at */\r
-\r
-       /* You should not have to use the values\r
-          below in the player routine */\r
-\r
-       SBYTE transpose;\r
-\r
-       UBYTE note;                     /* */\r
-\r
-       SWORD ownper;\r
-       SWORD ownvol;\r
-\r
-       UBYTE *row;                     /* row currently playing on this channel */\r
-\r
-       SBYTE retrig;           /* retrig value (0 means don't retrig) */\r
-       UWORD c2spd;            /* what finetune to use */\r
-\r
-       SBYTE tmpvolume;        /* tmp volume */\r
-\r
-       UWORD tmpperiod;        /* tmp period */\r
-       UWORD wantedperiod;     /* period to slide to (with effect 3 or 5) */\r
-\r
-       UWORD slidespeed;       /* */\r
-       UWORD portspeed;        /* noteslide speed (toneportamento) */\r
-\r
-       UBYTE s3mtremor;        /* s3m tremor (effect I) counter */\r
-       UBYTE s3mtronof;        /* s3m tremor ontime/offtime */\r
-\r
-       UBYTE s3mvolslide;      /* last used volslide */\r
-\r
-       UBYTE s3mrtgspeed;      /* last used retrig speed */\r
-       UBYTE s3mrtgslide;      /* last used retrig slide */\r
-\r
-       UBYTE glissando;        /* glissando (0 means off) */\r
-       UBYTE wavecontrol;      /* */\r
-\r
-       SBYTE vibpos;           /* current vibrato position */\r
-       UBYTE vibspd;           /* "" speed */\r
-       UBYTE vibdepth;         /* "" depth */\r
-\r
-       SBYTE trmpos;           /* current tremolo position */\r
-       UBYTE trmspd;           /* "" speed */\r
-       UBYTE trmdepth;         /* "" depth */\r
-\r
-       UWORD soffset;          /* last used sample-offset (effect 9) */\r
-} AUDTMP;\r
-\r
-\r
-extern AUDTMP mp_audio[32];            /* max eight channels */\r
-extern UBYTE  mp_bpm;                  /* beats-per-minute speed */\r
-extern UWORD  mp_patpos;               /* current row number (0-63) */\r
-extern SWORD  mp_sngpos;               /* current song position */\r
-extern UWORD  mp_sngspd;               /* current songspeed */\r
-\r
-extern BOOL  mp_loop;\r
-extern BOOL  mp_panning;\r
-extern BOOL  mp_extspd;\r
-extern UBYTE mp_volume;\r
-\r
-/*\r
-       player prototypes:\r
-*/\r
-\r
-int     MP_Ready(void);\r
-void MP_NextPosition(void);\r
-void MP_PrevPosition(void);\r
-void MP_SetPosition(UWORD pos);\r
-void MP_HandleTick(void);\r
-void MP_Init(UNIMOD *m);\r
-\r
-\r
-/**************************************************************************\r
-****** Virtual channel stuff: *********************************************\r
-**************************************************************************/\r
-\r
-BOOL    VC_Init(void);\r
-void    VC_Exit(void);\r
-\r
-void    VC_PlayStart(void);\r
-void    VC_PlayStop(void);\r
-\r
-SWORD   VC_SampleLoad(FILE *fp,ULONG size,ULONG reppos,ULONG repend,UWORD flags);\r
-void    VC_SampleUnload(SWORD handle);\r
-\r
-void    VC_WriteSamples(SBYTE *buf,UWORD todo);\r
-UWORD   VC_WriteBytes(SBYTE *buf,UWORD todo);\r
-void    VC_SilenceBytes(SBYTE *buf,UWORD todo);\r
-\r
-void   VC_VoiceSetVolume(UBYTE voice,UBYTE vol);\r
-void   VC_VoiceSetFrequency(UBYTE voice,ULONG frq);\r
-void   VC_VoiceSetPanning(UBYTE voice,UBYTE pan);\r
-void   VC_VoicePlay(UBYTE voice,SWORD handle,ULONG start,ULONG size,ULONG reppos,ULONG repend,UWORD flags);\r
-\r
-#endif\r
diff --git a/16/v2/source/verge/ENGINE/MODE13H.C b/16/v2/source/verge/ENGINE/MODE13H.C
deleted file mode 100755 (executable)
index 2dcbf9c..0000000
+++ /dev/null
@@ -1,881 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include <dpmi.h>\r
-#include <sys\nearptr.h>\r
-#include "verge.h"\r
-\r
-// ================================= Data ====================================\r
-\r
-byte *screen, *screenx;             // virscr | realscr\r
-\r
-// ================================= Code ====================================\r
-\r
-void SetMode(int mode)\r
-{\r
-  REGISTERS r;\r
-  SET_AX(r, mode);\r
-  INTERRUPT(0x10, r);\r
-}\r
-\r
-int Mode13hShutdown(void)\r
-{\r
-  SetMode(0x3);\r
-  free(screen);\r
-  return 0;\r
-}\r
-\r
-void xShowPage(int startofs)\r
-{\r
-  asm("movl _screen, %%esi              \n\t"\r
-      "addl %0, %%esi                   \n\t"\r
-      "movl _screenx, %%edi             \n\t"\r
-      "movl $200, %%eax                 \n\t"\r
-"lineloop:                              \n\t"\r
-      "movl $80, %%ecx                  \n\t"\r
-      "rep                              \n\t"\r
-      "movsl                            \n\t"\r
-      "addl $32, %%esi                  \n\t"\r
-      "decl %%eax                       \n\t"\r
-      "jnz lineloop                     \n\t"\r
-      :\r
-      : "m" (startofs)\r
-      : "esi", "edi", "cc", "eax", "ecx");\r
-}\r
-\r
-int Mode13hShowPage(void)\r
-{\r
-  RenderGUI();\r
-  cpubyte=PFLIP;\r
-  xShowPage((16*352)+16);\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int Mode13hCopySprite(int x, int y, int width, int height, byte *src)\r
-{\r
-  cpubyte=RENDER;\r
-\r
-  asm("movl %3, %%edx                   \n\t"\r
-      "movl %4, %%esi                   \n\t"\r
-"csl0:                                  \n\t"\r
-      "movl %1, %%eax                   \n\t"\r
-      "imul $352, %%eax                 \n\t"\r
-      "addl %0, %%eax                   \n\t"\r
-      "addl _screen, %%eax              \n\t"\r
-      "movl %%eax, %%edi                \n\t"\r
-      "movl %2, %%ecx                   \n\t"\r
-      "shrl $2, %%ecx                   \n\t"\r
-      "repz                             \n\t"\r
-      "movsl                            \n\t"\r
-      "incl %1                          \n\t"\r
-      "decl %%edx                       \n\t"\r
-      "jnz csl0                         \n\t"\r
-      :\r
-      : "m" (x), "m" (y), "m" (width), "m" (height), "m" (src)\r
-      : "eax","edx","esi","edi","ecx","cc" );\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int Mode13hCopyTile(int x, int y, byte *spr)\r
-{\r
-  cpubyte=RENDER;\r
-\r
-  asm("movl $16, %%ecx                  \n\t"\r
-      "movl %2, %%esi                   \n\t"\r
-      "movl %1, %%edi                   \n\t"\r
-      "imul $352, %%edi                 \n\t"\r
-      "addl %0, %%edi                   \n\t"\r
-      "addl _screen, %%edi              \n\t"\r
-" ctl0:                                 \n\t"\r
-      "movl (%%edi), %%eax              \n\t"\r
-      "andl $0, %%eax                   \n\t"\r
-      "orl  (%%esi), %%eax              \n\t"\r
-      "movl %%eax, (%%edi)              \n\t"\r
-      "movl 4(%%edi), %%eax             \n\t"\r
-      "andl $0, %%eax                   \n\t"\r
-      "orl  4(%%esi), %%eax             \n\t"\r
-      "movl %%eax, 4(%%edi)             \n\t"\r
-      "movl 8(%%edi), %%eax             \n\t"\r
-      "andl $0, %%eax                   \n\t"\r
-      "orl  8(%%esi), %%eax             \n\t"\r
-      "movl %%eax, 8(%%edi)             \n\t"\r
-      "movl 12(%%edi), %%eax            \n\t"\r
-      "andl $0, %%eax                   \n\t"\r
-      "orl  12(%%esi), %%eax            \n\t"\r
-      "movl %%eax, 12(%%edi)            \n\t"\r
-      "addl $16, %%esi                  \n\t"\r
-      "addl $352, %%edi                 \n\t"\r
-      "decl %%ecx                       \n\t"\r
-      "jnz ctl0                         \n\t"\r
-      :\r
-      : "m" (x), "m" (y), "m" (spr)\r
-      : "eax","ecx","esi","edi","cc" );\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int Mode13hTCopySprite(int x, int y, int width, int height, byte *src)\r
-{\r
-  cpubyte=RENDER;\r
-\r
-  asm("movl %3, %%ecx                   \n\t"\r
-      "movl %4, %%esi                   \n\t"\r
-"tcsl0:                                 \n\t"\r
-      "movl %1, %%eax                   \n\t"\r
-      "imul $352, %%eax                 \n\t"\r
-      "addl %0, %%eax                   \n\t"\r
-      "addl _screen, %%eax              \n\t"\r
-      "movl %%eax, %%edi                \n\t"\r
-      "movl %2, %%edx                   \n\t"\r
-"drawloop:                              \n\t"\r
-      "lodsb                            \n\t"\r
-      "orb %%al, %%al                   \n\t"\r
-      "jz nodraw                        \n\t"\r
-      "stosb                            \n\t"\r
-      "decl %%edx                       \n\t"\r
-      "jz endline                       \n\t"\r
-      "jmp drawloop                     \n\t"\r
-"nodraw:                                \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "decl %%edx                       \n\t"\r
-      "jnz drawloop                     \n\t"\r
-"endline:                               \n\t"\r
-      "incl %1                          \n\t"\r
-      "decl %%ecx                       \n\t"\r
-      "jnz tcsl0                        \n\t"\r
-      :\r
-      : "m" (x), "m" (y), "m" (width), "m" (height), "m" (src)\r
-      : "eax","edx","esi","edi","ecx","cc" );\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int Mode13hTCopyTile(int x, int y, byte *spr, byte *matte)\r
-{\r
-  cpubyte=RENDER;\r
-  asm("movl $16, %%ecx                  \n\t"\r
-      "movl %2, %%esi                   \n\t"\r
-      "movl %1, %%edi                   \n\t"\r
-      "imul $352, %%edi                 \n\t"\r
-      "addl %0, %%edi                   \n\t"\r
-      "addl _screen, %%edi              \n\t"\r
-      "movl %3, %%edx                   \n\t"\r
-"tctl0:                                 \n\t"\r
-      "movl (%%edi), %%eax              \n\t"\r
-      "andl (%%edx), %%eax              \n\t"\r
-      "orl  (%%esi), %%eax              \n\t"\r
-      "movl %%eax, (%%edi)              \n\t"\r
-      "movl 4(%%edi), %%eax             \n\t"\r
-      "andl 4(%%edx), %%eax             \n\t"\r
-      "orl  4(%%esi), %%eax             \n\t"\r
-      "movl %%eax, 4(%%edi)             \n\t"\r
-      "movl 8(%%edi), %%eax             \n\t"\r
-      "andl 8(%%edx), %%eax             \n\t"\r
-      "orl  8(%%esi), %%eax             \n\t"\r
-      "movl %%eax, 8(%%edi)             \n\t"\r
-      "movl 12(%%edi), %%eax            \n\t"\r
-      "andl 12(%%edx), %%eax            \n\t"\r
-      "orl  12(%%esi), %%eax            \n\t"\r
-      "movl %%eax, 12(%%edi)            \n\t"\r
-      "addl $16, %%esi                  \n\t"\r
-      "addl $352, %%edi                 \n\t"\r
-      "addl $16, %%edx                  \n\t"\r
-      "decl %%ecx                       \n\t"\r
-      "jnz tctl0                        \n\t"\r
-      :\r
-      : "m" (x), "m" (y), "m" (spr), "m" (matte)\r
-      : "eax","ecx","edx","esi","edi","cc" );\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int Mode13hCCopySprite(int x,int y,int width,int height,byte *src)\r
-{\r
-  byte *s,*d;\r
-  int xl,yl,xs,ys;\r
-  int cx1=0, cy1=0, cx2=tsx-1, cy2=tsy-1;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  xl=width;\r
-  yl=height;\r
-  xs=ys=0;\r
-\r
-  if (x>cx2 || y>cy2 || x+xl<cx1 || y+yl<cy1)\r
-    return 0;\r
-\r
-  if (x+xl > cx2) xl=cx2-x+1;\r
-  if (y+yl > cy2) yl=cy2-y+1;\r
-\r
-  if (x<cx1) { xs=cx1-x; xl-=xs; x=cx1; }\r
-  if (y<cy1) { ys=cy1-y; yl-=ys; y=cy1; }\r
-\r
-  s=src;\r
-  if (ys) s+=(ys*width); // only perform mul if necessary ;)\r
-  if (xs) s+=xs;\r
-  d=screen+(y*tsx)+x;\r
-\r
-  for (; yl; yl--)\r
-  {\r
-    memcpy(d,s,xl);\r
-    s+=width;\r
-    d+=tsx;\r
-  }\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int Mode13hTCCopySprite(int x,int y,int width,int height,byte *src)\r
-{\r
-  byte *s,*d,c;\r
-  int xl,yl,xs,ys;\r
-  int cx1=0, cy1=0, cx2=tsx-1, cy2=tsy-1;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  xl=width;\r
-  yl=height;\r
-  xs=ys=0;\r
-\r
-  if (x>cx2 || y>cy2 || x+xl<cx1 || y+yl<cy1)\r
-    return 0;\r
-\r
-  if (x+xl > cx2) xl=cx2-x+1;\r
-  if (y+yl > cy2) yl=cy2-y+1;\r
-\r
-  if (x<cx1) { xs=cx1-x; xl-=xs; x=cx1; }\r
-  if (y<cy1) { ys=cy1-y; yl-=ys; y=cy1; }\r
-\r
-  s=src;\r
-  if (ys) s+=(ys*width); // only perform mul if necessary ;)\r
-  if (xs) s+=xs;\r
-  d=screen+(y*tsx)+x;\r
-\r
-  for (; yl; yl--)\r
-  {\r
-    for (x=0; x<xl; x++)\r
-    {\r
-      c=s[x];\r
-      if (c)\r
-        d[x]=c;\r
-    }\r
-    s+=width;\r
-    d+=tsx;\r
-  }\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int Mode13hScaleSprite(int x, int y, int w, int h, int tw, int th, byte *s)\r
-{ int i,j,xm,ym,xd,yd,sx,sy=0,xs,ys,dys=0;\r
-  unsigned char *d;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  if (!tw || !th) return 0;\r
-  tw += sgn(tw); th += sgn(th);\r
-  xm = abs(tw); ym = abs(th);\r
-  xs = (w<<16)/xm; ys = (h<<16)/ym;\r
-  xd = sgn(tw); yd = sgn(th);\r
-\r
-  if (tw>0 && th>0) dys=tsx-xm;\r
-  else if (tw>0 && th<0) dys=(0-tsx)-xm;\r
-  else if (tw<0 && th>0) dys=tsx+xm;\r
-  else if (tw<0 && th<0) dys=(0-tsx)+xm;\r
-\r
-  d = screen+(y*tsx)+x;\r
-  for (i=0;i<ym;++i) {\r
-    sx=0;\r
-    for (j=0;j<xm;++j) {\r
-      *d=s[(sx>>16)];\r
-      d+=xd;\r
-      sx+=xs;\r
-      }\r
-    d+=dys;\r
-    sy+=ys;\r
-    s+=(sy>>16)*w;\r
-    sy&=0xffff;\r
-    }\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int Mode13hRenderMAPLine(int x, int y, int yofs, word *map)\r
-{\r
-  cpubyte=RENDER;\r
-  asm("movl %1, %%edi                  \n\t"\r
-      "imul $352, %%edi                \n\t"\r
-      "addl %0, %%edi                  \n\t"\r
-      "addl _screen, %%edi             \n\t"\r
-      "movl $22, %%ebx                 \n\t"\r
-      "movl %3, %%ecx                  \n\t"\r
-"tileloop:                             \n\t"\r
-      "movw (%%ecx), %%ax              \n\t"\r
-      "movzwl %%ax, %%edx              \n\t"\r
-      "shll $1, %%edx                  \n\t"\r
-      "addl _tileidx, %%edx            \n\t"\r
-      "movw (%%edx), %%ax              \n\t"\r
-      "movzwl %%ax, %%esi              \n\t"\r
-      "shll $8, %%esi                  \n\t"\r
-      "addl _vsp, %%esi                \n\t"\r
-      "movl %2, %%eax                  \n\t"\r
-      "shll $4, %%eax                  \n\t"\r
-      "addl %%eax, %%esi               \n\t"\r
-      "movl (%%esi), %%eax             \n\t"\r
-      "movl %%eax, (%%edi)             \n\t"\r
-      "movl 4(%%esi), %%eax            \n\t"\r
-      "movl %%eax, 4(%%edi)            \n\t"\r
-      "movl 8(%%esi), %%eax            \n\t"\r
-      "movl %%eax, 8(%%edi)            \n\t"\r
-      "movl 12(%%esi), %%eax           \n\t"\r
-      "movl %%eax, 12(%%edi)           \n\t"\r
-      "addl $16, %%edi                 \n\t"\r
-      "addl $2, %%ecx                  \n\t"\r
-      "decl %%ebx                      \n\t"\r
-      "jnz tileloop                    \n\t"\r
-      :\r
-      : "m" (x), "m" (y), "m" (yofs), "m" (map)\r
-      : "eax","ebx","ecx","edx","esi","edi","cc" );\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int Mode13hTRenderMAPLine(int x, int y, int yofs, word *map)\r
-{\r
-  cpubyte=RENDER;\r
-  asm("movl %1, %%edi                  \n\t"\r
-      "imul $352, %%edi                \n\t"\r
-      "addl %0, %%edi                  \n\t"\r
-      "addl _screen, %%edi             \n\t"\r
-      "movl $22, %%ebx                 \n\t"\r
-      "movl %3, %%ecx                  \n\t"\r
-"tileloop1:                            \n\t"\r
-      "movw (%%ecx), %%ax              \n\t"\r
-      "movzwl %%ax, %%edx              \n\t"\r
-      "shll $1, %%edx                  \n\t"\r
-      "addl _tileidx, %%edx            \n\t"\r
-      "movw (%%edx), %%ax              \n\t"\r
-      "orw %%ax, %%ax                  \n\t"\r
-      "jz next1                        \n\t"\r
-      "movzwl %%ax, %%esi              \n\t"\r
-      "shll $8, %%esi                  \n\t"\r
-      "movl %%esi, %%edx               \n\t"\r
-      "addl _vspmask, %%edx            \n\t"\r
-      "addl _vsp, %%esi                \n\t"\r
-      "movl %2, %%eax                  \n\t"\r
-      "shll $4, %%eax                  \n\t"\r
-      "addl %%eax, %%esi               \n\t"\r
-      "addl %%eax, %%edx               \n\t"\r
-      "movl (%%edi), %%eax             \n\t"\r
-      "andl (%%edx), %%eax             \n\t"\r
-      "orl  (%%esi), %%eax             \n\t"\r
-      "movl %%eax, (%%edi)             \n\t"\r
-      "movl 4(%%edi), %%eax            \n\t"\r
-      "andl 4(%%edx), %%eax            \n\t"\r
-      "orl  4(%%esi), %%eax            \n\t"\r
-      "movl %%eax, 4(%%edi)            \n\t"\r
-      "movl 8(%%edi), %%eax            \n\t"\r
-      "andl 8(%%edx), %%eax            \n\t"\r
-      "orl  8(%%esi), %%eax            \n\t"\r
-      "movl %%eax, 8(%%edi)            \n\t"\r
-      "movl 12(%%edi), %%eax           \n\t"\r
-      "andl 12(%%edx), %%eax           \n\t"\r
-      "orl  12(%%esi), %%eax           \n\t"\r
-      "movl %%eax, 12(%%edi)           \n\t"\r
-"next1:                                \n\t"\r
-      "addl $16, %%edi                 \n\t"\r
-      "addl $2, %%ecx                  \n\t"\r
-      "decl %%ebx                      \n\t"\r
-      "jnz tileloop1                   \n\t"\r
-      :\r
-      : "m" (x), "m" (y), "m" (yofs), "m" (map)\r
-      : "eax","ebx","ecx","edx","esi","edi","cc" );\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int Mode13hColorField(int x, int y, byte c)\r
-{\r
-  cpubyte=RENDER;\r
-  asm("movl %1, %%eax                   \n\t"\r
-      "imul $352, %%eax                 \n\t"\r
-      "addl %0, %%eax                   \n\t"\r
-      "addl _screen, %%eax              \n\t"\r
-      "movl %%eax, %%edi                \n\t"\r
-      "movl $8, %%ecx                   \n\t"\r
-      "movb %2, %%al                    \n\t"\r
-"lineloop1:                             \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "addl $336, %%edi                 \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "addl $336, %%edi                 \n\t"\r
-      "decl %%ecx                       \n\t"\r
-      "jnz lineloop1                    \n\t"\r
-      :\r
-      : "m" (x), "m" (y), "m" (c)\r
-      : "eax","edi","ecx","cc" );\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int Mode13hClearScreen()\r
-{\r
-  cpubyte=RENDER;\r
-  memset(screen+(352*16)+16,0,(352*200));\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int Mode13hPutPixel(int x, int y, int color)\r
-{\r
-  cpubyte=RENDER;\r
-\r
-  if (x<cx1 || y<cy1 || x>cx2 || y>cy2)\r
-  {\r
-    cpubyte=ETC;\r
-    return 0;\r
-  }\r
-\r
-  x+=16;\r
-  y+=16;\r
-\r
-  screen[(y*tsx)+x]=color;\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int Mode13hGetPixel(int x, int y)\r
-{\r
-  cpubyte=RENDER;\r
-\r
-  if (x<cx1 || y<cy1 || x>cx2 || y>cy2)\r
-  {\r
-    cpubyte=ETC;\r
-    return 0;\r
-  }\r
-\r
-  x+=16;\r
-  y+=16;\r
-\r
-  cpubyte=ETC;\r
-  return screen[(y*tsx)+x];\r
-}\r
-\r
-int Mode13hHLine(int x, int y, int x2, int color)\r
-{ byte *d;\r
-  int width;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  // swap?\r
-  if (x2<x) { int t=x2; x=x2; x2=t; }\r
-\r
-  width=x2-x+1;\r
-  if (x>cx2 || y>cy2 || x+width<cx1 || y<cy1)\r
-    return 0;\r
-\r
-  if (x+width > cx2) width=cx2-x+1;\r
-  if (x<cx1) { width-=(cx1-x); x=cx1; }\r
-\r
-  x+=16;\r
-  y+=16;\r
-  x2+=16;\r
-\r
-  d=screen+(y*tsx)+x;\r
-  memset(d,color,width);\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int Mode13hVLine(int x, int y, int y2, int color)\r
-{ byte *d;\r
-  int height;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  // swap?\r
-  if (y2<y) { int t=y2; x=y2; y2=t; }\r
-\r
-  height=y2-y+1;\r
-  if (x>cx2 || y>cy2 || x<cx1 || y+height<cy1)\r
-  {\r
-    cpubyte=ETC;\r
-    return 0;\r
-  }\r
-\r
-  if (y+height > cy2) height=cy2-y+1;\r
-  if (y<cy1) { height-=(cy1-y); y=cy1; }\r
-\r
-  x+=16;\r
-  y+=16;\r
-  y2+=16;\r
-\r
-  d=screen+(y*tsx)+x;\r
-  for (; height; height--)\r
-  {\r
-    *d=color;\r
-    d+=tsx;\r
-  }\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int Mode13hLine(int x1, int y1, int x2, int y2, int color)\r
-{\r
-  short i,xc,yc,er,n,m,xi,yi,xcxi,ycyi,xcyi;\r
-  unsigned dcy,dcx;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  // check to see if the line is completly clipped off\r
-  if ((x1<cx1 && x2<cx1) || (x1>cx2 && x2>cx2)\r
-  || (y1<cy1 && y2<cy1) || (y1>cy2 && y2>cy2))\r
-  {\r
-    cpubyte=ETC;\r
-    return 0;\r
-  }\r
-\r
-  if (x1>x2)\r
-  {\r
-    i=x1; x1=x2; x2=i;\r
-    i=y1; y1=y2; y2=i;\r
-  }\r
-\r
-  // clip the left side\r
-  if (x1<cx1)\r
-  { int myy=(y2-y1);\r
-    int mxx=(x2-x1),b;\r
-    if (!mxx)\r
-    {\r
-      cpubyte=ETC;\r
-      return 0;\r
-    }\r
-    if (myy)\r
-    {\r
-      b=y1-(y2-y1)*x1/mxx;\r
-      y1=myy*cx1/mxx+b;\r
-      x1=cx1;\r
-    }\r
-    else x1=cx1;\r
-  }\r
-\r
-  // clip the right side\r
-  if (x2>cx2)\r
-  { int myy=(y2-y1);\r
-    int mxx=(x2-x1),b;\r
-    if (!mxx)\r
-    {\r
-      cpubyte=ETC;\r
-      return 0;\r
-    }\r
-    if (myy)\r
-    {\r
-      b=y1-(y2-y1)*x1/mxx;\r
-      y2=myy*cx2/mxx+b;\r
-      x2=cx2;\r
-    }\r
-    else x2=cx2;\r
-  }\r
-\r
-  if (y1>y2)\r
-  {\r
-    i=x1; x1=x2; x2=i;\r
-    i=y1; y1=y2; y2=i;\r
-  }\r
-\r
-  // clip the bottom\r
-  if (y2>cy2)\r
-  { int mxx=(x2-x1);\r
-    int myy=(y2-y1),b;\r
-    if (!myy)\r
-    {\r
-      cpubyte=ETC;\r
-      return 0;\r
-    }\r
-    if (mxx)\r
-    {\r
-      b=y1-(y2-y1)*x1/mxx;\r
-      x2=(cy2-b)*mxx/myy;\r
-      y2=cy2;\r
-    }\r
-    else y2=cy2;\r
-  }\r
-\r
-  // clip the top\r
-  if (y1<cy1)\r
-  { int mxx=(x2-x1);\r
-    int myy=(y2-y1),b;\r
-    if (!myy)\r
-    {\r
-      cpubyte=ETC;\r
-      return 0;\r
-    }\r
-    if (mxx)\r
-    {\r
-      b=y1-(y2-y1)*x1/mxx;\r
-      x1=(cy1-b)*mxx/myy;\r
-      y1=cy1;\r
-    }\r
-    else y1=cy1;\r
-  }\r
-\r
-  // ???\r
-  // see if it got cliped into the box, out out\r
-  if (x1<cx1 || x2<cx1 || x1>cx2 || x2>cx2 || y1<cy1 || y2 <cy1 || y1>cy2 || y2>cy2)\r
-  {\r
-    cpubyte=ETC;\r
-    return 0;\r
-  }\r
-\r
-  if (x1>x2)\r
-  { xc=x2; xi=x1; }\r
-  else { xi=x2; xc=x1; }\r
-\r
-  x1+=16;y1+=16; // aen; adjust these here??\r
-  x2+=16;y2+=16;\r
-\r
-  // assume y1<=y2 from above swap operation\r
-  yi=y2; yc=y1;\r
-\r
-  dcx=x1; dcy=y1;\r
-  xc=(x2-x1); yc=(y2-y1);\r
-  if (xc<0) xi=-1; else xi=1;\r
-  if (yc<0) yi=-1; else yi=1;\r
-  n=abs(xc); m=abs(yc);\r
-  ycyi=abs(2*yc*xi);\r
-  er=0;\r
-\r
-  if (n>m)\r
-  {\r
-    xcxi=abs(2*xc*xi);\r
-    for (i=0;i<=n;i++)\r
-    {\r
-      screen[(dcy*tsx)+dcx]=color;\r
-      if (er>0)\r
-      { dcy+=yi;\r
-        er-=xcxi;\r
-      }\r
-      er+=ycyi;\r
-      dcx+=xi;\r
-    }\r
-  }\r
-  else\r
-  {\r
-    xcyi=abs(2*xc*yi);\r
-    for (i=0;i<=m;i++)\r
-    {\r
-      screen[(dcy*tsx)+dcx]=color;\r
-      if (er>0)\r
-      { dcx+=xi;\r
-        er-=ycyi;\r
-      }\r
-      er+=xcyi;\r
-      dcy+=yi;\r
-    }\r
-  }\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int Mode13hCircle(int x, int y, int radius, int color)\r
-{ int cx=0;\r
-  int cy=radius;\r
-  int df=1-radius;\r
-  int d_e=3;\r
-  int d_se=-2*radius+5;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  do {\r
-    Mode13hPutPixel(x+cx,y+cy,color);\r
-    if (cx) Mode13hPutPixel(x-cx,y+cy,color);\r
-    if (cy) Mode13hPutPixel(x+cx,y-cy,color);\r
-    if ((cx) && (cy)) Mode13hPutPixel(x-cx,y-cy,color);\r
-\r
-    if (cx != cy)\r
-    {\r
-      Mode13hPutPixel(x+cy,y+cx,color);\r
-      if (cx) Mode13hPutPixel(x+cy,y-cx,color);\r
-      if (cy) Mode13hPutPixel(x-cy,y+cx,color);\r
-      if (cx && cy) Mode13hPutPixel(x-cy,y-cx,color);\r
-    }\r
-\r
-    if (df<0)\r
-    {\r
-      df+=d_e;\r
-      d_e+=2;\r
-      d_se+=2;\r
-    }\r
-    else\r
-    {\r
-      df+=d_se;\r
-      d_e+=2;\r
-      d_se+=4;\r
-      cy--;\r
-    }\r
-\r
-    cx++;\r
-\r
-  } while (cx <= cy);\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int Mode13hCircleFill(int x, int y, int radius, int color)\r
-{ int cx=0;\r
-  int cy=radius;\r
-  int df=1-radius;\r
-  int d_e=3;\r
-  int d_se=-2*radius+5;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  do {\r
-    Mode13hHLine(x-cy,y-cx,x+cy,color);\r
-    if (cx) Mode13hHLine(x-cy,y+cx,x+cy,color);\r
-\r
-    if (df<0)\r
-    {\r
-      df+=d_e;\r
-      d_e+=2;\r
-      d_se+=2;\r
-    }\r
-    else\r
-    {\r
-      if (cx != cy)\r
-      {\r
-        Mode13hHLine(x-cx,y-cy,x+cx,color);\r
-        if (cy) Mode13hHLine(x-cx,y+cy,x+cx,color);\r
-      }\r
-\r
-      df+=d_se;\r
-      d_e+=2;\r
-      d_se+=4;\r
-      cy--;\r
-    }\r
-\r
-    cx++;\r
-\r
-  } while (cx <= cy);\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int Mode13hRect(int x, int y, int x2, int y2, int color)\r
-{\r
-  Mode13hHLine(x,y,x2,color);\r
-  Mode13hHLine(x,y2,x2,color);\r
-  Mode13hVLine(x,y+1,y2-1,color);\r
-  Mode13hVLine(x2,y+1,y2-1,color);\r
-  return 0;\r
-}\r
-\r
-int Mode13hRectFill(int x, int y, int x2, int y2, int color)\r
-{\r
-  cpubyte=RENDER;\r
-\r
-  if (y2<y) { int t=y2; y=y2; y2=t; }\r
-\r
-  for (; y<=y2; y++)\r
-    Mode13hHLine(x,y,x2,color);\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-void InitMode13h(void)\r
-{\r
-  SetMode(0x13);\r
-\r
-  screenx=(byte *) 0xA0000 + __djgpp_conventional_base;\r
-  screen=(byte *) malloc(95744);\r
-  memset(screen, 0, 95744);\r
-\r
-  sx=320;  sy=200;\r
-  tsx=352; tsy=232;\r
-  tx=20;   ty=13;\r
-  cx1=0;   cy1=0;\r
-  cx2=sx-1;cy2=sy-1;\r
-\r
-  // Mode successfuly set, now lets set up the driver.\r
-  ShutdownVideo = Mode13hShutdown;\r
-  ShowPage = Mode13hShowPage;\r
-  CopySprite = Mode13hCopySprite;\r
-  TCopySprite = Mode13hTCopySprite;\r
-  CCopySprite = Mode13hCCopySprite;\r
-  TCCopySprite = Mode13hTCCopySprite;\r
-  CopyTile = Mode13hCopyTile;\r
-  TCopyTile = Mode13hTCopyTile;\r
-  ScaleSprite = Mode13hScaleSprite;\r
-  RenderMAPLine = Mode13hRenderMAPLine;\r
-  TRenderMAPLine = Mode13hTRenderMAPLine;\r
-  ColorField = Mode13hColorField;\r
-  ClearScreen = Mode13hClearScreen;\r
-  PutPixel = Mode13hPutPixel;\r
-  GetPixel = Mode13hGetPixel;\r
-  HLine = Mode13hHLine;\r
-  VLine = Mode13hVLine;\r
-  Line = Mode13hLine;\r
-  Circle = Mode13hCircle;\r
-  CircleFill = Mode13hCircleFill;\r
-  Rect = Mode13hRect;\r
-  RectFill = Mode13hRectFill;\r
-  DriverDesc = "320x200 (Mode 13h, linear)";\r
-}\r
diff --git a/16/v2/source/verge/ENGINE/MODEINIT.C b/16/v2/source/verge/ENGINE/MODEINIT.C
deleted file mode 100755 (executable)
index 457c155..0000000
+++ /dev/null
@@ -1,432 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include <dpmi.h>\r
-#include <sys\nearptr.h>\r
-#include "verge.h"\r
-\r
-void BIOS_SetVideoMode(int mode)\r
-{\r
-  REGISTERS r;\r
-  SET_AX(r, mode);\r
-  INTERRUPT(0x10, r);\r
-}\r
-\r
-// =============================== Mode 13h ===================================\r
-\r
-int Mode13hShutdown(int i)\r
-{\r
-  if (i) BIOS_SetVideoMode(0x3);\r
-  free(screen);\r
-  return 0;\r
-}\r
-\r
-void InitMode13h(void)\r
-{\r
-  BIOS_SetVideoMode(0x13);\r
-\r
-  DriverDesc = "320x200 (Mode 13h, linear)";\r
-  sx=320,   sy=200;\r
-  tx=20,    ty=13;\r
-  cx1=0,    cy1=0;\r
-  cx2=sx-1, cy2=sy-1;\r
-\r
-  // setup function drivers\r
-  ShowPage=LFB_ShowPage;\r
-  ShutdownVideo=Mode13hShutdown;\r
-\r
-  video=(byte *) 0xA0000 + __djgpp_conventional_base;\r
-  vscreen=(byte *) valloc(sx*sy, "vscreen", 0);\r
-  screen=vscreen;\r
-  memset(screen, 0, sx*sy);\r
-}\r
-\r
-// ================================= Mode-X ==================================\r
-\r
-#define SEQU_ADDR       0x3c4\r
-#define CRTC_ADDR       0x3d4\r
-#define MISC_OUTPUT     0x3c2\r
-\r
-#define ATTRCON_ADDR    0x3c0\r
-#define MISC_ADDR       0x3c2\r
-#define VGAENABLE_ADDR  0x3c3\r
-#define SEQ_ADDR        0x3c4\r
-#define GRACON_ADDR     0x3ce\r
-#define CRTC_ADDR       0x3d4\r
-#define STATUS_ADDR     0x3da\r
-\r
-typedef struct\r
-{\r
-  unsigned port;\r
-  byte index, value;\r
-} Register;\r
-\r
-typedef Register *RegisterPtr;\r
-\r
-Register scr256x256[] =\r
-{\r
-  { 0x3c2, 0x00, 0xe3},{ 0x3d4, 0x00, 0x5f},{ 0x3d4, 0x01, 0x3f},\r
-  { 0x3d4, 0x02, 0x40},{ 0x3d4, 0x03, 0x82},{ 0x3d4, 0x04, 0x4A},\r
-  { 0x3d4, 0x05, 0x9A},{ 0x3d4, 0x06, 0x23},{ 0x3d4, 0x07, 0xb2},\r
-  { 0x3d4, 0x08, 0x00},{ 0x3d4, 0x09, 0x61},{ 0x3d4, 0x10, 0x0a},\r
-  { 0x3d4, 0x11, 0xac},{ 0x3d4, 0x12, 0xff},{ 0x3d4, 0x13, 0x20},\r
-  { 0x3d4, 0x14, 0x40},{ 0x3d4, 0x15, 0x07},{ 0x3d4, 0x16, 0x1a},\r
-  { 0x3d4, 0x17, 0xa3},{ 0x3c4, 0x01, 0x01},{ 0x3c4, 0x04, 0x0e},\r
-  { 0x3ce, 0x05, 0x40},{ 0x3ce, 0x06, 0x05},{ 0x3c0, 0x10, 0x41},\r
-  { 0x3c0, 0x13, 0x00}\r
-};\r
-\r
-// ================================= Code ====================================\r
-\r
-void plane(byte p)\r
-{\r
-  int hi=1<<p;\r
-  outpw(0x03c4, (hi<<8)|0x02);\r
-}\r
-\r
-int ModeXShutdown(int i)\r
-{\r
-  if (i) BIOS_SetVideoMode(0x3);\r
-  vfree(screen);\r
-  return 0;\r
-}\r
-\r
-int ModeXShowPage()\r
-{\r
-  byte *s,*d;\r
-  int x,y,k;\r
-  int sx2;\r
-\r
-  if (key[SCAN_ALT] && key[SCAN_X]) err("Exiting: ALT-X pressed.");\r
-  RenderGUI();\r
-  cpubyte=PFLIP;\r
-\r
-  d=video;\r
-  sx2=sx>>2;\r
-\r
-  for (y=0; y<sy; ++y,d+=sx2)\r
-  {\r
-    s=screen+(y*sx);\r
-    for (k=0; k<4; k++,s-=sx)\r
-    {\r
-      plane(k);\r
-      for (x=0; x<sx2; x++,s+=4)\r
-        d[x]=s[k];\r
-    }\r
-  }\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-static void outReg(Register r)\r
-{\r
-  switch (r.port)\r
-  {\r
-    // First handle special cases:\r
-\r
-    case ATTRCON_ADDR:\r
-      // reset read/write flip-flop\r
-      inp(STATUS_ADDR);\r
-      // ensure VGA output is enabled\r
-      outp(ATTRCON_ADDR, r.index | 0x20);\r
-      outp(ATTRCON_ADDR, r.value);\r
-      break;\r
-\r
-    case MISC_ADDR:\r
-    case VGAENABLE_ADDR:\r
-      //  directly to the port\r
-      outp(r.port, r.value);\r
-      break;\r
-\r
-    case SEQ_ADDR:\r
-    case GRACON_ADDR:\r
-    case CRTC_ADDR:\r
-    default:\r
-      // index to port\r
-      outp(r.port, r.index);\r
-      // value to port+1\r
-      outp(r.port + 1, r.value);\r
-      break;\r
-  }\r
-}\r
-\r
-// readyVgaRegs() does the initialization to make the VGA ready to\r
-// accept any combination of configuration register settings.\r
-//\r
-// This involves enabling writes to index 0 to 7 of the CRT controller\r
-// (port 0x3d4), by clearing the most significant bit (bit 7) of index\r
-// 0x11.\r
-\r
-static void readyVgaRegs(void)\r
-{\r
-  int v;\r
-\r
-  outp(0x3d4, 0x11);\r
-  v = inp(0x3d5) & 0x7f;\r
-  outp(0x3d4, 0x11);\r
-  outp(0x3d5, v);\r
-}\r
-\r
-// outRegArray sets n registers according to the array pointed to by r.\r
-// First, indexes 0-7 of the CRT controller are enabled for writing.\r
-\r
-static void outRegArray(Register *r, int n)\r
-{\r
-  readyVgaRegs();\r
-  while (n--)\r
-    outReg (*r++);\r
-}\r
-\r
-void Set256x256()\r
-{\r
-  DriverDesc = "256x256 (ModeX, planar)";\r
-\r
-  outRegArray(scr256x256, sizeof(scr256x256) / sizeof (Register));\r
-\r
-  sx=256,   sy=256;\r
-  tx=17,    ty=16;\r
-  cx1=0,    cy1=0;\r
-  cx2=sx-1, cy2=sy-1;\r
-}\r
-\r
-void Set320x240()\r
-{ char in_byte;\r
-\r
-  DriverDesc = "320x240 (ModeX, planar)";\r
-\r
-  outpw(SEQU_ADDR, 0x0604);\r
-  memset((unsigned char *)0xA0000 + __djgpp_conventional_base,0,0x10000); // for clean mode switch\r
-  outpw(SEQU_ADDR, 0x0110);\r
-  outp(MISC_OUTPUT, 0xe3);\r
-  outpw(SEQU_ADDR, 0x0300);\r
-  outp(CRTC_ADDR, 0x11);\r
-  in_byte = inp((CRTC_ADDR+1));\r
-  in_byte = (in_byte && 0x7f);\r
-  outp((CRTC_ADDR+1), in_byte);\r
-  outpw(CRTC_ADDR, 0x0d06);\r
-  outpw(CRTC_ADDR, 0x3e07);\r
-  outpw(CRTC_ADDR, 0x4109);\r
-  outpw(CRTC_ADDR, 0xea10);\r
-  outpw(CRTC_ADDR, 0xac11);\r
-  outpw(CRTC_ADDR, 0xdf12);\r
-  outpw(CRTC_ADDR, 0x0014);\r
-  outpw(CRTC_ADDR, 0xe715);\r
-  outpw(CRTC_ADDR, 0x0616);\r
-  outpw(CRTC_ADDR, 0xe317);\r
-\r
-  sx=320,   sy=240;\r
-  tx=20,    ty=15;\r
-  cx1=0,    cy1=0;\r
-  cx2=sx-1, cy2=sy-1;\r
-}\r
-\r
-void Set360x240()\r
-{ char in_byte;\r
-\r
-  DriverDesc = "360x240 (ModeX, planar)";\r
-\r
-  outpw(SEQU_ADDR, 0x0604);\r
-  memset((unsigned char *)0xA0000 + __djgpp_conventional_base,0,0x10000); // for clean mode switch\r
-  outpw(SEQU_ADDR, 0x100);\r
-  outp(MISC_OUTPUT, 0xe7);\r
-  outpw(SEQU_ADDR, 0x300);\r
-  outp(CRTC_ADDR, 0x11);\r
-  in_byte = inp((CRTC_ADDR+1));\r
-  in_byte = (in_byte && 0x7f);\r
-  outp((CRTC_ADDR+1), in_byte);\r
-  outpw(CRTC_ADDR, 0x6b00);\r
-  outpw(CRTC_ADDR, 0x5901);\r
-  outpw(CRTC_ADDR, 0x5a02);\r
-  outpw(CRTC_ADDR, 0x8e03);\r
-  outpw(CRTC_ADDR, 0x5e04);\r
-  outpw(CRTC_ADDR, 0x8a05);\r
-  outpw(CRTC_ADDR, 0x0d06);\r
-  outpw(CRTC_ADDR, 0x3e07);\r
-  outpw(CRTC_ADDR, 0x4109);\r
-  outpw(CRTC_ADDR, 0xea10);\r
-  outpw(CRTC_ADDR, 0xac11);\r
-  outpw(CRTC_ADDR, 0xdf12);\r
-  outpw(CRTC_ADDR, 0x2d13);\r
-  outpw(CRTC_ADDR, 0x0014);\r
-  outpw(CRTC_ADDR, 0xe715);\r
-  outpw(CRTC_ADDR, 0x0616);\r
-  outpw(CRTC_ADDR, 0xe317);\r
-\r
-  sx=360,   sy=240;\r
-  tx=23,    ty=15;\r
-  cx1=0,    cy1=0;\r
-  cx2=sx-1, cy2=sy-1;\r
-}\r
-\r
-void InitModeX(int xres, int yres)\r
-{\r
-  int found;\r
-\r
-  BIOS_SetVideoMode(0x13);\r
-\r
-  found=0;\r
-  if (xres==320 && yres==240) { Set320x240(); found=1; }\r
-  if (xres==360 && yres==240) { Set360x240(); found=1; }\r
-  if (xres==256 && yres==256) { Set256x256(); found=1; }\r
-\r
-  if (!found)\r
-  {\r
-    // resolution not found, bitch...\r
-    err("Internal error: unknown ModeX resolution");\r
-  }\r
-  // resolution found..\r
-  else\r
-  {\r
-    ShowPage=LFB_ShowPage;\r
-    if (xres != 256 && yres != 256)\r
-      ShowPage=ModeXShowPage;\r
-    ShutdownVideo=ModeXShutdown;\r
-  }\r
-\r
-  video=(byte *) 0xA0000 + __djgpp_conventional_base;\r
-  vscreen=(byte *) valloc(sx*sy, "vscreen", 0);\r
-  screen=vscreen;\r
-  memset(screen, 0, sx*sy);\r
-}\r
-\r
-// ================================= VESA ====================================\r
-\r
-int VESAShutdown(int i)\r
-{\r
-  if (i) BIOS_SetVideoMode(0x3);\r
-  free(screen);\r
-  return 0;\r
-}\r
-\r
-void VESASetBank(int bank)\r
-{\r
-  REGISTERS r;\r
-  SET_AX(r, 0x4f05);\r
-  SET_BX(r, 0);\r
-  SET_DX(r, bank);\r
-  INTERRUPT(0x10, r);\r
-}\r
-\r
-int VESAShowPage(void)\r
-{\r
-  byte *s,*d;\r
-  int y,bytes,bank;\r
-  int span;\r
-\r
-  if (key[SCAN_ALT] && key[SCAN_X]) err("Exiting: ALT-X pressed.");\r
-  RenderGUI();\r
-  cpubyte=PFLIP;\r
-\r
-  s=screen;\r
-  d=video;\r
-\r
-  bank=0;\r
-  bytes=65536;\r
-  VESASetBank(bank++);\r
-\r
-  // *** no padding exists now, can be rewritten smaller/faster - aen\r
-  for (y=sy; y; y--)\r
-  {\r
-    if (bytes >= sx)\r
-    { memcpy(d,s,sx);\r
-      bytes-=sx;\r
-      s+=sx;\r
-      d+=sx;\r
-    }\r
-    else\r
-    { memcpy(d,s,bytes);\r
-      s+=bytes;\r
-      span=sx-bytes;\r
-\r
-      VESASetBank(bank++);\r
-      d=video;\r
-      bytes=65536;\r
-\r
-      memcpy(d,s,span);\r
-      bytes-=span;\r
-      s+=span;\r
-      d+=span;\r
-    }\r
-  }\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-void Set640x480()\r
-{\r
-  REGISTERS r;\r
-\r
-  DriverDesc = "640x480 (VESA, Banked)";\r
-\r
-  SET_BX(r, 0x0101);\r
-  SET_AX(r, 0x4f02);\r
-  INTERRUPT(0x10, r);\r
-\r
-  sx=640;  sy=480;\r
-  tx=40;   ty=30;\r
-  cx1=0;   cy1=0;\r
-  cx2=sx-1;cy2=sy-1;\r
-}\r
-\r
-void InitVESA(int xres, int yres)\r
-{\r
-  int found;\r
-\r
-  found=0;\r
-  if (xres==640 && yres==480) { Set640x480(); found=1; }\r
-\r
-  if (!found)\r
-    err("Internal error: unknown VESA resolution");\r
-\r
-  // setup driver functions\r
-  ShowPage = VESAShowPage; // reassign for banked VESA video blt\r
-  ShutdownVideo = VESAShutdown;\r
-\r
-  video=(byte *) 0xA0000 + __djgpp_conventional_base;\r
-  vscreen=(byte *) valloc(sx*sy, "vscreen", 0);\r
-  screen=vscreen;\r
-  memset(screen, 0, sx*sy);\r
-}\r
-\r
-// ============================================================================\r
-\r
-int InitVideo(int xres, int yres)\r
-{\r
-  int found;\r
-\r
-  found=0;\r
-  if (xres==320 && yres==200) { InitMode13h(); found=1; }\r
-  if (xres==320 && yres==240) { InitModeX(xres,yres); found=1; }\r
-  if (xres==360 && yres==240) { InitModeX(xres,yres); found=1; }\r
-  if (xres==256 && yres==256) { InitModeX(xres,yres); found=1; }\r
-  if (xres==640 && yres==480) { InitVESA(xres,yres); found=1; }\r
-\r
-  if (found)\r
-  {\r
-    tsx=xres; tsy=yres;\r
-    Logp("Sys: Initializing %s.", DriverDesc);\r
-    InitMouse(tsx, tsy);\r
-  }\r
-  else\r
-  {\r
-    InitMode13h();\r
-    tsx=320; tsy=200;\r
-    Logp("Unknown video mode %dx%d; defaulting to mode 13h.", xres, yres);\r
-    InitMouse(tsx, tsy);\r
-  }\r
-  LogDone();\r
-  return found;\r
-}\r
diff --git a/16/v2/source/verge/ENGINE/MODEX.C b/16/v2/source/verge/ENGINE/MODEX.C
deleted file mode 100755 (executable)
index 6247f8e..0000000
+++ /dev/null
@@ -1,1055 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-\r
-#include <dpmi.h>\r
-#include <sys\nearptr.h>\r
-#include "verge.h"\r
-\r
-// ================================= Data ====================================\r
-\r
-#define SEQU_ADDR               0x3c4\r
-#define CRTC_ADDR               0x3d4\r
-#define MISC_OUTPUT             0x3c2\r
-\r
-byte *screenbase;                   // ptr to A000:0000\r
-int endcol,nextl;                   // end column number thingy | next line\r
-int winofs;\r
-\r
-// ================================= Code ====================================\r
-\r
-void ModeXSetMode(int mode)\r
-{\r
-  REGISTERS r;\r
-  SET_AX(r, mode);\r
-  INTERRUPT(0x10, r);\r
-}\r
-\r
-void plane(byte p)\r
-{\r
-  int hi=1<<p;\r
-  outpw(0x03c4, (hi<<8)|0x02);\r
-}\r
-\r
-int ModeXShutdown()\r
-{\r
-  ModeXSetMode(0x3);\r
-  vfree(screen);\r
-  return 0;\r
-}\r
-\r
-void clearScreen()\r
-{\r
-   // set write to ALL PLANES simultaneously for extra-quick clears.\r
-   asm("movw $0x3c4, %%dx              \n\t"\r
-       "movw $0x0f02, %%ax             \n\t"\r
-       "outw %%ax, %%dx                \n\t"\r
-       "movl _screenbase, %%edi        \n\t"\r
-       "movl $0, %%eax                 \n\t"\r
-       "movl $11264, %%ecx             \n\t"\r
-       "rep                            \n\t"\r
-       "stosl                          \n\t"\r
-       :\r
-       :\r
-       : "eax","edx","edi","ecx","cc" );\r
-}\r
-\r
-void SetView(word offset)\r
-{\r
-  while (inportb(0x3da) & 1);\r
-\r
-  _disable();\r
-\r
-  outportb(0x3d4, (offset >> 8) | 0x0c);\r
-  outportb(0x3d4, (offset & 0xff) | 0x0d);\r
-\r
-  _enable();\r
-}\r
-\r
-int ModeXShowPage()\r
-{\r
-  byte *s,*d;\r
-  int x,y,k;\r
-  int sx2;\r
-  int b;\r
-\r
-  RenderGUI();\r
-  cpubyte=PFLIP;\r
-\r
-  //s=screen+(16*tsx)+16;\r
-  b=(16*tsx)+16;\r
-  d=screenbase;\r
-  sx2=sx>>2;\r
-\r
-  //while (!(inp(986) & 8));\r
-\r
-  for (y=0; y<sy; ++y,d+=sx2)\r
-  {\r
-    s=screen+(y*tsx)+b;\r
-    for (k=0; k<4; k++,s-=sx)\r
-    {\r
-      plane(k);\r
-      for (x=0; x<sx2; x++,s+=4)\r
-        d[x]=s[k];\r
-    }\r
-  }\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int ModeXCopySprite(int x, int y, int width, int height, byte *src)\r
-{\r
-  cpubyte=RENDER;\r
-\r
-  asm("movl %3, %%edx                   \n\t"\r
-      "movl %4, %%esi                   \n\t"\r
-"csl0:                                  \n\t"\r
-      "movl %1, %%eax                   \n\t"\r
-      "imul _tsx, %%eax                 \n\t"\r
-      "addl %0, %%eax                   \n\t"\r
-      "addl _screen, %%eax              \n\t"\r
-      "movl %%eax, %%edi                \n\t"\r
-      "movl %2, %%ecx                   \n\t"\r
-      "shrl $2, %%ecx                   \n\t"\r
-      "repz                             \n\t"\r
-      "movsl                            \n\t"\r
-      "incl %1                          \n\t"\r
-      "decl %%edx                       \n\t"\r
-      "jnz csl0                         \n\t"\r
-      :\r
-      : "m" (x), "m" (y), "m" (width), "m" (height), "m" (src)\r
-      : "eax","edx","esi","edi","ecx","cc" );\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int ModeXTCopySprite(int x, int y, int width, int height, byte *src)\r
-{\r
-  cpubyte=RENDER;\r
-\r
-  asm("movl %3, %%ecx                   \n\t"\r
-      "movl %4, %%esi                   \n\t"\r
-"tcsl0:                                 \n\t"\r
-      "movl %1, %%eax                   \n\t"\r
-      "imul _tsx, %%eax                 \n\t"\r
-      "addl %0, %%eax                   \n\t"\r
-      "addl _screen, %%eax              \n\t"\r
-      "movl %%eax, %%edi                \n\t"\r
-      "movl %2, %%edx                   \n\t"\r
-"drawloop:                              \n\t"\r
-      "lodsb                            \n\t"\r
-      "orb %%al, %%al                   \n\t"\r
-      "jz nodraw                        \n\t"\r
-      "stosb                            \n\t"\r
-      "decl %%edx                       \n\t"\r
-      "jz endline                       \n\t"\r
-      "jmp drawloop                     \n\t"\r
-"nodraw:                                \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "decl %%edx                       \n\t"\r
-      "jnz drawloop                     \n\t"\r
-"endline:                               \n\t"\r
-      "incl %1                          \n\t"\r
-      "decl %%ecx                       \n\t"\r
-      "jnz tcsl0                        \n\t"\r
-      :\r
-      : "m" (x), "m" (y), "m" (width), "m" (height), "m" (src)\r
-      : "eax","edx","esi","edi","ecx","cc" );\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int ModeXCopyTile(int x, int y, byte *spr)\r
-{\r
-  cpubyte=RENDER;\r
-\r
-  asm("movl $16, %%ecx                  \n\t"\r
-      "movl %2, %%esi                   \n\t"\r
-      "movl %1, %%edi                   \n\t"\r
-      "imul _tsx, %%edi                 \n\t"\r
-      "addl %0, %%edi                   \n\t"\r
-      "addl _screen, %%edi              \n\t"\r
-" ctl0:                                 \n\t"\r
-      "movl (%%edi), %%eax              \n\t"\r
-      "andl $0, %%eax                   \n\t"\r
-      "orl  (%%esi), %%eax              \n\t"\r
-      "movl %%eax, (%%edi)              \n\t"\r
-      "movl 4(%%edi), %%eax             \n\t"\r
-      "andl $0, %%eax                   \n\t"\r
-      "orl  4(%%esi), %%eax             \n\t"\r
-      "movl %%eax, 4(%%edi)             \n\t"\r
-      "movl 8(%%edi), %%eax             \n\t"\r
-      "andl $0, %%eax                   \n\t"\r
-      "orl  8(%%esi), %%eax             \n\t"\r
-      "movl %%eax, 8(%%edi)             \n\t"\r
-      "movl 12(%%edi), %%eax            \n\t"\r
-      "andl $0, %%eax                   \n\t"\r
-      "orl  12(%%esi), %%eax            \n\t"\r
-      "movl %%eax, 12(%%edi)            \n\t"\r
-      "addl $16, %%esi                  \n\t"\r
-      "addl _tsx, %%edi                 \n\t"\r
-      "decl %%ecx                       \n\t"\r
-      "jnz ctl0                         \n\t"\r
-      :\r
-      : "m" (x), "m" (y), "m" (spr)\r
-      : "eax","ecx","esi","edi","cc" );\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int ModeXTCopyTile(int x, int y, byte *spr, byte *matte)\r
-{\r
-  cpubyte=RENDER;\r
-  asm("movl $16, %%ecx                  \n\t"\r
-      "movl %2, %%esi                   \n\t"\r
-      "movl %1, %%edi                   \n\t"\r
-      "imul _tsx, %%edi                 \n\t"\r
-      "addl %0, %%edi                   \n\t"\r
-      "addl _screen, %%edi              \n\t"\r
-      "movl %3, %%edx                   \n\t"\r
-"tctl0:                                 \n\t"\r
-      "movl (%%edi), %%eax              \n\t"\r
-      "andl (%%edx), %%eax              \n\t"\r
-      "orl  (%%esi), %%eax              \n\t"\r
-      "movl %%eax, (%%edi)              \n\t"\r
-      "movl 4(%%edi), %%eax             \n\t"\r
-      "andl 4(%%edx), %%eax             \n\t"\r
-      "orl  4(%%esi), %%eax             \n\t"\r
-      "movl %%eax, 4(%%edi)             \n\t"\r
-      "movl 8(%%edi), %%eax             \n\t"\r
-      "andl 8(%%edx), %%eax             \n\t"\r
-      "orl  8(%%esi), %%eax             \n\t"\r
-      "movl %%eax, 8(%%edi)             \n\t"\r
-      "movl 12(%%edi), %%eax            \n\t"\r
-      "andl 12(%%edx), %%eax            \n\t"\r
-      "orl  12(%%esi), %%eax            \n\t"\r
-      "movl %%eax, 12(%%edi)            \n\t"\r
-      "addl $16, %%esi                  \n\t"\r
-      "addl _tsx, %%edi                 \n\t"\r
-      "addl $16, %%edx                  \n\t"\r
-      "decl %%ecx                       \n\t"\r
-      "jnz tctl0                        \n\t"\r
-      :\r
-      : "m" (x), "m" (y), "m" (spr), "m" (matte)\r
-      : "eax","ecx","edx","esi","edi","cc" );\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int ModeXCCopySprite(int x,int y,int width,int height,byte *src)\r
-{\r
-  byte *s,*d;\r
-  int xl,yl,xs,ys;\r
-  int cx1=0, cy1=0, cx2=tsx-1, cy2=tsy-1;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  xl=width;\r
-  yl=height;\r
-  xs=ys=0;\r
-\r
-  if (x>cx2 || y>cy2 || x+xl<cx1 || y+yl<cy1)\r
-    return 0;\r
-\r
-  if (x+xl > cx2) xl=cx2-x+1;\r
-  if (y+yl > cy2) yl=cy2-y+1;\r
-\r
-  if (x<cx1) { xs=cx1-x; xl-=xs; x=cx1; }\r
-  if (y<cy1) { ys=cy1-y; yl-=ys; y=cy1; }\r
-\r
-  s=src;\r
-  if (xs+ys) s+=(ys*width)+xs;\r
-  d=screen+(y*tsx)+x;\r
-\r
-  for (; yl; yl--)\r
-  {\r
-    memcpy(d,s,xl);\r
-    s+=width;\r
-    d+=tsx;\r
-  }\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int ModeXTCCopySprite(int x,int y,int width,int height,byte *src)\r
-{\r
-  byte *s,*d,c;\r
-  int xl,yl,xs,ys;\r
-  int cx1=0, cy1=0, cx2=tsx-1, cy2=tsy-1;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  xl=width;\r
-  yl=height;\r
-  xs=ys=0;\r
-\r
-  if (x>cx2 || y>cy2 || x+xl<cx1 || y+yl<cy1)\r
-    return 0;\r
-\r
-  if (x+xl > cx2) xl=cx2-x+1;\r
-  if (y+yl > cy2) yl=cy2-y+1;\r
-\r
-  if (x<cx1) { xs=cx1-x; xl-=xs; x=cx1; }\r
-  if (y<cy1) { ys=cy1-y; yl-=ys; y=cy1; }\r
-\r
-  s=src;\r
-  if (xs+ys) s+=(ys*width)+xs;\r
-  d=screen+(y*tsx)+x;\r
-\r
-  for (; yl; yl--)\r
-  {\r
-    for (x=0; x<xl; x++)\r
-    {\r
-      c=s[x];\r
-      if (c)\r
-        d[x]=c;\r
-    }\r
-    s+=width;\r
-    d+=tsx;\r
-  }\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int ModeXScaleSprite(int x, int y, int w, int h, int tw, int th, byte *s)\r
-{ int i,j,xm,ym,xd,yd,sx,sy=0,xs,ys,dys=0;\r
-  unsigned char *d;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  if (!tw || !th) return 0;\r
-  tw += sgn(tw); th += sgn(th);\r
-  xm = abs(tw); ym = abs(th);\r
-  xs = (w<<16)/xm; ys = (h<<16)/ym;\r
-  xd = sgn(tw); yd = sgn(th);\r
-\r
-  if (tw>0 && th>0) dys=tsx-xm;\r
-  else if (tw>0 && th<0) dys=(0-tsx)-xm;\r
-  else if (tw<0 && th>0) dys=tsx+xm;\r
-  else if (tw<0 && th<0) dys=(0-tsx)+xm;\r
-\r
-  d = screen+(y*tsx)+x;\r
-  for (i=0;i<ym;++i) {\r
-    sx=0;\r
-    for (j=0;j<xm;++j) {\r
-      *d=s[(sx>>16)];\r
-      d+=xd;\r
-      sx+=xs;\r
-      }\r
-    d+=dys;\r
-    sy+=ys;\r
-    s+=(sy>>16)*w;\r
-    sy&=0xffff;\r
-    }\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int ModeXRenderMAPLine(int x, int y, int yofs, word *map)\r
-{\r
-  cpubyte=RENDER;\r
-  asm("movl %1, %%edi                  \n\t"\r
-      "imul _tsx, %%edi                \n\t"\r
-      "addl %0, %%edi                  \n\t"\r
-      "addl _screen, %%edi             \n\t"\r
-      "movl _tx, %%ebx                 \n\t"\r
-      "incl %%ebx                      \n\t"\r
-      "movl %3, %%ecx                  \n\t"\r
-"tileloop:                             \n\t"\r
-      "movw (%%ecx), %%ax              \n\t"\r
-      "movzwl %%ax, %%edx              \n\t"\r
-      "shll $1, %%edx                  \n\t"\r
-      "addl _tileidx, %%edx            \n\t"\r
-      "movw (%%edx), %%ax              \n\t"\r
-      "movzwl %%ax, %%esi              \n\t"\r
-      "shll $8, %%esi                  \n\t"\r
-      "addl _vsp, %%esi                \n\t"\r
-      "movl %2, %%eax                  \n\t"\r
-      "shll $4, %%eax                  \n\t"\r
-      "addl %%eax, %%esi               \n\t"\r
-      "movl (%%esi), %%eax             \n\t"\r
-      "movl %%eax, (%%edi)             \n\t"\r
-      "movl 4(%%esi), %%eax            \n\t"\r
-      "movl %%eax, 4(%%edi)            \n\t"\r
-      "movl 8(%%esi), %%eax            \n\t"\r
-      "movl %%eax, 8(%%edi)            \n\t"\r
-      "movl 12(%%esi), %%eax           \n\t"\r
-      "movl %%eax, 12(%%edi)           \n\t"\r
-      "addl $16, %%edi                 \n\t"\r
-      "addl $2, %%ecx                  \n\t"\r
-      "decl %%ebx                      \n\t"\r
-      "jnz tileloop                    \n\t"\r
-      :\r
-      : "m" (x), "m" (y), "m" (yofs), "m" (map)\r
-      : "eax","ebx","ecx","edx","esi","edi","cc" );\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int ModeXTRenderMAPLine(int x, int y, int yofs, word *map)\r
-{\r
-  cpubyte=RENDER;\r
-  asm("movl %1, %%edi                  \n\t"\r
-      "imul _tsx, %%edi                \n\t"\r
-      "addl %0, %%edi                  \n\t"\r
-      "addl _screen, %%edi             \n\t"\r
-      "movl _tx, %%ebx                 \n\t"\r
-      "incl %%ebx                      \n\t"\r
-      "movl %3, %%ecx                  \n\t"\r
-"tileloop1:                            \n\t"\r
-      "movw (%%ecx), %%ax              \n\t"\r
-      "movzwl %%ax, %%edx              \n\t"\r
-      "shll $1, %%edx                  \n\t"\r
-      "addl _tileidx, %%edx            \n\t"\r
-      "movw (%%edx), %%ax              \n\t"\r
-      "orw %%ax, %%ax                  \n\t"\r
-      "jz next1                        \n\t"\r
-      "movzwl %%ax, %%esi              \n\t"\r
-      "shll $8, %%esi                  \n\t"\r
-      "movl %%esi, %%edx               \n\t"\r
-      "addl _vspmask, %%edx            \n\t"\r
-      "addl _vsp, %%esi                \n\t"\r
-      "movl %2, %%eax                  \n\t"\r
-      "shll $4, %%eax                  \n\t"\r
-      "addl %%eax, %%esi               \n\t"\r
-      "addl %%eax, %%edx               \n\t"\r
-      "movl (%%edi), %%eax             \n\t"\r
-      "andl (%%edx), %%eax             \n\t"\r
-      "orl  (%%esi), %%eax             \n\t"\r
-      "movl %%eax, (%%edi)             \n\t"\r
-      "movl 4(%%edi), %%eax            \n\t"\r
-      "andl 4(%%edx), %%eax            \n\t"\r
-      "orl  4(%%esi), %%eax            \n\t"\r
-      "movl %%eax, 4(%%edi)            \n\t"\r
-      "movl 8(%%edi), %%eax            \n\t"\r
-      "andl 8(%%edx), %%eax            \n\t"\r
-      "orl  8(%%esi), %%eax            \n\t"\r
-      "movl %%eax, 8(%%edi)            \n\t"\r
-      "movl 12(%%edi), %%eax           \n\t"\r
-      "andl 12(%%edx), %%eax           \n\t"\r
-      "orl  12(%%esi), %%eax           \n\t"\r
-      "movl %%eax, 12(%%edi)           \n\t"\r
-"next1:                                \n\t"\r
-      "addl $16, %%edi                 \n\t"\r
-      "addl $2, %%ecx                  \n\t"\r
-      "decl %%ebx                      \n\t"\r
-      "jnz tileloop1                   \n\t"\r
-      :\r
-      : "m" (x), "m" (y), "m" (yofs), "m" (map)\r
-      : "eax","ebx","ecx","edx","esi","edi","cc" );\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int ModeXColorField(int x, int y, byte c)\r
-{\r
-  cpubyte=RENDER;\r
-  asm("movl %1, %%eax                   \n\t"\r
-      "imul _tsx, %%eax                 \n\t"\r
-      "addl %0, %%eax                   \n\t"\r
-      "addl _screen, %%eax              \n\t"\r
-      "movl %%eax, %%edi                \n\t"\r
-      "movl $8, %%ecx                   \n\t"\r
-      "movb %2, %%al                    \n\t"\r
-"lineloop1:                             \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "addl _sx, %%edi                  \n\t"\r
-      "addl $16, %%edi                  \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "stosb                            \n\t"\r
-      "addl _sx, %%edi                  \n\t"\r
-      "addl $16, %%edi                  \n\t"\r
-      "decl %%ecx                       \n\t"\r
-      "jnz lineloop1                    \n\t"\r
-      :\r
-      : "m" (x), "m" (y), "m" (c)\r
-      : "eax","edi","ecx","cc" );\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int ModeXClearScreen()\r
-{\r
-  cpubyte=RENDER;\r
-  memset(screen+(tsx*16)+16,0,(tsx*sy));\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int ModeXPutPixel(int x, int y, int color)\r
-{\r
-  cpubyte=RENDER;\r
-\r
-  if (x<cx1 || y<cy1 || x>cx2 || y>cy2)\r
-  {\r
-    cpubyte=ETC;\r
-    return 0;\r
-  }\r
-\r
-  x+=16;\r
-  y+=16;\r
-\r
-  screen[(y*tsx)+x]=color;\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int ModeXGetPixel(int x, int y)\r
-{\r
-  cpubyte=RENDER;\r
-\r
-  if (x<cx1 || y<cy1 || x>cx2 || y>cy2)\r
-  {\r
-    cpubyte=ETC;\r
-    return 0;\r
-  }\r
-\r
-  x+=16;\r
-  y+=16;\r
-\r
-  cpubyte=ETC;\r
-  return screen[(y*tsx)+x];\r
-}\r
-\r
-int ModeXHLine(int x, int y, int x2, int color)\r
-{ byte *d;\r
-  int width;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  // swap?\r
-  if (x2<x) { int t=x2; x=x2; x2=t; }\r
-\r
-  width=x2-x+1;\r
-  if (x>cx2 || y>cy2 || x+width<cx1 || y<cy1)\r
-    return 0;\r
-\r
-  if (x+width > cx2) width=cx2-x+1;\r
-  if (x<cx1) { width-=(cx1-x); x=cx1; }\r
-\r
-  x+=16;\r
-  y+=16;\r
-  x2+=16;\r
-\r
-  d=screen+(y*tsx)+x;\r
-  memset(d,color,width);\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int ModeXVLine(int x, int y, int y2, int color)\r
-{ byte *d;\r
-  int height;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  // swap?\r
-  if (y2<y) { int t=y2; x=y2; y2=t; }\r
-\r
-  height=y2-y+1;\r
-  if (x>cx2 || y>cy2 || x<cx1 || y+height<cy1)\r
-  {\r
-    cpubyte=ETC;\r
-    return 0;\r
-  }\r
-\r
-  if (y+height > cy2) height=cy2-y+1;\r
-  if (y<cy1) { height-=(cy1-y); y=cy1; }\r
-\r
-  x+=16;\r
-  y+=16;\r
-  y2+=16;\r
-\r
-  d=screen+(y*tsx)+x;\r
-  for (; height; height--)\r
-  {\r
-    *d=color;\r
-    d+=tsx;\r
-  }\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int ModeXLine(int x1, int y1, int x2, int y2, int color)\r
-{\r
-  short i,xc,yc,er,n,m,xi,yi,xcxi,ycyi,xcyi;\r
-  unsigned dcy,dcx;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  // check to see if the line is completly clipped off\r
-  if ((x1<cx1 && x2<cx1) || (x1>cx2 && x2>cx2)\r
-  || (y1<cy1 && y2<cy1) || (y1>cy2 && y2>cy2))\r
-  {\r
-    cpubyte=ETC;\r
-    return 0;\r
-  }\r
-\r
-  if (x1>x2)\r
-  {\r
-    i=x1; x1=x2; x2=i;\r
-    i=y1; y1=y2; y2=i;\r
-  }\r
-\r
-  // clip the left side\r
-  if (x1<cx1)\r
-  { int myy=(y2-y1);\r
-    int mxx=(x2-x1),b;\r
-    if (!mxx)\r
-    {\r
-      cpubyte=ETC;\r
-      return 0;\r
-    }\r
-    if (myy)\r
-    {\r
-      b=y1-(y2-y1)*x1/mxx;\r
-      y1=myy*cx1/mxx+b;\r
-      x1=cx1;\r
-    }\r
-    else x1=cx1;\r
-  }\r
-\r
-  // clip the right side\r
-  if (x2>cx2)\r
-  { int myy=(y2-y1);\r
-    int mxx=(x2-x1),b;\r
-    if (!mxx)\r
-    {\r
-      cpubyte=ETC;\r
-      return 0;\r
-    }\r
-    if (myy)\r
-    {\r
-      b=y1-(y2-y1)*x1/mxx;\r
-      y2=myy*cx2/mxx+b;\r
-      x2=cx2;\r
-    }\r
-    else x2=cx2;\r
-  }\r
-\r
-  if (y1>y2)\r
-  {\r
-    i=x1; x1=x2; x2=i;\r
-    i=y1; y1=y2; y2=i;\r
-  }\r
-\r
-  // clip the bottom\r
-  if (y2>cy2)\r
-  { int mxx=(x2-x1);\r
-    int myy=(y2-y1),b;\r
-    if (!myy)\r
-    {\r
-      cpubyte=ETC;\r
-      return 0;\r
-    }\r
-    if (mxx)\r
-    {\r
-      b=y1-(y2-y1)*x1/mxx;\r
-      x2=(cy2-b)*mxx/myy;\r
-      y2=cy2;\r
-    }\r
-    else y2=cy2;\r
-  }\r
-\r
-  // clip the top\r
-  if (y1<cy1)\r
-  { int mxx=(x2-x1);\r
-    int myy=(y2-y1),b;\r
-    if (!myy)\r
-    {\r
-      cpubyte=ETC;\r
-      return 0;\r
-    }\r
-    if (mxx)\r
-    {\r
-      b=y1-(y2-y1)*x1/mxx;\r
-      x1=(cy1-b)*mxx/myy;\r
-      y1=cy1;\r
-    }\r
-    else y1=cy1;\r
-  }\r
-\r
-  // ???\r
-  // see if it got cliped into the box, out out\r
-  if (x1<cx1 || x2<cx1 || x1>cx2 || x2>cx2 || y1<cy1 || y2 <cy1 || y1>cy2 || y2>cy2)\r
-  {\r
-    cpubyte=ETC;\r
-    return 0;\r
-  }\r
-\r
-  if (x1>x2)\r
-  { xc=x2; xi=x1; }\r
-  else { xi=x2; xc=x1; }\r
-\r
-  x1+=16;y1+=16; // aen; adjust these here??\r
-  x2+=16;y2+=16;\r
-\r
-  // assume y1<=y2 from above swap operation\r
-  yi=y2; yc=y1;\r
-\r
-  dcx=x1; dcy=y1;\r
-  xc=(x2-x1); yc=(y2-y1);\r
-  if (xc<0) xi=-1; else xi=1;\r
-  if (yc<0) yi=-1; else yi=1;\r
-  n=abs(xc); m=abs(yc);\r
-  ycyi=abs(2*yc*xi);\r
-  er=0;\r
-\r
-  if (n>m)\r
-  {\r
-    xcxi=abs(2*xc*xi);\r
-    for (i=0;i<=n;i++)\r
-    {\r
-      screen[(dcy*tsx)+dcx]=color;\r
-      if (er>0)\r
-      { dcy+=yi;\r
-        er-=xcxi;\r
-      }\r
-      er+=ycyi;\r
-      dcx+=xi;\r
-    }\r
-  }\r
-  else\r
-  {\r
-    xcyi=abs(2*xc*yi);\r
-    for (i=0;i<=m;i++)\r
-    {\r
-      screen[(dcy*tsx)+dcx]=color;\r
-      if (er>0)\r
-      { dcx+=xi;\r
-        er-=ycyi;\r
-      }\r
-      er+=xcyi;\r
-      dcy+=yi;\r
-    }\r
-  }\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int ModeXCircle(int x, int y, int radius, int color)\r
-{ int cx=0;\r
-  int cy=radius;\r
-  int df=1-radius;\r
-  int d_e=3;\r
-  int d_se=-2*radius+5;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  do {\r
-    ModeXPutPixel(x+cx,y+cy,color);\r
-    if (cx) ModeXPutPixel(x-cx,y+cy,color);\r
-    if (cy) ModeXPutPixel(x+cx,y-cy,color);\r
-    if ((cx) && (cy)) ModeXPutPixel(x-cx,y-cy,color);\r
-\r
-    if (cx != cy)\r
-    {\r
-      ModeXPutPixel(x+cy,y+cx,color);\r
-      if (cx) ModeXPutPixel(x+cy,y-cx,color);\r
-      if (cy) ModeXPutPixel(x-cy,y+cx,color);\r
-      if (cx && cy) ModeXPutPixel(x-cy,y-cx,color);\r
-    }\r
-\r
-    if (df<0)\r
-    {\r
-      df+=d_e;\r
-      d_e+=2;\r
-      d_se+=2;\r
-    }\r
-    else\r
-    {\r
-      df+=d_se;\r
-      d_e+=2;\r
-      d_se+=4;\r
-      cy--;\r
-    }\r
-\r
-    cx++;\r
-\r
-  } while (cx <= cy);\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int ModeXCircleFill(int x, int y, int radius, int color)\r
-{ int cx=0;\r
-  int cy=radius;\r
-  int df=1-radius;\r
-  int d_e=3;\r
-  int d_se=-2*radius+5;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  do {\r
-    ModeXHLine(x-cy,y-cx,x+cy,color);\r
-    if (cx) ModeXHLine(x-cy,y+cx,x+cy,color);\r
-\r
-    if (df<0)\r
-    {\r
-      df+=d_e;\r
-      d_e+=2;\r
-      d_se+=2;\r
-    }\r
-    else\r
-    {\r
-      if (cx != cy)\r
-      {\r
-        ModeXHLine(x-cx,y-cy,x+cx,color);\r
-        if (cy) ModeXHLine(x-cx,y+cy,x+cx,color);\r
-      }\r
-\r
-      df+=d_se;\r
-      d_e+=2;\r
-      d_se+=4;\r
-      cy--;\r
-    }\r
-\r
-    cx++;\r
-\r
-  } while (cx <= cy);\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int ModeXRect(int x, int y, int x2, int y2, int color)\r
-{\r
-  ModeXHLine(x,y,x2,color);\r
-  ModeXHLine(x,y2,x2,color);\r
-  ModeXVLine(x,y+1,y2-1,color);\r
-  ModeXVLine(x2,y+1,y2-1,color);\r
-  return 0;\r
-}\r
-\r
-int ModeXRectFill(int x, int y, int x2, int y2, int color)\r
-{\r
-  cpubyte=RENDER;\r
-\r
-  if (y2<y) { int t=y2; y=y2; y2=t; }\r
-\r
-  for (; y<=y2; y++)\r
-    ModeXHLine(x,y,x2,color);\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-void Set256x256()\r
-// -- ric: 15/Jun/98 --\r
-// My first attempt at graphics code :)\r
-{\r
-  char in_byte;\r
-\r
-  outportw(SEQU_ADDR, 0x0100);\r
-  outportb(CRTC_ADDR, 0x11);\r
-  in_byte = inportb((CRTC_ADDR+1));\r
-  in_byte = (in_byte && 0x7f);\r
-  outportb((CRTC_ADDR+1), in_byte);\r
-  outportw(SEQU_ADDR, 0x0604);\r
-  outportb(MISC_OUTPUT, 0xe3);\r
-\r
-  outportb(CRTC_ADDR, 0x0); outportb(CRTC_ADDR+1, 0x5f);\r
-  outportb(CRTC_ADDR, 0x1); outportb(CRTC_ADDR+1, 0x3f);\r
-  outportb(CRTC_ADDR, 0x2); outportb(CRTC_ADDR+1, 0x40);\r
-  outportb(CRTC_ADDR, 0x3); outportb(CRTC_ADDR+1, 0x82);\r
-  outportb(CRTC_ADDR, 0x4); outportb(CRTC_ADDR+1, 0x4a);\r
-  outportb(CRTC_ADDR, 0x5); outportb(CRTC_ADDR+1, 0x9a);\r
-  outportb(CRTC_ADDR, 0x6); outportb(CRTC_ADDR+1, 0x23);\r
-  outportb(CRTC_ADDR, 0x7); outportb(CRTC_ADDR+1, 0xb2);\r
-  outportb(CRTC_ADDR, 0x8); outportb(CRTC_ADDR+1, 0x0);\r
-  outportb(CRTC_ADDR, 0x9); outportb(CRTC_ADDR+1, 0x61);\r
-  outportb(CRTC_ADDR, 0x10); outportb(CRTC_ADDR+1, 0xa);\r
-  outportb(CRTC_ADDR, 0x11); outportb(CRTC_ADDR+1, 0xac);\r
-  outportb(CRTC_ADDR, 0x12); outportb(CRTC_ADDR+1, 0xff);\r
-  outportb(CRTC_ADDR, 0x14); outportb(CRTC_ADDR+1, 0x0);\r
-  outportb(CRTC_ADDR, 0x15); outportb(CRTC_ADDR+1, 0x7);\r
-  outportb(CRTC_ADDR, 0x16); outportb(CRTC_ADDR+1, 0x1a);\r
-  outportb(CRTC_ADDR, 0x17); outportb(CRTC_ADDR+1, 0xe3);\r
-  outportb(SEQU_ADDR, 0x1);  outportw(SEQU_ADDR+1, 0x1);\r
-  outportb(0x3ce, 0x5); outportb(0x3cf, 0x40);\r
-  outportb(0x3ce, 0x6); outportb(0x3cf, 0x5);\r
-  inportb(0x3DA);\r
-  outportb(0x3C0, 0x1 | 0x20);\r
-  outportb(0x3C0, 0x41);\r
-  outportb(CRTC_ADDR, 0x13);\r
-  outportb(CRTC_ADDR+1, 0x20);\r
-\r
-  outportw(SEQU_ADDR, 0x0300);\r
-\r
-  sx=256;  sy=256;\r
-  tsx=288; tsy=288;\r
-  tx=17;   ty=16;\r
-  cx1=0;   cy1=0;\r
-  cx2=sx-1;cy2=sy-1;\r
-  endcol=272; nextl=64;\r
-  winofs=4608;\r
-  DriverDesc = "256x256 (ModeX, planar)";\r
-}\r
-\r
-void Set320x240()\r
-{ char in_byte;\r
-\r
-  outportw(SEQU_ADDR, 0x0604);\r
-  outportw(SEQU_ADDR, 0x0110);\r
-  outportb(MISC_OUTPUT, 0xe3);\r
-  outportw(SEQU_ADDR, 0x0300);\r
-  outportb(CRTC_ADDR, 0x11);\r
-  in_byte = inportb((CRTC_ADDR+1));\r
-  in_byte = (in_byte && 0x7f);\r
-  outportb((CRTC_ADDR+1), in_byte);\r
-  outportw(CRTC_ADDR, 0x0d06);\r
-  outportw(CRTC_ADDR, 0x3e07);\r
-  outportw(CRTC_ADDR, 0x4109);\r
-  outportw(CRTC_ADDR, 0xea10);\r
-  outportw(CRTC_ADDR, 0xac11);\r
-  outportw(CRTC_ADDR, 0xdf12);\r
-  outportw(CRTC_ADDR, 0x0014);\r
-  outportw(CRTC_ADDR, 0xe715);\r
-  outportw(CRTC_ADDR, 0x0616);\r
-  outportw(CRTC_ADDR, 0xe317);\r
-\r
-  sx=320;  sy=240;\r
-  tsx=352; tsy=272;\r
-  tx=20;   ty=15;\r
-  cx1=0;   cy1=0;\r
-  cx2=sx-1;cy2=sy-1;\r
-  endcol=336; nextl=80;\r
-  winofs=5632;\r
-  DriverDesc = "320x240 (ModeX, planar)";\r
-}\r
-\r
-void Set360x240()\r
-{ char in_byte;\r
-\r
-  outportw(SEQU_ADDR, 0x0604);\r
-  outportw(SEQU_ADDR, 0x100);\r
-  outportb(MISC_OUTPUT, 0xe7);\r
-  outportw(SEQU_ADDR, 0x300);\r
-  outportb(CRTC_ADDR, 0x11);\r
-  in_byte = inportb((CRTC_ADDR+1));\r
-  in_byte = (in_byte && 0x7f);\r
-  outportb((CRTC_ADDR+1), in_byte);\r
-  outportw(CRTC_ADDR, 0x6b00);\r
-  outportw(CRTC_ADDR, 0x5901);\r
-  outportw(CRTC_ADDR, 0x5a02);\r
-  outportw(CRTC_ADDR, 0x8e03);\r
-  outportw(CRTC_ADDR, 0x5e04);\r
-  outportw(CRTC_ADDR, 0x8a05);\r
-  outportw(CRTC_ADDR, 0x0d06);\r
-  outportw(CRTC_ADDR, 0x3e07);\r
-  outportw(CRTC_ADDR, 0x4109);\r
-  outportw(CRTC_ADDR, 0xea10);\r
-  outportw(CRTC_ADDR, 0xac11);\r
-  outportw(CRTC_ADDR, 0xdf12);\r
-  outportw(CRTC_ADDR, 0x2d13);\r
-  outportw(CRTC_ADDR, 0x0014);\r
-  outportw(CRTC_ADDR, 0xe715);\r
-  outportw(CRTC_ADDR, 0x0616);\r
-  outportw(CRTC_ADDR, 0xe317);\r
-\r
-  sx=360;  sy=240;\r
-  tsx=392; tsy=272;\r
-  tx=23;   ty=15;\r
-  cx1=0;   cy1=0;\r
-  cx2=sx-1;cy2=sy-1;\r
-  endcol=376; nextl=90;\r
-  winofs=6272;\r
-  DriverDesc = "360x240 (ModeX, planar)";\r
-}\r
-\r
-void InitModeX(int res)\r
-{\r
-  ModeXSetMode(0x13);\r
-\r
-  switch (res)\r
-  {\r
-    case 0: Set320x240(); break;\r
-    case 1: Set360x240(); break;\r
-    case 2: Set256x256(); break; /* -- ric: 15/Jun/98 -- */\r
-    default: err("Internal error: unknown ModeX resolution code");\r
-  }\r
-\r
-  screenbase=(char *) 0xA0000+__djgpp_conventional_base;\r
-  screen=(char *) malloc(107648);\r
-  memset(screen,0,107648);\r
-  clearScreen();\r
-\r
-  // Mode successfuly set, now lets set up the driver.\r
-\r
-  ShutdownVideo = ModeXShutdown;\r
-  ShowPage = ModeXShowPage;\r
-  CopySprite = ModeXCopySprite;\r
-  TCopySprite = ModeXTCopySprite;\r
-  CCopySprite = ModeXCCopySprite;\r
-  TCCopySprite = ModeXTCCopySprite;\r
-  CopyTile = ModeXCopyTile;\r
-  TCopyTile = ModeXTCopyTile;\r
-  ScaleSprite = ModeXScaleSprite;\r
-  RenderMAPLine = ModeXRenderMAPLine;\r
-  TRenderMAPLine = ModeXTRenderMAPLine;\r
-  ColorField = ModeXColorField;\r
-  ClearScreen = ModeXClearScreen;\r
-  PutPixel = ModeXPutPixel;\r
-  GetPixel = ModeXGetPixel;\r
-  HLine = ModeXHLine;\r
-  VLine = ModeXVLine;\r
-  Line = ModeXLine;\r
-  Circle = ModeXCircle;\r
-  CircleFill = ModeXCircleFill;\r
-  Rect = ModeXRect;\r
-  RectFill = ModeXRectFill;\r
-}\r
diff --git a/16/v2/source/verge/ENGINE/MTYPES.H b/16/v2/source/verge/ENGINE/MTYPES.H
deleted file mode 100755 (executable)
index a57d087..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-#ifndef MTYPES_H\r
-#define MTYPES_H\r
-\r
-/*\r
-       MikMod atomic types:\r
-       ====================\r
-*/\r
-\r
-\r
-#ifdef __OS2__\r
-\r
-typedef signed char     SBYTE;          /* has to be 1 byte signed */\r
-typedef unsigned char   UBYTE;          /* has to be 1 byte unsigned */\r
-typedef short           SWORD;          /* has to be 2 bytes signed */\r
-typedef unsigned short  UWORD;          /* has to be 2 bytes unsigned */\r
-typedef long            SLONG;          /* has to be 4 bytes signed */\r
-/* ULONG and BOOL are already defined in OS2.H */\r
-\r
-#elif defined(__alpha)\r
-\r
-typedef char            SBYTE;          /* has to be 1 byte signed */\r
-typedef unsigned char   UBYTE;          /* has to be 1 byte unsigned */\r
-typedef short           SWORD;          /* has to be 2 bytes signed */\r
-typedef unsigned short  UWORD;          /* has to be 2 bytes unsigned */\r
-/* long is 8 bytes on dec alpha - RCA */\r
-typedef int             SLONG;          /* has to be 4 bytes signed */\r
-typedef unsigned int    ULONG;          /* has to be 4 bytes unsigned */\r
-typedef int             BOOL;           /* doesn't matter.. 0=FALSE, <>0 true */\r
-\r
-#else\r
-\r
-typedef char            SBYTE;          /* has to be 1 byte signed */\r
-typedef unsigned char   UBYTE;          /* has to be 1 byte unsigned */\r
-typedef short           SWORD;          /* has to be 2 bytes signed */\r
-typedef unsigned short  UWORD;          /* has to be 2 bytes unsigned */\r
-typedef long            SLONG;          /* has to be 4 bytes signed */\r
-typedef unsigned long   ULONG;          /* has to be 4 bytes unsigned */\r
-typedef int             BOOL;           /* doesn't matter.. 0=FALSE, <>0 true */\r
-\r
-#endif\r
-\r
-\r
-#ifdef __OS2__\r
-#define INCL_DOS\r
-#define INCL_MCIOS2\r
-#define INCL_MMIOOS2\r
-#include <os2.h>\r
-#include <os2me.h>\r
-#include <mmio.h>\r
-#endif\r
-\r
-\r
-#ifdef __WATCOMC__\r
-#define inportb(x) inp(x)\r
-#define outportb(x,y) outp(x,y)\r
-#define inport(x) inpw(x)\r
-#define outport(x,y) outpw(x,y)\r
-#define disable() _disable()\r
-#define enable() _enable()\r
-#endif\r
-\r
-\r
-#ifdef __DJGPP__\r
-#include <dpmi.h>\r
-#include <go32.h>\r
-#include <pc.h>\r
-#define inp inportw\r
-#define outport outportw\r
-#define inport inportw\r
-#define interrupt \r
-#endif\r
-\r
-#endif\r
diff --git a/16/v2/source/verge/ENGINE/PCX.H b/16/v2/source/verge/ENGINE/PCX.H
deleted file mode 100755 (executable)
index 844e5c7..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef PCX_H\r
-#define PCX_H\r
-\r
-// -- globals --\r
-\r
-extern word width,depth;\r
-\r
-// -- prototypes --\r
-\r
-extern void ReadPCXLine(byte *dest);\r
-extern void LoadPCXHeader(char *fname);\r
-extern void LoadPCXHeaderNP(char *fname);\r
-extern void LoadPCX(char *fname, byte *dest);\r
-extern byte *LoadPCXBuf(char *fname);\r
-\r
-#endif // PCX_H\r
diff --git a/16/v2/source/verge/ENGINE/RENDER.C b/16/v2/source/verge/ENGINE/RENDER.C
deleted file mode 100755 (executable)
index 3115154..0000000
+++ /dev/null
@@ -1,291 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include "verge.h"\r
-#include <math.h>\r
-\r
-// ================================= Data ====================================\r
-\r
-int oxw, oyw;\r
-int xofs, yofs;\r
-int xtc, ytc;\r
-\r
-byte curlayer, animate=0;\r
-byte cameratracking=1, tracker=0;\r
-byte showobs=0, showzone=0;\r
-\r
-// ================================= Code ====================================\r
-\r
-void BlitBackLayer(byte l)\r
-{\r
-  int i,j,c;\r
-  byte *img;\r
-\r
-  if (!layertoggle[l]) return;\r
-\r
-  // Adjust view\r
-\r
-  oxw=xwin*layer[l].pmultx/layer[l].pdivx;\r
-  oyw=ywin*layer[l].pmulty/layer[l].pdivy;\r
-  xofs=-(oxw&15); //(16-(oxw&15));\r
-  yofs=-(oyw&15); //(16-(oyw&15));\r
-  xtc=oxw>>4;\r
-  ytc=oyw>>4;\r
-\r
-  // Draw it, bitch!\r
-\r
-  for (i=0; i<ty+1; i++)\r
-    for (j=0; j<tx+1; j++)\r
-    {\r
-      c=layers[l][(((ytc+i)*layer[l].sizex)+xtc+j)];\r
-      c=tileidx[c];\r
-      c=c<numtiles?c:0;\r
-      img=vsp+(256*c);\r
-      CopyTileClip((j*16)+xofs,(i*16)+yofs,img);\r
-    }\r
-  curlayer++;\r
-}\r
-\r
-void TransBlitLayer(byte l)\r
-{\r
-  int i,j,offset,c;\r
-  byte *img,*mask;\r
-\r
-  if (!layertoggle[l]) return;\r
-\r
-  // Adjust view\r
-\r
-  oxw=xwin*layer[l].pmultx/layer[l].pdivx;\r
-  oyw=ywin*layer[l].pmulty/layer[l].pdivy;\r
-  xofs=-(oxw&15);\r
-  yofs=-(oyw&15);\r
-  xtc=oxw>>4;\r
-  ytc=oyw>>4;\r
-\r
-  // Draw it, bitch!\r
-\r
-  for (i=0; i<ty+1; i++)\r
-    for (j=0; j<tx+1; j++)\r
-    {\r
-      c=tileidx[layers[l][(((ytc+i)*layer[l].sizex)+xtc+j)]];\r
-      c=c<numtiles?c:0;\r
-      offset=c*256;\r
-      img=vsp+offset; mask=vspmask+offset;\r
-      if (img!=vsp)\r
-        TCopyTileClip((j*16)+xofs,(i*16)+yofs,img,mask);\r
-    }\r
-  curlayer++;\r
-}\r
-\r
-void BlitLayerLucent(byte l)\r
-{\r
-  int i,j,offset,c;\r
-  byte *img,*mask;\r
-\r
-  if (!layertoggle[l]) return;\r
-\r
-  // Adjust view\r
-\r
-  oxw=xwin*layer[l].pmultx/layer[l].pdivx;\r
-  oyw=ywin*layer[l].pmulty/layer[l].pdivy;\r
-  xofs=-(oxw&15);\r
-  yofs=-(oyw&15);\r
-  xtc=oxw>>4;\r
-  ytc=oyw>>4;\r
-\r
-  // Draw it, bitch!\r
-\r
-  for (i=0; i<ty+1; i++)\r
-    for (j=0; j<tx+1; j++)\r
-    {\r
-      c=tileidx[layers[l][(((ytc+i)*layer[l].sizex)+xtc+j)]];\r
-      c=c<numtiles?c:0;\r
-      offset=c*256;\r
-      img=vsp+offset; mask=vspmask+offset;\r
-      if (img!=vsp)\r
-        TCopyTileLucentClip((j*16)+xofs,(i*16)+yofs,img);\r
-    }\r
-  curlayer++;\r
-}\r
-\r
-void BlitLayer(byte c)\r
-{\r
-  if ( curlayer && !layer[c].hline && !layer[c].trans) { TransBlitLayer(c); return; }\r
-  if (!curlayer && !layer[c].hline && !layer[c].trans) { BlitBackLayer(c); return; }\r
-  if (layer[c].trans) { BlitLayerLucent(c); return; }\r
-  if (layer[c].hline) { ExecuteEvent(layer[c].hline); return; }\r
-}\r
-\r
-void DrawObstructions()\r
-{\r
-  int i,j;\r
-\r
-  oxw=xwin*layer[0].pmultx/layer[0].pdivx;\r
-  oyw=ywin*layer[0].pmulty/layer[0].pdivy;\r
-  xofs=-(oxw&15);\r
-  yofs=-(oyw&15);\r
-  xtc=oxw/16;\r
-  ytc=oyw/16;\r
-\r
-  for (i=0; i<ty+1; i++)\r
-    for (j=0; j<tx+1; j++)\r
-    {\r
-      if (obstruct[((ytc+i)*layer[0].sizex)+(xtc+j)])\r
-        ColorField((j*16)+xofs,(i*16)+yofs,7);\r
-    }\r
-}\r
-\r
-void DrawZones()\r
-{\r
-  int i,j;\r
-  char z;\r
-\r
-  oxw=xwin*layer[0].pmultx/layer[0].pdivx;\r
-  oyw=ywin*layer[0].pmulty/layer[0].pdivy;\r
-  xofs=-(oxw&15);\r
-  yofs=-(oyw&15);\r
-  xtc=oxw>>4;\r
-  ytc=oyw>>4;\r
-\r
-  for (i=0; i<ty+1; i++)\r
-    for (j=0; j<tx+1; j++)\r
-    {\r
-      z=zone[((ytc+i)*layer[0].sizex)+(xtc+j)];\r
-      if (z)\r
-      {\r
-        ColorField((j*16)+xofs,(i*16)+yofs,z);\r
-      }\r
-      if (player)\r
-         {\r
-           if ( ((player->x+7)/16)==(xtc+j) && ((player->y+7)/16)==(ytc+i))\r
-           {\r
-              ColorField((j*16)+xofs,(i*16)+yofs,31);\r
-           }\r
-         }\r
-    }\r
-}\r
-\r
-void HookScriptThing(char *src)\r
-{\r
-  char mystr[10];\r
-\r
-  src++;\r
-  strcpy(mystr, src);\r
-  src=mystr;\r
-  while (*src != 'X') src++;\r
-  *src=0;\r
-  ExecuteEvent(atoi(mystr));\r
-}\r
-\r
-void RenderMAP()\r
-{ char *src;\r
-\r
-  curlayer=0;\r
-  src=rstring;\r
-  while (*src)\r
-  {\r
-    switch (*src)\r
-    {\r
-      case '1': BlitLayer(0); break;\r
-      case '2': BlitLayer(1); break;\r
-      case '3': BlitLayer(2); break;\r
-      case '4': BlitLayer(3); break;\r
-      case '5': BlitLayer(4); break;\r
-      case '6': BlitLayer(5); break;\r
-      case 'E': RenderEntities(); break;\r
-      case 'S': HookScriptThing(src); break;\r
-      case 'R': HookRetrace();\r
-                curlayer++; break;\r
-    }\r
-    src++;\r
-  }\r
-   if (!curlayer) ClearScreen();\r
-   if (showobs) DrawObstructions();\r
-   if (showzone) DrawZones();\r
-}\r
-\r
-void Render()\r
-{\r
-  if (cameratracking==1 && player)\r
-  {\r
-    if (player->x+8>(sx/2)) xwin=(player->x+8-(sx/2)); else xwin=0;\r
-    if (player->y+8>(sy/2)) ywin=(player->y+8-(sy/2)); else ywin=0;\r
-    if (xwin>((layer[0].sizex*16)-sx)) xwin=((layer[0].sizex*16)-sx);\r
-    if (ywin>((layer[0].sizey*16)-sy)) ywin=((layer[0].sizey*16)-sy);\r
-  }\r
-  if (cameratracking==2)\r
-  {\r
-    if (entity[tracker].x+8>(sx/2)) xwin=(entity[tracker].x+8-(sx/2)); else xwin=0;\r
-    if (entity[tracker].y+8>(sy/2)) ywin=(entity[tracker].y+8-(sy/2)); else ywin=0;\r
-    if (xwin>((layer[0].sizex*16)-sx)) xwin=((layer[0].sizex*16)-sx);\r
-    if (ywin>((layer[0].sizey*16)-sy)) ywin=((layer[0].sizey*16)-sy);\r
-  }\r
-  SiftEntities();\r
-  RenderMAP();\r
-}\r
-\r
-int rnd(int lo, int hi)\r
-{\r
-  int range=hi-lo+1;\r
-  int i=rand() % range;\r
-  return i+lo;\r
-}\r
-\r
-void AnimateTile(byte i, int l)\r
-{\r
-  switch (vspanim[i].mode)\r
-  {\r
-    case 0: if (tileidx[l]<vspanim[i].finish) tileidx[l]++;\r
-            else tileidx[l]=vspanim[i].start;\r
-            break;\r
-    case 1: if (tileidx[l]>vspanim[i].start) tileidx[l]--;\r
-            else tileidx[l]=vspanim[i].finish;\r
-            break;\r
-    case 2: tileidx[l]=rnd(vspanim[i].start,vspanim[i].finish);\r
-            break;\r
-    case 3: if (flipped[l])\r
-            {\r
-              if (tileidx[l]!=vspanim[i].start) tileidx[l]--;\r
-              else { tileidx[l]++; flipped[l]=0; }\r
-            }\r
-            else\r
-            {\r
-              if (tileidx[l]!=vspanim[i].finish) tileidx[l]++;\r
-              else { tileidx[l]--; flipped[l]=1; }\r
-            }\r
-  }\r
-}\r
-\r
-void Animate(byte i)\r
-{ static int l;\r
-\r
-  vadelay[i]=0;\r
-  for (l=vspanim[i].start; l<=vspanim[i].finish; l++)\r
-    AnimateTile(i,l);\r
-}\r
-\r
-void CheckTileAnimation()\r
-{ static byte i;\r
-\r
-  if (!animate) return;\r
-  if (!vsp) return;\r
-  for (i=0; i<100; i++)\r
-  {\r
-    if ((vspanim[i].delay) && (vspanim[i].delay<vadelay[i]))\r
-       Animate(i);\r
-    vadelay[i]++;\r
-  }\r
-}\r
diff --git a/16/v2/source/verge/ENGINE/RENDER.H b/16/v2/source/verge/ENGINE/RENDER.H
deleted file mode 100755 (executable)
index b75b033..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef RENDER_H\r
-#define RENDER_H\r
-\r
-extern byte animate, cameratracking, showobs, showzone, tracker;\r
-\r
-void Render();\r
-void BlitLayer(byte c);\r
-void CheckTileAnimation();\r
-int rnd(int min, int max);\r
-\r
-#endif\r
diff --git a/16/v2/source/verge/ENGINE/SINCOS.H b/16/v2/source/verge/ENGINE/SINCOS.H
deleted file mode 100755 (executable)
index 3cfcc9f..0000000
+++ /dev/null
@@ -1,1106 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-int sintbl[]=\r
-{\r
-  0,\r
-  1143,\r
-  2287,\r
-  3429,\r
-  4571,\r
-  5711,\r
-  6850,\r
-  7986,\r
-  9120,\r
-  10251,\r
-  11380,\r
-  12504,\r
-  13625,\r
-  14742,\r
-  15854,\r
-  16961,\r
-  18063,\r
-  19160,\r
-  20251,\r
-  21336,\r
-  22414,\r
-  23485,\r
-  24549,\r
-  25606,\r
-  26655,\r
-  27696,\r
-  28728,\r
-  29752,\r
-  30766,\r
-  31771,\r
-  32767,\r
-  33752,\r
-  34728,\r
-  35692,\r
-  36646,\r
-  37589,\r
-  38520,\r
-  39439,\r
-  40347,\r
-  41242,\r
-  42125,\r
-  42994,\r
-  43851,\r
-  44694,\r
-  45524,\r
-  46340,\r
-  47141,\r
-  47929,\r
-  48701,\r
-  49459,\r
-  50202,\r
-  50930,\r
-  51642,\r
-  52338,\r
-  53018,\r
-  53683,\r
-  54330,\r
-  54962,\r
-  55576,\r
-  56174,\r
-  56754,\r
-  57318,\r
-  57863,\r
-  58392,\r
-  58902,\r
-  59394,\r
-  59869,\r
-  60325,\r
-  60762,\r
-  61182,\r
-  61582,\r
-  61964,\r
-  62327,\r
-  62671,\r
-  62996,\r
-  63301,\r
-  63588,\r
-  63855,\r
-  64102,\r
-  64330,\r
-  64539,\r
-  64728,\r
-  64897,\r
-  65046,\r
-  65175,\r
-  65285,\r
-  65375,\r
-  65445,\r
-  65495,\r
-  65525,\r
-  65534,\r
-  65525,\r
-  65495,\r
-  65445,\r
-  65375,\r
-  65285,\r
-  65176,\r
-  65046,\r
-  64897,\r
-  64728,\r
-  64539,\r
-  64330,\r
-  64102,\r
-  63855,\r
-  63588,\r
-  63301,\r
-  62996,\r
-  62671,\r
-  62327,\r
-  61964,\r
-  61582,\r
-  61182,\r
-  60763,\r
-  60325,\r
-  59869,\r
-  59394,\r
-  58902,\r
-  58392,\r
-  57864,\r
-  57318,\r
-  56755,\r
-  56174,\r
-  55576,\r
-  54962,\r
-  54331,\r
-  53683,\r
-  53019,\r
-  52338,\r
-  51642,\r
-  50930,\r
-  50202,\r
-  49459,\r
-  48702,\r
-  47929,\r
-  47142,\r
-  46340,\r
-  45524,\r
-  44694,\r
-  43851,\r
-  42994,\r
-  42125,\r
-  41242,\r
-  40347,\r
-  39440,\r
-  38520,\r
-  37589,\r
-  36646,\r
-  35693,\r
-  34728,\r
-  33753,\r
-  32767,\r
-  31772,\r
-  30766,\r
-  29752,\r
-  28728,\r
-  27696,\r
-  26655,\r
-  25606,\r
-  24549,\r
-  23485,\r
-  22414,\r
-  21336,\r
-  20251,\r
-  19160,\r
-  18064,\r
-  16961,\r
-  15854,\r
-  14742,\r
-  13625,\r
-  12504,\r
-  11380,\r
-  10252,\r
-  9120,\r
-  7986,\r
-  6850,\r
-  5711,\r
-  4571,\r
-  3430,\r
-  2287,\r
-  1143,\r
-  0,\r
-  -1143,\r
-  -2286,\r
-  -3429,\r
-  -4571,\r
-  -5711,\r
-  -6850,\r
-  -7986,\r
-  -9120,\r
-  -10251,\r
-  -11379,\r
-  -12504,\r
-  -13625,\r
-  -14741,\r
-  -15854,\r
-  -16961,\r
-  -18063,\r
-  -19160,\r
-  -20251,\r
-  -21335,\r
-  -22414,\r
-  -23485,\r
-  -24549,\r
-  -25606,\r
-  -26655,\r
-  -27696,\r
-  -28728,\r
-  -29752,\r
-  -30766,\r
-  -31771,\r
-  -32767,\r
-  -33752,\r
-  -34728,\r
-  -35692,\r
-  -36646,\r
-  -37589,\r
-  -38520,\r
-  -39439,\r
-  -40347,\r
-  -41242,\r
-  -42124,\r
-  -42994,\r
-  -43851,\r
-  -44694,\r
-  -45524,\r
-  -46340,\r
-  -47141,\r
-  -47929,\r
-  -48701,\r
-  -49459,\r
-  -50202,\r
-  -50930,\r
-  -51642,\r
-  -52338,\r
-  -53018,\r
-  -53682,\r
-  -54330,\r
-  -54962,\r
-  -55576,\r
-  -56174,\r
-  -56754,\r
-  -57318,\r
-  -57863,\r
-  -58392,\r
-  -58902,\r
-  -59394,\r
-  -59869,\r
-  -60325,\r
-  -60762,\r
-  -61182,\r
-  -61582,\r
-  -61964,\r
-  -62327,\r
-  -62671,\r
-  -62996,\r
-  -63301,\r
-  -63588,\r
-  -63855,\r
-  -64102,\r
-  -64330,\r
-  -64539,\r
-  -64728,\r
-  -64897,\r
-  -65046,\r
-  -65175,\r
-  -65285,\r
-  -65375,\r
-  -65445,\r
-  -65495,\r
-  -65525,\r
-  -65534,\r
-  -65525,\r
-  -65495,\r
-  -65445,\r
-  -65375,\r
-  -65285,\r
-  -65176,\r
-  -65046,\r
-  -64897,\r
-  -64728,\r
-  -64539,\r
-  -64330,\r
-  -64102,\r
-  -63855,\r
-  -63588,\r
-  -63302,\r
-  -62996,\r
-  -62671,\r
-  -62327,\r
-  -61964,\r
-  -61582,\r
-  -61182,\r
-  -60763,\r
-  -60325,\r
-  -59869,\r
-  -59395,\r
-  -58902,\r
-  -58392,\r
-  -57864,\r
-  -57318,\r
-  -56755,\r
-  -56174,\r
-  -55576,\r
-  -54962,\r
-  -54331,\r
-  -53683,\r
-  -53019,\r
-  -52338,\r
-  -51642,\r
-  -50930,\r
-  -50202,\r
-  -49460,\r
-  -48702,\r
-  -47929,\r
-  -47142,\r
-  -46340,\r
-  -45524,\r
-  -44694,\r
-  -43851,\r
-  -42995,\r
-  -42125,\r
-  -41242,\r
-  -40347,\r
-  -39440,\r
-  -38520,\r
-  -37589,\r
-  -36646,\r
-  -35693,\r
-  -34728,\r
-  -33753,\r
-  -32767,\r
-  -31772,\r
-  -30767,\r
-  -29752,\r
-  -28728,\r
-  -27696,\r
-  -26655,\r
-  -25606,\r
-  -24550,\r
-  -23485,\r
-  -22414,\r
-  -21336,\r
-  -20251,\r
-  -19160,\r
-  -18064,\r
-  -16962,\r
-  -15854,\r
-  -14742,\r
-  -13625,\r
-  -12504,\r
-  -11380,\r
-  -10252,\r
-  -9121,\r
-  -7987,\r
-  -6850,\r
-  -5712,\r
-  -4571,\r
-  -3430,\r
-  -2287,\r
-  -1144,\r
-};\r
-\r
-int costbl[]={\r
-  65535,\r
-  65525,\r
-  65495,\r
-  65445,\r
-  65375,\r
-  65285,\r
-  65175,\r
-  65046,\r
-  64897,\r
-  64728,\r
-  64539,\r
-  64330,\r
-  64102,\r
-  63855,\r
-  63588,\r
-  63301,\r
-  62996,\r
-  62671,\r
-  62327,\r
-  61964,\r
-  61582,\r
-  61182,\r
-  60763,\r
-  60325,\r
-  59869,\r
-  59394,\r
-  58902,\r
-  58392,\r
-  57863,\r
-  57318,\r
-  56754,\r
-  56174,\r
-  55576,\r
-  54962,\r
-  54330,\r
-  53683,\r
-  53018,\r
-  52338,\r
-  51642,\r
-  50930,\r
-  50202,\r
-  49459,\r
-  48702,\r
-  47929,\r
-  47141,\r
-  46340,\r
-  45524,\r
-  44694,\r
-  43851,\r
-  42994,\r
-  42125,\r
-  41242,\r
-  40347,\r
-  39439,\r
-  38520,\r
-  37589,\r
-  36646,\r
-  35692,\r
-  34728,\r
-  33753,\r
-  32767,\r
-  31772,\r
-  30766,\r
-  29752,\r
-  28728,\r
-  27696,\r
-  26655,\r
-  25606,\r
-  24549,\r
-  23485,\r
-  22414,\r
-  21336,\r
-  20251,\r
-  19160,\r
-  18063,\r
-  16961,\r
-  15854,\r
-  14742,\r
-  13625,\r
-  12504,\r
-  11380,\r
-  10252,\r
-  9120,\r
-  7986,\r
-  6850,\r
-  5711,\r
-  4571,\r
-  3429,\r
-  2287,\r
-  1143,\r
-  0,\r
-  -1143,\r
-  -2287,\r
-  -3429,\r
-  -4571,\r
-  -5711,\r
-  -6850,\r
-  -7986,\r
-  -9120,\r
-  -10251,\r
-  -11379,\r
-  -12504,\r
-  -13625,\r
-  -14742,\r
-  -15854,\r
-  -16961,\r
-  -18063,\r
-  -19160,\r
-  -20251,\r
-  -21336,\r
-  -22414,\r
-  -23485,\r
-  -24549,\r
-  -25606,\r
-  -26655,\r
-  -27696,\r
-  -28728,\r
-  -29752,\r
-  -30766,\r
-  -31771,\r
-  -32767,\r
-  -33752,\r
-  -34728,\r
-  -35692,\r
-  -36646,\r
-  -37589,\r
-  -38520,\r
-  -39439,\r
-  -40347,\r
-  -41242,\r
-  -42124,\r
-  -42994,\r
-  -43851,\r
-  -44694,\r
-  -45524,\r
-  -46340,\r
-  -47141,\r
-  -47929,\r
-  -48701,\r
-  -49459,\r
-  -50202,\r
-  -50930,\r
-  -51642,\r
-  -52338,\r
-  -53018,\r
-  -53683,\r
-  -54330,\r
-  -54962,\r
-  -55576,\r
-  -56174,\r
-  -56754,\r
-  -57318,\r
-  -57863,\r
-  -58392,\r
-  -58902,\r
-  -59394,\r
-  -59869,\r
-  -60325,\r
-  -60762,\r
-  -61182,\r
-  -61582,\r
-  -61964,\r
-  -62327,\r
-  -62671,\r
-  -62996,\r
-  -63301,\r
-  -63588,\r
-  -63855,\r
-  -64102,\r
-  -64330,\r
-  -64539,\r
-  -64728,\r
-  -64897,\r
-  -65046,\r
-  -65175,\r
-  -65285,\r
-  -65375,\r
-  -65445,\r
-  -65495,\r
-  -65525,\r
-  -65534,\r
-  -65525,\r
-  -65495,\r
-  -65445,\r
-  -65375,\r
-  -65285,\r
-  -65176,\r
-  -65046,\r
-  -64897,\r
-  -64728,\r
-  -64539,\r
-  -64330,\r
-  -64102,\r
-  -63855,\r
-  -63588,\r
-  -63301,\r
-  -62996,\r
-  -62671,\r
-  -62327,\r
-  -61964,\r
-  -61582,\r
-  -61182,\r
-  -60763,\r
-  -60325,\r
-  -59869,\r
-  -59394,\r
-  -58902,\r
-  -58392,\r
-  -57864,\r
-  -57318,\r
-  -56755,\r
-  -56174,\r
-  -55576,\r
-  -54962,\r
-  -54331,\r
-  -53683,\r
-  -53019,\r
-  -52338,\r
-  -51642,\r
-  -50930,\r
-  -50202,\r
-  -49460,\r
-  -48702,\r
-  -47929,\r
-  -47142,\r
-  -46340,\r
-  -45524,\r
-  -44694,\r
-  -43851,\r
-  -42994,\r
-  -42125,\r
-  -41242,\r
-  -40347,\r
-  -39440,\r
-  -38520,\r
-  -37589,\r
-  -36646,\r
-  -35693,\r
-  -34728,\r
-  -33753,\r
-  -32767,\r
-  -31772,\r
-  -30767,\r
-  -29752,\r
-  -28728,\r
-  -27696,\r
-  -26655,\r
-  -25606,\r
-  -24550,\r
-  -23485,\r
-  -22414,\r
-  -21336,\r
-  -20251,\r
-  -19160,\r
-  -18064,\r
-  -16961,\r
-  -15854,\r
-  -14742,\r
-  -13625,\r
-  -12504,\r
-  -11380,\r
-  -10252,\r
-  -9120,\r
-  -7986,\r
-  -6850,\r
-  -5712,\r
-  -4571,\r
-  -3430,\r
-  -2287,\r
-  -1144,\r
-  0,\r
-  1143,\r
-  2286,\r
-  3429,\r
-  4571,\r
-  5711,\r
-  6850,\r
-  7986,\r
-  9120,\r
-  10251,\r
-  11379,\r
-  12504,\r
-  13625,\r
-  14741,\r
-  15854,\r
-  16961,\r
-  18063,\r
-  19160,\r
-  20251,\r
-  21335,\r
-  22414,\r
-  23485,\r
-  24549,\r
-  25606,\r
-  26655,\r
-  27696,\r
-  28728,\r
-  29752,\r
-  30766,\r
-  31771,\r
-  32767,\r
-  33752,\r
-  34728,\r
-  35692,\r
-  36646,\r
-  37589,\r
-  38520,\r
-  39439,\r
-  40347,\r
-  41242,\r
-  42124,\r
-  42994,\r
-  43851,\r
-  44694,\r
-  45524,\r
-  46340,\r
-  47141,\r
-  47929,\r
-  48701,\r
-  49459,\r
-  50202,\r
-  50930,\r
-  51642,\r
-  52338,\r
-  53018,\r
-  53682,\r
-  54330,\r
-  54962,\r
-  55576,\r
-  56174,\r
-  56754,\r
-  57318,\r
-  57863,\r
-  58391,\r
-  58902,\r
-  59394,\r
-  59869,\r
-  60325,\r
-  60762,\r
-  61182,\r
-  61582,\r
-  61964,\r
-  62327,\r
-  62671,\r
-  62996,\r
-  63301,\r
-  63588,\r
-  63855,\r
-  64102,\r
-  64330,\r
-  64539,\r
-  64728,\r
-  64897,\r
-  65046,\r
-  65175,\r
-  65285,\r
-  65375,\r
-  65445,\r
-  65495,\r
-  65525,\r
-};\r
-\r
-int tantbl[]=\r
-{\r
-  0,\r
-  1143,\r
-  2288,\r
-  3434,\r
-  4582,\r
-  5733,\r
-  6888,\r
-  8046,\r
-  9210,\r
-  10379,\r
-  11555,\r
-  12738,\r
-  13929,\r
-  15129,\r
-  16339,\r
-  17560,\r
-  18791,\r
-  20036,\r
-  21293,\r
-  22565,\r
-  23852,\r
-  25156,\r
-  26477,\r
-  27817,\r
-  29178,\r
-  30559,\r
-  31963,\r
-  33391,\r
-  34845,\r
-  36326,\r
-  37836,\r
-  39377,\r
-  40950,\r
-  42558,\r
-  44203,\r
-  45888,\r
-  47613,\r
-  49384,\r
-  51201,\r
-  53069,\r
-  54990,\r
-  56968,\r
-  59007,\r
-  61112,\r
-  63286,\r
-  65534,\r
-  67863,\r
-  70277,\r
-  72783,\r
-  75389,\r
-  78101,\r
-  80928,\r
-  83880,\r
-  86967,\r
-  90201,\r
-  93593,\r
-  97159,\r
-  100914,\r
-  104877,\r
-  109068,\r
-  113509,\r
-  118228,\r
-  123253,\r
-  128619,\r
-  134366,\r
-  140539,\r
-  147193,\r
-  154390,\r
-  162204,\r
-  170723,\r
-  180055,\r
-  190326,\r
-  201695,\r
-  214354,\r
-  228546,\r
-  244578,\r
-  262845,\r
-  283861,\r
-  308316,\r
-  337146,\r
-  371664,\r
-  413768,\r
-  466301,\r
-  533734,\r
-  623516,\r
-  749057,\r
-  937177,\r
-  1250451,\r
-  1876607,\r
-  3754215,\r
-  -2147483647, //8,\r
-  -3754786,\r
-  -1876749,\r
-  -1250515,\r
-  -937212,\r
-  -749080,\r
-  -623532,\r
-  -533746,\r
-  -466310,\r
-  -413775,\r
-  -371670,\r
-  -337151,\r
-  -308320,\r
-  -283865,\r
-  -262848,\r
-  -244581,\r
-  -228549,\r
-  -214356,\r
-  -201697,\r
-  -190328,\r
-  -180056,\r
-  -170725,\r
-  -162205,\r
-  -154391,\r
-  -147194,\r
-  -140540,\r
-  -134367,\r
-  -128620,\r
-  -123253,\r
-  -118228,\r
-  -113510,\r
-  -109068,\r
-  -104878,\r
-  -100915,\r
-  -97160,\r
-  -93594,\r
-  -90201,\r
-  -86968,\r
-  -83881,\r
-  -80929,\r
-  -78101,\r
-  -75389,\r
-  -72784,\r
-  -70277,\r
-  -67863,\r
-  -65535,\r
-  -63286,\r
-  -61112,\r
-  -59008,\r
-  -56968,\r
-  -54990,\r
-  -53069,\r
-  -51201,\r
-  -49384,\r
-  -47614,\r
-  -45888,\r
-  -44204,\r
-  -42559,\r
-  -40951,\r
-  -39377,\r
-  -37836,\r
-  -36326,\r
-  -34845,\r
-  -33391,\r
-  -31963,\r
-  -30559,\r
-  -29178,\r
-  -27818,\r
-  -26478,\r
-  -25156,\r
-  -23852,\r
-  -22565,\r
-  -21293,\r
-  -20036,\r
-  -18792,\r
-  -17560,\r
-  -16339,\r
-  -15130,\r
-  -13930,\r
-  -12738,\r
-  -11555,\r
-  -10379,\r
-  -9210,\r
-  -8046,\r
-  -6888,\r
-  -5733,\r
-  -4582,\r
-  -3434,\r
-  -2288,\r
-  -1144,\r
-  0,\r
-  1143,\r
-  2288,\r
-  3434,\r
-  4582,\r
-  5733,\r
-  6887,\r
-  8046,\r
-  9210,\r
-  10379,\r
-  11555,\r
-  12738,\r
-  13929,\r
-  15129,\r
-  16339,\r
-  17559,\r
-  18791,\r
-  20035,\r
-  21293,\r
-  22565,\r
-  23852,\r
-  25156,\r
-  26477,\r
-  27817,\r
-  29177,\r
-  30559,\r
-  31963,\r
-  33391,\r
-  34845,\r
-  36326,\r
-  37836,\r
-  39377,\r
-  40950,\r
-  42558,\r
-  44203,\r
-  45887,\r
-  47613,\r
-  49383,\r
-  51201,\r
-  53068,\r
-  54990,\r
-  56968,\r
-  59007,\r
-  61111,\r
-  63285,\r
-  65534,\r
-  67863,\r
-  70277,\r
-  72783,\r
-  75388,\r
-  78101,\r
-  80928,\r
-  83880,\r
-  86967,\r
-  90200,\r
-  93592,\r
-  97158,\r
-  100914,\r
-  104877,\r
-  109067,\r
-  113509,\r
-  118227,\r
-  123252,\r
-  128618,\r
-  134365,\r
-  140538,\r
-  147192,\r
-  154389,\r
-  162203,\r
-  170722,\r
-  180053,\r
-  190325,\r
-  201693,\r
-  214352,\r
-  228544,\r
-  244576,\r
-  262842,\r
-  283858,\r
-  308312,\r
-  337141,\r
-  371659,\r
-  413761,\r
-  466292,\r
-  533722,\r
-  623500,\r
-  749034,\r
-  937141,\r
-  1250388,\r
-  1876464,\r
-  3753644,\r
-  -2147483647, //8,\r
-  -3755357,\r
-  -1876892,\r
-  -1250578,\r
-  -937248,\r
-  -749103,\r
-  -623548,\r
-  -533757,\r
-  -466319,\r
-  -413782,\r
-  -371676,\r
-  -337155,\r
-  -308324,\r
-  -283868,\r
-  -262851,\r
-  -244584,\r
-  -228551,\r
-  -214358,\r
-  -201698,\r
-  -190330,\r
-  -180058,\r
-  -170726,\r
-  -162206,\r
-  -154392,\r
-  -147195,\r
-  -140541,\r
-  -134368,\r
-  -128621,\r
-  -123254,\r
-  -118229,\r
-  -113511,\r
-  -109069,\r
-  -104878,\r
-  -100916,\r
-  -97160,\r
-  -93594,\r
-  -90202,\r
-  -86968,\r
-  -83881,\r
-  -80929,\r
-  -78102,\r
-  -75390,\r
-  -72784,\r
-  -70278,\r
-  -67864,\r
-  -65535,\r
-  -63287,\r
-  -61112,\r
-  -59008,\r
-  -56969,\r
-  -54990,\r
-  -53069,\r
-  -51202,\r
-  -49384,\r
-  -47614,\r
-  -45888,\r
-  -44204,\r
-  -42559,\r
-  -40951,\r
-  -39377,\r
-  -37837,\r
-  -36327,\r
-  -34845,\r
-  -33392,\r
-  -31963,\r
-  -30559,\r
-  -29178,\r
-  -27818,\r
-  -26478,\r
-  -25156,\r
-  -23853,\r
-  -22565,\r
-  -21293,\r
-  -20036,\r
-  -18792,\r
-  -17560,\r
-  -16340,\r
-  -15130,\r
-  -13930,\r
-  -12739,\r
-  -11555,\r
-  -10380,\r
-  -9210,\r
-  -8047,\r
-  -6888,\r
-  -5733,\r
-  -4582,\r
-  -3434,\r
-  -2288,\r
-  -1144,\r
-};\r
diff --git a/16/v2/source/verge/ENGINE/SOUND.C b/16/v2/source/verge/ENGINE/SOUND.C
deleted file mode 100755 (executable)
index 6c10017..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#define SOUND_H\r
-#include "verge.h"\r
-\r
-// ================================= Data ====================================\r
-\r
-UNIMOD *mf;\r
-SAMPLE *sfx[100];\r
-int nsfx=0;\r
-char playing[60];\r
-\r
-// ================================= Code ====================================\r
-\r
-void PlaySound(int, int, int);\r
-\r
-void tickhandler()\r
-{\r
-  MP_HandleTick();\r
-  MD_SetBPM(mp_bpm);\r
-}\r
-\r
-void InitMusicSystem()\r
-{\r
-  memset(playing, 0, 60);\r
-  ML_RegisterLoader(&load_mod);\r
-  ML_RegisterLoader(&load_s3m);\r
-  ML_RegisterLoader(&load_uni);\r
-  ML_RegisterLoader(&load_xm);\r
-\r
-  MD_RegisterDriver(&drv_nos);\r
-//  MD_RegisterDriver(&drv_ss);\r
-  MD_RegisterDriver(&drv_sb);\r
-  MD_RegisterDriver(&drv_gus);\r
-\r
-  MD_RegisterPlayer(tickhandler);\r
-  if (!MD_Init())\r
-  {\r
-    printf("Driver error: %s.\n",myerr);\r
-    exit(-1);\r
-  }\r
-}\r
-\r
-void PlayMusic(char *fname)\r
-{\r
-  strlwr(fname);\r
-  if (!strcmp(fname,playing)) return;\r
-  if (!MP_Ready())\r
-  {\r
-    MD_PlayStop();\r
-    ML_Free(mf);\r
-  }\r
-  memcpy(playing, fname, strlen(fname));\r
-  if (!(mf=ML_LoadFN(fname))) err(myerr);\r
-  MP_Init(mf);\r
-  md_numchn=mf->numchn+2;\r
-  mp_loop=1; mp_volume=100;\r
-  MD_PlayStart();\r
-  PlaySound(0, 0, 0);\r
-  PlaySound(0, 0, 0);\r
-}\r
-\r
-void StopMusic()\r
-{\r
-  if (MP_Ready()) return;\r
-  MD_PlayStop();\r
-  ML_Free(mf);\r
-}\r
-\r
-int CacheSound(char *fname)\r
-{\r
-  if (!(sfx[nsfx]=MW_LoadWavFN(fname)))\r
-    err("WAV [%s] load error: %s", fname, myerr);\r
-  return nsfx++;\r
-}\r
-\r
-void FreeAllSounds()\r
-{\r
-  int i;\r
-\r
-  for (i=0; i<nsfx; i++)\r
-      MW_FreeWav(sfx[i]);\r
-  nsfx=0;\r
-}\r
-\r
-void PlaySound(int index, int vol, int pan)\r
-{\r
-  static int switcher=1;\r
-  int chanl;\r
-\r
-  if (index >= nsfx) return;\r
-  switcher ^= 1;\r
-  chanl=md_numchn-1-switcher;\r
-  MD_VoiceSetVolume(chanl, vol);\r
-  MD_VoiceSetPanning(chanl, pan);\r
-  MD_VoiceSetFrequency(chanl, sfx[index]->c2spd);\r
-  MD_VoicePlay(chanl, sfx[index]->handle, 0, sfx[index]->length,\r
-               0, 0, sfx[index]->flags);\r
-}\r
diff --git a/16/v2/source/verge/ENGINE/SOUND.H b/16/v2/source/verge/ENGINE/SOUND.H
deleted file mode 100755 (executable)
index 63c71a0..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef SOUND_H\r
-#define SOUND_H\r
-\r
-void InitMusicSystem();\r
-void PlayMusic(char *);\r
-void StopMusic();\r
-int CacheSound(char *);\r
-void FreeAllSounds();\r
-void PlaySound(int, int, int);\r
-\r
-#endif\r
diff --git a/16/v2/source/verge/ENGINE/STARTUP.C b/16/v2/source/verge/ENGINE/STARTUP.C
deleted file mode 100755 (executable)
index 87ee07d..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include <stdarg.h> // va_*()\r
-#include <time.h>\r
-\r
-#define MAIN_H\r
-#include "verge.h"\r
-extern void vmain(int argc, char *argv[]);\r
-extern void Log(char *message, ...);\r
-\r
-int mx, my, mb;\r
-\r
-// ================================= Code ====================================\r
-\r
-void err(char *message, ...)\r
-{\r
-  char tempbuf[256];\r
-  va_list lst;\r
-\r
-  ShutdownVideo(1);\r
-  ShutdownTimer();\r
-  ShutdownKeyboard();\r
-//  CD_Deinit();\r
-  MD_PlayStop();\r
-  MD_Exit();\r
-\r
-  va_start(lst, message);\r
-  vsprintf(tempbuf, message, lst);\r
-  va_end(lst);\r
-\r
-  printf(tempbuf);\r
-  fflush(stdout);\r
-\r
-  Log("Sys: Exiting with message: %s", tempbuf);\r
-\r
-  exit(-1);\r
-}\r
-\r
-int sgn(int x)\r
-{\r
-  if (x>=0) return 1;\r
-  return 0;\r
-}\r
-\r
-void ver()\r
-{ char temp[256];\r
-\r
-  Con_NextLine();\r
-  Con_Printf("{|||||||||||||||||}");\r
-  sprintf(temp,"VERGE v.%s Copyright (C)1998 vecna",VERSION);\r
-  Con_Printf(temp);\r
-  Con_Printf("All rights reserved. DJGPP/DOS build.");\r
-  sprintf(strbuf,"Timestamp %s at %s.",__DATE__, __TIME__);\r
-  Con_Printf(strbuf);\r
-  Con_Printf("Options: -Wall -m486 -O1 -ffast-math");\r
-  Con_Printf("{|||||||||||||||||}");\r
-}\r
-\r
-void CheckMessages()\r
-{\r
-  // Win95 can bite me.\r
-}\r
-\r
-void InitMouse(int x, int y)\r
-{ REGISTERS r;\r
-\r
-  SET_AX(r,7);\r
-  SET_CX(r,0);\r
-  SET_DX(r,x);\r
-  INTERRUPT(0x33, r);\r
-\r
-  SET_AX(r,8);\r
-  SET_CX(r,0);\r
-  SET_DX(r,y);\r
-  INTERRUPT(0x33, r);\r
-}\r
-\r
-void ReadMouse()\r
-{ REGISTERS r;\r
-\r
-  SET_AX(r,3);\r
-  INTERRUPT(0x33, r);\r
-\r
-  mx=r.x.cx;\r
-  my=r.x.dx;\r
-  mb=r.x.bx;\r
-}\r
-\r
-void SetMouse(int x, int y)\r
-{ REGISTERS r;\r
-\r
-  SET_AX(r, 4);\r
-  SET_CX(r, x);\r
-  SET_DX(r, y);\r
-  INTERRUPT(0x33, r);\r
-}\r
-\r
-int main(int argc, char *argv[])\r
-{\r
-  if (argc==1)\r
-  {\r
-    printf("VERGE v.%s build %s at %s. \n",VERSION,__DATE__,__TIME__);\r
-    printf("Copyright (C)1998 vecna \n");\r
-    delay(500);\r
-  }\r
-  srand(time(NULL));\r
-  vmain(argc, argv);\r
-  return 0;\r
-}\r
diff --git a/16/v2/source/verge/ENGINE/TIMER.C b/16/v2/source/verge/ENGINE/TIMER.C
deleted file mode 100755 (executable)
index b0c9274..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#define TIMER_H\r
-#include <go32.h>\r
-#include <dpmi.h>\r
-#include <crt0.h>\r
-#include "verge.h"\r
-\r
-#define PIT0 0x40\r
-#define PIT1 0x41\r
-#define PIT2 0x42\r
-#define PITMODE 0x43\r
-#define PITCONST 1193180L\r
-\r
-#define OCR1    0x20\r
-#define IMR1    0x21\r
-\r
-#define OCR2    0xA0\r
-#define IMR2    0xA1\r
-\r
-// ================================= Data ====================================\r
-\r
-int _crt0_startup_flags = _CRT0_FLAG_NEARPTR;\r
-typedef __dpmi_paddr *PVI;\r
-static PVI oldhandler;\r
-\r
-unsigned int systemtime=0, timer_count=0;\r
-int (*callback) (void);\r
-\r
-// ================================= Code ====================================\r
-\r
-PVI DJSetHandlerFunc(unsigned char irqno, void (*handler)(), int len)\r
-{\r
-  PVI oldvect = (PVI) malloc(sizeof(__dpmi_paddr));\r
-  int vecno=(irqno>7) ? irqno+0x68 : irqno+0x8;\r
-  _go32_dpmi_seginfo wrapper;\r
-  __dpmi_paddr new;\r
-\r
-  wrapper.pm_offset = (long int) handler;\r
-  wrapper.pm_selector = _my_cs();\r
-  _go32_dpmi_allocate_iret_wrapper(&wrapper);\r
-  new.offset32 = wrapper.pm_offset;\r
-  new.selector = wrapper.pm_selector;\r
- __dpmi_get_and_disable_virtual_interrupt_state();\r
- if (len) _go32_dpmi_lock_code(handler,len);\r
- _go32_dpmi_lock_data(&wrapper,sizeof(_go32_dpmi_seginfo));\r
- __dpmi_get_protected_mode_interrupt_vector(vecno,oldvect);\r
- __dpmi_set_protected_mode_interrupt_vector(vecno,&new);\r
- __dpmi_get_and_enable_virtual_interrupt_state();\r
- return oldvect;\r
-}\r
-\r
-void DJSetHandlerAddr(unsigned char irqno, PVI handler)\r
-{\r
-  int vecno=(irqno>7) ? irqno+0x68 : irqno+0x8;\r
-  _go32_dpmi_seginfo wrapper;\r
-  __dpmi_paddr oldhandler;\r
-\r
-  __dpmi_get_and_disable_virtual_interrupt_state();\r
-  __dpmi_get_protected_mode_interrupt_vector(vecno, &oldhandler);\r
-  wrapper.pm_offset = oldhandler.offset32;\r
-  wrapper.pm_selector = oldhandler.selector;\r
-  _go32_dpmi_free_iret_wrapper(&wrapper);\r
-  __dpmi_set_protected_mode_interrupt_vector(vecno,handler);\r
-  __dpmi_get_and_enable_virtual_interrupt_state();\r
-  free(handler);\r
-}\r
-\r
-static void SendEOI (unsigned char irqno)\r
-{\r
-  unsigned char ocr=(irqno>7) ? OCR2 : OCR1;\r
-  unsigned char eoi=0x60|(irqno&7);\r
-\r
-  outportb(ocr,eoi);\r
-  if (irqno>7) outportb(OCR1,0x20);\r
-}\r
-\r
-static void newhandler(void)\r
-{\r
-  systemtime++;\r
-  timer_count++;\r
-  if (cpu_watch) CPUTick();\r
-  if (callback) callback();\r
-  CheckTileAnimation();\r
-  HookTimer();\r
-  MD_Update();\r
-  SendEOI(0);\r
-}\r
-\r
-static void EndNewHandler() { }\r
-\r
-void sethz(unsigned int hz)\r
-{ unsigned int pit0_set, pit0_value;\r
-\r
-  disable();\r
-\r
-  outportb(PITMODE, 0x34);\r
-  pit0_value=PITCONST / hz;\r
-  pit0_set=(pit0_value & 0x00ff);\r
-  outportb(PIT0, pit0_set);\r
-  pit0_set=(pit0_value >> 8);\r
-  outportb(PIT0, pit0_set);\r
-\r
-  enable();\r
-}\r
-\r
-void restorehz()\r
-{\r
-  disable();\r
-  outportb(PITMODE, 0x34);\r
-  outportb(PIT0, 0x00);\r
-  outportb(PIT0, 0x00);\r
-  enable();\r
-}\r
-\r
-void InitTimer()\r
-{\r
-   oldhandler = DJSetHandlerFunc(0, (void *) newhandler,\r
-                ((int) EndNewHandler) - ((int) newhandler));\r
-   sethz(100);\r
-}\r
-\r
-void ShutdownTimer()\r
-{\r
-  DJSetHandlerAddr(0, oldhandler);\r
-  restorehz();\r
-}\r
diff --git a/16/v2/source/verge/ENGINE/TIMER.H b/16/v2/source/verge/ENGINE/TIMER.H
deleted file mode 100755 (executable)
index e195f92..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef TIMER_H\r
-#define TIMER_H\r
-\r
-void InitTimer();\r
-void ShutdownTimer();\r
-\r
-extern int systemtime, timer_count;\r
-extern int (*callback) (void);\r
-\r
-#endif\r
diff --git a/16/v2/source/verge/ENGINE/VC.C b/16/v2/source/verge/ENGINE/VC.C
deleted file mode 100755 (executable)
index 36e86f2..0000000
+++ /dev/null
@@ -1,2242 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\r
-\r
-#define VC_H\r
-#include <math.h>\r
-#include "verge.h"\r
-#include "vccode.h"\r
-#include "sincos.h"\r
-#include "mikmod.h"\r
-\r
-#define USERFUNC_MARKER 10000\r
-\r
-// ================================= Data ====================================\r
-\r
-char *sysvc, *mapvc, *basevc;         // VC pool ptrs\r
-char *code;                           // VC current instruction pointer (IP)\r
-\r
-int *globalint;                       // system.vc global int variables\r
-int maxint;                           // maximum allocated # of ints\r
-char *stringbuf;                      // vc string workspace\r
-int vcreturn;                         // return value of last function\r
-char *movescriptbuf;                  // VC EntityMove buffer\r
-char vctrack=0;                       // VC call tracking to verge.log\r
-\r
-quad *vcstack;                        // VC stack (seperate from main stack)\r
-quad *vcsp;                           // VC stack pointer [esp]\r
-\r
-int mapevents;                        // number of map events in this VC\r
-char *mapvctbl[1024];                 // map VC offset table\r
-\r
-int hookretrace=0;\r
-int hooktimer=0;\r
-int invc=0;\r
-\r
-// -----------------\r
-\r
-typedef struct\r
-{\r
-  char fname[40];\r
-  char argtype[20];\r
-  int numargs, numlocals;\r
-  int returntype;\r
-  int syscodeofs;\r
-} funcdecl;\r
-\r
-funcdecl *funcs;\r
-int numfuncs;\r
-\r
-typedef struct\r
-{\r
-  char vname[40];\r
-  int vsofs;\r
-  int arraylen;\r
-} strdecl;\r
-\r
-strdecl *str;\r
-int numstr=0;\r
-int stralloc;\r
-\r
-typedef struct\r
-{\r
-  char vname[40];\r
-  int varstartofs;\r
-  int arraylen;\r
-} vardecl;\r
-\r
-vardecl *vars;\r
-int numvars;\r
-char kill=0;\r
-\r
-// -- local func vars --\r
-\r
-typedef struct\r
-{\r
-  int nargs[20];\r
-  char s[2560];\r
-} lvars;\r
-\r
-//lvars *lvar;\r
-lvars lvar;\r
-\r
-// ============================== Prototypes =================================\r
-\r
-void ResolveString(char *buffer);\r
-void ExecuteSection();\r
-void ExecuteEvent(int i);\r
-void ExecuteUserFunc(int i);\r
-\r
-// ================================= Code ====================================\r
-\r
-int ProcessOperand();                 // Mutually dependant functions suck.\r
-int ProcessIfOperand();               // Hell yeah they do, bitch.\r
-void HandleExternFunc();\r
-void HandleStdLib();\r
-void ExecuteBlock();\r
-\r
-void LoadSystemVC()\r
-{\r
-  VFILE *f=0;\r
-  int i=0;\r
-\r
-  Log("Initializing VC interpreter");\r
-  if (!(f=vopen("system.idx"))) err("Could not open system.idx.");\r
-  vread(&numvars, 4, f);\r
-  vars=(vardecl *) valloc(numvars*sizeof(vardecl), "LoadSystemVC:vars", OID_VC);\r
-  vread(vars, numvars*48, f);\r
-  vread(&numfuncs, 4, f);\r
-  funcs=(funcdecl *) valloc(numfuncs*sizeof(funcdecl), "LoadSystemVC:funcs", OID_VC);\r
-  vread(funcs, numfuncs*76, f);\r
-  vread(&numstr, 4, f);\r
-  str=(strdecl *) valloc(numstr*sizeof(strdecl), "LoadSystemVC:str", OID_VC);\r
-  vread(str, numstr*44, f);\r
-  vclose(f);\r
-\r
-  if (!(f=vopen("system.vcs"))) err("Could not open system.vcs");\r
-  i=filesize(f);\r
-  sysvc=(char *) valloc(i, "LoadSystemVC:sysvc", OID_VC);\r
-  vread(&numfuncs, 4, f);\r
-  vread(&maxint, 4, f);\r
-  vread(&stralloc, 4, f);\r
-\r
-  globalint=(int *) valloc(maxint ? maxint*4 : 4, "globalint", OID_VC);\r
-  if (stralloc)\r
-  {\r
-    stringbuf=(char *) valloc((stralloc*256),\r
-      "LoadSystemVC:stringbuf", OID_VC);\r
-  }\r
-  else\r
-  {\r
-    stringbuf=(char *) valloc(256,\r
-      "LoadSystemVC:stringbuf (256)", OID_VC);\r
-  }\r
-  vread(sysvc, i, f);\r
-  vclose(f);\r
-\r
-  // Initialize VC stack\r
-  vcstack=(quad *) valloc(6000, "vcstack", OID_VC);\r
-  vcsp=vcstack;\r
-\r
-  movescriptbuf=(char *) valloc(65535, "movescriptbuf", OID_VC);\r
-\r
-Log("system vclib init: %d funcs, %d ints (%d bytes), %d strings (%d bytes)",\r
-  numfuncs, numvars, maxint*4, numstr, stralloc*256);\r
-}\r
-\r
-void LoadMapVC(VFILE *f)\r
-{ int codesize=0;\r
-\r
-  vread(&mapevents, 4, f);\r
-  vread(mapvctbl, 4*mapevents, f);\r
-  vread(&codesize, 4, f);\r
-  mapvc=(char *) valloc(codesize, "mapvc", OID_VC);\r
-  vread(mapvc, codesize, f);\r
-}\r
-\r
-byte GrabC()\r
-{\r
-  return *code++;\r
-}\r
-\r
-word GrabW(void)\r
-{\r
-  word *ptr=(word *) code;\r
-  code+=2;\r
-  return *ptr;\r
-}\r
-\r
-quad GrabD(void)\r
-{\r
-  quad *ptr=(quad *) code;\r
-  code+=4;\r
-  return *ptr;\r
-}\r
-\r
-void GrabString(char *str)\r
-{ int i=0;\r
-\r
-  i=0;\r
-  while (*code)\r
-  {\r
-    str[i]=*code;\r
-    code++;\r
-    i++;\r
-  }\r
-  str[i]=0;\r
-  code++;\r
-}\r
-\r
-int ReadInt(char category, int loc, int ofs)\r
-{\r
-  switch (category)\r
-  {\r
-    case op_UVAR:    return globalint[loc];\r
-    case op_UVARRAY: return globalint[loc];\r
-    case op_HVAR0:   switch (loc)\r
-                     {\r
-                       case 0: return xwin;\r
-                       case 1: return ywin;\r
-                       case 2: return cameratracking;\r
-                       case 3: return timer_count;\r
-                       case 4: return up;\r
-                       case 5: return down;\r
-                       case 6: return left;\r
-                       case 7: return right;\r
-                       case 8: return b1;\r
-                       case 9: return b2;\r
-                       case 10: return b3;\r
-                       case 11: return b4;\r
-                       case 12: return sx;\r
-                       case 13: return sy;\r
-                       case 14: return playernum;\r
-                       case 15: return cc;\r
-                       case 16: return tracker;\r
-                       case 17: return mx;\r
-                       case 18: return my;\r
-                       case 19: return mb;\r
-                       case 20: return vctrack;\r
-                       case 21: return width;\r
-                       case 22: return depth;\r
-                       case 23: return mp_volume;\r
-                       case 24: return (int)vsp;\r
-                       case 25: return lastent;\r
-                       case 26: return last_pressed;\r
-                     }\r
-    case op_HVAR1:   switch (loc)\r
-                     {\r
-                       case 0: return (int) screen[ofs];\r
-                       case 1: return entity[ofs].x;\r
-                       case 2: return entity[ofs].y;\r
-                       case 3: return entity[ofs].tx;\r
-                       case 4: return entity[ofs].ty;\r
-                       case 5: return entity[ofs].facing;\r
-                       case 6: return entity[ofs].moving;\r
-                       case 7: return entity[ofs].specframe;\r
-                       case 8: return entity[ofs].speed;\r
-//                       case 9: return entity[ofs].movecode;\r
-                       case 10: return entidx[ofs];\r
-                       case 11: return key[ofs];\r
-                       case 12: return layer[ofs].hline;\r
-                       case 13: return (int) (*(byte *)ofs);\r
-                       case 14: return (int) (*(word *)ofs);\r
-                       case 15: return (int) (*(quad *)ofs);\r
-                       case 16: return (int) pal[ofs];\r
-                       case 17: return (int) (*(char *)ofs);\r
-                       case 18: return (int) (*(short*)ofs);\r
-                       case 19: return (int) (*(int  *)ofs);\r
-                     }\r
-     case op_LVAR:   return lvar.nargs[loc];\r
-    default:\r
-      err("VC Execution error: Invalid ReadInt category %d", (int) category);\r
-  }\r
-  return 0;\r
-}\r
-\r
-void WriteInt(char category, int loc, int ofs, int value)\r
-{\r
-  switch (category)\r
-  {\r
-    case op_UVAR:    globalint[loc]=value; break;\r
-    case op_UVARRAY: globalint[loc]=value; break;\r
-    case op_HVAR0:   switch (loc)\r
-                     {\r
-                       case 0: xwin=value; return;\r
-                       case 1: ywin=value; return;\r
-                       case 2: cameratracking=value; return;\r
-                       case 3: timer_count=value; return;\r
-                       case 16: tracker=value; return;\r
-                       case 20: vctrack=value; return;\r
-                       case 23: mp_volume=value; return;\r
-                       case 26: last_pressed=value; return;\r
-                     }\r
-    case op_HVAR1:   switch (loc)\r
-                     {\r
-                       case 0: screen[ofs]=(byte) value; return;\r
-                       case 1: entity[ofs].x=value; return;\r
-                       case 2: entity[ofs].y=value; return;\r
-                       case 3: entity[ofs].tx=value; return;\r
-                       case 4: entity[ofs].ty=value; return;\r
-                       case 5: entity[ofs].facing=value; return;\r
-                       case 6: entity[ofs].moving=value; return;\r
-                       case 7: entity[ofs].specframe=value; return;\r
-                       case 8: entity[ofs].speed=value; return;\r
-//                       case 9: entity[ofs].movecode=value; return;\r
-//                       case 10:\r
-                       case 11: key[ofs]=value; return;\r
-                       case 12: layer[ofs].hline=value; return;\r
-                       case 13: (*(byte *)ofs)=(byte) value; return;\r
-                       case 14: (*(word *)ofs)=(word) value; return;\r
-                       case 15: (*(quad *)ofs)=(quad) value; return;\r
-                       case 16: pal[ofs]=value; return;\r
-                       case 17: (*(char *)ofs)=(byte) value; return;\r
-                       case 18: (*(short*)ofs)=(word) value; return;\r
-                       case 19: (*(int  *)ofs)=(quad) value; return;\r
-                     }\r
-    case op_LVAR:   lvar.nargs[loc]=value; return;\r
-    default:\r
-      err("VC Execution error: Invalid WriteInt category %d", (int) category);\r
-  }\r
-}\r
-\r
-int ResolveOperand()\r
-{\r
-  int cr=0;\r
-  int d=0;\r
-  byte c=0;\r
-\r
-  cr=ProcessOperand();                 // Get base number\r
-  while (1)\r
-  {\r
-     c=GrabC();\r
-     switch (c)\r
-     {\r
-        case op_ADD: cr += ProcessOperand(); continue;\r
-        case op_SUB: cr -= ProcessOperand(); continue;\r
-        case op_DIV: d=ProcessOperand();\r
-                     if (!d) cr=0; else cr /= d; continue;\r
-        case op_MULT: cr = cr * ProcessOperand(); continue;\r
-        case op_MOD: d=ProcessOperand();\r
-                     if (!d) cr=0; else cr %= d; continue;\r
-        case op_SHL: cr = cr << ProcessOperand(); continue;\r
-        case op_SHR: cr = cr >> ProcessOperand(); continue;\r
-        case op_AND: cr = cr & ProcessOperand(); continue;\r
-        case op_OR:  cr = cr | ProcessOperand(); continue;\r
-        case op_XOR: cr = cr ^ ProcessOperand(); continue;\r
-        case op_END: break;\r
-     }\r
-     break;\r
-  }\r
-  return cr;\r
-}\r
-\r
-int ProcessOperand()\r
-{ byte op_desc=0;\r
-  byte c=0;\r
-  quad d=0;\r
-  quad ofs=0;\r
-\r
-  op_desc=GrabC();\r
-  switch (op_desc)\r
-  {\r
-     case op_IMMEDIATE: return GrabD();\r
-     case op_HVAR0: c=GrabC(); return ReadInt(op_HVAR0, c, 0);\r
-     case op_HVAR1: c=GrabC(); ofs=ResolveOperand(); return ReadInt(op_HVAR1, c, ofs);\r
-     case op_UVAR:  d=GrabD(); return ReadInt(op_UVAR, d, 0);\r
-     case op_UVARRAY: d=GrabD(); d+=ResolveOperand(); return ReadInt(op_UVARRAY, d, 0);\r
-     case op_LVAR: c=GrabC(); return lvar.nargs[c];\r
-     case op_BFUNC: HandleStdLib();\r
-                    return vcreturn;\r
-     case op_UFUNC: HandleExternFunc();\r
-                    return vcreturn;\r
-     case op_GROUP: return ResolveOperand();\r
-     default: sprintf(strbuf,"VC Execution error: Invalid operand %d.",op_desc);\r
-              err(strbuf); break;\r
-  }\r
-  return 0;\r
-}\r
-\r
-void HandleStringOperand(char *buffer)\r
-{\r
-  char tbuf[256];\r
-  char *d=0;\r
-  word w=0;\r
-  int c=0;\r
-  int i=0;\r
-  int j=0;\r
-  int z=0;\r
-\r
-  c=GrabC();\r
-  switch (c)\r
-  {\r
-    case s_IMMEDIATE: GrabString(buffer); break;\r
-    case s_GLOBAL: w=GrabW();\r
-                   d=(char *) (int) stringbuf + (w*256);\r
-                   z=strlen(d);\r
-                   if (strlen(buffer)+z+1>250)\r
-                     err("Combined string length exceeds 250 char max.");\r
-                   memcpy(buffer, d, z+1);\r
-                   break;\r
-    case s_ARRAY:  w=GrabW();\r
-                   w+=ResolveOperand();\r
-                   d=(char *) (int) stringbuf + (w*256);\r
-                   z=strlen(d);\r
-                   if (strlen(buffer)+z+1>250)\r
-                     err("Combined string length exceeds 250 char max.");\r
-                   memcpy(buffer, d, z+1);\r
-                   break;\r
-    case s_NUMSTR: i=ResolveOperand();\r
-                   sprintf(buffer,"%d",i);\r
-                   break;\r
-    case s_LEFT:   ResolveString(tbuf);\r
-                   i=ResolveOperand();\r
-                   c=i<strlen(tbuf) ? i : strlen(tbuf);\r
-                   if (strlen(buffer)+c+1>250)\r
-                     err("Combined string length exceeds 250 char max.");\r
-                   memcpy(buffer, tbuf, c);\r
-                   buffer[c]=0;\r
-                   break;\r
-    case s_RIGHT:  ResolveString(tbuf);\r
-                   i=ResolveOperand();\r
-                   c=i<strlen(tbuf) ? i : strlen(tbuf);\r
-                   if (strlen(buffer)+c+1>250)\r
-                     err("Combined string length exceeds 250 char max.");\r
-                   memcpy(buffer, tbuf+strlen(tbuf)-c, c);\r
-                   buffer[c]=0;\r
-                   break;\r
-    case s_MID:    ResolveString(tbuf);\r
-                   i=ResolveOperand();\r
-                   j=ResolveOperand();\r
-                   i=i<strlen(tbuf) ? i : strlen(tbuf);\r
-                   j=j<strlen(tbuf)-i ? j : strlen(tbuf)-i;\r
-                   if (strlen(buffer)+j+1>250)\r
-                     err("Combined string length exceeds 250 char max.");\r
-                   memcpy(buffer, tbuf+i, j);\r
-                   buffer[j]=0;\r
-                   break;\r
-    case s_CHR:    if (strlen(buffer)+2>50)\r
-                     err("Combined string length exceeds 250 char max.");\r
-                   buffer[0]=(char) ResolveOperand();\r
-                   buffer[1]=0;\r
-                   break;\r
-    case s_LOCAL:  c=GrabC();\r
-                   d=&lvar.s[c*256];\r
-                   z=strlen(d);\r
-                   if (strlen(buffer)+z+1>250)\r
-                     err("Combined string length exceeds 250 char max.");\r
-                   memcpy(buffer, d, z+1);\r
-                   break;\r
-    default: err("Invalid VC string operand %d", (int) c);\r
-  }\r
-}\r
-\r
-void ResolveString(char *buffer)\r
-{ char c=0;\r
-\r
-  HandleStringOperand(buffer);\r
-  while (1)\r
-  {\r
-    c=GrabC();\r
-    switch (c)\r
-    {\r
-      case s_ADD:\r
-        HandleStringOperand((char *) (int) buffer + strlen(buffer)); break;\r
-      case s_END: return;\r
-      default:\r
-        err("VC execution error: Unknown string operator %d",(int) c);\r
-    }\r
-  }\r
-}\r
-\r
-void vcpush(quad info)\r
-{\r
-  if (vcsp>=vcstack+1500) err("VC stack overflow.");\r
-  *vcsp=info;\r
-  vcsp++;\r
-}\r
-\r
-quad vcpop()\r
-{\r
-  if (vcsp==vcstack) err("VC stack underflow.");\r
-  vcsp--;\r
-  return *vcsp;\r
-}\r
-\r
-void  ReadVCVar()\r
-{ int i=0;\r
-  int j=0;\r
-\r
-  strlwr((char *) args[1]);\r
-  for (i=0; i<=numvars; i++)\r
-    if (!strcmp(vars[i].vname, (char *) args[1])) break;\r
-  if (i<numvars)\r
-  {\r
-    j=vars[i].varstartofs;\r
-    if (vars[i].arraylen>1)\r
-      j+=atoi((char *) args[2]);\r
-    j=globalint[j];\r
-    sprintf(strbuf,"%s:%d",vars[i].vname, j);\r
-    Con_Printf(strbuf);\r
-    return;\r
-  }\r
-  for (i=0; i<=numstr; i++)\r
-    if (!strcmp(str[i].vname, (char *) args[1])) break;\r
-  if (i<numstr)\r
-  {\r
-    j=(int) stringbuf + (i*256);\r
-    sprintf(strbuf,"%s:%s",str[i].vname, (char *) j);\r
-    Con_Printf(strbuf);\r
-    return;\r
-  }\r
-  Con_Printf("No such VC variable.");\r
-}\r
-\r
-void WriteVCVar()\r
-{ int i=0;\r
-  int j=0;\r
-\r
-  strlwr((char *) args[1]);\r
-  for (i=0; i<=numvars; i++)\r
-    if (!strcmp(vars[i].vname, (char *) args[1])) break;\r
-  if (i<numvars)\r
-  {\r
-    j=vars[i].varstartofs;\r
-    if (vars[i].arraylen>1)\r
-    {\r
-      j+=atoi((char *) args[2]);\r
-      globalint[j]=atoi((char *) args[3]);\r
-    }\r
-    else globalint[j]=atoi((char *) args[2]);\r
-    sprintf(strbuf,"%s:%d", vars[i].vname, atoi((char *) args[2]));\r
-    Con_Printf(strbuf);\r
-    return;\r
-  }\r
-  for (i=0; i<=numstr; i++)\r
-    if (!strcmp(str[i].vname, (char *) args[1])) break;\r
-  if (i<numstr)\r
-  {\r
-    j=(int) stringbuf + (i*256);\r
-    memcpy((char *) j, (char *) args[2], strlen((char *) args[2])+1);\r
-    sprintf(strbuf,"%s:%s", str[i].vname, (char *) args[2]);\r
-    Con_Printf(strbuf);\r
-    return;\r
-  }\r
-  Con_Printf("No such VC variable.");\r
-}\r
-\r
-// ======================= VC Standard Function Library =======================\r
-\r
-int ClipOn=1;\r
-int LucentOn=0;\r
-\r
-void vc_Exit_()\r
-{\r
-  ResolveString(strbuf);\r
-  err(strbuf);\r
-}\r
-\r
-void vc_Message()\r
-{\r
-  int i=0;\r
-  char str1[100];\r
-\r
-  ResolveString(str1);\r
-  i=ResolveOperand();\r
-  Message(str1, i);\r
-}\r
-\r
-void vc_Malloc()\r
-{\r
-  int i=0;\r
-\r
-  i=ResolveOperand();\r
-  vcreturn=(int) valloc(i, "vcreturn", OID_TEMP);\r
-\r
-  Log("VC allocating %u bytes, ptr at %u.", i, vcreturn);\r
-\r
-  if (!vcreturn) Message("Warning: VC failed malloc", 750);\r
-}\r
-\r
-void vc_Free()\r
-{\r
-  int i=0;\r
-\r
-  i=ResolveOperand();\r
-  vfree((char *) i);\r
-\r
-  Log("VC freeing allocated heap at %u.", i);\r
-}\r
-\r
-void vc_pow()\r
-{\r
-  int i=0;\r
-  int j=0;\r
-\r
-  i=ResolveOperand();\r
-  j=ResolveOperand();\r
-  vcreturn=pow(i,j);\r
-}\r
-\r
-void vc_loadimage()\r
-{\r
-  byte *t=0;\r
-  char s[256];\r
-\r
-  ResolveString(s);\r
-  t=VLoadImageBuf(s);\r
-  vcreturn=(int) t;\r
-}\r
-\r
-void vc_copysprite()\r
-{\r
-  int a=0;\r
-  int b=0;\r
-  int c=0;\r
-  int d=0;\r
-  byte *e=0;\r
-\r
-  a=ResolveOperand();\r
-  b=ResolveOperand();\r
-  c=ResolveOperand();\r
-  d=ResolveOperand();\r
-  e=(byte *) ResolveOperand();\r
-  if (!ClipOn && !LucentOn) CopySprite(a,b,c,d,e);\r
-  if ( ClipOn && !LucentOn) CopySpriteClip(a,b,c,d,e);\r
-  if (!ClipOn &&  LucentOn) CopySpriteLucent(a,b,c,d,e);\r
-  if ( ClipOn &&  LucentOn) CopySpriteLucentClip(a,b,c,d,e);\r
-}\r
-\r
-void vc_tcopysprite()\r
-{\r
-  int a=0;\r
-  int b=0;\r
-  int c=0;\r
-  int d=0;\r
-  byte *e=0;\r
-\r
-  a=ResolveOperand();\r
-  b=ResolveOperand();\r
-  c=ResolveOperand();\r
-  d=ResolveOperand();\r
-  e=(byte *) ResolveOperand();\r
-  if (!ClipOn && !LucentOn) TCopySprite(a,b,c,d,e);\r
-  if ( ClipOn && !LucentOn) TCopySpriteClip(a,b,c,d,e);\r
-  if (!ClipOn &&  LucentOn) TCopySpriteLucent(a,b,c,d,e);\r
-  if ( ClipOn &&  LucentOn) TCopySpriteLucentClip(a,b,c,d,e);\r
-}\r
-\r
-void vc_EntitySpawn()\r
-{\r
-  int a=0;\r
-  int b=0;\r
-  char chrname[80];\r
-\r
-  a=ResolveOperand();\r
-  b=ResolveOperand();\r
-  ResolveString(chrname);\r
-  vcreturn=AllocateEntity(a, b, chrname);\r
-}\r
-\r
-void vc_SetPlayer()\r
-{\r
-  int i=0;\r
-\r
-  i=ResolveOperand();\r
-  if (i>=entities) err("SetPlayer(): Entity index out of range");\r
-\r
-  player=&entity[i];\r
-  playernum=i;\r
-\r
-//  entity[i].movecode=0;\r
-  entity[i].moving=0;\r
-}\r
-\r
-void vc_Map()\r
-{\r
-  hookretrace=0;\r
-  hooktimer=0;\r
-  kill=1;\r
-  ResolveString(startmap);\r
-}\r
-\r
-void vc_LoadFont()\r
-{\r
-  char vcstr[80];\r
-\r
-  ResolveString(vcstr);\r
-  vcreturn=LoadFont(vcstr);\r
-}\r
-\r
-void vc_PlayFLI()\r
-{\r
-  char s[256];\r
-  BITMAP flibuf;\r
-  byte *data=0;\r
-  VFILE *f=0;\r
-  int i=0;\r
-\r
-  ResolveString(s);\r
-  flibuf.w=sx;\r
-  flibuf.h=sy;\r
-  flibuf.data=screen;\r
-  if (!(f=vopen(s))) err("PlayFLI: Could not open %s.",s);\r
-  i=filesize(f);\r
-  data=(byte *) malloc(i);\r
-  if (!data) err("Not enough memory to play FLI.");\r
-  vread(data, i, f);\r
-  vclose(f);\r
-  play_memory_fli(data, &flibuf, 0, ShowPage);\r
-  timer_count=0;\r
-  set_intensity(63);\r
-}\r
-\r
-void vc_PrintString()\r
-{\r
-  char s[256];\r
-  int i=0;\r
-\r
-  i=ResolveOperand();\r
-  ResolveString(s);\r
-  printstring(i,s);\r
-}\r
-\r
-void vc_LoadRaw()\r
-{\r
-  char s[256];\r
-  char *t=0;\r
-  VFILE *f=0;\r
-  int i=0;\r
-\r
-  ResolveString(s);\r
-  if (!(f=vopen(s))) err("LoadRaw(): Could not open file %s",s);\r
-  i=filesize(f);\r
-  t=(char *) valloc(i, "LoadRaw:t", OID_VC);\r
-  vread(t, i, f);\r
-  vclose(f);\r
-  vcreturn=(int) t;\r
-}\r
-\r
-void vc_SetTile()\r
-{\r
-  int x=0;\r
-  int y=0;\r
-  int layr=0;\r
-  int value=0;\r
-\r
-  x=ResolveOperand();\r
-  y=ResolveOperand();\r
-  layr=ResolveOperand();\r
-  value=ResolveOperand();\r
-\r
-  switch (layr)\r
-  {\r
-    case 0:\r
-    case 1:\r
-    case 2:\r
-    case 3:\r
-    case 4:\r
-    case 5: layers[layr][(y*layer[layr].sizex)+x] = (short) value; break;\r
-    case 6: obstruct[(y*layer[0].sizex)+x] = (byte) value; break;\r
-    case 7: zone[(y*layer[0].sizex)+x] = (byte) value; break;\r
-    default: err("SetTile(): Invalid layer value");\r
-  }\r
-}\r
-\r
-void vc_ScaleSprite()\r
-{\r
-  int x,y,iw,ih,dw,dh,image;\r
-\r
-  x=ResolveOperand();\r
-  y=ResolveOperand();\r
-  iw=ResolveOperand();\r
-  ih=ResolveOperand();\r
-  dw=ResolveOperand();\r
-  dh=ResolveOperand();\r
-  image=ResolveOperand();\r
-  if (!LucentOn) CopySpriteZoomClip(x,y,iw,ih,dw,dh,(byte *)image);\r
-  if ( LucentOn) CopySpriteZoomLucentClip(x,y,iw,ih,dw,dh,(byte *)image);\r
-}\r
-\r
-void vc_EntityMove()\r
-{\r
-  int i;\r
-\r
-  i=ResolveOperand();\r
-  entity[i].moving=0;\r
-  entity[i].speedct=0;\r
-\r
-   entity[i].delayct=0;\r
-   entity[i].mode=0;\r
-   entity[i].data1=0;\r
-\r
-  ResolveString((char *) (int) movescriptbuf + (int) (i*256));\r
-  entity[i].scriptofs=(char *) (int) movescriptbuf + (int) (i*256);\r
-  entity[i].movecode=4;\r
-}\r
-\r
-void vc_HLine()\r
-{\r
-  int x, y, x2, c;\r
-\r
-  x=ResolveOperand();\r
-  y=ResolveOperand();\r
-  x2=ResolveOperand();\r
-  c=ResolveOperand();\r
-  if (!LucentOn) HLineClip(x,y,x2,c);\r
-  if ( LucentOn) HLineLucentClip(x,y,x2,c);\r
-\r
-}\r
-\r
-void vc_VLine()\r
-{\r
-  int x, y, y2, c;\r
-\r
-  x=ResolveOperand();\r
-  y=ResolveOperand();\r
-  y2=ResolveOperand();\r
-  c=ResolveOperand();\r
-  if (!LucentOn) VLineClip(x,y,y2,c);\r
-  if ( LucentOn) VLineLucentClip(x,y,y2,c);\r
-}\r
-\r
-void vc_Line()\r
-{\r
-  int x, y, x2, y2, c;\r
-\r
-  x=ResolveOperand();\r
-  y=ResolveOperand();\r
-  x2=ResolveOperand();\r
-  y2=ResolveOperand();\r
-  c=ResolveOperand();\r
-  if (!LucentOn) LineClip(x,y,x2,y2,c);\r
-  if ( LucentOn) LineLucentClip(x,y,x2,y2,c);\r
-}\r
-\r
-void vc_Circle()\r
-{\r
-  int x, y, radius, c;\r
-\r
-  x=ResolveOperand();\r
-  y=ResolveOperand();\r
-  radius=ResolveOperand();\r
-  c=ResolveOperand();\r
-  if (!LucentOn) CircleClip(x,y,radius,c);\r
-  if ( LucentOn) CircleLucentClip(x,y,radius,c);\r
-}\r
-\r
-void vc_CircleFill()\r
-{\r
-  int x, y, radius, c;\r
-\r
-  x=ResolveOperand();\r
-  y=ResolveOperand();\r
-  radius=ResolveOperand();\r
-  c=ResolveOperand();\r
-  if (!LucentOn) CircleFillClip(x,y,radius,c);\r
-  if ( LucentOn) CircleFillLucentClip(x,y,radius,c);\r
-}\r
-\r
-void vc_Rect()\r
-{\r
-  int x, y, x2, y2, c;\r
-\r
-  x=ResolveOperand();\r
-  y=ResolveOperand();\r
-  x2=ResolveOperand();\r
-  y2=ResolveOperand();\r
-  c=ResolveOperand();\r
-  if (!LucentOn) RectClip(x,y,x2,y2,c);\r
-  if ( LucentOn) RectLucentClip(x,y,x2,y2,c);\r
-}\r
-\r
-void vc_RectFill()\r
-{\r
-  int x, y, x2, y2, c;\r
-\r
-  x=ResolveOperand();\r
-  y=ResolveOperand();\r
-  x2=ResolveOperand();\r
-  y2=ResolveOperand();\r
-  c=ResolveOperand();\r
-  if (!LucentOn) RectFillClip(x,y,x2,y2,c);\r
-  if ( LucentOn) RectFillLucentClip(x,y,x2,y2,c);\r
-}\r
-\r
-void vc_strlen()\r
-{\r
-  char str[256];\r
-\r
-  ResolveString(str);\r
-  vcreturn=strlen(str);\r
-}\r
-\r
-void vc_strcmp()\r
-{\r
-  char str1[256], str2[256];\r
-\r
-  ResolveString(str1);\r
-  ResolveString(str2);\r
-  vcreturn=strcmp(str1, str2);\r
-}\r
-\r
-void vc_FontWidth()\r
-{\r
-  int i;\r
-\r
-  i=ResolveOperand();\r
-  if (i>=numfonts)\r
-  {\r
-    vcreturn=0;\r
-    return;\r
-  }\r
-  vcreturn=font[i].width;\r
-}\r
-\r
-void vc_FontHeight()\r
-{\r
-  int i;\r
-\r
-  i=ResolveOperand();\r
-  if (i>=numfonts)\r
-  {\r
-    vcreturn=0;\r
-    return;\r
-  }\r
-  vcreturn=font[i].height;\r
-}\r
-\r
-void vc_SetPixel()\r
-{\r
-  int x, y, c;\r
-\r
-  x=ResolveOperand();\r
-  y=ResolveOperand();\r
-  c=ResolveOperand();\r
-  SetPixelClip(x,y,c);\r
-}\r
-\r
-void vc_GetPixel()\r
-{\r
-  int x, y;\r
-\r
-  x=ResolveOperand();\r
-  y=ResolveOperand();\r
-  vcreturn=GetPixelClip(x,y);\r
-}\r
-\r
-void vc_EntityOnScreen()\r
-{\r
-  int i,j;\r
-\r
-  i=ResolveOperand();\r
-  for (j=0; j<cc; j++)\r
-   if (entidx[j]==i)\r
-   {\r
-     vcreturn=1;\r
-     return;\r
-   }\r
-  vcreturn=0;\r
-}\r
-\r
-void vc_GetTile()\r
-{\r
-  int x, y, l;\r
-\r
-  x=ResolveOperand();\r
-  y=ResolveOperand();\r
-  l=ResolveOperand();\r
-\r
-  switch (l)\r
-  {\r
-    case 0:\r
-    case 1:\r
-    case 2:\r
-    case 3:\r
-    case 4:\r
-    case 5: vcreturn=(int) layers[l][(y*layer[l].sizex)+x]; break;\r
-    case 6: vcreturn=(int) obstruct[(y*layer[0].sizex)+x]; break;\r
-    case 7: vcreturn=(int) zone[(y*layer[0].sizex)+x]; break;\r
-    default: err("GetTile(): Invalid layer value");\r
-  }\r
-}\r
-\r
-void vc_SetResolution()\r
-{\r
-  int xres, yres;\r
-\r
-  xres=ResolveOperand();\r
-  yres=ResolveOperand();\r
-  ShutdownVideo(0);\r
-  vcreturn=InitVideo(xres,yres);\r
-}\r
-\r
-void vc_SetRString()\r
-{\r
-  ResolveString(rstring);\r
-}\r
-\r
-void vc_SetClipRect()\r
-{\r
-  cx1=ResolveOperand();\r
-  cy1=ResolveOperand();\r
-  cx2=ResolveOperand();\r
-  cy2=ResolveOperand();\r
-}\r
-\r
-void vc_SetRenderDest()\r
-{\r
-  sx=ResolveOperand();\r
-  sy=ResolveOperand();\r
-  screen=(byte *) ResolveOperand();\r
-}\r
-\r
-void vc_RestoreRenderSettings()\r
-{\r
-  cx1=0;\r
-  cy1=0;\r
-  cx2=tsx-1;\r
-  cy2=tsy-1;\r
-  sx=tsx;\r
-  sy=tsy;\r
-  screen=vscreen;\r
-}\r
-\r
-void vc_PartyMove()\r
-{\r
-  player=0;\r
-\r
-  entity[playernum].moving=0;\r
-  entity[playernum].speedct=0;\r
-  entity[playernum].delayct=0;\r
-  entity[playernum].mode=0;\r
-  entity[playernum].data1=0;\r
-\r
-  vcpush(cameratracking);\r
-  vcpush(tracker);\r
-  if (cameratracking==1)\r
-  {\r
-    cameratracking=2;\r
-    tracker=playernum;\r
-  }\r
-\r
-  ResolveString((char *) (int) movescriptbuf + (int) (playernum*256));\r
-  entity[playernum].scriptofs=(char *) (int) movescriptbuf + (int) (playernum*256);\r
-  entity[playernum].movecode=4;\r
-\r
-  while (entity[playernum].movecode)\r
-  {\r
-    while (timer_count)\r
-    {\r
-      ProcessEntities();\r
-      timer_count--;\r
-    }\r
-    Render();\r
-    ShowPage();\r
-  }\r
-  tracker=vcpop();\r
-  cameratracking=vcpop();\r
-  player=&entity[playernum];\r
-  timer_count=0;\r
-}\r
-\r
-void vc_WrapBlit()\r
-{\r
-  int a,b,c,d,e;\r
-\r
-  a=ResolveOperand();\r
-  b=ResolveOperand();\r
-  c=ResolveOperand();\r
-  d=ResolveOperand();\r
-  e=ResolveOperand();\r
-  if (!LucentOn) WrapBlit(a,b,c,d,(byte *) e);\r
-            else WrapBlitLucent(a,b,c,d,(byte *) e);\r
-}\r
-\r
-\r
-void vc_TWrapBlit()\r
-{\r
-  int a,b,c,d,e;\r
-\r
-  a=ResolveOperand();\r
-  b=ResolveOperand();\r
-  c=ResolveOperand();\r
-  d=ResolveOperand();\r
-  e=ResolveOperand();\r
-  if (!LucentOn) WrapBlitMasked(a,b,c,d,(byte *) e);\r
-            else WrapBlitLucentMasked(a,b,c,d,(byte *) e);\r
-}\r
-\r
-void vc_SetMousePos()\r
-{\r
-  int x, y;\r
-\r
-  x=ResolveOperand();\r
-  y=ResolveOperand();\r
-  SetMouse(x, y);\r
-}\r
-\r
-void vc_HookRetrace()\r
-{\r
-  int script=0;\r
-  char which;\r
-\r
-  which=GrabC();\r
-  switch (which)\r
-  {\r
-    case 1: script=ResolveOperand(); break;\r
-    case 2: script=GrabD(); break;\r
-  }\r
-  if (which==2) script+=USERFUNC_MARKER;\r
-  hookretrace=script;\r
-}\r
-\r
-void vc_HookTimer()\r
-{\r
-  int script=0;\r
-  char which;\r
-\r
-  which=GrabC();\r
-  switch (which)\r
-  {\r
-    case 1: script=ResolveOperand(); break;\r
-    case 2: script=GrabD(); break;\r
-  }\r
-  if (which==2) script+=USERFUNC_MARKER;\r
-  hooktimer=script;\r
-}\r
-\r
-void vc_HookKey()\r
-{\r
-  int key, script=0;\r
-  char which;\r
-\r
-  key=ResolveOperand();\r
-  which=GrabC();\r
-\r
-  switch (which)\r
-  {\r
-    case 1: script=ResolveOperand(); break;\r
-    case 2: script=GrabD(); break;\r
-  }\r
-  if (which==2) script+=USERFUNC_MARKER;\r
-  bindarray[key]=script;\r
-}\r
-\r
-void vc_PlayMusic()\r
-{\r
-  char songname[256];\r
-\r
-  ResolveString(songname);\r
-  PlayMusic(songname);\r
-}\r
-\r
-void vc_PaletteMorph()\r
-{\r
-  int r,g,b,percent,intensity,i,wr,wg,wb;\r
-\r
-  r=ResolveOperand(); if (r<0) r=0; if (r>63) r=63;\r
-  g=ResolveOperand(); if (g<0) g=0; if (g>63) g=63;\r
-  b=ResolveOperand(); if (b<0) b=0; if (b>63) b=63;\r
-  percent=100-ResolveOperand();\r
-  intensity=ResolveOperand();\r
-\r
-  for (i=0; i<256; i++)\r
-  {\r
-     wr=pal[(i*3)];\r
-     wg=pal[(i*3)+1];\r
-     wb=pal[(i*3)+2];\r
-\r
-     wr=((wr*percent)+(r*(100-percent)))/100;\r
-     wg=((wg*percent)+(g*(100-percent)))/100;\r
-     wb=((wb*percent)+(b*(100-percent)))/100;\r
-\r
-     pal2[(i*3)]=wr*intensity/63;\r
-     pal2[(i*3)+1]=wg*intensity/63;\r
-     pal2[(i*3)+2]=wb*intensity/63;\r
-  }\r
-  SetPalette(pal2);\r
-}\r
-\r
-void EnforceNoDirectories(char *s)\r
-{\r
-  char y[256], *p;\r
-\r
-  strcpy(y, s);\r
-  p=(char *) (int) y + (int) strlen(y);\r
-  while (p>y && *p != '/' && *p != '\\')\r
-    p--;\r
-  if (*p == '/' || *p == '\\') p++;\r
-  strcpy(s, p);\r
-}\r
-\r
-void vc_OpenFile()\r
-{\r
-  VFILE *f;\r
-  char fname[256];\r
-\r
-  ResolveString(fname);\r
-  EnforceNoDirectories(fname);\r
-\r
-  f=vopen(fname);\r
-  vcreturn=(quad) f;\r
-\r
-  Log(" --> VC opened file %s, ptr %u", fname, (quad) f);\r
-}\r
-\r
-void vc_CloseFile()\r
-{\r
-  VFILE *f;\r
-\r
-  f=(VFILE *) ResolveOperand();\r
-  vclose(f);\r
-\r
-  Log(" --> VC closed file at ptr %u", (quad) f);\r
-}\r
-\r
-void vc_QuickRead()\r
-{\r
-  char fname[256], c, *p;\r
-  int d=0, l, i;\r
-  VFILE *f;\r
-  word w=0;\r
-\r
-  ResolveString(fname);\r
-  EnforceNoDirectories(fname);\r
-  c=GrabC();\r
-  if (c==op_STRING)\r
-  {\r
-    w=GrabW();\r
-    d=0;\r
-  }\r
-  if (c==op_SARRAY)\r
-  {\r
-    w=GrabW();\r
-    d=ResolveOperand();\r
-  }\r
-  l=ResolveOperand();\r
-  l=l ? l : 1;\r
-  if (!(f=vopen(fname))) err("QuickRead() - could not open %s",fname);\r
-\r
-  p=(char *) (quad) stringbuf + ((w+d)*256);\r
-  for (i=0; i<l; i++)\r
-    vgets(p, 255, f);\r
-  while (*p)\r
-  {\r
-    if (*p == 10 || *p == 13) *p=0;\r
-    p++;\r
-  }\r
-  vclose(f);\r
-}\r
-\r
-void vc_AddFollower()\r
-{\r
-  int i;\r
-\r
-  i=ResolveOperand();\r
-  if (i>=entities) err("AddFollower(): Not a valid entity index. (%d)",i);\r
-  follower[(int)numfollowers]=i;\r
-  numfollowers++;\r
-//  ResetFollowers();\r
-}\r
-\r
-void vc_FlatPoly()\r
-{\r
-  int a, b, c, d, e, f, g;\r
-\r
-  a=ResolveOperand();\r
-  b=ResolveOperand();\r
-  c=ResolveOperand();\r
-  d=ResolveOperand();\r
-  e=ResolveOperand();\r
-  f=ResolveOperand();\r
-  g=ResolveOperand();\r
-  FlatPoly(a,b,c,d,e,f,g);\r
-}\r
-\r
-void vc_TMapPoly()\r
-{\r
-  int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o;\r
-\r
-  a=ResolveOperand();\r
-  b=ResolveOperand();\r
-  c=ResolveOperand();\r
-  d=ResolveOperand();\r
-  e=ResolveOperand();\r
-  f=ResolveOperand();\r
-  g=ResolveOperand();\r
-  h=ResolveOperand();\r
-  i=ResolveOperand();\r
-  j=ResolveOperand();\r
-  k=ResolveOperand();\r
-  l=ResolveOperand();\r
-  m=ResolveOperand();\r
-  n=ResolveOperand();\r
-  o=ResolveOperand();\r
-  TMapPoly(a,b,c,d,e,f,g,h,i,j,k,l,m,n,(char *) o);\r
-}\r
-\r
-void vc_CacheSound()\r
-{\r
-  char fname[256];\r
-\r
-  ResolveString(fname);\r
-  vcreturn=CacheSound(fname);\r
-\r
-}\r
-\r
-void vc_PlaySound()\r
-{\r
-  int a, b, c;\r
-\r
-  a=ResolveOperand();\r
-  b=ResolveOperand();\r
-  c=ResolveOperand();\r
-  PlaySound(a, b, c);\r
-}\r
-\r
-void vc_RotScale()\r
-{\r
-  int a, b, c, d, e, f, g;\r
-\r
-  a=ResolveOperand();\r
-  b=ResolveOperand();\r
-  c=ResolveOperand();\r
-  d=ResolveOperand();\r
-  e=ResolveOperand();\r
-  f=ResolveOperand();\r
-  g=ResolveOperand();\r
-\r
-  RotScale(a, b, c, d, e*3.14159 / 180, (float) f/1000, (byte *) g);\r
-}\r
-\r
-void vc_MapLine()\r
-{\r
-  int x, y, sy, l;\r
-  int xtc, ytc, xofs, yofs;\r
-\r
-  x=ResolveOperand();\r
-  y=ResolveOperand();\r
-  sy=ResolveOperand();\r
-  l=ResolveOperand();\r
-\r
-  xtc=x >> 4;\r
-  ytc=y >> 4;\r
-  xofs= -(x&15);\r
-  yofs=  (y&15);\r
-\r
-  MapLine(xofs, sy, yofs, (word *) (layers[l]+((ytc*layer[l].sizex)+xtc)));\r
-}\r
-\r
-void vc_TMapLine()\r
-{\r
-  int x, y, sy, l;\r
-  int xtc, ytc, xofs, yofs;\r
-\r
-  x=ResolveOperand();\r
-  y=ResolveOperand();\r
-  sy=ResolveOperand();\r
-  l=ResolveOperand();\r
-\r
-  xtc=x >> 4;\r
-  ytc=y >> 4;\r
-  xofs= -(x&15);\r
-  yofs=  (y&15);\r
-\r
-  TMapLine(xofs, sy, yofs, (word *) (layers[l]+((ytc*layer[l].sizex)+xtc)));\r
-}\r
-\r
-void vc_val()\r
-{\r
-  char s[256];\r
-\r
-  ResolveString(s);\r
-  vcreturn=atoi(s);\r
-}\r
-\r
-void vc_TScaleSprite()\r
-{\r
-  int x,y,iw,ih,dw,dh,image;\r
-\r
-  x=ResolveOperand();\r
-  y=ResolveOperand();\r
-  iw=ResolveOperand();\r
-  ih=ResolveOperand();\r
-  dw=ResolveOperand();\r
-  dh=ResolveOperand();\r
-  image=ResolveOperand();\r
-  if (!LucentOn) TCopySpriteZoomClip(x,y,iw,ih,dw,dh,(byte *) image);\r
-  if ( LucentOn) TCopySpriteZoomLucentClip(x,y,iw,ih,dw,dh,(byte *) image);\r
-}\r
-\r
-void vc_GrabRegion()\r
-{\r
-  int x1, y1, x2, y2;\r
-  int i, j, w, h;\r
-  char *ptr;\r
-\r
-  x1=ResolveOperand();\r
-  y1=ResolveOperand();\r
-  x2=ResolveOperand()+1;\r
-  y2=ResolveOperand()+1;\r
-  ptr=(char *) ResolveOperand();\r
-\r
-  if (x2>sx-1) x2=sx-1;\r
-  if (y2>sy-1) y2=sy-1;\r
-  if (x1<0) x1=0;\r
-  if (y1<0) y1=0;\r
-\r
-  w=x2 - x1;\r
-  h=y2 - y1;\r
-\r
-  for (j=y1; j<y2; j++)\r
-    for (i=x1; i<x2; i++)\r
-      ptr[((j-y1)*w)+i]=screen[(j*sx)+i];\r
-}\r
-\r
-void vc_Log()\r
-{\r
-  char s[256];\r
-\r
-  ResolveString(s);\r
-  Log(s);\r
-}\r
-\r
-void vc_fseekline()\r
-{\r
-  int line, i;\r
-  VFILE *f;\r
-\r
-  line=ResolveOperand();\r
-  f=(VFILE *) ResolveOperand();\r
-\r
-  vseek(f, 0, 0);\r
-  line=( line==0 ? 0 : line-1 );\r
-\r
-  for (i=0; i<line; i++)\r
-    vgets(strbuf, 255, f);\r
-}\r
-\r
-void vc_fseekpos()\r
-{\r
-  int pos;\r
-  VFILE *f;\r
-\r
-  pos=ResolveOperand();\r
-  f=(VFILE *) ResolveOperand();\r
-  vseek(f, pos, 0);\r
-}\r
-\r
-void vc_fread()\r
-{\r
-  char *buffer;\r
-  int len;\r
-  VFILE *f;\r
-\r
-  buffer=(char *) ResolveOperand();\r
-  len=ResolveOperand();\r
-  f=(VFILE *) ResolveOperand();\r
-  vread(buffer, len, f);\r
-}\r
-\r
-void vc_fgetbyte()\r
-{\r
-  VFILE *f;\r
-  byte i;\r
-\r
-  f=(VFILE *) ResolveOperand();\r
-  vread(&i, 1, f);\r
-  vcreturn=(int) i;\r
-}\r
-\r
-void vc_fgetword()\r
-{\r
-  VFILE *f;\r
-  word i;\r
-\r
-  f=(VFILE *) ResolveOperand();\r
-  vread(&i, 2, f);\r
-  vcreturn=(int) i;\r
-}\r
-\r
-void vc_fgetquad()\r
-{\r
-  VFILE *f;\r
-  quad i;\r
-\r
-  f=(VFILE *) ResolveOperand();\r
-  vread(&i, 4, f);\r
-  vcreturn=(int) i;\r
-}\r
-\r
-void vc_fgetline()\r
-{\r
-  char c, *p;\r
-  VFILE *f;\r
-  word w=0;\r
-  quad d;\r
-\r
-  c=GrabC();\r
-  if (c==op_STRING)\r
-  {\r
-    w=GrabW();\r
-    d=0;\r
-  }\r
-  if (c==op_SARRAY)\r
-  {\r
-    w=GrabW();\r
-    d=ResolveOperand();\r
-  }\r
-  f=(VFILE *) ResolveOperand();\r
-  p=(char *) (quad) stringbuf + (w*256);\r
-  vgets(p, 255, f);\r
-  while (*p)\r
-  {\r
-    if (*p == 10 || *p == 13) *p=0;\r
-    p++;\r
-  }\r
-}\r
-\r
-void vc_fgettoken()\r
-{\r
-  char c, *p;\r
-  VFILE *f;\r
-  word w=0;\r
-  quad d;\r
-\r
-  c=GrabC();\r
-  if (c==op_STRING)\r
-  {\r
-    w=GrabW();\r
-    d=0;\r
-  }\r
-  if (c==op_SARRAY)\r
-  {\r
-    w=GrabW();\r
-    d=ResolveOperand();\r
-  }\r
-  f=(VFILE *) ResolveOperand();\r
-  p=(char *) (quad) stringbuf + (w*256);\r
-  vscanf(f, "%s", p);\r
-}\r
-\r
-void vc_fwritestring()\r
-{\r
-  char s[256];\r
-  FILE *f;\r
-\r
-  ResolveString(s);\r
-  f=(FILE *) ResolveOperand();\r
-  fprintf(f,"%s\n",s);\r
-}\r
-\r
-void vc_fwrite()\r
-{\r
-  int a, b, c;\r
-\r
-  a=ResolveOperand();\r
-  b=ResolveOperand();\r
-  c=ResolveOperand();\r
-  fwrite((char *) a, 1, b, (FILE *) c);\r
-}\r
-\r
-void vc_frename()\r
-{\r
-  char s1[256], s2[256];\r
-\r
-  ResolveString(s1);\r
-  ResolveString(s2);\r
-  EnforceNoDirectories(s1);\r
-  EnforceNoDirectories(s2);\r
-  rename(s1, s2);\r
-\r
-  Log(" --> VC renamed %s to %s.", s1, s2);\r
-}\r
-\r
-void vc_fdelete()\r
-{\r
-  char s[256];\r
-\r
-  ResolveString(s);\r
-  EnforceNoDirectories(s);\r
-  remove(s);\r
-\r
-  Log(" --> VC deleted %s.", s);\r
-}\r
-\r
-void vc_fwopen()\r
-{\r
-  char s[256];\r
-\r
-  ResolveString(s);\r
-  EnforceNoDirectories(s);\r
-  vcreturn=(int) fopen(s,"wb");\r
-\r
-  Log(" --> VC opened %s for writing, ptr %u.", s, vcreturn);\r
-}\r
-\r
-void vc_fwclose()\r
-{\r
-  FILE *f;\r
-\r
-  f=(FILE *) ResolveOperand();\r
-  fclose(f);\r
-\r
-  Log(" --> VC close file opened for writing, ptr %u.", (int) f);\r
-}\r
-\r
-void vc_memcpy()\r
-{\r
-  int a, b, c;\r
-\r
-  a=ResolveOperand();\r
-  b=ResolveOperand();\r
-  c=ResolveOperand();\r
-  memcpy((char *) a, (char *) b, c);\r
-}\r
-\r
-void vc_memset()\r
-{\r
-  int a, b, c;\r
-\r
-  a=ResolveOperand();\r
-  b=ResolveOperand();\r
-  c=ResolveOperand();\r
-  memset((char *) a, (byte) b, c);\r
-}\r
-\r
-void vc_Silhouette()\r
-{\r
-  int x=ResolveOperand();\r
-  int y=ResolveOperand();\r
-  int w=ResolveOperand();\r
-  int h=ResolveOperand();\r
-  byte *img=(byte *) ResolveOperand();\r
-  byte c=(byte) ResolveOperand();\r
-\r
-  if (ClipOn)\r
-  {\r
-    LucentOn ? SilhouetteLucentClip(x,y,w,h,c,img)\r
-             : SilhouetteClip(x,y,w,h,c,img);\r
-  }\r
-  else\r
-  {\r
-    LucentOn ? SilhouetteLucent(x,y,w,h,c,img)\r
-             : Silhouette(x,y,w,h,c,img);\r
-  }\r
-}\r
-\r
-void vc_SilhouetteScale()\r
-{\r
-  int x=ResolveOperand();\r
-  int y=ResolveOperand();\r
-  int sw=ResolveOperand();\r
-  int sh=ResolveOperand();\r
-  int dw=ResolveOperand();\r
-  int dh=ResolveOperand();\r
-  byte *img=(byte *) ResolveOperand();\r
-  byte c=(byte) ResolveOperand();\r
-\r
-  if (ClipOn)\r
-  {\r
-    LucentOn ? SilhouetteZoomLucentClip(x,y,sw,sh,dw,dh,c,img)\r
-             : SilhouetteZoomClip(x,y,sw,sh,dw,dh,c,img);\r
-  }\r
-  else\r
-  {\r
-    LucentOn ? SilhouetteZoomLucent(x,y,sw,sh,dw,dh,c,img)\r
-             : SilhouetteZoom(x,y,sw,sh,dw,dh,c,img);\r
-  }\r
-}\r
-\r
-void vc_Tint()\r
-{\r
-  int x=ResolveOperand();\r
-  int y=ResolveOperand();\r
-  int w=ResolveOperand();\r
-  int h=ResolveOperand();\r
-  byte *img=(byte *)ResolveOperand();\r
-  byte c=(byte)ResolveOperand();\r
-\r
-  ClipOn ? TintClip(x,y,w,h,c,img)\r
-         : Tint(x,y,w,h,c,img);\r
-}\r
-\r
-void vc_TintScale()\r
-{\r
-  int x=ResolveOperand();\r
-  int y=ResolveOperand();\r
-  int sw=ResolveOperand();\r
-  int sh=ResolveOperand();\r
-  int dw=ResolveOperand();\r
-  int dh=ResolveOperand();\r
-  byte *img=(byte *) ResolveOperand();\r
-  byte c=(byte) ResolveOperand();\r
-\r
-  ClipOn ? TintZoomClip(x,y,sw,sh,dw,dh,c,img)\r
-         : TintZoom(x,y,sw,sh,dw,dh,c,img);\r
-}\r
-\r
-void vc_Mosaic()\r
-{\r
-  int a,b,c,d,e,f,g;\r
-\r
-  a=ResolveOperand();\r
-  b=ResolveOperand();\r
-  c=ResolveOperand();\r
-  d=ResolveOperand();\r
-  e=ResolveOperand();\r
-  f=ResolveOperand();\r
-  g=ResolveOperand();\r
-  Mosaic(a,b,(byte *) c,d,e,f,g);\r
-}\r
-\r
-void vc_WriteVars()\r
-{\r
-  FILE *f;\r
-\r
-  f=(FILE *) ResolveOperand();\r
-  fwrite(globalint, 4, maxint, f);\r
-  fwrite(stringbuf, 256, stralloc, f);\r
-}\r
-\r
-void vc_ReadVars()\r
-{\r
-  VFILE *f;\r
-\r
-  f=(VFILE *) ResolveOperand();\r
-  vread(globalint, 4*maxint, f);\r
-  vread(stringbuf, 256*stralloc, f);\r
-}\r
-\r
-void vc_Asc()\r
-{\r
-  char s[256];\r
-\r
-  ResolveString(s);\r
-  vcreturn=(int) s[0];\r
-}\r
-\r
-void vc_NumForScript()\r
-{\r
-  vcreturn=GrabD();\r
-}\r
-\r
-void vc_Filesize()\r
-{\r
-  char s[256];\r
-  VFILE *f;\r
-\r
-  ResolveString(s);\r
-  f=vopen(s);\r
-  vcreturn=filesize(f);\r
-  vclose(f);\r
-}\r
-\r
-void vc_FTell()\r
-{\r
-  VFILE *f=(VFILE *)ResolveOperand();\r
-  vcreturn=vtell(f);\r
-}\r
-\r
-void vc_CheckCorrupt()\r
-{\r
-  Log("checking for corruption...");\r
-  CheckCorruption();\r
-}\r
-\r
-void HandleStdLib()\r
-{\r
-  int x=0;\r
-  byte c=0;\r
-\r
-  c=GrabC();\r
-  switch (c)\r
-  {\r
-    case 1: vc_Exit_(); break;\r
-    case 2: vc_Message(); break;\r
-    case 3: vc_Malloc(); break;\r
-    case 4: vc_Free(); break;\r
-    case 5: vc_pow(); break;\r
-    case 6: vc_loadimage(); break;\r
-    case 7: vc_copysprite(); break;\r
-    case 8: vc_tcopysprite(); break;\r
-    case 9: Render(); break;\r
-    case 10: ShowPage(); break;\r
-    case 11: vc_EntitySpawn(); break;\r
-    case 12: vc_SetPlayer(); break;\r
-    case 13: vc_Map(); break;\r
-    case 14: vc_LoadFont(); break;\r
-    case 15: vc_PlayFLI(); break;\r
-    case 16: curx=ResolveOperand(); cury=ResolveOperand(); break;\r
-    case 17: vc_PrintString(); break;\r
-    case 18: vc_LoadRaw(); break;\r
-    case 19: vc_SetTile(); break;\r
-    case 20: allowconsole=ResolveOperand(); break;\r
-    case 21: vc_ScaleSprite(); break;\r
-    case 22: ProcessEntities(); break;\r
-    case 23: UpdateControls(); break;\r
-    case 24: UnPress(ResolveOperand()); break;\r
-    case 25: vc_EntityMove(); break;\r
-    case 26: vc_HLine(); break;\r
-    case 27: vc_VLine(); break;\r
-    case 28: vc_Line(); break;\r
-    case 29: vc_Circle(); break;\r
-    case 30: vc_CircleFill(); break;\r
-    case 31: vc_Rect(); break;\r
-    case 32: vc_RectFill(); break;\r
-    case 33: vc_strlen(); break;\r
-    case 34: vc_strcmp(); break;\r
-    case 35: break; //CD_Stop(); break;\r
-    case 36: ResolveOperand(); break; //CD_Play(ResolveOperand()); break;\r
-    case 37: vc_FontWidth(); break;\r
-    case 38: vc_FontHeight(); break;\r
-    case 39: vc_SetPixel(); break;\r
-    case 40: vc_GetPixel(); break;\r
-    case 41: vc_EntityOnScreen(); break;\r
-    case 42: vcreturn=0;\r
-             if ((x=ResolveOperand()))\r
-               vcreturn=rand()%x;\r
-             break;\r
-    case 43: vc_GetTile(); break;\r
-    case 44: vc_HookRetrace(); break;\r
-    case 45: vc_HookTimer(); break;\r
-    case 46: vc_SetResolution(); break;\r
-    case 47: vc_SetRString(); break;\r
-    case 48: vc_SetClipRect(); break;\r
-    case 49: vc_SetRenderDest(); break;\r
-    case 50: vc_RestoreRenderSettings(); break;\r
-    case 51: vc_PartyMove(); break;\r
-    case 52: vcreturn=sintbl[ResolveOperand()]; break;\r
-    case 53: vcreturn=costbl[ResolveOperand()]; break;\r
-    case 54: vcreturn=tantbl[ResolveOperand()]; break;\r
-    case 55: ReadMouse(); break;\r
-    case 56: ClipOn=ResolveOperand(); break;\r
-    case 57: LucentOn=ResolveOperand(); break;\r
-    case 58: vc_WrapBlit(); break;\r
-    case 59: vc_TWrapBlit(); break;\r
-    case 60: vc_SetMousePos(); break;\r
-    case 61: vc_HookKey(); break;\r
-    case 62: vc_PlayMusic(); break;\r
-    case 63: StopMusic(); break;\r
-    case 64: vc_PaletteMorph(); break;\r
-    case 65: vc_OpenFile(); break;\r
-    case 66: vc_CloseFile(); break;\r
-    case 67: vc_QuickRead(); break;\r
-    case 68: vc_AddFollower(); break;\r
-//    case 69: vc_KillFollower(); break;\r
-//    case 70: vc_KillAllFollowers(); break;\r
-//    case 71: ResetFollowers();\r
-    case 72: vc_FlatPoly(); break;\r
-    case 73: vc_TMapPoly(); break;\r
-    case 74: vc_CacheSound(); break;\r
-    case 75: FreeAllSounds(); break;\r
-    case 76: vc_PlaySound(); break;\r
-    case 77: vc_RotScale(); break;\r
-    case 78: vc_MapLine(); break;\r
-    case 79: vc_TMapLine(); break;\r
-    case 80: vc_val(); break;\r
-    case 81: vc_TScaleSprite(); break;\r
-    case 82: vc_GrabRegion(); break;\r
-    case 83: vc_Log(); break;\r
-    case 84: vc_fseekline(); break;\r
-    case 85: vc_fseekpos(); break;\r
-    case 86: vc_fread(); break;\r
-    case 87: vc_fgetbyte(); break;\r
-    case 88: vc_fgetword(); break;\r
-    case 89: vc_fgetquad(); break;\r
-    case 90: vc_fgetline(); break;\r
-    case 91: vc_fgettoken(); break;\r
-    case 92: vc_fwritestring(); break;\r
-    case 93: vc_fwrite(); break;\r
-    case 94: vc_frename(); break;\r
-    case 95: vc_fdelete(); break;\r
-    case 96: vc_fwopen(); break;\r
-    case 97: vc_fwclose(); break;\r
-    case 98: vc_memcpy(); break;\r
-    case 99: vc_memset(); break;\r
-    case 100: vc_Silhouette(); break;\r
-    case 101: vcreturn=(int) InitMosaicTable(); break;\r
-    case 102: vc_Mosaic(); break;\r
-    case 103: vc_WriteVars(); break;\r
-    case 104: vc_ReadVars(); break;\r
-    case 105: ExecuteEvent(ResolveOperand()); break;\r
-    case 106: vc_Asc(); break;\r
-    case 107: ExecuteUserFunc(ResolveOperand()); break;\r
-    case 108: vc_NumForScript(); break;\r
-    case 109: vc_Filesize(); break;\r
-    case 110: vc_FTell(); break;\r
-    case 111: vc_CheckCorrupt(); break;\r
-    default: err("VC Execution error: Invalid STDLIB index. (%d)",(int) c);\r
-  }\r
-}\r
-\r
-// ========================== VC Interpretation Core ==========================\r
-\r
-int ProcessIf()\r
-{\r
-  byte exec, c;\r
-\r
-  exec=ProcessIfOperand();               // Get base value;\r
-\r
-  while (1)\r
-  {\r
-    c=GrabC();\r
-    switch (c)\r
-    {\r
-      case i_AND: exec=exec & ProcessIfOperand(); continue;\r
-      case i_OR: exec=exec | ProcessIfOperand(); continue;\r
-      case i_UNGROUP: break;\r
-    }\r
-    break;\r
-  }\r
-  return exec;\r
-}\r
-\r
-int ProcessIfOperand()\r
-{\r
-  byte op_desc;\r
-  int eval;\r
-\r
-  eval=ResolveOperand();\r
-  op_desc=GrabC();\r
-  switch (op_desc)\r
-  {\r
-     case i_ZERO: if (!eval) return 1; else return 0;\r
-     case i_NONZERO: if (eval) return 1; else return 0;\r
-     case i_EQUALTO: if (eval == ResolveOperand()) return 1; else return 0;\r
-     case i_NOTEQUAL: if (eval != ResolveOperand()) return 1; else return 0;\r
-     case i_GREATERTHAN: if (eval > ResolveOperand()) return 1; else return 0;\r
-     case i_GREATERTHANOREQUAL: if (eval >= ResolveOperand()) return 1; else return 0;\r
-     case i_LESSTHAN: if (eval < ResolveOperand()) return 1; else return 0;\r
-     case i_LESSTHANOREQUAL: if (eval <= ResolveOperand()) return 1; else return 0;\r
-     case i_GROUP: if (ProcessIf()) return 1; else return 0;\r
-  }\r
-  return 0;\r
-}\r
-\r
-void HandleIf()\r
-{\r
-  char *d;\r
-\r
-  if (ProcessIf())\r
-  {\r
-    GrabD();\r
-    return;\r
-  }\r
-  d=(char *) GrabD();\r
-  code=(char *) (int) basevc + (int) d;\r
-\r
-  return;\r
-}\r
-\r
-void HandleExternFunc()\r
-{\r
-  word i, j, k;\r
-  //lvars *ob   = NULL;\r
-  //lvars *save = NULL;\r
-  lvars temp;\r
-  lvars ob;\r
-\r
-  // save lvar\r
-  memcpy(&temp, &lvar, sizeof(lvars));\r
-\r
-  memset(&ob, 0, sizeof(lvars));\r
-  //ob = (lvars *)valloc(sizeof(lvars)); //2640); //sizeof(lvars)); //2640);\r
-  //MSS_CHECK_POINTER_VALIDITY(ob);\r
-  //MSS_SET_BLOCK_LABEL(ob, "ob");\r
-\r
-  k = 0;\r
-  i = GrabW();\r
-  for (j=0; j<funcs[i].numargs; j++)\r
-  {\r
-    switch (funcs[i].argtype[j])\r
-    {\r
-      case 1: ob.nargs[j] = ResolveOperand(); break;\r
-      case 3: ResolveString(ob.s + (k << 8)), k++; break;\r
-    }\r
-  }\r
-\r
-  // copy in ob\r
-  memcpy(&lvar, &ob, sizeof(lvars));\r
-  //lvar = &ob;\r
-  //save = lvar\r
-  //lvar = ob;\r
-  //ob   = save;\r
-\r
-  vcpush((quad)basevc);\r
-  vcpush((quad)code);\r
-\r
-  basevc = sysvc;\r
-  code = (char *)(sysvc + funcs[i].syscodeofs);\r
-\r
-  if (vctrack)\r
-  {\r
-    Log(" --> Entering user func %s, codeofs %d",\r
-      funcs[i].fname, funcs[i].syscodeofs);\r
-  }\r
-\r
-  ExecuteBlock();\r
-  basevc = (char *)vcpop();\r
-\r
-  // restore lvar\r
-  memcpy(&lvar, &temp, sizeof(lvars));\r
-  //memcpy(lvar, &temp, sizeof(lvars));\r
-  //vfree(lvar);\r
-  //lvar = ob;\r
-\r
-  if (vctrack)\r
-  {\r
-    Log(" --> Returned from %s", funcs[i].fname);\r
-  }\r
-\r
-//  MSS_CHECK_ALL_BLOCKS;\r
-}\r
-\r
-void HandleAssign()\r
-{\r
-  byte c, d;\r
-  word w;\r
-  quad location=0, value, ofs=0;\r
-\r
-  c=GrabC();\r
-  if (c==op_STRING)\r
-  {\r
-    w=GrabW();\r
-    c=GrabC();\r
-    if (c!=a_SET) err("VC execution error: Corrupt string assignment");\r
-    location=(quad) stringbuf + (w*256);\r
-    ResolveString((char *) location);\r
-    return;\r
-  }\r
-  if (c==op_SARRAY)\r
-  {\r
-    w=GrabW();\r
-    w+=ResolveOperand();\r
-    c=GrabC();\r
-    if (c!=a_SET) err("VC execution error: Corrupt string assignment");\r
-    location=(quad) stringbuf + (w*256);\r
-    ResolveString((char *) location);\r
-    return;\r
-  }\r
-  if (c==op_SLOCAL)\r
-  {\r
-    w=GrabW();\r
-    c=GrabC();\r
-    if (c!=a_SET) err("VC execution error: Corrupt string assignment");\r
-    location=(quad) &lvar.s[w*256];\r
-    ResolveString((char *) location);\r
-    return;\r
-  }\r
-  switch (c)\r
-  {\r
-    case op_UVAR:    location=GrabD(); break;\r
-    case op_UVARRAY: location=GrabD(); location+=ResolveOperand(); break;\r
-    case op_HVAR0:   location=(int) GrabC(); break;\r
-    case op_HVAR1:   location=(int) GrabC(); ofs=ResolveOperand(); break;\r
-    case op_LVAR:    location=(int) GrabC(); break;\r
-    default: err("VC Execution error: Unknown assignment category.");\r
-  }\r
-  value=ReadInt(c, location, ofs);\r
-  d=GrabC();\r
-  switch(d)\r
-  {\r
-    case a_SET: value=ResolveOperand(); break;\r
-    case a_INC: value++; break;\r
-    case a_DEC: value--; break;\r
-    case a_INCSET: value+=ResolveOperand(); break;\r
-    case a_DECSET: value-=ResolveOperand(); break;\r
-    default:\r
-      err("VC Execution error: Invalid assignment operator %d.", (int) d);\r
-  }\r
-  WriteInt(c, location, ofs, value);\r
-}\r
-\r
-void HandleSwitch()\r
-{\r
-  int realvalue=0;\r
-  int compvalue=0;\r
-  byte c=0;\r
-  byte *next=0;\r
-\r
-  realvalue=ResolveOperand();\r
-  c=GrabC();\r
-  while (c!=opRETURN)\r
-  {\r
-    compvalue=ResolveOperand();\r
-    next=(byte *) GrabD();\r
-    if (compvalue!=realvalue)\r
-    {\r
-      code=(char *) (int) basevc+(int) next;\r
-      c=GrabC();\r
-      continue;\r
-    }\r
-    ExecuteSection();\r
-    c=GrabC();\r
-  }\r
-}\r
-\r
-void ExecuteVC()\r
-{\r
-  byte c=0;\r
-\r
-  while (1)\r
-  {\r
-    if (kill) break;\r
-    c=GrabC();\r
-    switch (c)\r
-    {\r
-      case opEXEC_STDLIB: HandleStdLib(); break;\r
-      case opEXEC_LOCALFUNC: break;\r
-      case opEXEC_EXTERNFUNC: HandleExternFunc(); break;\r
-      case opIF: HandleIf(); break;\r
-      case opELSE: break;\r
-      case opGOTO: code=basevc+GrabD(); break;\r
-      case opSWITCH: HandleSwitch(); break;\r
-      case opASSIGN: HandleAssign(); break;\r
-      case opRETURN: code=(char *) vcpop(); break;\r
-      case opSETRETVAL: vcreturn=ResolveOperand(); break;\r
-      default:\r
-        err("Internal VC execution error. (%d)",(int) code - (int) basevc);\r
-    }\r
-    if ((int) code != -1) continue; else break;\r
-  }\r
-}\r
-\r
-void ExecuteBlock()\r
-{\r
-  byte c=0;\r
-\r
-  while (1)\r
-  {\r
-    if (kill) break;\r
-    c=GrabC();\r
-    switch (c)\r
-    {\r
-      case opEXEC_STDLIB: HandleStdLib(); break;\r
-      case opEXEC_LOCALFUNC: break;\r
-      case opEXEC_EXTERNFUNC: HandleExternFunc(); break;\r
-      case opIF: HandleIf(); break;\r
-      case opELSE: break;\r
-      case opGOTO: code=basevc+GrabD(); break;\r
-      case opSWITCH: HandleSwitch(); break;\r
-      case opASSIGN: HandleAssign(); break;\r
-      case opRETURN: code=(char *) vcpop(); break;\r
-      case opSETRETVAL: vcreturn=ResolveOperand(); break;\r
-      default:\r
-        err("Internal VC execution error. (%d)",(int) code - (int) basevc);\r
-    }\r
-    if (c != opRETURN) continue; else break;\r
-  }\r
-}\r
-\r
-void ExecuteSection()\r
-{\r
-  byte c=0;\r
-\r
-  while (1)\r
-  {\r
-    if (kill) break;\r
-    c=GrabC();\r
-    switch (c)\r
-    {\r
-      case opEXEC_STDLIB: HandleStdLib(); break;\r
-      case opEXEC_LOCALFUNC: break;\r
-      case opEXEC_EXTERNFUNC: HandleExternFunc(); break;\r
-      case opIF: HandleIf(); break;\r
-      case opELSE: break;\r
-      case opGOTO: code=basevc+GrabD(); break;\r
-      case opSWITCH: HandleSwitch(); break;\r
-      case opASSIGN: HandleAssign(); break;\r
-      case opRETURN: break;\r
-      case opSETRETVAL: vcreturn=ResolveOperand(); break;\r
-      default:\r
-        err("Internal VC execution error. (%d)", (int) code - (int) basevc);\r
-    }\r
-    if (c != opRETURN) continue; else break;\r
-  }\r
-}\r
-\r
-void ExecuteEvent(int i)\r
-{\r
-  invc++;\r
-  vcpush((quad) code);\r
-  vcpush((quad) basevc);\r
-  if (i>mapevents) err("VC event out of bounds (%d)",i);\r
-  basevc=mapvc;\r
-  code=(char *) (int) mapvc + (int) mapvctbl[i];\r
-  vcpush(-1);\r
-  ExecuteVC();\r
-  basevc=(char *) vcpop();\r
-  code=(char *) vcpop();\r
-  invc--;\r
-}\r
-\r
-void ExecuteUserFunc(int i)\r
-{\r
-  //lvars *ob=0;\r
-  lvars temp;\r
-\r
-  // save lvar\r
-  memcpy(&temp, &lvar, sizeof(lvars));\r
-\r
-  vcpush((quad) code);\r
-  vcpush((quad) basevc);\r
-\r
-  if (i > numfuncs)\r
-    err("VC event out of bounds");\r
-\r
-  basevc = sysvc;\r
-  code = (char *)(sysvc + funcs[i].syscodeofs);\r
-\r
-  vcpush(-1);\r
-\r
-  memset(&lvar, 0, sizeof(lvar));\r
-  //ob = lvar;\r
-  //lvar = (lvars *)valloc(sizeof(lvars)); //2640);\r
-  //MSS_SET_BLOCK_LABEL(lvar, "lvar");\r
-\r
-  ExecuteVC();\r
-  basevc = (char *) vcpop();\r
-  code = (char *) vcpop();\r
-\r
-  //free(lvar);\r
-  //lvar = ob;\r
-\r
-  // restore lvar\r
-  memcpy(&lvar, &temp, sizeof(lvars));\r
-}\r
-\r
-void HookRetrace()\r
-{\r
-  if (!hookretrace) return;\r
-  if (hookretrace<USERFUNC_MARKER) ExecuteEvent(hookretrace);\r
-  if (hookretrace>=USERFUNC_MARKER) ExecuteUserFunc(hookretrace-USERFUNC_MARKER);\r
-}\r
-\r
-void HookTimer()\r
-{\r
-  if (!hooktimer) return;\r
-  if (hooktimer<USERFUNC_MARKER) ExecuteEvent(hooktimer);\r
-  if (hooktimer>=USERFUNC_MARKER) ExecuteUserFunc(hooktimer-USERFUNC_MARKER);\r
-}\r
-\r
-void HookKey(int script)\r
-{\r
-  if (!script) return;\r
-  if (script<USERFUNC_MARKER) ExecuteEvent(script);\r
-  if (script>=USERFUNC_MARKER) ExecuteUserFunc(script-USERFUNC_MARKER);\r
-}\r
diff --git a/16/v2/source/verge/ENGINE/VC.H b/16/v2/source/verge/ENGINE/VC.H
deleted file mode 100755 (executable)
index 00906ce..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef VC_H\r
-#define VC_H\r
-\r
-typedef struct\r
-{\r
-  char fname[40];\r
-  char argtype[12];\r
-  int numargs;\r
-  int returntype;\r
-  int syscodeofs;\r
-} funcdecl;\r
-\r
-extern funcdecl funcs[100];\r
-extern int numfuncs, mapevents;\r
-extern int hookretrace, hooktimer;\r
-\r
-typedef struct\r
-{\r
-  char vname[40];\r
-  int varstartofs;\r
-  int arraylen;\r
-} vardecl;\r
-\r
-extern vardecl vars[100];\r
-extern int numvars, invc;\r
-extern char *mapvc, kill;\r
-extern char *vcsp, *vcstack;\r
-\r
-void LoadSystemVC();\r
-void LoadMapVC(VFILE *f);\r
-void ReadVCVar();\r
-void WriteVCVar();\r
-void ExecuteEvent(int);\r
-void ExecuteUserFunc(int);\r
-\r
-void HookRetrace();\r
-void HookTimer();\r
-void HookKey(int script);\r
-\r
-#endif\r
diff --git a/16/v2/source/verge/ENGINE/VCCODE.H b/16/v2/source/verge/ENGINE/VCCODE.H
deleted file mode 100755 (executable)
index 7449513..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-// We never use zero as a tag. This makes it easier to track down misbehaving\r
-// VC code, since zero is commonly come-by when going off into uncharted\r
-// depths of memory.\r
-\r
-#define ERROR                 0\r
-\r
-// Opcode values.\r
-\r
-#define opEXEC_STDLIB         1\r
-#define opEXEC_LOCALFUNC      2\r
-#define opEXEC_EXTERNFUNC     3\r
-#define opIF                  4\r
-#define opELSE                5\r
-#define opGOTO                6\r
-#define opSWITCH              7\r
-#define opCASE                8\r
-#define opRETURN              9\r
-#define opASSIGN              10\r
-#define opSETRETVAL           11\r
-#define opSETLOCALSTACK       12\r
-\r
-// Operand types.\r
-\r
-#define op_IMMEDIATE          1\r
-#define op_HVAR0              2\r
-#define op_HVAR1              3\r
-#define op_UVAR               4\r
-#define op_UVARRAY            5\r
-#define op_LVAR               6\r
-#define op_BFUNC              7\r
-#define op_UFUNC              8\r
-#define op_GROUP              9\r
-#define op_STRING             10\r
-#define op_SARRAY             11\r
-#define op_SLOCAL             12\r
-\r
-// Variable types.\r
-\r
-#define v_IMMEDIATE           1  // is this necessary?\r
-#define v_CHAR                2\r
-#define v_PTR                 3\r
-#define v_INT                 4\r
-\r
-// IF relational operators.\r
-\r
-#define i_ZERO                1\r
-#define i_NONZERO             2\r
-#define i_EQUALTO             3\r
-#define i_NOTEQUAL            4\r
-#define i_GREATERTHAN         5\r
-#define i_LESSTHAN            6\r
-#define i_GREATERTHANOREQUAL  7\r
-#define i_LESSTHANOREQUAL     8\r
-#define i_GROUP               9\r
-#define i_UNGROUP             10\r
-#define i_AND                 11\r
-#define i_OR                  12\r
-\r
-// Assignment operators.\r
-\r
-#define a_SET                 1\r
-#define a_INC                 2\r
-#define a_DEC                 3\r
-#define a_INCSET              4\r
-#define a_DECSET              5\r
-#define a_MULTSET             6\r
-#define a_DIVSET              7\r
-\r
-// Operand combination operators.\r
-\r
-#define op_ADD                1\r
-#define op_SUB                2\r
-#define op_MULT               3\r
-#define op_DIV                4\r
-#define op_MOD                5\r
-#define op_SHL                6\r
-#define op_SHR                7\r
-#define op_AND                8\r
-#define op_OR                 9\r
-#define op_XOR                10\r
-#define op_END                11\r
-\r
-// String components\r
-\r
-#define s_IMMEDIATE           1\r
-#define s_GLOBAL              2\r
-#define s_ARRAY               3\r
-#define s_NUMSTR              4\r
-#define s_LEFT                5\r
-#define s_RIGHT               6\r
-#define s_MID                 7\r
-#define s_LOCAL               8\r
-#define s_ADD                 9\r
-#define s_CHR                 10\r
-#define s_END                 11\r
diff --git a/16/v2/source/verge/ENGINE/VDRIVER.C b/16/v2/source/verge/ENGINE/VDRIVER.C
deleted file mode 100755 (executable)
index 69008c6..0000000
+++ /dev/null
@@ -1,2814 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#define VDRIVER_H\r
-\r
-#include <malloc.h>\r
-#include <mem.h>\r
-#include <conio.h>\r
-#include <math.h>\r
-#include "verge.h"\r
-\r
-#define SWAP(a,b) { a-=b; b+=a; a=b-a; }\r
-\r
-// ================================= Data ====================================\r
-\r
-char *DriverDesc;\r
-\r
-byte *screen,*video,*vscreen;\r
-byte pal[768], pal2[768];\r
-byte *translucency_table;\r
-\r
-int sx, sy;\r
-int tx, ty;\r
-int tsx, tsy;\r
-int cx1=0,cy1=0,cx2=319,cy2=199;\r
-\r
-// Driver function-pointers.\r
-int (*ShutdownVideo) (int i);\r
-int (*ShowPage) (void);\r
-\r
-// ================================= Code ====================================\r
-\r
-void SetPalette(byte *pall)\r
-{ quad i;\r
-\r
-  outp(0x03c8, 0);\r
-  for (i=0; i<768; i++)\r
-    outp(0x03c9, pall[i]);\r
-}\r
-\r
-void GetPalette()\r
-{ quad i;\r
-\r
-  outp(0x03c7, 0);\r
-  for (i=0; i<768; i++)\r
-    pal[i]=inp(0x03c9);\r
-}\r
-\r
-void set_intensity(quad n)\r
-{ quad i;\r
-\r
-  for (i=0; i<768; i++)\r
-    pal2[i] = (pal[i] * n) >> 6;\r
-\r
-  SetPalette(pal2);\r
-}\r
-\r
-int LFB_ShowPage(void)\r
-{\r
-  if (key[SCAN_ALT] && key[SCAN_X]) err("Exiting: ALT-X pressed.");\r
-  RenderGUI();\r
-  cpubyte=PFLIP;\r
-  memcpy(video,screen,sx*sy);\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-void CopySprite(int x, int y, int width, int height, byte *src)\r
-{\r
-  byte *d;\r
-\r
-  cpubyte=RENDER;\r
-  d=screen+(y*sx)+x;\r
-  for (; height; height--)\r
-  {\r
-    memcpy(d,src,width);\r
-    src+=width;\r
-    d+=sx;\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-void TCopySprite(int x, int y, int width, int height, byte *src)\r
-{\r
-  byte *d, c;\r
-\r
-  cpubyte=RENDER;\r
-  d=screen+(y*sx)+x;\r
-  for (; height; height--)\r
-  {\r
-    for (x=0; x<width; x++,src++)\r
-    {\r
-      c=*src;\r
-      if (c)\r
-        d[x]=c;\r
-    }\r
-    d+=sx;\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-void CopySpriteLucent(int x, int y, int width, int height, byte *src)\r
-{\r
-  byte *d;\r
-\r
-  cpubyte=RENDER;\r
-  d=screen+(y*sx)+x;\r
-  for (; height; height--)\r
-  {\r
-    for (x=0; x<width; x++,src++)\r
-      d[x]=translucency_table[d[x]|(*src<<8)];\r
-    d+=sx;\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-void TCopySpriteLucent(int x, int y, int width, int height, byte *src)\r
-{\r
-  byte *d, c;\r
-\r
-  cpubyte=RENDER;\r
-  d=screen+(y*sx)+x;\r
-  for (; height; height--)\r
-  {\r
-    for (x=0; x<width; x++,src++)\r
-    {\r
-      c=*src;\r
-      if (c)\r
-        d[x]=translucency_table[d[x]|(c<<8)];\r
-    }\r
-    d+=sx;\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-void CopySpriteZoom(int x, int y, int sw, int sh, int dw, int dh, byte *src)\r
-{\r
-  int i,j;\r
-  int xerr,yerr;\r
-  int xadj,yadj;\r
-  byte *d;\r
-\r
-  cpubyte=RENDER;\r
-  if (dw<1 || dh<1) return;\r
-  xadj = (sw<<16)/dw;\r
-  yadj = (sh<<16)/dh;\r
-  d = screen+(y*sx)+x;\r
-  yerr=0;\r
-\r
-  for (i=0; i<dh; i++)\r
-  {\r
-    xerr=0;\r
-    for (j=0; j<dw; j++)\r
-    {\r
-      d[j]=src[(xerr>>16)];\r
-      xerr+=xadj;\r
-    }\r
-    d+=sx;\r
-    yerr+=yadj;\r
-    src+=(yerr>>16)*sw;\r
-    yerr &= 0xffff;\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-void TCopySpriteZoom(int x, int y, int sw, int sh, int dw, int dh, byte *src)\r
-{\r
-  int i,j;\r
-  int xerr,yerr;\r
-  int xadj,yadj;\r
-  byte *d;\r
-  byte c;\r
-\r
-  cpubyte=RENDER;\r
-  if (dw<1 || dh<1) return;\r
-  xadj = (sw<<16)/dw;\r
-  yadj = (sh<<16)/dh;\r
-  d = screen+(y*sx)+x;\r
-  yerr=0;\r
-  for (i=0; i<dh; i++)\r
-  {\r
-    xerr=0;\r
-    for (j=0; j<dw; j++)\r
-    {\r
-      c=src[(xerr>>16)];\r
-      if (c)\r
-        d[j]=c;\r
-      xerr+=xadj;\r
-    }\r
-    d+=sx;\r
-    yerr+=yadj;\r
-    src+=(yerr>>16)*sw;\r
-    yerr &= 0xffff;\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-void CopySpriteZoomLucent(int x, int y, int sw, int sh, int dw, int dh, byte *src)\r
-{\r
-  int i,j;\r
-  int xerr,yerr;\r
-  int xadj,yadj;\r
-  byte *d;\r
-\r
-  cpubyte=RENDER;\r
-  if (dw<1 || dh<1) return;\r
-  xadj = (sw<<16)/dw;\r
-  yadj = (sh<<16)/dh;\r
-  d = screen+(y*sx)+x;\r
-  yerr=0;\r
-\r
-  for (i=0; i<dh; i++)\r
-  {\r
-    xerr=0;\r
-    for (j=0; j<dw; j++)\r
-    {\r
-      d[j]=translucency_table[d[j]|(src[(xerr>>16)]<<8)];\r
-      xerr+=xadj;\r
-    }\r
-    d+=sx;\r
-    yerr+=yadj;\r
-    src+=(yerr>>16)*sw;\r
-    yerr &= 0xffff;\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-void TCopySpriteZoomLucent(int x, int y, int sw, int sh, int dw, int dh, byte *src)\r
-{\r
-  int i,j;\r
-  int xerr,yerr;\r
-  int xadj,yadj;\r
-  byte *d;\r
-  byte c;\r
-\r
-  cpubyte=RENDER;\r
-  if (dw<1 || dh<1) return;\r
-  xadj = (sw<<16)/dw;\r
-  yadj = (sh<<16)/dh;\r
-  d = screen+(y*sx)+x;\r
-  yerr=0;\r
-\r
-  for (i=0; i<dh; i++)\r
-  {\r
-    xerr=0;\r
-    for (j=0; j<dw; j++)\r
-    {\r
-      c=src[(xerr>>16)];\r
-      if (c)\r
-        d[j]=c;\r
-      xerr+=xadj;\r
-    }\r
-    d+=sx;\r
-    yerr+=yadj;\r
-    src+=(yerr>>16)*sw;\r
-    yerr &= 0xffff;\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-void Silhouette(int x, int y, int width, int height, int color, byte *src)\r
-{\r
-  byte *d=0;\r
-\r
-  cpubyte=RENDER;\r
-  if (height<1 || width<1) return;\r
-  d=screen+(y*sx)+x;\r
-  do {\r
-    for (x=0; x<width; x++)\r
-    {\r
-      if (src[x])\r
-        d[x]=color;\r
-    }\r
-    src+=width;\r
-    d+=sx;\r
-  } while (--height);\r
-  cpubyte=ETC;\r
-}\r
-\r
-void SilhouetteZoom(int x, int y, int sw, int sh, int dw, int dh, int color, byte *src)\r
-{\r
-  int xerr=0,yerr=0;\r
-  int xadj=0,yadj=0;\r
-  byte *d=0;\r
-\r
-  cpubyte=RENDER;\r
-  if (dw<1 || dh<1) return;\r
-  xadj=(sw<<16)/dw;\r
-  yadj=(sh<<16)/dh;\r
-  d=screen+(y*sx)+x;\r
-  yerr=0;\r
-  do {\r
-    xerr=0;\r
-    for (x=0; x<dw; x++)\r
-    {\r
-      if (src[(xerr>>16)])\r
-        d[x]=color;\r
-      xerr+=xadj;\r
-    }\r
-    d+=sx;\r
-    yerr+=yadj;\r
-    src+=(yerr>>16)*sw;\r
-    yerr &= 0xffff;\r
-  } while (--dh);\r
-  cpubyte=ETC;\r
-}\r
-\r
-void SilhouetteLucent(int x, int y, int width, int height, int color, byte *src)\r
-{\r
-  byte *d=0;\r
-  byte *range=0;\r
-\r
-  cpubyte=RENDER;\r
-  if (width<1 || height<1) return;\r
-  d=screen+(y*sx)+x;\r
-  range=translucency_table+(color<<8);\r
-  do {\r
-    for (x=0; x<width; x++)\r
-    {\r
-      if (src[x])\r
-        d[x]=range[d[x]];\r
-    }\r
-    src+=width;\r
-    d+=sx;\r
-  } while (--height);\r
-  cpubyte=ETC;\r
-}\r
-\r
-void SilhouetteZoomLucent(int x, int y, int sw, int sh, int dw, int dh, int color, byte *src)\r
-{\r
-  int xerr=0,yerr=0;\r
-  int xadj=0,yadj=0;\r
-  byte *d=0;\r
-  byte *range=0;\r
-\r
-  cpubyte=RENDER;\r
-  if (dw<1 || dh<1) return;\r
-  xadj=(sw<<16)/dw;\r
-  yadj=(sh<<16)/dh;\r
-  d=screen+(y*sx)+x;\r
-  range=translucency_table+(color<<8);\r
-  yerr=0;\r
-  do {\r
-    xerr=0;\r
-    for (x=0; x<dw; x++)\r
-    {\r
-      if (src[(xerr>>16)])\r
-        d[x]=range[d[x]];\r
-      xerr+=xadj;\r
-    }\r
-    d+=sx;\r
-    yerr+=yadj;\r
-    src+=(yerr>>16)*sw;\r
-    yerr &= 0xffff;\r
-  } while (--dh);\r
-  cpubyte=ETC;\r
-}\r
-\r
-// aen\r
-void Tint(int x, int y, int width, int height, int color, byte *src)\r
-{\r
-  byte *d=0;\r
-  byte *range=0;\r
-  byte c=0;\r
-\r
-  cpubyte=RENDER;\r
-  if (width<1 || height<1) return;\r
-  d=screen+(y*sx)+x;\r
-  range=translucency_table+(color<<8);\r
-  do {\r
-    for (x=0; x<width; x++)\r
-    {\r
-      c=src[x];\r
-      if (c)\r
-        d[x]=range[c];\r
-    }\r
-    src+=width;\r
-    d+=sx;\r
-  } while (--height);\r
-  cpubyte=ETC;\r
-}\r
-\r
-// aen\r
-void TintZoom(int x, int y, int sw, int sh, int dw, int dh, int color, byte *src)\r
-{\r
-  int xerr=0,yerr=0;\r
-  int xadj=0,yadj=0;\r
-  byte *d=0;\r
-  byte *range=0;\r
-  byte c=0;\r
-\r
-  cpubyte=RENDER;\r
-  if (dw<1 || dh<1) return;\r
-  xadj=(sw<<16)/dw;\r
-  yadj=(sh<<16)/dh;\r
-  d=screen+(y*sx)+x;\r
-  range=translucency_table+(color<<8);\r
-  yerr=0;\r
-  do {\r
-    xerr=0;\r
-    for (x=0; x<dw; x++)\r
-    {\r
-      c=src[(xerr>>16)];\r
-      if (c)\r
-        d[x]=range[c];\r
-      xerr+=xadj;\r
-    }\r
-    d+=sx;\r
-    yerr+=yadj;\r
-    src+=(yerr>>16)*sw;\r
-    yerr &= 0xffff;\r
-  } while (--dh);\r
-  cpubyte=ETC;\r
-}\r
-\r
-void CopySpriteClip(int x, int y, int width, int height, byte *src)\r
-{\r
-  byte *s,*d;\r
-  int xl,yl,xs,ys;\r
-\r
-  cpubyte=RENDER;\r
-  xl=width;\r
-  yl=height;\r
-  xs=ys=0;\r
-  if (x>cx2 || y>cy2 || x+xl<cx1 || y+yl<cy1)\r
-    return;\r
-\r
-  if (x+xl > cx2) xl=cx2-x+1;\r
-  if (y+yl > cy2) yl=cy2-y+1;\r
-  if (x<cx1) { xs=cx1-x; xl-=xs; x=cx1; }\r
-  if (y<cy1) { ys=cy1-y; yl-=ys; y=cy1; }\r
-\r
-  s=src+(ys*width)+xs;\r
-  d=screen+(y*sx)+x;\r
-\r
-  for (; yl; yl--)\r
-  {\r
-    memcpy(d,s,xl);\r
-    s+=width;\r
-    d+=sx;\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-void TCopySpriteClip(int x, int y, int width, int height, byte *src)\r
-{\r
-  byte *s,*d,c;\r
-  int xl,yl,xs,ys;\r
-\r
-  cpubyte=RENDER;\r
-  xl=width;\r
-  yl=height;\r
-  xs=ys=0;\r
-  if (x>cx2 || y>cy2 || x+xl<cx1 || y+yl<cy1)\r
-    return;\r
-  if (x+xl > cx2) xl=cx2-x+1;\r
-  if (y+yl > cy2) yl=cy2-y+1;\r
-  if (x<cx1) { xs=cx1-x; xl-=xs; x=cx1; }\r
-  if (y<cy1) { ys=cy1-y; yl-=ys; y=cy1; }\r
-  s=src+(ys*width)+xs;\r
-  d=screen+(y*sx)+x;\r
-\r
-  for (; yl; yl--)\r
-  {\r
-    for (x=0; x<xl; x++)\r
-    {\r
-      c=s[x];\r
-      if (c)\r
-        d[x]=c;\r
-    }\r
-    s+=width;\r
-    d+=sx;\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-void CopySpriteLucentClip(int x, int y, int width, int height, byte *src)\r
-{\r
-  byte *s,*d;\r
-  int xl,yl,xs,ys;\r
-\r
-  cpubyte=RENDER;\r
-  xl=width;\r
-  yl=height;\r
-  xs=ys=0;\r
-  if (x>cx2 || y>cy2 || x+xl<cx1 || y+yl<cy1)\r
-    return;\r
-\r
-  if (x+xl > cx2) xl=cx2-x+1;\r
-  if (y+yl > cy2) yl=cy2-y+1;\r
-\r
-  if (x<cx1) { xs=cx1-x; xl-=xs; x=cx1; }\r
-  if (y<cy1) { ys=cy1-y; yl-=ys; y=cy1; }\r
-\r
-  s=src+(ys*width)+xs;\r
-  d=screen+(y*sx)+x;\r
-\r
-  for (; yl; yl--)\r
-  {\r
-    for (x=0; x<xl; x++)\r
-      d[x]=translucency_table[d[x]|(s[x]<<8)];\r
-\r
-    s+=width;\r
-    d+=sx;\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-void TCopySpriteLucentClip(int x, int y, int width, int height, byte *src)\r
-{\r
-  byte *s,*d,c;\r
-  int xl,yl,xs,ys;\r
-\r
-  cpubyte=RENDER;\r
-  xl=width;\r
-  yl=height;\r
-  xs=ys=0;\r
-  if (x>cx2 || y>cy2 || x+xl<cx1 || y+yl<cy1)\r
-    return;\r
-  if (x+xl > cx2) xl=cx2-x+1;\r
-  if (y+yl > cy2) yl=cy2-y+1;\r
-  if (x<cx1) { xs=cx1-x; xl-=xs; x=cx1; }\r
-  if (y<cy1) { ys=cy1-y; yl-=ys; y=cy1; }\r
-\r
-  s=src+(ys*width)+xs;\r
-  d=screen+(y*sx)+x;\r
-\r
-  for (; yl; yl--)\r
-  {\r
-    for (x=0; x<xl; x++)\r
-    {\r
-      c=s[x];\r
-      if (c)\r
-        d[x]=translucency_table[d[x]|(c<<8)];\r
-    }\r
-    s+=width;\r
-    d+=sx;\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-void CopySpriteZoomClip(int x, int y, int sw, int sh, int dw, int dh, byte *src)\r
-{\r
-  int i,j;\r
-  int xerr,yerr;\r
-  int xerr_start, yerr_start;\r
-  int xadj,yadj;\r
-  byte *d;\r
-  int xl,yl,xs,ys;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  if (dw<1 || dh<1) return;\r
-  xl=dw;\r
-  yl=dh;\r
-  xs=ys=0;\r
-  if (x>cx2 || y>cy2 || x+xl<cx1 || y+yl<cy1)\r
-    return;\r
-  if (x+xl > cx2) xl=cx2-x+1;\r
-  if (y+yl > cy2) yl=cy2-y+1;\r
-  if (x<cx1) { xs=cx1-x; xl-=xs; x=cx1; }\r
-  if (y<cy1) { ys=cy1-y; yl-=ys; y=cy1; }\r
-\r
-  xadj = (sw<<16)/dw;\r
-  yadj = (sh<<16)/dh;\r
-  xerr_start = xadj * xs;\r
-  yerr_start = yadj * ys;\r
-\r
-  if (ys) src+=((yerr_start>>16)*sw);\r
-  d = screen+(y*sx)+x;\r
-  yerr = yerr_start & 0xffff;\r
-  for (i=0; i<yl; i++)\r
-  {\r
-    xerr = xerr_start;\r
-    for (j=0; j<xl; j++)\r
-    {\r
-      d[j]=src[(xerr>>16)];\r
-      xerr+=xadj;\r
-    }\r
-    d+=sx;\r
-    yerr += yadj;\r
-    src += (yerr>>16)*sw;\r
-    yerr &= 0xffff;\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-void TCopySpriteZoomClip(int x, int y, int sw, int sh, int dw, int dh, byte *src)\r
-{\r
-  int i,j;\r
-  int xerr,yerr;\r
-  int xerr_start, yerr_start;\r
-  int xadj,yadj;\r
-  byte *d;\r
-  byte c;\r
-  int xl,yl,xs,ys;\r
-\r
-  cpubyte=RENDER;\r
-  if (dw<1 || dh<1) return;\r
-\r
-  xl=dw;\r
-  yl=dh;\r
-  xs=ys=0;\r
-  if (x>cx2 || y>cy2 || x+xl<cx1 || y+yl<cy1)\r
-    return;\r
-\r
-  if (x+xl > cx2) xl=cx2-x+1;\r
-  if (y+yl > cy2) yl=cy2-y+1;\r
-  if (x<cx1) { xs=cx1-x; xl-=xs; x=cx1; }\r
-  if (y<cy1) { ys=cy1-y; yl-=ys; y=cy1; }\r
-  xadj = (sw<<16)/dw;\r
-  yadj = (sh<<16)/dh;\r
-  xerr_start = xadj * xs;\r
-  yerr_start = yadj * ys;\r
-\r
-  if (ys) src+=((yerr_start>>16)*sw);\r
-  d = screen+(y*sx)+x;\r
-  yerr = yerr_start & 0xffff;\r
-  for (i=0; i<yl; i++)\r
-  {\r
-    xerr = xerr_start;\r
-    for (j=0; j<xl; j++)\r
-    {\r
-      c=src[(xerr>>16)];\r
-      if (c)\r
-        d[j]=c;\r
-      xerr+=xadj;\r
-    }\r
-    d+=sx;\r
-    yerr += yadj;\r
-    src += (yerr>>16)*sw;\r
-    yerr &= 0xffff;\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-void CopySpriteZoomLucentClip(int x, int y, int sw, int sh, int dw, int dh, byte *src)\r
-{\r
-  int i,j;\r
-  int xerr,yerr;\r
-  int xerr_start, yerr_start;\r
-  int xadj,yadj;\r
-  byte *d;\r
-  int xl,yl,xs,ys;\r
-\r
-  cpubyte=RENDER;\r
-  if (dw<1 || dh<1) return;\r
-  xl=dw;\r
-  yl=dh;\r
-  xs=ys=0;\r
-\r
-  if (x>cx2 || y>cy2 || x+xl<cx1 || y+yl<cy1)\r
-    return;\r
-  if (x+xl > cx2) xl=cx2-x+1;\r
-  if (y+yl > cy2) yl=cy2-y+1;\r
-  if (x<cx1) { xs=cx1-x; xl-=xs; x=cx1; }\r
-  if (y<cy1) { ys=cy1-y; yl-=ys; y=cy1; }\r
-  xadj = (sw<<16)/dw;\r
-  yadj = (sh<<16)/dh;\r
-  xerr_start = xadj * xs;\r
-  yerr_start = yadj * ys;\r
-\r
-  if (ys) src+=((yerr_start>>16)*sw);\r
-  d = screen+(y*sx)+x;\r
-  yerr = yerr_start & 0xffff;\r
-  for (i=0; i<yl; i++)\r
-  {\r
-    xerr = xerr_start;\r
-    for (j=0; j<xl; j++)\r
-    {\r
-      d[j]=translucency_table[d[j]|(src[(xerr>>16)]<<8)];\r
-      xerr+=xadj;\r
-    }\r
-    d+=sx;\r
-    yerr += yadj;\r
-    src += (yerr>>16)*sw;\r
-    yerr &= 0xffff;\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-void TCopySpriteZoomLucentClip(int x, int y, int sw, int sh, int dw, int dh, byte *src)\r
-{\r
-  int i,j;\r
-  int xerr,yerr;\r
-  int xerr_start, yerr_start;\r
-  int xadj,yadj;\r
-  byte *d;\r
-  int c;\r
-  int xl,yl,xs,ys;\r
-\r
-  cpubyte=RENDER;\r
-  if (dw<1 || dh<1) return;\r
-  xl=dw;\r
-  yl=dh;\r
-  xs=ys=0;\r
-  if (x>cx2 || y>cy2 || x+xl<cx1 || y+yl<cy1)\r
-    return;\r
-  if (x+xl > cx2) xl=cx2-x+1;\r
-  if (y+yl > cy2) yl=cy2-y+1;\r
-  if (x<cx1) { xs=cx1-x; xl-=xs; x=cx1; }\r
-  if (y<cy1) { ys=cy1-y; yl-=ys; y=cy1; }\r
-\r
-  xadj = (sw<<16)/dw;\r
-  yadj = (sh<<16)/dh;\r
-  xerr_start = xadj * xs;\r
-  yerr_start = yadj * ys;\r
-  if (ys) src+=((yerr_start>>16)*sw);\r
-    d = screen+(y*sx)+x;\r
-  yerr = yerr_start & 0xffff;\r
-  for (i=0; i<yl; i++)\r
-  {\r
-    xerr = xerr_start;\r
-    for (j=0; j<xl; j++)\r
-    {\r
-      c=src[(xerr>>16)];\r
-      if (c)\r
-        d[j]=translucency_table[d[j]|(c<<8)];\r
-      xerr+=xadj;\r
-    }\r
-    d+=sx;\r
-    yerr += yadj;\r
-    src += (yerr>>16)*sw;\r
-    yerr &= 0xffff;\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-void SilhouetteClip(int x, int y, int width, int height, int color, byte *src)\r
-{\r
-  byte *s=0,*d=0;\r
-  int xl=0,yl=0,xs=0,ys=0;\r
-\r
-  cpubyte=RENDER;\r
-  xl=width;\r
-  yl=height;\r
-  xs=ys=0;\r
-  if (x>cx2 || y>cy2 || x+xl<cx1 || y+yl<cy1)\r
-    return;\r
-  if (x+xl > cx2) xl=cx2-x+1;\r
-  if (y+yl > cy2) yl=cy2-y+1;\r
-  if (x<cx1) { xs=cx1-x; xl-=xs; x=cx1; }\r
-  if (y<cy1) { ys=cy1-y; yl-=ys; y=cy1; }\r
-  s=src+(ys*width)+xs;\r
-  d=screen+(y*sx)+x;\r
-\r
-  for (; yl; yl--)\r
-  {\r
-    for (x=0; x<xl; x++)\r
-    {\r
-      if (s[x])\r
-        d[x]=color;\r
-    }\r
-    s+=width;\r
-    d+=sx;\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-void SilhouetteZoomClip(int x, int y, int sw, int sh, int dw, int dh, int color, byte *src)\r
-{\r
-  int xerr=0,yerr=0;\r
-  int xerr_start=0, yerr_start=0;\r
-  int xadj=0,yadj=0;\r
-  byte *d=0;\r
-  int xl=0,yl=0,xs=0,ys=0;\r
-\r
-  cpubyte=RENDER;\r
-  if (dw<1 || dh<1) return;\r
-\r
-  xl=dw;\r
-  yl=dh;\r
-  xs=ys=0;\r
-  if (x>cx2 || y>cy2 || x+xl<cx1 || y+yl<cy1)\r
-    return;\r
-\r
-  if (x+xl > cx2) xl=cx2-x+1;\r
-  if (y+yl > cy2) yl=cy2-y+1;\r
-  if (x<cx1) { xs=cx1-x; xl-=xs; x=cx1; }\r
-  if (y<cy1) { ys=cy1-y; yl-=ys; y=cy1; }\r
-  xadj = (sw<<16)/dw;\r
-  yadj = (sh<<16)/dh;\r
-  xerr_start = xadj * xs;\r
-  yerr_start = yadj * ys;\r
-\r
-  if (ys) src+=((yerr_start>>16)*sw);\r
-  d = screen+(y*sx)+x;\r
-  yerr = yerr_start & 0xffff;\r
-  for (y=0; y<yl; y++)\r
-  {\r
-    xerr = xerr_start;\r
-    for (x=0; x<xl; x++)\r
-    {\r
-      if (src[(xerr>>16)])\r
-        d[x]=color;\r
-      xerr+=xadj;\r
-    }\r
-    d+=sx;\r
-    yerr += yadj;\r
-    src += (yerr>>16)*sw;\r
-    yerr &= 0xffff;\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-void SilhouetteLucentClip(int x, int y, int width, int height, int color, byte *src)\r
-{\r
-  byte *s=0,*d=0;\r
-  int xl=0,yl=0,xs=0,ys=0;\r
-  byte *range=0;\r
-\r
-  cpubyte=RENDER;\r
-  xl=width;\r
-  yl=height;\r
-  xs=ys=0;\r
-  if (x>cx2 || y>cy2 || x+xl<cx1 || y+yl<cy1)\r
-    return;\r
-  if (x+xl > cx2) xl=cx2-x+1;\r
-  if (y+yl > cy2) yl=cy2-y+1;\r
-  if (x<cx1) { xs=cx1-x; xl-=xs; x=cx1; }\r
-  if (y<cy1) { ys=cy1-y; yl-=ys; y=cy1; }\r
-\r
-  s=src+(ys*width)+xs;\r
-  d=screen+(y*sx)+x;\r
-  range=translucency_table+(color<<8);\r
-  for (; yl; yl--)\r
-  {\r
-    for (x=0; x<xl; x++)\r
-    {\r
-      if (s[x])\r
-        d[x]=range[d[x]];\r
-    }\r
-    s+=width;\r
-    d+=sx;\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-void SilhouetteZoomLucentClip(int x, int y, int sw, int sh, int dw, int dh, int color, byte *src)\r
-{\r
-  int xerr=0,yerr=0;\r
-  int xerr_start=0, yerr_start=0;\r
-  int xadj=0,yadj=0;\r
-  byte *d=0;\r
-  int xl=0,yl=0,xs=0,ys=0;\r
-  byte *range=0;\r
-\r
-  cpubyte=RENDER;\r
-  if (dw<1 || dh<1) return;\r
-  xl=dw;\r
-  yl=dh;\r
-  xs=ys=0;\r
-  if (x>cx2 || y>cy2 || x+xl<cx1 || y+yl<cy1)\r
-    return;\r
-  if (x+xl > cx2) xl=cx2-x+1;\r
-  if (y+yl > cy2) yl=cy2-y+1;\r
-  if (x<cx1) { xs=cx1-x; xl-=xs; x=cx1; }\r
-  if (y<cy1) { ys=cy1-y; yl-=ys; y=cy1; }\r
-\r
-  xadj = (sw<<16)/dw;\r
-  yadj = (sh<<16)/dh;\r
-  xerr_start = xadj * xs;\r
-  yerr_start = yadj * ys;\r
-  if (ys) src+=((yerr_start>>16)*sw);\r
-  d = screen+(y*sx)+x;\r
-  range=translucency_table+(color<<8);\r
-  yerr = yerr_start & 0xffff;\r
-  for (y=0; y<yl; y++)\r
-  {\r
-    xerr = xerr_start;\r
-    for (x=0; x<xl; x++)\r
-    {\r
-      if (src[(xerr>>16)])\r
-        d[x]=range[d[x]];\r
-      xerr+=xadj;\r
-    }\r
-    d+=sx;\r
-    yerr += yadj;\r
-    src += (yerr>>16)*sw;\r
-    yerr &= 0xffff;\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-// aen\r
-void TintClip(int x, int y, int width, int height, int color, byte *src)\r
-{\r
-  byte *s=0,*d=0;\r
-  int xl=0,yl=0,xs=0,ys=0;\r
-  byte *range=0;\r
-  byte c=0;\r
-\r
-  cpubyte=RENDER;\r
-  xl=width;\r
-  yl=height;\r
-  xs=ys=0;\r
-  if (x>cx2 || y>cy2 || x+xl<cx1 || y+yl<cy1)\r
-    return;\r
-  if (x+xl > cx2) xl=cx2-x+1;\r
-  if (y+yl > cy2) yl=cy2-y+1;\r
-  if (x<cx1) { xs=cx1-x; xl-=xs; x=cx1; }\r
-  if (y<cy1) { ys=cy1-y; yl-=ys; y=cy1; }\r
-\r
-  s=src+(ys*width)+xs;\r
-  d=screen+(y*sx)+x;\r
-  range=translucency_table+(color<<8);\r
-  for (; yl; yl--)\r
-  {\r
-    for (x=0; x<xl; x++)\r
-    {\r
-      c=s[x];\r
-      if (c)\r
-        d[x]=range[c];\r
-    }\r
-    s+=width;\r
-    d+=sx;\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-// aen\r
-void TintZoomClip(int x, int y, int sw, int sh, int dw, int dh, int color, byte *src)\r
-{\r
-  int xerr=0,yerr=0;\r
-  int xerr_start=0, yerr_start=0;\r
-  int xadj=0,yadj=0;\r
-  byte *d=0;\r
-  int xl=0,yl=0,xs=0,ys=0;\r
-  byte *range=0;\r
-  byte c=0;\r
-\r
-  cpubyte=RENDER;\r
-  if (dw<1 || dh<1) return;\r
-  xl=dw;\r
-  yl=dh;\r
-  xs=ys=0;\r
-  if (x>cx2 || y>cy2 || x+xl<cx1 || y+yl<cy1)\r
-    return;\r
-  if (x+xl > cx2) xl=cx2-x+1;\r
-  if (y+yl > cy2) yl=cy2-y+1;\r
-  if (x<cx1) { xs=cx1-x; xl-=xs; x=cx1; }\r
-  if (y<cy1) { ys=cy1-y; yl-=ys; y=cy1; }\r
-\r
-  xadj = (sw<<16)/dw;\r
-  yadj = (sh<<16)/dh;\r
-  xerr_start = xadj * xs;\r
-  yerr_start = yadj * ys;\r
-  if (ys) src+=((yerr_start>>16)*sw);\r
-  d = screen+(y*sx)+x;\r
-  range=translucency_table+(color<<8);\r
-  yerr = yerr_start & 0xffff;\r
-  for (y=0; y<yl; y++)\r
-  {\r
-    xerr = xerr_start;\r
-    for (x=0; x<xl; x++)\r
-    {\r
-      c=src[(xerr>>16)];\r
-      if (c)\r
-        d[x]=range[c];\r
-      xerr+=xadj;\r
-    }\r
-    d+=sx;\r
-    yerr += yadj;\r
-    src += (yerr>>16)*sw;\r
-    yerr &= 0xffff;\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-void CopyTile(int x, int y, byte *src)\r
-{\r
-  CopySpriteClip(x,y,16,16,src);\r
-}\r
-\r
-void TCopyTile(int x, int y, byte *src, byte *matte)\r
-{\r
-  matte=matte;\r
-  TCopySpriteClip(x,y,16,16,src);\r
-}\r
-\r
-void CopyTileLucent(int x, int y, byte *src)\r
-{\r
-  CopySpriteLucentClip(x,y,16,16,src);\r
-}\r
-\r
-void TCopyTileLucent(int x, int y, byte *src)\r
-{\r
-  TCopySpriteLucentClip(x,y,16,16,src);\r
-}\r
-\r
-void CopyTileClip(int x, int y, byte *src)\r
-{\r
-  CopySpriteClip(x,y,16,16,src);\r
-}\r
-\r
-void TCopyTileClip(int x, int y, byte *src, byte *matte)\r
-{\r
-  matte=matte;\r
-  TCopySpriteClip(x,y,16,16,src);\r
-}\r
-\r
-void CopyTileLucentClip(int x, int y, byte *src)\r
-{\r
-  CopySpriteLucentClip(x,y,16,16,src);\r
-}\r
-\r
-void TCopyTileLucentClip(int x, int y, byte *src)\r
-{\r
-  TCopySpriteLucentClip(x,y,16,16,src);\r
-}\r
-\r
-// aen\r
-void MapLine(int x, int y, int yofs, word *map)\r
-{\r
-  byte *d;\r
-  int tilesx,startx;\r
-  int counter;\r
-  int span, s;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  // y clipping\r
-  if (y<0 || y>=tsy) return;\r
-  // x clipping\r
-  startx=0;\r
-  if (x<0) { startx=-x; x=0; }\r
-\r
-  d=screen+(y*sx)+x;\r
-  tilesx=(tsx/16);\r
-\r
-  // do clipped left tile\r
-  counter=0;\r
-  s=tileidx[*map];\r
-  memcpy(d, vsp+((s<numtiles ? s : 0)*256)+(yofs*16)+startx, 16-startx);\r
-  d+=16-startx;\r
-  counter+=16-startx;\r
-  map++;\r
-  // do midsection of line\r
-  for (x=1; x<tilesx; x++,counter+=16)\r
-  {\r
-    s=tileidx[*map];\r
-    memcpy(d, vsp+((s<numtiles ? s : 0)*256)+(yofs*16), 16);\r
-\r
-    d+=16;\r
-    map++;\r
-  }\r
-  // do clipped right tile\r
-  while (counter<tsx)\r
-  {\r
-    span=(tsx-counter);\r
-    if (span>16) span=16;\r
-    s=tileidx[*map];\r
-    memcpy(d, vsp+((s<numtiles ? s : 0)*256)+(yofs*16), span);\r
-    d+=span;\r
-    counter+=span;\r
-    map++;\r
-  }\r
-\r
-  cpubyte=ETC;\r
-}\r
-\r
-// aen\r
-void TMapLine(int x, int y, int yofs, word *map)\r
-{\r
-  byte *s,*d;\r
-  byte c;\r
-  int tilesx,startx;\r
-  int counter;\r
-  int span;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  // y clipping\r
-  if (y<0 || y>=tsy) return;\r
-  // x clipping\r
-  startx=0;\r
-  if (x<0) { startx=-x; x=0; }\r
-\r
-  d=screen+(y*sx)+x;\r
-  tilesx=(tsx/16);\r
-\r
-  // do clipped left tile\r
-  counter=0;\r
-  s=vsp+(256*tileidx[*map])+(16*yofs)+startx;\r
-  for (x=0; x<16-startx; x++)\r
-  {\r
-    c=s[x];\r
-    if (c)\r
-      d[x]=c;\r
-  }\r
-  d+=16-startx;\r
-  counter+=16-startx;\r
-  map++;\r
-  // do midsection of line\r
-  for (y=1; y<tilesx; y++,counter+=16)\r
-  {\r
-    s=vsp+(256*tileidx[*map])+(16*yofs);\r
-    for (x=0; x<16; x++)\r
-    {\r
-      c=s[x];\r
-      if (c)\r
-        d[x]=c;\r
-    }\r
-    d+=16;\r
-    map++;\r
-  }\r
-  // do clipped right tile\r
-  while (counter<tsx)\r
-  {\r
-    span=(tsx-counter);\r
-    if (span>16) span=16;\r
-    s=vsp+(256*tileidx[*map])+(16*yofs);\r
-    for (x=0; x<span; x++)\r
-    {\r
-      c=s[x];\r
-      if (c)\r
-        d[x]=c;\r
-    }\r
-    d+=span;\r
-    counter+=span;\r
-    map++;\r
-  }\r
-\r
-  cpubyte=ETC;\r
-}\r
-\r
-void ClearScreen()\r
-{\r
-  cpubyte=RENDER;\r
-  memset(screen, 0, sx*sy);\r
-  cpubyte=ETC;\r
-}\r
-\r
-void SetPixel(int x, int y, int color)\r
-{\r
-  screen[(y*sx)+x]=color;\r
-}\r
-\r
-void SetPixelLucent(int x, int y, int color)\r
-{\r
-  byte *d;\r
-\r
-  cpubyte=RENDER;\r
-  d=screen+(y*sx)+x;\r
-  *d=translucency_table[*d|(color<<8)];\r
-  cpubyte=ETC;\r
-}\r
-\r
-void SetPixelClip(int x, int y, int color)\r
-{\r
-  if (x<cx1 || y<cy1 || x>cx2 || y>cy2) return;\r
-  screen[(y*sx)+x]=color;\r
-}\r
-\r
-void SetPixelLucentClip(int x, int y, int color)\r
-{\r
-  byte *d;\r
-\r
-  if (x<cx1 || y<cy1 || x>cx2 || y>cy2) return;\r
-  d=screen+(y*sx)+x;\r
-  *d=translucency_table[*d|(color<<8)];\r
-}\r
-\r
-int GetPixel(int x, int y)\r
-{\r
-  return screen[(y*sx)+x];\r
-}\r
-\r
-int GetPixelClip(int x, int y)\r
-{\r
-  if (x<cx1 || y<cy1 || x>cx2 || y>cy2) return 0;\r
-  return screen[(y*sx)+x];\r
-}\r
-\r
-void ColorField(int x, int y, char c)\r
-{\r
-  int i;\r
-\r
-  cpubyte=RENDER;\r
-  i=0;\r
-  do\r
-  {\r
-    SetPixelClip(x+0, y+i, 0);\r
-    SetPixelClip(x+2, y+i, 0);\r
-    SetPixelClip(x+4, y+i, 0);\r
-    SetPixelClip(x+6, y+i, 0);\r
-    SetPixelClip(x+8, y+i, 0);\r
-    SetPixelClip(x+10, y+i, 0);\r
-    SetPixelClip(x+12, y+i, 0);\r
-    SetPixelClip(x+14, y+i, 0);\r
-    i++;\r
-\r
-    SetPixelClip(x+0 +1, y+i, 0);\r
-    SetPixelClip(x+2 +1, y+i, 0);\r
-    SetPixelClip(x+4 +1, y+i, 0);\r
-    SetPixelClip(x+6 +1, y+i, 0);\r
-    SetPixelClip(x+8 +1, y+i, 0);\r
-    SetPixelClip(x+10 +1, y+i, 0);\r
-    SetPixelClip(x+12 +1, y+i, 0);\r
-    SetPixelClip(x+14 +1, y+i, 0);\r
-    i++;\r
-  } while (i<16);\r
-  cpubyte=ETC;\r
-}\r
-\r
-void HLine(int x, int y, int x2, int color)\r
-{\r
-  cpubyte=RENDER;\r
-  if (x2<x) SWAP(x,x2);\r
-  memset(screen+(y*sx)+x,color,x2-x+1);\r
-  cpubyte=ETC;\r
-}\r
-\r
-void HLineClip(int x, int y, int x2, int color)\r
-{\r
-  int width;\r
-\r
-  cpubyte=RENDER;\r
-  if (x2<x) SWAP(x,x2);\r
-  width=x2-x+1;\r
-  if (x>cx2 || y>cy2 || x+width<cx1 || y<cy1)\r
-    return;\r
-  if (x+width > cx2) width=cx2-x+1;\r
-  if (x<cx1) { width-=(cx1-x); x=cx1; }\r
-  memset(screen+(y*sx)+x,color,width);\r
-  cpubyte=ETC;\r
-}\r
-\r
-void HLineLucent(int x, int y, int x2, int color)\r
-{\r
-  byte *d;\r
-  int c;\r
-\r
-  cpubyte=RENDER;\r
-  if (x2<x) SWAP(x,x2);\r
-  c=color<<8;\r
-  d=screen+(y*sx)+x;\r
-  for (; x<=x2; x++,d++)\r
-    *d=translucency_table[c|*d];\r
-  cpubyte=ETC;\r
-}\r
-\r
-void HLineLucentClip(int x, int y, int x2, int color)\r
-{\r
-  byte *d;\r
-  int c,width;\r
-\r
-  cpubyte=RENDER;\r
-  if (x2<x) SWAP(x,x2);\r
-  width=x2-x+1;\r
-  if (x>cx2 || y>cy2 || x+width<cx1 || y<cy1)\r
-    return;\r
-\r
-  if (x+width > cx2) width=cx2-x+1;\r
-  if (x<cx1) { width-=(cx1-x); x=cx1; }\r
-  c=color<<8;\r
-  d=screen+(y*sx)+x;\r
-  for (x=0; x<width; x++,d++)\r
-    *d=translucency_table[c|*d];\r
-  cpubyte=ETC;\r
-}\r
-\r
-void VLine(int x, int y, int y2, int color)\r
-{\r
-  byte *d;\r
-\r
-  cpubyte=RENDER;\r
-  if (y2<y) SWAP(y,y2);\r
-  d=screen+(y*sx)+x;\r
-  for (; y<=y2; y++)\r
-  {\r
-    *d=color;\r
-    d+=sx;\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-void VLineClip(int x, int y, int y2, int color)\r
-{\r
-  byte *d;\r
-  int height;\r
-\r
-  cpubyte=RENDER;\r
-  if (y2<y) SWAP(y,y2);\r
-  height=y2-y+1;\r
-  if (x>cx2 || y>cy2 || x<cx1 || y+height<cy1)\r
-  {\r
-    cpubyte=ETC;\r
-    return;\r
-  }\r
-\r
-  if (y+height > cy2) height=cy2-y+1;\r
-  if (y<cy1) { height-=(cy1-y); y=cy1; }\r
-  d=screen+(y*sx)+x;\r
-  for (; height; height--)\r
-  {\r
-    *d=color;\r
-    d+=sx;\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-void VLineLucent(int x, int y, int y2, int color)\r
-{\r
-  byte *d;\r
-  int c;\r
-\r
-  cpubyte=RENDER;\r
-  if (y2<y) SWAP(y,y2);\r
-\r
-  c=color<<8;\r
-  d=screen+(y*sx)+x;\r
-  for (; y<=y2; y++)\r
-  {\r
-    *d=translucency_table[c|*d];\r
-    d+=sx;\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-void VLineLucentClip(int x, int y, int y2, int color)\r
-{\r
-  byte *d;\r
-  int c,height;\r
-\r
-  cpubyte=RENDER;\r
-  if (y2<y) SWAP(y,y2);\r
-  height=y2-y+1;\r
-  if (x>cx2 || y>cy2 || x<cx1 || y+height<cy1)\r
-  {\r
-    cpubyte=ETC;\r
-    return;\r
-  }\r
-  if (y+height > cy2) height=cy2-y+1;\r
-  if (y<cy1) { height-=(cy1-y); y=cy1; }\r
-  c=color<<8;\r
-  d=screen+(y*sx)+x;\r
-  for (; height; height--)\r
-  {\r
-    *d=translucency_table[c|*d];\r
-    d+=sx;\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-// all the Line* routine were grabbed/modded from the Abuse source\r
-\r
-void Line(int x1, int y1, int x2, int y2, int color)\r
-{\r
-  short i,xc,yc,er,n,m,xi,yi,xcxi,ycyi,xcyi;\r
-  unsigned dcy,dcx;\r
-\r
-  cpubyte=RENDER;\r
-  if (x1>x2)\r
-  {\r
-    SWAP(x1,x2);\r
-    SWAP(y1,y2);\r
-  }\r
-\r
-  if (y1>y2)\r
-  {\r
-    SWAP(x1,x2);\r
-    SWAP(y1,y2);\r
-  }\r
-  // assume y1<=y2 from above swap operation\r
-  yi=y2; yc=y1;\r
-\r
-  dcx=x1; dcy=y1;\r
-  xc=(x2-x1); yc=(y2-y1);\r
-  if (xc<0) xi=-1; else xi=1;\r
-  if (yc<0) yi=-1; else yi=1;\r
-  n=abs(xc); m=abs(yc);\r
-  ycyi=abs(2*yc*xi);\r
-  er=0;\r
-\r
-  if (n>m)\r
-  {\r
-    xcxi=abs(2*xc*xi);\r
-    for (i=0;i<=n;i++)\r
-    {\r
-      screen[(dcy*sx)+dcx]=color;\r
-      if (er>0)\r
-      { dcy+=yi;\r
-        er-=xcxi;\r
-      }\r
-      er+=ycyi;\r
-      dcx+=xi;\r
-    }\r
-  }\r
-  else\r
-  {\r
-    xcyi=abs(2*xc*yi);\r
-    for (i=0;i<=m;i++)\r
-    {\r
-      screen[(dcy*sx)+dcx]=color;\r
-      if (er>0)\r
-      { dcx+=xi;\r
-        er-=ycyi;\r
-      }\r
-      er+=xcyi;\r
-      dcy+=yi;\r
-    }\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-// grabbed/modded from Abuse source\r
-void LineClip(int x1, int y1, int x2, int y2, int color)\r
-{\r
-  short i,xc,yc,er,n,m,xi,yi,xcxi,ycyi,xcyi;\r
-  unsigned dcy,dcx;\r
-\r
-  cpubyte=RENDER;\r
-  // check to see if the line is completly clipped off\r
-  if ((x1<cx1 && x2<cx1) || (x1>cx2 && x2>cx2)\r
-  || (y1<cy1 && y2<cy1) || (y1>cy2 && y2>cy2))\r
-  {\r
-    cpubyte=ETC;\r
-    return;\r
-  }\r
-\r
-  if (x1>x2)\r
-  {\r
-    SWAP(x1,x2);\r
-    SWAP(y1,y2);\r
-  }\r
-\r
-  // clip the left side\r
-  if (x1<cx1)\r
-  { int myy=(y2-y1);\r
-    int mxx=(x2-x1),b;\r
-    if (!mxx)\r
-    {\r
-      cpubyte=ETC;\r
-      return;\r
-    }\r
-    if (myy)\r
-    {\r
-      b=y1-(y2-y1)*x1/mxx;\r
-      y1=myy*cx1/mxx+b;\r
-      x1=cx1;\r
-    }\r
-    else x1=cx1;\r
-  }\r
-\r
-  // clip the right side\r
-  if (x2>cx2)\r
-  { int myy=(y2-y1);\r
-    int mxx=(x2-x1),b;\r
-    if (!mxx)\r
-    {\r
-      cpubyte=ETC;\r
-      return;\r
-    }\r
-    if (myy)\r
-    {\r
-      b=y1-(y2-y1)*x1/mxx;\r
-      y2=myy*cx2/mxx+b;\r
-      x2=cx2;\r
-    }\r
-    else x2=cx2;\r
-  }\r
-\r
-  if (y1>y2)\r
-  {\r
-    SWAP(x1,x2);\r
-    SWAP(y1,y2);\r
-  }\r
-\r
-  // clip the bottom\r
-  if (y2>cy2)\r
-  { int mxx=(x2-x1);\r
-    int myy=(y2-y1),b;\r
-    if (!myy)\r
-    {\r
-      cpubyte=ETC;\r
-      return;\r
-    }\r
-    if (mxx)\r
-    {\r
-      b=y1-(y2-y1)*x1/mxx;\r
-      x2=(cy2-b)*mxx/myy;\r
-      y2=cy2;\r
-    }\r
-    else y2=cy2;\r
-  }\r
-\r
-  // clip the top\r
-  if (y1<cy1)\r
-  { int mxx=(x2-x1);\r
-    int myy=(y2-y1),b;\r
-    if (!myy)\r
-    {\r
-      cpubyte=ETC;\r
-      return;\r
-    }\r
-    if (mxx)\r
-    {\r
-      b=y1-(y2-y1)*x1/mxx;\r
-      x1=(cy1-b)*mxx/myy;\r
-      y1=cy1;\r
-    }\r
-    else y1=cy1;\r
-  }\r
-\r
-  // ???\r
-  // see if it got cliped into the box, out out\r
-  if (x1<cx1 || x2<cx1 || x1>cx2 || x2>cx2 || y1<cy1 || y2 <cy1 || y1>cy2 || y2>cy2)\r
-  {\r
-    cpubyte=ETC;\r
-    return;\r
-  }\r
-\r
-  if (x1>x2)\r
-  { xc=x2; xi=x1; }\r
-  else { xi=x2; xc=x1; }\r
-\r
-  // assume y1<=y2 from above swap operation\r
-  yi=y2; yc=y1;\r
-\r
-  dcx=x1; dcy=y1;\r
-  xc=(x2-x1); yc=(y2-y1);\r
-  if (xc<0) xi=-1; else xi=1;\r
-  if (yc<0) yi=-1; else yi=1;\r
-  n=abs(xc); m=abs(yc);\r
-  ycyi=abs(2*yc*xi);\r
-  er=0;\r
-\r
-  if (n>m)\r
-  {\r
-    xcxi=abs(2*xc*xi);\r
-    for (i=0;i<=n;i++)\r
-    {\r
-      screen[(dcy*sx)+dcx]=color;\r
-      if (er>0)\r
-      { dcy+=yi;\r
-        er-=xcxi;\r
-      }\r
-      er+=ycyi;\r
-      dcx+=xi;\r
-    }\r
-  }\r
-  else\r
-  {\r
-    xcyi=abs(2*xc*yi);\r
-    for (i=0;i<=m;i++)\r
-    {\r
-      screen[(dcy*sx)+dcx]=color;\r
-      if (er>0)\r
-      { dcx+=xi;\r
-        er-=ycyi;\r
-      }\r
-      er+=xcyi;\r
-      dcy+=yi;\r
-    }\r
-  }\r
-  cpubyte=ETC;\r
-  return;\r
-}\r
-\r
-void LineLucent(int x1, int y1, int x2, int y2, int color)\r
-{\r
-  short i,xc,yc,er,n,m,xi,yi,xcxi,ycyi,xcyi;\r
-  unsigned dcy,dcx;\r
-  byte *d;\r
-  int c;\r
-\r
-  cpubyte=RENDER;\r
-  if (x1>x2)\r
-  {\r
-    SWAP(x1,x2);\r
-    SWAP(y1,y2);\r
-  }\r
-  if (y1>y2)\r
-  {\r
-    SWAP(x1,x2);\r
-    SWAP(y1,y2);\r
-  }\r
-\r
-  // assume y1<=y2 from above swap operation\r
-  yi=y2; yc=y1;\r
-  dcx=x1; dcy=y1;\r
-  xc=(x2-x1); yc=(y2-y1);\r
-  if (xc<0) xi=-1; else xi=1;\r
-  if (yc<0) yi=-1; else yi=1;\r
-  n=abs(xc); m=abs(yc);\r
-  ycyi=abs(2*yc*xi);\r
-  er=0;\r
-\r
-  c=color<<8; // for translucency\r
-  if (n>m)\r
-  {\r
-    xcxi=abs(2*xc*xi);\r
-    for (i=0;i<=n;i++)\r
-    {\r
-      d=screen+(dcy*sx)+dcx;\r
-      *d=translucency_table[c|*d];\r
-      //screen[(dcy*sx)+dcx]=color;\r
-      if (er>0)\r
-      { dcy+=yi;\r
-        er-=xcxi;\r
-      }\r
-      er+=ycyi;\r
-      dcx+=xi;\r
-    }\r
-  }\r
-  else\r
-  {\r
-    xcyi=abs(2*xc*yi);\r
-    for (i=0;i<=m;i++)\r
-    {\r
-      d=screen+(dcy*sx)+dcx;\r
-      *d=translucency_table[c|*d];\r
-      //screen[(dcy*sx)+dcx]=color;\r
-      if (er>0)\r
-      { dcx+=xi;\r
-        er-=ycyi;\r
-      }\r
-      er+=xcyi;\r
-      dcy+=yi;\r
-    }\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-void LineLucentClip(int x1, int y1, int x2, int y2, int color)\r
-{\r
-  short i,xc,yc,er,n,m,xi,yi,xcxi,ycyi,xcyi;\r
-  unsigned dcy,dcx;\r
-  byte *d;\r
-  int c;\r
-\r
-  cpubyte=RENDER;\r
-  // check to see if the line is completly clipped off\r
-  if ((x1<cx1 && x2<cx1) || (x1>cx2 && x2>cx2)\r
-  || (y1<cy1 && y2<cy1) || (y1>cy2 && y2>cy2))\r
-  {\r
-    cpubyte=ETC;\r
-    return;\r
-  }\r
-\r
-  if (x1>x2)\r
-  {\r
-    SWAP(x1,x2);\r
-    SWAP(y1,y2);\r
-  }\r
-\r
-  // clip the left side\r
-  if (x1<cx1)\r
-  { int myy=(y2-y1);\r
-    int mxx=(x2-x1),b;\r
-    if (!mxx)\r
-    {\r
-      cpubyte=ETC;\r
-      return;\r
-    }\r
-    if (myy)\r
-    {\r
-      b=y1-(y2-y1)*x1/mxx;\r
-      y1=myy*cx1/mxx+b;\r
-      x1=cx1;\r
-    }\r
-    else x1=cx1;\r
-  }\r
-\r
-  // clip the right side\r
-  if (x2>cx2)\r
-  { int myy=(y2-y1);\r
-    int mxx=(x2-x1),b;\r
-    if (!mxx)\r
-    {\r
-      cpubyte=ETC;\r
-      return;\r
-    }\r
-    if (myy)\r
-    {\r
-      b=y1-(y2-y1)*x1/mxx;\r
-      y2=myy*cx2/mxx+b;\r
-      x2=cx2;\r
-    }\r
-    else x2=cx2;\r
-  }\r
-\r
-  if (y1>y2)\r
-  {\r
-    SWAP(x1,x2);\r
-    SWAP(y1,y2);\r
-  }\r
-\r
-  // clip the bottom\r
-  if (y2>cy2)\r
-  { int mxx=(x2-x1);\r
-    int myy=(y2-y1),b;\r
-    if (!myy)\r
-    {\r
-      cpubyte=ETC;\r
-      return;\r
-    }\r
-    if (mxx)\r
-    {\r
-      b=y1-(y2-y1)*x1/mxx;\r
-      x2=(cy2-b)*mxx/myy;\r
-      y2=cy2;\r
-    }\r
-    else y2=cy2;\r
-  }\r
-\r
-  // clip the top\r
-  if (y1<cy1)\r
-  { int mxx=(x2-x1);\r
-    int myy=(y2-y1),b;\r
-    if (!myy)\r
-    {\r
-      cpubyte=ETC;\r
-      return;\r
-    }\r
-    if (mxx)\r
-    {\r
-      b=y1-(y2-y1)*x1/mxx;\r
-      x1=(cy1-b)*mxx/myy;\r
-      y1=cy1;\r
-    }\r
-    else y1=cy1;\r
-  }\r
-\r
-  // ???\r
-  // see if it got cliped into the box, out out\r
-  if (x1<cx1 || x2<cx1 || x1>cx2 || x2>cx2 || y1<cy1 || y2 <cy1 || y1>cy2 || y2>cy2)\r
-  {\r
-    cpubyte=ETC;\r
-    return;\r
-  }\r
-\r
-  if (x1>x2)\r
-  { xc=x2; xi=x1; }\r
-  else { xi=x2; xc=x1; }\r
-\r
-  // assume y1<=y2 from above swap operation\r
-  yi=y2; yc=y1;\r
-\r
-  dcx=x1; dcy=y1;\r
-  xc=(x2-x1); yc=(y2-y1);\r
-  if (xc<0) xi=-1; else xi=1;\r
-  if (yc<0) yi=-1; else yi=1;\r
-  n=abs(xc); m=abs(yc);\r
-  ycyi=abs(2*yc*xi);\r
-  er=0;\r
-\r
-  c=color<<8; // for translucency\r
-  if (n>m)\r
-  {\r
-    xcxi=abs(2*xc*xi);\r
-    for (i=0;i<=n;i++)\r
-    {\r
-      d=screen+(dcy*sx)+dcx;\r
-      *d=translucency_table[c|*d];\r
-      //screen[(dcy*sx)+dcx]=color;\r
-      if (er>0)\r
-      { dcy+=yi;\r
-        er-=xcxi;\r
-      }\r
-      er+=ycyi;\r
-      dcx+=xi;\r
-    }\r
-  }\r
-  else\r
-  {\r
-    xcyi=abs(2*xc*yi);\r
-    for (i=0;i<=m;i++)\r
-    {\r
-      d=screen+(dcy*sx)+dcx;\r
-      *d=translucency_table[c|*d];\r
-      //screen[(dcy*sx)+dcx]=color;\r
-      if (er>0)\r
-      { dcx+=xi;\r
-        er-=ycyi;\r
-      }\r
-      er+=xcyi;\r
-      dcy+=yi;\r
-    }\r
-  }\r
-  cpubyte=ETC;\r
-}\r
-\r
-// All the Circle* routines were grabbed/modded from Allegro source\r
-\r
-void Circle(int x, int y, int radius, int color)\r
-{\r
-  int cx=0;\r
-  int cy=radius;\r
-  int df=1-radius;\r
-  int d_e=3;\r
-  int d_se=-2*radius+5;\r
-\r
-  cpubyte=RENDER;\r
-  do\r
-  {\r
-    SetPixel(x+cx,y+cy,color);\r
-    if (cx) SetPixel(x-cx,y+cy,color);\r
-    if (cy) SetPixel(x+cx,y-cy,color);\r
-    if ((cx) && (cy)) SetPixel(x-cx,y-cy,color);\r
-\r
-    if (cx != cy)\r
-    {\r
-      SetPixel(x+cy,y+cx,color);\r
-      if (cx) SetPixel(x+cy,y-cx,color);\r
-      if (cy) SetPixel(x-cy,y+cx,color);\r
-      if (cx && cy) SetPixel(x-cy,y-cx,color);\r
-    }\r
-\r
-    if (df<0)\r
-    {\r
-      df+=d_e;\r
-      d_e+=2;\r
-      d_se+=2;\r
-    }\r
-    else\r
-    {\r
-      df+=d_se;\r
-      d_e+=2;\r
-      d_se+=4;\r
-      cy--;\r
-    }\r
-    cx++;\r
-  } while (cx <= cy);\r
-  cpubyte=ETC;\r
-}\r
-\r
-void CircleClip(int x, int y, int radius, int color)\r
-{\r
-  int cx=0;\r
-  int cy=radius;\r
-  int df=1-radius;\r
-  int d_e=3;\r
-  int d_se=-2*radius+5;\r
-\r
-  cpubyte=RENDER;\r
-  do {\r
-    SetPixelClip(x+cx,y+cy,color);\r
-    if (cx) SetPixelClip(x-cx,y+cy,color);\r
-    if (cy) SetPixelClip(x+cx,y-cy,color);\r
-    if ((cx) && (cy)) SetPixelClip(x-cx,y-cy,color);\r
-\r
-    if (cx != cy)\r
-    {\r
-      SetPixelClip(x+cy,y+cx,color);\r
-      if (cx) SetPixelClip(x+cy,y-cx,color);\r
-      if (cy) SetPixelClip(x-cy,y+cx,color);\r
-      if (cx && cy) SetPixelClip(x-cy,y-cx,color);\r
-    }\r
-\r
-    if (df<0)\r
-    {\r
-      df+=d_e;\r
-      d_e+=2;\r
-      d_se+=2;\r
-    }\r
-    else\r
-    {\r
-      df+=d_se;\r
-      d_e+=2;\r
-      d_se+=4;\r
-      cy--;\r
-    }\r
-    cx++;\r
-  } while (cx <= cy);\r
-  cpubyte=ETC;\r
-}\r
-\r
-void CircleLucent(int x, int y, int radius, int color)\r
-{\r
-  int cx=0;\r
-  int cy=radius;\r
-  int df=1-radius;\r
-  int d_e=3;\r
-  int d_se=-2*radius+5;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  do\r
-  {\r
-    SetPixelLucent(x+cx,y+cy,color);\r
-    if (cx) SetPixelLucent(x-cx,y+cy,color);\r
-    if (cy) SetPixelLucent(x+cx,y-cy,color);\r
-    if ((cx) && (cy)) SetPixelLucent(x-cx,y-cy,color);\r
-\r
-    if (cx != cy)\r
-    {\r
-      SetPixelLucent(x+cy,y+cx,color);\r
-      if (cx) SetPixelLucent(x+cy,y-cx,color);\r
-      if (cy) SetPixelLucent(x-cy,y+cx,color);\r
-      if (cx && cy) SetPixelLucent(x-cy,y-cx,color);\r
-    }\r
-\r
-    if (df<0)\r
-    {\r
-      df+=d_e;\r
-      d_e+=2;\r
-      d_se+=2;\r
-    }\r
-    else\r
-    {\r
-      df+=d_se;\r
-      d_e+=2;\r
-      d_se+=4;\r
-      cy--;\r
-    }\r
-    cx++;\r
-  } while (cx <= cy);\r
-  cpubyte=ETC;\r
-}\r
-\r
-void CircleLucentClip(int x, int y, int radius, int color)\r
-{\r
-  int cx=0;\r
-  int cy=radius;\r
-  int df=1-radius;\r
-  int d_e=3;\r
-  int d_se=-2*radius+5;\r
-\r
-  cpubyte=RENDER;\r
-  do\r
-  {\r
-    SetPixelLucentClip(x+cx,y+cy,color);\r
-    if (cx) SetPixelLucentClip(x-cx,y+cy,color);\r
-    if (cy) SetPixelLucentClip(x+cx,y-cy,color);\r
-    if ((cx) && (cy)) SetPixelLucentClip(x-cx,y-cy,color);\r
-\r
-    if (cx != cy)\r
-    {\r
-      SetPixelLucentClip(x+cy,y+cx,color);\r
-      if (cx) SetPixelLucentClip(x+cy,y-cx,color);\r
-      if (cy) SetPixelLucentClip(x-cy,y+cx,color);\r
-      if (cx && cy) SetPixelLucentClip(x-cy,y-cx,color);\r
-    }\r
-\r
-    if (df<0)\r
-    {\r
-      df+=d_e;\r
-      d_e+=2;\r
-      d_se+=2;\r
-    }\r
-    else\r
-    {\r
-      df+=d_se;\r
-      d_e+=2;\r
-      d_se+=4;\r
-      cy--;\r
-    }\r
-    cx++;\r
-  } while (cx <= cy);\r
-  cpubyte=ETC;\r
-}\r
-\r
-void CircleFill(int x, int y, int radius, int color)\r
-{\r
-  int cx=0;\r
-  int cy=radius;\r
-  int df=1-radius;\r
-  int d_e=3;\r
-  int d_se=-2*radius+5;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  do\r
-  {\r
-    HLine(x-cy,y-cx,x+cy,color);\r
-    if (cx) HLine(x-cy,y+cx,x+cy,color);\r
-\r
-    if (df<0)\r
-    {\r
-      df+=d_e;\r
-      d_e+=2;\r
-      d_se+=2;\r
-    }\r
-    else\r
-    {\r
-      if (cx != cy)\r
-      {\r
-        HLine(x-cx,y-cy,x+cx,color);\r
-        if (cy) HLine(x-cx,y+cy,x+cx,color);\r
-      }\r
-      df+=d_se;\r
-      d_e+=2;\r
-      d_se+=4;\r
-      cy--;\r
-    }\r
-    cx++;\r
-  } while (cx <= cy);\r
-  cpubyte=ETC;\r
-}\r
-\r
-void CircleFillClip(int x, int y, int radius, int color)\r
-{\r
-  int cx=0;\r
-  int cy=radius;\r
-  int df=1-radius;\r
-  int d_e=3;\r
-  int d_se=-2*radius+5;\r
-\r
-  cpubyte=RENDER;\r
-  do\r
-  {\r
-    HLineClip(x-cy,y-cx,x+cy,color);\r
-    if (cx) HLineClip(x-cy,y+cx,x+cy,color);\r
-\r
-    if (df<0)\r
-    {\r
-      df+=d_e;\r
-      d_e+=2;\r
-      d_se+=2;\r
-    }\r
-    else\r
-    {\r
-      if (cx != cy)\r
-      {\r
-        HLineClip(x-cx,y-cy,x+cx,color);\r
-        if (cy) HLineClip(x-cx,y+cy,x+cx,color);\r
-      }\r
-      df+=d_se;\r
-      d_e+=2;\r
-      d_se+=4;\r
-      cy--;\r
-    }\r
-    cx++;\r
-  } while (cx <= cy);\r
-  cpubyte=ETC;\r
-}\r
-\r
-void CircleFillLucent(int x, int y, int radius, int color)\r
-{\r
-  int cx=0;\r
-  int cy=radius;\r
-  int df=1-radius;\r
-  int d_e=3;\r
-  int d_se=-2*radius+5;\r
-\r
-  cpubyte=RENDER;\r
-  do\r
-  {\r
-    HLineLucent(x-cy,y-cx,x+cy,color);\r
-    if (cx) HLineLucent(x-cy,y+cx,x+cy,color);\r
-\r
-    if (df<0)\r
-    {\r
-      df+=d_e;\r
-      d_e+=2;\r
-      d_se+=2;\r
-    }\r
-    else\r
-    {\r
-      if (cx != cy)\r
-      {\r
-        HLineLucent(x-cx,y-cy,x+cx,color);\r
-        if (cy) HLineLucent(x-cx,y+cy,x+cx,color);\r
-      }\r
-      df+=d_se;\r
-      d_e+=2;\r
-      d_se+=4;\r
-      cy--;\r
-    }\r
-    cx++;\r
-  } while (cx <= cy);\r
-  cpubyte=ETC;\r
-}\r
-\r
-void CircleFillLucentClip(int x, int y, int radius, int color)\r
-{\r
-  int cx=0;\r
-  int cy=radius;\r
-  int df=1-radius;\r
-  int d_e=3;\r
-  int d_se=-2*radius+5;\r
-\r
-  cpubyte=RENDER;\r
-  do\r
-  {\r
-    HLineLucentClip(x-cy,y-cx,x+cy,color);\r
-    if (cx) HLineLucentClip(x-cy,y+cx,x+cy,color);\r
-\r
-    if (df<0)\r
-    {\r
-      df+=d_e;\r
-      d_e+=2;\r
-      d_se+=2;\r
-    }\r
-    else\r
-    {\r
-      if (cx != cy)\r
-      {\r
-        HLineLucentClip(x-cx,y-cy,x+cx,color);\r
-        if (cy) HLineLucentClip(x-cx,y+cy,x+cx,color);\r
-      }\r
-      df+=d_se;\r
-      d_e+=2;\r
-      d_se+=4;\r
-      cy--;\r
-    }\r
-    cx++;\r
-  } while (cx <= cy);\r
-  cpubyte=ETC;\r
-}\r
-\r
-void Rect(int x, int y, int x2, int y2, int color)\r
-{\r
-  HLine(x,y,x2,color);\r
-  HLine(x,y2,x2,color);\r
-  VLine(x,y+1,y2-1,color);\r
-  VLine(x2,y+1,y2-1,color);\r
-}\r
-\r
-void RectClip(int x, int y, int x2, int y2, int color)\r
-{\r
-  HLineClip(x,y,x2,color);\r
-  HLineClip(x,y2,x2,color);\r
-  VLineClip(x,y+1,y2-1,color);\r
-  VLineClip(x2,y+1,y2-1,color);\r
-}\r
-\r
-void RectLucent(int x, int y, int x2, int y2, int color)\r
-{\r
-  HLineLucent(x,y,x2,color);\r
-  HLineLucent(x,y2,x2,color);\r
-  VLineLucent(x,y+1,y2-1,color);\r
-  VLineLucent(x2,y+1,y2-1,color);\r
-}\r
-\r
-void RectLucentClip(int x, int y, int x2, int y2, int color)\r
-{\r
-  HLineLucentClip(x,y,x2,color);\r
-  HLineLucentClip(x,y2,x2,color);\r
-  VLineLucentClip(x,y+1,y2-1,color);\r
-  VLineLucentClip(x2,y+1,y2-1,color);\r
-}\r
-\r
-void RectFill(int x, int y, int x2, int y2, int color)\r
-{\r
-  cpubyte=RENDER;\r
-  if (y2<y) SWAP(y,y2);\r
-  for (; y<=y2; y++)\r
-    HLine(x,y,x2,color);\r
-  cpubyte=ETC;\r
-}\r
-\r
-void RectFillClip(int x, int y, int x2, int y2, int color)\r
-{\r
-  cpubyte=RENDER;\r
-  if (y2<y) SWAP(y,y2);\r
-  for (; y<=y2; y++)\r
-    HLineClip(x,y,x2,color);\r
-  cpubyte=ETC;\r
-}\r
-\r
-void RectFillLucent(int x, int y, int x2, int y2, int color)\r
-{\r
-  cpubyte=RENDER;\r
-  if (y2<y) SWAP(y,y2);\r
-  for (; y<=y2; y++)\r
-    HLineLucent(x,y,x2,color);\r
-  cpubyte=ETC;\r
-}\r
-\r
-void RectFillLucentClip(int x, int y, int x2, int y2, int color)\r
-{\r
-  cpubyte=RENDER;\r
-  if (y2<y) SWAP(y,y2);\r
-  for (; y<=y2; y++)\r
-    HLineLucentClip(x,y,x2,color);\r
-  cpubyte=ETC;\r
-}\r
-\r
-// ============================================================================\r
-// =                          aen's wrap blitters                             =\r
-// ============================================================================\r
-\r
-void WrapBlit(quad x, quad y, int wide, int high, byte *src)\r
-{\r
-  int i;\r
-  int cliph,clipw;\r
-  int curx,cury;\r
-  int spanx,spany;\r
-  byte *source,*dest;\r
-\r
-  cpubyte=RENDER;\r
-  cliph=cy2-cy1+1;\r
-  clipw=cx2-cx1+1;\r
-  y%=high;\r
-  curx=0;\r
-\r
-  do\r
-  {\r
-    x%=curx?1:wide;\r
-    spanx=wide-x;\r
-    if (curx+spanx>=clipw)\r
-      spanx=clipw-curx;\r
-    source=src+(y*wide)+x;\r
-    dest=screen+(cy1*sx)+cx1+curx;\r
-    cury=0;\r
-\r
-    do\r
-    {\r
-      spany=high-(cury?0:y);\r
-      if (cury+spany>=cliph)\r
-        spany=cliph-cury;\r
-\r
-      for (i=0; i<spany; i++,source+=wide,dest+=sx)\r
-        memcpy(dest, source, spanx);\r
-\r
-      source=src+x;\r
-      cury+=spany;\r
-    } while (cury<cliph);\r
-    curx+=spanx;\r
-  } while (curx<clipw);\r
-  cpubyte=ETC;\r
-}\r
-\r
-void WrapBlitMasked(quad x, quad y, int wide, int high, byte *src)\r
-{\r
-  int i,j,c;\r
-  int cliph,clipw;\r
-  int curx,cury;\r
-  int spanx,spany;\r
-  byte *source,*dest;\r
-\r
-  cpubyte=RENDER;\r
-  cliph=cy2-cy1+1;\r
-  clipw=cx2-cx1+1;\r
-  y%=high;\r
-  curx=0;\r
-\r
-  do\r
-  {\r
-    x%=curx?1:wide;\r
-    spanx=wide-x;\r
-    if (curx+spanx>=clipw)\r
-      spanx=clipw-curx;\r
-    source=src+(y*wide)+x;\r
-    dest=screen+(cy1*sx)+cx1+curx;\r
-    cury=0;\r
-\r
-    do\r
-    {\r
-      spany=high-(cury?0:y);\r
-      if (cury+spany>=cliph)\r
-        spany=cliph-cury;\r
-      for (i=0; i<spany; i++,source+=wide,dest+=sx)\r
-        for (j=0; j<spanx; j++)\r
-        {\r
-          c=source[j];\r
-          if (c)\r
-            dest[j]=c;\r
-        }\r
-      source=src+x;\r
-      cury+=spany;\r
-    } while (cury<cliph);\r
-    curx+=spanx;\r
-  } while (curx<clipw);\r
-  cpubyte=ETC;\r
-}\r
-\r
-void WrapBlitLucent(quad x, quad y, int wide, int high, byte *src)\r
-{\r
-  int i,j;\r
-  int cliph,clipw;\r
-  int curx,cury;\r
-  int spanx,spany;\r
-  byte *source,*dest;\r
-\r
-  cpubyte=RENDER;\r
-  cliph=cy2-cy1+1;\r
-  clipw=cx2-cx1+1;\r
-  y%=high;\r
-  curx=0;\r
-\r
-  do\r
-  {\r
-    x%=curx?1:wide;\r
-    spanx=wide-x;\r
-    if (curx+spanx>=clipw)\r
-      spanx=clipw-curx;\r
-    source=src+(y*wide)+x;\r
-    dest=screen+(cy1*sx)+cx1+curx;\r
-    cury=0;\r
-\r
-    do\r
-    {\r
-      spany=high-(cury?0:y);\r
-      if (cury+spany>=cliph)\r
-        spany=cliph-cury;\r
-      for (i=0; i<spany; i++,source+=wide,dest+=sx)\r
-        for (j=0; j<spanx; j++)\r
-          dest[j]=translucency_table[(source[j]<<8)|dest[j]];\r
-      source=src+x;\r
-      cury+=spany;\r
-    } while (cury<cliph);\r
-    curx+=spanx;\r
-  } while (curx<clipw);\r
-  cpubyte=ETC;\r
-}\r
-\r
-void WrapBlitLucentMasked(quad x, quad y, int wide, int high, byte *src)\r
-{\r
-  int i,j,c;\r
-  int cliph,clipw;\r
-  int curx,cury;\r
-  int spanx,spany;\r
-  byte *source,*dest;\r
-\r
-  cpubyte=RENDER;\r
-  cliph=cy2-cy1+1;\r
-  clipw=cx2-cx1+1;\r
-  y%=high;\r
-  curx=0;\r
-\r
-  do\r
-  {\r
-    x%=curx?1:wide;\r
-    spanx=wide-x;\r
-    if (curx+spanx>=clipw)\r
-      spanx=clipw-curx;\r
-    source=src+(y*wide)+x;\r
-    dest=screen+(cy1*sx)+cx1+curx;\r
-    cury=0;\r
-\r
-    do\r
-    {\r
-      spany=high-(cury?0:y);\r
-      if (cury+spany>=cliph)\r
-        spany=cliph-cury;\r
-      for (i=0; i<spany; i++,source+=wide,dest+=sx)\r
-        for (j=0; j<spanx; j++)\r
-        {\r
-          c=source[j];\r
-          if (c)\r
-            dest[j]=translucency_table[(c<<8)|dest[j]];\r
-        }\r
-      source=src+x;\r
-      cury+=spany;\r
-    } while (cury<cliph);\r
-    curx+=spanx;\r
-  } while (curx<clipw);\r
-  cpubyte=ETC;\r
-}\r
-\r
-// ============================================================================\r
-// =           alias.zip / zero / aen rotational scaler routines              =\r
-// ============================================================================\r
-\r
-void RotScale(int posx, int posy, quad width, quad height, float angle, float scale, byte *src)\r
-{\r
-  // new! shamelessly ripped off from alias.zip\r
-  // except the atan2 stuff which i had to make up myself AEN so there :p\r
-\r
-  int xs,ys,xl,yl;\r
-  int sinas,cosas,xc,yc,srcx,srcy,x,y,tempx,tempy,T_WIDTH_CENTER,T_HEIGHT_CENTER,W_WIDTH_CENTER,W_HEIGHT_CENTER,W_HEIGHT,W_WIDTH;\r
-  byte *dest,pt;\r
-  float ft;\r
-\r
-  ft=atan2((float)width,(float)height);\r
-\r
-  T_WIDTH_CENTER=width>>1;\r
-  T_HEIGHT_CENTER=height>>1;\r
-  W_WIDTH=((float)width/scale*sin(ft) + (float)height/scale*cos(ft));\r
-  W_HEIGHT=W_WIDTH;\r
-  W_HEIGHT_CENTER=W_HEIGHT>>1;\r
-  W_WIDTH_CENTER=W_HEIGHT_CENTER; //W_WIDTH/2;\r
-\r
-  sinas=sin(-angle)*65536*scale;\r
-  cosas=cos(-angle)*65536*scale;\r
-\r
-  xc=T_WIDTH_CENTER*65536 - (W_HEIGHT_CENTER*(cosas+sinas));\r
-  yc=T_HEIGHT_CENTER*65536 - (W_WIDTH_CENTER*(cosas-sinas));\r
-  posx-=W_WIDTH_CENTER;\r
-  posy-=W_HEIGHT_CENTER;\r
-\r
-  // clipping\r
-  if (W_WIDTH<2 || W_HEIGHT<2) return;\r
-  xl=W_WIDTH;\r
-  yl=W_HEIGHT;\r
-  xs=ys=0;\r
-  if (posx>cx2 || posy>cy2 || posx+xl<cx1 || posy+yl<cy1)\r
-    return;\r
-  if (posx+xl > cx2) xl=cx2-posx+1;\r
-  if (posy+yl > cy2) yl=cy2-posy+1;\r
-  if (posx<cx1)\r
-  {\r
-    xs=cx1-posx;\r
-    xl-=xs;\r
-    posx=cx1;\r
-\r
-    xc+=cosas*xs; // woo!\r
-    yc-=sinas*xs;\r
-  }\r
-  if (posy<cy1)\r
-  {\r
-    ys=cy1-posy;\r
-    yl-=ys;\r
-    posy=cy1;\r
-\r
-    xc+=sinas*ys; // woo!\r
-    yc+=cosas*ys;\r
-  }\r
-\r
-  dest=screen+posx+posy*sx;\r
-  for (y=0; y<yl; y++)\r
-  {\r
-    srcx=xc;\r
-    srcy=yc;\r
-\r
-    for (x=0; x<xl; x++)\r
-    {\r
-      tempx=(srcx>>16);\r
-      tempy=(srcy>>16);\r
-\r
-      if (tempx>=0 && tempx<width && tempy>=0 && tempy<height)\r
-      {\r
-        if ((pt=src[tempx+tempy*width]))\r
-          dest[x]=pt;\r
-      }\r
-\r
-      srcx+=cosas;\r
-      srcy-=sinas;\r
-    }\r
-\r
-    dest+=sx;\r
-\r
-    xc+=sinas;\r
-    yc+=cosas;\r
-  }\r
-}\r
-\r
-// ============================================================================\r
-// =                        zero's Mosiac effects                             =\r
-// ============================================================================\r
-\r
-//mosaic routines\r
-//TODO-need to asm optimize these badly! they are rather slow!\r
-\r
-byte FindPalMatchForMosaic(quad r, quad g, quad b)\r
-{\r
-  quad index;\r
-  quad diffrecord,diff,record;\r
-  diffrecord=100000;\r
-  record=100000;\r
-\r
-  for(index=0; index<256; index++)\r
-  {\r
-    diff=abs(r-pal[index*3])+abs(g-pal[index*3+1])+abs(b-pal[index*3+2])+1;\r
-    if(diff<diffrecord)\r
-    {\r
-      diffrecord=diff;\r
-      if(diff==1) return index;\r
-      record=index;\r
-    }\r
-  }\r
-  return record;\r
-}\r
-\r
-byte *InitMosaicTable(void)\r
-{\r
-  quad r,g,b;\r
-  byte *tmp;\r
-  tmp=(byte *)malloc(262144);\r
-\r
-  for(r=0; r<64; r++)\r
-    for(g=0; g<64; g++)\r
-      for(b=0; b<64; b++)\r
-        tmp[r*4096+g*64+b]=FindPalMatchForMosaic(r,g,b);\r
-  return tmp;\r
-}\r
-\r
-void Mosaic(quad xlevel, quad ylevel, byte *tbl, quad xmin, quad ymin, quad xmax, quad ymax)\r
-{\r
-  quad x,y,rtot,btot,gtot,xloop,yloop,xfier,txlevel;\r
-  byte *src;\r
-  byte pixel;\r
-\r
-  for(y=ymin; y<ymax; y+=ylevel)\r
-  {\r
-    for(x=xmin; x<xmax; x+=xlevel)\r
-    {\r
-      rtot=0; gtot=0; btot=0;\r
-      src=y*sx+x+screen;\r
-      if(ymax-y<ylevel) ylevel=ymax-y;\r
-      if(xmax-x<xlevel) txlevel=xmax-x; else txlevel=xlevel;\r
-      xfier=ylevel*txlevel;\r
-      for(yloop=0; yloop<ylevel; yloop++)\r
-      {\r
-        for(xloop=0; xloop<txlevel; xloop++)\r
-        {\r
-          rtot+=pal[*src*3];\r
-          gtot+=pal[*src*3+1];\r
-          btot+=pal[*src*3+2];\r
-          src++;\r
-        }\r
-        src+=sx-txlevel;\r
-      }\r
-      rtot/=xfier;\r
-      gtot/=xfier;\r
-      btot/=xfier;\r
-      pixel=tbl[rtot*4096+gtot*64+btot];\r
-      src=y*sx+x+screen;\r
-      for(yloop=0; yloop<ylevel; yloop++)\r
-      {\r
-        for(xloop=0; xloop<txlevel; xloop++)\r
-        {\r
-          *src=pixel;\r
-          src++;\r
-        }\r
-        src+=sx-txlevel;\r
-      }\r
-    }\r
-  }\r
-}\r
-\r
-// ============================================================================\r
-// =                           Mord's trifillers                              =\r
-// ============================================================================\r
-\r
-void FlatPoly(int x1, int y1, int x2, int y2, int x3, int y3, char color)\r
-{\r
-  int xstep,xstep2;\r
-  int xval,xval2;\r
-  int yon;\r
-  int swaptemp;\r
-\r
-  if (y1 > y3)\r
-  {\r
-    swaptemp=x1; x1=x3; x3=swaptemp;\r
-    swaptemp=y1; y1=y3; y3=swaptemp;\r
-  }\r
-  if (y2 > y3)\r
-  {\r
-    swaptemp=x2; x2=x3; x3=swaptemp;\r
-    swaptemp=y2; y2=y3; y3=swaptemp;\r
-  }\r
-  if (y1 > y2)\r
-  {\r
-    swaptemp=x1; x1=x2; x2=swaptemp;\r
-    swaptemp=y1; y1=y2; y2=swaptemp;\r
-  }\r
-\r
-  xstep2=((x3-x1) << 16) / (y3-y1);\r
-  xval2=x1 << 16;\r
-\r
-  if (y1 != y2)\r
-  {\r
-    xstep = ((x2-x1) << 16) / (y2-y1);\r
-    xval = x1 << 16;\r
-    for (yon=y1;yon < y2; yon++)\r
-    {\r
-      if ((yon > -1) && (yon < 200))\r
-      {\r
-        HLineClip(xval>>16,yon,xval2>>16,color);\r
-      }\r
-      xval+=xstep;\r
-      xval2+=xstep2;\r
-    }\r
-  }\r
-  if (y2 != y3)\r
-  {\r
-    xstep = ((x3-x2) << 16) / (y3-y2);\r
-    xval = x2 << 16;\r
-    for (yon=y2;yon < y3; yon++)\r
-    {\r
-      if ((yon > -1) && (yon < 200))\r
-      {\r
-        HLineClip(xval>>16,yon,xval2>>16,color);\r
-      }\r
-      xval+=xstep;\r
-      xval2+=xstep2;\r
-    }\r
-  }\r
-}\r
-\r
-char *image;\r
-int texw,texh;  // those damn bastards want EVERYTHING!\r
-\r
-void tmaphline(int x1, int x2, int y, int tx1, int tx2, int ty1, int ty2)\r
-{\r
-  int i;\r
-  int txstep,txval;\r
-  int tystep,tyval;\r
-\r
-  if (x1 != x2)\r
-  {\r
-    if (x2 < x1)\r
-    {\r
-      i=x1; x1=x2; x2=i;\r
-      i=tx1; tx1=tx2; tx2=i;\r
-      i=ty1; ty1=ty2; ty2=i;\r
-    }\r
-    if ((x1 > sx) || (x2 < 0)) return;\r
-    txstep=((tx2-tx1)<<16)/(x2-x1);\r
-    tystep=((ty2-ty1)<<16)/(x2-x1);\r
-    txval=tx1<<16;\r
-    tyval=ty1<<16;\r
-\r
-    for (i=x1;i<x2;i++)\r
-    {\r
-      screen[y*sx+i] = image[(tyval>>16)*texw+(txval>>16)];\r
-      txval+=txstep;\r
-      tyval+=tystep;\r
-    }\r
-  }\r
-}\r
-\r
-void TMapPoly(int x1, int y1, int x2, int y2, int x3, int y3,\r
-              int tx1, int ty1, int tx2, int ty2, int tx3, int ty3,\r
-              int tw, int th, char *img)\r
-{\r
-  int xstep,xstep2;\r
-  int xval,xval2;\r
-  int txstep,txstep2;\r
-  int tystep,tystep2;\r
-  int txval,txval2;\r
-  int tyval,tyval2;\r
-  int yon;\r
-  int swaptemp;\r
-\r
-  image=img; texw=tw; texh=th;\r
-  if (y1 > y3)\r
-  {\r
-    swaptemp=x1; x1=x3; x3=swaptemp;\r
-    swaptemp=y1; y1=y3; y3=swaptemp;\r
-    swaptemp=tx1; tx1=tx3; tx3=swaptemp;\r
-    swaptemp=ty1; ty1=ty3; ty3=swaptemp;\r
-  }\r
-  if (y2 > y3)\r
-  {\r
-    swaptemp=x2; x2=x3; x3=swaptemp;\r
-    swaptemp=y2; y2=y3; y3=swaptemp;\r
-    swaptemp=tx2; tx2=tx3; tx3=swaptemp;\r
-    swaptemp=ty2; ty2=ty3; ty3=swaptemp;\r
-  }\r
-  if (y1 > y2)\r
-  {\r
-    swaptemp=x1; x1=x2; x2=swaptemp;\r
-    swaptemp=y1; y1=y2; y2=swaptemp;\r
-    swaptemp=tx1; tx1=tx2; tx2=swaptemp;\r
-    swaptemp=ty1; ty1=ty2; ty2=swaptemp;\r
-  }\r
-  xstep2=((x3-x1) << 16) / (y3-y1);\r
-  xval2=x1 << 16;\r
-  txstep2=((tx3-tx1) << 16) / (y3-y1);\r
-  txval2=tx1 << 16;\r
-  tystep2=((ty3-ty1) << 16) / (y3-y1);\r
-  tyval2=ty1 << 16;\r
-\r
-  if (y1 != y2)\r
-  {\r
-    xstep = ((x2-x1) << 16) / (y2-y1);\r
-    xval = x1 << 16;\r
-    txstep = ((tx2-tx1) << 16) / (y2-y1);\r
-    txval = tx1 << 16;\r
-    tystep = ((ty2-ty1) << 16) / (y2-y1);\r
-    tyval = ty1 << 16;\r
-\r
-    for (yon=y1;yon < y2; yon++)\r
-    {\r
-      if ((yon > -1) && (yon < 200))\r
-      {\r
-        tmaphline(xval>>16,xval2>>16,yon,txval>>16,txval2>>16,\r
-                  tyval>>16,tyval2>>16);\r
-      }\r
-      xval+=xstep;\r
-      xval2+=xstep2;\r
-      txval+=txstep;\r
-      txval2+=txstep2;\r
-      tyval+=tystep;\r
-      tyval2+=tystep2;\r
-    }\r
-  }\r
-  if (y2 != y3)\r
-  {\r
-    xstep = ((x3-x2) << 16) / (y3-y2);\r
-    xval = x2 << 16;\r
-    txstep = ((tx3-tx2) << 16) / (y3-y2);\r
-    txval = tx2 << 16;\r
-    tystep = ((ty3-ty2) << 16) / (y3-y2);\r
-    tyval = ty2 << 16;\r
-\r
-    for (yon=y2;yon < y3; yon++)\r
-    {\r
-      if ((yon > -1) && (yon < 200))\r
-      {\r
-        tmaphline(xval>>16,xval2>>16,yon,txval>>16,txval2>>16,\r
-                  tyval>>16,tyval2>>16);\r
-      }\r
-      xval+=xstep;\r
-      xval2+=xstep2;\r
-      txval+=txstep;\r
-      txval2+=txstep2;\r
-      tyval+=tystep;\r
-      tyval2+=tystep2;\r
-    }\r
-  }\r
-}\r
-\r
-/*\r
-// ============================================================================\r
-// =                          aen's ripple-blitter                            =\r
-// ============================================================================\r
-\r
-int thresh;\r
-int dispx[64],dispy[64];\r
-\r
-void InitDisplaceStuff(float xmag, float ymag)\r
-{\r
-  int x, y, *d;\r
-\r
-  xmag=4.0,d=dispx;\r
-  for (y=0; y<32; y++)\r
-    *d++=sin(y * (360.0/32) * (3.14/180))*xmag;\r
-\r
-  ymag=3.9,d=dispy;\r
-  for (x=0; x<32; x++)\r
-    *d++=cos(x * (360.0/32) * (3.14/180))*ymag;\r
-\r
-  thresh=14;\r
-}\r
-\r
-void CopyTileDisplace(int x, int y, unsigned char *spr)\r
-{\r
-  int i, j;\r
-  int xx, yy, xt, yt;\r
-  int xin, yin;\r
-  byte *dest;\r
-\r
-  xin = ((x+xwin)&31)<16 ? 0 : 16;\r
-  yin = ((y+ywin)&31)<16 ? 0 : 16;\r
-  dest=screen+(y*sx)+x;\r
-\r
-  // in the yy and xx calcs, +y and +x keep the start position correct\r
-  // within the 32 element lookup tables (ie. so they flow continuously\r
-  // across the 16x16 images).\r
-\r
-  for (j=0; j<16; j++)\r
-  {\r
-    yy = (j+yin+thresh) & 31;\r
-    for (i=0; i<16; i++)\r
-    {\r
-      xx = (i+xin+thresh) & 31;\r
-      xt = (i+dispx[yy]) & 15;\r
-      yt = (j+dispy[xx]) & 15;\r
-\r
-      dest[i]=spr[(yt*16)+xt];\r
-    }\r
-    dest+=sx;\r
-  }\r
-}\r
-\r
-void CopyTileDisplaceClip(int x, int y, unsigned char *spr)\r
-{\r
-  byte *s,*d;\r
-  int xl,yl,xs,ys;\r
-  int i, j;\r
-  int xx, yy, xt, yt;\r
-  int xin, yin;\r
-\r
-  cpubyte=RENDER;\r
-  xl=16;\r
-  yl=16;\r
-  xs=ys=0;\r
-  if (x>cx2 || y>cy2 || x+xl<cx1 || y+yl<cy1)\r
-    return;\r
-\r
-  if (x+xl > cx2) xl=cx2-x+1;\r
-  if (y+yl > cy2) yl=cy2-y+1;\r
-  if (x<cx1) { xs=cx1-x; xl-=xs; x=cx1; }\r
-  if (y<cy1) { ys=cy1-y; yl-=ys; y=cy1; }\r
-\r
-  s=spr;\r
-  //if (ys) s+=(ys*width); // only perform mul if necessary ;)\r
-  //if (xs) s+=xs;\r
-  d=screen+(y*sx)+x;\r
-\r
-  xin = ((x+xwin)&31)<16 ? 0 : 16; xin += xs;\r
-  yin = ((y+ywin)&31)<16 ? 0 : 16; yin += ys;\r
-\r
-  //dest=screen+(y*sx)+x;\r
-\r
-  // in the yy and xx calcs, +y and +x keep the start position correct\r
-  // within the 32 element lookup tables (ie. so they flow continuously\r
-  // across the 16x16 images).\r
-\r
-  for (j=0; j<yl; j++)\r
-  {\r
-    yy = (j+yin+thresh) & 31;\r
-    for (i=0; i<xl; i++)\r
-    {\r
-      xx = (i+xin+thresh) & 31;\r
-      xt = (i+xs+dispx[yy]) & 15;\r
-      yt = (j+ys+dispy[xx]) & 15;\r
-\r
-      d[i]=s[(yt*16)+xt];\r
-    }\r
-    d+=sx;\r
-  }\r
-  cpubyte=ETC;\r
-} */\r
diff --git a/16/v2/source/verge/ENGINE/VDRIVER.H b/16/v2/source/verge/ENGINE/VDRIVER.H
deleted file mode 100755 (executable)
index 810fd5b..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef VDRIVER_H\r
-#define VDRIVER_H\r
-\r
-extern byte *screen,*video,*vscreen;\r
-extern byte pal[768], pal2[768];\r
-extern byte *translucency_table;\r
-\r
-extern int sx, sy;\r
-extern int tx, ty;\r
-extern int tsx, tsy;\r
-extern int cx1,cy1,cx2,cy2;\r
-\r
-extern char *DriverDesc;\r
-\r
-extern int InitVideo(int xres, int yres);\r
-extern void VidInfo(void);\r
-extern void SetPalette(byte *pall);\r
-extern void GetPalette(void);\r
-extern void set_intensity(unsigned int n);\r
-\r
-// driver interface\r
-\r
-extern int (*ShutdownVideo)(int i);\r
-extern int (*ShowPage)(void);\r
-\r
-// LFB routines for all driver functions\r
-\r
-extern int  LFB_ShowPage(void);\r
-extern void ColorField(int x, int y, byte c);\r
-extern void ClearScreen(void);\r
-extern void MapLine(int x, int y, int yofs, word *map);\r
-extern void TMapLine(int x, int y, int yofs, word *map);\r
-\r
-extern void CopySprite(int x, int y, int width, int height, byte *src);\r
-extern void TCopySprite(int x, int y, int width, int height, byte *src);\r
-extern void CopySpriteZoom(int x, int y, int width, int height, int dw, int dh, byte *src);\r
-extern void TCopySpriteZoom(int x, int y, int width, int height, int dw, int dh, byte *src);\r
-extern void CopySpriteLucent(int x, int y, int width, int height, byte *src);\r
-extern void TCopySpriteLucent(int x, int y, int width, int height, byte *src);\r
-extern void CopySpriteZoomLucent(int x, int y, int width, int height, int dw, int dh, byte *src);\r
-extern void TCopySpriteZoomLucent(int x, int y, int width, int height, int dw, int dh, byte *src);\r
-extern void Silhouette(int x, int y, int width, int height, int color, byte *src);\r
-extern void SilhouetteZoom(int x, int y, int sw, int sh, int dw, int dh, int color, byte *src);\r
-extern void SilhouetteLucent(int x, int y, int width, int height, int color, byte *src);\r
-extern void SilhouetteZoomLucent(int x, int y, int sw, int sh, int dw, int dh, int color, byte *src);\r
-extern void Tint(int x, int y, int width, int height, int color, byte *src);\r
-extern void TintZoom(int x, int y, int sw, int sh, int dw, int dh, int color, byte *src);\r
-\r
-extern void CopySpriteClip(int x, int y, int width, int height, byte *src);\r
-extern void TCopySpriteClip(int x, int y, int width, int height, byte *src);\r
-extern void CopySpriteZoomClip(int x, int y, int width, int height, int dw, int dh, byte *src);\r
-extern void TCopySpriteZoomClip(int x, int y, int width, int height, int dw, int dh, byte *src);\r
-extern void CopySpriteLucentClip(int x, int y, int width, int height, byte *src);\r
-extern void TCopySpriteLucentClip(int x, int y, int width, int height, byte *src);\r
-extern void CopySpriteZoomLucentClip(int x, int y, int width, int height, int dw, int dh, byte *src);\r
-extern void TCopySpriteZoomLucentClip(int x, int y, int width, int height, int dw, int dh, byte *src);\r
-extern void SilhouetteClip(int x, int y, int width, int height, int color, byte *src);\r
-extern void SilhouetteZoomClip(int x, int y, int sw, int sh, int dw, int dh, int color, byte *src);\r
-extern void SilhouetteLucentClip(int x, int y, int width, int height, int color, byte *src);\r
-extern void SilhouetteZoomLucentClip(int x, int y, int sw, int sh, int dw, int dh, int color, byte *src);\r
-extern void TintClip(int x, int y, int width, int height, int color, byte *src);\r
-extern void TintZoomClip(int x, int y, int sw, int sh, int dw, int dh, int color, byte *src);\r
-\r
-extern void CopyTile(int x, int y, byte *src);\r
-extern void TCopyTile(int x, int y, byte *spr, byte *matte);\r
-extern void CopyTileLucent(int x, int y, byte *src);\r
-extern void TCopyTileLucent(int x, int y, byte *spr);\r
-\r
-extern void CopyTileClip(int x, int y, byte *src);\r
-extern void TCopyTileClip(int x, int y, byte *spr, byte *matte);\r
-extern void CopyTileLucentClip(int x, int y, byte *src);\r
-extern void TCopyTileLucentClip(int x, int y, byte *spr);\r
-\r
-extern int  GetPixel(int x, int y);\r
-extern void SetPixel(int x, int y, int color);\r
-extern void SetPixelLucent(int x, int y, int color);\r
-extern void HLine(int x, int y, int x2, int color);\r
-extern void HLineLucent(int x, int y, int x2, int color);\r
-extern void RectFill(int x, int y, int x2, int y2, int color);\r
-extern void RectFillLucent(int x, int y, int x2, int y2, int color);\r
-extern void VLine(int x, int y, int y2, int color);\r
-extern void VLineLucent(int x, int y, int y2, int color);\r
-extern void Rect(int x, int y, int x2, int y2, int color);\r
-extern void RectLucent(int x, int y, int x2, int y2, int color);\r
-extern void Line(int x, int y, int x2, int y2, int color);\r
-extern void LineLucent(int x, int y, int x2, int y2, int color);\r
-extern void CircleFill(int x, int y, int radius, int color);\r
-extern void CircleFillLucent(int x, int y, int radius, int color);\r
-extern void Circle(int x, int y, int radius, int color);\r
-extern void CircleLucent(int x, int y, int radius, int color);\r
-\r
-extern int  GetPixelClip(int x, int y);\r
-extern void SetPixelClip(int x, int y, int color);\r
-extern void SetPixelLucentClip(int x, int y, int color);\r
-extern void HLineClip(int x, int y, int x2, int color);\r
-extern void HLineLucentClip(int x, int y, int x2, int color);\r
-extern void RectFillClip(int x, int y, int x2, int y2, int color);\r
-extern void RectFillLucentClip(int x, int y, int x2, int y2, int color);\r
-extern void VLineClip(int x, int y, int y2, int color);\r
-extern void VLineLucentClip(int x, int y, int y2, int color);\r
-extern void RectClip(int x, int y, int x2, int y2, int color);\r
-extern void RectLucentClip(int x, int y, int x2, int y2, int color);\r
-extern void LineClip(int x, int y, int x2, int y2, int color);\r
-extern void LineLucentClip(int x, int y, int x2, int y2, int color);\r
-extern void CircleFillClip(int x, int y, int radius, int color);\r
-extern void CircleFillLucentClip(int x, int y, int radius, int color);\r
-extern void CircleClip(int x, int y, int radius, int color);\r
-extern void CircleLucentClip(int x, int y, int radius, int color);\r
-\r
-extern void WrapBlit(quad x, quad y, int wide, int high, byte *src);\r
-extern void WrapBlitMasked(quad x, quad y, int wide, int high, byte *src);\r
-extern void WrapBlitLucent(quad x, quad y, int wide, int high, byte *src);\r
-extern void WrapBlitLucentMasked(quad x, quad y, int wide, int high, byte *src);\r
-\r
-void RotScale(int posx, int posy, quad width, quad height, float angle, float scale, byte *src);\r
-byte *InitMosaicTable(void);\r
-void Mosaic(quad xlevel, quad ylevel, byte *tbl, quad xmin, quad ymin, quad xmax, quad ymax);\r
-\r
-void TMapPoly(int x1, int y1, int x2, int y2, int x3, int y3,\r
-              int tx1, int ty1, int tx2, int ty2, int tx3, int ty3,\r
-              int tw, int th, char *img);\r
-void FlatPoly(int x1, int y1, int x2, int y2, int x3, int y3, char color);\r
-\r
-#endif // VDRIVER_H\r
diff --git a/16/v2/source/verge/ENGINE/VERGE.C b/16/v2/source/verge/ENGINE/VERGE.C
deleted file mode 100755 (executable)
index 3be4de0..0000000
+++ /dev/null
@@ -1,325 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include <stdarg.h> // va_*\r
-\r
-#include "verge.h"\r
-\r
-// ================================= Data ====================================\r
-\r
-// declared in VDRIVER.C\r
-extern byte* translucency_table;\r
-\r
-char *strbuf=0;                       // Universal temporary string buffer. :)\r
-char joyflag=0;\r
-int vidxres=0,vidyres=0;              // Joystick on/off | Video mode to use\r
-char logoutput=0;                     // Verbose debugging startup mode\r
-char nocdaudio=0;                     // do not use CD audio\r
-char startmap[80];                    // startup map\r
-FILE *logf=0;                         // logfile file handle\r
-\r
-// ================================= Code ====================================\r
-\r
-void InitializeDefaults()\r
-{\r
-  kb1=28;  kb2=56;  kb3=1;  kb4=57;    // default keyboard controls\r
-  jb1=1;   jb2=2;   jb3=3;  jb4=4;     // default joystick controls\r
-  joyflag=0;                           // joystick defaults to disabled\r
-  vidxres=320; vidyres=200;\r
-  logoutput=0;                         // Don't be annoyingly verbose\r
-  strbuf=(char *) valloc(2000, "strbuf", OID_TEMP);\r
-  memcpy(startmap,"test.map\0",9);\r
-\r
-  md_mixfreq=44100;\r
-  md_dmabufsize=2000;\r
-  md_mode=DMODE_16BITS|DMODE_STEREO;\r
-  md_device=0;\r
-}\r
-\r
-static VFILE *user_cfg_file=0;\r
-static char parse_str[256];\r
-\r
-static char *parse_cfg_token()\r
-{\r
-  vscanf(user_cfg_file, "%s", parse_str);\r
-  return parse_str;\r
-}\r
-\r
-// compares string against parse_str (grabbed by parse_cfg_token)\r
-// 0=mismatch, 1=match\r
-static int parse_match(char *str)\r
-{\r
-  return !strcmp(parse_str, str);\r
-}\r
-\r
-void ParseStartupFiles()\r
-{\r
-  user_cfg_file = vopen("user.cfg");\r
-  if (!user_cfg_file)\r
-  {\r
-    printf("Could not open user.cfg. \n");\r
-    exit(-1);\r
-  }\r
-\r
-  while (1)\r
-  {\r
-    parse_cfg_token();\r
-\r
-    // mounts a pack file; up to 3? (perhaps gaurd against more?)\r
-    if (parse_match("mount"))\r
-      { MountVFile(parse_cfg_token()); continue; }\r
-    // set video resolution\r
-    else if (parse_match("vidmode"))\r
-    {\r
-      vidxres = atoi(parse_cfg_token());\r
-      vidyres = atoi(parse_cfg_token());\r
-\r
-      // check validity\r
-      if (vidxres != 256 && vidxres != 320\r
-      &&  vidxres != 360 && vidxres != 640)\r
-      {\r
-        Log("user.cfg: invalid resolution width %i passed to vidmode",\r
-          vidxres);\r
-      }\r
-      if (vidyres != 200 && vidyres != 240\r
-      &&  vidyres != 256 && vidyres != 480)\r
-      {\r
-        Log("user.cfg: invalid resolution height %i passed to vidmode",\r
-          vidyres);\r
-      }\r
-\r
-      continue;\r
-    }\r
-    // log to VERGE.LOG\r
-    else if (parse_match("log"))\r
-    {\r
-      logoutput=1;\r
-      continue;\r
-    }\r
-    // disable CD playing\r
-    else if (parse_match("nocdaudio"))\r
-    {\r
-      nocdaudio=1;\r
-      continue;\r
-    }\r
-    // map VERGE.EXE will run first when executed\r
-    else if (parse_match("startmap"))\r
-    {\r
-      strcpy(startmap, parse_cfg_token());\r
-      continue;\r
-    }\r
-    // 0=auto detect, 1=???, 2=???, 3=nosound\r
-    else if (parse_match("sound_device"))\r
-    {\r
-      md_device = atoi(parse_cfg_token());\r
-      continue;\r
-    }\r
-    // sound lib setting\r
-    else if (parse_match("mixrate"))\r
-    {\r
-      md_mixfreq = atoi(parse_cfg_token());\r
-      continue;\r
-    }\r
-    // sound lib setting\r
-    else if (parse_match("dmabufsize"))\r
-    {\r
-      md_dmabufsize = atoi(parse_cfg_token());\r
-      continue;\r
-    }\r
-    // sound lib setting\r
-    else if (parse_match("force8bit"))\r
-    {\r
-      continue;\r
-    }\r
-    // sound lib setting\r
-    else if (parse_match("forcemono"))\r
-    {\r
-      continue;\r
-    }\r
-\r
-    // unknown command, assume end\r
-    break;\r
-  }\r
-\r
-  // done parsing config\r
-  vclose(user_cfg_file);\r
-}\r
-\r
-void ParseAutoCFG()\r
-{ VFILE *f;\r
-  int i;\r
-\r
-  if (!(f=vopen("auto.cfg"))) return;\r
-\r
-  while (1)\r
-  {\r
-    vgets((char *) cmd, 40, f);\r
-    for (i=0; i<(signed) strlen((char *) cmd); i++)\r
-      if (cmd[i]==10 || cmd[i]==13) cmd[i]=0;\r
-    if (strlen((char*) cmd)<2) break;\r
-    ProcessCommand();\r
-  }\r
-  vclose(f);\r
-}\r
-\r
-void InitLog()\r
-{\r
-  if (logoutput)\r
-  {\r
-    remove("verge.log");\r
-  }\r
-}\r
-\r
-void Log(char *message, ...)\r
-{\r
-  char tempbuf[256];\r
-  va_list lst;\r
-\r
-  if (!logoutput) return;\r
-\r
-  va_start(lst, message);\r
-  vsprintf(tempbuf, message, lst);\r
-  va_end(lst);\r
-\r
-  logf = fopen("verge.log", "aw");\r
-  if (!logf) err("unable to log to verge.log");\r
-\r
-  fprintf(logf, "%s \n", tempbuf);\r
-  fflush(logf);\r
-\r
-  fclose(logf);\r
-}\r
-\r
-// used in conjunction with LogDone()\r
-void Logp(char *message, ...)\r
-{\r
-  char tempbuf[256];\r
-  va_list lst;\r
-\r
-  if (!logoutput) return;\r
-\r
-  va_start(lst, message);\r
-  vsprintf(tempbuf, message, lst);\r
-  va_end(lst);\r
-\r
-  logf = fopen("verge.log", "aw");\r
-  if (!logf) err("unable to log to verge.log");\r
-\r
-  fprintf(logf, "%s", tempbuf);\r
-  fflush(logf);\r
-\r
-  fclose(logf);\r
-}\r
-\r
-void LogDone()\r
-{\r
-  if (!logoutput) return;\r
-\r
-  logf = fopen("verge.log", "aw");\r
-  if (!logf) err("unable to log to verge.log");\r
-\r
-  fprintf(logf, "... OK \n");\r
-  fflush(logf);\r
-\r
-  fclose(logf);\r
-}\r
-\r
-void InitSystems()\r
-{\r
-  InitLog();\r
-  Log("V2 startup. Logfile initialized.");\r
-  Logp("Sys: Initializing keyboard handler.");\r
-  InitKeyboard();\r
-  LogDone();\r
-#ifdef __DJGPP__\r
-  keyboard_chain(0);\r
-#endif\r
-  Logp("Sys: Initializing timer. Set 100hz.");\r
-  InitTimer();\r
-  LogDone();\r
-\r
-  /*\r
-  Logp("Sys: Initializing CD Audio.");\r
-  CD_Init();\r
-  LogDone();\r
-  */\r
-\r
-  Logp("Sys: Initializing music system.");\r
-  InitMusicSystem();\r
-  LogDone();\r
-\r
-  InitVideo(vidxres, vidyres);\r
-}\r
-\r
-void LoadTransTable()\r
-{\r
-  FILE *fp=0;\r
-\r
-  if (translucency_table)\r
-    { free(translucency_table); translucency_table=0; }\r
-  translucency_table=(byte *)valloc(65536, "translucency_table", OID_MISC);\r
-\r
-  fp = fopen("trans.tbl", "rb");\r
-  if (!fp) err("Could not open trans.tbl.");\r
-\r
-  fread(translucency_table, 65536, 1, fp);\r
-\r
-  fclose(fp);\r
-}\r
-\r
-void vmain(int argc, char *argv[])\r
-{\r
-  char temp[256];\r
-\r
-  InitializeDefaults();\r
-  ParseStartupFiles();\r
-  InitSystems();\r
-  if (argc==2)\r
-  {\r
-    memcpy(startmap, argv[1], strlen(argv[1]));\r
-  }\r
-\r
-  InitConsole();\r
-  sprintf(temp,"VERGE System Version %s", VERSION);\r
-  Con_Printf(temp);\r
-  Con_Printf("Copyright (C)1998 vecna");\r
-\r
-  ParseAutoCFG();\r
-  LoadTransTable();\r
-  LoadSystemVC();\r
-  LoadMAP(startmap);\r
-\r
-  while (1)\r
-  {\r
-    while (timer_count!=0)\r
-    {\r
-       timer_count--;\r
-       GameTick();\r
-    }\r
-    Render();\r
-\r
-    ShowPage();\r
-    if (kill)\r
-    {\r
-      FreeVSP();\r
-      FreeMAP();\r
-      FreeCHRList();\r
-      vcsp=vcstack;\r
-      kill=0;\r
-      LoadMAP(startmap);\r
-    }\r
-  }\r
-}\r
diff --git a/16/v2/source/verge/ENGINE/VERGE.H b/16/v2/source/verge/ENGINE/VERGE.H
deleted file mode 100755 (executable)
index 3d782c3..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-// Wee. A generic #include. I feel so warm and fuzzy inside. :)\r
-\r
-#define VERSION "2.01b"\r
-\r
-#include <dos.h>\r
-\r
-#include <stdio.h>\r
-#include <stdlib.h>\r
-#include <string.h>\r
-\r
-#define byte unsigned char\r
-#define word unsigned short int\r
-#define quad unsigned int\r
-\r
-#define TRUE 1\r
-#define FALSE 0\r
-\r
-#include "inter.h"\r
-#include "a_memory.h"\r
-#include "vfile.h"\r
-#include "conlib.h"\r
-#include "console.h"\r
-#include "controls.h"\r
-#include "engine.h"\r
-#include "entity.h"\r
-#include "fli.h"\r
-#include "font.h"\r
-#include "image.h"\r
-#include "keyboard.h"\r
-#include "main.h"\r
-#include "message.h"\r
-#include "mikmod.h"\r
-#include "render.h"\r
-#include "sound.h"\r
-#include "timer.h"\r
-#include "vc.h"\r
-#include "vdriver.h"\r
-\r
-extern char *strbuf;
\ No newline at end of file
diff --git a/16/v2/source/verge/ENGINE/VESA.C b/16/v2/source/verge/ENGINE/VESA.C
deleted file mode 100755 (executable)
index a97fbe6..0000000
+++ /dev/null
@@ -1,776 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include <pc.h>\r
-#include <dpmi.h>\r
-#include <go32.h>\r
-\r
-#include <dpmi.h>\r
-#include <sys\nearptr.h>\r
-#include "verge.h"\r
-\r
-// ================================= Data ====================================\r
-\r
-byte *vesascreen, *vesascreenx;             // virscr | realscr\r
-\r
-// ================================= Code ====================================\r
-\r
-void VESASetMode(int mode)\r
-{\r
-  REGISTERS r;\r
-  SET_AX(r, mode);\r
-  INTERRUPT(0x10, r);\r
-}\r
-\r
-int VESAShutdown(void)\r
-{\r
-  VESASetMode(0x3);\r
-  free(vesascreen);\r
-  return 0;\r
-}\r
-\r
-void VESASetBank(int bank)\r
-{\r
-  REGISTERS r;\r
-  SET_AX(r, 0x4f05);\r
-  SET_BX(r, 0);\r
-  SET_DX(r, bank);\r
-  INTERRUPT(0x10, r);\r
-}\r
-\r
-int VESAShowPage(void)\r
-{ byte *s,*d;\r
-  int y,bytes,bank;\r
-  int span;\r
-\r
-  RenderGUI();\r
-  cpubyte=PFLIP;\r
-\r
-  s=vesascreen+(16*tsx)+16;\r
-  d=vesascreenx;\r
-\r
-  bank=0;\r
-  bytes=65536;\r
-  VESASetBank(bank++);\r
-\r
-  for (y=sy; y; y--)\r
-  {\r
-    if (bytes >= sx)\r
-    { memcpy(d,s,sx);\r
-      bytes-=sx;\r
-      s+=sx;\r
-      d+=sx;\r
-    }\r
-    else\r
-    { memcpy(d,s,bytes);\r
-      s+=bytes;\r
-      span=sx-bytes;\r
-\r
-      VESASetBank(bank++);\r
-      d=vesascreenx;\r
-      bytes=65536;\r
-\r
-      memcpy(d,s,span);\r
-      bytes-=span;\r
-      s+=span;\r
-      d+=span;\r
-    }\r
-    s+=32;\r
-  }\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int VESACopySprite(int x, int y, int width, int height, byte *src)\r
-{\r
-  cpubyte=RENDER;\r
-\r
-  asm("movl %3, %%edx                   \n\t"\r
-      "movl %4, %%esi                   \n\t"\r
-"csl0:                                  \n\t"\r
-      "movl %1, %%eax                   \n\t"\r
-      "imul $672, %%eax                 \n\t"\r
-      "addl %0, %%eax                   \n\t"\r
-      "addl _vesascreen, %%eax          \n\t"\r
-      "movl %%eax, %%edi                \n\t"\r
-      "movl %2, %%ecx                   \n\t"\r
-      "shrl $2, %%ecx                   \n\t"\r
-      "repz                             \n\t"\r
-      "movsl                            \n\t"\r
-      "incl %1                          \n\t"\r
-      "decl %%edx                       \n\t"\r
-      "jnz csl0                         \n\t"\r
-      :\r
-      : "m" (x), "m" (y), "m" (width), "m" (height), "m" (src)\r
-      : "eax","edx","esi","edi","ecx","cc" );\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int VESACCopySprite(int x,int y,int width,int height,byte *src)\r
-{\r
-  byte *s,*d;\r
-  int xl,yl,xs,ys;\r
-  int cx1=0, cy1=0, cx2=tsx-1, cy2=tsy-1;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  xl=width;\r
-  yl=height;\r
-  xs=ys=0;\r
-\r
-  if (x>cx2 || y>cy2 || x+xl<cx1 || y+yl<cy1)\r
-    return 0;\r
-\r
-  if (x+xl > cx2) xl=cx2-x+1;\r
-  if (y+yl > cy2) yl=cy2-y+1;\r
-\r
-  if (x<cx1) { xs=cx1-x; xl-=xs; x=cx1; }\r
-  if (y<cy1) { ys=cy1-y; yl-=ys; y=cy1; }\r
-\r
-  s=src;\r
-  if (xs+ys) s+=(ys*width)+xs;\r
-  d=vesascreen+(y*tsx)+x;\r
-\r
-  for (; yl; yl--)\r
-  {\r
-    memcpy(d,s,xl);\r
-    s+=width;\r
-    d+=tsx;\r
-  }\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int VESATCCopySprite(int x,int y,int width,int height,byte *src)\r
-{\r
-  byte *s,*d,c;\r
-  int xl,yl,xs,ys;\r
-  int cx1=0, cy1=0, cx2=tsx-1, cy2=tsy-1;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  xl=width;\r
-  yl=height;\r
-  xs=ys=0;\r
-\r
-  if (x>cx2 || y>cy2 || x+xl<cx1 || y+yl<cy1)\r
-    return 0;\r
-\r
-  if (x+xl > cx2) xl=cx2-x+1;\r
-  if (y+yl > cy2) yl=cy2-y+1;\r
-\r
-  if (x<cx1) { xs=cx1-x; xl-=xs; x=cx1; }\r
-  if (y<cy1) { ys=cy1-y; yl-=ys; y=cy1; }\r
-\r
-  s=src;\r
-  if (xs+ys) s+=(ys*width)+xs;\r
-  d=vesascreen+(y*tsx)+x;\r
-\r
-  for (; yl; yl--)\r
-  {\r
-    for (x=0; x<xl; x++)\r
-    {\r
-      c=s[x];\r
-      if (c)\r
-        d[x]=c;\r
-    }\r
-    s+=width;\r
-    d+=tsx;\r
-  }\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int VESACopyTile(int x, int y, byte *spr)\r
-{\r
-  int h;\r
-  byte *d;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  h=16;\r
-\r
-  d=vesascreen+(y*tsx)+x;\r
-  for (; h; h--)\r
-  {\r
-    memcpy(d, spr, 16);\r
-    spr+=16;\r
-    d+=tsx;\r
-  }\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int VESATCopySprite(int x, int y, int width, int height, byte *src)\r
-{\r
-  cpubyte=RENDER;\r
-\r
-  asm("movl %3, %%ecx                   \n\t"\r
-      "movl %4, %%esi                   \n\t"\r
-"tcsl0:                                 \n\t"\r
-      "movl %1, %%eax                   \n\t"\r
-      "imul $672, %%eax                 \n\t"\r
-      "addl %0, %%eax                   \n\t"\r
-      "addl _vesascreen, %%eax          \n\t"\r
-      "movl %%eax, %%edi                \n\t"\r
-      "movl %2, %%edx                   \n\t"\r
-"drawloop:                              \n\t"\r
-      "lodsb                            \n\t"\r
-      "orb %%al, %%al                   \n\t"\r
-      "jz nodraw                        \n\t"\r
-      "stosb                            \n\t"\r
-      "decl %%edx                       \n\t"\r
-      "jz endline                       \n\t"\r
-      "jmp drawloop                     \n\t"\r
-"nodraw:                                \n\t"\r
-      "incl %%edi                       \n\t"\r
-      "decl %%edx                       \n\t"\r
-      "jnz drawloop                     \n\t"\r
-"endline:                               \n\t"\r
-      "incl %1                          \n\t"\r
-      "decl %%ecx                       \n\t"\r
-      "jnz tcsl0                        \n\t"\r
-      :\r
-      : "m" (x), "m" (y), "m" (width), "m" (height), "m" (src)\r
-      : "eax","edx","esi","edi","ecx","cc" );\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int VESATCopyTile(int x, int y, byte *spr, byte *matte)\r
-{\r
-  cpubyte=RENDER;\r
-  asm("movl $16, %%ecx                  \n\t"\r
-      "movl %2, %%esi                   \n\t"\r
-      "movl %1, %%edi                   \n\t"\r
-      "imul $672, %%edi                 \n\t"\r
-      "addl %0, %%edi                   \n\t"\r
-      "addl _vesascreen, %%edi          \n\t"\r
-      "movl %3, %%edx                   \n\t"\r
-"tctl0:                                 \n\t"\r
-      "movl (%%edi), %%eax              \n\t"\r
-      "andl (%%edx), %%eax              \n\t"\r
-      "orl  (%%esi), %%eax              \n\t"\r
-      "movl %%eax, (%%edi)              \n\t"\r
-      "movl 4(%%edi), %%eax             \n\t"\r
-      "andl 4(%%edx), %%eax             \n\t"\r
-      "orl  4(%%esi), %%eax             \n\t"\r
-      "movl %%eax, 4(%%edi)             \n\t"\r
-      "movl 8(%%edi), %%eax             \n\t"\r
-      "andl 8(%%edx), %%eax             \n\t"\r
-      "orl  8(%%esi), %%eax             \n\t"\r
-      "movl %%eax, 8(%%edi)             \n\t"\r
-      "movl 12(%%edi), %%eax            \n\t"\r
-      "andl 12(%%edx), %%eax            \n\t"\r
-      "orl  12(%%esi), %%eax            \n\t"\r
-      "movl %%eax, 12(%%edi)            \n\t"\r
-      "addl $16, %%esi                  \n\t"\r
-      "addl $672, %%edi                 \n\t"\r
-      "addl $16, %%edx                  \n\t"\r
-      "decl %%ecx                       \n\t"\r
-      "jnz tctl0                        \n\t"\r
-      :\r
-      : "m" (x), "m" (y), "m" (spr), "m" (matte)\r
-      : "eax","ecx","edx","esi","edi","cc" );\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int VESAScaleSprite(int x, int y, int w, int h, int tw, int th, byte *s)\r
-{\r
-  int i,j,xm,ym,xd,yd,sx,sy=0,xs,ys,dys=0;\r
-  unsigned char *d;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  if (!tw || !th) return 0;\r
-  tw += sgn(tw); th += sgn(th);\r
-  xm = abs(tw); ym = abs(th);\r
-  xs = (w<<16)/xm; ys = (h<<16)/ym;\r
-  xd = sgn(tw); yd = sgn(th);\r
-\r
-  if (tw>0 && th>0) dys=tsx-xm;\r
-  else if (tw>0 && th<0) dys=(0-tsx)-xm;\r
-  else if (tw<0 && th>0) dys=tsx+xm;\r
-  else if (tw<0 && th<0) dys=(0-tsx)+xm;\r
-\r
-  d = vesascreen+(y*tsx)+x;\r
-  for (i=0;i<ym;++i) {\r
-    sx=0;\r
-    for (j=0;j<xm;++j) {\r
-      *d=s[(sx>>16)];\r
-      d+=xd;\r
-      sx+=xs;\r
-      }\r
-    d+=dys;\r
-    sy+=ys;\r
-    s+=(sy>>16)*w;\r
-    sy&=0xffff;\r
-    }\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int VESARenderMAPLine(int x, int y, int yofs, word *map)\r
-{\r
-  cpubyte=RENDER;\r
-  // ...\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int VESATRenderMAPLine(int x, int y, int yofs, word *map)\r
-{\r
-  cpubyte=RENDER;\r
-  // ...\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int VESAColorField(int x, int y, byte c)\r
-{\r
-  cpubyte=RENDER;\r
-  // ...\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int VESAClearScreen()\r
-{\r
-  cpubyte=RENDER;\r
-  memset(vesascreen+(672*16)+16,0,(672*480));\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int VESAPutPixel(int x, int y, int color)\r
-{\r
-  cpubyte=RENDER;\r
-\r
-  if (x<cx1 || y<cy1 || x>cx2 || y>cy2)\r
-  {\r
-    cpubyte=ETC;\r
-    return 0;\r
-  }\r
-\r
-  x+=16;\r
-  y+=16;\r
-\r
-  vesascreen[(y*tsx)+x]=color;\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int VESAGetPixel(int x, int y)\r
-{\r
-  cpubyte=RENDER;\r
-\r
-  if (x<cx1 || y<cy1 || x>cx2 || y>cy2)\r
-  {\r
-    cpubyte=ETC;\r
-    return 0;\r
-  }\r
-\r
-  x+=16;\r
-  y+=16;\r
-\r
-  cpubyte=ETC;\r
-  return vesascreen[(y*tsx)+x];\r
-  return 0;\r
-}\r
-\r
-int VESAHLine(int x, int y, int x2, int color)\r
-{\r
-  byte *d;\r
-  int width;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  // swap?\r
-  if (x2<x) { int t=x2; x=x2; x2=t; }\r
-\r
-  width=x2-x+1;\r
-  if (x>cx2 || y>cy2 || x+width<cx1 || y<cy1)\r
-    return 0;\r
-\r
-  if (x+width > cx2) width=cx2-x+1;\r
-  if (x<cx1) { width-=(cx1-x); x=cx1; }\r
-\r
-  x+=16;\r
-  y+=16;\r
-  x2+=16;\r
-\r
-  d=vesascreen+(y*tsx)+x;\r
-  memset(d,color,width);\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int VESAVLine(int x, int y, int y2, int color)\r
-{\r
-  byte *d;\r
-  int height;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  // swap?\r
-  if (y2<y) { int t=y2; x=y2; y2=t; }\r
-\r
-  height=y2-y+1;\r
-  if (x>cx2 || y>cy2 || x<cx1 || y+height<cy1)\r
-  {\r
-    cpubyte=ETC;\r
-    return 0;\r
-  }\r
-\r
-  if (y+height > cy2) height=cy2-y+1;\r
-  if (y<cy1) { height-=(cy1-y); y=cy1; }\r
-\r
-  x+=16;\r
-  y+=16;\r
-  y2+=16;\r
-\r
-  d=vesascreen+(y*tsx)+x;\r
-  for (; height; height--)\r
-  {\r
-    *d=color;\r
-    d+=tsx;\r
-  }\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int VESALine(int x1, int y1, int x2, int y2, int color)\r
-{\r
-  short i,xc,yc,er,n,m,xi,yi,xcxi,ycyi,xcyi;\r
-  unsigned dcy,dcx;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  // check to see if the line is completly clipped off\r
-  if ((x1<cx1 && x2<cx1) || (x1>cx2 && x2>cx2)\r
-  || (y1<cy1 && y2<cy1) || (y1>cy2 && y2>cy2))\r
-  {\r
-    cpubyte=ETC;\r
-    return 0;\r
-  }\r
-\r
-  if (x1>x2)\r
-  {\r
-    i=x1; x1=x2; x2=i;\r
-    i=y1; y1=y2; y2=i;\r
-  }\r
-\r
-  // clip the left side\r
-  if (x1<cx1)\r
-  { int myy=(y2-y1);\r
-    int mxx=(x2-x1),b;\r
-    if (!mxx)\r
-    {\r
-      cpubyte=ETC;\r
-      return 0;\r
-    }\r
-    if (myy)\r
-    {\r
-      b=y1-(y2-y1)*x1/mxx;\r
-      y1=myy*cx1/mxx+b;\r
-      x1=cx1;\r
-    }\r
-    else x1=cx1;\r
-  }\r
-\r
-  // clip the right side\r
-  if (x2>cx2)\r
-  { int myy=(y2-y1);\r
-    int mxx=(x2-x1),b;\r
-    if (!mxx)\r
-    {\r
-      cpubyte=ETC;\r
-      return 0;\r
-    }\r
-    if (myy)\r
-    {\r
-      b=y1-(y2-y1)*x1/mxx;\r
-      y2=myy*cx2/mxx+b;\r
-      x2=cx2;\r
-    }\r
-    else x2=cx2;\r
-  }\r
-\r
-  if (y1>y2)\r
-  {\r
-    i=x1; x1=x2; x2=i;\r
-    i=y1; y1=y2; y2=i;\r
-  }\r
-\r
-  // clip the bottom\r
-  if (y2>cy2)\r
-  { int mxx=(x2-x1);\r
-    int myy=(y2-y1),b;\r
-    if (!myy)\r
-    {\r
-      cpubyte=ETC;\r
-      return 0;\r
-    }\r
-    if (mxx)\r
-    {\r
-      b=y1-(y2-y1)*x1/mxx;\r
-      x2=(cy2-b)*mxx/myy;\r
-      y2=cy2;\r
-    }\r
-    else y2=cy2;\r
-  }\r
-\r
-  // clip the top\r
-  if (y1<cy1)\r
-  { int mxx=(x2-x1);\r
-    int myy=(y2-y1),b;\r
-    if (!myy)\r
-    {\r
-      cpubyte=ETC;\r
-      return 0;\r
-    }\r
-    if (mxx)\r
-    {\r
-      b=y1-(y2-y1)*x1/mxx;\r
-      x1=(cy1-b)*mxx/myy;\r
-      y1=cy1;\r
-    }\r
-    else y1=cy1;\r
-  }\r
-\r
-  // ???\r
-  // see if it got cliped into the box, out out\r
-  if (x1<cx1 || x2<cx1 || x1>cx2 || x2>cx2 || y1<cy1 || y2 <cy1 || y1>cy2 || y2>cy2)\r
-  {\r
-    cpubyte=ETC;\r
-    return 0;\r
-  }\r
-\r
-  if (x1>x2)\r
-  { xc=x2; xi=x1; }\r
-  else { xi=x2; xc=x1; }\r
-\r
-  x1+=16;y1+=16; // aen; adjust these here??\r
-  x2+=16;y2+=16;\r
-\r
-  // assume y1<=y2 from above swap operation\r
-  yi=y2; yc=y1;\r
-\r
-  dcx=x1; dcy=y1;\r
-  xc=(x2-x1); yc=(y2-y1);\r
-  if (xc<0) xi=-1; else xi=1;\r
-  if (yc<0) yi=-1; else yi=1;\r
-  n=abs(xc); m=abs(yc);\r
-  ycyi=abs(2*yc*xi);\r
-  er=0;\r
-\r
-  if (n>m)\r
-  {\r
-    xcxi=abs(2*xc*xi);\r
-    for (i=0;i<=n;i++)\r
-    {\r
-      vesascreen[(dcy*tsx)+dcx]=color;\r
-      if (er>0)\r
-      { dcy+=yi;\r
-        er-=xcxi;\r
-      }\r
-      er+=ycyi;\r
-      dcx+=xi;\r
-    }\r
-  }\r
-  else\r
-  {\r
-    xcyi=abs(2*xc*yi);\r
-    for (i=0;i<=m;i++)\r
-    {\r
-      vesascreen[(dcy*tsx)+dcx]=color;\r
-      if (er>0)\r
-      { dcx+=xi;\r
-        er-=ycyi;\r
-      }\r
-      er+=xcyi;\r
-      dcy+=yi;\r
-    }\r
-  }\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int VESACircle(int x, int y, int radius, int color)\r
-{\r
-  int cx=0;\r
-  int cy=radius;\r
-  int df=1-radius;\r
-  int d_e=3;\r
-  int d_se=-2*radius+5;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  do {\r
-    VESAPutPixel(x+cx,y+cy,color);\r
-    if (cx) VESAPutPixel(x-cx,y+cy,color);\r
-    if (cy) VESAPutPixel(x+cx,y-cy,color);\r
-    if ((cx) && (cy)) VESAPutPixel(x-cx,y-cy,color);\r
-\r
-    if (cx != cy)\r
-    {\r
-      VESAPutPixel(x+cy,y+cx,color);\r
-      if (cx) VESAPutPixel(x+cy,y-cx,color);\r
-      if (cy) VESAPutPixel(x-cy,y+cx,color);\r
-      if (cx && cy) VESAPutPixel(x-cy,y-cx,color);\r
-    }\r
-\r
-    if (df<0)\r
-    {\r
-      df+=d_e;\r
-      d_e+=2;\r
-      d_se+=2;\r
-    }\r
-    else\r
-    {\r
-      df+=d_se;\r
-      d_e+=2;\r
-      d_se+=4;\r
-      cy--;\r
-    }\r
-\r
-    cx++;\r
-\r
-  } while (cx <= cy);\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int VESACircleFill(int x, int y, int radius, int color)\r
-{\r
-  int cx=0;\r
-  int cy=radius;\r
-  int df=1-radius;\r
-  int d_e=3;\r
-  int d_se=-2*radius+5;\r
-\r
-  cpubyte=RENDER;\r
-\r
-  do {\r
-    VESAHLine(x-cy,y-cx,x+cy,color);\r
-    if (cx) VESAHLine(x-cy,y+cx,x+cy,color);\r
-\r
-    if (df<0)\r
-    {\r
-      df+=d_e;\r
-      d_e+=2;\r
-      d_se+=2;\r
-    }\r
-    else\r
-    {\r
-      if (cx != cy)\r
-      {\r
-        VESAHLine(x-cx,y-cy,x+cx,color);\r
-        if (cy) VESAHLine(x-cx,y+cy,x+cx,color);\r
-      }\r
-\r
-      df+=d_se;\r
-      d_e+=2;\r
-      d_se+=4;\r
-      cy--;\r
-    }\r
-\r
-    cx++;\r
-\r
-  } while (cx <= cy);\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-int VESARect(int x, int y, int x2, int y2, int color)\r
-{\r
-  VESAHLine(x,y,x2,color);\r
-  VESAHLine(x,y2,x2,color);\r
-  VESAVLine(x,y+1,y2-1,color);\r
-  VESAVLine(x2,y+1,y2-1,color);\r
-  return 0;\r
-}\r
-\r
-int VESARectFill(int x, int y, int x2, int y2, int color)\r
-{\r
-  cpubyte=RENDER;\r
-\r
-  if (y2<y) { int t=y2; y=y2; y2=t; }\r
-\r
-  for (; y<=y2; y++)\r
-    VESAHLine(x,y,x2,color);\r
-\r
-  cpubyte=ETC;\r
-  return 0;\r
-}\r
-\r
-void InitVESA(void)\r
-{\r
-  REGISTERS r;\r
-\r
-  SET_BX(r, 0x0101);\r
-  SET_AX(r, 0x4f02);\r
-  INTERRUPT(0x10, r);\r
-\r
-  vesascreenx = (byte *) 0xA0000 + __djgpp_conventional_base;\r
-  vesascreen = (byte *) valloc(344064, "vesascreen", 0);\r
-  memset(vesascreen, 0, 344064);\r
-\r
-  sx=640;  sy=480;\r
-  tsx=672; tsy=512;\r
-  tx=40;   ty=30;\r
-  cx1=0;   cy1=0;\r
-  cx2=sx-1;cy2=sy-1;\r
-\r
-  // Mode successfuly set, now lets set up the driver.\r
-  ShutdownVideo = VESAShutdown;\r
-  ShowPage = VESAShowPage;\r
-  CopySprite = VESACopySprite;\r
-  TCopySprite = VESATCopySprite;\r
-  CCopySprite = VESACCopySprite;\r
-  TCCopySprite = VESATCCopySprite;\r
-  CopyTile = VESACopyTile;\r
-  TCopyTile = VESATCopyTile;\r
-  ScaleSprite = VESAScaleSprite;\r
-  RenderMAPLine = VESARenderMAPLine;\r
-  TRenderMAPLine = VESATRenderMAPLine;\r
-  ColorField = VESAColorField;\r
-  ClearScreen = VESAClearScreen;\r
-  PutPixel = VESAPutPixel;\r
-  GetPixel = VESAGetPixel;\r
-  HLine = VESAHLine;\r
-  VLine = VESAVLine;\r
-  Line = VESALine;\r
-  Circle = VESACircle;\r
-  CircleFill = VESACircleFill;\r
-  Rect = VESARect;\r
-  RectFill = VESARectFill;\r
-  DriverDesc = "640x480 (VESA, Banked)";\r
-}\r
diff --git a/16/v2/source/verge/ENGINE/VFILE.C b/16/v2/source/verge/ENGINE/VFILE.C
deleted file mode 100755 (executable)
index 5b40a93..0000000
+++ /dev/null
@@ -1,269 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#define VFILE_H\r
-#define VC_H\r
-#include "verge.h"\r
-\r
-// ================================= Data ====================================\r
-\r
-typedef struct\r
-{\r
-  FILE *fp;                           // real file pointer.\r
-  byte s;                             // 0=real file 1=vfile;\r
-  byte v;                             // if vfile, which vfile index\r
-  byte i;                             // which file index in vfile is it?\r
-  byte p;                             // data alignment pad. :)\r
-} VFILE;\r
-\r
-struct filestruct\r
-{\r
-  char fname[84];                     // pathname thingo\r
-  int size;                           // size of the file\r
-  int packofs;                        // where the file can be found in PACK\r
-  int curofs;                         // current file offset.\r
-  char extractable;                   // irrelevant to runtime, but...\r
-  char override;                      // should we override?\r
-};\r
-\r
-struct mountstruct\r
-{\r
-  char mountname[80];                 // name of VRG packfile.\r
-  FILE *vhandle;                      // Real file-handle of packfile.\r
-  struct filestruct *files;           // File record array.\r
-  int numfiles;                       // number of files in pack.\r
-  int curofs;                         // Current filepointer.\r
-};\r
-\r
-struct mountstruct pack[3];            // packfile structs\r
-byte filesmounted=0;                   // Number of VRG files to check.\r
-char headertag[]={ 'V','R','G','P','A','C','K',0 };\r
-\r
-// ================================= Code ====================================\r
-\r
-int Exist(char *fname)\r
-{ FILE *tempf;\r
-\r
-  tempf=fopen(fname,"rb");\r
-  if (tempf)\r
-  {\r
-     fclose(tempf);\r
-     return 1;\r
-  }\r
-  else return 0;\r
-}\r
-\r
-void DecryptHeader()\r
-{ byte lastvalue, precodebyte, *ptr;\r
-\r
-  ptr=(byte *) pack[filesmounted].files;\r
-  lastvalue=*ptr;\r
-  ptr++;\r
-\r
-  while (ptr < (byte *) (int) pack[filesmounted].files + (int) pack[filesmounted].numfiles*100)\r
-  {\r
-    precodebyte=*ptr;\r
-    (*ptr)-=lastvalue;\r
-    lastvalue=precodebyte;\r
-    ptr++;\r
-  }\r
-}\r
-\r
-void MountVFile(char *fname)\r
-{ char buffer[10];\r
-\r
-  if (!(pack[filesmounted].vhandle = fopen(fname,"rb")))\r
-  {\r
-    printf("*error* Unable to mount %s; file not found. \n",fname);\r
-    exit(-1);\r
-  }\r
-\r
-  // Read pack header\r
-  memset(&buffer, 0, 10);\r
-  fread(&buffer, 1, 7, pack[filesmounted].vhandle);\r
-  if (strcmp(buffer,headertag))\r
-  {\r
-    printf("*error* %s is not a valid packfile. \n",fname);\r
-    exit(-1);\r
-  }\r
-\r
-  fread(&buffer, 1, 1, pack[filesmounted].vhandle);\r
-  if (buffer[0]!=1)\r
-  {\r
-    printf("*error* %s is an incompatible packfile version. (ver reported: %d) \n",fname,buffer[0]);\r
-    exit (-1);\r
-  }\r
-\r
-  fread(&pack[filesmounted].numfiles, 1, 4, pack[filesmounted].vhandle);\r
-  memcpy(pack[filesmounted].mountname,fname,strlen(fname)+1);\r
-\r
-  // Allocate memory for headers and read them in.\r
-\r
-  pack[filesmounted].files = (struct filestruct *) valloc(pack[filesmounted].numfiles*100, "pack[filesmounted].files", OID_VFILE);\r
-  fread(pack[filesmounted].files, pack[filesmounted].numfiles, 100, pack[filesmounted].vhandle);\r
-  DecryptHeader();\r
-  filesmounted++;\r
-}\r
-\r
-VFILE *vopen(char *fname)\r
-{ VFILE *tmp;\r
-  char rf=0,vf=0;\r
-  int i, j=0;\r
-\r
-  // All files using V* are read-only. To write a file, use regular i/o.\r
-  // First we'll see if a real file exists, then we'll check for one in VFiles,\r
-  // if we don't find one in VFile or it's overridable then a real file will\r
-  // be used. That's the general logic progression.\r
-\r
-  if (Exist(fname)) rf=1;\r
-\r
-  // Search the VFiles.\r
-  for (i=filesmounted-1; i>=0; i--)\r
-  {\r
-    for (j=0; j<pack[i].numfiles; j++)\r
-        if (!strcasecmp(fname,pack[i].files[j].fname)) { vf=1; break; }\r
-    if (vf) break;\r
-  }\r
-\r
-  if (!vf && !rf) return 0;\r
-\r
-  tmp=(VFILE *) valloc(sizeof(VFILE), "vopen:tmp", OID_VFILE);\r
-\r
-  if (vf && rf)\r
-  {\r
-    if (pack[i].files[j].override) vf=0;\r
-    else rf=0;\r
-  }\r
-\r
-  if (vf)\r
-  {\r
-    tmp->fp=pack[i].vhandle;\r
-    tmp->s=1;\r
-    tmp->v=i;\r
-    tmp->i=j;\r
-    pack[i].files[j].curofs=0;\r
-    fseek(tmp->fp, pack[i].files[j].packofs, 0);\r
-    pack[i].curofs=pack[i].files[j].packofs;\r
-    return tmp;\r
-  }\r
-\r
-  tmp->fp=fopen(fname,"rb");\r
-  tmp->s=0; tmp->v=0; tmp->i=0;\r
-  return tmp;\r
-}\r
-\r
-void vread(char *dest, int len, VFILE *f)\r
-{\r
-  // This is fairly simple.. Just make sure our filepointer is at the right\r
-  // place, then do a straight fread.\r
-\r
-  if (f->s)\r
-  {\r
-    if (pack[f->v].curofs != (pack[f->v].files[f->i].packofs + pack[f->v].files[f->i].curofs))\r
-       fseek(f->fp, pack[f->v].files[f->i].curofs+pack[f->v].files[f->i].packofs, 0);\r
-    pack[f->v].files[f->i].curofs+=len;\r
-    pack[f->v].curofs+=len;\r
-  }\r
-  fread(dest, 1, len, f->fp);\r
-}\r
-\r
-void vclose(VFILE *f)\r
-{\r
-  if (!f) return;\r
-  if (!f->s) fclose(f->fp);\r
-  f->fp=0;\r
-  vfree(f);\r
-}\r
-\r
-int filesize(VFILE *f)\r
-{\r
-  int oldpos, tmp;\r
-\r
-  // Filesize for Vfiles is real simple.\r
-  if (f->s) return pack[f->v].files[f->i].size;\r
-\r
-  // It's a bit more complex for external files.\r
-  oldpos=ftell(f->fp);\r
-  fseek(f->fp, 0, 2);\r
-  tmp=ftell(f->fp);\r
-  fseek(f->fp, oldpos, 0);\r
-  return tmp;\r
-}\r
-\r
-int vtell(VFILE *f)\r
-{\r
-  if (!f->s)\r
-  {\r
-    return ftell(f->fp);\r
-  }\r
-\r
-  return pack[f->v].files[f->i].curofs;\r
-}\r
-\r
-void vseek(VFILE *f, int offset, int origin)\r
-{\r
-  if (!f->s)\r
-  {\r
-    fseek(f->fp, offset, origin);\r
-    return;\r
-  }\r
-\r
-  switch(origin)\r
-  {\r
-    case 0: pack[f->v].files[f->i].curofs=offset;\r
-            fseek(f->fp, offset+pack[f->v].files[f->i].packofs, 0);\r
-            return;\r
-    case 1: pack[f->v].files[f->i].curofs+=offset;\r
-            fseek(f->fp, offset, 1);\r
-            return;\r
-    case 2: pack[f->v].files[f->i].curofs=pack[f->v].files[f->i].size-offset;\r
-            fseek(f->fp, pack[f->v].files[f->i].curofs+pack[f->v].files[f->i].packofs, 0);\r
-            return;\r
-  }\r
-}\r
-\r
-void _vscanf(VFILE *f, char *format, char *dest)\r
-{\r
-  fscanf(f->fp, format, dest);\r
-  if (f->s)\r
-    pack[f->v].files[f->i].curofs=ftell(f->fp)-pack[f->v].files[f->i].packofs;\r
-}\r
-\r
-char vgetc(VFILE *f)\r
-{ char c=0;\r
-\r
-  vread(&c, 1, f);\r
-  return c;\r
-}\r
-\r
-word vgetw(VFILE *f)\r
-{ word c=0;\r
-\r
-  vread((char *) &c, 2, f);\r
-  return c;\r
-}\r
-\r
-void vgets(char *str, int len, VFILE *f)\r
-{\r
-  if (f->s)\r
-  {\r
-    if (pack[f->v].curofs != (pack[f->v].files[f->i].packofs + pack[f->v].files[f->i].curofs))\r
-       fseek(f->fp, pack[f->v].files[f->i].curofs+pack[f->v].files[f->i].packofs, 0);\r
-    pack[f->v].files[f->i].curofs+=len;\r
-    pack[f->v].curofs+=len;\r
-  }\r
-  fgets(str, len, f->fp);\r
-}\r
diff --git a/16/v2/source/verge/ENGINE/VFILE.H b/16/v2/source/verge/ENGINE/VFILE.H
deleted file mode 100755 (executable)
index b6beb80..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef VFILE_H\r
-#define VFILE_H\r
-\r
-#define vscanf _vscanf\r
-\r
-typedef struct\r
-{\r
-  FILE *fp;                           // real file pointer.\r
-  byte s;                             // 0=real file 1=vfile;\r
-  byte v;                             // if vfile, which vfile index\r
-  byte i;                             // which file index in vfile is it?\r
-  byte p;                             // data alignment pad. :)\r
-} VFILE;\r
-\r
-struct filestruct\r
-{\r
-  unsigned char fname[84];            // pathname thingo\r
-  int size;                           // size of the file\r
-  int packofs;                        // where the file can be found in PACK\r
-  int curofs;                         // current file offset.\r
-  char extractable;                   // irrelevant to runtime, but...\r
-  char override;                      // should we override?\r
-};\r
-\r
-struct mountstruct\r
-{\r
-  char mountname[80];                 // name of VRG packfile.\r
-  FILE *vhandle;                      // Real file-handle of packfile.\r
-  struct filestruct *files;           // File record array.\r
-  int numfiles;                       // number of files in pack.\r
-  int curofs;                         // Current filepointer.\r
-};\r
-\r
-extern struct mountstruct pack[3];\r
-extern char filesmounted;\r
-\r
-int Exist(char *fname);\r
-VFILE *vopen(char *fname);\r
-void MountVFile(char *fname);\r
-void vread(void *dest, int len, VFILE *f);\r
-void vclose(VFILE *f);\r
-int filesize(VFILE *f);\r
-int vtell(VFILE *f);\r
-void vseek(VFILE *f, int offset, int origin);\r
-void vscanf(VFILE *f, char *format, char *dest);\r
-char vgetc(VFILE *f);\r
-word vgetw(VFILE *f);\r
-void vgets(char *str, int len, VFILE *f);\r
-#endif\r
diff --git a/16/v2/source/verge/MAPED/A_MEMORY.C b/16/v2/source/verge/MAPED/A_MEMORY.C
deleted file mode 100755 (executable)
index c8f1598..0000000
+++ /dev/null
@@ -1,211 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include <stdio.h>\r
-#include <stdlib.h>\r
-#include <string.h>\r
-\r
-void err(char *str, ...);\r
-void Log(char *str, ...);\r
-\r
-// *****\r
-// TODO: Move the chunk list from an array to a linked list?\r
-//       Would eliminate hardcoded chunk limit, but would make\r
-//       general operation slower. Probably not The Right Thing,\r
-//       sides the chunk limit can be interesting sometimes. If\r
-//       it becomes problematic, consider a Binary Tree.\r
-// *****\r
-\r
-// ***************************** Data *****************************\r
-\r
-#define MAXCHUNKS 200\r
-#define PARANOID 1\r
-#define PADFILLVALUE 254\r
-#define PADSIZE 256\r
-\r
-void MemReport(void);\r
-\r
-#define errm MemReport(), err\r
-\r
-typedef struct\r
-{\r
-   void *pointer;\r
-   int  size;\r
-   int  owner;\r
-   char desc[20];\r
-} memblockType;\r
-\r
-memblockType chunks[MAXCHUNKS+1];\r
-int numchunks=0;\r
-\r
-// ***************************** Code *****************************\r
-\r
-void *valloc(int amount, char *desc, int owner)\r
-{\r
-   if (numchunks == MAXCHUNKS)\r
-     err("Failed allocated %d bytes (%s), reason: Out of chunks.",\r
-        amount, desc);\r
-\r
-#ifdef PARANOID\r
-   CheckCorruption();\r
-   chunks[numchunks].pointer = (void *) ((int) malloc(amount + (PADSIZE * 2)) + PADSIZE);\r
-   chunks[numchunks].size = amount;\r
-   memset((char *) chunks[numchunks].pointer - PADSIZE, PADFILLVALUE, PADSIZE);\r
-   memset((char *) chunks[numchunks].pointer +\r
-               chunks[numchunks].size, PADFILLVALUE, PADSIZE);\r
-#else\r
-   chunks[numchunks].pointer = malloc(amount);\r
-   chunks[numchunks].size = amount;\r
-#endif\r
-   chunks[numchunks].owner = owner;\r
-   strncpy(chunks[numchunks].desc, desc, 19);\r
-   memset(chunks[numchunks].pointer, 0, chunks[numchunks].size);\r
-   return chunks[numchunks++].pointer;\r
-}\r
-\r
-void *qvalloc(int amount)\r
-{\r
-   void *ptr;\r
-\r
-   // Quick and dirty memory allocation. Should be used ONLY\r
-   // for temporary blocks in speed-critical loops.\r
-\r
-   ptr = malloc(amount);\r
-   if (!ptr) errm("qvalloc: Failed allocating %d bytes.", amount);\r
-   return ptr;\r
-}\r
-\r
-void qvfree(void *ptr)\r
-{\r
-   free(ptr);\r
-}\r
-\r
-int TotalBytesAllocated(void)\r
-{\r
-   int i, tally=0;\r
-\r
-   for (i=0; i<numchunks; i++)\r
-      tally += chunks[i].size;\r
-\r
-   return tally;\r
-}\r
-\r
-int FindChunk(void *pointer)\r
-{\r
-   int i;\r
-\r
-   for (i=0; i<numchunks; i++)\r
-      if (chunks[i].pointer == pointer) return i;\r
-   return -1;\r
-}\r
-\r
-void FreeChunk(int i)\r
-{\r
-#ifdef PARANOID\r
-   CheckCorruption();\r
-   free((void *) ((int) chunks[i].pointer - PADSIZE));\r
-#else\r
-   free(chunks[i].pointer);\r
-#endif\r
-   for (; i<numchunks; i++)\r
-      chunks[i]=chunks[i+1];\r
-   numchunks--;\r
-}\r
-\r
-int vfree(void *pointer)\r
-{\r
-   int i;\r
-\r
-   i=FindChunk(pointer);\r
-   if (i == -1)\r
-   {\r
-      Log("vfree: Attempted to free ptr %u that was not allocated. [dumping mem report]", pointer);\r
-      MemReport();\r
-      return -1;\r
-   }\r
-   FreeChunk(i);\r
-\r
-   return 0;\r
-}\r
-\r
-void FreeByOwner(int owner)\r
-{\r
-   int i;\r
-\r
-   for (i=0; i<numchunks; i++)\r
-      if (chunks[i].owner == owner)\r
-         FreeChunk(i--);\r
-}\r
-\r
-void MemReport(void)\r
-{\r
-   int i;\r
-\r
-   Log("");\r
-   Log("========================================");\r
-   Log("= Memory usage report for this session =");\r
-   Log("========================================");\r
-   Log("Chunks currently allocated: %d (MAXCHUNKS %d)", numchunks, MAXCHUNKS);\r
-   Log("%d total bytes allocated. ", TotalBytesAllocated());\r
-#ifdef PARANOID\r
-   Log("PARANOID is ON. (pad size: %d pad value: %d)", PADSIZE, PADFILLVALUE);\r
-#else\r
-   Log("PARANOID is OFF.");\r
-#endif\r
-   Log("");\r
-   Log("Per-chunk analysis: ");\r
-\r
-   for (i=0; i<numchunks; i++)\r
-   {\r
-       Log("[%3d] Ptr at: %8u size: %8d owner: %3d desc: %s",\r
-          i, chunks[i].pointer, chunks[i].size, chunks[i].owner, chunks[i].desc);\r
-   }\r
-\r
-}\r
-\r
-#ifdef PARANOID\r
-int ChunkIntegrity(int i)\r
-{\r
-   char *tptr;\r
-\r
-   tptr=(char *) malloc(PADSIZE);\r
-   memset(tptr, PADFILLVALUE, PADSIZE);\r
-   if (memcmp((char *) chunks[i].pointer - PADSIZE, tptr, PADSIZE))\r
-      return -1;      // Prefix corruption\r
-   if (memcmp((char *) chunks[i].pointer + chunks[i].size, tptr, PADSIZE))\r
-      return 1;       // Suffix corruption\r
-   free(tptr);\r
-   return 0;          // no corruption\r
-}\r
-\r
-void CheckCorruption(void)\r
-{\r
-   int i, j;\r
-\r
-   for (i=0; i<numchunks; i++)\r
-   {\r
-      j=ChunkIntegrity(i);\r
-      if (!j) continue;\r
-      if (j == -1) errm("Prefix corruption on chunk %d.", i);\r
-      if (j ==  1) errm("Suffix corruption on chunk %d.", i);\r
-   }\r
-}\r
-#else\r
-void CheckCorruption(void)\r
-{\r
-   return;\r
-}\r
-#endif\r
diff --git a/16/v2/source/verge/MAPED/COLBAK.H b/16/v2/source/verge/MAPED/COLBAK.H
deleted file mode 100755 (executable)
index eeb57f2..0000000
+++ /dev/null
@@ -1,4946 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#define BACKGROUND_LEN 64000\r
-\r
- static unsigned char background_[]=\r
- {\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x9a,0x9d,0x9f,0x9a,0x9a,0x99,0x94,\r
-  0x94,0x94,0x97,0x99,0x9a,0x9a,0x9a,0x9a,0x9e,0x03,0x02,0x02,0x9e,\r
-  0x94,0x94,0x94,0x97,0x9d,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x9e,0x98,0x94,0x94,0x94,\r
-  0x94,0x99,0x9f,0x9f,0x9a,0x99,0x97,0x94,0x97,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x97,0x99,0x98,0x99,0x9a,0x9b,0x9b,0x9a,0x98,0x94,0x94,\r
-  0x94,0x98,0x99,0x9a,0x9a,0x9a,0x9a,0x99,0x99,0x99,0x98,0x97,0x97,\r
-  0x97,0x97,0x97,0x97,0x98,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,\r
-  0x99,0x99,0x99,0x98,0x98,0x98,0x97,0x98,0x98,0x9a,0x9b,0x9b,0x9a,\r
-  0x97,0x94,0x94,0x94,0x94,0x97,0x97,0x97,0x97,0x97,0x98,0x99,0x9c,\r
-  0x9d,0x9c,0x99,0x87,0x97,0x87,0x87,0x87,0x87,0x99,0x9e,0x9d,0x99,\r
-  0x87,0x97,0x99,0x99,0x98,0x97,0x97,0x97,0x97,0x98,0x99,0x99,0x98,\r
-  0x87,0x87,0x87,0x87,0x87,0x97,0x98,0x98,0x87,0x9c,0x03,0x9f,0x9f,\r
-  0x03,0x03,0x03,0x03,0x9f,0x9f,0x9e,0x9e,0x9c,0x9c,0x9c,0x9b,0x9a,\r
-  0x9a,0x97,0x94,0x94,0x94,0x94,0x94,0x97,0x97,0x97,0x97,0x97,0x94,\r
-  0x94,0x94,0x94,0x94,0x97,0x97,0x97,0x98,0x99,0x99,0x9a,0x9b,0x9a,\r
-  0x99,0x98,0x98,0x99,0x9d,0x9f,0x9f,0x9f,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x9f,0x9d,0x99,0x99,0x9a,0x9a,0x97,0x97,0x9a,0x98,0x97,\r
-  0x94,0x94,0x97,0x9d,0x97,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x97,0x9c,0x97,0x9e,0x94,0x99,\r
-  0x9a,0x9a,0x98,0x9b,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,\r
-  0x9f,0x9e,0x9c,0x9a,0x98,0x98,0x98,0x99,0x99,0x99,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9b,\r
-  0x9b,0x9b,0x9a,0x9a,0x9a,0x99,0x99,0x99,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x9a,0x9d,0x9f,0x9a,0x9a,0x99,0x94,0x94,0x94,0x97,0x99,0x9a,\r
-  0x9a,0x9a,0x9a,0x9d,0x03,0x02,0x02,0x9f,0x97,0x94,0x94,0x94,0x9a,\r
-  0x03,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x01,0x03,0x9e,0x98,0x94,0x94,0x94,0x94,0x99,0x9f,0x9f,0x9a,\r
-  0x99,0x97,0x94,0x97,0x94,0x94,0x94,0x94,0x94,0x94,0x97,0x9a,0x99,\r
-  0x99,0x9a,0x9b,0x9b,0x9a,0x98,0x94,0x94,0x97,0x99,0x9b,0x9c,0x9d,\r
-  0x9d,0x9c,0x9c,0x9c,0x9b,0x9a,0x99,0x99,0x99,0x98,0x99,0x99,0x99,\r
-  0x9a,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x99,0x99,0x99,0x99,\r
-  0x9a,0x9a,0x9b,0x9c,0x9d,0x9e,0x9c,0x9a,0x97,0x94,0x94,0x94,0x94,\r
-  0x97,0x97,0x97,0x97,0x98,0x99,0x9a,0x9d,0x9d,0x9c,0x98,0x87,0x97,\r
-  0x87,0x87,0x87,0x87,0x99,0x9f,0x9d,0x99,0x87,0x87,0x99,0x99,0x99,\r
-  0x98,0x97,0x97,0x98,0x99,0x99,0x99,0x87,0x87,0x87,0x87,0x87,0x87,\r
-  0x97,0x99,0x99,0x97,0x9c,0x9f,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x9f,0x9f,0x9e,0x9c,0x9c,0x9c,0x9b,0x9a,0x9a,0x98,0x97,0x97,0x97,\r
-  0x94,0x97,0x97,0x98,0x98,0x98,0x97,0x94,0x94,0x94,0x94,0x94,0x97,\r
-  0x97,0x97,0x98,0x99,0x99,0x9a,0x9b,0x9a,0x99,0x98,0x98,0x99,0x9c,\r
-  0x9f,0x9f,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9e,0x9a,\r
-  0x98,0x9a,0x9a,0x97,0x97,0x99,0x99,0x97,0x94,0x94,0x94,0x9a,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x97,0x9c,0x98,0x9f,0x97,0x99,0x9a,0x9a,0x98,0x9a,0x9f,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9c,0x9a,0x99,\r
-  0x98,0x98,0x99,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9b,0x9b,\r
-  0x9b,0x9b,0x9b,0x9b,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9b,0x9b,0x9b,0x9a,0x9a,0x9a,\r
-  0x99,0x99,0x99,0x94,0x94,0x94,0x94,0x94,0x94,0x9a,0x9d,0x9f,0x9b,\r
-  0x9b,0x99,0x94,0x94,0x94,0x97,0x99,0x9a,0x9a,0x9a,0x9a,0x9b,0x9f,\r
-  0x02,0x02,0x02,0x9c,0x94,0x94,0x94,0x94,0x9c,0x9f,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x03,0x9f,0x9a,0x94,\r
-  0x94,0x94,0x94,0x94,0x98,0x9f,0x9f,0x9a,0x99,0x98,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x99,0x9a,0x9a,0x9b,0x9c,0x9b,0x99,\r
-  0x97,0x94,0x97,0x99,0x9c,0x9e,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9e,\r
-  0x9e,0x9d,0x9d,0x9d,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,\r
-  0x9c,0x9c,0x9d,0x9c,0x9c,0x9d,0x9d,0x9e,0x9e,0x9e,0x9f,0x9f,0x9f,\r
-  0x9e,0x9d,0x9a,0x98,0x97,0x94,0x94,0x97,0x97,0x98,0x98,0x99,0x9a,\r
-  0x9b,0x9c,0x9d,0x9c,0x99,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x98,\r
-  0x9f,0x9c,0x9b,0x87,0x87,0x97,0x99,0x99,0x99,0x99,0x99,0x99,0x99,\r
-  0x97,0x87,0x87,0x87,0x87,0x87,0x87,0x98,0x99,0x9a,0x9a,0x98,0x9c,\r
-  0x9f,0x9f,0x03,0x03,0x03,0x9f,0x9f,0x9f,0x9f,0x9f,0x9e,0x9d,0x9c,\r
-  0x9c,0x9c,0x9a,0x9a,0x9a,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x98,\r
-  0x98,0x98,0x97,0x97,0x94,0x94,0x94,0x97,0x97,0x98,0x98,0x99,0x99,\r
-  0x9a,0x9a,0x9a,0x99,0x99,0x98,0x99,0x9c,0x9e,0x9f,0x9f,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9a,0x98,0x9a,0x9b,0x98,0x97,\r
-  0x98,0x99,0x97,0x94,0x94,0x94,0x99,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x98,0x9a,0x9a,\r
-  0x9f,0x9a,0x98,0x99,0x9b,0x99,0x99,0x9e,0x9f,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x9f,0x9f,0x9d,0x9b,0x99,0x98,0x98,0x98,0x99,0x99,\r
-  0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9b,0x9b,0x9b,0x9b,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9b,0x9b,0x9b,0x9a,0x9a,0x99,0x99,0x99,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x9a,0x9d,0x9f,0x9c,0x9b,0x99,0x94,0x94,0x94,\r
-  0x97,0x99,0x9a,0x9a,0x9a,0x99,0x9a,0x9d,0x9f,0x02,0x02,0x02,0x9d,\r
-  0x97,0x94,0x94,0x94,0x97,0x9c,0x9f,0x03,0x02,0x01,0x01,0x01,0x01,\r
-  0x01,0x02,0x03,0x9f,0x9e,0x99,0x94,0x94,0x94,0x94,0x94,0x94,0x97,\r
-  0x9e,0x9f,0x9a,0x99,0x97,0x94,0x94,0x97,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x9a,0x9d,0x9d,0x9c,0x9a,0x99,0x97,0x98,0x9a,0x9c,0x9d,\r
-  0x9d,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9f,0x9f,0x9f,0x9f,0x9f,\r
-  0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,\r
-  0x9f,0x9f,0x9f,0x9e,0x9e,0x9e,0x9d,0x9d,0x9d,0x9c,0x9c,0x9a,0x99,\r
-  0x98,0x99,0x99,0x9a,0x9a,0x9c,0x9c,0x9d,0x9d,0x9c,0x99,0x97,0x87,\r
-  0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x98,0x03,0x9c,0x9d,0x87,0x87,\r
-  0x87,0x97,0x97,0x98,0x98,0x97,0x97,0x87,0x87,0x87,0x87,0x87,0x87,\r
-  0x87,0x99,0x9b,0x9c,0x9b,0x9c,0x9d,0x9e,0x9f,0x03,0x03,0x9e,0x9c,\r
-  0x99,0x99,0x99,0x9b,0x9e,0x9f,0x9d,0x9d,0x9d,0x9d,0x9c,0x9a,0x9a,\r
-  0x99,0x97,0x97,0x98,0x97,0x97,0x97,0x98,0x99,0x99,0x99,0x99,0x97,\r
-  0x97,0x97,0x97,0x97,0x98,0x99,0x99,0x99,0x99,0x9a,0x9b,0x9a,0x99,\r
-  0x98,0x98,0x9a,0x9d,0x9f,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x9f,0x9c,0x99,0x99,0x9b,0x99,0x97,0x94,0x9a,0x97,0x97,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x9a,0x99,0x9a,0x99,0x9e,0x97,0x99,0x9a,\r
-  0x9a,0x98,0x9b,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,\r
-  0x9f,0x9d,0x9a,0x99,0x98,0x98,0x99,0x99,0x99,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9b,0x9b,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9b,\r
-  0x9b,0x9a,0x9a,0x9a,0x99,0x99,0x94,0x94,0x94,0x94,0x94,0x94,0x99,\r
-  0x9d,0x9f,0x9d,0x9c,0x9a,0x94,0x94,0x94,0x97,0x99,0x9a,0x9a,0x99,\r
-  0x99,0x99,0x99,0x9c,0x9f,0x03,0x02,0x02,0x9f,0x9b,0x97,0x94,0x94,\r
-  0x94,0x94,0x97,0x9a,0x9b,0x9d,0x9e,0x9d,0x9d,0x9c,0x99,0x98,0x94,\r
-  0x94,0x94,0x94,0x98,0x98,0x99,0x97,0x94,0x9a,0x9e,0x9a,0x98,0x97,\r
-  0x94,0x94,0x9a,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x99,0x9c,\r
-  0x9d,0x9c,0x9a,0x9b,0x9d,0x9d,0x9d,0x9c,0x9b,0x9b,0x9b,0x9b,0x9b,\r
-  0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9e,0x9d,0x9d,0x9e,\r
-  0x9e,0x9e,0x9e,0x9e,0x9d,0x9d,0x9d,0x9d,0x9d,0x9c,0x9c,0x9b,0x9b,\r
-  0x03,0x03,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,\r
-  0x03,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x06,0x04,0x04,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0x03,0x03,0x04,0x04,\r
-  0x04,0x05,0x05,0x06,0x05,0x03,0x02,0x02,0x02,0xf7,0xf7,0xf7,0xf7,\r
-  0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x03,0x03,0x03,0x02,0x02,0x03,\r
-  0x02,0x02,0xf7,0x02,0x03,0x03,0x03,0x03,0x02,0x02,0xf7,0xf7,0x02,\r
-  0x02,0x02,0x03,0x03,0x03,0x03,0x9a,0x99,0x98,0x98,0x99,0x9c,0x9e,\r
-  0x9f,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9e,0x99,0x99,\r
-  0x9a,0x9a,0x98,0x97,0x9a,0x98,0x98,0x98,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x98,0x94,0x94,0x94,\r
-  0x98,0x99,0x9c,0x99,0x03,0x99,0x98,0x99,0x9b,0x99,0x99,0x9e,0x9f,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9e,0x9c,0x9a,0x99,\r
-  0x98,0x98,0x99,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9b,0x9a,0x9a,0x9a,0x9a,\r
-  0x99,0x94,0x94,0x94,0x94,0x94,0x94,0x99,0x9d,0x9e,0x9d,0x9c,0x9a,\r
-  0x94,0x94,0x94,0x94,0x98,0x9a,0x9a,0x99,0x99,0x98,0x98,0x99,0x9a,\r
-  0x9d,0x9f,0x03,0x02,0x02,0x03,0x9d,0x99,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x97,0x99,0x9b,0x9c,0x9c,\r
-  0x9b,0x99,0x97,0x97,0x9e,0x9a,0x97,0x94,0x94,0x94,0x9f,0x97,0x97,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x98,0x9b,0x9d,0x9d,0x9d,\r
-  0x9b,0x9a,0x9a,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x99,0x99,0x99,0x99,0x99,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x03,0x03,0x03,0x04,0x04,\r
-  0x04,0x04,0x04,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x06,0x04,\r
-  0x03,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,\r
-  0x03,0x03,0x03,0x03,0x03,0x04,0x04,0x04,0x05,0x05,0x05,0x04,0x02,\r
-  0x02,0x02,0x02,0x02,0x02,0xf7,0xf7,0xf7,0x02,0x05,0x05,0x04,0x04,\r
-  0x04,0x04,0x04,0x03,0x03,0x03,0x02,0x02,0x03,0x02,0x02,0xf7,0x03,\r
-  0x04,0x04,0x04,0x04,0x04,0x02,0xf7,0xf7,0x02,0x02,0x03,0x03,0x03,\r
-  0x03,0x9a,0x9a,0x99,0x98,0x98,0x99,0x9d,0x9f,0x9f,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x9f,0x9c,0x98,0x99,0x9b,0x99,0x97,0x94,\r
-  0x9b,0x94,0x99,0x98,0x97,0x94,0x94,0x94,0x94,0x97,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x9a,0x94,0x94,0x97,0x9a,0x9a,0x9b,0x99,\r
-  0x9e,0x97,0x99,0x9a,0x9a,0x98,0x9a,0x9f,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x9f,0x9e,0x9c,0x99,0x98,0x98,0x98,0x99,0x99,\r
-  0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x98,0x9d,0x9e,0x9e,0x9b,0x9a,0x94,0x97,0x97,0x94,0x97,\r
-  0x9a,0x9a,0x99,0x98,0x97,0x97,0x98,0x98,0x99,0x9a,0x9c,0x9f,0x03,\r
-  0x03,0x03,0x03,0x9f,0x9f,0x9c,0x9a,0x99,0x98,0x98,0x98,0x98,0x99,\r
-  0x99,0x9a,0x9c,0x9d,0x9d,0x9d,0x9d,0x9c,0x9b,0x9a,0x98,0x94,0x9c,\r
-  0x9a,0x97,0x94,0x94,0x98,0x02,0x9d,0x97,0x98,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x97,0x98,0x99,0x99,0x98,0x98,0x98,0x98,\r
-  0x98,0x99,0x99,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x99,0x99,0x99,0x02,0x02,0x03,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x04,0x04,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x02,0x02,0x03,0x03,0x04,0x04,0x03,0x04,0x04,0x04,\r
-  0x04,0x04,0x05,0x05,0x04,0x02,0xf7,0x02,0x02,0x02,0x02,0x02,0x02,\r
-  0x02,0xf7,0xf7,0x02,0x06,0x05,0x04,0x03,0x04,0x04,0x04,0x04,0x03,\r
-  0x03,0x03,0x02,0x03,0x04,0x03,0x02,0x02,0x04,0x06,0x05,0x05,0x05,\r
-  0x04,0x03,0x02,0xf7,0x02,0x03,0x03,0x03,0x03,0x9a,0x9a,0x9a,0x99,\r
-  0x98,0x98,0x9b,0x9e,0x9f,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x9f,0x9e,0x9a,0x98,0x9a,0x9a,0x98,0x97,0x9a,0x9a,0x98,0x9b,0x97,\r
-  0x98,0x94,0x94,0x94,0x97,0x98,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x97,0x98,0x97,0x97,0x99,0x99,0x9c,0x9a,0x9f,0x9d,0x98,0x99,0x9b,\r
-  0x99,0x99,0x9d,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,\r
-  0x9f,0x9e,0x9b,0x99,0x98,0x98,0x98,0x99,0x99,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x94,0x94,0x94,0x94,0x94,0x94,0x97,0x9c,0x9e,\r
-  0x9e,0x9b,0x9a,0x94,0x98,0x97,0x94,0x97,0x99,0x9b,0x99,0x98,0x97,\r
-  0x97,0x97,0x97,0x97,0x98,0x99,0x99,0x9a,0x9d,0x9f,0x9f,0x9f,0x9f,\r
-  0x9f,0x9f,0x9f,0x9f,0x9f,0x9e,0x9e,0x9e,0x9e,0x9e,0x9d,0x9d,0x9d,\r
-  0x9c,0x9c,0x9b,0x9a,0x9a,0x99,0x97,0x9a,0x9a,0x97,0x94,0x94,0x9b,\r
-  0x03,0x03,0x94,0x9a,0x97,0x97,0x98,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x97,0x98,0x99,0x98,0x98,0x98,0x99,0x99,0x99,0x9a,0x9a,0x9a,\r
-  0x9a,0x9b,0x9c,0x9c,0x9c,0x9c,0x9b,0x9b,0x9b,0x9b,0x9a,0x9a,0x9b,\r
-  0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,0x9a,0x99,0x98,0x97,0x97,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x03,0x03,0xf7,0xf7,0xf7,0xf7,0x02,0x03,0x03,0x03,0x03,0x03,\r
-  0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x05,0x05,0x04,0x02,0xf7,\r
-  0xf7,0xf7,0x02,0x02,0x02,0x03,0x03,0x02,0xf7,0xf7,0xf7,0x02,0x06,\r
-  0x05,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x04,0x03,0x03,0x04,0x04,\r
-  0x04,0x04,0x03,0x04,0x05,0x05,0x06,0x06,0x06,0x06,0x04,0x02,0xf7,\r
-  0x02,0x03,0x03,0x03,0x9a,0x9a,0x9a,0x9a,0x99,0x98,0x99,0x9c,0x9f,\r
-  0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9d,0x99,0x99,\r
-  0x9b,0x99,0x98,0x94,0x9d,0x98,0x9a,0x9b,0x98,0x98,0x97,0x94,0x94,\r
-  0x99,0x94,0x94,0x97,0x97,0x98,0x97,0x97,0x94,0x98,0x97,0x97,0x98,\r
-  0x9a,0x9a,0x9c,0x98,0x9f,0x98,0x98,0x99,0x9b,0x99,0x99,0x9e,0x9f,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9e,0x9b,0x99,\r
-  0x98,0x98,0x98,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x9b,0x9d,0x9e,0x9a,0x99,0x97,0x99,\r
-  0x97,0x94,0x97,0x99,0x9b,0x9a,0x98,0x97,0x97,0x97,0x97,0x97,0x97,\r
-  0x97,0x97,0x98,0x99,0x99,0x9a,0x9c,0x9d,0x9d,0x9e,0x9e,0x9e,0x9e,\r
-  0x9d,0x9d,0x9d,0x9d,0x9d,0x9c,0x9c,0x9c,0x9b,0x9a,0x9a,0x9a,0x99,\r
-  0x99,0x97,0x97,0x9a,0x97,0x94,0x94,0x9b,0x03,0x02,0x94,0x9a,0x99,\r
-  0x97,0x97,0x98,0x98,0x97,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x97,0x97,0x98,0x99,0x9a,0x9c,0x9d,0x9d,0x9d,\r
-  0x9d,0x9d,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9d,\r
-  0x9d,0x9a,0x98,0x97,0x97,0x97,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x02,0x02,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x05,0x05,\r
-  0x05,0x05,0x04,0x04,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0x03,\r
-  0x04,0x05,0x04,0x02,0xf7,0xf7,0x02,0x06,0x05,0x03,0x03,0x03,0x03,\r
-  0x04,0x04,0x04,0x04,0x04,0x04,0x03,0x04,0x04,0x04,0x04,0x04,0x05,\r
-  0x06,0x06,0x06,0x06,0x07,0x06,0x05,0x02,0xf7,0x02,0x03,0x03,0x9b,\r
-  0x9a,0x9a,0x9a,0x99,0x98,0x98,0x99,0x9d,0x9f,0x9f,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x9f,0x9b,0x98,0x9a,0x9b,0x99,0x98,0x97,\r
-  0x9e,0x97,0x9a,0x99,0x9a,0x98,0x97,0x97,0x98,0x97,0x97,0x99,0x9a,\r
-  0x9a,0x9a,0x99,0x98,0x94,0x98,0x98,0x98,0x99,0x9a,0x9a,0x9b,0x99,\r
-  0x9f,0x94,0x98,0x99,0x9a,0x99,0x9a,0x9f,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x9f,0x9f,0x9e,0x9b,0x99,0x98,0x98,0x98,0x99,\r
-  0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x9a,0x9d,0x9e,0x9a,0x99,0x97,0x98,0x97,0x97,0x94,0x97,0x9a,\r
-  0x9a,0x99,0x97,0x99,0x99,0x99,0x99,0x98,0x97,0x97,0x97,0x97,0x98,\r
-  0x99,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9b,0x9b,0x9b,0x9b,0x9b,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x99,0x98,0x97,0x94,0x9a,0x98,\r
-  0x94,0x94,0x97,0x9c,0x9f,0x94,0x9a,0x99,0x97,0x97,0x97,0x97,0x97,\r
-  0x98,0x98,0x98,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x97,0x97,0x99,0x9a,0x9c,0x9d,0x9d,0x9d,0x9d,\r
-  0x9d,0x9d,0x9d,0x9d,0x9c,0x9a,0x99,0x97,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0x02,0x02,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x03,0x03,0x04,0x04,0x04,\r
-  0x04,0x05,0x05,0x05,0x05,0x05,0x04,0x03,0x03,0x04,0x04,0x05,0x05,\r
-  0x04,0x03,0x02,0xf7,0xf7,0xf7,0x02,0x04,0x06,0x06,0x06,0x04,0x02,\r
-  0xf7,0xf7,0x06,0x04,0x02,0x02,0x03,0x03,0x03,0x03,0x04,0x04,0x04,\r
-  0x04,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x06,\r
-  0x07,0x07,0x05,0x02,0xf7,0x02,0x03,0x9b,0x9b,0x9a,0x9a,0x9a,0x99,\r
-  0x98,0x98,0x9a,0x9d,0x9f,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x9f,0x9e,0x9a,0x99,0x9a,0x9a,0x98,0x97,0x9b,0x9f,0x98,0x9c,0x9a,\r
-  0x9b,0x99,0x99,0x99,0x98,0x97,0x9a,0x9b,0x9c,0x9c,0x9b,0x9a,0x99,\r
-  0x97,0x98,0x99,0x98,0x99,0x9a,0x9b,0x9b,0x9c,0x9e,0x97,0x98,0x9a,\r
-  0x9a,0x98,0x9b,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x9f,0x9f,0x9e,0x9b,0x99,0x98,0x98,0x98,0x99,0x99,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x98,0x9c,0x9d,0x9c,\r
-  0x98,0x97,0x97,0x98,0x97,0x94,0x97,0x99,0x9b,0x99,0x98,0x99,0x9b,\r
-  0x9d,0x9e,0x9e,0x9d,0x9a,0x99,0x98,0x97,0x97,0x97,0x98,0x99,0x99,\r
-  0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9b,0x9b,0x9a,0x98,0x97,0x94,0x99,0x98,0x94,0x94,0x94,0x94,0x97,\r
-  0x94,0x99,0x99,0x97,0x94,0x97,0x97,0x97,0x98,0x9a,0x9a,0x99,0x94,\r
-  0x94,0x99,0x9a,0x99,0x98,0x97,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x97,0x98,0x99,0x9a,0x9a,0x9b,0x9b,0x9a,0x9a,0x99,0x97,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0xf7,0x03,0x03,0x03,\r
-  0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,\r
-  0x02,0x02,0x03,0x03,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x03,0x03,0x04,0x04,0x04,0x05,0x05,0x05,0x04,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x04,0x05,0x06,0x06,0x06,0x06,0x06,0x04,0x02,0xf7,\r
-  0xf7,0x02,0x04,0x06,0x07,0x06,0x05,0x03,0xf7,0xf7,0x05,0x04,0x02,\r
-  0x02,0x03,0x03,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x04,0x04,0x04,\r
-  0x05,0x05,0x06,0x05,0x05,0x04,0x03,0x04,0x05,0x07,0x07,0x05,0x03,\r
-  0xf7,0x02,0x9b,0x9c,0x9b,0x9b,0x9a,0x9a,0x99,0x98,0x98,0x9a,0x9d,\r
-  0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9d,0x99,0x99,\r
-  0x9b,0x9a,0x98,0x97,0x9e,0x9f,0x9a,0x9d,0x9b,0x9b,0x9a,0x9a,0x9a,\r
-  0x97,0x98,0x9b,0x9d,0x9d,0x9d,0x9c,0x9b,0x98,0x97,0x99,0x99,0x99,\r
-  0x9a,0x9a,0x9c,0x9a,0x9f,0x9c,0x97,0x98,0x9b,0x9a,0x99,0x9d,0x9f,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9e,0x9b,\r
-  0x99,0x98,0x98,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x97,0x9a,0x9b,0x9e,0x98,0x98,0x97,0x99,0x97,\r
-  0x97,0x94,0x97,0x9b,0x9a,0x98,0x99,0x9c,0x9e,0x9f,0x9f,0x9f,0x9f,\r
-  0x9f,0x9e,0x9c,0x9a,0x99,0x98,0x98,0x97,0x98,0x98,0x98,0x99,0x99,\r
-  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x9a,0x9a,0x9b,0x99,0x97,\r
-  0x97,0x97,0x99,0x94,0x94,0x94,0x94,0x97,0x97,0x9a,0x99,0x97,0x94,\r
-  0x94,0x97,0x97,0x98,0x9a,0x9a,0x99,0x94,0x97,0x9d,0x03,0x01,0xf7,\r
-  0xf7,0x01,0x02,0x02,0x9f,0x9d,0x9a,0x97,0x94,0x94,0x94,0x94,0x97,\r
-  0x97,0x97,0x97,0x97,0x97,0x97,0x94,0x94,0x94,0x94,0x9a,0x9d,0x9f,\r
-  0x9f,0x9b,0x97,0x94,0x02,0x03,0x03,0x03,0x03,0x02,0x02,0x02,0x02,\r
-  0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x02,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x04,0x04,0x04,0x04,0x05,\r
-  0x04,0x03,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x04,0x06,0x06,\r
-  0x06,0x05,0x04,0x04,0x06,0x06,0x04,0x02,0xf7,0xf7,0x02,0x05,0x06,\r
-  0x06,0x06,0x04,0xf7,0xf7,0x04,0x05,0x02,0x02,0x02,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x04,0x05,0x05,0x04,0x03,0x02,\r
-  0x02,0x02,0x03,0x03,0x05,0x06,0x07,0x05,0x03,0xf7,0x98,0x9b,0x9c,\r
-  0x9c,0x9b,0x9a,0x9a,0x99,0x98,0x98,0x9a,0x9d,0x9f,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x9f,0x9b,0x98,0x99,0x9b,0x99,0x99,0x94,\r
-  0x9f,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9a,0x97,0x99,0x9c,0x9d,\r
-  0x9d,0x9d,0x9c,0x9a,0x97,0x97,0x99,0x98,0x99,0x9a,0x9a,0x9c,0x99,\r
-  0x9f,0x9a,0x97,0x98,0x9b,0x9a,0x99,0x9e,0x9f,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9e,0x9b,0x99,0x98,0x98,0x99,\r
-  0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x98,0x9a,0x9d,0x99,0x97,0x97,0x99,0x97,0x97,0x94,0x97,0x99,0x9b,\r
-  0x99,0x99,0x9a,0x9e,0x9f,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9f,0x9f,\r
-  0x9d,0x9c,0x9b,0x9a,0x99,0x99,0x99,0x98,0x98,0x98,0x98,0x98,0x98,\r
-  0x98,0x98,0x98,0x99,0x9a,0x9b,0x9b,0x98,0x97,0x94,0x98,0x94,0x94,\r
-  0x97,0x99,0x9b,0x9d,0x9c,0x99,0x97,0x94,0x94,0x94,0x97,0x98,0x99,\r
-  0x9a,0x99,0x97,0x94,0x94,0x97,0x98,0x99,0x9c,0x9e,0x9f,0x9f,0x03,\r
-  0x9f,0x9e,0x9c,0x99,0x97,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x97,0x9b,0x03,0xf7,0x02,0x9e,0x98,0x94,0x97,0x02,\r
-  0x03,0x03,0x03,0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x02,0x04,0x04,0x04,0x04,0x05,0x04,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x02,0x03,0x06,0x06,0x04,0x02,0x02,0x02,0x02,0x02,\r
-  0x03,0x06,0x05,0xf7,0xf7,0xf7,0x03,0x05,0x06,0x06,0x04,0x02,0xf7,\r
-  0x02,0x06,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x04,0x05,0x04,0x04,0x03,0x02,0xf7,0x02,0x02,0x02,0x03,0x04,\r
-  0x05,0x07,0x07,0x06,0x02,0x94,0x98,0x9b,0x9c,0x9c,0x9b,0x9a,0x9a,\r
-  0x99,0x98,0x98,0x99,0x9d,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x9f,0x9e,0x9a,0x98,0x9a,0x9b,0x99,0x98,0x97,0x9f,0x9a,0x9c,0x9d,\r
-  0x9c,0x9c,0x9c,0x9d,0x99,0x97,0x9a,0x9c,0x9d,0x9d,0x9c,0x9c,0x9a,\r
-  0x97,0x97,0x99,0x98,0x98,0x9b,0x9a,0x9c,0x97,0x9e,0x98,0x97,0x98,\r
-  0x9b,0x99,0x99,0x9e,0x9f,0x03,0x03,0x03,0x03,0x02,0x03,0x03,0x03,\r
-  0x03,0x9f,0x9f,0x9e,0x9b,0x99,0x98,0x98,0x99,0x99,0x99,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x99,0x9b,0x9d,0x97,\r
-  0x97,0x99,0x99,0x97,0x97,0x94,0x97,0x9a,0x9a,0x99,0x99,0x9d,0x9f,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9f,0x9f,0x9f,0x9e,\r
-  0x9e,0x9d,0x9d,0x9c,0x9b,0x9b,0x9b,0x9b,0x9a,0x9a,0x99,0x99,0x99,\r
-  0x9a,0x9b,0x99,0x97,0x94,0x98,0x97,0x97,0x99,0x9a,0x9c,0x9e,0x9d,\r
-  0x99,0x97,0x94,0x94,0x94,0x97,0x98,0x99,0x9b,0x9c,0x9d,0x9c,0x9a,\r
-  0x9a,0x99,0x98,0x97,0x94,0x94,0x94,0x94,0x97,0x97,0x99,0x9a,0x9a,\r
-  0x97,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x97,0x9a,0x9d,0x9b,\r
-  0x9a,0x99,0x97,0x94,0x94,0x97,0x98,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x02,0x02,0xf7,0xf7,0xf7,\r
-  0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x04,0x04,0x04,0x04,0x05,0x06,\r
-  0x04,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x06,\r
-  0x05,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x05,0x05,0xf7,\r
-  0xf7,0x02,0x04,0x05,0x05,0x04,0x03,0xf7,0xf7,0x06,0x02,0x02,0x02,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x05,0x03,\r
-  0xf7,0xf7,0xf7,0x02,0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x07,0x06,\r
-  0x9a,0x94,0x97,0x9b,0x9c,0x9c,0x9b,0x9a,0x9a,0x99,0x98,0x98,0x99,\r
-  0x9d,0x9f,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9e,0x99,0x99,\r
-  0x9a,0x9a,0x99,0x98,0x9a,0x03,0x9a,0x9d,0x9d,0x9b,0x9c,0x9d,0x9d,\r
-  0x98,0x97,0x9a,0x9c,0x9d,0x9d,0x9d,0x9b,0x99,0x97,0x98,0x98,0x98,\r
-  0x98,0x9a,0x99,0x9b,0x97,0x9e,0x97,0x97,0x99,0x9b,0x99,0x99,0x9e,\r
-  0x03,0x03,0x03,0x03,0x02,0x02,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9e,\r
-  0x9b,0x99,0x98,0x98,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x97,0x99,0x9d,0x98,0x97,0x98,0x99,0x98,0x97,\r
-  0x94,0x94,0x97,0x9b,0x9a,0x99,0x9a,0x9e,0x9f,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,\r
-  0x9f,0x9f,0x9e,0x9e,0x9e,0x9d,0x9a,0x99,0x99,0x9b,0x9a,0x97,0x94,\r
-  0x97,0x97,0x98,0x9a,0x9a,0x9b,0x9d,0x9c,0x99,0x97,0x94,0x94,0x94,\r
-  0x94,0x97,0x99,0x9a,0x9d,0x9e,0x9f,0x9e,0x9d,0x9c,0x9c,0x9a,0x9a,\r
-  0x99,0x99,0x98,0x97,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x97,0x97,0x99,0x99,\r
-  0x9a,0x9b,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x02,0x02,\r
-  0xf7,0xf7,0xf7,0xf7,0x02,0x03,0x04,0x02,0xf7,0xf7,0xf7,0xf7,0x02,\r
-  0x04,0x04,0x04,0x04,0x05,0x06,0x06,0x04,0x03,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x06,0x04,0x02,0xf7,0x02,0x02,0x02,\r
-  0x02,0x02,0x02,0x02,0x02,0x02,0x05,0x04,0xf7,0xf7,0x03,0x04,0x05,\r
-  0x05,0x03,0xf7,0xf7,0x05,0x03,0xf7,0x02,0x03,0x04,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x05,0x05,0xf7,0xf7,0xf7,0x02,0x02,\r
-  0x02,0x03,0x04,0x05,0x06,0x07,0x07,0x07,0x03,0x9b,0x94,0x97,0x9b,\r
-  0x9c,0x9c,0x9c,0x9a,0x9a,0x99,0x98,0x98,0x99,0x9c,0x9f,0x9f,0x03,\r
-  0x03,0x03,0x03,0x03,0x9f,0x9f,0x9d,0x99,0x99,0x9a,0x9a,0x99,0x98,\r
-  0x9d,0x03,0x9a,0x9d,0x9d,0x9b,0x9d,0x9d,0x9d,0x97,0x98,0x9a,0x9c,\r
-  0x9d,0x9d,0x9c,0x9b,0x98,0x97,0x98,0x98,0x97,0x98,0x9a,0x99,0x9a,\r
-  0x94,0x9d,0x97,0x97,0x99,0x9b,0x99,0x9a,0x9f,0x03,0x03,0x03,0x02,\r
-  0x02,0x02,0x02,0x03,0x03,0x03,0x9f,0x9f,0x9d,0x9b,0x99,0x98,0x98,\r
-  0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x98,0x9a,0x9d,0x97,0x98,0x99,0x99,0x97,0x97,0x94,0x94,0x98,0x9c,\r
-  0x9a,0x99,0x9a,0x9f,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9f,0x9f,0x9f,\r
-  0x9f,0x9d,0x9a,0x99,0x9a,0x9c,0x98,0x94,0x94,0x97,0x98,0x9a,0x9a,\r
-  0x9a,0x9c,0x9b,0x98,0x97,0x94,0x94,0x94,0x94,0x97,0x98,0x9a,0x9c,\r
-  0x9e,0x9f,0x9d,0x9d,0x9c,0x9c,0x9c,0x9b,0x9a,0x9a,0x9a,0x99,0x98,\r
-  0x97,0x97,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x97,0x98,0x99,0x9a,0x9a,0x9a,0x9b,0x03,0x03,0x03,\r
-  0x03,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x03,0x05,0x06,0x05,\r
-  0x02,0xf7,0xf7,0xf7,0xf7,0x02,0x04,0x04,0x04,0x04,0x05,0x06,0x06,\r
-  0x06,0x04,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,\r
-  0x06,0x04,0xf7,0xf7,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x02,0x02,\r
-  0xf7,0x02,0x06,0x02,0xf7,0x02,0x04,0x04,0x04,0x04,0x02,0xf7,0x03,\r
-  0x05,0xf7,0x02,0x03,0x04,0x04,0x04,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x06,0x04,0xf7,0xf7,0xf7,0x02,0x02,0x03,0x04,0x06,0x07,\r
-  0x07,0x07,0x07,0xf7,0x02,0x9c,0x94,0x97,0x9a,0x9c,0x9c,0x9c,0x9a,\r
-  0x9a,0x99,0x98,0x97,0x99,0x9c,0x9f,0x9f,0x03,0x03,0x03,0x03,0x03,\r
-  0x9f,0x9f,0x9b,0x98,0x99,0x9b,0x9a,0x99,0x97,0x9e,0x9f,0x9b,0x9d,\r
-  0x9d,0x9c,0x9d,0x9d,0x9c,0x97,0x98,0x9b,0x9d,0x9d,0x9d,0x9c,0x9a,\r
-  0x98,0x97,0x98,0x97,0x97,0x98,0x99,0x9a,0x9a,0x97,0x9d,0x94,0x97,\r
-  0x99,0x9b,0x99,0x9a,0x9f,0x03,0x03,0x03,0x02,0x02,0x02,0x02,0x03,\r
-  0x03,0x03,0x9f,0x9f,0x9d,0x9b,0x99,0x98,0x98,0x99,0x99,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x97,0x99,0x9c,0x99,0x98,\r
-  0x98,0x99,0x99,0x97,0x98,0x94,0x97,0x99,0x9c,0x99,0x99,0x9c,0x9f,\r
-  0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9f,0x9c,0x99,0x99,\r
-  0x9b,0x99,0x94,0x94,0x97,0x99,0x99,0x99,0x9a,0x9b,0x9c,0x98,0x97,\r
-  0x94,0x94,0x94,0x94,0x97,0x98,0x9a,0x9c,0x9e,0x9f,0x9e,0x9d,0x9c,\r
-  0x9c,0x9b,0x9a,0x9a,0x9a,0x99,0x99,0x97,0x97,0x97,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x97,0x97,\r
-  0x98,0x99,0x99,0x99,0x98,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,\r
-  0x04,0x05,0x06,0x06,0x06,0x04,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x04,\r
-  0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x05,0x03,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x06,0x03,0xf7,0xf7,0x02,0x02,\r
-  0x03,0x03,0x03,0x04,0x03,0x03,0x03,0x02,0x02,0xf7,0x04,0x05,0xf7,\r
-  0xf7,0x03,0x04,0x04,0x04,0x03,0xf7,0xf7,0x06,0xf7,0xf7,0x02,0x04,\r
-  0x04,0x04,0x04,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x06,0x02,\r
-  0xf7,0xf7,0x02,0x02,0x02,0x04,0x06,0x07,0x07,0x07,0x07,0xf7,0xf7,\r
-  0x02,0x9d,0x97,0x94,0x9a,0x9d,0x9c,0x9c,0x9a,0x9a,0x99,0x99,0x97,\r
-  0x99,0x9c,0x9e,0x9f,0x9f,0x03,0x03,0x03,0x9f,0x9f,0x9e,0x9a,0x98,\r
-  0x99,0x9b,0x99,0x99,0x94,0x9f,0x9f,0x9c,0x9d,0x9d,0x9c,0x9d,0x9d,\r
-  0x9c,0x97,0x99,0x9c,0x9d,0x9d,0x9c,0x9c,0x9a,0x97,0x97,0x98,0x97,\r
-  0x97,0x98,0x99,0x9a,0x9a,0x97,0x9d,0x94,0x97,0x9a,0x9a,0x99,0x9b,\r
-  0x9f,0x03,0x03,0x03,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x9f,0x9f,\r
-  0x9d,0x9a,0x99,0x98,0x98,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x97,0x99,0x9d,0x98,0x98,0x99,0x99,0x99,0x97,\r
-  0x97,0x94,0x97,0x9a,0x9b,0x99,0x99,0x9d,0x9f,0x9f,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x9f,0x9e,0x9a,0x99,0x9a,0x9a,0x94,0x94,0x97,\r
-  0x97,0x99,0x9a,0x9a,0x9c,0x9d,0x99,0x97,0x94,0x94,0x94,0x94,0x94,\r
-  0x98,0x9a,0x9c,0x9d,0x9d,0x9c,0x9a,0x99,0x99,0x97,0x97,0x97,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x97,\r
-  0xf7,0x02,0x03,0x04,0x05,0x05,0x06,0x06,0x06,0x04,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x02,0x03,0x04,0x04,0x04,0x04,0x05,0x06,0x06,0x06,\r
-  0x06,0x04,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x04,0x06,0x03,0xf7,0xf7,0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x02,0x02,0x02,0x03,0x06,0xf7,0xf7,0x02,0x04,0x04,0x04,\r
-  0x03,0xf7,0xf7,0x05,0x03,0xf7,0x02,0x04,0x04,0x04,0x04,0x04,0x04,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x05,0x05,0x02,0xf7,0xf7,0x02,0x02,\r
-  0x04,0x06,0x07,0x07,0x07,0x07,0xf7,0xf7,0xf7,0x01,0x9f,0x97,0x94,\r
-  0x99,0x9d,0x9d,0x9c,0x9b,0x9a,0x9a,0x99,0x98,0x98,0x9a,0x9d,0x9f,\r
-  0x9f,0x03,0x03,0x03,0x9f,0x9f,0x9d,0x99,0x98,0x9a,0x9b,0x99,0x99,\r
-  0x97,0x9f,0x9d,0x9d,0x9d,0x9c,0x9c,0x9d,0x9d,0x9a,0x97,0x9a,0x9c,\r
-  0x9d,0x9d,0x9c,0x9c,0x9a,0x97,0x97,0x97,0x97,0x97,0x98,0x98,0x9a,\r
-  0x9a,0x97,0x9c,0x97,0x97,0x9a,0x9a,0x99,0x9c,0x9f,0x03,0x03,0x03,\r
-  0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x9f,0x9f,0x9d,0x9a,0x99,0x98,\r
-  0x98,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x97,0x9a,0x9c,0x98,0x98,0x99,0x99,0x97,0x97,0x94,0x94,0x97,0x9b,\r
-  0x9a,0x99,0x99,0x9d,0x9f,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,\r
-  0x9f,0x9b,0x99,0x9a,0x9b,0x97,0x94,0x98,0x97,0x99,0x9a,0x9b,0x9d,\r
-  0x9e,0x9a,0x97,0x94,0x94,0x94,0x94,0x97,0x98,0x9a,0x9a,0x99,0x94,\r
-  0x94,0x94,0x97,0x98,0x99,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9b,0x9b,\r
-  0x9a,0x97,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x97,0x9b,0x9d,\r
-  0x9e,0x9d,0x9f,0x9f,0x03,0x02,0x02,0x01,0x07,0x07,0x07,0x06,0x05,\r
-  0x03,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x03,0x04,0x04,0x04,\r
-  0x04,0x04,0x05,0x06,0x06,0x06,0x06,0x04,0x02,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x06,0x04,0x02,0x02,0x02,\r
-  0x02,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x02,0x02,0x02,\r
-  0x02,0x06,0x02,0xf7,0x02,0x04,0x05,0x05,0x04,0x02,0xf7,0x02,0x04,\r
-  0xf7,0xf7,0x03,0x05,0x04,0x04,0x04,0x04,0x04,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x06,0x03,0xf7,0xf7,0x02,0x02,0x04,0x06,0x07,0x07,0x07,\r
-  0x07,0xf7,0xf7,0xf7,0xf7,0xf7,0x9f,0x99,0x94,0x99,0x9d,0x9d,0x9c,\r
-  0x9b,0x9a,0x9a,0x99,0x98,0x98,0x9a,0x9d,0x9f,0x9f,0x9f,0x9f,0x9f,\r
-  0x9f,0x9f,0x9c,0x99,0x99,0x9a,0x9a,0x99,0x99,0x99,0x9f,0x9c,0x9d,\r
-  0x9d,0x9c,0x9d,0x9d,0x9d,0x99,0x97,0x9a,0x9c,0x9d,0x9d,0x9c,0x9b,\r
-  0x99,0x97,0x98,0x97,0x97,0x97,0x99,0x98,0x9b,0x9a,0x99,0x9c,0x97,\r
-  0x98,0x9a,0x9a,0x99,0x9c,0x9f,0x03,0x03,0x02,0x02,0x02,0x02,0x03,\r
-  0x03,0x03,0x03,0x9f,0x9f,0x9d,0x9a,0x99,0x98,0x98,0x99,0x99,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x98,0x9a,0x9a,0x98,\r
-  0x99,0x99,0x99,0x97,0x98,0x94,0x97,0x99,0x9c,0x9a,0x98,0x9a,0x9e,\r
-  0x9f,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9b,0x98,0x9a,0x9b,\r
-  0x97,0x94,0x99,0x97,0x94,0x97,0x98,0x9a,0x9b,0x9a,0x97,0x94,0x94,\r
-  0x94,0x94,0x94,0x98,0x99,0x9a,0x97,0x94,0x9c,0x03,0xf7,0xf7,0xf7,\r
-  0x02,0x03,0x9f,0x9e,0x9c,0x9b,0x99,0x98,0x97,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x97,0x99,0x9c,0x9f,0x03,\r
-  0x9f,0x9f,0x9c,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,\r
-  0x03,0x04,0x04,0x04,0x04,0x04,0x04,0x05,0x05,0x06,0x06,0x06,0x06,\r
-  0x05,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x03,0x06,0x05,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x02,0x02,0x02,0x06,0x03,0xf7,0x02,\r
-  0x04,0x04,0x05,0x04,0x03,0xf7,0xf7,0x05,0xf7,0xf7,0x03,0x05,0x05,\r
-  0x05,0x04,0x04,0x04,0x04,0x03,0x03,0x03,0x03,0x03,0x03,0x06,0x02,\r
-  0xf7,0xf7,0x02,0x03,0x05,0x07,0x07,0x07,0x07,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x03,0x9a,0x94,0x97,0x9c,0x9d,0x9d,0x9b,0x9a,0x9a,0x99,\r
-  0x98,0x98,0x9a,0x9d,0x9e,0x9f,0x9f,0x9f,0x9f,0x9f,0x9e,0x9a,0x98,\r
-  0x99,0x9a,0x9a,0x99,0x98,0x9c,0x03,0x9b,0x9d,0x9d,0x9c,0x9d,0x9d,\r
-  0x9d,0x98,0x98,0x9b,0x9d,0x9d,0x9d,0x9c,0x9a,0x99,0x94,0x99,0x97,\r
-  0x94,0x97,0x99,0x98,0x9c,0x99,0x9a,0x9b,0x97,0x98,0x9b,0x9a,0x99,\r
-  0x9e,0x03,0x03,0x03,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x9f,\r
-  0x9f,0x9d,0x9a,0x99,0x98,0x98,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x99,0x9c,0x99,0x99,0x99,0x99,0x99,0x97,\r
-  0x97,0x94,0x97,0x9a,0x9a,0x99,0x99,0x9b,0x9e,0x9f,0x9f,0x9f,0x9f,\r
-  0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,\r
-  0x9f,0x9f,0x9f,0x9e,0x9a,0x98,0x9a,0x9b,0x98,0x97,0x99,0x97,0x94,\r
-  0x94,0x94,0x94,0x94,0x9a,0x98,0x94,0x94,0x97,0x97,0x97,0x98,0x99,\r
-  0x9a,0x97,0x94,0x9a,0x9d,0x9c,0x9b,0x9a,0x9a,0x99,0x99,0x97,0x98,\r
-  0x97,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x97,0x97,0x97,0x97,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x02,0x03,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x05,\r
-  0x05,0x06,0x06,0x06,0x07,0x06,0x06,0x04,0x03,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0x02,0x05,0x06,0x04,0x02,\r
-  0x03,0x03,0x03,0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,\r
-  0x03,0x02,0x02,0x03,0x06,0x02,0xf7,0x02,0x03,0x05,0x05,0x05,0x04,\r
-  0x02,0xf7,0x04,0x03,0xf7,0x02,0x04,0x05,0x05,0x05,0x04,0x04,0x04,\r
-  0x04,0x03,0x03,0x03,0x03,0x02,0x05,0x05,0x02,0xf7,0xf7,0x02,0x04,\r
-  0x06,0x07,0x07,0x07,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x9b,\r
-  0x94,0x97,0x9c,0x9d,0x9d,0x9b,0x9a,0x9a,0x99,0x98,0x97,0x99,0x9c,\r
-  0x9e,0x9f,0x9f,0x9f,0x9f,0x9f,0x9d,0x99,0x98,0x99,0x9b,0x9a,0x99,\r
-  0x97,0x9e,0x03,0x9c,0x9d,0x9d,0x9c,0x9d,0x9d,0x9d,0x97,0x98,0x9b,\r
-  0x9d,0x9d,0x9d,0x9c,0x9a,0x98,0x94,0x99,0x94,0x94,0x97,0x99,0x98,\r
-  0x9c,0x98,0x9d,0x9a,0x97,0x98,0x9b,0x99,0x99,0x9e,0x03,0x03,0x03,\r
-  0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9d,0x9a,0x99,\r
-  0x98,0x98,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x97,0x99,0x9c,0x98,0x99,0x99,0x99,0x97,0x98,0x94,0x97,0x99,0x9b,\r
-  0x9a,0x98,0x99,0x9c,0x9e,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,\r
-  0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9e,0x9c,0x99,\r
-  0x98,0x9a,0x9a,0x99,0x97,0x9b,0x97,0x97,0x94,0x9e,0x02,0x99,0x9a,\r
-  0x98,0x97,0x97,0x97,0x94,0x97,0x97,0x99,0x99,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x97,0x98,0x99,0x9a,0x9a,0x9a,0x9a,0x99,0x98,0x97,0x97,0x97,0x94,\r
-  0x94,0x94,0x94,0x97,0x97,0x97,0x02,0x03,0x04,0x04,0x04,0x04,0x04,\r
-  0x04,0x04,0x04,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x07,0x07,0x06,\r
-  0x05,0x04,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x04,0x06,0x06,0x03,0x03,0x03,0x04,0x04,0x04,0x03,\r
-  0x03,0x02,0x03,0x03,0x04,0x04,0x04,0x03,0x03,0x02,0x03,0x05,0x06,\r
-  0xf7,0xf7,0x02,0x04,0x05,0x06,0x06,0x05,0x03,0xf7,0xf7,0x05,0xf7,\r
-  0xf7,0x04,0x05,0x05,0x05,0x05,0x04,0x04,0x04,0x04,0x03,0x03,0x03,\r
-  0x02,0x03,0x06,0x03,0xf7,0xf7,0x02,0x03,0x06,0x07,0x07,0x07,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x9b,0x94,0x97,0x9c,0x9d,\r
-  0x9d,0x9c,0x9a,0x9a,0x99,0x98,0x97,0x98,0x9b,0x9d,0x9e,0x9f,0x9f,\r
-  0x9f,0x9e,0x9c,0x99,0x98,0x9a,0x9b,0x99,0x99,0x97,0x9f,0x9f,0x9d,\r
-  0x9d,0x9d,0x9c,0x9d,0x9d,0x9c,0x97,0x99,0x9c,0x9d,0x9d,0x9c,0x9b,\r
-  0x9a,0x97,0x94,0x99,0x94,0x94,0x97,0x9a,0x99,0x9c,0x97,0x9e,0x98,\r
-  0x97,0x98,0x9b,0x99,0x99,0x9e,0x03,0x03,0x03,0x02,0x02,0x02,0x02,\r
-  0x03,0x03,0x03,0x03,0x9f,0x9f,0x9d,0x9a,0x99,0x98,0x98,0x99,0x99,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x98,0x9c,0x99,0x99,\r
-  0x99,0x99,0x98,0x97,0x94,0x94,0x97,0x9a,0x9a,0x99,0x98,0x9a,0x9b,\r
-  0x9d,0x9e,0x9d,0x9e,0x9d,0x9c,0x9c,0x9c,0x9c,0x9b,0x9b,0x9b,0x9b,\r
-  0x9b,0x9b,0x9b,0x9a,0x9a,0x99,0x98,0x97,0x99,0x9a,0x9a,0x99,0x97,\r
-  0x9e,0x97,0x99,0x94,0x94,0x9f,0x9c,0x99,0x99,0x97,0x97,0x99,0x99,\r
-  0x98,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x97,0x97,0x97,0x97,0x97,0x98,0x99,0x99,0x9a,0x9b,0x9c,0x9c,0x9c,\r
-  0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,\r
-  0x9d,0x04,0x04,0x04,0x04,0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x04,\r
-  0x05,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x05,0x03,0x03,0x02,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x04,0x06,0x06,\r
-  0x04,0x04,0x04,0x04,0x04,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x03,\r
-  0x04,0x04,0x03,0x03,0x04,0x06,0x06,0x03,0xf7,0xf7,0x03,0x04,0x06,\r
-  0x06,0x06,0x06,0x04,0xf7,0xf7,0x04,0x02,0xf7,0x02,0x05,0x05,0x05,\r
-  0x05,0x04,0x04,0x04,0x04,0x04,0x03,0x03,0x03,0x02,0x04,0x06,0x02,\r
-  0xf7,0xf7,0x02,0x05,0x07,0x07,0x07,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0x9d,0x94,0x94,0x9c,0x9d,0x9d,0x9c,0x9a,0x9a,\r
-  0x99,0x98,0x97,0x98,0x99,0x9c,0x9e,0x9f,0x9f,0x9e,0x9d,0x9a,0x98,\r
-  0x99,0x9a,0x9a,0x99,0x99,0x97,0x9f,0x9e,0x9d,0x9d,0x9d,0x9c,0x9d,\r
-  0x9d,0x9b,0x97,0x99,0x9c,0x9d,0x9d,0x9c,0x9a,0x99,0x97,0x94,0x99,\r
-  0x94,0x97,0x97,0x9a,0x99,0x9b,0x97,0x9e,0x97,0x97,0x99,0x9b,0x99,\r
-  0x99,0x9f,0x03,0x03,0x03,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,\r
-  0x9f,0x9f,0x9d,0x9a,0x99,0x98,0x98,0x99,0x99,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x97,0x99,0x9c,0x99,0x99,0x99,0x99,0x97,0x97,\r
-  0x94,0x97,0x9a,0x9b,0x99,0x98,0x99,0x9a,0x9a,0x9b,0x9b,0x9a,0x9a,\r
-  0x99,0x98,0x98,0x98,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,\r
-  0x97,0x97,0x98,0x99,0x9a,0x9b,0x9a,0x94,0x9f,0x9c,0x9b,0x98,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x97,0x94,0x94,0x94,0x94,0x94,0x94,0x97,\r
-  0x9a,0x99,0x98,0x99,0x9a,0x9b,0x9c,0x9c,0x9d,0x9d,0x9d,0x9d,0x9d,\r
-  0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9c,0x9d,\r
-  0x9d,0x9d,0x9d,0x9d,0x9c,0x9c,0x9c,0x9c,0x9c,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x06,0x07,\r
-  0x06,0x06,0x06,0x05,0x04,0x03,0x02,0x02,0x02,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x02,0x02,0x02,0x03,0x05,0x05,0x04,0x04,0x04,0x03,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x04,0x04,0x04,0x05,0x06,\r
-  0x05,0x03,0xf7,0xf7,0x02,0x04,0x05,0x06,0x07,0x07,0x06,0x05,0x03,\r
-  0xf7,0x02,0x04,0xf7,0xf7,0x04,0x05,0x05,0x05,0x04,0x03,0x03,0x04,\r
-  0x04,0x03,0x03,0x03,0x02,0x02,0x06,0x04,0xf7,0xf7,0x02,0x04,0x06,\r
-  0x07,0x07,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,\r
-  0x9e,0x94,0x94,0x9b,0x9d,0x9d,0x9c,0x9b,0x9a,0x99,0x99,0x98,0x98,\r
-  0x99,0x9b,0x9d,0x9e,0x9e,0x9e,0x9c,0x99,0x98,0x99,0x9a,0x9a,0x99,\r
-  0x99,0x99,0x9f,0x9d,0x9d,0x9d,0x9d,0x9c,0x9d,0x9d,0x9a,0x97,0x9a,\r
-  0x9c,0x9d,0x9d,0x9c,0x9a,0x99,0x97,0x94,0x99,0x97,0x97,0x97,0x9a,\r
-  0x99,0x9a,0x97,0x9e,0x97,0x97,0x99,0x9b,0x99,0x9a,0x9f,0x03,0x03,\r
-  0x03,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9d,0x9a,\r
-  0x98,0x98,0x98,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x98,0x9c,0x99,0x99,0x16,0x99,0x97,0x98,0x94,0x97,0x99,0x9b,0x9a,\r
-  0x99,0x98,0x98,0x99,0x99,0x98,0x98,0x97,0x97,0x97,0x98,0x98,0x98,\r
-  0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x99,0x99,0x9a,0x9c,\r
-  0x9d,0x9b,0x97,0x02,0x9f,0x9d,0x9c,0x9a,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x97,0x97,0x97,0x97,0x97,0x97,\r
-  0x98,0x99,0x9a,0x9a,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,\r
-  0x9c,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,\r
-  0x9b,0x9b,0x9a,0x9a,0x03,0x03,0x03,0x03,0x03,0x02,0x02,0x03,0x03,\r
-  0x03,0x04,0x04,0x05,0x06,0x06,0x06,0x07,0x07,0x06,0x06,0x06,0x05,\r
-  0x04,0x04,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x04,0x04,\r
-  0x04,0x04,0x04,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x03,0x04,0x04,0x04,0x03,0x02,0xf7,0xf7,0xf7,0x04,\r
-  0x05,0x06,0x07,0x07,0x07,0x07,0x06,0x04,0xf7,0xf7,0x05,0xf7,0xf7,\r
-  0x03,0x05,0x05,0x05,0x05,0x03,0x02,0x03,0x04,0x04,0x03,0x03,0x03,\r
-  0x02,0x03,0x06,0x02,0xf7,0xf7,0x02,0x05,0x07,0x07,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x9e,0x94,0x94,0x9a,\r
-  0x9d,0x9d,0x9d,0x9b,0x9a,0x9a,0x99,0x98,0x97,0x99,0x9b,0x9c,0x9d,\r
-  0x9d,0x9d,0x9a,0x99,0x98,0x99,0x9b,0x9a,0x99,0x98,0x9b,0x9f,0x9c,\r
-  0x9d,0x9d,0x9c,0x9d,0x9d,0x9d,0x99,0x97,0x9a,0x9c,0x9d,0x9d,0x9c,\r
-  0x9a,0x9a,0x97,0x97,0x99,0x97,0x97,0x98,0x9a,0x9a,0x9a,0x97,0x9d,\r
-  0x94,0x98,0x99,0x9b,0x99,0x9a,0x9f,0x03,0x03,0x03,0x02,0x02,0x02,\r
-  0x02,0x02,0x03,0x03,0x03,0x9f,0x9f,0x9c,0x99,0x98,0x98,0x98,0x99,\r
-  0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x97,0x9b,0x99,0x99,0x12,\r
-  0x99,0x97,0x97,0x94,0x97,0x99,0x9b,0x9a,0x99,0x98,0x98,0x98,0x97,\r
-  0x97,0x97,0x98,0x98,0x98,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,\r
-  0x99,0x99,0x99,0x99,0x15,0x9b,0x9e,0x9e,0x9e,0x97,0x9f,0x9e,0x9f,\r
-  0x9f,0x9d,0x9c,0x9a,0x97,0x99,0x94,0x94,0x94,0x94,0x94,0x94,0x97,\r
-  0x9a,0x9c,0x9d,0x9c,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x03,\r
-  0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x04,0x04,0x05,0x06,\r
-  0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x05,0x04,0x04,0x04,\r
-  0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x03,0x03,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x03,0x04,0x05,0x06,0x06,0x04,0xf7,0xf7,0x02,0x03,0x04,\r
-  0x04,0x05,0xf7,0xf7,0xf7,0xf7,0x04,0x06,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x05,0x03,0xf7,0x02,0x03,0xf7,0xf7,0x05,0x05,0x05,0x05,\r
-  0x03,0x02,0xf7,0x02,0x04,0x04,0x03,0x03,0x03,0x02,0x05,0x05,0xf7,\r
-  0xf7,0xf7,0x03,0x06,0x07,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x01,0x9f,0x97,0x94,0x99,0x9d,0x9d,0x9d,0x9c,\r
-  0x9a,0x9a,0x99,0x98,0x97,0x98,0x9a,0x9c,0x9c,0x9d,0x9b,0x99,0x98,\r
-  0x98,0x9a,0x9b,0x9a,0x99,0x97,0x9e,0x9f,0x9c,0x9d,0x9d,0x9c,0x9d,\r
-  0x9d,0x9d,0x98,0x97,0x9a,0x9c,0x9d,0x9c,0x9c,0x9a,0x9a,0x97,0x97,\r
-  0x98,0x97,0x97,0x98,0x99,0x9a,0x9a,0x97,0x9d,0x94,0x97,0x9a,0x9b,\r
-  0x99,0x9a,0x9f,0x03,0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x03,0x03,\r
-  0x03,0x9f,0x9e,0x9c,0x99,0x98,0x98,0x99,0x99,0x99,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x97,0x9a,0x9a,0x99,0x5c,0x16,0x98,0x97,0x94,0x94,\r
-  0x98,0x9b,0x9a,0x99,0x98,0x98,0x97,0x97,0x98,0x98,0x99,0x99,0x99,\r
-  0x9a,0x9a,0x9a,0x9b,0x9b,0x9c,0x9c,0x9d,0x9d,0x9d,0x9e,0x0f,0x5a,\r
-  0x9f,0x9f,0x9f,0x9a,0x94,0x01,0x9e,0x98,0x98,0x9f,0x9d,0x9d,0x9d,\r
-  0x97,0x97,0x97,0x94,0x97,0x99,0x9c,0x9d,0x9c,0x9c,0x9d,0x9d,0x9b,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x99,0x03,0x03,0x02,0x02,0x02,0x02,\r
-  0x02,0x03,0x03,0x03,0x04,0x04,0x05,0x05,0x06,0x06,0x06,0x06,0x05,\r
-  0x05,0x05,0x05,0x05,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x03,\r
-  0x03,0x03,0x02,0xf7,0xf7,0xf7,0x03,0x06,0x07,0x06,0x06,0x06,0x07,\r
-  0x07,0x07,0x03,0xf7,0xf7,0xf7,0x03,0x04,0x05,0x05,0xf7,0xf7,0xf7,\r
-  0x04,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x04,0xf7,\r
-  0xf7,0x05,0xf7,0xf7,0x03,0x05,0x05,0x05,0x04,0x02,0xf7,0xf7,0x03,\r
-  0x04,0x03,0x03,0x03,0x03,0x03,0x06,0x02,0xf7,0xf7,0x02,0x05,0x07,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x03,0x98,0x94,0x98,0x9d,0x9e,0x9d,0x9c,0x9a,0x9a,0x99,0x98,\r
-  0x97,0x98,0x99,0x9b,0x9b,0x9b,0x9a,0x99,0x98,0x99,0x9a,0x9a,0x99,\r
-  0x99,0x94,0x9f,0x9f,0x9d,0x9d,0x9d,0x9c,0x9d,0x9d,0x9d,0x97,0x98,\r
-  0x9b,0x9d,0x9d,0x9d,0x9c,0x9b,0x9a,0x97,0x97,0x98,0x97,0x97,0x99,\r
-  0x99,0x9a,0x9a,0x98,0x9d,0x94,0x97,0x9a,0x9a,0x99,0x9b,0x9f,0x03,\r
-  0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x9f,0x9e,0x9c,\r
-  0x99,0x98,0x98,0x99,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x97,0x99,\r
-  0x9b,0x16,0x5c,0x13,0x98,0x97,0x94,0x94,0x97,0x9a,0x9a,0x99,0x98,\r
-  0x98,0x98,0x98,0x98,0x99,0x99,0x9a,0x9a,0x9c,0x9d,0x9e,0x9f,0x9f,\r
-  0x9f,0x9f,0x03,0x03,0x03,0x08,0x1a,0x58,0x03,0x0c,0x13,0x0e,0x15,\r
-  0x19,0x11,0x19,0x97,0x98,0x9f,0x9b,0x9a,0x99,0x9c,0x9d,0x9d,0x9d,\r
-  0x9d,0x9c,0x13,0x13,0x13,0x13,0x13,0x9d,0x9d,0x9c,0x9c,0x9c,0x9c,\r
-  0x9c,0x9c,0x9c,0x9b,0x9b,0x9b,0x9b,0x9b,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x99,0x99,0x99,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x04,\r
-  0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,\r
-  0x04,0x03,0x03,0x03,0x03,0x03,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0x02,\r
-  0x05,0x07,0x07,0x06,0x04,0x03,0x02,0x03,0x04,0x04,0x04,0xf7,0xf7,\r
-  0x03,0x04,0x04,0x05,0x05,0xf7,0x02,0x03,0x06,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x03,0xf7,0x02,0x03,0xf7,0x02,\r
-  0x05,0x05,0x05,0x04,0x02,0xf7,0xf7,0xf7,0x03,0x04,0x03,0x03,0x03,\r
-  0x03,0x04,0x05,0xf7,0xf7,0x02,0x03,0x06,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x9a,0x94,\r
-  0x97,0x9c,0x9e,0x9d,0x9c,0x9a,0x9a,0x99,0x98,0x97,0x98,0x99,0x9a,\r
-  0x9a,0x9a,0x99,0x98,0x98,0x99,0x9a,0x9a,0x99,0x99,0x97,0x9f,0x9f,\r
-  0x9d,0x9d,0x9d,0x9c,0x9d,0x9d,0x9c,0x97,0x99,0x9c,0x9d,0x9d,0x9d,\r
-  0x9c,0x9c,0x99,0x97,0x97,0x98,0x97,0x97,0x99,0x99,0x9b,0x9a,0x98,\r
-  0x9d,0x97,0x97,0x9a,0x9a,0x99,0x9c,0x9f,0x03,0x03,0x02,0x02,0x02,\r
-  0x02,0x02,0x02,0x03,0x03,0x03,0x9f,0x9e,0x9b,0x99,0x98,0x98,0x99,\r
-  0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x94,0x94,0x94,0x19,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,\r
-  0x0e,0x0f,0x1f,0x94,0x94,0x94,0x97,0x99,0x9c,0x13,0x5c,0x5c,0x98,\r
-  0x97,0x97,0x94,0x16,0x13,0x13,0x12,0x11,0x11,0x11,0x11,0x12,0x12,\r
-  0x13,0x13,0x15,0x16,0x17,0x18,0x18,0x18,0x17,0x09,0x03,0x03,0x09,\r
-  0x19,0x59,0x5a,0x14,0x5d,0x5e,0x5d,0xff,0xff,0xff,0x1d,0x13,0x99,\r
-  0x9f,0x9a,0x9a,0x99,0x9d,0x9a,0x9a,0x9c,0x12,0x5b,0x5b,0x5c,0x5d,\r
-  0x5d,0x5d,0x14,0x10,0x9e,0x9e,0x9e,0x9e,0x9e,0x11,0x15,0x15,0x15,\r
-  0x15,0x15,0x14,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x12,0x12,\r
-  0x12,0x12,0x17,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,\r
-  0x04,0x04,0x04,0x03,0x02,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x02,0x04,0x05,0x04,0x03,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0x03,0x04,0x06,0x04,\r
-  0x02,0x03,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x05,0x02,0xf7,0x05,0xf7,0xf7,0x04,0x05,0x05,0x05,0x03,\r
-  0xf7,0xf7,0xf7,0x02,0x04,0x04,0x03,0x03,0x03,0x03,0x06,0x02,0xf7,\r
-  0x02,0x02,0x04,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x9c,0x94,0x94,0x9c,0x9e,0x9d,\r
-  0x9c,0x9a,0x9a,0x99,0x98,0x98,0x97,0x98,0x99,0x99,0x99,0x99,0x98,\r
-  0x99,0x9a,0x9b,0x9a,0x99,0x99,0x99,0x9f,0x9e,0x9d,0x9d,0x9d,0x9c,\r
-  0x9d,0x9d,0x9b,0x97,0x99,0x9c,0x9d,0x9d,0x9d,0x9c,0x9b,0x99,0x97,\r
-  0x98,0x97,0x97,0x97,0x99,0x99,0x9c,0x9a,0x99,0x9c,0x97,0x98,0x9a,\r
-  0x9a,0x99,0x9d,0x9f,0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x03,0x03,\r
-  0x03,0x03,0x9f,0x9e,0x9b,0x99,0x98,0x98,0x99,0x99,0x99,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x94,0x94,\r
-  0x94,0x94,0x1b,0x0d,0x5e,0x5e,0x5e,0x5e,0x0d,0x1d,0x94,0x94,0x94,\r
-  0x94,0x97,0x99,0x9c,0x5c,0x5c,0x5c,0x19,0x97,0x97,0x94,0x97,0x15,\r
-  0x14,0x5c,0x5c,0x5d,0x5d,0x5c,0x5c,0x5c,0x5b,0x5a,0x59,0x59,0x59,\r
-  0x59,0x5a,0x5b,0x14,0x97,0x97,0x17,0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,\r
-  0x5d,0x58,0xff,0xff,0xff,0xff,0x5d,0x12,0x9d,0x99,0x9a,0x9a,0x9d,\r
-  0x97,0x9a,0x13,0x5b,0x5b,0x5b,0x5c,0x5d,0x5e,0x5d,0x5b,0x5a,0x16,\r
-  0x10,0x9f,0x0e,0x9f,0x9e,0x10,0x17,0x5a,0x5b,0x5b,0x5b,0x5b,0x5b,\r
-  0x5b,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x13,0x9a,0x9a,0x9a,\r
-  0x9b,0x9b,0x9b,0x9b,0x9b,0x03,0x03,0x04,0x04,0x04,0x04,0x04,0x04,\r
-  0x04,0x04,0x04,0x04,0x04,0x03,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x02,0x02,0x03,0x04,0x04,0x04,0x04,0x03,0x02,\r
-  0xf7,0xf7,0xf7,0x02,0x02,0x02,0x03,0x03,0x03,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0xf7,0x04,0x05,0x06,0x04,0x03,0x06,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x04,0xf7,\r
-  0x03,0x03,0xf7,0x02,0x05,0x04,0x05,0x04,0xf7,0xf7,0xf7,0xf7,0x02,\r
-  0x04,0x03,0x03,0x03,0x03,0x04,0x05,0xf7,0xf7,0x02,0x02,0x9f,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x9c,0x94,0x94,0x9b,0x9e,0x9d,0x9c,0x9a,0x9a,0x99,\r
-  0x99,0x98,0x97,0x98,0x98,0x98,0x98,0x98,0x98,0x99,0x9a,0x9a,0x9a,\r
-  0x99,0x98,0x9c,0x9f,0x9d,0x9d,0x9d,0x9c,0x9c,0x9d,0x9d,0x99,0x97,\r
-  0x9a,0x9c,0x9d,0x9d,0x9d,0x9c,0x9b,0x99,0x97,0x98,0x97,0x97,0x97,\r
-  0x99,0x98,0x9c,0x99,0x9a,0x9c,0x97,0x98,0x9b,0x9a,0x99,0x9e,0x9f,\r
-  0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x9f,0x9e,\r
-  0x9b,0x99,0x98,0x98,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x94,0x94,0x94,0x94,0x94,0x1f,0x7d,\r
-  0x5e,0x5e,0x5e,0x16,0x94,0x94,0x94,0x94,0x94,0x97,0x99,0x12,0x5c,\r
-  0x5c,0x5c,0x11,0x97,0x97,0x94,0x97,0x9a,0x14,0x5c,0x5c,0x5c,0x5c,\r
-  0x5c,0x5c,0x5b,0x5a,0x59,0x59,0x59,0x5a,0x5d,0x5d,0x12,0x94,0x94,\r
-  0x19,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5d,0x5a,0xff,0xff,0xff,0xff,\r
-  0xff,0x5b,0x5d,0x13,0x99,0x9a,0x9b,0x9d,0x97,0x13,0x5b,0x5b,0x5b,\r
-  0x5b,0x5c,0x5d,0x5e,0x5d,0x5b,0x5a,0x5a,0x59,0x5a,0x14,0x9e,0x9e,\r
-  0x9d,0x12,0x5b,0x5b,0x5b,0x5b,0x5b,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,\r
-  0x5c,0x5c,0x5b,0x12,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,\r
-  0x04,0x04,0x04,0x04,0x04,0x04,0x03,0x02,0x02,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x04,0x05,0x06,0x06,0x06,0x06,0x05,\r
-  0x04,0x02,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x05,0x05,\r
-  0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x02,0xf7,0x05,0xf7,0xf7,0x04,\r
-  0x04,0x04,0x05,0x02,0xf7,0xf7,0xf7,0xf7,0x03,0x04,0x03,0x03,0x03,\r
-  0x03,0x06,0x02,0xf7,0xf7,0x02,0x9a,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x9d,\r
-  0x94,0x94,0x9a,0x9e,0x9d,0x9d,0x9a,0x9a,0x9a,0x99,0x98,0x98,0x98,\r
-  0x98,0x98,0x98,0x98,0x99,0x99,0x9a,0x9a,0x9a,0x99,0x97,0x9f,0x9f,\r
-  0x9c,0x9d,0x9d,0x9c,0x9d,0x9d,0x9d,0x98,0x97,0x9a,0x9d,0x9d,0x9d,\r
-  0x9d,0x9d,0x9b,0x99,0x94,0x99,0x97,0x97,0x97,0x9a,0x98,0x9c,0x99,\r
-  0x9b,0x9b,0x97,0x98,0x9b,0x9a,0x99,0x9e,0x03,0x03,0x02,0x02,0x02,\r
-  0x02,0x02,0x02,0x03,0x03,0x03,0x9f,0x9f,0x9e,0x9b,0x99,0x98,0x98,\r
-  0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x94,0x94,0x94,0x94,0x94,0x94,0x14,0x5e,0x5e,0x5e,0x10,0x94,\r
-  0x94,0x94,0x94,0x94,0x97,0x99,0x12,0x5c,0x5c,0x5c,0x5d,0x14,0x97,\r
-  0x94,0x97,0x9a,0x9b,0x12,0x5c,0x5c,0x5c,0x12,0x13,0x15,0x17,0x18,\r
-  0x18,0x5b,0x5d,0x5e,0x0e,0x94,0x94,0x94,0x94,0x1c,0x5d,0x5d,0x5d,\r
-  0x5d,0x5d,0x5b,0x0f,0x03,0xf7,0x0c,0x11,0xff,0x5a,0x5d,0x5b,0x19,\r
-  0x9a,0x9b,0x9d,0x1a,0x5c,0x5b,0x5b,0x5b,0x5c,0x12,0x13,0x0f,0x5d,\r
-  0x5b,0x5a,0x5a,0x5a,0x12,0x9d,0x9c,0x9b,0x9b,0x9b,0x13,0x5c,0x5c,\r
-  0x5c,0x12,0x12,0x12,0x12,0x13,0x13,0x5c,0x5b,0x5b,0x13,0x9c,0x9c,\r
-  0x9d,0x9d,0x9d,0x9d,0x9d,0x9c,0x9a,0x99,0x02,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x04,0x05,0x06,0x07,0x07,\r
-  0x07,0x06,0x04,0x03,0xf7,0xf7,0xf7,0x02,0x02,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x02,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x05,0x05,0x06,0x05,0x04,0x04,0x05,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x04,0xf7,0x02,0x03,0xf7,0x02,0x05,0x04,0x04,0x03,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x04,0x03,0x03,0x03,0x03,0x04,0x05,0xf7,0xf7,\r
-  0x02,0x98,0x9d,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x9e,0x94,0x94,0x9a,0x9e,\r
-  0x9d,0x9d,0x9b,0x9a,0x9a,0x99,0x98,0x98,0x98,0x98,0x98,0x98,0x98,\r
-  0x99,0x9a,0x9a,0x9a,0x99,0x99,0x97,0x9f,0x9f,0x9d,0x9d,0x9d,0x9b,\r
-  0x9d,0x9d,0x9d,0x97,0x98,0x9b,0x9d,0x9d,0x9d,0x9d,0x9c,0x9b,0x99,\r
-  0x94,0x99,0x97,0x97,0x97,0x9a,0x99,0x9c,0x98,0x9d,0x9a,0x97,0x98,\r
-  0x9b,0x99,0x99,0x9f,0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x03,\r
-  0x03,0x03,0x9f,0x9f,0x9e,0x9b,0x99,0x98,0x98,0x99,0x99,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x1d,0x5e,0x5e,0x5e,0x7d,0x94,0x94,0x94,0x94,0x94,0x97,\r
-  0x99,0x16,0x5c,0x5c,0x5c,0x5d,0x5d,0x19,0x94,0x97,0x9a,0x9b,0x13,\r
-  0x5c,0x5c,0x12,0x9a,0x9b,0x9e,0x9f,0x03,0x9f,0x19,0x5e,0x0d,0x1e,\r
-  0x94,0x98,0x9a,0x9a,0x9a,0x13,0x5b,0x5c,0x5c,0x15,0x0c,0x01,0xf7,\r
-  0xf7,0xf7,0xf7,0x11,0x5a,0x5d,0x5a,0x13,0x9a,0x9a,0x9d,0x12,0x5d,\r
-  0x5b,0x5b,0x15,0x15,0x99,0x97,0x97,0x14,0x5b,0x5b,0x5b,0x13,0x9b,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x13,0x5c,0x5c,0x12,0x99,0x99,0x99,0x99,\r
-  0x9a,0x9c,0x12,0x5b,0x16,0x11,0x9c,0x9b,0x9a,0x98,0x97,0x94,0x94,\r
-  0x94,0x94,0x94,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x03,0x05,0x06,\r
-  0x07,0x07,0x07,0x07,0x06,0x04,0x02,0xf7,0xf7,0xf7,0x02,0x03,0x04,\r
-  0x04,0x04,0x04,0x04,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x05,\r
-  0x05,0x05,0x03,0x02,0xf7,0xf7,0xf7,0x03,0x05,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x03,0xf7,\r
-  0x05,0xf7,0xf7,0x04,0x04,0x04,0x04,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,\r
-  0x04,0x03,0x03,0x03,0x03,0x06,0x02,0xf7,0xf7,0x98,0x99,0x03,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0x9e,0x97,0x94,0x9a,0x9e,0x9d,0x9d,0x9b,0x9a,\r
-  0x9a,0x99,0x99,0x99,0x98,0x98,0x98,0x98,0x99,0x99,0x9a,0x9a,0x9a,\r
-  0x99,0x99,0x99,0x9f,0x9f,0x9d,0x9d,0x9d,0x9c,0x9d,0x9d,0x9c,0x97,\r
-  0x99,0x9c,0x9d,0x9d,0x9d,0x9d,0x9c,0x9b,0x98,0x94,0x99,0x97,0x97,\r
-  0x97,0x9a,0x99,0x9c,0x97,0x9e,0x98,0x98,0x99,0x9b,0x99,0x9a,0x9f,\r
-  0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x9f,0x9f,\r
-  0x9d,0x9a,0x99,0x98,0x98,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x0e,0x5e,\r
-  0x5e,0x5e,0x19,0x94,0x94,0x94,0x94,0x97,0x16,0x5a,0x5b,0x5b,0x5c,\r
-  0x19,0x97,0x97,0x94,0x97,0x99,0x9b,0x13,0x5c,0x5c,0x12,0x9a,0x9c,\r
-  0x9f,0x03,0x03,0x9d,0x1d,0x0f,0x1b,0x94,0x98,0x9b,0x9d,0x9e,0x9e,\r
-  0x11,0x5b,0x5a,0x5b,0x10,0x03,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x59,\r
-  0x5d,0x58,0x11,0x9a,0x9a,0x14,0x5b,0x5c,0x5c,0x5b,0x14,0x9a,0x99,\r
-  0x99,0x9a,0x15,0x5b,0x14,0x16,0x9a,0x99,0x9a,0x9a,0x9a,0x99,0x99,\r
-  0x13,0x5d,0x5d,0x11,0x99,0x9a,0x9c,0x9b,0x9b,0x9a,0x1a,0x11,0x19,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x02,0x03,\r
-  0x05,0x06,0x07,0x07,0x07,0x07,0x06,0x04,0x03,0xf7,0xf7,0xf7,0xf7,\r
-  0x03,0x03,0x04,0x04,0x04,0x04,0x04,0x04,0x03,0x03,0x03,0x02,0x02,\r
-  0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x06,0x05,0x05,0x03,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x02,0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x05,0xf7,0xf7,0x03,0xf7,0x02,0x05,\r
-  0x04,0x04,0x03,0xf7,0xf7,0x02,0xf7,0xf7,0x03,0x03,0x03,0x03,0x03,\r
-  0x04,0x04,0xf7,0xf7,0x97,0x99,0x9b,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x9f,0x97,0x94,0x9a,0x9e,0x9e,0x9d,0x9c,0x9a,0x9a,0x9a,0x99,0x99,\r
-  0x99,0x98,0x99,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x99,0x97,0x9d,0x9f,\r
-  0x9d,0x9d,0x9d,0x9d,0x9c,0x9d,0x9d,0x9b,0x97,0x99,0x9c,0x9d,0x9d,\r
-  0x9d,0x9d,0x9c,0x9a,0x98,0x94,0x99,0x97,0x97,0x97,0x9a,0x99,0x9b,\r
-  0x97,0x9e,0x97,0x98,0x99,0x9b,0x99,0x9b,0x9f,0x03,0x03,0x02,0x02,\r
-  0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x9f,0x9f,0x9d,0x9a,0x99,0x98,\r
-  0x98,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x97,\r
-  0x97,0x97,0x94,0x94,0x94,0x94,0x16,0x5e,0x5e,0x5e,0x12,0x94,0x94,\r
-  0x94,0x94,0x97,0x13,0x5a,0x5b,0x5b,0x13,0x97,0x98,0x98,0x97,0x97,\r
-  0x99,0x9b,0x13,0x5c,0x5c,0x12,0x9a,0x9c,0x9f,0x03,0x03,0x13,0x1c,\r
-  0x94,0x94,0x94,0x98,0x9a,0x9d,0x9e,0x9e,0x0f,0x5a,0x5b,0x5b,0x9d,\r
-  0x9f,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0x5a,0x5d,0x1f,0x12,0x9a,0x9a,\r
-  0x13,0x5b,0x5b,0x5b,0x13,0x9d,0x9d,0x9d,0x9d,0x11,0x5b,0x13,0x15,\r
-  0x9a,0x99,0x99,0x1a,0x97,0x97,0x97,0x98,0x13,0x5c,0x5c,0x11,0x97,\r
-  0x94,0x94,0x94,0x94,0x12,0x1e,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x98,0x9c,0x9f,0x03,0x03,0x03,0x06,0x05,0x05,0x03,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x03,0x04,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x04,\r
-  0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,\r
-  0x03,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x05,\r
-  0x06,0x06,0x06,0x04,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,\r
-  0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x04,0xf7,0x04,0xf7,0xf7,0x04,0x04,0x04,0x04,0xf7,0xf7,\r
-  0x02,0x02,0xf7,0xf7,0x04,0x03,0x03,0x03,0x03,0x05,0x03,0xf7,0x94,\r
-  0x98,0x99,0x9e,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x9f,0x97,0x94,0x99,\r
-  0x9d,0x9e,0x9d,0x9c,0x9b,0x9a,0x9a,0x9a,0x99,0x99,0x99,0x99,0x99,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x99,0x97,0x9f,0x9f,0x9c,0x9d,0x9d,0x9c,\r
-  0x9c,0x9d,0x9d,0x9a,0x97,0x9a,0x9d,0x9d,0x9d,0x9d,0x9c,0x9c,0x9a,\r
-  0x97,0x94,0x99,0x97,0x97,0x97,0x9a,0x99,0x9b,0x97,0x9e,0x94,0x98,\r
-  0x9a,0x9a,0x99,0x9c,0x9f,0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x02,\r
-  0x03,0x03,0x03,0x9f,0x9f,0x9d,0x9a,0x99,0x98,0x99,0x99,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x99,0x99,0x99,0x99,0x97,0x97,\r
-  0x94,0x1e,0x5e,0x5e,0x5e,0x0c,0x94,0x94,0x94,0x94,0x97,0x5c,0x5a,\r
-  0x5b,0x5b,0x19,0x94,0x98,0x98,0x97,0x98,0x99,0x9b,0x13,0x5c,0x5c,\r
-  0x12,0x9a,0x9c,0x9f,0x03,0x0f,0x5a,0x17,0x94,0x94,0x94,0x97,0x99,\r
-  0x9b,0x9c,0x9d,0x13,0x5c,0x5c,0x5c,0x19,0x9b,0x9f,0xf7,0xf7,0xf7,\r
-  0xf7,0x06,0x5c,0x5d,0x58,0x13,0x9b,0x99,0x11,0x5b,0x5c,0x5d,0x1a,\r
-  0x97,0x98,0x99,0x9a,0x13,0x13,0x98,0x97,0x97,0x1b,0x12,0x17,0x98,\r
-  0x98,0x97,0x94,0x13,0x5e,0x5e,0x0e,0x94,0x94,0x94,0x94,0x16,0x5e,\r
-  0x19,0x94,0x97,0x9a,0x9e,0x9f,0x9f,0x9f,0x9e,0x9e,0x9b,0x99,0x97,\r
-  0x94,0xf7,0xf7,0xf7,0x02,0x03,0x04,0x04,0x04,0x05,0x05,0x05,0x04,\r
-  0x04,0x04,0x04,0x04,0x04,0x03,0x03,0x03,0x03,0x02,0x02,0x02,0x02,\r
-  0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x02,0x02,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x02,0x04,0x05,0x06,0x06,0x07,0x06,0x03,0xf7,\r
-  0xf7,0xf7,0x02,0x02,0x02,0xf7,0xf7,0xf7,0x02,0x05,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x02,0xf7,\r
-  0x04,0xf7,0x02,0x05,0x04,0x04,0x02,0xf7,0x02,0x02,0x02,0xf7,0x03,\r
-  0x04,0x03,0x03,0x03,0x04,0x04,0x03,0x98,0x97,0x99,0x9a,0x03,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x9f,0x97,0x94,0x98,0x9d,0x9e,0x9d,0x9d,\r
-  0x9b,0x9a,0x9a,0x9a,0x9a,0x99,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x99,0x97,0x9f,0x9f,0x9d,0x9d,0x9d,0x9c,0x9d,0x9d,0x9d,0x99,\r
-  0x97,0x9b,0x9d,0x9d,0x9d,0x9d,0x9c,0x9b,0x9a,0x98,0x94,0x99,0x97,\r
-  0x97,0x98,0x9a,0x9a,0x9b,0x99,0x9e,0x97,0x98,0x9a,0x9a,0x99,0x9d,\r
-  0x9f,0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x9f,\r
-  0x9f,0x9d,0x9a,0x98,0x98,0x99,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9b,0x9b,0x9b,0x9c,0x9b,0x9a,0x99,0x97,0x10,0x5e,0x5e,\r
-  0x5e,0x1b,0x94,0x94,0x94,0x18,0x5b,0x5a,0x5b,0x13,0x99,0x94,0x98,\r
-  0x98,0x97,0x98,0x99,0x9a,0x13,0x5c,0x5c,0x5c,0x13,0x13,0x16,0x18,\r
-  0x58,0x59,0x15,0x94,0x94,0x94,0x94,0x94,0x97,0x97,0x97,0x17,0x5d,\r
-  0x5d,0x5e,0x11,0x97,0x9a,0x03,0xf7,0xf7,0xf7,0x18,0x5d,0x5e,0x5a,\r
-  0x12,0x9d,0x9d,0x5d,0x5d,0x5e,0x7d,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x98,0x99,0x16,0x5c,0x10,0x94,0x94,0x94,0x94,0x94,0x14,0x5e,\r
-  0x5e,0x7d,0x0e,0x0e,0x10,0x11,0x5b,0x5b,0x11,0x9d,0x9d,0x9b,0x9a,\r
-  0x98,0x97,0x94,0x94,0x94,0x97,0x99,0x9a,0x9c,0x04,0x04,0x05,0x05,\r
-  0x05,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,\r
-  0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,\r
-  0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x05,0x05,\r
-  0x06,0x06,0x06,0x06,0x07,0x06,0x04,0xf7,0xf7,0xf7,0xf7,0x02,0x02,\r
-  0xf7,0xf7,0xf7,0xf7,0x02,0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x05,0xf7,0x03,0xf7,0xf7,0x04,0x04,\r
-  0x04,0x04,0xf7,0xf7,0x02,0x03,0x02,0xf7,0x04,0x03,0x03,0x03,0x03,\r
-  0x05,0x04,0x9e,0x9a,0x99,0x99,0x9e,0x01,0x01,0x01,0x01,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x03,0x99,0x94,0x97,0x9c,0x9e,0x9d,0x9d,0x9c,0x9b,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x99,0x98,0x99,0x9f,\r
-  0x9f,0x9d,0x9d,0x9d,0x9c,0x9d,0x9d,0x9d,0x97,0x98,0x9b,0x9d,0x9d,\r
-  0x9d,0x9d,0x9c,0x9b,0x9a,0x98,0x97,0x98,0x97,0x98,0x99,0x9a,0x9b,\r
-  0x9b,0x9c,0x9d,0x97,0x98,0x9a,0x9a,0x99,0x9e,0x03,0x03,0x03,0x02,\r
-  0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x9f,0x9f,0x9d,0x99,0x98,\r
-  0x98,0x99,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x98,0x98,0x98,\r
-  0x99,0x99,0x9a,0x9b,0x9a,0x13,0x5d,0x5e,0x5e,0x14,0x94,0x94,0x94,\r
-  0x12,0x5b,0x5a,0x5b,0x14,0x98,0x94,0x98,0x99,0x94,0x98,0x99,0x9a,\r
-  0x13,0x5c,0x5c,0x5c,0x5c,0x5b,0x5a,0x59,0x58,0x58,0x10,0x99,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x19,0x5e,0x5e,0x5e,0x5e,0x0e,0x16,\r
-  0x99,0x02,0x07,0x19,0x5c,0x5d,0x5b,0x5a,0x12,0x9c,0x97,0x5d,0x5d,\r
-  0x5e,0x0e,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x18,0x7d,0x5e,\r
-  0x16,0x94,0x94,0x94,0x94,0x94,0x13,0x5d,0x5d,0x5d,0x5d,0x5c,0x5c,\r
-  0x5d,0x5d,0x5d,0x17,0x94,0x94,0x94,0x97,0x98,0x9a,0x9b,0x9d,0x9e,\r
-  0x9e,0x9e,0x9e,0x9e,0x04,0x04,0x04,0x03,0x03,0x03,0x04,0x04,0x04,\r
-  0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x03,0x03,0x02,0x02,0x02,0x02,\r
-  0x02,0x02,0x02,0x02,0x03,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x03,0x05,0x05,0x06,0x06,0x06,0x05,0x05,0x06,0x07,0x07,\r
-  0x06,0x04,0x02,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0xf7,0xf7,0xf7,0xf7,\r
-  0x02,0x04,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x04,0xf7,0x05,0xf7,0x02,0x05,0x04,0x04,0x02,0xf7,0x02,\r
-  0x03,0x03,0x02,0x02,0x04,0x03,0x03,0x03,0x04,0x04,0x9f,0x9f,0x9c,\r
-  0x9a,0x9e,0x01,0x02,0x03,0x9f,0x03,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x9a,0x94,\r
-  0x94,0x9a,0x9d,0x9e,0x9d,0x9d,0x9c,0x9b,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x99,0x97,0x9e,0x9f,0x9e,0x9d,0x9d,0x9d,\r
-  0x9c,0x9d,0x9d,0x9c,0x97,0x99,0x9c,0x9d,0x9d,0x9d,0x9d,0x9c,0x9c,\r
-  0x9a,0x98,0x97,0x98,0x98,0x98,0x9a,0x9a,0x9c,0x9a,0x9e,0x9c,0x97,\r
-  0x98,0x9b,0x9a,0x99,0x9e,0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x02,\r
-  0x02,0x03,0x03,0x03,0x9f,0x9e,0x9c,0x99,0x98,0x98,0x99,0x99,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x99,0x99,0x99,0x99,0x98,0x97,0x97,0x98,\r
-  0x17,0x5c,0x5d,0x5e,0x0d,0x94,0x94,0x94,0x5c,0x5b,0x5a,0x5b,0x9a,\r
-  0x97,0x94,0x98,0x99,0x94,0x98,0x99,0x9a,0x13,0x5c,0x5c,0x5c,0x5c,\r
-  0x5c,0x5b,0x59,0x58,0x58,0x0c,0x9f,0x9a,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x19,0x5e,0x5e,0x5d,0x5d,0x5d,0x5e,0x5e,0x5b,0xff,0x59,0x5c,\r
-  0x59,0x5a,0x12,0x9a,0x94,0x94,0x5e,0x5e,0x5e,0x0f,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x12,0x5d,0x5d,0x5d,0x19,0x94,0x94,0x94,0x97,\r
-  0x97,0x13,0x5d,0x5d,0x5d,0x5d,0x5e,0x5e,0x5d,0x5d,0x5d,0x15,0x9a,\r
-  0x9c,0x9d,0x9e,0x9e,0x9e,0x9e,0x9e,0x9d,0x9c,0x9c,0x9c,0x9a,0x03,\r
-  0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,\r
-  0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x02,0xf7,0xf7,0x02,0x04,0x05,0x05,0x06,0x06,\r
-  0x05,0x04,0x04,0x05,0x07,0x07,0x07,0x07,0x07,0x05,0x03,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x02,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0x03,0x05,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0xf7,0x02,\r
-  0x02,0xf7,0x04,0x04,0x04,0x04,0xf7,0x02,0x03,0x03,0x03,0xf7,0x04,\r
-  0x03,0x03,0x04,0x04,0x04,0x9f,0x9f,0x9f,0x9e,0x9d,0x02,0x02,0x9e,\r
-  0x9b,0x9d,0x9f,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x9d,0x97,0x94,0x98,0x9c,0x9e,\r
-  0x9d,0x9d,0x9c,0x9b,0x9b,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x99,0x97,0x9f,0x9f,0x9d,0x9d,0x9d,0x9d,0x9c,0x9d,0x9d,0x9a,\r
-  0x97,0x99,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9c,0x9a,0x97,0x97,0x98,\r
-  0x98,0x99,0x9a,0x9a,0x9c,0x99,0x9f,0x9b,0x98,0x98,0x9b,0x99,0x99,\r
-  0x9f,0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,\r
-  0x9f,0x9e,0x9b,0x99,0x98,0x98,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x94,0x94,0x97,0x97,0x98,0x99,0x99,0x97,0x94,0x11,0x5c,0x5d,0x5d,\r
-  0x1c,0x94,0x16,0x5c,0x5b,0x5a,0x13,0x99,0x94,0x94,0x98,0x99,0x94,\r
-  0x98,0x99,0x9a,0x13,0x5c,0x5c,0x5c,0x12,0x12,0x13,0x15,0x59,0x58,\r
-  0x0c,0x02,0x02,0x9f,0x9e,0x9b,0x9a,0x9a,0x9a,0x12,0x5b,0x5a,0x5a,\r
-  0x5a,0x5b,0x5d,0x5e,0x5d,0x1f,0x59,0x58,0x59,0x13,0x99,0x97,0x94,\r
-  0x94,0x5e,0x5d,0x5c,0x5c,0x98,0x97,0x98,0x99,0x99,0x16,0x13,0x5c,\r
-  0x5c,0x5d,0x5d,0x97,0x97,0x94,0x94,0x94,0x94,0x13,0x5d,0x5d,0x5d,\r
-  0x12,0x13,0x13,0x15,0x5a,0x5a,0x10,0x9e,0x9e,0x9e,0x9d,0x9d,0x9c,\r
-  0x9c,0x9b,0x9a,0x9a,0x9a,0x9a,0x9a,0x03,0x03,0x03,0x04,0x04,0x04,\r
-  0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x03,0x02,0x02,0x02,0x02,0x02,\r
-  0x02,0x03,0x03,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0xf7,\r
-  0x03,0x04,0x05,0x06,0x06,0x05,0x04,0x04,0x04,0x06,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x06,0x05,0x02,0xf7,0xf7,0xf7,0xf7,0x02,0x03,\r
-  0x03,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0x03,0x05,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x04,0xf7,0x05,0xf7,0x02,0x04,0x04,\r
-  0x04,0xf7,0xf7,0x02,0x03,0x03,0x02,0x02,0x04,0x03,0x03,0x04,0x04,\r
-  0x9d,0x9f,0x9f,0x9f,0x9e,0x03,0x02,0x9d,0x98,0x97,0x99,0x9d,0x02,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x9f,0x98,0x94,0x94,0x9a,0x9d,0x9d,0x9d,0x9d,0x9c,\r
-  0x9b,0x9b,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x99,0x97,0x99,0x9f,\r
-  0x9f,0x9d,0x9d,0x9d,0x9c,0x9d,0x9d,0x9d,0x99,0x97,0x9a,0x9d,0x9d,\r
-  0x9d,0x9d,0x9d,0x9d,0x9c,0x9a,0x97,0x97,0x99,0x99,0x99,0x9b,0x9a,\r
-  0x9c,0x98,0x9f,0x99,0x98,0x99,0x9b,0x99,0x99,0x9f,0x03,0x03,0x02,\r
-  0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x9f,0x9e,0x9a,0x99,\r
-  0x98,0x98,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x97,0x98,0x14,0x5d,0x5d,0x5d,0x15,0x94,0x12,0x5c,0x5b,\r
-  0x5b,0x16,0x98,0x94,0x94,0x98,0x99,0x94,0x98,0x99,0x9a,0x13,0x5c,\r
-  0x5c,0x11,0x99,0x99,0x99,0x9a,0x12,0x59,0x0e,0x03,0x02,0x02,0x02,\r
-  0x02,0x02,0x02,0x02,0x0c,0x58,0x58,0x58,0x1a,0x59,0x5b,0x5d,0x5d,\r
-  0x59,0x58,0x59,0x12,0x9c,0x94,0x94,0x9e,0x01,0x0f,0x5c,0x5c,0x5c,\r
-  0x98,0x97,0x98,0x98,0x99,0x14,0x13,0x14,0x5c,0x5c,0x5c,0x99,0x99,\r
-  0x99,0x99,0x9a,0x9b,0x12,0x5b,0x5b,0x15,0x9e,0x9e,0x9e,0x9d,0x12,\r
-  0x5b,0x12,0x9c,0x9c,0x9c,0x9c,0x9c,0x9b,0x9b,0x9b,0x9b,0x9b,0x9a,\r
-  0x9a,0x9a,0x03,0x03,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x04,0x03,\r
-  0x03,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x02,0x02,0x02,0x03,0x05,0x05,0x06,0x05,0x03,0x03,\r
-  0x04,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x06,0x04,0x02,0xf7,0xf7,0xf7,0x02,0x03,0x04,0x04,0x04,0x03,0x03,\r
-  0xf7,0xf7,0xf7,0xf7,0x03,0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x02,0xf7,0x02,0xf7,0x04,0x04,0x04,0x04,0xf7,0x02,0x03,\r
-  0x03,0x03,0x02,0x03,0x03,0x03,0x03,0x04,0x9d,0x9e,0x9f,0x03,0x03,\r
-  0x03,0x01,0x9e,0x97,0x94,0x94,0x97,0x9a,0x9f,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,\r
-  0x9a,0x94,0x94,0x98,0x9c,0x9d,0x9d,0x9d,0x9d,0x9c,0x9c,0x9b,0x9b,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x99,0x94,0x9e,0x9f,0x9f,0x9d,0x9d,0x9d,\r
-  0x9c,0x9d,0x9d,0x9d,0x97,0x98,0x9c,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,\r
-  0x9c,0x9a,0x97,0x97,0x99,0x99,0x99,0x9b,0x9a,0x9c,0x97,0x9f,0x98,\r
-  0x98,0x99,0x9b,0x99,0x9a,0x9f,0x03,0x03,0x02,0x02,0x02,0x02,0x02,\r
-  0x02,0x02,0x03,0x03,0x03,0x9f,0x9e,0x9a,0x99,0x98,0x98,0x99,0x99,\r
-  0x99,0x9a,0x9a,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x1b,\r
-  0x5d,0x5d,0x5d,0x10,0x94,0x5d,0x5c,0x5c,0x12,0x98,0x97,0x94,0x94,\r
-  0x98,0x9a,0x97,0x98,0x99,0x9a,0x12,0x5c,0x5d,0x11,0x99,0x99,0x99,\r
-  0x99,0x9a,0x12,0x11,0x0e,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,\r
-  0x59,0x59,0x59,0x9f,0x10,0x12,0x12,0x5d,0x5a,0x59,0x5c,0x99,0x97,\r
-  0x94,0x9e,0x9f,0x9a,0x11,0x5c,0x5c,0x5d,0x14,0x97,0x98,0x98,0x98,\r
-  0x99,0x9a,0x13,0x5b,0x5b,0x5b,0x9b,0x9c,0x9c,0x9d,0x9d,0x9d,0x13,\r
-  0x5b,0x5b,0x13,0x9b,0x9b,0x9b,0x9c,0x9b,0x13,0x12,0x13,0x9c,0x9c,\r
-  0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9c,0x9d,0x9d,0x04,0x04,0x04,\r
-  0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x03,0x02,0x03,\r
-  0x05,0x06,0x06,0x04,0x03,0x03,0x05,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x04,0xf7,0xf7,\r
-  0xf7,0x02,0x03,0x04,0x04,0x04,0x04,0x04,0x04,0x03,0x02,0xf7,0xf7,\r
-  0xf7,0x03,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x05,0xf7,0x05,\r
-  0xf7,0xf7,0x04,0x04,0x04,0xf7,0xf7,0x03,0x03,0x03,0x03,0x02,0x04,\r
-  0x03,0x02,0x04,0x9d,0x9d,0x9e,0x9f,0x03,0x03,0x02,0x9f,0x97,0x94,\r
-  0x94,0x94,0x94,0x98,0x9f,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x9f,0x98,0x94,0x94,\r
-  0x99,0x9d,0x9d,0x9d,0x9d,0x9c,0x9c,0x9c,0x9b,0x9b,0x9a,0x9a,0x9a,\r
-  0x9a,0x98,0x97,0x9f,0x9f,0x9e,0x9e,0x9d,0x9d,0x9c,0x9d,0x9d,0x9c,\r
-  0x97,0x99,0x9c,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9c,0x9a,0x97,0x97,\r
-  0x99,0x99,0x99,0x9b,0x9a,0x9c,0x97,0x9f,0x97,0x98,0x99,0x9b,0x99,\r
-  0x9a,0x9f,0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,\r
-  0x03,0x9f,0x9e,0x9a,0x99,0x98,0x98,0x99,0x99,0x99,0x99,0x9a,0x9a,\r
-  0x99,0x97,0x94,0x94,0x94,0x94,0x94,0x94,0x10,0x5d,0x5d,0x5d,0x13,\r
-  0x5c,0x5c,0x5d,0x14,0x97,0x94,0x94,0x94,0x98,0x9a,0x97,0x98,0x99,\r
-  0x9a,0x13,0x5c,0x5d,0x11,0x98,0x98,0x98,0x99,0x99,0x19,0x15,0x15,\r
-  0x13,0x9d,0x9e,0x9e,0x9f,0x9f,0x9f,0x0f,0x5a,0x5a,0x5a,0x9d,0x9c,\r
-  0x9b,0x99,0x13,0x5b,0x5b,0x5d,0x15,0x94,0x94,0x94,0x97,0x9a,0x13,\r
-  0x5b,0x5c,0x5d,0x5c,0x97,0x97,0x98,0x98,0x99,0x99,0x14,0x5c,0x5b,\r
-  0x5b,0x15,0x9a,0x9a,0x9a,0x9a,0x9a,0x12,0x5c,0x5c,0x12,0x9a,0x9a,\r
-  0x9b,0x9c,0x9c,0x12,0x12,0x11,0x12,0x9e,0x9e,0x9e,0x9e,0x9f,0x9f,\r
-  0x9f,0x9f,0x9e,0x9e,0x9e,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,\r
-  0x04,0x04,0x04,0x04,0x04,0x04,0x03,0x03,0x02,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x03,0x03,0x03,0x05,0x06,0x06,0x04,0x02,0x03,0x05,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x06,0x03,0xf7,0xf7,0x02,0x03,0x04,0x04,\r
-  0x04,0x04,0x04,0x04,0x05,0x05,0x04,0x02,0xf7,0xf7,0xf7,0x05,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x03,0xf7,0x02,0xf7,0x03,0x04,0x04,\r
-  0x03,0xf7,0x02,0x03,0x03,0x03,0x02,0x02,0x04,0x03,0x03,0x9c,0x9d,\r
-  0x9d,0x9f,0x9f,0x03,0x02,0x02,0x98,0x94,0x97,0x97,0x94,0x94,0x97,\r
-  0x9e,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x9d,0x94,0x94,0x97,0x9a,0x9d,0x9d,\r
-  0x9d,0x9d,0x9c,0x9c,0x9b,0x9b,0x9a,0x9a,0x9a,0x99,0x97,0x9a,0x9f,\r
-  0x9f,0x9d,0x9d,0x9d,0x9c,0x9c,0x9d,0x9d,0x9a,0x97,0x9a,0x9d,0x9d,\r
-  0x9d,0x9d,0x9d,0x9d,0x9d,0x9c,0x9a,0x97,0x98,0x99,0x99,0x99,0x9a,\r
-  0x9a,0x9b,0x98,0x9f,0x97,0x98,0x99,0x9b,0x99,0x9b,0x9f,0x03,0x03,\r
-  0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x9f,0x9f,0x9d,0x9a,\r
-  0x99,0x98,0x98,0x99,0x99,0x99,0x9d,0x9d,0x9d,0x9d,0x9c,0x99,0x94,\r
-  0x94,0x94,0x94,0x13,0x5d,0x5d,0x5d,0x5d,0x5c,0x5c,0x5d,0x1d,0x94,\r
-  0x94,0x94,0x94,0x98,0x9a,0x97,0x98,0x99,0x9a,0x13,0x5c,0x5d,0x11,\r
-  0x98,0x98,0x98,0x98,0x98,0x98,0x99,0x14,0x5c,0x16,0x9a,0x9a,0x9a,\r
-  0x9b,0x9c,0x12,0x5b,0x5b,0x5b,0x9c,0x9a,0x99,0x97,0x19,0x5b,0x5d,\r
-  0x5d,0x0e,0x98,0x9a,0x9b,0x9c,0x9e,0x9e,0x5c,0x5c,0x5d,0x5d,0x12,\r
-  0x97,0x97,0x98,0x98,0x98,0x11,0x5c,0x5c,0x5c,0x14,0x99,0x99,0x99,\r
-  0x99,0x99,0x12,0x5c,0x5c,0x13,0x9b,0x9c,0x9d,0x9d,0x9e,0x9e,0x9e,\r
-  0x11,0x5a,0x10,0x9d,0x9d,0x9c,0x9b,0x9a,0x99,0x99,0x98,0x97,0x98,\r
-  0xf7,0xf7,0xf7,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x02,\r
-  0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x03,0x03,0x03,0x04,\r
-  0x06,0x06,0x03,0x02,0x03,0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x06,0x03,0xf7,0xf7,0x03,0x04,0x04,0x04,0x04,0x04,0x04,0x04,\r
-  0x04,0x05,0x05,0x04,0x02,0xf7,0xf7,0x05,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x06,0xf7,0x05,0xf7,0xf7,0x04,0x04,0x04,0xf7,0xf7,0x03,0x03,\r
-  0x03,0x03,0x02,0x04,0x03,0x02,0x9c,0x9c,0x9d,0x9e,0x9f,0x03,0x03,\r
-  0x02,0x9c,0x94,0x97,0x99,0x98,0x94,0x94,0x94,0x9d,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x01,0x9f,0x9a,0x94,0x94,0x97,0x99,0x9c,0x9d,0x9d,0x9c,0x9c,\r
-  0x9c,0x9b,0x9b,0x9a,0x9a,0x98,0x97,0x9f,0x9f,0x9f,0x9d,0x9d,0x9d,\r
-  0x9c,0x9d,0x9d,0x9d,0x99,0x98,0x9b,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,\r
-  0x9d,0x9c,0x9a,0x97,0x98,0x99,0x99,0x99,0x9a,0x9b,0x9b,0x99,0x9e,\r
-  0x94,0x98,0x9a,0x9a,0x98,0x9d,0x9f,0x03,0x03,0x02,0x02,0x02,0x02,\r
-  0x02,0x02,0x03,0x03,0x03,0x9f,0x9f,0x9d,0x9a,0x98,0x98,0x98,0x99,\r
-  0x99,0x9a,0x9a,0x9b,0x9b,0x9c,0x9d,0x9c,0x98,0x94,0x94,0x1b,0x5e,\r
-  0x5d,0x5d,0x5d,0x5c,0x5c,0x10,0x98,0x97,0x94,0x94,0x94,0x98,0x9a,\r
-  0x94,0x98,0x99,0x9a,0x5c,0x5c,0x5d,0x5d,0x13,0x13,0x13,0x13,0x13,\r
-  0x13,0x13,0x5c,0x5d,0x5c,0x19,0x99,0x99,0x9a,0x9a,0x13,0x5b,0x5b,\r
-  0x5b,0x9a,0x99,0x97,0x97,0x9a,0x12,0x5d,0x5d,0x5c,0x14,0x99,0x98,\r
-  0x99,0x9c,0x9a,0x16,0x5d,0x5d,0x5d,0x5d,0x5d,0x14,0x17,0x16,0x11,\r
-  0x5d,0x5d,0x5d,0x5c,0x5c,0x16,0x99,0x9a,0x9a,0x9a,0x5c,0x5b,0x5b,\r
-  0x5b,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x14,0x5d,0x5d,0x1d,0x94,\r
-  0x97,0x99,0x9a,0x9b,0x9b,0x9a,0x98,0x97,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x03,0xf7,0xf7,\r
-  0xf7,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x04,0x02,0x02,0x04,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x02,0xf7,\r
-  0x02,0x03,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x04,0x05,0x05,0x05,\r
-  0x03,0xf7,0xf7,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x03,0xf7,0x02,\r
-  0xf7,0x03,0x04,0x03,0x03,0xf7,0x02,0x03,0x03,0x03,0x03,0x02,0x04,\r
-  0x03,0x99,0x9c,0x9d,0x9d,0x9e,0x9f,0x03,0x02,0x03,0x97,0x97,0x9a,\r
-  0x9b,0x9a,0x97,0x94,0x94,0x9c,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x9e,\r
-  0x99,0x94,0x94,0x97,0x99,0x9b,0x9c,0x9c,0x9c,0x9c,0x9b,0x9a,0x9a,\r
-  0x99,0x97,0x99,0x03,0x9f,0x2a,0x2a,0x2b,0x2a,0x2c,0x2b,0x2b,0x2b,\r
-  0x97,0x99,0x9c,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9c,0x99,0x97,\r
-  0x98,0x99,0x99,0x9a,0x9a,0x9b,0x9b,0x9c,0x9e,0x97,0x98,0x9a,0x9a,\r
-  0x98,0x9d,0x9f,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,\r
-  0x03,0x9f,0x9f,0x9c,0x99,0x98,0x98,0x98,0x98,0x98,0x98,0x97,0x98,\r
-  0x99,0x9a,0x9c,0x9d,0x98,0x94,0x94,0x5e,0x5e,0x5d,0x5d,0x5c,0x5c,\r
-  0x12,0x9e,0x9c,0x98,0x94,0x94,0x98,0x9a,0x94,0x98,0x99,0x16,0x5c,\r
-  0x5c,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,\r
-  0x12,0x98,0x99,0x99,0x9a,0x12,0x5b,0x5b,0x5c,0x18,0x97,0x94,0x99,\r
-  0x98,0x1a,0x5c,0x5d,0x5d,0x5d,0x1a,0x98,0x9c,0x9d,0x9b,0x9a,0x12,\r
-  0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5c,0x5c,0x5c,0x5c,0x5c,0x13,\r
-  0x14,0x9b,0x9c,0x9d,0x10,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5c,0x5d,\r
-  0x5d,0x5d,0x5d,0x5b,0x5a,0x59,0x15,0x03,0x02,0x01,0x01,0x01,0x02,\r
-  0x9f,0x9d,0x9a,0x02,0x02,0x02,0x02,0x02,0x03,0x04,0x05,0x06,0x07,\r
-  0x06,0x06,0x05,0x05,0x03,0xf7,0xf7,0xf7,0x03,0x04,0x03,0x04,0x05,\r
-  0x06,0x05,0x02,0x02,0x03,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x05,0x06,0x07,0x06,0x02,0xf7,0x02,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x04,0x04,0x05,0x05,0x05,0x02,0xf7,0x02,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x06,0xf7,0x04,0xf7,0xf7,0x04,0x03,0x04,\r
-  0xf7,0xf7,0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x99,0x9c,0x9d,0x9d,\r
-  0x9d,0x9e,0x9f,0x03,0x02,0x9a,0x94,0x9a,0x9c,0x9c,0x9b,0x99,0x94,\r
-  0x94,0x9a,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x9e,0x99,0x94,0x94,\r
-  0x94,0x97,0x99,0x9a,0x9b,0x9b,0x9a,0x9a,0x99,0x97,0x27,0x2a,0x27,\r
-  0x28,0x2a,0x2a,0x2b,0x2b,0x2c,0x2a,0x2b,0x2c,0xf6,0x2a,0x9d,0x9d,\r
-  0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9c,0x99,0x97,0x99,0x99,0x99,0x9a,\r
-  0x9a,0x9c,0x9b,0x9e,0x9e,0x97,0x99,0x9a,0x9a,0x99,0x9e,0x03,0x03,\r
-  0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x9f,0x9e,0x9c,\r
-  0x9a,0x99,0x98,0x98,0x94,0x94,0x94,0x94,0x97,0x97,0x99,0x9b,0x9d,\r
-  0x97,0x14,0x5e,0x5e,0x5d,0x5d,0x5c,0x5d,0x5d,0x09,0x9f,0x9a,0x94,\r
-  0x97,0x98,0x9b,0x94,0x98,0x17,0x13,0x5c,0x5c,0x5d,0x5d,0x5d,0x5d,\r
-  0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x13,0x99,0x99,0x16,\r
-  0x5c,0x5c,0x5c,0x5d,0x0f,0x19,0x98,0x97,0x98,0x98,0x12,0x5d,0x5c,\r
-  0x5b,0x13,0x9d,0x9e,0x9e,0x9d,0x9c,0x9b,0x13,0x5c,0x5c,0x5c,0x5c,\r
-  0x5c,0x5c,0x5c,0x5b,0x5b,0x5b,0x12,0x9d,0x9e,0x9e,0x9e,0x0f,0x15,\r
-  0x5b,0x5b,0x5d,0x5d,0x5d,0x5d,0x5b,0x59,0x59,0x5b,0x5d,0x5d,0x5e,\r
-  0x5e,0x5e,0x13,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x02,0x04,0x06,0x07,0x07,0x06,0x03,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x04,0x04,0x04,0x05,0x06,0x03,0x02,0x02,0x05,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x03,0x02,0x05,\r
-  0x06,0x06,0x05,0x02,0xf7,0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x04,0x04,0x05,0x06,0x05,0xf7,0xf7,0x05,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x03,0xf7,0x02,0xf7,0x04,0x03,0x03,0x03,0xf7,0x03,0x03,0x03,\r
-  0x03,0x04,0x02,0x04,0x9b,0x98,0x9d,0x9d,0x9c,0x9e,0x9f,0x03,0x03,\r
-  0x03,0x94,0x99,0x9c,0x9d,0x9d,0x9c,0x9a,0x94,0x94,0x9a,0x02,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x9f,0x9a,0x97,0x94,0x94,0x94,0x98,\r
-  0x99,0x99,0x99,0x2f,0x2f,0x05,0x2e,0x27,0x27,0x29,0x2a,0x2a,0x2b,\r
-  0x2c,0x2b,0x2b,0x2b,0x2f,0x2f,0x2d,0x2a,0x9d,0x9d,0x9d,0x9d,0x9d,\r
-  0x9d,0x9d,0x9b,0x99,0x97,0x99,0x99,0x99,0x9a,0x9b,0x9c,0x9a,0x9f,\r
-  0x9d,0x97,0x99,0x9b,0x9a,0x99,0x9e,0x03,0x03,0x02,0x02,0x02,0x02,\r
-  0x02,0x02,0x03,0x03,0x03,0x03,0x9f,0x9e,0x9c,0x9a,0x99,0x99,0x94,\r
-  0x94,0x94,0x94,0x97,0x97,0x98,0x99,0x13,0x13,0x5d,0x5e,0x5e,0x5e,\r
-  0x5e,0x5d,0x5d,0x5d,0x1f,0x10,0x9a,0x94,0x97,0x97,0x9b,0x94,0x16,\r
-  0x5c,0x5b,0x5c,0x5c,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,\r
-  0x5d,0x5d,0x5d,0x5d,0x5d,0x14,0x14,0x5c,0x5c,0x5c,0x5d,0x5d,0x5d,\r
-  0x5d,0x13,0x98,0x97,0x97,0x15,0x5b,0x5b,0x5b,0x5a,0x5a,0x13,0x9e,\r
-  0x9e,0x9d,0x9d,0x9c,0x12,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x14,\r
-  0x10,0x9d,0x9d,0x9c,0x9b,0x15,0x5d,0x5d,0x5d,0x5b,0x59,0x59,0x59,\r
-  0x5c,0x5d,0x5e,0x5e,0x5e,0x5d,0x5d,0x5c,0x5c,0x5c,0x5c,0x14,0x97,\r
-  0x97,0x94,0x94,0x94,0x94,0x94,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x03,0x03,0xf7,0xf7,0xf7,0xf7,0x02,0x03,0x04,0x04,\r
-  0x05,0x05,0x02,0x02,0x03,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x06,0x02,0x02,0x03,0x06,0x05,0x05,0x05,0x04,0xf7,\r
-  0xf7,0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x05,0x06,\r
-  0x03,0xf7,0x02,0x07,0x07,0x07,0x06,0x07,0x07,0x05,0xf7,0x04,0xf7,\r
-  0x02,0x04,0x03,0x03,0xf7,0x02,0x03,0x03,0x03,0x03,0x03,0x02,0x9d,\r
-  0x9a,0x99,0x9d,0x9d,0x9d,0x9e,0x9f,0x03,0x02,0x9b,0x97,0x9b,0x9d,\r
-  0x9d,0x9e,0x9e,0x9b,0x94,0x94,0x99,0x03,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x03,0x9c,0x99,0x94,0x94,0x94,0x94,0x05,0x2f,0x02,\r
-  0x01,0x2f,0x28,0x27,0x27,0x29,0x2a,0x2b,0x2b,0x2c,0x2b,0x2b,0x2c,\r
-  0xf6,0x2f,0x2c,0x2b,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9c,0x98,\r
-  0x97,0x99,0x99,0x9a,0x9b,0x9b,0x9d,0x99,0x03,0x9b,0x98,0x99,0x9b,\r
-  0x99,0x99,0x9e,0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,\r
-  0x03,0x03,0x9f,0x9e,0x9d,0x9b,0x9a,0x94,0x94,0x94,0x94,0x97,0x98,\r
-  0x99,0x99,0x9a,0x9d,0x99,0x94,0x94,0x94,0x94,0x94,0x97,0x97,0x02,\r
-  0x9e,0x98,0x94,0x97,0x97,0x9c,0x94,0x99,0x99,0x9a,0x9a,0x99,0x98,\r
-  0x98,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x98,\r
-  0x99,0x9a,0x9a,0x9a,0x99,0x97,0x94,0x99,0x97,0x99,0x98,0x97,0x99,\r
-  0x9a,0x14,0x5b,0x5a,0x5a,0x5a,0x0f,0x9e,0x9e,0x9d,0x9d,0x9d,0x9d,\r
-  0x12,0x12,0x13,0x14,0x14,0x13,0x12,0x9c,0x9a,0x98,0x94,0x97,0x9a,\r
-  0x9e,0x9f,0x9e,0x9a,0x97,0x94,0x94,0x94,0x94,0x97,0x99,0x99,0x9a,\r
-  0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9d,0x9b,0x99,0x97,\r
-  0x98,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x02,0x03,0x04,0x04,0x05,0x05,0x02,0x02,0x03,0x06,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x02,0x02,\r
-  0x02,0x06,0x05,0x03,0x02,0x04,0x04,0x03,0xf7,0xf7,0x02,0x02,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x04,0x05,0x06,0x05,0xf7,0xf7,0x06,0x07,\r
-  0x07,0x06,0x06,0x07,0x07,0x02,0x03,0xf7,0xf7,0x04,0x03,0x03,0x02,\r
-  0xf7,0x03,0x03,0x04,0x03,0x03,0x03,0x9a,0x9c,0x99,0x9c,0x9d,0x9d,\r
-  0x9d,0x9f,0x9f,0x03,0x02,0x94,0x99,0x9c,0x9d,0x9d,0x9e,0x9e,0x9c,\r
-  0x97,0x94,0x98,0x03,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,\r
-  0x03,0x9d,0x99,0x97,0x27,0x05,0x01,0x01,0x01,0x2f,0x2a,0x26,0x27,\r
-  0x27,0x2a,0x2a,0x2b,0x2c,0x2b,0x2a,0x2b,0x2e,0xf6,0x2e,0x2c,0x2a,\r
-  0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9b,0x98,0x97,0x9a,0x9a,0x9a,\r
-  0x9b,0x9b,0x9c,0x99,0x03,0x99,0x98,0x99,0x9b,0x99,0x99,0x9f,0x03,\r
-  0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x9f,0x9f,\r
-  0x9e,0x9d,0x94,0x94,0x97,0x97,0x98,0x99,0x9a,0x9a,0x9b,0x9c,0x9c,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x9c,0x9c,0x94,0x94,0x97,0x94,\r
-  0x9c,0x97,0x99,0x99,0x9a,0x9a,0x99,0x98,0x98,0x97,0x97,0x97,0x97,\r
-  0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x98,0x99,0x9a,0x9a,0x99,0x98,\r
-  0x94,0x99,0x97,0x98,0x99,0x97,0x99,0x9a,0x9b,0x12,0x5a,0x5a,0x5a,\r
-  0x10,0x9e,0x9e,0x9e,0x9e,0x9e,0x9d,0x9c,0x9b,0x9b,0x9c,0x9c,0x9c,\r
-  0x99,0x94,0x94,0x9a,0x9e,0x9e,0x99,0x94,0x94,0x94,0x94,0x94,0x97,\r
-  0x99,0x9a,0x9a,0x9b,0x9c,0x9d,0x9d,0x9e,0x9e,0x9f,0x9e,0x9e,0x9e,\r
-  0x9f,0x9f,0x9d,0x9c,0x9c,0x9c,0x9a,0x97,0x97,0xf7,0xf7,0xf7,0x02,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0x04,\r
-  0x04,0x05,0x05,0x02,0x02,0x03,0x06,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x04,0x02,0xf7,0x05,0x05,0x04,0x04,0x03,\r
-  0xf7,0xf7,0x03,0x03,0xf7,0xf7,0x02,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x05,0x06,0x06,0xf7,0xf7,0x05,0x07,0x07,0x06,0x04,0x07,0x07,\r
-  0x03,0xf7,0x02,0xf7,0x03,0x03,0x02,0x03,0xf7,0x03,0x03,0x04,0x03,\r
-  0x03,0x04,0x9a,0x9c,0x9b,0x97,0x9d,0x9d,0x9c,0x9e,0x9f,0x9f,0x03,\r
-  0x9c,0x97,0x9b,0x9c,0x9d,0x9d,0x9e,0x9e,0x9d,0x97,0x94,0x98,0x9f,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x03,0x27,0x28,\r
-  0x2f,0xf6,0x01,0xf6,0x2f,0x2a,0x25,0x26,0x27,0x28,0x2a,0x2a,0x2b,\r
-  0x2c,0x2b,0x2b,0x2b,0xf6,0x2f,0x2c,0x2b,0x2a,0x9d,0x9d,0x9c,0x9d,\r
-  0x9d,0x9d,0x9d,0x9b,0x97,0x97,0x9a,0x9a,0x9a,0x9b,0x9c,0x9c,0x98,\r
-  0x9f,0x98,0x98,0x99,0x9b,0x99,0x99,0x9f,0x03,0x03,0x02,0x02,0x02,\r
-  0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9f,0x97,0x97,0x98,\r
-  0x99,0x9a,0x9a,0x9b,0x9c,0x9c,0x9d,0x9d,0x99,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x9a,0x94,0x94,0x98,0x94,0x9d,0x97,0x99,0x9a,0x9a,\r
-  0x9a,0x99,0x98,0x98,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,\r
-  0x97,0x98,0x99,0x9a,0x9a,0x99,0x98,0x97,0x99,0x98,0x97,0x99,0x97,\r
-  0x98,0x99,0x9a,0x9c,0x0f,0x5a,0x5a,0x14,0x9e,0x9e,0x9e,0x9e,0x9d,\r
-  0x9a,0x9a,0x9a,0x9c,0x9b,0x98,0x94,0x97,0x9d,0x9d,0x97,0x94,0x94,\r
-  0x94,0x97,0x98,0x99,0x99,0x9a,0x9b,0x9c,0x9c,0x9c,0x9d,0x9e,0x9f,\r
-  0x9e,0x99,0x94,0x94,0x94,0x94,0x97,0x99,0x9f,0x03,0x9c,0x9a,0x9a,\r
-  0x9a,0x99,0x99,0x9a,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x02,0x03,0x04,0x04,0x05,0x05,0x02,0x02,0x02,\r
-  0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x02,0xf7,0xf7,0x05,0x04,0x04,0x03,0x03,0x02,0x02,0xf7,0x03,0x02,\r
-  0xf7,0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x06,0x06,0xf7,\r
-  0xf7,0x04,0x07,0x07,0x06,0x04,0x06,0x07,0x04,0xf7,0x04,0xf7,0x02,\r
-  0x04,0x02,0x03,0xf7,0x02,0x03,0x04,0x04,0x03,0x03,0x9c,0x99,0x9d,\r
-  0x9a,0x99,0x9d,0x9d,0x9d,0x9e,0x9f,0x03,0x02,0x97,0x9a,0x9c,0x9c,\r
-  0x9d,0x9e,0x9e,0x9e,0x9d,0x98,0x94,0x97,0x9f,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x27,0x23,0x26,0x28,0x2c,0x2c,0x2d,0x2b,\r
-  0x27,0x25,0x26,0x27,0x27,0x29,0x2a,0x2b,0x2c,0x2b,0x2a,0x2b,0x2e,\r
-  0xf6,0x2e,0x2c,0x2b,0x2a,0x9d,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9a,\r
-  0x97,0x97,0x9a,0x9a,0x9a,0x9b,0x9c,0x9c,0x99,0x9f,0x97,0x98,0x99,\r
-  0x9b,0x99,0x9a,0x9f,0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x03,\r
-  0x03,0x03,0x03,0x9f,0x9f,0x97,0x97,0x99,0x99,0x9a,0x9a,0x9b,0x9c,\r
-  0x9c,0x9c,0x9d,0x9c,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x99,0x94,0x9e,0x98,0x99,0x9a,0x9a,0x9a,0x99,0x99,0x98,0x97,\r
-  0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x98,0x99,0x9a,0x9a,\r
-  0x99,0x97,0x97,0x99,0x94,0x99,0x99,0x97,0x97,0x98,0x9d,0x9e,0x9e,\r
-  0x13,0x5a,0x12,0x9d,0x9d,0x9d,0x9a,0x9a,0x9b,0x9c,0x99,0x94,0x97,\r
-  0x9c,0x97,0x94,0x94,0x94,0x97,0x98,0x99,0x9b,0x9d,0x9d,0x9d,0x9d,\r
-  0x9e,0x9e,0x9f,0x9e,0x9c,0x98,0x94,0x94,0x94,0x97,0x97,0x97,0x97,\r
-  0x97,0x97,0x97,0x9d,0x03,0x99,0x99,0x9a,0x9a,0x9a,0x99,0x9b,0x04,\r
-  0x04,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,\r
-  0x03,0x04,0x04,0x05,0x03,0xf7,0x02,0x05,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x05,0xf7,0xf7,0x02,0x05,0x04,\r
-  0x03,0x02,0xf7,0xf7,0xf7,0xf7,0x02,0x03,0xf7,0xf7,0x02,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x04,0x06,0x06,0xf7,0xf7,0x04,0x07,0x07,0x05,\r
-  0x04,0x04,0x07,0x05,0xf7,0x04,0xf7,0xf7,0x04,0x02,0x03,0xf7,0x02,\r
-  0x03,0x04,0x04,0x04,0x03,0x9b,0x9c,0x9a,0x9d,0x99,0x9c,0x9d,0x9d,\r
-  0x9d,0x9e,0x9f,0x03,0x9f,0x97,0x9b,0x9c,0x9c,0x9d,0x9d,0x9e,0x9e,\r
-  0x9e,0x99,0x94,0x97,0x9f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x23,0x23,0x23,0x23,0x25,0x27,0x27,0x27,0x25,0x25,0x27,0x27,0x27,\r
-  0x27,0x2a,0x2a,0x2c,0x2c,0x2a,0x2b,0x2c,0xf6,0x2f,0x2c,0x2b,0x2a,\r
-  0x9d,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9a,0x97,0x98,0x9a,0x9a,\r
-  0x9a,0x9b,0x9c,0x9c,0x99,0x9f,0x97,0x98,0x99,0x9b,0x99,0x9a,0x9f,\r
-  0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x98,0x98,0x99,0x9a,0x9a,0x9b,0x9b,0x9b,0x9b,0x9b,0x9c,0x9d,0x99,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x97,0x9b,0x97,0x9f,0x9b,\r
-  0x98,0x9a,0x9a,0x9a,0x9a,0x99,0x98,0x97,0x97,0x97,0x97,0x97,0x97,\r
-  0x97,0x97,0x97,0x97,0x99,0x9a,0x9a,0x9a,0x98,0x94,0x9a,0x97,0x94,\r
-  0x99,0x99,0x98,0x97,0x9c,0x9e,0x9c,0x9c,0x13,0x5b,0x9c,0x9c,0x9c,\r
-  0x9a,0x9b,0x9b,0x98,0x94,0x9a,0x97,0x94,0x94,0x97,0x98,0x9a,0x9c,\r
-  0x9d,0x9d,0x9e,0x9f,0x9f,0x9d,0x99,0x94,0x94,0x94,0x94,0x94,0x97,\r
-  0x97,0x97,0x97,0x97,0x97,0x99,0x9a,0x9a,0x98,0x94,0x94,0x9d,0x9f,\r
-  0x97,0x98,0x9a,0x9a,0x9a,0x9b,0x9d,0x04,0x04,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x04,0x04,0x05,0x04,0xf7,\r
-  0x02,0x03,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x03,0xf7,0xf7,0x04,0x04,0x04,0x03,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x03,0xf7,0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x05,\r
-  0x06,0x06,0xf7,0xf7,0x04,0x07,0x07,0x05,0x03,0x04,0x07,0x06,0xf7,\r
-  0x04,0xf7,0xf7,0x04,0x03,0x03,0x02,0xf7,0x03,0x03,0x04,0x04,0x04,\r
-  0x9a,0x9c,0x9a,0x9c,0x9c,0x97,0x9d,0x9d,0x9c,0x9e,0x9f,0x9f,0x03,\r
-  0x99,0x99,0x9b,0x9c,0x9c,0x9d,0x9d,0x9e,0x9e,0x9e,0x99,0x94,0x97,\r
-  0x9f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x27,0x23,0x23,0x23,0x23,0x23,\r
-  0x23,0x23,0x23,0x25,0x27,0x2c,0x2c,0x2a,0x27,0x29,0x2a,0x2b,0x2c,\r
-  0x2b,0x2b,0x2b,0x2f,0x2f,0x2e,0x2c,0x2b,0x2a,0x9c,0x9c,0x9c,0x9c,\r
-  0x9c,0x9d,0x9d,0x9c,0x9a,0x97,0x99,0x9a,0x9a,0x9a,0x9b,0x9c,0x9c,\r
-  0x99,0x9f,0x97,0x98,0x99,0x9b,0x99,0x9b,0x9f,0x03,0x03,0x02,0x02,\r
-  0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x99,0x99,0x9a,0x9a,0x9b,\r
-  0x9b,0x9b,0x9b,0x9a,0x9a,0x9a,0x9c,0x9b,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x97,0x9c,0x99,0x9f,0x9e,0x97,0x9a,0x9a,0x9a,0x9a,\r
-  0x99,0x98,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x98,0x99,\r
-  0x9a,0x9a,0x99,0x98,0x99,0x99,0x94,0x94,0x9a,0x99,0x98,0x9a,0x9c,\r
-  0x9a,0x99,0x99,0x99,0x13,0x9a,0x9d,0x9c,0x9c,0x98,0x94,0x9a,0x94,\r
-  0x94,0x97,0x99,0x9b,0x9d,0x9d,0x9f,0x9f,0x9e,0x97,0x94,0x94,0x97,\r
-  0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x94,0x94,0x97,0x9a,0x9e,\r
-  0x9f,0x9f,0x9e,0x9c,0x97,0x94,0x9e,0x9a,0x97,0x98,0x9c,0x9b,0x9b,\r
-  0x9d,0x9d,0x04,0x03,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x02,0x03,0x04,0x04,0x05,0x02,0x02,0x02,0x05,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x06,0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x02,0xf7,0x02,\r
-  0x05,0x04,0x04,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x02,\r
-  0x02,0x02,0x03,0x03,0x03,0x03,0x04,0x05,0x06,0x06,0xf7,0xf7,0x04,\r
-  0x07,0x06,0x04,0x03,0x03,0x07,0x06,0xf7,0x04,0xf7,0xf7,0x04,0x03,\r
-  0x02,0x02,0xf7,0x03,0x03,0x04,0x04,0x04,0x9c,0x9b,0x9c,0x99,0x9d,\r
-  0x9a,0x98,0x9d,0x9d,0x9d,0x9e,0x9f,0x03,0x03,0x94,0x9a,0x9b,0x9c,\r
-  0x9c,0x9c,0x9d,0x9e,0x9e,0x9e,0x99,0x94,0x94,0x9f,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x27,\r
-  0x2e,0x2f,0x2f,0x29,0x28,0x2a,0x2b,0x2c,0x2b,0x2a,0x2b,0x2e,0xf6,\r
-  0x2f,0x2c,0x2b,0x2a,0x9d,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,\r
-  0x9a,0x97,0x99,0x9a,0x9a,0x9a,0x9a,0x9c,0x9c,0x9a,0x9e,0x94,0x98,\r
-  0x9a,0x9a,0x98,0x9c,0x9f,0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x03,\r
-  0x03,0x03,0x03,0x99,0x99,0x9a,0x9b,0x9c,0x9c,0x9b,0x9b,0x9a,0x9a,\r
-  0x99,0x9a,0x9c,0x9a,0x94,0x94,0x94,0x97,0x94,0x94,0x94,0x99,0x9a,\r
-  0x9c,0x9e,0x9f,0x97,0x9a,0x9b,0x9a,0x9a,0x99,0x98,0x98,0x97,0x97,\r
-  0x97,0x97,0x97,0x97,0x97,0x97,0x99,0x9a,0x9a,0x9a,0x99,0x97,0x9b,\r
-  0x98,0x94,0x97,0x9a,0x9a,0x9a,0x9c,0x99,0x98,0x97,0x97,0x98,0x16,\r
-  0x9e,0x9d,0x9a,0x94,0x9b,0x94,0x94,0x98,0x9b,0x9d,0x9e,0x9f,0x9f,\r
-  0x98,0x94,0x97,0x98,0x97,0x99,0x9c,0x9f,0x03,0x9f,0x9f,0x9d,0x9a,\r
-  0x99,0x98,0x98,0x98,0x99,0x9a,0x9c,0x9e,0x9f,0x9f,0x9e,0x9a,0x94,\r
-  0x94,0x9f,0x97,0x97,0x99,0x9c,0x9b,0x9c,0x9d,0x9d,0x03,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x03,0x04,0x05,\r
-  0x04,0xf7,0x02,0x03,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x06,0x06,0x06,\r
-  0x06,0x07,0x07,0x07,0x07,0xf7,0xf7,0x05,0x05,0x04,0x04,0x02,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0xf7,0x04,0xf7,0x02,0x03,0x03,0x03,\r
-  0x04,0x04,0x06,0x06,0x05,0xf7,0xf7,0x05,0x07,0x06,0x04,0x03,0x03,\r
-  0x07,0x05,0xf7,0x04,0xf7,0xf7,0x04,0x03,0x02,0x03,0xf7,0x02,0x03,\r
-  0x04,0x04,0x04,0x9d,0x9b,0x9b,0x9c,0x99,0x9d,0x99,0x9c,0x9d,0x9d,\r
-  0x9d,0x9e,0x9f,0x03,0x9d,0x98,0x9b,0x9b,0x9b,0x9b,0x9c,0x9d,0x9e,\r
-  0x9e,0x9e,0x99,0x94,0x94,0x9f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x27,0x23,0x23,0x23,\r
-  0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x26,0x2d,0x2f,0xf6,0x2c,0x28,\r
-  0x2a,0x2b,0x2c,0x2b,0x2a,0x2b,0x2c,0xf6,0x2f,0x2c,0x2b,0x2a,0x2a,\r
-  0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9c,0x99,0x97,0x99,0x9a,\r
-  0x9a,0x9a,0x9a,0x9c,0x9c,0x9c,0x9e,0x97,0x98,0x9a,0x9a,0x98,0x9d,\r
-  0x9f,0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x99,0x99,\r
-  0x9a,0x9b,0x9c,0x9c,0x9b,0x9a,0x9a,0x99,0x99,0x99,0x9a,0x9c,0x99,\r
-  0x94,0x94,0x97,0x97,0x94,0x97,0x9a,0x9a,0x9c,0x9c,0x9f,0x9b,0x99,\r
-  0x9b,0x9b,0x9a,0x9a,0x99,0x98,0x97,0x97,0x97,0x97,0x97,0x97,0x97,\r
-  0x98,0x99,0x9a,0x9a,0x9a,0x99,0x97,0x9a,0x97,0x94,0x97,0x9a,0x9b,\r
-  0x9d,0x99,0x97,0x97,0x97,0x97,0x9a,0x9e,0x9d,0x97,0x99,0x9a,0x94,\r
-  0x98,0x9b,0x9d,0x9f,0x9f,0x97,0x97,0x98,0x99,0x9e,0x02,0x01,0x01,\r
-  0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x9f,0x9c,0x99,0x98,0x97,0x97,\r
-  0x99,0x99,0x9b,0x9d,0x9d,0x9b,0x97,0x94,0x98,0x9f,0x97,0x97,0x9a,\r
-  0x9a,0x9a,0x9c,0x9d,0x9b,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x03,0x03,0x04,0x05,0x02,0xf7,0x02,0x06,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,\r
-  0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x05,0x06,0x07,0x07,0x07,0x06,\r
-  0xf7,0x02,0x06,0x04,0x03,0x04,0x03,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x03,0x02,0x05,0x03,0x02,0x03,0x04,0x04,0x04,0x05,0x06,0x07,0x04,\r
-  0xf7,0xf7,0x06,0x07,0x05,0x03,0x02,0x03,0x07,0x04,0xf7,0x04,0xf7,\r
-  0xf7,0x04,0x03,0x02,0x03,0xf7,0x02,0x03,0x04,0x04,0x05,0x9e,0x9c,\r
-  0x9b,0x9b,0x9b,0x9a,0x9c,0x98,0x9d,0x9d,0x9c,0x9d,0x9e,0x9f,0x03,\r
-  0x97,0x9a,0x9b,0x9b,0x9b,0x9b,0x9b,0x9d,0x9e,0x9e,0x9e,0x9a,0x94,\r
-  0x94,0x9f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,\r
-  0x23,0x23,0x25,0x2c,0x2f,0xf6,0xf6,0x2a,0x29,0x2a,0x2c,0x2b,0x2a,\r
-  0x2a,0x2c,0xf6,0x2f,0x2e,0x2c,0x2a,0x2a,0x9d,0x9c,0x9c,0x9c,0x9c,\r
-  0x9c,0x9d,0x9d,0x9d,0x9c,0x99,0x97,0x99,0x9a,0x9a,0x9a,0x9b,0x9c,\r
-  0x9b,0x9d,0x9e,0x97,0x99,0x9a,0x9a,0x99,0x9e,0x9f,0x03,0x03,0x02,\r
-  0x02,0x02,0x02,0x03,0x03,0x03,0x9a,0x9a,0x9a,0x9b,0x9c,0x2f,0x2f,\r
-  0xf6,0x01,0xf7,0xf7,0xf7,0xf7,0x2f,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x01,0x2f,0x2e,0x2c,0x28,0x26,0xf7,0x2f,0x2f,0xf6,0x01,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0x01,\r
-  0xf7,0x01,0xf7,0xf7,0xf7,0xf7,0x2f,0x2e,0x2c,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x2e,0xf6,0xf7,0x2a,0xf7,0xf7,0xf7,0x2e,0x2a,0x29,0xf7,0xf7,\r
-  0x01,0x23,0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,\r
-  0x35,0x23,0x2a,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x2a,0x2f,0xf7,0xf7,0x01,0x9a,0x9a,0x9d,0x99,0x94,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,\r
-  0x04,0x04,0x05,0xf7,0x02,0x04,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,\r
-  0x05,0x05,0x05,0x06,0x07,0x07,0x07,0x05,0xf7,0x03,0x06,0x03,0x03,\r
-  0x04,0x04,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0x03,0x03,0x05,0xf7,\r
-  0x03,0x04,0x04,0x05,0x06,0x06,0x06,0x03,0xf7,0xf7,0x06,0x07,0x04,\r
-  0x03,0x02,0x04,0x07,0x03,0xf7,0x02,0xf7,0x02,0x04,0x03,0x02,0x03,\r
-  0xf7,0x02,0x03,0x03,0x04,0x05,0x9e,0x9d,0x9c,0x9a,0x9c,0x9a,0x9c,\r
-  0x9b,0x97,0x9d,0x9d,0x9c,0x9e,0x9f,0x9f,0x9f,0x97,0x9a,0x9b,0x9b,\r
-  0x9a,0x9a,0x9b,0x9c,0x9e,0x9e,0x9f,0x9a,0x94,0x94,0x9f,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x23,\r
-  0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x25,0x2c,0x2f,\r
-  0xf6,0x01,0x2e,0x2a,0x2a,0x2b,0x2b,0x2b,0x2a,0x2c,0xf6,0x2f,0x2e,\r
-  0x2c,0x2b,0x2a,0x9d,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,\r
-  0x9c,0x99,0x97,0x99,0x9a,0x9a,0x9b,0x9b,0x9c,0x9b,0x9f,0x9e,0x97,\r
-  0x99,0x9b,0x9a,0x99,0x9e,0x03,0x03,0x03,0x03,0x02,0x02,0x02,0x03,\r
-  0x03,0x9d,0x9d,0x9d,0x9d,0x9d,0x2e,0x2e,0x2f,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0x01,0x2e,0x2f,0x02,0xf7,0xf7,0xf7,0x02,0x2f,0x2f,0x2e,0x2b,\r
-  0x28,0x25,0x02,0xf7,0x2f,0x2f,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0xf7,0xf7,0x2f,0xf7,0xf7,0xf7,\r
-  0xf7,0xf6,0x2a,0x2e,0xf7,0xf7,0xf7,0xf7,0xf6,0xf7,0xf7,0x23,0xf7,\r
-  0xf7,0x01,0x2d,0x27,0xf7,0xf7,0x2c,0x36,0x35,0x35,0x35,0x35,0x35,\r
-  0x35,0x23,0x27,0x2b,0x2c,0x2a,0x25,0x36,0x35,0x23,0x2f,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x26,0xf7,\r
-  0xf7,0x01,0x01,0x99,0x99,0x97,0x94,0x94,0xf7,0xf7,0xf7,0x02,0x02,\r
-  0xf7,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x04,0x05,0x02,0xf7,0x02,\r
-  0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,\r
-  0x06,0x05,0x05,0x05,0x05,0x05,0x04,0x04,0x04,0x04,0x04,0x06,0x07,\r
-  0x07,0x07,0x04,0xf7,0x04,0x04,0x02,0x03,0x03,0x02,0x02,0x02,0xf7,\r
-  0xf7,0xf7,0xf7,0x03,0x04,0x04,0x06,0x06,0xf7,0x04,0x05,0x05,0x06,\r
-  0x06,0x06,0xf7,0xf7,0x02,0x07,0x06,0x04,0x03,0x02,0x05,0x07,0xf7,\r
-  0x02,0xf7,0xf7,0x03,0x04,0x03,0x03,0x03,0xf7,0xf7,0x03,0x03,0x04,\r
-  0x04,0x9e,0x9e,0x9d,0x9c,0x9a,0x9c,0x99,0x9d,0x9a,0x9a,0x9d,0x9d,\r
-  0x9d,0x9e,0x9f,0x9f,0x9b,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9c,\r
-  0x9e,0x9f,0x9f,0x9a,0x94,0x94,0x9f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x23,0x23,0x23,0x23,0x23,0x23,\r
-  0x23,0x23,0x23,0x23,0x25,0x25,0x2b,0x2f,0xf6,0x01,0x2f,0x2a,0x2a,\r
-  0x2b,0x2c,0x2b,0x2a,0x2d,0xf6,0x2f,0x2e,0x2c,0x2b,0x2a,0x9d,0x9c,\r
-  0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9c,0x99,0x97,0x9a,\r
-  0x9a,0x9a,0x9b,0x9b,0x9d,0x9a,0x03,0x9c,0x98,0x99,0x9b,0x99,0x99,\r
-  0x9e,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x99,0x99,0x9a,0x9a,\r
-  0x9c,0x2e,0x2e,0x2e,0x2f,0x02,0x01,0xf7,0xf7,0xf7,0x2f,0x2d,0x2e,\r
-  0x2f,0x01,0xf7,0x2e,0x2d,0x2e,0x2e,0x2b,0x28,0x25,0x23,0xf7,0x2f,\r
-  0x2f,0x2f,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,\r
-  0xf6,0x02,0xf7,0xf7,0x2e,0xf7,0xf7,0xf7,0xf7,0x01,0x2c,0x2f,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0xf7,0x35,0xf7,0xf7,0x01,0x2c,0x2a,0xf7,0xf7,\r
-  0x36,0x35,0x35,0x35,0x35,0x35,0x23,0x29,0x2d,0x2f,0x02,0x01,0xf7,\r
-  0xf7,0xf7,0x28,0x35,0x27,0xf7,0xf7,0xf7,0x01,0x2e,0x2c,0x2b,0x2a,\r
-  0x2f,0xf7,0xf7,0x01,0x2a,0x23,0x2d,0xf7,0x01,0x2f,0xf7,0x97,0x94,\r
-  0x94,0x94,0x94,0xf7,0x02,0x02,0x02,0xf7,0x02,0x03,0xf7,0xf7,0xf7,\r
-  0xf7,0x03,0x04,0x04,0x05,0xf7,0x02,0x04,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x05,0x05,0x04,0x04,0x04,0x04,\r
-  0x04,0x04,0x04,0x04,0x04,0x04,0x06,0x07,0x07,0x07,0x03,0xf7,0x06,\r
-  0x02,0x02,0x03,0x03,0x02,0x02,0xf7,0x02,0xf7,0xf7,0x02,0x03,0x04,\r
-  0x04,0x06,0x06,0x04,0xf7,0x04,0x05,0x06,0x06,0x04,0xf7,0xf7,0x02,\r
-  0x07,0x06,0x03,0x03,0x02,0x06,0x06,0xf7,0x04,0xf7,0xf7,0x04,0x03,\r
-  0x03,0x03,0x03,0xf7,0xf7,0x02,0x03,0x03,0x04,0x9e,0x9e,0x9e,0x9d,\r
-  0x9b,0x9b,0x9c,0x9a,0x9d,0x98,0x9d,0x9d,0x9c,0x9d,0x9e,0x9f,0x03,\r
-  0x97,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9c,0x9e,0x9e,0x9f,0x9b,\r
-  0x94,0x94,0x9f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x25,0x25,\r
-  0x23,0x2a,0xf6,0xf6,0x02,0x2e,0x28,0x2a,0x2c,0x2c,0x2b,0x2b,0x2f,\r
-  0xf6,0x2f,0x2e,0x2c,0x2b,0x2a,0x2b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,\r
-  0x9c,0x9c,0x9d,0x9d,0x9d,0x9c,0x98,0x97,0x9a,0x9a,0x9a,0x9b,0x9c,\r
-  0x9d,0x99,0x03,0x9a,0x98,0x99,0x9b,0x99,0x99,0x9e,0x9f,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x94,0x94,0x94,0x97,0x99,0xf6,0x2e,0x2f,0x2e,\r
-  0x2f,0x2f,0x01,0x01,0x01,0xf6,0x2f,0x2f,0x2f,0x2d,0xf7,0xf7,0x2e,\r
-  0x2e,0x2f,0x2b,0x28,0x27,0x25,0x2e,0xf7,0x2f,0x2f,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0xf6,0x02,0xf7,0xf7,0x2e,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x02,0xf7,0xf7,0xf7,0x01,0xf7,0x27,\r
-  0x2e,0xf7,0x01,0x2c,0x2c,0xf7,0x2f,0x36,0x35,0x35,0x35,0x36,0x27,\r
-  0x2c,0x2f,0x02,0x01,0x01,0x01,0x01,0xf7,0xf7,0xf7,0x2a,0x35,0xf7,\r
-  0xf7,0xf7,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0x2d,0x27,0x23,0x23,0x25,\r
-  0x2a,0x2f,0x2f,0x2f,0x2e,0xf7,0x98,0x94,0x94,0x97,0x99,0x02,0x02,\r
-  0x02,0xf7,0xf7,0x02,0x03,0xf7,0x03,0xf7,0xf7,0x03,0x04,0x05,0x03,\r
-  0xf7,0x02,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,\r
-  0x05,0x05,0x04,0x04,0x04,0x04,0x04,0x04,0x03,0x03,0x03,0x03,0x04,\r
-  0x04,0x06,0x07,0x07,0x06,0x03,0xf7,0x06,0x02,0x02,0x03,0x03,0x03,\r
-  0x03,0x02,0xf7,0x02,0x03,0x04,0x04,0x04,0x05,0x05,0x03,0x07,0x02,\r
-  0xf7,0x03,0x04,0x04,0x02,0xf7,0xf7,0x03,0x07,0x06,0x03,0x03,0x02,\r
-  0x07,0x05,0xf7,0x03,0xf7,0xf7,0x04,0x03,0x03,0x04,0x03,0xf7,0xf7,\r
-  0xf7,0x02,0x03,0x03,0x9c,0x9e,0x9e,0x9e,0x9c,0x9b,0x9b,0x9b,0x9c,\r
-  0x9c,0x97,0x9d,0x9d,0x9c,0x9d,0x9e,0x9f,0x9f,0x97,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9b,0x9d,0x9e,0x9f,0x9b,0x94,0x94,0x9f,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x23,0x23,0x23,0x23,\r
-  0x23,0x23,0x23,0x23,0x23,0x23,0x25,0x23,0x23,0x2a,0xf6,0xf6,0x2f,\r
-  0x28,0x28,0x2c,0x2c,0x2c,0x2c,0x2c,0x2f,0xf6,0x2f,0x2e,0x2c,0x2b,\r
-  0x2a,0x2a,0x9d,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,\r
-  0x9d,0x9c,0x98,0x97,0x9a,0x9a,0x9b,0x9b,0x9c,0x9d,0x99,0x03,0x99,\r
-  0x98,0x99,0x9b,0x9a,0x99,0x9c,0x9f,0x9f,0x03,0x03,0x03,0x03,0x94,\r
-  0x94,0x94,0x94,0x94,0xf7,0x2f,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0xf6,\r
-  0xf6,0x2f,0x2f,0x02,0x2f,0x2f,0xf7,0x02,0x2f,0x2d,0x2c,0x28,0x28,\r
-  0x2c,0x36,0xf7,0x2f,0x2e,0x2f,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0xf6,0x02,0xf7,0x01,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x01,0x01,0xf7,0xf7,0xf7,0x01,0xf7,0x2c,0xf7,0xf6,0x2e,0x2a,0xf7,\r
-  0x2f,0x36,0x35,0x35,0x35,0x27,0x2d,0x2f,0x02,0xf6,0x2f,0x2d,0x2d,\r
-  0x2e,0x2f,0xf7,0xf7,0xf7,0x23,0x29,0xf7,0xf7,0x01,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x02,0x2e,0x2d,0x2e,0x2f,0x2f,0x2d,0xf7,0xf7,\r
-  0xf7,0x94,0x94,0x98,0x98,0x98,0x02,0x02,0x03,0x02,0xf7,0x03,0x02,\r
-  0x03,0x03,0xf7,0x02,0x03,0x04,0x05,0xf7,0x02,0x04,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x05,0x05,0x04,0x04,0x04,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x05,0x07,0x07,0x07,0x06,\r
-  0x02,0xf7,0x06,0xf7,0x02,0x03,0x03,0x03,0x03,0x04,0x03,0x02,0x02,\r
-  0x04,0x04,0x04,0x05,0x02,0x02,0x07,0x07,0xf7,0xf7,0x02,0x02,0xf7,\r
-  0xf7,0xf7,0x03,0x07,0x06,0x04,0x03,0x03,0x07,0x04,0xf7,0x02,0xf7,\r
-  0x02,0x04,0x04,0x04,0x04,0x04,0x02,0xf7,0xf7,0xf7,0x02,0x03,0x9a,\r
-  0x9c,0x9e,0x9e,0x9e,0x9c,0x9a,0x9c,0x9a,0x9d,0x9b,0x98,0x9d,0x9d,\r
-  0x9c,0x9d,0x9e,0x9f,0x9b,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9b,0x9d,0x9f,0x9f,0x9c,0x94,0x94,0x9f,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,\r
-  0x23,0x23,0x23,0x23,0x2b,0x02,0xf6,0x2c,0x26,0x2b,0x2d,0x2c,0x2c,\r
-  0x2c,0x2f,0x2f,0x2f,0x2e,0x2c,0x2c,0x2b,0x2a,0x2a,0x9d,0x9c,0x9c,\r
-  0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9b,0x98,0x97,\r
-  0x9a,0x9b,0x9b,0x9b,0x9c,0x9c,0x99,0x03,0x98,0x98,0x99,0x9b,0x9a,\r
-  0x99,0x9a,0x9e,0x9f,0x9f,0x03,0x03,0x97,0x97,0x98,0x99,0x97,0xf7,\r
-  0x01,0x2e,0x2e,0xf7,0xf7,0xf6,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0xf7,\r
-  0x2e,0xf6,0xf7,0x2f,0x2f,0x2c,0x2a,0x2a,0xf6,0x2d,0x2a,0xf7,0x2e,\r
-  0x2e,0xf6,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x2f,0x02,\r
-  0xf7,0x2f,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0x01,\r
-  0xf7,0x2e,0xf7,0xf7,0x2f,0x2a,0xf7,0xf7,0x36,0x35,0x35,0x23,0x2c,\r
-  0x2f,0x2f,0x2f,0x2a,0x2a,0x28,0x28,0x2a,0x2c,0x2f,0xf7,0xf7,0xf6,\r
-  0x36,0xf7,0xf7,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x02,0xf6,\r
-  0x2f,0x2f,0x2e,0x2e,0xf7,0xf7,0xf7,0xf7,0xf7,0x99,0x97,0x97,0x99,\r
-  0x9b,0x03,0x03,0xf7,0xf7,0x02,0x03,0xf7,0x06,0x03,0xf7,0x03,0x04,\r
-  0x05,0x04,0xf7,0x02,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x06,0x05,0x05,0x04,0x04,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x04,0x05,0x07,0x07,0x07,0x07,0x04,0xf7,0xf7,0x05,0xf7,0x02,\r
-  0x03,0x03,0x03,0x04,0x04,0x04,0x03,0x02,0x03,0x04,0x04,0x04,0xf7,\r
-  0x02,0x07,0x07,0x05,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x07,0x06,\r
-  0x04,0x03,0x04,0x07,0x03,0xf7,0x02,0xf7,0x03,0x04,0x04,0x04,0x05,\r
-  0x04,0x03,0x02,0xf7,0xf7,0xf7,0x02,0x9a,0x9a,0x9c,0x9d,0x9e,0x9d,\r
-  0x9c,0x9a,0x9c,0x9a,0x9d,0x99,0x9b,0x9d,0x9d,0x9d,0x9e,0x9e,0x9f,\r
-  0x97,0x9a,0x9a,0x9a,0x9a,0x9a,0x99,0x99,0x9a,0x9b,0x9d,0x9f,0x9f,\r
-  0x9b,0x94,0x94,0x9f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x23,\r
-  0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x25,0x2c,\r
-  0x02,0xf6,0x27,0x28,0x2e,0x2e,0x2d,0x2c,0x2e,0x2f,0x2f,0x2e,0x2d,\r
-  0x2c,0x2c,0x2b,0x2a,0x2b,0x9d,0x9c,0x9c,0x9b,0x9b,0x9c,0x9c,0x9c,\r
-  0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9b,0x97,0x97,0x9b,0x9b,0x9a,0x9b,\r
-  0x9c,0x9c,0x99,0x9f,0x97,0x98,0x98,0x9b,0x9a,0x99,0x99,0x9b,0x9e,\r
-  0x9f,0x9f,0x94,0x94,0x94,0x94,0x97,0xf7,0xf7,0xf7,0x2f,0x2d,0xf7,\r
-  0xf7,0xf7,0x2f,0x2f,0x2f,0x2f,0x2f,0x01,0xf7,0x2d,0x01,0x01,0x2f,\r
-  0x2e,0x2c,0x2c,0xf7,0xf7,0x36,0xf7,0x2f,0x2c,0x2f,0x01,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x2f,0x02,0xf7,0x2d,0x02,0xf7,0xf7,\r
-  0x2f,0x01,0xf7,0xf7,0x01,0xf7,0xf7,0x02,0xf7,0xf7,0xf7,0x2f,0x2d,\r
-  0xf7,0xf7,0x35,0x35,0x35,0x27,0x2e,0x2f,0x2e,0x2a,0x27,0x25,0x23,\r
-  0x25,0x27,0x2a,0x2c,0x02,0xf7,0xf7,0x35,0x2f,0xf7,0x2c,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0x02,0xf6,0x2f,0x2e,0x2d,0x2f,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0x97,0x97,0x97,0x97,0x97,0xf7,0xf7,0xf7,0xf7,\r
-  0x03,0x02,0x03,0x06,0xf7,0x02,0x03,0x04,0x05,0xf7,0x02,0x04,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x05,0x05,0x04,0x04,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x02,0x02,0x02,0x04,0x05,0x07,0x07,0x07,\r
-  0x07,0x05,0x03,0xf7,0x03,0x04,0xf7,0x02,0x04,0x04,0x04,0x04,0x04,\r
-  0x04,0x04,0x03,0x03,0x03,0x03,0x05,0xf7,0x02,0x07,0x07,0x07,0x03,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x06,0x07,0x06,0x04,0x06,0x07,0x04,\r
-  0xf7,0x02,0xf7,0x03,0x05,0x05,0x05,0x05,0x05,0x04,0x04,0x03,0x02,\r
-  0xf7,0xf7,0x97,0x99,0x9a,0x9c,0x9d,0x9e,0x9d,0x9b,0x9b,0x9c,0x9a,\r
-  0x9d,0x98,0x9d,0x9d,0x9c,0x9d,0x9e,0x9f,0x9f,0x97,0x9a,0x9a,0x9a,\r
-  0x9a,0x99,0x99,0x99,0x9a,0x9a,0x9d,0x9e,0x9f,0x9c,0x94,0x94,0x9f,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x23,0x23,0x23,0x23,0x23,0x23,\r
-  0x23,0x23,0x23,0x23,0x23,0x23,0x25,0x2c,0x01,0x2f,0x25,0x2c,0x2f,\r
-  0x2f,0x2d,0x2e,0x2e,0x2e,0x2e,0x2d,0x2c,0x2c,0x2b,0x2b,0x2a,0x2b,\r
-  0x9d,0x9c,0x9c,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,\r
-  0x9d,0x9d,0x9a,0x97,0x98,0x9b,0x9b,0x9b,0x9b,0x9c,0x9c,0x98,0x9f,\r
-  0x98,0x97,0x98,0x9a,0x9b,0x9a,0x99,0x99,0x99,0x9a,0x94,0x94,0x94,\r
-  0x94,0x94,0xf7,0xf6,0xf7,0xf7,0x01,0x2e,0x01,0xf7,0xf7,0x01,0x2f,\r
-  0x2f,0x2f,0xf6,0xf7,0x01,0x2f,0x01,0xf6,0x2f,0x2a,0x2f,0xf7,0xf7,\r
-  0x01,0x27,0xf7,0x2c,0x2c,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x02,0x2f,0x02,0xf7,0x2c,0x01,0xf7,0xf7,0x2f,0x2e,0xf7,0xf7,0x01,\r
-  0xf7,0x01,0xf7,0xf7,0xf7,0xf7,0x2f,0x2d,0xf7,0x2d,0x36,0x35,0x27,\r
-  0x2f,0xf6,0x2c,0x27,0x23,0x36,0x36,0x36,0x25,0x27,0x2a,0x2f,0xf7,\r
-  0xf7,0x25,0x27,0xf7,0x2d,0xf7,0xf7,0xf7,0x01,0x01,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0xf7,0x94,\r
-  0x94,0x94,0x94,0x94,0xf7,0xf7,0xf7,0x02,0x03,0xf7,0x07,0x04,0xf7,\r
-  0x02,0x04,0x05,0x03,0xf7,0x02,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x06,0x06,0x05,0x04,0x04,0x03,0x03,0x03,0x03,0x03,0x03,0x02,\r
-  0x02,0x02,0x03,0x05,0x07,0x07,0x07,0x06,0x05,0x03,0xf7,0xf7,0x04,\r
-  0x03,0xf7,0xf7,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x03,0x03,0x03,\r
-  0x03,0x06,0x02,0xf7,0x07,0x07,0x07,0x06,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x04,0x07,0x07,0x07,0x07,0x07,0x04,0xf7,0x03,0xf7,0x03,0x04,\r
-  0x04,0x05,0x05,0x05,0x05,0x05,0x05,0x04,0x04,0x03,0x94,0x94,0x99,\r
-  0x9a,0x9c,0x9e,0x9e,0x9d,0x9b,0x9b,0x9b,0x9c,0x9c,0x97,0x9d,0x9d,\r
-  0x9c,0x9d,0x9e,0x9f,0x9c,0x99,0x9a,0x9a,0x9a,0x99,0x99,0x99,0x99,\r
-  0x9a,0x9a,0x9d,0x9e,0x9f,0x9c,0x94,0x94,0x9f,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,\r
-  0x23,0x25,0x2b,0x01,0x2f,0x26,0x2f,0x2f,0x2f,0x2e,0x2e,0x2f,0x2f,\r
-  0x2e,0x2d,0x2c,0x2c,0x2b,0x2a,0x2b,0x2b,0x9c,0x9c,0x9c,0x9b,0x9b,\r
-  0x9c,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9a,0x97,\r
-  0x99,0x9b,0x9b,0x9b,0x9b,0x9c,0x9c,0x98,0x9f,0x99,0x97,0x98,0x99,\r
-  0x9b,0x9b,0x9a,0x99,0x99,0x94,0x94,0x94,0x94,0x97,0xf7,0x2d,0x2e,\r
-  0x01,0x01,0x01,0x2f,0x2f,0xf7,0xf7,0x01,0xf6,0x2f,0x2f,0x01,0xf7,\r
-  0x2f,0x02,0x01,0xf6,0x2f,0x2a,0xf7,0xf7,0xf7,0x25,0xf7,0x2f,0x2c,\r
-  0x2e,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0xf6,0x2f,0x02,0xf7,0x2a,\r
-  0xf7,0xf7,0xf7,0x2e,0x2a,0xf7,0xf7,0x01,0x01,0x02,0xf7,0xf7,0xf7,\r
-  0xf6,0x2d,0xf7,0xf7,0x35,0x35,0x23,0x2d,0x02,0x2e,0x26,0x36,0x36,\r
-  0x36,0x36,0x23,0x25,0x29,0x2d,0x01,0xf7,0x2c,0x36,0xf7,0xf7,0x2c,\r
-  0xf7,0xf7,0x01,0x01,0xf7,0xf7,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0x02,0xf7,0xf7,0xf7,0x94,0x94,0x94,0x94,0x94,0xf7,\r
-  0xf7,0x02,0x03,0xf7,0x04,0x07,0xf7,0x02,0x03,0x04,0x05,0xf7,0x02,\r
-  0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x05,0x04,0x04,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x02,0x02,0x02,0x05,0x07,0x07,\r
-  0x06,0x05,0x03,0x02,0xf7,0xf7,0x02,0x05,0x02,0xf7,0xf7,0x04,0x05,\r
-  0x05,0x04,0x03,0x03,0x03,0x04,0x03,0x03,0x03,0x03,0x03,0xf7,0x07,\r
-  0x07,0x07,0x07,0x03,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x07,0x07,0x07,\r
-  0x07,0x07,0x05,0xf7,0x04,0x02,0x02,0x03,0x04,0x04,0x04,0x04,0x05,\r
-  0x05,0x05,0x05,0x04,0x04,0x9c,0x97,0x94,0x98,0x9a,0x9c,0x9e,0x9e,\r
-  0x9c,0x9a,0x9c,0x9b,0x9d,0x9a,0x99,0x9d,0x9d,0x9d,0x9d,0x9e,0x9f,\r
-  0x97,0x99,0x9a,0x9a,0x9a,0x99,0x98,0x98,0x99,0x99,0x9a,0x9d,0x9e,\r
-  0x9f,0x9b,0x94,0x94,0x9f,0xf7,0xf7,0xf7,0xf7,0xf7,0x23,0x23,0x23,\r
-  0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x2a,0x02,0x2f,\r
-  0x27,0x2f,0x2f,0x2f,0x2e,0x2e,0x2e,0x2e,0x2e,0x2c,0x2c,0x2b,0x2b,\r
-  0x2b,0x2b,0x2c,0x9c,0x9b,0x9c,0x9b,0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,\r
-  0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9a,0x97,0x99,0x9a,0x9a,0x9a,\r
-  0x9a,0x9b,0x9b,0x97,0x9f,0x9c,0x97,0x97,0x98,0x9a,0x9b,0x9c,0x9b,\r
-  0x94,0x94,0x97,0x97,0x98,0x02,0x2d,0x2f,0x2f,0xf6,0x01,0x02,0x2f,\r
-  0x2c,0xf7,0xf7,0xf7,0xf6,0x2f,0xf6,0xf7,0xf7,0x2d,0x01,0x01,0x02,\r
-  0x29,0xf7,0xf7,0xf7,0x02,0x23,0xf7,0x2c,0x2c,0x2f,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0xf6,0x2f,0x02,0xf7,0x2a,0xf7,0xf7,0xf7,0x2d,0x27,\r
-  0xf7,0xf7,0x02,0x01,0x02,0xf7,0xf7,0xf7,0x2e,0x2c,0xf7,0xf7,0x35,\r
-  0x35,0x27,0x2f,0x2f,0x2a,0x23,0x36,0x35,0x36,0x36,0x25,0x28,0x2d,\r
-  0xf6,0xf7,0xf6,0x35,0x2a,0xf7,0x28,0xf7,0xf7,0xf6,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x01,0x02,0x02,0x02,0x01,0x01,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x94,0x94,0x94,0x94,0x94,0xf7,0x02,0x03,0x03,0xf7,0x07,\r
-  0x02,0xf7,0x02,0x04,0x05,0x02,0x02,0x03,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x06,0x06,0x05,0x04,0x04,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x02,0xf7,0x03,0x07,0x07,0x05,0x03,0xf7,0xf7,0xf7,0xf7,\r
-  0x02,0x04,0x04,0xf7,0xf7,0xf7,0x04,0x05,0x05,0x05,0x03,0x02,0x02,\r
-  0x04,0x04,0x03,0x03,0x02,0x06,0xf7,0x06,0x07,0x07,0x07,0x05,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x04,0x07,0x07,0x07,0x07,0x05,0xf7,0x06,\r
-  0x02,0x02,0x03,0x03,0x03,0x03,0x04,0x04,0x04,0x05,0x05,0x05,0x04,\r
-  0x9b,0x9c,0x99,0x94,0x98,0x9a,0x9d,0x9e,0x9d,0x9c,0x9a,0x9c,0x9a,\r
-  0x9d,0x99,0x9c,0x9d,0x9c,0x9d,0x9e,0x9e,0x9f,0x97,0x99,0x9a,0x9a,\r
-  0x99,0x99,0x98,0x98,0x99,0x99,0x9a,0x9d,0x9f,0x9f,0x9b,0x94,0x94,\r
-  0x9f,0xf7,0xf7,0xf7,0xf7,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,\r
-  0x23,0x23,0x23,0x23,0x23,0x28,0xf6,0x01,0x27,0x2f,0x2f,0x2f,0x2e,\r
-  0x2e,0x2d,0x2d,0x2c,0x2c,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x9b,0x9b,\r
-  0x9b,0x9b,0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,\r
-  0x9d,0x9d,0x9c,0x99,0x97,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9c,0x97,\r
-  0x9e,0x9d,0x97,0x97,0x97,0x98,0x99,0x99,0x94,0x94,0x97,0x98,0x99,\r
-  0x2f,0x2f,0x2d,0x2d,0xf6,0x01,0x01,0xf6,0x2d,0x2a,0xf7,0xf7,0x01,\r
-  0xf6,0xf6,0x02,0xf7,0xf7,0x2f,0x01,0x02,0x02,0x28,0xf7,0xf7,0xf7,\r
-  0x23,0xf7,0x02,0x2c,0x2d,0x02,0xf7,0xf7,0xf7,0xf7,0x01,0xf6,0x2f,\r
-  0x02,0xf7,0x2a,0xf7,0xf7,0xf7,0x2f,0x23,0xf7,0xf7,0x02,0x02,0xf7,\r
-  0xf7,0xf7,0xf7,0x2e,0x2d,0xf7,0x2a,0x36,0x35,0x27,0x2f,0x2d,0x25,\r
-  0x36,0x35,0x36,0x36,0x25,0x2a,0x2f,0x02,0x01,0x02,0x35,0x36,0xf7,\r
-  0xf7,0x25,0xf7,0xf6,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x94,0x94,0x94,\r
-  0x94,0x94,0x02,0x03,0x04,0xf7,0x04,0x04,0xf7,0x02,0x04,0x04,0x04,\r
-  0xf7,0x02,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x05,\r
-  0x04,0x04,0x04,0x04,0x03,0x03,0x03,0x03,0x03,0x02,0x02,0xf7,0x06,\r
-  0x07,0x05,0x02,0xf7,0xf7,0x02,0x03,0x04,0x05,0x04,0x02,0xf7,0xf7,\r
-  0xf7,0x03,0x05,0x05,0x05,0x04,0x02,0x02,0x03,0x04,0x04,0x03,0x02,\r
-  0x05,0xf7,0x05,0x07,0x07,0x07,0x06,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x06,0x07,0x07,0x07,0x03,0xf7,0x06,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x04,0x04,0x05,0x05,0x05,0x9d,0x9b,0x9a,0x99,0x94,\r
-  0x99,0x9b,0x9d,0x9e,0x9d,0x9b,0x9a,0x9c,0x9b,0x9c,0x97,0x9d,0x9d,\r
-  0x9c,0x9d,0x9e,0x9f,0x9e,0x99,0x9a,0x9a,0x9a,0x99,0x98,0x98,0x98,\r
-  0x99,0x99,0x9a,0x9d,0x9e,0x9f,0x9b,0x94,0x97,0x9f,0xf7,0xf7,0xf7,\r
-  0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,\r
-  0x26,0x2e,0x01,0x2a,0x2c,0x2f,0x2f,0x2e,0x2d,0x2c,0x2c,0x2c,0x2b,\r
-  0x2b,0x2c,0x2c,0x2d,0x2d,0x2e,0x9a,0x9a,0x9a,0x9a,0x9a,0x9b,0x9b,\r
-  0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9c,0x99,\r
-  0x97,0x99,0x99,0x99,0x99,0x9a,0x9a,0x9c,0x99,0x99,0x9e,0x9a,0x94,\r
-  0x97,0x97,0x97,0x99,0x99,0x9a,0x9b,0x9b,0x2e,0x2d,0x2b,0x2c,0x27,\r
-  0x2e,0xf7,0xf7,0x2f,0x2c,0x2a,0xf7,0xf7,0x01,0xf6,0xf6,0x01,0xf7,\r
-  0x2f,0xf6,0x01,0x01,0x2a,0xf7,0xf7,0xf7,0x2f,0x36,0xf7,0x2c,0x2b,\r
-  0x2f,0x01,0xf7,0xf7,0xf7,0x01,0x2f,0x2f,0x02,0xf7,0x2a,0xf7,0xf7,\r
-  0xf7,0x2f,0x36,0xf7,0xf7,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0x2f,0xf6,\r
-  0xf7,0x36,0x35,0x35,0x23,0x2a,0x27,0x36,0x35,0x35,0x35,0x36,0x27,\r
-  0x2e,0xf6,0xf6,0x2f,0x36,0x35,0x27,0xf7,0x2a,0x2c,0xf6,0x2e,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x94,0x94,0x94,0x94,0x97,0x03,0x04,0x03,\r
-  0xf7,0x06,0xf7,0xf7,0x03,0x04,0x05,0xf7,0x02,0x06,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x05,0x05,0x04,0x04,0x04,0x04,\r
-  0x03,0x03,0x03,0x03,0x02,0x02,0x02,0x07,0x06,0x02,0xf7,0x02,0x04,\r
-  0x04,0x03,0x02,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0x03,0x05,0x05,0x05,\r
-  0x04,0x02,0x02,0x02,0x04,0x04,0x04,0x02,0x02,0x02,0x03,0x07,0x07,\r
-  0x07,0x07,0xf7,0xf7,0x02,0x04,0x03,0x02,0xf7,0x02,0x07,0x07,0x07,\r
-  0x02,0xf7,0x03,0x05,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x04,0x9e,0x9d,0x9a,0x99,0x99,0x94,0x9a,0x9b,0x9e,0x9e,\r
-  0x9d,0x9a,0x9b,0x9c,0x9c,0x9c,0x97,0x9d,0x9d,0x9c,0x9d,0x9d,0x9f,\r
-  0x99,0x99,0x9a,0x9a,0x99,0x98,0x97,0x97,0x98,0x99,0x99,0x9a,0x9d,\r
-  0x9e,0x9f,0x9b,0x94,0x97,0x9f,0xf7,0xf7,0x23,0x23,0x23,0x23,0x23,\r
-  0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x25,0x2a,0x01,0x2f,0x27,\r
-  0xf6,0x2f,0x2f,0x2c,0x2c,0x2c,0x2c,0x2b,0x2c,0x2e,0x2f,0x2f,0x2f,\r
-  0x2f,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,\r
-  0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9c,0x98,0x97,0x99,0x99,0x99,\r
-  0x99,0x9a,0x99,0x9c,0x9a,0x97,0x9e,0x9e,0x9b,0x97,0x97,0x99,0x99,\r
-  0x99,0x9a,0x9c,0x2d,0x2a,0x28,0x2f,0xf7,0x2d,0x27,0xf7,0xf7,0x2f,\r
-  0x2a,0x2c,0xf7,0xf7,0x01,0xf6,0x02,0xf7,0xf7,0x2e,0x01,0x01,0x01,\r
-  0x26,0xf7,0xf7,0xf7,0x36,0xf7,0x01,0x2a,0x2c,0xf6,0xf7,0xf7,0xf7,\r
-  0x02,0x2f,0x2f,0xf6,0xf7,0x2a,0xf7,0xf7,0xf7,0x02,0x36,0xf7,0xf7,\r
-  0x01,0x01,0xf7,0xf7,0xf7,0xf7,0x2f,0xf7,0xf7,0x36,0x35,0x35,0x35,\r
-  0x23,0x35,0x36,0x25,0x23,0x36,0x36,0x23,0x28,0x2a,0x27,0x36,0x35,\r
-  0x35,0xf7,0xf7,0x25,0x2f,0x2e,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x94,0x94,0x97,0x97,0x99,0x04,0x04,0xf7,0x05,0xf7,0xf7,0x02,0x04,\r
-  0x05,0x02,0x02,0x03,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x06,0x06,0x05,0x05,0x05,0x04,0x04,0x04,0x03,0x03,0x03,0x02,\r
-  0x02,0x04,0x07,0x04,0xf7,0x02,0x04,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x03,0x05,0x05,0x05,0x05,0x03,0x02,0x02,0x04,\r
-  0x05,0x05,0x03,0xf7,0x05,0xf7,0x07,0x07,0x07,0x07,0xf7,0xf7,0x03,\r
-  0x06,0x06,0x05,0x02,0xf7,0x03,0x07,0x07,0x02,0xf7,0x02,0x05,0x04,\r
-  0x03,0x04,0x03,0x03,0x03,0x03,0x02,0x02,0x02,0xf7,0xf7,0x99,0x9e,\r
-  0x9d,0x9a,0x99,0x97,0x97,0x9a,0x9d,0x9e,0x9e,0x9c,0x9a,0x9c,0x9b,\r
-  0x9d,0x9a,0x9a,0x9d,0x9d,0x9d,0x9d,0x9e,0x9f,0x94,0x99,0x9a,0x9a,\r
-  0x99,0x98,0x97,0x97,0x97,0x98,0x99,0x9a,0x9d,0x9e,0x9f,0x9b,0x94,\r
-  0x97,0x9f,0xf7,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,\r
-  0x23,0x23,0x23,0x23,0x27,0x2f,0x01,0x28,0x2f,0xf6,0x2f,0x2c,0x2c,\r
-  0x2c,0x2c,0x2b,0x2c,0x2f,0x2f,0x2f,0x2f,0x2f,0x99,0x9a,0x9a,0x9a,\r
-  0x9a,0x9b,0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,\r
-  0x9d,0x9d,0x9d,0x9b,0x98,0x97,0x99,0x98,0x98,0x98,0x9b,0x99,0x9b,\r
-  0x9b,0x99,0x99,0x9f,0x9f,0x9f,0x94,0x94,0x94,0x97,0x9a,0x2c,0x28,\r
-  0x27,0xf7,0xf7,0xf7,0xf7,0x23,0xf7,0xf7,0x2f,0x2c,0x2f,0xf7,0xf7,\r
-  0x02,0xf6,0x01,0xf7,0xf6,0x2f,0x01,0x01,0x2a,0xf7,0xf7,0xf7,0x2a,\r
-  0x36,0xf7,0x2c,0x2a,0x2e,0x01,0x01,0x01,0x02,0x2f,0x2f,0xf6,0xf7,\r
-  0x2a,0xf7,0xf7,0xf7,0x01,0x36,0x02,0xf7,0x01,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x2e,0xf7,0xf7,0x36,0x35,0x35,0x35,0x35,0x25,0x2d,0x02,0x2e,\r
-  0x2a,0x23,0x35,0x36,0x35,0x35,0x35,0x36,0x2f,0xf7,0xf6,0x2c,0x2e,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x97,0x97,0x98,0x99,0x9e,\r
-  0x04,0xf7,0x04,0x02,0xf7,0x02,0x04,0x05,0x04,0xf7,0x02,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x06,\r
-  0x06,0x06,0x05,0x04,0x03,0x03,0x03,0x02,0x02,0x06,0x07,0x02,0xf7,\r
-  0x04,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,\r
-  0x05,0x05,0x05,0x05,0x04,0x02,0x02,0x04,0x05,0x05,0x04,0xf7,0x06,\r
-  0xf7,0x07,0x07,0x07,0x07,0x02,0xf7,0x04,0x07,0x06,0x06,0x06,0x03,\r
-  0xf7,0x05,0x06,0x02,0x02,0x05,0x04,0x04,0x04,0x04,0x04,0x03,0x03,\r
-  0x02,0x02,0x02,0x02,0xf7,0xf7,0x97,0x97,0x9d,0x9c,0x99,0x99,0x94,\r
-  0x98,0x9a,0x9e,0x9e,0x9e,0x9c,0x9a,0x9c,0x9a,0x9d,0x98,0x9d,0x9d,\r
-  0x9c,0x9d,0x9e,0x9f,0x9f,0x98,0x99,0x9a,0x9a,0x98,0x98,0x98,0x97,\r
-  0x97,0x98,0x99,0x9a,0x9d,0x9e,0x9f,0x9b,0x94,0x97,0x9f,0x23,0x23,\r
-  0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,\r
-  0x2a,0x02,0x2f,0x28,0xf6,0x2f,0x2d,0x2a,0x2a,0x2b,0x2a,0x2c,0x2f,\r
-  0xf6,0xf6,0x2f,0x2f,0x99,0x9a,0x9a,0x9a,0x9a,0x9b,0x9b,0x9b,0x9c,\r
-  0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9c,0x9a,\r
-  0x97,0x97,0x98,0x98,0x97,0x98,0x9a,0x9a,0x9a,0x9c,0x9b,0x9a,0x98,\r
-  0x99,0x9a,0x9a,0x9c,0x9f,0x03,0x28,0x27,0x27,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x23,0xf7,0xf7,0x2f,0x2c,0xf7,0xf7,0xf7,0x02,0x02,0xf7,0xf7,\r
-  0x2e,0x02,0x01,0xf7,0x25,0xf7,0xf7,0x01,0x35,0x2f,0xf7,0x2a,0x2a,\r
-  0x2f,0x01,0x01,0xf6,0x2f,0x2f,0xf6,0xf7,0x29,0xf7,0xf7,0xf7,0xf7,\r
-  0x35,0xf6,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x2e,0x01,0xf7,0x36,\r
-  0x35,0x35,0x35,0x26,0x01,0xf7,0xf7,0xf7,0xf7,0x2e,0x23,0x35,0x35,\r
-  0x35,0x35,0x23,0xf7,0xf7,0x2c,0x2e,0xf7,0xf7,0xf7,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x97,0x98,0x9a,0x9e,0x9d,0xf7,0x03,0x02,0xf7,0x02,\r
-  0x04,0x04,0x05,0xf7,0x02,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x04,\r
-  0x03,0x03,0x03,0x03,0x07,0x06,0xf7,0x02,0x03,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x04,0x05,0x05,0x05,0x04,\r
-  0x02,0x02,0x03,0x05,0x05,0x05,0xf7,0x03,0xf7,0x06,0x07,0x07,0x07,\r
-  0x03,0xf7,0x05,0x06,0x06,0x06,0x06,0x05,0x03,0xf7,0x07,0x03,0x06,\r
-  0x05,0x04,0x04,0x04,0x04,0x04,0x04,0x03,0x04,0x05,0x06,0x06,0x05,\r
-  0x04,0x97,0x94,0x97,0x9c,0x9b,0x98,0x9a,0x94,0x9a,0x9c,0x9f,0x9f,\r
-  0x9e,0x9b,0x9a,0x9c,0x9b,0x9c,0x97,0x9d,0x9d,0x9c,0x9d,0x9e,0x9f,\r
-  0x9b,0x99,0x99,0x9b,0x99,0x98,0x98,0x98,0x97,0x97,0x98,0x99,0x9a,\r
-  0x9d,0x9e,0x9f,0x9b,0x94,0x97,0x27,0x23,0x23,0x23,0x23,0x23,0x23,\r
-  0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x26,0x2d,0x01,0x2a,0x2f,\r
-  0xf6,0x2f,0x2b,0x2a,0x2a,0x2a,0x2b,0x2f,0x02,0xf6,0x2f,0x2f,0x9a,\r
-  0x9a,0x9a,0x9a,0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,\r
-  0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9c,0x9a,0x97,0x97,0x98,0x98,\r
-  0x98,0x99,0x9a,0x9a,0x9b,0x9c,0x9d,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,\r
-  0x9d,0x2a,0x26,0x36,0x2c,0xf7,0xf7,0xf7,0xf7,0xf7,0x23,0xf7,0xf7,\r
-  0x2f,0x2c,0xf7,0xf7,0x01,0xf6,0x01,0xf7,0x01,0x2f,0x01,0x01,0x2c,\r
-  0xf7,0xf7,0xf7,0x27,0x35,0xf7,0x2c,0x2a,0x2c,0x2f,0x02,0x2f,0x2e,\r
-  0x2f,0x02,0xf7,0x29,0xf7,0x01,0xf7,0xf7,0x35,0xf6,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x02,0x2e,0x2d,0xf7,0x35,0x35,0x35,0x25,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x2e,0x36,0x35,0x35,0x35,0xf7,0xf7,0x2a,\r
-  0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x98,0x9a,\r
-  0x9f,0x9d,0x94,0x03,0x03,0xf7,0x02,0x04,0x04,0x05,0xf7,0x02,0x05,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x04,0x04,0x04,0x04,0x07,\r
-  0x06,0xf7,0x03,0xf7,0xf7,0xf7,0x02,0x02,0x02,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x04,0x05,0x05,0x04,0x05,0x03,0x02,0x03,0x05,0x05,\r
-  0x05,0x02,0xf7,0xf7,0x05,0x07,0x07,0x07,0x04,0xf7,0x05,0x06,0x06,\r
-  0x06,0x05,0x05,0x04,0x02,0x02,0x07,0x06,0x05,0x04,0x04,0x04,0x04,\r
-  0x04,0x05,0x05,0x06,0x06,0x03,0x02,0x02,0x03,0x9f,0x99,0x94,0x97,\r
-  0x9d,0x9a,0x98,0x97,0x97,0x9a,0x9d,0x9f,0x9e,0x9d,0x9a,0x9b,0x9c,\r
-  0x9c,0x9b,0x97,0x9d,0x9d,0x9d,0x9d,0x9d,0x9f,0x97,0x99,0x9a,0x9a,\r
-  0x99,0x98,0x98,0x99,0x98,0x97,0x98,0x99,0x9a,0x9d,0x9e,0x9f,0x9b,\r
-  0x94,0x2f,0x27,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,\r
-  0x23,0x23,0x23,0x23,0x28,0x2f,0x01,0x27,0xf6,0xf6,0x2e,0x2a,0x2a,\r
-  0x2a,0x2a,0x2e,0x02,0x02,0x2f,0x2f,0x9a,0x9a,0x9a,0x9b,0x9b,0x9c,\r
-  0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,\r
-  0x9c,0x9d,0x9d,0x9c,0x9a,0x98,0x97,0x98,0x99,0x99,0x9a,0x9a,0x9b,\r
-  0x9c,0x9d,0x9d,0x9d,0x97,0x97,0x97,0x97,0x94,0xf7,0xf7,0xf7,0x27,\r
-  0x36,0x2f,0xf7,0xf7,0xf7,0xf7,0x27,0xf7,0x01,0xf6,0x2e,0xf7,0xf7,\r
-  0xf6,0xf6,0xf7,0xf7,0x2e,0xf6,0x01,0xf7,0x25,0xf7,0xf7,0x2f,0x35,\r
-  0x2e,0xf7,0x2a,0x2a,0x2e,0x2f,0x2f,0x2e,0x2f,0x02,0xf7,0x29,0xf7,\r
-  0x01,0xf7,0xf7,0x35,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf6,0x2d,\r
-  0x28,0xf7,0x36,0x35,0x36,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x2a,0x35,0x35,0x2f,0xf7,0x28,0x2e,0xf6,0xf7,0xf7,0xf7,0x02,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x9a,0x9f,0x9c,0x94,0x9c,0x02,0xf7,\r
-  0x02,0x04,0x04,0x05,0xf7,0x02,0x04,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x06,0x06,0x06,0x06,0x07,0x07,0xf7,0x04,0xf7,0xf7,\r
-  0xf7,0x03,0x04,0x04,0x03,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0x03,0x05,\r
-  0x05,0x05,0x05,0x04,0x03,0x03,0x04,0x04,0x05,0x03,0xf7,0x04,0x03,\r
-  0x07,0x07,0x07,0x06,0xf7,0x05,0x06,0x06,0x05,0x05,0x05,0x04,0x04,\r
-  0xf7,0x05,0x06,0x05,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x03,0x02,\r
-  0xf7,0xf7,0xf7,0xf7,0x94,0x9b,0x9a,0x94,0x97,0x9d,0x99,0x99,0x94,\r
-  0x99,0x9b,0x9f,0x9f,0x9f,0x9d,0x9a,0x9b,0x9b,0x9d,0x9a,0x9a,0x9d,\r
-  0x9d,0x9d,0x9d,0x9e,0x9f,0x97,0x99,0x9a,0x9a,0x98,0x98,0x99,0x99,\r
-  0x98,0x97,0x98,0x99,0x9a,0x9d,0x9e,0x9f,0x9a,0xf7,0x2f,0x27,0x23,\r
-  0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x25,\r
-  0x2b,0x01,0x2f,0x2a,0xf6,0x2f,0x2b,0x2a,0x2a,0x2a,0x2c,0x2f,0x01,\r
-  0xf6,0x2f,0x9a,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,\r
-  0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9c,\r
-  0x9b,0x98,0x97,0x98,0x9a,0x9b,0x9c,0x9d,0x9c,0x9c,0x9c,0x9c,0x94,\r
-  0x94,0x97,0x97,0x98,0xf7,0x01,0x01,0xf7,0xf7,0x23,0x27,0xf7,0xf7,\r
-  0xf7,0x2f,0x2f,0x01,0x01,0x2f,0xf6,0xf7,0x01,0x2f,0x01,0xf7,0x01,\r
-  0x2f,0x01,0xf7,0x2c,0xf7,0xf7,0xf7,0x36,0x35,0xf7,0x2c,0x2a,0x2b,\r
-  0x2d,0x2e,0x2d,0x2f,0x01,0xf7,0x28,0xf7,0x01,0xf7,0xf7,0x36,0x2e,\r
-  0xf7,0xf7,0xf7,0xf7,0x01,0xf7,0x01,0x2e,0x27,0xf7,0x23,0x35,0xf6,\r
-  0xf7,0xf7,0x2f,0x27,0x25,0x28,0x2f,0xf7,0xf7,0xf7,0x36,0x36,0xf7,\r
-  0x27,0x2d,0xf7,0xf7,0x2f,0x25,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x2f,0x9f,0x9a,0x94,0x9e,0x97,0xf7,0x02,0x04,0x04,0x05,0xf7,0x02,\r
-  0x04,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x05,0x05,0x06,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x02,0x03,0x02,0xf7,0x02,0x04,0x04,0x04,0x04,\r
-  0x03,0x02,0xf7,0xf7,0xf7,0xf7,0x02,0x04,0x05,0x05,0x05,0x04,0x04,\r
-  0x04,0x04,0x04,0x04,0x04,0xf7,0x06,0x02,0x07,0x07,0x07,0x07,0xf7,\r
-  0x04,0x06,0x06,0x05,0x04,0x04,0x04,0x04,0x03,0xf7,0x06,0x05,0x04,\r
-  0x04,0x04,0x04,0x05,0x04,0xf7,0xf7,0xf7,0xf7,0x04,0x05,0x04,0x99,\r
-  0x94,0x9a,0x99,0x94,0x99,0x9c,0x98,0x9a,0x94,0x9a,0x9c,0x9f,0x9f,\r
-  0x9e,0x9c,0x9a,0x9c,0x9a,0x9d,0x98,0x9d,0x9d,0x9c,0x9d,0x9e,0x9f,\r
-  0x9e,0x98,0x99,0x9b,0x99,0x98,0x99,0x9a,0x9a,0x98,0x97,0x98,0x99,\r
-  0x9a,0x9d,0x9e,0x9f,0x2e,0xf7,0x2f,0x27,0x23,0x23,0x23,0x23,0x23,\r
-  0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x27,0x2d,0x01,0x2a,0x2f,\r
-  0xf6,0x2f,0x2a,0x2a,0x2a,0x2a,0x2f,0x01,0x02,0x2f,0x9a,0x9b,0x9c,\r
-  0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,\r
-  0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9c,0x9b,0x99,0x97,0x97,\r
-  0x9c,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x97,0x97,0x97,0x98,0x99,0xf7,\r
-  0x01,0xf6,0x2f,0xf6,0xf7,0x29,0x2a,0xf7,0xf7,0xf7,0x27,0x02,0x02,\r
-  0x01,0x2f,0x01,0xf7,0xf6,0xf6,0xf7,0xf7,0x2e,0x02,0x01,0xf7,0x25,\r
-  0xf7,0xf7,0x2b,0x35,0xf6,0xf7,0x2a,0x2a,0x2c,0x2c,0x2c,0x2f,0x01,\r
-  0xf7,0x28,0xf7,0x02,0xf7,0xf7,0x36,0x2e,0xf7,0xf7,0xf7,0xf7,0x2c,\r
-  0xf7,0xf7,0x2f,0x29,0x01,0x27,0x27,0xf7,0xf7,0x28,0x23,0x36,0x36,\r
-  0x23,0x25,0x28,0x01,0xf7,0x2a,0x26,0x26,0x2c,0x2f,0xf7,0xf7,0x36,\r
-  0xf7,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2c,0x99,0x97,0x9e,0x94,\r
-  0x94,0x02,0x04,0x04,0x05,0xf7,0x02,0x04,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,\r
-  0x05,0x04,0x02,0x02,0x02,0x04,0x07,0x07,0x07,0x07,0x07,0x07,0x02,\r
-  0x02,0x03,0xf7,0x02,0x04,0x04,0x05,0x05,0x04,0x03,0x02,0xf7,0xf7,\r
-  0xf7,0x02,0x04,0x05,0x05,0x04,0x05,0x04,0x04,0x04,0x04,0x04,0x04,\r
-  0xf7,0x04,0xf7,0x07,0x07,0x07,0x07,0xf7,0x02,0x06,0x06,0x05,0x04,\r
-  0x04,0x04,0x04,0x03,0x02,0x03,0x05,0x05,0x04,0x05,0x05,0x05,0x03,\r
-  0xf7,0xf7,0x02,0x06,0x07,0x07,0x07,0x03,0x9b,0x94,0x9b,0x97,0x94,\r
-  0x9d,0x9a,0x98,0x97,0x97,0x9a,0x9e,0x9f,0x9f,0x9e,0x9b,0x9a,0x9c,\r
-  0x9b,0x9c,0x97,0x9d,0x9d,0x9c,0x9d,0x9d,0x9f,0x99,0x99,0x99,0x9b,\r
-  0x99,0x98,0x9a,0x9b,0x9a,0x99,0x97,0x98,0x99,0x9a,0x9d,0x9f,0x2a,\r
-  0x2f,0xf7,0x2f,0x27,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,\r
-  0x23,0x23,0x23,0x23,0x28,0x2f,0x01,0x27,0xf6,0xf6,0x2d,0x29,0x29,\r
-  0x2a,0x2a,0xf6,0x01,0x2f,0x9a,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,\r
-  0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9c,0x9c,0x9c,\r
-  0x9c,0x9c,0x9d,0x9d,0x9d,0x9c,0x9a,0x98,0x97,0x9a,0x9d,0x9d,0x9d,\r
-  0x9c,0x9c,0x97,0x97,0x97,0x98,0x99,0xf7,0x01,0x02,0x2f,0x2f,0x2f,\r
-  0xf7,0x2a,0x2f,0xf7,0xf7,0xf7,0x2a,0x2f,0x02,0x01,0x2e,0xf7,0x01,\r
-  0x2f,0x01,0xf7,0x2f,0xf6,0x01,0x01,0x28,0xf7,0xf7,0xf7,0x36,0x36,\r
-  0xf7,0x2a,0x2a,0x2a,0x2c,0x2c,0x2e,0xf7,0xf7,0x28,0xf7,0xf6,0xf7,\r
-  0xf7,0x36,0x2e,0xf7,0xf7,0xf7,0x01,0x28,0xf7,0xf7,0x2f,0x2a,0x2a,\r
-  0x36,0xf7,0xf7,0x29,0x25,0x25,0x26,0x26,0x26,0x27,0x27,0x2a,0xf7,\r
-  0xf7,0x23,0x29,0x01,0xf7,0xf7,0x2c,0xf7,0x01,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x01,0x2e,0xf7,0x9a,0x9f,0x94,0x94,0x99,0x04,0x05,0x05,0xf7,\r
-  0x02,0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x04,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x03,0x07,0x07,0x07,0x07,0x07,0x03,0xf7,0x06,0x02,0x02,0x03,\r
-  0x04,0x04,0x05,0x04,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0x03,0x04,0x05,\r
-  0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0xf7,0x03,0xf7,0x07,0x07,\r
-  0x07,0x07,0x03,0xf7,0x06,0x06,0x05,0x04,0x04,0x04,0x04,0x03,0x03,\r
-  0xf7,0x05,0x05,0x05,0x05,0x06,0x04,0xf7,0x02,0x02,0x06,0x07,0x07,\r
-  0x07,0x07,0xf7,0x02,0x9b,0x94,0x9e,0x94,0x97,0x9d,0x99,0x99,0x94,\r
-  0x99,0x9c,0x9f,0x9f,0x9f,0x9d,0x9a,0x9a,0x9c,0x9c,0x9b,0x97,0x9d,\r
-  0x9d,0x9d,0x9d,0x9d,0x9f,0x97,0x99,0x9a,0x9a,0x98,0x99,0x9b,0x9c,\r
-  0x9c,0x99,0x97,0x98,0x99,0x9a,0x9d,0x2a,0x2a,0x2f,0xf7,0x2f,0x26,\r
-  0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,\r
-  0x2a,0x02,0x2f,0x29,0x02,0xf6,0x2c,0x29,0x29,0x29,0x2d,0x01,0xf6,\r
-  0x99,0x9a,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,\r
-  0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,\r
-  0x9d,0x9d,0x9b,0x99,0x97,0x99,0x9c,0x9c,0x9c,0x9c,0x97,0x97,0x97,\r
-  0x98,0x99,0x01,0x02,0x02,0x02,0x2f,0x2f,0x2f,0xf7,0x23,0x01,0xf7,\r
-  0x2e,0x2c,0x2e,0x2f,0xf7,0x2f,0x2d,0x2f,0x2f,0x2f,0xf7,0x2f,0xf6,\r
-  0x01,0x01,0x02,0x2d,0xf7,0xf7,0x26,0x35,0xf7,0x2f,0x2a,0x2a,0x2b,\r
-  0x2c,0x2e,0xf7,0xf7,0x28,0xf7,0xf6,0xf7,0xf7,0x36,0x2e,0xf7,0xf7,\r
-  0xf7,0x01,0x25,0xf7,0xf7,0x2f,0x2a,0x25,0x36,0xf7,0x2f,0x28,0x27,\r
-  0x2a,0x2f,0xf6,0x2f,0x2b,0x2a,0x2c,0x2f,0xf7,0x28,0x2c,0xf7,0xf7,\r
-  0xf7,0xf7,0x2f,0x2c,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0xf7,0x2f,0x03,\r
-  0x94,0x94,0x99,0x9d,0x05,0x04,0xf7,0x02,0x05,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x06,0x04,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x07,0x07,\r
-  0x07,0x07,0x05,0xf7,0x06,0x02,0x02,0x02,0x03,0x04,0x04,0x04,0x03,\r
-  0x02,0xf7,0xf7,0xf7,0xf7,0x02,0x04,0x05,0x05,0x04,0x04,0x04,0x04,\r
-  0x04,0x04,0x04,0xf7,0x02,0xf7,0x06,0x07,0x07,0x07,0x05,0xf7,0x05,\r
-  0x06,0x06,0x05,0x04,0x04,0x04,0x04,0x03,0x02,0x02,0x06,0x06,0x06,\r
-  0x04,0x02,0x02,0x02,0x05,0x07,0x07,0x07,0x07,0x07,0xf7,0xf7,0x02,\r
-  0x99,0x94,0x9c,0x94,0x9a,0x9b,0x98,0x99,0x94,0x9a,0x9e,0x9f,0x9f,\r
-  0x9f,0x9d,0x9a,0x9b,0x9b,0x9d,0x9a,0x9a,0x9d,0x9d,0x9d,0x9d,0x9d,\r
-  0x9f,0x97,0x99,0x9a,0x9a,0x98,0x9a,0x9c,0x9d,0x9c,0x99,0x97,0x98,\r
-  0x99,0x9a,0x2a,0x2a,0x2a,0x2f,0xf7,0x2f,0x25,0x23,0x23,0x23,0x23,\r
-  0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x25,0x2c,0x01,0x2e,0x2c,\r
-  0x02,0x2f,0x2a,0x29,0x29,0x2a,0x2f,0x01,0x98,0x9a,0x9b,0x9c,0x9c,\r
-  0x9c,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,\r
-  0x9c,0x9d,0x9d,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9b,0x9a,\r
-  0x99,0x99,0x9b,0x9c,0x9c,0x97,0x97,0x97,0x99,0x9a,0xf6,0xf6,0xf6,\r
-  0x02,0x02,0xf6,0x2f,0x2f,0xf7,0x36,0x2a,0x27,0x2a,0x2d,0x2e,0x2e,\r
-  0xf7,0x2f,0x2e,0x2f,0x2e,0x2f,0x2f,0x2f,0xf7,0x02,0x01,0x25,0xf7,\r
-  0xf7,0x2e,0x35,0xf6,0xf7,0x2a,0x2a,0x2a,0x2c,0x2e,0xf7,0xf6,0x27,\r
-  0xf7,0x2f,0xf7,0xf7,0x36,0x2e,0xf7,0xf7,0xf7,0x01,0x23,0xf7,0xf7,\r
-  0x2f,0x2d,0x25,0x28,0xf7,0x2c,0x2a,0x2e,0x01,0xf7,0xf7,0xf7,0x02,\r
-  0x2f,0x2f,0xf6,0xf7,0x2d,0xf7,0xf7,0xf7,0xf7,0x2f,0x2d,0x01,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0x36,0x94,0x97,0x99,0x9d,0x9f,0x04,\r
-  0xf7,0x02,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x05,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x04,0x07,0x07,0x07,0x05,0xf7,0x02,\r
-  0x05,0x02,0x02,0x03,0x03,0x04,0x04,0x03,0x02,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x02,0x05,0x05,0x04,0x04,0x04,0x03,0x03,0x03,0x04,0xf7,0xf7,\r
-  0xf7,0x05,0x07,0x07,0x07,0x07,0xf7,0x02,0x06,0x06,0x06,0x05,0x04,\r
-  0x04,0x04,0x04,0x03,0xf7,0x05,0x07,0x05,0x03,0x02,0x03,0x06,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0xf7,0xf7,0xf7,0x03,0x94,0x99,0x97,0x94,\r
-  0x9d,0x9a,0x99,0x94,0x98,0x9b,0x9f,0x9f,0x9f,0x9e,0x9c,0x9a,0x9c,\r
-  0x9a,0x9d,0x98,0x9d,0x9d,0x9c,0x9d,0x9d,0x9f,0x9e,0x98,0x99,0x9b,\r
-  0x99,0x98,0x9b,0x9d,0x9e,0x9c,0x99,0x97,0x98,0x99,0x2e,0x2a,0x2a,\r
-  0x2a,0x2f,0xf7,0x2f,0x25,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,\r
-  0x23,0x23,0x23,0x23,0x27,0x2e,0x01,0x2a,0x2f,0xf6,0x2f,0x2a,0x29,\r
-  0x2a,0x2a,0x02,0x94,0x99,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,\r
-  0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9c,0x9d,0x9d,0x9c,\r
-  0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9c,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x97,0x97,0x97,0x99,0x9a,0x2f,0xf6,0x02,0x01,0x01,0x01,0x02,0x2f,\r
-  0x2f,0xf7,0x23,0x27,0x2a,0x2e,0x2e,0x2e,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x2f,0x2d,0x2f,0x01,0x02,0x02,0x27,0xf7,0xf7,0xf7,0x36,0x25,0xf7,\r
-  0x2c,0x2a,0x2a,0x2c,0x2e,0xf7,0x2f,0x27,0xf7,0x2f,0xf7,0xf7,0x36,\r
-  0x2e,0xf7,0xf7,0xf7,0x01,0x23,0xf7,0xf7,0x2f,0xf6,0x27,0x02,0x01,\r
-  0x2c,0x2d,0x01,0xf7,0xf7,0xf7,0xf7,0x01,0x02,0xf6,0xf7,0xf7,0x02,\r
-  0xf7,0xf7,0xf7,0x02,0xf7,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0xf7,\r
-  0x36,0x2f,0x94,0x99,0x9d,0x9f,0x9b,0xf7,0x02,0x06,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x05,0x02,0xf7,0xf7,0xf7,0x03,0x04,0x04,0x03,\r
-  0xf7,0xf7,0x05,0x07,0x07,0x05,0xf7,0x02,0x06,0x03,0x02,0x02,0x03,\r
-  0x03,0x03,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x05,0x04,\r
-  0x04,0x04,0x03,0x03,0x03,0x04,0xf7,0xf7,0xf7,0x05,0x07,0x07,0x07,\r
-  0x07,0x02,0xf7,0x04,0x06,0x06,0x06,0x05,0x05,0x04,0x04,0x03,0xf7,\r
-  0x03,0x07,0x06,0x04,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x02,0xf7,0xf7,0xf7,0x9e,0x94,0x9f,0x94,0x97,0x9d,0x99,0x9a,0x94,\r
-  0x9a,0x9d,0x9f,0x03,0x9f,0x9e,0x9b,0x9a,0x9c,0x9b,0x9c,0x97,0x9d,\r
-  0x9d,0x9c,0x9d,0x9d,0x9f,0x9a,0x99,0x99,0x9a,0x99,0x99,0x9c,0x9e,\r
-  0x9e,0x9c,0x99,0x97,0x98,0x2f,0x2e,0x2a,0x2a,0x2a,0x2f,0xf7,0x2f,\r
-  0x25,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,\r
-  0x27,0x2f,0x01,0x28,0xf6,0xf6,0x2d,0x29,0x2a,0x29,0x2c,0x94,0x97,\r
-  0x9a,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,\r
-  0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9c,0x9d,0x9c,0x9c,0x9c,0x9b,0x9b,\r
-  0x9d,0x9d,0x9a,0x99,0x99,0x9a,0x9a,0x9a,0x97,0x97,0x97,0x99,0x9a,\r
-  0x2f,0xf6,0x01,0xf7,0xf7,0xf7,0x01,0x02,0xf6,0xf7,0x27,0x27,0x2c,\r
-  0x2e,0x2f,0xf7,0xf7,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0xf7,0xf7,\r
-  0x2f,0x2b,0xf7,0xf7,0xf7,0x27,0x36,0xf7,0x2f,0x2a,0x2a,0x2c,0x2e,\r
-  0xf7,0x2f,0x27,0xf7,0x2f,0xf7,0xf7,0x36,0x2e,0xf7,0xf7,0xf7,0x01,\r
-  0x36,0xf7,0xf7,0x2f,0xf7,0x27,0xf7,0x2f,0x2e,0xf6,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x02,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x2d,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2e,0x27,0xf7,0x9a,0x9d,0x9e,\r
-  0x9c,0x97,0x02,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x04,\r
-  0xf7,0xf7,0xf7,0x02,0x05,0x06,0x06,0x06,0x04,0xf7,0xf7,0x07,0x07,\r
-  0x06,0x02,0xf7,0x03,0x06,0x02,0x02,0x02,0x03,0x03,0x02,0x02,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x03,0x05,0x04,0x04,0x03,0x04,0x04,\r
-  0x03,0xf7,0x02,0xf7,0x05,0x07,0x06,0x07,0x07,0x05,0xf7,0xf7,0x05,\r
-  0x06,0x06,0x06,0x05,0x05,0x04,0x03,0xf7,0x02,0x06,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x03,0x03,0xf7,0xf7,0x01,\r
-  0x9a,0x94,0x9a,0x94,0x9b,0x9c,0x99,0x98,0x97,0x9a,0x9f,0x03,0x9f,\r
-  0x9f,0x9d,0x9a,0x9a,0x9c,0x9c,0x9c,0x97,0x9d,0x9d,0x9c,0x9d,0x9c,\r
-  0x9f,0x97,0x99,0x9a,0x9a,0x98,0x9a,0x9e,0x9f,0x9e,0x9d,0x99,0x97,\r
-  0x2f,0x2f,0x2d,0x2a,0x2a,0x2a,0x2f,0xf7,0x2f,0x25,0x23,0x23,0x23,\r
-  0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x29,0x2f,0x02,0x28,\r
-  0x02,0xf6,0x2b,0x29,0x2a,0x2a,0x99,0x94,0x98,0x9a,0x9b,0x9b,0x9b,\r
-  0x9b,0x9b,0x9a,0x9a,0x9a,0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,\r
-  0x9c,0x9d,0x9c,0x9c,0x9c,0x9c,0x9a,0x9a,0x9b,0x9d,0x9c,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x97,0x97,0x97,0x99,0x9a,0x2f,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x02,0x01,0xf7,0x28,0x02,0x2e,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x2f,0x2d,0x2e,0xf7,0xf7,\r
-  0x2e,0x35,0xf7,0xf6,0x2a,0x2a,0x2c,0x2e,0xf7,0x2c,0x27,0xf7,0x2f,\r
-  0xf7,0xf7,0x23,0x2e,0xf7,0xf7,0xf7,0x01,0x36,0xf7,0xf7,0x2f,0xf7,\r
-  0x28,0xf7,0x2f,0x2f,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf6,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x2c,0xf6,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x02,0xf7,0x25,0xf7,0xf7,0x9b,0x9d,0x9e,0x94,0x97,0x05,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x06,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x04,0xf7,0xf7,0xf7,0x03,0x06,\r
-  0x06,0x06,0x06,0x06,0x04,0xf7,0x03,0x07,0x07,0x02,0xf7,0xf7,0x06,\r
-  0x04,0x02,0x02,0x02,0x02,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x02,0x03,0x04,0x04,0x04,0x04,0x04,0xf7,0xf7,0x02,0xf7,0x05,\r
-  0x07,0x05,0x06,0x07,0x07,0x02,0xf7,0xf7,0x04,0x05,0x06,0x05,0x05,\r
-  0x04,0x02,0xf7,0x02,0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x02,0x03,0x03,0xf7,0xf7,0x03,0x94,0x9b,0x97,0x97,\r
-  0x9e,0x9b,0x9a,0x94,0x99,0x9c,0x9f,0x03,0x9f,0x9f,0x9d,0x9a,0x9b,\r
-  0x9b,0x9d,0x9a,0x9a,0x9d,0x9d,0x9d,0x9d,0x9d,0x9f,0x97,0x99,0x9a,\r
-  0x99,0x98,0x9b,0x9e,0x9f,0x9f,0x9e,0x99,0x2f,0x2f,0x2f,0x2d,0x2a,\r
-  0x2a,0x2a,0x2f,0xf7,0x2e,0x25,0x23,0x23,0x23,0x23,0x23,0x23,0x23,\r
-  0x23,0x23,0x23,0x23,0x23,0x2a,0x01,0x2f,0x2a,0x02,0xf6,0x2a,0x2a,\r
-  0x2a,0x9e,0x97,0x94,0x99,0x9b,0x9b,0x9b,0x9b,0x9b,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9c,0x9c,\r
-  0x9c,0x9b,0x99,0x9a,0x9d,0x9d,0x9b,0x9a,0x9a,0x9a,0x9a,0x97,0x97,\r
-  0x98,0x99,0x9b,0x2f,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf6,0xf7,\r
-  0xf7,0x2c,0x2f,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x2e,0x2e,0x2c,0xf7,0xf7,0x01,0x35,0xf7,0xf7,0x2a,\r
-  0x2a,0x2c,0x2f,0xf7,0x2a,0x27,0x01,0x2f,0xf7,0xf7,0x23,0x2e,0xf7,\r
-  0xf7,0xf7,0x01,0x36,0xf7,0xf7,0xf6,0xf7,0x29,0xf7,0xf6,0x2f,0x01,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x01,0x02,0x2c,0x2c,0x2e,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0xf7,0x01,0xf7,0xf7,\r
-  0x9c,0x9f,0x94,0x97,0x9d,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,\r
-  0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x04,0xf7,0xf7,0xf7,0x04,0x06,0x06,0x06,0x06,0x06,0x05,\r
-  0x04,0xf7,0x06,0x07,0x03,0x02,0xf7,0x02,0x06,0x03,0x02,0x02,0x02,\r
-  0x02,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x03,\r
-  0x03,0x03,0x02,0xf7,0xf7,0x04,0xf7,0x06,0x07,0x04,0x04,0x07,0x07,\r
-  0x05,0xf7,0xf7,0xf7,0x02,0x03,0x03,0x03,0xf7,0xf7,0xf7,0x02,0x05,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x02,0x03,\r
-  0x03,0x01,0xf7,0xf7,0x9d,0x94,0x9f,0x94,0x98,0x9e,0x9c,0x9b,0x94,\r
-  0x9a,0x9d,0x03,0x03,0x9f,0x9f,0x9c,0x9a,0x9c,0x9a,0x9d,0x99,0x9c,\r
-  0x9d,0x9c,0x9d,0x9d,0x9f,0x9f,0x98,0x99,0x9b,0x99,0x99,0x9d,0x9f,\r
-  0x9f,0x9f,0x9e,0x2e,0x2f,0x2f,0x2f,0x2d,0x2a,0x2a,0x2a,0x2f,0xf7,\r
-  0x2e,0x25,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,\r
-  0x25,0x2c,0x01,0x2c,0x2e,0x02,0x2f,0x2a,0x2a,0x9e,0x9d,0x94,0x97,\r
-  0x9a,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9a,0x9a,0x9a,0x9a,0x9a,0x9b,\r
-  0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9b,0x99,0x99,0x9c,\r
-  0x9d,0x9c,0x9a,0x9a,0x9a,0x9a,0x97,0x97,0x98,0x99,0x9b,0x2f,0x01,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf6,0xf7,0xf7,0xf7,0x2e,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2e,\r
-  0x2c,0x2a,0xf7,0xf7,0x35,0xf7,0xf7,0x2c,0x2a,0x2c,0x2f,0xf7,0x2a,\r
-  0x27,0x01,0x2f,0xf7,0xf7,0x25,0x2f,0xf7,0xf7,0xf7,0xf7,0x36,0xf7,\r
-  0xf7,0x02,0xf7,0x2a,0xf7,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x01,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x2f,0x2f,0x2a,0x2c,0x2d,\r
-  0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x2e,0xf7,0xf7,0x2f,0x9d,0x99,0x97,0x98,0xf7,\r
-  0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x05,0x05,0x05,0x05,0x05,\r
-  0x05,0x05,0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x05,0x02,0xf7,\r
-  0xf7,0x04,0x06,0x06,0x06,0x06,0x06,0x05,0x05,0x02,0x02,0x07,0x05,\r
-  0x02,0xf7,0xf7,0x04,0x06,0x02,0x02,0x02,0x02,0x02,0xf7,0xf7,0xf7,\r
-  0x02,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x02,0xf7,0x07,0x06,0x03,0x03,0x05,0x07,0x07,0x03,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x06,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x01,0x01,0x02,0x01,0xf7,0xf7,0x01,\r
-  0x9a,0x94,0x9c,0x97,0x9c,0x9e,0x9d,0x97,0x97,0x9b,0x9f,0x9f,0x03,\r
-  0x9f,0x9e,0x9c,0x9a,0x9c,0x9a,0x9d,0x97,0x9d,0x9d,0x9c,0x9d,0x9d,\r
-  0x9f,0x9a,0x99,0x99,0x9a,0x98,0x99,0x9e,0x9f,0x9f,0x9f,0x2a,0x2d,\r
-  0x2f,0x2f,0x2f,0x2d,0x2a,0x2a,0x2a,0x2f,0xf7,0x2c,0x25,0x23,0x23,\r
-  0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x27,0x2d,0x01,0x2a,\r
-  0x2f,0x02,0x2f,0x2a,0x9e,0x9e,0x9b,0x94,0x99,0x9a,0x9b,0x9c,0x9c,\r
-  0x9b,0x9b,0x9b,0x9a,0x9a,0x9a,0x9a,0x9a,0x9b,0x9b,0x9b,0x9c,0x9c,\r
-  0x9c,0x9c,0x9c,0x9c,0x9b,0x99,0x99,0x9b,0x9d,0x9c,0x9a,0x9a,0x9a,\r
-  0x9a,0x97,0x97,0x98,0x9a,0x9b,0x2f,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x01,0x02,0xf7,0xf7,0xf6,0xf7,0xf7,0xf7,0xf6,0x36,0xf7,0x02,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2e,0x28,0x01,0xf7,0x36,\r
-  0xf7,0x01,0x2b,0x2b,0x2c,0x2f,0xf7,0x28,0x27,0x02,0x2f,0xf7,0xf7,\r
-  0x27,0x2f,0xf7,0xf7,0xf7,0xf7,0x35,0xf7,0xf7,0x01,0xf7,0x2a,0xf7,\r
-  0x01,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf6,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x2f,0x2f,0x2e,0x2a,0x2c,0x2d,0x2f,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0xf7,0x02,\r
-  0xf7,0xf7,0x2f,0x9f,0x94,0x97,0x03,0x01,0x07,0x07,0x07,0x07,0x06,\r
-  0x05,0x05,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x05,0x05,0x06,0x06,\r
-  0x07,0x07,0x07,0x07,0x07,0x06,0x02,0xf7,0xf7,0x03,0x06,0x06,0x06,\r
-  0x06,0x05,0x05,0x05,0x04,0xf7,0x06,0x07,0x03,0x02,0xf7,0x02,0x06,\r
-  0x05,0x02,0x02,0x02,0x02,0xf7,0xf7,0x02,0x04,0x05,0x05,0x04,0x02,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x04,0xf7,0x03,0x07,0x04,0x02,\r
-  0x03,0x04,0x06,0x07,0x07,0x04,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x03,0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x97,0x9b,0x98,0x97,\r
-  0x9e,0x9f,0x9e,0x94,0x99,0x9c,0x9f,0x03,0x9f,0x9f,0x9e,0x9b,0x9a,\r
-  0x9c,0x9c,0x9c,0x97,0x9d,0x9d,0x9c,0x9d,0x9d,0x9f,0x97,0x99,0x9a,\r
-  0x9a,0x98,0x9a,0x9f,0x9f,0x9f,0x28,0x2a,0x2d,0x2f,0x2f,0x2f,0x2d,\r
-  0x2a,0x2a,0x2a,0x2f,0xf7,0x2d,0x25,0x23,0x23,0x23,0x23,0x23,0x23,\r
-  0x23,0x23,0x23,0x23,0x23,0x27,0x2f,0x01,0x28,0x02,0xf6,0x2c,0x9f,\r
-  0x9e,0x9e,0x98,0x94,0x99,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9b,0x9b,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,\r
-  0x99,0x99,0x9a,0x9d,0x9c,0x9b,0x9a,0x9a,0x9a,0x97,0x97,0x98,0x9a,\r
-  0x9b,0x2f,0x01,0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0x01,0xf6,0xf7,0xf7,\r
-  0x01,0xf7,0xf7,0xf7,0x2c,0x25,0xf7,0x01,0xf7,0xf7,0x01,0xf7,0xf7,\r
-  0xf7,0xf7,0x2f,0x2d,0x2a,0x29,0x2f,0x23,0xf7,0x2f,0x2b,0x2b,0x2c,\r
-  0x2f,0xf7,0x28,0x27,0xf6,0x2f,0xf7,0xf7,0x27,0x2f,0xf7,0xf7,0xf7,\r
-  0xf7,0x35,0xf7,0xf7,0xf7,0xf7,0x2c,0xf7,0x01,0xf6,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0xf6,0xf6,0x2b,\r
-  0x2a,0x2c,0x2d,0x2f,0xf6,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2e,0x99,0x94,\r
-  0x98,0xf7,0x01,0x07,0x07,0x07,0x06,0x05,0x04,0x04,0x04,0x04,0x04,\r
-  0x04,0x04,0x05,0x05,0x05,0x05,0x05,0x06,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x04,0xf7,0xf7,0xf7,0x05,0x06,0x06,0x06,0x06,0x05,0x05,0x05,\r
-  0x02,0x02,0x07,0x05,0x02,0x02,0xf7,0x02,0x06,0x05,0x02,0x02,0x02,\r
-  0x02,0x03,0x04,0x06,0x05,0x04,0x04,0x05,0x05,0x03,0x02,0x02,0x02,\r
-  0x03,0x03,0xf7,0xf7,0x06,0x07,0x02,0x02,0x03,0x03,0x04,0x06,0x07,\r
-  0x07,0x05,0x03,0x03,0x02,0x03,0x04,0x04,0x06,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x9e,0x94,0x03,0x97,0x98,0x9e,0x9f,0x9e,0x94,\r
-  0x9a,0x9d,0x9f,0x03,0x9f,0x9f,0x9d,0x9a,0x9a,0x9c,0x9d,0x9a,0x98,\r
-  0x9d,0x9d,0x9d,0x9d,0x9d,0x9f,0x97,0x99,0x9a,0x99,0x98,0x9d,0x9f,\r
-  0x9f,0x27,0x28,0x2a,0x2d,0x2f,0x2f,0x2f,0x2d,0x2a,0x2a,0x2a,0x2f,\r
-  0xf7,0x2d,0x25,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,\r
-  0x23,0x28,0x2f,0x01,0x28,0x02,0xf6,0x9e,0x9e,0x9e,0x9e,0x94,0x97,\r
-  0x9a,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9b,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9a,0x98,0x9a,0x9d,0x9c,\r
-  0x9b,0x9a,0x9a,0x9a,0x98,0x98,0x99,0x9a,0x9b,0x2f,0x01,0xf7,0xf7,\r
-  0xf7,0x01,0xf7,0xf7,0x01,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0x01,0xf7,0x01,0xf7,0xf7,0xf7,0xf7,0x01,0x2e,0x2a,\r
-  0x26,0x28,0x2c,0xf7,0x2e,0x2b,0x2b,0x2c,0x2f,0xf7,0x27,0x27,0x2f,\r
-  0x2f,0xf7,0xf7,0x2a,0x2f,0xf7,0xf7,0xf7,0xf7,0x36,0x02,0xf7,0xf7,\r
-  0xf7,0x2c,0xf7,0xf7,0xf6,0x01,0xf7,0xf7,0xf7,0xf7,0x02,0x2f,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x01,0xf7,0xf6,0x2a,0x2a,0x2c,0x2d,0x2f,0x2f,\r
-  0x2f,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,\r
-  0xf7,0x2e,0xf7,0xf7,0x2f,0x2c,0x94,0x97,0x03,0xf7,0xf7,0x07,0x07,\r
-  0x05,0x04,0x04,0x04,0x03,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x06,\r
-  0x06,0x05,0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x06,0x02,0xf7,0xf7,\r
-  0x03,0x06,0x06,0x06,0x06,0x06,0x05,0x05,0x03,0xf7,0x07,0x07,0x03,\r
-  0x02,0xf7,0xf7,0x03,0x06,0x06,0x04,0x03,0x04,0x05,0x06,0x04,0x02,\r
-  0xf7,0xf7,0xf7,0xf7,0x02,0x03,0x03,0x02,0xf7,0xf7,0xf7,0x04,0x07,\r
-  0x05,0xf7,0x02,0x03,0x03,0x03,0x05,0x07,0x07,0x07,0x07,0x06,0x06,\r
-  0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0xf7,\r
-  0x97,0x97,0x02,0x98,0x99,0x9e,0x9e,0x9a,0x97,0x9a,0x9e,0x9f,0x9f,\r
-  0x9f,0x9f,0x9d,0x9a,0x9c,0x9b,0x9d,0x99,0x9b,0x9d,0x9c,0x9d,0x9d,\r
-  0x9e,0x9f,0x98,0x99,0x9b,0x99,0x99,0x9e,0x9f,0x27,0x27,0x27,0x2a,\r
-  0x2d,0x2f,0x2f,0x2f,0x2e,0x2a,0x2a,0x2a,0x2f,0x01,0x2c,0x25,0x23,\r
-  0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x2a,0x02,0xf6,\r
-  0x2a,0x02,0x97,0x9e,0x9e,0x9e,0x9c,0x94,0x98,0x9a,0x9b,0x9c,0x9d,\r
-  0x9d,0x9d,0x9c,0x9c,0x9b,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9b,0x9b,\r
-  0x9c,0x9c,0x9c,0x9a,0x98,0x99,0x9d,0x9d,0x9b,0x9a,0x9a,0x9a,0x98,\r
-  0x98,0x99,0x9a,0x9b,0x2f,0x01,0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0x01,\r
-  0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0x01,\r
-  0x02,0xf7,0x2a,0x2a,0xf7,0xf7,0x2f,0x2c,0x26,0x36,0xf7,0xf7,0x2c,\r
-  0x2b,0x2b,0x2c,0x2f,0xf7,0x27,0x26,0x2f,0x2f,0xf7,0xf7,0x2b,0xf6,\r
-  0xf7,0xf7,0xf7,0xf7,0x23,0x2e,0xf7,0xf7,0xf7,0x2d,0xf7,0xf7,0x02,\r
-  0x01,0xf7,0xf7,0xf7,0xf7,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x01,0x2e,0x2a,0x2b,0x2c,0x2d,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0xf7,0x01,0xf7,0xf7,0x01,0x2f,\r
-  0x2e,0x94,0x97,0xf7,0x01,0xf7,0x07,0x06,0x05,0x04,0x03,0x03,0x03,\r
-  0x03,0x03,0x04,0x06,0x06,0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x06,\r
-  0x07,0x07,0x07,0x07,0x07,0x04,0xf7,0xf7,0xf7,0x04,0x06,0x06,0x06,\r
-  0x06,0x06,0x05,0x04,0xf7,0x04,0x07,0x06,0x02,0x02,0xf7,0x02,0x03,\r
-  0x06,0x06,0x06,0x06,0x06,0x04,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x02,0x05,0x07,0x06,0x02,0xf7,0x02,0x03,0x03,\r
-  0x03,0x04,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x9d,0x97,0x97,0x03,0x98,\r
-  0x99,0x9d,0x9e,0x97,0x99,0x9b,0x9e,0x9f,0x9f,0x9f,0x9e,0x9c,0x9a,\r
-  0x9c,0x9a,0x9d,0x98,0x9d,0x9d,0x9c,0x9d,0x9d,0x9f,0x9b,0x99,0x99,\r
-  0x9a,0x98,0x9b,0x9f,0x27,0x27,0x27,0x27,0x2a,0x2c,0x2f,0x2f,0x2f,\r
-  0x2d,0x2a,0x2a,0x2a,0xf6,0xf7,0x2c,0x25,0x23,0x23,0x23,0x23,0x23,\r
-  0x23,0x23,0x23,0x23,0x23,0x25,0x2a,0x01,0x2e,0x2d,0x97,0x99,0x9f,\r
-  0x9e,0x9e,0x99,0x94,0x99,0x9b,0x9c,0x9c,0x9d,0x9d,0x9d,0x9c,0x9c,\r
-  0x9b,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9b,0x9b,0x9c,0x9c,0x9a,0x98,\r
-  0x99,0x9c,0x9d,0x9b,0x9b,0x9a,0x9a,0x98,0x98,0x99,0x9a,0x9b,0xf6,\r
-  0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x2f,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf6,0x2f,0x2c,0x2f,0x02,0x01,0x01,0xf7,0x25,0x2a,0xf7,\r
-  0xf7,0x2f,0x2f,0x27,0x23,0xf7,0xf6,0x2c,0x2b,0x2b,0x2c,0x2f,0xf7,\r
-  0x25,0x26,0x2f,0x2f,0xf7,0xf7,0x2b,0x02,0xf7,0xf7,0xf7,0xf7,0x27,\r
-  0x28,0xf7,0xf7,0xf7,0x2f,0xf7,0xf7,0x01,0xf6,0xf7,0xf7,0xf7,0xf6,\r
-  0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x2a,0x2a,0x2b,0x2c,\r
-  0x2c,0x2c,0x2d,0x2c,0x2c,0x2c,0x2e,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x01,0x01,0xf7,0x27,0xf7,0xf7,0x2f,0x2d,0xf7,0x97,0x9e,0xf7,0xf7,\r
-  0xf7,0x06,0x05,0x04,0x04,0x03,0x03,0x03,0x03,0x04,0x06,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x07,0x07,0x07,0x07,\r
-  0x07,0x03,0xf7,0xf7,0xf7,0x03,0x05,0x06,0x06,0x06,0x05,0x04,0xf7,\r
-  0x02,0x07,0x07,0x04,0x02,0x02,0xf7,0x02,0x03,0x04,0x05,0x05,0x03,\r
-  0xf7,0xf7,0xf7,0x02,0x02,0x03,0x04,0x04,0x04,0x04,0x04,0x05,0x06,\r
-  0x07,0x07,0x03,0xf7,0x02,0x02,0x03,0x03,0x03,0x03,0x04,0x05,0x06,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x9f,0x97,0x97,0x99,0x9f,0x99,0x9a,0x9c,0x9e,0x94,\r
-  0x9a,0x9c,0x9f,0x9f,0x9f,0x9f,0x9e,0x9b,0x9a,0x9c,0x9b,0x9c,0x97,\r
-  0x9d,0x9d,0x9c,0x9d,0x9d,0x9f,0x97,0x99,0x9a,0x9a,0x98,0x9d,0x28,\r
-  0x27,0x27,0x27,0x27,0x2a,0x2d,0x2f,0x2f,0x2f,0x2d,0x2a,0x29,0x2a,\r
-  0x02,0x01,0x2a,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,\r
-  0x23,0x25,0x2c,0x01,0x2a,0x97,0x97,0x9a,0x9f,0x9e,0x9e,0x97,0x97,\r
-  0x9a,0x9b,0x9c,0x9d,0x9d,0x9d,0x9d,0x9d,0x9c,0x9c,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9b,0x9c,0x9c,0x9a,0x98,0x98,0x9b,0x9d,0x9c,0x9b,\r
-  0x9b,0x9a,0x98,0x98,0x99,0x9a,0x9b,0xf6,0x01,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0xf6,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x2f,0x2f,0x2a,\r
-  0x2e,0xf6,0xf6,0x01,0xf7,0x2d,0x2b,0xf7,0xf7,0x02,0x2f,0x27,0x2b,\r
-  0xf7,0x2e,0x2c,0x2b,0x2b,0x2c,0x2f,0xf7,0x27,0x26,0x2d,0x2f,0xf7,\r
-  0xf7,0x2e,0x02,0xf7,0x01,0x01,0xf7,0x2c,0x36,0xf7,0xf7,0xf7,0x01,\r
-  0xf7,0xf7,0xf7,0x2f,0x01,0x01,0xf6,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x2f,0x2a,0x2a,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,\r
-  0x2c,0x2c,0x2f,0x02,0xf7,0xf7,0xf7,0x2f,0x02,0xf7,0x27,0x2f,0xf7,\r
-  0xf7,0x2f,0x2b,0xf7,0x97,0xf7,0x01,0xf7,0x01,0x06,0x04,0x04,0x03,\r
-  0x03,0x03,0x03,0x03,0x04,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x06,0x06,0x06,0x07,0x07,0x07,0x07,0x06,0x03,0xf7,0xf7,\r
-  0xf7,0x02,0x04,0x05,0x05,0x04,0x02,0xf7,0x02,0x07,0x07,0x07,0x03,\r
-  0x02,0xf7,0xf7,0x02,0x02,0x02,0x02,0xf7,0xf7,0xf7,0x02,0x04,0x05,\r
-  0x06,0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x04,0x02,0x02,0x02,\r
-  0x03,0x03,0x03,0x03,0x03,0x04,0x04,0x05,0x06,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x99,\r
-  0x97,0x97,0x9a,0x9f,0x99,0x9a,0x9c,0x9e,0x94,0x9a,0x9c,0x9f,0x9f,\r
-  0x9f,0x9f,0x9d,0x9a,0x9a,0x9c,0x9d,0x9b,0x98,0x9d,0x9d,0x9d,0x9d,\r
-  0x9c,0x9f,0x97,0x99,0x9b,0x99,0x99,0x2a,0x27,0x27,0x27,0x27,0x27,\r
-  0x2a,0x2d,0x2f,0x2f,0x2f,0x2d,0x2a,0x29,0x2a,0x02,0x01,0x2a,0x23,\r
-  0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x27,0x2f,0x01,\r
-  0x9f,0x94,0x97,0x9d,0x9e,0x9e,0x9e,0x94,0x97,0x9a,0x9b,0x9d,0x9d,\r
-  0x9e,0x9e,0x9d,0x9d,0x9c,0x9c,0x9b,0x9a,0x9a,0x9a,0x9a,0x9a,0x9b,\r
-  0x9c,0x9b,0x99,0x97,0x9a,0x9d,0x9c,0x9b,0x9b,0x9b,0x98,0x98,0x99,\r
-  0x9a,0x9b,0xf6,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x01,0x2f,0x2f,0x2a,0x2e,0x2f,0x2f,0x01,0xf7,\r
-  0xf6,0x2b,0xf7,0xf7,0xf7,0x28,0x26,0xf7,0xf7,0x2d,0x2c,0x2b,0x2b,\r
-  0x2c,0x2f,0xf7,0x27,0x26,0x2d,0x2f,0xf7,0xf7,0x2e,0x02,0xf7,0x01,\r
-  0x02,0xf7,0xf7,0x35,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf6,0x2f,\r
-  0x2f,0x2f,0xf6,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x2c,0x2a,\r
-  0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2c,0x2c,0x2f,0xf6,\r
-  0x2f,0x2b,0x2f,0xf7,0x29,0x23,0xf7,0xf7,0x2f,0x2d,0xf7,0xf7,0x99,\r
-  0xf7,0xf7,0xf7,0x02,0x05,0x04,0x04,0x03,0x03,0x03,0x02,0x03,0x05,\r
-  0x07,0x07,0x06,0x06,0x05,0x06,0x06,0x07,0x07,0x07,0x07,0x06,0x06,\r
-  0x07,0x07,0x07,0x07,0x07,0x06,0x02,0xf7,0xf7,0xf7,0xf7,0x02,0x03,\r
-  0x02,0xf7,0xf7,0xf7,0x06,0x07,0x07,0x06,0x02,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x02,0x04,0x06,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x05,0x04,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x9b,0x98,0x97,0x94,0x9c,0x9e,\r
-  0x99,0x9a,0x9b,0x9d,0x94,0x9b,0x9d,0x9f,0x9f,0x9f,0x9f,0x9d,0x9a,\r
-  0x9b,0x9b,0x9d,0x9a,0x9b,0x9d,0x9c,0x9d,0x9d,0x9e,0x9f,0x98,0x99,\r
-  0x9b,0x99,0x2e,0x28,0x27,0x27,0x27,0x27,0x27,0x2a,0x2d,0x2f,0x2f,\r
-  0x2f,0x2d,0x2a,0x29,0x2a,0x01,0x01,0x2a,0x23,0x23,0x23,0x23,0x23,\r
-  0x23,0x23,0x23,0x23,0x23,0x23,0x28,0xf6,0x97,0x9f,0x94,0x97,0x9e,\r
-  0x9e,0x9d,0x9b,0x94,0x99,0x9a,0x9c,0x9d,0x9e,0x9e,0x9e,0x9e,0x9d,\r
-  0x9d,0x9c,0x9b,0x9a,0x9a,0x9a,0x9a,0x9a,0x9b,0x9c,0x99,0x97,0x99,\r
-  0x9d,0x9d,0x9c,0x9b,0x9b,0x98,0x98,0x99,0x9a,0x9b,0xf6,0x01,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf6,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf6,0x2f,0x2c,0x2e,0x2f,0x2f,0xf7,0xf7,0x02,0x2d,0xf7,0xf7,0xf7,\r
-  0x27,0x27,0xf7,0xf6,0x2c,0x2c,0x2a,0x2b,0x2c,0x2e,0xf7,0x27,0x26,\r
-  0x2e,0x2f,0xf7,0xf7,0x2c,0xf6,0xf7,0x02,0x02,0x01,0xf7,0x36,0x2a,\r
-  0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0xf7,0xf6,0x2f,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0x02,0x2f,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,\r
-  0x2b,0x2c,0x2e,0x2f,0x02,0x01,0x02,0x2f,0x2c,0x2f,0xf7,0x2a,0x36,\r
-  0xf7,0xf7,0x2f,0x2f,0x2a,0xf7,0xf7,0x02,0x01,0xf7,0xf7,0x03,0x05,\r
-  0x04,0x03,0x03,0x03,0x02,0x02,0x03,0x06,0x07,0x06,0x04,0x03,0x02,\r
-  0x02,0x03,0x05,0x07,0x07,0x07,0x06,0x05,0x06,0x06,0x07,0x07,0x07,\r
-  0x07,0x05,0x03,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x06,\r
-  0x07,0x07,0x07,0x04,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x05,\r
-  0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x05,0x04,0x03,0x02,0x02,\r
-  0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x04,0x04,0x05,\r
-  0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x01,0x02,0x02,0xf7,0x02,0x03,0x9f,0x03,\r
-  0x02,0x01,0x9e,0x99,0x98,0x97,0x94,0x9d,0x9d,0x9a,0x9a,0x9b,0x9a,\r
-  0x97,0x9b,0x9e,0x9f,0x9f,0x9f,0x9e,0x9c,0x9a,0x9c,0x9a,0x9d,0x98,\r
-  0x9d,0x9d,0x9c,0x9d,0x9d,0x9f,0x9a,0x99,0x99,0x9a,0x2f,0x2c,0x27,\r
-  0x27,0x27,0x27,0x27,0x27,0x2a,0x2e,0x2f,0x2f,0x2f,0x2c,0x2a,0x29,\r
-  0x2a,0x01,0x01,0x27,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,\r
-  0x23,0x23,0x2a,0x94,0x99,0x9a,0x97,0x99,0x9f,0x9e,0x9e,0x99,0x94,\r
-  0x99,0x9b,0x9c,0x9e,0x9e,0x9e,0x9e,0x9e,0x9d,0x9d,0x9c,0x9c,0x9a,\r
-  0x9a,0x9a,0x9a,0x9b,0x9c,0x9a,0x97,0x97,0x9c,0x9d,0x9c,0x9c,0x9c,\r
-  0x98,0x98,0x98,0x99,0x9a,0x2f,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x02,0x02,\r
-  0xf7,0xf7,0xf7,0x2a,0xf7,0xf7,0xf7,0xf7,0x28,0x2c,0xf7,0x2f,0x2c,\r
-  0x2c,0x2b,0x2b,0x2c,0x2e,0xf7,0x29,0x26,0x2f,0x2f,0xf7,0xf7,0x2a,\r
-  0xf6,0xf7,0x02,0x01,0x02,0xf7,0x2a,0x2a,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0xf6,0x2f,\r
-  0x2e,0x2a,0x2a,0x2a,0x2a,0x2b,0x2c,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x02,0x2f,0x01,0xf7,0x2d,0x2a,0xf7,0xf7,0x02,0x2f,0x2c,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x03,0x04,0x04,0x03,0x03,0x03,0x02,\r
-  0x02,0x04,0x07,0x07,0x04,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x04,0x07,\r
-  0x07,0x07,0x05,0x05,0x06,0x06,0x07,0x07,0x07,0x07,0x06,0x04,0x02,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x04,0x06,0x07,0x07,0x07,0x06,0x03,\r
-  0x02,0xf7,0xf7,0xf7,0xf7,0x03,0x05,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x06,0x05,0x04,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x04,0x04,0x04,0x05,0x06,0x06,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x04,0x03,\r
-  0x9c,0x9f,0x02,0x01,0x9f,0x9b,0x98,0x94,0x97,0x9b,0x02,0x03,0x99,\r
-  0x98,0x94,0x94,0x9f,0x9b,0x9a,0x9a,0x9c,0x98,0x99,0x9b,0x9e,0x9f,\r
-  0x9f,0x9f,0x9e,0x9b,0x9a,0x9c,0x9b,0x9c,0x97,0x9d,0x9d,0x9c,0x9d,\r
-  0x9c,0x9f,0x97,0x99,0x9a,0x2e,0x2f,0x2a,0x27,0x27,0x27,0x27,0x27,\r
-  0x27,0x2a,0x2d,0x2f,0x2f,0x2f,0x2c,0x2a,0x29,0x2a,0x01,0x02,0x27,\r
-  0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x25,0x9c,0x94,\r
-  0x9d,0x98,0x97,0x9a,0x9f,0x9e,0x9d,0x97,0x94,0x9a,0x9b,0x9d,0x9e,\r
-  0x9e,0x9e,0x9e,0x9e,0x9d,0x9d,0x9c,0x9c,0x9b,0x9a,0x9a,0x9a,0x9c,\r
-  0x9a,0x97,0x97,0x9a,0x9d,0x9d,0x9c,0x9c,0x98,0x98,0x98,0x99,0x9a,\r
-  0x2f,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x23,0x2b,0xf7,\r
-  0xf7,0x01,0x02,0x27,0x2f,0xf7,0x2e,0x2c,0x2c,0x2c,0x2c,0x2c,0x2e,\r
-  0xf7,0x2b,0x27,0x2f,0x2f,0xf7,0xf7,0x25,0xf6,0xf7,0x01,0xf7,0x01,\r
-  0xf7,0xf7,0x2c,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2f,0x2f,0x2d,0x2b,0x2b,0x2c,0x2e,\r
-  0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0xf6,0xf7,0xf7,0xf7,0x2c,\r
-  0xf7,0xf7,0xf7,0x01,0x2f,0x2c,0x2c,0xf7,0xf7,0x23,0x01,0xf7,0xf7,\r
-  0x02,0x9f,0x04,0x04,0x03,0x03,0x03,0x02,0x02,0x04,0x07,0x06,0x02,\r
-  0xf7,0xf7,0x02,0x02,0xf7,0xf7,0xf7,0x04,0x07,0x07,0x06,0x04,0x04,\r
-  0x05,0x06,0x06,0x07,0x07,0x07,0x07,0x06,0x05,0x03,0x02,0x02,0x02,\r
-  0x04,0x06,0x07,0x07,0x07,0x07,0x07,0x05,0x03,0x02,0x02,0x02,0x03,\r
-  0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x04,0x04,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x04,\r
-  0x04,0x05,0x05,0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x05,0x02,0x02,0x03,0x06,0x03,0x03,0x03,0x03,0x9e,\r
-  0x98,0x94,0x97,0x98,0x97,0x94,0x9d,0x01,0x9a,0x98,0x94,0x94,0x9f,\r
-  0x9a,0x9a,0x9a,0x9d,0x94,0x9a,0x9c,0x9f,0x9f,0x9f,0x9f,0x9d,0x9a,\r
-  0x9a,0x9c,0x9d,0x9b,0x98,0x9d,0x9d,0x9d,0x9d,0x9c,0x9f,0x97,0x99,\r
-  0x2d,0x2f,0x2f,0x29,0x27,0x27,0x27,0x27,0x27,0x27,0x2a,0x2e,0x2f,\r
-  0x2f,0x2f,0x2c,0x2a,0x29,0x2c,0x01,0xf6,0x27,0x23,0x23,0x23,0x23,\r
-  0x23,0x23,0x23,0x23,0x23,0x23,0x02,0x9a,0x94,0x9f,0x97,0x97,0x9c,\r
-  0x9e,0x9e,0x9d,0x94,0x97,0x9a,0x9b,0x9d,0x9e,0x9f,0x9e,0x9e,0x9e,\r
-  0x9e,0x9d,0x9c,0x9c,0x9b,0x9a,0x9a,0x9b,0x9b,0x99,0x94,0x98,0x9c,\r
-  0x9d,0x9d,0x9d,0x97,0x97,0x98,0x99,0x9a,0xf6,0xf6,0x01,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x2f,0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0xf7,0x2b,0x27,\r
-  0xf7,0xf7,0xf7,0xf7,0xf6,0x35,0xf7,0xf7,0xf7,0xf6,0x2e,0x27,0x2f,\r
-  0xf7,0x2e,0x2c,0x2c,0x2c,0x2c,0x2c,0x2e,0xf7,0x2e,0x27,0x02,0x2f,\r
-  0xf7,0xf7,0x23,0xf6,0xf7,0x01,0xf7,0xf7,0x02,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,\r
-  0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,\r
-  0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2e,0x2c,\r
-  0x29,0xf7,0xf7,0x02,0x36,0xf7,0xf7,0xf7,0x02,0x9f,0x04,0x04,0x03,\r
-  0x03,0x03,0x02,0x02,0x05,0x07,0x04,0xf7,0xf7,0x04,0x04,0x04,0x05,\r
-  0x02,0xf7,0x02,0x06,0x07,0x07,0x04,0x04,0x04,0x04,0x05,0x06,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x06,0x04,0x04,0x03,0x04,0x06,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x06,0x05,0x04,0x04,0x04,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x06,0x06,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x05,0x02,0x02,0x04,\r
-  0x06,0x05,0x05,0x9e,0x9f,0x03,0x9f,0x9d,0x97,0x97,0x99,0x9a,0x9a,\r
-  0x9a,0x98,0x97,0x01,0x9a,0x97,0x94,0x94,0x03,0x9a,0x9a,0x9a,0x9d,\r
-  0x94,0x9b,0x9c,0x9f,0x9f,0x9f,0x9f,0x9d,0x9a,0x9a,0x9b,0x9d,0x99,\r
-  0x9b,0x9d,0x9c,0x9d,0x9d,0x9e,0x9e,0x98,0x2c,0x2d,0x2f,0x2d,0x28,\r
-  0x27,0x27,0x27,0x27,0x27,0x27,0x2a,0x2e,0x2f,0x2f,0x2f,0x2c,0x2a,\r
-  0x29,0x2c,0x01,0x2f,0x27,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,\r
-  0x23,0xf7,0x03,0x98,0x94,0x9f,0x94,0x97,0x9d,0x9e,0x9d,0x9d,0x94,\r
-  0x97,0x9a,0x9c,0x9e,0x9e,0x9f,0x9f,0x9f,0x9e,0x9e,0x9d,0x9d,0x9c,\r
-  0x9b,0x9b,0x9b,0x9c,0x99,0x97,0x97,0x9a,0x9d,0x9d,0x9d,0x97,0x97,\r
-  0x98,0x98,0x99,0x02,0x2f,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf6,0xf7,\r
-  0xf7,0xf7,0xf6,0xf7,0xf7,0xf7,0xf7,0x35,0x2e,0xf7,0xf7,0xf7,0x01,\r
-  0x01,0xf7,0xf7,0xf7,0x2f,0x2a,0x25,0x2a,0xf7,0x2e,0x2c,0x2c,0x2c,\r
-  0x2c,0x2c,0x2e,0xf7,0x01,0x27,0x01,0x02,0xf7,0xf7,0x36,0xf6,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf6,0x2d,0x2c,0x29,0xf7,0xf7,0xf7,0x36,0x36,\r
-  0xf7,0xf7,0xf7,0x02,0x9f,0x04,0x04,0x04,0x03,0x03,0x03,0x02,0x06,\r
-  0x07,0x03,0xf7,0x03,0x04,0x02,0x02,0x03,0x05,0x02,0xf7,0x04,0x07,\r
-  0x07,0x04,0x03,0x03,0x04,0x04,0x05,0x05,0x06,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x05,\r
-  0x05,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x05,0x04,\r
-  0x04,0x04,0x04,0x04,0x04,0x04,0x03,0x03,0x03,0x03,0x04,0x04,0x04,\r
-  0x04,0x04,0x05,0x05,0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x06,0x02,0x02,0x04,0x06,0x05,0x04,0x03,0x02,0x97,0x94,\r
-  0x98,0x9a,0x9b,0x97,0x97,0x98,0x99,0x9a,0x9a,0x9a,0x9a,0x94,0x02,\r
-  0x9b,0x97,0x94,0x98,0x9f,0x9a,0x9a,0x9a,0x9b,0x97,0x9b,0x9e,0x9f,\r
-  0x9f,0x9f,0x9e,0x9c,0x99,0x9c,0x9b,0x9d,0x98,0x9d,0x9d,0x9c,0x9d,\r
-  0x9d,0x9f,0x9a,0x2f,0x2c,0x2d,0x2f,0x2c,0x27,0x27,0x27,0x27,0x27,\r
-  0x27,0x27,0x2a,0x2f,0x2f,0x2f,0x2f,0x2c,0x2a,0x29,0x2d,0xf7,0x2f,\r
-  0x26,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0xf7,0xf7,0x9f,0x97,\r
-  0x97,0x9e,0x94,0x97,0x9e,0x9e,0x9d,0x9c,0x94,0x98,0x9a,0x9c,0x9e,\r
-  0x9e,0x9f,0x9f,0x9f,0x9e,0x9e,0x9d,0x9d,0x9c,0x9b,0x9b,0x9b,0x9a,\r
-  0x97,0x94,0x98,0x9c,0x9e,0x9e,0x97,0x97,0x97,0x98,0x99,0x01,0xf6,\r
-  0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf6,0xf7,0xf7,0xf7,0x2c,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0xf6,0x2d,\r
-  0x28,0x25,0x25,0xf7,0x2e,0x2c,0x2c,0x2d,0x2c,0x2c,0x2e,0x01,0xf7,\r
-  0x28,0xf7,0x01,0xf7,0xf7,0x36,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x2f,0x02,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x2f,0x2f,0x2f,0x2e,0x2d,\r
-  0x2a,0x2a,0xf7,0xf7,0xf7,0x27,0x36,0x35,0xf7,0xf7,0xf7,0x02,0x03,\r
-  0x05,0x04,0x04,0x03,0x03,0x03,0x02,0x06,0x07,0x03,0xf7,0x04,0x02,\r
-  0xf7,0xf7,0xf7,0x02,0x04,0xf7,0x02,0x07,0x07,0x04,0x03,0x03,0x03,\r
-  0x03,0x04,0x04,0x04,0x05,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x06,0x06,0x05,0x05,0x05,0x04,0x04,0x04,0x04,\r
-  0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x05,0x05,0x06,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x03,0x02,0x02,0x06,\r
-  0x05,0x04,0x03,0x03,0x02,0xf7,0x97,0x97,0x97,0x98,0x99,0x97,0x94,\r
-  0x97,0x98,0x99,0x9a,0x9a,0x9a,0x9b,0x97,0x02,0x9b,0x98,0x97,0x9a,\r
-  0x9f,0x9a,0x9a,0x9b,0x97,0x9a,0x9c,0x9e,0x9f,0x9f,0x9f,0x9e,0x9b,\r
-  0x99,0x9c,0x9c,0x9c,0x97,0x9d,0x9d,0x9c,0x9d,0x9d,0x9f,0x2f,0x2f,\r
-  0x2d,0x2f,0x2f,0x2a,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x2a,0x2f,\r
-  0x2f,0x2f,0x2f,0x2c,0x2a,0x29,0x2e,0xf7,0x2f,0x26,0x23,0x23,0x23,\r
-  0x23,0x23,0x23,0x23,0xf7,0xf7,0xf7,0x9e,0x94,0x99,0x9b,0x94,0x97,\r
-  0x9e,0x9e,0x9c,0x9b,0x94,0x99,0x9a,0x9c,0x9e,0x9f,0x9f,0x9f,0x9f,\r
-  0x9e,0x9e,0x9d,0x9d,0x9c,0x9b,0x9b,0x9b,0x99,0x94,0x94,0x99,0x9c,\r
-  0x9e,0x97,0x97,0x97,0x98,0x98,0xf7,0xf6,0xf6,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf6,0x01,0xf7,0xf7,0x29,0xf7,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x2e,0x2c,0x27,0x28,0x36,0xf7,0x2f,\r
-  0x2c,0x2c,0x2d,0x2e,0x2d,0x2f,0x01,0xf7,0x2a,0xf7,0xf7,0xf7,0x2f,\r
-  0x26,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x01,0x2f,0x2f,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x01,0xf6,0x2f,0x2e,0x2c,0x2a,0x2a,0x28,0x2f,0xf7,0xf7,0xf7,0x2c,\r
-  0x36,0x36,0x35,0xf7,0xf7,0xf7,0x02,0x03,0x06,0x05,0x04,0x03,0x03,\r
-  0x03,0x02,0x06,0x07,0x02,0xf7,0x04,0xf7,0xf7,0xf7,0xf7,0xf7,0x04,\r
-  0x02,0xf7,0x06,0x07,0x04,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x04,\r
-  0x04,0x05,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x06,0x06,0x05,0x05,0x05,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,\r
-  0x04,0x04,0x05,0x05,0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x06,0x02,0x02,0x05,0x05,0x04,0x04,0x03,0x02,0xf7,0xf7,\r
-  0xf7,0x94,0x94,0x97,0x97,0x97,0x97,0x94,0x97,0x98,0x9a,0x9b,0x9b,\r
-  0x9a,0x9a,0x9b,0x97,0x02,0x9b,0x99,0x98,0x9d,0x9c,0x9a,0x9a,0x9d,\r
-  0x94,0x9b,0x9c,0x9e,0x9f,0x9f,0x9f,0x9d,0x9a,0x9a,0x9c,0x9d,0x9a,\r
-  0x98,0x9d,0x9d,0x9d,0x9d,0x9d,0x28,0x2f,0x2f,0x2c,0x2f,0x2e,0x29,\r
-  0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x2a,0x2f,0x2f,0x2f,0x2e,0x2c,\r
-  0x29,0x29,0x2f,0xf7,0x2f,0x25,0x23,0x23,0x23,0x23,0x23,0x23,0xf7,\r
-  0xf7,0xf7,0x01,0x9d,0x94,0x9a,0x9a,0x94,0x98,0x9f,0x9e,0x9d,0x9a,\r
-  0x94,0x99,0x9b,0x9d,0x9e,0x9f,0x9f,0x9f,0x9f,0x9f,0x9e,0x9e,0x9d,\r
-  0x9c,0x9b,0x9b,0x9a,0x97,0x94,0x97,0x99,0x9c,0x97,0x97,0x97,0x98,\r
-  0x98,0xf7,0x01,0xf6,0x01,0xf7,0xf7,0xf7,0xf7,0x02,0x01,0xf7,0xf7,\r
-  0x2a,0xf7,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x2e,0x2f,0x2a,0x27,0x2f,0x29,0x2f,0xf7,0x2c,0x2c,0x2d,0x2e,0x2f,\r
-  0x2f,0x02,0xf7,0x2a,0xf7,0xf7,0xf7,0x2e,0x01,0xf7,0x01,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf6,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0x2f,0x2f,0x2f,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0x01,0x2f,0x2a,0x29,0x27,0x27,\r
-  0x2a,0xf7,0xf7,0xf7,0xf7,0xf7,0x2a,0x36,0x36,0x35,0x35,0xf7,0xf7,\r
-  0xf7,0x02,0x02,0x06,0x06,0x05,0x04,0x03,0x03,0x03,0x06,0x07,0x02,\r
-  0xf7,0x04,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x04,0xf7,0x05,0x07,0x04,\r
-  0x02,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x04,0x06,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x05,0x05,\r
-  0x05,0x05,0x05,0x05,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x03,0x02,0x03,0x06,\r
-  0x04,0x04,0x04,0x02,0xf7,0xf7,0xf7,0xf7,0x02,0x9a,0x9a,0x99,0x99,\r
-  0x97,0x97,0x94,0x94,0x99,0x9c,0x9b,0x9a,0x9a,0x9a,0x9a,0x9b,0x97,\r
-  0x01,0x9a,0x99,0x99,0x9f,0x9a,0x9a,0x9a,0x9d,0x97,0x9b,0x9d,0x9f,\r
-  0x9f,0x9f,0x9f,0x9d,0x9a,0x9b,0x9b,0x9d,0x99,0x9c,0x9d,0x9c,0x9d,\r
-  0x9d,0x2a,0x29,0x2f,0x2f,0x2c,0x2f,0x2c,0x28,0x27,0x27,0x27,0x27,\r
-  0x27,0x27,0x27,0x2a,0x2f,0xf6,0x2f,0x2e,0x2c,0x29,0x29,0x2f,0xf7,\r
-  0x2f,0x25,0x23,0x23,0x23,0x23,0x23,0xf7,0xf7,0xf7,0xf7,0x02,0x9c,\r
-  0x94,0x9c,0x99,0x97,0x98,0x9e,0x9d,0x9c,0x99,0x94,0x99,0x9b,0x9e,\r
-  0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9e,0x9e,0x9d,0x9c,0x9b,0x9b,0x99,\r
-  0x97,0x94,0x97,0x99,0x94,0x94,0x97,0x97,0x98,0xf7,0x01,0xf6,0x02,\r
-  0xf7,0xf7,0xf7,0xf7,0x01,0x02,0x01,0xf7,0x28,0x2a,0x2e,0x2f,0x2f,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x2e,0x2e,0x2e,0x2a,0x2a,0xf7,\r
-  0x01,0x23,0xf7,0x2d,0x2c,0x2e,0x2f,0x2f,0x2f,0x01,0xf7,0x2e,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf6,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x2f,\r
-  0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x02,0xf6,\r
-  0x2f,0x2f,0xf6,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x02,0xf6,\r
-  0x2f,0x2c,0x28,0x27,0x27,0x2c,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,\r
-  0x26,0x36,0x36,0x35,0x35,0x35,0xf7,0xf7,0xf7,0x01,0x01,0x07,0x07,\r
-  0x06,0x05,0x04,0x03,0x03,0x06,0x07,0x03,0xf7,0x04,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x04,0xf7,0x04,0x07,0x04,0x02,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x04,0x05,0x06,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,\r
-  0x05,0x05,0x05,0x05,0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x06,0x02,0x02,0x06,0x05,0x04,0x04,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0x03,0x03,0x03,0x98,0x97,0x94,0x94,0x94,0x94,0x94,0x94,0x9a,\r
-  0x9c,0x9a,0x99,0x99,0x99,0x9a,0x9a,0x9b,0x94,0x02,0x9a,0x9a,0x9a,\r
-  0x9f,0x9a,0x9a,0x9a,0x99,0x99,0x9b,0x9e,0x9f,0x9f,0x9f,0x9e,0x9c,\r
-  0x99,0x9c,0x9b,0x9d,0x98,0x9d,0x9d,0x9c,0x9d,0x2a,0x28,0x2c,0x2f,\r
-  0x2f,0x2d,0x2f,0x2a,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x2a,\r
-  0x2f,0xf6,0x2f,0x2e,0x2b,0x29,0x29,0x2f,0xf7,0x2d,0x25,0x23,0x23,\r
-  0x23,0x23,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x9b,0x94,0x9d,0x98,0x97,\r
-  0x99,0x9e,0x9d,0x9c,0x98,0x94,0x9a,0x9c,0x9e,0x9f,0x9f,0x9f,0x9f,\r
-  0x9f,0x9f,0x9e,0x9d,0x9c,0x9b,0x9b,0x9a,0x98,0x94,0x94,0x94,0x98,\r
-  0x98,0x97,0x97,0x98,0xf7,0xf7,0x02,0xf6,0xf7,0xf7,0xf7,0xf7,0x01,\r
-  0x02,0x02,0xf7,0x2a,0x27,0x2a,0x2e,0x2f,0x2e,0x2f,0x2f,0xf7,0xf7,\r
-  0xf7,0xf7,0x2e,0x2f,0x2d,0x2c,0x2c,0xf7,0xf7,0x25,0xf7,0xf6,0x2e,\r
-  0x2e,0x2f,0x2f,0x02,0xf7,0xf7,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,\r
-  0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0xf6,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x2c,0x01,0xf7,0xf7,0x01,0x2f,0x2f,0x2c,0x28,0x26,0x2c,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x2f,0x2c,0x27,0x36,0x36,0x36,0x36,0x35,0x35,\r
-  0x35,0xf7,0xf7,0xf7,0x01,0x01,0x07,0x07,0x07,0x05,0x04,0x04,0x03,\r
-  0x07,0x07,0x03,0xf7,0x05,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x04,0xf7,\r
-  0x04,0x07,0x04,0x02,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x04,\r
-  0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,\r
-  0x06,0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x06,0x06,0x06,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x04,0x02,0x02,0x06,\r
-  0x04,0x04,0x03,0xf7,0xf7,0xf7,0xf7,0x03,0x03,0x03,0x02,0x02,0x98,\r
-  0x99,0x98,0x94,0x94,0x94,0x94,0x94,0x9b,0x9b,0x99,0x99,0x99,0x98,\r
-  0x98,0x9a,0x9a,0x9b,0x97,0x9f,0x9b,0x9a,0x9c,0x9e,0x9a,0x9a,0x9c,\r
-  0x94,0x9b,0x9c,0x9f,0x9f,0x9f,0x9f,0x9e,0x9b,0x99,0x9c,0x9b,0x9c,\r
-  0x97,0x9d,0x9d,0x9c,0x2b,0x2a,0x28,0x2f,0x2f,0x2e,0x2e,0x2f,0x2a,\r
-  0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x2a,0x2f,0xf6,0x2f,0x2e,\r
-  0x2a,0x29,0x29,0x2f,0xf7,0x2d,0x25,0x23,0x23,0x23,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x02,0x9b,0x94,0x9e,0x97,0x97,0x9a,0x9e,0x9c,0x9d,\r
-  0x94,0x97,0x9a,0x9c,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9e,0x9e,\r
-  0x9c,0x9b,0x9a,0x99,0x97,0x94,0x94,0x9a,0x9a,0x97,0x97,0x98,0xf7,\r
-  0xf7,0x01,0xf6,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0xf6,0x02,0xf7,0x25,\r
-  0x28,0x2a,0x2d,0x2e,0x2e,0x2e,0xf7,0xf7,0xf7,0xf7,0x01,0x2f,0x2f,\r
-  0x2a,0x2c,0xf6,0xf7,0x2f,0x27,0xf7,0x2f,0x2f,0x2f,0x02,0x01,0xf7,\r
-  0xf7,0x02,0xf7,0xf7,0xf7,0x01,0x2f,0x2a,0x2f,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf6,0xf6,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf6,0x2a,0x2c,0xf7,0xf7,0xf7,0xf7,0x2f,\r
-  0x2e,0x2a,0x27,0x29,0xf7,0xf7,0xf7,0x2f,0x28,0x25,0x36,0x36,0x36,\r
-  0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x35,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x07,0x07,0x07,0x06,0x05,0x05,0x04,0x07,0x07,0x04,0xf7,0x05,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x04,0xf7,0x04,0x07,0x04,0x02,0x02,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x04,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x06,0x05,0x05,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x06,0x06,0x06,\r
-  0x06,0x06,0x06,0x06,0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x02,0x02,0x04,0x05,0x04,0x04,0x02,0xf7,0xf7,0xf7,\r
-  0x02,0x03,0x03,0x02,0x02,0x02,0x02,0x9a,0x9b,0x9a,0x97,0x94,0x94,\r
-  0x94,0x94,0x9b,0x9b,0x99,0x9a,0x9d,0x9d,0x99,0x98,0x9a,0x9b,0x9a,\r
-  0x9e,0x9e,0x9b,0x9b,0x9e,0x9b,0x9a,0x9a,0x9d,0x97,0x9b,0x9d,0x9f,\r
-  0x9f,0x9f,0x9f,0x9d,0x9a,0x9a,0x9c,0x9d,0x9b,0x98,0x9d,0x9d,0x2b,\r
-  0x2a,0x2a,0x28,0x02,0x2f,0x2d,0x2f,0x2f,0x28,0x27,0x27,0x27,0x26,\r
-  0x27,0x27,0x27,0x27,0x2a,0x2f,0xf6,0x2f,0x2e,0x2a,0x29,0x29,0x2f,\r
-  0xf7,0x2c,0x25,0x23,0x23,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,\r
-  0x9a,0x94,0x9e,0x97,0x97,0x9b,0x9e,0x9c,0x9c,0x94,0x98,0x9a,0x9d,\r
-  0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9e,0x9d,0x9c,0x9b,0x9a,0x99,\r
-  0x97,0x94,0x9c,0x9c,0x9a,0x97,0x97,0xf7,0xf7,0x01,0xf6,0x01,0xf7,\r
-  0xf7,0xf7,0xf7,0x02,0xf6,0xf6,0xf7,0x23,0x26,0x27,0x2a,0x2d,0x2f,\r
-  0x2f,0x01,0xf7,0xf7,0xf7,0xf7,0x2f,0x2f,0x2c,0x2c,0x2c,0x2c,0x2e,\r
-  0x36,0xf7,0x01,0xf6,0x02,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf6,0x2f,0x2a,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x2f,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0xf6,0x2d,0x2a,0x27,\r
-  0x27,0xf6,0xf7,0xf7,0xf7,0xf7,0x2f,0x2e,0x2a,0x27,0x2e,0xf7,0xf7,\r
-  0x2b,0x23,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,\r
-  0x35,0x35,0x35,0x35,0xf7,0xf7,0xf7,0xf7,0xf7,0x07,0x07,0x07,0x07,\r
-  0x06,0x06,0x05,0x07,0x07,0x06,0xf7,0x04,0x03,0xf7,0xf7,0xf7,0xf7,\r
-  0x02,0x04,0xf7,0x04,0x07,0x04,0x02,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x04,0x04,0x06,0x07,0x07,0x07,0x07,0x07,0x05,0x04,0x03,0x03,0x04,\r
-  0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x02,0xf7,0x06,\r
-  0x04,0x04,0x03,0xf7,0xf7,0x02,0xf7,0x03,0x03,0x03,0x03,0x04,0x04,\r
-  0x04,0x04,0x9c,0x9c,0x9c,0x98,0x94,0x94,0x94,0x94,0x9c,0x9a,0x99,\r
-  0x9d,0x9f,0x9f,0x9e,0x99,0x98,0x9a,0x9b,0x98,0x02,0x9c,0x9a,0x9a,\r
-  0x9f,0x9a,0x9a,0x9a,0x99,0x99,0x9c,0x9f,0x9f,0x03,0x9f,0x9f,0x9d,\r
-  0x9a,0x9b,0x9b,0x9d,0x99,0x9b,0x9d,0x2c,0x2b,0x2a,0x2a,0x29,0x2f,\r
-  0x2f,0x2c,0x2f,0x2d,0x28,0x27,0x27,0x26,0x26,0x27,0x27,0x27,0x27,\r
-  0x2a,0x2f,0xf6,0x2f,0x2e,0x2a,0x29,0x29,0x2f,0xf7,0x2c,0x25,0x23,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x99,0x94,0x9f,0x97,\r
-  0x97,0x9c,0x9e,0x9c,0x9c,0x94,0x99,0x9b,0x9e,0x9f,0x9f,0x9f,0x9f,\r
-  0x9f,0x9f,0x9f,0x9e,0x9d,0x9b,0x9a,0x9a,0x99,0x98,0x9d,0x9d,0x9c,\r
-  0x98,0x97,0xf7,0xf7,0x01,0xf6,0x01,0xf7,0xf7,0xf7,0xf7,0x01,0xf6,\r
-  0x2f,0xf7,0x28,0x27,0x27,0x28,0x2c,0x2c,0x2f,0x2f,0x01,0x01,0x01,\r
-  0x01,0x01,0x2f,0x2f,0x2a,0x2a,0x28,0x27,0x25,0x27,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0x2e,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf6,0xf7,0xf7,0xf7,0xf6,0x2a,0x27,\r
-  0x27,0x27,0x25,0x25,0x23,0x23,0x25,0x28,0xf6,0xf7,0xf7,0xf7,0xf7,\r
-  0xf6,0x2e,0x2a,0x27,0x2f,0xf7,0xf7,0x27,0x35,0x35,0x35,0x35,0x35,\r
-  0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x07,0x07,\r
-  0x07,0xf7,0x02,0x05,0x02,0xf7,0xf7,0xf7,0x04,0x02,0xf7,0x05,0x07,\r
-  0x04,0x02,0x03,0x03,0x03,0x03,0x04,0x04,0x05,0x06,0x07,0x07,0x07,\r
-  0x07,0x06,0x03,0x02,0x02,0x02,0x02,0x03,0x05,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x06,\r
-  0x06,0x06,0x06,0x06,0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x04,0x02,0x02,0x05,0x04,0x04,0x02,0xf7,0x02,0xf7,\r
-  0x02,0x04,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x04,0x9c,0x9c,0x9c,\r
-  0x98,0x94,0x94,0x94,0x94,0x9c,0x9a,0x9a,0x9f,0x9f,0x03,0x9f,0x9f,\r
-  0x99,0x99,0x9a,0x9b,0x94,0x03,0x9a,0x99,0x9a,0x9e,0x9a,0x9a,0x9c,\r
-  0x94,0x9b,0x9d,0x9f,0x03,0x03,0x9f,0x9e,0x9c,0x9a,0x9c,0x9a,0x9d,\r
-  0x98,0x9d,0x2a,0x2c,0x2b,0x2a,0x28,0x2a,0x2f,0x2f,0x2d,0x2f,0x2c,\r
-  0x27,0x27,0x27,0x26,0x26,0x27,0x27,0x27,0x27,0x2a,0x2f,0xf6,0x2f,\r
-  0x2e,0x2a,0x29,0x2a,0xf6,0xf7,0x2b,0x23,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x03,0x99,0x94,0x9f,0x94,0x97,0x9e,0x9d,0x9b,\r
-  0x9a,0x94,0x99,0x9b,0x9e,0x9f,0x03,0x03,0x03,0x9f,0x9f,0x9f,0x9d,\r
-  0x9c,0x9b,0x9a,0x9a,0x99,0x9d,0x9d,0x9d,0x9a,0x97,0xf7,0xf7,0xf7,\r
-  0x02,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x2f,0x2f,0xf7,0x25,0x2f,\r
-  0x2e,0x2c,0x2a,0x2f,0x2f,0x01,0x01,0xf7,0x01,0x01,0x2f,0x2f,0x2e,\r
-  0x2d,0x2a,0x2a,0x27,0x27,0x2d,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x02,0xf7,0xf7,0xf7,0x2e,0x25,0x36,0x35,0x35,0x36,0x36,0x36,\r
-  0x23,0x27,0x2f,0xf7,0xf7,0xf7,0xf7,0x02,0x2e,0x2b,0x27,0x2f,0xf7,\r
-  0xf7,0x28,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,\r
-  0x35,0x35,0x35,0x35,0x35,0x35,0x35,0xf7,0xf7,0xf7,0xf7,0xf7,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x03,0xf7,0x06,0x04,\r
-  0x02,0x02,0x03,0x05,0xf7,0xf7,0x06,0x07,0x04,0x03,0x03,0x03,0x04,\r
-  0x04,0x05,0x05,0x07,0x07,0x07,0x07,0x07,0x05,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0x02,0x03,0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x03,0x02,0x04,\r
-  0x05,0x04,0x03,0xf7,0xf7,0x04,0xf7,0x03,0x04,0x04,0x04,0x04,0x04,\r
-  0x04,0x04,0x04,0x05,0x04,0x9c,0x9c,0x9b,0x97,0x94,0x94,0x94,0x94,\r
-  0x9c,0x9a,0x9a,0x9f,0x03,0x03,0x03,0x03,0x9e,0x98,0x9a,0x9b,0x9b,\r
-  0x9c,0x9c,0x99,0x98,0x9f,0x9a,0x9a,0x9a,0x9c,0x97,0x9b,0x9e,0x03,\r
-  0x03,0x03,0x9f,0x9e,0x9c,0x9a,0x9c,0x9b,0x9c,0x97,0x2b,0x2b,0x2c,\r
-  0x2b,0x2a,0x27,0x2f,0x2f,0x2e,0x2e,0x2f,0x2a,0x27,0x27,0x27,0x26,\r
-  0x26,0x27,0x27,0x27,0x27,0x2b,0x2f,0x2f,0x2f,0x2e,0x2a,0x29,0x2a,\r
-  0xf6,0x01,0x2b,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x03,0x98,0x94,0x9f,0x94,0x97,0x9e,0x9d,0x9c,0x99,0x94,0x9a,0x9b,\r
-  0x9f,0x9f,0x03,0x03,0x03,0x9f,0x9f,0x9f,0x9d,0x9c,0x9b,0x9a,0x9a,\r
-  0x9e,0x9e,0x9e,0x9d,0x97,0xf7,0xf7,0xf7,0x01,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0xf6,0x2f,0xf7,0x23,0xf6,0xf7,0x01,0x2e,0x2c,0xf6,\r
-  0xf6,0x01,0xf7,0x01,0x01,0xf7,0x2f,0x2f,0x2e,0x2e,0x2d,0x2c,0x2a,\r
-  0x2a,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0xf7,0xf7,0xf7,\r
-  0xf6,0x27,0x23,0x36,0x36,0x23,0x25,0x27,0x2c,0x01,0xf7,0xf7,0xf7,\r
-  0x01,0x01,0x2d,0x2c,0x28,0x2e,0xf7,0xf7,0x2a,0x35,0x35,0x35,0x35,\r
-  0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,\r
-  0x35,0x35,0xf7,0xf7,0xf7,0xf7,0xf7,0x07,0x06,0x06,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x04,0xf7,0x03,0x06,0x04,0x04,0x05,0x04,0xf7,\r
-  0x03,0x07,0x07,0x05,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x07,0x07,\r
-  0x07,0x07,0x05,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x06,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,\r
-  0x06,0x06,0x06,0x06,0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x02,0xf7,0x05,0x05,0x04,0x03,0xf7,0xf7,0x02,\r
-  0xf7,0x04,0x04,0x04,0x04,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x04,\r
-  0x9c,0x9c,0x9a,0x94,0x94,0x94,0x94,0x97,0x9c,0x9a,0x9a,0x9f,0x03,\r
-  0x03,0x03,0x03,0x9f,0x9b,0x98,0x9a,0x9c,0x97,0x01,0x99,0x97,0x97,\r
-  0x9f,0x9a,0x9a,0x9c,0x97,0x9a,0x9c,0x9f,0x03,0x03,0x03,0x9f,0x9e,\r
-  0x9a,0x9a,0x9c,0x9c,0x9c,0x2f,0x2b,0x2b,0x2c,0x2b,0x2b,0x28,0x02,\r
-  0x2f,0x2d,0x2f,0x2f,0x29,0x27,0x27,0x26,0x26,0x26,0x27,0x27,0x27,\r
-  0x27,0x2b,0x2f,0x2f,0x2f,0x2e,0x2a,0x29,0x2a,0x02,0x01,0x9e,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x9f,0x97,0x97,0x9e,\r
-  0x94,0x97,0x9e,0x9c,0x9c,0x97,0x97,0x9a,0x9c,0x9f,0x9f,0x03,0x03,\r
-  0x9f,0x9f,0x9f,0x9e,0x9d,0x9c,0x9b,0x9a,0x9c,0x9c,0x9f,0x9e,0x9c,\r
-  0xf7,0xf7,0xf7,0x01,0xf6,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x2f,\r
-  0x2f,0xf7,0x27,0xf7,0xf7,0x01,0x28,0xf6,0xf6,0x01,0x01,0x01,0xf7,\r
-  0xf7,0x2f,0x2d,0x2d,0x2f,0x2f,0x2f,0xf7,0xf7,0x2f,0x01,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2e,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x02,0x01,0xf7,0xf7,0xf7,0x2e,0x2a,0x27,0x2a,\r
-  0x2c,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf6,0x2e,0x2d,0x2a,0x2c,\r
-  0xf7,0xf7,0xf6,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,\r
-  0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x06,0x05,0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x06,\r
-  0xf7,0xf7,0x05,0x06,0x06,0x05,0xf7,0xf7,0x05,0x07,0x07,0x06,0x05,\r
-  0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x05,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x06,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x05,0x02,0x02,\r
-  0x06,0x04,0x04,0x02,0xf7,0x02,0xf7,0x02,0x04,0x04,0x04,0x03,0x03,\r
-  0x04,0x04,0x04,0x04,0x04,0x05,0x04,0x04,0x9c,0x9c,0x99,0x94,0x94,\r
-  0x94,0x94,0x98,0x9c,0x9a,0x9a,0x9f,0x03,0x03,0x03,0x03,0x03,0x9e,\r
-  0x98,0x99,0x9b,0x9c,0x99,0x9c,0x97,0x94,0x9c,0x9a,0x9a,0x9a,0x9d,\r
-  0x97,0x9b,0x9e,0x03,0x03,0x03,0x9f,0x9f,0x9d,0x9a,0x9b,0x9b,0x9d,\r
-  0x2e,0x2e,0x2a,0x2c,0x2b,0x2a,0x2a,0x28,0x2f,0x2f,0x2c,0x2f,0x2e,\r
-  0x28,0x27,0x27,0x26,0x26,0x26,0x27,0x27,0x27,0x28,0x2b,0x2f,0x2f,\r
-  0x2f,0x2d,0x2a,0x29,0x2a,0x02,0x94,0x9e,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x9f,0x97,0x98,0x9a,0x94,0x98,0x9e,0x9c,\r
-  0x9c,0x94,0x97,0x9a,0x9d,0x9f,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9e,\r
-  0x9d,0x9c,0x9b,0x99,0x99,0x9d,0x9f,0x9e,0xf7,0xf7,0x01,0x01,0x02,\r
-  0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x2f,0x2f,0xf7,0x23,0x01,0xf7,\r
-  0xf7,0x2f,0x2a,0xf6,0x2f,0x01,0xf7,0xf7,0xf7,0x01,0x2f,0x01,0xf7,\r
-  0x01,0xf7,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0x2d,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x02,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0xf6,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf6,0x2f,0x2e,0x2a,0x29,0xf7,0xf7,0xf7,0x27,0x35,0x35,\r
-  0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,\r
-  0x35,0x35,0x35,0x35,0x35,0xf7,0xf7,0xf7,0xf7,0xf7,0x06,0x05,0x05,\r
-  0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x02,0xf7,0x02,0x04,0x04,\r
-  0x02,0xf7,0x02,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x06,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,\r
-  0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x06,0x06,0x06,0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x04,0x02,0x03,0x05,0x04,0x03,0xf7,0xf7,0x04,\r
-  0xf7,0x03,0x04,0x04,0x03,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,\r
-  0x04,0x04,0x03,0x9c,0x99,0x94,0x94,0x94,0x94,0x94,0x98,0x9c,0x99,\r
-  0x99,0x9f,0x03,0x03,0x03,0x03,0x03,0x9f,0x99,0x98,0x9a,0x9d,0x97,\r
-  0x01,0x99,0x97,0x94,0x03,0x99,0x9a,0x9c,0x97,0x9a,0x9c,0x9f,0x03,\r
-  0x03,0x03,0x9f,0x9f,0x9c,0x9a,0x9c,0x9a,0x2b,0x2f,0x2c,0x2a,0x2c,\r
-  0x2b,0x2a,0x29,0x2a,0x2f,0x2f,0x2c,0x2f,0x2c,0x27,0x27,0x26,0x26,\r
-  0x26,0x26,0x26,0x27,0x27,0x28,0x2b,0x2f,0x2f,0x2f,0x2d,0x2a,0x29,\r
-  0x2a,0x94,0x94,0x9e,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x9e,0x94,0x9a,0x99,0x97,0x9a,0x9e,0x9c,0x9c,0x94,0x98,0x9a,\r
-  0x9d,0x9f,0x9f,0x03,0x03,0x9f,0x9f,0x9f,0x9e,0x9d,0x9c,0x97,0x97,\r
-  0x99,0x03,0x9f,0x2b,0xf7,0xf7,0x02,0x02,0x02,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x2f,0x2f,0xf7,0x25,0xf7,0xf7,0x2f,0x2a,0x2f,0x2f,\r
-  0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf6,0x2e,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x02,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2f,0x2c,\r
-  0x28,0xf7,0xf7,0xf7,0x2f,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,\r
-  0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x06,0x05,0x05,0x05,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x03,0xf7,0xf7,0x02,0x02,0xf7,0xf7,0x04,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x02,0x02,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x06,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x06,0x06,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x03,0x02,\r
-  0x05,0x05,0x04,0x03,0xf7,0xf7,0x03,0xf7,0x04,0x04,0x04,0x03,0x03,\r
-  0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x04,0x04,0x03,0x03,0x99,0x94,\r
-  0x94,0x97,0x94,0x94,0x94,0x99,0x9c,0x99,0x99,0x9d,0x9f,0x03,0x03,\r
-  0x03,0x03,0x9f,0x99,0x97,0x9a,0x9d,0x9c,0x9d,0x9c,0x98,0x94,0x9c,\r
-  0x9a,0x99,0x9b,0x9d,0x97,0x9b,0x9e,0x03,0x03,0x03,0x03,0x9f,0x9e,\r
-  0x9c,0x9a,0x9c,0x2d,0x2c,0x2f,0x2a,0x2b,0x2c,0x2b,0x2a,0x28,0x2d,\r
-  0x2f,0x2f,0x2d,0x2f,0x2a,0x27,0x27,0x26,0x26,0x26,0x26,0x26,0x27,\r
-  0x27,0x28,0x2c,0x2f,0x2f,0x2f,0x2d,0x2a,0x29,0x9e,0x94,0x94,0x9f,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x9d,0x94,0x9e,\r
-  0x97,0x97,0x9c,0x9d,0x9b,0x9c,0x94,0x99,0x9b,0x9d,0x9f,0x9f,0x03,\r
-  0x03,0x9f,0x9f,0x9f,0x9e,0x9d,0x9a,0x9a,0x99,0x9c,0x9f,0x27,0xf7,\r
-  0xf7,0x02,0xf6,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x2f,0x2f,\r
-  0xf7,0x28,0x2f,0xf7,0x2f,0x2c,0x2c,0x2f,0x2f,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2f,0xf7,0xf7,0xf7,0xf7,0x01,0x01,\r
-  0x02,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x2f,0x2f,0x2d,0x29,0x2f,0xf7,0xf7,0xf7,0x25,\r
-  0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,\r
-  0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0xf7,0xf7,0xf7,0xf7,0x01,\r
-  0x06,0x05,0x05,0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x04,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x03,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x04,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x06,0x02,0xf7,0x05,0x04,0x04,0x02,0xf7,0xf7,\r
-  0x02,0x02,0x04,0x04,0x03,0x03,0x03,0x03,0x03,0x04,0x04,0x04,0x04,\r
-  0x05,0x04,0x03,0x03,0x03,0x02,0x94,0x97,0x98,0x94,0x97,0x94,0x94,\r
-  0x99,0x9c,0x9a,0x98,0x9a,0x9d,0x9f,0x9f,0x9f,0x9f,0x9e,0x99,0x97,\r
-  0x99,0x9c,0x9e,0x94,0xf7,0x99,0x97,0x97,0x03,0x99,0x9a,0x9d,0x94,\r
-  0x9a,0x9d,0x9f,0x03,0x03,0x03,0x03,0x9f,0x9e,0x9b,0x9a,0x2c,0x2c,\r
-  0x2c,0x2f,0x2b,0x2b,0x2c,0x2b,0x2a,0x28,0x2f,0x2f,0x2e,0x2f,0x2f,\r
-  0x29,0x27,0x27,0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x28,0x2c,0x2f,\r
-  0x2f,0x2f,0x2d,0x2a,0x9f,0x9d,0x94,0x94,0x9f,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x9b,0x94,0x9f,0x94,0x97,0x9d,0x9d,\r
-  0x9b,0x9a,0x94,0x9a,0x9b,0x9e,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9e,\r
-  0x9e,0x9c,0x9c,0x9d,0x9c,0x9f,0x27,0x26,0xf7,0x01,0x2f,0x2f,0x01,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x2f,0x2f,0xf7,0x23,0x2f,0x2a,\r
-  0x29,0x2c,0x2e,0x2e,0x2e,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2e,\r
-  0x01,0x2f,0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x2f,0x2f,0xf6,0x02,0x2f,0xf6,0xf6,0x02,0x01,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2f,\r
-  0x2e,0x2a,0x2e,0xf7,0xf7,0xf7,0x2d,0x36,0x35,0x35,0x35,0x35,0x35,\r
-  0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,\r
-  0x35,0x35,0x35,0xf7,0xf7,0xf7,0xf7,0xf7,0x07,0x06,0x05,0x06,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x05,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,\r
-  0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,\r
-  0x02,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x06,0x06,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x05,0x02,\r
-  0x02,0x06,0x04,0x04,0x02,0xf7,0x03,0xf7,0x03,0x04,0x04,0x03,0x03,\r
-  0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x04,0x02,0x02,0x02,0xf7,\r
-  0xf7,0x99,0x98,0x97,0x98,0x94,0x94,0x97,0x99,0x9b,0x9a,0x99,0x98,\r
-  0x99,0x9b,0x9d,0x9d,0x9b,0x99,0x97,0x97,0x99,0x9d,0x9e,0x94,0xf7,\r
-  0x03,0x98,0x97,0x9f,0x99,0x99,0x9c,0x9c,0x97,0x9b,0x9e,0x03,0x03,\r
-  0x03,0x03,0x03,0x9f,0x9d,0x9a,0x2d,0x2c,0x2b,0x2d,0x2f,0x2b,0x2b,\r
-  0x2b,0x2a,0x2a,0x28,0xf6,0x2f,0x2c,0x2f,0x2e,0x28,0x27,0x27,0x26,\r
-  0x26,0x26,0x26,0x26,0x27,0x27,0x28,0x2c,0x2f,0x2f,0x2f,0x2d,0x9e,\r
-  0x9f,0x9d,0x94,0x94,0x9f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x02,0x9a,0x94,0x9f,0x94,0x97,0x9e,0x9d,0x9c,0x99,0x94,0x9a,\r
-  0x9b,0x9d,0x9e,0x9f,0x9f,0x9f,0x9f,0x9e,0x9e,0x9d,0x9d,0x9d,0x9e,\r
-  0x9f,0x27,0x25,0x2a,0xf7,0x2f,0x2f,0x2f,0x01,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x01,0x2f,0x2f,0xf7,0x2a,0x29,0x28,0x28,0x2c,0x2e,0x2d,0x2f,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x27,0x36,0x2a,0xf7,0xf7,0xf7,\r
-  0x02,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x2c,0x2c,0x2c,0x2d,0x2f,\r
-  0x2f,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x2f,0x2f,0x2c,0x2a,0xf7,0xf7,0xf7,\r
-  0xf7,0x23,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,\r
-  0x35,0x35,0x35,0x36,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x01,0x01,\r
-  0xf7,0xf7,0xf7,0x07,0x06,0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x06,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x06,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x04,0x02,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x02,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x06,0x06,0x06,0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x04,0x02,0x03,0x05,0x04,0x03,0xf7,0xf7,\r
-  0x04,0xf7,0x03,0x04,0x04,0x03,0x03,0x03,0x03,0x03,0x04,0x04,0x04,\r
-  0x04,0x04,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x97,0x97,0x98,0x98,\r
-  0x94,0x97,0x98,0x99,0x9a,0x9a,0x99,0x98,0x97,0x97,0x97,0x97,0x97,\r
-  0x97,0x97,0x98,0x99,0x9e,0x9f,0x97,0x03,0xf7,0x9d,0x97,0x98,0x9e,\r
-  0x99,0x9a,0x9d,0x94,0x9a,0x9c,0x9f,0x03,0x03,0x03,0x03,0x9f,0x9f,\r
-  0x9d,0x2e,0x2c,0x2d,0x2a,0x2f,0x2c,0x2b,0x2c,0x2b,0x2a,0x2a,0x29,\r
-  0x2f,0x2f,0x2c,0x2f,0x2c,0x27,0x27,0x26,0x26,0x25,0x26,0x26,0x26,\r
-  0x27,0x27,0x28,0x2c,0x2f,0x2f,0x2f,0x9b,0x9f,0x9f,0x9d,0x94,0x97,\r
-  0x9f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x98,0x97,\r
-  0x9e,0x94,0x97,0x9e,0x9d,0x9c,0x97,0x94,0x9a,0x9a,0x9c,0x9e,0x9e,\r
-  0x9e,0x9e,0x9e,0x9d,0x9d,0x9d,0x9d,0x9e,0x9f,0x27,0x26,0x23,0xf6,\r
-  0xf7,0x2e,0x2d,0x2f,0x01,0xf7,0xf7,0xf7,0xf7,0x01,0x2f,0x2f,0x2f,\r
-  0xf7,0x36,0x26,0x28,0x2c,0x2f,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x27,0x27,0xf7,0xf7,0xf7,0x01,0xf6,0x2f,0x2f,0x2f,\r
-  0x2f,0x2f,0x2c,0x2a,0x2b,0x2d,0x2f,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,\r
-  0x2f,0x2f,0x2d,0x2a,0xf7,0xf7,0xf7,0xf7,0x29,0x36,0x35,0x35,0x35,\r
-  0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x35,\r
-  0x35,0x35,0x35,0x36,0x36,0x23,0x02,0x02,0x01,0xf7,0xf7,0x07,0x07,\r
-  0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x06,0x03,0x02,0x02,0xf7,0xf7,0xf7,0x02,0x02,0x02,0x04,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x06,0x06,\r
-  0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x03,\r
-  0x02,0x05,0x05,0x04,0x03,0xf7,0xf7,0x03,0xf7,0x04,0x04,0x04,0x03,\r
-  0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x04,0x04,0x02,0x02,0x02,0x02,\r
-  0x02,0x02,0xf7,0xf7,0x97,0x99,0x9a,0x97,0x97,0x98,0x99,0x9a,0x9a,\r
-  0x9a,0x9a,0x99,0x99,0x98,0x97,0x97,0x97,0x97,0x98,0x99,0x9b,0x9f,\r
-  0x9f,0x97,0x9b,0xf7,0x01,0x98,0x97,0x02,0x99,0x9a,0x9c,0x9b,0x97,\r
-  0x9b,0x9e,0x9f,0x03,0x03,0x03,0x03,0x9f,0x9e,0x2c,0x2f,0x2c,0x2e,\r
-  0x2b,0x2f,0x2b,0x2b,0x2c,0x2b,0x2a,0x28,0x2c,0x2f,0x2f,0x2d,0x2f,\r
-  0x2a,0x27,0x27,0x26,0x26,0x25,0x25,0x26,0x26,0x27,0x27,0x28,0x2c,\r
-  0xf6,0x2f,0x99,0x9b,0x9f,0x9f,0x9d,0x94,0x97,0x03,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x9f,0x97,0x98,0x9b,0x94,0x99,0x9e,\r
-  0x9c,0x9c,0x97,0x94,0x99,0x9a,0x9b,0x9c,0x9d,0x9c,0x9c,0x9c,0x9d,\r
-  0x9d,0x9d,0x9e,0x9f,0x27,0x2e,0xf6,0x36,0xf7,0xf7,0x2c,0x2c,0x2f,\r
-  0xf6,0x01,0x01,0x01,0x01,0xf6,0x2f,0x2f,0xf7,0x28,0x25,0x29,0x2c,\r
-  0x2e,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0xf6,0xf6,0xf6,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2f,0x2e,0x2a,0xf7,0xf7,\r
-  0xf7,0xf7,0x2f,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,\r
-  0x35,0x35,0x35,0x36,0x36,0x36,0x35,0x35,0x35,0x35,0x36,0x36,0x23,\r
-  0x25,0x03,0x02,0x02,0x02,0xf7,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x06,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x04,0x06,\r
-  0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x07,0x07,0x06,0x03,0x02,0x02,\r
-  0x02,0x02,0x02,0x02,0x02,0x04,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x06,0x02,0xf7,0x06,0x04,0x04,0x02,0xf7,\r
-  0x02,0x02,0x02,0x04,0x04,0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x04,\r
-  0x04,0x04,0x04,0x02,0x02,0x02,0x02,0x03,0xf7,0xf7,0xf7,0x02,0x9a,\r
-  0x9b,0x99,0x97,0x97,0x99,0x9a,0x9a,0x9b,0x9c,0x9b,0x9a,0x9a,0x99,\r
-  0x99,0x99,0x99,0x99,0x9a,0x9d,0x9f,0x03,0x03,0x94,0x9a,0xf7,0xf7,\r
-  0x9e,0x97,0x9a,0x9a,0x99,0x9b,0x9d,0x94,0x9a,0x9c,0x9f,0x9f,0x03,\r
-  0x03,0x03,0x03,0x9f,0x2a,0x2c,0x2e,0x2c,0x2c,0x2c,0xf6,0x2b,0x2b,\r
-  0x2c,0x2b,0x2a,0x28,0x2f,0x2f,0x2e,0x2e,0x2f,0x2a,0x27,0x27,0x26,\r
-  0x25,0x25,0x25,0x26,0x26,0x27,0x27,0x28,0x2c,0xf6,0x98,0x99,0x9b,\r
-  0x9f,0x9f,0x9c,0x94,0x97,0x03,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x9e,0x94,0x9a,0x99,0x97,0x9a,0x9e,0x9c,0x9c,0x98,0x94,\r
-  0x97,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9d,0x9d,0x9d,0x9e,0x9f,0x2c,\r
-  0xf7,0xf7,0x01,0x35,0xf7,0xf7,0x2c,0x2b,0x2c,0x2e,0x2f,0xf6,0xf6,\r
-  0x2f,0x2f,0x2f,0x01,0xf7,0x26,0x2a,0x2e,0x2f,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x01,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x2f,0x2f,0x2e,0x2c,0x2f,0xf7,0xf7,0xf7,0xf7,0x23,0x36,0x35,\r
-  0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x35,\r
-  0x35,0x35,0x35,0x35,0x36,0x36,0x23,0x27,0x27,0x9f,0x9f,0x03,0x02,\r
-  0x01,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x05,0x07,0x07,0x07,0x07,0x06,\r
-  0x04,0x04,0x06,0x07,0x07,0x04,0x02,0x02,0x02,0x02,0x02,0x02,0x04,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x06,\r
-  0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x05,\r
-  0x02,0x02,0x06,0x04,0x04,0x02,0xf7,0x03,0xf7,0x03,0x04,0x04,0x03,\r
-  0x02,0x03,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x04,0x02,0x02,0x02,\r
-  0x03,0x02,0xf7,0xf7,0x02,0x02,0x03,0x9c,0x9b,0x98,0x94,0x97,0x99,\r
-  0x9a,0x9c,0x9d,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9f,0x9f,0x03,\r
-  0x02,0x02,0x02,0x9e,0x94,0x9a,0xf7,0xf7,0x02,0x97,0x97,0x03,0x99,\r
-  0x9a,0x9c,0x9b,0x98,0x9b,0x9e,0x9f,0x03,0x03,0x03,0x03,0x03,0x29,\r
-  0x2a,0x2d,0x2d,0x2c,0x2c,0x2d,0x2f,0x2b,0x2b,0x2b,0x2a,0x2a,0x28,\r
-  0x02,0x2f,0x2d,0x2f,0x2f,0x28,0x27,0x27,0x26,0x25,0x25,0x25,0x26,\r
-  0x26,0x27,0x27,0x28,0x2c,0x97,0x98,0x99,0x9c,0x9f,0x9f,0x9c,0x94,\r
-  0x98,0x03,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x9c,0x94,\r
-  0x9e,0x97,0x97,0x9a,0x9e,0x9c,0x9b,0x9a,0x94,0x94,0x97,0x97,0x98,\r
-  0x98,0x98,0x9d,0x9d,0x9e,0x9e,0x9d,0xf7,0xf7,0xf7,0xf7,0x27,0x35,\r
-  0xf6,0xf7,0xf6,0x2b,0x2a,0x2c,0x2c,0x2d,0x2e,0x2f,0x2f,0x01,0xf7,\r
-  0x27,0x2a,0x2f,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0xf7,\r
-  0xf7,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x2f,0x2f,0x2f,0x2c,\r
-  0x2d,0xf6,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2e,0x2e,0x2c,0x2c,\r
-  0xf7,0xf7,0xf7,0xf7,0x26,0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x35,\r
-  0x35,0x35,0x35,0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x23,\r
-  0x25,0x27,0x28,0x2a,0x9f,0x9f,0x9f,0x03,0x02,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x04,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x02,0x03,0x06,0x07,0x07,0x07,0x04,0x03,0x02,0x04,0x06,0x07,\r
-  0x06,0x03,0x02,0x02,0x02,0x03,0x06,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x06,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x03,0x02,0x04,0x05,0x04,0x03,0xf7,\r
-  0xf7,0x04,0xf7,0x03,0x04,0x04,0x03,0x02,0x02,0x03,0x03,0x03,0x03,\r
-  0x04,0x04,0x04,0x04,0x02,0x02,0x03,0x03,0xf7,0xf7,0xf7,0xf7,0x03,\r
-  0x04,0x04,0x9d,0x9a,0x97,0x94,0x97,0x99,0x9a,0x9c,0x9e,0x9e,0x9f,\r
-  0x9f,0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x9f,0x97,0x94,\r
-  0x9b,0xf7,0xf7,0x01,0x9a,0x97,0x9f,0x99,0x99,0x9a,0x9d,0x94,0x9a,\r
-  0x9c,0x9e,0x9f,0x03,0x03,0x03,0x03,0x28,0x2a,0x2b,0x2e,0x2c,0x2d,\r
-  0x2a,0x2f,0x2c,0x2b,0x2c,0x2b,0x2a,0x29,0x28,0x2f,0x2f,0x2c,0x2f,\r
-  0x2c,0x27,0x27,0x26,0x26,0x25,0x25,0x25,0x26,0x26,0x27,0x27,0x28,\r
-  0x9b,0x97,0x98,0x99,0x9c,0x9f,0x9f,0x9b,0x94,0x98,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x9b,0x94,0x9f,0x97,0x97,0x9a,\r
-  0x9e,0x9c,0x9a,0x9a,0x9a,0x97,0x94,0x94,0x94,0x94,0x9b,0x9b,0x9b,\r
-  0x9d,0x9f,0x2f,0xf7,0xf7,0xf7,0x2e,0x35,0x35,0x23,0xf7,0xf7,0xf7,\r
-  0x2d,0x2c,0x2c,0x2e,0x2f,0x2f,0xf7,0xf7,0x29,0x27,0xf7,0x2f,0xf7,\r
-  0xf7,0x01,0xf6,0xf7,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x02,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0xf6,0x2e,0x2c,0x2c,0x2c,0x2f,0xf6,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x2f,0x2e,0x2e,0x2d,0x2c,0xf7,0xf7,0xf7,0xf7,0x2a,0x36,\r
-  0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,\r
-  0x35,0x35,0x35,0x35,0x36,0x36,0x23,0x27,0x29,0x2a,0x2c,0x2c,0x9e,\r
-  0x9e,0x9f,0x9f,0x03,0x06,0x07,0x06,0x06,0x06,0x06,0x07,0x07,0x07,\r
-  0x07,0x07,0x03,0xf7,0xf7,0x02,0xf7,0xf7,0xf7,0x02,0x02,0x04,0x07,\r
-  0x07,0x07,0x05,0x02,0xf7,0x02,0x04,0x06,0x07,0x06,0x04,0x05,0x06,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,\r
-  0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x02,0xf7,0x05,0x05,0x04,0x03,0xf7,0xf7,0x02,0xf7,0x04,0x04,0x03,\r
-  0x03,0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x04,0x04,0x03,0x02,0x02,\r
-  0x03,0x02,0xf7,0xf7,0xf7,0xf7,0x04,0x05,0x05,0x04,0x9b,0x99,0x97,\r
-  0x94,0x94,0x97,0x98,0x99,0x9c,0x9e,0x9f,0x9f,0x03,0x03,0x02,0x02,\r
-  0x03,0x03,0x9f,0x9d,0x9b,0x97,0x94,0x94,0x9e,0xf7,0xf7,0xf7,0x03,\r
-  0x97,0x99,0x9e,0x99,0x9a,0x9b,0x9c,0x97,0x9b,0x9d,0x9f,0x9f,0x03,\r
-  0x03,0x03,0x27,0x28,0x2a,0x2c,0x2f,0x2c,0x2e,0x2c,0x2f,0x2b,0x2b,\r
-  0x2c,0x2a,0x2a,0x28,0x2c,0x2f,0x2f,0x2d,0x2f,0x2a,0x27,0x27,0x26,\r
-  0x26,0x25,0x25,0x25,0x26,0x26,0x27,0x27,0x9f,0x9b,0x97,0x98,0x99,\r
-  0x9c,0x9f,0x9f,0x9a,0x94,0x99,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x99,0x94,0x9f,0x97,0x97,0x99,0x9e,0x9c,0x9a,0x98,\r
-  0x97,0x98,0x98,0x97,0x97,0x9b,0x9b,0x9a,0x9a,0x9a,0x26,0x2f,0xf7,\r
-  0xf7,0xf7,0x27,0x35,0x35,0x35,0x36,0x2f,0xf7,0xf7,0xf7,0x01,0x01,\r
-  0xf7,0xf7,0xf7,0x2a,0x2c,0xf7,0xf7,0xf7,0xf7,0x25,0x27,0xf7,0x02,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2e,0x2e,0x2d,\r
-  0x2c,0xf7,0xf7,0xf7,0xf7,0x2c,0x36,0x36,0x35,0x35,0x35,0x35,0x35,\r
-  0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x23,\r
-  0x25,0x27,0x2a,0x2c,0x2c,0x2e,0x2e,0x9c,0x9d,0x9e,0x9e,0x9f,0x05,\r
-  0x06,0x06,0x05,0x05,0x05,0x06,0x07,0x07,0x07,0x07,0xf7,0xf7,0x02,\r
-  0x02,0x02,0xf7,0xf7,0xf7,0x02,0x02,0x05,0x07,0x07,0x05,0x02,0x02,\r
-  0x02,0x03,0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x02,0xf7,0x06,0x04,0x04,0x02,\r
-  0xf7,0x02,0xf7,0x02,0x04,0x04,0x03,0x02,0x02,0x02,0x03,0x03,0x03,\r
-  0x03,0x03,0x04,0x04,0x03,0x02,0x03,0x03,0xf7,0xf7,0xf7,0xf7,0x02,\r
-  0x05,0x05,0x05,0x05,0x04,0x9a,0x98,0x97,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x97,0x9f,0xf7,0xf7,0xf7,0x01,0x97,0x97,0x02,0x99,0x9a,\r
-  0x9a,0x9c,0x97,0x9a,0x9b,0x9e,0x9f,0x03,0x03,0x03,0x27,0x27,0x28,\r
-  0x2a,0x2c,0x2e,0x2c,0x2c,0x2c,0xf6,0x2b,0x2b,0x2c,0x2a,0x2a,0x28,\r
-  0x2f,0x2f,0x2e,0x2e,0x2f,0x2a,0x27,0x27,0x26,0x25,0x25,0x25,0x25,\r
-  0x26,0x26,0x27,0x03,0x9f,0x9b,0x97,0x98,0x99,0x9c,0x9f,0x9f,0x99,\r
-  0x94,0x9a,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x99,\r
-  0x94,0x9f,0x97,0x97,0x97,0x9c,0x9d,0x9b,0x9a,0x98,0x97,0x97,0x97,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0xf7,0x28,0x2c,0xf7,0xf7,0xf7,0x26,0x36,\r
-  0x35,0x35,0x35,0x35,0x36,0x2a,0xf7,0xf7,0xf7,0x02,0x2a,0x2a,0xf7,\r
-  0xf7,0xf7,0xf7,0x2e,0x23,0x27,0xf7,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x01,0x02,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x02,0x2e,0x2e,0x2d,0x2c,0xf7,0xf7,0xf7,0xf7,0x2f,\r
-  0x36,0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,\r
-  0x35,0x35,0x35,0x35,0x36,0x36,0x23,0x27,0x27,0x2a,0x2c,0x2d,0x2f,\r
-  0x2f,0x2f,0x9c,0x9d,0x9d,0x9d,0x9e,0x04,0x04,0x04,0x04,0x04,0x04,\r
-  0x05,0x07,0x07,0x07,0x04,0xf7,0xf7,0x03,0x03,0x03,0x02,0xf7,0xf7,\r
-  0x02,0x02,0x03,0x06,0x07,0x06,0x03,0x02,0x02,0x03,0x04,0x06,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x04,0x02,0x02,0x05,0x04,0x03,0xf7,0xf7,0x04,0xf7,0x03,0x04,0x04,\r
-  0x03,0x03,0x02,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x03,0x02,\r
-  0x03,0x03,0xf7,0xf7,0xf7,0xf7,0x03,0x06,0x05,0x06,0x06,0x04,0x03,\r
-  0x99,0x97,0x97,0x97,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x9b,0x03,0xf7,\r
-  0xf7,0xf7,0x01,0x99,0x97,0x9b,0x9d,0x99,0x9a,0x9a,0x9d,0x94,0x9b,\r
-  0x9c,0x9e,0x9f,0x03,0x03,0x27,0x27,0x27,0x29,0x2a,0x2d,0x2d,0x2c,\r
-  0x2b,0x2d,0x2f,0x2b,0x2b,0x2b,0x2a,0x2a,0x28,0x02,0x2f,0x2d,0x2f,\r
-  0x2f,0x29,0x27,0x27,0x26,0x25,0x25,0x25,0x25,0x26,0x26,0x03,0x03,\r
-  0x9f,0x9a,0x97,0x98,0x99,0x9d,0x9f,0x9f,0x99,0x94,0x9b,0x01,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x99,0x94,0x9e,0x99,0x94,\r
-  0x94,0x97,0x9a,0x9d,0x9d,0x9c,0x9c,0x9c,0x9b,0x9b,0x9a,0x9a,0x9a,\r
-  0xf7,0xf7,0x2f,0x27,0xf7,0xf7,0xf7,0x2d,0x27,0x26,0x25,0x27,0x2a,\r
-  0x2e,0x27,0x36,0x25,0x27,0x29,0x2e,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,\r
-  0xf7,0xf7,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x02,0x01,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x2e,0x2e,\r
-  0x2d,0x2c,0x02,0xf7,0xf7,0xf7,0xf7,0x23,0x36,0x36,0x35,0x35,0x35,\r
-  0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x23,\r
-  0x25,0x27,0x29,0x2a,0x2c,0x2e,0x2f,0x2f,0x2f,0x2f,0x9c,0x9c,0x9c,\r
-  0x9d,0x9d,0x04,0x04,0x03,0x03,0x03,0x04,0x05,0x07,0x07,0x07,0x02,\r
-  0xf7,0x02,0x05,0x06,0x05,0x03,0xf7,0xf7,0xf7,0x02,0x02,0x04,0x07,\r
-  0x07,0x05,0x03,0x02,0x03,0x04,0x06,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x03,0x02,0x04,0x05,0x04,0x03,\r
-  0xf7,0xf7,0x03,0xf7,0x04,0x04,0x04,0x03,0x02,0x02,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x04,0x03,0x02,0x03,0x02,0xf7,0xf7,0x02,0xf7,\r
-  0x04,0x05,0x06,0x06,0x06,0x05,0x04,0x03,0x99,0x99,0x99,0x98,0x98,\r
-  0x98,0x98,0x97,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x97,0x9a,0x9f,0x01,0xf7,0xf7,0xf7,0xf7,0x9f,0x97,\r
-  0x97,0x02,0x99,0x9a,0x9a,0x9b,0x99,0x99,0x9b,0x9d,0x9f,0x9f,0x03,\r
-  0x27,0x27,0x27,0x28,0x2a,0x2b,0x2e,0x2c,0x2e,0x2b,0x2f,0x2c,0x2b,\r
-  0x2c,0x2a,0x2a,0x2a,0x27,0x2f,0x2f,0x2d,0x2f,0x2e,0x28,0x27,0x26,\r
-  0x26,0x25,0x25,0x25,0x25,0x26,0x02,0x03,0x03,0x9f,0x9a,0x97,0x98,\r
-  0x9a,0x9d,0x9f,0x9f,0x98,0x94,0x9b,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x02,0x9b,0x94,0x99,0x9f,0x98,0x94,0x94,0x94,0x94,\r
-  0x97,0x97,0x97,0x9e,0x9e,0x9d,0x9d,0x9d,0x2e,0xf7,0xf7,0xf7,0x27,\r
-  0xf6,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x26,0x27,0x28,\r
-  0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x01,0x2e,0x2e,0x2e,0x2c,0x2f,0xf7,0xf7,0xf7,\r
-  0xf7,0x26,0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,\r
-  0x35,0x35,0x35,0x36,0x36,0x23,0x23,0x27,0x29,0x2a,0x2c,0x2e,0x2f,\r
-  0x2f,0x2f,0x2f,0x2f,0x2f,0x9c,0x9d,0x9d,0x9d,0x9d,0x04,0x03,0x03,\r
-  0x03,0x03,0x03,0x06,0x07,0x07,0x04,0xf7,0x02,0x06,0x07,0x06,0x06,\r
-  0x06,0x03,0xf7,0xf7,0xf7,0x02,0x03,0x06,0x07,0x07,0x05,0x04,0x04,\r
-  0x04,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x06,0x02,0xf7,0x05,0x05,0x04,0x02,0xf7,0xf7,0x02,0x02,0x04,0x04,\r
-  0x03,0x03,0x03,0x02,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x03,\r
-  0x03,0x03,0x02,0xf7,0xf7,0x02,0xf7,0x05,0x05,0x06,0x07,0x07,0x05,\r
-  0x04,0x03,0x03,0x9a,0x9a,0x9c,0x9b,0x9c,0x9c,0x9c,0x9b,0x9a,0x9a,\r
-  0x9a,0x99,0x99,0x99,0x99,0x99,0x99,0x9a,0x9a,0x9b,0x9c,0x9e,0x9f,\r
-  0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x97,0x97,0x9d,0x9e,0x9a,0x9a,\r
-  0x9a,0x9d,0x97,0x9a,0x9b,0x9d,0x9f,0x03,0x27,0x27,0x27,0x27,0x28,\r
-  0x2a,0x2c,0x2e,0x2c,0x2e,0x2c,0x2f,0x2b,0x2b,0x2c,0x2a,0x2a,0x28,\r
-  0x2a,0x2f,0x2f,0x2c,0x2f,0x2c,0x27,0x27,0x26,0x25,0x25,0x25,0x25,\r
-  0x25,0x02,0x02,0x03,0x03,0x9f,0x9a,0x97,0x98,0x9a,0x9d,0x9f,0x9f,\r
-  0x98,0x94,0x9c,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,\r
-  0x9e,0x97,0x94,0x98,0x9e,0x9d,0x99,0x97,0x94,0x94,0x94,0x97,0x97,\r
-  0x99,0x9e,0x9f,0x2a,0x2a,0x2e,0xf7,0xf7,0xf7,0x27,0x29,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x2b,0x28,0x2c,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x01,0xf6,0x2f,0x02,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0x01,0x01,\r
-  0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2e,\r
-  0x2e,0x2e,0x2c,0x2d,0xf7,0xf7,0xf7,0xf7,0x2a,0x36,0x36,0x35,0x35,\r
-  0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x23,\r
-  0x25,0x27,0x2a,0x2a,0x2c,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,\r
-  0x9d,0x9e,0x9d,0x9d,0x9c,0x04,0x03,0x03,0x03,0x03,0x04,0x07,0x07,\r
-  0x06,0x02,0xf7,0x04,0x06,0x05,0x05,0x05,0x06,0x05,0x02,0xf7,0xf7,\r
-  0x02,0x02,0x06,0x07,0x07,0x07,0x06,0x05,0x06,0x06,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x05,0x02,0x02,0x06,0x04,0x04,\r
-  0x02,0xf7,0x03,0xf7,0x02,0x04,0x04,0x03,0x02,0x02,0x02,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x04,0x03,0x03,0x03,0xf7,0xf7,0xf7,0x02,\r
-  0x02,0x05,0x06,0x06,0x07,0x07,0x06,0x05,0x04,0x04,0x04,0x9c,0x9d,\r
-  0x9e,0x9f,0x9e,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,\r
-  0x9f,0x9f,0x9f,0x9f,0x03,0x03,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x02,0x99,0x97,0x98,0x02,0x9a,0x9a,0x9a,0x9b,0x9c,0x97,0x9b,\r
-  0x9c,0x9e,0x9f,0x27,0x27,0x27,0x27,0x27,0x28,0x2a,0x2c,0x2e,0x2c,\r
-  0x2c,0x2c,0x2f,0x2b,0x2b,0x2c,0x2a,0x2a,0x28,0x2e,0x2f,0x2e,0x2d,\r
-  0x2f,0x2a,0x27,0x27,0x26,0x25,0x25,0x25,0x25,0x02,0x02,0x02,0x03,\r
-  0x03,0x9f,0x99,0x97,0x99,0x9a,0x9d,0x9f,0x9f,0x97,0x94,0x9c,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x9d,0x99,0x94,\r
-  0x94,0x94,0x94,0x97,0x97,0x97,0x94,0x94,0x94,0x94,0x9c,0x2c,0x2c,\r
-  0x2c,0x2a,0x2f,0xf7,0xf7,0xf7,0xf7,0x2a,0x23,0x2a,0x01,0x2e,0x2a,\r
-  0x2c,0x2e,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf6,0x2f,0x2f,0x2c,0x2c,\r
-  0x2f,0xf6,0x01,0xf7,0xf7,0x01,0x01,0x02,0x01,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2d,0x2e,0x2c,0x2c,0xf7,0xf7,\r
-  0xf7,0xf7,0x2f,0x36,0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,\r
-  0x35,0x35,0x35,0x36,0x36,0x23,0x25,0x27,0x29,0x2a,0x2c,0x2e,0x2f,\r
-  0x2f,0xf6,0x2f,0xf6,0x2f,0x2f,0x2e,0x2d,0x9e,0x9e,0x9e,0x9d,0x9c,\r
-  0x03,0x03,0x03,0x03,0x03,0x06,0x07,0x07,0x04,0xf7,0x03,0x06,0x04,\r
-  0x03,0x03,0x03,0x05,0x06,0x04,0xf7,0xf7,0x02,0x02,0x06,0x07,0x07,\r
-  0x07,0x07,0x06,0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x03,0x02,0x02,0x05,0x04,0x03,0xf7,0xf7,0x04,0xf7,0x03,0x04,\r
-  0x04,0x03,0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x04,\r
-  0x03,0x03,0x03,0xf7,0xf7,0xf7,0x02,0x02,0x05,0x06,0x06,0x06,0x07,\r
-  0x06,0x06,0x05,0x04,0x04,0x04,0x9f,0x9f,0x9f,0x03,0x03,0x02,0x02,\r
-  0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x01,0x02,0x01,\r
-  0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x9c,0x97,0x94,\r
-  0x9b,0x9f,0x9a,0x9a,0x9a,0x9c,0x99,0x99,0x9b,0x9d,0x9f,0x28,0x27,\r
-  0x27,0x27,0x27,0x27,0x29,0x2a,0x2d,0x2d,0x2d,0x2b,0x2d,0x2f,0x2b,\r
-  0x2b,0x2b,0x2a,0x2a,0x28,0xf6,0x2f,0x2e,0x2e,0x2f,0x2a,0x27,0x27,\r
-  0x26,0x25,0x25,0x25,0x02,0x02,0x02,0x02,0x03,0x03,0x9f,0x99,0x97,\r
-  0x99,0x9a,0x9e,0x9f,0x9f,0x97,0x94,0x9d,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x03,0x9f,0x9d,0x9c,0x9b,0x9a,\r
-  0x9a,0x99,0x99,0x98,0x94,0x94,0xf7,0xf6,0x01,0x2f,0x2c,0x2a,0x2c,\r
-  0x01,0xf7,0xf7,0xf7,0xf6,0x2a,0x2c,0x2f,0x2f,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf6,0x02,0x01,0x02,0x2c,0x2a,0x2d,0x2f,0x02,0x01,0x01,\r
-  0x01,0x02,0x02,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x2f,0x2d,0x2e,0x2c,0x2b,0x02,0xf7,0xf7,0xf7,0xf7,0x36,0x36,0x36,\r
-  0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x23,\r
-  0x25,0x27,0x2a,0x2a,0x2c,0x2f,0x2f,0xf6,0x2f,0xf6,0x2f,0x2f,0x2f,\r
-  0x2d,0x2c,0x2c,0x9e,0x9e,0x9e,0x9d,0x9c,0x03,0x03,0x03,0x03,0x04,\r
-  0x07,0x07,0x06,0xf7,0xf7,0x06,0x05,0x02,0x02,0x03,0x03,0x04,0x06,\r
-  0x06,0x02,0xf7,0x02,0x02,0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x02,0x02,0x04,0x05,0x04,\r
-  0x03,0xf7,0xf7,0x03,0xf7,0x04,0x04,0x03,0x03,0x02,0x02,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x03,0x03,0x03,0xf7,0xf7,0xf7,\r
-  0x03,0x02,0x05,0x06,0x05,0x06,0x07,0x07,0x06,0x05,0x05,0x05,0x05,\r
-  0x05,0x9f,0x03,0x03,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,\r
-  0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x9f,0x97,0x97,0x97,0x03,0x9b,0x9a,0x9a,\r
-  0x9a,0x9d,0x97,0x9a,0x9b,0x9d,0x29,0x27,0x27,0x27,0x27,0x27,0x28,\r
-  0x2a,0x2b,0x2e,0x2c,0x2f,0x2b,0x2e,0x2c,0x2b,0x2c,0x2b,0x2a,0x2a,\r
-  0x27,0x02,0x2f,0x2d,0x2f,0x2f,0x2a,0x27,0x27,0x26,0x25,0x25,0x02,\r
-  0x02,0x02,0x02,0x02,0x03,0x03,0x9e,0x99,0x97,0x99,0x9a,0x9e,0x9f,\r
-  0x9f,0x97,0x94,0x9d,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x9a,0x9a,0x9a,0x99,\r
-  0x97,0xf7,0xf7,0xf6,0x2f,0x2f,0x2c,0x2a,0x2a,0x2f,0x01,0x01,0xf6,\r
-  0x2f,0x2e,0x2e,0xf7,0xf7,0xf7,0xf7,0x01,0xf7,0x02,0x02,0xf7,0xf7,\r
-  0x01,0x2e,0x2c,0x2d,0x2f,0xf6,0x02,0x02,0x02,0x02,0x01,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2d,0x2e,0x2d,0x2a,0x2e,\r
-  0xf7,0xf7,0xf7,0xf7,0x25,0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x35,\r
-  0x35,0x35,0x35,0x35,0x36,0x36,0x23,0x27,0x27,0x2a,0x2c,0x2e,0x2f,\r
-  0x2f,0x2f,0xf6,0xf6,0x2f,0x2f,0x2e,0x2d,0x2c,0x2a,0x2a,0x9e,0x9e,\r
-  0x9d,0x9c,0x9b,0x03,0x03,0x03,0x04,0x07,0x07,0x06,0x03,0xf7,0x04,\r
-  0x06,0x03,0x02,0x02,0x03,0x03,0x03,0x04,0x06,0x03,0xf7,0xf7,0x02,\r
-  0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x06,0x02,0xf7,0x05,0x04,0x04,0x02,0xf7,0x02,0x02,0x02,0x04,\r
-  0x04,0x03,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x04,0x03,0x03,0x02,0xf7,0xf7,0x02,0x03,0x03,0x05,0x06,0x04,0x06,\r
-  0x07,0x07,0x06,0x06,0x06,0x05,0x06,0x06,0x06,0x02,0x02,0x02,0x01,\r
-  0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x03,0x98,0x97,0x94,0x99,0x03,0x9a,0x9a,0x9a,0x9a,0x9c,0x94,0x9b,\r
-  0x9c,0x2a,0x28,0x27,0x27,0x27,0x27,0x27,0x28,0x2a,0x2c,0x2e,0x2c,\r
-  0x2e,0x2c,0x2f,0x2b,0x2b,0x2c,0x2a,0x2a,0x29,0x28,0x2f,0x2f,0x2d,\r
-  0x2f,0x2f,0x28,0x27,0x27,0x26,0x25,0x02,0x02,0x02,0x02,0x02,0x02,\r
-  0x03,0x03,0x9e,0x99,0x97,0x99,0x9a,0x9e,0x9f,0x9f,0x97,0x94,0x9c,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0x9b,0x9b,0x9a,0x9a,0x99,0xf7,0xf7,0xf7,0xf7,\r
-  0x2d,0x2a,0x2a,0x2d,0x2f,0x01,0x01,0xf7,0x2f,0x2f,0xf7,0xf7,0xf7,\r
-  0xf6,0x28,0xf7,0xf7,0x2f,0x01,0xf7,0xf7,0x2f,0x2f,0x2f,0x2f,0x2f,\r
-  0x2f,0xf6,0x02,0x02,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x2f,0x2d,0x2e,0x2e,0x2c,0x2a,0xf7,0xf7,0xf7,0xf7,0x2a,0x35,\r
-  0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x23,\r
-  0x23,0x27,0x29,0x2a,0x2d,0x2f,0x2f,0x2f,0xf6,0xf6,0xf6,0x2f,0x2f,\r
-  0x2d,0x2c,0x2a,0x2a,0x2a,0x2a,0x9e,0x9d,0x9c,0x9b,0x9a,0x03,0x03,\r
-  0x03,0x07,0x07,0x07,0x04,0xf7,0x02,0x06,0x04,0x02,0x02,0x03,0x03,\r
-  0x03,0x03,0x04,0x06,0x04,0x02,0xf7,0x02,0x05,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x05,0x02,0x02,0x06,0x04,\r
-  0x03,0x02,0xf7,0x04,0xf7,0x02,0x04,0x04,0x03,0x02,0x02,0x02,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x03,0x03,0x02,0xf7,0xf7,\r
-  0x02,0x03,0x04,0x06,0x05,0x04,0x06,0x07,0x07,0x07,0x06,0x06,0x06,\r
-  0x06,0x06,0x06,0x07,0x01,0x02,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0x01,0x01,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x9a,0x98,0x97,0x94,\r
-  0x9e,0x9f,0x9a,0x9a,0x9a,0x9b,0x99,0x97,0x9b,0x2c,0x2a,0x28,0x27,\r
-  0x27,0x27,0x27,0x27,0x28,0x2a,0x2c,0x2e,0x2c,0x2d,0x2c,0x2f,0x2b,\r
-  0x2b,0x2c,0x2a,0x2a,0x28,0x2a,0x2f,0x2f,0x2c,0x2f,0x2d,0x27,0x27,\r
-  0x26,0x26,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x9e,0x99,\r
-  0x97,0x99,0x9a,0x9e,0x9f,0x9f,0x97,0x94,0x9c,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x02,0x02,0x03,0x03,0x9f,0x9b,\r
-  0x9b,0x9b,0x9b,0x9a,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf6,0x2e,0x2f,\r
-  0x02,0xf6,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x36,0x2a,0xf7,0x2f,0x2f,\r
-  0x01,0xf7,0x2f,0x2f,0x2f,0x2f,0xf6,0x2f,0x2f,0x2f,0x2f,0x02,0x01,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2d,0x2e,0x2f,0x2c,\r
-  0x29,0x2c,0xf7,0xf7,0xf7,0xf7,0x36,0x36,0x36,0x35,0x35,0x35,0x35,\r
-  0x35,0x35,0x35,0x35,0x35,0x36,0x23,0x25,0x27,0x29,0x2a,0x2d,0x2f,\r
-  0x2f,0xf6,0xf6,0xf6,0x2f,0x2f,0x2e,0x2c,0x2c,0x2a,0x2a,0x2a,0x2a,\r
-  0x2b,0x9d,0x9c,0x9b,0x9a,0x9a,0x03,0x04,0x07,0x07,0x07,0x04,0xf7,\r
-  0xf7,0x06,0x05,0x03,0x02,0x03,0x03,0x03,0x03,0x03,0x03,0x06,0x06,\r
-  0x02,0xf7,0xf7,0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x04,0x02,0x03,0x05,0x04,0x03,0xf7,0xf7,0x04,0xf7,0x03,\r
-  0x04,0x04,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x04,0x03,0x04,0x02,0xf7,0xf7,0x03,0x03,0x04,0x06,0x04,0x03,\r
-  0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x06,0x06,0x07,0x07,0x07,0x01,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0x02,0x02,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0x9c,0x98,0x97,0x94,0x97,0x03,0x9c,0x9a,0x9a,\r
-  0x9a,0x9d,0x97,0x99,0x2c,0x2b,0x29,0x27,0x27,0x27,0x27,0x27,0x27,\r
-  0x29,0x2a,0x2d,0x2d,0x2d,0x2c,0x2c,0x2f,0x2b,0x2b,0x2c,0x2a,0x2a,\r
-  0x28,0x2f,0x2f,0x2e,0x2d,0x2f,0x2c,0x27,0x27,0x26,0x02,0x02,0x02,\r
-  0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x9e,0x99,0x97,0x99,0x9a,0x9e,\r
-  0x9f,0x9f,0x97,0x94,0x9c,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x01,0x02,0x02,0x9c,0x9c,0x9c,0x9b,0x9b,0xf6,\r
-  0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2d,0x2e,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2c,0x2c,0x2f,0x2f,0x2e,0x2f,0x2f,\r
-  0x02,0x02,0x02,0x2f,0x2f,0x2f,0x2f,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x2f,0x2d,0x2e,0x2f,0x2f,0x2a,0x27,0x2f,0xf7,0xf7,0xf7,\r
-  0x2c,0x35,0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,\r
-  0x23,0x25,0x27,0x2a,0x2c,0x2e,0x2f,0x2f,0xf6,0xf6,0xf6,0x2f,0x2f,\r
-  0x2d,0x2c,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2d,0x9c,0x9b,0x9a,0x9a,\r
-  0x9a,0x04,0x07,0x07,0x07,0x05,0xf7,0xf7,0x04,0x06,0x04,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x05,0x06,0x02,0xf7,0xf7,0x05,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x03,0x02,0x04,0x05,\r
-  0x04,0x02,0xf7,0xf7,0x03,0xf7,0x04,0x04,0x03,0x02,0x02,0x02,0x03,\r
-  0x02,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x03,0x03,0xf7,0xf7,\r
-  0xf7,0x03,0x03,0x04,0x06,0x03,0x04,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x06,0x07,0x07,0x07,0x07,0x07,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x02,0x02,\r
-  0x02,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x9e,\r
-  0x99,0x98,0x97,0x94,0x9a,0x03,0x9a,0x9a,0x9a,0x9a,0x9d,0x94,0x2d,\r
-  0x2c,0x2a,0x28,0x27,0x27,0x27,0x27,0x27,0x28,0x2a,0x2b,0x2d,0x2c,\r
-  0x2e,0x2b,0x2e,0x2d,0x2b,0x2b,0x2b,0x2a,0x2a,0x27,0x02,0x2f,0x2e,\r
-  0x2e,0x2f,0x2a,0x27,0x27,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,\r
-  0x02,0x03,0x03,0x9e,0x99,0x97,0x99,0x9a,0x9e,0x9f,0x9f,0x97,0x94,\r
-  0x9b,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x9c,0x9c,0x9c,0x9c,0x9c,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,\r
-  0x2f,0xf6,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x02,0x01,0x01,\r
-  0x2f,0x2c,0x2d,0x2f,0x2f,0x2f,0x2f,0xf6,0x01,0xf7,0x01,0x2f,0x2f,\r
-  0x2f,0x2f,0xf6,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x2f,0x2d,0x2e,0x2f,\r
-  0x2f,0x2d,0x28,0x27,0x02,0xf7,0xf7,0xf7,0x25,0x35,0x36,0x36,0x35,\r
-  0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x23,0x25,0x27,0x2a,0x2c,0x2e,\r
-  0x2f,0x2f,0xf6,0xf6,0x2f,0x2f,0x2f,0x2c,0x2a,0x2a,0x29,0x2a,0x2a,\r
-  0x2a,0x2b,0x2d,0x2f,0x9a,0x9a,0x9a,0x9a,0x9e,0x07,0x07,0x07,0x05,\r
-  0xf7,0xf7,0x03,0x06,0x05,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x05,0x06,0x02,0xf7,0xf7,0x05,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x02,0xf7,0x05,0x04,0x04,0x02,0xf7,0x03,0x02,0x02,\r
-  0x04,0x04,0x03,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x04,0x03,0x03,0xf7,0xf7,0xf7,0x03,0x03,0x05,0x06,0x03,\r
-  0x04,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x02,0x02,0x02,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x9f,0x9a,0x98,0x97,0x94,0x94,\r
-  0x9d,0x9f,0x9a,0x9a,0x9a,0x9b,0x9c,0x02,0x2c,0x2c,0x2a,0x28,0x27,\r
-  0x27,0x27,0x27,0x27,0x28,0x2a,0x2c,0x2e,0x2c,0x2f,0x2b,0x2f,0x2c,\r
-  0x2b,0x2c,0x2a,0x2a,0x29,0x27,0xf6,0x2f,0x2d,0x2f,0x2f,0x2a,0x27,\r
-  0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x9e,\r
-  0x98,0x97,0x99,0x9a,0x9e,0x9f,0x9f,0x97,0x94,0x9a,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x9d,0x9d,0x9d,\r
-  0x9d,0x9d,0x2f,0x2f,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x2f,0x02,0x01,0xf7,\r
-  0xf7,0x01,0xf7,0xf7,0xf7,0x01,0xf6,0x2f,0x2f,0x2f,0x2f,0x02,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf6,0x2a,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf6,0x2d,0x2d,0x2f,0x2f,0x2f,0x2e,0x2a,0x26,0x26,0x01,\r
-  0xf7,0xf7,0xf7,0x25,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,\r
-  0x23,0x23,0x27,0x29,0x2a,0x2d,0x2f,0x2f,0xf6,0xf6,0xf6,0x2f,0x2f,\r
-  0x2e,0x2c,0x2a,0x2a,0x29,0x29,0x29,0x2a,0x2b,0x2d,0x2f,0x02,0x9a,\r
-  0x9a,0x9a,0x9f,0xf7,0x07,0x07,0x06,0xf7,0xf7,0x02,0x06,0x06,0x04,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x05,0x06,0x02,0xf7,\r
-  0xf7,0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x02,0x02,0x06,\r
-  0x04,0x04,0x02,0xf7,0x04,0xf7,0x03,0x04,0x04,0x02,0x02,0x02,0x02,\r
-  0x02,0x03,0x02,0x03,0x03,0x03,0x03,0x03,0x04,0x04,0x03,0x03,0xf7,\r
-  0xf7,0xf7,0x03,0x04,0x05,0x06,0x02,0x04,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,\r
-  0x02,0x02,0x02,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x03,0x9d,0x99,0x98,0x97,0x94,0x97,0x9f,0x9d,0x9a,0x9a,\r
-  0x9a,0x9c,0x2f,0x2f,0x2c,0x2c,0x29,0x28,0x27,0x27,0x27,0x27,0x27,\r
-  0x28,0x2a,0x2c,0x2e,0x2c,0x2d,0x2c,0x2f,0x2b,0x2b,0x2c,0x2a,0x2a,\r
-  0x28,0x28,0x2f,0x2f,0x2c,0x2f,0x2f,0x28,0x03,0x02,0x02,0x02,0x02,\r
-  0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x9e,0x98,0x97,0x99,0x9a,\r
-  0x9e,0x9f,0x9f,0x97,0x94,0x99,0x03,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x94,0x94,0x94,0x94,0x94,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x01,0xf6,0x2f,0x2f,0x2f,0x2f,0x2f,0x01,0xf7,0xf7,0xf7,0xf7,0x01,\r
-  0x27,0x23,0x2c,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2e,0x2d,0x2e,0x2f,\r
-  0x2f,0x2f,0x2e,0x2c,0x27,0x23,0x26,0x01,0xf7,0xf7,0xf7,0x27,0x35,\r
-  0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x23,0x25,0x27,0x2a,0x2c,0x2e,\r
-  0x2f,0x2f,0xf6,0xf6,0xf6,0x2f,0x2f,0x2d,0x2c,0x2a,0x29,0x29,0x28,\r
-  0x29,0x2a,0x2b,0x2e,0x2f,0x02,0x01,0x9a,0x9b,0x9f,0xf7,0xf7,0x07,\r
-  0x05,0xf7,0xf7,0x02,0x05,0x06,0x05,0x04,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x04,0x06,0x06,0x02,0xf7,0xf7,0x04,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x06,0x07,\r
-  0x07,0x07,0x07,0x06,0x02,0x03,0x05,0x04,0x04,0xf7,0xf7,0x04,0xf7,\r
-  0x03,0x04,0x04,0x02,0x02,0x02,0x02,0x02,0x03,0x02,0x03,0x03,0x03,\r
-  0x03,0x03,0x04,0x04,0x03,0x03,0xf7,0xf7,0xf7,0x03,0x04,0x05,0x05,\r
-  0x02,0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x02,0x02,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x9f,0x9a,\r
-  0x98,0x98,0x97,0x94,0x98,0x03,0x9b,0x9a,0x9a,0x9a,0x2b,0x02,0x2f,\r
-  0x2c,0x2a,0x28,0x27,0x27,0x27,0x27,0x27,0x27,0x29,0x2a,0x2d,0x2d,\r
-  0x2c,0x2c,0x2c,0x2f,0x2b,0x2b,0x2c,0x2a,0x2a,0x28,0x2c,0x2f,0x2f,\r
-  0x2d,0x2f,0x2d,0x9f,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,\r
-  0x02,0x02,0x03,0x03,0x9e,0x98,0x97,0x99,0x9a,0x9e,0x9f,0x9f,0x98,\r
-  0x94,0x97,0x9f,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x02,0x02,\r
-  0x94,0x94,0x94,0x94,0x94,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf6,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0xf6,0xf6,0xf6,0xf6,\r
-  0x2f,0xf6,0x02,0xf7,0xf7,0xf7,0xf7,0x2c,0x36,0x23,0x2f,0xf7,0xf7,\r
-  0xf7,0xf7,0xf6,0x2e,0x2e,0x2d,0x2c,0x2b,0x2a,0x2a,0x2a,0x28,0x27,\r
-  0x23,0x25,0x2e,0xf7,0xf7,0xf7,0x2f,0x25,0x35,0x35,0x35,0x35,0x36,\r
-  0x23,0x25,0x27,0x29,0x2a,0x2c,0x2e,0x2f,0x2f,0xf6,0xf6,0x2f,0x2f,\r
-  0x2f,0x2c,0x2a,0x2a,0x29,0x28,0x28,0x29,0x2a,0x2c,0x2f,0xf6,0x01,\r
-  0x01,0x02,0x9c,0x03,0xf7,0xf7,0xf7,0x05,0xf7,0xf7,0x02,0x05,0x06,\r
-  0x05,0x04,0x04,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x05,0x07,\r
-  0x04,0xf7,0xf7,0xf7,0x04,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x06,0x05,0x06,0x06,0x07,0x07,0x07,0x05,0x02,0x05,\r
-  0x05,0x04,0x03,0xf7,0xf7,0x03,0xf7,0x04,0x04,0x03,0x02,0x02,0x02,\r
-  0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x04,0x03,0x04,0x02,\r
-  0xf7,0xf7,0xf7,0x03,0x04,0x05,0x05,0x02,0x06,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x01,0x02,0x02,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x03,0x9d,0x99,0x98,0x98,0x97,0x94,\r
-  0x9a,0x03,0x9a,0x9a,0x9a,0x2c,0x2c,0x01,0x2d,0x2c,0x2a,0x28,0x27,\r
-  0x27,0x27,0x27,0x27,0x28,0x2a,0x2b,0x2d,0x2c,0x2e,0x2b,0x2e,0x2f,\r
-  0x2b,0x2b,0x2b,0x2a,0x2a,0x27,0x2f,0x2f,0x2e,0x2d,0x2f,0x9d,0x9f,\r
-  0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,\r
-  0x9e,0x98,0x97,0x99,0x9a,0x9e,0x9f,0x9f,0x98,0x94,0x97,0x9e,0x03,\r
-  0x02,0x01,0x01,0x01,0x02,0x02,0x03,0x03,0x94,0x94,0x94,0x94,0x94,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf6,0x2f,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0xf6,0x02,0xf7,0xf7,\r
-  0xf7,0xf6,0x23,0x36,0x2a,0xf7,0xf7,0xf7,0x02,0x2f,0x2f,0x2d,0x2c,\r
-  0x2a,0x27,0x25,0x23,0x25,0x25,0x25,0x26,0x25,0x23,0x26,0x2e,0xf7,\r
-  0xf7,0xf7,0x2f,0x25,0x35,0x35,0x35,0x36,0x26,0x29,0x2a,0x2c,0x2d,\r
-  0x2f,0x2f,0xf6,0xf6,0xf6,0x2f,0x2f,0x2e,0x2c,0x2a,0x29,0x28,0x28,\r
-  0x28,0x29,0x2a,0x2c,0x2f,0xf6,0x01,0x01,0xf6,0x2e,0x02,0xf7,0xf7,\r
-  0xf7,0x9c,0xf7,0xf7,0x02,0x04,0x06,0x05,0x04,0x04,0x04,0x04,0x03,\r
-  0x03,0x03,0x03,0x03,0x04,0x06,0x07,0x06,0x02,0xf7,0xf7,0xf7,0x04,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x05,\r
-  0x05,0x06,0x07,0x07,0x05,0x03,0x06,0x05,0x04,0x04,0xf7,0xf7,0xf7,\r
-  0x02,0x04,0x04,0x03,0x02,0x02,0x02,0x02,0x03,0x02,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x04,0x03,0x04,0xf7,0xf7,0xf7,0x02,0x03,0x04,0x05,\r
-  0x04,0x02,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x02,0x02,0x02,\r
-  0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x01,0x02,0x9f,0x9c,0x99,0x98,0x97,0x97,0x94,0x9b,0x03,0x99,0x9a,\r
-  0x2e,0x2c,0x2e,0xf6,0x2c,0x2c,0x2a,0x28,0x27,0x27,0x27,0x27,0x27,\r
-  0x28,0x2a,0x2c,0x2e,0x2c,0x2f,0x2b,0x2f,0x2c,0x2b,0x2c,0x2a,0x2a,\r
-  0x29,0x27,0x02,0x2f,0x2e,0x2e,0x98,0x9e,0x03,0x03,0x02,0x02,0x02,\r
-  0x02,0x01,0x02,0x02,0x02,0x02,0x02,0x03,0x9f,0x9e,0x98,0x97,0x99,\r
-  0x9a,0x9e,0x9f,0x9f,0x98,0x94,0x94,0x9a,0x9f,0x9f,0x03,0x03,0x03,\r
-  0x9f,0x9f,0x9e,0x94,0x94,0x94,0x94,0x97,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0xf6,0x2f,0xf6,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,\r
-  0xf7,0x01,0x01,0x01,0x02,0x01,0xf7,0xf7,0xf7,0x27,0x35,0x2a,0xf7,\r
-  0xf7,0xf7,0xf6,0x2f,0x2e,0x2c,0x2e,0xf7,0xf7,0x01,0xf6,0x2c,0x27,\r
-  0x25,0x23,0x27,0x28,0x2a,0x27,0x26,0x27,0x01,0xf7,0xf7,0xf6,0x26,\r
-  0x35,0x35,0x35,0x27,0x2c,0x2d,0x2e,0x2f,0xf6,0x02,0xf6,0xf6,0x2f,\r
-  0x2f,0x2d,0x2a,0x2a,0x29,0x28,0x28,0x28,0x29,0x2a,0x2c,0x2f,0x02,\r
-  0x01,0x02,0x2f,0x2b,0x36,0xf7,0xf7,0xf7,0x99,0x97,0xf7,0x02,0x04,\r
-  0x05,0x05,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x05,0x06,\r
-  0x07,0x06,0x03,0xf7,0xf7,0xf7,0x02,0x04,0x06,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x07,0x06,0x05,\r
-  0x06,0x04,0x03,0x03,0xf7,0xf7,0xf7,0x03,0x04,0x04,0x03,0x02,0x02,\r
-  0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x03,0x03,\r
-  0xf7,0xf7,0xf7,0x02,0x03,0x04,0x06,0x03,0x02,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0x02,0x02,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0x02,0x02,0x9f,0x9d,\r
-  0x99,0x98,0x97,0x97,0x97,0x9f,0x9e,0x9a,0x2e,0x2d,0x2c,0xf6,0x2f,\r
-  0x2c,0x2b,0x29,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x2a,0x2c,0x2e,\r
-  0x2c,0x2e,0x2c,0x2f,0x2b,0x2b,0x2c,0x2a,0x2a,0x28,0x27,0x2f,0x2f,\r
-  0x2d,0x99,0x99,0x9f,0x03,0x03,0x02,0x02,0x02,0x02,0x01,0x02,0x02,\r
-  0x02,0x02,0x02,0x03,0x9f,0x9e,0x98,0x97,0x99,0x9a,0x9e,0x9f,0x9f,\r
-  0x98,0x94,0x94,0x98,0x9c,0x9e,0x9f,0x9f,0x9e,0x9f,0x9e,0x99,0x99,\r
-  0x98,0x98,0x98,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x02,\r
-  0x01,0xf7,0xf7,0x2c,0x35,0x27,0xf7,0xf7,0x01,0xf6,0x2e,0x2c,0x2a,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x27,0x27,0x2e,0xf7,\r
-  0xf7,0xf7,0x02,0x2a,0x2a,0xf7,0xf7,0x02,0x26,0x35,0x35,0x27,0x2f,\r
-  0x2f,0x2f,0xf6,0x02,0x02,0xf6,0x2f,0x2f,0x2c,0x2a,0x29,0x28,0x27,\r
-  0x28,0x28,0x2a,0x2a,0x2c,0x2f,0x02,0x01,0x02,0x2f,0x28,0x35,0x35,\r
-  0xf7,0x01,0x97,0x97,0x97,0x02,0x04,0x05,0x04,0x04,0x04,0x04,0x04,\r
-  0x04,0x04,0x04,0x04,0x05,0x06,0x06,0x06,0x04,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0x02,0x04,0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x04,0x02,0x02,0xf7,0xf7,\r
-  0xf7,0x03,0x04,0x04,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x04,0x03,0x03,0xf7,0xf7,0xf7,0x03,0x03,0x04,\r
-  0x06,0x02,0x02,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x02,\r
-  0x02,0x02,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x01,0x01,0x02,0x03,0x9e,0x9a,0x98,0x97,0x97,\r
-  0x98,0x02,0x9a,0x2f,0x2e,0x2c,0x2b,0x01,0x2d,0x2c,0x2a,0x28,0x27,\r
-  0x27,0x27,0x27,0x27,0x27,0x29,0x2a,0x2d,0x2d,0x2c,0x2c,0x2c,0x2f,\r
-  0x2b,0x2b,0x2c,0x2a,0x2a,0x28,0x2a,0x2f,0x2e,0x9b,0x99,0x9a,0x9f,\r
-  0x03,0x02,0x02,0x02,0x02,0x02,0x01,0x02,0x02,0x02,0x02,0x02,0x03,\r
-  0x9f,0x9d,0x97,0x97,0x99,0x9a,0x9e,0x9f,0x9f,0x99,0x94,0x94,0x94,\r
-  0x99,0x9a,0x9b,0x9c,0x9d,0x9c,0x99,0x99,0x99,0x98,0x98,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x02,0xf7,0xf7,0xf7,0x25,0x27,\r
-  0xf7,0xf7,0x01,0xf6,0x2e,0x2a,0x2f,0xf7,0xf7,0xf7,0xf7,0xf6,0xf6,\r
-  0xf7,0xf7,0xf7,0xf7,0x2f,0x28,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x28,0xf7,0xf7,0x2f,0x36,0x35,0x23,0x2f,0x02,0x02,0x01,0x02,0xf6,\r
-  0x2f,0x2d,0x2c,0x2a,0x29,0x27,0x27,0x28,0x29,0x2a,0x2a,0x2e,0x2f,\r
-  0x02,0x01,0xf6,0x2f,0x27,0x35,0x35,0x35,0x03,0x97,0x97,0x94,0x99,\r
-  0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x05,0x05,0x06,\r
-  0x06,0x05,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0x02,0x03,0x04,0x04,0x05,\r
-  0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x06,0x06,0x05,0xf7,0x02,0xf7,0xf7,0x02,0x04,0x03,0x04,0x03,0x02,\r
-  0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x04,\r
-  0x03,0xf7,0xf7,0xf7,0x03,0x04,0x05,0x06,0x02,0x03,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0x02,0x02,0x01,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0x02,0x9f,0x9a,0x98,0x97,0x94,0x99,0x02,0x2f,0x2e,\r
-  0x2e,0x2c,0x2c,0xf6,0x2c,0x2c,0x2a,0x28,0x27,0x27,0x27,0x27,0x27,\r
-  0x28,0x2a,0x2b,0x2d,0x2c,0x2e,0x2b,0x2d,0x2f,0x2c,0x2b,0x2b,0x2a,\r
-  0x29,0x27,0x2f,0x2f,0x9a,0x9a,0x98,0x9a,0x9f,0x03,0x02,0x02,0x02,\r
-  0x02,0x02,0x01,0x02,0x02,0x02,0x02,0x02,0x03,0x9f,0x9c,0x97,0x97,\r
-  0x99,0x9a,0x9e,0x9f,0x9f,0x9a,0x94,0x94,0x94,0x94,0x98,0x99,0x99,\r
-  0x99,0x99,0x99,0x99,0x98,0x98,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x01,0x02,0xf7,0xf7,0x2f,0x2c,0xf7,0xf7,0xf7,0xf6,0x2e,0x2a,\r
-  0x01,0xf7,0xf7,0xf6,0x36,0x35,0x35,0x35,0x36,0x2a,0xf7,0xf7,0xf7,\r
-  0x2a,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2c,0xf7,0xf7,0x2a,\r
-  0x35,0x23,0x02,0x01,0x01,0x01,0xf6,0x2f,0x2e,0x2c,0x29,0x28,0x27,\r
-  0x27,0x27,0x29,0x2a,0x2c,0x2e,0x2f,0x01,0x01,0x2f,0x2c,0x23,0x35,\r
-  0x35,0x35,0x2c,0x97,0x94,0x94,0x9b,0x9e,0x04,0x04,0x04,0x04,0x04,\r
-  0x04,0x04,0x04,0x04,0x04,0x05,0x05,0x04,0x03,0x02,0x02,0xf7,0xf7,\r
-  0xf7,0x02,0x03,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,\r
-  0x04,0x05,0x05,0x04,0x03,0x04,0x06,0x06,0x05,0x04,0xf7,0x02,0xf7,\r
-  0xf7,0x03,0x03,0x03,0x04,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x03,\r
-  0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x02,0xf7,0xf7,0xf7,0x04,0x04,\r
-  0x05,0x06,0x02,0x03,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x01,0x02,0x02,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,\r
-  0x9f,0x9a,0x97,0x97,0x97,0x9d,0x29,0x2f,0x2e,0x2d,0x2c,0x2f,0x2f,\r
-  0x2c,0x2b,0x29,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x2a,0x2c,0x2e,\r
-  0x2c,0x2f,0x2b,0x2e,0x2c,0x2c,0x2b,0x2a,0x2a,0x28,0x27,0x02,0x9a,\r
-  0x9a,0x9a,0x98,0x9d,0x9f,0x03,0x02,0x02,0x02,0x02,0x01,0x01,0x02,\r
-  0x02,0x02,0x02,0x02,0x03,0x9f,0x9c,0x97,0x97,0x99,0x9a,0x9e,0x9f,\r
-  0x9f,0x9c,0x94,0x94,0x94,0x94,0x94,0x97,0x97,0x99,0x99,0x99,0x98,\r
-  0x98,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf6,0x2e,0x2a,0xf7,0xf7,0xf7,0x27,0x36,0x36,\r
-  0x36,0x35,0x35,0x35,0x35,0x2a,0xf7,0xf7,0x2a,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x2a,0xf7,0x01,0x36,0x36,0x01,0xf7,0x01,\r
-  0x02,0x2f,0x2e,0x2a,0x29,0x27,0x27,0x27,0x27,0x29,0x2a,0x2c,0x2f,\r
-  0x02,0x01,0x02,0x2f,0x2a,0x36,0x35,0x35,0x35,0x02,0xf7,0x94,0x94,\r
-  0x9e,0x9d,0x9c,0x04,0x04,0x04,0x03,0x04,0x04,0x04,0x04,0x04,0x04,\r
-  0x04,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0x02,0x04,0x05,0x05,0x05,0x05,\r
-  0x04,0x04,0x03,0x02,0x02,0xf7,0xf7,0xf7,0x02,0x02,0x02,0x02,0x03,\r
-  0x06,0x06,0x05,0x03,0xf7,0xf7,0xf7,0xf7,0x03,0x03,0x02,0x04,0x03,\r
-  0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x04,0x04,\r
-  0x04,0x02,0x02,0xf7,0xf7,0x04,0x04,0x05,0x05,0x02,0x04,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0xf7,0xf7,0xf7,0xf7,\r
-  0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0x02,0x01,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x9f,0x9a,0x97,0x97,\r
-  0x97,0x27,0x2c,0x2f,0x2e,0x2d,0x2b,0x01,0x2e,0x2c,0x2a,0x28,0x27,\r
-  0x27,0x27,0x27,0x27,0x27,0x28,0x2a,0x2c,0x2e,0x2c,0x2e,0x2c,0x2f,\r
-  0x2c,0x2c,0x2b,0x2a,0x29,0x27,0x27,0x97,0x9a,0x9a,0x9a,0x98,0x9e,\r
-  0x03,0x03,0x02,0x02,0x02,0x02,0x01,0x01,0x02,0x02,0x02,0x02,0x02,\r
-  0x03,0x9f,0x9c,0x97,0x97,0x99,0x9b,0x9e,0x9f,0x9f,0x9d,0x97,0x94,\r
-  0x94,0x94,0x94,0x94,0x97,0x97,0x97,0x97,0x97,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf6,0x2f,\r
-  0x2a,0x2f,0xf7,0xf7,0x23,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,\r
-  0x36,0x2f,0xf7,0x2d,0xf7,0xf7,0xf7,0x02,0x2e,0x2f,0x01,0xf7,0xf7,\r
-  0xf7,0x01,0xf7,0x25,0x36,0xf7,0xf7,0x01,0xf6,0x2e,0x2c,0x2a,0x27,\r
-  0x27,0x27,0x27,0x29,0x2a,0x2d,0x2f,0x02,0x01,0x02,0x2f,0x27,0x35,\r
-  0x35,0x35,0x36,0xf7,0xf7,0xf7,0x99,0x9f,0x9d,0x9c,0x9c,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x04,0x04,0x04,0x03,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x04,0x06,0x07,0x07,0x07,0x06,0x06,0x05,0x04,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x06,0x05,0x04,0x02,0x02,0xf7,\r
-  0xf7,0xf7,0x03,0x03,0x02,0x04,0x04,0x03,0x03,0x02,0x02,0x02,0x02,\r
-  0x02,0x02,0x02,0x02,0x03,0x04,0x04,0x03,0xf7,0x02,0xf7,0xf7,0x04,\r
-  0x04,0x05,0x05,0x02,0x04,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0xf7,0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x9f,0x99,0x97,0x97,0x2f,0x26,0x2f,0x2f,\r
-  0x2e,0x2c,0x2c,0x02,0x2c,0x2c,0x2a,0x28,0x27,0x27,0x27,0x27,0x27,\r
-  0x27,0x29,0x2a,0x2d,0x2d,0x2d,0x2c,0x2d,0x2f,0x2c,0x2b,0x2b,0x2a,\r
-  0x28,0x27,0x9f,0x99,0x9a,0x9a,0x99,0x99,0x9f,0x03,0x03,0x02,0x02,\r
-  0x02,0x02,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x03,0x9f,0x9c,0x97,\r
-  0x98,0x99,0x9a,0x9e,0x9f,0x9f,0x9e,0x99,0x94,0x94,0x94,0x94,0x98,\r
-  0x98,0x98,0x98,0x98,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,\r
-  0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2c,0x2b,0xf7,0xf7,0x26,0x35,\r
-  0x35,0x35,0x35,0x35,0x35,0x36,0x23,0x35,0x35,0x25,0xf7,0x01,0xf7,\r
-  0xf7,0xf7,0x2d,0x2a,0x2a,0x2c,0x01,0xf7,0xf7,0x2b,0xf7,0x28,0x35,\r
-  0xf7,0xf7,0x01,0x2f,0x2c,0x2a,0x28,0x27,0x27,0x27,0x2a,0x2a,0x2d,\r
-  0x2f,0x01,0x01,0xf6,0x2d,0x26,0x35,0x35,0x35,0x23,0xf7,0xf7,0xf7,\r
-  0x2e,0x9e,0x9c,0x9c,0x9b,0x9a,0x02,0x02,0x02,0x03,0x03,0x03,0x04,\r
-  0x04,0x04,0x05,0xf7,0xf7,0xf7,0xf7,0x02,0x05,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x05,0x04,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x03,0x05,0x05,0x04,0x03,0x02,0xf7,0xf7,0xf7,0x03,0x03,0x02,0x04,\r
-  0x04,0x03,0x03,0x02,0x02,0x02,0xf7,0xf7,0x02,0x02,0x02,0x03,0x04,\r
-  0x04,0x03,0xf7,0x03,0xf7,0x02,0x04,0x04,0x05,0x04,0x02,0x04,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0xf7,\r
-  0xf7,0xf7,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0x01,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x01,0x9f,0x98,0x97,0x02,0x2c,0x28,0x2f,0x2f,0x2d,0x2c,0x2f,0x2f,\r
-  0x2c,0x2b,0x29,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x2a,0x2b,0x2d,\r
-  0x2c,0x2f,0x2b,0x2e,0x2f,0x2c,0x2b,0x2a,0x29,0x27,0x03,0x9a,0x9a,\r
-  0x9a,0x9a,0x99,0x99,0x9f,0x03,0x03,0x02,0x02,0x02,0x01,0x01,0x01,\r
-  0x02,0x02,0x02,0x02,0x03,0x03,0x9f,0x9c,0x97,0x98,0x99,0x9a,0x9e,\r
-  0x9f,0x9f,0x9f,0x9b,0x98,0x94,0x94,0x9b,0x9b,0x9b,0x9b,0x9a,0x02,\r
-  0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x01,0x01,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x2f,0x2f,0x2a,0xf7,0xf7,0x2f,0x35,0x35,0x35,0x35,0x35,0x35,0x35,\r
-  0x35,0x36,0x36,0x35,0x35,0x2f,0xf7,0x2f,0xf7,0xf7,0x2e,0x2a,0x2a,\r
-  0x2a,0x2e,0xf7,0xf7,0x2e,0xf7,0x2b,0x35,0xf7,0xf7,0x02,0x2f,0x2b,\r
-  0x2a,0x27,0x27,0x28,0x2a,0x2b,0x2e,0xf6,0x01,0x01,0x2f,0x2c,0x23,\r
-  0x35,0x36,0x35,0x2a,0xf7,0xf7,0xf7,0x2a,0x2c,0x9c,0x9b,0x9b,0x99,\r
-  0x97,0xf7,0xf7,0x02,0x03,0x03,0x03,0x04,0x04,0x05,0x04,0xf7,0xf7,\r
-  0x02,0x02,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x04,\r
-  0x02,0xf7,0xf7,0x02,0x03,0x03,0x03,0x03,0x05,0x04,0x04,0x03,0x03,\r
-  0xf7,0xf7,0xf7,0x03,0x03,0x02,0x03,0x04,0x03,0x03,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x02,0x02,0x04,0x04,0x03,0xf7,0x02,0xf7,0x02,\r
-  0x04,0x04,0x06,0x03,0x02,0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0xf7,0xf7,0xf7,0x01,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0xf7,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x9d,0x94,0xf6,\r
-  0xf6,0x27,0x2c,0x2f,0x2e,0x2d,0x2b,0x02,0x2e,0x2c,0x2a,0x28,0x27,\r
-  0x27,0x27,0x27,0x27,0x27,0x28,0x2a,0x2c,0x2d,0x2c,0x2f,0x2c,0x2e,\r
-  0x2c,0x2c,0x2a,0x2a,0x28,0x03,0x03,0x97,0x9a,0x9a,0x9a,0x98,0x9a,\r
-  0x9f,0x03,0x03,0x02,0x02,0x02,0x01,0x01,0x01,0x02,0x02,0x02,0x02,\r
-  0x03,0x03,0x9f,0x9b,0x97,0x98,0x99,0x9a,0x9e,0x9f,0x9f,0x9f,0x9e,\r
-  0x9b,0x99,0x9c,0x9c,0x9c,0x9c,0x9c,0x2f,0x2f,0xf6,0x01,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0x02,\r
-  0x02,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2e,0x2d,0xf6,0xf7,0xf7,\r
-  0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,\r
-  0x2a,0xf7,0x25,0xf7,0xf7,0x02,0x2f,0x2d,0x2c,0x2d,0xf7,0xf7,0x2d,\r
-  0xf7,0x2a,0x36,0xf7,0xf7,0xf6,0x2d,0x2a,0x28,0x27,0x29,0x2a,0x2c,\r
-  0x2f,0x02,0x01,0x02,0x2f,0x2a,0x36,0x35,0x35,0x35,0x02,0xf7,0xf7,\r
-  0xf7,0x2a,0x2d,0x2f,0x9b,0x9a,0x98,0x94,0x94,0xf7,0xf7,0xf7,0x02,\r
-  0x02,0x03,0x04,0x04,0x05,0x03,0xf7,0x02,0x02,0x05,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x04,0x02,0xf7,0x02,0x04,0x06,\r
-  0x06,0x06,0x05,0x04,0x04,0x03,0x02,0xf7,0xf7,0x02,0xf7,0x03,0x03,\r
-  0x03,0x04,0x03,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,\r
-  0x05,0x04,0xf7,0x02,0x02,0xf7,0x03,0x04,0x04,0x06,0x02,0x02,0x06,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0xf7,0xf7,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x9b,0x97,0xf6,0x2f,0x26,0x2f,0x2f,\r
-  0x2e,0x2c,0x2c,0x01,0x2d,0x2c,0x2a,0x28,0x27,0x27,0x27,0x27,0x27,\r
-  0x27,0x28,0x2a,0x2c,0x2d,0x2c,0x2e,0x2d,0x2f,0x2c,0x2c,0x2a,0x9f,\r
-  0x9f,0x03,0x03,0x94,0x9a,0x9a,0x9a,0x98,0x9a,0x9f,0x03,0x02,0x02,\r
-  0x02,0x02,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x03,0x03,0x9f,0x9b,\r
-  0x97,0x98,0x99,0x9a,0x9d,0x9f,0x9f,0x9f,0x9f,0x9f,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x02,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0x02,0x02,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x01,0x2d,0x2e,0x2c,0xf7,0xf7,0xf6,0x35,0x35,0x35,0x35,0x25,\r
-  0x2c,0x2e,0x27,0x36,0x35,0x35,0x35,0x36,0x23,0xf7,0x2a,0x01,0xf7,\r
-  0xf7,0x01,0x02,0xf6,0x02,0xf7,0xf7,0x2a,0xf7,0x2a,0x36,0xf7,0xf7,\r
-  0x2f,0x2e,0x2a,0x2a,0x2a,0x2a,0x2d,0x2f,0x02,0x01,0xf6,0x2e,0x27,\r
-  0x35,0x35,0x35,0x36,0xf7,0xf7,0xf7,0x2f,0x2a,0x2e,0x2f,0xf6,0x99,\r
-  0x97,0x94,0x94,0x94,0xf7,0xf7,0xf7,0xf7,0x02,0x03,0x04,0x05,0x05,\r
-  0x02,0x02,0x02,0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x05,0x02,0xf7,0x03,0x06,0x06,0x05,0x05,0x04,0x04,0x04,\r
-  0x02,0xf7,0xf7,0x03,0x03,0x02,0x04,0x04,0x03,0x02,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x04,0x03,0xf7,0x03,0xf7,0xf7,\r
-  0x02,0x04,0x04,0x06,0x02,0x02,0x06,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0xf7,0xf7,0x01,\r
-  0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x03,0x9a,0x06,0xf6,0x2f,0x27,0x2f,0x2f,0x2d,0x2c,0x2e,0xf6,\r
-  0x2c,0x2c,0x29,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x29,0x2a,0x2c,\r
-  0x2c,0x2e,0x2c,0x2e,0x2f,0x2c,0x2b,0x9d,0x9f,0x9f,0x03,0x03,0x97,\r
-  0x9a,0x9a,0x9a,0x98,0x9c,0x9f,0x03,0x02,0x02,0x02,0x02,0x01,0x01,\r
-  0x01,0x02,0x02,0x02,0x02,0x03,0x03,0x9f,0x9b,0x97,0x98,0x99,0x9a,\r
-  0x9d,0x9e,0x9f,0x9f,0x9f,0x99,0x99,0x99,0x99,0x99,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x02,0x02,0x02,0x01,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2e,0x2e,0x2c,0x2f,\r
-  0xf7,0xf7,0x27,0x35,0x35,0x35,0x2a,0xf7,0xf7,0xf7,0xf7,0xf7,0x23,\r
-  0x35,0x35,0x35,0x27,0xf7,0xf7,0x27,0x01,0x01,0x01,0x01,0x01,0xf7,\r
-  0xf7,0xf7,0x29,0xf7,0x25,0x36,0xf7,0xf7,0x02,0x2f,0x2d,0x2c,0x2d,\r
-  0x2f,0x2f,0x01,0x02,0x2f,0x2c,0x25,0x35,0x35,0x35,0x26,0xf7,0xf7,\r
-  0xf7,0x2a,0x2c,0x2f,0x2f,0x02,0xf7,0x94,0x94,0x94,0x94,0x94,0xf7,\r
-  0xf7,0xf7,0xf7,0x02,0x03,0x04,0x05,0x05,0x02,0x02,0x03,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x02,0xf7,\r
-  0x04,0x06,0x03,0x03,0x03,0x03,0x04,0x03,0xf7,0xf7,0x03,0x07,0x04,\r
-  0x02,0x04,0x04,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x02,0x04,0x02,0xf7,0x05,0xf7,0xf7,0x02,0x04,0x05,0x06,0x02,0x02,\r
-  0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x01,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x0b,0xf6,\r
-  0xf6,0x2a,0x2a,0x2f,0x2f,0x2d,0x2b,0xf6,0x2f,0x2c,0x2a,0x28,0x27,\r
-  0x27,0x27,0x27,0x27,0x27,0x28,0x2a,0x2b,0x2d,0x2c,0x2f,0x2b,0x2e,\r
-  0x2d,0x2c,0x9d,0x9e,0x9f,0x03,0x03,0x9e,0x99,0x9a,0x9a,0x99,0x98,\r
-  0x9d,0x03,0x03,0x02,0x02,0x02,0x02,0x01,0x01,0x01,0x02,0x02,0x02,\r
-  0x02,0x03,0x03,0x9f,0x9b,0x97,0x97,0x99,0x9a,0x9b,0x9d,0x9e,0x9e,\r
-  0x98,0x98,0x98,0x98,0x98,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x01,0x02,0xf6,0xf6,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x01,0xf7,0x2f,0x2d,0x2e,0x2b,0xf7,0xf7,0xf7,0x23,0x35,0x35,\r
-  0x25,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x25,0x35,0x35,0x2f,0xf7,\r
-  0xf7,0x28,0x2e,0x2f,0x2f,0xf6,0x02,0xf7,0xf7,0x2c,0xf7,0xf7,0x35,\r
-  0x36,0x01,0x01,0x01,0xf6,0x2f,0x2f,0x2f,0xf6,0x02,0x2f,0x2e,0x29,\r
-  0x36,0x35,0x36,0x35,0x2d,0xf7,0xf7,0xf7,0x2a,0x2d,0x2f,0xf6,0x01,\r
-  0xf7,0xf7,0x94,0x94,0x97,0x97,0x94,0xf7,0xf7,0xf7,0xf7,0x02,0x04,\r
-  0x04,0x05,0x06,0x02,0x02,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x06,0x03,0xf7,0x05,0x04,0x02,0x02,0x03,\r
-  0x03,0x04,0x03,0xf7,0xf7,0xf7,0x04,0xf7,0x02,0x03,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x03,0xf7,0x03,0x07,0xf7,\r
-  0xf7,0x02,0x04,0x05,0x05,0x02,0x02,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x01,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0xd7,0x2f,0xf6,0x2f,0x27,0x2e,0x2f,\r
-  0x2e,0x2c,0x2a,0x01,0x2e,0x2c,0x2a,0x28,0x27,0x27,0x27,0x27,0x27,\r
-  0x27,0x28,0x2a,0x2c,0x2d,0x2c,0x2f,0x2c,0x2e,0x3a,0x9c,0x9e,0x9e,\r
-  0x9f,0x03,0x02,0x99,0x9a,0x9a,0x9a,0x99,0x99,0x9e,0x03,0x03,0x02,\r
-  0x02,0x02,0x02,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x03,0x03,0x9f,\r
-  0x9c,0x97,0x97,0x98,0x99,0x9a,0x9a,0x9b,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x01,0x01,0x02,0x02,0x02,0x02,0xf6,0xf6,0xf6,0xf6,0x02,0x01,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x2d,0x2e,\r
-  0x2d,0x2a,0xf7,0xf7,0xf7,0x36,0x35,0x35,0xf6,0xf7,0xf7,0x2d,0x27,\r
-  0x29,0x2d,0xf7,0xf7,0x25,0x35,0xf7,0xf7,0x2f,0x2c,0x2c,0x2e,0x2f,\r
-  0x2f,0xf6,0x01,0x2c,0x27,0xf7,0x29,0x35,0x36,0x2f,0x2f,0xf6,0x2f,\r
-  0x2e,0x2c,0x2d,0x2e,0x2d,0x2a,0x25,0x35,0x35,0x36,0x35,0x01,0xf7,\r
-  0xf7,0x01,0x2a,0x2e,0x2f,0xf6,0xf7,0xf7,0xf7,0xf7,0x97,0x99,0x9a,\r
-  0x9a,0x99,0xf7,0xf7,0xf7,0xf7,0x03,0x04,0x04,0x05,0x05,0x02,0x03,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x04,0xf7,0x04,0x04,0x02,0x02,0x03,0x03,0x04,0x02,0xf7,0xf7,\r
-  0xf7,0x02,0x03,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x03,0xf7,0x07,0x03,0xf7,0x02,0x04,0x04,0x05,0xf7,\r
-  0x02,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x01,0x01,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x01,0x2a,0xf6,0xf6,0x2f,0x25,0x2f,0x2f,0x2d,0x2c,0x2c,0x02,\r
-  0x2c,0x2c,0x29,0x28,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x2a,0x2c,\r
-  0x2c,0x2d,0x2e,0x2d,0x99,0x9c,0x9c,0x9e,0x9f,0x9f,0x03,0x02,0x97,\r
-  0x9a,0x9a,0x9a,0x99,0x99,0x9f,0x03,0x03,0x02,0x02,0x02,0x02,0x01,\r
-  0x01,0x01,0x02,0x02,0x02,0x02,0x03,0x03,0x9f,0x9c,0x98,0x97,0x98,\r
-  0x99,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x02,0x02,0x02,0xf6,0xf6,\r
-  0xf6,0xf6,0xf6,0x02,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2e,0x2f,0x2c,0x2b,0xf7,0xf7,0xf7,\r
-  0x35,0x35,0x36,0xf7,0xf7,0x2b,0x27,0x27,0x27,0x27,0x2a,0x02,0xf7,\r
-  0x23,0x2f,0x2c,0x27,0x2c,0x2f,0x2f,0x2e,0x2e,0x2d,0x2a,0x27,0xf7,\r
-  0xf7,0x35,0x35,0x35,0x23,0x27,0x27,0x26,0x25,0x25,0x26,0x25,0x23,\r
-  0x35,0x35,0x35,0x36,0x35,0xf7,0xf7,0xf7,0x2c,0x2b,0x2f,0x2f,0x02,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x9c,0x9e,0x9e,0x9e,0x9c,0x02,0xf7,0xf7,\r
-  0xf7,0x03,0x03,0x04,0x05,0x06,0x03,0x04,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x05,0xf7,0x03,0x03,\r
-  0x02,0x02,0x03,0x03,0x02,0x02,0x02,0xf7,0xf7,0x03,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x02,0x03,\r
-  0xf7,0xf7,0x03,0x04,0x04,0x05,0xf7,0x02,0x05,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,\r
-  0x01,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x25,0x2b,0xf6,\r
-  0xf6,0x2e,0x28,0x2f,0x2f,0x2d,0x2b,0x2f,0x2f,0x2c,0x2a,0x28,0x27,\r
-  0x27,0x27,0x27,0x27,0x27,0x27,0x29,0x2a,0x2c,0x2c,0x2f,0x2c,0x9a,\r
-  0x99,0x9c,0x9d,0x9d,0x9f,0x03,0x03,0x02,0x94,0x9a,0x9a,0x9a,0x98,\r
-  0x9a,0x9f,0x03,0x03,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x02,0x02,\r
-  0x02,0x02,0x03,0x03,0x9f,0x9e,0x99,0x97,0x97,0x98,0x98,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x01,0x02,0x02,0x02,0x02,0x01,0x01,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2d,\r
-  0x2f,0xf6,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x2e,0x2e,0x2f,0x2b,0x2f,0xf7,0xf7,0x01,0x35,0x35,0x23,0xf7,0xf7,\r
-  0x27,0x27,0x27,0x29,0x2a,0x2a,0x2c,0x02,0xf7,0x36,0x26,0x2a,0x2d,\r
-  0x2e,0x2f,0x2f,0x2f,0x2e,0x2c,0xf7,0xf7,0xf7,0x35,0x35,0x35,0x35,\r
-  0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0xf7,\r
-  0xf7,0xf7,0x2a,0x2c,0x2f,0xf6,0x01,0xf7,0xf7,0xf7,0xf7,0x02,0x2b,\r
-  0x9f,0x03,0x9f,0x9e,0x9e,0x03,0xf7,0xf7,0xf7,0x03,0x03,0x03,0x05,\r
-  0x06,0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x06,0x02,0x02,0x04,0x02,0x02,0x03,0x03,0x02,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0x02,0x02,0x02,0x02,\r
-  0x03,0x03,0x03,0x02,0xf7,0x03,0xf7,0xf7,0xf7,0xf7,0x04,0x04,0x05,\r
-  0xf7,0x02,0x03,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x01,0x01,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0x01,0x01,0x01,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x25,0x2d,0xf6,0xf6,0x29,0x2c,0x2f,\r
-  0x2e,0x2c,0x2a,0x01,0x2e,0x2c,0x2a,0x28,0x27,0x27,0x27,0x27,0x27,\r
-  0x27,0x28,0x2a,0x2b,0x2d,0x2c,0x98,0x9d,0x9a,0x9a,0x9c,0x9e,0x9e,\r
-  0x9f,0x03,0x03,0x03,0x98,0x9a,0x9a,0x9a,0x98,0x9b,0x9f,0x03,0x02,\r
-  0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x03,0x03,\r
-  0x03,0x9e,0x9c,0x99,0x98,0x98,0x99,0x99,0x9a,0x9a,0x9a,0x01,0x02,\r
-  0x02,0x02,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x01,0x2e,0x2d,0x2e,0x2f,0x2f,0x2f,0x02,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x2e,0x2f,0x2f,0x2a,0xf6,\r
-  0xf7,0xf7,0x02,0x35,0x35,0x27,0xf7,0xf6,0x28,0x28,0x2a,0x2d,0x2f,\r
-  0x2e,0x2e,0x2f,0xf7,0x01,0x27,0x2c,0x2f,0x2f,0xf6,0x2f,0x2d,0x2d,\r
-  0x2a,0x01,0xf7,0xf7,0x35,0x35,0x35,0x35,0x35,0x23,0x27,0x25,0x36,\r
-  0x35,0x35,0x35,0x35,0x35,0x36,0xf7,0xf7,0xf7,0x29,0x2c,0x2e,0x02,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x2c,0x27,0x27,0x9f,0x9f,0x9f,0x9e,0x9e,\r
-  0x04,0xf7,0xf7,0xf7,0x03,0x03,0x02,0x05,0x06,0x07,0x07,0x06,0x04,\r
-  0x04,0x04,0x05,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x03,0xf7,0x05,0xf7,0x02,0x03,0x03,0x03,0x03,0xf7,0xf7,0xf7,0xf7,\r
-  0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x02,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x03,0x04,0x04,0xf7,0xf7,0x02,0x06,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x01,0x01,0x02,0x02,0x02,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x25,0x26,0x2f,0xf6,0x2f,0x25,0x2f,0x2f,0x2d,0x2c,0x2c,0x01,\r
-  0x2c,0x2c,0x2a,0x28,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x2a,0x2c,\r
-  0x2d,0x9c,0x99,0x9c,0x9a,0x9b,0x9c,0x9e,0x9f,0x9f,0x03,0x02,0x9c,\r
-  0x99,0x9a,0x9a,0x99,0x98,0x9d,0x9f,0x03,0x02,0x02,0x02,0x02,0x01,\r
-  0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x9f,0x9f,0x9e,\r
-  0x9c,0x99,0x99,0x99,0x9a,0x9a,0x01,0x02,0x02,0x01,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x2d,\r
-  0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0x2e,0x2f,0x2f,0x28,0xf7,0xf7,0xf7,0x2f,0x35,0x35,\r
-  0x27,0xf7,0x2f,0x28,0x29,0x2c,0x2f,0xf6,0xf6,0x2f,0x2f,0x02,0xf7,\r
-  0x2d,0x27,0xf7,0x01,0x2f,0x2f,0x2f,0x2e,0x2a,0x2a,0xf7,0x2f,0x35,\r
-  0x35,0x35,0x27,0xf7,0xf7,0xf7,0xf7,0x2f,0x25,0x35,0x35,0x35,0x35,\r
-  0xf6,0xf7,0xf7,0x29,0x2c,0x2e,0x01,0xf7,0xf7,0xf7,0xf7,0x01,0x2a,\r
-  0x27,0x27,0x27,0x9f,0x9e,0x9d,0x9d,0x9e,0x04,0xf7,0xf7,0xf7,0x02,\r
-  0x02,0x03,0x05,0x06,0x06,0x04,0x02,0xf7,0xf7,0xf7,0xf7,0x03,0x06,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x05,0xf7,0x06,0xf7,0x02,\r
-  0x03,0x03,0x03,0x04,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,\r
-  0x02,0x02,0x02,0x02,0x02,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0x03,0x04,\r
-  0x04,0x04,0xf7,0xf7,0x02,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0x01,0x02,\r
-  0x02,0x02,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x25,0x27,0x2f,\r
-  0xf6,0x2f,0x27,0x2f,0x2f,0x2d,0x2c,0x2f,0x2f,0x2c,0x2a,0x28,0x27,\r
-  0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x2a,0x9c,0x9b,0x9a,0x9a,0x9a,\r
-  0x9a,0x9c,0x9c,0x9e,0x9f,0x9f,0x03,0x02,0x97,0x9a,0x9a,0x9a,0x99,\r
-  0x98,0x9d,0x9f,0x03,0x02,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x01,\r
-  0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x9f,0x9f,0x98,0x98,0x98,0x99,\r
-  0x99,0x01,0x01,0x02,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,\r
-  0x2f,0x2f,0x2f,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2f,0x2f,\r
-  0x2f,0x27,0xf7,0xf7,0xf7,0x2a,0x35,0x35,0x25,0xf7,0x01,0x29,0x2a,\r
-  0x2c,0x2f,0xf6,0x02,0xf6,0xf6,0x01,0xf7,0xf7,0x2d,0x2e,0xf7,0xf7,\r
-  0x01,0x2f,0x2e,0x2a,0x27,0xf7,0x2c,0x35,0x25,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x23,0x35,0x35,0x27,0xf7,0xf7,0x28,0x2c,0x2e,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x28,0x27,0x27,0x27,0x2b,0x9d,0x9c,\r
-  0x9c,0x9c,0x9d,0x04,0xf7,0xf7,0xf7,0x02,0x02,0x03,0x06,0x06,0x04,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x05,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x06,0xf7,0x04,0xf7,0x02,0x03,0x03,0x03,0x04,0x03,\r
-  0xf7,0xf7,0xf7,0xf7,0x02,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0x02,0x02,\r
-  0xf7,0xf7,0xf7,0xf7,0x02,0x02,0x04,0x04,0x04,0x06,0x02,0xf7,0x04,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0x02,0x02,0x02,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x25,0x29,0xf6,0xf6,0x2a,0x2c,0x2f,\r
-  0x2e,0x2c,0x2a,0x01,0x2e,0x2c,0x2a,0x28,0x27,0x27,0x27,0x27,0x27,\r
-  0x27,0x27,0x9f,0x9d,0x9b,0x9b,0x99,0x9c,0x9a,0x9a,0x9c,0x9d,0x9e,\r
-  0x9f,0x9f,0x03,0x02,0x94,0x9a,0x9a,0x9a,0x99,0x98,0x9e,0x9f,0x03,\r
-  0x02,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,\r
-  0x03,0x03,0x03,0x03,0x94,0x94,0x94,0x97,0x97,0xf7,0xf7,0x01,0x01,\r
-  0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x2f,0x2e,0x2e,0x2c,0x2c,0x2a,0x2a,0x2c,0x2f,0x2f,0x2f,0x2f,0x2f,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2f,0x2f,0x2d,0x27,0xf7,0xf7,0xf7,\r
-  0x27,0x35,0x35,0x23,0xf7,0xf7,0x2a,0x2a,0x2b,0x2f,0xf6,0xf6,0xf6,\r
-  0xf6,0x01,0xf7,0xf7,0xf7,0x2e,0xf7,0xf7,0xf7,0xf7,0x01,0x2a,0x26,\r
-  0x26,0x36,0x2f,0xf7,0xf7,0x2f,0x2c,0x2a,0x2a,0x2f,0xf7,0xf7,0xf7,\r
-  0x36,0x35,0xf7,0xf7,0x27,0x2c,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,\r
-  0x27,0x26,0x27,0x2a,0x2b,0x2d,0x9c,0x9a,0x9a,0x9b,0x9c,0x04,0xf7,\r
-  0xf7,0xf7,0x02,0xf7,0x03,0x05,0x05,0x02,0xf7,0x02,0x03,0x03,0x02,\r
-  0xf7,0xf7,0xf7,0xf7,0x04,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x03,\r
-  0xf7,0x02,0xf7,0x03,0x04,0x03,0x04,0x04,0x02,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x03,0x03,0x03,0x06,0x02,0xf7,0x04,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x06,0x05,0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0xf7,\r
-  0xf7,0x01,0x01,0x02,0x02,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x25,0x2c,0xf6,0x2f,0x26,0x2f,0x2f,0x2e,0x2c,0x2b,0x01,\r
-  0x2d,0x2c,0x2a,0x28,0x27,0x27,0x27,0x27,0x27,0x03,0x9f,0x9f,0x9d,\r
-  0x9a,0x9c,0x98,0x9d,0x99,0x9a,0x9b,0x9e,0x9e,0x9f,0x9f,0x03,0x02,\r
-  0x97,0x9b,0x9a,0x9a,0x99,0x99,0x9e,0x03,0x03,0x02,0x02,0x02,0x02,\r
-  0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x97,\r
-  0x97,0x97,0x94,0x94,0xf7,0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2f,0x2d,0x2c,0x2c,\r
-  0x2a,0x2a,0x29,0x2b,0x2f,0x2f,0x2f,0x2e,0x2f,0x01,0xf7,0xf7,0xf6,\r
-  0x2f,0x2f,0x2f,0x2a,0x28,0xf7,0xf7,0xf7,0x23,0x35,0x35,0x35,0xf7,\r
-  0xf7,0x2e,0x2a,0x2a,0x2c,0x2f,0x2f,0x2f,0xf6,0x01,0xf7,0xf7,0xf7,\r
-  0x2f,0x2f,0x01,0xf7,0x2f,0x27,0x27,0x26,0x28,0xf7,0xf7,0x2f,0x2a,\r
-  0x28,0x27,0x27,0x27,0x27,0x29,0x2f,0xf7,0xf6,0x36,0x2c,0x26,0x2a,\r
-  0x2e,0x02,0xf7,0xf7,0xf7,0xf7,0x2f,0x27,0x27,0x27,0x2b,0x2d,0x2f,\r
-  0x2f,0x9a,0x9a,0x9a,0x9a,0x9b,0x03,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,\r
-  0x05,0x04,0xf7,0x02,0x03,0x04,0x04,0x05,0x04,0x02,0xf7,0xf7,0xf7,\r
-  0x04,0x07,0x07,0x07,0x07,0x07,0x07,0x05,0xf7,0x05,0xf7,0x03,0x04,\r
-  0x04,0x04,0x03,0x04,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x04,0x03,0x03,0x03,0x03,0x05,\r
-  0x04,0xf7,0x03,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x05,0x05,0x06,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0x02,0x02,\r
-  0x02,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x25,0x2f,\r
-  0xf6,0x2f,0x27,0x2f,0x2f,0x2d,0x2c,0x2f,0x2f,0x2c,0x2b,0x29,0x27,\r
-  0x27,0x27,0x27,0x03,0x03,0x03,0x9f,0x9e,0x9c,0x9b,0x9b,0x98,0x9c,\r
-  0x9a,0x9b,0x9b,0x9f,0x9f,0x9f,0x9f,0x03,0x9f,0x98,0x9b,0x9a,0x9a,\r
-  0x98,0x99,0x9e,0x03,0x03,0x02,0x02,0x02,0x02,0x01,0x01,0x01,0x01,\r
-  0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x97,0x97,0x97,0x94,0x94,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0x2f,0x2f,0x2d,0x2c,0x2c,0x2d,0x2d,0x2b,0x2a,0x2c,\r
-  0x2f,0x2f,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0xf6,0x29,0x2c,\r
-  0xf7,0xf7,0x2f,0x36,0x35,0x35,0x35,0x2a,0xf7,0xf7,0x2c,0x2a,0x2a,\r
-  0x2c,0x2d,0x2f,0x2f,0x02,0xf7,0xf7,0xf7,0x2f,0x2e,0x2e,0x2e,0x2a,\r
-  0x2a,0x2a,0x2f,0xf7,0xf7,0x2f,0x2c,0x2c,0x2c,0x2c,0x2d,0x2c,0x2a,\r
-  0x2a,0x2a,0x2f,0xf7,0x2a,0x23,0x28,0xf6,0x2f,0xf6,0xf7,0xf7,0xf7,\r
-  0x2f,0x2a,0x27,0x2a,0x2b,0x2d,0x2f,0x01,0x01,0x9a,0x99,0x99,0x9a,\r
-  0x9a,0x03,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x04,0x03,0xf7,0x03,0x04,\r
-  0x04,0x04,0x05,0x05,0x05,0x04,0xf7,0xf7,0xf7,0x05,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0xf7,0x05,0xf7,0x02,0x04,0x04,0x04,0x02,0x04,0x04,\r
-  0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x02,0x04,0x04,0x03,0x03,0x03,0x03,0x02,0x06,0xf7,0xf7,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x06,0x05,0x04,0x04,0x06,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x06,0x06,0x07,0x07,0x07,0xf7,0xf7,0xf7,0x01,0x01,0x02,\r
-  0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0x01,0x01,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x03,0x2f,0xf6,0x2c,0x2a,0x2f,\r
-  0x2e,0x2c,0x2a,0x02,0x2f,0x2c,0x2a,0x28,0x27,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x9f,0x9e,0x9c,0x9b,0x9a,0x9a,0x9a,0x9a,0x9b,0x9c,0x9e,\r
-  0x9f,0x9e,0x9f,0x03,0x9b,0x9a,0x9b,0x9a,0x9a,0x98,0x9a,0x9f,0x03,\r
-  0x03,0x02,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x02,\r
-  0x02,0x02,0x97,0x97,0x97,0x97,0x94,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf6,0x2f,0x2e,\r
-  0x2c,0x2a,0x2b,0x2e,0x2d,0x2c,0x2c,0x2c,0x2e,0x2f,0x2e,0x2d,0x2e,\r
-  0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x25,0xf6,0xf7,0xf7,0x25,0x36,0x35,\r
-  0x35,0x35,0x36,0x2f,0xf7,0xf7,0x01,0x2c,0x2b,0x2c,0x2e,0x2f,0x02,\r
-  0xf7,0xf7,0xf7,0x2e,0x2c,0x2b,0x2b,0x2a,0x2b,0x2d,0xf7,0xf7,0x02,\r
-  0x2f,0x2f,0x2f,0x02,0x01,0xf7,0x01,0x02,0x2f,0x2d,0x2e,0xf6,0xf7,\r
-  0x28,0x27,0xf7,0x01,0x01,0xf7,0xf7,0xf7,0x2b,0x2b,0x2b,0x2d,0x2f,\r
-  0x2f,0x01,0x01,0x01,0x99,0x99,0x99,0x9a,0x99,0x03,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x04,0x02,0xf7,0x03,0x03,0x04,0x04,0x05,0x05,0x06,\r
-  0x06,0x04,0xf7,0xf7,0xf7,0x06,0x07,0x07,0x07,0x07,0x07,0x03,0x02,\r
-  0x02,0xf7,0x05,0x04,0x04,0xf7,0x03,0x04,0x02,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x03,0x04,0x04,0x03,0x03,0x04,0x03,\r
-  0x03,0x02,0x02,0x05,0x02,0xf7,0x05,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x05,0x04,0x04,\r
-  0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x07,\r
-  0x07,0x07,0xf7,0xf7,0xf7,0x02,0x02,0x02,0x02,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0x9f,0x97,0x97,0x27,0x2f,0x2f,0x2e,0x2c,0x2b,0x01,\r
-  0x2d,0x9c,0x9e,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9d,\r
-  0x9b,0x9c,0x98,0x9d,0x9a,0x9a,0x9b,0x9e,0x9e,0x9e,0x9e,0x9e,0x02,\r
-  0x98,0x9a,0x9b,0x9a,0x99,0x98,0x9b,0x9f,0x03,0x03,0x02,0x02,0x02,\r
-  0x02,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x97,0x97,0x97,\r
-  0x97,0x94,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2f,0x2e,0x2b,0x2a,0x2a,0x2a,0x2a,\r
-  0x2a,0x2c,0x2c,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,0x2e,0x2f,0x2f,0xf6,\r
-  0x2c,0x25,0xf7,0xf7,0xf6,0x35,0x36,0x35,0x35,0x35,0x35,0x36,0x2c,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x28,0x29,0x28,\r
-  0x27,0x27,0x29,0x2a,0x2e,0xf7,0xf7,0x01,0xf6,0x2f,0x02,0x01,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0xf6,0x2f,0xf6,0xf7,0xf7,0x2a,0x01,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x2c,0x2f,0x2f,0x02,0x02,0x01,0x01,0xf7,0xf7,0x99,\r
-  0x99,0x99,0x99,0x99,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0x04,0x02,\r
-  0xf7,0x03,0x03,0x04,0x04,0x04,0x05,0x05,0x06,0x06,0x04,0xf7,0xf7,\r
-  0x02,0x07,0x07,0x07,0x07,0x07,0x06,0xf7,0x05,0xf7,0x04,0x05,0x04,\r
-  0xf7,0x03,0x04,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x02,0x03,0x04,0x03,0x02,0x04,0x03,0x03,0x03,0x02,0x02,0x06,\r
-  0xf7,0x03,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x05,0x03,0x03,0x03,0x05,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x06,0x06,0x07,0x07,0x07,0x07,0xf7,0xf7,0x01,\r
-  0x02,0x03,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0x9a,\r
-  0x97,0x98,0x02,0x99,0x99,0x9a,0x9c,0x9a,0x97,0x9b,0x9c,0x9f,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9d,0x9b,0x9c,0x97,0x9d,\r
-  0x99,0x9a,0x9b,0x9e,0x9e,0x9e,0x9d,0x9e,0x01,0x94,0x9b,0x9b,0x9a,\r
-  0x99,0x98,0x9b,0x9f,0x03,0x03,0x02,0x02,0x02,0x02,0x01,0x02,0x02,\r
-  0x02,0x02,0x02,0x02,0x02,0x98,0x98,0x97,0x97,0x97,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x2f,0x2f,0x2e,0x2b,0x2a,0x29,0x29,0x29,0x2a,0x2c,0x2e,0x2e,0x2e,\r
-  0x2d,0x2d,0x2d,0x2d,0x2e,0x2f,0x2f,0x2f,0x27,0x2a,0xf7,0xf7,0x23,\r
-  0x35,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x26,0x2a,0x2e,0x2e,\r
-  0x2c,0x27,0x36,0x36,0x23,0x25,0x27,0x28,0x28,0x27,0x27,0x29,0x2a,\r
-  0xf7,0xf7,0x01,0x02,0xf6,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,\r
-  0x02,0x01,0xf7,0xf7,0x2f,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0xf6,\r
-  0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x99,0x99,0x98,0x99,0x99,0x02,\r
-  0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x03,0xf7,0x02,0x03,0x03,0x03,\r
-  0x03,0x04,0x04,0x05,0x06,0x06,0x05,0xf7,0xf7,0x04,0x07,0x07,0x07,\r
-  0x07,0x07,0x02,0x05,0xf7,0x03,0x05,0x05,0x02,0x02,0x04,0x03,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x03,0x04,\r
-  0x02,0x02,0x04,0x03,0x03,0x02,0x02,0x05,0x02,0xf7,0x06,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x05,0x03,\r
-  0x03,0x03,0x04,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,\r
-  0x06,0x07,0x07,0x07,0x07,0xf7,0x01,0x02,0x9f,0x9f,0x9f,0x03,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x02,0x98,0x97,0x9a,0x9e,0x99,\r
-  0x9a,0x9b,0x9d,0x97,0x99,0x9b,0x9e,0x9f,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x9f,0x9e,0x9c,0x9b,0x9a,0x99,0x9c,0x9a,0x9b,0x9b,0x9f,\r
-  0x9e,0x9d,0x9c,0x9e,0x02,0x94,0x9b,0x9b,0x9a,0x99,0x98,0x9d,0x9f,\r
-  0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,\r
-  0x98,0x98,0x98,0x98,0x97,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2f,0x2f,0x2c,0x2a,\r
-  0x2a,0x2a,0x2a,0x2a,0x2c,0x2f,0x2f,0x2e,0x2d,0x2d,0x2d,0x2e,0x2f,\r
-  0x2f,0xf6,0x2c,0x23,0xf7,0xf7,0x2f,0x35,0x36,0x35,0x35,0x35,0x35,\r
-  0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x2e,0xf7,0xf6,\r
-  0x27,0x27,0x28,0x2a,0x2c,0x2a,0x28,0x28,0x2a,0xf7,0xf7,0x01,0x02,\r
-  0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x02,0xf7,0xf7,0xf7,\r
-  0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x99,0x99,0x98,0x99,0x98,0x02,0x02,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x03,0x03,0xf7,0x02,0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x05,\r
-  0x06,0x06,0x05,0xf7,0xf7,0x06,0x07,0x07,0x07,0x07,0x04,0xf7,0x02,\r
-  0x02,0x05,0x05,0x03,0xf7,0x03,0x03,0x03,0x02,0x02,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x02,0x02,0x03,0x04,0x03,0xf7,0x04,0x04,0x03,\r
-  0x03,0x02,0x03,0x05,0xf7,0x03,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x06,0x04,0x03,0x02,0x03,0x04,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x07,0x07,0x07,0x07,0x07,\r
-  0xf7,0x02,0x03,0x9f,0x9e,0x9e,0x03,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0x9f,0x97,0x97,0x03,0x9a,0x99,0x9a,0x9c,0x9d,0x94,\r
-  0x9a,0x9c,0x9e,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9e,\r
-  0x9c,0x9b,0x99,0x9a,0x9a,0x9a,0x9b,0x9c,0x9f,0x9d,0x9c,0x9b,0x9f,\r
-  0x9f,0x98,0x9b,0x9a,0x9a,0x99,0x98,0x9d,0x9f,0x03,0x03,0x02,0x02,\r
-  0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x99,0x99,0x99,0x98,0x97,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x2f,0x2e,0x2f,0x2e,0x2c,0x2b,0x2a,0x2c,0x2c,0x2d,\r
-  0x2f,0x2f,0x2f,0x2e,0x2d,0x2d,0x2e,0x2f,0x2f,0x2f,0x25,0x2c,0xf7,\r
-  0xf7,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,\r
-  0x35,0x35,0x35,0x35,0x25,0x01,0xf7,0xf7,0xf7,0x2a,0x27,0x29,0x2a,\r
-  0x2a,0x2a,0x29,0x27,0x29,0xf7,0xf7,0x01,0x02,0x01,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf6,0x01,0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x99,0x99,0x98,\r
-  0x99,0x98,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x03,0xf7,0x02,\r
-  0x02,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x05,0x06,0x06,0x04,0xf7,\r
-  0xf7,0x07,0x07,0x07,0x07,0x06,0xf7,0x06,0xf7,0x04,0x05,0x05,0xf7,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x02,\r
-  0x02,0x03,0x04,0x03,0xf7,0x03,0x04,0x04,0x03,0x02,0x02,0x06,0xf7,\r
-  0xf7,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,\r
-  0x04,0x03,0x02,0x02,0x03,0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x01,0x03,0x9f,0x9d,0x9c,\r
-  0x9e,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0x9b,\r
-  0x97,0x97,0x02,0x99,0x99,0x9a,0x9c,0x9c,0x94,0x9b,0x9c,0x9f,0x9f,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9d,0x9b,0x9c,0x98,0x9d,\r
-  0x9a,0x9a,0x9b,0x9d,0x9e,0x9c,0x9a,0x9a,0x03,0x9b,0x99,0x9b,0x9a,\r
-  0x9a,0x98,0x99,0x9e,0x9f,0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x02,\r
-  0x02,0x02,0x02,0x99,0x99,0x99,0x99,0x97,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2e,\r
-  0x2f,0x2f,0x2e,0x2c,0x2c,0x2c,0x2d,0x2e,0x2f,0x2f,0x2f,0x2e,0x2d,\r
-  0x2e,0x2f,0x2f,0x2d,0x27,0x27,0xf7,0xf7,0x2b,0x35,0x35,0x35,0x36,\r
-  0x23,0x23,0x23,0x36,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x2c,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x2a,0x28,0x2a,0x2a,0x2a,0x2a,0x29,0x27,\r
-  0x27,0xf7,0x01,0x02,0x02,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,\r
-  0x2f,0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x99,0x98,0x98,0x99,0x98,0x02,0x02,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x02,0x03,0xf7,0x02,0x02,0x03,0x03,0x03,0x03,\r
-  0x02,0x02,0x03,0x03,0x05,0x06,0x06,0x03,0xf7,0x04,0x07,0x07,0x07,\r
-  0x07,0x02,0x04,0xf7,0x03,0x05,0x05,0xf7,0x03,0x03,0x04,0x04,0x04,\r
-  0x03,0x03,0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x02,\r
-  0x02,0x04,0x04,0x03,0x02,0x02,0x04,0x04,0xf7,0x03,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x04,0x02,0x02,0x02,0x02,0x03,\r
-  0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x02,0x03,0x9d,0x9b,0x9b,0x9e,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x03,0x98,0x97,0x99,0x9f,0x99,\r
-  0x99,0x9b,0x9c,0x99,0x98,0x9b,0x9d,0x9f,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x9f,0x9f,0x9d,0x9b,0x9c,0x97,0x9d,0x9a,0x9a,0x9b,0x9f,\r
-  0x9d,0x9b,0x99,0x9a,0x02,0x97,0x9b,0x9c,0x9a,0x9a,0x98,0x99,0x9e,\r
-  0x9f,0x03,0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x99,0x99,\r
-  0x99,0x99,0x97,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x2e,0x2e,0x2f,0x2f,0x2e,0x2e,\r
-  0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2e,0x2e,0x2e,0x2e,0x2b,0x27,0x27,\r
-  0xf7,0xf7,0x01,0x35,0x35,0x35,0x36,0x28,0x2a,0x2b,0x2b,0x2a,0x29,\r
-  0x25,0x35,0x35,0x35,0x35,0x35,0x27,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x2f,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x28,0x27,0x27,0xf7,0x02,0x02,\r
-  0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0xf7,0xf7,0xf7,\r
-  0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x98,0x98,0x98,0x98,0x97,0xf7,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,\r
-  0x03,0x02,0xf7,0x02,0x03,0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x03,\r
-  0x04,0x06,0x06,0x02,0xf7,0x07,0x07,0x07,0x07,0x04,0xf7,0x02,0x02,\r
-  0x05,0x05,0x02,0x02,0x03,0x04,0x04,0x04,0x04,0x04,0x03,0x03,0x03,\r
-  0x02,0x02,0x02,0x02,0x03,0x03,0x04,0x03,0xf7,0x04,0x03,0x03,0x03,\r
-  0x02,0x02,0x06,0xf7,0xf7,0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x06,0x04,0x02,0x02,0x02,0x02,0x02,0x04,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x06,0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x03,0x9e,\r
-  0x9b,0x9a,0x9c,0x9f,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0x9e,0x97,0x97,0x9e,0x9c,0x99,0x9a,0x9b,0x9d,0x94,\r
-  0x99,0x9b,0x9e,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9e,\r
-  0x9c,0x9b,0x9a,0x99,0x9c,0x99,0x9b,0x9b,0x9f,0x9b,0x99,0x98,0x9b,\r
-  0x01,0x94,0x9c,0x9c,0x9a,0x99,0x98,0x99,0x9e,0x9f,0x03,0x03,0x03,\r
-  0x03,0x02,0x02,0x02,0x02,0x02,0x99,0x99,0x99,0x98,0x97,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x01,0x2f,0x2d,0x2e,0x2f,0x2f,0x2f,0x2f,0x2e,0x2f,0x2f,0x2f,\r
-  0x2f,0x2f,0x2e,0x2d,0x2a,0x27,0x29,0xf7,0xf7,0xf7,0x36,0x35,0x35,\r
-  0x23,0x2c,0x2e,0x2f,0x2f,0xf6,0x2f,0x2f,0x2a,0x36,0x35,0x35,0x23,\r
-  0x2e,0xf7,0xf7,0xf7,0x01,0x2a,0x26,0x25,0x27,0x29,0x2a,0x2c,0x2c,\r
-  0x2a,0x2a,0x29,0x27,0x26,0x25,0xf7,0xf6,0xf6,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x98,0x98,0x98,0x98,0x97,\r
-  0xf7,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0xf7,0x02,0x02,\r
-  0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x04,0x06,0x06,0xf7,\r
-  0x02,0x07,0x07,0x07,0x07,0xf7,0x06,0xf7,0x04,0x05,0x04,0xf7,0x03,\r
-  0x04,0x04,0x04,0x04,0x04,0x03,0x03,0x03,0x02,0x02,0x02,0x02,0x02,\r
-  0x03,0x04,0x03,0x02,0x04,0x04,0x03,0x03,0x02,0x02,0x05,0x03,0xf7,\r
-  0x02,0x06,0x07,0x07,0x07,0x07,0x07,0x06,0x03,0x02,0x02,0x02,0x02,\r
-  0x02,0x02,0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x9f,0x9d,0x9a,0x9a,0x9d,0x9f,0xf7,\r
-  0xf7,0xf7,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x9a,\r
-  0x97,0x97,0x03,0x9a,0x99,0x9a,0x9b,0x9d,0x94,0x9a,0x9c,0x9e,0x9f,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9e,0x9c,0x9b,0x99,0x9a,\r
-  0x9a,0x9a,0x9b,0x9c,0x9f,0x99,0x97,0x98,0x9c,0x03,0x97,0x9c,0x9c,\r
-  0x9a,0x99,0x98,0x99,0x9e,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x99,0x99,0x99,0x98,0x97,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x2f,0x2e,0x2e,\r
-  0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2d,0x2a,0x2a,\r
-  0x2f,0xf7,0xf7,0xf7,0x23,0x35,0x35,0x23,0x2e,0x2f,0x02,0x01,0x01,\r
-  0x01,0xf7,0xf7,0x2d,0x35,0x35,0x28,0xf7,0xf7,0xf7,0x27,0x27,0x2e,\r
-  0x01,0xf7,0x01,0x01,0xf6,0x2f,0x2c,0x2b,0x2c,0x2a,0x2a,0x27,0x27,\r
-  0x25,0x23,0xf7,0x2f,0x2f,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf6,\r
-  0x01,0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x98,0x98,0x98,0x98,0x97,0x02,0xf7,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x02,0x03,0xf7,0xf7,0x02,0x03,0x03,0x02,0x02,0x02,\r
-  0xf7,0x02,0x02,0x02,0x03,0x05,0x06,0x05,0xf7,0x06,0x07,0x07,0x07,\r
-  0x02,0x02,0x02,0x02,0x05,0x05,0xf7,0x03,0x04,0x04,0x04,0x04,0x04,\r
-  0x04,0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x03,0x04,0x03,0x02,0x03,\r
-  0x04,0x03,0x03,0x02,0x02,0x03,0x06,0xf7,0xf7,0x02,0x05,0x06,0x06,\r
-  0x06,0x04,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x06,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x06,0x9e,0x9b,0x9a,0x9b,0x9e,0x02,0xf7,0xf7,0x01,0xf7,0x01,0x02,\r
-  0x03,0x03,0x02,0x02,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x9f,0x97,0x97,0x98,0x02,0x99,\r
-  0x99,0x9a,0x9c,0x9c,0x94,0x9b,0x9c,0x9f,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x9f,0x9f,0x9d,0x9b,0x9c,0x97,0x9d,0x9a,0x9a,0x9a,0x9e,\r
-  0x9d,0x97,0x97,0x99,0x9f,0x9c,0x99,0x9c,0x9b,0x9a,0x99,0x98,0x99,\r
-  0x9d,0x9f,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x98,0x98,0x97,0x97,\r
-  0x94,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2f,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,\r
-  0x2f,0x2f,0x2f,0x2f,0x2d,0x2c,0x2f,0xf7,0xf7,0xf7,0xf7,0x36,0x35,\r
-  0x35,0x23,0x2f,0xf6,0x01,0x01,0x01,0x01,0xf7,0xf7,0xf7,0x2f,0x35,\r
-  0x27,0xf7,0xf7,0x2b,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,\r
-  0x02,0xf6,0x2f,0x2c,0x2a,0x2c,0x29,0x29,0x2a,0x2b,0x23,0xf7,0x2f,\r
-  0x2f,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0xf6,0xf7,0xf7,0xf7,0x01,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x98,0x98,\r
-  0x98,0x98,0x97,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,\r
-  0x02,0xf7,0x02,0x03,0x03,0x03,0x02,0x02,0x02,0xf7,0xf7,0x02,0x02,\r
-  0x03,0x05,0x06,0x03,0xf7,0x07,0x07,0x07,0x05,0xf7,0x05,0x02,0x04,\r
-  0x05,0x02,0x02,0x03,0x04,0x04,0x04,0x04,0x04,0x03,0x03,0x02,0x02,\r
-  0x02,0x02,0x02,0x03,0x04,0x03,0x02,0x03,0x04,0x03,0x03,0x03,0x02,\r
-  0x02,0x06,0x03,0xf7,0xf7,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,\r
-  0x02,0x02,0x02,0x02,0x03,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,\r
-  0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x9d,0x9a,0x9a,0x9c,\r
-  0x9f,0xf7,0xf7,0xf7,0xf7,0x02,0x9e,0x9a,0x9a,0x9a,0x9e,0x9f,0x02,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x9c,0x97,0x97,0x99,0x03,0x99,0x99,0x9a,0x9c,0x99,\r
-  0x98,0x9b,0x9d,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9e,\r
-  0x9c,0x9b,0x9b,0x97,0x9d,0x9a,0x9a,0x9a,0x9f,0x99,0x94,0x97,0x99,\r
-  0x02,0x97,0x9a,0x9c,0x9b,0x9a,0x99,0x98,0x99,0x9b,0x9e,0x9f,0x9f,\r
-  0x9f,0x03,0x03,0x03,0x94,0x94,0x94,0x94,0x94,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x2f,0x2f,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2e,0x2c,0x2c,\r
-  0xf7,0xf7,0xf7,0xf7,0x01,0x35,0x35,0x35,0x23,0x2f,0x02,0x01,0x01,\r
-  0x02,0x02,0xf6,0x01,0xf7,0xf7,0x2a,0x35,0x01,0xf7,0x2d,0xf7,0xf7,\r
-  0xf7,0xf7,0x2f,0x2f,0x2f,0xf6,0x01,0x01,0x01,0x02,0xf6,0xf6,0x2f,\r
-  0x2a,0x2d,0x2f,0xf7,0xf7,0xf6,0x25,0xf7,0x2e,0x2d,0xf6,0x01,0xf7,\r
-  0xf7,0xf7,0x01,0xf6,0xf7,0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x98,0x98,0x98,0x98,0x97,0x02,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0xf7,0xf7,0x02,0x03,\r
-  0x03,0x02,0x02,0x02,0x02,0x02,0xf7,0x02,0x02,0x03,0x05,0x06,0xf7,\r
-  0x04,0x07,0x07,0x07,0xf7,0x05,0x02,0x03,0x04,0x04,0xf7,0x03,0x04,\r
-  0x04,0x04,0x04,0x04,0x03,0x03,0x02,0x02,0xf7,0xf7,0x02,0x03,0x04,\r
-  0x04,0x03,0x04,0x04,0x03,0x03,0x03,0x03,0x02,0x04,0x06,0x02,0xf7,\r
-  0xf7,0xf7,0x02,0x02,0x02,0x02,0xf7,0xf7,0x02,0x02,0x02,0x02,0x04,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x06,0x05,0x9b,0x9a,0x9b,0x9d,0x01,0xf7,0xf7,0xf7,0x9f,\r
-  0x98,0x97,0x97,0x97,0x98,0x99,0x9b,0x9f,0x02,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x99,\r
-  0x97,0x97,0x9c,0x9f,0x99,0x9a,0x9b,0x9d,0x94,0x99,0x9b,0x9e,0x9f,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9e,0x9c,0x9b,0x9a,0x99,\r
-  0x9b,0x9a,0x9a,0x9a,0x9f,0x94,0x94,0x98,0x99,0x01,0x94,0x9c,0x9d,\r
-  0x9b,0x9a,0x99,0x98,0x98,0x9a,0x9c,0x9e,0x9f,0x9f,0x9f,0x9f,0x94,\r
-  0x94,0x94,0x94,0x94,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2e,0x2d,\r
-  0x2d,0x2e,0x2e,0x2e,0x2d,0x2c,0x2e,0xf7,0xf7,0xf7,0xf7,0x2a,0x35,\r
-  0x35,0x35,0x23,0x2f,0x02,0x01,0x01,0xf6,0x2f,0x2f,0x2f,0x01,0xf7,\r
-  0xf7,0x25,0x25,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2a,0x2a,0x2a,0x2a,\r
-  0x2c,0x2e,0x2f,0x02,0x01,0x01,0x02,0x02,0xf6,0x28,0xf6,0xf7,0xf7,\r
-  0xf7,0x2c,0x27,0xf7,0x2c,0x2c,0x2f,0x01,0xf7,0x01,0x01,0xf6,0x01,\r
-  0xf7,0xf7,0xf7,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x98,0x98,0x98,0x97,0x97,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x02,0xf7,0xf7,0x02,0x03,0x03,0x02,0x02,0x03,0x03,\r
-  0x03,0x02,0xf7,0xf7,0x02,0x03,0x05,0x05,0xf7,0x07,0x07,0x07,0x02,\r
-  0x02,0x03,0x02,0x04,0x04,0xf7,0x03,0x04,0x04,0x04,0x04,0x04,0x03,\r
-  0x03,0x02,0x02,0xf7,0xf7,0x02,0x03,0x04,0x04,0x03,0x04,0x04,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x06,0x04,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x02,0x02,0x02,0x02,0x06,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x04,0x9a,\r
-  0x9a,0x9c,0x9f,0xf7,0xf7,0xf7,0x9c,0x97,0x97,0x97,0x97,0x97,0x97,\r
-  0x98,0x99,0x9d,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x9e,0x98,0x97,0x97,0x9f,0x9b,\r
-  0x99,0x9a,0x9b,0x9d,0x94,0x9a,0x9c,0x9f,0x9f,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x9f,0x9f,0x9d,0x9b,0x9c,0x98,0x9c,0x9a,0x9a,0x9a,0x9d,\r
-  0x9e,0x94,0x97,0x99,0x9c,0x02,0x94,0x9d,0x9d,0x9b,0x9a,0x99,0x98,\r
-  0x98,0x99,0x9a,0x9b,0x9d,0x9e,0x9e,0x94,0x94,0x94,0x94,0x94,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,\r
-  0x2f,0x2f,0x01,0xf7,0xf7,0xf7,0x2f,0x2d,0x2e,0x2e,0x2e,0x2c,0x2a,\r
-  0x2f,0xf7,0xf7,0xf7,0xf7,0x23,0x35,0x35,0x35,0x26,0x2f,0x02,0x01,\r
-  0x01,0x2f,0x2f,0x2d,0x2e,0x2f,0x01,0xf7,0xf7,0x36,0x2e,0xf7,0xf7,\r
-  0xf7,0xf7,0x2e,0x2f,0x2f,0x2f,0x2c,0x2a,0x2a,0x2a,0x2c,0x2f,0x2f,\r
-  0xf6,0x01,0x01,0x01,0x01,0x26,0xf7,0xf7,0xf7,0x2f,0x36,0x27,0xf7,\r
-  0x2c,0x2b,0x2e,0xf6,0x02,0x02,0x02,0x01,0xf7,0xf7,0xf7,0x01,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x97,0x98,0x98,0x97,\r
-  0x97,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,\r
-  0xf7,0xf7,0x03,0x03,0x02,0x02,0x03,0x04,0x04,0x03,0x02,0xf7,0x02,\r
-  0x02,0x04,0x05,0x03,0x03,0x07,0x07,0x03,0xf7,0x07,0x02,0x03,0x04,\r
-  0x03,0x02,0x03,0x04,0x04,0x04,0x04,0x03,0x03,0x02,0x02,0xf7,0xf7,\r
-  0x02,0x04,0x04,0x04,0x04,0x04,0x04,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x06,0x06,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x04,0x03,0x03,0x02,\r
-  0x02,0x02,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x05,0x03,0x9a,0x9b,0x9d,0xf7,0xf7,0xf7,\r
-  0x9d,0x94,0x97,0x97,0x97,0x97,0x97,0x97,0x98,0x98,0x9a,0x9f,0x01,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x9c,0x97,0x97,0x97,0x02,0x99,0x99,0x9a,0x9c,0x9a,\r
-  0x97,0x9b,0x9d,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9f,\r
-  0x9d,0x9b,0x9b,0x97,0x9d,0x9a,0x9a,0x9a,0x9f,0x99,0x94,0x97,0x99,\r
-  0x9f,0x9d,0x97,0x9d,0x9d,0x9b,0x9a,0x99,0x99,0x98,0x98,0x99,0x99,\r
-  0x9a,0x9a,0x94,0x94,0x94,0x94,0x94,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x01,0xf6,0x2f,0x2f,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x02,0xf7,\r
-  0xf7,0xf7,0x2f,0x2f,0x2f,0x2f,0x2a,0x29,0xf7,0xf7,0xf7,0xf7,0x35,\r
-  0x35,0x35,0x35,0x28,0x2f,0x02,0x01,0x02,0x2f,0x2c,0x2c,0x2b,0x2c,\r
-  0x2f,0x01,0xf7,0xf7,0x35,0xf7,0xf7,0xf7,0xf7,0x2f,0x2f,0xf7,0xf7,\r
-  0xf6,0x2e,0x2e,0x2f,0x2f,0x2f,0x2d,0x2c,0x2f,0x2f,0x02,0x01,0xf7,\r
-  0x01,0x25,0xf7,0xf7,0xf7,0x36,0x35,0x2a,0xf7,0x2c,0x2a,0x2c,0x2f,\r
-  0x2f,0xf6,0x02,0x01,0xf7,0xf7,0xf7,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x97,0x97,0x97,0x97,0x97,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0xf7,0xf7,0x02,0x03,0x03,\r
-  0x02,0x03,0x04,0x04,0x04,0x04,0x02,0xf7,0x02,0x03,0x04,0x05,0xf7,\r
-  0x07,0x07,0x04,0xf7,0x03,0x03,0x02,0x04,0x04,0xf7,0x03,0x04,0x04,\r
-  0x04,0x04,0x03,0x03,0x02,0x02,0xf7,0xf7,0x02,0x03,0x04,0x04,0x04,\r
-  0x04,0x04,0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x06,0x04,0x02,0xf7,\r
-  0x02,0x03,0x04,0x05,0x05,0x05,0x04,0x02,0x02,0x03,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x06,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,\r
-  0x04,0x03,0x9a,0x9c,0x9f,0xf7,0xf7,0x03,0x94,0x97,0x97,0x99,0x99,\r
-  0x97,0x94,0x94,0x97,0x98,0x99,0x9d,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,\r
-  0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x99,\r
-  0x97,0x97,0x99,0x02,0x99,0x99,0x9b,0x9d,0x98,0x99,0x9b,0x9e,0x9f,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9e,0x9c,0x9b,0x9a,0x98,\r
-  0x9c,0x9a,0x9a,0x9a,0x03,0x94,0x94,0x98,0x9a,0x01,0x99,0x99,0x9d,\r
-  0x9d,0x9b,0x9a,0x99,0x99,0x98,0x98,0x98,0x98,0x98,0x94,0x94,0x94,\r
-  0x97,0x97,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0x01,0x01,0x02,\r
-  0xf6,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x02,0xf7,0xf7,0x01,0x2f,0x2f,\r
-  0x2f,0x27,0x2a,0xf7,0xf7,0xf7,0x35,0x35,0x35,0x36,0x2a,0x2f,0x02,\r
-  0x01,0xf6,0x2f,0x2c,0x2a,0x2a,0x2a,0x2c,0x2f,0xf7,0xf7,0x2e,0x23,\r
-  0xf7,0xf7,0xf7,0xf7,0x2e,0xf7,0xf7,0xf7,0xf6,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0x2c,0x2e,0x2f,0xf6,0xf7,0xf7,0x2f,0x2c,0xf7,0xf7,\r
-  0x27,0x35,0x35,0x2a,0xf7,0x2e,0x2a,0x2c,0x2e,0x2f,0x2f,0x02,0xf7,\r
-  0xf7,0xf7,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x97,\r
-  0x97,0x97,0x97,0x97,0xf7,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x02,0xf7,0xf7,0x03,0x03,0x02,0x02,0x04,0x04,0x05,\r
-  0x05,0x04,0x03,0xf7,0x02,0x03,0x05,0x04,0x02,0x07,0x06,0x02,0xf7,\r
-  0x06,0x02,0x03,0x04,0x02,0x02,0x03,0x04,0x04,0x04,0x04,0x03,0x02,\r
-  0x02,0xf7,0xf7,0x02,0x04,0x04,0x04,0x04,0x04,0x04,0x03,0x02,0x02,\r
-  0x03,0x03,0x03,0x04,0x05,0x05,0x04,0x04,0x05,0x05,0x05,0x05,0x05,\r
-  0x06,0x04,0x02,0x02,0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x04,0x03,0x9b,0x9d,0x02,\r
-  0xf7,0xf7,0x99,0x94,0x98,0x9e,0x9f,0x9f,0x9c,0x98,0x94,0x97,0x97,\r
-  0x98,0x9c,0x03,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x02,0x03,0x9f,0x9e,0x9e,0x9f,0x03,0x02,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x9f,0x99,0x97,0x97,0x9a,0x9e,\r
-  0x99,0x9a,0x9b,0x9d,0x94,0x9a,0x9c,0x9e,0x9f,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x9f,0x9e,0x9c,0x9c,0x98,0x9b,0x9a,0x9a,0x9a,0x9c,\r
-  0x9f,0x94,0x97,0x98,0x9f,0xf7,0x94,0x9a,0x9e,0x9d,0x9b,0x9a,0x9a,\r
-  0x99,0x99,0x98,0x98,0x98,0x97,0x97,0x97,0x97,0x97,0xf7,0xf7,0x01,\r
-  0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0xf6,0x2f,0x2f,\r
-  0x2f,0x02,0x01,0x01,0x01,0x01,0xf6,0x02,0x01,0x26,0x2e,0xf7,0xf7,\r
-  0x36,0x35,0x35,0x36,0x2c,0x2f,0x02,0x01,0xf6,0x2f,0x2c,0x2a,0x28,\r
-  0x28,0x2a,0x2c,0x2f,0xf7,0xf7,0x23,0x2c,0xf7,0xf7,0xf7,0x01,0x2f,\r
-  0xf7,0xf7,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x2c,\r
-  0x2c,0x2e,0x2f,0xf7,0xf7,0x27,0xf7,0xf7,0x2d,0x36,0x35,0x35,0x2a,\r
-  0xf7,0x02,0x2a,0x2c,0x2e,0x2f,0xf6,0x01,0xf7,0xf7,0x2f,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x97,0x97,0x97,0x97,0x97,0xf7,\r
-  0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0xf7,\r
-  0xf7,0x02,0x03,0x03,0x02,0x03,0x05,0x05,0x05,0x05,0x04,0x03,0xf7,\r
-  0x02,0x03,0x05,0xf7,0x06,0x07,0x02,0xf7,0x04,0x03,0x03,0x03,0x04,\r
-  0xf7,0x03,0x03,0x04,0x04,0x04,0x03,0x02,0x02,0xf7,0xf7,0x02,0x03,\r
-  0x04,0x03,0x03,0x03,0x03,0x02,0xf7,0x02,0x04,0x04,0x04,0x04,0x04,\r
-  0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x05,0x06,0x05,0x02,0x02,0x06,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x05,0x04,0x03,0x9c,0x9f,0xf7,0xf7,0x9f,0x94,0x97,0x9f,\r
-  0x02,0x02,0x02,0x03,0x9d,0x97,0x94,0x97,0x98,0x99,0x9f,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x03,0x9d,\r
-  0x9a,0x99,0x99,0x99,0x9a,0x9c,0x9f,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0x9e,0x98,0x97,0x97,0x03,0x9a,0x99,0x9a,0x9c,0x9c,\r
-  0x94,0x9a,0x9c,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9f,\r
-  0x9d,0x9b,0x9c,0x97,0x9d,0x9a,0x9a,0x9a,0x9f,0x99,0x94,0x98,0x9a,\r
-  0x02,0x02,0x94,0x9c,0x9e,0x9d,0x9b,0x9a,0x9a,0x99,0x99,0x99,0x99,\r
-  0x97,0x97,0x98,0x99,0x9b,0x2f,0x2f,0x2f,0xf6,0x02,0x01,0x01,0x01,\r
-  0x01,0x01,0x01,0x02,0x02,0xf6,0xf6,0xf6,0xf6,0x02,0x01,0x01,0x01,\r
-  0x01,0x01,0xf7,0xf7,0x25,0xf7,0xf7,0x29,0x35,0x35,0x23,0x2e,0xf6,\r
-  0x01,0x01,0x2f,0x2d,0x2a,0x28,0x27,0x27,0x28,0x2a,0x2e,0x02,0xf7,\r
-  0xf7,0x35,0xf7,0xf7,0xf7,0xf7,0x2e,0x02,0x01,0x2e,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2b,0x2c,0x2d,0x2f,0xf7,\r
-  0xf7,0x23,0xf7,0xf7,0x23,0x36,0x35,0x35,0x27,0xf7,0xf7,0x2e,0x2d,\r
-  0x2f,0x2f,0x01,0xf7,0xf7,0x02,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x98,0x97,0x97,0x97,0x97,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0xf7,0xf7,0x03,0x03,0x02,\r
-  0x03,0x04,0x05,0x06,0x06,0x05,0x04,0x02,0x02,0x02,0x04,0x04,0xf7,\r
-  0x07,0x03,0x02,0xf7,0x06,0x03,0x03,0x04,0xf7,0x03,0x03,0x04,0x04,\r
-  0x04,0x03,0x03,0x02,0xf7,0xf7,0x02,0x03,0x03,0x02,0x02,0x02,0x02,\r
-  0xf7,0xf7,0x02,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,\r
-  0x04,0x04,0x05,0x05,0x05,0xf7,0x02,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x05,0x03,0x03,\r
-  0x9d,0x03,0xf7,0xf7,0x9b,0x94,0x9b,0x02,0x9f,0x9e,0x9f,0x03,0x03,\r
-  0x9a,0x94,0x97,0x97,0x98,0x9e,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0x01,0x03,0x9c,0x99,0x98,0x98,0x99,0x99,0x99,\r
-  0x99,0x9b,0x9f,0x01,0xf7,0x01,0x02,0x01,0xf7,0xf7,0xf7,0x01,0x9d,\r
-  0x97,0x97,0x98,0x02,0x99,0x99,0x9b,0x9d,0x99,0x97,0x9b,0x9e,0x9f,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9d,0x9b,0x9a,0x97,\r
-  0x9d,0x9a,0x9a,0x99,0x02,0x97,0x97,0x98,0x9f,0xf7,0x9f,0x94,0x9d,\r
-  0x9e,0x9e,0x9c,0x9a,0x9a,0x99,0x99,0x99,0x9b,0x9b,0x9c,0x9d,0x9c,\r
-  0x2f,0x2f,0x02,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x02,\r
-  0xf6,0x2f,0x2f,0xf6,0xf6,0xf6,0x02,0x01,0x01,0xf7,0xf7,0xf7,0x23,\r
-  0xf7,0xf7,0x36,0x35,0x23,0x2f,0x01,0x01,0x02,0x2f,0x2c,0x2a,0x27,\r
-  0x27,0x26,0x27,0x28,0x2a,0x2f,0xf7,0xf7,0x2c,0x36,0xf7,0x2f,0xf7,\r
-  0xf7,0x2d,0x2f,0x2d,0x2c,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x2c,0x2c,0x2c,0x2d,0xf7,0xf7,0x2f,0x2f,0xf7,0x2f,\r
-  0x36,0x36,0x35,0x35,0x25,0xf7,0xf7,0x01,0x2f,0xf6,0x01,0xf7,0xf7,\r
-  0x02,0xf6,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x97,0x97,0x97,\r
-  0x97,0x97,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x02,0x02,0xf7,0xf7,0x02,0x03,0x03,0x02,0x04,0x05,0x06,0x06,\r
-  0x06,0x05,0x04,0x02,0x02,0x03,0x04,0x03,0x05,0x04,0x02,0xf7,0x05,\r
-  0x03,0x03,0x03,0x04,0x02,0x03,0x03,0x04,0x04,0x03,0x03,0x02,0xf7,\r
-  0xf7,0xf7,0x03,0x03,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0x04,0x04,\r
-  0x04,0x04,0x04,0x04,0x04,0x03,0x04,0x04,0x04,0x04,0x04,0x05,0x05,\r
-  0x02,0x03,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x06,0x04,0x03,0x04,0x9e,0x01,0xf7,0x01,0x97,\r
-  0x97,0x03,0x03,0x9d,0x9a,0x9b,0x9e,0x03,0x9f,0x98,0x94,0x97,0x97,\r
-  0x9d,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0x03,\r
-  0x9c,0x98,0x98,0x98,0x98,0x98,0x98,0x99,0x99,0x99,0x9c,0x03,0xf7,\r
-  0xf7,0x02,0x01,0xf7,0xf7,0xf7,0xf7,0x02,0x9b,0x97,0x97,0x9a,0x9e,\r
-  0x99,0x9a,0x9c,0x9e,0x94,0x9a,0x9b,0x9e,0x9f,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x9f,0x9e,0x9c,0x9b,0x99,0x99,0x9b,0x9a,0x9a,0x9a,\r
-  0x03,0x94,0x97,0x9a,0x01,0xf7,0x9b,0x94,0x9e,0x9f,0x9e,0x9d,0x9b,\r
-  0x9a,0x9a,0x9a,0x9d,0x9d,0x9d,0x9c,0x9c,0x2f,0x2f,0x2c,0x29,0x26,\r
-  0x25,0x27,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2f,0x2e,0x2f,0x2f,\r
-  0x2f,0x2f,0x2f,0x02,0xf7,0xf7,0xf7,0x2a,0xf7,0x2c,0x35,0x36,0xf6,\r
-  0x01,0x01,0xf6,0x2f,0x2b,0x28,0x27,0x26,0x25,0x27,0x27,0x2a,0x2d,\r
-  0xf6,0xf7,0xf7,0x36,0x2d,0xf7,0x01,0xf7,0xf7,0x2a,0x2a,0x2a,0x2f,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x2d,0x2e,\r
-  0x2e,0x2e,0x02,0xf7,0xf7,0x23,0xf7,0xf7,0x2c,0x36,0x35,0x35,0x35,\r
-  0x23,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2f,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x97,0x97,0x97,0x97,0x97,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0xf7,\r
-  0xf7,0x03,0x03,0x02,0x03,0x05,0x06,0x06,0x06,0x06,0x05,0x04,0xf7,\r
-  0x02,0x03,0x04,0xf7,0x06,0x02,0xf7,0xf7,0x05,0x03,0x03,0x04,0xf7,\r
-  0x03,0x03,0x04,0x04,0x03,0x03,0x02,0xf7,0xf7,0xf7,0x03,0x02,0xf7,\r
-  0xf7,0xf7,0xf7,0x02,0x02,0xf7,0x02,0x02,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x04,0x02,0x04,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,\r
-  0x04,0x04,0x04,0x9f,0xf7,0xf7,0x02,0x94,0x98,0x02,0x9e,0x9a,0x9a,\r
-  0x9a,0x9a,0x9f,0x03,0x9b,0x97,0x97,0x97,0x9a,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x01,0x01,0x02,0x9e,0x99,0x97,0x98,0x97,0x97,\r
-  0x97,0x97,0x98,0x99,0x99,0x9a,0x9f,0x01,0xf7,0x01,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x02,0x9a,0x97,0x97,0x03,0x99,0x99,0x9b,0x9d,0x9d,\r
-  0x94,0x9a,0x9c,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9f,\r
-  0x9e,0x9b,0x9c,0x97,0x9c,0x9b,0x9a,0x99,0x9e,0x9b,0x97,0x97,0x9f,\r
-  0xf7,0xf7,0x97,0x97,0x9e,0x9f,0x9f,0x9e,0x9d,0x9b,0x9b,0x9d,0x9d,\r
-  0x9c,0x9c,0x9c,0x2a,0x27,0x27,0x2d,0x01,0xf7,0xf7,0x2f,0x25,0x29,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x2e,0x2c,0x2c,0x2c,0x2c,0x2e,0xf7,0xf7,\r
-  0xf7,0x2f,0xf7,0xf7,0x26,0x35,0x2f,0xf7,0x01,0x2f,0x2d,0x2a,0x28,\r
-  0x27,0x26,0x26,0x26,0x27,0x29,0x2c,0x2f,0xf7,0xf7,0x2d,0x36,0xf7,\r
-  0xf7,0xf7,0xf7,0x2f,0x2a,0x2a,0x2b,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x01,0x2f,0x2e,0x2f,0x2f,0x2f,0x02,0xf7,0xf7,\r
-  0x2f,0x2a,0xf7,0xf7,0x2f,0x25,0x36,0x35,0x35,0x36,0x2f,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x2f,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x97,0x97,0x97,0x97,0x97,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0xf7,0xf7,0x02,0x03,0x03,0x02,\r
-  0x04,0x06,0x06,0x06,0x06,0x06,0x05,0x03,0x02,0x03,0x04,0x04,0x04,\r
-  0x03,0x02,0xf7,0x05,0x03,0x03,0x03,0x04,0x02,0x03,0x03,0x04,0x04,\r
-  0x03,0x02,0x02,0xf7,0xf7,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0x02,0x02,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0x03,0x03,0x03,0x04,0x04,\r
-  0x04,0x05,0x04,0x02,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x05,0x04,0x05,0x02,0xf7,\r
-  0xf7,0x03,0x94,0x99,0x02,0x9c,0x99,0x9a,0x9a,0x9a,0x9c,0x03,0x9f,\r
-  0x97,0x97,0x97,0x9a,0x03,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,\r
-  0x01,0x02,0x9b,0x97,0x97,0x97,0x97,0x94,0x94,0x97,0x97,0x98,0x99,\r
-  0x99,0x9d,0x02,0xf7,0xf7,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,\r
-  0x99,0x97,0x97,0x02,0x98,0x99,0x9c,0x9e,0x99,0x97,0x9b,0x9d,0x9f,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9d,0x9b,0x9a,0x94,\r
-  0x9d,0x9a,0x9a,0x99,0x03,0x98,0x97,0x99,0xf7,0xf7,0x02,0x94,0x98,\r
-  0x9f,0x9f,0x9f,0x9f,0x9f,0x9e,0x9d,0x9d,0x9d,0x9d,0x9e,0x2a,0x2f,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2c,0x27,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0x02,0x01,0xf7,0xf7,0xf7,0xf7,0x2a,0xf7,0x2f,0x35,\r
-  0x28,0xf7,0xf7,0xf6,0x2d,0x2a,0x27,0x27,0x26,0x26,0x27,0x27,0x29,\r
-  0x2c,0x2f,0x01,0xf7,0xf7,0x35,0x2a,0xf7,0x2b,0xf7,0xf7,0x2c,0x2a,\r
-  0x2d,0x2d,0x02,0xf7,0xf7,0xf7,0x02,0x02,0xf6,0xf6,0x2f,0x2f,0x2e,\r
-  0x2d,0x2f,0x02,0x01,0x01,0x01,0xf7,0xf7,0xf7,0x23,0xf7,0xf7,0xf7,\r
-  0xf7,0x2f,0x28,0x26,0x25,0x36,0x2a,0xf7,0xf7,0xf7,0xf7,0x2e,0x2f,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x97,0x97,0x97,0x97,0x97,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x02,0x02,0xf7,0xf7,0x03,0x03,0x02,0x03,0x05,0x06,0x06,0x06,\r
-  0x06,0x06,0x05,0x02,0x02,0x03,0x04,0xf7,0x07,0x02,0xf7,0x02,0x05,\r
-  0x03,0x03,0x04,0xf7,0x03,0x03,0x03,0x04,0x03,0x03,0x02,0xf7,0xf7,\r
-  0x02,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x02,0x02,0x02,0x03,0x04,0x04,0x05,0x02,0x02,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x06,0x05,0x05,0x06,0x01,0xf7,0xf7,0x9f,0x94,0x9a,0x02,\r
-  0x9b,0x99,0x9a,0x9a,0x9a,0x9a,0x9f,0x03,0x99,0x97,0x97,0x98,0x03,\r
-  0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0xf7,0x03,0x99,0x97,0x97,\r
-  0x97,0x94,0x94,0x94,0x94,0x97,0x97,0x99,0x99,0x9d,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x03,0x98,0x97,0x9b,0x9d,\r
-  0x98,0x9a,0x9d,0x9e,0x94,0x99,0x9b,0x9e,0x9f,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x9f,0x9e,0x9d,0x9b,0x99,0x98,0x9c,0x9a,0x99,0x99,\r
-  0x03,0x97,0x97,0x03,0xf7,0xf7,0x9f,0x94,0x99,0x9f,0x03,0x03,0x03,\r
-  0x03,0x9d,0x9d,0x9d,0x9e,0x9e,0x2f,0xf7,0xf7,0xf7,0xf7,0x01,0x2c,\r
-  0x29,0x2d,0xf7,0xf7,0xf7,0x2f,0x28,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x2f,0xf7,0xf7,0x25,0x36,0xf7,0xf7,0x01,0x2f,0x2b,\r
-  0x28,0x27,0x27,0x26,0x27,0x28,0x2a,0x2d,0x2f,0x01,0xf7,0xf7,0x23,\r
-  0x36,0xf7,0xf7,0x2f,0xf7,0xf7,0x2e,0x2f,0x2f,0x2d,0x2f,0x02,0x2f,\r
-  0x2f,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2f,0xf6,0x01,0xf7,0x01,\r
-  0x01,0x01,0xf7,0xf7,0x2a,0x27,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,\r
-  0x2c,0x36,0x25,0x2a,0x2d,0x2d,0x2c,0x2e,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x97,0x97,0x97,0x97,0x97,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0xf7,0xf7,\r
-  0x02,0x03,0x03,0x02,0x04,0x06,0x06,0x06,0x06,0x06,0x06,0x04,0x02,\r
-  0x03,0x03,0x04,0x03,0x03,0xf7,0xf7,0x05,0x03,0x03,0x03,0x03,0x02,\r
-  0x03,0x03,0x04,0x03,0x03,0x02,0xf7,0xf7,0x02,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,\r
-  0x02,0x03,0x04,0x04,0x06,0x02,0x02,0x07,0x07,0x07,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,\r
-  0x07,0xf7,0xf7,0xf7,0x9e,0x97,0x9a,0x02,0x9b,0x99,0x9a,0x9a,0x9a,\r
-  0x9a,0x9d,0x02,0x9c,0x97,0x97,0x98,0x9f,0x01,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x01,0x01,0xf7,0x9f,0x98,0x97,0x97,0x97,0x94,0x94,0x94,0x94,\r
-  0x97,0x97,0x98,0x99,0x9e,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0x03,0x97,0x97,0x03,0x99,0x98,0x9c,0x9e,0x9e,\r
-  0x94,0x9a,0x9c,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,\r
-  0x9e,0x9c,0x9b,0x97,0x9a,0x9b,0x9a,0x99,0x9c,0x9c,0x97,0x99,0x01,\r
-  0xf7,0xf7,0x9d,0x94,0x99,0x9f,0x03,0x02,0x02,0x9c,0x9c,0x9c,0x9d,\r
-  0x9e,0xf6,0xf7,0xf7,0xf7,0xf6,0x23,0x36,0x35,0x35,0x35,0x23,0x2f,\r
-  0xf7,0xf7,0xf7,0x2a,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0xf7,0xf7,\r
-  0x2c,0x35,0x02,0xf7,0xf7,0x2f,0x2d,0x2a,0x28,0x27,0x27,0x28,0x2a,\r
-  0x2c,0x2f,0xf6,0x01,0xf7,0x01,0x25,0x35,0x28,0xf7,0x2f,0xf7,0xf7,\r
-  0xf7,0x2f,0xf6,0xf6,0x2e,0x2e,0x2e,0x2e,0x2f,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x01,0x01,0x02,0x01,0xf7,0xf7,0xf7,0x01,0xf6,0x01,0x01,0x2f,\r
-  0x25,0x2c,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x29,0x23,0x25,0x27,\r
-  0x2a,0x2a,0x2c,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x97,0x97,\r
-  0x97,0x97,0x97,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0xf7,0xf7,0x03,0x03,0x02,0x03,\r
-  0x05,0x06,0x06,0x06,0x06,0x06,0x06,0x03,0x02,0x03,0x04,0x02,0x07,\r
-  0x02,0x02,0x02,0x05,0x03,0x03,0x04,0xf7,0x03,0x03,0x03,0x03,0x03,\r
-  0x02,0xf7,0xf7,0xf7,0x03,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x03,0x04,0x04,0x06,\r
-  0x02,0x03,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x06,\r
-  0x05,0x06,0x06,0x06,0x07,0x07,0x07,0x07,0x07,0xf7,0xf7,0xf7,0x9e,\r
-  0x97,0x9a,0x02,0x9b,0x99,0x9a,0x9a,0x9a,0x9a,0x9b,0x03,0x9f,0x97,\r
-  0x97,0x97,0x9f,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0x01,0xf7,0x9f,\r
-  0x98,0x97,0x97,0x97,0x94,0x94,0x94,0x94,0x97,0x98,0x98,0x99,0x03,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0xf7,\r
-  0x03,0x97,0x97,0x02,0x98,0x99,0x9d,0x9e,0x9a,0x97,0x9b,0x9d,0x9f,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9e,0x9b,0x9b,0x94,\r
-  0x9d,0x9b,0x9a,0x99,0x03,0x98,0x97,0x03,0xf7,0xf7,0xf7,0x98,0x94,\r
-  0x99,0x9f,0x03,0x02,0x9c,0x9c,0x9c,0x9d,0x9f,0x2d,0xf7,0xf7,0xf7,\r
-  0x26,0x35,0x35,0x35,0x35,0x36,0x35,0x35,0x36,0x2a,0xf7,0xf7,0xf7,\r
-  0xf7,0x2f,0x2e,0x2f,0xf7,0xf7,0xf7,0x2f,0x35,0x27,0xf7,0xf7,0x01,\r
-  0x2f,0x2d,0x2a,0x2a,0x2a,0x2b,0x2d,0x2f,0x02,0x01,0x01,0xf6,0x2f,\r
-  0x25,0x35,0x35,0x2f,0xf7,0x26,0xf7,0xf7,0xf7,0x01,0x01,0x02,0x2e,\r
-  0x2d,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf6,0x2f,0x2f,0xf6,0xf6,0x2a,0x26,0x2f,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0x2a,0x25,0x26,0x27,0x28,0x27,0x2d,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x97,0x97,0x97,0x97,0x97,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x02,0xf7,0xf7,0xf7,0x03,0x03,0x02,0x04,0x06,0x06,0x06,0x06,\r
-  0x06,0x06,0x05,0x02,0x02,0x03,0x04,0x02,0x04,0x02,0x03,0x05,0x03,\r
-  0x03,0x03,0x04,0x02,0x03,0x03,0x03,0x03,0x03,0x02,0xf7,0xf7,0x02,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0xf7,\r
-  0xf7,0xf7,0xf7,0x02,0x03,0x04,0x05,0x05,0x02,0x06,0x07,0x07,0x07,\r
-  0x07,0x07,0x07,0x06,0x06,0x05,0x04,0x04,0x04,0x04,0x04,0x05,0x06,\r
-  0x07,0x07,0x07,0x07,0xf7,0xf7,0xf7,0x9e,0x97,0x99,0x02,0x9d,0x99,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9f,0x03,0x98,0x97,0x97,0x9f,0xf7,0x01,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0x01,0xf7,0xf7,0x9f,0x98,0x97,0x97,0x97,0x94,\r
-  0x94,0x94,0x97,0x97,0x98,0x98,0x9b,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0xf7,0x9f,0x94,0x99,0x9d,\r
-  0x98,0x9a,0x9e,0x9e,0x97,0x99,0x9b,0x9e,0x9f,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x9f,0x9f,0x9d,0x9b,0x9a,0x97,0x9c,0x9a,0x99,0x99,\r
-  0x02,0x97,0x99,0x01,0xf7,0xf7,0x01,0x97,0x94,0x97,0x9d,0x9f,0x9c,\r
-  0x9c,0x9d,0x9d,0x9f,0x2a,0xf7,0xf7,0x01,0x35,0x35,0x35,0x35,0x35,\r
-  0x35,0x35,0x35,0x35,0x35,0x35,0x27,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x2a,0x35,0x25,0xf7,0xf7,0xf7,0x01,0x2f,0x2e,0x2d,0x2d,0x2f,\r
-  0x2f,0x02,0x01,0xf6,0x2f,0x2c,0x28,0x36,0x35,0x35,0x25,0xf7,0xf7,\r
-  0x25,0xf7,0xf7,0x01,0x01,0xf7,0xf6,0x2e,0x2f,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x2f,0x2f,\r
-  0x2f,0x2f,0x2f,0x2d,0x29,0x29,0xf6,0xf7,0xf7,0xf7,0x01,0x2d,0x27,\r
-  0x26,0x27,0x28,0x27,0x27,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x99,0x98,0x97,0x97,0x97,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0xf7,0xf7,\r
-  0x02,0x03,0x02,0x03,0x05,0x06,0x06,0x06,0x06,0x06,0x06,0x04,0x02,\r
-  0x03,0x03,0x03,0x07,0x03,0x03,0x04,0x05,0x03,0x03,0x04,0x02,0x03,\r
-  0x03,0x03,0x03,0x03,0x02,0xf7,0xf7,0x02,0x02,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x02,0x04,0x03,0xf7,0xf7,0xf7,0xf7,0x02,0x03,\r
-  0x04,0x05,0x03,0x02,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x04,\r
-  0x03,0x03,0x02,0x02,0xf7,0x02,0x02,0x04,0x06,0x07,0x07,0x07,0xf7,\r
-  0xf7,0xf7,0x9f,0x97,0x97,0x03,0x9f,0x9a,0x99,0x9a,0x9a,0x9a,0x9a,\r
-  0x9f,0x02,0x99,0x97,0x97,0x9f,0xf7,0x01,0x01,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,\r
-  0xf7,0xf7,0x03,0x99,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,\r
-  0x99,0x9f,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0xf7,0x9a,0x94,0x9f,0x98,0x98,0x9d,0x9e,0x9e,\r
-  0x94,0x9a,0x9c,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,\r
-  0x9e,0x9c,0x9b,0x98,0x9a,0x9c,0x9a,0x99,0x9a,0x9c,0x97,0x03,0x01,\r
-  0xf7,0xf7,0x02,0x94,0x94,0x94,0x97,0x9c,0x9c,0x9d,0x9d,0x9f,0x27,\r
-  0xf7,0xf7,0x2f,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,\r
-  0x35,0x35,0x35,0x36,0x23,0x27,0x27,0x23,0x36,0x35,0x29,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0x02,0xf6,0xf6,0xf6,0x01,0x01,0x02,0x2f,0x2a,0x25,\r
-  0x36,0x35,0x35,0x35,0x35,0x2f,0xf7,0xf7,0x25,0xf7,0x01,0x02,0x01,\r
-  0x01,0x2f,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0xf7,0xf7,0x2f,0x2e,0x2d,0x2e,0x2f,0x2f,0x2f,0x2c,\r
-  0x2a,0x2b,0x2d,0x2d,0x2c,0x2a,0x28,0x27,0x27,0x28,0x2a,0x2c,0x2f,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x99,0x98,0x97,0x97,\r
-  0x97,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0xf7,0xf7,0xf7,0x03,0x03,0x02,0x04,\r
-  0x05,0x06,0x06,0x06,0x06,0x06,0x05,0x03,0x02,0x03,0x03,0xf7,0x06,\r
-  0x04,0x04,0x04,0x03,0x03,0x03,0x04,0x02,0x03,0x03,0x03,0x03,0x02,\r
-  0xf7,0xf7,0xf7,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,\r
-  0x05,0x04,0xf7,0xf7,0xf7,0xf7,0x02,0x04,0x04,0x06,0x02,0x03,0x07,\r
-  0x07,0x07,0x07,0x07,0x07,0x05,0x04,0x03,0x02,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x03,0x06,0x07,0x07,0xf7,0xf7,0x01,0x03,0x97,0x97,\r
-  0x9f,0x03,0x9a,0x99,0x99,0x99,0x99,0x9a,0x9f,0x02,0x99,0x97,0x97,\r
-  0x9f,0xf7,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0xf7,0xf7,0x03,0x9a,0x97,\r
-  0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x9c,0x02,0x01,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x98,0x94,0x02,0x97,0x99,0x9d,0x9e,0x9a,0x94,0x9b,0x9d,0x9f,\r
-  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9e,0x9c,0x9b,0x94,\r
-  0x9d,0x9b,0x9a,0x99,0x9f,0x97,0x97,0xf7,0xf7,0xf7,0xf7,0x03,0x94,\r
-  0x94,0x94,0x9c,0x9c,0x9d,0x9d,0x9e,0x27,0x2e,0xf7,0xf6,0x35,0x35,\r
-  0x36,0x25,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,\r
-  0x35,0x36,0x23,0x28,0xf6,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0x2f,0x2b,0x23,0x35,0x35,0x35,0x36,0x36,0x35,0x2d,\r
-  0xf7,0xf7,0x01,0x25,0x02,0x02,0xf6,0xf7,0xf7,0xf6,0x01,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf6,0x2e,0x2d,0x2e,0x2f,0x2f,0x2e,0x2c,0x2c,0x2c,0x2b,0x2a,\r
-  0x29,0x28,0x28,0x29,0x2a,0x2a,0x2f,0x01,0xf7,0x01,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x2f,0x99,0x99,0x97,0x97,0x97,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x02,0xf7,0xf7,0x02,0x04,0x03,0x02,0x05,0x06,0x06,0x06,0x06,\r
-  0x06,0x06,0x05,0x02,0x03,0x03,0x03,0x06,0x05,0x04,0x04,0x05,0x03,\r
-  0x03,0x03,0x02,0x03,0x03,0x03,0x03,0x02,0x02,0xf7,0xf7,0x02,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x04,0x06,0x04,0xf7,0xf7,0xf7,\r
-  0xf7,0x02,0x04,0x04,0x05,0x02,0x05,0x07,0x07,0x07,0x07,0x07,0x06,\r
-  0x04,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,\r
-  0x07,0x07,0xf7,0xf7,0x01,0x03,0x97,0x97,0x9a,0x02,0x9d,0x9a,0x99,\r
-  0x99,0x99,0x9a,0x9f,0x02,0x99,0x97,0x97,0x9f,0xf7,0xf7,0x01,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x01,0x01,0x01,0xf7,0x03,0x9c,0x98,0x97,0x97,0x97,0x97,0x97,\r
-  0x97,0x97,0x99,0x9f,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0xf7,0x02,0x94,0x97,0x9f,\r
-  0x98,0x9a,0x9d,0x9e,0x98,0x98,0x9b,0x9e,0x9f,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x9f,0x9f,0x9e,0x9b,0x9a,0x97,0x9d,0x9b,0x99,0x98,\r
-  0x02,0x97,0x9e,0xf7,0xf7,0xf7,0xf7,0x03,0x99,0x94,0x9b,0x9b,0x9d,\r
-  0x9d,0x9e,0x28,0x28,0xf7,0x2f,0x35,0x27,0xf7,0xf7,0xf7,0xf7,0x2d,\r
-  0x23,0x35,0x35,0x35,0x35,0x35,0x23,0x2a,0x2b,0x2f,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2a,0x36,0x35,\r
-  0x35,0x35,0x36,0x36,0x36,0x27,0xf7,0xf7,0xf7,0xf7,0xf7,0x27,0x2e,\r
-  0xf6,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2d,0x2d,\r
-  0x2e,0x2e,0x2e,0x2e,0x2d,0x2c,0x2d,0x2c,0x2a,0x2a,0x2a,0x2a,0x2a,\r
-  0x2b,0x2c,0x2e,0x2f,0xf6,0xf6,0xf7,0xf7,0xf7,0xf7,0x01,0x2d,0x9c,\r
-  0x9a,0x99,0x98,0x98,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0xf7,0xf7,\r
-  0x03,0x03,0x02,0x03,0x05,0x06,0x06,0x06,0x06,0x06,0x06,0x03,0x02,\r
-  0x03,0x03,0xf7,0x06,0x05,0x05,0x04,0x04,0x03,0x03,0x04,0x02,0x03,\r
-  0x03,0x03,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x04,0x06,0x04,0xf7,0xf7,0xf7,0xf7,0x03,0x04,0x05,0x03,\r
-  0x02,0x07,0x07,0x07,0x07,0x07,0x06,0x05,0x02,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x04,0x07,0xf7,0xf7,0x01,\r
-  0x02,0x98,0x97,0x98,0x9f,0x03,0x9c,0x9a,0x99,0x9a,0x9c,0x03,0x02,\r
-  0x99,0x97,0x97,0x9f,0xf7,0xf7,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0x01,0xf7,\r
-  0x03,0x9c,0x99,0x97,0x97,0x97,0x97,0x97,0x97,0x99,0x9d,0x02,0x01,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0xf7,0x9e,0x94,0x9b,0x9b,0x98,0x9a,0x9d,0x9e,\r
-  0x94,0x9a,0x9c,0x9e,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,\r
-  0x9f,0x9d,0x9b,0x98,0x99,0x9c,0x9b,0x99,0x99,0x9e,0x94,0xf7,0x01,\r
-  0xf7,0xf7,0xf7,0x01,0x9f,0x9a,0x9a,0x9c,0x9d,0x9d,0x2a,0x27,0x2f,\r
-  0x2f,0x35,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x28,0x35,0x35,\r
-  0x36,0x35,0x36,0x29,0x2f,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x01,0x2a,0x23,0x35,0x35,0x35,0x36,0x36,0x36,0x23,0x2c,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x2a,0x2b,0x2f,0x2f,0x2f,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x2e,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,\r
-  0x2d,0x2d,0x2d,0x2c,0x2a,0x2a,0x2a,0x2b,0x2c,0x2c,0x2e,0x2e,0x2f,\r
-  0x2f,0xf7,0xf7,0xf7,0xf7,0xf6,0x2b,0x9e,0x9c,0x9a,0x99,0x99,0x02,\r
-  0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0xf7,0xf7,0xf7,0x03,0x03,0x02,0x04,\r
-  0x06,0x06,0x06,0x06,0x06,0x06,0x05,0x02,0x02,0x03,0x03,0x04,0x06,\r
-  0x05,0x05,0x05,0x03,0x03,0x03,0x02,0x03,0x03,0x03,0x03,0x02,0xf7,\r
-  0xf7,0xf7,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x05,0x05,\r
-  0xf7,0xf7,0xf7,0x02,0x03,0x04,0x06,0x02,0x02,0x07,0x07,0x07,0x07,\r
-  0x07,0x05,0x03,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x04,0x05,0x04,\r
-  0x03,0xf7,0xf7,0xf7,0x06,0xf7,0xf7,0xf7,0x01,0x9a,0x97,0x97,0x9a,\r
-  0x02,0x9f,0x9d,0x9b,0x9c,0x9f,0x02,0x03,0x98,0x97,0x97,0x9f,0xf7,\r
-  0xf7,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0x01,0x01,0x01,0x01,0x9f,0x9c,0x99,0x97,0x97,\r
-  0x97,0x97,0x97,0x98,0x9a,0x9f,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,\r
-  0xf7,0x99,0x97,0x9f,0x99,0x99,0x9a,0x9c,0x9d,0x94,0x9b,0x9c,0x9f,\r
-  0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9e,0x9c,0x9b,0x94,\r
-  0x9c,0x9c,0x9a,0x98,0x9c,0x98,0x98,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x9b,0x9b,0x9b,0x9d,0x9d,0x2a,0x27,0x29,0x2c,0x36,0xf7,0xf7,0x01,\r
-  0x2c,0x2c,0x2f,0xf7,0xf7,0xf7,0xf7,0x2e,0x36,0x35,0x35,0x35,0x25,\r
-  0x2b,0x2f,0x01,0xf7,0xf7,0xf7,0xf7,0xf6,0x27,0x35,0x35,0x35,0x35,\r
-  0x35,0x35,0x28,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x2f,0x2a,0x2a,\r
-  0x29,0x2c,0x2c,0x2d,0x2f,0x2f,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,\r
-  0x2f,0x2e,0x2d,0x2e,0x2e,0x2e,0x2f,0x2f,0x2e,0x2d,0x2c,0x2d,0x2d,\r
-  0x2c,0x2c,0x2c,0x2c,0x2d,0x2e,0x2f,0xf6,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x2f,0x9e,0x9f,0x9e,0x9d,0x9b,0x03,0x02,0x02,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x02,0x02,0xf7,0xf7,0x02,0x03,0x02,0x03,0x05,0x06,0x06,0x06,0x06,\r
-  0x06,0x06,0x04,0x02,0x03,0x03,0x02,0x07,0x06,0x05,0x04,0x04,0x03,\r
-  0x03,0x04,0x02,0x03,0x03,0x03,0x02,0x02,0xf7,0xf7,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x04,0x04,0xf7,0xf7,0xf7,0x02,0x04,\r
-  0x04,0x06,0x02,0x05,0x07,0x07,0x07,0x07,0x06,0x04,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x05,0x06,0x07,0x07,0x06,0x06,0x05,0x03,0xf7,0x02,\r
-  0xf7,0xf7,0xf7,0x01,0x9e,0x97,0x97,0x97,0x9e,0x02,0x03,0x9f,0x9f,\r
-  0x03,0x02,0x9d,0x97,0x97,0x97,0x03,0xf7,0xf7,0x01,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0x01,\r
-  0x01,0x02,0x9f,0x9c,0x9a,0x98,0x98,0x97,0x97,0x98,0x98,0x9a,0x9e,\r
-  0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x03,0x97,0x97,0x02,\r
-  0x99,0x99,0x9a,0x9c,0x9b,0x97,0x9b,0x9c,0x9f,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x9f,0x9f,0x9e,0x9c,0x9a,0x94,0x9d,0x9c,0x9a,0x98,\r
-  0x03,0x94,0x9e,0xf7,0xf7,0xf7,0xf7,0xf7,0x9a,0x9a,0x9b,0x9c,0x9d,\r
-  0x2c,0x29,0x26,0x29,0x36,0xf7,0xf7,0x2d,0x2a,0x29,0x27,0x27,0x27,\r
-  0x2b,0xf7,0xf7,0xf7,0xf7,0x26,0x35,0x35,0x36,0x27,0x2b,0x2f,0x2f,\r
-  0x2f,0x2a,0x35,0x35,0x35,0x35,0x36,0x2a,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x2f,0x28,0x27,0x28,0x28,0x29,0x29,0x2a,0x2a,0x2b,0x2c,0x2e,0x2e,\r
-  0x2e,0x2e,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0x01,0x2f,0x2e,0x2d,0x2d,0x2e,0x2e,\r
-  0x2f,0x2f,0x2f,0x2f,0x2e,0x2d,0x2c,0x2c,0x2c,0x2d,0x2c,0x2d,0x2d,\r
-  0x2e,0x2d,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x9e,0x03,0x03,\r
-  0x9f,0x9f,0x04,0x03,0x03,0x02,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0xf7,0xf7,\r
-  0x03,0x03,0x02,0x04,0x05,0x06,0x06,0x06,0x06,0x06,0x05,0x03,0x02,\r
-  0x03,0x03,0x03,0x06,0x06,0x05,0x04,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x03,0x02,0xf7,0xf7,0xf7,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x02,0x04,0xf7,0xf7,0xf7,0x02,0x04,0x05,0x04,0x02,0x07,0x07,\r
-  0x07,0x07,0x07,0x05,0x02,0xf7,0xf7,0xf7,0xf7,0x03,0x06,0x07,0x07,\r
-  0x07,0x06,0x06,0x06,0x06,0x06,0x03,0xf7,0x9f,0xf7,0xf7,0xf7,0x03,\r
-  0x99,0x97,0x97,0x99,0x9f,0x02,0x02,0x02,0x02,0x9f,0x99,0x97,0x97,\r
-  0x99,0x03,0xf7,0xf7,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0x01,0x01,0x01,0x02,0x03,0x9f,0x9d,0x9a,0x99,0x98,\r
-  0x98,0x98,0x98,0x98,0x98,0x99,0x9b,0x9f,0x01,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0x02,0x99,0x97,0x98,0x02,0x99,0x99,0x9a,0x9c,\r
-  0x98,0x98,0x9b,0x9d,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,\r
-  0x9f,0x9d,0x9b,0x99,0x97,0x9d,0x9c,0x99,0x98,0x03,0x94,0x02,0xf7,\r
-  0xf7,0xf7,0xf7,0x99,0x99,0x9a,0x9c,0x9d,0x2d,0x2a,0x27,0x26,0x36,\r
-  0xf7,0xf7,0x2d,0x2c,0x2a,0x2a,0x28,0x27,0x27,0x25,0x28,0xf7,0xf7,\r
-  0xf7,0xf7,0x27,0x35,0x35,0x36,0x23,0x27,0x26,0x35,0x35,0x35,0x36,\r
-  0x02,0xf7,0xf7,0xf7,0xf7,0x2e,0x29,0x2a,0x2c,0x2c,0x2d,0x2d,0x2e,\r
-  0x2d,0x2c,0x2b,0x2b,0x2c,0x2c,0x2d,0x2e,0x2e,0x2e,0x2e,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x2f,0x2f,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,\r
-  0x2f,0x2e,0x2c,0x2c,0x2c,0x2c,0x2d,0x2e,0x2f,0x2f,0x2f,0xf6,0x02,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x9d,0x03,0x02,0x01,0x02,0x06,0x05,0x04,\r
-  0x03,0x03,0x02,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0xf7,0xf7,0x02,0x03,0x03,0x02,0x05,\r
-  0x06,0x06,0x06,0x06,0x06,0x06,0x05,0x02,0x03,0x03,0x02,0x06,0x06,\r
-  0x05,0x04,0x04,0x04,0x03,0x04,0x02,0x03,0x02,0x02,0x02,0x02,0xf7,\r
-  0xf7,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0xf7,0xf7,\r
-  0xf7,0x03,0x04,0x05,0x02,0x02,0x07,0x07,0x07,0x07,0x06,0x03,0xf7,\r
-  0xf7,0xf7,0xf7,0x04,0x07,0x07,0x07,0x06,0x05,0x05,0x04,0x05,0x05,\r
-  0x05,0x05,0x02,0x94,0x01,0xf7,0xf7,0x02,0x9e,0x97,0x97,0x97,0x98,\r
-  0x9c,0x9f,0x9f,0x9e,0x9a,0x97,0x97,0x94,0x9c,0x02,0xf7,0xf7,0x01,\r
-  0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0x01,0x01,0x01,0x02,\r
-  0x9f,0x9b,0x99,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x99,0x99,0x99,\r
-  0x9a,0x9d,0x9f,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x02,0x9f,0x9f,\r
-  0x9c,0x9b,0x9a,0x9a,0x9a,0x9a,0x9c,0x9f,0x02,0xf7,0xf7,0xf7,0xf7,\r
-  0x9e,0x97,0x97,0x99,0x03,0x99,0x9a,0x9a,0x9c,0x97,0x9a,0x9b,0x9e,\r
-  0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9e,0x9c,0x9b,0x97,\r
-  0x9b,0x9d,0x9c,0x98,0x99,0x9b,0x97,0x01,0xf7,0xf7,0xf7,0x99,0x99,\r
-  0x9a,0x9c,0x9b,0x2e,0x2c,0x29,0x26,0x25,0x28,0xf7,0x2f,0x2c,0x2c,\r
-  0x2c,0x2c,0x2c,0x2a,0x27,0x26,0x25,0x27,0x01,0xf7,0xf7,0x2f,0x35,\r
-  0x35,0x35,0x35,0x35,0x35,0x35,0x23,0xf7,0xf7,0xf7,0xf7,0x2c,0x2c,\r
-  0x2e,0x2d,0x2f,0xf6,0x2f,0xf6,0x01,0xf7,0xf7,0xf7,0x01,0x2e,0x2c,\r
-  0x2c,0x2c,0x2d,0x2e,0x2e,0x2e,0x2e,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,\r
-  0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2d,\r
-  0x2c,0x2c,0x2d,0x2e,0x2f,0x2f,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x9c,0x03,0x02,0x01,0xf7,0x07,0x07,0x06,0x05,0x04,0x03,0x03,0x02,\r
-  0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x02,0x02,0xf7,0xf7,0x02,0x03,0x02,0x03,0x05,0x06,0x06,0x06,0x06,\r
-  0x06,0x06,0x03,0x02,0x03,0x03,0xf7,0x06,0x06,0x05,0x04,0x04,0x03,\r
-  0x03,0x03,0x03,0x03,0x02,0x02,0x02,0xf7,0xf7,0xf7,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x03,0x04,0x06,0x02,\r
-  0x04,0x07,0x07,0x07,0x07,0x04,0xf7,0xf7,0xf7,0xf7,0x04,0x07,0x07,\r
-  0x07,0x06,0x04,0x03,0x02,0x02,0x03,0x04,0x05,0x05,0x05,0x94,0x9d,\r
-  0xf7,0xf7,0xf7,0x03,0x9a,0x97,0x97,0x97,0x97,0x99,0x99,0x98,0x97,\r
-  0x97,0x94,0x97,0x9f,0xf7,0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0xf7,0xf7,\r
-  0x01,0x01,0x01,0x01,0x01,0x03,0x9d,0x99,0x98,0x98,0x98,0x97,0x97,\r
-  0x97,0x97,0x97,0x98,0x98,0x98,0x99,0x99,0x99,0x9b,0x9f,0x02,0xf7,\r
-  0xf7,0x01,0x03,0x9e,0x9a,0x98,0x94,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x97,0x9c,0x02,0xf7,0xf7,0x03,0x99,0x97,0x94,0x9a,\r
-  0x9f,0x9a,0x9a,0x9a,0x9d,0x97,0x9a,0x9b,0x9e,0x9f,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x9f,0x9f,0x9e,0x9c,0x9b,0x94,0x9e,0x9d,0x9a,0x98,\r
-  0x9d,0x97,0x97,0x02,0xf7,0xf7,0x99,0x99,0x9a,0x9c,0x9d,0x2f,0x2d,\r
-  0x2a,0x27,0x25,0x36,0xf7,0x01,0x2e,0x2e,0x2f,0x2f,0xf6,0x2f,0x2f,\r
-  0x2b,0x27,0x25,0x23,0x27,0xf7,0xf7,0xf7,0x35,0x35,0x35,0x35,0x36,\r
-  0x23,0xf7,0xf7,0xf7,0x2f,0x2c,0x2f,0x2f,0xf6,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x2d,0x2c,0x2e,0x2b,0x2a,0x2b,0x2c,0x2e,\r
-  0x2e,0x2f,0x2f,0xf7,0xf7,0x2f,0x2f,0xf6,0x01,0x01,0x02,0xf6,0x2f,\r
-  0xf6,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0xf6,0x2f,0x2f,\r
-  0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2e,\r
-  0x2e,0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x94,0x99,0x9e,0x03,0x01,\r
-  0x07,0x07,0x07,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0xf7,0xf7,\r
-  0x03,0x03,0x02,0x04,0x06,0x06,0x06,0x06,0x06,0x06,0x05,0x02,0x03,\r
-  0x03,0x03,0x06,0x06,0x05,0x04,0x04,0x04,0x03,0x04,0x02,0x04,0x02,\r
-  0x02,0x02,0x02,0xf7,0xf7,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x02,0x04,0x04,0x06,0x02,0x06,0x07,0x07,0x07,0x04,\r
-  0xf7,0xf7,0xf7,0xf7,0x04,0x07,0x07,0x06,0x05,0x03,0x02,0x02,0x02,\r
-  0x02,0x02,0x02,0x03,0x04,0x05,0x9b,0x94,0x01,0xf7,0xf7,0x02,0x9f,\r
-  0x99,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x94,0x94,0x9a,0x03,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0x01,0x01,0x01,0x01,0x01,0x02,0x9c,\r
-  0x98,0x98,0x97,0x97,0x97,0x9b,0x9f,0x9f,0x03,0x03,0x03,0x03,0x03,\r
-  0x9f,0x9f,0x9e,0x9f,0x03,0x01,0x02,0x9f,0x9a,0x97,0x94,0x94,0x94,\r
-  0x94,0x97,0x98,0x99,0x99,0x99,0x9a,0x9a,0x9a,0x99,0x98,0x97,0x94,\r
-  0x94,0x9d,0xf7,0x02,0x9a,0x98,0x97,0x94,0x9d,0x9e,0x9a,0x9a,0x9a,\r
-  0x9d,0x94,0x9a,0x9c,0x9e,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,\r
-  0x9f,0x9d,0x9b,0x99,0x97,0x9e,0x9d,0x99,0x97,0x9f,0x97,0x94,0x9c,\r
-  0x03,0x99,0x99,0x99,0x9b,0x9d,0x2e,0x2f,0x2c,0x2a,0x27,0x25,0x25,\r
-  0xf7,0x2f,0x2f,0x2f,0xf6,0x01,0x01,0xf7,0x01,0xf6,0x2c,0x27,0x25,\r
-  0x25,0xf7,0xf7,0x2e,0x35,0x35,0x35,0x36,0xf7,0xf7,0xf7,0x2c,0x2e,\r
-  0x2f,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,\r
-  0x2c,0x28,0x27,0x29,0x2a,0x2a,0x2a,0x2c,0x2d,0x2f,0x2f,0xf7,0xf7,\r
-  0x2f,0x2e,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2f,0xf6,0x01,0x01,\r
-  0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0xf6,0xf6,0x2f,0x2f,0x2f,\r
-  0xf6,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2d,0x2f,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x94,0x94,0x94,0x98,0x9d,0x06,0x07,0x07,0x07,0x07,\r
-  0x06,0x06,0x04,0x03,0x03,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0xf7,0xf7,0x02,0x03,0x03,0x02,0x05,\r
-  0x06,0x06,0x06,0x06,0x06,0x06,0x04,0x02,0x03,0x03,0xf7,0x06,0x06,\r
-  0x05,0x04,0x04,0x03,0x03,0x04,0x03,0x03,0x02,0x02,0x02,0xf7,0xf7,\r
-  0xf7,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0x04,\r
-  0x05,0x05,0x02,0x06,0x07,0x07,0x06,0x02,0xf7,0xf7,0xf7,0x04,0x07,\r
-  0x07,0x06,0x05,0x03,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0x03,\r
-  0x04,0x9e,0x94,0x9c,0xf7,0xf7,0xf7,0x02,0x9f,0x99,0x97,0x94,0x94,\r
-  0x94,0x94,0x94,0x97,0x98,0x9f,0x01,0xf7,0xf7,0xf7,0xf7,0x01,0x01,\r
-  0x01,0x01,0x01,0x01,0xf7,0x03,0x99,0x98,0x97,0x94,0x9a,0x9f,0x9f,\r
-  0x9f,0x9e,0x9e,0x9e,0x9e,0x9e,0x9f,0x9f,0x03,0x03,0x02,0x02,0x9f,\r
-  0x9a,0x97,0x94,0x94,0x97,0x9a,0x9b,0x9c,0x9d,0x9d,0x9d,0x9e,0x9e,\r
-  0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9d,0x9c,0x9a,0x94,0x98,0x02,0x9f,\r
-  0x99,0x97,0x94,0x94,0x9f,0x9d,0x9a,0x9a,0x9a,0x9d,0x97,0x9b,0x9c,\r
-  0x9e,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9d,0x9b,0x97,\r
-  0x9a,0x9d,0x9c,0x99,0x97,0x9f,0x9a,0x94,0x94,0x98,0x98,0x99,0x9b,\r
-  0x9d,0x2d,0x2e,0x2f,0x2c,0x29,0x27,0x23,0x2c,0xf7,0x2f,0x2f,0x2f,\r
-  0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2a,0x26,0x26,0xf7,0xf7,0x27,\r
-  0x35,0x35,0x2e,0xf7,0xf7,0x2a,0x2f,0x2f,0xf7,0xf7,0xf7,0x2e,0x2a,\r
-  0x2b,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x2f,0x2f,0x2c,0x29,0x28,\r
-  0x27,0x28,0x2a,0x2b,0x2c,0x2f,0x2f,0xf7,0x01,0x2f,0x2e,0x2e,0x2f,\r
-  0x2f,0x2f,0x2e,0x2d,0x2f,0xf6,0x01,0x01,0xf7,0xf7,0xf7,0x01,0x01,\r
-  0x01,0x01,0x01,0x01,0x01,0x01,0x02,0xf6,0xf6,0xf6,0xf6,0xf6,0x2f,\r
-  0x2f,0x2f,0x2f,0x2f,0x2e,0x2d,0x2f,0xf7,0xf7,0xf7,0xf7,0x94,0x94,\r
-  0x94,0x94,0x94,0x02,0x04,0x06,0x07,0x07,0x07,0x07,0x06,0x05,0x04,\r
-  0x03,0x02,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x02,0x02,0xf7,0xf7,0x02,0x03,0x02,0x03,0x05,0x06,0x06,0x06,0x06,\r
-  0x06,0x05,0x02,0x03,0x03,0x03,0x06,0x06,0x05,0x04,0x04,0x04,0x02,\r
-  0x04,0x02,0x04,0x02,0x02,0x02,0xf7,0xf7,0xf7,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x03,0x04,0x05,0x05,0x02,0x07,0x07,\r
-  0x06,0x03,0xf7,0xf7,0x02,0x04,0x06,0x07,0x06,0x05,0x03,0x02,0xf7,\r
-  0xf7,0xf7,0x02,0xf7,0xf7,0xf7,0x02,0x03,0x04,0x9e,0x9c,0x94,0xf7,\r
-  0xf7,0xf7,0x01,0x01,0x03,0x9c,0x99,0x97,0x97,0x97,0x97,0x99,0x9d,\r
-  0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0x01,0x01,0x01,0xf7,0x01,0x9e,\r
-  0x98,0x97,0x94,0x99,0x9f,0x9f,0x9e,0x9d,0x9d,0x9c,0x9c,0x9a,0x9a,\r
-  0x98,0x99,0x9f,0x03,0x9f,0x9f,0x9b,0x97,0x97,0x98,0x9a,0x9b,0x9c,\r
-  0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,\r
-  0x9d,0x9d,0x9d,0x9d,0x9c,0x99,0x94,0x9f,0x03,0x99,0x98,0x98,0x99,\r
-  0x9f,0x9d,0x9a,0x9a,0x9a,0x9c,0x97,0x9b,0x9c,0x9f,0x03,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x9f,0x9e,0x9c,0x9b,0x94,0x9d,0x9d,0x9c,0x99,\r
-  0x97,0x9a,0x02,0x9f,0x97,0x97,0x97,0x97,0x9c,0x2d,0x2d,0x2e,0x2e,\r
-  0x2a,0x28,0x26,0x23,0xf7,0xf7,0x2f,0x2f,0x02,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0x2c,0x27,0x27,0xf7,0xf7,0x35,0x36,0xf7,0xf7,0x28,\r
-  0x2d,0x2f,0xf7,0xf7,0xf7,0x23,0x35,0x2c,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x28,0x27,0x27,0x27,0x29,0x2c,\r
-  0x2c,0x2f,0x2f,0xf7,0x01,0x2f,0x2e,0xf6,0xf7,0x01,0x02,0x2f,0x2e,\r
-  0x2e,0x2f,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,\r
-  0x01,0x01,0x01,0x01,0x01,0x02,0x02,0xf6,0xf6,0x2f,0x2f,0x2f,0x2f,\r
-  0x2e,0x2d,0x2e,0x01,0xf7,0xf7,0x94,0x94,0x94,0x94,0x94,0xf7,0xf7,\r
-  0x02,0x04,0x06,0x07,0x07,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x02,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0xf7,0xf7,\r
-  0x03,0x03,0x02,0x04,0x06,0x06,0x06,0x06,0x06,0x06,0x04,0x02,0x03,\r
-  0x03,0xf7,0x06,0x05,0x05,0x04,0x04,0x03,0x03,0x04,0x03,0x03,0x02,\r
-  0x02,0x02,0xf7,0xf7,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x03,0x03,0x04,0x05,0x05,0x02,0x07,0x07,0x04,0xf7,0xf7,0x02,0x05,\r
-  0x07,0x07,0x06,0x05,0x03,0x02,0xf7,0xf7,0xf7,0x02,0x03,0x03,0x03,\r
-  0x02,0xf7,0x02,0x03,0x9e,0x9e,0x94,0x9e,0xf7,0xf7,0xf7,0x01,0x01,\r
-  0x02,0x9f,0x9d,0x9b,0x9b,0x9c,0x9f,0x03,0x01,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0xf7,0xf7,0x01,0x9c,0x97,0x97,0x94,0x9e,0x9f,0x9d,\r
-  0x9d,0x9a,0x99,0x99,0x99,0x99,0x99,0x98,0x98,0x94,0x97,0x9e,0x9e,\r
-  0x9b,0x97,0x97,0x99,0x9a,0x9a,0x9a,0x9a,0x9b,0x9b,0x9b,0x9b,0x9b,\r
-  0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9c,0x9c,\r
-  0x9c,0x9b,0x97,0x9b,0x02,0x9d,0x9b,0x9b,0x9c,0x9f,0x9c,0x9a,0x9a,\r
-  0x9a,0x9b,0x97,0x9b,0x9d,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,\r
-  0x9f,0x9d,0x9b,0x9a,0x94,0x9e,0x9d,0x9c,0x99,0x98,0x97,0x98,0x99,\r
-  0x99,0x99,0x97,0x97,0xf6,0x2d,0x2e,0x2f,0x2d,0x2a,0x27,0x25,0x36,\r
-  0xf7,0xf6,0x2f,0x2f,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,\r
-  0x2a,0x2a,0xf7,0x2c,0x28,0xf7,0x27,0x2c,0x2e,0x02,0xf7,0xf7,0x25,\r
-  0x2a,0xf7,0xf7,0xf7,0x02,0xf6,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x2e,0x25,0x26,0x27,0x28,0x2c,0x2c,0x2f,0xf6,0x01,\r
-  0x01,0x2d,0x2f,0xf7,0xf7,0xf7,0xf7,0xf6,0x2e,0x2e,0x2f,0x2f,0xf6,\r
-  0xf6,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,\r
-  0x01,0x01,0x01,0x01,0x02,0xf6,0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2f,\r
-  0xf7,0x97,0x94,0x94,0x94,0x94,0xf7,0xf7,0xf7,0xf7,0x03,0x05,0x07,\r
-  0x07,0x07,0x07,0x06,0x04,0x03,0x02,0x02,0x02,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0xf7,0xf7,0x02,0x03,0x03,0x02,0x05,\r
-  0x06,0x06,0x06,0x06,0x06,0x05,0x03,0x02,0x03,0x03,0x04,0x06,0x05,\r
-  0x04,0x04,0x04,0x02,0x04,0x03,0x04,0x02,0x02,0x02,0xf7,0xf7,0xf7,\r
-  0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x03,0x04,0x05,0x05,\r
-  0x03,0x07,0x06,0xf7,0xf7,0x03,0x05,0x06,0x06,0x06,0x04,0x03,0x02,\r
-  0xf7,0xf7,0x02,0x03,0x04,0x05,0x05,0x04,0x03,0x02,0x02,0x03,0x9c,\r
-  0x9e,0x9a,0x94,0xf7,0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0x02,0x03,0x03,\r
-  0x03,0x02,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,\r
-  0x9c,0x97,0x97,0x94,0x9f,0x9e,0x9d,0x9a,0x98,0x94,0x94,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x97,0x97,0x99,0x9b,0x98,0x97,0x98,0x99,0x99,\r
-  0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9b,0x9b,0x99,0x97,\r
-  0x02,0x9f,0x9e,0x9d,0x9d,0x9f,0x9c,0x9a,0x9a,0x9b,0x99,0x99,0x9b,\r
-  0x9d,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9d,0x9b,0x99,\r
-  0x98,0x9e,0x9d,0x9c,0x9a,0x99,0x98,0x99,0x99,0x99,0x9a,0x99,0xf7,\r
-  0x01,0x2d,0x2e,0x2e,0x2c,0x29,0x27,0x27,0x36,0xf7,0x2f,0x2e,0x2f,\r
-  0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0x2c,0x2e,0xf7,0x36,\r
-  0x26,0x29,0x2e,0xf7,0xf7,0xf7,0x27,0x2a,0xf7,0xf7,0xf7,0xf6,0x2f,\r
-  0x2f,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,\r
-  0x23,0x26,0x27,0x29,0x2c,0x2e,0x2f,0x01,0xf7,0x2f,0x2e,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x2f,0x2f,0x2e,0x2f,0x2f,0x2f,0x2f,0xf6,0xf6,0xf6,\r
-  0xf6,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,\r
-  0x01,0x01,0x01,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0x99,0x98,0x98,0x94,\r
-  0x94,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x04,0x06,0x07,0x07,0x07,0x06,\r
-  0x05,0x03,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x02,0x02,0xf7,0xf7,0x02,0x03,0x02,0x03,0x05,0x06,0x06,0x06,0x06,\r
-  0x06,0x05,0x02,0x03,0x03,0x02,0x06,0x05,0x05,0x04,0x04,0x04,0x03,\r
-  0x04,0x03,0x03,0x02,0x02,0x02,0xf7,0xf7,0x02,0x02,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x02,0x03,0x04,0x05,0x06,0x03,0x07,0x03,0xf7,0x03,\r
-  0x05,0x06,0x06,0x06,0x04,0x03,0x02,0xf7,0xf7,0x02,0x04,0x05,0x05,\r
-  0x06,0x06,0x05,0x05,0x03,0xf7,0x02,0x9a,0x9e,0x9e,0x94,0x9f,0xf7,\r
-  0xf7,0xf7,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x9d,0x97,0x97,0x94,0x9f,0x9e,\r
-  0x9d,0x99,0x97,0x94,0x94,0x9c,0x99,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x98,0x99,0x97,0x94,0x97,0x98,0x99,0x99,0x9a,0x9b,0x9b,0x9b,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x94,0x02,0x03,0x9f,0x9e,\r
-  0x9e,0x9f,0x9b,0x9a,0x9a,0x9c,0x97,0x99,0x9b,0x9e,0x9f,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x9f,0x9f,0x9c,0x9b,0x97,0x99,0x9e,0x9d,0x9c,\r
-  0x9c,0x9b,0x9a,0x9a,0x9a,0x9a,0x9b,0xf6,0xf7,0xf7,0x2e,0x2e,0x2d,\r
-  0x2a,0x28,0x2a,0x2e,0x36,0xf7,0x2e,0x2d,0xf6,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0x2f,0x2e,0xf7,0x2c,0x26,0x2d,0x2f,0xf7,0xf7,\r
-  0xf7,0x36,0xf7,0xf7,0xf7,0x01,0x2f,0x2d,0x2f,0x01,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf6,0x23,0x27,0x28,0x2a,\r
-  0x2a,0x2f,0x2f,0x01,0x01,0x2f,0x2f,0xf7,0xf7,0xf7,0xf7,0x01,0x2f,\r
-  0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0xf6,0xf6,0xf6,0xf6,\r
-  0xf6,0xf6,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,\r
-  0x01,0xf7,0xf7,0xf7,0x97,0x97,0x97,0x99,0x9a,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x03,0x06,0x07,0x07,0x07,0x06,0x05,0x04,0x03,0x02,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0xf7,0xf7,\r
-  0x03,0x03,0x02,0x04,0x06,0x06,0x06,0x06,0x06,0x06,0x03,0x02,0x03,\r
-  0x03,0x03,0x06,0x05,0x04,0x04,0x04,0x02,0x03,0x03,0x04,0x02,0x02,\r
-  0x02,0xf7,0xf7,0xf7,0x03,0xf7,0xf7,0xf7,0x02,0xf7,0xf7,0x02,0x03,\r
-  0x04,0x05,0x06,0x04,0x07,0xf7,0x02,0x05,0x06,0x06,0x05,0x03,0x02,\r
-  0x02,0xf7,0xf7,0x02,0x04,0x05,0x06,0x06,0x06,0x06,0x06,0x05,0x04,\r
-  0x02,0x02,0x9a,0x9d,0x9e,0x9a,0x97,0xf7,0xf7,0xf7,0xf7,0x01,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x9f,0x97,0x97,0x94,0x9f,0x9e,0x9d,0x99,0x94,0x94,0x9d,0x9b,\r
-  0x94,0x97,0x9a,0x9b,0x9a,0x9a,0x9a,0x99,0x99,0x97,0x97,0x94,0x94,\r
-  0x94,0x97,0x99,0x9b,0x9b,0x9b,0x9a,0x9a,0x9a,0x9a,0x99,0x99,0x99,\r
-  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x94,0x02,0x03,0x9f,0x9e,0x9e,0x9f,0x9a,0x9a,\r
-  0x9a,0x9d,0x97,0x9a,0x9c,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,\r
-  0x9f,0x9e,0x9c,0x9b,0x97,0x97,0x9d,0x9d,0x9d,0x9c,0x9b,0x9b,0x9c,\r
-  0x9c,0x9c,0x2e,0x2f,0xf7,0xf7,0x2f,0x2f,0x2c,0x2a,0x2f,0xf7,0x02,\r
-  0x27,0xf7,0x2c,0x2c,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,\r
-  0x2f,0x2f,0xf7,0x27,0x2f,0xf6,0xf7,0xf7,0x2f,0x36,0xf7,0xf7,0x02,\r
-  0x02,0xf6,0x2f,0x2f,0xf6,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0xf7,0x2d,0x25,0x28,0x29,0x2a,0x2a,0x2f,0x2f,0x01,\r
-  0x01,0x2f,0x2f,0xf7,0xf7,0xf7,0xf7,0x2f,0x2e,0x2d,0x2e,0x2f,0x2f,\r
-  0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,\r
-  0xf6,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0xf7,0x01,0x01,0x9a,\r
-  0x9a,0x99,0x97,0x94,0x02,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,\r
-  0x05,0x06,0x07,0x07,0x06,0x05,0x04,0x03,0x02,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0xf7,0xf7,0x02,0x03,0x03,0x02,0x05,\r
-  0x06,0x06,0x06,0x06,0x06,0x05,0x02,0x03,0x03,0x02,0x06,0x05,0x05,\r
-  0x04,0x04,0x04,0x02,0x04,0x03,0x03,0x02,0x02,0x02,0xf7,0xf7,0x02,\r
-  0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x03,0x04,0x05,0x06,0x06,0x06,\r
-  0xf7,0x04,0x05,0x05,0x04,0x03,0x02,0x02,0xf7,0xf7,0x02,0x04,0x05,\r
-  0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x05,0x03,0xf7,0x99,0x9a,0x9e,\r
-  0x9e,0x94,0x9f,0xf7,0xf7,0xf7,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x9f,0x97,0x97,0x94,0x9d,\r
-  0x9e,0x9d,0x99,0x94,0x94,0x9f,0x98,0x97,0x9c,0x9c,0x9a,0x99,0x98,\r
-  0x97,0x97,0x97,0x97,0x97,0x94,0x94,0x94,0x94,0x98,0x9a,0x9c,0x9b,\r
-  0x9a,0x9a,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,\r
-  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x9a,0x9b,0x9a,0x9a,0x9a,\r
-  0x97,0x03,0x03,0x9e,0x9e,0x9d,0x9f,0x9a,0x9a,0x9a,0x9d,0x94,0x9b,\r
-  0x9c,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9d,0x9c,0x9b,\r
-  0x98,0x94,0x9a,0x9d,0x9d,0x97,0x97,0x98,0x99,0x9d,0x2e,0x2e,0x2e,\r
-  0x01,0xf7,0x2f,0x2f,0x2a,0xf7,0xf7,0xf7,0x27,0x2c,0xf7,0x2a,0x2c,\r
-  0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0xf6,0xf6,0xf7,0x2a,0x2c,\r
-  0x01,0xf7,0xf7,0x01,0x36,0xf7,0xf7,0x01,0x01,0x02,0xf7,0xf6,0x2f,\r
-  0x02,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0xf6,0x02,0x01,0x01,0xf7,\r
-  0x27,0x25,0x27,0x2a,0x2c,0x2b,0xf6,0xf6,0x01,0x01,0x2f,0x2f,0x02,\r
-  0x01,0x01,0x2f,0x2e,0x2d,0x2d,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,\r
-  0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,\r
-  0x2f,0xf6,0xf6,0xf6,0x02,0x01,0x01,0x9a,0x9b,0x9c,0x9c,0x9a,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x04,0x06,0x07,0x07,\r
-  0x06,0x05,0x04,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0x02,0x02,0xf7,0xf7,0x02,0x03,0x02,0x03,0x05,0x06,0x06,0x06,0x06,\r
-  0x06,0x04,0x02,0x03,0x03,0xf7,0x06,0x05,0x04,0x04,0x04,0x02,0x03,\r
-  0x04,0x04,0x03,0x02,0x02,0xf7,0xf7,0xf7,0x03,0xf7,0xf7,0xf7,0x02,\r
-  0xf7,0x02,0x03,0x04,0x04,0x06,0x06,0x04,0x02,0x04,0x04,0x04,0x03,\r
-  0x02,0x02,0xf7,0xf7,0x02,0x04,0x05,0x06,0x06,0x06,0x06,0x06,0x06,\r
-  0x06,0x06,0x06,0x04,0x02,0x98,0x9a,0x9d,0x9e,0x99,0x97,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x02,0x98,0x97,0x94,0x98,0x9e,0x9d,0x9a,0x94,0x97,0x03,\r
-  0x97,0x9a,0x9e,0x9e,0x9c,0x9a,0x98,0x98,0x99,0x99,0x98,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x99,0x9c,0x9c,0x9a,0x9a,0x99,0x99,0x99,0x99,\r
-  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,\r
-  0x99,0x99,0x99,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x97,0x03,0x03,0x9e,\r
-  0x9d,0x9c,0x9f,0x9a,0x9a,0x9a,0x9d,0x97,0x9b,0x9d,0x9f,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x9f,0x9f,0x9d,0x9c,0x9b,0x99,0x97,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x97,0x2f,0x2d,0x2f,0x2e,0x01,0x01,0x2f,0x2c,\r
-  0x2f,0xf7,0xf7,0x2d,0x35,0xf7,0xf7,0x2a,0x2c,0x01,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x02,0x02,0xf7,0x02,0x27,0xf7,0xf7,0xf7,0xf7,0x23,\r
-  0xf7,0xf7,0x01,0xf7,0x01,0x01,0xf7,0xf7,0x01,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0x2f,0x2f,0xf6,0x01,0x02,0xf7,0x23,0x27,0x28,0x2a,\r
-  0x2c,0x2c,0xf6,0x02,0x01,0x02,0x2f,0x2e,0x2f,0x2f,0x2f,0x2d,0x2c,\r
-  0x2c,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,0x2c,0x2c,0x2c,0x2c,\r
-  0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2e,0x2f,0x2f,0x2f,\r
-  0x2f,0x2f,0x9d,0x9d,0x9d,0x9d,0x9d,0x04,0x02,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x04,0x06,0x07,0x07,0x06,0x05,0x04,0x02,\r
-  0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,0xf7,0xf7,\r
-  0x03,0x03,0x02,0x04,0x06,0x06,0x06,0x06,0x06,0x05,0x02,0x03,0x03,\r
-  0x02,0x05,0x05,0x05,0x04,0x04,0x04,0x02,0x04,0x03,0x04,0x02,0x02,\r
-  0xf7,0xf7,0xf7,0x03,0x02,0xf7,0xf7,0x02,0xf7,0x02,0x03,0x04,0x04,\r
-  0x05,0x06,0x04,0x02,0x04,0x04,0x03,0x02,0x02,0xf7,0xf7,0x03,0x04,\r
-  0x05,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x05,0x03,\r
-  0x97,0x99,0x9b,0x9e,0x9d,0x94,0x03,0xf7,0xf7,0xf7,0xf7,0x01,0x01,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x9a,0x97,0x94,\r
-  0x94,0x9f,0x9d,0x9a,0x94,0x97,0x02,0x97,0x9a,0x9f,0x9d,0x9a,0x9b,\r
-  0x9d,0x9e,0x9b,0x9b,0x9b,0x9b,0x98,0x94,0x94,0x94,0x94,0x94,0x99,\r
-  0x9c,0x9c,0x9a,0x99,0x99,0x99,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x99,0x99,\r
-  0x99,0x99,0x9a,0x9a,0x9a,0x98,0x03,0x9f,0x9c,0x9a,0x9c,0x9f,0x9a,\r
-  0x9a,0x9b,0x9a,0x98,0x9b,0x9e,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x9f,0x9f,0x9d,0x9c,0x9b,0x9b,0x9a,0x99,0x97,0x97,0x97,0x97,0x94,\r
-  0xf7,0xf6,0x2f,0xf6,0x2f,0xf7,0x01,0x01,0x27,0xf7,0xf7,0xf7,0x35,\r
-  0x35,0xf7,0x2f,0x28,0x2c,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0x02,\r
-  0x01,0xf7,0x28,0xf7,0xf6,0xf7,0xf7,0x2c,0xf7,0xf7,0x01,0xf7,0xf7,\r
-  0x02,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x2f,0xf6,\r
-  0xf6,0xf6,0x01,0x02,0xf7,0x23,0x27,0x2a,0x2a,0x2a,0x2f,0xf6,0x01,\r
-  0x01,0xf6,0x2f,0x2e,0x2e,0x2e,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,\r
-  0x2c,0x2c,0x2b,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,\r
-  0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2c,0x2c,0x2c,0x2e,0x9c,0x9a,0x9a,\r
-  0x9b,0x9c,0x04,0x04,0x03,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0x04,0x06,0x07,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x02,0xf7,0xf7,0x02,0x04,0x03,0x02,0x05,\r
-  0x06,0x06,0x06,0x06,0x06,0x04,0x02,0x03,0x03,0xf7,0x06,0x05,0x04,\r
-  0x04,0x04,0x03,0x03,0x04,0x04,0x03,0x02,0xf7,0xf7,0xf7,0xf7,0x03,\r
-  0xf7,0xf7,0xf7,0x02,0x02,0x03,0x04,0x04,0x05,0x06,0x03,0x03,0x04,\r
-  0x03,0x03,0x02,0xf7,0x02,0x03,0x05,0x05,0x06,0x06,0x06,0x06,0x06,\r
-  0x06,0x06,0x06,0x06,0x06,0x06,0x05,0x04,0x97,0x98,0x9a,0x9e,0x9e,\r
-  0x97,0x99,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,\r
-  0xf7,0xf7,0xf7,0x01,0x9c,0x97,0x97,0x94,0x9f,0x9d,0x9b,0x98,0x94,\r
-  0x02,0x99,0x99,0x9e,0x9a,0x98,0x99,0x9a,0x9c,0x9e,0x9e,0x9c,0x9c,\r
-  0x9c,0x99,0x94,0x94,0x94,0x94,0x94,0x99,0x9c,0x9c,0x9a,0x99,0x99,\r
-  0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9c,0x9c,0x9d,0x9d,0x9c,0x9b,0x99,0x98,0x99,0x9a,0x9a,\r
-  0x9a,0x97,0x02,0x9e,0x9b,0x99,0x9d,0x9e,0x9a,0x9a,0x9b,0x98,0x99,\r
-  0x9c,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9d,0x9c,\r
-  0x9b,0x9b,0x9b,0x99,0x99,0x99,0x98,0x97,0x97,0x97,0x9a,0x9b,0x99,\r
-  0x9c,0x9a,0x9a,0x99,0x02,0x97,0x97,0x02,0xf7,0x01,0x94,0x9e,0x9f,\r
-  0x9d,0x9a,0x99,0x98,0x98,0x99,0x9a,0x9a,0x9a,0x94,0x9f,0x97,0x9b,\r
-  0x97,0x94,0x97,0x97,0x99,0x9a,0x98,0x98,0x99,0x99,0x97,0x98,0x94,\r
-  0x94,0x94,0x97,0x97,0x94,0x98,0x9c,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x98,0x02,0x9f,0x9e,0x9e,0x9f,0x9b,0x9a,0x9a,0x9a,0x9b,0x9c,0x9d,\r
-  0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9f,0x9f,0x9f,0x9f,0x9f,\r
-  0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,\r
-  0x9f,0x9f,0x9f,0x9e,0x9c,0x99,0x97,0x97,0x97,0x99,0x9a,0x9c,0x9d,\r
-  0x9a,0x97,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x9d,0x02,0xf7,\r
-  0xf7,0x02,0x9f,0x9c,0x99,0x98,0x97,0x94,0x94,0x94,0x94,0x87,0x87,\r
-  0x98,0x99,0x87,0x87,0x99,0x9b,0x99,0x9a,0x9f,0x03,0x03,0x03,0x03,\r
-  0x9f,0x99,0x99,0x9a,0x99,0x9e,0x9f,0x9e,0x9d,0x9d,0x9d,0x97,0x9d,\r
-  0x9a,0x9c,0x99,0x97,0x97,0x87,0x87,0x9a,0x99,0x97,0x87,0x98,0x99,\r
-  0x9a,0x9c,0x9d,0x9e,0x03,0x9d,0x99,0x9b,0x9a,0x99,0x97,0x98,0x9b,\r
-  0x9f,0x9f,0x03,0x03,0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x03,\r
-  0x03,0x03,0x9e,0x99,0x97,0x99,0x9c,0x9e,0x9d,0x94,0x03,0xf7,0xf7,\r
-  0xf7,0xf7,0x01,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0x9e,0x97,\r
-  0x97,0x94,0x9a,0x9e,0x9b,0x99,0x94,0x03,0x9e,0x97,0x9d,0x9a,0x97,\r
-  0x97,0x98,0x9a,0x9c,0x9e,0x9f,0x9d,0x9c,0x9b,0x9a,0x94,0x94,0x94,\r
-  0x94,0x94,0x99,0x9c,0x9b,0x9a,0x99,0x99,0x99,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9b,0x9c,0x9d,0x9e,\r
-  0x9f,0x9f,0x9f,0x9e,0x9c,0x99,0x98,0x9a,0x9a,0x9b,0x97,0x02,0x9d,\r
-  0x9a,0x99,0x9e,0x9c,0x9a,0x9a,0x9c,0x94,0x9a,0x9c,0x9f,0x03,0x03,\r
-  0x03,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9e,0x9d,0x9d,0x9c,0x9a,0x9a,\r
-  0x9a,0x9a,0x99,0x99,0x99,0x99,0x9b,0x99,0x9a,0x9b,0x9a,0x99,0x9a,\r
-  0x9a,0x97,0x03,0xf7,0xf7,0x03,0x94,0x9f,0x03,0x9e,0x9a,0x99,0x99,\r
-  0x99,0x9a,0x9b,0x9a,0x97,0x9f,0x9a,0x9a,0x97,0x94,0x94,0x94,0x97,\r
-  0x99,0x98,0x97,0x98,0x9a,0x94,0x9f,0x9a,0x94,0x94,0x94,0x98,0x94,\r
-  0x97,0x9b,0x9b,0x9a,0x99,0x9a,0x9a,0x9a,0x9a,0x9e,0x9f,0x9e,0x9b,\r
-  0x9c,0x9f,0x9a,0x9a,0x9a,0x9a,0x9c,0x9d,0x9e,0x9e,0x9e,0x9f,0x9f,\r
-  0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9e,0x9e,0x9e,\r
-  0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9a,\r
-  0x97,0x94,0x97,0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9a,0x97,0x94,0x94,\r
-  0x94,0x94,0x94,0x94,0x94,0x94,0x9d,0x02,0xf7,0x01,0x02,0x9f,0x9c,\r
-  0x9a,0x98,0x97,0x94,0x94,0x94,0x87,0x87,0x97,0x98,0x98,0x87,0x97,\r
-  0x9a,0x9a,0x99,0x9d,0x9f,0x03,0x03,0x03,0x03,0x9e,0x98,0x9a,0x9a,\r
-  0x97,0x03,0x9f,0x9e,0x9c,0x9d,0x9c,0x9a,0x9d,0x9c,0x9a,0x98,0x97,\r
-  0x97,0x87,0x99,0x9b,0x98,0x97,0x98,0x99,0x9a,0x9b,0x9d,0x9e,0x9f,\r
-  0x9f,0x99,0x9a,0x9a,0x99,0x97,0x99,0x9e,0x9f,0x03,0x03,0x03,0x03,\r
-  0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x9f,0x9b,0x97,\r
-  0x99,0x9a,0x9e,0x9e,0x94,0x9b,0xf7,0xf7,0xf7,0xf7,0xf7,0x01,0xf7,\r
-  0xf7,0xf7,0xf7,0xf7,0xf7,0x03,0x98,0x97,0x94,0x97,0x9e,0x9c,0x9a,\r
-  0x94,0x9e,0x02,0x94,0x9c,0x9a,0x97,0x94,0x97,0x97,0x9a,0x9c,0x9e,\r
-  0x9e,0x9e,0x9c,0x9b,0x9a,0x97,0x94,0x94,0x94,0x94,0x99,0x9c,0x9c,\r
-  0x9a,0x99,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,\r
-  0x9a,0x9a,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,\r
-  0x9e,0x9a,0x98,0x9a,0x9a,0x9b,0x94,0x02,0x9b,0x9a,0x99,0x9f,0x9a,\r
-  0x9a,0x9a,0x9d,0x94,0x9b,0x9d,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,\r
-  0x03,0x9f,0x9f,0x9f,0x9e,0x9e,0x9b,0x9b,0x9b,0x9b,0x9b,0x9a,0x9a,\r
-  0x9a,0x9a,0x9c,0x97,0x9c,0x9c,0x9b,0x98,0x9f,0x97,0x9d,0x01,0xf7,\r
-  0xf7,0x9d,0x94,0x9f,0x03,0x9e,0x9a,0x9a,0x9a,0x9b,0x9c,0x9b,0x97,\r
-  0x9f,0x9e,0x9b,0x99,0x98,0x94,0x94,0x94,0x94,0x94,0x97,0x97,0x99,\r
-  0x99,0x9a,0x01,0x9d,0x94,0x94,0x97,0x97,0x94,0x99,0x9c,0x9a,0x99,\r
-  0x99,0x9a,0x9a,0x9b,0x98,0x02,0x9c,0x99,0x97,0x9a,0x9f,0x9a,0x9a,\r
-  0x9a,0x9c,0x9d,0x9e,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,\r
-  0x9f,0x9f,0x9e,0x9e,0x9d,0x9c,0x9c,0x9b,0x9a,0x9b,0x9c,0x9d,0x9d,\r
-  0x9e,0x9d,0x9c,0x9c,0x9c,0x9d,0x9d,0x9a,0x94,0x94,0x97,0x9a,0x9a,\r
-  0x9c,0x9c,0x9c,0x9d,0x9d,0x9a,0x97,0x94,0x94,0x94,0x94,0x94,0x94,\r
-  0x94,0x97,0x9d,0x02,0xf7,0x01,0x02,0x9e,0x9c,0x99,0x97,0x97,0x94,\r
-  0x87,0x87,0x87,0x87,0x97,0x99,0x87,0x87,0x97,0x9c,0x9a,0x99,0x9f,\r
-  0x03,0x03,0x03,0x03,0x9f,0x9b,0x99,0x9a,0x99,0x9a,0x9f,0x9e,0x9d,\r
-  0x9d,0x9d,0x97,0x9c,0x9b,0x9d,0x99,0x97,0x97,0x87,0x97,0x9c,0x9a,\r
-  0x99,0x97,0x99,0x9a,0x9c,0x9d,0x9d,0x9f,0x9f,0x98,0x9a,0x9a,0x99,\r
-  0x97,0x9c,0x9f,0x03,0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x02,\r
-  0x02,0x02,0x02,0x03,0x03,0x03,0x9e,0x98,0x98,0x9a,0x9c,0x9e,0x9b,\r
-  0x94,0x02,0xf7,0xf7,0xf7,0xf7,0x01,0xf7,0xf7,0xf7,0xf7,0xf7,0x02,\r
-  0x9a,0x97,0x97,0x94,0x9e,0x9d,0x9b,0x94,0x98,0xf7,0x97,0x9a,0x9a,\r
-  0x97,0x94,0x94,0x94,0x97,0x99,0x9c,0x9e,0x9e,0x9f,0x9c,0x9a,0x9a,\r
-  0x97,0x94,0x94,0x94,0x94,0x99,0x9c,0x9c,0x9a,0x99,0x99,0x99,0x9a,\r
-  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9c,0x9c,\r
-  0x9d,0x9e,0x9f,0x9f,0x03,0x03,0x03,0x03,0x9f,0x9f,0x9a,0x98,0x9a,\r
-  0x9a,0x9b,0x94,0x03,0x9a,0x99,0x9a,0x9f,0x9a,0x9a,0x9a,0x9b,0x97,\r
-  0x9b,0x9e,0x9f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x9f,0x9f,\r
-  0x9f,0x9f\r
-  };\r
-\r
diff --git a/16/v2/source/verge/MAPED/COLSTUFF.H b/16/v2/source/verge/MAPED/COLSTUFF.H
deleted file mode 100755 (executable)
index ecb2b6a..0000000
+++ /dev/null
@@ -1,269 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#define SPRITES_LEN 3200\r
-\r
- static unsigned char sprites_[]=\r
- {\r
-  0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x73,0x70,0x73,0x78,0x00,\r
-  0x00,0x00,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x73,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x00,\r
-  0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x73,0x00,0x73,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x73,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x78,0x73,0x70,0x73,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,\r
-  0x00,0x00,0x00,0x00,0x00,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x1f,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x00,\r
-  0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x73,0x00,0x73,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x00,0x00,0x00,0x00,\r
-  0x00,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x73,0x70,0x73,\r
-  0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,\r
-  0x00,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x00,0x73,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x00,0x00,0x70,0x00,\r
-  0x00,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x73,0x00,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x23,\r
-  0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,\r
-  0x25,0x26,0x26,0x25,0x23,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x24,0x28,0x27,0x27,0x25,0x23,0x23,0x23,0x23,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x24,0x28,0x28,0x26,0x25,0x23,0x23,0x22,0x23,0x23,\r
-  0x23,0x00,0x00,0x00,0x00,0x00,0x24,0x28,0x27,0x27,0x25,0x23,0x22,\r
-  0xe0,0x21,0x23,0x22,0x00,0x00,0x00,0x00,0x26,0x28,0x28,0x28,0x26,\r
-  0x27,0x25,0x23,0x21,0x23,0x24,0x25,0x23,0x00,0x00,0x00,0x26,0x2a,\r
-  0x28,0x28,0x27,0x27,0x26,0x25,0x23,0x24,0x25,0x26,0x22,0x00,0x00,\r
-  0x00,0x26,0x2a,0x2a,0x28,0x27,0x27,0x26,0x26,0x25,0x25,0x27,0x27,\r
-  0x23,0x00,0x00,0x00,0x00,0xeb,0x2a,0x2a,0x28,0x27,0x26,0x27,0x26,\r
-  0x27,0x27,0xeb,0x00,0x00,0x00,0x00,0xeb,0xf2,0x2a,0x2a,0x28,0x28,\r
-  0xf2,0x27,0x27,0x27,0x28,0xf2,0xeb,0x00,0x00,0x00,0xeb,0xf1,0xf2,\r
-  0x2a,0x2a,0xf2,0xeb,0xf1,0x28,0x28,0xf2,0xf1,0xeb,0x00,0x00,0xeb,\r
-  0xf2,0xf4,0xeb,0x27,0x26,0xf2,0xf1,0xee,0xeb,0x25,0xeb,0xf4,0xf2,\r
-  0xeb,0x00,0xeb,0xf1,0xf2,0xa1,0xeb,0xf2,0xeb,0xee,0xeb,0xf2,0xeb,\r
-  0xa1,0xf2,0xf1,0xeb,0x00,0x00,0xeb,0xf2,0xf2,0xeb,0xf2,0xf1,0xf2,\r
-  0xf1,0xf3,0xf0,0xf2,0xf2,0xeb,0x00,0x00,0x00,0x00,0xeb,0xeb,0x00,\r
-  0x00,0xeb,0x4e,0xeb,0x00,0x00,0xeb,0xeb,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0xf2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x90,0x90,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x92,0x93,0x96,0x96,0x94,\r
-  0x90,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x92,0x98,0x97,\r
-  0x96,0x94,0x91,0x91,0x91,0x91,0x00,0x00,0x00,0x00,0x00,0x00,0x92,\r
-  0x98,0x98,0x96,0x94,0x91,0x91,0x8c,0x92,0x91,0x90,0x00,0x00,0x00,\r
-  0x00,0x00,0x92,0x98,0x97,0x96,0x94,0x91,0x8d,0x8b,0x8c,0x91,0x90,\r
-  0x00,0x00,0x00,0x00,0x94,0x98,0x98,0x98,0x96,0x96,0x94,0x91,0x8d,\r
-  0x92,0x91,0x94,0x90,0x00,0x00,0x00,0x94,0x9a,0x98,0x98,0x97,0x96,\r
-  0x96,0x94,0x91,0x91,0x94,0x96,0x90,0x00,0x00,0x00,0x94,0x9a,0x9a,\r
-  0x98,0x98,0x96,0x96,0x96,0x94,0x94,0x96,0x97,0x90,0x00,0x00,0x00,\r
-  0x00,0xeb,0x9a,0x99,0x98,0x98,0x96,0x96,0x96,0x96,0x97,0xeb,0x00,\r
-  0x00,0x00,0x00,0xeb,0xf2,0x9a,0x9a,0x98,0x98,0xf2,0x97,0x98,0x97,\r
-  0x98,0xf2,0xeb,0x00,0x00,0x00,0xeb,0xf1,0xf2,0x9a,0x99,0xf2,0xeb,\r
-  0xf1,0x98,0x98,0xf2,0xf1,0xeb,0x00,0x00,0xeb,0xf2,0xf4,0xeb,0x94,\r
-  0x95,0xf2,0xf1,0xee,0xeb,0x92,0xeb,0xf4,0xf2,0xeb,0x00,0xeb,0xf1,\r
-  0xf2,0xa1,0xeb,0xf2,0xeb,0xee,0xeb,0xf2,0xeb,0xa1,0xf2,0xf1,0xeb,\r
-  0x00,0x00,0xeb,0xf2,0xf2,0xeb,0xf2,0xf1,0xf2,0xf1,0xf2,0xeb,0xf2,\r
-  0xf2,0xeb,0x00,0x00,0x00,0x00,0xeb,0xeb,0x00,0x00,0xeb,0x4e,0xeb,\r
-  0x00,0x00,0xeb,0xeb,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0xf2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x5a,0x5a,0x5a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x5c,0x5c,0x61,0x61,0x5d,0x5a,0x5a,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x5c,0x63,0x61,0x61,0x5d,0x5b,0x5b,\r
-  0x5b,0x5a,0x00,0x00,0x00,0x00,0x00,0x00,0x5c,0x63,0x61,0x61,0x5d,\r
-  0x5b,0x5b,0x5a,0x5b,0x5b,0x5a,0x00,0x00,0x00,0x00,0x00,0x5c,0x63,\r
-  0x61,0x61,0x5d,0x5b,0x59,0x58,0x59,0x5b,0x5a,0x00,0x00,0x00,0x00,\r
-  0x5e,0x63,0x62,0x61,0x61,0x5f,0x5d,0x5b,0x59,0x5b,0x5b,0x5e,0x5a,\r
-  0x00,0x00,0x00,0x5e,0x63,0x63,0x62,0x61,0x61,0x5f,0x5d,0x5b,0x5c,\r
-  0x5d,0x61,0x5a,0x00,0x00,0x00,0x5e,0x65,0x63,0x63,0x61,0x61,0x61,\r
-  0x5f,0x5d,0x5d,0x62,0x61,0x5a,0x00,0x00,0x00,0x00,0xeb,0x65,0x63,\r
-  0x62,0x61,0x61,0x61,0x61,0x61,0x61,0xeb,0x00,0x00,0x00,0x00,0xeb,\r
-  0xf2,0x65,0x63,0x62,0x63,0xf2,0x61,0x61,0x61,0x63,0xf2,0xeb,0x00,\r
-  0x00,0x00,0xeb,0xf1,0xf2,0x65,0x63,0xf2,0xeb,0xf1,0x63,0x62,0xf2,\r
-  0xf1,0xeb,0x00,0x00,0xeb,0xf2,0xf4,0xeb,0x5e,0x5e,0xf2,0xf1,0xed,\r
-  0xf0,0x5c,0xeb,0xf4,0xf2,0xeb,0x00,0xeb,0xf1,0xf2,0xa1,0xeb,0xf2,\r
-  0xeb,0xed,0xf0,0xf2,0xeb,0xa1,0xf2,0xf1,0xeb,0x00,0x00,0xeb,0xf2,\r
-  0xf2,0xeb,0xf2,0xf1,0xf2,0xf1,0xf2,0xeb,0xf2,0xf2,0xeb,0x00,0x00,\r
-  0x00,0x00,0xeb,0xeb,0x00,0x00,0xeb,0x4e,0xeb,0x00,0x00,0xeb,0xeb,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf2,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,\r
-  0x42,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x44,0x44,0x48,0x48,0x45,0x42,0x42,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x44,0x4a,0x49,0x48,0x45,0x43,0x43,0x43,0x42,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x44,0x4a,0x49,0x48,0x45,0x43,0x43,0xb6,0x43,\r
-  0x43,0x42,0x00,0x00,0x00,0x00,0x00,0x44,0x4a,0x49,0x48,0x45,0x43,\r
-  0xb6,0x40,0x42,0x43,0x42,0x00,0x00,0x00,0x00,0x46,0x4a,0x4a,0x49,\r
-  0x48,0xee,0x45,0x43,0x41,0x43,0x43,0x45,0x42,0x00,0x00,0x00,0x46,\r
-  0x4b,0x4a,0x4b,0x49,0x48,0xee,0x45,0x43,0x43,0x45,0x49,0x42,0x00,\r
-  0x00,0x00,0x46,0x4c,0x4b,0x4a,0x49,0x48,0x48,0x47,0x45,0x45,0x49,\r
-  0x49,0x42,0x00,0x00,0x00,0x00,0xeb,0x4c,0x4b,0x4a,0x49,0x48,0x48,\r
-  0x48,0x48,0x49,0xeb,0x00,0x00,0x00,0x00,0xeb,0xf2,0x4c,0x4c,0x4a,\r
-  0x4a,0xf2,0x49,0x49,0x49,0x4b,0xf2,0xeb,0x00,0x00,0x00,0xeb,0xf1,\r
-  0xf2,0x4c,0x4b,0xf2,0xea,0xf1,0x4b,0x4a,0xf2,0xf1,0xeb,0x00,0x00,\r
-  0xeb,0xf2,0x4e,0xeb,0x46,0x46,0xf2,0xf2,0xee,0xeb,0x44,0xeb,0xf4,\r
-  0xf2,0xeb,0x00,0xeb,0xf1,0xf2,0xa1,0xeb,0xf2,0xeb,0xee,0xeb,0xf2,\r
-  0xeb,0xf5,0xf2,0xf1,0xeb,0x00,0x00,0xeb,0xf2,0xf2,0xeb,0xf2,0xf1,\r
-  0xf2,0xf1,0xf2,0xeb,0xf2,0xf2,0xea,0x00,0x00,0x00,0x00,0xeb,0xeb,\r
-  0x00,0x00,0xeb,0x4e,0xeb,0x00,0x00,0xeb,0xeb,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0xf2,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x72,0x72,0x72,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x74,0x78,0x78,\r
-  0x75,0x72,0x72,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x7a,\r
-  0x79,0x78,0x75,0x73,0x73,0x73,0x72,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x74,0x7a,0x79,0x78,0x75,0x73,0x73,0x71,0x73,0x73,0x72,0x00,0x00,\r
-  0x00,0x00,0x00,0x74,0x7a,0x79,0x78,0x75,0x73,0x71,0x70,0x71,0x73,\r
-  0x72,0x00,0x00,0x00,0x00,0x76,0x7a,0x7a,0x79,0x78,0x78,0x75,0x73,\r
-  0x71,0x73,0x73,0x75,0x72,0x00,0x00,0x00,0x76,0x7b,0x7a,0x7a,0x79,\r
-  0x78,0x78,0x75,0x73,0x73,0x75,0x78,0x72,0x00,0x00,0x00,0x76,0x7c,\r
-  0x7b,0x7a,0x79,0x78,0x78,0x78,0x75,0x75,0x78,0x79,0x72,0x00,0x00,\r
-  0x00,0x00,0xf0,0x7c,0x7b,0x7a,0x79,0x78,0x78,0x78,0x78,0x79,0xf0,\r
-  0x00,0x00,0x00,0x00,0xf0,0xf2,0x7c,0x7b,0x7a,0x7a,0xf2,0x79,0x79,\r
-  0x79,0x7a,0xf2,0xf0,0x00,0x00,0x00,0xf0,0xf1,0xf2,0x7c,0x7b,0xf2,\r
-  0xf0,0xf1,0x7a,0x7a,0xf2,0xf1,0xf0,0x00,0x00,0xf0,0xf2,0xf4,0xf0,\r
-  0x76,0x76,0xf2,0xf1,0xee,0xf0,0x74,0xf0,0xf4,0xf2,0xf0,0x00,0xf0,\r
-  0xf1,0xf2,0xf5,0xf0,0xf2,0xf0,0xee,0xf0,0xf2,0xf0,0xf5,0xf2,0xf1,\r
-  0xf0,0x00,0x00,0xf0,0xf2,0xf2,0xf0,0xf2,0xf1,0xf2,0xf1,0xf2,0xf0,\r
-  0xf2,0xf2,0xf0,0x00,0x00,0x00,0x00,0xf0,0xf0,0x00,0x00,0xf0,0xf4,\r
-  0xf0,0x00,0x00,0xf0,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0xf2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x05,0x05,0x09,0x09,0x06,0x03,0x03,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0b,0x0a,0x09,0x06,0x04,\r
-  0x04,0x06,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0b,0x0a,0x09,\r
-  0x06,0x04,0x04,0x02,0x04,0x06,0x03,0x00,0x00,0x00,0x00,0x00,0x05,\r
-  0x0b,0x0a,0x09,0x06,0x04,0x02,0x02,0x02,0x04,0x03,0x00,0x00,0x00,\r
-  0x00,0x07,0x0b,0x0b,0x0a,0x09,0x07,0x06,0x04,0x02,0x04,0x04,0x05,\r
-  0x03,0x00,0x00,0x00,0x07,0x0c,0x0b,0x0a,0x09,0x09,0x06,0x06,0x04,\r
-  0x04,0x06,0x09,0x03,0x00,0x00,0x00,0x07,0x0d,0x0c,0x0b,0x0a,0x09,\r
-  0x09,0x06,0x06,0x06,0x09,0x0a,0x03,0x00,0x00,0x00,0x00,0xf0,0x0d,\r
-  0x0c,0x0b,0x0a,0x09,0x0a,0x09,0x09,0x0a,0xf0,0x00,0x00,0x00,0x00,\r
-  0xf0,0xf2,0x0d,0x0c,0x0b,0x0b,0xf2,0x0a,0x0a,0x0a,0x0b,0xf2,0xf0,\r
-  0x00,0x00,0x00,0xf0,0xf1,0xf2,0x0d,0x0c,0xf2,0xf0,0xf1,0x0b,0x0b,\r
-  0xf2,0xf1,0xf0,0x00,0x00,0xf0,0xf2,0xf4,0xf0,0x07,0x07,0xf2,0xf1,\r
-  0xee,0xf0,0x05,0xf0,0xf4,0xf2,0xf0,0x00,0xf0,0xf1,0xf2,0xf5,0xf0,\r
-  0xf2,0xf0,0xee,0xf0,0xf2,0xf0,0xf5,0xf2,0xf1,0xf0,0x00,0x00,0xf0,\r
-  0xf2,0xf2,0xf0,0xf2,0xf1,0xf2,0xf1,0xf2,0xf0,0xf2,0xf2,0xf0,0x00,\r
-  0x00,0x00,0x00,0xf0,0xf0,0x00,0x00,0xf0,0xf4,0xf0,0x00,0x00,0xf0,\r
-  0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf2,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
-  0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,\r
-  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,\r
-  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,\r
-  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,\r
-  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,\r
-  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,\r
-  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,\r
-  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,\r
-  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,\r
-  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,\r
-  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,\r
-  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,\r
-  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,\r
-  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,\r
-  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,\r
-  0xff,0xff,0xff\r
-  };\r
-\r
diff --git a/16/v2/source/verge/MAPED/COLUMNS.C b/16/v2/source/verge/MAPED/COLUMNS.C
deleted file mode 100755 (executable)
index bb12e9d..0000000
+++ /dev/null
@@ -1,420 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include "maped.h"\r
-\r
-#include <stdio.h>\r
-#include <string.h>\r
-#include <malloc.h>\r
-#include <stdlib.h>\r
-#include <time.h>\r
-\r
-#include "config.h"\r
-#include "keyboard.h"\r
-#include "timer.h"\r
-#include "vdriver.h"\r
-\r
-#include "colbak.h"\r
-#include "colstuff.h"\r
-\r
-#include "smalfont.h"\r
-#include "gui.h"\r
-\r
-#include "tilesel.h"\r
-\r
-#define byte unsigned char\r
-#define word unsigned short\r
-\r
-// ================================= Data ====================================\r
-\r
-char *field, *destruct;\r
-char *background, *sprites;\r
-int startofs=16;\r
-int turnlength, turnctr;\r
-int destructed, difficulty=4;\r
-int blocks, score, scoremultiplier;\r
-int level;\r
-\r
-// Current piece falling\r
-\r
-char piece[3], tempspot;\r
-int xpos, ypos, ypofs;\r
-char newpiece;\r
-char nextpiece[3];\r
-\r
-// ================================= Code ====================================\r
-\r
-void BlitPlayField()\r
-{\r
-  int i, j;\r
-  char c;\r
-\r
-  for (i=0; i<12; i++)\r
-    for (j=0; j<6; j++)\r
-    {\r
-      c=field[(i*6)+j];\r
-      if (c) TCopySprite(128+(j*16), startofs+4+(i*16), 16, 16, sprites+((c+1)*256));\r
-    }\r
-}\r
-\r
-void BlitPlayFieldwDestruct(char flash)\r
-{\r
-  int i, j;\r
-  char c;\r
-\r
-  for (i=0; i<12; i++)\r
-    for (j=0; j<6; j++)\r
-    {\r
-      c=field[(i*6)+j];\r
-      if (c && !destruct[(i*6)+j])\r
-        TCopySprite(128+(j*16), startofs+4+(i*16), 16, 16, sprites+((c+1)*256));\r
-      if (destruct[(i*6)+j])\r
-        TCopySprite(128+(j*16), startofs+4+(i*16), 16, 16, sprites+(flash*256));\r
-    }\r
-}\r
-\r
-void BlitPiece()\r
-{\r
-  ypofs=((100 * turnctr) / turnlength) * 16 / 100;\r
-\r
-  TCopySprite(128+(xpos*16), startofs+4+(ypos*16)+ypofs, 16, 16, sprites+((piece[0]+1)*256));\r
-  TCopySprite(128+(xpos*16), startofs+20+(ypos*16)+ypofs, 16, 16, sprites+((piece[1]+1)*256));\r
-  TCopySprite(128+(xpos*16), startofs+36+(ypos*16)+ypofs, 16, 16, sprites+((piece[2]+1)*256));\r
-\r
-  TCopySprite(276, startofs+70, 16, 16, sprites+((nextpiece[0]+1)*256));\r
-  TCopySprite(276, startofs+90, 16, 16, sprites+((nextpiece[1]+1)*256));\r
-  TCopySprite(276, startofs+110, 16, 16, sprites+((nextpiece[2]+1)*256));\r
-}\r
-\r
-void GenerateNewPiece()\r
-{\r
-  newpiece=0;\r
-  xpos=2;\r
-  ypos=0;\r
-  if (field[2])  key[SCAN_ESC]=1;\r
-  if (field[8])  key[SCAN_ESC]=1;\r
-  if (field[14]) key[SCAN_ESC]=1;\r
-  if (field[20]) key[SCAN_ESC]=1;\r
-\r
-  if (key[SCAN_ESC])\r
-  {\r
-    if (difficulty==4 && blocks<240) Message("You really suck at columns, man.",300);\r
-    if (difficulty==5 && blocks<80)  Message("You really suck at columns, man.",300);\r
-    if (score>3200 && score<=6400) Message("Not bad.",300);\r
-    if (score>6400) Message("Behold, the Columns God walks among us.",500);\r
-  }\r
-\r
-  memcpy(&piece, &nextpiece, 3);\r
-  nextpiece[0]=random(1,difficulty);\r
-  nextpiece[1]=random(1,difficulty);\r
-  nextpiece[2]=random(1,difficulty);\r
-}\r
-\r
-void DestroyBlock(int x, int y)\r
-{\r
-  int i;\r
-\r
-  for (i=y; i>0; i--)\r
-  {\r
-    field[(i*6)+x]=field[((i-1)*6)+x];\r
-  }\r
-  blocks++;\r
-  score+=scoremultiplier;\r
-}\r
-\r
-void ClearConsecutiveColumns()\r
-{\r
-  int x, y;\r
-  char c;\r
-\r
-  // Scan for things to destroy, but don't destroy them, just mark\r
-  // them in the Destroy field.\r
-\r
-  destructed=0;\r
-  memset(destruct, 0, (6*13));\r
-\r
-  for (y=0; y<12; y++)\r
-    for (x=0; x<6; x++)\r
-    {\r
-      c=field[(y*6)+x];\r
-\r
-      // Test vertical match\r
-      if (y<10)\r
-      {\r
-        if ((field[((y+1)*6)+x]==c) && (field[((y+2)*6)+x]==c) && c)\r
-        {\r
-          // vertical match. Set destruct field.\r
-          destruct[((y+0)*6)+x]=1;\r
-          destruct[((y+1)*6)+x]=1;\r
-          destruct[((y+2)*6)+x]=1;\r
-          destructed=1;\r
-        }\r
-      }\r
-      // Test horizontal match\r
-      if (x<4)\r
-      {\r
-        if ((field[(y*6)+x+1]==c) && (field[(y*6)+x+2]==c) && c)\r
-        {\r
-          // horizontal match. Set destruct field.\r
-          destruct[(y*6)+x+0]=1;\r
-          destruct[(y*6)+x+1]=1;\r
-          destruct[(y*6)+x+2]=1;\r
-          destructed=1;\r
-        }\r
-      }\r
-      // Test negative diagonal match\r
-      if (x<4 && y<10)\r
-      {\r
-         if ((field[((y+1)*6)+x+1]==c) && (field[((y+2)*6)+x+2]==c) && c)\r
-         {\r
-           // negative diagonal match. set destruct field.\r
-           destruct[((y+0)*6)+x+0]=1;\r
-           destruct[((y+1)*6)+x+1]=1;\r
-           destruct[((y+2)*6)+x+2]=1;\r
-           destructed=1;\r
-         }\r
-      }\r
-      // Test positive diagonal match\r
-      if (x>=2 && y<10)\r
-      {\r
-         if ((field[((y+1)*6)+x-1]==c) && (field[((y+2)*6)+x-2]==c) && c)\r
-         {\r
-           // positive diagonal match. set destruct field.\r
-           destruct[((y+0)*6)+x-0]=1;\r
-           destruct[((y+1)*6)+x-1]=1;\r
-           destruct[((y+2)*6)+x-2]=1;\r
-           destructed=1;\r
-         }\r
-      }\r
-    }\r
-\r
-  // Show which tiles are being destroyed before clearing out for increase\r
-  // visual coolishness.\r
-\r
-  if (destructed)\r
-  {\r
-    timer_count=0;\r
-    while (timer_count<50)\r
-    {\r
-      if (timer_count<10 || (timer_count>20 && timer_count<30) ||\r
-         (timer_count>40 && timer_count<50)) c=1;\r
-      else c=0;\r
-\r
-      CopySprite(16,16,320,200,background);\r
-      BlitPlayFieldwDestruct(c);\r
-      TCopySprite(276, startofs+70, 16, 16, sprites+((nextpiece[0]+1)*256));\r
-      TCopySprite(276, startofs+90, 16, 16, sprites+((nextpiece[1]+1)*256));\r
-      TCopySprite(276, startofs+110, 16, 16, sprites+((nextpiece[2]+1)*256));\r
-\r
-GotoXY(55,130);\r
-sprintf(strbuf,"Blocks: %d", blocks);\r
-printstring(strbuf);\r
-GotoXY(55,140);\r
-sprintf(strbuf,"Score: %d", score);\r
-printstring(strbuf);\r
-GotoXY(55,150);\r
-sprintf(strbuf,"Level: %d", level);\r
-printstring(strbuf);\r
-\r
-      ShowPage();\r
-    }\r
-  }\r
-\r
-  // Apply destruct-o patch to the field.\r
-\r
-  for (y=0; y<12; y++)\r
-    for (x=0; x<6; x++)\r
-      if (destruct[(y*6)+x]) DestroyBlock(x,y);\r
-}\r
-\r
-void NextTurn()\r
-{\r
-  ypos++;\r
-  if (field[((ypos+3)*6)+xpos])\r
-  {\r
-    if (ypos<3) key[SCAN_ESC]=1;\r
-    // Hit something; set piece here.\r
-    field[(ypos*6)+xpos]=piece[0];\r
-    field[((ypos+1)*6)+xpos]=piece[1];\r
-    field[((ypos+2)*6)+xpos]=piece[2];\r
-    newpiece=1;\r
-\r
-    // Scan for consecutive things to delete.\r
-    do\r
-    {\r
-      ClearConsecutiveColumns();\r
-      scoremultiplier*=2;\r
-    } while (destructed);\r
-  }\r
-}\r
-\r
-int CanGoLeft()\r
-{\r
-  if (!xpos) return 0;\r
-  if (field[((ypos+1)*6)+xpos-1]) return 0;\r
-  if (field[((ypos+2)*6)+xpos-1]) return 0;\r
-  if (field[((ypos+3)*6)+xpos-1]) return 0;\r
-  return 1;\r
-}\r
-\r
-int CanGoRight()\r
-{\r
-  if (xpos==5) return 0;\r
-  if (field[((ypos+1)*6)+xpos+1]) return 0;\r
-  if (field[((ypos+2)*6)+xpos+1]) return 0;\r
-  if (field[((ypos+3)*6)+xpos+1]) return 0;\r
-  return 1;\r
-}\r
-\r
-void RotatePiece()\r
-{\r
-  tempspot=piece[0];\r
-  piece[0]=piece[1];\r
-  piece[1]=piece[2];\r
-  piece[2]=tempspot;\r
-}\r
-\r
-void ProcessLevels()\r
-{\r
-  if (blocks>80)  { level=2; turnlength=90; }\r
-  if (blocks>160) { level=3; turnlength=80; }\r
-  if (blocks>240) { level=4; turnlength=70; }\r
-  if (blocks>320) { level=5; turnlength=60; }\r
-  if (blocks>400) { level=6; turnlength=50; }\r
-  if (blocks>480) { level=7; turnlength=40; }\r
-  if (blocks>560) { level=8; turnlength=30; }\r
-  if (blocks>640) { level=9; turnlength=20; }\r
-}\r
-\r
-extern FILE *pcxf;\r
-extern int width, depth;\r
-extern int bytes;\r
-extern int vidoffset;\r
-\r
-void LoadBackground()\r
-{\r
-  int i;\r
-\r
-  if (!(pcxf=fopen("colback.pcx","rb")))\r
-  {\r
-    background=background_;\r
-  }\r
-  else\r
-  {\r
-    fclose(pcxf);\r
-    background=(char *) valloc(64000,"col bakg",0);\r
-    LoadPCXHeaderNP("colback.pcx");\r
-    for (i=0; i<depth; i++)\r
-    {\r
-       vidoffset=width*i;\r
-       ReadPCXLine(background);\r
-    }\r
-    fclose(pcxf);\r
-  }\r
-\r
-  if (!(pcxf=fopen("colspr.pcx","rb")))\r
-  {\r
-    sprites=sprites_;\r
-  }\r
-  else\r
-  {\r
-    fclose(pcxf);\r
-    LoadPCXHeaderNP("colspr.pcx");\r
-    sprites=(char *) valloc(width*depth,"col spr",0);\r
-    for (i=0; i<depth; i++)\r
-    {\r
-       vidoffset=width*i;\r
-       ReadPCXLine(sprites);\r
-    }\r
-    fclose(pcxf);\r
-  }\r
-}\r
-\r
-void Columns()\r
-{\r
-  ClearScreen();\r
-  srand(time(NULL));\r
-  LoadBackground();\r
-  field=(char *) valloc(6*13,"col field",0);\r
-  destruct=(char *) valloc(6*13,"col dest",0);\r
-  memset(field, 0, 6*12);\r
-  memset(field+(6*12), 255, 6);\r
-  newpiece=1;\r
-  turnlength=100;\r
-  turnctr=0;\r
-  timer_count=0;\r
-  blocks=0;\r
-  score=0;\r
-  level=1;\r
-  GenerateNewPiece();\r
-  GenerateNewPiece();\r
-  while (!key[SCAN_ESC])\r
-  {\r
-    CopySprite(16,16,320,200,background);\r
-    if (key[SCAN_LEFT])\r
-    {\r
-      if (xpos && CanGoLeft()) xpos--;\r
-      key[SCAN_LEFT]=0;\r
-    }\r
-    if (key[SCAN_RIGHT])\r
-    {\r
-      if (xpos<5 && CanGoRight()) xpos++;\r
-      key[SCAN_RIGHT]=0;\r
-    }\r
-    if (key[SCAN_DOWN])\r
-    {\r
-      timer_count*=5;\r
-    }\r
-    if (key[SCAN_UP])\r
-    {\r
-      RotatePiece();\r
-      key[SCAN_UP]=0;\r
-    }\r
-    ProcessLevels();\r
-    turnctr+=timer_count;\r
-    timer_count=0;\r
-    switch (difficulty)\r
-    {\r
-      case 4: scoremultiplier=5;\r
-      case 5: scoremultiplier=10;\r
-      case 6: scoremultiplier=15;\r
-    }\r
-    if (turnctr>=turnlength)\r
-    {\r
-      NextTurn();\r
-      turnctr-=turnlength;\r
-    }\r
-    if (newpiece) GenerateNewPiece();\r
-    BlitPlayField();\r
-    BlitPiece();\r
-\r
-GotoXY(55,130);\r
-sprintf(strbuf,"Blocks: %d", blocks);\r
-printstring(strbuf);\r
-GotoXY(55,140);\r
-sprintf(strbuf,"Score: %d", score);\r
-printstring(strbuf);\r
-GotoXY(55,150);\r
-sprintf(strbuf,"Level: %d", level);\r
-printstring(strbuf);\r
-\r
-    ShowPage();\r
-  }\r
-  vfree(sprites);\r
-  vfree(background);\r
-  vfree(field);\r
-  vfree(destruct);\r
-}\r
diff --git a/16/v2/source/verge/MAPED/COLUMNS.H b/16/v2/source/verge/MAPED/COLUMNS.H
deleted file mode 100755 (executable)
index 2c1b4c1..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef COLUMNS_INC\r
-#define COLUMNS_INC\r
-\r
-extern void BlitPlayField();\r
-extern void BlitPlayFieldwDestruct(char flash);\r
-extern void BlitPiece();\r
-extern void GenerateNewPiece();\r
-extern void DestroyBlock(int x, int y);\r
-extern void ClearConsecutiveColumns();\r
-extern void NextTurn();\r
-extern int CanGoLeft();\r
-extern int CanGoRight();\r
-extern void RotatePiece();\r
-extern void ProcessLevels();\r
-extern void LoadBackground();\r
-extern void Columns();\r
-\r
-#endif // COLUMNS_INC\r
diff --git a/16/v2/source/verge/MAPED/CONFIG.C b/16/v2/source/verge/MAPED/CONFIG.C
deleted file mode 100755 (executable)
index 0e3f10e..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include <stdio.h>\r
-#include <string.h>\r
-#include <stdlib.h>\r
-\r
-#include "gui.h"\r
-#include "mikmod.h"\r
-#include "maped.h"\r
-\r
-#include "smalfont.h"\r
-\r
-// ================================= Data ====================================\r
-\r
-FILE *cfg;\r
-char *strbuf;\r
-\r
-char vm=0;                             // Video mode\r
-char white=0, black=0;                   // Color definitions\r
-char pad=0;                            // Padding mode in tile selector.\r
-char th=0, mh=0;                         // tile-highlight, map highlight\r
-\r
-// GUI default colors\r
-\r
-char winbg=23;\r
-char titlebg=125;\r
-char brightw=31;\r
-char darkw=13;\r
-char darkred=44;\r
-\r
-// ------------------\r
-\r
-extern char scrollmode, vcedprog[80];\r
-extern int difficulty;\r
-\r
-// ================================= Code ====================================\r
-\r
-void InitializeDefaults()\r
-{\r
-  vm=0;\r
-  white=31;\r
-  black=1;\r
-  pad=1;\r
-  th=1;\r
-  mh=1;\r
-  mouse_scroll=1;\r
-  scrollmode=1;\r
-  memcpy(vcedprog,"edit",5);\r
-}\r
-\r
-void GetConfig(char *fname)\r
-{\r
-  strbuf=(char *) valloc(2000,"strbuf!",0);\r
-  InitializeDefaults();\r
-  if (!(cfg=fopen(fname,"r")))\r
-  {\r
-    printf("Unable to open config file. Using defaults... \n");\r
-    return;\r
-  }\r
-\r
-  while (1)\r
-  {\r
-    fscanf(cfg,"%s",strbuf);\r
-\r
-    if (!strcmp(strbuf,"difficulty"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      difficulty=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf,"nocdaudio"))\r
-    {\r
-      //nocdaudio=1;\r
-      continue;\r
-    }\r
-    if (!strcmp(strbuf,"vidmode"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      vm=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf,"white"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      white=atoi(strbuf); brightw=atoi(strbuf);\r
-      TextColor(atoi(strbuf)); continue; }\r
-    if (!strcmp(strbuf,"black"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      black=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf,"winbg"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      winbg=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf,"shadow"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      darkw=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf,"darkred"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      darkred=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf,"titlebg"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      titlebg=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf,"pad"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      pad=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf, "scrollmode"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      scrollmode=atoi(strbuf); continue; }\r
-    // aen\r
-    if (!strcmp(strbuf, "mouse_scroll"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      mouse_scroll=atoi(strbuf)&1; continue; }\r
-    if (!strcmp(strbuf, "md_device"))\r
-    { fscanf(cfg, "%s", strbuf);\r
-      md_device=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf, "th"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      th=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf, "mh"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      mh=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf, "amxofs"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      amxofs=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf, "amyofs"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      amyofs=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf, "mmxofs"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      mmxofs=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf, "mmyofs"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      mmyofs=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf, "cnxofs"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      cnxofs=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf, "cnyofs"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      cnyofs=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf, "lmxofs"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      lmyofs=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf, "lmyofs"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      lmyofs=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf, "lvxofs"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      lvxofs=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf, "lvyofs"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      lvyofs=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf, "mpxofs"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      mpxofs=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf, "mpyofs"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      mpyofs=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf, "vaxofs"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      vaxofs=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf, "vayofs"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      vayofs=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf, "zexofs"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      zexofs=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf, "zeyofs"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      zeyofs=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf, "exofs"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      exofs=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf, "eyofs"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      eyofs=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf, "prxofs"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      prxofs=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf, "pryofs"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      pryofs=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf, "rsxofs"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      rsxofs=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf, "rsyofs"))\r
-    { fscanf(cfg,"%s",strbuf);\r
-      rsyofs=atoi(strbuf); continue; }\r
-    if (!strcmp(strbuf,"vcedprog"))\r
-    { fscanf(cfg,"%s",vcedprog);\r
-      continue; }\r
-    break;\r
-  }\r
-  fclose(cfg);\r
-}\r
diff --git a/16/v2/source/verge/MAPED/CONFIG.H b/16/v2/source/verge/MAPED/CONFIG.H
deleted file mode 100755 (executable)
index d026fcd..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef CONFIG_INC\r
-#define CONFIG_INC\r
-\r
-extern char vm;\r
-extern char *strbuf;\r
-extern char white,black,darkred,pad,th,mh;\r
-extern char winbg,titlebg,brightw,darkw;\r
-\r
-extern void InitializeDefaults();\r
-extern void GetConfig(char *fname);\r
-\r
-#endif // CONFIG_INC\r
diff --git a/16/v2/source/verge/MAPED/CONTROLS.C b/16/v2/source/verge/MAPED/CONTROLS.C
deleted file mode 100755 (executable)
index be58e95..0000000
+++ /dev/null
@@ -1,837 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-\r
-// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\r
-// CHANGELOG:\r
-// <zero 5.7.99>\r
-// + fixed ScreenShot() to properly save screenshots with\r
-//   the sequential filenames.\r
-// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\r
-\r
-// ================================= Data ====================================\r
-\r
-// ================================= Code ====================================\r
-\r
-int CheckMouseTabs()\r
-{ int i;\r
-\r
-  for (i=0; i<10; i++)\r
-  {\r
-    if (i<6 && i>=numlayers) continue;\r
-    if (mb==1 && mx>17+(i*10) && mx<26+(i*10) && my>(tsy-7) && my<tsy)\r
-    {   layertoggle[i]=layertoggle[i] ^ 1; WaitRelease(); return 1; }\r
-    if (mb==2 && mx>17+(i*10) && mx<26+(i*10) && my>(tsy-7) && my<tsy)\r
-    {   el=i; WaitRelease(); return 1; }\r
-  }\r
-  return 0;\r
-}\r
-\r
-HAL()\r
-{ int i;\r
-\r
-  Message("I'm sorry dave, I can't do that...",600);\r
-  i=systemtime+400;\r
-  while (systemtime<i)\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-    ShowPage();\r
-  }\r
-  Message("Just kidding! :)",200);\r
-}\r
-\r
-void WritePCXLine(unsigned char *p,int len,FILE *pcxf)\r
-{ int i;\r
-  unsigned char byt, samect, repcode;\r
-\r
-  i=0;\r
-  do\r
-  {   byt=p[i++];\r
-      samect=1;\r
-      while (samect<(unsigned) 63 && i<len && byt==p[i])\r
-      {\r
-         samect++;\r
-         i++;\r
-      }\r
-      if (samect>1 || (byt & 0xC0) != 0)\r
-      {\r
-         repcode=0xC0 | samect;\r
-         fwrite(&repcode,1,1,pcxf);\r
-      }\r
-      fwrite(&byt,1,1,pcxf);\r
-  } while (i<len);\r
-}\r
-\r
-acopytile(int x, int y, char *src, char *pt)\r
-{\r
-  char *d;\r
-  int h;\r
-\r
-  h=16;\r
-\r
-  y<<=6;\r
-  d=pt+y+(y<<2)+x;\r
-\r
-  for (; h; h--)\r
-  {\r
-    memcpy(d,src,16);\r
-    src+=16;\r
-    d+=320;\r
-  }\r
-}\r
-\r
-extern FILE *pcxf;\r
-\r
-void WritePalette(FILE *f)\r
-{ char b;\r
-  int i;\r
-\r
-  for (i=0; i<768; i++)\r
-      pal[i]=pal[i] << 2;\r
-\r
-  b=12; fwrite(&b, 1, 1, f);\r
-  fwrite(pal, 1, 768, f);\r
-\r
-  for (i=0; i<768; i++)\r
-      pal[i]=pal[i] >> 2;\r
-}\r
-\r
-void OutputVSPpcx()\r
-{ int i,j,_x,_y;\r
-  unsigned char *ptr;\r
-  char b1;\r
-  short int w1,w2;\r
-\r
-  // First figure out the filename\r
-\r
-  i=0;\r
-  ptr=&vspname;\r
-  while (*ptr != '.')\r
-  {\r
-    strbuf[i]=*ptr;\r
-    ptr++;\r
-    i++;\r
-  }\r
-  strbuf[i++]='.';\r
-  strbuf[i++]='P';\r
-  strbuf[i++]='C';\r
-  strbuf[i++]='X';\r
-  strbuf[i++]=0;\r
-\r
-  pcxf=fopen(strbuf,"wb");\r
-\r
-// Write PCX header\r
-\r
-   b1=10; fwrite(&b1, 1, 1, pcxf); // manufacturer always = 10\r
-   b1=5; fwrite(&b1, 1, 1, pcxf);  // version = 3.0, >16 colors\r
-   b1=1; fwrite(&b1, 1, 1, pcxf);  // encoding always = 1\r
-   b1=8; fwrite(&b1, 1, 1, pcxf);  // 8 bits per pixel, for 256 colors\r
-   w1=0; fwrite(&w1, 1, 2, pcxf);  // xmin = 0;\r
-   w1=0; fwrite(&w1, 1, 2, pcxf);  // ymin = 0;\r
- w1=319; fwrite(&w1, 1, 2, pcxf);  // xmax = 319;\r
-\r
- // At this point we need to figure out how many vertical rows tall the\r
- // PCX needs to be in order to accomidate the number of tiles in the VSP.\r
-\r
- w2=numtiles/18; w2++;\r
- w2=(w2*17); fwrite(&w2, 1, 2, pcxf);  // ymax = ?;\r
- w1=320; fwrite(&w1, 1, 2, pcxf);      // hres = 320;\r
- w2++; fwrite(&w2, 1, 2, pcxf);        // vres = ?;\r
-\r
- fwrite(screen, 1, 48, pcxf);  // 16-color palette data. Who knows what's\r
-                               // actually in here. It doesn't matter since\r
-                               // the 256-color palette is stored elsewhere.\r
-\r
- b1=0; fwrite(&b1, 1, 1, pcxf);   // reserved always = 0.\r
- b1=1; fwrite(&b1, 1, 1, pcxf);   // number of color planes. Just 1 for 8bit.\r
- w1=320; fwrite(&w1, 1, 2, pcxf); // number of bytes per line\r
-\r
- w1=0; fwrite(&w1, 1, 1, pcxf);\r
- fwrite(screen, 1, 59, pcxf);          // filler\r
-\r
- // The header is written. Now we need to generate a large buffer where we'll\r
- // "draw" the PCX, and then encode the data and save the PCX.\r
-\r
- ptr=(char *) malloc(320*w2);\r
- memset(ptr,255,(320*w2));            // Give the PCX a white background\r
-\r
- // Now we "draw" the tiles into the buffer.\r
-\r
- for (i=0; i<numtiles; i++)\r
- {\r
-    j=i/18;\r
-    _y=1+(j*17);\r
-    j=i-(j*18);\r
-    _x=1+(j*17);\r
-    acopytile(_x,_y,vsp+(i*256),ptr);\r
- }\r
-\r
- // And now we save the rest of the PCX.\r
-\r
- for (w1=0; w1<w2; w1++)\r
-     WritePCXLine(ptr+(w1*320),320,pcxf);\r
-\r
-  WritePalette(pcxf);\r
-  fclose(pcxf);\r
-\r
-  vfree(ptr);\r
-}\r
-\r
-void ScreenShot()\r
-{\r
-  unsigned char b1;\r
-  unsigned short int w1;\r
-  int i,n; //zero 5.7.99\r
-  char fnamestr[13];\r
-  static int ss=0;\r
-  FILE *pcxf;\r
-\r
-//--- zero 5.7.99\r
-  n=0;\r
-  do\r
-  {\r
-    sprintf(fnamestr,"%d.pcx",n);\r
-    pcxf=fopen(fnamestr,"r");\r
-    i=(int)pcxf;\r
-    if(pcxf) fclose(pcxf);\r
-    n++;\r
-  } while(i);\r
-  n--;\r
-\r
-  // Takes a snapshot of the current screen.\r
-\r
-   sprintf(fnamestr,"%d.pcx",n);\r
-//---\r
-\r
-   pcxf=fopen(&fnamestr,"wb");\r
-   ss++;\r
-\r
-// Write PCX header\r
-\r
-   b1=10; fwrite(&b1, 1, 1, pcxf); // manufacturer always = 10\r
-   b1=5; fwrite(&b1, 1, 1, pcxf);  // version = 3.0, >16 colors\r
-   b1=1; fwrite(&b1, 1, 1, pcxf);  // encoding always = 1\r
-   b1=8; fwrite(&b1, 1, 1, pcxf);  // 8 bits per pixel, for 256 colors\r
-   w1=0; fwrite(&w1, 1, 2, pcxf);  // xmin = 0;\r
-   w1=0; fwrite(&w1, 1, 2, pcxf);  // ymin = 0;\r
- w1=sx-1; fwrite(&w1, 1, 2, pcxf);  // xmax = 319;\r
- w1=sy-1; fwrite(&w1, 1, 2, pcxf);  // ymax = 199;\r
- w1=sx; fwrite(&w1, 1, 2, pcxf);  // hres = 320;\r
- w1=sy; fwrite(&w1, 1, 2, pcxf);  // vres = 200;\r
-\r
- fwrite(screen,1,48,pcxf);\r
-\r
- b1=0; fwrite(&b1, 1, 1, pcxf);   // reserved always = 0.\r
- b1=1; fwrite(&b1, 1, 1, pcxf);   // number of color planes. Just 1 for 8bit.\r
- w1=sx; fwrite(&w1, 1, 2, pcxf); // number of bytes per line\r
-\r
- w1=0; fwrite(&w1, 1, 1, pcxf);\r
- fwrite(screen, 1, 59, pcxf);          // filler\r
-\r
- for (w1=0; w1<sy; w1++)\r
-     WritePCXLine(screen+((w1+16)*tsx)+16, sx, pcxf);\r
-\r
- WritePalette(pcxf);\r
- fclose(pcxf);\r
- timer_count=0;\r
-}\r
-\r
-// aen -- put this out here because the PollMovement() routine i added\r
-//        needs access to them.\r
-\r
-int ms_right=0;\r
-int ms_down=0;\r
-int ms_left=0;\r
-int ms_up=0;\r
-\r
-void PollMovement() // aen\r
-{\r
-  int xmax, ymax;\r
-\r
-  // d'oh! :p\r
-  ms_right=0;\r
-  ms_down=0;\r
-  ms_left=0;\r
-  ms_up=0;\r
-\r
-  xmax = (layer[0].sizex * 16) - sx;\r
-  ymax = (layer[0].sizey * 16) - sy;\r
-\r
-  // aen: made all scroll code apply movement first, correct afterwards. if\r
-  // not done this way, bugs crop up with the movement when holding page\r
-  // down, to scroll to the bottom of the map (in tile scroll), then holding\r
-  // the up arrow key to scroll back up to the top (will scroll into the\r
-  // negatives).\r
-\r
-  if (mouse_scroll)\r
-  {\r
-    if (my<18) ms_up=1;\r
-    if (my>(tsy-2)) ms_down=1;\r
-    if (mx>334) ms_right=1;\r
-    if (mx<18) ms_left=1;\r
-  }\r
-\r
-  if (key[SCAN_UP] || ms_up)\r
-  {\r
-    if (scrollmode)\r
-    {\r
-       ywin -= map_scroll_y;\r
-       if (ywin < 0) ywin = 0;\r
-    }\r
-    else\r
-    {\r
-      if (key[SCAN_UP] || (!(systemtime%10)))\r
-      {\r
-        key[SCAN_UP]=0;\r
-        ywin -= 16;\r
-        if (ywin < 0) ywin = 0;\r
-        systemtime++;\r
-      }\r
-    }\r
-  }\r
-  if (key[SCAN_DOWN] || ms_down)\r
-  {\r
-    if (scrollmode)\r
-    {\r
-      ywin += map_scroll_y;\r
-      if (ywin > ymax)\r
-        ywin = ymax;\r
-    }\r
-    else\r
-    {\r
-      if (key[SCAN_DOWN] || (!(systemtime%10)))\r
-      {\r
-        key[SCAN_DOWN]=0;\r
-        ywin += 16;\r
-        if (ywin > ymax)\r
-          ywin = ymax;\r
-        systemtime++;\r
-      }\r
-    }\r
-  }\r
-  if (key[SCAN_RIGHT] || ms_right)\r
-  {\r
-    if (scrollmode)\r
-    {\r
-      xwin += map_scroll_x;\r
-      if (xwin > xmax)\r
-        xwin = xmax;\r
-    }\r
-    else\r
-    {\r
-      if (key[SCAN_RIGHT] || (!(systemtime%10)))\r
-      {\r
-         key[SCAN_RIGHT]=0;\r
-         xwin += 16;\r
-         if (xwin > xmax)\r
-           xwin = xmax;\r
-         systemtime++;\r
-      }\r
-    }\r
-  }\r
-  if (key[SCAN_LEFT] || ms_left)\r
-  {\r
-    if (scrollmode)\r
-    {\r
-      xwin -= map_scroll_x;\r
-      if (xwin < 0) xwin=0;\r
-    }\r
-    else\r
-    {\r
-       if (key[SCAN_LEFT] || (!(systemtime%10)))\r
-       {\r
-         key[SCAN_LEFT]=0;\r
-         xwin -= 16;\r
-         if (xwin < 0) xwin = 0;\r
-         systemtime++;\r
-       }\r
-    }\r
-  }\r
-}\r
-\r
-ProcessControls()\r
-{\r
-  int xmax, ymax;\r
-\r
-  xmax = (layer[0].sizex * 16) - sx;\r
-  ymax = (layer[0].sizey * 16) - sy;\r
-\r
-  if (key[SCAN_F5]) { key[SCAN_F5]=0; ShellMAP(); }\r
-  if (key[SCAN_F6]) { key[SCAN_F6]=0; CompileAll(); }\r
-  if (key[SCAN_F8]) { key[SCAN_F8]=0; ShellVERGE(); }\r
-  if (key[SCAN_ALT] && key[SCAN_D]) { key[SCAN_D]=0; ShellToDOS(); }\r
-  if (key[SCAN_ALT] && key[SCAN_L]) LoadMAPDialog();\r
-  if (key[SCAN_ALT] && key[SCAN_V]) ShellEditMAP();\r
-  if (key[SCAN_ALT] && key[SCAN_S]) ShellEditSystem();\r
-  if (key[SCAN_ALT] && key[SCAN_N]) NewMAP();\r
-  if (key[SCAN_ALT] && key[SCAN_P]) MPDialog();\r
-  if (!key[SCAN_ALT] && key[SCAN_P]) { pasting^=1; key[SCAN_P]=0; } // aen\r
-\r
-  if (key[SCAN_A] && el<6)\r
-  {\r
-    lt++;\r
-    if (lt==numtiles) lt=0;\r
-    key[SCAN_A]=0;\r
-  }\r
-  if (key[SCAN_Z] && el<6)\r
-  {\r
-    if (lt) lt--;\r
-    else lt=numtiles-1;\r
-    key[SCAN_Z]=0;\r
-  }\r
-  if (key[SCAN_A] && el==7)\r
-  {\r
-    curzone++;\r
-    key[SCAN_A]=0;\r
-  }\r
-  if (key[SCAN_Z] && el==7)\r
-  {\r
-    curzone--;\r
-    key[SCAN_Z]=0;\r
-  }\r
-  if (key[SCAN_S])\r
-  {\r
-    rt++;\r
-    if (rt==numtiles) rt=0;\r
-    key[SCAN_S]=0;\r
-  }\r
-  if (key[SCAN_X])\r
-  {\r
-    if (rt) rt--;\r
-    else rt=numtiles-1;\r
-    key[SCAN_X]=0;\r
-  }\r
-  if (key[SCAN_F10])\r
-  {\r
-    key[SCAN_F10]=0;\r
-    if (random(0,255)<15) HAL();\r
-    SaveMAP(mapname);\r
-    SaveVSP(vspname);\r
-    CompileMAP();\r
-    Message("MAP/VSP saved.",100);\r
-    modified=0;\r
-  }\r
-  if (key[SCAN_C])\r
-  {\r
-    key[SCAN_C]=0;\r
-    sprintf(strbuf,"Left: %d Right: %d", lt, rt);\r
-    Message(strbuf, 300);\r
-  }\r
-  if (key[SCAN_M])\r
-  {\r
-    key[SCAN_M]=0;\r
-    GenerateMiniVSP();\r
-    MiniMAP();\r
-  }\r
-  if (key[SCAN_H])\r
-  {\r
-    key[SCAN_H]=0;\r
-    mh=mh^1;\r
-    if (mh) Message("MAP Tile Highlight enabled.",100);\r
-       else Message("MAP Tile Highlight disabled.",100);\r
-  }\r
-\r
-  // ***\r
-  // movement code moved to PollMovement()\r
-  // ***\r
-\r
-  if (key[SCAN_PGUP])\r
-  {\r
-    key[SCAN_PGUP]=0;\r
-    ywin -= sy;\r
-    if (ywin < 0)\r
-      ywin = 0;\r
-  }\r
-  if (key[SCAN_HOME])\r
-  {\r
-    key[SCAN_HOME]=0;\r
-    xwin -= sx;\r
-    if (xwin < 0)\r
-      xwin = 0;\r
-  }\r
-  if (key[SCAN_END])\r
-  {\r
-    key[SCAN_END]=0;\r
-    xwin += sx;\r
-    if (xwin > xmax)\r
-      xwin = xmax;\r
-  }\r
-  if (key[SCAN_PGDN])\r
-  {\r
-    key[SCAN_PGDN]=0;\r
-    ywin += sy;\r
-    if (ywin > ymax)\r
-      ywin = ymax;\r
-  }\r
-\r
-  if (key[SCAN_CTRL] && el<6)\r
-  {\r
-    key[SCAN_CTRL]=0;\r
-    TileSelector();\r
-  }\r
-  if (key[SCAN_CTRL] && el==7)\r
-  {\r
-    key[SCAN_CTRL]=0;\r
-    ZoneEdDialog();\r
-  }\r
-\r
-  if (key[SCAN_TAB])\r
-  {\r
-    key[SCAN_TAB]=0;\r
-    if (scrollmode)\r
-    {\r
-      scrollmode=0;\r
-      xwin=xwin/16; xwin=xwin*16;\r
-      ywin=ywin/16; ywin=ywin*16;\r
-      Message("Tile scroll.",150);\r
-    }\r
-    else\r
-    {\r
-      scrollmode=1;\r
-      Message("Pixel scroll.",150);\r
-    }\r
-  }\r
-\r
-  if (key[SCAN_1])\r
-  {\r
-     if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT])\r
-     {\r
-       layertoggle[0]=0;\r
-       return;\r
-     }\r
-     layertoggle[0]=1;\r
-     layertoggle[6]=0; layertoggle[7]=0;\r
-     layertoggle[8]=0; layertoggle[9]=0;\r
-     el=0;\r
-     key[SCAN_1]=0;\r
-  }\r
-  if (key[SCAN_2])\r
-  {\r
-     if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT])\r
-     {\r
-       layertoggle[1]=0;\r
-       return;\r
-     }\r
-     key[SCAN_2]=0;\r
-     layertoggle[6]=0; layertoggle[7]=0;\r
-     layertoggle[8]=0; layertoggle[9]=0;\r
-     if (numlayers>1)\r
-     { layertoggle[1]=1;\r
-       el=1; }\r
-  }\r
-  if (key[SCAN_3])\r
-  {\r
-     if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT])\r
-     {\r
-       layertoggle[2]=0;\r
-       return;\r
-     }\r
-     key[SCAN_3]=0;\r
-     layertoggle[6]=0; layertoggle[7]=0;\r
-     layertoggle[8]=0; layertoggle[9]=0;\r
-     if (numlayers>2)\r
-     { layertoggle[2]=1;\r
-       el=2; }\r
-  }\r
-  if (key[SCAN_4])\r
-  {\r
-     if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT])\r
-     {\r
-       layertoggle[3]=0;\r
-       return;\r
-     }\r
-     key[SCAN_4]=0;\r
-     layertoggle[6]=0; layertoggle[7]=0;\r
-     layertoggle[8]=0; layertoggle[9]=0;\r
-     if (numlayers>3)\r
-     { layertoggle[3]=1;\r
-       el=3; }\r
-  }\r
-  if (key[SCAN_5])\r
-  {\r
-     if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT])\r
-     {\r
-       layertoggle[4]=0;\r
-       return;\r
-     }\r
-     key[SCAN_5]=0;\r
-     layertoggle[6]=0; layertoggle[7]=0;\r
-     layertoggle[8]=0; layertoggle[9]=0;\r
-     if (numlayers>4)\r
-     { layertoggle[4]=1;\r
-       el=4; }\r
-  }\r
-  if (key[SCAN_6])\r
-  {\r
-     if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT])\r
-     {\r
-       layertoggle[5]=0;\r
-       return;\r
-     }\r
-     key[SCAN_6]=0;\r
-     layertoggle[6]=0; layertoggle[7]=0;\r
-     layertoggle[8]=0; layertoggle[9]=0;\r
-     if (numlayers>5)\r
-     { layertoggle[5]=1;\r
-       el=5; }\r
-  }\r
-  if (key[SCAN_O])\r
-  {\r
-     key[SCAN_O]=0;\r
-     layertoggle[6]=1; layertoggle[7]=0;\r
-     layertoggle[8]=0; layertoggle[9]=0;\r
-     el=6;\r
-  }\r
-  if (key[SCAN_N])\r
-  {\r
-     key[SCAN_N]=0;\r
-     layertoggle[6]=0; layertoggle[7]=1;\r
-     layertoggle[8]=0; layertoggle[9]=0;\r
-     el=7;\r
-  }\r
-  if (key[SCAN_E])\r
-  {\r
-     key[SCAN_E]=0;\r
-     layertoggle[6]=0; layertoggle[7]=0;\r
-     layertoggle[8]=1; layertoggle[9]=0;\r
-     el=8;\r
-  }\r
-  if (key[SCAN_T])\r
-  {\r
-     key[SCAN_T]=0;\r
-     layertoggle[6]=0; layertoggle[7]=0;\r
-     layertoggle[8]=0; layertoggle[9]=1;\r
-     el=9;\r
-  }\r
-  if (key[SCAN_F9])\r
-  { // aen\r
-    key[SCAN_F9]=0;\r
-    mouse_scroll^=1;\r
-    sprintf(strbuf,"Mouse scroll %sabled.", mouse_scroll ? "en" : "dis");\r
-    Message(strbuf, 100);\r
-  }\r
-  if (key[SCAN_F11])\r
-  {\r
-    key[SCAN_F11]=0;\r
-    ScreenShot();\r
-    Message("Screen capture saved.",300);\r
-  }\r
-  if (key[SCAN_F12])\r
-  {\r
-    key[SCAN_F12]=0;\r
-    OutputVSPpcx();\r
-    Message("PCX file exported.",300);\r
-  }\r
-  if (key[SCAN_LANGLE])\r
-  {\r
-      key[SCAN_LANGLE]=0;\r
-      ShutdownVideo();\r
-      vm=0;\r
-      InitVideo(0);\r
-      set_intensity(63);\r
-      InitMouse();\r
-\r
-      // aen -- gotta recalc this if you're in a lower res at the bottom of\r
-      //        the map and jump to a higher res.\r
-      xmax = (layer[0].sizex * 16) - sx;\r
-      ymax = (layer[0].sizey * 16) - sy;\r
-      if (xwin > xmax) xwin=xmax;\r
-      if (ywin > ymax) ywin=ymax;\r
-  }\r
-  if (key[SCAN_RANGLE])\r
-  {\r
-      key[SCAN_RANGLE]=0;\r
-      ShutdownVideo();\r
-      vm=1;\r
-      InitVideo(1);\r
-      set_intensity(63);\r
-      InitMouse();\r
-\r
-      // aen -- gotta recalc this if you're in a lower res at the bottom of\r
-      //        the map and jump to a higher res.\r
-      xmax = (layer[0].sizex * 16) - sx;\r
-      ymax = (layer[0].sizey * 16) - sy;\r
-      if (xwin > xmax) xwin=xmax;\r
-      if (ywin > ymax) ywin=ymax;\r
-  }\r
-\r
-  if (CheckMouseTabs()) return;\r
-\r
-  if (mb>=3) MainMenu(mx-4,my-5);\r
-  if (key[SCAN_ESC]) DoMainMenu();\r
-\r
-  if (mb==1 && key[SCAN_SLASH] && el<6)\r
-  {\r
-    lt=layers[el][((((ywin*layer[el].pmulty/layer[el].pdivy)+my-16)/16) *\r
-             layer[el].sizex)+(((xwin*layer[el].pmultx/layer[el].pdivx)+mx-16)/16)];\r
-\r
-    return;\r
-  }\r
-\r
-  if (mb==2 && key[SCAN_SLASH] && el<6)\r
-  {\r
-    rt=layers[el][((((ywin*layer[el].pmulty/layer[el].pdivy)+my-16)/16) *\r
-             layer[el].sizex)+(((xwin*layer[el].pmultx/layer[el].pdivx)+mx-16)/16)];\r
-    return;\r
-  }\r
-\r
-  // aen; these must come before the tile plotting code just below\r
-  // to work correctly.\r
-  if (mb && el<6 && key[SCAN_LSHIFT] && !shifted)\r
-  {\r
-    selx1=(((xwin*layer[el].pmultx/layer[el].pdivx)+mx-16)/16);\r
-    sely1=(((ywin*layer[el].pmulty/layer[el].pdivy)+my-16)/16);\r
-    selx2=selx1;\r
-    sely2=sely1;\r
-    shifted=mb;\r
-    return;\r
-  }\r
-  if (mb && el<6 && shifted)\r
-  {\r
-    selx2=(((xwin*layer[el].pmultx/layer[el].pdivx)+mx-16)/16);\r
-    sely2=(((ywin*layer[el].pmulty/layer[el].pdivy)+my-16)/16);\r
-    return;\r
-  }\r
-  if (!mb && el<6 && shifted)\r
-  { int i,j;\r
-    int x1,y1,x2,y2;\r
-\r
-    x1=selx1;\r
-    y1=sely1;\r
-    x2=selx2;\r
-    y2=sely2;\r
-\r
-    if (x2<x1) x2^=x1,x1^=x2,x2^=x1;\r
-    if (y2<y1) y2^=y1,y1^=y2,y2^=y1;\r
-\r
-    copybuf_wide=x2-x1+1;\r
-    copybuf_deep=y2-y1+1;\r
-\r
-    if (shifted==2)\r
-    {\r
-      // block fill\r
-      modified=1;\r
-      for (j=0; j<copybuf_deep; j++)\r
-      {\r
-        for (i=0; i<copybuf_wide; i++)\r
-          layers[el][((y1+j)*layer[el].sizex)+(x1+i)]=lt;\r
-      }\r
-    }\r
-\r
-    if (shifted==1)\r
-    {\r
-      modified=1;\r
-      if (copybuf) vfree(copybuf);\r
-      copybuf=(word *)valloc(copybuf_wide*copybuf_deep*2, "copybuf", 0);\r
-\r
-      // copy\r
-      for (j=0; j<copybuf_deep; j++)\r
-      {\r
-        for (i=0; i<copybuf_wide; i++)\r
-          copybuf[(j*copybuf_wide)+i]=layers[el][((y1+j)*layer[el].sizex)+(x1+i)];\r
-      }\r
-      pasting=1;\r
-    }\r
-    selx1=sely1=0;\r
-    selx2=sely2=0;\r
-    shifted=0;\r
-  }\r
-  if (mb==1 && el<6 && !shifted && pasting)\r
-  { int a,b,i,j;\r
-\r
-    a=(((xwin*layer[el].pmultx/layer[el].pdivx)+mx-16)/16);\r
-    b=(((ywin*layer[el].pmulty/layer[el].pdivy)+my-16)/16);\r
-\r
-    // paste\r
-    for (j=0; j<copybuf_deep; j++)\r
-    {\r
-      for (i=0; i<copybuf_wide; i++)\r
-      {\r
-        if (b+j<layer[el].sizey && a+i<layer[el].sizex)\r
-          layers[el][((b+j)*layer[el].sizex)+(a+i)]=copybuf[(j*copybuf_wide)+i];\r
-      }\r
-    }\r
-  }\r
-\r
-  if (mb==1 && el<6 && !shifted && !pasting)\r
-  {\r
-    if (mx>335) mx=334;\r
-    modified=1;\r
-    layers[el][((((ywin*layer[el].pmulty/layer[el].pdivy)+my-16)/16) *\r
-               layer[el].sizex)+(((xwin*layer[el].pmultx/layer[el].pdivx)+mx-16)\r
-               /16)]=lt;\r
-  }\r
-  if (mb==2 && el<6 && !shifted)\r
-  {\r
-    if (mx>335) mx=334;\r
-    modified=1;\r
-    layers[el][((((ywin*layer[el].pmulty/layer[el].pdivy)+my-16)/16) *\r
-               layer[el].sizex)+(((xwin*layer[el].pmultx/layer[el].pdivx)+mx-16)\r
-               /16)]=rt;\r
-  }\r
-\r
-  if (mb==1 && el==6)\r
-  {\r
-   modified=1;\r
-   obstruct[((((ywin*layer[0].pmulty/layer[0].pdivy)+my-16)/16) *\r
-               layer[0].sizex)+(((xwin*layer[0].pmultx/layer[0].pdivx)+mx-16)\r
-               /16)]=1;\r
-  }\r
-  if (mb==2 && el==6)\r
-  {\r
-   modified=1;\r
-   obstruct[((((ywin*layer[0].pmulty/layer[0].pdivy)+my-16)/16) *\r
-               layer[0].sizex)+(((xwin*layer[0].pmultx/layer[0].pdivx)+mx-16)\r
-               /16)]=0;\r
-  }\r
-  if (mb==1 && el==7 && (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]))\r
-  {\r
-   curzone=zone[((((ywin*layer[0].pmulty/layer[0].pdivy)+my-16)/16) *\r
-               layer[0].sizex)+(((xwin*layer[0].pmultx/layer[0].pdivx)+mx-16)\r
-               /16)];\r
-   WaitRelease();\r
-   ZoneEdDialog();\r
-   return;\r
-  }\r
-  if (mb==1 && el==7)\r
-  {\r
-   modified=1;\r
-   zone[((((ywin*layer[0].pmulty/layer[0].pdivy)+my-16)/16) *\r
-               layer[0].sizex)+(((xwin*layer[0].pmultx/layer[0].pdivx)+mx-16)\r
-               /16)]=curzone;\r
-  }\r
-  if (mb==2 && el==7)\r
-  {\r
-   modified=1;\r
-   zone[((((ywin*layer[0].pmulty/layer[0].pdivy)+my-16)/16) *\r
-               layer[0].sizex)+(((xwin*layer[0].pmultx/layer[0].pdivx)+mx-16)\r
-               /16)]=0;\r
-  }\r
-  if (mb==1 && el==8)\r
-  {\r
-     WaitRelease();\r
-     ProcessEntity((xwin+(mx-16))/16,(ywin+(my-16))/16);\r
-     modified=1;\r
-  }\r
-  if (el==8 && EntityThere((mx-16+xwin)/16,(my+ywin-16)/16) &&\r
-      key[SCAN_DEL])\r
-  {\r
-    WaitRelease();\r
-    DeleteEntity((mx-16+xwin)/16,(my-16+ywin)/16);\r
-    modified=1;\r
-  }\r
-}\r
diff --git a/16/v2/source/verge/MAPED/GUI.C b/16/v2/source/verge/MAPED/GUI.C
deleted file mode 100755 (executable)
index 49bdc46..0000000
+++ /dev/null
@@ -1,5062 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include <stdio.h>\r
-#include <string.h>\r
-#include <stdarg.h>\r
-#include <malloc.h>\r
-#include <stdlib.h>\r
-\r
-#include "config.h"\r
-#include "guicomp.h"\r
-#include "maped.h"\r
-#include "mouse.h"\r
-#include "render.h"\r
-#include "timer.h"\r
-#include "vdriver.h"\r
-#include "keyboard.h"\r
-\r
-#include "smalfont.h"\r
-#include "columns.h"\r
-#include "tilesel.h"\r
-\r
-// ================================= Data ====================================\r
-\r
-struct message\r
-{\r
-  char text[44];                     // message text\r
-  int exptime;                       // message expire time\r
-};\r
-\r
-struct message messages[6];          // 5-message buffer\r
-char num_msgs=0;                     // number of active messages\r
-char playingmod[80];                 // currently playing mod.\r
-extern char scrollmode;\r
-\r
-// ================================= Code ====================================\r
-\r
-void CheckMessageExpirations()\r
-{ int i;\r
-\r
-  for (i=0; i<num_msgs; i++)\r
-    if (systemtime>messages[i].exptime)\r
-    {\r
-       memcpy(messages[i].text, messages[i+1].text, (48*(num_msgs-i+1)));\r
-       num_msgs--;\r
-    }\r
-}\r
-\r
-void Message(char *text, int duration)\r
-{\r
-  if (num_msgs<5)\r
-  {\r
-    memcpy(messages[num_msgs].text, text, strlen(text));\r
-    messages[num_msgs].exptime=systemtime+duration;\r
-    num_msgs++;\r
-    return;\r
-  }\r
-\r
-  memcpy(&messages[0].text, &messages[1].text, 192);\r
-  memcpy(messages[4].text, text, strlen(text)+1);\r
-  messages[num_msgs].exptime=systemtime+duration;\r
-}\r
-\r
-void DrawScreenControls()\r
-{ int i;\r
-  byte c;\r
-\r
-  if (el<6)\r
-  {\r
-    if (pasting)\r
-    {\r
-      GotoXY(298-5,tsy-19+13);\r
-      printstring("P");\r
-    }\r
-  }\r
-\r
-  // Put current-tile boxes if applicable.\r
-  if (el<6)\r
-  {\r
-    FilledBox(298,tsy-19,18,18,white);\r
-    FilledBox(317,tsy-19,18,18,white);\r
-    CopySprite(299,tsy-18,16,16,vsp+(256*lt));\r
-    CopySprite(318,tsy-18,16,16,vsp+(256*rt));\r
-  }\r
-\r
-  if (el==7)\r
-  {\r
-    sprintf(strbuf,"Zone %d",curzone);\r
-    GotoXY(280,tsy-16);\r
-    printstring(strbuf);\r
-    GotoXY(280,tsy-10);\r
-    printstring(zones[curzone].name);\r
-\r
-    c=zone[((((ywin*layer[0].pmulty/layer[0].pdivy)+my-16)/16) *\r
-               layer[0].sizex)+(((xwin*layer[0].pmultx/layer[0].pdivx)+mx-16)/16)];\r
-\r
-    if (c)\r
-    {\r
-       sprintf(strbuf,"zone %d",c);\r
-       GotoXY(280,17);\r
-       printstring(strbuf);\r
-       GotoXY(280,23);\r
-       printstring(zones[c].name);\r
-    }\r
-  }\r
-\r
-  if (el==8)\r
-  {\r
-    sprintf(strbuf,"%d entities",entities);\r
-    GotoXY(285,17); printstring(strbuf);\r
-\r
-    if (c=EntityThere((mx+xwin-16)/16,(my+ywin-16)/16))\r
-    {\r
-      c--;\r
-      GotoXY(285,tsy-10);\r
-      printstring(entity[c].desc);\r
-    }\r
-  }\r
-\r
-  // Put the current-tile mouse thingy.\r
-  GotoXY(17,17);\r
-  dec_to_asciiz((xwin+mx-16)/16,strbuf);\r
-  printstring(strbuf); printstring(", ");\r
-  dec_to_asciiz((ywin+my-16)/16,strbuf);\r
-  printstring(strbuf);\r
-\r
-  // Put the layer editor/selector.\r
-\r
-  for (i=0; i<6; i++)\r
-  {\r
-    if (el==i) c=white; else c=darkw;\r
-    FilledBox(17+(i*10),tsy-7,9,7,c);\r
-    if (layertoggle[i]) c=darkred; else c=0;\r
-    FilledBox(18+(i*10),tsy-6,7,6,c);\r
-    GotoXY(20+(i*10),tsy-5); dec_to_asciiz(i+1,strbuf);\r
-    if (i<numlayers) printstring(strbuf);\r
-  }\r
-\r
-  for (i=6; i<10; i++)\r
-  {\r
-    if (el==i) c=white; else c=darkw;\r
-    FilledBox(17+(i*10),tsy-7,9,7,c);\r
-    if (layertoggle[i]) c=darkred; else c=0;\r
-    FilledBox(18+(i*10),tsy-6,7,6,c);\r
-    GotoXY(20+(i*10),tsy-5);\r
-    switch (i)\r
-    {\r
-      case 6: printstring("O"); break;\r
-      case 7: printstring("N"); break;\r
-      case 8: printstring("E"); break;\r
-      case 9: printstring("T"); break;\r
-    }\r
-  }\r
-}\r
-\r
-void RenderMessages()\r
-{ int i;\r
-\r
-  CheckMessageExpirations();\r
-  for (i=0; i<num_msgs; i++)\r
-  {\r
-    GotoXY(17,23+(i*6));\r
-    printstring(messages[i].text);\r
-  }\r
-}\r
-\r
-void RenderGUI()\r
-{\r
-  RenderMessages();\r
-  DrawScreenControls();\r
-  DrawMouse();\r
-}\r
-\r
-// ============================= Dialog Code =================================\r
-\r
-int mmxofs=60, mmyofs=50;\r
-\r
-void DoMainMenu()\r
-{\r
-  key[SCAN_ESC]=0;\r
-  MainMenu(mmxofs, mmyofs);\r
-}\r
-\r
-void MainMenu(int dx, int dy)\r
-{ char done=0;\r
-  //int mxo, myo, cursorblink;\r
-\r
-  mmxofs=dx;\r
-  mmyofs=dy;\r
-  do\r
-  {\r
-    if (dx<16) dx=16;\r
-    if (dy<16) dy=16;\r
-    if (dx+80>335) dx=336-80;\r
-    if (dy+89>sy+16) dy=(sy+16)-89;\r
-\r
-    RenderMap();\r
-    RenderGUI();\r
-    stdwindow(dx, dy, dx+80, dy+89);\r
-\r
-    if (mx>dx && mx<dx+80)\r
-    {\r
-       if (my>dy+2 && my<dy+9) FilledBox(dx+2, dy+2, 76, 7, darkw);\r
-       if (my>dy+8 && my<dy+15) FilledBox(dx+2, dy+8, 76, 7, darkw);\r
-       if (my>dy+14 && my<dy+21) FilledBox(dx+2, dy+14, 76, 7, darkw);\r
-       if (my>dy+20 && my<dy+26) FilledBox(dx+2, dy+20, 76, 7, darkw);\r
-       if (my>dy+29 && my<dy+36) FilledBox(dx+2, dy+29, 76, 7, darkw);\r
-       if (my>dy+35 && my<dy+42) FilledBox(dx+2, dy+35, 76, 7, darkw);\r
-       if (my>dy+41 && my<dy+48) FilledBox(dx+2, dy+41, 76, 7, darkw);\r
-       if (my>dy+47 && my<dy+54) FilledBox(dx+2, dy+47, 76, 7, darkw);\r
-       if (my>dy+53 && my<dy+60) FilledBox(dx+2, dy+53, 76, 7, darkw);\r
-       if (my>dy+59 && my<dy+66) FilledBox(dx+2, dy+59, 76, 7, darkw);\r
-       if (my>dy+65 && my<dy+72) FilledBox(dx+2, dy+65, 76, 7, darkw);\r
-       if (my>dy+71 && my<dy+78) FilledBox(dx+2, dy+71, 76, 7, darkw);\r
-       if (my>dy+80 && my<dy+87) FilledBox(dx+2, dy+80, 76, 7, darkw);\r
-    }\r
-\r
-    GotoXY(dx+3, dy+3); printstring("New MAP");\r
-    GotoXY(dx+3, dy+9); printstring("Load MAP");\r
-    GotoXY(dx+3, dy+15); printstring("Save MAP");\r
-    GotoXY(dx+3, dy+21); printstring("Load VSP");\r
-    HLine(dx+2, dy+28, 76, white);\r
-    GotoXY(dx+3, dy+30); printstring("MAP Properties");\r
-    GotoXY(dx+3, dy+36); printstring("Layers"); GotoXY(dx+73, dy+36); printstring(">");\r
-    GotoXY(dx+3, dy+42); printstring("Options");\r
-    GotoXY(dx+3, dy+48); printstring("MOD Player");\r
-    GotoXY(dx+3, dy+54); printstring("CD Player");\r
-    GotoXY(dx+3, dy+60); printstring("Columns");\r
-    GotoXY(dx+3, dy+66); printstring("Execute"); GotoXY(dx+73, dy+66); printstring(">");\r
-    GotoXY(dx+3, dy+72); printstring("Exit to DOS");\r
-    HLine(dx+2, dy+79, 76, white);\r
-    GotoXY(dx+3, dy+81); printstring("About MapEd");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    if (mb==1 && mx>dx && mx<dx+80)\r
-    {\r
-       if (my>dy+2 && my<dy+9) { NewMAP(); done=1; WaitRelease(); break; }\r
-       if (my>dy+8 && my<dy+15) { done=1; WaitRelease(); LoadMAPDialog(); break; }\r
-       if (my>dy+14 && my<dy+21) { done=1; WaitRelease(); key[SCAN_F10]=1; break; }\r
-       if (my>dy+20 && my<dy+26) { done=1; WaitRelease(); LoadVSPDialog(); break; }\r
-       if (my>dy+29 && my<dy+36) { done=1; WaitRelease(); MapPropertiesDialog(); break; }\r
-       if (my>dy+35 && my<dy+42) { done=1; WaitRelease(); LayersSubMenu(dx,dy); break; }\r
-       if (my>dy+41 && my<dy+48) { done=1; WaitRelease(); OptionsDialog(); break; }\r
-       if (my>dy+47 && my<dy+54) { done=1; WaitRelease(); MPDialog(); break; }\r
-       if (my>dy+53 && my<dy+60) { done=1; WaitRelease(); CDDialog(); break; }\r
-       if (my>dy+59 && my<dy+66) { done=1; WaitRelease(); Columns(); break; }\r
-       if (my>dy+65 && my<dy+72) { done=1; WaitRelease(); ExecuteSubMenu(); break; }\r
-       if (my>dy+71 && my<dy+78) { done=1; WaitRelease(); key[SCAN_X]=1; key[SCAN_ALT]=1; break; }\r
-       if (my>dy+80 && my<dy+87) { done=1; About(); break; }\r
-    }\r
-\r
-    if (mb==1)\r
-    {\r
-      WaitRelease();\r
-      done=1;\r
-    }\r
-    if (key[SCAN_ESC]==1) done=1;\r
-  } while (!done);\r
-  key[SCAN_ESC]=0;\r
-}\r
-\r
-// tilesel.c\r
-extern FILE *pcxf;\r
-extern int width, depth;\r
-extern int vidoffset;\r
-extern char *ovsp;\r
-extern char *t;\r
-extern word ontiles;\r
-\r
-static int TileMatch(int a, int b)\r
-  { return !memcmp(ovsp+(a*256), ovsp+(b*256), 256); }\r
-\r
-int ilxsize=145, ilysize=122+10;\r
-int ilxofs=16, ilyofs=16;\r
-\r
-// make this configurable at some point\r
-#define MIN_TILE_X 50\r
-#define MIN_TILE_Y 50\r
-\r
-static int BitToNum(int num)\r
-{\r
-  int i;\r
-\r
-  if (!num)\r
-    return 0;\r
-\r
-  for (i=0; i<32; i++)\r
-  {\r
-    if (num & (1<<i))\r
-      break;\r
-  }\r
-\r
-  return i+1;\r
-}\r
-\r
-//zero\r
-byte TileCmp(byte *one, byte *two)\r
-  { return !memcmp(one,two, 256); }\r
-\r
-void ImageToLayer()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, tt, *str;\r
-  char nstr1[80], nstr2[80];\r
-\r
-  int i,j,k,m;\r
-  FILE *f=0;\r
-  int num_padx=0,num_pady=0; // in tiles\r
-  int minpadx=0,minpady=0; // in tiles\r
-  int tilesx=0,tilesy=0; // in tiles\r
-  int totalx=0,totaly=0; // in tiles\r
-  int excessx=0,excessy=0; // in pixels\r
-  //int chk_1=1,chk_2=0,chk_3=0,chk_4=0,chk_5=0,chk_6=0; // radio control\r
-  int chk_layer=1;\r
-  int chk_grabexcess=0,chk_centerinpad=0,chk_nodup=1; //,chk_padisblank=1;\r
-  char txt_imagename[80];\r
-        // ...\r
-        int ly=0;\r
-        int wide=0,deep=0;\r
-        int lsz=0;\r
-        int matched=0,plot=0; //,mapat=0;\r
-        int tilesripped=0;\r
-        int startx=0,starty=0;\r
-  memset(txt_imagename,0,80);\r
-  bmode=0; // for browser; update map/gui\r
-  width=0; depth=0; // for pcx loading code\r
-\r
-  sprintf(nstr1, "%d", num_padx);\r
-  sprintf(nstr2, "%d", num_pady);\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      ilxofs = (mx-mxo);\r
-      ilyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (ilxofs<16) ilxofs = 16;\r
-      if (ilyofs<16) ilyofs = 16;\r
-      if (ilxofs+ilxsize>335) ilxofs = 336-ilxsize;\r
-      if (ilyofs+ilysize>sy+16) ilyofs = (sy+16)-ilysize;\r
-    }\r
-\r
-    Window(ilxofs, ilyofs, ilxofs+ilxsize, ilyofs+ilysize, "Import Image As Layer");\r
-    Button(ilxofs+109, ilyofs+12, "Browse");\r
-    Button(ilxofs+109, ilyofs+30, "OK");\r
-    GotoXY(ilxofs+5, ilyofs+25); printstring("Layer:");\r
-    // layer select radio buttons\r
-    for (i=0; i<6; i++)\r
-    {\r
-      CheckBox(ilxofs+29+(i*10), ilyofs+33, chk_layer & (1<<i));\r
-      GotoXY(ilxofs+31+(i*10), ilyofs+25);\r
-      sprintf(strbuf, "%i", i+1); printstring(strbuf);\r
-    }\r
-    GotoXY(ilxofs+5, ilyofs+14); printstring("Image:");\r
-    //TextField(ilxofs+29, ilyofs+12, 75, txt_imagename, ctf == 1 ? cb : 0);\r
-    GotoXY(ilxofs+29, ilyofs+14); printstring(txt_imagename);\r
-    HLine(ilxofs+1, ilyofs+44, 143, white);\r
-    GotoXY(ilxofs+5, ilyofs+49); printstring("Image Dimensions:");\r
-    if (width+depth)\r
-    {\r
-      GotoXY(ilxofs+5+pixels("Image Dimensions:")+3, ilyofs+49);\r
-      sprintf(strbuf, "%dx%d", width, depth);\r
-      printstring(strbuf);\r
-    }\r
-    GotoXY(ilxofs+5, ilyofs+60); printstring("Tiles X:");\r
-    if (width+depth)\r
-    {\r
-      GotoXY(ilxofs+5+pixels("Tiles X:")+3, ilyofs+60);\r
-      sprintf(strbuf, "%d", tilesx);\r
-      printstring(strbuf);\r
-    }\r
-    GotoXY(ilxofs+5, ilyofs+71); printstring("Tiles Y:");\r
-    if (width+depth)\r
-    {\r
-      GotoXY(ilxofs+5+pixels("Tiles Y:")+3, ilyofs+71);\r
-      sprintf(strbuf, "%d", tilesy);\r
-      printstring(strbuf);\r
-    }\r
-    GotoXY(ilxofs+51, ilyofs+60); printstring("Pad X:");\r
-    GotoXY(ilxofs+51, ilyofs+71); printstring("Pad Y:");\r
-    TextField(ilxofs+74, ilyofs+58, 12, nstr1, ctf == 1 ? cb : 0);\r
-    TextField(ilxofs+74, ilyofs+69, 12, nstr2, ctf == 2 ? cb : 0);\r
-    GotoXY(ilxofs+95, ilyofs+60); printstring("Total X:");\r
-    if (width+depth)\r
-    {\r
-      GotoXY(ilxofs+95+pixels("Total X:")+3, ilyofs+60);\r
-      sprintf(strbuf, "%d", totalx);\r
-      printstring(strbuf);\r
-    }\r
-    GotoXY(ilxofs+95, ilyofs+71); printstring("Total Y:");\r
-    if (width+depth)\r
-    {\r
-      GotoXY(ilxofs+95+pixels("Total Y:")+3, ilyofs+71);\r
-      sprintf(strbuf, "%d", totaly);\r
-      printstring(strbuf);\r
-    }\r
-    GotoXY(ilxofs+5, ilyofs+81); printstring("Excess Pixels X:");\r
-    if (width+depth)\r
-    {\r
-      GotoXY(ilxofs+5+pixels("Excess Pixels X:")+3, ilyofs+81);\r
-      sprintf(strbuf, "%d", excessx);\r
-      printstring(strbuf);\r
-    }\r
-    GotoXY(ilxofs+5, ilyofs+91); printstring("Excess Pixels Y:");\r
-    if (width+depth)\r
-    {\r
-      GotoXY(ilxofs+5+pixels("Excess Pixels Y:")+3, ilyofs+91);\r
-      sprintf(strbuf, "%d", excessy);\r
-      printstring(strbuf);\r
-    }\r
-    CheckBox(ilxofs+5, ilyofs+101, chk_grabexcess);\r
-    GotoXY(ilxofs+17, ilyofs+102); printstring("Grab Excess");\r
-    CheckBox(ilxofs+5, ilyofs+110, chk_centerinpad);\r
-    GotoXY(ilxofs+17, ilyofs+111); printstring("Center Within Padding");\r
-    CheckBox(ilxofs+5, ilyofs+119, chk_nodup);\r
-    GotoXY(ilxofs+17, ilyofs+120); printstring("Eliminate Duplicates");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if ((mb==1 && mx>ilxofs+109 && mx<ilxofs+30+109 && my>ilyofs+12 && my<ilyofs+10+12 && !moving) || (key[SCAN_ALT] && key[SCAN_B]))\r
-    {\r
-      // insert code for button "Browse" here\r
-      ButtonPressed(ilxofs+109, ilyofs+12, "Browse");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      Browse(1, "*.pcx", "", "", "", txt_imagename);\r
-      key[SCAN_ESC]=0; // just in case ESC exited\r
-      f=fopen(txt_imagename, "rb");\r
-      if (f)\r
-      {\r
-        LoadPCXHeaderNP(txt_imagename);\r
-        fclose(pcxf);\r
-\r
-        if (chk_grabexcess) i=15; else i=0;\r
-        tilesx=((width+i)&~15)/16;\r
-        tilesy=((depth+i)&~15)/16;\r
-        excessx=width & 15;\r
-        excessy=depth & 15;\r
-        if (tilesx<MIN_TILE_X) { minpadx=MIN_TILE_X-tilesx; num_padx=minpadx; }\r
-        if (tilesy<MIN_TILE_Y) { minpady=MIN_TILE_Y-tilesy; num_pady=minpady; }\r
-        sprintf(nstr1, "%d", minpadx);\r
-        sprintf(nstr2, "%d", minpady);\r
-        totalx=tilesx+minpadx;\r
-        totaly=tilesy+minpady;\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>ilxofs+109 && mx<ilxofs+30+109 && my>ilyofs+30 && my<ilyofs+10+30 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      ButtonPressed(ilxofs+109, ilyofs+30, "OK");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-\r
-      if (strlen(txt_imagename))\r
-      {\r
-        done=1;\r
-\r
-        ly=BitToNum(chk_layer) -1;\r
-\r
-        startx=0;\r
-        starty=0;\r
-        if (chk_centerinpad)\r
-        {\r
-          startx=(totalx-tilesx)/2;\r
-          starty=(totaly-tilesy)/2;\r
-        }\r
-\r
-        LoadPCXHeaderNP(txt_imagename);\r
-\r
-        wide=width;\r
-        deep=depth;\r
-        if (chk_grabexcess)\r
-        {\r
-          // round up to the nearest multiple of 16 if grabbing excess\r
-          wide=(width+15)&~15;\r
-          deep=(depth+15)&~15;\r
-        }\r
-        // allocate transit image bay, which may have padding ^\r
-        t=(char *) valloc(wide * deep,"img2layer",0);\r
-\r
-        for (i=0; i<depth; i++)\r
-        {\r
-          vidoffset=wide*i;\r
-          ReadPCXLine(t);\r
-        }\r
-        fclose(pcxf);\r
-\r
-        deep=tilesy;\r
-        wide=tilesx;\r
-        ontiles=(wide*deep)+1; // +1 for our empty tile\r
-\r
-        ovsp=(char *) valloc(ontiles*256,"img2layer2",0);\r
-\r
-        layer[ly].pmultx=1;     layer[ly].pmulty=1;\r
-        layer[ly].pdivx=1;      layer[ly].pdivy=1;\r
-        // totalx & totaly are the sum of tilesx/tilesy & num_padx/num_pady\r
-        layer[ly].sizex=totalx; layer[ly].sizey=totaly;\r
-        layer[ly].trans=0;      layer[ly].hline=0;\r
-\r
-        lsz = totalx * totaly;\r
-\r
-        if (layers[ly]) vfree(layers[ly]);\r
-        layers[ly]=(unsigned short *) valloc((lsz*2)+4,"layer data",ly);\r
-\r
-        tilesripped=0;\r
-        memset(ovsp,0,256);\r
-        tilesripped++;\r
-\r
-        for (i=0; i<deep; i++)\r
-        {\r
-          for (j=0; j<wide; j++)\r
-          {\r
-            GrabTileAt((j*16), (i*16), tilesripped, 0);\r
-            plot=tilesripped;\r
-\r
-            // eliminate duplicates?\r
-            if (chk_nodup)\r
-            {\r
-              matched=0;\r
-              for (k=0; k<tilesripped; k++)\r
-              {\r
-                if (TileMatch(tilesripped, k))\r
-                {\r
-                  matched=1;\r
-                  plot=k;\r
-                  break;\r
-                }\r
-              }\r
-                //begin zero\r
-              for(m=0; m<numtiles; m++)\r
-              {\r
-                if(TileCmp(vsp+m*256,ovsp+tilesripped*256))\r
-                {\r
-                  matched=1;\r
-                  plot=m-numtiles;\r
-//                  plot=0;\r
-                  break;\r
-                }\r
-              }\r
-              //end zero!\r
-              if (!matched) tilesripped++;\r
-            }\r
-            // grabbing all; keep it regardless\r
-            else tilesripped++;\r
-\r
-            layers[ly][((i+starty)*totalx)+j+startx]=plot;\r
-          }\r
-        }\r
-\r
-        // adjust indices past current tile amount\r
-        for (i=0; i<(totalx*totaly); i++)\r
-          layers[ly][i]+=numtiles;\r
-\r
-        if (!ly)\r
-        {\r
-          if (obstruct) vfree(obstruct);\r
-          obstruct=(char *) valloc(lsz+4,"obstruct",0);\r
-          if (zone) vfree(zone);\r
-          zone=(char *) valloc(lsz+4,"zone", 0);\r
-        }\r
-\r
-        // reallocate tilebay and patch in ovsp\r
-        str=(char *)valloc((numtiles+tilesripped)*256,"vsp data",0);\r
-        memcpy(str, vsp, (numtiles*256));\r
-        vfree(vsp); vsp=str; str=0;\r
-        memcpy(vsp+(numtiles*256), ovsp, (tilesripped*256));\r
-        numtiles+=tilesripped;\r
-\r
-        // did we make a new layer?\r
-        if (ly+1>numlayers)\r
-        {\r
-          numlayers++;\r
-          sprintf(rstring, "%s%i", rstring, ly+1); // update render-order\r
-        }\r
-\r
-        vfree(t);\r
-        vfree(ovsp);\r
-      }\r
-      // ...\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>ilxofs+29 && mx<ilxofs+8+29 && my>ilyofs+33 && my<ilyofs+7+33 && !moving)\r
-    {\r
-      chk_layer ^= 1;\r
-      chk_layer &= 1;\r
-      //chk_1 ^= 1;\r
-      //chk_2=0,chk_3=0,chk_4=0,chk_5=0,chk_6=0;\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>ilxofs+39 && mx<ilxofs+8+39 && my>ilyofs+33 && my<ilyofs+7+33 && !moving)\r
-    {\r
-      if (numlayers+1 >= 2)\r
-      {\r
-      chk_layer ^= 2;\r
-      chk_layer &= 2;\r
-      //chk_2 ^= 1;\r
-      //chk_1=0,chk_3=0,chk_4=0,chk_5=0,chk_6=0;\r
-      WaitRelease(); continue;\r
-      }\r
-    }\r
-\r
-    if (mb==1 && mx>ilxofs+49 && mx<ilxofs+8+49 && my>ilyofs+33 && my<ilyofs+7+33 && !moving)\r
-    {\r
-      if (numlayers+1 >= 3)\r
-      {\r
-      chk_layer ^= 4;\r
-      chk_layer &= 4;\r
-      //chk_3 ^= 1;\r
-      //chk_1=0,chk_2=0,chk_4=0,chk_5=0,chk_6=0;\r
-      WaitRelease(); continue;\r
-      }\r
-    }\r
-\r
-    if (mb==1 && mx>ilxofs+59 && mx<ilxofs+8+59 && my>ilyofs+33 && my<ilyofs+7+33 && !moving)\r
-    {\r
-      if (numlayers+1 >= 4)\r
-      {\r
-      chk_layer ^= 8;\r
-      chk_layer &= 8;\r
-      //chk_4 ^= 1;\r
-      //chk_1=0,chk_2=0,chk_3=0,chk_5=0,chk_6=0;\r
-      WaitRelease(); continue;\r
-      }\r
-    }\r
-\r
-    if (mb==1 && mx>ilxofs+69 && mx<ilxofs+8+69 && my>ilyofs+33 && my<ilyofs+7+33 && !moving)\r
-    {\r
-      if (numlayers+1 >= 5)\r
-      {\r
-      chk_layer ^= 16;\r
-      chk_layer &= 16;\r
-      //chk_5 ^= 1;\r
-      //chk_1=0,chk_2=0,chk_3=0,chk_4=0,chk_6=0;\r
-      WaitRelease(); continue;\r
-      }\r
-    }\r
-\r
-    if (mb==1 && mx>ilxofs+79 && mx<ilxofs+8+79 && my>ilyofs+33 && my<ilyofs+7+33 && !moving)\r
-    {\r
-      if (numlayers+1 >= 6)\r
-      {\r
-      chk_layer ^= 32;\r
-      chk_layer &= 32;\r
-      //chk_6 ^= 1;\r
-      //chk_1=0,chk_2=0,chk_3=0,chk_4=0,chk_5=0;\r
-      WaitRelease(); continue;\r
-      }\r
-    }\r
-\r
-    // if no checkboxes are marked, mark the first.\r
-    //if (!(chk_1+chk_2+chk_3+chk_4+chk_5+chk_6)) chk_1=1;\r
-    if (!chk_layer) chk_layer=1;\r
-\r
-//    if (mb==1 && mx>ilxofs+29 && mx<ilxofs+75+29 && my>ilyofs+12 && my<ilyofs+9+12 && !moving)\r
-//    {\r
-//      ctf=1; str=txt_imagename; cb=1;\r
-//      cursorblink=systemtime+40; continue;\r
-//    }\r
-\r
-    if (mb==1)\r
-    {\r
-      if (mx>ilxofs+74 && mx<ilxofs+12+74 && my>ilyofs+58 && my<ilyofs+9+58 && !moving)\r
-      {\r
-        if (ctf==2)\r
-        {\r
-          if (atoi(str)<minpady)\r
-            sprintf(str, "%d", minpady);\r
-        }\r
-        ctf=1; str=nstr1; cb=1;\r
-        cursorblink=systemtime+40; continue;\r
-      }\r
-\r
-      if (mx>ilxofs+74 && mx<ilxofs+12+74 && my>ilyofs+69 && my<ilyofs+9+69 && !moving)\r
-      {\r
-        if (ctf==1)\r
-        {\r
-          if (atoi(str)<minpadx)\r
-            sprintf(str, "%d", minpadx);\r
-        }\r
-        ctf=2; str=nstr2; cb=1;\r
-        cursorblink=systemtime+40; continue;\r
-      }\r
-\r
-      switch (ctf)\r
-      {\r
-        case 1: if (atoi(str) < minpadx) sprintf(str, "%d", minpadx); break;\r
-        case 2: if (atoi(str) < minpady) sprintf(str, "%d", minpady); break;\r
-      }\r
-    }\r
-\r
-    if (mb==1 && mx>ilxofs+5 && mx<ilxofs+8+5 && my>ilyofs+101 && my<ilyofs+7+101 && !moving)\r
-    {\r
-      chk_grabexcess ^= 1;\r
-      // <barf>\r
-      if (excessx+excessy)\r
-      {\r
-        if (chk_grabexcess)\r
-        {\r
-          if (excessx) tilesx++;\r
-          if (excessy) tilesy++;\r
-        }\r
-        else\r
-        {\r
-          if (excessx) tilesx--;\r
-          if (excessy) tilesy--;\r
-        }\r
-        if (tilesx<MIN_TILE_X) { minpadx=MIN_TILE_X-tilesx; num_padx=minpadx; }\r
-        if (tilesy<MIN_TILE_Y) { minpady=MIN_TILE_Y-tilesy; num_pady=minpady; }\r
-        sprintf(nstr1, "%d", minpadx);\r
-        sprintf(nstr2, "%d", minpady);\r
-        totalx=tilesx+minpadx;\r
-        totaly=tilesy+minpady;\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>ilxofs+5 && mx<ilxofs+8+5 && my>ilyofs+110 && my<ilyofs+7+110 && !moving)\r
-    {\r
-      chk_centerinpad ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>ilxofs+5 && mx<ilxofs+8+5 && my>ilyofs+119 && my<ilyofs+7+119 && !moving)\r
-    {\r
-      chk_nodup ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(ilxofs+ilxsize-9) && (mx<ilxofs+ilxsize-2)\r
-    && my>(ilyofs+1) && (my<ilyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>ilxofs && mx<ilxofs+ilxsize && my>ilyofs && my<(ilyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-ilxofs;\r
-      myo=my-ilyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-\r
-        // keep minimally required padding\r
-        if (ctf==1)\r
-        {\r
-          if (atoi(str)<minpadx)\r
-            sprintf(str, "%d", minpadx);\r
-        }\r
-        if (ctf==2)\r
-        {\r
-          if (atoi(str)<minpady)\r
-            sprintf(str, "%d", minpady);\r
-        }\r
-\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=nstr1; break;\r
-          case 1: ctf=2; str=nstr2; break;\r
-          case 2: ctf=0; str=0; break;\r
-          //case 3: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=2; str=nstr2; break;\r
-          case 1: ctf=0; str=0; break;\r
-          case 2: ctf=1; str=nstr1; break;\r
-          //case 3: ctf=2; str=nstr1; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      tt=strlen(str);\r
-      str[tt]=c;\r
-      str[tt+1]=0;\r
-      last_pressed=0;\r
-    }\r
-\r
-  } while (!done);\r
-\r
-  //num_padx=atoi(nstr1);\r
-  //num_pady=atoi(nstr2);\r
-}\r
-\r
-int dtxsize=102, dtysize=52;\r
-int dtxofs=100, dtyofs=70;\r
-// aen\r
-void Destroyer()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-  int zn_check=0,zd_check=0,ob_check=0,ent_check=0;\r
-\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      dtxofs = (mx-mxo);\r
-      dtyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (dtxofs<16) dtxofs = 16;\r
-      if (dtyofs<16) dtyofs = 16;\r
-      if (dtxofs+dtxsize>335) dtxofs = 336-dtxsize;\r
-      if (dtyofs+dtysize>sy+16) dtyofs = (sy+16)-dtysize;\r
-    }\r
-\r
-    Window(dtxofs, dtyofs, dtxofs+dtxsize, dtyofs+dtysize, "Destroyer");\r
-    CheckBox(dtxofs+4, dtyofs+11, zn_check);\r
-    CheckBox(dtxofs+4, dtyofs+31, ob_check);\r
-    CheckBox(dtxofs+4, dtyofs+21, zd_check);\r
-    GotoXY(dtxofs+15, dtyofs+12); printstring("Zones");\r
-    GotoXY(dtxofs+15, dtyofs+32); printstring("Obstructions");\r
-    GotoXY(dtxofs+15, dtyofs+22); printstring("Zone Data");\r
-    Button(dtxofs+68, dtyofs+11, "ok");\r
-    Button(dtxofs+68, dtyofs+24, "cancel");\r
-    CheckBox(dtxofs+4, dtyofs+41, ent_check);\r
-    GotoXY(dtxofs+15, dtyofs+42); printstring("Entities");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>dtxofs+4 && mx<dtxofs+8+4 && my>dtyofs+11 && my<dtyofs+7+11 && !moving)\r
-    {\r
-      zn_check ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>dtxofs+4 && mx<dtxofs+8+4 && my>dtyofs+21 && my<dtyofs+7+21 && !moving)\r
-    {\r
-      zd_check ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>dtxofs+4 && mx<dtxofs+8+4 && my>dtyofs+31 && my<dtyofs+7+31 && !moving)\r
-    {\r
-      ob_check ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>dtxofs+4 && mx<dtxofs+8+4 && my>dtyofs+41 && my<dtyofs+7+41 && !moving)\r
-    {\r
-      ent_check ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>dtxofs+68 && mx<dtxofs+30+68 && my>dtyofs+11 && my<dtyofs+10+11 && !moving)\r
-    {\r
-      // insert code for button "ok" here\r
-      ButtonPressed(dtxofs+68, dtyofs+11, "ok");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-\r
-      if (Confirm("Are you sure?"))\r
-      {\r
-        done=1;\r
-        if (ob_check) memset(obstruct, 0, (layer[0].sizex*layer[0].sizey)+4);\r
-        if (zn_check) memset(zone, 0, (layer[0].sizex*layer[0].sizey)+4);\r
-        if (zd_check)\r
-        {\r
-          numzones=0;\r
-          memset(&zones, 0, sizeof zones);\r
-        }\r
-        if (ent_check)\r
-        {\r
-          entities=0;\r
-          nmchr=0;\r
-          nms=0;\r
-          memset(&ms, 0, sizeof ms);\r
-          memset(&entity, 0, sizeof entities);\r
-          memset(&chrlist, 0, sizeof chrlist);\r
-        }\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>dtxofs+68 && mx<dtxofs+30+68 && my>dtyofs+24 && my<dtyofs+10+24 && !moving)\r
-    {\r
-      done=1;\r
-      // insert code for button "cancel" here\r
-      ButtonPressed(dtxofs+68, dtyofs+24, "cancel");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(dtxofs+dtxsize-9) && (mx<dtxofs+dtxsize-2)\r
-    && my>(dtyofs+1) && (my<dtyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>dtxofs && mx<dtxofs+dtxsize && my>dtyofs && my<(dtyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-dtxofs;\r
-      myo=my-dtyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-}\r
-\r
-void LayersSubMenu(int dx, int dy)\r
-{ char done=0;\r
-  //int mxo, myo, cursorblink;\r
-\r
-  do\r
-  {\r
-    if (dx<16) dx=16;\r
-    if (dy<16) dy=16;\r
-    if (dx+80>335) dx=336-80;\r
-    if (dy+89>sy+16) dy=(sy+16)-89;\r
-\r
-    RenderMap();\r
-    RenderGUI();\r
-    stdwindow(dx, dy, dx+80, dy+29);\r
-\r
-    if (mx>dx && mx<dx+80)\r
-    {\r
-       if (my>dy+2 && my<dy+9) FilledBox(dx+2, dy+2, 76, 7, darkw);\r
-       if (my>dy+8 && my<dy+15) FilledBox(dx+2, dy+8, 76, 7, darkw);\r
-       if (my>dy+14 && my<dy+21) FilledBox(dx+2, dy+14, 76, 7, darkw);\r
-       if (my>dy+20 && my<dy+26) FilledBox(dx+2, dy+20, 76, 7, darkw);\r
-    }\r
-\r
-    GotoXY(dx+3, dy+3); printstring("Add Layer");\r
-    GotoXY(dx+3, dy+9); printstring("Edit Layer");\r
-    GotoXY(dx+3, dy+15); printstring("Import Image");\r
-    GotoXY(dx+3, dy+21); printstring("Destroyer");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    if (mb==1 && mx>dx && mx<dx+80)\r
-    {\r
-       if (my>dy+2 && my<dy+9) { AddLayer(); NoticeDialog(); done=1; WaitRelease(); break; }\r
-       if (my>dy+8 && my<dy+15) { EditLayerProperties(); done=1; WaitRelease(); break; }\r
-       if (my>dy+14 && my<dy+21) { ImageToLayer(); done=1; WaitRelease(); break; }\r
-       if (my>dy+20 && my<dy+26) { Destroyer(); done=1; WaitRelease(); break; }\r
-    }\r
-\r
-    if (mb==1)\r
-    {\r
-      WaitRelease();\r
-      done=1;\r
-    }\r
-    if (key[SCAN_ESC]==1) done=1;\r
-  } while (!done);\r
-  key[SCAN_ESC]=0;\r
-}\r
-\r
-void ExecuteSubMenu(int dx, int dy)\r
-{ char done=0;\r
-  //int mxo, myo, cursorblink;\r
-\r
-  do\r
-  {\r
-    if (dx<16) dx=16;\r
-    if (dy<16) dy=16;\r
-    if (dx+80>335) dx=336-80;\r
-    if (dy+89>sy+16) dy=(sy+16)-89;\r
-\r
-    RenderMap();\r
-    RenderGUI();\r
-    stdwindow(dx, dy, dx+80, dy+23);\r
-\r
-    if (mx>dx && mx<dx+80)\r
-    {\r
-       if (my>dy+2 && my<dy+9) FilledBox(dx+2, dy+2, 76, 7, darkw);\r
-       if (my>dy+8 && my<dy+15) FilledBox(dx+2, dy+8, 76, 7, darkw);\r
-       if (my>dy+14 && my<dy+21) FilledBox(dx+2, dy+14, 76, 7, darkw);\r
-    }\r
-\r
-    GotoXY(dx+3, dy+3); printstring("MAP");\r
-    GotoXY(dx+3, dy+9); printstring("VERGE");\r
-    GotoXY(dx+3, dy+15); printstring("DOS");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    if (mb==1 && mx>dx && mx<dx+80)\r
-    {\r
-       if (my>dy+2 && my<dy+9)   { ShellMAP();   done=1; WaitRelease(); break; }\r
-       if (my>dy+8 && my<dy+15)  { ShellVERGE(); done=1; WaitRelease(); break; }\r
-       if (my>dy+14 && my<dy+21) { ShellToDOS(); done=1; WaitRelease(); break; }\r
-    }\r
-\r
-    if (mb==1)\r
-    {\r
-      WaitRelease();\r
-      done=1;\r
-    }\r
-    if (key[SCAN_ESC]==1) done=1;\r
-  } while (!done);\r
-  key[SCAN_ESC]=0;\r
-}\r
-\r
-void AddLayer()\r
-{\r
-  layers[numlayers]=(word *) valloc(layer[0].sizex * layer[0].sizey * 2,"layer data",numlayers);\r
-  //memset(layers[numlayers], 0, layer[0].sizex * layer[0].sizey * 2);\r
-  layer[numlayers].pmultx=1; layer[numlayers].pmulty=1;\r
-  layer[numlayers].pdivx=1;  layer[numlayers].pdivy=1;\r
-  layer[numlayers].sizex=layer[0].sizex;\r
-  layer[numlayers].sizey=layer[0].sizey;\r
-  layer[numlayers].trans=0;\r
-  layer[numlayers].hline=0;\r
-  numlayers++;\r
-}\r
-\r
-int lpxsize=190, lpysize=68;\r
-int lpxofs=40, lpyofs=60;\r
-\r
-void EditLayerProperties()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink, i;\r
-  char ctf=0, cb=0, c, t, *str;\r
-  char nstr1[80], nstr2[80], nstr3[80], nstr4[80], nstr5[80],nstr6[80];\r
-\r
-  i=el;\r
-  if (i>5) i=0;\r
-  if (i>=numlayers) i=0;\r
-\r
-  sprintf(nstr1, "%d", layer[i].pmultx);\r
-  sprintf(nstr2, "%d", layer[i].pdivx);\r
-  sprintf(nstr3, "%d", layer[i].pmulty);\r
-  sprintf(nstr4, "%d", layer[i].pdivy);\r
-  sprintf(nstr5, "%d", layer[i].trans);\r
-  sprintf(nstr6, "%d", layer[i].hline);\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      lpxofs = (mx-mxo);\r
-      lpyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (lpxofs<16) lpxofs = 16;\r
-      if (lpyofs<16) lpyofs = 16;\r
-      if (lpxofs+lpxsize>335) lpxofs = 336-lpxsize;\r
-      if (lpyofs+lpysize>sy+16) lpyofs = (sy+16)-lpysize;\r
-    }\r
-\r
-    Window(lpxofs, lpyofs, lpxofs+lpxsize, lpyofs+lpysize, "Edit Layer Properties");\r
-    GotoXY(lpxofs+3, lpyofs+10); printstring("Parallax controls:");\r
-    GotoXY(lpxofs+4, lpyofs+21); printstring("MultX:");\r
-    GotoXY(lpxofs+12, lpyofs+31); printstring("DivX:");\r
-    GotoXY(lpxofs+93, lpyofs+21); printstring("MultY:");\r
-    GotoXY(lpxofs+101, lpyofs+31); printstring("DivY:");\r
-    TextField(lpxofs+29, lpyofs+19, 60, nstr1, ctf == 1 ? cb : 0);\r
-    TextField(lpxofs+29, lpyofs+29, 60, nstr2, ctf == 2 ? cb : 0);\r
-    TextField(lpxofs+118, lpyofs+19, 60, nstr3, ctf == 3 ? cb : 0);\r
-    TextField(lpxofs+118, lpyofs+29, 60, nstr4, ctf == 4 ? cb : 0);\r
-    HLine(lpxofs+1, lpyofs+43, 188, white);\r
-    GotoXY(lpxofs+9, lpyofs+48); printstring("Transparent");\r
-    GotoXY(lpxofs+36, lpyofs+58); printstring("HLine");\r
-    TextField(lpxofs+56, lpyofs+46, 60, nstr5, ctf == 5 ? cb : 0);\r
-    TextField(lpxofs+56, lpyofs+56, 60, nstr6, ctf == 6 ? cb : 0);\r
-    Button(lpxofs+156, lpyofs+55, "OK");\r
-    GotoXY(lpxofs+144, lpyofs+47); printstring("Layer");\r
-    sprintf(strbuf,"%d",i); GotoXY(lpxofs+168, lpyofs+47); printstring(strbuf);\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>lpxofs+29 && mx<lpxofs+60+29 && my>lpyofs+19 && my<lpyofs+9+19 && !moving)\r
-    {\r
-      ctf=1; str=nstr1; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>lpxofs+29 && mx<lpxofs+60+29 && my>lpyofs+29 && my<lpyofs+9+29 && !moving)\r
-    {\r
-      ctf=2; str=nstr2; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>lpxofs+118 && mx<lpxofs+60+118 && my>lpyofs+19 && my<lpyofs+9+19 && !moving)\r
-    {\r
-      ctf=3; str=nstr3; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>lpxofs+118 && mx<lpxofs+60+118 && my>lpyofs+29 && my<lpyofs+9+29 && !moving)\r
-    {\r
-      ctf=4; str=nstr4; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>lpxofs+56 && mx<lpxofs+60+56 && my>lpyofs+46 && my<lpyofs+9+46 && !moving)\r
-    {\r
-      ctf=5; str=nstr5; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>lpxofs+56 && mx<lpxofs+60+56 && my>lpyofs+56 && my<lpyofs+9+56 && !moving)\r
-    {\r
-      ctf=6; str=nstr6; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>lpxofs+156 && mx<lpxofs+30+156 && my>lpyofs+55 && my<lpyofs+10+55 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      ButtonPressed(lpxofs+156, lpyofs+55, "OK");\r
-      DrawMouse(); done=1;\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(lpxofs+lpxsize-9) && (mx<lpxofs+lpxsize-2)\r
-    && my>(lpyofs+1) && (my<lpyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>lpxofs && mx<lpxofs+lpxsize && my>lpyofs && my<(lpyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-lpxofs;\r
-      myo=my-lpyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_UP)\r
-      {\r
-        layer[i].pmultx=atoi(nstr1);\r
-        layer[i].pdivx=atoi(nstr2);\r
-        layer[i].pmulty=atoi(nstr3);\r
-        layer[i].pdivy=atoi(nstr4);\r
-        layer[i].trans=atoi(nstr5);\r
-        layer[i].hline=atoi(nstr6);\r
-        last_pressed=0; key[SCAN_UP]=0;\r
-        if (i) i--; else i=numlayers-1;\r
-        sprintf(nstr1, "%d", layer[i].pmultx);\r
-        sprintf(nstr2, "%d", layer[i].pdivx);\r
-        sprintf(nstr3, "%d", layer[i].pmulty);\r
-        sprintf(nstr4, "%d", layer[i].pdivy);\r
-        sprintf(nstr5, "%d", layer[i].trans);\r
-        sprintf(nstr6, "%d", layer[i].hline);\r
-      }\r
-      if (last_pressed==SCAN_DOWN)\r
-      {\r
-        layer[i].pmultx=atoi(nstr1);\r
-        layer[i].pdivx=atoi(nstr2);\r
-        layer[i].pmulty=atoi(nstr3);\r
-        layer[i].pdivy=atoi(nstr4);\r
-        layer[i].trans=atoi(nstr5);\r
-        layer[i].hline=atoi(nstr6);\r
-        last_pressed=0; key[SCAN_DOWN]=0;\r
-        if (i<numlayers-1) i++; else i=0;\r
-        sprintf(nstr1, "%d", layer[i].pmultx);\r
-        sprintf(nstr2, "%d", layer[i].pdivx);\r
-        sprintf(nstr3, "%d", layer[i].pmulty);\r
-        sprintf(nstr4, "%d", layer[i].pdivy);\r
-        sprintf(nstr5, "%d", layer[i].trans);\r
-        sprintf(nstr6, "%d", layer[i].hline);\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=nstr1; break;\r
-          case 1: ctf=2; str=nstr2; break;\r
-          case 2: ctf=3; str=nstr3; break;\r
-          case 3: ctf=4; str=nstr4; break;\r
-          case 4: ctf=5; str=nstr5; break;\r
-          case 5: ctf=6; str=nstr6; break;\r
-          case 6: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=6; str=nstr6; break;\r
-          case 1: ctf=0; str=0; break;\r
-          case 2: ctf=1; str=nstr1; break;\r
-          case 3: ctf=2; str=nstr2; break;\r
-          case 4: ctf=3; str=nstr3; break;\r
-          case 5: ctf=4; str=nstr4; break;\r
-          case 6: ctf=5; str=nstr5; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-  layer[i].pmultx=atoi(nstr1);\r
-  layer[i].pdivx=atoi(nstr2);\r
-  layer[i].pmulty=atoi(nstr3);\r
-  layer[i].pdivy=atoi(nstr4);\r
-  layer[i].trans=atoi(nstr5);\r
-  layer[i].hline=atoi(nstr6);\r
-}\r
-/*\r
-int lpxsize=190, lpysize=68;\r
-int lpxofs=40, lpyofs=60;\r
-\r
-void EditLayerProperties()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink, i;\r
-  char ctf=0, cb=0, c, t, *str;\r
-  char nstr1[80], nstr2[80], nstr3[80], nstr4[80];\r
-\r
-  i=el;\r
-  if (i>5) i=0;\r
-  if (i>=numlayers) i=0;\r
-\r
-  sprintf(nstr1, "%d", layer[i].pmultx);\r
-  sprintf(nstr2, "%d", layer[i].pdivx);\r
-  sprintf(nstr3, "%d", layer[i].pmulty);\r
-  sprintf(nstr4, "%d", layer[i].pdivy);\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      lpxofs = (mx-mxo);\r
-      lpyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (lpxofs<16) lpxofs = 16;\r
-      if (lpyofs<16) lpyofs = 16;\r
-      if (lpxofs+lpxsize>335) lpxofs = 336-lpxsize;\r
-      if (lpyofs+lpysize>sy+16) lpyofs = (sy+16)-lpysize;\r
-    }\r
-\r
-    Window(lpxofs, lpyofs, lpxofs+lpxsize, lpyofs+lpysize, "Edit Layer Properties");\r
-    GotoXY(lpxofs+3, lpyofs+10); printstring("Parallax controls:");\r
-    GotoXY(lpxofs+4, lpyofs+21); printstring("MultX:");\r
-    GotoXY(lpxofs+12, lpyofs+31); printstring("DivX:");\r
-    GotoXY(lpxofs+93, lpyofs+21); printstring("MultY:");\r
-    GotoXY(lpxofs+101, lpyofs+31); printstring("DivY:");\r
-    TextField(lpxofs+29, lpyofs+19, 60, nstr1, ctf == 1 ? cb : 0);\r
-    TextField(lpxofs+29, lpyofs+29, 60, nstr2, ctf == 2 ? cb : 0);\r
-    TextField(lpxofs+118, lpyofs+19, 60, nstr3, ctf == 3 ? cb : 0);\r
-    TextField(lpxofs+118, lpyofs+29, 60, nstr4, ctf == 4 ? cb : 0);\r
-    HLine(lpxofs+1, lpyofs+43, 188, white);\r
-    GotoXY(lpxofs+6, lpyofs+49); printstring("Transparent");\r
-    GotoXY(lpxofs+32, lpyofs+56); printstring("HLine");\r
-    CheckBox(lpxofs+56, lpyofs+48, layer[i].trans);\r
-    CheckBox(lpxofs+56, lpyofs+56, layer[i].hline);\r
-    Button(lpxofs+156, lpyofs+55, "OK");\r
-    GotoXY(lpxofs+144, lpyofs+47); printstring("Layer");\r
-    sprintf(strbuf,"%d",i); GotoXY(lpxofs+168, lpyofs+47); printstring(strbuf);\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>lpxofs+29 && mx<lpxofs+60+29 && my>lpyofs+19 && my<lpyofs+9+19 && !moving)\r
-    {\r
-      ctf=1; str=nstr1; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>lpxofs+29 && mx<lpxofs+60+29 && my>lpyofs+29 && my<lpyofs+9+29 && !moving)\r
-    {\r
-      ctf=2; str=nstr2; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>lpxofs+118 && mx<lpxofs+60+118 && my>lpyofs+19 && my<lpyofs+9+19 && !moving)\r
-    {\r
-      ctf=3; str=nstr3; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>lpxofs+118 && mx<lpxofs+60+118 && my>lpyofs+29 && my<lpyofs+9+29 && !moving)\r
-    {\r
-      ctf=4; str=nstr4; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>lpxofs+56 && mx<lpxofs+8+56 && my>lpyofs+48 && my<lpyofs+7+48 && !moving)\r
-    {\r
-      layer[i].trans ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>lpxofs+56 && mx<lpxofs+8+56 && my>lpyofs+56 && my<lpyofs+7+56 && !moving)\r
-    {\r
-      layer[i].hline ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>lpxofs+156 && mx<lpxofs+30+156 && my>lpyofs+55 && my<lpyofs+10+55 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      done=1;\r
-      ButtonPressed(lpxofs+156, lpyofs+55, "OK");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(lpxofs+lpxsize-9) && (mx<lpxofs+lpxsize-2)\r
-    && my>(lpyofs+1) && (my<lpyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>lpxofs && mx<lpxofs+lpxsize && my>lpyofs && my<(lpyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-lpxofs;\r
-      myo=my-lpyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_UP)\r
-      {\r
-        layer[i].pmultx=atoi(nstr1);\r
-        layer[i].pdivx=atoi(nstr2);\r
-        layer[i].pmulty=atoi(nstr3);\r
-        layer[i].pdivy=atoi(nstr4);\r
-        last_pressed=0; key[SCAN_UP]=0;\r
-        if (i) i--; else i=numlayers-1;\r
-        sprintf(nstr1, "%d", layer[i].pmultx);\r
-        sprintf(nstr2, "%d", layer[i].pdivx);\r
-        sprintf(nstr3, "%d", layer[i].pmulty);\r
-        sprintf(nstr4, "%d", layer[i].pdivy);\r
-      }\r
-      if (last_pressed==SCAN_DOWN)\r
-      {\r
-        layer[i].pmultx=atoi(nstr1);\r
-        layer[i].pdivx=atoi(nstr2);\r
-        layer[i].pmulty=atoi(nstr3);\r
-        layer[i].pdivy=atoi(nstr4);\r
-        last_pressed=0; key[SCAN_DOWN]=0;\r
-        if (i<numlayers-1) i++; else i=0;\r
-        sprintf(nstr1, "%d", layer[i].pmultx);\r
-        sprintf(nstr2, "%d", layer[i].pdivx);\r
-        sprintf(nstr3, "%d", layer[i].pmulty);\r
-        sprintf(nstr4, "%d", layer[i].pdivy);\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=nstr1; break;\r
-          case 1: ctf=2; str=nstr2; break;\r
-          case 2: ctf=3; str=nstr3; break;\r
-          case 3: ctf=4; str=nstr4; break;\r
-          case 4: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=4; str=nstr4; break;\r
-          case 1: ctf=0; str=0; break;\r
-          case 2: ctf=1; str=nstr1; break;\r
-          case 3: ctf=2; str=nstr2; break;\r
-          case 4: ctf=3; str=nstr3; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-\r
-  layer[i].pmultx=atoi(nstr1);\r
-  layer[i].pdivx=atoi(nstr2);\r
-  layer[i].pmulty=atoi(nstr3);\r
-  layer[i].pdivy=atoi(nstr4);\r
-}\r
-   */\r
-void NewMAP()\r
-{ int cursorblink;\r
-\r
-    if (Confirm("Lose existing MAP?"))\r
-    {\r
-      for (cursorblink=0; cursorblink<numlayers; cursorblink++)\r
-        vfree(layers[cursorblink]);\r
-      memcpy(mapname,"UNTITLED.MAP",13);\r
-      memcpy(vspname,"UNTITLED.VSP",13);\r
-      memcpy(musname,"\0",1);\r
-      memcpy(rstring,"1E",2);\r
-      xstart=1; ystart=1;\r
-      numlayers=1;\r
-      wrap=0;\r
-\r
-      // aen: default newmap dimensions set to 100x100\r
-      layer[0].pmultx=1;  layer[0].pmulty=1;\r
-      layer[0].pdivx=1;   layer[0].pdivy=1;\r
-      layer[0].sizex=100; layer[0].sizey=100;\r
-      layer[0].trans=0;   layer[0].hline=0;\r
-\r
-      layers[0] = (unsigned short *)valloc((layer[0].sizex*layer[0].sizey*2)+4,"layer data",0);\r
-      vfree(obstruct);\r
-      obstruct=(char *) valloc((layer[0].sizex*layer[0].sizey)+4,"obstruct",0);\r
-      vfree(zone);\r
-      zone=(char *) valloc((layer[0].sizex*layer[0].sizey)+4,"zone",0);\r
-      entities=0; // Mordred\r
-\r
-      // aen: default number of tiles set to 100\r
-      numtiles=100;\r
-      vfree(vsp);\r
-      vsp=(char *) valloc(256 * numtiles,"vsp data",0);\r
-\r
-      // zero: was re-allocating same memory so gfx still visible in some places\r
-      memset(vsp,0,256*numtiles);\r
-      // zero: gotta clear that anim stuff man!\r
-      memset(vspanim,0,800);\r
-      InitTileIDX();\r
-\r
-\r
-\r
-      layertoggle[0]=1; layertoggle[1]=0; layertoggle[2]=0; layertoggle[3]=0;\r
-      layertoggle[4]=0; layertoggle[5]=0; layertoggle[6]=0; layertoggle[7]=0;\r
-      xwin=0; ywin=0;\r
-    }\r
-}\r
-\r
-int amxsize=150, amysize=88;\r
-int amxofs=60, amyofs=60;\r
-\r
-void About()\r
-{\r
-  char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-\r
-  last_pressed=0;\r
-\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      amxofs = (mx-mxo);\r
-      amyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (amxofs<16) amxofs = 16;\r
-      if (amyofs<16) amyofs = 16;\r
-      if (amxofs+amxsize>335) amxofs = 336-amxsize;\r
-      if (amyofs+amysize>sy+16) amyofs = (sy+16)-amysize;\r
-    }\r
-\r
-    sprintf(strbuf, "About MapEd %s", ME2_VERSION);\r
-    Window(amxofs, amyofs, amxofs+amxsize, amyofs+amysize, strbuf);\r
-    sprintf(strbuf, "MapEd v.%s", ME2_VERSION);\r
-    GotoXY(amxofs+52, amyofs+16); printstring(strbuf);\r
-    GotoXY(amxofs+31, amyofs+22); printstring("Copyright (C) 1998 vecna");\r
-    GotoXY(amxofs+40, amyofs+28); printstring("All Rights Reserved");\r
-    GotoXY(amxofs+(75-pixels("Additional code by Ric")/2), amyofs+41);\r
-    printstring("Additional code by Ric");\r
-    GotoXY(amxofs+(75-pixels("Additional code by aen")/2), amyofs+47);\r
-    printstring("Additional code by aen");\r
-    GotoXY(amxofs+(75-pixels("Additional code by zeromus")/2), amyofs+53);\r
-    printstring("Additional code by zeromus");\r
-    Button(amxofs+60, amyofs+68, "OK");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if ((mb==1 && mx>amxofs+66 && mx<amxofs+30+66 && my>amyofs+68 && my<amyofs+10+68 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      done=1;\r
-      ButtonPressed(amxofs+60, amyofs+68, "OK");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(amxofs+amxsize-9) && (mx<amxofs+amxsize-2) &&\r
-        my>(amyofs+1) && (my<amyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>amxofs && mx<amxofs+amxsize && my>amyofs && my<(amyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-amxofs;\r
-      myo=my-amyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB)\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-\r
-  } while (!done);\r
-}\r
-\r
-int cnxsize=125, cnysize=50;\r
-int cnxofs=114, cnyofs=70;\r
-\r
-int Confirm(char *message)\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-\r
-  last_pressed=0;\r
-  WaitRelease();\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      cnxofs = (mx-mxo);\r
-      cnyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (cnxofs<16) cnxofs = 16;\r
-      if (cnyofs<16) cnyofs = 16;\r
-      if (cnxofs+cnxsize>335) cnxofs = 336-cnxsize;\r
-      if (cnyofs+cnysize>sy+16) cnyofs = (sy+16)-cnysize;\r
-    }\r
-\r
-    Window(cnxofs, cnyofs, cnxofs+cnxsize, cnyofs+cnysize, "Confirm? (Y/N)");\r
-    GotoXY(cnxofs+125/2-(pixels(message)/2), cnyofs+15);  printstring(message);\r
-\r
-    Button(cnxofs+24, cnyofs+30, "Yes");\r
-    Button(cnxofs+69, cnyofs+30, "No");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>cnxofs+24 && mx<cnxofs+30+24 && my>cnyofs+30 && my<cnyofs+10+30 && !moving)\r
-    {\r
-      // insert code for button "Yes" here\r
-      ButtonPressed(cnxofs+24, cnyofs+30, "Yes");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease();\r
-      return 1;\r
-    }\r
-\r
-    if (mb==1 && mx>cnxofs+69 && mx<cnxofs+30+69 && my>cnyofs+30 && my<cnyofs+10+30 && !moving)\r
-    {\r
-      ButtonPressed(cnxofs+69, cnyofs+30, "No");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease();\r
-      return 0;\r
-    }\r
-\r
-    if (mb==1 && mx>(cnxofs+cnxsize-9) && (mx<cnxofs+cnxsize-2)\r
-        && my>(cnyofs+1) && (my<cnyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>cnxofs && mx<cnxofs+cnxsize && my>cnyofs && my<(cnyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-cnxofs;\r
-      myo=my-cnyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-      if (last_pressed==SCAN_N)\r
-      {\r
-        key[SCAN_N]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-      if (last_pressed==SCAN_Y)\r
-      {\r
-        key[SCAN_Y]=0;\r
-        return 1;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB)\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-\r
-  } while (!done);\r
-  return 0;\r
-}\r
-\r
-int lmxsize=145, lmysize=36;\r
-int lmxofs=80, lmyofs=50;\r
-\r
-void LoadMAPDialog()\r
-{ char lmapname[80];\r
-  char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-\r
-  memset(lmapname, 0, 80);\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      lmxofs = (mx-mxo);\r
-      lmyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (lmxofs<16) lmxofs = 16;\r
-      if (lmyofs<16) lmyofs = 16;\r
-      if (lmxofs+lmxsize>335) lmxofs = 336-lmxsize;\r
-      if (lmyofs+lmysize>sy+16) lmyofs = (sy+16)-lmysize;\r
-    }\r
-\r
-    Window(lmxofs, lmyofs, lmxofs+lmxsize, lmyofs+lmysize, "Load MAP");\r
-    GotoXY(lmxofs+2, lmyofs+13); printstring("Load MAP:");\r
-    TextField(lmxofs+38, lmyofs+11, 70, lmapname, ctf == 1 ? cb : 0);\r
-    Button(lmxofs+79, lmyofs+22, "OK");\r
-    Button(lmxofs+111, lmyofs+22, "Cancel");\r
-    Button(lmxofs+111, lmyofs+11, "Browse");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>lmxofs+38 && mx<lmxofs+70+38 && my>lmyofs+11 && my<lmyofs+9+11 && !moving)\r
-    {\r
-      ctf=1; str=lmapname; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>lmxofs+79 && mx<lmxofs+30+79 && my>lmyofs+22 && my<lmyofs+10+22 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      if (modified)\r
-         if (!Confirm("Lose unsaved changes?")) { done=1; continue; }\r
-      for (cursorblink=0; cursorblink<numlayers; cursorblink++)\r
-           vfree(layers[cursorblink]);\r
-      vfree(obstruct);\r
-      vfree(zone);\r
-      vfree(vsp);\r
-\r
-      memcpy(mapname, lmapname, strlen(lmapname)+1);\r
-      LoadMAP(mapname);\r
-      InitTileIDX();\r
-      xwin=0; ywin=0; done=1;\r
-\r
-      ButtonPressed(lmxofs+79, lmyofs+22, "OK");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>lmxofs+111 && mx<lmxofs+30+111 && my>lmyofs+22 && my<lmyofs+10+22 && !moving)\r
-    {\r
-      // insert code for button "Cancel" here\r
-      ButtonPressed(lmxofs+111, lmyofs+22, "Cancel");\r
-      DrawMouse(); done=1;\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>lmxofs+111 && mx<lmxofs+30+111 && my>lmyofs+11 && my<lmyofs+10+11 && !moving) || (key[SCAN_ALT] && key[SCAN_B]))\r
-    {\r
-      // insert code for button "Browse" here\r
-      ButtonPressed(lmxofs+111, lmyofs+11, "Browse");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease();\r
-      Browse(1,"*.map","","","",lmapname);\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(lmxofs+lmxsize-9) && (mx<lmxofs+lmxsize-2)\r
-    && my>(lmyofs+1) && (my<lmyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>lmxofs && mx<lmxofs+lmxsize && my>lmyofs && my<(lmyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-lmxofs;\r
-      myo=my-lmyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB)\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=lmapname; break;\r
-          case 1: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-\r
-  } while (!done);\r
-}\r
-\r
-int lvxsize=145, lvysize=35;\r
-int lvxofs=80, lvyofs=50;\r
-\r
-void LoadVSPDialog()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-  char lvspname[80];\r
-\r
-  last_pressed=0;\r
-  memset(lvspname,0,80);\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      lvxofs = (mx-mxo);\r
-      lvyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (lvxofs<16) lvxofs = 16;\r
-      if (lvyofs<16) lvyofs = 16;\r
-      if (lvxofs+lvxsize>335) lvxofs = 336-lvxsize;\r
-      if (lvyofs+lvysize>sy+16) lvyofs = (sy+16)-lvysize;\r
-    }\r
-\r
-    Window(lvxofs, lvyofs, lvxofs+lvxsize, lvyofs+lvysize, "Load VSP");\r
-    GotoXY(lvxofs+2, lvyofs+13); printstring("Load VSP:");\r
-    TextField(lvxofs+38, lvyofs+11, 70, lvspname, ctf == 1 ? cb : 0);\r
-    Button(lvxofs+79, lvyofs+21, "OK");\r
-    Button(lvxofs+111, lvyofs+21, "Cancel");\r
-    Button(lvxofs+111, lvyofs+10, "Browse");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>lvxofs+38 && mx<lvxofs+70+38 && my>lvyofs+11 && my<lvyofs+9+11 && !moving)\r
-    {\r
-      ctf=1; str=lvspname; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>lvxofs+79 && mx<lvxofs+30+79 && my>lvyofs+21 && my<lvyofs+10+21 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      vfree(vsp);\r
-      memcpy(vspname, lvspname, strlen(lvspname)+1);\r
-      LoadVSP(vspname);\r
-      InitTileIDX();\r
-      ButtonPressed(lvxofs+79, lvyofs+21, "OK");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      done=1;\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>lvxofs+111 && mx<lvxofs+30+111 && my>lvyofs+21 && my<lvyofs+10+21 && !moving)\r
-    {\r
-      // insert code for button "Cancel" here\r
-      ButtonPressed(lvxofs+111, lvyofs+21, "Cancel");\r
-      DrawMouse(); done=1;\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>lvxofs+111 && mx<lvxofs+30+111 && my>lvyofs+10 && my<lvyofs+10+10 && !moving) || (key[SCAN_ALT] && key[SCAN_B]))\r
-    {\r
-      // insert code for button "Browse" here\r
-      ButtonPressed(lvxofs+111, lvyofs+10, "Browse");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      Browse(1,"*.vsp","","","",lvspname);\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(lvxofs+lvxsize-9) && (mx<lvxofs+lvxsize-2)\r
-    && my>(lvyofs+1) && (my<lvyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>lvxofs && mx<lvxofs+lvxsize && my>lvyofs && my<(lvyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-lvxofs;\r
-      myo=my-lvyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=lvspname; break;\r
-          case 1: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=lvspname; break;\r
-          case 1: ctf=0; str=lvspname; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-}\r
-int mpxsize=175, mpysize=37;\r
-int mpxofs=60, mpyofs=60;\r
-\r
-void MPDialog()\r
-{ char done=0, moving=0, playmod[80];\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-\r
-  last_pressed=0;\r
-  memset(playmod, 0, 80);\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      mpxofs = (mx-mxo);\r
-      mpyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (mpxofs<16) mpxofs = 16;\r
-      if (mpyofs<16) mpyofs = 16;\r
-      if (mpxofs+mpxsize>335) mpxofs = 336-mpxsize;\r
-      if (mpyofs+mpysize>sy+16) mpyofs = (sy+16)-mpysize;\r
-    }\r
-\r
-    Window(mpxofs, mpyofs, mpxofs+mpxsize, mpyofs+mpysize, "MOD Player Controls");\r
-    GotoXY(mpxofs+2, mpyofs+15); printstring("MOD Playing:");\r
-    TextField(mpxofs+49, mpyofs+13, 90, playmod, ctf == 1 ? cb : 0);\r
-    Button(mpxofs+110, mpyofs+24, "Play");\r
-    Button(mpxofs+142, mpyofs+24, "Stop");\r
-    Button(mpxofs+78, mpyofs+24, "OK");\r
-    Button(mpxofs+142, mpyofs+12, "Browse");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>mpxofs+49 && mx<mpxofs+90+49 && my>mpyofs+13 && my<mpyofs+9+13 && !moving)\r
-    {\r
-      ctf=1; str=playmod; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>mpxofs+110 && mx<mpxofs+30+110 && my>mpyofs+24 && my<mpyofs+10+24 && !moving)\r
-    {\r
-      // insert code for button "Play" here\r
-      ButtonPressed(mpxofs+110, mpyofs+24, "Play");\r
-      PlayMusic(playmod);\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>mpxofs+142 && mx<mpxofs+30+142 && my>mpyofs+24 && my<mpyofs+10+24 && !moving)\r
-    {\r
-      // insert code for button "Stop" here\r
-      memset(playingmod, 0, 80);\r
-      memset(playmod, 0, 80);\r
-      StopMusic();\r
-      ButtonPressed(mpxofs+142, mpyofs+24, "Stop");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>mpxofs+78 && mx<mpxofs+30+78 && my>mpyofs+24 && my<mpyofs+10+24 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      done=1;\r
-      ButtonPressed(mpxofs+78, mpyofs+24, "OK");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>mpxofs+142 && mx<mpxofs+30+142 && my>mpyofs+12 && my<mpyofs+10+12 && !moving) || (key[SCAN_ALT] && key[SCAN_B]))\r
-    {\r
-      // insert code for button "Browse" here\r
-      ButtonPressed(mpxofs+142, mpyofs+12, "Browse");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      Browse(4,"*.s3m","*.mod","*.xm",".it",playmod);\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(mpxofs+mpxsize-9) && (mx<mpxofs+mpxsize-2)\r
-    && my>(mpyofs+1) && (my<mpyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>mpxofs && mx<mpxofs+mpxsize && my>mpyofs && my<(mpyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-mpxofs;\r
-      myo=my-mpyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=playmod; break;\r
-          case 1: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=playmod; break;\r
-          case 1: ctf=0; str=playmod; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-}\r
-\r
-int zexsize=135, zeysize=86;\r
-int zexofs=80, zeyofs=40;\r
-\r
-void ZoneEdDialog()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink, i=0;\r
-  char ctf=0, cb=0, c, t, *str;\r
-  char nstr1[80], nstr2[80], nstr3[80], nstr4[80];\r
-\r
-  i=curzone;\r
-  sprintf(nstr1, "%d", zones[i].script);\r
-  sprintf(nstr2, "%d", zones[i].percent);\r
-  sprintf(nstr3, "%d", zones[i].delay);\r
-  sprintf(nstr4, "%d", zones[i].entityscript);\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      zexofs = (mx-mxo);\r
-      zeyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (zexofs<16) zexofs = 16;\r
-      if (zeyofs<16) zeyofs = 16;\r
-      if (zexofs+zexsize>335) zexofs = 336-zexsize;\r
-      if (zeyofs+zeysize>sy+16) zeyofs = (sy+16)-zeysize;\r
-    }\r
-\r
-    Window(zexofs, zeyofs, zexofs+zexsize, zeyofs+zeysize, "Zone Editor");\r
-    GotoXY(zexofs+8, zeyofs+12); printstring("Name:");\r
-    TextField(zexofs+30, zeyofs+10, 100, zones[i].name, ctf == 1 ? cb : 0);\r
-    GotoXY(zexofs+5, zeyofs+22); printstring("Script:");\r
-    TextField(zexofs+30, zeyofs+20, 100, nstr1, ctf == 2 ? cb : 0);\r
-    GotoXY(zexofs+2, zeyofs+32); printstring("Chance:");\r
-    TextField(zexofs+30, zeyofs+30, 100, nstr2, ctf == 3 ? cb : 0);\r
-    GotoXY(zexofs+7, zeyofs+42); printstring("Delay:");\r
-    TextField(zexofs+30, zeyofs+40, 100, nstr3, ctf == 4 ? cb : 0);\r
-    GotoXY(zexofs+4, zeyofs+52); printstring("Entity:");\r
-    TextField(zexofs+30, zeyofs+50, 100, nstr4, ctf == 5 ? cb : 0);\r
-    CheckBox(zexofs+20, zeyofs+61, zones[i].aaa);\r
-    GotoXY(zexofs+31, zeyofs+62); printstring("Allow Adjacent Activation");\r
-    Button(zexofs+99, zeyofs+71, "OK");\r
-    GotoXY(zexofs+12, zeyofs+73); printstring("Zone");\r
-    GotoXY(zexofs+30, zeyofs+73);\r
-    sprintf(strbuf,"%d",i); printstring(strbuf);\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>zexofs+30 && mx<zexofs+100+30 && my>zeyofs+10 && my<zeyofs+9+10 && !moving)\r
-    {\r
-      ctf=1; str=zones[i].name; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>zexofs+30 && mx<zexofs+100+30 && my>zeyofs+20 && my<zeyofs+9+20 && !moving)\r
-    {\r
-      ctf=2; str=nstr1; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>zexofs+30 && mx<zexofs+100+30 && my>zeyofs+30 && my<zeyofs+9+30 && !moving)\r
-    {\r
-      ctf=3; str=nstr2; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>zexofs+30 && mx<zexofs+100+30 && my>zeyofs+40 && my<zeyofs+9+40 && !moving)\r
-    {\r
-      ctf=4; str=nstr3; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>zexofs+30 && mx<zexofs+100+30 && my>zeyofs+50 && my<zeyofs+9+50 && !moving)\r
-    {\r
-      ctf=5; str=nstr4; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>zexofs+20 && mx<zexofs+8+20 && my>zeyofs+61 && my<zeyofs+7+61 && !moving)\r
-    {\r
-      zones[i].aaa ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>zexofs+99 && mx<zexofs+30+99 && my>zeyofs+71 && my<zeyofs+10+71 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      done=1;\r
-      ButtonPressed(zexofs+99, zeyofs+71, "OK");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(zexofs+zexsize-9) && (mx<zexofs+zexsize-2)\r
-    && my>(zeyofs+1) && (my<zeyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>zexofs && mx<zexofs+zexsize && my>zeyofs && my<(zeyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-zexofs;\r
-      myo=my-zeyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-      if (last_pressed==SCAN_UP)\r
-      {\r
-        zones[i].script=atoi(nstr1);\r
-        zones[i].percent=atoi(nstr2);\r
-        zones[i].delay=atoi(nstr3);\r
-        zones[i].entityscript=atoi(nstr4);\r
-        if (i<255) i++; else i=0;\r
-        last_pressed=0; key[SCAN_UP]=0;\r
-        sprintf(nstr1, "%d", zones[i].script);\r
-        sprintf(nstr2, "%d", zones[i].percent);\r
-        sprintf(nstr3, "%d", zones[i].delay);\r
-        sprintf(nstr4, "%d", zones[i].entityscript);\r
-        continue;\r
-      }\r
-      if (last_pressed==SCAN_DOWN)\r
-      {\r
-        zones[i].script=atoi(nstr1);\r
-        zones[i].percent=atoi(nstr2);\r
-        zones[i].delay=atoi(nstr3);\r
-        zones[i].entityscript=atoi(nstr4);\r
-        if (i) i--; else i=255;\r
-        last_pressed=0; key[SCAN_DOWN]=0;\r
-        sprintf(nstr1, "%d", zones[i].script);\r
-        sprintf(nstr2, "%d", zones[i].percent);\r
-        sprintf(nstr3, "%d", zones[i].delay);\r
-        sprintf(nstr4, "%d", zones[i].entityscript);\r
-        continue;\r
-      }\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=zones[i].name; break;\r
-          case 1: ctf=2; str=nstr1; break;\r
-          case 2: ctf=3; str=nstr2; break;\r
-          case 3: ctf=4; str=nstr3; break;\r
-          case 4: ctf=5; str=nstr4; break;\r
-          case 5: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=5; str=nstr4; break;\r
-          case 1: ctf=0; str=0; break;\r
-          case 2: ctf=1; str=zones[i].name; break;\r
-          case 3: ctf=2; str=nstr1; break;\r
-          case 4: ctf=3; str=nstr2; break;\r
-          case 5: ctf=4; str=nstr3; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-\r
-  } while (!done);\r
-  curzone=i;\r
-  zones[i].script=atoi(nstr1);\r
-  zones[i].percent=atoi(nstr2);\r
-  zones[i].delay=atoi(nstr3);\r
-  zones[i].entityscript=atoi(nstr4);\r
-}\r
-\r
-int exsize=180, eysize=175;\r
-int exofs=70, eyofs=30;\r
-\r
-void EntityEditor(int i)\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-  char nstr1[80], nstr2[80], nstr3[80], nstr4[80], nstr5[80], nstr6[80], nstr7[80], nstr8[80], nstr9[80], nstr10[80], nstr11[80], nstr12[80], nstr13[80];\r
-\r
-  sprintf(nstr1, "%d", entity[i].x);\r
-  sprintf(nstr2, "%d", entity[i].y);\r
-  sprintf(nstr3, "%d", entity[i].chrindex);\r
-  sprintf(nstr4, "%d", entity[i].speed);\r
-  sprintf(nstr5, "%d", entity[i].actscript);\r
-  sprintf(nstr6, "%d", entity[i].movecode);\r
-  sprintf(nstr7, "%d", entity[i].step);\r
-  sprintf(nstr8, "%d", entity[i].data2);\r
-  sprintf(nstr9, "%d", entity[i].data3);\r
-  sprintf(nstr10, "%d", entity[i].delay);\r
-  sprintf(nstr11, "%d", entity[i].data5);\r
-  sprintf(nstr12, "%d", entity[i].data6);\r
-  sprintf(nstr13, "%d", entity[i].movescript);\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      exofs = (mx-mxo);\r
-      eyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (exofs<16) exofs = 16;\r
-      if (eyofs<16) eyofs = 16;\r
-      if (exofs+exsize>335) exofs = 336-exsize;\r
-      if (eyofs+eysize>sy+16) eyofs = (sy+16)-eysize;\r
-    }\r
-\r
-    Window(exofs, eyofs, exofs+exsize, eyofs+eysize, "Entity Editor");\r
-    GotoXY(exofs+7, eyofs+13); printstring("Desc:");\r
-    TextField(exofs+26, eyofs+11, 80, entity[i].desc, ctf == 1 ? cb : 0);\r
-    GotoXY(exofs+19, eyofs+23); printstring("X:");\r
-    TextField(exofs+26, eyofs+21, 80, nstr1, ctf == 2 ? cb : 0);\r
-    GotoXY(exofs+19, eyofs+33); printstring("Y:");\r
-    TextField(exofs+26, eyofs+31, 80, nstr2, ctf == 3 ? cb : 0);\r
-    GotoXY(exofs+11, eyofs+43); printstring("CHR:");\r
-    TextField(exofs+26, eyofs+41, 80, nstr3, ctf == 4 ? cb : 0);\r
-\r
-    // ***\r
-    // entity image goes here (just above chr list button)\r
-    // ***\r
-\r
-    BigButton(exofs+116, eyofs+61, "CHR List");\r
-    BigButton(exofs+115, eyofs+153, "Scripts");\r
-    GotoXY(exofs+2, eyofs+155); printstring("Movescript:");\r
-    HLine(exofs+1, eyofs+73, 178, white);\r
-    GotoXY(exofs+3, eyofs+53); printstring("Speed:");\r
-    TextField(exofs+26, eyofs+51, 80, nstr4, ctf == 5 ? cb : 0);\r
-    TextField(exofs+26, eyofs+61, 80, nstr5, ctf == 6 ? cb : 0);\r
-    GotoXY(exofs+107, eyofs+79); printstring("Is Obstruction");\r
-    CheckBox(exofs+161, eyofs+87, entity[i].obsmode1);\r
-    GotoXY(exofs+102, eyofs+88); printstring("Is Obstructable");\r
-    CheckBox(exofs+161, eyofs+78, entity[i].obsmode2);\r
-    GotoXY(exofs+24, eyofs+79); printstring("Auto Face");\r
-    CheckBox(exofs+61, eyofs+78, entity[i].face);\r
-    GotoXY(exofs+10, eyofs+88); printstring("Activ. Method");\r
-    CheckBox(exofs+61, eyofs+87, entity[i].actm);\r
-    HLine(exofs+1, eyofs+98, 178, white);\r
-    GotoXY(exofs+126, eyofs+166); printstring("Entity");\r
-    GotoXY(exofs+6, eyofs+104); printstring("Move Code:");\r
-    TextField(exofs+47, eyofs+103, 80, nstr6, ctf == 7 ? cb : 0);\r
-    TextField(exofs+30, eyofs+115, 40, nstr7, ctf == 8 ? cb : 0);\r
-    TextField(exofs+30, eyofs+125, 40, nstr8, ctf == 9 ? cb : 0);\r
-    TextField(exofs+30, eyofs+135, 40, nstr9, ctf == 10 ? cb : 0);\r
-    TextField(exofs+113, eyofs+115, 40, nstr10, ctf == 11 ? cb : 0);\r
-    TextField(exofs+113, eyofs+125, 40, nstr11, ctf == 12 ? cb : 0);\r
-    TextField(exofs+113, eyofs+135, 40, nstr12, ctf == 13 ? cb : 0);\r
-    HLine(exofs+1, eyofs+148, 178, white);\r
-    TextField(exofs+46, eyofs+153, 60, nstr13, ctf == 14 ? cb : 0);\r
-    GotoXY(exofs+5, eyofs+63); printstring("Activ:");\r
-    GotoXY(exofs+152, eyofs+166);\r
-    sprintf(strbuf, "%d/%d", i, entities-1); printstring(strbuf);\r
-    entity[i].movecode=atoi(nstr6);\r
-    if (ctf!=4) entity[i].chrindex=atoi(nstr3);\r
-\r
-    switch (entity[i].movecode)\r
-    {\r
-      case 0: GotoXY(exofs+131, eyofs+104); printstring("Stopped"); break;\r
-      case 1: GotoXY(exofs+131, eyofs+104); printstring("Wander");\r
-              GotoXY(exofs+11, eyofs+116); printstring("Step:");\r
-              GotoXY(exofs+90, eyofs+116); printstring("Delay:"); break;\r
-      case 2: GotoXY(exofs+131, eyofs+104); printstring("Wander Zone");\r
-              GotoXY(exofs+11, eyofs+116); printstring("Step:");\r
-              GotoXY(exofs+90, eyofs+116); printstring("Delay:");\r
-              GotoXY(exofs+10, eyofs+126); printstring("Zone:"); break;\r
-      case 3: GotoXY(exofs+131, eyofs+104); printstring("Wander Box");\r
-              GotoXY(exofs+11, eyofs+116); printstring("Step:");\r
-              GotoXY(exofs+90, eyofs+116); printstring("Delay:");\r
-              GotoXY(exofs+21, eyofs+126); printstring("X1:");\r
-              GotoXY(exofs+21, eyofs+136); printstring("Y1:");\r
-              GotoXY(exofs+102, eyofs+126); printstring("X2:");\r
-              GotoXY(exofs+102, eyofs+136); printstring("Y2:"); break;\r
-      case 4: GotoXY(exofs+131, eyofs+104); printstring("Scripted"); break;\r
-    }\r
-    switch (entity[i].actm)\r
-    {\r
-      case 0: GotoXY(exofs+72, eyofs+88); printstring("Actv"); break;\r
-      case 1: GotoXY(exofs+72, eyofs+88); printstring("Adjc"); break;\r
-    }\r
-\r
-    if (chrs[entity[i].chrindex].frame)\r
-      TCopySprite(exofs+143-(chrs[entity[i].chrindex].fx/2),\r
-                  eyofs+31-(chrs[entity[i].chrindex].fy/2),\r
-                  chrs[entity[i].chrindex].fx, chrs[entity[i].chrindex].fy,\r
-                  chrs[entity[i].chrindex].frame);\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>exofs+26 && mx<exofs+80+26 && my>eyofs+11 && my<eyofs+9+11 && !moving)\r
-    {\r
-      ctf=1; str=entity[i].desc; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+26 && mx<exofs+80+26 && my>eyofs+21 && my<eyofs+9+21 && !moving)\r
-    {\r
-      ctf=2; str=nstr1; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+26 && mx<exofs+80+26 && my>eyofs+31 && my<eyofs+9+31 && !moving)\r
-    {\r
-      ctf=3; str=nstr2; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+26 && mx<exofs+80+26 && my>eyofs+41 && my<eyofs+9+41 && !moving)\r
-    {\r
-      ctf=4; str=nstr3; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+116 && mx<exofs+50+116 && my>eyofs+61 && my<eyofs+10+61 && !moving)\r
-    {\r
-      // insert code for button "CHR List" here\r
-      BigButtonPressed(exofs+116, eyofs+61, "CHR List");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      CHRList();\r
-//      DoCHRdealy();\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+26 && mx<exofs+80+26 && my>eyofs+51 && my<eyofs+9+51 && !moving)\r
-    {\r
-      ctf=5; str=nstr4; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+26 && mx<exofs+80+26 && my>eyofs+61 && my<eyofs+9+61 && !moving)\r
-    {\r
-      ctf=6; str=nstr5; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+115 && mx<exofs+50+115 && my>eyofs+153 && my<eyofs+10+153 && !moving)\r
-    {\r
-      // insert code for button "Scripts..." here\r
-      BigButtonPressed(exofs+115, eyofs+153, "Scripts");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      MoveScriptDialog();\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+161 && mx<exofs+8+161 && my>eyofs+87 && my<eyofs+7+87 && !moving)\r
-    {\r
-      entity[i].obsmode1 ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+161 && mx<exofs+8+161 && my>eyofs+78 && my<eyofs+7+78 && !moving)\r
-    {\r
-      entity[i].obsmode2 ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+61 && mx<exofs+8+61 && my>eyofs+78 && my<eyofs+7+78 && !moving)\r
-    {\r
-      entity[i].face ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+61 && mx<exofs+8+61 && my>eyofs+87 && my<eyofs+7+87 && !moving)\r
-    {\r
-      entity[i].actm ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+47 && mx<exofs+80+47 && my>eyofs+103 && my<eyofs+9+103 && !moving)\r
-    {\r
-      ctf=7; str=nstr6; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+30 && mx<exofs+40+30 && my>eyofs+115 && my<eyofs+9+115 && !moving)\r
-    {\r
-      ctf=8; str=nstr7; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+30 && mx<exofs+40+30 && my>eyofs+125 && my<eyofs+9+125 && !moving)\r
-    {\r
-      ctf=9; str=nstr8; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+30 && mx<exofs+40+30 && my>eyofs+135 && my<eyofs+9+135 && !moving)\r
-    {\r
-      ctf=10; str=nstr9; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+113 && mx<exofs+40+113 && my>eyofs+115 && my<eyofs+9+115 && !moving)\r
-    {\r
-      ctf=11; str=nstr10; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+113 && mx<exofs+40+113 && my>eyofs+125 && my<eyofs+9+125 && !moving)\r
-    {\r
-      ctf=12; str=nstr11; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+113 && mx<exofs+40+113 && my>eyofs+135 && my<eyofs+9+135 && !moving)\r
-    {\r
-      ctf=13; str=nstr12; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+46 && mx<exofs+60+46 && my>eyofs+153 && my<eyofs+9+153 && !moving)\r
-    {\r
-      ctf=14; str=nstr13; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(exofs+exsize-9) && (mx<exofs+exsize-2)\r
-    && my>(eyofs+1) && (my<eyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs && mx<exofs+exsize && my>eyofs && my<(eyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-exofs;\r
-      myo=my-eyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_UP)\r
-      {\r
-        entity[i].x=atoi(nstr1);\r
-        entity[i].y=atoi(nstr2);\r
-        entity[i].chrindex=atoi(nstr3);\r
-        entity[i].speed=atoi(nstr4);\r
-        entity[i].actscript=atoi(nstr5);\r
-        entity[i].movecode=atoi(nstr6);\r
-        entity[i].step=atoi(nstr7);\r
-        entity[i].data2=atoi(nstr8);\r
-        entity[i].data3=atoi(nstr9);\r
-        entity[i].delay=atoi(nstr10);\r
-        entity[i].data5=atoi(nstr11);\r
-        entity[i].data6=atoi(nstr12);\r
-        entity[i].movescript=atoi(nstr13);\r
-\r
-        if (i<entities-1) i++; else i=0;\r
-        last_pressed=0; key[SCAN_UP]=0;\r
-\r
-        sprintf(nstr1, "%d", entity[i].x);\r
-        sprintf(nstr2, "%d", entity[i].y);\r
-        sprintf(nstr3, "%d", entity[i].chrindex);\r
-        sprintf(nstr4, "%d", entity[i].speed);\r
-        sprintf(nstr5, "%d", entity[i].actscript);\r
-        sprintf(nstr6, "%d", entity[i].movecode);\r
-        sprintf(nstr7, "%d", entity[i].step);\r
-        sprintf(nstr8, "%d", entity[i].data2);\r
-        sprintf(nstr9, "%d", entity[i].data3);\r
-        sprintf(nstr10, "%d", entity[i].delay);\r
-        sprintf(nstr11, "%d", entity[i].data5);\r
-        sprintf(nstr12, "%d", entity[i].data6);\r
-        sprintf(nstr13, "%d", entity[i].movescript);\r
-        continue;\r
-      }\r
-      if (last_pressed==SCAN_DOWN)\r
-      {\r
-        entity[i].x=atoi(nstr1);\r
-        entity[i].y=atoi(nstr2);\r
-        entity[i].chrindex=atoi(nstr3);\r
-        entity[i].speed=atoi(nstr4);\r
-        entity[i].actscript=atoi(nstr5);\r
-        entity[i].movecode=atoi(nstr6);\r
-        entity[i].step=atoi(nstr7);\r
-        entity[i].data2=atoi(nstr8);\r
-        entity[i].data3=atoi(nstr9);\r
-        entity[i].delay=atoi(nstr10);\r
-        entity[i].data5=atoi(nstr11);\r
-        entity[i].data6=atoi(nstr12);\r
-        entity[i].movescript=atoi(nstr13);\r
-\r
-        if (i) i--; else i=entities-1;\r
-        last_pressed=0; key[SCAN_DOWN]=0;\r
-\r
-        sprintf(nstr1, "%d", entity[i].x);\r
-        sprintf(nstr2, "%d", entity[i].y);\r
-        sprintf(nstr3, "%d", entity[i].chrindex);\r
-        sprintf(nstr4, "%d", entity[i].speed);\r
-        sprintf(nstr5, "%d", entity[i].actscript);\r
-        sprintf(nstr6, "%d", entity[i].movecode);\r
-        sprintf(nstr7, "%d", entity[i].step);\r
-        sprintf(nstr8, "%d", entity[i].data2);\r
-        sprintf(nstr9, "%d", entity[i].data3);\r
-        sprintf(nstr10, "%d", entity[i].delay);\r
-        sprintf(nstr11, "%d", entity[i].data5);\r
-        sprintf(nstr12, "%d", entity[i].data6);\r
-        sprintf(nstr13, "%d", entity[i].movescript);\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=entity[i].desc; break;\r
-          case 1: ctf=2; str=nstr1; break;\r
-          case 2: ctf=3; str=nstr2; break;\r
-          case 3: ctf=4; str=nstr3; break;\r
-          case 4: ctf=5; str=nstr4; break;\r
-          case 5: ctf=6; str=nstr5; break;\r
-          case 6: ctf=7; str=nstr6; break;\r
-          case 7: ctf=8; str=nstr7; break;\r
-          case 8: ctf=9; str=nstr8; break;\r
-          case 9: ctf=10; str=nstr9; break;\r
-          case 10: ctf=11; str=nstr10; break;\r
-          case 11: ctf=12; str=nstr11; break;\r
-          case 12: ctf=13; str=nstr12; break;\r
-          case 13: ctf=14; str=nstr13; break;\r
-          case 14: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=13; str=nstr12; break;\r
-          case 1: ctf=0; str=0; break;\r
-          case 2: ctf=1; str=entity[i].desc; break;\r
-          case 3: ctf=2; str=nstr1; break;\r
-          case 4: ctf=3; str=nstr2; break;\r
-          case 5: ctf=4; str=nstr3; break;\r
-          case 6: ctf=5; str=nstr4; break;\r
-          case 7: ctf=6; str=nstr5; break;\r
-          case 8: ctf=7; str=nstr6; break;\r
-          case 9: ctf=8; str=nstr7; break;\r
-          case 10: ctf=9; str=nstr8; break;\r
-          case 11: ctf=10; str=nstr9; break;\r
-          case 12: ctf=11; str=nstr10; break;\r
-          case 13: ctf=12; str=nstr11; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-  entity[i].x=atoi(nstr1);\r
-  entity[i].y=atoi(nstr2);\r
-  entity[i].chrindex=atoi(nstr3);\r
-  entity[i].speed=atoi(nstr4);\r
-  entity[i].actscript=atoi(nstr5);\r
-  entity[i].movecode=atoi(nstr6);\r
-  entity[i].step=atoi(nstr7);\r
-  entity[i].data2=atoi(nstr8);\r
-  entity[i].data3=atoi(nstr9);\r
-  entity[i].delay=atoi(nstr10);\r
-  entity[i].data5=atoi(nstr11);\r
-  entity[i].data6=atoi(nstr12);\r
-  entity[i].movescript=atoi(nstr13);\r
-}\r
-\r
-int clxsize=170, clysize=78;\r
-int clxofs=105, clyofs=80;\r
-char base=0;\r
-\r
-void CHRList()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      clxofs = (mx-mxo);\r
-      clyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (clxofs<16) clxofs = 16;\r
-      if (clyofs<16) clyofs = 16;\r
-      if (clxofs+clxsize>335) clxofs = 336-clxsize;\r
-      if (clyofs+clysize>sy+16) clyofs = (sy+16)-clysize;\r
-    }\r
-\r
-    Window(clxofs, clyofs, clxofs+clxsize, clyofs+clysize, "Entity CHR Reference Index");\r
-    TextField(clxofs+14, clyofs+11, 120, chrlist[base].t, ctf == 1 ? cb : 0);\r
-    TextField(clxofs+14, clyofs+22, 120, chrlist[base+1].t, ctf == 2 ? cb : 0);\r
-    TextField(clxofs+14, clyofs+33, 120, chrlist[base+2].t, ctf == 3 ? cb : 0);\r
-    TextField(clxofs+14, clyofs+44, 120, chrlist[base+3].t, ctf == 4 ? cb : 0);\r
-    TextField(clxofs+14, clyofs+55, 120, chrlist[base+4].t, ctf == 5 ? cb : 0);\r
-    Button(clxofs+137, clyofs+65, "OK");\r
-    Button(clxofs+137, clyofs+10, "Browse");\r
-    Button(clxofs+137, clyofs+21, "Browse");\r
-    Button(clxofs+137, clyofs+32, "Browse");\r
-    Button(clxofs+137, clyofs+43, "Browse");\r
-    Button(clxofs+137, clyofs+54, "Browse");\r
-    GotoXY(clxofs+3, clyofs+11); sprintf(strbuf,"%d:", base); printstring(strbuf);\r
-    GotoXY(clxofs+3, clyofs+22); sprintf(strbuf,"%d:", base+1); printstring(strbuf);\r
-    GotoXY(clxofs+3, clyofs+33); sprintf(strbuf,"%d:", base+2); printstring(strbuf);\r
-    GotoXY(clxofs+3, clyofs+44); sprintf(strbuf,"%d:", base+3); printstring(strbuf);\r
-    GotoXY(clxofs+3, clyofs+55); sprintf(strbuf,"%d:", base+4); printstring(strbuf);\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>clxofs+14 && mx<clxofs+120+14 && my>clyofs+11 && my<clyofs+9+11 && !moving)\r
-    {\r
-      ctf=1; str=chrlist[base].t; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>clxofs+14 && mx<clxofs+120+14 && my>clyofs+22 && my<clyofs+9+22 && !moving)\r
-    {\r
-      ctf=2; str=chrlist[base+1].t; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>clxofs+14 && mx<clxofs+120+14 && my>clyofs+33 && my<clyofs+9+33 && !moving)\r
-    {\r
-      ctf=3; str=chrlist[base+2].t; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>clxofs+14 && mx<clxofs+120+14 && my>clyofs+44 && my<clyofs+9+44 && !moving)\r
-    {\r
-      ctf=4; str=chrlist[base+3].t; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>clxofs+14 && mx<clxofs+120+14 && my>clyofs+55 && my<clyofs+9+55 && !moving)\r
-    {\r
-      ctf=5; str=chrlist[base+4].t; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>clxofs+137 && mx<clxofs+30+137 && my>clyofs+65 && my<clyofs+10+65 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      done=1;\r
-      ButtonPressed(clxofs+137, clyofs+65, "OK");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>clxofs+137 && mx<clxofs+30+137 && my>clyofs+10 && my<clyofs+10+10 && !moving)\r
-    {\r
-      // insert code for button "Browse" here\r
-      ButtonPressed(clxofs+137, clyofs+10, "Browse");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      Browse(1,"*.chr","","","",chrlist[base].t);\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>clxofs+137 && mx<clxofs+30+137 && my>clyofs+21 && my<clyofs+10+21 && !moving)\r
-    {\r
-      // insert code for button "Browse" here\r
-      ButtonPressed(clxofs+137, clyofs+21, "Browse");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      Browse(1,"*.chr","","","",chrlist[base+1].t);\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>clxofs+137 && mx<clxofs+30+137 && my>clyofs+32 && my<clyofs+10+32 && !moving)\r
-    {\r
-      // insert code for button "Browse" here\r
-      ButtonPressed(clxofs+137, clyofs+32, "Browse");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      Browse(1,"*.chr","","","",chrlist[base+2].t);\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>clxofs+137 && mx<clxofs+30+137 && my>clyofs+43 && my<clyofs+10+43 && !moving)\r
-    {\r
-      // insert code for button "Browse" here\r
-      ButtonPressed(clxofs+137, clyofs+43, "Browse");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      Browse(1,"*.chr","","","",chrlist[base+3].t);\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>clxofs+137 && mx<clxofs+30+137 && my>clyofs+54 && my<clyofs+10+54 && !moving)\r
-    {\r
-      // insert code for button "Browse" here\r
-      ButtonPressed(clxofs+137, clyofs+54, "Browse");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      Browse(1,"*.chr","","","",chrlist[base+4].t);\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(clxofs+clxsize-9) && (mx<clxofs+clxsize-2)\r
-    && my>(clyofs+1) && (my<clyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>clxofs && mx<clxofs+clxsize && my>clyofs && my<(clyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-clxofs;\r
-      myo=my-clyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-      if (key[SCAN_UP])\r
-      {\r
-        key[SCAN_UP]=0;\r
-        if (base) base--;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      if (key[SCAN_DOWN])\r
-      {\r
-        key[SCAN_DOWN]=0;\r
-        if (base<95) base++;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=chrlist[base].t; break;\r
-          case 1: ctf=2; str=chrlist[base+1].t; break;\r
-          case 2: ctf=3; str=chrlist[base+2].t; break;\r
-          case 3: ctf=4; str=chrlist[base+3].t; break;\r
-          case 4: ctf=5; str=chrlist[base+4].t; break;\r
-          case 5: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=5; str=chrlist[base].t; break;\r
-          case 1: ctf=0; str=chrlist[base].t; break;\r
-          case 2: ctf=1; str=chrlist[base+1].t; break;\r
-          case 3: ctf=2; str=chrlist[base+2].t; break;\r
-          case 4: ctf=3; str=chrlist[base+3].t; break;\r
-          case 5: ctf=4; str=chrlist[base+4].t; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-}\r
-\r
-int msxsize=181, msysize=77;\r
-int msxofs=70, msyofs=50;\r
-char base1=0;\r
-\r
-void MoveScriptDialog()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      msxofs = (mx-mxo);\r
-      msyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (msxofs<16) msxofs = 16;\r
-      if (msyofs<16) msyofs = 16;\r
-      if (msxofs+msxsize>335) msxofs = 336-msxsize;\r
-      if (msyofs+msysize>sy+16) msyofs = (sy+16)-msysize;\r
-    }\r
-\r
-    Window(msxofs, msyofs, msxofs+msxsize, msyofs+msysize, "Movement Script Editor");\r
-    TextField(msxofs+15, msyofs+12, 160, ms[base1].t, ctf == 1 ? cb : 0);\r
-    TextField(msxofs+15, msyofs+22, 160, ms[base1+1].t, ctf == 2 ? cb : 0);\r
-    TextField(msxofs+15, msyofs+32, 160, ms[base1+2].t, ctf == 3 ? cb : 0);\r
-    TextField(msxofs+15, msyofs+42, 160, ms[base1+3].t, ctf == 4 ? cb : 0);\r
-    TextField(msxofs+15, msyofs+52, 160, ms[base1+4].t, ctf == 5 ? cb : 0);\r
-    Button(msxofs+146, msyofs+63, "OK");\r
-    GotoXY(msxofs+3, msyofs+11); sprintf(strbuf,"%d:", base1); printstring(strbuf);\r
-    GotoXY(msxofs+3, msyofs+22); sprintf(strbuf,"%d:", base1+1); printstring(strbuf);\r
-    GotoXY(msxofs+3, msyofs+33); sprintf(strbuf,"%d:", base1+2); printstring(strbuf);\r
-    GotoXY(msxofs+3, msyofs+44); sprintf(strbuf,"%d:", base1+3); printstring(strbuf);\r
-    GotoXY(msxofs+3, msyofs+55); sprintf(strbuf,"%d:", base1+4); printstring(strbuf);\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>msxofs+15 && mx<msxofs+160+15 && my>msyofs+12 && my<msyofs+10+12 && !moving)\r
-    {\r
-      ctf=1; str=ms[base1].t; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>msxofs+15 && mx<msxofs+160+15 && my>msyofs+22 && my<msyofs+9+22 && !moving)\r
-    {\r
-      ctf=2; str=ms[base1+1].t; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>msxofs+15 && mx<msxofs+160+15 && my>msyofs+32 && my<msyofs+9+32 && !moving)\r
-    {\r
-      ctf=3; str=ms[base1+2].t; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>msxofs+15 && mx<msxofs+160+15 && my>msyofs+42 && my<msyofs+9+42 && !moving)\r
-    {\r
-      ctf=4; str=ms[base1+3].t; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>msxofs+15 && mx<msxofs+160+15 && my>msyofs+52 && my<msyofs+9+52 && !moving)\r
-    {\r
-      ctf=5; str=ms[base1+4].t; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>msxofs+146 && mx<msxofs+30+146 && my>msyofs+63 && my<msyofs+10+63 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      done=1;\r
-      ButtonPressed(msxofs+146, msyofs+63, "OK");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(msxofs+msxsize-9) && (mx<msxofs+msxsize-2)\r
-    && my>(msyofs+1) && (my<msyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>msxofs && mx<msxofs+msxsize && my>msyofs && my<(msyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-msxofs;\r
-      myo=my-msyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-      if (key[SCAN_UP])\r
-      {\r
-        key[SCAN_UP]=0;\r
-        if (base1) base1--;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      if (key[SCAN_DOWN])\r
-      {\r
-        key[SCAN_DOWN]=0;\r
-        if (base1<95) base1++;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=ms[base1].t; break;\r
-          case 1: ctf=2; str=ms[base1+1].t; break;\r
-          case 2: ctf=3; str=ms[base1+2].t; break;\r
-          case 3: ctf=4; str=ms[base1+3].t; break;\r
-          case 4: ctf=5; str=ms[base1+4].t; break;\r
-          case 5: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=5; str=ms[base1+4].t; break;\r
-          case 1: ctf=0; str=0; break;\r
-          case 2: ctf=1; str=ms[base1].t; break;\r
-          case 3: ctf=2; str=ms[base1+1].t; break;\r
-          case 4: ctf=3; str=ms[base1+2].t; break;\r
-          case 5: ctf=4; str=ms[base1+3].t; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-}\r
-\r
-int prxsize=150, prysize=80;\r
-int prxofs=50, pryofs=60;\r
-\r
-void MapPropertiesDialog()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      prxofs = (mx-mxo);\r
-      pryofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (prxofs<16) prxofs = 16;\r
-      if (pryofs<16) pryofs = 16;\r
-      if (prxofs+prxsize>335) prxofs = 336-prxsize;\r
-      if (pryofs+prysize>sy+16) pryofs = (sy+16)-prysize;\r
-    }\r
-\r
-    Window(prxofs, pryofs, prxofs+prxsize, pryofs+prysize, "MAP Properties");\r
-    GotoXY(prxofs+10, pryofs+23); printstring("Music:");\r
-    TextField(prxofs+33, pryofs+11, 112, mapname, ctf == 1 ? cb : 0);\r
-    TextField(prxofs+33, pryofs+21, 112, musname, ctf == 2 ? cb : 0);\r
-    GotoXY(prxofs+18, pryofs+33); printstring("VSP:");\r
-    TextField(prxofs+33, pryofs+31, 112, vspname, ctf == 3 ? cb : 0);\r
-    GotoXY(prxofs+3, pryofs+43); printstring("rstring:");\r
-    TextField(prxofs+33, pryofs+41, 112, rstring, ctf == 4 ? cb : 0);\r
-    BigButton(prxofs+97, pryofs+56, "Resize MAP");\r
-    HLine(prxofs+1, pryofs+53, 148, white);\r
-    GotoXY(prxofs+3, pryofs+58); printstring("xsize:");\r
-    sprintf(strbuf,"%d",layer[0].sizex); printstring(strbuf);\r
-    GotoXY(prxofs+49, pryofs+58); printstring("ysize:");\r
-    sprintf(strbuf,"%d",layer[0].sizey); printstring(strbuf);\r
-    Button(prxofs+117, pryofs+67, "OK");\r
-    GotoXY(prxofs+16, pryofs+13); printstring("MAP:");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>prxofs+33 && mx<prxofs+112+33 && my>pryofs+11 && my<pryofs+9+11 && !moving)\r
-    {\r
-      ctf=1; str=mapname; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>prxofs+33 && mx<prxofs+112+33 && my>pryofs+21 && my<pryofs+9+21 && !moving)\r
-    {\r
-      ctf=2; str=musname; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>prxofs+33 && mx<prxofs+112+33 && my>pryofs+31 && my<pryofs+9+31 && !moving)\r
-    {\r
-      ctf=3; str=vspname; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>prxofs+33 && mx<prxofs+112+33 && my>pryofs+41 && my<pryofs+9+41 && !moving)\r
-    {\r
-      ctf=4; str=rstring; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>prxofs+97 && mx<prxofs+30+97 && my>pryofs+56 && my<pryofs+10+56 && !moving)\r
-    {\r
-      // insert code for button "Resize MAP" here\r
-      BigButtonPressed(prxofs+97, pryofs+56, "Resize MAP");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease();\r
-      ResizeMapDialog();\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>prxofs+117 && mx<prxofs+30+117 && my>pryofs+67 && my<pryofs+10+67 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      ButtonPressed(prxofs+117, pryofs+67, "OK");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      done=1;\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(prxofs+prxsize-9) && (mx<prxofs+prxsize-2)\r
-    && my>(pryofs+1) && (my<pryofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>prxofs && mx<prxofs+prxsize && my>pryofs && my<(pryofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-prxofs;\r
-      myo=my-pryofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=mapname; break;\r
-          case 1: ctf=2; str=musname; break;\r
-          case 2: ctf=3; str=vspname; break;\r
-          case 3: ctf=4; str=rstring; break;\r
-          case 4: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=4; str=rstring; break;\r
-          case 1: ctf=0; str=0; break;\r
-          case 2: ctf=1; str=mapname; break;\r
-          case 3: ctf=2; str=musname; break;\r
-          case 4: ctf=3; str=vspname; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-\r
-  } while (!done);\r
-\r
-}\r
-\r
-int rsxsize=134, rsysize=44;\r
-int rsxofs=20, rsyofs=20;\r
-\r
-static void PutByte(byte *to, byte v, int x, int y, int w, int h)\r
-{\r
-  if (x<0 || x>=w || y<0 || y>=h)\r
-    return;\r
-\r
-  to[(y*w)+x]=v;\r
-}\r
-\r
-static byte GetByte(byte *from, int x, int y, int w, int h)\r
-{\r
-  if (x<0 || x>=w || y<0 || y>=h)\r
-    return 0;\r
-\r
-  return from[(y*w)+x];\r
-}\r
-\r
-static void PutWord(word *to, word v, int x, int y, int w, int h)\r
-{\r
-  if (x<0 || x>=w || y<0 || y>=h)\r
-    return;\r
-\r
-  to[(y*w)+x]=v;\r
-}\r
-\r
-static word GetWord(word *from, int x, int y, int w, int h)\r
-{\r
-  if (x<0 || x>=w || y<0 || y>=h)\r
-    return 0;\r
-\r
-  return from[(y*w)+x];\r
-}\r
-\r
-void ResizeMapDialog()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink, basex, basey, i; //, xl, yl;\r
-  char ctf=0, cb=0, c, t;\r
-  char *str, *tb; //, *s1, *d1;\r
-  char nstr1[80], nstr2[80];\r
-  word *tbw; //, *s=NULL,*d=NULL;\r
-  //int temp_width;\r
-  int a,b;\r
-\r
-  basex=layer[0].sizex;\r
-  basey=layer[0].sizey;\r
-  sprintf(nstr1, "%d", basex);\r
-  sprintf(nstr2, "%d", basey);\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      rsxofs = (mx-mxo);\r
-      rsyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (rsxofs<16) rsxofs = 16;\r
-      if (rsyofs<16) rsyofs = 16;\r
-      if (rsxofs+rsxsize>335) rsxofs = 336-rsxsize;\r
-      if (rsyofs+rsysize>sy+16) rsyofs = (sy+16)-rsysize;\r
-    }\r
-\r
-    Window(rsxofs, rsyofs, rsxofs+rsxsize, rsyofs+rsysize, "Resize MAP");\r
-    GotoXY(rsxofs+4, rsyofs+12); printstring("Base X:");\r
-    GotoXY(rsxofs+4, rsyofs+22); printstring("Base Y:");\r
-    TextField(rsxofs+30, rsyofs+10, 100, nstr1, ctf == 1 ? cb : 0);\r
-    TextField(rsxofs+30, rsyofs+20, 100, nstr2, ctf == 2 ? cb : 0);\r
-    Button(rsxofs+69, rsyofs+31, "Resize");\r
-    Button(rsxofs+101, rsyofs+31, "Cancel");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>rsxofs+30 && mx<rsxofs+100+30 && my>rsyofs+10 && my<rsyofs+9+10 && !moving)\r
-    {\r
-      ctf=1; str=nstr1; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>rsxofs+30 && mx<rsxofs+100+30 && my>rsyofs+20 && my<rsyofs+9+20 && !moving)\r
-    {\r
-      ctf=2; str=nstr2; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>rsxofs+69 && mx<rsxofs+30+69 && my>rsyofs+31 && my<rsyofs+10+31 && !moving)\r
-    {\r
-      printf("&");\r
-      fflush(stdout);\r
-      // insert code for button "Resize" here\r
-      ButtonPressed(rsxofs+69, rsyofs+31, "Resize");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      done=1;\r
-      basex=atoi(nstr1);\r
-      basey=atoi(nstr2);\r
-\r
-      tb = (char *)valloc(basex*basey,"tilebuf",0);\r
-      for (b=0; b<basey; ++b)\r
-        for (a=0; a<basex; ++a)\r
-          PutByte(tb,\r
-            GetByte(obstruct,a,b,layer[0].sizex,layer[0].sizey),\r
-            a,b,basex,basey);\r
-      vfree(obstruct);\r
-      obstruct=tb;\r
-\r
-      tb = (char *)valloc(basex*basey,"tilebuf",0);\r
-      for (b=0; b<basey; ++b)\r
-        for (a=0; a<basex; ++a)\r
-          PutByte(tb,\r
-            GetByte(zone,a,b,layer[0].sizex,layer[0].sizey),\r
-            a,b,basex,basey);\r
-      vfree(zone);\r
-      zone=tb;\r
-\r
-      for (i=0; i<numlayers; i++)\r
-      {\r
-        tbw=(word *)valloc(basex*basey*2,"tilebuf",0);\r
-        //memset(tbw, 0, basex*basey*2);\r
-        for (b=0; b<basey; ++b)\r
-          for (a=0; a<basex; ++a)\r
-            PutWord(tbw,\r
-              GetWord(layers[i],a,b,layer[i].sizex,layer[i].sizey),\r
-              a,b,basex,basey);\r
-\r
-        vfree(layers[i]);\r
-        layers[i]=tbw;\r
-      }\r
-      for (i=0; i<numlayers; ++i)\r
-      {\r
-        layer[i].sizex=basex;\r
-        layer[i].sizey=basey;\r
-      }\r
-      xwin=0; ywin=0;\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>rsxofs+101 && mx<rsxofs+30+101 && my>rsyofs+31 && my<rsyofs+10+31 && !moving)\r
-    {\r
-      // insert code for button "Cancel" here\r
-      done=1;\r
-      ButtonPressed(rsxofs+101, rsyofs+31, "Cancel");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(rsxofs+rsxsize-9) && (mx<rsxofs+rsxsize-2)\r
-    && my>(rsyofs+1) && (my<rsyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>rsxofs && mx<rsxofs+rsxsize && my>rsyofs && my<(rsyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-rsxofs;\r
-      myo=my-rsyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=nstr1; break;\r
-          case 1: ctf=2; str=nstr2; break;\r
-          case 2: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=2; str=nstr2; break;\r
-          case 1: ctf=0; str=0; break;\r
-          case 2: ctf=1; str=nstr1; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-  basex=atoi(nstr1);\r
-  basey=atoi(nstr2);\r
-}\r
-\r
-int cdxsize=150, cdysize=45;\r
-int cdxofs=110, cdyofs=70;\r
-char curtrack=1;\r
-\r
-void CDDialog()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      cdxofs = (mx-mxo);\r
-      cdyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (cdxofs<16) cdxofs = 16;\r
-      if (cdyofs<16) cdyofs = 16;\r
-      if (cdxofs+cdxsize>335) cdxofs = 336-cdxsize;\r
-      if (cdyofs+cdysize>sy+16) cdyofs = (sy+16)-cdysize;\r
-    }\r
-\r
-    Window(cdxofs, cdyofs, cdxofs+cdxsize, cdyofs+cdysize, "CD Player");\r
-    Button(cdxofs+53, cdyofs+10, "Play");\r
-    Button(cdxofs+53, cdyofs+21, "Stop");\r
-    Button(cdxofs+85, cdyofs+10, "Eject");\r
-    Button(cdxofs+85, cdyofs+21, "Close");\r
-    Button(cdxofs+117, cdyofs+10, "Next");\r
-    Button(cdxofs+117, cdyofs+21, "Prev");\r
-    Button(cdxofs+117, cdyofs+32, "OK");\r
-    GotoXY(cdxofs+4, cdyofs+18); printstring("Track ");\r
-    sprintf(strbuf,"%d",curtrack); printstring(strbuf);\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>cdxofs+53 && mx<cdxofs+30+53 && my>cdyofs+10 && my<cdyofs+10+10 && !moving)\r
-    {\r
-      // insert code for button "Play" here\r
-      ButtonPressed(cdxofs+53, cdyofs+10, "Play");\r
-      DrawMouse();\r
-      ShowPage();\r
-      //CD_Play(curtrack);\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>cdxofs+53 && mx<cdxofs+30+53 && my>cdyofs+21 && my<cdyofs+10+21 && !moving)\r
-    {\r
-      // insert code for button "Stop" here\r
-      ButtonPressed(cdxofs+53, cdyofs+21, "Stop");\r
-      DrawMouse();\r
-      ShowPage();\r
-      //CD_Stop();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>cdxofs+85 && mx<cdxofs+30+85 && my>cdyofs+10 && my<cdyofs+10+10 && !moving)\r
-    {\r
-      // insert code for button "Eject" here\r
-      ButtonPressed(cdxofs+85, cdyofs+10, "Eject");\r
-      DrawMouse();\r
-      ShowPage();\r
-      //CD_Open_Door();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>cdxofs+85 && mx<cdxofs+30+85 && my>cdyofs+21 && my<cdyofs+10+21 && !moving)\r
-    {\r
-      // insert code for button "Close" here\r
-      ButtonPressed(cdxofs+85, cdyofs+21, "Close");\r
-      DrawMouse();\r
-      ShowPage();\r
-      //CD_Close_Door();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>cdxofs+117 && mx<cdxofs+30+117 && my>cdyofs+10 && my<cdyofs+10+10 && !moving)\r
-    {\r
-      // insert code for button "Next" here\r
-      ButtonPressed(cdxofs+117, cdyofs+10, "Next");\r
-      curtrack++;\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>cdxofs+117 && mx<cdxofs+30+117 && my>cdyofs+21 && my<cdyofs+10+21 && !moving)\r
-    {\r
-      // insert code for button "Prev" here\r
-      ButtonPressed(cdxofs+117, cdyofs+21, "Prev");\r
-      DrawMouse();\r
-      if (curtrack>1) curtrack--;\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>cdxofs+117 && mx<cdxofs+30+117 && my>cdyofs+32 && my<cdyofs+10+32 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      ButtonPressed(cdxofs+117, cdyofs+32, "OK");\r
-      DrawMouse();\r
-      done=1;\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(cdxofs+cdxsize-9) && (mx<cdxofs+cdxsize-2)\r
-    && my>(cdyofs+1) && (my<cdyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>cdxofs && mx<cdxofs+cdxsize && my>cdyofs && my<(cdyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-cdxofs;\r
-      myo=my-cdyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-}\r
-\r
-int ntxsize=130, nytsize=51;\r
-int ntxofs=110, ntyofs=70;\r
-\r
-void NoticeDialog()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      ntxofs = (mx-mxo);\r
-      ntyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (ntxofs<16) ntxofs = 16;\r
-      if (ntyofs<16) ntyofs = 16;\r
-      if (ntxofs+ntxsize>335) ntxofs = 336-ntxsize;\r
-      if (ntyofs+nytsize>sy+16) ntyofs = (sy+16)-nytsize;\r
-    }\r
-\r
-    Window(ntxofs, ntyofs, ntxofs+ntxsize, ntyofs+nytsize, "Notice!");\r
-    GotoXY(ntxofs+20, ntyofs+20); printstring("Don't forget to add this");\r
-    GotoXY(ntxofs+14, ntyofs+26); printstring("layer to the Render String!");\r
-    Button(ntxofs+50, ntyofs+36, "OK");\r
-    GotoXY(ntxofs+25, ntyofs+14); printstring("Layer has been added.");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if ((mb==1 && mx>ntxofs+50 && mx<ntxofs+30+50 && my>ntyofs+36 && my<ntyofs+10+36 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      ButtonPressed(ntxofs+50, ntyofs+36, "OK");\r
-      done=1;\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(ntxofs+ntxsize-9) && (mx<ntxofs+ntxsize-2)\r
-    && my>(ntyofs+1) && (my<ntyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>ntxofs && mx<ntxofs+ntxsize && my>ntyofs && my<(ntyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-ntxofs;\r
-      myo=my-ntyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-}\r
-\r
-int oxsize=150, oysize=98;\r
-int oxofs=120, oyofs=70;\r
-extern char vcedprog[80];\r
-\r
-void OptionsDialog()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-  char nstr1[80], nstr2[80], nstr3[80], nstr4[80];\r
-\r
-  sprintf(nstr1, "%d", winbg);\r
-  sprintf(nstr2, "%d", titlebg);\r
-  sprintf(nstr3, "%d", brightw);\r
-  sprintf(nstr4, "%d", darkw);\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      oxofs = (mx-mxo);\r
-      oyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (oxofs<16) oxofs = 16;\r
-      if (oyofs<16) oyofs = 16;\r
-      if (oxofs+oxsize>335) oxofs = 336-oxsize;\r
-      if (oyofs+oysize>sy+16) oyofs = (sy+16)-oysize;\r
-    }\r
-\r
-    Window(oxofs, oyofs, oxofs+oxsize, oyofs+oysize, "MapEd Options");\r
-    GotoXY(oxofs+16, oyofs+12); printstring("Smooth Scroll");\r
-    CheckBox(oxofs+5, oyofs+11, scrollmode);\r
-    GotoXY(oxofs+16, oyofs+20); printstring("Tile Highlight");\r
-    CheckBox(oxofs+5, oyofs+19, mh);\r
-    GotoXY(oxofs+38, oyofs+31); printstring("Window Background");\r
-    TextField(oxofs+5, oyofs+29, 30, nstr1, ctf == 1 ? cb : 0);\r
-    TextField(oxofs+5, oyofs+39, 30, nstr2, ctf == 2 ? cb : 0);\r
-    GotoXY(oxofs+38, oyofs+41); printstring("Titlebar Background");\r
-    CheckBox(oxofs+74, oyofs+11, vm);\r
-    GotoXY(oxofs+84, oyofs+12); printstring("320x240 driver");\r
-    CheckBox(oxofs+74, oyofs+19, mouse_scroll);\r
-    GotoXY(oxofs+84, oyofs+20); printstring("Mouse Scrolling");\r
-    TextField(oxofs+5, oyofs+49, 30, nstr3, ctf == 3 ? cb : 0);\r
-    TextField(oxofs+5, oyofs+59, 30, nstr4, ctf == 4 ? cb : 0);\r
-    GotoXY(oxofs+38, oyofs+51); printstring("White");\r
-    GotoXY(oxofs+38, oyofs+61); printstring("Shadow");\r
-    Button(oxofs+60, oyofs+85, "OK");\r
-    HLine(oxofs+1, oyofs+71, 148, white);\r
-    GotoXY(oxofs+3, oyofs+76); printstring("Editor:");\r
-    TextField(oxofs+28, oyofs+74, 118, vcedprog, ctf == 5 ? cb : 0);\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>oxofs+5 && mx<oxofs+8+5 && my>oyofs+11 && my<oyofs+7+11 && !moving)\r
-    {\r
-      xwin=xwin>>4; xwin=xwin<<4;\r
-      ywin=ywin>>4; ywin=ywin<<4;\r
-      scrollmode ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>oxofs+5 && mx<oxofs+8+5 && my>oyofs+19 && my<oyofs+7+19 && !moving)\r
-    {\r
-      mh ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>oxofs+5 && mx<oxofs+30+5 && my>oyofs+29 && my<oyofs+9+29 && !moving)\r
-    {\r
-      ctf=1; str=nstr1; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>oxofs+5 && mx<oxofs+30+5 && my>oyofs+39 && my<oyofs+9+39 && !moving)\r
-    {\r
-      ctf=2; str=nstr2; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>oxofs+74 && mx<oxofs+8+74 && my>oyofs+11 && my<oyofs+7+11 && !moving)\r
-    {\r
-      vm ^= 1; WaitRelease();\r
-      ShutdownVideo();\r
-      InitVideo(vm);\r
-      set_intensity(63);\r
-      InitMouse();\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && mx>oxofs+74 && mx<oxofs+8+74 && my>oyofs+19 && my<oyofs+7+19 && !moving)\r
-    {\r
-      mouse_scroll ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>oxofs+5 && mx<oxofs+30+5 && my>oyofs+49 && my<oyofs+9+49 && !moving)\r
-    {\r
-      ctf=3; str=nstr3; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>oxofs+5 && mx<oxofs+30+5 && my>oyofs+59 && my<oyofs+9+59 && !moving)\r
-    {\r
-      ctf=4; str=nstr4; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>oxofs+60 && mx<oxofs+30+60 && my>oyofs+85 && my<oyofs+10+85 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      ButtonPressed(oxofs+60, oyofs+85, "OK");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      done=1;\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>oxofs+28 && mx<oxofs+118+28 && my>oyofs+74 && my<oyofs+9+74 && !moving)\r
-    {\r
-      ctf=5; str=vcedprog; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(oxofs+oxsize-9) && (mx<oxofs+oxsize-2)\r
-    && my>(oyofs+1) && (my<oyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>oxofs && mx<oxofs+oxsize && my>oyofs && my<(oyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-oxofs;\r
-      myo=my-oyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=nstr1; break;\r
-          case 1: ctf=2; str=nstr2; break;\r
-          case 2: ctf=3; str=nstr3; break;\r
-          case 3: ctf=4; str=nstr4; break;\r
-          case 4: ctf=5; str=vcedprog; break;\r
-          case 5: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=5; str=vcedprog; break;\r
-          case 1: ctf=0; str=0; break;\r
-          case 2: ctf=1; str=nstr1; break;\r
-          case 3: ctf=2; str=nstr2; break;\r
-          case 4: ctf=3; str=nstr3; break;\r
-          case 5: ctf=4; str=nstr4; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-  winbg=atoi(nstr1);\r
-  titlebg=atoi(nstr2);\r
-  brightw=atoi(nstr3);\r
-  darkw=atoi(nstr4);\r
-}\r
-\r
-int vcexsize=200, vceysize=60;\r
-int vcexofs=76, vceyofs=70;\r
-\r
-void VCNotify(char *msg)\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      vcexofs = (mx-mxo);\r
-      vceyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (vcexofs<16) vcexofs = 16;\r
-      if (vceyofs<16) vceyofs = 16;\r
-      if (vcexofs+vcexsize>335) vcexofs = 336-vcexsize;\r
-      if (vceyofs+vceysize>sy+16) vceyofs = (sy+16)-vceysize;\r
-    }\r
-\r
-    Window(vcexofs, vceyofs, vcexofs+vcexsize, vceyofs+vceysize, "VergeC Error Report");\r
-    Button(vcexofs+85, vceyofs+41, "OK");\r
-    GotoXY(vcexofs+29, vceyofs+17); printstring("VCC has reported the following error:");\r
-    GotoXY(vcexofs+100-(pixels(msg)/2), vceyofs+23); printstring(msg);\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if ((mb==1 && mx>vcexofs+85 && mx<vcexofs+30+85 && my>vceyofs+41 && my<vceyofs+10+41 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      ButtonPressed(vcexofs+85, vceyofs+41, "OK");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      done=1;\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(vcexofs+vcexsize-9) && (mx<vcexofs+vcexsize-2)\r
-    && my>(vceyofs+1) && (my<vceyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>vcexofs && mx<vcexofs+vcexsize && my>vceyofs && my<(vceyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-vcexofs;\r
-      myo=my-vceyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-}\r
diff --git a/16/v2/source/verge/MAPED/GUI.H b/16/v2/source/verge/MAPED/GUI.H
deleted file mode 100755 (executable)
index 1662db7..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef GUI_INC\r
-#define GUI_INC\r
-\r
-extern int amxofs, amyofs;\r
-extern int mmxofs, mmyofs;\r
-extern int cnxofs, cnyofs;\r
-extern int lmxofs, lmyofs;\r
-extern int lvxofs, lvyofs;\r
-extern int vaxofs, vayofs;\r
-extern int mpxofs, mpyofs;\r
-extern int zexofs, zeyofs;\r
-extern int exofs, eyofs;\r
-extern int prxofs, pryofs;\r
-extern int rsxofs, rsyofs;\r
-\r
-extern void CheckMessageExpirations();\r
-extern void Message(char *text, int duration);\r
-extern void DrawScreenControls();\r
-extern void RenderMessages();\r
-extern void RenderGUI();\r
-extern void DoMainMenu();\r
-extern void MainMenu(int dx, int dy);\r
-#define byte unsigned char\r
-extern byte TileCmp(byte *one, byte *two);\r
-extern void ImageToLayer();\r
-extern void Destroyer();\r
-extern void LayersSubMenu(int dx, int dy);\r
-extern void ExecuteSubMenu(int dx, int dy);\r
-extern void AddLayer();\r
-extern void EditLayerProperties();\r
-extern void NewMAP();\r
-extern void About();\r
-extern int  Confirm(char *message);\r
-extern void LoadMAPDialog();\r
-extern void LoadVSPDialog();\r
-extern void MPDialog();\r
-extern void ZoneEdDialog();\r
-extern void EntityEditor(int i);\r
-extern void CHRList();\r
-extern void MoveScriptDialog();\r
-extern void MapPropertiesDialog();\r
-extern void ResizeMapDialog();\r
-extern void CDDialog();\r
-extern void NoticeDialog();\r
-extern void OptionsDialog();\r
-extern void VCNotify(char *msg);\r
-\r
-#endif // GUI_INC\r
diff --git a/16/v2/source/verge/MAPED/GUICOMP.C b/16/v2/source/verge/MAPED/GUICOMP.C
deleted file mode 100755 (executable)
index e9f8779..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-// Additional code by Richard Lau (aka Ric)\r
-\r
-#include "config.h"    // Colour definitions\r
-#include "vdriver.h"   // Video driver functions\r
-#include "smalfont.h"\r
-\r
-// ================================= Code ====================================\r
-\r
-void stdwindow(int x1, int y1, int x2, int y2)\r
-{\r
-  FilledBox(x1, y1, x2-x1, y2-y1, winbg);\r
-  HLine(x1, y1, x2-x1, black);     /* -- ric: 13/Jun/98 --     */\r
-  VLine(x1, y1, y2-y1, black);     /* Outline window in black */\r
-  HLine(x1+1, y2-1, x2-x1-1, black);\r
-  VLine(x2-1, y1+1, y2-y1-1, black);\r
-\r
-  HLine(x1+1, y1+1, x2-x1-2, brightw);\r
-  VLine(x1+1, y1+1, y2-y1-2, brightw);\r
-  HLine(x1+2, y2-2, x2-x1-3, darkw);\r
-  VLine(x2-2, y1+2, y2-y1-3, darkw);\r
-}\r
-\r
-void Window(int x1, int y1, int x2, int y2, char *title)\r
-{\r
-  FilledBox(x1, y1, x2-x1, y2-y1, winbg);\r
-  FilledBox(x1, y1, x2-x1, 8, titlebg);\r
-  HLine(x1, y1, x2-x1, brightw);\r
-  VLine(x1, y1, y2-y1, brightw);\r
-  HLine(x1+1, y2-1, x2-x1-1, darkw);\r
-  VLine(x2-1, y1+1, y2-y1-1, darkw);\r
-  FilledBox(x2-8, y1+2, 5, 5, winbg);\r
-  HLine(x2-8, y1+2, 6, brightw);\r
-  VLine(x2-8, y1+2, 5, brightw);\r
-  HLine(x2-7, y1+6, 4, darkw);\r
-  VLine(x2-3, y1+3, 4, darkw);\r
-\r
-  GotoXY(x1+2, y1+2);\r
-  printstring(title);\r
-}\r
-\r
-void CheckBox(int x, int y, char checked)\r
-{\r
-  FilledBox(x, y, 7, 6, 0);\r
-  HLine(x, y, 8, darkw);\r
-  VLine(x, y, 7, darkw);\r
-  HLine(x+1, y+6, 7, brightw);\r
-  VLine(x+7, y+1, 5, brightw);\r
-  if (checked)\r
-  {\r
-    GotoXY(x+2, y+2);\r
-    printstring("*");\r
-  }\r
-}\r
-\r
-void Button(int x, int y, char *str)\r
-{\r
-  stdwindow(x,y,x+30,y+10);\r
-//  HLine(x, y, 30, black);      /* -- ric: 13/Jun/98 --     */\r
-//  VLine(x, y, 10, black);      /* Outline buttons in black */\r
-/*  HLine(x+1, y+9, 29, black);\r
-  VLine(x+29, y+1, 9, black);\r
-\r
-  HLine(x+1, y+1, 28, white);\r
-  VLine(x+1, y+1, 8, white);\r
-  HLine(x+2, y+8, 27, darkw);\r
-  VLine(x+28, y+2, 7, darkw); */\r
-  GotoXY(x+(15-(pixels(str)/2)), y+2);\r
-  printstring(str);\r
-}\r
-\r
-void BigButton(int x, int y, char *str)\r
-{\r
-  stdwindow(x,y,x+50,y+10);\r
-//  HLine(x, y, 50, black);      /* -- ric: 13/Jun/98 --     */\r
-//  VLine(x, y, 10, black);      /* Outline buttons in black */\r
-/*  HLine(x+1, y+9, 49, black);\r
-  VLine(x+49, y+1, 9, black);\r
-\r
-  HLine(x+1, y+1, 48, white);\r
-  VLine(x+1, y+1, 8, white);\r
-  HLine(x+2, y+8, 47, darkw);\r
-  VLine(x+48, y+2, 7, darkw); */\r
-  GotoXY(x+(25-(pixels(str)/2)), y+2);\r
-  printstring(str);\r
-}\r
-\r
-void ButtonPressed(int x, int y, char *str)\r
-/* -- ric: 13/Jun/98 --     */\r
-/* Draws a depressed button */\r
-{\r
-  stdwindow(x,y,x+30,y+10);\r
-  HLine(x+1, y+1, 28, darkw);\r
-  VLine(x+1, y+1, 8, darkw);\r
-  HLine(x+2, y+8, 27, winbg);\r
-  VLine(x+28, y+2, 7, winbg);\r
-  GotoXY(x+1+(15-(pixels(str)/2)), y+3);\r
-  printstring(str);\r
-}\r
-\r
-void BigButtonPressed(int x, int y, char *str)\r
-{\r
-  stdwindow(x,y,x+50,y+10);\r
-  HLine(x+1, y+1, 48, darkw);\r
-  VLine(x+1, y+1, 8, darkw);\r
-  HLine(x+2, y+8, 47, winbg);\r
-  VLine(x+48, y+2, 7, winbg);\r
-  GotoXY(x+1+(25-(pixels(str)/2)), y+3);\r
-  printstring(str);\r
-}\r
-\r
-void TextField(int x, int y, int width, char *str, char blink)\r
-{\r
-  FilledBox(x, y, width, 9, 0);\r
-  HLine(x, y, width+1, darkw);\r
-  VLine(x, y, 9, darkw);\r
-  HLine(x+1, y+8, width-1, brightw);\r
-  VLine(x+width, y+1, 8, brightw);\r
-  GotoXY(x+2, y+2);\r
-  printstring(str);\r
-  if (blink) printstring("_");\r
-}\r
diff --git a/16/v2/source/verge/MAPED/GUICOMP.H b/16/v2/source/verge/MAPED/GUICOMP.H
deleted file mode 100755 (executable)
index 1df18b6..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef GUICOMP_INC\r
-#define GUICOMP_INC\r
-\r
-extern void stdwindow(int x1, int y1, int x2, int y2);\r
-extern void Window(int x1, int y1, int x2, int y2, char *title);\r
-extern void CheckBox(int x, int y, char checked);\r
-extern void Button(int x, int y, char *str);\r
-extern void BigButton(int x, int y, char *str);\r
-extern void ButtonPressed(int x, int y, char *str);\r
-extern void BigButtonPressed(int x, int y, char *str);\r
-extern void TextField(int x, int y, int width, char *str, char blink);\r
-\r
-#endif // GUICOMP_INC\r
diff --git a/16/v2/source/verge/MAPED/INTER.H b/16/v2/source/verge/MAPED/INTER.H
deleted file mode 100755 (executable)
index 9c50ae7..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#if !defined(INTERINC)\r
-#define INTERINC\r
-\r
-#ifdef __WATCOMC__\r
-  #include <i86.h>\r
-  #define REGISTERS union REGS\r
-  #define SET_AX(r,v) (r).w.ax=(short)(v)\r
-  #define SET_BX(r,v) (r).w.bx=(short)(v)\r
-  #define SET_CX(r,v) (r).w.cx=(short)(v)\r
-  #define SET_DX(r,v) (r).w.dx=(short)(v)\r
-  #define INTERRUPT(i,r) int386((i),&(r),&(r))\r
-#elif defined(__DJGPP__)\r
-  #include <dpmi.h>\r
-  #define REGISTERS __dpmi_regs\r
-  #define SET_AX(r,v) (r).x.ax=(short)(v)\r
-  #define SET_BX(r,v) (r).x.bx=(short)(v)\r
-  #define SET_CX(r,v) (r).x.cx=(short)(v)\r
-  #define SET_DX(r,v) (r).x.dx=(short)(v)\r
-  #define INTERRUPT(i,r) __dpmi_int((i),&(r))\r
-#endif // watcom | djgpp\r
-\r
-#endif // INTERINC\r
diff --git a/16/v2/source/verge/MAPED/KEYBOARD.C b/16/v2/source/verge/MAPED/KEYBOARD.C
deleted file mode 100755 (executable)
index 246db5f..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include <stdio.h>\r
-#include <conio.h>\r
-#include <dos.h>\r
-#include "timer.h"\r
-\r
-// ================================= Data ====================================\r
-\r
-char key[128];\r
-char keycode,last_pressed=0;\r
-char codeBuffer[16];\r
-void (__interrupt __far *biosKeyboardHandler)();\r
-char handlerinstalled=0;\r
-\r
-unsigned char key_ascii_tbl[128] =\r
-{\r
-   0,   0,   '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', 8,   9,\r
-   'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']', 13,  0,   'a', 's',\r
-   'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', 39,  0,   0,   92,  'z', 'x', 'c', 'v',\r
-   'b', 'n', 'm', ',', '.', '/', 0,   '*', 0,   ' ', 0,   3,   3,   3,   3,   8,\r
-   3,   3,   3,   3,   3,   0,   0,   0,   0,   0,   '-', 0,   0,   0,   '+', 0,\r
-   0,   0,   0,   127, 0,   0,   92,  3,   3,   0,   0,   0,   0,   0,   0,   0,\r
-   13,  0,   '/', 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   127,\r
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   '/', 0,   0,   0,   0,   0\r
-};\r
-\r
-unsigned char key_shift_tbl[128] =\r
-{\r
-   0,   0,   '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', 126, 126,\r
-   'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '{', '}', 126, 0,   'A', 'S',\r
-   'D', 'F', 'G', 'H', 'J', 'K', 'L', ':', 34,  0,   0,   '|', 'Z', 'X', 'C', 'V',\r
-   'B', 'N', 'M', '<', '>', '?', 0,   '*', 0,   1,   0,   1,   1,   1,   1,   1,\r
-   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   '-', 0,   0,   0,   '+', 0,\r
-   0,   0,   1,   127, 0,   0,   0,   1,   1,   0,   0,   0,   0,   0,   0,   0,\r
-   13,  0,   '/', 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   127,\r
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   '/', 0,   0,   0,   0,   0\r
-};\r
-\r
-// ================================= Data ====================================\r
-\r
-void __interrupt __far KeyboardHandler()\r
-{\r
-  keycode=inp(0x60);\r
-  if (keycode>128)\r
-     key[keycode-128]=0;\r
-  else\r
-  {\r
-    key[keycode]=1;\r
-    last_pressed=keycode;\r
-  }\r
-  idlect=0;\r
-  outp(0x20,0x20);\r
-}\r
-\r
-void InitKeyboard()\r
-{\r
-  if (handlerinstalled) return;\r
-\r
-  biosKeyboardHandler=_dos_getvect(0x09);\r
-  _dos_setvect(0x09, KeyboardHandler);\r
-  handlerinstalled=1;\r
-}\r
-\r
-void ShutdownKeyboard()\r
-{\r
-  if (handlerinstalled)\r
-     _dos_setvect(0x09, biosKeyboardHandler);\r
-  handlerinstalled=0;\r
-}\r
diff --git a/16/v2/source/verge/MAPED/KEYBOARD.H b/16/v2/source/verge/MAPED/KEYBOARD.H
deleted file mode 100755 (executable)
index 5a2d294..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef KEYBOARD_INC\r
-#define KEYBOARD_INC\r
-\r
-extern char key[128],last_pressed;\r
-extern unsigned char key_ascii_tbl[128];\r
-extern unsigned char key_shift_tbl[128];\r
-\r
-extern void InitKeyboard();\r
-extern void ShutdownKeyboard();\r
-\r
-/* Constants for keyboard scan-codes */\r
-\r
-#define SCAN_ESC        0x01\r
-#define SCAN_1          0x02\r
-#define SCAN_2          0x03\r
-#define SCAN_3          0x04\r
-#define SCAN_4          0x05\r
-#define SCAN_5          0x06\r
-#define SCAN_6          0x07\r
-#define SCAN_7          0x08\r
-#define SCAN_8          0x09\r
-#define SCAN_9          0x0a\r
-#define SCAN_0          0x0b\r
-#define SCAN_MINUS      0x0c\r
-#define SCAN_EQUALS     0x0d\r
-#define SCAN_BACKSP     0x0e\r
-#define SCAN_TAB        0x0f\r
-#define SCAN_Q          0x10\r
-#define SCAN_W          0x11\r
-#define SCAN_E          0x12\r
-#define SCAN_R          0x13\r
-#define SCAN_T          0x14\r
-#define SCAN_Y          0x15\r
-#define SCAN_U          0x16\r
-#define SCAN_I          0x17\r
-#define SCAN_O          0x18\r
-#define SCAN_P          0x19\r
-#define SCAN_LANGLE     0x1a\r
-#define SCAN_RANGLE     0x1b\r
-#define SCAN_ENTER      0x1c\r
-#define SCAN_CTRL       0x1d\r
-#define SCAN_A          0x1e\r
-#define SCAN_S          0x1f\r
-#define SCAN_D          0x20\r
-#define SCAN_F          0x21\r
-#define SCAN_G          0x22\r
-#define SCAN_H          0x23\r
-#define SCAN_J          0x24\r
-#define SCAN_K          0x25\r
-#define SCAN_L          0x26\r
-#define SCAN_SCOLON     0x27\r
-#define SCAN_QUOTA      0x28\r
-#define SCAN_RQUOTA     0x29\r
-#define SCAN_LSHIFT     0x2a\r
-#define SCAN_BSLASH     0x2b\r
-#define SCAN_Z          0x2c\r
-#define SCAN_X          0x2d\r
-#define SCAN_C          0x2e\r
-#define SCAN_V          0x2f\r
-#define SCAN_B          0x30\r
-#define SCAN_N          0x31\r
-#define SCAN_M          0x32\r
-#define SCAN_COMA       0x33\r
-#define SCAN_DOT        0x34\r
-#define SCAN_SLASH      0x35\r
-#define SCAN_RSHIFT     0x36\r
-#define SCAN_GREY_STAR  0x37\r
-#define SCAN_ALT        0x38\r
-#define SCAN_SPACE      0x39\r
-#define SCAN_CAPS       0x3a\r
-#define SCAN_F1         0x3b\r
-#define SCAN_F2         0x3c\r
-#define SCAN_F3         0x3d\r
-#define SCAN_F4         0x3e\r
-#define SCAN_F5         0x3f\r
-#define SCAN_F6         0x40\r
-#define SCAN_F7         0x41\r
-#define SCAN_F8         0x42\r
-#define SCAN_F9         0x43\r
-#define SCAN_F10        0x44\r
-#define SCAN_NUMLOCK    0x45\r
-#define SCAN_SCRLOCK    0x46\r
-#define SCAN_HOME       0x47\r
-#define SCAN_UP         0x48\r
-#define SCAN_PGUP       0x49\r
-#define SCAN_GREY_MINUS 0x4a\r
-#define SCAN_LEFT       0x4b\r
-#define SCAN_PAD_5      0x4c\r
-#define SCAN_RIGHT      0x4d\r
-#define SCAN_GREY_PLUS  0x4e\r
-#define SCAN_END        0x4f\r
-#define SCAN_DOWN       0x50\r
-#define SCAN_PGDN       0x51\r
-#define SCAN_INSERT     0x52\r
-#define SCAN_DEL        0x53\r
-#define SCAN_F11        0x57\r
-#define SCAN_F12        0x58\r
-\r
-#endif // KEYBOARD_INC\r
diff --git a/16/v2/source/verge/MAPED/MAKEFILE b/16/v2/source/verge/MAPED/MAKEFILE
deleted file mode 100755 (executable)
index d627200..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-# Use the C or C++ compiler\r
-Compiler = wcc386\r
-\r
-# compiler options\r
-#comp = /oneatx /zp4 /5 /d0\r
-comp = /bt=dos /oneatx /5 /fp5 /wx /d0\r
-\r
-Linker_options = option stack=60000\r
-\r
-# Compile using dos4g or pmodew\r
-#System = dos4g\r
-System = pmodew\r
-\r
-Exe_file = maped.exe\r
-\r
-Objs = maped.obj config.obj gui.obj guicomp.obj  mode13h.obj modex.obj keyboard.obj &\r
-       minimap.obj mouse.obj render.obj smalfont.obj ssaver.obj tileed.obj &\r
-       tilesel.obj timer.obj vdriver.obj columns.obj a_memory.obj mikmod.lib\r
-\r
-####################\r
-\r
-maped.exe : $(Objs)\r
-\r
-           *wlink system $(System) $(Linker_Options) name maped.exe &\r
-           file {$<}\r
-#           *pmwlite -c4 maped.exe\r
-\r
-.c.obj:\r
-        $(Compiler) $(comp) $<\r
-\r
-.asm.obj:\r
-        wasm -3pr $<\r
diff --git a/16/v2/source/verge/MAPED/MAPED.C b/16/v2/source/verge/MAPED/MAPED.C
deleted file mode 100755 (executable)
index 9e17274..0000000
+++ /dev/null
@@ -1,1624 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-const char *const ME2_VERSION = "2.01a";\r
-\r
-// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\r
-// CHANGELOG:\r
-// <vecna, may 14>\r
-// + erased valloc(), replaced with a_memory.c\r
-// + added Log() -- output to MAPED.LOG\r
-// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\r
-\r
-#include <dos.h>\r
-#include <stdio.h>\r
-\r
-#include <malloc.h>\r
-#include <stdlib.h>\r
-#include <string.h>\r
-#include <stdarg.h>\r
-\r
-#include "config.h"\r
-#include "gui.h"\r
-#include "keyboard.h"\r
-#include "mikmod.h"\r
-#include "mouse.h"\r
-#include "render.h"\r
-#include "timer.h"\r
-#include "vdriver.h"\r
-\r
-#include "ssaver.h"\r
-#include "smalfont.h"\r
-#include "tilesel.h"\r
-#include "minimap.h"\r
-#include "guicomp.h"\r
-#include "config.h"\r
-\r
-#define byte unsigned char\r
-#define word unsigned short\r
-\r
-// Includes for a_memory.c\r
-\r
-void *valloc(int amount, char *desc, int owner);\r
-void *qvalloc(int amount);\r
-int  vfree(void *pointer);\r
-void qvfree(void *pointer);\r
-void FreeByOwner(int owner);\r
-void MemReport(void);\r
-void CheckCorruption(void);\r
-\r
-// ================================= Data ====================================\r
-\r
-typedef struct\r
-{\r
-  unsigned short start;              // strand start\r
-  unsigned short finish;             // strand end\r
-  unsigned short delay;              // tile-switch delay\r
-  unsigned short mode;               // tile-animation mode\r
-} vspanim_r;\r
-\r
-typedef struct\r
-{\r
-  char pmultx,pdivx;                 // parallax multiplier/divisor for X\r
-  char pmulty,pdivy;                 // parallax multiplier/divisor for Y\r
-  unsigned short sizex, sizey;       // layer dimensions.\r
-  unsigned char trans, hline;        // transparency flag | hline (raster fx)\r
-} layer_r;\r
-\r
-typedef struct\r
-{\r
-  char name[40];                     // zone name/desc\r
-  unsigned short script;             // script to call thingy\r
-  unsigned short percent;            // chance of executing\r
-  unsigned short delay;              // step-delay\r
-  unsigned short aaa;                // Accept Adjacent Activation\r
-  unsigned short entityscript;       // script to call for entities\r
-} zoneinfo;\r
-\r
-typedef struct\r
-{\r
-  char zonename[16];                   // zone description\r
-  unsigned short int callevent;        // event number to call\r
-  unsigned char percent;               // chance (in 255) of event occurance\r
-  unsigned char delay;                 // step-delay before last occurance\r
-  unsigned char aaa;                   // accept adjacent activation\r
-  char savedesc[31];                   // savegame description\r
-} oldzone;\r
-\r
-typedef struct\r
-{\r
-  int x, y;                            // xwc, ywx position\r
-  word tx, ty;                         // xtc, ytc position\r
-  byte facing;                         // direction entity is facing\r
-  byte moving, movecnt;                // direction entity is moving\r
-  byte frame;                          // bottom-line frame to display\r
-  byte specframe;                      // special-frame set thingo\r
-  byte chrindex, reset;                // CHR index | Reset animation\r
-  byte obsmode1, obsmode2;             // can be obstructed | Is an obstruction\r
-  byte speed, speedct;                 // entity speed, speedcount :)\r
-  byte delayct;                        // animation frame-delay\r
-  char *animofs, *moveofs;             // anim script | move script\r
-  byte face, actm;                     // auto-face | activation mode\r
-  byte movecode, movescript;           // movement type | movement script\r
-  byte ctr, mode;                      // sub-tile move ctr, mode flag (internal)\r
-  word step, delay;                    // step, delay\r
-  word stepctr, delayctr;              // internal use counters\r
-  word data1, data2, data3;            //\r
-  word data4, data5, data6;            //\r
-  int  actscript;                      // activation script\r
-  int  expand1, expand2;               //\r
-  int  expand3, expand4;               //\r
-  char desc[20];                       // Entity description.\r
-} entity_r;\r
-\r
-typedef struct\r
-{\r
-  char t[60];\r
-} chrlist_r;\r
-\r
-typedef struct\r
-{\r
-  char t[200];\r
-} movescript;\r
-\r
-typedef struct\r
-{\r
-  unsigned short x;                    // xwc position\r
-  unsigned short y;                    // ywc position\r
-  unsigned char facing;                // direction entity is facing\r
-  unsigned char moving;                // direction entity is moving\r
-  unsigned char movcnt;                // how far left to move in this tile\r
-  unsigned char framectr;              // frame sequence counter\r
-  unsigned char specframe;             // special-frame set thingo\r
-  unsigned char chrindex, movecode;    // CHR index / movement pattern code\r
-  unsigned char activmode, obsmode;    // activation mode, obstruction mode\r
-  unsigned char v1,v2,v3;              // packing stuff.\r
-  unsigned int actscript, movescript;  // script references\r
-  unsigned char speed, speedct;        // entity speed, speedcount :)\r
-  unsigned short step, delay,          // Misc data entries\r
-                 data1, data2,         // More misc data\r
-                 data3, data4,         // yet more crappy misc data.\r
-                 delayct,adjactv;      // yet more internal crap\r
-  unsigned short x1,y1,x2,y2;          // bounding box coordinates\r
-  unsigned char curcmd, cmdarg;        // Script commands/arguments\r
-  unsigned char *scriptofs;            // offset in script parsing\r
-  unsigned char face,chasing,          // face player when activated | chasing\r
-                chasespeed, chasedist; // chasing variables\r
-  unsigned short cx,cy;                // current-tile pos (moving adjusted)\r
-  int expand1;                         // always room for improvement\r
-  char entitydesc[20];                 // Editing description\r
-} oldent_r;\r
-\r
-zoneinfo zones[256];                 // zone stuff.\r
-layer_r layer[6];                    // Array of layer data\r
-vspanim_r vspanim[100];              // tile animation data\r
-unsigned short vadelay[100];         // Tile animation delay ctr\r
-oldzone tzone;                       // zone for oldmap-to-v2 converting\r
-entity_r entity[256];                // Entity records.\r
-oldent_r oldent;                     // entity for oldmap-to-v2 converting\r
-byte entities=0;                     // number of allocated entities.\r
-chrlist_r chrlist[100];              // Max. 100 CHRs per map.\r
-movescript ms[100];                  // move scripts arrays\r
-byte nmchr=0;                        // number of active/loaded CHRs.\r
-byte nms=0;                          // number of movement scripts\r
-\r
-char mapname[60];                    // MAP filename\r
-char vspname[60];                    // VSP filemap\r
-char rstring[20];                    // render-order string\r
-char musname[60];                    // MAP default music\r
-char numlayers;                      // number of layers in map\r
-short xstart, ystart;                // MAP start locations\r
-char *obstruct, *zone;               // obstruction and zone buffers\r
-int numzones=0;                      // Number of active zones.\r
-unsigned short *layers[6];           // Raw layer data\r
-char wrap, soundokay=0;\r
-\r
-// -- vsp related data --\r
-\r
-unsigned short numtiles;             // number of allocated tiles in VSP\r
-unsigned char *vsp;                  // VSP ptr\r
-char vsp_locked=0;\r
-char vsp_pw[8];\r
-\r
-// -- map compression\r
-\r
-char *cb,*csrc;                      // compression workspace buffer\r
-int bufsize;                         // how many bytes need to be written\r
-\r
-// -- editing related data --\r
-\r
-int xwin=0, ywin=0;                  // Editing viewplane\r
-short lt=0, rt=0;                    // left-button tile, right-button tile\r
-char curzone=0;                      // current zone.\r
-char scrollmode=0;                   // tile or pixel scroll modes.\r
-char mouse_scroll=1;\r
-char layertoggle[10];                // layer visible toggles\r
-char el=0;                           // current editing layer.\r
-char modified=0;                     // Current buffer modified or not.\r
-\r
-// -- music stuff --\r
-\r
-char is_playing=0;\r
-char cmname[60];\r
-UNIMOD *mf=0;\r
-\r
-// -- copy/paste & block fill --\r
-\r
-word *copybuf=0;\r
-int copybuf_wide=0,copybuf_deep=0;\r
-int selx1=0, sely1=0, selx2=0, sely2=0;\r
-int shifted=0, pasting=0;\r
-extern char curtrack;\r
-\r
-char vcedprog[80];\r
-byte* translucency_table; //zero\r
-\r
-int moving_up=0,moving_down=0,moving_left=0,moving_right=0; // aen\r
-\r
-// ================================= Code ====================================\r
-\r
-//added by zero\r
-void LoadTransTable()\r
-{\r
-  FILE *fp;\r
-\r
-  if (!translucency_table)\r
-    translucency_table=(byte *) valloc(65536,"trans tbl",0);\r
-\r
-  fp=fopen("trans.tbl","rb");\r
-  if (!fp)\r
-  {\r
-    vfree(translucency_table);\r
-    translucency_table=0;\r
-    return;\r
-  }\r
-\r
-  fread(translucency_table, 65536, 1, fp);\r
-  fclose(fp);\r
-}\r
-\r
-int Exist(char *fname)\r
-{ FILE *tempf;\r
-\r
-  tempf=fopen(fname,"rb");\r
-  if (tempf)\r
-  {\r
-     fclose(tempf);\r
-     return 1;\r
-  }\r
-  else return 0;\r
-}\r
-\r
-void err(char *str, ...)\r
-{\r
-   va_list argptr;\r
-   char msg[256];\r
-\r
-   va_start(argptr, str);\r
-   vsprintf(msg, str, argptr);\r
-   va_end(argptr);\r
-\r
-  ShutdownVideo();\r
-  ShutdownTimer();\r
-  ShutdownKeyboard();\r
-  //CD_DeInit(); // wasn't even valid! CD_Deinit() was incorrect <aen, apr 21>\r
-               // Actually, Wat is by default case insensitive, so nyeh.;) <vec>\r
-  //if (curtrack != 1) //CD_Stop();\r
-\r
-  printf("%s \n",msg);\r
-  exit(-1);\r
-}\r
-\r
-void errf(char *str, char *str1)\r
-{\r
-  sprintf(strbuf,str,str1);\r
-  err(strbuf);\r
-}\r
-\r
-void errn(char *str, int n)\r
-{\r
-  sprintf(strbuf,str,n);\r
-  err(strbuf);\r
-}\r
-\r
-int random(int lo, int hi)\r
-{\r
-  int range=hi-lo+1;\r
-  int i=rand() % range;\r
-  return i+lo;\r
-}\r
-\r
-void PlayMusic(char *fname)\r
-{\r
-  if (!soundokay) return;\r
-  if (is_playing)\r
-  {\r
-    MD_PlayStop();\r
-    ML_Free(mf);\r
-    is_playing=0;\r
-  }\r
-  mf=ML_LoadFN(fname);\r
-  if (!mf)\r
-  {\r
-    Message("Could not load specified music.",500);\r
-    return;\r
-  }\r
-  MP_Init(mf);\r
-  md_numchn=mf->numchn; mp_loop=1;\r
-  MD_PlayStart();\r
-  is_playing=1;\r
-}\r
-\r
-void StopMusic()\r
-{\r
-  if (!soundokay) return;\r
-  MD_PlayStop();\r
-  ML_Free(mf);\r
-  is_playing=0;\r
-}\r
-\r
-void LoadVSP(char *fname)\r
-{ FILE *f;\r
-  short ver;\r
-\r
-  if (!(f=fopen(fname,"rb")))\r
-     errf("VSP file %s not found.",fname);\r
-\r
-  fread(&ver, 1, 2, f);\r
-  if (ver!=2 && ver!=3)\r
-     errf("VSP file %s is not the correct VSP format.",fname);\r
-  if (ver==2)\r
-  {\r
-    fread(&pal, 1, 768, f);\r
-    set_intensity(63);\r
-    fread(&numtiles, 1, 2, f);\r
-    vsp=(char *) valloc(256*numtiles, "vsp data", 0);\r
-    fread(vsp, 256, numtiles, f);\r
-    fread(&vspanim, 8, 100, f);\r
-    fclose(f);\r
-  }\r
-  if (ver==3)\r
-  {\r
-    fread(&pal, 1, 768, f);\r
-    set_intensity(63);\r
-    fread(&numtiles, 1, 2, f);\r
-    vsp=(char *) valloc(256*numtiles, "vsp data", 0);\r
-    fread(&bufsize, 1, 4, f);\r
-    ReadCompressedLayer1(vsp, 256*numtiles, f);\r
-    fread(&vspanim, 8, 100, f);\r
-    fclose(f);\r
-  }\r
-}\r
-\r
-void SaveVSP(char *fname)\r
-{ FILE *f;\r
-  short ver;\r
-\r
-  f=fopen(fname,"wb");\r
-  ver=3;\r
-  fwrite(&ver, 1, 2, f);\r
-  fwrite(&pal, 1, 768, f);\r
-  fwrite(&numtiles, 1, 2, f);\r
-  cb=(char *) valloc(numtiles*256, "vsp tempbuf", 0);\r
-  bufsize=0;\r
-  WriteCompressedLayer1(vsp, numtiles*256);\r
-  fwrite(&bufsize, 1, 4, f);\r
-  fwrite(cb, 1, bufsize, f);\r
-  //free(bufsize); // what the hell??? @_@\r
-  fwrite(&vspanim, 8, 100, f);\r
-  fclose(f);\r
-}\r
-\r
-void EmitC (char c)\r
-{\r
-  *csrc=c;\r
-  csrc++;\r
-  bufsize++;\r
-}\r
-\r
-void EmitW (short int w)\r
-{\r
-  char *ptr;\r
-\r
-  ptr=(char *)&w;\r
-  *csrc=*ptr;\r
-  csrc++;\r
-  ptr++;\r
-  *csrc=*ptr;\r
-  csrc++;\r
-  bufsize+=2;\r
-}\r
-\r
-void WriteCompressedLayer1(unsigned char *p, int len)\r
-{ int i;\r
-  unsigned char byt,samect;\r
-  unsigned char repcode;\r
-\r
-  csrc=cb;\r
-  i=0; bufsize=0;\r
-  do\r
-  {   byt=p[i++];\r
-      samect=1;\r
-      while (samect<254 && i<len && byt==p[i])\r
-      {\r
-         samect++;\r
-         i++;\r
-      }\r
-      if (samect==2 && byt != 0xFF) { EmitC(byt); }\r
-      if (samect==3 && byt != 0xFF) { EmitC(byt); EmitC(byt); }\r
-      if (samect>3 || byt == 0xFF)\r
-      {\r
-         repcode=0xFF;\r
-         EmitC(repcode);\r
-         repcode=(char) samect;\r
-         EmitC(repcode);\r
-      }\r
-      EmitC(byt);\r
-  } while (i<len);\r
-}\r
-\r
-void ReadCompressedLayer1(unsigned char *dest, int len, FILE *f)\r
-{ int j,n;\r
-  unsigned char run;\r
-  unsigned char w;\r
-\r
-  n=0;\r
-  do\r
-  {\r
-     fread(&w, 1, 1, f);\r
-     if (w==0xFF)\r
-     {\r
-         fread(&run, 1, 1, f);\r
-         fread(&w, 1, 1, f);\r
-         for (j=0; j<run; j++)\r
-             dest[n+j]=w;\r
-         n+=run;\r
-     }\r
-     else\r
-      {\r
-         dest[n]=w;\r
-         n++;\r
-      }\r
-  } while (n<len);\r
-}\r
-\r
-void WriteCompressedLayer2(unsigned short *p,int len)\r
-{ int i;\r
-  unsigned short byt,samect;\r
-  unsigned char repcode;\r
-\r
-  csrc=cb;\r
-  i=0; bufsize=0;\r
-  do\r
-  {   byt=p[i++];\r
-      samect=1;\r
-      while (samect<255 && i<len && byt==p[i])\r
-      {\r
-         samect++;\r
-         i++;\r
-      }\r
-      if (samect>1)\r
-      {\r
-         repcode=(char) samect;\r
-         EmitC(repcode);\r
-         repcode=0xFF;\r
-         EmitC(repcode);\r
-      }\r
-      EmitW(byt);\r
-  } while (i<len);\r
-}\r
-\r
-void ReadCompressedLayer2(unsigned short *dest, int len, FILE *f)\r
-{ int j,n;\r
-  unsigned char run;\r
-  unsigned short w;\r
-\r
-  n=0;\r
-  do\r
-  {\r
-     fread(&w, 1, 2, f);\r
-     if ((w & 0xFF00)==0xFF00)\r
-     {\r
-        run=(char) (w & 0x00FF);\r
-        fread(&w, 1, 2, f);\r
-        for (j=0; j<run; j++)\r
-            dest[n+j]=w;\r
-        n+=run;\r
-     }\r
-     else\r
-     {\r
-        dest[n]=w;\r
-        n++;\r
-     }\r
-  } while (n<len);\r
-}\r
-\r
-void CountUsedZones()\r
-{ int i;\r
-\r
-  i=255;\r
-  while (i)\r
-  {\r
-     if (zones[i].script) break;\r
-     if (zones[i].percent) break;\r
-     if (zones[i].delay) break;\r
-     if (zones[i].aaa) break;\r
-     if (zones[i].entityscript) break;\r
-     if (strlen(zones[i].name)) break;\r
-     i--;\r
-  }\r
-  numzones=i+1;\r
-}\r
-\r
-void CountMoveScripts()\r
-{ int i;\r
-\r
-  i=99;\r
-  while (i)\r
-  {\r
-     if (strlen(ms[i].t)) break;\r
-     i--;\r
-  }\r
-  nms=i+1;\r
-}\r
-\r
-void CountCHRs()\r
-{ int i;\r
-\r
-  i=99;\r
-  while (i)\r
-  {\r
-     if (strlen(chrlist[i].t)) break;\r
-     i--;\r
-  }\r
-  nmchr=i+1;\r
-}\r
-\r
-void SaveMAP(char *fname)\r
-{ FILE *f;\r
-  int i, ofstbl[100], ct, t;\r
-\r
-  memcpy(strbuf, "MAPù5", 6);\r
-  f=fopen(fname, "wb");\r
-  fwrite(strbuf, 1, 6, f);\r
-  fwrite(strbuf, 1, 4, f);\r
-  fwrite(vspname, 1, 60, f);\r
-  fwrite(musname, 1, 60, f);\r
-  fwrite(rstring, 1, 20, f);\r
-  fwrite(&xstart, 1, 2, f);\r
-  fwrite(&ystart, 1, 2, f);\r
-  fwrite(&wrap, 1, 1, f);\r
-  fwrite(strbuf, 1, 50, f);\r
-  fwrite(&numlayers, 1, 1, f);\r
-  for (i=0; i<numlayers; i++)\r
-      fwrite(&layer[i], 1, 12, f);\r
-\r
-  for (i=0; i<numlayers; i++)\r
-  {\r
-     cb=(char *) valloc(layer[i].sizex*layer[i].sizey*2,"cmprs buf", 0);\r
-     WriteCompressedLayer2(layers[i],(layer[i].sizex*layer[i].sizey));\r
-     fwrite(&bufsize, 1, 4, f);\r
-     fwrite(cb, 1, bufsize, f);\r
-     vfree(cb);\r
-  }\r
-  // Compress and write Obstruction data\r
-\r
-  cb=(char *) valloc(layer[0].sizex*layer[0].sizey*2, "cmprs buf", 0);\r
-  WriteCompressedLayer1(obstruct, (layer[0].sizex*layer[0].sizey));\r
-  fwrite(&bufsize, 1, 4, f);\r
-  fwrite(cb, 1, bufsize, f);\r
-  WriteCompressedLayer1(zone, (layer[0].sizex*layer[0].sizey));\r
-  fwrite(&bufsize, 1, 4, f);\r
-  fwrite(cb, 1, bufsize, f);\r
-  vfree(cb);\r
-\r
-  CountUsedZones();\r
-  fwrite(&numzones, 1, 4, f);\r
-  fwrite(&zones, numzones, 50, f);\r
-\r
-  CountCHRs();\r
-  fwrite(&nmchr, 1, 1, f);\r
-  fwrite(&chrlist, 60, nmchr, f);\r
-\r
-  fwrite(&entities, 1, 1, f);\r
-  fwrite(&entity, sizeof(entity)/256, entities, f);\r
-\r
-  CountMoveScripts();\r
-  fwrite(&nms, 1, 1, f);     // Calc offset buffer\r
-  ct=0;\r
-  for (i=0; i<nms; i++)\r
-  {\r
-    ofstbl[i]=ct;\r
-    t=strlen(&ms[i].t)+1;\r
-    ct+=t;\r
-  }\r
-  fwrite(&ct, 1, 4, f);        // string table length\r
-  fwrite(&ofstbl, nms, 4, f);  // write offset buffer\r
-  for (i=0; i<nms; i++)        // write string table\r
-  {\r
-    fwrite(&ms[i].t, 1, strlen(&ms[i].t)+1, f);\r
-  }\r
-\r
-  ct=0;  // 0 Things\r
-  fwrite(&ct, 1, 4, f);\r
-  ct=ftell(f);\r
-\r
-  i=1; fwrite(&i, 1, 4, f);\r
-  i=0; fwrite(&i, 1, 4, f);\r
-  i=1; fwrite(&i, 1, 4, f);\r
-  i=9; fwrite(&i, 1, 1, f);\r
-\r
-  fseek(f,6,0);\r
-  fwrite(&ct, 1, 4, f);\r
-  fclose(f);\r
-}\r
-\r
-void LoadOldMAP(FILE *f)\r
-{ int i, j, ct, ofstbl[100];\r
-  char pm,pd,pc,c;\r
-\r
-  // Reads a VERGE 1 format version 4 MAP file.\r
-  fseek(f, 1, 0);\r
-  fread(&vspname, 1, 13, f);\r
-  fread(&musname, 1, 13, f);\r
-  fread(&pc, 1, 1, f);             // }\r
-  fread(&pm, 1, 1, f);             // } Parallax controls\r
-  fread(&pd, 1, 1, f);             // }\r
-  fread(strbuf, 1, 32, f);         // unused - misc\r
-  fread(&xstart, 1, 2, f);\r
-  fread(&ystart, 1, 2, f);\r
-  fread(strbuf, 1, 2, f);          // unused - misc\r
-  fread(&layer[0].sizex, 1, 2, f);\r
-  fread(&layer[0].sizey, 1, 2, f);\r
-  layer[1].sizex=layer[0].sizex;\r
-  layer[1].sizey=layer[0].sizey;\r
-  fread(strbuf, 1, 28, f);         // unused - header pad\r
-\r
-  layers[0]=(unsigned short *) valloc((layer[0].sizex*(layer[0].sizey+1)*2)+2, "layer data", 0);\r
-  layers[1]=(unsigned short *) valloc((layer[1].sizex*(layer[1].sizey+1)*2)+2, "layer data", 1);\r
-   obstruct=(char *) valloc(layer[0].sizex*(layer[0].sizey+2), "obstruct map", 0);\r
-       zone=(char *) valloc(layer[0].sizex*(layer[0].sizey+2), "zone map", 0);\r
-         cb=(char *) valloc(layer[0].sizex*(layer[0].sizey+2), "comprs buf", 0);\r
-\r
-  fread(layers[0], 2, layer[0].sizex * layer[0].sizey, f);\r
-  fread(layers[1], 2, layer[1].sizex * layer[1].sizey, f);\r
-  fread(cb,        1, layer[0].sizex * layer[0].sizey, f);\r
-\r
-  // Convert MAP Properties layer to respective Zone and Obstruction layers\r
-\r
-  for (j=0; j<layer[0].sizey; j++)\r
-    for (i=0; i<layer[0].sizex; i++)\r
-    {\r
-      if ((cb[(j*layer[0].sizex)+i] & 1)==1)\r
-         c=1; else c=0;\r
-       obstruct[(j*layer[0].sizex)+i]=c;\r
-       c=cb[(j*layer[0].sizex)+i] >> 1;\r
-       zone[(j*layer[0].sizex)+i]=c;\r
-    }\r
-  vfree(cb);\r
-\r
-  // Load and convert zone data records.\r
-\r
-  for (i=0; i<128; i++)\r
-  {\r
-    fread(&tzone, 1, sizeof tzone, f);\r
-    zones[i].script=tzone.callevent;\r
-    zones[i].percent=tzone.percent;\r
-    zones[i].delay=tzone.delay;\r
-    zones[i].aaa=tzone.aaa;\r
-    zones[i].entityscript=0;\r
-    memcpy(zones[i].name, tzone.zonename, 16);\r
-  }\r
-\r
-  for (i=0; i<100; i++)                  // Load and convert CHR list\r
-    fread(&chrlist[i].t, 1, 13, f);\r
-//  DoCHRdealy();\r
-\r
-  fread(&entities, 1, 1, f); fseek(f, 3, 1);\r
-  memset(&entity, 0, sizeof entity);\r
-  for (i=0; i<entities; i++)             // Load and convert entity records\r
-  {\r
-    fread(&oldent, 1, 88, f);\r
-    entity[i].x=oldent.x;\r
-    entity[i].y=oldent.y;\r
-    entity[i].chrindex=oldent.chrindex-5;\r
-    entity[i].obsmode1=oldent.obsmode^1;\r
-    entity[i].obsmode2=1;\r
-    entity[i].movecode=oldent.movecode;\r
-    if (entity[i].movecode==3) entity[i].movecode=2;\r
-    else if (entity[i].movecode==2) entity[i].movecode=3;\r
-    entity[i].speed=oldent.speed;\r
-    entity[i].face=oldent.face;\r
-    entity[i].actm=oldent.activmode;\r
-    entity[i].movescript=oldent.movescript;\r
-    entity[i].step=oldent.step;\r
-    entity[i].delay=oldent.delay;\r
-    entity[i].data2=0;\r
-    entity[i].data3=0;\r
-    entity[i].data5=0;\r
-    entity[i].data6=0;\r
-    entity[i].actscript=oldent.actscript;\r
-    if (entity[i].movecode==2) entity[i].data2=oldent.data3;\r
-    if (entity[i].movecode==3)\r
-    {\r
-      entity[i].data2=oldent.x1;\r
-      entity[i].data3=oldent.y1;\r
-      entity[i].data5=oldent.x2;\r
-      entity[i].data6=oldent.y2;\r
-    }\r
-    memcpy(entity[i].desc, oldent.entitydesc, 20);\r
-  }\r
-\r
-  fread(&nms, 1, 1, f);\r
-  fread(&ct, 1, 4, f);\r
-  fread(&ofstbl, nms, 4, f);\r
-  ofstbl[nms]=ct;\r
-  for (i=0; i<nms; i++)\r
-   fread(&ms[i].t, 1, (ofstbl[i+1]-ofstbl[i]), f);\r
-  fclose(f);\r
-\r
-  numlayers=2;\r
-  layertoggle[0]=1; layertoggle[1]=1; layertoggle[2]=0; layertoggle[3]=0;\r
-  layertoggle[4]=0; layertoggle[5]=0; layertoggle[6]=0; layertoggle[7]=0;\r
-  memcpy(rstring,"1E2",3);\r
-  switch (pc)\r
-  {\r
-    case 0:\r
-    case 1: layer[0].pmultx=1; layer[0].pmulty=1; layer[0].pdivx=1; layer[0].pdivy=1;\r
-            layer[1].pmultx=1; layer[1].pmulty=1; layer[1].pdivx=1; layer[1].pdivy=1; break;\r
-    case 2: layer[0].pmultx=pm; layer[0].pmulty=pm; layer[0].pdivx=pd; layer[0].pdivy=pd;\r
-            layer[1].pmultx=1; layer[1].pmulty=1; layer[1].pdivx=1; layer[1].pdivy=1; break;\r
-    case 3: layer[0].pmultx=1; layer[0].pmulty=1; layer[0].pdivx=1; layer[0].pdivy=1;\r
-            layer[1].pmultx=pm; layer[1].pmulty=pm; layer[1].pdivx=pd; layer[1].pdivy=pd; break;\r
-  }\r
-\r
-  LoadVSP(vspname);\r
-  sprintf(strbuf, "MapEd %s Copyright (C)1998 vecna", ME2_VERSION);\r
-  Message(strbuf,700);\r
-  Message("Old VERGE format 4 MAP loaded.",300);\r
-  if (strlen(musname))\r
-    PlayMusic(musname);\r
-}\r
-\r
-void LoadMAP(char *fname)\r
-{ FILE *f;\r
-  int i, ct, ofstbl[100];\r
-\r
-  memcpy(strbuf, "MAPù5", 6);\r
-  if (!(f=fopen(fname, "rb"))) errf("Could not find %s.",fname);\r
-  fread(strbuf, 1, 6, f);\r
-  if (strcmp(strbuf,"MAPù5"))\r
-  {\r
-     if (strbuf[0]==4)\r
-     {\r
-        LoadOldMAP(f);\r
-        return;\r
-     }\r
-     errf("%s is not a recognized MAP file.",fname);\r
-  }\r
-\r
-  fread(&i, 1, 4, f);\r
-  fread(vspname, 1, 60, f);\r
-  fread(musname, 1, 60, f);\r
-  fread(rstring, 1, 20, f);\r
-  fread(&xstart, 1, 2, f);\r
-  fread(&ystart, 1, 2, f);\r
-  fread(&wrap, 1, 1, f);\r
-  fread(strbuf, 1, 50, f);\r
-  fread(&numlayers, 1, 1, f);\r
-  for (i=0; i<numlayers; i++)\r
-      fread(&layer[i], 1, 12, f);\r
-\r
-  for (i=0; i<numlayers; i++)\r
-  {\r
-     fread(&bufsize, 1, 4, f);\r
-     layers[i]=(unsigned short *) valloc(layer[i].sizex*(layer[i].sizey+2)*2, "layer data", i);\r
-     ReadCompressedLayer2(layers[i],(layer[i].sizex * layer[i].sizey),f);\r
-     layertoggle[i]=1;\r
-  }\r
-  while (i<10)\r
-  {\r
-     layertoggle[i]=0;\r
-     i++;\r
-  }\r
-  obstruct=(char *) valloc(layer[0].sizex*(layer[0].sizey+2),"obstruct map", 0);\r
-  zone=(char *) valloc(layer[0].sizex*(layer[0].sizey+2), "zone map", 0);\r
-\r
-  fread(&bufsize, 1, 4, f);\r
-  ReadCompressedLayer1(obstruct,(layer[0].sizex * layer[0].sizey), f);\r
-  fread(&bufsize, 1, 4, f);\r
-  ReadCompressedLayer1(zone,(layer[0].sizex * layer[0].sizey), f);\r
-\r
-  memset(&zones, 0, sizeof zones);\r
-  fread(&numzones, 1, 4, f);\r
-  fread(&zones, numzones, 50, f);\r
-\r
-  memset(&chrlist, 0, sizeof chrlist);\r
-  fread(&nmchr, 1, 1, f);\r
-  fread(&chrlist, 60, nmchr, f);\r
-//  DoCHRdealy();\r
-\r
-  fread(&entities, 1, 1, f);\r
-  fread(&entity, sizeof(entity)/256, entities, f);\r
-\r
-  fread(&nms, 1, 1, f);\r
-  fread(&ct, 1, 4, f);\r
-  fread(&ofstbl, nms, 4, f);\r
-  ofstbl[nms]=ct;\r
-  for (i=0; i<nms; i++)\r
-    fread(&ms[i].t, 1, (ofstbl[i+1]-ofstbl[i]), f);\r
-  fclose(f);\r
-\r
-  LoadVSP(vspname);\r
-  sprintf(strbuf, "MapEd %s Copyright (C)1998 vecna", ME2_VERSION);\r
-  Message(strbuf,700);\r
-  Message("V2 MAP loaded.",300);\r
-  if (strlen(musname))\r
-    PlayMusic(musname);\r
-}\r
-\r
-void InitTileIDX()\r
-{ short i;\r
-\r
-  memset(vadelay, 0, 200);\r
-  for (i=0; i<MAXTILES; i++)\r
-      tileidx[i]=i;\r
-}\r
-\r
-void CheckTimerStuff()\r
-{ static inss=0;\r
-\r
-  if (backupct>30000)\r
-  {\r
-    Message("Generating Auto-backup",150);\r
-    SaveMAP("$$BACKUP.MAP");\r
-    SaveVSP("$$BACKUP.VSP");\r
-    backupct=0;\r
-  }\r
-  if (idlect>8000 && !inss)\r
-  {\r
-    inss=1;\r
-    ScreenSaver();\r
-    idlect=0;\r
-    inss=0;\r
-  }\r
-}\r
-\r
-extern int difficulty;\r
-\r
-void SaveNewCFG()\r
-{ FILE *f;\r
-\r
-  f=fopen("maped.cfg","w");\r
-  //if (nocdaudio) fprintf(f,"nocdaudio\n");\r
-  fprintf(f,"vidmode %d \n", vm);\r
-  fprintf(f,"pad %d \n", pad);\r
-  fprintf(f,"scrollmode %d \n",scrollmode);\r
-  fprintf(f,"mouse_scroll %d \n",mouse_scroll&1); // aen\r
-  fprintf(f,"black %d \n",black);\r
-  fprintf(f,"white %d \n",brightw);\r
-  fprintf(f,"winbg %d \n",winbg);\r
-  fprintf(f,"shadow %d \n",darkw);\r
-  fprintf(f,"darkred %d \n",darkred);\r
-  fprintf(f,"titlebg %d \n",titlebg);\r
-  fprintf(f,"th %d \n", th);\r
-  fprintf(f,"mh %d \n", mh);\r
-  fprintf(f,"md_device %d \n", md_device==3?3:0);\r
-  fprintf(f,"amxofs %d \n",amxofs);\r
-  fprintf(f,"amyofs %d \n",amyofs);\r
-  fprintf(f,"mmxofs %d \n",mmxofs);\r
-  fprintf(f,"mmyofs %d \n",mmyofs);\r
-  fprintf(f,"cnxofs %d \n",cnxofs);\r
-  fprintf(f,"cnyofs %d \n",cnyofs);\r
-  fprintf(f,"lmxofs %d \n",lmxofs);\r
-  fprintf(f,"lmyofs %d \n",lmyofs);\r
-  fprintf(f,"lvxofs %d \n",lvxofs);\r
-  fprintf(f,"lvyofs %d \n",lvyofs);\r
-  fprintf(f,"mpxofs %d \n",mpxofs);\r
-  fprintf(f,"mpyofs %d \n",mpyofs);\r
-  fprintf(f,"vaxofs %d \n",vaxofs);\r
-  fprintf(f,"vayofs %d \n",vayofs);\r
-  fprintf(f,"zexofs %d \n",zexofs);\r
-  fprintf(f,"zeyofs %d \n",zeyofs);\r
-  fprintf(f,"exofs %d \n",exofs);\r
-  fprintf(f,"eyofs %d \n",eyofs);\r
-  fprintf(f,"prxofs %d \n",prxofs);\r
-  fprintf(f,"pryofs %d \n",pryofs);\r
-  fprintf(f,"rsxofs %d \n",rsxofs);\r
-  fprintf(f,"rsyofs %d \n",rsyofs);\r
-  fprintf(f,"vced %s \n",vcedprog);\r
-  fprintf(f,"difficulty %d \n",difficulty);\r
-  fclose(f);\r
-}\r
-\r
-#include "controls.c"\r
-\r
-void ShellToDOS()\r
-{\r
-  ShutdownVideo();\r
-  ShutdownKeyboard();\r
-  ShutdownTimer();\r
-  MD_PlayStop();\r
-  MD_Exit();\r
-\r
-  system("COMMAND.COM");\r
-\r
-  if (!MD_Init())\r
-  {\r
-    printf("Couldn't initialize sound: %s.\n", myerr);\r
-    delay(500);\r
-    soundokay=0;\r
-  }\r
-  if (strlen(musname)) PlayMusic(musname);\r
-  InitVideo(vm);\r
-  set_intensity(63);\r
-  InitMouse();\r
-  InitKeyboard();\r
-  InitTimer();\r
-}\r
-\r
-void ShellVERGE()\r
-{\r
-  ShutdownVideo();\r
-  ShutdownKeyboard();\r
-  ShutdownTimer();\r
-  MD_PlayStop();\r
-  MD_Exit();\r
-\r
-  system("VERGE");\r
-\r
-  if (!MD_Init())\r
-  {\r
-    printf("Couldn't initialize sound: %s.\n", myerr);\r
-    delay(500);\r
-    soundokay=0;\r
-  }\r
-  if (strlen(musname)) PlayMusic(musname);\r
-  InitVideo(vm);\r
-  set_intensity(63);\r
-  InitMouse();\r
-  InitKeyboard();\r
-  InitTimer();\r
-}\r
-\r
-void ShellMAP()\r
-{\r
-  ShutdownVideo();\r
-  ShutdownKeyboard();\r
-  ShutdownTimer();\r
-  MD_PlayStop();\r
-  MD_Exit();\r
-\r
-  sprintf(strbuf,"verge %s",mapname);\r
-  system(strbuf);\r
-\r
-  if (!MD_Init())\r
-  {\r
-    printf("Couldn't initialize sound: %s.\n", myerr);\r
-    delay(500);\r
-    soundokay=0;\r
-  }\r
-  if (strlen(musname)) PlayMusic(musname);\r
-  InitVideo(vm);\r
-  set_intensity(63);\r
-  InitMouse();\r
-  InitKeyboard();\r
-  InitTimer();\r
-}\r
-\r
-void ShellEditMAP()\r
-{\r
-  char fn[80],*p;\r
-\r
-  key[SCAN_ALT]=0;\r
-  key[SCAN_V]=0;\r
-  ShutdownVideo();\r
-  ShutdownKeyboard();\r
-  ShutdownTimer();\r
-  MD_PlayStop();\r
-  MD_Exit();\r
-\r
-  sprintf(fn,"%s",mapname);\r
-  p=fn;\r
-  while (*p)\r
-  {\r
-    if (*p=='.') *p=0;\r
-    p++;\r
-  }\r
-  sprintf(strbuf,"%s %s.vc", vcedprog, fn);\r
-  system(strbuf);\r
-\r
-  if (!MD_Init())\r
-  {\r
-    printf("Couldn't initialize sound: %s.\n", myerr);\r
-    delay(500);\r
-    soundokay=0;\r
-  }\r
-  if (strlen(musname)) PlayMusic(musname);\r
-  InitVideo(vm);\r
-  set_intensity(63);\r
-  InitMouse();\r
-  InitKeyboard();\r
-  InitTimer();\r
-}\r
-\r
-void ShellEditSystem()\r
-{\r
-  key[SCAN_ALT]=0;\r
-  key[SCAN_S]=0;\r
-  ShutdownVideo();\r
-  ShutdownKeyboard();\r
-  ShutdownTimer();\r
-  MD_PlayStop();\r
-  MD_Exit();\r
-\r
-  sprintf(strbuf,"%s system.vc", vcedprog);\r
-  system(strbuf);\r
-\r
-  if (!MD_Init())\r
-  {\r
-    printf("Couldn't initialize sound: %s.\n", myerr);\r
-    delay(500);\r
-    soundokay=0;\r
-  }\r
-  if (strlen(musname)) PlayMusic(musname);\r
-  InitVideo(vm);\r
-  set_intensity(63);\r
-  InitMouse();\r
-  InitKeyboard();\r
-  InitTimer();\r
-}\r
-\r
-char s[256];\r
-\r
-void CompileAll()\r
-{\r
-  FILE *f;\r
-  char *p;\r
-\r
-  MD_PlayStop();\r
-  MD_Exit();\r
-\r
-  sprintf(strbuf,"vcc all q",mapname);\r
-  system(strbuf);\r
-\r
-  if (!MD_Init())\r
-  {\r
-    printf("Couldn't initialize sound: %s.\n", myerr);\r
-    delay(500);\r
-    soundokay=0;\r
-  }\r
-  if (strlen(musname)) PlayMusic(musname);\r
-\r
-  if (!(f=fopen("error.txt","r")))\r
-  {\r
-    Message("All VC scripts sucessfully compiled.",300);\r
-    return;\r
-  }\r
-\r
-  fgets(s,99,f);\r
-  fclose(f);\r
-  p=s;\r
-  while (*p)\r
-  {\r
-    if (*p==13 || *p==10) *p=0;\r
-    p++;\r
-  }\r
-  VCNotify(s);\r
-}\r
-\r
-void CompileMAP()\r
-{\r
-  FILE *f;\r
-  char *p;\r
-\r
-  MD_PlayStop();\r
-  MD_Exit();\r
-\r
-  sprintf(strbuf,"vcc %s q",mapname);\r
-  system(strbuf);\r
-\r
-  if (!MD_Init())\r
-  {\r
-    printf("Couldn't initialize sound: %s.\n", myerr);\r
-    delay(500);\r
-    soundokay=0;\r
-  }\r
-  if (strlen(musname)) PlayMusic(musname);\r
-\r
-  if (!(f=fopen("error.txt","r"))) return;\r
-\r
-  fgets(s,99,f);\r
-  fclose(f);\r
-  p=s;\r
-  while (*p)\r
-  {\r
-    if (*p==13 || *p==10) *p=0;\r
-    p++;\r
-  }\r
-  VCNotify(s);\r
-}\r
-\r
-void tickhandler(void)\r
-{\r
-  MP_HandleTick();\r
-  MD_SetBPM(mp_bpm);\r
-}\r
-\r
-void RenderHighlight()\r
-{ int zx, zy;\r
-  int xw, yw;\r
-\r
-  if (mh)\r
-  {\r
-    xw=xwin&15;\r
-    yw=ywin&15;\r
-    zx=((mx+xw)&~15)-xw;\r
-    zy=((my+yw)&~15)-yw;\r
-\r
-    DrawHighlight(zx-1, zy-1);\r
-  }\r
-}\r
-\r
-int EntityThere(int xw, int yw)\r
-{ int i;\r
-\r
-  for (i=0; i<entities; i++)\r
-  {\r
-    if (entity[i].x==xw && entity[i].y==yw) return i+1;\r
-  }\r
-  return 0;\r
-}\r
-\r
-void AllocateEntity(int xw, int yw)\r
-{\r
-  memset(&entity[entities], 0, sizeof(entity) / 256);\r
-  entity[entities].x=xw;\r
-  entity[entities].y=yw;\r
-  entities++;\r
-}\r
-\r
-void ProcessEntity(int xw, int yw)\r
-{ int a;\r
-\r
-  a=EntityThere(xw,yw);\r
-  if (!a)\r
-  {\r
-     AllocateEntity(xw,yw);\r
-     while (mb)\r
-       ReadMouse(); // har! this was readmouse() @_@ <aen, apr 21>\r
-     mb=0;\r
-     return;\r
-  }\r
-  EntityEditor(a-1);\r
-}\r
-\r
-void DeleteEntity(int xw, int yw)\r
-{ int i,a;\r
-  char t[60];\r
-\r
-  a=EntityThere(xw,yw)-1;\r
-  sprintf(t,"Delete entity %d?",a);\r
-  if (!Confirm(t)) return;\r
-  for (i=a; i<entities; i++)\r
-  {\r
-    entity[i]=entity[i+1];\r
-  }\r
-  entities--;\r
-}\r
-\r
-int bxsize=130, bysize=170;\r
-int bxofs=80, byofs=25;\r
-int bmode=0;\r
-\r
-void Browse(char n, char *m1, char *m2, char *m3, char *m4, char *dest)\r
-{ struct find_t *f;\r
-  char i, *d, mode;\r
-  char *blah;\r
-  int fc=0, ofs=0, cfs=0, a, b;\r
-  char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-  //int zx,zy,zw;\r
-  char dragging=0;\r
-\r
-  f=(struct find_t *) valloc(sizeof *f, "browse() tmp",0);\r
-  blah=(char *) valloc(13*256,"browse()tmp2", 0);\r
-  //memset(blah, 0, 13*256);\r
-  n++;\r
-\r
-  for (i=0; i<n; i++)\r
-  {\r
-    switch (i)\r
-    {\r
-      case 0: d="AJDLMMZZ.GAH"; mode=0xFF; break;\r
-      case 1: d=m1; mode=0xFF; break;\r
-      case 2: d=m2; mode=0xFF; break;\r
-      case 3: d=m3; mode=0xFF; break;\r
-      case 4: d=m4; mode=0xFF; break;\r
-      default: err("uhh..."); break;\r
-    }\r
-    if (_dos_findfirst(d, mode, f)) continue;\r
-    memcpy(blah+(fc*13), f->name, 13); fc++;\r
-    while (!_dos_findnext(f))\r
-    {\r
-      memcpy(blah+(fc*13), f->name, 13); fc++;\r
-    }\r
-  }\r
-  vfree(f);\r
-  last_pressed=0;\r
-  a=fc<22?117:2574/fc;\r
-//  errn("%d",fc);\r
-  do\r
-  {\r
-    if (!bmode)\r
-    {\r
-      RenderMap();\r
-      RenderGUI();\r
-    }\r
-    else\r
-    {\r
-      RenderSelector();\r
-      RenderMessages();\r
-    }\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      bxofs = (mx-mxo);\r
-      byofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (bxofs<16) bxofs = 16;\r
-      if (byofs<16) byofs = 16;\r
-      if (bxofs+bxsize>335) bxofs = 336-bxsize;\r
-      if (byofs+bysize>sy+16) byofs = (sy+16)-bysize;\r
-    }\r
-\r
-    Window(bxofs, byofs, bxofs+bxsize, byofs+bysize, "Browse");\r
-    Button(bxofs+65, byofs+157, "OK");\r
-    Button(bxofs+96, byofs+157, "Cancel");\r
-    FilledBox(bxofs+20, byofs+15, 80, 135, black);\r
-    FilledBox(bxofs+100, byofs+15, 10, 135, 2);\r
-    HLine(bxofs+20, byofs+15, 90, darkw);\r
-    VLine(bxofs+20, byofs+15, 135, darkw);\r
-    VLine(bxofs+99, byofs+16, 134, white);\r
-    VLine(bxofs+109, byofs+16, 134, white);\r
-    HLine(bxofs+21, byofs+149, 89, white);\r
-    stdwindow(bxofs+100, byofs+16, bxofs+109, byofs+25);\r
-    stdwindow(bxofs+100, byofs+140, bxofs+109, byofs+149);\r
-    b=byofs+24+(fc != 22 ? ((117-a)*ofs)/(fc-22) : 0);\r
-\r
-    //draws the drag box\r
-    stdwindow(bxofs+100, b, bxofs+109, b+a);\r
-\r
-    FilledBox(bxofs+21, byofs+((cfs-ofs)*6)+16, 78, 6, darkw);\r
-\r
-    // Render actual filename thingies\r
-    i=0;\r
-    while (1)\r
-    {\r
-      if (i+ofs<fc && i<22)\r
-      {\r
-        GotoXY(bxofs+22, byofs+17+(i*6));\r
-        printstring(blah+((i+ofs)*13));\r
-      }\r
-      else break;\r
-      i++;\r
-    }\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-\r
-    if(dragging&&!mb)\r
-    {\r
-      dragging=0;\r
-    }\r
-\r
-    if((mb==1&&mx>bxofs+100&&mx<bxofs+110&&my>byofs+25&&my<byofs+135)||dragging)\r
-    {\r
-      if(my>b&&my<b+a)\r
-      {\r
-        dragging=1;\r
-      }\r
-      else\r
-      {\r
-        if(my<b)\r
-        {\r
-          if (ofs<22) ofs=0;\r
-          else ofs-=22;\r
-          cfs=ofs;\r
-        }\r
-        if(my>b+a)\r
-        {\r
-          if (ofs+45>fc) ofs=fc-22;\r
-          else ofs+=22;\r
-          cfs=ofs;\r
-        }\r
-      }\r
-    }\r
-    if(!dragging)\r
-    {\r
-    if (mb==1 && mx>bxofs+20 && mx<bxofs+100 && my>byofs+15 && my<byofs+149)\r
-    {\r
-      i=(my-byofs-16)/6;\r
-      i+=ofs;\r
-      memcpy(dest,blah+(i*13),13);\r
-      done=1;\r
-      break;\r
-    }\r
-    if (mb==1 && mx>bxofs+100 && mx<bxofs+110 && my>byofs+15 && my<byofs+25)\r
-    {\r
-      WaitRelease();\r
-      key[SCAN_UP]=1;\r
-      last_pressed=SCAN_UP;\r
-    }\r
-    if (mb==1 && mx>bxofs+100 && mx<bxofs+110 && my>byofs+139 && my<byofs+149)\r
-    {\r
-      WaitRelease();\r
-      key[SCAN_DOWN]=1;\r
-      last_pressed=SCAN_DOWN;\r
-    }\r
-    if (mb==1 && mx>bxofs+65 && mx<bxofs+30+65 && my>byofs+157 && my<byofs+10+157 && !moving)\r
-    {\r
-      memcpy(dest, blah, 13); done=1;\r
-      ButtonPressed(bxofs+65, byofs+157, "OK");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>bxofs+96 && mx<bxofs+30+96 && my>byofs+157 && my<byofs+10+157 && !moving)\r
-    {\r
-      *dest=0; done=1;\r
-      ButtonPressed(bxofs+96, byofs+157, "Cancel");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(bxofs+bxsize-9) && (mx<bxofs+bxsize-2)\r
-    && my>(byofs+1) && (my<byofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>bxofs && mx<bxofs+bxsize && my>byofs && my<(byofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-bxofs;\r
-      myo=my-byofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-      if (key[SCAN_PGUP])\r
-      {\r
-        if (ofs<22) ofs=0;\r
-        else ofs-=22;\r
-        cfs=ofs;\r
-        key[SCAN_PGUP]=0;\r
-        continue;\r
-      }\r
-      if (key[SCAN_PGDN])\r
-      {\r
-        if (ofs+45>fc) ofs=fc-22;\r
-        else ofs+=22;\r
-        if (fc<22) ofs=0;\r
-        cfs=ofs;\r
-        key[SCAN_PGDN]=0;\r
-        continue;\r
-      }\r
-      if (key[SCAN_UP])\r
-      {\r
-        if (cfs) cfs--;\r
-        if (ofs>cfs) ofs--;\r
-        key[SCAN_UP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      if (key[SCAN_DOWN])\r
-      {\r
-        if (cfs<fc-1) cfs++;\r
-        if (cfs-ofs>21) ofs++;\r
-        key[SCAN_DOWN]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        memcpy(dest,blah+(cfs*13),13);\r
-        key[SCAN_ENTER]=0;\r
-        done=1;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB)\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-      }\r
-    }\r
-  } while (!done);\r
-  vfree(blah);\r
-}\r
-\r
-#include "vergepal.h"\r
-#define LOGFILE "maped.log"\r
-\r
-void Log(char *text, ...)\r
-{\r
-   va_list argptr;\r
-   char msg[256];\r
-   FILE *logf;\r
-\r
-   va_start(argptr, text);\r
-   vsprintf(msg, text, argptr);\r
-   va_end(argptr);\r
-\r
-   logf=fopen(LOGFILE,"aw");\r
-   fprintf(logf,"%s\n",msg);\r
-   fflush(logf);\r
-   fclose(logf);\r
-}\r
-\r
-int main(int argc, char *argv[])\r
-{\r
-\r
-  remove(LOGFILE);\r
-  md_mixfreq=44100;\r
-  md_dmabufsize=5000;\r
-  md_mode=DMODE_16BITS|DMODE_STEREO;\r
-  md_device=0;\r
-  memset(&chrs, 0, sizeof chrs);\r
-\r
-  Log("GetConfig");\r
-  GetConfig("maped.cfg");\r
-  Log("LoadTransTbl");\r
-  translucency_table=0; //zero\r
-  LoadTransTable(); //zero\r
-\r
-  Log("RegisterModLoaders");\r
-  ML_RegisterLoader(&load_mod);\r
-  ML_RegisterLoader(&load_s3m);\r
-  ML_RegisterLoader(&load_xm);\r
-  ML_RegisterLoader(&load_uni);\r
-\r
-  Log("RegisterSndDrivers");\r
-  MD_RegisterDriver(&drv_nos);\r
-  MD_RegisterDriver(&drv_sb);\r
-  MD_RegisterDriver(&drv_gus);\r
-  MD_RegisterPlayer(tickhandler);\r
-  soundokay=1;\r
-  Log("Initialize snd lib");\r
-  if (!MD_Init())\r
-  {\r
-    printf("Couldn't initialize sound: %s.\n", myerr);\r
-    delay(500);\r
-    soundokay=0;\r
-  }\r
-\r
-  //Log("Initialize CD audio");\r
-  //CD_Init();\r
-\r
-  Log("Initialize timer");\r
-  InitTimer();\r
-  Log("Initialize video");\r
-  InitVideo(vm);\r
-  Log("Initialize mouse");\r
-  InitMouse();\r
-  Log("Initialize keyboard IRQ handler");\r
-  InitKeyboard();\r
-\r
-  Log("Initializing map data");\r
-  if (argc==1 && !Exist("untitled.map"))\r
-  {\r
-    SetPalette(vergepal);\r
-    memcpy(pal, vergepal, 768);\r
-    memcpy(mapname,"UNTITLED.MAP",13);\r
-    memcpy(vspname,"UNTITLED.VSP",13);\r
-    memcpy(rstring,"1E",2);\r
-    numlayers=1;\r
-\r
-    // aen: default newmap dimensions set to 100x100\r
-    layer[0].pmultx=1;  layer[0].pmulty=1;\r
-    layer[0].pdivx=1;   layer[0].pdivy=1;\r
-    layer[0].sizex=100; layer[0].sizey=100;\r
-    layer[0].trans=0;   layer[0].hline=0;\r
-\r
-    layers[0]=(unsigned short *) valloc((layer[0].sizex*layer[0].sizey*2)+4,"layer data",0);\r
-    //memset(layers[0],0,(layer[0].sizex*layer[0].sizey)*2);\r
-    obstruct=(char *) valloc((layer[0].sizex*layer[0].sizey)+4,"obstruct map",0);\r
-    zone=(char *) valloc((layer[0].sizex*layer[0].sizey)+4,"zone map", 0);\r
-\r
-    // aen: default number of tiles set to 100\r
-    numtiles=100;\r
-    vsp=(char *) valloc(256 * numtiles,"vsp data", 0);\r
-    wrap=0; el=0; layertoggle[0]=1;\r
-    InitTileIDX();\r
-  }\r
-  else\r
-  {\r
-    if (argc==1) memcpy(mapname, "untitled.map",13);\r
-    else memcpy(mapname, argv[1], strlen(argv[1]));\r
-    LoadMAP(mapname);\r
-    InitTileIDX();\r
- }\r
-Log("Entering main loop");\r
-thingy:\r
-  while (!(key[SCAN_ALT] && key[SCAN_X]))\r
-  {\r
-    ProcessControls();\r
-    while (tick)\r
-    {\r
-      tick--;\r
-      PollMovement();\r
-    }\r
-    RenderMap();\r
-    RenderHighlight();\r
-    RenderGUI();\r
-    ShowPage();\r
-  }\r
-  if (modified)\r
-     if (!Confirm("Lose unsaved changes?"))\r
-     {\r
-       key[SCAN_ALT]=0;\r
-       key[SCAN_X]=0;\r
-       goto thingy;\r
-     }\r
-\r
-  ShutdownVideo();\r
-  ShutdownKeyboard();\r
-  ShutdownTimer();\r
-  SaveNewCFG();\r
-  remove("$$BACKUP.MAP");\r
-  remove("$$BACKUP.VSP");\r
-\r
-  //if (curtrack != 1) CD_Stop();\r
-  //CD_DeInit(); // wasn't even valid! CD_Deinit() was incorrect <aen, apr 21>\r
-  MD_PlayStop(); // Mordred\r
-  ML_Free(mf);\r
-\r
-  MD_Exit();\r
-  if (translucency_table)\r
-    vfree(translucency_table); //zero\r
-  return 0;\r
-}\r
diff --git a/16/v2/source/verge/MAPED/MAPED.H b/16/v2/source/verge/MAPED/MAPED.H
deleted file mode 100755 (executable)
index 431bcd2..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef MAPED_INC\r
-#define MAPED_INC\r
-\r
-extern const char *const ME2_VERSION;\r
-\r
-#include <stdio.h>\r
-\r
-#define byte unsigned char\r
-#define word unsigned short\r
-\r
-typedef struct\r
-{\r
-  unsigned short start;              // strand start\r
-  unsigned short finish;             // strand end\r
-  unsigned short delay;              // tile-switch delay\r
-  unsigned short mode;               // tile-animation mode\r
-} vspanim_r;\r
-\r
-typedef struct\r
-{\r
-  char pmultx,pdivx;                 // parallax multiplier/divisor for X\r
-  char pmulty,pdivy;                 // parallax multiplier/divisor for Y\r
-  unsigned short sizex, sizey;       // layer dimensions.\r
-  unsigned char trans, hline;        // transparency flag | hline (raster fx)\r
-} layer_r;\r
-\r
-typedef struct\r
-{\r
-  char name[40];                     // zone name/desc\r
-  unsigned short script;             // script to call thingy\r
-  unsigned short percent;            // chance of executing\r
-  unsigned short delay;              // step-delay\r
-  unsigned short aaa;                // Accept Adjacent Activation\r
-  unsigned short entityscript;       // script to call for entities\r
-} zoneinfo;\r
-\r
-typedef struct\r
-{\r
-  int x, y;                            // xwc, ywx position\r
-  word tx, ty;                         // xtc, ytc position\r
-  byte facing;                         // direction entity is facing\r
-  byte moving, movecnt;                // direction entity is moving\r
-  byte frame;                          // bottom-line frame to display\r
-  byte specframe;                      // special-frame set thingo\r
-  byte chrindex, reset;                // CHR index | Reset animation\r
-  byte obsmode1, obsmode2;             // can be obstructed | Is an obstruction\r
-  byte speed, speedct;                 // entity speed, speedcount :)\r
-  byte delayct;                        // animation frame-delay\r
-  char *animofs, *moveofs;             // anim script | move script\r
-  byte face, actm;                     // auto-face | activation mode\r
-  byte movecode, movescript;           // movement type | movement script\r
-  byte ctr, mode;                      // sub-tile move ctr, mode flag (internal)\r
-  word step, delay;                    // step, delay\r
-  word stepctr, delayctr;              // internal use counters\r
-  word data1, data2, data3;            //\r
-  word data4, data5, data6;            //\r
-  int  actscript;                      // activation script\r
-  int  expand1, expand2;               //\r
-  int  expand3, expand4;               //\r
-  char desc[20];                       // Entity description.\r
-} entity_r;\r
-\r
-typedef struct\r
-{\r
-  char t[60];\r
-} chrlist_r;\r
-\r
-typedef struct {\r
-  char t[200];\r
-} movescript;\r
-\r
-extern layer_r layer[4];\r
-extern vspanim_r vspanim[100];\r
-extern zoneinfo zones[256];\r
-extern unsigned short vadelay[100];\r
-extern entity_r entity[256];              // Entity records.\r
-extern byte entities;                     // number of allocated entities.\r
-extern chrlist_r chrlist[100];\r
-extern byte nmchr;\r
-extern movescript ms[100];                  // move scripts arrays\r
-extern byte nms;                          // number of movement scripts\r
-\r
-extern char *obstruct, *zone, curzone;\r
-extern char numlayers, wrap;\r
-extern unsigned short *layers[6];\r
-extern char rstring[20];\r
-extern char mapname[60], vspname[60];\r
-extern char musname[60];\r
-extern short xstart, ystart;\r
-\r
-// -- vsp related data --\r
-\r
-extern unsigned short numtiles;\r
-extern unsigned char *vsp;\r
-\r
-// -- editing related data --\r
-\r
-extern int xwin, ywin, bmode;\r
-extern char mouse_scroll;\r
-extern short lt, rt;\r
-extern char layertoggle[10], el, modified;\r
-\r
-extern word *copybuf;\r
-extern int copybuf_wide,copybuf_deep;\r
-extern int selx1, sely1, selx2, sely2;\r
-extern int shifted, pasting;\r
-\r
-extern int numzones;                      // Number of active zones.\r
-\r
-extern int moving_up,moving_down,moving_left,moving_right;\r
-\r
-extern void LoadTransTable();\r
-extern int  Exist(char *fname);\r
-extern void err(char *str, ...);\r
-extern void errf(char *str, char *str1);\r
-extern void errn(char *str, int n);\r
-extern int  random(int min, int max);\r
-extern void PlayMusic(char *fname);\r
-extern void StopMusic();\r
-extern void LoadVSP(char *fname);\r
-extern void SaveVSP(char *fname);\r
-extern void EmitC (char c);\r
-extern void EmitW (short int w);\r
-extern void WriteCompressedLayer1(unsigned char *p, int len);\r
-extern void ReadCompressedLayer1(unsigned char *dest, int len, FILE *f);\r
-extern void WriteCompressedLayer2(unsigned short *p,int len);\r
-extern void ReadCompressedLayer2(unsigned short *dest, int len, FILE *f);\r
-extern void CountUsedZones();\r
-extern void CountMoveScripts();\r
-extern void CountCHRs();\r
-extern void SaveMAP(char *fname);\r
-extern void LoadOldMAP(FILE *f);\r
-extern void LoadMAP(char *fname);\r
-extern void InitTileIDX();\r
-extern void CheckTimerStuff();\r
-extern void SaveNewCFG();\r
-extern void ShellToDOS();\r
-extern void ShellVERGE();\r
-extern void ShellMAP();\r
-extern void ShellEditMAP();\r
-extern void ShellEditSystem();\r
-extern void CompileAll();\r
-extern void CompileMAP();\r
-extern void tickhandler(void);\r
-extern void RenderHighlight();\r
-extern int EntityThere(int xw, int yw);\r
-extern void AllocateEntity(int xw, int yw);\r
-extern void ProcessEntity(int xw, int yw);\r
-extern void DeleteEntity(int xw, int yw);\r
-extern void Browse(char n, char *m1, char *m2, char *m3, char *m4, char *dest);\r
-\r
-// Includes for a_memory.c\r
-\r
-void *valloc(int amount, char *desc, int owner);\r
-void *qvalloc(int amount);\r
-int  vfree(void *pointer);\r
-void qvfree(void *pointer);\r
-void FreeByOwner(int owner);\r
-void MemReport(void);\r
-void CheckCorruption(void);\r
-\r
-#define free ERROR_YEAH_REPLACE_THIS_WITH_VFREE\r
-\r
-#endif // MAPED_INC\r
diff --git a/16/v2/source/verge/MAPED/MIKMOD.C b/16/v2/source/verge/MAPED/MIKMOD.C
deleted file mode 100755 (executable)
index 2ab62d2..0000000
+++ /dev/null
@@ -1,311 +0,0 @@
-/*\r
-\r
-Name:\r
-MIKMOD.C\r
-\r
-Description:\r
-Modplaying example of mikmod.\r
-\r
-MSDOS: BC(y)   Watcom(y)       DJGPP(y)\r
-Win95: BC(y*)\r
-Os2:   y\r
-Linux: n\r
-\r
-* console mode only\r
-(y) - yes\r
-(n) - no (not possible or not useful)\r
-(?) - may be possible, but not tested\r
-\r
-*/\r
-#ifdef __WIN32__\r
-#include <windows.h>\r
-#endif\r
-\r
-#include <stdio.h>\r
-#include <stdlib.h>\r
-#include <conio.h>\r
-#include <string.h>\r
-\r
-#ifndef __OS2__\r
-#include <dos.h>\r
-#endif\r
-\r
-#include "wildfile.h"\r
-#include "mikmod.h"\r
-\r
-char helptext[]=\r
-\r
-"Available switches (CaSe SeNsItIvE!):\n"\r
-"\n"\r
-"  /d x    use device-driver #x for output (0 is autodetect). Default=0\n"\r
-"  /ld     List all available device-drivers\n"\r
-"  /ll     List all available loaders\n"\r
-"  /x      disables protracker extended speed\n"\r
-"  /p      disables panning effects (9fingers.mod)\n"\r
-"  /v xx   Sets volume from 0 (silence) to 100. Default=100\n"\r
-"  /f xxxx Sets mixing frequency. Default=44100\n"\r
-"  /m      Force mono output (so sb-pro can mix at 44100)\n"\r
-"  /8      Force 8 bit output\n"\r
-"  /i      Use interpolated mixing\n"\r
-"  /r      Restart a module when it's done playing";\r
-\r
-\r
-/*\r
-       declarations for boring old sys-v style getopt *yawn*:\r
-*/\r
-int     getopt(int argc, char *argv[], char *optionS);\r
-extern char *optarg;\r
-extern int optind;\r
-extern int opterr;\r
-\r
-\r
-void tickhandler(void)\r
-{\r
-       MP_HandleTick();    /* play 1 tick of the module */\r
-       MD_SetBPM(mp_bpm);\r
-}\r
-\r
-\r
-int main(int argc,char *argv[])\r
-{\r
-       UNIMOD *mf;\r
-       int cmderr=0;                   /* error in commandline flag */\r
-       int morehelp=0;                 /* set if user wants more help */\r
-       int quit;\r
-       int t;\r
-       static int nargc;\r
-       static char **nargv;\r
-\r
-       puts(mikbanner);\r
-\r
-       /* Expand wildcards on commandline */\r
-\r
-       nargc=argc; nargv=argv;\r
-#ifndef __DJGPP__\r
-       MyGlob(&nargc,&nargv,0);\r
-#else\r
-       setvbuf(stdout, NULL, _IONBF, 0);\r
-       __djgpp_set_ctrl_c(0);\r
-#endif\r
-\r
-       /*\r
-               Initialize soundcard parameters.. you _have_ to do this\r
-               before calling MD_Init(), and it's illegal to change them\r
-               after you've called MD_Init()\r
-       */\r
-\r
-       md_mixfreq      =44100;                     /* standard mixing freq */\r
-       md_dmabufsize   =20000;                     /* standard dma buf size */\r
-       md_mode         =DMODE_16BITS|DMODE_STEREO; /* standard mixing mode */\r
-       md_device       =0;                                                     /* standard device: autodetect */\r
-\r
-       /*\r
-               Register the loaders we want to use..\r
-       */\r
-\r
-       ML_RegisterLoader(&load_m15);    /* if you use m15load, register it as first! */\r
-       ML_RegisterLoader(&load_mod);\r
-       ML_RegisterLoader(&load_mtm);\r
-       ML_RegisterLoader(&load_s3m);\r
-       ML_RegisterLoader(&load_stm);\r
-       ML_RegisterLoader(&load_ult);\r
-       ML_RegisterLoader(&load_uni);\r
-       ML_RegisterLoader(&load_xm);\r
-\r
-       /*\r
-               Register the drivers we want to use:\r
-       */\r
-\r
-       MD_RegisterDriver(&drv_nos);\r
-#ifdef __OS2__\r
-       MD_RegisterDriver(&drv_os2);\r
-#elif defined(__WIN32__)\r
-       MD_RegisterDriver(&drv_w95);\r
-#else\r
-       MD_RegisterDriver(&drv_ss);\r
-       MD_RegisterDriver(&drv_sb);\r
-       MD_RegisterDriver(&drv_gus);\r
-#endif\r
-\r
-       MD_RegisterPlayer(tickhandler);\r
-\r
-       /* Parse option switches using standard getopt function: */\r
-\r
-       opterr=0;\r
-\r
-       while( !cmderr &&\r
-                 (t=getopt(nargc,nargv,"ohxpm8irv:f:l:d:")) != EOF ){\r
-\r
-               switch(t){\r
-\r
-                       case 'd':\r
-                               md_device=atoi(optarg);\r
-                               break;\r
-\r
-                       case 'l':\r
-                               if(optarg[0]=='d') MD_InfoDriver();\r
-                               else if(optarg[0]=='l') ML_InfoLoader();\r
-                               else{\r
-                                       cmderr=1;\r
-                                       break;\r
-                               }\r
-                               exit(0);\r
-\r
-                       case 'r':\r
-                               mp_loop=1;\r
-                               break;\r
-\r
-                       case 'm':\r
-                               md_mode&=~DMODE_STEREO;\r
-                               break;\r
-\r
-                       case '8':\r
-                               md_mode&=~DMODE_16BITS;\r
-                               break;\r
-\r
-                       case 'i':\r
-                               md_mode|=DMODE_INTERP;\r
-                               break;\r
-\r
-                       case 'x':\r
-                               mp_extspd=0;\r
-                               break;\r
-\r
-                       case 'p':\r
-                               mp_panning=0;\r
-                               break;\r
-\r
-                       case 'v':\r
-                               if((mp_volume=atoi(optarg))>100) mp_volume=100;\r
-                               break;\r
-\r
-                       case 'f':\r
-                               md_mixfreq=atol(optarg);\r
-                               break;\r
-\r
-                       case 'h':\r
-                               morehelp=1;\r
-                               cmderr=1;\r
-                               break;\r
-\r
-                       case '?':\r
-                               puts("\07Invalid switch or option needs an argument\n");\r
-                               cmderr=1;\r
-                               break;\r
-               }\r
-       }\r
-\r
-       if(cmderr || optind>=nargc){\r
-\r
-               /*\r
-                       there was an error in the commandline, or there were no true\r
-                       arguments, so display a usage message\r
-               */\r
-\r
-               puts("Usage: MIKMOD [switches] <fletch.mod> ... \n");\r
-\r
-               if(morehelp)\r
-                       puts(helptext);\r
-               else\r
-                       puts("Type MIKMOD /h for more help.");\r
-\r
-               exit(-1);\r
-       }\r
-\r
-       /*  initialize soundcard */\r
-\r
-       if(!MD_Init()){\r
-               printf("Driver error: %s.\n",myerr);\r
-               return 0;\r
-       }\r
-\r
-       printf("Using %s for %d bit %s %s sound at %u Hz\n\n",\r
-                       md_driver->Name,\r
-                       (md_mode&DMODE_16BITS) ? 16:8,\r
-                       (md_mode&DMODE_INTERP) ? "interpolated":"normal",\r
-                       (md_mode&DMODE_STEREO) ? "stereo":"mono",\r
-                       md_mixfreq);\r
-\r
-#ifdef __OS2__\r
-       DosSetPriority( PRTYS_THREAD, PRTYC_TIMECRITICAL, 5L, 0UL );\r
-#endif\r
-\r
-       for(quit=0; !quit && optind<nargc; optind++){\r
-\r
-               printf("File    : %s\n",nargv[optind]);\r
-\r
-               /* load the module */\r
-\r
-               mf=ML_LoadFN(nargv[optind]);\r
-\r
-               /* didn't work -> exit with errormsg. */\r
-\r
-               if(mf==NULL){\r
-                       printf("MikMod Error: %s\n",myerr);\r
-                       break;\r
-               }\r
-\r
-               /*      initialize modplayer to play this module */\r
-\r
-               MP_Init(mf);\r
-\r
-               printf( "Songname: %s\n"\r
-                               "Modtype : %s\n"\r
-                               "Periods : %s,%s\n",\r
-                               mf->songname,\r
-                               mf->modtype,\r
-                               (mf->flags&UF_XMPERIODS) ? "XM type" : "mod type",\r
-                               (mf->flags&UF_LINEAR) ? "Linear" : "Log");\r
-\r
-               /*\r
-                       set the number of voices to use.. you\r
-                       could add extra channels here (e.g. md_numchn=mf->numchn+4; )\r
-                       to use for your own soundeffects:\r
-               */\r
-\r
-               md_numchn=mf->numchn;\r
-\r
-               /*  start playing the module: */\r
-\r
-               MD_PlayStart();\r
-\r
-               while(!MP_Ready()){\r
-\r
-                       char c;\r
-\r
-                       c=kbhit() ? getch() : 0;\r
-\r
-                       if(c=='+')\r
-                               MP_NextPosition();\r
-                       else if(c=='-')\r
-                               MP_PrevPosition();\r
-                       else if(c==0x1b){\r
-                               quit=1;\r
-                               break;\r
-                       }\r
-                       else if(c==' ') break;\r
-\r
-                       MD_Update();\r
-\r
-                       /* wait a bit */\r
-\r
-#if defined(__OS2__)\r
-                       DosSleep(40);   /* hmmmm */\r
-#elif defined(__WIN32__)\r
-                       Sleep(10);\r
-#elif defined(__DJGPP__)\r
-                        /* no wait for djgpp ? */\r
-#else\r
-                        delay(10);\r
-#endif\r
-                        printf("\rsngpos:%d patpos:%d sngspd %d bpm %d   ",mp_sngpos,mp_patpos,mp_sngspd,mp_bpm);\r
-               }\r
-\r
-               MD_PlayStop();          /* stop playing */\r
-               ML_Free(mf);            /* and free the module */\r
-               puts("\n");\r
-       }\r
-\r
-       MD_Exit();\r
-       return 0;\r
-}\r
diff --git a/16/v2/source/verge/MAPED/MIKMOD.H b/16/v2/source/verge/MAPED/MIKMOD.H
deleted file mode 100755 (executable)
index 0111ccb..0000000
+++ /dev/null
@@ -1,580 +0,0 @@
-#ifndef MIKMOD_H\r
-#define MIKMOD_H\r
-\r
-#include <stdio.h>\r
-#include "mtypes.h"                    /* include atomic mikmod types */\r
-\r
-\r
-#define mikbanner \\r
-"=======================================================================\n" \\r
-"MIKMOD v2.10 - Portable version -  Programmed by MikMak of HaRDCoDE '95\n" \\r
-"=======================================================================\n" \\r
-"This program is SHAREWARE - Read MIKMOD.TXT for more info\n" \\r
-"E-Mail : mikmak@stack.urc.tue.nl\n"\r
-\r
-\r
-/*\r
-       error variables:\r
-       ===============\r
-*/\r
-\r
-extern char *ERROR_ALLOC_STRUCT;\r
-extern char *ERROR_LOADING_PATTERN;\r
-extern char *ERROR_LOADING_TRACK;\r
-extern char *ERROR_LOADING_HEADER;\r
-extern char *ERROR_NOT_A_MODULE;\r
-extern char *ERROR_LOADING_SAMPLEINFO;\r
-extern char *ERROR_OUT_OF_HANDLES;\r
-extern char *ERROR_SAMPLE_TOO_BIG;\r
-extern char *myerr;\r
-\r
-\r
-\r
-#define _mm_rewind(x) _mm_fseek(x,0,SEEK_SET)\r
-int  _mm_fseek(FILE *stream,long offset,int whence);\r
-void _mm_setiobase(long iobase);\r
-long _mm_ftell(FILE *stream);\r
-\r
-\r
-extern SBYTE  _mm_read_SBYTE   (FILE *fp);\r
-extern UBYTE _mm_read_UBYTE  (FILE *fp);\r
-\r
-extern SWORD  _mm_read_M_SWORD (FILE *fp);\r
-extern SWORD  _mm_read_I_SWORD (FILE *fp);\r
-\r
-extern UWORD _mm_read_M_UWORD(FILE *fp);\r
-extern UWORD _mm_read_I_UWORD(FILE *fp);\r
-\r
-extern SLONG  _mm_read_M_SLONG (FILE *fp);\r
-extern SLONG  _mm_read_I_SLONG (FILE *fp);\r
-\r
-extern ULONG _mm_read_M_ULONG(FILE *fp);\r
-extern ULONG _mm_read_I_ULONG(FILE *fp);\r
-\r
-extern int _mm_read_str(char *str, int size, FILE *fp);\r
-\r
-extern int _mm_read_SBYTES    (SBYTE  *buffer, int number, FILE *fp);\r
-extern int _mm_read_UBYTES   (UBYTE *buffer, int number, FILE *fp);\r
-\r
-extern int _mm_read_M_SWORDS  (SWORD  *buffer, int number, FILE *fp);\r
-extern int _mm_read_I_SWORDS  (SWORD  *buffer, int number, FILE *fp);\r
-\r
-extern int _mm_read_M_UWORDS (UWORD *buffer, int number, FILE *fp);\r
-extern int _mm_read_I_UWORDS (UWORD *buffer, int number, FILE *fp);\r
-\r
-extern int _mm_read_M_SLONGS  (SLONG  *buffer, int number, FILE *fp);\r
-extern int _mm_read_I_SLONGS  (SLONG  *buffer, int number, FILE *fp);\r
-\r
-extern int _mm_read_M_ULONGS (ULONG *buffer, int number, FILE *fp);\r
-extern int _mm_read_I_ULONGS (ULONG *buffer, int number, FILE *fp);\r
-\r
-\r
-extern void _mm_write_SBYTE            (SBYTE data,FILE *fp);\r
-extern void _mm_write_UBYTE    (UBYTE data,FILE *fp);\r
-\r
-extern void _mm_write_M_SWORD  (SWORD data,FILE *fp);\r
-extern void _mm_write_I_SWORD  (SWORD data,FILE *fp);\r
-\r
-extern void _mm_write_M_UWORD  (UWORD data,FILE *fp);\r
-extern void _mm_write_I_UWORD  (UWORD data,FILE *fp);\r
-\r
-extern void _mm_write_M_SLONG  (SLONG data,FILE *fp);\r
-extern void _mm_write_I_SLONG  (SLONG data,FILE *fp);\r
-\r
-extern void _mm_write_M_ULONG  (ULONG data,FILE *fp);\r
-extern void _mm_write_I_ULONG  (ULONG data,FILE *fp);\r
-\r
-extern void _mm_write_SBYTES           (SBYTE *data,  int number,FILE *fp);\r
-extern void _mm_write_UBYTES   (UBYTE *data, int number,FILE *fp);\r
-\r
-extern void _mm_write_M_SWORDS (SWORD *data,  int number,FILE *fp);\r
-extern void _mm_write_I_SWORDS (SWORD *data,  int number,FILE *fp);\r
-\r
-extern void _mm_write_M_UWORDS (UWORD *data, int number,FILE *fp);\r
-extern void _mm_write_I_UWORDS (UWORD *data, int number,FILE *fp);\r
-\r
-extern void _mm_write_M_SLONGS (SLONG *data,  int number,FILE *fp);\r
-extern void _mm_write_I_SLONGS (SLONG *data,  int number,FILE *fp);\r
-\r
-extern void _mm_write_M_ULONGS (ULONG *data, int number,FILE *fp);\r
-extern void _mm_write_I_ULONGS (ULONG *data, int number,FILE *fp);\r
-\r
-\r
-/**************************************************************************\r
-****** Unitrack stuff: ****************************************************\r
-**************************************************************************/\r
-\r
-/*\r
-       prototypes:\r
-*/\r
-\r
-void   UniSetRow(UBYTE *t);\r
-UBYTE  UniGetByte(void);\r
-UBYTE  *UniFindRow(UBYTE *t,UWORD row);\r
-void           UniReset(void);\r
-void           UniWrite(UBYTE data);\r
-void           UniNewline(void);\r
-void   UniInstrument(UBYTE ins);\r
-void   UniNote(UBYTE note);\r
-void   UniPTEffect(UBYTE eff,UBYTE dat);\r
-UBYTE  *UniDup(void);\r
-void   UniSkipOpcode(UBYTE op);\r
-BOOL   UniInit(void);\r
-void   UniCleanup(void);\r
-UWORD   TrkLen(UBYTE *t);\r
-BOOL    MyCmp(UBYTE *a,UBYTE *b,UWORD l);\r
-\r
-/*\r
-       all known effects:\r
-*/\r
-\r
-enum {\r
-               UNI_NOTE=1,\r
-               UNI_INSTRUMENT,\r
-               UNI_PTEFFECT0,\r
-               UNI_PTEFFECT1,\r
-               UNI_PTEFFECT2,\r
-               UNI_PTEFFECT3,\r
-               UNI_PTEFFECT4,\r
-               UNI_PTEFFECT5,\r
-               UNI_PTEFFECT6,\r
-               UNI_PTEFFECT7,\r
-               UNI_PTEFFECT8,\r
-               UNI_PTEFFECT9,\r
-               UNI_PTEFFECTA,\r
-               UNI_PTEFFECTB,\r
-               UNI_PTEFFECTC,\r
-               UNI_PTEFFECTD,\r
-               UNI_PTEFFECTE,\r
-               UNI_PTEFFECTF,\r
-               UNI_S3MEFFECTA,\r
-               UNI_S3MEFFECTD,\r
-               UNI_S3MEFFECTE,\r
-               UNI_S3MEFFECTF,\r
-               UNI_S3MEFFECTI,\r
-               UNI_S3MEFFECTQ,\r
-               UNI_S3MEFFECTT,\r
-               UNI_XMEFFECTA,\r
-                UNI_XMEFFECTG,\r
-                UNI_XMEFFECTH,\r
-               UNI_XMEFFECTP\r
-};\r
-\r
-\r
-/**************************************************************************\r
-****** mikmod types: ******************************************************\r
-**************************************************************************/\r
-\r
-\r
-/*\r
-       Sample format flags:\r
-*/\r
-\r
-#define SF_16BITS       1\r
-#define SF_SIGNED      2\r
-#define SF_DELTA        4\r
-#define SF_BIG_ENDIAN  8\r
-#define SF_LOOP         16\r
-#define SF_BIDI         32\r
-#define SF_OWNPAN       64\r
-#define SF_REVERSE             128\r
-\r
-\r
-/*\r
-       Envelope flags:\r
-*/\r
-\r
-#define EF_ON           1\r
-#define EF_SUSTAIN      2\r
-#define EF_LOOP         4\r
-\r
-\r
-/*\r
-       Unimod flags\r
-*/\r
-\r
-#define UF_XMPERIODS    1               /* if set use XM periods/finetuning */\r
-#define UF_LINEAR       2               /* if set use LINEAR periods */\r
-\r
-\r
-typedef struct ENVPT{\r
-       SWORD pos;\r
-       SWORD val;\r
-} ENVPT;\r
-\r
-\r
-typedef struct SAMPLE{\r
-       UWORD c2spd;            /* finetune frequency */\r
-       SBYTE transpose;        /* transpose value */\r
-       UBYTE volume;           /* volume 0-64 */\r
-       UBYTE panning;          /* panning */\r
-       ULONG length;           /* length of sample (in samples!) */\r
-       ULONG loopstart;        /* repeat position (relative to start, in samples) */\r
-       ULONG loopend;          /* repeat end */\r
-       UWORD flags;            /* sample format */\r
-       ULONG seekpos;                  /* seek position in file */\r
-       char *samplename;       /* name of the sample */\r
-       SWORD handle;           /* sample handle */\r
-} SAMPLE;\r
-\r
-\r
-typedef struct INSTRUMENT{\r
-       UBYTE numsmp;\r
-       UBYTE samplenumber[96];\r
-\r
-       UBYTE volflg;           /* bit 0: on 1: sustain 2: loop */\r
-       UBYTE volpts;\r
-       UBYTE volsus;\r
-       UBYTE volbeg;\r
-       UBYTE volend;\r
-       ENVPT volenv[12];\r
-\r
-       UBYTE panflg;           /* bit 0: on 1: sustain 2: loop */\r
-       UBYTE panpts;\r
-       UBYTE pansus;\r
-       UBYTE panbeg;\r
-       UBYTE panend;\r
-       ENVPT panenv[12];\r
-\r
-       UBYTE vibtype;\r
-       UBYTE vibsweep;\r
-       UBYTE vibdepth;\r
-       UBYTE vibrate;\r
-\r
-       UWORD volfade;\r
-       char  *insname;\r
-       SAMPLE *samples;\r
-} INSTRUMENT;\r
-\r
-\r
-/*\r
-       MikMod UNImod types:\r
-       ====================\r
-*/\r
-\r
-typedef struct UNIMOD{\r
-       UBYTE           numchn;                 /* number of channels */\r
-       UWORD       numpos;         /* number of positions in this song */\r
-       UWORD           reppos;                 /* restart position */\r
-       UWORD       numpat;         /* number of patterns in this song */\r
-       UWORD       numtrk;         /* number of tracks */\r
-       UWORD       numins;         /* number of samples */\r
-       UBYTE       initspeed;      /* */\r
-       UBYTE       inittempo;      /* */\r
-       UBYTE       positions[256]; /* all positions */\r
-       UBYTE       panning[32];        /* 32 panning positions */\r
-       UBYTE       flags;          /* */\r
-       char       *songname;       /* name of the song */\r
-       char       *modtype;        /* string type of module */\r
-       char       *comment;        /* module comments */\r
-       INSTRUMENT *instruments;    /* all samples */\r
-       UWORD      *patterns;       /* array of PATTERN */\r
-       UWORD      *pattrows;       /* array of number of rows for each pattern */\r
-       UBYTE     **tracks;         /* array of pointers to tracks */\r
-} UNIMOD;\r
-\r
-\r
-/**************************************************************************\r
-****** Loader stuff: ******************************************************\r
-**************************************************************************/\r
-\r
-/*\r
-       loader structure:\r
-*/\r
-\r
-typedef struct LOADER{\r
-       struct LOADER *next;\r
-       char    *type;\r
-       char    *version;\r
-       BOOL    (*Init)(void);\r
-       BOOL    (*Test)(void);\r
-       BOOL    (*Load)(void);\r
-       void    (*Cleanup)(void);\r
-} LOADER;\r
-\r
-\r
-/*\r
-       public loader variables:\r
-*/\r
-\r
-extern UNIMOD of;\r
-extern FILE *modfp;\r
-extern UWORD finetune[16];\r
-\r
-\r
-/*\r
-       main loader prototypes:\r
-*/\r
-\r
-void   ML_InfoLoader(void);\r
-void   ML_RegisterLoader(LOADER *ldr);\r
-UNIMOD *ML_LoadFP(FILE *fp);\r
-UNIMOD *ML_LoadFN(char *filename);\r
-void   ML_Free(UNIMOD *mf);\r
-\r
-\r
-/*\r
-       other loader prototypes: (used by the loader modules)\r
-*/\r
-\r
-BOOL   InitTracks(void);\r
-void   AddTrack(UBYTE *tr);\r
-BOOL   ReadComment(UWORD len);\r
-BOOL   AllocPatterns(void);\r
-BOOL   AllocTracks(void);\r
-BOOL   AllocInstruments(void);\r
-BOOL   AllocSamples(INSTRUMENT *i);\r
-char    *DupStr(char *s,UWORD len);\r
-void   *MyMalloc(size_t size);\r
-void   *MyCalloc(size_t nitems,size_t size);\r
-\r
-\r
-/*\r
-       Declare external loaders:\r
-*/\r
-extern LOADER load_uni;\r
-extern LOADER load_mod;\r
-extern LOADER load_m15;\r
-extern LOADER load_mtm;\r
-extern LOADER load_s3m;\r
-extern LOADER load_stm;\r
-extern LOADER load_ult;\r
-extern LOADER load_xm;\r
-\r
-\r
-/**************************************************************************\r
-****** Wavload stuff: *****************************************************\r
-**************************************************************************/\r
-\r
-SAMPLE *MW_LoadWavFP(FILE *fp);\r
-SAMPLE *MW_LoadWavFN(char *filename);\r
-void MW_FreeWav(SAMPLE *si);\r
-\r
-\r
-/**************************************************************************\r
-****** Driver stuff: ******************************************************\r
-**************************************************************************/\r
-\r
-/*\r
-       max. number of handles a driver has to provide. (not strict)\r
-*/\r
-\r
-#define MAXSAMPLEHANDLES 128\r
-\r
-\r
-/*\r
-       possible mixing mode bits:\r
-*/\r
-\r
-#define DMODE_STEREO    1\r
-#define DMODE_16BITS    2\r
-#define DMODE_INTERP   4\r
-\r
-\r
-/*\r
-       driver structure:\r
-*/\r
-\r
-typedef struct DRIVER{\r
-       struct DRIVER *next;\r
-       char    *Name;\r
-       char    *Version;\r
-       BOOL    (*IsPresent)            (void);\r
-       SWORD   (*SampleLoad)           (FILE *fp,ULONG size,ULONG reppos,ULONG repend,UWORD flags);\r
-       void    (*SampleUnLoad)         (SWORD handle);\r
-       BOOL    (*Init)                 (void);\r
-       void    (*Exit)                 (void);\r
-       void    (*PlayStart)            (void);\r
-       void    (*PlayStop)             (void);\r
-       void    (*Update)               (void);\r
-       void    (*VoiceSetVolume)               (UBYTE voice,UBYTE vol);\r
-       void    (*VoiceSetFrequency)    (UBYTE voice,ULONG frq);\r
-       void    (*VoiceSetPanning)              (UBYTE voice,UBYTE pan);\r
-       void    (*VoicePlay)                    (UBYTE voice,SWORD handle,ULONG start,ULONG size,ULONG reppos,ULONG repend,UWORD flags);\r
-} DRIVER;\r
-\r
-\r
-/*\r
-       public driver variables:\r
-*/\r
-\r
-extern DRIVER *md_driver;\r
-extern UWORD md_device;\r
-extern UWORD md_mixfreq;\r
-extern UWORD md_dmabufsize;\r
-extern UWORD md_mode;\r
-extern UBYTE md_numchn;\r
-extern UBYTE md_bpm;\r
-extern void (*md_player)(void);\r
-\r
-/*\r
-       main driver prototypes:\r
-*/\r
-\r
-void MD_InfoDriver(void);\r
-void MD_RegisterDriver(DRIVER *drv);\r
-void MD_RegisterPlayer(void (*plr)(void));\r
-SWORD MD_SampleLoad(FILE *fp,ULONG size,ULONG reppos,ULONG repend,UWORD flags);\r
-void MD_SampleUnLoad(SWORD handle);\r
-BOOL MD_Init(void);\r
-void MD_Exit(void);\r
-void MD_PlayStart(void);\r
-void MD_PlayStop(void);\r
-void MD_SetBPM(UBYTE bpm);\r
-void MD_Update(void);\r
-void MD_VoiceSetVolume(UBYTE voice,UBYTE ivol);\r
-void MD_VoiceSetFrequency(UBYTE voice,ULONG frq);\r
-void MD_VoiceSetPanning(UBYTE voice,ULONG pan);\r
-void MD_VoicePlay(UBYTE voice,SWORD handle,ULONG start,ULONG size,ULONG reppos,ULONG repend,UWORD flags);\r
-void SL_Init(FILE *fp,UWORD infmt,UWORD outfmt);\r
-void SL_Load(void *buffer,ULONG length);\r
-\r
-/*\r
-       Declare external drivers:\r
-*/\r
-\r
-extern DRIVER drv_gus;         /* gravis ultrasound driver */\r
-extern DRIVER drv_sb;          /* soundblaster DSP driver */\r
-extern DRIVER drv_ss;          /* ensoniq soundscape driver */\r
-extern DRIVER drv_nos;         /* nosound driver */\r
-extern DRIVER drv_raw;         /* file output driver */\r
-extern DRIVER drv_w95;         /* win95 driver */\r
-extern DRIVER drv_awe;         /* experimental SB-AWE driver */\r
-extern DRIVER drv_vox;         /* linux voxware driver */\r
-extern DRIVER drv_af;       /* Dec Alpha AudioFile driver */\r
-extern DRIVER drv_sun;      /* Sun driver */\r
-extern DRIVER drv_os2;      /* Os2 driver */\r
-extern DRIVER drv_tim;          /* timing driver */\r
-\r
-/**************************************************************************\r
-****** Player stuff: ******************************************************\r
-**************************************************************************/\r
-\r
-\r
-typedef struct ENVPR{\r
-       UBYTE flg;          /* envelope flag */\r
-       UBYTE pts;                      /* number of envelope points */\r
-       UBYTE sus;                      /* envelope sustain index */\r
-       UBYTE beg;                      /* envelope loop begin */\r
-       UBYTE end;                      /* envelope loop end */\r
-       SWORD p;                        /* current envelope counter */\r
-       UWORD a;                        /* envelope index a */\r
-       UWORD b;                        /* envelope index b */\r
-       ENVPT *env;                     /* envelope points */\r
-} ENVPR;\r
-\r
-\r
-typedef struct AUDTMP{\r
-       INSTRUMENT      *i;\r
-       SAMPLE      *s;\r
-\r
-        UWORD fadevol;          /* fading volume */\r
-\r
-       ENVPR venv;\r
-       ENVPR penv;\r
-\r
-       UBYTE keyon;            /* if true=key is pressed. */\r
-       UBYTE kick;                     /* if true=sample has to be restarted */\r
-       UBYTE sample;           /* which sample number (0-31) */\r
-       SWORD handle;           /* which sample-handle */\r
-\r
-       ULONG start;            /* The start byte index in the sample */\r
-\r
-       UBYTE panning;          /* panning position */\r
-       UBYTE pansspd;          /* panslide speed */\r
-\r
-       SBYTE volume;           /* amiga volume (0 t/m 64) to play the sample at */\r
-       UWORD period;           /* period to play the sample at */\r
-\r
-       /* You should not have to use the values\r
-          below in the player routine */\r
-\r
-       SBYTE transpose;\r
-\r
-       UBYTE note;                     /* */\r
-\r
-       SWORD ownper;\r
-       SWORD ownvol;\r
-\r
-       UBYTE *row;                     /* row currently playing on this channel */\r
-\r
-       SBYTE retrig;           /* retrig value (0 means don't retrig) */\r
-       UWORD c2spd;            /* what finetune to use */\r
-\r
-       SBYTE tmpvolume;        /* tmp volume */\r
-\r
-       UWORD tmpperiod;        /* tmp period */\r
-       UWORD wantedperiod;     /* period to slide to (with effect 3 or 5) */\r
-\r
-       UWORD slidespeed;       /* */\r
-       UWORD portspeed;        /* noteslide speed (toneportamento) */\r
-\r
-       UBYTE s3mtremor;        /* s3m tremor (effect I) counter */\r
-       UBYTE s3mtronof;        /* s3m tremor ontime/offtime */\r
-\r
-       UBYTE s3mvolslide;      /* last used volslide */\r
-\r
-       UBYTE s3mrtgspeed;      /* last used retrig speed */\r
-       UBYTE s3mrtgslide;      /* last used retrig slide */\r
-\r
-       UBYTE glissando;        /* glissando (0 means off) */\r
-       UBYTE wavecontrol;      /* */\r
-\r
-       SBYTE vibpos;           /* current vibrato position */\r
-       UBYTE vibspd;           /* "" speed */\r
-       UBYTE vibdepth;         /* "" depth */\r
-\r
-       SBYTE trmpos;           /* current tremolo position */\r
-       UBYTE trmspd;           /* "" speed */\r
-       UBYTE trmdepth;         /* "" depth */\r
-\r
-       UWORD soffset;          /* last used sample-offset (effect 9) */\r
-} AUDTMP;\r
-\r
-\r
-extern AUDTMP mp_audio[32];            /* max eight channels */\r
-extern UBYTE  mp_bpm;                  /* beats-per-minute speed */\r
-extern UWORD  mp_patpos;               /* current row number (0-63) */\r
-extern SWORD  mp_sngpos;               /* current song position */\r
-extern UWORD  mp_sngspd;               /* current songspeed */\r
-\r
-extern BOOL  mp_loop;\r
-extern BOOL  mp_panning;\r
-extern BOOL  mp_extspd;\r
-extern UBYTE mp_volume;\r
-\r
-/*\r
-       player prototypes:\r
-*/\r
-\r
-int     MP_Ready(void);\r
-void MP_NextPosition(void);\r
-void MP_PrevPosition(void);\r
-void MP_SetPosition(UWORD pos);\r
-void MP_HandleTick(void);\r
-void MP_Init(UNIMOD *m);\r
-\r
-\r
-/**************************************************************************\r
-****** Virtual channel stuff: *********************************************\r
-**************************************************************************/\r
-\r
-BOOL    VC_Init(void);\r
-void    VC_Exit(void);\r
-\r
-void    VC_PlayStart(void);\r
-void    VC_PlayStop(void);\r
-\r
-SWORD   VC_SampleLoad(FILE *fp,ULONG size,ULONG reppos,ULONG repend,UWORD flags);\r
-void    VC_SampleUnload(SWORD handle);\r
-\r
-void    VC_WriteSamples(SBYTE *buf,UWORD todo);\r
-UWORD   VC_WriteBytes(SBYTE *buf,UWORD todo);\r
-void    VC_SilenceBytes(SBYTE *buf,UWORD todo);\r
-\r
-void   VC_VoiceSetVolume(UBYTE voice,UBYTE vol);\r
-void   VC_VoiceSetFrequency(UBYTE voice,ULONG frq);\r
-void   VC_VoiceSetPanning(UBYTE voice,UBYTE pan);\r
-void   VC_VoicePlay(UBYTE voice,SWORD handle,ULONG start,ULONG size,ULONG reppos,ULONG repend,UWORD flags);\r
-\r
-#endif\r
diff --git a/16/v2/source/verge/MAPED/MIKMOD.LIB b/16/v2/source/verge/MAPED/MIKMOD.LIB
deleted file mode 100755 (executable)
index 0f55de9..0000000
Binary files a/16/v2/source/verge/MAPED/MIKMOD.LIB and /dev/null differ
diff --git a/16/v2/source/verge/MAPED/MINIMAP.C b/16/v2/source/verge/MAPED/MINIMAP.C
deleted file mode 100755 (executable)
index 9da05b6..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include <stdio.h>\r
-#include <string.h>\r
-#include <malloc.h>\r
-\r
-#include "config.h"\r
-#include "keyboard.h"\r
-#include "maped.h"\r
-#include "mouse.h"\r
-#include "vdriver.h"\r
-\r
-// ============================ Data ============================\r
-\r
-unsigned char mvsp[2048];         // mini-VSP dominant color\r
-int xoff=0, yoff=0;               // x-offset, y-offset\r
-\r
-// ============================ Code ============================\r
-/*\r
-FindDominantColor(int i)\r
-{ unsigned char *src;\r
-  int j,tally=0;\r
-\r
-  // This is a cheap-ass method. I have a more proper method in mind, but\r
-  // I'm going to do this for now b/c I'm lazy. Actually, the real reason is\r
-  // speed.\r
-\r
-  src=vsp+(i*256);\r
-\r
-  for (j=0; j<256; j++)\r
-  {\r
-    tally+=*src;\r
-    src++;\r
-  }\r
-  tally=tally/256;\r
-  mvsp[i]=(unsigned char) tally;\r
-}\r
-*/\r
-\r
-void FindDominantColor(int i)\r
-{ unsigned char *src, tally[256], tab;\r
-  int j;\r
-\r
-  src=vsp+(i*256);\r
-  memset(&tally, 0, 256);\r
-\r
-  for (j=0; j<256; j++)\r
-  {\r
-    tally[*src]++;\r
-    src++;\r
-  }\r
-  tab=0;\r
-  for (j=0; j<256; j++)\r
-  {\r
-    if (tally[j] > tab) tab=j;\r
-  }\r
-  mvsp[i]=(unsigned char) tab;\r
-}\r
-\r
-void GenerateMiniVSP()\r
-{ int i;\r
-\r
-  for (i=0; i<numtiles; i++)\r
-      FindDominantColor(i);\r
-}\r
-\r
-void MiniMAP()\r
-{ char *ptr,c;\r
-  int _x,_y,ct;\r
-  int i;\r
-\r
-  GenerateMiniVSP();\r
-  ptr=(char *) valloc(layer[0].sizex*layer[0].sizey,"minimap",0);\r
-  //memset(ptr,0,layer[0].sizex*layer[0].sizey);\r
-\r
-  // Now we "draw" the tiles into the buffer.\r
-\r
-  for (i=0; i<4; i++)\r
-  {\r
-    if (!layertoggle[i]) continue;\r
-    ct=0;\r
-    for (_y=0; _y<layer[i].sizey; _y++)\r
-      for (_x=0; _x<layer[i].sizex; _x++)\r
-      {\r
-         c=(unsigned char) mvsp[layers[i][(_y*layer[i].sizex)+_x]];\r
-         if (layers[i][(_y*layer[i].sizex)+_x]) ptr[ct]=c;\r
-         ct++;\r
-      }\r
-  }\r
-\r
-  while (!key[SCAN_ESC] && !mb)\r
-  {\r
-    ClearScreen();\r
-    CCopySprite(16-xoff, 16-yoff, layer[0].sizex, layer[0].sizey, ptr);\r
-    ReadMouse();\r
-    HLine(mx, my, 20, white);\r
-    VLine(mx, my, ty, white);\r
-    VLine(mx+19, my, ty, white);\r
-    HLine(mx, my+ty, 20, white);\r
-\r
-    ShowPage();\r
-\r
-    if (key[SCAN_LEFT] && xoff)\r
-    {\r
-      if (xoff > 0) xoff-=16;\r
-      key[SCAN_LEFT]=0;\r
-    }\r
-    if (key[SCAN_UP] && yoff)\r
-    {\r
-      if (yoff > 0) yoff-=16;\r
-      key[SCAN_UP]=0;\r
-    }\r
-    if (key[SCAN_DOWN])\r
-    {\r
-      if (yoff < layer[0].sizey)\r
-        yoff+=16;\r
-      key[SCAN_DOWN]=0;\r
-    }\r
-    if (key[SCAN_RIGHT])\r
-    {\r
-      if (xoff < layer[0].sizex)\r
-        xoff+=16;\r
-      key[SCAN_RIGHT]=0;\r
-    }\r
-    if (mb)\r
-    {\r
-      xwin=(xoff+mx-16)*16;\r
-      ywin=(yoff+my-16)*16;\r
-      if (xwin>=(layer[0].sizex*16)-320) xwin=(layer[0].sizex*16)-320;\r
-      if (ywin>=(layer[0].sizey*16)-tsy-15) ywin=(layer[0].sizey*16)-tsy-15;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-  }\r
-  key[SCAN_ESC]=0;\r
-  vfree(ptr);\r
-}\r
diff --git a/16/v2/source/verge/MAPED/MINIMAP.H b/16/v2/source/verge/MAPED/MINIMAP.H
deleted file mode 100755 (executable)
index 254b13b..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef MINIMAP_INC\r
-#define MINIMAP_INC\r
-\r
-extern void FindDominantColor(int i);\r
-extern void GenerateMiniVSP();\r
-extern void MiniMAP();\r
-\r
-#endif // MINIMAP_INC\r
diff --git a/16/v2/source/verge/MAPED/MODE13H.C b/16/v2/source/verge/MAPED/MODE13H.C
deleted file mode 100755 (executable)
index 38336e1..0000000
+++ /dev/null
@@ -1,350 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include <string.h>\r
-#include <malloc.h>\r
-\r
-#include "mode13h.h"\r
-#include "vdriver.h"\r
-\r
-// ================================= Data ====================================\r
-\r
-char *screenr;                      // realscr\r
-char startline=16;                  // virtual scroll around 240 vert. pixels\r
-extern unsigned char* translucency_table; //zero\r
-\r
-extern void *valloc(int amount, char*, int);\r
-extern int  vfree(void *);\r
-extern void CheckTimerStuff(); // in maped.c\r
-\r
-// ================================= Code ====================================\r
-\r
-\r
-void SetMode(int mode)\r
-{\r
-  REGISTERS r;\r
-  SET_AX(r, mode);\r
-  INTERRUPT(0x10, r);\r
-}\r
-\r
-int Mode13hShutdown()\r
-{\r
-  SetMode(0x3);\r
-  vfree(screen);\r
-  screen=0;\r
-  return 0;\r
-}\r
-\r
-int Mode13hShowPage()\r
-{ int rows;\r
-  char *s,*d;\r
-\r
-  CheckTimerStuff();\r
-\r
-  s=screen+(16*tsx)+16;\r
-  d=screenr;\r
-  rows=sy;\r
-\r
-  for (; rows; rows--)\r
-  {\r
-    memcpy(d,s,sx);\r
-    s+=tsx;\r
-    d+=sx;\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-int Mode13hCopySprite(int x, int y, int width, int height, char *src)\r
-{ char *d;\r
-\r
-  d=screen+(y*tsx)+x;\r
-  for (; height; height--)\r
-  {\r
-    memcpy(d,src,width);\r
-    src+=width;\r
-    d+=tsx;\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-int Mode13hCCopySprite(int x,int y,int width,int height,char *src)\r
-{ int cx1,cy1,cx2,cy2;\r
-  char *s,*d;\r
-  int xl,yl,xs,ys;\r
-\r
-  xl=width;\r
-  yl=height;\r
-  xs=ys=0;\r
-\r
-  cx1=0;\r
-  cy1=0;\r
-  cx2=tsx-1;\r
-  cy2=tsy-1;\r
-\r
-  if (x>cx2 || y>cy2 || x+xl<cx1 || y+yl<cy1)\r
-    return 0;\r
-\r
-  if (x+xl > cx2) xl=cx2-x+1;\r
-  if (y+yl > cy2) yl=cy2-y+1;\r
-\r
-  if (x<cx1) { xs=cx1-x; xl-=xs; x=cx1; }\r
-  if (y<cy1) { ys=cy1-y; yl-=ys; y=cy1; }\r
-\r
-  s=src;\r
-  if (xs+ys) s+=(ys*width)+xs;\r
-  d=screen+(y*tsx)+x;\r
-\r
-  for (; yl; yl--)\r
-  {\r
-    memcpy(d,s,xl);\r
-    s+=width;\r
-    d+=tsx;\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-int Mode13hTCCopySprite(int x,int y,int width,int height,char *src)\r
-{ int cx1,cy1,cx2,cy2;\r
-  char *s,*d;\r
-  int xl,yl,xs,ys;\r
-  char c;\r
-\r
-  xl=width;\r
-  yl=height;\r
-  xs=ys=0;\r
-\r
-  cx1=0;\r
-  cy1=0;\r
-  cx2=tsx-1;\r
-  cy2=tsy-1;\r
-\r
-  if (x>cx2 || y>cy2 || x+xl<cx1 || y+yl<cy1)\r
-    return 0;\r
-\r
-  if (x+xl > cx2) xl=cx2-x+1;\r
-  if (y+yl > cy2) yl=cy2-y+1;\r
-\r
-  if (x<cx1) { xs=cx1-x; xl-=xs; x=cx1; }\r
-  if (y<cy1) { ys=cy1-y; yl-=ys; y=cy1; }\r
-\r
-  s=src+(ys*width)+xs;\r
-  d=screen+(y*tsx)+x;\r
-\r
-  for (; yl; yl--)\r
-  {\r
-    for (x=0; x<xl; x++)\r
-    {\r
-      c=s[x];\r
-      if (c)\r
-        d[x]=c;\r
-    }\r
-    s+=width;\r
-    d+=tsx;\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-int Mode13hTCopySprite(int x, int y, int width, int height, char *src)\r
-{ char *d;\r
-  char c;\r
-\r
-  d=screen+(y*tsx)+x;\r
-  for (; height; height--)\r
-  {\r
-    for (x=0; x<width; x++)\r
-    {\r
-      c=src[x];\r
-      if (c)\r
-        d[x]=c;\r
-    }\r
-    src+=width;\r
-    d+=tsx;\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-int Mode13hCopyTile(int x, int y, char *src)\r
-{ int h;\r
-  char *d;\r
-\r
-  h=16;\r
-  d=screen+(y*tsx)+x;\r
-  for (; h; h--)\r
-  {\r
-    memcpy(d, src, 16);\r
-    src+=16;\r
-    d+=tsx;\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-int Mode13hVLine(int x, int y, int length, char color)\r
-{ int cx1,cy1,cx2,cy2;\r
-  char *d;\r
-\r
-  cx1=0;\r
-  cy1=0;\r
-  cx2=tsx-1;\r
-  cy2=tsy-1;\r
-\r
-  if (x>cx2 || y>cy2 || x<cx1 || y+length<cy1)\r
-    return 0;\r
-\r
-  if (y+length > cy2) length=cy2-y+1;\r
-  if (y<cy1) { length-=(cy1-y); y=cy1; }\r
-\r
-  d=screen+(y*tsx)+x;\r
-  for (; length; length--)\r
-  {\r
-    *d=color;\r
-    d+=tsx;\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-int Mode13hHLine(int x, int y, int width, char color)\r
-{ int cx1,cy1,cx2,cy2;\r
-  char *d;\r
-\r
-  cx1=0;\r
-  cy1=0;\r
-  cx2=tsx-1;\r
-  cy2=tsy-1;\r
-\r
-  if (x>cx2 || y>cy2 || x+width<cx1 || y<cy1)\r
-    return 0;\r
-\r
-  if (x+width > cx2) width=cx2-x+1;\r
-  if (x<cx1) { width-=(cx1-x); x=cx1; }\r
-\r
-  d=screen+(y*tsx)+x;\r
-  memset(d,color,width);\r
-\r
-  return 0;\r
-}\r
-\r
-int Mode13hFilledBox(int x, int y, int width, int height, char c)\r
-{\r
-  for (; height; height--,y++)\r
-    Mode13hHLine(x, y, width, c);\r
-\r
-  return 0;\r
-}\r
-\r
-int Mode13hColorGrid(int x, int y, char c)\r
-{ char *d;\r
-\r
-  if (x<0 || x>336 || y<0 || y>256) return 0;\r
-  d=screen+(y*tsx)+x;\r
-  for (y=0; y<8; y++)\r
-  {\r
-    d[0]=c; d[2]=c; d[4]=c; d[6]=c;\r
-    d[8]=c; d[10]=c; d[12]=c; d[14]=c;\r
-\r
-    d+=(tsx+1);\r
-\r
-    d[0]=c; d[2]=c; d[4]=c; d[6]=c;\r
-    d[8]=c; d[10]=c; d[12]=c; d[14]=c;\r
-\r
-    d+=(tsx-1);\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-int Mode13hClearScreen()\r
-{\r
-  memset(screen,0,76032);\r
-  return 0;\r
-}\r
-\r
-int Mode13hCopySpriteLucentClip(int x, int y, int width, int height, unsigned char *src)\r
-{\r
- int cx1,cy1,cx2,cy2;\r
-  unsigned char *s,*d,c;\r
-  int xl,yl,xs,ys;\r
-\r
-  cx1=0;\r
-  cy1=0;\r
-  cx2=tsx-1;\r
-  cy2=tsy-1;\r
-\r
-  xl=width;\r
-  yl=height;\r
-  xs=ys=0;\r
-  if (x>cx2 || y>cy2 || x+xl<cx1 || y+yl<cy1)\r
-    return 1;\r
-  if (x+xl > cx2) xl=cx2-x+1;\r
-  if (y+yl > cy2) yl=cy2-y+1;\r
-  if (x<cx1) { xs=cx1-x; xl-=xs; x=cx1; }\r
-  if (y<cy1) { ys=cy1-y; yl-=ys; y=cy1; }\r
-\r
-  s=src;\r
-  if (ys) s+=(ys*width); // only perform mul if necessary ;)\r
-  if (xs) s+=xs;\r
-  d=screen+(y*tsx)+x;\r
-\r
-  for (; yl; yl--)\r
-  {\r
-    for (x=0; x<xl; x++)\r
-    {\r
-      c=s[x];\r
-      if (c)\r
-        d[x]=translucency_table[d[x]|(c<<8)];\r
-    }\r
-    s+=width;\r
-    d+=tsx;\r
-  }\r
-  return 1;\r
-}\r
-\r
-void InitMode13h()\r
-{\r
-  SetMode(0x13);\r
-\r
-  screenr=(char *) 0xA0000;\r
-  screen=(char *) valloc(352*(216+16),"Screen",0);\r
-  //memset(screen,0,95744);\r
-\r
-  sx=320;  sy=200;\r
-  tsx=352; tsy=216;\r
-  tx=20;   ty=13;\r
-\r
-  // Mode successfuly set, now lets set up the driver.\r
-  ShutdownVideo=&Mode13hShutdown;\r
-  ShowPage=&Mode13hShowPage;\r
-  CopySprite=&Mode13hCopySprite;\r
-  CCopySprite=&Mode13hCCopySprite;\r
-  TCCopySprite=&Mode13hTCCopySprite;\r
-  TCopySprite=&Mode13hTCopySprite;\r
-  CopyTile=&Mode13hCopyTile;\r
-  FilledBox=&Mode13hFilledBox;\r
-  VLine=&Mode13hVLine;\r
-  HLine=&Mode13hHLine;\r
-  ColorGrid=&Mode13hColorGrid;\r
-  ClearScreen=&Mode13hClearScreen;\r
-  CopySpriteLucentClip=&Mode13hCopySpriteLucentClip;\r
-\r
-  map_scroll_x =\r
-  map_scroll_y = 2;\r
-}\r
diff --git a/16/v2/source/verge/MAPED/MODE13H.H b/16/v2/source/verge/MAPED/MODE13H.H
deleted file mode 100755 (executable)
index d450c66..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef MODE13H_INC\r
-#define MODE13H_INC\r
-\r
-extern void SetMode(int mode);\r
-extern int  Mode13hShutdown();\r
-extern int  Mode13hShowPage();\r
-extern int  Mode13hCopySprite(int x, int y, int width, int height, char *src);\r
-extern int  Mode13hCCopySprite(int x,int y,int width,int height,char *src);\r
-extern int  Mode13hTCCopySprite(int x,int y,int width,int height,char *src);\r
-extern int  Mode13hTCopySprite(int x, int y, int width, int height, char *src);\r
-extern int  Mode13hCopyTile(int x, int y, char *src);\r
-extern int  Mode13hVLine(int x, int y, int length, char color);\r
-extern int  Mode13hHLine(int x, int y, int width, char color);\r
-extern int  Mode13hFilledBox(int x, int y, int width, int height, char c);\r
-extern int  Mode13hColorGrid(int x, int y, char c);\r
-extern int  Mode13hClearScreen();\r
-extern int  Mode13hCopySpriteLucentClip(int x, int y, int width, int height, unsigned char *src);\r
-extern void InitMode13h();\r
-\r
-#endif // MODE13H_INC\r
diff --git a/16/v2/source/verge/MAPED/MODEX.C b/16/v2/source/verge/MAPED/MODEX.C
deleted file mode 100755 (executable)
index ab30c66..0000000
+++ /dev/null
@@ -1,404 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include <conio.h>\r
-#include <string.h>\r
-#include <malloc.h>\r
-\r
-#include "mode13h.h" // SetMode()\r
-#include "modex.h"\r
-#include "vdriver.h"\r
-\r
-// ================================= Data ====================================\r
-\r
-#define SEQU_ADDR               0x3c4\r
-#define CRTC_ADDR               0x3d4\r
-#define MISC_OUTPUT             0x3c2\r
-\r
-char *screen1, *screen2;            // page banks;\r
-char *screenx, curscr;              // ptr to active page | page flip ctr\r
-char *screenbase;                   // ptr to A000:0000\r
-\r
-extern unsigned char* translucency_table; //zero\r
-\r
-extern void CheckTimerStuff();\r
-extern void *valloc(int amount,char*,int);\r
-extern int  vfree(void *);\r
-\r
-// ================================= Code ====================================\r
-\r
-static void plane(char p)\r
-{\r
-  int hi=1<<p;\r
-  outpw(0x03c4, (hi<<8)|0x02);\r
-}\r
-\r
-extern void SetModeX(void);\r
-\r
-int ModeXShutdown()\r
-{\r
-  SetMode(0x3);\r
-  vfree(screen);\r
-  return 0;\r
-}\r
-\r
-int ModeXShowPage()\r
-{ char *s,*se,*d,*de;\r
-  int k;\r
-\r
-  CheckTimerStuff();\r
-\r
-  s=screen+(16*tsx)+16;\r
-  se=s+(sy*tsx);\r
-  d=screenx;\r
-\r
-  while (s<se)\r
-  {\r
-    for (k=0; k<4; k++)\r
-    {\r
-      plane(k);\r
-      de=d+(sx>>2);\r
-\r
-      while (d<de)\r
-      {\r
-        d[0]=s[k];\r
-        d[1]=s[k+4];\r
-        s+=8;\r
-        d+=2;\r
-      }\r
-\r
-      s-=sx;\r
-      d-=(sx>>2);\r
-    }\r
-\r
-    s+=tsx;\r
-    d+=(sx>>2);\r
-  }\r
-  return 0;\r
-}\r
-\r
-int ModeXCopySprite(int x, int y, int width, int height, char *src)\r
-{ char *d;\r
-\r
-  d=screen+(y*tsx)+x;\r
-  for (; height; height--)\r
-  {\r
-    memcpy(d,src,width);\r
-    src+=width;\r
-    d+=tsx;\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-int ModeXCCopySprite(int x,int y,int width,int height,char *src)\r
-{ int cx1,cy1,cx2,cy2;\r
-  char *s,*d;\r
-  int xl,yl,xs,ys;\r
-\r
-  xl=width;\r
-  yl=height;\r
-  xs=ys=0;\r
-\r
-  cx1=0;\r
-  cy1=0;\r
-  cx2=tsx-1;\r
-  cy2=tsy-1;\r
-\r
-  if (x>cx2 || y>cy2 || x+xl<cx1 || y+yl<cy1)\r
-    return 0;\r
-\r
-  if (x+xl > cx2) xl=cx2-x+1;\r
-  if (y+yl > cy2) yl=cy2-y+1;\r
-\r
-  if (x<cx1) { xs=cx1-x; xl-=xs; x=cx1; }\r
-  if (y<cy1) { ys=cy1-y; yl-=ys; y=cy1; }\r
-\r
-  s=src;\r
-  if (xs+ys) s+=(ys*width)+xs;\r
-  d=screen+(y*tsx)+x;\r
-\r
-  for (; yl; yl--)\r
-  {\r
-    memcpy(d,s,xl);\r
-    s+=width;\r
-    d+=tsx;\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-int ModeXTCCopySprite(int x,int y,int width,int height,char *src)\r
-{ int cx1,cy1,cx2,cy2;\r
-  char *s,*d;\r
-  int xl,yl,xs,ys;\r
-  char c;\r
-\r
-  xl=width;\r
-  yl=height;\r
-  xs=ys=0;\r
-\r
-  cx1=0;\r
-  cy1=0;\r
-  cx2=tsx-1;\r
-  cy2=tsy-1;\r
-\r
-  if (x>cx2 || y>cy2 || x+xl<cx1 || y+yl<cy1)\r
-    return 0;\r
-\r
-  if (x+xl > cx2) xl=cx2-x+1;\r
-  if (y+yl > cy2) yl=cy2-y+1;\r
-\r
-  if (x<cx1) { xs=cx1-x; xl-=xs; x=cx1; }\r
-  if (y<cy1) { ys=cy1-y; yl-=ys; y=cy1; }\r
-\r
-  s=src;\r
-  if (xs+ys) s+=(ys*width)+xs;\r
-  d=screen+(y*tsx)+x;\r
-\r
-  for (; yl; yl--)\r
-  {\r
-    for (x=0; x<xl; x++)\r
-    {\r
-      c=s[x];\r
-      if (c)\r
-        d[x]=c;\r
-    }\r
-    s+=width;\r
-    d+=tsx;\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-int ModeXTCopySprite(int x, int y, int width, int height, char *src)\r
-{ char *d;\r
-  char c;\r
-\r
-  d=screen+(y*tsx)+x;\r
-  for (; height; height--)\r
-  {\r
-    for (x=0; x<width; x++)\r
-    {\r
-      c=src[x];\r
-      if (c)\r
-        d[x]=c;\r
-    }\r
-    src+=width;\r
-    d+=tsx;\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-int ModeXCopyTile(int x, int y, char *src)\r
-{ int h;\r
-  char *d;\r
-\r
-  h=16;\r
-  d=screen+(y*tsx)+x;\r
-  for (; h; h--)\r
-  {\r
-    memcpy(d, src, 16);\r
-    src+=16;\r
-    d+=tsx;\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-int ModeXVLine(int x, int y, int length, char color)\r
-{ int cx1,cy1,cx2,cy2;\r
-  char *d;\r
-\r
-  cx1=0;\r
-  cy1=0;\r
-  cx2=tsx-1;\r
-  cy2=tsy-1;\r
-\r
-  if (x>cx2 || y>cy2 || x<cx1 || y+length<cy1)\r
-    return 0;\r
-\r
-  if (y+length > cy2) length=cy2-y+1;\r
-  if (y<cy1) { length-=(cy1-y); y=cy1; }\r
-\r
-  d=screen+(y*tsx)+x;\r
-  for (; length; length--)\r
-  {\r
-    *d=color;\r
-    d+=tsx;\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-int ModeXHLine(int x, int y, int width, char color)\r
-{ int cx1,cy1,cx2,cy2;\r
-  char *d;\r
-\r
-  cx1=0;\r
-  cy1=0;\r
-  cx2=tsx-1;\r
-  cy2=tsy-1;\r
-\r
-  if (x>cx2 || y>cy2 || x+width<cx1 || y<cy1)\r
-    return 0;\r
-\r
-  if (x+width > cx2) width=cx2-x+1;\r
-  if (x<cx1) { width-=(cx1-x); x=cx1; }\r
-\r
-  d=screen+(y*tsx)+x;\r
-  memset(d,color,width);\r
-\r
-  return 0;\r
-}\r
-\r
-int ModeXFilledBox(int x, int y, int width, int height, char c)\r
-{\r
-  for (; height; height--,y++)\r
-    ModeXHLine(x, y, width, c);\r
-\r
-  return 0;\r
-}\r
-\r
-int ModeXColorGrid(int x, int y, char c)\r
-{ char *d;\r
-\r
-  if (x<0 || x>336 || y<0 || y>256) return 0;\r
-  d=screen+(y*tsx)+x;\r
-  for (y=0; y<8; y++)\r
-  {\r
-    d[0]=c; d[2]=c; d[4]=c; d[6]=c;\r
-    d[8]=c; d[10]=c; d[12]=c; d[14]=c;\r
-\r
-    d+=(tsx+1);\r
-\r
-    d[0]=c; d[2]=c; d[4]=c; d[6]=c;\r
-    d[8]=c; d[10]=c; d[12]=c; d[14]=c;\r
-\r
-    d+=(tsx-1);\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-int ModeXClearScreen()\r
-{\r
-  memset(screen,0,90117);\r
-  return 0;\r
-}\r
-\r
-int ModeXCopySpriteLucentClip(int x, int y, int width, int height, unsigned char *src)\r
-{\r
- int cx1,cy1,cx2,cy2;\r
-  unsigned char *s,*d,c;\r
-  int xl,yl,xs,ys;\r
-\r
-  cx1=0;\r
-  cy1=0;\r
-  cx2=tsx-1;\r
-  cy2=tsy-1;\r
-\r
-  xl=width;\r
-  yl=height;\r
-  xs=ys=0;\r
-  if (x>cx2 || y>cy2 || x+xl<cx1 || y+yl<cy1)\r
-    return 1;\r
-  if (x+xl > cx2) xl=cx2-x+1;\r
-  if (y+yl > cy2) yl=cy2-y+1;\r
-  if (x<cx1) { xs=cx1-x; xl-=xs; x=cx1; }\r
-  if (y<cy1) { ys=cy1-y; yl-=ys; y=cy1; }\r
-\r
-  s=src;\r
-  if (ys) s+=(ys*width); // only perform mul if necessary ;)\r
-  if (xs) s+=xs;\r
-  d=screen+(y*tsx)+x;\r
-\r
-  for (; yl; yl--)\r
-  {\r
-    for (x=0; x<xl; x++)\r
-    {\r
-      c=s[x];\r
-      if (c)\r
-        d[x]=translucency_table[d[x]|(c<<8)];\r
-    }\r
-    s+=width;\r
-    d+=tsx;\r
-  }\r
-  return 1;\r
-}\r
-\r
-\r
-void InitModeX()\r
-{ char in_byte;\r
-\r
-  SetMode(0x13);\r
-\r
-  outpw(SEQU_ADDR, 0x0604);\r
-  memset((unsigned char *)0xA0000, 0, 0x10000);\r
-  outpw(SEQU_ADDR, 0x0110);\r
-  outp(MISC_OUTPUT, 0xe3);\r
-  outpw(SEQU_ADDR, 0x0300);\r
-  outp(CRTC_ADDR, 0x11);\r
-  in_byte = inp((CRTC_ADDR+1));\r
-  in_byte = (in_byte && 0x7f);\r
-  outp((CRTC_ADDR+1), in_byte);\r
-  outpw(CRTC_ADDR, 0x0d06);\r
-  outpw(CRTC_ADDR, 0x3e07);\r
-  outpw(CRTC_ADDR, 0x4109);\r
-  outpw(CRTC_ADDR, 0xea10);\r
-  outpw(CRTC_ADDR, 0xac11);\r
-  outpw(CRTC_ADDR, 0xdf12);\r
-  outpw(CRTC_ADDR, 0x0014);\r
-  outpw(CRTC_ADDR, 0xe715);\r
-  outpw(CRTC_ADDR, 0x0616);\r
-  outpw(CRTC_ADDR, 0xe317);\r
-\r
-  //sx=320;  sy=240;\r
-  //tsx=352; tsy=272;\r
-  //tx=20;   ty=15;\r
-  //endcol=336; nextl=80;\r
-  //winofs=5632;\r
-\r
-  screenx=(char *) 0xA0000;\r
-  screen=(char *) valloc(352*(256+16),"screen",0);\r
-  //memset(screen,0,95744);\r
-  curscr=0;\r
-\r
-  sx=320;  sy=240;\r
-  tsx=352; tsy=256;\r
-  tx=20;   ty=15;\r
-\r
-  // Mode successfuly set, now lets set up the driver.\r
-  ShutdownVideo=&ModeXShutdown;\r
-  ShowPage=&ModeXShowPage;\r
-  CopySprite=&ModeXCopySprite;\r
-  CCopySprite=&ModeXCCopySprite;\r
-  TCCopySprite=&ModeXTCCopySprite;\r
-  TCopySprite=&ModeXTCopySprite;\r
-  CopyTile=&ModeXCopyTile;\r
-  FilledBox=&ModeXFilledBox;\r
-  HLine=&ModeXHLine;\r
-  VLine=&ModeXVLine;\r
-  ColorGrid=&ModeXColorGrid;\r
-  ClearScreen=&ModeXClearScreen;\r
-  CopySpriteLucentClip=&ModeXCopySpriteLucentClip;\r
-\r
-  map_scroll_x =\r
-  map_scroll_y = 2;\r
-}\r
-\r
-\r
diff --git a/16/v2/source/verge/MAPED/MODEX.H b/16/v2/source/verge/MAPED/MODEX.H
deleted file mode 100755 (executable)
index a42da42..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef MODEX_INC\r
-#define MODEX_INC\r
-\r
-extern int  ModeXShutdown();\r
-extern int  ModeXShowPage();\r
-extern int  ModeXCopySprite(int x, int y, int width, int height, char *src);\r
-extern int  ModeXCCopySprite(int x,int y,int width,int height,char *src);\r
-extern int  ModeXTCCopySprite(int x,int y,int width,int height,char *src);\r
-extern int  ModeXTCopySprite(int x, int y, int width, int height, char *src);\r
-extern int  ModeXCopyTile(int x, int y, char *src);\r
-extern int  ModeXVLine(int x, int y, int length, char color);\r
-extern int  ModeXHLine(int x, int y, int width, char color);\r
-extern int  ModeXFilledBox(int x, int y, int width, int height, char c);\r
-extern int  ModeXColorGrid(int x, int y, char c);\r
-extern int  ModeXClearScreen();\r
-extern int  ModeXCopySpriteLucentClip(int x, int y, int width, int height, unsigned char *src);\r
-extern void InitModeX();\r
-\r
-#endif // MODEX_INC\r
diff --git a/16/v2/source/verge/MAPED/MOUSE.C b/16/v2/source/verge/MAPED/MOUSE.C
deleted file mode 100755 (executable)
index 81b33d2..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include <stdio.h>\r
-#include <i86.h>\r
-#include <string.h>\r
-\r
-#include "timer.h"\r
-#include "vdriver.h"\r
-\r
-// ================================= Data ====================================\r
-\r
-extern char mousepic[]; // blah\r
-\r
-static union REGS regs;\r
-\r
-int mx=0,my=0,mb=0;\r
-int rb=0,wb=0;\r
-int lmx=0,lmy=0,lmb=0;\r
-\r
-// ================================= Code ====================================\r
-\r
-void PutMouse(int x, int y)\r
-{\r
-  lmx=mx; lmy=my; lmb=mb;\r
-  memset(&regs, 0, sizeof regs);\r
-  regs.w.ax=4;\r
-  regs.w.cx=x*2;\r
-  regs.w.dx=y*2;\r
-  int386(0x33,&regs,&regs);\r
-\r
-  mx=x; my=y;\r
-}\r
-\r
-void InitMouse()\r
-{\r
-  memset(&regs, 0, sizeof regs);\r
-  int386(0x33,&regs,&regs);\r
-\r
-  regs.w.ax=7;\r
-  regs.w.cx=0;\r
-  regs.w.dx=640; /*320;*/ /* -- ric:13/Jun/98 - fix horizontal jumps -- */\r
-  int386(0x33,&regs,&regs);\r
-\r
-  regs.w.ax=8;\r
-  regs.w.cx=0;\r
-  regs.w.dx=sy; // aen\r
-  int386(0x33,&regs,&regs);\r
-\r
-  PutMouse(sx/2,(sy/2) /2); // aen\r
-}\r
-\r
-void ReadMouse()\r
-{\r
-  lmx=mx; lmy=my; lmb=mb;\r
-  memset(&regs, 0, sizeof regs);\r
-  regs.w.ax=3;\r
-  int386(0x33,&regs,&regs);\r
-\r
-  mx=((regs.w.cx)>>1)+16;  /* -- ric:13/Jun/98 - fix horizontal jumps -- */\r
-  my=(regs.w.dx)+16;\r
-  rb=regs.w.bx;\r
-\r
-  if (rb && wb) { mb=0; return; }\r
-  if (wb && !rb) wb=0;\r
-  mb=rb;\r
-\r
-  if ((lmx!=mx) || (lmy!=my) || (lmb!=mb)) idlect=0;\r
-}\r
-\r
-void DrawMouse()\r
-{\r
-  ReadMouse();\r
-  TCopySprite(mx,my,4,5,mousepic);\r
-}\r
-\r
-void WaitRelease()\r
-{\r
-  wb=1;\r
-  mb=0;\r
-}\r
diff --git a/16/v2/source/verge/MAPED/MOUSE.H b/16/v2/source/verge/MAPED/MOUSE.H
deleted file mode 100755 (executable)
index d0e9a1d..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef MOUSE_INC\r
-#define MOUSE_INC\r
-\r
-extern int mx,my,mb;\r
-extern int rb,wb;\r
-extern int lmx,lmy,lmb;\r
-\r
-extern void PutMouse(int x, int y);\r
-extern void InitMouse();\r
-extern void ReadMouse();\r
-extern void DrawMouse();\r
-extern void WaitRelease();\r
-\r
-#endif // MOUSE_INC\r
diff --git a/16/v2/source/verge/MAPED/MTYPES.H b/16/v2/source/verge/MAPED/MTYPES.H
deleted file mode 100755 (executable)
index a57d087..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-#ifndef MTYPES_H\r
-#define MTYPES_H\r
-\r
-/*\r
-       MikMod atomic types:\r
-       ====================\r
-*/\r
-\r
-\r
-#ifdef __OS2__\r
-\r
-typedef signed char     SBYTE;          /* has to be 1 byte signed */\r
-typedef unsigned char   UBYTE;          /* has to be 1 byte unsigned */\r
-typedef short           SWORD;          /* has to be 2 bytes signed */\r
-typedef unsigned short  UWORD;          /* has to be 2 bytes unsigned */\r
-typedef long            SLONG;          /* has to be 4 bytes signed */\r
-/* ULONG and BOOL are already defined in OS2.H */\r
-\r
-#elif defined(__alpha)\r
-\r
-typedef char            SBYTE;          /* has to be 1 byte signed */\r
-typedef unsigned char   UBYTE;          /* has to be 1 byte unsigned */\r
-typedef short           SWORD;          /* has to be 2 bytes signed */\r
-typedef unsigned short  UWORD;          /* has to be 2 bytes unsigned */\r
-/* long is 8 bytes on dec alpha - RCA */\r
-typedef int             SLONG;          /* has to be 4 bytes signed */\r
-typedef unsigned int    ULONG;          /* has to be 4 bytes unsigned */\r
-typedef int             BOOL;           /* doesn't matter.. 0=FALSE, <>0 true */\r
-\r
-#else\r
-\r
-typedef char            SBYTE;          /* has to be 1 byte signed */\r
-typedef unsigned char   UBYTE;          /* has to be 1 byte unsigned */\r
-typedef short           SWORD;          /* has to be 2 bytes signed */\r
-typedef unsigned short  UWORD;          /* has to be 2 bytes unsigned */\r
-typedef long            SLONG;          /* has to be 4 bytes signed */\r
-typedef unsigned long   ULONG;          /* has to be 4 bytes unsigned */\r
-typedef int             BOOL;           /* doesn't matter.. 0=FALSE, <>0 true */\r
-\r
-#endif\r
-\r
-\r
-#ifdef __OS2__\r
-#define INCL_DOS\r
-#define INCL_MCIOS2\r
-#define INCL_MMIOOS2\r
-#include <os2.h>\r
-#include <os2me.h>\r
-#include <mmio.h>\r
-#endif\r
-\r
-\r
-#ifdef __WATCOMC__\r
-#define inportb(x) inp(x)\r
-#define outportb(x,y) outp(x,y)\r
-#define inport(x) inpw(x)\r
-#define outport(x,y) outpw(x,y)\r
-#define disable() _disable()\r
-#define enable() _enable()\r
-#endif\r
-\r
-\r
-#ifdef __DJGPP__\r
-#include <dpmi.h>\r
-#include <go32.h>\r
-#include <pc.h>\r
-#define inp inportw\r
-#define outport outportw\r
-#define inport inportw\r
-#define interrupt \r
-#endif\r
-\r
-#endif\r
diff --git a/16/v2/source/verge/MAPED/PCX.C b/16/v2/source/verge/MAPED/PCX.C
deleted file mode 100755 (executable)
index 5ab55f6..0000000
+++ /dev/null
@@ -1,210 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include <stdio.h>\r
-#include "timer.h"\r
-#include "vga.h"\r
-\r
-char manufacturer;                     // pcx header\r
-char version;\r
-char encoding;\r
-char bits_per_pixel;\r
-short int xmin,ymin;\r
-short int xmax,ymax;\r
-short int hres;\r
-short int vres;\r
-char palette[48];\r
-char reserved;\r
-char color_planes;\r
-short int bytes_per_line;\r
-short int palette_type;\r
-char filler[58];\r
-\r
-unsigned short int width,depth;\r
-unsigned short int bytes, i;\r
-unsigned char c, run, ss=0;\r
-unsigned int vidoffset, n=0;\r
-FILE *pcxf;\r
-\r
-void ReadPCXLine(unsigned char *dest)\r
-{ int j;\r
-  n=0;\r
-\r
-  do {\r
-  c=fgetc(pcxf) & 0xff;\r
-    if ((c & 0xc0)==0xc0) {\r
-       run=c & 0x3f;\r
-       c=fgetc(pcxf);\r
-       for (j=0; j<run; j++)\r
-           dest[vidoffset+n+j]=c;\r
-       n+=run; }\r
-    else { dest[vidoffset+n]=c;\r
-           n++; }\r
-  } while (n<bytes);\r
-  fread(strbuf, 1, bytes_per_line-width, pcxf);\r
-}\r
-\r
-void LoadPCXHeader(char *fname)\r
-{\r
-  if (!(pcxf=fopen(fname,"rb"))) err("Could not open specified PCX file.");\r
-  fread(&manufacturer,1,1,pcxf);\r
-  fread(&version,1,1,pcxf);\r
-  fread(&encoding,1,1,pcxf);\r
-  fread(&bits_per_pixel,1,1,pcxf);\r
-  fread(&xmin,1,2,pcxf);\r
-  fread(&ymin,1,2,pcxf);\r
-  fread(&xmax,1,2,pcxf);\r
-  fread(&ymax,1,2,pcxf);\r
-  fread(&hres,1,2,pcxf);\r
-  fread(&vres,1,2,pcxf);\r
-  fread(&palette,1,48,pcxf);\r
-  fread(&reserved,1,1,pcxf);\r
-  fread(&color_planes,1,1,pcxf);\r
-  fread(&bytes_per_line,1,2,pcxf);\r
-  fread(&palette_type,1,2,pcxf);\r
-  fread(&filler,1,58,pcxf);\r
-  fseek(pcxf,-768L,SEEK_END);\r
-  fread(pal,1,768,pcxf);\r
-  fseek(pcxf,128L,SEEK_SET);\r
-  width=xmax-xmin+1;\r
-  depth=ymax-ymin+1;\r
-  bytes=bytes_per_line;\r
-\r
-  for (i=0; i<768; i++)\r
-    pal[i]=pal[i] >> 2;\r
-  set_intensity(63);\r
-}\r
-\r
-void LoadPCXHeaderNP(char *fname)\r
-{\r
-  if (!(pcxf=fopen(fname,"rb"))) err("Could not open specified PCX file.");\r
-  fread(&manufacturer,1,1,pcxf);\r
-  fread(&version,1,1,pcxf);\r
-  fread(&encoding,1,1,pcxf);\r
-  fread(&bits_per_pixel,1,1,pcxf);\r
-  fread(&xmin,1,2,pcxf);\r
-  fread(&ymin,1,2,pcxf);\r
-  fread(&xmax,1,2,pcxf);\r
-  fread(&ymax,1,2,pcxf);\r
-  fread(&hres,1,2,pcxf);\r
-  fread(&vres,1,2,pcxf);\r
-  fread(&palette,1,48,pcxf);\r
-  fread(&reserved,1,1,pcxf);\r
-  fread(&color_planes,1,1,pcxf);\r
-  fread(&bytes_per_line,1,2,pcxf);\r
-  fread(&palette_type,1,2,pcxf);\r
-  fread(&filler,1,58,pcxf);\r
-  width=xmax-xmin+1;\r
-  depth=ymax-ymin+1;\r
-  bytes=bytes_per_line;\r
-}\r
-\r
-void loadpcx(char *fname, char *dest)\r
-{\r
-  LoadPCXHeader(fname);\r
-\r
-  for (i=0; i<depth; i++)\r
-    { vidoffset=5648+(i*352);\r
-      ReadPCXLine(dest); }\r
-\r
-  fclose(pcxf);\r
-}\r
-\r
-void WritePCXLine(unsigned char *p)\r
-{ int i;\r
-  unsigned char byte,samect,repcode;\r
-\r
-  i=0;\r
-  do\r
-  {   byte=p[i++];\r
-      samect=1;\r
-      while (samect<(unsigned) 63 && i<320 && byte==p[i])\r
-      {\r
-         samect++;\r
-         i++;\r
-      }\r
-      if (samect>1 || (byte & 0xC0) != 0)\r
-      {\r
-         repcode=0xC0 | samect;\r
-         fwrite(&repcode,1,1,pcxf);\r
-      }\r
-      fwrite(&byte,1,1,pcxf);\r
-  } while (i<320);\r
-}\r
-\r
-void WritePalette()\r
-{ char b;\r
-  int i;\r
-\r
-  for (i=0; i<768; i++)\r
-      pal[i]=pal[i] << 2;\r
-\r
-  b=12; fwrite(&b, 1, 1, pcxf);\r
-  fwrite(pal, 1, 768, pcxf);\r
-\r
-  for (i=0; i<768; i++)\r
-      pal[i]=pal[i] >> 2;\r
-}\r
-\r
-void ScreenShot()\r
-{ unsigned char b1;\r
-  unsigned short int w1;\r
-  char fnamestr[13];\r
-\r
-  // Takes a snapshot of the current screen.\r
-\r
-   dec_to_asciiz(ss,&fnamestr);\r
-   b1=strlen(&fnamestr);\r
-   fnamestr[b1++]='.';\r
-   fnamestr[b1++]='P';\r
-   fnamestr[b1++]='C';\r
-   fnamestr[b1++]='X';\r
-   fnamestr[b1++]=0;\r
-\r
-   pcxf=fopen(&fnamestr,"wb");\r
-   ss++;\r
-\r
-// Write PCX header\r
-\r
-   b1=10; fwrite(&b1, 1, 1, pcxf); // manufacturer always = 10\r
-   b1=5; fwrite(&b1, 1, 1, pcxf);  // version = 3.0, >16 colors\r
-   b1=1; fwrite(&b1, 1, 1, pcxf);  // encoding always = 1\r
-   b1=8; fwrite(&b1, 1, 1, pcxf);  // 8 bits per pixel, for 256 colors\r
-   w1=0; fwrite(&w1, 1, 2, pcxf);  // xmin = 0;\r
-   w1=0; fwrite(&w1, 1, 2, pcxf);  // ymin = 0;\r
- w1=319; fwrite(&w1, 1, 2, pcxf);  // xmax = 319;\r
- w1=199; fwrite(&w1, 1, 2, pcxf);  // ymax = 199;\r
- w1=320; fwrite(&w1, 1, 2, pcxf);  // hres = 320;\r
- w1=200; fwrite(&w1, 1, 2, pcxf);  // vres = 200;\r
-\r
- fwrite(virscr,1,48,pcxf);     // 16-color palette data. Who knows what's\r
-                               // actually in here. It doesn't matter since\r
-                               // the 256-color palette is stored elsewhere.\r
-\r
- b1=0; fwrite(&b1, 1, 1, pcxf);   // reserved always = 0.\r
- b1=1; fwrite(&b1, 1, 1, pcxf);   // number of color planes. Just 1 for 8bit.\r
- w1=320; fwrite(&w1, 1, 2, pcxf); // number of bytes per line\r
-\r
- w1=0; fwrite(&w1, 1, 1, pcxf);\r
- fwrite(virscr, 1, 59, pcxf);          // filler\r
-\r
- for (w1=0; w1<200; w1++)\r
-     WritePCXLine(screen+(w1*320));\r
-\r
- WritePalette();\r
- fclose(pcxf);\r
- timer_count=0;\r
-}\r
diff --git a/16/v2/source/verge/MAPED/RENDER.C b/16/v2/source/verge/MAPED/RENDER.C
deleted file mode 100755 (executable)
index e106775..0000000
+++ /dev/null
@@ -1,475 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include <stdio.h>\r
-#include <string.h>\r
-#include <malloc.h>\r
-\r
-#include "config.h"\r
-#include "maped.h"\r
-#include "vdriver.h"\r
-\r
-#include "render.h" // MAXTILES\r
-\r
-// ================================= Data ====================================\r
-\r
-extern char stipple[256];\r
-\r
-int oxw=0, oyw=0;\r
-int xofs=0, yofs=0;\r
-int xtc=0, ytc=0;\r
-\r
-char curlayer=0;\r
-short tileidx[MAXTILES];\r
-char flipped[MAXTILES];\r
-\r
-// ------\r
-\r
-chri chrs[100];\r
-\r
-// ================================= Code ====================================\r
-\r
-void DoCHR(int i) // hee hee!\r
-{\r
-  FILE *f;\r
-  char b;\r
-  int q;\r
-  short numframes;\r
-\r
-//  free(chrs[i].frame);\r
-//  chrs[i].frame=0;\r
-//  return;\r
-\r
-  if (!strlen(chrlist[i].t))\r
-  {\r
-    if (chrs[i].frame) vfree(chrs[i].frame);\r
-    chrs[i].frame=0;\r
-    chrs[i].fx=chrs[i].fy=0;\r
-    chrs[i].hx=chrs[i].hy=0;\r
-    return;\r
-  }\r
-  if (!(f=fopen(chrlist[i].t,"rb")))\r
-  {\r
-    if (chrs[i].frame) vfree(chrs[i].frame);\r
-    chrs[i].frame=0;\r
-    chrs[i].fx=chrs[i].fy=0;\r
-    chrs[i].hx=chrs[i].hy=0;\r
-    return;\r
-  }\r
-  if (chrs[i].frame) vfree(chrs[i].frame);\r
-  fread(&b, 1, 1, f);\r
-  if (b!=2)\r
-  {\r
-    // This should really not work with V1 CHRs, but..\r
-    chrs[i].frame=(char *) malloc(512);\r
-    fseek(f, 0, 0);\r
-    fread(chrs[i].frame, 1, 512, f);\r
-    fclose(f);\r
-    chrs[i].fx=16; chrs[i].fy=32;\r
-    chrs[i].hx=0;  chrs[i].hy=16;\r
-    return;\r
-  }\r
-  chrs[i].fx=0; fread(&chrs[i].fx, 1, 2, f);\r
-  chrs[i].fy=0; fread(&chrs[i].fy, 1, 2, f);\r
-  chrs[i].hx=0; fread(&chrs[i].hx, 1, 2, f);\r
-  chrs[i].hy=0; fread(&chrs[i].hy, 1, 2, f);\r
-  fread(strbuf, 2, 2, f);\r
-  fread(&numframes, 1, 2, f);\r
-  chrs[i].frame=(char *) valloc(chrs[i].fx*chrs[i].fy*numframes,"chr preview",i);\r
-  fread(&q, 1, 4, f);\r
-\r
-  ReadCompressedLayer1(chrs[i].frame, chrs[i].fx*chrs[i].fy*numframes,f);\r
-\r
-  fclose(f);\r
-}\r
-\r
-void DoCHRdealy()\r
-{\r
-  int i;\r
-\r
-  for (i=0; i<100; i++)\r
-    DoCHR(i);\r
-}\r
-\r
-void BlitBackLayer(char l)\r
-{\r
-  int i,j;\r
-  //int a;\r
-  char *img;\r
-  //char *d;\r
-  unsigned short *lay;\r
-  //int v;\r
-  int mapx,mapy;\r
-  int x,y;\r
-  unsigned int tile;\r
-\r
-  if (!layertoggle[l]) return;\r
-\r
-  mapx = layer[l].sizex;\r
-  mapy = layer[l].sizey;\r
-  lay = layers[l];\r
-\r
-  // Adjust view\r
-  oxw  = xwin * layer[l].pmultx / layer[l].pdivx;\r
-  oyw  = ywin * layer[l].pmulty / layer[l].pdivy;\r
-  xofs = 16 - (oxw & 15);\r
-  yofs = 16 - (oyw & 15);\r
-  xtc  = oxw / 16;\r
-  ytc  = oyw / 16;\r
-\r
-  // Draw it, bitch!\r
-  for (i=0; i <= ty; i++)\r
-  {\r
-    for (j=0; j <= tx; j++)\r
-    {\r
-      x = xtc+j;\r
-      y = ytc+i;\r
-\r
-      // write better clipping sometime\r
-      if (y >= 0 || y < mapy || x >=0 || x < mapx)\r
-      {\r
-        // what the HELL @_@\r
-        tile = lay[(y * mapx) + x];\r
-        if (tile >= numtiles) tile = numtiles-1;\r
-        tile = tileidx[tile];\r
-        if (tile >= numtiles) tile = numtiles-1;\r
-\r
-        img = &vsp[tile * 256];\r
-\r
-        x = (j * 16) + xofs;\r
-        y = (i * 16) + yofs;\r
-\r
-        //CopyTile(x, y, img);\r
-        CCopySprite(x, y, 16, 16, img);\r
-      }\r
-    }\r
-  }\r
-\r
-  curlayer++;\r
-}\r
-\r
-//zero\r
-extern char* translucency_table;\r
-void LucentBlitLayer(char l)\r
-{\r
-  int i,j;\r
-  //int a,b;\r
-  char *img;\r
-  //char *d;\r
-  unsigned short *lay;\r
-  //int v;\r
-  int mapx,mapy;\r
-  int x,y;\r
-  unsigned int tile;\r
-\r
-  if (!layertoggle[l]) return;\r
-  if(!translucency_table)\r
-  {\r
-    TransBlitlayer(l);\r
-    return;\r
-  }\r
-\r
-  mapx = layer[l].sizex;\r
-  mapy = layer[l].sizey;\r
-  lay = layers[l];\r
-\r
-  // Adjust view\r
-  oxw  = xwin * layer[l].pmultx / layer[l].pdivx;\r
-  oyw  = ywin * layer[l].pmulty / layer[l].pdivy;\r
-  xofs = 16 - (oxw & 15);\r
-  yofs = 16 - (oyw & 15);\r
-  xtc  = oxw / 16;\r
-  ytc  = oyw / 16;\r
-\r
-  // Draw it, bitch!\r
-  for (i=0; i <= ty; i++)\r
-  {\r
-    for (j=0; j <= tx; j++)\r
-    {\r
-      x = xtc+j;\r
-      y = ytc+i;\r
-\r
-      // write better clipping sometime\r
-      if (y >= 0 || y < mapy || x >=0 || x < mapx)\r
-      {\r
-        // what the HELL @_@\r
-        tile = lay[(y * mapx) + x];\r
-        if (tile >= numtiles) tile = numtiles-1;\r
-        tile = tileidx[tile];\r
-        if (tile >= numtiles) tile = numtiles-1;\r
-\r
-        img = &vsp[tile * 256];\r
-        if (img != vsp)\r
-        {\r
-          x = (j * 16) + xofs;\r
-          y = (i * 16) + yofs;\r
-          CopySpriteLucentClip(x, y, 16, 16, img);\r
-        }\r
-      }\r
-    }\r
-  }\r
-  curlayer++;\r
-}\r
-\r
-\r
-void TransBlitlayer(char l)\r
-{\r
-  int i,j;\r
-  //int a,b;\r
-  char *img;\r
-  //char *d;\r
-  unsigned short *lay;\r
-  //int v;\r
-  int mapx,mapy;\r
-  int x,y;\r
-  unsigned int tile;\r
-\r
-  if (!layertoggle[l]) return;\r
-\r
-  lay = layers[l];\r
-\r
-  mapx = layer[l].sizex;\r
-  mapy = layer[l].sizey;\r
-\r
-  // Adjust view\r
-  oxw  = xwin * layer[l].pmultx / layer[l].pdivx;\r
-  oyw  = ywin * layer[l].pmulty / layer[l].pdivy;\r
-  xofs = 16 - (oxw & 15);\r
-  yofs = 16 - (oyw & 15);\r
-  xtc  = oxw / 16;\r
-  ytc  = oyw / 16;\r
-\r
-  // Draw it, bitch!\r
-  for (i=0; i <= ty; i++)\r
-  {\r
-    for (j=0; j <= tx; j++)\r
-    {\r
-      x = xtc+j;\r
-      y = ytc+i;\r
-\r
-      // write better clipping sometime\r
-      if (y >= 0 || y < mapy || x >=0 || x < mapx)\r
-      {\r
-        // what the HELL @_@\r
-        tile = lay[(y * mapx) + x];\r
-        if (tile >= numtiles) tile = numtiles-1;\r
-        tile = tileidx[tile];\r
-        if (tile >= numtiles) tile = numtiles-1;\r
-\r
-        img = &vsp[tile * 256];\r
-        if (img != vsp)\r
-        {\r
-          x = (j * 16) + xofs;\r
-          y = (i * 16) + yofs;\r
-          //TCopySprite(x, y, 16, 16, img);\r
-          TCCopySprite(x, y, 16, 16, img);\r
-        }\r
-      }\r
-    }\r
-  }\r
-\r
-  curlayer++;\r
-}\r
-\r
-void BlitLayer(char c)\r
-{\r
-  if(layer[c].trans) { LucentBlitLayer(c); return; } //zero\r
-  if (curlayer) TransBlitLayer(c);\r
-  else BlitBackLayer(c);\r
-}\r
-\r
-void DrawObstructions()\r
-{ int i,j;\r
-  int mapx;\r
-\r
-  mapx = layer[0].sizex;\r
-\r
-  oxw=xwin*layer[0].pmultx/layer[0].pdivx;\r
-  oyw=ywin*layer[0].pmulty/layer[0].pdivy;\r
-  xofs=16-(oxw&15);\r
-  yofs=16-(oyw&15);\r
-  xtc=oxw>>4;\r
-  ytc=oyw>>4;\r
-\r
-  for (i=0; i<ty+1; i++)\r
-    for (j=0; j<tx+1; j++)\r
-    {\r
-      if (obstruct[((ytc+i)*mapx)+(xtc+j)])\r
-      {\r
-         TCCopySprite((j*16)+xofs,(i*16)+yofs,16,16,stipple);\r
-         //ColorGrid((j*16)+xofs,(i*16)+yofs,7);\r
-      }\r
-    }\r
-}\r
-\r
-void DrawZones()\r
-{ int i,j;\r
-  char z;\r
-  int mapx;\r
-\r
-  mapx = layer[0].sizex;\r
-  oxw=xwin*layer[0].pmultx/layer[0].pdivx;\r
-  oyw=ywin*layer[0].pmulty/layer[0].pdivy;\r
-  xofs=16-(oxw&15);\r
-  yofs=16-(oyw&15);\r
-  xtc=oxw>>4;\r
-  ytc=oyw>>4;\r
-\r
-  for (i=0; i<ty+1; i++)\r
-    for (j=0; j<tx+1; j++)\r
-    {\r
-      z=zone[((ytc+i)*mapx)+(xtc+j)];\r
-      if (z)\r
-      {\r
-        TCCopySprite((j*16)+xofs,(i*16)+yofs,16,16,stipple);\r
-        //ColorGrid((j*16)+xofs,(i*16)+yofs,z);\r
-      }\r
-    }\r
-}\r
-\r
-void DrawEntities()\r
-{ int m;\r
-\r
-  for (m=0; m<entities; m++)\r
-    if ((entity[m].x>=(xwin/16)) && (entity[m].x<(xwin/16)+22) &&\r
-        (entity[m].y>=(ywin/16)) && (entity[m].y<(ywin/16)+ty+2))\r
-    {\r
-      if (chrs[entity[m].chrindex].frame)\r
-         TCCopySprite((entity[m].x*16)-xwin+16-chrs[entity[m].chrindex].hx,\r
-                      (entity[m].y*16)-ywin+16-chrs[entity[m].chrindex].hy,\r
-                       chrs[entity[m].chrindex].fx,\r
-                       chrs[entity[m].chrindex].fy,\r
-                       chrs[entity[m].chrindex].frame);\r
-      else\r
-      {\r
-         TCCopySprite(\r
-           (entity[m].x*16)-xwin+16,(entity[m].y*16)-ywin+16,16,16,stipple);\r
-        //ColorGrid((entity[m].x*16)-xwin+16,\r
-        //  (entity[m].y*16)-ywin+16, 0);\r
-      }\r
-    }\r
-}\r
-\r
-// aen\r
-void DrawSelection()\r
-{ int i,j;\r
-  int x1,y1,x2,y2;\r
-\r
-  oxw=xwin*layer[el].pmultx/layer[el].pdivx;\r
-  oyw=ywin*layer[el].pmulty/layer[el].pdivy;\r
-  xofs=16-(oxw&15);\r
-  yofs=16-(oyw&15);\r
-  xtc=oxw>>4;\r
-  ytc=oyw>>4;\r
-\r
-  x1=selx1;\r
-  y1=sely1;\r
-  x2=selx2;\r
-  y2=sely2;\r
-\r
-  if (x2<x1) x2^=x1,x1^=x2,x2^=x1;\r
-  if (y2<y1) y2^=y1,y1^=y2,y2^=y1;\r
-\r
-  for (i=0; i<ty+1; i++)\r
-    for (j=0; j<tx+1; j++)\r
-    {\r
-      if (xtc+j >= x1 && xtc+j <= x2\r
-      && ytc+i >= y1 && ytc+i <= y2)\r
-      {\r
-        TCCopySprite((j*16)+xofs, (i*16)+yofs, 16,16, stipple);\r
-        //ColorGrid((j*16)+xofs,(i*16)+yofs,7);\r
-      }\r
-    }\r
-}\r
-\r
-void RenderMap()\r
-{ char *src;\r
-  //char rs[2];\r
-\r
-  curlayer=0;\r
-  src=rstring;\r
-\r
-  /*\r
-  rs[1]=0; // aen\r
-  for (; *src; ++src)\r
-  {\r
-    rs[0]=*src;\r
-    BlitLayer(atoi(rs) -1);\r
-  }\r
-  */\r
-  while (*src)\r
-  {\r
-    switch (*src)\r
-    {\r
-      case '1': BlitLayer(0); break;\r
-      case '2': BlitLayer(1); break;\r
-      case '3': BlitLayer(2); break;\r
-      case '4': BlitLayer(3); break;\r
-      case '5': BlitLayer(4); break;\r
-      case '6': BlitLayer(5); break;\r
-    }\r
-    src++;\r
-  }\r
-\r
-  if (!curlayer) memset(screen+5648,0,84480);\r
-  if (layertoggle[6]) DrawObstructions();\r
-  if (layertoggle[7]) DrawZones();\r
-  if (layertoggle[8]) DrawEntities();\r
-  if (shifted) DrawSelection();\r
-}\r
-\r
-void AnimateTile(char i, int l)\r
-{\r
-  switch (vspanim[i].mode)\r
-  {\r
-    case 0: if (tileidx[l]<vspanim[i].finish) tileidx[l]++;\r
-            else tileidx[l]=vspanim[i].start;\r
-            break;\r
-    case 1: if (tileidx[l]>vspanim[i].start) tileidx[l]--;\r
-            else tileidx[l]=vspanim[i].finish;\r
-            break;\r
-    case 2: tileidx[l]=random(vspanim[i].start,vspanim[i].finish);\r
-            break;\r
-    case 3: if (flipped[l])\r
-            {\r
-              if (tileidx[l]!=vspanim[i].start) tileidx[l]--;\r
-              else { tileidx[l]++; flipped[l]=0; }\r
-            }\r
-            else\r
-            {\r
-              if (tileidx[l]!=vspanim[i].finish) tileidx[l]++;\r
-              else { tileidx[l]--; flipped[l]=1; }\r
-            }\r
-  }\r
-}\r
-\r
-void Animate(char i)\r
-{ static int l;\r
-\r
-  vadelay[i]=0;\r
-  for (l=vspanim[i].start; l<=vspanim[i].finish; l++)\r
-    AnimateTile(i,l);\r
-}\r
-\r
-void CheckTileAnimation()\r
-{ static char i;\r
-\r
-  for (i=0; i<100; i++)\r
-      { if ((vspanim[i].delay) && (vspanim[i].delay<vadelay[i]))\r
-           Animate(i);\r
-        vadelay[i]++; }\r
-}\r
-\r
diff --git a/16/v2/source/verge/MAPED/RENDER.H b/16/v2/source/verge/MAPED/RENDER.H
deleted file mode 100755 (executable)
index 4e9c7bc..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef RENDER_INC\r
-#define RENDER_INC\r
-\r
-#define MAXTILES 10240\r
-\r
-extern int oxw, oyw;\r
-extern int xofs, yofs;\r
-extern int xtc, ytc;\r
-\r
-extern char curlayer;\r
-extern short tileidx[MAXTILES];\r
-extern char flipped[MAXTILES];\r
-\r
-extern short tileidx[MAXTILES];\r
-\r
-typedef struct\r
-{\r
-  char *frame;\r
-  int fx, fy;\r
-  int hx, hy;\r
-} chri;\r
-\r
-extern chri chrs[100];\r
-\r
-extern void DoCHR(int i);\r
-extern void DoCHRdealy();\r
-extern void BlitBackLayer(char l);\r
-extern void LucentBlitLayer(char l);\r
-extern void TransBlitLayer(char l);\r
-extern void BlitLayer(char c);\r
-extern void DrawObstructions();\r
-extern void DrawZones();\r
-extern void DrawEntities();\r
-extern void DrawSelection();\r
-extern void RenderMap();\r
-extern void AnimateTile(char i, int l);\r
-extern void Animate(char i);\r
-extern void CheckTileAnimation();\r
-\r
-#endif // RENDER_INC\r
diff --git a/16/v2/source/verge/MAPED/SMALFONT.C b/16/v2/source/verge/MAPED/SMALFONT.C
deleted file mode 100755 (executable)
index bbb0f8d..0000000
+++ /dev/null
@@ -1,655 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include <stdio.h>\r
-\r
-#include "vdriver.h"\r
-\r
-#define xx 31\r
-\r
-int fontx=0;\r
-int fonty=0;\r
-\r
-char sbA[]={3,\r
-            00,xx,00,\r
-            xx,00,xx,\r
-            xx,xx,xx,\r
-            xx,00,xx,\r
-            xx,00,xx};\r
-\r
-char ssA[]={3,\r
-            00,00,00,\r
-            00,xx,00,\r
-            xx,00,xx,\r
-            xx,xx,xx,\r
-            xx,00,xx};\r
-\r
-char sbB[]={3,\r
-            xx,xx,00,\r
-            xx,00,xx,\r
-            xx,xx,00,\r
-            xx,00,xx,\r
-            xx,xx,00};\r
-\r
-char ssB[]={3,\r
-            00,00,00,\r
-            xx,xx,00,\r
-            xx,xx,00,\r
-            xx,00,xx,\r
-            xx,xx,xx};\r
-\r
-char sbC[]={3,\r
-            00,xx,xx,\r
-            xx,00,00,\r
-            xx,00,00,\r
-            xx,00,00,\r
-            00,xx,xx};\r
-\r
-char ssC[]={3,\r
-            00,00,00,\r
-            00,xx,xx,\r
-            xx,00,00,\r
-            xx,00,00,\r
-            00,xx,xx};\r
-\r
-char sbD[]={3,\r
-            xx,xx,00,\r
-            xx,00,xx,\r
-            xx,00,xx,\r
-            xx,00,xx,\r
-            xx,xx,00};\r
-\r
-char ssD[]={3,\r
-            00,00,00,\r
-            xx,xx,00,\r
-            xx,00,xx,\r
-            xx,00,xx,\r
-            xx,xx,00};\r
-\r
-char sbE[]={3,\r
-            xx,xx,xx,\r
-            xx,00,00,\r
-            xx,xx,00,\r
-            xx,00,00,\r
-            xx,xx,xx};\r
-\r
-char ssE[]={3,\r
-            00,00,00,\r
-            xx,xx,xx,\r
-            xx,xx,00,\r
-            xx,00,00,\r
-            xx,xx,xx};\r
-\r
-char sbF[]={3,\r
-            xx,xx,xx,\r
-            xx,00,00,\r
-            xx,xx,00,\r
-            xx,00,00,\r
-            xx,00,00};\r
-\r
-char ssF[]={3,\r
-            00,00,00,\r
-            xx,xx,xx,\r
-            xx,00,00,\r
-            xx,xx,00,\r
-            xx,00,00};\r
-\r
-char sbG[]={3,\r
-            00,xx,xx,\r
-            xx,00,00,\r
-            xx,00,xx,\r
-            xx,00,xx,\r
-            00,xx,xx};\r
-\r
-char ssG[]={3,\r
-            00,00,00,\r
-            00,xx,xx,\r
-            xx,00,00,\r
-            xx,00,xx,\r
-            00,xx,xx};\r
-\r
-char sbH[]={3,\r
-            xx,00,xx,\r
-            xx,00,xx,\r
-            xx,xx,xx,\r
-            xx,00,xx,\r
-            xx,00,xx};\r
-\r
-char ssH[]={3,\r
-            00,00,00,\r
-            xx,00,xx,\r
-            xx,00,xx,\r
-            xx,xx,xx,\r
-            xx,00,xx};\r
-\r
-char sbI[]={1,\r
-            xx,\r
-            xx,\r
-            xx,\r
-            xx,\r
-            xx};\r
-\r
-char ssI[]={1,\r
-            00,\r
-            xx,\r
-            xx,\r
-            xx,\r
-            xx};\r
-\r
-char sbJ[]={3,\r
-            00,00,xx,\r
-            00,00,xx,\r
-            00,00,xx,\r
-            xx,00,xx,\r
-            00,xx,00};\r
-\r
-char ssJ[]={3,\r
-            00,00,00,\r
-            00,00,xx,\r
-            00,00,xx,\r
-            xx,00,xx,\r
-            00,xx,00};\r
-\r
-char sbK[]={3,\r
-            xx,00,xx,\r
-            xx,00,xx,\r
-            xx,xx,00,\r
-            xx,00,xx,\r
-            xx,00,xx};\r
-\r
-char ssK[]={3,\r
-            00,00,00,\r
-            xx,00,xx,\r
-            xx,xx,00,\r
-            xx,00,xx,\r
-            xx,00,xx};\r
-\r
-char sbL[]={3,\r
-            xx,00,00,\r
-            xx,00,00,\r
-            xx,00,00,\r
-            xx,00,00,\r
-            xx,xx,xx};\r
-\r
-char ssL[]={3,\r
-            00,00,00,\r
-            xx,00,00,\r
-            xx,00,00,\r
-            xx,00,00,\r
-            xx,xx,xx};\r
-\r
-char sbM[]={5,\r
-            xx,00,00,00,xx,\r
-            xx,xx,00,xx,xx,\r
-            xx,00,xx,00,xx,\r
-            xx,00,00,00,xx,\r
-            xx,00,00,00,xx};\r
-\r
-char ssM[]={5,\r
-            00,00,00,00,00,\r
-            xx,00,00,00,xx,\r
-            xx,xx,00,xx,xx,\r
-            xx,00,xx,00,xx,\r
-            xx,00,00,00,xx};\r
-\r
-char sbN[]={4,\r
-            xx,00,00,xx,\r
-            xx,xx,00,xx,\r
-            xx,00,xx,xx,\r
-            xx,00,00,xx,\r
-            xx,00,00,xx};\r
-\r
-char ssN[]={4,\r
-            00,00,00,00,\r
-            xx,00,00,xx,\r
-            xx,xx,00,xx,\r
-            xx,00,xx,xx,\r
-            xx,00,00,xx};\r
-\r
-char sbO[]={3,\r
-            00,xx,00,\r
-            xx,00,xx,\r
-            xx,00,xx,\r
-            xx,00,xx,\r
-            00,xx,00};\r
-\r
-char ssO[]={3,\r
-            00,00,00,\r
-            00,xx,00,\r
-            xx,00,xx,\r
-            xx,00,xx,\r
-            00,xx,00};\r
-\r
-char sbP[]={3,\r
-            xx,xx,00,\r
-            xx,00,xx,\r
-            xx,xx,00,\r
-            xx,00,00,\r
-            xx,00,00};\r
-\r
-char ssP[]={3,\r
-            00,00,00,\r
-            xx,xx,00,\r
-            xx,00,xx,\r
-            xx,xx,00,\r
-            xx,00,00};\r
-\r
-char sbQ[]={4,\r
-            00,xx,xx,00,\r
-            xx,00,00,xx,\r
-            xx,00,00,xx,\r
-            xx,00,xx,00,\r
-            00,xx,00,xx};\r
-\r
-char ssQ[]={3,\r
-            00,00,00,\r
-            xx,xx,00,\r
-            xx,00,xx,\r
-            xx,xx,00,\r
-            00,xx,xx};\r
-\r
-char sbR[]={3,\r
-            xx,xx,00,\r
-            xx,00,xx,\r
-            xx,xx,00,\r
-            xx,00,xx,\r
-            xx,00,xx};\r
-\r
-char ssR[]={3,\r
-            00,00,00,\r
-            xx,xx,00,\r
-            xx,00,xx,\r
-            xx,xx,00,\r
-            xx,00,xx};\r
-\r
-char sbS[]={3,\r
-            00,xx,xx,\r
-            xx,00,00,\r
-            00,xx,00,\r
-            00,00,xx,\r
-            xx,xx,00};\r
-\r
-char ssS[]={3,\r
-            00,00,00,\r
-            00,xx,xx,\r
-            xx,00,00,\r
-            00,xx,xx,\r
-            xx,xx,00};\r
-\r
-char sbT[]={3,\r
-            xx,xx,xx,\r
-            00,xx,00,\r
-            00,xx,00,\r
-            00,xx,00,\r
-            00,xx,00};\r
-\r
-char ssT[]={3,\r
-            00,00,00,\r
-            xx,xx,xx,\r
-            00,xx,00,\r
-            00,xx,00,\r
-            00,xx,00};\r
-\r
-char sbU[]={3,\r
-            xx,00,xx,\r
-            xx,00,xx,\r
-            xx,00,xx,\r
-            xx,00,xx,\r
-            xx,xx,xx};\r
-\r
-char ssU[]={3,\r
-            00,00,00,\r
-            xx,00,xx,\r
-            xx,00,xx,\r
-            xx,00,xx,\r
-            xx,xx,xx};\r
-\r
-char sbV[]={3,\r
-            xx,00,xx,\r
-            xx,00,xx,\r
-            xx,00,xx,\r
-            xx,00,xx,\r
-            00,xx,00};\r
-\r
-char ssV[]={3,\r
-            00,00,00,\r
-            xx,00,xx,\r
-            xx,00,xx,\r
-            xx,00,xx,\r
-            00,xx,00};\r
-\r
-char sbW[]={5,\r
-            xx,00,00,00,xx,\r
-            xx,00,00,00,xx,\r
-            xx,00,xx,00,xx,\r
-            xx,xx,00,xx,xx,\r
-            xx,00,00,00,xx};\r
-\r
-char ssW[]={5,\r
-            00,00,00,00,00,\r
-            xx,00,00,00,xx,\r
-            xx,00,xx,00,xx,\r
-            xx,xx,00,xx,xx,\r
-            xx,00,00,00,xx};\r
-\r
-char sbX[]={3,\r
-            xx,00,xx,\r
-            xx,00,xx,\r
-            00,xx,00,\r
-            xx,00,xx,\r
-            xx,00,xx};\r
-\r
-char ssX[]={3,\r
-            00,00,00,\r
-            xx,00,xx,\r
-            00,xx,00,\r
-            xx,00,xx,\r
-            xx,00,xx};\r
-\r
-char sbY[]={3,\r
-            xx,00,xx,\r
-            xx,00,xx,\r
-            00,xx,00,\r
-            00,xx,00,\r
-            00,xx,00};\r
-\r
-char ssY[]={3,\r
-            00,00,00,\r
-            xx,00,xx,\r
-            xx,00,xx,\r
-            00,xx,00,\r
-            00,xx,00};\r
-\r
-char sbZ[]={3,\r
-            xx,xx,xx,\r
-            00,00,xx,\r
-            00,xx,00,\r
-            xx,00,00,\r
-            xx,xx,xx};\r
-\r
-char ssZ[]={2,\r
-            00,00,\r
-            xx,xx,\r
-            00,xx,\r
-            xx,00,\r
-            xx,xx};\r
-\r
-char s1[]={1,\r
-           xx,\r
-           xx,\r
-           xx,\r
-           xx,\r
-           xx};\r
-\r
-char s2[]={3,\r
-           xx,xx,xx,\r
-           00,00,xx,\r
-           xx,xx,xx,\r
-           xx,00,00,\r
-           xx,xx,xx};\r
-\r
-char s3[]={3,\r
-           xx,xx,xx,\r
-           00,00,xx,\r
-           00,xx,xx,\r
-           00,00,xx,\r
-           xx,xx,xx};\r
-\r
-char s4[]={3,\r
-           xx,00,xx,\r
-           xx,00,xx,\r
-           xx,xx,xx,\r
-           00,00,xx,\r
-           00,00,xx};\r
-\r
-char s5[]={3,\r
-           xx,xx,xx,\r
-           xx,00,00,\r
-           xx,xx,xx,\r
-           00,00,xx,\r
-           xx,xx,xx};\r
-\r
-char s6[]={3,\r
-           xx,xx,xx,\r
-           xx,00,00,\r
-           xx,xx,xx,\r
-           xx,00,xx,\r
-           xx,xx,xx};\r
-\r
-char s7[]={3,\r
-           xx,xx,xx,\r
-           00,00,xx,\r
-           00,00,xx,\r
-           00,00,xx,\r
-           00,00,xx};\r
-\r
-char s8[]={3,\r
-           xx,xx,xx,\r
-           xx,00,xx,\r
-           xx,xx,xx,\r
-           xx,00,xx,\r
-           xx,xx,xx};\r
-\r
-char s9[]={3,\r
-           xx,xx,xx,\r
-           xx,00,xx,\r
-           xx,xx,xx,\r
-           00,00,xx,\r
-           xx,xx,xx};\r
-\r
-char s0[]={3,\r
-           xx,xx,xx,\r
-           xx,00,xx,\r
-           xx,00,xx,\r
-           xx,00,xx,\r
-           xx,xx,xx};\r
-\r
-char sQuote[]={3,\r
-               xx,00,xx,\r
-               xx,00,xx,\r
-               00,00,00,\r
-               00,00,00,\r
-               00,00,00};\r
-\r
-char sYow[]={1,\r
-             xx,\r
-             xx,\r
-             xx,\r
-             00,\r
-             xx};\r
-\r
-char sQuotes[]={1,\r
-                xx,\r
-                xx,\r
-                00,\r
-                00,\r
-                00};\r
-\r
-\r
-char sComma[]={2,\r
-               00,00,\r
-               00,00,\r
-               00,00,\r
-               00,xx,\r
-               xx,00};\r
-char sPeriod[]={1,\r
-                00,\r
-                00,\r
-                00,\r
-                00,\r
-                xx};\r
-\r
-char sMinus[]={2,\r
-               00,00,\r
-               00,00,\r
-               xx,xx,\r
-               00,00,\r
-               00,00};\r
-\r
-char sQuest[]={3,\r
-               xx,xx,xx,\r
-               00,00,xx,\r
-               00,xx,xx,\r
-               00,00,00,\r
-               00,xx,00};\r
-\r
-char sColon[]={1,\r
-               00,\r
-               xx,\r
-               00,\r
-               xx,\r
-               00};\r
-\r
-char sch[]={3,\r
-            00,xx,00,\r
-            xx,xx,xx,\r
-            xx,xx,xx,\r
-            xx,xx,xx,\r
-            00,xx,00};\r
-\r
-char usc[]={2,\r
-            00,00,\r
-            00,00,\r
-            00,00,\r
-            00,00,\r
-            xx,xx};\r
-\r
-char star[]={4,\r
-             00,00,00,xx,\r
-             xx,00,xx,00,\r
-             00,xx,00,00,\r
-             00,00,00,00,\r
-             00,00,00,00};\r
-\r
-char ss[]={2,\r
-           xx,xx,\r
-           xx,xx,\r
-           xx,xx,\r
-           xx,xx,\r
-           xx,xx};\r
-\r
-char sra[]={3,\r
-            xx,00,00,\r
-            xx,xx,00,\r
-            xx,xx,xx,\r
-            xx,xx,00,\r
-            xx,00,00};\r
-\r
-char slParen[]={2,\r
-                00,xx,\r
-                xx,00,\r
-                xx,00,\r
-                xx,00,\r
-                00,xx};\r
-\r
-char srParen[]={2,\r
-                xx,00,\r
-                00,xx,\r
-                00,xx,\r
-                00,xx,\r
-                xx,00};\r
-\r
-char ssemic[]={2,\r
-               xx,xx,\r
-               00,00,\r
-               xx,xx,\r
-               00,xx,\r
-               xx,00};\r
-\r
-char sSlash[]={3,\r
-               00,00,xx,\r
-               00,00,xx,\r
-               00,xx,00,\r
-               xx,00,00,\r
-               xx,00,00};\r
-\r
-char sBlank[]={2,\r
-               00,00,\r
-               00,00,\r
-               00,00,\r
-               00,00,\r
-               00,00};\r
-\r
-// ...\r
-char mousepic[] = { xx,00,00,00,\r
-                    xx,xx,00,00,\r
-                    xx,xx,xx,00,\r
-                    xx,xx,xx,xx,\r
-                    00,00,xx,00,\r
-                    00,00,xx,00};\r
-\r
-char *smal_tbl[]=\r
-{  sBlank,\r
-   sYow,  sQuote,      ss,      ss,     ss,     ss, sQuotes, slParen,  // 40\r
- srParen,    star,      ss,  sComma, sMinus,sPeriod,  sSlash,      s0,  // 48\r
-      s1,      s2,      s3,      s4,     s5,     s6,      s7,      s8,  // 56\r
-      s9,  sColon,  ssemic,      ss,     ss,    sra,  sQuest,      ss,  // 64\r
-     sbA,     sbB,     sbC,     sbD,    sbE,    sbF,     sbG,     sbH,  // 72\r
-     sbI,     sbJ,     sbK,     sbL,    sbM,    sbN,     sbO,     sbP,  // 80\r
-     sbQ,     sbR,     sbS,     sbT,    sbU,    sbV,     sbW,     sbX,  // 88\r
-     sbY,     sbZ,      ss,      ss,     ss,     ss,     usc,     sch,  // 96\r
-     ssA,     ssB,     ssC,     ssD,    ssE,    ssF,     ssG,     ssH,  // 102\r
-     ssI,     ssJ,     ssK,     ssL,    ssM,    ssN,     ssO,     ssP,  // 110\r
-     ssQ,     ssR,     ssS,     ssT,    ssU,    ssV,     ssW,     ssX,  // 118\r
-     ssY,     ssZ };                                                    // 120\r
-\r
-unsigned char lastcol=31;\r
-\r
-void GotoXY(int x1, int y1)\r
-{\r
-  fontx=x1;\r
-  fonty=y1;\r
-}\r
-\r
-void print_char(char c)\r
-{ char* img;\r
-\r
-  c-=32;\r
-  if (c>90) c=2;\r
-  img=smal_tbl[c];\r
-  TCopySprite(fontx,fonty,img[0],5,img+1);\r
-  fontx+=img[0]+1;\r
-}\r
-\r
-void printstring(char *str)\r
-{\r
-  for (; *str; ++str)\r
-    print_char(*str);\r
-}\r
-\r
-int pixels(char *str)\r
-{ int pix;\r
-\r
-  for (pix=0; *str; ++str)\r
-    pix += *smal_tbl[*str-32]+1;\r
-  return pix;\r
-}\r
-\r
-void dec_to_asciiz(int num, char *buf)\r
-{\r
-  sprintf(buf,"%d",num);\r
-}\r
-\r
-void TextColor(unsigned char newc)\r
-{ char *src;\r
-\r
-  src=sbA;\r
-  while ((int)src < (int) smal_tbl)\r
-  {\r
-    if (*src==lastcol) *src=newc;\r
-    src++;\r
-  }\r
-}\r
diff --git a/16/v2/source/verge/MAPED/SMALFONT.H b/16/v2/source/verge/MAPED/SMALFONT.H
deleted file mode 100755 (executable)
index 7768853..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef SMALFONT_INC\r
-#define SMALFONT_INC\r
-\r
-extern int fontx;\r
-extern int fonty;\r
-\r
-extern void GotoXY(int x1, int y1);\r
-extern void print_char(char c);\r
-extern void printstring(char *str);\r
-extern int  pixels(char *str);\r
-extern void dec_to_asciiz(int num, char *buf);\r
-extern void TextColor(unsigned char newc);\r
-\r
-#endif // SMALFONT_INC\r
diff --git a/16/v2/source/verge/MAPED/SSAVER.C b/16/v2/source/verge/MAPED/SSAVER.C
deleted file mode 100755 (executable)
index b2ce0a5..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include <math.h>\r
-#include <malloc.h>\r
-#include <string.h>\r
-\r
-#include "maped.h"\r
-#include "timer.h"\r
-#include "vdriver.h"\r
-\r
-#include "mouse.h"\r
-\r
-// ================================= Data ====================================\r
-\r
-static int *dmapx = NULL;\r
-static int *dmapy = NULL;\r
-static unsigned char *dscr = NULL;\r
-static int recalc_distort = 1;\r
-static long build = 0;\r
-\r
-// ================================= Code ====================================\r
-\r
-// aen\r
-static void init_distort(void)\r
-  {\r
-  int x = 0;\r
-  int y = 0;\r
-  int *dx = NULL;\r
-  int *dy = NULL;\r
-\r
-  if (dmapx) vfree(dmapx); dmapx=NULL;\r
-  if (dmapy) vfree(dmapy); dmapy=NULL;\r
-  if (dscr) vfree(dscr); dscr=NULL;\r
-\r
-  // allocate distort lookups\r
-  dmapx = (int *) valloc(tsx*tsy*4,"ssaver X",0);\r
-  dmapy = (int *) valloc(tsx*tsy*4,"ssaver Y",0);\r
-\r
-  // allocate distort image buffer\r
-  dscr = (unsigned char *) valloc(tsx*tsy,"ssaver scrn",0);\r
-\r
-  // copy viewport into distort buffer\r
-  memcpy(dscr, screen, tsx*tsy);\r
-\r
-  dx = dmapx;\r
-  dy = dmapy;\r
-\r
-  // generate distort lookups\r
-  for (y=0; y<tsy; ++y) {\r
-    for (x=0; x<tsx; ++x) {\r
-      *dx++ = sin(y*5*(360.0/tsy)*(3.14/180))*10;\r
-      *dy++ = sin(x*5*(360.0/tsx)*(3.14/180))*10;\r
-      }\r
-    }\r
-  }\r
-\r
-// aen\r
-static void do_distort(void)\r
-  {\r
-  unsigned char *ds=NULL;\r
-  int x=0;\r
-  int y=0;\r
-  static int xt=0;\r
-  static int yt=0;\r
-  int xx=0;\r
-  int yy=0;\r
-  static int thresh=0;\r
-\r
-  if (recalc_distort) {\r
-    init_distort();\r
-    recalc_distort=0;\r
-    }\r
-\r
-  ds=screen; //+(tsx*16)+16;\r
-\r
-  do {\r
-    yy = (y+thresh);\r
-    if (yy >= tsy) yy -= tsy;\r
-    xt += (dmapx[(yy*tsx)+x] * build) >> 16;\r
-\r
-    xx = (x+((thresh*tsx)/tsy));\r
-    if (xx >= tsx) xx -= tsx;\r
-    yt += (dmapy[(yy*tsx)+xx] * build) >> 16;\r
-\r
-    if (xt < 0) xt += tsx;\r
-    if (yt < 0) yt += tsy;\r
-    if (xt >= tsx) xt -= tsx;\r
-    if (yt >= tsy) yt -= tsy;\r
-\r
-    *ds++ = dscr[(yt*tsx)+xt];\r
-\r
-    ++x;\r
-    if (x >= tsx) {\r
-      x = 0;\r
-      ++y;\r
-      //ds+=32;\r
-      }\r
-\r
-    xt = x;\r
-    yt = y;\r
-\r
-    } while (y < tsy);\r
-\r
-  thresh += 2;\r
-  if (thresh >= tsy)\r
-    thresh -= tsy;\r
-\r
-  if (build < 85196) //1.5\r
-    build += 3276;\r
-  }\r
-\r
-void ScreenSaver(void)\r
-  {\r
-  while (idlect > 750)\r
-    {\r
-    ReadMouse();\r
-    do_distort();\r
-    ShowPage();\r
-    }\r
-  recalc_distort=1;\r
-  build = 0;\r
-  }\r
diff --git a/16/v2/source/verge/MAPED/SSAVER.H b/16/v2/source/verge/MAPED/SSAVER.H
deleted file mode 100755 (executable)
index 1a6a529..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef SSAVER_INC\r
-#define SSAVER_INC\r
-\r
-extern void ScreenSaver(void);\r
-\r
-#endif // SSAVER_INC\r
diff --git a/16/v2/source/verge/MAPED/SSAVER1.C b/16/v2/source/verge/MAPED/SSAVER1.C
deleted file mode 100755 (executable)
index 2e1846c..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include "timer.h"\r
-#include "vdriver.h"\r
-\r
-// ================================= Data ====================================\r
-\r
-// ================================= Code ====================================\r
-\r
-void ScreenSaver()\r
-{\r
-  while (idlect>750)\r
-  {\r
-    ReadMouse();\r
-    ClearScreen();\r
-    ShowPage();\r
-  }\r
-}\r
diff --git a/16/v2/source/verge/MAPED/TILEED.C b/16/v2/source/verge/MAPED/TILEED.C
deleted file mode 100755 (executable)
index 807f67c..0000000
+++ /dev/null
@@ -1,2164 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-// Additional code by Richard Lau (aka Ric)\r
-\r
-/* Date started: 08/Jul/98 */\r
-/* -- 29/Jul/98 --\r
- * Heh, I've actually done quite a lot of work on this even though I intend\r
- * to replace it. Oh well :)\r
- *\r
- * I've now made clicking on the mask indicator button (labelled with a small\r
- * "m") drop back to draw mode if you're in select mode (since it makes no\r
- * sense to select an area with the mask turned off). Holding down shift\r
- * and dragging the mouse when you're in select mode will allow you to select\r
- * a rectangle. The PgUp/PgDn colour shifters will now work in paste mode\r
- * (affecting the image in the copy buffer).\r
- *\r
- * The fill routine is now in place and I've put a button in for the pick\r
- * colour/eyedropper tool so that I don't get asked to put in a function for\r
- * like I continuously did with ACE. Due to the extra buttons I've had to\r
- * shift some of the other buttons around to make them all fit onto the\r
- * screen. It's probably not the best arrangement but if anyone comes up with\r
- * a better layout I'm open to suggestions.\r
- *\r
- * The wierd button labelling problem I had last time has been corrected - the\r
- * problem was traced back to the pixels routine in SMALFONT.C. Aen pointed\r
- * out that I wasn't allocating space for the NULL terminator for all the\r
- * strings so that has now been fixed (by adding 1 to strlen).\r
- *\r
- * - Ric\r
- */\r
-/*\r
- * Keys:\r
- *      CTRL/S + mouse click - (over edit window) Pick up colour under mouse\r
- *      SHIFT+mb down+drag mouse - select rectangle (select mode only)\r
- *      SPACEBAR    - toggle between draw mode and select mode\r
- *      CTRL+Z or U - one level undo\r
- *      CTRL+A      - select all\r
- *      CTRL+U      - unselect all\r
- *      CTRL+C      - copy selected area\r
- *      CTRL+X      - cut selected area\r
- *      CTRL+V      - paste\r
- *      DEL         - clears selected area\r
- *      CTRL+R      - reverts the tile to the original (like undo in maped 1)\r
- *                    (self note: modify to ask for confirmation)\r
- *      G           - toggles grid on/off\r
- *      H           - toggles hilight on/off\r
- *      M           - toggles mask on/off\r
- *      I           - inverts mask\r
- *      X           - mirrors image\r
- *      Y           - flips image\r
- *      L/R         - Rotates tile 90 degrees anti-clockwise/clockwise\r
- *      Q/W         - Steps through animation (in tile edit mode) if any\r
- *      A/Z and S/X - changes the left or right drawing colours\r
- *      PGUP/PGDN   - Colour shift up/down\r
- *      [ and ]     - toggle screen resolutions\r
- *      ALT+X       - quits to DOS\r
- */\r
-/* -- 26/Jul/98 --\r
- * I've actually decided to start the editor over in a new file so that the\r
- * code is a bit more elegant. As it stands some bits of this are messy but\r
- * it currently works ;). Anyway I've decided that what I'll do is to in\r
- * effect write two tile editors - continuing work on this one and working\r
- * on the rewrite as a "side project". The eventual aim will be to replace\r
- * this editor with the rewrite but if factors intervene preventing me from\r
- * completing the rewrite then there'll always be this editor to fall back on.\r
- *\r
- * New in this release is a copy/cut/paste system. New buttons have been added.\r
- * For some reason I haven't figured out yet I can't call the two rotate\r
- * buttons "Rotate ACW" and "Rotate CW" (it causes MapEd to crash) so I've had\r
- * to resort to calling them "Turn_L" and "Turn_R".\r
- * - Ric\r
- */\r
-\r
-#include <string.h>\r
-#include <malloc.h>\r
-\r
-#include "config.h"\r
-#include "guicomp.h"\r
-#include "keyboard.h"\r
-#include "maped.h"\r
-#include "mouse.h"\r
-#include "render.h"\r
-#include "vdriver.h"\r
-\r
-#include "smalfont.h"\r
-\r
-#undef free\r
-\r
-#define TRUE  1\r
-#define FALSE 0\r
-// #define NULL ((void *)0)\r
-\r
-#define MOUSENONE    0    // No mouse buttons pressed\r
-#define MOUSERELEASE 1    // Mouse button released\r
-#define MOUSEPRESSED 2    // Mouse button held down\r
-#define MOUSECLICKED 4    // Mouse button pressed\r
-\r
-// Setup some defines for the regions/areas/windows where everything goes\r
-#define MAX_REGIONS 29    // Number of regions\r
-#define BASEREG 0         // Window coords + title\r
-#define HELPBAR 1         // Helpbar - put helpful messages here :)\r
-#define PALETTE 2         // The palette\r
-#define EDITREG 3         // Main edit window\r
-#define PREVIEW 4         // Preview of image being edited\r
-#define SCOLBOX 5         // Selected colour box\r
-#define SCTXTBX 6         // Text box to show info on the selected colours\r
-#define QUITBUT 7         // Quit button\r
-#define DRAWBUT 8         // Draw mode indicator\r
-#define FILLBUT 9         // Fill mode indicator\r
-#define PICKBUT 10        // Pick mode indicator\r
-#define MASKBUT 11        // Mask mode indicator\r
-#define PSTEBUT 12        // Paste mode indicator\r
-#define EDMDFRM 13        // Frame for edit mode radio buttons\r
-#define MASKIND 14        // Indicator showing if mask is shown\r
-#define GRIDIND 15        // Indicator showing if grid is shown\r
-#define ANIMIND 16        // Indicator showing if animations are shown\r
-#define PXHLIND 17        // Indicator showing if pixel highlight shown\r
-#define IND_FRM 18        // Frame for indicators (push buttons)\r
-#define BUT_FRM 19        // Frame for buttons\r
-#define UNDOBUT 20        // Undo button\r
-#define COPYBUT 21        // Copy button\r
-#define CUT_BUT 22        // Cut button\r
-#define CLR_BUT 23        // Clear button\r
-#define TOOLFRM 24        // Frame for tools\r
-#define FLIPBUT 25        // Flip image button\r
-#define MIRRBUT 26        // Mirror image button\r
-#define RIACBUT 27        // Rotate anticlockwise button\r
-#define RIC_BUT 28        // Rotate clockwise button\r
-\r
-// Define TEbitflags values\r
-#define TEQUITCUR 1\r
-#define TEANIMATE 2\r
-#define TEGRID    4\r
-#define TEHILIGHT 8\r
-#define TESHOWMSK 16\r
-\r
-// Define TEREGION->bitflags values\r
-#define REGVISIBLE  1\r
-#define REGACTIVE   2\r
-#define REGNOCLICK  4\r
-#define REGTWOCLICK 8          // wait for a second click\r
-\r
-// TEeditmode defs\r
-#define EDDRAW  1\r
-#define EDFILL  2\r
-#define EDPICK  4\r
-#define EDMASK  8\r
-#define EDPASTE 16\r
-\r
-// TEtype defs\r
-#define TEUNKNOWN 0\r
-#define TETILE    1\r
-\r
-// DATABUTTON buttontypes:\r
-#define CLICKBUTTON 1          // normal button\r
-#define PUSHBUTTON  2          // can be pushed in/out (toggle bit bitvalue)\r
-#define RADIOBUTTON 4          // for button banks (set *bitflag=bitvalue)\r
-\r
-// DATABASEREGION windowtypes:\r
-#define DBRSTDWINDOW 0         // window and title bar\r
-#define DBRPANEL     1         // no title bar\r
-\r
-// INFOTYPEs:\r
-#define DITREGION     1\r
-#define DITBASEREGION 2\r
-#define DITBUTTON     4\r
-#define DITEDITREG    8\r
-\r
-// Button flag action - has this button been clicked?\r
-#define BFANONE   0\r
-#define BFAUNDO   1\r
-#define BFACOPY   2\r
-#define BFACUT    4\r
-#define BFACLEAR  8\r
-#define BFARIAC   16\r
-#define BFARIC    32\r
-#define BFAMIRROR 64\r
-#define BFAFLIP   128\r
-\r
-// Variables\r
-typedef struct TEREGION\r
-  {\r
-  int infotype;                 // type of struct\r
-  unsigned int x1, x2, y1, y2;  // bounding coordinates\r
-  char *caption;                // helpbar text\r
-  int bitflags;                 // see defines above\r
-  void (*drawproc)(struct TEREGION *);  // region's draw procedure\r
-                                        // - allows nice and short RenderTileEdit proc ;)\r
-  void *data;        // extended information\r
-  } TEREGION;\r
-typedef struct DATABASEREGION\r
-  {\r
-  int infotype;                 // type of struct\r
-  int numofregs;                // total number of regions (including base)\r
-  int windowtype;               // type of window to draw\r
-  } DATABASEREGION;\r
-typedef struct DATABUTTON\r
-  {\r
-  int infotype;                 // type of struct\r
-  int *bitflag;                 // address of bitflag\r
-  char *text;                   // addition text (eg helptext)\r
-  int bitvalue;                 // 1st bit/value\r
-  int buttontype;               // type\r
-  } DATABUTTON;\r
-typedef struct DATAEDITREG\r
-  {\r
-  int infotype;                 // type of struct\r
-  int firstx, firsty;           // first coords for two-click operation\r
-  } DATAEDITREG;\r
-\r
-\r
-static TEREGION *TEregs=NULL;       // pointer to the regions\r
-static unsigned char lcolor=255;    // left  mouse colour\r
-static unsigned char rcolor=0;      // right mouse colour\r
-static TEREGION *TEOldReg=NULL;\r
-static unsigned int MBStatus[3]={MOUSENONE,MOUSENONE,MOUSENONE};\r
-static int TEanimstrand=0;        // Animation strand\r
-static int TEbitflags=TEANIMATE;  // Set default bitflags\r
-static int TEbfa=BFANONE;         // Set default button action flags\r
-static int TEeditmode=EDDRAW;     // Default edit region mode\r
-static int TExoffs=16;            // X offset for region "windows"\r
-static int TEyoffs=16;            // Y offset for region "windows"\r
-unsigned int TEtype=TEUNKNOWN;    // type of graphic being edited\r
-unsigned int TEtile; // tile to edit - may possibly expand this to an array for simultaneous editing\r
-unsigned int TExsize=0;   // width of graphic being edited\r
-unsigned int TEysize=0;   // height of graphic being edited\r
-unsigned int TEcopyxsize=0;   // width of copy buffer\r
-unsigned int TEcopyysize=0;   // height of copy buffer\r
-unsigned char *TEsource=NULL; // pointer to original image being edited\r
-static unsigned char *TEimage=NULL;  // pointer to image being edited\r
-static unsigned char *TEmask=NULL;   // pointer to image mask\r
-static unsigned char *TEundo=NULL;   // pointer to undo buffer\r
-static unsigned char *TEcopy=NULL;   // pointer to copy buffer\r
-static unsigned char *TEcmsk=NULL;   // pointer to copy mask\r
-static char TEtempstr[256];          // Temporary string buffer\r
-\r
-// Function prototypes\r
-static void *TEAlloc(unsigned long amount, char *whatfor);\r
-\r
-#define TEFree(ptr) if (ptr) free(ptr); ptr=NULL;\r
-#define TEFreeReg(ptr) DestroyRegions(&ptr); if (ptr) free(ptr); ptr=NULL;\r
-#define TENewText(text, whatfor) (char *) strcpy(TEAlloc(strlen(text)+1, whatfor), text);\r
-//static void TEFree(void *TETmpBuf);\r
-static void MBClickHandler(TEREGION *TEBaseReg);\r
-static void AboutTE(void);\r
-static void DestroyRegions(TEREGION **TEBaseReg);\r
-static void SetupRegions(void);\r
-static void InitTEImage(void);\r
-static void DeinitTEImage(void);\r
-static int  MouseOverTEreg(TEREGION *TEr);\r
-static void RenderTileEdit(TEREGION *TEBaseReg);\r
-static void RestartTileEditor(void);\r
-static void SetCaption(TEREGION *TEr, char *helptext);\r
-static void TEDrawHilight(int x1, int y1, int width, int height, unsigned char colour);\r
-static void TEDrawCheckeredBox(int x1, int y1, int width, int height, unsigned char colour);\r
-static void TERegFill(TEREGION *TEr, int colour);\r
-static void TERegText(TEREGION *TEr, char *message);\r
-static void TEClearImage(void);\r
-static void TECopyImage(void);\r
-static void TEFlipImage(unsigned char *TERILsrc, int TERILxsize, int TERILysize);\r
-static void TEMirrorImage(unsigned char *TERILsrc, int TERILxsize, int TERILysize);\r
-static void TERotateImageAntiClockwise(unsigned char *TERILsrc, int TERILxsize, int TERILysize);\r
-static void TERotateImageClockwise(unsigned char *TERILsrc, int TERILxsize, int TERILysize);\r
-static void TEFillImage(char *TEFIimage, char *TEFImask, int TEFIxsize, int TEFIysize, int TEFIx, int TEFIy, char TEFIcolour);\r
-static void TERFillImage(char *TERFIimage, char *TERFImask, int TERFIxsize, int TERFIysize, int TERFIx, int TERFIy);\r
-static void TEShiftColours(char *TESCimage, char *TESCmask, int TESCxsize, int TESCysize, int amount);\r
-static void TEUndo(void);\r
-static void DrawButton(TEREGION *TEr);\r
-static void DrawEditReg(TEREGION *TEr);\r
-static void DrawHelpBar(TEREGION *TEr);\r
-static void DrawPalette(TEREGION *TEr);\r
-static void DrawPreview(TEREGION *TEr);\r
-static void DrawSColBox(TEREGION *TEr);\r
-static void DrawSCTxtBx(TEREGION *TEr);\r
-static void DrawSunkRegion(TEREGION *TEr);\r
-void TileEdit(void);\r
-\r
-\r
-static int MouseOverTEreg(TEREGION *TEr)\r
-  {\r
-  unsigned int testx=mx-TExoffs;\r
-  unsigned int testy=my-TEyoffs;\r
-  unsigned int width=(TEr->x2)-(TEr->x1);\r
-  unsigned int height=(TEr->y2)-(TEr->y1);\r
-  testx-=(TEr->x1);\r
-  testy-=(TEr->y1);\r
-\r
-  if (testx >= width || testy >= height) return FALSE;\r
-  return TRUE;\r
-  }\r
-\r
-static void DrawButton(TEREGION *TEr)\r
-// -- ric: 20/Jul/98 - generic button routine\r
-  {\r
-  unsigned int x=TEr->x1+TExoffs;\r
-  unsigned int y=TEr->y1+TEyoffs;\r
-  unsigned int width=(TEr->x2)-(TEr->x1);\r
-  unsigned int height=(TEr->y2)-(TEr->y1);\r
-\r
-  strcpy(TEtempstr,"Button data not declared.");\r
-  if (!TEr->data)\r
-    err(TEtempstr);\r
-  if (((struct DATABUTTON *)(TEr->data))->infotype!=DITBUTTON)\r
-    err(TEtempstr);\r
-\r
-  // draw raised button\r
-  stdwindow(x-1, y-1, x+width+1, y+height+1);\r
-  if (TEr->caption)\r
-    {\r
-    GotoXY(x+(width-(pixels(TEr->caption)))/2, y+(height-6)/2);\r
-    printstring(TEr->caption);\r
-    }\r
-  switch (((struct DATABUTTON *)(TEr->data))->buttontype)\r
-    {\r
-    case CLICKBUTTON:\r
-      if (MouseOverTEreg(TEr) && TEr->bitflags&REGACTIVE)\r
-        {\r
-        if (((struct DATABUTTON *)(TEr->data))->text)\r
-          SetCaption(&TEregs[HELPBAR], (((struct DATABUTTON *)(TEr->data))->text));\r
-\r
-        // Handle mouse clicks\r
-        if (TEOldReg==TEr)\r
-          {\r
-          if ((MBStatus[0]|MBStatus[1])==MOUSEPRESSED)\r
-            {\r
-            // draw button down\r
-            FilledBox(x, y, width, height, winbg);\r
-            HLine(x, y, width, darkw);\r
-            VLine(x, y, height, darkw);\r
-            if (TEr->caption)\r
-              {\r
-              GotoXY(x+1+(width-(pixels(TEr->caption)))/2, y+1+(height-6)/2);\r
-              printstring(TEr->caption);\r
-              }\r
-            }\r
-          if ((MBStatus[0]|MBStatus[1])==MOUSERELEASE)\r
-            {\r
-            *(((struct DATABUTTON *)(TEr->data))->bitflag)^=((struct DATABUTTON *)(TEr->data))->bitvalue;\r
-            }\r
-          }\r
-        }\r
-      break;\r
-    case PUSHBUTTON:\r
-      if (*(((struct DATABUTTON *)(TEr->data))->bitflag)&(((struct DATABUTTON *)(TEr->data))->bitvalue))\r
-        {\r
-        // draw button down\r
-        FilledBox(x, y, width, height, winbg);\r
-        HLine(x, y, width, darkw);\r
-        VLine(x, y, height, darkw);\r
-        if (TEr->caption)\r
-          {\r
-          GotoXY(x+1+(width-(pixels(TEr->caption)))/2, y+1+(height-6)/2);\r
-          printstring(TEr->caption);\r
-          }\r
-        }\r
-      if (MouseOverTEreg(TEr) && TEr->bitflags&REGACTIVE)\r
-        {\r
-        if (((struct DATABUTTON *)(TEr->data))->text)\r
-          {\r
-          sprintf(TEtempstr, "Toggle %s on/off", ((struct DATABUTTON *)(TEr->data))->text);\r
-          SetCaption(&TEregs[HELPBAR], TEtempstr);\r
-          }\r
-\r
-        // Handle mouse clicks\r
-        if (TEOldReg==TEr)\r
-          {\r
-          if ((MBStatus[0]|MBStatus[1])==MOUSECLICKED)\r
-            {\r
-            *(((struct DATABUTTON *)(TEr->data))->bitflag)^=((struct DATABUTTON *)(TEr->data))->bitvalue;\r
-            }\r
-          }\r
-        }\r
-      break;\r
-    case RADIOBUTTON:\r
-      if (*(((struct DATABUTTON *)(TEr->data))->bitflag)==((struct DATABUTTON *)(TEr->data))->bitvalue)\r
-        {\r
-        // draw button down\r
-        FilledBox(x, y, width, height, winbg);\r
-        HLine(x, y, width, darkw);\r
-        VLine(x, y, height, darkw);\r
-        if (TEr->caption)\r
-          {\r
-          GotoXY(x+1+(width-(pixels(TEr->caption)))/2, y+1+(height-6)/2);\r
-          printstring(TEr->caption);\r
-          }\r
-        }\r
-      if (MouseOverTEreg(TEr) && TEr->bitflags&REGACTIVE)\r
-        {\r
-        if (((struct DATABUTTON *)(TEr->data))->text)\r
-          SetCaption(&TEregs[HELPBAR], (((struct DATABUTTON *)(TEr->data))->text));\r
-\r
-        // Handle mouse clicks\r
-        if (TEOldReg==TEr)\r
-          {\r
-          if ((MBStatus[0]|MBStatus[1])==MOUSECLICKED)\r
-            {\r
-            *(((struct DATABUTTON *)(TEr->data))->bitflag)=((struct DATABUTTON *)(TEr->data))->bitvalue;\r
-            }\r
-          }\r
-        }\r
-      break;\r
-    }\r
-  }\r
-\r
-static void DrawSunkRegion(TEREGION *TEr)\r
-  {\r
-  unsigned int x=TEr->x1+TExoffs;\r
-  unsigned int y=TEr->y1+TEyoffs;\r
-  unsigned int width=(TEr->x2)-(TEr->x1);\r
-  unsigned int height=(TEr->y2)-(TEr->y1);\r
-\r
-//  FilledBox(x, y, width, height, black);\r
-  HLine(x, y, width, darkw);\r
-  VLine(x, y, height, darkw);\r
-  HLine(x+1, y+height-1, width-1, brightw);\r
-  VLine(x+width-1, y+1, height-1, brightw);\r
-  }\r
-\r
-static void DrawEditReg(TEREGION *TEr)\r
-  {\r
-  int i,j,i2,j2,c;\r
-  int minx,miny,maxx,maxy;\r
-  int blocksize=8;\r
-  int visblocksize=blocksize;\r
-  char *img;\r
-  TEREGION tempr;\r
-  tempr.x1=TEr->x1+2;\r
-  tempr.x2=TEr->x2-2;\r
-  tempr.y1=TEr->y1+2;\r
-  tempr.y2=TEr->y2-2;\r
-\r
-  img=TEimage; //vsp+(256*TEtile);\r
-\r
-  TERegFill(TEr, black);\r
-  DrawSunkRegion(TEr);\r
-  FilledBox(TEr->x1+TExoffs+2, TEr->y1+TEyoffs+2, (blocksize<<4), (blocksize<<4), titlebg);\r
-\r
-  if (TEbitflags&TEGRID) visblocksize-=1;\r
-\r
-  for (j=0; j<TEysize; j++)\r
-    for (i=0; i<TExsize; i++)\r
-      {\r
-      FilledBox(TEr->x1+TExoffs+2+i*blocksize, TEr->y1+TEyoffs+2+j*blocksize, visblocksize, visblocksize, *img++);\r
-      if (TEbitflags&TESHOWMSK && !TEmask[j*TExsize+i])\r
-        TEDrawCheckeredBox(TEr->x1+TExoffs+2+i*blocksize, TEr->y1+TEyoffs+2+j*blocksize, visblocksize, visblocksize, titlebg);\r
-      }\r
-\r
-  img=TEimage;\r
-  if (TEr->bitflags&REGACTIVE && !(MouseOverTEreg(&tempr)) && (MBStatus[0]|MBStatus[1])==MOUSERELEASE)\r
-    if (TEr->bitflags&REGTWOCLICK) TEr->bitflags^=REGTWOCLICK;\r
-  if (MouseOverTEreg(&tempr) && TEr->bitflags&REGACTIVE)\r
-    {\r
-    i=(mx-TExoffs-(tempr.x1))/blocksize;\r
-    j=(my-TEyoffs-(tempr.y1))/blocksize;\r
-    c=img[(j*TExsize)+i];\r
-    sprintf(TEtempstr, "Tile: %d, (%02d, %02d), Color: %03d (rgb: %03d/%03d/%03d)", TEtile, i, j, c, pal[(c*3)], pal[(c*3)+1], pal[(c*3)+2]);\r
-    SetCaption(&TEregs[HELPBAR], TEtempstr);\r
-    if (TEbitflags&TEHILIGHT)\r
-      TEDrawHilight(TExoffs+i*blocksize+tempr.x1, TEyoffs+j*blocksize+tempr.y1, visblocksize, visblocksize, white);\r
-\r
-    // if pasting draw the image being pasted\r
-    if (TEeditmode==EDPASTE)\r
-      {\r
-      for (j2=0; j2<TEcopyysize; j2++)\r
-        if ((j+j2)<TEysize)\r
-          for (i2=0; i2<TEcopyxsize; i2++)\r
-            if ((i+i2)<TExsize)\r
-              if (TEcmsk[j2*TEcopyxsize+i2])\r
-                if (!(TEbitflags&TESHOWMSK))\r
-                  FilledBox(TEr->x1+TExoffs+2+(i+i2)*blocksize, TEr->y1+TEyoffs+2+(j+j2)*blocksize, visblocksize, visblocksize, TEcopy[j2*TEcopyxsize+i2]);\r
-                else\r
-                  if (TEmask[(j+j2)*TExsize+i+i2])\r
-                    FilledBox(TEr->x1+TExoffs+2+(i+i2)*blocksize, TEr->y1+TEyoffs+2+(j+j2)*blocksize, visblocksize, visblocksize, TEcopy[j2*TEcopyxsize+i2]);\r
-      }\r
-    if (TEeditmode==EDMASK)\r
-      {\r
-      // draw reg\r
-      if (TEr->bitflags&REGTWOCLICK)\r
-        for (j2=0; j2<TEysize; j2++)\r
-          for (i2=0; i2<TEysize; i2++)\r
-            if (((j2>=j && j2<=((struct DATAEDITREG *)(TEr->data))->firsty) ||\r
-                (j2>=((struct DATAEDITREG *)(TEr->data))->firsty && j2<=j)) &&\r
-                ((i2>=i && i2<=((struct DATAEDITREG *)(TEr->data))->firstx) ||\r
-                (i2>=((struct DATAEDITREG *)(TEr->data))->firstx && i2<=i)))\r
-              TEDrawCheckeredBox(TEr->x1+TExoffs+2+i2*blocksize, TEr->y1+TEyoffs+2+j2*blocksize, visblocksize, visblocksize, darkred);\r
-\r
-      if ((MBStatus[0]|MBStatus[1])==MOUSECLICKED && (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) && !(TEr->bitflags&REGTWOCLICK))\r
-        {\r
-        ((struct DATAEDITREG *)(TEr->data))->firstx=i;\r
-        ((struct DATAEDITREG *)(TEr->data))->firsty=j;\r
-        TEr->bitflags^=REGTWOCLICK;\r
-        }\r
-      if ((MBStatus[0]|MBStatus[1])==MOUSERELEASE && TEr->bitflags&REGTWOCLICK)\r
-        {\r
-        if (MBStatus[1]==MOUSERELEASE) c=0x0;\r
-        else c=0xf;\r
-        miny=j;\r
-        maxy=((struct DATAEDITREG *)(TEr->data))->firsty;\r
-        minx=i;\r
-        maxx=((struct DATAEDITREG *)(TEr->data))->firstx;\r
-        if (j>((struct DATAEDITREG *)(TEr->data))->firsty)\r
-          {\r
-          maxy=j;\r
-          miny=((struct DATAEDITREG *)(TEr->data))->firsty;\r
-          }\r
-        if (i>((struct DATAEDITREG *)(TEr->data))->firstx)\r
-          {\r
-          maxx=i;\r
-          minx=((struct DATAEDITREG *)(TEr->data))->firstx;\r
-          }\r
-        for (j2=miny; j2<=maxy; j2++)\r
-          for (i2=minx; i2<=maxx; i2++)\r
-            TEmask[j2*TExsize+i2]=(char)c;\r
-        TEr->bitflags^=REGTWOCLICK;\r
-        }\r
-      }\r
-    // Handle mouse clicks\r
-\r
-#ifdef JUNK\r
-    if ((MBStatus[0]|MBStatus[1])==MOUSECLICKED && (key[SCAN_CTRL]||key[SCAN_S]))\r
-      {\r
-      // put code to lock out draw mode here\r
-      }\r
-#endif\r
-    if (TEOldReg==TEr)\r
-      {\r
-      // Update undo buffer\r
-      if ((MBStatus[0]|MBStatus[1])==MOUSECLICKED && TEeditmode!=EDMASK && TEeditmode!=EDPICK && !(key[SCAN_CTRL]||key[SCAN_S]))\r
-        memcpy(TEundo, TEimage, TExsize*TEysize);\r
-      if (MBStatus[0]==MOUSECLICKED && TEeditmode==EDFILL)\r
-        TEFillImage(TEimage, (TEbitflags&TESHOWMSK ? TEmask : NULL), TExsize, TEysize, i, j, lcolor);\r
-      if (MBStatus[1]==MOUSECLICKED && TEeditmode==EDFILL)\r
-        TEFillImage(TEimage, (TEbitflags&TESHOWMSK ? TEmask : NULL), TExsize, TEysize, i, j, rcolor);\r
-\r
-      // Draw\r
-      if ((MBStatus[0]|MBStatus[1])==MOUSEPRESSED)\r
-        {\r
-        if (TEeditmode==EDPASTE)\r
-          {\r
-          for (j2=0; j2<TEcopyysize; j2++)\r
-            if ((j+j2)<TEysize)\r
-              for (i2=0; i2<TEcopyxsize; i2++)\r
-                if ((i+i2)<TExsize)\r
-                  if (TEcmsk[j2*TEcopyxsize+i2])\r
-                    if (!(TEbitflags&TESHOWMSK))\r
-                      TEimage[(j+j2)*TExsize+i+i2]=TEcopy[j2*TEcopyxsize+i2];\r
-                    else\r
-                      if (TEmask[(j+j2)*TExsize+i+i2])\r
-                        TEimage[(j+j2)*TExsize+i+i2]=TEcopy[j2*TEcopyxsize+i2];\r
-          }\r
-        }\r
-      if (MBStatus[0]==MOUSEPRESSED)\r
-        if (key[SCAN_CTRL]||key[SCAN_S]||(TEeditmode==EDPICK))\r
-          lcolor=TEimage[(j*TExsize)+i];\r
-        else\r
-          if ((TEeditmode==EDDRAW)&&!(TEbitflags&TESHOWMSK && !TEmask[j*TExsize+i]))\r
-            TEimage[(j*TExsize)+i]=lcolor;\r
-          else\r
-            if (TEeditmode==EDMASK && !(TEr->bitflags&REGTWOCLICK))\r
-              TEmask[(j*TExsize)+i]=0xf;\r
-      if (MBStatus[1]==MOUSEPRESSED)\r
-        if (key[SCAN_CTRL]||key[SCAN_S]||(TEeditmode==EDPICK))\r
-          rcolor=TEimage[(j*TExsize)+i];\r
-        else\r
-          if ((TEeditmode==EDDRAW)&&!(TEbitflags&TESHOWMSK && !TEmask[j*TExsize+i]))\r
-            TEimage[(j*TExsize)+i]=rcolor;\r
-          else\r
-            if (TEeditmode==EDMASK && !(TEr->bitflags&REGTWOCLICK))\r
-              TEmask[(j*TExsize)+i]=0x0;\r
-      }\r
-    }\r
-  }\r
-\r
-static void DrawHelpBar(TEREGION *TEr)\r
-  {\r
-  //int i, htext=0;\r
-  TERegFill(TEr, black);\r
-  DrawSunkRegion(TEr);\r
-  if (TEr->caption) TERegText(TEr, TEr->caption);\r
-  TEFree(TEr->caption);               // Blank caption\r
-  //TEr->caption=NULL;                  // why doesn't this work in TEFree?\r
-#ifdef JUNK\r
-  i=MAX_REGIONS;\r
-  do\r
-    {\r
-    i--;\r
-    if (MouseOverTEreg(&TEregs[i])) htext=i;\r
-    } while (i>0);\r
-  if (htext && TEregs[htext].helptext) TERegText(TEr, TEr->caption);\r
-#endif\r
-  }\r
-\r
-static void DrawPalette(TEREGION *TEr)\r
-  {\r
-  int i,j;\r
-  unsigned int width=(TEr->x2)-(TEr->x1);\r
-  unsigned int height=(TEr->y2)-(TEr->y1);\r
-  int xscale=(width-4)>>6;\r
-  int yscale=(height-4)>>2;\r
-  int x=(TEr->x1)+TExoffs;\r
-  int y=(TEr->y1)+TEyoffs;\r
-  TEREGION tempr;\r
-  tempr.x1=TEr->x1+2;\r
-  tempr.x2=TEr->x2-2;\r
-  tempr.y1=TEr->y1+2;\r
-  tempr.y2=TEr->y2-2;\r
-\r
-  x+=2;\r
-  y+=2;\r
-  TERegFill(TEr, black);\r
-  DrawSunkRegion(TEr);\r
-  i=64;\r
-  do\r
-    {\r
-    i--;\r
-    FilledBox(x+(i*xscale), y, xscale, yscale, i);\r
-    FilledBox(x+(i*xscale), y+yscale, xscale, yscale, i+64);\r
-    FilledBox(x+(i*xscale), y+yscale*2, xscale, yscale, i+128);\r
-    FilledBox(x+(i*xscale), y+yscale*3, xscale, yscale, i+192);\r
-    } while (i>0);\r
-\r
-  i=lcolor&63;\r
-  j=lcolor>>6;\r
-  TEDrawHilight(x+i*xscale, y+j*yscale, xscale, yscale, titlebg);\r
-\r
-  i=rcolor&63;\r
-  j=rcolor>>6;\r
-  TEDrawHilight(x+i*xscale, y+j*yscale, xscale, yscale, titlebg);\r
-\r
-  if (MouseOverTEreg(&tempr) && TEr->bitflags&REGACTIVE)\r
-    {\r
-    i=(mx-TExoffs-(tempr.x1))/xscale;\r
-    j=(my-TExoffs-(tempr.y1))/yscale;\r
-    i+=(j<<6);\r
-    j=i*3;\r
-    sprintf(TEtempstr, "Color: %03d (rgb: %03d/%03d/%03d)", i, pal[j], pal[j+1], pal[j+2]);\r
-    SetCaption(&TEregs[HELPBAR], TEtempstr);\r
-    // Handle mouse clicks\r
-    if (TEOldReg==TEr)\r
-      {\r
-      if (MBStatus[0]==MOUSEPRESSED) lcolor=i;\r
-      if (MBStatus[1]==MOUSEPRESSED) rcolor=i;\r
-      }\r
-    }\r
-  }\r
-\r
-static void DrawPreview(TEREGION *TEr)\r
-  {\r
-  char *img;\r
-  int i;\r
-  TERegFill(TEr, black);\r
-  DrawSunkRegion(TEr);\r
-//  img=vsp+(256*TEtile);\r
-  img=TEimage;\r
-  i=tileidx[TEtile];\r
-  if ((TEbitflags&TEANIMATE) && i!=TEtile) img=vsp+(256*i);\r
-  CopyTile(TEr->x1+TExoffs+2, TEr->y1+TEyoffs+2, img);\r
-\r
-  if (MouseOverTEreg(TEr) && TEr->bitflags&REGACTIVE)\r
-    {\r
-    strcpy(TEtempstr, (TEbitflags&TEANIMATE ? "Click to halt animation" : "Click to animate tile"));\r
-    SetCaption(&TEregs[HELPBAR], TEtempstr);\r
-\r
-    // Handle mouse clicks\r
-    if (TEOldReg==TEr)\r
-      if ((MBStatus[0]|MBStatus[1])==MOUSECLICKED && MouseOverTEreg(TEr))\r
-        TEbitflags^=TEANIMATE;\r
-    }\r
-  }\r
-\r
-static void DrawSColBox(TEREGION *TEr)\r
-// -- ric: 15/Jul/98 - Draw selected colour box\r
-  {\r
-  int halfwidth=TEr->x2-TEr->x1-4;\r
-  int height=TEr->y2-TEr->y1-4;\r
-  char DSCBtempcolor;\r
-  TERegFill(TEr, black);\r
-  DrawSunkRegion(TEr);\r
-  FilledBox(TExoffs+2+TEr->x1, TEyoffs+2+TEr->y1, halfwidth, height, titlebg);\r
-  height-=2;\r
-  halfwidth-=2;\r
-  halfwidth>>=1;\r
-  FilledBox(TExoffs+3+TEr->x1, TEyoffs+3+TEr->y1, halfwidth, height, lcolor);\r
-  FilledBox(TExoffs+3+TEr->x1+halfwidth, TEyoffs+3+TEr->y1, halfwidth, height, rcolor);\r
-\r
-  if (MouseOverTEreg(TEr) && TEr->bitflags&REGACTIVE)\r
-    {\r
-    strcpy(TEtempstr, "Click to swap colors");\r
-    SetCaption(&TEregs[HELPBAR], TEtempstr);\r
-\r
-    // Handle mouse clicks\r
-    if (TEOldReg==TEr)\r
-    if ((MBStatus[0]|MBStatus[1])==MOUSECLICKED && MouseOverTEreg(TEr))\r
-      {\r
-      DSCBtempcolor=lcolor;\r
-      lcolor=rcolor;\r
-      rcolor=DSCBtempcolor;\r
-      }\r
-    }\r
-  }\r
-\r
-static void DrawSCTxtBx(TEREGION *TEr)\r
-// -- ric: 15/Jul/98 - Draw selected colour text box\r
-  {\r
-//  char DSCTBTextBuf[256];\r
-  int i;\r
-  int DSCTBx=TEr->x1+TExoffs+2;\r
-  int DSCTBy=TEr->y1+TEyoffs+2;\r
-  TERegFill(TEr, black);\r
-  DrawSunkRegion(TEr);\r
-  i=lcolor*3;\r
-  sprintf(TEtempstr, "Left: %03d (rgb: %03d/%03d/%03d)", lcolor, pal[i], pal[i+1], pal[i+2]);\r
-  GotoXY(DSCTBx, DSCTBy);\r
-  printstring(TEtempstr);\r
-  i=rcolor*3;\r
-  sprintf(TEtempstr, "Right: %03d (rgb: %03d/%03d/%03d)", rcolor, pal[i], pal[i+1], pal[i+2]);\r
-  GotoXY(DSCTBx, DSCTBy+7);\r
-  printstring(TEtempstr);\r
-  }\r
-\r
-static void SetCaption(TEREGION *TEr, char *helptext)\r
-  {\r
-  TEFree(TEr->caption);\r
-  TEr->caption=(char *)strcpy((char *)TEAlloc(strlen(helptext)+1,helptext), helptext);\r
-  }\r
-\r
-static void TEDrawHilight(int x1, int y1, int width, int height, unsigned char colour)\r
-// -- ric: 15/Jul/98 - Draws hilight around given rectangle\r
-  {\r
-  VLine(x1-1, y1, height, colour);\r
-  VLine(x1+width, y1, height, colour);\r
-  HLine(x1-1, y1-1, width+2, colour);\r
-  HLine(x1-1, y1+height, width+2, colour);\r
-  }\r
-\r
-static void TEDrawCheckeredBox(int x1, int y1, int width, int height, unsigned char colour)\r
-// -- ric: 17/Jul/98 - Draws a checkered box\r
-  {\r
-  int i,j;\r
-  unsigned char c;\r
-  for (j=0; j<height; j++)\r
-   {\r
-   c=(y1+j+1)&1;\r
-   if (c) c=colour;\r
-   for (i=0; i<width; i++)\r
-     {\r
-     if (c) screen[(y1+j)*tsx+x1+i]=c;\r
-     c^=colour;\r
-     }\r
-   }\r
-  }\r
-\r
-static void TERegFill(TEREGION *TEr, int colour)\r
-// -- ric: 20/Jul/98 - Fills region with colour (colour==-1 for transparent)\r
-  {\r
-  if (colour>-1)\r
-    FilledBox(TEr->x1+TExoffs, TEr->y1+TEyoffs, (TEr->x2)-(TEr->x1), (TEr->y2)-(TEr->y1), colour);\r
-  }\r
-\r
-static void TERegText(TEREGION *TEr, char *message)\r
-// Prints given message in the specified region\r
-  {\r
-  int tempx, tempy;\r
-  tempx=(TEr->x1)+TExoffs+2;\r
-\r
-  tempy=(TEr->y2)-(TEr->y1);\r
-  tempy>>=1;\r
-  tempy+=(TEr->y1)-3;\r
-\r
-  GotoXY(tempx,tempy+TEyoffs);\r
-  printstring(message);\r
-\r
-  }\r
-\r
-static void TEClearImage(void)\r
-// -- ric: 26/Jul/98 - clear selected image\r
-  {\r
-  int j;\r
-  if (TEbitflags&TESHOWMSK)\r
-    {\r
-    j=TEysize*TExsize;\r
-    memcpy(TEundo, TEimage, j); // backup image to undo buffer\r
-    do\r
-      {\r
-      j--;\r
-      if (*(TEmask+j)) *(TEimage+j)=rcolor;\r
-      } while (j>0);\r
-    }\r
-  }\r
-\r
-static void TECopyImage(void)\r
-// -- ric: 26/Jul/98 - copy selected image to copy buffer\r
-  {\r
-  int i, j, TECIxstart, TECIystart, TECIxsize, TECIysize;\r
-  if (TEbitflags&TESHOWMSK)  // only makes sense if selected region is shown\r
-    {\r
-    TECIxstart=TExsize;\r
-    TECIystart=TEysize;\r
-    TECIxsize=-1;\r
-    TECIysize=-1;\r
-    // loop through image to find the starting and ending x and y coords\r
-    // of the image to copy\r
-    for (j=0; j<TEysize; j++)\r
-      for (i=0; i<TExsize; i++)\r
-        {\r
-        if (TEmask[j*TExsize+i])   // selected\r
-          {\r
-          if (i<TECIxstart) TECIxstart=i;\r
-          if (i>TECIxsize) TECIxsize=i;\r
-          if (j<TECIystart) TECIystart=j;\r
-          if (j>TECIysize) TECIysize=j;\r
-          }\r
-        }\r
-\r
-    TECIxsize-=TECIxstart-1;\r
-    TECIysize-=TECIystart-1;\r
-\r
-    if (TECIxsize>0 && TECIysize>0)\r
-      {\r
-      // free and create TEcopy and TEcmsk buffers\r
-      TEFree(TEcopy);\r
-      TEFree(TEcmsk);\r
-\r
-      // make copy buffer square (allows for rotation)\r
-      TEcopyxsize=TECIysize;\r
-      TEcopyysize=TECIysize;\r
-      if (TECIxsize>TECIysize)\r
-        {\r
-        TEcopyxsize=TECIxsize;\r
-        TEcopyysize=TECIxsize;\r
-        }\r
-      TEcopy=(char *)TEAlloc(TEcopyxsize*TEcopyysize, "copy buffer");\r
-      TEcmsk=(char *)TEAlloc(TEcopyxsize*TEcopyysize, "copy mask");\r
-\r
-      // copy image into buffer\r
-      for (j=0; j<TECIysize; j++)\r
-        for (i=0; i<TECIxsize; i++)\r
-          {\r
-          if (TEmask[(j+TECIystart)*TExsize+(i+TECIxstart)])\r
-            {\r
-            TEcopy[j*TEcopyxsize+i]=TEimage[(j+TECIystart)*TExsize+(i+TECIxstart)];\r
-            TEcmsk[j*TEcopyxsize+i]=0xf;\r
-            }\r
-          }\r
-      }\r
-    }\r
-  }\r
-\r
-static void TERotateImageAntiClockwise(unsigned char *TERILsrc, int TERILxsize, int TERILysize)\r
-// -- ric: 15/Jul/98 - rotates image (must be square) 90 degrees anti-clockwise\r
-  {\r
-//  unsigned char *TERILsrc=TEimage;\r
-  unsigned char *TERILimg=NULL;\r
-  int i, j, amount;\r
-  if (TERILxsize==TERILysize)\r
-    {\r
-    amount=TERILxsize*TERILysize;\r
-    TERILimg=(char *) TEAlloc(amount, "temporary image buffer for TERotateImageAntiClockwise");\r
-    memcpy(TERILimg, TERILsrc, amount);\r
-    j=TERILysize;\r
-    do\r
-      {\r
-      j--;\r
-      i=TERILxsize;\r
-      do\r
-        {\r
-        i--;\r
-        TERILsrc[(j*TERILxsize)+i]=TERILimg[(i*TERILxsize)+(TERILysize-1-j)];\r
-        } while (i>0);\r
-      } while (j>0);\r
-    TEFree(TERILimg);\r
-    }\r
-  }\r
-\r
-static void TERotateImageClockwise(unsigned char *TERILsrc, int TERILxsize, int TERILysize)\r
-// -- ric: 16/Jul/98 - rotates image (must be square) 90 degrees clockwise\r
-  {\r
-  unsigned char *TERILimg=NULL;\r
-  int i, j, amount;\r
-  if (TERILxsize==TERILysize)\r
-    {\r
-    amount=TERILxsize*TERILysize;\r
-    TERILimg=(char *) TEAlloc(amount, "temporary image buffer for TERotateImageClockwise");\r
-    memcpy(TERILimg, TERILsrc, amount);\r
-    j=TERILysize;\r
-    do\r
-      {\r
-      j--;\r
-      i=TERILxsize;\r
-      do\r
-        {\r
-        i--;\r
-        TERILsrc[(j*TERILxsize)+i]=TERILimg[((TERILxsize-1-i)*TERILxsize)+(j)];\r
-        } while (i>0);\r
-      } while (j>0);\r
-    TEFree(TERILimg);\r
-    }\r
-  }\r
-\r
-static void TEFlipImage(unsigned char *TERILsrc, int TERILxsize, int TERILysize)\r
-// -- ric: 15/Jul/98 - flips image\r
-  {\r
-  unsigned char *TERILimg=NULL;\r
-  int i, j, amount;\r
-  amount=TERILxsize*TERILysize;\r
-  TERILimg=(char *) TEAlloc(amount, "temporary image buffer for TEFlipImage");\r
-  memcpy(TERILimg, TERILsrc, amount);\r
-  j=TERILysize;\r
-  do\r
-    {\r
-    j--;\r
-    i=TERILxsize;\r
-    do\r
-      {\r
-      i--;\r
-      TERILsrc[(j*TERILxsize)+i]=TERILimg[((TERILysize-1-j)*TERILxsize)+i];\r
-      } while (i>0);\r
-    } while (j>0);\r
-  TEFree(TERILimg);\r
-  }\r
-\r
-static void TEMirrorImage(unsigned char *TERILsrc, int TERILxsize, int TERILysize)\r
-// -- ric: 15/Jul/98 - mirrors image\r
-  {\r
-  unsigned char *TERILimg=NULL;\r
-  int i, j, amount;\r
-  amount=TERILxsize*TERILysize;\r
-  TERILimg=(char *) TEAlloc(amount, "temporary image buffer for TEMirrorImage");\r
-  memcpy(TERILimg, TERILsrc, amount);\r
-  j=TERILysize;\r
-  do\r
-    {\r
-    j--;\r
-    i=TERILxsize;\r
-    do\r
-      {\r
-      i--;\r
-      TERILsrc[(j*TERILxsize)+i]=TERILimg[(j*TERILxsize)+(TERILxsize-1-i)];\r
-      } while (i>0);\r
-    } while (j>0);\r
-  TEFree(TERILimg);\r
-  }\r
-\r
-static void TEFillImage(char *TEFIimage, char *TEFImask, int TEFIxsize, int TEFIysize, int TEFIx, int TEFIy, char TEFIcolour)\r
-// -- ric: 29/Jul/98 - Fill procedure - sets up and calls recursive procedure below\r
-  {\r
-  int i,j;\r
-  unsigned char *TEFIfillmask=NULL;  // will eventually contain 0 for ignore and 1 for fill\r
-  TEFIfillmask=(char *) TEAlloc(TEFIxsize*TEFIysize, "temporary fill buffer for TEFillImage");\r
-  TERFillImage(TEFIimage, TEFIfillmask, TEFIxsize, TEFIysize, TEFIx, TEFIy);\r
-\r
-  if (TEFImask)\r
-    for (j=0; j<TEFIysize; j++)\r
-      for (i=0; i<TEFIxsize; i++)\r
-        TEFIfillmask[j*TEFIxsize+i]&=TEFImask[j*TEFIxsize+i];\r
-\r
-  for (j=0; j<TEFIysize; j++)\r
-    for (i=0; i<TEFIxsize; i++)\r
-      if (TEFIfillmask[j*TEFIxsize+i]) TEFIimage[j*TEFIxsize+i]=TEFIcolour;\r
-  TEFree(TEFIfillmask);\r
-  }\r
-\r
-static void TERFillImage(char *TERFIimage, char *TERFImask, int TERFIxsize, int TERFIysize, int TERFIx, int TERFIy)\r
-// -- ric: 29/Jul/98 - Recursive fill procedure\r
-  {\r
-  int x,y;\r
-  char TERFIcc;\r
-  TERFImask[TERFIy*TERFIxsize+TERFIx]=0xf;\r
-  TERFIcc=TERFIimage[TERFIy*TERFIxsize+TERFIx];\r
-  x=TERFIx-1;\r
-  y=TERFIy;\r
-  if (x>=0 && x<TERFIxsize && y>=0 && y<TERFIysize)\r
-    if (!(TERFImask[y*TERFIxsize+x]) && TERFIimage[y*TERFIxsize+x]==TERFIcc)\r
-      TERFillImage(TERFIimage, TERFImask, TERFIxsize, TERFIysize, x, y);\r
-  x=TERFIx;\r
-  y=TERFIy-1;\r
-  if (x>=0 && x<TERFIxsize && y>=0 && y<TERFIysize)\r
-    if (!(TERFImask[y*TERFIxsize+x]) && TERFIimage[y*TERFIxsize+x]==TERFIcc)\r
-      TERFillImage(TERFIimage, TERFImask, TERFIxsize, TERFIysize, x, y);\r
-  x=TERFIx+1;\r
-  y=TERFIy;\r
-  if (x>=0 && x<TERFIxsize && y>=0 && y<TERFIysize)\r
-    if (!(TERFImask[y*TERFIxsize+x]) && TERFIimage[y*TERFIxsize+x]==TERFIcc)\r
-      TERFillImage(TERFIimage, TERFImask, TERFIxsize, TERFIysize, x, y);\r
-  x=TERFIx;\r
-  y=TERFIy+1;\r
-  if (x>=0 && x<TERFIxsize && y>=0 && y<TERFIysize)\r
-    if (!(TERFImask[y*TERFIxsize+x]) && TERFIimage[y*TERFIxsize+x]==TERFIcc)\r
-      TERFillImage(TERFIimage, TERFImask, TERFIxsize, TERFIysize, x, y);\r
-  }\r
-\r
-static void TEShiftColours(char *TESCimage, char *TESCmask, int TESCxsize, int TESCysize, int amount)\r
-// -- ric: 17/Jul/98 - Colour shift idea by McGrue and Tarkuss\r
-  {\r
-  int i,j;\r
-  j=TESCysize;\r
-  do\r
-    {\r
-    j--;\r
-    i=TESCxsize;\r
-    do\r
-      {\r
-      i--;\r
-      if (!(TESCmask))\r
-        TESCimage[j*TESCxsize+i]+=amount;\r
-      else\r
-        if (TESCmask[j*TESCxsize+i])\r
-          TESCimage[j*TESCxsize+i]+=amount;\r
-      } while (i>0);\r
-    } while (j>0);\r
-  }\r
-\r
-\r
-static void TEUndo (void)\r
-  {\r
-  unsigned char *tempimg=TEimage;\r
-  TEimage=TEundo;\r
-  TEundo=tempimg;\r
-  }\r
-\r
-static void *TEAlloc(unsigned long amount, char *whatfor)\r
-// -- ric: 14/Jul/98 - TE's custom, error-handling memory allocation routine\r
-  {\r
-  char *TETmpBuf=NULL;\r
-\r
-  amount += 3; // aen\r
-  amount &= ~3;\r
-\r
-//  static char DebugBuf[256];\r
-  TETmpBuf=(char *) malloc(amount);\r
-  if (!TETmpBuf)\r
-    {\r
-    sprintf(TEtempstr, "Unable to allocate %ld bytes for %s.", amount, whatfor);\r
-    err(TEtempstr);\r
-    }\r
-  memset(TETmpBuf,0, amount); // Clear allocated mem\r
-  /*\r
-  __asm {  // aen\r
-    mov edi,TETmpBuf\r
-    mov ecx,amount\r
-    shr ecx,2\r
-    xor eax,eax\r
-    cld\r
-    rep stosd\r
-    } ;\r
-  */\r
-  return TETmpBuf;\r
-  }\r
-\r
-#ifdef JUNK\r
-static void TEFree(void *TETmpBuf)\r
-// -- ric: 14/Jul/98 - TE's custom memory freeing routine\r
-  {\r
-  if (TETmpBuf) free(TETmpBuf);  // Only free memory if previously allocated\r
-  TETmpBuf=NULL;                 // Set freed memory to point to NULL\r
-  }\r
-#endif\r
-\r
-static void MBClickHandler(TEREGION *TEBaseReg)\r
-// -- ric: 20/Jul/98 - Mouse button click handler\r
-  {\r
-  int i,j;\r
-  ReadMouse();\r
-  if (TEBaseReg)\r
-    {\r
-    if (!TEBaseReg->data) err("No region data defined.");\r
-    if (((struct DATABASEREGION *)TEBaseReg->data)->infotype!=DITBASEREGION)\r
-      err("MBClickHandler called with invalid base region.");\r
-    }\r
-\r
-  for (i=0; i<3; ++i)\r
-    {\r
-    if (mb & (i+1))\r
-      {\r
-      if (MBStatus[i] == MOUSECLICKED)\r
-        MBStatus[i]=MOUSEPRESSED;\r
-      else if (MBStatus[i] == MOUSENONE)\r
-        {\r
-        MBStatus[i] = MOUSECLICKED;\r
-        if (TEBaseReg)\r
-          {\r
-          TEOldReg = NULL;\r
-          for (j=0; j<((struct DATABASEREGION *)TEBaseReg->data)->numofregs; ++j)\r
-            if (MouseOverTEreg(TEBaseReg+j)&&!((TEBaseReg+j)->bitflags&REGNOCLICK))\r
-              TEOldReg = TEBaseReg+j;\r
-          }\r
-        }\r
-      }\r
-    else\r
-      {\r
-      if (MBStatus[i] <= MOUSERELEASE)\r
-        MBStatus[i] = MOUSENONE;\r
-      else if (MBStatus[i]>MOUSERELEASE)\r
-        MBStatus[i] = MOUSERELEASE;\r
-      }\r
-    }\r
-  }\r
-\r
-static void AboutTE (void)\r
-// Just here to test the mouse input loop - remove this later\r
-  {\r
-  TEREGION *TEr=NULL;\r
-  TEREGION *TEaboutwin=NULL;\r
-//  int amxsize=150, amysize=82;\r
-  int amxofs=60, amyofs=60;\r
-  int i,i2,j,j2;\r
-  int QuitAW=FALSE;\r
-  int moving=FALSE;\r
-\r
-  // Allocate memory\r
-  TEaboutwin=(struct TEREGION *) TEAlloc((sizeof (struct TEREGION))*4,"about window regions");\r
-  TEr=TEaboutwin;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=amxofs;\r
-  TEr->x2=TEr->x1+150;\r
-  TEr->y1=amyofs;\r
-  TEr->y2=TEr->y1+82;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE|REGNOCLICK;\r
-//  TEr->drawproc=NULL;\r
-  sprintf(strbuf, "About MapEd %s Tile Editor", ME2_VERSION);\r
-  TEr->caption=TENewText(strbuf, "About window");\r
-  TEr->data=(struct DATABASEREGION *) TEAlloc(sizeof (struct DATABASEREGION), "base region data");\r
-  ((struct DATABASEREGION *)(TEr->data))->infotype=DITBASEREGION;\r
-  ((struct DATABASEREGION *)(TEr->data))->numofregs=4;\r
-  ((struct DATABASEREGION *)(TEr->data))->windowtype=DBRSTDWINDOW;\r
-\r
-  TEr+=1;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=0;\r
-  TEr->x2=TEaboutwin->x2-TEaboutwin->x1-9;\r
-  TEr->y1=0;\r
-  TEr->y2=8;\r
-  TEr->bitflags=REGACTIVE;\r
-//  TEr->drawproc=NULL;\r
-//  TEr->caption=NULL;\r
-\r
-  TEr+=1;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=TEaboutwin->x2-TEaboutwin->x1-9;\r
-  TEr->x2=TEaboutwin->x2-TEaboutwin->x1-3;\r
-  TEr->y1=3;\r
-  TEr->y2=6;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE;\r
-  TEr->drawproc=&DrawButton;\r
-//  TEr->caption=NULL;\r
-  TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "quit button data");\r
-  ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->text=NULL;\r
-  ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->bitflag=&QuitAW;\r
-  ((struct DATABUTTON *)(TEr->data))->bitvalue=TRUE;\r
-\r
-  TEr+=1;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=60;\r
-  TEr->x2=90;\r
-  TEr->y1=62;\r
-  TEr->y2=72;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE;\r
-  TEr->drawproc=&DrawButton;\r
-  TEr->caption=TENewText("ok","ok button caption");\r
-  TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "quit button data");\r
-  ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->text=NULL;\r
-  ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->bitflag=&QuitAW;\r
-  ((struct DATABUTTON *)(TEr->data))->bitvalue=TRUE;\r
-  TEr=TEaboutwin+1; // point to title bar area\r
-\r
-  while (!QuitAW)\r
-    {\r
-    // Mouse button click handler routines\r
-    MBClickHandler(TEaboutwin);\r
-\r
-    amxofs=TEaboutwin->x1;\r
-    amyofs=TEaboutwin->y1;\r
-    if ((MBStatus[0]|MBStatus[1])==MOUSERELEASE)\r
-      moving=FALSE;\r
-\r
-    // Draw loop\r
-    RenderTileEdit(TEregs);\r
-    RenderTileEdit(TEaboutwin);\r
-\r
-    sprintf(strbuf, "MapEd v.%s", ME2_VERSION);\r
-    GotoXY(amxofs+52, amyofs+16); printstring(strbuf);\r
-    GotoXY(amxofs+31, amyofs+22); printstring("Copyright (C) 1998 vecna");\r
-    GotoXY(amxofs+40, amyofs+28); printstring("All Rights Reserved");\r
-    sprintf(strbuf, "MapEd v.%s Tile Editor", ME2_VERSION);\r
-    GotoXY(amxofs+29, amyofs+41); printstring(strbuf);\r
-    GotoXY(amxofs+20, amyofs+47); printstring("Additional code by Richard Lau");\r
-    DrawMouse();\r
-    ShowPage();\r
-\r
-    // Move window?\r
-    if (MouseOverTEreg(TEr) && TEOldReg==TEr)\r
-      {\r
-      if ((MBStatus[0]|MBStatus[1])==MOUSECLICKED)\r
-        {\r
-        i2=TEaboutwin->x2-TEaboutwin->x1;\r
-        j2=TEaboutwin->y2-TEaboutwin->y1;\r
-        i=mx-TEaboutwin->x1;\r
-        j=my-TEaboutwin->y1;\r
-        moving=TRUE;\r
-        }\r
-      }\r
-      if ((MBStatus[0]|MBStatus[1])==MOUSEPRESSED && moving)\r
-        {\r
-        if (((mx-i)<16)) TEaboutwin->x1=16;\r
-        else if (((mx-i+i2)>=(16+sx))) TEaboutwin->x1=16+(sx-i2);\r
-        else TEaboutwin->x1=mx-i;\r
-        if (((my-j)<16)) TEaboutwin->y1=16;\r
-        else if (((my-j+j2)>=(16+sy))) TEaboutwin->y1=16+(sy-j2);\r
-        else TEaboutwin->y1=my-j;\r
-        TEaboutwin->x2=TEaboutwin->x1+i2;\r
-        TEaboutwin->y2=TEaboutwin->y1+j2;\r
-        }\r
-\r
-    if (key[SCAN_ESC])\r
-      {\r
-      key[SCAN_ESC]=0;\r
-      QuitAW=TRUE;\r
-      }\r
-\r
-    }\r
-  // free TEaboutwin\r
-  TEFreeReg(TEaboutwin);\r
-  }\r
-\r
-static void RestartTileEditor(void)\r
-// -- ric: 17/Jul/98 - reinit the tile editor\r
-  {\r
-  int i,j, amount;\r
-  unsigned char *TERTEmask=NULL;\r
-\r
-  switch (TEtype)\r
-    {\r
-    case TETILE:                 // edit tile TEtile\r
-          i=TExsize;\r
-          j=TEysize;\r
-          amount=i*j;\r
-          TERTEmask=(unsigned char *) TEAlloc(amount, "tile editor mask backup buffer");\r
-\r
-          // backup mask\r
-          memcpy(TERTEmask, TEmask, amount);\r
-\r
-          // Restart editor\r
-          DeinitTEImage();\r
-          TEFreeReg(TEregs);\r
-          TEtype=TETILE;\r
-          TExsize=i;\r
-          TEysize=j;\r
-          TEsource=vsp+(256*TEtile);\r
-          InitTEImage();\r
-          SetupRegions();\r
-\r
-          // Restore mask\r
-          memcpy(TEmask, TERTEmask, amount);\r
-          TEFree(TERTEmask);\r
-          break;\r
-    }\r
-  }\r
-\r
-static void InitTEImage (void)\r
-// Copy the image data being edited and allocate memory for the image buffers\r
-  {\r
-  int i;\r
-  int amount=TExsize*TEysize;\r
-  if (TEtype==TEUNKNOWN) err("Unrecognised tile editor graphics type.");\r
-  if (!TEsource) err("Invalid input image.");\r
-  TEimage=(unsigned char *) TEAlloc(amount, "tile editor image buffer");\r
-  TEmask=(unsigned char *) TEAlloc(amount, "tile editor mask buffer");\r
-  TEundo=(unsigned char *) TEAlloc(amount, "tile editor undo buffer");\r
-//  if (!TEimage || !TEundo) err("Cannot allocate memory for tile editor image buffers.");\r
-  memcpy(TEimage, TEsource, amount); // copy original image into edit buffer\r
-  memcpy(TEundo, TEimage, amount);   // copy original image into undo buffer\r
-\r
-  // if editing tile find the animation strand (if any) tile belongs to\r
-  TEanimstrand=0;       // Does not belong to an animation strand\r
-  if (TEtype==TETILE)\r
-    {\r
-    i=100;\r
-    do\r
-      {\r
-      i--;\r
-      if (vspanim[i].delay && TEtile<=vspanim[i].finish && TEtile>=vspanim[i].start)\r
-        TEanimstrand=i+1;\r
-      } while (i>0);\r
-    }\r
-  }\r
-\r
-static void DeinitTEImage(void)\r
-// Unallocate allocated image buffers - copy edited buffer into original\r
-  {\r
-  memcpy(TEsource, TEimage, (TExsize*TEysize));\r
-  TEFree(TEimage);\r
-  TEFree(TEmask);\r
-  TEFree(TEundo);\r
-  TEtype=TEUNKNOWN;         // Clear type info for error checking purposes\r
-  TExsize=0;\r
-  TEysize=0;\r
-  }\r
-\r
-static void SetupRegions (void)\r
-  {\r
-  int temp;\r
-  TEREGION *TEr=NULL;\r
-\r
-  // Allocate memory\r
-  TEregs=(struct TEREGION *) TEAlloc((sizeof (struct TEREGION))*MAX_REGIONS,"tile edit regions");\r
-\r
-  TEr=TEregs+BASEREG;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=16;\r
-  TEr->x2=TEr->x1+sx;\r
-  TEr->y1=16;\r
-  TEr->y2=TEr->y1+sy;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE|REGNOCLICK;\r
-  TEr->drawproc=NULL;\r
-  TEr->caption=NULL;\r
-  switch (TEtype)\r
-    {\r
-    case TETILE:\r
-      sprintf(TEtempstr, "MapEd %s Tile Editor - Tile: %d", ME2_VERSION, TEtile);\r
-      if (TEanimstrand)\r
-        sprintf(TEtempstr, "MapEd %s Tile Editor - Tile: %d (anim strand: %d, frame: %d/%d)",\r
-          ME2_VERSION,\r
-          TEtile, TEanimstrand-1, TEtile-vspanim[TEanimstrand-1].start+1,\r
-          vspanim[TEanimstrand-1].finish-vspanim[TEanimstrand-1].start+1);\r
-      SetCaption(TEr, TEtempstr);\r
-      break;\r
-    }\r
-  TEr->data=(struct DATABASEREGION *) TEAlloc(sizeof (struct DATABASEREGION), "base region data");\r
-  ((struct DATABASEREGION *)(TEr->data))->infotype=DITBASEREGION;\r
-  ((struct DATABASEREGION *)(TEr->data))->numofregs=MAX_REGIONS;\r
-  ((struct DATABASEREGION *)(TEr->data))->windowtype=DBRSTDWINDOW;\r
-\r
-  TEr=TEregs+HELPBAR;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=3;\r
-  TEr->x2=TEregs->x2-TEregs->x1-3;\r
-  TEr->y1=TEregs->y2-TEregs->y1-13;\r
-  TEr->y2=TEregs->y2-TEregs->y1-3;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE|REGNOCLICK;\r
-  TEr->drawproc=&DrawHelpBar;\r
-  TEr->caption=NULL;\r
-  TEr->data=NULL;\r
-\r
-  temp=(((TEregs->x2-TEregs->x1-8)>>6)<<5)+2;\r
-  TEr=TEregs+PALETTE;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=((TEregs->x2-TEregs->x1)>>1)-temp;\r
-  TEr->x2=((TEregs->x2-TEregs->x1)>>1)+temp;\r
-  TEr->y1=TEregs->y2-TEregs->y1-36;\r
-  TEr->y2=TEregs->y2-TEregs->y1-16;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE;\r
-  TEr->drawproc=&DrawPalette;\r
-  TEr->caption=NULL;\r
-  TEr->data=NULL;\r
-\r
-  TEr=TEregs+EDITREG;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=3;\r
-  TEr->x2=3+128+4;\r
-  TEr->y1=10;\r
-  TEr->y2=10+128+4;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE;\r
-  TEr->drawproc=&DrawEditReg;\r
-  TEr->caption=NULL;\r
-  TEr->data=(struct DATAEDITREG *) TEAlloc(sizeof (struct DATAEDITREG), "edit region data");\r
-  ((struct DATAEDITREG *)(TEr->data))->infotype=DITEDITREG;\r
-\r
-  TEr=TEregs+PREVIEW;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=TEregs->x2-TEregs->x1-23;\r
-  TEr->x2=TEregs->x2-TEregs->x1-3;\r
-  TEr->y1=10;\r
-  TEr->y2=10+20;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE;\r
-  TEr->drawproc=&DrawPreview;\r
-  TEr->caption=NULL;\r
-  TEr->data=NULL;\r
-\r
-  TEr=TEregs+SCOLBOX;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=TEregs[EDITREG].x1;\r
-  TEr->x2=TEr->x1+20;\r
-  TEr->y1=TEregs[EDITREG].y2+2;\r
-  TEr->y2=TEr->y1+16;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE;\r
-  TEr->drawproc=&DrawSColBox;\r
-  TEr->caption=NULL;\r
-  TEr->data=NULL;\r
-\r
-  TEr=TEregs+SCTXTBX;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=TEregs[SCOLBOX].x2+2;\r
-  TEr->x2=TEregs[EDITREG].x2;\r
-  TEr->y1=TEregs[SCOLBOX].y1;\r
-  TEr->y2=TEregs[SCOLBOX].y2;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE|REGNOCLICK;\r
-  TEr->drawproc=&DrawSCTxtBx;\r
-  TEr->caption=NULL;\r
-  TEr->data=NULL;\r
-\r
-  TEr=TEregs+QUITBUT;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=TEregs->x2-TEregs->x1-9;\r
-  TEr->x2=TEregs->x2-TEregs->x1-3;\r
-  TEr->y1=3;\r
-  TEr->y2=6;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE;\r
-  TEr->drawproc=&DrawButton;\r
-  TEr->caption=NULL;\r
-  TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "quit button data");\r
-  ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->text=TENewText("Exit", "quit button text");\r
-  ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbitflags;\r
-  ((struct DATABUTTON *)(TEr->data))->bitvalue=TEQUITCUR;\r
-\r
-  TEr=TEregs+EDMDFRM;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=TEregs[EDITREG].x2+3;\r
-  TEr->x2=TEr->x1+34;\r
-  TEr->y1=TEregs[EDITREG].y1;\r
-  TEr->y2=TEr->y1+11*5+3;     // 10*number of buttons\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE|REGNOCLICK;\r
-  TEr->drawproc=&DrawSunkRegion;\r
-  TEr->caption=NULL;\r
-  TEr->data=NULL;\r
-\r
-  TEr=TEregs+DRAWBUT;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=TEregs[EDMDFRM].x1+2;\r
-  TEr->x2=TEregs[EDMDFRM].x2-2;\r
-  TEr->y1=TEregs[EDMDFRM].y1+2;\r
-  TEr->y2=TEr->y1+10;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE;\r
-  TEr->drawproc=&DrawButton;\r
-  TEr->caption=NULL;\r
-  SetCaption(TEr,"Draw");\r
-  TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "draw button data");\r
-  ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->text=TENewText("Draw mode", "draw button text");\r
-  ((struct DATABUTTON *)(TEr->data))->buttontype=RADIOBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->bitflag=&TEeditmode;\r
-  ((struct DATABUTTON *)(TEr->data))->bitvalue=EDDRAW;\r
-\r
-  TEr=TEregs+FILLBUT;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=TEregs[EDMDFRM].x1+2;\r
-  TEr->x2=TEregs[EDMDFRM].x2-2;\r
-  TEr->y1=TEregs[EDMDFRM].y1+2+11;\r
-  TEr->y2=TEr->y1+10;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE;\r
-  TEr->drawproc=&DrawButton;\r
-  TEr->caption=NULL;\r
-  SetCaption(TEr,"Fill");\r
-  TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "fill button data");\r
-  ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->text=TENewText("Fill mode", "fill button text");\r
-  ((struct DATABUTTON *)(TEr->data))->buttontype=RADIOBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->bitflag=&TEeditmode;\r
-  ((struct DATABUTTON *)(TEr->data))->bitvalue=EDFILL;\r
-\r
-  TEr=TEregs+PICKBUT;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=TEregs[EDMDFRM].x1+2;\r
-  TEr->x2=TEregs[EDMDFRM].x2-2;\r
-  TEr->y1=TEregs[EDMDFRM].y1+2+22;\r
-  TEr->y2=TEr->y1+10;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE;\r
-  TEr->drawproc=&DrawButton;\r
-  TEr->caption=NULL;\r
-  SetCaption(TEr,"Pick");\r
-  TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "pick button data");\r
-  ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->text=TENewText("Pick color mode", "pick button text");\r
-  ((struct DATABUTTON *)(TEr->data))->buttontype=RADIOBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->bitflag=&TEeditmode;\r
-  ((struct DATABUTTON *)(TEr->data))->bitvalue=EDPICK;\r
-\r
-  TEr=TEregs+MASKBUT;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=TEregs[EDMDFRM].x1+2;\r
-  TEr->x2=TEregs[EDMDFRM].x2-2;\r
-  TEr->y1=TEregs[EDMDFRM].y1+2+33;\r
-  TEr->y2=TEr->y1+10;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE;\r
-  TEr->drawproc=&DrawButton;\r
-  TEr->caption=NULL;\r
-  SetCaption(TEr,"Select");\r
-  TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "select button data");\r
-  ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->text=TENewText("Select mode", "select button text");\r
-  ((struct DATABUTTON *)(TEr->data))->buttontype=RADIOBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->bitflag=&TEeditmode;\r
-  ((struct DATABUTTON *)(TEr->data))->bitvalue=EDMASK;\r
-\r
-  TEr=TEregs+PSTEBUT;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=TEregs[EDMDFRM].x1+2;\r
-  TEr->x2=TEregs[EDMDFRM].x2-2;\r
-  TEr->y1=TEregs[EDMDFRM].y1+2+44;\r
-  TEr->y2=TEr->y1+10;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE;\r
-  TEr->drawproc=&DrawButton;\r
-  TEr->caption=NULL;\r
-  SetCaption(TEr,"Paste");\r
-  TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "paste button data");\r
-  ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->text=TENewText("Paste mode", "paste button text");\r
-  ((struct DATABUTTON *)(TEr->data))->buttontype=RADIOBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->bitflag=&TEeditmode;\r
-  ((struct DATABUTTON *)(TEr->data))->bitvalue=EDPASTE;\r
-\r
-  TEr=TEregs+IND_FRM;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=TEregs[SCTXTBX].x2+2;\r
-  TEr->x2=TEr->x1+12*4-1; // 10*number of buttons\r
-  TEr->y1=TEregs[SCTXTBX].y1;\r
-  TEr->y2=TEr->y1+13;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE|REGNOCLICK;\r
-  TEr->drawproc=&DrawSunkRegion;\r
-  TEr->caption=NULL;\r
-  TEr->data=NULL;\r
-\r
-  TEr=TEregs+MASKIND;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=TEregs[IND_FRM].x1+2;\r
-  TEr->x2=TEr->x1+10;\r
-  TEr->y1=TEregs[IND_FRM].y1+2;\r
-  TEr->y2=TEregs[IND_FRM].y2-2;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE;\r
-  TEr->drawproc=&DrawButton;\r
-  TEr->caption=NULL;\r
-  SetCaption(TEr,"m");\r
-  TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "mask indicator data");\r
-  ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->text=TENewText("mask", "mask indicator text");\r
-  ((struct DATABUTTON *)(TEr->data))->buttontype=PUSHBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbitflags;\r
-  ((struct DATABUTTON *)(TEr->data))->bitvalue=TESHOWMSK;\r
-\r
-  TEr=TEregs+GRIDIND;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=TEregs[MASKIND].x2+1;\r
-  TEr->x2=TEr->x1+10;\r
-  TEr->y1=TEregs[IND_FRM].y1+2;\r
-  TEr->y2=TEregs[IND_FRM].y2-2;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE;\r
-  TEr->drawproc=&DrawButton;\r
-  TEr->caption=NULL;\r
-  SetCaption(TEr,"g");\r
-  TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "grid button data");\r
-  ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->text=TENewText("grid", "grid indicator text");\r
-  ((struct DATABUTTON *)(TEr->data))->buttontype=PUSHBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbitflags;\r
-  ((struct DATABUTTON *)(TEr->data))->bitvalue=TEGRID;\r
-\r
-  TEr=TEregs+ANIMIND;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=TEregs[GRIDIND].x2+1;\r
-  TEr->x2=TEr->x1+10;\r
-  TEr->y1=TEregs[IND_FRM].y1+2;\r
-  TEr->y2=TEregs[IND_FRM].y2-2;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE;\r
-  TEr->drawproc=&DrawButton;\r
-  TEr->caption=NULL;\r
-  SetCaption(TEr,"a");\r
-  TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "animation button data");\r
-  ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->text=TENewText("animation", "animation indicator text");\r
-  ((struct DATABUTTON *)(TEr->data))->buttontype=PUSHBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbitflags;\r
-  ((struct DATABUTTON *)(TEr->data))->bitvalue=TEANIMATE;\r
-\r
-  TEr=TEregs+PXHLIND;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=TEregs[ANIMIND].x2+1;\r
-  TEr->x2=TEr->x1+10;\r
-  TEr->y1=TEregs[IND_FRM].y1+2;\r
-  TEr->y2=TEregs[IND_FRM].y2-2;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE;\r
-  TEr->drawproc=&DrawButton;\r
-  TEr->caption=NULL;\r
-  SetCaption(TEr,"h");\r
-  TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "highlight button data");\r
-  ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->text=TENewText("pixel highlight", "highlight indicator text");\r
-  ((struct DATABUTTON *)(TEr->data))->buttontype=PUSHBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbitflags;\r
-  ((struct DATABUTTON *)(TEr->data))->bitvalue=TEHILIGHT;\r
-\r
-  TEr=TEregs+BUT_FRM;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=TEregs[EDMDFRM].x1;\r
-  TEr->x2=TEregs[EDMDFRM].x2;\r
-  TEr->y1=TEregs[EDMDFRM].y2+2;\r
-  TEr->y2=TEr->y1+11*4+3;     // 10*number of buttons\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE|REGNOCLICK;\r
-  TEr->drawproc=&DrawSunkRegion;\r
-  TEr->caption=NULL;\r
-  TEr->data=NULL;\r
-\r
-  TEr=TEregs+UNDOBUT;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=TEregs[BUT_FRM].x1+2;\r
-  TEr->x2=TEregs[BUT_FRM].x2-2;\r
-  TEr->y1=TEregs[BUT_FRM].y1+2;\r
-  TEr->y2=TEr->y1+10;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE;\r
-  TEr->drawproc=&DrawButton;\r
-  TEr->caption=NULL;\r
-  SetCaption(TEr, "Undo");\r
-  TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "undo button data");\r
-  ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->text=TENewText("Undo last action", "undo button text");\r
-  ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbfa;\r
-  ((struct DATABUTTON *)(TEr->data))->bitvalue=BFAUNDO;\r
-\r
-  TEr=TEregs+COPYBUT;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=TEregs[BUT_FRM].x1+2;\r
-  TEr->x2=TEregs[BUT_FRM].x2-2;\r
-  TEr->y1=TEregs[BUT_FRM].y1+2+11;\r
-  TEr->y2=TEr->y1+10;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE;\r
-  TEr->drawproc=&DrawButton;\r
-  TEr->caption=NULL;\r
-  SetCaption(TEr, "Copy");\r
-  TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "copy button data");\r
-  ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->text=TENewText("Copy selected area", "copy button text");\r
-  ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbfa;\r
-  ((struct DATABUTTON *)(TEr->data))->bitvalue=BFACOPY;\r
-\r
-  TEr=TEregs+CUT_BUT;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=TEregs[BUT_FRM].x1+2;\r
-  TEr->x2=TEregs[BUT_FRM].x2-2;\r
-  TEr->y1=TEregs[BUT_FRM].y1+2+22;\r
-  TEr->y2=TEr->y1+10;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE;\r
-  TEr->drawproc=&DrawButton;\r
-  TEr->caption=NULL;\r
-  SetCaption(TEr, "Cut");\r
-  TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "cut button data");\r
-  ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->text=TENewText("Cut selected area", "cut button text");\r
-  ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbfa;\r
-  ((struct DATABUTTON *)(TEr->data))->bitvalue=BFACUT;\r
-\r
-  TEr=TEregs+CLR_BUT;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=TEregs[BUT_FRM].x1+2;\r
-  TEr->x2=TEregs[BUT_FRM].x2-2;\r
-  TEr->y1=TEregs[BUT_FRM].y1+2+33;\r
-  TEr->y2=TEr->y1+10;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE;\r
-  TEr->drawproc=&DrawButton;\r
-  TEr->caption=NULL;\r
-  SetCaption(TEr, "Clear");\r
-  TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "clear button data");\r
-  ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->text=TENewText("Clear selected area", "clear button text");\r
-  ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbfa;\r
-  ((struct DATABUTTON *)(TEr->data))->bitvalue=BFACLEAR;\r
-\r
-  TEr=TEregs+TOOLFRM;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=TEregs[BUT_FRM].x2+2;\r
-  TEr->x2=TEr->x1+34;\r
-  TEr->y1=TEregs[BUT_FRM].y1;\r
-  TEr->y2=TEr->y1+11*4+3;     // 10*number of buttons\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE|REGNOCLICK;\r
-  TEr->drawproc=&DrawSunkRegion;\r
-  TEr->caption=NULL;\r
-  TEr->data=NULL;\r
-\r
-  TEr=TEregs+RIACBUT;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=TEregs[TOOLFRM].x1+2;\r
-  TEr->x2=TEregs[TOOLFRM].x2-2;\r
-  TEr->y1=TEregs[TOOLFRM].y1+2;\r
-  TEr->y2=TEr->y1+10;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE;\r
-  TEr->drawproc=&DrawButton;\r
-  TEr->caption=NULL;\r
-  SetCaption(TEr, "Turn L");\r
-  TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "rotate button data");\r
-  ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->text=TENewText("Rotate anticlockwise", "rotate button text");\r
-  ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbfa;\r
-  ((struct DATABUTTON *)(TEr->data))->bitvalue=BFARIAC;\r
-\r
-  TEr=TEregs+RIC_BUT;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=TEregs[TOOLFRM].x1+2;\r
-  TEr->x2=TEregs[TOOLFRM].x2-2;\r
-  TEr->y1=TEregs[TOOLFRM].y1+2+11;\r
-  TEr->y2=TEr->y1+10;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE;\r
-  TEr->drawproc=&DrawButton;\r
-  TEr->caption=NULL;\r
-  SetCaption(TEr, "Turn R");\r
-  TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "rotate button data");\r
-  ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->text=TENewText("Rotate clockwise", "rotate button text");\r
-  ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbfa;\r
-  ((struct DATABUTTON *)(TEr->data))->bitvalue=BFARIC;\r
-\r
-  TEr=TEregs+FLIPBUT;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=TEregs[TOOLFRM].x1+2;\r
-  TEr->x2=TEregs[TOOLFRM].x2-2;\r
-  TEr->y1=TEregs[TOOLFRM].y1+2+22;\r
-  TEr->y2=TEr->y1+10;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE;\r
-  TEr->drawproc=&DrawButton;\r
-  TEr->caption=NULL;\r
-  SetCaption(TEr, "Flip");\r
-  TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "flip button data");\r
-  ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->text=TENewText("Flip", "flip button text");\r
-  ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbfa;\r
-  ((struct DATABUTTON *)(TEr->data))->bitvalue=BFAFLIP;\r
-\r
-  TEr=TEregs+MIRRBUT;\r
-  TEr->infotype=DITREGION;\r
-  TEr->x1=TEregs[TOOLFRM].x1+2;\r
-  TEr->x2=TEregs[TOOLFRM].x2-2;\r
-  TEr->y1=TEregs[TOOLFRM].y1+2+33;\r
-  TEr->y2=TEr->y1+10;\r
-  TEr->bitflags=REGACTIVE|REGVISIBLE;\r
-  TEr->drawproc=&DrawButton;\r
-  TEr->caption=NULL;\r
-  SetCaption(TEr, "Mirror");\r
-  TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "mirror button data");\r
-  ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->text=TENewText("Mirror", "mirror button text");\r
-  ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON;\r
-  ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbfa;\r
-  ((struct DATABUTTON *)(TEr->data))->bitvalue=BFAMIRROR;\r
-\r
-  }\r
-\r
-static void DestroyRegions (TEREGION **TEBaseReg)\r
-  {\r
-  TEREGION *TEr=NULL;\r
-  int i;\r
-  if (!(*TEBaseReg)->data) err("No region data defined.");\r
-  if (((struct DATABASEREGION *)(*TEBaseReg)->data)->infotype!=DITBASEREGION)\r
-    err("DestroyRegions called with invalid base region.");\r
-\r
-  i=((struct DATABASEREGION *)(*TEBaseReg)->data)->numofregs;\r
-  do\r
-    {\r
-    i--;\r
-    TEr=(*TEBaseReg)+i;\r
-    TEFree(TEr->caption);\r
-    if (TEr->data)\r
-      {\r
-      switch (((struct DATABASEREGION *)(TEr->data))->infotype)\r
-        {\r
-        case DITBASEREGION:\r
-          break;\r
-        case DITBUTTON:\r
-          TEFree(((struct DATABUTTON *)TEr->data)->text);\r
-          break;\r
-        }\r
-      }\r
-    TEFree(TEr->data);\r
-    } while (i>0);\r
-  TEFree(*TEBaseReg);\r
-//  if (*TEBaseReg) err("Not freed");\r
-  }\r
-\r
-static void RenderTileEdit (TEREGION *TEBaseReg)\r
-// -- ric: 20/Jul/98 - updatedt to be a little more generic ;)\r
-  {\r
-  int i;\r
-  TExoffs=TEBaseReg->x1;\r
-  TEyoffs=TEBaseReg->y1;\r
-  if (!TEBaseReg->data) err("No region data defined.");\r
-  if (((struct DATABASEREGION *)TEBaseReg->data)->infotype!=DITBASEREGION)\r
-    err("RenderTileEdit called with invalid base region.");\r
-  switch (((struct DATABASEREGION *)TEBaseReg->data)->windowtype)\r
-    {\r
-    case DBRSTDWINDOW:\r
-      Window(TExoffs,TEyoffs,TEBaseReg->x2,TEBaseReg->y2, ((TEBaseReg->caption) ? TEBaseReg->caption : ""));\r
-      break;\r
-    case DBRPANEL:\r
-      stdwindow(TExoffs,TEyoffs,TEBaseReg->x2,TEBaseReg->y2);\r
-      break;\r
-    }\r
-\r
-  i=((struct DATABASEREGION *)TEBaseReg->data)->numofregs;\r
-  do\r
-    {\r
-    i--;\r
-    if ((TEBaseReg+i)->bitflags&REGVISIBLE) (TEBaseReg+i)->drawproc(TEBaseReg+i);\r
-    } while (i>1);\r
-  }\r
-\r
-void TileEdit (void)\r
-  {\r
-  int i,j;\r
-  int TEoldeditmode=EDDRAW;\r
-  if (TEbitflags&TEQUITCUR) TEbitflags^=TEQUITCUR;\r
-\r
-  InitTEImage();\r
-  SetupRegions();\r
-  TEeditmode=EDDRAW;  // Default to drawing mode\r
-  if (TEbitflags&TESHOWMSK) TEbitflags^=TESHOWMSK;\r
-\r
-  while (!(TEbitflags&TEQUITCUR))\r
-    {\r
-    // Mouse button click handler routines\r
-    MBClickHandler(TEregs);\r
-\r
-    TEbfa=BFANONE;          // Reset button action flag\r
-    if (TEeditmode==EDMASK && TEoldeditmode!=EDMASK) TEbitflags|=TESHOWMSK;\r
-    if (TEeditmode==EDMASK && TEoldeditmode==EDMASK && !(TEbitflags&TESHOWMSK))\r
-      TEeditmode=EDDRAW;\r
-    TEoldeditmode=TEeditmode;\r
-\r
-    // Draw loop\r
-    RenderTileEdit(TEregs);\r
-    DrawMouse();\r
-    ShowPage();\r
-\r
-    if (key[SCAN_ESC])\r
-      {\r
-      key[SCAN_ESC]=0;\r
-      TEbitflags|=TEQUITCUR;\r
-      }\r
-    if ((key[SCAN_CTRL] && key[SCAN_Z]) || (TEbfa&BFAUNDO) || (key[SCAN_U] && !(key[SCAN_CTRL])) && ((MBStatus[0]|MBStatus[1])==MOUSENONE))\r
-      {\r
-      key[SCAN_U]=0;\r
-      key[SCAN_Z]=0;\r
-      TEUndo();\r
-      }\r
-    if (key[SCAN_CTRL] && key[SCAN_R])\r
-      {\r
-      key[SCAN_R]=0;\r
-      memcpy(TEundo, TEimage, TExsize*TEysize);   // copy image into undo buffer\r
-      memcpy(TEimage, TEsource, TExsize*TEysize); // copy original image into edit buffer\r
-      }\r
-    if (key[SCAN_CTRL] && key[SCAN_A])\r
-      {\r
-      key[SCAN_A]=0;\r
-      j=TEysize*TExsize;\r
-      memset(TEmask, 0xf, j);\r
-      }\r
-    if (key[SCAN_CTRL] && key[SCAN_U])\r
-      {\r
-      key[SCAN_U]=0;\r
-      j=TEysize*TExsize;\r
-      memset(TEmask, 0x0, j);\r
-      }\r
-    if ((TEbfa&BFACOPY) || (key[SCAN_CTRL] && key[SCAN_C]) && ((MBStatus[0]|MBStatus[1])==MOUSENONE))\r
-      {\r
-      key[SCAN_C]=0;\r
-      TECopyImage();\r
-      }\r
-    if ((TEbfa&BFACUT) || (key[SCAN_CTRL] && key[SCAN_X]) && ((MBStatus[0]|MBStatus[1])==MOUSENONE))\r
-      {\r
-      key[SCAN_X]=0;\r
-      TECopyImage();\r
-      TEClearImage();\r
-      }\r
-    if (key[SCAN_CTRL] && key[SCAN_V] && ((MBStatus[0]|MBStatus[1])==MOUSENONE))\r
-      {\r
-      key[SCAN_V]=0;\r
-      TEeditmode=EDPASTE;\r
-      }\r
-    if ((TEbfa&BFACLEAR) || key[SCAN_DEL] && ((MBStatus[0]|MBStatus[1])==MOUSENONE))\r
-      {\r
-      key[SCAN_DEL]=0;\r
-      TEClearImage();\r
-      }\r
-    if (key[SCAN_Q] && ((MBStatus[0]|MBStatus[1])==MOUSENONE))\r
-      {\r
-      key[SCAN_Q]=0;\r
-      if (TEtype==TETILE && TEanimstrand)\r
-        {\r
-        if (TEtile>vspanim[TEanimstrand-1].start)\r
-          {\r
-          // Change tile index\r
-          TEtile-=1;\r
-          i=TExsize;\r
-          j=TEysize;\r
-\r
-          // Restart editor\r
-          RestartTileEditor();\r
-          }\r
-        }\r
-      }\r
-    if (key[SCAN_W] && ((MBStatus[0]|MBStatus[1])==MOUSENONE))\r
-      {\r
-      key[SCAN_W]=0;\r
-      if (TEtype==TETILE && TEanimstrand)\r
-        {\r
-        if (TEtile<vspanim[TEanimstrand-1].finish)\r
-          {\r
-          // Change tile index\r
-          TEtile+=1;\r
-          i=TExsize;\r
-          j=TEysize;\r
-\r
-          // Restart editor\r
-          RestartTileEditor();\r
-          }\r
-        }\r
-      }\r
-\r
-    if ((TEbfa&BFARIAC) || key[SCAN_L] && ((MBStatus[0]|MBStatus[1])==MOUSENONE))\r
-      {\r
-      key[SCAN_L]=0;\r
-      switch (TEeditmode)\r
-        {\r
-        case EDDRAW:\r
-          memcpy(TEundo, TEimage, TExsize*TEysize);\r
-          TERotateImageAntiClockwise(TEimage, TExsize, TEysize);\r
-          break;\r
-        case EDMASK:\r
-          TERotateImageAntiClockwise(TEmask, TExsize, TEysize);\r
-          break;\r
-        case EDPASTE:\r
-          if (TEcopy)\r
-            {\r
-            TERotateImageAntiClockwise(TEcopy, TEcopyxsize, TEcopyysize);\r
-            TERotateImageAntiClockwise(TEcmsk, TEcopyxsize, TEcopyysize);\r
-            }\r
-          break;\r
-        }\r
-      }\r
-    if ((TEbfa&BFARIC) || key[SCAN_R] && ((MBStatus[0]|MBStatus[1])==MOUSENONE))\r
-      {\r
-      key[SCAN_R]=0;\r
-      switch (TEeditmode)\r
-        {\r
-        case EDDRAW:\r
-          memcpy(TEundo, TEimage, TExsize*TEysize);\r
-          TERotateImageClockwise(TEimage, TExsize, TEysize);\r
-          break;\r
-        case EDMASK:\r
-          TERotateImageClockwise(TEmask, TExsize, TEysize);\r
-          break;\r
-        case EDPASTE:\r
-          if (TEcopy)\r
-            {\r
-            TERotateImageClockwise(TEcopy, TEcopyxsize, TEcopyysize);\r
-            TERotateImageClockwise(TEcmsk, TEcopyxsize, TEcopyysize);\r
-            }\r
-          break;\r
-        }\r
-      }\r
-    if ((TEbfa&BFAMIRROR) || key[SCAN_X] && ((MBStatus[0]|MBStatus[1])==MOUSENONE))\r
-      {\r
-      key[SCAN_X]=0;\r
-      switch (TEeditmode)\r
-        {\r
-        case EDDRAW:\r
-          memcpy(TEundo, TEimage, TExsize*TEysize);\r
-          TEMirrorImage(TEimage, TExsize, TEysize);\r
-          break;\r
-        case EDMASK:\r
-          TEMirrorImage(TEmask, TExsize, TEysize);\r
-          break;\r
-        case EDPASTE:\r
-          if (TEcopy)\r
-            {\r
-            TEMirrorImage(TEcopy, TEcopyxsize, TEcopyysize);\r
-            TEMirrorImage(TEcmsk, TEcopyxsize, TEcopyysize);\r
-            }\r
-          break;\r
-        }\r
-      }\r
-    if ((TEbfa&BFAFLIP) || key[SCAN_Y] && ((MBStatus[0]|MBStatus[1])==MOUSENONE))\r
-      {\r
-      key[SCAN_Y]=0;\r
-      switch (TEeditmode)\r
-        {\r
-        case EDDRAW:\r
-          memcpy(TEundo, TEimage, TExsize*TEysize);\r
-          TEFlipImage(TEimage, TExsize, TEysize);\r
-          break;\r
-        case EDMASK:\r
-          TEFlipImage(TEmask, TExsize, TEysize);\r
-          break;\r
-        case EDPASTE:\r
-          if (TEcopy)\r
-            {\r
-            TEFlipImage(TEcopy, TEcopyxsize, TEcopyysize);\r
-            TEFlipImage(TEcmsk, TEcopyxsize, TEcopyysize);\r
-            }\r
-          break;\r
-        }\r
-      }\r
-    if (key[SCAN_F1])\r
-      {\r
-      key[SCAN_F1]=0;\r
-\r
-      // Deacitvate tile editor\r
-      for (i=0; i<MAX_REGIONS; i++)\r
-        if (TEregs[i].bitflags&REGACTIVE) TEregs[i].bitflags^=REGACTIVE;\r
-\r
-      AboutTE();\r
-\r
-      // Reacitvate tile editor\r
-      for (i=0; i<MAX_REGIONS; i++)\r
-        TEregs[i].bitflags|=REGACTIVE;\r
-      }\r
-    if (key[SCAN_A])\r
-      {\r
-      key[SCAN_A]=0;\r
-      lcolor+=1;\r
-      lcolor&=255;\r
-      }\r
-    if (key[SCAN_D])\r
-      {\r
-      key[SCAN_D]=0;\r
-      rcolor+=1;\r
-      rcolor&=255;\r
-      }\r
-    if (key[SCAN_Z])\r
-      {\r
-      key[SCAN_Z]=0;\r
-      if (!lcolor) lcolor=255;\r
-      else lcolor-=1;\r
-      }\r
-    if (key[SCAN_C])\r
-      {\r
-      key[SCAN_C]=0;\r
-      if (!rcolor) rcolor=255;\r
-      else rcolor-=1;\r
-      }\r
-    if (key[SCAN_G])\r
-      {\r
-      key[SCAN_G]=0;\r
-      TEbitflags^=TEGRID;\r
-      }\r
-    if (key[SCAN_H])\r
-      {\r
-      key[SCAN_H]=0;\r
-      TEbitflags^=TEHILIGHT;\r
-      }\r
-    if (key[SCAN_I])\r
-      {\r
-      key[SCAN_I]=0;\r
-      j=TEysize*TExsize;\r
-      do\r
-        {\r
-        j--;\r
-        TEmask[j]^=0xf;\r
-        } while (j>0);\r
-      }\r
-    if (key[SCAN_M])\r
-      {\r
-      key[SCAN_M]=0;\r
-      if (TEeditmode==EDMASK)\r
-        TEeditmode=EDDRAW;\r
-      TEbitflags^=TESHOWMSK;\r
-      }\r
-    if (key[SCAN_SPACE])\r
-      {\r
-      key[SCAN_SPACE]=0;\r
-      if (TEeditmode==EDDRAW)\r
-        {\r
-        TEeditmode=EDMASK;\r
-        TEbitflags|=TESHOWMSK;\r
-        }\r
-      else\r
-        TEeditmode=EDDRAW;\r
-      }\r
-    if (key[SCAN_PGUP])\r
-      {\r
-      key[SCAN_PGUP]=0;\r
-      switch (TEeditmode)\r
-        {\r
-        case EDDRAW:\r
-        case EDMASK:\r
-          memcpy(TEundo, TEimage, TExsize*TEysize);\r
-          if (TEbitflags&TESHOWMSK)\r
-            TEShiftColours(TEimage, TEmask, TExsize, TEysize, 1);\r
-          else\r
-            TEShiftColours(TEimage, NULL, TExsize, TEysize, 1);\r
-          break;\r
-        case EDPASTE:\r
-          if (TEcopy)\r
-            TEShiftColours(TEcopy, TEcmsk, TEcopyxsize, TEcopyysize, 1);\r
-          break;\r
-        }\r
-      }\r
-    if (key[SCAN_PGDN])\r
-      {\r
-      key[SCAN_PGDN]=0;\r
-      switch (TEeditmode)\r
-        {\r
-        case EDDRAW:\r
-        case EDMASK:\r
-          memcpy(TEundo, TEimage, TExsize*TEysize);\r
-          if (TEbitflags&TESHOWMSK)\r
-            TEShiftColours(TEimage, TEmask, TExsize, TEysize, -1);\r
-          else\r
-            TEShiftColours(TEimage, NULL, TExsize, TEysize, -1);\r
-          break;\r
-        case EDPASTE:\r
-          if (TEcopy)\r
-            TEShiftColours(TEcopy, TEcmsk, TEcopyxsize, TEcopyysize, -1);\r
-          break;\r
-        }\r
-      }\r
-\r
-    if (key[SCAN_LANGLE])\r
-      {\r
-      key[SCAN_LANGLE]=0;\r
-      ShutdownVideo();\r
-      TEFreeReg(TEregs);\r
-      vm=0;\r
-      InitVideo(0);\r
-      SetupRegions();\r
-      set_intensity(63);\r
-      InitMouse();\r
-      }\r
-    if (key[SCAN_RANGLE])\r
-      {\r
-      key[SCAN_RANGLE]=0;\r
-      ShutdownVideo();\r
-      TEFreeReg(TEregs);\r
-      vm=1;\r
-      InitVideo(1);\r
-      SetupRegions();\r
-      set_intensity(63);\r
-      InitMouse();\r
-      }\r
-    }\r
-  DeinitTEImage();\r
-  TEFreeReg(TEregs);\r
-  }\r
diff --git a/16/v2/source/verge/MAPED/TILEED.H b/16/v2/source/verge/MAPED/TILEED.H
deleted file mode 100755 (executable)
index 11419f6..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef TILEED_INC\r
-#define TILEED_INC\r
-\r
-// TEtype defs\r
-#define TEUNKNOWN 0\r
-#define TETILE    1\r
-\r
-// external functions\r
-extern void TileEdit(void);\r
-\r
-// external variables\r
-extern unsigned int TEtype;    // type of graphic being edited\r
-extern unsigned int TEtile; // tile to edit - may possibly expand this to an array for simultaneous editing\r
-extern unsigned int TExsize;   // width of graphic being edited\r
-extern unsigned int TEysize;   // height of graphic being edited\r
-extern unsigned char *TEsource; // pointer to original image being edited\r
-\r
-#endif\r
diff --git a/16/v2/source/verge/MAPED/TILESEL.C b/16/v2/source/verge/MAPED/TILESEL.C
deleted file mode 100755 (executable)
index 834ad9d..0000000
+++ /dev/null
@@ -1,1448 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include <stdio.h>\r
-#include <string.h>\r
-#include <malloc.h>\r
-#include <stdlib.h>\r
-\r
-#include "config.h"\r
-#include "keyboard.h"\r
-#include "maped.h"\r
-#include "mouse.h"\r
-#include "render.h"\r
-#include "tileed.h"\r
-#include "timer.h"\r
-#include "vdriver.h"\r
-\r
-#include "smalfont.h"\r
-#include "guicomp.h"\r
-#include "gui.h"\r
-\r
-extern byte TileCmp(byte *one, byte *two); //zero\r
-\r
-// ================================= Data ====================================\r
-\r
-int selofs=0;\r
-char ttile[256], ttile2[256];\r
-char curastd=0;\r
-char curmode=0;\r
-\r
-// ================================= Code ====================================\r
-\r
-int curtileptr(int row)\r
-{\r
-  int jumper,wide;\r
-  int x,y;\r
-\r
-  jumper=16+pad;\r
-  wide=320/jumper;\r
-\r
-  x=(mx-16)/jumper;\r
-  y=((my-16)/jumper)*wide;\r
-\r
-  return x+y+row;\r
-}\r
-\r
-void NormalButton(int x1, int y1, int x2, int y2, char *str)\r
-{\r
-  FilledBox(x1, y1, x2, y2, winbg);\r
-  HLine(x1, y1, x2, black);\r
-  VLine(x1, y1, y2, black);\r
-  HLine(x1+1, y1+y2-1, x2-1, black);\r
-  VLine(x1+x2-1, y1+1, y2-1, black);\r
-\r
-  HLine(x1+1, y1+1, x2-2, brightw);\r
-  VLine(x1+1, y1+1, y2-2, brightw);\r
-  HLine(x1+2, y1+y2-2, x2-3, darkw);\r
-  VLine(x1+x2-2, y1+2, y2-3, darkw);\r
-  GotoXY(x1+((x2-pixels(str))/2), y1+3);\r
-  printstring(str);\r
-}\r
-\r
-void PressdButton(int x1, int y1, int x2, int y2, char *str)\r
-{\r
-  FilledBox(x1, y1, x2, y2, winbg);\r
-  HLine(x1, y1, x2, black);\r
-  VLine(x1, y1, y2, black);\r
-  HLine(x1+1, y1+y2-1, x2-1, black);\r
-  VLine(x1+x2-1, y1+1, y2-1, black);\r
-\r
-  HLine(x1+1, y1+1, x2-2, darkw);\r
-  VLine(x1+1, y1+1, y2-2, darkw);\r
-  GotoXY(x1+((x2-pixels(str))/2)+1, y1+4);\r
-  printstring(str);\r
-}\r
-\r
-void RenderSelector()\r
-{ unsigned char *img,i,j;\r
-  int z;\r
-  int tskip=16+pad;\r
-  int twide=320/tskip;\r
-  int tdeep=((200+15)&~15)/tskip;\r
-\r
-  ClearScreen();\r
-\r
-  for (i=0; i<tdeep; ++i)\r
-    for (j=0; j<twide; ++j)\r
-    {\r
-      img=vsp+(256*((i*twide)+j+selofs));\r
-      if (((i*twide)+j+selofs)>=numtiles) img=vsp;\r
-      CopyTile((j*tskip)+16,(i*tskip)+16,img);\r
-    }\r
-  if (th)\r
-  {\r
-    if (my<(tsy-40))\r
-    DrawHighlight( ((mx/tskip)*tskip)-(1+pad),\r
-                   ((my/tskip)*tskip)-(1+pad));\r
-  }\r
-  z=tsy-40;\r
-  sprintf(strbuf,"MapEd %s Tile Selector - Tile %d/%d",ME2_VERSION,curtileptr(selofs),numtiles);\r
-  Window(16,z,336,z+40,strbuf);\r
-  HLine(278, z+11, 53, darkw);\r
-  VLine(278, z+11, 25, darkw);\r
-  VLine(330, z+12, 24, brightw);\r
-  HLine(279, z+35, 51, brightw);\r
-  if (curmode==0) PressdButton(290, z+12, 40, 12, "Select");\r
-             else NormalButton(290, z+12, 40, 12, "Select");\r
-  if (curmode==1) PressdButton(290, z+23, 40, 12, "Edit");\r
-             else NormalButton(290, z+23, 40, 12, "Edit");\r
-  if (th)         PressdButton(279, z+12, 12, 12, "H");\r
-             else NormalButton(279, z+12, 12, 12, "H");\r
-  if (pad)        PressdButton(279, z+23, 12, 12, "P");\r
-             else NormalButton(279, z+23, 12, 12, "P");\r
-\r
-  HLine(219, z+11, 52, darkw);\r
-  VLine(219, z+11, 25, darkw);\r
-  VLine(270, z+12, 24, brightw);\r
-  HLine(220, z+35, 50, brightw);\r
-  NormalButton(220, z+12, 50, 12, "Import VSP");\r
-  NormalButton(220, z+23, 50, 12, "Import PCX");\r
-\r
-  HLine(160, z+11, 52, darkw);\r
-  VLine(160, z+11, 25, darkw);\r
-  VLine(211, z+12, 24, brightw);\r
-  HLine(161, z+35, 50, brightw);\r
-  NormalButton(161, z+12, 50, 12, "Add Tiles");\r
-  NormalButton(161, z+23, 50, 12, "Animation");\r
-\r
-  HLine(26, z+10, 20, darkw);\r
-  VLine(26, z+10, 20, darkw);\r
-  HLine(27, z+29, 19, brightw);\r
-  VLine(45, z+11, 19, brightw);\r
-  FilledBox(27, z+11, 18, 18, black);\r
-  CopyTile(28, z+12, ttile2);\r
-  GotoXY(20, z+32); printstring("Clipboard");\r
-}\r
-\r
-void FlipX(unsigned short edtile)\r
-{ int i,j;\r
-\r
-  key[SCAN_X]=0;\r
-  if (edtile>=numtiles) return;\r
-  memcpy(ttile,&vsp[edtile*256],256);\r
-  modified=1;\r
-\r
-  for (i=0;i<16;i++)\r
-      for (j=0;j<16;j++)\r
-          vsp[((edtile)*256)+(j*16)+i]=ttile[(j*16)+(15-i)];\r
-}\r
-\r
-void FlipY(unsigned short edtile)\r
-{ int i,j;\r
-\r
-  key[SCAN_Y]=0;\r
-  if (edtile>=numtiles) return;\r
-  memcpy(ttile,&vsp[edtile*256],256);\r
-  modified=1;\r
-\r
-  for (i=0;i<16;i++)\r
-      for (j=0;j<16;j++)\r
-          vsp[((edtile)*256)+(j*16)+i]=ttile[((15-j)*16)+i];\r
-}\r
-\r
-void FlipZ(unsigned short edtile)\r
-{ int i,j;\r
-\r
-  key[SCAN_Z]=0;\r
-  if (edtile>=numtiles) return;\r
-  memcpy(ttile,&vsp[edtile*256],256);\r
-  modified=1;\r
-\r
-  for (i=0;i<16;i++)\r
-      for (j=0;j<16;j++)\r
-          vsp[((edtile)*256)+(j*16)+i]=ttile[(i*16)+j];\r
-}\r
-\r
-void DrawHighlight(int x, int y)\r
-{\r
-  if (x<10 || y<10 || x>330 || y>sy+10) return;\r
-  HLine(x, y, 18, white);\r
-  HLine(x, y+17, 18, white);\r
-  VLine(x, y, 18, white);\r
-  VLine(x+17, y, 18, white);\r
-}\r
-\r
-void TileSelector()\r
-{ int z, ct, k,j,m;\r
-  char *s, *d;\r
-\r
-  int ms_down=0; // aen\r
-  int ms_up=0;\r
-\r
-  while (!key[SCAN_ESC])\r
-  {\r
-     RenderSelector();\r
-     RenderMessages();\r
-     DrawMouse();\r
-     ShowPage();\r
-\r
-     ms_down=0;\r
-     ms_up=0;\r
-     if (mouse_scroll)\r
-     {\r
-       if (my>tsy-2) ms_down=1;\r
-       if (my<18) ms_up=1;\r
-     }\r
-\r
-     if ((key[SCAN_DOWN] || (ms_down && (!(systemtime%10)))) && selofs<65319)\r
-     {\r
-       if (!pad) selofs=selofs+20;\r
-       else selofs+=18;\r
-       key[SCAN_DOWN]=0;\r
-       systemtime++;\r
-     }\r
-     if ((key[SCAN_UP] || (ms_up && (!(systemtime%10)))) && selofs>17)\r
-     {\r
-       if (!pad) selofs-=20;\r
-       else selofs-=18;\r
-       key[SCAN_UP]=0;\r
-       systemtime++;\r
-     }\r
-     if (key[SCAN_P])\r
-     {\r
-        key[SCAN_P]=0;\r
-        pad=pad ^ 1;\r
-        selofs=0;\r
-        if (pad) Message("Tile padding enabled.",100);\r
-            else Message("Tile padding disabled.",100);\r
-     }\r
-     if (key[SCAN_H])\r
-     {\r
-       key[SCAN_H]=0;\r
-       th=th ^ 1;\r
-       if (th) Message("Tile Highlight enabled.",100);\r
-          else Message("Tile Highlight disabled.",100);\r
-     }\r
-\r
-     if (key[SCAN_X]) FlipX(curtileptr(selofs));\r
-     if (key[SCAN_Y]) FlipY(curtileptr(selofs));\r
-     if (key[SCAN_Z]) FlipZ(curtileptr(selofs));\r
-     if (key[SCAN_V]) VSPAnimDialog();\r
-     if (key[SCAN_CTRL] && key[SCAN_C])\r
-     {\r
-       memcpy(ttile2, (char *) (vsp+(256*curtileptr(selofs))), 256);\r
-       key[SCAN_C]=0;\r
-     }\r
-     if (key[SCAN_CTRL] && key[SCAN_S])\r
-     {\r
-       if (curtileptr(selofs) >= numtiles) return;\r
-       memcpy((char *) (vsp+(256*curtileptr(selofs))), ttile2, 256);\r
-       modified=1;\r
-       key[SCAN_S]=0;\r
-     }\r
-     if (key[SCAN_CTRL] && key[SCAN_T])\r
-     {\r
-       if (curtileptr(selofs) >= numtiles) return;\r
-       modified=1;\r
-       s=ttile2;\r
-       d=(char *) (vsp+(256*curtileptr(selofs)));\r
-       for (z=0; z<256; z++)\r
-       {\r
-         if (*s) *d=*s;\r
-         d++;\r
-         s++;\r
-       }\r
-       key[SCAN_T]=0;\r
-     }\r
-     if (key[SCAN_CTRL] && key[SCAN_D] && !key[SCAN_ALT])\r
-     {\r
-        key[SCAN_D]=0;\r
-        modified=1;\r
-        z=curtileptr(selofs);\r
-        if (z<numtiles)\r
-        {\r
-          memcpy(vsp+(z*256),vsp+((z+1)*256),((numtiles-z-1)*256));\r
-          numtiles--;\r
-        }\r
-     }\r
-// zero: Super Delete Mode!\r
-// wimpy delete irks me.\r
-     if (key[SCAN_CTRL] && key[SCAN_D] && key[SCAN_ALT])\r
-     {\r
-       key[SCAN_D]=0;\r
-       modified=1;\r
-       z=curtileptr(selofs);\r
-       if(ct<numtiles)\r
-       {\r
-         if(z<numtiles)\r
-         {\r
-           memcpy(vsp+(z*256),vsp+((z+1)*256),((numtiles-z-1)*256));\r
-           numtiles--;\r
-           for(k=0;k<numlayers;k++)\r
-           {\r
-             for(j=0; j<layer[k].sizey; j++)\r
-             {\r
-               for(m=0; m<layer[k].sizex; m++)\r
-               {\r
-                 if(layers[k][j*layer[k].sizex+m]==z) layers[k][j*layer[k].sizex+m]=0;\r
-                 if(layers[k][j*layer[k].sizex+m]>z) layers[k][j*layer[k].sizex+m]--;\r
-               }\r
-             }\r
-           }\r
-         }\r
-       }\r
-     }\r
-// zero: Super Insert Mode!\r
-// wimpy insert irks me.\r
-     if (key[SCAN_CTRL] && key[SCAN_I] && key[SCAN_ALT])\r
-     {\r
-       key[SCAN_I]=0;\r
-       ct=curtileptr(selofs);\r
-       if (ct <= numtiles)\r
-       {\r
-         modified=1;\r
-         s=(char *) valloc((numtiles+1)*256, "s_ins",0);\r
-         memcpy(s, vsp, (numtiles*256));\r
-         vfree(vsp); vsp=s; s=0;\r
-         for (z=numtiles-1; z>=ct; z--)\r
-           memcpy(vsp+((z+1)*256),vsp+(z*256),256);\r
-         memset(vsp+(ct*256), 0, 256);\r
-         numtiles++;\r
-       }\r
-       for(k=0;k<numlayers;k++)\r
-       {\r
-         for(j=0; j<layer[k].sizey; j++)\r
-         {\r
-           for(m=0; m<layer[k].sizex; m++)\r
-           {\r
-             if(layers[k][j*layer[k].sizex+m]>=ct) layers[k][j*layer[k].sizex+m]++;\r
-           }\r
-         }\r
-       }\r
-     }\r
-\r
-     if (key[SCAN_CTRL] && key[SCAN_I] && !key[SCAN_ALT])\r
-     {\r
-       key[SCAN_I]=0;\r
-       ct=curtileptr(selofs);\r
-       if (ct <= numtiles)\r
-       {\r
-         modified=1;\r
-         s=(char *)valloc((numtiles+1)*256,"s_ins",0);\r
-         memcpy(s, vsp, (numtiles*256));\r
-         vfree(vsp); vsp=s; s=0;\r
-         for (z=numtiles-1; z>=ct; z--)\r
-           memcpy(vsp+((z+1)*256),vsp+(z*256),256);\r
-         memset(vsp+(ct*256), 0, 256);\r
-         numtiles++;\r
-       }\r
-     }\r
-     if (key[SCAN_E])\r
-     {\r
-       modified=1;\r
-       TEtile=curtileptr(selofs); // middle tile initially\r
-       if (TEtile<numtiles)\r
-       {\r
-         TEtype=TETILE;\r
-         TEsource=vsp+(256*TEtile);\r
-         TExsize=16;\r
-         TEysize=16;\r
-         TileEdit();\r
-       }\r
-     }\r
-\r
-     if (mb==1 && my<(tsy-40) && !curmode)\r
-     {\r
-        if (curtileptr(selofs)<numtiles)\r
-        {\r
-          lt=curtileptr(selofs);\r
-          key[SCAN_ESC]=1;\r
-        }\r
-        WaitRelease();\r
-      }\r
-     if (mb==2 && my<(tsy-40) && !curmode)\r
-     {\r
-        if (curtileptr(selofs)<numtiles)\r
-        {\r
-          rt=curtileptr(selofs);\r
-          key[SCAN_ESC]=1;\r
-        }\r
-        WaitRelease();\r
-     }\r
-     if (mb && my<(tsy-40) && curmode)\r
-     {\r
-       WaitRelease();\r
-       TEtile=curtileptr(selofs); // middle tile initially\r
-       if (TEtile<numtiles)\r
-       {\r
-         modified=1;\r
-         TEtype=TETILE;\r
-         TEsource=vsp+(256*TEtile);\r
-         TExsize=16;\r
-         TEysize=16;\r
-         TileEdit();\r
-       }\r
-     }\r
-     z=tsy-40;\r
-     if (mb && mx>290 && mx<330 && my>z+12 && my<z+23)\r
-     {\r
-       curmode=0;\r
-       WaitRelease();\r
-       Message("Tile select mode.",100);\r
-     }\r
-     if (mb && mx>290 && mx<330 && my>z+23 && my<z+47)\r
-     {\r
-       curmode=1;\r
-       WaitRelease();\r
-       Message("Tile edit mode.",100);\r
-     }\r
-     if (mb && mx>278 && mx<289 && my>z+12 && my<z+23)\r
-     {\r
-       WaitRelease();\r
-       th=th ^ 1;\r
-       if (th) Message("Tile Highlight enabled.",100);\r
-          else Message("Tile Highlight disabled.",100);\r
-        mb=0;\r
-     }\r
-     if (mb && mx>278 && mx<289 && my>z+23 && my<z+47)\r
-     {\r
-       WaitRelease();\r
-       selofs=0;\r
-       pad=pad ^ 1;\r
-       if (pad) Message("Tile padding enabled.",100);\r
-           else Message("Tile padding disabled.",100);\r
-        mb=0;\r
-     }\r
-     if (mb && mx>161 && mx<210 && my>z+12 && my<z+23)\r
-     {\r
-        modified=1;\r
-        PressdButton(161, z+12, 50, 12, "Add Tiles");\r
-        while (mb)\r
-        {\r
-          ReadMouse();\r
-          ShowPage();\r
-        }\r
-        WaitRelease();\r
-        AddTilesDialog();\r
-        mb=0;\r
-     }\r
-     if (mb && mx>161 && mx<210 && my>z+23 && my<z+47)\r
-     {\r
-        PressdButton(161, z+23, 50, 12, "Animation");\r
-        while (mb)\r
-        {\r
-          ReadMouse();\r
-          ShowPage();\r
-        }\r
-        WaitRelease();\r
-        VSPAnimDialog();\r
-        mb=0;\r
-     }\r
-     if (mb && mx>220 && mx<270 && my>z+12 && my<z+24)\r
-     {\r
-        PressdButton(220, z+12, 50, 12, "Import VSP");\r
-        while (mb)\r
-        {\r
-          ReadMouse();\r
-          ShowPage();\r
-        }\r
-        WaitRelease();\r
-        ImportVSP();\r
-        modified=1;\r
-        mb=0;\r
-     }\r
-     if (mb && mx>220 && mx<270 && my>z+23 && my<z+47)\r
-     {\r
-        PressdButton(220, z+23, 50, 12, "Import PCX");\r
-        while (mb)\r
-        {\r
-          ReadMouse();\r
-          ShowPage();\r
-        }\r
-        WaitRelease();\r
-        ImportPCX();\r
-        modified=1;\r
-        mb=0;\r
-     }\r
-     if (key[SCAN_F10])\r
-     {\r
-      key[SCAN_F10]=0;\r
-      SaveMAP(mapname);\r
-      SaveVSP(vspname);\r
-      Message("MAP/VSP saved.",100);\r
-      modified=0;\r
-    }\r
-  }\r
-  key[SCAN_ESC]=0;\r
-}\r
-\r
-int vaxsize=150, vaysize=66;\r
-int vaxofs=20, vayofs=20;\r
-\r
-void VSPAnimDialog()\r
-{ char done=0, moving=0, i=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str, bleh;\r
-  char nstr1[80], nstr2[80], nstr3[80], nstr4[80];\r
-\r
-  bleh=th;\r
-  th=0;\r
-  i=curastd;\r
-  sprintf(nstr1, "%d", vspanim[i].start);\r
-  sprintf(nstr2, "%d", vspanim[i].finish);\r
-  sprintf(nstr3, "%d", vspanim[i].delay);\r
-  sprintf(nstr4, "%d", vspanim[i].mode);\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderSelector();\r
-    RenderMessages();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      vaxofs = (mx-mxo);\r
-      vayofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (vaxofs<16) vaxofs = 16;\r
-      if (vayofs<16) vayofs = 16;\r
-      if (vaxofs+vaxsize>335) vaxofs = 336-vaxsize;\r
-      if (vayofs+vaysize>sy+16) vayofs = (sy+16)-vaysize;\r
-    }\r
-\r
-    Window(vaxofs, vayofs, vaxofs+vaxsize, vayofs+vaysize, "VSP Animation Editor");\r
-    CopyTile(vaxofs+110, vayofs+16, (char *) (vsp+(256*tileidx[vspanim[i].start])));\r
-    GotoXY(vaxofs+4, vayofs+12); printstring("Start");\r
-    TextField(vaxofs+25, vayofs+11, 60, nstr1, ctf == 1 ? cb : 0);\r
-    GotoXY(vaxofs+11, vayofs+22); printstring("End");\r
-    TextField(vaxofs+25, vayofs+21, 60, nstr2, ctf == 2 ? cb : 0);\r
-    GotoXY(vaxofs+4, vayofs+32); printstring("Delay");\r
-    TextField(vaxofs+25, vayofs+31, 60, nstr3, ctf == 3 ? cb : 0);\r
-    GotoXY(vaxofs+6, vayofs+42); printstring("Mode");\r
-    TextField(vaxofs+25, vayofs+41, 60, nstr4, ctf == 4 ? cb : 0);\r
-    GotoXY(vaxofs+2, vayofs+56); printstring("Strand");\r
-    GotoXY(vaxofs+104, vayofs+33); printstring("Preview");\r
-    HLine(vaxofs+1, vayofs+51, 148, white);\r
-    Button(vaxofs+85, vayofs+54, "OK");\r
-    Button(vaxofs+117, vayofs+54, "Update");\r
-    GotoXY(vaxofs+30, vayofs+56);\r
-    sprintf(strbuf, "%d", i); printstring(strbuf);\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>vaxofs+25 && mx<vaxofs+60+25 && my>vayofs+11 && my<vayofs+9+11 && !moving)\r
-    {\r
-      ctf=1; str=nstr1; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>vaxofs+25 && mx<vaxofs+60+25 && my>vayofs+21 && my<vayofs+9+21 && !moving)\r
-    {\r
-      ctf=2; str=nstr2; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>vaxofs+25 && mx<vaxofs+60+25 && my>vayofs+31 && my<vayofs+9+31 && !moving)\r
-    {\r
-      ctf=3; str=nstr3; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>vaxofs+25 && mx<vaxofs+60+25 && my>vayofs+41 && my<vayofs+9+41 && !moving)\r
-    {\r
-      ctf=4; str=nstr4; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>vaxofs+85 && mx<vaxofs+30+85 && my>vayofs+54 && my<vayofs+10+54 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      done=1;\r
-      ButtonPressed(vaxofs+85, vayofs+54, "OK");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>vaxofs+117 && mx<vaxofs+30+117 && my>vayofs+54 && my<vayofs+10+54 && !moving)\r
-    {\r
-      // insert code for button "Update" here\r
-      vspanim[i].start=atoi(nstr1);\r
-      vspanim[i].finish=atoi(nstr2);\r
-      vspanim[i].delay=atoi(nstr3);\r
-      vspanim[i].mode=atoi(nstr4);\r
-      InitTileIDX();\r
-      ButtonPressed(vaxofs+117, vayofs+54, "Update");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(vaxofs+vaxsize-9) && (mx<vaxofs+vaxsize-2)\r
-    && my>(vayofs+1) && (my<vayofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>vaxofs && mx<vaxofs+vaxsize && my>vayofs && my<(vayofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-vaxofs;\r
-      myo=my-vayofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_UP)\r
-      {\r
-        vspanim[i].start=atoi(nstr1);\r
-        vspanim[i].finish=atoi(nstr2);\r
-        vspanim[i].delay=atoi(nstr3);\r
-        vspanim[i].mode=atoi(nstr4);\r
-        if (i<99) i++; else i=0;\r
-        last_pressed=0; key[SCAN_UP]=0;\r
-        sprintf(nstr1, "%d", vspanim[i].start);\r
-        sprintf(nstr2, "%d", vspanim[i].finish);\r
-        sprintf(nstr3, "%d", vspanim[i].delay);\r
-        sprintf(nstr4, "%d", vspanim[i].mode);\r
-        continue;\r
-      }\r
-      if (last_pressed==SCAN_DOWN)\r
-      {\r
-        vspanim[i].start=atoi(nstr1);\r
-        vspanim[i].finish=atoi(nstr2);\r
-        vspanim[i].delay=atoi(nstr3);\r
-        vspanim[i].mode=atoi(nstr4);\r
-        if (i) i--; else i=99;\r
-        last_pressed=0; key[SCAN_DOWN]=0;\r
-        sprintf(nstr1, "%d", vspanim[i].start);\r
-        sprintf(nstr2, "%d", vspanim[i].finish);\r
-        sprintf(nstr3, "%d", vspanim[i].delay);\r
-        sprintf(nstr4, "%d", vspanim[i].mode);\r
-        continue;\r
-      }\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=nstr1; break;\r
-          case 1: ctf=2; str=nstr2; break;\r
-          case 2: ctf=3; str=nstr3; break;\r
-          case 3: ctf=4; str=nstr4; break;\r
-          case 4: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=4; str=nstr4; break;\r
-          case 1: ctf=0; str=0; break;\r
-          case 2: ctf=1; str=nstr1; break;\r
-          case 3: ctf=2; str=nstr2; break;\r
-          case 4: ctf=3; str=nstr3; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-//  memset(&vadelay, 0, 100);\r
-//  for (i=0; i<numtiles; i++)\r
-//    tileidx[i]=i;\r
-  vspanim[i].start=atoi(nstr1);\r
-  vspanim[i].finish=atoi(nstr2);\r
-  vspanim[i].delay=atoi(nstr3);\r
-  vspanim[i].mode=atoi(nstr4);\r
-  curastd=i;\r
-  th=bleh;\r
-}\r
-\r
-int atxsize=150, atysize=39;\r
-int atxofs=80, atyofs=50;\r
-\r
-void AddTilesDialog()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink, at=0; //, i;\r
-  char ctf=0, cb=0, c, t, *str, bleh;\r
-  char nstr1[80];\r
-\r
-  bleh=th;\r
-  th=0;\r
-  sprintf(nstr1, "%d", at);\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderSelector();\r
-    RenderMessages();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      atxofs = (mx-mxo);\r
-      atyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (atxofs<16) atxofs = 16;\r
-      if (atyofs<16) atyofs = 16;\r
-      if (atxofs+atxsize>335) atxofs = 336-atxsize;\r
-      if (atyofs+atysize>sy+16) atyofs = (sy+16)-atysize;\r
-    }\r
-\r
-    Window(atxofs, atyofs, atxofs+atxsize, atyofs+atysize, "Allocate Additional Tiles");\r
-    GotoXY(atxofs+12, atyofs+15); printstring("Alloc Tiles:");\r
-    TextField(atxofs+56, atyofs+13, 80, nstr1, ctf == 1 ? cb : 0);\r
-    Button(atxofs+85, atyofs+26, "OK");\r
-    Button(atxofs+117, atyofs+26, "Cancel");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>atxofs+56 && mx<atxofs+80+56 && my>atyofs+13 && my<atyofs+9+13 && !moving)\r
-    {\r
-      ctf=1; str=nstr1; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>atxofs+85 && mx<atxofs+30+85 && my>atyofs+26 && my<atyofs+10+26 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      done=1;\r
-      at=atoi(nstr1);\r
-      str=(char *) valloc((numtiles+at)*256,"vsp data",0);\r
-      memcpy(str,vsp,(numtiles*256));\r
-      vfree(vsp); vsp=str; str=0; ctf=0;\r
-      memset(vsp+(numtiles*256), 0, at*256);\r
-      numtiles+=at;\r
-      ButtonPressed(atxofs+85, atyofs+26, "OK");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>atxofs+117 && mx<atxofs+30+117 && my>atyofs+26 && my<atyofs+10+26 && !moving)\r
-    {\r
-      // insert code for button "Cancel" here\r
-      done=1;\r
-      ButtonPressed(atxofs+117, atyofs+26, "Cancel");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(atxofs+atxsize-9) && (mx<atxofs+atxsize-2)\r
-    && my>(atyofs+1) && (my<atyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>atxofs && mx<atxofs+atxsize && my>atyofs && my<(atyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-atxofs;\r
-      myo=my-atyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=nstr1; break;\r
-          case 1: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=nstr1; break;\r
-          case 1: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-  at=atoi(nstr1);\r
-  th=bleh;\r
-//  memset(&vadelay, 0, 100);\r
-//  for (i=0; i<numtiles; i++)\r
-//    tileidx[i]=i;\r
-}\r
-\r
-// ========================= Import *** Data/Code ============================\r
-\r
-char *ovsp, op, oh, openas;\r
-word ontiles;\r
-word sofs=0;\r
-word tilesrippedthissession;\r
-byte *implist; //zero\r
-\r
-void RenderImport()\r
-{ unsigned char *img,i,j;\r
-  int z, jumper,wide,deep;\r
-  int at;\r
-\r
-  jumper=16+pad;\r
-  wide=320/jumper;\r
-  deep=((200+15)&~15)/jumper;\r
-\r
-  ClearScreen();\r
-\r
-  for (i=0; i<deep; i++)\r
-    for (j=0; j<wide; j++)\r
-    {\r
-      at=(i*wide)+j+sofs;\r
-      img=ovsp+(256*at);\r
-      if (at>=ontiles) img=ovsp;\r
-      CopyTile((j*jumper)+16,(i*jumper)+16,img);\r
-      if(at<ontiles) if(implist[at]) ColorGrid((j*jumper)+16,(i*jumper)+16,7); //zero\r
-    }\r
-  if (th)\r
-  {\r
-    if (my<(tsy-40))\r
-    DrawHighlight(((mx/jumper)*jumper)-(1+pad),\r
-      ((my/jumper)*jumper)-(1+pad));\r
-  }\r
-  z=tsy-40;\r
-  sprintf(strbuf,"Import Tiles %d/%d",curtileptr(sofs),ontiles);\r
-  Window(16,z,336,z+40,strbuf);\r
-  sprintf(strbuf,"Tiles imported this session: %d",tilesrippedthissession);\r
-  GotoXY(176-(pixels(strbuf)/2),z+20); printstring(strbuf);\r
-}\r
-\r
-void ImportTiles()\r
-{ //int tp;\r
-  char *str;\r
-  int bloop1,bloop2;\r
-\r
-  op=pad; oh=th;\r
-  pad=1; th=1;\r
-  tilesrippedthissession=0;\r
-  implist=(byte *)malloc(ontiles); //zero\r
-  memset(implist,0,ontiles); //zero\r
-  while (!key[SCAN_ESC])\r
-  {\r
-    RenderImport();\r
-    RenderMessages();\r
-    DrawMouse();\r
-    ShowPage();\r
-\r
-     if (key[SCAN_DOWN] && sofs<65319)\r
-     {\r
-       if (!pad) sofs=sofs+20;\r
-       else sofs+=18;\r
-       key[SCAN_DOWN]=0;\r
-     }\r
-     if (key[SCAN_UP] && sofs>17)\r
-     {\r
-       if (!pad) sofs-=20;\r
-       else sofs-=18;\r
-       key[SCAN_UP]=0;\r
-     }\r
-/*all by zero here in this scan_b thing*/\r
-     if (key[SCAN_B])\r
-     {\r
-       key[SCAN_B]=0;\r
-       Message("Building duplicate import list",200);\r
-       for(bloop1=0; bloop1<ontiles; bloop1++)\r
-       {\r
-         for(bloop2=0; bloop2<numtiles; bloop2++)\r
-         {\r
-           if(TileCmp(vsp+bloop2*256,ovsp+bloop1*256))\r
-           {\r
-             implist[bloop1]=1;\r
-             bloop2=numtiles;\r
-           }\r
-         }\r
-       }\r
-     }\r
-//all by zero here in this scan_a thing\r
-     if (key[SCAN_A])\r
-     {\r
-       Message("Importing all tiles",200);\r
-       key[SCAN_A]=0;\r
-       for(bloop1=0; bloop1<ontiles; bloop1++)\r
-       {\r
-         str=(char *) valloc((numtiles+1)*256,"vsp data",0);\r
-         memcpy(str, vsp, (numtiles*256));\r
-         vfree(vsp); vsp=str; str=0;\r
-         memcpy(vsp+(numtiles*256), ovsp+(bloop1*256), 256);\r
-         numtiles+=1;\r
-       }\r
-       goto DIE;\r
-     }\r
-\r
-//all by zero here in this scan_n thing\r
-     if (key[SCAN_N])\r
-     {\r
-       Message("Importing all new tiles",200);\r
-       key[SCAN_N]=0;\r
-       for(bloop1=0; bloop1<ontiles; bloop1++)\r
-       {\r
-         for(bloop2=0; bloop2<numtiles; bloop2++)\r
-         {\r
-           if(TileCmp(vsp+bloop2*256,ovsp+bloop1*256))\r
-           {\r
-             implist[bloop1]=1;\r
-             bloop2=numtiles;\r
-           }\r
-         }\r
-       }\r
-       for(bloop1=0; bloop1<ontiles; bloop1++)\r
-       {\r
-         if(!implist[bloop1])\r
-         {\r
-           str=(char *) valloc((numtiles+1)*256,"vsp data",0);\r
-           memcpy(str, vsp, (numtiles*256));\r
-           vfree(vsp); vsp=str; str=0;\r
-           memcpy(vsp+(numtiles*256), ovsp+(bloop1*256), 256);\r
-           numtiles+=1;\r
-         }\r
-       }\r
-       goto DIE;\r
-     }\r
-\r
-     if (mb==1 && my<(tsy-40) && curtileptr(sofs)<ontiles)\r
-     {\r
-        lt=curtileptr(sofs);\r
-        implist[lt]=1; //zero\r
-        str=(char *) valloc((numtiles+1)*256,"vsp data",0);\r
-        memcpy(str, vsp, (numtiles*256));\r
-        vfree(vsp); vsp=str; str=0;\r
-        memcpy(vsp+(numtiles*256), ovsp+(lt*256), 256);\r
-        numtiles+=1;\r
-        tilesrippedthissession++;\r
-        WaitRelease();\r
-        sprintf(strbuf,"Tile %d imported.",lt);\r
-        Message(strbuf, 200);\r
-     }\r
-  }\r
-  DIE: //zero\r
-  pad=op; th=oh;\r
-  vfree(implist); //zero\r
-}\r
-\r
-void ImportVSP()\r
-{ FILE *f;\r
-  word ver;\r
-  char fname[60];\r
-  int bsize;\r
-\r
-  memset(fname, 0, 60);\r
-  bmode=1; oh=th; th=0;\r
-  Browse(1,"*.vsp","","","",&fname);\r
-  if (strlen(fname)<3) return;\r
-  if (!(f=fopen(fname,"rb")))\r
-     errf("VSP file %s not found.",fname);\r
-  WaitRelease(); th=oh; bmode=0;\r
-\r
-  fread(&ver, 1, 2, f);\r
-  if (ver!=2 && ver!=3)\r
-     errf("VSP file %s is not the correct VSP format.",fname);\r
-  fread(strbuf, 1, 768, f);\r
-  fread(&ontiles, 1, 2, f);\r
-  ovsp=(char *) valloc(256*ontiles,"ovsp",0);\r
-\r
-  if (ver==2)\r
-    fread(ovsp, 256, ontiles, f);\r
-  if (ver==3)\r
-  {\r
-    fread(&bsize, 1, 4, f);\r
-    ReadCompressedLayer1(ovsp, 256*ontiles, f);\r
-  }\r
-\r
-  fclose(f);\r
-\r
-  ImportTiles();\r
-  vfree(ovsp);\r
-  key[SCAN_ESC]=0;\r
-\r
-}\r
-\r
-int OPxsize=100, OPysize=40;\r
-int OPxofs=100, OPyofs=70;\r
-\r
-void OpenPCXas()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderSelector();\r
-    RenderMessages();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      OPxofs = (mx-mxo);\r
-      OPyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (OPxofs<16) OPxofs = 16;\r
-      if (OPyofs<16) OPyofs = 16;\r
-      if (OPxofs+OPxsize>335) OPxofs = 336-OPxsize;\r
-      if (OPyofs+OPysize>sy+16) OPyofs = (sy+16)-OPysize;\r
-    }\r
-\r
-    Window(OPxofs, OPyofs, OPxofs+OPxsize, OPyofs+OPysize, "Open PCX As");\r
-    Button(OPxofs+21, OPyofs+18, "Tileset");\r
-    Button(OPxofs+50, OPyofs+18, "Image");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>OPxofs+21 && mx<OPxofs+30+21 && my>OPyofs+18 && my<OPyofs+10+18 && !moving)\r
-    {\r
-      // insert code for button "Tileset" here\r
-      ButtonPressed(OPxofs+21, OPyofs+18, "Tileset");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      openas=0; done=1;\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>OPxofs+50 && mx<OPxofs+30+50 && my>OPyofs+18 && my<OPyofs+10+18 && !moving)\r
-    {\r
-      // insert code for button "Image" here\r
-      ButtonPressed(OPxofs+50, OPyofs+18, "Image");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      openas=1; done=1;\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(OPxofs+OPxsize-9) && (mx<OPxofs+OPxsize-2)\r
-    && my>(OPyofs+1) && (my<OPyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>OPxofs && mx<OPxofs+OPxsize && my>OPyofs && my<(OPyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-OPxofs;\r
-      myo=my-OPyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-}\r
-\r
-char manufacturer;\r
-char version;\r
-char encoding;\r
-char bits_per_pixel;\r
-short xmin,ymin;\r
-short xmax,ymax;\r
-short hres;\r
-short vres;\r
-char palette[48];\r
-char reserved;\r
-char color_planes;\r
-short bytes_per_line;\r
-short palette_type;\r
-char filler[58];\r
-char *t;\r
-\r
-int width,depth;\r
-int bytes;\r
-int vidoffset;\r
-FILE *pcxf;\r
-\r
-void ReadPCXLine(unsigned char *dest)\r
-{ int i, n;\r
-  char c, run;\r
-\r
-  n=0;\r
-  do {\r
-    c=fgetc(pcxf) & 0xff;\r
-\r
-    if ((c & 0xc0)==0xc0)\r
-    { run=c & 0x3f;\r
-      c=fgetc(pcxf);\r
-      for (i=0; i<run; i++)\r
-        dest[vidoffset+n+i]=c;\r
-      n+=run;\r
-    }\r
-    else {\r
-      dest[vidoffset+n]=c;\r
-      n++;\r
-    }\r
-  } while (n<bytes);\r
-}\r
-\r
-void LoadPCXHeader(char *fname)\r
-{\r
-  int i;\r
-\r
-  if (!(pcxf=fopen(fname,"rb"))) err("Could not open specified PCX file.");\r
-  fread(&manufacturer,1,1,pcxf);\r
-  fread(&version,1,1,pcxf);\r
-  fread(&encoding,1,1,pcxf);\r
-  fread(&bits_per_pixel,1,1,pcxf);\r
-  fread(&xmin,1,2,pcxf);\r
-  fread(&ymin,1,2,pcxf);\r
-  fread(&xmax,1,2,pcxf);\r
-  fread(&ymax,1,2,pcxf);\r
-  fread(&hres,1,2,pcxf);\r
-  fread(&vres,1,2,pcxf);\r
-  fread(&palette,1,48,pcxf);\r
-  fread(&reserved,1,1,pcxf);\r
-  fread(&color_planes,1,1,pcxf);\r
-  fread(&bytes_per_line,1,2,pcxf);\r
-  fread(&palette_type,1,2,pcxf);\r
-  fread(&filler,1,58,pcxf);\r
-  fseek(pcxf,-768L,SEEK_END);\r
-  fread(pal,1,768,pcxf);\r
-  fseek(pcxf,128L,SEEK_SET);\r
-  width=xmax-xmin+1;\r
-  depth=ymax-ymin+1;\r
-  bytes=bytes_per_line;\r
-\r
-  for (i=0; i<768; i++)\r
-    pal[i]=pal[i] >> 2;\r
-  set_intensity(63);\r
-}\r
-\r
-void LoadPCXHeaderNP(char *fname)\r
-{\r
-  pcxf=fopen(fname,"rb");\r
-  if (!pcxf) err("Could not open specified PCX file.");\r
-  fread(&manufacturer,1,1,pcxf);\r
-  fread(&version,1,1,pcxf);\r
-  fread(&encoding,1,1,pcxf);\r
-  fread(&bits_per_pixel,1,1,pcxf);\r
-  fread(&xmin,1,2,pcxf);\r
-  fread(&ymin,1,2,pcxf);\r
-  fread(&xmax,1,2,pcxf);\r
-  fread(&ymax,1,2,pcxf);\r
-  fread(&hres,1,2,pcxf);\r
-  fread(&vres,1,2,pcxf);\r
-  fread(&palette,1,48,pcxf);\r
-  fread(&reserved,1,1,pcxf);\r
-  fread(&color_planes,1,1,pcxf);\r
-  fread(&bytes_per_line,1,2,pcxf);\r
-  fread(&palette_type,1,2,pcxf);\r
-  fread(&filler,1,58,pcxf);\r
-  width=xmax-xmin+1;\r
-  depth=ymax-ymin+1;\r
-  bytes=bytes_per_line;\r
-}\r
-\r
-// grabs a tile from the ovsp buffer (transit tile bay)\r
-int GrabTileAt(int x, int y, int z, int check_dup)\r
-{ int a;\r
-  char tvsp[256];\r
-  char *s;\r
-\r
-  s=t+(y*width)+x;\r
-\r
-  for (a=0; a<16; a++)\r
-  {\r
-    memcpy(tvsp+(a*16), s, 16);\r
-    s+=width;\r
-  }\r
-\r
-  if (check_dup)\r
-  {\r
-  for (a=0; a<z; a++)\r
-    if (!memcmp(tvsp, ovsp+(a*256), 256)) return 0;\r
-  }\r
-\r
-  memcpy(ovsp+(z*256), tvsp, 256);\r
-  return 1;\r
-}\r
-\r
-void ImportPCX()\r
-{ char fname[60];\r
-  int i,j,z;\r
-  int wide,deep; // grabbable x&y tiles\r
-  int add,jumper; // related to grab coords\r
-\r
-  bmode=1; oh=th; th=0;\r
-  Browse(1,"*.pcx","","","",fname);\r
-  WaitRelease();\r
-  if (strlen(fname)<3) return;\r
-  OpenPCXas();\r
-  th=oh; bmode=0;\r
-\r
-  add=!openas;\r
-  jumper=16+add;\r
-\r
-  LoadPCXHeader(fname);\r
-\r
-  // temp pcx buffer for grabs\r
-  t=(char *) valloc(width*depth,"pcx buf",0);\r
-\r
-  for (i=0; i<depth; i++)\r
-  {\r
-    vidoffset=width*i;\r
-    ReadPCXLine(t);\r
-  }\r
-\r
-  fclose(pcxf);\r
-\r
-  deep=((depth&~15)+add)/jumper;\r
-  wide=(width+add)/jumper;\r
-\r
-  ontiles=wide*deep;\r
-  ovsp=(char *) valloc(ontiles*256,"ovsp",0); // temp tilebay\r
-\r
-  z=0;\r
-  for (i=0; i<deep; i++) // grab all tiles\r
-    for (j=0; j<wide; j++)\r
-    {\r
-      z+=GrabTileAt((j*jumper)+add, (i*jumper)+add, z, openas);\r
-    }\r
-\r
-  ontiles = z; // tiles successfully grabbed\r
-  vfree(t);\r
-\r
-  ImportTiles();\r
-  vfree(ovsp);\r
-  key[SCAN_ESC]=0;\r
-}\r
diff --git a/16/v2/source/verge/MAPED/TILESEL.H b/16/v2/source/verge/MAPED/TILESEL.H
deleted file mode 100755 (executable)
index 509c78f..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef TILESEL_INC\r
-#define TILESEL_INC\r
-\r
-extern int selofs;\r
-extern char ttile[256], ttile2[256];\r
-extern char curastd;\r
-extern char curmode;\r
-\r
-extern int curtileptr(int row);\r
-extern void NormalButton(int x1, int y1, int x2, int y2, char *str);\r
-extern void PressdButton(int x1, int y1, int x2, int y2, char *str);\r
-extern void RenderSelector();\r
-extern void FlipX(unsigned short edtile);\r
-extern void FlipY(unsigned short edtile);\r
-extern void FlipZ(unsigned short edtile);\r
-extern void DrawHighlight(int x, int y);\r
-extern void TileSelector();\r
-extern void VSPAnimDialog();\r
-extern void AddTilesDialog();\r
-extern void RenderImport();\r
-extern void ImportTiles();\r
-extern void ImportVSP();\r
-extern void OpenPCXas();\r
-\r
-extern void ReadPCXLine(unsigned char *dest);\r
-extern void LoadPCXHeader(char *fname);\r
-extern void LoadPCXHeaderNP(char *fname);\r
-extern int  GrabTileAt(int x, int y, int z, int check_dup);\r
-extern void ImportPCX();\r
-\r
-#endif // TILESEL_INC\r
diff --git a/16/v2/source/verge/MAPED/TIMER.C b/16/v2/source/verge/MAPED/TIMER.C
deleted file mode 100755 (executable)
index 11f5a5a..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include <dos.h>\r
-#include <stdio.h>\r
-#include <conio.h>\r
-\r
-#include "mikmod.h"\r
-\r
-#include "render.h"\r
-\r
-#define PIT0 0x40\r
-#define PIT1 0x41\r
-#define PIT2 0x42\r
-#define PITMODE 0x43\r
-#define PITCONST 1193180L\r
-\r
-#define OCR1    0x20\r
-#define IMR1    0x21\r
-\r
-#define OCR2    0xA0\r
-#define IMR2    0xA1\r
-\r
-// ================================= Data ====================================\r
-\r
-void (__interrupt __far *biosTimerHandler)();\r
-char timerinstalled=0;\r
-extern char soundokay;\r
-\r
-volatile unsigned int systemtime=0, timer_count=0, tick=0;\r
-volatile int backupct=0, idlect=0;\r
-\r
-// ================================= Code ====================================\r
-\r
-#pragma aux disable =\\r
-        "cli";\r
-\r
-#pragma aux enable =\\r
-        "sti";\r
-\r
-static void SendEOI (unsigned char irqno)\r
-{\r
-  static unsigned char ocr;\r
-  static unsigned char eoi;\r
-\r
-  ocr=(irqno>7) ? OCR2 : OCR1;\r
-  eoi=0x60|(irqno&7);\r
-  outp(ocr,eoi);\r
-  if (irqno>7) outp(OCR1,0x20);\r
-}\r
-\r
-void __interrupt __far newhandler(void)\r
-{\r
-        systemtime++;\r
-        timer_count++;\r
-        tick++;\r
-        backupct++;\r
-        idlect++;\r
-        CheckTileAnimation();\r
-        if (soundokay) MD_Update();\r
-        SendEOI(0);\r
-}\r
-\r
-void SetHZ(unsigned int hz)\r
-{ unsigned int pit0_set, pit0_value;\r
-\r
-  disable();\r
-\r
-  outp(PITMODE, 0x34);\r
-  pit0_value=PITCONST / hz;\r
-  pit0_set=(pit0_value & 0x00ff);\r
-  outp(PIT0, pit0_set);\r
-  pit0_set=(pit0_value >> 8);\r
-  outp(PIT0, pit0_set);\r
-\r
-  enable();\r
-}\r
-\r
-void RestoreHZ()\r
-{\r
-  disable();\r
-  outp(PITMODE, 0x34);\r
-  outp(PIT0, 0x00);\r
-  outp(PIT0, 0x00);\r
-  enable();\r
-}\r
-\r
-void InitTimer()\r
-{\r
-  if (timerinstalled) return;\r
-\r
-  biosTimerHandler=_dos_getvect(0x08);\r
-  _dos_setvect(0x08, newhandler);\r
-  timerinstalled=1;\r
-  SetHZ(100);\r
-}\r
-\r
-void ShutdownTimer()\r
-{\r
-  if (!timerinstalled) return;\r
-\r
-  _dos_setvect(0x08, biosTimerHandler);\r
-  RestoreHZ();\r
-  timerinstalled=0;\r
-}\r
diff --git a/16/v2/source/verge/MAPED/TIMER.H b/16/v2/source/verge/MAPED/TIMER.H
deleted file mode 100755 (executable)
index 9a74f63..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef TIMER_INC\r
-#define TIMER_INC\r
-\r
-extern unsigned int systemtime, timer_count, tick;\r
-extern int backupct, idlect;\r
-//extern int (*callback) (void); // ??? <aen, apr 21>\r
-\r
-extern void SetHZ(unsigned int hz);\r
-extern void RestoreHZ();\r
-extern void InitTimer();\r
-extern void ShutdownTimer();\r
-\r
-#endif // TIMER_INC\r
diff --git a/16/v2/source/verge/MAPED/VDRIVER.C b/16/v2/source/verge/MAPED/VDRIVER.C
deleted file mode 100755 (executable)
index 14ca28f..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include <conio.h>\r
-\r
-#include "mode13h.h"\r
-#include "modex.h"\r
-\r
-// ================================= Data ====================================\r
-\r
-// Driver function-pointers.\r
-int (*ShutdownVideo) (void);\r
-int (*ShowPage) (void);\r
-int (*CopySprite) (int x, int y, int width, int height, char *src);\r
-int (*CCopySprite) (int x, int y, int width, int height, char *src);\r
-int (*TCCopySprite) (int x, int y, int width, int height, char *src);\r
-int (*TCopySprite) (int x, int y, int width, int height, char *src);\r
-int (*CopyTile) (int x, int y, char *src);\r
-int (*FilledBox) (int x, int y, int width, int height, char c);\r
-int (*VLine) (int x, int y, int height, char color);\r
-int (*HLine) (int x, int y, int width, char color);\r
-int (*ColorGrid) (int x, int y, char c);\r
-int (*ClearScreen) (void);\r
-int (*CopySpriteLucentClip) (int x, int y, int width, int height, unsigned char *src);\r
-\r
-unsigned char pal[768], pal2[768];\r
-unsigned char *screen=0;\r
-\r
-int sx=0, sy=0;\r
-int tx=0, ty=0;\r
-int tsx=0, tsy=0;\r
-int map_scroll_x=1;\r
-int map_scroll_y=1;\r
-\r
-// ================================= Code ====================================\r
-\r
-void InitVideo(int mode)\r
-{\r
-  switch (mode)\r
-  {\r
-    case 0: InitMode13h(); break;\r
-    case 1: InitModeX();             // 320x240\r
-            break;\r
-  }\r
-}\r
-\r
-void SetPalette(unsigned char *pall)\r
-{ unsigned int i;\r
-\r
-  outp(0x03c8,0);\r
-  for (i=0; i<768; i++)\r
-    outp(0x03c9,pall[i]);\r
-}\r
-\r
-void GetPalette(void)\r
-{ unsigned int i;\r
-\r
-  outp(0x03c7,0);\r
-  for (i=0; i<768; i++)\r
-    pal[i]=inp(0x03c9);\r
-}\r
-\r
-void set_intensity(unsigned int n)\r
-{ unsigned int i;\r
-\r
-  for (i=0; i<768; i++)\r
-    pal2[i]=(pal[i]*n)>>6;\r
-\r
-  SetPalette(pal2);\r
-}\r
-\r
-#define byte unsigned char\r
-int cx1=16, cy1=16, cx2=336, cy2=256;\r
-\r
-char stipple[256]={\r
-  1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,\r
-  0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,\r
-  1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,\r
-  0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,\r
-  1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,\r
-  0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,\r
-  1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,\r
-  0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,\r
-  1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,\r
-  0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,\r
-  1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,\r
-  0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,\r
-  1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,\r
-  0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,\r
-  1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,\r
-  0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,\r
-};\r
diff --git a/16/v2/source/verge/MAPED/VDRIVER.H b/16/v2/source/verge/MAPED/VDRIVER.H
deleted file mode 100755 (executable)
index b04b194..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#ifndef VDRIVER_INC\r
-#define VDRIVER_INC\r
-\r
-#include "inter.h"\r
-\r
-extern int (*ShutdownVideo) (void);\r
-extern int (*ShowPage) (void);\r
-extern int (*CopySprite) (int x, int y, int width, int height, char *src);\r
-extern int (*CCopySprite) (int x, int y, int width, int height, char *src);\r
-extern int (*TCCopySprite) (int x, int y, int width, int height, char *src);\r
-extern int (*TCopySprite) (int x, int y, int width, int height, char *src);\r
-extern int (*CopySpriteLucentClip) (int x, int y, int width, int height, unsigned char *src);\r
-extern int (*CopyTile) (int x, int y, char *src);\r
-extern int (*FilledBox) (int x, int y, int width, int height, char c);\r
-extern int (*VLine) (int x, int y, int height, char color);\r
-extern int (*HLine) (int x, int y, int width, char color);\r
-extern int (*ColorGrid) (int x, int y, char c);\r
-extern int (*ClearScreen) (void);\r
-\r
-extern unsigned char pal[768], pal2[768];\r
-extern unsigned char *screen;\r
-\r
-extern int sx, sy, tx, ty, tsx, tsy;\r
-extern int map_scroll_x, map_scroll_y;\r
-\r
-extern void InitVideo(int mode);\r
-extern void SetPalette(unsigned char *pall);\r
-extern void GetPalette(void);\r
-extern void set_intensity(unsigned int n);\r
-\r
-extern int cx1, cy1, cx2, cy2;\r
-\r
-#endif // VDRIVER_INC\r
diff --git a/16/v2/source/verge/MAPED/VERGEPAL.H b/16/v2/source/verge/MAPED/VERGEPAL.H
deleted file mode 100755 (executable)
index 75adcd6..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
-Copyright (C) 1998 BJ Eirich (aka vecna)
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-See the GNU General Public Lic
-See the GNU General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-*/
-
-#define VERGEPAL_LEN 768
-
- static unsigned char vergepal[]=
- {
-  0x00,0x00,0x00,0x02,0x02,0x02,0x03,0x03,0x03,0x05,0x05,0x05,0x07,
-  0x07,0x07,0x09,0x09,0x09,0x0a,0x0a,0x0a,0x0c,0x0c,0x0c,0x0e,0x0e,
-  0x0e,0x0f,0x0f,0x0f,0x11,0x11,0x11,0x13,0x13,0x13,0x15,0x15,0x15,
-  0x16,0x16,0x16,0x18,0x18,0x18,0x1a,0x1a,0x1a,0x1c,0x1c,0x1c,0x1d,
-  0x1d,0x1d,0x1f,0x1f,0x1f,0x21,0x21,0x21,0x22,0x22,0x22,0x24,0x24,
-  0x24,0x26,0x26,0x26,0x28,0x28,0x28,0x29,0x29,0x29,0x2b,0x2b,0x2b,
-  0x2e,0x2e,0x2e,0x31,0x31,0x31,0x34,0x34,0x34,0x36,0x36,0x36,0x39,
-  0x39,0x39,0x3c,0x3c,0x3c,0x3f,0x00,0x00,0x3b,0x00,0x00,0x38,0x00,
-  0x00,0x35,0x00,0x00,0x32,0x00,0x00,0x2f,0x00,0x00,0x2c,0x00,0x00,
-  0x29,0x00,0x00,0x26,0x00,0x00,0x22,0x00,0x00,0x1f,0x00,0x00,0x1c,
-  0x00,0x00,0x19,0x00,0x00,0x16,0x00,0x00,0x13,0x00,0x00,0x10,0x00,
-  0x00,0x3f,0x36,0x36,0x3f,0x2e,0x2e,0x3f,0x27,0x27,0x3f,0x1f,0x1f,
-  0x3f,0x17,0x17,0x3f,0x10,0x10,0x3f,0x08,0x08,0x3f,0x00,0x00,0x11,
-  0x0b,0x06,0x13,0x0d,0x07,0x15,0x0f,0x09,0x17,0x11,0x0a,0x18,0x13,
-  0x0b,0x1a,0x15,0x0c,0x1c,0x17,0x0e,0x1e,0x19,0x0f,0x3f,0x3f,0x36,
-  0x3f,0x3f,0x2e,0x3f,0x3f,0x27,0x3f,0x3f,0x1f,0x3f,0x3e,0x17,0x3f,
-  0x3d,0x10,0x3f,0x3d,0x08,0x3f,0x3d,0x00,0x39,0x36,0x00,0x33,0x31,
-  0x00,0x2d,0x2b,0x00,0x27,0x27,0x00,0x21,0x21,0x00,0x1c,0x1b,0x00,
-  0x16,0x15,0x00,0x10,0x10,0x00,0x34,0x3f,0x17,0x31,0x3f,0x10,0x2d,
-  0x3f,0x08,0x28,0x3f,0x00,0x24,0x39,0x00,0x20,0x33,0x00,0x1d,0x2d,
-  0x00,0x18,0x27,0x00,0x36,0x3f,0x36,0x2e,0x3d,0x2e,0x27,0x3b,0x27,
-  0x1f,0x39,0x1f,0x17,0x36,0x17,0x0f,0x34,0x0f,0x08,0x32,0x08,0x00,
-  0x30,0x00,0x00,0x2d,0x00,0x00,0x2b,0x00,0x00,0x28,0x00,0x00,0x26,
-  0x00,0x00,0x23,0x00,0x00,0x21,0x00,0x00,0x1e,0x00,0x00,0x1c,0x00,
-  0x00,0x19,0x00,0x00,0x17,0x00,0x00,0x14,0x00,0x00,0x12,0x00,0x00,
-  0x0f,0x00,0x02,0x0d,0x02,0x03,0x0a,0x03,0x05,0x08,0x05,0x36,0x3f,
-  0x3f,0x2e,0x3f,0x3f,0x27,0x3f,0x3f,0x1f,0x3f,0x3f,0x17,0x3f,0x3f,
-  0x0f,0x3f,0x3f,0x08,0x3f,0x3f,0x00,0x3f,0x3f,0x00,0x39,0x39,0x00,
-  0x33,0x33,0x00,0x2d,0x2d,0x00,0x27,0x27,0x00,0x22,0x22,0x00,0x1c,
-  0x1c,0x00,0x16,0x16,0x00,0x10,0x10,0x17,0x2f,0x3f,0x10,0x2c,0x3f,
-  0x08,0x2a,0x3f,0x00,0x27,0x3f,0x00,0x23,0x39,0x00,0x1f,0x33,0x00,
-  0x1b,0x2d,0x00,0x17,0x27,0x36,0x36,0x3f,0x2e,0x2f,0x3f,0x27,0x27,
-  0x3f,0x1f,0x20,0x3f,0x17,0x18,0x3f,0x10,0x10,0x3f,0x08,0x09,0x3f,
-  0x00,0x01,0x3f,0x00,0x00,0x3f,0x00,0x00,0x3b,0x00,0x00,0x38,0x00,
-  0x00,0x35,0x00,0x00,0x32,0x00,0x00,0x2f,0x00,0x00,0x2c,0x00,0x00,
-  0x29,0x00,0x00,0x26,0x00,0x00,0x22,0x00,0x00,0x1f,0x00,0x00,0x1c,
-  0x00,0x00,0x19,0x00,0x00,0x16,0x00,0x00,0x13,0x00,0x00,0x10,0x0d,
-  0x08,0x00,0x0f,0x09,0x00,0x12,0x0a,0x00,0x14,0x0b,0x00,0x16,0x0c,
-  0x00,0x19,0x0d,0x00,0x1b,0x0e,0x00,0x1e,0x0f,0x00,0x20,0x10,0x00,
-  0x22,0x11,0x00,0x25,0x12,0x00,0x28,0x15,0x03,0x2c,0x18,0x06,0x2f,
-  0x1b,0x09,0x32,0x1e,0x0c,0x35,0x21,0x0e,0x39,0x24,0x11,0x3c,0x27,
-  0x14,0x3f,0x2a,0x17,0x3f,0x2e,0x1c,0x3f,0x31,0x22,0x3f,0x35,0x27,
-  0x3f,0x38,0x2c,0x22,0x1c,0x12,0x25,0x1f,0x14,0x29,0x22,0x17,0x2c,
-  0x25,0x19,0x2f,0x28,0x1c,0x32,0x2a,0x1e,0x36,0x2d,0x20,0x39,0x30,
-  0x23,0x3c,0x33,0x25,0x3f,0x3a,0x37,0x3f,0x38,0x34,0x3f,0x36,0x31,
-  0x3f,0x35,0x2f,0x3f,0x33,0x2c,0x3f,0x31,0x29,0x3f,0x2f,0x27,0x3f,
-  0x2e,0x24,0x3f,0x2c,0x20,0x3f,0x29,0x1c,0x3f,0x27,0x18,0x3c,0x25,
-  0x17,0x3a,0x23,0x16,0x37,0x22,0x15,0x34,0x20,0x14,0x32,0x1f,0x13,
-  0x2f,0x1e,0x12,0x2d,0x1c,0x11,0x2a,0x1a,0x10,0x28,0x19,0x0f,0x27,
-  0x18,0x0e,0x24,0x17,0x0d,0x22,0x16,0x0c,0x20,0x14,0x0b,0x1d,0x13,
-  0x0a,0x1b,0x12,0x09,0x17,0x10,0x08,0x15,0x0f,0x07,0x12,0x0e,0x06,
-  0x10,0x0c,0x06,0x0e,0x0b,0x05,0x0a,0x08,0x03,0x3f,0x00,0x00,0x3f,
-  0x04,0x00,0x3f,0x08,0x00,0x3f,0x0d,0x00,0x3f,0x11,0x00,0x3f,0x15,
-  0x00,0x3f,0x19,0x00,0x3f,0x1d,0x00,0x3f,0x22,0x00,0x3f,0x26,0x00,
-  0x3f,0x2a,0x00,0x3f,0x2e,0x00,0x3f,0x32,0x00,0x3f,0x37,0x00,0x3f,
-  0x3b,0x00,0x3f,0x3f,0x00,0x3f,0x2f,0x00,0x36,0x28,0x00,0x2d,0x22,
-  0x00,0x24,0x1b,0x00,0x1b,0x14,0x00,0x12,0x0d,0x00,0x09,0x07,0x00,
-  0x00,0x00,0x00,0x29,0x00,0x28,0x23,0x00,0x2b,0x1d,0x00,0x2f,0x17,
-  0x00,0x32,0x12,0x00,0x35,0x0c,0x00,0x38,0x06,0x00,0x3c,0x3f,0x3f,
-  0x3f,0x3f
-  };
-
diff --git a/16/v2/source/verge/README.TXT b/16/v2/source/verge/README.TXT
deleted file mode 100755 (executable)
index 84e756b..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-\r
-VERGE version 2.01a, Copyright (C) 1998 BJ Eirich (aka vecna)\r
-VERGE comes with ABSOLUTELY NO WARRANTY. This is free software,\r
-and you are welcome to redistribute it under certain conditions.\r
-For details refer to GNU.TXT.\r
-\r
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\r
-\r
->Jan 1, 2000<\r
-\r
-Hey Guys,\r
-\r
-This is the old source for V2 (DJGPP), along with the sources for the utils (mostly DJGPP), the VCC compiler (DJGPP; though it should compiler under Watcom), and MapEd 2 (Watcom). Just getting this out the door. The new source will be released and updated regularly a week or so from now, so you can futz around with this until that time.\r
-\r
-I'm not sure the main engine even runs in this build, as all I got from compiling and running it was a fistful of page faults. Sorry, I don't feel like trying to make it work. It's old and stinky (enjoy! ^_^). It may be VC incompatibilities with newer stuff, it may be some minor oversight on my part from tweaking it at some point, it could by anything.\r
-\r
-The utils and MapEd 2 seemed to be in working order, however. Didn't include all the util sources, because they're hidden somewhere on my hard drive. I'll find them later (like when I clean this cluttered mess of a hard drive).\r
-\r
-I removed the CD audio code, because of GPL issues and it was a shoddy interface to begin with. I didn't take the FLI code out, though I can't remember where I got it from. It's likely I nabbed it up from X2FTP or some similar archive. If you can figure out where it's from and if I'm violating the GPL by including it (though I hacked it up a bit), just send me some proof of its origin and license and I'll remove it.\r
-\r
-Otherwise, wham. There ya go. If you have any questions about it, just drop me a line and I'll see what I can do. Happy New Year, and have fun with it... Or possibly heaping gobs of frustration. :-)\r
-\r
-- aen\r
-\r
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\r
-\r
-Pertaining to MikMod:\r
-\r
-Parts of the library (in playercode/mdulaw.c) are derived from the files\r
-libst.h and raw.c from an old version of the sox (SOund eXchange) package\r
-written by Lance Norskog and Jef Poskanzer. The following copyright notice\r
-applies to these parts:\r
-\r
-Copyright (C) 1989 by Jef Poskanzer.\r
-Permission to use, copy, modify, and distribute this software and its\r
-documentation for any purpose and without fee is hereby granted, provided\r
-that the above copyright notice appear in all copies and that both that\r
-copyright notice and this permission notice appear in supporting\r
-documentation.  This software is provided "as is" without express or\r
-implied warranty.\r
diff --git a/16/v2/source/verge/UTIL/CHRCONV/CHRCONV.C b/16/v2/source/verge/UTIL/CHRCONV/CHRCONV.C
deleted file mode 100755 (executable)
index 91ac6ac..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include <stdio.h>\r
-#include <malloc.h>\r
-\r
-char c[100];\r
-FILE *f;\r
-char *jalblkasd;\r
-char byte, *t;\r
-short word;\r
-int quad;\r
-\r
-int bufsize=0;\r
-unsigned char *csrc, *cb;\r
-\r
-void EmitC (unsigned char c)\r
-{\r
-  *csrc++=c;\r
-  bufsize++;\r
-}\r
-\r
-void Compress(unsigned char *p, int len)\r
-{\r
-  int i;\r
-  unsigned char byt,samect;\r
-  unsigned char repcode;\r
-\r
-  csrc=cb;\r
-  i=0; bufsize=0;\r
-  do\r
-  {   byt=p[i++];\r
-      samect=1;\r
-      while (samect<254 && i<len && byt==p[i])\r
-      {\r
-         samect++;\r
-         i++;\r
-      }\r
-      if (samect==2 && byt != 0xFF) { EmitC(byt); }\r
-      if (samect==3 && byt != 0xFF) { EmitC(byt); EmitC(byt); }\r
-      if (samect>3 || byt == 0xFF)\r
-      {\r
-         repcode=0xFF;\r
-         EmitC(repcode);\r
-         repcode=(char) samect;\r
-         EmitC(repcode);\r
-      }\r
-      EmitC(byt);\r
-  } while (i<len);\r
-}\r
-\r
-int main(int argc, char *argv[])\r
-{\r
-  int i;\r
-\r
-  printf("CHRCONV v.1.00 Copyright (C)1998 BJ Eirich \n");\r
-  if (argc==1)\r
-  {\r
-    printf("CHR filename: "); fflush(stdout);\r
-    scanf("%s",c);\r
-    f=fopen(c, "rb");\r
-  }\r
-  if (argc==2)\r
-  {\r
-    memcpy(c, argv[1], strlen(argv[1]));\r
-    printf("Converting %s.\n",c);\r
-    f=fopen(c, "rb");\r
-  }\r
-  if (!f)\r
-  {\r
-    printf("Invalid filename.\n");\r
-    exit(-1);\r
-  }\r
-  jalblkasd=(char *) malloc(15360);\r
-  fread(jalblkasd, 1, 15360, f);\r
-  fclose(f);\r
-\r
-  f=fopen(c,"wb");\r
-  byte=2; fwrite(&byte, 1, 1, f);\r
-  word=16; fwrite(&word, 1, 2, f);\r
-  word=32; fwrite(&word, 1, 2, f);\r
-  word=0;  fwrite(&word, 1, 2, f);\r
-  word=16; fwrite(&word, 1, 2, f);\r
-  word=16; fwrite(&word, 1, 2, f);\r
-  word=16; fwrite(&word, 1, 2, f);\r
-  word=30; fwrite(&word, 1, 2, f);\r
-\r
-  cb=(char *) malloc(512*30);\r
-  Compress(jalblkasd, 512*30);\r
-  free(jalblkasd);\r
-  fwrite(&bufsize, 1, 4, f);\r
-  fwrite(cb, 1, bufsize, f);\r
-  free(cb);\r
-\r
-  quad=15; fwrite(&quad, 1, 4, f);\r
-  quad=10; fwrite(&quad, 1, 4, f);\r
-  quad=5; fwrite(&quad, 1, 4, f);\r
-  quad=0; fwrite(&quad, 1, 4, f);\r
-\r
-  t="F16W10F17W10F16W10F15W10F18W10F19W10F18W10F15W10";\r
-  i=(strlen(t)+1); fwrite(&i, 1, 4, f); fwrite(t, 1, i, f);\r
-  t="F11W10F12W10F11W10F10W10F13W10F14W10F13W10F10W10";\r
-  i=(strlen(t)+1); fwrite(&i, 1, 4, f); fwrite(t, 1, i, f);\r
-  t="F6W10F7W10F6W10F5W10F8W10F9W10F8W10F5W10";\r
-  i=(strlen(t)+1); fwrite(&i, 1, 4, f); fwrite(t, 1, i, f);\r
-  t="F1W10F2W10F1W10F0W10F3W10F4W10F3W10F0W10";\r
-  i=(strlen(t)+1); fwrite(&i, 1, 4, f); fwrite(t, 1, i, f);\r
-\r
-  fclose(f);\r
-\r
-  return 0;\r
-}\r
diff --git a/16/v2/source/verge/UTIL/CHRCONV/CHRCONV.TXT b/16/v2/source/verge/UTIL/CHRCONV/CHRCONV.TXT
deleted file mode 100755 (executable)
index 13c57c1..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-chrconv.exe\r
-documentation\r
-by zeromus 5.8.99\r
-zeromus@verge-rpg.com\r
-(be sure word wrap is on)\r
----\r
-USE: converts v1 chr -> v2 chr\r
----\r
-Chrconv is a remarkably simple utility, and that is a shame, because eventually you won't use it much at all.  But initially it will be of great value to everyone, because it converts from old v1 chrs to new v2 chrs.\r
-\r
-The v2 chr it creates will emulate the animation behavior of a v1 exactly, so it should look and operate like you're used to.  This is useful, because writing animation strings and handling odd-shaped chrs may not be something that appeals to you just yet.  For example, the default animation string used by chrconv for walking north is:F16W10F17W10F16W10F15W10F18W10F19W10F18W10F15W10.\r
-\r
-To use chrconv, simply execute it.  It will ask for the filename of the source v1 chr, and will convert it to v2 format. NOTE: it will overwrite the old chr, so you may want to back it up first.\r
-\r
-enjoy!
\ No newline at end of file
diff --git a/16/v2/source/verge/UTIL/CHRCONV/DARIN.CHR b/16/v2/source/verge/UTIL/CHRCONV/DARIN.CHR
deleted file mode 100755 (executable)
index 15b6deb..0000000
Binary files a/16/v2/source/verge/UTIL/CHRCONV/DARIN.CHR and /dev/null differ
diff --git a/16/v2/source/verge/UTIL/CHRCONV/MAKEDJ.BAT b/16/v2/source/verge/UTIL/CHRCONV/MAKEDJ.BAT
deleted file mode 100755 (executable)
index 5ad2d1f..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-@echo off\r
-gcc -s -Wall -Werror -m486 -O3 chrconv.c -o chrconv.exe\r
diff --git a/16/v2/source/verge/UTIL/CHRMAK/CHRMAK.CC b/16/v2/source/verge/UTIL/CHRMAK/CHRMAK.CC
deleted file mode 100755 (executable)
index d3ebd7e..0000000
+++ /dev/null
@@ -1,653 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-// CHRMAK.CC\r
-// V2 PCX to CHR converter w/ makefiles\r
-//\r
-// coded by aen\r
-// aen@verge-rpg.com\r
-\r
-#include <stdio.h>\r
-#include <stdlib.h>\r
-#include <stdarg.h>\r
-#include <ctype.h>\r
-#include <string.h>\r
-#include <sys/stat.h>\r
-\r
-#include <conio.h>\r
-\r
-////////////////////////////////////////////////////////////////////////////\r
-////////////////////////////////////////////////////////////////////////////\r
-\r
-typedef unsigned char byte;\r
-typedef unsigned short word;\r
-typedef unsigned long quad;\r
-\r
-static void fputw(word w, FILE *fp) { fwrite(&w,1,2,fp); }\r
-static void fputd(quad d, FILE *fp) { fwrite(&d,1,4,fp); }\r
-static word fgetw(FILE *fp) { word w; fread(&w,1,2,fp); return w; }\r
-quad fgetd(FILE *fp) { quad d; fread(&d,1,4,fp); return d; }\r
-\r
-// skips the number of bytes in the file; just seeks past them\r
-static void fskip(int bytes, FILE *fp)\r
-  { fseek(fp,bytes,SEEK_CUR); }\r
-\r
-static void fputraw(char *raw, int bytes, FILE *fp)\r
-  { fwrite(raw, 1,bytes, fp); }\r
-\r
-// writes a null-terminated string to the file\r
-void fputstrz(char *str, FILE *fp)\r
-  { fputraw(str, strlen(str)+1, fp); }\r
-\r
-// writes a string to the file (without the null-terminator), preceeded by\r
-// a quad length marker\r
-static void fputstrn(char *str, FILE *fp)\r
-  { int n=strlen(str)+1; fputd(n,fp); fputraw(str,n,fp); }\r
-\r
-////////////////////////////////////////////////////////////////////////////\r
-////////////////////////////////////////////////////////////////////////////\r
-\r
-#define CHRMAK_VER_MAJ 0\r
-#define CHRMAK_VER_MIN 1\r
-#define CHRMAK_VER_STR "0.1b"\r
-#define CHRMAK_AUTHORS "aen"\r
-\r
-// parsing vars\r
-static char *mak_base=0;\r
-static char *makp=0;\r
-static int mak_bytes=0;\r
-static char mak_tok_ident[256];\r
-static char mak_tok_val[256];\r
-static int mak_tok_valn=0;          // numeric val of mak_tok\r
-static int mak_line=0;\r
-\r
-// makefile vars\r
-static char chrmak_makefile[256];\r
-\r
-static char pcx_name[256];      static int got_pcx_name=0;\r
-static char chr_name[256];      static int got_chr_name=0;\r
-static int frame_w=0;           static int got_frame_w=0;\r
-static int frame_h=0;           static int got_frame_h=0;\r
-static int hot_x=0;             static int got_hot_x=0;\r
-static int hot_y=0;             static int got_hot_y=0;\r
-static int hot_w=0;             static int got_hot_w=0;\r
-static int hot_h=0;             static int got_hot_h=0;\r
-static int per_row=0;           static int got_per_row=0;\r
-static int total_frames=0;      static int got_total_frames=0;\r
-static int lidle=0;             static int got_lidle=0;\r
-static int ridle=0;             static int got_ridle=0;\r
-static int uidle=0;             static int got_uidle=0;\r
-static int didle=0;             static int got_didle=0;\r
-static char lscript[256];       static int got_lscript=0;\r
-static char rscript[256];       static int got_rscript=0;\r
-static char uscript[256];       static int got_uscript=0;\r
-static char dscript[256];       static int got_dscript=0;\r
-\r
-void warning(char *message, ...)\r
-{\r
-  static char buffer[256];\r
-  va_list args;\r
-\r
-  va_start(args, message);\r
-  vsprintf(buffer, message, args);\r
-  va_end(args);\r
-\r
-  printf("%s \n", buffer);\r
-}\r
-\r
-static void fatal(char *message, ...)\r
-{\r
-  static char buffer[256];\r
-  va_list args;\r
-\r
-  va_start(args, message);\r
-  vsprintf(buffer, message, args);\r
-  va_end(args);\r
-\r
-  printf("%s \n", buffer);\r
-\r
-  exit(0);\r
-}\r
-\r
-//#ifdef __DJGPP__\r
-// Watcom has one of these\r
-static int filelength(int handle)\r
-{\r
-  struct stat fileinfo;\r
-  if (-1 == fstat(handle, &fileinfo))\r
-    fatal("error fstating");\r
-  return fileinfo.st_size;\r
-}\r
-//#endif\r
-\r
-static int streq(char *a, char *b)\r
-{\r
-  while (*a)\r
-  {\r
-    if (*a++ != *b++)\r
-      return 0;\r
-  }\r
-  return !*b;\r
-}\r
-\r
-static void usage()\r
-{\r
-  printf("usage: chrmak <makefile> \n");\r
-  exit(0);\r
-}\r
-\r
-static void banner()\r
-{\r
-  printf("chrmak v%s \1e by %s \n", CHRMAK_VER_STR, CHRMAK_AUTHORS);\r
-}\r
-\r
-static void parse_args(int argc, char *argv[])\r
-{\r
-  if (argc != 2)\r
-    usage();\r
-\r
-  strcpy(chrmak_makefile, argv[1]);\r
-}\r
-\r
-static void skip_cpp_comment()\r
-{\r
-  makp+=2;\r
-  while (*makp && '\n'!=*makp)\r
-    makp++;\r
-  if (*makp)\r
-    makp++;\r
-}\r
-\r
-static void skip_c_comment()\r
-{\r
-  makp+=2;\r
-  while (*makp && ('*'!=makp[0] || '/'!=makp[1]))\r
-  {\r
-    if ('\n'==*makp)\r
-      mak_line++;\r
-    if ('/'==makp[0] && '*'==makp[1])\r
-      skip_c_comment();\r
-    else makp++;\r
-  }\r
-  if (*makp)\r
-    makp+=2;\r
-}\r
-\r
-static void parse_whitespace()\r
-{\r
-  do {\r
-    if (!*makp)\r
-      return;\r
-    if (isspace(*makp))\r
-    {\r
-      while (*makp && isspace(*makp))\r
-      {\r
-        if ('\n'==*makp)\r
-          mak_line++;\r
-        makp++;\r
-      }\r
-      continue;\r
-    }\r
-    if ('/'==makp[0] && '/'==makp[1])\r
-      { skip_cpp_comment(); continue; }\r
-    if ('/'==makp[0] && '*'==makp[1])\r
-      { skip_c_comment(); continue; }\r
-    break;\r
-  } while (1);\r
-}\r
-\r
-static void grab_ident()\r
-{\r
-  char *t=mak_tok_ident;\r
-  while (isalnum(*makp) || '_'==*makp)\r
-    *t++=*makp++;\r
-  *t=0;\r
-  strlwr(mak_tok_ident);\r
-}\r
-\r
-static void grab_val()\r
-{\r
-  char *t=mak_tok_val;\r
-  while (isalnum(*makp) || '_'==*makp)\r
-    *t++=*makp++;\r
-  *t=0;\r
-  mak_tok_valn=atoi(mak_tok_val);\r
-}\r
-\r
-static int ident_is(char *id) { return streq(mak_tok_ident,id); }\r
-\r
-static void do_assign()\r
-{\r
-  if (ident_is("pcx_name"))\r
-    { strcpy(pcx_name, mak_tok_val); got_pcx_name=1;            return; }\r
-  else if (ident_is("chr_name"))\r
-    { strcpy(chr_name, mak_tok_val); got_chr_name=1;            return; }\r
-  else if (ident_is("frame_w"))\r
-    { frame_w=mak_tok_valn;          got_frame_w=1;             return; }\r
-  else if (ident_is("frame_h"))\r
-    { frame_h=mak_tok_valn;          got_frame_h=1;             return; }\r
-  else if (ident_is("hot_x"))\r
-    { hot_x=mak_tok_valn;            got_hot_x=1;               return; }\r
-  else if (ident_is("hot_y"))\r
-    { hot_y=mak_tok_valn;            got_hot_y=1;               return; }\r
-  else if (ident_is("hot_w"))\r
-    { hot_w=mak_tok_valn;            got_hot_w=1;               return; }\r
-  else if (ident_is("hot_h"))\r
-    { hot_h=mak_tok_valn;            got_hot_h=1;               return; }\r
-  else if (ident_is("per_row"))\r
-    { per_row=mak_tok_valn;          got_per_row=1;             return; }\r
-  else if (ident_is("total_frames"))\r
-    { total_frames=mak_tok_valn;     got_total_frames=1;        return; }\r
-  else if (ident_is("lidle"))\r
-    { lidle=mak_tok_valn;            got_lidle=1;               return; }\r
-  else if (ident_is("ridle"))\r
-    { ridle=mak_tok_valn;            got_ridle=1;               return; }\r
-  else if (ident_is("uidle"))\r
-    { uidle=mak_tok_valn;            got_uidle=1;               return; }\r
-  else if (ident_is("didle"))\r
-    { didle=mak_tok_valn;            got_didle=1;               return; }\r
-  else if (ident_is("lscript"))\r
-    { strcpy(lscript, mak_tok_val);  got_lscript=1;             return; }\r
-  else if (ident_is("rscript"))\r
-    { strcpy(rscript, mak_tok_val);  got_rscript=1;             return; }\r
-  else if (ident_is("uscript"))\r
-    { strcpy(uscript, mak_tok_val);  got_uscript=1;             return; }\r
-  else if (ident_is("dscript"))\r
-    { strcpy(dscript, mak_tok_val);  got_dscript=1;             return; }\r
-\r
-  fatal("%s: unknown ident '%s' on line %i",\r
-    chrmak_makefile, mak_tok_ident, mak_line);\r
-}\r
-\r
-static int parse_assign()\r
-{\r
-  int last_line=0; // helper for error detection\r
-\r
-  parse_whitespace();\r
-  if (!*makp)\r
-    return 1;\r
-  else if (isalpha(*makp))\r
-  {\r
-    grab_ident();      // get ident\r
-    last_line=mak_line;\r
-\r
-    parse_whitespace(); // expect\r
-    if ('=' != *makp++)\r
-      fatal("%s: expected = on line %i", chrmak_makefile, last_line);\r
-\r
-    parse_whitespace(); // get val\r
-    grab_val();\r
-    last_line=mak_line;\r
-\r
-    do_assign();\r
-\r
-    parse_whitespace(); // expect\r
-    if (';' != *makp++)\r
-      fatal("%s: expected ; on line %i", chrmak_makefile, last_line);\r
-    else while (';'==*makp) makp++;\r
-\r
-    return 0;\r
-  }\r
-  fatal("%s: expected ident, got '%c' on line %i",\r
-    chrmak_makefile, *makp, mak_line);\r
-  return 1;\r
-}\r
-\r
-static void check_needs()\r
-{\r
-  if (!got_pcx_name)     fatal("%s: pcx_name missing", chrmak_makefile);\r
-  if (!got_chr_name)     fatal("%s: chr_name missing", chrmak_makefile);\r
-  if (!got_frame_w)      fatal("%s: frame_w missing", chrmak_makefile);\r
-  if (!got_frame_h)      fatal("%s: frame_h missing", chrmak_makefile);\r
-  if (!got_hot_x)        fatal("%s: hot_x missing", chrmak_makefile);\r
-  if (!got_hot_y)        fatal("%s: hot_y missing", chrmak_makefile);\r
-  if (!got_hot_w)        fatal("%s: hot_w missing", chrmak_makefile);\r
-  if (!got_hot_h)        fatal("%s: hot_h missing", chrmak_makefile);\r
-  if (!got_per_row)      fatal("%s: per_row missing", chrmak_makefile);\r
-  if (!got_total_frames) fatal("%s: total_frames missing", chrmak_makefile);\r
-  if (!got_lidle)        fatal("%s: lidle missing", chrmak_makefile);\r
-  if (!got_ridle)        fatal("%s: ridle missing", chrmak_makefile);\r
-  if (!got_uidle)        fatal("%s: uidle missing", chrmak_makefile);\r
-  if (!got_didle)        fatal("%s: didle missing", chrmak_makefile);\r
-  if (!got_lscript)      fatal("%s: lscript missing", chrmak_makefile);\r
-  if (!got_rscript)      fatal("%s: rscript missing", chrmak_makefile);\r
-  if (!got_uscript)      fatal("%s: uscript missing", chrmak_makefile);\r
-  if (!got_dscript)      fatal("%s: dscript missing", chrmak_makefile);\r
-}\r
-\r
-static void parse_makefile()\r
-{\r
-  FILE *fp=0;\r
-\r
-  printf("ú parsing %s \r", chrmak_makefile);\r
-  fflush(stdout);\r
-\r
-  fp=fopen(chrmak_makefile, "rb");\r
-  if (!fp) fatal("unable to open %s", chrmak_makefile);\r
-\r
-  mak_bytes=filelength(fileno(fp));     // calc bytes\r
-  mak_base=new char [mak_bytes+1];      // alloc room\r
-  fread(mak_base,1,mak_bytes,fp);       // read bytes\r
-  mak_base[mak_bytes]=0;                // null-term\r
-  makp=mak_base;                        // setup cur byte ptr\r
-  mak_line=1;\r
-\r
-  while (!parse_assign())\r
-    ;\r
-\r
-  // got everything we need?\r
-  check_needs();\r
-\r
-  delete[]mak_base; mak_base=0;\r
-  makp=0;\r
-\r
-  fclose(fp);\r
-\r
-  printf("û \n");\r
-  fflush(stdout);\r
-}\r
-\r
-////////////////////////////////////////////////////////////////////////////\r
-// PCX & COMPRESS STUFF ////////////////////////////////////////////////////\r
-////////////////////////////////////////////////////////////////////////////\r
-\r
-static FILE *chrfp=0;\r
-static FILE *pcxfp=0;\r
-static byte *virscr=0;\r
-\r
-int manufacturer=0;                     // pcx header\r
-int version=0;\r
-int encoding=0;\r
-int bpp=0;\r
-int xmin=0,ymin=0;\r
-int xmax=0,ymax=0;\r
-int hres=0,vres=0;\r
-char palette[48];\r
-int reserved=0;\r
-int color_planes=0;\r
-int bpl=0;\r
-int palette_type=0;\r
-char filler[58];\r
-byte pal[768];\r
-\r
-int image_width=0,image_depth=0;\r
-quad vidoffset=0;\r
-\r
-void LoadPCXHeader()\r
-{\r
-  manufacturer  = fgetc(pcxfp); // always 10\r
-  version       = fgetc(pcxfp); // should be 5?\r
-  encoding      = fgetc(pcxfp); // always 1\r
-  bpp           = fgetc(pcxfp); // bits per pixel\r
-\r
-  xmin          = fgetw(pcxfp); // grab window\r
-  ymin          = fgetw(pcxfp);\r
-  xmax          = fgetw(pcxfp);\r
-  ymax          = fgetw(pcxfp);\r
-  image_width   = xmax-xmin+1;  // calc dims\r
-  image_depth   = ymax-ymin+1;\r
-\r
-  hres          = fgetw(pcxfp);\r
-  vres          = fgetw(pcxfp);\r
-\r
-  fread(palette,1,48,pcxfp);    // ega color map\r
-\r
-  reserved      = fgetc(pcxfp);\r
-  color_planes  = fgetc(pcxfp); // should be 1\r
-\r
-  bpl           = fgetw(pcxfp); // bytes per line\r
-  palette_type  = fgetw(pcxfp);\r
-\r
-  fread(filler,1,58,pcxfp);     // nothing important here\r
-}\r
-\r
-void ReadPCXLine(byte *dest)\r
-{\r
-  int i=0,c=0,n=0,run=0;\r
-\r
-  // decode a row\r
-  for (n=0; n<image_width; n+=run)\r
-  {\r
-    // assume single pixel\r
-    run=1;\r
-    c=fgetc(pcxfp);\r
-    // is this a run?\r
-    if ((c&192)==192)\r
-    {\r
-      // calc run and grab color\r
-      run=c&63;\r
-      c=fgetc(pcxfp);\r
-    }\r
-    // now replicate run bytes\r
-    for (i=0; i<run; i++)\r
-      dest[vidoffset+n+i]=(byte)c;\r
-  }\r
-  // skip row padding, if any\r
-  fskip(bpl-image_width,pcxfp);\r
-}\r
-\r
-void LoadPCX(char *filename)\r
-{\r
-  int i=0;\r
-\r
-  // open file\r
-  if (pcxfp) fclose(pcxfp);\r
-  pcxfp=fopen(filename,"rb");\r
-  if (!pcxfp)\r
-  { printf("unable to open %s", filename);\r
-    exit(0);\r
-  }\r
-\r
-  // get info\r
-  LoadPCXHeader();\r
-\r
-  // allocate image data\r
-  if (virscr) { free(virscr); virscr=0; }\r
-  virscr=(byte *)malloc(image_width*image_depth);\r
-\r
-  // decompress image data\r
-  for (i=0; i<image_depth; i++)\r
-  { vidoffset=i*image_width;\r
-    ReadPCXLine(virscr);\r
-  }\r
-\r
-  // pal exists?\r
-  if (fgetc(pcxfp) == 12)\r
-    fread(pal,1,768,pcxfp);\r
-\r
-  // done\r
-  fclose(pcxfp);\r
-}\r
-\r
-static int bufsize=0;\r
-static byte *csrc=0, *cb=0;\r
-\r
-static void emitc(byte b) { *csrc++=b, bufsize++; }\r
-\r
-static void Compress(byte *p, int len)\r
-{\r
-  int i=0;\r
-  byte byt=0,samect=0;\r
-\r
-  csrc=cb;\r
-  i=0; bufsize=0;\r
-  do\r
-  {\r
-    byt=p[i++];\r
-    samect=1;\r
-    while (samect<254 && i<len && byt==p[i])\r
-      { samect++; i++; }\r
-\r
-    if (samect==2 && byt != 0xFF) { emitc(byt); }\r
-    if (samect==3 && byt != 0xFF) { emitc(byt); emitc(byt); }\r
-    if (samect>3 || byt == 0xFF)\r
-    {\r
-      emitc(0xFF);\r
-      emitc(samect);\r
-    }\r
-    emitc(byt);\r
-\r
-  } while (i<len);\r
-}\r
-\r
-static byte *raw=0,*r=0;\r
-\r
-static void dumpframe(int x, int y)\r
-{\r
-  byte *src=&virscr[(y*image_width)+x];\r
-\r
-  for (y=0; y<frame_h; y++)\r
-  {\r
-    for (x=0; x<frame_w; x++)\r
-      *r++=src[x];\r
-    src+=image_width;\r
-  }\r
-}\r
-\r
-////////////////////////////////////////////////////////////////////////////\r
-////////////////////////////////////////////////////////////////////////////\r
-\r
-static void WriteFrames(char *filename, FILE *dump)\r
-{\r
-  int i=0,j=0;\r
-  int raw_bytes=0;\r
-\r
-  printf("  ú reading image %s \r", pcx_name);\r
-  fflush(stdout);\r
-\r
-  LoadPCX(filename);\r
-\r
-  printf("  û \n");\r
-  fflush(stdout);\r
-\r
-  printf("  ú collecting frames \r");\r
-  fflush(stdout);\r
-\r
-  // setup bufs for raw data/compression\r
-  raw_bytes = total_frames * (frame_w*frame_h);\r
-  cb  = (byte *)malloc(raw_bytes);\r
-  raw = (byte *)malloc(raw_bytes); r=raw;\r
-\r
-  // dump all frames in row major byte order into 'raw'\r
-  for (i=0; i<10; i++)\r
-    for (j=0; j<per_row; j++)\r
-    {\r
-      if ((i*per_row)+j<total_frames)\r
-        dumpframe(1+(j*(frame_w+1)), 1+(i*(frame_h+1)));\r
-    }\r
-\r
-  printf("  û \n");\r
-  fflush(stdout);\r
-\r
-  printf("  ú compressing \r");\r
-  fflush(stdout);\r
-\r
-  // smush the sucker\r
-  Compress(raw, raw_bytes);\r
-\r
-  fputd(bufsize,dump);           // compressed data bytes\r
-  fputraw((char *)cb,bufsize,dump);      // compressed data\r
-\r
-  printf("  û \n");\r
-  fflush(stdout);\r
-\r
-  // cleanup bufs\r
-  free(raw);\r
-  free(cb);\r
-}\r
-\r
-static void WriteInfo(FILE *dump)\r
-{\r
-  fputc(2,  dump);              // version\r
-  fputw((word)frame_w, dump);         // frame dims\r
-  fputw((word)frame_h, dump);\r
-  fputw((word)hot_x, dump);           // hotspot coords\r
-  fputw((word)hot_y, dump);\r
-  fputw((word)hot_w, dump);           // hotspot dims\r
-  fputw((word)hot_h, dump);\r
-  fputw((word)total_frames, dump);    // total frames\r
-}\r
-\r
-static void WriteScripts(FILE *fp)\r
-{\r
-  fputd(lidle,fp);\r
-  fputd(ridle,fp);\r
-  fputd(uidle,fp);\r
-  fputd(didle,fp);\r
-\r
-  fputstrn(lscript,fp);\r
-  fputstrn(rscript,fp);\r
-  fputstrn(uscript,fp);\r
-  fputstrn(dscript,fp);\r
-}\r
-\r
-static void write_chr()\r
-{\r
-  strcat(pcx_name, ".pcx");\r
-  strcat(chr_name, ".chr");\r
-\r
-  /*\r
-  // DEBUG\r
-  printf(" \n");\r
-  printf("pcx_name: %s \n", pcx_name);\r
-  printf("chr_name: %s \n", chr_name);\r
-  printf("frame_w: %i \n", frame_w);\r
-  printf("frame_h: %i \n", frame_h);\r
-  printf("hot_x: %i \n", hot_x);\r
-  printf("hot_y: %i \n", hot_y);\r
-  printf("hot_w: %i \n", hot_w);\r
-  printf("hot_h: %i \n", hot_h);\r
-  printf("per_row: %i \n", per_row);\r
-  printf("total_frames: %i \n", total_frames);\r
-  printf("lidle: %i \n", lidle);\r
-  printf("ridle: %i \n", ridle);\r
-  printf("uidle: %i \n", uidle);\r
-  printf("didle: %i \n", didle);\r
-  printf("lscript: %s \n", lscript);\r
-  printf("rscript: %s \n", rscript);\r
-  printf("uscript: %s \n", uscript);\r
-  printf("dscript: %s \n", dscript);\r
-  fflush(stdout);\r
-  getch();\r
-  */\r
-\r
-  printf("> dumping %s \n", chr_name);\r
-  fflush(stdout);\r
-\r
-  chrfp=fopen(chr_name, "wb");\r
-  if (!chrfp) fatal("unable to open %s", chr_name);\r
-\r
-  WriteInfo(chrfp);\r
-  WriteFrames(pcx_name,chrfp);\r
-  WriteScripts(chrfp);\r
-\r
-  fclose(chrfp);\r
-\r
-  printf("complete! \n");\r
-  fflush(stdout);\r
-}\r
-\r
-int main(int argc, char *argv[])\r
-{\r
-  banner();\r
-\r
-  parse_args(argc, argv);\r
-  parse_makefile();\r
-\r
-  write_chr();\r
-\r
-  return 0;\r
-}\r
diff --git a/16/v2/source/verge/UTIL/CHRMAK/CHRMAK.TXT b/16/v2/source/verge/UTIL/CHRMAK/CHRMAK.TXT
deleted file mode 100755 (executable)
index b8767f1..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-chrmak.exe\r
-the utility with bloated code perpetrated by aen (aen@verge-rpg.com for hate mail)\r
-documentation\r
-by zeromus 5.8.99\r
-zermous@verge-rpg.com\r
-(be sure word wrap is on)\r
----\r
-USE: creates v2 chr from pcx file\r
----\r
-You'll use this bad boy a lot, unless you have one of those newfangled graphical chr editors.  What we do here is have a character ready in the standard pcx-graphics format (that is, with a one-pixel buffer between frames), and give it to chrmak, along with a text file describing what characteristics the output v2 chr should have.\r
-\r
-to run chrmak, simply execute chrmak with the makefile, with extension (ex: vecna.mak) as the first and only argument. (ex: "chrmak vecna.mak")\r
-\r
-The characteristics file is technically called a make file, or .mak.  it containst several variables, and what they should be.  for example:\r
-\r
-/* comment */\r
-pcx_name=rath; //comment\r
-chr_name=rath;\r
-\r
-these variables can be scattered around anywhere in the mak file, so long as they have a semicolon after each command.  you can stick comments anywhere like a c or vc file.  here is a list of all the variables you need to set in the make file, what they are, and their typical values.  In most cases, however, you should be able to just replace the values found in the samples rath.mak and vecna.mak with your own.\r
-\r
----\r
-\r
-**pcx_name** the file name of the source pcx file, sans extension. note in the above examples or in the sampel .mak files it is not pcx_name = rath.pcx, only rath.\r
-**chr_name** the filename, sans extension, of the chr file to output. same as above in all other respects.\r
-\r
-**frame_w** the width of each frame of the chr (DEFAULT 16)\r
-**frame_h** the height of each frame (DEFAULT 32)\r
-\r
-**hot_x** the x-coord of the chr's hotspot.  See appendix A for info on chr hotspots. (DEFAULT 0)\r
-**hot_y** the same, but y-coord (DEFAULT 16)\r
-**hot_w** the width of the obstructing region of the hotspot. (DEFAULT 16)\r
-**hot_h** the height of the obstructing region of the hotspot. (DEFAULT 16)\r
-\r
-**per_row** the number of frames per row in the pcx file.  in old v1 chr/pcx files, this was 5. (DEFAULT 5)\r
-**total frames** total number of frames in the pcx file. (DEFAULT 20)\r
-\r
-**lidle** the frame to show when the chr is idling, facing the left (DEFAULT 10)\r
-**ridle** the frame to show when the chr is idling, facing the right (DEFAULT 15)\r
-**uidle** the frame to show when the chr is idling, facing up (DEFAULT 5)\r
-**didle** the frame to show when the chr is idling, facing down (DEFAULT 0)\r
-\r
-**lscript** the animation script for when the chr moves to the left. See appendix B for discussion of animation scripts.  (DEFAULT F10W10F11W10F12W10F11W10F10W10F13W10F14W10F13W10)\r
-**rscript** the animation script for when the chr moves to the right. (DEFAULT F15W10F16W10F17W10F16W10F15W10F18W10F19W10F18W10)\r
-**uscript** the animation script for when the chr moves up (DEFAULT F5W10F6W10F7W10F6W10F5W10F8W10F9W10F8W10)\r
-**dscript** the animation script for when the chr moves down (DEFAULT F0W10F1W10F2W10F2W10F0W10F3W10F4W10F3W10)\r
-\r
----\r
-\r
-APPENDIX A: Hotspots\r
-\r
-If a chr is located at coordinates (x,y) on the screen, then the pixel under the hotspot on the chr will be drawn at (x,y).  \r
-\r
-You may think--"I tell a chr to go to (5,4) on the screen... but where exactly does it go? (4,4) from the middle, the left edge, or what?"\r
-Imagine three scenarios: a 4x4 sprite with the hotspot at top left, bottom left, and middle left, respectively:\r
-\r
-    Top Left          Bottom Left        Middle Left\r
-0123456789ABCDEF   0123456789ABCDEF   0123456789ABCEDEF\r
-1                  1    ****          1\r
-2    +---hotspot   2    ****          2    ****\r
-3   \|/            3    ****          3   \****\r
-4    @***          4    @***          4 +--@***\r
-5    ****          5   /|\            5 | /****\r
-6    ****          6    +---hotspot   6 |\r
-7    ****          7                  7 +---hotspot\r
-8                  8                  8\r
-\r
-So you can see how the hotspot determines how the sprite is oriented, relative to its current screen position.\r
-\r
-The default hotspot, (and its equivalent in v1) is at (0,16).  That is, 0 to the right and 16 down from the upper-left corner of the sprite.  Remember, default chr size is 16x32, and on computer, the (+,+) quadrant is quadrant IV.  In other words\r
-\r
-              -32\r
-              -24\r
-              -16\r
-              -8\r
--16 -12 -8 -4  0   4  8  12 16\r
-               8   *  *  *  *\r
-               16  *  *  *  * <--- sprite goes there.  \r
-               24  @  *  *  *      @ is where hotspot would be\r
-               32  *  *  *  *\r
-\r
-Hotspots also have an obstruction width and height.  This is the area of the chr that touches the ground, and cannot walk over things.  In your game, you may want your head to be drawn on top of a wall, if your feet are against the bottom of the wall, right?  But you don't want your feet drawn on top of the wall.\r
-\r
-+----------------------+\r
-|                      |\r
-|                      |\r
-|                      |\r
-|                      |\r
-|      +---+           |\r
-|      |***|           |\r
-+------|@@@|-----------+\r
-       +---+\r
-\r
-The messy area is the chr; the @@@, and the --- beneath it, would be OBSTRUCTIVE.  If the player tried to walk up, he couldnt--you would be walking into the wall.  The *** and the --- above it would not be obstructive.\r
-\r
-Obstructive areas are defined by declaring their width and height, based from the chr's hotspot.  the default values, a width and height of 16, would count over 16 and down 16 from the hotspot, effectively making the bottom 16x16 square of the 16x32 chr obstructive.\r
-\r
-Final example:\r
-A 32x64 giant might be defined like this:\r
-\r
-...\r
-hot_x=8;\r
-hot_y=48;\r
-hot_w=16;\r
-hot_h=16;\r
-...\r
-\r
----\r
-\r
-APPENDIX B: Animation scripts\r
-\r
-Animation scripts are made of a string of no more than 255 characters.  This string can contain any combination of COMMAND CODES, of which there are two.\r
-\r
-The two COMMAND CODES are F and W.\r
-\r
-**F** sets the current frame that should be shown.  So, if you want your animation, when walking to go from frame 12 to 15, you would make the script: "F12F13F14F15F14F13F12".  The F can have any number of digits after it, so you don't have to do F03F05, etc.. you can just do F3F5.\r
-\r
-**W** makes the animation string wait the specified number of milliseconds.  If you peek at the default animation strings mentioned a ways up, you'll see that there is a Wxx between each frame.  This pauses the frame so you can see it, effectively slowing the animation down.  In fact, the animation we just maed an example of, "F12F13F14F15F14F13F12", would g oby *waaay* too fast.  Now that we know the W command we can fix it: "F12W10F13W10F14W10F15W10F14W10F13W10F12W10".
\ No newline at end of file
diff --git a/16/v2/source/verge/UTIL/CHRMAK/MAKEDJ.BAT b/16/v2/source/verge/UTIL/CHRMAK/MAKEDJ.BAT
deleted file mode 100755 (executable)
index 6283a1f..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-@echo off\r
-gxx -s -Wall -Werror -m486 -O3 chrmak.cc -o chrmak.exe\r
diff --git a/16/v2/source/verge/UTIL/CHRMAK/MAKEWAT.BAT b/16/v2/source/verge/UTIL/CHRMAK/MAKEWAT.BAT
deleted file mode 100755 (executable)
index 21b5847..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-@echo off\r
-wcl386 /bt=dos /l=pmodew /mf /os /5r /fp5 /wx /we chrmak.cc\r
diff --git a/16/v2/source/verge/UTIL/CHRMAK/VECNA.MAK b/16/v2/source/verge/UTIL/CHRMAK/VECNA.MAK
deleted file mode 100755 (executable)
index baa4a9c..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-\r
-/* CHRMAK makefile\r
-   û aen */\r
-\r
-pcx_name=vecna;                         // image source\r
-chr_name=vecna;                         // output .CHR name\r
-\r
-frame_w=16;     frame_h=32;             // frame dims\r
-\r
-hot_x=0;        hot_y=16;               // hotspot coord\r
-hot_w=16;       hot_h=16;               // hotspot dims\r
-\r
-per_row=5;      total_frames=20;        // frames per row, total\r
-\r
-lidle=10;       ridle=15;;              // left/right idle frames\r
-uidle=5;        didle=0;                // up/down idle frames\r
\r
-lscript=F10W10F11W10F12W10F11W10F10W10F13W10F14W10F13W10;       // movement scripts\r
-rscript=F15W10F16W10F17W10F16W10F15W10F18W10F19W10F18W10;\r
-uscript=F5W10F6W10F7W10F6W10F5W10F8W10F9W10F8W10;\r
-dscript=F0W10F1W10F2W10F2W10F0W10F3W10F4W10F3W10;\r
diff --git a/16/v2/source/verge/UTIL/CHRMAK/VECNA.PCX b/16/v2/source/verge/UTIL/CHRMAK/VECNA.PCX
deleted file mode 100755 (executable)
index 2e82dcb..0000000
Binary files a/16/v2/source/verge/UTIL/CHRMAK/VECNA.PCX and /dev/null differ
diff --git a/16/v2/source/verge/UTIL/CHRMAK/VER b/16/v2/source/verge/UTIL/CHRMAK/VER
deleted file mode 100755 (executable)
index 12088da..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-\r
-  current version\r
-\r
-  chrmak.exe <aen, may 11; 12:01a> 0.1b\r
diff --git a/16/v2/source/verge/UTIL/PACK/MAKEDJ.BAT b/16/v2/source/verge/UTIL/PACK/MAKEDJ.BAT
deleted file mode 100755 (executable)
index dcc8a93..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-@echo off\r
-gcc -s -Wall -Werror -m486 -O3 pack.c -o pack.exe\r
diff --git a/16/v2/source/verge/UTIL/PACK/PACK.C b/16/v2/source/verge/UTIL/PACK/PACK.C
deleted file mode 100755 (executable)
index f349ab0..0000000
+++ /dev/null
@@ -1,166 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include <stdio.h>\r
-#include <stdlib.h>\r
-#include <string.h>\r
-\r
-#define byte unsigned char\r
-\r
-// ================================= Data ====================================\r
-\r
-FILE *pack;\r
-FILE *list;\r
-FILE *src;\r
-char *strbuf,*filebuf;\r
-int numfiles,curofs;\r
-char headertag[]="VRGPACK";\r
-\r
-typedef struct\r
-{\r
-  unsigned char fname[84];            // pathname thingo\r
-  int size;                           // size of the file\r
-  int packofs;                        // where the file can be found in PACK\r
-  int count;                          // internal (engine-runtime) use\r
-  char extractable;                   // can UNPACK .. unpack it?\r
-  char override;                      // should the engine override it w/\r
-                                      // local files?\r
-} filestruct;\r
-\r
-filestruct filetbl[512];\r
-byte *ptr;\r
-\r
-// ================================= Code ====================================\r
-\r
-void CreatePackHeader()\r
-{ char a;\r
-\r
-  fwrite(&headertag, 1, 7, pack);\r
-  a=1; fwrite(&a, 1, 1, pack);              // pack version 1\r
-  fwrite(&numfiles, 1, 4, pack);            // number of files in archive\r
-\r
-  // Hmm.. that's it. What a boring header. :)\r
-}\r
-\r
-void EncryptHeader()\r
-{ byte lastvalue; //, precodebyte;\r
-\r
-  ptr=(byte *) filetbl;\r
-  lastvalue=*ptr;\r
-  ptr++;\r
-\r
-  while (ptr < (byte *) (int) filetbl + (int) 5120)\r
-  {\r
-    (*ptr)+=lastvalue;\r
-    lastvalue=*ptr;\r
-    ptr++;\r
-  }\r
-}\r
-\r
-void DecryptHeader()\r
-{ byte lastvalue, precodebyte;\r
-\r
-  ptr=(byte *) filetbl;\r
-  lastvalue=*ptr;\r
-  ptr++;\r
-\r
-  while (ptr < (byte *) (int) filetbl + (int) 5120)\r
-  {\r
-    precodebyte=*ptr;\r
-    (*ptr)-=lastvalue;\r
-    lastvalue=precodebyte;\r
-    ptr++;\r
-  }\r
-}\r
-\r
-void BuildFileTable()\r
-{ int i;\r
-\r
-  curofs=12+(numfiles*100);\r
-  memset(filetbl, 0, sizeof filetbl);\r
-\r
-  for (i=0; i<numfiles; i++)\r
-  {\r
-    fscanf(list,"%s",strbuf);\r
-    if (!(src=fopen(strbuf,"rb")))\r
-    {\r
-      printf("Could not open included file %s. \n",strbuf);\r
-      exit(-1);\r
-    }\r
-    memcpy(&filetbl[i].fname,strbuf,strlen(strbuf));\r
-    fseek(src,0,2);\r
-    filetbl[i].packofs=curofs;\r
-    filetbl[i].size=ftell(src);\r
-    curofs+=filetbl[i].size;\r
-    fscanf(list,"%s",strbuf); filetbl[i].extractable=atoi(strbuf);\r
-    fscanf(list,"%s",strbuf); filetbl[i].override=atoi(strbuf);\r
-    fclose(src);\r
-  }\r
-  EncryptHeader();\r
-  fwrite(&filetbl, numfiles, 100, pack);\r
-  DecryptHeader();\r
-}\r
-\r
-void DumpFiles()\r
-{ int i;\r
-\r
-  for (i=0; i<numfiles; i++)\r
-  {\r
-    filebuf=(char *) malloc(filetbl[i].size);\r
-    src=fopen(filetbl[i].fname, "rb");\r
-    printf("Packing file %s...\n", filetbl[i].fname);\r
-    fread(filebuf, 1, filetbl[i].size, src);\r
-    fwrite(filebuf, 1, filetbl[i].size, pack);\r
-    fclose(src);\r
-    free(filebuf);\r
-  }\r
-  printf("Done.\n");\r
-}\r
-\r
-int main(int argc, char *argv[])\r
-{\r
-  printf("PACK v.0.1 Copyright (C)1997 BJ Eirich \n");\r
-  if (argc<2)\r
-  {\r
-    printf("USAGE: PACK <makefile> \n");\r
-    exit(-1);\r
-  }\r
-\r
-  if (!(list=fopen(argv[1],"r")))\r
-  {\r
-    printf("Unable to open file %s. \n",argv[1]);\r
-    exit(-1);\r
-  }\r
-\r
-  strbuf=(char *) malloc(100);\r
-  fscanf(list,"%s",strbuf);\r
-\r
-  if (!(pack=fopen(strbuf,"wb")))\r
-  {\r
-    printf("Unable to create file %s. \n",strbuf);\r
-    exit(0);\r
-  }\r
-  fscanf(list,"%d",&numfiles);\r
-\r
-  CreatePackHeader();\r
-  BuildFileTable();\r
-  DumpFiles();\r
-\r
-  fclose(list);\r
-  fclose(pack);\r
-\r
-  return 0;\r
-}\r
diff --git a/16/v2/source/verge/UTIL/PACK/PACK.TXT b/16/v2/source/verge/UTIL/PACK/PACK.TXT
deleted file mode 100755 (executable)
index b3f565b..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-pack.exe\r
-documentation\r
-by zeromus 5.8.99\r
-zeromus@verge-rpg.com\r
-(be sure word wrap is on)\r
----\r
-USE: creates v2 pakfile\r
----\r
-v2 enjoys its own built-in pakfile system.  v2 can use files in any number of pakfiles at the same time it can read files from your computer's regular directory structure.  This allows for simplified distribution and management of v2 games, as well as adding a small measure of security to the data you worked so hard to create for your game--it will be a pain for losers to remove (read: rip) data from pakfiles, although we make no gurantees that your data is safe.  This should help the situation some.\r
-\r
-To create a packfile, pack.exe takes a makefile of the following format:\r
-\r
---- <--cut below this line :)\r
-pakfile_to_create.vrg\r
-number_of_files\r
-file_name_1    flag_extrractable flag_overrideable\r
-file_name_2    flag_extrractable flag_overrideable\r
-file_name_3    flag_extrractable flag_overrideable\r
----\r
-\r
-Here it is with sample data.\r
-\r
----\r
-test.vrg\r
-3\r
-pack.c   0 0\r
-test.mak 1 0\r
-test.obj 0 1\r
----\r
-\r
-This would create test.vrg with three files: pack.c, neither overrideable nor extractable, test.mak, extractable, but not overrideable, and test.obj, only overrideable.\r
-\r
-Extractable means that the file will be extracted by unpack.exe.  Files you want to keep secret should have a 0 for this.  \r
-\r
-Overrideable files will be overridden by a file of the same name in the game directory.  That means, if there is a file in the game directory, it will use that one instead of the one in the pakfile.  Otherwise, the copy in the pakfile will always be used.  You'll usually want this set to 1, as it facilitates patches, etc.  For example, if battle.map had a bug in it, you could just distribute a copy of the corrected battle.map for users to chunk in the game directory, and v2 would use the corrected copy instead.\r
-\r
diff --git a/16/v2/source/verge/UTIL/PACK/TEST b/16/v2/source/verge/UTIL/PACK/TEST
deleted file mode 100755 (executable)
index 7de7a6c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-test.vrg\r
-3\r
-pack.c              1  1\r
-pack.exe            1  1\r
-todo                1  1\r
diff --git a/16/v2/source/verge/UTIL/PACK/TODO b/16/v2/source/verge/UTIL/PACK/TODO
deleted file mode 100755 (executable)
index f873c21..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-entity/entity, point makes contact w/entity, entity/bbox,b\r
-box/bbox,and a line intersect/entity and line intersect/bbox.\r
-sin,cos and tan() functions.\r
diff --git a/16/v2/source/verge/UTIL/PCX2FNT/FONT0.PCX b/16/v2/source/verge/UTIL/PCX2FNT/FONT0.PCX
deleted file mode 100755 (executable)
index a8eee68..0000000
Binary files a/16/v2/source/verge/UTIL/PCX2FNT/FONT0.PCX and /dev/null differ
diff --git a/16/v2/source/verge/UTIL/PCX2FNT/FONT02B.PCX b/16/v2/source/verge/UTIL/PCX2FNT/FONT02B.PCX
deleted file mode 100755 (executable)
index 26f4cd9..0000000
Binary files a/16/v2/source/verge/UTIL/PCX2FNT/FONT02B.PCX and /dev/null differ
diff --git a/16/v2/source/verge/UTIL/PCX2FNT/MAKEDJ.BAT b/16/v2/source/verge/UTIL/PCX2FNT/MAKEDJ.BAT
deleted file mode 100755 (executable)
index 4ffdb97..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-@echo off\r
-gcc -s -Wall -Werror -m486 -O3 pcx2fnt.c -o pcx2fnt.exe\r
diff --git a/16/v2/source/verge/UTIL/PCX2FNT/PCX2FNT.C b/16/v2/source/verge/UTIL/PCX2FNT/PCX2FNT.C
deleted file mode 100755 (executable)
index 497f183..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include <stdio.h>\r
-#include <malloc.h>\r
-\r
-char fname1[100], fname2[100];\r
-int xs, ys, ns;\r
-FILE *fnt,*pcxf;\r
-char *virscr;\r
-\r
-char manufacturer;                     // pcx header\r
-char version;\r
-char encoding;\r
-char bits_per_pixel;\r
-short int xmin,ymin;\r
-short int xmax,ymax;\r
-short int hres;\r
-short int vres;\r
-char palette[48];\r
-char reserved;\r
-char color_planes;\r
-short int bytes_per_line;\r
-short int palette_type;\r
-char filler[58];\r
-unsigned char pal[768];\r
-\r
-unsigned short int width,depth;\r
-unsigned short int bytes;\r
-unsigned char c, run, ss=0;\r
-unsigned int vidoffset, n=0;\r
-\r
-void ReadPCXLine(unsigned char *dest)\r
-{\r
-  int j;\r
-  n=0;\r
-\r
-  do {\r
-  c=fgetc(pcxf) & 0xff;\r
-    if ((c & 0xc0)==0xc0) {\r
-       run=c & 0x3f;\r
-       c=fgetc(pcxf);\r
-       for (j=0; j<run; j++)\r
-           dest[vidoffset+n+j]=c;\r
-       n+=run; }\r
-    else { dest[vidoffset+n]=c;\r
-           n++; }\r
-  } while (n<bytes);\r
-}\r
-\r
-void LoadPCXHeader()\r
-{\r
-  fread(&manufacturer,1,1,pcxf);\r
-  fread(&version,1,1,pcxf);\r
-  fread(&encoding,1,1,pcxf);\r
-  fread(&bits_per_pixel,1,1,pcxf);\r
-  fread(&xmin,1,2,pcxf);\r
-  fread(&ymin,1,2,pcxf);\r
-  fread(&xmax,1,2,pcxf);\r
-  fread(&ymax,1,2,pcxf);\r
-  fread(&hres,1,2,pcxf);\r
-  fread(&vres,1,2,pcxf);\r
-  fread(&palette,1,48,pcxf);\r
-  fread(&reserved,1,1,pcxf);\r
-  fread(&color_planes,1,1,pcxf);\r
-  fread(&bytes_per_line,1,2,pcxf);\r
-  fread(&palette_type,1,2,pcxf);\r
-  fread(&filler,1,58,pcxf);\r
-  fseek(pcxf,-768L,SEEK_END);\r
-  fread(&pal,1,768,pcxf);\r
-  fseek(pcxf,128L,SEEK_SET);\r
-  width=xmax-xmin+1;\r
-  depth=ymax-ymin+1;\r
-  bytes=bytes_per_line;\r
-}\r
-\r
-void dumpframe(int x, int y)\r
-{ int i,j;\r
-  unsigned char c;\r
-\r
-  for (i=y; i<y+ys; i++)\r
-   for (j=x; j<x+xs; j++)\r
-     {\r
-       c=virscr[(i*width)+j];\r
-       fwrite(&c, 1, 1, fnt);\r
-     }\r
-}\r
-\r
-int main()\r
-{\r
-  int i,j,z;\r
-\r
-  printf("PCX2FNT v.3.00 Copyright (C)1998 BJ Eirich \n");\r
-  printf("PCX filename: "); fflush(stdout);\r
-  scanf("%s",fname1);\r
-  pcxf=fopen(fname1,"rb");\r
-  printf("FNT filename: "); fflush(stdout);\r
-  scanf("%s",fname2);\r
-  fnt=fopen(fname2, "wb");\r
-  printf("Width of font: "); fflush(stdout);\r
-  scanf("%d", &xs);\r
-  printf("Height of font: "); fflush(stdout);\r
-  scanf("%d", &ys);\r
-  printf("Number of subsets: "); fflush(stdout);\r
-  scanf("%d", &ns);\r
-\r
-  version=1;\r
-  fwrite(&version, 1, 1, fnt);\r
-  fwrite(&xs, 1, 2, fnt);\r
-  fwrite(&ys, 1, 2, fnt);\r
-  fwrite(&ns, 1, 2, fnt);\r
-\r
-  LoadPCXHeader();\r
-  virscr=(char *) malloc(width*depth);\r
-  for (i=0; i<depth; i++)\r
-  {\r
-    vidoffset=i*width;\r
-    ReadPCXLine(virscr);\r
-  }\r
-\r
-  for (z=0; z<ns; z++)\r
-    for (i=0; i<5; i++)\r
-      for (j=0; j<20; j++)\r
-        if ((i*20)+j<96) dumpframe((j*(xs+1))+1,(i*(ys+1))+(1+(ys+1)*(z*5)));\r
-\r
-//  for (i=0; i<5; i++)\r
-//   for (j=0; j<20; j++)\r
-//      if ((i*20)+j<96) dumpframe((j*(xs+1))+1,(i*(ys+1))+(1+(ys+1)*5));\r
-\r
-  fclose(pcxf);\r
-  fclose(fnt);\r
-\r
-  return 0;\r
-}\r
diff --git a/16/v2/source/verge/UTIL/PCX2FNT/PCX2FNT.TXT b/16/v2/source/verge/UTIL/PCX2FNT/PCX2FNT.TXT
deleted file mode 100755 (executable)
index 2099b3a..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-pcx2fnt.exe\r
-documentation\r
-by zeromus 5.8.99\r
-zeromus@verge-rpg.com\r
-(be sure word wrap is on)\r
----\r
-USE: creates v2 font file from pcx\r
----\r
-If you need to make a custom font for your game, you're in luck: pcx2fnt is very easy to use.  Simply run it.  It will ask you for an input pcx file, which must be in the correct format (described below), the .fnt file to output, the height and width of the characters, and the number of subset fonts.\r
-\r
-The pcx format is simple: each font must be surrounded by a 1 pixel wide pad, with 20 characters per row.  The characters of the font must be in the correct order for v2 to print strings correctly.  The best thing you can do to figure out this format is look at the two examples.  Everything will be perfectly clear then.\r
-\r
-Subsets are what you'll see if you look in font02b.pcx.  Each font file can have many subsets potentially.  These are most often used for different colors of letters, although they *could* be completely different fonts.  The characters would have to be the same size, in that case.  This explains why the subset system was designed for, and we have only used it to, make different colors of text.\r
-\r
-That is all.
\ No newline at end of file
diff --git a/16/v2/source/verge/UTIL/TRANS/MAKEDJ.BAT b/16/v2/source/verge/UTIL/TRANS/MAKEDJ.BAT
deleted file mode 100755 (executable)
index 03af5a1..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-@echo off\r
-gcc -s -Wall -Werror -m486 -O3 trans.c -o trans.exe\r
diff --git a/16/v2/source/verge/UTIL/TRANS/SULLY.PDF b/16/v2/source/verge/UTIL/TRANS/SULLY.PDF
deleted file mode 100755 (executable)
index 9f36008..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-gradients 16\r
-starts 0 ends 15 endspan\r
-starts 16 ends 31 endspan\r
-starts 32 ends 47 endspan\r
-starts 48 ends 63 endspan\r
-starts 64 ends 79 endspan\r
-starts 80 ends 95 endspan\r
-starts 96 ends 111 endspan\r
-starts 112 ends 127 endspan\r
-starts 128 ends 143 endspan\r
-starts 144 ends 159 endspan\r
-starts 160 ends 167 endspan\r
-starts 168 ends 175 endspan\r
-starts 176 ends 191 endspan\r
-starts 192 ends 207 endspan\r
-starts 208 ends 223 endspan\r
-starts 224 ends 239 endspan\r
-starts 240 ends 254 endspan\r
-end\r
diff --git a/16/v2/source/verge/UTIL/TRANS/TRANS.C b/16/v2/source/verge/UTIL/TRANS/TRANS.C
deleted file mode 100755 (executable)
index d34b483..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include <stdio.h>\r
-#include <strings.h>\r
-#include <stdlib.h>\r
-\r
-// ================================= Data ====================================\r
-\r
-struct span\r
-{\r
-  int begin, end;                     // begin & end location of span\r
-  int len, inverse;                   // lenth of span and inverse on/off\r
-};\r
-\r
-struct span spans[32];                // maximum of 32 spans.\r
-char numspans;                        // number of active spans in PDF\r
-\r
-unsigned char *transparencytbl;       // full transparency table (64k)\r
-char outname[100];                    // output filename\r
-char paldefname[100];                 // palette definition filename\r
-char *strbuf;                         // generic string buffer\r
-\r
-char spanidx[256];                    // Color -> Span xlat table\r
-\r
-// ================================= Code ====================================\r
-\r
-void ParsePaletteDefinition(FILE *f)\r
-{ int i;\r
-\r
-  fscanf(f,"%s",strbuf);\r
-  if (stricmp("gradients",strbuf))\r
-  {\r
-    printf("Not a valid PDF file. \n");\r
-    exit(-1);\r
-  }\r
-  fscanf(f,"%s",strbuf);\r
-  numspans=atoi(strbuf);\r
-\r
-  for (i=0; i<numspans; i++)\r
-  {\r
-     spans[i].inverse=0;\r
-\r
-     while (1)\r
-     {\r
-        fscanf(f,"%s",strbuf);\r
-        if (!stricmp("starts",strbuf))\r
-           { fscanf(f,"%s", strbuf);\r
-             spans[i].begin=atoi(strbuf);\r
-             continue; }\r
-        if (!stricmp("ends",strbuf))\r
-           { fscanf(f,"%s", strbuf);\r
-             spans[i].end=atoi(strbuf);\r
-             continue; }\r
-       if (!stricmp("inverse",strbuf))\r
-           { spans[i].inverse=1;\r
-             continue; }\r
-       if (!stricmp("endspan",strbuf))\r
-           { spans[i].len=abs(spans[i].end-spans[i].begin);\r
-             break; }\r
-     }\r
-  }\r
-  fclose(f);\r
-}\r
-\r
-void GenerateSpanIndex()\r
-{ int i,j;\r
-\r
-  for (i=0; i<numspans; i++)\r
-  {\r
-    for (j=spans[i].begin; j<=spans[i].end; j++)\r
-        spanidx[j]=i;\r
-  }\r
-}\r
-\r
-unsigned char MixColors(int i, int j)\r
-{ unsigned char in_i, in_j, in_m, f;\r
-\r
-  in_i=i-spans[(int)spanidx[i]].begin;      // Get a intensity number from 0 to len\r
-  in_i=in_i*63/spans[(int)spanidx[i]].len;  // Translate intensity to 0..63 range\r
-  if (spans[(int)spanidx[i]].inverse)\r
-     in_i=63-in_i;                     // If inverse, flip it.\r
-\r
-  // Now, repeat for j.\r
-\r
-  in_j=j-spans[(int)spanidx[j]].begin;      // Get a intensity number from 0 to len\r
-  in_j=in_j*63/spans[(int)spanidx[j]].len;  // Translate intensity to 0..63 range\r
-  if (spans[(int)spanidx[j]].inverse)\r
-     in_j=63-in_j;                     // If inverse, flip it.\r
-\r
-  in_m=(in_i+in_j)/2;                  // Average intensities.\r
-\r
-  // now find final color.\r
-\r
-  if (spans[(int)spanidx[i]].inverse)       // If dest span is inverse,\r
-     in_m=63-in_m;                     // flip intensity_mixed\r
-  in_m=in_m*spans[(int)spanidx[i]].len/63;  // Convert intensity to 0 .. len range\r
-\r
-  f=spans[(int)spanidx[i]].begin+in_m;      // done!\r
-\r
-  return f;\r
-}\r
-\r
-void WriteTable(FILE *f)\r
-{ int i, j;\r
-\r
-  transparencytbl=(char *) malloc(65536);\r
-  memset(transparencytbl, 0, 65535);\r
-\r
-  for (i=0; i<256; i++)\r
-      for (j=0; j<256; j++)\r
-        transparencytbl[(i*256)+j]=MixColors(i, j);\r
-\r
-  fwrite(transparencytbl, 256, 256, f);\r
-  fclose(f);\r
-}\r
-\r
-int main ()\r
-{ FILE *f;\r
-\r
-  strbuf=(char *) malloc(2000);\r
-  printf("TRANS v.1.00 Transparency-table generator \n");\r
-  printf("Copyright (C)1998 vecna \n\n");\r
-\r
-  printf("Output table filename: ");\r
-  fflush(stdout); gets(outname);\r
-  printf("Palette definition filename: ");\r
-  fflush(stdout); gets(paldefname);\r
-\r
-  if (!(f=fopen(paldefname,"r")))\r
-  {\r
-    printf("Could not open palette definition file.\n");\r
-    exit(-1);\r
-  }\r
-\r
-  ParsePaletteDefinition(f);\r
-  GenerateSpanIndex();\r
-\r
-  f=fopen(outname,"wb");\r
-  WriteTable(f);\r
-\r
-  return 0;\r
-}\r
diff --git a/16/v2/source/verge/UTIL/TRANS/TRANS.TXT b/16/v2/source/verge/UTIL/TRANS/TRANS.TXT
deleted file mode 100755 (executable)
index c32ecd6..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-trans.exe\r
-documentation\r
-by zeromus 5.8.99\r
-zeromus@verge-rpg.com\r
-(be sure word wrap is on)\r
----\r
-USE: creates translucency table for use in v2\r
----\r
-If you want to use translucency effects in v2, you'll need to have the appropriate trans.tbl file.  This program will make it.\r
-\r
-Game palettes, unless you're elite like snes programmers, should be made up of a number of gradients.  Trans.exe takes advantage of this by accepting a makefile (for amusement called Palette Definition File, conveniently extensioned .pdf.  Our extension makes more sense than Adobe's, though.) consisting of a list of gradients found in the palette.  This unique method of generating a translucency table does not need the actual palette--it only needs to know which indexes in the palette start and finish each gradient.\r
-\r
-The .pdf format looks like this (the x spots are where you'll fill in numbers):\r
-\r
-GRADIENTS x_num_times\r
-STARTS x ENDS x ENDSPAN\r
-STARTS x ENDS x ENDSPAN <--x_num_time entries\r
-STARTS x ENDS x ENDSPAN\r
-... etc\r
-\r
-With sample data:\r
-\r
-gradients 3\r
-starts 0 ends 128 endspan\r
-starts 129 ends 240 inverse endspan\r
-starts 141 ends 254 endspan\r
-\r
-Whats that inverse, stuck in there, you say?  That just indicates that instead of gradient going from dark to light it goes from light to dark (that *is* what inverse means).\r
-\r
-Inspect the sample files for more info.\r
-\r
-That is all.
\ No newline at end of file
diff --git a/16/v2/source/verge/UTIL/TRANS/TYRIAN.PDF b/16/v2/source/verge/UTIL/TRANS/TYRIAN.PDF
deleted file mode 100755 (executable)
index 54a4550..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-gradients 16\r
-starts 0 ends 15 endspan\r
-starts 16 ends 32 endspan\r
-starts 33 ends 47 endspan\r
-starts 48 ends 63 endspan\r
-starts 64 ends 79 endspan\r
-starts 80 ends 95 endspan\r
-starts 96 ends 111 endspan\r
-starts 112 ends 127 endspan\r
-starts 128 ends 143 endspan\r
-starts 144 ends 159 endspan\r
-starts 160 ends 175 endspan\r
-starts 176 ends 191 endspan\r
-starts 192 ends 207 endspan\r
-starts 208 ends 223 endspan\r
-starts 224 ends 239 endspan\r
-starts 240 ends 255 endspan\r
diff --git a/16/v2/source/verge/UTIL/TRANS/TYRPAL.PCX b/16/v2/source/verge/UTIL/TRANS/TYRPAL.PCX
deleted file mode 100755 (executable)
index f1fca3e..0000000
Binary files a/16/v2/source/verge/UTIL/TRANS/TYRPAL.PCX and /dev/null differ
diff --git a/16/v2/source/verge/UTIL/TRANS/VERGE.PDF b/16/v2/source/verge/UTIL/TRANS/VERGE.PDF
deleted file mode 100755 (executable)
index c55b015..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-gradients 16\r
-starts 0 ends 31 endspan\r
-starts 32 ends 47 inverse endspan\r
-starts 48 ends 55 inverse endspan\r
-starts 56 ends 63 endspan\r
-starts 64 ends 79 inverse endspan\r
-starts 80 ends 87 inverse endspan\r
-starts 88 ends 111 inverse endspan\r
-starts 112 ends 127 inverse endspan\r
-starts 128 ends 135 inverse endspan\r
-starts 136 ends 159 inverse endspan\r
-starts 160 ends 182 endspan\r
-starts 183 ends 191 endspan\r
-starts 191 ends 223 inverse endspan\r
-starts 224 ends 239 endspan\r
-starts 240 ends 247 inverse endspan\r
-starts 248 ends 254 inverse endspan\r
diff --git a/16/v2/source/verge/UTIL/UNPACK/MAKEDJ.BAT b/16/v2/source/verge/UTIL/UNPACK/MAKEDJ.BAT
deleted file mode 100755 (executable)
index 1077e24..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-@echo off\r
-gcc -s -Wall -Werror -m486 -O3 unpack.c -o unpack.exe\r
diff --git a/16/v2/source/verge/UTIL/UNPACK/TEST b/16/v2/source/verge/UTIL/UNPACK/TEST
deleted file mode 100755 (executable)
index 7de7a6c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-test.vrg\r
-3\r
-pack.c              1  1\r
-pack.exe            1  1\r
-todo                1  1\r
diff --git a/16/v2/source/verge/UTIL/UNPACK/TODO b/16/v2/source/verge/UTIL/UNPACK/TODO
deleted file mode 100755 (executable)
index f873c21..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-entity/entity, point makes contact w/entity, entity/bbox,b\r
-box/bbox,and a line intersect/entity and line intersect/bbox.\r
-sin,cos and tan() functions.\r
diff --git a/16/v2/source/verge/UTIL/UNPACK/UNPACK.C b/16/v2/source/verge/UTIL/UNPACK/UNPACK.C
deleted file mode 100755 (executable)
index d6c79be..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include <stdio.h>\r
-#include <malloc.h>\r
-\r
-#define byte unsigned char\r
-// ================================= Data ====================================\r
-\r
-FILE *pack;\r
-FILE *src;\r
-char strbuf[2048],*filebuf;\r
-int numfiles;\r
-char headertag[]={ 'V','R','G','P','A','C','K',0 };\r
-\r
-struct filestruct\r
-{\r
-  unsigned char fname[84];            // pathname thingo\r
-  int size;                           // size of the file\r
-  int packofs;                        // where the file can be found in PACK\r
-  int count;                          // internal (engine-runtime) use\r
-  char extractable;                   // can UNPACK .. unpack it?\r
-  char override;                      // should the engine override it w/\r
-                                      // local files?\r
-};\r
-\r
-struct filestruct filetbl[512];\r
-\r
-// ================================= Code ====================================\r
-\r
-void DecryptHeader()\r
-{ byte lastvalue, precodebyte, *ptr;\r
-\r
-  ptr=(byte *) filetbl;\r
-  lastvalue=*ptr;\r
-  ptr++;\r
-\r
-  while (ptr < (byte *) (int) filetbl + (int) 5120)\r
-  {\r
-    precodebyte=*ptr;\r
-    (*ptr)-=lastvalue;\r
-    lastvalue=precodebyte;\r
-    ptr++;\r
-  }\r
-}\r
-\r
-void CheckPackHeader()\r
-{ char a;\r
-\r
-  fread(strbuf, 1, 7, pack);\r
-  strbuf[8]=0;\r
-  if (strcmp(strbuf,headertag))\r
-  {\r
-    printf("*error* Not a valid VRG packfile. \n");\r
-    exit(-1);\r
-  }\r
-  fread(&a, 1, 1, pack);\r
-  if (a!=1)\r
-  {\r
-    printf("*error* Incorrect VRG packfile version. \n");\r
-    exit(-1);\r
-  }\r
-  fread(&numfiles, 1, 4, pack);\r
-  fread(&filetbl, 100, numfiles, pack);\r
-  DecryptHeader();\r
-}\r
-\r
-void DumpFiles()\r
-{ int i;\r
-\r
-  printf("UNPACK v.0.1 Copyright (C)1997 BJ Eirich\n");\r
-  for (i=0; i<numfiles; i++)\r
-  {\r
-    filebuf=(char *) malloc(filetbl[i].size);\r
-    fread(filebuf, 1, filetbl[i].size, pack);\r
-    if (filetbl[i].extractable)\r
-    {\r
-      src=fopen(filetbl[i].fname, "wb");\r
-      printf("File: %s \n",filetbl[i].fname);\r
-      fwrite(filebuf, 1, filetbl[i].size, src);\r
-      fclose(src);\r
-    }\r
-    else printf("File: %s unexctractable.\n",filetbl[i].fname);\r
-    free(filebuf);\r
-  }\r
-}\r
-\r
-int main(int argc, char *argv[])\r
-{\r
-  if (argc<2)\r
-  {\r
-    printf("UNPACK v.0.1 Copyright (C)1997 BJ Eirich \n");\r
-    printf("USAGE: UNPACK <VRG packfile> \n");\r
-    exit(-1);\r
-  }\r
-\r
-  if (!(pack=fopen(argv[1],"rb")))\r
-  {\r
-    printf("Unable to open file %s. \n",argv[1]);\r
-    exit(-1);\r
-  }\r
-\r
-  CheckPackHeader();\r
-  DumpFiles();\r
-\r
-  fclose(pack);\r
-\r
-  return 0;\r
-}\r
diff --git a/16/v2/source/verge/UTIL/UNPACK/UNPACK.TXT b/16/v2/source/verge/UTIL/UNPACK/UNPACK.TXT
deleted file mode 100755 (executable)
index e75838d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-unpack.exe\r
-documentation\r
-by zeromus 5.8.99\r
-zeromus@verge-rpg.com\r
-(be sure word wrap is on)\r
----\r
-USE: extracts files from v2 pakfile\r
----\r
-It doesnt get any better than this. type unpack followed by the name of the packfile you want to unpack.  if you can't get that right, unpack.exe will give you even more explicit instructions.  unpack.exe will then dump all the files contained in the pakfile with their extractable flags set into the directory you ran unpack.exe from.\r
-\r
-Use this only if the author of a demo/game gives you permission to use his stuff, or else we'll hunt you down and break your legs.\r
-\r
-That is all.
\ No newline at end of file
diff --git a/16/v2/source/verge/VCC/CLEAN.BAT b/16/v2/source/verge/VCC/CLEAN.BAT
deleted file mode 100755 (executable)
index c30021a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-@echo off\r
-if exist *.obj del *.obj\r
-if exist *.o del *.o\r
-if exist *.err del *.err\r
diff --git a/16/v2/source/verge/VCC/CODE.H b/16/v2/source/verge/VCC/CODE.H
deleted file mode 100755 (executable)
index bbcfca2..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#if !defined(__CODE_INC)\r
-#define __CODE_INC\r
-\r
-// Single-byte opcode descriptors\r
-\r
-#define EXEC 1\r
-#define VAR0_ASSIGN 2\r
-#define VAR1_ASSIGN 3\r
-#define VAR2_ASSIGN 4\r
-#define GENERAL_IF 5\r
-#define ELSE 6\r
-#define GOTO 7\r
-#define FOR_LOOP0 8\r
-#define FOR_LOOP1 9\r
-#define SWITCH 10\r
-#define CASE 11\r
-#define ENDSCRIPT 255\r
-\r
-// Single-byte operand descriptors\r
-\r
-#define OP_IMMEDIATE 1\r
-#define OP_VAR0 2\r
-#define OP_VAR1 3\r
-#define OP_VAR2 4\r
-#define OP_GROUP 5\r
-\r
-// Single-byte IF handler parameters\r
-\r
-#define ZERO 0\r
-#define NONZERO 1\r
-#define EQUALTO 2\r
-#define NOTEQUAL 3\r
-#define GREATERTHAN 4\r
-#define GREATERTHANOREQUAL 5\r
-#define LESSTHAN 6\r
-#define LESSTHANOREQUAL 7\r
-\r
-// Single byte assignment descriptors\r
-\r
-#define SET 1\r
-#define INCREMENT 2\r
-#define DECREMENT 3\r
-#define INCSET 4\r
-#define DECSET 5\r
-\r
-// Operand combination descriptors\r
-#define ADD 1\r
-#define SUB 2\r
-#define MULT 3\r
-#define DIV 4\r
-#define MOD 5\r
-#define OP_END 255\r
-\r
-#endif // __CODE_INC\r
diff --git a/16/v2/source/verge/VCC/COMPILE.C b/16/v2/source/verge/VCC/COMPILE.C
deleted file mode 100755 (executable)
index 2de7ce5..0000000
+++ /dev/null
@@ -1,1256 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-// ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\r
-// ³                  The VergeC Compiler version 2.01                   ³\r
-// ³              Copyright (C)1998 BJ Eirich (aka vecna)                ³\r
-// ³                       Code Generation module                        ³\r
-// ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\r
-\r
-#include <stdio.h>\r
-#include <stdlib.h>\r
-#include <string.h>\r
-\r
-#include "funclib.h"\r
-#include "vcc.h"\r
-#include "vccode.h"\r
-#include "lexical.h"\r
-#include "preproc.h"\r
-\r
-// ================================= Data ====================================\r
-\r
-#define LETTER 1\r
-#define SPECIAL 3\r
-\r
-// -- Function arguements type defs\r
-\r
-#define VOID 1\r
-#define INT 1\r
-#define CHARPTR 2\r
-#define STRING 3\r
-\r
-unsigned char *source, *src;\r
-unsigned char *outbuf, *code;\r
-unsigned char inevent=0;\r
-\r
-typedef struct\r
-{\r
-  char fname[40];\r
-  char argtype[20];\r
-  int numargs, numlocals;\r
-  int returntype;\r
-  int syscodeofs;\r
-} funcdecl;\r
-\r
-funcdecl funcs[700];\r
-int numfuncs=0;\r
-\r
-typedef struct\r
-{\r
-  char vname[40];\r
-  int varstartofs;\r
-  int arraylen;\r
-} vardecl;\r
-\r
-vardecl vars[500];\r
-int curstartofs=0;\r
-int numvars=0;\r
-int varidx;\r
-\r
-typedef struct\r
-{\r
-  char vname[40];\r
-  int vsofs;\r
-  int arraylen;\r
-} strdecl;\r
-\r
-strdecl str[300];\r
-int sstartofs=0;\r
-int numstr=0;\r
-\r
-int vctype;        // 0 / 1 :: map / system\r
-\r
-// -- local function parameters --\r
-\r
-char larg[20][40];\r
-\r
-// -- MAP vc stuff --\r
-\r
-char *functbl[512];\r
-int mfuncs=0;\r
-\r
-// ================================= Code ====================================\r
-\r
-void HandleString();\r
-void HandleFunction();\r
-void HandleUserFunction();\r
-void HandleFunctionType();\r
-void EmitOperand();\r
-\r
-void EmitC (char c)\r
-{\r
-  if (locate && locate == (int)(code - outbuf))\r
-    vcerr("Located.");\r
-\r
-  *code++ = c;\r
-}\r
-\r
-void EmitW (short w)\r
-{\r
-  short *c=(short *)code;\r
-\r
-  if (locate && locate == (int)(code - outbuf))\r
-    vcerr("Located.");\r
-\r
-  *c=w; code+=2;\r
-}\r
-\r
-void EmitD (int d)\r
-{\r
-  long *c=(long *)code;\r
-\r
-  if (locate && locate == (int)(code - outbuf))\r
-    vcerr("Located.");\r
-\r
-  *c=d; code+=4;\r
-}\r
-\r
-void EmitString(char *str)\r
-  { while ((*code++ = *str++)) ; }\r
-\r
-void HandleStringOperand()\r
-{\r
-  if (NextIs("\""))\r
-  {\r
-    EmitC(s_IMMEDIATE);\r
-    GetString();\r
-    EmitString(token);\r
-    return;\r
-  }\r
-  GetToken();\r
-  if (token_type==IDENTIFIER && varcategory==op_STRING)\r
-  {\r
-    EmitC(s_GLOBAL);\r
-    EmitW(str[varidx].vsofs);\r
-    return;\r
-  }\r
-  if (token_type==IDENTIFIER && varcategory==op_SARRAY)\r
-  {\r
-    EmitC(s_ARRAY);\r
-    EmitW(str[varidx].vsofs);\r
-    Expect("[");\r
-    EmitOperand();\r
-    Expect("]");\r
-    return;\r
-  }\r
-  if (token_type==IDENTIFIER && varcategory==op_SLOCAL)\r
-  {\r
-    EmitC(s_LOCAL);\r
-    EmitC((char) varidx);\r
-    return;\r
-  }\r
-  if (TokenIs("str"))\r
-  {\r
-    EmitC(s_NUMSTR);\r
-    Expect("(");\r
-    EmitOperand();\r
-    Expect(")");\r
-    return;\r
-  }\r
-  if (TokenIs("left"))\r
-  {\r
-    EmitC(s_LEFT);\r
-    Expect("(");\r
-    HandleString();\r
-    Expect(",");\r
-    EmitOperand();\r
-    Expect(")");\r
-    return;\r
-  }\r
-  if (TokenIs("right"))\r
-  {\r
-    EmitC(s_RIGHT);\r
-    Expect("(");\r
-    HandleString();\r
-    Expect(",");\r
-    EmitOperand();\r
-    Expect(")");\r
-    return;\r
-  }\r
-  if (TokenIs("mid"))\r
-  {\r
-    EmitC(s_MID);\r
-    Expect("(");\r
-    HandleString();\r
-    Expect(",");\r
-    EmitOperand();\r
-    Expect(",");\r
-    EmitOperand();\r
-    Expect(")");\r
-    return;\r
-  }\r
-  if (TokenIs("chr"))\r
-  {\r
-    EmitC(s_CHR);\r
-    Expect("(");\r
-    EmitOperand();\r
-    Expect(")");\r
-    return;\r
-  }\r
-  else vcerr("Unknown string operand. ");\r
-}\r
-\r
-void HandleString()\r
-{\r
-  while (1)\r
-  {\r
-    HandleStringOperand();\r
-    if (NextIs("+"))\r
-    {\r
-       EmitC(s_ADD);\r
-       GetToken();\r
-       continue;\r
-    }\r
-    else\r
-    {\r
-       EmitC(s_END);\r
-       break;\r
-    }\r
-  }\r
-}\r
-\r
-void EmitOperand();\r
-void DoSomething();\r
-\r
-void HandleOperand()\r
-{\r
-  GetToken();\r
-  if (token_type==DIGIT)\r
-  {\r
-     EmitC(op_IMMEDIATE);\r
-     EmitD(token_nvalue);\r
-     return;\r
-  }\r
-  if (token_type==IDENTIFIER)\r
-  {\r
-    if (varcategory==op_UVAR)\r
-    {\r
-      EmitC(op_UVAR);\r
-      EmitD(vars[varidx].varstartofs);\r
-      return;\r
-    }\r
-    if (varcategory==op_UVARRAY)\r
-    {\r
-      EmitC(op_UVARRAY);\r
-      EmitD(vars[varidx].varstartofs);\r
-      Expect("[");\r
-      EmitOperand();\r
-      Expect("]");\r
-      return;\r
-    }\r
-    if (varcategory==op_LVAR)\r
-    {\r
-      EmitC(op_LVAR);\r
-      EmitC((char) varidx);\r
-      return;\r
-    }\r
-    if (varcategory==op_HVAR0)\r
-    {\r
-      EmitC(op_HVAR0);\r
-      EmitC((char) varidx);\r
-      return;\r
-    }\r
-    if (varcategory==op_HVAR1)\r
-    {\r
-      EmitC(op_HVAR1);\r
-      EmitC((char) varidx);\r
-      Expect("[");\r
-      EmitOperand();\r
-      Expect("]");\r
-      return;\r
-    }\r
-  }\r
-  if (token_type==FUNCTION && token_subtype==op_BFUNC)\r
-  {\r
-    if (!returntypes[funcidx])\r
-    {\r
-      vcerr("%s() does not return a vlue.", token);\r
-    }\r
-    EmitC(op_BFUNC);\r
-    HandleFunction();\r
-    return;\r
-  }\r
-  if (token_type==FUNCTION && token_subtype==op_UFUNC)\r
-  {\r
-    if (!funcs[funcidx].returntype)\r
-    {\r
-      vcerr("%s() does not return a vlue.", token);\r
-    }\r
-    EmitC(op_UFUNC);\r
-    HandleUserFunction();\r
-    return;\r
-  }\r
-  vcerr("Unknown token.");\r
-}\r
-\r
-void EmitOperand()\r
-{\r
-  while (1)                // Modifier-process loop.\r
-  {\r
-     if (NextIs("("))\r
-     {\r
-        EmitC(op_GROUP);\r
-        GetToken();\r
-        EmitOperand();\r
-        Expect(")");\r
-     }\r
-     else HandleOperand();\r
-\r
-     if (NextIs("+"))\r
-     {\r
-        EmitC(op_ADD);\r
-        GetToken();\r
-        continue;\r
-     }\r
-     else if (NextIs("-"))\r
-     {\r
-        EmitC(op_SUB);\r
-        GetToken();\r
-        continue;\r
-     }\r
-     else if (NextIs("/"))\r
-     {\r
-        EmitC(op_DIV);\r
-        GetToken();\r
-        continue;\r
-     }\r
-     else if (NextIs("*"))\r
-     {\r
-        EmitC(op_MULT);\r
-        GetToken();\r
-        continue;\r
-     }\r
-     else if (NextIs("%"))\r
-     {\r
-        EmitC(op_MOD);\r
-        GetToken();\r
-        continue;\r
-     }\r
-     else if (NextIs(">>"))\r
-     {\r
-        EmitC(op_SHR);\r
-        GetToken();\r
-        continue;\r
-     }\r
-     else if (NextIs("<<"))\r
-     {\r
-        EmitC(op_SHL);\r
-        GetToken();\r
-        continue;\r
-     }\r
-     else if (NextIs("&"))\r
-     {\r
-        EmitC(op_AND);\r
-        GetToken();\r
-        continue;\r
-     }\r
-     else if (NextIs("|"))\r
-     {\r
-        EmitC(op_OR);\r
-        GetToken();\r
-        continue;\r
-     }\r
-     else if (NextIs("^"))\r
-     {\r
-        EmitC(op_XOR);\r
-        GetToken();\r
-        continue;\r
-     }\r
-     else\r
-     {\r
-        EmitC(op_END);\r
-        break;\r
-     }\r
-  }\r
-}\r
-\r
-void HandleFunction()\r
-{\r
-  switch (funcidx)\r
-  {\r
-    case 0: vcfunc_Exit(); break;\r
-    case 1: Message(); break;\r
-    case 2: GenericFunc(3,1); break;\r
-    case 3: GenericFunc(4,1); break;\r
-    case 4: GenericFunc(5,1); break;\r
-    case 5: vc_loadimage(); break;\r
-    case 6: GenericFunc(7,5); break;\r
-    case 7: GenericFunc(8,5); break;\r
-    case 8: GenericFunc(9,0); break;\r
-    case 9: GenericFunc(10,0); break;\r
-    case 10: vc_AllocateEntity(); break;\r
-    case 11: GenericFunc(12,1); break;\r
-    case 12: vc_Map(); break;\r
-    case 13: vc_LoadFont(); break;\r
-    case 14: vc_PlayFLI(); break;\r
-    case 15: GenericFunc(16,2); break;\r
-    case 16: vc_PrintString(); break;\r
-    case 17: vc_LoadRaw(); break;\r
-    case 18: GenericFunc(19,4); break;\r
-    case 19: GenericFunc(20,1); break;\r
-    case 20: GenericFunc(21,7); break;\r
-    case 21: GenericFunc(22,0); break;\r
-    case 22: GenericFunc(23,0); break;\r
-    case 23: GenericFunc(24,1); break;\r
-    case 24: vc_EntityMove(); break;\r
-    case 25: GenericFunc(26,4); break;\r
-    case 26: GenericFunc(27,4); break;\r
-    case 27: GenericFunc(28,5); break;\r
-    case 28: GenericFunc(29,4); break;\r
-    case 29: GenericFunc(30,4); break;\r
-    case 30: GenericFunc(31,5); break;\r
-    case 31: GenericFunc(32,5); break;\r
-    case 32: vc_strlen(); break;\r
-    case 33: vc_strcmp(); break;\r
-    case 34: GenericFunc(35,0); break;\r
-    case 35: GenericFunc(36,1); break;\r
-    case 36: GenericFunc(37,1); break;\r
-    case 37: GenericFunc(38,1); break;\r
-    case 38: GenericFunc(39,3); break;\r
-    case 39: GenericFunc(40,2); break;\r
-    case 40: GenericFunc(41,1); break;\r
-    case 41: GenericFunc(42,1); break;\r
-    case 42: GenericFunc(43,3); break;\r
-    case 43: vc_HookRetrace(); break;\r
-    case 44: vc_HookTimer(); break;\r
-    case 45: GenericFunc(46,2); break;\r
-    case 46: vc_SetRString(); break;\r
-    case 47: GenericFunc(48,4); break;\r
-    case 48: GenericFunc(49,3); break;\r
-    case 49: GenericFunc(50,0); break;\r
-    case 50: vc_PartyMove(); break;\r
-    case 51: GenericFunc(52,1); break;\r
-    case 52: GenericFunc(53,1); break;\r
-    case 53: GenericFunc(54,1); break;\r
-    case 54: GenericFunc(55,0); break;\r
-    case 55: GenericFunc(56,1); break;\r
-    case 56: GenericFunc(57,1); break;\r
-    case 57: GenericFunc(58,5); break;\r
-    case 58: GenericFunc(59,5); break;\r
-    case 59: GenericFunc(60,2); break;\r
-    case 60: vc_HookKey(); break;\r
-    case 61: vc_PlayMusic(); break;\r
-    case 62: GenericFunc(63,0); break;\r
-    case 63: GenericFunc(64,5); break;\r
-    case 64: vc_OpenFile(); break;\r
-    case 65: GenericFunc(66,1); break;\r
-    case 66: vc_QuickRead(); break;\r
-    case 67: GenericFunc(68,1); break;\r
-    case 68: GenericFunc(69,1); break;\r
-    case 69: GenericFunc(70,0); break;\r
-    case 70: GenericFunc(71,0); break;\r
-    case 71: GenericFunc(72,7); break;\r
-    case 72: GenericFunc(73,15); break;\r
-    case 73: vc_CacheSound(); break;\r
-    case 74: GenericFunc(75,0); break;\r
-    case 75: GenericFunc(76,3); break;\r
-    case 76: GenericFunc(77,7); break;\r
-    case 77: GenericFunc(78,4); break;\r
-    case 78: GenericFunc(79,4); break;\r
-    case 79: vc_val(); break;\r
-    case 80: GenericFunc(81,7); break;\r
-    case 81: GenericFunc(82,5); break;\r
-    case 82: vc_Log(); break;\r
-    case 83: GenericFunc(84,2); break;\r
-    case 84: GenericFunc(85,2); break;\r
-    case 85: GenericFunc(86,3); break;\r
-    case 86: GenericFunc(87,1); break;\r
-    case 87: GenericFunc(88,1); break;\r
-    case 88: GenericFunc(89,1); break;\r
-    case 89: vc_fgetline(); break;\r
-    case 90: vc_fgettoken(); break;\r
-    case 91: vc_fwritestring(); break;\r
-    case 92: GenericFunc(93, 3); break;\r
-    case 93: vc_frename(); break;\r
-    case 94: vc_fdelete(); break;\r
-    case 95: vc_fwopen(); break;\r
-    case 96: GenericFunc(97, 1); break;\r
-    case 97: GenericFunc(98, 3); break;\r
-    case 98: GenericFunc(99, 3); break;\r
-    case 99: GenericFunc(100, 6); break;\r
-    case 100: GenericFunc(101, 0); break;\r
-    case 101: GenericFunc(102, 7); break;\r
-    case 102: GenericFunc(103, 1); break;\r
-    case 103: GenericFunc(104, 1); break;\r
-    case 104: GenericFunc(105, 1); break;\r
-    case 105: vc_asc(); break;\r
-    case 106: GenericFunc(107, 1); break;\r
-    case 107: vc_NumForScript(); break;\r
-    case 108: vc_FileSize(); break;\r
-    case 109: GenericFunc(110, 1); break;\r
-    case 110: GenericFunc(111, 0); break;\r
-    default: vcerr("Internal error. Unknown standard function.");\r
-  }\r
-}\r
-\r
-void HandleUserFunction()\r
-{\r
-  int i, idx;\r
-\r
-  idx=funcidx;\r
-  EmitW((short) idx);\r
-  Expect("(");\r
-  for (i=0; i<funcs[idx].numargs; i++)\r
-  {\r
-    if (i) Expect(",");\r
-    if (funcs[idx].argtype[i]==INT) EmitOperand();\r
-    if (funcs[idx].argtype[i]==STRING) HandleString();\r
-  }\r
-  Expect(")");\r
-}\r
-\r
-void HandleFunctionType()\r
-{\r
-  if (token_subtype==op_BFUNC)\r
-  {\r
-    EmitC(opEXEC_STDLIB);\r
-    HandleFunction();\r
-  }\r
-  else\r
-  if (token_subtype==op_UFUNC)\r
-  {\r
-    EmitC(opEXEC_EXTERNFUNC);\r
-    HandleUserFunction();\r
-  }\r
-}\r
-\r
-void HandleIfComponent()\r
-{ char ot=0;\r
-\r
-  if (NextIs("!"))\r
-  {\r
-   ot=i_ZERO;\r
-   GetToken();\r
-  }\r
-  EmitOperand();\r
-\r
-  if (NextIs("="))  { ot=i_EQUALTO;            GetToken(); }\r
-  if (NextIs("!=")) { ot=i_NOTEQUAL;           GetToken(); }\r
-  if (NextIs(">"))  { ot=i_GREATERTHAN;        GetToken(); }\r
-  if (NextIs(">=")) { ot=i_GREATERTHANOREQUAL; GetToken(); }\r
-  if (NextIs("<"))  { ot=i_LESSTHAN;           GetToken(); }\r
-  if (NextIs("<=")) { ot=i_LESSTHANOREQUAL;    GetToken(); }\r
-\r
-  if (!ot) EmitC(i_NONZERO);\r
-  else if (ot==i_ZERO) EmitC(i_ZERO);\r
-  else\r
-  {\r
-    EmitC(ot);\r
-    EmitOperand();\r
-  }\r
-}\r
-\r
-void HandleIfGroup()\r
-{\r
-  while (1)\r
-  {\r
-    HandleIfComponent();\r
-\r
-    if (NextIs("&&"))\r
-    {\r
-       EmitC(i_AND);\r
-       GetToken();\r
-       continue;\r
-    }\r
-    else if (NextIs("||"))\r
-    {\r
-       EmitC(i_OR);\r
-       GetToken();\r
-       continue;\r
-    }\r
-    else\r
-    {\r
-       GetToken();\r
-       if (!TokenIs(")") && !TokenIs(";"))\r
-         vcerr("Syntax error.");\r
-       EmitC(i_UNGROUP);\r
-       break;\r
-    }\r
-  }\r
-}\r
-\r
-void ProcessIf()\r
-{\r
-  char *falseofs = 0;\r
-  char *elseofs = 0;\r
-  char *b = 0;\r
-\r
-  EmitC(opIF);\r
-  Expect("(");\r
-  HandleIfGroup();\r
-\r
-  falseofs=code;\r
-  EmitD(0);          // We'll come back to this and fix it up.\r
-\r
-  if (!NextIs("{"))\r
-  {\r
-    DoSomething();\r
-    if (NextIs("else"))\r
-    {\r
-      EmitC(opGOTO);\r
-      elseofs=code;\r
-      EmitD(0);\r
-    }\r
-  }\r
-  else\r
-  {\r
-    Expect("{");\r
-    while (!NextIs("}")) DoSomething();\r
-    Expect("}");\r
-    if (NextIs("else"))\r
-    {\r
-      EmitC(opGOTO);\r
-      elseofs=code;\r
-      EmitD(0);\r
-    }\r
-  }\r
-\r
-  b=code;         // Put correct false-execution offset thingy.\r
-  code=falseofs;\r
-  EmitD((int) b - (int) outbuf);\r
-  code=b;\r
-\r
-  if (NextIs("else"))\r
-  {\r
-    GetToken();\r
-    if (!NextIs("{"))\r
-    {\r
-      DoSomething();\r
-    }\r
-    else\r
-    {\r
-      Expect("{");\r
-      while (!NextIs("}")) DoSomething();\r
-      Expect("}");\r
-    }\r
-    b=code;         // Put correct else-execution offset thingy.\r
-    code=elseofs;\r
-    EmitD((int) b - (int) outbuf);\r
-    code=b;\r
-  }\r
-}\r
-\r
-void ProcessWhile()\r
-{ char *falseofs, *top, *b;\r
-\r
-  top=code;\r
-  EmitC(opIF);\r
-  Expect("(");\r
-  HandleIfGroup();\r
-\r
-  falseofs=code;\r
-  EmitD(0);          // We'll come back to this and fix it up.\r
-\r
-  if (!NextIs("{"))\r
-  {\r
-    DoSomething();\r
-    EmitC(opGOTO);\r
-    EmitD((int) top - (int) outbuf);\r
-  }\r
-  else\r
-  {\r
-    Expect("{");\r
-    while (!NextIs("}")) DoSomething();\r
-    Expect("}");\r
-    EmitC(opGOTO);\r
-    EmitD((int) top - (int) outbuf);\r
-  }\r
-\r
-  b=code;         // Put correct false-execution offset thingy.\r
-  code=falseofs;\r
-  EmitD((int) b - (int) outbuf);\r
-  code=b;\r
-}\r
-\r
-void ProcessFor()\r
-{ char *src1, *src2, *loopstartpos, *srctmp;\r
-\r
-  Expect("(");\r
-  while (!TokenIs(";"))\r
-    DoSomething();    // Emit initialization code.\r
-\r
-  src1=src;         // Store position of loop conditional\r
-  while (!NextIs(";")) GetToken(); GetToken();\r
-  src2=src;         // Store position of end-of-loop code\r
-\r
-  while (!NextIs(")")) GetToken(); GetToken();\r
-  loopstartpos=(char *) (int) code - (int) outbuf;\r
-\r
-  if (!NextIs("{"))\r
-  {\r
-    DoSomething();\r
-  }\r
-  else\r
-  {\r
-    Expect("{");\r
-    while (!NextIs("}")) DoSomething();\r
-    Expect("}");\r
-  }\r
-  srctmp=src;\r
-  src=src2;\r
-  while (!TokenIs(")"))\r
-    DoSomething();\r
-  src=src1;\r
-  EmitC(opIF);\r
-  HandleIfGroup();\r
-  EmitD((int) code - (int) outbuf +9);\r
-  EmitC(opGOTO);\r
-  EmitD((int) loopstartpos);\r
-\r
-  src=srctmp;\r
-}\r
-\r
-void HandleAssign()\r
-{\r
-  int vc;\r
-\r
-  vc=varcategory;\r
-  EmitC(opASSIGN);\r
-  if (vc==op_UVAR)\r
-  {\r
-    EmitC(op_UVAR);\r
-    EmitD(vars[varidx].varstartofs);\r
-  }\r
-  else if (vc==op_UVARRAY)\r
-  {\r
-    EmitC(op_UVARRAY);\r
-    EmitD(vars[varidx].varstartofs);\r
-    Expect("[");\r
-    EmitOperand();\r
-    Expect("]");\r
-  }\r
-  else if (vc==op_LVAR)\r
-  {\r
-    EmitC(op_LVAR);\r
-    EmitC((char) varidx);\r
-  }\r
-  else if (vc==op_HVAR0)\r
-  {\r
-    EmitC(op_HVAR0);\r
-    EmitC((char) varidx);\r
-  }\r
-  else if (vc==op_HVAR1)\r
-  {\r
-    EmitC(op_HVAR1);\r
-    EmitC((char) varidx);\r
-    Expect("[");\r
-    EmitOperand();\r
-    Expect("]");\r
-  }\r
-  else if (vc==op_STRING)\r
-  {\r
-    EmitC(op_STRING);\r
-    EmitW((short) str[varidx].vsofs);\r
-  }\r
-  else if (vc==op_SARRAY)\r
-  {\r
-    EmitC(op_SARRAY);\r
-    EmitW((short) str[varidx].vsofs);\r
-    Expect("[");\r
-    EmitOperand();\r
-    Expect("]");\r
-  }\r
-  else if (vc==op_SLOCAL)\r
-  {\r
-    EmitC(op_SLOCAL);\r
-    EmitW((short) varidx);\r
-  }\r
-  GetToken();\r
-  if (TokenIs("++")) { EmitC(a_INC); GetToken(); return; } else\r
-  if (TokenIs("--")) { EmitC(a_DEC); GetToken(); return; } else\r
-  if (TokenIs("+=")) { EmitC(a_INCSET); } else\r
-  if (TokenIs("-=")) { EmitC(a_DECSET); } else\r
-  if (TokenIs("="))  { EmitC(a_SET); } else\r
-  vcerr("Invalid assignment operator.");\r
-  if (vc==op_STRING) HandleString();\r
-  else if (vc==op_SARRAY) HandleString();\r
-  else if (vc==op_SLOCAL) HandleString();\r
-  else EmitOperand();\r
-  GetToken();\r
-}\r
-\r
-int c=0;\r
-\r
-void HandleReturn()\r
-{\r
-  if (!vctype)\r
-  {\r
-    Expect(";");\r
-    EmitC(opRETURN);\r
-    return;\r
-  }\r
-  if (!funcs[c].returntype)\r
-  {\r
-    Expect(";");\r
-    EmitC(opRETURN);\r
-    return;\r
-  }\r
-  if (funcs[c].returntype==1)\r
-  {\r
-    EmitC(opSETRETVAL);\r
-    EmitOperand();\r
-    Expect(";");\r
-    EmitC(opRETURN);\r
-    return;\r
-  }\r
-}\r
-\r
-void ProcessSwitch()\r
-{ char *buf,*retrptr;\r
-\r
-  EmitC(opSWITCH);\r
-  Expect("(");\r
-  EmitOperand();\r
-  Expect(")");\r
-  Expect("{");\r
-\r
-  // case .. option loop\r
-\r
-  while (!NextIs("}"))\r
-  {\r
-    Expect("case");\r
-    EmitC(opCASE);\r
-    EmitOperand();\r
-    Expect(":");\r
-    retrptr=code;\r
-    EmitD(0);\r
-    while (!NextIs("case") && !NextIs("}")) DoSomething();\r
-    EmitC(opRETURN);\r
-    buf=code;\r
-    code=retrptr;\r
-    EmitD((int) buf - (int) outbuf);\r
-    code=buf;\r
-  }\r
-  Expect("}");\r
-  EmitC(opRETURN);\r
-}\r
-\r
-void DoSomething(void)\r
-{\r
-  GetToken();\r
-  if (TokenIs("return"))      { HandleReturn(); return; }\r
-  if (token_type==FUNCTION)   { HandleFunctionType(); Expect(";"); return; }\r
-  if (token_type==IDENTIFIER) { HandleAssign(); return; }\r
-  if (TokenIs("if"))          { ProcessIf(); return; }\r
-  if (TokenIs("while"))       { ProcessWhile(); return; }\r
-  if (TokenIs("for"))         { ProcessFor(); return; }\r
-  if (TokenIs("switch"))      { ProcessSwitch(); return; }\r
-  vcerr("Unknown token.");\r
-}\r
-\r
-void DumpSystemIdx()\r
-{ FILE *f;\r
-\r
-  vprint("Dumping system.idx index file.");\r
-  f=fopen("system.idx","wb");\r
-\r
-  fwrite(&numvars, 1, 4, f);\r
-  fwrite(&vars, sizeof vars / 500, numvars, f);\r
-  fwrite(&numfuncs, 1, 4, f);\r
-  fwrite(&funcs, sizeof funcs / 700, numfuncs, f);\r
-  fwrite(&numstr, 1, 4, f);\r
-  fwrite(&str, sizeof str / 300, numstr, f);\r
-  fclose(f);\r
-}\r
-\r
-void ReadSystemIdx()\r
-{ FILE *f;\r
-\r
-  if (!(f=fopen("system.idx","rb")))\r
-    err("Could not access system.idx.");\r
-\r
-  fread(&numvars, 1, 4, f);\r
-  fread(&vars, sizeof vars / 500, numvars, f);\r
-  fread(&numfuncs, 1, 4, f);\r
-  fread(&funcs, sizeof funcs / 700, numfuncs, f);\r
-  fread(&numstr, 1, 4, f);\r
-  fread(&str, sizeof str / 300, numstr, f);\r
-  fclose(f);\r
-}\r
-\r
-void DoLocalVariables(int c)\r
-{\r
-  int na;\r
-\r
-  na=funcs[c].numargs;\r
-  while (NextIs("int") || NextIs("string"))\r
-  {\r
-    GetToken();\r
-    if (TokenIs("int"))\r
-    {\r
-      funcs[c].argtype[na]=INT;\r
-      GetToken();\r
-      memcpy(larg[na++], token, 40);\r
-      while (!NextIs(";"))\r
-      {\r
-        Expect(",");\r
-        funcs[c].argtype[na]=INT;\r
-        GetToken();\r
-        memcpy(larg[na++], token, 40);\r
-      }\r
-      Expect(";");\r
-    }\r
-    if (TokenIs("string"))\r
-    {\r
-      funcs[c].argtype[na]=STRING;\r
-      GetToken();\r
-      memcpy(larg[na++], token, 40);\r
-      while (!NextIs(";"))\r
-      {\r
-        Expect(",");\r
-        funcs[c].argtype[na]=STRING;\r
-        GetToken();\r
-        memcpy(larg[na++], token, 40);\r
-      }\r
-      Expect(";");\r
-    }\r
-  }\r
-  funcs[c].numlocals=na;\r
-}\r
-\r
-void CompileMAP(char *fname)\r
-{ FILE *f;\r
-  int i;\r
-\r
-  // Compiles a map-based VC.\r
-  i=strlen(fname);\r
-  memcpy(strbuf, fname, i);\r
-  strbuf[i]='.';\r
-  strbuf[i+1]='V';\r
-  strbuf[i+2]='C';\r
-  strbuf[i+3]=0;\r
-\r
-  PreProcess(strbuf);\r
-\r
-  source=(char *) malloc(1000000);\r
-  memset(source, 0, 1000000);\r
-  outbuf=(char *) malloc(1000000);\r
-  memset(outbuf, 0, 1000000);\r
-  if (!(f=fopen("vcctemp.$$$","rb")))\r
-    err("Could not open source file.");\r
-  fread(source, 1, 1000000, f);\r
-  fclose(f);\r
-\r
-  ReadSystemIdx();\r
-\r
-  src=source;\r
-  code=outbuf;\r
-  vctype=0;\r
-\r
-  while (*src)\r
-  {\r
-    functbl[mfuncs]=(char *) (int) code - (int) outbuf;\r
-    mfuncs++;\r
-    Expect("event");\r
-    Expect("{");\r
-    while (!NextIs("}")) DoSomething();\r
-    Expect("}");\r
-    EmitC(opRETURN);\r
-    ParseWhitespace();\r
-  }\r
-  dprint("%s.vc (%i lines)", fname, lines);\r
-}\r
-\r
-void SkipBrackets()\r
-{\r
-  while (!NextIs("}"))\r
-  {\r
-    if (!*src)\r
-      err("No matching bracket.");\r
-    GetToken();\r
-    if (TokenIs("{")) SkipBrackets();\r
-  }\r
-  GetToken();\r
-}\r
-\r
-void CheckDup()\r
-{\r
-  int i=0; // bitch!\r
-\r
-  while (i<numhardfuncs)\r
-  {\r
-    if (!strcmp(hardfuncs[i], token)) break;\r
-    i++;\r
-  }\r
-  if (i<numhardfuncs)\r
-  {\r
-    vcerr("%s: Duplicate identifier.", token);\r
-  }\r
-  i=0;\r
-  while (i<numhardvar0)\r
-  {\r
-    if (!strcmp(hardvar0[i], token)) break;\r
-    i++;\r
-  }\r
-  if (i<numhardvar0)\r
-  {\r
-    vcerr("%s: Duplicate identifier.", token);\r
-  }\r
-  i=0;\r
-  while (i<numhardvar1)\r
-  {\r
-    if (!strcmp(hardvar1[i], token)) break;\r
-    i++;\r
-  }\r
-  if (i<numhardvar1)\r
-  {\r
-    vcerr("%s: Duplicate identifier.", token);\r
-  }\r
-  i=0;\r
-  while (i<numfuncs)\r
-  {\r
-    if (!strcmp(funcs[i].fname, token)) break;\r
-    i++;\r
-  }\r
-  if (i<numfuncs)\r
-  {\r
-    vcerr("%s: Duplicate identifier.", token);\r
-  }\r
-\r
-  i=0;\r
-  while (i<numvars)\r
-  {\r
-    if (!strcmp(vars[i].vname, token)) break;\r
-    i++;\r
-  }\r
-  if (i<numvars)\r
-  {\r
-    vcerr("%s: Duplicate identifier.", token);\r
-  }\r
-  i=0;\r
-  while (i<numstr)\r
-  {\r
-    if (!strcmp(str[i].vname, token)) break;\r
-    i++;\r
-  }\r
-  if (i<numstr)\r
-  {\r
-    vcerr("%s: Duplicate identifier.", token);\r
-  }\r
-}\r
-\r
-void CompileSystem()\r
-{\r
-  FILE *f = 0;\r
-  int na = 0;\r
-  int type = 0;\r
-  int i = 0;\r
-\r
-  // Compiles a map-based VC.\r
-\r
-  PreProcess("system.vc");\r
-\r
-  source = (char *) malloc(1000000);\r
-  memset(source, 0, 1000000);\r
-  outbuf = (char *) malloc(1000000);\r
-  memset(outbuf, 0, 1000000);\r
-\r
-  if (!(f=fopen("vcctemp.$$$","rb")))\r
-    err("Could not open source file.");\r
-\r
-  fread(source, 1, 1000000, f);\r
-\r
-  fclose(f);\r
-\r
-  src=source;\r
-  code=outbuf;\r
-\r
-  vprint("First pass...");\r
-  vctype=1; tlines=0;\r
-  while (*src)\r
-  {\r
-    // system.vc is compiled in a two-pass system. The first pass simply\r
-    // goes through the system.vc file and sets up declarations for all\r
-    // global variables and function declarations. So system.vc won't\r
-    // have to worry about forward declarations or anything.\r
-\r
-    na=(int) src;\r
-    GetToken();\r
-    if (TokenIs("string"))\r
-    {\r
-      while (1)\r
-      {\r
-        GetToken();\r
-        CheckDup();\r
-        memcpy(str[numstr].vname, token, strlen(token));\r
-        str[numstr].vsofs=sstartofs;\r
-        if (NextIs("["))\r
-        {\r
-          GetToken();\r
-          GetToken();\r
-          str[numstr].arraylen=token_nvalue;\r
-          Expect("]");\r
-        }\r
-        else str[numstr].arraylen=1;\r
-        sstartofs+=str[numstr].arraylen;\r
-        vprint("Decl %s of type string, size %i. [%i]",\r
-          str[numstr].vname, str[numstr].arraylen, str[numstr].vsofs);\r
-        numstr++;\r
-        if (!NextIs(",")) break;\r
-        GetToken();\r
-      }\r
-      Expect(";");\r
-    }\r
-    if (TokenIs("int"))\r
-    {\r
-      GetToken();\r
-      if (NextIs("(")) type=0; else type=1;\r
-      src=(char *) na;\r
-      GetToken();\r
-    }\r
-    if (TokenIs("void") || (TokenIs("int") && !type))\r
-    {\r
-      if (TokenIs("void")) funcs[numfuncs].returntype=0;\r
-      if (TokenIs("int")) funcs[numfuncs].returntype=1;\r
-      GetToken();\r
-      CheckDup();\r
-      memcpy(funcs[numfuncs].fname,token,strlen(token));\r
-      funcs[numfuncs].numargs=0;\r
-      Expect("(");\r
-      while (!NextIs(")"))\r
-      {\r
-        GetToken();\r
-        na=funcs[numfuncs].numargs;\r
-        if (TokenIs("int")) { funcs[numfuncs].argtype[na]=INT; } else\r
-        if (TokenIs("string")) { funcs[numfuncs].argtype[na]=STRING; }\r
-        else vcerr("Invalid arguement declaration.");\r
-        GetToken();\r
-        if (NextIs(",")) GetToken();\r
-        funcs[numfuncs].numargs++;\r
-      }\r
-      Expect(")");\r
-      Expect("{");\r
-      SkipBrackets();\r
-      vprint("Found %s declaration for %s, %i parameters.",\r
-        funcs[numfuncs].returntype ? "int" : "void",\r
-        funcs[numfuncs].fname, funcs[numfuncs].numargs);\r
-      numfuncs++;\r
-    }\r
-    if (TokenIs("int") && type)\r
-    {\r
-      while (1)\r
-      {\r
-        GetToken();\r
-        CheckDup();\r
-        memcpy(vars[numvars].vname, token, strlen(token));\r
-        vars[numvars].varstartofs=curstartofs;\r
-        if (NextIs("["))\r
-        {\r
-          GetToken();\r
-          GetToken();\r
-          vars[numvars].arraylen=token_nvalue;\r
-          Expect("]");\r
-        }\r
-        else vars[numvars].arraylen=1;\r
-        curstartofs+=vars[numvars].arraylen;\r
-        vprint("Decl %s of type int, size %i. [%i]", vars[numvars].vname,\r
-          vars[numvars].arraylen, vars[numvars].varstartofs);\r
-        numvars++;\r
-        if (!NextIs(",")) break;\r
-        GetToken();\r
-      }\r
-      Expect(";");\r
-    }\r
-  }\r
-  dprint("system.vc: %i ints, %i strings, %i functions",\r
-    numvars, numstr, numfuncs);\r
-\r
-  vprint("Second pass...");\r
-  src=source; tlines=0;\r
-  while (*src)\r
-  {\r
-    // Everything in system.vc will either be a global var decl or\r
-    // a function definition.\r
-\r
-    na=(int) src;\r
-    GetToken();\r
-    if (TokenIs("string"))\r
-    {\r
-      while (1)\r
-      {\r
-        GetToken();\r
-        if (NextIs("["))\r
-        {\r
-          GetToken();\r
-          GetToken();\r
-          Expect("]");\r
-        }\r
-        if (!NextIs(",")) break;\r
-        GetToken();\r
-      }\r
-      Expect(";");\r
-    }\r
-   if (TokenIs("int"))\r
-    {\r
-      GetToken();\r
-      if (NextIs("(")) type=0; else type=1;\r
-      src=(char *) na;\r
-      GetToken();\r
-    }\r
-    if (TokenIs("void") || (TokenIs("int") && !type))\r
-    {\r
-      funcs[c].syscodeofs=(int) code - (int) outbuf;\r
-      GetToken();\r
-      Expect("(");\r
-      i=0;\r
-      memset(&larg, 0, 480);\r
-      while (!NextIs(")"))\r
-      {\r
-        GetToken();\r
-        GetToken();\r
-        memcpy(larg[i], token, 40);\r
-        if (NextIs(",")) GetToken();\r
-        i++;\r
-      }\r
-      Expect(")");\r
-      Expect("{");\r
-      DoLocalVariables(c);\r
-      while (!NextIs("}")) DoSomething();\r
-      EmitC(opRETURN);\r
-      Expect("}");\r
-      c++;\r
-    }\r
-    if (TokenIs("int") && type)\r
-    {\r
-      while (1)\r
-      {\r
-        GetToken();\r
-        if (NextIs("["))\r
-        {\r
-          GetToken();\r
-          GetToken();\r
-          Expect("]");\r
-        }\r
-        if (!NextIs(",")) break;\r
-        GetToken();\r
-      }\r
-      Expect(";");\r
-    }\r
-  }\r
-  dprint("system.vc (%i lines, %i total)", lines, tlines);\r
-\r
-  DumpSystemIdx();\r
-}\r
diff --git a/16/v2/source/verge/VCC/COMPILE.H b/16/v2/source/verge/VCC/COMPILE.H
deleted file mode 100755 (executable)
index f0d7887..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#if !defined(__COMPILE_INC)\r
-#define __COMPILE_INC\r
-\r
-#define VOID 1\r
-#define INT 1\r
-#define CHARPTR 2\r
-#define STRING 3\r
-\r
-extern unsigned char *source, *src;\r
-extern unsigned char *outbuf, *code;\r
-extern unsigned char inevent;\r
-\r
-typedef struct\r
-{\r
-  char fname[40];\r
-  char argtype[20];\r
-  int numargs, numlocals;\r
-  int returntype;\r
-  int syscodeofs;\r
-} funcdecl;\r
-\r
-extern funcdecl funcs[300];\r
-extern int numfuncs;\r
-\r
-typedef struct\r
-{\r
-  char vname[40];\r
-  int vsofs;\r
-  int arraylen;\r
-} strdecl;\r
-\r
-extern strdecl str[300];\r
-extern int sstartofs;\r
-extern int numstr;\r
-\r
-typedef struct\r
-{\r
-  char vname[40];\r
-  int varstartofs;\r
-  int arraylen;\r
-} vardecl;\r
-\r
-extern vardecl vars[300];\r
-extern int curstartofs;\r
-extern int numvars;\r
-extern int varidx, startsyscript;\r
-extern char larg[12][40];\r
-extern int c;\r
-\r
-extern char *functbl[512];\r
-extern int mfuncs;\r
-\r
-extern void CompileMAP(char *fname);\r
-extern void CompileSystem();\r
-extern void Expect(char *str);\r
-\r
-extern void EmitC(char c);\r
-extern void EmitW(short int w);\r
-extern void EmitD(int w);\r
-extern void EmitOperand();\r
-extern void EmitString(char *str);\r
-extern void HandleString();\r
-\r
-#endif // __COMPILE_INC\r
diff --git a/16/v2/source/verge/VCC/FUNCLIB.C b/16/v2/source/verge/VCC/FUNCLIB.C
deleted file mode 100755 (executable)
index 3740faa..0000000
+++ /dev/null
@@ -1,445 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-// ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\r
-// ³                  The VergeC Compiler version 2.01                   ³\r
-// ³              Copyright (C)1998 BJ Eirich (aka vecna)                ³\r
-// ³                  Standard Function  Library module                  ³\r
-// ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\r
-\r
-#include <stdio.h>\r
-#include <stdlib.h>\r
-#include <string.h>\r
-#include "compile.h"\r
-#include "funclib.h"\r
-#include "vcc.h"\r
-#include "vccode.h"\r
-#include "lexical.h"\r
-\r
-// ================================= Data ====================================\r
-\r
-// ================================= Code ====================================\r
-\r
-void vcfunc_Exit()\r
-{\r
-  EmitC(1);\r
-  Expect("(");\r
-  HandleString();\r
-  Expect(")");\r
-}\r
-\r
-void Message()\r
-{\r
-  EmitC(2);\r
-  Expect("(");\r
-  HandleString();\r
-  Expect(",");\r
-  EmitOperand();\r
-  Expect(")");\r
-}\r
-\r
-void vc_loadimage()\r
-{\r
-  EmitC(6);\r
-  Expect("(");\r
-  HandleString();\r
-  Expect(")");\r
-}\r
-\r
-void vc_AllocateEntity()\r
-{\r
-  EmitC(11);\r
-  Expect("(");\r
-  EmitOperand();\r
-  Expect(",");\r
-  EmitOperand();\r
-  Expect(",");\r
-  HandleString();\r
-  Expect(")");\r
-}\r
-\r
-void vc_Map()\r
-{\r
-  EmitC(13);\r
-  Expect("(");\r
-  HandleString();\r
-  Expect(")");\r
-}\r
-\r
-void vc_LoadFont()\r
-{\r
-  EmitC(14);\r
-  Expect("(");\r
-  HandleString();\r
-  Expect(")");\r
-}\r
-\r
-void vc_PlayFLI()\r
-{\r
-  EmitC(15);\r
-  Expect("(");\r
-  HandleString();\r
-  Expect(")");\r
-}\r
-\r
-void vc_PrintString()\r
-{\r
-  EmitC(17);\r
-  Expect("(");\r
-  EmitOperand();\r
-  Expect(",");\r
-  HandleString();\r
-  Expect(")");\r
-}\r
-\r
-void vc_LoadRaw()\r
-{\r
-  EmitC(18);\r
-  Expect("(");\r
-  HandleString();\r
-  Expect(")");\r
-}\r
-\r
-void vc_EntityMove()\r
-{\r
-  EmitC(25);\r
-  Expect("(");\r
-  EmitOperand();\r
-  Expect(",");\r
-  HandleString();\r
-  Expect(")");\r
-}\r
-\r
-void vc_strlen()\r
-{\r
-  EmitC(33);\r
-  Expect("(");\r
-  HandleString();\r
-  Expect(")");\r
-}\r
-\r
-void vc_strcmp()\r
-{\r
-  EmitC(34);\r
-  Expect("(");\r
-  HandleString();\r
-  Expect(",");\r
-  HandleString();\r
-  Expect(")");\r
-}\r
-\r
-void vc_SetRString()\r
-{\r
-  EmitC(47);\r
-  Expect("(");\r
-  HandleString();\r
-  Expect(")");\r
-}\r
-\r
-void vc_PartyMove()\r
-{\r
-  EmitC(51);\r
-  Expect("(");\r
-  HandleString();\r
-  Expect(")");\r
-}\r
-\r
-void vc_PlayMusic()\r
-{\r
-  EmitC(62);\r
-  Expect("(");\r
-  HandleString();\r
-  Expect(")");\r
-}\r
-\r
-void vc_OpenFile()\r
-{\r
-  EmitC(65);\r
-  Expect("(");\r
-  HandleString();\r
-  Expect(")");\r
-}\r
-\r
-void vc_HookRetrace()\r
-{\r
-  char *na;\r
-\r
-  EmitC(44);\r
-  Expect("(");\r
-  na=src;\r
-  GetToken();\r
-  if (token_subtype == op_UFUNC)\r
-  {\r
-    EmitC(2);\r
-    EmitD(funcidx);\r
-  }\r
-  else\r
-  {\r
-    src=na;\r
-    EmitC(1);\r
-    EmitOperand();\r
-  }\r
-  Expect(")");\r
-}\r
-\r
-void vc_HookTimer()\r
-{\r
-  char *na;\r
-\r
-  EmitC(45);\r
-  Expect("(");\r
-  na=src;\r
-  GetToken();\r
-  if (token_subtype == op_UFUNC)\r
-  {\r
-    EmitC(2);\r
-    EmitD(funcidx);\r
-  }\r
-  else\r
-  {\r
-    src=na;\r
-    EmitC(1);\r
-    EmitOperand();\r
-  }\r
-  Expect(")");\r
-}\r
-\r
-void vc_HookKey()\r
-{\r
-  char *na;\r
-\r
-  EmitC(61);\r
-  Expect("(");\r
-  EmitOperand();\r
-  Expect(",");\r
-  na=src;\r
-  GetToken();\r
-  if (token_subtype == op_UFUNC)\r
-  {\r
-    EmitC(2);\r
-    EmitD(funcidx);\r
-  }\r
-  else\r
-  {\r
-    src=na;\r
-    EmitC(1);\r
-    EmitOperand();\r
-  }\r
-  Expect(")");\r
-}\r
-\r
-void vc_QuickRead()\r
-{\r
-  EmitC(67);\r
-  Expect("(");\r
-  HandleString();\r
-  Expect(",");\r
-  GetToken();\r
-  if (varcategory == op_STRING)\r
-  {\r
-    EmitC(op_STRING);\r
-    EmitW(str[varidx].vsofs);\r
-    Expect(",");\r
-    EmitOperand();\r
-    Expect(")");\r
-    return;\r
-  }\r
-  if (varcategory == op_SARRAY)\r
-  {\r
-    EmitC(op_SARRAY);\r
-    EmitW(str[varidx].vsofs);\r
-    Expect("[");\r
-    EmitOperand();\r
-    Expect("]");\r
-    Expect(",");\r
-    EmitOperand();\r
-    Expect(")");\r
-    return;\r
-  }\r
-  vcerr("String variable expected.");\r
-}\r
-\r
-void vc_CacheSound()\r
-{\r
-  EmitC(74);\r
-  Expect("(");\r
-  HandleString();\r
-  Expect(")");\r
-}\r
-\r
-void vc_val()\r
-{\r
-  EmitC(80);\r
-  Expect("(");\r
-  HandleString();\r
-  Expect(")");\r
-}\r
-\r
-void vc_Log()\r
-{\r
-  EmitC(83);\r
-  Expect("(");\r
-  HandleString();\r
-  Expect(")");\r
-}\r
-\r
-void vc_fgetline()\r
-{\r
-  EmitC(90);\r
-  Expect("(");\r
-  GetToken();\r
-  if (varcategory == op_STRING)\r
-  {\r
-    EmitC(op_STRING);\r
-    EmitW(str[varidx].vsofs);\r
-    Expect(",");\r
-    EmitOperand();\r
-    Expect(")");\r
-    return;\r
-  }\r
-  if (varcategory == op_SARRAY)\r
-  {\r
-    EmitC(op_SARRAY);\r
-    EmitW(str[varidx].vsofs);\r
-    Expect("[");\r
-    EmitOperand();\r
-    Expect("]");\r
-    Expect(",");\r
-    EmitOperand();\r
-    Expect(")");\r
-    return;\r
-  }\r
-  vcerr("String variable expected.");\r
-}\r
-\r
-void vc_fgettoken()\r
-{\r
-  EmitC(91);\r
-  Expect("(");\r
-  GetToken();\r
-  if (varcategory == op_STRING)\r
-  {\r
-    EmitC(op_STRING);\r
-    EmitW(str[varidx].vsofs);\r
-    Expect(",");\r
-    EmitOperand();\r
-    Expect(")");\r
-    return;\r
-  }\r
-  if (varcategory == op_SARRAY)\r
-  {\r
-    EmitC(op_SARRAY);\r
-    EmitW(str[varidx].vsofs);\r
-    Expect("[");\r
-    EmitOperand();\r
-    Expect("]");\r
-    Expect(",");\r
-    EmitOperand();\r
-    Expect(")");\r
-    return;\r
-  }\r
-  vcerr("String variable expected.");\r
-}\r
-\r
-void vc_fwritestring()\r
-{\r
-  EmitC(92);\r
-  Expect("(");\r
-  HandleString();\r
-  Expect(",");\r
-  EmitOperand();\r
-  Expect(")");\r
-}\r
-\r
-void vc_frename()\r
-{\r
-  EmitC(94);\r
-  Expect("(");\r
-  HandleString();\r
-  Expect(",");\r
-  HandleString();\r
-  Expect(")");\r
-}\r
-\r
-void vc_fdelete()\r
-{\r
-  EmitC(95);\r
-  Expect("(");\r
-  HandleString();\r
-  Expect(")");\r
-}\r
-\r
-void vc_fwopen()\r
-{\r
-  EmitC(96);\r
-  Expect("(");\r
-  HandleString();\r
-  Expect(")");\r
-}\r
-\r
-void vc_asc()\r
-{\r
-  EmitC(106);\r
-  Expect("(");\r
-  HandleString();\r
-  Expect(")");\r
-}\r
-\r
-void vc_NumForScript()\r
-{\r
-  EmitC(108);\r
-  Expect("(");\r
-  GetToken();\r
-  if (token_subtype == op_UFUNC)\r
-    EmitD(funcidx);\r
-  else vcerr("system script expected.");\r
-  Expect(")");\r
-}\r
-\r
-void vc_FileSize()\r
-{\r
-  EmitC(109);\r
-  Expect("(");\r
-  HandleString();\r
-  Expect(")");\r
-}\r
-\r
-void GenericFunc(unsigned char idcode, int numargs)\r
-{ char i;\r
-\r
-  EmitC(idcode);\r
-  if (!numargs)\r
-  {\r
-    Expect("(");\r
-    Expect(")");\r
-    return;\r
-  }\r
-  if (numargs==1)\r
-  {\r
-    Expect("(");\r
-    EmitOperand();\r
-    Expect(")");\r
-    return;\r
-  }\r
-  Expect("(");\r
-  for (i=1; i<numargs; i++)\r
-  {\r
-     EmitOperand();\r
-     Expect(",");\r
-  }\r
-  EmitOperand();\r
-  Expect(")");\r
-}\r
diff --git a/16/v2/source/verge/VCC/FUNCLIB.H b/16/v2/source/verge/VCC/FUNCLIB.H
deleted file mode 100755 (executable)
index 2fc6bd0..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#if !defined(__FUNCLIB_INC)\r
-#define __FUNCLIB_INC\r
-\r
-extern void vcfunc_Exit();\r
-extern void Message();\r
-extern void vc_loadimage();\r
-extern void vc_AllocateEntity();\r
-extern void vc_Map();\r
-extern void vc_LoadFont();\r
-extern void vc_PlayFLI();\r
-extern void vc_PrintString();\r
-extern void vc_LoadRaw();\r
-extern void vc_EntityMove();\r
-extern void vc_strlen();\r
-extern void vc_strcmp();\r
-extern void vc_SetRString();\r
-extern void vc_PartyMove();\r
-extern void vc_PlayMusic();\r
-extern void vc_OpenFile();\r
-extern void vc_HookRetrace();\r
-extern void vc_HookTimer();\r
-extern void vc_HookKey();\r
-extern void vc_QuickRead();\r
-extern void vc_CacheSound();\r
-extern void vc_val();\r
-extern void vc_Log();\r
-extern void vc_fgetline();\r
-extern void vc_fgettoken();\r
-extern void vc_fwritestring();\r
-extern void vc_frename();\r
-extern void vc_fdelete();\r
-extern void vc_fwopen();\r
-extern void vc_asc();\r
-extern void vc_NumForScript();\r
-extern void vc_FileSize();\r
-extern void GenericFunc(unsigned char funcid, int numargs);\r
-\r
-#endif // __FUNCLIB_INC\r
diff --git a/16/v2/source/verge/VCC/LEXICAL.C b/16/v2/source/verge/VCC/LEXICAL.C
deleted file mode 100755 (executable)
index c888e3e..0000000
+++ /dev/null
@@ -1,676 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-// ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\r
-// ³                  The VergeC Compiler version 2.01                   ³\r
-// ³              Copyright (C)1998 BJ Eirich (aka vecna)                ³\r
-// ³                           Lexical Parser                            ³\r
-// ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\r
-\r
-// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\r
-// CHANGELOG:\r
-// <aen, may 16>\r
-// + ConvHexToDec() was severely screwed (would not return correct values at\r
-//   *all*; own fault)--fixed\r
-// <aen, may 14>\r
-// + fixed some problems with tick mark parsing. didn't like certain chars.\r
-// <aen, may 9>\r
-// + fixed floating point exception crash in ConvHexToDec(), which occured\r
-//   when using very large hex numbers (i think; like $ffffffff). was due to\r
-//   use of pow()\r
-// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\r
-\r
-#include <stdio.h>\r
-#include <stdlib.h>\r
-#include <string.h>\r
-#include <math.h>\r
-#include "compile.h"\r
-#include "vcc.h"\r
-#include "vccode.h"\r
-\r
-// ================================= Data ====================================\r
-\r
-// Character types\r
-\r
-#define LETTER 1\r
-#define DIGIT 2\r
-#define SPECIAL 3\r
-\r
-// ---------------\r
-\r
-char token[2000];                 // Token buffer\r
-int token_nvalue;                 // int value of token if it's type DIGIT\r
-char token_type;                  // type of current token.\r
-char token_subtype;               // This is just crap.\r
-unsigned char chr_table[256];              // Character type table.\r
-\r
-int lines, tlines;                // current line number being processed in\r
-char *source_file;                // the current source file\r
-\r
-// ----------------\r
-\r
-char *hardfuncs[]=\r
-{\r
-  // A\r
-  "exit",               "message",              "malloc",\r
-  "free",               "pow",                  "loadimage",\r
-  "copysprite",         "tcopysprite",          "render",\r
-  "showpage",           "entityspawn",          "setplayer",\r
-  "map",                "loadfont",             "playfli",\r
-\r
-  // B\r
-  "gotoxy",             "printstring",          "loadraw",\r
-  "settile",            "allowconsole",         "scalesprite",\r
-  "processentities",    "updatecontrols",       "unpress",\r
-  "entitymove",         "hline",                "vline",\r
-  "line",               "circle",               "circlefill",   // 30\r
-\r
-  // C\r
-  "rect",               "rectfill",             "strlen",\r
-  "strcmp",             "cd_stop",              "cd_play",\r
-  "fontwidth",          "fontheight",           "setpixel",\r
-  "getpixel",           "entityonscreen",       "random",\r
-  "gettile",            "hookretrace",          "hooktimer",\r
-\r
-  // D\r
-  "setresolution",      "setrstring",           "setcliprect",\r
-  "setrenderdest",      "restorerendersettings","partymove",\r
-  "sin",                "cos",                  "tan",\r
-  "readmouse",          "setclip",              "setlucent",\r
-  "wrapblit",           "twrapblit",            "setmousepos",  // 60\r
-\r
-  // E\r
-  "hookkey",            "playmusic",            "stopmusic",\r
-  "palettemorph",       "fopen",                "fclose",\r
-  "quickread",          "addfollower",          "killfollower",\r
-  "killallfollowers",   "resetfollowers",       "flatpoly",\r
-  "tmappoly",           "cachesound",           "freeallsounds",\r
-\r
-  // F\r
-  "playsound",          "rotscale",             "mapline",\r
-  "tmapline",           "val",                  "tscalesprite",\r
-  "grabregion",         "log",                  "fseekline",\r
-  "fseekpos",           "fread",                "fgetbyte",\r
-  "fgetword",           "fgetquad",             "fgetline",     // 90\r
-\r
-  // G\r
-  "fgettoken",          "fwritestring",         "fwrite",\r
-  "frename",            "fdelete",              "fwopen",\r
-  "fwclose",            "memcpy",               "memset",\r
-  "silhouette",         "initmosaictable",      "mosaic",\r
-  "writevars",          "readvars",             "callevent",    // 105\r
-\r
-  // H\r
-  "asc",                "callscript",           "numforscript",\r
-  "filesize",           "ftell",                "checkcorrupt"\r
- };\r
-\r
-char returntypes[]=\r
-{\r
-  // A\r
-  0, 0, 1,\r
-  0, 1, 1,\r
-  0, 0, 0,\r
-  0, 1, 0,\r
-  0, 1, 0,\r
-\r
-  // B\r
-  0, 0, 1,\r
-  0, 0, 0,\r
-  0, 0, 0,\r
-  0, 0, 0,\r
-  0, 0, 0,\r
-\r
-  // C\r
-  0, 0, 1,\r
-  1, 0, 0,\r
-  1, 1, 0,\r
-  1, 1, 1,\r
-  1, 0, 0,\r
-\r
-  // D\r
-  0, 0, 0,\r
-  0, 0, 0,\r
-  1, 1, 1,\r
-  0, 0, 0,\r
-  0, 0, 0,\r
-\r
-  // E\r
-  0, 0, 0,\r
-  0, 1, 0,\r
-  0, 0, 0,\r
-  0, 0, 0,\r
-  0, 1, 0,\r
-\r
-  // F\r
-  0, 0, 0,\r
-  0, 1, 0,\r
-  0, 0, 0,\r
-  0, 0, 1,\r
-  1, 1, 0,\r
-\r
-  // G\r
-  0, 0, 0,\r
-  0, 0, 1,\r
-  0, 0, 0,\r
-  0, 1, 0,\r
-  0, 0, 0,\r
-\r
-  // H\r
-  1, 0, 1,\r
-  1, 1, 0\r
-};\r
-\r
-char *hardvar0[]=\r
-{\r
-  "xwin",               "ywin",                 "cameratracking",\r
-  "timer",              "up",                   "down",\r
-  "left",               "right",                "b1",\r
-  "b2",                 "b3",                   "b4",\r
-  "screenx",            "screeny",              "player",       // 15\r
-\r
-  "numentsonscreen",    "tracker",              "mx",\r
-  "my",                 "mb",                   "vctrace",\r
-  "image_width",        "image_height",         "music_volume", // 24\r
-  "vsp",                "lastent",              "last_pressed"\r
-};\r
-\r
-char *hardvar1[]=\r
-{\r
-  "screen",             "entity.x",             "entity.y",\r
-  "entity.tx",          "entity.ty",            "entity.facing",\r
-  "entity.moving",      "entity.specframe",     "entity.speed",\r
-  "entity.movecode",    "entsonscreen",         "key",\r
-  "layer.hline",        "byte",                 "word",         // 15\r
-\r
-  "quad",               "pal",                  "sbyte",\r
-  "sword",              "squad"\r
-};\r
-\r
-int funcidx      = 0;\r
-int varcategory  = 0;\r
-\r
-int numhardfuncs = 111;\r
-int numhardvar0  = 27;\r
-int numhardvar1  = 20;\r
-\r
-// ================================= Code ====================================\r
-\r
-int streq(char *a, char *b)\r
-{\r
-  while (*a)\r
-  {\r
-    if (*a++ != *b++)\r
-      return 0;\r
-  }\r
-  return (*b==0);\r
-}\r
-\r
-char TokenIs(char *str)\r
-  { return streq(str,token); }\r
-\r
-void ParseWhitespace(void)\r
-{\r
-  while (1)\r
-  {\r
-    while (*src<=' ' && *src>2)\r
-      if (!*src++)\r
-        return;\r
-\r
-    if (src[0]=='/' && src[1]=='/')\r
-    {\r
-      while (*src && (*src != '\n'))\r
-        src++;\r
-      continue;\r
-    }\r
-\r
-    if (src[0]=='/' && src[1]=='*')\r
-    {\r
-      while (!(src[0]=='*' && src[1]=='/'))\r
-      {\r
-        src++;\r
-        if (!*src)\r
-          return;\r
-        if (*src == 1)\r
-        {\r
-          src++;\r
-          source_file = src;\r
-          while (*src++);\r
-          tlines++;\r
-          continue;\r
-        }\r
-        if (*src==2)\r
-        {\r
-          src++;\r
-          lines = (int) *(int *)src;\r
-          src += 4;\r
-          continue;\r
-        }\r
-      }\r
-      src+=2;\r
-      continue;\r
-    }\r
-\r
-    if (*src == 1)\r
-    {\r
-      src++;\r
-      source_file = src;\r
-      while (*src++);\r
-      continue;\r
-    }\r
-    if (*src==2)\r
-    {\r
-      src++;\r
-      lines = (int) *(int *)src;\r
-      src += 4;\r
-      tlines++;\r
-      continue;\r
-    }\r
-    break;\r
-  }\r
-}\r
-\r
-int GetStringIdx(char i)\r
-{\r
-  int j, k=0;\r
-\r
-  for (j=0; j<i; j++)\r
-  {\r
-    if (funcs[c].argtype[j]==STRING) k++;\r
- }\r
- return k;\r
-}\r
-\r
-void CheckLibFunc()\r
-{ int i;\r
-\r
-  token_nvalue=0;\r
-  token_type=0;\r
-\r
-  if (TokenIs("if") || TokenIs("else") || TokenIs("for") ||\r
-      TokenIs("while") || TokenIs("switch") || TokenIs("case") ||\r
-      TokenIs("goto"))\r
-  {\r
-    token_type=RESERVED;\r
-    return;\r
-  }\r
-  if (TokenIs("and"))\r
-  {\r
-     token_type=CONTROL;\r
-     token[0]='&'; token[1]='&'; token[2]=0;\r
-     return;\r
-  }\r
-  if (TokenIs("or"))\r
-  {\r
-     token_type=CONTROL;\r
-     token[0]='|'; token[1]='|'; token[2]=0;\r
-     return;\r
-  }\r
-  i=0;\r
-  while (i<numhardfuncs)\r
-  {\r
-    if (!strcmp(hardfuncs[i], token)) break;\r
-    i++;\r
-  }\r
-  if (i<numhardfuncs)\r
-  {\r
-    token_type=FUNCTION;\r
-    token_subtype=op_BFUNC;\r
-    funcidx=i;\r
-  }\r
-  i=0;\r
-  while (i<numhardvar0)\r
-  {\r
-    if (!strcmp(hardvar0[i], token)) break;\r
-    i++;\r
-  }\r
-  if (i<numhardvar0)\r
-  {\r
-    token_type=IDENTIFIER;\r
-    varcategory=op_HVAR0;\r
-    varidx=i;\r
-  }\r
-  i=0;\r
-  while (i<numhardvar1)\r
-  {\r
-    if (!strcmp(hardvar1[i], token)) break;\r
-    i++;\r
-  }\r
-  if (i<numhardvar1)\r
-  {\r
-    token_type=IDENTIFIER;\r
-    varcategory=op_HVAR1;\r
-    varidx=i;\r
-  }\r
-\r
-  i=0;\r
-  while (i<numfuncs)\r
-  {\r
-    if (!strcmp(funcs[i].fname, token)) break;\r
-    i++;\r
-  }\r
-  if (i<numfuncs)\r
-  {\r
-    token_type=FUNCTION;\r
-    token_subtype=op_UFUNC;\r
-    funcidx=i;\r
-  }\r
-\r
-  i=0;\r
-  while (i<numvars)\r
-  {\r
-    if (!strcmp(vars[i].vname, token)) break;\r
-    i++;\r
-  }\r
-  if (i<numvars)\r
-  {\r
-    token_type=IDENTIFIER;\r
-    varidx=i;\r
-    varcategory=op_UVAR;\r
-    if (vars[varidx].arraylen>1) varcategory=op_UVARRAY;\r
-  }\r
-  i=0;\r
-  while (i<funcs[c].numlocals)\r
-  {\r
-    if (!strcmp(larg[i], token)) break;\r
-    i++;\r
-  }\r
-  if (i<funcs[c].numlocals)\r
-  {\r
-    token_type=IDENTIFIER;\r
-    varidx=i;\r
-    switch (funcs[c].argtype[varidx])\r
-    {\r
-      case INT: varcategory=op_LVAR; break;\r
-      case STRING: varcategory=op_SLOCAL;\r
-                   varidx=GetStringIdx(varidx);\r
-                   break;\r
-      default: vcerr("um.");\r
-    }\r
-  }\r
-  i=0;\r
-  while (i<numstr)\r
-  {\r
-    if (!strcmp(str[i].vname, token)) break;\r
-    i++;\r
-  }\r
-  if (i<numstr)\r
-  {\r
-    token_type=IDENTIFIER;\r
-    varidx=i;\r
-    varcategory=op_STRING;\r
-    if (str[i].arraylen>1) varcategory=op_SARRAY;\r
-  }\r
-}\r
-\r
-void GetIdentifier(void)\r
-{\r
-  int i;\r
-\r
-  i=0;\r
-  while ((chr_table[*src] == LETTER) || (chr_table[*src] == DIGIT))\r
-    token[i++] = *src++;\r
-  token[i]=0;\r
-  strlwr(token);\r
-  CheckLibFunc();\r
-}\r
-\r
-void ConvHexToDec()\r
-{\r
-  static const char *const hextbl="0123456789abcdef\0";\r
-  static int pow_lut[]={1,16,256,4096,65536,1048576,16777216,268435456};\r
-  int i=0, pos=0, z=0;\r
-  unsigned int j=0;\r
-\r
-  if (strlen(token)>9)\r
-    vcerr("Hex number exceeds 8 digit maximum.");\r
-\r
-  strlwr(token);\r
-  i=strlen(token)-1;\r
-  token_nvalue=0;\r
-  for (pos=0; i>0; pos++,i--)\r
-  {\r
-    z=token[i];\r
-    for (j=0; j<16; j++)\r
-      if (hextbl[j]==z) break;\r
-    if (j>=16)\r
-      vcerr("Invalid hex number.");\r
-    token_nvalue += (j * pow_lut[pos]);\r
-  }\r
-}\r
-\r
-void DoTickMarks()\r
-{\r
-  token_nvalue=token[1];\r
-}\r
-\r
-void GetNumber()\r
-{\r
-  int i;\r
-\r
-  if ('\'' == *src)\r
-  {\r
-    token[0]=*src++;\r
-    token[1]=*src++;\r
-    token[2]=*src++;\r
-    token[3]=0;\r
-  }\r
-  else\r
-  {\r
-    i=0;\r
-    while (chr_table[*src] != SPECIAL)\r
-      token[i++]=*src++;\r
-    token[i]=0;\r
-  }\r
-  if (token[0]=='$') ConvHexToDec();\r
-  else if (token[0]=='\'') DoTickMarks();\r
-  else token_nvalue=atoi(token);\r
-}\r
-\r
-void GetPunctuation()\r
-{ char c;\r
-\r
-  c=*src;\r
-  switch (c)\r
-  {\r
-     case '(': token[0]='('; token[1]=0; src++; break;\r
-     case ')': token[0]=')'; token[1]=0; src++; break;\r
-     case '{': token[0]='{'; token[1]=0; src++; break;\r
-     case '}': token[0]='}'; token[1]=0; src++; break;\r
-     case '[': token[0]='['; token[1]=0; src++; break;\r
-     case ']': token[0]=']'; token[1]=0; src++; break;\r
-     case ',': token[0]=','; token[1]=0; src++; break;\r
-     case ':': token[0]=':'; token[1]=0; src++; break;\r
-     case ';': token[0]=';'; token[1]=0; src++; break;\r
-     case '/': token[0]='/'; token[1]=0; src++; break;\r
-     case '*': token[0]='*'; token[1]=0; src++; break;\r
-     case '^': token[0]='^'; token[1]=0; src++; break;\r
-     case '%': token[0]='%'; token[1]=0; src++; break;\r
-     case '\"': token[0]='\"'; token[1]=0; src++; break;\r
-     case '+' : token[0]='+';\r
-                src++;\r
-                if (*src=='+')\r
-                { token[1]='+';\r
-                  src++; }\r
-                else if (*src=='=')\r
-                { token[1]='=';\r
-                  src++; }\r
-                else token[1]=0;\r
-                token[2]=0;\r
-                break;\r
-     case '-' : token[0]='-';\r
-                src++;\r
-                if (*src=='-')\r
-                { token[1]='-';\r
-                  src++; }\r
-                else if (*src=='=')\r
-                { token[1]='=';\r
-                  src++; }\r
-                else token[1]=0;\r
-                token[2]=0;\r
-                break;\r
-     case '>' : token[0]='>';\r
-                src++;\r
-                if (*src=='=')\r
-                { token[1]='=';\r
-                  token[2]=0;\r
-                  src++; break; }\r
-                if (*src=='>')\r
-                { token[1]='>';\r
-                  token[2]=0;\r
-                  src++; break; }\r
-                token[1]=0;\r
-                break;\r
-      case '<': token[0]='<';\r
-                src++;\r
-                if (*src=='=')\r
-                { token[1]='=';\r
-                  token[2] = 0;\r
-                  src++; break; }\r
-                if (*src=='<')\r
-                { token[1]='<';\r
-                  token[2] = 0;\r
-                  src++; break; }\r
-                token[1]=0;\r
-                break;\r
-      case '!': token[0]='!';\r
-                src++;\r
-                if (*src=='=')\r
-                { token[1]='=';\r
-                  token[2]=0;\r
-                  src++; break; }\r
-                token[1]=0;\r
-                break;\r
-      case '=': token[0]='=';\r
-                src++;\r
-                if (*src=='=')\r
-                { token[1]=0;\r
-                  src++; }\r
-                else token[1]=0;\r
-                break;\r
-      case '&': token[0]='&';\r
-                src++;\r
-                if (*src=='&')\r
-                { token[1]='&';\r
-                  token[2]=0;\r
-                  src++; break; }\r
-                token[1]=0;\r
-                break;\r
-      case '|': token[0]='|';\r
-                src++;\r
-                if (*src=='|')\r
-                { token[1]='|';\r
-                  token[2]=0;\r
-                  src++; break; }\r
-                token[1]=0;\r
-                break;\r
-       default: src++;                   // This should be an error.\r
-  }\r
-}\r
-\r
-void GetString(void)\r
-{\r
-  int i;\r
-\r
-  // Expects a "quoted" string. Places the contents of the string in\r
-  // token[] but does not include the quotes.\r
-\r
-  Expect("\"");\r
-  i=0;\r
-  while (*src!='\"')\r
-  {\r
-    token[i++]=*src++;\r
-    if (i>250)\r
-      vcerr("String exceeds 250 character maximum.");\r
-  }\r
-  src++;\r
-  token[i]=0;\r
-}\r
-\r
-void GetToken(void)\r
-{\r
-  int i;\r
-\r
-  // Simply reads in the next statement and places it in the\r
-  // token buffer.\r
-\r
-  ParseWhitespace();\r
-  i=0;\r
-\r
-  switch (chr_table[*src])\r
-  {\r
-    case  LETTER: { token_type = IDENTIFIER; GetIdentifier();  break; }\r
-    case   DIGIT: { token_type = DIGIT;      GetNumber();      break; }\r
-    case SPECIAL: { token_type = CONTROL;    GetPunctuation(); break; }\r
-  }\r
-\r
-  if (!*src && inevent)\r
-    err("Unexpected end of file");\r
-}\r
-\r
-void Expect(char *str)\r
-{\r
-  GetToken();\r
-  if (TokenIs(str)) return;\r
-  vcerr("error: %s expected, %s got", str, token);\r
-}\r
-\r
-int ExpectNumber()\r
-{\r
-  GetToken();\r
-  if (token_type!=DIGIT) err("error: Numerical value expected");\r
-  return token_nvalue;\r
-}\r
-\r
-void InitCompileSystem()\r
-{ int i;\r
-\r
-  vprint("Building chr_table[].");\r
-  for (i=0; i<256; i++) chr_table[i]=SPECIAL;\r
-  for (i='0'; i<='9'; i++) chr_table[i]=DIGIT;\r
-  for (i='A'; i<='Z'; i++) chr_table[i]=LETTER;\r
-  for (i='a'; i<='z'; i++) chr_table[i]=LETTER;\r
-\r
-  chr_table[10]=0;\r
-  chr_table[13]=0;\r
-  chr_table[' ']=0;\r
-  chr_table['_']=LETTER;\r
-  chr_table['.']=LETTER;\r
-  chr_table['$']=DIGIT;\r
-  chr_table[39]=DIGIT;\r
-}\r
-\r
-char lasttoken[2048];\r
-\r
-int NextIs(char *str)\r
-{ char *ptr,tt,tst;\r
-  int i,nv;\r
-\r
-  ptr=src;\r
-  tt=token_type;\r
-  tst=token_subtype;\r
-  nv=token_nvalue;\r
-  memcpy(lasttoken, token, 2048);\r
-  GetToken();\r
-  src=ptr;\r
-  token_nvalue=nv;\r
-  tst=token_subtype;\r
-  tt=token_type;\r
-  //if (!strcmp(str,token)) i=1; else i=0;\r
-  i=streq(str,token);\r
-  memcpy(token, lasttoken, 2048);\r
-  return i;\r
-}\r
diff --git a/16/v2/source/verge/VCC/LEXICAL.H b/16/v2/source/verge/VCC/LEXICAL.H
deleted file mode 100755 (executable)
index 7f9d02b..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#if !defined(__LEXICAL_INC)\r
-#define __LEXICAL_INC\r
-\r
-extern void ParseWhitespace();\r
-extern void GetNumber();\r
-extern void GetToken();\r
-extern void InitCompileSystem();\r
-extern int NextIs(char *str);\r
-\r
-extern void GetString(void);\r
-\r
-extern char token[2000];                 // Token buffer\r
-extern unsigned int token_nvalue;        // int value of token if it's type DIGIT\r
-extern char token_type;                  // type of current token.\r
-extern char token_subtype;               // This is just crap.\r
-extern unsigned char chr_table[256];              // Character type table.\r
-extern char returntypes[];\r
-extern int lines, tlines;\r
-extern char *source_file;\r
-\r
-extern char TokenIs(char *str);\r
-extern void Expect(char *str);\r
-\r
-extern int numhardfuncs, funcidx;\r
-extern int varcategory, numhardvar0;\r
-extern int numhardvar1;\r
-extern char *hardfuncs[];\r
-extern char *hardvar0[];\r
-extern char *hardvar1[];\r
-\r
-#endif // __LEXICAL_INC\r
diff --git a/16/v2/source/verge/VCC/MAKEDJ.BAT b/16/v2/source/verge/VCC/MAKEDJ.BAT
deleted file mode 100755 (executable)
index 1804dc6..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-@echo off\r
-if exist vcc.exe del vcc.exe\r
-gcc -s -Wall -Werror -m486 -O3 vcc.c preproc.c lexical.c compile.c funclib.c -o dj\vcc.exe\r
-rem gcc -Wall -Werror -pg vcc.c preproc.c lexical.c compile.c funclib.c -o dj\vcc\r
-if not exist dj\vcc.exe goto end\r
-if exist ..\djp.exe djp dj\vcc.exe\r
-:end\r
diff --git a/16/v2/source/verge/VCC/PREPROC.C b/16/v2/source/verge/VCC/PREPROC.C
deleted file mode 100755 (executable)
index f930e85..0000000
+++ /dev/null
@@ -1,799 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-// ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\r
-// ³                  The VergeC Compiler version 2.01                   ³\r
-// ³              Copyright (C)1998 BJ Eirich (aka vecna)                ³\r
-// ³                        Pre Processor module                         ³\r
-// ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\r
-\r
-// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\r
-// CHANGELOG:\r
-// <aen, may 14>\r
-// + fixed incorrect file markers and last character omission.\r
-// + one more incorrect file marker fix; was not restoring correctly after\r
-//   #included files.\r
-// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\r
-\r
-#ifdef __WATCOMC__\r
-#include <io.h>\r
-#endif\r
-\r
-#include <stdio.h>\r
-#include <stdlib.h>\r
-#include <string.h>\r
-#include <stdarg.h>\r
-#include <ctype.h>\r
-\r
-#include "vcc.h"\r
-#include "lexical.h"\r
-\r
-int pp_dump;\r
-int pp_nomark;\r
-static int pp_tempct = 0;\r
-\r
-typedef struct\r
-  {\r
-    char *sym;\r
-    int sym_len;\r
-\r
-    char *resolve;\r
-    int resolve_len;\r
-\r
-  } pp_def;\r
-\r
-typedef struct\r
-  {\r
-    char *filename;\r
-    char *data;\r
-\r
-  } pp_include;\r
-\r
-void Process(char *filename);\r
-char *pp_token(char *p);\r
-\r
-////////////////////////////////////////////////////////////////////////////\r
-// DATA ////////////////////////////////////////////////////////////////////\r
-////////////////////////////////////////////////////////////////////////////\r
-\r
-pp_def *pp_defarr         = NULL;\r
-\r
-int     pp_num_defs       = 0;\r
-int     pp_defs_allocated = 0;\r
-int     PP_DEFS_BLOCK     = 25;\r
-\r
-pp_include pp_incarr[100];\r
-//pp_include *pp_icur       = NULL; // get rid of this\r
-char *cur_filename=0;\r
-char *last_filename=0;\r
-\r
-int     pp_num_includes   = 0;\r
-\r
-int     pp_line           = 0;\r
-int     pp_total_lines    = 0;\r
-\r
-const  int     EOF_CHAR          = 0x00;\r
-\r
-char    pp_chr_table[256];\r
-\r
-enum\r
-  {\r
-    PP_ERROR,\r
-    PP_WHITE,\r
-    PP_PUNC,\r
-    PP_DIGIT,\r
-    PP_LETTER,\r
-    PP_QUOTE,\r
-    PP_DIRECTIVE,\r
-    PP_NEWLINE,\r
-    PP_EOF\r
-  };\r
-\r
-FILE   *pp_out            = NULL;\r
-\r
-char    pp_tok[1024];\r
-int     pp_toktype        = 0;\r
-\r
-int     pp_last_delim     = 1;\r
-\r
-////////////////////////////////////////////////////////////////////////////\r
-// CODE ////////////////////////////////////////////////////////////////////\r
-////////////////////////////////////////////////////////////////////////////\r
-\r
-int logging=1;\r
-void log(char *str)\r
-{\r
-  if (logging)\r
-  {\r
-    FILE *fp = fopen("error.log", "a");\r
-    fprintf(fp, str);\r
-    fflush(fp);\r
-    fclose(fp);\r
-  }\r
-}\r
-\r
-void init_pp_chr_table()\r
-{\r
-  int x;\r
-\r
-  memset(pp_chr_table, PP_ERROR, 256);\r
-\r
-  pp_chr_table[EOF_CHAR] = PP_EOF;\r
-\r
-  for (x='A'; x<='Z'; x++) pp_chr_table[x] = PP_LETTER;\r
-  for (x='a'; x<='z'; x++) pp_chr_table[x] = PP_LETTER;\r
-  pp_chr_table['_'] = PP_LETTER;\r
-  pp_chr_table['.'] = PP_LETTER;\r
-\r
-  for (x='0'; x<='9'; x++) pp_chr_table[x] = PP_DIGIT;\r
-  pp_chr_table['$'] = PP_DIGIT;\r
-  pp_chr_table['\''] = PP_DIGIT;\r
-\r
-  pp_chr_table['+'] = pp_chr_table['-'] = PP_PUNC;\r
-  pp_chr_table['*'] = pp_chr_table['/'] = PP_PUNC;\r
-  pp_chr_table['%'] = PP_PUNC;\r
-  pp_chr_table['|'] = pp_chr_table['&'] = PP_PUNC;\r
-  pp_chr_table['='] = pp_chr_table['^'] = PP_PUNC;\r
-  pp_chr_table[','] = PP_PUNC;\r
-  pp_chr_table['<'] = pp_chr_table['>'] = PP_PUNC;\r
-  pp_chr_table['('] = pp_chr_table[')'] = PP_PUNC;\r
-  pp_chr_table['['] = pp_chr_table[']'] = PP_PUNC;\r
-  pp_chr_table['{'] = pp_chr_table['}'] = PP_PUNC;\r
-  pp_chr_table[':'] = pp_chr_table[';'] = PP_PUNC;\r
-  pp_chr_table['\\'] = pp_chr_table['!'] = PP_PUNC;\r
-\r
-  pp_chr_table[' '] = pp_chr_table['\t'] = PP_WHITE;\r
-  pp_chr_table['\r'] = PP_WHITE;\r
-\r
-  pp_chr_table['\n'] = PP_NEWLINE;\r
-\r
-  pp_chr_table['\"'] = PP_QUOTE;\r
-\r
-  pp_chr_table['#'] = PP_DIRECTIVE;\r
-}\r
-\r
-void pp_line_marker()\r
-{\r
-  if (pp_nomark) return;\r
-\r
-  fputc(2, pp_out);\r
-  fwrite(&pp_line, 1, 4, pp_out);\r
-}\r
-\r
-void pp_file_marker()\r
-{\r
-  if (pp_nomark) return;\r
-\r
-  fputc(1, pp_out);\r
-  fwrite(cur_filename, 1, strlen(cur_filename)+1, pp_out);\r
-}\r
-\r
-void pp_error(const char *error, ...)\r
-{\r
-  va_list  lst;\r
-  char     string[1024];\r
-\r
-  va_start (lst, error);\r
-  vsprintf (string, error, lst);\r
-  va_end   (lst);\r
-\r
-  printf   ("*preproc error* ");\r
-  err      (string);\r
-}\r
-\r
-void pp_line_error(const char *error, ...)\r
-{\r
-  va_list  lst;\r
-  char     string[1024];\r
-\r
-  va_start (lst, error);\r
-  vsprintf (string, error, lst);\r
-  va_end   (lst);\r
-\r
-  printf   ("%s(%d) ", cur_filename, pp_line);\r
-  pp_error (string);\r
-}\r
-\r
-int pp_is_punc(int c)\r
-  { return (PP_PUNC == pp_chr_table[c]); }\r
-\r
-int pp_is_letter(int c)\r
-  { return (PP_LETTER == pp_chr_table[c]); }\r
-\r
-int pp_is_digit(int c)\r
-  { return (PP_DIGIT == pp_chr_table[c]); }\r
-\r
-int pp_is_ident(int c)\r
-  { return (pp_is_letter(c) || pp_is_digit(c)); }\r
-\r
-int pp_is_white(int c)\r
-  { return (PP_WHITE == pp_chr_table[c]); }\r
-\r
-int pp_is_directive(int c)\r
-  { return (PP_DIRECTIVE == pp_chr_table[c]); }\r
-\r
-int pp_is_eof(int c)\r
-  { return (PP_EOF == pp_chr_table[c]); }\r
-\r
-pp_def *pp_def_add(char *sym, char *resolve)\r
-{\r
-  pp_def *pp = NULL;\r
-  pp_def *p = NULL;\r
-\r
-  if (!(pp_defs_allocated % PP_DEFS_BLOCK))\r
-  {\r
-    pp_defs_allocated += PP_DEFS_BLOCK;\r
-\r
-    p = (pp_def *)realloc(\r
-      pp_defarr, pp_defs_allocated * sizeof(pp_def));\r
-    if (!p) pp_error("unable to grow #define list");\r
-\r
-    pp_defarr = p;\r
-  }\r
-\r
-  pp = &pp_defarr[pp_num_defs];\r
-  ++pp_num_defs;\r
-\r
-  pp->sym = (char *)malloc(strlen(sym) +1);\r
-  if (!pp->sym)\r
-    pp_error("memory exhausted");\r
-  strcpy(pp->sym, sym);\r
-  pp->sym_len = strlen(sym);\r
-\r
-  pp->resolve = (char *)malloc(strlen(resolve) +1);\r
-  if (!pp->resolve)\r
-    pp_error("memory exhausted");\r
-  strcpy(pp->resolve, resolve);\r
-  pp->resolve_len = strlen(resolve);\r
-\r
-  return pp;\r
-}\r
-\r
-pp_include *pp_include_add(char *filename)\r
-{\r
-  FILE       *in = NULL;\r
-  pp_include *pp = NULL;\r
-  int         z  = 0;\r
-\r
-  if (pp_num_includes)\r
-  {\r
-    int i;\r
-    for (i=0; i<pp_num_includes; i++)\r
-    {\r
-      if (!stricmp(pp_incarr[i].filename, pp_tok))\r
-        pp_error("circular dependencies");\r
-    }\r
-  }\r
-\r
-  // alias\r
-  pp = &pp_incarr[pp_num_includes++];\r
-\r
-  in = fopen(filename, "rb");\r
-  if (!in) pp_error("unable to open %s", filename);\r
-\r
-  // filelength\r
-  fseek(in, 0, SEEK_END);\r
-  z = ftell(in);\r
-  fseek(in, 0, SEEK_SET);\r
-\r
-  // cache file\r
-  pp->data = (char *)malloc((z +2) * sizeof(char));\r
-  if (!pp->data) pp_error("memory exhausted");\r
-  fread(pp->data, 1, z, in);\r
-  fclose(in);\r
-\r
-  pp->data[z++] = 32; // <aen, may 12>\r
-  pp->data[z] = EOF_CHAR;\r
-\r
-  pp->filename = (char *)malloc(strlen(filename) +1);\r
-  if (!pp->filename) pp_error("memory exhausted");\r
-  strcpy(pp->filename, filename);\r
-  cur_filename=pp->filename;\r
-\r
-  return pp;\r
-}\r
-\r
-char *pp_skip_c_comment(char *p)\r
-{\r
-  p += 2;\r
-  while (*p && ('*' != *p || '/' != p[1]))\r
-  {\r
-    if ('\n' == *p)\r
-    {\r
-      ++pp_line;\r
-      pp_line_marker();\r
-    }\r
-    if ('/' == *p && '*' == p[1])\r
-      p = pp_skip_c_comment(p);\r
-    else ++p;\r
-  }\r
-  if (*p) p += 2;\r
-\r
-  return p;\r
-}\r
-\r
-char *pp_skip_cpp_comment(char *p)\r
-{\r
-  p += 2;\r
-  while (*p && '\n' != *p)\r
-    ++p;\r
-  if (*p)\r
-  {\r
-    ++p;\r
-\r
-    ++pp_line;\r
-    pp_line_marker();\r
-  }\r
-\r
-  return p;\r
-}\r
-\r
-char *pp_skipwhite(char *p)\r
-{\r
-  for (;;)\r
-  {\r
-    while (*p && PP_WHITE == pp_chr_table[(int) *p])\r
-      ++p;\r
-\r
-    if ('\n' == *p)\r
-    {\r
-      ++p;\r
-\r
-      ++pp_line;\r
-      pp_line_marker();\r
-      continue;\r
-    }\r
-\r
-    // skip comments\r
-    if ('/' == *p)\r
-    {\r
-      switch (p[1])\r
-      {\r
-        case '/': p = pp_skip_cpp_comment(p); continue;\r
-        case '*': p = pp_skip_c_comment(p);   continue;\r
-      }\r
-    }\r
-\r
-    break;\r
-  }\r
-\r
-  return p;\r
-}\r
-\r
-char *pp_token_punc(char *p)\r
-{\r
-  char *s = pp_tok;\r
-\r
-  do {\r
-    *s++ = *p++;\r
-  } while (*p && pp_is_punc(*p));\r
-  *s = 0;\r
-\r
-  return p;\r
-}\r
-\r
-/*\r
-int is_hex(int c)\r
-{\r
-  return (\r
-     (c >= '0' && c <= '9')\r
-  || (c >= 'A' && c <= 'F')\r
-  || (c >= 'a' && c <= 'f'));\r
-}\r
-*/\r
-\r
-char *pp_token_digit(char *p)\r
-{\r
-  char *s = pp_tok;\r
-\r
-  if ('\'' == *p)\r
-  {\r
-    *s++ = *p++;\r
-    if (!*p) return NULL;\r
-    *s++ = *p++;\r
-    if (!*p) return NULL;\r
-    *s++ = *p++;\r
-    if (!*p) return NULL;\r
-    *s = 0;\r
-  }\r
-  else\r
-  {\r
-    do {\r
-      *s++ = *p++;\r
-    } while (*p && pp_is_digit(*p));\r
-    if (*p) *s = 0;\r
-  }\r
-\r
-  return p;\r
-}\r
-\r
-char *pp_token_letter(char *p)\r
-{\r
-  char *s = pp_tok;\r
-\r
-  do {\r
-    *s++ = *p++;\r
-  } while (*p && pp_is_ident(*p));\r
-  if (*p) *s = 0;\r
-\r
-  return p;\r
-}\r
-\r
-char *pp_token_directive(char *p)\r
-{\r
-  char *s = pp_tok;\r
-\r
-  ++p; // skip #\r
-\r
-  // directive name\r
-  do {\r
-    *s++ = *p++;\r
-  } while (pp_is_ident(*p));\r
-  *s = 0;\r
-\r
-  // #include\r
-  if (!strcmp(pp_tok, "include"))\r
-  {\r
-    // boogly boogly boogly!\r
-    int l = 0;\r
-    char *e = NULL;\r
-\r
-    //printf("#include detected \n");\r
-\r
-    // any whitespace after 'include'\r
-    p = pp_skipwhite(p);\r
-\r
-    // skip, but don't expect, a "\r
-    if ('\"' == *p) ++p;\r
-\r
-    // grab the filename\r
-    e = pp_tok;\r
-    while (*p && '\"' != *p)\r
-      *e++ = *p++;\r
-    // if we didn't hit eof...?\r
-    if (*p)\r
-    {\r
-      // zero term filename\r
-      *e = 0;\r
-      // skip closing "\r
-      ++p;\r
-\r
-      last_filename=cur_filename; // <aen, may 14>\r
-      l = pp_line;      // save\r
-      Process(pp_tok);\r
-      pp_line = l;      // restore\r
-      cur_filename=last_filename; // <aen, may 14>\r
-      // reset file marker\r
-      pp_file_marker();\r
-\r
-      // disregard rest of line\r
-      while (*p && '\n' != *p)\r
-        ++p;\r
-      // if we didn't hit eof...?\r
-      if (*p)\r
-      {\r
-        // skip newline char\r
-        ++p;\r
-\r
-        // update line\r
-        ++pp_line;\r
-        pp_line_marker();\r
-\r
-        // dump null token... writes nothing i think...\r
-        pp_tok[0]='\0';\r
-      }\r
-      //else pp_error("screw you!");\r
-    }\r
-  }\r
-  // #define\r
-  else if (!strcmp(pp_tok, "define"))\r
-  {\r
-    char *e = NULL;\r
-    char sym[256];\r
-    char resolve[1024];\r
-\r
-    // find start of symbol\r
-    while (' ' == *p || '\t' == *p)\r
-      ++p;\r
-\r
-    // parse symbol\r
-    e = sym;\r
-    while (pp_is_ident(*p))\r
-      { *e++ = *p++; }\r
-    *e = 0;\r
-\r
-    // check for duplicate #defines\r
-    if (pp_num_defs)\r
-    {\r
-      int i;\r
-      int z = strlen(sym);\r
-      for (i=0; i<pp_num_defs; i++)\r
-      {\r
-        if (z == pp_defarr[i].sym_len)\r
-        {\r
-          if (!stricmp(pp_defarr[i].sym, sym))\r
-            pp_error("duplicate #define symbol");\r
-        }\r
-      }\r
-    }\r
-\r
-    // find start of argument list (if any), or resolve\r
-    while (' ' == *p || '\t' == *p)\r
-      ++p;\r
-\r
-    // found argument list; discard for now\r
-    if ('(' == *p)\r
-    {\r
-      ++p;\r
-      while (')' != *p)\r
-        ++p;\r
-      ++p;\r
-\r
-      // find start of resolve\r
-      while (' ' == *p || '\t' == *p)\r
-        ++p;\r
-    }\r
-\r
-    pp_last_delim = 1;\r
-    e = resolve;\r
-    // parse resolve\r
-    while ('\n' != *p)\r
-    {\r
-      // whitespace\r
-      if (' ' == *p || '\t' == *p)\r
-      {\r
-        do {\r
-          ++p;\r
-        } while (' ' == *p || '\t' == *p);\r
-      }\r
-\r
-      // continuation? (multiple lines)\r
-      if ('\\' == *p)\r
-      {\r
-        ++p;\r
-        while (*p && '\n' != *p)\r
-          ++p;\r
-        // if not eof\r
-        if (*p)\r
-        {\r
-          ++p;\r
-\r
-          ++pp_line;\r
-          pp_line_marker();\r
-        }\r
-        continue;\r
-      }\r
-\r
-      // special case for 'x' chars\r
-      if ('\'' == *p)\r
-      {\r
-        *e++ = *p++;\r
-        do {\r
-          *e++ = *p++;\r
-        } while (*p && '\'' != *p);\r
-        *e++ = *p++;\r
-\r
-        pp_last_delim = 1;\r
-        continue;\r
-      }\r
-\r
-      // special case for string literals\r
-      if ('\"' == *p)\r
-      {\r
-        do {\r
-          *e++ = *p++;\r
-        } while (*p && '\"' != *p);\r
-        if (*p)\r
-          *e++ = *p++;\r
-\r
-        pp_last_delim = 1;\r
-        continue;\r
-      }\r
-\r
-      // this is just the preprocessor, so i don't need\r
-      // to get punctuation or digits in their correct form, i just\r
-      // have to copy them over as i see them.\r
-      if (pp_is_punc(*p) || pp_is_digit(*p))\r
-      {\r
-        do {\r
-          // d'oh!\r
-          if ('\'' == *p || '\\' == *p)\r
-            break;\r
-\r
-          *e++ = *p++;\r
-        } while (pp_is_punc(*p) || pp_is_digit(*p));\r
-\r
-        pp_last_delim = 1;\r
-        continue;\r
-      }\r
-\r
-      if (pp_is_letter(*p))\r
-      {\r
-        if (!pp_last_delim)\r
-          *e++ = ' ';\r
-\r
-        do {\r
-          *e++ = *p++;\r
-        } while (pp_is_ident(*p));\r
-\r
-        pp_last_delim = 0;\r
-        continue;\r
-      }\r
-\r
-      ++p; // unknown?\r
-    }\r
-    *e = 0;\r
-\r
-    // update define list\r
-    pp_def_add(sym, resolve);\r
-\r
-    pp_tok[0]='\0';\r
-  }\r
-  // #???\r
-  else pp_error("unknown preprocessor directive");\r
-\r
-  return p;\r
-}\r
-\r
-char *pp_token_quote(char *p)\r
-{\r
-  char *s = pp_tok;\r
-\r
-  *s++ = *p++;\r
-\r
-  while (*p && '\"' != *p)\r
-    *s++ = *p++;\r
-  // if not eof\r
-  if (*p)\r
-  {\r
-    *s++ = *p++;\r
-    *s   = 0;\r
-  }\r
-\r
-  return p;\r
-}\r
-\r
-char *pp_token(char *p)\r
-{\r
-  p = pp_skipwhite(p);\r
-  if (!*p)\r
-  {\r
-    pp_tok[0] = '\0'; // gotta have this! (fixes last sym replication bug)\r
-    return p;\r
-  }\r
-\r
-  pp_toktype = pp_chr_table[(int) *p];\r
-\r
-  switch (pp_toktype)\r
-  {\r
-    case PP_PUNC:    p = pp_token_punc(p);   break;\r
-    case PP_DIGIT:   p = pp_token_digit(p);  break;\r
-    case PP_LETTER:  p = pp_token_letter(p); break;\r
-\r
-    case PP_QUOTE:   p = pp_token_quote(p);  break;\r
-\r
-    case PP_DIRECTIVE:\r
-      p = pp_token_directive(p);\r
-      break;\r
-\r
-    case PP_EOF:\r
-      break;\r
-\r
-    case PP_ERROR:\r
-      pp_line_error("unknown character <%c:%i>", *p, *p);\r
-  }\r
-\r
-  return p;\r
-}\r
-\r
-void Process(char *filename)\r
-{\r
-  char *s = NULL;\r
-  pp_include *ppi  = NULL;\r
-\r
-  // starts fresh for each #include file\r
-  pp_line = 1;\r
-  //pp_line_marker(); // hmm... did this kill the wat ver? i forget..\r
-\r
-  // push file\r
-  ppi = pp_include_add(filename);\r
-  s   = ppi->data;\r
-\r
-  pp_file_marker();\r
-\r
-  pp_last_delim = 1;\r
-  s = pp_token(s);\r
-\r
-  // loop until we hit an EOF token\r
-  while (*s && PP_EOF != pp_toktype)\r
-  {\r
-    // for compactor; this is absolutely required for the parsing to\r
-    // work correctly for hex numbers\r
-    if (PP_LETTER == pp_toktype || PP_DIGIT == pp_toktype)\r
-    {\r
-      if (!pp_last_delim)\r
-        fputc(' ', pp_out);\r
-    }\r
-\r
-    if (pp_num_defs)\r
-    {\r
-      // #define replacement\r
-      if (PP_LETTER == pp_toktype)\r
-      {\r
-        pp_def *ppd = NULL;\r
-        int pp_token_len = strlen(pp_tok);\r
-        int i = 0;\r
-\r
-        for (i=0; i<pp_num_defs; i++)\r
-        {\r
-          ppd = pp_defarr + i;\r
-          // first see if the lengths match, for possible quick discard\r
-          if (ppd->sym_len == pp_token_len)\r
-          {\r
-            // lengths match, compare bytes\r
-            if (!stricmp(pp_tok, ppd->sym))\r
-            {\r
-              // match! overwrite token with resolve\r
-              memcpy(pp_tok, ppd->resolve, strlen(ppd->resolve)+1);\r
-              break;\r
-            }\r
-          }\r
-        }\r
-      }\r
-    }\r
-\r
-    // write whatever we got\r
-    fwrite(pp_tok, 1, strlen(pp_tok), pp_out);\r
-\r
-    pp_last_delim = (PP_LETTER != pp_toktype);\r
-    s = pp_token(s);\r
-  }\r
-\r
-  // pop file\r
-  free(ppi->data);\r
-  free(ppi->filename);\r
-  --pp_num_includes;\r
-  //pp_icur = &pp_incarr[pp_num_includes]; // oops! :-)\r
-\r
-  pp_total_lines += pp_line;\r
-}\r
-\r
-void pp_dump_output()\r
-{\r
-  char strx[1024];\r
-\r
-  sprintf(strx, "copy vcctemp.$$$ vcc%i.$$$", pp_tempct);\r
-  ++pp_tempct;\r
-\r
-  system(strx);\r
-}\r
-\r
-void PreProcess(char *filename)\r
-{\r
-  pp_num_includes = 0;\r
-  init_pp_chr_table();\r
-\r
-  pp_out = fopen("VCCTEMP.$$$", "wb");\r
-  if (!pp_out) pp_error("unable to open VCCTEMP.$$$");\r
-\r
-  Process(filename);\r
-\r
-  fclose(pp_out);\r
-\r
-  // dump preproc output?\r
-  if (0 != pp_dump)\r
-    pp_dump_output();\r
-}\r
diff --git a/16/v2/source/verge/VCC/PREPROC.H b/16/v2/source/verge/VCC/PREPROC.H
deleted file mode 100755 (executable)
index e5f8784..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#if !defined(__PREPROC_INC)\r
-#define __PREPROC_INC\r
-\r
-extern void PreProcess(char *fname);\r
-extern void Process(char *fname);\r
-\r
-#endif // __PREPROC_INC\r
diff --git a/16/v2/source/verge/VCC/VCC.C b/16/v2/source/verge/VCC/VCC.C
deleted file mode 100755 (executable)
index 0a8a5c3..0000000
+++ /dev/null
@@ -1,342 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-// ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\r
-// ³                        The VergeC Compiler                          ³\r
-// ³              Copyright (C)1998 BJ Eirich (aka vecna)                ³\r
-// ³                            Main module                              ³\r
-// ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\r
-\r
-#define VERSION "2.01c"\r
-\r
-#ifdef __DJGPP__\r
-#define BUILD_TAG "DJGPP V2\0"\r
-#endif\r
-\r
-#ifdef __WATCOMC__\r
-#define BUILD_TAG "Watcom 11.0\0"\r
-#endif\r
-\r
-#include <dos.h>\r
-#include <stdio.h>\r
-#include <stdlib.h>\r
-#include <string.h>\r
-#include <stdarg.h>\r
-\r
-#include "compile.h"\r
-#include "lexical.h"\r
-\r
-extern int pp_dump;\r
-extern int pp_nomark;\r
-\r
-// ================================= Data ====================================\r
-\r
-char outmode, cmode;\r
-char fname[80];\r
-char quiet, verbose;\r
-char *strbuf;\r
-int locate=0;\r
-\r
-// -- locals --\r
-\r
-//FILE *f;\r
-//int i;\r
-//struct find_t *ft;\r
-\r
-// ================================= Code ====================================\r
-\r
-void dprint(char *message, ...)\r
-{\r
-  va_list  lst;\r
-  char     string[1024];\r
-\r
-  if (quiet) return;\r
-\r
-  // compose message\r
-  va_start (lst, message);\r
-  vsprintf (string, message, lst);\r
-  va_end   (lst);\r
-\r
-  printf   ("%s \n", string);\r
-}\r
-\r
-void vprint(char *message, ...)\r
-{\r
-  va_list  lst;\r
-  char     string[1024];\r
-\r
-  if (!verbose) return;\r
-\r
-  // compose message\r
-  va_start (lst, message);\r
-  vsprintf (string, message, lst);\r
-  va_end   (lst);\r
-\r
-  printf   ("%s \n", string);\r
-}\r
-\r
-void err(char *message, ...)\r
-{\r
-  va_list  lst;\r
-  char     string[1024];\r
-\r
-  // compose message\r
-  va_start (lst, message);\r
-  vsprintf (string, message, lst);\r
-  va_end   (lst);\r
-\r
-  if (quiet)\r
-  {\r
-    FILE *efile = fopen("ERROR.TXT", "w");\r
-\r
-    fprintf(efile, "%s \n", string);\r
-    fclose(efile);\r
-  }\r
-  else\r
-  {\r
-    printf("%s \n", string);\r
-  }\r
-\r
-  remove("vcctemp.$$$");\r
-  exit(-1);\r
-}\r
-\r
-void vcerr(char *message, ...)\r
-{\r
-  va_list  lst;\r
-  char     string[1024];\r
-\r
-  // compose message\r
-  va_start (lst, message);\r
-  vsprintf (string, message, lst);\r
-  va_end   (lst);\r
-\r
-  err("%s(%d) %s", source_file, lines, string);\r
-}\r
-\r
-void vcc_compile_mode_map(char *filename)\r
-{\r
-  FILE *o=0;\r
-  FILE *f=0;\r
-  char *x=0;\r
-  int   z=0;\r
-\r
-  x = filename;\r
-  while ('.' != *x) ++x;\r
-  *x = 0;\r
-\r
-  CompileMAP(filename);\r
-\r
-  sprintf(strbuf, "%s.map", filename);\r
-  f = fopen(strbuf, "rb+");\r
-  if (!f)\r
-    err("unable to open %s.", strbuf);\r
-\r
-  fread(strbuf, 1, 6, f);\r
-  fread(&z, 1, 4, f);\r
-  fseek(f, 0, 0);\r
-\r
-  o = fopen("outtemp.$$$", "wb");\r
-  if (!o)\r
-    err("unable to open outtemp.$$$");\r
-  x = (char *) malloc(z);\r
-  fread(x, 1, z, f);\r
-  fwrite(x, 1, z, o);\r
-  fclose(f);\r
-\r
-  fwrite(&mfuncs, 1, 4, o);\r
-  fwrite(&functbl, 4, mfuncs, o);\r
-  mfuncs = (int) code - (int) outbuf;\r
-  fwrite(&mfuncs, 1, 4, o);\r
-  fwrite(outbuf, 1, code-outbuf, o);\r
-  fclose(o);\r
-\r
-  // remove existing map file\r
-  sprintf(strbuf,"%s.map", filename); remove(strbuf);\r
-  // rename temp file to map file name\r
-  rename("outtemp.$$$", strbuf);\r
-}\r
-\r
-void vcc_compile_mode_system()\r
-{\r
-  FILE *dump=0;\r
-\r
-  CompileSystem();\r
-\r
-  dump = fopen("system.vcs", "wb");\r
-  if (!dump) err("unable to open system.vcs");\r
-\r
-  fwrite(&numfuncs, 1, 4, dump);\r
-  fwrite(&curstartofs, 1, 4, dump);\r
-  fwrite(&sstartofs, 1, 4, dump);\r
-  fwrite(outbuf, 1, code-outbuf, dump);\r
-  fputc(255, dump);\r
-\r
-  fclose(dump);\r
-}\r
-\r
-void vcc_compile_mode_all()\r
-{\r
-  FILE *o=0;\r
-  FILE *f=0;\r
-  char *x=0;\r
-  int   z=0;\r
-  struct find_t fileinfo;\r
-\r
-  CompileSystem();\r
-  f=fopen("system.vcs","wb");\r
-  fwrite(&numfuncs, 1, 4, f);\r
-  fwrite(&curstartofs, 1, 4, f);\r
-  fwrite(&sstartofs, 1, 4, f);\r
-  fwrite(outbuf, 1, code-outbuf, f);\r
-  fputc(255, f);\r
-  fclose(f);\r
-  free(source);\r
-  free(outbuf);\r
-\r
-  if (_dos_findfirst("*.MAP", _A_NORMAL, &fileinfo))\r
-    err("No mapfiles found.");\r
-\r
-  while (1)\r
-  {\r
-    int i;\r
-    memcpy(fname, fileinfo.name, 13);\r
-\r
-    i=0;\r
-    while (fname[i]!='.') i++;\r
-    fname[i]=0;\r
-\r
-    strlwr(fname);\r
-    mfuncs=0;\r
-\r
-    CompileMAP(fname);\r
-\r
-    sprintf(strbuf,"%s.map", fname);\r
-    f=fopen(strbuf,"rb+");\r
-    fread(strbuf, 1, 6, f);\r
-    fread(&z, 1, 4, f);\r
-    fseek(f, 0, 0);\r
-\r
-    o=fopen("outtemp.$$$","wb");\r
-    x=(char *) malloc(z);\r
-    fread(x, 1, z, f);\r
-    fwrite(x, 1, z, o);\r
-    fclose(f);\r
-    free(x);\r
-\r
-    fwrite(&mfuncs, 1, 4, o);\r
-    fwrite(&functbl, 4, mfuncs, o);\r
-    mfuncs=(int) code - (int) outbuf;\r
-    fwrite(&mfuncs, 1, 4, o);\r
-    fwrite(outbuf, 1, code-outbuf, o);\r
-    fclose(o);\r
-\r
-    sprintf(strbuf,"%s.map", fname);\r
-    remove(strbuf);\r
-    rename("outtemp.$$$",strbuf);\r
-\r
-    free(source);\r
-    free(outbuf);\r
-\r
-    if (!_dos_findnext(&fileinfo))\r
-      continue;\r
-\r
-    break;\r
-  }\r
-\r
-  dprint("%i total VC lines compiled.", tlines);\r
-}\r
-\r
-int main(int argc, char *argv[])\r
-{\r
-  int loop = 0;\r
-  char c = 0;\r
-  char *argstr = 0;\r
-\r
-  strbuf= (char *) malloc(2000);\r
-\r
-  cmode = 0;\r
-  pp_dump = 0;\r
-  pp_nomark = 0;\r
-\r
-  for (loop = 1; loop < argc; loop++)\r
-  {\r
-    // point to argument string\r
-    argstr = &loop[argv][0];\r
-\r
-    c = *argstr;\r
-    // skip leading punctuators, if any\r
-    if ('-' == c || '+' == c || '/' == c)\r
-      ++argstr;\r
-\r
-    if (!stricmp(argstr, "v"))\r
-      { verbose = 1; continue; }\r
-\r
-    if (!stricmp(argstr, "q"))\r
-      { quiet = 1; continue; }\r
-\r
-    // compile SYSTEM.VC only\r
-    if (!stricmp(argstr, "system"))\r
-      { cmode = 2; continue; }\r
-\r
-    // compile all available .VC files\r
-    if (!stricmp(argstr, "all"))\r
-      { cmode = 3; continue; }\r
-\r
-    // disable line/#include markers\r
-    if (!stricmp(argstr, "ppnomark"))\r
-      { pp_nomark = 1; continue; }\r
-\r
-    // dump preprocessor output to temp files\r
-    if (!stricmp(argstr, "ppdump"))\r
-      { pp_dump = 1; continue; }\r
-\r
-    // debug locator option\r
-    if ('.' == *argstr)\r
-      { locate = atoi(argstr+1); continue; }\r
-\r
-    // at this point, the argument is assumed to be a file\r
-\r
-    if (strlen(argstr) > 79)\r
-      { printf("filename '%s' too long!", argstr); argstr[79] = 0; }\r
-    memcpy(fname, argstr, strlen(argstr)+1);\r
-\r
-    cmode = 1;\r
-    continue;\r
-  }\r
-\r
-  dprint("vcc v.%s Copyright (C)1998 Benjamin Eirich. All rights reserved.", VERSION);\r
-  vprint("%s build %s on %s %s", BUILD_TAG, __FILE__, __DATE__, __TIME__);\r
-\r
-  if (!cmode)\r
-    err("No input files.");\r
-\r
-  InitCompileSystem();\r
-\r
-  switch (cmode)\r
-  {\r
-    case 1: vcc_compile_mode_map(fname); break;\r
-    case 2: vcc_compile_mode_system(); break;\r
-    case 3: vcc_compile_mode_all(); break;\r
-\r
-    default: err("you have now entered the twilight zone.");\r
-  }\r
-\r
-  remove("vcctemp.$$$");\r
-  remove("ERROR.TXT");\r
-\r
-  return 0;\r
-}\r
diff --git a/16/v2/source/verge/VCC/VCC.H b/16/v2/source/verge/VCC/VCC.H
deleted file mode 100755 (executable)
index 99a91f7..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#if !defined(__VCC_INC)\r
-#define __VCC_INC\r
-\r
-#define QUIET 0\r
-#define DEFAULT 1\r
-#define VERBOSE 2\r
-\r
-#define CONTROL 1\r
-#define DIGIT 2\r
-#define IDENTIFIER 3\r
-#define RESERVED 4\r
-#define FUNCTION 5\r
-\r
-extern char *strbuf;\r
-extern int locate;\r
-\r
-extern void err(char *message, ...);\r
-extern void vcerr(char *message, ...);\r
-extern void dprint(char *message, ...);\r
-extern void vprint(char *message, ...);\r
-\r
-#endif // __VCC_INC\r
diff --git a/16/v2/source/verge/VCC/VCCODE.H b/16/v2/source/verge/VCC/VCCODE.H
deleted file mode 100755 (executable)
index 7449513..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-// We never use zero as a tag. This makes it easier to track down misbehaving\r
-// VC code, since zero is commonly come-by when going off into uncharted\r
-// depths of memory.\r
-\r
-#define ERROR                 0\r
-\r
-// Opcode values.\r
-\r
-#define opEXEC_STDLIB         1\r
-#define opEXEC_LOCALFUNC      2\r
-#define opEXEC_EXTERNFUNC     3\r
-#define opIF                  4\r
-#define opELSE                5\r
-#define opGOTO                6\r
-#define opSWITCH              7\r
-#define opCASE                8\r
-#define opRETURN              9\r
-#define opASSIGN              10\r
-#define opSETRETVAL           11\r
-#define opSETLOCALSTACK       12\r
-\r
-// Operand types.\r
-\r
-#define op_IMMEDIATE          1\r
-#define op_HVAR0              2\r
-#define op_HVAR1              3\r
-#define op_UVAR               4\r
-#define op_UVARRAY            5\r
-#define op_LVAR               6\r
-#define op_BFUNC              7\r
-#define op_UFUNC              8\r
-#define op_GROUP              9\r
-#define op_STRING             10\r
-#define op_SARRAY             11\r
-#define op_SLOCAL             12\r
-\r
-// Variable types.\r
-\r
-#define v_IMMEDIATE           1  // is this necessary?\r
-#define v_CHAR                2\r
-#define v_PTR                 3\r
-#define v_INT                 4\r
-\r
-// IF relational operators.\r
-\r
-#define i_ZERO                1\r
-#define i_NONZERO             2\r
-#define i_EQUALTO             3\r
-#define i_NOTEQUAL            4\r
-#define i_GREATERTHAN         5\r
-#define i_LESSTHAN            6\r
-#define i_GREATERTHANOREQUAL  7\r
-#define i_LESSTHANOREQUAL     8\r
-#define i_GROUP               9\r
-#define i_UNGROUP             10\r
-#define i_AND                 11\r
-#define i_OR                  12\r
-\r
-// Assignment operators.\r
-\r
-#define a_SET                 1\r
-#define a_INC                 2\r
-#define a_DEC                 3\r
-#define a_INCSET              4\r
-#define a_DECSET              5\r
-#define a_MULTSET             6\r
-#define a_DIVSET              7\r
-\r
-// Operand combination operators.\r
-\r
-#define op_ADD                1\r
-#define op_SUB                2\r
-#define op_MULT               3\r
-#define op_DIV                4\r
-#define op_MOD                5\r
-#define op_SHL                6\r
-#define op_SHR                7\r
-#define op_AND                8\r
-#define op_OR                 9\r
-#define op_XOR                10\r
-#define op_END                11\r
-\r
-// String components\r
-\r
-#define s_IMMEDIATE           1\r
-#define s_GLOBAL              2\r
-#define s_ARRAY               3\r
-#define s_NUMSTR              4\r
-#define s_LEFT                5\r
-#define s_RIGHT               6\r
-#define s_MID                 7\r
-#define s_LOCAL               8\r
-#define s_ADD                 9\r
-#define s_CHR                 10\r
-#define s_END                 11\r
diff --git a/16/v2/source/verge/gnu.txt b/16/v2/source/verge/gnu.txt
deleted file mode 100755 (executable)
index 358ef6f..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-GNU GENERAL PUBLIC LICENSE\r
-Version 2, June 1991 \r
-\r
-Copyright (C) 1989, 1991 Free Software Foundation, Inc.  \r
-59 Temple Place - Suite 330, Boston, MA  02111-1307, USA\r
-\r
-Everyone is permitted to copy and distribute verbatim copies\r
-of this license document, but changing it is not allowed.\r
-Preamble\r
-The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. \r
-\r
-When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. \r
-\r
-To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. \r
-\r
-For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. \r
-\r
-We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. \r
-\r
-Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. \r
-\r
-Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. \r
-\r
-The precise terms and conditions for copying, distribution and modification follow. \r
-\r
-TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\r
-0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". \r
-\r
-Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. \r
-\r
-1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. \r
-\r
-You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. \r
-\r
-2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: \r
-\r
-\r
-a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. \r
-\r
-b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. \r
-\r
-c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) \r
-These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. \r
-Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. \r
-\r
-In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. \r
-\r
-3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: \r
-\r
-a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, \r
-\r
-b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, \r
-\r
-c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) \r
-The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. \r
-If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. \r
-\r
-4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. \r
-\r
-5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. \r
-\r
-6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. \r
-\r
-7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. \r
-\r
-If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. \r
-\r
-It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. \r
-\r
-This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. \r
-\r
-8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. \r
-\r
-9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. \r
-\r
-Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. \r
-\r
-10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. \r
-\r
-NO WARRANTY\r
-\r
-11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. \r
-\r
-12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. \r
-\r
-\r
-END OF TERMS AND CONDITIONS\r