From 5cacff693d47af13d5d4fd12667536a5218a1c98 Mon Sep 17 00:00:00 2001 From: sparky4 Date: Tue, 25 Nov 2014 00:26:27 -0600 Subject: [PATCH] new file: 16/v2/CONSOLE.TXT new file: 16/v2/MAPED.CFG new file: 16/v2/MAPED.EXE new file: 16/v2/MAPED2.TXT new file: 16/v2/V2A10_27.ZIP new file: 16/v2/V2T5_9.ZIP new file: 16/v2/V2U5_9.ZIP new file: 16/v2/VCC.EXE new file: 16/v2/VERGE.EXE new file: 16/v2/VERGEC.TXT new file: 16/v2/contents.txt new file: 16/v2/source/ENGINE/AUDIO.H new file: 16/v2/source/ENGINE/A_MEMORY.C new file: 16/v2/source/ENGINE/A_MEMORY.H new file: 16/v2/source/ENGINE/CONLIB.C new file: 16/v2/source/ENGINE/CONLIB.H new file: 16/v2/source/ENGINE/CONSOLE.C new file: 16/v2/source/ENGINE/CONSOLE.H new file: 16/v2/source/ENGINE/CONTROLS.C new file: 16/v2/source/ENGINE/CONTROLS.H new file: 16/v2/source/ENGINE/ENGINE.C new file: 16/v2/source/ENGINE/ENGINE.H new file: 16/v2/source/ENGINE/ENTITY.C new file: 16/v2/source/ENGINE/ENTITY.H new file: 16/v2/source/ENGINE/FLI.C new file: 16/v2/source/ENGINE/FLI.H new file: 16/v2/source/ENGINE/FONT.C new file: 16/v2/source/ENGINE/FONT.H new file: 16/v2/source/ENGINE/IMAGE.C new file: 16/v2/source/ENGINE/IMAGE.H new file: 16/v2/source/ENGINE/INTER.H new file: 16/v2/source/ENGINE/KEYBOARD.H new file: 16/v2/source/ENGINE/KEYBOARD.S new file: 16/v2/source/ENGINE/MAIN.H new file: 16/v2/source/ENGINE/MAKEFILE new file: 16/v2/source/ENGINE/MESSAGE.C new file: 16/v2/source/ENGINE/MESSAGE.H new file: 16/v2/source/ENGINE/MIKMOD.A new file: 16/v2/source/ENGINE/MIKMOD.C new file: 16/v2/source/ENGINE/MIKMOD.H new file: 16/v2/source/ENGINE/MODE13H.C new file: 16/v2/source/ENGINE/MODEINIT.C new file: 16/v2/source/ENGINE/MODEX.C new file: 16/v2/source/ENGINE/MTYPES.H new file: 16/v2/source/ENGINE/PCX.H new file: 16/v2/source/ENGINE/RENDER.C new file: 16/v2/source/ENGINE/RENDER.H new file: 16/v2/source/ENGINE/SINCOS.H new file: 16/v2/source/ENGINE/SOUND.C new file: 16/v2/source/ENGINE/SOUND.H new file: 16/v2/source/ENGINE/STARTUP.C new file: 16/v2/source/ENGINE/TIMER.C new file: 16/v2/source/ENGINE/TIMER.H new file: 16/v2/source/ENGINE/VC.C new file: 16/v2/source/ENGINE/VC.H new file: 16/v2/source/ENGINE/VCCODE.H new file: 16/v2/source/ENGINE/VDRIVER.C new file: 16/v2/source/ENGINE/VDRIVER.H new file: 16/v2/source/ENGINE/VERGE.C new file: 16/v2/source/ENGINE/VERGE.H new file: 16/v2/source/ENGINE/VESA.C new file: 16/v2/source/ENGINE/VFILE.C new file: 16/v2/source/ENGINE/VFILE.H new file: 16/v2/source/MAPED/A_MEMORY.C new file: 16/v2/source/MAPED/COLBAK.H new file: 16/v2/source/MAPED/COLSTUFF.H new file: 16/v2/source/MAPED/COLUMNS.C new file: 16/v2/source/MAPED/COLUMNS.H new file: 16/v2/source/MAPED/CONFIG.C new file: 16/v2/source/MAPED/CONFIG.H new file: 16/v2/source/MAPED/CONTROLS.C new file: 16/v2/source/MAPED/GUI.C new file: 16/v2/source/MAPED/GUI.H new file: 16/v2/source/MAPED/GUICOMP.C new file: 16/v2/source/MAPED/GUICOMP.H new file: 16/v2/source/MAPED/INTER.H new file: 16/v2/source/MAPED/KEYBOARD.C new file: 16/v2/source/MAPED/KEYBOARD.H new file: 16/v2/source/MAPED/MAKEFILE new file: 16/v2/source/MAPED/MAPED.C new file: 16/v2/source/MAPED/MAPED.H new file: 16/v2/source/MAPED/MIKMOD.C new file: 16/v2/source/MAPED/MIKMOD.H new file: 16/v2/source/MAPED/MIKMOD.LIB new file: 16/v2/source/MAPED/MINIMAP.C new file: 16/v2/source/MAPED/MINIMAP.H new file: 16/v2/source/MAPED/MODE13H.C new file: 16/v2/source/MAPED/MODE13H.H new file: 16/v2/source/MAPED/MODEX.C new file: 16/v2/source/MAPED/MODEX.H new file: 16/v2/source/MAPED/MOUSE.C new file: 16/v2/source/MAPED/MOUSE.H new file: 16/v2/source/MAPED/MTYPES.H new file: 16/v2/source/MAPED/PCX.C new file: 16/v2/source/MAPED/RENDER.C new file: 16/v2/source/MAPED/RENDER.H new file: 16/v2/source/MAPED/SMALFONT.C new file: 16/v2/source/MAPED/SMALFONT.H new file: 16/v2/source/MAPED/SSAVER.C new file: 16/v2/source/MAPED/SSAVER.H new file: 16/v2/source/MAPED/SSAVER1.C new file: 16/v2/source/MAPED/TILEED.C new file: 16/v2/source/MAPED/TILEED.H new file: 16/v2/source/MAPED/TILESEL.C new file: 16/v2/source/MAPED/TILESEL.H new file: 16/v2/source/MAPED/TIMER.C new file: 16/v2/source/MAPED/TIMER.H new file: 16/v2/source/MAPED/VDRIVER.C new file: 16/v2/source/MAPED/VDRIVER.H new file: 16/v2/source/MAPED/VERGEPAL.H new file: 16/v2/source/README.TXT new file: 16/v2/source/UTIL/CHRCONV/CHRCONV.C new file: 16/v2/source/UTIL/CHRCONV/CHRCONV.TXT new file: 16/v2/source/UTIL/CHRCONV/DARIN.CHR new file: 16/v2/source/UTIL/CHRCONV/MAKEDJ.BAT new file: 16/v2/source/UTIL/CHRMAK/CHRMAK.CC new file: 16/v2/source/UTIL/CHRMAK/CHRMAK.TXT new file: 16/v2/source/UTIL/CHRMAK/MAKEDJ.BAT new file: 16/v2/source/UTIL/CHRMAK/MAKEWAT.BAT new file: 16/v2/source/UTIL/CHRMAK/VECNA.MAK new file: 16/v2/source/UTIL/CHRMAK/VECNA.PCX new file: 16/v2/source/UTIL/CHRMAK/VER new file: 16/v2/source/UTIL/PACK/MAKEDJ.BAT new file: 16/v2/source/UTIL/PACK/PACK.C new file: 16/v2/source/UTIL/PACK/PACK.TXT new file: 16/v2/source/UTIL/PACK/TEST new file: 16/v2/source/UTIL/PACK/TODO new file: 16/v2/source/UTIL/PCX2FNT/FONT0.PCX new file: 16/v2/source/UTIL/PCX2FNT/FONT02B.PCX new file: 16/v2/source/UTIL/PCX2FNT/MAKEDJ.BAT new file: 16/v2/source/UTIL/PCX2FNT/PCX2FNT.C new file: 16/v2/source/UTIL/PCX2FNT/PCX2FNT.TXT new file: 16/v2/source/UTIL/TRANS/MAKEDJ.BAT new file: 16/v2/source/UTIL/TRANS/SULLY.PDF new file: 16/v2/source/UTIL/TRANS/TRANS.C new file: 16/v2/source/UTIL/TRANS/TRANS.TXT new file: 16/v2/source/UTIL/TRANS/TYRIAN.PDF new file: 16/v2/source/UTIL/TRANS/TYRPAL.PCX new file: 16/v2/source/UTIL/TRANS/VERGE.PDF new file: 16/v2/source/UTIL/UNPACK/MAKEDJ.BAT new file: 16/v2/source/UTIL/UNPACK/TEST new file: 16/v2/source/UTIL/UNPACK/TODO new file: 16/v2/source/UTIL/UNPACK/UNPACK.C new file: 16/v2/source/UTIL/UNPACK/UNPACK.TXT new file: 16/v2/source/VCC/CLEAN.BAT new file: 16/v2/source/VCC/CODE.H new file: 16/v2/source/VCC/COMPILE.C new file: 16/v2/source/VCC/COMPILE.H new file: 16/v2/source/VCC/FUNCLIB.C new file: 16/v2/source/VCC/FUNCLIB.H new file: 16/v2/source/VCC/LEXICAL.C new file: 16/v2/source/VCC/LEXICAL.H new file: 16/v2/source/VCC/MAKEDJ.BAT new file: 16/v2/source/VCC/PREPROC.C new file: 16/v2/source/VCC/PREPROC.H new file: 16/v2/source/VCC/VCC.C new file: 16/v2/source/VCC/VCC.H new file: 16/v2/source/VCC/VCCODE.H new file: 16/v2/source/archives/V2GPL.ZIP new file: 16/v2/source/gnu.txt new file: 16/v2/source/verge/ENGINE/AUDIO.H new file: 16/v2/source/verge/ENGINE/A_MEMORY.C new file: 16/v2/source/verge/ENGINE/A_MEMORY.H new file: 16/v2/source/verge/ENGINE/CONLIB.C new file: 16/v2/source/verge/ENGINE/CONLIB.H new file: 16/v2/source/verge/ENGINE/CONSOLE.C new file: 16/v2/source/verge/ENGINE/CONSOLE.H new file: 16/v2/source/verge/ENGINE/CONTROLS.C new file: 16/v2/source/verge/ENGINE/CONTROLS.H new file: 16/v2/source/verge/ENGINE/ENGINE.C new file: 16/v2/source/verge/ENGINE/ENGINE.H new file: 16/v2/source/verge/ENGINE/ENTITY.C new file: 16/v2/source/verge/ENGINE/ENTITY.H new file: 16/v2/source/verge/ENGINE/FLI.C new file: 16/v2/source/verge/ENGINE/FLI.H new file: 16/v2/source/verge/ENGINE/FONT.C new file: 16/v2/source/verge/ENGINE/FONT.H new file: 16/v2/source/verge/ENGINE/IMAGE.C new file: 16/v2/source/verge/ENGINE/IMAGE.H new file: 16/v2/source/verge/ENGINE/INTER.H new file: 16/v2/source/verge/ENGINE/KEYBOARD.H new file: 16/v2/source/verge/ENGINE/KEYBOARD.S new file: 16/v2/source/verge/ENGINE/MAIN.H new file: 16/v2/source/verge/ENGINE/MAKEFILE new file: 16/v2/source/verge/ENGINE/MESSAGE.C new file: 16/v2/source/verge/ENGINE/MESSAGE.H new file: 16/v2/source/verge/ENGINE/MIKMOD.A new file: 16/v2/source/verge/ENGINE/MIKMOD.C new file: 16/v2/source/verge/ENGINE/MIKMOD.H new file: 16/v2/source/verge/ENGINE/MODE13H.C new file: 16/v2/source/verge/ENGINE/MODEINIT.C new file: 16/v2/source/verge/ENGINE/MODEX.C new file: 16/v2/source/verge/ENGINE/MTYPES.H new file: 16/v2/source/verge/ENGINE/PCX.H new file: 16/v2/source/verge/ENGINE/RENDER.C new file: 16/v2/source/verge/ENGINE/RENDER.H new file: 16/v2/source/verge/ENGINE/SINCOS.H new file: 16/v2/source/verge/ENGINE/SOUND.C new file: 16/v2/source/verge/ENGINE/SOUND.H new file: 16/v2/source/verge/ENGINE/STARTUP.C new file: 16/v2/source/verge/ENGINE/TIMER.C new file: 16/v2/source/verge/ENGINE/TIMER.H new file: 16/v2/source/verge/ENGINE/VC.C new file: 16/v2/source/verge/ENGINE/VC.H new file: 16/v2/source/verge/ENGINE/VCCODE.H new file: 16/v2/source/verge/ENGINE/VDRIVER.C new file: 16/v2/source/verge/ENGINE/VDRIVER.H new file: 16/v2/source/verge/ENGINE/VERGE.C new file: 16/v2/source/verge/ENGINE/VERGE.H new file: 16/v2/source/verge/ENGINE/VESA.C new file: 16/v2/source/verge/ENGINE/VFILE.C new file: 16/v2/source/verge/ENGINE/VFILE.H new file: 16/v2/source/verge/MAPED/A_MEMORY.C new file: 16/v2/source/verge/MAPED/COLBAK.H new file: 16/v2/source/verge/MAPED/COLSTUFF.H new file: 16/v2/source/verge/MAPED/COLUMNS.C new file: 16/v2/source/verge/MAPED/COLUMNS.H new file: 16/v2/source/verge/MAPED/CONFIG.C new file: 16/v2/source/verge/MAPED/CONFIG.H new file: 16/v2/source/verge/MAPED/CONTROLS.C new file: 16/v2/source/verge/MAPED/GUI.C new file: 16/v2/source/verge/MAPED/GUI.H new file: 16/v2/source/verge/MAPED/GUICOMP.C new file: 16/v2/source/verge/MAPED/GUICOMP.H new file: 16/v2/source/verge/MAPED/INTER.H new file: 16/v2/source/verge/MAPED/KEYBOARD.C new file: 16/v2/source/verge/MAPED/KEYBOARD.H new file: 16/v2/source/verge/MAPED/MAKEFILE new file: 16/v2/source/verge/MAPED/MAPED.C new file: 16/v2/source/verge/MAPED/MAPED.H new file: 16/v2/source/verge/MAPED/MIKMOD.C new file: 16/v2/source/verge/MAPED/MIKMOD.H new file: 16/v2/source/verge/MAPED/MIKMOD.LIB new file: 16/v2/source/verge/MAPED/MINIMAP.C new file: 16/v2/source/verge/MAPED/MINIMAP.H new file: 16/v2/source/verge/MAPED/MODE13H.C new file: 16/v2/source/verge/MAPED/MODE13H.H new file: 16/v2/source/verge/MAPED/MODEX.C new file: 16/v2/source/verge/MAPED/MODEX.H new file: 16/v2/source/verge/MAPED/MOUSE.C new file: 16/v2/source/verge/MAPED/MOUSE.H new file: 16/v2/source/verge/MAPED/MTYPES.H new file: 16/v2/source/verge/MAPED/PCX.C new file: 16/v2/source/verge/MAPED/RENDER.C new file: 16/v2/source/verge/MAPED/RENDER.H new file: 16/v2/source/verge/MAPED/SMALFONT.C new file: 16/v2/source/verge/MAPED/SMALFONT.H new file: 16/v2/source/verge/MAPED/SSAVER.C new file: 16/v2/source/verge/MAPED/SSAVER.H new file: 16/v2/source/verge/MAPED/SSAVER1.C new file: 16/v2/source/verge/MAPED/TILEED.C new file: 16/v2/source/verge/MAPED/TILEED.H new file: 16/v2/source/verge/MAPED/TILESEL.C new file: 16/v2/source/verge/MAPED/TILESEL.H new file: 16/v2/source/verge/MAPED/TIMER.C new file: 16/v2/source/verge/MAPED/TIMER.H new file: 16/v2/source/verge/MAPED/VDRIVER.C new file: 16/v2/source/verge/MAPED/VDRIVER.H new file: 16/v2/source/verge/MAPED/VERGEPAL.H new file: 16/v2/source/verge/README.TXT new file: 16/v2/source/verge/UTIL/CHRCONV/CHRCONV.C new file: 16/v2/source/verge/UTIL/CHRCONV/CHRCONV.TXT new file: 16/v2/source/verge/UTIL/CHRCONV/DARIN.CHR new file: 16/v2/source/verge/UTIL/CHRCONV/MAKEDJ.BAT new file: 16/v2/source/verge/UTIL/CHRMAK/CHRMAK.CC new file: 16/v2/source/verge/UTIL/CHRMAK/CHRMAK.TXT new file: 16/v2/source/verge/UTIL/CHRMAK/MAKEDJ.BAT new file: 16/v2/source/verge/UTIL/CHRMAK/MAKEWAT.BAT new file: 16/v2/source/verge/UTIL/CHRMAK/VECNA.MAK new file: 16/v2/source/verge/UTIL/CHRMAK/VECNA.PCX new file: 16/v2/source/verge/UTIL/CHRMAK/VER new file: 16/v2/source/verge/UTIL/PACK/MAKEDJ.BAT new file: 16/v2/source/verge/UTIL/PACK/PACK.C new file: 16/v2/source/verge/UTIL/PACK/PACK.TXT new file: 16/v2/source/verge/UTIL/PACK/TEST new file: 16/v2/source/verge/UTIL/PACK/TODO new file: 16/v2/source/verge/UTIL/PCX2FNT/FONT0.PCX new file: 16/v2/source/verge/UTIL/PCX2FNT/FONT02B.PCX new file: 16/v2/source/verge/UTIL/PCX2FNT/MAKEDJ.BAT new file: 16/v2/source/verge/UTIL/PCX2FNT/PCX2FNT.C new file: 16/v2/source/verge/UTIL/PCX2FNT/PCX2FNT.TXT new file: 16/v2/source/verge/UTIL/TRANS/MAKEDJ.BAT new file: 16/v2/source/verge/UTIL/TRANS/SULLY.PDF new file: 16/v2/source/verge/UTIL/TRANS/TRANS.C new file: 16/v2/source/verge/UTIL/TRANS/TRANS.TXT new file: 16/v2/source/verge/UTIL/TRANS/TYRIAN.PDF new file: 16/v2/source/verge/UTIL/TRANS/TYRPAL.PCX new file: 16/v2/source/verge/UTIL/TRANS/VERGE.PDF new file: 16/v2/source/verge/UTIL/UNPACK/MAKEDJ.BAT new file: 16/v2/source/verge/UTIL/UNPACK/TEST new file: 16/v2/source/verge/UTIL/UNPACK/TODO new file: 16/v2/source/verge/UTIL/UNPACK/UNPACK.C new file: 16/v2/source/verge/UTIL/UNPACK/UNPACK.TXT new file: 16/v2/source/verge/VCC/CLEAN.BAT new file: 16/v2/source/verge/VCC/CODE.H new file: 16/v2/source/verge/VCC/COMPILE.C new file: 16/v2/source/verge/VCC/COMPILE.H new file: 16/v2/source/verge/VCC/FUNCLIB.C new file: 16/v2/source/verge/VCC/FUNCLIB.H new file: 16/v2/source/verge/VCC/LEXICAL.C new file: 16/v2/source/verge/VCC/LEXICAL.H new file: 16/v2/source/verge/VCC/MAKEDJ.BAT new file: 16/v2/source/verge/VCC/PREPROC.C new file: 16/v2/source/verge/VCC/PREPROC.H new file: 16/v2/source/verge/VCC/VCC.C new file: 16/v2/source/verge/VCC/VCC.H new file: 16/v2/source/verge/VCC/VCCODE.H new file: 16/v2/source/verge/gnu.txt new file: 16/v2/template/NULL.VSP new file: 16/v2/template/SYSTEM.IDX new file: 16/v2/template/SYSTEM.VCS new file: 16/v2/template/TRANS.TBL new file: 16/v2/template/USER.CFG new file: 16/v2/template/VECNA.CHR new file: 16/v2/template/VERGE.EXE new file: 16/v2/template/VERGE.LOG new file: 16/v2/template/console.gif new file: 16/v2/template/start.map new file: 16/v2/template/start.vc new file: 16/v2/template/system.fnt new file: 16/v2/template/system.vc new file: 16/v2/template/text.fnt new file: 16/v2/util/CHRCONV.EXE new file: 16/v2/util/CHRCONV.TXT new file: 16/v2/util/CHRMAK.EXE new file: 16/v2/util/CHRMAK.TXT new file: 16/v2/util/PACK.EXE new file: 16/v2/util/PACK.TXT new file: 16/v2/util/PCX2FNT.EXE new file: 16/v2/util/PCX2FNT.TXT new file: 16/v2/util/TRANS.EXE new file: 16/v2/util/TRANS.TXT new file: 16/v2/util/UNPACK.EXE new file: 16/v2/util/UNPACK.TXT modified: Project 16.bfproject modified: scroll.c modified: scroll.exe --- 16/v2/CONSOLE.TXT | 188 + 16/v2/MAPED.CFG | 37 + 16/v2/MAPED.EXE | Bin 0 -> 237873 bytes 16/v2/MAPED2.TXT | 499 ++ 16/v2/V2A10_27.ZIP | Bin 0 -> 1269006 bytes 16/v2/V2T5_9.ZIP | Bin 0 -> 421149 bytes 16/v2/V2U5_9.ZIP | Bin 0 -> 169329 bytes 16/v2/VCC.EXE | Bin 0 -> 62204 bytes 16/v2/VERGE.EXE | Bin 0 -> 113712 bytes 16/v2/VERGEC.TXT | 1625 ++++++ 16/v2/contents.txt | 5 + 16/v2/source/ENGINE/AUDIO.H | 340 ++ 16/v2/source/ENGINE/A_MEMORY.C | 201 + 16/v2/source/ENGINE/A_MEMORY.H | 41 + 16/v2/source/ENGINE/CONLIB.C | 285 ++ 16/v2/source/ENGINE/CONLIB.H | 46 + 16/v2/source/ENGINE/CONSOLE.C | 455 ++ 16/v2/source/ENGINE/CONSOLE.H | 61 + 16/v2/source/ENGINE/CONTROLS.C | 105 + 16/v2/source/ENGINE/CONTROLS.H | 29 + 16/v2/source/ENGINE/ENGINE.C | 746 +++ 16/v2/source/ENGINE/ENGINE.H | 106 + 16/v2/source/ENGINE/ENTITY.C | 716 +++ 16/v2/source/ENGINE/ENTITY.H | 88 + 16/v2/source/ENGINE/FLI.C | 702 +++ 16/v2/source/ENGINE/FLI.H | 28 + 16/v2/source/ENGINE/FONT.C | 103 + 16/v2/source/ENGINE/FONT.H | 37 + 16/v2/source/ENGINE/IMAGE.C | 709 +++ 16/v2/source/ENGINE/IMAGE.H | 25 + 16/v2/source/ENGINE/INTER.H | 41 + 16/v2/source/ENGINE/KEYBOARD.H | 115 + 16/v2/source/ENGINE/KEYBOARD.S | 227 + 16/v2/source/ENGINE/MAIN.H | 42 + 16/v2/source/ENGINE/MAKEFILE | 7 + 16/v2/source/ENGINE/MESSAGE.C | 110 + 16/v2/source/ENGINE/MESSAGE.H | 24 + 16/v2/source/ENGINE/MIKMOD.A | Bin 0 -> 96814 bytes 16/v2/source/ENGINE/MIKMOD.C | 310 ++ 16/v2/source/ENGINE/MIKMOD.H | 580 +++ 16/v2/source/ENGINE/MODE13H.C | 881 ++++ 16/v2/source/ENGINE/MODEINIT.C | 432 ++ 16/v2/source/ENGINE/MODEX.C | 1055 ++++ 16/v2/source/ENGINE/MTYPES.H | 73 + 16/v2/source/ENGINE/PCX.H | 32 + 16/v2/source/ENGINE/RENDER.C | 291 ++ 16/v2/source/ENGINE/RENDER.H | 27 + 16/v2/source/ENGINE/SINCOS.H | 1106 ++++ 16/v2/source/ENGINE/SOUND.C | 113 + 16/v2/source/ENGINE/SOUND.H | 27 + 16/v2/source/ENGINE/STARTUP.C | 123 + 16/v2/source/ENGINE/TIMER.C | 141 + 16/v2/source/ENGINE/TIMER.H | 26 + 16/v2/source/ENGINE/VC.C | 2242 ++++++++ 16/v2/source/ENGINE/VC.H | 56 + 16/v2/source/ENGINE/VCCODE.H | 111 + 16/v2/source/ENGINE/VDRIVER.C | 2814 +++++++++++ 16/v2/source/ENGINE/VDRIVER.H | 140 + 16/v2/source/ENGINE/VERGE.C | 325 ++ 16/v2/source/ENGINE/VERGE.H | 55 + 16/v2/source/ENGINE/VESA.C | 776 +++ 16/v2/source/ENGINE/VFILE.C | 269 + 16/v2/source/ENGINE/VFILE.H | 65 + 16/v2/source/MAPED/A_MEMORY.C | 211 + 16/v2/source/MAPED/COLBAK.H | 4946 ++++++++++++++++++ 16/v2/source/MAPED/COLSTUFF.H | 269 + 16/v2/source/MAPED/COLUMNS.C | 420 ++ 16/v2/source/MAPED/COLUMNS.H | 34 + 16/v2/source/MAPED/CONFIG.C | 200 + 16/v2/source/MAPED/CONFIG.H | 28 + 16/v2/source/MAPED/CONTROLS.C | 837 +++ 16/v2/source/MAPED/GUI.C | 5062 +++++++++++++++++++ 16/v2/source/MAPED/GUI.H | 64 + 16/v2/source/MAPED/GUICOMP.C | 137 + 16/v2/source/MAPED/GUICOMP.H | 29 + 16/v2/source/MAPED/INTER.H | 38 + 16/v2/source/MAPED/KEYBOARD.C | 84 + 16/v2/source/MAPED/KEYBOARD.H | 115 + 16/v2/source/MAPED/MAKEFILE | 32 + 16/v2/source/MAPED/MAPED.C | 1624 ++++++ 16/v2/source/MAPED/MAPED.H | 180 + 16/v2/source/MAPED/MIKMOD.C | 311 ++ 16/v2/source/MAPED/MIKMOD.H | 580 +++ 16/v2/source/MAPED/MIKMOD.LIB | Bin 0 -> 94720 bytes 16/v2/source/MAPED/MINIMAP.C | 151 + 16/v2/source/MAPED/MINIMAP.H | 24 + 16/v2/source/MAPED/MODE13H.C | 350 ++ 16/v2/source/MAPED/MODE13H.H | 36 + 16/v2/source/MAPED/MODEX.C | 404 ++ 16/v2/source/MAPED/MODEX.H | 35 + 16/v2/source/MAPED/MOUSE.C | 94 + 16/v2/source/MAPED/MOUSE.H | 30 + 16/v2/source/MAPED/MTYPES.H | 73 + 16/v2/source/MAPED/PCX.C | 210 + 16/v2/source/MAPED/RENDER.C | 475 ++ 16/v2/source/MAPED/RENDER.H | 56 + 16/v2/source/MAPED/SMALFONT.C | 655 +++ 16/v2/source/MAPED/SMALFONT.H | 30 + 16/v2/source/MAPED/SSAVER.C | 136 + 16/v2/source/MAPED/SSAVER.H | 22 + 16/v2/source/MAPED/SSAVER1.C | 32 + 16/v2/source/MAPED/TILEED.C | 2164 ++++++++ 16/v2/source/MAPED/TILEED.H | 34 + 16/v2/source/MAPED/TILESEL.C | 1448 ++++++ 16/v2/source/MAPED/TILESEL.H | 47 + 16/v2/source/MAPED/TIMER.C | 118 + 16/v2/source/MAPED/TIMER.H | 29 + 16/v2/source/MAPED/VDRIVER.C | 105 + 16/v2/source/MAPED/VDRIVER.H | 49 + 16/v2/source/MAPED/VERGEPAL.H | 82 + 16/v2/source/README.TXT | 40 + 16/v2/source/UTIL/CHRCONV/CHRCONV.C | 125 + 16/v2/source/UTIL/CHRCONV/CHRCONV.TXT | 15 + 16/v2/source/UTIL/CHRCONV/DARIN.CHR | Bin 0 -> 15360 bytes 16/v2/source/UTIL/CHRCONV/MAKEDJ.BAT | 2 + 16/v2/source/UTIL/CHRMAK/CHRMAK.CC | 653 +++ 16/v2/source/UTIL/CHRMAK/CHRMAK.TXT | 118 + 16/v2/source/UTIL/CHRMAK/MAKEDJ.BAT | 2 + 16/v2/source/UTIL/CHRMAK/MAKEWAT.BAT | 2 + 16/v2/source/UTIL/CHRMAK/VECNA.MAK | 21 + 16/v2/source/UTIL/CHRMAK/VECNA.PCX | Bin 0 -> 15740 bytes 16/v2/source/UTIL/CHRMAK/VER | 4 + 16/v2/source/UTIL/PACK/MAKEDJ.BAT | 2 + 16/v2/source/UTIL/PACK/PACK.C | 166 + 16/v2/source/UTIL/PACK/PACK.TXT | 36 + 16/v2/source/UTIL/PACK/TEST | 5 + 16/v2/source/UTIL/PACK/TODO | 3 + 16/v2/source/UTIL/PCX2FNT/FONT0.PCX | Bin 0 -> 11576 bytes 16/v2/source/UTIL/PCX2FNT/FONT02B.PCX | Bin 0 -> 21809 bytes 16/v2/source/UTIL/PCX2FNT/MAKEDJ.BAT | 2 + 16/v2/source/UTIL/PCX2FNT/PCX2FNT.C | 147 + 16/v2/source/UTIL/PCX2FNT/PCX2FNT.TXT | 15 + 16/v2/source/UTIL/TRANS/MAKEDJ.BAT | 2 + 16/v2/source/UTIL/TRANS/SULLY.PDF | 19 + 16/v2/source/UTIL/TRANS/TRANS.C | 156 + 16/v2/source/UTIL/TRANS/TRANS.TXT | 32 + 16/v2/source/UTIL/TRANS/TYRIAN.PDF | 17 + 16/v2/source/UTIL/TRANS/TYRPAL.PCX | Bin 0 -> 13450 bytes 16/v2/source/UTIL/TRANS/VERGE.PDF | 17 + 16/v2/source/UTIL/UNPACK/MAKEDJ.BAT | 2 + 16/v2/source/UTIL/UNPACK/TEST | 5 + 16/v2/source/UTIL/UNPACK/TODO | 3 + 16/v2/source/UTIL/UNPACK/UNPACK.C | 122 + 16/v2/source/UTIL/UNPACK/UNPACK.TXT | 13 + 16/v2/source/VCC/CLEAN.BAT | 4 + 16/v2/source/VCC/CODE.H | 70 + 16/v2/source/VCC/COMPILE.C | 1256 +++++ 16/v2/source/VCC/COMPILE.H | 80 + 16/v2/source/VCC/FUNCLIB.C | 445 ++ 16/v2/source/VCC/FUNCLIB.H | 54 + 16/v2/source/VCC/LEXICAL.C | 676 +++ 16/v2/source/VCC/LEXICAL.H | 47 + 16/v2/source/VCC/MAKEDJ.BAT | 7 + 16/v2/source/VCC/PREPROC.C | 799 +++ 16/v2/source/VCC/PREPROC.H | 23 + 16/v2/source/VCC/VCC.C | 342 ++ 16/v2/source/VCC/VCC.H | 38 + 16/v2/source/VCC/VCCODE.H | 111 + 16/v2/source/archives/V2GPL.ZIP | Bin 0 -> 419526 bytes 16/v2/source/gnu.txt | 87 + 16/v2/source/verge/ENGINE/AUDIO.H | 340 ++ 16/v2/source/verge/ENGINE/A_MEMORY.C | 201 + 16/v2/source/verge/ENGINE/A_MEMORY.H | 41 + 16/v2/source/verge/ENGINE/CONLIB.C | 285 ++ 16/v2/source/verge/ENGINE/CONLIB.H | 46 + 16/v2/source/verge/ENGINE/CONSOLE.C | 455 ++ 16/v2/source/verge/ENGINE/CONSOLE.H | 61 + 16/v2/source/verge/ENGINE/CONTROLS.C | 105 + 16/v2/source/verge/ENGINE/CONTROLS.H | 29 + 16/v2/source/verge/ENGINE/ENGINE.C | 746 +++ 16/v2/source/verge/ENGINE/ENGINE.H | 106 + 16/v2/source/verge/ENGINE/ENTITY.C | 716 +++ 16/v2/source/verge/ENGINE/ENTITY.H | 88 + 16/v2/source/verge/ENGINE/FLI.C | 702 +++ 16/v2/source/verge/ENGINE/FLI.H | 28 + 16/v2/source/verge/ENGINE/FONT.C | 103 + 16/v2/source/verge/ENGINE/FONT.H | 37 + 16/v2/source/verge/ENGINE/IMAGE.C | 709 +++ 16/v2/source/verge/ENGINE/IMAGE.H | 25 + 16/v2/source/verge/ENGINE/INTER.H | 41 + 16/v2/source/verge/ENGINE/KEYBOARD.H | 115 + 16/v2/source/verge/ENGINE/KEYBOARD.S | 227 + 16/v2/source/verge/ENGINE/MAIN.H | 42 + 16/v2/source/verge/ENGINE/MAKEFILE | 7 + 16/v2/source/verge/ENGINE/MESSAGE.C | 110 + 16/v2/source/verge/ENGINE/MESSAGE.H | 24 + 16/v2/source/verge/ENGINE/MIKMOD.A | Bin 0 -> 96814 bytes 16/v2/source/verge/ENGINE/MIKMOD.C | 310 ++ 16/v2/source/verge/ENGINE/MIKMOD.H | 580 +++ 16/v2/source/verge/ENGINE/MODE13H.C | 881 ++++ 16/v2/source/verge/ENGINE/MODEINIT.C | 432 ++ 16/v2/source/verge/ENGINE/MODEX.C | 1055 ++++ 16/v2/source/verge/ENGINE/MTYPES.H | 73 + 16/v2/source/verge/ENGINE/PCX.H | 32 + 16/v2/source/verge/ENGINE/RENDER.C | 291 ++ 16/v2/source/verge/ENGINE/RENDER.H | 27 + 16/v2/source/verge/ENGINE/SINCOS.H | 1106 ++++ 16/v2/source/verge/ENGINE/SOUND.C | 113 + 16/v2/source/verge/ENGINE/SOUND.H | 27 + 16/v2/source/verge/ENGINE/STARTUP.C | 123 + 16/v2/source/verge/ENGINE/TIMER.C | 141 + 16/v2/source/verge/ENGINE/TIMER.H | 26 + 16/v2/source/verge/ENGINE/VC.C | 2242 ++++++++ 16/v2/source/verge/ENGINE/VC.H | 56 + 16/v2/source/verge/ENGINE/VCCODE.H | 111 + 16/v2/source/verge/ENGINE/VDRIVER.C | 2814 +++++++++++ 16/v2/source/verge/ENGINE/VDRIVER.H | 140 + 16/v2/source/verge/ENGINE/VERGE.C | 325 ++ 16/v2/source/verge/ENGINE/VERGE.H | 55 + 16/v2/source/verge/ENGINE/VESA.C | 776 +++ 16/v2/source/verge/ENGINE/VFILE.C | 269 + 16/v2/source/verge/ENGINE/VFILE.H | 65 + 16/v2/source/verge/MAPED/A_MEMORY.C | 211 + 16/v2/source/verge/MAPED/COLBAK.H | 4946 ++++++++++++++++++ 16/v2/source/verge/MAPED/COLSTUFF.H | 269 + 16/v2/source/verge/MAPED/COLUMNS.C | 420 ++ 16/v2/source/verge/MAPED/COLUMNS.H | 34 + 16/v2/source/verge/MAPED/CONFIG.C | 200 + 16/v2/source/verge/MAPED/CONFIG.H | 28 + 16/v2/source/verge/MAPED/CONTROLS.C | 837 +++ 16/v2/source/verge/MAPED/GUI.C | 5062 +++++++++++++++++++ 16/v2/source/verge/MAPED/GUI.H | 64 + 16/v2/source/verge/MAPED/GUICOMP.C | 137 + 16/v2/source/verge/MAPED/GUICOMP.H | 29 + 16/v2/source/verge/MAPED/INTER.H | 38 + 16/v2/source/verge/MAPED/KEYBOARD.C | 84 + 16/v2/source/verge/MAPED/KEYBOARD.H | 115 + 16/v2/source/verge/MAPED/MAKEFILE | 32 + 16/v2/source/verge/MAPED/MAPED.C | 1624 ++++++ 16/v2/source/verge/MAPED/MAPED.H | 180 + 16/v2/source/verge/MAPED/MIKMOD.C | 311 ++ 16/v2/source/verge/MAPED/MIKMOD.H | 580 +++ 16/v2/source/verge/MAPED/MIKMOD.LIB | Bin 0 -> 94720 bytes 16/v2/source/verge/MAPED/MINIMAP.C | 151 + 16/v2/source/verge/MAPED/MINIMAP.H | 24 + 16/v2/source/verge/MAPED/MODE13H.C | 350 ++ 16/v2/source/verge/MAPED/MODE13H.H | 36 + 16/v2/source/verge/MAPED/MODEX.C | 404 ++ 16/v2/source/verge/MAPED/MODEX.H | 35 + 16/v2/source/verge/MAPED/MOUSE.C | 94 + 16/v2/source/verge/MAPED/MOUSE.H | 30 + 16/v2/source/verge/MAPED/MTYPES.H | 73 + 16/v2/source/verge/MAPED/PCX.C | 210 + 16/v2/source/verge/MAPED/RENDER.C | 475 ++ 16/v2/source/verge/MAPED/RENDER.H | 56 + 16/v2/source/verge/MAPED/SMALFONT.C | 655 +++ 16/v2/source/verge/MAPED/SMALFONT.H | 30 + 16/v2/source/verge/MAPED/SSAVER.C | 136 + 16/v2/source/verge/MAPED/SSAVER.H | 22 + 16/v2/source/verge/MAPED/SSAVER1.C | 32 + 16/v2/source/verge/MAPED/TILEED.C | 2164 ++++++++ 16/v2/source/verge/MAPED/TILEED.H | 34 + 16/v2/source/verge/MAPED/TILESEL.C | 1448 ++++++ 16/v2/source/verge/MAPED/TILESEL.H | 47 + 16/v2/source/verge/MAPED/TIMER.C | 118 + 16/v2/source/verge/MAPED/TIMER.H | 29 + 16/v2/source/verge/MAPED/VDRIVER.C | 105 + 16/v2/source/verge/MAPED/VDRIVER.H | 49 + 16/v2/source/verge/MAPED/VERGEPAL.H | 82 + 16/v2/source/verge/README.TXT | 40 + 16/v2/source/verge/UTIL/CHRCONV/CHRCONV.C | 125 + 16/v2/source/verge/UTIL/CHRCONV/CHRCONV.TXT | 15 + 16/v2/source/verge/UTIL/CHRCONV/DARIN.CHR | Bin 0 -> 15360 bytes 16/v2/source/verge/UTIL/CHRCONV/MAKEDJ.BAT | 2 + 16/v2/source/verge/UTIL/CHRMAK/CHRMAK.CC | 653 +++ 16/v2/source/verge/UTIL/CHRMAK/CHRMAK.TXT | 118 + 16/v2/source/verge/UTIL/CHRMAK/MAKEDJ.BAT | 2 + 16/v2/source/verge/UTIL/CHRMAK/MAKEWAT.BAT | 2 + 16/v2/source/verge/UTIL/CHRMAK/VECNA.MAK | 21 + 16/v2/source/verge/UTIL/CHRMAK/VECNA.PCX | Bin 0 -> 15740 bytes 16/v2/source/verge/UTIL/CHRMAK/VER | 4 + 16/v2/source/verge/UTIL/PACK/MAKEDJ.BAT | 2 + 16/v2/source/verge/UTIL/PACK/PACK.C | 166 + 16/v2/source/verge/UTIL/PACK/PACK.TXT | 36 + 16/v2/source/verge/UTIL/PACK/TEST | 5 + 16/v2/source/verge/UTIL/PACK/TODO | 3 + 16/v2/source/verge/UTIL/PCX2FNT/FONT0.PCX | Bin 0 -> 11576 bytes 16/v2/source/verge/UTIL/PCX2FNT/FONT02B.PCX | Bin 0 -> 21809 bytes 16/v2/source/verge/UTIL/PCX2FNT/MAKEDJ.BAT | 2 + 16/v2/source/verge/UTIL/PCX2FNT/PCX2FNT.C | 147 + 16/v2/source/verge/UTIL/PCX2FNT/PCX2FNT.TXT | 15 + 16/v2/source/verge/UTIL/TRANS/MAKEDJ.BAT | 2 + 16/v2/source/verge/UTIL/TRANS/SULLY.PDF | 19 + 16/v2/source/verge/UTIL/TRANS/TRANS.C | 156 + 16/v2/source/verge/UTIL/TRANS/TRANS.TXT | 32 + 16/v2/source/verge/UTIL/TRANS/TYRIAN.PDF | 17 + 16/v2/source/verge/UTIL/TRANS/TYRPAL.PCX | Bin 0 -> 13450 bytes 16/v2/source/verge/UTIL/TRANS/VERGE.PDF | 17 + 16/v2/source/verge/UTIL/UNPACK/MAKEDJ.BAT | 2 + 16/v2/source/verge/UTIL/UNPACK/TEST | 5 + 16/v2/source/verge/UTIL/UNPACK/TODO | 3 + 16/v2/source/verge/UTIL/UNPACK/UNPACK.C | 122 + 16/v2/source/verge/UTIL/UNPACK/UNPACK.TXT | 13 + 16/v2/source/verge/VCC/CLEAN.BAT | 4 + 16/v2/source/verge/VCC/CODE.H | 70 + 16/v2/source/verge/VCC/COMPILE.C | 1256 +++++ 16/v2/source/verge/VCC/COMPILE.H | 80 + 16/v2/source/verge/VCC/FUNCLIB.C | 445 ++ 16/v2/source/verge/VCC/FUNCLIB.H | 54 + 16/v2/source/verge/VCC/LEXICAL.C | 676 +++ 16/v2/source/verge/VCC/LEXICAL.H | 47 + 16/v2/source/verge/VCC/MAKEDJ.BAT | 7 + 16/v2/source/verge/VCC/PREPROC.C | 799 +++ 16/v2/source/verge/VCC/PREPROC.H | 23 + 16/v2/source/verge/VCC/VCC.C | 342 ++ 16/v2/source/verge/VCC/VCC.H | 38 + 16/v2/source/verge/VCC/VCCODE.H | 111 + 16/v2/source/verge/gnu.txt | 87 + 16/v2/template/NULL.VSP | Bin 0 -> 6397 bytes 16/v2/template/SYSTEM.IDX | Bin 0 -> 12 bytes 16/v2/template/SYSTEM.VCS | Bin 0 -> 13 bytes 16/v2/template/TRANS.TBL | Bin 0 -> 65536 bytes 16/v2/template/USER.CFG | 5 + 16/v2/template/VECNA.CHR | Bin 0 -> 12725 bytes 16/v2/template/VERGE.EXE | Bin 0 -> 113712 bytes 16/v2/template/VERGE.LOG | 10 + 16/v2/template/console.gif | Bin 0 -> 20557 bytes 16/v2/template/start.map | Bin 0 -> 930 bytes 16/v2/template/start.vc | 7 + 16/v2/template/system.fnt | Bin 0 -> 18439 bytes 16/v2/template/system.vc | 0 16/v2/template/text.fnt | Bin 0 -> 13831 bytes 16/v2/util/CHRCONV.EXE | Bin 0 -> 44184 bytes 16/v2/util/CHRCONV.TXT | 15 + 16/v2/util/CHRMAK.EXE | Bin 0 -> 68608 bytes 16/v2/util/CHRMAK.TXT | 118 + 16/v2/util/PACK.EXE | Bin 0 -> 46744 bytes 16/v2/util/PACK.TXT | 36 + 16/v2/util/PCX2FNT.EXE | Bin 0 -> 45720 bytes 16/v2/util/PCX2FNT.TXT | 15 + 16/v2/util/TRANS.EXE | Bin 0 -> 45208 bytes 16/v2/util/TRANS.TXT | 32 + 16/v2/util/UNPACK.EXE | Bin 0 -> 39576 bytes 16/v2/util/UNPACK.TXT | 13 + Project 16.bfproject | 31 +- scroll.c | 16 +- scroll.exe | Bin 47592 -> 47592 bytes 337 files changed, 93294 insertions(+), 26 deletions(-) create mode 100644 16/v2/CONSOLE.TXT create mode 100644 16/v2/MAPED.CFG create mode 100644 16/v2/MAPED.EXE create mode 100644 16/v2/MAPED2.TXT create mode 100644 16/v2/V2A10_27.ZIP create mode 100644 16/v2/V2T5_9.ZIP create mode 100644 16/v2/V2U5_9.ZIP create mode 100644 16/v2/VCC.EXE create mode 100644 16/v2/VERGE.EXE create mode 100644 16/v2/VERGEC.TXT create mode 100644 16/v2/contents.txt create mode 100644 16/v2/source/ENGINE/AUDIO.H create mode 100644 16/v2/source/ENGINE/A_MEMORY.C create mode 100644 16/v2/source/ENGINE/A_MEMORY.H create mode 100644 16/v2/source/ENGINE/CONLIB.C create mode 100644 16/v2/source/ENGINE/CONLIB.H create mode 100644 16/v2/source/ENGINE/CONSOLE.C create mode 100644 16/v2/source/ENGINE/CONSOLE.H create mode 100644 16/v2/source/ENGINE/CONTROLS.C create mode 100644 16/v2/source/ENGINE/CONTROLS.H create mode 100644 16/v2/source/ENGINE/ENGINE.C create mode 100644 16/v2/source/ENGINE/ENGINE.H create mode 100644 16/v2/source/ENGINE/ENTITY.C create mode 100644 16/v2/source/ENGINE/ENTITY.H create mode 100644 16/v2/source/ENGINE/FLI.C create mode 100644 16/v2/source/ENGINE/FLI.H create mode 100644 16/v2/source/ENGINE/FONT.C create mode 100644 16/v2/source/ENGINE/FONT.H create mode 100644 16/v2/source/ENGINE/IMAGE.C create mode 100644 16/v2/source/ENGINE/IMAGE.H create mode 100644 16/v2/source/ENGINE/INTER.H create mode 100644 16/v2/source/ENGINE/KEYBOARD.H create mode 100644 16/v2/source/ENGINE/KEYBOARD.S create mode 100644 16/v2/source/ENGINE/MAIN.H create mode 100644 16/v2/source/ENGINE/MAKEFILE create mode 100644 16/v2/source/ENGINE/MESSAGE.C create mode 100644 16/v2/source/ENGINE/MESSAGE.H create mode 100644 16/v2/source/ENGINE/MIKMOD.A create mode 100644 16/v2/source/ENGINE/MIKMOD.C create mode 100644 16/v2/source/ENGINE/MIKMOD.H create mode 100644 16/v2/source/ENGINE/MODE13H.C create mode 100644 16/v2/source/ENGINE/MODEINIT.C create mode 100644 16/v2/source/ENGINE/MODEX.C create mode 100644 16/v2/source/ENGINE/MTYPES.H create mode 100644 16/v2/source/ENGINE/PCX.H create mode 100644 16/v2/source/ENGINE/RENDER.C create mode 100644 16/v2/source/ENGINE/RENDER.H create mode 100644 16/v2/source/ENGINE/SINCOS.H create mode 100644 16/v2/source/ENGINE/SOUND.C create mode 100644 16/v2/source/ENGINE/SOUND.H create mode 100644 16/v2/source/ENGINE/STARTUP.C create mode 100644 16/v2/source/ENGINE/TIMER.C create mode 100644 16/v2/source/ENGINE/TIMER.H create mode 100644 16/v2/source/ENGINE/VC.C create mode 100644 16/v2/source/ENGINE/VC.H create mode 100644 16/v2/source/ENGINE/VCCODE.H create mode 100644 16/v2/source/ENGINE/VDRIVER.C create mode 100644 16/v2/source/ENGINE/VDRIVER.H create mode 100644 16/v2/source/ENGINE/VERGE.C create mode 100644 16/v2/source/ENGINE/VERGE.H create mode 100644 16/v2/source/ENGINE/VESA.C create mode 100644 16/v2/source/ENGINE/VFILE.C create mode 100644 16/v2/source/ENGINE/VFILE.H create mode 100644 16/v2/source/MAPED/A_MEMORY.C create mode 100644 16/v2/source/MAPED/COLBAK.H create mode 100644 16/v2/source/MAPED/COLSTUFF.H create mode 100644 16/v2/source/MAPED/COLUMNS.C create mode 100644 16/v2/source/MAPED/COLUMNS.H create mode 100644 16/v2/source/MAPED/CONFIG.C create mode 100644 16/v2/source/MAPED/CONFIG.H create mode 100644 16/v2/source/MAPED/CONTROLS.C create mode 100644 16/v2/source/MAPED/GUI.C create mode 100644 16/v2/source/MAPED/GUI.H create mode 100644 16/v2/source/MAPED/GUICOMP.C create mode 100644 16/v2/source/MAPED/GUICOMP.H create mode 100644 16/v2/source/MAPED/INTER.H create mode 100644 16/v2/source/MAPED/KEYBOARD.C create mode 100644 16/v2/source/MAPED/KEYBOARD.H create mode 100644 16/v2/source/MAPED/MAKEFILE create mode 100644 16/v2/source/MAPED/MAPED.C create mode 100644 16/v2/source/MAPED/MAPED.H create mode 100644 16/v2/source/MAPED/MIKMOD.C create mode 100644 16/v2/source/MAPED/MIKMOD.H create mode 100644 16/v2/source/MAPED/MIKMOD.LIB create mode 100644 16/v2/source/MAPED/MINIMAP.C create mode 100644 16/v2/source/MAPED/MINIMAP.H create mode 100644 16/v2/source/MAPED/MODE13H.C create mode 100644 16/v2/source/MAPED/MODE13H.H create mode 100644 16/v2/source/MAPED/MODEX.C create mode 100644 16/v2/source/MAPED/MODEX.H create mode 100644 16/v2/source/MAPED/MOUSE.C create mode 100644 16/v2/source/MAPED/MOUSE.H create mode 100644 16/v2/source/MAPED/MTYPES.H create mode 100644 16/v2/source/MAPED/PCX.C create mode 100644 16/v2/source/MAPED/RENDER.C create mode 100644 16/v2/source/MAPED/RENDER.H create mode 100644 16/v2/source/MAPED/SMALFONT.C create mode 100644 16/v2/source/MAPED/SMALFONT.H create mode 100644 16/v2/source/MAPED/SSAVER.C create mode 100644 16/v2/source/MAPED/SSAVER.H create mode 100644 16/v2/source/MAPED/SSAVER1.C create mode 100644 16/v2/source/MAPED/TILEED.C create mode 100644 16/v2/source/MAPED/TILEED.H create mode 100644 16/v2/source/MAPED/TILESEL.C create mode 100644 16/v2/source/MAPED/TILESEL.H create mode 100644 16/v2/source/MAPED/TIMER.C create mode 100644 16/v2/source/MAPED/TIMER.H create mode 100644 16/v2/source/MAPED/VDRIVER.C create mode 100644 16/v2/source/MAPED/VDRIVER.H create mode 100644 16/v2/source/MAPED/VERGEPAL.H create mode 100644 16/v2/source/README.TXT create mode 100644 16/v2/source/UTIL/CHRCONV/CHRCONV.C create mode 100644 16/v2/source/UTIL/CHRCONV/CHRCONV.TXT create mode 100644 16/v2/source/UTIL/CHRCONV/DARIN.CHR create mode 100644 16/v2/source/UTIL/CHRCONV/MAKEDJ.BAT create mode 100644 16/v2/source/UTIL/CHRMAK/CHRMAK.CC create mode 100644 16/v2/source/UTIL/CHRMAK/CHRMAK.TXT create mode 100644 16/v2/source/UTIL/CHRMAK/MAKEDJ.BAT create mode 100644 16/v2/source/UTIL/CHRMAK/MAKEWAT.BAT create mode 100644 16/v2/source/UTIL/CHRMAK/VECNA.MAK create mode 100644 16/v2/source/UTIL/CHRMAK/VECNA.PCX create mode 100644 16/v2/source/UTIL/CHRMAK/VER create mode 100644 16/v2/source/UTIL/PACK/MAKEDJ.BAT create mode 100644 16/v2/source/UTIL/PACK/PACK.C create mode 100644 16/v2/source/UTIL/PACK/PACK.TXT create mode 100644 16/v2/source/UTIL/PACK/TEST create mode 100644 16/v2/source/UTIL/PACK/TODO create mode 100644 16/v2/source/UTIL/PCX2FNT/FONT0.PCX create mode 100644 16/v2/source/UTIL/PCX2FNT/FONT02B.PCX create mode 100644 16/v2/source/UTIL/PCX2FNT/MAKEDJ.BAT create mode 100644 16/v2/source/UTIL/PCX2FNT/PCX2FNT.C create mode 100644 16/v2/source/UTIL/PCX2FNT/PCX2FNT.TXT create mode 100644 16/v2/source/UTIL/TRANS/MAKEDJ.BAT create mode 100644 16/v2/source/UTIL/TRANS/SULLY.PDF create mode 100644 16/v2/source/UTIL/TRANS/TRANS.C create mode 100644 16/v2/source/UTIL/TRANS/TRANS.TXT create mode 100644 16/v2/source/UTIL/TRANS/TYRIAN.PDF create mode 100644 16/v2/source/UTIL/TRANS/TYRPAL.PCX create mode 100644 16/v2/source/UTIL/TRANS/VERGE.PDF create mode 100644 16/v2/source/UTIL/UNPACK/MAKEDJ.BAT create mode 100644 16/v2/source/UTIL/UNPACK/TEST create mode 100644 16/v2/source/UTIL/UNPACK/TODO create mode 100644 16/v2/source/UTIL/UNPACK/UNPACK.C create mode 100644 16/v2/source/UTIL/UNPACK/UNPACK.TXT create mode 100644 16/v2/source/VCC/CLEAN.BAT create mode 100644 16/v2/source/VCC/CODE.H create mode 100644 16/v2/source/VCC/COMPILE.C create mode 100644 16/v2/source/VCC/COMPILE.H create mode 100644 16/v2/source/VCC/FUNCLIB.C create mode 100644 16/v2/source/VCC/FUNCLIB.H create mode 100644 16/v2/source/VCC/LEXICAL.C create mode 100644 16/v2/source/VCC/LEXICAL.H create mode 100644 16/v2/source/VCC/MAKEDJ.BAT create mode 100644 16/v2/source/VCC/PREPROC.C create mode 100644 16/v2/source/VCC/PREPROC.H create mode 100644 16/v2/source/VCC/VCC.C create mode 100644 16/v2/source/VCC/VCC.H create mode 100644 16/v2/source/VCC/VCCODE.H create mode 100644 16/v2/source/archives/V2GPL.ZIP create mode 100644 16/v2/source/gnu.txt create mode 100644 16/v2/source/verge/ENGINE/AUDIO.H create mode 100644 16/v2/source/verge/ENGINE/A_MEMORY.C create mode 100644 16/v2/source/verge/ENGINE/A_MEMORY.H create mode 100644 16/v2/source/verge/ENGINE/CONLIB.C create mode 100644 16/v2/source/verge/ENGINE/CONLIB.H create mode 100644 16/v2/source/verge/ENGINE/CONSOLE.C create mode 100644 16/v2/source/verge/ENGINE/CONSOLE.H create mode 100644 16/v2/source/verge/ENGINE/CONTROLS.C create mode 100644 16/v2/source/verge/ENGINE/CONTROLS.H create mode 100644 16/v2/source/verge/ENGINE/ENGINE.C create mode 100644 16/v2/source/verge/ENGINE/ENGINE.H create mode 100644 16/v2/source/verge/ENGINE/ENTITY.C create mode 100644 16/v2/source/verge/ENGINE/ENTITY.H create mode 100644 16/v2/source/verge/ENGINE/FLI.C create mode 100644 16/v2/source/verge/ENGINE/FLI.H create mode 100644 16/v2/source/verge/ENGINE/FONT.C create mode 100644 16/v2/source/verge/ENGINE/FONT.H create mode 100644 16/v2/source/verge/ENGINE/IMAGE.C create mode 100644 16/v2/source/verge/ENGINE/IMAGE.H create mode 100644 16/v2/source/verge/ENGINE/INTER.H create mode 100644 16/v2/source/verge/ENGINE/KEYBOARD.H create mode 100644 16/v2/source/verge/ENGINE/KEYBOARD.S create mode 100644 16/v2/source/verge/ENGINE/MAIN.H create mode 100644 16/v2/source/verge/ENGINE/MAKEFILE create mode 100644 16/v2/source/verge/ENGINE/MESSAGE.C create mode 100644 16/v2/source/verge/ENGINE/MESSAGE.H create mode 100644 16/v2/source/verge/ENGINE/MIKMOD.A create mode 100644 16/v2/source/verge/ENGINE/MIKMOD.C create mode 100644 16/v2/source/verge/ENGINE/MIKMOD.H create mode 100644 16/v2/source/verge/ENGINE/MODE13H.C create mode 100644 16/v2/source/verge/ENGINE/MODEINIT.C create mode 100644 16/v2/source/verge/ENGINE/MODEX.C create mode 100644 16/v2/source/verge/ENGINE/MTYPES.H create mode 100644 16/v2/source/verge/ENGINE/PCX.H create mode 100644 16/v2/source/verge/ENGINE/RENDER.C create mode 100644 16/v2/source/verge/ENGINE/RENDER.H create mode 100644 16/v2/source/verge/ENGINE/SINCOS.H create mode 100644 16/v2/source/verge/ENGINE/SOUND.C create mode 100644 16/v2/source/verge/ENGINE/SOUND.H create mode 100644 16/v2/source/verge/ENGINE/STARTUP.C create mode 100644 16/v2/source/verge/ENGINE/TIMER.C create mode 100644 16/v2/source/verge/ENGINE/TIMER.H create mode 100644 16/v2/source/verge/ENGINE/VC.C create mode 100644 16/v2/source/verge/ENGINE/VC.H create mode 100644 16/v2/source/verge/ENGINE/VCCODE.H create mode 100644 16/v2/source/verge/ENGINE/VDRIVER.C create mode 100644 16/v2/source/verge/ENGINE/VDRIVER.H create mode 100644 16/v2/source/verge/ENGINE/VERGE.C create mode 100644 16/v2/source/verge/ENGINE/VERGE.H create mode 100644 16/v2/source/verge/ENGINE/VESA.C create mode 100644 16/v2/source/verge/ENGINE/VFILE.C create mode 100644 16/v2/source/verge/ENGINE/VFILE.H create mode 100644 16/v2/source/verge/MAPED/A_MEMORY.C create mode 100644 16/v2/source/verge/MAPED/COLBAK.H create mode 100644 16/v2/source/verge/MAPED/COLSTUFF.H create mode 100644 16/v2/source/verge/MAPED/COLUMNS.C create mode 100644 16/v2/source/verge/MAPED/COLUMNS.H create mode 100644 16/v2/source/verge/MAPED/CONFIG.C create mode 100644 16/v2/source/verge/MAPED/CONFIG.H create mode 100644 16/v2/source/verge/MAPED/CONTROLS.C create mode 100644 16/v2/source/verge/MAPED/GUI.C create mode 100644 16/v2/source/verge/MAPED/GUI.H create mode 100644 16/v2/source/verge/MAPED/GUICOMP.C create mode 100644 16/v2/source/verge/MAPED/GUICOMP.H create mode 100644 16/v2/source/verge/MAPED/INTER.H create mode 100644 16/v2/source/verge/MAPED/KEYBOARD.C create mode 100644 16/v2/source/verge/MAPED/KEYBOARD.H create mode 100644 16/v2/source/verge/MAPED/MAKEFILE create mode 100644 16/v2/source/verge/MAPED/MAPED.C create mode 100644 16/v2/source/verge/MAPED/MAPED.H create mode 100644 16/v2/source/verge/MAPED/MIKMOD.C create mode 100644 16/v2/source/verge/MAPED/MIKMOD.H create mode 100644 16/v2/source/verge/MAPED/MIKMOD.LIB create mode 100644 16/v2/source/verge/MAPED/MINIMAP.C create mode 100644 16/v2/source/verge/MAPED/MINIMAP.H create mode 100644 16/v2/source/verge/MAPED/MODE13H.C create mode 100644 16/v2/source/verge/MAPED/MODE13H.H create mode 100644 16/v2/source/verge/MAPED/MODEX.C create mode 100644 16/v2/source/verge/MAPED/MODEX.H create mode 100644 16/v2/source/verge/MAPED/MOUSE.C create mode 100644 16/v2/source/verge/MAPED/MOUSE.H create mode 100644 16/v2/source/verge/MAPED/MTYPES.H create mode 100644 16/v2/source/verge/MAPED/PCX.C create mode 100644 16/v2/source/verge/MAPED/RENDER.C create mode 100644 16/v2/source/verge/MAPED/RENDER.H create mode 100644 16/v2/source/verge/MAPED/SMALFONT.C create mode 100644 16/v2/source/verge/MAPED/SMALFONT.H create mode 100644 16/v2/source/verge/MAPED/SSAVER.C create mode 100644 16/v2/source/verge/MAPED/SSAVER.H create mode 100644 16/v2/source/verge/MAPED/SSAVER1.C create mode 100644 16/v2/source/verge/MAPED/TILEED.C create mode 100644 16/v2/source/verge/MAPED/TILEED.H create mode 100644 16/v2/source/verge/MAPED/TILESEL.C create mode 100644 16/v2/source/verge/MAPED/TILESEL.H create mode 100644 16/v2/source/verge/MAPED/TIMER.C create mode 100644 16/v2/source/verge/MAPED/TIMER.H create mode 100644 16/v2/source/verge/MAPED/VDRIVER.C create mode 100644 16/v2/source/verge/MAPED/VDRIVER.H create mode 100644 16/v2/source/verge/MAPED/VERGEPAL.H create mode 100644 16/v2/source/verge/README.TXT create mode 100644 16/v2/source/verge/UTIL/CHRCONV/CHRCONV.C create mode 100644 16/v2/source/verge/UTIL/CHRCONV/CHRCONV.TXT create mode 100644 16/v2/source/verge/UTIL/CHRCONV/DARIN.CHR create mode 100644 16/v2/source/verge/UTIL/CHRCONV/MAKEDJ.BAT create mode 100644 16/v2/source/verge/UTIL/CHRMAK/CHRMAK.CC create mode 100644 16/v2/source/verge/UTIL/CHRMAK/CHRMAK.TXT create mode 100644 16/v2/source/verge/UTIL/CHRMAK/MAKEDJ.BAT create mode 100644 16/v2/source/verge/UTIL/CHRMAK/MAKEWAT.BAT create mode 100644 16/v2/source/verge/UTIL/CHRMAK/VECNA.MAK create mode 100644 16/v2/source/verge/UTIL/CHRMAK/VECNA.PCX create mode 100644 16/v2/source/verge/UTIL/CHRMAK/VER create mode 100644 16/v2/source/verge/UTIL/PACK/MAKEDJ.BAT create mode 100644 16/v2/source/verge/UTIL/PACK/PACK.C create mode 100644 16/v2/source/verge/UTIL/PACK/PACK.TXT create mode 100644 16/v2/source/verge/UTIL/PACK/TEST create mode 100644 16/v2/source/verge/UTIL/PACK/TODO create mode 100644 16/v2/source/verge/UTIL/PCX2FNT/FONT0.PCX create mode 100644 16/v2/source/verge/UTIL/PCX2FNT/FONT02B.PCX create mode 100644 16/v2/source/verge/UTIL/PCX2FNT/MAKEDJ.BAT create mode 100644 16/v2/source/verge/UTIL/PCX2FNT/PCX2FNT.C create mode 100644 16/v2/source/verge/UTIL/PCX2FNT/PCX2FNT.TXT create mode 100644 16/v2/source/verge/UTIL/TRANS/MAKEDJ.BAT create mode 100644 16/v2/source/verge/UTIL/TRANS/SULLY.PDF create mode 100644 16/v2/source/verge/UTIL/TRANS/TRANS.C create mode 100644 16/v2/source/verge/UTIL/TRANS/TRANS.TXT create mode 100644 16/v2/source/verge/UTIL/TRANS/TYRIAN.PDF create mode 100644 16/v2/source/verge/UTIL/TRANS/TYRPAL.PCX create mode 100644 16/v2/source/verge/UTIL/TRANS/VERGE.PDF create mode 100644 16/v2/source/verge/UTIL/UNPACK/MAKEDJ.BAT create mode 100644 16/v2/source/verge/UTIL/UNPACK/TEST create mode 100644 16/v2/source/verge/UTIL/UNPACK/TODO create mode 100644 16/v2/source/verge/UTIL/UNPACK/UNPACK.C create mode 100644 16/v2/source/verge/UTIL/UNPACK/UNPACK.TXT create mode 100644 16/v2/source/verge/VCC/CLEAN.BAT create mode 100644 16/v2/source/verge/VCC/CODE.H create mode 100644 16/v2/source/verge/VCC/COMPILE.C create mode 100644 16/v2/source/verge/VCC/COMPILE.H create mode 100644 16/v2/source/verge/VCC/FUNCLIB.C create mode 100644 16/v2/source/verge/VCC/FUNCLIB.H create mode 100644 16/v2/source/verge/VCC/LEXICAL.C create mode 100644 16/v2/source/verge/VCC/LEXICAL.H create mode 100644 16/v2/source/verge/VCC/MAKEDJ.BAT create mode 100644 16/v2/source/verge/VCC/PREPROC.C create mode 100644 16/v2/source/verge/VCC/PREPROC.H create mode 100644 16/v2/source/verge/VCC/VCC.C create mode 100644 16/v2/source/verge/VCC/VCC.H create mode 100644 16/v2/source/verge/VCC/VCCODE.H create mode 100644 16/v2/source/verge/gnu.txt create mode 100644 16/v2/template/NULL.VSP create mode 100644 16/v2/template/SYSTEM.IDX create mode 100644 16/v2/template/SYSTEM.VCS create mode 100644 16/v2/template/TRANS.TBL create mode 100644 16/v2/template/USER.CFG create mode 100644 16/v2/template/VECNA.CHR create mode 100644 16/v2/template/VERGE.EXE create mode 100644 16/v2/template/VERGE.LOG create mode 100644 16/v2/template/console.gif create mode 100644 16/v2/template/start.map create mode 100644 16/v2/template/start.vc create mode 100644 16/v2/template/system.fnt create mode 100644 16/v2/template/system.vc create mode 100644 16/v2/template/text.fnt create mode 100644 16/v2/util/CHRCONV.EXE create mode 100644 16/v2/util/CHRCONV.TXT create mode 100644 16/v2/util/CHRMAK.EXE create mode 100644 16/v2/util/CHRMAK.TXT create mode 100644 16/v2/util/PACK.EXE create mode 100644 16/v2/util/PACK.TXT create mode 100644 16/v2/util/PCX2FNT.EXE create mode 100644 16/v2/util/PCX2FNT.TXT create mode 100644 16/v2/util/TRANS.EXE create mode 100644 16/v2/util/TRANS.TXT create mode 100644 16/v2/util/UNPACK.EXE create mode 100644 16/v2/util/UNPACK.TXT diff --git a/16/v2/CONSOLE.TXT b/16/v2/CONSOLE.TXT new file mode 100644 index 00000000..70a150c9 --- /dev/null +++ b/16/v2/CONSOLE.TXT @@ -0,0 +1,188 @@ + ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ V2 Console Command Summary ³ + ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ +Current as of 5.9.99 + +Using the Command Console +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄ ÄÄÄÄ ÄÄ Ä +The command console is summoned by the ~ (tilde) key. Pressing the same key +a second time hide the console as well. If ~ does not bring the console down, +the game designer has disabled it via the AllowConsole(0); call. + +You basically use it by just typing commands into it. The actual commands will +be detailed below. However, in addition to typing commands, it also supports +the following features: + + The UP/DOWN keys are a 10-entry Last Command Memory. + The PGUP/PGDN keys allow you to use the scrollback features. + TAB is command-name completion. + +Console Command Reference +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄ ÄÄÄÄ ÄÄ Ä +ÚÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +³ ACTIVEENTS ³ Parameters: None ³ +ÃÄÄÄÄÄÄÄÄÄÄÄÄÙ Usage: ACTIVEENTS ³ +³ Description: Lists the index numbers of all active (onscreen) ³ +³ entities. ³ +ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ +ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +³ BROWSETILES ³ Parameters: None ³ +ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Usage: BROWSETILES ³ +³ Description: Displays the tileset currently loaded. Inside the browse ³ +³ interface, the up/down keys scroll through the tiles if there are ³ +³ more than fit on the screen. The A key toggles tile animation, Q ³ +³ exits the browse interface. ³ +ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ +ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +³ CAMERATRACKING ³ Parameters: [on/off] ³ +ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Usage: CAMERATRACKING [0/1] ³ +³ Description: If CAMERATRACKING is executed with no parameters, the ³ +³ status (0 or 1) will be returned. If 0 or 1 is specified as the 1st ³ +³ parameter, that will set a new value for cameratracking. This ³ +³ variable controls whether or not the camera follows the player ³ +³ around at all times. ³ +ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ +ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +³ CD_OPEN ³ Parameters: None ³ +³ CD_CLOSE ³ Usage: CD_OPEN ³ +ÃÄÄÄÄÄÄÄÄÄÄÙ Usage: CD_CLOSE ³ +³ Description: Opens or closes the CD tray door, respectively. ³ +ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ +ÚÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +³ CD_PLAY ³ Usage: CD_PLAY ³ +³ CD_STOP ³ Usage: CD_STOP ³ +ÃÄÄÄÄÄÄÄÄÄÙ Description: CD_PLAY begins CD audio playback at the ³ +³ specified track number. CD_STOP stops all CD audio playback. ³ +ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ +ÚÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +³ CONSOLEBG ³ Parameters: None ³ +ÃÄÄÄÄÄÄÄÄÄÄÄÙ Usage: CONSOLEBG ³ +³ Description: Sets the specified image as the console background. The ³ +³ image can be in PCX, GIF or BMP format, but must be 320x240. ³ +ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ +ÚÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +³ CPU_USAGE ³ Parameters: [on/off] ³ +ÃÄÄÄÄÄÄÄÄÄÄÄÙ Usage: CPU_USAGE [0/1] ³ +³ Description: Turns on or off the CPU usage monitor. When it's on, it ³ +³ displays an FPS report and shows CPU usage in the categories of ³ +³ rendering, pageflipping, and game ai (etc). ³ +ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ +ÚÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +³ CURPOS ³ Parameters: None ³ +ÃÄÄÄÄÄÄÄÄÙ Usage: CURPOS ³ +³ Description: Returns the current coordinates of the player. ³ +ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ +ÚÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +³ ENITITY ³ Parameters: [index] ³ +ÃÄÄÄÄÄÄÄÄÄÙ Usage: ENTITY [ent num] ³ +³ Description: Returns the current coordinates of the given entity. ³ +ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ +ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +³ ENITITYSTAT ³ Parameters: None ³ +ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Usage: ENTITYSTAT ³ +³ Description: Gives a report on the current entity stats. ³ +ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ +ÚÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +³ EXIT ³ Parameters: None ³ +ÃÄÄÄÄÄÄÙ Usage: EXIT ³ +³ Description: Exits to DOS. ³ +ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ +ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +³ LISTCMDS ³ Parameters: None ³ +ÃÄÄÄÄÄÄÄÄÄÄÙ Usage: LISTCMDS ³ +³ Description: Lists all registered console commands. ³ +ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ +ÚÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +³ LISTMOUNTS ³ Parameters: None ³ +ÃÄÄÄÄÄÄÄÄÄÄÄÄÙ Usage: LISTMOUNTS ³ +³ Description: Lists all currently mounted packfiles. ³ +ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ +ÚÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +³ MAP ³ Parameters: [MAP name] ³ +ÃÄÄÄÄÄÙ Usage: MAP [MAP name] ³ +³ Description: MAP with no parameters gives a statistics report about ³ +³ the currently loaded MAP. Otherwise, it will attempt to map switch ³ +³ to the map file specified. ³ +ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ +ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +³ MOUNT ³ Parameters: [Packfile] ³ +ÃÄÄÄÄÄÄÄÙ Usage: MOUNT [packfile name] ³ +³ Description: MOUNT will mount the specified packfile and add it to ³ +³ VERGE's packfile search list. ³ +ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ +ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +³ PACKINFO ³ Parameters: [Packindex] ³ +ÃÄÄÄÄÄÄÄÄÄÄÙ Usage: PACKINFO [packindex] ³ +³ Description: Packinfo returns a list of files and in a given packfile.³ +³ To view the first packfile mounted, you would type "packinfo 0". ³ +ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ +ÚÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +³ PHANTOM ³ Parameters: [On/Off] ³ +ÃÄÄÄÄÄÄÄÄÄÙ Usage: PHANTOM [0/1] ³ +³ Description: Turns on or off Phantom mode (no clipping) ³ +ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ +ÚÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +³ PLAYER ³ Parameters: [Entity index] ³ +ÃÄÄÄÄÄÄÄÄÙ Usage: PLAYER [idx] ³ +³ Description: Sets the player to the given entity number. ³ +ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ +ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +³ PLAYERSPEED ³ Parameters: [speed] ³ +ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Usage: PLAYERSPEED [1-7] ³ +³ Description: Sets the player speed ³ +ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ +ÚÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +³ SHOWOBS ³ Parameters: [on/off] ³ +ÃÄÄÄÄÄÄÄÄÄÙ Usage: SHOWOBS [0/1] ³ +³ Description: If this is turned on, grid will be drawn on top of the ³ +³ render process denoting where the obstruction are on the map. ³ +ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ +ÚÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +³ SHOWZONES ³ Parameters: [on/off] ³ +ÃÄÄÄÄÄÄÄÄÄÄÄÙ Usage: SHOWZONES [0/1] ³ +³ Description: If this is turned on, grid will be drawn on top of the ³ +³ render process denoting where the zones are on the map, color coded. ³ +ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ +ÚÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +³ SPEEDDEMON ³ Parameters: None ³ +ÃÄÄÄÄÄÄÄÄÄÄÄÄÙ Usage: SPEEDDEMON ³ +³ Description: This command will enable the "2x speed" cheat to allow ³ +³ the player to move twice his normal velocity when the CTRL key is ³ +³ held down. ³ +ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ +ÚÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +³ VER ³ Parameters: None ³ +ÃÄÄÄÄÄÙ Usage: VER ³ +³ Description: Displays a V2 version report and build info. ³ +ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ +ÚÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +³ WARP ³ Parameters: [tile-x, tile-y] ³ +ÃÄÄÄÄÄÄÙ Usage: WARP [x] [y] ³ +³ Description: Warps the player to the specified location. ³ +ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + +Special Commands: RV/SV +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄ ÄÄÄÄ ÄÄ Ä +These two additional console commands are extremely useful in the development +and debugging of your Verge game, especially with advanced VC. These commands +stand for ReadVariable and SetVariable, respectively; they allow you to access +the value of any user declared (system.vc global) variable (ints only, not +strings). You can access both single ints and array components. + +For example, to read the value of a variable named "gold" you'd simply do: +RV GOLD +and the value of the variable would be printed out. To set the value of "gold" +to a really big value, you'd type: +SV GOLD 1500000 + +To use array variables, you simply add another parameter which is the array +offset, ie: +RV FLAGS 105 +Would return the value of flags[105]. Likewise, to set the value of flags[20] +to 0, you'd type: +SV FLAGS 20 0 + +Have an idea for a console command you'd like to see implemented? Mail me +at aen@verge-rpg.com and We'll consider your request. + +- Verge2 staff diff --git a/16/v2/MAPED.CFG b/16/v2/MAPED.CFG new file mode 100644 index 00000000..583eab23 --- /dev/null +++ b/16/v2/MAPED.CFG @@ -0,0 +1,37 @@ +vidmode 0 +pad 1 +scrollmode 1 +mouse_scroll 1 +black 1 +white 31 +winbg 23 +shadow 13 +darkred 44 +titlebg 125 +th 1 +mh 1 +md_device 0 +amxofs 60 +amyofs 60 +mmxofs 60 +mmyofs 50 +cnxofs 114 +cnyofs 70 +lmxofs 80 +lmyofs 50 +lvxofs 80 +lvyofs 50 +mpxofs 60 +mpyofs 60 +vaxofs 20 +vayofs 20 +zexofs 80 +zeyofs 40 +exofs 70 +eyofs 30 +prxofs 50 +pryofs 60 +rsxofs 20 +rsyofs 20 +vced edit +difficulty 4 diff --git a/16/v2/MAPED.EXE b/16/v2/MAPED.EXE new file mode 100644 index 0000000000000000000000000000000000000000..5858d316fcd048ed2e52cd0014783be96e629c72 GIT binary patch literal 237873 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
ilhiBJ{->woaRq$paq2~T=^i4h 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 OQIkNLoKMYwhrC&{D2MKLIj$`hpOle!swJm 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%0A1G1-&g|U0VLc2 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�@Z>8A|a=dFyPxw)N>ufB}PTy*g&Ht}XgnxV3a? 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

gDQq@BO9!HKt~h=C3lB5GyDZ_b(j92i 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�thOIomThL*Lb014T4dZR8#Tz9jY zA?qqKlsPulQRzIhJ&<_Y0RJ^ROW?thD z8jZG#eD#Oz&sbW+%wz!k+v@R50jExg+i$*#LFhP`nk3}*OM!k62;I0ZqD&ZX!>8^d45S|O{$g=@RT<^hgm-)F~63X0_610S(sqKxaYKv8Tp<;IW_b)o?ZZF6ltGx&E;7{QP|1 z_0)8$#{YbM_`ci}?I1GTolzgMJ{A(k+L~ppKanA=aT`f#D1Y_qeq9|nb2mWk;OF!e zM?fMe9!=66{Vp-4X4uZ-<0orrrgawLM=!xBG*4=!anBUWFB+%+dV=)*=(H_~=oNL3 zylsMuzzdc;+b?%IT%7OUf8N(CG*BRh=$L56w6#xaL?EtuHSaIQ`z0(LmnTSQ63?lu zo{6h<*=S)C=m#eoXK^BmJ~HLXLtrTX#?OjSiGft5YpSScm~N44&*-YEG}S_K(P_bn zMz0Oie!S``iuu+(A|sB1W{U4j)6CUiux3IVpn2WY&{q|sFA$2H{iWR2qa@O)D3u1* z9I+Y zL=1HgsR+qLjIM!mKrXM<=X^Lk=N>K9bSyhzu#l@EUcyDVl#wDrABe~iFzGCqTvqHL zo!s=tGB3|VySObuCM9KBt9i*J#WbBJ<8Z3-l(sGR9$4Xr0`Rdni4VvEQhvB#P%HCr zEJwQWkrSQFh9w)!Tw%oe9q?gD8t@Ny2iT&>#)9mgeQd7D3vTZG3vLm|YtHvaPl`VO zw6>=B7{l&FsTV=TCisa_*dX@<& z;xGb$;{uu3_TPV{D1moOMvIU?m5q;$g^P_`FyXMJGvbuwViOa~@VvQ&2!4o8(#UC4 z<(1eb$m(69VW@Nkn-*0DB_hgo*3M7uVuzK?Ey}YJI4pI^G!q6A(_*(o8=ZBXm58@Q zPJ-%9RYq5>6yHMI$XU#57zs~Ya|E=sCVc)w^9Ir>ss!5E2lZq4m7B=d=M8!7twz}t znKhR{j?pmgiJeBN31U4ilHzL10^+Lf6xsz^%pNu@+Ot9<)0oS!BT~J(umsV9Vl#go zV$ys}G(Rpze4Poe`hhpV+b%-jGB^!msd4zlj&=shr)$o zKbG#%ZCW|NEG`Y<{Fq1(od3~#u(OQyCE6tmX=VXUpyxLi&#D_m6 z;zo6bq7POn7gPE)OTI#Y(qr?=XGRdQ%ZzWukH8d$j;c7dxe8mdgRCmWM?Gw}PpfEk zzqvR*DUfTVC@-U%uGUV;=QA$pQI84ZNsZox0&c8)@2jueh2B`;)w`XGD7YK#r=g8) zZhr7~y*(|-<`C*4-n-uC^M3QrTA8Lng7rU<(9ymc!hMUEFU;-Wfq@8?ty7xi>*$jAM)f7LJtoN5Vyz zH05GJ?KJL9Mlgz;hP;QQc;0H=ls7f1L`i$^LSZ z!~a5K3*BC00J+qgR4)y`h7w7W&x*CqcfcM5rd*JbhjceFaH8`PK0e265A|=-=R&X5 zl?aehnXm}X&5#zNiWfR?0mF2@QCZKq!JX~&VZFm>yn$^TU3~yn!SVDG5%7FZN4=6y zqqvesr@J~cZEX|PUu_$a&AkZ+@a`c)UiX(JPXhmuPI6pIYY}5qXMKv#A!td|JyIF* z=XQ%vyZOGFhC|X3<4C*fMckLW^aZVb<{jx`%g(_ukZ2vhtNEmCXj_C5e>jCD*EHN` z+A<))2PM&?rhNjE$BCSlGp43(-m6a?Kk#HBwse#bPL_&qm;+@_QP=7ko`mhD7}V`# zPHax{J7seRliXfP#4s5?X25um7w_?>(bW5c;*}V!34@d)wP29<2l5$EJ6Jul$PcxG zVkqUTXw~bL&krd>+W$J9g@TLH`u@eS#T+0PrUT4{s?HO?qLBL+zu!u`RtfJF1D0c% z101$waO~h^y27K33uHfD{#EsR+XNG%2M3OjzGzaR(;PAfp&u}=!?%v9DtRgK3Gknf2U14R%ACWT_o<`RA88vw5Cmw zGvzb#LvZnA;iN5(tgu>Ii;C2zZc?gBF>hHqpbQ&K($(HOLAFdJG`S_^mBr`)V_@Dq zu`;CBR7mtatMa3Fk>H8G7cx!SCb!lo@cN$@&&9OY%|kh2>tgI+YD_E5FDEQSD=jV~{`*EFn5=4PyDkC$6*K6Yb}Z3_F6CD^ zWi3=HWIk_~3_n;PkDPB-hqk)-{O{@BuHy5Bv%#geb6%5&ZQ}Bhozc`}xiD$Q1k(YN zg8ny=koj+ER<3UV?N5J^Tz@)W%$FYBiA-;$RWU09fmAX!)iE%QXoMs9kr-{-zH-U#;z0T_K2vQkwRrN>>pV(9*x!cUBgn^~z~gZ^{+P*B+bSNf13=Zuz-Oyd z2r!$VfxtLZM(Ff0WSLf|fzel81Yg#@P^$1+DJTpjf2d7W^j63_&MYHF2;l(JK&7|itKv2S#Yl66|h)WN1c-60C4DIAsPC3h=rte0XJM|_DKPr40jinz-qglOYNN} zPdQueUhl4jvK9|GWv3;i@D8tOL;O8iZvWP_7z6(pxm2s;=lX@#Vc;j)sZ5g_f1n&-c5A1bZM>gbq&Vq-M5@W3HQMtqmYn(hUg)*gx`TvlrdkOS(187^6l;WP$3b_R5aM{Wr$-&-^CbcdEnp3Hlk%)y+s z`YG+;cS^%46A6;it~>u4sRmYVa3jX|AT+Q?QUhrcFCmEXUfJ7@PhLb5AM$>5tc^Q`jB zr8z9TD`T0=wPv5Q8D?~rx?NpnSWHX z+#kX3QV{h6P-WO%M6t<^ub^mNI+{@kU$73qIfvSU_nY~X+f*NtAM?$q)5PAu-kN4jpN4$%*$G@0kuw{)>o6o zPgGNA(Z8n1jO#^6NXU_`;3nOuxN!E_AVRs^>zY{DLEf6OwFiV!P4z1Ww~dXtgd1~I z15|G^PQ$=(D-QHAppK3|M_j1(PinZ>q5EXI$E@8V&j{KCZc{jGN9g~QB+AA8ldf20 zH7^LP_W-DGNu5wMvD4$}J>(|us0`S!qHjYsldlIf8k7)rFi5FK3}X$O{&ubcQ3qhi zatzLiixTU}IvMvWIw6RXCxDM7`PFEr4m-D*Odo$=e|2b;fKZX>)rMZc#I7lQPWvTDTsC3!v()5xb)-)KczVo7Ky$B+@ENVI9^}?APpM zTM0K5`q%l*|A00I=zZrNN@_mU(9J8bvA99&2CKkZsygkDJZq3^zJSoFwzX>3`Y+$h z^TE0ERIZiW?zSJsGys=Ja+24=<0aa**BMusn}e#0>MMYE5|y|_*0u&X1Y6g4>7^3v zlC6sq&MArH*B2y-Y+RTnb?Xe1UBJ>KZ>UekE@dG5Gf#QOS-Nh8ld6u*BZdS6;O*0l z=B&K&NW)gdKjWr_T_he;}<)n`RB-mqSJmY{%zIr$*$9)MslcVxh?P?BX4UA@0w zTucD47CU>NGl0<43?JORy}sWo`Z;4pq&LLhylsQg9HC48El_TRKDe2)AkD+CJflAK zd{nd%G_-B)4RF32VyZNjXH>-E)T0KY%j%Z)#0V@PvHVUM4&*)H?uOR2+asaw0T(G~ znd|}hPc+H?@`V%!A#D>d0DujQ{~k@ULc;WnVl;wR=o>a0t@m4gKl-!4fB$O6P;=UA zl0)vABo2d_W3EnLqYnL(BjzAXNr6sqDQuYP$t9o|TPc)T7uH=ilW;I$d%;k!TB=B1 zFiNraKoc*`*4XXz{`j-~g*HuI!VkjyLyLz>9Ohl2fg!5Y8%5^2nF}OCmIV(#Cba#L z)fz|Q2>yxA22mE5wLMJ&NZA)VpweHFY>qfDUX1_1MvQGF#D~a(5-0Vz|Fs0uNk+fN z6L|4PT>z*x?>88rM8zYaf{zdnZ^J0@iUa^af7&`wg1X4Gi<(gIX` z@1^f`|6mIJT{U<2<=bwx2h-OfUP%PPU@QP##EHWY`RyP3W~_0DPnil&7K|*do#4;b zt^?h7Au=ysRL!&q5!(-25RcYN=t1Avl(8@P3hTf{YyqQ^r_d-8%@?Xp8#pPsc}AY0 zAffj-h{IP90%|EE6u~_j2oVl^J72UnI9=p(1d-%Er!~hY%1S#Q89dp1h^Gv_wNX9J zo`o@n0oEUTJH3H9P4vXGD1=rMAHF<@g0}UYt7dDrRPZt}-bcW7oDusBnU=5hkW6{J z=(3jbWQ!wSCfHRjV!O(H%pDvdvWnia88t++UC39IVg~#6IsQirly-1-k3dVarg;nh zmnyu^b4k2TZl4H4_&4lxLcWs0&ERa_r19{XIPwy-`ICgXG&h-4>ZGBln)LuDdoOn^lkhP!Y|E`?7XFSygl(I zg==+Url5BL&IS>~O9(||LhFHnVTptkO$90-wbE+^Ml4l3Ogqf@-5UCAM4p6)u|gAy z_;T!$@2DWKzU^z?A-3zQZwp~4JcKvE7IQ`=Ts_0j4h=x`oG!emVbcKwJJl*t(*xQs zUW-i@B}|r9fq=cKr`BZ|oJqOrUbu*+{pUWTCGw03y0%zL&=Uaz&MV6IepXTh=)uXZ zW*s}ilhg8NneDN!CSOq|+bgr2O{gxa8JZ53ZYY! zwlbB7I{bCUzn2O(?x``JzexU;2KpY%WnnLG%_&^6X4&3^v-$ArT5=aExA4UFS{6CtHYTxgJSMM$FUvO``i+piYrk z>ZMd6M~T;oE5P#+QuxlZ>5ey}wY{w1nZL(#M1sq?D!t*vm{l|!XZdQ>E{!*7^_dmk z9;W{eGrZj)vKBM94P4OVJkHvd{QGv5Fx=5UCFWJKZ%vq98+0@0)sMGDpK{fI`rtG{ zUK-J@r$W`GU$6<&eYWH@re$GD*Cn;4 z51#qVscm!eBg1$7#`A?v$41>|7jFd3(n>p*u~W0|zbfy$R50Y>|wuO^H^rQ_h*1MQ(RRFvEvJvZjWcGSiNA1vRB zn!hA8zO(1J&gV@r3zoY}BR<9vPsv*>C~FqhDHj_BE1{u9or@PPv!3`2HHne&kZz0i z{FHh={t0CzXM83(3sbI!rOBZ9$NrGlMlt%L>MVm}+;oJ&8hu{Hc#01z;!QPf2Jg`! z#CJYxZf^7U5vl)BDgn(d>(i57Nk-)^3D@#4ZU`}L6|V?2N+@i)N%#S0SMT+x=SYMO zo~#=N&yquQEBk0A+}u%9S`iIyCyKiY)%u~QVq7|jxBVvtd7eylCnc{^kvn0;{@^-E zZU5l?*ZzEuX}DVQ%l5ke{Ez)vtSWiOcAXD;WQXX;x3&?jbY3B%xN4t*jy(O91X1OV z35Pv2%VkqI6)Ne+M~1I}y2xogN9^)p6Rd#p zq>?Eyv2k-!Gm1h#V*V&SMd1mD6Ebd~8C|;QZY5R!Yn?~bVsWh{@eV}KYnyCVO z>LGgZWz73NN5OU_XC6Qg5_F)MJnA;wKYLo}eBN|_I7MGn(5<)G+&(9sOqqV%WE{fo zg?Y*Edf_;^;-=zZheoNIU zSeN`+48W>w;WKwKexBP1FHtTKs9#7|NzXk^h_s0J%vTDlvH5bg%J}kCRvuxoO^e6S zdUk*8;_T?VWpm*ValRhWtl4&e#~<`Se1|-E#RwVor8-Jzb|&=sGp#!mjPR&hZIyXmm{wu(_tGvvczySbwaRC4@{~N*Tmw>AM(oc;4 zkgJ|K5r6hdsgzmL41fvFm}7*@*N@9%t?;{A%F9RVLRTZ|;!VXayRLk97~y#R_!6J5 zU3jgMoJ^)am`#TlY%12$h$pyUYJmT&3xQp{JrKG5>P123r=WRltTda5v@TC3hNwZv zDdrB@?NGgETqGc745qF&5>}&$C~h{;6nBE-^S2g5;6c!vt2dfZcxjMjNvOx?|Jz2QAlIrU zLNG4us=#W(K3ufs=IX%X9teGaR$?n_n%lZpBV&3aTde5zw1+)x$HJ4FEkm;%GqZQO z|9Ls^2r`v}SWi~CGw=Z4hs{il2wf?gh9!br|#M3Ef>Bn{+1NfFtUJqk9{G zW|Lfk3$W5ZSI-@(0*?zShpz=nv45L@Z-G^ufw*+Q<_lRc4brT^KWqBMXSZlV%MSOJ z2>Nl1D~djX?5DF8yT{8N_JY@B`Q;DF+MyTA8vpUi=ytXYS*qH+DOv-yId}Ck)F!gV z;sD6-Z=|+|OE!A8cKZrQ_2z5H`UO`y;5Ow@8%*ukfPxNQ^$4AvLcc2eWPu$7uH=fa zc3YB_*cv=Di}VBQCu7?Y@c=BmVeG#>=cuMB;U>Smn8G>8iq#3)bWfE0QJWWCVrdJm z7V*>HeUj~|zglrl<0=nr#Tyr|%T=X#)KPWJG{4(k1WM@OrE?BUoA;;{;w)P}cK%Ye z)3{prNqaH(h1L_J(cz>4Era7<6>9+cV(=WxW{r(+n3~J?GK`E3H!#q%0d`Cr^F90R zBh;VG7_dzU-^e;*c&$Q!nSZE`$z1DHPAOerQsQZn#sEgSB*Y|EA&oPGt21g3uc0gW zz=4$kM4&RgCq{G)(55%RiFUVz?Ae?PyPHj5G^0#BHZUPgB(T?)&1n39_NnHj>b5}% znhB$0$miZP*g*d!Td>BM4@{Z){WNa03z2h`_U?$4eU6aD#J1NT9O&qy@s;)By$R9k z6~Q0ATlv_Zo@COx;Fv(DdCG;(H#;hkS#Wkayj9JMa>7ng7I4TI&tsBA7?R}g=n#E0 zvs!*pqhTlEQy5}cEp}4;OTgAswDZ~kVx~PgSaC;WwsjU} zl+SL_T>qG6Pm0jvkQJ~w_`&Q*sP`ih3zyh0k69zH^}+9s0BTJ|@KcRnlmotC*#F2_0y1olDv~L` zzTNB(-{Nx!8q=QTMfUf#qkzPI1Ew~_5-f+=s}m1zC*;n%EJn<0%8|MuO-TIRPvr1t zYpcKlXFliasvwWjBS>rMeQ*xnNCT*udd{pRgE%$bbQ8vk1u(m!FbjaY>0>U z%D2O`yYG~!C<}59xa(3&xaq;F;sIauKza6iZY=UFWocEwCZ<@s1DRQAhc(LFtE~B{ z+WWw|o6x2cjMI@ebPWeVXGr*t(x#YN|IZU0_#-Y zvg8NxOHB`s4R4_L@oi1Uh^~J(*Zy^DiXcM0i69qx_He!jeL1Ewx~|Sq6gg{!Dq+P8 ztKt)-GLHkMp2_hn_UY4gwe@0$jmhWHjF5qh?OmJAO@fI!c3GUp6=0H~xG$?=4~;Sv zo?5WPl4g?c?ygmtGSli73q+&A`y&M;Th@wD%^e1)>{c!FQL!zoE8)i=*Je1j+VMlS z*uKWGOyPz4vP>awi$_Nlb5);BcIa}S&2)a#hU|PQOnO0wb_V+w?lnSQ+XB|;_Tm)- zEYIm$FWYOasvo21EYJkb1s|aJ|szE=Gvi2Hr=x5IYc!^Wn2clbg7D8A37?fIvf#NTU}+TMY} zZfUNx7KLxW1%id#WP`ZDI>S1_IbuIjIzO_gH#t=x`0ol3Rkb4|(J|0_-JdTtfeFp5 z{v^xrs%k9I?f|g}PZ~tfGj8(a)!>fKK?d=ErwqWRzzK%H=gMF2{};ZGv zbAuk22SHG_p4i3su|1g?YpvBPBWhZdZ)}mjTqgK%eNENaBbW*;OtCmf3uqaYRN5hv zrU08hCrPBz+Y`J%c6N?#b=6AJ{_KdAIuFxDiea4YKQ_E@6mi#)CAwN#wZ)jEuWP{klVIpGi`*L>LCI$g_o#YNX^ z`vUf5r$e%R5n5ma&u7a8ibwj*bm?jW>}Znh80t8!J{%Xp>`+2f$ZYx-f1l!A4zEaMqROdOw8$EeB(L#F&oFFc_e%?<`8^V>q1Tii4Q9nY zTQ=#Ij+74D_k!o^GM2+?pOJ!#r45$nL5tj`4HW$xJvX4Swr;yrqsw`|f)%N5aADix zD4-Hiqatc%ds+3G2P?w5{X@ELT@vn}5_;>Xv{S|v%2v!3pUa?g4&|q4HE-K@jf4r5 zc=sU(+&ewKGiAF_Q{x#fj(ORX`0D`Ht@r&+p64gB-sbX*FToG>752fl+-JZUw$ML1 z{=tue?aV&@z7BKFg!)(#jnb?X$b-ZtUCRh})-jtvE5Qem{QVL<%;qH3+{$LSK&~_I%W{!v+)V(j#^-veF+WyP-j` z^%Yu>R1G~)_?xh{SYO0yA#F&iU*fh1pJMkwKn^m2b}MXfh!kaCfR?-- zq!?uM2{gGdnN@oEPU*~t(Fjil=q2#hU_r0@qR zJe2W}a;T}!@}4Cw05$oBlYz1N?5vP~>IRDIEbD*^{#vo$enXouX_FuiLqJe4>1SMg zb?I#QL(wF|cAWt?c4W(xterLSveD%}%S#O~!z{c88|x>CBKss#8g!!M-h8Z{jX}j; z`!rW(d0w|f6e%_Cw|sOv6R);EXM|h?_@08|g%j@f>=z-J`xj*Jqa$sRW4EF}`Th(5 zPa+c&FB2%}Hwkdrz9UP8s47~mDR_8<8$-_b+j5$h@dEW+adUw3aAam@E6Izaq%7L= zCO!yE`-wg-IV@)hv(cQ3NY*(W_XB<@?=L+pG36N~pyHa*n3wec^TKd-CCw`-7~`0` z!|L6TdOH9)u}{;Z$1{v(sqjsLe)Ka2i$2b9X^Z2m*!`d+F90hUsZSB+uTkmcV$wpjT&UGMb+GJug4I#o z1|^)*zxw{3zUJ#JYPVF9Ej_=vkNB*x-|h0EV7+O`qEy&Xiumht2L79lSScU@V&e#q z)*DbQg(Xx_ZR_3XxY>x4M!6T!lkyJY4~@`+8}7I0>T_7Ty~4_q|0iz~4G`Vi>@N%f zqa0jI^(o5FG6U7K5<$5l^^=)a{fJ{z1iDQR8d*_Og?e@n#D8%W(%QQ`_>$@XU_oTAvQvXXwgRsxVnSobgUk zPc|Kudq+}I-OzNZ00rf>p;o9=dJndL9=yst4gyB9tui}#V;G?@aMpcCZKpztCbBt_ ziGvJE6%l)_JcJ@9w&M-bwQvkF*tkKNVIXi)Y~|21fYUXdciu{VM6O-D(8#N+T!o zW{ULgH3zAGh)9@RChjE&@{4?Sv~ zV=3AQTys}%D_O}xL)6Nn(Shy;%O)X8xeFeO3JP;rnsW8#1Y)a0L=necAsD!hAKik+lVfYOoKnQk!l(t~0T zA}3NC8Itz0ovuCN;bW^^eubEef^ zbw=RnTQGCGl^I6)91Dx>JPDX^bb2mq!7lQ21O<~2k{jct1g}$Ix_;TaKOV6=mZI5x ze@0ZwnsrDe{_5fIJ;>zsByi|^sfW*^t9hG|`*baiEx^Fskb$WaQT)=wX)JaLVYvPS zk#9$Rn0K?Y92d7-OJ_tFn1Rg=heou4nOt3ZEl^0-ao+trFQ+@6B&L+pvHI-d+EF?^ zRhCI=BfhoR8YJEcY1RT}hL@r~9%+P-U269E;KL(Yx(lTNiQ*ITns{F>+KaN2@_cc0g3nR9BpNrK%`H5?n*6OwbjjSB^$+o_T#&YC!Ww ze&o8cXqHiW+ItH>mC806ZUvh6ygi!; zo0Gq_#CCuzPiEetPq$y-7HjJN?yc=wK{t&k7Eg#iCGctUbs6JyPVixn(q!O#A$k zA)7&+8sY;lG5x!LR(}(PYM)cEt(Gj9cNH`=OBSPR9sTkFnD=wQrI3WjNN?N>E6k2v z>a?uEexhCxg;g>x;@$I2R!OYdtX3A}zBpVgQ5ZME^3S(>8z2lVe7Q~P5fYbZ2zjw9 z4IZv*w`&Y))MVwSBhjeyuIq9LuSmi!lBATfe)5#+TzRkYwAQ;C8h*I4w7+x?h4)5Z z?0ta?7RKK^OuvvN+b%M0Z!#P!I6;b7jxuI%rcvb_X0*?umLyc#`;)5K1fE{gQfbzm z$gZ~@0Y^q=3H8+?;8vaNOdz=%o;PTfrk9?2ni|SnzN@lX7pHmS4kH(%=$Pf5=t-`M z%q@}B`+H}tA^74$~Y>BHAEhI$p33?;t1`|h;|(K zLzfZj%TGCOh6JXWf0ffrf~W6sfIMLbk_SIOA;_)WV9|fOvoQIeZ*dbV$J;cPt_iL)+^yI|i(f zjquZySl{AMw#EsEgRVoANjH(&_U@-p^9y{jZ&n6s*n4H!dw;ayXI$(lU^?5xpO+nD zVVOEf|6wXpdw7^Z%~ej+7`G|NG}u1NyxmG;Lr`nCr@t2~Fz_@8jTgmj|fA=oJ?|rK=e)W7Ae`)+#@+CX0{jLr|J9 z?T5vx@(qC!^n7!Fbf9d0+Qa-=s07p*0P!9iQ`E~bc<;&=>we^yBfC&VnVO7|B~0lA zM8_(DQMvPoax0svQIQzL^NCI*IqEs5W@y|H zSI<>bH+-H%#8|Jl$|4y%_W*Bs$eqrEa@S#ZgwH|>x`(u#x|}HbxC1E`?p7o*L93zdGX2C z{1g8FWJX~OzreOgE05CxLKVmm|VHqJ|`QKEm?%}Y(hV-Mu{0?`q87V2zNID)v zmXug_z!7D$Nn${~GGXM18y-lric%IIE5-5T(gWHHE+*F$KQZ}qonJ?5?^0*;2@reT zm>#uY+ehrqYoME%uFL1~jH3OCI&CVng^4j;1x&pU7QJQ}Y0MHVjG`?%jdN>{g$QKF zVdNqs^xiu_+A0HpcxO6E#PzH5PV_@|&0;WTJI)g=(fpU}CrYHt3=}E!fYD#p`F1wt z@frp~V(;nNlKHwA1brS)KsFT|kPJ$hjR;SsIo^ZxTqFN+OC{6=_PX?DAh4H- zY@x`86`KO8Co@L7$BWNDfgOK0C1GMBfxQ6U3&p4bq0LY@k%&v@73E2vBMzA%+Rcp3 z`%edtR}`>}cBW2d%pZsmovfJcOf9Xxik1{xpc@%F(UX!JdKtRCt&a&8o0{p_D{6sn zf})r^;c(sXSl2VzDQ1YU)zpJ+2OoLVVOVcr z*kB6b^|Frpn`#I(0vc|JWVG>$S$J{135KVRvnM?<)AZBTfe_np_#eHJA)E}G`@}5q zARRmaF2_O$%8ZyGXZr`wsnXB#IrAnIGwpZ}d6pQWlhkyExd zqbTJZ%*!iPS*a-_4>9D|Jp+2)r-iXa_3twScGbTQwAK3ZW(Cx8blM^<*LIYn-b2l} zn31q$co8Twek+p#m*y-sdcSp3BhmhgfoynDQ?|rw6P&gPyz42``D2|Ho%kF%qasdl zei2pZOl2?0xKSkCCN_KNEZb_Hw_<^};#}D?Ga%tealWE*%X3;q#JY4#VyPOUOKEV4 z%8{3!iZ0Gjcx($fBAMo!j25>z8RP)ztYi=8=pfY<9mwy>d=I}Nm3jetKMy7rkByFf z5(R}+-8f*dIXpaa-fs(4=c>6(oiJ#*z8(FK5k1a}@_TvwLCT{#JJX?z=q4xVZS(0T z*HNj5>^5ycsy6tbq+e@LMJ$_lQUNR7L|BlItBg2}_VQogCet$l8gy1PZJh)AvzRF+ zDd;Q)5Xykfuhi{?!W?_oq=L#fnd#8D1apB*jyvmQMqoJ?{=OrOe++E{v?dk*8dK@L zlK+YpxH=X^25Z9YISINth2D!)-f|573Fc)89Mh_eQJlF$inyTJ1cDG0=mtKUJfVy_ zX=JHRiE{|qFbrfL-&~U^GSOuK8IGuq^NN+&gb2f?jN28aikryAC*q&9+IeISAEkAl zpKfO!(rp^ZL?Cm1uU_@u#e?6smBGkLkot#`Iq*Q}xc9OnxAZp&u?D%&c`1m5%$SYr zMR*NS6sRu3%gfmgknj85pbs^w2hpsCY{oh7$~l-bYnnH#fBv}z6lO-fu4nKe zY{JKAT1dt%Oa|S56hy=-Om_KDHsYVZ&1L0C`AkFHZn$j`+5o$S%AJks3+%=BOs$Lx zRiJaQuYhsiZ2TPtp0&WBzYah)P_6>a20njIW>OP{YKR|Yv(oXq4|AgxSjtRDnN92? zZ2TW={_hvUvIR`57Fgt*xwGc_4BHC4HWF(kX9H_EH3dOwN|#Q07fv!y^_||dFBrC6 z!1}FR34P-knp{SF62nmZgmbqh&s5Zeiz^c2xp~x>QUf;uIz6*sZ>QTu+Fi<^%)H(V zN^gNr^kF0PJTp3HJ@`u>61`qD_U7kET_%zPEgnKbl`1V zfwX7<9^oXJH6BB~3)2L=K<^!FZnYxijd(d<;o4WZjd}F}@NHwM5%aNvkh;{9`V_Ky zZSCAUCp#05cBk(@lE%wOH50dqT_p?uatQ4sXY+odaZ2f--tPhw#f(;@LkiU4mE7{0 zdQ#r6TJsaYidY zS}bFU*8EBgXKqfxg^{E$1^j1^QRecsrdCG!9nL;&5Vur0vLN-6WN+GXC&@>(=X>p% zssU!zab6pXg=j7LVu>0NDfo#Dv@0ikc@?EBtl>#6V}_+Q(Qz>d(%sPW!O!gHfI^07 zXZ>MRrY%0cP2lt|{@f~-i$)yRGM0-<9M?LQi%uL@sc@dl;PM`V0P=0XSHI=YuQL_{ zu`{uN|MT44oUG{j&L2K`Y0}%uuDlCkgQn=cVt5a?d|8|q=%Tbo3C8>5#mhr>8Nt( zWp^381&`eQ@o(uN{EQ>Oobrr7do<_ZoTOkD#GLUY|Ni#B1tIsTAx~1?Z4nxd5>YW8 z9;EnJ?)doTSbSFQkQ=FZB3et|lyEgTF`*+Yj+p{YgE~H4+4BBk2+Sf6^s0cS!&niG@ObyGXm<3Ldlapfd4l} zt(@jGd-$cXMSjb&{{z4HzcH#s;{hn+OD5;bW{lm-=8H(XB@8bL8dm}Hsg9PH@170= znV=aU?j410R2h;g@v?qFBQlWCl$ELQ3{A``!a|S4&Ovb)^%bI5+_pw|A8mUO@ z=u!*<>tSDpUaUvvPJ`(K2gV%ZH@Od15)9d*4O+V+2m;+ONE7Dtu|ybjgdRFvCz}lh za~dDfT{nnEITs`x4451J4Ts8Kc=p11Ct#rJM6w;j8;wVRD=;EU|F`6XAn)wr5@I%&sIKuH4O6!u+IdnVNhdkkoBiQ?9 zUu%Z2^(afO6Atasd7xv-5=?ZiYP!PLg|=1<`0q(GHgqzH zeDl}+)<93duaQ?_{op0U4=m(PgLGImZ0Dwvxz~-)PC(Y7+w=iH8NUVR4p=O^?1+C% z5VyBcbKZdfOk2*mWX}pWQ~h#cpD1s87?(`IG+51FOsF+SnY=s_Zj`fwMW>Plti+N` zv#Aba+y|4&z#P>l>UqfQ>$?C2Vm6lvtp!)=ifM~LpT_=`xVn17GjQEVB#k9>)4=Nw zH|lY8u~O3^{Mta1P6sJ|Zn8Jv{ohX<4JC!2H5&cA1>6HTJqh2m!RwB_^WOwR3cvR` z>+ee}=wBYbo&^8^_y3z$RgmVF5|Ncrq!S#{`1-B;B7ftC{pdB8B;-yt1Fml==e^vAmGtpFOSHYB|_HNeU<5+<;a@rvP>C0}CPw`u+ zu0u1hK;y6s4?5L$+al_svsiRma4(Hd;vI~|i=!=LaPG<=wvMJD){=h@tv%6Z5<+vP zLv{sO>jTr(`O)~7qei(K6EO)J%%*gIQ$FzRe(x<78?&NsC}SfOf5CxXBe=s(nFn?3 zKBLs)Vr5J)aO=*jm2!c$gD5!YfL#w7ctcvjtlnG6Tyer0mbcL~l3S+d600JxsHI9Y z2`KGd>$`e8a0gyLL0q?gdB3=Gm@6o`m@jBQh5`w?vavHZNek)u2V*b1K-M0~ z=hLiQlwPG&6!|DsVJJ)i=DYm7&AlzS2{46Z z1Xfz&;=$#{r;!Y#L#^^~+dYK75HTw-2io!8RKXwsW7`YvK>sp1C`(}~lVI8V7o{mn zR`V*xQ$ZJ-80?D}Q23TFA>~_$RG6;@Vh`c7;%%Ct{n8B0U$W|#24n8=o zQQPrih7}vHgE{HFK(Uq97hZ zwZBVXgDA)U+8t`IYRrj(cpY-{wCF{lH>@bGb!w}E@Tr=@e1nuAkFr`eESSG0e9sLV za5QLrcqY`dsS??7b#oqGNFR~0a~7r!QG(sYZ#=eZX9Wog7}bmuio-F zBm^Std7FTRN_q2*)1y$T&Z}=0%9B!MAw#Q@kpm>QW&v5s%1Qf=`@EA(|vFaK0H6lAt?HZ#PP3EXvHaCDw!g3 z8?z4Fr#Kj*Naokq2P=OWRXoYK%TTMdUs5^e3GKC+4?TQ*!z_SA9>0uC`lcbKmH;(EF<1v zvvv9*^u!ylQO~M*&oVdSSSclJc{Iq&&Gkv{A)*mPzKNGvt2S0@Rb*Z6n6o*sys&Yc zcSVmPyLfIuAGI&1=I#*Ok1u9fFnC?cAqmdWn&d^8u8n?zQD80I%Pwogj=_Bw{Cmrh zEovF|Zj2>8W&j~U7yw_AFSNK|X%fCx6LdnD!+4!=PKV}8rK=8tQg+>fjg64nP}_cm z)uz>O+Ra}ICzKsGfrr7sFSX{h=Q-7)$)aeWyWSZhO~CA8&y*x5Y6+kHl8c`DnL+6; zDWnEisFB{jp9!6D4@qySv!|=;*|tP-<1fC~?tAghjn1=8O^=&u(4UC5)3)df&p1ka zgYetA9BH%%Q|7D~jtR=LQ>|sE)4`QI*Sq8^xo4Ko*z%AXTX0(BO^XVjYHrxw#TRwm ztsA%`qL3E2y)guwl%C2YB2`EP5?GV`0g z$Q|V~56{6qv6FR2Dy8wP{KH5kM@z_hxx!c3DD9gpC7=I>YZZS_B&y*k!Rqg6B!u}N z?|=#l{L25SQ$#6mSnrD=c!}=gORS+|L#*oACme`Lv89bsu>;OoHeywAIR|JMY?f{z zv?#y5R9Uk(6OLKmBV3j%lw5-b$aFaMrAXAe5%sm%_VMxZ`qlXKk|NVc^b+L-xMEDs6Gw(@C zkr2w4JonF|WK&k!b7>THIYZ~&9=N}MecM45bdbL?V#SEMER+D`G3}KWS*Rn`4KW#w zMw~&!iw8NGwOG@SpzqA-K0du4yT2C#_q1nkYsrw=I`IV~@=z_;Xq?6h^wX(Um!bkjHE7LAk`PIo`u%4ibxUkQ@$(WD`Zbe zpA%pg!TL@S9Mpr;`|quaeK!wWDR1rLX`0COfQOVY6h#=BY826?4cHh$TjKJ8M^ z6a{Zb19SrKyu5tnxoifEj6o!v!K_y~U$7?&pHUUtHWM(Nk)LejvmDJu|9j!fz}6G& zY$1@udP(RimZ}Fu<*s+4SzVWCx#WzFOo9VL_};<)lp*oEMfOQ&Oi^uyAXgS3AN~go zv3GrUOtxBTp5$JjZp4{kvU*HG2*mG3vdubTM_~5YqK!yLBJinhv;N(w&%s6L+E>!h zxy$(Fm^>Pf6pYs~3j zEzyAV2L#6%7SkObbtl3+>~)1(bRh0_>8*Wo$MK4j{x?p=X#|_)hEpz?v*Fz-4i;QA z;WGsCG75>1Af<}+yx)1os|9-rwqV&71yy5G_R1!q*lB7VRB(_VH>t`_aZXwi0Ml`p z23=_wrHy{$IjBJFMQ0U<=5(@Ng_5o1+2Fv2@FCz+u%%c?0tKpsi-cYMlKr>r0R;?4 z!(J2`c?*1{(RE2{pAsI_8xo2J6E`i)9Gs7`F`6*bH~7hDMPOke;3J~J8zAP-cKXBi z`7t}w0_zlNnez~mFe4$^QN78=QsSN!J{*dYv#Qrort!Ba;GJVhy_q3dR(Da=Z=hDT zKS2M76#Gv=bm$N}di`y>GyLuF{vSxO{~Zv;qU8Im|Cd;SkLN#P1pt1f2o6k;FlwMt zwy6ISD^#rimsnxPMJmn|rR>V;Wok0x#n{;Pgv&vzNd(U!V!JbD&hQ?!!A4b#I01+E zPGMIl49ROH%t5Vy>D^Qa(%U!~qG|f_cYaa+5-ieheoks)y`NS6PkzQVJ>V*mFN)6$+1}sI`I%lB$h|EKAoEwLO6=caX3%rGJ~K_Hn$5DKb{q zD^ga7J#5w6D?aAK(>ht-A3x#8em3Tw0&71nf2U~_CcLb=-77fBXhMT)M#R_;olZ9LCPZ$POE$(+(DDSG6h?<_?hAJ z7;NXPjc{HND!1EPH~-Y}aso@}ID~6NR;@2ro=1j-rYm_JPu*7ztf*_zgFSTkj!_e4 z7vTSh6qpVSCJ}_cUxZ(YRc9~_{!+Pzw83@V8Bt_5N+FWcND1=*FI@P3KlTfU)8hp6 zb&Tu$-v_3J7wdNxGys6$Zx;O@tmppMfnoejp$b|S8^4ea{ge;pECM%iRR+S0fs&#+ ztCb`=&d?u!W`3N@y`8xvA(HazMvK!L8G;4PefDbPa`Ljw<=lg~VNI=#4u`9N4vd{$ z$LLWY+S9a9G9O9 zBJ1hbn`qvUX{RYp-NbMY%AZ(6nc?l*mQQ0hn?)^;;kU1%*fo*zEZkG}_K-~xHBql= zV?}oT?N09xS+HJEf(Sf+{6lisM)*wYZP!33ur`2!T80IuMymA2l2JZ4#ojj744=7o zLNfn3udyB*O(8;cQgf1oo^UDkxCQDfUdp~vIu8#$QeXqAcK?3}RQu7QYKF|BU~NCc zHo15^wP@7!t5x(J4=m9FaBGO0;+O@)HKZJ=gf)(6Mz?4LeLRsd$3|Be;z{(mPfk4M ztJG7zWbb4fT7l^ViGg9`!$3vU0y?(=R0m~Ds5t~1F4DDMP?u;kC+DFkQu8vux2?t< zIGGm(UE3626UF=s>O5?y;TV?A+;xFCo?*A+sDzk-@-aNUteqHvt?15OvxJHZM zq(w%HSVm4Flw4*+y9qZB{9MuR05=C2rf@MSB(~eEsC-#tZKjeVy$+Ns)9g5TINe8OWUxQaMXie}1u2v--B9HiCL>I1Tk&HFfIv3k!i&x_23FZ%CaX4^d$0R21e|R$QqX=Hm+d!7 z0G;5Uy{!oY)H!663(JvJNfO2s=>&y#Tir?3dWcZB3)^fw4>fXP_ z9lL6be48)2HV6HQNt+cEY<@AB#l#08X-TVTo58T!e7nbQzK?YAp0I%AahI;2fW!@N7+R@HCYEIVMIyAP{4wPPVRmY_TrrvdX1 z@if3Qj>b$|k0{A{dTpt$bRHF=KwlnnNHgEVD`f+KHA9D*GFU@1yv&|nVs05B9R-de z{Teix+B(xA3phXO%Rg8MC{?zM z>QBgPkU&zFnXaQ=W=Ky23s5ML8K0Wo^=oBpU(539_VC2W)Zz3VHm|x?Q_e z2nvyr$L8LtDAiL2vD&`|e%iV=ujWvoEPlDWIrY}BiTxw1cpiwua6q^Ym`ve0%-y@* zp|7V!2pe`I(z@Pb%984SY@ewi7!SPM{id579aZWM z2lu|@=ld}Oocsxi9LG?nO8vcEjA5;0i|}nGgGo3mk^l5+dI5i)y5bEwzz4zED@wno zLScw*CGL|ItG;=dsWZZYVh9i8hF5Wp!$TfXb*9{ENr~;zdaYhRVi-V%k601jfMN|d z0yz>0ltJ;WNCJrh9F;_zwfwyUOA7Svu1x_@Wu1)w;s=(W>)m0{(f}ejhIcdyRZ~!* zDOG16*fuv_sE?ll0cq;3`8zBwPVW*wtrZh~#PhTyV=iIhHg6rg_>`m^%Tn|fo2S+) z03uMX8IR;Oi6G7E(k47#0RtPaham7ol=Q5V!*9kOpbOQ9zVG1%ZP7c0vUm4tDwoN1qnk`lUBo%~_FrFC&b)Vi*&mb2d}fH&0+>!zVHd&nY*ZUW z73;;6L+Z=V zL@l`G?aBA^5iBI|WeJgY*$S6BBnmRm(^~~}z{|?!*eC4Ld_^V_>oI<2VK^Y*mGb4E zVt1jYhKKOPV}Ty_&{L1alJr!;3gpwS=;Dv5X#F51mnKL=)WwEJxqf8(*eFPgB>+=7 z;PrlcVh770(9~a6WoBz3k*Ads$X*r7iTGXOg&2>)>WWkODZRkG)4^)quxMo(foRMm zt+XSTQ6UCVl?28iyy<1a{!~Yl&gEx9rzLZPKy_9BYYs7`=1|on$KbPG$r-2s*Yhk^wS<-cLC!A zc;J*Otk7pNJ>V4VI0hEaoizA> z7ap{v!Ymt)5#d!NkM^PX$($;7nPJvYD_IPMl|qm{{_xKU2<_o`S)k??L<2_SS8kKA{{TnnPJ4(8G zH(s*@faktx&w9CR6aV9jaeB{M{jAi7-;VBxSpxyNPur&l|*v!L~G0rZVyH5F$W z{NfYXBTWs=F;q;%%ueR(iY1iUZ?Ye=`SqySB5OzW5*+ygeROi&Nq+pf_6?6xCoS=+ zP*WC;H_~hQ>M8c1Y0S>g%ou+Jz!QVB+yo5#iR^=;I-Ph(ZVE%<`UE4g63%XMl9NLC z(%`JIW*vQiTG`8(PG}W+>6Y{f1G)JC%uZ+&YOTw<;oKph2YW{FSYXDs8 zWxzTEK${2T@6a>b--mV&VE}r3AhC04rRzgmFnl_Xz=r`rjzx7re!h%~_&?wv1U>N* zI#-Hj`XFOa6G@pPT&!%&tN#c)x5H|U0y8e0@vpR*y)M8u@;Xae-UDKU%-$8DJ$h&* zV*Mzjb5Jo2Z=8S&6mQGDp@!j|p^{Iav zRR{=NS8$zXJl2SSgEMF=KHwsP)s0`3=U3L91)V%WQciKR<;MJQUfL42IaM$T)(QdX|$#Dc*)Rsi+_cgjoxq_z?cxTDAQmNyoA?HQE7R zbYlaam7)mRl^WeW?NHfFhLJYHv;_$20ppI1726qRQ!_1#%u&N_SfeS*Y&!T4E>!Q0?edWQnX(-)eE@V*8bug%u5-@Vav%(E0#|YH#yd zZ-+C48;X*a3ePQ&zcTeG9mvYhWm%~ zY)Wk7OK<~u;jU{hj1~n@qwfOEDE-CjVl}uMRU~AV(0P*1C(+H?8ju3-TJd`+D!9qV zJXLlMM>(HI1kH(QR}OG#rV%oiBEnopqH))qfWeg`ao{io@hyp-R)j9!lNlSZKVwo+ z)IOJpe5aj4isL}zi$^{^C5NEOQAG@5ti~c3Rk1A3KTcGH?ve`Bt(>JjmZju&W2)Js zGq}|(NBW{s+gQ}jdrz}Aq!_Wa*b=}SfO6s_4^s4btZ<54WHge5{t<=;1_&(iwzIH^ zrmt18;u8Iot`}Fw?iCk)i#*Xl!w%E3phjHeR$6=clcEQ!U?VLtn&aY$QA})x)k#*t zxf=k(i=3aKod1y;Y=K@!M1CgWh^ykUWEU=Y-WS$tSfFhD!y(soil>~XI&(fYdA{pT zUP0-&;}GmwJh(k9f~uVrqw7e@$NRDQO3S%HdG-3pD*RWZB47$}6?k8Y2y<*%3hwNe z1=YY2!WPdeC)$NL2e(D`I4bgEo8fB0=E7Zm^4zFA%(F}03PM5;gH=LXHb`t1={;Fb zUK~AMW$$yO!d^;w%8c;tZGotT5YSn;6n&pPr3gX1>U(wN6B)KIzqTYvGUjbjGVa%& z-V(pgC4~nR&y&%7PmV;>30~#~x=EfN!nWyFlRsirF?oC>3#uhXl5dBeO}lci71l2{ zc-f@EKKq7Okr5cmM4rZ{)l1yVa{6bowspGJuXTWz~ec(a^mmAr)DJ3;_99yUTWj|B%SSq;R@C5Y4*U8xe(npg+9w z`oug7gXGDePe$Z?00Y3JqSff2?Q~Wm#MP5MSAcQJ~zWXI+c>yR5kOWO~9BSgE@ZyLeCh9(Dc?wNvyQ{o3ri7yW?m88!0<*hU zU2^5ny(cT}a>IECmyI4=cVOtgog72M5~re7Z6l8;via-mIfC`KnhYW3x;F>cZ49Qf zp0gKv@x^}kDsxFk4iIo?yY=ag9lw#FaTHNZGVL^eK@4F@#&#+xf*a<(QL~~;LKffi zY$3+v9sdUu=xvevOD;l-(kuJC4`pC^3>8hXJ-0F{Nr#_?1Kd~D?zCI&o5LKxf@@~B z4lU5ufWU`diT~r&7#n();x&u66aeE{_lYY}S+(0`*FjSn&_){xVwrl*+aB?o0%xB!?GMT^I56UWEs-N zGmooA?LwbjMg?%qA{?&|ME58=! zp}W+p9LNdMKONGmaLSV(WmQK>ioR=N!2_Ii8HdR7V8=h4$<^Uid~*x%$LDiJ9SRg; zP-^AXI?;f!8WA4RCHsWWxOQ8RfS-Q+wQH4^8_DYr?%Xx4sz~A}r>3(UcU_I>VIwc3 zrco?FE{aGnr@|Y{oAG$c>?z~3$(#PUt*hmvMEKj5s~tFPj}n2(qxOfA;_zPbwYnG6 z5h~YvNzyRw@u7y~ejS$lVWfPZ2V7h8@cTc#D#qDR$-4P7S6jDE$Y%e3eG)C(fCLH z?kOlgYpx_sTs%D{fWs+=2dcIo&DNHukK=3&IX%+HS2U z+)5e#`Vai2=aeOz_bNORoHxdTksI0ti5nK7&Ug~xwpr?ysB%b}3Z{gPgmu+pk#hRt zL0!;=jl?ZA7478|n2+#S17o(=yw^d6;pKGFneBZTUIjCc3uA#z7*47+DC}Ixf;8)0 zSURWX!a!3!Cyo;G%P5S+xtLsnV}zREj?_NxNtR|diaEVDUd6^C2TCgVJ(0mB?aeZ( zz&RbK%Ac|%)oCZY(pb}@5&RtVmY#(SAF7$c5CCx@CHg@$W_LRF@^p-vW@w$;_m_#7 zcQ~v+*_p9fPX_4t9en2(RGruv&n}%Y;TF5(nt+ zgjJp;bOC%`oXhq(tvOMnZ3pqkH3=IG|B#3t;G9!ctxdQJNskmxk?psLiso!A@Li@+ zdLlF@j}Lv=B2B_FJA~ah@+?B^u!9~$n>9n(nG^}v5PDZrL;N1r z6IPu@zb;+Wt3)LWFlR83v9G0bfhCN4mGGii#!-&~IHJDBoQIOr97JeZiC^WnY<#M~em zsHxL5@X2#Ca=9Sr+51!Sr-=96wYBT%c;OHHv^+Rzs=^}n#sJxDi*54?ha+Am6`1S$36 zSUo-^kf&ukIgGn7yrWgh*vWLl3 zxQ)x2H@S~>KtR@@@lXa7c$A7P+BYwEpQ2IF0@`%zN>oWkR}ojTRtJ^sgBtESFe}{S zv|zD&8uWr(*lBj)LZoXa^pGzdcXKeTPPz%Dv>IwU#)__FR|h>3DeF$T&|PHDNw#yf zgZ10m>IhA%E>b(gi$3-^u_U!6_*(F=8MFb2JZV#~jy&PBeGNJ!a zl3?J>DrIWqZ4KQ%UXR>99_zX$Uv;^+^N(Hee~7KqCMVC@_f7Zaqtn&MI)~;k^kP{* zcTq`Vi48R&HvE0k^eWZPW~b|6kOSl_t||TCA7k&y;zv1TgO?wtuN$*%U%jUf1Jyx^ zr;y1UQC{IG*3vwT*)r+gKSlB-DWp`{+}UeHAo3TP@!Vf)!aCm(AaXr# z7-*&OoUhlf&62-F#7E=8#xg}mWC|9s8qGPouw z-S#KazS>K5rkd~B;Ii8@-?83o?*z-8sHna%a9J@VYFp13Hjl;}mQTN`{rzuR1-YF? z4l#>64ph7`x4>7gG)FD@apS2dx*9TZjtNRi&OtS>gEP@KZ_2BeB8MxdMJBxCXbX}D z|M)GVNCKVP5WffZDjH9|UFZ~t+U$uT7tjDlXZy`x%ojudlJ{(wn7~z+AS;rHXw^+} zPuAS-E+Eo~icI|a+SnY8&zj0!ldn@ zx@bgdKqc-wT?b|uc??x?rrP*10A8PQf|CT52Skx0XO{>0nY!;5FtDwgCrLj0U}-z= zGWuT~n+JIe-xX}(YdD6@@lSs1?^KVBJmA%kQ?vHQ!jsiG$yJ}u&Od#=P{$^a-}_ET z+M(W4m9e+{kK{VE1t>%3gH3E}HaRfEG}5tP)gnZ7RAGznB=Q%?d$f^RmA}^dac5r^ z+7Zwm2d+H6;%vcV+g7QMK6n$xK(cKH;1IcmmwR=-mUBkAka-}7veesw`Pbk|PcBJi zd|N!S^w#{xnR8~CLRe`FrxqXbkJ3)b3z2((;fH>*fRFonsf~t{geZqVT|g{gjKe*Vcd>jT8oCUx+ihU1e8zOT{5Ft zwh7qS5_TShOHMM&5hZ9o)vQmQf-tS+{e{8ti^f)d^O?*_~BNUMzG#tTV)XP%{&~?W7;y>x&62#&tnb!=M5>_Wi zIc9ZRpWKmdS#ajD1vy!xs5YuJ;$}lJc-Q@Z_`9n4Tg!SE^ zE`6p`M)F%}p%lkP*cp0G!g5esZm^7)ShUhg#?O9~q__B77)H7HP;|83 z0=M|sJc*I4+J()@+|9|TOQI_Kl7WYb4i}c2inYcs;VBoVkb0M5=|?jO#Z{d!_}^Zp zKLt`95W|rdhY@{A4idoudjB8{XGTvjxKS(QGtcv}kz4N6ERabkE@aK`ofV|S9vY$T zyMRa}*$BP2B4D5?&N69n%9200Ds4EnZofX1f)9n?q>_s+z9!}BAk3`~?nu7WuKK}}nIb~$YTbXsMtf`-2Ra`vZ2zSb zhLRuntf@jG#J24%fBZ3;q`YfR&Vdmw5;iHjO;J#H76Ey%`X@-Vi{HxhR0 zE@=RUD*Y`n*0>_RDwlFvKd0D~u3?}#8LN$xkXs&JUGu&nzHJ-@>4G26!Xr>&@?gx# z6g8gNF=SA0OvrE9Z$??kSTbFo;26z9yk%+ZYl~8~!Qig}*}ObTJi?YJ?Az&7Q3E#+V|-*c|sPsBl`~nL()Ma_ zqWaY*hH0d|p-30zCM?m16B<;_a6^1B@LD4p2G5^j^OO+ml%tTjCMEJI#K@5>E>(m@ z9u7vbSVs6TRi28YO^2wdKS3CA&@IYyRj)6l+a6KRLR(!AX)mzCRa|J{A|xM?*}W3* z?81IXESs}nyU!9l1hy7^NLg#A4zw@F*j2 z53ul9+uJaCHsjvD$;B7_14zzh&E3&XxtCn50lmMqE+O7|jB2xbo@#E5y%$e>+peB- zb{^%*uyJ~1xHswQq>=_gKUs9Q5LzGE|2b&;34g@X*lO;tLm(ypt73<~1^IVR`}qRY z5md!&+3ZBWXBcSI;WR$TXi<*(+XLg5-uwO{e7R7$tW0{9RXXnFmwO&-?R)T*DEdB^ zyLYttZer-`HGTW7QWUw`vH4>p=K5;HBtG#osTXShM|`z|vvHBHBtCt}g}<8031cR# zS?TBN+v1Im(&7>}l5$sCLMrmRmI)){?3vR)&h8MJaDxSu9P7rsY3*A$tcaL>{>QxJ z3aM0pAe?h(kD54q{op>Ut0t3@?(#c94x2jLTF}|evJ&{$_d==IchF}zvZY{meQi8_ z85Lz>>69V5Wwc%H<4Ys<7p{=o@o*jXHzEPcOek>mN_Q0L_GK%e#S@ZBngyoALKbx9 zuQM}WtPK8NNsmB5m{~Jp*f163K^smkS@^Vh?YeHEKmd5XPp^81_ZB~aB_|Gr(+&@c z=U9M-v=WXBqdW2kusyWlC@fDX^I@@9BqsDV^^`&8Qt>Pg;G)cHyH^TyfO|tGxAc)n(P=a`O+}j8ZjMxUdhvW2=l?@ zwb!l?|B6F+NsFf;MFe$t4@!|PYwB-!7~gd=5>^a2tP4Gw^V=a6C!VsA17#Csz zJjVG=EKvL*@HHwrz2^~E>d?Lc$B9U)jq7tu{ylLJ+SkH455eK<7k;tLJzg(R%#t?H zTeL2WJft>UDEAe?1xyTUyoPRgGnG|p(%B)C1k_3a75DjiWgGFon~Y#p_bqkV;DnNa zJyn$Lmg-j@?vYjSuvC|p27CS07JjQv%O0lq7cn>QoMZqXqIyW2F(!}~Cvr95@(xm< zs2yGES7Ix-Fho$pv-seY6NjjCRyvyH{V(uwgYpw=dbzN2MB%|TiE9J!p_S3&ut}}s zC!_Ra@_Zm(Af=iTY9=<@q$htX5}`<;hgF7dFJQ$8XOifOYF)k>#^dNtVAKJ4hTw7U zm^FOt0&LfM*BWU&Oo1iQG1*(m&!p|HMxI=TPEMod7MinBCDoO6^=3K4n7ndfT(CU2 zQ2%wJ0DbJNB#irK!Q5O7@^I11U#a(z>$?|gcxA-{8ppo5;spN&jQ5Os^XR!#FbT;9 zw6Z$i@vx`dYE1=9%`{u?k*T_;w(CnRy?p;Gi^g7CzyB6=4bN}jfAh<~2f7FUwTWty zXE?KM&5jhZ4>)0Dv%TU^O=Ws=atfx#rAEaO8w+_lMV+8leyyHpNYG_VG)*$uccd9m z8KmqU9wd(hE4vANSXPEf(v_-`a^Sst9FzB5p%U>tDWdo&Wo?^(2xhh4x|tDAyn0px zdDN>m>rw{^cb1vc+kVox;n_~|w`HftA!V;#GL=2gkfqKoirGOq7d~2XySDBq88vzE z-L#rKDtOYlt;0r(7nZ&6esd0b#xMc97FxE(-@3Y|xPr-UYhLv`&~gPu68ueo$<1@_ z=M8y$I6O7IQb*7?G)w=&aL;wNiUc&oEUh43!YB>XuyK*DDsHxfT#aoQHOwNEp38Ws z%ea?J=5%cb8|n!vNW4}xNWwUg(26Wi@H?YQILcdB)7Iw}9;&ScD>az4hyOvR_U+J5 z=Z8uFsEQJ>=Ixues6Q~UO#Znij4-3p#PY0EGDy?(8(Kd*bmWS3{HS$hiZ5e~L`5e~y%OJkQ_wt1o@25plRt&78m^`B#e>u4 z*8(sw?cKJ^j!0wa0ba_}MG@s~{x`^}9*?H1MD<&XXA67(XYj^vT3Sbpcq}+KB2v;z z)j!5Xj=|#|RGVdmQJ!ceuS;QRF6>mas8@CL_PPn&K*=rLso*J=k#2SU!<8~$zc!o{ zP=qDJM824v3%%8zS=3HibyM$Hain&r9JdOQo#1VepE_2$%r@{&MZPwq59cIc^5&gy zD5cN~nGVQ8Eu@8_H)-(lens5K%Rd-23)ZOi&8wJT2LxKR{&j3I#P`2F&`C@e(4U=a zl))>beC8*?rLIT2A&Qy!z4LKCwef5p!n^y@uwv&XPw#oB7PYaUcW_2y^@P=FewaDr zh=%qw2+fx(?WC5M%rh{k=`cQfMJ1Iq!<&TAT8B{#dab}EEiHvMdOigYMj2uyM6nSo zJ-T#`JDZ&Ql((vv(l046u6>}Y`*!+NxB#VQ_wNZYo=iPp{wkPCizX@4kzd8fx)606 zDj>~WOqWT;(UUL)3aA}d-Bu@#rwS53G_91eu$==<0gpOpNNDOH$F5_B8PC`^<{~LS z2aJt^ocltpt}}Z_m}psgc6_Alt9XgeKE@#wrpi8~nC8lEk$)jHs|l%=NU}nWo`iqY zjl;nTP1)W$#mT39x5OrwtniSPuia35y!X8CxIRMl!XIOb5k#(*#%N4T7K2^tM&Y^pb5Ck(S?Vz#I+3t}A6 z@jj>ZJ*({!0zStM_rEc?yFP@8q#4{c8Bk-)DnL0kL6Okf#-{mzWb`8|u2WVzkF|Mu zB<8RhY6|0rHkoCSS1mZeb+poL`j8OpYoH)iHC;ucV{ub@OfNGpb+7U`)oI^)#OP*D zO|yiYE3yRjvxV&Dgc%C4bw!QH|`N%;yW{_`dbC0)6Q6Oo8IAxd?Rm0zR`wOO6bN=8{JF{MRKZo6`|$ti^*EE?LYPbpPd z(+91Jn^qm08=~9y>V|Kg_WsqHB6SUQBB-)<_hDHCMP+O6&fe3;XPP}fTJo?s(bij% z;jRweQmUkWl6|a|-&C7k`(q56Bac04LJ^`kJ*>0{RKu5v#e=PebX1jCd#;Z^+G-+W zH2J-kBr*nKxd*J_r{5%PUTe0@4D3t^_np2+**5H8em8dv1Zgx*nev_AUsA1+h|FH> zF4)-(K0XIuCH?D8E)U)|smfPsxssNK%<4suRw-C2dE+3bXnY#=ee|1SH$)-P0>Jx1 z)+|-r3GER}F&ZUbDL+j806CE?@HkAmS}&2Lq9IzbFMjH^*B@=1CX`MVS$k9i^Cu|- zaWXw>O&Zx6XoMEGr){|!XcLf({Y)U|U4S7R^oSYafydhnbmCsrHcP@J{p&RD*erFZ z$@qMi2$R8by>Z`9R#1XY)~}ooIxD{nvc%fn1Dhj>Fg-&Dk5KdR)vm#NZk{#-4X*Ua@T;yCCj&)WoB|JLXPp)&V*aza6;TjB zF3TcL9F%DYWTsKH0ip407`;5{Aw#)ygV5h;!rTz9PU>)7Inoo6lvg zpy1#gH5E6JQ!ACg8s~47CGQ&EM$JA2B7QMM9T{avhw$Q)26R>&1KQjij9tT!Bskd` z;B7pDFSaaU7UT?G=mUMkCpWTydI5fQ;J)C%+fx=ppY>?1#_vSnU!-GGpTi6Stk4D$ zA8fz@fvW?c4#t^4%hMsu;`P&}7B{Xvw^hm*>m4zOJ(u!8mif;&guZOD5_zJf=IIYs zNAcZJVVBN-FsZOMx9knRTUvXb&+Ww#(k2gzg8_*{8(jm;ge!r^m})<7 zXMNM+`0~75izjo%xy~*6{U6Z%uSB$#x{RCB*jehE5e<3D^6E=5Ej%la5g87 zq`>{iGsgUThc-fKUs0?5Gx=%|(&Sq+h+Ht(IHK{nV_j=AZ=e#Ak-R!gyHJ#p0{W5V zxg!{I;B#p?3PbhEg)4~J>b~cl%2%CIP|pve7pR*~!QMZUx9r#gwcpYACcrTVcHtRf z0YRc?eaD*}GCnuY7Yg8#RiSMoWB=rE)Yb5}%^e7$iVK(K2?5~kPPhhUOpb^+ zX`|kaCa!eqP~c-Sn$c*4p>K+eAaU_3;J&%%PYLu04{ERdxlIHwAA+?#2NS5c!a%f5 zMM%$C1mSFY{1UKvrV3{OwyNmw&44A`y-jJvl_6Y53~) zfSB4hLc_{qvVue%clhAn1^np80jj)wo5>4#h9%@ejq8l|JiVs=Y?72peHq=Ymkj?W zw___i))E8q6w*=t7U8h4bskI2%&Sefo-i0q*@1}|hw%DjI$t7FYI6sHa*XX3Y674> zy_VO2vX8lXwE$;hd@w-F5W>eY0%z+!>5}HWrQ$ErG8QFyNEhhqabl@kL=ROe`Tp$A^uee}JfPS_;aBL--# z4%sGl9ej95+V?0va3>=qIb#P!^*ny*D8C7Y?=ktorL`f>v3$N1^I)?4(`}?kWoi&i z$53T#bqb@lr?0+TFhPa(?f?yMzFcr0a#`}jN}+5@`$SrEhoZQPlSo0Q(3gZK=AHQ* z==FmKtk&KV6QWfE3>x$p3*7Do7bXwR^!C_X#v0r5=0C$-gRKFSf7?yxqYdZR3J=6V zI%jMtOJpo14SS~6gh_Vnu9Bkd3JfjIq@ln7qB^d2TCjyScEC7WAeFO{L+;S--LvRb z>Wws)qOcAk4lR+FA+m8v?8om{<|Go2uJN0mDC(EJT^ro;=&!Vo;%@WD4C19wW!OKE z3xTJ7K79`(0xsRVoTL`hV5uH2_QdzXzHgPISVX9?EIOSFkj0WdVjL_P6fpefmjt0) z47r)<@6KF51AzhZ=#pCqmz0;JQxPMoaLVJ^uKo|wE!8NOss}oufeA2wvMoy=7ng*I zfYIcnhMaInTB7T2p%JqcE?C!i9Zgs4k>MdaAr1WRP!U+Uzs}xdM%ji_3LmlPy$ThO&DRlb38e ziyTPe$IfHn&beHRrnGqrdiA27uj?DlvpC;64utwZyw*Pa7r3WhTLz;6QoBap+l))e z%?LspKbUHk388jkF<>uPMHe-j>}o+#Y^ODlEakDFsb2?9mGpeAZ$?iabH^mR?T+%? z6ua3UeV0|cK;q`=K61enz2`jfsCDW&5@)+3@`5Ed(@PYDI?-MS{CqRU_j&=|7C?ME zfrsVGWWB1)NlQw-oI~Mywh-nfe^NL=nLRBP8J)5~ykP~z`;eCK7k7uu0Tx{d$Ph}~ z6}=8Xouq-Sssgj5%`Zt&(F9+``}^$ki9b}?g{Z4tNt$**F$T@)(8%1(7Nq?gv}$0o zSrD_7w9?(geLs`3(tV#Tn@}r5>LIZuBrREhg=mFMT@^V{;QnIb%VcNbV(0#3q7*!{ zu`HUhf_YNCc?4k)K3riOBz(QcY&;u2nDXk?z~GfYzSIA3fvf$visG&Rh*kY~*to#| zkEX}}?JAN;QBnMlw(9pg`P;yf-c}U0Dzhc3G`WNp2OLZgU49{fV{rYDuDwH`QJ-I5 zAgK9l`H=GX-rWDoM*o=@F09=O&K3sJe8Bl+XVWKe!yYNApef*oY0-e@*1rpctt(80hB-OPC49b46c1X^P{U@Za29hntZkK20IW{P!BPVL z69V==hH|A?fQ(}HsHFsBETyOk2ilj>HHMMi*KYZF?ejH6#J_2YK#gn33Iyn8m)X?d z8yI2WDCQVE4`9>Dy3d9`884d7umDy1OLBAOIyExSM7T6e<1!SA*8e*11|Y3Mwu<(o zfCxnYsQ|1$wrI0lnj_{x(Bs08k47rLjlb0mlumqHmi{2?^e80z-#GUg%@U?OeB z4HualM()HWN_J}WZn+>JPZoMIVbhJw;hIgn+O$VxJb~QOCw`r8OM`KmQ?bHk6`%rW z#dRISX`NHC(2SxtPthzVV!(@eM6b_^7OfUi5w1kmffW#>IuI`4ZdW-z+XoCCY#brQ zsJhO2OK~LXssQ~mQD}Q87|kR4`p;YrmDTq(zmWy5jeB-_F7%)I+zr|y{-#IUVTSZU zj(cJ{ONbqC{6u52U^T?T7vCUiW4d(257v}-61MT)Mx`ZPC!H>Ud6kMGLVUeJ((v6I zP^tlHRnMe%k-TwiSWV;O2RTUGkK~Vo)5@wD0Lv)9%d|At%iQ3$0@r%UO_IN#rwmLh zgO>D3>Q6dTd7AC_IluG4lWZQJud2)`vCEp8n^NHy%0054bBurKx$#%Xa#N>{YjG7Q zth9hTPq!xWYQHTt9QtsN>)iI(WF-NCx74n5kQ9e9I3x_Fy7Oh|$$2TyX~{oqk^!cb0^Q!KA*x0pV)Q4$&WWA`xURXl5=9%;*0^BIqepwNjf?S4M>jV%MCrdE@!k{oaY?4y9A~T9;c&YeT=|}i zS)%(ZM>B};T+ux7qXv+>or!D1G4^obbAUv1&qp}!Ae}FW2uR2svJ6$$GQ(>4wFJg^ z9J-+P>ci`P$r_`@oea!e^X2Dt^+snybLAkCeIa$-hU+1Dr_hGSz=__jI?ovh?&B5 zNjfJG%<_%w#UL@cF~qwa%ad8`7IvKH!eJX8V9-U+^f~O=K-C9c5$Bb`BSfRr*pv{n%}O%( znB`ycx?IVcqaxE@CvDVY6n9>OBYRajgovMG~CMAu>dD zNpeJ8s?|2I;&Ko60Ljx;U0#*+b!$HmmE%v7giB1>NrDfGdN$<);>5xHNN~q61IFOQ zv3bPy@NO%6)LW2(M$TVdjzouZuD!a7FSa!le2{9Jr|f)>{x;zQUA8P)HBceA+gmTZ zhpjCw7=>W8{E_{oRIYb0AYl7%k27K4*H@98BB7sN!4Kz+&g++$2(#WKBO__leV3)e zAjZf2_WsPjq`P{tDzbtzbjR@AcjC^Kd@L4V2cWL|;Jy?&NAJ&J#7?;00L**%$`4ZI zwox@Q+ViIN?mFzI;IQ(G!f7iEI3C!NlUP@9(D~C_x|NJgWqgST6H*V&rpA^)9rE@z z>ir?0J$L-GW2A5be&F;!$h{f<*Rn?N9#!nLIc(O1{Mxc?k!W|Ay+{TT_b$ z7fqFDrrfvdl!NZg7xkaJBH0HGi-Dyj!O-5-1CO2L-WR9`*lR-P_#^B&x^K-JrWS+@ zUz)gR-FfZB;I^!q&yHHY9{k7Xfk6bsQD-9GgqbQKwEAh&k6H6Pc>i55Ab6GOJ-e3e zr>rP=cFBu}j$7-!a=#NA%hz6Pc&M#J_*YwI>KEmEeYQ{gG}JtUoj_SqMSyar%lEMk zd(G!qfFe^((q_8p7A+!Oxx-JT;Y%c$#L%bEvccgi^KhmrFzH@cbLg>f(dH!GFgac6 zp$_B(+**M(pYj@~PjlN_kk#q2WBOb{`cz=&8VWml)~%&C0sd4lfzV=2ii8?B`f~l9viRFn4=(E;U(*g6zsBC(!&rhHma&4IT|)Ffd*QEH`ja7xw#a(U zb5i@ll47UU*H~wTw*X$9)lSk%UCq^HrN|iNA}e67V0o&;8C2G^pGa8`4bF?}%Ng~ukE?3hR=yW+Suveev@2u9zIHmpG!{u8 zwcT{ACsAPx#1sb=$ki>2H!i`*=8e&D!J+v>Q-sZjcOfLsk1d|2*lAfr0wf+ z#ZF8)p~zxA5Au~0+8UQe(F;YtIi;rTtVv6hx-yj(bcD;-SSJ+6fti!>+v!|M9bJE@ z&;{Xv{3X&=ogy7g_8?}>Dke0Qaz4O#5l~y3$`C3!mm$*N0W42-ZeX)?@AOB$mZ^1a zsC0E@{LDGd)kL8gk{wM_! z>!W{XlXgEC)?c21dXFp+nXXfZmRX95VP&REU4|QM-M{hraK4#5x4bKC_X{mO_HN#O zT{Xg%X4BnanbzeHegnz%byq|6OyOZCdRkKg9lW?0v zm>cmxGJDGA)9%7penxd^Do5y&zR*n*-8Q9GHWHXUF?PjLL2g-eRe*iCnXx42Ry8ru ziq4!nK=xn;@C8F?X2+Ir0IoFTGu#LZ6-El2`y@g!t&ffHYB&qT;EvB(!+ia^ks(*4)d|#HbJQ{cXO+B zd@JFIT=uL&%Xf>BC)N5A+xk-N60J|?3RO&G=X1)PbR(rafR~fk)dtoqFO9~OK+c2G zXE`}?CV~124z9;FxU8#d2q~Uu(vv(;;a|=+vj6v_S8QBU`%f_oIP{pN6ce*|Zu{5K zVvaxc8JfosjZob@$_kyN-+IU}IU<8M-vz409Z@(1088*WU>~1>4%Baf9jI-ZOL~1uIm8MoL<^kQv2TR%JVg*}BTJ}Imk&QQnf89wo zM3IS>BTDTolcKXG%NwBlEK+$WfREe z7kg*ZvW28N2T7yH{h-~#kWa}z?+UEAH5YPOk~qK_GZ;OKT#XDAX)M&-?B_(Sqv?XI zbK4YNyJ5;;4tY#BS>~txB!#M8pJn~4NLFKSMw{Bi&f{{s$$*S zq1OJ*u=U@SWzA*+g-jH)eYnhITsmWtZ2kM6eD&8v(>KAPK8gw+wMd!K-7DimWg=0r z`k(IeM09i&?Bo~wT@35Fo|?(sQk>nOHpX3UPr`tq72tyAXdT~grb>hFbPwL+RcM7k z_d_{iAW-@L7BpYXa^VX`?*)9ZA+epb>2hEl#46VXBxn5UsFn`)Yo4#Ye6WV>zKb=o zurpo;#V3DR{h0MRq9D1Rnl9ObkuwFXhG|@ZC~U zCkP_i(kZ$zRtCU{p%m|y{^L;0n*BnanOMQTz^~P4A@fTKeoKoiPWVLoPuSyMd$-3X z=f*5h&0@l6Qo`A$>FUG$t?kry>(&lFOwasD$uY4Z+}*QW_)umwI(JDI^>OMn2<_z^KlRMKa?^!a(I<3*)}J? ztaqTQMx+I2JKpB?JM>0nx3sb?wT%StmlU>($8rBl zTV9zE@lWbNdQ0Efw=yL&$8TDCT=jk8x}NSmj;FrmD-%_4VtWr{IeUCo|2{5C_}7*t z%TzsmggG^g&>0^AbK3F_N@RmSM{2bo6@>xWf8pUXlK1Q}hT7Z{wzhsjBor?T-wcV` z>Lgazcn^#n2K*H4*>}l{?^+qq-i+W%ExPrVP}T}t*1A%#EvIPzEwRWAzQ}#9a9v#H z-VJ|7wdwBsw^jRb3-@Xxhvv#G`WNZwg0a2j!^hRf%TJXUiRppIa>}gX7gtCtg&~fy zz$dILr^SV+9*7jlzhtYUFgZ;Y^?uuOo-iwDQU&c6AF96@rujS$6ZEBQOXT~8utJjK zHFj|H3@@0`i?Q z4^**&S9K%>B|Pb-#N^97i4)nQhzP8^Rb6a9)cD(9K7-)-w+b;mnHaLtH0l~>U|g%6 z2o#3;Z)l`7#YQ`hYj0R1y{ULss9b{Xd{m)rqDqIjYah5Ya>3OO06#x~8N`ZLy$Y%^ z8@2Apc?iV@y6RD<{zwyK!>>legeLHk=a}X=o37VaaWt0Us-alLz_QUu_MZ0NGh{?9 z+WDkw)kIWHvQ!hhLZlp4%1dL!wPfl&$_qA84+qbi`ggL~p(D#Jh!^n6@cKdyN-5_RJ`QZ%RIgr>={-=%0Rs?<82G^i|0x68k#t0 z-Zqy@P~iy3D~5JsMwdE(Gjmb+LRFRVHNGJJEBVGDNTND3z46A?5 zYT}-*jr#(f#6zdH5o(NSR3d^~t0<(JdfVRKE=w9f7@xCmHcO@FU^*l}gIoy(MN4vS zU*IOlTLm8@drX@ zwyU_R^Daf5{)%Ay+BDgL#a|Zq-w^|)WlrTNX*FK9v=;Y^H(527lV;9dx>+)rZn$_AuIi8{aL5)Bnxr;}r<%e5{MvMgfQE^uZ{ncTphUM0ID* zJQHetYTVEJA`Fs3>lVn_mBBxJhj%o;)D5@i^y?k_j&uj2%Z|Og2-&mbpXd%$`PCcx zk}2K0srx6B;^FmMDDa{CR0(cm^((8RXDx14Z*x}x2juy#P2yl5B-^h*I)N1R4<_P7 zZod-p(?tEZ_V(cC1$=SrU-O~Ck`9h&a{VXAqweZYe@S$uzf;^H7b=63Dwkf(_wEe5 z^lwn|8`vS3ZH+Ax{skGlE-8AEI`pSGv4b3k8~DDv5YCwTmjz}GI)fdQPldV;qw*Zd zwHB15nGI+-=)MYXS<&)tXKeS5L=<~4bXc*Sg0ILJ4?h0ucY{b`$j*THtovIN&g`LF z8!nWv6_WNmiO<1-u~9y@E0a{jHN5X)oi$y4NH!&d-s@!SPByB>b^tU_FD6=%iV!odMdDIq#>WZ zan_aNy^=P6R+#*SC*ZnIwYpsBVW>iztYI(NusPO?XRs@^|Tc-mrMv1Fg_I+1z-pcUIhG8dGc;QfvZ7#N6f0yIsB+%(U8si z@9PwiB~1Nl5tZ-gk&`66+U6S(EN{v_dIrqwM3V6s;mQQF2HlMN;USiXyS2&NRo2*p zyFLq%q6iVM%|C?J9N^NQz*SZ z-6t({3#*y-NYV*(;DzM@bR(X^t6ObxV0sX5{0;6I zI8vEbC6gd5(DPS=Y%LU_Eq3kT|qNcZ`ZA;Y}q){kJ_0o@MVg0pxoNY`IT^yhTsqD#Cv8CIB+0lMrB zSQNf|uF~IaU`wx=ALz_hq2(11Yl|Q5i`2|~kC8|on# z8L|4?cn)_75uI}pUF42@pF6o==Nrd)19iE61oDPYCAmW8%ncsMc!J@-kj3!yL@<42 z^}rCPmvC8?#N8h#Nn`M5qIZuvI-%_9eRc6XkRkO3gFTTU1KzwL%f1;`ubAkTHM4so zTPI@ z!QQf-{-`MOLUC)l%a1WdZxX5x`WfAV_yra2GkCaw#cD|$c@EpDR zhM;b?L8;V1 znAg|ihNlW`%K9l}EBvXnQusCz?>Y6c;5+7~AOyjoU@j3vwoc!MlT6_Zy0cA`8^AJX&$8i71O6tD7 zz~1pA0~i#x0yFMzj`tAsuE@8GvK=cebE0c8NK~%$S+aMd_L?#4>&llF3`YI&T-8d_ zSC2VrXz?wYBm;PlG@KK*Uv06BaAbC$J;JgNRGlutCU2Q|VLd1=^^*&(mfIta?@V?K zBIIJAaO%`fE+a@Niiyka4i^@K@dl}EE_e4{Om z=m`!WyMJH$emJ&0q=(Rt$@aG}cJ;5G6SMJjn5E@2AGB1OW1=!L<>;y?V^*pqk0+(x zBqaGI7)(qNYB5*9DH?v(QqLf`3}3sEd*bWK!trHHSEX>zB_a%mVsz4*AH6FRJ{_@*_m$lK=S-jiBRK~Wzd7_2yx7C{-w9NR~t z5>}XKJ)7{bq|j{wh2v3eY%l{AMHLNc!G^1FVGPxG&DYt>FZi> zqhTYlX@=Xfwk_vvM!E{fNI>cjC>1L7$f2|M8y=17O^p*yM-5n}{DB?wcm5}8>py{g zzH|co^G9GG`$28}A3|dPAMH`1#e{S1Vm8v{I)S6lcXz%g-}DPe zU?8S180cnRHKiAT$7&%uGS!lo5#=H^O8XzmRPaL8#oq=YM)# z5cb2ghMCBowF06TwJ&opK1KNaUov~N0M7i8&lH5qrRFb{69j;>_ zqH($t_n9=N5AIa>vq*$}l4K&S@7@6*D{dZb7|}Vx5M!p%YsYG z&+YEMkK$m_EM$ynTMSUa>V^5HG=$P*MJ_C_sWRavfM|u6MNEhniH-t`3j`V|-PJz+ zmQItVSviT1dH?q->qWok)4Qv4XexWS#<)D~)9>CsNqnYvfo5hre^xJVM}S?^F2m9v zqq`PIfa`D13sLX0D+j(O#Am<7Kkdcve6dW-7PQ|zibp5@7igqMazDpLZyM3hwgn36 zWtg@dfbhmlSFgTc8h!ZJC)0`dK+E&PqU85xGZSKkTmn{o-qNi)S9HoxcdXXYV+Q-t zX5%IERg1W!s&a<;^m1n@fv>zz^84hyLQy6>e`Bh1W}M@ltVPamUMtAax%LGG)UNOy zR9M;4A@nHK7wuh_C%DCDj4L>8Ps!Vb)Yg&TPovV4J^lx>pVmvsr}>xY&A)S_?4D0& zUQz$wY~}xc8>c9CMx~!zWse_{GWP#BbxTE3_WyeZ72BN-lR)6+FX#zE(+5pnMBN@eLD2&S1#FnsZ#Nc@j@hk?B zi8h&3FfzbC?iT4{$b~oN!SNbd^PJL1^(_^K zg*Xur>sYzC%bnD;K*P*=1rhb}@f5o2nWD%tl*Q0FB?-3J5~23K*Jcb)`Oe=^J6r>X z$J^dEM5>`6_NP%tajQ&mm~TT)fIX{VU&h#u?Kl~vGj^wA{#+DydM zh!0GjVY1b`*+TuE5*_T@hR1g%)W{(nC=U z1)ZTj{59y81~ji$19-(dfTyBA(W-!d062#+F7k;NGP{&s4%~_LpIUxc7&iKeox{?C zMPrZ~JxKj{kf~f_en3hBG~#h z$NGU(9Z=O+h~vkT2{v`QjG0LPZF1zGu{4#vL%4{_a+THu%LmeRau}98S|l-c6W-t{ zYNqpO4Qe%7Jzh{}Io-3pyZ6WUj<*(d}Y$Z%~{&rRObr@_bn>OD3{M z!k7SyjbT!Pzj=Erxd!T_BkPVR)ubCBFi+m)GK!{b@okE&kWIpGBwp=Hb{IY=f-Yi% zkqWNaAx<&1osYQOLaMow{xJ<+^XA{=+gHmJLa$w`r_|RVk#A{BeedR|6};nY`07Gv&ziocRNMziOoIm zw=YUsJn66 zoZ|ECYOX9^%<4VJhr6+(v2kK|@Oij>4Xcfg*6V;TOkJJ8@g5!3(nPJ0JQtiTnR4#A zt0|clyJ$shad)O4sbDE|3r3ja!X;dW0(0EdI#$Oum5?@M9CH0dui9DjLZ?`n6Kgfm zU~G}rrQY8sgZ3sA4NK8*yP7IvPtL4Z>yEcCN4JcYa>T0jSYG%0UkU%8%n2CkX6!(~ zL0D*3>dsHbdm0A)BZ$R7qh{%v06SgfjF5X-2rnSFE9aF#3!(gpReI}&u%ynesk(}) z3QAX6R2{r~M1@D}^m2e$ltX);G3LM_l}=oyxx_4)?V&QhDoe^q7k>oG)cqp*dP{!) zmX7GHZ=ysnjhEad;KHQ|g0kyD4Z>)Tf2gDqv4jey$q$3T$ z#J=ZIubj&NLA+Lyu^urj{e>Kb(o(tf13oc1=ZD*ir@$75_8pv4Lt^dsKWG*IeU^t_ zOVOV{qzaB7e9!;kT&X6aB>BJiJ(p_QKU7Mz|2j7vSnfe&*2(G?CYV$TW$3FcqM;^j zR8>2CCFBCoyKBi6us-Q_Vty%P!G?a@G^1v6K8Q4x;KW$otJ1oj*cM#dO96mJv%K zZ2@=Cf2NQ5;3oc|6R4ZcUP^|bJyOh=bC$rx#mz}4Pf3-KlwX$gL78hP@u8vL5Ma~5;F~L zVpUmwVga0e(zN^aYvO#y$e_=NoO$pka)GRc^AJ}w)dAM;gAHdqm5`dv-Nj1_$jdCA zmo=N4sn6q8Iz85R3+>#GsO$+0kS_OE_-#DY;fpWXfC+Vk-cWnX1gE={vCRv&76^(WA2aUN+Jii+h`{Y(RsM$?_kNO(X>AU%$YQmdt-t#lY} zz1k71z1PVq+G`zb#M8>+caGngd`mkAGI6KQq;VqytySvbL6bKIxLJF2^2Smxl1HPF zZD*3D7*yT;QKS^WlqtMoIO~3u4!WMkK3H|l@#Dl&+N8*~lBIbygRAA;;OwZbfC^fT z2HtT^Rr?6p4v*#QwsM?gQ!-5VG03g0e0jUcw_+b#qsZy)G)Gu8Ta6iS!a4H7*eb+x zmu;vELr2+O<7xrxwkzv0&3L{v*1U{mDdNMIxDl5dA8@Z9Xh)ciriOmYm&Xevs>uMj5ov-ZASuWh%Pqj z&X^mFG;uV0!H%E!U05(C@ylv61=4BFvaGZgOKT{EXvvG)P&iZc2e>xTZ8t`?p>pdn^HxSbkl2?tH+;0yz*K8kRf zG(TTo^qv&vCBg0xAoEVUmiIC*-zPGE58T9zU&G%E8_9GTmh<0t9_($n!mwMHpMsGN z5$}RwDP^V1!3a7^Y1!xmI;b41sSB_!0c(zmt1?xGc+(0^J0`{MOJ@WD3!X#hFKcb> z367^{KOr&Jz$T?WA2jbL(B=CC!`+XHS`yQ!jK!65Y(a#Ov{viwe{lKzqlx zO{{>xhT@|&@GdLwik2TXw7f$;h2}vP>tyF@T7@Qj^SNf z`I{dOt9d>S2vA6?p2Npasa3)arzO&^HJj5V$6}p7Zjs17%Y^ zL7+MZeQ%z)M*bg#9lzILaZv?98G4CHby@p;cErweb=aA4vwT^Rxn@!@KF)w7*#udT z^;2TX$iUQ6jZ$K)#B3Xdhwe1u$vDM8TQ4e4j~R^x2mURbISPWHd$Z@Y)VOtg{%itZ z$$79T-$2pT)Kzr;n{6)MsLCVpUQg{`wbog~sR9Asv|2=Y){$Q!EqkbXS$rlPp=t-F z%Pogy+c1<~JFdQSjlIfAX@loC{asU{FrR8a8P@*5X9{7ZaXdRvS(UZ{ zRn*t1vPZ8#)7hXmgm=3?d^`L2^6Uz3e?Q#3v~t9)41SSg0vtUm;87m%%g4}K(tGNu zZ93i%;;fIlSKu~(Xpa0aFYr#Cbs8ac`;r8dm-wn^3SXl=qK<)_l_2aE(~)Vu9od?L zF0Ue1pIvYUTS8mkHdcUbsPdxRK&id&Iu8{fPGwdTr21xniX0BB&|!=E_G z$e#6H=C^bt#zbvIC(?y1yZL}};P*icqm7uo6O}_1w2rwcyoy?nH~dK^H3@s3Y5Q@RU<{CtX`;TfgzL9ToxW*Lu z+uULb=N4CsBuaM!o63P^scs8qdCy~f1aE0z;Md_pX3Z-&%>jwVAqC&*Nrk+_GZ9xD;_ksvcq^iH2H8)YHehk>MCS2g>^4TM)>Jo$1EL zQN+gm8Q{&Rry&5u9)*ZI9~+aB#2vBs)Ma=M%sMg-;AP^tr#&tJWriFm7yxQ<>h!?n zVPx(nrbQK#jWdT=O!RI_cqf)Oet^r{++4@1>-_3>RrkQoA4@uD-)DPtR$L&w#)TJiVsG*?D^d4Egz8u3X2PkT$o=!{O*uBWDqQj+CVVyOH~SysocaNM6g1{UxU87ppfL-~jeDw+SGpg5>fhNp| z+;P;1#JXPG6ym0kyWwIt0oRbp_(01@XzAa1EO?Dq(l&c)nv!35%rnJVnXsi~6-PgJ zH-jt;?YS3JWS>J;GM#vUQCvvsKO|tISObjuJ@JMo6k?5L<2SnF97zy`Za-zI`W$sn z$(qlD$va|6n0Z85-sNuntX#7&J3H`PxnrU5eWBQ$O^^d8PhWB>tq)~BxQbV@J=WZu z?$IH=W%i~ud8Y;^&!6QqIbt(DgARX}Ep%(kb(|MiCefkhmoj_m4DC1c;v8HNr{}dJ zZRTNHS`GQiQf2y2Y;APjkLV^e+S7dR0+%bc zCQ-zlzGC6w*q4VsEvgv`n=V?lbUNWdV9VH?tlqbz9bZ?+O$*Eol6Cq$9ZfbwoyURe za*!i_Sx?LKE;=gYERToOXNsjk+Os;)Bv5kSRmz5MB~vkHNQ_!Nsno@dX&f}Hi2%V5 zI^E8B%tddn``fa4t@=6LR{#BSh?yQA?C<`%7l3+y&ZvK|kPU-?fbbhbsBte!VhwHT zxHyY}OR{E@lIt=m2Yxz=f6~wXt)pADRHS9jf#O{6q=k0J>>;mMzILq>eksu|dv|zr z5>CDRSYj#=_6|y*v&Pz|-lJS`tuFJ?sgBewp;h~(^*EgAZ~E1g*MLfF%P9sbqX_Ll zb!4-~#emJMiT|q!w#2r~Bz~(Ny3%=J!5Z!M!XruRFhEOCeG8cy8vd?5wi0LQj<`*o zuukq42X+U@NgUjXB5Lop6sXrFyO?(~X_Jz{W2%R{4s<=HPR4sY)w_OYQ;ulNL@UM$ z^t&ipGCRE-B)MLZOm8%wT2Ajep>CgN$+TP-g@STn!vLzt1~gwpib_Y>esTi+5iIHNyHF?;VLbb&1AXfp}GF(6bqLs zj%UMt&NDS`G|SqBgY(Kcw@6+t>TES-YzmWTs?%b3T_~rVntm{j3ZX{x=A?<+K-vz# zNTLdlKWjIr7?okPggA2g$?YjfZMokQapdK{;^E{PD+eDz!GEO_h(GTsk}siB5lLai zK4i8CT{kKsiYhM=n|Az%tK(tObGhoz9H^IKkAr$aNreAsm06Aepb~*nS;gWO*8g6zPUAJa*}-KcpW|2In$P*CM$ffY%0oO z&G}W?cefWDRom+sN^04G@K@S?(pog|Z}1X={nnls^;RrBF}kX3<;T>t=7A(S?Krb8 zh(CdhKc#SC8*iw;rwZXob*G`y%z?6lOLchyQ+vsFms(Fzby%A&g-^c9MPkF_4>n96IP&gScpky zTf|aNXQCcsOiGKff@?G@W2~Hd9i8-N;|iO}9Qumpn>|jhn<6L|TZOA(%q*ufJ9A=k z4?=I+t8g}*<;R!`tI86)!&-JZ>{DB{=gsA9vexF1a7@vWziaH*1iIfrpM9>19zP*< z+~EZhuKql3pV+5Jyd8eYXqyU##b-)Pm#wcXb6#86KM1(4CiNJ(sAjs?0ODIyEi=Yx zxOzp!kbfHOrA!&Al6%J2X}qJltFU?SYi|{45GUW-aP+)BDjQuZkwJEP!g?hiB!PcQALqQ!Vwi z_Rj0~>14<~3kgffuo(O8g#PJ(zrF4E3nP3{=${Aw@%9}-13BBfIvJZX{4#YiH)T-$ zW=8)_|Nje({bzq+2_<29IkkUr^yLmjl$$sX`g7lWQqDJAM)Kd<`9I_SRa`C zofFZABhN40b5^KcRlPo`QBxgUhs3T^BB|$BGvpfY3^JM{O@v;g)0yo3HBS+}8gk*N zaG*aXJi_z@mXdJyDP|RuzAadLBx$-a%tn8|+s!Qlr%~W5Qu?>DIoqSM5muGx0J8>^ zFPQ|0MQEVXh&yFXM4s@<4X$@$U>@*zk-@mmKcug*J9hgl$aoEQ#XRm<^FT~Q1eFp@ zdW892U7X-^Eu_FBc4_s8Cc=!5=2;8Hq6|z9$B40eoC z#hbHE7_VCpp?1k(J zIMv|&)+Dd}DC}D6B+Z7IZ+tjU2!?`5sxrH@y*+iiB-2HKzF5GVKFhB9 z?V!h1aL4yZk*6I@T4Lu2sc(+>3hue1{9qHZ#sI}>LHQiB3+lm0 z^det!?}M8(?2aQ^|H9x=rgXOee&635Vla_-o7Kk%iC1`=3PvtMKPc5u7UQ;WYsPtM9}4?>(q(YqWTk zVJzq)^*LJ)yAIqGP4)r0y1OB2^nktMuxNytC?lmS`nFZXWJ{zK-!+UqwXtX`iQVrasa5kOxarLUjIKHCqHRi9AvsLBW#)T?%5@k+SK zU?L6VSG4}DjA*yoRqW3|hcR%bFrO9H{70% zZr5J5@(l;@Ak25VoqDaQAw{*7QRW<xcF51qr`PmzwOn4hX z5uhn->tH)G&K^wG7v~`+%g3TMIk3L0x+QHBqDNp|lhyuOZV^-c#bBx8{IC&3C&tB^ z=ZC>^A`sileouKsRhI+9;@}%JtLyZ-gZQ-RYp#$Zv{{D(F{`64FwksWTobMSq>blP z1FKo{CVg4MWEeE9ueMsYJm&n|f}OmNZy4Z+KfF=63jT^01tM9)=ZMhNHZ|Z=G2FMc zywAgj&u(*QpN0^x>6}q8h*7TT-ji#Tk0H>9k+NiEQU0|zzkEn7)4F1Pm=3j{|4EIvzv{9*EIZ~6SVV@6(nnKSxzcl%9t z7L-xT7{T$peKK7ks})ExKu-2!1?A=SFR%NzkaG||u#A@h>q3u6C2mgZiCvW{MM?p~ zg0FhI7a+Z`g`yI(8YpRal*>X3)YTD!6~Jx|y<)}w{wVkIV@{hw5wCySA(0u8LKiG{ zxMP=qa#2V)QDo(gZfq(|ar5A-@wx1k*oj1t6}scwEsgi0vSaCh>n}@aBtrT>ei9wJ(ClvCdVrg~7avK_M4&OWT95R>uhRvGw*nSd zoPcIESV&A3FBn2fnM4o&l&2EWU}O$K@t7qn+%T=8`$fI_qJN#je!bP4IpcU(X~V!I z&TpmW#Cy37SnKAy6gY71+&;c1$_>kE|EN(W1O~u#XmeN_YONGe3Y+HWw}>j_PyY_F zGN&yGK&a_AB==;0XMlKYp!rbVp zQYZ9pX-Qf=D>DRvky^l2M5?;qzmyaqiAW*2dLC#Kg8H6Ny#KGI_InkRl%xM%a4)m8 z?bgLmLtn3j6v0O*+dx}zY7aTjZ>8CZW>H1c*CPbyp+Slebr$`95ze@riwn#Dc0T%L zMoJ@hHY7zv-sRoDEBZ0Tg{zlslbJ^zK`}f`f#_av)a?q#+1FbGQ7uTM5WxoIqf@}3 zHX}~PC8(;3%wu&5zp-cR!lV26TbmJIe&+m%5i8E{sYz7c=TvsDO>8~SQc>Uj$hv>o zj$cb_V@iBfXK$@?yI#*P%=cWudf1M@%BOZ+Tz4Pd?IDP(!dkDZnq{)O`!F$$4t$yk z1NI|8Km-8Bai(vi;j{nswk*=LFLoP4+~CK-!SP|5+#@%tJb(TszC$3P{3O8Sm79~> z01)D+e668LtU&ei##c|d1)!3cbnJF2bIwk{J@+B-dn@ShkCHtzw7daytL1NLZx}S+ zbAh+I_i)a)PjV*xDL@Utk>c{{A+l6le%F*FIpB%Jj0JvxQoeSfN54?N0!}fijAn$$NJ6X6) zfjaqX01BDcI(K&}173xVo$A^${Wi{qA{OLIwS8Z7?pFAIjjNYm_LY(EfLp@$dwV?B zKKL}hvnZtI%hH7p4SV* zlRAV(@A*2FUbXdFNsUo2*|hrT_;3*1uS>}>=dktdHAaUKBi8vy$05~J`>#RjxVhzw zfO7UH4*6?N?>>)4DAsj8>TwVu{*m+B^^l+Q(Q7KmP5Ia5>-Oaq_`AGv(lv%u2R8Uo zD4N~@uOq0V;f%wrs}ASVxq7;-;aN^`qVuFjK9_lJPMKFGM&P{46GNm5hlbqZFdbNs zxL2(Vxc?`{RCgty_E8|>yc?gurXE23YWE)2g|h!nEGsVjR7epL3&S5;xI6Pk3ITjf zG(Y=m9B13^bIo1~hq3aaICc~PN+rGTT}qh%;goTbG%l3nRNK~_6&ng4J}gl3+2LgM zZLCV)h?~Gd4i;xy(&#PgEjRoP0SCT$mkMzEz_$+!IR(IlKt;eP`I^rUD+9syC`g~F z#EDFgGOyFlpCjiQZ*h{kxckk8G4Z&u3>vvai}3cR%mf<0wJQ)h$5_rVul6>-=Go+n zrTrY(>(ku*^1G&?r|!1oMV2F{)I7|-HVfNH1pj(G_e?Lw#1r&r>+vjQ%9n@ZHBRH( z!uw)2bx5#-4uuO>)N`kp^07k47?Z7Mya+)e^Lqz=L$+X8^3rM2y>@X4C>qP7s* z3d?@e;3p@3;qp261oI+LuQ8vHTl8BbJycg9xSdg}=U(gz508JEOiO$sos2qTqBJYg z@aHiw1#r@>_I3}HpI1BoM!(j$-JAGHu7KZ8?g!DH*Z_MziiIMh5P2uGz*^A!JT7kK z&?Uk)1|tU$9tYg-5>d_(2hvs>;kb0-d#Qm`Tk&SK8q&NUH`yWZ^m>EcKb9Kc zv?v0Gwg63^Bst=ro1cC`EqA{DecB2m{2ZTd^8z4%z5Drz9*U(8ryw55mS(~F3WYP? z?PggA|8!T;nfLh@VY6JoUq!y(rdeXKcd~wU!Vh2mkQ#FYw@S<)>{NJneN3wq%?OZ< zJ~?_tZ`Yaj7TZncg&YmO8v3>%KO0bl1j>40!5^0_0}}C#PX!6yX&zC2uJF-%bgdWQ zW32HlTs(#Mk23AgF&PSxZP#PDV{S z>VECJJTN}`5%+wr#NCO1^1Ce+1WrNn>n7N>&8+eq@m~{dyjQ=@Dll^5Q1tY78j1r7 z2Fb+zw{ywZB*Y5jv6jO4hP5}FC&YyX>@c#^VT5vyrbhrVNxxmuI}sevhx%9F8+Ls1 zzTR2h`GI83KcCxxeQ*n|-zZWq-%xPz@yCo?{Q%eRT>uE@OfN=O%u)tY1V2SkIeCbn z!rmQJ1V3kpZ1}ummigr}fj9watTljsX{d?Y%Ph4q>05{mQQi`lAM)K)nxe=Gf$^0|lrU zsC~Sisnl!mBd~e=3;kIm1hDIR>|Q$tAY=gM&+0RUsxO&2H)Z~$&0EF;(%zo|`on;h z7Xkdz)0KC;otGEP>q%+RULz{yXH0whOaQcqWHyT%2G!PEQZlq4#{U%%tx0q)a;UAJu?Y2UYy?6(a!UZYtr zDg1PlIlUI=!&j&X50~N7?4JE-7O_N&)T87EBux=4M+*r~=TFkZFIH)+TV)|(H-Wv) zDPE_~RS@m^8Pn_{d=jet`(P24+q?UB>pK=0tUth9(idrWCE z7$9G;ulm$q2ecsdtdE5bBIyX9xM0Un9ZCIm;&loSHpq^c+L6r8$b;dFpn@2rd6p4> zmvNoBSkqqe^G-#XUgA%mb63>dr?rF9OE3Pu$4 z+YqKfLrj0*(tf`TdvPTU||i!Z_TFYqk8G2C@P%|sFh#|I7zfV zw}=&O5)E3h^rf&-|LRy;`TUndDSeh;sl-P+V)BK1a!`pfyVWV!p988;u_-LR$m4g9q*_QseIWt8Qncv{DG zN8O&!wpg0<$t#UaZSvS;!(gVAHnisKVk`tn`f$i!;g@Q)#i-!Ty&8t?AliQ|oUVr> z(sd2lbD3is&>u5T+(YU4i3u7=$)Jp%8O1FVjix(FfQn3B4XJ10@LYJn7X4S2Xq!!+ z4^K~XDJYgP_{gMm)3T3J8J!4nZ0ZB6RcidPsrN)+)esbcND))|Xd(4>u=m4INt(0i zI9nfow*M9aI{64o1j5goEqtZbiGPC6h3AmlW;4N ziSE8BIFPOEJMFIQ+C!;B#8u9Wt1g01^$b^>_6>{LI!a2XWag*~54Yh4mctgHDDh1p#Kj zL<)tSACt|?r~yruIB(VqXJ;iz>=|X-)X>xU)YZDLoC9pF=w)?#m}{Ez z4Ia*6k7nkFCy*4PQ3TO>NR8=4>@bp^u!Uv$&$@d~s8gLsDNWc=H%0DQ!a&QIUTz&Y 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�YXoEk|yQ!#CW)sypC_okZyBB0CA3 zrWG%RIH9RT^MOAT*uizrqyiMdv;d<`C9t-(3#;PwQq@|bf5KRTvnu;i!d0lamD5IW zw6z4Dz?YUQ;RFT~rJ#8LjW(FTH2d|cG+gm>{u)PX3mLtQ(^dms@t|!caNbUDP@oCS zCZ_wWB(HhMfy_F+gM)PgX|&k{h7C$ngJETRUWU`klwh>w1TK=>Ta;j;vv3BN_hv7r z?b>8)Jb^a^y$%X-y#2)7*#0Dn5yM_f<=8sr5J&QaDAM*5m}Fk2nyC5-35W2WeFO=i zOj>Z~h>%2^P~cKbF;gN5tSCxB^8#J86$Pg4sHjTA+NuXmAlgplypf_P($*blv>^pv zFty1!lRptFUkoR}@6iITNu=qp)cO4q_D_F-zoWI;6qr3vh6y zCX78M!?2iMYA~$Ka7s3P{zs`AMapJ$#Re9*8XpW-gRwRipW>cefg?Z}=YQ%fmo#5U z8f{~Nr^umN)kS^n11DtA;mjj{FT4Lj(pD0UHnYIAjn=9(9LiGA{6HIRX@P04Y{WF- zd1Jlk=#sP%8f|QWX-gbbX;>RWOKX0C%NwE5_7=F=BAgUy>|rCrD!b$o$MOdjZE}HG zgIlVwurBZPDRdN-ShUpzW;JW0z~T)r46N(VK1;2p#G(x^Fsns-6_!w!%o_0D6)uMC zfi0dPD>{lr_)jr>;#qir(q z8153P0%OfGN2I0MJ=VUi+@x6fdtEnoB>mo*}dw$H${q5D*6s@k5vdMl*SCK`C~ugp@Q z@m3m497U|&pp3TCz^n#`R9INo&bIM%&XicRp$3lPz9T}G*j9s~br1T$MUg0@Z8b3M z<#AP-sx}cVnA9U>u7L-n+etA^Y_V~B_$)eTP2o!&3gJb z#VUF!Ds3z_-LOZGc@?U%WG@W74T*`3Ujji)*l8+F#z9}dQb)u^P}X{*A%cFsAqt`_ zP=>Ov6d4RS)Ufumu>l9x8hA?$E4JadIP&LEu;GxQqSIW~hNA(}dgYNCRN-X@gBgdI zDlQ@8BLJj?f(jL=07TEgzfZ`PDoDOs`XAvcXg^dCZOKs|37oHnf?NWTHRecrvzjiT zfGh8~0%DCha3*JdQjuq1vgKp2=a6G6g0l7;7~0{R8u;E@YW*TwGlfJNOgd!fmJS~| zrL0K@E}x8&pej}!YE;&$1Lw4Bc@?Ruh8=~q%1J}PY|Up*DQnn)nTNhDk;%SOYq0H5 zW3sj#cul-gTa_s^?-0|(O=(=DNK^K-64AI9Ypr%2m0D81=2@KJT9UQ!utP05QyHXC zrv@VrS=+k_Z@BEuf+;{7dEoW_i!xGR=W(m=U@`#IaIBpNHXI1FQw*hqW1HV#>Y)Z? zO+D~t-mIY_kb8mHVC|s>3;YRNdtg|Y3XFY;_{j5Szk`B>HA zj8vHNwRO^Yt}t1f4?IFUsj^hfK4gIrN%>r9vSuH6w_)8}O<)O@A2Rlo<~E0AEkBsa z?XHGZ=tG0?hfKZhSin=E4{75M9O1TFH7X2Hf&E9Fog?UO6hT@04;*3p9;Jb@J!voj zai8>!v|?baxN?o>W@MgT@)2QqD-d}nE?-@bT;=MPwF1FwQzc(zl0qg8h9I)KN;NNX znH=*YHUwdYxC&Ej3u0R^>@nDas38-fcxYP?JXQ66$}&afAUBdHkit;|vgROI&{E{_(P+~CN!PxW2Dk{xT8iK-Muw{>R5uop zp?I!}tJLVqK~{~X5e$^I7m5AB^!SM}r%dGQ0P{y&b+Yy%#w}HhMx*H`La3UI$a3)G zc11-w1D+tHO-7726@+z2$l_n654n4qJUu9boUdha^$`ak+G+%gY7`}i8+lTOHyrt4 z$Enh=Xu}cA`evaD3!hY~vWn_~wH+}&6-nwLd9i@Sn2#J?{ZcA{tlBRm^AY*q$b1B% zN1KmeMQ246*&GBPuT_XWNk?y1=L1}(rUQ$%Ai=Dl6#_*v3rDY%EZT?!vtm~XSYkVp zQm|q{7i~v^S@qIYSXkE$zdRDdcbzLqqe&D))|3R_f<%UX literal 0 HcmV?d00001 diff --git a/16/v2/V2T5_9.ZIP b/16/v2/V2T5_9.ZIP new file mode 100644 index 0000000000000000000000000000000000000000..17b5bc11e108e5cd80ee448b33314d6b75e9191c GIT binary patch literal 421149 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%0AFs57Lzx*w^K7hWAM5ylnGv*d=hy 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

bZL(0R@`6u!Vv)ehm#(4}eTcyn| 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 AC;$Ke literal 0 HcmV?d00001 diff --git a/16/v2/V2U5_9.ZIP b/16/v2/V2U5_9.ZIP new file mode 100644 index 0000000000000000000000000000000000000000..f95ae023460d50476eb2521af1293532f4b7245c GIT binary patch literal 169329 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 Ssy{C=0DA%8ATk3ufc^)u1qkW@ literal 0 HcmV?d00001 diff --git a/16/v2/VCC.EXE b/16/v2/VCC.EXE new file mode 100644 index 0000000000000000000000000000000000000000..ca522ca6af951caac6a034adfc958199cb431607 GIT binary patch literal 62204 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 literal 0 HcmV?d00001 diff --git a/16/v2/VERGE.EXE b/16/v2/VERGE.EXE new file mode 100644 index 0000000000000000000000000000000000000000..ec8e9d3ef0ab98a8b5b83b66ab5136df56cc8dec GIT binary patch literal 113712 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�(UHUt@3QnN=JM>uYwvKwhCrzNeqR1#Z!FTyQg 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 + { + (code to be executed if condition is true) + } + else + { + (code to be executed if condition is false) + } + + 2. SWITCHs: switch/case statements basically replace a series of IF + statements. Cases are yet another method of simplifying and + empowering your VC code's flexibility. They are most useful in + situations where you wish to provide multiple results based on the + condition of some variable. Here's how they're used: + + Switch() + { + Case : ; + Case : ; + Case : ; + } + + When the interpreter encounters this construct, it will test the value + of what is given in the Switch parentheses, then run the Case statement + that matches it, if any. Note that unlike C, no break; statements are + in the below example; break statement in VC are not only unnecessary but + will cause an error if they are present. Example: + + switch (PartyIndex(1)) + { + case 1: Text(1,"My name's Darin and I'm leading this party!","",""); + case 2: Text(2,"I'm Sara and I'm here to pump you up!","",""); + case 3: Text(3,"Dexter is leading this party.","",""); + } + + 3. WHILE loops: + It works much the same as a FOR loop, but can use nearly any condition + to control how long it executes. The syntax is such: + + while () + { + commands; + } + + The condition inside the parentheses after WHILE can be anything you can + stuff in an IF statement. When the engine encounters a WHILE loop, it will + repeatedly execute the commands inside the curly braces until the condition + inside the parentheses is NOT true. Therefore, your WHILE loop should + contain some commands that affect that condition, or else your loop will + run endlessly. + + 4. FOR loops: + FOR loops are perhaps more commonly used than WHILE, altho I personally + dig WHILE loops greatly. Anyhow, FOR loops in VergeC 2.0 are much closer + to their true C counterparts than they were in VC1. The syntax now is: + + for (init; condition; post) + { + commands; + } + + To clarify, an example would be: + + for (i=0; i<5; i++) + { + printstring(i,"This is font "+str(i)+"."); + } + +C. system.vc, map-based VC, and the relationship thereof +-------------------------------------------------------- +There are two distinct types of VC in V2, and that is the system.vc, and +everything else, which are MAP-based VC files. MAP based VC is very similar +to how VC was in V1. You cannot declare your own functions or variables in +a MAP vc. They use the familiar event { } style scripts. When they are +compiled their pcode is attached directly into the MAPfile itself. + +The other type is system.vc, which is compiled into the files system.vcs and +system.idx, respectively. system.vc allows you to declare your own functions +and variables - the trick comes in that any of your map VC can access any +and all of the functions and variables set up in system.vc. + +The only real problem arises that, because of the new relationship between +system.vc and map-based VC, it's conceivable (quite likely, actually) that +if you modify system.vc you'll break MAPs that you've already compiled. As +such, VCC now has a 'vcc all' option, that will compile system.vc, and then +recompile all maps it can find in the given directory. ME2 has a shortcut +to do this right from inside MapEd - Just hit F6 and it'll rebuild all of +your VC files. (of course, this means you can't have an ALL.MAP. Oh well, +live with it. ^_-) + +There is nothing like startup.vc or startup.scr in V2. When you execute +verge.exe, it always starts execution at a MAP file. Which mapfile it starts +at is determined in user.cfg, by the 'startmap' command. Additionally, you can +start verge.exe at a specific map by specifying the mapfile on the command +line, which MapEd makes use of to directly test out the mapfile you're +currently working on. + +D. Syntax for user-declared variables and functions +--------------------------------------------------- + + 1. Funtions + There are two types of user declared functions, ones that return a + value and those that don't. The simplist declaration for a function + would be: + + void MyFunc() + { } + + You can add passed parameters like so: + + void MyFunc(int a, string b) + { } + + These parameters would be accessed inside this function as any other + variable would be, but it only exists inside the function. You would + call this function from map or other system.vc code with something + like this: MyFunc(5, "Hello."); + + To make your function return a value, you'd declare it like so: + + int MyAdd(int a, int b) + { + return a+b; + } + + You cannot currently have a function return a string type. This may + change in a future version of V2/VC. + + 2. Variables + There are only two variable types in VC, int (integer) and string. + Both are declared the same basic way: + + int num; + string name; + + You can define multiple variables of the same type onto a single line: + + int x1, y1, x2, y2; + + You can also declare arrays of variables: + + int flags[8000]; + + You can declare arrays of both ints and strings. You can only declare + them in SYSTEM.VC (and any #included sub-files). Variables declared + outside of any function are global and can be accessed by any system.vc + OR map-based VC event at all. Variables declared inside a given + system.vc function are local variables, which only exist during the + duration of that function's execution, and can't be accessed outside + of that function. + + Limits of passed parameters and local variables: For any given system.vc + function, the total number of passed parameters and local variables + cannot exceed 20, and the total number of passed and locally declared + strings cannot exceed 10. However, if you have 10 strings, you can only + have 10 ints, otherwise the total limit of 20 variables + (int and otherwise) would be exceeded. + + If there is a global variable and local variable of the same name, + inside the function the local variable will be used instead. But in + a function where that local var isn't declared, or a map-vc event, + the global variable will be used instead. + + We may add the ability to declare local variables in map-vc events in + a later release. + +E. Special string operators +--------------------------- + +We strived to make VC2 closer to "real" C in most aspects, but strings is not +one of them. In real C, string manipulation is fairly clunky, and not very +easy for beginners to pick up. So, we have created a string system that's +somewhat like a mix of Pascal and BASIC. + +Any string can be combined any number of times, altho the total length of +any one string cannot exceed 255 characters. For instance, if you had a string +variable named OurHero, and it contained the main character's name, you +could do something like: + + Text(0,"Greetings, "+OurHero+". We", + "have been expecting you.", ""); + +Additionally, there are 4 other commands which can be used during string +combination: str(), left(), right(), and mid(): + + str(int) - converts a numerical value into string form. + left(string, n) - returns the leftmost n characters of string. + right(string, n) - returns the rightmost n characters of string. + mid(string, start, run) - returns a section of string, starting at the + start character, run characters long. + +And lastly, the val(string) attempts to convert a string back to an +interger value. If the string has too many non-numerical characters in it, +however, it may not be able to. + +F. Preprocessor directives +-------------------------- + +As in the original VC, VC2 emulates two primary C preprocessor directives, +#include and #define. #include has been expanded, while #define has been +scaled back. + +#include is more stable than before, and you can have nested #includes without +any problems. The primary purpose of #includes in VC2 is to allow you to break +up your system.vc into sub-files such as menu.vc, battle.vc, or similar +divisions, and just #include those units into your main system.vc. + +Since VC2 now has proper functions, the macro-like behavior of #define in the +VC1 preprocessor is no longer necessary, and since it was rather highly +unstable, it was taken out. The primary purpose of #defines in VC2 is to +allow an unlimited number of simple symbolic constants. An example would be: + +#define k_ESC 1 +if (key[k_ESC]) Text(0,"ESC has been pressed.","",""); + +We may also later add conditional compilaton if there is a request for it. + +G. Pointers and direct memory access +------------------------------------ + +If you are not a native C programmer, you are more than welcome to skip over +this section. I would not dare attempt to teach the principals of pointers +to those who aren't programmers in their own right, and you don't really need +to understand VC2's implementation using pointers for direct memory access for +the vast majority of things you could ever want to do in VergeC. + +Since VC deals with all numeric variables as integers (signed, 32-bit values), +it would not really make sense for us to implement the standard * and & +operators, since you'd only be able to operate on data of type int. + +So, we have 6 builtins which aren't quite functions, and they aren't quite +variables, but whatever they are, they're there. They are: + +(unsigned) byte[ptr] +(unsigned) word[ptr] +(unsigned) quad[ptr] + (signed) sbyte[ptr] + (signed) sword[ptr] + (signed) squad[ptr] + +Note: signed allows for negative numbers. + +Using the convention: + byte = 8 bits + word = 16 bits + quad = 32 bits + +The main reason these don't quite qualify as C functions is that you can also +assign them values. Ie: + + byte[myptr]=5; + if (byte[myptr] != 5) + Exit("Your computer is smoking crack, my friend."); + +H. Misc +------- +1. Alternate ways of expressing numbers + VC has three ways that it recognizes an immediate numerical value. + + a. Standard/Decimal + The first is a standard, base-10 number. Just 65 or something. ex: + + myval=65; + if (myval != 65) + Exit("Woe to thee, for thine computer smoketh crack, verily."); + + b. Hexademical + VC uses Pascal's convention for handling hexademinal numbers, which + is to preceed a hexadecimal numerical delcaration with a $ sign. ex: + + myval=255; + if (myval != $FF) + Exit("For thus sayeth the Lord, that thine processor was created by"+ + "those darwinists who would believe that a CPU can be created"+ + "by putting silicon in a frying pan and shaking it around a lot."+ + "Well, either that, or you're running a Microsoft OS."); + + c. ASCII character conversions + You can use C style single tick marks to denote an ASCII char conversion. + However, it does not support C's \ codes. Whats in between the tick + marks is taken directly. ex: + + myval=65; + if (myval != 'A') + Exit("A stroke from the brush does not guarantee art from the bristles."); + +2. Order of Operations + Does not exist. Use parentheses gratuitously. + Oftentimes you will want to do something like this: putpixel(x+y*320 + This will not work! V2 will add x and y, then multiply the result by 320. + As always, any order of operations expression can be rewritten with + parentheses. In the example: putpixel(x+(y*320) + +============================================================================= + +II. Builtin Functions + +--------------------------- +void AllowConsole(int flag) +--------------------------- +Controls whether or not the ` key will summon the console or not. 0 will +disallow the console, 1 will activate it. Disabling the console is a good +way to prevent cheating, however having it enabled will make developing +and testing the game easier. + +Example: + AllowConsole(1); + +------------------------------- +int CacheSound(string filename) +------------------------------- +Loads a specified sound effect (8-bit, mono, un-compressed WAV file), and +returns the slot number that you'll access this sound with for PlaySound. + +See also: FreeAllSounds(), PlaySound() + +Example: + snd_shriek = CacheSound("SHRIEK.WAV"); + +----------------------- +void CD_Play(int track) +----------------------- +Begins playing CD audio at the specified track number. + +Example: + CD_Play(6); + +-------------- +void CD_Stop() +-------------- +Stops all CD audio playing. + +Example: + CD_Stop(); + +------------------------------------------------ +void Circle(int x, int y, int radius, int color) +------------------------------------------------ +Draws a circle (outline only) of the given radius, centered at the given +coordinates, in the given color. + +See also: CircleFill() + +Example: + Circle(screenx/2, screeny/2, 50, 128); + +---------------------------------------------------- +void CircleFill(int x, int y, int radius, int color) +---------------------------------------------------- +Draws a filled circle of the given radius, centered at the given +coordinates, in the given color. + +See also: Circle() + +Example: + CircleFill(screenx/2, screeny/2, 50, 128); + +--------------------------------------------------------------- +void CopySprite(int x, int y, int width, int height, int image) +--------------------------------------------------------------- +Blits the image pointed to by image with the given dimensions at the +given location on screen. No transparency, clipping is performed. + +See also: TCopySprite + +Example: + im = LoadImage("VECNA.PCX"); + CopySprite(0, 0, image_width, image_height, im); + free(im); + +------------------- +int cos(int degree) +------------------- +Returns the cosine of the given degree of measure (0-360) in 16.16 fixed +point. + +See also: sin(), tan() + +Example: + result = cos(45); + +---------------------------------------------- +void EntityMove(int entity, string movescript) +---------------------------------------------- +Sets the given entity to the specified movement script. As in V1, +you cannot use 'B', the loop command, in an EntityMove given script.. But +I should be able to work around that so that it will work eventually. + +Example: + ent = EntitySpawn(0, 1, "VECNA.CHR"); + EntityMove(ent, "D2R2"); + +--------------------------------------------- +int EntitySpawn(int x, int y, string chrname) +--------------------------------------------- +Allocates a new entity at the given coordinates, using the specified CHR file. +The entity index of the new entity is returned. + +See also: SetPlayer() + +Example: + ent = EntitySpawn(0, 1, "VECNA.CHR"); + +------------------------- +void Exit(string message) +------------------------- +Completely exits out of the engine leaving the user with the specified +message. + +Example: + Exit("Thank you for playing!"); + +--------------------------- +void fclose(int filehandle) +--------------------------- +Closes the file given by the specified file handle. + +See also: fopen() + +Example: + file = fopen("EXAMPLE.DAT"); + // ** use file here ** + fclose(file); + +---------------------------- +int fgetbyte(int filehandle) +---------------------------- +Gets a single byte from the specified file and returns it's value. + +Example: + file = fopen("TEST.DAT"); + Message("First byte in TEST.DAT is: "+str(fgetbyte(file)), 200); + fclose(file); + +---------------------------- +int fgetword(int filehandle) +---------------------------- +Gets a single word (2 bytes) from the specified file and returns it's value. + +Example: + file = fopen("TEST.DAT"); + Message("First word in TEST.DAT is: "+str(fgetword(file)), 200); + fclose(file); + +---------------------------- +int fgetquad(int filehandle) +---------------------------- +Gets a single quad (4 bytes) from the specified file and returns it's value. + +Example: + file = fopen("TEST.DAT"); + Message("First quad in TEST.DAT is: "+str(fgetquad(file)), 200); + fclose(file); + +---------------------------------------------- +void fgetline(string variable, int filehandle) +---------------------------------------------- +Grabs the next line from the specified text file handle and returns it in the +string variable passed. + +Example: + file = fopen("EXAMPLE.TXT"); + fgetline(my_string, file); + Message("First line in EXAMPLE.TXT is: "+my_string, 200); + fclose(file); + +Note: String support is a bit sketchy in V2 at the moment, and this command, + along with fgettoken(), only accept global strings as valid parameters. + It also will not read correctly into string arrays. + +----------------------------------------------- +void fgettoken(string variable, int filehandle) +----------------------------------------------- +Grabs the next token (space delimited) from the specified text file handle +and returns it in the string variable passed. + +Example: + file = fopen("EXAMPLE.TXT"); + fgettoken(my_string, file); + Message("First token in EXAMPLE.TXT is: "+my_string, 200); + fclose(file); + +--------------------------- +int FontHeight(int fontidx) +--------------------------- +Returns the height of the font at the given font index. + +See also: FontWidth() + +Example: + height = FontHeight(0); + +-------------------------- +int FontWidth(int fontidx) +-------------------------- +Returns the width of the font at the given font index. + +See also: FontHeight() + +Example: + width = FontWidth(0); + +-------------------------- +int fopen(string filename) +-------------------------- +Opens the given file and returns a unique file handle integer. + +See also: fclose() + +Example: + file = fopen("EXAMPLE.TXT"); + fclose(file); + +-------------------------------------------------- +void fread(int buffer, int length, int filehandle) +-------------------------------------------------- +Reads in a given amount of data from the specified file into the given buffer. +Thus buffer must be pre-allocated by the user. + +Example: + file = fopen("TEST.DAT"); + buffer = malloc(100); + fread(buffer, 100, file); + fclose(file); + +---------------------- +void free(int pointer) +---------------------- +Frees the memory space pointed to by the given pointer. (ie, you would pass +the same value returned by malloc for a memory segment) + +Example: + buffer = malloc(100); + // ** use buffer here ** + free(buffer); + +-------------------- +void FreeAllSounds() +-------------------- +Frees all sound effect slots. + +See also: CacheSound(), PlaySound() + +Example: + FreeAllSounds(); + +----------------------------- +void fdelete(string filename) +----------------------------- +Deletes the specified file. (uhm.. obviously, be careful with this command. +This doesn't send it to the recycle bin or anything, the file is GONE after +this command is executed. Like all the other file I/O vc commands, this +will ONLY work on files in the main directory VERGE is being run from) + +Example: + fdelete("EXAMPLE.TXT"); + +--------------------------------------------- +void frename(string filename, string newname) +--------------------------------------------- +Renames the specified file to the new name. + +Example: + frename("EXAMPLE.TXT", "TEST.TXT"); + +---------------------------------------- +void fseekline(int line, int filehandle) +---------------------------------------- +Moves the file pointer to the given line number in a pre-opened text file. + +Example: + file = fopen("EXAMPLE.TXT"); + fseekline(3, file); + fgetline(my_string, file); + Message("Line #3 in EXAMPLE.TXT is: "+my_string, 200); + fclose(file); + +-------------------------------------- +void fseekpos(int pos, int filehandle) +-------------------------------------- +Moves the file pointer to the given byte position in a pre-opened binary file. + +Example: + file = fopen("TEST.DAT"); + fseekpos(20, file); + Message("Byte #20 in TEST.DAT is: "+str(fgetbyte(file)), 200); + fclose(file); + +---------------------------- +void fwclose(int filehandle) +---------------------------- +Closes the given file that was open for writing. Be *sure* not to mix +file handles that were opened for reading and those that were opened +for writing. + +See also: fwopen() + +Example: + file = fwopen("EXAMPLE.TXT"); + // ** use file here ** + fwclose(file); + +------------------------ +int fwopen(string fname) +------------------------ +Opens the specified filename for writing. + +See also: fwclose(), fwrite(), fwritestring() + +Example: + file = fwopen("EXAMPLE.TXT"); + // ** use file here ** + fwclose(file); + +------------------------------------------------ +void fwrite(int ptr, int length, int filehandle) +------------------------------------------------ +Writes the data at the given data pointer to the specified file. + +Example: + file = fwopen("EXAMPLE.TXT"); + buffer = malloc(screenx * screeny); + GrabRegion(0,0, screenx-1,screeny-1, buffer); + fwrite(buffer, screenx * screeny, file); + fwclose(file); + free(buffer); + +---------------------------------------------- +void fwritestring(string text, int filehandle) +---------------------------------------------- +Writes the passed string to the specified file. The string is written in +text mode format, with a CR/LF pair at the end. + +Example: + file = fwopen("EXAMPLE.TXT"); + my_string = "VERGE 2"; + fwritestring(my_string, file); + fwclose(file); + +-------------------------- +int GetPixel(int x, int y) +-------------------------- +Returns the color of the specified pixel coordinate. + +See also: SetPixel(); + +Example: + color = GetPixel(screenx/2, screeny/2); + +------------------------------------ +int GetTile(int x, int y, int layer) +----------------------------------- +Returns the value of the given map layer at the given coordinates. For +layer, 0 through 5 are the first 6 possible map layers, a value of 6 +will always denote the obstruction field, and 7 denotes zone information. + +See also: SetTile() + +Example: + tile = GetTile(0, 0, 0); + +------------------------- +void GotoXY(int x, int y) +------------------------- +Sets the current text output "cursor" to the given location. This is where +calls to PrintString will be displayed at. + +See also: PrintString() + +Example: + GotoXY(screenx/2, screeny/2); + PrintString(0, "Hyuck."); + +----------------------------------------------------------- +void GrabRegion(int x1, int y1, int x2, int y2, int buffer) +----------------------------------------------------------- +This routine captures a region of the screen and copies it into +a bitmap buffer. The main trick with using this routine is that you are +responsible for creating and destroying this buffer with the malloc/free +commands, and to be sure that you allocate enough memory in your malloc call +to contain the image. For instance, if you capture the region from (0,0) to +(49,49), this is a 50x50 square, and you will need to allocate 2500 bytes. + +Example: + save_screen = malloc(screenx * screeny); + GrabRegion(0, 0, screenx-1, screeny-1, save_screen); + // ** use save_screen here ** + free(save_screen); + +------------------------------------------- +void HLine(int x, int y, int x2, int color) +------------------------------------------- +Draws a horizontal line using the specified coordinates in the given color. + +See also: VLine(), Line() + +Example: + HLine(0, screeny/2, screenx-1, 128); + +----------------------------------------- +void HookKey(int scancode, system script) +----------------------------------------- +Binds an event to a specified keypress. This allows you to create menus and +other types of key-based events easily. + +ex: HookKey(1, Menu); +When Escape is pressed (key scancode 1), the function Menu() in system.vc +will be executed. + +See also: HookTimer(), HookRetrace() + +Example: + HookKey(1, menu_script); + +------------------------------- +void HookRetrace(system script) +------------------------------- +Given a non-zero event number, it will execute the given VergeC event (from the +Map VC) each time a frame is rendered. Note that it will be called at the 'R' +position in the Renderstring, so if there *is* no 'R' position, then it will +never be executed. As in verge 1, HookRetrace is quite stable, and should be +used instead of HookTimer whenever possible. You can pass zero to this event +to turn off the HookRetrace. + +See also: HookTimer(), HookKey() + +Example: + HookRetrace(my_script); // hook script + HookRetrace(1); // hook event + +----------------------------- +void HookTimer(system script) +----------------------------- +Given a non-zero event number, it will execute the given VergeC event (from the +Map VC) each timer tick (ie, 100 times per second). Note that, like verge 1, +this is the more volatile of the Hook* family of functions, and HookRetrace +should be used in place of HookTimer whenever possible. When using HookTimer, +you should never call any rendering functions, and in general you should do as +little as possible inside the hooked event as you can. As with HookRetrace, +passing 0 to this function will turn off the HookTimer. + +See also: HookRetrace(), HookKey() + +Example: + HookTimer(my_script); // hook script + HookTimer(1); // hook event + +--------------------- +int InitMosaicTable() +--------------------- +If you wish to use the Mosaic() routine, you must call this function to +generate a mosaic palette-matching table (store the value returned by this +function and pass it to Mosaic each time you call it). We would precompute +this table, however, it depends on the palette. The table calculations can +take a while, it takes about 12 seconds on my P200. It is possible, of course, +to precompute the table in VC and load it at runtime for people that want +to use this feature and wish to avoid the long table computation time. + +See also: Mosaic() + +Example: + table = InitMosaicTable(); + +-------------------------------------------------- +void Line(int x, int y, int x2, int y2, int color) +-------------------------------------------------- +Draws an arbitary-angled line from any two sets of coordinates in the +given color. + +See also: HLine(), VLine() + +Example: + Line(0,0, screenx-1,screeny-1, 128); + +----------------------------- +int LoadFont(string filename) +----------------------------- +Loads the specified font file and returns the font slot which is used by +PrintString. + +See also: GotoXY(), PrintString() + +Example: + my_font = LoadFont("MYFONT.FNT"); + +---------------------------- +int LoadRaw(string filename) +---------------------------- +Loads the specied file as raw data into an allocated buffer and returns +a pointer to that buffer. + +Example: + raw = LoadRaw("SPEECH.SPC"); + // ** use raw here ** + free(raw); + +------------------------------ +int LoadImage(string filename) +------------------------------ +Loads the specified image, allocating enough memory for it, and returns +a pointer to the image. If you no longer need the image, you should +free() it. The image can be any of the supported V2 image types, which +are currently PCX, BMP, and GIF. + +Example: + im = LoadImage("CHEESE.GIF"); + // ** use im here ** + free(im); + +--------------------- +void Log(string text) +--------------------- +Outputs a message to VERGE.LOG, assuming verge.log is enabled by the user. +This can be useful for debugging. + +Example: + Log("VERGE 2"); + +---------------------- +int malloc(int amount) +---------------------- +Allocates the given amount of memory and returns a pointer to the memory +space allocated. + +Example: + buffer = malloc(100); + free(buffer); + +------------------------ +void Map(string mapname) +------------------------ +Loads the specified MAP file as the current map. Upon encountering this +command, VC execution is immediately terminated completely and resumed at +the new map's Autoexec event. + +Example: + Map("TEST.MAP"); + +------------------------------------------ +void Message(string message, int duration) +------------------------------------------ +Issues the specified system message, lasting the given duration in hundreths +of a second. This message is displayed in the upper left corner of the screen +for the given duration, and noted in the verge.log file. + +Example: + Message("VERGE 2", 200); + +------------------------------------------------------------------------- +void Mosaic(int xfocus, int yfocus, int tablepointer, int x1, y1, x2, y2) +------------------------------------------------------------------------- +"Mosaics" the screen so far; The best way to describe it is as the mode7 +effect used in FF2 and such to make the screen "blur out" during screen +transitions. xfocus and yfocus control the "granularity" of this blurring, +tablepointer must be the value returned by InitMosaicTable or a pointer +to a precomputed table loaded in memory. The x1,y1,x2,y2 values specify +the section of the screen to apply the mosaic effect to. + +So, to apply the mosaic effect with a 3-to-1 pixel ratio to the whole screen, +you'd use Mosaic(3, 3, MyMosaicTable, 0, 0, ScreenX, ScreenY); + +See also: InitMosaicTable() + +Example: + table = InitMosaicTable(); + Mosaic(4,4, table, 0,0, screenx-1, screeny-1); + +------------------------------------------------------------- +void PaletteMorph(int r, int g, int b, int mix, int lighting) +------------------------------------------------------------- +This command alters the entire game palette, which will effect the entire +screen. It changes the 'tint' of the screen; the RGB values are the color +you want to tint the screen with, and range from 0 to 63. So, 63,0,0 would +be red, 0,63,0 is green, and 0,0,63 is blue. 0,0,0 is black and 63,63,63 +is white. The mix value controls how 'thickly' the screen is tinted +with this color. 0 would mean no mix whatsoever, while 100 would change +the screen to be the color you specified solidly. The lighting value simply +controls how light or dark the screen will be as a whole; 63 is normal +brightness, 0 is black. + +Example: + PaletteMorph(0,0,0,0, 63); + +--------------------------------- +void PartyMove(string movescript) +--------------------------------- +This command will have the party follow the specified movement script; player +control will resume after the script is completed. + +Example: + PartyMove("U1R1D1L1"); + +----------------------------- +void PlayFLI(string filename) +----------------------------- +Plays the specified FLI or FLC file. Does not loop. The timing in the V2 +playback may be slightly off, but it should be so slight as to be completely +unnoticable in the vast majority of cases. Also, it would be a good idea to +set the video mode beforehand to something appropriate to fit the resolution of +the FLI. + +SeeAlso: SetResolution() + +Example: + PlayFLI("INTRO.FLC"); + +------------------------------- +void PlayMusic(string filename) +------------------------------- +Plays the specified music file. In this version of V2, only MODs, MTMs, S3Ms, +and XMs are supported. + +See also: StopMusic(); + +Example: + PlayMusic("AURORA.MOD"); + +-------------------------------------------------- +void PlaySound(int soundslot, int volume, int pan) +-------------------------------------------------- +Plays the specified sound effect at the given slot index; volume is a value +from 0 to 64 indicating the volume the sound file will be played at, and pan +is a value from 0 to 255; 0 is all the way left, and 255 is all the way right, +128 is in the center. + +See also: CacheSound(), FreeAllSounds() + +Example: + shriek = CacheSound("SHRIEK.WAV"); + PlaySound(shriek, 64, 128); + +-------------------------- +int pow(int base, int exp) +-------------------------- +Raises base to the exp power and returns that value. + +Example: + result = pow(16, 3); // 4096 + +---------------------- +void ProcessEntities() +---------------------- +Processes one tick worth of entity movement. If you call this 100 times a +second it will keep the game moving as normal. For example, the following code +could be used to draw something on top of the normal map view: + +Example: + while (!done) + { + while (timer) + { + timer--; + ProcessEntities(); + } + Render(); + // Put additional things to be drawn per frame here + ShowPage(); + } + +--------------------------------------- +void PrintString(int font, string text) +--------------------------------------- +Displays the given string in the specified font index, at the location +last given by GotoXY. + +See also: LoadFont(), GotoXY() + +Example: + PrintString(0, "VERGE 2"); + +--------------------- +int Random(int range) +--------------------- +Returns a random number between 0 and the range given. + +Example: + if (Random(100) < 50) + PrintString(0, "Heads!"); + else PrintString(0, "Tails!"); + +---------------- +void ReadMouse() +---------------- +Updates the mouse status variables mx, my, and mb. + +See also: SetMousePos() + +Example: + ReadMouse(); + +------------------------------ +void ReadVars(int filepointer) +------------------------------ +Reads all the global variables that have been written to a file by WriteVars(). +You're responsible for opening and closing the file for reading, mainly used +for savegames. + +See also: WriteVars(), fopen(), fclose() + +Example: + file = fopen("SAVE.DAT"); + ReadVars(file); + fclose(file); + +---------------------------------------------- +void Rect(int x, int y, int x2, int y2, int c) +---------------------------------------------- +Draws an outlined rectangle of the given coordinate set in the specified +color. + +See also: RectFill() + +Example: + Rect(0, 0, screenx-1, screeny-1, 128); + +-------------------------------------------------- +void RectFill(int x, int y, int x2, int y2, int c) +-------------------------------------------------- +Draws a filled rectangle of the given coordinate set in the specified +color. + +See also: Rect() + +Example: + RectFill(0, 0, screenx-1, screeny-1, 128); + +------------- +void Render() +------------- +Performs a render, per the render string, but does not copy the screen +buffer to the visible screen, allowing you to draw additional items on top +of the game screen. + +See also: ShowPage() + +Example: + Render(); + +---------------------------- +void RestoreRenderSettings() +---------------------------- +Restores the default clipping window for the given video mode, and restores +the render destination to the video buffer. + +See also: SetClipRect(), SetRenderDest() + +Example: + RestoreRenderSettings(); + +---------------------------------------------------------------------------- +void ScaleSprite(int x, int y, int iw, int ih, int dw, int dh, int imageptr) +---------------------------------------------------------------------------- +Draws a scaled image. A bit more complex than the other blitters to use. +The x,y values give the upper-left corner of where the blit will start. +iw,ih are the width and height of the *source* image. dw, dh are the width +and height that the image should appear on screen. (ie, the end result +bounding box of the image would be, x, y, x+dw, y+dh) Imageptr is, as with +the other blit routines, a pointer to the image graphic. + +See also: TScaleSprite() + +Example: + im = LoadImage("VECNA.PCX"); + ScaleSprite(0,0, image_width,image_height, image_width*2,image_height*2, im); + free(im); + +---------------------- +void SetClip(int clip) +---------------------- +Determines whether clipping versions of general VC graphics routines are +used. Defaults to 1; You will never need to turn this off, turn it offers +no functional difference, except faster blitting routines, however, great care +must be used when turning it off that no part of any blit or graphics call +draws off screen boundaries. + +Example: + SetClip(1); + +------------------------------------------------ +void SetClipRect(int x1, int y1, int x2, int y2) +------------------------------------------------ +Sets the rectangle that image drawing will be clipped to. + +See also: RestoreRenderSettings() + +Example: + im = LoadImage("PATTERN.PCX"); + SetClipRect(screenx/4, screeny/4, screenx-(screenx/4), screeny-(screeny/4)); + WrapBlit(0, 0, image_width, image_height, im); + RestoreRenderSettings(); + free(im): + +----------------------------------------------------- +void SetRenderDest(int width, int height, int buffer) +----------------------------------------------------- +This sets the video buffer that all VC video functions will draw into. + +See also: RestoreRenderSettings() + +Example: + buffer = malloc(32 * 32); + SetRenderDest(32, 32, buffer); + Line(0,0, 15,15, 128); + Line(0,15, 15,0, 128); + Rect(0,0, 15,15, 128); + RestoreRenderSettings(); + CopySprite(0, 0, 32, 32, buffer); + free(buffer); + +-------------------------- +void SetLucent(int lucent) +-------------------------- +Determines whether translucent versions of general VC graphics routines are +used. Defaults to 0. + +Example: + SetLucent(1); + +------------------------------ +void SetMousePos(int x, int y) +------------------------------ +Sets the current mouse position to the given x and y coordinates. Does no +checking to make sure the coordinates are valid, so check that yourself, they +should between 0 and screenx and 0 and screeny, respectively. + +See also: ReadMouse() + +Example: + SetMousePos(screenx/2, screeny/2); + +---------------------------------- +void SetPixel(int x, int y, int c) +---------------------------------- +Sets the specified pixel coordinate to the given color. + +See also: GetPixel(); + +Example: + SetPixel(screenx/2, screeny/2, 128); + +------------------------------- +void SetPlayer(int entityindex) +------------------------------- +Sets the specified entity index as the active player. + +See also: EntitySpawn() + +Example: + ent = EntitySpawn(0, 1, "VECNA.CHR"); + SetPlayer(ent); + +------------------------------------- +int SetResolution(int xres, int yres) +------------------------------------- +Sets the video mode to the specified resolution. Returns 1 if successful, 0 +if the mode set failed. + +Common video modes: +------------------- + DOS Windows + --- ------- + 320x200 320x200 + 320x240 320x240 + 360x240 512x384 + 256x256 640x480 + 640x480 800x600 + 1024x768 + +Example: + SetResolution(320, 240); + +------------------------------- +void SetRString(string rstring) +------------------------------- +Updates the RenderString to the specified string. + +Example: + SetRString("1E2"); + +------------------------------------------------ +void SetTile(int x, int y, int layer, int value) +------------------------------------------------ +Sets a new value to the given map layer at the given coordinates. For +layer, 0 through 5 are the first 6 possible map layers, a value of 6 +will always denote the obstruction field, and 7 denotes zone information. + +See also: GetTile() + +Example: + SetTile(0, 0, 0, 2); + +--------------- +void ShowPage() +--------------- +Copys the screen buffer to the visible screen. + +See also: Render(), CopySprite(), TCopySprite() + +Example: + ShowPage(); + +-------------------------------------------------------------------------- +void Silhouette(int x, int y, int width, int height, int color, int image) +-------------------------------------------------------------------------- +Renders a silhouette of the specified image. The silhouette is generated +by looking for all non-zero pixels in the image and replacing them with +the specified color. + +Example: + im = LoadImage("GOAT.PCX"); + Silhouette(0, 0, image_width, image_height, 128, im); + free(im); + +------------------- +int sin(int degree) +------------------- +Returns the sine of the given degree of measure (0-360) in 16.16 fixed +point. + +See also: cos(), tan() + +Example: + result = sin(180); + +---------------- +void StopMusic() +---------------- +Stops currently playing music. + +See also: PlayMusic() + +Example: + StopMusic(); + +------------------------------------ +int strcmp(string str1, string str2) +------------------------------------ +Compares the two passed strings. Returns 0 if they're identical, or +a nonzero number porportional to the difference between the strings. + +Example: + string_a = "alpha"; + string_b = "zeta"; + result = strcmp(string_a, string_b); + if (!result) + PrintString(0, "Strings are equal"); + else if (result < 0) + PrintString(0, string_a+" comes before "+string_b); + else + PrintString(0, string_b+" comes before "+string_a); + +---------------------- +int strlen(string str) +---------------------- +Returns the length of the passed string. + +Example: + my_string = "VERGE 2"; + length = strlen(my_string); + +------------------- +int tan(int degree) +------------------- +Returns the tangent of the given degree of measure (0-360) in 16.16 fixed +point. + +See also: sin(), cos() + +Example: + result = tan(270); + +---------------------------------------------------------------- +void TCopySprite(int x, int y, int width, int height, int image) +---------------------------------------------------------------- +Blits the image pointed to by image with the given dimensions at the +given location on screen. Transparency and clipping are performed. + +See also: CopySprite + +Example: + im = LoadImage("SLIME.PCX"); + TCopySprite(0, 0, image_width, image_height, im); + free(im); + +----------------------------------------------------------------------------- +void TScaleSprite(int x, int y, int iw, int ih, int dw, int dh, int imageptr) +----------------------------------------------------------------------------- +Draws a scaled image. A bit more complex than the other blitters to use. +The x,y values give the upper-left corner of where the blit will start. +iw,ih are the width and height of the *source* image. dw, dh are the width +and height that the image should appear on screen. (ie, the end result +bounding box of the image would be, x, y, x+dw, y+dh) Imageptr is, as with +the other blit routines, a pointer to the image graphic. This routines draws +the image with transparency, unlike ScaleSprite(). + +See also: ScaleSprite() + +Example: + im = LoadImage("SLIME.PCX"); + TScaleSprite(0,0, image_width,image_height, image_width*2,image_height*2, im); + free(im); + +-------------------------------------------------------------------- +void TWrapBlit(int xofs, int yofs, int width, int height, int image) +-------------------------------------------------------------------- +Blits an image of any size repeatedly so that it fills the entire screen; +This version is color-0 transparent unlike the normal WrapBlit version. + +See also: WrapBlit(); + +Example: + im = LoadImage("PATTERN.PCX"); + TWrapBlit(0, 0, image_width, image_height, im); + free(im); + +------------------------- +void UnPress(int control) +------------------------- +This will read a control currently being pressed as not pressed until it +is released and then pressed again. The values of control are: + 0: All buttons, not directionals + 1: b1 5: up + 2: b2 6: down + 3: b3 7: left + 4: b4 8: right + +Example: + UnPress(0); + +--------------------- +void UpdateControls() +--------------------- +Updates the control variables up, down, left, right, b1, b2, b3, and b4. + +Example: + UpdateControls(); + +------------------------------------------- +void VLine(int x, int y, int y2, int color) +------------------------------------------- +Draws a vertical line from the specified coordinates in the given color. + +See also: HLine(), Line() + +Example: + VLine(screenx/2, 0, screeny-1, 128); + +------------------------------------------------------------------- +void WrapBlit(int xofs, int yofs, int width, int height, int image) +------------------------------------------------------------------- +Blits an image of any size repeatedly so that it fills the entire screen; + +See also: TWrapBlit(); + +Example: + im = LoadImage("PATTERN.PCX"); + WrapBlit(0, 0, image_width, image_height, im); + free(im); + +------------------------------- +void WriteVars(int filepointer) +------------------------------- +Writes all global variables (ints and strings) to the specified file. You +must take care of opening and closing the file for writing. Mostly used +for savegames. + +See also: ReadVars(), fwopen(), fwclose() + +Example: + file = fwopen("SAVE.DAT"); + WriteVars(file); + fwclose(file); + +============================================================================= + +III. Builtin Variables + +b1, b2, b3, b4 +-------------- +These represent four primary control buttons. They are updated by the +UpdateControls() function. [read-only] + +Example: + UpdateControls(); + if (b1) Message("Button 1!", 100); + if (b2) Message("Button 2!", 100); + if (b3) Message("Button 3!", 100); + if (b4) Message("Button 4!", 100); + +cameratracking, tracker +----------------------- +If cameratracking is 0, the camera is free to be altered by the xwin/ywin +variables. If cameratracking is 1, the camera will always follow the player. +If cameratracking is 2, the camera will always follow the entity specified in +tracker. [read/write] + +Example: + ent = EntitySpawn(0, 1, "VECNA.CHR"); + cameratracking = 2; + tracker = ent; + EntityMove("R2D2L2U2"); + +entity.x, entity.y +------------------ +x/y coordinates of the specified entity in world-coordinates (pixel-accurate). +[read/write] + +Example: + Log("Player X="+str(entity.x[player])+", Y="+str(entity.y[player])); + +entity.tx, entity.ty +-------------------- +x/y coordinates of the specified entity in tile coordinate. [read/write] + +Example: + Log("Player TX="+str(entity.tx[player])+", TY="+str(entity.ty[player])); + +entity.facing, entity.moving, entity.specframe, entity.speed, entity.movecode +----------------------------------------------------------------------------- +Various variables effecting the specified stats of the given entity. +[read/write] + +Example: + Log("Player info"); + Log(" Facing: "+str(entity.facing[player])); + Log(" Moving: "+str(entity.moving[player])); + Log("SpecFrame: "+str(entity.specframe[player])); + Log(" Speed: "+str(entity.speed[player])); + Log(" MoveCode: "+str(entity.movecode[player])); + +entsonscreen +------------ +Array of entity indexes which are currently onscreen. + +Example: + // log all tile coordinates of entities onscreen + for (i=0; i>8)) +#define LOWORD(l) ((WORD)(l)) +#define HIWORD(l) ((WORD)((DWORD)(l)>>16)) +#define MAKEWORD(l,h) ((WORD)(((BYTE)(l))|(((WORD)((BYTE)(h)))<<8))) +#define MAKELONG(l,h) ((DWORD)(((WORD)(l))|(((DWORD)((WORD)(h)))<<16))) + +#endif + + +/* audio system version number */ +#define AUDIO_SYSTEM_VERSION 0x0101 + +/* audio capabilities bit fields definitions */ +#define AUDIO_FORMAT_1M08 0x00000001 +#define AUDIO_FORMAT_1S08 0x00000002 +#define AUDIO_FORMAT_1M16 0x00000004 +#define AUDIO_FORMAT_1S16 0x00000008 +#define AUDIO_FORMAT_2M08 0x00000010 +#define AUDIO_FORMAT_2S08 0x00000020 +#define AUDIO_FORMAT_2M16 0x00000040 +#define AUDIO_FORMAT_2S16 0x00000080 +#define AUDIO_FORMAT_4M08 0x00000100 +#define AUDIO_FORMAT_4S08 0x00000200 +#define AUDIO_FORMAT_4M16 0x00000400 +#define AUDIO_FORMAT_4S16 0x00000800 + +/* audio format bit fields defines for devices and waveforms */ +#define AUDIO_FORMAT_8BITS 0x0000 +#define AUDIO_FORMAT_16BITS 0x0001 +#define AUDIO_FORMAT_LOOP 0x0010 +#define AUDIO_FORMAT_BIDILOOP 0x0020 +#define AUDIO_FORMAT_REVERSE 0x0080 +#define AUDIO_FORMAT_MONO 0x0000 +#define AUDIO_FORMAT_STEREO 0x0100 +#define AUDIO_FORMAT_FILTER 0x8000 + +/* audio resource limits defines */ +#define AUDIO_MAX_VOICES 32 +#define AUDIO_MAX_SAMPLES 16 +#define AUDIO_MAX_PATCHES 128 +#define AUDIO_MAX_PATTERNS 256 +#define AUDIO_MAX_ORDERS 256 +#define AUDIO_MAX_NOTES 96 +#define AUDIO_MAX_POINTS 12 +#define AUDIO_MIN_PERIOD 1 +#define AUDIO_MAX_PERIOD 31999 +#define AUDIO_MIN_VOLUME 0x00 +#define AUDIO_MAX_VOLUME 0x40 +#define AUDIO_MIN_PANNING 0x00 +#define AUDIO_MAX_PANNING 0xFF +#define AUDIO_MIN_POSITION 0x00000000L +#define AUDIO_MAX_POSITION 0x00100000L +#define AUDIO_MIN_FREQUENCY 0x00000200L +#define AUDIO_MAX_FREQUENCY 0x00080000L + +/* audio error code defines */ +#define AUDIO_ERROR_NONE 0x0000 +#define AUDIO_ERROR_INVALHANDLE 0x0001 +#define AUDIO_ERROR_INVALPARAM 0x0002 +#define AUDIO_ERROR_NOTSUPPORTED 0x0003 +#define AUDIO_ERROR_BADDEVICEID 0x0004 +#define AUDIO_ERROR_NODEVICE 0x0005 +#define AUDIO_ERROR_DEVICEBUSY 0x0006 +#define AUDIO_ERROR_BADFORMAT 0x0007 +#define AUDIO_ERROR_NOMEMORY 0x0008 +#define AUDIO_ERROR_NODRAMMEMORY 0x0009 +#define AUDIO_ERROR_FILENOTFOUND 0x000A +#define AUDIO_ERROR_BADFILEFORMAT 0x000B +#define AUDIO_LAST_ERROR 0x000B + +/* audio device identifiers */ +#define AUDIO_DEVICE_NONE 0x0000 +#define AUDIO_DEVICE_MAPPER 0xFFFF + +/* audio product identifiers */ +#define AUDIO_PRODUCT_NONE 0x0000 +#define AUDIO_PRODUCT_SB 0x0001 +#define AUDIO_PRODUCT_SB15 0x0002 +#define AUDIO_PRODUCT_SB20 0x0003 +#define AUDIO_PRODUCT_SBPRO 0x0004 +#define AUDIO_PRODUCT_SB16 0x0005 +#define AUDIO_PRODUCT_AWE32 0x0006 +#define AUDIO_PRODUCT_WSS 0x0007 +#define AUDIO_PRODUCT_ESS 0x0008 +#define AUDIO_PRODUCT_GUS 0x0009 +#define AUDIO_PRODUCT_GUSDB 0x000A +#define AUDIO_PRODUCT_GUSMAX 0x000B +#define AUDIO_PRODUCT_IWAVE 0x000C +#define AUDIO_PRODUCT_PAS 0x000D +#define AUDIO_PRODUCT_PAS16 0x000E +#define AUDIO_PRODUCT_ARIA 0x000F +#define AUDIO_PRODUCT_WINDOWS 0x0100 +#define AUDIO_PRODUCT_LINUX 0x0101 +#define AUDIO_PRODUCT_SPARC 0x0102 +#define AUDIO_PRODUCT_SGI 0x0103 +#define AUDIO_PRODUCT_DSOUND 0x0104 + +/* audio envelope bit fields */ +#define AUDIO_ENVELOPE_ON 0x0001 +#define AUDIO_ENVELOPE_SUSTAIN 0x0002 +#define AUDIO_ENVELOPE_LOOP 0x0004 + +/* audio pattern bit fields */ +#define AUDIO_PATTERN_PACKED 0x0080 +#define AUDIO_PATTERN_NOTE 0x0001 +#define AUDIO_PATTERN_SAMPLE 0x0002 +#define AUDIO_PATTERN_VOLUME 0x0004 +#define AUDIO_PATTERN_COMMAND 0x0008 +#define AUDIO_PATTERN_PARAMS 0x0010 + +/* audio module bit fields */ +#define AUDIO_MODULE_AMIGA 0x0000 +#define AUDIO_MODULE_LINEAR 0x0001 +#define AUDIO_MODULE_PANNING 0x8000 + +#pragma pack(1) + +/* audio capabilities structure */ +typedef struct { + WORD wProductId; /* product identifier */ + CHAR szProductName[30]; /* product name */ + DWORD dwFormats; /* formats supported */ +} AUDIOCAPS, *LPAUDIOCAPS; + +/* audio format structure */ +typedef struct { + UINT nDeviceId; /* device identifier */ + WORD wFormat; /* playback format */ + WORD nSampleRate; /* sampling frequency */ +} AUDIOINFO, *LPAUDIOINFO; + +/* audio waveform structure */ +typedef struct { + LPBYTE lpData; /* data pointer */ + DWORD dwHandle; /* waveform handle */ + DWORD dwLength; /* waveform length */ + DWORD dwLoopStart; /* loop start point */ + DWORD dwLoopEnd; /* loop end point */ + WORD nSampleRate; /* sampling rate */ + WORD wFormat; /* format bits */ +} AUDIOWAVE, *LPAUDIOWAVE; + + +/* audio envelope point structure */ +typedef struct { + WORD nFrame; /* envelope frame */ + WORD nValue; /* envelope value */ +} AUDIOPOINT, *LPAUDIOPOINT; + +/* audio envelope structure */ +typedef struct { + AUDIOPOINT aEnvelope[AUDIO_MAX_POINTS]; /* envelope points */ + BYTE nPoints; /* number of points */ + BYTE nSustain; /* sustain point */ + BYTE nLoopStart; /* loop start point */ + BYTE nLoopEnd; /* loop end point */ + WORD wFlags; /* envelope flags */ + WORD nSpeed; /* envelope speed */ +} AUDIOENVELOPE, *LPAUDIOENVELOPE; + +/* audio sample structure */ +typedef struct { + CHAR szSampleName[32]; /* sample name */ + BYTE nVolume; /* default volume */ + BYTE nPanning; /* default panning */ + BYTE nRelativeNote; /* relative note */ + BYTE nFinetune; /* finetune */ + AUDIOWAVE Wave; /* waveform handle */ +} AUDIOSAMPLE, *LPAUDIOSAMPLE; + +/* audio patch structure */ +typedef struct { + CHAR szPatchName[32]; /* patch name */ + BYTE aSampleNumber[AUDIO_MAX_NOTES]; /* multi-sample table */ + WORD nSamples; /* number of samples */ + BYTE nVibratoType; /* vibrato type */ + BYTE nVibratoSweep; /* vibrato sweep */ + BYTE nVibratoDepth; /* vibrato depth */ + BYTE nVibratoRate; /* vibrato rate */ + WORD nVolumeFadeout; /* volume fadeout */ + AUDIOENVELOPE Volume; /* volume envelope */ + AUDIOENVELOPE Panning; /* panning envelope */ + LPAUDIOSAMPLE aSampleTable; /* sample table */ +} AUDIOPATCH, *LPAUDIOPATCH; + +/* audio pattern structure */ +typedef struct { + WORD nPacking; /* packing type */ + WORD nTracks; /* number of tracks */ + WORD nRows; /* number of rows */ + WORD nSize; /* data size */ + LPBYTE lpData; /* data pointer */ +} AUDIOPATTERN, *LPAUDIOPATTERN; + +/* audio module structure */ +typedef struct { + CHAR szModuleName[32]; /* module name */ + WORD wFlags; /* module flags */ + WORD nOrders; /* number of orders */ + WORD nRestart; /* restart position */ + WORD nTracks; /* number of tracks */ + WORD nPatterns; /* number of patterns */ + WORD nPatches; /* number of patches */ + WORD nTempo; /* initial tempo */ + WORD nBPM; /* initial BPM */ + BYTE aOrderTable[AUDIO_MAX_ORDERS]; /* order table */ + BYTE aPanningTable[AUDIO_MAX_VOICES]; /* panning table */ + LPAUDIOPATTERN aPatternTable; /* pattern table */ + LPAUDIOPATCH aPatchTable; /* patch table */ +} AUDIOMODULE, *LPAUDIOMODULE; + +/* audio callback function defines */ +typedef VOID (AIAPI* LPFNAUDIOWAVE)(LPBYTE, UINT); +typedef VOID (AIAPI* LPFNAUDIOTIMER)(VOID); +typedef VOID (AIAPI* LPFNAUDIOCALLBACK)(BYTE, UINT, UINT); + +/* audio handle defines */ +typedef HANDLE HAC; +typedef HAC* LPHAC; + +#pragma pack() + + +/* audio interface API prototypes */ +UINT AIAPI AInitialize(VOID); +UINT AIAPI AGetVersion(VOID); +UINT AIAPI AGetAudioNumDevs(VOID); +UINT AIAPI AGetAudioDevCaps(UINT nDeviceId, LPAUDIOCAPS lpCaps); +UINT AIAPI AGetErrorText(UINT nErrorCode, LPSTR lpText, UINT nSize); + +UINT AIAPI APingAudio(LPUINT lpnDeviceId); +UINT AIAPI AOpenAudio(LPAUDIOINFO lpInfo); +UINT AIAPI ACloseAudio(VOID); +UINT AIAPI AUpdateAudio(VOID); + +UINT AIAPI AOpenVoices(UINT nVoices); +UINT AIAPI ACloseVoices(VOID); + +UINT AIAPI ASetAudioCallback(LPFNAUDIOWAVE lpfnAudioWave); +UINT AIAPI ASetAudioTimerProc(LPFNAUDIOTIMER lpfnAudioTimer); +UINT AIAPI ASetAudioTimerRate(UINT nTimerRate); + +LONG AIAPI AGetAudioDataAvail(VOID); +UINT AIAPI ACreateAudioData(LPAUDIOWAVE lpWave); +UINT AIAPI ADestroyAudioData(LPAUDIOWAVE lpWave); +UINT AIAPI AWriteAudioData(LPAUDIOWAVE lpWave, DWORD dwOffset, UINT nCount); + +UINT AIAPI ACreateAudioVoice(LPHAC lphVoice); +UINT AIAPI ADestroyAudioVoice(HAC hVoice); + +UINT AIAPI APlayVoice(HAC hVoice, LPAUDIOWAVE lpWave); +UINT AIAPI APrimeVoice(HAC hVoice, LPAUDIOWAVE lpWave); +UINT AIAPI AStartVoice(HAC hVoice); +UINT AIAPI AStopVoice(HAC hVoice); + +UINT AIAPI ASetVoicePosition(HAC hVoice, LONG dwPosition); +UINT AIAPI ASetVoiceFrequency(HAC hVoice, LONG dwFrequency); +UINT AIAPI ASetVoiceVolume(HAC hVoice, UINT nVolume); +UINT AIAPI ASetVoicePanning(HAC hVoice, UINT nPanning); + +UINT AIAPI AGetVoicePosition(HAC hVoice, LPLONG lpdwPosition); +UINT AIAPI AGetVoiceFrequency(HAC hVoice, LPLONG lpdwFrequency); +UINT AIAPI AGetVoiceVolume(HAC hVoice, LPUINT lpnVolume); +UINT AIAPI AGetVoicePanning(HAC hVoice, LPUINT lpnPanning); +UINT AIAPI AGetVoiceStatus(HAC hVoice, LPBOOL lpnStatus); + +UINT AIAPI APlayModule(LPAUDIOMODULE lpModule); +UINT AIAPI AStopModule(VOID); +UINT AIAPI APauseModule(VOID); +UINT AIAPI AResumeModule(VOID); +UINT AIAPI ASetModuleVolume(UINT nVolume); +UINT AIAPI ASetModulePosition(UINT nOrder, UINT nRow); +UINT AIAPI AGetModuleVolume(LPUINT lpnVolume); +UINT AIAPI AGetModulePosition(LPUINT pnOrder, LPUINT lpnRow); +UINT AIAPI AGetModuleStatus(LPBOOL lpnStatus); +UINT AIAPI ASetModuleCallback(LPFNAUDIOCALLBACK lpfnAudioCallback); + +UINT AIAPI ALoadModuleFile(LPSTR lpszFileName, + LPAUDIOMODULE* lplpModule, DWORD dwFileOffset); +UINT AIAPI AFreeModuleFile(LPAUDIOMODULE lpModule); + +UINT AIAPI ALoadWaveFile(LPSTR lpszFileName, + LPAUDIOWAVE* lplpWave, DWORD dwFileOffset); +UINT AIAPI AFreeWaveFile(LPAUDIOWAVE lpWave); + +#ifdef __cplusplus +}; +#endif + +#endif diff --git a/16/v2/source/ENGINE/A_MEMORY.C b/16/v2/source/ENGINE/A_MEMORY.C new file mode 100644 index 00000000..9ce7f4c8 --- /dev/null +++ b/16/v2/source/ENGINE/A_MEMORY.C @@ -0,0 +1,201 @@ +/* +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. +*/ + +#include +#include + +#include "verge.h" + +// ***** +// TODO: Move the chunk list from an array to a linked list? +// Would eliminate hardcoded chunk limit, but would make +// general operation slower. Probably not The Right Thing, +// sides the chunk limit can be interesting sometimes. If +// it becomes problematic, consider a Binary Tree. +// ***** + +// ***************************** Data ***************************** + +#define MAXCHUNKS 1000 +#define PARANOID +#define PADFILLVALUE 254 +#define PADSIZE 256 + +typedef struct +{ + void *pointer; + int size; + int owner; + char desc[40]; +} memblockType; + +memblockType chunks[MAXCHUNKS+1]; +int numchunks=0; + +// ***************************** Code ***************************** + +void *valloc(int amount, char *desc, int owner) +{ + if (numchunks == MAXCHUNKS) + err("Failed allocated %d bytes (%s), reason: Out of chunks.", + amount, desc); + +#ifdef PARANOID + CheckCorruption(); + chunks[numchunks].pointer = (void *) ((int) malloc(amount + (PADSIZE * 2)) + PADSIZE); + chunks[numchunks].size = amount; + memset((char *) chunks[numchunks].pointer - PADSIZE, PADFILLVALUE, PADSIZE); + memset((char *) chunks[numchunks].pointer + + chunks[numchunks].size, PADFILLVALUE, PADSIZE); +#else + chunks[numchunks].pointer = malloc(amount); + chunks[numchunks].size = amount; +#endif + chunks[numchunks].owner = owner; + strncpy(chunks[numchunks].desc, desc, 39); + return chunks[numchunks++].pointer; +} + +void *qvalloc(int amount) +{ + void *ptr; + + // Quick and dirty memory allocation. Should be used ONLY + // for temporary blocks in speed-critical loops. + + ptr = malloc(amount); + if (!ptr) err("qvalloc: Failed allocating %d bytes.", amount); + return ptr; +} + +void qvfree(void *ptr) +{ + free(ptr); +} + +int TotalBytesAllocated(void) +{ + int i, tally=0; + + for (i=0; is) + { + sprintf(strbuf,"File is in €%s~, index %d~",pack[f->v].mountname, f->i); + Con_Printf(strbuf); + sprintf(strbuf,"Packofs: %d~ current ofs: %d~",pack[f->v].files[f->i].packofs,pack[f->v].files[f->i].curofs); + Con_Printf(strbuf); + if (pack[f->v].files[f->i].extractable) + Con_Printf("File is extractable."); + else Con_Printf("File is not extractable."); + if (pack[f->v].files[f->i].override) + Con_Printf("Override allowed."); + else Con_Printf("Override not allowed."); + } + else Con_Printf("File is external."); + sprintf(strbuf,"File is %d~ bytes.",filesize(f)); + Con_Printf(strbuf); + vclose(f); +} + +void vid_mode() +{ int xres,yres; + + xres=atoi((char *)args[1]); + yres=atoi((char *)args[2]); + Con_NextLine(); + + ShutdownVideo(0); + if (InitVideo(xres, yres)) + { + Con_Printf("{||||||||||||}"); + Con_Printf("Loading new video driver..."); + Con_Printf(DriverDesc); + Con_Printf("{||||||||||||}"); + } + else Con_Printf("Unsupported/unknown video mode."); + set_intensity(63); +} + +void CPU_Usage() +{ + if (numargs==1) + { + sprintf(strbuf,"cpu_usage is %d~", cpu_watch); + Con_Printf(strbuf); + } + else cpu_watch=atoi((char *) args[1]); +} + +void Mount() +{ + MountVFile((char *) args[1]); + sprintf(strbuf,"%s mounted.",args[1]); + Con_Printf(strbuf); +} + +void ZeroConWarp(char **args) +{ + player->x=atoi(args[1])*16; + player->y=atoi(args[2])*16; + player->tx=atoi(args[1]); + player->ty=atoi(args[2]); +} + +void ZeroConBrowseTiles(void) +{ + int x,y,n,k=0,a=0; + + while(last_pressed!=SCAN_Q) + { + ClearScreen(); + UpdateControls(); + CheckMessages(); + if(last_pressed==SCAN_A) { if(a) a=0; else a=1; last_pressed=0; } + if(last_pressed==SCAN_DOWN&&(k+(ty-3)*(tx-3)-tx+4)0) + { + k-=tx-4; + last_pressed=0; + } + for(y=1; yx, player->y); Con_Printf(strbuf); + sprintf(strbuf,"xtc: ‚%d~ ytc: ‚%d~", player->x>>4, player->y>>4); Con_Printf(strbuf); +} + +void PlayerSpeed() +{ + if (!player) + { + Con_Printf("No player."); + return; + } + if (numargs==1) + { + Con_NextLine(); + sprintf(strbuf,"speed is is %d~", player->speed); + Con_Printf(strbuf); + } + else + { + player->speed=atoi((char *) args[1]); + player->speedct=0; + } +} + +void Player() +{ int i; + + i=atoi((char *) args[1]); + if (i', '?', 0, '*', 0, 1, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, '-', 0, 0, 0, '+', 0, + 0, 0, 1, 127, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 13, 0, '/', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '/', 0, 0, 0, 0, 0 +}; + +#define NUMCMDS 31 +char *concmds[] = { + "CONSOLEBG","LISTMOUNTS","PACKINFO","LISTCMDS","CD_PLAY","CD_STOP", + "CD_OPEN","CD_CLOSE","EXIT","VID_MODE","CPU_USAGE","MOUNT","MAP", + "VER","BROWSETILES","WARP","CAMERATRACKING","RSTRING","SHOWOBS", + "PHANTOM","ENTITYSTAT","ACTIVEENTS","ENTITY","CURPOS","PLAYERSPEED", + "SPEEDDEMON","RV","SV","PLAYER","SPAWNENTITY","SHOWZONES" + }; +byte sortedcmds[NUMCMDS]; + +// ================================= Code ==================================== + +void SortConCmds(void) +/* -- ric: 03/Jun/98 -- + * creates the sorted index into concmds + */ +{ + int i,j; + int temp; + + for (i=0; i=i; j--) + if (strcmp(concmds[sortedcmds[j-1]],concmds[sortedcmds[j]])>0) + { + // swap the indices + temp=sortedcmds[j-1]; + sortedcmds[j-1]=sortedcmds[j]; + sortedcmds[j]=temp; + } + } +} + +void InitConsole(void) +{ + Logp("Initialize console."); + LoadFont("system.fnt"); + consolebg=VLoadImageBuf("console.gif"); + + consoletext=(char *) valloc(45*50, "consoletext", OID_MISC); + cmd=(byte *) valloc(40, "InitConsole:cmd", OID_MISC); + cmd2=(byte *) valloc(40, "InitConsole:cmd2", OID_MISC); + memset(cmd, 0, 40); + memset(cmd2, 0, 40); + memset(consoletext, 0, 2250); + + lastcmds=(char *) valloc(400, "InitConsole:lastcmds", OID_MISC); + memset(lastcmds, 0, 400); + + SortConCmds(); + LogDone(); +} + +void DrawConsole(); + +void Con_Printf(char *str) +{ char tbuf[2250]; + + // move buffer up a line + memcpy(tbuf, consoletext+50, 2200); + memcpy(consoletext, tbuf, 2200); + + memcpy(consoletext+2200, str, strlen(str)+1); + lines++; +} + +void Con_NextLine(void) +{ + Con_Printf(""); + lines=0; +} + +int ShowConsole(void) +{ + conlines+=2; + if (conlines > 120) + { + callback=0; + conlines=120; + } + return 0; +} + +int HideConsole(void) +{ + if (conlines > 3) + { + conlines-=2; + } + else + { + conlines=1; + callback=0; + } + return 0; +} + +void DrawConsole(void) +{ int i; + int tagline=0; + + lines=0; + tagline=conlines; + + Render(); + CopySpriteZoomClip(0,-120+tagline, 320,120, sx,120, consolebg); + + // write console text + + for (i=0; i<9; i++) + { + GotoXY(1, 1+(i*10)-(120-tagline)); + printstring(0,consoletext+((startln+i)*50)); + } + + GotoXY(1,101-(120-tagline)); + printstring(0,"]"); + printstring(0,(char *) cmd); + + if (systemtime>=cswtime) + { + cursor ^= 1; + cswtime = systemtime+40; + } + + if (cursor) printstring(0, "&"); + + if (startln<36) + { + GotoXY(1, 91-(120-tagline)); + printstring(0, "^ ^ ^ ^ ^ ^ ^ ^ ^ ^"); + } +} + +int Args(int num) +{ + if (numargs>=num) return 1; + sprintf(strbuf,"This function needs %d~ arguments.",num-1); + Con_Printf(strbuf); + return 0; +} + +void ListCmds(void) +{ int i; + + Con_NextLine(); + for (i=0; i ~"); } break; + case 16: CameraTracking(); break; + case 17: if (numargs==1) ZeroGetRString(); + if (numargs==2) ZeroSetRString((char**)args); break; + case 18: Obstructions(); break; + case 19: Phantom(); break; + case 20: EntityStat(); break; + case 21: ListActiveEnts(); break; + case 22: if (Args(2)) EntityS(); break; + case 23: CurPos(); break; + case 24: PlayerSpeed(); break; + case 25: speeddemon=1; break; + case 26: ReadVCVar(); break; + case 27: WriteVCVar(); break; + case 28: if (Args(2)) Player(); break; + case 29: if (Args(4)) SpawnEntity(); break; + case 30: ShowZones(); break; + case NUMCMDS: Con_Printf((char *) cmd); break; + } +} + +void ParseCommand(void) +{ byte *src; + // breaks the command string into arguements and stuff. (in cmd2) + + numargs=0; + src=(byte *) cmd2; + args[0]=src; + + while (*src==' ') src++; + + if (!*src) return; + + while (1) + { + if (*src==' ') + { + while (*src== ' ') + { + *src=0; + src++; + } + if (*src) + { + numargs++; + args[numargs]=src; + } + src--; + } + src++; + if (!*src) + { + numargs++; + return; + } + } +} + +void ProcessCommand(void) +{ byte i; + + memcpy(cmd2, cmd, 40); + strupr((char *) cmd2); + ParseCommand(); + + i=0; + while (i 1) + { + CheckMessages(); + DrawConsole(); + ShowPage(); + } + conlines=0; + key[SCAN_RQUOTA]=0; + timer_count=0; +} diff --git a/16/v2/source/ENGINE/CONSOLE.H b/16/v2/source/ENGINE/CONSOLE.H new file mode 100644 index 00000000..e4e60907 --- /dev/null +++ b/16/v2/source/ENGINE/CONSOLE.H @@ -0,0 +1,61 @@ +/* +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. +*/ + +#ifndef CONSOLE_H +#define CONSOLE_H + +#include "main.h" + +// -- externs -- + +extern byte *consolebg; // Console background image +extern byte *consoletext; // Console text buffer +extern byte *cmd, *cmd2, cmdlen; // command line buffer +extern char *lastcmds, numcmds, cmdpos; // last-command memory +extern byte *args[10], numargs; // command argument pointers +extern char cursor, more; // flag on/off cursor visible +extern int cswtime; // cursor switch time. +extern int conlines; // Number of visible lines +extern int lines; // number of lines entered since last draw +extern char startln; // Start display ofs (for scrollback) +extern char allowconsole; +extern char consoleoverride; + +extern byte key_ascii_tbl[128]; +extern byte key_shift_tbl[128]; + +extern char *concmds[]; + +// -- prototypes -- + +extern void InitConsole(void); +extern void Con_Printf(char *str); +extern void Con_NextLine(void); + +extern int ShowConsole(void); +extern int HideConsole(void); + +extern void DrawConsole(void); +extern int Args(int num); +extern void ListCmds(void); +extern void LastCmds(void); +extern void ExecuteCommand(int i); +extern void ParseCommand(void); +extern void ProcessCommand(void); +extern void CommandInput(void); +extern void ActivateConsole(void); + +#endif // CONSOLE_H diff --git a/16/v2/source/ENGINE/CONTROLS.C b/16/v2/source/ENGINE/CONTROLS.C new file mode 100644 index 00000000..728274a8 --- /dev/null +++ b/16/v2/source/ENGINE/CONTROLS.C @@ -0,0 +1,105 @@ +/* +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. +*/ + +#include "verge.h" + +// ================================= Data ==================================== + +// -- Hardware Dependent -- // + +int kb1, kb2, kb3, kb4; // keyboard controls +int jb1, jb2, jb3, jb4; // joystick controls + +// -- Unified Interface -- // + +char b1, b2, b3, b4; +char up, down, left, right; + +// -- UnPress support variables -- // + +char wb1, wb2, wb3, wb4; +char wup, wdown, wleft, wright; + +char rb1, rb2, rb3, rb4; +char rup, rdown, rleft, rright; + +// ================================= Code ==================================== + +void UpdateControls() +{ + rb1=0; rb2=0; rb3=0; rb4=0; + rup=0; rdown=0; rleft=0; rright=0; + + if (key[SCAN_UP]) rup=1; + if (key[SCAN_DOWN]) rdown=1; + if (key[SCAN_RIGHT]) rright=1; + if (key[SCAN_LEFT]) rleft=1; + + if (key[kb1]) rb1=1; + if (key[kb2]) rb2=1; + if (key[kb3]) rb3=1; + if (key[kb4]) rb4=1; + + if (wb1 && rb1) rb1=0; + else if (wb1 && !rb1) wb1=0; + b1=rb1; + + if (wb2 && rb2) rb2=0; + else if (wb2 && !rb2) wb2=0; + b2=rb2; + + if (wb3 && rb3) rb3=0; + else if (wb3 && !rb3) wb3=0; + b3=rb3; + + if (wb4 && rb4) rb4=0; + else if (wb4 && !rb4) wb4=0; + b4=rb4; + + if (wup && rup) rup=0; + else if (wup && !rup) wup=0; + up=rup; + + if (wdown && rdown) rdown=0; + else if (wdown && !rdown) wdown=0; + down=rdown; + + if (wleft && rleft) rleft=0; + else if (wleft && !rleft) wleft=0; + left=rleft; + + if (wright && rright) rright=0; + else if (wright && !rright) wright=0; + right=rright; +} + +void UnPress(int control) +{ + switch (control) + { + case 0: wb1=1; wb2=1; wb3=1; wb4=1; + b1=0; b2=0; b3=0; b4=0; + key[kb1]=0; key[kb2]=0; key[kb3]=0; key[kb4]=0; break; + case 1: wb1=1; b1=0; key[kb1]=0; break; + case 2: wb2=1; b2=0; key[kb2]=0; break; + case 3: wb3=1; b3=0; key[kb3]=0; break; + case 4: wb4=1; b4=0; key[kb4]=0; break; + case 5: wup=1; up=0; key[SCAN_UP]=0; break; + case 6: wdown=1; down=0; key[SCAN_DOWN]=0; break; + case 7: wleft=1; left=0; key[SCAN_LEFT]=0; break; + case 8: wright=1; right=0; key[SCAN_RIGHT]=0; break; + } +} diff --git a/16/v2/source/ENGINE/CONTROLS.H b/16/v2/source/ENGINE/CONTROLS.H new file mode 100644 index 00000000..aabd402d --- /dev/null +++ b/16/v2/source/ENGINE/CONTROLS.H @@ -0,0 +1,29 @@ +/* +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. +*/ + +#ifndef CONTROL_H +#define CONTROL_H + +extern int kb1, kb2, kb3, kb4; +extern int jb1, jb2, jb3, jb4; + +extern char b1, b2, b3, b4; +extern char up, down, left, right; + +void UpdateControls(); +void UnPress(int); + +#endif diff --git a/16/v2/source/ENGINE/ENGINE.C b/16/v2/source/ENGINE/ENGINE.C new file mode 100644 index 00000000..13ca67cd --- /dev/null +++ b/16/v2/source/ENGINE/ENGINE.C @@ -0,0 +1,746 @@ +/* +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. +*/ + +// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +// CHANGELOG: +// +// + added ScreenShot() on F11 +// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + + +#define ENGINE_H +#include "verge.h" + +// ================================= Data ==================================== + +typedef struct +{ + word start; // strand start + word finish; // strand end + word delay; // tile-switch delay + word mode; // tile-animation mode +} vspanim_r; + +typedef struct +{ + char pmultx,pdivx; // parallax multiplier/divisor for X + char pmulty,pdivy; // parallax multiplier/divisor for Y + unsigned short sizex, sizey; // layer dimensions. + unsigned char trans, hline; // transparency flag | hline (raster fx) +} layer_r; + +typedef struct +{ + char name[40]; // zone name/desc + unsigned short script; // script to call thingy + unsigned short percent; // chance of executing + unsigned short delay; // step-delay + unsigned short aaa; // Accept Adjacent Activation + unsigned short entityscript; // script to call for entities +} zoneinfo; + +zoneinfo zones[256]; // zone data records +layer_r layer[6]; // Array of layer data +vspanim_r vspanim[100]; // tile animation data +unsigned short vadelay[100]; // Tile animation delay ctr + +char mapname[60]; // MAP filename +char vspname[60]; // VSP filemap +char musname[60]; // MAP bkgrd music default filename +char rstring[20]; // render-order string +char numlayers; // number of layers in map +byte *obstruct, *zone; // obstruction and zone buffers +char layertoggle[8]; // layer visible toggles +word xstart, ystart; // MAP start x/y location +int bufsize; // how many bytes need to be written +int numzones; // number of active zones + +word *layers[6]; // Raw layer data +int xwin=0, ywin=0; // camera offset + +// -- vsp data -- + +byte *vsp=0,*vspmask; // VSP data buffer. +unsigned short numtiles; // number of tiles in VSP. +unsigned short *tileidx; // tile index thingamajig +char *flipped; // bi-direction looping flag + +// entity stuffs + +char *msbuf[100]; // ptr-table to script offset +char *ms; // script text buffer +byte nms; // number of movescripts + +char numfollowers=0; // number of party followers +byte follower[10]; // maximum of 10 followers. +char laststeps[10]={ 0 }; // record of last movements +int lastent; + +// -- stuff -- + +byte movegranularity; // means nothing now, please remove +byte movectr=0; + +byte phantom=0; // walk-through-walls +byte speeddemon=0; // doublespeed cheat +int bindarray[128]; // bind script offset + +// ================================= Code ==================================== + +void ReadCompressedLayer1(byte *dest, int len, char *buf) +{ + int j,n; + byte run, w; + + n=0; + do + { + w=*buf; buf++; + if (w==0xFF) + { + run=*buf; buf++; + w=*buf; buf++; + for (j=0; jtx, player->ty+1)) return 1; break; + case 1: if (ObstructionAt(player->tx, player->ty-1)) return 1; break; + case 2: if (ObstructionAt(player->tx-1, player->ty)) return 1; break; + case 3: if (ObstructionAt(player->tx+1, player->ty)) return 1; break; + } + switch (dir) + { + case 0: if (EntityObsAt(player->tx, player->ty+1)) return 1; break; + case 1: if (EntityObsAt(player->tx, player->ty-1)) return 1; break; + case 2: if (EntityObsAt(player->tx-1, player->ty)) return 1; break; + case 3: if (EntityObsAt(player->tx+1, player->ty)) return 1; break; + } + return 0; +} + +void CheckZone() +{ + int curzone; + static int lz=0, zonedelay=0; + + curzone=zone[(player->ty * layer[0].sizex) + player->tx]; + if (lz!=curzone) + { + zonedelay=0; + lz=curzone; + } + if (!zones[curzone].percent) return; + if (zonedelay < zones[curzone].delay) + { + zonedelay++; + return; + } + if (curzone) + if (zones[curzone].script && + zones[curzone].percent >= rnd(0,255)) + { + ExecuteEvent(zones[curzone].script); + zonedelay=0; + } +} + +int InvFace() +{ + switch(player -> facing) + { + case 0: return 1; + case 1: return 0; + case 2: return 3; + case 3: return 2; + } + return -1; +} + +void Activate() +{ + byte tz; + int ax=0, ay=0; + + switch(player->facing) + { + case 0: ax=player->tx; ay=player->ty+1; break; + case 1: ax=player->tx; ay=player->ty-1; break; + case 2: ax=player->tx-1; ay=player->ty; break; + case 3: ax=player->tx+1; ay=player->ty; break; + } + tz=zone[(ay*layer[0].sizex)+ax]; + if (zones[tz].aaa) + { + ExecuteEvent(zones[tz].script); + return; + } + if ((tz=EntityAt(ax, ay))) + { + tz--; + if (entity[tz].face) + { + entity[tz].facing=InvFace(); + AnimateEntity(&entity[tz]); + } + if (entity[tz].actscript) + { + lastent=tz; + ExecuteEvent(entity[tz].actscript); + } + } +} + +void ResetFollowers() +{ + int i; + + player->x=player->tx<<4; + player->y=player->ty<<4; + player->moving=0; + player->movecnt=0; + player->reset=1; + for (i=0; ix; + entity[follower[i]].y=player->y; + entity[follower[i]].tx=player->tx; + entity[follower[i]].ty=player->ty; + entity[follower[i]].facing=player->facing; + entity[follower[i]].reset=1; + } + memset(laststeps, 0, 10); +} + +void MoveFollowers() +{ + int i; + + for (i=0; ianimofs=chr[player->chrindex].uanim; + entity[follower[i]].delayct=0; + entity[follower[i]].reset=0; + } + entity[follower[i]].facing=laststeps[i+1]-1; + } +} + +//--- zero 5.7.99 + +void WritePalette(FILE *f) +{ char b; + int i; + byte pal3[768]; + + for (i=0; i<768; i++) + pal3[i]=pal2[i] << 2; + + b=12; fwrite(&b, 1, 1, f); + fwrite(pal3, 1, 768, f); +} + +void WritePCXLine(unsigned char *p,int len,FILE *pcxf) +{ int i; + unsigned char byt, samect, repcode; + + i=0; + do + { byt=p[i++]; + samect=1; + while (samect<(unsigned) 63 && i1 || (byt & 0xC0) != 0) + { + repcode=0xC0 | samect; + fwrite(&repcode,1,1,pcxf); + } + fwrite(&byt,1,1,pcxf); + } while (i16 colors + b1=1; fwrite(&b1, 1, 1, pcxf); // encoding always = 1 + b1=8; fwrite(&b1, 1, 1, pcxf); // 8 bits per pixel, for 256 colors + w1=0; fwrite(&w1, 1, 2, pcxf); // xmin = 0; + w1=0; fwrite(&w1, 1, 2, pcxf); // ymin = 0; + w1=sx-1; fwrite(&w1, 1, 2, pcxf); // xmax = 319; + w1=sy-1; fwrite(&w1, 1, 2, pcxf); // ymax = 199; + w1=sx; fwrite(&w1, 1, 2, pcxf); // hres = 320; + w1=sy; fwrite(&w1, 1, 2, pcxf); // vres = 200; + + fwrite(screen,1,48,pcxf); + + b1=0; fwrite(&b1, 1, 1, pcxf); // reserved always = 0. + b1=1; fwrite(&b1, 1, 1, pcxf); // number of color planes. Just 1 for 8bit. + w1=sx; fwrite(&w1, 1, 2, pcxf); // number of bytes per line + + w1=0; fwrite(&w1, 1, 1, pcxf); + fwrite(screen, 1, 59, pcxf); // filler + + for (w1=0; w1moving) + { + if (down && !PlayerObstructed(0)) + { + player->ty++; + player->moving=1; + player->movecnt=15; + player->y++; + if (player->reset || player->facing != 0) + { + player->animofs=chr[player->chrindex].danim; + player->delayct=0; + player->reset=0; + } + player->facing=0; + LastMove(1); + return; + } + if (up && !PlayerObstructed(1)) + { + player->ty--; + player->moving=2; + player->movecnt=15; + player->y--; + if (player->reset || player->facing != 1) + { + player->animofs=chr[player->chrindex].uanim; + player->delayct=0; + player->reset=0; + } + player->facing=1; + LastMove(2); + return; + } + if (left && !PlayerObstructed(2)) + { + player->tx--; + player->moving=3; + player->movecnt=15; + player->x--; + if (player->reset || player->facing != 2) + { + player->animofs=chr[player->chrindex].lanim; + player->delayct=0; + player->reset=0; + } + player->facing=2; + LastMove(3); + return; + } + if (right && !PlayerObstructed(3)) + { + player->tx++; + player->moving=4; + player->movecnt=15; + player->x++; + if (player->reset || player->facing != 3) + { + player->animofs=chr[player->chrindex].ranim; + player->delayct=0; + player->reset=0; + } + player->facing=3; + LastMove(4); + return; + } + if (down) player->facing=0; + if (up) player->facing=1; + if (left) player->facing=2; + if (right) player->facing=3; + } + + switch (player->moving) + { + case 0: player->reset=1; player->animofs=0; player->delayct=0; break; + case 1: player->y++; player->movecnt--; break; + case 2: player->y--; player->movecnt--; break; + case 3: player->x--; player->movecnt--; break; + case 4: player->x++; player->movecnt--; break; + } + if (!player->movecnt && player->moving) + { + player->moving=0; + CheckZone(); + } + if (!player->movecnt && b1) Activate(); +} + +void ProcessControls() +{ int i; + + if (key[SCAN_RQUOTA]) + { + key[SCAN_RQUOTA]=0; last_pressed=0; + ActivateConsole(); + } + if (key[SCAN_ALT] && key[SCAN_X]) err("Exiting: ALT-X pressed."); +//--- zero 5.7.99 + if (key[SCAN_F11]) + { + Message("ss",50); + ScreenShot(); + key[SCAN_F11]=0; + } +//--- + if (!player) return; + + if (player->speed<4) + { + switch (player->speed) + { + case 1: if (player->speedct<3) { player->speedct++; return; } break; + case 2: if (player->speedct<2) { player->speedct++; return; } break; + case 3: if (player->speedct<1) { player->speedct++; return; } break; + } + } + if (player->speed<5) + { + ProcessControls1(); + player->speedct=0; + AnimateEntity(player); + } + switch (player->speed) + { + case 5: for (i=0; i<2; i++) { ProcessControls1(); AnimateEntity(player); } return; + case 6: for (i=0; i<3; i++) { ProcessControls1(); AnimateEntity(player); } return; + case 7: for (i=0; i<4; i++) { ProcessControls1(); AnimateEntity(player); } return; + } +} + +void GameTick() +{ + UpdateControls(); + CheckMessages(); + if (bindarray[last_pressed]) + HookKey(bindarray[last_pressed]); + ProcessControls(); + if (speeddemon && key[SCAN_CTRL]) ProcessControls(); + ProcessEntities(); +} + diff --git a/16/v2/source/ENGINE/ENGINE.H b/16/v2/source/ENGINE/ENGINE.H new file mode 100644 index 00000000..d65545fe --- /dev/null +++ b/16/v2/source/ENGINE/ENGINE.H @@ -0,0 +1,106 @@ +/* +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. +*/ + +// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +// CHANGELOG: +// +// + added ScreenShot() headers +// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + + +#ifndef ENGINE_H +#define ENGINE_H + +typedef struct +{ + word start; // strand start + word finish; // strand end + word delay; // tile-switch delay + word mode; // tile-animation mode +} vspanim_r; + +typedef struct +{ + char pmultx,pdivx; // parallax multiplier/divisor for X + char pmulty,pdivy; // parallax multiplier/divisor for Y + unsigned short sizex, sizey; // layer dimensions. + unsigned char trans, hline; // transparency flag | hline (raster fx) +} layer_r; + +typedef struct +{ + char name[40]; // zone name/desc + unsigned short script; // script to call thingy + unsigned short percent; // chance of executing + unsigned short delay; // step-delay + unsigned short aaa; // Accept Adjacent Activation + unsigned short entityscript; // script to call for entities +} zoneinfo; + +extern layer_r layer[4]; // Array of layer data +extern vspanim_r vspanim[100]; // tile animation data +extern unsigned short vadelay[100]; // Tile animation delay ctr + +extern char mapname[60]; // MAP filename +extern char vspname[60]; // VSP filemap +extern char rstring[20]; // render-order string +extern char numlayers; // number of layers in map +extern byte *obstruct, *zone; // obstruction and zone buffers +extern int bufsize; // how many bytes need to be written +extern char layertoggle[4]; // layer visible toggles + +extern word *layers[4]; // Raw layer data +extern int xwin, ywin; + +// -- entity things -- + +extern char *msbuf[100]; // ptr-table to script offset +extern char *ms; // script text buffer +extern byte nms; // number of movescripts + +extern char numfollowers; // number of party followers +extern byte follower[10]; // maximum of 10 followers. +extern char laststeps[10]; // record of last movements +extern int lastent; + +// -- vsp data -- + +extern byte *vsp,*vspmask; // VSP data buffer. +extern unsigned short numtiles; // number of tiles in VSP. +extern unsigned short *tileidx; // tile index thingamajig +extern char *flipped; // bi-direction looping flag +extern byte movegranularity, phantom, speeddemon, movectr; +extern int bindarray[128]; + +// -- prototypes -- + +extern void LoadVSP(char *fname); +extern void FreeVSP(void); +extern void LoadMAP(char *fname); +extern void FreeMAP(void); +extern void MAPswitch(void); +extern void MAPstats(void); +extern void ProcessControls(void); +extern void GameTick(void); + +extern void ReadCompressedLayer1(byte*, int, char*); + +//--- zero 5.7.99 +void WritePalette(FILE *f); +void WritePCXLine(unsigned char *p,int len,FILE *pcxf); +void ScreenShot(); +// +#endif // ENGINE_H diff --git a/16/v2/source/ENGINE/ENTITY.C b/16/v2/source/ENGINE/ENTITY.C new file mode 100644 index 00000000..add3758a --- /dev/null +++ b/16/v2/source/ENGINE/ENTITY.C @@ -0,0 +1,716 @@ +/* +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. +*/ + +// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +// CHANGELOG: +// +// + corrected oversight in movement script management by sticking a hack in +// MoveScript(). Bug caused Fx commands to not work sometimes. +// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + +#define ENTITY_H +#include "verge.h" + +// ================================= Data ==================================== + +typedef struct +{ + int x, y; // xwc, ywx position + word tx, ty; // xtc, ytc position + byte facing; // direction entity is facing + byte moving, movecnt; // direction entity is moving + byte frame; // bottom-line frame to display + byte specframe; // special-frame set thingo + byte chrindex, reset; // CHR index | Reset animation + byte obsmode1, obsmode2; // can be obstructed | Is an obstruction + byte speed, speedct; // entity speed, speedcount :) + byte delayct; // animation frame-delay + char *animofs, *scriptofs; // anim script | move script + byte face, actm; // auto-face | activation mode + byte movecode, movescript; // movement type | movement script + byte ctr, mode; // sub-tile move ctr, mode flag (internal) + word step, delay; // step, delay + word stepctr, delayctr; // internal use counters + word data1, data2, data3; // + word data4, data5, data6; // + int actscript; // activation script + int expand1, expand2; // + int expand3, expand4; // + char desc[20]; // Entity description. +} entity_r; + +typedef struct +{ + byte *imagedata; // CHR frame data + int fxsize, fysize; // frame x/y dimensions + int hx, hy; // x/y obstruction hotspot + int totalframes; // total # of frames. + int lidle, ridle; + int uidle, didle; + char lanim[100]; + char ranim[100]; + char uanim[100]; + char danim[100]; +} chrdata; + +typedef struct +{ + char t[60]; +} chrlist_r; + +chrlist_r chrlist[100]; +byte nmchr,playernum; +entity_r *player=0; +entity_r entity[256]; +byte entities=0; +chrdata chr[100]; +byte numchrs=0; +byte entidx[256], cc; +byte movesuccess; + +// ================================= Code ==================================== + +int ObstructionAt(int tx, int ty) +{ + if (obstruct[(ty*layer[0].sizex)+tx]) return 1; + if (tx==-1 || ty==-1) return 1; + if (tx==layer[0].sizex || ty==layer[0].sizey) return 1; + return 0; +} + +int Zone(int tx, int ty) +{ + return zone[(ty*layer[0].sizex)+tx]; +} + +void LoadCHR(char *fname, chrdata *c) +{ + VFILE *f; + char b, *ptr=0; + int i; + + f=vopen(fname); + if (!f) err("Could not open CHR file %s.",fname); + vread(&b, 1, f); + if (b!=2) err("CHR %s incorrect CHR format version.",fname); + vread(&c->fxsize, 2, f); + vread(&c->fysize, 2, f); + vread(&c->hx, 2, f); + vread(&c->hy, 2, f); + vread(strbuf, 4, f); // skip the hotspot size. + vread(&c->totalframes, 2, f); + + vread(&i, 4, f); + ptr=(char *) valloc(i, "LoadCHR:ptr", OID_TEMP); + vread(ptr, i, f); + c->imagedata=(byte *) valloc(c->fxsize * c->fysize * c->totalframes, "LoadCHR:c->imagedata", OID_IMAGE); + ReadCompressedLayer1(c->imagedata, c->fxsize * c->fysize * c->totalframes, ptr); + vfree(ptr); + + + vread(&c->lidle, 4, f); + vread(&c->ridle, 4, f); + vread(&c->uidle, 4, f); + vread(&c->didle, 4, f); + + for (b=0; b<4; b++) + { + switch (b) + { + case 0: ptr=c->lanim; break; + case 1: ptr=c->ranim; break; + case 2: ptr=c->uanim; break; + case 3: ptr=c->danim; break; + } + vread(&i, 4, f); + if (i>100) err("Animation strand too long. %d",i); + vread(ptr, i, f); + } + vclose(f); +} + +int CacheCHR(char *fname) +{ + LoadCHR(fname, &chr[numchrs]); + numchrs++; + return (numchrs-1); +} + +void FreeCHRList() +{ + int i; + + for (i=0; i=numchrs) return; + b=entity[i].specframe ? entity[i].specframe : entity[i].frame; + TCopySpriteClip(dx-chr[a].hx, dy-chr[a].hy, chr[a].fxsize, chr[a].fysize, + (byte *) (chr[a].imagedata+(b*chr[a].fxsize* + chr[a].fysize))); +} + +static int cmpent(const void* a, const void* b) +{ + return entity[*(byte*)a].y - entity[*(byte*)b].y; +} + +void RenderEntities() +{ + int i; + + qsort(entidx, cc, 1, cmpent); + for (i=0; ianimofs==' ') p->animofs++; + while (*p->animofs>=48 && *p->animofs<=57) + { + token[j]=*p->animofs; + p->animofs++; + j++; + } + token[j]=0; + return atoi(token); +} + +void GetNextCommand(entity_r *p) +{ + byte s; + + while (*p->animofs==' ') p->animofs++; + s=*p->animofs; + p->animofs++; + switch (s) + { + case 'F': p->frame=GetArg(p); break; + case 'W': p->delayct=GetArg(p); break; + case 0: if (p->moving) + switch (p->facing) + { + case 0: p->animofs=chr[p->chrindex].danim; break; + case 1: p->animofs=chr[p->chrindex].uanim; break; + case 2: p->animofs=chr[p->chrindex].lanim; break; + case 3: p->animofs=chr[p->chrindex].ranim; break; + } + else + switch (p->facing) + { + case 0: p->animofs=0; p->frame=chr[p->chrindex].didle; break; + case 1: p->animofs=0; p->frame=chr[p->chrindex].uidle; break; + case 2: p->animofs=0; p->frame=chr[p->chrindex].lidle; break; + case 3: p->animofs=0; p->frame=chr[p->chrindex].ridle; break; + } + p->delayct=0; break; + } +} + +void AnimateEntity(entity_r *p) +{ + if (!p->animofs && p->moving) + { + switch (p->facing) + { + case 0: p->animofs=chr[p->chrindex].danim; break; + case 1: p->animofs=chr[p->chrindex].uanim; break; + case 2: p->animofs=chr[p->chrindex].lanim; break; + case 3: p->animofs=chr[p->chrindex].ranim; break; + } + p->delayct=0; + } + if (!p->animofs && !p->moving) + { + switch (p->facing) + { + case 0: p->animofs=0; p->frame=chr[p->chrindex].didle; break; + case 1: p->animofs=0; p->frame=chr[p->chrindex].uidle; break; + case 2: p->animofs=0; p->frame=chr[p->chrindex].lidle; break; + case 3: p->animofs=0; p->frame=chr[p->chrindex].ridle; break; + } + p->delayct=0; + } + if (p->delayct) + { + p->delayct--; + } + else GetNextCommand(p); +} + +int EntityAt(int ex, int ey) +{ int i; + + for (i=0; isx+chr[entity[i].chrindex].fxsize) continue; + if (dy<0 || dy>sy+chr[entity[i].chrindex].fysize) continue; + entidx[cc]=i; cc++; + } +} + +void MoveRight(int i) +{ + int tx,ty; + + tx=entity[i].tx+1; ty=entity[i].ty; + if (entity[i].obsmode1 && (ObstructionAt(tx,ty) || AEntityObsAt(tx,ty))) + { movesuccess=0; return; } + if (entity[i].facing!=3) + { + entity[i].delayct=0; + entity[i].animofs=0; + } + entity[i].x++; entity[i].facing=3; entity[i].moving=4; entity[i].ctr=15; + entity[i].tx++; movesuccess=1; entity[i].reset=0; +} + +void MoveLeft(int i) +{ + int tx, ty; + + tx=entity[i].tx-1; ty=entity[i].ty; + if (entity[i].obsmode1 && (ObstructionAt(tx,ty) || AEntityObsAt(tx,ty))) + { movesuccess=0; return; } + + if (entity[i].facing!=2) + { + entity[i].delayct=0; + entity[i].animofs=0; + } + entity[i].x--; entity[i].facing=2; entity[i].moving=3; entity[i].ctr=15; + entity[i].tx--; movesuccess=1; entity[i].reset=0; +} + +void MoveUp(int i) +{ + int tx, ty; + + tx=entity[i].tx; ty=entity[i].ty-1; + if (entity[i].obsmode1 && (ObstructionAt(tx,ty) || AEntityObsAt(tx,ty))) + { movesuccess=0; return; } + if (entity[i].facing!=1) + { + entity[i].delayct=0; + entity[i].animofs=0; + } + entity[i].y--; entity[i].facing=1; entity[i].moving=2; entity[i].ctr=15; + entity[i].ty--; movesuccess=1; entity[i].reset=0; +} + +void MoveDown(int i) +{ + int tx, ty; + + tx=entity[i].tx; ty=entity[i].ty+1; + if (entity[i].obsmode1 && (ObstructionAt(tx,ty) || AEntityObsAt(tx,ty))) + { movesuccess=0; return; } + if (entity[i].facing!=0) + { + entity[i].delayct=0; + entity[i].animofs=0; + } + entity[i].y++; entity[i].facing=0; entity[i].moving=1; entity[i].ctr=15; + entity[i].ty++; movesuccess=1; entity[i].reset=0; +} + +void Wander1(int i) +{ + if (!entity[i].data1) + { + entity[i].data2=rnd(0,3); + entity[i].data1=entity[i].step+1; + } + if (entity[i].data1==1) + { + entity[i].delayctr++; + if (entity[i].delayctr>=entity[i].delay) + entity[i].data1=0; + return; + } + if (entity[i].data1>1) + { + switch(entity[i].data2) + { + case 0: MoveUp(i); break; + case 1: MoveDown(i); break; + case 2: MoveLeft(i); break; + case 3: MoveRight(i); break; + } + entity[i].data1--; + if (entity[i].data1==1) + { + entity[i].delayctr=0; + entity[i].animofs=0; + entity[i].delayct=0; + } + } +} + +void Wander2(int i) +{ + if (!entity[i].data1) + { + entity[i].data3=rnd(0,3); + entity[i].data1=entity[i].step+1; + } + if (entity[i].data1==1) + { + entity[i].delayctr++; + if (entity[i].delayctr>=entity[i].delay) + entity[i].data1=0; + return; + } + if (entity[i].data1>1) + { + switch(entity[i].data3) + { + case 0: if (Zone(entity[i].tx,entity[i].ty-1)==entity[i].data2) MoveUp(i); break; + case 1: if (Zone(entity[i].tx,entity[i].ty+1)==entity[i].data2) MoveDown(i); break; + case 2: if (Zone(entity[i].tx-1,entity[i].ty)==entity[i].data2) MoveLeft(i); break; + case 3: if (Zone(entity[i].tx+1,entity[i].ty)==entity[i].data2) MoveRight(i); break; + } + entity[i].data1--; + if (entity[i].data1==1) entity[i].delayctr=0; + } +} + +void Wander3(int i) +{ + if (!entity[i].data1) + { + entity[i].data2=rnd(0,3); + entity[i].data1=entity[i].step+1; + } + if (entity[i].data1==1) + { + entity[i].delayctr++; + if (entity[i].delayctr>=entity[i].delay) + entity[i].data1=0; + return; + } + if (entity[i].data1>1) + { + switch(entity[i].data2) + { + case 0: if (entity[i].ty>entity[i].data3) MoveUp(i); break; + case 1: if (entity[i].tyentity[i].data2) MoveLeft(i); break; + case 3: if (entity[i].tx=48 && *entity[i].scriptofs<=57) + { + token[j]=*entity[i].scriptofs; + entity[i].scriptofs++; + j++; + } + token[j]=0; + entity[i].data1=atoi(token); +} + +void GetNextCommandMS(int i) +{ unsigned char s; + + Whitespace(i); + s=*entity[i].scriptofs; + entity[i].scriptofs++; + switch (s) + { + case 'U': entity[i].mode=1; GetArgMS(i); break; + case 'D': entity[i].mode=2; GetArgMS(i); break; + case 'L': entity[i].mode=3; GetArgMS(i); break; + case 'R': entity[i].mode=4; GetArgMS(i); break; + case 'S': entity[i].mode=5; GetArgMS(i); break; + case 'W': entity[i].mode=6; GetArgMS(i); entity[i].animofs=0; + entity[i].delayct=0; break; + case 0: switch (entity[i].facing) + { + case 0: entity[i].animofs=0; entity[i].frame=chr[entity[i].chrindex].didle; break; + case 1: entity[i].animofs=0; entity[i].frame=chr[entity[i].chrindex].uidle; break; + case 2: entity[i].animofs=0; entity[i].frame=chr[entity[i].chrindex].lidle; break; + case 3: entity[i].animofs=0; entity[i].frame=chr[entity[i].chrindex].ridle; break; + } + entity[i].movecode=0; entity[i].mode=7; entity[i].data1=0; + entity[i].scriptofs=0; entity[i].delayct=0; break; + case 'C': entity[i].mode=8; GetArgMS(i); break; + case 'B': entity[i].mode=9; break; + case 'X': entity[i].mode=10; GetArgMS(i); break; + case 'Y': entity[i].mode=11; GetArgMS(i); break; + case 'F': entity[i].mode=12; GetArgMS(i); break; + case 'Z': entity[i].mode=13; GetArgMS(i); break; + default: err("Invalid entity movement script."); + } +} + +void MoveScript(int i) +{ + if (!entity[i].scriptofs) entity[i].scriptofs=(char *) (int) ms+(int) msbuf[entity[i].movescript]; + if (!entity[i].mode) GetNextCommandMS(i); + + switch(entity[i].mode) + { + case 1: MoveUp(i); if (movesuccess) entity[i].data1--; break; + case 2: MoveDown(i); if (movesuccess) entity[i].data1--; break; + case 3: MoveLeft(i); if (movesuccess) entity[i].data1--; break; + case 4: MoveRight(i); if (movesuccess) entity[i].data1--; break; + case 5: entity[i].speed=entity[i].data1; entity[i].data1=0; break; + case 6: entity[i].data1--; break; + case 7: return; + case 8: ExecuteEvent(entity[i].data1); entity[i].data1=0; break; + case 9: entity[i].scriptofs=(char *) (int) ms+(int) msbuf[entity[i].movescript]; + entity[i].data1=0; break; + case 10: if (entity[i].txentity[i].data1) MoveLeft(i); + if (entity[i].tx==entity[i].data1) entity[i].data1=0; break; + break; + case 11: if (entity[i].tyentity[i].data1) MoveUp(i); + if (entity[i].ty==entity[i].data1) entity[i].data1=0; break; + break; + case 12: entity[i].facing=entity[i].data1; + entity[i].data1=0; + //--- zero 5.6.99 + switch(entity[i].facing) + { + case 0: entity[i].frame=chr[entity[i].chrindex].didle; break; + case 1: entity[i].frame=chr[entity[i].chrindex].uidle; break; + case 2: entity[i].frame=chr[entity[i].chrindex].lidle; break; + case 3: entity[i].frame=chr[entity[i].chrindex].ridle; break; + } + //--- + break; + case 13: entity[i].specframe=entity[i].data1; + entity[i].data1=0; break; + } + if (!entity[i].data1) entity[i].mode=0; +} + +void TestActive(int i) +{ + int dx, dy; + + dx=abs(entity[i].x - player->x); + dy=abs(entity[i].y - player->y); + if ((dx<=16 && dy<=3) || (dx<=3 && dy<=16)) + { + if (!entity[i].expand4 && !invc) + { + entity[i].expand4=1; + ExecuteEvent(entity[i].actscript); + } + } + else + entity[i].expand4=0; +} + +void ProcessEntity1(int i) +{ + entity[i].speedct=0; + if (entity[i].actm) TestActive(i); + + if (!entity[i].moving) + { + switch(entity[i].movecode) + { + case 0: return; + case 1: Wander1(i); break; + case 2: Wander2(i); break; + case 3: Wander3(i); break; + case 4: MoveScript(i); break; + default: err("unknown entity movement pattern."); + } + if (!entity[i].reset) return; + } + + if (entity[i].reset) + { + entity[i].animofs=0; + entity[i].delayct=0; + entity[i].reset=0; + } + + if (entity[i].moving) + { + if (entity[i].moving==1) + { entity[i].y++; entity[i].ctr--; AnimateEntity(&entity[i]); } + if (entity[i].moving==2) + { entity[i].y--; entity[i].ctr--; AnimateEntity(&entity[i]); } + if (entity[i].moving==4) + { entity[i].x++; entity[i].ctr--; AnimateEntity(&entity[i]); } + if (entity[i].moving==3) + { entity[i].x--; entity[i].ctr--; AnimateEntity(&entity[i]); } + if (!entity[i].ctr) { entity[i].reset=1; entity[i].moving=0; } + } +} + +void ProcessEntity(int i) +{ int j; + + if (player==&entity[i]) return; + if (entity[i].speed<4) + { + switch (entity[i].speed) + { + case 1: if (entity[i].speedct<3) { entity[i].speedct++; return; } + case 2: if (entity[i].speedct<2) { entity[i].speedct++; return; } + case 3: if (entity[i].speedct<1) { entity[i].speedct++; return; } + } + } + if (entity[i].speed<5) + { + ProcessEntity1(i); + entity[i].speedct=0; + } + switch (entity[i].speed) + { + case 5: for (j=0; j<2; j++) { ProcessEntity1(i); } return; + case 6: for (j=0; j<3; j++) { ProcessEntity1(i); } return; + case 7: for (j=0; j<4; j++) { ProcessEntity1(i); } return; + } +} + +void ProcessEntities() +{ + int i; + + SiftEntities(); + for (i=0; i +#include +#include +#include "verge.h" + +// ================================= Data ==================================== + +#ifndef __WATCOMC__ +#define INT_MAX 0xFFFFFFFF +#define INT_MIN 0 +#endif + +#ifndef MIN +#define MIN(x,y) (((x) < (y)) ? (x) : (y)) +#define MAX(x,y) (((x) > (y)) ? (x) : (y)) +#define MID(x,y,z) MAX((x), MIN((y), (z))) +#endif + +#ifndef ABS +#define ABS(x) (((x) >= 0) ? (x) : (-(x))) +#endif + +#ifndef SGN +#define SGN(x) (((x) >= 0) ? 1 : -1) +#endif + +#define FLI_MAGIC 0xAF11 // file header magic number +#define FLC_MAGIC 0xAF12 // file magic number (Pro) +#define FLI_FRAME_MAGIC 0xF1FA // frame header magic number +#define FLI_FRAME_PREFIX 0xF100 // FLC's prefix info +#define FLI_FRAME_USELESS 0x00A1 // FLC's garbage frame + +typedef struct +{ + int w,h; + byte *data; +} BITMAP; + +#define FLI_OK 0 /* FLI player return values */ +#define FLI_EOF -1 +#define FLI_ERROR -2 +#define FLI_NOT_OPEN -3 + +#ifdef __WATCOMC__ +#define PACKED +#pragma pack(1); +#endif + +#ifdef __DJGPP__ +#define PACKED __attribute__ ((packed)) +#endif + +typedef struct +{ + long size PACKED; + word type PACKED; + word frame_count PACKED; + word width PACKED; + word height PACKED; + word bpp PACKED; + word flags PACKED; + word speed PACKED; + long next_head PACKED; + long frames_in_table PACKED; + char reserved[102] PACKED; +} FLI_HEADER; + +typedef struct +{ + quad size PACKED; + word type PACKED; + word chunks PACKED; + char pad[8] PACKED; +} FLI_FRAME; + +typedef struct +{ + quad size PACKED; + word type PACKED; +} FLI_CHUNK; + +#ifdef __WATCOMC__ +#pragma pack(); +#endif + +static int fli_status = FLI_NOT_OPEN; // current state of the FLI player + +int fli_bitmap_width = 0; +int fli_bitmap_height = 0; +byte *fli_bitmap_data = NULL; // current frame of the FLI +byte fli_palette[768]; // current palette the FLI is using + +int fli_bmp_dirty_from = INT_MAX; // what part of fli_bitmap is dirty +int fli_bmp_dirty_to = INT_MIN; +int fli_pal_dirty_from = INT_MAX; // what part of fli_palette is dirty +int fli_pal_dirty_to = INT_MIN; + +int fli_frame = 0; // current frame number in the FLI +long speed; + +static int fli_file = 0; // the file we are reading + +static byte *fli_mem_data = NULL; // the memory FLI we are playing +static int fli_mem_pos = 0; // position in the memory FLI + +static FLI_HEADER fli_header; // header structure +static FLI_FRAME frame_header; // frame header structure + +// a block of temporary working memory +byte *_scratch_mem = NULL; +int _scratch_mem_size = 0; + +// ================================= Code ==================================== + +void reset_fli_variables(void); +void close_fli(void); +int next_fli_frame(int); +int open_fli(char *); +int open_memory_fli(byte *); + +void _grow_scratch_mem(int size) +{ + if (size > _scratch_mem_size) { + size = (size+1023) & 0xFFFFFC00; + _scratch_mem = realloc(_scratch_mem, size); + _scratch_mem_size = size; + } +} + +void vsync() +{ + while (!(inp(986) & 8)); +} + +void set_palette_range(byte *pal, int from, int to, int sync) +{ + int i; + + // swap? + if (to=256) to=255; + + if (sync) vsync(); + + outp(968, from); + for (i=from; i<=to; i++) + { + outp(969, pal[(i*3)+0]); + outp(969, pal[(i*3)+1]); + outp(969, pal[(i*3)+2]); + } +} + +static byte *fli_read(byte *buf, int size) +{ + int result; + + if (fli_mem_data) + { + if (buf) + memcpy(buf, fli_mem_data+fli_mem_pos, size); + else + buf = fli_mem_data+fli_mem_pos; + + fli_mem_pos += size; + } + else + { + if (!buf) + { + _grow_scratch_mem(size); + buf = _scratch_mem; + } + + result = read(fli_file, buf, size); + if (result != size) + return NULL; + } + return buf; +} + +static void fli_seek(int offset, int mode) +{ + if (fli_mem_data) + { + if (mode == SEEK_CUR) + fli_mem_pos += offset; + else + fli_mem_pos = offset; + } + else + lseek(fli_file, offset, mode); +} + +// helpers for reading FLI chunk data +#define READ_BYTE() ((sz-- > 0) ? *(((byte *)p)++) : 0) +#define READ_CHAR() ((sz-- > 0) ? *(((signed char *)p)++) : 0) +#define READ_SHORT() (((sz-=2) > 0) ? *(((signed short *)p)++) : 0) + +#define READ_BLOCK(pos, size) \ + { \ + if (sz >= (size)) \ + { \ + memcpy(pos, p, size); \ + p += (size); \ + sz -= (size); \ + } \ + else \ + { \ + char *_p = (char *)(pos); \ + int _c; \ + \ + for (_c=0; _c < (size); _c++) \ + *(_p++) = READ_BYTE(); \ + } \ + } + +#define READ_RLE_BYTE(pos, size) \ + { \ + memset(pos, READ_BYTE(), size); \ + } + +#define READ_RLE_WORD(pos, size) \ + { \ + short *_p = (short *)(pos); \ + short _v = READ_SHORT(); \ + int _c; \ + \ + for (_c=0; _c < (size); _c++) \ + *(_p++) = _v; \ + } + +static void do_fli_256_color(byte *p, int sz) +{ + int packets; + int c, c2; + int offset; + int length; + + offset = 0; + packets = READ_SHORT(); + for (c=0; c 0) + { + packets = READ_SHORT(); + + while (packets < 0) + { + if (packets & 0x4000) + y -= packets; + else + fli_bitmap_data[(y*fli_bitmap_width)+fli_bitmap_width-1]=packets&0xff; + //fli_bitmap->line[y][fli_bitmap->w-1] = packets & 0xFF; + + packets = READ_SHORT(); + } + x=0; + while (packets-- > 0) + { + // skip bytes + x += READ_BYTE(); + + size = READ_CHAR(); + + // copy size words + if (size > 0) + { + READ_BLOCK(fli_bitmap_data+(y*fli_bitmap_width)+x, size*2); + //READ_BLOCK(fli_bitmap->line[y]+x, size*2); + x += size*2; + } + // repeat word -size times + else if (size < 0) + { + READ_RLE_WORD(fli_bitmap_data+(y*fli_bitmap_width)+x, -size); + //READ_RLE_WORD(fli_bitmap->line[y]+x, -size); + x -= size*2; + } + } + fli_bmp_dirty_from = MIN(fli_bmp_dirty_from, y); + fli_bmp_dirty_to = MAX(fli_bmp_dirty_to, y); + y++; + } +} + +static void do_fli_color(byte *p, int sz) +{ + int packets; + int c, c2; + int offset; + int length; + + offset = 0; + packets = READ_SHORT(); + + for (c=0; c 0) + { + packets = READ_BYTE(); + x = 0; + while (packets-- > 0) + { + x += READ_BYTE(); + size = READ_CHAR(); + + // copy size bytes + if (size > 0) + { + READ_BLOCK(fli_bitmap_data+(y*fli_bitmap_width)+x, size); + //READ_BLOCK(fli_bitmap->line[y]+x, size); + x += size; + } + else if (size < 0) + { + READ_RLE_BYTE(fli_bitmap_data+(y*fli_bitmap_width)+x, -size); + //READ_RLE_BYTE(fli_bitmap->line[y]+x, -size); + x -= size; + } + } + y++; + } +} + +static void do_fli_black(byte *p, int sz) +{ + memset(fli_bitmap_data, 0, fli_bitmap_width*fli_bitmap_height); + //clear(fli_bitmap); + + fli_bmp_dirty_from = 0; + fli_bmp_dirty_to = fli_bitmap_height-1; +} + +static void do_fli_brun(byte *p, int sz) +{ + int packets; + int size; + int x, y; + + // for each line... + for (y=0; y 0) + { + size = READ_CHAR(); + if (size < 0) + { + READ_BLOCK(fli_bitmap_data+(y*fli_bitmap_width)+x, -size); + //READ_BLOCK(fli_bitmap->line[y]+x, -size); + x -= size; + } + // repeat byte size times + else if (size > 0) + { + READ_RLE_BYTE(fli_bitmap_data+(y*fli_bitmap_width)+x, size); + //READ_RLE_BYTE(fli_bitmap->line[y]+x, size); + x += size; + } + } + } + fli_bmp_dirty_from = 0; + fli_bmp_dirty_to = fli_bitmap_height-1; +} + +static void do_fli_copy(byte *p, int sz) +{ + READ_BLOCK(fli_bitmap_data, fli_bitmap_width * fli_bitmap_height); + //READ_BLOCK(fli_bitmap->dat, fli_bitmap->w * fli_bitmap->h); + + fli_bmp_dirty_from = 0; + fli_bmp_dirty_to = fli_bitmap_height-1; +} + +static void read_frame() +{ + byte *p; + FLI_CHUNK *chunk; + int c, sz; + + if (fli_status != FLI_OK) + return; + +get_another_frame: + if (!fli_read((byte *)&frame_header, sizeof(FLI_FRAME))) + { + fli_status = FLI_ERROR; + return; + } + + if ((frame_header.type == FLI_FRAME_PREFIX) + || (frame_header.type == FLI_FRAME_USELESS)) + { + fli_seek(frame_header.size-sizeof(FLI_FRAME), SEEK_CUR); + fli_frame++; + + goto get_another_frame; + } + + if (frame_header.type != FLI_FRAME_MAGIC) + { + fli_status = FLI_ERROR; + return; + } + + if (frame_header.size == sizeof(FLI_FRAME)) + { + fli_frame++; + return; + } + p = fli_read(NULL, frame_header.size-sizeof(FLI_FRAME)); + if (!p) + { + fli_status = FLI_ERROR; + return; + } + for (c=0; csize - sizeof(FLI_CHUNK); + p += sizeof(FLI_CHUNK); + switch (chunk->type) + { + case 4: do_fli_256_color(p, sz); break; + case 7: do_fli_delta(p, sz); break; + case 11: do_fli_color(p, sz); break; + case 12: do_fli_lc(p, sz); break; + case 13: do_fli_black(p, sz); break; + case 15: do_fli_brun(p, sz); break; + case 16: do_fli_copy(p, sz); break; + default: err("Corrupt FLI chunk."); + } + p = ((byte *)chunk) + chunk->size; + } + fli_frame++; +} + +static int do_play_fli(BITMAP *bmp, int loop, int (*callback)()) +{ + int ret; + + ret = next_fli_frame(loop); + while (ret == FLI_OK) + { + if (fli_pal_dirty_from <= fli_pal_dirty_to) + set_palette_range(fli_palette, fli_pal_dirty_from, fli_pal_dirty_to, 1); + + if (fli_bmp_dirty_from <= fli_bmp_dirty_to) + { + int i,to=fli_bmp_dirty_to; + if (to>=bmp->h) to=bmp->h-1; + +// vsync(); + for (i=fli_bmp_dirty_from; i<=to; i++) + { + memcpy(bmp->data+(i*bmp->w), fli_bitmap_data+(i*fli_bitmap_width), + (fli_bitmap_width>bmp->w) ? bmp->w : fli_bitmap_width); + } + + //blit( + // fli_bitmap, bmp, 0, fli_bmp_dirty_from, 0, fli_bmp_dirty_from, + // fli_bitmap->w, 1+fli_bmp_dirty_to-fli_bmp_dirty_from); + } + + reset_fli_variables(); + + if (callback) + { + ret = (*callback)(); + if (ret != FLI_OK) + break; + } + ret = next_fli_frame(loop); + while (timer_count= fli_header.frame_count) + { + if (loop) + { + fli_seek(sizeof(FLI_HEADER), SEEK_SET); + fli_frame = 0; + } + else + { + fli_status = FLI_EOF; + return fli_status; + } + } + read_frame(); + return fli_status; +} + +void reset_fli_variables() +{ + fli_bmp_dirty_from = INT_MAX; + fli_bmp_dirty_to = INT_MIN; + fli_pal_dirty_from = INT_MAX; + fli_pal_dirty_to = INT_MIN; +} diff --git a/16/v2/source/ENGINE/FLI.H b/16/v2/source/ENGINE/FLI.H new file mode 100644 index 00000000..b18995b4 --- /dev/null +++ b/16/v2/source/ENGINE/FLI.H @@ -0,0 +1,28 @@ +/* +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. +*/ + +#ifndef FLI_H +#define FLI_H + +typedef struct +{ + int w,h; + byte *data; +} BITMAP; + +int play_fli(char *filename, BITMAP *bmp, int loop, int (*callback)()); +int play_memory_fli(byte *fli_data, BITMAP *bmp, int loop, int (*callback)()); +#endif diff --git a/16/v2/source/ENGINE/FONT.C b/16/v2/source/ENGINE/FONT.C new file mode 100644 index 00000000..d9621ae4 --- /dev/null +++ b/16/v2/source/ENGINE/FONT.C @@ -0,0 +1,103 @@ +/* +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 FONT_H +#include "verge.h" + +// ================================= Data ==================================== + +struct fontstruct +{ + byte width, height; // Font character dimensions + byte *data; // Font bitmap data +}; + +struct fontstruct font[10]; // Font stuff; +int numfonts=0; // number of loaded fonts. +int curx, cury; // x/y font location +char tc=0; // text color + +// ================================= Code ==================================== + +int LoadFont(char *fname) +{ VFILE *f=0; + struct fontstruct *cfont=0; + int z=0; + + if (!(f=vopen(fname))) + err("Could not open font %s. \n",fname); + + // alias current font struct + cfont=font+numfonts; + + if (vgetc(f) != 1) + err("Font file incorrect version number. \n"); + + // font dims + cfont->width=vgetw(f); + cfont->height=vgetw(f); + + // get num of sub-set; calc total bytes as well + z=vgetw(f) * 96 * cfont->width*cfont->height; + + // nab room for font and read it in + cfont->data=(byte *)valloc(z, "LoadFont:cfont->data", OID_IMAGE); + vread(cfont->data, z, f); + + vclose(f); + + return numfonts++; +} + +void TextColor(int c) +{ + tc=c; +} + +void GotoXY(int x, int y) +{ + curx=x; + cury=y; +} + +static void pchar(int fnt, int x, int y, unsigned char c) +{ + int w; + if (c>31 && c<127) + { + w=font[fnt].width,h=font[fnt].height; + TCopySpriteClip(x,y, w,h, font[fnt].data+((c-32)*w*h)+((tc&3)*96*w*h)); + } +} + +void printstring(int fnt, char *str) +{ + if (fnt<0 || fnt >= numfonts) + return; + for (; *str; str++) + { + unsigned char c=*str; + switch (c) + { + case 126: tc=0; str++; continue; + case 128: tc=1; str++; continue; + case 129: tc=2; str++; continue; + case 130: tc=3; str++; continue; + } + pchar(fnt,curx,cury,c); + curx+=font[fnt].width; + } +} \ No newline at end of file diff --git a/16/v2/source/ENGINE/FONT.H b/16/v2/source/ENGINE/FONT.H new file mode 100644 index 00000000..f8300c2d --- /dev/null +++ b/16/v2/source/ENGINE/FONT.H @@ -0,0 +1,37 @@ +/* +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. +*/ + +#ifndef FONT_H +#define FONT_H + +struct fontstruct +{ + byte width, height; // Font character dimensions + byte *data; // Font bitmap data +}; + +extern struct fontstruct font[10]; // Font stuff; +extern int numfonts; // number of loaded fonts. +extern int curx, cury; + +extern int LoadFont(char *fname); +extern void TextColor(int c); +extern void NumColor(int c); +extern void GotoXY(int x, int y); +extern void printstring(int fnt, char *str); +extern void dec_to_asciiz(int num, char *buf); + +#endif // FONT_H diff --git a/16/v2/source/ENGINE/IMAGE.C b/16/v2/source/ENGINE/IMAGE.C new file mode 100644 index 00000000..25c57ec4 --- /dev/null +++ b/16/v2/source/ENGINE/IMAGE.C @@ -0,0 +1,709 @@ +/* +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. +*/ + +// Mega kudos to aen for porting that GIF code. + +#include +#include "verge.h" + +// ========================= PCX Imaging routines ============================ + +char manufacturer; // pcx header +char version; +char encoding; +char bits_per_pixel; +word xmin, ymin; +word xmax, ymax; +word hres, vres; +char palette[48]; +char reserved; +char color_planes; +word bytes_per_line; +word palette_type; +char filler[58]; + +word width, depth; +word bytes; +byte c, run, ss=0; +quad vidoffset, n=0; +VFILE *pcxf; +char *cb,*src; +int i; + +// ================================= Code ==================================== + +void ReadPCXLine(byte *dest) +{ n=0; + while (n=0xc0) //(c & 0xc0)==0xc0) + { + run=c & 0x3f; + c=vgetc(pcxf); //*src++; + } + while (run--) + dest[vidoffset+n++]=c; + } + vseek(pcxf, bytes_per_line-width, 1); +} + +void LoadPCXHeader(char *fname) +{ + if (!(pcxf=vopen(fname))) err("Could not open PCX file %s.",fname); + vread(&manufacturer,1,pcxf); + vread(&version,1,pcxf); + vread(&encoding,1,pcxf); + vread(&bits_per_pixel,1,pcxf); + vread(&xmin,2,pcxf); + vread(&ymin,2,pcxf); + vread(&xmax,2,pcxf); + vread(&ymax,2,pcxf); + vread(&hres,2,pcxf); + vread(&vres,2,pcxf); + vread(&palette,48,pcxf); + vread(&reserved,1,pcxf); + vread(&color_planes,1,pcxf); + vread(&bytes_per_line,2,pcxf); + vread(&palette_type,2,pcxf); + vread(&filler,58,pcxf); + //vseek(pcxf,filesize(pcxf)-768,SEEK_SET); + //vread(&pal,768,pcxf); + vseek(pcxf,128L,SEEK_SET); + width=xmax-xmin+1; + depth=ymax-ymin+1; + + bytes=bytes_per_line; + + //for (i=0; i<768; i++) + // pal[i]=pal[i] >> 2; +// SetPalette((byte *) &pal); + + //i=filesize(pcxf); + //cb=(char *) valloc(i-896, "LoadPCXHeader:cb", OID_TEMP); + //vread(cb, i-(128+768+1), pcxf); +} + +void LoadPCXHeaderNP(char *fname) +{ + if (!(pcxf=vopen(fname))) err("Could not open PCX file %s.",fname); + vread(&manufacturer,1,pcxf); + vread(&version,1,pcxf); + vread(&encoding,1,pcxf); + vread(&bits_per_pixel,1,pcxf); + vread(&xmin,2,pcxf); + vread(&ymin,2,pcxf); + vread(&xmax,2,pcxf); + vread(&ymax,2,pcxf); + vread(&hres,2,pcxf); + vread(&vres,2,pcxf); + vread(&palette,48,pcxf); + vread(&reserved,1,pcxf); + vread(&color_planes,1,pcxf); + vread(&bytes_per_line,2,pcxf); + vread(&palette_type,2,pcxf); + vread(&filler,58,pcxf); + vseek(pcxf,filesize(pcxf)-768,SEEK_SET); + vread(&pal,768,pcxf); + vseek(pcxf,128L,SEEK_SET); + width=xmax-xmin+1; + depth=ymax-ymin+1; + bytes=bytes_per_line; + + i=filesize(pcxf); + cb=(char *) valloc(i-896, "LoadPCXHeaderNP:cb", OID_TEMP); + vread(cb, i-896, pcxf); +} + +void LoadPCX(char *fname, byte *dest) +{ + LoadPCXHeader(fname); + + src=cb; + for (i=0; i>=2; + } + //vfree(cb); + vclose(pcxf); + return buf; +} + +// ========================= BMP Imaging routines ============================ + +struct RGBQUAD +{ + unsigned char r,g,b,a; +}; + +struct RGBQUAD bmppalette[256]; + +// ================================= Code ==================================== + +byte *LoadBMPBuf(char *fname) +{ byte pad[4], *buf; + VFILE* bmpfile; + int bwidth, bheight, y; + + if (!(bmpfile=vopen(fname))) err("Could not open BMP file %s.",fname); + vseek(bmpfile, 18, SEEK_SET); + vread(&bwidth, 4, bmpfile); width=bwidth; + vread(&bheight, 4, bmpfile); depth=bheight; + vseek(bmpfile, 54, SEEK_SET); + vread(bmppalette, 1024, bmpfile); + buf=(byte*) valloc(bwidth*bheight, "LoadBMPBuf:buf", OID_IMAGE); + + for (y=bheight-1; y>=0; y--) + { + vread((char *)((int)buf+y*width),width,bmpfile); + vread(pad,width%4,bmpfile); + } + for (y=0; y<256; y++) + { + pal[y*3]=bmppalette[y].b >> 2; + pal[y*3+1]=bmppalette[y].g >> 2; + pal[y*3+2]=bmppalette[y].r >> 2; + } + SetPalette((byte*)pal); + vclose(bmpfile); + return buf; +} + +// ========================== GIF Imaging routines =========================== + +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned long u32; + +typedef signed char s8; +typedef signed short s16; +typedef signed long s32; + +typedef struct +{ + u8 bits; + u8 background; + u8 * palette; + u8 * image; + s16 wide, deep; +} gif_image_info; + +typedef struct +{ + char sig[7]; + s16 screenwide, screendeep; + u8 hflags; + u8 background; + u8 aspect; +} gif_header; + +typedef struct +{ + s16 top, left; + s16 wide, deep; + u8 iflags; +} gif_image_descriptor; + +int NO_CODE = -1,// TRUE = 1, + ERROR_EOF = 0, ERROR_BAD_CODE = 1, + ERROR_BAD_HEADER = 2, ERROR_BAD_STARTCODE = 3, + ERROR_BAD_FIRST_CODE = 4, ERROR_BAD_FILE = 5, + ERROR_NO_IMAGE = 6; + +char* gif_error_messages[] = +{ + "Unexpected end of file\n", + "Bad code\n", + "Bad gif header\n", + "Bad symbol size\n", + "Bad first code\n", + "Error opening file\n", + "This file doesn't contain an image\n" +}; + +// read colour palette, vga palette values are 6 bit numbers +// while gif allows for 8 bit so shift right to get correct colours + +u8* gif_read_palette(FILE* fp, s32 bytes) +{ + s32 i = 0; + u8* block = 0L; + s32 components = (bytes / 3) * 3; + + block = (unsigned char *)valloc(components, "gif_read_palette:block", OID_IMAGE); + + for (i = 0; i < components; ++i) + block[i] = fgetc(fp) >> 2; + + return block; +} + +// read a block of bytes into memory +s32 block_mem_read(FILE* fp, u8* buffer, s32 bytes) +{ + s32 status = 0; + + status = fread(buffer, 1, bytes, fp); + if (status != bytes) return EOF; + + return TRUE; +} + +// read a unsigned 16 bit value from file, low byte first; note that this +// is reverse endian-ness (ie. fwrite(&s,1,2,fp); writes high byte first). + +s16 read_word_lbf(FILE* fp) +{ + s32 a, b; + + a = fgetc(fp); + b = fgetc(fp); + + return (b << 8) | a; +} + +// read the GIF file header structure into a sequence +gif_header* get_gif_header(FILE* fp) +{ + gif_header* h = 0L; + + h = (gif_header *)valloc(sizeof(gif_header), "get_gif_header:h", OID_IMAGE); + + fread(h->sig, 1, 6, fp); + h->sig[6] = 0; + + if (strncmp(h->sig, "GIF", 3) != 0) + return NULL; + + h->screenwide = read_word_lbf(fp); width=h->screenwide; + h->screendeep = read_word_lbf(fp); depth=h->screendeep; + h->hflags = fgetc(fp); + h->background = fgetc(fp); + h->aspect = fgetc(fp); + + return h; +} + +// gif file can contain more than one image, +// each image is preceeded by a header structure +gif_image_descriptor* get_image_descriptor(FILE* fp) +{ + gif_image_descriptor* id = 0L; + + id = (gif_image_descriptor *)valloc(sizeof(gif_image_descriptor), "get_image_descriptor:id", OID_IMAGE); + + id->left = read_word_lbf(fp); + id->top = read_word_lbf(fp); + id->wide = read_word_lbf(fp); + id->deep = read_word_lbf(fp); + id->iflags = fgetc(fp); + + return id; +} + +static u16 word_mask_table[] = +{ + 0x0000, 0x0001, 0x0003, 0x0007, + 0x000F, 0x001F, 0x003F, 0x007F, + 0x00FF, 0x01FF, 0x03FF, 0x07FF, + 0x0FFF, 0x1FFF, 0x3FFF, 0x7FFF +}; + +static u8 inc_table[] = { 8,8,4,2,0 }; +static u8 start_table[] = { 0,4,2,1,0 }; + +// enables me to use indices as per EUPHORiA (ie. converts to C's 0 base) +#define eui(i) ((i)-1) + +// unpack an LZW compressed image +// returns a sequence containing screen display lines of the image +u8* unpack_image(FILE* fp, s32 start_code_size, u32 width, u32 depth, u32 flags) +{ + u8* buffer; + u8* line_buffer; + + u16 first_code_stack[4096]; + u16 last_code_stack[4096]; + u16 code_stack[4096]; + + s32 bits_left; + s32 clear_code; + s32 code_size; + s32 code_size2; + s32 next_code; + s32 this_code; + s32 old_token; + s32 current_code; + s32 old_code; + s32 block_size=0; + s32 line; + s32 a_byte; + s32 pass; + s32 u; + + u8 b[256]; // read buffer; for block reads + u8* p; // current byte in read buffer + u8* q; // last byte in read buffer + 1 + + line_buffer = (u8 *)valloc(width, "unpack_image:line_buffer", OID_TEMP); + buffer = (u8 *)valloc(width * depth, "unpack_image:buffer", OID_IMAGE); + + a_byte = 0; + line = 0; + pass = 0; + bits_left = 8; + + if (start_code_size < 2 || start_code_size > 8) + err("\nERROR_BAD_STARTCODE"); // bad symbol size + + p = b; + q = b; + + clear_code = 1 << start_code_size; //pow(2, start_code_size); + next_code = clear_code + 2; + code_size = start_code_size + 1; + code_size2 = 1 << code_size; //pow(2, code_size); + old_code = NO_CODE; + old_token = NO_CODE; + + while (1) + { + if (bits_left == 8) + { + ++p; + if (p >= q) + { + block_size = fgetc(fp); + if (block_mem_read(fp, b, block_size) == EOF) + err("\nERROR_EOF"); + p = b; + q = b + block_size; + } + bits_left = 0; + } + + this_code = *p; + current_code = code_size + bits_left; + + if (current_code <= 8) + { + *p = *p >> code_size; + bits_left = current_code; + } + else + { + ++p; + if (p >= q) + { + block_size = fgetc(fp); + if (block_mem_read(fp, b, block_size) == EOF) + err("\nERROR_EOF"); + p = b; + q = b + block_size; + } + + this_code |= (*p << (8 - bits_left)); + + if (current_code <= 16) + { + bits_left = current_code - 8; + *p = *p >> bits_left; + } + else + { + if (++p >= q) + { + block_size = fgetc(fp); + if (block_mem_read(fp, b, block_size) == EOF) + err("\nERROR_EOF"); + p = b; + q = b + block_size; + } + + this_code |= (*p << (16 - bits_left)); + + bits_left = current_code - 16; + *p = *p >> bits_left; + } + } + + this_code &= word_mask_table[code_size]; + current_code = this_code; + + if (this_code == (clear_code+1) || block_size == 0) + break; + if (this_code > next_code) + err("\nERROR_BAD_CODE"); + + if (this_code == clear_code) + { + next_code = clear_code + 2; + code_size = start_code_size + 1; + code_size2 = 1 << code_size; //pow(2, code_size); + old_code = NO_CODE; + old_token = NO_CODE; + } + else + { + u = 1; + if (this_code == next_code) + { + if (old_code == NO_CODE) + err("\nERROR_BAD_FIRST_CODE"); + + first_code_stack[eui(u)] = old_token; + u++; + this_code = old_code; + } + + while (this_code >= clear_code) + { + first_code_stack[eui(u)] = last_code_stack[eui(this_code)]; + u++; + this_code = code_stack[eui(this_code)]; + } + + old_token = this_code; + while (1) + { + line_buffer[a_byte] = this_code; + a_byte++; + if (a_byte >= width) + { + // full image line so add it into screen image + memcpy(buffer + (line * width), line_buffer, width); + + a_byte = 0; + if (flags & 0x40) + { + line += inc_table[pass]; + if (line >= depth) + { + pass++; + line = start_table[pass]; + } + } + else + { + line++; + } + } + + // no more bytes on stack + if (u == 1) break; + + u--; + this_code = first_code_stack[eui(u)]; + } + + if (next_code < 4096 && old_code != NO_CODE) + { + code_stack[eui(next_code)] = old_code; + last_code_stack[eui(next_code)] = old_token; + next_code++; + if (next_code >= code_size2 && code_size < 12) + { + code_size++; + code_size2 = 1 << code_size; //pow(2, code_size); + } + } + + old_code = current_code; + } + } + + // completed reading the image so return it + free(b); + return buffer; +} + +// skip the extension blocks as we are only after the image +void skip_extension(FILE* fp) +{ + s32 n; + char temp[256]; + + n = fgetc(fp); // throwaway extension function code + n = fgetc(fp); // get length of block + + while (n > 0 && n != EOF) + { + // throwaway block + fread(temp, 1, n, fp); + + n = fgetc(fp); // get length of next block + } +} + +// unpack the GIF file +// returns ImageInfo sequence containing image and image data +gif_image_info* unpack_gif(char* filename) +{ + VFILE *f; + FILE* fp; + s32 c, b; + gif_header* h = 0L; + gif_image_info* ii = 0L; + gif_image_descriptor* id = 0L; + u8* local_palette = 0L; + + ii = (gif_image_info *)valloc(sizeof(gif_image_info), "unpack_gif:ii", OID_IMAGE); + + f = vopen(filename); + if (!f) err("Could not open GIF file %s.",filename); + fp = f->fp; + if (!fp) err("\nBad filename"); + + // file starts with the Logical Screen Descriptor structure + h = get_gif_header(fp); + + // Size of Global Color Table + ii->bits = (h->hflags & 7) + 1; + ii->background = h->background; + + // get Global colour palette if there is one + if (h->hflags & 0x80) // is flags bit 8 set? + { + c = 3 << ii->bits; // size of global colour map + ii->palette = gif_read_palette(fp, c); + +/* outp(968, 0); + // enforce global color map + for (s32 i=0; i < 768; ++i) + outp(969, ii->palette[i]); */ + memcpy(pal, ii->palette, 768); + } + + c = fgetc(fp); + + while (c == 0x2c || c == 0x21 || c == 0) + { + // image separator so unpack the image + if (c == 0x2c) + { + id = get_image_descriptor(fp); // get the Image Descriptor + // if there is a local Color Table then overwrite the global table + if (id->iflags & 0x80) + { + ii->bits = (id->iflags & 7) + 1; + b = 3 << ii->bits; + if (local_palette) + free(local_palette); + local_palette = gif_read_palette(fp, b); + } + + c = fgetc(fp); // get the LZW Minimum Code Size + ii->image = unpack_image(fp, c, id->wide, id->deep, id->iflags); + vclose(f); + + // error reading image + if (!ii->image) + err("\nerror reading image data"); + + ii->wide = id->wide; + ii->deep = id->deep; + + // return imagedata + return ii; + } + // extension introducer + else if (c == 0x21) + { + skip_extension(fp); // throw the extension away + } + + c = fgetc(fp); + } + + // no image? + return NULL; +} + +byte *LoadGIFBuf(char *fname) +{ + gif_image_info *ii=0; + byte *t; + + ii=unpack_gif(fname); + width=ii->wide; + depth=ii->deep; + t=ii->image; + free(ii); + return t; +} + +// ====================== Universal Imaging Interface ======================== + +byte imagetype; + +// ================================= Code ==================================== + +void DetermineFileType(char *fname) +{ + strlwr(fname); + if (!strcmp(fname+(strlen(fname)-3),"pcx")) imagetype=0; + if (!strcmp(fname+(strlen(fname)-3),"gif")) imagetype=1; + if (!strcmp(fname+(strlen(fname)-3),"bmp")) imagetype=2; +} + +void VLoadImage(char *fname, byte *dest) +{ + imagetype=255; + DetermineFileType(fname); + switch (imagetype) + { + case 0: LoadPCX(fname, dest); break; + case 1: err("VLoadImage() for GIF not supported; use VLoadImageBuf()"); break; + case 2: err("VLoadImage() for BMP not supported; use VLoadImageBuf()"); break; + default: err("%s: Unrecognized image type.",fname); + } +} + +byte *VLoadImageBuf(char *fname) +{ + imagetype=255; + DetermineFileType(fname); + switch (imagetype) + { + case 0: return LoadPCXBuf(fname); break; + case 1: return LoadGIFBuf(fname); break; + case 2: return LoadBMPBuf(fname); break; + default: err("%s: Unrecognized image type.",fname); + } + return 0; +} diff --git a/16/v2/source/ENGINE/IMAGE.H b/16/v2/source/ENGINE/IMAGE.H new file mode 100644 index 00000000..5b0ac2bc --- /dev/null +++ b/16/v2/source/ENGINE/IMAGE.H @@ -0,0 +1,25 @@ +/* +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. +*/ + +#ifndef IMAGE_H +#define IMAGE_H + +word width, depth; + +void VLoadImage(char *fname, byte *dest); +byte *VLoadImageBuf(char *fname); + +#endif diff --git a/16/v2/source/ENGINE/INTER.H b/16/v2/source/ENGINE/INTER.H new file mode 100644 index 00000000..93bc667c --- /dev/null +++ b/16/v2/source/ENGINE/INTER.H @@ -0,0 +1,41 @@ +/* +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. +*/ + +#if !defined(INTERINC) +#define INTERINC + +#ifdef __WATCOMC__ + #include + #define REGISTERS union REGS + #define SET_AX(r,v) (r).w.ax=(short)(v) + #define SET_BX(r,v) (r).w.bx=(short)(v) + #define SET_CX(r,v) (r).w.cx=(short)(v) + #define SET_DX(r,v) (r).w.dx=(short)(v) + #define INTERRUPT(i,r) int386((i),&(r),&(r)) +#elif defined(__DJGPP__) + #include + #define REGISTERS __dpmi_regs + #define SET_AX(r,v) (r).x.ax=(short)(v) + #define SET_BX(r,v) (r).x.bx=(short)(v) + #define SET_CX(r,v) (r).x.cx=(short)(v) + #define SET_DX(r,v) (r).x.dx=(short)(v) + #define INTERRUPT(i,r) __dpmi_int((i),&(r)) +// #define inp inportb + #define outp outportb + #define outpw outportw +#endif // watcom | djgpp + +#endif // INTERINC diff --git a/16/v2/source/ENGINE/KEYBOARD.H b/16/v2/source/ENGINE/KEYBOARD.H new file mode 100644 index 00000000..e39d3296 --- /dev/null +++ b/16/v2/source/ENGINE/KEYBOARD.H @@ -0,0 +1,115 @@ +/* +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. +*/ + +#ifndef KEYBOARD_H +#define KEYBOARD_H + +extern volatile byte key[128]; +extern volatile byte last_pressed; +extern int InitKeyboard(void); +extern void ShutdownKeyboard(void); +#ifdef DJGPP +extern void keyboard_chain(int toggle); +#endif + +/* Constants for keyboard scan-codes */ + +#define SCAN_ESC 0x01 +#define SCAN_1 0x02 +#define SCAN_2 0x03 +#define SCAN_3 0x04 +#define SCAN_4 0x05 +#define SCAN_5 0x06 +#define SCAN_6 0x07 +#define SCAN_7 0x08 +#define SCAN_8 0x09 +#define SCAN_9 0x0a +#define SCAN_0 0x0b +#define SCAN_MINUS 0x0c +#define SCAN_EQUALS 0x0d +#define SCAN_BACKSP 0x0e +#define SCAN_TAB 0x0f +#define SCAN_Q 0x10 +#define SCAN_W 0x11 +#define SCAN_E 0x12 +#define SCAN_R 0x13 +#define SCAN_T 0x14 +#define SCAN_Y 0x15 +#define SCAN_U 0x16 +#define SCAN_I 0x17 +#define SCAN_O 0x18 +#define SCAN_P 0x19 +#define SCAN_LANGLE 0x1a +#define SCAN_RANGLE 0x1b +#define SCAN_ENTER 0x1c +#define SCAN_CTRL 0x1d +#define SCAN_A 0x1e +#define SCAN_S 0x1f +#define SCAN_D 0x20 +#define SCAN_F 0x21 +#define SCAN_G 0x22 +#define SCAN_H 0x23 +#define SCAN_J 0x24 +#define SCAN_K 0x25 +#define SCAN_L 0x26 +#define SCAN_SCOLON 0x27 +#define SCAN_QUOTA 0x28 +#define SCAN_RQUOTA 0x29 +#define SCAN_LSHIFT 0x2a +#define SCAN_BSLASH 0x2b +#define SCAN_Z 0x2c +#define SCAN_X 0x2d +#define SCAN_C 0x2e +#define SCAN_V 0x2f +#define SCAN_B 0x30 +#define SCAN_N 0x31 +#define SCAN_M 0x32 +#define SCAN_COMA 0x33 +#define SCAN_DOT 0x34 +#define SCAN_SLASH 0x35 +#define SCAN_RSHIFT 0x36 +#define SCAN_GREY_STAR 0x37 +#define SCAN_ALT 0x38 +#define SCAN_SPACE 0x39 +#define SCAN_CAPS 0x3a +#define SCAN_F1 0x3b +#define SCAN_F2 0x3c +#define SCAN_F3 0x3d +#define SCAN_F4 0x3e +#define SCAN_F5 0x3f +#define SCAN_F6 0x40 +#define SCAN_F7 0x41 +#define SCAN_F8 0x42 +#define SCAN_F9 0x43 +#define SCAN_F10 0x44 +#define SCAN_NUMLOCK 0x45 +#define SCAN_SCRLOCK 0x46 +#define SCAN_HOME 0x47 +#define SCAN_UP 0x48 +#define SCAN_PGUP 0x49 +#define SCAN_GREY_MINUS 0x4a +#define SCAN_LEFT 0x4b +#define SCAN_PAD_5 0x4c +#define SCAN_RIGHT 0x4d +#define SCAN_GREY_PLUS 0x4e +#define SCAN_END 0x4f +#define SCAN_DOWN 0x50 +#define SCAN_PGDN 0x51 +#define SCAN_INSERT 0x52 +#define SCAN_DEL 0x53 +#define SCAN_F11 0x57 +#define SCAN_F12 0x58 +#endif diff --git a/16/v2/source/ENGINE/KEYBOARD.S b/16/v2/source/ENGINE/KEYBOARD.S new file mode 100644 index 00000000..a781cded --- /dev/null +++ b/16/v2/source/ENGINE/KEYBOARD.S @@ -0,0 +1,227 @@ +# +# 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. +# + + .file "keyboard.s" + + .extern ___djgpp_base_address + .extern ___djgpp_ds_alias + .extern ___djgpp_dos_sel + + # public functions and variables: + + .global _key + .global _InitKeyboard + .global _ShutdownKeyboard + .global _keyboard_chain + .global _last_pressed + + .text + + .align 4 + +locking_region_start: + +_key: .space 0x80, 0 +_last_pressed: .byte 0 +old_vector: +old_vector_ofs: .long 0 +old_vector_sel: .word 0 +chain_flag: .long 1 + + + .align 4 + +handler_procedure: + + # + # .. will be called every time a key is pressed/released + # + pushl %eax + pushl %edx + pushw %ds + # + # Load DS with our data selector + # + movw %cs:___djgpp_ds_alias, %ds + # + # Read the scancode from keyboard port and update key[] + # + inb $0x60, %al + movb %al, %dl + andl $0x7f, %edx + testb $0x80, %al + setz _key(%edx) + cmp $127, %al + ja nolastpressed + movb %edx, _last_pressed +nolastpressed: + + # + # Chain if flag is set, otherwise do what's necessary and return + # + cmpl $0, chain_flag + jne handler_chain + # + # Acknowledge keyboard and interrupt contollers + # + inb $0x61, %al + orb $0x80, %al + outb %al, $0x61 + andb $0x7f, %al + outb %al, $0x61 + movb $0x20, %al + outb %al, $0x20 + + popw %ds + popl %edx + popl %eax + sti + iret + + .align 4 + +handler_chain: popw %ds + popl %edx + popl %eax + ljmp %cs:(old_vector) + +locking_region_end: + + + .align 4 +_InitKeyboard: + + # + # int keyboard_init(void); + # + # Initializes the keyboard handler and hooks the keyboard interrupt. + # Returns -1 on failure, zero on success + # + pushl %esi + pushl %edi + pushl %ebx + # + # First, we need to lock the handler and memory it touches, so + # it doesn't get swapped out to disk. + # + leal locking_region_start, %ecx + leal locking_region_end, %edi + subl %ecx, %edi + addl ___djgpp_base_address, %ecx + shldl $16, %ecx, %ebx # ecx -> bx:cx + shldl $16, %edi, %esi # edi -> si:di + movw $0x0600, %ax # lock linear region + int $0x31 + jc init_error + # + # Now we need to save the old interrupt vector, so we can restore + # it later and also to know where to jump if chaining. + # + movw $0x0204, %ax # get pm int vector + movb $0x09, %bl + int $0x31 + movw %cx, old_vector_sel + movl %edx, old_vector_ofs + # + # Make sure we chain after initialization. + # + movl $1, chain_flag + # + # Set the interrupt vector to point to our handler. + # + movw %cs, %cx + leal handler_procedure, %edx + movb $0x09, %bl + movw $0x0205, %ax # set pm int vector + int $0x31 + #* + #* Actually we would have to unlock the locked region on failure + #* here. But since most programs would exit with an error message + #* in such case, there's no need to worry. + #* + +init_error: + + # + # This sets EAX to -1 if CF is set and to 0 atherwise + # + movl $0, %eax + sbbl $0, %eax + + popl %ebx + popl %edi + popl %esi + ret + + + .align 4 +_ShutdownKeyboard: + + # + # void keyboard_close(void); + # + # Shuts the keyboard handler down. + # + pushl %esi + pushl %edi + pushl %ebx + # + # Unlock the region we locked at initialization + # + leal locking_region_start, %ecx + leal locking_region_end, %edi + subl %ecx, %edi + addl ___djgpp_base_address, %ecx + shldl $16, %ecx, %ebx + shldl $16, %edi, %esi + movw $0x0601, %ax # unlock linear region + int $0x31 + # + # Restore the interrupt vector to its previous value + # + movw old_vector_sel, %cx + movl old_vector_ofs, %edx + movb $0x09, %bl + movw $0x0205, %ax # set pm int vector + int $0x31 + + popl %ebx + popl %edi + popl %esi + ret + # + # void keyboard_chain(int toggle); + # + .align 4 +_keyboard_chain: + cmpl $0, 4(%esp) + je chain_off +chain_on: + + # + # Set the chain_flag and clear BIOS shift/ctrl/alt status bits: + # + movl $1, chain_flag + + push %es + movw ___djgpp_dos_sel, %es + andb $0xf0, %es:0x417 + pop %es + jmp chain_done +chain_off: + movl $0, chain_flag +chain_done: ret + diff --git a/16/v2/source/ENGINE/MAIN.H b/16/v2/source/ENGINE/MAIN.H new file mode 100644 index 00000000..fde93675 --- /dev/null +++ b/16/v2/source/ENGINE/MAIN.H @@ -0,0 +1,42 @@ +/* +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. +*/ + +#ifndef MAIN_H +#define MAIN_H + +//void *valloc(int amount); +void err(char *message, ...); +int sgn(int x); +void ver(); +void CheckMessages(); +void Log(char *message, ...); +void Logp(char *message, ...); +void LogDone(); +void InitMouse(int, int); +void ReadMouse(); +void SetMouse(int, int); + +extern char startmap[80], nocdaudio; +extern int mx, my, mb; + +#define vfree(x) if (x) { free(x); x=0; } + +#ifndef DJGPP +#define strncasecmp strnicmp +#define strcasecmp strcmpi +#endif + +#endif diff --git a/16/v2/source/ENGINE/MAKEFILE b/16/v2/source/ENGINE/MAKEFILE new file mode 100644 index 00000000..f557fa31 --- /dev/null +++ b/16/v2/source/ENGINE/MAKEFILE @@ -0,0 +1,7 @@ +CC = gcc +CFLAGS = -s -Wall -Werror + +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 + +verge: $(OBJ) + diff --git a/16/v2/source/ENGINE/MESSAGE.C b/16/v2/source/ENGINE/MESSAGE.C new file mode 100644 index 00000000..dd3520e6 --- /dev/null +++ b/16/v2/source/ENGINE/MESSAGE.C @@ -0,0 +1,110 @@ +/* +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. +*/ + +#include "verge.h" + +// ================================= Data ==================================== + +struct message +{ + char text[44]; // message text + int exptime; // message expire time +}; + +struct message messages[6]; // 5-message buffer +byte num_msgs=0; // number of active messages + +// -- cpu usage -- + +int cputimer=0, frames=0; +char runprf[3]; +// -- final numbers -- +int fps=0; +char profile[3]; + +// ================================= Code ==================================== + +void CheckMessageExpirations() +{ int i; + + for (i=0; imessages[i].exptime) + { + memcpy(messages[i].text, messages[i+1].text, (48*(num_msgs-i+1))); + num_msgs--; + } +} + +void RenderGUI() +{ int i; + + CheckMessageExpirations(); + for (i=0; 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 a2eu`Ylw(ykU@fyp#b8y%Dy*VdA^kszY7JWe literal 0 HcmV?d00001 diff --git a/16/v2/source/ENGINE/MIKMOD.C b/16/v2/source/ENGINE/MIKMOD.C new file mode 100644 index 00000000..7f90de04 --- /dev/null +++ b/16/v2/source/ENGINE/MIKMOD.C @@ -0,0 +1,310 @@ +/* + +Name: +MIKMOD.C + +Description: +Modplaying example of mikmod. + +MSDOS: BC(y) Watcom(y) DJGPP(y) +Win95: BC(y*) +Os2: y +Linux: n + +* console mode only +(y) - yes +(n) - no (not possible or not useful) +(?) - may be possible, but not tested + +*/ +#ifdef __WIN32__ +#include +#endif + +#include +#include +#include +#include + +#ifndef __OS2__ +#include +#endif + +#include "wildfile.h" +#include "mikmod.h" + +char helptext[]= + +"Available switches (CaSe SeNsItIvE!):\n" +"\n" +" /d x use device-driver #x for output (0 is autodetect). Default=0\n" +" /ld List all available device-drivers\n" +" /ll List all available loaders\n" +" /x disables protracker extended speed\n" +" /p disables panning effects (9fingers.mod)\n" +" /v xx Sets volume from 0 (silence) to 100. Default=100\n" +" /f xxxx Sets mixing frequency. Default=44100\n" +" /m Force mono output (so sb-pro can mix at 44100)\n" +" /8 Force 8 bit output\n" +" /i Use interpolated mixing\n" +" /r Restart a module when it's done playing"; + + +/* + declarations for boring old sys-v style getopt *yawn*: +*/ +int getopt(int argc, char *argv[], char *optionS); +extern char *optarg; +extern int optind; +extern int opterr; + + +void tickhandler(void) +{ + MP_HandleTick(); /* play 1 tick of the module */ + MD_SetBPM(mp_bpm); +} + + +int main(int argc,char *argv[]) +{ + UNIMOD *mf; + int cmderr=0; /* error in commandline flag */ + int morehelp=0; /* set if user wants more help */ + int quit; + int t; + static int nargc; + static char **nargv; + + puts(mikbanner); + + /* Expand wildcards on commandline */ + + nargc=argc; nargv=argv; +#ifndef __DJGPP__ + MyGlob(&nargc,&nargv,0); +#else + setvbuf(stdout, NULL, _IONBF, 0); + __djgpp_set_ctrl_c(0); +#endif + + /* + Initialize soundcard parameters.. you _have_ to do this + before calling MD_Init(), and it's illegal to change them + after you've called MD_Init() + */ + + md_mixfreq =44100; /* standard mixing freq */ + md_dmabufsize =20000; /* standard dma buf size */ + md_mode =DMODE_16BITS|DMODE_STEREO; /* standard mixing mode */ + md_device =0; /* standard device: autodetect */ + + /* + Register the loaders we want to use.. + */ + + ML_RegisterLoader(&load_m15); /* if you use m15load, register it as first! */ + ML_RegisterLoader(&load_mod); + ML_RegisterLoader(&load_mtm); + ML_RegisterLoader(&load_s3m); + ML_RegisterLoader(&load_stm); + ML_RegisterLoader(&load_ult); + ML_RegisterLoader(&load_uni); + ML_RegisterLoader(&load_xm); + + /* + Register the drivers we want to use: + */ + + MD_RegisterDriver(&drv_nos); +#ifdef __OS2__ + MD_RegisterDriver(&drv_os2); +#elif defined(__WIN32__) + MD_RegisterDriver(&drv_w95); +#else + MD_RegisterDriver(&drv_ss); + MD_RegisterDriver(&drv_sb); + MD_RegisterDriver(&drv_gus); +#endif + + MD_RegisterPlayer(tickhandler); + + /* Parse option switches using standard getopt function: */ + + opterr=0; + + while( !cmderr && + (t=getopt(nargc,nargv,"ohxpm8irv:f:l:d:")) != EOF ){ + + switch(t){ + + case 'd': + md_device=atoi(optarg); + break; + + case 'l': + if(optarg[0]=='d') MD_InfoDriver(); + else if(optarg[0]=='l') ML_InfoLoader(); + else{ + cmderr=1; + break; + } + exit(0); + + case 'r': + mp_loop=1; + break; + + case 'm': + md_mode&=~DMODE_STEREO; + break; + + case '8': + md_mode&=~DMODE_16BITS; + break; + + case 'i': + md_mode|=DMODE_INTERP; + break; + + case 'x': + mp_extspd=0; + break; + + case 'p': + mp_panning=0; + break; + + case 'v': + if((mp_volume=atoi(optarg))>100) mp_volume=100; + break; + + case 'f': + md_mixfreq=atol(optarg); + break; + + case 'h': + morehelp=1; + cmderr=1; + break; + + case '?': + puts("\07Invalid switch or option needs an argument\n"); + cmderr=1; + break; + } + } + + if(cmderr || optind>=nargc){ + + /* + there was an error in the commandline, or there were no true + arguments, so display a usage message + */ + + puts("Usage: MIKMOD [switches] ... \n"); + + if(morehelp) + puts(helptext); + else + puts("Type MIKMOD /h for more help."); + + exit(-1); + } + + /* initialize soundcard */ + + if(!MD_Init()){ + printf("Driver error: %s.\n",myerr); + return 0; + } + + printf("Using %s for %d bit %s %s sound at %u Hz\n\n", + md_driver->Name, + (md_mode&DMODE_16BITS) ? 16:8, + (md_mode&DMODE_INTERP) ? "interpolated":"normal", + (md_mode&DMODE_STEREO) ? "stereo":"mono", + md_mixfreq); + +#ifdef __OS2__ + DosSetPriority( PRTYS_THREAD, PRTYC_TIMECRITICAL, 5L, 0UL ); +#endif + + for(quit=0; !quit && optind exit with errormsg. */ + + if(mf==NULL){ + printf("MikMod Error: %s\n",myerr); + break; + } + + /* initialize modplayer to play this module */ + + MP_Init(mf); + + printf( "Songname: %s\n" + "Modtype : %s\n" + "Periods : %s,%s\n", + mf->songname, + mf->modtype, + (mf->flags&UF_XMPERIODS) ? "XM type" : "mod type", + (mf->flags&UF_LINEAR) ? "Linear" : "Log"); + + /* + set the number of voices to use.. you + could add extra channels here (e.g. md_numchn=mf->numchn+4; ) + to use for your own soundeffects: + */ + + md_numchn=mf->numchn; + + /* start playing the module: */ + + MD_PlayStart(); + + while(!MP_Ready()){ + + char c; + + c=kbhit() ? getch() : 0; + + if(c=='+') + MP_NextPosition(); + else if(c=='-') + MP_PrevPosition(); + else if(c==0x1b){ + quit=1; + break; + } + else if(c==' ') break; + + MD_Update(); + + /* wait a bit */ + +#if defined(__OS2__) + DosSleep(40); /* hmmmm */ +#elif defined(__WIN32__) + Sleep(10); +#elif defined(__DJGPP__) + /* no wait for djgpp ? */ +#else + delay(10); +#endif + printf("\rsngpos:%d patpos:%d sngspd %d bpm %d ",mp_sngpos,mp_patpos,mp_sngspd,mp_bpm); + } + + MD_PlayStop(); /* stop playing */ + ML_Free(mf); /* and free the module */ + puts("\n"); + } + MD_Exit(); + return 0; +} diff --git a/16/v2/source/ENGINE/MIKMOD.H b/16/v2/source/ENGINE/MIKMOD.H new file mode 100644 index 00000000..0111ccb3 --- /dev/null +++ b/16/v2/source/ENGINE/MIKMOD.H @@ -0,0 +1,580 @@ +#ifndef MIKMOD_H +#define MIKMOD_H + +#include +#include "mtypes.h" /* include atomic mikmod types */ + + +#define mikbanner \ +"=======================================================================\n" \ +"MIKMOD v2.10 - Portable version - Programmed by MikMak of HaRDCoDE '95\n" \ +"=======================================================================\n" \ +"This program is SHAREWARE - Read MIKMOD.TXT for more info\n" \ +"E-Mail : mikmak@stack.urc.tue.nl\n" + + +/* + error variables: + =============== +*/ + +extern char *ERROR_ALLOC_STRUCT; +extern char *ERROR_LOADING_PATTERN; +extern char *ERROR_LOADING_TRACK; +extern char *ERROR_LOADING_HEADER; +extern char *ERROR_NOT_A_MODULE; +extern char *ERROR_LOADING_SAMPLEINFO; +extern char *ERROR_OUT_OF_HANDLES; +extern char *ERROR_SAMPLE_TOO_BIG; +extern char *myerr; + + + +#define _mm_rewind(x) _mm_fseek(x,0,SEEK_SET) +int _mm_fseek(FILE *stream,long offset,int whence); +void _mm_setiobase(long iobase); +long _mm_ftell(FILE *stream); + + +extern SBYTE _mm_read_SBYTE (FILE *fp); +extern UBYTE _mm_read_UBYTE (FILE *fp); + +extern SWORD _mm_read_M_SWORD (FILE *fp); +extern SWORD _mm_read_I_SWORD (FILE *fp); + +extern UWORD _mm_read_M_UWORD(FILE *fp); +extern UWORD _mm_read_I_UWORD(FILE *fp); + +extern SLONG _mm_read_M_SLONG (FILE *fp); +extern SLONG _mm_read_I_SLONG (FILE *fp); + +extern ULONG _mm_read_M_ULONG(FILE *fp); +extern ULONG _mm_read_I_ULONG(FILE *fp); + +extern int _mm_read_str(char *str, int size, FILE *fp); + +extern int _mm_read_SBYTES (SBYTE *buffer, int number, FILE *fp); +extern int _mm_read_UBYTES (UBYTE *buffer, int number, FILE *fp); + +extern int _mm_read_M_SWORDS (SWORD *buffer, int number, FILE *fp); +extern int _mm_read_I_SWORDS (SWORD *buffer, int number, FILE *fp); + +extern int _mm_read_M_UWORDS (UWORD *buffer, int number, FILE *fp); +extern int _mm_read_I_UWORDS (UWORD *buffer, int number, FILE *fp); + +extern int _mm_read_M_SLONGS (SLONG *buffer, int number, FILE *fp); +extern int _mm_read_I_SLONGS (SLONG *buffer, int number, FILE *fp); + +extern int _mm_read_M_ULONGS (ULONG *buffer, int number, FILE *fp); +extern int _mm_read_I_ULONGS (ULONG *buffer, int number, FILE *fp); + + +extern void _mm_write_SBYTE (SBYTE data,FILE *fp); +extern void _mm_write_UBYTE (UBYTE data,FILE *fp); + +extern void _mm_write_M_SWORD (SWORD data,FILE *fp); +extern void _mm_write_I_SWORD (SWORD data,FILE *fp); + +extern void _mm_write_M_UWORD (UWORD data,FILE *fp); +extern void _mm_write_I_UWORD (UWORD data,FILE *fp); + +extern void _mm_write_M_SLONG (SLONG data,FILE *fp); +extern void _mm_write_I_SLONG (SLONG data,FILE *fp); + +extern void _mm_write_M_ULONG (ULONG data,FILE *fp); +extern void _mm_write_I_ULONG (ULONG data,FILE *fp); + +extern void _mm_write_SBYTES (SBYTE *data, int number,FILE *fp); +extern void _mm_write_UBYTES (UBYTE *data, int number,FILE *fp); + +extern void _mm_write_M_SWORDS (SWORD *data, int number,FILE *fp); +extern void _mm_write_I_SWORDS (SWORD *data, int number,FILE *fp); + +extern void _mm_write_M_UWORDS (UWORD *data, int number,FILE *fp); +extern void _mm_write_I_UWORDS (UWORD *data, int number,FILE *fp); + +extern void _mm_write_M_SLONGS (SLONG *data, int number,FILE *fp); +extern void _mm_write_I_SLONGS (SLONG *data, int number,FILE *fp); + +extern void _mm_write_M_ULONGS (ULONG *data, int number,FILE *fp); +extern void _mm_write_I_ULONGS (ULONG *data, int number,FILE *fp); + + +/************************************************************************** +****** Unitrack stuff: **************************************************** +**************************************************************************/ + +/* + prototypes: +*/ + +void UniSetRow(UBYTE *t); +UBYTE UniGetByte(void); +UBYTE *UniFindRow(UBYTE *t,UWORD row); +void UniReset(void); +void UniWrite(UBYTE data); +void UniNewline(void); +void UniInstrument(UBYTE ins); +void UniNote(UBYTE note); +void UniPTEffect(UBYTE eff,UBYTE dat); +UBYTE *UniDup(void); +void UniSkipOpcode(UBYTE op); +BOOL UniInit(void); +void UniCleanup(void); +UWORD TrkLen(UBYTE *t); +BOOL MyCmp(UBYTE *a,UBYTE *b,UWORD l); + +/* + all known effects: +*/ + +enum { + UNI_NOTE=1, + UNI_INSTRUMENT, + UNI_PTEFFECT0, + UNI_PTEFFECT1, + UNI_PTEFFECT2, + UNI_PTEFFECT3, + UNI_PTEFFECT4, + UNI_PTEFFECT5, + UNI_PTEFFECT6, + UNI_PTEFFECT7, + UNI_PTEFFECT8, + UNI_PTEFFECT9, + UNI_PTEFFECTA, + UNI_PTEFFECTB, + UNI_PTEFFECTC, + UNI_PTEFFECTD, + UNI_PTEFFECTE, + UNI_PTEFFECTF, + UNI_S3MEFFECTA, + UNI_S3MEFFECTD, + UNI_S3MEFFECTE, + UNI_S3MEFFECTF, + UNI_S3MEFFECTI, + UNI_S3MEFFECTQ, + UNI_S3MEFFECTT, + UNI_XMEFFECTA, + UNI_XMEFFECTG, + UNI_XMEFFECTH, + UNI_XMEFFECTP +}; + + +/************************************************************************** +****** mikmod types: ****************************************************** +**************************************************************************/ + + +/* + Sample format flags: +*/ + +#define SF_16BITS 1 +#define SF_SIGNED 2 +#define SF_DELTA 4 +#define SF_BIG_ENDIAN 8 +#define SF_LOOP 16 +#define SF_BIDI 32 +#define SF_OWNPAN 64 +#define SF_REVERSE 128 + + +/* + Envelope flags: +*/ + +#define EF_ON 1 +#define EF_SUSTAIN 2 +#define EF_LOOP 4 + + +/* + Unimod flags +*/ + +#define UF_XMPERIODS 1 /* if set use XM periods/finetuning */ +#define UF_LINEAR 2 /* if set use LINEAR periods */ + + +typedef struct ENVPT{ + SWORD pos; + SWORD val; +} ENVPT; + + +typedef struct SAMPLE{ + UWORD c2spd; /* finetune frequency */ + SBYTE transpose; /* transpose value */ + UBYTE volume; /* volume 0-64 */ + UBYTE panning; /* panning */ + ULONG length; /* length of sample (in samples!) */ + ULONG loopstart; /* repeat position (relative to start, in samples) */ + ULONG loopend; /* repeat end */ + UWORD flags; /* sample format */ + ULONG seekpos; /* seek position in file */ + char *samplename; /* name of the sample */ + SWORD handle; /* sample handle */ +} SAMPLE; + + +typedef struct INSTRUMENT{ + UBYTE numsmp; + UBYTE samplenumber[96]; + + UBYTE volflg; /* bit 0: on 1: sustain 2: loop */ + UBYTE volpts; + UBYTE volsus; + UBYTE volbeg; + UBYTE volend; + ENVPT volenv[12]; + + UBYTE panflg; /* bit 0: on 1: sustain 2: loop */ + UBYTE panpts; + UBYTE pansus; + UBYTE panbeg; + UBYTE panend; + ENVPT panenv[12]; + + UBYTE vibtype; + UBYTE vibsweep; + UBYTE vibdepth; + UBYTE vibrate; + + UWORD volfade; + char *insname; + SAMPLE *samples; +} INSTRUMENT; + + +/* + MikMod UNImod types: + ==================== +*/ + +typedef struct UNIMOD{ + UBYTE numchn; /* number of channels */ + UWORD numpos; /* number of positions in this song */ + UWORD reppos; /* restart position */ + UWORD numpat; /* number of patterns in this song */ + UWORD numtrk; /* number of tracks */ + UWORD numins; /* number of samples */ + UBYTE initspeed; /* */ + UBYTE inittempo; /* */ + UBYTE positions[256]; /* all positions */ + UBYTE panning[32]; /* 32 panning positions */ + UBYTE flags; /* */ + char *songname; /* name of the song */ + char *modtype; /* string type of module */ + char *comment; /* module comments */ + INSTRUMENT *instruments; /* all samples */ + UWORD *patterns; /* array of PATTERN */ + UWORD *pattrows; /* array of number of rows for each pattern */ + UBYTE **tracks; /* array of pointers to tracks */ +} UNIMOD; + + +/************************************************************************** +****** Loader stuff: ****************************************************** +**************************************************************************/ + +/* + loader structure: +*/ + +typedef struct LOADER{ + struct LOADER *next; + char *type; + char *version; + BOOL (*Init)(void); + BOOL (*Test)(void); + BOOL (*Load)(void); + void (*Cleanup)(void); +} LOADER; + + +/* + public loader variables: +*/ + +extern UNIMOD of; +extern FILE *modfp; +extern UWORD finetune[16]; + + +/* + main loader prototypes: +*/ + +void ML_InfoLoader(void); +void ML_RegisterLoader(LOADER *ldr); +UNIMOD *ML_LoadFP(FILE *fp); +UNIMOD *ML_LoadFN(char *filename); +void ML_Free(UNIMOD *mf); + + +/* + other loader prototypes: (used by the loader modules) +*/ + +BOOL InitTracks(void); +void AddTrack(UBYTE *tr); +BOOL ReadComment(UWORD len); +BOOL AllocPatterns(void); +BOOL AllocTracks(void); +BOOL AllocInstruments(void); +BOOL AllocSamples(INSTRUMENT *i); +char *DupStr(char *s,UWORD len); +void *MyMalloc(size_t size); +void *MyCalloc(size_t nitems,size_t size); + + +/* + Declare external loaders: +*/ +extern LOADER load_uni; +extern LOADER load_mod; +extern LOADER load_m15; +extern LOADER load_mtm; +extern LOADER load_s3m; +extern LOADER load_stm; +extern LOADER load_ult; +extern LOADER load_xm; + + +/************************************************************************** +****** Wavload stuff: ***************************************************** +**************************************************************************/ + +SAMPLE *MW_LoadWavFP(FILE *fp); +SAMPLE *MW_LoadWavFN(char *filename); +void MW_FreeWav(SAMPLE *si); + + +/************************************************************************** +****** Driver stuff: ****************************************************** +**************************************************************************/ + +/* + max. number of handles a driver has to provide. (not strict) +*/ + +#define MAXSAMPLEHANDLES 128 + + +/* + possible mixing mode bits: +*/ + +#define DMODE_STEREO 1 +#define DMODE_16BITS 2 +#define DMODE_INTERP 4 + + +/* + driver structure: +*/ + +typedef struct DRIVER{ + struct DRIVER *next; + char *Name; + char *Version; + BOOL (*IsPresent) (void); + SWORD (*SampleLoad) (FILE *fp,ULONG size,ULONG reppos,ULONG repend,UWORD flags); + void (*SampleUnLoad) (SWORD handle); + BOOL (*Init) (void); + void (*Exit) (void); + void (*PlayStart) (void); + void (*PlayStop) (void); + void (*Update) (void); + void (*VoiceSetVolume) (UBYTE voice,UBYTE vol); + void (*VoiceSetFrequency) (UBYTE voice,ULONG frq); + void (*VoiceSetPanning) (UBYTE voice,UBYTE pan); + void (*VoicePlay) (UBYTE voice,SWORD handle,ULONG start,ULONG size,ULONG reppos,ULONG repend,UWORD flags); +} DRIVER; + + +/* + public driver variables: +*/ + +extern DRIVER *md_driver; +extern UWORD md_device; +extern UWORD md_mixfreq; +extern UWORD md_dmabufsize; +extern UWORD md_mode; +extern UBYTE md_numchn; +extern UBYTE md_bpm; +extern void (*md_player)(void); + +/* + main driver prototypes: +*/ + +void MD_InfoDriver(void); +void MD_RegisterDriver(DRIVER *drv); +void MD_RegisterPlayer(void (*plr)(void)); +SWORD MD_SampleLoad(FILE *fp,ULONG size,ULONG reppos,ULONG repend,UWORD flags); +void MD_SampleUnLoad(SWORD handle); +BOOL MD_Init(void); +void MD_Exit(void); +void MD_PlayStart(void); +void MD_PlayStop(void); +void MD_SetBPM(UBYTE bpm); +void MD_Update(void); +void MD_VoiceSetVolume(UBYTE voice,UBYTE ivol); +void MD_VoiceSetFrequency(UBYTE voice,ULONG frq); +void MD_VoiceSetPanning(UBYTE voice,ULONG pan); +void MD_VoicePlay(UBYTE voice,SWORD handle,ULONG start,ULONG size,ULONG reppos,ULONG repend,UWORD flags); +void SL_Init(FILE *fp,UWORD infmt,UWORD outfmt); +void SL_Load(void *buffer,ULONG length); + +/* + Declare external drivers: +*/ + +extern DRIVER drv_gus; /* gravis ultrasound driver */ +extern DRIVER drv_sb; /* soundblaster DSP driver */ +extern DRIVER drv_ss; /* ensoniq soundscape driver */ +extern DRIVER drv_nos; /* nosound driver */ +extern DRIVER drv_raw; /* file output driver */ +extern DRIVER drv_w95; /* win95 driver */ +extern DRIVER drv_awe; /* experimental SB-AWE driver */ +extern DRIVER drv_vox; /* linux voxware driver */ +extern DRIVER drv_af; /* Dec Alpha AudioFile driver */ +extern DRIVER drv_sun; /* Sun driver */ +extern DRIVER drv_os2; /* Os2 driver */ +extern DRIVER drv_tim; /* timing driver */ + +/************************************************************************** +****** Player stuff: ****************************************************** +**************************************************************************/ + + +typedef struct ENVPR{ + UBYTE flg; /* envelope flag */ + UBYTE pts; /* number of envelope points */ + UBYTE sus; /* envelope sustain index */ + UBYTE beg; /* envelope loop begin */ + UBYTE end; /* envelope loop end */ + SWORD p; /* current envelope counter */ + UWORD a; /* envelope index a */ + UWORD b; /* envelope index b */ + ENVPT *env; /* envelope points */ +} ENVPR; + + +typedef struct AUDTMP{ + INSTRUMENT *i; + SAMPLE *s; + + UWORD fadevol; /* fading volume */ + + ENVPR venv; + ENVPR penv; + + UBYTE keyon; /* if true=key is pressed. */ + UBYTE kick; /* if true=sample has to be restarted */ + UBYTE sample; /* which sample number (0-31) */ + SWORD handle; /* which sample-handle */ + + ULONG start; /* The start byte index in the sample */ + + UBYTE panning; /* panning position */ + UBYTE pansspd; /* panslide speed */ + + SBYTE volume; /* amiga volume (0 t/m 64) to play the sample at */ + UWORD period; /* period to play the sample at */ + + /* You should not have to use the values + below in the player routine */ + + SBYTE transpose; + + UBYTE note; /* */ + + SWORD ownper; + SWORD ownvol; + + UBYTE *row; /* row currently playing on this channel */ + + SBYTE retrig; /* retrig value (0 means don't retrig) */ + UWORD c2spd; /* what finetune to use */ + + SBYTE tmpvolume; /* tmp volume */ + + UWORD tmpperiod; /* tmp period */ + UWORD wantedperiod; /* period to slide to (with effect 3 or 5) */ + + UWORD slidespeed; /* */ + UWORD portspeed; /* noteslide speed (toneportamento) */ + + UBYTE s3mtremor; /* s3m tremor (effect I) counter */ + UBYTE s3mtronof; /* s3m tremor ontime/offtime */ + + UBYTE s3mvolslide; /* last used volslide */ + + UBYTE s3mrtgspeed; /* last used retrig speed */ + UBYTE s3mrtgslide; /* last used retrig slide */ + + UBYTE glissando; /* glissando (0 means off) */ + UBYTE wavecontrol; /* */ + + SBYTE vibpos; /* current vibrato position */ + UBYTE vibspd; /* "" speed */ + UBYTE vibdepth; /* "" depth */ + + SBYTE trmpos; /* current tremolo position */ + UBYTE trmspd; /* "" speed */ + UBYTE trmdepth; /* "" depth */ + + UWORD soffset; /* last used sample-offset (effect 9) */ +} AUDTMP; + + +extern AUDTMP mp_audio[32]; /* max eight channels */ +extern UBYTE mp_bpm; /* beats-per-minute speed */ +extern UWORD mp_patpos; /* current row number (0-63) */ +extern SWORD mp_sngpos; /* current song position */ +extern UWORD mp_sngspd; /* current songspeed */ + +extern BOOL mp_loop; +extern BOOL mp_panning; +extern BOOL mp_extspd; +extern UBYTE mp_volume; + +/* + player prototypes: +*/ + +int MP_Ready(void); +void MP_NextPosition(void); +void MP_PrevPosition(void); +void MP_SetPosition(UWORD pos); +void MP_HandleTick(void); +void MP_Init(UNIMOD *m); + + +/************************************************************************** +****** Virtual channel stuff: ********************************************* +**************************************************************************/ + +BOOL VC_Init(void); +void VC_Exit(void); + +void VC_PlayStart(void); +void VC_PlayStop(void); + +SWORD VC_SampleLoad(FILE *fp,ULONG size,ULONG reppos,ULONG repend,UWORD flags); +void VC_SampleUnload(SWORD handle); + +void VC_WriteSamples(SBYTE *buf,UWORD todo); +UWORD VC_WriteBytes(SBYTE *buf,UWORD todo); +void VC_SilenceBytes(SBYTE *buf,UWORD todo); + +void VC_VoiceSetVolume(UBYTE voice,UBYTE vol); +void VC_VoiceSetFrequency(UBYTE voice,ULONG frq); +void VC_VoiceSetPanning(UBYTE voice,UBYTE pan); +void VC_VoicePlay(UBYTE voice,SWORD handle,ULONG start,ULONG size,ULONG reppos,ULONG repend,UWORD flags); + +#endif diff --git a/16/v2/source/ENGINE/MODE13H.C b/16/v2/source/ENGINE/MODE13H.C new file mode 100644 index 00000000..2dcbf9ce --- /dev/null +++ b/16/v2/source/ENGINE/MODE13H.C @@ -0,0 +1,881 @@ +/* +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. +*/ + +#include +#include +#include "verge.h" + +// ================================= Data ==================================== + +byte *screen, *screenx; // virscr | realscr + +// ================================= Code ==================================== + +void SetMode(int mode) +{ + REGISTERS r; + SET_AX(r, mode); + INTERRUPT(0x10, r); +} + +int Mode13hShutdown(void) +{ + SetMode(0x3); + free(screen); + return 0; +} + +void xShowPage(int startofs) +{ + asm("movl _screen, %%esi \n\t" + "addl %0, %%esi \n\t" + "movl _screenx, %%edi \n\t" + "movl $200, %%eax \n\t" +"lineloop: \n\t" + "movl $80, %%ecx \n\t" + "rep \n\t" + "movsl \n\t" + "addl $32, %%esi \n\t" + "decl %%eax \n\t" + "jnz lineloop \n\t" + : + : "m" (startofs) + : "esi", "edi", "cc", "eax", "ecx"); +} + +int Mode13hShowPage(void) +{ + RenderGUI(); + cpubyte=PFLIP; + xShowPage((16*352)+16); + cpubyte=ETC; + return 0; +} + +int Mode13hCopySprite(int x, int y, int width, int height, byte *src) +{ + cpubyte=RENDER; + + asm("movl %3, %%edx \n\t" + "movl %4, %%esi \n\t" +"csl0: \n\t" + "movl %1, %%eax \n\t" + "imul $352, %%eax \n\t" + "addl %0, %%eax \n\t" + "addl _screen, %%eax \n\t" + "movl %%eax, %%edi \n\t" + "movl %2, %%ecx \n\t" + "shrl $2, %%ecx \n\t" + "repz \n\t" + "movsl \n\t" + "incl %1 \n\t" + "decl %%edx \n\t" + "jnz csl0 \n\t" + : + : "m" (x), "m" (y), "m" (width), "m" (height), "m" (src) + : "eax","edx","esi","edi","ecx","cc" ); + cpubyte=ETC; + return 0; +} + +int Mode13hCopyTile(int x, int y, byte *spr) +{ + cpubyte=RENDER; + + asm("movl $16, %%ecx \n\t" + "movl %2, %%esi \n\t" + "movl %1, %%edi \n\t" + "imul $352, %%edi \n\t" + "addl %0, %%edi \n\t" + "addl _screen, %%edi \n\t" +" ctl0: \n\t" + "movl (%%edi), %%eax \n\t" + "andl $0, %%eax \n\t" + "orl (%%esi), %%eax \n\t" + "movl %%eax, (%%edi) \n\t" + "movl 4(%%edi), %%eax \n\t" + "andl $0, %%eax \n\t" + "orl 4(%%esi), %%eax \n\t" + "movl %%eax, 4(%%edi) \n\t" + "movl 8(%%edi), %%eax \n\t" + "andl $0, %%eax \n\t" + "orl 8(%%esi), %%eax \n\t" + "movl %%eax, 8(%%edi) \n\t" + "movl 12(%%edi), %%eax \n\t" + "andl $0, %%eax \n\t" + "orl 12(%%esi), %%eax \n\t" + "movl %%eax, 12(%%edi) \n\t" + "addl $16, %%esi \n\t" + "addl $352, %%edi \n\t" + "decl %%ecx \n\t" + "jnz ctl0 \n\t" + : + : "m" (x), "m" (y), "m" (spr) + : "eax","ecx","esi","edi","cc" ); + cpubyte=ETC; + return 0; +} + +int Mode13hTCopySprite(int x, int y, int width, int height, byte *src) +{ + cpubyte=RENDER; + + asm("movl %3, %%ecx \n\t" + "movl %4, %%esi \n\t" +"tcsl0: \n\t" + "movl %1, %%eax \n\t" + "imul $352, %%eax \n\t" + "addl %0, %%eax \n\t" + "addl _screen, %%eax \n\t" + "movl %%eax, %%edi \n\t" + "movl %2, %%edx \n\t" +"drawloop: \n\t" + "lodsb \n\t" + "orb %%al, %%al \n\t" + "jz nodraw \n\t" + "stosb \n\t" + "decl %%edx \n\t" + "jz endline \n\t" + "jmp drawloop \n\t" +"nodraw: \n\t" + "incl %%edi \n\t" + "decl %%edx \n\t" + "jnz drawloop \n\t" +"endline: \n\t" + "incl %1 \n\t" + "decl %%ecx \n\t" + "jnz tcsl0 \n\t" + : + : "m" (x), "m" (y), "m" (width), "m" (height), "m" (src) + : "eax","edx","esi","edi","ecx","cc" ); + + cpubyte=ETC; + return 0; +} + +int Mode13hTCopyTile(int x, int y, byte *spr, byte *matte) +{ + cpubyte=RENDER; + asm("movl $16, %%ecx \n\t" + "movl %2, %%esi \n\t" + "movl %1, %%edi \n\t" + "imul $352, %%edi \n\t" + "addl %0, %%edi \n\t" + "addl _screen, %%edi \n\t" + "movl %3, %%edx \n\t" +"tctl0: \n\t" + "movl (%%edi), %%eax \n\t" + "andl (%%edx), %%eax \n\t" + "orl (%%esi), %%eax \n\t" + "movl %%eax, (%%edi) \n\t" + "movl 4(%%edi), %%eax \n\t" + "andl 4(%%edx), %%eax \n\t" + "orl 4(%%esi), %%eax \n\t" + "movl %%eax, 4(%%edi) \n\t" + "movl 8(%%edi), %%eax \n\t" + "andl 8(%%edx), %%eax \n\t" + "orl 8(%%esi), %%eax \n\t" + "movl %%eax, 8(%%edi) \n\t" + "movl 12(%%edi), %%eax \n\t" + "andl 12(%%edx), %%eax \n\t" + "orl 12(%%esi), %%eax \n\t" + "movl %%eax, 12(%%edi) \n\t" + "addl $16, %%esi \n\t" + "addl $352, %%edi \n\t" + "addl $16, %%edx \n\t" + "decl %%ecx \n\t" + "jnz tctl0 \n\t" + : + : "m" (x), "m" (y), "m" (spr), "m" (matte) + : "eax","ecx","edx","esi","edi","cc" ); + + cpubyte=ETC; + return 0; +} + +int Mode13hCCopySprite(int x,int y,int width,int height,byte *src) +{ + byte *s,*d; + int xl,yl,xs,ys; + int cx1=0, cy1=0, cx2=tsx-1, cy2=tsy-1; + + cpubyte=RENDER; + + xl=width; + yl=height; + xs=ys=0; + + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + + if (xcx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + + if (x0 && th>0) dys=tsx-xm; + else if (tw>0 && th<0) dys=(0-tsx)-xm; + else if (tw<0 && th>0) dys=tsx+xm; + else if (tw<0 && th<0) dys=(0-tsx)+xm; + + d = screen+(y*tsx)+x; + for (i=0;i>16)]; + d+=xd; + sx+=xs; + } + d+=dys; + sy+=ys; + s+=(sy>>16)*w; + sy&=0xffff; + } + cpubyte=ETC; + return 0; +} + +int Mode13hRenderMAPLine(int x, int y, int yofs, word *map) +{ + cpubyte=RENDER; + asm("movl %1, %%edi \n\t" + "imul $352, %%edi \n\t" + "addl %0, %%edi \n\t" + "addl _screen, %%edi \n\t" + "movl $22, %%ebx \n\t" + "movl %3, %%ecx \n\t" +"tileloop: \n\t" + "movw (%%ecx), %%ax \n\t" + "movzwl %%ax, %%edx \n\t" + "shll $1, %%edx \n\t" + "addl _tileidx, %%edx \n\t" + "movw (%%edx), %%ax \n\t" + "movzwl %%ax, %%esi \n\t" + "shll $8, %%esi \n\t" + "addl _vsp, %%esi \n\t" + "movl %2, %%eax \n\t" + "shll $4, %%eax \n\t" + "addl %%eax, %%esi \n\t" + "movl (%%esi), %%eax \n\t" + "movl %%eax, (%%edi) \n\t" + "movl 4(%%esi), %%eax \n\t" + "movl %%eax, 4(%%edi) \n\t" + "movl 8(%%esi), %%eax \n\t" + "movl %%eax, 8(%%edi) \n\t" + "movl 12(%%esi), %%eax \n\t" + "movl %%eax, 12(%%edi) \n\t" + "addl $16, %%edi \n\t" + "addl $2, %%ecx \n\t" + "decl %%ebx \n\t" + "jnz tileloop \n\t" + : + : "m" (x), "m" (y), "m" (yofs), "m" (map) + : "eax","ebx","ecx","edx","esi","edi","cc" ); + + cpubyte=ETC; + return 0; +} + +int Mode13hTRenderMAPLine(int x, int y, int yofs, word *map) +{ + cpubyte=RENDER; + asm("movl %1, %%edi \n\t" + "imul $352, %%edi \n\t" + "addl %0, %%edi \n\t" + "addl _screen, %%edi \n\t" + "movl $22, %%ebx \n\t" + "movl %3, %%ecx \n\t" +"tileloop1: \n\t" + "movw (%%ecx), %%ax \n\t" + "movzwl %%ax, %%edx \n\t" + "shll $1, %%edx \n\t" + "addl _tileidx, %%edx \n\t" + "movw (%%edx), %%ax \n\t" + "orw %%ax, %%ax \n\t" + "jz next1 \n\t" + "movzwl %%ax, %%esi \n\t" + "shll $8, %%esi \n\t" + "movl %%esi, %%edx \n\t" + "addl _vspmask, %%edx \n\t" + "addl _vsp, %%esi \n\t" + "movl %2, %%eax \n\t" + "shll $4, %%eax \n\t" + "addl %%eax, %%esi \n\t" + "addl %%eax, %%edx \n\t" + "movl (%%edi), %%eax \n\t" + "andl (%%edx), %%eax \n\t" + "orl (%%esi), %%eax \n\t" + "movl %%eax, (%%edi) \n\t" + "movl 4(%%edi), %%eax \n\t" + "andl 4(%%edx), %%eax \n\t" + "orl 4(%%esi), %%eax \n\t" + "movl %%eax, 4(%%edi) \n\t" + "movl 8(%%edi), %%eax \n\t" + "andl 8(%%edx), %%eax \n\t" + "orl 8(%%esi), %%eax \n\t" + "movl %%eax, 8(%%edi) \n\t" + "movl 12(%%edi), %%eax \n\t" + "andl 12(%%edx), %%eax \n\t" + "orl 12(%%esi), %%eax \n\t" + "movl %%eax, 12(%%edi) \n\t" +"next1: \n\t" + "addl $16, %%edi \n\t" + "addl $2, %%ecx \n\t" + "decl %%ebx \n\t" + "jnz tileloop1 \n\t" + : + : "m" (x), "m" (y), "m" (yofs), "m" (map) + : "eax","ebx","ecx","edx","esi","edi","cc" ); + + cpubyte=ETC; + return 0; +} + +int Mode13hColorField(int x, int y, byte c) +{ + cpubyte=RENDER; + asm("movl %1, %%eax \n\t" + "imul $352, %%eax \n\t" + "addl %0, %%eax \n\t" + "addl _screen, %%eax \n\t" + "movl %%eax, %%edi \n\t" + "movl $8, %%ecx \n\t" + "movb %2, %%al \n\t" +"lineloop1: \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "addl $336, %%edi \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "addl $336, %%edi \n\t" + "decl %%ecx \n\t" + "jnz lineloop1 \n\t" + : + : "m" (x), "m" (y), "m" (c) + : "eax","edi","ecx","cc" ); + cpubyte=ETC; + return 0; +} + +int Mode13hClearScreen() +{ + cpubyte=RENDER; + memset(screen+(352*16)+16,0,(352*200)); + cpubyte=ETC; + return 0; +} + +int Mode13hPutPixel(int x, int y, int color) +{ + cpubyte=RENDER; + + if (xcx2 || y>cy2) + { + cpubyte=ETC; + return 0; + } + + x+=16; + y+=16; + + screen[(y*tsx)+x]=color; + + cpubyte=ETC; + return 0; +} + +int Mode13hGetPixel(int x, int y) +{ + cpubyte=RENDER; + + if (xcx2 || y>cy2) + { + cpubyte=ETC; + return 0; + } + + x+=16; + y+=16; + + cpubyte=ETC; + return screen[(y*tsx)+x]; +} + +int Mode13hHLine(int x, int y, int x2, int color) +{ byte *d; + int width; + + cpubyte=RENDER; + + // swap? + if (x2cx2 || y>cy2 || x+width cx2) width=cx2-x+1; + if (xcx2 || y>cy2 || x cy2) height=cy2-y+1; + if (ycx2 && x2>cx2) + || (y1cy2 && y2>cy2)) + { + cpubyte=ETC; + return 0; + } + + if (x1>x2) + { + i=x1; x1=x2; x2=i; + i=y1; y1=y2; y2=i; + } + + // clip the left side + if (x1cx2) + { int myy=(y2-y1); + int mxx=(x2-x1),b; + if (!mxx) + { + cpubyte=ETC; + return 0; + } + if (myy) + { + b=y1-(y2-y1)*x1/mxx; + y2=myy*cx2/mxx+b; + x2=cx2; + } + else x2=cx2; + } + + if (y1>y2) + { + i=x1; x1=x2; x2=i; + i=y1; y1=y2; y2=i; + } + + // clip the bottom + if (y2>cy2) + { int mxx=(x2-x1); + int myy=(y2-y1),b; + if (!myy) + { + cpubyte=ETC; + return 0; + } + if (mxx) + { + b=y1-(y2-y1)*x1/mxx; + x2=(cy2-b)*mxx/myy; + y2=cy2; + } + else y2=cy2; + } + + // clip the top + if (y1cx2 || x2>cx2 || y1cy2 || y2>cy2) + { + cpubyte=ETC; + return 0; + } + + if (x1>x2) + { xc=x2; xi=x1; } + else { xi=x2; xc=x1; } + + x1+=16;y1+=16; // aen; adjust these here?? + x2+=16;y2+=16; + + // assume y1<=y2 from above swap operation + yi=y2; yc=y1; + + dcx=x1; dcy=y1; + xc=(x2-x1); yc=(y2-y1); + if (xc<0) xi=-1; else xi=1; + if (yc<0) yi=-1; else yi=1; + n=abs(xc); m=abs(yc); + ycyi=abs(2*yc*xi); + er=0; + + if (n>m) + { + xcxi=abs(2*xc*xi); + for (i=0;i<=n;i++) + { + screen[(dcy*tsx)+dcx]=color; + if (er>0) + { dcy+=yi; + er-=xcxi; + } + er+=ycyi; + dcx+=xi; + } + } + else + { + xcyi=abs(2*xc*yi); + for (i=0;i<=m;i++) + { + screen[(dcy*tsx)+dcx]=color; + if (er>0) + { dcx+=xi; + er-=ycyi; + } + er+=xcyi; + dcy+=yi; + } + } + + cpubyte=ETC; + return 0; +} + +int Mode13hCircle(int x, int y, int radius, int color) +{ int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + + do { + Mode13hPutPixel(x+cx,y+cy,color); + if (cx) Mode13hPutPixel(x-cx,y+cy,color); + if (cy) Mode13hPutPixel(x+cx,y-cy,color); + if ((cx) && (cy)) Mode13hPutPixel(x-cx,y-cy,color); + + if (cx != cy) + { + Mode13hPutPixel(x+cy,y+cx,color); + if (cx) Mode13hPutPixel(x+cy,y-cx,color); + if (cy) Mode13hPutPixel(x-cy,y+cx,color); + if (cx && cy) Mode13hPutPixel(x-cy,y-cx,color); + } + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + + cx++; + + } while (cx <= cy); + + cpubyte=ETC; + return 0; +} + +int Mode13hCircleFill(int x, int y, int radius, int color) +{ int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + + do { + Mode13hHLine(x-cy,y-cx,x+cy,color); + if (cx) Mode13hHLine(x-cy,y+cx,x+cy,color); + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + if (cx != cy) + { + Mode13hHLine(x-cx,y-cy,x+cx,color); + if (cy) Mode13hHLine(x-cx,y+cy,x+cx,color); + } + + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + + cx++; + + } while (cx <= cy); + + cpubyte=ETC; + return 0; +} + +int Mode13hRect(int x, int y, int x2, int y2, int color) +{ + Mode13hHLine(x,y,x2,color); + Mode13hHLine(x,y2,x2,color); + Mode13hVLine(x,y+1,y2-1,color); + Mode13hVLine(x2,y+1,y2-1,color); + return 0; +} + +int Mode13hRectFill(int x, int y, int x2, int y2, int color) +{ + cpubyte=RENDER; + + if (y2 +#include +#include "verge.h" + +void BIOS_SetVideoMode(int mode) +{ + REGISTERS r; + SET_AX(r, mode); + INTERRUPT(0x10, r); +} + +// =============================== Mode 13h =================================== + +int Mode13hShutdown(int i) +{ + if (i) BIOS_SetVideoMode(0x3); + free(screen); + return 0; +} + +void InitMode13h(void) +{ + BIOS_SetVideoMode(0x13); + + DriverDesc = "320x200 (Mode 13h, linear)"; + sx=320, sy=200; + tx=20, ty=13; + cx1=0, cy1=0; + cx2=sx-1, cy2=sy-1; + + // setup function drivers + ShowPage=LFB_ShowPage; + ShutdownVideo=Mode13hShutdown; + + video=(byte *) 0xA0000 + __djgpp_conventional_base; + vscreen=(byte *) valloc(sx*sy, "vscreen", 0); + screen=vscreen; + memset(screen, 0, sx*sy); +} + +// ================================= Mode-X ================================== + +#define SEQU_ADDR 0x3c4 +#define CRTC_ADDR 0x3d4 +#define MISC_OUTPUT 0x3c2 + +#define ATTRCON_ADDR 0x3c0 +#define MISC_ADDR 0x3c2 +#define VGAENABLE_ADDR 0x3c3 +#define SEQ_ADDR 0x3c4 +#define GRACON_ADDR 0x3ce +#define CRTC_ADDR 0x3d4 +#define STATUS_ADDR 0x3da + +typedef struct +{ + unsigned port; + byte index, value; +} Register; + +typedef Register *RegisterPtr; + +Register scr256x256[] = +{ + { 0x3c2, 0x00, 0xe3},{ 0x3d4, 0x00, 0x5f},{ 0x3d4, 0x01, 0x3f}, + { 0x3d4, 0x02, 0x40},{ 0x3d4, 0x03, 0x82},{ 0x3d4, 0x04, 0x4A}, + { 0x3d4, 0x05, 0x9A},{ 0x3d4, 0x06, 0x23},{ 0x3d4, 0x07, 0xb2}, + { 0x3d4, 0x08, 0x00},{ 0x3d4, 0x09, 0x61},{ 0x3d4, 0x10, 0x0a}, + { 0x3d4, 0x11, 0xac},{ 0x3d4, 0x12, 0xff},{ 0x3d4, 0x13, 0x20}, + { 0x3d4, 0x14, 0x40},{ 0x3d4, 0x15, 0x07},{ 0x3d4, 0x16, 0x1a}, + { 0x3d4, 0x17, 0xa3},{ 0x3c4, 0x01, 0x01},{ 0x3c4, 0x04, 0x0e}, + { 0x3ce, 0x05, 0x40},{ 0x3ce, 0x06, 0x05},{ 0x3c0, 0x10, 0x41}, + { 0x3c0, 0x13, 0x00} +}; + +// ================================= Code ==================================== + +void plane(byte p) +{ + int hi=1<>2; + + for (y=0; y= sx) + { memcpy(d,s,sx); + bytes-=sx; + s+=sx; + d+=sx; + } + else + { memcpy(d,s,bytes); + s+=bytes; + span=sx-bytes; + + VESASetBank(bank++); + d=video; + bytes=65536; + + memcpy(d,s,span); + bytes-=span; + s+=span; + d+=span; + } + } + cpubyte=ETC; + return 0; +} + +void Set640x480() +{ + REGISTERS r; + + DriverDesc = "640x480 (VESA, Banked)"; + + SET_BX(r, 0x0101); + SET_AX(r, 0x4f02); + INTERRUPT(0x10, r); + + sx=640; sy=480; + tx=40; ty=30; + cx1=0; cy1=0; + cx2=sx-1;cy2=sy-1; +} + +void InitVESA(int xres, int yres) +{ + int found; + + found=0; + if (xres==640 && yres==480) { Set640x480(); found=1; } + + if (!found) + err("Internal error: unknown VESA resolution"); + + // setup driver functions + ShowPage = VESAShowPage; // reassign for banked VESA video blt + ShutdownVideo = VESAShutdown; + + video=(byte *) 0xA0000 + __djgpp_conventional_base; + vscreen=(byte *) valloc(sx*sy, "vscreen", 0); + screen=vscreen; + memset(screen, 0, sx*sy); +} + +// ============================================================================ + +int InitVideo(int xres, int yres) +{ + int found; + + found=0; + if (xres==320 && yres==200) { InitMode13h(); found=1; } + if (xres==320 && yres==240) { InitModeX(xres,yres); found=1; } + if (xres==360 && yres==240) { InitModeX(xres,yres); found=1; } + if (xres==256 && yres==256) { InitModeX(xres,yres); found=1; } + if (xres==640 && yres==480) { InitVESA(xres,yres); found=1; } + + if (found) + { + tsx=xres; tsy=yres; + Logp("Sys: Initializing %s.", DriverDesc); + InitMouse(tsx, tsy); + } + else + { + InitMode13h(); + tsx=320; tsy=200; + Logp("Unknown video mode %dx%d; defaulting to mode 13h.", xres, yres); + InitMouse(tsx, tsy); + } + LogDone(); + return found; +} diff --git a/16/v2/source/ENGINE/MODEX.C b/16/v2/source/ENGINE/MODEX.C new file mode 100644 index 00000000..6247f8eb --- /dev/null +++ b/16/v2/source/ENGINE/MODEX.C @@ -0,0 +1,1055 @@ +/* +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. +*/ + + +#include +#include +#include "verge.h" + +// ================================= Data ==================================== + +#define SEQU_ADDR 0x3c4 +#define CRTC_ADDR 0x3d4 +#define MISC_OUTPUT 0x3c2 + +byte *screenbase; // ptr to A000:0000 +int endcol,nextl; // end column number thingy | next line +int winofs; + +// ================================= Code ==================================== + +void ModeXSetMode(int mode) +{ + REGISTERS r; + SET_AX(r, mode); + INTERRUPT(0x10, r); +} + +void plane(byte p) +{ + int hi=1<> 8) | 0x0c); + outportb(0x3d4, (offset & 0xff) | 0x0d); + + _enable(); +} + +int ModeXShowPage() +{ + byte *s,*d; + int x,y,k; + int sx2; + int b; + + RenderGUI(); + cpubyte=PFLIP; + + //s=screen+(16*tsx)+16; + b=(16*tsx)+16; + d=screenbase; + sx2=sx>>2; + + //while (!(inp(986) & 8)); + + for (y=0; ycx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + + if (xcx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + + if (x0 && th>0) dys=tsx-xm; + else if (tw>0 && th<0) dys=(0-tsx)-xm; + else if (tw<0 && th>0) dys=tsx+xm; + else if (tw<0 && th<0) dys=(0-tsx)+xm; + + d = screen+(y*tsx)+x; + for (i=0;i>16)]; + d+=xd; + sx+=xs; + } + d+=dys; + sy+=ys; + s+=(sy>>16)*w; + sy&=0xffff; + } + cpubyte=ETC; + return 0; +} + +int ModeXRenderMAPLine(int x, int y, int yofs, word *map) +{ + cpubyte=RENDER; + asm("movl %1, %%edi \n\t" + "imul _tsx, %%edi \n\t" + "addl %0, %%edi \n\t" + "addl _screen, %%edi \n\t" + "movl _tx, %%ebx \n\t" + "incl %%ebx \n\t" + "movl %3, %%ecx \n\t" +"tileloop: \n\t" + "movw (%%ecx), %%ax \n\t" + "movzwl %%ax, %%edx \n\t" + "shll $1, %%edx \n\t" + "addl _tileidx, %%edx \n\t" + "movw (%%edx), %%ax \n\t" + "movzwl %%ax, %%esi \n\t" + "shll $8, %%esi \n\t" + "addl _vsp, %%esi \n\t" + "movl %2, %%eax \n\t" + "shll $4, %%eax \n\t" + "addl %%eax, %%esi \n\t" + "movl (%%esi), %%eax \n\t" + "movl %%eax, (%%edi) \n\t" + "movl 4(%%esi), %%eax \n\t" + "movl %%eax, 4(%%edi) \n\t" + "movl 8(%%esi), %%eax \n\t" + "movl %%eax, 8(%%edi) \n\t" + "movl 12(%%esi), %%eax \n\t" + "movl %%eax, 12(%%edi) \n\t" + "addl $16, %%edi \n\t" + "addl $2, %%ecx \n\t" + "decl %%ebx \n\t" + "jnz tileloop \n\t" + : + : "m" (x), "m" (y), "m" (yofs), "m" (map) + : "eax","ebx","ecx","edx","esi","edi","cc" ); + + cpubyte=ETC; + return 0; +} + +int ModeXTRenderMAPLine(int x, int y, int yofs, word *map) +{ + cpubyte=RENDER; + asm("movl %1, %%edi \n\t" + "imul _tsx, %%edi \n\t" + "addl %0, %%edi \n\t" + "addl _screen, %%edi \n\t" + "movl _tx, %%ebx \n\t" + "incl %%ebx \n\t" + "movl %3, %%ecx \n\t" +"tileloop1: \n\t" + "movw (%%ecx), %%ax \n\t" + "movzwl %%ax, %%edx \n\t" + "shll $1, %%edx \n\t" + "addl _tileidx, %%edx \n\t" + "movw (%%edx), %%ax \n\t" + "orw %%ax, %%ax \n\t" + "jz next1 \n\t" + "movzwl %%ax, %%esi \n\t" + "shll $8, %%esi \n\t" + "movl %%esi, %%edx \n\t" + "addl _vspmask, %%edx \n\t" + "addl _vsp, %%esi \n\t" + "movl %2, %%eax \n\t" + "shll $4, %%eax \n\t" + "addl %%eax, %%esi \n\t" + "addl %%eax, %%edx \n\t" + "movl (%%edi), %%eax \n\t" + "andl (%%edx), %%eax \n\t" + "orl (%%esi), %%eax \n\t" + "movl %%eax, (%%edi) \n\t" + "movl 4(%%edi), %%eax \n\t" + "andl 4(%%edx), %%eax \n\t" + "orl 4(%%esi), %%eax \n\t" + "movl %%eax, 4(%%edi) \n\t" + "movl 8(%%edi), %%eax \n\t" + "andl 8(%%edx), %%eax \n\t" + "orl 8(%%esi), %%eax \n\t" + "movl %%eax, 8(%%edi) \n\t" + "movl 12(%%edi), %%eax \n\t" + "andl 12(%%edx), %%eax \n\t" + "orl 12(%%esi), %%eax \n\t" + "movl %%eax, 12(%%edi) \n\t" +"next1: \n\t" + "addl $16, %%edi \n\t" + "addl $2, %%ecx \n\t" + "decl %%ebx \n\t" + "jnz tileloop1 \n\t" + : + : "m" (x), "m" (y), "m" (yofs), "m" (map) + : "eax","ebx","ecx","edx","esi","edi","cc" ); + + cpubyte=ETC; + return 0; +} + +int ModeXColorField(int x, int y, byte c) +{ + cpubyte=RENDER; + asm("movl %1, %%eax \n\t" + "imul _tsx, %%eax \n\t" + "addl %0, %%eax \n\t" + "addl _screen, %%eax \n\t" + "movl %%eax, %%edi \n\t" + "movl $8, %%ecx \n\t" + "movb %2, %%al \n\t" +"lineloop1: \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "addl _sx, %%edi \n\t" + "addl $16, %%edi \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "addl _sx, %%edi \n\t" + "addl $16, %%edi \n\t" + "decl %%ecx \n\t" + "jnz lineloop1 \n\t" + : + : "m" (x), "m" (y), "m" (c) + : "eax","edi","ecx","cc" ); + cpubyte=ETC; + return 0; +} + +int ModeXClearScreen() +{ + cpubyte=RENDER; + memset(screen+(tsx*16)+16,0,(tsx*sy)); + cpubyte=ETC; + return 0; +} + +int ModeXPutPixel(int x, int y, int color) +{ + cpubyte=RENDER; + + if (xcx2 || y>cy2) + { + cpubyte=ETC; + return 0; + } + + x+=16; + y+=16; + + screen[(y*tsx)+x]=color; + + cpubyte=ETC; + return 0; +} + +int ModeXGetPixel(int x, int y) +{ + cpubyte=RENDER; + + if (xcx2 || y>cy2) + { + cpubyte=ETC; + return 0; + } + + x+=16; + y+=16; + + cpubyte=ETC; + return screen[(y*tsx)+x]; +} + +int ModeXHLine(int x, int y, int x2, int color) +{ byte *d; + int width; + + cpubyte=RENDER; + + // swap? + if (x2cx2 || y>cy2 || x+width cx2) width=cx2-x+1; + if (xcx2 || y>cy2 || x cy2) height=cy2-y+1; + if (ycx2 && x2>cx2) + || (y1cy2 && y2>cy2)) + { + cpubyte=ETC; + return 0; + } + + if (x1>x2) + { + i=x1; x1=x2; x2=i; + i=y1; y1=y2; y2=i; + } + + // clip the left side + if (x1cx2) + { int myy=(y2-y1); + int mxx=(x2-x1),b; + if (!mxx) + { + cpubyte=ETC; + return 0; + } + if (myy) + { + b=y1-(y2-y1)*x1/mxx; + y2=myy*cx2/mxx+b; + x2=cx2; + } + else x2=cx2; + } + + if (y1>y2) + { + i=x1; x1=x2; x2=i; + i=y1; y1=y2; y2=i; + } + + // clip the bottom + if (y2>cy2) + { int mxx=(x2-x1); + int myy=(y2-y1),b; + if (!myy) + { + cpubyte=ETC; + return 0; + } + if (mxx) + { + b=y1-(y2-y1)*x1/mxx; + x2=(cy2-b)*mxx/myy; + y2=cy2; + } + else y2=cy2; + } + + // clip the top + if (y1cx2 || x2>cx2 || y1cy2 || y2>cy2) + { + cpubyte=ETC; + return 0; + } + + if (x1>x2) + { xc=x2; xi=x1; } + else { xi=x2; xc=x1; } + + x1+=16;y1+=16; // aen; adjust these here?? + x2+=16;y2+=16; + + // assume y1<=y2 from above swap operation + yi=y2; yc=y1; + + dcx=x1; dcy=y1; + xc=(x2-x1); yc=(y2-y1); + if (xc<0) xi=-1; else xi=1; + if (yc<0) yi=-1; else yi=1; + n=abs(xc); m=abs(yc); + ycyi=abs(2*yc*xi); + er=0; + + if (n>m) + { + xcxi=abs(2*xc*xi); + for (i=0;i<=n;i++) + { + screen[(dcy*tsx)+dcx]=color; + if (er>0) + { dcy+=yi; + er-=xcxi; + } + er+=ycyi; + dcx+=xi; + } + } + else + { + xcyi=abs(2*xc*yi); + for (i=0;i<=m;i++) + { + screen[(dcy*tsx)+dcx]=color; + if (er>0) + { dcx+=xi; + er-=ycyi; + } + er+=xcyi; + dcy+=yi; + } + } + + cpubyte=ETC; + return 0; +} + +int ModeXCircle(int x, int y, int radius, int color) +{ int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + + do { + ModeXPutPixel(x+cx,y+cy,color); + if (cx) ModeXPutPixel(x-cx,y+cy,color); + if (cy) ModeXPutPixel(x+cx,y-cy,color); + if ((cx) && (cy)) ModeXPutPixel(x-cx,y-cy,color); + + if (cx != cy) + { + ModeXPutPixel(x+cy,y+cx,color); + if (cx) ModeXPutPixel(x+cy,y-cx,color); + if (cy) ModeXPutPixel(x-cy,y+cx,color); + if (cx && cy) ModeXPutPixel(x-cy,y-cx,color); + } + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + + cx++; + + } while (cx <= cy); + + cpubyte=ETC; + return 0; +} + +int ModeXCircleFill(int x, int y, int radius, int color) +{ int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + + do { + ModeXHLine(x-cy,y-cx,x+cy,color); + if (cx) ModeXHLine(x-cy,y+cx,x+cy,color); + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + if (cx != cy) + { + ModeXHLine(x-cx,y-cy,x+cx,color); + if (cy) ModeXHLine(x-cx,y+cy,x+cx,color); + } + + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + + cx++; + + } while (cx <= cy); + + cpubyte=ETC; + return 0; +} + +int ModeXRect(int x, int y, int x2, int y2, int color) +{ + ModeXHLine(x,y,x2,color); + ModeXHLine(x,y2,x2,color); + ModeXVLine(x,y+1,y2-1,color); + ModeXVLine(x2,y+1,y2-1,color); + return 0; +} + +int ModeXRectFill(int x, int y, int x2, int y2, int color) +{ + cpubyte=RENDER; + + if (y20 true */ + +#else + +typedef char SBYTE; /* has to be 1 byte signed */ +typedef unsigned char UBYTE; /* has to be 1 byte unsigned */ +typedef short SWORD; /* has to be 2 bytes signed */ +typedef unsigned short UWORD; /* has to be 2 bytes unsigned */ +typedef long SLONG; /* has to be 4 bytes signed */ +typedef unsigned long ULONG; /* has to be 4 bytes unsigned */ +typedef int BOOL; /* doesn't matter.. 0=FALSE, <>0 true */ + +#endif + + +#ifdef __OS2__ +#define INCL_DOS +#define INCL_MCIOS2 +#define INCL_MMIOOS2 +#include +#include +#include +#endif + + +#ifdef __WATCOMC__ +#define inportb(x) inp(x) +#define outportb(x,y) outp(x,y) +#define inport(x) inpw(x) +#define outport(x,y) outpw(x,y) +#define disable() _disable() +#define enable() _enable() +#endif + + +#ifdef __DJGPP__ +#include +#include +#include +#define inp inportw +#define outport outportw +#define inport inportw +#define interrupt +#endif + +#endif diff --git a/16/v2/source/ENGINE/PCX.H b/16/v2/source/ENGINE/PCX.H new file mode 100644 index 00000000..844e5c7a --- /dev/null +++ b/16/v2/source/ENGINE/PCX.H @@ -0,0 +1,32 @@ +/* +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. +*/ + +#ifndef PCX_H +#define PCX_H + +// -- globals -- + +extern word width,depth; + +// -- prototypes -- + +extern void ReadPCXLine(byte *dest); +extern void LoadPCXHeader(char *fname); +extern void LoadPCXHeaderNP(char *fname); +extern void LoadPCX(char *fname, byte *dest); +extern byte *LoadPCXBuf(char *fname); + +#endif // PCX_H diff --git a/16/v2/source/ENGINE/RENDER.C b/16/v2/source/ENGINE/RENDER.C new file mode 100644 index 00000000..31151541 --- /dev/null +++ b/16/v2/source/ENGINE/RENDER.C @@ -0,0 +1,291 @@ +/* +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. +*/ + +#include "verge.h" +#include + +// ================================= Data ==================================== + +int oxw, oyw; +int xofs, yofs; +int xtc, ytc; + +byte curlayer, animate=0; +byte cameratracking=1, tracker=0; +byte showobs=0, showzone=0; + +// ================================= Code ==================================== + +void BlitBackLayer(byte l) +{ + int i,j,c; + byte *img; + + if (!layertoggle[l]) return; + + // Adjust view + + oxw=xwin*layer[l].pmultx/layer[l].pdivx; + oyw=ywin*layer[l].pmulty/layer[l].pdivy; + xofs=-(oxw&15); //(16-(oxw&15)); + yofs=-(oyw&15); //(16-(oyw&15)); + xtc=oxw>>4; + ytc=oyw>>4; + + // Draw it, bitch! + + for (i=0; i>4; + ytc=oyw>>4; + + // Draw it, bitch! + + for (i=0; i>4; + ytc=oyw>>4; + + // Draw it, bitch! + + for (i=0; i>4; + ytc=oyw>>4; + + for (i=0; ix+7)/16)==(xtc+j) && ((player->y+7)/16)==(ytc+i)) + { + ColorField((j*16)+xofs,(i*16)+yofs,31); + } + } + } +} + +void HookScriptThing(char *src) +{ + char mystr[10]; + + src++; + strcpy(mystr, src); + src=mystr; + while (*src != 'X') src++; + *src=0; + ExecuteEvent(atoi(mystr)); +} + +void RenderMAP() +{ char *src; + + curlayer=0; + src=rstring; + while (*src) + { + switch (*src) + { + case '1': BlitLayer(0); break; + case '2': BlitLayer(1); break; + case '3': BlitLayer(2); break; + case '4': BlitLayer(3); break; + case '5': BlitLayer(4); break; + case '6': BlitLayer(5); break; + case 'E': RenderEntities(); break; + case 'S': HookScriptThing(src); break; + case 'R': HookRetrace(); + curlayer++; break; + } + src++; + } + if (!curlayer) ClearScreen(); + if (showobs) DrawObstructions(); + if (showzone) DrawZones(); +} + +void Render() +{ + if (cameratracking==1 && player) + { + if (player->x+8>(sx/2)) xwin=(player->x+8-(sx/2)); else xwin=0; + if (player->y+8>(sy/2)) ywin=(player->y+8-(sy/2)); else ywin=0; + if (xwin>((layer[0].sizex*16)-sx)) xwin=((layer[0].sizex*16)-sx); + if (ywin>((layer[0].sizey*16)-sy)) ywin=((layer[0].sizey*16)-sy); + } + if (cameratracking==2) + { + if (entity[tracker].x+8>(sx/2)) xwin=(entity[tracker].x+8-(sx/2)); else xwin=0; + if (entity[tracker].y+8>(sy/2)) ywin=(entity[tracker].y+8-(sy/2)); else ywin=0; + if (xwin>((layer[0].sizex*16)-sx)) xwin=((layer[0].sizex*16)-sx); + if (ywin>((layer[0].sizey*16)-sy)) ywin=((layer[0].sizey*16)-sy); + } + SiftEntities(); + RenderMAP(); +} + +int rnd(int lo, int hi) +{ + int range=hi-lo+1; + int i=rand() % range; + return i+lo; +} + +void AnimateTile(byte i, int l) +{ + switch (vspanim[i].mode) + { + case 0: if (tileidx[l]vspanim[i].start) tileidx[l]--; + else tileidx[l]=vspanim[i].finish; + break; + case 2: tileidx[l]=rnd(vspanim[i].start,vspanim[i].finish); + break; + case 3: if (flipped[l]) + { + if (tileidx[l]!=vspanim[i].start) tileidx[l]--; + else { tileidx[l]++; flipped[l]=0; } + } + else + { + if (tileidx[l]!=vspanim[i].finish) tileidx[l]++; + else { tileidx[l]--; flipped[l]=1; } + } + } +} + +void Animate(byte i) +{ static int l; + + vadelay[i]=0; + for (l=vspanim[i].start; l<=vspanim[i].finish; l++) + AnimateTile(i,l); +} + +void CheckTileAnimation() +{ static byte i; + + if (!animate) return; + if (!vsp) return; + for (i=0; i<100; i++) + { + if ((vspanim[i].delay) && (vspanim[i].delaynumchn+2; + mp_loop=1; mp_volume=100; + MD_PlayStart(); + PlaySound(0, 0, 0); + PlaySound(0, 0, 0); +} + +void StopMusic() +{ + if (MP_Ready()) return; + MD_PlayStop(); + ML_Free(mf); +} + +int CacheSound(char *fname) +{ + if (!(sfx[nsfx]=MW_LoadWavFN(fname))) + err("WAV [%s] load error: %s", fname, myerr); + return nsfx++; +} + +void FreeAllSounds() +{ + int i; + + for (i=0; i= nsfx) return; + switcher ^= 1; + chanl=md_numchn-1-switcher; + MD_VoiceSetVolume(chanl, vol); + MD_VoiceSetPanning(chanl, pan); + MD_VoiceSetFrequency(chanl, sfx[index]->c2spd); + MD_VoicePlay(chanl, sfx[index]->handle, 0, sfx[index]->length, + 0, 0, sfx[index]->flags); +} diff --git a/16/v2/source/ENGINE/SOUND.H b/16/v2/source/ENGINE/SOUND.H new file mode 100644 index 00000000..63c71a04 --- /dev/null +++ b/16/v2/source/ENGINE/SOUND.H @@ -0,0 +1,27 @@ +/* +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. +*/ + +#ifndef SOUND_H +#define SOUND_H + +void InitMusicSystem(); +void PlayMusic(char *); +void StopMusic(); +int CacheSound(char *); +void FreeAllSounds(); +void PlaySound(int, int, int); + +#endif diff --git a/16/v2/source/ENGINE/STARTUP.C b/16/v2/source/ENGINE/STARTUP.C new file mode 100644 index 00000000..87ee07dc --- /dev/null +++ b/16/v2/source/ENGINE/STARTUP.C @@ -0,0 +1,123 @@ +/* +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. +*/ + +#include // va_*() +#include + +#define MAIN_H +#include "verge.h" +extern void vmain(int argc, char *argv[]); +extern void Log(char *message, ...); + +int mx, my, mb; + +// ================================= Code ==================================== + +void err(char *message, ...) +{ + char tempbuf[256]; + va_list lst; + + ShutdownVideo(1); + ShutdownTimer(); + ShutdownKeyboard(); +// CD_Deinit(); + MD_PlayStop(); + MD_Exit(); + + va_start(lst, message); + vsprintf(tempbuf, message, lst); + va_end(lst); + + printf(tempbuf); + fflush(stdout); + + Log("Sys: Exiting with message: %s", tempbuf); + + exit(-1); +} + +int sgn(int x) +{ + if (x>=0) return 1; + return 0; +} + +void ver() +{ char temp[256]; + + Con_NextLine(); + Con_Printf("{|||||||||||||||||}"); + sprintf(temp,"VERGE v.%s Copyright (C)1998 vecna",VERSION); + Con_Printf(temp); + Con_Printf("All rights reserved. DJGPP/DOS build."); + sprintf(strbuf,"Timestamp %s at %s.",__DATE__, __TIME__); + Con_Printf(strbuf); + Con_Printf("Options: -Wall -m486 -O1 -ffast-math"); + Con_Printf("{|||||||||||||||||}"); +} + +void CheckMessages() +{ + // Win95 can bite me. +} + +void InitMouse(int x, int y) +{ REGISTERS r; + + SET_AX(r,7); + SET_CX(r,0); + SET_DX(r,x); + INTERRUPT(0x33, r); + + SET_AX(r,8); + SET_CX(r,0); + SET_DX(r,y); + INTERRUPT(0x33, r); +} + +void ReadMouse() +{ REGISTERS r; + + SET_AX(r,3); + INTERRUPT(0x33, r); + + mx=r.x.cx; + my=r.x.dx; + mb=r.x.bx; +} + +void SetMouse(int x, int y) +{ REGISTERS r; + + SET_AX(r, 4); + SET_CX(r, x); + SET_DX(r, y); + INTERRUPT(0x33, r); +} + +int main(int argc, char *argv[]) +{ + if (argc==1) + { + printf("VERGE v.%s build %s at %s. \n",VERSION,__DATE__,__TIME__); + printf("Copyright (C)1998 vecna \n"); + delay(500); + } + srand(time(NULL)); + vmain(argc, argv); + return 0; +} diff --git a/16/v2/source/ENGINE/TIMER.C b/16/v2/source/ENGINE/TIMER.C new file mode 100644 index 00000000..b0c9274e --- /dev/null +++ b/16/v2/source/ENGINE/TIMER.C @@ -0,0 +1,141 @@ +/* +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 TIMER_H +#include +#include +#include +#include "verge.h" + +#define PIT0 0x40 +#define PIT1 0x41 +#define PIT2 0x42 +#define PITMODE 0x43 +#define PITCONST 1193180L + +#define OCR1 0x20 +#define IMR1 0x21 + +#define OCR2 0xA0 +#define IMR2 0xA1 + +// ================================= Data ==================================== + +int _crt0_startup_flags = _CRT0_FLAG_NEARPTR; +typedef __dpmi_paddr *PVI; +static PVI oldhandler; + +unsigned int systemtime=0, timer_count=0; +int (*callback) (void); + +// ================================= Code ==================================== + +PVI DJSetHandlerFunc(unsigned char irqno, void (*handler)(), int len) +{ + PVI oldvect = (PVI) malloc(sizeof(__dpmi_paddr)); + int vecno=(irqno>7) ? irqno+0x68 : irqno+0x8; + _go32_dpmi_seginfo wrapper; + __dpmi_paddr new; + + wrapper.pm_offset = (long int) handler; + wrapper.pm_selector = _my_cs(); + _go32_dpmi_allocate_iret_wrapper(&wrapper); + new.offset32 = wrapper.pm_offset; + new.selector = wrapper.pm_selector; + __dpmi_get_and_disable_virtual_interrupt_state(); + if (len) _go32_dpmi_lock_code(handler,len); + _go32_dpmi_lock_data(&wrapper,sizeof(_go32_dpmi_seginfo)); + __dpmi_get_protected_mode_interrupt_vector(vecno,oldvect); + __dpmi_set_protected_mode_interrupt_vector(vecno,&new); + __dpmi_get_and_enable_virtual_interrupt_state(); + return oldvect; +} + +void DJSetHandlerAddr(unsigned char irqno, PVI handler) +{ + int vecno=(irqno>7) ? irqno+0x68 : irqno+0x8; + _go32_dpmi_seginfo wrapper; + __dpmi_paddr oldhandler; + + __dpmi_get_and_disable_virtual_interrupt_state(); + __dpmi_get_protected_mode_interrupt_vector(vecno, &oldhandler); + wrapper.pm_offset = oldhandler.offset32; + wrapper.pm_selector = oldhandler.selector; + _go32_dpmi_free_iret_wrapper(&wrapper); + __dpmi_set_protected_mode_interrupt_vector(vecno,handler); + __dpmi_get_and_enable_virtual_interrupt_state(); + free(handler); +} + +static void SendEOI (unsigned char irqno) +{ + unsigned char ocr=(irqno>7) ? OCR2 : OCR1; + unsigned char eoi=0x60|(irqno&7); + + outportb(ocr,eoi); + if (irqno>7) outportb(OCR1,0x20); +} + +static void newhandler(void) +{ + systemtime++; + timer_count++; + if (cpu_watch) CPUTick(); + if (callback) callback(); + CheckTileAnimation(); + HookTimer(); + MD_Update(); + SendEOI(0); +} + +static void EndNewHandler() { } + +void sethz(unsigned int hz) +{ unsigned int pit0_set, pit0_value; + + disable(); + + outportb(PITMODE, 0x34); + pit0_value=PITCONST / hz; + pit0_set=(pit0_value & 0x00ff); + outportb(PIT0, pit0_set); + pit0_set=(pit0_value >> 8); + outportb(PIT0, pit0_set); + + enable(); +} + +void restorehz() +{ + disable(); + outportb(PITMODE, 0x34); + outportb(PIT0, 0x00); + outportb(PIT0, 0x00); + enable(); +} + +void InitTimer() +{ + oldhandler = DJSetHandlerFunc(0, (void *) newhandler, + ((int) EndNewHandler) - ((int) newhandler)); + sethz(100); +} + +void ShutdownTimer() +{ + DJSetHandlerAddr(0, oldhandler); + restorehz(); +} diff --git a/16/v2/source/ENGINE/TIMER.H b/16/v2/source/ENGINE/TIMER.H new file mode 100644 index 00000000..e195f924 --- /dev/null +++ b/16/v2/source/ENGINE/TIMER.H @@ -0,0 +1,26 @@ +/* +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. +*/ + +#ifndef TIMER_H +#define TIMER_H + +void InitTimer(); +void ShutdownTimer(); + +extern int systemtime, timer_count; +extern int (*callback) (void); + +#endif diff --git a/16/v2/source/ENGINE/VC.C b/16/v2/source/ENGINE/VC.C new file mode 100644 index 00000000..36e86f2c --- /dev/null +++ b/16/v2/source/ENGINE/VC.C @@ -0,0 +1,2242 @@ +/* +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 VC_H +#include +#include "verge.h" +#include "vccode.h" +#include "sincos.h" +#include "mikmod.h" + +#define USERFUNC_MARKER 10000 + +// ================================= Data ==================================== + +char *sysvc, *mapvc, *basevc; // VC pool ptrs +char *code; // VC current instruction pointer (IP) + +int *globalint; // system.vc global int variables +int maxint; // maximum allocated # of ints +char *stringbuf; // vc string workspace +int vcreturn; // return value of last function +char *movescriptbuf; // VC EntityMove buffer +char vctrack=0; // VC call tracking to verge.log + +quad *vcstack; // VC stack (seperate from main stack) +quad *vcsp; // VC stack pointer [esp] + +int mapevents; // number of map events in this VC +char *mapvctbl[1024]; // map VC offset table + +int hookretrace=0; +int hooktimer=0; +int invc=0; + +// ----------------- + +typedef struct +{ + char fname[40]; + char argtype[20]; + int numargs, numlocals; + int returntype; + int syscodeofs; +} funcdecl; + +funcdecl *funcs; +int numfuncs; + +typedef struct +{ + char vname[40]; + int vsofs; + int arraylen; +} strdecl; + +strdecl *str; +int numstr=0; +int stralloc; + +typedef struct +{ + char vname[40]; + int varstartofs; + int arraylen; +} vardecl; + +vardecl *vars; +int numvars; +char kill=0; + +// -- local func vars -- + +typedef struct +{ + int nargs[20]; + char s[2560]; +} lvars; + +//lvars *lvar; +lvars lvar; + +// ============================== Prototypes ================================= + +void ResolveString(char *buffer); +void ExecuteSection(); +void ExecuteEvent(int i); +void ExecuteUserFunc(int i); + +// ================================= Code ==================================== + +int ProcessOperand(); // Mutually dependant functions suck. +int ProcessIfOperand(); // Hell yeah they do, bitch. +void HandleExternFunc(); +void HandleStdLib(); +void ExecuteBlock(); + +void LoadSystemVC() +{ + VFILE *f=0; + int i=0; + + Log("Initializing VC interpreter"); + if (!(f=vopen("system.idx"))) err("Could not open system.idx."); + vread(&numvars, 4, f); + vars=(vardecl *) valloc(numvars*sizeof(vardecl), "LoadSystemVC:vars", OID_VC); + vread(vars, numvars*48, f); + vread(&numfuncs, 4, f); + funcs=(funcdecl *) valloc(numfuncs*sizeof(funcdecl), "LoadSystemVC:funcs", OID_VC); + vread(funcs, numfuncs*76, f); + vread(&numstr, 4, f); + str=(strdecl *) valloc(numstr*sizeof(strdecl), "LoadSystemVC:str", OID_VC); + vread(str, numstr*44, f); + vclose(f); + + if (!(f=vopen("system.vcs"))) err("Could not open system.vcs"); + i=filesize(f); + sysvc=(char *) valloc(i, "LoadSystemVC:sysvc", OID_VC); + vread(&numfuncs, 4, f); + vread(&maxint, 4, f); + vread(&stralloc, 4, f); + + globalint=(int *) valloc(maxint ? maxint*4 : 4, "globalint", OID_VC); + if (stralloc) + { + stringbuf=(char *) valloc((stralloc*256), + "LoadSystemVC:stringbuf", OID_VC); + } + else + { + stringbuf=(char *) valloc(256, + "LoadSystemVC:stringbuf (256)", OID_VC); + } + vread(sysvc, i, f); + vclose(f); + + // Initialize VC stack + vcstack=(quad *) valloc(6000, "vcstack", OID_VC); + vcsp=vcstack; + + movescriptbuf=(char *) valloc(65535, "movescriptbuf", OID_VC); + +Log("system vclib init: %d funcs, %d ints (%d bytes), %d strings (%d bytes)", + numfuncs, numvars, maxint*4, numstr, stralloc*256); +} + +void LoadMapVC(VFILE *f) +{ int codesize=0; + + vread(&mapevents, 4, f); + vread(mapvctbl, 4*mapevents, f); + vread(&codesize, 4, f); + mapvc=(char *) valloc(codesize, "mapvc", OID_VC); + vread(mapvc, codesize, f); +} + +byte GrabC() +{ + return *code++; +} + +word GrabW(void) +{ + word *ptr=(word *) code; + code+=2; + return *ptr; +} + +quad GrabD(void) +{ + quad *ptr=(quad *) code; + code+=4; + return *ptr; +} + +void GrabString(char *str) +{ int i=0; + + i=0; + while (*code) + { + str[i]=*code; + code++; + i++; + } + str[i]=0; + code++; +} + +int ReadInt(char category, int loc, int ofs) +{ + switch (category) + { + case op_UVAR: return globalint[loc]; + case op_UVARRAY: return globalint[loc]; + case op_HVAR0: switch (loc) + { + case 0: return xwin; + case 1: return ywin; + case 2: return cameratracking; + case 3: return timer_count; + case 4: return up; + case 5: return down; + case 6: return left; + case 7: return right; + case 8: return b1; + case 9: return b2; + case 10: return b3; + case 11: return b4; + case 12: return sx; + case 13: return sy; + case 14: return playernum; + case 15: return cc; + case 16: return tracker; + case 17: return mx; + case 18: return my; + case 19: return mb; + case 20: return vctrack; + case 21: return width; + case 22: return depth; + case 23: return mp_volume; + case 24: return (int)vsp; + case 25: return lastent; + case 26: return last_pressed; + } + case op_HVAR1: switch (loc) + { + case 0: return (int) screen[ofs]; + case 1: return entity[ofs].x; + case 2: return entity[ofs].y; + case 3: return entity[ofs].tx; + case 4: return entity[ofs].ty; + case 5: return entity[ofs].facing; + case 6: return entity[ofs].moving; + case 7: return entity[ofs].specframe; + case 8: return entity[ofs].speed; +// case 9: return entity[ofs].movecode; + case 10: return entidx[ofs]; + case 11: return key[ofs]; + case 12: return layer[ofs].hline; + case 13: return (int) (*(byte *)ofs); + case 14: return (int) (*(word *)ofs); + case 15: return (int) (*(quad *)ofs); + case 16: return (int) pal[ofs]; + case 17: return (int) (*(char *)ofs); + case 18: return (int) (*(short*)ofs); + case 19: return (int) (*(int *)ofs); + } + case op_LVAR: return lvar.nargs[loc]; + default: + err("VC Execution error: Invalid ReadInt category %d", (int) category); + } + return 0; +} + +void WriteInt(char category, int loc, int ofs, int value) +{ + switch (category) + { + case op_UVAR: globalint[loc]=value; break; + case op_UVARRAY: globalint[loc]=value; break; + case op_HVAR0: switch (loc) + { + case 0: xwin=value; return; + case 1: ywin=value; return; + case 2: cameratracking=value; return; + case 3: timer_count=value; return; + case 16: tracker=value; return; + case 20: vctrack=value; return; + case 23: mp_volume=value; return; + case 26: last_pressed=value; return; + } + case op_HVAR1: switch (loc) + { + case 0: screen[ofs]=(byte) value; return; + case 1: entity[ofs].x=value; return; + case 2: entity[ofs].y=value; return; + case 3: entity[ofs].tx=value; return; + case 4: entity[ofs].ty=value; return; + case 5: entity[ofs].facing=value; return; + case 6: entity[ofs].moving=value; return; + case 7: entity[ofs].specframe=value; return; + case 8: entity[ofs].speed=value; return; +// case 9: entity[ofs].movecode=value; return; +// case 10: + case 11: key[ofs]=value; return; + case 12: layer[ofs].hline=value; return; + case 13: (*(byte *)ofs)=(byte) value; return; + case 14: (*(word *)ofs)=(word) value; return; + case 15: (*(quad *)ofs)=(quad) value; return; + case 16: pal[ofs]=value; return; + case 17: (*(char *)ofs)=(byte) value; return; + case 18: (*(short*)ofs)=(word) value; return; + case 19: (*(int *)ofs)=(quad) value; return; + } + case op_LVAR: lvar.nargs[loc]=value; return; + default: + err("VC Execution error: Invalid WriteInt category %d", (int) category); + } +} + +int ResolveOperand() +{ + int cr=0; + int d=0; + byte c=0; + + cr=ProcessOperand(); // Get base number + while (1) + { + c=GrabC(); + switch (c) + { + case op_ADD: cr += ProcessOperand(); continue; + case op_SUB: cr -= ProcessOperand(); continue; + case op_DIV: d=ProcessOperand(); + if (!d) cr=0; else cr /= d; continue; + case op_MULT: cr = cr * ProcessOperand(); continue; + case op_MOD: d=ProcessOperand(); + if (!d) cr=0; else cr %= d; continue; + case op_SHL: cr = cr << ProcessOperand(); continue; + case op_SHR: cr = cr >> ProcessOperand(); continue; + case op_AND: cr = cr & ProcessOperand(); continue; + case op_OR: cr = cr | ProcessOperand(); continue; + case op_XOR: cr = cr ^ ProcessOperand(); continue; + case op_END: break; + } + break; + } + return cr; +} + +int ProcessOperand() +{ byte op_desc=0; + byte c=0; + quad d=0; + quad ofs=0; + + op_desc=GrabC(); + switch (op_desc) + { + case op_IMMEDIATE: return GrabD(); + case op_HVAR0: c=GrabC(); return ReadInt(op_HVAR0, c, 0); + case op_HVAR1: c=GrabC(); ofs=ResolveOperand(); return ReadInt(op_HVAR1, c, ofs); + case op_UVAR: d=GrabD(); return ReadInt(op_UVAR, d, 0); + case op_UVARRAY: d=GrabD(); d+=ResolveOperand(); return ReadInt(op_UVARRAY, d, 0); + case op_LVAR: c=GrabC(); return lvar.nargs[c]; + case op_BFUNC: HandleStdLib(); + return vcreturn; + case op_UFUNC: HandleExternFunc(); + return vcreturn; + case op_GROUP: return ResolveOperand(); + default: sprintf(strbuf,"VC Execution error: Invalid operand %d.",op_desc); + err(strbuf); break; + } + return 0; +} + +void HandleStringOperand(char *buffer) +{ + char tbuf[256]; + char *d=0; + word w=0; + int c=0; + int i=0; + int j=0; + int z=0; + + c=GrabC(); + switch (c) + { + case s_IMMEDIATE: GrabString(buffer); break; + case s_GLOBAL: w=GrabW(); + d=(char *) (int) stringbuf + (w*256); + z=strlen(d); + if (strlen(buffer)+z+1>250) + err("Combined string length exceeds 250 char max."); + memcpy(buffer, d, z+1); + break; + case s_ARRAY: w=GrabW(); + w+=ResolveOperand(); + d=(char *) (int) stringbuf + (w*256); + z=strlen(d); + if (strlen(buffer)+z+1>250) + err("Combined string length exceeds 250 char max."); + memcpy(buffer, d, z+1); + break; + case s_NUMSTR: i=ResolveOperand(); + sprintf(buffer,"%d",i); + break; + case s_LEFT: ResolveString(tbuf); + i=ResolveOperand(); + c=i250) + err("Combined string length exceeds 250 char max."); + memcpy(buffer, tbuf, c); + buffer[c]=0; + break; + case s_RIGHT: ResolveString(tbuf); + i=ResolveOperand(); + c=i250) + err("Combined string length exceeds 250 char max."); + memcpy(buffer, tbuf+strlen(tbuf)-c, c); + buffer[c]=0; + break; + case s_MID: ResolveString(tbuf); + i=ResolveOperand(); + j=ResolveOperand(); + i=i250) + err("Combined string length exceeds 250 char max."); + memcpy(buffer, tbuf+i, j); + buffer[j]=0; + break; + case s_CHR: if (strlen(buffer)+2>50) + err("Combined string length exceeds 250 char max."); + buffer[0]=(char) ResolveOperand(); + buffer[1]=0; + break; + case s_LOCAL: c=GrabC(); + d=&lvar.s[c*256]; + z=strlen(d); + if (strlen(buffer)+z+1>250) + err("Combined string length exceeds 250 char max."); + memcpy(buffer, d, z+1); + break; + default: err("Invalid VC string operand %d", (int) c); + } +} + +void ResolveString(char *buffer) +{ char c=0; + + HandleStringOperand(buffer); + while (1) + { + c=GrabC(); + switch (c) + { + case s_ADD: + HandleStringOperand((char *) (int) buffer + strlen(buffer)); break; + case s_END: return; + default: + err("VC execution error: Unknown string operator %d",(int) c); + } + } +} + +void vcpush(quad info) +{ + if (vcsp>=vcstack+1500) err("VC stack overflow."); + *vcsp=info; + vcsp++; +} + +quad vcpop() +{ + if (vcsp==vcstack) err("VC stack underflow."); + vcsp--; + return *vcsp; +} + +void ReadVCVar() +{ int i=0; + int j=0; + + strlwr((char *) args[1]); + for (i=0; i<=numvars; i++) + if (!strcmp(vars[i].vname, (char *) args[1])) break; + if (i1) + j+=atoi((char *) args[2]); + j=globalint[j]; + sprintf(strbuf,"%s:%d",vars[i].vname, j); + Con_Printf(strbuf); + return; + } + for (i=0; i<=numstr; i++) + if (!strcmp(str[i].vname, (char *) args[1])) break; + if (i1) + { + j+=atoi((char *) args[2]); + globalint[j]=atoi((char *) args[3]); + } + else globalint[j]=atoi((char *) args[2]); + sprintf(strbuf,"%s:%d", vars[i].vname, atoi((char *) args[2])); + Con_Printf(strbuf); + return; + } + for (i=0; i<=numstr; i++) + if (!strcmp(str[i].vname, (char *) args[1])) break; + if (i=entities) err("SetPlayer(): Entity index out of range"); + + player=&entity[i]; + playernum=i; + +// entity[i].movecode=0; + entity[i].moving=0; +} + +void vc_Map() +{ + hookretrace=0; + hooktimer=0; + kill=1; + ResolveString(startmap); +} + +void vc_LoadFont() +{ + char vcstr[80]; + + ResolveString(vcstr); + vcreturn=LoadFont(vcstr); +} + +void vc_PlayFLI() +{ + char s[256]; + BITMAP flibuf; + byte *data=0; + VFILE *f=0; + int i=0; + + ResolveString(s); + flibuf.w=sx; + flibuf.h=sy; + flibuf.data=screen; + if (!(f=vopen(s))) err("PlayFLI: Could not open %s.",s); + i=filesize(f); + data=(byte *) malloc(i); + if (!data) err("Not enough memory to play FLI."); + vread(data, i, f); + vclose(f); + play_memory_fli(data, &flibuf, 0, ShowPage); + timer_count=0; + set_intensity(63); +} + +void vc_PrintString() +{ + char s[256]; + int i=0; + + i=ResolveOperand(); + ResolveString(s); + printstring(i,s); +} + +void vc_LoadRaw() +{ + char s[256]; + char *t=0; + VFILE *f=0; + int i=0; + + ResolveString(s); + if (!(f=vopen(s))) err("LoadRaw(): Could not open file %s",s); + i=filesize(f); + t=(char *) valloc(i, "LoadRaw:t", OID_VC); + vread(t, i, f); + vclose(f); + vcreturn=(int) t; +} + +void vc_SetTile() +{ + int x=0; + int y=0; + int layr=0; + int value=0; + + x=ResolveOperand(); + y=ResolveOperand(); + layr=ResolveOperand(); + value=ResolveOperand(); + + switch (layr) + { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: layers[layr][(y*layer[layr].sizex)+x] = (short) value; break; + case 6: obstruct[(y*layer[0].sizex)+x] = (byte) value; break; + case 7: zone[(y*layer[0].sizex)+x] = (byte) value; break; + default: err("SetTile(): Invalid layer value"); + } +} + +void vc_ScaleSprite() +{ + int x,y,iw,ih,dw,dh,image; + + x=ResolveOperand(); + y=ResolveOperand(); + iw=ResolveOperand(); + ih=ResolveOperand(); + dw=ResolveOperand(); + dh=ResolveOperand(); + image=ResolveOperand(); + if (!LucentOn) CopySpriteZoomClip(x,y,iw,ih,dw,dh,(byte *)image); + if ( LucentOn) CopySpriteZoomLucentClip(x,y,iw,ih,dw,dh,(byte *)image); +} + +void vc_EntityMove() +{ + int i; + + i=ResolveOperand(); + entity[i].moving=0; + entity[i].speedct=0; + + entity[i].delayct=0; + entity[i].mode=0; + entity[i].data1=0; + + ResolveString((char *) (int) movescriptbuf + (int) (i*256)); + entity[i].scriptofs=(char *) (int) movescriptbuf + (int) (i*256); + entity[i].movecode=4; +} + +void vc_HLine() +{ + int x, y, x2, c; + + x=ResolveOperand(); + y=ResolveOperand(); + x2=ResolveOperand(); + c=ResolveOperand(); + if (!LucentOn) HLineClip(x,y,x2,c); + if ( LucentOn) HLineLucentClip(x,y,x2,c); + +} + +void vc_VLine() +{ + int x, y, y2, c; + + x=ResolveOperand(); + y=ResolveOperand(); + y2=ResolveOperand(); + c=ResolveOperand(); + if (!LucentOn) VLineClip(x,y,y2,c); + if ( LucentOn) VLineLucentClip(x,y,y2,c); +} + +void vc_Line() +{ + int x, y, x2, y2, c; + + x=ResolveOperand(); + y=ResolveOperand(); + x2=ResolveOperand(); + y2=ResolveOperand(); + c=ResolveOperand(); + if (!LucentOn) LineClip(x,y,x2,y2,c); + if ( LucentOn) LineLucentClip(x,y,x2,y2,c); +} + +void vc_Circle() +{ + int x, y, radius, c; + + x=ResolveOperand(); + y=ResolveOperand(); + radius=ResolveOperand(); + c=ResolveOperand(); + if (!LucentOn) CircleClip(x,y,radius,c); + if ( LucentOn) CircleLucentClip(x,y,radius,c); +} + +void vc_CircleFill() +{ + int x, y, radius, c; + + x=ResolveOperand(); + y=ResolveOperand(); + radius=ResolveOperand(); + c=ResolveOperand(); + if (!LucentOn) CircleFillClip(x,y,radius,c); + if ( LucentOn) CircleFillLucentClip(x,y,radius,c); +} + +void vc_Rect() +{ + int x, y, x2, y2, c; + + x=ResolveOperand(); + y=ResolveOperand(); + x2=ResolveOperand(); + y2=ResolveOperand(); + c=ResolveOperand(); + if (!LucentOn) RectClip(x,y,x2,y2,c); + if ( LucentOn) RectLucentClip(x,y,x2,y2,c); +} + +void vc_RectFill() +{ + int x, y, x2, y2, c; + + x=ResolveOperand(); + y=ResolveOperand(); + x2=ResolveOperand(); + y2=ResolveOperand(); + c=ResolveOperand(); + if (!LucentOn) RectFillClip(x,y,x2,y2,c); + if ( LucentOn) RectFillLucentClip(x,y,x2,y2,c); +} + +void vc_strlen() +{ + char str[256]; + + ResolveString(str); + vcreturn=strlen(str); +} + +void vc_strcmp() +{ + char str1[256], str2[256]; + + ResolveString(str1); + ResolveString(str2); + vcreturn=strcmp(str1, str2); +} + +void vc_FontWidth() +{ + int i; + + i=ResolveOperand(); + if (i>=numfonts) + { + vcreturn=0; + return; + } + vcreturn=font[i].width; +} + +void vc_FontHeight() +{ + int i; + + i=ResolveOperand(); + if (i>=numfonts) + { + vcreturn=0; + return; + } + vcreturn=font[i].height; +} + +void vc_SetPixel() +{ + int x, y, c; + + x=ResolveOperand(); + y=ResolveOperand(); + c=ResolveOperand(); + SetPixelClip(x,y,c); +} + +void vc_GetPixel() +{ + int x, y; + + x=ResolveOperand(); + y=ResolveOperand(); + vcreturn=GetPixelClip(x,y); +} + +void vc_EntityOnScreen() +{ + int i,j; + + i=ResolveOperand(); + for (j=0; j63) r=63; + g=ResolveOperand(); if (g<0) g=0; if (g>63) g=63; + b=ResolveOperand(); if (b<0) b=0; if (b>63) b=63; + percent=100-ResolveOperand(); + intensity=ResolveOperand(); + + for (i=0; i<256; i++) + { + wr=pal[(i*3)]; + wg=pal[(i*3)+1]; + wb=pal[(i*3)+2]; + + wr=((wr*percent)+(r*(100-percent)))/100; + wg=((wg*percent)+(g*(100-percent)))/100; + wb=((wb*percent)+(b*(100-percent)))/100; + + pal2[(i*3)]=wr*intensity/63; + pal2[(i*3)+1]=wg*intensity/63; + pal2[(i*3)+2]=wb*intensity/63; + } + SetPalette(pal2); +} + +void EnforceNoDirectories(char *s) +{ + char y[256], *p; + + strcpy(y, s); + p=(char *) (int) y + (int) strlen(y); + while (p>y && *p != '/' && *p != '\\') + p--; + if (*p == '/' || *p == '\\') p++; + strcpy(s, p); +} + +void vc_OpenFile() +{ + VFILE *f; + char fname[256]; + + ResolveString(fname); + EnforceNoDirectories(fname); + + f=vopen(fname); + vcreturn=(quad) f; + + Log(" --> VC opened file %s, ptr %u", fname, (quad) f); +} + +void vc_CloseFile() +{ + VFILE *f; + + f=(VFILE *) ResolveOperand(); + vclose(f); + + Log(" --> VC closed file at ptr %u", (quad) f); +} + +void vc_QuickRead() +{ + char fname[256], c, *p; + int d=0, l, i; + VFILE *f; + word w=0; + + ResolveString(fname); + EnforceNoDirectories(fname); + c=GrabC(); + if (c==op_STRING) + { + w=GrabW(); + d=0; + } + if (c==op_SARRAY) + { + w=GrabW(); + d=ResolveOperand(); + } + l=ResolveOperand(); + l=l ? l : 1; + if (!(f=vopen(fname))) err("QuickRead() - could not open %s",fname); + + p=(char *) (quad) stringbuf + ((w+d)*256); + for (i=0; i=entities) err("AddFollower(): Not a valid entity index. (%d)",i); + follower[(int)numfollowers]=i; + numfollowers++; +// ResetFollowers(); +} + +void vc_FlatPoly() +{ + int a, b, c, d, e, f, g; + + a=ResolveOperand(); + b=ResolveOperand(); + c=ResolveOperand(); + d=ResolveOperand(); + e=ResolveOperand(); + f=ResolveOperand(); + g=ResolveOperand(); + FlatPoly(a,b,c,d,e,f,g); +} + +void vc_TMapPoly() +{ + int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o; + + a=ResolveOperand(); + b=ResolveOperand(); + c=ResolveOperand(); + d=ResolveOperand(); + e=ResolveOperand(); + f=ResolveOperand(); + g=ResolveOperand(); + h=ResolveOperand(); + i=ResolveOperand(); + j=ResolveOperand(); + k=ResolveOperand(); + l=ResolveOperand(); + m=ResolveOperand(); + n=ResolveOperand(); + o=ResolveOperand(); + TMapPoly(a,b,c,d,e,f,g,h,i,j,k,l,m,n,(char *) o); +} + +void vc_CacheSound() +{ + char fname[256]; + + ResolveString(fname); + vcreturn=CacheSound(fname); + +} + +void vc_PlaySound() +{ + int a, b, c; + + a=ResolveOperand(); + b=ResolveOperand(); + c=ResolveOperand(); + PlaySound(a, b, c); +} + +void vc_RotScale() +{ + int a, b, c, d, e, f, g; + + a=ResolveOperand(); + b=ResolveOperand(); + c=ResolveOperand(); + d=ResolveOperand(); + e=ResolveOperand(); + f=ResolveOperand(); + g=ResolveOperand(); + + RotScale(a, b, c, d, e*3.14159 / 180, (float) f/1000, (byte *) g); +} + +void vc_MapLine() +{ + int x, y, sy, l; + int xtc, ytc, xofs, yofs; + + x=ResolveOperand(); + y=ResolveOperand(); + sy=ResolveOperand(); + l=ResolveOperand(); + + xtc=x >> 4; + ytc=y >> 4; + xofs= -(x&15); + yofs= (y&15); + + MapLine(xofs, sy, yofs, (word *) (layers[l]+((ytc*layer[l].sizex)+xtc))); +} + +void vc_TMapLine() +{ + int x, y, sy, l; + int xtc, ytc, xofs, yofs; + + x=ResolveOperand(); + y=ResolveOperand(); + sy=ResolveOperand(); + l=ResolveOperand(); + + xtc=x >> 4; + ytc=y >> 4; + xofs= -(x&15); + yofs= (y&15); + + TMapLine(xofs, sy, yofs, (word *) (layers[l]+((ytc*layer[l].sizex)+xtc))); +} + +void vc_val() +{ + char s[256]; + + ResolveString(s); + vcreturn=atoi(s); +} + +void vc_TScaleSprite() +{ + int x,y,iw,ih,dw,dh,image; + + x=ResolveOperand(); + y=ResolveOperand(); + iw=ResolveOperand(); + ih=ResolveOperand(); + dw=ResolveOperand(); + dh=ResolveOperand(); + image=ResolveOperand(); + if (!LucentOn) TCopySpriteZoomClip(x,y,iw,ih,dw,dh,(byte *) image); + if ( LucentOn) TCopySpriteZoomLucentClip(x,y,iw,ih,dw,dh,(byte *) image); +} + +void vc_GrabRegion() +{ + int x1, y1, x2, y2; + int i, j, w, h; + char *ptr; + + x1=ResolveOperand(); + y1=ResolveOperand(); + x2=ResolveOperand()+1; + y2=ResolveOperand()+1; + ptr=(char *) ResolveOperand(); + + if (x2>sx-1) x2=sx-1; + if (y2>sy-1) y2=sy-1; + if (x1<0) x1=0; + if (y1<0) y1=0; + + w=x2 - x1; + h=y2 - y1; + + for (j=y1; j VC renamed %s to %s.", s1, s2); +} + +void vc_fdelete() +{ + char s[256]; + + ResolveString(s); + EnforceNoDirectories(s); + remove(s); + + Log(" --> VC deleted %s.", s); +} + +void vc_fwopen() +{ + char s[256]; + + ResolveString(s); + EnforceNoDirectories(s); + vcreturn=(int) fopen(s,"wb"); + + Log(" --> VC opened %s for writing, ptr %u.", s, vcreturn); +} + +void vc_fwclose() +{ + FILE *f; + + f=(FILE *) ResolveOperand(); + fclose(f); + + Log(" --> VC close file opened for writing, ptr %u.", (int) f); +} + +void vc_memcpy() +{ + int a, b, c; + + a=ResolveOperand(); + b=ResolveOperand(); + c=ResolveOperand(); + memcpy((char *) a, (char *) b, c); +} + +void vc_memset() +{ + int a, b, c; + + a=ResolveOperand(); + b=ResolveOperand(); + c=ResolveOperand(); + memset((char *) a, (byte) b, c); +} + +void vc_Silhouette() +{ + int x=ResolveOperand(); + int y=ResolveOperand(); + int w=ResolveOperand(); + int h=ResolveOperand(); + byte *img=(byte *) ResolveOperand(); + byte c=(byte) ResolveOperand(); + + if (ClipOn) + { + LucentOn ? SilhouetteLucentClip(x,y,w,h,c,img) + : SilhouetteClip(x,y,w,h,c,img); + } + else + { + LucentOn ? SilhouetteLucent(x,y,w,h,c,img) + : Silhouette(x,y,w,h,c,img); + } +} + +void vc_SilhouetteScale() +{ + int x=ResolveOperand(); + int y=ResolveOperand(); + int sw=ResolveOperand(); + int sh=ResolveOperand(); + int dw=ResolveOperand(); + int dh=ResolveOperand(); + byte *img=(byte *) ResolveOperand(); + byte c=(byte) ResolveOperand(); + + if (ClipOn) + { + LucentOn ? SilhouetteZoomLucentClip(x,y,sw,sh,dw,dh,c,img) + : SilhouetteZoomClip(x,y,sw,sh,dw,dh,c,img); + } + else + { + LucentOn ? SilhouetteZoomLucent(x,y,sw,sh,dw,dh,c,img) + : SilhouetteZoom(x,y,sw,sh,dw,dh,c,img); + } +} + +void vc_Tint() +{ + int x=ResolveOperand(); + int y=ResolveOperand(); + int w=ResolveOperand(); + int h=ResolveOperand(); + byte *img=(byte *)ResolveOperand(); + byte c=(byte)ResolveOperand(); + + ClipOn ? TintClip(x,y,w,h,c,img) + : Tint(x,y,w,h,c,img); +} + +void vc_TintScale() +{ + int x=ResolveOperand(); + int y=ResolveOperand(); + int sw=ResolveOperand(); + int sh=ResolveOperand(); + int dw=ResolveOperand(); + int dh=ResolveOperand(); + byte *img=(byte *) ResolveOperand(); + byte c=(byte) ResolveOperand(); + + ClipOn ? TintZoomClip(x,y,sw,sh,dw,dh,c,img) + : TintZoom(x,y,sw,sh,dw,dh,c,img); +} + +void vc_Mosaic() +{ + int a,b,c,d,e,f,g; + + a=ResolveOperand(); + b=ResolveOperand(); + c=ResolveOperand(); + d=ResolveOperand(); + e=ResolveOperand(); + f=ResolveOperand(); + g=ResolveOperand(); + Mosaic(a,b,(byte *) c,d,e,f,g); +} + +void vc_WriteVars() +{ + FILE *f; + + f=(FILE *) ResolveOperand(); + fwrite(globalint, 4, maxint, f); + fwrite(stringbuf, 256, stralloc, f); +} + +void vc_ReadVars() +{ + VFILE *f; + + f=(VFILE *) ResolveOperand(); + vread(globalint, 4*maxint, f); + vread(stringbuf, 256*stralloc, f); +} + +void vc_Asc() +{ + char s[256]; + + ResolveString(s); + vcreturn=(int) s[0]; +} + +void vc_NumForScript() +{ + vcreturn=GrabD(); +} + +void vc_Filesize() +{ + char s[256]; + VFILE *f; + + ResolveString(s); + f=vopen(s); + vcreturn=filesize(f); + vclose(f); +} + +void vc_FTell() +{ + VFILE *f=(VFILE *)ResolveOperand(); + vcreturn=vtell(f); +} + +void vc_CheckCorrupt() +{ + Log("checking for corruption..."); + CheckCorruption(); +} + +void HandleStdLib() +{ + int x=0; + byte c=0; + + c=GrabC(); + switch (c) + { + case 1: vc_Exit_(); break; + case 2: vc_Message(); break; + case 3: vc_Malloc(); break; + case 4: vc_Free(); break; + case 5: vc_pow(); break; + case 6: vc_loadimage(); break; + case 7: vc_copysprite(); break; + case 8: vc_tcopysprite(); break; + case 9: Render(); break; + case 10: ShowPage(); break; + case 11: vc_EntitySpawn(); break; + case 12: vc_SetPlayer(); break; + case 13: vc_Map(); break; + case 14: vc_LoadFont(); break; + case 15: vc_PlayFLI(); break; + case 16: curx=ResolveOperand(); cury=ResolveOperand(); break; + case 17: vc_PrintString(); break; + case 18: vc_LoadRaw(); break; + case 19: vc_SetTile(); break; + case 20: allowconsole=ResolveOperand(); break; + case 21: vc_ScaleSprite(); break; + case 22: ProcessEntities(); break; + case 23: UpdateControls(); break; + case 24: UnPress(ResolveOperand()); break; + case 25: vc_EntityMove(); break; + case 26: vc_HLine(); break; + case 27: vc_VLine(); break; + case 28: vc_Line(); break; + case 29: vc_Circle(); break; + case 30: vc_CircleFill(); break; + case 31: vc_Rect(); break; + case 32: vc_RectFill(); break; + case 33: vc_strlen(); break; + case 34: vc_strcmp(); break; + case 35: break; //CD_Stop(); break; + case 36: ResolveOperand(); break; //CD_Play(ResolveOperand()); break; + case 37: vc_FontWidth(); break; + case 38: vc_FontHeight(); break; + case 39: vc_SetPixel(); break; + case 40: vc_GetPixel(); break; + case 41: vc_EntityOnScreen(); break; + case 42: vcreturn=0; + if ((x=ResolveOperand())) + vcreturn=rand()%x; + break; + case 43: vc_GetTile(); break; + case 44: vc_HookRetrace(); break; + case 45: vc_HookTimer(); break; + case 46: vc_SetResolution(); break; + case 47: vc_SetRString(); break; + case 48: vc_SetClipRect(); break; + case 49: vc_SetRenderDest(); break; + case 50: vc_RestoreRenderSettings(); break; + case 51: vc_PartyMove(); break; + case 52: vcreturn=sintbl[ResolveOperand()]; break; + case 53: vcreturn=costbl[ResolveOperand()]; break; + case 54: vcreturn=tantbl[ResolveOperand()]; break; + case 55: ReadMouse(); break; + case 56: ClipOn=ResolveOperand(); break; + case 57: LucentOn=ResolveOperand(); break; + case 58: vc_WrapBlit(); break; + case 59: vc_TWrapBlit(); break; + case 60: vc_SetMousePos(); break; + case 61: vc_HookKey(); break; + case 62: vc_PlayMusic(); break; + case 63: StopMusic(); break; + case 64: vc_PaletteMorph(); break; + case 65: vc_OpenFile(); break; + case 66: vc_CloseFile(); break; + case 67: vc_QuickRead(); break; + case 68: vc_AddFollower(); break; +// case 69: vc_KillFollower(); break; +// case 70: vc_KillAllFollowers(); break; +// case 71: ResetFollowers(); + case 72: vc_FlatPoly(); break; + case 73: vc_TMapPoly(); break; + case 74: vc_CacheSound(); break; + case 75: FreeAllSounds(); break; + case 76: vc_PlaySound(); break; + case 77: vc_RotScale(); break; + case 78: vc_MapLine(); break; + case 79: vc_TMapLine(); break; + case 80: vc_val(); break; + case 81: vc_TScaleSprite(); break; + case 82: vc_GrabRegion(); break; + case 83: vc_Log(); break; + case 84: vc_fseekline(); break; + case 85: vc_fseekpos(); break; + case 86: vc_fread(); break; + case 87: vc_fgetbyte(); break; + case 88: vc_fgetword(); break; + case 89: vc_fgetquad(); break; + case 90: vc_fgetline(); break; + case 91: vc_fgettoken(); break; + case 92: vc_fwritestring(); break; + case 93: vc_fwrite(); break; + case 94: vc_frename(); break; + case 95: vc_fdelete(); break; + case 96: vc_fwopen(); break; + case 97: vc_fwclose(); break; + case 98: vc_memcpy(); break; + case 99: vc_memset(); break; + case 100: vc_Silhouette(); break; + case 101: vcreturn=(int) InitMosaicTable(); break; + case 102: vc_Mosaic(); break; + case 103: vc_WriteVars(); break; + case 104: vc_ReadVars(); break; + case 105: ExecuteEvent(ResolveOperand()); break; + case 106: vc_Asc(); break; + case 107: ExecuteUserFunc(ResolveOperand()); break; + case 108: vc_NumForScript(); break; + case 109: vc_Filesize(); break; + case 110: vc_FTell(); break; + case 111: vc_CheckCorrupt(); break; + default: err("VC Execution error: Invalid STDLIB index. (%d)",(int) c); + } +} + +// ========================== VC Interpretation Core ========================== + +int ProcessIf() +{ + byte exec, c; + + exec=ProcessIfOperand(); // Get base value; + + while (1) + { + c=GrabC(); + switch (c) + { + case i_AND: exec=exec & ProcessIfOperand(); continue; + case i_OR: exec=exec | ProcessIfOperand(); continue; + case i_UNGROUP: break; + } + break; + } + return exec; +} + +int ProcessIfOperand() +{ + byte op_desc; + int eval; + + eval=ResolveOperand(); + op_desc=GrabC(); + switch (op_desc) + { + case i_ZERO: if (!eval) return 1; else return 0; + case i_NONZERO: if (eval) return 1; else return 0; + case i_EQUALTO: if (eval == ResolveOperand()) return 1; else return 0; + case i_NOTEQUAL: if (eval != ResolveOperand()) return 1; else return 0; + case i_GREATERTHAN: if (eval > ResolveOperand()) return 1; else return 0; + case i_GREATERTHANOREQUAL: if (eval >= ResolveOperand()) return 1; else return 0; + case i_LESSTHAN: if (eval < ResolveOperand()) return 1; else return 0; + case i_LESSTHANOREQUAL: if (eval <= ResolveOperand()) return 1; else return 0; + case i_GROUP: if (ProcessIf()) return 1; else return 0; + } + return 0; +} + +void HandleIf() +{ + char *d; + + if (ProcessIf()) + { + GrabD(); + return; + } + d=(char *) GrabD(); + code=(char *) (int) basevc + (int) d; + + return; +} + +void HandleExternFunc() +{ + word i, j, k; + //lvars *ob = NULL; + //lvars *save = NULL; + lvars temp; + lvars ob; + + // save lvar + memcpy(&temp, &lvar, sizeof(lvars)); + + memset(&ob, 0, sizeof(lvars)); + //ob = (lvars *)valloc(sizeof(lvars)); //2640); //sizeof(lvars)); //2640); + //MSS_CHECK_POINTER_VALIDITY(ob); + //MSS_SET_BLOCK_LABEL(ob, "ob"); + + k = 0; + i = GrabW(); + for (j=0; j Entering user func %s, codeofs %d", + funcs[i].fname, funcs[i].syscodeofs); + } + + ExecuteBlock(); + basevc = (char *)vcpop(); + + // restore lvar + memcpy(&lvar, &temp, sizeof(lvars)); + //memcpy(lvar, &temp, sizeof(lvars)); + //vfree(lvar); + //lvar = ob; + + if (vctrack) + { + Log(" --> Returned from %s", funcs[i].fname); + } + +// MSS_CHECK_ALL_BLOCKS; +} + +void HandleAssign() +{ + byte c, d; + word w; + quad location=0, value, ofs=0; + + c=GrabC(); + if (c==op_STRING) + { + w=GrabW(); + c=GrabC(); + if (c!=a_SET) err("VC execution error: Corrupt string assignment"); + location=(quad) stringbuf + (w*256); + ResolveString((char *) location); + return; + } + if (c==op_SARRAY) + { + w=GrabW(); + w+=ResolveOperand(); + c=GrabC(); + if (c!=a_SET) err("VC execution error: Corrupt string assignment"); + location=(quad) stringbuf + (w*256); + ResolveString((char *) location); + return; + } + if (c==op_SLOCAL) + { + w=GrabW(); + c=GrabC(); + if (c!=a_SET) err("VC execution error: Corrupt string assignment"); + location=(quad) &lvar.s[w*256]; + ResolveString((char *) location); + return; + } + switch (c) + { + case op_UVAR: location=GrabD(); break; + case op_UVARRAY: location=GrabD(); location+=ResolveOperand(); break; + case op_HVAR0: location=(int) GrabC(); break; + case op_HVAR1: location=(int) GrabC(); ofs=ResolveOperand(); break; + case op_LVAR: location=(int) GrabC(); break; + default: err("VC Execution error: Unknown assignment category."); + } + value=ReadInt(c, location, ofs); + d=GrabC(); + switch(d) + { + case a_SET: value=ResolveOperand(); break; + case a_INC: value++; break; + case a_DEC: value--; break; + case a_INCSET: value+=ResolveOperand(); break; + case a_DECSET: value-=ResolveOperand(); break; + default: + err("VC Execution error: Invalid assignment operator %d.", (int) d); + } + WriteInt(c, location, ofs, value); +} + +void HandleSwitch() +{ + int realvalue=0; + int compvalue=0; + byte c=0; + byte *next=0; + + realvalue=ResolveOperand(); + c=GrabC(); + while (c!=opRETURN) + { + compvalue=ResolveOperand(); + next=(byte *) GrabD(); + if (compvalue!=realvalue) + { + code=(char *) (int) basevc+(int) next; + c=GrabC(); + continue; + } + ExecuteSection(); + c=GrabC(); + } +} + +void ExecuteVC() +{ + byte c=0; + + while (1) + { + if (kill) break; + c=GrabC(); + switch (c) + { + case opEXEC_STDLIB: HandleStdLib(); break; + case opEXEC_LOCALFUNC: break; + case opEXEC_EXTERNFUNC: HandleExternFunc(); break; + case opIF: HandleIf(); break; + case opELSE: break; + case opGOTO: code=basevc+GrabD(); break; + case opSWITCH: HandleSwitch(); break; + case opASSIGN: HandleAssign(); break; + case opRETURN: code=(char *) vcpop(); break; + case opSETRETVAL: vcreturn=ResolveOperand(); break; + default: + err("Internal VC execution error. (%d)",(int) code - (int) basevc); + } + if ((int) code != -1) continue; else break; + } +} + +void ExecuteBlock() +{ + byte c=0; + + while (1) + { + if (kill) break; + c=GrabC(); + switch (c) + { + case opEXEC_STDLIB: HandleStdLib(); break; + case opEXEC_LOCALFUNC: break; + case opEXEC_EXTERNFUNC: HandleExternFunc(); break; + case opIF: HandleIf(); break; + case opELSE: break; + case opGOTO: code=basevc+GrabD(); break; + case opSWITCH: HandleSwitch(); break; + case opASSIGN: HandleAssign(); break; + case opRETURN: code=(char *) vcpop(); break; + case opSETRETVAL: vcreturn=ResolveOperand(); break; + default: + err("Internal VC execution error. (%d)",(int) code - (int) basevc); + } + if (c != opRETURN) continue; else break; + } +} + +void ExecuteSection() +{ + byte c=0; + + while (1) + { + if (kill) break; + c=GrabC(); + switch (c) + { + case opEXEC_STDLIB: HandleStdLib(); break; + case opEXEC_LOCALFUNC: break; + case opEXEC_EXTERNFUNC: HandleExternFunc(); break; + case opIF: HandleIf(); break; + case opELSE: break; + case opGOTO: code=basevc+GrabD(); break; + case opSWITCH: HandleSwitch(); break; + case opASSIGN: HandleAssign(); break; + case opRETURN: break; + case opSETRETVAL: vcreturn=ResolveOperand(); break; + default: + err("Internal VC execution error. (%d)", (int) code - (int) basevc); + } + if (c != opRETURN) continue; else break; + } +} + +void ExecuteEvent(int i) +{ + invc++; + vcpush((quad) code); + vcpush((quad) basevc); + if (i>mapevents) err("VC event out of bounds (%d)",i); + basevc=mapvc; + code=(char *) (int) mapvc + (int) mapvctbl[i]; + vcpush(-1); + ExecuteVC(); + basevc=(char *) vcpop(); + code=(char *) vcpop(); + invc--; +} + +void ExecuteUserFunc(int i) +{ + //lvars *ob=0; + lvars temp; + + // save lvar + memcpy(&temp, &lvar, sizeof(lvars)); + + vcpush((quad) code); + vcpush((quad) basevc); + + if (i > numfuncs) + err("VC event out of bounds"); + + basevc = sysvc; + code = (char *)(sysvc + funcs[i].syscodeofs); + + vcpush(-1); + + memset(&lvar, 0, sizeof(lvar)); + //ob = lvar; + //lvar = (lvars *)valloc(sizeof(lvars)); //2640); + //MSS_SET_BLOCK_LABEL(lvar, "lvar"); + + ExecuteVC(); + basevc = (char *) vcpop(); + code = (char *) vcpop(); + + //free(lvar); + //lvar = ob; + + // restore lvar + memcpy(&lvar, &temp, sizeof(lvars)); +} + +void HookRetrace() +{ + if (!hookretrace) return; + if (hookretrace=USERFUNC_MARKER) ExecuteUserFunc(hookretrace-USERFUNC_MARKER); +} + +void HookTimer() +{ + if (!hooktimer) return; + if (hooktimer=USERFUNC_MARKER) ExecuteUserFunc(hooktimer-USERFUNC_MARKER); +} + +void HookKey(int script) +{ + if (!script) return; + if (script=USERFUNC_MARKER) ExecuteUserFunc(script-USERFUNC_MARKER); +} diff --git a/16/v2/source/ENGINE/VC.H b/16/v2/source/ENGINE/VC.H new file mode 100644 index 00000000..00906ceb --- /dev/null +++ b/16/v2/source/ENGINE/VC.H @@ -0,0 +1,56 @@ +/* +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. +*/ + +#ifndef VC_H +#define VC_H + +typedef struct +{ + char fname[40]; + char argtype[12]; + int numargs; + int returntype; + int syscodeofs; +} funcdecl; + +extern funcdecl funcs[100]; +extern int numfuncs, mapevents; +extern int hookretrace, hooktimer; + +typedef struct +{ + char vname[40]; + int varstartofs; + int arraylen; +} vardecl; + +extern vardecl vars[100]; +extern int numvars, invc; +extern char *mapvc, kill; +extern char *vcsp, *vcstack; + +void LoadSystemVC(); +void LoadMapVC(VFILE *f); +void ReadVCVar(); +void WriteVCVar(); +void ExecuteEvent(int); +void ExecuteUserFunc(int); + +void HookRetrace(); +void HookTimer(); +void HookKey(int script); + +#endif diff --git a/16/v2/source/ENGINE/VCCODE.H b/16/v2/source/ENGINE/VCCODE.H new file mode 100644 index 00000000..74495139 --- /dev/null +++ b/16/v2/source/ENGINE/VCCODE.H @@ -0,0 +1,111 @@ +/* +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. +*/ + +// We never use zero as a tag. This makes it easier to track down misbehaving +// VC code, since zero is commonly come-by when going off into uncharted +// depths of memory. + +#define ERROR 0 + +// Opcode values. + +#define opEXEC_STDLIB 1 +#define opEXEC_LOCALFUNC 2 +#define opEXEC_EXTERNFUNC 3 +#define opIF 4 +#define opELSE 5 +#define opGOTO 6 +#define opSWITCH 7 +#define opCASE 8 +#define opRETURN 9 +#define opASSIGN 10 +#define opSETRETVAL 11 +#define opSETLOCALSTACK 12 + +// Operand types. + +#define op_IMMEDIATE 1 +#define op_HVAR0 2 +#define op_HVAR1 3 +#define op_UVAR 4 +#define op_UVARRAY 5 +#define op_LVAR 6 +#define op_BFUNC 7 +#define op_UFUNC 8 +#define op_GROUP 9 +#define op_STRING 10 +#define op_SARRAY 11 +#define op_SLOCAL 12 + +// Variable types. + +#define v_IMMEDIATE 1 // is this necessary? +#define v_CHAR 2 +#define v_PTR 3 +#define v_INT 4 + +// IF relational operators. + +#define i_ZERO 1 +#define i_NONZERO 2 +#define i_EQUALTO 3 +#define i_NOTEQUAL 4 +#define i_GREATERTHAN 5 +#define i_LESSTHAN 6 +#define i_GREATERTHANOREQUAL 7 +#define i_LESSTHANOREQUAL 8 +#define i_GROUP 9 +#define i_UNGROUP 10 +#define i_AND 11 +#define i_OR 12 + +// Assignment operators. + +#define a_SET 1 +#define a_INC 2 +#define a_DEC 3 +#define a_INCSET 4 +#define a_DECSET 5 +#define a_MULTSET 6 +#define a_DIVSET 7 + +// Operand combination operators. + +#define op_ADD 1 +#define op_SUB 2 +#define op_MULT 3 +#define op_DIV 4 +#define op_MOD 5 +#define op_SHL 6 +#define op_SHR 7 +#define op_AND 8 +#define op_OR 9 +#define op_XOR 10 +#define op_END 11 + +// String components + +#define s_IMMEDIATE 1 +#define s_GLOBAL 2 +#define s_ARRAY 3 +#define s_NUMSTR 4 +#define s_LEFT 5 +#define s_RIGHT 6 +#define s_MID 7 +#define s_LOCAL 8 +#define s_ADD 9 +#define s_CHR 10 +#define s_END 11 diff --git a/16/v2/source/ENGINE/VDRIVER.C b/16/v2/source/ENGINE/VDRIVER.C new file mode 100644 index 00000000..69008c64 --- /dev/null +++ b/16/v2/source/ENGINE/VDRIVER.C @@ -0,0 +1,2814 @@ +/* +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 VDRIVER_H + +#include +#include +#include +#include +#include "verge.h" + +#define SWAP(a,b) { a-=b; b+=a; a=b-a; } + +// ================================= Data ==================================== + +char *DriverDesc; + +byte *screen,*video,*vscreen; +byte pal[768], pal2[768]; +byte *translucency_table; + +int sx, sy; +int tx, ty; +int tsx, tsy; +int cx1=0,cy1=0,cx2=319,cy2=199; + +// Driver function-pointers. +int (*ShutdownVideo) (int i); +int (*ShowPage) (void); + +// ================================= Code ==================================== + +void SetPalette(byte *pall) +{ quad i; + + outp(0x03c8, 0); + for (i=0; i<768; i++) + outp(0x03c9, pall[i]); +} + +void GetPalette() +{ quad i; + + outp(0x03c7, 0); + for (i=0; i<768; i++) + pal[i]=inp(0x03c9); +} + +void set_intensity(quad n) +{ quad i; + + for (i=0; i<768; i++) + pal2[i] = (pal[i] * n) >> 6; + + SetPalette(pal2); +} + +int LFB_ShowPage(void) +{ + if (key[SCAN_ALT] && key[SCAN_X]) err("Exiting: ALT-X pressed."); + RenderGUI(); + cpubyte=PFLIP; + memcpy(video,screen,sx*sy); + cpubyte=ETC; + return 0; +} + +void CopySprite(int x, int y, int width, int height, byte *src) +{ + byte *d; + + cpubyte=RENDER; + d=screen+(y*sx)+x; + for (; height; height--) + { + memcpy(d,src,width); + src+=width; + d+=sx; + } + cpubyte=ETC; +} + +void TCopySprite(int x, int y, int width, int height, byte *src) +{ + byte *d, c; + + cpubyte=RENDER; + d=screen+(y*sx)+x; + for (; height; height--) + { + for (x=0; x>16)]; + xerr+=xadj; + } + d+=sx; + yerr+=yadj; + src+=(yerr>>16)*sw; + yerr &= 0xffff; + } + cpubyte=ETC; +} + +void TCopySpriteZoom(int x, int y, int sw, int sh, int dw, int dh, byte *src) +{ + int i,j; + int xerr,yerr; + int xadj,yadj; + byte *d; + byte c; + + cpubyte=RENDER; + if (dw<1 || dh<1) return; + xadj = (sw<<16)/dw; + yadj = (sh<<16)/dh; + d = screen+(y*sx)+x; + yerr=0; + for (i=0; i>16)]; + if (c) + d[j]=c; + xerr+=xadj; + } + d+=sx; + yerr+=yadj; + src+=(yerr>>16)*sw; + yerr &= 0xffff; + } + cpubyte=ETC; +} + +void CopySpriteZoomLucent(int x, int y, int sw, int sh, int dw, int dh, byte *src) +{ + int i,j; + int xerr,yerr; + int xadj,yadj; + byte *d; + + cpubyte=RENDER; + if (dw<1 || dh<1) return; + xadj = (sw<<16)/dw; + yadj = (sh<<16)/dh; + d = screen+(y*sx)+x; + yerr=0; + + for (i=0; i>16)]<<8)]; + xerr+=xadj; + } + d+=sx; + yerr+=yadj; + src+=(yerr>>16)*sw; + yerr &= 0xffff; + } + cpubyte=ETC; +} + +void TCopySpriteZoomLucent(int x, int y, int sw, int sh, int dw, int dh, byte *src) +{ + int i,j; + int xerr,yerr; + int xadj,yadj; + byte *d; + byte c; + + cpubyte=RENDER; + if (dw<1 || dh<1) return; + xadj = (sw<<16)/dw; + yadj = (sh<<16)/dh; + d = screen+(y*sx)+x; + yerr=0; + + for (i=0; i>16)]; + if (c) + d[j]=c; + xerr+=xadj; + } + d+=sx; + yerr+=yadj; + src+=(yerr>>16)*sw; + yerr &= 0xffff; + } + cpubyte=ETC; +} + +void Silhouette(int x, int y, int width, int height, int color, byte *src) +{ + byte *d=0; + + cpubyte=RENDER; + if (height<1 || width<1) return; + d=screen+(y*sx)+x; + do { + for (x=0; x>16)]) + d[x]=color; + xerr+=xadj; + } + d+=sx; + yerr+=yadj; + src+=(yerr>>16)*sw; + yerr &= 0xffff; + } while (--dh); + cpubyte=ETC; +} + +void SilhouetteLucent(int x, int y, int width, int height, int color, byte *src) +{ + byte *d=0; + byte *range=0; + + cpubyte=RENDER; + if (width<1 || height<1) return; + d=screen+(y*sx)+x; + range=translucency_table+(color<<8); + do { + for (x=0; x>16)]) + d[x]=range[d[x]]; + xerr+=xadj; + } + d+=sx; + yerr+=yadj; + src+=(yerr>>16)*sw; + yerr &= 0xffff; + } while (--dh); + cpubyte=ETC; +} + +// aen +void Tint(int x, int y, int width, int height, int color, byte *src) +{ + byte *d=0; + byte *range=0; + byte c=0; + + cpubyte=RENDER; + if (width<1 || height<1) return; + d=screen+(y*sx)+x; + range=translucency_table+(color<<8); + do { + for (x=0; x>16)]; + if (c) + d[x]=range[c]; + xerr+=xadj; + } + d+=sx; + yerr+=yadj; + src+=(yerr>>16)*sw; + yerr &= 0xffff; + } while (--dh); + cpubyte=ETC; +} + +void CopySpriteClip(int x, int y, int width, int height, byte *src) +{ + byte *s,*d; + int xl,yl,xs,ys; + + cpubyte=RENDER; + xl=width; + yl=height; + xs=ys=0; + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (xcx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (xcx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + + if (xcx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (xcx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (x>16)*sw); + d = screen+(y*sx)+x; + yerr = yerr_start & 0xffff; + for (i=0; i>16)]; + xerr+=xadj; + } + d+=sx; + yerr += yadj; + src += (yerr>>16)*sw; + yerr &= 0xffff; + } + cpubyte=ETC; +} + +void TCopySpriteZoomClip(int x, int y, int sw, int sh, int dw, int dh, byte *src) +{ + int i,j; + int xerr,yerr; + int xerr_start, yerr_start; + int xadj,yadj; + byte *d; + byte c; + int xl,yl,xs,ys; + + cpubyte=RENDER; + if (dw<1 || dh<1) return; + + xl=dw; + yl=dh; + xs=ys=0; + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (x>16)*sw); + d = screen+(y*sx)+x; + yerr = yerr_start & 0xffff; + for (i=0; i>16)]; + if (c) + d[j]=c; + xerr+=xadj; + } + d+=sx; + yerr += yadj; + src += (yerr>>16)*sw; + yerr &= 0xffff; + } + cpubyte=ETC; +} + +void CopySpriteZoomLucentClip(int x, int y, int sw, int sh, int dw, int dh, byte *src) +{ + int i,j; + int xerr,yerr; + int xerr_start, yerr_start; + int xadj,yadj; + byte *d; + int xl,yl,xs,ys; + + cpubyte=RENDER; + if (dw<1 || dh<1) return; + xl=dw; + yl=dh; + xs=ys=0; + + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (x>16)*sw); + d = screen+(y*sx)+x; + yerr = yerr_start & 0xffff; + for (i=0; i>16)]<<8)]; + xerr+=xadj; + } + d+=sx; + yerr += yadj; + src += (yerr>>16)*sw; + yerr &= 0xffff; + } + cpubyte=ETC; +} + +void TCopySpriteZoomLucentClip(int x, int y, int sw, int sh, int dw, int dh, byte *src) +{ + int i,j; + int xerr,yerr; + int xerr_start, yerr_start; + int xadj,yadj; + byte *d; + int c; + int xl,yl,xs,ys; + + cpubyte=RENDER; + if (dw<1 || dh<1) return; + xl=dw; + yl=dh; + xs=ys=0; + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (x>16)*sw); + d = screen+(y*sx)+x; + yerr = yerr_start & 0xffff; + for (i=0; i>16)]; + if (c) + d[j]=translucency_table[d[j]|(c<<8)]; + xerr+=xadj; + } + d+=sx; + yerr += yadj; + src += (yerr>>16)*sw; + yerr &= 0xffff; + } + cpubyte=ETC; +} + +void SilhouetteClip(int x, int y, int width, int height, int color, byte *src) +{ + byte *s=0,*d=0; + int xl=0,yl=0,xs=0,ys=0; + + cpubyte=RENDER; + xl=width; + yl=height; + xs=ys=0; + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (xcx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (x>16)*sw); + d = screen+(y*sx)+x; + yerr = yerr_start & 0xffff; + for (y=0; y>16)]) + d[x]=color; + xerr+=xadj; + } + d+=sx; + yerr += yadj; + src += (yerr>>16)*sw; + yerr &= 0xffff; + } + cpubyte=ETC; +} + +void SilhouetteLucentClip(int x, int y, int width, int height, int color, byte *src) +{ + byte *s=0,*d=0; + int xl=0,yl=0,xs=0,ys=0; + byte *range=0; + + cpubyte=RENDER; + xl=width; + yl=height; + xs=ys=0; + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (xcx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (x>16)*sw); + d = screen+(y*sx)+x; + range=translucency_table+(color<<8); + yerr = yerr_start & 0xffff; + for (y=0; y>16)]) + d[x]=range[d[x]]; + xerr+=xadj; + } + d+=sx; + yerr += yadj; + src += (yerr>>16)*sw; + yerr &= 0xffff; + } + cpubyte=ETC; +} + +// aen +void TintClip(int x, int y, int width, int height, int color, byte *src) +{ + byte *s=0,*d=0; + int xl=0,yl=0,xs=0,ys=0; + byte *range=0; + byte c=0; + + cpubyte=RENDER; + xl=width; + yl=height; + xs=ys=0; + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (xcx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (x>16)*sw); + d = screen+(y*sx)+x; + range=translucency_table+(color<<8); + yerr = yerr_start & 0xffff; + for (y=0; y>16)]; + if (c) + d[x]=range[c]; + xerr+=xadj; + } + d+=sx; + yerr += yadj; + src += (yerr>>16)*sw; + yerr &= 0xffff; + } + cpubyte=ETC; +} + +void CopyTile(int x, int y, byte *src) +{ + CopySpriteClip(x,y,16,16,src); +} + +void TCopyTile(int x, int y, byte *src, byte *matte) +{ + matte=matte; + TCopySpriteClip(x,y,16,16,src); +} + +void CopyTileLucent(int x, int y, byte *src) +{ + CopySpriteLucentClip(x,y,16,16,src); +} + +void TCopyTileLucent(int x, int y, byte *src) +{ + TCopySpriteLucentClip(x,y,16,16,src); +} + +void CopyTileClip(int x, int y, byte *src) +{ + CopySpriteClip(x,y,16,16,src); +} + +void TCopyTileClip(int x, int y, byte *src, byte *matte) +{ + matte=matte; + TCopySpriteClip(x,y,16,16,src); +} + +void CopyTileLucentClip(int x, int y, byte *src) +{ + CopySpriteLucentClip(x,y,16,16,src); +} + +void TCopyTileLucentClip(int x, int y, byte *src) +{ + TCopySpriteLucentClip(x,y,16,16,src); +} + +// aen +void MapLine(int x, int y, int yofs, word *map) +{ + byte *d; + int tilesx,startx; + int counter; + int span, s; + + cpubyte=RENDER; + + // y clipping + if (y<0 || y>=tsy) return; + // x clipping + startx=0; + if (x<0) { startx=-x; x=0; } + + d=screen+(y*sx)+x; + tilesx=(tsx/16); + + // do clipped left tile + counter=0; + s=tileidx[*map]; + memcpy(d, vsp+((s16) span=16; + s=tileidx[*map]; + memcpy(d, vsp+((s=tsy) return; + // x clipping + startx=0; + if (x<0) { startx=-x; x=0; } + + d=screen+(y*sx)+x; + tilesx=(tsx/16); + + // do clipped left tile + counter=0; + s=vsp+(256*tileidx[*map])+(16*yofs)+startx; + for (x=0; x<16-startx; x++) + { + c=s[x]; + if (c) + d[x]=c; + } + d+=16-startx; + counter+=16-startx; + map++; + // do midsection of line + for (y=1; y16) span=16; + s=vsp+(256*tileidx[*map])+(16*yofs); + for (x=0; xcx2 || y>cy2) return; + screen[(y*sx)+x]=color; +} + +void SetPixelLucentClip(int x, int y, int color) +{ + byte *d; + + if (xcx2 || y>cy2) return; + d=screen+(y*sx)+x; + *d=translucency_table[*d|(color<<8)]; +} + +int GetPixel(int x, int y) +{ + return screen[(y*sx)+x]; +} + +int GetPixelClip(int x, int y) +{ + if (xcx2 || y>cy2) return 0; + return screen[(y*sx)+x]; +} + +void ColorField(int x, int y, char c) +{ + int i; + + cpubyte=RENDER; + i=0; + do + { + SetPixelClip(x+0, y+i, 0); + SetPixelClip(x+2, y+i, 0); + SetPixelClip(x+4, y+i, 0); + SetPixelClip(x+6, y+i, 0); + SetPixelClip(x+8, y+i, 0); + SetPixelClip(x+10, y+i, 0); + SetPixelClip(x+12, y+i, 0); + SetPixelClip(x+14, y+i, 0); + i++; + + SetPixelClip(x+0 +1, y+i, 0); + SetPixelClip(x+2 +1, y+i, 0); + SetPixelClip(x+4 +1, y+i, 0); + SetPixelClip(x+6 +1, y+i, 0); + SetPixelClip(x+8 +1, y+i, 0); + SetPixelClip(x+10 +1, y+i, 0); + SetPixelClip(x+12 +1, y+i, 0); + SetPixelClip(x+14 +1, y+i, 0); + i++; + } while (i<16); + cpubyte=ETC; +} + +void HLine(int x, int y, int x2, int color) +{ + cpubyte=RENDER; + if (x2cx2 || y>cy2 || x+width cx2) width=cx2-x+1; + if (xcx2 || y>cy2 || x+width cx2) width=cx2-x+1; + if (xcx2 || y>cy2 || x cy2) height=cy2-y+1; + if (ycx2 || y>cy2 || x cy2) height=cy2-y+1; + if (yx2) + { + SWAP(x1,x2); + SWAP(y1,y2); + } + + if (y1>y2) + { + SWAP(x1,x2); + SWAP(y1,y2); + } + // assume y1<=y2 from above swap operation + yi=y2; yc=y1; + + dcx=x1; dcy=y1; + xc=(x2-x1); yc=(y2-y1); + if (xc<0) xi=-1; else xi=1; + if (yc<0) yi=-1; else yi=1; + n=abs(xc); m=abs(yc); + ycyi=abs(2*yc*xi); + er=0; + + if (n>m) + { + xcxi=abs(2*xc*xi); + for (i=0;i<=n;i++) + { + screen[(dcy*sx)+dcx]=color; + if (er>0) + { dcy+=yi; + er-=xcxi; + } + er+=ycyi; + dcx+=xi; + } + } + else + { + xcyi=abs(2*xc*yi); + for (i=0;i<=m;i++) + { + screen[(dcy*sx)+dcx]=color; + if (er>0) + { dcx+=xi; + er-=ycyi; + } + er+=xcyi; + dcy+=yi; + } + } + cpubyte=ETC; +} + +// grabbed/modded from Abuse source +void LineClip(int x1, int y1, int x2, int y2, int color) +{ + short i,xc,yc,er,n,m,xi,yi,xcxi,ycyi,xcyi; + unsigned dcy,dcx; + + cpubyte=RENDER; + // check to see if the line is completly clipped off + if ((x1cx2 && x2>cx2) + || (y1cy2 && y2>cy2)) + { + cpubyte=ETC; + return; + } + + if (x1>x2) + { + SWAP(x1,x2); + SWAP(y1,y2); + } + + // clip the left side + if (x1cx2) + { int myy=(y2-y1); + int mxx=(x2-x1),b; + if (!mxx) + { + cpubyte=ETC; + return; + } + if (myy) + { + b=y1-(y2-y1)*x1/mxx; + y2=myy*cx2/mxx+b; + x2=cx2; + } + else x2=cx2; + } + + if (y1>y2) + { + SWAP(x1,x2); + SWAP(y1,y2); + } + + // clip the bottom + if (y2>cy2) + { int mxx=(x2-x1); + int myy=(y2-y1),b; + if (!myy) + { + cpubyte=ETC; + return; + } + if (mxx) + { + b=y1-(y2-y1)*x1/mxx; + x2=(cy2-b)*mxx/myy; + y2=cy2; + } + else y2=cy2; + } + + // clip the top + if (y1cx2 || x2>cx2 || y1cy2 || y2>cy2) + { + cpubyte=ETC; + return; + } + + if (x1>x2) + { xc=x2; xi=x1; } + else { xi=x2; xc=x1; } + + // assume y1<=y2 from above swap operation + yi=y2; yc=y1; + + dcx=x1; dcy=y1; + xc=(x2-x1); yc=(y2-y1); + if (xc<0) xi=-1; else xi=1; + if (yc<0) yi=-1; else yi=1; + n=abs(xc); m=abs(yc); + ycyi=abs(2*yc*xi); + er=0; + + if (n>m) + { + xcxi=abs(2*xc*xi); + for (i=0;i<=n;i++) + { + screen[(dcy*sx)+dcx]=color; + if (er>0) + { dcy+=yi; + er-=xcxi; + } + er+=ycyi; + dcx+=xi; + } + } + else + { + xcyi=abs(2*xc*yi); + for (i=0;i<=m;i++) + { + screen[(dcy*sx)+dcx]=color; + if (er>0) + { dcx+=xi; + er-=ycyi; + } + er+=xcyi; + dcy+=yi; + } + } + cpubyte=ETC; + return; +} + +void LineLucent(int x1, int y1, int x2, int y2, int color) +{ + short i,xc,yc,er,n,m,xi,yi,xcxi,ycyi,xcyi; + unsigned dcy,dcx; + byte *d; + int c; + + cpubyte=RENDER; + if (x1>x2) + { + SWAP(x1,x2); + SWAP(y1,y2); + } + if (y1>y2) + { + SWAP(x1,x2); + SWAP(y1,y2); + } + + // assume y1<=y2 from above swap operation + yi=y2; yc=y1; + dcx=x1; dcy=y1; + xc=(x2-x1); yc=(y2-y1); + if (xc<0) xi=-1; else xi=1; + if (yc<0) yi=-1; else yi=1; + n=abs(xc); m=abs(yc); + ycyi=abs(2*yc*xi); + er=0; + + c=color<<8; // for translucency + if (n>m) + { + xcxi=abs(2*xc*xi); + for (i=0;i<=n;i++) + { + d=screen+(dcy*sx)+dcx; + *d=translucency_table[c|*d]; + //screen[(dcy*sx)+dcx]=color; + if (er>0) + { dcy+=yi; + er-=xcxi; + } + er+=ycyi; + dcx+=xi; + } + } + else + { + xcyi=abs(2*xc*yi); + for (i=0;i<=m;i++) + { + d=screen+(dcy*sx)+dcx; + *d=translucency_table[c|*d]; + //screen[(dcy*sx)+dcx]=color; + if (er>0) + { dcx+=xi; + er-=ycyi; + } + er+=xcyi; + dcy+=yi; + } + } + cpubyte=ETC; +} + +void LineLucentClip(int x1, int y1, int x2, int y2, int color) +{ + short i,xc,yc,er,n,m,xi,yi,xcxi,ycyi,xcyi; + unsigned dcy,dcx; + byte *d; + int c; + + cpubyte=RENDER; + // check to see if the line is completly clipped off + if ((x1cx2 && x2>cx2) + || (y1cy2 && y2>cy2)) + { + cpubyte=ETC; + return; + } + + if (x1>x2) + { + SWAP(x1,x2); + SWAP(y1,y2); + } + + // clip the left side + if (x1cx2) + { int myy=(y2-y1); + int mxx=(x2-x1),b; + if (!mxx) + { + cpubyte=ETC; + return; + } + if (myy) + { + b=y1-(y2-y1)*x1/mxx; + y2=myy*cx2/mxx+b; + x2=cx2; + } + else x2=cx2; + } + + if (y1>y2) + { + SWAP(x1,x2); + SWAP(y1,y2); + } + + // clip the bottom + if (y2>cy2) + { int mxx=(x2-x1); + int myy=(y2-y1),b; + if (!myy) + { + cpubyte=ETC; + return; + } + if (mxx) + { + b=y1-(y2-y1)*x1/mxx; + x2=(cy2-b)*mxx/myy; + y2=cy2; + } + else y2=cy2; + } + + // clip the top + if (y1cx2 || x2>cx2 || y1cy2 || y2>cy2) + { + cpubyte=ETC; + return; + } + + if (x1>x2) + { xc=x2; xi=x1; } + else { xi=x2; xc=x1; } + + // assume y1<=y2 from above swap operation + yi=y2; yc=y1; + + dcx=x1; dcy=y1; + xc=(x2-x1); yc=(y2-y1); + if (xc<0) xi=-1; else xi=1; + if (yc<0) yi=-1; else yi=1; + n=abs(xc); m=abs(yc); + ycyi=abs(2*yc*xi); + er=0; + + c=color<<8; // for translucency + if (n>m) + { + xcxi=abs(2*xc*xi); + for (i=0;i<=n;i++) + { + d=screen+(dcy*sx)+dcx; + *d=translucency_table[c|*d]; + //screen[(dcy*sx)+dcx]=color; + if (er>0) + { dcy+=yi; + er-=xcxi; + } + er+=ycyi; + dcx+=xi; + } + } + else + { + xcyi=abs(2*xc*yi); + for (i=0;i<=m;i++) + { + d=screen+(dcy*sx)+dcx; + *d=translucency_table[c|*d]; + //screen[(dcy*sx)+dcx]=color; + if (er>0) + { dcx+=xi; + er-=ycyi; + } + er+=xcyi; + dcy+=yi; + } + } + cpubyte=ETC; +} + +// All the Circle* routines were grabbed/modded from Allegro source + +void Circle(int x, int y, int radius, int color) +{ + int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + do + { + SetPixel(x+cx,y+cy,color); + if (cx) SetPixel(x-cx,y+cy,color); + if (cy) SetPixel(x+cx,y-cy,color); + if ((cx) && (cy)) SetPixel(x-cx,y-cy,color); + + if (cx != cy) + { + SetPixel(x+cy,y+cx,color); + if (cx) SetPixel(x+cy,y-cx,color); + if (cy) SetPixel(x-cy,y+cx,color); + if (cx && cy) SetPixel(x-cy,y-cx,color); + } + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + cx++; + } while (cx <= cy); + cpubyte=ETC; +} + +void CircleClip(int x, int y, int radius, int color) +{ + int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + do { + SetPixelClip(x+cx,y+cy,color); + if (cx) SetPixelClip(x-cx,y+cy,color); + if (cy) SetPixelClip(x+cx,y-cy,color); + if ((cx) && (cy)) SetPixelClip(x-cx,y-cy,color); + + if (cx != cy) + { + SetPixelClip(x+cy,y+cx,color); + if (cx) SetPixelClip(x+cy,y-cx,color); + if (cy) SetPixelClip(x-cy,y+cx,color); + if (cx && cy) SetPixelClip(x-cy,y-cx,color); + } + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + cx++; + } while (cx <= cy); + cpubyte=ETC; +} + +void CircleLucent(int x, int y, int radius, int color) +{ + int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + + do + { + SetPixelLucent(x+cx,y+cy,color); + if (cx) SetPixelLucent(x-cx,y+cy,color); + if (cy) SetPixelLucent(x+cx,y-cy,color); + if ((cx) && (cy)) SetPixelLucent(x-cx,y-cy,color); + + if (cx != cy) + { + SetPixelLucent(x+cy,y+cx,color); + if (cx) SetPixelLucent(x+cy,y-cx,color); + if (cy) SetPixelLucent(x-cy,y+cx,color); + if (cx && cy) SetPixelLucent(x-cy,y-cx,color); + } + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + cx++; + } while (cx <= cy); + cpubyte=ETC; +} + +void CircleLucentClip(int x, int y, int radius, int color) +{ + int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + do + { + SetPixelLucentClip(x+cx,y+cy,color); + if (cx) SetPixelLucentClip(x-cx,y+cy,color); + if (cy) SetPixelLucentClip(x+cx,y-cy,color); + if ((cx) && (cy)) SetPixelLucentClip(x-cx,y-cy,color); + + if (cx != cy) + { + SetPixelLucentClip(x+cy,y+cx,color); + if (cx) SetPixelLucentClip(x+cy,y-cx,color); + if (cy) SetPixelLucentClip(x-cy,y+cx,color); + if (cx && cy) SetPixelLucentClip(x-cy,y-cx,color); + } + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + cx++; + } while (cx <= cy); + cpubyte=ETC; +} + +void CircleFill(int x, int y, int radius, int color) +{ + int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + + do + { + HLine(x-cy,y-cx,x+cy,color); + if (cx) HLine(x-cy,y+cx,x+cy,color); + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + if (cx != cy) + { + HLine(x-cx,y-cy,x+cx,color); + if (cy) HLine(x-cx,y+cy,x+cx,color); + } + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + cx++; + } while (cx <= cy); + cpubyte=ETC; +} + +void CircleFillClip(int x, int y, int radius, int color) +{ + int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + do + { + HLineClip(x-cy,y-cx,x+cy,color); + if (cx) HLineClip(x-cy,y+cx,x+cy,color); + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + if (cx != cy) + { + HLineClip(x-cx,y-cy,x+cx,color); + if (cy) HLineClip(x-cx,y+cy,x+cx,color); + } + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + cx++; + } while (cx <= cy); + cpubyte=ETC; +} + +void CircleFillLucent(int x, int y, int radius, int color) +{ + int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + do + { + HLineLucent(x-cy,y-cx,x+cy,color); + if (cx) HLineLucent(x-cy,y+cx,x+cy,color); + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + if (cx != cy) + { + HLineLucent(x-cx,y-cy,x+cx,color); + if (cy) HLineLucent(x-cx,y+cy,x+cx,color); + } + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + cx++; + } while (cx <= cy); + cpubyte=ETC; +} + +void CircleFillLucentClip(int x, int y, int radius, int color) +{ + int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + do + { + HLineLucentClip(x-cy,y-cx,x+cy,color); + if (cx) HLineLucentClip(x-cy,y+cx,x+cy,color); + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + if (cx != cy) + { + HLineLucentClip(x-cx,y-cy,x+cx,color); + if (cy) HLineLucentClip(x-cx,y+cy,x+cx,color); + } + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + cx++; + } while (cx <= cy); + cpubyte=ETC; +} + +void Rect(int x, int y, int x2, int y2, int color) +{ + HLine(x,y,x2,color); + HLine(x,y2,x2,color); + VLine(x,y+1,y2-1,color); + VLine(x2,y+1,y2-1,color); +} + +void RectClip(int x, int y, int x2, int y2, int color) +{ + HLineClip(x,y,x2,color); + HLineClip(x,y2,x2,color); + VLineClip(x,y+1,y2-1,color); + VLineClip(x2,y+1,y2-1,color); +} + +void RectLucent(int x, int y, int x2, int y2, int color) +{ + HLineLucent(x,y,x2,color); + HLineLucent(x,y2,x2,color); + VLineLucent(x,y+1,y2-1,color); + VLineLucent(x2,y+1,y2-1,color); +} + +void RectLucentClip(int x, int y, int x2, int y2, int color) +{ + HLineLucentClip(x,y,x2,color); + HLineLucentClip(x,y2,x2,color); + VLineLucentClip(x,y+1,y2-1,color); + VLineLucentClip(x2,y+1,y2-1,color); +} + +void RectFill(int x, int y, int x2, int y2, int color) +{ + cpubyte=RENDER; + if (y2=clipw) + spanx=clipw-curx; + source=src+(y*wide)+x; + dest=screen+(cy1*sx)+cx1+curx; + cury=0; + + do + { + spany=high-(cury?0:y); + if (cury+spany>=cliph) + spany=cliph-cury; + + for (i=0; i=clipw) + spanx=clipw-curx; + source=src+(y*wide)+x; + dest=screen+(cy1*sx)+cx1+curx; + cury=0; + + do + { + spany=high-(cury?0:y); + if (cury+spany>=cliph) + spany=cliph-cury; + for (i=0; i=clipw) + spanx=clipw-curx; + source=src+(y*wide)+x; + dest=screen+(cy1*sx)+cx1+curx; + cury=0; + + do + { + spany=high-(cury?0:y); + if (cury+spany>=cliph) + spany=cliph-cury; + for (i=0; i=clipw) + spanx=clipw-curx; + source=src+(y*wide)+x; + dest=screen+(cy1*sx)+cx1+curx; + cury=0; + + do + { + spany=high-(cury?0:y); + if (cury+spany>=cliph) + spany=cliph-cury; + for (i=0; i>1; + T_HEIGHT_CENTER=height>>1; + W_WIDTH=((float)width/scale*sin(ft) + (float)height/scale*cos(ft)); + W_HEIGHT=W_WIDTH; + W_HEIGHT_CENTER=W_HEIGHT>>1; + W_WIDTH_CENTER=W_HEIGHT_CENTER; //W_WIDTH/2; + + sinas=sin(-angle)*65536*scale; + cosas=cos(-angle)*65536*scale; + + xc=T_WIDTH_CENTER*65536 - (W_HEIGHT_CENTER*(cosas+sinas)); + yc=T_HEIGHT_CENTER*65536 - (W_WIDTH_CENTER*(cosas-sinas)); + posx-=W_WIDTH_CENTER; + posy-=W_HEIGHT_CENTER; + + // clipping + if (W_WIDTH<2 || W_HEIGHT<2) return; + xl=W_WIDTH; + yl=W_HEIGHT; + xs=ys=0; + if (posx>cx2 || posy>cy2 || posx+xl cx2) xl=cx2-posx+1; + if (posy+yl > cy2) yl=cy2-posy+1; + if (posx>16); + tempy=(srcy>>16); + + if (tempx>=0 && tempx=0 && tempy y3) + { + swaptemp=x1; x1=x3; x3=swaptemp; + swaptemp=y1; y1=y3; y3=swaptemp; + } + if (y2 > y3) + { + swaptemp=x2; x2=x3; x3=swaptemp; + swaptemp=y2; y2=y3; y3=swaptemp; + } + if (y1 > y2) + { + swaptemp=x1; x1=x2; x2=swaptemp; + swaptemp=y1; y1=y2; y2=swaptemp; + } + + xstep2=((x3-x1) << 16) / (y3-y1); + xval2=x1 << 16; + + if (y1 != y2) + { + xstep = ((x2-x1) << 16) / (y2-y1); + xval = x1 << 16; + for (yon=y1;yon < y2; yon++) + { + if ((yon > -1) && (yon < 200)) + { + HLineClip(xval>>16,yon,xval2>>16,color); + } + xval+=xstep; + xval2+=xstep2; + } + } + if (y2 != y3) + { + xstep = ((x3-x2) << 16) / (y3-y2); + xval = x2 << 16; + for (yon=y2;yon < y3; yon++) + { + if ((yon > -1) && (yon < 200)) + { + HLineClip(xval>>16,yon,xval2>>16,color); + } + xval+=xstep; + xval2+=xstep2; + } + } +} + +char *image; +int texw,texh; // those damn bastards want EVERYTHING! + +void tmaphline(int x1, int x2, int y, int tx1, int tx2, int ty1, int ty2) +{ + int i; + int txstep,txval; + int tystep,tyval; + + if (x1 != x2) + { + if (x2 < x1) + { + i=x1; x1=x2; x2=i; + i=tx1; tx1=tx2; tx2=i; + i=ty1; ty1=ty2; ty2=i; + } + if ((x1 > sx) || (x2 < 0)) return; + txstep=((tx2-tx1)<<16)/(x2-x1); + tystep=((ty2-ty1)<<16)/(x2-x1); + txval=tx1<<16; + tyval=ty1<<16; + + for (i=x1;i>16)*texw+(txval>>16)]; + txval+=txstep; + tyval+=tystep; + } + } +} + +void TMapPoly(int x1, int y1, int x2, int y2, int x3, int y3, + int tx1, int ty1, int tx2, int ty2, int tx3, int ty3, + int tw, int th, char *img) +{ + int xstep,xstep2; + int xval,xval2; + int txstep,txstep2; + int tystep,tystep2; + int txval,txval2; + int tyval,tyval2; + int yon; + int swaptemp; + + image=img; texw=tw; texh=th; + if (y1 > y3) + { + swaptemp=x1; x1=x3; x3=swaptemp; + swaptemp=y1; y1=y3; y3=swaptemp; + swaptemp=tx1; tx1=tx3; tx3=swaptemp; + swaptemp=ty1; ty1=ty3; ty3=swaptemp; + } + if (y2 > y3) + { + swaptemp=x2; x2=x3; x3=swaptemp; + swaptemp=y2; y2=y3; y3=swaptemp; + swaptemp=tx2; tx2=tx3; tx3=swaptemp; + swaptemp=ty2; ty2=ty3; ty3=swaptemp; + } + if (y1 > y2) + { + swaptemp=x1; x1=x2; x2=swaptemp; + swaptemp=y1; y1=y2; y2=swaptemp; + swaptemp=tx1; tx1=tx2; tx2=swaptemp; + swaptemp=ty1; ty1=ty2; ty2=swaptemp; + } + xstep2=((x3-x1) << 16) / (y3-y1); + xval2=x1 << 16; + txstep2=((tx3-tx1) << 16) / (y3-y1); + txval2=tx1 << 16; + tystep2=((ty3-ty1) << 16) / (y3-y1); + tyval2=ty1 << 16; + + if (y1 != y2) + { + xstep = ((x2-x1) << 16) / (y2-y1); + xval = x1 << 16; + txstep = ((tx2-tx1) << 16) / (y2-y1); + txval = tx1 << 16; + tystep = ((ty2-ty1) << 16) / (y2-y1); + tyval = ty1 << 16; + + for (yon=y1;yon < y2; yon++) + { + if ((yon > -1) && (yon < 200)) + { + tmaphline(xval>>16,xval2>>16,yon,txval>>16,txval2>>16, + tyval>>16,tyval2>>16); + } + xval+=xstep; + xval2+=xstep2; + txval+=txstep; + txval2+=txstep2; + tyval+=tystep; + tyval2+=tystep2; + } + } + if (y2 != y3) + { + xstep = ((x3-x2) << 16) / (y3-y2); + xval = x2 << 16; + txstep = ((tx3-tx2) << 16) / (y3-y2); + txval = tx2 << 16; + tystep = ((ty3-ty2) << 16) / (y3-y2); + tyval = ty2 << 16; + + for (yon=y2;yon < y3; yon++) + { + if ((yon > -1) && (yon < 200)) + { + tmaphline(xval>>16,xval2>>16,yon,txval>>16,txval2>>16, + tyval>>16,tyval2>>16); + } + xval+=xstep; + xval2+=xstep2; + txval+=txstep; + txval2+=txstep2; + tyval+=tystep; + tyval2+=tystep2; + } + } +} + +/* +// ============================================================================ +// = aen's ripple-blitter = +// ============================================================================ + +int thresh; +int dispx[64],dispy[64]; + +void InitDisplaceStuff(float xmag, float ymag) +{ + int x, y, *d; + + xmag=4.0,d=dispx; + for (y=0; y<32; y++) + *d++=sin(y * (360.0/32) * (3.14/180))*xmag; + + ymag=3.9,d=dispy; + for (x=0; x<32; x++) + *d++=cos(x * (360.0/32) * (3.14/180))*ymag; + + thresh=14; +} + +void CopyTileDisplace(int x, int y, unsigned char *spr) +{ + int i, j; + int xx, yy, xt, yt; + int xin, yin; + byte *dest; + + xin = ((x+xwin)&31)<16 ? 0 : 16; + yin = ((y+ywin)&31)<16 ? 0 : 16; + dest=screen+(y*sx)+x; + + // in the yy and xx calcs, +y and +x keep the start position correct + // within the 32 element lookup tables (ie. so they flow continuously + // across the 16x16 images). + + for (j=0; j<16; j++) + { + yy = (j+yin+thresh) & 31; + for (i=0; i<16; i++) + { + xx = (i+xin+thresh) & 31; + xt = (i+dispx[yy]) & 15; + yt = (j+dispy[xx]) & 15; + + dest[i]=spr[(yt*16)+xt]; + } + dest+=sx; + } +} + +void CopyTileDisplaceClip(int x, int y, unsigned char *spr) +{ + byte *s,*d; + int xl,yl,xs,ys; + int i, j; + int xx, yy, xt, yt; + int xin, yin; + + cpubyte=RENDER; + xl=16; + yl=16; + xs=ys=0; + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (x // va_* + +#include "verge.h" + +// ================================= Data ==================================== + +// declared in VDRIVER.C +extern byte* translucency_table; + +char *strbuf=0; // Universal temporary string buffer. :) +char joyflag=0; +int vidxres=0,vidyres=0; // Joystick on/off | Video mode to use +char logoutput=0; // Verbose debugging startup mode +char nocdaudio=0; // do not use CD audio +char startmap[80]; // startup map +FILE *logf=0; // logfile file handle + +// ================================= Code ==================================== + +void InitializeDefaults() +{ + kb1=28; kb2=56; kb3=1; kb4=57; // default keyboard controls + jb1=1; jb2=2; jb3=3; jb4=4; // default joystick controls + joyflag=0; // joystick defaults to disabled + vidxres=320; vidyres=200; + logoutput=0; // Don't be annoyingly verbose + strbuf=(char *) valloc(2000, "strbuf", OID_TEMP); + memcpy(startmap,"test.map\0",9); + + md_mixfreq=44100; + md_dmabufsize=2000; + md_mode=DMODE_16BITS|DMODE_STEREO; + md_device=0; +} + +static VFILE *user_cfg_file=0; +static char parse_str[256]; + +static char *parse_cfg_token() +{ + vscanf(user_cfg_file, "%s", parse_str); + return parse_str; +} + +// compares string against parse_str (grabbed by parse_cfg_token) +// 0=mismatch, 1=match +static int parse_match(char *str) +{ + return !strcmp(parse_str, str); +} + +void ParseStartupFiles() +{ + user_cfg_file = vopen("user.cfg"); + if (!user_cfg_file) + { + printf("Could not open user.cfg. \n"); + exit(-1); + } + + while (1) + { + parse_cfg_token(); + + // mounts a pack file; up to 3? (perhaps gaurd against more?) + if (parse_match("mount")) + { MountVFile(parse_cfg_token()); continue; } + // set video resolution + else if (parse_match("vidmode")) + { + vidxres = atoi(parse_cfg_token()); + vidyres = atoi(parse_cfg_token()); + + // check validity + if (vidxres != 256 && vidxres != 320 + && vidxres != 360 && vidxres != 640) + { + Log("user.cfg: invalid resolution width %i passed to vidmode", + vidxres); + } + if (vidyres != 200 && vidyres != 240 + && vidyres != 256 && vidyres != 480) + { + Log("user.cfg: invalid resolution height %i passed to vidmode", + vidyres); + } + + continue; + } + // log to VERGE.LOG + else if (parse_match("log")) + { + logoutput=1; + continue; + } + // disable CD playing + else if (parse_match("nocdaudio")) + { + nocdaudio=1; + continue; + } + // map VERGE.EXE will run first when executed + else if (parse_match("startmap")) + { + strcpy(startmap, parse_cfg_token()); + continue; + } + // 0=auto detect, 1=???, 2=???, 3=nosound + else if (parse_match("sound_device")) + { + md_device = atoi(parse_cfg_token()); + continue; + } + // sound lib setting + else if (parse_match("mixrate")) + { + md_mixfreq = atoi(parse_cfg_token()); + continue; + } + // sound lib setting + else if (parse_match("dmabufsize")) + { + md_dmabufsize = atoi(parse_cfg_token()); + continue; + } + // sound lib setting + else if (parse_match("force8bit")) + { + continue; + } + // sound lib setting + else if (parse_match("forcemono")) + { + continue; + } + + // unknown command, assume end + break; + } + + // done parsing config + vclose(user_cfg_file); +} + +void ParseAutoCFG() +{ VFILE *f; + int i; + + if (!(f=vopen("auto.cfg"))) return; + + while (1) + { + vgets((char *) cmd, 40, f); + for (i=0; i<(signed) strlen((char *) cmd); i++) + if (cmd[i]==10 || cmd[i]==13) cmd[i]=0; + if (strlen((char*) cmd)<2) break; + ProcessCommand(); + } + vclose(f); +} + +void InitLog() +{ + if (logoutput) + { + remove("verge.log"); + } +} + +void Log(char *message, ...) +{ + char tempbuf[256]; + va_list lst; + + if (!logoutput) return; + + va_start(lst, message); + vsprintf(tempbuf, message, lst); + va_end(lst); + + logf = fopen("verge.log", "aw"); + if (!logf) err("unable to log to verge.log"); + + fprintf(logf, "%s \n", tempbuf); + fflush(logf); + + fclose(logf); +} + +// used in conjunction with LogDone() +void Logp(char *message, ...) +{ + char tempbuf[256]; + va_list lst; + + if (!logoutput) return; + + va_start(lst, message); + vsprintf(tempbuf, message, lst); + va_end(lst); + + logf = fopen("verge.log", "aw"); + if (!logf) err("unable to log to verge.log"); + + fprintf(logf, "%s", tempbuf); + fflush(logf); + + fclose(logf); +} + +void LogDone() +{ + if (!logoutput) return; + + logf = fopen("verge.log", "aw"); + if (!logf) err("unable to log to verge.log"); + + fprintf(logf, "... OK \n"); + fflush(logf); + + fclose(logf); +} + +void InitSystems() +{ + InitLog(); + Log("V2 startup. Logfile initialized."); + Logp("Sys: Initializing keyboard handler."); + InitKeyboard(); + LogDone(); +#ifdef __DJGPP__ + keyboard_chain(0); +#endif + Logp("Sys: Initializing timer. Set 100hz."); + InitTimer(); + LogDone(); + + /* + Logp("Sys: Initializing CD Audio."); + CD_Init(); + LogDone(); + */ + + Logp("Sys: Initializing music system."); + InitMusicSystem(); + LogDone(); + + InitVideo(vidxres, vidyres); +} + +void LoadTransTable() +{ + FILE *fp=0; + + if (translucency_table) + { free(translucency_table); translucency_table=0; } + translucency_table=(byte *)valloc(65536, "translucency_table", OID_MISC); + + fp = fopen("trans.tbl", "rb"); + if (!fp) err("Could not open trans.tbl."); + + fread(translucency_table, 65536, 1, fp); + + fclose(fp); +} + +void vmain(int argc, char *argv[]) +{ + char temp[256]; + + InitializeDefaults(); + ParseStartupFiles(); + InitSystems(); + if (argc==2) + { + memcpy(startmap, argv[1], strlen(argv[1])); + } + + InitConsole(); + sprintf(temp,"VERGE System Version %s", VERSION); + Con_Printf(temp); + Con_Printf("Copyright (C)1998 vecna"); + + ParseAutoCFG(); + LoadTransTable(); + LoadSystemVC(); + LoadMAP(startmap); + + while (1) + { + while (timer_count!=0) + { + timer_count--; + GameTick(); + } + Render(); + + ShowPage(); + if (kill) + { + FreeVSP(); + FreeMAP(); + FreeCHRList(); + vcsp=vcstack; + kill=0; + LoadMAP(startmap); + } + } +} diff --git a/16/v2/source/ENGINE/VERGE.H b/16/v2/source/ENGINE/VERGE.H new file mode 100644 index 00000000..3d782c32 --- /dev/null +++ b/16/v2/source/ENGINE/VERGE.H @@ -0,0 +1,55 @@ +/* +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. +*/ + +// Wee. A generic #include. I feel so warm and fuzzy inside. :) + +#define VERSION "2.01b" + +#include + +#include +#include +#include + +#define byte unsigned char +#define word unsigned short int +#define quad unsigned int + +#define TRUE 1 +#define FALSE 0 + +#include "inter.h" +#include "a_memory.h" +#include "vfile.h" +#include "conlib.h" +#include "console.h" +#include "controls.h" +#include "engine.h" +#include "entity.h" +#include "fli.h" +#include "font.h" +#include "image.h" +#include "keyboard.h" +#include "main.h" +#include "message.h" +#include "mikmod.h" +#include "render.h" +#include "sound.h" +#include "timer.h" +#include "vc.h" +#include "vdriver.h" + +extern char *strbuf; \ No newline at end of file diff --git a/16/v2/source/ENGINE/VESA.C b/16/v2/source/ENGINE/VESA.C new file mode 100644 index 00000000..a97fbe6a --- /dev/null +++ b/16/v2/source/ENGINE/VESA.C @@ -0,0 +1,776 @@ +/* +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. +*/ + +#include +#include +#include + +#include +#include +#include "verge.h" + +// ================================= Data ==================================== + +byte *vesascreen, *vesascreenx; // virscr | realscr + +// ================================= Code ==================================== + +void VESASetMode(int mode) +{ + REGISTERS r; + SET_AX(r, mode); + INTERRUPT(0x10, r); +} + +int VESAShutdown(void) +{ + VESASetMode(0x3); + free(vesascreen); + return 0; +} + +void VESASetBank(int bank) +{ + REGISTERS r; + SET_AX(r, 0x4f05); + SET_BX(r, 0); + SET_DX(r, bank); + INTERRUPT(0x10, r); +} + +int VESAShowPage(void) +{ byte *s,*d; + int y,bytes,bank; + int span; + + RenderGUI(); + cpubyte=PFLIP; + + s=vesascreen+(16*tsx)+16; + d=vesascreenx; + + bank=0; + bytes=65536; + VESASetBank(bank++); + + for (y=sy; y; y--) + { + if (bytes >= sx) + { memcpy(d,s,sx); + bytes-=sx; + s+=sx; + d+=sx; + } + else + { memcpy(d,s,bytes); + s+=bytes; + span=sx-bytes; + + VESASetBank(bank++); + d=vesascreenx; + bytes=65536; + + memcpy(d,s,span); + bytes-=span; + s+=span; + d+=span; + } + s+=32; + } + + cpubyte=ETC; + return 0; +} + +int VESACopySprite(int x, int y, int width, int height, byte *src) +{ + cpubyte=RENDER; + + asm("movl %3, %%edx \n\t" + "movl %4, %%esi \n\t" +"csl0: \n\t" + "movl %1, %%eax \n\t" + "imul $672, %%eax \n\t" + "addl %0, %%eax \n\t" + "addl _vesascreen, %%eax \n\t" + "movl %%eax, %%edi \n\t" + "movl %2, %%ecx \n\t" + "shrl $2, %%ecx \n\t" + "repz \n\t" + "movsl \n\t" + "incl %1 \n\t" + "decl %%edx \n\t" + "jnz csl0 \n\t" + : + : "m" (x), "m" (y), "m" (width), "m" (height), "m" (src) + : "eax","edx","esi","edi","ecx","cc" ); + cpubyte=ETC; + return 0; +} + +int VESACCopySprite(int x,int y,int width,int height,byte *src) +{ + byte *s,*d; + int xl,yl,xs,ys; + int cx1=0, cy1=0, cx2=tsx-1, cy2=tsy-1; + + cpubyte=RENDER; + + xl=width; + yl=height; + xs=ys=0; + + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + + if (xcx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + + if (x0 && th>0) dys=tsx-xm; + else if (tw>0 && th<0) dys=(0-tsx)-xm; + else if (tw<0 && th>0) dys=tsx+xm; + else if (tw<0 && th<0) dys=(0-tsx)+xm; + + d = vesascreen+(y*tsx)+x; + for (i=0;i>16)]; + d+=xd; + sx+=xs; + } + d+=dys; + sy+=ys; + s+=(sy>>16)*w; + sy&=0xffff; + } + cpubyte=ETC; + return 0; +} + +int VESARenderMAPLine(int x, int y, int yofs, word *map) +{ + cpubyte=RENDER; + // ... + cpubyte=ETC; + return 0; +} + +int VESATRenderMAPLine(int x, int y, int yofs, word *map) +{ + cpubyte=RENDER; + // ... + cpubyte=ETC; + return 0; +} + +int VESAColorField(int x, int y, byte c) +{ + cpubyte=RENDER; + // ... + cpubyte=ETC; + return 0; +} + +int VESAClearScreen() +{ + cpubyte=RENDER; + memset(vesascreen+(672*16)+16,0,(672*480)); + cpubyte=ETC; + return 0; +} + +int VESAPutPixel(int x, int y, int color) +{ + cpubyte=RENDER; + + if (xcx2 || y>cy2) + { + cpubyte=ETC; + return 0; + } + + x+=16; + y+=16; + + vesascreen[(y*tsx)+x]=color; + + cpubyte=ETC; + return 0; +} + +int VESAGetPixel(int x, int y) +{ + cpubyte=RENDER; + + if (xcx2 || y>cy2) + { + cpubyte=ETC; + return 0; + } + + x+=16; + y+=16; + + cpubyte=ETC; + return vesascreen[(y*tsx)+x]; + return 0; +} + +int VESAHLine(int x, int y, int x2, int color) +{ + byte *d; + int width; + + cpubyte=RENDER; + + // swap? + if (x2cx2 || y>cy2 || x+width cx2) width=cx2-x+1; + if (xcx2 || y>cy2 || x cy2) height=cy2-y+1; + if (ycx2 && x2>cx2) + || (y1cy2 && y2>cy2)) + { + cpubyte=ETC; + return 0; + } + + if (x1>x2) + { + i=x1; x1=x2; x2=i; + i=y1; y1=y2; y2=i; + } + + // clip the left side + if (x1cx2) + { int myy=(y2-y1); + int mxx=(x2-x1),b; + if (!mxx) + { + cpubyte=ETC; + return 0; + } + if (myy) + { + b=y1-(y2-y1)*x1/mxx; + y2=myy*cx2/mxx+b; + x2=cx2; + } + else x2=cx2; + } + + if (y1>y2) + { + i=x1; x1=x2; x2=i; + i=y1; y1=y2; y2=i; + } + + // clip the bottom + if (y2>cy2) + { int mxx=(x2-x1); + int myy=(y2-y1),b; + if (!myy) + { + cpubyte=ETC; + return 0; + } + if (mxx) + { + b=y1-(y2-y1)*x1/mxx; + x2=(cy2-b)*mxx/myy; + y2=cy2; + } + else y2=cy2; + } + + // clip the top + if (y1cx2 || x2>cx2 || y1cy2 || y2>cy2) + { + cpubyte=ETC; + return 0; + } + + if (x1>x2) + { xc=x2; xi=x1; } + else { xi=x2; xc=x1; } + + x1+=16;y1+=16; // aen; adjust these here?? + x2+=16;y2+=16; + + // assume y1<=y2 from above swap operation + yi=y2; yc=y1; + + dcx=x1; dcy=y1; + xc=(x2-x1); yc=(y2-y1); + if (xc<0) xi=-1; else xi=1; + if (yc<0) yi=-1; else yi=1; + n=abs(xc); m=abs(yc); + ycyi=abs(2*yc*xi); + er=0; + + if (n>m) + { + xcxi=abs(2*xc*xi); + for (i=0;i<=n;i++) + { + vesascreen[(dcy*tsx)+dcx]=color; + if (er>0) + { dcy+=yi; + er-=xcxi; + } + er+=ycyi; + dcx+=xi; + } + } + else + { + xcyi=abs(2*xc*yi); + for (i=0;i<=m;i++) + { + vesascreen[(dcy*tsx)+dcx]=color; + if (er>0) + { dcx+=xi; + er-=ycyi; + } + er+=xcyi; + dcy+=yi; + } + } + + cpubyte=ETC; + return 0; +} + +int VESACircle(int x, int y, int radius, int color) +{ + int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + + do { + VESAPutPixel(x+cx,y+cy,color); + if (cx) VESAPutPixel(x-cx,y+cy,color); + if (cy) VESAPutPixel(x+cx,y-cy,color); + if ((cx) && (cy)) VESAPutPixel(x-cx,y-cy,color); + + if (cx != cy) + { + VESAPutPixel(x+cy,y+cx,color); + if (cx) VESAPutPixel(x+cy,y-cx,color); + if (cy) VESAPutPixel(x-cy,y+cx,color); + if (cx && cy) VESAPutPixel(x-cy,y-cx,color); + } + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + + cx++; + + } while (cx <= cy); + + cpubyte=ETC; + return 0; +} + +int VESACircleFill(int x, int y, int radius, int color) +{ + int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + + do { + VESAHLine(x-cy,y-cx,x+cy,color); + if (cx) VESAHLine(x-cy,y+cx,x+cy,color); + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + if (cx != cy) + { + VESAHLine(x-cx,y-cy,x+cx,color); + if (cy) VESAHLine(x-cx,y+cy,x+cx,color); + } + + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + + cx++; + + } while (cx <= cy); + + cpubyte=ETC; + return 0; +} + +int VESARect(int x, int y, int x2, int y2, int color) +{ + VESAHLine(x,y,x2,color); + VESAHLine(x,y2,x2,color); + VESAVLine(x,y+1,y2-1,color); + VESAVLine(x2,y+1,y2-1,color); + return 0; +} + +int VESARectFill(int x, int y, int x2, int y2, int color) +{ + cpubyte=RENDER; + + if (y2=0; i--) + { + for (j=0; jfp=pack[i].vhandle; + tmp->s=1; + tmp->v=i; + tmp->i=j; + pack[i].files[j].curofs=0; + fseek(tmp->fp, pack[i].files[j].packofs, 0); + pack[i].curofs=pack[i].files[j].packofs; + return tmp; + } + + tmp->fp=fopen(fname,"rb"); + tmp->s=0; tmp->v=0; tmp->i=0; + return tmp; +} + +void vread(char *dest, int len, VFILE *f) +{ + // This is fairly simple.. Just make sure our filepointer is at the right + // place, then do a straight fread. + + if (f->s) + { + if (pack[f->v].curofs != (pack[f->v].files[f->i].packofs + pack[f->v].files[f->i].curofs)) + fseek(f->fp, pack[f->v].files[f->i].curofs+pack[f->v].files[f->i].packofs, 0); + pack[f->v].files[f->i].curofs+=len; + pack[f->v].curofs+=len; + } + fread(dest, 1, len, f->fp); +} + +void vclose(VFILE *f) +{ + if (!f) return; + if (!f->s) fclose(f->fp); + f->fp=0; + vfree(f); +} + +int filesize(VFILE *f) +{ + int oldpos, tmp; + + // Filesize for Vfiles is real simple. + if (f->s) return pack[f->v].files[f->i].size; + + // It's a bit more complex for external files. + oldpos=ftell(f->fp); + fseek(f->fp, 0, 2); + tmp=ftell(f->fp); + fseek(f->fp, oldpos, 0); + return tmp; +} + +int vtell(VFILE *f) +{ + if (!f->s) + { + return ftell(f->fp); + } + + return pack[f->v].files[f->i].curofs; +} + +void vseek(VFILE *f, int offset, int origin) +{ + if (!f->s) + { + fseek(f->fp, offset, origin); + return; + } + + switch(origin) + { + case 0: pack[f->v].files[f->i].curofs=offset; + fseek(f->fp, offset+pack[f->v].files[f->i].packofs, 0); + return; + case 1: pack[f->v].files[f->i].curofs+=offset; + fseek(f->fp, offset, 1); + return; + case 2: pack[f->v].files[f->i].curofs=pack[f->v].files[f->i].size-offset; + fseek(f->fp, pack[f->v].files[f->i].curofs+pack[f->v].files[f->i].packofs, 0); + return; + } +} + +void _vscanf(VFILE *f, char *format, char *dest) +{ + fscanf(f->fp, format, dest); + if (f->s) + pack[f->v].files[f->i].curofs=ftell(f->fp)-pack[f->v].files[f->i].packofs; +} + +char vgetc(VFILE *f) +{ char c=0; + + vread(&c, 1, f); + return c; +} + +word vgetw(VFILE *f) +{ word c=0; + + vread((char *) &c, 2, f); + return c; +} + +void vgets(char *str, int len, VFILE *f) +{ + if (f->s) + { + if (pack[f->v].curofs != (pack[f->v].files[f->i].packofs + pack[f->v].files[f->i].curofs)) + fseek(f->fp, pack[f->v].files[f->i].curofs+pack[f->v].files[f->i].packofs, 0); + pack[f->v].files[f->i].curofs+=len; + pack[f->v].curofs+=len; + } + fgets(str, len, f->fp); +} diff --git a/16/v2/source/ENGINE/VFILE.H b/16/v2/source/ENGINE/VFILE.H new file mode 100644 index 00000000..b6beb802 --- /dev/null +++ b/16/v2/source/ENGINE/VFILE.H @@ -0,0 +1,65 @@ +/* +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. +*/ + +#ifndef VFILE_H +#define VFILE_H + +#define vscanf _vscanf + +typedef struct +{ + FILE *fp; // real file pointer. + byte s; // 0=real file 1=vfile; + byte v; // if vfile, which vfile index + byte i; // which file index in vfile is it? + byte p; // data alignment pad. :) +} VFILE; + +struct filestruct +{ + unsigned char fname[84]; // pathname thingo + int size; // size of the file + int packofs; // where the file can be found in PACK + int curofs; // current file offset. + char extractable; // irrelevant to runtime, but... + char override; // should we override? +}; + +struct mountstruct +{ + char mountname[80]; // name of VRG packfile. + FILE *vhandle; // Real file-handle of packfile. + struct filestruct *files; // File record array. + int numfiles; // number of files in pack. + int curofs; // Current filepointer. +}; + +extern struct mountstruct pack[3]; +extern char filesmounted; + +int Exist(char *fname); +VFILE *vopen(char *fname); +void MountVFile(char *fname); +void vread(void *dest, int len, VFILE *f); +void vclose(VFILE *f); +int filesize(VFILE *f); +int vtell(VFILE *f); +void vseek(VFILE *f, int offset, int origin); +void vscanf(VFILE *f, char *format, char *dest); +char vgetc(VFILE *f); +word vgetw(VFILE *f); +void vgets(char *str, int len, VFILE *f); +#endif diff --git a/16/v2/source/MAPED/A_MEMORY.C b/16/v2/source/MAPED/A_MEMORY.C new file mode 100644 index 00000000..c8f1598b6 --- /dev/null +++ b/16/v2/source/MAPED/A_MEMORY.C @@ -0,0 +1,211 @@ +/* +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. +*/ + +#include +#include +#include + +void err(char *str, ...); +void Log(char *str, ...); + +// ***** +// TODO: Move the chunk list from an array to a linked list? +// Would eliminate hardcoded chunk limit, but would make +// general operation slower. Probably not The Right Thing, +// sides the chunk limit can be interesting sometimes. If +// it becomes problematic, consider a Binary Tree. +// ***** + +// ***************************** Data ***************************** + +#define MAXCHUNKS 200 +#define PARANOID 1 +#define PADFILLVALUE 254 +#define PADSIZE 256 + +void MemReport(void); + +#define errm MemReport(), err + +typedef struct +{ + void *pointer; + int size; + int owner; + char desc[20]; +} memblockType; + +memblockType chunks[MAXCHUNKS+1]; +int numchunks=0; + +// ***************************** Code ***************************** + +void *valloc(int amount, char *desc, int owner) +{ + if (numchunks == MAXCHUNKS) + err("Failed allocated %d bytes (%s), reason: Out of chunks.", + amount, desc); + +#ifdef PARANOID + CheckCorruption(); + chunks[numchunks].pointer = (void *) ((int) malloc(amount + (PADSIZE * 2)) + PADSIZE); + chunks[numchunks].size = amount; + memset((char *) chunks[numchunks].pointer - PADSIZE, PADFILLVALUE, PADSIZE); + memset((char *) chunks[numchunks].pointer + + chunks[numchunks].size, PADFILLVALUE, PADSIZE); +#else + chunks[numchunks].pointer = malloc(amount); + chunks[numchunks].size = amount; +#endif + chunks[numchunks].owner = owner; + strncpy(chunks[numchunks].desc, desc, 19); + memset(chunks[numchunks].pointer, 0, chunks[numchunks].size); + return chunks[numchunks++].pointer; +} + +void *qvalloc(int amount) +{ + void *ptr; + + // Quick and dirty memory allocation. Should be used ONLY + // for temporary blocks in speed-critical loops. + + ptr = malloc(amount); + if (!ptr) errm("qvalloc: Failed allocating %d bytes.", amount); + return ptr; +} + +void qvfree(void *ptr) +{ + free(ptr); +} + +int TotalBytesAllocated(void) +{ + int i, tally=0; + + for (i=0; i +#include +#include +#include +#include + +#include "config.h" +#include "keyboard.h" +#include "timer.h" +#include "vdriver.h" + +#include "colbak.h" +#include "colstuff.h" + +#include "smalfont.h" +#include "gui.h" + +#include "tilesel.h" + +#define byte unsigned char +#define word unsigned short + +// ================================= Data ==================================== + +char *field, *destruct; +char *background, *sprites; +int startofs=16; +int turnlength, turnctr; +int destructed, difficulty=4; +int blocks, score, scoremultiplier; +int level; + +// Current piece falling + +char piece[3], tempspot; +int xpos, ypos, ypofs; +char newpiece; +char nextpiece[3]; + +// ================================= Code ==================================== + +void BlitPlayField() +{ + int i, j; + char c; + + for (i=0; i<12; i++) + for (j=0; j<6; j++) + { + c=field[(i*6)+j]; + if (c) TCopySprite(128+(j*16), startofs+4+(i*16), 16, 16, sprites+((c+1)*256)); + } +} + +void BlitPlayFieldwDestruct(char flash) +{ + int i, j; + char c; + + for (i=0; i<12; i++) + for (j=0; j<6; j++) + { + c=field[(i*6)+j]; + if (c && !destruct[(i*6)+j]) + TCopySprite(128+(j*16), startofs+4+(i*16), 16, 16, sprites+((c+1)*256)); + if (destruct[(i*6)+j]) + TCopySprite(128+(j*16), startofs+4+(i*16), 16, 16, sprites+(flash*256)); + } +} + +void BlitPiece() +{ + ypofs=((100 * turnctr) / turnlength) * 16 / 100; + + TCopySprite(128+(xpos*16), startofs+4+(ypos*16)+ypofs, 16, 16, sprites+((piece[0]+1)*256)); + TCopySprite(128+(xpos*16), startofs+20+(ypos*16)+ypofs, 16, 16, sprites+((piece[1]+1)*256)); + TCopySprite(128+(xpos*16), startofs+36+(ypos*16)+ypofs, 16, 16, sprites+((piece[2]+1)*256)); + + TCopySprite(276, startofs+70, 16, 16, sprites+((nextpiece[0]+1)*256)); + TCopySprite(276, startofs+90, 16, 16, sprites+((nextpiece[1]+1)*256)); + TCopySprite(276, startofs+110, 16, 16, sprites+((nextpiece[2]+1)*256)); +} + +void GenerateNewPiece() +{ + newpiece=0; + xpos=2; + ypos=0; + if (field[2]) key[SCAN_ESC]=1; + if (field[8]) key[SCAN_ESC]=1; + if (field[14]) key[SCAN_ESC]=1; + if (field[20]) key[SCAN_ESC]=1; + + if (key[SCAN_ESC]) + { + if (difficulty==4 && blocks<240) Message("You really suck at columns, man.",300); + if (difficulty==5 && blocks<80) Message("You really suck at columns, man.",300); + if (score>3200 && score<=6400) Message("Not bad.",300); + if (score>6400) Message("Behold, the Columns God walks among us.",500); + } + + memcpy(&piece, &nextpiece, 3); + nextpiece[0]=random(1,difficulty); + nextpiece[1]=random(1,difficulty); + nextpiece[2]=random(1,difficulty); +} + +void DestroyBlock(int x, int y) +{ + int i; + + for (i=y; i>0; i--) + { + field[(i*6)+x]=field[((i-1)*6)+x]; + } + blocks++; + score+=scoremultiplier; +} + +void ClearConsecutiveColumns() +{ + int x, y; + char c; + + // Scan for things to destroy, but don't destroy them, just mark + // them in the Destroy field. + + destructed=0; + memset(destruct, 0, (6*13)); + + for (y=0; y<12; y++) + for (x=0; x<6; x++) + { + c=field[(y*6)+x]; + + // Test vertical match + if (y<10) + { + if ((field[((y+1)*6)+x]==c) && (field[((y+2)*6)+x]==c) && c) + { + // vertical match. Set destruct field. + destruct[((y+0)*6)+x]=1; + destruct[((y+1)*6)+x]=1; + destruct[((y+2)*6)+x]=1; + destructed=1; + } + } + // Test horizontal match + if (x<4) + { + if ((field[(y*6)+x+1]==c) && (field[(y*6)+x+2]==c) && c) + { + // horizontal match. Set destruct field. + destruct[(y*6)+x+0]=1; + destruct[(y*6)+x+1]=1; + destruct[(y*6)+x+2]=1; + destructed=1; + } + } + // Test negative diagonal match + if (x<4 && y<10) + { + if ((field[((y+1)*6)+x+1]==c) && (field[((y+2)*6)+x+2]==c) && c) + { + // negative diagonal match. set destruct field. + destruct[((y+0)*6)+x+0]=1; + destruct[((y+1)*6)+x+1]=1; + destruct[((y+2)*6)+x+2]=1; + destructed=1; + } + } + // Test positive diagonal match + if (x>=2 && y<10) + { + if ((field[((y+1)*6)+x-1]==c) && (field[((y+2)*6)+x-2]==c) && c) + { + // positive diagonal match. set destruct field. + destruct[((y+0)*6)+x-0]=1; + destruct[((y+1)*6)+x-1]=1; + destruct[((y+2)*6)+x-2]=1; + destructed=1; + } + } + } + + // Show which tiles are being destroyed before clearing out for increase + // visual coolishness. + + if (destructed) + { + timer_count=0; + while (timer_count<50) + { + if (timer_count<10 || (timer_count>20 && timer_count<30) || + (timer_count>40 && timer_count<50)) c=1; + else c=0; + + CopySprite(16,16,320,200,background); + BlitPlayFieldwDestruct(c); + TCopySprite(276, startofs+70, 16, 16, sprites+((nextpiece[0]+1)*256)); + TCopySprite(276, startofs+90, 16, 16, sprites+((nextpiece[1]+1)*256)); + TCopySprite(276, startofs+110, 16, 16, sprites+((nextpiece[2]+1)*256)); + +GotoXY(55,130); +sprintf(strbuf,"Blocks: %d", blocks); +printstring(strbuf); +GotoXY(55,140); +sprintf(strbuf,"Score: %d", score); +printstring(strbuf); +GotoXY(55,150); +sprintf(strbuf,"Level: %d", level); +printstring(strbuf); + + ShowPage(); + } + } + + // Apply destruct-o patch to the field. + + for (y=0; y<12; y++) + for (x=0; x<6; x++) + if (destruct[(y*6)+x]) DestroyBlock(x,y); +} + +void NextTurn() +{ + ypos++; + if (field[((ypos+3)*6)+xpos]) + { + if (ypos<3) key[SCAN_ESC]=1; + // Hit something; set piece here. + field[(ypos*6)+xpos]=piece[0]; + field[((ypos+1)*6)+xpos]=piece[1]; + field[((ypos+2)*6)+xpos]=piece[2]; + newpiece=1; + + // Scan for consecutive things to delete. + do + { + ClearConsecutiveColumns(); + scoremultiplier*=2; + } while (destructed); + } +} + +int CanGoLeft() +{ + if (!xpos) return 0; + if (field[((ypos+1)*6)+xpos-1]) return 0; + if (field[((ypos+2)*6)+xpos-1]) return 0; + if (field[((ypos+3)*6)+xpos-1]) return 0; + return 1; +} + +int CanGoRight() +{ + if (xpos==5) return 0; + if (field[((ypos+1)*6)+xpos+1]) return 0; + if (field[((ypos+2)*6)+xpos+1]) return 0; + if (field[((ypos+3)*6)+xpos+1]) return 0; + return 1; +} + +void RotatePiece() +{ + tempspot=piece[0]; + piece[0]=piece[1]; + piece[1]=piece[2]; + piece[2]=tempspot; +} + +void ProcessLevels() +{ + if (blocks>80) { level=2; turnlength=90; } + if (blocks>160) { level=3; turnlength=80; } + if (blocks>240) { level=4; turnlength=70; } + if (blocks>320) { level=5; turnlength=60; } + if (blocks>400) { level=6; turnlength=50; } + if (blocks>480) { level=7; turnlength=40; } + if (blocks>560) { level=8; turnlength=30; } + if (blocks>640) { level=9; turnlength=20; } +} + +extern FILE *pcxf; +extern int width, depth; +extern int bytes; +extern int vidoffset; + +void LoadBackground() +{ + int i; + + if (!(pcxf=fopen("colback.pcx","rb"))) + { + background=background_; + } + else + { + fclose(pcxf); + background=(char *) valloc(64000,"col bakg",0); + LoadPCXHeaderNP("colback.pcx"); + for (i=0; i=turnlength) + { + NextTurn(); + turnctr-=turnlength; + } + if (newpiece) GenerateNewPiece(); + BlitPlayField(); + BlitPiece(); + +GotoXY(55,130); +sprintf(strbuf,"Blocks: %d", blocks); +printstring(strbuf); +GotoXY(55,140); +sprintf(strbuf,"Score: %d", score); +printstring(strbuf); +GotoXY(55,150); +sprintf(strbuf,"Level: %d", level); +printstring(strbuf); + + ShowPage(); + } + vfree(sprites); + vfree(background); + vfree(field); + vfree(destruct); +} diff --git a/16/v2/source/MAPED/COLUMNS.H b/16/v2/source/MAPED/COLUMNS.H new file mode 100644 index 00000000..2c1b4c1e --- /dev/null +++ b/16/v2/source/MAPED/COLUMNS.H @@ -0,0 +1,34 @@ +/* +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. +*/ + +#ifndef COLUMNS_INC +#define COLUMNS_INC + +extern void BlitPlayField(); +extern void BlitPlayFieldwDestruct(char flash); +extern void BlitPiece(); +extern void GenerateNewPiece(); +extern void DestroyBlock(int x, int y); +extern void ClearConsecutiveColumns(); +extern void NextTurn(); +extern int CanGoLeft(); +extern int CanGoRight(); +extern void RotatePiece(); +extern void ProcessLevels(); +extern void LoadBackground(); +extern void Columns(); + +#endif // COLUMNS_INC diff --git a/16/v2/source/MAPED/CONFIG.C b/16/v2/source/MAPED/CONFIG.C new file mode 100644 index 00000000..0e3f10ec --- /dev/null +++ b/16/v2/source/MAPED/CONFIG.C @@ -0,0 +1,200 @@ +/* +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. +*/ + +#include +#include +#include + +#include "gui.h" +#include "mikmod.h" +#include "maped.h" + +#include "smalfont.h" + +// ================================= Data ==================================== + +FILE *cfg; +char *strbuf; + +char vm=0; // Video mode +char white=0, black=0; // Color definitions +char pad=0; // Padding mode in tile selector. +char th=0, mh=0; // tile-highlight, map highlight + +// GUI default colors + +char winbg=23; +char titlebg=125; +char brightw=31; +char darkw=13; +char darkred=44; + +// ------------------ + +extern char scrollmode, vcedprog[80]; +extern int difficulty; + +// ================================= Code ==================================== + +void InitializeDefaults() +{ + vm=0; + white=31; + black=1; + pad=1; + th=1; + mh=1; + mouse_scroll=1; + scrollmode=1; + memcpy(vcedprog,"edit",5); +} + +void GetConfig(char *fname) +{ + strbuf=(char *) valloc(2000,"strbuf!",0); + InitializeDefaults(); + if (!(cfg=fopen(fname,"r"))) + { + printf("Unable to open config file. Using defaults... \n"); + return; + } + + while (1) + { + fscanf(cfg,"%s",strbuf); + + if (!strcmp(strbuf,"difficulty")) + { fscanf(cfg,"%s",strbuf); + difficulty=atoi(strbuf); continue; } + if (!strcmp(strbuf,"nocdaudio")) + { + //nocdaudio=1; + continue; + } + if (!strcmp(strbuf,"vidmode")) + { fscanf(cfg,"%s",strbuf); + vm=atoi(strbuf); continue; } + if (!strcmp(strbuf,"white")) + { fscanf(cfg,"%s",strbuf); + white=atoi(strbuf); brightw=atoi(strbuf); + TextColor(atoi(strbuf)); continue; } + if (!strcmp(strbuf,"black")) + { fscanf(cfg,"%s",strbuf); + black=atoi(strbuf); continue; } + if (!strcmp(strbuf,"winbg")) + { fscanf(cfg,"%s",strbuf); + winbg=atoi(strbuf); continue; } + if (!strcmp(strbuf,"shadow")) + { fscanf(cfg,"%s",strbuf); + darkw=atoi(strbuf); continue; } + if (!strcmp(strbuf,"darkred")) + { fscanf(cfg,"%s",strbuf); + darkred=atoi(strbuf); continue; } + if (!strcmp(strbuf,"titlebg")) + { fscanf(cfg,"%s",strbuf); + titlebg=atoi(strbuf); continue; } + if (!strcmp(strbuf,"pad")) + { fscanf(cfg,"%s",strbuf); + pad=atoi(strbuf); continue; } + if (!strcmp(strbuf, "scrollmode")) + { fscanf(cfg,"%s",strbuf); + scrollmode=atoi(strbuf); continue; } + // aen + if (!strcmp(strbuf, "mouse_scroll")) + { fscanf(cfg,"%s",strbuf); + mouse_scroll=atoi(strbuf)&1; continue; } + if (!strcmp(strbuf, "md_device")) + { fscanf(cfg, "%s", strbuf); + md_device=atoi(strbuf); continue; } + if (!strcmp(strbuf, "th")) + { fscanf(cfg,"%s",strbuf); + th=atoi(strbuf); continue; } + if (!strcmp(strbuf, "mh")) + { fscanf(cfg,"%s",strbuf); + mh=atoi(strbuf); continue; } + if (!strcmp(strbuf, "amxofs")) + { fscanf(cfg,"%s",strbuf); + amxofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "amyofs")) + { fscanf(cfg,"%s",strbuf); + amyofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "mmxofs")) + { fscanf(cfg,"%s",strbuf); + mmxofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "mmyofs")) + { fscanf(cfg,"%s",strbuf); + mmyofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "cnxofs")) + { fscanf(cfg,"%s",strbuf); + cnxofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "cnyofs")) + { fscanf(cfg,"%s",strbuf); + cnyofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "lmxofs")) + { fscanf(cfg,"%s",strbuf); + lmyofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "lmyofs")) + { fscanf(cfg,"%s",strbuf); + lmyofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "lvxofs")) + { fscanf(cfg,"%s",strbuf); + lvxofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "lvyofs")) + { fscanf(cfg,"%s",strbuf); + lvyofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "mpxofs")) + { fscanf(cfg,"%s",strbuf); + mpxofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "mpyofs")) + { fscanf(cfg,"%s",strbuf); + mpyofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "vaxofs")) + { fscanf(cfg,"%s",strbuf); + vaxofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "vayofs")) + { fscanf(cfg,"%s",strbuf); + vayofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "zexofs")) + { fscanf(cfg,"%s",strbuf); + zexofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "zeyofs")) + { fscanf(cfg,"%s",strbuf); + zeyofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "exofs")) + { fscanf(cfg,"%s",strbuf); + exofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "eyofs")) + { fscanf(cfg,"%s",strbuf); + eyofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "prxofs")) + { fscanf(cfg,"%s",strbuf); + prxofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "pryofs")) + { fscanf(cfg,"%s",strbuf); + pryofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "rsxofs")) + { fscanf(cfg,"%s",strbuf); + rsxofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "rsyofs")) + { fscanf(cfg,"%s",strbuf); + rsyofs=atoi(strbuf); continue; } + if (!strcmp(strbuf,"vcedprog")) + { fscanf(cfg,"%s",vcedprog); + continue; } + break; + } + fclose(cfg); +} diff --git a/16/v2/source/MAPED/CONFIG.H b/16/v2/source/MAPED/CONFIG.H new file mode 100644 index 00000000..d026fcda --- /dev/null +++ b/16/v2/source/MAPED/CONFIG.H @@ -0,0 +1,28 @@ +/* +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. +*/ + +#ifndef CONFIG_INC +#define CONFIG_INC + +extern char vm; +extern char *strbuf; +extern char white,black,darkred,pad,th,mh; +extern char winbg,titlebg,brightw,darkw; + +extern void InitializeDefaults(); +extern void GetConfig(char *fname); + +#endif // CONFIG_INC diff --git a/16/v2/source/MAPED/CONTROLS.C b/16/v2/source/MAPED/CONTROLS.C new file mode 100644 index 00000000..be58e951 --- /dev/null +++ b/16/v2/source/MAPED/CONTROLS.C @@ -0,0 +1,837 @@ +/* +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. +*/ + + +// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +// CHANGELOG: +// +// + fixed ScreenShot() to properly save screenshots with +// the sequential filenames. +// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + +// ================================= Data ==================================== + +// ================================= Code ==================================== + +int CheckMouseTabs() +{ int i; + + for (i=0; i<10; i++) + { + if (i<6 && i>=numlayers) continue; + if (mb==1 && mx>17+(i*10) && mx<26+(i*10) && my>(tsy-7) && my17+(i*10) && mx<26+(i*10) && my>(tsy-7) && my1 || (byt & 0xC0) != 0) + { + repcode=0xC0 | samect; + fwrite(&repcode,1,1,pcxf); + } + fwrite(&byt,1,1,pcxf); + } while (i> 2; +} + +void OutputVSPpcx() +{ int i,j,_x,_y; + unsigned char *ptr; + char b1; + short int w1,w2; + + // First figure out the filename + + i=0; + ptr=&vspname; + while (*ptr != '.') + { + strbuf[i]=*ptr; + ptr++; + i++; + } + strbuf[i++]='.'; + strbuf[i++]='P'; + strbuf[i++]='C'; + strbuf[i++]='X'; + strbuf[i++]=0; + + pcxf=fopen(strbuf,"wb"); + +// Write PCX header + + b1=10; fwrite(&b1, 1, 1, pcxf); // manufacturer always = 10 + b1=5; fwrite(&b1, 1, 1, pcxf); // version = 3.0, >16 colors + b1=1; fwrite(&b1, 1, 1, pcxf); // encoding always = 1 + b1=8; fwrite(&b1, 1, 1, pcxf); // 8 bits per pixel, for 256 colors + w1=0; fwrite(&w1, 1, 2, pcxf); // xmin = 0; + w1=0; fwrite(&w1, 1, 2, pcxf); // ymin = 0; + w1=319; fwrite(&w1, 1, 2, pcxf); // xmax = 319; + + // At this point we need to figure out how many vertical rows tall the + // PCX needs to be in order to accomidate the number of tiles in the VSP. + + w2=numtiles/18; w2++; + w2=(w2*17); fwrite(&w2, 1, 2, pcxf); // ymax = ?; + w1=320; fwrite(&w1, 1, 2, pcxf); // hres = 320; + w2++; fwrite(&w2, 1, 2, pcxf); // vres = ?; + + fwrite(screen, 1, 48, pcxf); // 16-color palette data. Who knows what's + // actually in here. It doesn't matter since + // the 256-color palette is stored elsewhere. + + b1=0; fwrite(&b1, 1, 1, pcxf); // reserved always = 0. + b1=1; fwrite(&b1, 1, 1, pcxf); // number of color planes. Just 1 for 8bit. + w1=320; fwrite(&w1, 1, 2, pcxf); // number of bytes per line + + w1=0; fwrite(&w1, 1, 1, pcxf); + fwrite(screen, 1, 59, pcxf); // filler + + // The header is written. Now we need to generate a large buffer where we'll + // "draw" the PCX, and then encode the data and save the PCX. + + ptr=(char *) malloc(320*w2); + memset(ptr,255,(320*w2)); // Give the PCX a white background + + // Now we "draw" the tiles into the buffer. + + for (i=0; i16 colors + b1=1; fwrite(&b1, 1, 1, pcxf); // encoding always = 1 + b1=8; fwrite(&b1, 1, 1, pcxf); // 8 bits per pixel, for 256 colors + w1=0; fwrite(&w1, 1, 2, pcxf); // xmin = 0; + w1=0; fwrite(&w1, 1, 2, pcxf); // ymin = 0; + w1=sx-1; fwrite(&w1, 1, 2, pcxf); // xmax = 319; + w1=sy-1; fwrite(&w1, 1, 2, pcxf); // ymax = 199; + w1=sx; fwrite(&w1, 1, 2, pcxf); // hres = 320; + w1=sy; fwrite(&w1, 1, 2, pcxf); // vres = 200; + + fwrite(screen,1,48,pcxf); + + b1=0; fwrite(&b1, 1, 1, pcxf); // reserved always = 0. + b1=1; fwrite(&b1, 1, 1, pcxf); // number of color planes. Just 1 for 8bit. + w1=sx; fwrite(&w1, 1, 2, pcxf); // number of bytes per line + + w1=0; fwrite(&w1, 1, 1, pcxf); + fwrite(screen, 1, 59, pcxf); // filler + + for (w1=0; w1(tsy-2)) ms_down=1; + if (mx>334) ms_right=1; + if (mx<18) ms_left=1; + } + + if (key[SCAN_UP] || ms_up) + { + if (scrollmode) + { + ywin -= map_scroll_y; + if (ywin < 0) ywin = 0; + } + else + { + if (key[SCAN_UP] || (!(systemtime%10))) + { + key[SCAN_UP]=0; + ywin -= 16; + if (ywin < 0) ywin = 0; + systemtime++; + } + } + } + if (key[SCAN_DOWN] || ms_down) + { + if (scrollmode) + { + ywin += map_scroll_y; + if (ywin > ymax) + ywin = ymax; + } + else + { + if (key[SCAN_DOWN] || (!(systemtime%10))) + { + key[SCAN_DOWN]=0; + ywin += 16; + if (ywin > ymax) + ywin = ymax; + systemtime++; + } + } + } + if (key[SCAN_RIGHT] || ms_right) + { + if (scrollmode) + { + xwin += map_scroll_x; + if (xwin > xmax) + xwin = xmax; + } + else + { + if (key[SCAN_RIGHT] || (!(systemtime%10))) + { + key[SCAN_RIGHT]=0; + xwin += 16; + if (xwin > xmax) + xwin = xmax; + systemtime++; + } + } + } + if (key[SCAN_LEFT] || ms_left) + { + if (scrollmode) + { + xwin -= map_scroll_x; + if (xwin < 0) xwin=0; + } + else + { + if (key[SCAN_LEFT] || (!(systemtime%10))) + { + key[SCAN_LEFT]=0; + xwin -= 16; + if (xwin < 0) xwin = 0; + systemtime++; + } + } + } +} + +ProcessControls() +{ + int xmax, ymax; + + xmax = (layer[0].sizex * 16) - sx; + ymax = (layer[0].sizey * 16) - sy; + + if (key[SCAN_F5]) { key[SCAN_F5]=0; ShellMAP(); } + if (key[SCAN_F6]) { key[SCAN_F6]=0; CompileAll(); } + if (key[SCAN_F8]) { key[SCAN_F8]=0; ShellVERGE(); } + if (key[SCAN_ALT] && key[SCAN_D]) { key[SCAN_D]=0; ShellToDOS(); } + if (key[SCAN_ALT] && key[SCAN_L]) LoadMAPDialog(); + if (key[SCAN_ALT] && key[SCAN_V]) ShellEditMAP(); + if (key[SCAN_ALT] && key[SCAN_S]) ShellEditSystem(); + if (key[SCAN_ALT] && key[SCAN_N]) NewMAP(); + if (key[SCAN_ALT] && key[SCAN_P]) MPDialog(); + if (!key[SCAN_ALT] && key[SCAN_P]) { pasting^=1; key[SCAN_P]=0; } // aen + + if (key[SCAN_A] && el<6) + { + lt++; + if (lt==numtiles) lt=0; + key[SCAN_A]=0; + } + if (key[SCAN_Z] && el<6) + { + if (lt) lt--; + else lt=numtiles-1; + key[SCAN_Z]=0; + } + if (key[SCAN_A] && el==7) + { + curzone++; + key[SCAN_A]=0; + } + if (key[SCAN_Z] && el==7) + { + curzone--; + key[SCAN_Z]=0; + } + if (key[SCAN_S]) + { + rt++; + if (rt==numtiles) rt=0; + key[SCAN_S]=0; + } + if (key[SCAN_X]) + { + if (rt) rt--; + else rt=numtiles-1; + key[SCAN_X]=0; + } + if (key[SCAN_F10]) + { + key[SCAN_F10]=0; + if (random(0,255)<15) HAL(); + SaveMAP(mapname); + SaveVSP(vspname); + CompileMAP(); + Message("MAP/VSP saved.",100); + modified=0; + } + if (key[SCAN_C]) + { + key[SCAN_C]=0; + sprintf(strbuf,"Left: %d Right: %d", lt, rt); + Message(strbuf, 300); + } + if (key[SCAN_M]) + { + key[SCAN_M]=0; + GenerateMiniVSP(); + MiniMAP(); + } + if (key[SCAN_H]) + { + key[SCAN_H]=0; + mh=mh^1; + if (mh) Message("MAP Tile Highlight enabled.",100); + else Message("MAP Tile Highlight disabled.",100); + } + + // *** + // movement code moved to PollMovement() + // *** + + if (key[SCAN_PGUP]) + { + key[SCAN_PGUP]=0; + ywin -= sy; + if (ywin < 0) + ywin = 0; + } + if (key[SCAN_HOME]) + { + key[SCAN_HOME]=0; + xwin -= sx; + if (xwin < 0) + xwin = 0; + } + if (key[SCAN_END]) + { + key[SCAN_END]=0; + xwin += sx; + if (xwin > xmax) + xwin = xmax; + } + if (key[SCAN_PGDN]) + { + key[SCAN_PGDN]=0; + ywin += sy; + if (ywin > ymax) + ywin = ymax; + } + + if (key[SCAN_CTRL] && el<6) + { + key[SCAN_CTRL]=0; + TileSelector(); + } + if (key[SCAN_CTRL] && el==7) + { + key[SCAN_CTRL]=0; + ZoneEdDialog(); + } + + if (key[SCAN_TAB]) + { + key[SCAN_TAB]=0; + if (scrollmode) + { + scrollmode=0; + xwin=xwin/16; xwin=xwin*16; + ywin=ywin/16; ywin=ywin*16; + Message("Tile scroll.",150); + } + else + { + scrollmode=1; + Message("Pixel scroll.",150); + } + } + + if (key[SCAN_1]) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) + { + layertoggle[0]=0; + return; + } + layertoggle[0]=1; + layertoggle[6]=0; layertoggle[7]=0; + layertoggle[8]=0; layertoggle[9]=0; + el=0; + key[SCAN_1]=0; + } + if (key[SCAN_2]) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) + { + layertoggle[1]=0; + return; + } + key[SCAN_2]=0; + layertoggle[6]=0; layertoggle[7]=0; + layertoggle[8]=0; layertoggle[9]=0; + if (numlayers>1) + { layertoggle[1]=1; + el=1; } + } + if (key[SCAN_3]) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) + { + layertoggle[2]=0; + return; + } + key[SCAN_3]=0; + layertoggle[6]=0; layertoggle[7]=0; + layertoggle[8]=0; layertoggle[9]=0; + if (numlayers>2) + { layertoggle[2]=1; + el=2; } + } + if (key[SCAN_4]) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) + { + layertoggle[3]=0; + return; + } + key[SCAN_4]=0; + layertoggle[6]=0; layertoggle[7]=0; + layertoggle[8]=0; layertoggle[9]=0; + if (numlayers>3) + { layertoggle[3]=1; + el=3; } + } + if (key[SCAN_5]) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) + { + layertoggle[4]=0; + return; + } + key[SCAN_5]=0; + layertoggle[6]=0; layertoggle[7]=0; + layertoggle[8]=0; layertoggle[9]=0; + if (numlayers>4) + { layertoggle[4]=1; + el=4; } + } + if (key[SCAN_6]) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) + { + layertoggle[5]=0; + return; + } + key[SCAN_6]=0; + layertoggle[6]=0; layertoggle[7]=0; + layertoggle[8]=0; layertoggle[9]=0; + if (numlayers>5) + { layertoggle[5]=1; + el=5; } + } + if (key[SCAN_O]) + { + key[SCAN_O]=0; + layertoggle[6]=1; layertoggle[7]=0; + layertoggle[8]=0; layertoggle[9]=0; + el=6; + } + if (key[SCAN_N]) + { + key[SCAN_N]=0; + layertoggle[6]=0; layertoggle[7]=1; + layertoggle[8]=0; layertoggle[9]=0; + el=7; + } + if (key[SCAN_E]) + { + key[SCAN_E]=0; + layertoggle[6]=0; layertoggle[7]=0; + layertoggle[8]=1; layertoggle[9]=0; + el=8; + } + if (key[SCAN_T]) + { + key[SCAN_T]=0; + layertoggle[6]=0; layertoggle[7]=0; + layertoggle[8]=0; layertoggle[9]=1; + el=9; + } + if (key[SCAN_F9]) + { // aen + key[SCAN_F9]=0; + mouse_scroll^=1; + sprintf(strbuf,"Mouse scroll %sabled.", mouse_scroll ? "en" : "dis"); + Message(strbuf, 100); + } + if (key[SCAN_F11]) + { + key[SCAN_F11]=0; + ScreenShot(); + Message("Screen capture saved.",300); + } + if (key[SCAN_F12]) + { + key[SCAN_F12]=0; + OutputVSPpcx(); + Message("PCX file exported.",300); + } + if (key[SCAN_LANGLE]) + { + key[SCAN_LANGLE]=0; + ShutdownVideo(); + vm=0; + InitVideo(0); + set_intensity(63); + InitMouse(); + + // aen -- gotta recalc this if you're in a lower res at the bottom of + // the map and jump to a higher res. + xmax = (layer[0].sizex * 16) - sx; + ymax = (layer[0].sizey * 16) - sy; + if (xwin > xmax) xwin=xmax; + if (ywin > ymax) ywin=ymax; + } + if (key[SCAN_RANGLE]) + { + key[SCAN_RANGLE]=0; + ShutdownVideo(); + vm=1; + InitVideo(1); + set_intensity(63); + InitMouse(); + + // aen -- gotta recalc this if you're in a lower res at the bottom of + // the map and jump to a higher res. + xmax = (layer[0].sizex * 16) - sx; + ymax = (layer[0].sizey * 16) - sy; + if (xwin > xmax) xwin=xmax; + if (ywin > ymax) ywin=ymax; + } + + if (CheckMouseTabs()) return; + + if (mb>=3) MainMenu(mx-4,my-5); + if (key[SCAN_ESC]) DoMainMenu(); + + if (mb==1 && key[SCAN_SLASH] && el<6) + { + lt=layers[el][((((ywin*layer[el].pmulty/layer[el].pdivy)+my-16)/16) * + layer[el].sizex)+(((xwin*layer[el].pmultx/layer[el].pdivx)+mx-16)/16)]; + + return; + } + + if (mb==2 && key[SCAN_SLASH] && el<6) + { + rt=layers[el][((((ywin*layer[el].pmulty/layer[el].pdivy)+my-16)/16) * + layer[el].sizex)+(((xwin*layer[el].pmultx/layer[el].pdivx)+mx-16)/16)]; + return; + } + + // aen; these must come before the tile plotting code just below + // to work correctly. + if (mb && el<6 && key[SCAN_LSHIFT] && !shifted) + { + selx1=(((xwin*layer[el].pmultx/layer[el].pdivx)+mx-16)/16); + sely1=(((ywin*layer[el].pmulty/layer[el].pdivy)+my-16)/16); + selx2=selx1; + sely2=sely1; + shifted=mb; + return; + } + if (mb && el<6 && shifted) + { + selx2=(((xwin*layer[el].pmultx/layer[el].pdivx)+mx-16)/16); + sely2=(((ywin*layer[el].pmulty/layer[el].pdivy)+my-16)/16); + return; + } + if (!mb && el<6 && shifted) + { int i,j; + int x1,y1,x2,y2; + + x1=selx1; + y1=sely1; + x2=selx2; + y2=sely2; + + if (x2335) mx=334; + modified=1; + layers[el][((((ywin*layer[el].pmulty/layer[el].pdivy)+my-16)/16) * + layer[el].sizex)+(((xwin*layer[el].pmultx/layer[el].pdivx)+mx-16) + /16)]=lt; + } + if (mb==2 && el<6 && !shifted) + { + if (mx>335) mx=334; + modified=1; + layers[el][((((ywin*layer[el].pmulty/layer[el].pdivy)+my-16)/16) * + layer[el].sizex)+(((xwin*layer[el].pmultx/layer[el].pdivx)+mx-16) + /16)]=rt; + } + + if (mb==1 && el==6) + { + modified=1; + obstruct[((((ywin*layer[0].pmulty/layer[0].pdivy)+my-16)/16) * + layer[0].sizex)+(((xwin*layer[0].pmultx/layer[0].pdivx)+mx-16) + /16)]=1; + } + if (mb==2 && el==6) + { + modified=1; + obstruct[((((ywin*layer[0].pmulty/layer[0].pdivy)+my-16)/16) * + layer[0].sizex)+(((xwin*layer[0].pmultx/layer[0].pdivx)+mx-16) + /16)]=0; + } + if (mb==1 && el==7 && (key[SCAN_LSHIFT] || key[SCAN_RSHIFT])) + { + curzone=zone[((((ywin*layer[0].pmulty/layer[0].pdivy)+my-16)/16) * + layer[0].sizex)+(((xwin*layer[0].pmultx/layer[0].pdivx)+mx-16) + /16)]; + WaitRelease(); + ZoneEdDialog(); + return; + } + if (mb==1 && el==7) + { + modified=1; + zone[((((ywin*layer[0].pmulty/layer[0].pdivy)+my-16)/16) * + layer[0].sizex)+(((xwin*layer[0].pmultx/layer[0].pdivx)+mx-16) + /16)]=curzone; + } + if (mb==2 && el==7) + { + modified=1; + zone[((((ywin*layer[0].pmulty/layer[0].pdivy)+my-16)/16) * + layer[0].sizex)+(((xwin*layer[0].pmultx/layer[0].pdivx)+mx-16) + /16)]=0; + } + if (mb==1 && el==8) + { + WaitRelease(); + ProcessEntity((xwin+(mx-16))/16,(ywin+(my-16))/16); + modified=1; + } + if (el==8 && EntityThere((mx-16+xwin)/16,(my+ywin-16)/16) && + key[SCAN_DEL]) + { + WaitRelease(); + DeleteEntity((mx-16+xwin)/16,(my-16+ywin)/16); + modified=1; + } +} diff --git a/16/v2/source/MAPED/GUI.C b/16/v2/source/MAPED/GUI.C new file mode 100644 index 00000000..49bdc469 --- /dev/null +++ b/16/v2/source/MAPED/GUI.C @@ -0,0 +1,5062 @@ +/* +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. +*/ + +#include +#include +#include +#include +#include + +#include "config.h" +#include "guicomp.h" +#include "maped.h" +#include "mouse.h" +#include "render.h" +#include "timer.h" +#include "vdriver.h" +#include "keyboard.h" + +#include "smalfont.h" +#include "columns.h" +#include "tilesel.h" + +// ================================= Data ==================================== + +struct message +{ + char text[44]; // message text + int exptime; // message expire time +}; + +struct message messages[6]; // 5-message buffer +char num_msgs=0; // number of active messages +char playingmod[80]; // currently playing mod. +extern char scrollmode; + +// ================================= Code ==================================== + +void CheckMessageExpirations() +{ int i; + + for (i=0; imessages[i].exptime) + { + memcpy(messages[i].text, messages[i+1].text, (48*(num_msgs-i+1))); + num_msgs--; + } +} + +void Message(char *text, int duration) +{ + if (num_msgs<5) + { + memcpy(messages[num_msgs].text, text, strlen(text)); + messages[num_msgs].exptime=systemtime+duration; + num_msgs++; + return; + } + + memcpy(&messages[0].text, &messages[1].text, 192); + memcpy(messages[4].text, text, strlen(text)+1); + messages[num_msgs].exptime=systemtime+duration; +} + +void DrawScreenControls() +{ int i; + byte c; + + if (el<6) + { + if (pasting) + { + GotoXY(298-5,tsy-19+13); + printstring("P"); + } + } + + // Put current-tile boxes if applicable. + if (el<6) + { + FilledBox(298,tsy-19,18,18,white); + FilledBox(317,tsy-19,18,18,white); + CopySprite(299,tsy-18,16,16,vsp+(256*lt)); + CopySprite(318,tsy-18,16,16,vsp+(256*rt)); + } + + if (el==7) + { + sprintf(strbuf,"Zone %d",curzone); + GotoXY(280,tsy-16); + printstring(strbuf); + GotoXY(280,tsy-10); + printstring(zones[curzone].name); + + c=zone[((((ywin*layer[0].pmulty/layer[0].pdivy)+my-16)/16) * + layer[0].sizex)+(((xwin*layer[0].pmultx/layer[0].pdivx)+mx-16)/16)]; + + if (c) + { + sprintf(strbuf,"zone %d",c); + GotoXY(280,17); + printstring(strbuf); + GotoXY(280,23); + printstring(zones[c].name); + } + } + + if (el==8) + { + sprintf(strbuf,"%d entities",entities); + GotoXY(285,17); printstring(strbuf); + + if (c=EntityThere((mx+xwin-16)/16,(my+ywin-16)/16)) + { + c--; + GotoXY(285,tsy-10); + printstring(entity[c].desc); + } + } + + // Put the current-tile mouse thingy. + GotoXY(17,17); + dec_to_asciiz((xwin+mx-16)/16,strbuf); + printstring(strbuf); printstring(", "); + dec_to_asciiz((ywin+my-16)/16,strbuf); + printstring(strbuf); + + // Put the layer editor/selector. + + for (i=0; i<6; i++) + { + if (el==i) c=white; else c=darkw; + FilledBox(17+(i*10),tsy-7,9,7,c); + if (layertoggle[i]) c=darkred; else c=0; + FilledBox(18+(i*10),tsy-6,7,6,c); + GotoXY(20+(i*10),tsy-5); dec_to_asciiz(i+1,strbuf); + if (i335) dx=336-80; + if (dy+89>sy+16) dy=(sy+16)-89; + + RenderMap(); + RenderGUI(); + stdwindow(dx, dy, dx+80, dy+89); + + if (mx>dx && mxdy+2 && mydy+8 && mydy+14 && mydy+20 && mydy+29 && mydy+35 && mydy+41 && mydy+47 && mydy+53 && mydy+59 && mydy+65 && mydy+71 && mydy+80 && my"); + GotoXY(dx+3, dy+42); printstring("Options"); + GotoXY(dx+3, dy+48); printstring("MOD Player"); + GotoXY(dx+3, dy+54); printstring("CD Player"); + GotoXY(dx+3, dy+60); printstring("Columns"); + GotoXY(dx+3, dy+66); printstring("Execute"); GotoXY(dx+73, dy+66); printstring(">"); + GotoXY(dx+3, dy+72); printstring("Exit to DOS"); + HLine(dx+2, dy+79, 76, white); + GotoXY(dx+3, dy+81); printstring("About MapEd"); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + if (mb==1 && mx>dx && mxdy+2 && mydy+8 && mydy+14 && mydy+20 && mydy+29 && mydy+35 && mydy+41 && mydy+47 && mydy+53 && mydy+59 && mydy+65 && mydy+71 && mydy+80 && my= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + ilxofs = (mx-mxo); + ilyofs = (my-myo); + if (!mb) moving=0; + if (ilxofs<16) ilxofs = 16; + if (ilyofs<16) ilyofs = 16; + if (ilxofs+ilxsize>335) ilxofs = 336-ilxsize; + if (ilyofs+ilysize>sy+16) ilyofs = (sy+16)-ilysize; + } + + Window(ilxofs, ilyofs, ilxofs+ilxsize, ilyofs+ilysize, "Import Image As Layer"); + Button(ilxofs+109, ilyofs+12, "Browse"); + Button(ilxofs+109, ilyofs+30, "OK"); + GotoXY(ilxofs+5, ilyofs+25); printstring("Layer:"); + // layer select radio buttons + for (i=0; i<6; i++) + { + CheckBox(ilxofs+29+(i*10), ilyofs+33, chk_layer & (1<ilxofs+109 && mxilyofs+12 && myilxofs+109 && mxilyofs+30 && mynumlayers) + { + numlayers++; + sprintf(rstring, "%s%i", rstring, ly+1); // update render-order + } + + vfree(t); + vfree(ovsp); + } + // ... + WaitRelease(); continue; + } + + if (mb==1 && mx>ilxofs+29 && mxilyofs+33 && myilxofs+39 && mxilyofs+33 && my= 2) + { + chk_layer ^= 2; + chk_layer &= 2; + //chk_2 ^= 1; + //chk_1=0,chk_3=0,chk_4=0,chk_5=0,chk_6=0; + WaitRelease(); continue; + } + } + + if (mb==1 && mx>ilxofs+49 && mxilyofs+33 && my= 3) + { + chk_layer ^= 4; + chk_layer &= 4; + //chk_3 ^= 1; + //chk_1=0,chk_2=0,chk_4=0,chk_5=0,chk_6=0; + WaitRelease(); continue; + } + } + + if (mb==1 && mx>ilxofs+59 && mxilyofs+33 && my= 4) + { + chk_layer ^= 8; + chk_layer &= 8; + //chk_4 ^= 1; + //chk_1=0,chk_2=0,chk_3=0,chk_5=0,chk_6=0; + WaitRelease(); continue; + } + } + + if (mb==1 && mx>ilxofs+69 && mxilyofs+33 && my= 5) + { + chk_layer ^= 16; + chk_layer &= 16; + //chk_5 ^= 1; + //chk_1=0,chk_2=0,chk_3=0,chk_4=0,chk_6=0; + WaitRelease(); continue; + } + } + + if (mb==1 && mx>ilxofs+79 && mxilyofs+33 && my= 6) + { + chk_layer ^= 32; + chk_layer &= 32; + //chk_6 ^= 1; + //chk_1=0,chk_2=0,chk_3=0,chk_4=0,chk_5=0; + WaitRelease(); continue; + } + } + + // if no checkboxes are marked, mark the first. + //if (!(chk_1+chk_2+chk_3+chk_4+chk_5+chk_6)) chk_1=1; + if (!chk_layer) chk_layer=1; + +// if (mb==1 && mx>ilxofs+29 && mxilyofs+12 && myilxofs+74 && mxilyofs+58 && myilxofs+74 && mxilyofs+69 && myilxofs+5 && mxilyofs+101 && my + if (excessx+excessy) + { + if (chk_grabexcess) + { + if (excessx) tilesx++; + if (excessy) tilesy++; + } + else + { + if (excessx) tilesx--; + if (excessy) tilesy--; + } + if (tilesxilxofs+5 && mxilyofs+110 && myilxofs+5 && mxilyofs+119 && my(ilxofs+ilxsize-9) && (mx(ilyofs+1) && (myilxofs && mxilyofs && my<(ilyofs+9) && !moving) + { + moving=1; + mxo=mx-ilxofs; + myo=my-ilyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + + // keep minimally required padding + if (ctf==1) + { + if (atoi(str)= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + dtxofs = (mx-mxo); + dtyofs = (my-myo); + if (!mb) moving=0; + if (dtxofs<16) dtxofs = 16; + if (dtyofs<16) dtyofs = 16; + if (dtxofs+dtxsize>335) dtxofs = 336-dtxsize; + if (dtyofs+dtysize>sy+16) dtyofs = (sy+16)-dtysize; + } + + Window(dtxofs, dtyofs, dtxofs+dtxsize, dtyofs+dtysize, "Destroyer"); + CheckBox(dtxofs+4, dtyofs+11, zn_check); + CheckBox(dtxofs+4, dtyofs+31, ob_check); + CheckBox(dtxofs+4, dtyofs+21, zd_check); + GotoXY(dtxofs+15, dtyofs+12); printstring("Zones"); + GotoXY(dtxofs+15, dtyofs+32); printstring("Obstructions"); + GotoXY(dtxofs+15, dtyofs+22); printstring("Zone Data"); + Button(dtxofs+68, dtyofs+11, "ok"); + Button(dtxofs+68, dtyofs+24, "cancel"); + CheckBox(dtxofs+4, dtyofs+41, ent_check); + GotoXY(dtxofs+15, dtyofs+42); printstring("Entities"); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>dtxofs+4 && mxdtyofs+11 && mydtxofs+4 && mxdtyofs+21 && mydtxofs+4 && mxdtyofs+31 && mydtxofs+4 && mxdtyofs+41 && mydtxofs+68 && mxdtyofs+11 && mydtxofs+68 && mxdtyofs+24 && my(dtxofs+dtxsize-9) && (mx(dtyofs+1) && (mydtxofs && mxdtyofs && my<(dtyofs+9) && !moving) + { + moving=1; + mxo=mx-dtxofs; + myo=my-dtyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } while (!done); +} + +void LayersSubMenu(int dx, int dy) +{ char done=0; + //int mxo, myo, cursorblink; + + do + { + if (dx<16) dx=16; + if (dy<16) dy=16; + if (dx+80>335) dx=336-80; + if (dy+89>sy+16) dy=(sy+16)-89; + + RenderMap(); + RenderGUI(); + stdwindow(dx, dy, dx+80, dy+29); + + if (mx>dx && mxdy+2 && mydy+8 && mydy+14 && mydy+20 && mydx && mxdy+2 && mydy+8 && mydy+14 && mydy+20 && my335) dx=336-80; + if (dy+89>sy+16) dy=(sy+16)-89; + + RenderMap(); + RenderGUI(); + stdwindow(dx, dy, dx+80, dy+23); + + if (mx>dx && mxdy+2 && mydy+8 && mydy+14 && mydx && mxdy+2 && mydy+8 && mydy+14 && my5) i=0; + if (i>=numlayers) i=0; + + sprintf(nstr1, "%d", layer[i].pmultx); + sprintf(nstr2, "%d", layer[i].pdivx); + sprintf(nstr3, "%d", layer[i].pmulty); + sprintf(nstr4, "%d", layer[i].pdivy); + sprintf(nstr5, "%d", layer[i].trans); + sprintf(nstr6, "%d", layer[i].hline); + last_pressed=0; + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + lpxofs = (mx-mxo); + lpyofs = (my-myo); + if (!mb) moving=0; + if (lpxofs<16) lpxofs = 16; + if (lpyofs<16) lpyofs = 16; + if (lpxofs+lpxsize>335) lpxofs = 336-lpxsize; + if (lpyofs+lpysize>sy+16) lpyofs = (sy+16)-lpysize; + } + + Window(lpxofs, lpyofs, lpxofs+lpxsize, lpyofs+lpysize, "Edit Layer Properties"); + GotoXY(lpxofs+3, lpyofs+10); printstring("Parallax controls:"); + GotoXY(lpxofs+4, lpyofs+21); printstring("MultX:"); + GotoXY(lpxofs+12, lpyofs+31); printstring("DivX:"); + GotoXY(lpxofs+93, lpyofs+21); printstring("MultY:"); + GotoXY(lpxofs+101, lpyofs+31); printstring("DivY:"); + TextField(lpxofs+29, lpyofs+19, 60, nstr1, ctf == 1 ? cb : 0); + TextField(lpxofs+29, lpyofs+29, 60, nstr2, ctf == 2 ? cb : 0); + TextField(lpxofs+118, lpyofs+19, 60, nstr3, ctf == 3 ? cb : 0); + TextField(lpxofs+118, lpyofs+29, 60, nstr4, ctf == 4 ? cb : 0); + HLine(lpxofs+1, lpyofs+43, 188, white); + GotoXY(lpxofs+9, lpyofs+48); printstring("Transparent"); + GotoXY(lpxofs+36, lpyofs+58); printstring("HLine"); + TextField(lpxofs+56, lpyofs+46, 60, nstr5, ctf == 5 ? cb : 0); + TextField(lpxofs+56, lpyofs+56, 60, nstr6, ctf == 6 ? cb : 0); + Button(lpxofs+156, lpyofs+55, "OK"); + GotoXY(lpxofs+144, lpyofs+47); printstring("Layer"); + sprintf(strbuf,"%d",i); GotoXY(lpxofs+168, lpyofs+47); printstring(strbuf); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>lpxofs+29 && mxlpyofs+19 && mylpxofs+29 && mxlpyofs+29 && mylpxofs+118 && mxlpyofs+19 && mylpxofs+118 && mxlpyofs+29 && mylpxofs+56 && mxlpyofs+46 && mylpxofs+56 && mxlpyofs+56 && mylpxofs+156 && mxlpyofs+55 && my(lpxofs+lpxsize-9) && (mx(lpyofs+1) && (mylpxofs && mxlpyofs && my<(lpyofs+9) && !moving) + { + moving=1; + mxo=mx-lpxofs; + myo=my-lpyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_UP) + { + layer[i].pmultx=atoi(nstr1); + layer[i].pdivx=atoi(nstr2); + layer[i].pmulty=atoi(nstr3); + layer[i].pdivy=atoi(nstr4); + layer[i].trans=atoi(nstr5); + layer[i].hline=atoi(nstr6); + last_pressed=0; key[SCAN_UP]=0; + if (i) i--; else i=numlayers-1; + sprintf(nstr1, "%d", layer[i].pmultx); + sprintf(nstr2, "%d", layer[i].pdivx); + sprintf(nstr3, "%d", layer[i].pmulty); + sprintf(nstr4, "%d", layer[i].pdivy); + sprintf(nstr5, "%d", layer[i].trans); + sprintf(nstr6, "%d", layer[i].hline); + } + if (last_pressed==SCAN_DOWN) + { + layer[i].pmultx=atoi(nstr1); + layer[i].pdivx=atoi(nstr2); + layer[i].pmulty=atoi(nstr3); + layer[i].pdivy=atoi(nstr4); + layer[i].trans=atoi(nstr5); + layer[i].hline=atoi(nstr6); + last_pressed=0; key[SCAN_DOWN]=0; + if (i5) i=0; + if (i>=numlayers) i=0; + + sprintf(nstr1, "%d", layer[i].pmultx); + sprintf(nstr2, "%d", layer[i].pdivx); + sprintf(nstr3, "%d", layer[i].pmulty); + sprintf(nstr4, "%d", layer[i].pdivy); + last_pressed=0; + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + lpxofs = (mx-mxo); + lpyofs = (my-myo); + if (!mb) moving=0; + if (lpxofs<16) lpxofs = 16; + if (lpyofs<16) lpyofs = 16; + if (lpxofs+lpxsize>335) lpxofs = 336-lpxsize; + if (lpyofs+lpysize>sy+16) lpyofs = (sy+16)-lpysize; + } + + Window(lpxofs, lpyofs, lpxofs+lpxsize, lpyofs+lpysize, "Edit Layer Properties"); + GotoXY(lpxofs+3, lpyofs+10); printstring("Parallax controls:"); + GotoXY(lpxofs+4, lpyofs+21); printstring("MultX:"); + GotoXY(lpxofs+12, lpyofs+31); printstring("DivX:"); + GotoXY(lpxofs+93, lpyofs+21); printstring("MultY:"); + GotoXY(lpxofs+101, lpyofs+31); printstring("DivY:"); + TextField(lpxofs+29, lpyofs+19, 60, nstr1, ctf == 1 ? cb : 0); + TextField(lpxofs+29, lpyofs+29, 60, nstr2, ctf == 2 ? cb : 0); + TextField(lpxofs+118, lpyofs+19, 60, nstr3, ctf == 3 ? cb : 0); + TextField(lpxofs+118, lpyofs+29, 60, nstr4, ctf == 4 ? cb : 0); + HLine(lpxofs+1, lpyofs+43, 188, white); + GotoXY(lpxofs+6, lpyofs+49); printstring("Transparent"); + GotoXY(lpxofs+32, lpyofs+56); printstring("HLine"); + CheckBox(lpxofs+56, lpyofs+48, layer[i].trans); + CheckBox(lpxofs+56, lpyofs+56, layer[i].hline); + Button(lpxofs+156, lpyofs+55, "OK"); + GotoXY(lpxofs+144, lpyofs+47); printstring("Layer"); + sprintf(strbuf,"%d",i); GotoXY(lpxofs+168, lpyofs+47); printstring(strbuf); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>lpxofs+29 && mxlpyofs+19 && mylpxofs+29 && mxlpyofs+29 && mylpxofs+118 && mxlpyofs+19 && mylpxofs+118 && mxlpyofs+29 && mylpxofs+56 && mxlpyofs+48 && mylpxofs+56 && mxlpyofs+56 && mylpxofs+156 && mxlpyofs+55 && my(lpxofs+lpxsize-9) && (mx(lpyofs+1) && (mylpxofs && mxlpyofs && my<(lpyofs+9) && !moving) + { + moving=1; + mxo=mx-lpxofs; + myo=my-lpyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_UP) + { + layer[i].pmultx=atoi(nstr1); + layer[i].pdivx=atoi(nstr2); + layer[i].pmulty=atoi(nstr3); + layer[i].pdivy=atoi(nstr4); + last_pressed=0; key[SCAN_UP]=0; + if (i) i--; else i=numlayers-1; + sprintf(nstr1, "%d", layer[i].pmultx); + sprintf(nstr2, "%d", layer[i].pdivx); + sprintf(nstr3, "%d", layer[i].pmulty); + sprintf(nstr4, "%d", layer[i].pdivy); + } + if (last_pressed==SCAN_DOWN) + { + layer[i].pmultx=atoi(nstr1); + layer[i].pdivx=atoi(nstr2); + layer[i].pmulty=atoi(nstr3); + layer[i].pdivy=atoi(nstr4); + last_pressed=0; key[SCAN_DOWN]=0; + if (i= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + amxofs = (mx-mxo); + amyofs = (my-myo); + if (!mb) moving=0; + if (amxofs<16) amxofs = 16; + if (amyofs<16) amyofs = 16; + if (amxofs+amxsize>335) amxofs = 336-amxsize; + if (amyofs+amysize>sy+16) amyofs = (sy+16)-amysize; + } + + sprintf(strbuf, "About MapEd %s", ME2_VERSION); + Window(amxofs, amyofs, amxofs+amxsize, amyofs+amysize, strbuf); + sprintf(strbuf, "MapEd v.%s", ME2_VERSION); + GotoXY(amxofs+52, amyofs+16); printstring(strbuf); + GotoXY(amxofs+31, amyofs+22); printstring("Copyright (C) 1998 vecna"); + GotoXY(amxofs+40, amyofs+28); printstring("All Rights Reserved"); + GotoXY(amxofs+(75-pixels("Additional code by Ric")/2), amyofs+41); + printstring("Additional code by Ric"); + GotoXY(amxofs+(75-pixels("Additional code by aen")/2), amyofs+47); + printstring("Additional code by aen"); + GotoXY(amxofs+(75-pixels("Additional code by zeromus")/2), amyofs+53); + printstring("Additional code by zeromus"); + Button(amxofs+60, amyofs+68, "OK"); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if ((mb==1 && mx>amxofs+66 && mxamyofs+68 && my(amxofs+amxsize-9) && (mx(amyofs+1) && (myamxofs && mxamyofs && my<(amyofs+9) && !moving) + { + moving=1; + mxo=mx-amxofs; + myo=my-amyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB) + { + switch (ctf) + { + case 0: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + + } while (!done); +} + +int cnxsize=125, cnysize=50; +int cnxofs=114, cnyofs=70; + +int Confirm(char *message) +{ char done=0, moving=0; + int mxo, myo, cursorblink; + char ctf=0, cb=0, c, t, *str; + + last_pressed=0; + WaitRelease(); + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + cnxofs = (mx-mxo); + cnyofs = (my-myo); + if (!mb) moving=0; + if (cnxofs<16) cnxofs = 16; + if (cnyofs<16) cnyofs = 16; + if (cnxofs+cnxsize>335) cnxofs = 336-cnxsize; + if (cnyofs+cnysize>sy+16) cnyofs = (sy+16)-cnysize; + } + + Window(cnxofs, cnyofs, cnxofs+cnxsize, cnyofs+cnysize, "Confirm? (Y/N)"); + GotoXY(cnxofs+125/2-(pixels(message)/2), cnyofs+15); printstring(message); + + Button(cnxofs+24, cnyofs+30, "Yes"); + Button(cnxofs+69, cnyofs+30, "No"); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>cnxofs+24 && mxcnyofs+30 && mycnxofs+69 && mxcnyofs+30 && my(cnxofs+cnxsize-9) && (mx(cnyofs+1) && (mycnxofs && mxcnyofs && my<(cnyofs+9) && !moving) + { + moving=1; + mxo=mx-cnxofs; + myo=my-cnyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + if (last_pressed==SCAN_N) + { + key[SCAN_N]=0; + done=1; + break; + } + if (last_pressed==SCAN_Y) + { + key[SCAN_Y]=0; + return 1; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB) + { + switch (ctf) + { + case 0: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + + } while (!done); + return 0; +} + +int lmxsize=145, lmysize=36; +int lmxofs=80, lmyofs=50; + +void LoadMAPDialog() +{ char lmapname[80]; + char done=0, moving=0; + int mxo, myo, cursorblink; + char ctf=0, cb=0, c, t, *str; + + memset(lmapname, 0, 80); + last_pressed=0; + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + lmxofs = (mx-mxo); + lmyofs = (my-myo); + if (!mb) moving=0; + if (lmxofs<16) lmxofs = 16; + if (lmyofs<16) lmyofs = 16; + if (lmxofs+lmxsize>335) lmxofs = 336-lmxsize; + if (lmyofs+lmysize>sy+16) lmyofs = (sy+16)-lmysize; + } + + Window(lmxofs, lmyofs, lmxofs+lmxsize, lmyofs+lmysize, "Load MAP"); + GotoXY(lmxofs+2, lmyofs+13); printstring("Load MAP:"); + TextField(lmxofs+38, lmyofs+11, 70, lmapname, ctf == 1 ? cb : 0); + Button(lmxofs+79, lmyofs+22, "OK"); + Button(lmxofs+111, lmyofs+22, "Cancel"); + Button(lmxofs+111, lmyofs+11, "Browse"); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>lmxofs+38 && mxlmyofs+11 && mylmxofs+79 && mxlmyofs+22 && mylmxofs+111 && mxlmyofs+22 && mylmxofs+111 && mxlmyofs+11 && my(lmxofs+lmxsize-9) && (mx(lmyofs+1) && (mylmxofs && mxlmyofs && my<(lmyofs+9) && !moving) + { + moving=1; + mxo=mx-lmxofs; + myo=my-lmyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB) + { + switch (ctf) + { + case 0: ctf=1; str=lmapname; break; + case 1: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + + } while (!done); +} + +int lvxsize=145, lvysize=35; +int lvxofs=80, lvyofs=50; + +void LoadVSPDialog() +{ char done=0, moving=0; + int mxo, myo, cursorblink; + char ctf=0, cb=0, c, t, *str; + char lvspname[80]; + + last_pressed=0; + memset(lvspname,0,80); + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + lvxofs = (mx-mxo); + lvyofs = (my-myo); + if (!mb) moving=0; + if (lvxofs<16) lvxofs = 16; + if (lvyofs<16) lvyofs = 16; + if (lvxofs+lvxsize>335) lvxofs = 336-lvxsize; + if (lvyofs+lvysize>sy+16) lvyofs = (sy+16)-lvysize; + } + + Window(lvxofs, lvyofs, lvxofs+lvxsize, lvyofs+lvysize, "Load VSP"); + GotoXY(lvxofs+2, lvyofs+13); printstring("Load VSP:"); + TextField(lvxofs+38, lvyofs+11, 70, lvspname, ctf == 1 ? cb : 0); + Button(lvxofs+79, lvyofs+21, "OK"); + Button(lvxofs+111, lvyofs+21, "Cancel"); + Button(lvxofs+111, lvyofs+10, "Browse"); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>lvxofs+38 && mxlvyofs+11 && mylvxofs+79 && mxlvyofs+21 && mylvxofs+111 && mxlvyofs+21 && mylvxofs+111 && mxlvyofs+10 && my(lvxofs+lvxsize-9) && (mx(lvyofs+1) && (mylvxofs && mxlvyofs && my<(lvyofs+9) && !moving) + { + moving=1; + mxo=mx-lvxofs; + myo=my-lvyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=1; str=lvspname; break; + case 1: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=1; str=lvspname; break; + case 1: ctf=0; str=lvspname; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } while (!done); +} +int mpxsize=175, mpysize=37; +int mpxofs=60, mpyofs=60; + +void MPDialog() +{ char done=0, moving=0, playmod[80]; + int mxo, myo, cursorblink; + char ctf=0, cb=0, c, t, *str; + + last_pressed=0; + memset(playmod, 0, 80); + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + mpxofs = (mx-mxo); + mpyofs = (my-myo); + if (!mb) moving=0; + if (mpxofs<16) mpxofs = 16; + if (mpyofs<16) mpyofs = 16; + if (mpxofs+mpxsize>335) mpxofs = 336-mpxsize; + if (mpyofs+mpysize>sy+16) mpyofs = (sy+16)-mpysize; + } + + Window(mpxofs, mpyofs, mpxofs+mpxsize, mpyofs+mpysize, "MOD Player Controls"); + GotoXY(mpxofs+2, mpyofs+15); printstring("MOD Playing:"); + TextField(mpxofs+49, mpyofs+13, 90, playmod, ctf == 1 ? cb : 0); + Button(mpxofs+110, mpyofs+24, "Play"); + Button(mpxofs+142, mpyofs+24, "Stop"); + Button(mpxofs+78, mpyofs+24, "OK"); + Button(mpxofs+142, mpyofs+12, "Browse"); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>mpxofs+49 && mxmpyofs+13 && mympxofs+110 && mxmpyofs+24 && mympxofs+142 && mxmpyofs+24 && mympxofs+78 && mxmpyofs+24 && mympxofs+142 && mxmpyofs+12 && my(mpxofs+mpxsize-9) && (mx(mpyofs+1) && (mympxofs && mxmpyofs && my<(mpyofs+9) && !moving) + { + moving=1; + mxo=mx-mpxofs; + myo=my-mpyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=1; str=playmod; break; + case 1: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=1; str=playmod; break; + case 1: ctf=0; str=playmod; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } while (!done); +} + +int zexsize=135, zeysize=86; +int zexofs=80, zeyofs=40; + +void ZoneEdDialog() +{ char done=0, moving=0; + int mxo, myo, cursorblink, i=0; + char ctf=0, cb=0, c, t, *str; + char nstr1[80], nstr2[80], nstr3[80], nstr4[80]; + + i=curzone; + sprintf(nstr1, "%d", zones[i].script); + sprintf(nstr2, "%d", zones[i].percent); + sprintf(nstr3, "%d", zones[i].delay); + sprintf(nstr4, "%d", zones[i].entityscript); + last_pressed=0; + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + zexofs = (mx-mxo); + zeyofs = (my-myo); + if (!mb) moving=0; + if (zexofs<16) zexofs = 16; + if (zeyofs<16) zeyofs = 16; + if (zexofs+zexsize>335) zexofs = 336-zexsize; + if (zeyofs+zeysize>sy+16) zeyofs = (sy+16)-zeysize; + } + + Window(zexofs, zeyofs, zexofs+zexsize, zeyofs+zeysize, "Zone Editor"); + GotoXY(zexofs+8, zeyofs+12); printstring("Name:"); + TextField(zexofs+30, zeyofs+10, 100, zones[i].name, ctf == 1 ? cb : 0); + GotoXY(zexofs+5, zeyofs+22); printstring("Script:"); + TextField(zexofs+30, zeyofs+20, 100, nstr1, ctf == 2 ? cb : 0); + GotoXY(zexofs+2, zeyofs+32); printstring("Chance:"); + TextField(zexofs+30, zeyofs+30, 100, nstr2, ctf == 3 ? cb : 0); + GotoXY(zexofs+7, zeyofs+42); printstring("Delay:"); + TextField(zexofs+30, zeyofs+40, 100, nstr3, ctf == 4 ? cb : 0); + GotoXY(zexofs+4, zeyofs+52); printstring("Entity:"); + TextField(zexofs+30, zeyofs+50, 100, nstr4, ctf == 5 ? cb : 0); + CheckBox(zexofs+20, zeyofs+61, zones[i].aaa); + GotoXY(zexofs+31, zeyofs+62); printstring("Allow Adjacent Activation"); + Button(zexofs+99, zeyofs+71, "OK"); + GotoXY(zexofs+12, zeyofs+73); printstring("Zone"); + GotoXY(zexofs+30, zeyofs+73); + sprintf(strbuf,"%d",i); printstring(strbuf); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>zexofs+30 && mxzeyofs+10 && myzexofs+30 && mxzeyofs+20 && myzexofs+30 && mxzeyofs+30 && myzexofs+30 && mxzeyofs+40 && myzexofs+30 && mxzeyofs+50 && myzexofs+20 && mxzeyofs+61 && myzexofs+99 && mxzeyofs+71 && my(zexofs+zexsize-9) && (mx(zeyofs+1) && (myzexofs && mxzeyofs && my<(zeyofs+9) && !moving) + { + moving=1; + mxo=mx-zexofs; + myo=my-zeyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + if (last_pressed==SCAN_UP) + { + zones[i].script=atoi(nstr1); + zones[i].percent=atoi(nstr2); + zones[i].delay=atoi(nstr3); + zones[i].entityscript=atoi(nstr4); + if (i<255) i++; else i=0; + last_pressed=0; key[SCAN_UP]=0; + sprintf(nstr1, "%d", zones[i].script); + sprintf(nstr2, "%d", zones[i].percent); + sprintf(nstr3, "%d", zones[i].delay); + sprintf(nstr4, "%d", zones[i].entityscript); + continue; + } + if (last_pressed==SCAN_DOWN) + { + zones[i].script=atoi(nstr1); + zones[i].percent=atoi(nstr2); + zones[i].delay=atoi(nstr3); + zones[i].entityscript=atoi(nstr4); + if (i) i--; else i=255; + last_pressed=0; key[SCAN_DOWN]=0; + sprintf(nstr1, "%d", zones[i].script); + sprintf(nstr2, "%d", zones[i].percent); + sprintf(nstr3, "%d", zones[i].delay); + sprintf(nstr4, "%d", zones[i].entityscript); + continue; + } + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=1; str=zones[i].name; break; + case 1: ctf=2; str=nstr1; break; + case 2: ctf=3; str=nstr2; break; + case 3: ctf=4; str=nstr3; break; + case 4: ctf=5; str=nstr4; break; + case 5: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=5; str=nstr4; break; + case 1: ctf=0; str=0; break; + case 2: ctf=1; str=zones[i].name; break; + case 3: ctf=2; str=nstr1; break; + case 4: ctf=3; str=nstr2; break; + case 5: ctf=4; str=nstr3; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + + } while (!done); + curzone=i; + zones[i].script=atoi(nstr1); + zones[i].percent=atoi(nstr2); + zones[i].delay=atoi(nstr3); + zones[i].entityscript=atoi(nstr4); +} + +int exsize=180, eysize=175; +int exofs=70, eyofs=30; + +void EntityEditor(int i) +{ char done=0, moving=0; + int mxo, myo, cursorblink; + char ctf=0, cb=0, c, t, *str; + 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]; + + sprintf(nstr1, "%d", entity[i].x); + sprintf(nstr2, "%d", entity[i].y); + sprintf(nstr3, "%d", entity[i].chrindex); + sprintf(nstr4, "%d", entity[i].speed); + sprintf(nstr5, "%d", entity[i].actscript); + sprintf(nstr6, "%d", entity[i].movecode); + sprintf(nstr7, "%d", entity[i].step); + sprintf(nstr8, "%d", entity[i].data2); + sprintf(nstr9, "%d", entity[i].data3); + sprintf(nstr10, "%d", entity[i].delay); + sprintf(nstr11, "%d", entity[i].data5); + sprintf(nstr12, "%d", entity[i].data6); + sprintf(nstr13, "%d", entity[i].movescript); + last_pressed=0; + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + exofs = (mx-mxo); + eyofs = (my-myo); + if (!mb) moving=0; + if (exofs<16) exofs = 16; + if (eyofs<16) eyofs = 16; + if (exofs+exsize>335) exofs = 336-exsize; + if (eyofs+eysize>sy+16) eyofs = (sy+16)-eysize; + } + + Window(exofs, eyofs, exofs+exsize, eyofs+eysize, "Entity Editor"); + GotoXY(exofs+7, eyofs+13); printstring("Desc:"); + TextField(exofs+26, eyofs+11, 80, entity[i].desc, ctf == 1 ? cb : 0); + GotoXY(exofs+19, eyofs+23); printstring("X:"); + TextField(exofs+26, eyofs+21, 80, nstr1, ctf == 2 ? cb : 0); + GotoXY(exofs+19, eyofs+33); printstring("Y:"); + TextField(exofs+26, eyofs+31, 80, nstr2, ctf == 3 ? cb : 0); + GotoXY(exofs+11, eyofs+43); printstring("CHR:"); + TextField(exofs+26, eyofs+41, 80, nstr3, ctf == 4 ? cb : 0); + + // *** + // entity image goes here (just above chr list button) + // *** + + BigButton(exofs+116, eyofs+61, "CHR List"); + BigButton(exofs+115, eyofs+153, "Scripts"); + GotoXY(exofs+2, eyofs+155); printstring("Movescript:"); + HLine(exofs+1, eyofs+73, 178, white); + GotoXY(exofs+3, eyofs+53); printstring("Speed:"); + TextField(exofs+26, eyofs+51, 80, nstr4, ctf == 5 ? cb : 0); + TextField(exofs+26, eyofs+61, 80, nstr5, ctf == 6 ? cb : 0); + GotoXY(exofs+107, eyofs+79); printstring("Is Obstruction"); + CheckBox(exofs+161, eyofs+87, entity[i].obsmode1); + GotoXY(exofs+102, eyofs+88); printstring("Is Obstructable"); + CheckBox(exofs+161, eyofs+78, entity[i].obsmode2); + GotoXY(exofs+24, eyofs+79); printstring("Auto Face"); + CheckBox(exofs+61, eyofs+78, entity[i].face); + GotoXY(exofs+10, eyofs+88); printstring("Activ. Method"); + CheckBox(exofs+61, eyofs+87, entity[i].actm); + HLine(exofs+1, eyofs+98, 178, white); + GotoXY(exofs+126, eyofs+166); printstring("Entity"); + GotoXY(exofs+6, eyofs+104); printstring("Move Code:"); + TextField(exofs+47, eyofs+103, 80, nstr6, ctf == 7 ? cb : 0); + TextField(exofs+30, eyofs+115, 40, nstr7, ctf == 8 ? cb : 0); + TextField(exofs+30, eyofs+125, 40, nstr8, ctf == 9 ? cb : 0); + TextField(exofs+30, eyofs+135, 40, nstr9, ctf == 10 ? cb : 0); + TextField(exofs+113, eyofs+115, 40, nstr10, ctf == 11 ? cb : 0); + TextField(exofs+113, eyofs+125, 40, nstr11, ctf == 12 ? cb : 0); + TextField(exofs+113, eyofs+135, 40, nstr12, ctf == 13 ? cb : 0); + HLine(exofs+1, eyofs+148, 178, white); + TextField(exofs+46, eyofs+153, 60, nstr13, ctf == 14 ? cb : 0); + GotoXY(exofs+5, eyofs+63); printstring("Activ:"); + GotoXY(exofs+152, eyofs+166); + sprintf(strbuf, "%d/%d", i, entities-1); printstring(strbuf); + entity[i].movecode=atoi(nstr6); + if (ctf!=4) entity[i].chrindex=atoi(nstr3); + + switch (entity[i].movecode) + { + case 0: GotoXY(exofs+131, eyofs+104); printstring("Stopped"); break; + case 1: GotoXY(exofs+131, eyofs+104); printstring("Wander"); + GotoXY(exofs+11, eyofs+116); printstring("Step:"); + GotoXY(exofs+90, eyofs+116); printstring("Delay:"); break; + case 2: GotoXY(exofs+131, eyofs+104); printstring("Wander Zone"); + GotoXY(exofs+11, eyofs+116); printstring("Step:"); + GotoXY(exofs+90, eyofs+116); printstring("Delay:"); + GotoXY(exofs+10, eyofs+126); printstring("Zone:"); break; + case 3: GotoXY(exofs+131, eyofs+104); printstring("Wander Box"); + GotoXY(exofs+11, eyofs+116); printstring("Step:"); + GotoXY(exofs+90, eyofs+116); printstring("Delay:"); + GotoXY(exofs+21, eyofs+126); printstring("X1:"); + GotoXY(exofs+21, eyofs+136); printstring("Y1:"); + GotoXY(exofs+102, eyofs+126); printstring("X2:"); + GotoXY(exofs+102, eyofs+136); printstring("Y2:"); break; + case 4: GotoXY(exofs+131, eyofs+104); printstring("Scripted"); break; + } + switch (entity[i].actm) + { + case 0: GotoXY(exofs+72, eyofs+88); printstring("Actv"); break; + case 1: GotoXY(exofs+72, eyofs+88); printstring("Adjc"); break; + } + + if (chrs[entity[i].chrindex].frame) + TCopySprite(exofs+143-(chrs[entity[i].chrindex].fx/2), + eyofs+31-(chrs[entity[i].chrindex].fy/2), + chrs[entity[i].chrindex].fx, chrs[entity[i].chrindex].fy, + chrs[entity[i].chrindex].frame); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>exofs+26 && mxeyofs+11 && myexofs+26 && mxeyofs+21 && myexofs+26 && mxeyofs+31 && myexofs+26 && mxeyofs+41 && myexofs+116 && mxeyofs+61 && myexofs+26 && mxeyofs+51 && myexofs+26 && mxeyofs+61 && myexofs+115 && mxeyofs+153 && myexofs+161 && mxeyofs+87 && myexofs+161 && mxeyofs+78 && myexofs+61 && mxeyofs+78 && myexofs+61 && mxeyofs+87 && myexofs+47 && mxeyofs+103 && myexofs+30 && mxeyofs+115 && myexofs+30 && mxeyofs+125 && myexofs+30 && mxeyofs+135 && myexofs+113 && mxeyofs+115 && myexofs+113 && mxeyofs+125 && myexofs+113 && mxeyofs+135 && myexofs+46 && mxeyofs+153 && my(exofs+exsize-9) && (mx(eyofs+1) && (myexofs && mxeyofs && my<(eyofs+9) && !moving) + { + moving=1; + mxo=mx-exofs; + myo=my-eyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_UP) + { + entity[i].x=atoi(nstr1); + entity[i].y=atoi(nstr2); + entity[i].chrindex=atoi(nstr3); + entity[i].speed=atoi(nstr4); + entity[i].actscript=atoi(nstr5); + entity[i].movecode=atoi(nstr6); + entity[i].step=atoi(nstr7); + entity[i].data2=atoi(nstr8); + entity[i].data3=atoi(nstr9); + entity[i].delay=atoi(nstr10); + entity[i].data5=atoi(nstr11); + entity[i].data6=atoi(nstr12); + entity[i].movescript=atoi(nstr13); + + if (i= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + clxofs = (mx-mxo); + clyofs = (my-myo); + if (!mb) moving=0; + if (clxofs<16) clxofs = 16; + if (clyofs<16) clyofs = 16; + if (clxofs+clxsize>335) clxofs = 336-clxsize; + if (clyofs+clysize>sy+16) clyofs = (sy+16)-clysize; + } + + Window(clxofs, clyofs, clxofs+clxsize, clyofs+clysize, "Entity CHR Reference Index"); + TextField(clxofs+14, clyofs+11, 120, chrlist[base].t, ctf == 1 ? cb : 0); + TextField(clxofs+14, clyofs+22, 120, chrlist[base+1].t, ctf == 2 ? cb : 0); + TextField(clxofs+14, clyofs+33, 120, chrlist[base+2].t, ctf == 3 ? cb : 0); + TextField(clxofs+14, clyofs+44, 120, chrlist[base+3].t, ctf == 4 ? cb : 0); + TextField(clxofs+14, clyofs+55, 120, chrlist[base+4].t, ctf == 5 ? cb : 0); + Button(clxofs+137, clyofs+65, "OK"); + Button(clxofs+137, clyofs+10, "Browse"); + Button(clxofs+137, clyofs+21, "Browse"); + Button(clxofs+137, clyofs+32, "Browse"); + Button(clxofs+137, clyofs+43, "Browse"); + Button(clxofs+137, clyofs+54, "Browse"); + GotoXY(clxofs+3, clyofs+11); sprintf(strbuf,"%d:", base); printstring(strbuf); + GotoXY(clxofs+3, clyofs+22); sprintf(strbuf,"%d:", base+1); printstring(strbuf); + GotoXY(clxofs+3, clyofs+33); sprintf(strbuf,"%d:", base+2); printstring(strbuf); + GotoXY(clxofs+3, clyofs+44); sprintf(strbuf,"%d:", base+3); printstring(strbuf); + GotoXY(clxofs+3, clyofs+55); sprintf(strbuf,"%d:", base+4); printstring(strbuf); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>clxofs+14 && mxclyofs+11 && myclxofs+14 && mxclyofs+22 && myclxofs+14 && mxclyofs+33 && myclxofs+14 && mxclyofs+44 && myclxofs+14 && mxclyofs+55 && myclxofs+137 && mxclyofs+65 && myclxofs+137 && mxclyofs+10 && myclxofs+137 && mxclyofs+21 && myclxofs+137 && mxclyofs+32 && myclxofs+137 && mxclyofs+43 && myclxofs+137 && mxclyofs+54 && my(clxofs+clxsize-9) && (mx(clyofs+1) && (myclxofs && mxclyofs && my<(clyofs+9) && !moving) + { + moving=1; + mxo=mx-clxofs; + myo=my-clyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + if (key[SCAN_UP]) + { + key[SCAN_UP]=0; + if (base) base--; + last_pressed=0; + continue; + } + if (key[SCAN_DOWN]) + { + key[SCAN_DOWN]=0; + if (base<95) base++; + last_pressed=0; + continue; + } + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=1; str=chrlist[base].t; break; + case 1: ctf=2; str=chrlist[base+1].t; break; + case 2: ctf=3; str=chrlist[base+2].t; break; + case 3: ctf=4; str=chrlist[base+3].t; break; + case 4: ctf=5; str=chrlist[base+4].t; break; + case 5: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=5; str=chrlist[base].t; break; + case 1: ctf=0; str=chrlist[base].t; break; + case 2: ctf=1; str=chrlist[base+1].t; break; + case 3: ctf=2; str=chrlist[base+2].t; break; + case 4: ctf=3; str=chrlist[base+3].t; break; + case 5: ctf=4; str=chrlist[base+4].t; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } while (!done); +} + +int msxsize=181, msysize=77; +int msxofs=70, msyofs=50; +char base1=0; + +void MoveScriptDialog() +{ char done=0, moving=0; + int mxo, myo, cursorblink; + char ctf=0, cb=0, c, t, *str; + + last_pressed=0; + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + msxofs = (mx-mxo); + msyofs = (my-myo); + if (!mb) moving=0; + if (msxofs<16) msxofs = 16; + if (msyofs<16) msyofs = 16; + if (msxofs+msxsize>335) msxofs = 336-msxsize; + if (msyofs+msysize>sy+16) msyofs = (sy+16)-msysize; + } + + Window(msxofs, msyofs, msxofs+msxsize, msyofs+msysize, "Movement Script Editor"); + TextField(msxofs+15, msyofs+12, 160, ms[base1].t, ctf == 1 ? cb : 0); + TextField(msxofs+15, msyofs+22, 160, ms[base1+1].t, ctf == 2 ? cb : 0); + TextField(msxofs+15, msyofs+32, 160, ms[base1+2].t, ctf == 3 ? cb : 0); + TextField(msxofs+15, msyofs+42, 160, ms[base1+3].t, ctf == 4 ? cb : 0); + TextField(msxofs+15, msyofs+52, 160, ms[base1+4].t, ctf == 5 ? cb : 0); + Button(msxofs+146, msyofs+63, "OK"); + GotoXY(msxofs+3, msyofs+11); sprintf(strbuf,"%d:", base1); printstring(strbuf); + GotoXY(msxofs+3, msyofs+22); sprintf(strbuf,"%d:", base1+1); printstring(strbuf); + GotoXY(msxofs+3, msyofs+33); sprintf(strbuf,"%d:", base1+2); printstring(strbuf); + GotoXY(msxofs+3, msyofs+44); sprintf(strbuf,"%d:", base1+3); printstring(strbuf); + GotoXY(msxofs+3, msyofs+55); sprintf(strbuf,"%d:", base1+4); printstring(strbuf); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>msxofs+15 && mxmsyofs+12 && mymsxofs+15 && mxmsyofs+22 && mymsxofs+15 && mxmsyofs+32 && mymsxofs+15 && mxmsyofs+42 && mymsxofs+15 && mxmsyofs+52 && mymsxofs+146 && mxmsyofs+63 && my(msxofs+msxsize-9) && (mx(msyofs+1) && (mymsxofs && mxmsyofs && my<(msyofs+9) && !moving) + { + moving=1; + mxo=mx-msxofs; + myo=my-msyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + if (key[SCAN_UP]) + { + key[SCAN_UP]=0; + if (base1) base1--; + last_pressed=0; + continue; + } + if (key[SCAN_DOWN]) + { + key[SCAN_DOWN]=0; + if (base1<95) base1++; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=1; str=ms[base1].t; break; + case 1: ctf=2; str=ms[base1+1].t; break; + case 2: ctf=3; str=ms[base1+2].t; break; + case 3: ctf=4; str=ms[base1+3].t; break; + case 4: ctf=5; str=ms[base1+4].t; break; + case 5: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=5; str=ms[base1+4].t; break; + case 1: ctf=0; str=0; break; + case 2: ctf=1; str=ms[base1].t; break; + case 3: ctf=2; str=ms[base1+1].t; break; + case 4: ctf=3; str=ms[base1+2].t; break; + case 5: ctf=4; str=ms[base1+3].t; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } while (!done); +} + +int prxsize=150, prysize=80; +int prxofs=50, pryofs=60; + +void MapPropertiesDialog() +{ char done=0, moving=0; + int mxo, myo, cursorblink; + char ctf=0, cb=0, c, t, *str; + + last_pressed=0; + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + prxofs = (mx-mxo); + pryofs = (my-myo); + if (!mb) moving=0; + if (prxofs<16) prxofs = 16; + if (pryofs<16) pryofs = 16; + if (prxofs+prxsize>335) prxofs = 336-prxsize; + if (pryofs+prysize>sy+16) pryofs = (sy+16)-prysize; + } + + Window(prxofs, pryofs, prxofs+prxsize, pryofs+prysize, "MAP Properties"); + GotoXY(prxofs+10, pryofs+23); printstring("Music:"); + TextField(prxofs+33, pryofs+11, 112, mapname, ctf == 1 ? cb : 0); + TextField(prxofs+33, pryofs+21, 112, musname, ctf == 2 ? cb : 0); + GotoXY(prxofs+18, pryofs+33); printstring("VSP:"); + TextField(prxofs+33, pryofs+31, 112, vspname, ctf == 3 ? cb : 0); + GotoXY(prxofs+3, pryofs+43); printstring("rstring:"); + TextField(prxofs+33, pryofs+41, 112, rstring, ctf == 4 ? cb : 0); + BigButton(prxofs+97, pryofs+56, "Resize MAP"); + HLine(prxofs+1, pryofs+53, 148, white); + GotoXY(prxofs+3, pryofs+58); printstring("xsize:"); + sprintf(strbuf,"%d",layer[0].sizex); printstring(strbuf); + GotoXY(prxofs+49, pryofs+58); printstring("ysize:"); + sprintf(strbuf,"%d",layer[0].sizey); printstring(strbuf); + Button(prxofs+117, pryofs+67, "OK"); + GotoXY(prxofs+16, pryofs+13); printstring("MAP:"); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>prxofs+33 && mxpryofs+11 && myprxofs+33 && mxpryofs+21 && myprxofs+33 && mxpryofs+31 && myprxofs+33 && mxpryofs+41 && myprxofs+97 && mxpryofs+56 && myprxofs+117 && mxpryofs+67 && my(prxofs+prxsize-9) && (mx(pryofs+1) && (myprxofs && mxpryofs && my<(pryofs+9) && !moving) + { + moving=1; + mxo=mx-prxofs; + myo=my-pryofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=1; str=mapname; break; + case 1: ctf=2; str=musname; break; + case 2: ctf=3; str=vspname; break; + case 3: ctf=4; str=rstring; break; + case 4: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=4; str=rstring; break; + case 1: ctf=0; str=0; break; + case 2: ctf=1; str=mapname; break; + case 3: ctf=2; str=musname; break; + case 4: ctf=3; str=vspname; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + + } while (!done); + +} + +int rsxsize=134, rsysize=44; +int rsxofs=20, rsyofs=20; + +static void PutByte(byte *to, byte v, int x, int y, int w, int h) +{ + if (x<0 || x>=w || y<0 || y>=h) + return; + + to[(y*w)+x]=v; +} + +static byte GetByte(byte *from, int x, int y, int w, int h) +{ + if (x<0 || x>=w || y<0 || y>=h) + return 0; + + return from[(y*w)+x]; +} + +static void PutWord(word *to, word v, int x, int y, int w, int h) +{ + if (x<0 || x>=w || y<0 || y>=h) + return; + + to[(y*w)+x]=v; +} + +static word GetWord(word *from, int x, int y, int w, int h) +{ + if (x<0 || x>=w || y<0 || y>=h) + return 0; + + return from[(y*w)+x]; +} + +void ResizeMapDialog() +{ char done=0, moving=0; + int mxo, myo, cursorblink, basex, basey, i; //, xl, yl; + char ctf=0, cb=0, c, t; + char *str, *tb; //, *s1, *d1; + char nstr1[80], nstr2[80]; + word *tbw; //, *s=NULL,*d=NULL; + //int temp_width; + int a,b; + + basex=layer[0].sizex; + basey=layer[0].sizey; + sprintf(nstr1, "%d", basex); + sprintf(nstr2, "%d", basey); + last_pressed=0; + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + rsxofs = (mx-mxo); + rsyofs = (my-myo); + if (!mb) moving=0; + if (rsxofs<16) rsxofs = 16; + if (rsyofs<16) rsyofs = 16; + if (rsxofs+rsxsize>335) rsxofs = 336-rsxsize; + if (rsyofs+rsysize>sy+16) rsyofs = (sy+16)-rsysize; + } + + Window(rsxofs, rsyofs, rsxofs+rsxsize, rsyofs+rsysize, "Resize MAP"); + GotoXY(rsxofs+4, rsyofs+12); printstring("Base X:"); + GotoXY(rsxofs+4, rsyofs+22); printstring("Base Y:"); + TextField(rsxofs+30, rsyofs+10, 100, nstr1, ctf == 1 ? cb : 0); + TextField(rsxofs+30, rsyofs+20, 100, nstr2, ctf == 2 ? cb : 0); + Button(rsxofs+69, rsyofs+31, "Resize"); + Button(rsxofs+101, rsyofs+31, "Cancel"); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>rsxofs+30 && mxrsyofs+10 && myrsxofs+30 && mxrsyofs+20 && myrsxofs+69 && mxrsyofs+31 && myrsxofs+101 && mxrsyofs+31 && my(rsxofs+rsxsize-9) && (mx(rsyofs+1) && (myrsxofs && mxrsyofs && my<(rsyofs+9) && !moving) + { + moving=1; + mxo=mx-rsxofs; + myo=my-rsyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=1; str=nstr1; break; + case 1: ctf=2; str=nstr2; break; + case 2: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=2; str=nstr2; break; + case 1: ctf=0; str=0; break; + case 2: ctf=1; str=nstr1; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } while (!done); + basex=atoi(nstr1); + basey=atoi(nstr2); +} + +int cdxsize=150, cdysize=45; +int cdxofs=110, cdyofs=70; +char curtrack=1; + +void CDDialog() +{ char done=0, moving=0; + int mxo, myo, cursorblink; + char ctf=0, cb=0, c, t, *str; + + last_pressed=0; + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + cdxofs = (mx-mxo); + cdyofs = (my-myo); + if (!mb) moving=0; + if (cdxofs<16) cdxofs = 16; + if (cdyofs<16) cdyofs = 16; + if (cdxofs+cdxsize>335) cdxofs = 336-cdxsize; + if (cdyofs+cdysize>sy+16) cdyofs = (sy+16)-cdysize; + } + + Window(cdxofs, cdyofs, cdxofs+cdxsize, cdyofs+cdysize, "CD Player"); + Button(cdxofs+53, cdyofs+10, "Play"); + Button(cdxofs+53, cdyofs+21, "Stop"); + Button(cdxofs+85, cdyofs+10, "Eject"); + Button(cdxofs+85, cdyofs+21, "Close"); + Button(cdxofs+117, cdyofs+10, "Next"); + Button(cdxofs+117, cdyofs+21, "Prev"); + Button(cdxofs+117, cdyofs+32, "OK"); + GotoXY(cdxofs+4, cdyofs+18); printstring("Track "); + sprintf(strbuf,"%d",curtrack); printstring(strbuf); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>cdxofs+53 && mxcdyofs+10 && mycdxofs+53 && mxcdyofs+21 && mycdxofs+85 && mxcdyofs+10 && mycdxofs+85 && mxcdyofs+21 && mycdxofs+117 && mxcdyofs+10 && mycdxofs+117 && mxcdyofs+21 && my1) curtrack--; + while (mb) + { + ReadMouse(); + ShowPage(); + ReadMouse(); + } + WaitRelease(); continue; + } + + if ((mb==1 && mx>cdxofs+117 && mxcdyofs+32 && my(cdxofs+cdxsize-9) && (mx(cdyofs+1) && (mycdxofs && mxcdyofs && my<(cdyofs+9) && !moving) + { + moving=1; + mxo=mx-cdxofs; + myo=my-cdyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } while (!done); +} + +int ntxsize=130, nytsize=51; +int ntxofs=110, ntyofs=70; + +void NoticeDialog() +{ char done=0, moving=0; + int mxo, myo, cursorblink; + char ctf=0, cb=0, c, t, *str; + + last_pressed=0; + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + ntxofs = (mx-mxo); + ntyofs = (my-myo); + if (!mb) moving=0; + if (ntxofs<16) ntxofs = 16; + if (ntyofs<16) ntyofs = 16; + if (ntxofs+ntxsize>335) ntxofs = 336-ntxsize; + if (ntyofs+nytsize>sy+16) ntyofs = (sy+16)-nytsize; + } + + Window(ntxofs, ntyofs, ntxofs+ntxsize, ntyofs+nytsize, "Notice!"); + GotoXY(ntxofs+20, ntyofs+20); printstring("Don't forget to add this"); + GotoXY(ntxofs+14, ntyofs+26); printstring("layer to the Render String!"); + Button(ntxofs+50, ntyofs+36, "OK"); + GotoXY(ntxofs+25, ntyofs+14); printstring("Layer has been added."); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if ((mb==1 && mx>ntxofs+50 && mxntyofs+36 && my(ntxofs+ntxsize-9) && (mx(ntyofs+1) && (myntxofs && mxntyofs && my<(ntyofs+9) && !moving) + { + moving=1; + mxo=mx-ntxofs; + myo=my-ntyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } while (!done); +} + +int oxsize=150, oysize=98; +int oxofs=120, oyofs=70; +extern char vcedprog[80]; + +void OptionsDialog() +{ char done=0, moving=0; + int mxo, myo, cursorblink; + char ctf=0, cb=0, c, t, *str; + char nstr1[80], nstr2[80], nstr3[80], nstr4[80]; + + sprintf(nstr1, "%d", winbg); + sprintf(nstr2, "%d", titlebg); + sprintf(nstr3, "%d", brightw); + sprintf(nstr4, "%d", darkw); + last_pressed=0; + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + oxofs = (mx-mxo); + oyofs = (my-myo); + if (!mb) moving=0; + if (oxofs<16) oxofs = 16; + if (oyofs<16) oyofs = 16; + if (oxofs+oxsize>335) oxofs = 336-oxsize; + if (oyofs+oysize>sy+16) oyofs = (sy+16)-oysize; + } + + Window(oxofs, oyofs, oxofs+oxsize, oyofs+oysize, "MapEd Options"); + GotoXY(oxofs+16, oyofs+12); printstring("Smooth Scroll"); + CheckBox(oxofs+5, oyofs+11, scrollmode); + GotoXY(oxofs+16, oyofs+20); printstring("Tile Highlight"); + CheckBox(oxofs+5, oyofs+19, mh); + GotoXY(oxofs+38, oyofs+31); printstring("Window Background"); + TextField(oxofs+5, oyofs+29, 30, nstr1, ctf == 1 ? cb : 0); + TextField(oxofs+5, oyofs+39, 30, nstr2, ctf == 2 ? cb : 0); + GotoXY(oxofs+38, oyofs+41); printstring("Titlebar Background"); + CheckBox(oxofs+74, oyofs+11, vm); + GotoXY(oxofs+84, oyofs+12); printstring("320x240 driver"); + CheckBox(oxofs+74, oyofs+19, mouse_scroll); + GotoXY(oxofs+84, oyofs+20); printstring("Mouse Scrolling"); + TextField(oxofs+5, oyofs+49, 30, nstr3, ctf == 3 ? cb : 0); + TextField(oxofs+5, oyofs+59, 30, nstr4, ctf == 4 ? cb : 0); + GotoXY(oxofs+38, oyofs+51); printstring("White"); + GotoXY(oxofs+38, oyofs+61); printstring("Shadow"); + Button(oxofs+60, oyofs+85, "OK"); + HLine(oxofs+1, oyofs+71, 148, white); + GotoXY(oxofs+3, oyofs+76); printstring("Editor:"); + TextField(oxofs+28, oyofs+74, 118, vcedprog, ctf == 5 ? cb : 0); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>oxofs+5 && mxoyofs+11 && my>4; xwin=xwin<<4; + ywin=ywin>>4; ywin=ywin<<4; + scrollmode ^= 1; WaitRelease(); continue; + } + + if (mb==1 && mx>oxofs+5 && mxoyofs+19 && myoxofs+5 && mxoyofs+29 && myoxofs+5 && mxoyofs+39 && myoxofs+74 && mxoyofs+11 && myoxofs+74 && mxoyofs+19 && myoxofs+5 && mxoyofs+49 && myoxofs+5 && mxoyofs+59 && myoxofs+60 && mxoyofs+85 && myoxofs+28 && mxoyofs+74 && my(oxofs+oxsize-9) && (mx(oyofs+1) && (myoxofs && mxoyofs && my<(oyofs+9) && !moving) + { + moving=1; + mxo=mx-oxofs; + myo=my-oyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=1; str=nstr1; break; + case 1: ctf=2; str=nstr2; break; + case 2: ctf=3; str=nstr3; break; + case 3: ctf=4; str=nstr4; break; + case 4: ctf=5; str=vcedprog; break; + case 5: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=5; str=vcedprog; break; + case 1: ctf=0; str=0; break; + case 2: ctf=1; str=nstr1; break; + case 3: ctf=2; str=nstr2; break; + case 4: ctf=3; str=nstr3; break; + case 5: ctf=4; str=nstr4; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } while (!done); + winbg=atoi(nstr1); + titlebg=atoi(nstr2); + brightw=atoi(nstr3); + darkw=atoi(nstr4); +} + +int vcexsize=200, vceysize=60; +int vcexofs=76, vceyofs=70; + +void VCNotify(char *msg) +{ char done=0, moving=0; + int mxo, myo, cursorblink; + char ctf=0, cb=0, c, t, *str; + + last_pressed=0; + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + vcexofs = (mx-mxo); + vceyofs = (my-myo); + if (!mb) moving=0; + if (vcexofs<16) vcexofs = 16; + if (vceyofs<16) vceyofs = 16; + if (vcexofs+vcexsize>335) vcexofs = 336-vcexsize; + if (vceyofs+vceysize>sy+16) vceyofs = (sy+16)-vceysize; + } + + Window(vcexofs, vceyofs, vcexofs+vcexsize, vceyofs+vceysize, "VergeC Error Report"); + Button(vcexofs+85, vceyofs+41, "OK"); + GotoXY(vcexofs+29, vceyofs+17); printstring("VCC has reported the following error:"); + GotoXY(vcexofs+100-(pixels(msg)/2), vceyofs+23); printstring(msg); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if ((mb==1 && mx>vcexofs+85 && mxvceyofs+41 && my(vcexofs+vcexsize-9) && (mx(vceyofs+1) && (myvcexofs && mxvceyofs && my<(vceyofs+9) && !moving) + { + moving=1; + mxo=mx-vcexofs; + myo=my-vceyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } while (!done); +} diff --git a/16/v2/source/MAPED/GUI.H b/16/v2/source/MAPED/GUI.H new file mode 100644 index 00000000..1662db7f --- /dev/null +++ b/16/v2/source/MAPED/GUI.H @@ -0,0 +1,64 @@ +/* +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. +*/ + +#ifndef GUI_INC +#define GUI_INC + +extern int amxofs, amyofs; +extern int mmxofs, mmyofs; +extern int cnxofs, cnyofs; +extern int lmxofs, lmyofs; +extern int lvxofs, lvyofs; +extern int vaxofs, vayofs; +extern int mpxofs, mpyofs; +extern int zexofs, zeyofs; +extern int exofs, eyofs; +extern int prxofs, pryofs; +extern int rsxofs, rsyofs; + +extern void CheckMessageExpirations(); +extern void Message(char *text, int duration); +extern void DrawScreenControls(); +extern void RenderMessages(); +extern void RenderGUI(); +extern void DoMainMenu(); +extern void MainMenu(int dx, int dy); +#define byte unsigned char +extern byte TileCmp(byte *one, byte *two); +extern void ImageToLayer(); +extern void Destroyer(); +extern void LayersSubMenu(int dx, int dy); +extern void ExecuteSubMenu(int dx, int dy); +extern void AddLayer(); +extern void EditLayerProperties(); +extern void NewMAP(); +extern void About(); +extern int Confirm(char *message); +extern void LoadMAPDialog(); +extern void LoadVSPDialog(); +extern void MPDialog(); +extern void ZoneEdDialog(); +extern void EntityEditor(int i); +extern void CHRList(); +extern void MoveScriptDialog(); +extern void MapPropertiesDialog(); +extern void ResizeMapDialog(); +extern void CDDialog(); +extern void NoticeDialog(); +extern void OptionsDialog(); +extern void VCNotify(char *msg); + +#endif // GUI_INC diff --git a/16/v2/source/MAPED/GUICOMP.C b/16/v2/source/MAPED/GUICOMP.C new file mode 100644 index 00000000..e9f87795 --- /dev/null +++ b/16/v2/source/MAPED/GUICOMP.C @@ -0,0 +1,137 @@ +/* +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. +*/ + +// Additional code by Richard Lau (aka Ric) + +#include "config.h" // Colour definitions +#include "vdriver.h" // Video driver functions +#include "smalfont.h" + +// ================================= Code ==================================== + +void stdwindow(int x1, int y1, int x2, int y2) +{ + FilledBox(x1, y1, x2-x1, y2-y1, winbg); + HLine(x1, y1, x2-x1, black); /* -- ric: 13/Jun/98 -- */ + VLine(x1, y1, y2-y1, black); /* Outline window in black */ + HLine(x1+1, y2-1, x2-x1-1, black); + VLine(x2-1, y1+1, y2-y1-1, black); + + HLine(x1+1, y1+1, x2-x1-2, brightw); + VLine(x1+1, y1+1, y2-y1-2, brightw); + HLine(x1+2, y2-2, x2-x1-3, darkw); + VLine(x2-2, y1+2, y2-y1-3, darkw); +} + +void Window(int x1, int y1, int x2, int y2, char *title) +{ + FilledBox(x1, y1, x2-x1, y2-y1, winbg); + FilledBox(x1, y1, x2-x1, 8, titlebg); + HLine(x1, y1, x2-x1, brightw); + VLine(x1, y1, y2-y1, brightw); + HLine(x1+1, y2-1, x2-x1-1, darkw); + VLine(x2-1, y1+1, y2-y1-1, darkw); + FilledBox(x2-8, y1+2, 5, 5, winbg); + HLine(x2-8, y1+2, 6, brightw); + VLine(x2-8, y1+2, 5, brightw); + HLine(x2-7, y1+6, 4, darkw); + VLine(x2-3, y1+3, 4, darkw); + + GotoXY(x1+2, y1+2); + printstring(title); +} + +void CheckBox(int x, int y, char checked) +{ + FilledBox(x, y, 7, 6, 0); + HLine(x, y, 8, darkw); + VLine(x, y, 7, darkw); + HLine(x+1, y+6, 7, brightw); + VLine(x+7, y+1, 5, brightw); + if (checked) + { + GotoXY(x+2, y+2); + printstring("*"); + } +} + +void Button(int x, int y, char *str) +{ + stdwindow(x,y,x+30,y+10); +// HLine(x, y, 30, black); /* -- ric: 13/Jun/98 -- */ +// VLine(x, y, 10, black); /* Outline buttons in black */ +/* HLine(x+1, y+9, 29, black); + VLine(x+29, y+1, 9, black); + + HLine(x+1, y+1, 28, white); + VLine(x+1, y+1, 8, white); + HLine(x+2, y+8, 27, darkw); + VLine(x+28, y+2, 7, darkw); */ + GotoXY(x+(15-(pixels(str)/2)), y+2); + printstring(str); +} + +void BigButton(int x, int y, char *str) +{ + stdwindow(x,y,x+50,y+10); +// HLine(x, y, 50, black); /* -- ric: 13/Jun/98 -- */ +// VLine(x, y, 10, black); /* Outline buttons in black */ +/* HLine(x+1, y+9, 49, black); + VLine(x+49, y+1, 9, black); + + HLine(x+1, y+1, 48, white); + VLine(x+1, y+1, 8, white); + HLine(x+2, y+8, 47, darkw); + VLine(x+48, y+2, 7, darkw); */ + GotoXY(x+(25-(pixels(str)/2)), y+2); + printstring(str); +} + +void ButtonPressed(int x, int y, char *str) +/* -- ric: 13/Jun/98 -- */ +/* Draws a depressed button */ +{ + stdwindow(x,y,x+30,y+10); + HLine(x+1, y+1, 28, darkw); + VLine(x+1, y+1, 8, darkw); + HLine(x+2, y+8, 27, winbg); + VLine(x+28, y+2, 7, winbg); + GotoXY(x+1+(15-(pixels(str)/2)), y+3); + printstring(str); +} + +void BigButtonPressed(int x, int y, char *str) +{ + stdwindow(x,y,x+50,y+10); + HLine(x+1, y+1, 48, darkw); + VLine(x+1, y+1, 8, darkw); + HLine(x+2, y+8, 47, winbg); + VLine(x+48, y+2, 7, winbg); + GotoXY(x+1+(25-(pixels(str)/2)), y+3); + printstring(str); +} + +void TextField(int x, int y, int width, char *str, char blink) +{ + FilledBox(x, y, width, 9, 0); + HLine(x, y, width+1, darkw); + VLine(x, y, 9, darkw); + HLine(x+1, y+8, width-1, brightw); + VLine(x+width, y+1, 8, brightw); + GotoXY(x+2, y+2); + printstring(str); + if (blink) printstring("_"); +} diff --git a/16/v2/source/MAPED/GUICOMP.H b/16/v2/source/MAPED/GUICOMP.H new file mode 100644 index 00000000..1df18b69 --- /dev/null +++ b/16/v2/source/MAPED/GUICOMP.H @@ -0,0 +1,29 @@ +/* +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. +*/ + +#ifndef GUICOMP_INC +#define GUICOMP_INC + +extern void stdwindow(int x1, int y1, int x2, int y2); +extern void Window(int x1, int y1, int x2, int y2, char *title); +extern void CheckBox(int x, int y, char checked); +extern void Button(int x, int y, char *str); +extern void BigButton(int x, int y, char *str); +extern void ButtonPressed(int x, int y, char *str); +extern void BigButtonPressed(int x, int y, char *str); +extern void TextField(int x, int y, int width, char *str, char blink); + +#endif // GUICOMP_INC diff --git a/16/v2/source/MAPED/INTER.H b/16/v2/source/MAPED/INTER.H new file mode 100644 index 00000000..9c50ae70 --- /dev/null +++ b/16/v2/source/MAPED/INTER.H @@ -0,0 +1,38 @@ +/* +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. +*/ + +#if !defined(INTERINC) +#define INTERINC + +#ifdef __WATCOMC__ + #include + #define REGISTERS union REGS + #define SET_AX(r,v) (r).w.ax=(short)(v) + #define SET_BX(r,v) (r).w.bx=(short)(v) + #define SET_CX(r,v) (r).w.cx=(short)(v) + #define SET_DX(r,v) (r).w.dx=(short)(v) + #define INTERRUPT(i,r) int386((i),&(r),&(r)) +#elif defined(__DJGPP__) + #include + #define REGISTERS __dpmi_regs + #define SET_AX(r,v) (r).x.ax=(short)(v) + #define SET_BX(r,v) (r).x.bx=(short)(v) + #define SET_CX(r,v) (r).x.cx=(short)(v) + #define SET_DX(r,v) (r).x.dx=(short)(v) + #define INTERRUPT(i,r) __dpmi_int((i),&(r)) +#endif // watcom | djgpp + +#endif // INTERINC diff --git a/16/v2/source/MAPED/KEYBOARD.C b/16/v2/source/MAPED/KEYBOARD.C new file mode 100644 index 00000000..246db5f0 --- /dev/null +++ b/16/v2/source/MAPED/KEYBOARD.C @@ -0,0 +1,84 @@ +/* +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. +*/ + +#include +#include +#include +#include "timer.h" + +// ================================= Data ==================================== + +char key[128]; +char keycode,last_pressed=0; +char codeBuffer[16]; +void (__interrupt __far *biosKeyboardHandler)(); +char handlerinstalled=0; + +unsigned char key_ascii_tbl[128] = +{ + 0, 0, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', 8, 9, + 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']', 13, 0, 'a', 's', + 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', 39, 0, 0, 92, 'z', 'x', 'c', 'v', + 'b', 'n', 'm', ',', '.', '/', 0, '*', 0, ' ', 0, 3, 3, 3, 3, 8, + 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, '-', 0, 0, 0, '+', 0, + 0, 0, 0, 127, 0, 0, 92, 3, 3, 0, 0, 0, 0, 0, 0, 0, + 13, 0, '/', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '/', 0, 0, 0, 0, 0 +}; + +unsigned char key_shift_tbl[128] = +{ + 0, 0, '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', 126, 126, + 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '{', '}', 126, 0, 'A', 'S', + 'D', 'F', 'G', 'H', 'J', 'K', 'L', ':', 34, 0, 0, '|', 'Z', 'X', 'C', 'V', + 'B', 'N', 'M', '<', '>', '?', 0, '*', 0, 1, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, '-', 0, 0, 0, '+', 0, + 0, 0, 1, 127, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 13, 0, '/', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '/', 0, 0, 0, 0, 0 +}; + +// ================================= Data ==================================== + +void __interrupt __far KeyboardHandler() +{ + keycode=inp(0x60); + if (keycode>128) + key[keycode-128]=0; + else + { + key[keycode]=1; + last_pressed=keycode; + } + idlect=0; + outp(0x20,0x20); +} + +void InitKeyboard() +{ + if (handlerinstalled) return; + + biosKeyboardHandler=_dos_getvect(0x09); + _dos_setvect(0x09, KeyboardHandler); + handlerinstalled=1; +} + +void ShutdownKeyboard() +{ + if (handlerinstalled) + _dos_setvect(0x09, biosKeyboardHandler); + handlerinstalled=0; +} diff --git a/16/v2/source/MAPED/KEYBOARD.H b/16/v2/source/MAPED/KEYBOARD.H new file mode 100644 index 00000000..5a2d2948 --- /dev/null +++ b/16/v2/source/MAPED/KEYBOARD.H @@ -0,0 +1,115 @@ +/* +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. +*/ + +#ifndef KEYBOARD_INC +#define KEYBOARD_INC + +extern char key[128],last_pressed; +extern unsigned char key_ascii_tbl[128]; +extern unsigned char key_shift_tbl[128]; + +extern void InitKeyboard(); +extern void ShutdownKeyboard(); + +/* Constants for keyboard scan-codes */ + +#define SCAN_ESC 0x01 +#define SCAN_1 0x02 +#define SCAN_2 0x03 +#define SCAN_3 0x04 +#define SCAN_4 0x05 +#define SCAN_5 0x06 +#define SCAN_6 0x07 +#define SCAN_7 0x08 +#define SCAN_8 0x09 +#define SCAN_9 0x0a +#define SCAN_0 0x0b +#define SCAN_MINUS 0x0c +#define SCAN_EQUALS 0x0d +#define SCAN_BACKSP 0x0e +#define SCAN_TAB 0x0f +#define SCAN_Q 0x10 +#define SCAN_W 0x11 +#define SCAN_E 0x12 +#define SCAN_R 0x13 +#define SCAN_T 0x14 +#define SCAN_Y 0x15 +#define SCAN_U 0x16 +#define SCAN_I 0x17 +#define SCAN_O 0x18 +#define SCAN_P 0x19 +#define SCAN_LANGLE 0x1a +#define SCAN_RANGLE 0x1b +#define SCAN_ENTER 0x1c +#define SCAN_CTRL 0x1d +#define SCAN_A 0x1e +#define SCAN_S 0x1f +#define SCAN_D 0x20 +#define SCAN_F 0x21 +#define SCAN_G 0x22 +#define SCAN_H 0x23 +#define SCAN_J 0x24 +#define SCAN_K 0x25 +#define SCAN_L 0x26 +#define SCAN_SCOLON 0x27 +#define SCAN_QUOTA 0x28 +#define SCAN_RQUOTA 0x29 +#define SCAN_LSHIFT 0x2a +#define SCAN_BSLASH 0x2b +#define SCAN_Z 0x2c +#define SCAN_X 0x2d +#define SCAN_C 0x2e +#define SCAN_V 0x2f +#define SCAN_B 0x30 +#define SCAN_N 0x31 +#define SCAN_M 0x32 +#define SCAN_COMA 0x33 +#define SCAN_DOT 0x34 +#define SCAN_SLASH 0x35 +#define SCAN_RSHIFT 0x36 +#define SCAN_GREY_STAR 0x37 +#define SCAN_ALT 0x38 +#define SCAN_SPACE 0x39 +#define SCAN_CAPS 0x3a +#define SCAN_F1 0x3b +#define SCAN_F2 0x3c +#define SCAN_F3 0x3d +#define SCAN_F4 0x3e +#define SCAN_F5 0x3f +#define SCAN_F6 0x40 +#define SCAN_F7 0x41 +#define SCAN_F8 0x42 +#define SCAN_F9 0x43 +#define SCAN_F10 0x44 +#define SCAN_NUMLOCK 0x45 +#define SCAN_SCRLOCK 0x46 +#define SCAN_HOME 0x47 +#define SCAN_UP 0x48 +#define SCAN_PGUP 0x49 +#define SCAN_GREY_MINUS 0x4a +#define SCAN_LEFT 0x4b +#define SCAN_PAD_5 0x4c +#define SCAN_RIGHT 0x4d +#define SCAN_GREY_PLUS 0x4e +#define SCAN_END 0x4f +#define SCAN_DOWN 0x50 +#define SCAN_PGDN 0x51 +#define SCAN_INSERT 0x52 +#define SCAN_DEL 0x53 +#define SCAN_F11 0x57 +#define SCAN_F12 0x58 + +#endif // KEYBOARD_INC diff --git a/16/v2/source/MAPED/MAKEFILE b/16/v2/source/MAPED/MAKEFILE new file mode 100644 index 00000000..d627200b --- /dev/null +++ b/16/v2/source/MAPED/MAKEFILE @@ -0,0 +1,32 @@ +# Use the C or C++ compiler +Compiler = wcc386 + +# compiler options +#comp = /oneatx /zp4 /5 /d0 +comp = /bt=dos /oneatx /5 /fp5 /wx /d0 + +Linker_options = option stack=60000 + +# Compile using dos4g or pmodew +#System = dos4g +System = pmodew + +Exe_file = maped.exe + +Objs = maped.obj config.obj gui.obj guicomp.obj mode13h.obj modex.obj keyboard.obj & + minimap.obj mouse.obj render.obj smalfont.obj ssaver.obj tileed.obj & + tilesel.obj timer.obj vdriver.obj columns.obj a_memory.obj mikmod.lib + +#################### + +maped.exe : $(Objs) + + *wlink system $(System) $(Linker_Options) name maped.exe & + file {$<} +# *pmwlite -c4 maped.exe + +.c.obj: + $(Compiler) $(comp) $< + +.asm.obj: + wasm -3pr $< diff --git a/16/v2/source/MAPED/MAPED.C b/16/v2/source/MAPED/MAPED.C new file mode 100644 index 00000000..9e172742 --- /dev/null +++ b/16/v2/source/MAPED/MAPED.C @@ -0,0 +1,1624 @@ +/* +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. +*/ + +const char *const ME2_VERSION = "2.01a"; + +// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +// CHANGELOG: +// +// + erased valloc(), replaced with a_memory.c +// + added Log() -- output to MAPED.LOG +// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + +#include +#include + +#include +#include +#include +#include + +#include "config.h" +#include "gui.h" +#include "keyboard.h" +#include "mikmod.h" +#include "mouse.h" +#include "render.h" +#include "timer.h" +#include "vdriver.h" + +#include "ssaver.h" +#include "smalfont.h" +#include "tilesel.h" +#include "minimap.h" +#include "guicomp.h" +#include "config.h" + +#define byte unsigned char +#define word unsigned short + +// Includes for a_memory.c + +void *valloc(int amount, char *desc, int owner); +void *qvalloc(int amount); +int vfree(void *pointer); +void qvfree(void *pointer); +void FreeByOwner(int owner); +void MemReport(void); +void CheckCorruption(void); + +// ================================= Data ==================================== + +typedef struct +{ + unsigned short start; // strand start + unsigned short finish; // strand end + unsigned short delay; // tile-switch delay + unsigned short mode; // tile-animation mode +} vspanim_r; + +typedef struct +{ + char pmultx,pdivx; // parallax multiplier/divisor for X + char pmulty,pdivy; // parallax multiplier/divisor for Y + unsigned short sizex, sizey; // layer dimensions. + unsigned char trans, hline; // transparency flag | hline (raster fx) +} layer_r; + +typedef struct +{ + char name[40]; // zone name/desc + unsigned short script; // script to call thingy + unsigned short percent; // chance of executing + unsigned short delay; // step-delay + unsigned short aaa; // Accept Adjacent Activation + unsigned short entityscript; // script to call for entities +} zoneinfo; + +typedef struct +{ + char zonename[16]; // zone description + unsigned short int callevent; // event number to call + unsigned char percent; // chance (in 255) of event occurance + unsigned char delay; // step-delay before last occurance + unsigned char aaa; // accept adjacent activation + char savedesc[31]; // savegame description +} oldzone; + +typedef struct +{ + int x, y; // xwc, ywx position + word tx, ty; // xtc, ytc position + byte facing; // direction entity is facing + byte moving, movecnt; // direction entity is moving + byte frame; // bottom-line frame to display + byte specframe; // special-frame set thingo + byte chrindex, reset; // CHR index | Reset animation + byte obsmode1, obsmode2; // can be obstructed | Is an obstruction + byte speed, speedct; // entity speed, speedcount :) + byte delayct; // animation frame-delay + char *animofs, *moveofs; // anim script | move script + byte face, actm; // auto-face | activation mode + byte movecode, movescript; // movement type | movement script + byte ctr, mode; // sub-tile move ctr, mode flag (internal) + word step, delay; // step, delay + word stepctr, delayctr; // internal use counters + word data1, data2, data3; // + word data4, data5, data6; // + int actscript; // activation script + int expand1, expand2; // + int expand3, expand4; // + char desc[20]; // Entity description. +} entity_r; + +typedef struct +{ + char t[60]; +} chrlist_r; + +typedef struct +{ + char t[200]; +} movescript; + +typedef struct +{ + unsigned short x; // xwc position + unsigned short y; // ywc position + unsigned char facing; // direction entity is facing + unsigned char moving; // direction entity is moving + unsigned char movcnt; // how far left to move in this tile + unsigned char framectr; // frame sequence counter + unsigned char specframe; // special-frame set thingo + unsigned char chrindex, movecode; // CHR index / movement pattern code + unsigned char activmode, obsmode; // activation mode, obstruction mode + unsigned char v1,v2,v3; // packing stuff. + unsigned int actscript, movescript; // script references + unsigned char speed, speedct; // entity speed, speedcount :) + unsigned short step, delay, // Misc data entries + data1, data2, // More misc data + data3, data4, // yet more crappy misc data. + delayct,adjactv; // yet more internal crap + unsigned short x1,y1,x2,y2; // bounding box coordinates + unsigned char curcmd, cmdarg; // Script commands/arguments + unsigned char *scriptofs; // offset in script parsing + unsigned char face,chasing, // face player when activated | chasing + chasespeed, chasedist; // chasing variables + unsigned short cx,cy; // current-tile pos (moving adjusted) + int expand1; // always room for improvement + char entitydesc[20]; // Editing description +} oldent_r; + +zoneinfo zones[256]; // zone stuff. +layer_r layer[6]; // Array of layer data +vspanim_r vspanim[100]; // tile animation data +unsigned short vadelay[100]; // Tile animation delay ctr +oldzone tzone; // zone for oldmap-to-v2 converting +entity_r entity[256]; // Entity records. +oldent_r oldent; // entity for oldmap-to-v2 converting +byte entities=0; // number of allocated entities. +chrlist_r chrlist[100]; // Max. 100 CHRs per map. +movescript ms[100]; // move scripts arrays +byte nmchr=0; // number of active/loaded CHRs. +byte nms=0; // number of movement scripts + +char mapname[60]; // MAP filename +char vspname[60]; // VSP filemap +char rstring[20]; // render-order string +char musname[60]; // MAP default music +char numlayers; // number of layers in map +short xstart, ystart; // MAP start locations +char *obstruct, *zone; // obstruction and zone buffers +int numzones=0; // Number of active zones. +unsigned short *layers[6]; // Raw layer data +char wrap, soundokay=0; + +// -- vsp related data -- + +unsigned short numtiles; // number of allocated tiles in VSP +unsigned char *vsp; // VSP ptr +char vsp_locked=0; +char vsp_pw[8]; + +// -- map compression + +char *cb,*csrc; // compression workspace buffer +int bufsize; // how many bytes need to be written + +// -- editing related data -- + +int xwin=0, ywin=0; // Editing viewplane +short lt=0, rt=0; // left-button tile, right-button tile +char curzone=0; // current zone. +char scrollmode=0; // tile or pixel scroll modes. +char mouse_scroll=1; +char layertoggle[10]; // layer visible toggles +char el=0; // current editing layer. +char modified=0; // Current buffer modified or not. + +// -- music stuff -- + +char is_playing=0; +char cmname[60]; +UNIMOD *mf=0; + +// -- copy/paste & block fill -- + +word *copybuf=0; +int copybuf_wide=0,copybuf_deep=0; +int selx1=0, sely1=0, selx2=0, sely2=0; +int shifted=0, pasting=0; +extern char curtrack; + +char vcedprog[80]; +byte* translucency_table; //zero + +int moving_up=0,moving_down=0,moving_left=0,moving_right=0; // aen + +// ================================= Code ==================================== + +//added by zero +void LoadTransTable() +{ + FILE *fp; + + if (!translucency_table) + translucency_table=(byte *) valloc(65536,"trans tbl",0); + + fp=fopen("trans.tbl","rb"); + if (!fp) + { + vfree(translucency_table); + translucency_table=0; + return; + } + + fread(translucency_table, 65536, 1, fp); + fclose(fp); +} + +int Exist(char *fname) +{ FILE *tempf; + + tempf=fopen(fname,"rb"); + if (tempf) + { + fclose(tempf); + return 1; + } + else return 0; +} + +void err(char *str, ...) +{ + va_list argptr; + char msg[256]; + + va_start(argptr, str); + vsprintf(msg, str, argptr); + va_end(argptr); + + ShutdownVideo(); + ShutdownTimer(); + ShutdownKeyboard(); + //CD_DeInit(); // wasn't even valid! CD_Deinit() was incorrect + // Actually, Wat is by default case insensitive, so nyeh.;) + //if (curtrack != 1) //CD_Stop(); + + printf("%s \n",msg); + exit(-1); +} + +void errf(char *str, char *str1) +{ + sprintf(strbuf,str,str1); + err(strbuf); +} + +void errn(char *str, int n) +{ + sprintf(strbuf,str,n); + err(strbuf); +} + +int random(int lo, int hi) +{ + int range=hi-lo+1; + int i=rand() % range; + return i+lo; +} + +void PlayMusic(char *fname) +{ + if (!soundokay) return; + if (is_playing) + { + MD_PlayStop(); + ML_Free(mf); + is_playing=0; + } + mf=ML_LoadFN(fname); + if (!mf) + { + Message("Could not load specified music.",500); + return; + } + MP_Init(mf); + md_numchn=mf->numchn; mp_loop=1; + MD_PlayStart(); + is_playing=1; +} + +void StopMusic() +{ + if (!soundokay) return; + MD_PlayStop(); + ML_Free(mf); + is_playing=0; +} + +void LoadVSP(char *fname) +{ FILE *f; + short ver; + + if (!(f=fopen(fname,"rb"))) + errf("VSP file %s not found.",fname); + + fread(&ver, 1, 2, f); + if (ver!=2 && ver!=3) + errf("VSP file %s is not the correct VSP format.",fname); + if (ver==2) + { + fread(&pal, 1, 768, f); + set_intensity(63); + fread(&numtiles, 1, 2, f); + vsp=(char *) valloc(256*numtiles, "vsp data", 0); + fread(vsp, 256, numtiles, f); + fread(&vspanim, 8, 100, f); + fclose(f); + } + if (ver==3) + { + fread(&pal, 1, 768, f); + set_intensity(63); + fread(&numtiles, 1, 2, f); + vsp=(char *) valloc(256*numtiles, "vsp data", 0); + fread(&bufsize, 1, 4, f); + ReadCompressedLayer1(vsp, 256*numtiles, f); + fread(&vspanim, 8, 100, f); + fclose(f); + } +} + +void SaveVSP(char *fname) +{ FILE *f; + short ver; + + f=fopen(fname,"wb"); + ver=3; + fwrite(&ver, 1, 2, f); + fwrite(&pal, 1, 768, f); + fwrite(&numtiles, 1, 2, f); + cb=(char *) valloc(numtiles*256, "vsp tempbuf", 0); + bufsize=0; + WriteCompressedLayer1(vsp, numtiles*256); + fwrite(&bufsize, 1, 4, f); + fwrite(cb, 1, bufsize, f); + //free(bufsize); // what the hell??? @_@ + fwrite(&vspanim, 8, 100, f); + fclose(f); +} + +void EmitC (char c) +{ + *csrc=c; + csrc++; + bufsize++; +} + +void EmitW (short int w) +{ + char *ptr; + + ptr=(char *)&w; + *csrc=*ptr; + csrc++; + ptr++; + *csrc=*ptr; + csrc++; + bufsize+=2; +} + +void WriteCompressedLayer1(unsigned char *p, int len) +{ int i; + unsigned char byt,samect; + unsigned char repcode; + + csrc=cb; + i=0; bufsize=0; + do + { byt=p[i++]; + samect=1; + while (samect<254 && i3 || byt == 0xFF) + { + repcode=0xFF; + EmitC(repcode); + repcode=(char) samect; + EmitC(repcode); + } + EmitC(byt); + } while (i1) + { + repcode=(char) samect; + EmitC(repcode); + repcode=0xFF; + EmitC(repcode); + } + EmitW(byt); + } while (i> 1; + zone[(j*layer[0].sizex)+i]=c; + } + vfree(cb); + + // Load and convert zone data records. + + for (i=0; i<128; i++) + { + fread(&tzone, 1, sizeof tzone, f); + zones[i].script=tzone.callevent; + zones[i].percent=tzone.percent; + zones[i].delay=tzone.delay; + zones[i].aaa=tzone.aaa; + zones[i].entityscript=0; + memcpy(zones[i].name, tzone.zonename, 16); + } + + for (i=0; i<100; i++) // Load and convert CHR list + fread(&chrlist[i].t, 1, 13, f); +// DoCHRdealy(); + + fread(&entities, 1, 1, f); fseek(f, 3, 1); + memset(&entity, 0, sizeof entity); + for (i=0; i30000) + { + Message("Generating Auto-backup",150); + SaveMAP("$$BACKUP.MAP"); + SaveVSP("$$BACKUP.VSP"); + backupct=0; + } + if (idlect>8000 && !inss) + { + inss=1; + ScreenSaver(); + idlect=0; + inss=0; + } +} + +extern int difficulty; + +void SaveNewCFG() +{ FILE *f; + + f=fopen("maped.cfg","w"); + //if (nocdaudio) fprintf(f,"nocdaudio\n"); + fprintf(f,"vidmode %d \n", vm); + fprintf(f,"pad %d \n", pad); + fprintf(f,"scrollmode %d \n",scrollmode); + fprintf(f,"mouse_scroll %d \n",mouse_scroll&1); // aen + fprintf(f,"black %d \n",black); + fprintf(f,"white %d \n",brightw); + fprintf(f,"winbg %d \n",winbg); + fprintf(f,"shadow %d \n",darkw); + fprintf(f,"darkred %d \n",darkred); + fprintf(f,"titlebg %d \n",titlebg); + fprintf(f,"th %d \n", th); + fprintf(f,"mh %d \n", mh); + fprintf(f,"md_device %d \n", md_device==3?3:0); + fprintf(f,"amxofs %d \n",amxofs); + fprintf(f,"amyofs %d \n",amyofs); + fprintf(f,"mmxofs %d \n",mmxofs); + fprintf(f,"mmyofs %d \n",mmyofs); + fprintf(f,"cnxofs %d \n",cnxofs); + fprintf(f,"cnyofs %d \n",cnyofs); + fprintf(f,"lmxofs %d \n",lmxofs); + fprintf(f,"lmyofs %d \n",lmyofs); + fprintf(f,"lvxofs %d \n",lvxofs); + fprintf(f,"lvyofs %d \n",lvyofs); + fprintf(f,"mpxofs %d \n",mpxofs); + fprintf(f,"mpyofs %d \n",mpyofs); + fprintf(f,"vaxofs %d \n",vaxofs); + fprintf(f,"vayofs %d \n",vayofs); + fprintf(f,"zexofs %d \n",zexofs); + fprintf(f,"zeyofs %d \n",zeyofs); + fprintf(f,"exofs %d \n",exofs); + fprintf(f,"eyofs %d \n",eyofs); + fprintf(f,"prxofs %d \n",prxofs); + fprintf(f,"pryofs %d \n",pryofs); + fprintf(f,"rsxofs %d \n",rsxofs); + fprintf(f,"rsyofs %d \n",rsyofs); + fprintf(f,"vced %s \n",vcedprog); + fprintf(f,"difficulty %d \n",difficulty); + fclose(f); +} + +#include "controls.c" + +void ShellToDOS() +{ + ShutdownVideo(); + ShutdownKeyboard(); + ShutdownTimer(); + MD_PlayStop(); + MD_Exit(); + + system("COMMAND.COM"); + + if (!MD_Init()) + { + printf("Couldn't initialize sound: %s.\n", myerr); + delay(500); + soundokay=0; + } + if (strlen(musname)) PlayMusic(musname); + InitVideo(vm); + set_intensity(63); + InitMouse(); + InitKeyboard(); + InitTimer(); +} + +void ShellVERGE() +{ + ShutdownVideo(); + ShutdownKeyboard(); + ShutdownTimer(); + MD_PlayStop(); + MD_Exit(); + + system("VERGE"); + + if (!MD_Init()) + { + printf("Couldn't initialize sound: %s.\n", myerr); + delay(500); + soundokay=0; + } + if (strlen(musname)) PlayMusic(musname); + InitVideo(vm); + set_intensity(63); + InitMouse(); + InitKeyboard(); + InitTimer(); +} + +void ShellMAP() +{ + ShutdownVideo(); + ShutdownKeyboard(); + ShutdownTimer(); + MD_PlayStop(); + MD_Exit(); + + sprintf(strbuf,"verge %s",mapname); + system(strbuf); + + if (!MD_Init()) + { + printf("Couldn't initialize sound: %s.\n", myerr); + delay(500); + soundokay=0; + } + if (strlen(musname)) PlayMusic(musname); + InitVideo(vm); + set_intensity(63); + InitMouse(); + InitKeyboard(); + InitTimer(); +} + +void ShellEditMAP() +{ + char fn[80],*p; + + key[SCAN_ALT]=0; + key[SCAN_V]=0; + ShutdownVideo(); + ShutdownKeyboard(); + ShutdownTimer(); + MD_PlayStop(); + MD_Exit(); + + sprintf(fn,"%s",mapname); + p=fn; + while (*p) + { + if (*p=='.') *p=0; + p++; + } + sprintf(strbuf,"%s %s.vc", vcedprog, fn); + system(strbuf); + + if (!MD_Init()) + { + printf("Couldn't initialize sound: %s.\n", myerr); + delay(500); + soundokay=0; + } + if (strlen(musname)) PlayMusic(musname); + InitVideo(vm); + set_intensity(63); + InitMouse(); + InitKeyboard(); + InitTimer(); +} + +void ShellEditSystem() +{ + key[SCAN_ALT]=0; + key[SCAN_S]=0; + ShutdownVideo(); + ShutdownKeyboard(); + ShutdownTimer(); + MD_PlayStop(); + MD_Exit(); + + sprintf(strbuf,"%s system.vc", vcedprog); + system(strbuf); + + if (!MD_Init()) + { + printf("Couldn't initialize sound: %s.\n", myerr); + delay(500); + soundokay=0; + } + if (strlen(musname)) PlayMusic(musname); + InitVideo(vm); + set_intensity(63); + InitMouse(); + InitKeyboard(); + InitTimer(); +} + +char s[256]; + +void CompileAll() +{ + FILE *f; + char *p; + + MD_PlayStop(); + MD_Exit(); + + sprintf(strbuf,"vcc all q",mapname); + system(strbuf); + + if (!MD_Init()) + { + printf("Couldn't initialize sound: %s.\n", myerr); + delay(500); + soundokay=0; + } + if (strlen(musname)) PlayMusic(musname); + + if (!(f=fopen("error.txt","r"))) + { + Message("All VC scripts sucessfully compiled.",300); + return; + } + + fgets(s,99,f); + fclose(f); + p=s; + while (*p) + { + if (*p==13 || *p==10) *p=0; + p++; + } + VCNotify(s); +} + +void CompileMAP() +{ + FILE *f; + char *p; + + MD_PlayStop(); + MD_Exit(); + + sprintf(strbuf,"vcc %s q",mapname); + system(strbuf); + + if (!MD_Init()) + { + printf("Couldn't initialize sound: %s.\n", myerr); + delay(500); + soundokay=0; + } + if (strlen(musname)) PlayMusic(musname); + + if (!(f=fopen("error.txt","r"))) return; + + fgets(s,99,f); + fclose(f); + p=s; + while (*p) + { + if (*p==13 || *p==10) *p=0; + p++; + } + VCNotify(s); +} + +void tickhandler(void) +{ + MP_HandleTick(); + MD_SetBPM(mp_bpm); +} + +void RenderHighlight() +{ int zx, zy; + int xw, yw; + + if (mh) + { + xw=xwin&15; + yw=ywin&15; + zx=((mx+xw)&~15)-xw; + zy=((my+yw)&~15)-yw; + + DrawHighlight(zx-1, zy-1); + } +} + +int EntityThere(int xw, int yw) +{ int i; + + for (i=0; i + mb=0; + return; + } + EntityEditor(a-1); +} + +void DeleteEntity(int xw, int yw) +{ int i,a; + char t[60]; + + a=EntityThere(xw,yw)-1; + sprintf(t,"Delete entity %d?",a); + if (!Confirm(t)) return; + for (i=a; iname, 13); fc++; + while (!_dos_findnext(f)) + { + memcpy(blah+(fc*13), f->name, 13); fc++; + } + } + vfree(f); + last_pressed=0; + a=fc<22?117:2574/fc; +// errn("%d",fc); + do + { + if (!bmode) + { + RenderMap(); + RenderGUI(); + } + else + { + RenderSelector(); + RenderMessages(); + } + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + bxofs = (mx-mxo); + byofs = (my-myo); + if (!mb) moving=0; + if (bxofs<16) bxofs = 16; + if (byofs<16) byofs = 16; + if (bxofs+bxsize>335) bxofs = 336-bxsize; + if (byofs+bysize>sy+16) byofs = (sy+16)-bysize; + } + + Window(bxofs, byofs, bxofs+bxsize, byofs+bysize, "Browse"); + Button(bxofs+65, byofs+157, "OK"); + Button(bxofs+96, byofs+157, "Cancel"); + FilledBox(bxofs+20, byofs+15, 80, 135, black); + FilledBox(bxofs+100, byofs+15, 10, 135, 2); + HLine(bxofs+20, byofs+15, 90, darkw); + VLine(bxofs+20, byofs+15, 135, darkw); + VLine(bxofs+99, byofs+16, 134, white); + VLine(bxofs+109, byofs+16, 134, white); + HLine(bxofs+21, byofs+149, 89, white); + stdwindow(bxofs+100, byofs+16, bxofs+109, byofs+25); + stdwindow(bxofs+100, byofs+140, bxofs+109, byofs+149); + b=byofs+24+(fc != 22 ? ((117-a)*ofs)/(fc-22) : 0); + + //draws the drag box + stdwindow(bxofs+100, b, bxofs+109, b+a); + + FilledBox(bxofs+21, byofs+((cfs-ofs)*6)+16, 78, 6, darkw); + + // Render actual filename thingies + i=0; + while (1) + { + if (i+ofsbxofs+100&&mxbyofs+25&&myb&&myb+a) + { + if (ofs+45>fc) ofs=fc-22; + else ofs+=22; + cfs=ofs; + } + } + } + if(!dragging) + { + if (mb==1 && mx>bxofs+20 && mxbyofs+15 && mybxofs+100 && mxbyofs+15 && mybxofs+100 && mxbyofs+139 && mybxofs+65 && mxbyofs+157 && mybxofs+96 && mxbyofs+157 && my(bxofs+bxsize-9) && (mx(byofs+1) && (mybxofs && mxbyofs && my<(byofs+9) && !moving) + { + moving=1; + mxo=mx-bxofs; + myo=my-byofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + if (key[SCAN_PGUP]) + { + if (ofs<22) ofs=0; + else ofs-=22; + cfs=ofs; + key[SCAN_PGUP]=0; + continue; + } + if (key[SCAN_PGDN]) + { + if (ofs+45>fc) ofs=fc-22; + else ofs+=22; + if (fc<22) ofs=0; + cfs=ofs; + key[SCAN_PGDN]=0; + continue; + } + if (key[SCAN_UP]) + { + if (cfs) cfs--; + if (ofs>cfs) ofs--; + key[SCAN_UP]=0; + last_pressed=0; + continue; + } + if (key[SCAN_DOWN]) + { + if (cfs21) ofs++; + key[SCAN_DOWN]=0; + last_pressed=0; + continue; + } + if (last_pressed==SCAN_ENTER) + { + memcpy(dest,blah+(cfs*13),13); + key[SCAN_ENTER]=0; + done=1; + ctf=0; + str=0; + last_pressed=0; + break; + } + + if (last_pressed==SCAN_TAB) + { + switch (ctf) + { + case 0: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } + } while (!done); + vfree(blah); +} + +#include "vergepal.h" +#define LOGFILE "maped.log" + +void Log(char *text, ...) +{ + va_list argptr; + char msg[256]; + FILE *logf; + + va_start(argptr, text); + vsprintf(msg, text, argptr); + va_end(argptr); + + logf=fopen(LOGFILE,"aw"); + fprintf(logf,"%s\n",msg); + fflush(logf); + fclose(logf); +} + +int main(int argc, char *argv[]) +{ + + remove(LOGFILE); + md_mixfreq=44100; + md_dmabufsize=5000; + md_mode=DMODE_16BITS|DMODE_STEREO; + md_device=0; + memset(&chrs, 0, sizeof chrs); + + Log("GetConfig"); + GetConfig("maped.cfg"); + Log("LoadTransTbl"); + translucency_table=0; //zero + LoadTransTable(); //zero + + Log("RegisterModLoaders"); + ML_RegisterLoader(&load_mod); + ML_RegisterLoader(&load_s3m); + ML_RegisterLoader(&load_xm); + ML_RegisterLoader(&load_uni); + + Log("RegisterSndDrivers"); + MD_RegisterDriver(&drv_nos); + MD_RegisterDriver(&drv_sb); + MD_RegisterDriver(&drv_gus); + MD_RegisterPlayer(tickhandler); + soundokay=1; + Log("Initialize snd lib"); + if (!MD_Init()) + { + printf("Couldn't initialize sound: %s.\n", myerr); + delay(500); + soundokay=0; + } + + //Log("Initialize CD audio"); + //CD_Init(); + + Log("Initialize timer"); + InitTimer(); + Log("Initialize video"); + InitVideo(vm); + Log("Initialize mouse"); + InitMouse(); + Log("Initialize keyboard IRQ handler"); + InitKeyboard(); + + Log("Initializing map data"); + if (argc==1 && !Exist("untitled.map")) + { + SetPalette(vergepal); + memcpy(pal, vergepal, 768); + memcpy(mapname,"UNTITLED.MAP",13); + memcpy(vspname,"UNTITLED.VSP",13); + memcpy(rstring,"1E",2); + numlayers=1; + + // aen: default newmap dimensions set to 100x100 + layer[0].pmultx=1; layer[0].pmulty=1; + layer[0].pdivx=1; layer[0].pdivy=1; + layer[0].sizex=100; layer[0].sizey=100; + layer[0].trans=0; layer[0].hline=0; + + layers[0]=(unsigned short *) valloc((layer[0].sizex*layer[0].sizey*2)+4,"layer data",0); + //memset(layers[0],0,(layer[0].sizex*layer[0].sizey)*2); + obstruct=(char *) valloc((layer[0].sizex*layer[0].sizey)+4,"obstruct map",0); + zone=(char *) valloc((layer[0].sizex*layer[0].sizey)+4,"zone map", 0); + + // aen: default number of tiles set to 100 + numtiles=100; + vsp=(char *) valloc(256 * numtiles,"vsp data", 0); + wrap=0; el=0; layertoggle[0]=1; + InitTileIDX(); + } + else + { + if (argc==1) memcpy(mapname, "untitled.map",13); + else memcpy(mapname, argv[1], strlen(argv[1])); + LoadMAP(mapname); + InitTileIDX(); + } +Log("Entering main loop"); +thingy: + while (!(key[SCAN_ALT] && key[SCAN_X])) + { + ProcessControls(); + while (tick) + { + tick--; + PollMovement(); + } + RenderMap(); + RenderHighlight(); + RenderGUI(); + ShowPage(); + } + if (modified) + if (!Confirm("Lose unsaved changes?")) + { + key[SCAN_ALT]=0; + key[SCAN_X]=0; + goto thingy; + } + + ShutdownVideo(); + ShutdownKeyboard(); + ShutdownTimer(); + SaveNewCFG(); + remove("$$BACKUP.MAP"); + remove("$$BACKUP.VSP"); + + //if (curtrack != 1) CD_Stop(); + //CD_DeInit(); // wasn't even valid! CD_Deinit() was incorrect + MD_PlayStop(); // Mordred + ML_Free(mf); + + MD_Exit(); + if (translucency_table) + vfree(translucency_table); //zero + return 0; +} diff --git a/16/v2/source/MAPED/MAPED.H b/16/v2/source/MAPED/MAPED.H new file mode 100644 index 00000000..431bcd27 --- /dev/null +++ b/16/v2/source/MAPED/MAPED.H @@ -0,0 +1,180 @@ +/* +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. +*/ + +#ifndef MAPED_INC +#define MAPED_INC + +extern const char *const ME2_VERSION; + +#include + +#define byte unsigned char +#define word unsigned short + +typedef struct +{ + unsigned short start; // strand start + unsigned short finish; // strand end + unsigned short delay; // tile-switch delay + unsigned short mode; // tile-animation mode +} vspanim_r; + +typedef struct +{ + char pmultx,pdivx; // parallax multiplier/divisor for X + char pmulty,pdivy; // parallax multiplier/divisor for Y + unsigned short sizex, sizey; // layer dimensions. + unsigned char trans, hline; // transparency flag | hline (raster fx) +} layer_r; + +typedef struct +{ + char name[40]; // zone name/desc + unsigned short script; // script to call thingy + unsigned short percent; // chance of executing + unsigned short delay; // step-delay + unsigned short aaa; // Accept Adjacent Activation + unsigned short entityscript; // script to call for entities +} zoneinfo; + +typedef struct +{ + int x, y; // xwc, ywx position + word tx, ty; // xtc, ytc position + byte facing; // direction entity is facing + byte moving, movecnt; // direction entity is moving + byte frame; // bottom-line frame to display + byte specframe; // special-frame set thingo + byte chrindex, reset; // CHR index | Reset animation + byte obsmode1, obsmode2; // can be obstructed | Is an obstruction + byte speed, speedct; // entity speed, speedcount :) + byte delayct; // animation frame-delay + char *animofs, *moveofs; // anim script | move script + byte face, actm; // auto-face | activation mode + byte movecode, movescript; // movement type | movement script + byte ctr, mode; // sub-tile move ctr, mode flag (internal) + word step, delay; // step, delay + word stepctr, delayctr; // internal use counters + word data1, data2, data3; // + word data4, data5, data6; // + int actscript; // activation script + int expand1, expand2; // + int expand3, expand4; // + char desc[20]; // Entity description. +} entity_r; + +typedef struct +{ + char t[60]; +} chrlist_r; + +typedef struct { + char t[200]; +} movescript; + +extern layer_r layer[4]; +extern vspanim_r vspanim[100]; +extern zoneinfo zones[256]; +extern unsigned short vadelay[100]; +extern entity_r entity[256]; // Entity records. +extern byte entities; // number of allocated entities. +extern chrlist_r chrlist[100]; +extern byte nmchr; +extern movescript ms[100]; // move scripts arrays +extern byte nms; // number of movement scripts + +extern char *obstruct, *zone, curzone; +extern char numlayers, wrap; +extern unsigned short *layers[6]; +extern char rstring[20]; +extern char mapname[60], vspname[60]; +extern char musname[60]; +extern short xstart, ystart; + +// -- vsp related data -- + +extern unsigned short numtiles; +extern unsigned char *vsp; + +// -- editing related data -- + +extern int xwin, ywin, bmode; +extern char mouse_scroll; +extern short lt, rt; +extern char layertoggle[10], el, modified; + +extern word *copybuf; +extern int copybuf_wide,copybuf_deep; +extern int selx1, sely1, selx2, sely2; +extern int shifted, pasting; + +extern int numzones; // Number of active zones. + +extern int moving_up,moving_down,moving_left,moving_right; + +extern void LoadTransTable(); +extern int Exist(char *fname); +extern void err(char *str, ...); +extern void errf(char *str, char *str1); +extern void errn(char *str, int n); +extern int random(int min, int max); +extern void PlayMusic(char *fname); +extern void StopMusic(); +extern void LoadVSP(char *fname); +extern void SaveVSP(char *fname); +extern void EmitC (char c); +extern void EmitW (short int w); +extern void WriteCompressedLayer1(unsigned char *p, int len); +extern void ReadCompressedLayer1(unsigned char *dest, int len, FILE *f); +extern void WriteCompressedLayer2(unsigned short *p,int len); +extern void ReadCompressedLayer2(unsigned short *dest, int len, FILE *f); +extern void CountUsedZones(); +extern void CountMoveScripts(); +extern void CountCHRs(); +extern void SaveMAP(char *fname); +extern void LoadOldMAP(FILE *f); +extern void LoadMAP(char *fname); +extern void InitTileIDX(); +extern void CheckTimerStuff(); +extern void SaveNewCFG(); +extern void ShellToDOS(); +extern void ShellVERGE(); +extern void ShellMAP(); +extern void ShellEditMAP(); +extern void ShellEditSystem(); +extern void CompileAll(); +extern void CompileMAP(); +extern void tickhandler(void); +extern void RenderHighlight(); +extern int EntityThere(int xw, int yw); +extern void AllocateEntity(int xw, int yw); +extern void ProcessEntity(int xw, int yw); +extern void DeleteEntity(int xw, int yw); +extern void Browse(char n, char *m1, char *m2, char *m3, char *m4, char *dest); + +// Includes for a_memory.c + +void *valloc(int amount, char *desc, int owner); +void *qvalloc(int amount); +int vfree(void *pointer); +void qvfree(void *pointer); +void FreeByOwner(int owner); +void MemReport(void); +void CheckCorruption(void); + +#define free ERROR_YEAH_REPLACE_THIS_WITH_VFREE + +#endif // MAPED_INC diff --git a/16/v2/source/MAPED/MIKMOD.C b/16/v2/source/MAPED/MIKMOD.C new file mode 100644 index 00000000..2ab62d2a --- /dev/null +++ b/16/v2/source/MAPED/MIKMOD.C @@ -0,0 +1,311 @@ +/* + +Name: +MIKMOD.C + +Description: +Modplaying example of mikmod. + +MSDOS: BC(y) Watcom(y) DJGPP(y) +Win95: BC(y*) +Os2: y +Linux: n + +* console mode only +(y) - yes +(n) - no (not possible or not useful) +(?) - may be possible, but not tested + +*/ +#ifdef __WIN32__ +#include +#endif + +#include +#include +#include +#include + +#ifndef __OS2__ +#include +#endif + +#include "wildfile.h" +#include "mikmod.h" + +char helptext[]= + +"Available switches (CaSe SeNsItIvE!):\n" +"\n" +" /d x use device-driver #x for output (0 is autodetect). Default=0\n" +" /ld List all available device-drivers\n" +" /ll List all available loaders\n" +" /x disables protracker extended speed\n" +" /p disables panning effects (9fingers.mod)\n" +" /v xx Sets volume from 0 (silence) to 100. Default=100\n" +" /f xxxx Sets mixing frequency. Default=44100\n" +" /m Force mono output (so sb-pro can mix at 44100)\n" +" /8 Force 8 bit output\n" +" /i Use interpolated mixing\n" +" /r Restart a module when it's done playing"; + + +/* + declarations for boring old sys-v style getopt *yawn*: +*/ +int getopt(int argc, char *argv[], char *optionS); +extern char *optarg; +extern int optind; +extern int opterr; + + +void tickhandler(void) +{ + MP_HandleTick(); /* play 1 tick of the module */ + MD_SetBPM(mp_bpm); +} + + +int main(int argc,char *argv[]) +{ + UNIMOD *mf; + int cmderr=0; /* error in commandline flag */ + int morehelp=0; /* set if user wants more help */ + int quit; + int t; + static int nargc; + static char **nargv; + + puts(mikbanner); + + /* Expand wildcards on commandline */ + + nargc=argc; nargv=argv; +#ifndef __DJGPP__ + MyGlob(&nargc,&nargv,0); +#else + setvbuf(stdout, NULL, _IONBF, 0); + __djgpp_set_ctrl_c(0); +#endif + + /* + Initialize soundcard parameters.. you _have_ to do this + before calling MD_Init(), and it's illegal to change them + after you've called MD_Init() + */ + + md_mixfreq =44100; /* standard mixing freq */ + md_dmabufsize =20000; /* standard dma buf size */ + md_mode =DMODE_16BITS|DMODE_STEREO; /* standard mixing mode */ + md_device =0; /* standard device: autodetect */ + + /* + Register the loaders we want to use.. + */ + + ML_RegisterLoader(&load_m15); /* if you use m15load, register it as first! */ + ML_RegisterLoader(&load_mod); + ML_RegisterLoader(&load_mtm); + ML_RegisterLoader(&load_s3m); + ML_RegisterLoader(&load_stm); + ML_RegisterLoader(&load_ult); + ML_RegisterLoader(&load_uni); + ML_RegisterLoader(&load_xm); + + /* + Register the drivers we want to use: + */ + + MD_RegisterDriver(&drv_nos); +#ifdef __OS2__ + MD_RegisterDriver(&drv_os2); +#elif defined(__WIN32__) + MD_RegisterDriver(&drv_w95); +#else + MD_RegisterDriver(&drv_ss); + MD_RegisterDriver(&drv_sb); + MD_RegisterDriver(&drv_gus); +#endif + + MD_RegisterPlayer(tickhandler); + + /* Parse option switches using standard getopt function: */ + + opterr=0; + + while( !cmderr && + (t=getopt(nargc,nargv,"ohxpm8irv:f:l:d:")) != EOF ){ + + switch(t){ + + case 'd': + md_device=atoi(optarg); + break; + + case 'l': + if(optarg[0]=='d') MD_InfoDriver(); + else if(optarg[0]=='l') ML_InfoLoader(); + else{ + cmderr=1; + break; + } + exit(0); + + case 'r': + mp_loop=1; + break; + + case 'm': + md_mode&=~DMODE_STEREO; + break; + + case '8': + md_mode&=~DMODE_16BITS; + break; + + case 'i': + md_mode|=DMODE_INTERP; + break; + + case 'x': + mp_extspd=0; + break; + + case 'p': + mp_panning=0; + break; + + case 'v': + if((mp_volume=atoi(optarg))>100) mp_volume=100; + break; + + case 'f': + md_mixfreq=atol(optarg); + break; + + case 'h': + morehelp=1; + cmderr=1; + break; + + case '?': + puts("\07Invalid switch or option needs an argument\n"); + cmderr=1; + break; + } + } + + if(cmderr || optind>=nargc){ + + /* + there was an error in the commandline, or there were no true + arguments, so display a usage message + */ + + puts("Usage: MIKMOD [switches] ... \n"); + + if(morehelp) + puts(helptext); + else + puts("Type MIKMOD /h for more help."); + + exit(-1); + } + + /* initialize soundcard */ + + if(!MD_Init()){ + printf("Driver error: %s.\n",myerr); + return 0; + } + + printf("Using %s for %d bit %s %s sound at %u Hz\n\n", + md_driver->Name, + (md_mode&DMODE_16BITS) ? 16:8, + (md_mode&DMODE_INTERP) ? "interpolated":"normal", + (md_mode&DMODE_STEREO) ? "stereo":"mono", + md_mixfreq); + +#ifdef __OS2__ + DosSetPriority( PRTYS_THREAD, PRTYC_TIMECRITICAL, 5L, 0UL ); +#endif + + for(quit=0; !quit && optind exit with errormsg. */ + + if(mf==NULL){ + printf("MikMod Error: %s\n",myerr); + break; + } + + /* initialize modplayer to play this module */ + + MP_Init(mf); + + printf( "Songname: %s\n" + "Modtype : %s\n" + "Periods : %s,%s\n", + mf->songname, + mf->modtype, + (mf->flags&UF_XMPERIODS) ? "XM type" : "mod type", + (mf->flags&UF_LINEAR) ? "Linear" : "Log"); + + /* + set the number of voices to use.. you + could add extra channels here (e.g. md_numchn=mf->numchn+4; ) + to use for your own soundeffects: + */ + + md_numchn=mf->numchn; + + /* start playing the module: */ + + MD_PlayStart(); + + while(!MP_Ready()){ + + char c; + + c=kbhit() ? getch() : 0; + + if(c=='+') + MP_NextPosition(); + else if(c=='-') + MP_PrevPosition(); + else if(c==0x1b){ + quit=1; + break; + } + else if(c==' ') break; + + MD_Update(); + + /* wait a bit */ + +#if defined(__OS2__) + DosSleep(40); /* hmmmm */ +#elif defined(__WIN32__) + Sleep(10); +#elif defined(__DJGPP__) + /* no wait for djgpp ? */ +#else + delay(10); +#endif + printf("\rsngpos:%d patpos:%d sngspd %d bpm %d ",mp_sngpos,mp_patpos,mp_sngspd,mp_bpm); + } + + MD_PlayStop(); /* stop playing */ + ML_Free(mf); /* and free the module */ + puts("\n"); + } + + MD_Exit(); + return 0; +} diff --git a/16/v2/source/MAPED/MIKMOD.H b/16/v2/source/MAPED/MIKMOD.H new file mode 100644 index 00000000..0111ccb3 --- /dev/null +++ b/16/v2/source/MAPED/MIKMOD.H @@ -0,0 +1,580 @@ +#ifndef MIKMOD_H +#define MIKMOD_H + +#include +#include "mtypes.h" /* include atomic mikmod types */ + + +#define mikbanner \ +"=======================================================================\n" \ +"MIKMOD v2.10 - Portable version - Programmed by MikMak of HaRDCoDE '95\n" \ +"=======================================================================\n" \ +"This program is SHAREWARE - Read MIKMOD.TXT for more info\n" \ +"E-Mail : mikmak@stack.urc.tue.nl\n" + + +/* + error variables: + =============== +*/ + +extern char *ERROR_ALLOC_STRUCT; +extern char *ERROR_LOADING_PATTERN; +extern char *ERROR_LOADING_TRACK; +extern char *ERROR_LOADING_HEADER; +extern char *ERROR_NOT_A_MODULE; +extern char *ERROR_LOADING_SAMPLEINFO; +extern char *ERROR_OUT_OF_HANDLES; +extern char *ERROR_SAMPLE_TOO_BIG; +extern char *myerr; + + + +#define _mm_rewind(x) _mm_fseek(x,0,SEEK_SET) +int _mm_fseek(FILE *stream,long offset,int whence); +void _mm_setiobase(long iobase); +long _mm_ftell(FILE *stream); + + +extern SBYTE _mm_read_SBYTE (FILE *fp); +extern UBYTE _mm_read_UBYTE (FILE *fp); + +extern SWORD _mm_read_M_SWORD (FILE *fp); +extern SWORD _mm_read_I_SWORD (FILE *fp); + +extern UWORD _mm_read_M_UWORD(FILE *fp); +extern UWORD _mm_read_I_UWORD(FILE *fp); + +extern SLONG _mm_read_M_SLONG (FILE *fp); +extern SLONG _mm_read_I_SLONG (FILE *fp); + +extern ULONG _mm_read_M_ULONG(FILE *fp); +extern ULONG _mm_read_I_ULONG(FILE *fp); + +extern int _mm_read_str(char *str, int size, FILE *fp); + +extern int _mm_read_SBYTES (SBYTE *buffer, int number, FILE *fp); +extern int _mm_read_UBYTES (UBYTE *buffer, int number, FILE *fp); + +extern int _mm_read_M_SWORDS (SWORD *buffer, int number, FILE *fp); +extern int _mm_read_I_SWORDS (SWORD *buffer, int number, FILE *fp); + +extern int _mm_read_M_UWORDS (UWORD *buffer, int number, FILE *fp); +extern int _mm_read_I_UWORDS (UWORD *buffer, int number, FILE *fp); + +extern int _mm_read_M_SLONGS (SLONG *buffer, int number, FILE *fp); +extern int _mm_read_I_SLONGS (SLONG *buffer, int number, FILE *fp); + +extern int _mm_read_M_ULONGS (ULONG *buffer, int number, FILE *fp); +extern int _mm_read_I_ULONGS (ULONG *buffer, int number, FILE *fp); + + +extern void _mm_write_SBYTE (SBYTE data,FILE *fp); +extern void _mm_write_UBYTE (UBYTE data,FILE *fp); + +extern void _mm_write_M_SWORD (SWORD data,FILE *fp); +extern void _mm_write_I_SWORD (SWORD data,FILE *fp); + +extern void _mm_write_M_UWORD (UWORD data,FILE *fp); +extern void _mm_write_I_UWORD (UWORD data,FILE *fp); + +extern void _mm_write_M_SLONG (SLONG data,FILE *fp); +extern void _mm_write_I_SLONG (SLONG data,FILE *fp); + +extern void _mm_write_M_ULONG (ULONG data,FILE *fp); +extern void _mm_write_I_ULONG (ULONG data,FILE *fp); + +extern void _mm_write_SBYTES (SBYTE *data, int number,FILE *fp); +extern void _mm_write_UBYTES (UBYTE *data, int number,FILE *fp); + +extern void _mm_write_M_SWORDS (SWORD *data, int number,FILE *fp); +extern void _mm_write_I_SWORDS (SWORD *data, int number,FILE *fp); + +extern void _mm_write_M_UWORDS (UWORD *data, int number,FILE *fp); +extern void _mm_write_I_UWORDS (UWORD *data, int number,FILE *fp); + +extern void _mm_write_M_SLONGS (SLONG *data, int number,FILE *fp); +extern void _mm_write_I_SLONGS (SLONG *data, int number,FILE *fp); + +extern void _mm_write_M_ULONGS (ULONG *data, int number,FILE *fp); +extern void _mm_write_I_ULONGS (ULONG *data, int number,FILE *fp); + + +/************************************************************************** +****** Unitrack stuff: **************************************************** +**************************************************************************/ + +/* + prototypes: +*/ + +void UniSetRow(UBYTE *t); +UBYTE UniGetByte(void); +UBYTE *UniFindRow(UBYTE *t,UWORD row); +void UniReset(void); +void UniWrite(UBYTE data); +void UniNewline(void); +void UniInstrument(UBYTE ins); +void UniNote(UBYTE note); +void UniPTEffect(UBYTE eff,UBYTE dat); +UBYTE *UniDup(void); +void UniSkipOpcode(UBYTE op); +BOOL UniInit(void); +void UniCleanup(void); +UWORD TrkLen(UBYTE *t); +BOOL MyCmp(UBYTE *a,UBYTE *b,UWORD l); + +/* + all known effects: +*/ + +enum { + UNI_NOTE=1, + UNI_INSTRUMENT, + UNI_PTEFFECT0, + UNI_PTEFFECT1, + UNI_PTEFFECT2, + UNI_PTEFFECT3, + UNI_PTEFFECT4, + UNI_PTEFFECT5, + UNI_PTEFFECT6, + UNI_PTEFFECT7, + UNI_PTEFFECT8, + UNI_PTEFFECT9, + UNI_PTEFFECTA, + UNI_PTEFFECTB, + UNI_PTEFFECTC, + UNI_PTEFFECTD, + UNI_PTEFFECTE, + UNI_PTEFFECTF, + UNI_S3MEFFECTA, + UNI_S3MEFFECTD, + UNI_S3MEFFECTE, + UNI_S3MEFFECTF, + UNI_S3MEFFECTI, + UNI_S3MEFFECTQ, + UNI_S3MEFFECTT, + UNI_XMEFFECTA, + UNI_XMEFFECTG, + UNI_XMEFFECTH, + UNI_XMEFFECTP +}; + + +/************************************************************************** +****** mikmod types: ****************************************************** +**************************************************************************/ + + +/* + Sample format flags: +*/ + +#define SF_16BITS 1 +#define SF_SIGNED 2 +#define SF_DELTA 4 +#define SF_BIG_ENDIAN 8 +#define SF_LOOP 16 +#define SF_BIDI 32 +#define SF_OWNPAN 64 +#define SF_REVERSE 128 + + +/* + Envelope flags: +*/ + +#define EF_ON 1 +#define EF_SUSTAIN 2 +#define EF_LOOP 4 + + +/* + Unimod flags +*/ + +#define UF_XMPERIODS 1 /* if set use XM periods/finetuning */ +#define UF_LINEAR 2 /* if set use LINEAR periods */ + + +typedef struct ENVPT{ + SWORD pos; + SWORD val; +} ENVPT; + + +typedef struct SAMPLE{ + UWORD c2spd; /* finetune frequency */ + SBYTE transpose; /* transpose value */ + UBYTE volume; /* volume 0-64 */ + UBYTE panning; /* panning */ + ULONG length; /* length of sample (in samples!) */ + ULONG loopstart; /* repeat position (relative to start, in samples) */ + ULONG loopend; /* repeat end */ + UWORD flags; /* sample format */ + ULONG seekpos; /* seek position in file */ + char *samplename; /* name of the sample */ + SWORD handle; /* sample handle */ +} SAMPLE; + + +typedef struct INSTRUMENT{ + UBYTE numsmp; + UBYTE samplenumber[96]; + + UBYTE volflg; /* bit 0: on 1: sustain 2: loop */ + UBYTE volpts; + UBYTE volsus; + UBYTE volbeg; + UBYTE volend; + ENVPT volenv[12]; + + UBYTE panflg; /* bit 0: on 1: sustain 2: loop */ + UBYTE panpts; + UBYTE pansus; + UBYTE panbeg; + UBYTE panend; + ENVPT panenv[12]; + + UBYTE vibtype; + UBYTE vibsweep; + UBYTE vibdepth; + UBYTE vibrate; + + UWORD volfade; + char *insname; + SAMPLE *samples; +} INSTRUMENT; + + +/* + MikMod UNImod types: + ==================== +*/ + +typedef struct UNIMOD{ + UBYTE numchn; /* number of channels */ + UWORD numpos; /* number of positions in this song */ + UWORD reppos; /* restart position */ + UWORD numpat; /* number of patterns in this song */ + UWORD numtrk; /* number of tracks */ + UWORD numins; /* number of samples */ + UBYTE initspeed; /* */ + UBYTE inittempo; /* */ + UBYTE positions[256]; /* all positions */ + UBYTE panning[32]; /* 32 panning positions */ + UBYTE flags; /* */ + char *songname; /* name of the song */ + char *modtype; /* string type of module */ + char *comment; /* module comments */ + INSTRUMENT *instruments; /* all samples */ + UWORD *patterns; /* array of PATTERN */ + UWORD *pattrows; /* array of number of rows for each pattern */ + UBYTE **tracks; /* array of pointers to tracks */ +} UNIMOD; + + +/************************************************************************** +****** Loader stuff: ****************************************************** +**************************************************************************/ + +/* + loader structure: +*/ + +typedef struct LOADER{ + struct LOADER *next; + char *type; + char *version; + BOOL (*Init)(void); + BOOL (*Test)(void); + BOOL (*Load)(void); + void (*Cleanup)(void); +} LOADER; + + +/* + public loader variables: +*/ + +extern UNIMOD of; +extern FILE *modfp; +extern UWORD finetune[16]; + + +/* + main loader prototypes: +*/ + +void ML_InfoLoader(void); +void ML_RegisterLoader(LOADER *ldr); +UNIMOD *ML_LoadFP(FILE *fp); +UNIMOD *ML_LoadFN(char *filename); +void ML_Free(UNIMOD *mf); + + +/* + other loader prototypes: (used by the loader modules) +*/ + +BOOL InitTracks(void); +void AddTrack(UBYTE *tr); +BOOL ReadComment(UWORD len); +BOOL AllocPatterns(void); +BOOL AllocTracks(void); +BOOL AllocInstruments(void); +BOOL AllocSamples(INSTRUMENT *i); +char *DupStr(char *s,UWORD len); +void *MyMalloc(size_t size); +void *MyCalloc(size_t nitems,size_t size); + + +/* + Declare external loaders: +*/ +extern LOADER load_uni; +extern LOADER load_mod; +extern LOADER load_m15; +extern LOADER load_mtm; +extern LOADER load_s3m; +extern LOADER load_stm; +extern LOADER load_ult; +extern LOADER load_xm; + + +/************************************************************************** +****** Wavload stuff: ***************************************************** +**************************************************************************/ + +SAMPLE *MW_LoadWavFP(FILE *fp); +SAMPLE *MW_LoadWavFN(char *filename); +void MW_FreeWav(SAMPLE *si); + + +/************************************************************************** +****** Driver stuff: ****************************************************** +**************************************************************************/ + +/* + max. number of handles a driver has to provide. (not strict) +*/ + +#define MAXSAMPLEHANDLES 128 + + +/* + possible mixing mode bits: +*/ + +#define DMODE_STEREO 1 +#define DMODE_16BITS 2 +#define DMODE_INTERP 4 + + +/* + driver structure: +*/ + +typedef struct DRIVER{ + struct DRIVER *next; + char *Name; + char *Version; + BOOL (*IsPresent) (void); + SWORD (*SampleLoad) (FILE *fp,ULONG size,ULONG reppos,ULONG repend,UWORD flags); + void (*SampleUnLoad) (SWORD handle); + BOOL (*Init) (void); + void (*Exit) (void); + void (*PlayStart) (void); + void (*PlayStop) (void); + void (*Update) (void); + void (*VoiceSetVolume) (UBYTE voice,UBYTE vol); + void (*VoiceSetFrequency) (UBYTE voice,ULONG frq); + void (*VoiceSetPanning) (UBYTE voice,UBYTE pan); + void (*VoicePlay) (UBYTE voice,SWORD handle,ULONG start,ULONG size,ULONG reppos,ULONG repend,UWORD flags); +} DRIVER; + + +/* + public driver variables: +*/ + +extern DRIVER *md_driver; +extern UWORD md_device; +extern UWORD md_mixfreq; +extern UWORD md_dmabufsize; +extern UWORD md_mode; +extern UBYTE md_numchn; +extern UBYTE md_bpm; +extern void (*md_player)(void); + +/* + main driver prototypes: +*/ + +void MD_InfoDriver(void); +void MD_RegisterDriver(DRIVER *drv); +void MD_RegisterPlayer(void (*plr)(void)); +SWORD MD_SampleLoad(FILE *fp,ULONG size,ULONG reppos,ULONG repend,UWORD flags); +void MD_SampleUnLoad(SWORD handle); +BOOL MD_Init(void); +void MD_Exit(void); +void MD_PlayStart(void); +void MD_PlayStop(void); +void MD_SetBPM(UBYTE bpm); +void MD_Update(void); +void MD_VoiceSetVolume(UBYTE voice,UBYTE ivol); +void MD_VoiceSetFrequency(UBYTE voice,ULONG frq); +void MD_VoiceSetPanning(UBYTE voice,ULONG pan); +void MD_VoicePlay(UBYTE voice,SWORD handle,ULONG start,ULONG size,ULONG reppos,ULONG repend,UWORD flags); +void SL_Init(FILE *fp,UWORD infmt,UWORD outfmt); +void SL_Load(void *buffer,ULONG length); + +/* + Declare external drivers: +*/ + +extern DRIVER drv_gus; /* gravis ultrasound driver */ +extern DRIVER drv_sb; /* soundblaster DSP driver */ +extern DRIVER drv_ss; /* ensoniq soundscape driver */ +extern DRIVER drv_nos; /* nosound driver */ +extern DRIVER drv_raw; /* file output driver */ +extern DRIVER drv_w95; /* win95 driver */ +extern DRIVER drv_awe; /* experimental SB-AWE driver */ +extern DRIVER drv_vox; /* linux voxware driver */ +extern DRIVER drv_af; /* Dec Alpha AudioFile driver */ +extern DRIVER drv_sun; /* Sun driver */ +extern DRIVER drv_os2; /* Os2 driver */ +extern DRIVER drv_tim; /* timing driver */ + +/************************************************************************** +****** Player stuff: ****************************************************** +**************************************************************************/ + + +typedef struct ENVPR{ + UBYTE flg; /* envelope flag */ + UBYTE pts; /* number of envelope points */ + UBYTE sus; /* envelope sustain index */ + UBYTE beg; /* envelope loop begin */ + UBYTE end; /* envelope loop end */ + SWORD p; /* current envelope counter */ + UWORD a; /* envelope index a */ + UWORD b; /* envelope index b */ + ENVPT *env; /* envelope points */ +} ENVPR; + + +typedef struct AUDTMP{ + INSTRUMENT *i; + SAMPLE *s; + + UWORD fadevol; /* fading volume */ + + ENVPR venv; + ENVPR penv; + + UBYTE keyon; /* if true=key is pressed. */ + UBYTE kick; /* if true=sample has to be restarted */ + UBYTE sample; /* which sample number (0-31) */ + SWORD handle; /* which sample-handle */ + + ULONG start; /* The start byte index in the sample */ + + UBYTE panning; /* panning position */ + UBYTE pansspd; /* panslide speed */ + + SBYTE volume; /* amiga volume (0 t/m 64) to play the sample at */ + UWORD period; /* period to play the sample at */ + + /* You should not have to use the values + below in the player routine */ + + SBYTE transpose; + + UBYTE note; /* */ + + SWORD ownper; + SWORD ownvol; + + UBYTE *row; /* row currently playing on this channel */ + + SBYTE retrig; /* retrig value (0 means don't retrig) */ + UWORD c2spd; /* what finetune to use */ + + SBYTE tmpvolume; /* tmp volume */ + + UWORD tmpperiod; /* tmp period */ + UWORD wantedperiod; /* period to slide to (with effect 3 or 5) */ + + UWORD slidespeed; /* */ + UWORD portspeed; /* noteslide speed (toneportamento) */ + + UBYTE s3mtremor; /* s3m tremor (effect I) counter */ + UBYTE s3mtronof; /* s3m tremor ontime/offtime */ + + UBYTE s3mvolslide; /* last used volslide */ + + UBYTE s3mrtgspeed; /* last used retrig speed */ + UBYTE s3mrtgslide; /* last used retrig slide */ + + UBYTE glissando; /* glissando (0 means off) */ + UBYTE wavecontrol; /* */ + + SBYTE vibpos; /* current vibrato position */ + UBYTE vibspd; /* "" speed */ + UBYTE vibdepth; /* "" depth */ + + SBYTE trmpos; /* current tremolo position */ + UBYTE trmspd; /* "" speed */ + UBYTE trmdepth; /* "" depth */ + + UWORD soffset; /* last used sample-offset (effect 9) */ +} AUDTMP; + + +extern AUDTMP mp_audio[32]; /* max eight channels */ +extern UBYTE mp_bpm; /* beats-per-minute speed */ +extern UWORD mp_patpos; /* current row number (0-63) */ +extern SWORD mp_sngpos; /* current song position */ +extern UWORD mp_sngspd; /* current songspeed */ + +extern BOOL mp_loop; +extern BOOL mp_panning; +extern BOOL mp_extspd; +extern UBYTE mp_volume; + +/* + player prototypes: +*/ + +int MP_Ready(void); +void MP_NextPosition(void); +void MP_PrevPosition(void); +void MP_SetPosition(UWORD pos); +void MP_HandleTick(void); +void MP_Init(UNIMOD *m); + + +/************************************************************************** +****** Virtual channel stuff: ********************************************* +**************************************************************************/ + +BOOL VC_Init(void); +void VC_Exit(void); + +void VC_PlayStart(void); +void VC_PlayStop(void); + +SWORD VC_SampleLoad(FILE *fp,ULONG size,ULONG reppos,ULONG repend,UWORD flags); +void VC_SampleUnload(SWORD handle); + +void VC_WriteSamples(SBYTE *buf,UWORD todo); +UWORD VC_WriteBytes(SBYTE *buf,UWORD todo); +void VC_SilenceBytes(SBYTE *buf,UWORD todo); + +void VC_VoiceSetVolume(UBYTE voice,UBYTE vol); +void VC_VoiceSetFrequency(UBYTE voice,ULONG frq); +void VC_VoiceSetPanning(UBYTE voice,UBYTE pan); +void VC_VoicePlay(UBYTE voice,SWORD handle,ULONG start,ULONG size,ULONG reppos,ULONG repend,UWORD flags); + +#endif diff --git a/16/v2/source/MAPED/MIKMOD.LIB b/16/v2/source/MAPED/MIKMOD.LIB new file mode 100644 index 0000000000000000000000000000000000000000..0f55de9509397675e1f2f6354e32380a510ae977 GIT binary patch literal 94720 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�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 z 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 +#include +#include + +#include "config.h" +#include "keyboard.h" +#include "maped.h" +#include "mouse.h" +#include "vdriver.h" + +// ============================ Data ============================ + +unsigned char mvsp[2048]; // mini-VSP dominant color +int xoff=0, yoff=0; // x-offset, y-offset + +// ============================ Code ============================ +/* +FindDominantColor(int i) +{ unsigned char *src; + int j,tally=0; + + // This is a cheap-ass method. I have a more proper method in mind, but + // I'm going to do this for now b/c I'm lazy. Actually, the real reason is + // speed. + + src=vsp+(i*256); + + for (j=0; j<256; j++) + { + tally+=*src; + src++; + } + tally=tally/256; + mvsp[i]=(unsigned char) tally; +} +*/ + +void FindDominantColor(int i) +{ unsigned char *src, tally[256], tab; + int j; + + src=vsp+(i*256); + memset(&tally, 0, 256); + + for (j=0; j<256; j++) + { + tally[*src]++; + src++; + } + tab=0; + for (j=0; j<256; j++) + { + if (tally[j] > tab) tab=j; + } + mvsp[i]=(unsigned char) tab; +} + +void GenerateMiniVSP() +{ int i; + + for (i=0; i 0) xoff-=16; + key[SCAN_LEFT]=0; + } + if (key[SCAN_UP] && yoff) + { + if (yoff > 0) yoff-=16; + key[SCAN_UP]=0; + } + if (key[SCAN_DOWN]) + { + if (yoff < layer[0].sizey) + yoff+=16; + key[SCAN_DOWN]=0; + } + if (key[SCAN_RIGHT]) + { + if (xoff < layer[0].sizex) + xoff+=16; + key[SCAN_RIGHT]=0; + } + if (mb) + { + xwin=(xoff+mx-16)*16; + ywin=(yoff+my-16)*16; + if (xwin>=(layer[0].sizex*16)-320) xwin=(layer[0].sizex*16)-320; + if (ywin>=(layer[0].sizey*16)-tsy-15) ywin=(layer[0].sizey*16)-tsy-15; + WaitRelease(); + break; + } + } + key[SCAN_ESC]=0; + vfree(ptr); +} diff --git a/16/v2/source/MAPED/MINIMAP.H b/16/v2/source/MAPED/MINIMAP.H new file mode 100644 index 00000000..254b13bd --- /dev/null +++ b/16/v2/source/MAPED/MINIMAP.H @@ -0,0 +1,24 @@ +/* +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. +*/ + +#ifndef MINIMAP_INC +#define MINIMAP_INC + +extern void FindDominantColor(int i); +extern void GenerateMiniVSP(); +extern void MiniMAP(); + +#endif // MINIMAP_INC diff --git a/16/v2/source/MAPED/MODE13H.C b/16/v2/source/MAPED/MODE13H.C new file mode 100644 index 00000000..38336e14 --- /dev/null +++ b/16/v2/source/MAPED/MODE13H.C @@ -0,0 +1,350 @@ +/* +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. +*/ + +#include +#include + +#include "mode13h.h" +#include "vdriver.h" + +// ================================= Data ==================================== + +char *screenr; // realscr +char startline=16; // virtual scroll around 240 vert. pixels +extern unsigned char* translucency_table; //zero + +extern void *valloc(int amount, char*, int); +extern int vfree(void *); +extern void CheckTimerStuff(); // in maped.c + +// ================================= Code ==================================== + + +void SetMode(int mode) +{ + REGISTERS r; + SET_AX(r, mode); + INTERRUPT(0x10, r); +} + +int Mode13hShutdown() +{ + SetMode(0x3); + vfree(screen); + screen=0; + return 0; +} + +int Mode13hShowPage() +{ int rows; + char *s,*d; + + CheckTimerStuff(); + + s=screen+(16*tsx)+16; + d=screenr; + rows=sy; + + for (; rows; rows--) + { + memcpy(d,s,sx); + s+=tsx; + d+=sx; + } + + return 0; +} + +int Mode13hCopySprite(int x, int y, int width, int height, char *src) +{ char *d; + + d=screen+(y*tsx)+x; + for (; height; height--) + { + memcpy(d,src,width); + src+=width; + d+=tsx; + } + + return 0; +} + +int Mode13hCCopySprite(int x,int y,int width,int height,char *src) +{ int cx1,cy1,cx2,cy2; + char *s,*d; + int xl,yl,xs,ys; + + xl=width; + yl=height; + xs=ys=0; + + cx1=0; + cy1=0; + cx2=tsx-1; + cy2=tsy-1; + + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + + if (xcx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + + if (xcx2 || y>cy2 || x cy2) length=cy2-y+1; + if (ycx2 || y>cy2 || x+width cx2) width=cx2-x+1; + if (x336 || y<0 || y>256) return 0; + d=screen+(y*tsx)+x; + for (y=0; y<8; y++) + { + d[0]=c; d[2]=c; d[4]=c; d[6]=c; + d[8]=c; d[10]=c; d[12]=c; d[14]=c; + + d+=(tsx+1); + + d[0]=c; d[2]=c; d[4]=c; d[6]=c; + d[8]=c; d[10]=c; d[12]=c; d[14]=c; + + d+=(tsx-1); + } + + return 0; +} + +int Mode13hClearScreen() +{ + memset(screen,0,76032); + return 0; +} + +int Mode13hCopySpriteLucentClip(int x, int y, int width, int height, unsigned char *src) +{ + int cx1,cy1,cx2,cy2; + unsigned char *s,*d,c; + int xl,yl,xs,ys; + + cx1=0; + cy1=0; + cx2=tsx-1; + cy2=tsy-1; + + xl=width; + yl=height; + xs=ys=0; + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (x +#include +#include + +#include "mode13h.h" // SetMode() +#include "modex.h" +#include "vdriver.h" + +// ================================= Data ==================================== + +#define SEQU_ADDR 0x3c4 +#define CRTC_ADDR 0x3d4 +#define MISC_OUTPUT 0x3c2 + +char *screen1, *screen2; // page banks; +char *screenx, curscr; // ptr to active page | page flip ctr +char *screenbase; // ptr to A000:0000 + +extern unsigned char* translucency_table; //zero + +extern void CheckTimerStuff(); +extern void *valloc(int amount,char*,int); +extern int vfree(void *); + +// ================================= Code ==================================== + +static void plane(char p) +{ + int hi=1<>2); + + while (d>2); + } + + s+=tsx; + d+=(sx>>2); + } + return 0; +} + +int ModeXCopySprite(int x, int y, int width, int height, char *src) +{ char *d; + + d=screen+(y*tsx)+x; + for (; height; height--) + { + memcpy(d,src,width); + src+=width; + d+=tsx; + } + + return 0; +} + +int ModeXCCopySprite(int x,int y,int width,int height,char *src) +{ int cx1,cy1,cx2,cy2; + char *s,*d; + int xl,yl,xs,ys; + + xl=width; + yl=height; + xs=ys=0; + + cx1=0; + cy1=0; + cx2=tsx-1; + cy2=tsy-1; + + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + + if (xcx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + + if (xcx2 || y>cy2 || x cy2) length=cy2-y+1; + if (ycx2 || y>cy2 || x+width cx2) width=cx2-x+1; + if (x336 || y<0 || y>256) return 0; + d=screen+(y*tsx)+x; + for (y=0; y<8; y++) + { + d[0]=c; d[2]=c; d[4]=c; d[6]=c; + d[8]=c; d[10]=c; d[12]=c; d[14]=c; + + d+=(tsx+1); + + d[0]=c; d[2]=c; d[4]=c; d[6]=c; + d[8]=c; d[10]=c; d[12]=c; d[14]=c; + + d+=(tsx-1); + } + + return 0; +} + +int ModeXClearScreen() +{ + memset(screen,0,90117); + return 0; +} + +int ModeXCopySpriteLucentClip(int x, int y, int width, int height, unsigned char *src) +{ + int cx1,cy1,cx2,cy2; + unsigned char *s,*d,c; + int xl,yl,xs,ys; + + cx1=0; + cy1=0; + cx2=tsx-1; + cy2=tsy-1; + + xl=width; + yl=height; + xs=ys=0; + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (x +#include +#include + +#include "timer.h" +#include "vdriver.h" + +// ================================= Data ==================================== + +extern char mousepic[]; // blah + +static union REGS regs; + +int mx=0,my=0,mb=0; +int rb=0,wb=0; +int lmx=0,lmy=0,lmb=0; + +// ================================= Code ==================================== + +void PutMouse(int x, int y) +{ + lmx=mx; lmy=my; lmb=mb; + memset(®s, 0, sizeof regs); + regs.w.ax=4; + regs.w.cx=x*2; + regs.w.dx=y*2; + int386(0x33,®s,®s); + + mx=x; my=y; +} + +void InitMouse() +{ + memset(®s, 0, sizeof regs); + int386(0x33,®s,®s); + + regs.w.ax=7; + regs.w.cx=0; + regs.w.dx=640; /*320;*/ /* -- ric:13/Jun/98 - fix horizontal jumps -- */ + int386(0x33,®s,®s); + + regs.w.ax=8; + regs.w.cx=0; + regs.w.dx=sy; // aen + int386(0x33,®s,®s); + + PutMouse(sx/2,(sy/2) /2); // aen +} + +void ReadMouse() +{ + lmx=mx; lmy=my; lmb=mb; + memset(®s, 0, sizeof regs); + regs.w.ax=3; + int386(0x33,®s,®s); + + mx=((regs.w.cx)>>1)+16; /* -- ric:13/Jun/98 - fix horizontal jumps -- */ + my=(regs.w.dx)+16; + rb=regs.w.bx; + + if (rb && wb) { mb=0; return; } + if (wb && !rb) wb=0; + mb=rb; + + if ((lmx!=mx) || (lmy!=my) || (lmb!=mb)) idlect=0; +} + +void DrawMouse() +{ + ReadMouse(); + TCopySprite(mx,my,4,5,mousepic); +} + +void WaitRelease() +{ + wb=1; + mb=0; +} diff --git a/16/v2/source/MAPED/MOUSE.H b/16/v2/source/MAPED/MOUSE.H new file mode 100644 index 00000000..d0e9a1d2 --- /dev/null +++ b/16/v2/source/MAPED/MOUSE.H @@ -0,0 +1,30 @@ +/* +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. +*/ + +#ifndef MOUSE_INC +#define MOUSE_INC + +extern int mx,my,mb; +extern int rb,wb; +extern int lmx,lmy,lmb; + +extern void PutMouse(int x, int y); +extern void InitMouse(); +extern void ReadMouse(); +extern void DrawMouse(); +extern void WaitRelease(); + +#endif // MOUSE_INC diff --git a/16/v2/source/MAPED/MTYPES.H b/16/v2/source/MAPED/MTYPES.H new file mode 100644 index 00000000..a57d0879 --- /dev/null +++ b/16/v2/source/MAPED/MTYPES.H @@ -0,0 +1,73 @@ +#ifndef MTYPES_H +#define MTYPES_H + +/* + MikMod atomic types: + ==================== +*/ + + +#ifdef __OS2__ + +typedef signed char SBYTE; /* has to be 1 byte signed */ +typedef unsigned char UBYTE; /* has to be 1 byte unsigned */ +typedef short SWORD; /* has to be 2 bytes signed */ +typedef unsigned short UWORD; /* has to be 2 bytes unsigned */ +typedef long SLONG; /* has to be 4 bytes signed */ +/* ULONG and BOOL are already defined in OS2.H */ + +#elif defined(__alpha) + +typedef char SBYTE; /* has to be 1 byte signed */ +typedef unsigned char UBYTE; /* has to be 1 byte unsigned */ +typedef short SWORD; /* has to be 2 bytes signed */ +typedef unsigned short UWORD; /* has to be 2 bytes unsigned */ +/* long is 8 bytes on dec alpha - RCA */ +typedef int SLONG; /* has to be 4 bytes signed */ +typedef unsigned int ULONG; /* has to be 4 bytes unsigned */ +typedef int BOOL; /* doesn't matter.. 0=FALSE, <>0 true */ + +#else + +typedef char SBYTE; /* has to be 1 byte signed */ +typedef unsigned char UBYTE; /* has to be 1 byte unsigned */ +typedef short SWORD; /* has to be 2 bytes signed */ +typedef unsigned short UWORD; /* has to be 2 bytes unsigned */ +typedef long SLONG; /* has to be 4 bytes signed */ +typedef unsigned long ULONG; /* has to be 4 bytes unsigned */ +typedef int BOOL; /* doesn't matter.. 0=FALSE, <>0 true */ + +#endif + + +#ifdef __OS2__ +#define INCL_DOS +#define INCL_MCIOS2 +#define INCL_MMIOOS2 +#include +#include +#include +#endif + + +#ifdef __WATCOMC__ +#define inportb(x) inp(x) +#define outportb(x,y) outp(x,y) +#define inport(x) inpw(x) +#define outport(x,y) outpw(x,y) +#define disable() _disable() +#define enable() _enable() +#endif + + +#ifdef __DJGPP__ +#include +#include +#include +#define inp inportw +#define outport outportw +#define inport inportw +#define interrupt +#endif + +#endif diff --git a/16/v2/source/MAPED/PCX.C b/16/v2/source/MAPED/PCX.C new file mode 100644 index 00000000..5ab55f66 --- /dev/null +++ b/16/v2/source/MAPED/PCX.C @@ -0,0 +1,210 @@ +/* +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. +*/ + +#include +#include "timer.h" +#include "vga.h" + +char manufacturer; // pcx header +char version; +char encoding; +char bits_per_pixel; +short int xmin,ymin; +short int xmax,ymax; +short int hres; +short int vres; +char palette[48]; +char reserved; +char color_planes; +short int bytes_per_line; +short int palette_type; +char filler[58]; + +unsigned short int width,depth; +unsigned short int bytes, i; +unsigned char c, run, ss=0; +unsigned int vidoffset, n=0; +FILE *pcxf; + +void ReadPCXLine(unsigned char *dest) +{ int j; + n=0; + + do { + c=fgetc(pcxf) & 0xff; + if ((c & 0xc0)==0xc0) { + run=c & 0x3f; + c=fgetc(pcxf); + for (j=0; j> 2; + set_intensity(63); +} + +void LoadPCXHeaderNP(char *fname) +{ + if (!(pcxf=fopen(fname,"rb"))) err("Could not open specified PCX file."); + fread(&manufacturer,1,1,pcxf); + fread(&version,1,1,pcxf); + fread(&encoding,1,1,pcxf); + fread(&bits_per_pixel,1,1,pcxf); + fread(&xmin,1,2,pcxf); + fread(&ymin,1,2,pcxf); + fread(&xmax,1,2,pcxf); + fread(&ymax,1,2,pcxf); + fread(&hres,1,2,pcxf); + fread(&vres,1,2,pcxf); + fread(&palette,1,48,pcxf); + fread(&reserved,1,1,pcxf); + fread(&color_planes,1,1,pcxf); + fread(&bytes_per_line,1,2,pcxf); + fread(&palette_type,1,2,pcxf); + fread(&filler,1,58,pcxf); + width=xmax-xmin+1; + depth=ymax-ymin+1; + bytes=bytes_per_line; +} + +void loadpcx(char *fname, char *dest) +{ + LoadPCXHeader(fname); + + for (i=0; i1 || (byte & 0xC0) != 0) + { + repcode=0xC0 | samect; + fwrite(&repcode,1,1,pcxf); + } + fwrite(&byte,1,1,pcxf); + } while (i<320); +} + +void WritePalette() +{ char b; + int i; + + for (i=0; i<768; i++) + pal[i]=pal[i] << 2; + + b=12; fwrite(&b, 1, 1, pcxf); + fwrite(pal, 1, 768, pcxf); + + for (i=0; i<768; i++) + pal[i]=pal[i] >> 2; +} + +void ScreenShot() +{ unsigned char b1; + unsigned short int w1; + char fnamestr[13]; + + // Takes a snapshot of the current screen. + + dec_to_asciiz(ss,&fnamestr); + b1=strlen(&fnamestr); + fnamestr[b1++]='.'; + fnamestr[b1++]='P'; + fnamestr[b1++]='C'; + fnamestr[b1++]='X'; + fnamestr[b1++]=0; + + pcxf=fopen(&fnamestr,"wb"); + ss++; + +// Write PCX header + + b1=10; fwrite(&b1, 1, 1, pcxf); // manufacturer always = 10 + b1=5; fwrite(&b1, 1, 1, pcxf); // version = 3.0, >16 colors + b1=1; fwrite(&b1, 1, 1, pcxf); // encoding always = 1 + b1=8; fwrite(&b1, 1, 1, pcxf); // 8 bits per pixel, for 256 colors + w1=0; fwrite(&w1, 1, 2, pcxf); // xmin = 0; + w1=0; fwrite(&w1, 1, 2, pcxf); // ymin = 0; + w1=319; fwrite(&w1, 1, 2, pcxf); // xmax = 319; + w1=199; fwrite(&w1, 1, 2, pcxf); // ymax = 199; + w1=320; fwrite(&w1, 1, 2, pcxf); // hres = 320; + w1=200; fwrite(&w1, 1, 2, pcxf); // vres = 200; + + fwrite(virscr,1,48,pcxf); // 16-color palette data. Who knows what's + // actually in here. It doesn't matter since + // the 256-color palette is stored elsewhere. + + b1=0; fwrite(&b1, 1, 1, pcxf); // reserved always = 0. + b1=1; fwrite(&b1, 1, 1, pcxf); // number of color planes. Just 1 for 8bit. + w1=320; fwrite(&w1, 1, 2, pcxf); // number of bytes per line + + w1=0; fwrite(&w1, 1, 1, pcxf); + fwrite(virscr, 1, 59, pcxf); // filler + + for (w1=0; w1<200; w1++) + WritePCXLine(screen+(w1*320)); + + WritePalette(); + fclose(pcxf); + timer_count=0; +} diff --git a/16/v2/source/MAPED/RENDER.C b/16/v2/source/MAPED/RENDER.C new file mode 100644 index 00000000..e1067755 --- /dev/null +++ b/16/v2/source/MAPED/RENDER.C @@ -0,0 +1,475 @@ +/* +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. +*/ + +#include +#include +#include + +#include "config.h" +#include "maped.h" +#include "vdriver.h" + +#include "render.h" // MAXTILES + +// ================================= Data ==================================== + +extern char stipple[256]; + +int oxw=0, oyw=0; +int xofs=0, yofs=0; +int xtc=0, ytc=0; + +char curlayer=0; +short tileidx[MAXTILES]; +char flipped[MAXTILES]; + +// ------ + +chri chrs[100]; + +// ================================= Code ==================================== + +void DoCHR(int i) // hee hee! +{ + FILE *f; + char b; + int q; + short numframes; + +// free(chrs[i].frame); +// chrs[i].frame=0; +// return; + + if (!strlen(chrlist[i].t)) + { + if (chrs[i].frame) vfree(chrs[i].frame); + chrs[i].frame=0; + chrs[i].fx=chrs[i].fy=0; + chrs[i].hx=chrs[i].hy=0; + return; + } + if (!(f=fopen(chrlist[i].t,"rb"))) + { + if (chrs[i].frame) vfree(chrs[i].frame); + chrs[i].frame=0; + chrs[i].fx=chrs[i].fy=0; + chrs[i].hx=chrs[i].hy=0; + return; + } + if (chrs[i].frame) vfree(chrs[i].frame); + fread(&b, 1, 1, f); + if (b!=2) + { + // This should really not work with V1 CHRs, but.. + chrs[i].frame=(char *) malloc(512); + fseek(f, 0, 0); + fread(chrs[i].frame, 1, 512, f); + fclose(f); + chrs[i].fx=16; chrs[i].fy=32; + chrs[i].hx=0; chrs[i].hy=16; + return; + } + chrs[i].fx=0; fread(&chrs[i].fx, 1, 2, f); + chrs[i].fy=0; fread(&chrs[i].fy, 1, 2, f); + chrs[i].hx=0; fread(&chrs[i].hx, 1, 2, f); + chrs[i].hy=0; fread(&chrs[i].hy, 1, 2, f); + fread(strbuf, 2, 2, f); + fread(&numframes, 1, 2, f); + chrs[i].frame=(char *) valloc(chrs[i].fx*chrs[i].fy*numframes,"chr preview",i); + fread(&q, 1, 4, f); + + ReadCompressedLayer1(chrs[i].frame, chrs[i].fx*chrs[i].fy*numframes,f); + + fclose(f); +} + +void DoCHRdealy() +{ + int i; + + for (i=0; i<100; i++) + DoCHR(i); +} + +void BlitBackLayer(char l) +{ + int i,j; + //int a; + char *img; + //char *d; + unsigned short *lay; + //int v; + int mapx,mapy; + int x,y; + unsigned int tile; + + if (!layertoggle[l]) return; + + mapx = layer[l].sizex; + mapy = layer[l].sizey; + lay = layers[l]; + + // Adjust view + oxw = xwin * layer[l].pmultx / layer[l].pdivx; + oyw = ywin * layer[l].pmulty / layer[l].pdivy; + xofs = 16 - (oxw & 15); + yofs = 16 - (oyw & 15); + xtc = oxw / 16; + ytc = oyw / 16; + + // Draw it, bitch! + for (i=0; i <= ty; i++) + { + for (j=0; j <= tx; j++) + { + x = xtc+j; + y = ytc+i; + + // write better clipping sometime + if (y >= 0 || y < mapy || x >=0 || x < mapx) + { + // what the HELL @_@ + tile = lay[(y * mapx) + x]; + if (tile >= numtiles) tile = numtiles-1; + tile = tileidx[tile]; + if (tile >= numtiles) tile = numtiles-1; + + img = &vsp[tile * 256]; + + x = (j * 16) + xofs; + y = (i * 16) + yofs; + + //CopyTile(x, y, img); + CCopySprite(x, y, 16, 16, img); + } + } + } + + curlayer++; +} + +//zero +extern char* translucency_table; +void LucentBlitLayer(char l) +{ + int i,j; + //int a,b; + char *img; + //char *d; + unsigned short *lay; + //int v; + int mapx,mapy; + int x,y; + unsigned int tile; + + if (!layertoggle[l]) return; + if(!translucency_table) + { + TransBlitlayer(l); + return; + } + + mapx = layer[l].sizex; + mapy = layer[l].sizey; + lay = layers[l]; + + // Adjust view + oxw = xwin * layer[l].pmultx / layer[l].pdivx; + oyw = ywin * layer[l].pmulty / layer[l].pdivy; + xofs = 16 - (oxw & 15); + yofs = 16 - (oyw & 15); + xtc = oxw / 16; + ytc = oyw / 16; + + // Draw it, bitch! + for (i=0; i <= ty; i++) + { + for (j=0; j <= tx; j++) + { + x = xtc+j; + y = ytc+i; + + // write better clipping sometime + if (y >= 0 || y < mapy || x >=0 || x < mapx) + { + // what the HELL @_@ + tile = lay[(y * mapx) + x]; + if (tile >= numtiles) tile = numtiles-1; + tile = tileidx[tile]; + if (tile >= numtiles) tile = numtiles-1; + + img = &vsp[tile * 256]; + if (img != vsp) + { + x = (j * 16) + xofs; + y = (i * 16) + yofs; + CopySpriteLucentClip(x, y, 16, 16, img); + } + } + } + } + curlayer++; +} + + +void TransBlitlayer(char l) +{ + int i,j; + //int a,b; + char *img; + //char *d; + unsigned short *lay; + //int v; + int mapx,mapy; + int x,y; + unsigned int tile; + + if (!layertoggle[l]) return; + + lay = layers[l]; + + mapx = layer[l].sizex; + mapy = layer[l].sizey; + + // Adjust view + oxw = xwin * layer[l].pmultx / layer[l].pdivx; + oyw = ywin * layer[l].pmulty / layer[l].pdivy; + xofs = 16 - (oxw & 15); + yofs = 16 - (oyw & 15); + xtc = oxw / 16; + ytc = oyw / 16; + + // Draw it, bitch! + for (i=0; i <= ty; i++) + { + for (j=0; j <= tx; j++) + { + x = xtc+j; + y = ytc+i; + + // write better clipping sometime + if (y >= 0 || y < mapy || x >=0 || x < mapx) + { + // what the HELL @_@ + tile = lay[(y * mapx) + x]; + if (tile >= numtiles) tile = numtiles-1; + tile = tileidx[tile]; + if (tile >= numtiles) tile = numtiles-1; + + img = &vsp[tile * 256]; + if (img != vsp) + { + x = (j * 16) + xofs; + y = (i * 16) + yofs; + //TCopySprite(x, y, 16, 16, img); + TCCopySprite(x, y, 16, 16, img); + } + } + } + } + + curlayer++; +} + +void BlitLayer(char c) +{ + if(layer[c].trans) { LucentBlitLayer(c); return; } //zero + if (curlayer) TransBlitLayer(c); + else BlitBackLayer(c); +} + +void DrawObstructions() +{ int i,j; + int mapx; + + mapx = layer[0].sizex; + + oxw=xwin*layer[0].pmultx/layer[0].pdivx; + oyw=ywin*layer[0].pmulty/layer[0].pdivy; + xofs=16-(oxw&15); + yofs=16-(oyw&15); + xtc=oxw>>4; + ytc=oyw>>4; + + for (i=0; i>4; + ytc=oyw>>4; + + for (i=0; i=(xwin/16)) && (entity[m].x<(xwin/16)+22) && + (entity[m].y>=(ywin/16)) && (entity[m].y<(ywin/16)+ty+2)) + { + if (chrs[entity[m].chrindex].frame) + TCCopySprite((entity[m].x*16)-xwin+16-chrs[entity[m].chrindex].hx, + (entity[m].y*16)-ywin+16-chrs[entity[m].chrindex].hy, + chrs[entity[m].chrindex].fx, + chrs[entity[m].chrindex].fy, + chrs[entity[m].chrindex].frame); + else + { + TCCopySprite( + (entity[m].x*16)-xwin+16,(entity[m].y*16)-ywin+16,16,16,stipple); + //ColorGrid((entity[m].x*16)-xwin+16, + // (entity[m].y*16)-ywin+16, 0); + } + } +} + +// aen +void DrawSelection() +{ int i,j; + int x1,y1,x2,y2; + + oxw=xwin*layer[el].pmultx/layer[el].pdivx; + oyw=ywin*layer[el].pmulty/layer[el].pdivy; + xofs=16-(oxw&15); + yofs=16-(oyw&15); + xtc=oxw>>4; + ytc=oyw>>4; + + x1=selx1; + y1=sely1; + x2=selx2; + y2=sely2; + + if (x2= x1 && xtc+j <= x2 + && ytc+i >= y1 && ytc+i <= y2) + { + TCCopySprite((j*16)+xofs, (i*16)+yofs, 16,16, stipple); + //ColorGrid((j*16)+xofs,(i*16)+yofs,7); + } + } +} + +void RenderMap() +{ char *src; + //char rs[2]; + + curlayer=0; + src=rstring; + + /* + rs[1]=0; // aen + for (; *src; ++src) + { + rs[0]=*src; + BlitLayer(atoi(rs) -1); + } + */ + while (*src) + { + switch (*src) + { + case '1': BlitLayer(0); break; + case '2': BlitLayer(1); break; + case '3': BlitLayer(2); break; + case '4': BlitLayer(3); break; + case '5': BlitLayer(4); break; + case '6': BlitLayer(5); break; + } + src++; + } + + if (!curlayer) memset(screen+5648,0,84480); + if (layertoggle[6]) DrawObstructions(); + if (layertoggle[7]) DrawZones(); + if (layertoggle[8]) DrawEntities(); + if (shifted) DrawSelection(); +} + +void AnimateTile(char i, int l) +{ + switch (vspanim[i].mode) + { + case 0: if (tileidx[l]vspanim[i].start) tileidx[l]--; + else tileidx[l]=vspanim[i].finish; + break; + case 2: tileidx[l]=random(vspanim[i].start,vspanim[i].finish); + break; + case 3: if (flipped[l]) + { + if (tileidx[l]!=vspanim[i].start) tileidx[l]--; + else { tileidx[l]++; flipped[l]=0; } + } + else + { + if (tileidx[l]!=vspanim[i].finish) tileidx[l]++; + else { tileidx[l]--; flipped[l]=1; } + } + } +} + +void Animate(char i) +{ static int l; + + vadelay[i]=0; + for (l=vspanim[i].start; l<=vspanim[i].finish; l++) + AnimateTile(i,l); +} + +void CheckTileAnimation() +{ static char i; + + for (i=0; i<100; i++) + { if ((vspanim[i].delay) && (vspanim[i].delay + +#include "vdriver.h" + +#define xx 31 + +int fontx=0; +int fonty=0; + +char sbA[]={3, + 00,xx,00, + xx,00,xx, + xx,xx,xx, + xx,00,xx, + xx,00,xx}; + +char ssA[]={3, + 00,00,00, + 00,xx,00, + xx,00,xx, + xx,xx,xx, + xx,00,xx}; + +char sbB[]={3, + xx,xx,00, + xx,00,xx, + xx,xx,00, + xx,00,xx, + xx,xx,00}; + +char ssB[]={3, + 00,00,00, + xx,xx,00, + xx,xx,00, + xx,00,xx, + xx,xx,xx}; + +char sbC[]={3, + 00,xx,xx, + xx,00,00, + xx,00,00, + xx,00,00, + 00,xx,xx}; + +char ssC[]={3, + 00,00,00, + 00,xx,xx, + xx,00,00, + xx,00,00, + 00,xx,xx}; + +char sbD[]={3, + xx,xx,00, + xx,00,xx, + xx,00,xx, + xx,00,xx, + xx,xx,00}; + +char ssD[]={3, + 00,00,00, + xx,xx,00, + xx,00,xx, + xx,00,xx, + xx,xx,00}; + +char sbE[]={3, + xx,xx,xx, + xx,00,00, + xx,xx,00, + xx,00,00, + xx,xx,xx}; + +char ssE[]={3, + 00,00,00, + xx,xx,xx, + xx,xx,00, + xx,00,00, + xx,xx,xx}; + +char sbF[]={3, + xx,xx,xx, + xx,00,00, + xx,xx,00, + xx,00,00, + xx,00,00}; + +char ssF[]={3, + 00,00,00, + xx,xx,xx, + xx,00,00, + xx,xx,00, + xx,00,00}; + +char sbG[]={3, + 00,xx,xx, + xx,00,00, + xx,00,xx, + xx,00,xx, + 00,xx,xx}; + +char ssG[]={3, + 00,00,00, + 00,xx,xx, + xx,00,00, + xx,00,xx, + 00,xx,xx}; + +char sbH[]={3, + xx,00,xx, + xx,00,xx, + xx,xx,xx, + xx,00,xx, + xx,00,xx}; + +char ssH[]={3, + 00,00,00, + xx,00,xx, + xx,00,xx, + xx,xx,xx, + xx,00,xx}; + +char sbI[]={1, + xx, + xx, + xx, + xx, + xx}; + +char ssI[]={1, + 00, + xx, + xx, + xx, + xx}; + +char sbJ[]={3, + 00,00,xx, + 00,00,xx, + 00,00,xx, + xx,00,xx, + 00,xx,00}; + +char ssJ[]={3, + 00,00,00, + 00,00,xx, + 00,00,xx, + xx,00,xx, + 00,xx,00}; + +char sbK[]={3, + xx,00,xx, + xx,00,xx, + xx,xx,00, + xx,00,xx, + xx,00,xx}; + +char ssK[]={3, + 00,00,00, + xx,00,xx, + xx,xx,00, + xx,00,xx, + xx,00,xx}; + +char sbL[]={3, + xx,00,00, + xx,00,00, + xx,00,00, + xx,00,00, + xx,xx,xx}; + +char ssL[]={3, + 00,00,00, + xx,00,00, + xx,00,00, + xx,00,00, + xx,xx,xx}; + +char sbM[]={5, + xx,00,00,00,xx, + xx,xx,00,xx,xx, + xx,00,xx,00,xx, + xx,00,00,00,xx, + xx,00,00,00,xx}; + +char ssM[]={5, + 00,00,00,00,00, + xx,00,00,00,xx, + xx,xx,00,xx,xx, + xx,00,xx,00,xx, + xx,00,00,00,xx}; + +char sbN[]={4, + xx,00,00,xx, + xx,xx,00,xx, + xx,00,xx,xx, + xx,00,00,xx, + xx,00,00,xx}; + +char ssN[]={4, + 00,00,00,00, + xx,00,00,xx, + xx,xx,00,xx, + xx,00,xx,xx, + xx,00,00,xx}; + +char sbO[]={3, + 00,xx,00, + xx,00,xx, + xx,00,xx, + xx,00,xx, + 00,xx,00}; + +char ssO[]={3, + 00,00,00, + 00,xx,00, + xx,00,xx, + xx,00,xx, + 00,xx,00}; + +char sbP[]={3, + xx,xx,00, + xx,00,xx, + xx,xx,00, + xx,00,00, + xx,00,00}; + +char ssP[]={3, + 00,00,00, + xx,xx,00, + xx,00,xx, + xx,xx,00, + xx,00,00}; + +char sbQ[]={4, + 00,xx,xx,00, + xx,00,00,xx, + xx,00,00,xx, + xx,00,xx,00, + 00,xx,00,xx}; + +char ssQ[]={3, + 00,00,00, + xx,xx,00, + xx,00,xx, + xx,xx,00, + 00,xx,xx}; + +char sbR[]={3, + xx,xx,00, + xx,00,xx, + xx,xx,00, + xx,00,xx, + xx,00,xx}; + +char ssR[]={3, + 00,00,00, + xx,xx,00, + xx,00,xx, + xx,xx,00, + xx,00,xx}; + +char sbS[]={3, + 00,xx,xx, + xx,00,00, + 00,xx,00, + 00,00,xx, + xx,xx,00}; + +char ssS[]={3, + 00,00,00, + 00,xx,xx, + xx,00,00, + 00,xx,xx, + xx,xx,00}; + +char sbT[]={3, + xx,xx,xx, + 00,xx,00, + 00,xx,00, + 00,xx,00, + 00,xx,00}; + +char ssT[]={3, + 00,00,00, + xx,xx,xx, + 00,xx,00, + 00,xx,00, + 00,xx,00}; + +char sbU[]={3, + xx,00,xx, + xx,00,xx, + xx,00,xx, + xx,00,xx, + xx,xx,xx}; + +char ssU[]={3, + 00,00,00, + xx,00,xx, + xx,00,xx, + xx,00,xx, + xx,xx,xx}; + +char sbV[]={3, + xx,00,xx, + xx,00,xx, + xx,00,xx, + xx,00,xx, + 00,xx,00}; + +char ssV[]={3, + 00,00,00, + xx,00,xx, + xx,00,xx, + xx,00,xx, + 00,xx,00}; + +char sbW[]={5, + xx,00,00,00,xx, + xx,00,00,00,xx, + xx,00,xx,00,xx, + xx,xx,00,xx,xx, + xx,00,00,00,xx}; + +char ssW[]={5, + 00,00,00,00,00, + xx,00,00,00,xx, + xx,00,xx,00,xx, + xx,xx,00,xx,xx, + xx,00,00,00,xx}; + +char sbX[]={3, + xx,00,xx, + xx,00,xx, + 00,xx,00, + xx,00,xx, + xx,00,xx}; + +char ssX[]={3, + 00,00,00, + xx,00,xx, + 00,xx,00, + xx,00,xx, + xx,00,xx}; + +char sbY[]={3, + xx,00,xx, + xx,00,xx, + 00,xx,00, + 00,xx,00, + 00,xx,00}; + +char ssY[]={3, + 00,00,00, + xx,00,xx, + xx,00,xx, + 00,xx,00, + 00,xx,00}; + +char sbZ[]={3, + xx,xx,xx, + 00,00,xx, + 00,xx,00, + xx,00,00, + xx,xx,xx}; + +char ssZ[]={2, + 00,00, + xx,xx, + 00,xx, + xx,00, + xx,xx}; + +char s1[]={1, + xx, + xx, + xx, + xx, + xx}; + +char s2[]={3, + xx,xx,xx, + 00,00,xx, + xx,xx,xx, + xx,00,00, + xx,xx,xx}; + +char s3[]={3, + xx,xx,xx, + 00,00,xx, + 00,xx,xx, + 00,00,xx, + xx,xx,xx}; + +char s4[]={3, + xx,00,xx, + xx,00,xx, + xx,xx,xx, + 00,00,xx, + 00,00,xx}; + +char s5[]={3, + xx,xx,xx, + xx,00,00, + xx,xx,xx, + 00,00,xx, + xx,xx,xx}; + +char s6[]={3, + xx,xx,xx, + xx,00,00, + xx,xx,xx, + xx,00,xx, + xx,xx,xx}; + +char s7[]={3, + xx,xx,xx, + 00,00,xx, + 00,00,xx, + 00,00,xx, + 00,00,xx}; + +char s8[]={3, + xx,xx,xx, + xx,00,xx, + xx,xx,xx, + xx,00,xx, + xx,xx,xx}; + +char s9[]={3, + xx,xx,xx, + xx,00,xx, + xx,xx,xx, + 00,00,xx, + xx,xx,xx}; + +char s0[]={3, + xx,xx,xx, + xx,00,xx, + xx,00,xx, + xx,00,xx, + xx,xx,xx}; + +char sQuote[]={3, + xx,00,xx, + xx,00,xx, + 00,00,00, + 00,00,00, + 00,00,00}; + +char sYow[]={1, + xx, + xx, + xx, + 00, + xx}; + +char sQuotes[]={1, + xx, + xx, + 00, + 00, + 00}; + + +char sComma[]={2, + 00,00, + 00,00, + 00,00, + 00,xx, + xx,00}; +char sPeriod[]={1, + 00, + 00, + 00, + 00, + xx}; + +char sMinus[]={2, + 00,00, + 00,00, + xx,xx, + 00,00, + 00,00}; + +char sQuest[]={3, + xx,xx,xx, + 00,00,xx, + 00,xx,xx, + 00,00,00, + 00,xx,00}; + +char sColon[]={1, + 00, + xx, + 00, + xx, + 00}; + +char sch[]={3, + 00,xx,00, + xx,xx,xx, + xx,xx,xx, + xx,xx,xx, + 00,xx,00}; + +char usc[]={2, + 00,00, + 00,00, + 00,00, + 00,00, + xx,xx}; + +char star[]={4, + 00,00,00,xx, + xx,00,xx,00, + 00,xx,00,00, + 00,00,00,00, + 00,00,00,00}; + +char ss[]={2, + xx,xx, + xx,xx, + xx,xx, + xx,xx, + xx,xx}; + +char sra[]={3, + xx,00,00, + xx,xx,00, + xx,xx,xx, + xx,xx,00, + xx,00,00}; + +char slParen[]={2, + 00,xx, + xx,00, + xx,00, + xx,00, + 00,xx}; + +char srParen[]={2, + xx,00, + 00,xx, + 00,xx, + 00,xx, + xx,00}; + +char ssemic[]={2, + xx,xx, + 00,00, + xx,xx, + 00,xx, + xx,00}; + +char sSlash[]={3, + 00,00,xx, + 00,00,xx, + 00,xx,00, + xx,00,00, + xx,00,00}; + +char sBlank[]={2, + 00,00, + 00,00, + 00,00, + 00,00, + 00,00}; + +// ... +char mousepic[] = { xx,00,00,00, + xx,xx,00,00, + xx,xx,xx,00, + xx,xx,xx,xx, + 00,00,xx,00, + 00,00,xx,00}; + +char *smal_tbl[]= +{ sBlank, + sYow, sQuote, ss, ss, ss, ss, sQuotes, slParen, // 40 + srParen, star, ss, sComma, sMinus,sPeriod, sSlash, s0, // 48 + s1, s2, s3, s4, s5, s6, s7, s8, // 56 + s9, sColon, ssemic, ss, ss, sra, sQuest, ss, // 64 + sbA, sbB, sbC, sbD, sbE, sbF, sbG, sbH, // 72 + sbI, sbJ, sbK, sbL, sbM, sbN, sbO, sbP, // 80 + sbQ, sbR, sbS, sbT, sbU, sbV, sbW, sbX, // 88 + sbY, sbZ, ss, ss, ss, ss, usc, sch, // 96 + ssA, ssB, ssC, ssD, ssE, ssF, ssG, ssH, // 102 + ssI, ssJ, ssK, ssL, ssM, ssN, ssO, ssP, // 110 + ssQ, ssR, ssS, ssT, ssU, ssV, ssW, ssX, // 118 + ssY, ssZ }; // 120 + +unsigned char lastcol=31; + +void GotoXY(int x1, int y1) +{ + fontx=x1; + fonty=y1; +} + +void print_char(char c) +{ char* img; + + c-=32; + if (c>90) c=2; + img=smal_tbl[c]; + TCopySprite(fontx,fonty,img[0],5,img+1); + fontx+=img[0]+1; +} + +void printstring(char *str) +{ + for (; *str; ++str) + print_char(*str); +} + +int pixels(char *str) +{ int pix; + + for (pix=0; *str; ++str) + pix += *smal_tbl[*str-32]+1; + return pix; +} + +void dec_to_asciiz(int num, char *buf) +{ + sprintf(buf,"%d",num); +} + +void TextColor(unsigned char newc) +{ char *src; + + src=sbA; + while ((int)src < (int) smal_tbl) + { + if (*src==lastcol) *src=newc; + src++; + } +} diff --git a/16/v2/source/MAPED/SMALFONT.H b/16/v2/source/MAPED/SMALFONT.H new file mode 100644 index 00000000..77688538 --- /dev/null +++ b/16/v2/source/MAPED/SMALFONT.H @@ -0,0 +1,30 @@ +/* +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. +*/ + +#ifndef SMALFONT_INC +#define SMALFONT_INC + +extern int fontx; +extern int fonty; + +extern void GotoXY(int x1, int y1); +extern void print_char(char c); +extern void printstring(char *str); +extern int pixels(char *str); +extern void dec_to_asciiz(int num, char *buf); +extern void TextColor(unsigned char newc); + +#endif // SMALFONT_INC diff --git a/16/v2/source/MAPED/SSAVER.C b/16/v2/source/MAPED/SSAVER.C new file mode 100644 index 00000000..b2ce0a55 --- /dev/null +++ b/16/v2/source/MAPED/SSAVER.C @@ -0,0 +1,136 @@ +/* +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. +*/ + +#include +#include +#include + +#include "maped.h" +#include "timer.h" +#include "vdriver.h" + +#include "mouse.h" + +// ================================= Data ==================================== + +static int *dmapx = NULL; +static int *dmapy = NULL; +static unsigned char *dscr = NULL; +static int recalc_distort = 1; +static long build = 0; + +// ================================= Code ==================================== + +// aen +static void init_distort(void) + { + int x = 0; + int y = 0; + int *dx = NULL; + int *dy = NULL; + + if (dmapx) vfree(dmapx); dmapx=NULL; + if (dmapy) vfree(dmapy); dmapy=NULL; + if (dscr) vfree(dscr); dscr=NULL; + + // allocate distort lookups + dmapx = (int *) valloc(tsx*tsy*4,"ssaver X",0); + dmapy = (int *) valloc(tsx*tsy*4,"ssaver Y",0); + + // allocate distort image buffer + dscr = (unsigned char *) valloc(tsx*tsy,"ssaver scrn",0); + + // copy viewport into distort buffer + memcpy(dscr, screen, tsx*tsy); + + dx = dmapx; + dy = dmapy; + + // generate distort lookups + for (y=0; y= tsy) yy -= tsy; + xt += (dmapx[(yy*tsx)+x] * build) >> 16; + + xx = (x+((thresh*tsx)/tsy)); + if (xx >= tsx) xx -= tsx; + yt += (dmapy[(yy*tsx)+xx] * build) >> 16; + + if (xt < 0) xt += tsx; + if (yt < 0) yt += tsy; + if (xt >= tsx) xt -= tsx; + if (yt >= tsy) yt -= tsy; + + *ds++ = dscr[(yt*tsx)+xt]; + + ++x; + if (x >= tsx) { + x = 0; + ++y; + //ds+=32; + } + + xt = x; + yt = y; + + } while (y < tsy); + + thresh += 2; + if (thresh >= tsy) + thresh -= tsy; + + if (build < 85196) //1.5 + build += 3276; + } + +void ScreenSaver(void) + { + while (idlect > 750) + { + ReadMouse(); + do_distort(); + ShowPage(); + } + recalc_distort=1; + build = 0; + } diff --git a/16/v2/source/MAPED/SSAVER.H b/16/v2/source/MAPED/SSAVER.H new file mode 100644 index 00000000..1a6a5296 --- /dev/null +++ b/16/v2/source/MAPED/SSAVER.H @@ -0,0 +1,22 @@ +/* +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. +*/ + +#ifndef SSAVER_INC +#define SSAVER_INC + +extern void ScreenSaver(void); + +#endif // SSAVER_INC diff --git a/16/v2/source/MAPED/SSAVER1.C b/16/v2/source/MAPED/SSAVER1.C new file mode 100644 index 00000000..2e1846c1 --- /dev/null +++ b/16/v2/source/MAPED/SSAVER1.C @@ -0,0 +1,32 @@ +/* +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. +*/ + +#include "timer.h" +#include "vdriver.h" + +// ================================= Data ==================================== + +// ================================= Code ==================================== + +void ScreenSaver() +{ + while (idlect>750) + { + ReadMouse(); + ClearScreen(); + ShowPage(); + } +} diff --git a/16/v2/source/MAPED/TILEED.C b/16/v2/source/MAPED/TILEED.C new file mode 100644 index 00000000..807f67cc --- /dev/null +++ b/16/v2/source/MAPED/TILEED.C @@ -0,0 +1,2164 @@ +/* +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. +*/ + +// Additional code by Richard Lau (aka Ric) + +/* Date started: 08/Jul/98 */ +/* -- 29/Jul/98 -- + * Heh, I've actually done quite a lot of work on this even though I intend + * to replace it. Oh well :) + * + * I've now made clicking on the mask indicator button (labelled with a small + * "m") drop back to draw mode if you're in select mode (since it makes no + * sense to select an area with the mask turned off). Holding down shift + * and dragging the mouse when you're in select mode will allow you to select + * a rectangle. The PgUp/PgDn colour shifters will now work in paste mode + * (affecting the image in the copy buffer). + * + * The fill routine is now in place and I've put a button in for the pick + * colour/eyedropper tool so that I don't get asked to put in a function for + * like I continuously did with ACE. Due to the extra buttons I've had to + * shift some of the other buttons around to make them all fit onto the + * screen. It's probably not the best arrangement but if anyone comes up with + * a better layout I'm open to suggestions. + * + * The wierd button labelling problem I had last time has been corrected - the + * problem was traced back to the pixels routine in SMALFONT.C. Aen pointed + * out that I wasn't allocating space for the NULL terminator for all the + * strings so that has now been fixed (by adding 1 to strlen). + * + * - Ric + */ +/* + * Keys: + * CTRL/S + mouse click - (over edit window) Pick up colour under mouse + * SHIFT+mb down+drag mouse - select rectangle (select mode only) + * SPACEBAR - toggle between draw mode and select mode + * CTRL+Z or U - one level undo + * CTRL+A - select all + * CTRL+U - unselect all + * CTRL+C - copy selected area + * CTRL+X - cut selected area + * CTRL+V - paste + * DEL - clears selected area + * CTRL+R - reverts the tile to the original (like undo in maped 1) + * (self note: modify to ask for confirmation) + * G - toggles grid on/off + * H - toggles hilight on/off + * M - toggles mask on/off + * I - inverts mask + * X - mirrors image + * Y - flips image + * L/R - Rotates tile 90 degrees anti-clockwise/clockwise + * Q/W - Steps through animation (in tile edit mode) if any + * A/Z and S/X - changes the left or right drawing colours + * PGUP/PGDN - Colour shift up/down + * [ and ] - toggle screen resolutions + * ALT+X - quits to DOS + */ +/* -- 26/Jul/98 -- + * I've actually decided to start the editor over in a new file so that the + * code is a bit more elegant. As it stands some bits of this are messy but + * it currently works ;). Anyway I've decided that what I'll do is to in + * effect write two tile editors - continuing work on this one and working + * on the rewrite as a "side project". The eventual aim will be to replace + * this editor with the rewrite but if factors intervene preventing me from + * completing the rewrite then there'll always be this editor to fall back on. + * + * New in this release is a copy/cut/paste system. New buttons have been added. + * For some reason I haven't figured out yet I can't call the two rotate + * buttons "Rotate ACW" and "Rotate CW" (it causes MapEd to crash) so I've had + * to resort to calling them "Turn_L" and "Turn_R". + * - Ric + */ + +#include +#include + +#include "config.h" +#include "guicomp.h" +#include "keyboard.h" +#include "maped.h" +#include "mouse.h" +#include "render.h" +#include "vdriver.h" + +#include "smalfont.h" + +#undef free + +#define TRUE 1 +#define FALSE 0 +// #define NULL ((void *)0) + +#define MOUSENONE 0 // No mouse buttons pressed +#define MOUSERELEASE 1 // Mouse button released +#define MOUSEPRESSED 2 // Mouse button held down +#define MOUSECLICKED 4 // Mouse button pressed + +// Setup some defines for the regions/areas/windows where everything goes +#define MAX_REGIONS 29 // Number of regions +#define BASEREG 0 // Window coords + title +#define HELPBAR 1 // Helpbar - put helpful messages here :) +#define PALETTE 2 // The palette +#define EDITREG 3 // Main edit window +#define PREVIEW 4 // Preview of image being edited +#define SCOLBOX 5 // Selected colour box +#define SCTXTBX 6 // Text box to show info on the selected colours +#define QUITBUT 7 // Quit button +#define DRAWBUT 8 // Draw mode indicator +#define FILLBUT 9 // Fill mode indicator +#define PICKBUT 10 // Pick mode indicator +#define MASKBUT 11 // Mask mode indicator +#define PSTEBUT 12 // Paste mode indicator +#define EDMDFRM 13 // Frame for edit mode radio buttons +#define MASKIND 14 // Indicator showing if mask is shown +#define GRIDIND 15 // Indicator showing if grid is shown +#define ANIMIND 16 // Indicator showing if animations are shown +#define PXHLIND 17 // Indicator showing if pixel highlight shown +#define IND_FRM 18 // Frame for indicators (push buttons) +#define BUT_FRM 19 // Frame for buttons +#define UNDOBUT 20 // Undo button +#define COPYBUT 21 // Copy button +#define CUT_BUT 22 // Cut button +#define CLR_BUT 23 // Clear button +#define TOOLFRM 24 // Frame for tools +#define FLIPBUT 25 // Flip image button +#define MIRRBUT 26 // Mirror image button +#define RIACBUT 27 // Rotate anticlockwise button +#define RIC_BUT 28 // Rotate clockwise button + +// Define TEbitflags values +#define TEQUITCUR 1 +#define TEANIMATE 2 +#define TEGRID 4 +#define TEHILIGHT 8 +#define TESHOWMSK 16 + +// Define TEREGION->bitflags values +#define REGVISIBLE 1 +#define REGACTIVE 2 +#define REGNOCLICK 4 +#define REGTWOCLICK 8 // wait for a second click + +// TEeditmode defs +#define EDDRAW 1 +#define EDFILL 2 +#define EDPICK 4 +#define EDMASK 8 +#define EDPASTE 16 + +// TEtype defs +#define TEUNKNOWN 0 +#define TETILE 1 + +// DATABUTTON buttontypes: +#define CLICKBUTTON 1 // normal button +#define PUSHBUTTON 2 // can be pushed in/out (toggle bit bitvalue) +#define RADIOBUTTON 4 // for button banks (set *bitflag=bitvalue) + +// DATABASEREGION windowtypes: +#define DBRSTDWINDOW 0 // window and title bar +#define DBRPANEL 1 // no title bar + +// INFOTYPEs: +#define DITREGION 1 +#define DITBASEREGION 2 +#define DITBUTTON 4 +#define DITEDITREG 8 + +// Button flag action - has this button been clicked? +#define BFANONE 0 +#define BFAUNDO 1 +#define BFACOPY 2 +#define BFACUT 4 +#define BFACLEAR 8 +#define BFARIAC 16 +#define BFARIC 32 +#define BFAMIRROR 64 +#define BFAFLIP 128 + +// Variables +typedef struct TEREGION + { + int infotype; // type of struct + unsigned int x1, x2, y1, y2; // bounding coordinates + char *caption; // helpbar text + int bitflags; // see defines above + void (*drawproc)(struct TEREGION *); // region's draw procedure + // - allows nice and short RenderTileEdit proc ;) + void *data; // extended information + } TEREGION; +typedef struct DATABASEREGION + { + int infotype; // type of struct + int numofregs; // total number of regions (including base) + int windowtype; // type of window to draw + } DATABASEREGION; +typedef struct DATABUTTON + { + int infotype; // type of struct + int *bitflag; // address of bitflag + char *text; // addition text (eg helptext) + int bitvalue; // 1st bit/value + int buttontype; // type + } DATABUTTON; +typedef struct DATAEDITREG + { + int infotype; // type of struct + int firstx, firsty; // first coords for two-click operation + } DATAEDITREG; + + +static TEREGION *TEregs=NULL; // pointer to the regions +static unsigned char lcolor=255; // left mouse colour +static unsigned char rcolor=0; // right mouse colour +static TEREGION *TEOldReg=NULL; +static unsigned int MBStatus[3]={MOUSENONE,MOUSENONE,MOUSENONE}; +static int TEanimstrand=0; // Animation strand +static int TEbitflags=TEANIMATE; // Set default bitflags +static int TEbfa=BFANONE; // Set default button action flags +static int TEeditmode=EDDRAW; // Default edit region mode +static int TExoffs=16; // X offset for region "windows" +static int TEyoffs=16; // Y offset for region "windows" +unsigned int TEtype=TEUNKNOWN; // type of graphic being edited +unsigned int TEtile; // tile to edit - may possibly expand this to an array for simultaneous editing +unsigned int TExsize=0; // width of graphic being edited +unsigned int TEysize=0; // height of graphic being edited +unsigned int TEcopyxsize=0; // width of copy buffer +unsigned int TEcopyysize=0; // height of copy buffer +unsigned char *TEsource=NULL; // pointer to original image being edited +static unsigned char *TEimage=NULL; // pointer to image being edited +static unsigned char *TEmask=NULL; // pointer to image mask +static unsigned char *TEundo=NULL; // pointer to undo buffer +static unsigned char *TEcopy=NULL; // pointer to copy buffer +static unsigned char *TEcmsk=NULL; // pointer to copy mask +static char TEtempstr[256]; // Temporary string buffer + +// Function prototypes +static void *TEAlloc(unsigned long amount, char *whatfor); + +#define TEFree(ptr) if (ptr) free(ptr); ptr=NULL; +#define TEFreeReg(ptr) DestroyRegions(&ptr); if (ptr) free(ptr); ptr=NULL; +#define TENewText(text, whatfor) (char *) strcpy(TEAlloc(strlen(text)+1, whatfor), text); +//static void TEFree(void *TETmpBuf); +static void MBClickHandler(TEREGION *TEBaseReg); +static void AboutTE(void); +static void DestroyRegions(TEREGION **TEBaseReg); +static void SetupRegions(void); +static void InitTEImage(void); +static void DeinitTEImage(void); +static int MouseOverTEreg(TEREGION *TEr); +static void RenderTileEdit(TEREGION *TEBaseReg); +static void RestartTileEditor(void); +static void SetCaption(TEREGION *TEr, char *helptext); +static void TEDrawHilight(int x1, int y1, int width, int height, unsigned char colour); +static void TEDrawCheckeredBox(int x1, int y1, int width, int height, unsigned char colour); +static void TERegFill(TEREGION *TEr, int colour); +static void TERegText(TEREGION *TEr, char *message); +static void TEClearImage(void); +static void TECopyImage(void); +static void TEFlipImage(unsigned char *TERILsrc, int TERILxsize, int TERILysize); +static void TEMirrorImage(unsigned char *TERILsrc, int TERILxsize, int TERILysize); +static void TERotateImageAntiClockwise(unsigned char *TERILsrc, int TERILxsize, int TERILysize); +static void TERotateImageClockwise(unsigned char *TERILsrc, int TERILxsize, int TERILysize); +static void TEFillImage(char *TEFIimage, char *TEFImask, int TEFIxsize, int TEFIysize, int TEFIx, int TEFIy, char TEFIcolour); +static void TERFillImage(char *TERFIimage, char *TERFImask, int TERFIxsize, int TERFIysize, int TERFIx, int TERFIy); +static void TEShiftColours(char *TESCimage, char *TESCmask, int TESCxsize, int TESCysize, int amount); +static void TEUndo(void); +static void DrawButton(TEREGION *TEr); +static void DrawEditReg(TEREGION *TEr); +static void DrawHelpBar(TEREGION *TEr); +static void DrawPalette(TEREGION *TEr); +static void DrawPreview(TEREGION *TEr); +static void DrawSColBox(TEREGION *TEr); +static void DrawSCTxtBx(TEREGION *TEr); +static void DrawSunkRegion(TEREGION *TEr); +void TileEdit(void); + + +static int MouseOverTEreg(TEREGION *TEr) + { + unsigned int testx=mx-TExoffs; + unsigned int testy=my-TEyoffs; + unsigned int width=(TEr->x2)-(TEr->x1); + unsigned int height=(TEr->y2)-(TEr->y1); + testx-=(TEr->x1); + testy-=(TEr->y1); + + if (testx >= width || testy >= height) return FALSE; + return TRUE; + } + +static void DrawButton(TEREGION *TEr) +// -- ric: 20/Jul/98 - generic button routine + { + unsigned int x=TEr->x1+TExoffs; + unsigned int y=TEr->y1+TEyoffs; + unsigned int width=(TEr->x2)-(TEr->x1); + unsigned int height=(TEr->y2)-(TEr->y1); + + strcpy(TEtempstr,"Button data not declared."); + if (!TEr->data) + err(TEtempstr); + if (((struct DATABUTTON *)(TEr->data))->infotype!=DITBUTTON) + err(TEtempstr); + + // draw raised button + stdwindow(x-1, y-1, x+width+1, y+height+1); + if (TEr->caption) + { + GotoXY(x+(width-(pixels(TEr->caption)))/2, y+(height-6)/2); + printstring(TEr->caption); + } + switch (((struct DATABUTTON *)(TEr->data))->buttontype) + { + case CLICKBUTTON: + if (MouseOverTEreg(TEr) && TEr->bitflags®ACTIVE) + { + if (((struct DATABUTTON *)(TEr->data))->text) + SetCaption(&TEregs[HELPBAR], (((struct DATABUTTON *)(TEr->data))->text)); + + // Handle mouse clicks + if (TEOldReg==TEr) + { + if ((MBStatus[0]|MBStatus[1])==MOUSEPRESSED) + { + // draw button down + FilledBox(x, y, width, height, winbg); + HLine(x, y, width, darkw); + VLine(x, y, height, darkw); + if (TEr->caption) + { + GotoXY(x+1+(width-(pixels(TEr->caption)))/2, y+1+(height-6)/2); + printstring(TEr->caption); + } + } + if ((MBStatus[0]|MBStatus[1])==MOUSERELEASE) + { + *(((struct DATABUTTON *)(TEr->data))->bitflag)^=((struct DATABUTTON *)(TEr->data))->bitvalue; + } + } + } + break; + case PUSHBUTTON: + if (*(((struct DATABUTTON *)(TEr->data))->bitflag)&(((struct DATABUTTON *)(TEr->data))->bitvalue)) + { + // draw button down + FilledBox(x, y, width, height, winbg); + HLine(x, y, width, darkw); + VLine(x, y, height, darkw); + if (TEr->caption) + { + GotoXY(x+1+(width-(pixels(TEr->caption)))/2, y+1+(height-6)/2); + printstring(TEr->caption); + } + } + if (MouseOverTEreg(TEr) && TEr->bitflags®ACTIVE) + { + if (((struct DATABUTTON *)(TEr->data))->text) + { + sprintf(TEtempstr, "Toggle %s on/off", ((struct DATABUTTON *)(TEr->data))->text); + SetCaption(&TEregs[HELPBAR], TEtempstr); + } + + // Handle mouse clicks + if (TEOldReg==TEr) + { + if ((MBStatus[0]|MBStatus[1])==MOUSECLICKED) + { + *(((struct DATABUTTON *)(TEr->data))->bitflag)^=((struct DATABUTTON *)(TEr->data))->bitvalue; + } + } + } + break; + case RADIOBUTTON: + if (*(((struct DATABUTTON *)(TEr->data))->bitflag)==((struct DATABUTTON *)(TEr->data))->bitvalue) + { + // draw button down + FilledBox(x, y, width, height, winbg); + HLine(x, y, width, darkw); + VLine(x, y, height, darkw); + if (TEr->caption) + { + GotoXY(x+1+(width-(pixels(TEr->caption)))/2, y+1+(height-6)/2); + printstring(TEr->caption); + } + } + if (MouseOverTEreg(TEr) && TEr->bitflags®ACTIVE) + { + if (((struct DATABUTTON *)(TEr->data))->text) + SetCaption(&TEregs[HELPBAR], (((struct DATABUTTON *)(TEr->data))->text)); + + // Handle mouse clicks + if (TEOldReg==TEr) + { + if ((MBStatus[0]|MBStatus[1])==MOUSECLICKED) + { + *(((struct DATABUTTON *)(TEr->data))->bitflag)=((struct DATABUTTON *)(TEr->data))->bitvalue; + } + } + } + break; + } + } + +static void DrawSunkRegion(TEREGION *TEr) + { + unsigned int x=TEr->x1+TExoffs; + unsigned int y=TEr->y1+TEyoffs; + unsigned int width=(TEr->x2)-(TEr->x1); + unsigned int height=(TEr->y2)-(TEr->y1); + +// FilledBox(x, y, width, height, black); + HLine(x, y, width, darkw); + VLine(x, y, height, darkw); + HLine(x+1, y+height-1, width-1, brightw); + VLine(x+width-1, y+1, height-1, brightw); + } + +static void DrawEditReg(TEREGION *TEr) + { + int i,j,i2,j2,c; + int minx,miny,maxx,maxy; + int blocksize=8; + int visblocksize=blocksize; + char *img; + TEREGION tempr; + tempr.x1=TEr->x1+2; + tempr.x2=TEr->x2-2; + tempr.y1=TEr->y1+2; + tempr.y2=TEr->y2-2; + + img=TEimage; //vsp+(256*TEtile); + + TERegFill(TEr, black); + DrawSunkRegion(TEr); + FilledBox(TEr->x1+TExoffs+2, TEr->y1+TEyoffs+2, (blocksize<<4), (blocksize<<4), titlebg); + + if (TEbitflags&TEGRID) visblocksize-=1; + + for (j=0; jx1+TExoffs+2+i*blocksize, TEr->y1+TEyoffs+2+j*blocksize, visblocksize, visblocksize, *img++); + if (TEbitflags&TESHOWMSK && !TEmask[j*TExsize+i]) + TEDrawCheckeredBox(TEr->x1+TExoffs+2+i*blocksize, TEr->y1+TEyoffs+2+j*blocksize, visblocksize, visblocksize, titlebg); + } + + img=TEimage; + if (TEr->bitflags®ACTIVE && !(MouseOverTEreg(&tempr)) && (MBStatus[0]|MBStatus[1])==MOUSERELEASE) + if (TEr->bitflags®TWOCLICK) TEr->bitflags^=REGTWOCLICK; + if (MouseOverTEreg(&tempr) && TEr->bitflags®ACTIVE) + { + i=(mx-TExoffs-(tempr.x1))/blocksize; + j=(my-TEyoffs-(tempr.y1))/blocksize; + c=img[(j*TExsize)+i]; + 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]); + SetCaption(&TEregs[HELPBAR], TEtempstr); + if (TEbitflags&TEHILIGHT) + TEDrawHilight(TExoffs+i*blocksize+tempr.x1, TEyoffs+j*blocksize+tempr.y1, visblocksize, visblocksize, white); + + // if pasting draw the image being pasted + if (TEeditmode==EDPASTE) + { + for (j2=0; j2x1+TExoffs+2+(i+i2)*blocksize, TEr->y1+TEyoffs+2+(j+j2)*blocksize, visblocksize, visblocksize, TEcopy[j2*TEcopyxsize+i2]); + else + if (TEmask[(j+j2)*TExsize+i+i2]) + FilledBox(TEr->x1+TExoffs+2+(i+i2)*blocksize, TEr->y1+TEyoffs+2+(j+j2)*blocksize, visblocksize, visblocksize, TEcopy[j2*TEcopyxsize+i2]); + } + if (TEeditmode==EDMASK) + { + // draw reg + if (TEr->bitflags®TWOCLICK) + for (j2=0; j2=j && j2<=((struct DATAEDITREG *)(TEr->data))->firsty) || + (j2>=((struct DATAEDITREG *)(TEr->data))->firsty && j2<=j)) && + ((i2>=i && i2<=((struct DATAEDITREG *)(TEr->data))->firstx) || + (i2>=((struct DATAEDITREG *)(TEr->data))->firstx && i2<=i))) + TEDrawCheckeredBox(TEr->x1+TExoffs+2+i2*blocksize, TEr->y1+TEyoffs+2+j2*blocksize, visblocksize, visblocksize, darkred); + + if ((MBStatus[0]|MBStatus[1])==MOUSECLICKED && (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) && !(TEr->bitflags®TWOCLICK)) + { + ((struct DATAEDITREG *)(TEr->data))->firstx=i; + ((struct DATAEDITREG *)(TEr->data))->firsty=j; + TEr->bitflags^=REGTWOCLICK; + } + if ((MBStatus[0]|MBStatus[1])==MOUSERELEASE && TEr->bitflags®TWOCLICK) + { + if (MBStatus[1]==MOUSERELEASE) c=0x0; + else c=0xf; + miny=j; + maxy=((struct DATAEDITREG *)(TEr->data))->firsty; + minx=i; + maxx=((struct DATAEDITREG *)(TEr->data))->firstx; + if (j>((struct DATAEDITREG *)(TEr->data))->firsty) + { + maxy=j; + miny=((struct DATAEDITREG *)(TEr->data))->firsty; + } + if (i>((struct DATAEDITREG *)(TEr->data))->firstx) + { + maxx=i; + minx=((struct DATAEDITREG *)(TEr->data))->firstx; + } + for (j2=miny; j2<=maxy; j2++) + for (i2=minx; i2<=maxx; i2++) + TEmask[j2*TExsize+i2]=(char)c; + TEr->bitflags^=REGTWOCLICK; + } + } + // Handle mouse clicks + +#ifdef JUNK + if ((MBStatus[0]|MBStatus[1])==MOUSECLICKED && (key[SCAN_CTRL]||key[SCAN_S])) + { + // put code to lock out draw mode here + } +#endif + if (TEOldReg==TEr) + { + // Update undo buffer + if ((MBStatus[0]|MBStatus[1])==MOUSECLICKED && TEeditmode!=EDMASK && TEeditmode!=EDPICK && !(key[SCAN_CTRL]||key[SCAN_S])) + memcpy(TEundo, TEimage, TExsize*TEysize); + if (MBStatus[0]==MOUSECLICKED && TEeditmode==EDFILL) + TEFillImage(TEimage, (TEbitflags&TESHOWMSK ? TEmask : NULL), TExsize, TEysize, i, j, lcolor); + if (MBStatus[1]==MOUSECLICKED && TEeditmode==EDFILL) + TEFillImage(TEimage, (TEbitflags&TESHOWMSK ? TEmask : NULL), TExsize, TEysize, i, j, rcolor); + + // Draw + if ((MBStatus[0]|MBStatus[1])==MOUSEPRESSED) + { + if (TEeditmode==EDPASTE) + { + for (j2=0; j2bitflags®TWOCLICK)) + TEmask[(j*TExsize)+i]=0xf; + if (MBStatus[1]==MOUSEPRESSED) + if (key[SCAN_CTRL]||key[SCAN_S]||(TEeditmode==EDPICK)) + rcolor=TEimage[(j*TExsize)+i]; + else + if ((TEeditmode==EDDRAW)&&!(TEbitflags&TESHOWMSK && !TEmask[j*TExsize+i])) + TEimage[(j*TExsize)+i]=rcolor; + else + if (TEeditmode==EDMASK && !(TEr->bitflags®TWOCLICK)) + TEmask[(j*TExsize)+i]=0x0; + } + } + } + +static void DrawHelpBar(TEREGION *TEr) + { + //int i, htext=0; + TERegFill(TEr, black); + DrawSunkRegion(TEr); + if (TEr->caption) TERegText(TEr, TEr->caption); + TEFree(TEr->caption); // Blank caption + //TEr->caption=NULL; // why doesn't this work in TEFree? +#ifdef JUNK + i=MAX_REGIONS; + do + { + i--; + if (MouseOverTEreg(&TEregs[i])) htext=i; + } while (i>0); + if (htext && TEregs[htext].helptext) TERegText(TEr, TEr->caption); +#endif + } + +static void DrawPalette(TEREGION *TEr) + { + int i,j; + unsigned int width=(TEr->x2)-(TEr->x1); + unsigned int height=(TEr->y2)-(TEr->y1); + int xscale=(width-4)>>6; + int yscale=(height-4)>>2; + int x=(TEr->x1)+TExoffs; + int y=(TEr->y1)+TEyoffs; + TEREGION tempr; + tempr.x1=TEr->x1+2; + tempr.x2=TEr->x2-2; + tempr.y1=TEr->y1+2; + tempr.y2=TEr->y2-2; + + x+=2; + y+=2; + TERegFill(TEr, black); + DrawSunkRegion(TEr); + i=64; + do + { + i--; + FilledBox(x+(i*xscale), y, xscale, yscale, i); + FilledBox(x+(i*xscale), y+yscale, xscale, yscale, i+64); + FilledBox(x+(i*xscale), y+yscale*2, xscale, yscale, i+128); + FilledBox(x+(i*xscale), y+yscale*3, xscale, yscale, i+192); + } while (i>0); + + i=lcolor&63; + j=lcolor>>6; + TEDrawHilight(x+i*xscale, y+j*yscale, xscale, yscale, titlebg); + + i=rcolor&63; + j=rcolor>>6; + TEDrawHilight(x+i*xscale, y+j*yscale, xscale, yscale, titlebg); + + if (MouseOverTEreg(&tempr) && TEr->bitflags®ACTIVE) + { + i=(mx-TExoffs-(tempr.x1))/xscale; + j=(my-TExoffs-(tempr.y1))/yscale; + i+=(j<<6); + j=i*3; + sprintf(TEtempstr, "Color: %03d (rgb: %03d/%03d/%03d)", i, pal[j], pal[j+1], pal[j+2]); + SetCaption(&TEregs[HELPBAR], TEtempstr); + // Handle mouse clicks + if (TEOldReg==TEr) + { + if (MBStatus[0]==MOUSEPRESSED) lcolor=i; + if (MBStatus[1]==MOUSEPRESSED) rcolor=i; + } + } + } + +static void DrawPreview(TEREGION *TEr) + { + char *img; + int i; + TERegFill(TEr, black); + DrawSunkRegion(TEr); +// img=vsp+(256*TEtile); + img=TEimage; + i=tileidx[TEtile]; + if ((TEbitflags&TEANIMATE) && i!=TEtile) img=vsp+(256*i); + CopyTile(TEr->x1+TExoffs+2, TEr->y1+TEyoffs+2, img); + + if (MouseOverTEreg(TEr) && TEr->bitflags®ACTIVE) + { + strcpy(TEtempstr, (TEbitflags&TEANIMATE ? "Click to halt animation" : "Click to animate tile")); + SetCaption(&TEregs[HELPBAR], TEtempstr); + + // Handle mouse clicks + if (TEOldReg==TEr) + if ((MBStatus[0]|MBStatus[1])==MOUSECLICKED && MouseOverTEreg(TEr)) + TEbitflags^=TEANIMATE; + } + } + +static void DrawSColBox(TEREGION *TEr) +// -- ric: 15/Jul/98 - Draw selected colour box + { + int halfwidth=TEr->x2-TEr->x1-4; + int height=TEr->y2-TEr->y1-4; + char DSCBtempcolor; + TERegFill(TEr, black); + DrawSunkRegion(TEr); + FilledBox(TExoffs+2+TEr->x1, TEyoffs+2+TEr->y1, halfwidth, height, titlebg); + height-=2; + halfwidth-=2; + halfwidth>>=1; + FilledBox(TExoffs+3+TEr->x1, TEyoffs+3+TEr->y1, halfwidth, height, lcolor); + FilledBox(TExoffs+3+TEr->x1+halfwidth, TEyoffs+3+TEr->y1, halfwidth, height, rcolor); + + if (MouseOverTEreg(TEr) && TEr->bitflags®ACTIVE) + { + strcpy(TEtempstr, "Click to swap colors"); + SetCaption(&TEregs[HELPBAR], TEtempstr); + + // Handle mouse clicks + if (TEOldReg==TEr) + if ((MBStatus[0]|MBStatus[1])==MOUSECLICKED && MouseOverTEreg(TEr)) + { + DSCBtempcolor=lcolor; + lcolor=rcolor; + rcolor=DSCBtempcolor; + } + } + } + +static void DrawSCTxtBx(TEREGION *TEr) +// -- ric: 15/Jul/98 - Draw selected colour text box + { +// char DSCTBTextBuf[256]; + int i; + int DSCTBx=TEr->x1+TExoffs+2; + int DSCTBy=TEr->y1+TEyoffs+2; + TERegFill(TEr, black); + DrawSunkRegion(TEr); + i=lcolor*3; + sprintf(TEtempstr, "Left: %03d (rgb: %03d/%03d/%03d)", lcolor, pal[i], pal[i+1], pal[i+2]); + GotoXY(DSCTBx, DSCTBy); + printstring(TEtempstr); + i=rcolor*3; + sprintf(TEtempstr, "Right: %03d (rgb: %03d/%03d/%03d)", rcolor, pal[i], pal[i+1], pal[i+2]); + GotoXY(DSCTBx, DSCTBy+7); + printstring(TEtempstr); + } + +static void SetCaption(TEREGION *TEr, char *helptext) + { + TEFree(TEr->caption); + TEr->caption=(char *)strcpy((char *)TEAlloc(strlen(helptext)+1,helptext), helptext); + } + +static void TEDrawHilight(int x1, int y1, int width, int height, unsigned char colour) +// -- ric: 15/Jul/98 - Draws hilight around given rectangle + { + VLine(x1-1, y1, height, colour); + VLine(x1+width, y1, height, colour); + HLine(x1-1, y1-1, width+2, colour); + HLine(x1-1, y1+height, width+2, colour); + } + +static void TEDrawCheckeredBox(int x1, int y1, int width, int height, unsigned char colour) +// -- ric: 17/Jul/98 - Draws a checkered box + { + int i,j; + unsigned char c; + for (j=0; j-1) + FilledBox(TEr->x1+TExoffs, TEr->y1+TEyoffs, (TEr->x2)-(TEr->x1), (TEr->y2)-(TEr->y1), colour); + } + +static void TERegText(TEREGION *TEr, char *message) +// Prints given message in the specified region + { + int tempx, tempy; + tempx=(TEr->x1)+TExoffs+2; + + tempy=(TEr->y2)-(TEr->y1); + tempy>>=1; + tempy+=(TEr->y1)-3; + + GotoXY(tempx,tempy+TEyoffs); + printstring(message); + + } + +static void TEClearImage(void) +// -- ric: 26/Jul/98 - clear selected image + { + int j; + if (TEbitflags&TESHOWMSK) + { + j=TEysize*TExsize; + memcpy(TEundo, TEimage, j); // backup image to undo buffer + do + { + j--; + if (*(TEmask+j)) *(TEimage+j)=rcolor; + } while (j>0); + } + } + +static void TECopyImage(void) +// -- ric: 26/Jul/98 - copy selected image to copy buffer + { + int i, j, TECIxstart, TECIystart, TECIxsize, TECIysize; + if (TEbitflags&TESHOWMSK) // only makes sense if selected region is shown + { + TECIxstart=TExsize; + TECIystart=TEysize; + TECIxsize=-1; + TECIysize=-1; + // loop through image to find the starting and ending x and y coords + // of the image to copy + for (j=0; jTECIxsize) TECIxsize=i; + if (jTECIysize) TECIysize=j; + } + } + + TECIxsize-=TECIxstart-1; + TECIysize-=TECIystart-1; + + if (TECIxsize>0 && TECIysize>0) + { + // free and create TEcopy and TEcmsk buffers + TEFree(TEcopy); + TEFree(TEcmsk); + + // make copy buffer square (allows for rotation) + TEcopyxsize=TECIysize; + TEcopyysize=TECIysize; + if (TECIxsize>TECIysize) + { + TEcopyxsize=TECIxsize; + TEcopyysize=TECIxsize; + } + TEcopy=(char *)TEAlloc(TEcopyxsize*TEcopyysize, "copy buffer"); + TEcmsk=(char *)TEAlloc(TEcopyxsize*TEcopyysize, "copy mask"); + + // copy image into buffer + for (j=0; j0); + } while (j>0); + TEFree(TERILimg); + } + } + +static void TERotateImageClockwise(unsigned char *TERILsrc, int TERILxsize, int TERILysize) +// -- ric: 16/Jul/98 - rotates image (must be square) 90 degrees clockwise + { + unsigned char *TERILimg=NULL; + int i, j, amount; + if (TERILxsize==TERILysize) + { + amount=TERILxsize*TERILysize; + TERILimg=(char *) TEAlloc(amount, "temporary image buffer for TERotateImageClockwise"); + memcpy(TERILimg, TERILsrc, amount); + j=TERILysize; + do + { + j--; + i=TERILxsize; + do + { + i--; + TERILsrc[(j*TERILxsize)+i]=TERILimg[((TERILxsize-1-i)*TERILxsize)+(j)]; + } while (i>0); + } while (j>0); + TEFree(TERILimg); + } + } + +static void TEFlipImage(unsigned char *TERILsrc, int TERILxsize, int TERILysize) +// -- ric: 15/Jul/98 - flips image + { + unsigned char *TERILimg=NULL; + int i, j, amount; + amount=TERILxsize*TERILysize; + TERILimg=(char *) TEAlloc(amount, "temporary image buffer for TEFlipImage"); + memcpy(TERILimg, TERILsrc, amount); + j=TERILysize; + do + { + j--; + i=TERILxsize; + do + { + i--; + TERILsrc[(j*TERILxsize)+i]=TERILimg[((TERILysize-1-j)*TERILxsize)+i]; + } while (i>0); + } while (j>0); + TEFree(TERILimg); + } + +static void TEMirrorImage(unsigned char *TERILsrc, int TERILxsize, int TERILysize) +// -- ric: 15/Jul/98 - mirrors image + { + unsigned char *TERILimg=NULL; + int i, j, amount; + amount=TERILxsize*TERILysize; + TERILimg=(char *) TEAlloc(amount, "temporary image buffer for TEMirrorImage"); + memcpy(TERILimg, TERILsrc, amount); + j=TERILysize; + do + { + j--; + i=TERILxsize; + do + { + i--; + TERILsrc[(j*TERILxsize)+i]=TERILimg[(j*TERILxsize)+(TERILxsize-1-i)]; + } while (i>0); + } while (j>0); + TEFree(TERILimg); + } + +static void TEFillImage(char *TEFIimage, char *TEFImask, int TEFIxsize, int TEFIysize, int TEFIx, int TEFIy, char TEFIcolour) +// -- ric: 29/Jul/98 - Fill procedure - sets up and calls recursive procedure below + { + int i,j; + unsigned char *TEFIfillmask=NULL; // will eventually contain 0 for ignore and 1 for fill + TEFIfillmask=(char *) TEAlloc(TEFIxsize*TEFIysize, "temporary fill buffer for TEFillImage"); + TERFillImage(TEFIimage, TEFIfillmask, TEFIxsize, TEFIysize, TEFIx, TEFIy); + + if (TEFImask) + for (j=0; j=0 && x=0 && y=0 && x=0 && y=0 && x=0 && y=0 && x=0 && y0); + } while (j>0); + } + + +static void TEUndo (void) + { + unsigned char *tempimg=TEimage; + TEimage=TEundo; + TEundo=tempimg; + } + +static void *TEAlloc(unsigned long amount, char *whatfor) +// -- ric: 14/Jul/98 - TE's custom, error-handling memory allocation routine + { + char *TETmpBuf=NULL; + + amount += 3; // aen + amount &= ~3; + +// static char DebugBuf[256]; + TETmpBuf=(char *) malloc(amount); + if (!TETmpBuf) + { + sprintf(TEtempstr, "Unable to allocate %ld bytes for %s.", amount, whatfor); + err(TEtempstr); + } + memset(TETmpBuf,0, amount); // Clear allocated mem + /* + __asm { // aen + mov edi,TETmpBuf + mov ecx,amount + shr ecx,2 + xor eax,eax + cld + rep stosd + } ; + */ + return TETmpBuf; + } + +#ifdef JUNK +static void TEFree(void *TETmpBuf) +// -- ric: 14/Jul/98 - TE's custom memory freeing routine + { + if (TETmpBuf) free(TETmpBuf); // Only free memory if previously allocated + TETmpBuf=NULL; // Set freed memory to point to NULL + } +#endif + +static void MBClickHandler(TEREGION *TEBaseReg) +// -- ric: 20/Jul/98 - Mouse button click handler + { + int i,j; + ReadMouse(); + if (TEBaseReg) + { + if (!TEBaseReg->data) err("No region data defined."); + if (((struct DATABASEREGION *)TEBaseReg->data)->infotype!=DITBASEREGION) + err("MBClickHandler called with invalid base region."); + } + + for (i=0; i<3; ++i) + { + if (mb & (i+1)) + { + if (MBStatus[i] == MOUSECLICKED) + MBStatus[i]=MOUSEPRESSED; + else if (MBStatus[i] == MOUSENONE) + { + MBStatus[i] = MOUSECLICKED; + if (TEBaseReg) + { + TEOldReg = NULL; + for (j=0; j<((struct DATABASEREGION *)TEBaseReg->data)->numofregs; ++j) + if (MouseOverTEreg(TEBaseReg+j)&&!((TEBaseReg+j)->bitflags®NOCLICK)) + TEOldReg = TEBaseReg+j; + } + } + } + else + { + if (MBStatus[i] <= MOUSERELEASE) + MBStatus[i] = MOUSENONE; + else if (MBStatus[i]>MOUSERELEASE) + MBStatus[i] = MOUSERELEASE; + } + } + } + +static void AboutTE (void) +// Just here to test the mouse input loop - remove this later + { + TEREGION *TEr=NULL; + TEREGION *TEaboutwin=NULL; +// int amxsize=150, amysize=82; + int amxofs=60, amyofs=60; + int i,i2,j,j2; + int QuitAW=FALSE; + int moving=FALSE; + + // Allocate memory + TEaboutwin=(struct TEREGION *) TEAlloc((sizeof (struct TEREGION))*4,"about window regions"); + TEr=TEaboutwin; + TEr->infotype=DITREGION; + TEr->x1=amxofs; + TEr->x2=TEr->x1+150; + TEr->y1=amyofs; + TEr->y2=TEr->y1+82; + TEr->bitflags=REGACTIVE|REGVISIBLE|REGNOCLICK; +// TEr->drawproc=NULL; + sprintf(strbuf, "About MapEd %s Tile Editor", ME2_VERSION); + TEr->caption=TENewText(strbuf, "About window"); + TEr->data=(struct DATABASEREGION *) TEAlloc(sizeof (struct DATABASEREGION), "base region data"); + ((struct DATABASEREGION *)(TEr->data))->infotype=DITBASEREGION; + ((struct DATABASEREGION *)(TEr->data))->numofregs=4; + ((struct DATABASEREGION *)(TEr->data))->windowtype=DBRSTDWINDOW; + + TEr+=1; + TEr->infotype=DITREGION; + TEr->x1=0; + TEr->x2=TEaboutwin->x2-TEaboutwin->x1-9; + TEr->y1=0; + TEr->y2=8; + TEr->bitflags=REGACTIVE; +// TEr->drawproc=NULL; +// TEr->caption=NULL; + + TEr+=1; + TEr->infotype=DITREGION; + TEr->x1=TEaboutwin->x2-TEaboutwin->x1-9; + TEr->x2=TEaboutwin->x2-TEaboutwin->x1-3; + TEr->y1=3; + TEr->y2=6; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; +// TEr->caption=NULL; + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "quit button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=NULL; + ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&QuitAW; + ((struct DATABUTTON *)(TEr->data))->bitvalue=TRUE; + + TEr+=1; + TEr->infotype=DITREGION; + TEr->x1=60; + TEr->x2=90; + TEr->y1=62; + TEr->y2=72; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=TENewText("ok","ok button caption"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "quit button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=NULL; + ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&QuitAW; + ((struct DATABUTTON *)(TEr->data))->bitvalue=TRUE; + TEr=TEaboutwin+1; // point to title bar area + + while (!QuitAW) + { + // Mouse button click handler routines + MBClickHandler(TEaboutwin); + + amxofs=TEaboutwin->x1; + amyofs=TEaboutwin->y1; + if ((MBStatus[0]|MBStatus[1])==MOUSERELEASE) + moving=FALSE; + + // Draw loop + RenderTileEdit(TEregs); + RenderTileEdit(TEaboutwin); + + sprintf(strbuf, "MapEd v.%s", ME2_VERSION); + GotoXY(amxofs+52, amyofs+16); printstring(strbuf); + GotoXY(amxofs+31, amyofs+22); printstring("Copyright (C) 1998 vecna"); + GotoXY(amxofs+40, amyofs+28); printstring("All Rights Reserved"); + sprintf(strbuf, "MapEd v.%s Tile Editor", ME2_VERSION); + GotoXY(amxofs+29, amyofs+41); printstring(strbuf); + GotoXY(amxofs+20, amyofs+47); printstring("Additional code by Richard Lau"); + DrawMouse(); + ShowPage(); + + // Move window? + if (MouseOverTEreg(TEr) && TEOldReg==TEr) + { + if ((MBStatus[0]|MBStatus[1])==MOUSECLICKED) + { + i2=TEaboutwin->x2-TEaboutwin->x1; + j2=TEaboutwin->y2-TEaboutwin->y1; + i=mx-TEaboutwin->x1; + j=my-TEaboutwin->y1; + moving=TRUE; + } + } + if ((MBStatus[0]|MBStatus[1])==MOUSEPRESSED && moving) + { + if (((mx-i)<16)) TEaboutwin->x1=16; + else if (((mx-i+i2)>=(16+sx))) TEaboutwin->x1=16+(sx-i2); + else TEaboutwin->x1=mx-i; + if (((my-j)<16)) TEaboutwin->y1=16; + else if (((my-j+j2)>=(16+sy))) TEaboutwin->y1=16+(sy-j2); + else TEaboutwin->y1=my-j; + TEaboutwin->x2=TEaboutwin->x1+i2; + TEaboutwin->y2=TEaboutwin->y1+j2; + } + + if (key[SCAN_ESC]) + { + key[SCAN_ESC]=0; + QuitAW=TRUE; + } + + } + // free TEaboutwin + TEFreeReg(TEaboutwin); + } + +static void RestartTileEditor(void) +// -- ric: 17/Jul/98 - reinit the tile editor + { + int i,j, amount; + unsigned char *TERTEmask=NULL; + + switch (TEtype) + { + case TETILE: // edit tile TEtile + i=TExsize; + j=TEysize; + amount=i*j; + TERTEmask=(unsigned char *) TEAlloc(amount, "tile editor mask backup buffer"); + + // backup mask + memcpy(TERTEmask, TEmask, amount); + + // Restart editor + DeinitTEImage(); + TEFreeReg(TEregs); + TEtype=TETILE; + TExsize=i; + TEysize=j; + TEsource=vsp+(256*TEtile); + InitTEImage(); + SetupRegions(); + + // Restore mask + memcpy(TEmask, TERTEmask, amount); + TEFree(TERTEmask); + break; + } + } + +static void InitTEImage (void) +// Copy the image data being edited and allocate memory for the image buffers + { + int i; + int amount=TExsize*TEysize; + if (TEtype==TEUNKNOWN) err("Unrecognised tile editor graphics type."); + if (!TEsource) err("Invalid input image."); + TEimage=(unsigned char *) TEAlloc(amount, "tile editor image buffer"); + TEmask=(unsigned char *) TEAlloc(amount, "tile editor mask buffer"); + TEundo=(unsigned char *) TEAlloc(amount, "tile editor undo buffer"); +// if (!TEimage || !TEundo) err("Cannot allocate memory for tile editor image buffers."); + memcpy(TEimage, TEsource, amount); // copy original image into edit buffer + memcpy(TEundo, TEimage, amount); // copy original image into undo buffer + + // if editing tile find the animation strand (if any) tile belongs to + TEanimstrand=0; // Does not belong to an animation strand + if (TEtype==TETILE) + { + i=100; + do + { + i--; + if (vspanim[i].delay && TEtile<=vspanim[i].finish && TEtile>=vspanim[i].start) + TEanimstrand=i+1; + } while (i>0); + } + } + +static void DeinitTEImage(void) +// Unallocate allocated image buffers - copy edited buffer into original + { + memcpy(TEsource, TEimage, (TExsize*TEysize)); + TEFree(TEimage); + TEFree(TEmask); + TEFree(TEundo); + TEtype=TEUNKNOWN; // Clear type info for error checking purposes + TExsize=0; + TEysize=0; + } + +static void SetupRegions (void) + { + int temp; + TEREGION *TEr=NULL; + + // Allocate memory + TEregs=(struct TEREGION *) TEAlloc((sizeof (struct TEREGION))*MAX_REGIONS,"tile edit regions"); + + TEr=TEregs+BASEREG; + TEr->infotype=DITREGION; + TEr->x1=16; + TEr->x2=TEr->x1+sx; + TEr->y1=16; + TEr->y2=TEr->y1+sy; + TEr->bitflags=REGACTIVE|REGVISIBLE|REGNOCLICK; + TEr->drawproc=NULL; + TEr->caption=NULL; + switch (TEtype) + { + case TETILE: + sprintf(TEtempstr, "MapEd %s Tile Editor - Tile: %d", ME2_VERSION, TEtile); + if (TEanimstrand) + sprintf(TEtempstr, "MapEd %s Tile Editor - Tile: %d (anim strand: %d, frame: %d/%d)", + ME2_VERSION, + TEtile, TEanimstrand-1, TEtile-vspanim[TEanimstrand-1].start+1, + vspanim[TEanimstrand-1].finish-vspanim[TEanimstrand-1].start+1); + SetCaption(TEr, TEtempstr); + break; + } + TEr->data=(struct DATABASEREGION *) TEAlloc(sizeof (struct DATABASEREGION), "base region data"); + ((struct DATABASEREGION *)(TEr->data))->infotype=DITBASEREGION; + ((struct DATABASEREGION *)(TEr->data))->numofregs=MAX_REGIONS; + ((struct DATABASEREGION *)(TEr->data))->windowtype=DBRSTDWINDOW; + + TEr=TEregs+HELPBAR; + TEr->infotype=DITREGION; + TEr->x1=3; + TEr->x2=TEregs->x2-TEregs->x1-3; + TEr->y1=TEregs->y2-TEregs->y1-13; + TEr->y2=TEregs->y2-TEregs->y1-3; + TEr->bitflags=REGACTIVE|REGVISIBLE|REGNOCLICK; + TEr->drawproc=&DrawHelpBar; + TEr->caption=NULL; + TEr->data=NULL; + + temp=(((TEregs->x2-TEregs->x1-8)>>6)<<5)+2; + TEr=TEregs+PALETTE; + TEr->infotype=DITREGION; + TEr->x1=((TEregs->x2-TEregs->x1)>>1)-temp; + TEr->x2=((TEregs->x2-TEregs->x1)>>1)+temp; + TEr->y1=TEregs->y2-TEregs->y1-36; + TEr->y2=TEregs->y2-TEregs->y1-16; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawPalette; + TEr->caption=NULL; + TEr->data=NULL; + + TEr=TEregs+EDITREG; + TEr->infotype=DITREGION; + TEr->x1=3; + TEr->x2=3+128+4; + TEr->y1=10; + TEr->y2=10+128+4; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawEditReg; + TEr->caption=NULL; + TEr->data=(struct DATAEDITREG *) TEAlloc(sizeof (struct DATAEDITREG), "edit region data"); + ((struct DATAEDITREG *)(TEr->data))->infotype=DITEDITREG; + + TEr=TEregs+PREVIEW; + TEr->infotype=DITREGION; + TEr->x1=TEregs->x2-TEregs->x1-23; + TEr->x2=TEregs->x2-TEregs->x1-3; + TEr->y1=10; + TEr->y2=10+20; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawPreview; + TEr->caption=NULL; + TEr->data=NULL; + + TEr=TEregs+SCOLBOX; + TEr->infotype=DITREGION; + TEr->x1=TEregs[EDITREG].x1; + TEr->x2=TEr->x1+20; + TEr->y1=TEregs[EDITREG].y2+2; + TEr->y2=TEr->y1+16; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawSColBox; + TEr->caption=NULL; + TEr->data=NULL; + + TEr=TEregs+SCTXTBX; + TEr->infotype=DITREGION; + TEr->x1=TEregs[SCOLBOX].x2+2; + TEr->x2=TEregs[EDITREG].x2; + TEr->y1=TEregs[SCOLBOX].y1; + TEr->y2=TEregs[SCOLBOX].y2; + TEr->bitflags=REGACTIVE|REGVISIBLE|REGNOCLICK; + TEr->drawproc=&DrawSCTxtBx; + TEr->caption=NULL; + TEr->data=NULL; + + TEr=TEregs+QUITBUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs->x2-TEregs->x1-9; + TEr->x2=TEregs->x2-TEregs->x1-3; + TEr->y1=3; + TEr->y2=6; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "quit button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Exit", "quit button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbitflags; + ((struct DATABUTTON *)(TEr->data))->bitvalue=TEQUITCUR; + + TEr=TEregs+EDMDFRM; + TEr->infotype=DITREGION; + TEr->x1=TEregs[EDITREG].x2+3; + TEr->x2=TEr->x1+34; + TEr->y1=TEregs[EDITREG].y1; + TEr->y2=TEr->y1+11*5+3; // 10*number of buttons + TEr->bitflags=REGACTIVE|REGVISIBLE|REGNOCLICK; + TEr->drawproc=&DrawSunkRegion; + TEr->caption=NULL; + TEr->data=NULL; + + TEr=TEregs+DRAWBUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs[EDMDFRM].x1+2; + TEr->x2=TEregs[EDMDFRM].x2-2; + TEr->y1=TEregs[EDMDFRM].y1+2; + TEr->y2=TEr->y1+10; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr,"Draw"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "draw button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Draw mode", "draw button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=RADIOBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEeditmode; + ((struct DATABUTTON *)(TEr->data))->bitvalue=EDDRAW; + + TEr=TEregs+FILLBUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs[EDMDFRM].x1+2; + TEr->x2=TEregs[EDMDFRM].x2-2; + TEr->y1=TEregs[EDMDFRM].y1+2+11; + TEr->y2=TEr->y1+10; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr,"Fill"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "fill button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Fill mode", "fill button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=RADIOBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEeditmode; + ((struct DATABUTTON *)(TEr->data))->bitvalue=EDFILL; + + TEr=TEregs+PICKBUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs[EDMDFRM].x1+2; + TEr->x2=TEregs[EDMDFRM].x2-2; + TEr->y1=TEregs[EDMDFRM].y1+2+22; + TEr->y2=TEr->y1+10; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr,"Pick"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "pick button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Pick color mode", "pick button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=RADIOBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEeditmode; + ((struct DATABUTTON *)(TEr->data))->bitvalue=EDPICK; + + TEr=TEregs+MASKBUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs[EDMDFRM].x1+2; + TEr->x2=TEregs[EDMDFRM].x2-2; + TEr->y1=TEregs[EDMDFRM].y1+2+33; + TEr->y2=TEr->y1+10; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr,"Select"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "select button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Select mode", "select button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=RADIOBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEeditmode; + ((struct DATABUTTON *)(TEr->data))->bitvalue=EDMASK; + + TEr=TEregs+PSTEBUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs[EDMDFRM].x1+2; + TEr->x2=TEregs[EDMDFRM].x2-2; + TEr->y1=TEregs[EDMDFRM].y1+2+44; + TEr->y2=TEr->y1+10; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr,"Paste"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "paste button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Paste mode", "paste button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=RADIOBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEeditmode; + ((struct DATABUTTON *)(TEr->data))->bitvalue=EDPASTE; + + TEr=TEregs+IND_FRM; + TEr->infotype=DITREGION; + TEr->x1=TEregs[SCTXTBX].x2+2; + TEr->x2=TEr->x1+12*4-1; // 10*number of buttons + TEr->y1=TEregs[SCTXTBX].y1; + TEr->y2=TEr->y1+13; + TEr->bitflags=REGACTIVE|REGVISIBLE|REGNOCLICK; + TEr->drawproc=&DrawSunkRegion; + TEr->caption=NULL; + TEr->data=NULL; + + TEr=TEregs+MASKIND; + TEr->infotype=DITREGION; + TEr->x1=TEregs[IND_FRM].x1+2; + TEr->x2=TEr->x1+10; + TEr->y1=TEregs[IND_FRM].y1+2; + TEr->y2=TEregs[IND_FRM].y2-2; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr,"m"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "mask indicator data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("mask", "mask indicator text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=PUSHBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbitflags; + ((struct DATABUTTON *)(TEr->data))->bitvalue=TESHOWMSK; + + TEr=TEregs+GRIDIND; + TEr->infotype=DITREGION; + TEr->x1=TEregs[MASKIND].x2+1; + TEr->x2=TEr->x1+10; + TEr->y1=TEregs[IND_FRM].y1+2; + TEr->y2=TEregs[IND_FRM].y2-2; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr,"g"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "grid button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("grid", "grid indicator text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=PUSHBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbitflags; + ((struct DATABUTTON *)(TEr->data))->bitvalue=TEGRID; + + TEr=TEregs+ANIMIND; + TEr->infotype=DITREGION; + TEr->x1=TEregs[GRIDIND].x2+1; + TEr->x2=TEr->x1+10; + TEr->y1=TEregs[IND_FRM].y1+2; + TEr->y2=TEregs[IND_FRM].y2-2; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr,"a"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "animation button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("animation", "animation indicator text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=PUSHBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbitflags; + ((struct DATABUTTON *)(TEr->data))->bitvalue=TEANIMATE; + + TEr=TEregs+PXHLIND; + TEr->infotype=DITREGION; + TEr->x1=TEregs[ANIMIND].x2+1; + TEr->x2=TEr->x1+10; + TEr->y1=TEregs[IND_FRM].y1+2; + TEr->y2=TEregs[IND_FRM].y2-2; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr,"h"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "highlight button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("pixel highlight", "highlight indicator text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=PUSHBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbitflags; + ((struct DATABUTTON *)(TEr->data))->bitvalue=TEHILIGHT; + + TEr=TEregs+BUT_FRM; + TEr->infotype=DITREGION; + TEr->x1=TEregs[EDMDFRM].x1; + TEr->x2=TEregs[EDMDFRM].x2; + TEr->y1=TEregs[EDMDFRM].y2+2; + TEr->y2=TEr->y1+11*4+3; // 10*number of buttons + TEr->bitflags=REGACTIVE|REGVISIBLE|REGNOCLICK; + TEr->drawproc=&DrawSunkRegion; + TEr->caption=NULL; + TEr->data=NULL; + + TEr=TEregs+UNDOBUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs[BUT_FRM].x1+2; + TEr->x2=TEregs[BUT_FRM].x2-2; + TEr->y1=TEregs[BUT_FRM].y1+2; + TEr->y2=TEr->y1+10; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr, "Undo"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "undo button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Undo last action", "undo button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbfa; + ((struct DATABUTTON *)(TEr->data))->bitvalue=BFAUNDO; + + TEr=TEregs+COPYBUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs[BUT_FRM].x1+2; + TEr->x2=TEregs[BUT_FRM].x2-2; + TEr->y1=TEregs[BUT_FRM].y1+2+11; + TEr->y2=TEr->y1+10; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr, "Copy"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "copy button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Copy selected area", "copy button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbfa; + ((struct DATABUTTON *)(TEr->data))->bitvalue=BFACOPY; + + TEr=TEregs+CUT_BUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs[BUT_FRM].x1+2; + TEr->x2=TEregs[BUT_FRM].x2-2; + TEr->y1=TEregs[BUT_FRM].y1+2+22; + TEr->y2=TEr->y1+10; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr, "Cut"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "cut button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Cut selected area", "cut button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbfa; + ((struct DATABUTTON *)(TEr->data))->bitvalue=BFACUT; + + TEr=TEregs+CLR_BUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs[BUT_FRM].x1+2; + TEr->x2=TEregs[BUT_FRM].x2-2; + TEr->y1=TEregs[BUT_FRM].y1+2+33; + TEr->y2=TEr->y1+10; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr, "Clear"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "clear button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Clear selected area", "clear button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbfa; + ((struct DATABUTTON *)(TEr->data))->bitvalue=BFACLEAR; + + TEr=TEregs+TOOLFRM; + TEr->infotype=DITREGION; + TEr->x1=TEregs[BUT_FRM].x2+2; + TEr->x2=TEr->x1+34; + TEr->y1=TEregs[BUT_FRM].y1; + TEr->y2=TEr->y1+11*4+3; // 10*number of buttons + TEr->bitflags=REGACTIVE|REGVISIBLE|REGNOCLICK; + TEr->drawproc=&DrawSunkRegion; + TEr->caption=NULL; + TEr->data=NULL; + + TEr=TEregs+RIACBUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs[TOOLFRM].x1+2; + TEr->x2=TEregs[TOOLFRM].x2-2; + TEr->y1=TEregs[TOOLFRM].y1+2; + TEr->y2=TEr->y1+10; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr, "Turn L"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "rotate button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Rotate anticlockwise", "rotate button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbfa; + ((struct DATABUTTON *)(TEr->data))->bitvalue=BFARIAC; + + TEr=TEregs+RIC_BUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs[TOOLFRM].x1+2; + TEr->x2=TEregs[TOOLFRM].x2-2; + TEr->y1=TEregs[TOOLFRM].y1+2+11; + TEr->y2=TEr->y1+10; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr, "Turn R"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "rotate button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Rotate clockwise", "rotate button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbfa; + ((struct DATABUTTON *)(TEr->data))->bitvalue=BFARIC; + + TEr=TEregs+FLIPBUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs[TOOLFRM].x1+2; + TEr->x2=TEregs[TOOLFRM].x2-2; + TEr->y1=TEregs[TOOLFRM].y1+2+22; + TEr->y2=TEr->y1+10; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr, "Flip"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "flip button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Flip", "flip button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbfa; + ((struct DATABUTTON *)(TEr->data))->bitvalue=BFAFLIP; + + TEr=TEregs+MIRRBUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs[TOOLFRM].x1+2; + TEr->x2=TEregs[TOOLFRM].x2-2; + TEr->y1=TEregs[TOOLFRM].y1+2+33; + TEr->y2=TEr->y1+10; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr, "Mirror"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "mirror button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Mirror", "mirror button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbfa; + ((struct DATABUTTON *)(TEr->data))->bitvalue=BFAMIRROR; + + } + +static void DestroyRegions (TEREGION **TEBaseReg) + { + TEREGION *TEr=NULL; + int i; + if (!(*TEBaseReg)->data) err("No region data defined."); + if (((struct DATABASEREGION *)(*TEBaseReg)->data)->infotype!=DITBASEREGION) + err("DestroyRegions called with invalid base region."); + + i=((struct DATABASEREGION *)(*TEBaseReg)->data)->numofregs; + do + { + i--; + TEr=(*TEBaseReg)+i; + TEFree(TEr->caption); + if (TEr->data) + { + switch (((struct DATABASEREGION *)(TEr->data))->infotype) + { + case DITBASEREGION: + break; + case DITBUTTON: + TEFree(((struct DATABUTTON *)TEr->data)->text); + break; + } + } + TEFree(TEr->data); + } while (i>0); + TEFree(*TEBaseReg); +// if (*TEBaseReg) err("Not freed"); + } + +static void RenderTileEdit (TEREGION *TEBaseReg) +// -- ric: 20/Jul/98 - updatedt to be a little more generic ;) + { + int i; + TExoffs=TEBaseReg->x1; + TEyoffs=TEBaseReg->y1; + if (!TEBaseReg->data) err("No region data defined."); + if (((struct DATABASEREGION *)TEBaseReg->data)->infotype!=DITBASEREGION) + err("RenderTileEdit called with invalid base region."); + switch (((struct DATABASEREGION *)TEBaseReg->data)->windowtype) + { + case DBRSTDWINDOW: + Window(TExoffs,TEyoffs,TEBaseReg->x2,TEBaseReg->y2, ((TEBaseReg->caption) ? TEBaseReg->caption : "")); + break; + case DBRPANEL: + stdwindow(TExoffs,TEyoffs,TEBaseReg->x2,TEBaseReg->y2); + break; + } + + i=((struct DATABASEREGION *)TEBaseReg->data)->numofregs; + do + { + i--; + if ((TEBaseReg+i)->bitflags®VISIBLE) (TEBaseReg+i)->drawproc(TEBaseReg+i); + } while (i>1); + } + +void TileEdit (void) + { + int i,j; + int TEoldeditmode=EDDRAW; + if (TEbitflags&TEQUITCUR) TEbitflags^=TEQUITCUR; + + InitTEImage(); + SetupRegions(); + TEeditmode=EDDRAW; // Default to drawing mode + if (TEbitflags&TESHOWMSK) TEbitflags^=TESHOWMSK; + + while (!(TEbitflags&TEQUITCUR)) + { + // Mouse button click handler routines + MBClickHandler(TEregs); + + TEbfa=BFANONE; // Reset button action flag + if (TEeditmode==EDMASK && TEoldeditmode!=EDMASK) TEbitflags|=TESHOWMSK; + if (TEeditmode==EDMASK && TEoldeditmode==EDMASK && !(TEbitflags&TESHOWMSK)) + TEeditmode=EDDRAW; + TEoldeditmode=TEeditmode; + + // Draw loop + RenderTileEdit(TEregs); + DrawMouse(); + ShowPage(); + + if (key[SCAN_ESC]) + { + key[SCAN_ESC]=0; + TEbitflags|=TEQUITCUR; + } + if ((key[SCAN_CTRL] && key[SCAN_Z]) || (TEbfa&BFAUNDO) || (key[SCAN_U] && !(key[SCAN_CTRL])) && ((MBStatus[0]|MBStatus[1])==MOUSENONE)) + { + key[SCAN_U]=0; + key[SCAN_Z]=0; + TEUndo(); + } + if (key[SCAN_CTRL] && key[SCAN_R]) + { + key[SCAN_R]=0; + memcpy(TEundo, TEimage, TExsize*TEysize); // copy image into undo buffer + memcpy(TEimage, TEsource, TExsize*TEysize); // copy original image into edit buffer + } + if (key[SCAN_CTRL] && key[SCAN_A]) + { + key[SCAN_A]=0; + j=TEysize*TExsize; + memset(TEmask, 0xf, j); + } + if (key[SCAN_CTRL] && key[SCAN_U]) + { + key[SCAN_U]=0; + j=TEysize*TExsize; + memset(TEmask, 0x0, j); + } + if ((TEbfa&BFACOPY) || (key[SCAN_CTRL] && key[SCAN_C]) && ((MBStatus[0]|MBStatus[1])==MOUSENONE)) + { + key[SCAN_C]=0; + TECopyImage(); + } + if ((TEbfa&BFACUT) || (key[SCAN_CTRL] && key[SCAN_X]) && ((MBStatus[0]|MBStatus[1])==MOUSENONE)) + { + key[SCAN_X]=0; + TECopyImage(); + TEClearImage(); + } + if (key[SCAN_CTRL] && key[SCAN_V] && ((MBStatus[0]|MBStatus[1])==MOUSENONE)) + { + key[SCAN_V]=0; + TEeditmode=EDPASTE; + } + if ((TEbfa&BFACLEAR) || key[SCAN_DEL] && ((MBStatus[0]|MBStatus[1])==MOUSENONE)) + { + key[SCAN_DEL]=0; + TEClearImage(); + } + if (key[SCAN_Q] && ((MBStatus[0]|MBStatus[1])==MOUSENONE)) + { + key[SCAN_Q]=0; + if (TEtype==TETILE && TEanimstrand) + { + if (TEtile>vspanim[TEanimstrand-1].start) + { + // Change tile index + TEtile-=1; + i=TExsize; + j=TEysize; + + // Restart editor + RestartTileEditor(); + } + } + } + if (key[SCAN_W] && ((MBStatus[0]|MBStatus[1])==MOUSENONE)) + { + key[SCAN_W]=0; + if (TEtype==TETILE && TEanimstrand) + { + if (TEtile0); + } + if (key[SCAN_M]) + { + key[SCAN_M]=0; + if (TEeditmode==EDMASK) + TEeditmode=EDDRAW; + TEbitflags^=TESHOWMSK; + } + if (key[SCAN_SPACE]) + { + key[SCAN_SPACE]=0; + if (TEeditmode==EDDRAW) + { + TEeditmode=EDMASK; + TEbitflags|=TESHOWMSK; + } + else + TEeditmode=EDDRAW; + } + if (key[SCAN_PGUP]) + { + key[SCAN_PGUP]=0; + switch (TEeditmode) + { + case EDDRAW: + case EDMASK: + memcpy(TEundo, TEimage, TExsize*TEysize); + if (TEbitflags&TESHOWMSK) + TEShiftColours(TEimage, TEmask, TExsize, TEysize, 1); + else + TEShiftColours(TEimage, NULL, TExsize, TEysize, 1); + break; + case EDPASTE: + if (TEcopy) + TEShiftColours(TEcopy, TEcmsk, TEcopyxsize, TEcopyysize, 1); + break; + } + } + if (key[SCAN_PGDN]) + { + key[SCAN_PGDN]=0; + switch (TEeditmode) + { + case EDDRAW: + case EDMASK: + memcpy(TEundo, TEimage, TExsize*TEysize); + if (TEbitflags&TESHOWMSK) + TEShiftColours(TEimage, TEmask, TExsize, TEysize, -1); + else + TEShiftColours(TEimage, NULL, TExsize, TEysize, -1); + break; + case EDPASTE: + if (TEcopy) + TEShiftColours(TEcopy, TEcmsk, TEcopyxsize, TEcopyysize, -1); + break; + } + } + + if (key[SCAN_LANGLE]) + { + key[SCAN_LANGLE]=0; + ShutdownVideo(); + TEFreeReg(TEregs); + vm=0; + InitVideo(0); + SetupRegions(); + set_intensity(63); + InitMouse(); + } + if (key[SCAN_RANGLE]) + { + key[SCAN_RANGLE]=0; + ShutdownVideo(); + TEFreeReg(TEregs); + vm=1; + InitVideo(1); + SetupRegions(); + set_intensity(63); + InitMouse(); + } + } + DeinitTEImage(); + TEFreeReg(TEregs); + } diff --git a/16/v2/source/MAPED/TILEED.H b/16/v2/source/MAPED/TILEED.H new file mode 100644 index 00000000..11419f6a --- /dev/null +++ b/16/v2/source/MAPED/TILEED.H @@ -0,0 +1,34 @@ +/* +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. +*/ + +#ifndef TILEED_INC +#define TILEED_INC + +// TEtype defs +#define TEUNKNOWN 0 +#define TETILE 1 + +// external functions +extern void TileEdit(void); + +// external variables +extern unsigned int TEtype; // type of graphic being edited +extern unsigned int TEtile; // tile to edit - may possibly expand this to an array for simultaneous editing +extern unsigned int TExsize; // width of graphic being edited +extern unsigned int TEysize; // height of graphic being edited +extern unsigned char *TEsource; // pointer to original image being edited + +#endif diff --git a/16/v2/source/MAPED/TILESEL.C b/16/v2/source/MAPED/TILESEL.C new file mode 100644 index 00000000..834ad9d7 --- /dev/null +++ b/16/v2/source/MAPED/TILESEL.C @@ -0,0 +1,1448 @@ +/* +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. +*/ + +#include +#include +#include +#include + +#include "config.h" +#include "keyboard.h" +#include "maped.h" +#include "mouse.h" +#include "render.h" +#include "tileed.h" +#include "timer.h" +#include "vdriver.h" + +#include "smalfont.h" +#include "guicomp.h" +#include "gui.h" + +extern byte TileCmp(byte *one, byte *two); //zero + +// ================================= Data ==================================== + +int selofs=0; +char ttile[256], ttile2[256]; +char curastd=0; +char curmode=0; + +// ================================= Code ==================================== + +int curtileptr(int row) +{ + int jumper,wide; + int x,y; + + jumper=16+pad; + wide=320/jumper; + + x=(mx-16)/jumper; + y=((my-16)/jumper)*wide; + + return x+y+row; +} + +void NormalButton(int x1, int y1, int x2, int y2, char *str) +{ + FilledBox(x1, y1, x2, y2, winbg); + HLine(x1, y1, x2, black); + VLine(x1, y1, y2, black); + HLine(x1+1, y1+y2-1, x2-1, black); + VLine(x1+x2-1, y1+1, y2-1, black); + + HLine(x1+1, y1+1, x2-2, brightw); + VLine(x1+1, y1+1, y2-2, brightw); + HLine(x1+2, y1+y2-2, x2-3, darkw); + VLine(x1+x2-2, y1+2, y2-3, darkw); + GotoXY(x1+((x2-pixels(str))/2), y1+3); + printstring(str); +} + +void PressdButton(int x1, int y1, int x2, int y2, char *str) +{ + FilledBox(x1, y1, x2, y2, winbg); + HLine(x1, y1, x2, black); + VLine(x1, y1, y2, black); + HLine(x1+1, y1+y2-1, x2-1, black); + VLine(x1+x2-1, y1+1, y2-1, black); + + HLine(x1+1, y1+1, x2-2, darkw); + VLine(x1+1, y1+1, y2-2, darkw); + GotoXY(x1+((x2-pixels(str))/2)+1, y1+4); + printstring(str); +} + +void RenderSelector() +{ unsigned char *img,i,j; + int z; + int tskip=16+pad; + int twide=320/tskip; + int tdeep=((200+15)&~15)/tskip; + + ClearScreen(); + + for (i=0; i=numtiles) img=vsp; + CopyTile((j*tskip)+16,(i*tskip)+16,img); + } + if (th) + { + if (my<(tsy-40)) + DrawHighlight( ((mx/tskip)*tskip)-(1+pad), + ((my/tskip)*tskip)-(1+pad)); + } + z=tsy-40; + sprintf(strbuf,"MapEd %s Tile Selector - Tile %d/%d",ME2_VERSION,curtileptr(selofs),numtiles); + Window(16,z,336,z+40,strbuf); + HLine(278, z+11, 53, darkw); + VLine(278, z+11, 25, darkw); + VLine(330, z+12, 24, brightw); + HLine(279, z+35, 51, brightw); + if (curmode==0) PressdButton(290, z+12, 40, 12, "Select"); + else NormalButton(290, z+12, 40, 12, "Select"); + if (curmode==1) PressdButton(290, z+23, 40, 12, "Edit"); + else NormalButton(290, z+23, 40, 12, "Edit"); + if (th) PressdButton(279, z+12, 12, 12, "H"); + else NormalButton(279, z+12, 12, 12, "H"); + if (pad) PressdButton(279, z+23, 12, 12, "P"); + else NormalButton(279, z+23, 12, 12, "P"); + + HLine(219, z+11, 52, darkw); + VLine(219, z+11, 25, darkw); + VLine(270, z+12, 24, brightw); + HLine(220, z+35, 50, brightw); + NormalButton(220, z+12, 50, 12, "Import VSP"); + NormalButton(220, z+23, 50, 12, "Import PCX"); + + HLine(160, z+11, 52, darkw); + VLine(160, z+11, 25, darkw); + VLine(211, z+12, 24, brightw); + HLine(161, z+35, 50, brightw); + NormalButton(161, z+12, 50, 12, "Add Tiles"); + NormalButton(161, z+23, 50, 12, "Animation"); + + HLine(26, z+10, 20, darkw); + VLine(26, z+10, 20, darkw); + HLine(27, z+29, 19, brightw); + VLine(45, z+11, 19, brightw); + FilledBox(27, z+11, 18, 18, black); + CopyTile(28, z+12, ttile2); + GotoXY(20, z+32); printstring("Clipboard"); +} + +void FlipX(unsigned short edtile) +{ int i,j; + + key[SCAN_X]=0; + if (edtile>=numtiles) return; + memcpy(ttile,&vsp[edtile*256],256); + modified=1; + + for (i=0;i<16;i++) + for (j=0;j<16;j++) + vsp[((edtile)*256)+(j*16)+i]=ttile[(j*16)+(15-i)]; +} + +void FlipY(unsigned short edtile) +{ int i,j; + + key[SCAN_Y]=0; + if (edtile>=numtiles) return; + memcpy(ttile,&vsp[edtile*256],256); + modified=1; + + for (i=0;i<16;i++) + for (j=0;j<16;j++) + vsp[((edtile)*256)+(j*16)+i]=ttile[((15-j)*16)+i]; +} + +void FlipZ(unsigned short edtile) +{ int i,j; + + key[SCAN_Z]=0; + if (edtile>=numtiles) return; + memcpy(ttile,&vsp[edtile*256],256); + modified=1; + + for (i=0;i<16;i++) + for (j=0;j<16;j++) + vsp[((edtile)*256)+(j*16)+i]=ttile[(i*16)+j]; +} + +void DrawHighlight(int x, int y) +{ + if (x<10 || y<10 || x>330 || y>sy+10) return; + HLine(x, y, 18, white); + HLine(x, y+17, 18, white); + VLine(x, y, 18, white); + VLine(x+17, y, 18, white); +} + +void TileSelector() +{ int z, ct, k,j,m; + char *s, *d; + + int ms_down=0; // aen + int ms_up=0; + + while (!key[SCAN_ESC]) + { + RenderSelector(); + RenderMessages(); + DrawMouse(); + ShowPage(); + + ms_down=0; + ms_up=0; + if (mouse_scroll) + { + if (my>tsy-2) ms_down=1; + if (my<18) ms_up=1; + } + + if ((key[SCAN_DOWN] || (ms_down && (!(systemtime%10)))) && selofs<65319) + { + if (!pad) selofs=selofs+20; + else selofs+=18; + key[SCAN_DOWN]=0; + systemtime++; + } + if ((key[SCAN_UP] || (ms_up && (!(systemtime%10)))) && selofs>17) + { + if (!pad) selofs-=20; + else selofs-=18; + key[SCAN_UP]=0; + systemtime++; + } + if (key[SCAN_P]) + { + key[SCAN_P]=0; + pad=pad ^ 1; + selofs=0; + if (pad) Message("Tile padding enabled.",100); + else Message("Tile padding disabled.",100); + } + if (key[SCAN_H]) + { + key[SCAN_H]=0; + th=th ^ 1; + if (th) Message("Tile Highlight enabled.",100); + else Message("Tile Highlight disabled.",100); + } + + if (key[SCAN_X]) FlipX(curtileptr(selofs)); + if (key[SCAN_Y]) FlipY(curtileptr(selofs)); + if (key[SCAN_Z]) FlipZ(curtileptr(selofs)); + if (key[SCAN_V]) VSPAnimDialog(); + if (key[SCAN_CTRL] && key[SCAN_C]) + { + memcpy(ttile2, (char *) (vsp+(256*curtileptr(selofs))), 256); + key[SCAN_C]=0; + } + if (key[SCAN_CTRL] && key[SCAN_S]) + { + if (curtileptr(selofs) >= numtiles) return; + memcpy((char *) (vsp+(256*curtileptr(selofs))), ttile2, 256); + modified=1; + key[SCAN_S]=0; + } + if (key[SCAN_CTRL] && key[SCAN_T]) + { + if (curtileptr(selofs) >= numtiles) return; + modified=1; + s=ttile2; + d=(char *) (vsp+(256*curtileptr(selofs))); + for (z=0; z<256; z++) + { + if (*s) *d=*s; + d++; + s++; + } + key[SCAN_T]=0; + } + if (key[SCAN_CTRL] && key[SCAN_D] && !key[SCAN_ALT]) + { + key[SCAN_D]=0; + modified=1; + z=curtileptr(selofs); + if (zz) layers[k][j*layer[k].sizex+m]--; + } + } + } + } + } + } +// zero: Super Insert Mode! +// wimpy insert irks me. + if (key[SCAN_CTRL] && key[SCAN_I] && key[SCAN_ALT]) + { + key[SCAN_I]=0; + ct=curtileptr(selofs); + if (ct <= numtiles) + { + modified=1; + s=(char *) valloc((numtiles+1)*256, "s_ins",0); + memcpy(s, vsp, (numtiles*256)); + vfree(vsp); vsp=s; s=0; + for (z=numtiles-1; z>=ct; z--) + memcpy(vsp+((z+1)*256),vsp+(z*256),256); + memset(vsp+(ct*256), 0, 256); + numtiles++; + } + for(k=0;k=ct) layers[k][j*layer[k].sizex+m]++; + } + } + } + } + + if (key[SCAN_CTRL] && key[SCAN_I] && !key[SCAN_ALT]) + { + key[SCAN_I]=0; + ct=curtileptr(selofs); + if (ct <= numtiles) + { + modified=1; + s=(char *)valloc((numtiles+1)*256,"s_ins",0); + memcpy(s, vsp, (numtiles*256)); + vfree(vsp); vsp=s; s=0; + for (z=numtiles-1; z>=ct; z--) + memcpy(vsp+((z+1)*256),vsp+(z*256),256); + memset(vsp+(ct*256), 0, 256); + numtiles++; + } + } + if (key[SCAN_E]) + { + modified=1; + TEtile=curtileptr(selofs); // middle tile initially + if (TEtile290 && mx<330 && my>z+12 && my290 && mx<330 && my>z+23 && my278 && mx<289 && my>z+12 && my278 && mx<289 && my>z+23 && my161 && mx<210 && my>z+12 && my161 && mx<210 && my>z+23 && my220 && mx<270 && my>z+12 && my220 && mx<270 && my>z+23 && my= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + vaxofs = (mx-mxo); + vayofs = (my-myo); + if (!mb) moving=0; + if (vaxofs<16) vaxofs = 16; + if (vayofs<16) vayofs = 16; + if (vaxofs+vaxsize>335) vaxofs = 336-vaxsize; + if (vayofs+vaysize>sy+16) vayofs = (sy+16)-vaysize; + } + + Window(vaxofs, vayofs, vaxofs+vaxsize, vayofs+vaysize, "VSP Animation Editor"); + CopyTile(vaxofs+110, vayofs+16, (char *) (vsp+(256*tileidx[vspanim[i].start]))); + GotoXY(vaxofs+4, vayofs+12); printstring("Start"); + TextField(vaxofs+25, vayofs+11, 60, nstr1, ctf == 1 ? cb : 0); + GotoXY(vaxofs+11, vayofs+22); printstring("End"); + TextField(vaxofs+25, vayofs+21, 60, nstr2, ctf == 2 ? cb : 0); + GotoXY(vaxofs+4, vayofs+32); printstring("Delay"); + TextField(vaxofs+25, vayofs+31, 60, nstr3, ctf == 3 ? cb : 0); + GotoXY(vaxofs+6, vayofs+42); printstring("Mode"); + TextField(vaxofs+25, vayofs+41, 60, nstr4, ctf == 4 ? cb : 0); + GotoXY(vaxofs+2, vayofs+56); printstring("Strand"); + GotoXY(vaxofs+104, vayofs+33); printstring("Preview"); + HLine(vaxofs+1, vayofs+51, 148, white); + Button(vaxofs+85, vayofs+54, "OK"); + Button(vaxofs+117, vayofs+54, "Update"); + GotoXY(vaxofs+30, vayofs+56); + sprintf(strbuf, "%d", i); printstring(strbuf); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>vaxofs+25 && mxvayofs+11 && myvaxofs+25 && mxvayofs+21 && myvaxofs+25 && mxvayofs+31 && myvaxofs+25 && mxvayofs+41 && myvaxofs+85 && mxvayofs+54 && myvaxofs+117 && mxvayofs+54 && my(vaxofs+vaxsize-9) && (mx(vayofs+1) && (myvaxofs && mxvayofs && my<(vayofs+9) && !moving) + { + moving=1; + mxo=mx-vaxofs; + myo=my-vayofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_UP) + { + vspanim[i].start=atoi(nstr1); + vspanim[i].finish=atoi(nstr2); + vspanim[i].delay=atoi(nstr3); + vspanim[i].mode=atoi(nstr4); + if (i<99) i++; else i=0; + last_pressed=0; key[SCAN_UP]=0; + sprintf(nstr1, "%d", vspanim[i].start); + sprintf(nstr2, "%d", vspanim[i].finish); + sprintf(nstr3, "%d", vspanim[i].delay); + sprintf(nstr4, "%d", vspanim[i].mode); + continue; + } + if (last_pressed==SCAN_DOWN) + { + vspanim[i].start=atoi(nstr1); + vspanim[i].finish=atoi(nstr2); + vspanim[i].delay=atoi(nstr3); + vspanim[i].mode=atoi(nstr4); + if (i) i--; else i=99; + last_pressed=0; key[SCAN_DOWN]=0; + sprintf(nstr1, "%d", vspanim[i].start); + sprintf(nstr2, "%d", vspanim[i].finish); + sprintf(nstr3, "%d", vspanim[i].delay); + sprintf(nstr4, "%d", vspanim[i].mode); + continue; + } + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=1; str=nstr1; break; + case 1: ctf=2; str=nstr2; break; + case 2: ctf=3; str=nstr3; break; + case 3: ctf=4; str=nstr4; break; + case 4: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=4; str=nstr4; break; + case 1: ctf=0; str=0; break; + case 2: ctf=1; str=nstr1; break; + case 3: ctf=2; str=nstr2; break; + case 4: ctf=3; str=nstr3; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } while (!done); +// memset(&vadelay, 0, 100); +// for (i=0; i= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + atxofs = (mx-mxo); + atyofs = (my-myo); + if (!mb) moving=0; + if (atxofs<16) atxofs = 16; + if (atyofs<16) atyofs = 16; + if (atxofs+atxsize>335) atxofs = 336-atxsize; + if (atyofs+atysize>sy+16) atyofs = (sy+16)-atysize; + } + + Window(atxofs, atyofs, atxofs+atxsize, atyofs+atysize, "Allocate Additional Tiles"); + GotoXY(atxofs+12, atyofs+15); printstring("Alloc Tiles:"); + TextField(atxofs+56, atyofs+13, 80, nstr1, ctf == 1 ? cb : 0); + Button(atxofs+85, atyofs+26, "OK"); + Button(atxofs+117, atyofs+26, "Cancel"); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>atxofs+56 && mxatyofs+13 && myatxofs+85 && mxatyofs+26 && myatxofs+117 && mxatyofs+26 && my(atxofs+atxsize-9) && (mx(atyofs+1) && (myatxofs && mxatyofs && my<(atyofs+9) && !moving) + { + moving=1; + mxo=mx-atxofs; + myo=my-atyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=1; str=nstr1; break; + case 1: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=1; str=nstr1; break; + case 1: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } while (!done); + at=atoi(nstr1); + th=bleh; +// memset(&vadelay, 0, 100); +// for (i=0; i=ontiles) img=ovsp; + CopyTile((j*jumper)+16,(i*jumper)+16,img); + if(at17) + { + if (!pad) sofs-=20; + else sofs-=18; + key[SCAN_UP]=0; + } +/*all by zero here in this scan_b thing*/ + if (key[SCAN_B]) + { + key[SCAN_B]=0; + Message("Building duplicate import list",200); + for(bloop1=0; bloop1= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + OPxofs = (mx-mxo); + OPyofs = (my-myo); + if (!mb) moving=0; + if (OPxofs<16) OPxofs = 16; + if (OPyofs<16) OPyofs = 16; + if (OPxofs+OPxsize>335) OPxofs = 336-OPxsize; + if (OPyofs+OPysize>sy+16) OPyofs = (sy+16)-OPysize; + } + + Window(OPxofs, OPyofs, OPxofs+OPxsize, OPyofs+OPysize, "Open PCX As"); + Button(OPxofs+21, OPyofs+18, "Tileset"); + Button(OPxofs+50, OPyofs+18, "Image"); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>OPxofs+21 && mxOPyofs+18 && myOPxofs+50 && mxOPyofs+18 && my(OPxofs+OPxsize-9) && (mx(OPyofs+1) && (myOPxofs && mxOPyofs && my<(OPyofs+9) && !moving) + { + moving=1; + mxo=mx-OPxofs; + myo=my-OPyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } while (!done); +} + +char manufacturer; +char version; +char encoding; +char bits_per_pixel; +short xmin,ymin; +short xmax,ymax; +short hres; +short vres; +char palette[48]; +char reserved; +char color_planes; +short bytes_per_line; +short palette_type; +char filler[58]; +char *t; + +int width,depth; +int bytes; +int vidoffset; +FILE *pcxf; + +void ReadPCXLine(unsigned char *dest) +{ int i, n; + char c, run; + + n=0; + do { + c=fgetc(pcxf) & 0xff; + + if ((c & 0xc0)==0xc0) + { run=c & 0x3f; + c=fgetc(pcxf); + for (i=0; i> 2; + set_intensity(63); +} + +void LoadPCXHeaderNP(char *fname) +{ + pcxf=fopen(fname,"rb"); + if (!pcxf) err("Could not open specified PCX file."); + fread(&manufacturer,1,1,pcxf); + fread(&version,1,1,pcxf); + fread(&encoding,1,1,pcxf); + fread(&bits_per_pixel,1,1,pcxf); + fread(&xmin,1,2,pcxf); + fread(&ymin,1,2,pcxf); + fread(&xmax,1,2,pcxf); + fread(&ymax,1,2,pcxf); + fread(&hres,1,2,pcxf); + fread(&vres,1,2,pcxf); + fread(&palette,1,48,pcxf); + fread(&reserved,1,1,pcxf); + fread(&color_planes,1,1,pcxf); + fread(&bytes_per_line,1,2,pcxf); + fread(&palette_type,1,2,pcxf); + fread(&filler,1,58,pcxf); + width=xmax-xmin+1; + depth=ymax-ymin+1; + bytes=bytes_per_line; +} + +// grabs a tile from the ovsp buffer (transit tile bay) +int GrabTileAt(int x, int y, int z, int check_dup) +{ int a; + char tvsp[256]; + char *s; + + s=t+(y*width)+x; + + for (a=0; a<16; a++) + { + memcpy(tvsp+(a*16), s, 16); + s+=width; + } + + if (check_dup) + { + for (a=0; a +#include +#include + +#include "mikmod.h" + +#include "render.h" + +#define PIT0 0x40 +#define PIT1 0x41 +#define PIT2 0x42 +#define PITMODE 0x43 +#define PITCONST 1193180L + +#define OCR1 0x20 +#define IMR1 0x21 + +#define OCR2 0xA0 +#define IMR2 0xA1 + +// ================================= Data ==================================== + +void (__interrupt __far *biosTimerHandler)(); +char timerinstalled=0; +extern char soundokay; + +volatile unsigned int systemtime=0, timer_count=0, tick=0; +volatile int backupct=0, idlect=0; + +// ================================= Code ==================================== + +#pragma aux disable =\ + "cli"; + +#pragma aux enable =\ + "sti"; + +static void SendEOI (unsigned char irqno) +{ + static unsigned char ocr; + static unsigned char eoi; + + ocr=(irqno>7) ? OCR2 : OCR1; + eoi=0x60|(irqno&7); + outp(ocr,eoi); + if (irqno>7) outp(OCR1,0x20); +} + +void __interrupt __far newhandler(void) +{ + systemtime++; + timer_count++; + tick++; + backupct++; + idlect++; + CheckTileAnimation(); + if (soundokay) MD_Update(); + SendEOI(0); +} + +void SetHZ(unsigned int hz) +{ unsigned int pit0_set, pit0_value; + + disable(); + + outp(PITMODE, 0x34); + pit0_value=PITCONST / hz; + pit0_set=(pit0_value & 0x00ff); + outp(PIT0, pit0_set); + pit0_set=(pit0_value >> 8); + outp(PIT0, pit0_set); + + enable(); +} + +void RestoreHZ() +{ + disable(); + outp(PITMODE, 0x34); + outp(PIT0, 0x00); + outp(PIT0, 0x00); + enable(); +} + +void InitTimer() +{ + if (timerinstalled) return; + + biosTimerHandler=_dos_getvect(0x08); + _dos_setvect(0x08, newhandler); + timerinstalled=1; + SetHZ(100); +} + +void ShutdownTimer() +{ + if (!timerinstalled) return; + + _dos_setvect(0x08, biosTimerHandler); + RestoreHZ(); + timerinstalled=0; +} diff --git a/16/v2/source/MAPED/TIMER.H b/16/v2/source/MAPED/TIMER.H new file mode 100644 index 00000000..9a74f633 --- /dev/null +++ b/16/v2/source/MAPED/TIMER.H @@ -0,0 +1,29 @@ +/* +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. +*/ + +#ifndef TIMER_INC +#define TIMER_INC + +extern unsigned int systemtime, timer_count, tick; +extern int backupct, idlect; +//extern int (*callback) (void); // ??? + +extern void SetHZ(unsigned int hz); +extern void RestoreHZ(); +extern void InitTimer(); +extern void ShutdownTimer(); + +#endif // TIMER_INC diff --git a/16/v2/source/MAPED/VDRIVER.C b/16/v2/source/MAPED/VDRIVER.C new file mode 100644 index 00000000..14ca28fe --- /dev/null +++ b/16/v2/source/MAPED/VDRIVER.C @@ -0,0 +1,105 @@ +/* +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. +*/ + +#include + +#include "mode13h.h" +#include "modex.h" + +// ================================= Data ==================================== + +// Driver function-pointers. +int (*ShutdownVideo) (void); +int (*ShowPage) (void); +int (*CopySprite) (int x, int y, int width, int height, char *src); +int (*CCopySprite) (int x, int y, int width, int height, char *src); +int (*TCCopySprite) (int x, int y, int width, int height, char *src); +int (*TCopySprite) (int x, int y, int width, int height, char *src); +int (*CopyTile) (int x, int y, char *src); +int (*FilledBox) (int x, int y, int width, int height, char c); +int (*VLine) (int x, int y, int height, char color); +int (*HLine) (int x, int y, int width, char color); +int (*ColorGrid) (int x, int y, char c); +int (*ClearScreen) (void); +int (*CopySpriteLucentClip) (int x, int y, int width, int height, unsigned char *src); + +unsigned char pal[768], pal2[768]; +unsigned char *screen=0; + +int sx=0, sy=0; +int tx=0, ty=0; +int tsx=0, tsy=0; +int map_scroll_x=1; +int map_scroll_y=1; + +// ================================= Code ==================================== + +void InitVideo(int mode) +{ + switch (mode) + { + case 0: InitMode13h(); break; + case 1: InitModeX(); // 320x240 + break; + } +} + +void SetPalette(unsigned char *pall) +{ unsigned int i; + + outp(0x03c8,0); + for (i=0; i<768; i++) + outp(0x03c9,pall[i]); +} + +void GetPalette(void) +{ unsigned int i; + + outp(0x03c7,0); + for (i=0; i<768; i++) + pal[i]=inp(0x03c9); +} + +void set_intensity(unsigned int n) +{ unsigned int i; + + for (i=0; i<768; i++) + pal2[i]=(pal[i]*n)>>6; + + SetPalette(pal2); +} + +#define byte unsigned char +int cx1=16, cy1=16, cx2=336, cy2=256; + +char stipple[256]={ + 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0, + 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, + 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0, + 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, + 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0, + 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, + 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0, + 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, + 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0, + 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, + 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0, + 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, + 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0, + 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, + 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0, + 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, +}; diff --git a/16/v2/source/MAPED/VDRIVER.H b/16/v2/source/MAPED/VDRIVER.H new file mode 100644 index 00000000..b04b194b --- /dev/null +++ b/16/v2/source/MAPED/VDRIVER.H @@ -0,0 +1,49 @@ +/* +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. +*/ + +#ifndef VDRIVER_INC +#define VDRIVER_INC + +#include "inter.h" + +extern int (*ShutdownVideo) (void); +extern int (*ShowPage) (void); +extern int (*CopySprite) (int x, int y, int width, int height, char *src); +extern int (*CCopySprite) (int x, int y, int width, int height, char *src); +extern int (*TCCopySprite) (int x, int y, int width, int height, char *src); +extern int (*TCopySprite) (int x, int y, int width, int height, char *src); +extern int (*CopySpriteLucentClip) (int x, int y, int width, int height, unsigned char *src); +extern int (*CopyTile) (int x, int y, char *src); +extern int (*FilledBox) (int x, int y, int width, int height, char c); +extern int (*VLine) (int x, int y, int height, char color); +extern int (*HLine) (int x, int y, int width, char color); +extern int (*ColorGrid) (int x, int y, char c); +extern int (*ClearScreen) (void); + +extern unsigned char pal[768], pal2[768]; +extern unsigned char *screen; + +extern int sx, sy, tx, ty, tsx, tsy; +extern int map_scroll_x, map_scroll_y; + +extern void InitVideo(int mode); +extern void SetPalette(unsigned char *pall); +extern void GetPalette(void); +extern void set_intensity(unsigned int n); + +extern int cx1, cy1, cx2, cy2; + +#endif // VDRIVER_INC diff --git a/16/v2/source/MAPED/VERGEPAL.H b/16/v2/source/MAPED/VERGEPAL.H new file mode 100644 index 00000000..75adcd68 --- /dev/null +++ b/16/v2/source/MAPED/VERGEPAL.H @@ -0,0 +1,82 @@ +/* +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/README.TXT b/16/v2/source/README.TXT new file mode 100644 index 00000000..84e756b6 --- /dev/null +++ b/16/v2/source/README.TXT @@ -0,0 +1,40 @@ + +VERGE version 2.01a, Copyright (C) 1998 BJ Eirich (aka vecna) +VERGE comes with ABSOLUTELY NO WARRANTY. This is free software, +and you are welcome to redistribute it under certain conditions. +For details refer to GNU.TXT. + +-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + +>Jan 1, 2000< + +Hey Guys, + +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. + +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. + +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). + +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. + +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. :-) + +- aen + +-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + +Pertaining to MikMod: + +Parts of the library (in playercode/mdulaw.c) are derived from the files +libst.h and raw.c from an old version of the sox (SOund eXchange) package +written by Lance Norskog and Jef Poskanzer. The following copyright notice +applies to these parts: + +Copyright (C) 1989 by Jef Poskanzer. +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, provided +that the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. This software is provided "as is" without express or +implied warranty. diff --git a/16/v2/source/UTIL/CHRCONV/CHRCONV.C b/16/v2/source/UTIL/CHRCONV/CHRCONV.C new file mode 100644 index 00000000..91ac6ac1 --- /dev/null +++ b/16/v2/source/UTIL/CHRCONV/CHRCONV.C @@ -0,0 +1,125 @@ +/* +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. +*/ + +#include +#include + +char c[100]; +FILE *f; +char *jalblkasd; +char byte, *t; +short word; +int quad; + +int bufsize=0; +unsigned char *csrc, *cb; + +void EmitC (unsigned char c) +{ + *csrc++=c; + bufsize++; +} + +void Compress(unsigned char *p, int len) +{ + int i; + unsigned char byt,samect; + unsigned char repcode; + + csrc=cb; + i=0; bufsize=0; + do + { byt=p[i++]; + samect=1; + while (samect<254 && i3 || byt == 0xFF) + { + repcode=0xFF; + EmitC(repcode); + repcode=(char) samect; + EmitC(repcode); + } + EmitC(byt); + } while (i v2 chr +--- +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. + +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. + +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. + +enjoy! \ No newline at end of file diff --git a/16/v2/source/UTIL/CHRCONV/DARIN.CHR b/16/v2/source/UTIL/CHRCONV/DARIN.CHR new file mode 100644 index 0000000000000000000000000000000000000000..15b6debb84b5aa6bee7ba657b029e512b918bf49 GIT binary patch literal 15360 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 literal 0 HcmV?d00001 diff --git a/16/v2/source/UTIL/CHRCONV/MAKEDJ.BAT b/16/v2/source/UTIL/CHRCONV/MAKEDJ.BAT new file mode 100644 index 00000000..5ad2d1f3 --- /dev/null +++ b/16/v2/source/UTIL/CHRCONV/MAKEDJ.BAT @@ -0,0 +1,2 @@ +@echo off +gcc -s -Wall -Werror -m486 -O3 chrconv.c -o chrconv.exe diff --git a/16/v2/source/UTIL/CHRMAK/CHRMAK.CC b/16/v2/source/UTIL/CHRMAK/CHRMAK.CC new file mode 100644 index 00000000..d3ebd7ee --- /dev/null +++ b/16/v2/source/UTIL/CHRMAK/CHRMAK.CC @@ -0,0 +1,653 @@ +/* +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. +*/ + +// CHRMAK.CC +// V2 PCX to CHR converter w/ makefiles +// +// coded by aen +// aen@verge-rpg.com + +#include +#include +#include +#include +#include +#include + +#include + +//////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// + +typedef unsigned char byte; +typedef unsigned short word; +typedef unsigned long quad; + +static void fputw(word w, FILE *fp) { fwrite(&w,1,2,fp); } +static void fputd(quad d, FILE *fp) { fwrite(&d,1,4,fp); } +static word fgetw(FILE *fp) { word w; fread(&w,1,2,fp); return w; } +quad fgetd(FILE *fp) { quad d; fread(&d,1,4,fp); return d; } + +// skips the number of bytes in the file; just seeks past them +static void fskip(int bytes, FILE *fp) + { fseek(fp,bytes,SEEK_CUR); } + +static void fputraw(char *raw, int bytes, FILE *fp) + { fwrite(raw, 1,bytes, fp); } + +// writes a null-terminated string to the file +void fputstrz(char *str, FILE *fp) + { fputraw(str, strlen(str)+1, fp); } + +// writes a string to the file (without the null-terminator), preceeded by +// a quad length marker +static void fputstrn(char *str, FILE *fp) + { int n=strlen(str)+1; fputd(n,fp); fputraw(str,n,fp); } + +//////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// + +#define CHRMAK_VER_MAJ 0 +#define CHRMAK_VER_MIN 1 +#define CHRMAK_VER_STR "0.1b" +#define CHRMAK_AUTHORS "aen" + +// parsing vars +static char *mak_base=0; +static char *makp=0; +static int mak_bytes=0; +static char mak_tok_ident[256]; +static char mak_tok_val[256]; +static int mak_tok_valn=0; // numeric val of mak_tok +static int mak_line=0; + +// makefile vars +static char chrmak_makefile[256]; + +static char pcx_name[256]; static int got_pcx_name=0; +static char chr_name[256]; static int got_chr_name=0; +static int frame_w=0; static int got_frame_w=0; +static int frame_h=0; static int got_frame_h=0; +static int hot_x=0; static int got_hot_x=0; +static int hot_y=0; static int got_hot_y=0; +static int hot_w=0; static int got_hot_w=0; +static int hot_h=0; static int got_hot_h=0; +static int per_row=0; static int got_per_row=0; +static int total_frames=0; static int got_total_frames=0; +static int lidle=0; static int got_lidle=0; +static int ridle=0; static int got_ridle=0; +static int uidle=0; static int got_uidle=0; +static int didle=0; static int got_didle=0; +static char lscript[256]; static int got_lscript=0; +static char rscript[256]; static int got_rscript=0; +static char uscript[256]; static int got_uscript=0; +static char dscript[256]; static int got_dscript=0; + +void warning(char *message, ...) +{ + static char buffer[256]; + va_list args; + + va_start(args, message); + vsprintf(buffer, message, args); + va_end(args); + + printf("%s \n", buffer); +} + +static void fatal(char *message, ...) +{ + static char buffer[256]; + va_list args; + + va_start(args, message); + vsprintf(buffer, message, args); + va_end(args); + + printf("%s \n", buffer); + + exit(0); +} + +//#ifdef __DJGPP__ +// Watcom has one of these +static int filelength(int handle) +{ + struct stat fileinfo; + if (-1 == fstat(handle, &fileinfo)) + fatal("error fstating"); + return fileinfo.st_size; +} +//#endif + +static int streq(char *a, char *b) +{ + while (*a) + { + if (*a++ != *b++) + return 0; + } + return !*b; +} + +static void usage() +{ + printf("usage: chrmak \n"); + exit(0); +} + +static void banner() +{ + printf("chrmak v%s  by %s \n", CHRMAK_VER_STR, CHRMAK_AUTHORS); +} + +static void parse_args(int argc, char *argv[]) +{ + if (argc != 2) + usage(); + + strcpy(chrmak_makefile, argv[1]); +} + +static void skip_cpp_comment() +{ + makp+=2; + while (*makp && '\n'!=*makp) + makp++; + if (*makp) + makp++; +} + +static void skip_c_comment() +{ + makp+=2; + while (*makp && ('*'!=makp[0] || '/'!=makp[1])) + { + if ('\n'==*makp) + mak_line++; + if ('/'==makp[0] && '*'==makp[1]) + skip_c_comment(); + else makp++; + } + if (*makp) + makp+=2; +} + +static void parse_whitespace() +{ + do { + if (!*makp) + return; + if (isspace(*makp)) + { + while (*makp && isspace(*makp)) + { + if ('\n'==*makp) + mak_line++; + makp++; + } + continue; + } + if ('/'==makp[0] && '/'==makp[1]) + { skip_cpp_comment(); continue; } + if ('/'==makp[0] && '*'==makp[1]) + { skip_c_comment(); continue; } + break; + } while (1); +} + +static void grab_ident() +{ + char *t=mak_tok_ident; + while (isalnum(*makp) || '_'==*makp) + *t++=*makp++; + *t=0; + strlwr(mak_tok_ident); +} + +static void grab_val() +{ + char *t=mak_tok_val; + while (isalnum(*makp) || '_'==*makp) + *t++=*makp++; + *t=0; + mak_tok_valn=atoi(mak_tok_val); +} + +static int ident_is(char *id) { return streq(mak_tok_ident,id); } + +static void do_assign() +{ + if (ident_is("pcx_name")) + { strcpy(pcx_name, mak_tok_val); got_pcx_name=1; return; } + else if (ident_is("chr_name")) + { strcpy(chr_name, mak_tok_val); got_chr_name=1; return; } + else if (ident_is("frame_w")) + { frame_w=mak_tok_valn; got_frame_w=1; return; } + else if (ident_is("frame_h")) + { frame_h=mak_tok_valn; got_frame_h=1; return; } + else if (ident_is("hot_x")) + { hot_x=mak_tok_valn; got_hot_x=1; return; } + else if (ident_is("hot_y")) + { hot_y=mak_tok_valn; got_hot_y=1; return; } + else if (ident_is("hot_w")) + { hot_w=mak_tok_valn; got_hot_w=1; return; } + else if (ident_is("hot_h")) + { hot_h=mak_tok_valn; got_hot_h=1; return; } + else if (ident_is("per_row")) + { per_row=mak_tok_valn; got_per_row=1; return; } + else if (ident_is("total_frames")) + { total_frames=mak_tok_valn; got_total_frames=1; return; } + else if (ident_is("lidle")) + { lidle=mak_tok_valn; got_lidle=1; return; } + else if (ident_is("ridle")) + { ridle=mak_tok_valn; got_ridle=1; return; } + else if (ident_is("uidle")) + { uidle=mak_tok_valn; got_uidle=1; return; } + else if (ident_is("didle")) + { didle=mak_tok_valn; got_didle=1; return; } + else if (ident_is("lscript")) + { strcpy(lscript, mak_tok_val); got_lscript=1; return; } + else if (ident_is("rscript")) + { strcpy(rscript, mak_tok_val); got_rscript=1; return; } + else if (ident_is("uscript")) + { strcpy(uscript, mak_tok_val); got_uscript=1; return; } + else if (ident_is("dscript")) + { strcpy(dscript, mak_tok_val); got_dscript=1; return; } + + fatal("%s: unknown ident '%s' on line %i", + chrmak_makefile, mak_tok_ident, mak_line); +} + +static int parse_assign() +{ + int last_line=0; // helper for error detection + + parse_whitespace(); + if (!*makp) + return 1; + else if (isalpha(*makp)) + { + grab_ident(); // get ident + last_line=mak_line; + + parse_whitespace(); // expect + if ('=' != *makp++) + fatal("%s: expected = on line %i", chrmak_makefile, last_line); + + parse_whitespace(); // get val + grab_val(); + last_line=mak_line; + + do_assign(); + + parse_whitespace(); // expect + if (';' != *makp++) + fatal("%s: expected ; on line %i", chrmak_makefile, last_line); + else while (';'==*makp) makp++; + + return 0; + } + fatal("%s: expected ident, got '%c' on line %i", + chrmak_makefile, *makp, mak_line); + return 1; +} + +static void check_needs() +{ + if (!got_pcx_name) fatal("%s: pcx_name missing", chrmak_makefile); + if (!got_chr_name) fatal("%s: chr_name missing", chrmak_makefile); + if (!got_frame_w) fatal("%s: frame_w missing", chrmak_makefile); + if (!got_frame_h) fatal("%s: frame_h missing", chrmak_makefile); + if (!got_hot_x) fatal("%s: hot_x missing", chrmak_makefile); + if (!got_hot_y) fatal("%s: hot_y missing", chrmak_makefile); + if (!got_hot_w) fatal("%s: hot_w missing", chrmak_makefile); + if (!got_hot_h) fatal("%s: hot_h missing", chrmak_makefile); + if (!got_per_row) fatal("%s: per_row missing", chrmak_makefile); + if (!got_total_frames) fatal("%s: total_frames missing", chrmak_makefile); + if (!got_lidle) fatal("%s: lidle missing", chrmak_makefile); + if (!got_ridle) fatal("%s: ridle missing", chrmak_makefile); + if (!got_uidle) fatal("%s: uidle missing", chrmak_makefile); + if (!got_didle) fatal("%s: didle missing", chrmak_makefile); + if (!got_lscript) fatal("%s: lscript missing", chrmak_makefile); + if (!got_rscript) fatal("%s: rscript missing", chrmak_makefile); + if (!got_uscript) fatal("%s: uscript missing", chrmak_makefile); + if (!got_dscript) fatal("%s: dscript missing", chrmak_makefile); +} + +static void parse_makefile() +{ + FILE *fp=0; + + printf("ú parsing %s \r", chrmak_makefile); + fflush(stdout); + + fp=fopen(chrmak_makefile, "rb"); + if (!fp) fatal("unable to open %s", chrmak_makefile); + + mak_bytes=filelength(fileno(fp)); // calc bytes + mak_base=new char [mak_bytes+1]; // alloc room + fread(mak_base,1,mak_bytes,fp); // read bytes + mak_base[mak_bytes]=0; // null-term + makp=mak_base; // setup cur byte ptr + mak_line=1; + + while (!parse_assign()) + ; + + // got everything we need? + check_needs(); + + delete[]mak_base; mak_base=0; + makp=0; + + fclose(fp); + + printf("û \n"); + fflush(stdout); +} + +//////////////////////////////////////////////////////////////////////////// +// PCX & COMPRESS STUFF //////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// + +static FILE *chrfp=0; +static FILE *pcxfp=0; +static byte *virscr=0; + +int manufacturer=0; // pcx header +int version=0; +int encoding=0; +int bpp=0; +int xmin=0,ymin=0; +int xmax=0,ymax=0; +int hres=0,vres=0; +char palette[48]; +int reserved=0; +int color_planes=0; +int bpl=0; +int palette_type=0; +char filler[58]; +byte pal[768]; + +int image_width=0,image_depth=0; +quad vidoffset=0; + +void LoadPCXHeader() +{ + manufacturer = fgetc(pcxfp); // always 10 + version = fgetc(pcxfp); // should be 5? + encoding = fgetc(pcxfp); // always 1 + bpp = fgetc(pcxfp); // bits per pixel + + xmin = fgetw(pcxfp); // grab window + ymin = fgetw(pcxfp); + xmax = fgetw(pcxfp); + ymax = fgetw(pcxfp); + image_width = xmax-xmin+1; // calc dims + image_depth = ymax-ymin+1; + + hres = fgetw(pcxfp); + vres = fgetw(pcxfp); + + fread(palette,1,48,pcxfp); // ega color map + + reserved = fgetc(pcxfp); + color_planes = fgetc(pcxfp); // should be 1 + + bpl = fgetw(pcxfp); // bytes per line + palette_type = fgetw(pcxfp); + + fread(filler,1,58,pcxfp); // nothing important here +} + +void ReadPCXLine(byte *dest) +{ + int i=0,c=0,n=0,run=0; + + // decode a row + for (n=0; n3 || byt == 0xFF) + { + emitc(0xFF); + emitc(samect); + } + emitc(byt); + + } while (i dumping %s \n", chr_name); + fflush(stdout); + + chrfp=fopen(chr_name, "wb"); + if (!chrfp) fatal("unable to open %s", chr_name); + + WriteInfo(chrfp); + WriteFrames(pcx_name,chrfp); + WriteScripts(chrfp); + + fclose(chrfp); + + printf("complete! \n"); + fflush(stdout); +} + +int main(int argc, char *argv[]) +{ + banner(); + + parse_args(argc, argv); + parse_makefile(); + + write_chr(); + + return 0; +} diff --git a/16/v2/source/UTIL/CHRMAK/CHRMAK.TXT b/16/v2/source/UTIL/CHRMAK/CHRMAK.TXT new file mode 100644 index 00000000..b8767f13 --- /dev/null +++ b/16/v2/source/UTIL/CHRMAK/CHRMAK.TXT @@ -0,0 +1,118 @@ +chrmak.exe +the utility with bloated code perpetrated by aen (aen@verge-rpg.com for hate mail) +documentation +by zeromus 5.8.99 +zermous@verge-rpg.com +(be sure word wrap is on) +--- +USE: creates v2 chr from pcx file +--- +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. + +to run chrmak, simply execute chrmak with the makefile, with extension (ex: vecna.mak) as the first and only argument. (ex: "chrmak vecna.mak") + +The characteristics file is technically called a make file, or .mak. it containst several variables, and what they should be. for example: + +/* comment */ +pcx_name=rath; //comment +chr_name=rath; + +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. + +--- + +**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. +**chr_name** the filename, sans extension, of the chr file to output. same as above in all other respects. + +**frame_w** the width of each frame of the chr (DEFAULT 16) +**frame_h** the height of each frame (DEFAULT 32) + +**hot_x** the x-coord of the chr's hotspot. See appendix A for info on chr hotspots. (DEFAULT 0) +**hot_y** the same, but y-coord (DEFAULT 16) +**hot_w** the width of the obstructing region of the hotspot. (DEFAULT 16) +**hot_h** the height of the obstructing region of the hotspot. (DEFAULT 16) + +**per_row** the number of frames per row in the pcx file. in old v1 chr/pcx files, this was 5. (DEFAULT 5) +**total frames** total number of frames in the pcx file. (DEFAULT 20) + +**lidle** the frame to show when the chr is idling, facing the left (DEFAULT 10) +**ridle** the frame to show when the chr is idling, facing the right (DEFAULT 15) +**uidle** the frame to show when the chr is idling, facing up (DEFAULT 5) +**didle** the frame to show when the chr is idling, facing down (DEFAULT 0) + +**lscript** the animation script for when the chr moves to the left. See appendix B for discussion of animation scripts. (DEFAULT F10W10F11W10F12W10F11W10F10W10F13W10F14W10F13W10) +**rscript** the animation script for when the chr moves to the right. (DEFAULT F15W10F16W10F17W10F16W10F15W10F18W10F19W10F18W10) +**uscript** the animation script for when the chr moves up (DEFAULT F5W10F6W10F7W10F6W10F5W10F8W10F9W10F8W10) +**dscript** the animation script for when the chr moves down (DEFAULT F0W10F1W10F2W10F2W10F0W10F3W10F4W10F3W10) + +--- + +APPENDIX A: Hotspots + +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). + +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?" +Imagine three scenarios: a 4x4 sprite with the hotspot at top left, bottom left, and middle left, respectively: + + Top Left Bottom Left Middle Left +0123456789ABCDEF 0123456789ABCDEF 0123456789ABCEDEF +1 1 **** 1 +2 +---hotspot 2 **** 2 **** +3 \|/ 3 **** 3 \**** +4 @*** 4 @*** 4 +--@*** +5 **** 5 /|\ 5 | /**** +6 **** 6 +---hotspot 6 | +7 **** 7 7 +---hotspot +8 8 8 + +So you can see how the hotspot determines how the sprite is oriented, relative to its current screen position. + +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 + + -32 + -24 + -16 + -8 +-16 -12 -8 -4 0 4 8 12 16 + 8 * * * * + 16 * * * * <--- sprite goes there. + 24 @ * * * @ is where hotspot would be + 32 * * * * + +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. + ++----------------------+ +| | +| | +| | +| | +| +---+ | +| |***| | ++------|@@@|-----------+ + +---+ + +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. + +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. + +Final example: +A 32x64 giant might be defined like this: + +... +hot_x=8; +hot_y=48; +hot_w=16; +hot_h=16; +... + +--- + +APPENDIX B: Animation scripts + +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. + +The two COMMAND CODES are F and W. + +**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. + +**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/UTIL/CHRMAK/MAKEDJ.BAT b/16/v2/source/UTIL/CHRMAK/MAKEDJ.BAT new file mode 100644 index 00000000..6283a1f4 --- /dev/null +++ b/16/v2/source/UTIL/CHRMAK/MAKEDJ.BAT @@ -0,0 +1,2 @@ +@echo off +gxx -s -Wall -Werror -m486 -O3 chrmak.cc -o chrmak.exe diff --git a/16/v2/source/UTIL/CHRMAK/MAKEWAT.BAT b/16/v2/source/UTIL/CHRMAK/MAKEWAT.BAT new file mode 100644 index 00000000..21b58471 --- /dev/null +++ b/16/v2/source/UTIL/CHRMAK/MAKEWAT.BAT @@ -0,0 +1,2 @@ +@echo off +wcl386 /bt=dos /l=pmodew /mf /os /5r /fp5 /wx /we chrmak.cc diff --git a/16/v2/source/UTIL/CHRMAK/VECNA.MAK b/16/v2/source/UTIL/CHRMAK/VECNA.MAK new file mode 100644 index 00000000..baa4a9c4 --- /dev/null +++ b/16/v2/source/UTIL/CHRMAK/VECNA.MAK @@ -0,0 +1,21 @@ + +/* CHRMAK makefile + û aen */ + +pcx_name=vecna; // image source +chr_name=vecna; // output .CHR name + +frame_w=16; frame_h=32; // frame dims + +hot_x=0; hot_y=16; // hotspot coord +hot_w=16; hot_h=16; // hotspot dims + +per_row=5; total_frames=20; // frames per row, total + +lidle=10; ridle=15;; // left/right idle frames +uidle=5; didle=0; // up/down idle frames + +lscript=F10W10F11W10F12W10F11W10F10W10F13W10F14W10F13W10; // movement scripts +rscript=F15W10F16W10F17W10F16W10F15W10F18W10F19W10F18W10; +uscript=F5W10F6W10F7W10F6W10F5W10F8W10F9W10F8W10; +dscript=F0W10F1W10F2W10F2W10F0W10F3W10F4W10F3W10; diff --git a/16/v2/source/UTIL/CHRMAK/VECNA.PCX b/16/v2/source/UTIL/CHRMAK/VECNA.PCX new file mode 100644 index 0000000000000000000000000000000000000000..2e82dcb2c21a298e83e627bb78df6ac4ff97bebb GIT binary patch literal 15740 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 literal 0 HcmV?d00001 diff --git a/16/v2/source/UTIL/CHRMAK/VER b/16/v2/source/UTIL/CHRMAK/VER new file mode 100644 index 00000000..12088dab --- /dev/null +++ b/16/v2/source/UTIL/CHRMAK/VER @@ -0,0 +1,4 @@ + + current version + + chrmak.exe 0.1b diff --git a/16/v2/source/UTIL/PACK/MAKEDJ.BAT b/16/v2/source/UTIL/PACK/MAKEDJ.BAT new file mode 100644 index 00000000..dcc8a93a --- /dev/null +++ b/16/v2/source/UTIL/PACK/MAKEDJ.BAT @@ -0,0 +1,2 @@ +@echo off +gcc -s -Wall -Werror -m486 -O3 pack.c -o pack.exe diff --git a/16/v2/source/UTIL/PACK/PACK.C b/16/v2/source/UTIL/PACK/PACK.C new file mode 100644 index 00000000..f349ab0d --- /dev/null +++ b/16/v2/source/UTIL/PACK/PACK.C @@ -0,0 +1,166 @@ +/* +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. +*/ + +#include +#include +#include + +#define byte unsigned char + +// ================================= Data ==================================== + +FILE *pack; +FILE *list; +FILE *src; +char *strbuf,*filebuf; +int numfiles,curofs; +char headertag[]="VRGPACK"; + +typedef struct +{ + unsigned char fname[84]; // pathname thingo + int size; // size of the file + int packofs; // where the file can be found in PACK + int count; // internal (engine-runtime) use + char extractable; // can UNPACK .. unpack it? + char override; // should the engine override it w/ + // local files? +} filestruct; + +filestruct filetbl[512]; +byte *ptr; + +// ================================= Code ==================================== + +void CreatePackHeader() +{ char a; + + fwrite(&headertag, 1, 7, pack); + a=1; fwrite(&a, 1, 1, pack); // pack version 1 + fwrite(&numfiles, 1, 4, pack); // number of files in archive + + // Hmm.. that's it. What a boring header. :) +} + +void EncryptHeader() +{ byte lastvalue; //, precodebyte; + + ptr=(byte *) filetbl; + lastvalue=*ptr; + ptr++; + + while (ptr < (byte *) (int) filetbl + (int) 5120) + { + (*ptr)+=lastvalue; + lastvalue=*ptr; + ptr++; + } +} + +void DecryptHeader() +{ byte lastvalue, precodebyte; + + ptr=(byte *) filetbl; + lastvalue=*ptr; + ptr++; + + while (ptr < (byte *) (int) filetbl + (int) 5120) + { + precodebyte=*ptr; + (*ptr)-=lastvalue; + lastvalue=precodebyte; + ptr++; + } +} + +void BuildFileTable() +{ int i; + + curofs=12+(numfiles*100); + memset(filetbl, 0, sizeof filetbl); + + for (i=0; i \n"); + exit(-1); + } + + if (!(list=fopen(argv[1],"r"))) + { + printf("Unable to open file %s. \n",argv[1]); + exit(-1); + } + + strbuf=(char *) malloc(100); + fscanf(list,"%s",strbuf); + + if (!(pack=fopen(strbuf,"wb"))) + { + printf("Unable to create file %s. \n",strbuf); + exit(0); + } + fscanf(list,"%d",&numfiles); + + CreatePackHeader(); + BuildFileTable(); + DumpFiles(); + + fclose(list); + fclose(pack); + + return 0; +} diff --git a/16/v2/source/UTIL/PACK/PACK.TXT b/16/v2/source/UTIL/PACK/PACK.TXT new file mode 100644 index 00000000..b3f565b1 --- /dev/null +++ b/16/v2/source/UTIL/PACK/PACK.TXT @@ -0,0 +1,36 @@ +pack.exe +documentation +by zeromus 5.8.99 +zeromus@verge-rpg.com +(be sure word wrap is on) +--- +USE: creates v2 pakfile +--- +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. + +To create a packfile, pack.exe takes a makefile of the following format: + +--- <--cut below this line :) +pakfile_to_create.vrg +number_of_files +file_name_1 flag_extrractable flag_overrideable +file_name_2 flag_extrractable flag_overrideable +file_name_3 flag_extrractable flag_overrideable +--- + +Here it is with sample data. + +--- +test.vrg +3 +pack.c 0 0 +test.mak 1 0 +test.obj 0 1 +--- + +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. + +Extractable means that the file will be extracted by unpack.exe. Files you want to keep secret should have a 0 for this. + +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. + diff --git a/16/v2/source/UTIL/PACK/TEST b/16/v2/source/UTIL/PACK/TEST new file mode 100644 index 00000000..7de7a6ca --- /dev/null +++ b/16/v2/source/UTIL/PACK/TEST @@ -0,0 +1,5 @@ +test.vrg +3 +pack.c 1 1 +pack.exe 1 1 +todo 1 1 diff --git a/16/v2/source/UTIL/PACK/TODO b/16/v2/source/UTIL/PACK/TODO new file mode 100644 index 00000000..f873c218 --- /dev/null +++ b/16/v2/source/UTIL/PACK/TODO @@ -0,0 +1,3 @@ +entity/entity, point makes contact w/entity, entity/bbox,b +box/bbox,and a line intersect/entity and line intersect/bbox. +sin,cos and tan() functions. diff --git a/16/v2/source/UTIL/PCX2FNT/FONT0.PCX b/16/v2/source/UTIL/PCX2FNT/FONT0.PCX new file mode 100644 index 0000000000000000000000000000000000000000..a8eee682ba982a0293ecff8843112f128ec73ce1 GIT binary patch literal 11576 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 literal 0 HcmV?d00001 diff --git a/16/v2/source/UTIL/PCX2FNT/FONT02B.PCX b/16/v2/source/UTIL/PCX2FNT/FONT02B.PCX new file mode 100644 index 0000000000000000000000000000000000000000..26f4cd95ef83b691afbc8a8f572a65ff1a1c3a99 GIT binary patch literal 21809 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 xdH?RMNB3^+++W&zxOA|+^!&-KSKr +#include + +char fname1[100], fname2[100]; +int xs, ys, ns; +FILE *fnt,*pcxf; +char *virscr; + +char manufacturer; // pcx header +char version; +char encoding; +char bits_per_pixel; +short int xmin,ymin; +short int xmax,ymax; +short int hres; +short int vres; +char palette[48]; +char reserved; +char color_planes; +short int bytes_per_line; +short int palette_type; +char filler[58]; +unsigned char pal[768]; + +unsigned short int width,depth; +unsigned short int bytes; +unsigned char c, run, ss=0; +unsigned int vidoffset, n=0; + +void ReadPCXLine(unsigned char *dest) +{ + int j; + n=0; + + do { + c=fgetc(pcxf) & 0xff; + if ((c & 0xc0)==0xc0) { + run=c & 0x3f; + c=fgetc(pcxf); + for (j=0; j +#include +#include + +// ================================= Data ==================================== + +struct span +{ + int begin, end; // begin & end location of span + int len, inverse; // lenth of span and inverse on/off +}; + +struct span spans[32]; // maximum of 32 spans. +char numspans; // number of active spans in PDF + +unsigned char *transparencytbl; // full transparency table (64k) +char outname[100]; // output filename +char paldefname[100]; // palette definition filename +char *strbuf; // generic string buffer + +char spanidx[256]; // Color -> Span xlat table + +// ================================= Code ==================================== + +void ParsePaletteDefinition(FILE *f) +{ int i; + + fscanf(f,"%s",strbuf); + if (stricmp("gradients",strbuf)) + { + printf("Not a valid PDF file. \n"); + exit(-1); + } + fscanf(f,"%s",strbuf); + numspans=atoi(strbuf); + + for (i=0; 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 literal 0 HcmV?d00001 diff --git a/16/v2/source/UTIL/TRANS/VERGE.PDF b/16/v2/source/UTIL/TRANS/VERGE.PDF new file mode 100644 index 00000000..c55b015e --- /dev/null +++ b/16/v2/source/UTIL/TRANS/VERGE.PDF @@ -0,0 +1,17 @@ +gradients 16 +starts 0 ends 31 endspan +starts 32 ends 47 inverse endspan +starts 48 ends 55 inverse endspan +starts 56 ends 63 endspan +starts 64 ends 79 inverse endspan +starts 80 ends 87 inverse endspan +starts 88 ends 111 inverse endspan +starts 112 ends 127 inverse endspan +starts 128 ends 135 inverse endspan +starts 136 ends 159 inverse endspan +starts 160 ends 182 endspan +starts 183 ends 191 endspan +starts 191 ends 223 inverse endspan +starts 224 ends 239 endspan +starts 240 ends 247 inverse endspan +starts 248 ends 254 inverse endspan diff --git a/16/v2/source/UTIL/UNPACK/MAKEDJ.BAT b/16/v2/source/UTIL/UNPACK/MAKEDJ.BAT new file mode 100644 index 00000000..1077e24c --- /dev/null +++ b/16/v2/source/UTIL/UNPACK/MAKEDJ.BAT @@ -0,0 +1,2 @@ +@echo off +gcc -s -Wall -Werror -m486 -O3 unpack.c -o unpack.exe diff --git a/16/v2/source/UTIL/UNPACK/TEST b/16/v2/source/UTIL/UNPACK/TEST new file mode 100644 index 00000000..7de7a6ca --- /dev/null +++ b/16/v2/source/UTIL/UNPACK/TEST @@ -0,0 +1,5 @@ +test.vrg +3 +pack.c 1 1 +pack.exe 1 1 +todo 1 1 diff --git a/16/v2/source/UTIL/UNPACK/TODO b/16/v2/source/UTIL/UNPACK/TODO new file mode 100644 index 00000000..f873c218 --- /dev/null +++ b/16/v2/source/UTIL/UNPACK/TODO @@ -0,0 +1,3 @@ +entity/entity, point makes contact w/entity, entity/bbox,b +box/bbox,and a line intersect/entity and line intersect/bbox. +sin,cos and tan() functions. diff --git a/16/v2/source/UTIL/UNPACK/UNPACK.C b/16/v2/source/UTIL/UNPACK/UNPACK.C new file mode 100644 index 00000000..d6c79bef --- /dev/null +++ b/16/v2/source/UTIL/UNPACK/UNPACK.C @@ -0,0 +1,122 @@ +/* +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. +*/ + +#include +#include + +#define byte unsigned char +// ================================= Data ==================================== + +FILE *pack; +FILE *src; +char strbuf[2048],*filebuf; +int numfiles; +char headertag[]={ 'V','R','G','P','A','C','K',0 }; + +struct filestruct +{ + unsigned char fname[84]; // pathname thingo + int size; // size of the file + int packofs; // where the file can be found in PACK + int count; // internal (engine-runtime) use + char extractable; // can UNPACK .. unpack it? + char override; // should the engine override it w/ + // local files? +}; + +struct filestruct filetbl[512]; + +// ================================= Code ==================================== + +void DecryptHeader() +{ byte lastvalue, precodebyte, *ptr; + + ptr=(byte *) filetbl; + lastvalue=*ptr; + ptr++; + + while (ptr < (byte *) (int) filetbl + (int) 5120) + { + precodebyte=*ptr; + (*ptr)-=lastvalue; + lastvalue=precodebyte; + ptr++; + } +} + +void CheckPackHeader() +{ char a; + + fread(strbuf, 1, 7, pack); + strbuf[8]=0; + if (strcmp(strbuf,headertag)) + { + printf("*error* Not a valid VRG packfile. \n"); + exit(-1); + } + fread(&a, 1, 1, pack); + if (a!=1) + { + printf("*error* Incorrect VRG packfile version. \n"); + exit(-1); + } + fread(&numfiles, 1, 4, pack); + fread(&filetbl, 100, numfiles, pack); + DecryptHeader(); +} + +void DumpFiles() +{ int i; + + printf("UNPACK v.0.1 Copyright (C)1997 BJ Eirich\n"); + for (i=0; i \n"); + exit(-1); + } + + if (!(pack=fopen(argv[1],"rb"))) + { + printf("Unable to open file %s. \n",argv[1]); + exit(-1); + } + + CheckPackHeader(); + DumpFiles(); + + fclose(pack); + + return 0; +} diff --git a/16/v2/source/UTIL/UNPACK/UNPACK.TXT b/16/v2/source/UTIL/UNPACK/UNPACK.TXT new file mode 100644 index 00000000..e75838d9 --- /dev/null +++ b/16/v2/source/UTIL/UNPACK/UNPACK.TXT @@ -0,0 +1,13 @@ +unpack.exe +documentation +by zeromus 5.8.99 +zeromus@verge-rpg.com +(be sure word wrap is on) +--- +USE: extracts files from v2 pakfile +--- +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. + +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. + +That is all. \ No newline at end of file diff --git a/16/v2/source/VCC/CLEAN.BAT b/16/v2/source/VCC/CLEAN.BAT new file mode 100644 index 00000000..c30021ab --- /dev/null +++ b/16/v2/source/VCC/CLEAN.BAT @@ -0,0 +1,4 @@ +@echo off +if exist *.obj del *.obj +if exist *.o del *.o +if exist *.err del *.err diff --git a/16/v2/source/VCC/CODE.H b/16/v2/source/VCC/CODE.H new file mode 100644 index 00000000..bbcfca2c --- /dev/null +++ b/16/v2/source/VCC/CODE.H @@ -0,0 +1,70 @@ +/* +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. +*/ + +#if !defined(__CODE_INC) +#define __CODE_INC + +// Single-byte opcode descriptors + +#define EXEC 1 +#define VAR0_ASSIGN 2 +#define VAR1_ASSIGN 3 +#define VAR2_ASSIGN 4 +#define GENERAL_IF 5 +#define ELSE 6 +#define GOTO 7 +#define FOR_LOOP0 8 +#define FOR_LOOP1 9 +#define SWITCH 10 +#define CASE 11 +#define ENDSCRIPT 255 + +// Single-byte operand descriptors + +#define OP_IMMEDIATE 1 +#define OP_VAR0 2 +#define OP_VAR1 3 +#define OP_VAR2 4 +#define OP_GROUP 5 + +// Single-byte IF handler parameters + +#define ZERO 0 +#define NONZERO 1 +#define EQUALTO 2 +#define NOTEQUAL 3 +#define GREATERTHAN 4 +#define GREATERTHANOREQUAL 5 +#define LESSTHAN 6 +#define LESSTHANOREQUAL 7 + +// Single byte assignment descriptors + +#define SET 1 +#define INCREMENT 2 +#define DECREMENT 3 +#define INCSET 4 +#define DECSET 5 + +// Operand combination descriptors +#define ADD 1 +#define SUB 2 +#define MULT 3 +#define DIV 4 +#define MOD 5 +#define OP_END 255 + +#endif // __CODE_INC diff --git a/16/v2/source/VCC/COMPILE.C b/16/v2/source/VCC/COMPILE.C new file mode 100644 index 00000000..2de7ce56 --- /dev/null +++ b/16/v2/source/VCC/COMPILE.C @@ -0,0 +1,1256 @@ +/* +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. +*/ + +// ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +// ³ The VergeC Compiler version 2.01 ³ +// ³ Copyright (C)1998 BJ Eirich (aka vecna) ³ +// ³ Code Generation module ³ +// ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + +#include +#include +#include + +#include "funclib.h" +#include "vcc.h" +#include "vccode.h" +#include "lexical.h" +#include "preproc.h" + +// ================================= Data ==================================== + +#define LETTER 1 +#define SPECIAL 3 + +// -- Function arguements type defs + +#define VOID 1 +#define INT 1 +#define CHARPTR 2 +#define STRING 3 + +unsigned char *source, *src; +unsigned char *outbuf, *code; +unsigned char inevent=0; + +typedef struct +{ + char fname[40]; + char argtype[20]; + int numargs, numlocals; + int returntype; + int syscodeofs; +} funcdecl; + +funcdecl funcs[700]; +int numfuncs=0; + +typedef struct +{ + char vname[40]; + int varstartofs; + int arraylen; +} vardecl; + +vardecl vars[500]; +int curstartofs=0; +int numvars=0; +int varidx; + +typedef struct +{ + char vname[40]; + int vsofs; + int arraylen; +} strdecl; + +strdecl str[300]; +int sstartofs=0; +int numstr=0; + +int vctype; // 0 / 1 :: map / system + +// -- local function parameters -- + +char larg[20][40]; + +// -- MAP vc stuff -- + +char *functbl[512]; +int mfuncs=0; + +// ================================= Code ==================================== + +void HandleString(); +void HandleFunction(); +void HandleUserFunction(); +void HandleFunctionType(); +void EmitOperand(); + +void EmitC (char c) +{ + if (locate && locate == (int)(code - outbuf)) + vcerr("Located."); + + *code++ = c; +} + +void EmitW (short w) +{ + short *c=(short *)code; + + if (locate && locate == (int)(code - outbuf)) + vcerr("Located."); + + *c=w; code+=2; +} + +void EmitD (int d) +{ + long *c=(long *)code; + + if (locate && locate == (int)(code - outbuf)) + vcerr("Located."); + + *c=d; code+=4; +} + +void EmitString(char *str) + { while ((*code++ = *str++)) ; } + +void HandleStringOperand() +{ + if (NextIs("\"")) + { + EmitC(s_IMMEDIATE); + GetString(); + EmitString(token); + return; + } + GetToken(); + if (token_type==IDENTIFIER && varcategory==op_STRING) + { + EmitC(s_GLOBAL); + EmitW(str[varidx].vsofs); + return; + } + if (token_type==IDENTIFIER && varcategory==op_SARRAY) + { + EmitC(s_ARRAY); + EmitW(str[varidx].vsofs); + Expect("["); + EmitOperand(); + Expect("]"); + return; + } + if (token_type==IDENTIFIER && varcategory==op_SLOCAL) + { + EmitC(s_LOCAL); + EmitC((char) varidx); + return; + } + if (TokenIs("str")) + { + EmitC(s_NUMSTR); + Expect("("); + EmitOperand(); + Expect(")"); + return; + } + if (TokenIs("left")) + { + EmitC(s_LEFT); + Expect("("); + HandleString(); + Expect(","); + EmitOperand(); + Expect(")"); + return; + } + if (TokenIs("right")) + { + EmitC(s_RIGHT); + Expect("("); + HandleString(); + Expect(","); + EmitOperand(); + Expect(")"); + return; + } + if (TokenIs("mid")) + { + EmitC(s_MID); + Expect("("); + HandleString(); + Expect(","); + EmitOperand(); + Expect(","); + EmitOperand(); + Expect(")"); + return; + } + if (TokenIs("chr")) + { + EmitC(s_CHR); + Expect("("); + EmitOperand(); + Expect(")"); + return; + } + else vcerr("Unknown string operand. "); +} + +void HandleString() +{ + while (1) + { + HandleStringOperand(); + if (NextIs("+")) + { + EmitC(s_ADD); + GetToken(); + continue; + } + else + { + EmitC(s_END); + break; + } + } +} + +void EmitOperand(); +void DoSomething(); + +void HandleOperand() +{ + GetToken(); + if (token_type==DIGIT) + { + EmitC(op_IMMEDIATE); + EmitD(token_nvalue); + return; + } + if (token_type==IDENTIFIER) + { + if (varcategory==op_UVAR) + { + EmitC(op_UVAR); + EmitD(vars[varidx].varstartofs); + return; + } + if (varcategory==op_UVARRAY) + { + EmitC(op_UVARRAY); + EmitD(vars[varidx].varstartofs); + Expect("["); + EmitOperand(); + Expect("]"); + return; + } + if (varcategory==op_LVAR) + { + EmitC(op_LVAR); + EmitC((char) varidx); + return; + } + if (varcategory==op_HVAR0) + { + EmitC(op_HVAR0); + EmitC((char) varidx); + return; + } + if (varcategory==op_HVAR1) + { + EmitC(op_HVAR1); + EmitC((char) varidx); + Expect("["); + EmitOperand(); + Expect("]"); + return; + } + } + if (token_type==FUNCTION && token_subtype==op_BFUNC) + { + if (!returntypes[funcidx]) + { + vcerr("%s() does not return a vlue.", token); + } + EmitC(op_BFUNC); + HandleFunction(); + return; + } + if (token_type==FUNCTION && token_subtype==op_UFUNC) + { + if (!funcs[funcidx].returntype) + { + vcerr("%s() does not return a vlue.", token); + } + EmitC(op_UFUNC); + HandleUserFunction(); + return; + } + vcerr("Unknown token."); +} + +void EmitOperand() +{ + while (1) // Modifier-process loop. + { + if (NextIs("(")) + { + EmitC(op_GROUP); + GetToken(); + EmitOperand(); + Expect(")"); + } + else HandleOperand(); + + if (NextIs("+")) + { + EmitC(op_ADD); + GetToken(); + continue; + } + else if (NextIs("-")) + { + EmitC(op_SUB); + GetToken(); + continue; + } + else if (NextIs("/")) + { + EmitC(op_DIV); + GetToken(); + continue; + } + else if (NextIs("*")) + { + EmitC(op_MULT); + GetToken(); + continue; + } + else if (NextIs("%")) + { + EmitC(op_MOD); + GetToken(); + continue; + } + else if (NextIs(">>")) + { + EmitC(op_SHR); + GetToken(); + continue; + } + else if (NextIs("<<")) + { + EmitC(op_SHL); + GetToken(); + continue; + } + else if (NextIs("&")) + { + EmitC(op_AND); + GetToken(); + continue; + } + else if (NextIs("|")) + { + EmitC(op_OR); + GetToken(); + continue; + } + else if (NextIs("^")) + { + EmitC(op_XOR); + GetToken(); + continue; + } + else + { + EmitC(op_END); + break; + } + } +} + +void HandleFunction() +{ + switch (funcidx) + { + case 0: vcfunc_Exit(); break; + case 1: Message(); break; + case 2: GenericFunc(3,1); break; + case 3: GenericFunc(4,1); break; + case 4: GenericFunc(5,1); break; + case 5: vc_loadimage(); break; + case 6: GenericFunc(7,5); break; + case 7: GenericFunc(8,5); break; + case 8: GenericFunc(9,0); break; + case 9: GenericFunc(10,0); break; + case 10: vc_AllocateEntity(); break; + case 11: GenericFunc(12,1); break; + case 12: vc_Map(); break; + case 13: vc_LoadFont(); break; + case 14: vc_PlayFLI(); break; + case 15: GenericFunc(16,2); break; + case 16: vc_PrintString(); break; + case 17: vc_LoadRaw(); break; + case 18: GenericFunc(19,4); break; + case 19: GenericFunc(20,1); break; + case 20: GenericFunc(21,7); break; + case 21: GenericFunc(22,0); break; + case 22: GenericFunc(23,0); break; + case 23: GenericFunc(24,1); break; + case 24: vc_EntityMove(); break; + case 25: GenericFunc(26,4); break; + case 26: GenericFunc(27,4); break; + case 27: GenericFunc(28,5); break; + case 28: GenericFunc(29,4); break; + case 29: GenericFunc(30,4); break; + case 30: GenericFunc(31,5); break; + case 31: GenericFunc(32,5); break; + case 32: vc_strlen(); break; + case 33: vc_strcmp(); break; + case 34: GenericFunc(35,0); break; + case 35: GenericFunc(36,1); break; + case 36: GenericFunc(37,1); break; + case 37: GenericFunc(38,1); break; + case 38: GenericFunc(39,3); break; + case 39: GenericFunc(40,2); break; + case 40: GenericFunc(41,1); break; + case 41: GenericFunc(42,1); break; + case 42: GenericFunc(43,3); break; + case 43: vc_HookRetrace(); break; + case 44: vc_HookTimer(); break; + case 45: GenericFunc(46,2); break; + case 46: vc_SetRString(); break; + case 47: GenericFunc(48,4); break; + case 48: GenericFunc(49,3); break; + case 49: GenericFunc(50,0); break; + case 50: vc_PartyMove(); break; + case 51: GenericFunc(52,1); break; + case 52: GenericFunc(53,1); break; + case 53: GenericFunc(54,1); break; + case 54: GenericFunc(55,0); break; + case 55: GenericFunc(56,1); break; + case 56: GenericFunc(57,1); break; + case 57: GenericFunc(58,5); break; + case 58: GenericFunc(59,5); break; + case 59: GenericFunc(60,2); break; + case 60: vc_HookKey(); break; + case 61: vc_PlayMusic(); break; + case 62: GenericFunc(63,0); break; + case 63: GenericFunc(64,5); break; + case 64: vc_OpenFile(); break; + case 65: GenericFunc(66,1); break; + case 66: vc_QuickRead(); break; + case 67: GenericFunc(68,1); break; + case 68: GenericFunc(69,1); break; + case 69: GenericFunc(70,0); break; + case 70: GenericFunc(71,0); break; + case 71: GenericFunc(72,7); break; + case 72: GenericFunc(73,15); break; + case 73: vc_CacheSound(); break; + case 74: GenericFunc(75,0); break; + case 75: GenericFunc(76,3); break; + case 76: GenericFunc(77,7); break; + case 77: GenericFunc(78,4); break; + case 78: GenericFunc(79,4); break; + case 79: vc_val(); break; + case 80: GenericFunc(81,7); break; + case 81: GenericFunc(82,5); break; + case 82: vc_Log(); break; + case 83: GenericFunc(84,2); break; + case 84: GenericFunc(85,2); break; + case 85: GenericFunc(86,3); break; + case 86: GenericFunc(87,1); break; + case 87: GenericFunc(88,1); break; + case 88: GenericFunc(89,1); break; + case 89: vc_fgetline(); break; + case 90: vc_fgettoken(); break; + case 91: vc_fwritestring(); break; + case 92: GenericFunc(93, 3); break; + case 93: vc_frename(); break; + case 94: vc_fdelete(); break; + case 95: vc_fwopen(); break; + case 96: GenericFunc(97, 1); break; + case 97: GenericFunc(98, 3); break; + case 98: GenericFunc(99, 3); break; + case 99: GenericFunc(100, 6); break; + case 100: GenericFunc(101, 0); break; + case 101: GenericFunc(102, 7); break; + case 102: GenericFunc(103, 1); break; + case 103: GenericFunc(104, 1); break; + case 104: GenericFunc(105, 1); break; + case 105: vc_asc(); break; + case 106: GenericFunc(107, 1); break; + case 107: vc_NumForScript(); break; + case 108: vc_FileSize(); break; + case 109: GenericFunc(110, 1); break; + case 110: GenericFunc(111, 0); break; + default: vcerr("Internal error. Unknown standard function."); + } +} + +void HandleUserFunction() +{ + int i, idx; + + idx=funcidx; + EmitW((short) idx); + Expect("("); + for (i=0; i")) { ot=i_GREATERTHAN; GetToken(); } + if (NextIs(">=")) { ot=i_GREATERTHANOREQUAL; GetToken(); } + if (NextIs("<")) { ot=i_LESSTHAN; GetToken(); } + if (NextIs("<=")) { ot=i_LESSTHANOREQUAL; GetToken(); } + + if (!ot) EmitC(i_NONZERO); + else if (ot==i_ZERO) EmitC(i_ZERO); + else + { + EmitC(ot); + EmitOperand(); + } +} + +void HandleIfGroup() +{ + while (1) + { + HandleIfComponent(); + + if (NextIs("&&")) + { + EmitC(i_AND); + GetToken(); + continue; + } + else if (NextIs("||")) + { + EmitC(i_OR); + GetToken(); + continue; + } + else + { + GetToken(); + if (!TokenIs(")") && !TokenIs(";")) + vcerr("Syntax error."); + EmitC(i_UNGROUP); + break; + } + } +} + +void ProcessIf() +{ + char *falseofs = 0; + char *elseofs = 0; + char *b = 0; + + EmitC(opIF); + Expect("("); + HandleIfGroup(); + + falseofs=code; + EmitD(0); // We'll come back to this and fix it up. + + if (!NextIs("{")) + { + DoSomething(); + if (NextIs("else")) + { + EmitC(opGOTO); + elseofs=code; + EmitD(0); + } + } + else + { + Expect("{"); + while (!NextIs("}")) DoSomething(); + Expect("}"); + if (NextIs("else")) + { + EmitC(opGOTO); + elseofs=code; + EmitD(0); + } + } + + b=code; // Put correct false-execution offset thingy. + code=falseofs; + EmitD((int) b - (int) outbuf); + code=b; + + if (NextIs("else")) + { + GetToken(); + if (!NextIs("{")) + { + DoSomething(); + } + else + { + Expect("{"); + while (!NextIs("}")) DoSomething(); + Expect("}"); + } + b=code; // Put correct else-execution offset thingy. + code=elseofs; + EmitD((int) b - (int) outbuf); + code=b; + } +} + +void ProcessWhile() +{ char *falseofs, *top, *b; + + top=code; + EmitC(opIF); + Expect("("); + HandleIfGroup(); + + falseofs=code; + EmitD(0); // We'll come back to this and fix it up. + + if (!NextIs("{")) + { + DoSomething(); + EmitC(opGOTO); + EmitD((int) top - (int) outbuf); + } + else + { + Expect("{"); + while (!NextIs("}")) DoSomething(); + Expect("}"); + EmitC(opGOTO); + EmitD((int) top - (int) outbuf); + } + + b=code; // Put correct false-execution offset thingy. + code=falseofs; + EmitD((int) b - (int) outbuf); + code=b; +} + +void ProcessFor() +{ char *src1, *src2, *loopstartpos, *srctmp; + + Expect("("); + while (!TokenIs(";")) + DoSomething(); // Emit initialization code. + + src1=src; // Store position of loop conditional + while (!NextIs(";")) GetToken(); GetToken(); + src2=src; // Store position of end-of-loop code + + while (!NextIs(")")) GetToken(); GetToken(); + loopstartpos=(char *) (int) code - (int) outbuf; + + if (!NextIs("{")) + { + DoSomething(); + } + else + { + Expect("{"); + while (!NextIs("}")) DoSomething(); + Expect("}"); + } + srctmp=src; + src=src2; + while (!TokenIs(")")) + DoSomething(); + src=src1; + EmitC(opIF); + HandleIfGroup(); + EmitD((int) code - (int) outbuf +9); + EmitC(opGOTO); + EmitD((int) loopstartpos); + + src=srctmp; +} + +void HandleAssign() +{ + int vc; + + vc=varcategory; + EmitC(opASSIGN); + if (vc==op_UVAR) + { + EmitC(op_UVAR); + EmitD(vars[varidx].varstartofs); + } + else if (vc==op_UVARRAY) + { + EmitC(op_UVARRAY); + EmitD(vars[varidx].varstartofs); + Expect("["); + EmitOperand(); + Expect("]"); + } + else if (vc==op_LVAR) + { + EmitC(op_LVAR); + EmitC((char) varidx); + } + else if (vc==op_HVAR0) + { + EmitC(op_HVAR0); + EmitC((char) varidx); + } + else if (vc==op_HVAR1) + { + EmitC(op_HVAR1); + EmitC((char) varidx); + Expect("["); + EmitOperand(); + Expect("]"); + } + else if (vc==op_STRING) + { + EmitC(op_STRING); + EmitW((short) str[varidx].vsofs); + } + else if (vc==op_SARRAY) + { + EmitC(op_SARRAY); + EmitW((short) str[varidx].vsofs); + Expect("["); + EmitOperand(); + Expect("]"); + } + else if (vc==op_SLOCAL) + { + EmitC(op_SLOCAL); + EmitW((short) varidx); + } + GetToken(); + if (TokenIs("++")) { EmitC(a_INC); GetToken(); return; } else + if (TokenIs("--")) { EmitC(a_DEC); GetToken(); return; } else + if (TokenIs("+=")) { EmitC(a_INCSET); } else + if (TokenIs("-=")) { EmitC(a_DECSET); } else + if (TokenIs("=")) { EmitC(a_SET); } else + vcerr("Invalid assignment operator."); + if (vc==op_STRING) HandleString(); + else if (vc==op_SARRAY) HandleString(); + else if (vc==op_SLOCAL) HandleString(); + else EmitOperand(); + GetToken(); +} + +int c=0; + +void HandleReturn() +{ + if (!vctype) + { + Expect(";"); + EmitC(opRETURN); + return; + } + if (!funcs[c].returntype) + { + Expect(";"); + EmitC(opRETURN); + return; + } + if (funcs[c].returntype==1) + { + EmitC(opSETRETVAL); + EmitOperand(); + Expect(";"); + EmitC(opRETURN); + return; + } +} + +void ProcessSwitch() +{ char *buf,*retrptr; + + EmitC(opSWITCH); + Expect("("); + EmitOperand(); + Expect(")"); + Expect("{"); + + // case .. option loop + + while (!NextIs("}")) + { + Expect("case"); + EmitC(opCASE); + EmitOperand(); + Expect(":"); + retrptr=code; + EmitD(0); + while (!NextIs("case") && !NextIs("}")) DoSomething(); + EmitC(opRETURN); + buf=code; + code=retrptr; + EmitD((int) buf - (int) outbuf); + code=buf; + } + Expect("}"); + EmitC(opRETURN); +} + +void DoSomething(void) +{ + GetToken(); + if (TokenIs("return")) { HandleReturn(); return; } + if (token_type==FUNCTION) { HandleFunctionType(); Expect(";"); return; } + if (token_type==IDENTIFIER) { HandleAssign(); return; } + if (TokenIs("if")) { ProcessIf(); return; } + if (TokenIs("while")) { ProcessWhile(); return; } + if (TokenIs("for")) { ProcessFor(); return; } + if (TokenIs("switch")) { ProcessSwitch(); return; } + vcerr("Unknown token."); +} + +void DumpSystemIdx() +{ FILE *f; + + vprint("Dumping system.idx index file."); + f=fopen("system.idx","wb"); + + fwrite(&numvars, 1, 4, f); + fwrite(&vars, sizeof vars / 500, numvars, f); + fwrite(&numfuncs, 1, 4, f); + fwrite(&funcs, sizeof funcs / 700, numfuncs, f); + fwrite(&numstr, 1, 4, f); + fwrite(&str, sizeof str / 300, numstr, f); + fclose(f); +} + +void ReadSystemIdx() +{ FILE *f; + + if (!(f=fopen("system.idx","rb"))) + err("Could not access system.idx."); + + fread(&numvars, 1, 4, f); + fread(&vars, sizeof vars / 500, numvars, f); + fread(&numfuncs, 1, 4, f); + fread(&funcs, sizeof funcs / 700, numfuncs, f); + fread(&numstr, 1, 4, f); + fread(&str, sizeof str / 300, numstr, f); + fclose(f); +} + +void DoLocalVariables(int c) +{ + int na; + + na=funcs[c].numargs; + while (NextIs("int") || NextIs("string")) + { + GetToken(); + if (TokenIs("int")) + { + funcs[c].argtype[na]=INT; + GetToken(); + memcpy(larg[na++], token, 40); + while (!NextIs(";")) + { + Expect(","); + funcs[c].argtype[na]=INT; + GetToken(); + memcpy(larg[na++], token, 40); + } + Expect(";"); + } + if (TokenIs("string")) + { + funcs[c].argtype[na]=STRING; + GetToken(); + memcpy(larg[na++], token, 40); + while (!NextIs(";")) + { + Expect(","); + funcs[c].argtype[na]=STRING; + GetToken(); + memcpy(larg[na++], token, 40); + } + Expect(";"); + } + } + funcs[c].numlocals=na; +} + +void CompileMAP(char *fname) +{ FILE *f; + int i; + + // Compiles a map-based VC. + i=strlen(fname); + memcpy(strbuf, fname, i); + strbuf[i]='.'; + strbuf[i+1]='V'; + strbuf[i+2]='C'; + strbuf[i+3]=0; + + PreProcess(strbuf); + + source=(char *) malloc(1000000); + memset(source, 0, 1000000); + outbuf=(char *) malloc(1000000); + memset(outbuf, 0, 1000000); + if (!(f=fopen("vcctemp.$$$","rb"))) + err("Could not open source file."); + fread(source, 1, 1000000, f); + fclose(f); + + ReadSystemIdx(); + + src=source; + code=outbuf; + vctype=0; + + while (*src) + { + functbl[mfuncs]=(char *) (int) code - (int) outbuf; + mfuncs++; + Expect("event"); + Expect("{"); + while (!NextIs("}")) DoSomething(); + Expect("}"); + EmitC(opRETURN); + ParseWhitespace(); + } + dprint("%s.vc (%i lines)", fname, lines); +} + +void SkipBrackets() +{ + while (!NextIs("}")) + { + if (!*src) + err("No matching bracket."); + GetToken(); + if (TokenIs("{")) SkipBrackets(); + } + GetToken(); +} + +void CheckDup() +{ + int i=0; // bitch! + + while (i +#include +#include +#include "compile.h" +#include "funclib.h" +#include "vcc.h" +#include "vccode.h" +#include "lexical.h" + +// ================================= Data ==================================== + +// ================================= Code ==================================== + +void vcfunc_Exit() +{ + EmitC(1); + Expect("("); + HandleString(); + Expect(")"); +} + +void Message() +{ + EmitC(2); + Expect("("); + HandleString(); + Expect(","); + EmitOperand(); + Expect(")"); +} + +void vc_loadimage() +{ + EmitC(6); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_AllocateEntity() +{ + EmitC(11); + Expect("("); + EmitOperand(); + Expect(","); + EmitOperand(); + Expect(","); + HandleString(); + Expect(")"); +} + +void vc_Map() +{ + EmitC(13); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_LoadFont() +{ + EmitC(14); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_PlayFLI() +{ + EmitC(15); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_PrintString() +{ + EmitC(17); + Expect("("); + EmitOperand(); + Expect(","); + HandleString(); + Expect(")"); +} + +void vc_LoadRaw() +{ + EmitC(18); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_EntityMove() +{ + EmitC(25); + Expect("("); + EmitOperand(); + Expect(","); + HandleString(); + Expect(")"); +} + +void vc_strlen() +{ + EmitC(33); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_strcmp() +{ + EmitC(34); + Expect("("); + HandleString(); + Expect(","); + HandleString(); + Expect(")"); +} + +void vc_SetRString() +{ + EmitC(47); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_PartyMove() +{ + EmitC(51); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_PlayMusic() +{ + EmitC(62); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_OpenFile() +{ + EmitC(65); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_HookRetrace() +{ + char *na; + + EmitC(44); + Expect("("); + na=src; + GetToken(); + if (token_subtype == op_UFUNC) + { + EmitC(2); + EmitD(funcidx); + } + else + { + src=na; + EmitC(1); + EmitOperand(); + } + Expect(")"); +} + +void vc_HookTimer() +{ + char *na; + + EmitC(45); + Expect("("); + na=src; + GetToken(); + if (token_subtype == op_UFUNC) + { + EmitC(2); + EmitD(funcidx); + } + else + { + src=na; + EmitC(1); + EmitOperand(); + } + Expect(")"); +} + +void vc_HookKey() +{ + char *na; + + EmitC(61); + Expect("("); + EmitOperand(); + Expect(","); + na=src; + GetToken(); + if (token_subtype == op_UFUNC) + { + EmitC(2); + EmitD(funcidx); + } + else + { + src=na; + EmitC(1); + EmitOperand(); + } + Expect(")"); +} + +void vc_QuickRead() +{ + EmitC(67); + Expect("("); + HandleString(); + Expect(","); + GetToken(); + if (varcategory == op_STRING) + { + EmitC(op_STRING); + EmitW(str[varidx].vsofs); + Expect(","); + EmitOperand(); + Expect(")"); + return; + } + if (varcategory == op_SARRAY) + { + EmitC(op_SARRAY); + EmitW(str[varidx].vsofs); + Expect("["); + EmitOperand(); + Expect("]"); + Expect(","); + EmitOperand(); + Expect(")"); + return; + } + vcerr("String variable expected."); +} + +void vc_CacheSound() +{ + EmitC(74); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_val() +{ + EmitC(80); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_Log() +{ + EmitC(83); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_fgetline() +{ + EmitC(90); + Expect("("); + GetToken(); + if (varcategory == op_STRING) + { + EmitC(op_STRING); + EmitW(str[varidx].vsofs); + Expect(","); + EmitOperand(); + Expect(")"); + return; + } + if (varcategory == op_SARRAY) + { + EmitC(op_SARRAY); + EmitW(str[varidx].vsofs); + Expect("["); + EmitOperand(); + Expect("]"); + Expect(","); + EmitOperand(); + Expect(")"); + return; + } + vcerr("String variable expected."); +} + +void vc_fgettoken() +{ + EmitC(91); + Expect("("); + GetToken(); + if (varcategory == op_STRING) + { + EmitC(op_STRING); + EmitW(str[varidx].vsofs); + Expect(","); + EmitOperand(); + Expect(")"); + return; + } + if (varcategory == op_SARRAY) + { + EmitC(op_SARRAY); + EmitW(str[varidx].vsofs); + Expect("["); + EmitOperand(); + Expect("]"); + Expect(","); + EmitOperand(); + Expect(")"); + return; + } + vcerr("String variable expected."); +} + +void vc_fwritestring() +{ + EmitC(92); + Expect("("); + HandleString(); + Expect(","); + EmitOperand(); + Expect(")"); +} + +void vc_frename() +{ + EmitC(94); + Expect("("); + HandleString(); + Expect(","); + HandleString(); + Expect(")"); +} + +void vc_fdelete() +{ + EmitC(95); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_fwopen() +{ + EmitC(96); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_asc() +{ + EmitC(106); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_NumForScript() +{ + EmitC(108); + Expect("("); + GetToken(); + if (token_subtype == op_UFUNC) + EmitD(funcidx); + else vcerr("system script expected."); + Expect(")"); +} + +void vc_FileSize() +{ + EmitC(109); + Expect("("); + HandleString(); + Expect(")"); +} + +void GenericFunc(unsigned char idcode, int numargs) +{ char i; + + EmitC(idcode); + if (!numargs) + { + Expect("("); + Expect(")"); + return; + } + if (numargs==1) + { + Expect("("); + EmitOperand(); + Expect(")"); + return; + } + Expect("("); + for (i=1; i +// + ConvHexToDec() was severely screwed (would not return correct values at +// *all*; own fault)--fixed +// +// + fixed some problems with tick mark parsing. didn't like certain chars. +// +// + fixed floating point exception crash in ConvHexToDec(), which occured +// when using very large hex numbers (i think; like $ffffffff). was due to +// use of pow() +// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + +#include +#include +#include +#include +#include "compile.h" +#include "vcc.h" +#include "vccode.h" + +// ================================= Data ==================================== + +// Character types + +#define LETTER 1 +#define DIGIT 2 +#define SPECIAL 3 + +// --------------- + +char token[2000]; // Token buffer +int token_nvalue; // int value of token if it's type DIGIT +char token_type; // type of current token. +char token_subtype; // This is just crap. +unsigned char chr_table[256]; // Character type table. + +int lines, tlines; // current line number being processed in +char *source_file; // the current source file + +// ---------------- + +char *hardfuncs[]= +{ + // A + "exit", "message", "malloc", + "free", "pow", "loadimage", + "copysprite", "tcopysprite", "render", + "showpage", "entityspawn", "setplayer", + "map", "loadfont", "playfli", + + // B + "gotoxy", "printstring", "loadraw", + "settile", "allowconsole", "scalesprite", + "processentities", "updatecontrols", "unpress", + "entitymove", "hline", "vline", + "line", "circle", "circlefill", // 30 + + // C + "rect", "rectfill", "strlen", + "strcmp", "cd_stop", "cd_play", + "fontwidth", "fontheight", "setpixel", + "getpixel", "entityonscreen", "random", + "gettile", "hookretrace", "hooktimer", + + // D + "setresolution", "setrstring", "setcliprect", + "setrenderdest", "restorerendersettings","partymove", + "sin", "cos", "tan", + "readmouse", "setclip", "setlucent", + "wrapblit", "twrapblit", "setmousepos", // 60 + + // E + "hookkey", "playmusic", "stopmusic", + "palettemorph", "fopen", "fclose", + "quickread", "addfollower", "killfollower", + "killallfollowers", "resetfollowers", "flatpoly", + "tmappoly", "cachesound", "freeallsounds", + + // F + "playsound", "rotscale", "mapline", + "tmapline", "val", "tscalesprite", + "grabregion", "log", "fseekline", + "fseekpos", "fread", "fgetbyte", + "fgetword", "fgetquad", "fgetline", // 90 + + // G + "fgettoken", "fwritestring", "fwrite", + "frename", "fdelete", "fwopen", + "fwclose", "memcpy", "memset", + "silhouette", "initmosaictable", "mosaic", + "writevars", "readvars", "callevent", // 105 + + // H + "asc", "callscript", "numforscript", + "filesize", "ftell", "checkcorrupt" + }; + +char returntypes[]= +{ + // A + 0, 0, 1, + 0, 1, 1, + 0, 0, 0, + 0, 1, 0, + 0, 1, 0, + + // B + 0, 0, 1, + 0, 0, 0, + 0, 0, 0, + 0, 0, 0, + 0, 0, 0, + + // C + 0, 0, 1, + 1, 0, 0, + 1, 1, 0, + 1, 1, 1, + 1, 0, 0, + + // D + 0, 0, 0, + 0, 0, 0, + 1, 1, 1, + 0, 0, 0, + 0, 0, 0, + + // E + 0, 0, 0, + 0, 1, 0, + 0, 0, 0, + 0, 0, 0, + 0, 1, 0, + + // F + 0, 0, 0, + 0, 1, 0, + 0, 0, 0, + 0, 0, 1, + 1, 1, 0, + + // G + 0, 0, 0, + 0, 0, 1, + 0, 0, 0, + 0, 1, 0, + 0, 0, 0, + + // H + 1, 0, 1, + 1, 1, 0 +}; + +char *hardvar0[]= +{ + "xwin", "ywin", "cameratracking", + "timer", "up", "down", + "left", "right", "b1", + "b2", "b3", "b4", + "screenx", "screeny", "player", // 15 + + "numentsonscreen", "tracker", "mx", + "my", "mb", "vctrace", + "image_width", "image_height", "music_volume", // 24 + "vsp", "lastent", "last_pressed" +}; + +char *hardvar1[]= +{ + "screen", "entity.x", "entity.y", + "entity.tx", "entity.ty", "entity.facing", + "entity.moving", "entity.specframe", "entity.speed", + "entity.movecode", "entsonscreen", "key", + "layer.hline", "byte", "word", // 15 + + "quad", "pal", "sbyte", + "sword", "squad" +}; + +int funcidx = 0; +int varcategory = 0; + +int numhardfuncs = 111; +int numhardvar0 = 27; +int numhardvar1 = 20; + +// ================================= Code ==================================== + +int streq(char *a, char *b) +{ + while (*a) + { + if (*a++ != *b++) + return 0; + } + return (*b==0); +} + +char TokenIs(char *str) + { return streq(str,token); } + +void ParseWhitespace(void) +{ + while (1) + { + while (*src<=' ' && *src>2) + if (!*src++) + return; + + if (src[0]=='/' && src[1]=='/') + { + while (*src && (*src != '\n')) + src++; + continue; + } + + if (src[0]=='/' && src[1]=='*') + { + while (!(src[0]=='*' && src[1]=='/')) + { + src++; + if (!*src) + return; + if (*src == 1) + { + src++; + source_file = src; + while (*src++); + tlines++; + continue; + } + if (*src==2) + { + src++; + lines = (int) *(int *)src; + src += 4; + continue; + } + } + src+=2; + continue; + } + + if (*src == 1) + { + src++; + source_file = src; + while (*src++); + continue; + } + if (*src==2) + { + src++; + lines = (int) *(int *)src; + src += 4; + tlines++; + continue; + } + break; + } +} + +int GetStringIdx(char i) +{ + int j, k=0; + + for (j=0; j1) varcategory=op_UVARRAY; + } + i=0; + while (i1) varcategory=op_SARRAY; + } +} + +void GetIdentifier(void) +{ + int i; + + i=0; + while ((chr_table[*src] == LETTER) || (chr_table[*src] == DIGIT)) + token[i++] = *src++; + token[i]=0; + strlwr(token); + CheckLibFunc(); +} + +void ConvHexToDec() +{ + static const char *const hextbl="0123456789abcdef\0"; + static int pow_lut[]={1,16,256,4096,65536,1048576,16777216,268435456}; + int i=0, pos=0, z=0; + unsigned int j=0; + + if (strlen(token)>9) + vcerr("Hex number exceeds 8 digit maximum."); + + strlwr(token); + i=strlen(token)-1; + token_nvalue=0; + for (pos=0; i>0; pos++,i--) + { + z=token[i]; + for (j=0; j<16; j++) + if (hextbl[j]==z) break; + if (j>=16) + vcerr("Invalid hex number."); + token_nvalue += (j * pow_lut[pos]); + } +} + +void DoTickMarks() +{ + token_nvalue=token[1]; +} + +void GetNumber() +{ + int i; + + if ('\'' == *src) + { + token[0]=*src++; + token[1]=*src++; + token[2]=*src++; + token[3]=0; + } + else + { + i=0; + while (chr_table[*src] != SPECIAL) + token[i++]=*src++; + token[i]=0; + } + if (token[0]=='$') ConvHexToDec(); + else if (token[0]=='\'') DoTickMarks(); + else token_nvalue=atoi(token); +} + +void GetPunctuation() +{ char c; + + c=*src; + switch (c) + { + case '(': token[0]='('; token[1]=0; src++; break; + case ')': token[0]=')'; token[1]=0; src++; break; + case '{': token[0]='{'; token[1]=0; src++; break; + case '}': token[0]='}'; token[1]=0; src++; break; + case '[': token[0]='['; token[1]=0; src++; break; + case ']': token[0]=']'; token[1]=0; src++; break; + case ',': token[0]=','; token[1]=0; src++; break; + case ':': token[0]=':'; token[1]=0; src++; break; + case ';': token[0]=';'; token[1]=0; src++; break; + case '/': token[0]='/'; token[1]=0; src++; break; + case '*': token[0]='*'; token[1]=0; src++; break; + case '^': token[0]='^'; token[1]=0; src++; break; + case '%': token[0]='%'; token[1]=0; src++; break; + case '\"': token[0]='\"'; token[1]=0; src++; break; + case '+' : token[0]='+'; + src++; + if (*src=='+') + { token[1]='+'; + src++; } + else if (*src=='=') + { token[1]='='; + src++; } + else token[1]=0; + token[2]=0; + break; + case '-' : token[0]='-'; + src++; + if (*src=='-') + { token[1]='-'; + src++; } + else if (*src=='=') + { token[1]='='; + src++; } + else token[1]=0; + token[2]=0; + break; + case '>' : token[0]='>'; + src++; + if (*src=='=') + { token[1]='='; + token[2]=0; + src++; break; } + if (*src=='>') + { token[1]='>'; + token[2]=0; + src++; break; } + token[1]=0; + break; + case '<': token[0]='<'; + src++; + if (*src=='=') + { token[1]='='; + token[2] = 0; + src++; break; } + if (*src=='<') + { token[1]='<'; + token[2] = 0; + src++; break; } + token[1]=0; + break; + case '!': token[0]='!'; + src++; + if (*src=='=') + { token[1]='='; + token[2]=0; + src++; break; } + token[1]=0; + break; + case '=': token[0]='='; + src++; + if (*src=='=') + { token[1]=0; + src++; } + else token[1]=0; + break; + case '&': token[0]='&'; + src++; + if (*src=='&') + { token[1]='&'; + token[2]=0; + src++; break; } + token[1]=0; + break; + case '|': token[0]='|'; + src++; + if (*src=='|') + { token[1]='|'; + token[2]=0; + src++; break; } + token[1]=0; + break; + default: src++; // This should be an error. + } +} + +void GetString(void) +{ + int i; + + // Expects a "quoted" string. Places the contents of the string in + // token[] but does not include the quotes. + + Expect("\""); + i=0; + while (*src!='\"') + { + token[i++]=*src++; + if (i>250) + vcerr("String exceeds 250 character maximum."); + } + src++; + token[i]=0; +} + +void GetToken(void) +{ + int i; + + // Simply reads in the next statement and places it in the + // token buffer. + + ParseWhitespace(); + i=0; + + switch (chr_table[*src]) + { + case LETTER: { token_type = IDENTIFIER; GetIdentifier(); break; } + case DIGIT: { token_type = DIGIT; GetNumber(); break; } + case SPECIAL: { token_type = CONTROL; GetPunctuation(); break; } + } + + if (!*src && inevent) + err("Unexpected end of file"); +} + +void Expect(char *str) +{ + GetToken(); + if (TokenIs(str)) return; + vcerr("error: %s expected, %s got", str, token); +} + +int ExpectNumber() +{ + GetToken(); + if (token_type!=DIGIT) err("error: Numerical value expected"); + return token_nvalue; +} + +void InitCompileSystem() +{ int i; + + vprint("Building chr_table[]."); + for (i=0; i<256; i++) chr_table[i]=SPECIAL; + for (i='0'; i<='9'; i++) chr_table[i]=DIGIT; + for (i='A'; i<='Z'; i++) chr_table[i]=LETTER; + for (i='a'; i<='z'; i++) chr_table[i]=LETTER; + + chr_table[10]=0; + chr_table[13]=0; + chr_table[' ']=0; + chr_table['_']=LETTER; + chr_table['.']=LETTER; + chr_table['$']=DIGIT; + chr_table[39]=DIGIT; +} + +char lasttoken[2048]; + +int NextIs(char *str) +{ char *ptr,tt,tst; + int i,nv; + + ptr=src; + tt=token_type; + tst=token_subtype; + nv=token_nvalue; + memcpy(lasttoken, token, 2048); + GetToken(); + src=ptr; + token_nvalue=nv; + tst=token_subtype; + tt=token_type; + //if (!strcmp(str,token)) i=1; else i=0; + i=streq(str,token); + memcpy(token, lasttoken, 2048); + return i; +} diff --git a/16/v2/source/VCC/LEXICAL.H b/16/v2/source/VCC/LEXICAL.H new file mode 100644 index 00000000..7f9d02bb --- /dev/null +++ b/16/v2/source/VCC/LEXICAL.H @@ -0,0 +1,47 @@ +/* +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. +*/ + +#if !defined(__LEXICAL_INC) +#define __LEXICAL_INC + +extern void ParseWhitespace(); +extern void GetNumber(); +extern void GetToken(); +extern void InitCompileSystem(); +extern int NextIs(char *str); + +extern void GetString(void); + +extern char token[2000]; // Token buffer +extern unsigned int token_nvalue; // int value of token if it's type DIGIT +extern char token_type; // type of current token. +extern char token_subtype; // This is just crap. +extern unsigned char chr_table[256]; // Character type table. +extern char returntypes[]; +extern int lines, tlines; +extern char *source_file; + +extern char TokenIs(char *str); +extern void Expect(char *str); + +extern int numhardfuncs, funcidx; +extern int varcategory, numhardvar0; +extern int numhardvar1; +extern char *hardfuncs[]; +extern char *hardvar0[]; +extern char *hardvar1[]; + +#endif // __LEXICAL_INC diff --git a/16/v2/source/VCC/MAKEDJ.BAT b/16/v2/source/VCC/MAKEDJ.BAT new file mode 100644 index 00000000..1804dc67 --- /dev/null +++ b/16/v2/source/VCC/MAKEDJ.BAT @@ -0,0 +1,7 @@ +@echo off +if exist vcc.exe del vcc.exe +gcc -s -Wall -Werror -m486 -O3 vcc.c preproc.c lexical.c compile.c funclib.c -o dj\vcc.exe +rem gcc -Wall -Werror -pg vcc.c preproc.c lexical.c compile.c funclib.c -o dj\vcc +if not exist dj\vcc.exe goto end +if exist ..\djp.exe djp dj\vcc.exe +:end diff --git a/16/v2/source/VCC/PREPROC.C b/16/v2/source/VCC/PREPROC.C new file mode 100644 index 00000000..f930e857 --- /dev/null +++ b/16/v2/source/VCC/PREPROC.C @@ -0,0 +1,799 @@ +/* +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. +*/ + +// ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +// ³ The VergeC Compiler version 2.01 ³ +// ³ Copyright (C)1998 BJ Eirich (aka vecna) ³ +// ³ Pre Processor module ³ +// ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + +// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +// CHANGELOG: +// +// + fixed incorrect file markers and last character omission. +// + one more incorrect file marker fix; was not restoring correctly after +// #included files. +// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + +#ifdef __WATCOMC__ +#include +#endif + +#include +#include +#include +#include +#include + +#include "vcc.h" +#include "lexical.h" + +int pp_dump; +int pp_nomark; +static int pp_tempct = 0; + +typedef struct + { + char *sym; + int sym_len; + + char *resolve; + int resolve_len; + + } pp_def; + +typedef struct + { + char *filename; + char *data; + + } pp_include; + +void Process(char *filename); +char *pp_token(char *p); + +//////////////////////////////////////////////////////////////////////////// +// DATA //////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// + +pp_def *pp_defarr = NULL; + +int pp_num_defs = 0; +int pp_defs_allocated = 0; +int PP_DEFS_BLOCK = 25; + +pp_include pp_incarr[100]; +//pp_include *pp_icur = NULL; // get rid of this +char *cur_filename=0; +char *last_filename=0; + +int pp_num_includes = 0; + +int pp_line = 0; +int pp_total_lines = 0; + +const int EOF_CHAR = 0x00; + +char pp_chr_table[256]; + +enum + { + PP_ERROR, + PP_WHITE, + PP_PUNC, + PP_DIGIT, + PP_LETTER, + PP_QUOTE, + PP_DIRECTIVE, + PP_NEWLINE, + PP_EOF + }; + +FILE *pp_out = NULL; + +char pp_tok[1024]; +int pp_toktype = 0; + +int pp_last_delim = 1; + +//////////////////////////////////////////////////////////////////////////// +// CODE //////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// + +int logging=1; +void log(char *str) +{ + if (logging) + { + FILE *fp = fopen("error.log", "a"); + fprintf(fp, str); + fflush(fp); + fclose(fp); + } +} + +void init_pp_chr_table() +{ + int x; + + memset(pp_chr_table, PP_ERROR, 256); + + pp_chr_table[EOF_CHAR] = PP_EOF; + + for (x='A'; x<='Z'; x++) pp_chr_table[x] = PP_LETTER; + for (x='a'; x<='z'; x++) pp_chr_table[x] = PP_LETTER; + pp_chr_table['_'] = PP_LETTER; + pp_chr_table['.'] = PP_LETTER; + + for (x='0'; x<='9'; x++) pp_chr_table[x] = PP_DIGIT; + pp_chr_table['$'] = PP_DIGIT; + pp_chr_table['\''] = PP_DIGIT; + + pp_chr_table['+'] = pp_chr_table['-'] = PP_PUNC; + pp_chr_table['*'] = pp_chr_table['/'] = PP_PUNC; + pp_chr_table['%'] = PP_PUNC; + pp_chr_table['|'] = pp_chr_table['&'] = PP_PUNC; + pp_chr_table['='] = pp_chr_table['^'] = PP_PUNC; + pp_chr_table[','] = PP_PUNC; + pp_chr_table['<'] = pp_chr_table['>'] = PP_PUNC; + pp_chr_table['('] = pp_chr_table[')'] = PP_PUNC; + pp_chr_table['['] = pp_chr_table[']'] = PP_PUNC; + pp_chr_table['{'] = pp_chr_table['}'] = PP_PUNC; + pp_chr_table[':'] = pp_chr_table[';'] = PP_PUNC; + pp_chr_table['\\'] = pp_chr_table['!'] = PP_PUNC; + + pp_chr_table[' '] = pp_chr_table['\t'] = PP_WHITE; + pp_chr_table['\r'] = PP_WHITE; + + pp_chr_table['\n'] = PP_NEWLINE; + + pp_chr_table['\"'] = PP_QUOTE; + + pp_chr_table['#'] = PP_DIRECTIVE; +} + +void pp_line_marker() +{ + if (pp_nomark) return; + + fputc(2, pp_out); + fwrite(&pp_line, 1, 4, pp_out); +} + +void pp_file_marker() +{ + if (pp_nomark) return; + + fputc(1, pp_out); + fwrite(cur_filename, 1, strlen(cur_filename)+1, pp_out); +} + +void pp_error(const char *error, ...) +{ + va_list lst; + char string[1024]; + + va_start (lst, error); + vsprintf (string, error, lst); + va_end (lst); + + printf ("*preproc error* "); + err (string); +} + +void pp_line_error(const char *error, ...) +{ + va_list lst; + char string[1024]; + + va_start (lst, error); + vsprintf (string, error, lst); + va_end (lst); + + printf ("%s(%d) ", cur_filename, pp_line); + pp_error (string); +} + +int pp_is_punc(int c) + { return (PP_PUNC == pp_chr_table[c]); } + +int pp_is_letter(int c) + { return (PP_LETTER == pp_chr_table[c]); } + +int pp_is_digit(int c) + { return (PP_DIGIT == pp_chr_table[c]); } + +int pp_is_ident(int c) + { return (pp_is_letter(c) || pp_is_digit(c)); } + +int pp_is_white(int c) + { return (PP_WHITE == pp_chr_table[c]); } + +int pp_is_directive(int c) + { return (PP_DIRECTIVE == pp_chr_table[c]); } + +int pp_is_eof(int c) + { return (PP_EOF == pp_chr_table[c]); } + +pp_def *pp_def_add(char *sym, char *resolve) +{ + pp_def *pp = NULL; + pp_def *p = NULL; + + if (!(pp_defs_allocated % PP_DEFS_BLOCK)) + { + pp_defs_allocated += PP_DEFS_BLOCK; + + p = (pp_def *)realloc( + pp_defarr, pp_defs_allocated * sizeof(pp_def)); + if (!p) pp_error("unable to grow #define list"); + + pp_defarr = p; + } + + pp = &pp_defarr[pp_num_defs]; + ++pp_num_defs; + + pp->sym = (char *)malloc(strlen(sym) +1); + if (!pp->sym) + pp_error("memory exhausted"); + strcpy(pp->sym, sym); + pp->sym_len = strlen(sym); + + pp->resolve = (char *)malloc(strlen(resolve) +1); + if (!pp->resolve) + pp_error("memory exhausted"); + strcpy(pp->resolve, resolve); + pp->resolve_len = strlen(resolve); + + return pp; +} + +pp_include *pp_include_add(char *filename) +{ + FILE *in = NULL; + pp_include *pp = NULL; + int z = 0; + + if (pp_num_includes) + { + int i; + for (i=0; idata = (char *)malloc((z +2) * sizeof(char)); + if (!pp->data) pp_error("memory exhausted"); + fread(pp->data, 1, z, in); + fclose(in); + + pp->data[z++] = 32; // + pp->data[z] = EOF_CHAR; + + pp->filename = (char *)malloc(strlen(filename) +1); + if (!pp->filename) pp_error("memory exhausted"); + strcpy(pp->filename, filename); + cur_filename=pp->filename; + + return pp; +} + +char *pp_skip_c_comment(char *p) +{ + p += 2; + while (*p && ('*' != *p || '/' != p[1])) + { + if ('\n' == *p) + { + ++pp_line; + pp_line_marker(); + } + if ('/' == *p && '*' == p[1]) + p = pp_skip_c_comment(p); + else ++p; + } + if (*p) p += 2; + + return p; +} + +char *pp_skip_cpp_comment(char *p) +{ + p += 2; + while (*p && '\n' != *p) + ++p; + if (*p) + { + ++p; + + ++pp_line; + pp_line_marker(); + } + + return p; +} + +char *pp_skipwhite(char *p) +{ + for (;;) + { + while (*p && PP_WHITE == pp_chr_table[(int) *p]) + ++p; + + if ('\n' == *p) + { + ++p; + + ++pp_line; + pp_line_marker(); + continue; + } + + // skip comments + if ('/' == *p) + { + switch (p[1]) + { + case '/': p = pp_skip_cpp_comment(p); continue; + case '*': p = pp_skip_c_comment(p); continue; + } + } + + break; + } + + return p; +} + +char *pp_token_punc(char *p) +{ + char *s = pp_tok; + + do { + *s++ = *p++; + } while (*p && pp_is_punc(*p)); + *s = 0; + + return p; +} + +/* +int is_hex(int c) +{ + return ( + (c >= '0' && c <= '9') + || (c >= 'A' && c <= 'F') + || (c >= 'a' && c <= 'f')); +} +*/ + +char *pp_token_digit(char *p) +{ + char *s = pp_tok; + + if ('\'' == *p) + { + *s++ = *p++; + if (!*p) return NULL; + *s++ = *p++; + if (!*p) return NULL; + *s++ = *p++; + if (!*p) return NULL; + *s = 0; + } + else + { + do { + *s++ = *p++; + } while (*p && pp_is_digit(*p)); + if (*p) *s = 0; + } + + return p; +} + +char *pp_token_letter(char *p) +{ + char *s = pp_tok; + + do { + *s++ = *p++; + } while (*p && pp_is_ident(*p)); + if (*p) *s = 0; + + return p; +} + +char *pp_token_directive(char *p) +{ + char *s = pp_tok; + + ++p; // skip # + + // directive name + do { + *s++ = *p++; + } while (pp_is_ident(*p)); + *s = 0; + + // #include + if (!strcmp(pp_tok, "include")) + { + // boogly boogly boogly! + int l = 0; + char *e = NULL; + + //printf("#include detected \n"); + + // any whitespace after 'include' + p = pp_skipwhite(p); + + // skip, but don't expect, a " + if ('\"' == *p) ++p; + + // grab the filename + e = pp_tok; + while (*p && '\"' != *p) + *e++ = *p++; + // if we didn't hit eof...? + if (*p) + { + // zero term filename + *e = 0; + // skip closing " + ++p; + + last_filename=cur_filename; // + l = pp_line; // save + Process(pp_tok); + pp_line = l; // restore + cur_filename=last_filename; // + // reset file marker + pp_file_marker(); + + // disregard rest of line + while (*p && '\n' != *p) + ++p; + // if we didn't hit eof...? + if (*p) + { + // skip newline char + ++p; + + // update line + ++pp_line; + pp_line_marker(); + + // dump null token... writes nothing i think... + pp_tok[0]='\0'; + } + //else pp_error("screw you!"); + } + } + // #define + else if (!strcmp(pp_tok, "define")) + { + char *e = NULL; + char sym[256]; + char resolve[1024]; + + // find start of symbol + while (' ' == *p || '\t' == *p) + ++p; + + // parse symbol + e = sym; + while (pp_is_ident(*p)) + { *e++ = *p++; } + *e = 0; + + // check for duplicate #defines + if (pp_num_defs) + { + int i; + int z = strlen(sym); + for (i=0; i", *p, *p); + } + + return p; +} + +void Process(char *filename) +{ + char *s = NULL; + pp_include *ppi = NULL; + + // starts fresh for each #include file + pp_line = 1; + //pp_line_marker(); // hmm... did this kill the wat ver? i forget.. + + // push file + ppi = pp_include_add(filename); + s = ppi->data; + + pp_file_marker(); + + pp_last_delim = 1; + s = pp_token(s); + + // loop until we hit an EOF token + while (*s && PP_EOF != pp_toktype) + { + // for compactor; this is absolutely required for the parsing to + // work correctly for hex numbers + if (PP_LETTER == pp_toktype || PP_DIGIT == pp_toktype) + { + if (!pp_last_delim) + fputc(' ', pp_out); + } + + if (pp_num_defs) + { + // #define replacement + if (PP_LETTER == pp_toktype) + { + pp_def *ppd = NULL; + int pp_token_len = strlen(pp_tok); + int i = 0; + + for (i=0; isym_len == pp_token_len) + { + // lengths match, compare bytes + if (!stricmp(pp_tok, ppd->sym)) + { + // match! overwrite token with resolve + memcpy(pp_tok, ppd->resolve, strlen(ppd->resolve)+1); + break; + } + } + } + } + } + + // write whatever we got + fwrite(pp_tok, 1, strlen(pp_tok), pp_out); + + pp_last_delim = (PP_LETTER != pp_toktype); + s = pp_token(s); + } + + // pop file + free(ppi->data); + free(ppi->filename); + --pp_num_includes; + //pp_icur = &pp_incarr[pp_num_includes]; // oops! :-) + + pp_total_lines += pp_line; +} + +void pp_dump_output() +{ + char strx[1024]; + + sprintf(strx, "copy vcctemp.$$$ vcc%i.$$$", pp_tempct); + ++pp_tempct; + + system(strx); +} + +void PreProcess(char *filename) +{ + pp_num_includes = 0; + init_pp_chr_table(); + + pp_out = fopen("VCCTEMP.$$$", "wb"); + if (!pp_out) pp_error("unable to open VCCTEMP.$$$"); + + Process(filename); + + fclose(pp_out); + + // dump preproc output? + if (0 != pp_dump) + pp_dump_output(); +} diff --git a/16/v2/source/VCC/PREPROC.H b/16/v2/source/VCC/PREPROC.H new file mode 100644 index 00000000..e5f8784d --- /dev/null +++ b/16/v2/source/VCC/PREPROC.H @@ -0,0 +1,23 @@ +/* +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. +*/ + +#if !defined(__PREPROC_INC) +#define __PREPROC_INC + +extern void PreProcess(char *fname); +extern void Process(char *fname); + +#endif // __PREPROC_INC diff --git a/16/v2/source/VCC/VCC.C b/16/v2/source/VCC/VCC.C new file mode 100644 index 00000000..0a8a5c33 --- /dev/null +++ b/16/v2/source/VCC/VCC.C @@ -0,0 +1,342 @@ +/* +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. +*/ + +// ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +// ³ The VergeC Compiler ³ +// ³ Copyright (C)1998 BJ Eirich (aka vecna) ³ +// ³ Main module ³ +// ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + +#define VERSION "2.01c" + +#ifdef __DJGPP__ +#define BUILD_TAG "DJGPP V2\0" +#endif + +#ifdef __WATCOMC__ +#define BUILD_TAG "Watcom 11.0\0" +#endif + +#include +#include +#include +#include +#include + +#include "compile.h" +#include "lexical.h" + +extern int pp_dump; +extern int pp_nomark; + +// ================================= Data ==================================== + +char outmode, cmode; +char fname[80]; +char quiet, verbose; +char *strbuf; +int locate=0; + +// -- locals -- + +//FILE *f; +//int i; +//struct find_t *ft; + +// ================================= Code ==================================== + +void dprint(char *message, ...) +{ + va_list lst; + char string[1024]; + + if (quiet) return; + + // compose message + va_start (lst, message); + vsprintf (string, message, lst); + va_end (lst); + + printf ("%s \n", string); +} + +void vprint(char *message, ...) +{ + va_list lst; + char string[1024]; + + if (!verbose) return; + + // compose message + va_start (lst, message); + vsprintf (string, message, lst); + va_end (lst); + + printf ("%s \n", string); +} + +void err(char *message, ...) +{ + va_list lst; + char string[1024]; + + // compose message + va_start (lst, message); + vsprintf (string, message, lst); + va_end (lst); + + if (quiet) + { + FILE *efile = fopen("ERROR.TXT", "w"); + + fprintf(efile, "%s \n", string); + fclose(efile); + } + else + { + printf("%s \n", string); + } + + remove("vcctemp.$$$"); + exit(-1); +} + +void vcerr(char *message, ...) +{ + va_list lst; + char string[1024]; + + // compose message + va_start (lst, message); + vsprintf (string, message, lst); + va_end (lst); + + err("%s(%d) %s", source_file, lines, string); +} + +void vcc_compile_mode_map(char *filename) +{ + FILE *o=0; + FILE *f=0; + char *x=0; + int z=0; + + x = filename; + while ('.' != *x) ++x; + *x = 0; + + CompileMAP(filename); + + sprintf(strbuf, "%s.map", filename); + f = fopen(strbuf, "rb+"); + if (!f) + err("unable to open %s.", strbuf); + + fread(strbuf, 1, 6, f); + fread(&z, 1, 4, f); + fseek(f, 0, 0); + + o = fopen("outtemp.$$$", "wb"); + if (!o) + err("unable to open outtemp.$$$"); + x = (char *) malloc(z); + fread(x, 1, z, f); + fwrite(x, 1, z, o); + fclose(f); + + fwrite(&mfuncs, 1, 4, o); + fwrite(&functbl, 4, mfuncs, o); + mfuncs = (int) code - (int) outbuf; + fwrite(&mfuncs, 1, 4, o); + fwrite(outbuf, 1, code-outbuf, o); + fclose(o); + + // remove existing map file + sprintf(strbuf,"%s.map", filename); remove(strbuf); + // rename temp file to map file name + rename("outtemp.$$$", strbuf); +} + +void vcc_compile_mode_system() +{ + FILE *dump=0; + + CompileSystem(); + + dump = fopen("system.vcs", "wb"); + if (!dump) err("unable to open system.vcs"); + + fwrite(&numfuncs, 1, 4, dump); + fwrite(&curstartofs, 1, 4, dump); + fwrite(&sstartofs, 1, 4, dump); + fwrite(outbuf, 1, code-outbuf, dump); + fputc(255, dump); + + fclose(dump); +} + +void vcc_compile_mode_all() +{ + FILE *o=0; + FILE *f=0; + char *x=0; + int z=0; + struct find_t fileinfo; + + CompileSystem(); + f=fopen("system.vcs","wb"); + fwrite(&numfuncs, 1, 4, f); + fwrite(&curstartofs, 1, 4, f); + fwrite(&sstartofs, 1, 4, f); + fwrite(outbuf, 1, code-outbuf, f); + fputc(255, f); + fclose(f); + free(source); + free(outbuf); + + if (_dos_findfirst("*.MAP", _A_NORMAL, &fileinfo)) + err("No mapfiles found."); + + while (1) + { + int i; + memcpy(fname, fileinfo.name, 13); + + i=0; + while (fname[i]!='.') i++; + fname[i]=0; + + strlwr(fname); + mfuncs=0; + + CompileMAP(fname); + + sprintf(strbuf,"%s.map", fname); + f=fopen(strbuf,"rb+"); + fread(strbuf, 1, 6, f); + fread(&z, 1, 4, f); + fseek(f, 0, 0); + + o=fopen("outtemp.$$$","wb"); + x=(char *) malloc(z); + fread(x, 1, z, f); + fwrite(x, 1, z, o); + fclose(f); + free(x); + + fwrite(&mfuncs, 1, 4, o); + fwrite(&functbl, 4, mfuncs, o); + mfuncs=(int) code - (int) outbuf; + fwrite(&mfuncs, 1, 4, o); + fwrite(outbuf, 1, code-outbuf, o); + fclose(o); + + sprintf(strbuf,"%s.map", fname); + remove(strbuf); + rename("outtemp.$$$",strbuf); + + free(source); + free(outbuf); + + if (!_dos_findnext(&fileinfo)) + continue; + + break; + } + + dprint("%i total VC lines compiled.", tlines); +} + +int main(int argc, char *argv[]) +{ + int loop = 0; + char c = 0; + char *argstr = 0; + + strbuf= (char *) malloc(2000); + + cmode = 0; + pp_dump = 0; + pp_nomark = 0; + + for (loop = 1; loop < argc; loop++) + { + // point to argument string + argstr = &loop[argv][0]; + + c = *argstr; + // skip leading punctuators, if any + if ('-' == c || '+' == c || '/' == c) + ++argstr; + + if (!stricmp(argstr, "v")) + { verbose = 1; continue; } + + if (!stricmp(argstr, "q")) + { quiet = 1; continue; } + + // compile SYSTEM.VC only + if (!stricmp(argstr, "system")) + { cmode = 2; continue; } + + // compile all available .VC files + if (!stricmp(argstr, "all")) + { cmode = 3; continue; } + + // disable line/#include markers + if (!stricmp(argstr, "ppnomark")) + { pp_nomark = 1; continue; } + + // dump preprocessor output to temp files + if (!stricmp(argstr, "ppdump")) + { pp_dump = 1; continue; } + + // debug locator option + if ('.' == *argstr) + { locate = atoi(argstr+1); continue; } + + // at this point, the argument is assumed to be a file + + if (strlen(argstr) > 79) + { printf("filename '%s' too long!", argstr); argstr[79] = 0; } + memcpy(fname, argstr, strlen(argstr)+1); + + cmode = 1; + continue; + } + + dprint("vcc v.%s Copyright (C)1998 Benjamin Eirich. All rights reserved.", VERSION); + vprint("%s build %s on %s %s", BUILD_TAG, __FILE__, __DATE__, __TIME__); + + if (!cmode) + err("No input files."); + + InitCompileSystem(); + + switch (cmode) + { + case 1: vcc_compile_mode_map(fname); break; + case 2: vcc_compile_mode_system(); break; + case 3: vcc_compile_mode_all(); break; + + default: err("you have now entered the twilight zone."); + } + + remove("vcctemp.$$$"); + remove("ERROR.TXT"); + + return 0; +} diff --git a/16/v2/source/VCC/VCC.H b/16/v2/source/VCC/VCC.H new file mode 100644 index 00000000..99a91f72 --- /dev/null +++ b/16/v2/source/VCC/VCC.H @@ -0,0 +1,38 @@ +/* +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. +*/ + +#if !defined(__VCC_INC) +#define __VCC_INC + +#define QUIET 0 +#define DEFAULT 1 +#define VERBOSE 2 + +#define CONTROL 1 +#define DIGIT 2 +#define IDENTIFIER 3 +#define RESERVED 4 +#define FUNCTION 5 + +extern char *strbuf; +extern int locate; + +extern void err(char *message, ...); +extern void vcerr(char *message, ...); +extern void dprint(char *message, ...); +extern void vprint(char *message, ...); + +#endif // __VCC_INC diff --git a/16/v2/source/VCC/VCCODE.H b/16/v2/source/VCC/VCCODE.H new file mode 100644 index 00000000..74495139 --- /dev/null +++ b/16/v2/source/VCC/VCCODE.H @@ -0,0 +1,111 @@ +/* +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. +*/ + +// We never use zero as a tag. This makes it easier to track down misbehaving +// VC code, since zero is commonly come-by when going off into uncharted +// depths of memory. + +#define ERROR 0 + +// Opcode values. + +#define opEXEC_STDLIB 1 +#define opEXEC_LOCALFUNC 2 +#define opEXEC_EXTERNFUNC 3 +#define opIF 4 +#define opELSE 5 +#define opGOTO 6 +#define opSWITCH 7 +#define opCASE 8 +#define opRETURN 9 +#define opASSIGN 10 +#define opSETRETVAL 11 +#define opSETLOCALSTACK 12 + +// Operand types. + +#define op_IMMEDIATE 1 +#define op_HVAR0 2 +#define op_HVAR1 3 +#define op_UVAR 4 +#define op_UVARRAY 5 +#define op_LVAR 6 +#define op_BFUNC 7 +#define op_UFUNC 8 +#define op_GROUP 9 +#define op_STRING 10 +#define op_SARRAY 11 +#define op_SLOCAL 12 + +// Variable types. + +#define v_IMMEDIATE 1 // is this necessary? +#define v_CHAR 2 +#define v_PTR 3 +#define v_INT 4 + +// IF relational operators. + +#define i_ZERO 1 +#define i_NONZERO 2 +#define i_EQUALTO 3 +#define i_NOTEQUAL 4 +#define i_GREATERTHAN 5 +#define i_LESSTHAN 6 +#define i_GREATERTHANOREQUAL 7 +#define i_LESSTHANOREQUAL 8 +#define i_GROUP 9 +#define i_UNGROUP 10 +#define i_AND 11 +#define i_OR 12 + +// Assignment operators. + +#define a_SET 1 +#define a_INC 2 +#define a_DEC 3 +#define a_INCSET 4 +#define a_DECSET 5 +#define a_MULTSET 6 +#define a_DIVSET 7 + +// Operand combination operators. + +#define op_ADD 1 +#define op_SUB 2 +#define op_MULT 3 +#define op_DIV 4 +#define op_MOD 5 +#define op_SHL 6 +#define op_SHR 7 +#define op_AND 8 +#define op_OR 9 +#define op_XOR 10 +#define op_END 11 + +// String components + +#define s_IMMEDIATE 1 +#define s_GLOBAL 2 +#define s_ARRAY 3 +#define s_NUMSTR 4 +#define s_LEFT 5 +#define s_RIGHT 6 +#define s_MID 7 +#define s_LOCAL 8 +#define s_ADD 9 +#define s_CHR 10 +#define s_END 11 diff --git a/16/v2/source/archives/V2GPL.ZIP b/16/v2/source/archives/V2GPL.ZIP new file mode 100644 index 0000000000000000000000000000000000000000..c00e8431a6b771a9afda9f01053bc64b571b3824 GIT binary patch literal 419526 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

w5v9iM@YaWPla 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 =hXf? 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 z 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∈pLSK}qtlQ)ygp*x5U?eNKB?dt7_)dtLzK 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 {GQRgzP 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 literal 0 HcmV?d00001 diff --git a/16/v2/source/gnu.txt b/16/v2/source/gnu.txt new file mode 100644 index 00000000..358ef6fb --- /dev/null +++ b/16/v2/source/gnu.txt @@ -0,0 +1,87 @@ +GNU GENERAL PUBLIC LICENSE +Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. +Preamble +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. + +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. + +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. + +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. + +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. + +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. + +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. + +The precise terms and conditions for copying, distribution and modification follow. + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +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". + +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. + +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. + +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. + +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: + + +a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. + +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. + +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.) +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. +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. + +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. + +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: + +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, + +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, + +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.) +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. +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. + +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. + +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. + +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. + +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. + +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. + +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. + +This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + +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. + +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. + +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. + +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. + +NO WARRANTY + +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. + +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. + + +END OF TERMS AND CONDITIONS diff --git a/16/v2/source/verge/ENGINE/AUDIO.H b/16/v2/source/verge/ENGINE/AUDIO.H new file mode 100644 index 00000000..ee133020 --- /dev/null +++ b/16/v2/source/verge/ENGINE/AUDIO.H @@ -0,0 +1,340 @@ +/* + * $Id: audio.h 1.17 1996/09/25 17:13:02 chasan released $ + * + * SEAL Synthetic Audio Library API Interface + * + * Copyright (C) 1995, 1996 Carlos Hasan. All Rights Reserved. + * + */ + +#ifndef __AUDIO_H +#define __AUDIO_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef WIN32 +#define AIAPI +#else +#define AIAPI __stdcall +#endif + +#ifndef WINAPI + +/* atomic data types definitions */ +typedef void VOID; +typedef char CHAR; +typedef int INT; +typedef long LONG; +typedef int BOOL; + +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned int UINT; +typedef unsigned long DWORD; + +typedef VOID* LPVOID; +typedef CHAR* LPCHAR; +typedef INT* LPINT; +typedef LONG* LPLONG; +typedef BOOL* LPBOOL; +typedef BYTE* LPBYTE; +typedef WORD* LPWORD; +typedef UINT* LPUINT; +typedef DWORD* LPDWORD; +typedef CHAR* LPSTR; +typedef DWORD HANDLE; + +/* helper macros */ +#define LOBYTE(s) ((BYTE)(s)) +#define HIBYTE(s) ((BYTE)((WORD)(s)>>8)) +#define LOWORD(l) ((WORD)(l)) +#define HIWORD(l) ((WORD)((DWORD)(l)>>16)) +#define MAKEWORD(l,h) ((WORD)(((BYTE)(l))|(((WORD)((BYTE)(h)))<<8))) +#define MAKELONG(l,h) ((DWORD)(((WORD)(l))|(((DWORD)((WORD)(h)))<<16))) + +#endif + + +/* audio system version number */ +#define AUDIO_SYSTEM_VERSION 0x0101 + +/* audio capabilities bit fields definitions */ +#define AUDIO_FORMAT_1M08 0x00000001 +#define AUDIO_FORMAT_1S08 0x00000002 +#define AUDIO_FORMAT_1M16 0x00000004 +#define AUDIO_FORMAT_1S16 0x00000008 +#define AUDIO_FORMAT_2M08 0x00000010 +#define AUDIO_FORMAT_2S08 0x00000020 +#define AUDIO_FORMAT_2M16 0x00000040 +#define AUDIO_FORMAT_2S16 0x00000080 +#define AUDIO_FORMAT_4M08 0x00000100 +#define AUDIO_FORMAT_4S08 0x00000200 +#define AUDIO_FORMAT_4M16 0x00000400 +#define AUDIO_FORMAT_4S16 0x00000800 + +/* audio format bit fields defines for devices and waveforms */ +#define AUDIO_FORMAT_8BITS 0x0000 +#define AUDIO_FORMAT_16BITS 0x0001 +#define AUDIO_FORMAT_LOOP 0x0010 +#define AUDIO_FORMAT_BIDILOOP 0x0020 +#define AUDIO_FORMAT_REVERSE 0x0080 +#define AUDIO_FORMAT_MONO 0x0000 +#define AUDIO_FORMAT_STEREO 0x0100 +#define AUDIO_FORMAT_FILTER 0x8000 + +/* audio resource limits defines */ +#define AUDIO_MAX_VOICES 32 +#define AUDIO_MAX_SAMPLES 16 +#define AUDIO_MAX_PATCHES 128 +#define AUDIO_MAX_PATTERNS 256 +#define AUDIO_MAX_ORDERS 256 +#define AUDIO_MAX_NOTES 96 +#define AUDIO_MAX_POINTS 12 +#define AUDIO_MIN_PERIOD 1 +#define AUDIO_MAX_PERIOD 31999 +#define AUDIO_MIN_VOLUME 0x00 +#define AUDIO_MAX_VOLUME 0x40 +#define AUDIO_MIN_PANNING 0x00 +#define AUDIO_MAX_PANNING 0xFF +#define AUDIO_MIN_POSITION 0x00000000L +#define AUDIO_MAX_POSITION 0x00100000L +#define AUDIO_MIN_FREQUENCY 0x00000200L +#define AUDIO_MAX_FREQUENCY 0x00080000L + +/* audio error code defines */ +#define AUDIO_ERROR_NONE 0x0000 +#define AUDIO_ERROR_INVALHANDLE 0x0001 +#define AUDIO_ERROR_INVALPARAM 0x0002 +#define AUDIO_ERROR_NOTSUPPORTED 0x0003 +#define AUDIO_ERROR_BADDEVICEID 0x0004 +#define AUDIO_ERROR_NODEVICE 0x0005 +#define AUDIO_ERROR_DEVICEBUSY 0x0006 +#define AUDIO_ERROR_BADFORMAT 0x0007 +#define AUDIO_ERROR_NOMEMORY 0x0008 +#define AUDIO_ERROR_NODRAMMEMORY 0x0009 +#define AUDIO_ERROR_FILENOTFOUND 0x000A +#define AUDIO_ERROR_BADFILEFORMAT 0x000B +#define AUDIO_LAST_ERROR 0x000B + +/* audio device identifiers */ +#define AUDIO_DEVICE_NONE 0x0000 +#define AUDIO_DEVICE_MAPPER 0xFFFF + +/* audio product identifiers */ +#define AUDIO_PRODUCT_NONE 0x0000 +#define AUDIO_PRODUCT_SB 0x0001 +#define AUDIO_PRODUCT_SB15 0x0002 +#define AUDIO_PRODUCT_SB20 0x0003 +#define AUDIO_PRODUCT_SBPRO 0x0004 +#define AUDIO_PRODUCT_SB16 0x0005 +#define AUDIO_PRODUCT_AWE32 0x0006 +#define AUDIO_PRODUCT_WSS 0x0007 +#define AUDIO_PRODUCT_ESS 0x0008 +#define AUDIO_PRODUCT_GUS 0x0009 +#define AUDIO_PRODUCT_GUSDB 0x000A +#define AUDIO_PRODUCT_GUSMAX 0x000B +#define AUDIO_PRODUCT_IWAVE 0x000C +#define AUDIO_PRODUCT_PAS 0x000D +#define AUDIO_PRODUCT_PAS16 0x000E +#define AUDIO_PRODUCT_ARIA 0x000F +#define AUDIO_PRODUCT_WINDOWS 0x0100 +#define AUDIO_PRODUCT_LINUX 0x0101 +#define AUDIO_PRODUCT_SPARC 0x0102 +#define AUDIO_PRODUCT_SGI 0x0103 +#define AUDIO_PRODUCT_DSOUND 0x0104 + +/* audio envelope bit fields */ +#define AUDIO_ENVELOPE_ON 0x0001 +#define AUDIO_ENVELOPE_SUSTAIN 0x0002 +#define AUDIO_ENVELOPE_LOOP 0x0004 + +/* audio pattern bit fields */ +#define AUDIO_PATTERN_PACKED 0x0080 +#define AUDIO_PATTERN_NOTE 0x0001 +#define AUDIO_PATTERN_SAMPLE 0x0002 +#define AUDIO_PATTERN_VOLUME 0x0004 +#define AUDIO_PATTERN_COMMAND 0x0008 +#define AUDIO_PATTERN_PARAMS 0x0010 + +/* audio module bit fields */ +#define AUDIO_MODULE_AMIGA 0x0000 +#define AUDIO_MODULE_LINEAR 0x0001 +#define AUDIO_MODULE_PANNING 0x8000 + +#pragma pack(1) + +/* audio capabilities structure */ +typedef struct { + WORD wProductId; /* product identifier */ + CHAR szProductName[30]; /* product name */ + DWORD dwFormats; /* formats supported */ +} AUDIOCAPS, *LPAUDIOCAPS; + +/* audio format structure */ +typedef struct { + UINT nDeviceId; /* device identifier */ + WORD wFormat; /* playback format */ + WORD nSampleRate; /* sampling frequency */ +} AUDIOINFO, *LPAUDIOINFO; + +/* audio waveform structure */ +typedef struct { + LPBYTE lpData; /* data pointer */ + DWORD dwHandle; /* waveform handle */ + DWORD dwLength; /* waveform length */ + DWORD dwLoopStart; /* loop start point */ + DWORD dwLoopEnd; /* loop end point */ + WORD nSampleRate; /* sampling rate */ + WORD wFormat; /* format bits */ +} AUDIOWAVE, *LPAUDIOWAVE; + + +/* audio envelope point structure */ +typedef struct { + WORD nFrame; /* envelope frame */ + WORD nValue; /* envelope value */ +} AUDIOPOINT, *LPAUDIOPOINT; + +/* audio envelope structure */ +typedef struct { + AUDIOPOINT aEnvelope[AUDIO_MAX_POINTS]; /* envelope points */ + BYTE nPoints; /* number of points */ + BYTE nSustain; /* sustain point */ + BYTE nLoopStart; /* loop start point */ + BYTE nLoopEnd; /* loop end point */ + WORD wFlags; /* envelope flags */ + WORD nSpeed; /* envelope speed */ +} AUDIOENVELOPE, *LPAUDIOENVELOPE; + +/* audio sample structure */ +typedef struct { + CHAR szSampleName[32]; /* sample name */ + BYTE nVolume; /* default volume */ + BYTE nPanning; /* default panning */ + BYTE nRelativeNote; /* relative note */ + BYTE nFinetune; /* finetune */ + AUDIOWAVE Wave; /* waveform handle */ +} AUDIOSAMPLE, *LPAUDIOSAMPLE; + +/* audio patch structure */ +typedef struct { + CHAR szPatchName[32]; /* patch name */ + BYTE aSampleNumber[AUDIO_MAX_NOTES]; /* multi-sample table */ + WORD nSamples; /* number of samples */ + BYTE nVibratoType; /* vibrato type */ + BYTE nVibratoSweep; /* vibrato sweep */ + BYTE nVibratoDepth; /* vibrato depth */ + BYTE nVibratoRate; /* vibrato rate */ + WORD nVolumeFadeout; /* volume fadeout */ + AUDIOENVELOPE Volume; /* volume envelope */ + AUDIOENVELOPE Panning; /* panning envelope */ + LPAUDIOSAMPLE aSampleTable; /* sample table */ +} AUDIOPATCH, *LPAUDIOPATCH; + +/* audio pattern structure */ +typedef struct { + WORD nPacking; /* packing type */ + WORD nTracks; /* number of tracks */ + WORD nRows; /* number of rows */ + WORD nSize; /* data size */ + LPBYTE lpData; /* data pointer */ +} AUDIOPATTERN, *LPAUDIOPATTERN; + +/* audio module structure */ +typedef struct { + CHAR szModuleName[32]; /* module name */ + WORD wFlags; /* module flags */ + WORD nOrders; /* number of orders */ + WORD nRestart; /* restart position */ + WORD nTracks; /* number of tracks */ + WORD nPatterns; /* number of patterns */ + WORD nPatches; /* number of patches */ + WORD nTempo; /* initial tempo */ + WORD nBPM; /* initial BPM */ + BYTE aOrderTable[AUDIO_MAX_ORDERS]; /* order table */ + BYTE aPanningTable[AUDIO_MAX_VOICES]; /* panning table */ + LPAUDIOPATTERN aPatternTable; /* pattern table */ + LPAUDIOPATCH aPatchTable; /* patch table */ +} AUDIOMODULE, *LPAUDIOMODULE; + +/* audio callback function defines */ +typedef VOID (AIAPI* LPFNAUDIOWAVE)(LPBYTE, UINT); +typedef VOID (AIAPI* LPFNAUDIOTIMER)(VOID); +typedef VOID (AIAPI* LPFNAUDIOCALLBACK)(BYTE, UINT, UINT); + +/* audio handle defines */ +typedef HANDLE HAC; +typedef HAC* LPHAC; + +#pragma pack() + + +/* audio interface API prototypes */ +UINT AIAPI AInitialize(VOID); +UINT AIAPI AGetVersion(VOID); +UINT AIAPI AGetAudioNumDevs(VOID); +UINT AIAPI AGetAudioDevCaps(UINT nDeviceId, LPAUDIOCAPS lpCaps); +UINT AIAPI AGetErrorText(UINT nErrorCode, LPSTR lpText, UINT nSize); + +UINT AIAPI APingAudio(LPUINT lpnDeviceId); +UINT AIAPI AOpenAudio(LPAUDIOINFO lpInfo); +UINT AIAPI ACloseAudio(VOID); +UINT AIAPI AUpdateAudio(VOID); + +UINT AIAPI AOpenVoices(UINT nVoices); +UINT AIAPI ACloseVoices(VOID); + +UINT AIAPI ASetAudioCallback(LPFNAUDIOWAVE lpfnAudioWave); +UINT AIAPI ASetAudioTimerProc(LPFNAUDIOTIMER lpfnAudioTimer); +UINT AIAPI ASetAudioTimerRate(UINT nTimerRate); + +LONG AIAPI AGetAudioDataAvail(VOID); +UINT AIAPI ACreateAudioData(LPAUDIOWAVE lpWave); +UINT AIAPI ADestroyAudioData(LPAUDIOWAVE lpWave); +UINT AIAPI AWriteAudioData(LPAUDIOWAVE lpWave, DWORD dwOffset, UINT nCount); + +UINT AIAPI ACreateAudioVoice(LPHAC lphVoice); +UINT AIAPI ADestroyAudioVoice(HAC hVoice); + +UINT AIAPI APlayVoice(HAC hVoice, LPAUDIOWAVE lpWave); +UINT AIAPI APrimeVoice(HAC hVoice, LPAUDIOWAVE lpWave); +UINT AIAPI AStartVoice(HAC hVoice); +UINT AIAPI AStopVoice(HAC hVoice); + +UINT AIAPI ASetVoicePosition(HAC hVoice, LONG dwPosition); +UINT AIAPI ASetVoiceFrequency(HAC hVoice, LONG dwFrequency); +UINT AIAPI ASetVoiceVolume(HAC hVoice, UINT nVolume); +UINT AIAPI ASetVoicePanning(HAC hVoice, UINT nPanning); + +UINT AIAPI AGetVoicePosition(HAC hVoice, LPLONG lpdwPosition); +UINT AIAPI AGetVoiceFrequency(HAC hVoice, LPLONG lpdwFrequency); +UINT AIAPI AGetVoiceVolume(HAC hVoice, LPUINT lpnVolume); +UINT AIAPI AGetVoicePanning(HAC hVoice, LPUINT lpnPanning); +UINT AIAPI AGetVoiceStatus(HAC hVoice, LPBOOL lpnStatus); + +UINT AIAPI APlayModule(LPAUDIOMODULE lpModule); +UINT AIAPI AStopModule(VOID); +UINT AIAPI APauseModule(VOID); +UINT AIAPI AResumeModule(VOID); +UINT AIAPI ASetModuleVolume(UINT nVolume); +UINT AIAPI ASetModulePosition(UINT nOrder, UINT nRow); +UINT AIAPI AGetModuleVolume(LPUINT lpnVolume); +UINT AIAPI AGetModulePosition(LPUINT pnOrder, LPUINT lpnRow); +UINT AIAPI AGetModuleStatus(LPBOOL lpnStatus); +UINT AIAPI ASetModuleCallback(LPFNAUDIOCALLBACK lpfnAudioCallback); + +UINT AIAPI ALoadModuleFile(LPSTR lpszFileName, + LPAUDIOMODULE* lplpModule, DWORD dwFileOffset); +UINT AIAPI AFreeModuleFile(LPAUDIOMODULE lpModule); + +UINT AIAPI ALoadWaveFile(LPSTR lpszFileName, + LPAUDIOWAVE* lplpWave, DWORD dwFileOffset); +UINT AIAPI AFreeWaveFile(LPAUDIOWAVE lpWave); + +#ifdef __cplusplus +}; +#endif + +#endif diff --git a/16/v2/source/verge/ENGINE/A_MEMORY.C b/16/v2/source/verge/ENGINE/A_MEMORY.C new file mode 100644 index 00000000..9ce7f4c8 --- /dev/null +++ b/16/v2/source/verge/ENGINE/A_MEMORY.C @@ -0,0 +1,201 @@ +/* +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. +*/ + +#include +#include + +#include "verge.h" + +// ***** +// TODO: Move the chunk list from an array to a linked list? +// Would eliminate hardcoded chunk limit, but would make +// general operation slower. Probably not The Right Thing, +// sides the chunk limit can be interesting sometimes. If +// it becomes problematic, consider a Binary Tree. +// ***** + +// ***************************** Data ***************************** + +#define MAXCHUNKS 1000 +#define PARANOID +#define PADFILLVALUE 254 +#define PADSIZE 256 + +typedef struct +{ + void *pointer; + int size; + int owner; + char desc[40]; +} memblockType; + +memblockType chunks[MAXCHUNKS+1]; +int numchunks=0; + +// ***************************** Code ***************************** + +void *valloc(int amount, char *desc, int owner) +{ + if (numchunks == MAXCHUNKS) + err("Failed allocated %d bytes (%s), reason: Out of chunks.", + amount, desc); + +#ifdef PARANOID + CheckCorruption(); + chunks[numchunks].pointer = (void *) ((int) malloc(amount + (PADSIZE * 2)) + PADSIZE); + chunks[numchunks].size = amount; + memset((char *) chunks[numchunks].pointer - PADSIZE, PADFILLVALUE, PADSIZE); + memset((char *) chunks[numchunks].pointer + + chunks[numchunks].size, PADFILLVALUE, PADSIZE); +#else + chunks[numchunks].pointer = malloc(amount); + chunks[numchunks].size = amount; +#endif + chunks[numchunks].owner = owner; + strncpy(chunks[numchunks].desc, desc, 39); + return chunks[numchunks++].pointer; +} + +void *qvalloc(int amount) +{ + void *ptr; + + // Quick and dirty memory allocation. Should be used ONLY + // for temporary blocks in speed-critical loops. + + ptr = malloc(amount); + if (!ptr) err("qvalloc: Failed allocating %d bytes.", amount); + return ptr; +} + +void qvfree(void *ptr) +{ + free(ptr); +} + +int TotalBytesAllocated(void) +{ + int i, tally=0; + + for (i=0; is) + { + sprintf(strbuf,"File is in €%s~, index %d~",pack[f->v].mountname, f->i); + Con_Printf(strbuf); + sprintf(strbuf,"Packofs: %d~ current ofs: %d~",pack[f->v].files[f->i].packofs,pack[f->v].files[f->i].curofs); + Con_Printf(strbuf); + if (pack[f->v].files[f->i].extractable) + Con_Printf("File is extractable."); + else Con_Printf("File is not extractable."); + if (pack[f->v].files[f->i].override) + Con_Printf("Override allowed."); + else Con_Printf("Override not allowed."); + } + else Con_Printf("File is external."); + sprintf(strbuf,"File is %d~ bytes.",filesize(f)); + Con_Printf(strbuf); + vclose(f); +} + +void vid_mode() +{ int xres,yres; + + xres=atoi((char *)args[1]); + yres=atoi((char *)args[2]); + Con_NextLine(); + + ShutdownVideo(0); + if (InitVideo(xres, yres)) + { + Con_Printf("{||||||||||||}"); + Con_Printf("Loading new video driver..."); + Con_Printf(DriverDesc); + Con_Printf("{||||||||||||}"); + } + else Con_Printf("Unsupported/unknown video mode."); + set_intensity(63); +} + +void CPU_Usage() +{ + if (numargs==1) + { + sprintf(strbuf,"cpu_usage is %d~", cpu_watch); + Con_Printf(strbuf); + } + else cpu_watch=atoi((char *) args[1]); +} + +void Mount() +{ + MountVFile((char *) args[1]); + sprintf(strbuf,"%s mounted.",args[1]); + Con_Printf(strbuf); +} + +void ZeroConWarp(char **args) +{ + player->x=atoi(args[1])*16; + player->y=atoi(args[2])*16; + player->tx=atoi(args[1]); + player->ty=atoi(args[2]); +} + +void ZeroConBrowseTiles(void) +{ + int x,y,n,k=0,a=0; + + while(last_pressed!=SCAN_Q) + { + ClearScreen(); + UpdateControls(); + CheckMessages(); + if(last_pressed==SCAN_A) { if(a) a=0; else a=1; last_pressed=0; } + if(last_pressed==SCAN_DOWN&&(k+(ty-3)*(tx-3)-tx+4)0) + { + k-=tx-4; + last_pressed=0; + } + for(y=1; yx, player->y); Con_Printf(strbuf); + sprintf(strbuf,"xtc: ‚%d~ ytc: ‚%d~", player->x>>4, player->y>>4); Con_Printf(strbuf); +} + +void PlayerSpeed() +{ + if (!player) + { + Con_Printf("No player."); + return; + } + if (numargs==1) + { + Con_NextLine(); + sprintf(strbuf,"speed is is %d~", player->speed); + Con_Printf(strbuf); + } + else + { + player->speed=atoi((char *) args[1]); + player->speedct=0; + } +} + +void Player() +{ int i; + + i=atoi((char *) args[1]); + if (i', '?', 0, '*', 0, 1, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, '-', 0, 0, 0, '+', 0, + 0, 0, 1, 127, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 13, 0, '/', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '/', 0, 0, 0, 0, 0 +}; + +#define NUMCMDS 31 +char *concmds[] = { + "CONSOLEBG","LISTMOUNTS","PACKINFO","LISTCMDS","CD_PLAY","CD_STOP", + "CD_OPEN","CD_CLOSE","EXIT","VID_MODE","CPU_USAGE","MOUNT","MAP", + "VER","BROWSETILES","WARP","CAMERATRACKING","RSTRING","SHOWOBS", + "PHANTOM","ENTITYSTAT","ACTIVEENTS","ENTITY","CURPOS","PLAYERSPEED", + "SPEEDDEMON","RV","SV","PLAYER","SPAWNENTITY","SHOWZONES" + }; +byte sortedcmds[NUMCMDS]; + +// ================================= Code ==================================== + +void SortConCmds(void) +/* -- ric: 03/Jun/98 -- + * creates the sorted index into concmds + */ +{ + int i,j; + int temp; + + for (i=0; i=i; j--) + if (strcmp(concmds[sortedcmds[j-1]],concmds[sortedcmds[j]])>0) + { + // swap the indices + temp=sortedcmds[j-1]; + sortedcmds[j-1]=sortedcmds[j]; + sortedcmds[j]=temp; + } + } +} + +void InitConsole(void) +{ + Logp("Initialize console."); + LoadFont("system.fnt"); + consolebg=VLoadImageBuf("console.gif"); + + consoletext=(char *) valloc(45*50, "consoletext", OID_MISC); + cmd=(byte *) valloc(40, "InitConsole:cmd", OID_MISC); + cmd2=(byte *) valloc(40, "InitConsole:cmd2", OID_MISC); + memset(cmd, 0, 40); + memset(cmd2, 0, 40); + memset(consoletext, 0, 2250); + + lastcmds=(char *) valloc(400, "InitConsole:lastcmds", OID_MISC); + memset(lastcmds, 0, 400); + + SortConCmds(); + LogDone(); +} + +void DrawConsole(); + +void Con_Printf(char *str) +{ char tbuf[2250]; + + // move buffer up a line + memcpy(tbuf, consoletext+50, 2200); + memcpy(consoletext, tbuf, 2200); + + memcpy(consoletext+2200, str, strlen(str)+1); + lines++; +} + +void Con_NextLine(void) +{ + Con_Printf(""); + lines=0; +} + +int ShowConsole(void) +{ + conlines+=2; + if (conlines > 120) + { + callback=0; + conlines=120; + } + return 0; +} + +int HideConsole(void) +{ + if (conlines > 3) + { + conlines-=2; + } + else + { + conlines=1; + callback=0; + } + return 0; +} + +void DrawConsole(void) +{ int i; + int tagline=0; + + lines=0; + tagline=conlines; + + Render(); + CopySpriteZoomClip(0,-120+tagline, 320,120, sx,120, consolebg); + + // write console text + + for (i=0; i<9; i++) + { + GotoXY(1, 1+(i*10)-(120-tagline)); + printstring(0,consoletext+((startln+i)*50)); + } + + GotoXY(1,101-(120-tagline)); + printstring(0,"]"); + printstring(0,(char *) cmd); + + if (systemtime>=cswtime) + { + cursor ^= 1; + cswtime = systemtime+40; + } + + if (cursor) printstring(0, "&"); + + if (startln<36) + { + GotoXY(1, 91-(120-tagline)); + printstring(0, "^ ^ ^ ^ ^ ^ ^ ^ ^ ^"); + } +} + +int Args(int num) +{ + if (numargs>=num) return 1; + sprintf(strbuf,"This function needs %d~ arguments.",num-1); + Con_Printf(strbuf); + return 0; +} + +void ListCmds(void) +{ int i; + + Con_NextLine(); + for (i=0; i ~"); } break; + case 16: CameraTracking(); break; + case 17: if (numargs==1) ZeroGetRString(); + if (numargs==2) ZeroSetRString((char**)args); break; + case 18: Obstructions(); break; + case 19: Phantom(); break; + case 20: EntityStat(); break; + case 21: ListActiveEnts(); break; + case 22: if (Args(2)) EntityS(); break; + case 23: CurPos(); break; + case 24: PlayerSpeed(); break; + case 25: speeddemon=1; break; + case 26: ReadVCVar(); break; + case 27: WriteVCVar(); break; + case 28: if (Args(2)) Player(); break; + case 29: if (Args(4)) SpawnEntity(); break; + case 30: ShowZones(); break; + case NUMCMDS: Con_Printf((char *) cmd); break; + } +} + +void ParseCommand(void) +{ byte *src; + // breaks the command string into arguements and stuff. (in cmd2) + + numargs=0; + src=(byte *) cmd2; + args[0]=src; + + while (*src==' ') src++; + + if (!*src) return; + + while (1) + { + if (*src==' ') + { + while (*src== ' ') + { + *src=0; + src++; + } + if (*src) + { + numargs++; + args[numargs]=src; + } + src--; + } + src++; + if (!*src) + { + numargs++; + return; + } + } +} + +void ProcessCommand(void) +{ byte i; + + memcpy(cmd2, cmd, 40); + strupr((char *) cmd2); + ParseCommand(); + + i=0; + while (i 1) + { + CheckMessages(); + DrawConsole(); + ShowPage(); + } + conlines=0; + key[SCAN_RQUOTA]=0; + timer_count=0; +} diff --git a/16/v2/source/verge/ENGINE/CONSOLE.H b/16/v2/source/verge/ENGINE/CONSOLE.H new file mode 100644 index 00000000..e4e60907 --- /dev/null +++ b/16/v2/source/verge/ENGINE/CONSOLE.H @@ -0,0 +1,61 @@ +/* +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. +*/ + +#ifndef CONSOLE_H +#define CONSOLE_H + +#include "main.h" + +// -- externs -- + +extern byte *consolebg; // Console background image +extern byte *consoletext; // Console text buffer +extern byte *cmd, *cmd2, cmdlen; // command line buffer +extern char *lastcmds, numcmds, cmdpos; // last-command memory +extern byte *args[10], numargs; // command argument pointers +extern char cursor, more; // flag on/off cursor visible +extern int cswtime; // cursor switch time. +extern int conlines; // Number of visible lines +extern int lines; // number of lines entered since last draw +extern char startln; // Start display ofs (for scrollback) +extern char allowconsole; +extern char consoleoverride; + +extern byte key_ascii_tbl[128]; +extern byte key_shift_tbl[128]; + +extern char *concmds[]; + +// -- prototypes -- + +extern void InitConsole(void); +extern void Con_Printf(char *str); +extern void Con_NextLine(void); + +extern int ShowConsole(void); +extern int HideConsole(void); + +extern void DrawConsole(void); +extern int Args(int num); +extern void ListCmds(void); +extern void LastCmds(void); +extern void ExecuteCommand(int i); +extern void ParseCommand(void); +extern void ProcessCommand(void); +extern void CommandInput(void); +extern void ActivateConsole(void); + +#endif // CONSOLE_H diff --git a/16/v2/source/verge/ENGINE/CONTROLS.C b/16/v2/source/verge/ENGINE/CONTROLS.C new file mode 100644 index 00000000..728274a8 --- /dev/null +++ b/16/v2/source/verge/ENGINE/CONTROLS.C @@ -0,0 +1,105 @@ +/* +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. +*/ + +#include "verge.h" + +// ================================= Data ==================================== + +// -- Hardware Dependent -- // + +int kb1, kb2, kb3, kb4; // keyboard controls +int jb1, jb2, jb3, jb4; // joystick controls + +// -- Unified Interface -- // + +char b1, b2, b3, b4; +char up, down, left, right; + +// -- UnPress support variables -- // + +char wb1, wb2, wb3, wb4; +char wup, wdown, wleft, wright; + +char rb1, rb2, rb3, rb4; +char rup, rdown, rleft, rright; + +// ================================= Code ==================================== + +void UpdateControls() +{ + rb1=0; rb2=0; rb3=0; rb4=0; + rup=0; rdown=0; rleft=0; rright=0; + + if (key[SCAN_UP]) rup=1; + if (key[SCAN_DOWN]) rdown=1; + if (key[SCAN_RIGHT]) rright=1; + if (key[SCAN_LEFT]) rleft=1; + + if (key[kb1]) rb1=1; + if (key[kb2]) rb2=1; + if (key[kb3]) rb3=1; + if (key[kb4]) rb4=1; + + if (wb1 && rb1) rb1=0; + else if (wb1 && !rb1) wb1=0; + b1=rb1; + + if (wb2 && rb2) rb2=0; + else if (wb2 && !rb2) wb2=0; + b2=rb2; + + if (wb3 && rb3) rb3=0; + else if (wb3 && !rb3) wb3=0; + b3=rb3; + + if (wb4 && rb4) rb4=0; + else if (wb4 && !rb4) wb4=0; + b4=rb4; + + if (wup && rup) rup=0; + else if (wup && !rup) wup=0; + up=rup; + + if (wdown && rdown) rdown=0; + else if (wdown && !rdown) wdown=0; + down=rdown; + + if (wleft && rleft) rleft=0; + else if (wleft && !rleft) wleft=0; + left=rleft; + + if (wright && rright) rright=0; + else if (wright && !rright) wright=0; + right=rright; +} + +void UnPress(int control) +{ + switch (control) + { + case 0: wb1=1; wb2=1; wb3=1; wb4=1; + b1=0; b2=0; b3=0; b4=0; + key[kb1]=0; key[kb2]=0; key[kb3]=0; key[kb4]=0; break; + case 1: wb1=1; b1=0; key[kb1]=0; break; + case 2: wb2=1; b2=0; key[kb2]=0; break; + case 3: wb3=1; b3=0; key[kb3]=0; break; + case 4: wb4=1; b4=0; key[kb4]=0; break; + case 5: wup=1; up=0; key[SCAN_UP]=0; break; + case 6: wdown=1; down=0; key[SCAN_DOWN]=0; break; + case 7: wleft=1; left=0; key[SCAN_LEFT]=0; break; + case 8: wright=1; right=0; key[SCAN_RIGHT]=0; break; + } +} diff --git a/16/v2/source/verge/ENGINE/CONTROLS.H b/16/v2/source/verge/ENGINE/CONTROLS.H new file mode 100644 index 00000000..aabd402d --- /dev/null +++ b/16/v2/source/verge/ENGINE/CONTROLS.H @@ -0,0 +1,29 @@ +/* +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. +*/ + +#ifndef CONTROL_H +#define CONTROL_H + +extern int kb1, kb2, kb3, kb4; +extern int jb1, jb2, jb3, jb4; + +extern char b1, b2, b3, b4; +extern char up, down, left, right; + +void UpdateControls(); +void UnPress(int); + +#endif diff --git a/16/v2/source/verge/ENGINE/ENGINE.C b/16/v2/source/verge/ENGINE/ENGINE.C new file mode 100644 index 00000000..13ca67cd --- /dev/null +++ b/16/v2/source/verge/ENGINE/ENGINE.C @@ -0,0 +1,746 @@ +/* +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. +*/ + +// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +// CHANGELOG: +// +// + added ScreenShot() on F11 +// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + + +#define ENGINE_H +#include "verge.h" + +// ================================= Data ==================================== + +typedef struct +{ + word start; // strand start + word finish; // strand end + word delay; // tile-switch delay + word mode; // tile-animation mode +} vspanim_r; + +typedef struct +{ + char pmultx,pdivx; // parallax multiplier/divisor for X + char pmulty,pdivy; // parallax multiplier/divisor for Y + unsigned short sizex, sizey; // layer dimensions. + unsigned char trans, hline; // transparency flag | hline (raster fx) +} layer_r; + +typedef struct +{ + char name[40]; // zone name/desc + unsigned short script; // script to call thingy + unsigned short percent; // chance of executing + unsigned short delay; // step-delay + unsigned short aaa; // Accept Adjacent Activation + unsigned short entityscript; // script to call for entities +} zoneinfo; + +zoneinfo zones[256]; // zone data records +layer_r layer[6]; // Array of layer data +vspanim_r vspanim[100]; // tile animation data +unsigned short vadelay[100]; // Tile animation delay ctr + +char mapname[60]; // MAP filename +char vspname[60]; // VSP filemap +char musname[60]; // MAP bkgrd music default filename +char rstring[20]; // render-order string +char numlayers; // number of layers in map +byte *obstruct, *zone; // obstruction and zone buffers +char layertoggle[8]; // layer visible toggles +word xstart, ystart; // MAP start x/y location +int bufsize; // how many bytes need to be written +int numzones; // number of active zones + +word *layers[6]; // Raw layer data +int xwin=0, ywin=0; // camera offset + +// -- vsp data -- + +byte *vsp=0,*vspmask; // VSP data buffer. +unsigned short numtiles; // number of tiles in VSP. +unsigned short *tileidx; // tile index thingamajig +char *flipped; // bi-direction looping flag + +// entity stuffs + +char *msbuf[100]; // ptr-table to script offset +char *ms; // script text buffer +byte nms; // number of movescripts + +char numfollowers=0; // number of party followers +byte follower[10]; // maximum of 10 followers. +char laststeps[10]={ 0 }; // record of last movements +int lastent; + +// -- stuff -- + +byte movegranularity; // means nothing now, please remove +byte movectr=0; + +byte phantom=0; // walk-through-walls +byte speeddemon=0; // doublespeed cheat +int bindarray[128]; // bind script offset + +// ================================= Code ==================================== + +void ReadCompressedLayer1(byte *dest, int len, char *buf) +{ + int j,n; + byte run, w; + + n=0; + do + { + w=*buf; buf++; + if (w==0xFF) + { + run=*buf; buf++; + w=*buf; buf++; + for (j=0; jtx, player->ty+1)) return 1; break; + case 1: if (ObstructionAt(player->tx, player->ty-1)) return 1; break; + case 2: if (ObstructionAt(player->tx-1, player->ty)) return 1; break; + case 3: if (ObstructionAt(player->tx+1, player->ty)) return 1; break; + } + switch (dir) + { + case 0: if (EntityObsAt(player->tx, player->ty+1)) return 1; break; + case 1: if (EntityObsAt(player->tx, player->ty-1)) return 1; break; + case 2: if (EntityObsAt(player->tx-1, player->ty)) return 1; break; + case 3: if (EntityObsAt(player->tx+1, player->ty)) return 1; break; + } + return 0; +} + +void CheckZone() +{ + int curzone; + static int lz=0, zonedelay=0; + + curzone=zone[(player->ty * layer[0].sizex) + player->tx]; + if (lz!=curzone) + { + zonedelay=0; + lz=curzone; + } + if (!zones[curzone].percent) return; + if (zonedelay < zones[curzone].delay) + { + zonedelay++; + return; + } + if (curzone) + if (zones[curzone].script && + zones[curzone].percent >= rnd(0,255)) + { + ExecuteEvent(zones[curzone].script); + zonedelay=0; + } +} + +int InvFace() +{ + switch(player -> facing) + { + case 0: return 1; + case 1: return 0; + case 2: return 3; + case 3: return 2; + } + return -1; +} + +void Activate() +{ + byte tz; + int ax=0, ay=0; + + switch(player->facing) + { + case 0: ax=player->tx; ay=player->ty+1; break; + case 1: ax=player->tx; ay=player->ty-1; break; + case 2: ax=player->tx-1; ay=player->ty; break; + case 3: ax=player->tx+1; ay=player->ty; break; + } + tz=zone[(ay*layer[0].sizex)+ax]; + if (zones[tz].aaa) + { + ExecuteEvent(zones[tz].script); + return; + } + if ((tz=EntityAt(ax, ay))) + { + tz--; + if (entity[tz].face) + { + entity[tz].facing=InvFace(); + AnimateEntity(&entity[tz]); + } + if (entity[tz].actscript) + { + lastent=tz; + ExecuteEvent(entity[tz].actscript); + } + } +} + +void ResetFollowers() +{ + int i; + + player->x=player->tx<<4; + player->y=player->ty<<4; + player->moving=0; + player->movecnt=0; + player->reset=1; + for (i=0; ix; + entity[follower[i]].y=player->y; + entity[follower[i]].tx=player->tx; + entity[follower[i]].ty=player->ty; + entity[follower[i]].facing=player->facing; + entity[follower[i]].reset=1; + } + memset(laststeps, 0, 10); +} + +void MoveFollowers() +{ + int i; + + for (i=0; ianimofs=chr[player->chrindex].uanim; + entity[follower[i]].delayct=0; + entity[follower[i]].reset=0; + } + entity[follower[i]].facing=laststeps[i+1]-1; + } +} + +//--- zero 5.7.99 + +void WritePalette(FILE *f) +{ char b; + int i; + byte pal3[768]; + + for (i=0; i<768; i++) + pal3[i]=pal2[i] << 2; + + b=12; fwrite(&b, 1, 1, f); + fwrite(pal3, 1, 768, f); +} + +void WritePCXLine(unsigned char *p,int len,FILE *pcxf) +{ int i; + unsigned char byt, samect, repcode; + + i=0; + do + { byt=p[i++]; + samect=1; + while (samect<(unsigned) 63 && i1 || (byt & 0xC0) != 0) + { + repcode=0xC0 | samect; + fwrite(&repcode,1,1,pcxf); + } + fwrite(&byt,1,1,pcxf); + } while (i16 colors + b1=1; fwrite(&b1, 1, 1, pcxf); // encoding always = 1 + b1=8; fwrite(&b1, 1, 1, pcxf); // 8 bits per pixel, for 256 colors + w1=0; fwrite(&w1, 1, 2, pcxf); // xmin = 0; + w1=0; fwrite(&w1, 1, 2, pcxf); // ymin = 0; + w1=sx-1; fwrite(&w1, 1, 2, pcxf); // xmax = 319; + w1=sy-1; fwrite(&w1, 1, 2, pcxf); // ymax = 199; + w1=sx; fwrite(&w1, 1, 2, pcxf); // hres = 320; + w1=sy; fwrite(&w1, 1, 2, pcxf); // vres = 200; + + fwrite(screen,1,48,pcxf); + + b1=0; fwrite(&b1, 1, 1, pcxf); // reserved always = 0. + b1=1; fwrite(&b1, 1, 1, pcxf); // number of color planes. Just 1 for 8bit. + w1=sx; fwrite(&w1, 1, 2, pcxf); // number of bytes per line + + w1=0; fwrite(&w1, 1, 1, pcxf); + fwrite(screen, 1, 59, pcxf); // filler + + for (w1=0; w1moving) + { + if (down && !PlayerObstructed(0)) + { + player->ty++; + player->moving=1; + player->movecnt=15; + player->y++; + if (player->reset || player->facing != 0) + { + player->animofs=chr[player->chrindex].danim; + player->delayct=0; + player->reset=0; + } + player->facing=0; + LastMove(1); + return; + } + if (up && !PlayerObstructed(1)) + { + player->ty--; + player->moving=2; + player->movecnt=15; + player->y--; + if (player->reset || player->facing != 1) + { + player->animofs=chr[player->chrindex].uanim; + player->delayct=0; + player->reset=0; + } + player->facing=1; + LastMove(2); + return; + } + if (left && !PlayerObstructed(2)) + { + player->tx--; + player->moving=3; + player->movecnt=15; + player->x--; + if (player->reset || player->facing != 2) + { + player->animofs=chr[player->chrindex].lanim; + player->delayct=0; + player->reset=0; + } + player->facing=2; + LastMove(3); + return; + } + if (right && !PlayerObstructed(3)) + { + player->tx++; + player->moving=4; + player->movecnt=15; + player->x++; + if (player->reset || player->facing != 3) + { + player->animofs=chr[player->chrindex].ranim; + player->delayct=0; + player->reset=0; + } + player->facing=3; + LastMove(4); + return; + } + if (down) player->facing=0; + if (up) player->facing=1; + if (left) player->facing=2; + if (right) player->facing=3; + } + + switch (player->moving) + { + case 0: player->reset=1; player->animofs=0; player->delayct=0; break; + case 1: player->y++; player->movecnt--; break; + case 2: player->y--; player->movecnt--; break; + case 3: player->x--; player->movecnt--; break; + case 4: player->x++; player->movecnt--; break; + } + if (!player->movecnt && player->moving) + { + player->moving=0; + CheckZone(); + } + if (!player->movecnt && b1) Activate(); +} + +void ProcessControls() +{ int i; + + if (key[SCAN_RQUOTA]) + { + key[SCAN_RQUOTA]=0; last_pressed=0; + ActivateConsole(); + } + if (key[SCAN_ALT] && key[SCAN_X]) err("Exiting: ALT-X pressed."); +//--- zero 5.7.99 + if (key[SCAN_F11]) + { + Message("ss",50); + ScreenShot(); + key[SCAN_F11]=0; + } +//--- + if (!player) return; + + if (player->speed<4) + { + switch (player->speed) + { + case 1: if (player->speedct<3) { player->speedct++; return; } break; + case 2: if (player->speedct<2) { player->speedct++; return; } break; + case 3: if (player->speedct<1) { player->speedct++; return; } break; + } + } + if (player->speed<5) + { + ProcessControls1(); + player->speedct=0; + AnimateEntity(player); + } + switch (player->speed) + { + case 5: for (i=0; i<2; i++) { ProcessControls1(); AnimateEntity(player); } return; + case 6: for (i=0; i<3; i++) { ProcessControls1(); AnimateEntity(player); } return; + case 7: for (i=0; i<4; i++) { ProcessControls1(); AnimateEntity(player); } return; + } +} + +void GameTick() +{ + UpdateControls(); + CheckMessages(); + if (bindarray[last_pressed]) + HookKey(bindarray[last_pressed]); + ProcessControls(); + if (speeddemon && key[SCAN_CTRL]) ProcessControls(); + ProcessEntities(); +} + diff --git a/16/v2/source/verge/ENGINE/ENGINE.H b/16/v2/source/verge/ENGINE/ENGINE.H new file mode 100644 index 00000000..d65545fe --- /dev/null +++ b/16/v2/source/verge/ENGINE/ENGINE.H @@ -0,0 +1,106 @@ +/* +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. +*/ + +// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +// CHANGELOG: +// +// + added ScreenShot() headers +// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + + +#ifndef ENGINE_H +#define ENGINE_H + +typedef struct +{ + word start; // strand start + word finish; // strand end + word delay; // tile-switch delay + word mode; // tile-animation mode +} vspanim_r; + +typedef struct +{ + char pmultx,pdivx; // parallax multiplier/divisor for X + char pmulty,pdivy; // parallax multiplier/divisor for Y + unsigned short sizex, sizey; // layer dimensions. + unsigned char trans, hline; // transparency flag | hline (raster fx) +} layer_r; + +typedef struct +{ + char name[40]; // zone name/desc + unsigned short script; // script to call thingy + unsigned short percent; // chance of executing + unsigned short delay; // step-delay + unsigned short aaa; // Accept Adjacent Activation + unsigned short entityscript; // script to call for entities +} zoneinfo; + +extern layer_r layer[4]; // Array of layer data +extern vspanim_r vspanim[100]; // tile animation data +extern unsigned short vadelay[100]; // Tile animation delay ctr + +extern char mapname[60]; // MAP filename +extern char vspname[60]; // VSP filemap +extern char rstring[20]; // render-order string +extern char numlayers; // number of layers in map +extern byte *obstruct, *zone; // obstruction and zone buffers +extern int bufsize; // how many bytes need to be written +extern char layertoggle[4]; // layer visible toggles + +extern word *layers[4]; // Raw layer data +extern int xwin, ywin; + +// -- entity things -- + +extern char *msbuf[100]; // ptr-table to script offset +extern char *ms; // script text buffer +extern byte nms; // number of movescripts + +extern char numfollowers; // number of party followers +extern byte follower[10]; // maximum of 10 followers. +extern char laststeps[10]; // record of last movements +extern int lastent; + +// -- vsp data -- + +extern byte *vsp,*vspmask; // VSP data buffer. +extern unsigned short numtiles; // number of tiles in VSP. +extern unsigned short *tileidx; // tile index thingamajig +extern char *flipped; // bi-direction looping flag +extern byte movegranularity, phantom, speeddemon, movectr; +extern int bindarray[128]; + +// -- prototypes -- + +extern void LoadVSP(char *fname); +extern void FreeVSP(void); +extern void LoadMAP(char *fname); +extern void FreeMAP(void); +extern void MAPswitch(void); +extern void MAPstats(void); +extern void ProcessControls(void); +extern void GameTick(void); + +extern void ReadCompressedLayer1(byte*, int, char*); + +//--- zero 5.7.99 +void WritePalette(FILE *f); +void WritePCXLine(unsigned char *p,int len,FILE *pcxf); +void ScreenShot(); +// +#endif // ENGINE_H diff --git a/16/v2/source/verge/ENGINE/ENTITY.C b/16/v2/source/verge/ENGINE/ENTITY.C new file mode 100644 index 00000000..add3758a --- /dev/null +++ b/16/v2/source/verge/ENGINE/ENTITY.C @@ -0,0 +1,716 @@ +/* +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. +*/ + +// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +// CHANGELOG: +// +// + corrected oversight in movement script management by sticking a hack in +// MoveScript(). Bug caused Fx commands to not work sometimes. +// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + +#define ENTITY_H +#include "verge.h" + +// ================================= Data ==================================== + +typedef struct +{ + int x, y; // xwc, ywx position + word tx, ty; // xtc, ytc position + byte facing; // direction entity is facing + byte moving, movecnt; // direction entity is moving + byte frame; // bottom-line frame to display + byte specframe; // special-frame set thingo + byte chrindex, reset; // CHR index | Reset animation + byte obsmode1, obsmode2; // can be obstructed | Is an obstruction + byte speed, speedct; // entity speed, speedcount :) + byte delayct; // animation frame-delay + char *animofs, *scriptofs; // anim script | move script + byte face, actm; // auto-face | activation mode + byte movecode, movescript; // movement type | movement script + byte ctr, mode; // sub-tile move ctr, mode flag (internal) + word step, delay; // step, delay + word stepctr, delayctr; // internal use counters + word data1, data2, data3; // + word data4, data5, data6; // + int actscript; // activation script + int expand1, expand2; // + int expand3, expand4; // + char desc[20]; // Entity description. +} entity_r; + +typedef struct +{ + byte *imagedata; // CHR frame data + int fxsize, fysize; // frame x/y dimensions + int hx, hy; // x/y obstruction hotspot + int totalframes; // total # of frames. + int lidle, ridle; + int uidle, didle; + char lanim[100]; + char ranim[100]; + char uanim[100]; + char danim[100]; +} chrdata; + +typedef struct +{ + char t[60]; +} chrlist_r; + +chrlist_r chrlist[100]; +byte nmchr,playernum; +entity_r *player=0; +entity_r entity[256]; +byte entities=0; +chrdata chr[100]; +byte numchrs=0; +byte entidx[256], cc; +byte movesuccess; + +// ================================= Code ==================================== + +int ObstructionAt(int tx, int ty) +{ + if (obstruct[(ty*layer[0].sizex)+tx]) return 1; + if (tx==-1 || ty==-1) return 1; + if (tx==layer[0].sizex || ty==layer[0].sizey) return 1; + return 0; +} + +int Zone(int tx, int ty) +{ + return zone[(ty*layer[0].sizex)+tx]; +} + +void LoadCHR(char *fname, chrdata *c) +{ + VFILE *f; + char b, *ptr=0; + int i; + + f=vopen(fname); + if (!f) err("Could not open CHR file %s.",fname); + vread(&b, 1, f); + if (b!=2) err("CHR %s incorrect CHR format version.",fname); + vread(&c->fxsize, 2, f); + vread(&c->fysize, 2, f); + vread(&c->hx, 2, f); + vread(&c->hy, 2, f); + vread(strbuf, 4, f); // skip the hotspot size. + vread(&c->totalframes, 2, f); + + vread(&i, 4, f); + ptr=(char *) valloc(i, "LoadCHR:ptr", OID_TEMP); + vread(ptr, i, f); + c->imagedata=(byte *) valloc(c->fxsize * c->fysize * c->totalframes, "LoadCHR:c->imagedata", OID_IMAGE); + ReadCompressedLayer1(c->imagedata, c->fxsize * c->fysize * c->totalframes, ptr); + vfree(ptr); + + + vread(&c->lidle, 4, f); + vread(&c->ridle, 4, f); + vread(&c->uidle, 4, f); + vread(&c->didle, 4, f); + + for (b=0; b<4; b++) + { + switch (b) + { + case 0: ptr=c->lanim; break; + case 1: ptr=c->ranim; break; + case 2: ptr=c->uanim; break; + case 3: ptr=c->danim; break; + } + vread(&i, 4, f); + if (i>100) err("Animation strand too long. %d",i); + vread(ptr, i, f); + } + vclose(f); +} + +int CacheCHR(char *fname) +{ + LoadCHR(fname, &chr[numchrs]); + numchrs++; + return (numchrs-1); +} + +void FreeCHRList() +{ + int i; + + for (i=0; i=numchrs) return; + b=entity[i].specframe ? entity[i].specframe : entity[i].frame; + TCopySpriteClip(dx-chr[a].hx, dy-chr[a].hy, chr[a].fxsize, chr[a].fysize, + (byte *) (chr[a].imagedata+(b*chr[a].fxsize* + chr[a].fysize))); +} + +static int cmpent(const void* a, const void* b) +{ + return entity[*(byte*)a].y - entity[*(byte*)b].y; +} + +void RenderEntities() +{ + int i; + + qsort(entidx, cc, 1, cmpent); + for (i=0; ianimofs==' ') p->animofs++; + while (*p->animofs>=48 && *p->animofs<=57) + { + token[j]=*p->animofs; + p->animofs++; + j++; + } + token[j]=0; + return atoi(token); +} + +void GetNextCommand(entity_r *p) +{ + byte s; + + while (*p->animofs==' ') p->animofs++; + s=*p->animofs; + p->animofs++; + switch (s) + { + case 'F': p->frame=GetArg(p); break; + case 'W': p->delayct=GetArg(p); break; + case 0: if (p->moving) + switch (p->facing) + { + case 0: p->animofs=chr[p->chrindex].danim; break; + case 1: p->animofs=chr[p->chrindex].uanim; break; + case 2: p->animofs=chr[p->chrindex].lanim; break; + case 3: p->animofs=chr[p->chrindex].ranim; break; + } + else + switch (p->facing) + { + case 0: p->animofs=0; p->frame=chr[p->chrindex].didle; break; + case 1: p->animofs=0; p->frame=chr[p->chrindex].uidle; break; + case 2: p->animofs=0; p->frame=chr[p->chrindex].lidle; break; + case 3: p->animofs=0; p->frame=chr[p->chrindex].ridle; break; + } + p->delayct=0; break; + } +} + +void AnimateEntity(entity_r *p) +{ + if (!p->animofs && p->moving) + { + switch (p->facing) + { + case 0: p->animofs=chr[p->chrindex].danim; break; + case 1: p->animofs=chr[p->chrindex].uanim; break; + case 2: p->animofs=chr[p->chrindex].lanim; break; + case 3: p->animofs=chr[p->chrindex].ranim; break; + } + p->delayct=0; + } + if (!p->animofs && !p->moving) + { + switch (p->facing) + { + case 0: p->animofs=0; p->frame=chr[p->chrindex].didle; break; + case 1: p->animofs=0; p->frame=chr[p->chrindex].uidle; break; + case 2: p->animofs=0; p->frame=chr[p->chrindex].lidle; break; + case 3: p->animofs=0; p->frame=chr[p->chrindex].ridle; break; + } + p->delayct=0; + } + if (p->delayct) + { + p->delayct--; + } + else GetNextCommand(p); +} + +int EntityAt(int ex, int ey) +{ int i; + + for (i=0; isx+chr[entity[i].chrindex].fxsize) continue; + if (dy<0 || dy>sy+chr[entity[i].chrindex].fysize) continue; + entidx[cc]=i; cc++; + } +} + +void MoveRight(int i) +{ + int tx,ty; + + tx=entity[i].tx+1; ty=entity[i].ty; + if (entity[i].obsmode1 && (ObstructionAt(tx,ty) || AEntityObsAt(tx,ty))) + { movesuccess=0; return; } + if (entity[i].facing!=3) + { + entity[i].delayct=0; + entity[i].animofs=0; + } + entity[i].x++; entity[i].facing=3; entity[i].moving=4; entity[i].ctr=15; + entity[i].tx++; movesuccess=1; entity[i].reset=0; +} + +void MoveLeft(int i) +{ + int tx, ty; + + tx=entity[i].tx-1; ty=entity[i].ty; + if (entity[i].obsmode1 && (ObstructionAt(tx,ty) || AEntityObsAt(tx,ty))) + { movesuccess=0; return; } + + if (entity[i].facing!=2) + { + entity[i].delayct=0; + entity[i].animofs=0; + } + entity[i].x--; entity[i].facing=2; entity[i].moving=3; entity[i].ctr=15; + entity[i].tx--; movesuccess=1; entity[i].reset=0; +} + +void MoveUp(int i) +{ + int tx, ty; + + tx=entity[i].tx; ty=entity[i].ty-1; + if (entity[i].obsmode1 && (ObstructionAt(tx,ty) || AEntityObsAt(tx,ty))) + { movesuccess=0; return; } + if (entity[i].facing!=1) + { + entity[i].delayct=0; + entity[i].animofs=0; + } + entity[i].y--; entity[i].facing=1; entity[i].moving=2; entity[i].ctr=15; + entity[i].ty--; movesuccess=1; entity[i].reset=0; +} + +void MoveDown(int i) +{ + int tx, ty; + + tx=entity[i].tx; ty=entity[i].ty+1; + if (entity[i].obsmode1 && (ObstructionAt(tx,ty) || AEntityObsAt(tx,ty))) + { movesuccess=0; return; } + if (entity[i].facing!=0) + { + entity[i].delayct=0; + entity[i].animofs=0; + } + entity[i].y++; entity[i].facing=0; entity[i].moving=1; entity[i].ctr=15; + entity[i].ty++; movesuccess=1; entity[i].reset=0; +} + +void Wander1(int i) +{ + if (!entity[i].data1) + { + entity[i].data2=rnd(0,3); + entity[i].data1=entity[i].step+1; + } + if (entity[i].data1==1) + { + entity[i].delayctr++; + if (entity[i].delayctr>=entity[i].delay) + entity[i].data1=0; + return; + } + if (entity[i].data1>1) + { + switch(entity[i].data2) + { + case 0: MoveUp(i); break; + case 1: MoveDown(i); break; + case 2: MoveLeft(i); break; + case 3: MoveRight(i); break; + } + entity[i].data1--; + if (entity[i].data1==1) + { + entity[i].delayctr=0; + entity[i].animofs=0; + entity[i].delayct=0; + } + } +} + +void Wander2(int i) +{ + if (!entity[i].data1) + { + entity[i].data3=rnd(0,3); + entity[i].data1=entity[i].step+1; + } + if (entity[i].data1==1) + { + entity[i].delayctr++; + if (entity[i].delayctr>=entity[i].delay) + entity[i].data1=0; + return; + } + if (entity[i].data1>1) + { + switch(entity[i].data3) + { + case 0: if (Zone(entity[i].tx,entity[i].ty-1)==entity[i].data2) MoveUp(i); break; + case 1: if (Zone(entity[i].tx,entity[i].ty+1)==entity[i].data2) MoveDown(i); break; + case 2: if (Zone(entity[i].tx-1,entity[i].ty)==entity[i].data2) MoveLeft(i); break; + case 3: if (Zone(entity[i].tx+1,entity[i].ty)==entity[i].data2) MoveRight(i); break; + } + entity[i].data1--; + if (entity[i].data1==1) entity[i].delayctr=0; + } +} + +void Wander3(int i) +{ + if (!entity[i].data1) + { + entity[i].data2=rnd(0,3); + entity[i].data1=entity[i].step+1; + } + if (entity[i].data1==1) + { + entity[i].delayctr++; + if (entity[i].delayctr>=entity[i].delay) + entity[i].data1=0; + return; + } + if (entity[i].data1>1) + { + switch(entity[i].data2) + { + case 0: if (entity[i].ty>entity[i].data3) MoveUp(i); break; + case 1: if (entity[i].tyentity[i].data2) MoveLeft(i); break; + case 3: if (entity[i].tx=48 && *entity[i].scriptofs<=57) + { + token[j]=*entity[i].scriptofs; + entity[i].scriptofs++; + j++; + } + token[j]=0; + entity[i].data1=atoi(token); +} + +void GetNextCommandMS(int i) +{ unsigned char s; + + Whitespace(i); + s=*entity[i].scriptofs; + entity[i].scriptofs++; + switch (s) + { + case 'U': entity[i].mode=1; GetArgMS(i); break; + case 'D': entity[i].mode=2; GetArgMS(i); break; + case 'L': entity[i].mode=3; GetArgMS(i); break; + case 'R': entity[i].mode=4; GetArgMS(i); break; + case 'S': entity[i].mode=5; GetArgMS(i); break; + case 'W': entity[i].mode=6; GetArgMS(i); entity[i].animofs=0; + entity[i].delayct=0; break; + case 0: switch (entity[i].facing) + { + case 0: entity[i].animofs=0; entity[i].frame=chr[entity[i].chrindex].didle; break; + case 1: entity[i].animofs=0; entity[i].frame=chr[entity[i].chrindex].uidle; break; + case 2: entity[i].animofs=0; entity[i].frame=chr[entity[i].chrindex].lidle; break; + case 3: entity[i].animofs=0; entity[i].frame=chr[entity[i].chrindex].ridle; break; + } + entity[i].movecode=0; entity[i].mode=7; entity[i].data1=0; + entity[i].scriptofs=0; entity[i].delayct=0; break; + case 'C': entity[i].mode=8; GetArgMS(i); break; + case 'B': entity[i].mode=9; break; + case 'X': entity[i].mode=10; GetArgMS(i); break; + case 'Y': entity[i].mode=11; GetArgMS(i); break; + case 'F': entity[i].mode=12; GetArgMS(i); break; + case 'Z': entity[i].mode=13; GetArgMS(i); break; + default: err("Invalid entity movement script."); + } +} + +void MoveScript(int i) +{ + if (!entity[i].scriptofs) entity[i].scriptofs=(char *) (int) ms+(int) msbuf[entity[i].movescript]; + if (!entity[i].mode) GetNextCommandMS(i); + + switch(entity[i].mode) + { + case 1: MoveUp(i); if (movesuccess) entity[i].data1--; break; + case 2: MoveDown(i); if (movesuccess) entity[i].data1--; break; + case 3: MoveLeft(i); if (movesuccess) entity[i].data1--; break; + case 4: MoveRight(i); if (movesuccess) entity[i].data1--; break; + case 5: entity[i].speed=entity[i].data1; entity[i].data1=0; break; + case 6: entity[i].data1--; break; + case 7: return; + case 8: ExecuteEvent(entity[i].data1); entity[i].data1=0; break; + case 9: entity[i].scriptofs=(char *) (int) ms+(int) msbuf[entity[i].movescript]; + entity[i].data1=0; break; + case 10: if (entity[i].txentity[i].data1) MoveLeft(i); + if (entity[i].tx==entity[i].data1) entity[i].data1=0; break; + break; + case 11: if (entity[i].tyentity[i].data1) MoveUp(i); + if (entity[i].ty==entity[i].data1) entity[i].data1=0; break; + break; + case 12: entity[i].facing=entity[i].data1; + entity[i].data1=0; + //--- zero 5.6.99 + switch(entity[i].facing) + { + case 0: entity[i].frame=chr[entity[i].chrindex].didle; break; + case 1: entity[i].frame=chr[entity[i].chrindex].uidle; break; + case 2: entity[i].frame=chr[entity[i].chrindex].lidle; break; + case 3: entity[i].frame=chr[entity[i].chrindex].ridle; break; + } + //--- + break; + case 13: entity[i].specframe=entity[i].data1; + entity[i].data1=0; break; + } + if (!entity[i].data1) entity[i].mode=0; +} + +void TestActive(int i) +{ + int dx, dy; + + dx=abs(entity[i].x - player->x); + dy=abs(entity[i].y - player->y); + if ((dx<=16 && dy<=3) || (dx<=3 && dy<=16)) + { + if (!entity[i].expand4 && !invc) + { + entity[i].expand4=1; + ExecuteEvent(entity[i].actscript); + } + } + else + entity[i].expand4=0; +} + +void ProcessEntity1(int i) +{ + entity[i].speedct=0; + if (entity[i].actm) TestActive(i); + + if (!entity[i].moving) + { + switch(entity[i].movecode) + { + case 0: return; + case 1: Wander1(i); break; + case 2: Wander2(i); break; + case 3: Wander3(i); break; + case 4: MoveScript(i); break; + default: err("unknown entity movement pattern."); + } + if (!entity[i].reset) return; + } + + if (entity[i].reset) + { + entity[i].animofs=0; + entity[i].delayct=0; + entity[i].reset=0; + } + + if (entity[i].moving) + { + if (entity[i].moving==1) + { entity[i].y++; entity[i].ctr--; AnimateEntity(&entity[i]); } + if (entity[i].moving==2) + { entity[i].y--; entity[i].ctr--; AnimateEntity(&entity[i]); } + if (entity[i].moving==4) + { entity[i].x++; entity[i].ctr--; AnimateEntity(&entity[i]); } + if (entity[i].moving==3) + { entity[i].x--; entity[i].ctr--; AnimateEntity(&entity[i]); } + if (!entity[i].ctr) { entity[i].reset=1; entity[i].moving=0; } + } +} + +void ProcessEntity(int i) +{ int j; + + if (player==&entity[i]) return; + if (entity[i].speed<4) + { + switch (entity[i].speed) + { + case 1: if (entity[i].speedct<3) { entity[i].speedct++; return; } + case 2: if (entity[i].speedct<2) { entity[i].speedct++; return; } + case 3: if (entity[i].speedct<1) { entity[i].speedct++; return; } + } + } + if (entity[i].speed<5) + { + ProcessEntity1(i); + entity[i].speedct=0; + } + switch (entity[i].speed) + { + case 5: for (j=0; j<2; j++) { ProcessEntity1(i); } return; + case 6: for (j=0; j<3; j++) { ProcessEntity1(i); } return; + case 7: for (j=0; j<4; j++) { ProcessEntity1(i); } return; + } +} + +void ProcessEntities() +{ + int i; + + SiftEntities(); + for (i=0; i +#include +#include +#include "verge.h" + +// ================================= Data ==================================== + +#ifndef __WATCOMC__ +#define INT_MAX 0xFFFFFFFF +#define INT_MIN 0 +#endif + +#ifndef MIN +#define MIN(x,y) (((x) < (y)) ? (x) : (y)) +#define MAX(x,y) (((x) > (y)) ? (x) : (y)) +#define MID(x,y,z) MAX((x), MIN((y), (z))) +#endif + +#ifndef ABS +#define ABS(x) (((x) >= 0) ? (x) : (-(x))) +#endif + +#ifndef SGN +#define SGN(x) (((x) >= 0) ? 1 : -1) +#endif + +#define FLI_MAGIC 0xAF11 // file header magic number +#define FLC_MAGIC 0xAF12 // file magic number (Pro) +#define FLI_FRAME_MAGIC 0xF1FA // frame header magic number +#define FLI_FRAME_PREFIX 0xF100 // FLC's prefix info +#define FLI_FRAME_USELESS 0x00A1 // FLC's garbage frame + +typedef struct +{ + int w,h; + byte *data; +} BITMAP; + +#define FLI_OK 0 /* FLI player return values */ +#define FLI_EOF -1 +#define FLI_ERROR -2 +#define FLI_NOT_OPEN -3 + +#ifdef __WATCOMC__ +#define PACKED +#pragma pack(1); +#endif + +#ifdef __DJGPP__ +#define PACKED __attribute__ ((packed)) +#endif + +typedef struct +{ + long size PACKED; + word type PACKED; + word frame_count PACKED; + word width PACKED; + word height PACKED; + word bpp PACKED; + word flags PACKED; + word speed PACKED; + long next_head PACKED; + long frames_in_table PACKED; + char reserved[102] PACKED; +} FLI_HEADER; + +typedef struct +{ + quad size PACKED; + word type PACKED; + word chunks PACKED; + char pad[8] PACKED; +} FLI_FRAME; + +typedef struct +{ + quad size PACKED; + word type PACKED; +} FLI_CHUNK; + +#ifdef __WATCOMC__ +#pragma pack(); +#endif + +static int fli_status = FLI_NOT_OPEN; // current state of the FLI player + +int fli_bitmap_width = 0; +int fli_bitmap_height = 0; +byte *fli_bitmap_data = NULL; // current frame of the FLI +byte fli_palette[768]; // current palette the FLI is using + +int fli_bmp_dirty_from = INT_MAX; // what part of fli_bitmap is dirty +int fli_bmp_dirty_to = INT_MIN; +int fli_pal_dirty_from = INT_MAX; // what part of fli_palette is dirty +int fli_pal_dirty_to = INT_MIN; + +int fli_frame = 0; // current frame number in the FLI +long speed; + +static int fli_file = 0; // the file we are reading + +static byte *fli_mem_data = NULL; // the memory FLI we are playing +static int fli_mem_pos = 0; // position in the memory FLI + +static FLI_HEADER fli_header; // header structure +static FLI_FRAME frame_header; // frame header structure + +// a block of temporary working memory +byte *_scratch_mem = NULL; +int _scratch_mem_size = 0; + +// ================================= Code ==================================== + +void reset_fli_variables(void); +void close_fli(void); +int next_fli_frame(int); +int open_fli(char *); +int open_memory_fli(byte *); + +void _grow_scratch_mem(int size) +{ + if (size > _scratch_mem_size) { + size = (size+1023) & 0xFFFFFC00; + _scratch_mem = realloc(_scratch_mem, size); + _scratch_mem_size = size; + } +} + +void vsync() +{ + while (!(inp(986) & 8)); +} + +void set_palette_range(byte *pal, int from, int to, int sync) +{ + int i; + + // swap? + if (to=256) to=255; + + if (sync) vsync(); + + outp(968, from); + for (i=from; i<=to; i++) + { + outp(969, pal[(i*3)+0]); + outp(969, pal[(i*3)+1]); + outp(969, pal[(i*3)+2]); + } +} + +static byte *fli_read(byte *buf, int size) +{ + int result; + + if (fli_mem_data) + { + if (buf) + memcpy(buf, fli_mem_data+fli_mem_pos, size); + else + buf = fli_mem_data+fli_mem_pos; + + fli_mem_pos += size; + } + else + { + if (!buf) + { + _grow_scratch_mem(size); + buf = _scratch_mem; + } + + result = read(fli_file, buf, size); + if (result != size) + return NULL; + } + return buf; +} + +static void fli_seek(int offset, int mode) +{ + if (fli_mem_data) + { + if (mode == SEEK_CUR) + fli_mem_pos += offset; + else + fli_mem_pos = offset; + } + else + lseek(fli_file, offset, mode); +} + +// helpers for reading FLI chunk data +#define READ_BYTE() ((sz-- > 0) ? *(((byte *)p)++) : 0) +#define READ_CHAR() ((sz-- > 0) ? *(((signed char *)p)++) : 0) +#define READ_SHORT() (((sz-=2) > 0) ? *(((signed short *)p)++) : 0) + +#define READ_BLOCK(pos, size) \ + { \ + if (sz >= (size)) \ + { \ + memcpy(pos, p, size); \ + p += (size); \ + sz -= (size); \ + } \ + else \ + { \ + char *_p = (char *)(pos); \ + int _c; \ + \ + for (_c=0; _c < (size); _c++) \ + *(_p++) = READ_BYTE(); \ + } \ + } + +#define READ_RLE_BYTE(pos, size) \ + { \ + memset(pos, READ_BYTE(), size); \ + } + +#define READ_RLE_WORD(pos, size) \ + { \ + short *_p = (short *)(pos); \ + short _v = READ_SHORT(); \ + int _c; \ + \ + for (_c=0; _c < (size); _c++) \ + *(_p++) = _v; \ + } + +static void do_fli_256_color(byte *p, int sz) +{ + int packets; + int c, c2; + int offset; + int length; + + offset = 0; + packets = READ_SHORT(); + for (c=0; c 0) + { + packets = READ_SHORT(); + + while (packets < 0) + { + if (packets & 0x4000) + y -= packets; + else + fli_bitmap_data[(y*fli_bitmap_width)+fli_bitmap_width-1]=packets&0xff; + //fli_bitmap->line[y][fli_bitmap->w-1] = packets & 0xFF; + + packets = READ_SHORT(); + } + x=0; + while (packets-- > 0) + { + // skip bytes + x += READ_BYTE(); + + size = READ_CHAR(); + + // copy size words + if (size > 0) + { + READ_BLOCK(fli_bitmap_data+(y*fli_bitmap_width)+x, size*2); + //READ_BLOCK(fli_bitmap->line[y]+x, size*2); + x += size*2; + } + // repeat word -size times + else if (size < 0) + { + READ_RLE_WORD(fli_bitmap_data+(y*fli_bitmap_width)+x, -size); + //READ_RLE_WORD(fli_bitmap->line[y]+x, -size); + x -= size*2; + } + } + fli_bmp_dirty_from = MIN(fli_bmp_dirty_from, y); + fli_bmp_dirty_to = MAX(fli_bmp_dirty_to, y); + y++; + } +} + +static void do_fli_color(byte *p, int sz) +{ + int packets; + int c, c2; + int offset; + int length; + + offset = 0; + packets = READ_SHORT(); + + for (c=0; c 0) + { + packets = READ_BYTE(); + x = 0; + while (packets-- > 0) + { + x += READ_BYTE(); + size = READ_CHAR(); + + // copy size bytes + if (size > 0) + { + READ_BLOCK(fli_bitmap_data+(y*fli_bitmap_width)+x, size); + //READ_BLOCK(fli_bitmap->line[y]+x, size); + x += size; + } + else if (size < 0) + { + READ_RLE_BYTE(fli_bitmap_data+(y*fli_bitmap_width)+x, -size); + //READ_RLE_BYTE(fli_bitmap->line[y]+x, -size); + x -= size; + } + } + y++; + } +} + +static void do_fli_black(byte *p, int sz) +{ + memset(fli_bitmap_data, 0, fli_bitmap_width*fli_bitmap_height); + //clear(fli_bitmap); + + fli_bmp_dirty_from = 0; + fli_bmp_dirty_to = fli_bitmap_height-1; +} + +static void do_fli_brun(byte *p, int sz) +{ + int packets; + int size; + int x, y; + + // for each line... + for (y=0; y 0) + { + size = READ_CHAR(); + if (size < 0) + { + READ_BLOCK(fli_bitmap_data+(y*fli_bitmap_width)+x, -size); + //READ_BLOCK(fli_bitmap->line[y]+x, -size); + x -= size; + } + // repeat byte size times + else if (size > 0) + { + READ_RLE_BYTE(fli_bitmap_data+(y*fli_bitmap_width)+x, size); + //READ_RLE_BYTE(fli_bitmap->line[y]+x, size); + x += size; + } + } + } + fli_bmp_dirty_from = 0; + fli_bmp_dirty_to = fli_bitmap_height-1; +} + +static void do_fli_copy(byte *p, int sz) +{ + READ_BLOCK(fli_bitmap_data, fli_bitmap_width * fli_bitmap_height); + //READ_BLOCK(fli_bitmap->dat, fli_bitmap->w * fli_bitmap->h); + + fli_bmp_dirty_from = 0; + fli_bmp_dirty_to = fli_bitmap_height-1; +} + +static void read_frame() +{ + byte *p; + FLI_CHUNK *chunk; + int c, sz; + + if (fli_status != FLI_OK) + return; + +get_another_frame: + if (!fli_read((byte *)&frame_header, sizeof(FLI_FRAME))) + { + fli_status = FLI_ERROR; + return; + } + + if ((frame_header.type == FLI_FRAME_PREFIX) + || (frame_header.type == FLI_FRAME_USELESS)) + { + fli_seek(frame_header.size-sizeof(FLI_FRAME), SEEK_CUR); + fli_frame++; + + goto get_another_frame; + } + + if (frame_header.type != FLI_FRAME_MAGIC) + { + fli_status = FLI_ERROR; + return; + } + + if (frame_header.size == sizeof(FLI_FRAME)) + { + fli_frame++; + return; + } + p = fli_read(NULL, frame_header.size-sizeof(FLI_FRAME)); + if (!p) + { + fli_status = FLI_ERROR; + return; + } + for (c=0; csize - sizeof(FLI_CHUNK); + p += sizeof(FLI_CHUNK); + switch (chunk->type) + { + case 4: do_fli_256_color(p, sz); break; + case 7: do_fli_delta(p, sz); break; + case 11: do_fli_color(p, sz); break; + case 12: do_fli_lc(p, sz); break; + case 13: do_fli_black(p, sz); break; + case 15: do_fli_brun(p, sz); break; + case 16: do_fli_copy(p, sz); break; + default: err("Corrupt FLI chunk."); + } + p = ((byte *)chunk) + chunk->size; + } + fli_frame++; +} + +static int do_play_fli(BITMAP *bmp, int loop, int (*callback)()) +{ + int ret; + + ret = next_fli_frame(loop); + while (ret == FLI_OK) + { + if (fli_pal_dirty_from <= fli_pal_dirty_to) + set_palette_range(fli_palette, fli_pal_dirty_from, fli_pal_dirty_to, 1); + + if (fli_bmp_dirty_from <= fli_bmp_dirty_to) + { + int i,to=fli_bmp_dirty_to; + if (to>=bmp->h) to=bmp->h-1; + +// vsync(); + for (i=fli_bmp_dirty_from; i<=to; i++) + { + memcpy(bmp->data+(i*bmp->w), fli_bitmap_data+(i*fli_bitmap_width), + (fli_bitmap_width>bmp->w) ? bmp->w : fli_bitmap_width); + } + + //blit( + // fli_bitmap, bmp, 0, fli_bmp_dirty_from, 0, fli_bmp_dirty_from, + // fli_bitmap->w, 1+fli_bmp_dirty_to-fli_bmp_dirty_from); + } + + reset_fli_variables(); + + if (callback) + { + ret = (*callback)(); + if (ret != FLI_OK) + break; + } + ret = next_fli_frame(loop); + while (timer_count= fli_header.frame_count) + { + if (loop) + { + fli_seek(sizeof(FLI_HEADER), SEEK_SET); + fli_frame = 0; + } + else + { + fli_status = FLI_EOF; + return fli_status; + } + } + read_frame(); + return fli_status; +} + +void reset_fli_variables() +{ + fli_bmp_dirty_from = INT_MAX; + fli_bmp_dirty_to = INT_MIN; + fli_pal_dirty_from = INT_MAX; + fli_pal_dirty_to = INT_MIN; +} diff --git a/16/v2/source/verge/ENGINE/FLI.H b/16/v2/source/verge/ENGINE/FLI.H new file mode 100644 index 00000000..b18995b4 --- /dev/null +++ b/16/v2/source/verge/ENGINE/FLI.H @@ -0,0 +1,28 @@ +/* +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. +*/ + +#ifndef FLI_H +#define FLI_H + +typedef struct +{ + int w,h; + byte *data; +} BITMAP; + +int play_fli(char *filename, BITMAP *bmp, int loop, int (*callback)()); +int play_memory_fli(byte *fli_data, BITMAP *bmp, int loop, int (*callback)()); +#endif diff --git a/16/v2/source/verge/ENGINE/FONT.C b/16/v2/source/verge/ENGINE/FONT.C new file mode 100644 index 00000000..d9621ae4 --- /dev/null +++ b/16/v2/source/verge/ENGINE/FONT.C @@ -0,0 +1,103 @@ +/* +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 FONT_H +#include "verge.h" + +// ================================= Data ==================================== + +struct fontstruct +{ + byte width, height; // Font character dimensions + byte *data; // Font bitmap data +}; + +struct fontstruct font[10]; // Font stuff; +int numfonts=0; // number of loaded fonts. +int curx, cury; // x/y font location +char tc=0; // text color + +// ================================= Code ==================================== + +int LoadFont(char *fname) +{ VFILE *f=0; + struct fontstruct *cfont=0; + int z=0; + + if (!(f=vopen(fname))) + err("Could not open font %s. \n",fname); + + // alias current font struct + cfont=font+numfonts; + + if (vgetc(f) != 1) + err("Font file incorrect version number. \n"); + + // font dims + cfont->width=vgetw(f); + cfont->height=vgetw(f); + + // get num of sub-set; calc total bytes as well + z=vgetw(f) * 96 * cfont->width*cfont->height; + + // nab room for font and read it in + cfont->data=(byte *)valloc(z, "LoadFont:cfont->data", OID_IMAGE); + vread(cfont->data, z, f); + + vclose(f); + + return numfonts++; +} + +void TextColor(int c) +{ + tc=c; +} + +void GotoXY(int x, int y) +{ + curx=x; + cury=y; +} + +static void pchar(int fnt, int x, int y, unsigned char c) +{ + int w; + if (c>31 && c<127) + { + w=font[fnt].width,h=font[fnt].height; + TCopySpriteClip(x,y, w,h, font[fnt].data+((c-32)*w*h)+((tc&3)*96*w*h)); + } +} + +void printstring(int fnt, char *str) +{ + if (fnt<0 || fnt >= numfonts) + return; + for (; *str; str++) + { + unsigned char c=*str; + switch (c) + { + case 126: tc=0; str++; continue; + case 128: tc=1; str++; continue; + case 129: tc=2; str++; continue; + case 130: tc=3; str++; continue; + } + pchar(fnt,curx,cury,c); + curx+=font[fnt].width; + } +} \ No newline at end of file diff --git a/16/v2/source/verge/ENGINE/FONT.H b/16/v2/source/verge/ENGINE/FONT.H new file mode 100644 index 00000000..f8300c2d --- /dev/null +++ b/16/v2/source/verge/ENGINE/FONT.H @@ -0,0 +1,37 @@ +/* +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. +*/ + +#ifndef FONT_H +#define FONT_H + +struct fontstruct +{ + byte width, height; // Font character dimensions + byte *data; // Font bitmap data +}; + +extern struct fontstruct font[10]; // Font stuff; +extern int numfonts; // number of loaded fonts. +extern int curx, cury; + +extern int LoadFont(char *fname); +extern void TextColor(int c); +extern void NumColor(int c); +extern void GotoXY(int x, int y); +extern void printstring(int fnt, char *str); +extern void dec_to_asciiz(int num, char *buf); + +#endif // FONT_H diff --git a/16/v2/source/verge/ENGINE/IMAGE.C b/16/v2/source/verge/ENGINE/IMAGE.C new file mode 100644 index 00000000..25c57ec4 --- /dev/null +++ b/16/v2/source/verge/ENGINE/IMAGE.C @@ -0,0 +1,709 @@ +/* +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. +*/ + +// Mega kudos to aen for porting that GIF code. + +#include +#include "verge.h" + +// ========================= PCX Imaging routines ============================ + +char manufacturer; // pcx header +char version; +char encoding; +char bits_per_pixel; +word xmin, ymin; +word xmax, ymax; +word hres, vres; +char palette[48]; +char reserved; +char color_planes; +word bytes_per_line; +word palette_type; +char filler[58]; + +word width, depth; +word bytes; +byte c, run, ss=0; +quad vidoffset, n=0; +VFILE *pcxf; +char *cb,*src; +int i; + +// ================================= Code ==================================== + +void ReadPCXLine(byte *dest) +{ n=0; + while (n=0xc0) //(c & 0xc0)==0xc0) + { + run=c & 0x3f; + c=vgetc(pcxf); //*src++; + } + while (run--) + dest[vidoffset+n++]=c; + } + vseek(pcxf, bytes_per_line-width, 1); +} + +void LoadPCXHeader(char *fname) +{ + if (!(pcxf=vopen(fname))) err("Could not open PCX file %s.",fname); + vread(&manufacturer,1,pcxf); + vread(&version,1,pcxf); + vread(&encoding,1,pcxf); + vread(&bits_per_pixel,1,pcxf); + vread(&xmin,2,pcxf); + vread(&ymin,2,pcxf); + vread(&xmax,2,pcxf); + vread(&ymax,2,pcxf); + vread(&hres,2,pcxf); + vread(&vres,2,pcxf); + vread(&palette,48,pcxf); + vread(&reserved,1,pcxf); + vread(&color_planes,1,pcxf); + vread(&bytes_per_line,2,pcxf); + vread(&palette_type,2,pcxf); + vread(&filler,58,pcxf); + //vseek(pcxf,filesize(pcxf)-768,SEEK_SET); + //vread(&pal,768,pcxf); + vseek(pcxf,128L,SEEK_SET); + width=xmax-xmin+1; + depth=ymax-ymin+1; + + bytes=bytes_per_line; + + //for (i=0; i<768; i++) + // pal[i]=pal[i] >> 2; +// SetPalette((byte *) &pal); + + //i=filesize(pcxf); + //cb=(char *) valloc(i-896, "LoadPCXHeader:cb", OID_TEMP); + //vread(cb, i-(128+768+1), pcxf); +} + +void LoadPCXHeaderNP(char *fname) +{ + if (!(pcxf=vopen(fname))) err("Could not open PCX file %s.",fname); + vread(&manufacturer,1,pcxf); + vread(&version,1,pcxf); + vread(&encoding,1,pcxf); + vread(&bits_per_pixel,1,pcxf); + vread(&xmin,2,pcxf); + vread(&ymin,2,pcxf); + vread(&xmax,2,pcxf); + vread(&ymax,2,pcxf); + vread(&hres,2,pcxf); + vread(&vres,2,pcxf); + vread(&palette,48,pcxf); + vread(&reserved,1,pcxf); + vread(&color_planes,1,pcxf); + vread(&bytes_per_line,2,pcxf); + vread(&palette_type,2,pcxf); + vread(&filler,58,pcxf); + vseek(pcxf,filesize(pcxf)-768,SEEK_SET); + vread(&pal,768,pcxf); + vseek(pcxf,128L,SEEK_SET); + width=xmax-xmin+1; + depth=ymax-ymin+1; + bytes=bytes_per_line; + + i=filesize(pcxf); + cb=(char *) valloc(i-896, "LoadPCXHeaderNP:cb", OID_TEMP); + vread(cb, i-896, pcxf); +} + +void LoadPCX(char *fname, byte *dest) +{ + LoadPCXHeader(fname); + + src=cb; + for (i=0; i>=2; + } + //vfree(cb); + vclose(pcxf); + return buf; +} + +// ========================= BMP Imaging routines ============================ + +struct RGBQUAD +{ + unsigned char r,g,b,a; +}; + +struct RGBQUAD bmppalette[256]; + +// ================================= Code ==================================== + +byte *LoadBMPBuf(char *fname) +{ byte pad[4], *buf; + VFILE* bmpfile; + int bwidth, bheight, y; + + if (!(bmpfile=vopen(fname))) err("Could not open BMP file %s.",fname); + vseek(bmpfile, 18, SEEK_SET); + vread(&bwidth, 4, bmpfile); width=bwidth; + vread(&bheight, 4, bmpfile); depth=bheight; + vseek(bmpfile, 54, SEEK_SET); + vread(bmppalette, 1024, bmpfile); + buf=(byte*) valloc(bwidth*bheight, "LoadBMPBuf:buf", OID_IMAGE); + + for (y=bheight-1; y>=0; y--) + { + vread((char *)((int)buf+y*width),width,bmpfile); + vread(pad,width%4,bmpfile); + } + for (y=0; y<256; y++) + { + pal[y*3]=bmppalette[y].b >> 2; + pal[y*3+1]=bmppalette[y].g >> 2; + pal[y*3+2]=bmppalette[y].r >> 2; + } + SetPalette((byte*)pal); + vclose(bmpfile); + return buf; +} + +// ========================== GIF Imaging routines =========================== + +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned long u32; + +typedef signed char s8; +typedef signed short s16; +typedef signed long s32; + +typedef struct +{ + u8 bits; + u8 background; + u8 * palette; + u8 * image; + s16 wide, deep; +} gif_image_info; + +typedef struct +{ + char sig[7]; + s16 screenwide, screendeep; + u8 hflags; + u8 background; + u8 aspect; +} gif_header; + +typedef struct +{ + s16 top, left; + s16 wide, deep; + u8 iflags; +} gif_image_descriptor; + +int NO_CODE = -1,// TRUE = 1, + ERROR_EOF = 0, ERROR_BAD_CODE = 1, + ERROR_BAD_HEADER = 2, ERROR_BAD_STARTCODE = 3, + ERROR_BAD_FIRST_CODE = 4, ERROR_BAD_FILE = 5, + ERROR_NO_IMAGE = 6; + +char* gif_error_messages[] = +{ + "Unexpected end of file\n", + "Bad code\n", + "Bad gif header\n", + "Bad symbol size\n", + "Bad first code\n", + "Error opening file\n", + "This file doesn't contain an image\n" +}; + +// read colour palette, vga palette values are 6 bit numbers +// while gif allows for 8 bit so shift right to get correct colours + +u8* gif_read_palette(FILE* fp, s32 bytes) +{ + s32 i = 0; + u8* block = 0L; + s32 components = (bytes / 3) * 3; + + block = (unsigned char *)valloc(components, "gif_read_palette:block", OID_IMAGE); + + for (i = 0; i < components; ++i) + block[i] = fgetc(fp) >> 2; + + return block; +} + +// read a block of bytes into memory +s32 block_mem_read(FILE* fp, u8* buffer, s32 bytes) +{ + s32 status = 0; + + status = fread(buffer, 1, bytes, fp); + if (status != bytes) return EOF; + + return TRUE; +} + +// read a unsigned 16 bit value from file, low byte first; note that this +// is reverse endian-ness (ie. fwrite(&s,1,2,fp); writes high byte first). + +s16 read_word_lbf(FILE* fp) +{ + s32 a, b; + + a = fgetc(fp); + b = fgetc(fp); + + return (b << 8) | a; +} + +// read the GIF file header structure into a sequence +gif_header* get_gif_header(FILE* fp) +{ + gif_header* h = 0L; + + h = (gif_header *)valloc(sizeof(gif_header), "get_gif_header:h", OID_IMAGE); + + fread(h->sig, 1, 6, fp); + h->sig[6] = 0; + + if (strncmp(h->sig, "GIF", 3) != 0) + return NULL; + + h->screenwide = read_word_lbf(fp); width=h->screenwide; + h->screendeep = read_word_lbf(fp); depth=h->screendeep; + h->hflags = fgetc(fp); + h->background = fgetc(fp); + h->aspect = fgetc(fp); + + return h; +} + +// gif file can contain more than one image, +// each image is preceeded by a header structure +gif_image_descriptor* get_image_descriptor(FILE* fp) +{ + gif_image_descriptor* id = 0L; + + id = (gif_image_descriptor *)valloc(sizeof(gif_image_descriptor), "get_image_descriptor:id", OID_IMAGE); + + id->left = read_word_lbf(fp); + id->top = read_word_lbf(fp); + id->wide = read_word_lbf(fp); + id->deep = read_word_lbf(fp); + id->iflags = fgetc(fp); + + return id; +} + +static u16 word_mask_table[] = +{ + 0x0000, 0x0001, 0x0003, 0x0007, + 0x000F, 0x001F, 0x003F, 0x007F, + 0x00FF, 0x01FF, 0x03FF, 0x07FF, + 0x0FFF, 0x1FFF, 0x3FFF, 0x7FFF +}; + +static u8 inc_table[] = { 8,8,4,2,0 }; +static u8 start_table[] = { 0,4,2,1,0 }; + +// enables me to use indices as per EUPHORiA (ie. converts to C's 0 base) +#define eui(i) ((i)-1) + +// unpack an LZW compressed image +// returns a sequence containing screen display lines of the image +u8* unpack_image(FILE* fp, s32 start_code_size, u32 width, u32 depth, u32 flags) +{ + u8* buffer; + u8* line_buffer; + + u16 first_code_stack[4096]; + u16 last_code_stack[4096]; + u16 code_stack[4096]; + + s32 bits_left; + s32 clear_code; + s32 code_size; + s32 code_size2; + s32 next_code; + s32 this_code; + s32 old_token; + s32 current_code; + s32 old_code; + s32 block_size=0; + s32 line; + s32 a_byte; + s32 pass; + s32 u; + + u8 b[256]; // read buffer; for block reads + u8* p; // current byte in read buffer + u8* q; // last byte in read buffer + 1 + + line_buffer = (u8 *)valloc(width, "unpack_image:line_buffer", OID_TEMP); + buffer = (u8 *)valloc(width * depth, "unpack_image:buffer", OID_IMAGE); + + a_byte = 0; + line = 0; + pass = 0; + bits_left = 8; + + if (start_code_size < 2 || start_code_size > 8) + err("\nERROR_BAD_STARTCODE"); // bad symbol size + + p = b; + q = b; + + clear_code = 1 << start_code_size; //pow(2, start_code_size); + next_code = clear_code + 2; + code_size = start_code_size + 1; + code_size2 = 1 << code_size; //pow(2, code_size); + old_code = NO_CODE; + old_token = NO_CODE; + + while (1) + { + if (bits_left == 8) + { + ++p; + if (p >= q) + { + block_size = fgetc(fp); + if (block_mem_read(fp, b, block_size) == EOF) + err("\nERROR_EOF"); + p = b; + q = b + block_size; + } + bits_left = 0; + } + + this_code = *p; + current_code = code_size + bits_left; + + if (current_code <= 8) + { + *p = *p >> code_size; + bits_left = current_code; + } + else + { + ++p; + if (p >= q) + { + block_size = fgetc(fp); + if (block_mem_read(fp, b, block_size) == EOF) + err("\nERROR_EOF"); + p = b; + q = b + block_size; + } + + this_code |= (*p << (8 - bits_left)); + + if (current_code <= 16) + { + bits_left = current_code - 8; + *p = *p >> bits_left; + } + else + { + if (++p >= q) + { + block_size = fgetc(fp); + if (block_mem_read(fp, b, block_size) == EOF) + err("\nERROR_EOF"); + p = b; + q = b + block_size; + } + + this_code |= (*p << (16 - bits_left)); + + bits_left = current_code - 16; + *p = *p >> bits_left; + } + } + + this_code &= word_mask_table[code_size]; + current_code = this_code; + + if (this_code == (clear_code+1) || block_size == 0) + break; + if (this_code > next_code) + err("\nERROR_BAD_CODE"); + + if (this_code == clear_code) + { + next_code = clear_code + 2; + code_size = start_code_size + 1; + code_size2 = 1 << code_size; //pow(2, code_size); + old_code = NO_CODE; + old_token = NO_CODE; + } + else + { + u = 1; + if (this_code == next_code) + { + if (old_code == NO_CODE) + err("\nERROR_BAD_FIRST_CODE"); + + first_code_stack[eui(u)] = old_token; + u++; + this_code = old_code; + } + + while (this_code >= clear_code) + { + first_code_stack[eui(u)] = last_code_stack[eui(this_code)]; + u++; + this_code = code_stack[eui(this_code)]; + } + + old_token = this_code; + while (1) + { + line_buffer[a_byte] = this_code; + a_byte++; + if (a_byte >= width) + { + // full image line so add it into screen image + memcpy(buffer + (line * width), line_buffer, width); + + a_byte = 0; + if (flags & 0x40) + { + line += inc_table[pass]; + if (line >= depth) + { + pass++; + line = start_table[pass]; + } + } + else + { + line++; + } + } + + // no more bytes on stack + if (u == 1) break; + + u--; + this_code = first_code_stack[eui(u)]; + } + + if (next_code < 4096 && old_code != NO_CODE) + { + code_stack[eui(next_code)] = old_code; + last_code_stack[eui(next_code)] = old_token; + next_code++; + if (next_code >= code_size2 && code_size < 12) + { + code_size++; + code_size2 = 1 << code_size; //pow(2, code_size); + } + } + + old_code = current_code; + } + } + + // completed reading the image so return it + free(b); + return buffer; +} + +// skip the extension blocks as we are only after the image +void skip_extension(FILE* fp) +{ + s32 n; + char temp[256]; + + n = fgetc(fp); // throwaway extension function code + n = fgetc(fp); // get length of block + + while (n > 0 && n != EOF) + { + // throwaway block + fread(temp, 1, n, fp); + + n = fgetc(fp); // get length of next block + } +} + +// unpack the GIF file +// returns ImageInfo sequence containing image and image data +gif_image_info* unpack_gif(char* filename) +{ + VFILE *f; + FILE* fp; + s32 c, b; + gif_header* h = 0L; + gif_image_info* ii = 0L; + gif_image_descriptor* id = 0L; + u8* local_palette = 0L; + + ii = (gif_image_info *)valloc(sizeof(gif_image_info), "unpack_gif:ii", OID_IMAGE); + + f = vopen(filename); + if (!f) err("Could not open GIF file %s.",filename); + fp = f->fp; + if (!fp) err("\nBad filename"); + + // file starts with the Logical Screen Descriptor structure + h = get_gif_header(fp); + + // Size of Global Color Table + ii->bits = (h->hflags & 7) + 1; + ii->background = h->background; + + // get Global colour palette if there is one + if (h->hflags & 0x80) // is flags bit 8 set? + { + c = 3 << ii->bits; // size of global colour map + ii->palette = gif_read_palette(fp, c); + +/* outp(968, 0); + // enforce global color map + for (s32 i=0; i < 768; ++i) + outp(969, ii->palette[i]); */ + memcpy(pal, ii->palette, 768); + } + + c = fgetc(fp); + + while (c == 0x2c || c == 0x21 || c == 0) + { + // image separator so unpack the image + if (c == 0x2c) + { + id = get_image_descriptor(fp); // get the Image Descriptor + // if there is a local Color Table then overwrite the global table + if (id->iflags & 0x80) + { + ii->bits = (id->iflags & 7) + 1; + b = 3 << ii->bits; + if (local_palette) + free(local_palette); + local_palette = gif_read_palette(fp, b); + } + + c = fgetc(fp); // get the LZW Minimum Code Size + ii->image = unpack_image(fp, c, id->wide, id->deep, id->iflags); + vclose(f); + + // error reading image + if (!ii->image) + err("\nerror reading image data"); + + ii->wide = id->wide; + ii->deep = id->deep; + + // return imagedata + return ii; + } + // extension introducer + else if (c == 0x21) + { + skip_extension(fp); // throw the extension away + } + + c = fgetc(fp); + } + + // no image? + return NULL; +} + +byte *LoadGIFBuf(char *fname) +{ + gif_image_info *ii=0; + byte *t; + + ii=unpack_gif(fname); + width=ii->wide; + depth=ii->deep; + t=ii->image; + free(ii); + return t; +} + +// ====================== Universal Imaging Interface ======================== + +byte imagetype; + +// ================================= Code ==================================== + +void DetermineFileType(char *fname) +{ + strlwr(fname); + if (!strcmp(fname+(strlen(fname)-3),"pcx")) imagetype=0; + if (!strcmp(fname+(strlen(fname)-3),"gif")) imagetype=1; + if (!strcmp(fname+(strlen(fname)-3),"bmp")) imagetype=2; +} + +void VLoadImage(char *fname, byte *dest) +{ + imagetype=255; + DetermineFileType(fname); + switch (imagetype) + { + case 0: LoadPCX(fname, dest); break; + case 1: err("VLoadImage() for GIF not supported; use VLoadImageBuf()"); break; + case 2: err("VLoadImage() for BMP not supported; use VLoadImageBuf()"); break; + default: err("%s: Unrecognized image type.",fname); + } +} + +byte *VLoadImageBuf(char *fname) +{ + imagetype=255; + DetermineFileType(fname); + switch (imagetype) + { + case 0: return LoadPCXBuf(fname); break; + case 1: return LoadGIFBuf(fname); break; + case 2: return LoadBMPBuf(fname); break; + default: err("%s: Unrecognized image type.",fname); + } + return 0; +} diff --git a/16/v2/source/verge/ENGINE/IMAGE.H b/16/v2/source/verge/ENGINE/IMAGE.H new file mode 100644 index 00000000..5b0ac2bc --- /dev/null +++ b/16/v2/source/verge/ENGINE/IMAGE.H @@ -0,0 +1,25 @@ +/* +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. +*/ + +#ifndef IMAGE_H +#define IMAGE_H + +word width, depth; + +void VLoadImage(char *fname, byte *dest); +byte *VLoadImageBuf(char *fname); + +#endif diff --git a/16/v2/source/verge/ENGINE/INTER.H b/16/v2/source/verge/ENGINE/INTER.H new file mode 100644 index 00000000..93bc667c --- /dev/null +++ b/16/v2/source/verge/ENGINE/INTER.H @@ -0,0 +1,41 @@ +/* +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. +*/ + +#if !defined(INTERINC) +#define INTERINC + +#ifdef __WATCOMC__ + #include + #define REGISTERS union REGS + #define SET_AX(r,v) (r).w.ax=(short)(v) + #define SET_BX(r,v) (r).w.bx=(short)(v) + #define SET_CX(r,v) (r).w.cx=(short)(v) + #define SET_DX(r,v) (r).w.dx=(short)(v) + #define INTERRUPT(i,r) int386((i),&(r),&(r)) +#elif defined(__DJGPP__) + #include + #define REGISTERS __dpmi_regs + #define SET_AX(r,v) (r).x.ax=(short)(v) + #define SET_BX(r,v) (r).x.bx=(short)(v) + #define SET_CX(r,v) (r).x.cx=(short)(v) + #define SET_DX(r,v) (r).x.dx=(short)(v) + #define INTERRUPT(i,r) __dpmi_int((i),&(r)) +// #define inp inportb + #define outp outportb + #define outpw outportw +#endif // watcom | djgpp + +#endif // INTERINC diff --git a/16/v2/source/verge/ENGINE/KEYBOARD.H b/16/v2/source/verge/ENGINE/KEYBOARD.H new file mode 100644 index 00000000..e39d3296 --- /dev/null +++ b/16/v2/source/verge/ENGINE/KEYBOARD.H @@ -0,0 +1,115 @@ +/* +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. +*/ + +#ifndef KEYBOARD_H +#define KEYBOARD_H + +extern volatile byte key[128]; +extern volatile byte last_pressed; +extern int InitKeyboard(void); +extern void ShutdownKeyboard(void); +#ifdef DJGPP +extern void keyboard_chain(int toggle); +#endif + +/* Constants for keyboard scan-codes */ + +#define SCAN_ESC 0x01 +#define SCAN_1 0x02 +#define SCAN_2 0x03 +#define SCAN_3 0x04 +#define SCAN_4 0x05 +#define SCAN_5 0x06 +#define SCAN_6 0x07 +#define SCAN_7 0x08 +#define SCAN_8 0x09 +#define SCAN_9 0x0a +#define SCAN_0 0x0b +#define SCAN_MINUS 0x0c +#define SCAN_EQUALS 0x0d +#define SCAN_BACKSP 0x0e +#define SCAN_TAB 0x0f +#define SCAN_Q 0x10 +#define SCAN_W 0x11 +#define SCAN_E 0x12 +#define SCAN_R 0x13 +#define SCAN_T 0x14 +#define SCAN_Y 0x15 +#define SCAN_U 0x16 +#define SCAN_I 0x17 +#define SCAN_O 0x18 +#define SCAN_P 0x19 +#define SCAN_LANGLE 0x1a +#define SCAN_RANGLE 0x1b +#define SCAN_ENTER 0x1c +#define SCAN_CTRL 0x1d +#define SCAN_A 0x1e +#define SCAN_S 0x1f +#define SCAN_D 0x20 +#define SCAN_F 0x21 +#define SCAN_G 0x22 +#define SCAN_H 0x23 +#define SCAN_J 0x24 +#define SCAN_K 0x25 +#define SCAN_L 0x26 +#define SCAN_SCOLON 0x27 +#define SCAN_QUOTA 0x28 +#define SCAN_RQUOTA 0x29 +#define SCAN_LSHIFT 0x2a +#define SCAN_BSLASH 0x2b +#define SCAN_Z 0x2c +#define SCAN_X 0x2d +#define SCAN_C 0x2e +#define SCAN_V 0x2f +#define SCAN_B 0x30 +#define SCAN_N 0x31 +#define SCAN_M 0x32 +#define SCAN_COMA 0x33 +#define SCAN_DOT 0x34 +#define SCAN_SLASH 0x35 +#define SCAN_RSHIFT 0x36 +#define SCAN_GREY_STAR 0x37 +#define SCAN_ALT 0x38 +#define SCAN_SPACE 0x39 +#define SCAN_CAPS 0x3a +#define SCAN_F1 0x3b +#define SCAN_F2 0x3c +#define SCAN_F3 0x3d +#define SCAN_F4 0x3e +#define SCAN_F5 0x3f +#define SCAN_F6 0x40 +#define SCAN_F7 0x41 +#define SCAN_F8 0x42 +#define SCAN_F9 0x43 +#define SCAN_F10 0x44 +#define SCAN_NUMLOCK 0x45 +#define SCAN_SCRLOCK 0x46 +#define SCAN_HOME 0x47 +#define SCAN_UP 0x48 +#define SCAN_PGUP 0x49 +#define SCAN_GREY_MINUS 0x4a +#define SCAN_LEFT 0x4b +#define SCAN_PAD_5 0x4c +#define SCAN_RIGHT 0x4d +#define SCAN_GREY_PLUS 0x4e +#define SCAN_END 0x4f +#define SCAN_DOWN 0x50 +#define SCAN_PGDN 0x51 +#define SCAN_INSERT 0x52 +#define SCAN_DEL 0x53 +#define SCAN_F11 0x57 +#define SCAN_F12 0x58 +#endif diff --git a/16/v2/source/verge/ENGINE/KEYBOARD.S b/16/v2/source/verge/ENGINE/KEYBOARD.S new file mode 100644 index 00000000..a781cded --- /dev/null +++ b/16/v2/source/verge/ENGINE/KEYBOARD.S @@ -0,0 +1,227 @@ +# +# 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. +# + + .file "keyboard.s" + + .extern ___djgpp_base_address + .extern ___djgpp_ds_alias + .extern ___djgpp_dos_sel + + # public functions and variables: + + .global _key + .global _InitKeyboard + .global _ShutdownKeyboard + .global _keyboard_chain + .global _last_pressed + + .text + + .align 4 + +locking_region_start: + +_key: .space 0x80, 0 +_last_pressed: .byte 0 +old_vector: +old_vector_ofs: .long 0 +old_vector_sel: .word 0 +chain_flag: .long 1 + + + .align 4 + +handler_procedure: + + # + # .. will be called every time a key is pressed/released + # + pushl %eax + pushl %edx + pushw %ds + # + # Load DS with our data selector + # + movw %cs:___djgpp_ds_alias, %ds + # + # Read the scancode from keyboard port and update key[] + # + inb $0x60, %al + movb %al, %dl + andl $0x7f, %edx + testb $0x80, %al + setz _key(%edx) + cmp $127, %al + ja nolastpressed + movb %edx, _last_pressed +nolastpressed: + + # + # Chain if flag is set, otherwise do what's necessary and return + # + cmpl $0, chain_flag + jne handler_chain + # + # Acknowledge keyboard and interrupt contollers + # + inb $0x61, %al + orb $0x80, %al + outb %al, $0x61 + andb $0x7f, %al + outb %al, $0x61 + movb $0x20, %al + outb %al, $0x20 + + popw %ds + popl %edx + popl %eax + sti + iret + + .align 4 + +handler_chain: popw %ds + popl %edx + popl %eax + ljmp %cs:(old_vector) + +locking_region_end: + + + .align 4 +_InitKeyboard: + + # + # int keyboard_init(void); + # + # Initializes the keyboard handler and hooks the keyboard interrupt. + # Returns -1 on failure, zero on success + # + pushl %esi + pushl %edi + pushl %ebx + # + # First, we need to lock the handler and memory it touches, so + # it doesn't get swapped out to disk. + # + leal locking_region_start, %ecx + leal locking_region_end, %edi + subl %ecx, %edi + addl ___djgpp_base_address, %ecx + shldl $16, %ecx, %ebx # ecx -> bx:cx + shldl $16, %edi, %esi # edi -> si:di + movw $0x0600, %ax # lock linear region + int $0x31 + jc init_error + # + # Now we need to save the old interrupt vector, so we can restore + # it later and also to know where to jump if chaining. + # + movw $0x0204, %ax # get pm int vector + movb $0x09, %bl + int $0x31 + movw %cx, old_vector_sel + movl %edx, old_vector_ofs + # + # Make sure we chain after initialization. + # + movl $1, chain_flag + # + # Set the interrupt vector to point to our handler. + # + movw %cs, %cx + leal handler_procedure, %edx + movb $0x09, %bl + movw $0x0205, %ax # set pm int vector + int $0x31 + #* + #* Actually we would have to unlock the locked region on failure + #* here. But since most programs would exit with an error message + #* in such case, there's no need to worry. + #* + +init_error: + + # + # This sets EAX to -1 if CF is set and to 0 atherwise + # + movl $0, %eax + sbbl $0, %eax + + popl %ebx + popl %edi + popl %esi + ret + + + .align 4 +_ShutdownKeyboard: + + # + # void keyboard_close(void); + # + # Shuts the keyboard handler down. + # + pushl %esi + pushl %edi + pushl %ebx + # + # Unlock the region we locked at initialization + # + leal locking_region_start, %ecx + leal locking_region_end, %edi + subl %ecx, %edi + addl ___djgpp_base_address, %ecx + shldl $16, %ecx, %ebx + shldl $16, %edi, %esi + movw $0x0601, %ax # unlock linear region + int $0x31 + # + # Restore the interrupt vector to its previous value + # + movw old_vector_sel, %cx + movl old_vector_ofs, %edx + movb $0x09, %bl + movw $0x0205, %ax # set pm int vector + int $0x31 + + popl %ebx + popl %edi + popl %esi + ret + # + # void keyboard_chain(int toggle); + # + .align 4 +_keyboard_chain: + cmpl $0, 4(%esp) + je chain_off +chain_on: + + # + # Set the chain_flag and clear BIOS shift/ctrl/alt status bits: + # + movl $1, chain_flag + + push %es + movw ___djgpp_dos_sel, %es + andb $0xf0, %es:0x417 + pop %es + jmp chain_done +chain_off: + movl $0, chain_flag +chain_done: ret + diff --git a/16/v2/source/verge/ENGINE/MAIN.H b/16/v2/source/verge/ENGINE/MAIN.H new file mode 100644 index 00000000..fde93675 --- /dev/null +++ b/16/v2/source/verge/ENGINE/MAIN.H @@ -0,0 +1,42 @@ +/* +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. +*/ + +#ifndef MAIN_H +#define MAIN_H + +//void *valloc(int amount); +void err(char *message, ...); +int sgn(int x); +void ver(); +void CheckMessages(); +void Log(char *message, ...); +void Logp(char *message, ...); +void LogDone(); +void InitMouse(int, int); +void ReadMouse(); +void SetMouse(int, int); + +extern char startmap[80], nocdaudio; +extern int mx, my, mb; + +#define vfree(x) if (x) { free(x); x=0; } + +#ifndef DJGPP +#define strncasecmp strnicmp +#define strcasecmp strcmpi +#endif + +#endif diff --git a/16/v2/source/verge/ENGINE/MAKEFILE b/16/v2/source/verge/ENGINE/MAKEFILE new file mode 100644 index 00000000..f557fa31 --- /dev/null +++ b/16/v2/source/verge/ENGINE/MAKEFILE @@ -0,0 +1,7 @@ +CC = gcc +CFLAGS = -s -Wall -Werror + +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 + +verge: $(OBJ) + diff --git a/16/v2/source/verge/ENGINE/MESSAGE.C b/16/v2/source/verge/ENGINE/MESSAGE.C new file mode 100644 index 00000000..dd3520e6 --- /dev/null +++ b/16/v2/source/verge/ENGINE/MESSAGE.C @@ -0,0 +1,110 @@ +/* +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. +*/ + +#include "verge.h" + +// ================================= Data ==================================== + +struct message +{ + char text[44]; // message text + int exptime; // message expire time +}; + +struct message messages[6]; // 5-message buffer +byte num_msgs=0; // number of active messages + +// -- cpu usage -- + +int cputimer=0, frames=0; +char runprf[3]; +// -- final numbers -- +int fps=0; +char profile[3]; + +// ================================= Code ==================================== + +void CheckMessageExpirations() +{ int i; + + for (i=0; imessages[i].exptime) + { + memcpy(messages[i].text, messages[i+1].text, (48*(num_msgs-i+1))); + num_msgs--; + } +} + +void RenderGUI() +{ int i; + + CheckMessageExpirations(); + for (i=0; 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 a2eu`Ylw(ykU@fyp#b8y%Dy*VdA^kszY7JWe literal 0 HcmV?d00001 diff --git a/16/v2/source/verge/ENGINE/MIKMOD.C b/16/v2/source/verge/ENGINE/MIKMOD.C new file mode 100644 index 00000000..7f90de04 --- /dev/null +++ b/16/v2/source/verge/ENGINE/MIKMOD.C @@ -0,0 +1,310 @@ +/* + +Name: +MIKMOD.C + +Description: +Modplaying example of mikmod. + +MSDOS: BC(y) Watcom(y) DJGPP(y) +Win95: BC(y*) +Os2: y +Linux: n + +* console mode only +(y) - yes +(n) - no (not possible or not useful) +(?) - may be possible, but not tested + +*/ +#ifdef __WIN32__ +#include +#endif + +#include +#include +#include +#include + +#ifndef __OS2__ +#include +#endif + +#include "wildfile.h" +#include "mikmod.h" + +char helptext[]= + +"Available switches (CaSe SeNsItIvE!):\n" +"\n" +" /d x use device-driver #x for output (0 is autodetect). Default=0\n" +" /ld List all available device-drivers\n" +" /ll List all available loaders\n" +" /x disables protracker extended speed\n" +" /p disables panning effects (9fingers.mod)\n" +" /v xx Sets volume from 0 (silence) to 100. Default=100\n" +" /f xxxx Sets mixing frequency. Default=44100\n" +" /m Force mono output (so sb-pro can mix at 44100)\n" +" /8 Force 8 bit output\n" +" /i Use interpolated mixing\n" +" /r Restart a module when it's done playing"; + + +/* + declarations for boring old sys-v style getopt *yawn*: +*/ +int getopt(int argc, char *argv[], char *optionS); +extern char *optarg; +extern int optind; +extern int opterr; + + +void tickhandler(void) +{ + MP_HandleTick(); /* play 1 tick of the module */ + MD_SetBPM(mp_bpm); +} + + +int main(int argc,char *argv[]) +{ + UNIMOD *mf; + int cmderr=0; /* error in commandline flag */ + int morehelp=0; /* set if user wants more help */ + int quit; + int t; + static int nargc; + static char **nargv; + + puts(mikbanner); + + /* Expand wildcards on commandline */ + + nargc=argc; nargv=argv; +#ifndef __DJGPP__ + MyGlob(&nargc,&nargv,0); +#else + setvbuf(stdout, NULL, _IONBF, 0); + __djgpp_set_ctrl_c(0); +#endif + + /* + Initialize soundcard parameters.. you _have_ to do this + before calling MD_Init(), and it's illegal to change them + after you've called MD_Init() + */ + + md_mixfreq =44100; /* standard mixing freq */ + md_dmabufsize =20000; /* standard dma buf size */ + md_mode =DMODE_16BITS|DMODE_STEREO; /* standard mixing mode */ + md_device =0; /* standard device: autodetect */ + + /* + Register the loaders we want to use.. + */ + + ML_RegisterLoader(&load_m15); /* if you use m15load, register it as first! */ + ML_RegisterLoader(&load_mod); + ML_RegisterLoader(&load_mtm); + ML_RegisterLoader(&load_s3m); + ML_RegisterLoader(&load_stm); + ML_RegisterLoader(&load_ult); + ML_RegisterLoader(&load_uni); + ML_RegisterLoader(&load_xm); + + /* + Register the drivers we want to use: + */ + + MD_RegisterDriver(&drv_nos); +#ifdef __OS2__ + MD_RegisterDriver(&drv_os2); +#elif defined(__WIN32__) + MD_RegisterDriver(&drv_w95); +#else + MD_RegisterDriver(&drv_ss); + MD_RegisterDriver(&drv_sb); + MD_RegisterDriver(&drv_gus); +#endif + + MD_RegisterPlayer(tickhandler); + + /* Parse option switches using standard getopt function: */ + + opterr=0; + + while( !cmderr && + (t=getopt(nargc,nargv,"ohxpm8irv:f:l:d:")) != EOF ){ + + switch(t){ + + case 'd': + md_device=atoi(optarg); + break; + + case 'l': + if(optarg[0]=='d') MD_InfoDriver(); + else if(optarg[0]=='l') ML_InfoLoader(); + else{ + cmderr=1; + break; + } + exit(0); + + case 'r': + mp_loop=1; + break; + + case 'm': + md_mode&=~DMODE_STEREO; + break; + + case '8': + md_mode&=~DMODE_16BITS; + break; + + case 'i': + md_mode|=DMODE_INTERP; + break; + + case 'x': + mp_extspd=0; + break; + + case 'p': + mp_panning=0; + break; + + case 'v': + if((mp_volume=atoi(optarg))>100) mp_volume=100; + break; + + case 'f': + md_mixfreq=atol(optarg); + break; + + case 'h': + morehelp=1; + cmderr=1; + break; + + case '?': + puts("\07Invalid switch or option needs an argument\n"); + cmderr=1; + break; + } + } + + if(cmderr || optind>=nargc){ + + /* + there was an error in the commandline, or there were no true + arguments, so display a usage message + */ + + puts("Usage: MIKMOD [switches] ... \n"); + + if(morehelp) + puts(helptext); + else + puts("Type MIKMOD /h for more help."); + + exit(-1); + } + + /* initialize soundcard */ + + if(!MD_Init()){ + printf("Driver error: %s.\n",myerr); + return 0; + } + + printf("Using %s for %d bit %s %s sound at %u Hz\n\n", + md_driver->Name, + (md_mode&DMODE_16BITS) ? 16:8, + (md_mode&DMODE_INTERP) ? "interpolated":"normal", + (md_mode&DMODE_STEREO) ? "stereo":"mono", + md_mixfreq); + +#ifdef __OS2__ + DosSetPriority( PRTYS_THREAD, PRTYC_TIMECRITICAL, 5L, 0UL ); +#endif + + for(quit=0; !quit && optind exit with errormsg. */ + + if(mf==NULL){ + printf("MikMod Error: %s\n",myerr); + break; + } + + /* initialize modplayer to play this module */ + + MP_Init(mf); + + printf( "Songname: %s\n" + "Modtype : %s\n" + "Periods : %s,%s\n", + mf->songname, + mf->modtype, + (mf->flags&UF_XMPERIODS) ? "XM type" : "mod type", + (mf->flags&UF_LINEAR) ? "Linear" : "Log"); + + /* + set the number of voices to use.. you + could add extra channels here (e.g. md_numchn=mf->numchn+4; ) + to use for your own soundeffects: + */ + + md_numchn=mf->numchn; + + /* start playing the module: */ + + MD_PlayStart(); + + while(!MP_Ready()){ + + char c; + + c=kbhit() ? getch() : 0; + + if(c=='+') + MP_NextPosition(); + else if(c=='-') + MP_PrevPosition(); + else if(c==0x1b){ + quit=1; + break; + } + else if(c==' ') break; + + MD_Update(); + + /* wait a bit */ + +#if defined(__OS2__) + DosSleep(40); /* hmmmm */ +#elif defined(__WIN32__) + Sleep(10); +#elif defined(__DJGPP__) + /* no wait for djgpp ? */ +#else + delay(10); +#endif + printf("\rsngpos:%d patpos:%d sngspd %d bpm %d ",mp_sngpos,mp_patpos,mp_sngspd,mp_bpm); + } + + MD_PlayStop(); /* stop playing */ + ML_Free(mf); /* and free the module */ + puts("\n"); + } + MD_Exit(); + return 0; +} diff --git a/16/v2/source/verge/ENGINE/MIKMOD.H b/16/v2/source/verge/ENGINE/MIKMOD.H new file mode 100644 index 00000000..0111ccb3 --- /dev/null +++ b/16/v2/source/verge/ENGINE/MIKMOD.H @@ -0,0 +1,580 @@ +#ifndef MIKMOD_H +#define MIKMOD_H + +#include +#include "mtypes.h" /* include atomic mikmod types */ + + +#define mikbanner \ +"=======================================================================\n" \ +"MIKMOD v2.10 - Portable version - Programmed by MikMak of HaRDCoDE '95\n" \ +"=======================================================================\n" \ +"This program is SHAREWARE - Read MIKMOD.TXT for more info\n" \ +"E-Mail : mikmak@stack.urc.tue.nl\n" + + +/* + error variables: + =============== +*/ + +extern char *ERROR_ALLOC_STRUCT; +extern char *ERROR_LOADING_PATTERN; +extern char *ERROR_LOADING_TRACK; +extern char *ERROR_LOADING_HEADER; +extern char *ERROR_NOT_A_MODULE; +extern char *ERROR_LOADING_SAMPLEINFO; +extern char *ERROR_OUT_OF_HANDLES; +extern char *ERROR_SAMPLE_TOO_BIG; +extern char *myerr; + + + +#define _mm_rewind(x) _mm_fseek(x,0,SEEK_SET) +int _mm_fseek(FILE *stream,long offset,int whence); +void _mm_setiobase(long iobase); +long _mm_ftell(FILE *stream); + + +extern SBYTE _mm_read_SBYTE (FILE *fp); +extern UBYTE _mm_read_UBYTE (FILE *fp); + +extern SWORD _mm_read_M_SWORD (FILE *fp); +extern SWORD _mm_read_I_SWORD (FILE *fp); + +extern UWORD _mm_read_M_UWORD(FILE *fp); +extern UWORD _mm_read_I_UWORD(FILE *fp); + +extern SLONG _mm_read_M_SLONG (FILE *fp); +extern SLONG _mm_read_I_SLONG (FILE *fp); + +extern ULONG _mm_read_M_ULONG(FILE *fp); +extern ULONG _mm_read_I_ULONG(FILE *fp); + +extern int _mm_read_str(char *str, int size, FILE *fp); + +extern int _mm_read_SBYTES (SBYTE *buffer, int number, FILE *fp); +extern int _mm_read_UBYTES (UBYTE *buffer, int number, FILE *fp); + +extern int _mm_read_M_SWORDS (SWORD *buffer, int number, FILE *fp); +extern int _mm_read_I_SWORDS (SWORD *buffer, int number, FILE *fp); + +extern int _mm_read_M_UWORDS (UWORD *buffer, int number, FILE *fp); +extern int _mm_read_I_UWORDS (UWORD *buffer, int number, FILE *fp); + +extern int _mm_read_M_SLONGS (SLONG *buffer, int number, FILE *fp); +extern int _mm_read_I_SLONGS (SLONG *buffer, int number, FILE *fp); + +extern int _mm_read_M_ULONGS (ULONG *buffer, int number, FILE *fp); +extern int _mm_read_I_ULONGS (ULONG *buffer, int number, FILE *fp); + + +extern void _mm_write_SBYTE (SBYTE data,FILE *fp); +extern void _mm_write_UBYTE (UBYTE data,FILE *fp); + +extern void _mm_write_M_SWORD (SWORD data,FILE *fp); +extern void _mm_write_I_SWORD (SWORD data,FILE *fp); + +extern void _mm_write_M_UWORD (UWORD data,FILE *fp); +extern void _mm_write_I_UWORD (UWORD data,FILE *fp); + +extern void _mm_write_M_SLONG (SLONG data,FILE *fp); +extern void _mm_write_I_SLONG (SLONG data,FILE *fp); + +extern void _mm_write_M_ULONG (ULONG data,FILE *fp); +extern void _mm_write_I_ULONG (ULONG data,FILE *fp); + +extern void _mm_write_SBYTES (SBYTE *data, int number,FILE *fp); +extern void _mm_write_UBYTES (UBYTE *data, int number,FILE *fp); + +extern void _mm_write_M_SWORDS (SWORD *data, int number,FILE *fp); +extern void _mm_write_I_SWORDS (SWORD *data, int number,FILE *fp); + +extern void _mm_write_M_UWORDS (UWORD *data, int number,FILE *fp); +extern void _mm_write_I_UWORDS (UWORD *data, int number,FILE *fp); + +extern void _mm_write_M_SLONGS (SLONG *data, int number,FILE *fp); +extern void _mm_write_I_SLONGS (SLONG *data, int number,FILE *fp); + +extern void _mm_write_M_ULONGS (ULONG *data, int number,FILE *fp); +extern void _mm_write_I_ULONGS (ULONG *data, int number,FILE *fp); + + +/************************************************************************** +****** Unitrack stuff: **************************************************** +**************************************************************************/ + +/* + prototypes: +*/ + +void UniSetRow(UBYTE *t); +UBYTE UniGetByte(void); +UBYTE *UniFindRow(UBYTE *t,UWORD row); +void UniReset(void); +void UniWrite(UBYTE data); +void UniNewline(void); +void UniInstrument(UBYTE ins); +void UniNote(UBYTE note); +void UniPTEffect(UBYTE eff,UBYTE dat); +UBYTE *UniDup(void); +void UniSkipOpcode(UBYTE op); +BOOL UniInit(void); +void UniCleanup(void); +UWORD TrkLen(UBYTE *t); +BOOL MyCmp(UBYTE *a,UBYTE *b,UWORD l); + +/* + all known effects: +*/ + +enum { + UNI_NOTE=1, + UNI_INSTRUMENT, + UNI_PTEFFECT0, + UNI_PTEFFECT1, + UNI_PTEFFECT2, + UNI_PTEFFECT3, + UNI_PTEFFECT4, + UNI_PTEFFECT5, + UNI_PTEFFECT6, + UNI_PTEFFECT7, + UNI_PTEFFECT8, + UNI_PTEFFECT9, + UNI_PTEFFECTA, + UNI_PTEFFECTB, + UNI_PTEFFECTC, + UNI_PTEFFECTD, + UNI_PTEFFECTE, + UNI_PTEFFECTF, + UNI_S3MEFFECTA, + UNI_S3MEFFECTD, + UNI_S3MEFFECTE, + UNI_S3MEFFECTF, + UNI_S3MEFFECTI, + UNI_S3MEFFECTQ, + UNI_S3MEFFECTT, + UNI_XMEFFECTA, + UNI_XMEFFECTG, + UNI_XMEFFECTH, + UNI_XMEFFECTP +}; + + +/************************************************************************** +****** mikmod types: ****************************************************** +**************************************************************************/ + + +/* + Sample format flags: +*/ + +#define SF_16BITS 1 +#define SF_SIGNED 2 +#define SF_DELTA 4 +#define SF_BIG_ENDIAN 8 +#define SF_LOOP 16 +#define SF_BIDI 32 +#define SF_OWNPAN 64 +#define SF_REVERSE 128 + + +/* + Envelope flags: +*/ + +#define EF_ON 1 +#define EF_SUSTAIN 2 +#define EF_LOOP 4 + + +/* + Unimod flags +*/ + +#define UF_XMPERIODS 1 /* if set use XM periods/finetuning */ +#define UF_LINEAR 2 /* if set use LINEAR periods */ + + +typedef struct ENVPT{ + SWORD pos; + SWORD val; +} ENVPT; + + +typedef struct SAMPLE{ + UWORD c2spd; /* finetune frequency */ + SBYTE transpose; /* transpose value */ + UBYTE volume; /* volume 0-64 */ + UBYTE panning; /* panning */ + ULONG length; /* length of sample (in samples!) */ + ULONG loopstart; /* repeat position (relative to start, in samples) */ + ULONG loopend; /* repeat end */ + UWORD flags; /* sample format */ + ULONG seekpos; /* seek position in file */ + char *samplename; /* name of the sample */ + SWORD handle; /* sample handle */ +} SAMPLE; + + +typedef struct INSTRUMENT{ + UBYTE numsmp; + UBYTE samplenumber[96]; + + UBYTE volflg; /* bit 0: on 1: sustain 2: loop */ + UBYTE volpts; + UBYTE volsus; + UBYTE volbeg; + UBYTE volend; + ENVPT volenv[12]; + + UBYTE panflg; /* bit 0: on 1: sustain 2: loop */ + UBYTE panpts; + UBYTE pansus; + UBYTE panbeg; + UBYTE panend; + ENVPT panenv[12]; + + UBYTE vibtype; + UBYTE vibsweep; + UBYTE vibdepth; + UBYTE vibrate; + + UWORD volfade; + char *insname; + SAMPLE *samples; +} INSTRUMENT; + + +/* + MikMod UNImod types: + ==================== +*/ + +typedef struct UNIMOD{ + UBYTE numchn; /* number of channels */ + UWORD numpos; /* number of positions in this song */ + UWORD reppos; /* restart position */ + UWORD numpat; /* number of patterns in this song */ + UWORD numtrk; /* number of tracks */ + UWORD numins; /* number of samples */ + UBYTE initspeed; /* */ + UBYTE inittempo; /* */ + UBYTE positions[256]; /* all positions */ + UBYTE panning[32]; /* 32 panning positions */ + UBYTE flags; /* */ + char *songname; /* name of the song */ + char *modtype; /* string type of module */ + char *comment; /* module comments */ + INSTRUMENT *instruments; /* all samples */ + UWORD *patterns; /* array of PATTERN */ + UWORD *pattrows; /* array of number of rows for each pattern */ + UBYTE **tracks; /* array of pointers to tracks */ +} UNIMOD; + + +/************************************************************************** +****** Loader stuff: ****************************************************** +**************************************************************************/ + +/* + loader structure: +*/ + +typedef struct LOADER{ + struct LOADER *next; + char *type; + char *version; + BOOL (*Init)(void); + BOOL (*Test)(void); + BOOL (*Load)(void); + void (*Cleanup)(void); +} LOADER; + + +/* + public loader variables: +*/ + +extern UNIMOD of; +extern FILE *modfp; +extern UWORD finetune[16]; + + +/* + main loader prototypes: +*/ + +void ML_InfoLoader(void); +void ML_RegisterLoader(LOADER *ldr); +UNIMOD *ML_LoadFP(FILE *fp); +UNIMOD *ML_LoadFN(char *filename); +void ML_Free(UNIMOD *mf); + + +/* + other loader prototypes: (used by the loader modules) +*/ + +BOOL InitTracks(void); +void AddTrack(UBYTE *tr); +BOOL ReadComment(UWORD len); +BOOL AllocPatterns(void); +BOOL AllocTracks(void); +BOOL AllocInstruments(void); +BOOL AllocSamples(INSTRUMENT *i); +char *DupStr(char *s,UWORD len); +void *MyMalloc(size_t size); +void *MyCalloc(size_t nitems,size_t size); + + +/* + Declare external loaders: +*/ +extern LOADER load_uni; +extern LOADER load_mod; +extern LOADER load_m15; +extern LOADER load_mtm; +extern LOADER load_s3m; +extern LOADER load_stm; +extern LOADER load_ult; +extern LOADER load_xm; + + +/************************************************************************** +****** Wavload stuff: ***************************************************** +**************************************************************************/ + +SAMPLE *MW_LoadWavFP(FILE *fp); +SAMPLE *MW_LoadWavFN(char *filename); +void MW_FreeWav(SAMPLE *si); + + +/************************************************************************** +****** Driver stuff: ****************************************************** +**************************************************************************/ + +/* + max. number of handles a driver has to provide. (not strict) +*/ + +#define MAXSAMPLEHANDLES 128 + + +/* + possible mixing mode bits: +*/ + +#define DMODE_STEREO 1 +#define DMODE_16BITS 2 +#define DMODE_INTERP 4 + + +/* + driver structure: +*/ + +typedef struct DRIVER{ + struct DRIVER *next; + char *Name; + char *Version; + BOOL (*IsPresent) (void); + SWORD (*SampleLoad) (FILE *fp,ULONG size,ULONG reppos,ULONG repend,UWORD flags); + void (*SampleUnLoad) (SWORD handle); + BOOL (*Init) (void); + void (*Exit) (void); + void (*PlayStart) (void); + void (*PlayStop) (void); + void (*Update) (void); + void (*VoiceSetVolume) (UBYTE voice,UBYTE vol); + void (*VoiceSetFrequency) (UBYTE voice,ULONG frq); + void (*VoiceSetPanning) (UBYTE voice,UBYTE pan); + void (*VoicePlay) (UBYTE voice,SWORD handle,ULONG start,ULONG size,ULONG reppos,ULONG repend,UWORD flags); +} DRIVER; + + +/* + public driver variables: +*/ + +extern DRIVER *md_driver; +extern UWORD md_device; +extern UWORD md_mixfreq; +extern UWORD md_dmabufsize; +extern UWORD md_mode; +extern UBYTE md_numchn; +extern UBYTE md_bpm; +extern void (*md_player)(void); + +/* + main driver prototypes: +*/ + +void MD_InfoDriver(void); +void MD_RegisterDriver(DRIVER *drv); +void MD_RegisterPlayer(void (*plr)(void)); +SWORD MD_SampleLoad(FILE *fp,ULONG size,ULONG reppos,ULONG repend,UWORD flags); +void MD_SampleUnLoad(SWORD handle); +BOOL MD_Init(void); +void MD_Exit(void); +void MD_PlayStart(void); +void MD_PlayStop(void); +void MD_SetBPM(UBYTE bpm); +void MD_Update(void); +void MD_VoiceSetVolume(UBYTE voice,UBYTE ivol); +void MD_VoiceSetFrequency(UBYTE voice,ULONG frq); +void MD_VoiceSetPanning(UBYTE voice,ULONG pan); +void MD_VoicePlay(UBYTE voice,SWORD handle,ULONG start,ULONG size,ULONG reppos,ULONG repend,UWORD flags); +void SL_Init(FILE *fp,UWORD infmt,UWORD outfmt); +void SL_Load(void *buffer,ULONG length); + +/* + Declare external drivers: +*/ + +extern DRIVER drv_gus; /* gravis ultrasound driver */ +extern DRIVER drv_sb; /* soundblaster DSP driver */ +extern DRIVER drv_ss; /* ensoniq soundscape driver */ +extern DRIVER drv_nos; /* nosound driver */ +extern DRIVER drv_raw; /* file output driver */ +extern DRIVER drv_w95; /* win95 driver */ +extern DRIVER drv_awe; /* experimental SB-AWE driver */ +extern DRIVER drv_vox; /* linux voxware driver */ +extern DRIVER drv_af; /* Dec Alpha AudioFile driver */ +extern DRIVER drv_sun; /* Sun driver */ +extern DRIVER drv_os2; /* Os2 driver */ +extern DRIVER drv_tim; /* timing driver */ + +/************************************************************************** +****** Player stuff: ****************************************************** +**************************************************************************/ + + +typedef struct ENVPR{ + UBYTE flg; /* envelope flag */ + UBYTE pts; /* number of envelope points */ + UBYTE sus; /* envelope sustain index */ + UBYTE beg; /* envelope loop begin */ + UBYTE end; /* envelope loop end */ + SWORD p; /* current envelope counter */ + UWORD a; /* envelope index a */ + UWORD b; /* envelope index b */ + ENVPT *env; /* envelope points */ +} ENVPR; + + +typedef struct AUDTMP{ + INSTRUMENT *i; + SAMPLE *s; + + UWORD fadevol; /* fading volume */ + + ENVPR venv; + ENVPR penv; + + UBYTE keyon; /* if true=key is pressed. */ + UBYTE kick; /* if true=sample has to be restarted */ + UBYTE sample; /* which sample number (0-31) */ + SWORD handle; /* which sample-handle */ + + ULONG start; /* The start byte index in the sample */ + + UBYTE panning; /* panning position */ + UBYTE pansspd; /* panslide speed */ + + SBYTE volume; /* amiga volume (0 t/m 64) to play the sample at */ + UWORD period; /* period to play the sample at */ + + /* You should not have to use the values + below in the player routine */ + + SBYTE transpose; + + UBYTE note; /* */ + + SWORD ownper; + SWORD ownvol; + + UBYTE *row; /* row currently playing on this channel */ + + SBYTE retrig; /* retrig value (0 means don't retrig) */ + UWORD c2spd; /* what finetune to use */ + + SBYTE tmpvolume; /* tmp volume */ + + UWORD tmpperiod; /* tmp period */ + UWORD wantedperiod; /* period to slide to (with effect 3 or 5) */ + + UWORD slidespeed; /* */ + UWORD portspeed; /* noteslide speed (toneportamento) */ + + UBYTE s3mtremor; /* s3m tremor (effect I) counter */ + UBYTE s3mtronof; /* s3m tremor ontime/offtime */ + + UBYTE s3mvolslide; /* last used volslide */ + + UBYTE s3mrtgspeed; /* last used retrig speed */ + UBYTE s3mrtgslide; /* last used retrig slide */ + + UBYTE glissando; /* glissando (0 means off) */ + UBYTE wavecontrol; /* */ + + SBYTE vibpos; /* current vibrato position */ + UBYTE vibspd; /* "" speed */ + UBYTE vibdepth; /* "" depth */ + + SBYTE trmpos; /* current tremolo position */ + UBYTE trmspd; /* "" speed */ + UBYTE trmdepth; /* "" depth */ + + UWORD soffset; /* last used sample-offset (effect 9) */ +} AUDTMP; + + +extern AUDTMP mp_audio[32]; /* max eight channels */ +extern UBYTE mp_bpm; /* beats-per-minute speed */ +extern UWORD mp_patpos; /* current row number (0-63) */ +extern SWORD mp_sngpos; /* current song position */ +extern UWORD mp_sngspd; /* current songspeed */ + +extern BOOL mp_loop; +extern BOOL mp_panning; +extern BOOL mp_extspd; +extern UBYTE mp_volume; + +/* + player prototypes: +*/ + +int MP_Ready(void); +void MP_NextPosition(void); +void MP_PrevPosition(void); +void MP_SetPosition(UWORD pos); +void MP_HandleTick(void); +void MP_Init(UNIMOD *m); + + +/************************************************************************** +****** Virtual channel stuff: ********************************************* +**************************************************************************/ + +BOOL VC_Init(void); +void VC_Exit(void); + +void VC_PlayStart(void); +void VC_PlayStop(void); + +SWORD VC_SampleLoad(FILE *fp,ULONG size,ULONG reppos,ULONG repend,UWORD flags); +void VC_SampleUnload(SWORD handle); + +void VC_WriteSamples(SBYTE *buf,UWORD todo); +UWORD VC_WriteBytes(SBYTE *buf,UWORD todo); +void VC_SilenceBytes(SBYTE *buf,UWORD todo); + +void VC_VoiceSetVolume(UBYTE voice,UBYTE vol); +void VC_VoiceSetFrequency(UBYTE voice,ULONG frq); +void VC_VoiceSetPanning(UBYTE voice,UBYTE pan); +void VC_VoicePlay(UBYTE voice,SWORD handle,ULONG start,ULONG size,ULONG reppos,ULONG repend,UWORD flags); + +#endif diff --git a/16/v2/source/verge/ENGINE/MODE13H.C b/16/v2/source/verge/ENGINE/MODE13H.C new file mode 100644 index 00000000..2dcbf9ce --- /dev/null +++ b/16/v2/source/verge/ENGINE/MODE13H.C @@ -0,0 +1,881 @@ +/* +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. +*/ + +#include +#include +#include "verge.h" + +// ================================= Data ==================================== + +byte *screen, *screenx; // virscr | realscr + +// ================================= Code ==================================== + +void SetMode(int mode) +{ + REGISTERS r; + SET_AX(r, mode); + INTERRUPT(0x10, r); +} + +int Mode13hShutdown(void) +{ + SetMode(0x3); + free(screen); + return 0; +} + +void xShowPage(int startofs) +{ + asm("movl _screen, %%esi \n\t" + "addl %0, %%esi \n\t" + "movl _screenx, %%edi \n\t" + "movl $200, %%eax \n\t" +"lineloop: \n\t" + "movl $80, %%ecx \n\t" + "rep \n\t" + "movsl \n\t" + "addl $32, %%esi \n\t" + "decl %%eax \n\t" + "jnz lineloop \n\t" + : + : "m" (startofs) + : "esi", "edi", "cc", "eax", "ecx"); +} + +int Mode13hShowPage(void) +{ + RenderGUI(); + cpubyte=PFLIP; + xShowPage((16*352)+16); + cpubyte=ETC; + return 0; +} + +int Mode13hCopySprite(int x, int y, int width, int height, byte *src) +{ + cpubyte=RENDER; + + asm("movl %3, %%edx \n\t" + "movl %4, %%esi \n\t" +"csl0: \n\t" + "movl %1, %%eax \n\t" + "imul $352, %%eax \n\t" + "addl %0, %%eax \n\t" + "addl _screen, %%eax \n\t" + "movl %%eax, %%edi \n\t" + "movl %2, %%ecx \n\t" + "shrl $2, %%ecx \n\t" + "repz \n\t" + "movsl \n\t" + "incl %1 \n\t" + "decl %%edx \n\t" + "jnz csl0 \n\t" + : + : "m" (x), "m" (y), "m" (width), "m" (height), "m" (src) + : "eax","edx","esi","edi","ecx","cc" ); + cpubyte=ETC; + return 0; +} + +int Mode13hCopyTile(int x, int y, byte *spr) +{ + cpubyte=RENDER; + + asm("movl $16, %%ecx \n\t" + "movl %2, %%esi \n\t" + "movl %1, %%edi \n\t" + "imul $352, %%edi \n\t" + "addl %0, %%edi \n\t" + "addl _screen, %%edi \n\t" +" ctl0: \n\t" + "movl (%%edi), %%eax \n\t" + "andl $0, %%eax \n\t" + "orl (%%esi), %%eax \n\t" + "movl %%eax, (%%edi) \n\t" + "movl 4(%%edi), %%eax \n\t" + "andl $0, %%eax \n\t" + "orl 4(%%esi), %%eax \n\t" + "movl %%eax, 4(%%edi) \n\t" + "movl 8(%%edi), %%eax \n\t" + "andl $0, %%eax \n\t" + "orl 8(%%esi), %%eax \n\t" + "movl %%eax, 8(%%edi) \n\t" + "movl 12(%%edi), %%eax \n\t" + "andl $0, %%eax \n\t" + "orl 12(%%esi), %%eax \n\t" + "movl %%eax, 12(%%edi) \n\t" + "addl $16, %%esi \n\t" + "addl $352, %%edi \n\t" + "decl %%ecx \n\t" + "jnz ctl0 \n\t" + : + : "m" (x), "m" (y), "m" (spr) + : "eax","ecx","esi","edi","cc" ); + cpubyte=ETC; + return 0; +} + +int Mode13hTCopySprite(int x, int y, int width, int height, byte *src) +{ + cpubyte=RENDER; + + asm("movl %3, %%ecx \n\t" + "movl %4, %%esi \n\t" +"tcsl0: \n\t" + "movl %1, %%eax \n\t" + "imul $352, %%eax \n\t" + "addl %0, %%eax \n\t" + "addl _screen, %%eax \n\t" + "movl %%eax, %%edi \n\t" + "movl %2, %%edx \n\t" +"drawloop: \n\t" + "lodsb \n\t" + "orb %%al, %%al \n\t" + "jz nodraw \n\t" + "stosb \n\t" + "decl %%edx \n\t" + "jz endline \n\t" + "jmp drawloop \n\t" +"nodraw: \n\t" + "incl %%edi \n\t" + "decl %%edx \n\t" + "jnz drawloop \n\t" +"endline: \n\t" + "incl %1 \n\t" + "decl %%ecx \n\t" + "jnz tcsl0 \n\t" + : + : "m" (x), "m" (y), "m" (width), "m" (height), "m" (src) + : "eax","edx","esi","edi","ecx","cc" ); + + cpubyte=ETC; + return 0; +} + +int Mode13hTCopyTile(int x, int y, byte *spr, byte *matte) +{ + cpubyte=RENDER; + asm("movl $16, %%ecx \n\t" + "movl %2, %%esi \n\t" + "movl %1, %%edi \n\t" + "imul $352, %%edi \n\t" + "addl %0, %%edi \n\t" + "addl _screen, %%edi \n\t" + "movl %3, %%edx \n\t" +"tctl0: \n\t" + "movl (%%edi), %%eax \n\t" + "andl (%%edx), %%eax \n\t" + "orl (%%esi), %%eax \n\t" + "movl %%eax, (%%edi) \n\t" + "movl 4(%%edi), %%eax \n\t" + "andl 4(%%edx), %%eax \n\t" + "orl 4(%%esi), %%eax \n\t" + "movl %%eax, 4(%%edi) \n\t" + "movl 8(%%edi), %%eax \n\t" + "andl 8(%%edx), %%eax \n\t" + "orl 8(%%esi), %%eax \n\t" + "movl %%eax, 8(%%edi) \n\t" + "movl 12(%%edi), %%eax \n\t" + "andl 12(%%edx), %%eax \n\t" + "orl 12(%%esi), %%eax \n\t" + "movl %%eax, 12(%%edi) \n\t" + "addl $16, %%esi \n\t" + "addl $352, %%edi \n\t" + "addl $16, %%edx \n\t" + "decl %%ecx \n\t" + "jnz tctl0 \n\t" + : + : "m" (x), "m" (y), "m" (spr), "m" (matte) + : "eax","ecx","edx","esi","edi","cc" ); + + cpubyte=ETC; + return 0; +} + +int Mode13hCCopySprite(int x,int y,int width,int height,byte *src) +{ + byte *s,*d; + int xl,yl,xs,ys; + int cx1=0, cy1=0, cx2=tsx-1, cy2=tsy-1; + + cpubyte=RENDER; + + xl=width; + yl=height; + xs=ys=0; + + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + + if (xcx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + + if (x0 && th>0) dys=tsx-xm; + else if (tw>0 && th<0) dys=(0-tsx)-xm; + else if (tw<0 && th>0) dys=tsx+xm; + else if (tw<0 && th<0) dys=(0-tsx)+xm; + + d = screen+(y*tsx)+x; + for (i=0;i>16)]; + d+=xd; + sx+=xs; + } + d+=dys; + sy+=ys; + s+=(sy>>16)*w; + sy&=0xffff; + } + cpubyte=ETC; + return 0; +} + +int Mode13hRenderMAPLine(int x, int y, int yofs, word *map) +{ + cpubyte=RENDER; + asm("movl %1, %%edi \n\t" + "imul $352, %%edi \n\t" + "addl %0, %%edi \n\t" + "addl _screen, %%edi \n\t" + "movl $22, %%ebx \n\t" + "movl %3, %%ecx \n\t" +"tileloop: \n\t" + "movw (%%ecx), %%ax \n\t" + "movzwl %%ax, %%edx \n\t" + "shll $1, %%edx \n\t" + "addl _tileidx, %%edx \n\t" + "movw (%%edx), %%ax \n\t" + "movzwl %%ax, %%esi \n\t" + "shll $8, %%esi \n\t" + "addl _vsp, %%esi \n\t" + "movl %2, %%eax \n\t" + "shll $4, %%eax \n\t" + "addl %%eax, %%esi \n\t" + "movl (%%esi), %%eax \n\t" + "movl %%eax, (%%edi) \n\t" + "movl 4(%%esi), %%eax \n\t" + "movl %%eax, 4(%%edi) \n\t" + "movl 8(%%esi), %%eax \n\t" + "movl %%eax, 8(%%edi) \n\t" + "movl 12(%%esi), %%eax \n\t" + "movl %%eax, 12(%%edi) \n\t" + "addl $16, %%edi \n\t" + "addl $2, %%ecx \n\t" + "decl %%ebx \n\t" + "jnz tileloop \n\t" + : + : "m" (x), "m" (y), "m" (yofs), "m" (map) + : "eax","ebx","ecx","edx","esi","edi","cc" ); + + cpubyte=ETC; + return 0; +} + +int Mode13hTRenderMAPLine(int x, int y, int yofs, word *map) +{ + cpubyte=RENDER; + asm("movl %1, %%edi \n\t" + "imul $352, %%edi \n\t" + "addl %0, %%edi \n\t" + "addl _screen, %%edi \n\t" + "movl $22, %%ebx \n\t" + "movl %3, %%ecx \n\t" +"tileloop1: \n\t" + "movw (%%ecx), %%ax \n\t" + "movzwl %%ax, %%edx \n\t" + "shll $1, %%edx \n\t" + "addl _tileidx, %%edx \n\t" + "movw (%%edx), %%ax \n\t" + "orw %%ax, %%ax \n\t" + "jz next1 \n\t" + "movzwl %%ax, %%esi \n\t" + "shll $8, %%esi \n\t" + "movl %%esi, %%edx \n\t" + "addl _vspmask, %%edx \n\t" + "addl _vsp, %%esi \n\t" + "movl %2, %%eax \n\t" + "shll $4, %%eax \n\t" + "addl %%eax, %%esi \n\t" + "addl %%eax, %%edx \n\t" + "movl (%%edi), %%eax \n\t" + "andl (%%edx), %%eax \n\t" + "orl (%%esi), %%eax \n\t" + "movl %%eax, (%%edi) \n\t" + "movl 4(%%edi), %%eax \n\t" + "andl 4(%%edx), %%eax \n\t" + "orl 4(%%esi), %%eax \n\t" + "movl %%eax, 4(%%edi) \n\t" + "movl 8(%%edi), %%eax \n\t" + "andl 8(%%edx), %%eax \n\t" + "orl 8(%%esi), %%eax \n\t" + "movl %%eax, 8(%%edi) \n\t" + "movl 12(%%edi), %%eax \n\t" + "andl 12(%%edx), %%eax \n\t" + "orl 12(%%esi), %%eax \n\t" + "movl %%eax, 12(%%edi) \n\t" +"next1: \n\t" + "addl $16, %%edi \n\t" + "addl $2, %%ecx \n\t" + "decl %%ebx \n\t" + "jnz tileloop1 \n\t" + : + : "m" (x), "m" (y), "m" (yofs), "m" (map) + : "eax","ebx","ecx","edx","esi","edi","cc" ); + + cpubyte=ETC; + return 0; +} + +int Mode13hColorField(int x, int y, byte c) +{ + cpubyte=RENDER; + asm("movl %1, %%eax \n\t" + "imul $352, %%eax \n\t" + "addl %0, %%eax \n\t" + "addl _screen, %%eax \n\t" + "movl %%eax, %%edi \n\t" + "movl $8, %%ecx \n\t" + "movb %2, %%al \n\t" +"lineloop1: \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "addl $336, %%edi \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "addl $336, %%edi \n\t" + "decl %%ecx \n\t" + "jnz lineloop1 \n\t" + : + : "m" (x), "m" (y), "m" (c) + : "eax","edi","ecx","cc" ); + cpubyte=ETC; + return 0; +} + +int Mode13hClearScreen() +{ + cpubyte=RENDER; + memset(screen+(352*16)+16,0,(352*200)); + cpubyte=ETC; + return 0; +} + +int Mode13hPutPixel(int x, int y, int color) +{ + cpubyte=RENDER; + + if (xcx2 || y>cy2) + { + cpubyte=ETC; + return 0; + } + + x+=16; + y+=16; + + screen[(y*tsx)+x]=color; + + cpubyte=ETC; + return 0; +} + +int Mode13hGetPixel(int x, int y) +{ + cpubyte=RENDER; + + if (xcx2 || y>cy2) + { + cpubyte=ETC; + return 0; + } + + x+=16; + y+=16; + + cpubyte=ETC; + return screen[(y*tsx)+x]; +} + +int Mode13hHLine(int x, int y, int x2, int color) +{ byte *d; + int width; + + cpubyte=RENDER; + + // swap? + if (x2cx2 || y>cy2 || x+width cx2) width=cx2-x+1; + if (xcx2 || y>cy2 || x cy2) height=cy2-y+1; + if (ycx2 && x2>cx2) + || (y1cy2 && y2>cy2)) + { + cpubyte=ETC; + return 0; + } + + if (x1>x2) + { + i=x1; x1=x2; x2=i; + i=y1; y1=y2; y2=i; + } + + // clip the left side + if (x1cx2) + { int myy=(y2-y1); + int mxx=(x2-x1),b; + if (!mxx) + { + cpubyte=ETC; + return 0; + } + if (myy) + { + b=y1-(y2-y1)*x1/mxx; + y2=myy*cx2/mxx+b; + x2=cx2; + } + else x2=cx2; + } + + if (y1>y2) + { + i=x1; x1=x2; x2=i; + i=y1; y1=y2; y2=i; + } + + // clip the bottom + if (y2>cy2) + { int mxx=(x2-x1); + int myy=(y2-y1),b; + if (!myy) + { + cpubyte=ETC; + return 0; + } + if (mxx) + { + b=y1-(y2-y1)*x1/mxx; + x2=(cy2-b)*mxx/myy; + y2=cy2; + } + else y2=cy2; + } + + // clip the top + if (y1cx2 || x2>cx2 || y1cy2 || y2>cy2) + { + cpubyte=ETC; + return 0; + } + + if (x1>x2) + { xc=x2; xi=x1; } + else { xi=x2; xc=x1; } + + x1+=16;y1+=16; // aen; adjust these here?? + x2+=16;y2+=16; + + // assume y1<=y2 from above swap operation + yi=y2; yc=y1; + + dcx=x1; dcy=y1; + xc=(x2-x1); yc=(y2-y1); + if (xc<0) xi=-1; else xi=1; + if (yc<0) yi=-1; else yi=1; + n=abs(xc); m=abs(yc); + ycyi=abs(2*yc*xi); + er=0; + + if (n>m) + { + xcxi=abs(2*xc*xi); + for (i=0;i<=n;i++) + { + screen[(dcy*tsx)+dcx]=color; + if (er>0) + { dcy+=yi; + er-=xcxi; + } + er+=ycyi; + dcx+=xi; + } + } + else + { + xcyi=abs(2*xc*yi); + for (i=0;i<=m;i++) + { + screen[(dcy*tsx)+dcx]=color; + if (er>0) + { dcx+=xi; + er-=ycyi; + } + er+=xcyi; + dcy+=yi; + } + } + + cpubyte=ETC; + return 0; +} + +int Mode13hCircle(int x, int y, int radius, int color) +{ int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + + do { + Mode13hPutPixel(x+cx,y+cy,color); + if (cx) Mode13hPutPixel(x-cx,y+cy,color); + if (cy) Mode13hPutPixel(x+cx,y-cy,color); + if ((cx) && (cy)) Mode13hPutPixel(x-cx,y-cy,color); + + if (cx != cy) + { + Mode13hPutPixel(x+cy,y+cx,color); + if (cx) Mode13hPutPixel(x+cy,y-cx,color); + if (cy) Mode13hPutPixel(x-cy,y+cx,color); + if (cx && cy) Mode13hPutPixel(x-cy,y-cx,color); + } + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + + cx++; + + } while (cx <= cy); + + cpubyte=ETC; + return 0; +} + +int Mode13hCircleFill(int x, int y, int radius, int color) +{ int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + + do { + Mode13hHLine(x-cy,y-cx,x+cy,color); + if (cx) Mode13hHLine(x-cy,y+cx,x+cy,color); + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + if (cx != cy) + { + Mode13hHLine(x-cx,y-cy,x+cx,color); + if (cy) Mode13hHLine(x-cx,y+cy,x+cx,color); + } + + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + + cx++; + + } while (cx <= cy); + + cpubyte=ETC; + return 0; +} + +int Mode13hRect(int x, int y, int x2, int y2, int color) +{ + Mode13hHLine(x,y,x2,color); + Mode13hHLine(x,y2,x2,color); + Mode13hVLine(x,y+1,y2-1,color); + Mode13hVLine(x2,y+1,y2-1,color); + return 0; +} + +int Mode13hRectFill(int x, int y, int x2, int y2, int color) +{ + cpubyte=RENDER; + + if (y2 +#include +#include "verge.h" + +void BIOS_SetVideoMode(int mode) +{ + REGISTERS r; + SET_AX(r, mode); + INTERRUPT(0x10, r); +} + +// =============================== Mode 13h =================================== + +int Mode13hShutdown(int i) +{ + if (i) BIOS_SetVideoMode(0x3); + free(screen); + return 0; +} + +void InitMode13h(void) +{ + BIOS_SetVideoMode(0x13); + + DriverDesc = "320x200 (Mode 13h, linear)"; + sx=320, sy=200; + tx=20, ty=13; + cx1=0, cy1=0; + cx2=sx-1, cy2=sy-1; + + // setup function drivers + ShowPage=LFB_ShowPage; + ShutdownVideo=Mode13hShutdown; + + video=(byte *) 0xA0000 + __djgpp_conventional_base; + vscreen=(byte *) valloc(sx*sy, "vscreen", 0); + screen=vscreen; + memset(screen, 0, sx*sy); +} + +// ================================= Mode-X ================================== + +#define SEQU_ADDR 0x3c4 +#define CRTC_ADDR 0x3d4 +#define MISC_OUTPUT 0x3c2 + +#define ATTRCON_ADDR 0x3c0 +#define MISC_ADDR 0x3c2 +#define VGAENABLE_ADDR 0x3c3 +#define SEQ_ADDR 0x3c4 +#define GRACON_ADDR 0x3ce +#define CRTC_ADDR 0x3d4 +#define STATUS_ADDR 0x3da + +typedef struct +{ + unsigned port; + byte index, value; +} Register; + +typedef Register *RegisterPtr; + +Register scr256x256[] = +{ + { 0x3c2, 0x00, 0xe3},{ 0x3d4, 0x00, 0x5f},{ 0x3d4, 0x01, 0x3f}, + { 0x3d4, 0x02, 0x40},{ 0x3d4, 0x03, 0x82},{ 0x3d4, 0x04, 0x4A}, + { 0x3d4, 0x05, 0x9A},{ 0x3d4, 0x06, 0x23},{ 0x3d4, 0x07, 0xb2}, + { 0x3d4, 0x08, 0x00},{ 0x3d4, 0x09, 0x61},{ 0x3d4, 0x10, 0x0a}, + { 0x3d4, 0x11, 0xac},{ 0x3d4, 0x12, 0xff},{ 0x3d4, 0x13, 0x20}, + { 0x3d4, 0x14, 0x40},{ 0x3d4, 0x15, 0x07},{ 0x3d4, 0x16, 0x1a}, + { 0x3d4, 0x17, 0xa3},{ 0x3c4, 0x01, 0x01},{ 0x3c4, 0x04, 0x0e}, + { 0x3ce, 0x05, 0x40},{ 0x3ce, 0x06, 0x05},{ 0x3c0, 0x10, 0x41}, + { 0x3c0, 0x13, 0x00} +}; + +// ================================= Code ==================================== + +void plane(byte p) +{ + int hi=1<>2; + + for (y=0; y= sx) + { memcpy(d,s,sx); + bytes-=sx; + s+=sx; + d+=sx; + } + else + { memcpy(d,s,bytes); + s+=bytes; + span=sx-bytes; + + VESASetBank(bank++); + d=video; + bytes=65536; + + memcpy(d,s,span); + bytes-=span; + s+=span; + d+=span; + } + } + cpubyte=ETC; + return 0; +} + +void Set640x480() +{ + REGISTERS r; + + DriverDesc = "640x480 (VESA, Banked)"; + + SET_BX(r, 0x0101); + SET_AX(r, 0x4f02); + INTERRUPT(0x10, r); + + sx=640; sy=480; + tx=40; ty=30; + cx1=0; cy1=0; + cx2=sx-1;cy2=sy-1; +} + +void InitVESA(int xres, int yres) +{ + int found; + + found=0; + if (xres==640 && yres==480) { Set640x480(); found=1; } + + if (!found) + err("Internal error: unknown VESA resolution"); + + // setup driver functions + ShowPage = VESAShowPage; // reassign for banked VESA video blt + ShutdownVideo = VESAShutdown; + + video=(byte *) 0xA0000 + __djgpp_conventional_base; + vscreen=(byte *) valloc(sx*sy, "vscreen", 0); + screen=vscreen; + memset(screen, 0, sx*sy); +} + +// ============================================================================ + +int InitVideo(int xres, int yres) +{ + int found; + + found=0; + if (xres==320 && yres==200) { InitMode13h(); found=1; } + if (xres==320 && yres==240) { InitModeX(xres,yres); found=1; } + if (xres==360 && yres==240) { InitModeX(xres,yres); found=1; } + if (xres==256 && yres==256) { InitModeX(xres,yres); found=1; } + if (xres==640 && yres==480) { InitVESA(xres,yres); found=1; } + + if (found) + { + tsx=xres; tsy=yres; + Logp("Sys: Initializing %s.", DriverDesc); + InitMouse(tsx, tsy); + } + else + { + InitMode13h(); + tsx=320; tsy=200; + Logp("Unknown video mode %dx%d; defaulting to mode 13h.", xres, yres); + InitMouse(tsx, tsy); + } + LogDone(); + return found; +} diff --git a/16/v2/source/verge/ENGINE/MODEX.C b/16/v2/source/verge/ENGINE/MODEX.C new file mode 100644 index 00000000..6247f8eb --- /dev/null +++ b/16/v2/source/verge/ENGINE/MODEX.C @@ -0,0 +1,1055 @@ +/* +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. +*/ + + +#include +#include +#include "verge.h" + +// ================================= Data ==================================== + +#define SEQU_ADDR 0x3c4 +#define CRTC_ADDR 0x3d4 +#define MISC_OUTPUT 0x3c2 + +byte *screenbase; // ptr to A000:0000 +int endcol,nextl; // end column number thingy | next line +int winofs; + +// ================================= Code ==================================== + +void ModeXSetMode(int mode) +{ + REGISTERS r; + SET_AX(r, mode); + INTERRUPT(0x10, r); +} + +void plane(byte p) +{ + int hi=1<> 8) | 0x0c); + outportb(0x3d4, (offset & 0xff) | 0x0d); + + _enable(); +} + +int ModeXShowPage() +{ + byte *s,*d; + int x,y,k; + int sx2; + int b; + + RenderGUI(); + cpubyte=PFLIP; + + //s=screen+(16*tsx)+16; + b=(16*tsx)+16; + d=screenbase; + sx2=sx>>2; + + //while (!(inp(986) & 8)); + + for (y=0; ycx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + + if (xcx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + + if (x0 && th>0) dys=tsx-xm; + else if (tw>0 && th<0) dys=(0-tsx)-xm; + else if (tw<0 && th>0) dys=tsx+xm; + else if (tw<0 && th<0) dys=(0-tsx)+xm; + + d = screen+(y*tsx)+x; + for (i=0;i>16)]; + d+=xd; + sx+=xs; + } + d+=dys; + sy+=ys; + s+=(sy>>16)*w; + sy&=0xffff; + } + cpubyte=ETC; + return 0; +} + +int ModeXRenderMAPLine(int x, int y, int yofs, word *map) +{ + cpubyte=RENDER; + asm("movl %1, %%edi \n\t" + "imul _tsx, %%edi \n\t" + "addl %0, %%edi \n\t" + "addl _screen, %%edi \n\t" + "movl _tx, %%ebx \n\t" + "incl %%ebx \n\t" + "movl %3, %%ecx \n\t" +"tileloop: \n\t" + "movw (%%ecx), %%ax \n\t" + "movzwl %%ax, %%edx \n\t" + "shll $1, %%edx \n\t" + "addl _tileidx, %%edx \n\t" + "movw (%%edx), %%ax \n\t" + "movzwl %%ax, %%esi \n\t" + "shll $8, %%esi \n\t" + "addl _vsp, %%esi \n\t" + "movl %2, %%eax \n\t" + "shll $4, %%eax \n\t" + "addl %%eax, %%esi \n\t" + "movl (%%esi), %%eax \n\t" + "movl %%eax, (%%edi) \n\t" + "movl 4(%%esi), %%eax \n\t" + "movl %%eax, 4(%%edi) \n\t" + "movl 8(%%esi), %%eax \n\t" + "movl %%eax, 8(%%edi) \n\t" + "movl 12(%%esi), %%eax \n\t" + "movl %%eax, 12(%%edi) \n\t" + "addl $16, %%edi \n\t" + "addl $2, %%ecx \n\t" + "decl %%ebx \n\t" + "jnz tileloop \n\t" + : + : "m" (x), "m" (y), "m" (yofs), "m" (map) + : "eax","ebx","ecx","edx","esi","edi","cc" ); + + cpubyte=ETC; + return 0; +} + +int ModeXTRenderMAPLine(int x, int y, int yofs, word *map) +{ + cpubyte=RENDER; + asm("movl %1, %%edi \n\t" + "imul _tsx, %%edi \n\t" + "addl %0, %%edi \n\t" + "addl _screen, %%edi \n\t" + "movl _tx, %%ebx \n\t" + "incl %%ebx \n\t" + "movl %3, %%ecx \n\t" +"tileloop1: \n\t" + "movw (%%ecx), %%ax \n\t" + "movzwl %%ax, %%edx \n\t" + "shll $1, %%edx \n\t" + "addl _tileidx, %%edx \n\t" + "movw (%%edx), %%ax \n\t" + "orw %%ax, %%ax \n\t" + "jz next1 \n\t" + "movzwl %%ax, %%esi \n\t" + "shll $8, %%esi \n\t" + "movl %%esi, %%edx \n\t" + "addl _vspmask, %%edx \n\t" + "addl _vsp, %%esi \n\t" + "movl %2, %%eax \n\t" + "shll $4, %%eax \n\t" + "addl %%eax, %%esi \n\t" + "addl %%eax, %%edx \n\t" + "movl (%%edi), %%eax \n\t" + "andl (%%edx), %%eax \n\t" + "orl (%%esi), %%eax \n\t" + "movl %%eax, (%%edi) \n\t" + "movl 4(%%edi), %%eax \n\t" + "andl 4(%%edx), %%eax \n\t" + "orl 4(%%esi), %%eax \n\t" + "movl %%eax, 4(%%edi) \n\t" + "movl 8(%%edi), %%eax \n\t" + "andl 8(%%edx), %%eax \n\t" + "orl 8(%%esi), %%eax \n\t" + "movl %%eax, 8(%%edi) \n\t" + "movl 12(%%edi), %%eax \n\t" + "andl 12(%%edx), %%eax \n\t" + "orl 12(%%esi), %%eax \n\t" + "movl %%eax, 12(%%edi) \n\t" +"next1: \n\t" + "addl $16, %%edi \n\t" + "addl $2, %%ecx \n\t" + "decl %%ebx \n\t" + "jnz tileloop1 \n\t" + : + : "m" (x), "m" (y), "m" (yofs), "m" (map) + : "eax","ebx","ecx","edx","esi","edi","cc" ); + + cpubyte=ETC; + return 0; +} + +int ModeXColorField(int x, int y, byte c) +{ + cpubyte=RENDER; + asm("movl %1, %%eax \n\t" + "imul _tsx, %%eax \n\t" + "addl %0, %%eax \n\t" + "addl _screen, %%eax \n\t" + "movl %%eax, %%edi \n\t" + "movl $8, %%ecx \n\t" + "movb %2, %%al \n\t" +"lineloop1: \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "addl _sx, %%edi \n\t" + "addl $16, %%edi \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "incl %%edi \n\t" + "stosb \n\t" + "addl _sx, %%edi \n\t" + "addl $16, %%edi \n\t" + "decl %%ecx \n\t" + "jnz lineloop1 \n\t" + : + : "m" (x), "m" (y), "m" (c) + : "eax","edi","ecx","cc" ); + cpubyte=ETC; + return 0; +} + +int ModeXClearScreen() +{ + cpubyte=RENDER; + memset(screen+(tsx*16)+16,0,(tsx*sy)); + cpubyte=ETC; + return 0; +} + +int ModeXPutPixel(int x, int y, int color) +{ + cpubyte=RENDER; + + if (xcx2 || y>cy2) + { + cpubyte=ETC; + return 0; + } + + x+=16; + y+=16; + + screen[(y*tsx)+x]=color; + + cpubyte=ETC; + return 0; +} + +int ModeXGetPixel(int x, int y) +{ + cpubyte=RENDER; + + if (xcx2 || y>cy2) + { + cpubyte=ETC; + return 0; + } + + x+=16; + y+=16; + + cpubyte=ETC; + return screen[(y*tsx)+x]; +} + +int ModeXHLine(int x, int y, int x2, int color) +{ byte *d; + int width; + + cpubyte=RENDER; + + // swap? + if (x2cx2 || y>cy2 || x+width cx2) width=cx2-x+1; + if (xcx2 || y>cy2 || x cy2) height=cy2-y+1; + if (ycx2 && x2>cx2) + || (y1cy2 && y2>cy2)) + { + cpubyte=ETC; + return 0; + } + + if (x1>x2) + { + i=x1; x1=x2; x2=i; + i=y1; y1=y2; y2=i; + } + + // clip the left side + if (x1cx2) + { int myy=(y2-y1); + int mxx=(x2-x1),b; + if (!mxx) + { + cpubyte=ETC; + return 0; + } + if (myy) + { + b=y1-(y2-y1)*x1/mxx; + y2=myy*cx2/mxx+b; + x2=cx2; + } + else x2=cx2; + } + + if (y1>y2) + { + i=x1; x1=x2; x2=i; + i=y1; y1=y2; y2=i; + } + + // clip the bottom + if (y2>cy2) + { int mxx=(x2-x1); + int myy=(y2-y1),b; + if (!myy) + { + cpubyte=ETC; + return 0; + } + if (mxx) + { + b=y1-(y2-y1)*x1/mxx; + x2=(cy2-b)*mxx/myy; + y2=cy2; + } + else y2=cy2; + } + + // clip the top + if (y1cx2 || x2>cx2 || y1cy2 || y2>cy2) + { + cpubyte=ETC; + return 0; + } + + if (x1>x2) + { xc=x2; xi=x1; } + else { xi=x2; xc=x1; } + + x1+=16;y1+=16; // aen; adjust these here?? + x2+=16;y2+=16; + + // assume y1<=y2 from above swap operation + yi=y2; yc=y1; + + dcx=x1; dcy=y1; + xc=(x2-x1); yc=(y2-y1); + if (xc<0) xi=-1; else xi=1; + if (yc<0) yi=-1; else yi=1; + n=abs(xc); m=abs(yc); + ycyi=abs(2*yc*xi); + er=0; + + if (n>m) + { + xcxi=abs(2*xc*xi); + for (i=0;i<=n;i++) + { + screen[(dcy*tsx)+dcx]=color; + if (er>0) + { dcy+=yi; + er-=xcxi; + } + er+=ycyi; + dcx+=xi; + } + } + else + { + xcyi=abs(2*xc*yi); + for (i=0;i<=m;i++) + { + screen[(dcy*tsx)+dcx]=color; + if (er>0) + { dcx+=xi; + er-=ycyi; + } + er+=xcyi; + dcy+=yi; + } + } + + cpubyte=ETC; + return 0; +} + +int ModeXCircle(int x, int y, int radius, int color) +{ int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + + do { + ModeXPutPixel(x+cx,y+cy,color); + if (cx) ModeXPutPixel(x-cx,y+cy,color); + if (cy) ModeXPutPixel(x+cx,y-cy,color); + if ((cx) && (cy)) ModeXPutPixel(x-cx,y-cy,color); + + if (cx != cy) + { + ModeXPutPixel(x+cy,y+cx,color); + if (cx) ModeXPutPixel(x+cy,y-cx,color); + if (cy) ModeXPutPixel(x-cy,y+cx,color); + if (cx && cy) ModeXPutPixel(x-cy,y-cx,color); + } + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + + cx++; + + } while (cx <= cy); + + cpubyte=ETC; + return 0; +} + +int ModeXCircleFill(int x, int y, int radius, int color) +{ int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + + do { + ModeXHLine(x-cy,y-cx,x+cy,color); + if (cx) ModeXHLine(x-cy,y+cx,x+cy,color); + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + if (cx != cy) + { + ModeXHLine(x-cx,y-cy,x+cx,color); + if (cy) ModeXHLine(x-cx,y+cy,x+cx,color); + } + + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + + cx++; + + } while (cx <= cy); + + cpubyte=ETC; + return 0; +} + +int ModeXRect(int x, int y, int x2, int y2, int color) +{ + ModeXHLine(x,y,x2,color); + ModeXHLine(x,y2,x2,color); + ModeXVLine(x,y+1,y2-1,color); + ModeXVLine(x2,y+1,y2-1,color); + return 0; +} + +int ModeXRectFill(int x, int y, int x2, int y2, int color) +{ + cpubyte=RENDER; + + if (y20 true */ + +#else + +typedef char SBYTE; /* has to be 1 byte signed */ +typedef unsigned char UBYTE; /* has to be 1 byte unsigned */ +typedef short SWORD; /* has to be 2 bytes signed */ +typedef unsigned short UWORD; /* has to be 2 bytes unsigned */ +typedef long SLONG; /* has to be 4 bytes signed */ +typedef unsigned long ULONG; /* has to be 4 bytes unsigned */ +typedef int BOOL; /* doesn't matter.. 0=FALSE, <>0 true */ + +#endif + + +#ifdef __OS2__ +#define INCL_DOS +#define INCL_MCIOS2 +#define INCL_MMIOOS2 +#include +#include +#include +#endif + + +#ifdef __WATCOMC__ +#define inportb(x) inp(x) +#define outportb(x,y) outp(x,y) +#define inport(x) inpw(x) +#define outport(x,y) outpw(x,y) +#define disable() _disable() +#define enable() _enable() +#endif + + +#ifdef __DJGPP__ +#include +#include +#include +#define inp inportw +#define outport outportw +#define inport inportw +#define interrupt +#endif + +#endif diff --git a/16/v2/source/verge/ENGINE/PCX.H b/16/v2/source/verge/ENGINE/PCX.H new file mode 100644 index 00000000..844e5c7a --- /dev/null +++ b/16/v2/source/verge/ENGINE/PCX.H @@ -0,0 +1,32 @@ +/* +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. +*/ + +#ifndef PCX_H +#define PCX_H + +// -- globals -- + +extern word width,depth; + +// -- prototypes -- + +extern void ReadPCXLine(byte *dest); +extern void LoadPCXHeader(char *fname); +extern void LoadPCXHeaderNP(char *fname); +extern void LoadPCX(char *fname, byte *dest); +extern byte *LoadPCXBuf(char *fname); + +#endif // PCX_H diff --git a/16/v2/source/verge/ENGINE/RENDER.C b/16/v2/source/verge/ENGINE/RENDER.C new file mode 100644 index 00000000..31151541 --- /dev/null +++ b/16/v2/source/verge/ENGINE/RENDER.C @@ -0,0 +1,291 @@ +/* +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. +*/ + +#include "verge.h" +#include + +// ================================= Data ==================================== + +int oxw, oyw; +int xofs, yofs; +int xtc, ytc; + +byte curlayer, animate=0; +byte cameratracking=1, tracker=0; +byte showobs=0, showzone=0; + +// ================================= Code ==================================== + +void BlitBackLayer(byte l) +{ + int i,j,c; + byte *img; + + if (!layertoggle[l]) return; + + // Adjust view + + oxw=xwin*layer[l].pmultx/layer[l].pdivx; + oyw=ywin*layer[l].pmulty/layer[l].pdivy; + xofs=-(oxw&15); //(16-(oxw&15)); + yofs=-(oyw&15); //(16-(oyw&15)); + xtc=oxw>>4; + ytc=oyw>>4; + + // Draw it, bitch! + + for (i=0; i>4; + ytc=oyw>>4; + + // Draw it, bitch! + + for (i=0; i>4; + ytc=oyw>>4; + + // Draw it, bitch! + + for (i=0; i>4; + ytc=oyw>>4; + + for (i=0; ix+7)/16)==(xtc+j) && ((player->y+7)/16)==(ytc+i)) + { + ColorField((j*16)+xofs,(i*16)+yofs,31); + } + } + } +} + +void HookScriptThing(char *src) +{ + char mystr[10]; + + src++; + strcpy(mystr, src); + src=mystr; + while (*src != 'X') src++; + *src=0; + ExecuteEvent(atoi(mystr)); +} + +void RenderMAP() +{ char *src; + + curlayer=0; + src=rstring; + while (*src) + { + switch (*src) + { + case '1': BlitLayer(0); break; + case '2': BlitLayer(1); break; + case '3': BlitLayer(2); break; + case '4': BlitLayer(3); break; + case '5': BlitLayer(4); break; + case '6': BlitLayer(5); break; + case 'E': RenderEntities(); break; + case 'S': HookScriptThing(src); break; + case 'R': HookRetrace(); + curlayer++; break; + } + src++; + } + if (!curlayer) ClearScreen(); + if (showobs) DrawObstructions(); + if (showzone) DrawZones(); +} + +void Render() +{ + if (cameratracking==1 && player) + { + if (player->x+8>(sx/2)) xwin=(player->x+8-(sx/2)); else xwin=0; + if (player->y+8>(sy/2)) ywin=(player->y+8-(sy/2)); else ywin=0; + if (xwin>((layer[0].sizex*16)-sx)) xwin=((layer[0].sizex*16)-sx); + if (ywin>((layer[0].sizey*16)-sy)) ywin=((layer[0].sizey*16)-sy); + } + if (cameratracking==2) + { + if (entity[tracker].x+8>(sx/2)) xwin=(entity[tracker].x+8-(sx/2)); else xwin=0; + if (entity[tracker].y+8>(sy/2)) ywin=(entity[tracker].y+8-(sy/2)); else ywin=0; + if (xwin>((layer[0].sizex*16)-sx)) xwin=((layer[0].sizex*16)-sx); + if (ywin>((layer[0].sizey*16)-sy)) ywin=((layer[0].sizey*16)-sy); + } + SiftEntities(); + RenderMAP(); +} + +int rnd(int lo, int hi) +{ + int range=hi-lo+1; + int i=rand() % range; + return i+lo; +} + +void AnimateTile(byte i, int l) +{ + switch (vspanim[i].mode) + { + case 0: if (tileidx[l]vspanim[i].start) tileidx[l]--; + else tileidx[l]=vspanim[i].finish; + break; + case 2: tileidx[l]=rnd(vspanim[i].start,vspanim[i].finish); + break; + case 3: if (flipped[l]) + { + if (tileidx[l]!=vspanim[i].start) tileidx[l]--; + else { tileidx[l]++; flipped[l]=0; } + } + else + { + if (tileidx[l]!=vspanim[i].finish) tileidx[l]++; + else { tileidx[l]--; flipped[l]=1; } + } + } +} + +void Animate(byte i) +{ static int l; + + vadelay[i]=0; + for (l=vspanim[i].start; l<=vspanim[i].finish; l++) + AnimateTile(i,l); +} + +void CheckTileAnimation() +{ static byte i; + + if (!animate) return; + if (!vsp) return; + for (i=0; i<100; i++) + { + if ((vspanim[i].delay) && (vspanim[i].delaynumchn+2; + mp_loop=1; mp_volume=100; + MD_PlayStart(); + PlaySound(0, 0, 0); + PlaySound(0, 0, 0); +} + +void StopMusic() +{ + if (MP_Ready()) return; + MD_PlayStop(); + ML_Free(mf); +} + +int CacheSound(char *fname) +{ + if (!(sfx[nsfx]=MW_LoadWavFN(fname))) + err("WAV [%s] load error: %s", fname, myerr); + return nsfx++; +} + +void FreeAllSounds() +{ + int i; + + for (i=0; i= nsfx) return; + switcher ^= 1; + chanl=md_numchn-1-switcher; + MD_VoiceSetVolume(chanl, vol); + MD_VoiceSetPanning(chanl, pan); + MD_VoiceSetFrequency(chanl, sfx[index]->c2spd); + MD_VoicePlay(chanl, sfx[index]->handle, 0, sfx[index]->length, + 0, 0, sfx[index]->flags); +} diff --git a/16/v2/source/verge/ENGINE/SOUND.H b/16/v2/source/verge/ENGINE/SOUND.H new file mode 100644 index 00000000..63c71a04 --- /dev/null +++ b/16/v2/source/verge/ENGINE/SOUND.H @@ -0,0 +1,27 @@ +/* +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. +*/ + +#ifndef SOUND_H +#define SOUND_H + +void InitMusicSystem(); +void PlayMusic(char *); +void StopMusic(); +int CacheSound(char *); +void FreeAllSounds(); +void PlaySound(int, int, int); + +#endif diff --git a/16/v2/source/verge/ENGINE/STARTUP.C b/16/v2/source/verge/ENGINE/STARTUP.C new file mode 100644 index 00000000..87ee07dc --- /dev/null +++ b/16/v2/source/verge/ENGINE/STARTUP.C @@ -0,0 +1,123 @@ +/* +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. +*/ + +#include // va_*() +#include + +#define MAIN_H +#include "verge.h" +extern void vmain(int argc, char *argv[]); +extern void Log(char *message, ...); + +int mx, my, mb; + +// ================================= Code ==================================== + +void err(char *message, ...) +{ + char tempbuf[256]; + va_list lst; + + ShutdownVideo(1); + ShutdownTimer(); + ShutdownKeyboard(); +// CD_Deinit(); + MD_PlayStop(); + MD_Exit(); + + va_start(lst, message); + vsprintf(tempbuf, message, lst); + va_end(lst); + + printf(tempbuf); + fflush(stdout); + + Log("Sys: Exiting with message: %s", tempbuf); + + exit(-1); +} + +int sgn(int x) +{ + if (x>=0) return 1; + return 0; +} + +void ver() +{ char temp[256]; + + Con_NextLine(); + Con_Printf("{|||||||||||||||||}"); + sprintf(temp,"VERGE v.%s Copyright (C)1998 vecna",VERSION); + Con_Printf(temp); + Con_Printf("All rights reserved. DJGPP/DOS build."); + sprintf(strbuf,"Timestamp %s at %s.",__DATE__, __TIME__); + Con_Printf(strbuf); + Con_Printf("Options: -Wall -m486 -O1 -ffast-math"); + Con_Printf("{|||||||||||||||||}"); +} + +void CheckMessages() +{ + // Win95 can bite me. +} + +void InitMouse(int x, int y) +{ REGISTERS r; + + SET_AX(r,7); + SET_CX(r,0); + SET_DX(r,x); + INTERRUPT(0x33, r); + + SET_AX(r,8); + SET_CX(r,0); + SET_DX(r,y); + INTERRUPT(0x33, r); +} + +void ReadMouse() +{ REGISTERS r; + + SET_AX(r,3); + INTERRUPT(0x33, r); + + mx=r.x.cx; + my=r.x.dx; + mb=r.x.bx; +} + +void SetMouse(int x, int y) +{ REGISTERS r; + + SET_AX(r, 4); + SET_CX(r, x); + SET_DX(r, y); + INTERRUPT(0x33, r); +} + +int main(int argc, char *argv[]) +{ + if (argc==1) + { + printf("VERGE v.%s build %s at %s. \n",VERSION,__DATE__,__TIME__); + printf("Copyright (C)1998 vecna \n"); + delay(500); + } + srand(time(NULL)); + vmain(argc, argv); + return 0; +} diff --git a/16/v2/source/verge/ENGINE/TIMER.C b/16/v2/source/verge/ENGINE/TIMER.C new file mode 100644 index 00000000..b0c9274e --- /dev/null +++ b/16/v2/source/verge/ENGINE/TIMER.C @@ -0,0 +1,141 @@ +/* +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 TIMER_H +#include +#include +#include +#include "verge.h" + +#define PIT0 0x40 +#define PIT1 0x41 +#define PIT2 0x42 +#define PITMODE 0x43 +#define PITCONST 1193180L + +#define OCR1 0x20 +#define IMR1 0x21 + +#define OCR2 0xA0 +#define IMR2 0xA1 + +// ================================= Data ==================================== + +int _crt0_startup_flags = _CRT0_FLAG_NEARPTR; +typedef __dpmi_paddr *PVI; +static PVI oldhandler; + +unsigned int systemtime=0, timer_count=0; +int (*callback) (void); + +// ================================= Code ==================================== + +PVI DJSetHandlerFunc(unsigned char irqno, void (*handler)(), int len) +{ + PVI oldvect = (PVI) malloc(sizeof(__dpmi_paddr)); + int vecno=(irqno>7) ? irqno+0x68 : irqno+0x8; + _go32_dpmi_seginfo wrapper; + __dpmi_paddr new; + + wrapper.pm_offset = (long int) handler; + wrapper.pm_selector = _my_cs(); + _go32_dpmi_allocate_iret_wrapper(&wrapper); + new.offset32 = wrapper.pm_offset; + new.selector = wrapper.pm_selector; + __dpmi_get_and_disable_virtual_interrupt_state(); + if (len) _go32_dpmi_lock_code(handler,len); + _go32_dpmi_lock_data(&wrapper,sizeof(_go32_dpmi_seginfo)); + __dpmi_get_protected_mode_interrupt_vector(vecno,oldvect); + __dpmi_set_protected_mode_interrupt_vector(vecno,&new); + __dpmi_get_and_enable_virtual_interrupt_state(); + return oldvect; +} + +void DJSetHandlerAddr(unsigned char irqno, PVI handler) +{ + int vecno=(irqno>7) ? irqno+0x68 : irqno+0x8; + _go32_dpmi_seginfo wrapper; + __dpmi_paddr oldhandler; + + __dpmi_get_and_disable_virtual_interrupt_state(); + __dpmi_get_protected_mode_interrupt_vector(vecno, &oldhandler); + wrapper.pm_offset = oldhandler.offset32; + wrapper.pm_selector = oldhandler.selector; + _go32_dpmi_free_iret_wrapper(&wrapper); + __dpmi_set_protected_mode_interrupt_vector(vecno,handler); + __dpmi_get_and_enable_virtual_interrupt_state(); + free(handler); +} + +static void SendEOI (unsigned char irqno) +{ + unsigned char ocr=(irqno>7) ? OCR2 : OCR1; + unsigned char eoi=0x60|(irqno&7); + + outportb(ocr,eoi); + if (irqno>7) outportb(OCR1,0x20); +} + +static void newhandler(void) +{ + systemtime++; + timer_count++; + if (cpu_watch) CPUTick(); + if (callback) callback(); + CheckTileAnimation(); + HookTimer(); + MD_Update(); + SendEOI(0); +} + +static void EndNewHandler() { } + +void sethz(unsigned int hz) +{ unsigned int pit0_set, pit0_value; + + disable(); + + outportb(PITMODE, 0x34); + pit0_value=PITCONST / hz; + pit0_set=(pit0_value & 0x00ff); + outportb(PIT0, pit0_set); + pit0_set=(pit0_value >> 8); + outportb(PIT0, pit0_set); + + enable(); +} + +void restorehz() +{ + disable(); + outportb(PITMODE, 0x34); + outportb(PIT0, 0x00); + outportb(PIT0, 0x00); + enable(); +} + +void InitTimer() +{ + oldhandler = DJSetHandlerFunc(0, (void *) newhandler, + ((int) EndNewHandler) - ((int) newhandler)); + sethz(100); +} + +void ShutdownTimer() +{ + DJSetHandlerAddr(0, oldhandler); + restorehz(); +} diff --git a/16/v2/source/verge/ENGINE/TIMER.H b/16/v2/source/verge/ENGINE/TIMER.H new file mode 100644 index 00000000..e195f924 --- /dev/null +++ b/16/v2/source/verge/ENGINE/TIMER.H @@ -0,0 +1,26 @@ +/* +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. +*/ + +#ifndef TIMER_H +#define TIMER_H + +void InitTimer(); +void ShutdownTimer(); + +extern int systemtime, timer_count; +extern int (*callback) (void); + +#endif diff --git a/16/v2/source/verge/ENGINE/VC.C b/16/v2/source/verge/ENGINE/VC.C new file mode 100644 index 00000000..36e86f2c --- /dev/null +++ b/16/v2/source/verge/ENGINE/VC.C @@ -0,0 +1,2242 @@ +/* +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 VC_H +#include +#include "verge.h" +#include "vccode.h" +#include "sincos.h" +#include "mikmod.h" + +#define USERFUNC_MARKER 10000 + +// ================================= Data ==================================== + +char *sysvc, *mapvc, *basevc; // VC pool ptrs +char *code; // VC current instruction pointer (IP) + +int *globalint; // system.vc global int variables +int maxint; // maximum allocated # of ints +char *stringbuf; // vc string workspace +int vcreturn; // return value of last function +char *movescriptbuf; // VC EntityMove buffer +char vctrack=0; // VC call tracking to verge.log + +quad *vcstack; // VC stack (seperate from main stack) +quad *vcsp; // VC stack pointer [esp] + +int mapevents; // number of map events in this VC +char *mapvctbl[1024]; // map VC offset table + +int hookretrace=0; +int hooktimer=0; +int invc=0; + +// ----------------- + +typedef struct +{ + char fname[40]; + char argtype[20]; + int numargs, numlocals; + int returntype; + int syscodeofs; +} funcdecl; + +funcdecl *funcs; +int numfuncs; + +typedef struct +{ + char vname[40]; + int vsofs; + int arraylen; +} strdecl; + +strdecl *str; +int numstr=0; +int stralloc; + +typedef struct +{ + char vname[40]; + int varstartofs; + int arraylen; +} vardecl; + +vardecl *vars; +int numvars; +char kill=0; + +// -- local func vars -- + +typedef struct +{ + int nargs[20]; + char s[2560]; +} lvars; + +//lvars *lvar; +lvars lvar; + +// ============================== Prototypes ================================= + +void ResolveString(char *buffer); +void ExecuteSection(); +void ExecuteEvent(int i); +void ExecuteUserFunc(int i); + +// ================================= Code ==================================== + +int ProcessOperand(); // Mutually dependant functions suck. +int ProcessIfOperand(); // Hell yeah they do, bitch. +void HandleExternFunc(); +void HandleStdLib(); +void ExecuteBlock(); + +void LoadSystemVC() +{ + VFILE *f=0; + int i=0; + + Log("Initializing VC interpreter"); + if (!(f=vopen("system.idx"))) err("Could not open system.idx."); + vread(&numvars, 4, f); + vars=(vardecl *) valloc(numvars*sizeof(vardecl), "LoadSystemVC:vars", OID_VC); + vread(vars, numvars*48, f); + vread(&numfuncs, 4, f); + funcs=(funcdecl *) valloc(numfuncs*sizeof(funcdecl), "LoadSystemVC:funcs", OID_VC); + vread(funcs, numfuncs*76, f); + vread(&numstr, 4, f); + str=(strdecl *) valloc(numstr*sizeof(strdecl), "LoadSystemVC:str", OID_VC); + vread(str, numstr*44, f); + vclose(f); + + if (!(f=vopen("system.vcs"))) err("Could not open system.vcs"); + i=filesize(f); + sysvc=(char *) valloc(i, "LoadSystemVC:sysvc", OID_VC); + vread(&numfuncs, 4, f); + vread(&maxint, 4, f); + vread(&stralloc, 4, f); + + globalint=(int *) valloc(maxint ? maxint*4 : 4, "globalint", OID_VC); + if (stralloc) + { + stringbuf=(char *) valloc((stralloc*256), + "LoadSystemVC:stringbuf", OID_VC); + } + else + { + stringbuf=(char *) valloc(256, + "LoadSystemVC:stringbuf (256)", OID_VC); + } + vread(sysvc, i, f); + vclose(f); + + // Initialize VC stack + vcstack=(quad *) valloc(6000, "vcstack", OID_VC); + vcsp=vcstack; + + movescriptbuf=(char *) valloc(65535, "movescriptbuf", OID_VC); + +Log("system vclib init: %d funcs, %d ints (%d bytes), %d strings (%d bytes)", + numfuncs, numvars, maxint*4, numstr, stralloc*256); +} + +void LoadMapVC(VFILE *f) +{ int codesize=0; + + vread(&mapevents, 4, f); + vread(mapvctbl, 4*mapevents, f); + vread(&codesize, 4, f); + mapvc=(char *) valloc(codesize, "mapvc", OID_VC); + vread(mapvc, codesize, f); +} + +byte GrabC() +{ + return *code++; +} + +word GrabW(void) +{ + word *ptr=(word *) code; + code+=2; + return *ptr; +} + +quad GrabD(void) +{ + quad *ptr=(quad *) code; + code+=4; + return *ptr; +} + +void GrabString(char *str) +{ int i=0; + + i=0; + while (*code) + { + str[i]=*code; + code++; + i++; + } + str[i]=0; + code++; +} + +int ReadInt(char category, int loc, int ofs) +{ + switch (category) + { + case op_UVAR: return globalint[loc]; + case op_UVARRAY: return globalint[loc]; + case op_HVAR0: switch (loc) + { + case 0: return xwin; + case 1: return ywin; + case 2: return cameratracking; + case 3: return timer_count; + case 4: return up; + case 5: return down; + case 6: return left; + case 7: return right; + case 8: return b1; + case 9: return b2; + case 10: return b3; + case 11: return b4; + case 12: return sx; + case 13: return sy; + case 14: return playernum; + case 15: return cc; + case 16: return tracker; + case 17: return mx; + case 18: return my; + case 19: return mb; + case 20: return vctrack; + case 21: return width; + case 22: return depth; + case 23: return mp_volume; + case 24: return (int)vsp; + case 25: return lastent; + case 26: return last_pressed; + } + case op_HVAR1: switch (loc) + { + case 0: return (int) screen[ofs]; + case 1: return entity[ofs].x; + case 2: return entity[ofs].y; + case 3: return entity[ofs].tx; + case 4: return entity[ofs].ty; + case 5: return entity[ofs].facing; + case 6: return entity[ofs].moving; + case 7: return entity[ofs].specframe; + case 8: return entity[ofs].speed; +// case 9: return entity[ofs].movecode; + case 10: return entidx[ofs]; + case 11: return key[ofs]; + case 12: return layer[ofs].hline; + case 13: return (int) (*(byte *)ofs); + case 14: return (int) (*(word *)ofs); + case 15: return (int) (*(quad *)ofs); + case 16: return (int) pal[ofs]; + case 17: return (int) (*(char *)ofs); + case 18: return (int) (*(short*)ofs); + case 19: return (int) (*(int *)ofs); + } + case op_LVAR: return lvar.nargs[loc]; + default: + err("VC Execution error: Invalid ReadInt category %d", (int) category); + } + return 0; +} + +void WriteInt(char category, int loc, int ofs, int value) +{ + switch (category) + { + case op_UVAR: globalint[loc]=value; break; + case op_UVARRAY: globalint[loc]=value; break; + case op_HVAR0: switch (loc) + { + case 0: xwin=value; return; + case 1: ywin=value; return; + case 2: cameratracking=value; return; + case 3: timer_count=value; return; + case 16: tracker=value; return; + case 20: vctrack=value; return; + case 23: mp_volume=value; return; + case 26: last_pressed=value; return; + } + case op_HVAR1: switch (loc) + { + case 0: screen[ofs]=(byte) value; return; + case 1: entity[ofs].x=value; return; + case 2: entity[ofs].y=value; return; + case 3: entity[ofs].tx=value; return; + case 4: entity[ofs].ty=value; return; + case 5: entity[ofs].facing=value; return; + case 6: entity[ofs].moving=value; return; + case 7: entity[ofs].specframe=value; return; + case 8: entity[ofs].speed=value; return; +// case 9: entity[ofs].movecode=value; return; +// case 10: + case 11: key[ofs]=value; return; + case 12: layer[ofs].hline=value; return; + case 13: (*(byte *)ofs)=(byte) value; return; + case 14: (*(word *)ofs)=(word) value; return; + case 15: (*(quad *)ofs)=(quad) value; return; + case 16: pal[ofs]=value; return; + case 17: (*(char *)ofs)=(byte) value; return; + case 18: (*(short*)ofs)=(word) value; return; + case 19: (*(int *)ofs)=(quad) value; return; + } + case op_LVAR: lvar.nargs[loc]=value; return; + default: + err("VC Execution error: Invalid WriteInt category %d", (int) category); + } +} + +int ResolveOperand() +{ + int cr=0; + int d=0; + byte c=0; + + cr=ProcessOperand(); // Get base number + while (1) + { + c=GrabC(); + switch (c) + { + case op_ADD: cr += ProcessOperand(); continue; + case op_SUB: cr -= ProcessOperand(); continue; + case op_DIV: d=ProcessOperand(); + if (!d) cr=0; else cr /= d; continue; + case op_MULT: cr = cr * ProcessOperand(); continue; + case op_MOD: d=ProcessOperand(); + if (!d) cr=0; else cr %= d; continue; + case op_SHL: cr = cr << ProcessOperand(); continue; + case op_SHR: cr = cr >> ProcessOperand(); continue; + case op_AND: cr = cr & ProcessOperand(); continue; + case op_OR: cr = cr | ProcessOperand(); continue; + case op_XOR: cr = cr ^ ProcessOperand(); continue; + case op_END: break; + } + break; + } + return cr; +} + +int ProcessOperand() +{ byte op_desc=0; + byte c=0; + quad d=0; + quad ofs=0; + + op_desc=GrabC(); + switch (op_desc) + { + case op_IMMEDIATE: return GrabD(); + case op_HVAR0: c=GrabC(); return ReadInt(op_HVAR0, c, 0); + case op_HVAR1: c=GrabC(); ofs=ResolveOperand(); return ReadInt(op_HVAR1, c, ofs); + case op_UVAR: d=GrabD(); return ReadInt(op_UVAR, d, 0); + case op_UVARRAY: d=GrabD(); d+=ResolveOperand(); return ReadInt(op_UVARRAY, d, 0); + case op_LVAR: c=GrabC(); return lvar.nargs[c]; + case op_BFUNC: HandleStdLib(); + return vcreturn; + case op_UFUNC: HandleExternFunc(); + return vcreturn; + case op_GROUP: return ResolveOperand(); + default: sprintf(strbuf,"VC Execution error: Invalid operand %d.",op_desc); + err(strbuf); break; + } + return 0; +} + +void HandleStringOperand(char *buffer) +{ + char tbuf[256]; + char *d=0; + word w=0; + int c=0; + int i=0; + int j=0; + int z=0; + + c=GrabC(); + switch (c) + { + case s_IMMEDIATE: GrabString(buffer); break; + case s_GLOBAL: w=GrabW(); + d=(char *) (int) stringbuf + (w*256); + z=strlen(d); + if (strlen(buffer)+z+1>250) + err("Combined string length exceeds 250 char max."); + memcpy(buffer, d, z+1); + break; + case s_ARRAY: w=GrabW(); + w+=ResolveOperand(); + d=(char *) (int) stringbuf + (w*256); + z=strlen(d); + if (strlen(buffer)+z+1>250) + err("Combined string length exceeds 250 char max."); + memcpy(buffer, d, z+1); + break; + case s_NUMSTR: i=ResolveOperand(); + sprintf(buffer,"%d",i); + break; + case s_LEFT: ResolveString(tbuf); + i=ResolveOperand(); + c=i250) + err("Combined string length exceeds 250 char max."); + memcpy(buffer, tbuf, c); + buffer[c]=0; + break; + case s_RIGHT: ResolveString(tbuf); + i=ResolveOperand(); + c=i250) + err("Combined string length exceeds 250 char max."); + memcpy(buffer, tbuf+strlen(tbuf)-c, c); + buffer[c]=0; + break; + case s_MID: ResolveString(tbuf); + i=ResolveOperand(); + j=ResolveOperand(); + i=i250) + err("Combined string length exceeds 250 char max."); + memcpy(buffer, tbuf+i, j); + buffer[j]=0; + break; + case s_CHR: if (strlen(buffer)+2>50) + err("Combined string length exceeds 250 char max."); + buffer[0]=(char) ResolveOperand(); + buffer[1]=0; + break; + case s_LOCAL: c=GrabC(); + d=&lvar.s[c*256]; + z=strlen(d); + if (strlen(buffer)+z+1>250) + err("Combined string length exceeds 250 char max."); + memcpy(buffer, d, z+1); + break; + default: err("Invalid VC string operand %d", (int) c); + } +} + +void ResolveString(char *buffer) +{ char c=0; + + HandleStringOperand(buffer); + while (1) + { + c=GrabC(); + switch (c) + { + case s_ADD: + HandleStringOperand((char *) (int) buffer + strlen(buffer)); break; + case s_END: return; + default: + err("VC execution error: Unknown string operator %d",(int) c); + } + } +} + +void vcpush(quad info) +{ + if (vcsp>=vcstack+1500) err("VC stack overflow."); + *vcsp=info; + vcsp++; +} + +quad vcpop() +{ + if (vcsp==vcstack) err("VC stack underflow."); + vcsp--; + return *vcsp; +} + +void ReadVCVar() +{ int i=0; + int j=0; + + strlwr((char *) args[1]); + for (i=0; i<=numvars; i++) + if (!strcmp(vars[i].vname, (char *) args[1])) break; + if (i1) + j+=atoi((char *) args[2]); + j=globalint[j]; + sprintf(strbuf,"%s:%d",vars[i].vname, j); + Con_Printf(strbuf); + return; + } + for (i=0; i<=numstr; i++) + if (!strcmp(str[i].vname, (char *) args[1])) break; + if (i1) + { + j+=atoi((char *) args[2]); + globalint[j]=atoi((char *) args[3]); + } + else globalint[j]=atoi((char *) args[2]); + sprintf(strbuf,"%s:%d", vars[i].vname, atoi((char *) args[2])); + Con_Printf(strbuf); + return; + } + for (i=0; i<=numstr; i++) + if (!strcmp(str[i].vname, (char *) args[1])) break; + if (i=entities) err("SetPlayer(): Entity index out of range"); + + player=&entity[i]; + playernum=i; + +// entity[i].movecode=0; + entity[i].moving=0; +} + +void vc_Map() +{ + hookretrace=0; + hooktimer=0; + kill=1; + ResolveString(startmap); +} + +void vc_LoadFont() +{ + char vcstr[80]; + + ResolveString(vcstr); + vcreturn=LoadFont(vcstr); +} + +void vc_PlayFLI() +{ + char s[256]; + BITMAP flibuf; + byte *data=0; + VFILE *f=0; + int i=0; + + ResolveString(s); + flibuf.w=sx; + flibuf.h=sy; + flibuf.data=screen; + if (!(f=vopen(s))) err("PlayFLI: Could not open %s.",s); + i=filesize(f); + data=(byte *) malloc(i); + if (!data) err("Not enough memory to play FLI."); + vread(data, i, f); + vclose(f); + play_memory_fli(data, &flibuf, 0, ShowPage); + timer_count=0; + set_intensity(63); +} + +void vc_PrintString() +{ + char s[256]; + int i=0; + + i=ResolveOperand(); + ResolveString(s); + printstring(i,s); +} + +void vc_LoadRaw() +{ + char s[256]; + char *t=0; + VFILE *f=0; + int i=0; + + ResolveString(s); + if (!(f=vopen(s))) err("LoadRaw(): Could not open file %s",s); + i=filesize(f); + t=(char *) valloc(i, "LoadRaw:t", OID_VC); + vread(t, i, f); + vclose(f); + vcreturn=(int) t; +} + +void vc_SetTile() +{ + int x=0; + int y=0; + int layr=0; + int value=0; + + x=ResolveOperand(); + y=ResolveOperand(); + layr=ResolveOperand(); + value=ResolveOperand(); + + switch (layr) + { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: layers[layr][(y*layer[layr].sizex)+x] = (short) value; break; + case 6: obstruct[(y*layer[0].sizex)+x] = (byte) value; break; + case 7: zone[(y*layer[0].sizex)+x] = (byte) value; break; + default: err("SetTile(): Invalid layer value"); + } +} + +void vc_ScaleSprite() +{ + int x,y,iw,ih,dw,dh,image; + + x=ResolveOperand(); + y=ResolveOperand(); + iw=ResolveOperand(); + ih=ResolveOperand(); + dw=ResolveOperand(); + dh=ResolveOperand(); + image=ResolveOperand(); + if (!LucentOn) CopySpriteZoomClip(x,y,iw,ih,dw,dh,(byte *)image); + if ( LucentOn) CopySpriteZoomLucentClip(x,y,iw,ih,dw,dh,(byte *)image); +} + +void vc_EntityMove() +{ + int i; + + i=ResolveOperand(); + entity[i].moving=0; + entity[i].speedct=0; + + entity[i].delayct=0; + entity[i].mode=0; + entity[i].data1=0; + + ResolveString((char *) (int) movescriptbuf + (int) (i*256)); + entity[i].scriptofs=(char *) (int) movescriptbuf + (int) (i*256); + entity[i].movecode=4; +} + +void vc_HLine() +{ + int x, y, x2, c; + + x=ResolveOperand(); + y=ResolveOperand(); + x2=ResolveOperand(); + c=ResolveOperand(); + if (!LucentOn) HLineClip(x,y,x2,c); + if ( LucentOn) HLineLucentClip(x,y,x2,c); + +} + +void vc_VLine() +{ + int x, y, y2, c; + + x=ResolveOperand(); + y=ResolveOperand(); + y2=ResolveOperand(); + c=ResolveOperand(); + if (!LucentOn) VLineClip(x,y,y2,c); + if ( LucentOn) VLineLucentClip(x,y,y2,c); +} + +void vc_Line() +{ + int x, y, x2, y2, c; + + x=ResolveOperand(); + y=ResolveOperand(); + x2=ResolveOperand(); + y2=ResolveOperand(); + c=ResolveOperand(); + if (!LucentOn) LineClip(x,y,x2,y2,c); + if ( LucentOn) LineLucentClip(x,y,x2,y2,c); +} + +void vc_Circle() +{ + int x, y, radius, c; + + x=ResolveOperand(); + y=ResolveOperand(); + radius=ResolveOperand(); + c=ResolveOperand(); + if (!LucentOn) CircleClip(x,y,radius,c); + if ( LucentOn) CircleLucentClip(x,y,radius,c); +} + +void vc_CircleFill() +{ + int x, y, radius, c; + + x=ResolveOperand(); + y=ResolveOperand(); + radius=ResolveOperand(); + c=ResolveOperand(); + if (!LucentOn) CircleFillClip(x,y,radius,c); + if ( LucentOn) CircleFillLucentClip(x,y,radius,c); +} + +void vc_Rect() +{ + int x, y, x2, y2, c; + + x=ResolveOperand(); + y=ResolveOperand(); + x2=ResolveOperand(); + y2=ResolveOperand(); + c=ResolveOperand(); + if (!LucentOn) RectClip(x,y,x2,y2,c); + if ( LucentOn) RectLucentClip(x,y,x2,y2,c); +} + +void vc_RectFill() +{ + int x, y, x2, y2, c; + + x=ResolveOperand(); + y=ResolveOperand(); + x2=ResolveOperand(); + y2=ResolveOperand(); + c=ResolveOperand(); + if (!LucentOn) RectFillClip(x,y,x2,y2,c); + if ( LucentOn) RectFillLucentClip(x,y,x2,y2,c); +} + +void vc_strlen() +{ + char str[256]; + + ResolveString(str); + vcreturn=strlen(str); +} + +void vc_strcmp() +{ + char str1[256], str2[256]; + + ResolveString(str1); + ResolveString(str2); + vcreturn=strcmp(str1, str2); +} + +void vc_FontWidth() +{ + int i; + + i=ResolveOperand(); + if (i>=numfonts) + { + vcreturn=0; + return; + } + vcreturn=font[i].width; +} + +void vc_FontHeight() +{ + int i; + + i=ResolveOperand(); + if (i>=numfonts) + { + vcreturn=0; + return; + } + vcreturn=font[i].height; +} + +void vc_SetPixel() +{ + int x, y, c; + + x=ResolveOperand(); + y=ResolveOperand(); + c=ResolveOperand(); + SetPixelClip(x,y,c); +} + +void vc_GetPixel() +{ + int x, y; + + x=ResolveOperand(); + y=ResolveOperand(); + vcreturn=GetPixelClip(x,y); +} + +void vc_EntityOnScreen() +{ + int i,j; + + i=ResolveOperand(); + for (j=0; j63) r=63; + g=ResolveOperand(); if (g<0) g=0; if (g>63) g=63; + b=ResolveOperand(); if (b<0) b=0; if (b>63) b=63; + percent=100-ResolveOperand(); + intensity=ResolveOperand(); + + for (i=0; i<256; i++) + { + wr=pal[(i*3)]; + wg=pal[(i*3)+1]; + wb=pal[(i*3)+2]; + + wr=((wr*percent)+(r*(100-percent)))/100; + wg=((wg*percent)+(g*(100-percent)))/100; + wb=((wb*percent)+(b*(100-percent)))/100; + + pal2[(i*3)]=wr*intensity/63; + pal2[(i*3)+1]=wg*intensity/63; + pal2[(i*3)+2]=wb*intensity/63; + } + SetPalette(pal2); +} + +void EnforceNoDirectories(char *s) +{ + char y[256], *p; + + strcpy(y, s); + p=(char *) (int) y + (int) strlen(y); + while (p>y && *p != '/' && *p != '\\') + p--; + if (*p == '/' || *p == '\\') p++; + strcpy(s, p); +} + +void vc_OpenFile() +{ + VFILE *f; + char fname[256]; + + ResolveString(fname); + EnforceNoDirectories(fname); + + f=vopen(fname); + vcreturn=(quad) f; + + Log(" --> VC opened file %s, ptr %u", fname, (quad) f); +} + +void vc_CloseFile() +{ + VFILE *f; + + f=(VFILE *) ResolveOperand(); + vclose(f); + + Log(" --> VC closed file at ptr %u", (quad) f); +} + +void vc_QuickRead() +{ + char fname[256], c, *p; + int d=0, l, i; + VFILE *f; + word w=0; + + ResolveString(fname); + EnforceNoDirectories(fname); + c=GrabC(); + if (c==op_STRING) + { + w=GrabW(); + d=0; + } + if (c==op_SARRAY) + { + w=GrabW(); + d=ResolveOperand(); + } + l=ResolveOperand(); + l=l ? l : 1; + if (!(f=vopen(fname))) err("QuickRead() - could not open %s",fname); + + p=(char *) (quad) stringbuf + ((w+d)*256); + for (i=0; i=entities) err("AddFollower(): Not a valid entity index. (%d)",i); + follower[(int)numfollowers]=i; + numfollowers++; +// ResetFollowers(); +} + +void vc_FlatPoly() +{ + int a, b, c, d, e, f, g; + + a=ResolveOperand(); + b=ResolveOperand(); + c=ResolveOperand(); + d=ResolveOperand(); + e=ResolveOperand(); + f=ResolveOperand(); + g=ResolveOperand(); + FlatPoly(a,b,c,d,e,f,g); +} + +void vc_TMapPoly() +{ + int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o; + + a=ResolveOperand(); + b=ResolveOperand(); + c=ResolveOperand(); + d=ResolveOperand(); + e=ResolveOperand(); + f=ResolveOperand(); + g=ResolveOperand(); + h=ResolveOperand(); + i=ResolveOperand(); + j=ResolveOperand(); + k=ResolveOperand(); + l=ResolveOperand(); + m=ResolveOperand(); + n=ResolveOperand(); + o=ResolveOperand(); + TMapPoly(a,b,c,d,e,f,g,h,i,j,k,l,m,n,(char *) o); +} + +void vc_CacheSound() +{ + char fname[256]; + + ResolveString(fname); + vcreturn=CacheSound(fname); + +} + +void vc_PlaySound() +{ + int a, b, c; + + a=ResolveOperand(); + b=ResolveOperand(); + c=ResolveOperand(); + PlaySound(a, b, c); +} + +void vc_RotScale() +{ + int a, b, c, d, e, f, g; + + a=ResolveOperand(); + b=ResolveOperand(); + c=ResolveOperand(); + d=ResolveOperand(); + e=ResolveOperand(); + f=ResolveOperand(); + g=ResolveOperand(); + + RotScale(a, b, c, d, e*3.14159 / 180, (float) f/1000, (byte *) g); +} + +void vc_MapLine() +{ + int x, y, sy, l; + int xtc, ytc, xofs, yofs; + + x=ResolveOperand(); + y=ResolveOperand(); + sy=ResolveOperand(); + l=ResolveOperand(); + + xtc=x >> 4; + ytc=y >> 4; + xofs= -(x&15); + yofs= (y&15); + + MapLine(xofs, sy, yofs, (word *) (layers[l]+((ytc*layer[l].sizex)+xtc))); +} + +void vc_TMapLine() +{ + int x, y, sy, l; + int xtc, ytc, xofs, yofs; + + x=ResolveOperand(); + y=ResolveOperand(); + sy=ResolveOperand(); + l=ResolveOperand(); + + xtc=x >> 4; + ytc=y >> 4; + xofs= -(x&15); + yofs= (y&15); + + TMapLine(xofs, sy, yofs, (word *) (layers[l]+((ytc*layer[l].sizex)+xtc))); +} + +void vc_val() +{ + char s[256]; + + ResolveString(s); + vcreturn=atoi(s); +} + +void vc_TScaleSprite() +{ + int x,y,iw,ih,dw,dh,image; + + x=ResolveOperand(); + y=ResolveOperand(); + iw=ResolveOperand(); + ih=ResolveOperand(); + dw=ResolveOperand(); + dh=ResolveOperand(); + image=ResolveOperand(); + if (!LucentOn) TCopySpriteZoomClip(x,y,iw,ih,dw,dh,(byte *) image); + if ( LucentOn) TCopySpriteZoomLucentClip(x,y,iw,ih,dw,dh,(byte *) image); +} + +void vc_GrabRegion() +{ + int x1, y1, x2, y2; + int i, j, w, h; + char *ptr; + + x1=ResolveOperand(); + y1=ResolveOperand(); + x2=ResolveOperand()+1; + y2=ResolveOperand()+1; + ptr=(char *) ResolveOperand(); + + if (x2>sx-1) x2=sx-1; + if (y2>sy-1) y2=sy-1; + if (x1<0) x1=0; + if (y1<0) y1=0; + + w=x2 - x1; + h=y2 - y1; + + for (j=y1; j VC renamed %s to %s.", s1, s2); +} + +void vc_fdelete() +{ + char s[256]; + + ResolveString(s); + EnforceNoDirectories(s); + remove(s); + + Log(" --> VC deleted %s.", s); +} + +void vc_fwopen() +{ + char s[256]; + + ResolveString(s); + EnforceNoDirectories(s); + vcreturn=(int) fopen(s,"wb"); + + Log(" --> VC opened %s for writing, ptr %u.", s, vcreturn); +} + +void vc_fwclose() +{ + FILE *f; + + f=(FILE *) ResolveOperand(); + fclose(f); + + Log(" --> VC close file opened for writing, ptr %u.", (int) f); +} + +void vc_memcpy() +{ + int a, b, c; + + a=ResolveOperand(); + b=ResolveOperand(); + c=ResolveOperand(); + memcpy((char *) a, (char *) b, c); +} + +void vc_memset() +{ + int a, b, c; + + a=ResolveOperand(); + b=ResolveOperand(); + c=ResolveOperand(); + memset((char *) a, (byte) b, c); +} + +void vc_Silhouette() +{ + int x=ResolveOperand(); + int y=ResolveOperand(); + int w=ResolveOperand(); + int h=ResolveOperand(); + byte *img=(byte *) ResolveOperand(); + byte c=(byte) ResolveOperand(); + + if (ClipOn) + { + LucentOn ? SilhouetteLucentClip(x,y,w,h,c,img) + : SilhouetteClip(x,y,w,h,c,img); + } + else + { + LucentOn ? SilhouetteLucent(x,y,w,h,c,img) + : Silhouette(x,y,w,h,c,img); + } +} + +void vc_SilhouetteScale() +{ + int x=ResolveOperand(); + int y=ResolveOperand(); + int sw=ResolveOperand(); + int sh=ResolveOperand(); + int dw=ResolveOperand(); + int dh=ResolveOperand(); + byte *img=(byte *) ResolveOperand(); + byte c=(byte) ResolveOperand(); + + if (ClipOn) + { + LucentOn ? SilhouetteZoomLucentClip(x,y,sw,sh,dw,dh,c,img) + : SilhouetteZoomClip(x,y,sw,sh,dw,dh,c,img); + } + else + { + LucentOn ? SilhouetteZoomLucent(x,y,sw,sh,dw,dh,c,img) + : SilhouetteZoom(x,y,sw,sh,dw,dh,c,img); + } +} + +void vc_Tint() +{ + int x=ResolveOperand(); + int y=ResolveOperand(); + int w=ResolveOperand(); + int h=ResolveOperand(); + byte *img=(byte *)ResolveOperand(); + byte c=(byte)ResolveOperand(); + + ClipOn ? TintClip(x,y,w,h,c,img) + : Tint(x,y,w,h,c,img); +} + +void vc_TintScale() +{ + int x=ResolveOperand(); + int y=ResolveOperand(); + int sw=ResolveOperand(); + int sh=ResolveOperand(); + int dw=ResolveOperand(); + int dh=ResolveOperand(); + byte *img=(byte *) ResolveOperand(); + byte c=(byte) ResolveOperand(); + + ClipOn ? TintZoomClip(x,y,sw,sh,dw,dh,c,img) + : TintZoom(x,y,sw,sh,dw,dh,c,img); +} + +void vc_Mosaic() +{ + int a,b,c,d,e,f,g; + + a=ResolveOperand(); + b=ResolveOperand(); + c=ResolveOperand(); + d=ResolveOperand(); + e=ResolveOperand(); + f=ResolveOperand(); + g=ResolveOperand(); + Mosaic(a,b,(byte *) c,d,e,f,g); +} + +void vc_WriteVars() +{ + FILE *f; + + f=(FILE *) ResolveOperand(); + fwrite(globalint, 4, maxint, f); + fwrite(stringbuf, 256, stralloc, f); +} + +void vc_ReadVars() +{ + VFILE *f; + + f=(VFILE *) ResolveOperand(); + vread(globalint, 4*maxint, f); + vread(stringbuf, 256*stralloc, f); +} + +void vc_Asc() +{ + char s[256]; + + ResolveString(s); + vcreturn=(int) s[0]; +} + +void vc_NumForScript() +{ + vcreturn=GrabD(); +} + +void vc_Filesize() +{ + char s[256]; + VFILE *f; + + ResolveString(s); + f=vopen(s); + vcreturn=filesize(f); + vclose(f); +} + +void vc_FTell() +{ + VFILE *f=(VFILE *)ResolveOperand(); + vcreturn=vtell(f); +} + +void vc_CheckCorrupt() +{ + Log("checking for corruption..."); + CheckCorruption(); +} + +void HandleStdLib() +{ + int x=0; + byte c=0; + + c=GrabC(); + switch (c) + { + case 1: vc_Exit_(); break; + case 2: vc_Message(); break; + case 3: vc_Malloc(); break; + case 4: vc_Free(); break; + case 5: vc_pow(); break; + case 6: vc_loadimage(); break; + case 7: vc_copysprite(); break; + case 8: vc_tcopysprite(); break; + case 9: Render(); break; + case 10: ShowPage(); break; + case 11: vc_EntitySpawn(); break; + case 12: vc_SetPlayer(); break; + case 13: vc_Map(); break; + case 14: vc_LoadFont(); break; + case 15: vc_PlayFLI(); break; + case 16: curx=ResolveOperand(); cury=ResolveOperand(); break; + case 17: vc_PrintString(); break; + case 18: vc_LoadRaw(); break; + case 19: vc_SetTile(); break; + case 20: allowconsole=ResolveOperand(); break; + case 21: vc_ScaleSprite(); break; + case 22: ProcessEntities(); break; + case 23: UpdateControls(); break; + case 24: UnPress(ResolveOperand()); break; + case 25: vc_EntityMove(); break; + case 26: vc_HLine(); break; + case 27: vc_VLine(); break; + case 28: vc_Line(); break; + case 29: vc_Circle(); break; + case 30: vc_CircleFill(); break; + case 31: vc_Rect(); break; + case 32: vc_RectFill(); break; + case 33: vc_strlen(); break; + case 34: vc_strcmp(); break; + case 35: break; //CD_Stop(); break; + case 36: ResolveOperand(); break; //CD_Play(ResolveOperand()); break; + case 37: vc_FontWidth(); break; + case 38: vc_FontHeight(); break; + case 39: vc_SetPixel(); break; + case 40: vc_GetPixel(); break; + case 41: vc_EntityOnScreen(); break; + case 42: vcreturn=0; + if ((x=ResolveOperand())) + vcreturn=rand()%x; + break; + case 43: vc_GetTile(); break; + case 44: vc_HookRetrace(); break; + case 45: vc_HookTimer(); break; + case 46: vc_SetResolution(); break; + case 47: vc_SetRString(); break; + case 48: vc_SetClipRect(); break; + case 49: vc_SetRenderDest(); break; + case 50: vc_RestoreRenderSettings(); break; + case 51: vc_PartyMove(); break; + case 52: vcreturn=sintbl[ResolveOperand()]; break; + case 53: vcreturn=costbl[ResolveOperand()]; break; + case 54: vcreturn=tantbl[ResolveOperand()]; break; + case 55: ReadMouse(); break; + case 56: ClipOn=ResolveOperand(); break; + case 57: LucentOn=ResolveOperand(); break; + case 58: vc_WrapBlit(); break; + case 59: vc_TWrapBlit(); break; + case 60: vc_SetMousePos(); break; + case 61: vc_HookKey(); break; + case 62: vc_PlayMusic(); break; + case 63: StopMusic(); break; + case 64: vc_PaletteMorph(); break; + case 65: vc_OpenFile(); break; + case 66: vc_CloseFile(); break; + case 67: vc_QuickRead(); break; + case 68: vc_AddFollower(); break; +// case 69: vc_KillFollower(); break; +// case 70: vc_KillAllFollowers(); break; +// case 71: ResetFollowers(); + case 72: vc_FlatPoly(); break; + case 73: vc_TMapPoly(); break; + case 74: vc_CacheSound(); break; + case 75: FreeAllSounds(); break; + case 76: vc_PlaySound(); break; + case 77: vc_RotScale(); break; + case 78: vc_MapLine(); break; + case 79: vc_TMapLine(); break; + case 80: vc_val(); break; + case 81: vc_TScaleSprite(); break; + case 82: vc_GrabRegion(); break; + case 83: vc_Log(); break; + case 84: vc_fseekline(); break; + case 85: vc_fseekpos(); break; + case 86: vc_fread(); break; + case 87: vc_fgetbyte(); break; + case 88: vc_fgetword(); break; + case 89: vc_fgetquad(); break; + case 90: vc_fgetline(); break; + case 91: vc_fgettoken(); break; + case 92: vc_fwritestring(); break; + case 93: vc_fwrite(); break; + case 94: vc_frename(); break; + case 95: vc_fdelete(); break; + case 96: vc_fwopen(); break; + case 97: vc_fwclose(); break; + case 98: vc_memcpy(); break; + case 99: vc_memset(); break; + case 100: vc_Silhouette(); break; + case 101: vcreturn=(int) InitMosaicTable(); break; + case 102: vc_Mosaic(); break; + case 103: vc_WriteVars(); break; + case 104: vc_ReadVars(); break; + case 105: ExecuteEvent(ResolveOperand()); break; + case 106: vc_Asc(); break; + case 107: ExecuteUserFunc(ResolveOperand()); break; + case 108: vc_NumForScript(); break; + case 109: vc_Filesize(); break; + case 110: vc_FTell(); break; + case 111: vc_CheckCorrupt(); break; + default: err("VC Execution error: Invalid STDLIB index. (%d)",(int) c); + } +} + +// ========================== VC Interpretation Core ========================== + +int ProcessIf() +{ + byte exec, c; + + exec=ProcessIfOperand(); // Get base value; + + while (1) + { + c=GrabC(); + switch (c) + { + case i_AND: exec=exec & ProcessIfOperand(); continue; + case i_OR: exec=exec | ProcessIfOperand(); continue; + case i_UNGROUP: break; + } + break; + } + return exec; +} + +int ProcessIfOperand() +{ + byte op_desc; + int eval; + + eval=ResolveOperand(); + op_desc=GrabC(); + switch (op_desc) + { + case i_ZERO: if (!eval) return 1; else return 0; + case i_NONZERO: if (eval) return 1; else return 0; + case i_EQUALTO: if (eval == ResolveOperand()) return 1; else return 0; + case i_NOTEQUAL: if (eval != ResolveOperand()) return 1; else return 0; + case i_GREATERTHAN: if (eval > ResolveOperand()) return 1; else return 0; + case i_GREATERTHANOREQUAL: if (eval >= ResolveOperand()) return 1; else return 0; + case i_LESSTHAN: if (eval < ResolveOperand()) return 1; else return 0; + case i_LESSTHANOREQUAL: if (eval <= ResolveOperand()) return 1; else return 0; + case i_GROUP: if (ProcessIf()) return 1; else return 0; + } + return 0; +} + +void HandleIf() +{ + char *d; + + if (ProcessIf()) + { + GrabD(); + return; + } + d=(char *) GrabD(); + code=(char *) (int) basevc + (int) d; + + return; +} + +void HandleExternFunc() +{ + word i, j, k; + //lvars *ob = NULL; + //lvars *save = NULL; + lvars temp; + lvars ob; + + // save lvar + memcpy(&temp, &lvar, sizeof(lvars)); + + memset(&ob, 0, sizeof(lvars)); + //ob = (lvars *)valloc(sizeof(lvars)); //2640); //sizeof(lvars)); //2640); + //MSS_CHECK_POINTER_VALIDITY(ob); + //MSS_SET_BLOCK_LABEL(ob, "ob"); + + k = 0; + i = GrabW(); + for (j=0; j Entering user func %s, codeofs %d", + funcs[i].fname, funcs[i].syscodeofs); + } + + ExecuteBlock(); + basevc = (char *)vcpop(); + + // restore lvar + memcpy(&lvar, &temp, sizeof(lvars)); + //memcpy(lvar, &temp, sizeof(lvars)); + //vfree(lvar); + //lvar = ob; + + if (vctrack) + { + Log(" --> Returned from %s", funcs[i].fname); + } + +// MSS_CHECK_ALL_BLOCKS; +} + +void HandleAssign() +{ + byte c, d; + word w; + quad location=0, value, ofs=0; + + c=GrabC(); + if (c==op_STRING) + { + w=GrabW(); + c=GrabC(); + if (c!=a_SET) err("VC execution error: Corrupt string assignment"); + location=(quad) stringbuf + (w*256); + ResolveString((char *) location); + return; + } + if (c==op_SARRAY) + { + w=GrabW(); + w+=ResolveOperand(); + c=GrabC(); + if (c!=a_SET) err("VC execution error: Corrupt string assignment"); + location=(quad) stringbuf + (w*256); + ResolveString((char *) location); + return; + } + if (c==op_SLOCAL) + { + w=GrabW(); + c=GrabC(); + if (c!=a_SET) err("VC execution error: Corrupt string assignment"); + location=(quad) &lvar.s[w*256]; + ResolveString((char *) location); + return; + } + switch (c) + { + case op_UVAR: location=GrabD(); break; + case op_UVARRAY: location=GrabD(); location+=ResolveOperand(); break; + case op_HVAR0: location=(int) GrabC(); break; + case op_HVAR1: location=(int) GrabC(); ofs=ResolveOperand(); break; + case op_LVAR: location=(int) GrabC(); break; + default: err("VC Execution error: Unknown assignment category."); + } + value=ReadInt(c, location, ofs); + d=GrabC(); + switch(d) + { + case a_SET: value=ResolveOperand(); break; + case a_INC: value++; break; + case a_DEC: value--; break; + case a_INCSET: value+=ResolveOperand(); break; + case a_DECSET: value-=ResolveOperand(); break; + default: + err("VC Execution error: Invalid assignment operator %d.", (int) d); + } + WriteInt(c, location, ofs, value); +} + +void HandleSwitch() +{ + int realvalue=0; + int compvalue=0; + byte c=0; + byte *next=0; + + realvalue=ResolveOperand(); + c=GrabC(); + while (c!=opRETURN) + { + compvalue=ResolveOperand(); + next=(byte *) GrabD(); + if (compvalue!=realvalue) + { + code=(char *) (int) basevc+(int) next; + c=GrabC(); + continue; + } + ExecuteSection(); + c=GrabC(); + } +} + +void ExecuteVC() +{ + byte c=0; + + while (1) + { + if (kill) break; + c=GrabC(); + switch (c) + { + case opEXEC_STDLIB: HandleStdLib(); break; + case opEXEC_LOCALFUNC: break; + case opEXEC_EXTERNFUNC: HandleExternFunc(); break; + case opIF: HandleIf(); break; + case opELSE: break; + case opGOTO: code=basevc+GrabD(); break; + case opSWITCH: HandleSwitch(); break; + case opASSIGN: HandleAssign(); break; + case opRETURN: code=(char *) vcpop(); break; + case opSETRETVAL: vcreturn=ResolveOperand(); break; + default: + err("Internal VC execution error. (%d)",(int) code - (int) basevc); + } + if ((int) code != -1) continue; else break; + } +} + +void ExecuteBlock() +{ + byte c=0; + + while (1) + { + if (kill) break; + c=GrabC(); + switch (c) + { + case opEXEC_STDLIB: HandleStdLib(); break; + case opEXEC_LOCALFUNC: break; + case opEXEC_EXTERNFUNC: HandleExternFunc(); break; + case opIF: HandleIf(); break; + case opELSE: break; + case opGOTO: code=basevc+GrabD(); break; + case opSWITCH: HandleSwitch(); break; + case opASSIGN: HandleAssign(); break; + case opRETURN: code=(char *) vcpop(); break; + case opSETRETVAL: vcreturn=ResolveOperand(); break; + default: + err("Internal VC execution error. (%d)",(int) code - (int) basevc); + } + if (c != opRETURN) continue; else break; + } +} + +void ExecuteSection() +{ + byte c=0; + + while (1) + { + if (kill) break; + c=GrabC(); + switch (c) + { + case opEXEC_STDLIB: HandleStdLib(); break; + case opEXEC_LOCALFUNC: break; + case opEXEC_EXTERNFUNC: HandleExternFunc(); break; + case opIF: HandleIf(); break; + case opELSE: break; + case opGOTO: code=basevc+GrabD(); break; + case opSWITCH: HandleSwitch(); break; + case opASSIGN: HandleAssign(); break; + case opRETURN: break; + case opSETRETVAL: vcreturn=ResolveOperand(); break; + default: + err("Internal VC execution error. (%d)", (int) code - (int) basevc); + } + if (c != opRETURN) continue; else break; + } +} + +void ExecuteEvent(int i) +{ + invc++; + vcpush((quad) code); + vcpush((quad) basevc); + if (i>mapevents) err("VC event out of bounds (%d)",i); + basevc=mapvc; + code=(char *) (int) mapvc + (int) mapvctbl[i]; + vcpush(-1); + ExecuteVC(); + basevc=(char *) vcpop(); + code=(char *) vcpop(); + invc--; +} + +void ExecuteUserFunc(int i) +{ + //lvars *ob=0; + lvars temp; + + // save lvar + memcpy(&temp, &lvar, sizeof(lvars)); + + vcpush((quad) code); + vcpush((quad) basevc); + + if (i > numfuncs) + err("VC event out of bounds"); + + basevc = sysvc; + code = (char *)(sysvc + funcs[i].syscodeofs); + + vcpush(-1); + + memset(&lvar, 0, sizeof(lvar)); + //ob = lvar; + //lvar = (lvars *)valloc(sizeof(lvars)); //2640); + //MSS_SET_BLOCK_LABEL(lvar, "lvar"); + + ExecuteVC(); + basevc = (char *) vcpop(); + code = (char *) vcpop(); + + //free(lvar); + //lvar = ob; + + // restore lvar + memcpy(&lvar, &temp, sizeof(lvars)); +} + +void HookRetrace() +{ + if (!hookretrace) return; + if (hookretrace=USERFUNC_MARKER) ExecuteUserFunc(hookretrace-USERFUNC_MARKER); +} + +void HookTimer() +{ + if (!hooktimer) return; + if (hooktimer=USERFUNC_MARKER) ExecuteUserFunc(hooktimer-USERFUNC_MARKER); +} + +void HookKey(int script) +{ + if (!script) return; + if (script=USERFUNC_MARKER) ExecuteUserFunc(script-USERFUNC_MARKER); +} diff --git a/16/v2/source/verge/ENGINE/VC.H b/16/v2/source/verge/ENGINE/VC.H new file mode 100644 index 00000000..00906ceb --- /dev/null +++ b/16/v2/source/verge/ENGINE/VC.H @@ -0,0 +1,56 @@ +/* +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. +*/ + +#ifndef VC_H +#define VC_H + +typedef struct +{ + char fname[40]; + char argtype[12]; + int numargs; + int returntype; + int syscodeofs; +} funcdecl; + +extern funcdecl funcs[100]; +extern int numfuncs, mapevents; +extern int hookretrace, hooktimer; + +typedef struct +{ + char vname[40]; + int varstartofs; + int arraylen; +} vardecl; + +extern vardecl vars[100]; +extern int numvars, invc; +extern char *mapvc, kill; +extern char *vcsp, *vcstack; + +void LoadSystemVC(); +void LoadMapVC(VFILE *f); +void ReadVCVar(); +void WriteVCVar(); +void ExecuteEvent(int); +void ExecuteUserFunc(int); + +void HookRetrace(); +void HookTimer(); +void HookKey(int script); + +#endif diff --git a/16/v2/source/verge/ENGINE/VCCODE.H b/16/v2/source/verge/ENGINE/VCCODE.H new file mode 100644 index 00000000..74495139 --- /dev/null +++ b/16/v2/source/verge/ENGINE/VCCODE.H @@ -0,0 +1,111 @@ +/* +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. +*/ + +// We never use zero as a tag. This makes it easier to track down misbehaving +// VC code, since zero is commonly come-by when going off into uncharted +// depths of memory. + +#define ERROR 0 + +// Opcode values. + +#define opEXEC_STDLIB 1 +#define opEXEC_LOCALFUNC 2 +#define opEXEC_EXTERNFUNC 3 +#define opIF 4 +#define opELSE 5 +#define opGOTO 6 +#define opSWITCH 7 +#define opCASE 8 +#define opRETURN 9 +#define opASSIGN 10 +#define opSETRETVAL 11 +#define opSETLOCALSTACK 12 + +// Operand types. + +#define op_IMMEDIATE 1 +#define op_HVAR0 2 +#define op_HVAR1 3 +#define op_UVAR 4 +#define op_UVARRAY 5 +#define op_LVAR 6 +#define op_BFUNC 7 +#define op_UFUNC 8 +#define op_GROUP 9 +#define op_STRING 10 +#define op_SARRAY 11 +#define op_SLOCAL 12 + +// Variable types. + +#define v_IMMEDIATE 1 // is this necessary? +#define v_CHAR 2 +#define v_PTR 3 +#define v_INT 4 + +// IF relational operators. + +#define i_ZERO 1 +#define i_NONZERO 2 +#define i_EQUALTO 3 +#define i_NOTEQUAL 4 +#define i_GREATERTHAN 5 +#define i_LESSTHAN 6 +#define i_GREATERTHANOREQUAL 7 +#define i_LESSTHANOREQUAL 8 +#define i_GROUP 9 +#define i_UNGROUP 10 +#define i_AND 11 +#define i_OR 12 + +// Assignment operators. + +#define a_SET 1 +#define a_INC 2 +#define a_DEC 3 +#define a_INCSET 4 +#define a_DECSET 5 +#define a_MULTSET 6 +#define a_DIVSET 7 + +// Operand combination operators. + +#define op_ADD 1 +#define op_SUB 2 +#define op_MULT 3 +#define op_DIV 4 +#define op_MOD 5 +#define op_SHL 6 +#define op_SHR 7 +#define op_AND 8 +#define op_OR 9 +#define op_XOR 10 +#define op_END 11 + +// String components + +#define s_IMMEDIATE 1 +#define s_GLOBAL 2 +#define s_ARRAY 3 +#define s_NUMSTR 4 +#define s_LEFT 5 +#define s_RIGHT 6 +#define s_MID 7 +#define s_LOCAL 8 +#define s_ADD 9 +#define s_CHR 10 +#define s_END 11 diff --git a/16/v2/source/verge/ENGINE/VDRIVER.C b/16/v2/source/verge/ENGINE/VDRIVER.C new file mode 100644 index 00000000..69008c64 --- /dev/null +++ b/16/v2/source/verge/ENGINE/VDRIVER.C @@ -0,0 +1,2814 @@ +/* +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 VDRIVER_H + +#include +#include +#include +#include +#include "verge.h" + +#define SWAP(a,b) { a-=b; b+=a; a=b-a; } + +// ================================= Data ==================================== + +char *DriverDesc; + +byte *screen,*video,*vscreen; +byte pal[768], pal2[768]; +byte *translucency_table; + +int sx, sy; +int tx, ty; +int tsx, tsy; +int cx1=0,cy1=0,cx2=319,cy2=199; + +// Driver function-pointers. +int (*ShutdownVideo) (int i); +int (*ShowPage) (void); + +// ================================= Code ==================================== + +void SetPalette(byte *pall) +{ quad i; + + outp(0x03c8, 0); + for (i=0; i<768; i++) + outp(0x03c9, pall[i]); +} + +void GetPalette() +{ quad i; + + outp(0x03c7, 0); + for (i=0; i<768; i++) + pal[i]=inp(0x03c9); +} + +void set_intensity(quad n) +{ quad i; + + for (i=0; i<768; i++) + pal2[i] = (pal[i] * n) >> 6; + + SetPalette(pal2); +} + +int LFB_ShowPage(void) +{ + if (key[SCAN_ALT] && key[SCAN_X]) err("Exiting: ALT-X pressed."); + RenderGUI(); + cpubyte=PFLIP; + memcpy(video,screen,sx*sy); + cpubyte=ETC; + return 0; +} + +void CopySprite(int x, int y, int width, int height, byte *src) +{ + byte *d; + + cpubyte=RENDER; + d=screen+(y*sx)+x; + for (; height; height--) + { + memcpy(d,src,width); + src+=width; + d+=sx; + } + cpubyte=ETC; +} + +void TCopySprite(int x, int y, int width, int height, byte *src) +{ + byte *d, c; + + cpubyte=RENDER; + d=screen+(y*sx)+x; + for (; height; height--) + { + for (x=0; x>16)]; + xerr+=xadj; + } + d+=sx; + yerr+=yadj; + src+=(yerr>>16)*sw; + yerr &= 0xffff; + } + cpubyte=ETC; +} + +void TCopySpriteZoom(int x, int y, int sw, int sh, int dw, int dh, byte *src) +{ + int i,j; + int xerr,yerr; + int xadj,yadj; + byte *d; + byte c; + + cpubyte=RENDER; + if (dw<1 || dh<1) return; + xadj = (sw<<16)/dw; + yadj = (sh<<16)/dh; + d = screen+(y*sx)+x; + yerr=0; + for (i=0; i>16)]; + if (c) + d[j]=c; + xerr+=xadj; + } + d+=sx; + yerr+=yadj; + src+=(yerr>>16)*sw; + yerr &= 0xffff; + } + cpubyte=ETC; +} + +void CopySpriteZoomLucent(int x, int y, int sw, int sh, int dw, int dh, byte *src) +{ + int i,j; + int xerr,yerr; + int xadj,yadj; + byte *d; + + cpubyte=RENDER; + if (dw<1 || dh<1) return; + xadj = (sw<<16)/dw; + yadj = (sh<<16)/dh; + d = screen+(y*sx)+x; + yerr=0; + + for (i=0; i>16)]<<8)]; + xerr+=xadj; + } + d+=sx; + yerr+=yadj; + src+=(yerr>>16)*sw; + yerr &= 0xffff; + } + cpubyte=ETC; +} + +void TCopySpriteZoomLucent(int x, int y, int sw, int sh, int dw, int dh, byte *src) +{ + int i,j; + int xerr,yerr; + int xadj,yadj; + byte *d; + byte c; + + cpubyte=RENDER; + if (dw<1 || dh<1) return; + xadj = (sw<<16)/dw; + yadj = (sh<<16)/dh; + d = screen+(y*sx)+x; + yerr=0; + + for (i=0; i>16)]; + if (c) + d[j]=c; + xerr+=xadj; + } + d+=sx; + yerr+=yadj; + src+=(yerr>>16)*sw; + yerr &= 0xffff; + } + cpubyte=ETC; +} + +void Silhouette(int x, int y, int width, int height, int color, byte *src) +{ + byte *d=0; + + cpubyte=RENDER; + if (height<1 || width<1) return; + d=screen+(y*sx)+x; + do { + for (x=0; x>16)]) + d[x]=color; + xerr+=xadj; + } + d+=sx; + yerr+=yadj; + src+=(yerr>>16)*sw; + yerr &= 0xffff; + } while (--dh); + cpubyte=ETC; +} + +void SilhouetteLucent(int x, int y, int width, int height, int color, byte *src) +{ + byte *d=0; + byte *range=0; + + cpubyte=RENDER; + if (width<1 || height<1) return; + d=screen+(y*sx)+x; + range=translucency_table+(color<<8); + do { + for (x=0; x>16)]) + d[x]=range[d[x]]; + xerr+=xadj; + } + d+=sx; + yerr+=yadj; + src+=(yerr>>16)*sw; + yerr &= 0xffff; + } while (--dh); + cpubyte=ETC; +} + +// aen +void Tint(int x, int y, int width, int height, int color, byte *src) +{ + byte *d=0; + byte *range=0; + byte c=0; + + cpubyte=RENDER; + if (width<1 || height<1) return; + d=screen+(y*sx)+x; + range=translucency_table+(color<<8); + do { + for (x=0; x>16)]; + if (c) + d[x]=range[c]; + xerr+=xadj; + } + d+=sx; + yerr+=yadj; + src+=(yerr>>16)*sw; + yerr &= 0xffff; + } while (--dh); + cpubyte=ETC; +} + +void CopySpriteClip(int x, int y, int width, int height, byte *src) +{ + byte *s,*d; + int xl,yl,xs,ys; + + cpubyte=RENDER; + xl=width; + yl=height; + xs=ys=0; + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (xcx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (xcx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + + if (xcx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (xcx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (x>16)*sw); + d = screen+(y*sx)+x; + yerr = yerr_start & 0xffff; + for (i=0; i>16)]; + xerr+=xadj; + } + d+=sx; + yerr += yadj; + src += (yerr>>16)*sw; + yerr &= 0xffff; + } + cpubyte=ETC; +} + +void TCopySpriteZoomClip(int x, int y, int sw, int sh, int dw, int dh, byte *src) +{ + int i,j; + int xerr,yerr; + int xerr_start, yerr_start; + int xadj,yadj; + byte *d; + byte c; + int xl,yl,xs,ys; + + cpubyte=RENDER; + if (dw<1 || dh<1) return; + + xl=dw; + yl=dh; + xs=ys=0; + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (x>16)*sw); + d = screen+(y*sx)+x; + yerr = yerr_start & 0xffff; + for (i=0; i>16)]; + if (c) + d[j]=c; + xerr+=xadj; + } + d+=sx; + yerr += yadj; + src += (yerr>>16)*sw; + yerr &= 0xffff; + } + cpubyte=ETC; +} + +void CopySpriteZoomLucentClip(int x, int y, int sw, int sh, int dw, int dh, byte *src) +{ + int i,j; + int xerr,yerr; + int xerr_start, yerr_start; + int xadj,yadj; + byte *d; + int xl,yl,xs,ys; + + cpubyte=RENDER; + if (dw<1 || dh<1) return; + xl=dw; + yl=dh; + xs=ys=0; + + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (x>16)*sw); + d = screen+(y*sx)+x; + yerr = yerr_start & 0xffff; + for (i=0; i>16)]<<8)]; + xerr+=xadj; + } + d+=sx; + yerr += yadj; + src += (yerr>>16)*sw; + yerr &= 0xffff; + } + cpubyte=ETC; +} + +void TCopySpriteZoomLucentClip(int x, int y, int sw, int sh, int dw, int dh, byte *src) +{ + int i,j; + int xerr,yerr; + int xerr_start, yerr_start; + int xadj,yadj; + byte *d; + int c; + int xl,yl,xs,ys; + + cpubyte=RENDER; + if (dw<1 || dh<1) return; + xl=dw; + yl=dh; + xs=ys=0; + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (x>16)*sw); + d = screen+(y*sx)+x; + yerr = yerr_start & 0xffff; + for (i=0; i>16)]; + if (c) + d[j]=translucency_table[d[j]|(c<<8)]; + xerr+=xadj; + } + d+=sx; + yerr += yadj; + src += (yerr>>16)*sw; + yerr &= 0xffff; + } + cpubyte=ETC; +} + +void SilhouetteClip(int x, int y, int width, int height, int color, byte *src) +{ + byte *s=0,*d=0; + int xl=0,yl=0,xs=0,ys=0; + + cpubyte=RENDER; + xl=width; + yl=height; + xs=ys=0; + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (xcx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (x>16)*sw); + d = screen+(y*sx)+x; + yerr = yerr_start & 0xffff; + for (y=0; y>16)]) + d[x]=color; + xerr+=xadj; + } + d+=sx; + yerr += yadj; + src += (yerr>>16)*sw; + yerr &= 0xffff; + } + cpubyte=ETC; +} + +void SilhouetteLucentClip(int x, int y, int width, int height, int color, byte *src) +{ + byte *s=0,*d=0; + int xl=0,yl=0,xs=0,ys=0; + byte *range=0; + + cpubyte=RENDER; + xl=width; + yl=height; + xs=ys=0; + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (xcx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (x>16)*sw); + d = screen+(y*sx)+x; + range=translucency_table+(color<<8); + yerr = yerr_start & 0xffff; + for (y=0; y>16)]) + d[x]=range[d[x]]; + xerr+=xadj; + } + d+=sx; + yerr += yadj; + src += (yerr>>16)*sw; + yerr &= 0xffff; + } + cpubyte=ETC; +} + +// aen +void TintClip(int x, int y, int width, int height, int color, byte *src) +{ + byte *s=0,*d=0; + int xl=0,yl=0,xs=0,ys=0; + byte *range=0; + byte c=0; + + cpubyte=RENDER; + xl=width; + yl=height; + xs=ys=0; + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (xcx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (x>16)*sw); + d = screen+(y*sx)+x; + range=translucency_table+(color<<8); + yerr = yerr_start & 0xffff; + for (y=0; y>16)]; + if (c) + d[x]=range[c]; + xerr+=xadj; + } + d+=sx; + yerr += yadj; + src += (yerr>>16)*sw; + yerr &= 0xffff; + } + cpubyte=ETC; +} + +void CopyTile(int x, int y, byte *src) +{ + CopySpriteClip(x,y,16,16,src); +} + +void TCopyTile(int x, int y, byte *src, byte *matte) +{ + matte=matte; + TCopySpriteClip(x,y,16,16,src); +} + +void CopyTileLucent(int x, int y, byte *src) +{ + CopySpriteLucentClip(x,y,16,16,src); +} + +void TCopyTileLucent(int x, int y, byte *src) +{ + TCopySpriteLucentClip(x,y,16,16,src); +} + +void CopyTileClip(int x, int y, byte *src) +{ + CopySpriteClip(x,y,16,16,src); +} + +void TCopyTileClip(int x, int y, byte *src, byte *matte) +{ + matte=matte; + TCopySpriteClip(x,y,16,16,src); +} + +void CopyTileLucentClip(int x, int y, byte *src) +{ + CopySpriteLucentClip(x,y,16,16,src); +} + +void TCopyTileLucentClip(int x, int y, byte *src) +{ + TCopySpriteLucentClip(x,y,16,16,src); +} + +// aen +void MapLine(int x, int y, int yofs, word *map) +{ + byte *d; + int tilesx,startx; + int counter; + int span, s; + + cpubyte=RENDER; + + // y clipping + if (y<0 || y>=tsy) return; + // x clipping + startx=0; + if (x<0) { startx=-x; x=0; } + + d=screen+(y*sx)+x; + tilesx=(tsx/16); + + // do clipped left tile + counter=0; + s=tileidx[*map]; + memcpy(d, vsp+((s16) span=16; + s=tileidx[*map]; + memcpy(d, vsp+((s=tsy) return; + // x clipping + startx=0; + if (x<0) { startx=-x; x=0; } + + d=screen+(y*sx)+x; + tilesx=(tsx/16); + + // do clipped left tile + counter=0; + s=vsp+(256*tileidx[*map])+(16*yofs)+startx; + for (x=0; x<16-startx; x++) + { + c=s[x]; + if (c) + d[x]=c; + } + d+=16-startx; + counter+=16-startx; + map++; + // do midsection of line + for (y=1; y16) span=16; + s=vsp+(256*tileidx[*map])+(16*yofs); + for (x=0; xcx2 || y>cy2) return; + screen[(y*sx)+x]=color; +} + +void SetPixelLucentClip(int x, int y, int color) +{ + byte *d; + + if (xcx2 || y>cy2) return; + d=screen+(y*sx)+x; + *d=translucency_table[*d|(color<<8)]; +} + +int GetPixel(int x, int y) +{ + return screen[(y*sx)+x]; +} + +int GetPixelClip(int x, int y) +{ + if (xcx2 || y>cy2) return 0; + return screen[(y*sx)+x]; +} + +void ColorField(int x, int y, char c) +{ + int i; + + cpubyte=RENDER; + i=0; + do + { + SetPixelClip(x+0, y+i, 0); + SetPixelClip(x+2, y+i, 0); + SetPixelClip(x+4, y+i, 0); + SetPixelClip(x+6, y+i, 0); + SetPixelClip(x+8, y+i, 0); + SetPixelClip(x+10, y+i, 0); + SetPixelClip(x+12, y+i, 0); + SetPixelClip(x+14, y+i, 0); + i++; + + SetPixelClip(x+0 +1, y+i, 0); + SetPixelClip(x+2 +1, y+i, 0); + SetPixelClip(x+4 +1, y+i, 0); + SetPixelClip(x+6 +1, y+i, 0); + SetPixelClip(x+8 +1, y+i, 0); + SetPixelClip(x+10 +1, y+i, 0); + SetPixelClip(x+12 +1, y+i, 0); + SetPixelClip(x+14 +1, y+i, 0); + i++; + } while (i<16); + cpubyte=ETC; +} + +void HLine(int x, int y, int x2, int color) +{ + cpubyte=RENDER; + if (x2cx2 || y>cy2 || x+width cx2) width=cx2-x+1; + if (xcx2 || y>cy2 || x+width cx2) width=cx2-x+1; + if (xcx2 || y>cy2 || x cy2) height=cy2-y+1; + if (ycx2 || y>cy2 || x cy2) height=cy2-y+1; + if (yx2) + { + SWAP(x1,x2); + SWAP(y1,y2); + } + + if (y1>y2) + { + SWAP(x1,x2); + SWAP(y1,y2); + } + // assume y1<=y2 from above swap operation + yi=y2; yc=y1; + + dcx=x1; dcy=y1; + xc=(x2-x1); yc=(y2-y1); + if (xc<0) xi=-1; else xi=1; + if (yc<0) yi=-1; else yi=1; + n=abs(xc); m=abs(yc); + ycyi=abs(2*yc*xi); + er=0; + + if (n>m) + { + xcxi=abs(2*xc*xi); + for (i=0;i<=n;i++) + { + screen[(dcy*sx)+dcx]=color; + if (er>0) + { dcy+=yi; + er-=xcxi; + } + er+=ycyi; + dcx+=xi; + } + } + else + { + xcyi=abs(2*xc*yi); + for (i=0;i<=m;i++) + { + screen[(dcy*sx)+dcx]=color; + if (er>0) + { dcx+=xi; + er-=ycyi; + } + er+=xcyi; + dcy+=yi; + } + } + cpubyte=ETC; +} + +// grabbed/modded from Abuse source +void LineClip(int x1, int y1, int x2, int y2, int color) +{ + short i,xc,yc,er,n,m,xi,yi,xcxi,ycyi,xcyi; + unsigned dcy,dcx; + + cpubyte=RENDER; + // check to see if the line is completly clipped off + if ((x1cx2 && x2>cx2) + || (y1cy2 && y2>cy2)) + { + cpubyte=ETC; + return; + } + + if (x1>x2) + { + SWAP(x1,x2); + SWAP(y1,y2); + } + + // clip the left side + if (x1cx2) + { int myy=(y2-y1); + int mxx=(x2-x1),b; + if (!mxx) + { + cpubyte=ETC; + return; + } + if (myy) + { + b=y1-(y2-y1)*x1/mxx; + y2=myy*cx2/mxx+b; + x2=cx2; + } + else x2=cx2; + } + + if (y1>y2) + { + SWAP(x1,x2); + SWAP(y1,y2); + } + + // clip the bottom + if (y2>cy2) + { int mxx=(x2-x1); + int myy=(y2-y1),b; + if (!myy) + { + cpubyte=ETC; + return; + } + if (mxx) + { + b=y1-(y2-y1)*x1/mxx; + x2=(cy2-b)*mxx/myy; + y2=cy2; + } + else y2=cy2; + } + + // clip the top + if (y1cx2 || x2>cx2 || y1cy2 || y2>cy2) + { + cpubyte=ETC; + return; + } + + if (x1>x2) + { xc=x2; xi=x1; } + else { xi=x2; xc=x1; } + + // assume y1<=y2 from above swap operation + yi=y2; yc=y1; + + dcx=x1; dcy=y1; + xc=(x2-x1); yc=(y2-y1); + if (xc<0) xi=-1; else xi=1; + if (yc<0) yi=-1; else yi=1; + n=abs(xc); m=abs(yc); + ycyi=abs(2*yc*xi); + er=0; + + if (n>m) + { + xcxi=abs(2*xc*xi); + for (i=0;i<=n;i++) + { + screen[(dcy*sx)+dcx]=color; + if (er>0) + { dcy+=yi; + er-=xcxi; + } + er+=ycyi; + dcx+=xi; + } + } + else + { + xcyi=abs(2*xc*yi); + for (i=0;i<=m;i++) + { + screen[(dcy*sx)+dcx]=color; + if (er>0) + { dcx+=xi; + er-=ycyi; + } + er+=xcyi; + dcy+=yi; + } + } + cpubyte=ETC; + return; +} + +void LineLucent(int x1, int y1, int x2, int y2, int color) +{ + short i,xc,yc,er,n,m,xi,yi,xcxi,ycyi,xcyi; + unsigned dcy,dcx; + byte *d; + int c; + + cpubyte=RENDER; + if (x1>x2) + { + SWAP(x1,x2); + SWAP(y1,y2); + } + if (y1>y2) + { + SWAP(x1,x2); + SWAP(y1,y2); + } + + // assume y1<=y2 from above swap operation + yi=y2; yc=y1; + dcx=x1; dcy=y1; + xc=(x2-x1); yc=(y2-y1); + if (xc<0) xi=-1; else xi=1; + if (yc<0) yi=-1; else yi=1; + n=abs(xc); m=abs(yc); + ycyi=abs(2*yc*xi); + er=0; + + c=color<<8; // for translucency + if (n>m) + { + xcxi=abs(2*xc*xi); + for (i=0;i<=n;i++) + { + d=screen+(dcy*sx)+dcx; + *d=translucency_table[c|*d]; + //screen[(dcy*sx)+dcx]=color; + if (er>0) + { dcy+=yi; + er-=xcxi; + } + er+=ycyi; + dcx+=xi; + } + } + else + { + xcyi=abs(2*xc*yi); + for (i=0;i<=m;i++) + { + d=screen+(dcy*sx)+dcx; + *d=translucency_table[c|*d]; + //screen[(dcy*sx)+dcx]=color; + if (er>0) + { dcx+=xi; + er-=ycyi; + } + er+=xcyi; + dcy+=yi; + } + } + cpubyte=ETC; +} + +void LineLucentClip(int x1, int y1, int x2, int y2, int color) +{ + short i,xc,yc,er,n,m,xi,yi,xcxi,ycyi,xcyi; + unsigned dcy,dcx; + byte *d; + int c; + + cpubyte=RENDER; + // check to see if the line is completly clipped off + if ((x1cx2 && x2>cx2) + || (y1cy2 && y2>cy2)) + { + cpubyte=ETC; + return; + } + + if (x1>x2) + { + SWAP(x1,x2); + SWAP(y1,y2); + } + + // clip the left side + if (x1cx2) + { int myy=(y2-y1); + int mxx=(x2-x1),b; + if (!mxx) + { + cpubyte=ETC; + return; + } + if (myy) + { + b=y1-(y2-y1)*x1/mxx; + y2=myy*cx2/mxx+b; + x2=cx2; + } + else x2=cx2; + } + + if (y1>y2) + { + SWAP(x1,x2); + SWAP(y1,y2); + } + + // clip the bottom + if (y2>cy2) + { int mxx=(x2-x1); + int myy=(y2-y1),b; + if (!myy) + { + cpubyte=ETC; + return; + } + if (mxx) + { + b=y1-(y2-y1)*x1/mxx; + x2=(cy2-b)*mxx/myy; + y2=cy2; + } + else y2=cy2; + } + + // clip the top + if (y1cx2 || x2>cx2 || y1cy2 || y2>cy2) + { + cpubyte=ETC; + return; + } + + if (x1>x2) + { xc=x2; xi=x1; } + else { xi=x2; xc=x1; } + + // assume y1<=y2 from above swap operation + yi=y2; yc=y1; + + dcx=x1; dcy=y1; + xc=(x2-x1); yc=(y2-y1); + if (xc<0) xi=-1; else xi=1; + if (yc<0) yi=-1; else yi=1; + n=abs(xc); m=abs(yc); + ycyi=abs(2*yc*xi); + er=0; + + c=color<<8; // for translucency + if (n>m) + { + xcxi=abs(2*xc*xi); + for (i=0;i<=n;i++) + { + d=screen+(dcy*sx)+dcx; + *d=translucency_table[c|*d]; + //screen[(dcy*sx)+dcx]=color; + if (er>0) + { dcy+=yi; + er-=xcxi; + } + er+=ycyi; + dcx+=xi; + } + } + else + { + xcyi=abs(2*xc*yi); + for (i=0;i<=m;i++) + { + d=screen+(dcy*sx)+dcx; + *d=translucency_table[c|*d]; + //screen[(dcy*sx)+dcx]=color; + if (er>0) + { dcx+=xi; + er-=ycyi; + } + er+=xcyi; + dcy+=yi; + } + } + cpubyte=ETC; +} + +// All the Circle* routines were grabbed/modded from Allegro source + +void Circle(int x, int y, int radius, int color) +{ + int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + do + { + SetPixel(x+cx,y+cy,color); + if (cx) SetPixel(x-cx,y+cy,color); + if (cy) SetPixel(x+cx,y-cy,color); + if ((cx) && (cy)) SetPixel(x-cx,y-cy,color); + + if (cx != cy) + { + SetPixel(x+cy,y+cx,color); + if (cx) SetPixel(x+cy,y-cx,color); + if (cy) SetPixel(x-cy,y+cx,color); + if (cx && cy) SetPixel(x-cy,y-cx,color); + } + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + cx++; + } while (cx <= cy); + cpubyte=ETC; +} + +void CircleClip(int x, int y, int radius, int color) +{ + int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + do { + SetPixelClip(x+cx,y+cy,color); + if (cx) SetPixelClip(x-cx,y+cy,color); + if (cy) SetPixelClip(x+cx,y-cy,color); + if ((cx) && (cy)) SetPixelClip(x-cx,y-cy,color); + + if (cx != cy) + { + SetPixelClip(x+cy,y+cx,color); + if (cx) SetPixelClip(x+cy,y-cx,color); + if (cy) SetPixelClip(x-cy,y+cx,color); + if (cx && cy) SetPixelClip(x-cy,y-cx,color); + } + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + cx++; + } while (cx <= cy); + cpubyte=ETC; +} + +void CircleLucent(int x, int y, int radius, int color) +{ + int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + + do + { + SetPixelLucent(x+cx,y+cy,color); + if (cx) SetPixelLucent(x-cx,y+cy,color); + if (cy) SetPixelLucent(x+cx,y-cy,color); + if ((cx) && (cy)) SetPixelLucent(x-cx,y-cy,color); + + if (cx != cy) + { + SetPixelLucent(x+cy,y+cx,color); + if (cx) SetPixelLucent(x+cy,y-cx,color); + if (cy) SetPixelLucent(x-cy,y+cx,color); + if (cx && cy) SetPixelLucent(x-cy,y-cx,color); + } + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + cx++; + } while (cx <= cy); + cpubyte=ETC; +} + +void CircleLucentClip(int x, int y, int radius, int color) +{ + int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + do + { + SetPixelLucentClip(x+cx,y+cy,color); + if (cx) SetPixelLucentClip(x-cx,y+cy,color); + if (cy) SetPixelLucentClip(x+cx,y-cy,color); + if ((cx) && (cy)) SetPixelLucentClip(x-cx,y-cy,color); + + if (cx != cy) + { + SetPixelLucentClip(x+cy,y+cx,color); + if (cx) SetPixelLucentClip(x+cy,y-cx,color); + if (cy) SetPixelLucentClip(x-cy,y+cx,color); + if (cx && cy) SetPixelLucentClip(x-cy,y-cx,color); + } + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + cx++; + } while (cx <= cy); + cpubyte=ETC; +} + +void CircleFill(int x, int y, int radius, int color) +{ + int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + + do + { + HLine(x-cy,y-cx,x+cy,color); + if (cx) HLine(x-cy,y+cx,x+cy,color); + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + if (cx != cy) + { + HLine(x-cx,y-cy,x+cx,color); + if (cy) HLine(x-cx,y+cy,x+cx,color); + } + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + cx++; + } while (cx <= cy); + cpubyte=ETC; +} + +void CircleFillClip(int x, int y, int radius, int color) +{ + int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + do + { + HLineClip(x-cy,y-cx,x+cy,color); + if (cx) HLineClip(x-cy,y+cx,x+cy,color); + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + if (cx != cy) + { + HLineClip(x-cx,y-cy,x+cx,color); + if (cy) HLineClip(x-cx,y+cy,x+cx,color); + } + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + cx++; + } while (cx <= cy); + cpubyte=ETC; +} + +void CircleFillLucent(int x, int y, int radius, int color) +{ + int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + do + { + HLineLucent(x-cy,y-cx,x+cy,color); + if (cx) HLineLucent(x-cy,y+cx,x+cy,color); + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + if (cx != cy) + { + HLineLucent(x-cx,y-cy,x+cx,color); + if (cy) HLineLucent(x-cx,y+cy,x+cx,color); + } + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + cx++; + } while (cx <= cy); + cpubyte=ETC; +} + +void CircleFillLucentClip(int x, int y, int radius, int color) +{ + int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + do + { + HLineLucentClip(x-cy,y-cx,x+cy,color); + if (cx) HLineLucentClip(x-cy,y+cx,x+cy,color); + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + if (cx != cy) + { + HLineLucentClip(x-cx,y-cy,x+cx,color); + if (cy) HLineLucentClip(x-cx,y+cy,x+cx,color); + } + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + cx++; + } while (cx <= cy); + cpubyte=ETC; +} + +void Rect(int x, int y, int x2, int y2, int color) +{ + HLine(x,y,x2,color); + HLine(x,y2,x2,color); + VLine(x,y+1,y2-1,color); + VLine(x2,y+1,y2-1,color); +} + +void RectClip(int x, int y, int x2, int y2, int color) +{ + HLineClip(x,y,x2,color); + HLineClip(x,y2,x2,color); + VLineClip(x,y+1,y2-1,color); + VLineClip(x2,y+1,y2-1,color); +} + +void RectLucent(int x, int y, int x2, int y2, int color) +{ + HLineLucent(x,y,x2,color); + HLineLucent(x,y2,x2,color); + VLineLucent(x,y+1,y2-1,color); + VLineLucent(x2,y+1,y2-1,color); +} + +void RectLucentClip(int x, int y, int x2, int y2, int color) +{ + HLineLucentClip(x,y,x2,color); + HLineLucentClip(x,y2,x2,color); + VLineLucentClip(x,y+1,y2-1,color); + VLineLucentClip(x2,y+1,y2-1,color); +} + +void RectFill(int x, int y, int x2, int y2, int color) +{ + cpubyte=RENDER; + if (y2=clipw) + spanx=clipw-curx; + source=src+(y*wide)+x; + dest=screen+(cy1*sx)+cx1+curx; + cury=0; + + do + { + spany=high-(cury?0:y); + if (cury+spany>=cliph) + spany=cliph-cury; + + for (i=0; i=clipw) + spanx=clipw-curx; + source=src+(y*wide)+x; + dest=screen+(cy1*sx)+cx1+curx; + cury=0; + + do + { + spany=high-(cury?0:y); + if (cury+spany>=cliph) + spany=cliph-cury; + for (i=0; i=clipw) + spanx=clipw-curx; + source=src+(y*wide)+x; + dest=screen+(cy1*sx)+cx1+curx; + cury=0; + + do + { + spany=high-(cury?0:y); + if (cury+spany>=cliph) + spany=cliph-cury; + for (i=0; i=clipw) + spanx=clipw-curx; + source=src+(y*wide)+x; + dest=screen+(cy1*sx)+cx1+curx; + cury=0; + + do + { + spany=high-(cury?0:y); + if (cury+spany>=cliph) + spany=cliph-cury; + for (i=0; i>1; + T_HEIGHT_CENTER=height>>1; + W_WIDTH=((float)width/scale*sin(ft) + (float)height/scale*cos(ft)); + W_HEIGHT=W_WIDTH; + W_HEIGHT_CENTER=W_HEIGHT>>1; + W_WIDTH_CENTER=W_HEIGHT_CENTER; //W_WIDTH/2; + + sinas=sin(-angle)*65536*scale; + cosas=cos(-angle)*65536*scale; + + xc=T_WIDTH_CENTER*65536 - (W_HEIGHT_CENTER*(cosas+sinas)); + yc=T_HEIGHT_CENTER*65536 - (W_WIDTH_CENTER*(cosas-sinas)); + posx-=W_WIDTH_CENTER; + posy-=W_HEIGHT_CENTER; + + // clipping + if (W_WIDTH<2 || W_HEIGHT<2) return; + xl=W_WIDTH; + yl=W_HEIGHT; + xs=ys=0; + if (posx>cx2 || posy>cy2 || posx+xl cx2) xl=cx2-posx+1; + if (posy+yl > cy2) yl=cy2-posy+1; + if (posx>16); + tempy=(srcy>>16); + + if (tempx>=0 && tempx=0 && tempy y3) + { + swaptemp=x1; x1=x3; x3=swaptemp; + swaptemp=y1; y1=y3; y3=swaptemp; + } + if (y2 > y3) + { + swaptemp=x2; x2=x3; x3=swaptemp; + swaptemp=y2; y2=y3; y3=swaptemp; + } + if (y1 > y2) + { + swaptemp=x1; x1=x2; x2=swaptemp; + swaptemp=y1; y1=y2; y2=swaptemp; + } + + xstep2=((x3-x1) << 16) / (y3-y1); + xval2=x1 << 16; + + if (y1 != y2) + { + xstep = ((x2-x1) << 16) / (y2-y1); + xval = x1 << 16; + for (yon=y1;yon < y2; yon++) + { + if ((yon > -1) && (yon < 200)) + { + HLineClip(xval>>16,yon,xval2>>16,color); + } + xval+=xstep; + xval2+=xstep2; + } + } + if (y2 != y3) + { + xstep = ((x3-x2) << 16) / (y3-y2); + xval = x2 << 16; + for (yon=y2;yon < y3; yon++) + { + if ((yon > -1) && (yon < 200)) + { + HLineClip(xval>>16,yon,xval2>>16,color); + } + xval+=xstep; + xval2+=xstep2; + } + } +} + +char *image; +int texw,texh; // those damn bastards want EVERYTHING! + +void tmaphline(int x1, int x2, int y, int tx1, int tx2, int ty1, int ty2) +{ + int i; + int txstep,txval; + int tystep,tyval; + + if (x1 != x2) + { + if (x2 < x1) + { + i=x1; x1=x2; x2=i; + i=tx1; tx1=tx2; tx2=i; + i=ty1; ty1=ty2; ty2=i; + } + if ((x1 > sx) || (x2 < 0)) return; + txstep=((tx2-tx1)<<16)/(x2-x1); + tystep=((ty2-ty1)<<16)/(x2-x1); + txval=tx1<<16; + tyval=ty1<<16; + + for (i=x1;i>16)*texw+(txval>>16)]; + txval+=txstep; + tyval+=tystep; + } + } +} + +void TMapPoly(int x1, int y1, int x2, int y2, int x3, int y3, + int tx1, int ty1, int tx2, int ty2, int tx3, int ty3, + int tw, int th, char *img) +{ + int xstep,xstep2; + int xval,xval2; + int txstep,txstep2; + int tystep,tystep2; + int txval,txval2; + int tyval,tyval2; + int yon; + int swaptemp; + + image=img; texw=tw; texh=th; + if (y1 > y3) + { + swaptemp=x1; x1=x3; x3=swaptemp; + swaptemp=y1; y1=y3; y3=swaptemp; + swaptemp=tx1; tx1=tx3; tx3=swaptemp; + swaptemp=ty1; ty1=ty3; ty3=swaptemp; + } + if (y2 > y3) + { + swaptemp=x2; x2=x3; x3=swaptemp; + swaptemp=y2; y2=y3; y3=swaptemp; + swaptemp=tx2; tx2=tx3; tx3=swaptemp; + swaptemp=ty2; ty2=ty3; ty3=swaptemp; + } + if (y1 > y2) + { + swaptemp=x1; x1=x2; x2=swaptemp; + swaptemp=y1; y1=y2; y2=swaptemp; + swaptemp=tx1; tx1=tx2; tx2=swaptemp; + swaptemp=ty1; ty1=ty2; ty2=swaptemp; + } + xstep2=((x3-x1) << 16) / (y3-y1); + xval2=x1 << 16; + txstep2=((tx3-tx1) << 16) / (y3-y1); + txval2=tx1 << 16; + tystep2=((ty3-ty1) << 16) / (y3-y1); + tyval2=ty1 << 16; + + if (y1 != y2) + { + xstep = ((x2-x1) << 16) / (y2-y1); + xval = x1 << 16; + txstep = ((tx2-tx1) << 16) / (y2-y1); + txval = tx1 << 16; + tystep = ((ty2-ty1) << 16) / (y2-y1); + tyval = ty1 << 16; + + for (yon=y1;yon < y2; yon++) + { + if ((yon > -1) && (yon < 200)) + { + tmaphline(xval>>16,xval2>>16,yon,txval>>16,txval2>>16, + tyval>>16,tyval2>>16); + } + xval+=xstep; + xval2+=xstep2; + txval+=txstep; + txval2+=txstep2; + tyval+=tystep; + tyval2+=tystep2; + } + } + if (y2 != y3) + { + xstep = ((x3-x2) << 16) / (y3-y2); + xval = x2 << 16; + txstep = ((tx3-tx2) << 16) / (y3-y2); + txval = tx2 << 16; + tystep = ((ty3-ty2) << 16) / (y3-y2); + tyval = ty2 << 16; + + for (yon=y2;yon < y3; yon++) + { + if ((yon > -1) && (yon < 200)) + { + tmaphline(xval>>16,xval2>>16,yon,txval>>16,txval2>>16, + tyval>>16,tyval2>>16); + } + xval+=xstep; + xval2+=xstep2; + txval+=txstep; + txval2+=txstep2; + tyval+=tystep; + tyval2+=tystep2; + } + } +} + +/* +// ============================================================================ +// = aen's ripple-blitter = +// ============================================================================ + +int thresh; +int dispx[64],dispy[64]; + +void InitDisplaceStuff(float xmag, float ymag) +{ + int x, y, *d; + + xmag=4.0,d=dispx; + for (y=0; y<32; y++) + *d++=sin(y * (360.0/32) * (3.14/180))*xmag; + + ymag=3.9,d=dispy; + for (x=0; x<32; x++) + *d++=cos(x * (360.0/32) * (3.14/180))*ymag; + + thresh=14; +} + +void CopyTileDisplace(int x, int y, unsigned char *spr) +{ + int i, j; + int xx, yy, xt, yt; + int xin, yin; + byte *dest; + + xin = ((x+xwin)&31)<16 ? 0 : 16; + yin = ((y+ywin)&31)<16 ? 0 : 16; + dest=screen+(y*sx)+x; + + // in the yy and xx calcs, +y and +x keep the start position correct + // within the 32 element lookup tables (ie. so they flow continuously + // across the 16x16 images). + + for (j=0; j<16; j++) + { + yy = (j+yin+thresh) & 31; + for (i=0; i<16; i++) + { + xx = (i+xin+thresh) & 31; + xt = (i+dispx[yy]) & 15; + yt = (j+dispy[xx]) & 15; + + dest[i]=spr[(yt*16)+xt]; + } + dest+=sx; + } +} + +void CopyTileDisplaceClip(int x, int y, unsigned char *spr) +{ + byte *s,*d; + int xl,yl,xs,ys; + int i, j; + int xx, yy, xt, yt; + int xin, yin; + + cpubyte=RENDER; + xl=16; + yl=16; + xs=ys=0; + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (x // va_* + +#include "verge.h" + +// ================================= Data ==================================== + +// declared in VDRIVER.C +extern byte* translucency_table; + +char *strbuf=0; // Universal temporary string buffer. :) +char joyflag=0; +int vidxres=0,vidyres=0; // Joystick on/off | Video mode to use +char logoutput=0; // Verbose debugging startup mode +char nocdaudio=0; // do not use CD audio +char startmap[80]; // startup map +FILE *logf=0; // logfile file handle + +// ================================= Code ==================================== + +void InitializeDefaults() +{ + kb1=28; kb2=56; kb3=1; kb4=57; // default keyboard controls + jb1=1; jb2=2; jb3=3; jb4=4; // default joystick controls + joyflag=0; // joystick defaults to disabled + vidxres=320; vidyres=200; + logoutput=0; // Don't be annoyingly verbose + strbuf=(char *) valloc(2000, "strbuf", OID_TEMP); + memcpy(startmap,"test.map\0",9); + + md_mixfreq=44100; + md_dmabufsize=2000; + md_mode=DMODE_16BITS|DMODE_STEREO; + md_device=0; +} + +static VFILE *user_cfg_file=0; +static char parse_str[256]; + +static char *parse_cfg_token() +{ + vscanf(user_cfg_file, "%s", parse_str); + return parse_str; +} + +// compares string against parse_str (grabbed by parse_cfg_token) +// 0=mismatch, 1=match +static int parse_match(char *str) +{ + return !strcmp(parse_str, str); +} + +void ParseStartupFiles() +{ + user_cfg_file = vopen("user.cfg"); + if (!user_cfg_file) + { + printf("Could not open user.cfg. \n"); + exit(-1); + } + + while (1) + { + parse_cfg_token(); + + // mounts a pack file; up to 3? (perhaps gaurd against more?) + if (parse_match("mount")) + { MountVFile(parse_cfg_token()); continue; } + // set video resolution + else if (parse_match("vidmode")) + { + vidxres = atoi(parse_cfg_token()); + vidyres = atoi(parse_cfg_token()); + + // check validity + if (vidxres != 256 && vidxres != 320 + && vidxres != 360 && vidxres != 640) + { + Log("user.cfg: invalid resolution width %i passed to vidmode", + vidxres); + } + if (vidyres != 200 && vidyres != 240 + && vidyres != 256 && vidyres != 480) + { + Log("user.cfg: invalid resolution height %i passed to vidmode", + vidyres); + } + + continue; + } + // log to VERGE.LOG + else if (parse_match("log")) + { + logoutput=1; + continue; + } + // disable CD playing + else if (parse_match("nocdaudio")) + { + nocdaudio=1; + continue; + } + // map VERGE.EXE will run first when executed + else if (parse_match("startmap")) + { + strcpy(startmap, parse_cfg_token()); + continue; + } + // 0=auto detect, 1=???, 2=???, 3=nosound + else if (parse_match("sound_device")) + { + md_device = atoi(parse_cfg_token()); + continue; + } + // sound lib setting + else if (parse_match("mixrate")) + { + md_mixfreq = atoi(parse_cfg_token()); + continue; + } + // sound lib setting + else if (parse_match("dmabufsize")) + { + md_dmabufsize = atoi(parse_cfg_token()); + continue; + } + // sound lib setting + else if (parse_match("force8bit")) + { + continue; + } + // sound lib setting + else if (parse_match("forcemono")) + { + continue; + } + + // unknown command, assume end + break; + } + + // done parsing config + vclose(user_cfg_file); +} + +void ParseAutoCFG() +{ VFILE *f; + int i; + + if (!(f=vopen("auto.cfg"))) return; + + while (1) + { + vgets((char *) cmd, 40, f); + for (i=0; i<(signed) strlen((char *) cmd); i++) + if (cmd[i]==10 || cmd[i]==13) cmd[i]=0; + if (strlen((char*) cmd)<2) break; + ProcessCommand(); + } + vclose(f); +} + +void InitLog() +{ + if (logoutput) + { + remove("verge.log"); + } +} + +void Log(char *message, ...) +{ + char tempbuf[256]; + va_list lst; + + if (!logoutput) return; + + va_start(lst, message); + vsprintf(tempbuf, message, lst); + va_end(lst); + + logf = fopen("verge.log", "aw"); + if (!logf) err("unable to log to verge.log"); + + fprintf(logf, "%s \n", tempbuf); + fflush(logf); + + fclose(logf); +} + +// used in conjunction with LogDone() +void Logp(char *message, ...) +{ + char tempbuf[256]; + va_list lst; + + if (!logoutput) return; + + va_start(lst, message); + vsprintf(tempbuf, message, lst); + va_end(lst); + + logf = fopen("verge.log", "aw"); + if (!logf) err("unable to log to verge.log"); + + fprintf(logf, "%s", tempbuf); + fflush(logf); + + fclose(logf); +} + +void LogDone() +{ + if (!logoutput) return; + + logf = fopen("verge.log", "aw"); + if (!logf) err("unable to log to verge.log"); + + fprintf(logf, "... OK \n"); + fflush(logf); + + fclose(logf); +} + +void InitSystems() +{ + InitLog(); + Log("V2 startup. Logfile initialized."); + Logp("Sys: Initializing keyboard handler."); + InitKeyboard(); + LogDone(); +#ifdef __DJGPP__ + keyboard_chain(0); +#endif + Logp("Sys: Initializing timer. Set 100hz."); + InitTimer(); + LogDone(); + + /* + Logp("Sys: Initializing CD Audio."); + CD_Init(); + LogDone(); + */ + + Logp("Sys: Initializing music system."); + InitMusicSystem(); + LogDone(); + + InitVideo(vidxres, vidyres); +} + +void LoadTransTable() +{ + FILE *fp=0; + + if (translucency_table) + { free(translucency_table); translucency_table=0; } + translucency_table=(byte *)valloc(65536, "translucency_table", OID_MISC); + + fp = fopen("trans.tbl", "rb"); + if (!fp) err("Could not open trans.tbl."); + + fread(translucency_table, 65536, 1, fp); + + fclose(fp); +} + +void vmain(int argc, char *argv[]) +{ + char temp[256]; + + InitializeDefaults(); + ParseStartupFiles(); + InitSystems(); + if (argc==2) + { + memcpy(startmap, argv[1], strlen(argv[1])); + } + + InitConsole(); + sprintf(temp,"VERGE System Version %s", VERSION); + Con_Printf(temp); + Con_Printf("Copyright (C)1998 vecna"); + + ParseAutoCFG(); + LoadTransTable(); + LoadSystemVC(); + LoadMAP(startmap); + + while (1) + { + while (timer_count!=0) + { + timer_count--; + GameTick(); + } + Render(); + + ShowPage(); + if (kill) + { + FreeVSP(); + FreeMAP(); + FreeCHRList(); + vcsp=vcstack; + kill=0; + LoadMAP(startmap); + } + } +} diff --git a/16/v2/source/verge/ENGINE/VERGE.H b/16/v2/source/verge/ENGINE/VERGE.H new file mode 100644 index 00000000..3d782c32 --- /dev/null +++ b/16/v2/source/verge/ENGINE/VERGE.H @@ -0,0 +1,55 @@ +/* +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. +*/ + +// Wee. A generic #include. I feel so warm and fuzzy inside. :) + +#define VERSION "2.01b" + +#include + +#include +#include +#include + +#define byte unsigned char +#define word unsigned short int +#define quad unsigned int + +#define TRUE 1 +#define FALSE 0 + +#include "inter.h" +#include "a_memory.h" +#include "vfile.h" +#include "conlib.h" +#include "console.h" +#include "controls.h" +#include "engine.h" +#include "entity.h" +#include "fli.h" +#include "font.h" +#include "image.h" +#include "keyboard.h" +#include "main.h" +#include "message.h" +#include "mikmod.h" +#include "render.h" +#include "sound.h" +#include "timer.h" +#include "vc.h" +#include "vdriver.h" + +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 new file mode 100644 index 00000000..a97fbe6a --- /dev/null +++ b/16/v2/source/verge/ENGINE/VESA.C @@ -0,0 +1,776 @@ +/* +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. +*/ + +#include +#include +#include + +#include +#include +#include "verge.h" + +// ================================= Data ==================================== + +byte *vesascreen, *vesascreenx; // virscr | realscr + +// ================================= Code ==================================== + +void VESASetMode(int mode) +{ + REGISTERS r; + SET_AX(r, mode); + INTERRUPT(0x10, r); +} + +int VESAShutdown(void) +{ + VESASetMode(0x3); + free(vesascreen); + return 0; +} + +void VESASetBank(int bank) +{ + REGISTERS r; + SET_AX(r, 0x4f05); + SET_BX(r, 0); + SET_DX(r, bank); + INTERRUPT(0x10, r); +} + +int VESAShowPage(void) +{ byte *s,*d; + int y,bytes,bank; + int span; + + RenderGUI(); + cpubyte=PFLIP; + + s=vesascreen+(16*tsx)+16; + d=vesascreenx; + + bank=0; + bytes=65536; + VESASetBank(bank++); + + for (y=sy; y; y--) + { + if (bytes >= sx) + { memcpy(d,s,sx); + bytes-=sx; + s+=sx; + d+=sx; + } + else + { memcpy(d,s,bytes); + s+=bytes; + span=sx-bytes; + + VESASetBank(bank++); + d=vesascreenx; + bytes=65536; + + memcpy(d,s,span); + bytes-=span; + s+=span; + d+=span; + } + s+=32; + } + + cpubyte=ETC; + return 0; +} + +int VESACopySprite(int x, int y, int width, int height, byte *src) +{ + cpubyte=RENDER; + + asm("movl %3, %%edx \n\t" + "movl %4, %%esi \n\t" +"csl0: \n\t" + "movl %1, %%eax \n\t" + "imul $672, %%eax \n\t" + "addl %0, %%eax \n\t" + "addl _vesascreen, %%eax \n\t" + "movl %%eax, %%edi \n\t" + "movl %2, %%ecx \n\t" + "shrl $2, %%ecx \n\t" + "repz \n\t" + "movsl \n\t" + "incl %1 \n\t" + "decl %%edx \n\t" + "jnz csl0 \n\t" + : + : "m" (x), "m" (y), "m" (width), "m" (height), "m" (src) + : "eax","edx","esi","edi","ecx","cc" ); + cpubyte=ETC; + return 0; +} + +int VESACCopySprite(int x,int y,int width,int height,byte *src) +{ + byte *s,*d; + int xl,yl,xs,ys; + int cx1=0, cy1=0, cx2=tsx-1, cy2=tsy-1; + + cpubyte=RENDER; + + xl=width; + yl=height; + xs=ys=0; + + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + + if (xcx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + + if (x0 && th>0) dys=tsx-xm; + else if (tw>0 && th<0) dys=(0-tsx)-xm; + else if (tw<0 && th>0) dys=tsx+xm; + else if (tw<0 && th<0) dys=(0-tsx)+xm; + + d = vesascreen+(y*tsx)+x; + for (i=0;i>16)]; + d+=xd; + sx+=xs; + } + d+=dys; + sy+=ys; + s+=(sy>>16)*w; + sy&=0xffff; + } + cpubyte=ETC; + return 0; +} + +int VESARenderMAPLine(int x, int y, int yofs, word *map) +{ + cpubyte=RENDER; + // ... + cpubyte=ETC; + return 0; +} + +int VESATRenderMAPLine(int x, int y, int yofs, word *map) +{ + cpubyte=RENDER; + // ... + cpubyte=ETC; + return 0; +} + +int VESAColorField(int x, int y, byte c) +{ + cpubyte=RENDER; + // ... + cpubyte=ETC; + return 0; +} + +int VESAClearScreen() +{ + cpubyte=RENDER; + memset(vesascreen+(672*16)+16,0,(672*480)); + cpubyte=ETC; + return 0; +} + +int VESAPutPixel(int x, int y, int color) +{ + cpubyte=RENDER; + + if (xcx2 || y>cy2) + { + cpubyte=ETC; + return 0; + } + + x+=16; + y+=16; + + vesascreen[(y*tsx)+x]=color; + + cpubyte=ETC; + return 0; +} + +int VESAGetPixel(int x, int y) +{ + cpubyte=RENDER; + + if (xcx2 || y>cy2) + { + cpubyte=ETC; + return 0; + } + + x+=16; + y+=16; + + cpubyte=ETC; + return vesascreen[(y*tsx)+x]; + return 0; +} + +int VESAHLine(int x, int y, int x2, int color) +{ + byte *d; + int width; + + cpubyte=RENDER; + + // swap? + if (x2cx2 || y>cy2 || x+width cx2) width=cx2-x+1; + if (xcx2 || y>cy2 || x cy2) height=cy2-y+1; + if (ycx2 && x2>cx2) + || (y1cy2 && y2>cy2)) + { + cpubyte=ETC; + return 0; + } + + if (x1>x2) + { + i=x1; x1=x2; x2=i; + i=y1; y1=y2; y2=i; + } + + // clip the left side + if (x1cx2) + { int myy=(y2-y1); + int mxx=(x2-x1),b; + if (!mxx) + { + cpubyte=ETC; + return 0; + } + if (myy) + { + b=y1-(y2-y1)*x1/mxx; + y2=myy*cx2/mxx+b; + x2=cx2; + } + else x2=cx2; + } + + if (y1>y2) + { + i=x1; x1=x2; x2=i; + i=y1; y1=y2; y2=i; + } + + // clip the bottom + if (y2>cy2) + { int mxx=(x2-x1); + int myy=(y2-y1),b; + if (!myy) + { + cpubyte=ETC; + return 0; + } + if (mxx) + { + b=y1-(y2-y1)*x1/mxx; + x2=(cy2-b)*mxx/myy; + y2=cy2; + } + else y2=cy2; + } + + // clip the top + if (y1cx2 || x2>cx2 || y1cy2 || y2>cy2) + { + cpubyte=ETC; + return 0; + } + + if (x1>x2) + { xc=x2; xi=x1; } + else { xi=x2; xc=x1; } + + x1+=16;y1+=16; // aen; adjust these here?? + x2+=16;y2+=16; + + // assume y1<=y2 from above swap operation + yi=y2; yc=y1; + + dcx=x1; dcy=y1; + xc=(x2-x1); yc=(y2-y1); + if (xc<0) xi=-1; else xi=1; + if (yc<0) yi=-1; else yi=1; + n=abs(xc); m=abs(yc); + ycyi=abs(2*yc*xi); + er=0; + + if (n>m) + { + xcxi=abs(2*xc*xi); + for (i=0;i<=n;i++) + { + vesascreen[(dcy*tsx)+dcx]=color; + if (er>0) + { dcy+=yi; + er-=xcxi; + } + er+=ycyi; + dcx+=xi; + } + } + else + { + xcyi=abs(2*xc*yi); + for (i=0;i<=m;i++) + { + vesascreen[(dcy*tsx)+dcx]=color; + if (er>0) + { dcx+=xi; + er-=ycyi; + } + er+=xcyi; + dcy+=yi; + } + } + + cpubyte=ETC; + return 0; +} + +int VESACircle(int x, int y, int radius, int color) +{ + int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + + do { + VESAPutPixel(x+cx,y+cy,color); + if (cx) VESAPutPixel(x-cx,y+cy,color); + if (cy) VESAPutPixel(x+cx,y-cy,color); + if ((cx) && (cy)) VESAPutPixel(x-cx,y-cy,color); + + if (cx != cy) + { + VESAPutPixel(x+cy,y+cx,color); + if (cx) VESAPutPixel(x+cy,y-cx,color); + if (cy) VESAPutPixel(x-cy,y+cx,color); + if (cx && cy) VESAPutPixel(x-cy,y-cx,color); + } + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + + cx++; + + } while (cx <= cy); + + cpubyte=ETC; + return 0; +} + +int VESACircleFill(int x, int y, int radius, int color) +{ + int cx=0; + int cy=radius; + int df=1-radius; + int d_e=3; + int d_se=-2*radius+5; + + cpubyte=RENDER; + + do { + VESAHLine(x-cy,y-cx,x+cy,color); + if (cx) VESAHLine(x-cy,y+cx,x+cy,color); + + if (df<0) + { + df+=d_e; + d_e+=2; + d_se+=2; + } + else + { + if (cx != cy) + { + VESAHLine(x-cx,y-cy,x+cx,color); + if (cy) VESAHLine(x-cx,y+cy,x+cx,color); + } + + df+=d_se; + d_e+=2; + d_se+=4; + cy--; + } + + cx++; + + } while (cx <= cy); + + cpubyte=ETC; + return 0; +} + +int VESARect(int x, int y, int x2, int y2, int color) +{ + VESAHLine(x,y,x2,color); + VESAHLine(x,y2,x2,color); + VESAVLine(x,y+1,y2-1,color); + VESAVLine(x2,y+1,y2-1,color); + return 0; +} + +int VESARectFill(int x, int y, int x2, int y2, int color) +{ + cpubyte=RENDER; + + if (y2=0; i--) + { + for (j=0; jfp=pack[i].vhandle; + tmp->s=1; + tmp->v=i; + tmp->i=j; + pack[i].files[j].curofs=0; + fseek(tmp->fp, pack[i].files[j].packofs, 0); + pack[i].curofs=pack[i].files[j].packofs; + return tmp; + } + + tmp->fp=fopen(fname,"rb"); + tmp->s=0; tmp->v=0; tmp->i=0; + return tmp; +} + +void vread(char *dest, int len, VFILE *f) +{ + // This is fairly simple.. Just make sure our filepointer is at the right + // place, then do a straight fread. + + if (f->s) + { + if (pack[f->v].curofs != (pack[f->v].files[f->i].packofs + pack[f->v].files[f->i].curofs)) + fseek(f->fp, pack[f->v].files[f->i].curofs+pack[f->v].files[f->i].packofs, 0); + pack[f->v].files[f->i].curofs+=len; + pack[f->v].curofs+=len; + } + fread(dest, 1, len, f->fp); +} + +void vclose(VFILE *f) +{ + if (!f) return; + if (!f->s) fclose(f->fp); + f->fp=0; + vfree(f); +} + +int filesize(VFILE *f) +{ + int oldpos, tmp; + + // Filesize for Vfiles is real simple. + if (f->s) return pack[f->v].files[f->i].size; + + // It's a bit more complex for external files. + oldpos=ftell(f->fp); + fseek(f->fp, 0, 2); + tmp=ftell(f->fp); + fseek(f->fp, oldpos, 0); + return tmp; +} + +int vtell(VFILE *f) +{ + if (!f->s) + { + return ftell(f->fp); + } + + return pack[f->v].files[f->i].curofs; +} + +void vseek(VFILE *f, int offset, int origin) +{ + if (!f->s) + { + fseek(f->fp, offset, origin); + return; + } + + switch(origin) + { + case 0: pack[f->v].files[f->i].curofs=offset; + fseek(f->fp, offset+pack[f->v].files[f->i].packofs, 0); + return; + case 1: pack[f->v].files[f->i].curofs+=offset; + fseek(f->fp, offset, 1); + return; + case 2: pack[f->v].files[f->i].curofs=pack[f->v].files[f->i].size-offset; + fseek(f->fp, pack[f->v].files[f->i].curofs+pack[f->v].files[f->i].packofs, 0); + return; + } +} + +void _vscanf(VFILE *f, char *format, char *dest) +{ + fscanf(f->fp, format, dest); + if (f->s) + pack[f->v].files[f->i].curofs=ftell(f->fp)-pack[f->v].files[f->i].packofs; +} + +char vgetc(VFILE *f) +{ char c=0; + + vread(&c, 1, f); + return c; +} + +word vgetw(VFILE *f) +{ word c=0; + + vread((char *) &c, 2, f); + return c; +} + +void vgets(char *str, int len, VFILE *f) +{ + if (f->s) + { + if (pack[f->v].curofs != (pack[f->v].files[f->i].packofs + pack[f->v].files[f->i].curofs)) + fseek(f->fp, pack[f->v].files[f->i].curofs+pack[f->v].files[f->i].packofs, 0); + pack[f->v].files[f->i].curofs+=len; + pack[f->v].curofs+=len; + } + fgets(str, len, f->fp); +} diff --git a/16/v2/source/verge/ENGINE/VFILE.H b/16/v2/source/verge/ENGINE/VFILE.H new file mode 100644 index 00000000..b6beb802 --- /dev/null +++ b/16/v2/source/verge/ENGINE/VFILE.H @@ -0,0 +1,65 @@ +/* +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. +*/ + +#ifndef VFILE_H +#define VFILE_H + +#define vscanf _vscanf + +typedef struct +{ + FILE *fp; // real file pointer. + byte s; // 0=real file 1=vfile; + byte v; // if vfile, which vfile index + byte i; // which file index in vfile is it? + byte p; // data alignment pad. :) +} VFILE; + +struct filestruct +{ + unsigned char fname[84]; // pathname thingo + int size; // size of the file + int packofs; // where the file can be found in PACK + int curofs; // current file offset. + char extractable; // irrelevant to runtime, but... + char override; // should we override? +}; + +struct mountstruct +{ + char mountname[80]; // name of VRG packfile. + FILE *vhandle; // Real file-handle of packfile. + struct filestruct *files; // File record array. + int numfiles; // number of files in pack. + int curofs; // Current filepointer. +}; + +extern struct mountstruct pack[3]; +extern char filesmounted; + +int Exist(char *fname); +VFILE *vopen(char *fname); +void MountVFile(char *fname); +void vread(void *dest, int len, VFILE *f); +void vclose(VFILE *f); +int filesize(VFILE *f); +int vtell(VFILE *f); +void vseek(VFILE *f, int offset, int origin); +void vscanf(VFILE *f, char *format, char *dest); +char vgetc(VFILE *f); +word vgetw(VFILE *f); +void vgets(char *str, int len, VFILE *f); +#endif diff --git a/16/v2/source/verge/MAPED/A_MEMORY.C b/16/v2/source/verge/MAPED/A_MEMORY.C new file mode 100644 index 00000000..c8f1598b6 --- /dev/null +++ b/16/v2/source/verge/MAPED/A_MEMORY.C @@ -0,0 +1,211 @@ +/* +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. +*/ + +#include +#include +#include + +void err(char *str, ...); +void Log(char *str, ...); + +// ***** +// TODO: Move the chunk list from an array to a linked list? +// Would eliminate hardcoded chunk limit, but would make +// general operation slower. Probably not The Right Thing, +// sides the chunk limit can be interesting sometimes. If +// it becomes problematic, consider a Binary Tree. +// ***** + +// ***************************** Data ***************************** + +#define MAXCHUNKS 200 +#define PARANOID 1 +#define PADFILLVALUE 254 +#define PADSIZE 256 + +void MemReport(void); + +#define errm MemReport(), err + +typedef struct +{ + void *pointer; + int size; + int owner; + char desc[20]; +} memblockType; + +memblockType chunks[MAXCHUNKS+1]; +int numchunks=0; + +// ***************************** Code ***************************** + +void *valloc(int amount, char *desc, int owner) +{ + if (numchunks == MAXCHUNKS) + err("Failed allocated %d bytes (%s), reason: Out of chunks.", + amount, desc); + +#ifdef PARANOID + CheckCorruption(); + chunks[numchunks].pointer = (void *) ((int) malloc(amount + (PADSIZE * 2)) + PADSIZE); + chunks[numchunks].size = amount; + memset((char *) chunks[numchunks].pointer - PADSIZE, PADFILLVALUE, PADSIZE); + memset((char *) chunks[numchunks].pointer + + chunks[numchunks].size, PADFILLVALUE, PADSIZE); +#else + chunks[numchunks].pointer = malloc(amount); + chunks[numchunks].size = amount; +#endif + chunks[numchunks].owner = owner; + strncpy(chunks[numchunks].desc, desc, 19); + memset(chunks[numchunks].pointer, 0, chunks[numchunks].size); + return chunks[numchunks++].pointer; +} + +void *qvalloc(int amount) +{ + void *ptr; + + // Quick and dirty memory allocation. Should be used ONLY + // for temporary blocks in speed-critical loops. + + ptr = malloc(amount); + if (!ptr) errm("qvalloc: Failed allocating %d bytes.", amount); + return ptr; +} + +void qvfree(void *ptr) +{ + free(ptr); +} + +int TotalBytesAllocated(void) +{ + int i, tally=0; + + for (i=0; i +#include +#include +#include +#include + +#include "config.h" +#include "keyboard.h" +#include "timer.h" +#include "vdriver.h" + +#include "colbak.h" +#include "colstuff.h" + +#include "smalfont.h" +#include "gui.h" + +#include "tilesel.h" + +#define byte unsigned char +#define word unsigned short + +// ================================= Data ==================================== + +char *field, *destruct; +char *background, *sprites; +int startofs=16; +int turnlength, turnctr; +int destructed, difficulty=4; +int blocks, score, scoremultiplier; +int level; + +// Current piece falling + +char piece[3], tempspot; +int xpos, ypos, ypofs; +char newpiece; +char nextpiece[3]; + +// ================================= Code ==================================== + +void BlitPlayField() +{ + int i, j; + char c; + + for (i=0; i<12; i++) + for (j=0; j<6; j++) + { + c=field[(i*6)+j]; + if (c) TCopySprite(128+(j*16), startofs+4+(i*16), 16, 16, sprites+((c+1)*256)); + } +} + +void BlitPlayFieldwDestruct(char flash) +{ + int i, j; + char c; + + for (i=0; i<12; i++) + for (j=0; j<6; j++) + { + c=field[(i*6)+j]; + if (c && !destruct[(i*6)+j]) + TCopySprite(128+(j*16), startofs+4+(i*16), 16, 16, sprites+((c+1)*256)); + if (destruct[(i*6)+j]) + TCopySprite(128+(j*16), startofs+4+(i*16), 16, 16, sprites+(flash*256)); + } +} + +void BlitPiece() +{ + ypofs=((100 * turnctr) / turnlength) * 16 / 100; + + TCopySprite(128+(xpos*16), startofs+4+(ypos*16)+ypofs, 16, 16, sprites+((piece[0]+1)*256)); + TCopySprite(128+(xpos*16), startofs+20+(ypos*16)+ypofs, 16, 16, sprites+((piece[1]+1)*256)); + TCopySprite(128+(xpos*16), startofs+36+(ypos*16)+ypofs, 16, 16, sprites+((piece[2]+1)*256)); + + TCopySprite(276, startofs+70, 16, 16, sprites+((nextpiece[0]+1)*256)); + TCopySprite(276, startofs+90, 16, 16, sprites+((nextpiece[1]+1)*256)); + TCopySprite(276, startofs+110, 16, 16, sprites+((nextpiece[2]+1)*256)); +} + +void GenerateNewPiece() +{ + newpiece=0; + xpos=2; + ypos=0; + if (field[2]) key[SCAN_ESC]=1; + if (field[8]) key[SCAN_ESC]=1; + if (field[14]) key[SCAN_ESC]=1; + if (field[20]) key[SCAN_ESC]=1; + + if (key[SCAN_ESC]) + { + if (difficulty==4 && blocks<240) Message("You really suck at columns, man.",300); + if (difficulty==5 && blocks<80) Message("You really suck at columns, man.",300); + if (score>3200 && score<=6400) Message("Not bad.",300); + if (score>6400) Message("Behold, the Columns God walks among us.",500); + } + + memcpy(&piece, &nextpiece, 3); + nextpiece[0]=random(1,difficulty); + nextpiece[1]=random(1,difficulty); + nextpiece[2]=random(1,difficulty); +} + +void DestroyBlock(int x, int y) +{ + int i; + + for (i=y; i>0; i--) + { + field[(i*6)+x]=field[((i-1)*6)+x]; + } + blocks++; + score+=scoremultiplier; +} + +void ClearConsecutiveColumns() +{ + int x, y; + char c; + + // Scan for things to destroy, but don't destroy them, just mark + // them in the Destroy field. + + destructed=0; + memset(destruct, 0, (6*13)); + + for (y=0; y<12; y++) + for (x=0; x<6; x++) + { + c=field[(y*6)+x]; + + // Test vertical match + if (y<10) + { + if ((field[((y+1)*6)+x]==c) && (field[((y+2)*6)+x]==c) && c) + { + // vertical match. Set destruct field. + destruct[((y+0)*6)+x]=1; + destruct[((y+1)*6)+x]=1; + destruct[((y+2)*6)+x]=1; + destructed=1; + } + } + // Test horizontal match + if (x<4) + { + if ((field[(y*6)+x+1]==c) && (field[(y*6)+x+2]==c) && c) + { + // horizontal match. Set destruct field. + destruct[(y*6)+x+0]=1; + destruct[(y*6)+x+1]=1; + destruct[(y*6)+x+2]=1; + destructed=1; + } + } + // Test negative diagonal match + if (x<4 && y<10) + { + if ((field[((y+1)*6)+x+1]==c) && (field[((y+2)*6)+x+2]==c) && c) + { + // negative diagonal match. set destruct field. + destruct[((y+0)*6)+x+0]=1; + destruct[((y+1)*6)+x+1]=1; + destruct[((y+2)*6)+x+2]=1; + destructed=1; + } + } + // Test positive diagonal match + if (x>=2 && y<10) + { + if ((field[((y+1)*6)+x-1]==c) && (field[((y+2)*6)+x-2]==c) && c) + { + // positive diagonal match. set destruct field. + destruct[((y+0)*6)+x-0]=1; + destruct[((y+1)*6)+x-1]=1; + destruct[((y+2)*6)+x-2]=1; + destructed=1; + } + } + } + + // Show which tiles are being destroyed before clearing out for increase + // visual coolishness. + + if (destructed) + { + timer_count=0; + while (timer_count<50) + { + if (timer_count<10 || (timer_count>20 && timer_count<30) || + (timer_count>40 && timer_count<50)) c=1; + else c=0; + + CopySprite(16,16,320,200,background); + BlitPlayFieldwDestruct(c); + TCopySprite(276, startofs+70, 16, 16, sprites+((nextpiece[0]+1)*256)); + TCopySprite(276, startofs+90, 16, 16, sprites+((nextpiece[1]+1)*256)); + TCopySprite(276, startofs+110, 16, 16, sprites+((nextpiece[2]+1)*256)); + +GotoXY(55,130); +sprintf(strbuf,"Blocks: %d", blocks); +printstring(strbuf); +GotoXY(55,140); +sprintf(strbuf,"Score: %d", score); +printstring(strbuf); +GotoXY(55,150); +sprintf(strbuf,"Level: %d", level); +printstring(strbuf); + + ShowPage(); + } + } + + // Apply destruct-o patch to the field. + + for (y=0; y<12; y++) + for (x=0; x<6; x++) + if (destruct[(y*6)+x]) DestroyBlock(x,y); +} + +void NextTurn() +{ + ypos++; + if (field[((ypos+3)*6)+xpos]) + { + if (ypos<3) key[SCAN_ESC]=1; + // Hit something; set piece here. + field[(ypos*6)+xpos]=piece[0]; + field[((ypos+1)*6)+xpos]=piece[1]; + field[((ypos+2)*6)+xpos]=piece[2]; + newpiece=1; + + // Scan for consecutive things to delete. + do + { + ClearConsecutiveColumns(); + scoremultiplier*=2; + } while (destructed); + } +} + +int CanGoLeft() +{ + if (!xpos) return 0; + if (field[((ypos+1)*6)+xpos-1]) return 0; + if (field[((ypos+2)*6)+xpos-1]) return 0; + if (field[((ypos+3)*6)+xpos-1]) return 0; + return 1; +} + +int CanGoRight() +{ + if (xpos==5) return 0; + if (field[((ypos+1)*6)+xpos+1]) return 0; + if (field[((ypos+2)*6)+xpos+1]) return 0; + if (field[((ypos+3)*6)+xpos+1]) return 0; + return 1; +} + +void RotatePiece() +{ + tempspot=piece[0]; + piece[0]=piece[1]; + piece[1]=piece[2]; + piece[2]=tempspot; +} + +void ProcessLevels() +{ + if (blocks>80) { level=2; turnlength=90; } + if (blocks>160) { level=3; turnlength=80; } + if (blocks>240) { level=4; turnlength=70; } + if (blocks>320) { level=5; turnlength=60; } + if (blocks>400) { level=6; turnlength=50; } + if (blocks>480) { level=7; turnlength=40; } + if (blocks>560) { level=8; turnlength=30; } + if (blocks>640) { level=9; turnlength=20; } +} + +extern FILE *pcxf; +extern int width, depth; +extern int bytes; +extern int vidoffset; + +void LoadBackground() +{ + int i; + + if (!(pcxf=fopen("colback.pcx","rb"))) + { + background=background_; + } + else + { + fclose(pcxf); + background=(char *) valloc(64000,"col bakg",0); + LoadPCXHeaderNP("colback.pcx"); + for (i=0; i=turnlength) + { + NextTurn(); + turnctr-=turnlength; + } + if (newpiece) GenerateNewPiece(); + BlitPlayField(); + BlitPiece(); + +GotoXY(55,130); +sprintf(strbuf,"Blocks: %d", blocks); +printstring(strbuf); +GotoXY(55,140); +sprintf(strbuf,"Score: %d", score); +printstring(strbuf); +GotoXY(55,150); +sprintf(strbuf,"Level: %d", level); +printstring(strbuf); + + ShowPage(); + } + vfree(sprites); + vfree(background); + vfree(field); + vfree(destruct); +} diff --git a/16/v2/source/verge/MAPED/COLUMNS.H b/16/v2/source/verge/MAPED/COLUMNS.H new file mode 100644 index 00000000..2c1b4c1e --- /dev/null +++ b/16/v2/source/verge/MAPED/COLUMNS.H @@ -0,0 +1,34 @@ +/* +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. +*/ + +#ifndef COLUMNS_INC +#define COLUMNS_INC + +extern void BlitPlayField(); +extern void BlitPlayFieldwDestruct(char flash); +extern void BlitPiece(); +extern void GenerateNewPiece(); +extern void DestroyBlock(int x, int y); +extern void ClearConsecutiveColumns(); +extern void NextTurn(); +extern int CanGoLeft(); +extern int CanGoRight(); +extern void RotatePiece(); +extern void ProcessLevels(); +extern void LoadBackground(); +extern void Columns(); + +#endif // COLUMNS_INC diff --git a/16/v2/source/verge/MAPED/CONFIG.C b/16/v2/source/verge/MAPED/CONFIG.C new file mode 100644 index 00000000..0e3f10ec --- /dev/null +++ b/16/v2/source/verge/MAPED/CONFIG.C @@ -0,0 +1,200 @@ +/* +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. +*/ + +#include +#include +#include + +#include "gui.h" +#include "mikmod.h" +#include "maped.h" + +#include "smalfont.h" + +// ================================= Data ==================================== + +FILE *cfg; +char *strbuf; + +char vm=0; // Video mode +char white=0, black=0; // Color definitions +char pad=0; // Padding mode in tile selector. +char th=0, mh=0; // tile-highlight, map highlight + +// GUI default colors + +char winbg=23; +char titlebg=125; +char brightw=31; +char darkw=13; +char darkred=44; + +// ------------------ + +extern char scrollmode, vcedprog[80]; +extern int difficulty; + +// ================================= Code ==================================== + +void InitializeDefaults() +{ + vm=0; + white=31; + black=1; + pad=1; + th=1; + mh=1; + mouse_scroll=1; + scrollmode=1; + memcpy(vcedprog,"edit",5); +} + +void GetConfig(char *fname) +{ + strbuf=(char *) valloc(2000,"strbuf!",0); + InitializeDefaults(); + if (!(cfg=fopen(fname,"r"))) + { + printf("Unable to open config file. Using defaults... \n"); + return; + } + + while (1) + { + fscanf(cfg,"%s",strbuf); + + if (!strcmp(strbuf,"difficulty")) + { fscanf(cfg,"%s",strbuf); + difficulty=atoi(strbuf); continue; } + if (!strcmp(strbuf,"nocdaudio")) + { + //nocdaudio=1; + continue; + } + if (!strcmp(strbuf,"vidmode")) + { fscanf(cfg,"%s",strbuf); + vm=atoi(strbuf); continue; } + if (!strcmp(strbuf,"white")) + { fscanf(cfg,"%s",strbuf); + white=atoi(strbuf); brightw=atoi(strbuf); + TextColor(atoi(strbuf)); continue; } + if (!strcmp(strbuf,"black")) + { fscanf(cfg,"%s",strbuf); + black=atoi(strbuf); continue; } + if (!strcmp(strbuf,"winbg")) + { fscanf(cfg,"%s",strbuf); + winbg=atoi(strbuf); continue; } + if (!strcmp(strbuf,"shadow")) + { fscanf(cfg,"%s",strbuf); + darkw=atoi(strbuf); continue; } + if (!strcmp(strbuf,"darkred")) + { fscanf(cfg,"%s",strbuf); + darkred=atoi(strbuf); continue; } + if (!strcmp(strbuf,"titlebg")) + { fscanf(cfg,"%s",strbuf); + titlebg=atoi(strbuf); continue; } + if (!strcmp(strbuf,"pad")) + { fscanf(cfg,"%s",strbuf); + pad=atoi(strbuf); continue; } + if (!strcmp(strbuf, "scrollmode")) + { fscanf(cfg,"%s",strbuf); + scrollmode=atoi(strbuf); continue; } + // aen + if (!strcmp(strbuf, "mouse_scroll")) + { fscanf(cfg,"%s",strbuf); + mouse_scroll=atoi(strbuf)&1; continue; } + if (!strcmp(strbuf, "md_device")) + { fscanf(cfg, "%s", strbuf); + md_device=atoi(strbuf); continue; } + if (!strcmp(strbuf, "th")) + { fscanf(cfg,"%s",strbuf); + th=atoi(strbuf); continue; } + if (!strcmp(strbuf, "mh")) + { fscanf(cfg,"%s",strbuf); + mh=atoi(strbuf); continue; } + if (!strcmp(strbuf, "amxofs")) + { fscanf(cfg,"%s",strbuf); + amxofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "amyofs")) + { fscanf(cfg,"%s",strbuf); + amyofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "mmxofs")) + { fscanf(cfg,"%s",strbuf); + mmxofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "mmyofs")) + { fscanf(cfg,"%s",strbuf); + mmyofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "cnxofs")) + { fscanf(cfg,"%s",strbuf); + cnxofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "cnyofs")) + { fscanf(cfg,"%s",strbuf); + cnyofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "lmxofs")) + { fscanf(cfg,"%s",strbuf); + lmyofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "lmyofs")) + { fscanf(cfg,"%s",strbuf); + lmyofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "lvxofs")) + { fscanf(cfg,"%s",strbuf); + lvxofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "lvyofs")) + { fscanf(cfg,"%s",strbuf); + lvyofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "mpxofs")) + { fscanf(cfg,"%s",strbuf); + mpxofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "mpyofs")) + { fscanf(cfg,"%s",strbuf); + mpyofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "vaxofs")) + { fscanf(cfg,"%s",strbuf); + vaxofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "vayofs")) + { fscanf(cfg,"%s",strbuf); + vayofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "zexofs")) + { fscanf(cfg,"%s",strbuf); + zexofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "zeyofs")) + { fscanf(cfg,"%s",strbuf); + zeyofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "exofs")) + { fscanf(cfg,"%s",strbuf); + exofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "eyofs")) + { fscanf(cfg,"%s",strbuf); + eyofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "prxofs")) + { fscanf(cfg,"%s",strbuf); + prxofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "pryofs")) + { fscanf(cfg,"%s",strbuf); + pryofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "rsxofs")) + { fscanf(cfg,"%s",strbuf); + rsxofs=atoi(strbuf); continue; } + if (!strcmp(strbuf, "rsyofs")) + { fscanf(cfg,"%s",strbuf); + rsyofs=atoi(strbuf); continue; } + if (!strcmp(strbuf,"vcedprog")) + { fscanf(cfg,"%s",vcedprog); + continue; } + break; + } + fclose(cfg); +} diff --git a/16/v2/source/verge/MAPED/CONFIG.H b/16/v2/source/verge/MAPED/CONFIG.H new file mode 100644 index 00000000..d026fcda --- /dev/null +++ b/16/v2/source/verge/MAPED/CONFIG.H @@ -0,0 +1,28 @@ +/* +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. +*/ + +#ifndef CONFIG_INC +#define CONFIG_INC + +extern char vm; +extern char *strbuf; +extern char white,black,darkred,pad,th,mh; +extern char winbg,titlebg,brightw,darkw; + +extern void InitializeDefaults(); +extern void GetConfig(char *fname); + +#endif // CONFIG_INC diff --git a/16/v2/source/verge/MAPED/CONTROLS.C b/16/v2/source/verge/MAPED/CONTROLS.C new file mode 100644 index 00000000..be58e951 --- /dev/null +++ b/16/v2/source/verge/MAPED/CONTROLS.C @@ -0,0 +1,837 @@ +/* +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. +*/ + + +// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +// CHANGELOG: +// +// + fixed ScreenShot() to properly save screenshots with +// the sequential filenames. +// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + +// ================================= Data ==================================== + +// ================================= Code ==================================== + +int CheckMouseTabs() +{ int i; + + for (i=0; i<10; i++) + { + if (i<6 && i>=numlayers) continue; + if (mb==1 && mx>17+(i*10) && mx<26+(i*10) && my>(tsy-7) && my17+(i*10) && mx<26+(i*10) && my>(tsy-7) && my1 || (byt & 0xC0) != 0) + { + repcode=0xC0 | samect; + fwrite(&repcode,1,1,pcxf); + } + fwrite(&byt,1,1,pcxf); + } while (i> 2; +} + +void OutputVSPpcx() +{ int i,j,_x,_y; + unsigned char *ptr; + char b1; + short int w1,w2; + + // First figure out the filename + + i=0; + ptr=&vspname; + while (*ptr != '.') + { + strbuf[i]=*ptr; + ptr++; + i++; + } + strbuf[i++]='.'; + strbuf[i++]='P'; + strbuf[i++]='C'; + strbuf[i++]='X'; + strbuf[i++]=0; + + pcxf=fopen(strbuf,"wb"); + +// Write PCX header + + b1=10; fwrite(&b1, 1, 1, pcxf); // manufacturer always = 10 + b1=5; fwrite(&b1, 1, 1, pcxf); // version = 3.0, >16 colors + b1=1; fwrite(&b1, 1, 1, pcxf); // encoding always = 1 + b1=8; fwrite(&b1, 1, 1, pcxf); // 8 bits per pixel, for 256 colors + w1=0; fwrite(&w1, 1, 2, pcxf); // xmin = 0; + w1=0; fwrite(&w1, 1, 2, pcxf); // ymin = 0; + w1=319; fwrite(&w1, 1, 2, pcxf); // xmax = 319; + + // At this point we need to figure out how many vertical rows tall the + // PCX needs to be in order to accomidate the number of tiles in the VSP. + + w2=numtiles/18; w2++; + w2=(w2*17); fwrite(&w2, 1, 2, pcxf); // ymax = ?; + w1=320; fwrite(&w1, 1, 2, pcxf); // hres = 320; + w2++; fwrite(&w2, 1, 2, pcxf); // vres = ?; + + fwrite(screen, 1, 48, pcxf); // 16-color palette data. Who knows what's + // actually in here. It doesn't matter since + // the 256-color palette is stored elsewhere. + + b1=0; fwrite(&b1, 1, 1, pcxf); // reserved always = 0. + b1=1; fwrite(&b1, 1, 1, pcxf); // number of color planes. Just 1 for 8bit. + w1=320; fwrite(&w1, 1, 2, pcxf); // number of bytes per line + + w1=0; fwrite(&w1, 1, 1, pcxf); + fwrite(screen, 1, 59, pcxf); // filler + + // The header is written. Now we need to generate a large buffer where we'll + // "draw" the PCX, and then encode the data and save the PCX. + + ptr=(char *) malloc(320*w2); + memset(ptr,255,(320*w2)); // Give the PCX a white background + + // Now we "draw" the tiles into the buffer. + + for (i=0; i16 colors + b1=1; fwrite(&b1, 1, 1, pcxf); // encoding always = 1 + b1=8; fwrite(&b1, 1, 1, pcxf); // 8 bits per pixel, for 256 colors + w1=0; fwrite(&w1, 1, 2, pcxf); // xmin = 0; + w1=0; fwrite(&w1, 1, 2, pcxf); // ymin = 0; + w1=sx-1; fwrite(&w1, 1, 2, pcxf); // xmax = 319; + w1=sy-1; fwrite(&w1, 1, 2, pcxf); // ymax = 199; + w1=sx; fwrite(&w1, 1, 2, pcxf); // hres = 320; + w1=sy; fwrite(&w1, 1, 2, pcxf); // vres = 200; + + fwrite(screen,1,48,pcxf); + + b1=0; fwrite(&b1, 1, 1, pcxf); // reserved always = 0. + b1=1; fwrite(&b1, 1, 1, pcxf); // number of color planes. Just 1 for 8bit. + w1=sx; fwrite(&w1, 1, 2, pcxf); // number of bytes per line + + w1=0; fwrite(&w1, 1, 1, pcxf); + fwrite(screen, 1, 59, pcxf); // filler + + for (w1=0; w1(tsy-2)) ms_down=1; + if (mx>334) ms_right=1; + if (mx<18) ms_left=1; + } + + if (key[SCAN_UP] || ms_up) + { + if (scrollmode) + { + ywin -= map_scroll_y; + if (ywin < 0) ywin = 0; + } + else + { + if (key[SCAN_UP] || (!(systemtime%10))) + { + key[SCAN_UP]=0; + ywin -= 16; + if (ywin < 0) ywin = 0; + systemtime++; + } + } + } + if (key[SCAN_DOWN] || ms_down) + { + if (scrollmode) + { + ywin += map_scroll_y; + if (ywin > ymax) + ywin = ymax; + } + else + { + if (key[SCAN_DOWN] || (!(systemtime%10))) + { + key[SCAN_DOWN]=0; + ywin += 16; + if (ywin > ymax) + ywin = ymax; + systemtime++; + } + } + } + if (key[SCAN_RIGHT] || ms_right) + { + if (scrollmode) + { + xwin += map_scroll_x; + if (xwin > xmax) + xwin = xmax; + } + else + { + if (key[SCAN_RIGHT] || (!(systemtime%10))) + { + key[SCAN_RIGHT]=0; + xwin += 16; + if (xwin > xmax) + xwin = xmax; + systemtime++; + } + } + } + if (key[SCAN_LEFT] || ms_left) + { + if (scrollmode) + { + xwin -= map_scroll_x; + if (xwin < 0) xwin=0; + } + else + { + if (key[SCAN_LEFT] || (!(systemtime%10))) + { + key[SCAN_LEFT]=0; + xwin -= 16; + if (xwin < 0) xwin = 0; + systemtime++; + } + } + } +} + +ProcessControls() +{ + int xmax, ymax; + + xmax = (layer[0].sizex * 16) - sx; + ymax = (layer[0].sizey * 16) - sy; + + if (key[SCAN_F5]) { key[SCAN_F5]=0; ShellMAP(); } + if (key[SCAN_F6]) { key[SCAN_F6]=0; CompileAll(); } + if (key[SCAN_F8]) { key[SCAN_F8]=0; ShellVERGE(); } + if (key[SCAN_ALT] && key[SCAN_D]) { key[SCAN_D]=0; ShellToDOS(); } + if (key[SCAN_ALT] && key[SCAN_L]) LoadMAPDialog(); + if (key[SCAN_ALT] && key[SCAN_V]) ShellEditMAP(); + if (key[SCAN_ALT] && key[SCAN_S]) ShellEditSystem(); + if (key[SCAN_ALT] && key[SCAN_N]) NewMAP(); + if (key[SCAN_ALT] && key[SCAN_P]) MPDialog(); + if (!key[SCAN_ALT] && key[SCAN_P]) { pasting^=1; key[SCAN_P]=0; } // aen + + if (key[SCAN_A] && el<6) + { + lt++; + if (lt==numtiles) lt=0; + key[SCAN_A]=0; + } + if (key[SCAN_Z] && el<6) + { + if (lt) lt--; + else lt=numtiles-1; + key[SCAN_Z]=0; + } + if (key[SCAN_A] && el==7) + { + curzone++; + key[SCAN_A]=0; + } + if (key[SCAN_Z] && el==7) + { + curzone--; + key[SCAN_Z]=0; + } + if (key[SCAN_S]) + { + rt++; + if (rt==numtiles) rt=0; + key[SCAN_S]=0; + } + if (key[SCAN_X]) + { + if (rt) rt--; + else rt=numtiles-1; + key[SCAN_X]=0; + } + if (key[SCAN_F10]) + { + key[SCAN_F10]=0; + if (random(0,255)<15) HAL(); + SaveMAP(mapname); + SaveVSP(vspname); + CompileMAP(); + Message("MAP/VSP saved.",100); + modified=0; + } + if (key[SCAN_C]) + { + key[SCAN_C]=0; + sprintf(strbuf,"Left: %d Right: %d", lt, rt); + Message(strbuf, 300); + } + if (key[SCAN_M]) + { + key[SCAN_M]=0; + GenerateMiniVSP(); + MiniMAP(); + } + if (key[SCAN_H]) + { + key[SCAN_H]=0; + mh=mh^1; + if (mh) Message("MAP Tile Highlight enabled.",100); + else Message("MAP Tile Highlight disabled.",100); + } + + // *** + // movement code moved to PollMovement() + // *** + + if (key[SCAN_PGUP]) + { + key[SCAN_PGUP]=0; + ywin -= sy; + if (ywin < 0) + ywin = 0; + } + if (key[SCAN_HOME]) + { + key[SCAN_HOME]=0; + xwin -= sx; + if (xwin < 0) + xwin = 0; + } + if (key[SCAN_END]) + { + key[SCAN_END]=0; + xwin += sx; + if (xwin > xmax) + xwin = xmax; + } + if (key[SCAN_PGDN]) + { + key[SCAN_PGDN]=0; + ywin += sy; + if (ywin > ymax) + ywin = ymax; + } + + if (key[SCAN_CTRL] && el<6) + { + key[SCAN_CTRL]=0; + TileSelector(); + } + if (key[SCAN_CTRL] && el==7) + { + key[SCAN_CTRL]=0; + ZoneEdDialog(); + } + + if (key[SCAN_TAB]) + { + key[SCAN_TAB]=0; + if (scrollmode) + { + scrollmode=0; + xwin=xwin/16; xwin=xwin*16; + ywin=ywin/16; ywin=ywin*16; + Message("Tile scroll.",150); + } + else + { + scrollmode=1; + Message("Pixel scroll.",150); + } + } + + if (key[SCAN_1]) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) + { + layertoggle[0]=0; + return; + } + layertoggle[0]=1; + layertoggle[6]=0; layertoggle[7]=0; + layertoggle[8]=0; layertoggle[9]=0; + el=0; + key[SCAN_1]=0; + } + if (key[SCAN_2]) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) + { + layertoggle[1]=0; + return; + } + key[SCAN_2]=0; + layertoggle[6]=0; layertoggle[7]=0; + layertoggle[8]=0; layertoggle[9]=0; + if (numlayers>1) + { layertoggle[1]=1; + el=1; } + } + if (key[SCAN_3]) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) + { + layertoggle[2]=0; + return; + } + key[SCAN_3]=0; + layertoggle[6]=0; layertoggle[7]=0; + layertoggle[8]=0; layertoggle[9]=0; + if (numlayers>2) + { layertoggle[2]=1; + el=2; } + } + if (key[SCAN_4]) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) + { + layertoggle[3]=0; + return; + } + key[SCAN_4]=0; + layertoggle[6]=0; layertoggle[7]=0; + layertoggle[8]=0; layertoggle[9]=0; + if (numlayers>3) + { layertoggle[3]=1; + el=3; } + } + if (key[SCAN_5]) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) + { + layertoggle[4]=0; + return; + } + key[SCAN_5]=0; + layertoggle[6]=0; layertoggle[7]=0; + layertoggle[8]=0; layertoggle[9]=0; + if (numlayers>4) + { layertoggle[4]=1; + el=4; } + } + if (key[SCAN_6]) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) + { + layertoggle[5]=0; + return; + } + key[SCAN_6]=0; + layertoggle[6]=0; layertoggle[7]=0; + layertoggle[8]=0; layertoggle[9]=0; + if (numlayers>5) + { layertoggle[5]=1; + el=5; } + } + if (key[SCAN_O]) + { + key[SCAN_O]=0; + layertoggle[6]=1; layertoggle[7]=0; + layertoggle[8]=0; layertoggle[9]=0; + el=6; + } + if (key[SCAN_N]) + { + key[SCAN_N]=0; + layertoggle[6]=0; layertoggle[7]=1; + layertoggle[8]=0; layertoggle[9]=0; + el=7; + } + if (key[SCAN_E]) + { + key[SCAN_E]=0; + layertoggle[6]=0; layertoggle[7]=0; + layertoggle[8]=1; layertoggle[9]=0; + el=8; + } + if (key[SCAN_T]) + { + key[SCAN_T]=0; + layertoggle[6]=0; layertoggle[7]=0; + layertoggle[8]=0; layertoggle[9]=1; + el=9; + } + if (key[SCAN_F9]) + { // aen + key[SCAN_F9]=0; + mouse_scroll^=1; + sprintf(strbuf,"Mouse scroll %sabled.", mouse_scroll ? "en" : "dis"); + Message(strbuf, 100); + } + if (key[SCAN_F11]) + { + key[SCAN_F11]=0; + ScreenShot(); + Message("Screen capture saved.",300); + } + if (key[SCAN_F12]) + { + key[SCAN_F12]=0; + OutputVSPpcx(); + Message("PCX file exported.",300); + } + if (key[SCAN_LANGLE]) + { + key[SCAN_LANGLE]=0; + ShutdownVideo(); + vm=0; + InitVideo(0); + set_intensity(63); + InitMouse(); + + // aen -- gotta recalc this if you're in a lower res at the bottom of + // the map and jump to a higher res. + xmax = (layer[0].sizex * 16) - sx; + ymax = (layer[0].sizey * 16) - sy; + if (xwin > xmax) xwin=xmax; + if (ywin > ymax) ywin=ymax; + } + if (key[SCAN_RANGLE]) + { + key[SCAN_RANGLE]=0; + ShutdownVideo(); + vm=1; + InitVideo(1); + set_intensity(63); + InitMouse(); + + // aen -- gotta recalc this if you're in a lower res at the bottom of + // the map and jump to a higher res. + xmax = (layer[0].sizex * 16) - sx; + ymax = (layer[0].sizey * 16) - sy; + if (xwin > xmax) xwin=xmax; + if (ywin > ymax) ywin=ymax; + } + + if (CheckMouseTabs()) return; + + if (mb>=3) MainMenu(mx-4,my-5); + if (key[SCAN_ESC]) DoMainMenu(); + + if (mb==1 && key[SCAN_SLASH] && el<6) + { + lt=layers[el][((((ywin*layer[el].pmulty/layer[el].pdivy)+my-16)/16) * + layer[el].sizex)+(((xwin*layer[el].pmultx/layer[el].pdivx)+mx-16)/16)]; + + return; + } + + if (mb==2 && key[SCAN_SLASH] && el<6) + { + rt=layers[el][((((ywin*layer[el].pmulty/layer[el].pdivy)+my-16)/16) * + layer[el].sizex)+(((xwin*layer[el].pmultx/layer[el].pdivx)+mx-16)/16)]; + return; + } + + // aen; these must come before the tile plotting code just below + // to work correctly. + if (mb && el<6 && key[SCAN_LSHIFT] && !shifted) + { + selx1=(((xwin*layer[el].pmultx/layer[el].pdivx)+mx-16)/16); + sely1=(((ywin*layer[el].pmulty/layer[el].pdivy)+my-16)/16); + selx2=selx1; + sely2=sely1; + shifted=mb; + return; + } + if (mb && el<6 && shifted) + { + selx2=(((xwin*layer[el].pmultx/layer[el].pdivx)+mx-16)/16); + sely2=(((ywin*layer[el].pmulty/layer[el].pdivy)+my-16)/16); + return; + } + if (!mb && el<6 && shifted) + { int i,j; + int x1,y1,x2,y2; + + x1=selx1; + y1=sely1; + x2=selx2; + y2=sely2; + + if (x2335) mx=334; + modified=1; + layers[el][((((ywin*layer[el].pmulty/layer[el].pdivy)+my-16)/16) * + layer[el].sizex)+(((xwin*layer[el].pmultx/layer[el].pdivx)+mx-16) + /16)]=lt; + } + if (mb==2 && el<6 && !shifted) + { + if (mx>335) mx=334; + modified=1; + layers[el][((((ywin*layer[el].pmulty/layer[el].pdivy)+my-16)/16) * + layer[el].sizex)+(((xwin*layer[el].pmultx/layer[el].pdivx)+mx-16) + /16)]=rt; + } + + if (mb==1 && el==6) + { + modified=1; + obstruct[((((ywin*layer[0].pmulty/layer[0].pdivy)+my-16)/16) * + layer[0].sizex)+(((xwin*layer[0].pmultx/layer[0].pdivx)+mx-16) + /16)]=1; + } + if (mb==2 && el==6) + { + modified=1; + obstruct[((((ywin*layer[0].pmulty/layer[0].pdivy)+my-16)/16) * + layer[0].sizex)+(((xwin*layer[0].pmultx/layer[0].pdivx)+mx-16) + /16)]=0; + } + if (mb==1 && el==7 && (key[SCAN_LSHIFT] || key[SCAN_RSHIFT])) + { + curzone=zone[((((ywin*layer[0].pmulty/layer[0].pdivy)+my-16)/16) * + layer[0].sizex)+(((xwin*layer[0].pmultx/layer[0].pdivx)+mx-16) + /16)]; + WaitRelease(); + ZoneEdDialog(); + return; + } + if (mb==1 && el==7) + { + modified=1; + zone[((((ywin*layer[0].pmulty/layer[0].pdivy)+my-16)/16) * + layer[0].sizex)+(((xwin*layer[0].pmultx/layer[0].pdivx)+mx-16) + /16)]=curzone; + } + if (mb==2 && el==7) + { + modified=1; + zone[((((ywin*layer[0].pmulty/layer[0].pdivy)+my-16)/16) * + layer[0].sizex)+(((xwin*layer[0].pmultx/layer[0].pdivx)+mx-16) + /16)]=0; + } + if (mb==1 && el==8) + { + WaitRelease(); + ProcessEntity((xwin+(mx-16))/16,(ywin+(my-16))/16); + modified=1; + } + if (el==8 && EntityThere((mx-16+xwin)/16,(my+ywin-16)/16) && + key[SCAN_DEL]) + { + WaitRelease(); + DeleteEntity((mx-16+xwin)/16,(my-16+ywin)/16); + modified=1; + } +} diff --git a/16/v2/source/verge/MAPED/GUI.C b/16/v2/source/verge/MAPED/GUI.C new file mode 100644 index 00000000..49bdc469 --- /dev/null +++ b/16/v2/source/verge/MAPED/GUI.C @@ -0,0 +1,5062 @@ +/* +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. +*/ + +#include +#include +#include +#include +#include + +#include "config.h" +#include "guicomp.h" +#include "maped.h" +#include "mouse.h" +#include "render.h" +#include "timer.h" +#include "vdriver.h" +#include "keyboard.h" + +#include "smalfont.h" +#include "columns.h" +#include "tilesel.h" + +// ================================= Data ==================================== + +struct message +{ + char text[44]; // message text + int exptime; // message expire time +}; + +struct message messages[6]; // 5-message buffer +char num_msgs=0; // number of active messages +char playingmod[80]; // currently playing mod. +extern char scrollmode; + +// ================================= Code ==================================== + +void CheckMessageExpirations() +{ int i; + + for (i=0; imessages[i].exptime) + { + memcpy(messages[i].text, messages[i+1].text, (48*(num_msgs-i+1))); + num_msgs--; + } +} + +void Message(char *text, int duration) +{ + if (num_msgs<5) + { + memcpy(messages[num_msgs].text, text, strlen(text)); + messages[num_msgs].exptime=systemtime+duration; + num_msgs++; + return; + } + + memcpy(&messages[0].text, &messages[1].text, 192); + memcpy(messages[4].text, text, strlen(text)+1); + messages[num_msgs].exptime=systemtime+duration; +} + +void DrawScreenControls() +{ int i; + byte c; + + if (el<6) + { + if (pasting) + { + GotoXY(298-5,tsy-19+13); + printstring("P"); + } + } + + // Put current-tile boxes if applicable. + if (el<6) + { + FilledBox(298,tsy-19,18,18,white); + FilledBox(317,tsy-19,18,18,white); + CopySprite(299,tsy-18,16,16,vsp+(256*lt)); + CopySprite(318,tsy-18,16,16,vsp+(256*rt)); + } + + if (el==7) + { + sprintf(strbuf,"Zone %d",curzone); + GotoXY(280,tsy-16); + printstring(strbuf); + GotoXY(280,tsy-10); + printstring(zones[curzone].name); + + c=zone[((((ywin*layer[0].pmulty/layer[0].pdivy)+my-16)/16) * + layer[0].sizex)+(((xwin*layer[0].pmultx/layer[0].pdivx)+mx-16)/16)]; + + if (c) + { + sprintf(strbuf,"zone %d",c); + GotoXY(280,17); + printstring(strbuf); + GotoXY(280,23); + printstring(zones[c].name); + } + } + + if (el==8) + { + sprintf(strbuf,"%d entities",entities); + GotoXY(285,17); printstring(strbuf); + + if (c=EntityThere((mx+xwin-16)/16,(my+ywin-16)/16)) + { + c--; + GotoXY(285,tsy-10); + printstring(entity[c].desc); + } + } + + // Put the current-tile mouse thingy. + GotoXY(17,17); + dec_to_asciiz((xwin+mx-16)/16,strbuf); + printstring(strbuf); printstring(", "); + dec_to_asciiz((ywin+my-16)/16,strbuf); + printstring(strbuf); + + // Put the layer editor/selector. + + for (i=0; i<6; i++) + { + if (el==i) c=white; else c=darkw; + FilledBox(17+(i*10),tsy-7,9,7,c); + if (layertoggle[i]) c=darkred; else c=0; + FilledBox(18+(i*10),tsy-6,7,6,c); + GotoXY(20+(i*10),tsy-5); dec_to_asciiz(i+1,strbuf); + if (i335) dx=336-80; + if (dy+89>sy+16) dy=(sy+16)-89; + + RenderMap(); + RenderGUI(); + stdwindow(dx, dy, dx+80, dy+89); + + if (mx>dx && mxdy+2 && mydy+8 && mydy+14 && mydy+20 && mydy+29 && mydy+35 && mydy+41 && mydy+47 && mydy+53 && mydy+59 && mydy+65 && mydy+71 && mydy+80 && my"); + GotoXY(dx+3, dy+42); printstring("Options"); + GotoXY(dx+3, dy+48); printstring("MOD Player"); + GotoXY(dx+3, dy+54); printstring("CD Player"); + GotoXY(dx+3, dy+60); printstring("Columns"); + GotoXY(dx+3, dy+66); printstring("Execute"); GotoXY(dx+73, dy+66); printstring(">"); + GotoXY(dx+3, dy+72); printstring("Exit to DOS"); + HLine(dx+2, dy+79, 76, white); + GotoXY(dx+3, dy+81); printstring("About MapEd"); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + if (mb==1 && mx>dx && mxdy+2 && mydy+8 && mydy+14 && mydy+20 && mydy+29 && mydy+35 && mydy+41 && mydy+47 && mydy+53 && mydy+59 && mydy+65 && mydy+71 && mydy+80 && my= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + ilxofs = (mx-mxo); + ilyofs = (my-myo); + if (!mb) moving=0; + if (ilxofs<16) ilxofs = 16; + if (ilyofs<16) ilyofs = 16; + if (ilxofs+ilxsize>335) ilxofs = 336-ilxsize; + if (ilyofs+ilysize>sy+16) ilyofs = (sy+16)-ilysize; + } + + Window(ilxofs, ilyofs, ilxofs+ilxsize, ilyofs+ilysize, "Import Image As Layer"); + Button(ilxofs+109, ilyofs+12, "Browse"); + Button(ilxofs+109, ilyofs+30, "OK"); + GotoXY(ilxofs+5, ilyofs+25); printstring("Layer:"); + // layer select radio buttons + for (i=0; i<6; i++) + { + CheckBox(ilxofs+29+(i*10), ilyofs+33, chk_layer & (1<ilxofs+109 && mxilyofs+12 && myilxofs+109 && mxilyofs+30 && mynumlayers) + { + numlayers++; + sprintf(rstring, "%s%i", rstring, ly+1); // update render-order + } + + vfree(t); + vfree(ovsp); + } + // ... + WaitRelease(); continue; + } + + if (mb==1 && mx>ilxofs+29 && mxilyofs+33 && myilxofs+39 && mxilyofs+33 && my= 2) + { + chk_layer ^= 2; + chk_layer &= 2; + //chk_2 ^= 1; + //chk_1=0,chk_3=0,chk_4=0,chk_5=0,chk_6=0; + WaitRelease(); continue; + } + } + + if (mb==1 && mx>ilxofs+49 && mxilyofs+33 && my= 3) + { + chk_layer ^= 4; + chk_layer &= 4; + //chk_3 ^= 1; + //chk_1=0,chk_2=0,chk_4=0,chk_5=0,chk_6=0; + WaitRelease(); continue; + } + } + + if (mb==1 && mx>ilxofs+59 && mxilyofs+33 && my= 4) + { + chk_layer ^= 8; + chk_layer &= 8; + //chk_4 ^= 1; + //chk_1=0,chk_2=0,chk_3=0,chk_5=0,chk_6=0; + WaitRelease(); continue; + } + } + + if (mb==1 && mx>ilxofs+69 && mxilyofs+33 && my= 5) + { + chk_layer ^= 16; + chk_layer &= 16; + //chk_5 ^= 1; + //chk_1=0,chk_2=0,chk_3=0,chk_4=0,chk_6=0; + WaitRelease(); continue; + } + } + + if (mb==1 && mx>ilxofs+79 && mxilyofs+33 && my= 6) + { + chk_layer ^= 32; + chk_layer &= 32; + //chk_6 ^= 1; + //chk_1=0,chk_2=0,chk_3=0,chk_4=0,chk_5=0; + WaitRelease(); continue; + } + } + + // if no checkboxes are marked, mark the first. + //if (!(chk_1+chk_2+chk_3+chk_4+chk_5+chk_6)) chk_1=1; + if (!chk_layer) chk_layer=1; + +// if (mb==1 && mx>ilxofs+29 && mxilyofs+12 && myilxofs+74 && mxilyofs+58 && myilxofs+74 && mxilyofs+69 && myilxofs+5 && mxilyofs+101 && my + if (excessx+excessy) + { + if (chk_grabexcess) + { + if (excessx) tilesx++; + if (excessy) tilesy++; + } + else + { + if (excessx) tilesx--; + if (excessy) tilesy--; + } + if (tilesxilxofs+5 && mxilyofs+110 && myilxofs+5 && mxilyofs+119 && my(ilxofs+ilxsize-9) && (mx(ilyofs+1) && (myilxofs && mxilyofs && my<(ilyofs+9) && !moving) + { + moving=1; + mxo=mx-ilxofs; + myo=my-ilyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + + // keep minimally required padding + if (ctf==1) + { + if (atoi(str)= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + dtxofs = (mx-mxo); + dtyofs = (my-myo); + if (!mb) moving=0; + if (dtxofs<16) dtxofs = 16; + if (dtyofs<16) dtyofs = 16; + if (dtxofs+dtxsize>335) dtxofs = 336-dtxsize; + if (dtyofs+dtysize>sy+16) dtyofs = (sy+16)-dtysize; + } + + Window(dtxofs, dtyofs, dtxofs+dtxsize, dtyofs+dtysize, "Destroyer"); + CheckBox(dtxofs+4, dtyofs+11, zn_check); + CheckBox(dtxofs+4, dtyofs+31, ob_check); + CheckBox(dtxofs+4, dtyofs+21, zd_check); + GotoXY(dtxofs+15, dtyofs+12); printstring("Zones"); + GotoXY(dtxofs+15, dtyofs+32); printstring("Obstructions"); + GotoXY(dtxofs+15, dtyofs+22); printstring("Zone Data"); + Button(dtxofs+68, dtyofs+11, "ok"); + Button(dtxofs+68, dtyofs+24, "cancel"); + CheckBox(dtxofs+4, dtyofs+41, ent_check); + GotoXY(dtxofs+15, dtyofs+42); printstring("Entities"); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>dtxofs+4 && mxdtyofs+11 && mydtxofs+4 && mxdtyofs+21 && mydtxofs+4 && mxdtyofs+31 && mydtxofs+4 && mxdtyofs+41 && mydtxofs+68 && mxdtyofs+11 && mydtxofs+68 && mxdtyofs+24 && my(dtxofs+dtxsize-9) && (mx(dtyofs+1) && (mydtxofs && mxdtyofs && my<(dtyofs+9) && !moving) + { + moving=1; + mxo=mx-dtxofs; + myo=my-dtyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } while (!done); +} + +void LayersSubMenu(int dx, int dy) +{ char done=0; + //int mxo, myo, cursorblink; + + do + { + if (dx<16) dx=16; + if (dy<16) dy=16; + if (dx+80>335) dx=336-80; + if (dy+89>sy+16) dy=(sy+16)-89; + + RenderMap(); + RenderGUI(); + stdwindow(dx, dy, dx+80, dy+29); + + if (mx>dx && mxdy+2 && mydy+8 && mydy+14 && mydy+20 && mydx && mxdy+2 && mydy+8 && mydy+14 && mydy+20 && my335) dx=336-80; + if (dy+89>sy+16) dy=(sy+16)-89; + + RenderMap(); + RenderGUI(); + stdwindow(dx, dy, dx+80, dy+23); + + if (mx>dx && mxdy+2 && mydy+8 && mydy+14 && mydx && mxdy+2 && mydy+8 && mydy+14 && my5) i=0; + if (i>=numlayers) i=0; + + sprintf(nstr1, "%d", layer[i].pmultx); + sprintf(nstr2, "%d", layer[i].pdivx); + sprintf(nstr3, "%d", layer[i].pmulty); + sprintf(nstr4, "%d", layer[i].pdivy); + sprintf(nstr5, "%d", layer[i].trans); + sprintf(nstr6, "%d", layer[i].hline); + last_pressed=0; + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + lpxofs = (mx-mxo); + lpyofs = (my-myo); + if (!mb) moving=0; + if (lpxofs<16) lpxofs = 16; + if (lpyofs<16) lpyofs = 16; + if (lpxofs+lpxsize>335) lpxofs = 336-lpxsize; + if (lpyofs+lpysize>sy+16) lpyofs = (sy+16)-lpysize; + } + + Window(lpxofs, lpyofs, lpxofs+lpxsize, lpyofs+lpysize, "Edit Layer Properties"); + GotoXY(lpxofs+3, lpyofs+10); printstring("Parallax controls:"); + GotoXY(lpxofs+4, lpyofs+21); printstring("MultX:"); + GotoXY(lpxofs+12, lpyofs+31); printstring("DivX:"); + GotoXY(lpxofs+93, lpyofs+21); printstring("MultY:"); + GotoXY(lpxofs+101, lpyofs+31); printstring("DivY:"); + TextField(lpxofs+29, lpyofs+19, 60, nstr1, ctf == 1 ? cb : 0); + TextField(lpxofs+29, lpyofs+29, 60, nstr2, ctf == 2 ? cb : 0); + TextField(lpxofs+118, lpyofs+19, 60, nstr3, ctf == 3 ? cb : 0); + TextField(lpxofs+118, lpyofs+29, 60, nstr4, ctf == 4 ? cb : 0); + HLine(lpxofs+1, lpyofs+43, 188, white); + GotoXY(lpxofs+9, lpyofs+48); printstring("Transparent"); + GotoXY(lpxofs+36, lpyofs+58); printstring("HLine"); + TextField(lpxofs+56, lpyofs+46, 60, nstr5, ctf == 5 ? cb : 0); + TextField(lpxofs+56, lpyofs+56, 60, nstr6, ctf == 6 ? cb : 0); + Button(lpxofs+156, lpyofs+55, "OK"); + GotoXY(lpxofs+144, lpyofs+47); printstring("Layer"); + sprintf(strbuf,"%d",i); GotoXY(lpxofs+168, lpyofs+47); printstring(strbuf); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>lpxofs+29 && mxlpyofs+19 && mylpxofs+29 && mxlpyofs+29 && mylpxofs+118 && mxlpyofs+19 && mylpxofs+118 && mxlpyofs+29 && mylpxofs+56 && mxlpyofs+46 && mylpxofs+56 && mxlpyofs+56 && mylpxofs+156 && mxlpyofs+55 && my(lpxofs+lpxsize-9) && (mx(lpyofs+1) && (mylpxofs && mxlpyofs && my<(lpyofs+9) && !moving) + { + moving=1; + mxo=mx-lpxofs; + myo=my-lpyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_UP) + { + layer[i].pmultx=atoi(nstr1); + layer[i].pdivx=atoi(nstr2); + layer[i].pmulty=atoi(nstr3); + layer[i].pdivy=atoi(nstr4); + layer[i].trans=atoi(nstr5); + layer[i].hline=atoi(nstr6); + last_pressed=0; key[SCAN_UP]=0; + if (i) i--; else i=numlayers-1; + sprintf(nstr1, "%d", layer[i].pmultx); + sprintf(nstr2, "%d", layer[i].pdivx); + sprintf(nstr3, "%d", layer[i].pmulty); + sprintf(nstr4, "%d", layer[i].pdivy); + sprintf(nstr5, "%d", layer[i].trans); + sprintf(nstr6, "%d", layer[i].hline); + } + if (last_pressed==SCAN_DOWN) + { + layer[i].pmultx=atoi(nstr1); + layer[i].pdivx=atoi(nstr2); + layer[i].pmulty=atoi(nstr3); + layer[i].pdivy=atoi(nstr4); + layer[i].trans=atoi(nstr5); + layer[i].hline=atoi(nstr6); + last_pressed=0; key[SCAN_DOWN]=0; + if (i5) i=0; + if (i>=numlayers) i=0; + + sprintf(nstr1, "%d", layer[i].pmultx); + sprintf(nstr2, "%d", layer[i].pdivx); + sprintf(nstr3, "%d", layer[i].pmulty); + sprintf(nstr4, "%d", layer[i].pdivy); + last_pressed=0; + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + lpxofs = (mx-mxo); + lpyofs = (my-myo); + if (!mb) moving=0; + if (lpxofs<16) lpxofs = 16; + if (lpyofs<16) lpyofs = 16; + if (lpxofs+lpxsize>335) lpxofs = 336-lpxsize; + if (lpyofs+lpysize>sy+16) lpyofs = (sy+16)-lpysize; + } + + Window(lpxofs, lpyofs, lpxofs+lpxsize, lpyofs+lpysize, "Edit Layer Properties"); + GotoXY(lpxofs+3, lpyofs+10); printstring("Parallax controls:"); + GotoXY(lpxofs+4, lpyofs+21); printstring("MultX:"); + GotoXY(lpxofs+12, lpyofs+31); printstring("DivX:"); + GotoXY(lpxofs+93, lpyofs+21); printstring("MultY:"); + GotoXY(lpxofs+101, lpyofs+31); printstring("DivY:"); + TextField(lpxofs+29, lpyofs+19, 60, nstr1, ctf == 1 ? cb : 0); + TextField(lpxofs+29, lpyofs+29, 60, nstr2, ctf == 2 ? cb : 0); + TextField(lpxofs+118, lpyofs+19, 60, nstr3, ctf == 3 ? cb : 0); + TextField(lpxofs+118, lpyofs+29, 60, nstr4, ctf == 4 ? cb : 0); + HLine(lpxofs+1, lpyofs+43, 188, white); + GotoXY(lpxofs+6, lpyofs+49); printstring("Transparent"); + GotoXY(lpxofs+32, lpyofs+56); printstring("HLine"); + CheckBox(lpxofs+56, lpyofs+48, layer[i].trans); + CheckBox(lpxofs+56, lpyofs+56, layer[i].hline); + Button(lpxofs+156, lpyofs+55, "OK"); + GotoXY(lpxofs+144, lpyofs+47); printstring("Layer"); + sprintf(strbuf,"%d",i); GotoXY(lpxofs+168, lpyofs+47); printstring(strbuf); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>lpxofs+29 && mxlpyofs+19 && mylpxofs+29 && mxlpyofs+29 && mylpxofs+118 && mxlpyofs+19 && mylpxofs+118 && mxlpyofs+29 && mylpxofs+56 && mxlpyofs+48 && mylpxofs+56 && mxlpyofs+56 && mylpxofs+156 && mxlpyofs+55 && my(lpxofs+lpxsize-9) && (mx(lpyofs+1) && (mylpxofs && mxlpyofs && my<(lpyofs+9) && !moving) + { + moving=1; + mxo=mx-lpxofs; + myo=my-lpyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_UP) + { + layer[i].pmultx=atoi(nstr1); + layer[i].pdivx=atoi(nstr2); + layer[i].pmulty=atoi(nstr3); + layer[i].pdivy=atoi(nstr4); + last_pressed=0; key[SCAN_UP]=0; + if (i) i--; else i=numlayers-1; + sprintf(nstr1, "%d", layer[i].pmultx); + sprintf(nstr2, "%d", layer[i].pdivx); + sprintf(nstr3, "%d", layer[i].pmulty); + sprintf(nstr4, "%d", layer[i].pdivy); + } + if (last_pressed==SCAN_DOWN) + { + layer[i].pmultx=atoi(nstr1); + layer[i].pdivx=atoi(nstr2); + layer[i].pmulty=atoi(nstr3); + layer[i].pdivy=atoi(nstr4); + last_pressed=0; key[SCAN_DOWN]=0; + if (i= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + amxofs = (mx-mxo); + amyofs = (my-myo); + if (!mb) moving=0; + if (amxofs<16) amxofs = 16; + if (amyofs<16) amyofs = 16; + if (amxofs+amxsize>335) amxofs = 336-amxsize; + if (amyofs+amysize>sy+16) amyofs = (sy+16)-amysize; + } + + sprintf(strbuf, "About MapEd %s", ME2_VERSION); + Window(amxofs, amyofs, amxofs+amxsize, amyofs+amysize, strbuf); + sprintf(strbuf, "MapEd v.%s", ME2_VERSION); + GotoXY(amxofs+52, amyofs+16); printstring(strbuf); + GotoXY(amxofs+31, amyofs+22); printstring("Copyright (C) 1998 vecna"); + GotoXY(amxofs+40, amyofs+28); printstring("All Rights Reserved"); + GotoXY(amxofs+(75-pixels("Additional code by Ric")/2), amyofs+41); + printstring("Additional code by Ric"); + GotoXY(amxofs+(75-pixels("Additional code by aen")/2), amyofs+47); + printstring("Additional code by aen"); + GotoXY(amxofs+(75-pixels("Additional code by zeromus")/2), amyofs+53); + printstring("Additional code by zeromus"); + Button(amxofs+60, amyofs+68, "OK"); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if ((mb==1 && mx>amxofs+66 && mxamyofs+68 && my(amxofs+amxsize-9) && (mx(amyofs+1) && (myamxofs && mxamyofs && my<(amyofs+9) && !moving) + { + moving=1; + mxo=mx-amxofs; + myo=my-amyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB) + { + switch (ctf) + { + case 0: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + + } while (!done); +} + +int cnxsize=125, cnysize=50; +int cnxofs=114, cnyofs=70; + +int Confirm(char *message) +{ char done=0, moving=0; + int mxo, myo, cursorblink; + char ctf=0, cb=0, c, t, *str; + + last_pressed=0; + WaitRelease(); + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + cnxofs = (mx-mxo); + cnyofs = (my-myo); + if (!mb) moving=0; + if (cnxofs<16) cnxofs = 16; + if (cnyofs<16) cnyofs = 16; + if (cnxofs+cnxsize>335) cnxofs = 336-cnxsize; + if (cnyofs+cnysize>sy+16) cnyofs = (sy+16)-cnysize; + } + + Window(cnxofs, cnyofs, cnxofs+cnxsize, cnyofs+cnysize, "Confirm? (Y/N)"); + GotoXY(cnxofs+125/2-(pixels(message)/2), cnyofs+15); printstring(message); + + Button(cnxofs+24, cnyofs+30, "Yes"); + Button(cnxofs+69, cnyofs+30, "No"); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>cnxofs+24 && mxcnyofs+30 && mycnxofs+69 && mxcnyofs+30 && my(cnxofs+cnxsize-9) && (mx(cnyofs+1) && (mycnxofs && mxcnyofs && my<(cnyofs+9) && !moving) + { + moving=1; + mxo=mx-cnxofs; + myo=my-cnyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + if (last_pressed==SCAN_N) + { + key[SCAN_N]=0; + done=1; + break; + } + if (last_pressed==SCAN_Y) + { + key[SCAN_Y]=0; + return 1; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB) + { + switch (ctf) + { + case 0: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + + } while (!done); + return 0; +} + +int lmxsize=145, lmysize=36; +int lmxofs=80, lmyofs=50; + +void LoadMAPDialog() +{ char lmapname[80]; + char done=0, moving=0; + int mxo, myo, cursorblink; + char ctf=0, cb=0, c, t, *str; + + memset(lmapname, 0, 80); + last_pressed=0; + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + lmxofs = (mx-mxo); + lmyofs = (my-myo); + if (!mb) moving=0; + if (lmxofs<16) lmxofs = 16; + if (lmyofs<16) lmyofs = 16; + if (lmxofs+lmxsize>335) lmxofs = 336-lmxsize; + if (lmyofs+lmysize>sy+16) lmyofs = (sy+16)-lmysize; + } + + Window(lmxofs, lmyofs, lmxofs+lmxsize, lmyofs+lmysize, "Load MAP"); + GotoXY(lmxofs+2, lmyofs+13); printstring("Load MAP:"); + TextField(lmxofs+38, lmyofs+11, 70, lmapname, ctf == 1 ? cb : 0); + Button(lmxofs+79, lmyofs+22, "OK"); + Button(lmxofs+111, lmyofs+22, "Cancel"); + Button(lmxofs+111, lmyofs+11, "Browse"); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>lmxofs+38 && mxlmyofs+11 && mylmxofs+79 && mxlmyofs+22 && mylmxofs+111 && mxlmyofs+22 && mylmxofs+111 && mxlmyofs+11 && my(lmxofs+lmxsize-9) && (mx(lmyofs+1) && (mylmxofs && mxlmyofs && my<(lmyofs+9) && !moving) + { + moving=1; + mxo=mx-lmxofs; + myo=my-lmyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB) + { + switch (ctf) + { + case 0: ctf=1; str=lmapname; break; + case 1: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + + } while (!done); +} + +int lvxsize=145, lvysize=35; +int lvxofs=80, lvyofs=50; + +void LoadVSPDialog() +{ char done=0, moving=0; + int mxo, myo, cursorblink; + char ctf=0, cb=0, c, t, *str; + char lvspname[80]; + + last_pressed=0; + memset(lvspname,0,80); + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + lvxofs = (mx-mxo); + lvyofs = (my-myo); + if (!mb) moving=0; + if (lvxofs<16) lvxofs = 16; + if (lvyofs<16) lvyofs = 16; + if (lvxofs+lvxsize>335) lvxofs = 336-lvxsize; + if (lvyofs+lvysize>sy+16) lvyofs = (sy+16)-lvysize; + } + + Window(lvxofs, lvyofs, lvxofs+lvxsize, lvyofs+lvysize, "Load VSP"); + GotoXY(lvxofs+2, lvyofs+13); printstring("Load VSP:"); + TextField(lvxofs+38, lvyofs+11, 70, lvspname, ctf == 1 ? cb : 0); + Button(lvxofs+79, lvyofs+21, "OK"); + Button(lvxofs+111, lvyofs+21, "Cancel"); + Button(lvxofs+111, lvyofs+10, "Browse"); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>lvxofs+38 && mxlvyofs+11 && mylvxofs+79 && mxlvyofs+21 && mylvxofs+111 && mxlvyofs+21 && mylvxofs+111 && mxlvyofs+10 && my(lvxofs+lvxsize-9) && (mx(lvyofs+1) && (mylvxofs && mxlvyofs && my<(lvyofs+9) && !moving) + { + moving=1; + mxo=mx-lvxofs; + myo=my-lvyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=1; str=lvspname; break; + case 1: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=1; str=lvspname; break; + case 1: ctf=0; str=lvspname; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } while (!done); +} +int mpxsize=175, mpysize=37; +int mpxofs=60, mpyofs=60; + +void MPDialog() +{ char done=0, moving=0, playmod[80]; + int mxo, myo, cursorblink; + char ctf=0, cb=0, c, t, *str; + + last_pressed=0; + memset(playmod, 0, 80); + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + mpxofs = (mx-mxo); + mpyofs = (my-myo); + if (!mb) moving=0; + if (mpxofs<16) mpxofs = 16; + if (mpyofs<16) mpyofs = 16; + if (mpxofs+mpxsize>335) mpxofs = 336-mpxsize; + if (mpyofs+mpysize>sy+16) mpyofs = (sy+16)-mpysize; + } + + Window(mpxofs, mpyofs, mpxofs+mpxsize, mpyofs+mpysize, "MOD Player Controls"); + GotoXY(mpxofs+2, mpyofs+15); printstring("MOD Playing:"); + TextField(mpxofs+49, mpyofs+13, 90, playmod, ctf == 1 ? cb : 0); + Button(mpxofs+110, mpyofs+24, "Play"); + Button(mpxofs+142, mpyofs+24, "Stop"); + Button(mpxofs+78, mpyofs+24, "OK"); + Button(mpxofs+142, mpyofs+12, "Browse"); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>mpxofs+49 && mxmpyofs+13 && mympxofs+110 && mxmpyofs+24 && mympxofs+142 && mxmpyofs+24 && mympxofs+78 && mxmpyofs+24 && mympxofs+142 && mxmpyofs+12 && my(mpxofs+mpxsize-9) && (mx(mpyofs+1) && (mympxofs && mxmpyofs && my<(mpyofs+9) && !moving) + { + moving=1; + mxo=mx-mpxofs; + myo=my-mpyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=1; str=playmod; break; + case 1: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=1; str=playmod; break; + case 1: ctf=0; str=playmod; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } while (!done); +} + +int zexsize=135, zeysize=86; +int zexofs=80, zeyofs=40; + +void ZoneEdDialog() +{ char done=0, moving=0; + int mxo, myo, cursorblink, i=0; + char ctf=0, cb=0, c, t, *str; + char nstr1[80], nstr2[80], nstr3[80], nstr4[80]; + + i=curzone; + sprintf(nstr1, "%d", zones[i].script); + sprintf(nstr2, "%d", zones[i].percent); + sprintf(nstr3, "%d", zones[i].delay); + sprintf(nstr4, "%d", zones[i].entityscript); + last_pressed=0; + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + zexofs = (mx-mxo); + zeyofs = (my-myo); + if (!mb) moving=0; + if (zexofs<16) zexofs = 16; + if (zeyofs<16) zeyofs = 16; + if (zexofs+zexsize>335) zexofs = 336-zexsize; + if (zeyofs+zeysize>sy+16) zeyofs = (sy+16)-zeysize; + } + + Window(zexofs, zeyofs, zexofs+zexsize, zeyofs+zeysize, "Zone Editor"); + GotoXY(zexofs+8, zeyofs+12); printstring("Name:"); + TextField(zexofs+30, zeyofs+10, 100, zones[i].name, ctf == 1 ? cb : 0); + GotoXY(zexofs+5, zeyofs+22); printstring("Script:"); + TextField(zexofs+30, zeyofs+20, 100, nstr1, ctf == 2 ? cb : 0); + GotoXY(zexofs+2, zeyofs+32); printstring("Chance:"); + TextField(zexofs+30, zeyofs+30, 100, nstr2, ctf == 3 ? cb : 0); + GotoXY(zexofs+7, zeyofs+42); printstring("Delay:"); + TextField(zexofs+30, zeyofs+40, 100, nstr3, ctf == 4 ? cb : 0); + GotoXY(zexofs+4, zeyofs+52); printstring("Entity:"); + TextField(zexofs+30, zeyofs+50, 100, nstr4, ctf == 5 ? cb : 0); + CheckBox(zexofs+20, zeyofs+61, zones[i].aaa); + GotoXY(zexofs+31, zeyofs+62); printstring("Allow Adjacent Activation"); + Button(zexofs+99, zeyofs+71, "OK"); + GotoXY(zexofs+12, zeyofs+73); printstring("Zone"); + GotoXY(zexofs+30, zeyofs+73); + sprintf(strbuf,"%d",i); printstring(strbuf); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>zexofs+30 && mxzeyofs+10 && myzexofs+30 && mxzeyofs+20 && myzexofs+30 && mxzeyofs+30 && myzexofs+30 && mxzeyofs+40 && myzexofs+30 && mxzeyofs+50 && myzexofs+20 && mxzeyofs+61 && myzexofs+99 && mxzeyofs+71 && my(zexofs+zexsize-9) && (mx(zeyofs+1) && (myzexofs && mxzeyofs && my<(zeyofs+9) && !moving) + { + moving=1; + mxo=mx-zexofs; + myo=my-zeyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + if (last_pressed==SCAN_UP) + { + zones[i].script=atoi(nstr1); + zones[i].percent=atoi(nstr2); + zones[i].delay=atoi(nstr3); + zones[i].entityscript=atoi(nstr4); + if (i<255) i++; else i=0; + last_pressed=0; key[SCAN_UP]=0; + sprintf(nstr1, "%d", zones[i].script); + sprintf(nstr2, "%d", zones[i].percent); + sprintf(nstr3, "%d", zones[i].delay); + sprintf(nstr4, "%d", zones[i].entityscript); + continue; + } + if (last_pressed==SCAN_DOWN) + { + zones[i].script=atoi(nstr1); + zones[i].percent=atoi(nstr2); + zones[i].delay=atoi(nstr3); + zones[i].entityscript=atoi(nstr4); + if (i) i--; else i=255; + last_pressed=0; key[SCAN_DOWN]=0; + sprintf(nstr1, "%d", zones[i].script); + sprintf(nstr2, "%d", zones[i].percent); + sprintf(nstr3, "%d", zones[i].delay); + sprintf(nstr4, "%d", zones[i].entityscript); + continue; + } + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=1; str=zones[i].name; break; + case 1: ctf=2; str=nstr1; break; + case 2: ctf=3; str=nstr2; break; + case 3: ctf=4; str=nstr3; break; + case 4: ctf=5; str=nstr4; break; + case 5: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=5; str=nstr4; break; + case 1: ctf=0; str=0; break; + case 2: ctf=1; str=zones[i].name; break; + case 3: ctf=2; str=nstr1; break; + case 4: ctf=3; str=nstr2; break; + case 5: ctf=4; str=nstr3; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + + } while (!done); + curzone=i; + zones[i].script=atoi(nstr1); + zones[i].percent=atoi(nstr2); + zones[i].delay=atoi(nstr3); + zones[i].entityscript=atoi(nstr4); +} + +int exsize=180, eysize=175; +int exofs=70, eyofs=30; + +void EntityEditor(int i) +{ char done=0, moving=0; + int mxo, myo, cursorblink; + char ctf=0, cb=0, c, t, *str; + 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]; + + sprintf(nstr1, "%d", entity[i].x); + sprintf(nstr2, "%d", entity[i].y); + sprintf(nstr3, "%d", entity[i].chrindex); + sprintf(nstr4, "%d", entity[i].speed); + sprintf(nstr5, "%d", entity[i].actscript); + sprintf(nstr6, "%d", entity[i].movecode); + sprintf(nstr7, "%d", entity[i].step); + sprintf(nstr8, "%d", entity[i].data2); + sprintf(nstr9, "%d", entity[i].data3); + sprintf(nstr10, "%d", entity[i].delay); + sprintf(nstr11, "%d", entity[i].data5); + sprintf(nstr12, "%d", entity[i].data6); + sprintf(nstr13, "%d", entity[i].movescript); + last_pressed=0; + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + exofs = (mx-mxo); + eyofs = (my-myo); + if (!mb) moving=0; + if (exofs<16) exofs = 16; + if (eyofs<16) eyofs = 16; + if (exofs+exsize>335) exofs = 336-exsize; + if (eyofs+eysize>sy+16) eyofs = (sy+16)-eysize; + } + + Window(exofs, eyofs, exofs+exsize, eyofs+eysize, "Entity Editor"); + GotoXY(exofs+7, eyofs+13); printstring("Desc:"); + TextField(exofs+26, eyofs+11, 80, entity[i].desc, ctf == 1 ? cb : 0); + GotoXY(exofs+19, eyofs+23); printstring("X:"); + TextField(exofs+26, eyofs+21, 80, nstr1, ctf == 2 ? cb : 0); + GotoXY(exofs+19, eyofs+33); printstring("Y:"); + TextField(exofs+26, eyofs+31, 80, nstr2, ctf == 3 ? cb : 0); + GotoXY(exofs+11, eyofs+43); printstring("CHR:"); + TextField(exofs+26, eyofs+41, 80, nstr3, ctf == 4 ? cb : 0); + + // *** + // entity image goes here (just above chr list button) + // *** + + BigButton(exofs+116, eyofs+61, "CHR List"); + BigButton(exofs+115, eyofs+153, "Scripts"); + GotoXY(exofs+2, eyofs+155); printstring("Movescript:"); + HLine(exofs+1, eyofs+73, 178, white); + GotoXY(exofs+3, eyofs+53); printstring("Speed:"); + TextField(exofs+26, eyofs+51, 80, nstr4, ctf == 5 ? cb : 0); + TextField(exofs+26, eyofs+61, 80, nstr5, ctf == 6 ? cb : 0); + GotoXY(exofs+107, eyofs+79); printstring("Is Obstruction"); + CheckBox(exofs+161, eyofs+87, entity[i].obsmode1); + GotoXY(exofs+102, eyofs+88); printstring("Is Obstructable"); + CheckBox(exofs+161, eyofs+78, entity[i].obsmode2); + GotoXY(exofs+24, eyofs+79); printstring("Auto Face"); + CheckBox(exofs+61, eyofs+78, entity[i].face); + GotoXY(exofs+10, eyofs+88); printstring("Activ. Method"); + CheckBox(exofs+61, eyofs+87, entity[i].actm); + HLine(exofs+1, eyofs+98, 178, white); + GotoXY(exofs+126, eyofs+166); printstring("Entity"); + GotoXY(exofs+6, eyofs+104); printstring("Move Code:"); + TextField(exofs+47, eyofs+103, 80, nstr6, ctf == 7 ? cb : 0); + TextField(exofs+30, eyofs+115, 40, nstr7, ctf == 8 ? cb : 0); + TextField(exofs+30, eyofs+125, 40, nstr8, ctf == 9 ? cb : 0); + TextField(exofs+30, eyofs+135, 40, nstr9, ctf == 10 ? cb : 0); + TextField(exofs+113, eyofs+115, 40, nstr10, ctf == 11 ? cb : 0); + TextField(exofs+113, eyofs+125, 40, nstr11, ctf == 12 ? cb : 0); + TextField(exofs+113, eyofs+135, 40, nstr12, ctf == 13 ? cb : 0); + HLine(exofs+1, eyofs+148, 178, white); + TextField(exofs+46, eyofs+153, 60, nstr13, ctf == 14 ? cb : 0); + GotoXY(exofs+5, eyofs+63); printstring("Activ:"); + GotoXY(exofs+152, eyofs+166); + sprintf(strbuf, "%d/%d", i, entities-1); printstring(strbuf); + entity[i].movecode=atoi(nstr6); + if (ctf!=4) entity[i].chrindex=atoi(nstr3); + + switch (entity[i].movecode) + { + case 0: GotoXY(exofs+131, eyofs+104); printstring("Stopped"); break; + case 1: GotoXY(exofs+131, eyofs+104); printstring("Wander"); + GotoXY(exofs+11, eyofs+116); printstring("Step:"); + GotoXY(exofs+90, eyofs+116); printstring("Delay:"); break; + case 2: GotoXY(exofs+131, eyofs+104); printstring("Wander Zone"); + GotoXY(exofs+11, eyofs+116); printstring("Step:"); + GotoXY(exofs+90, eyofs+116); printstring("Delay:"); + GotoXY(exofs+10, eyofs+126); printstring("Zone:"); break; + case 3: GotoXY(exofs+131, eyofs+104); printstring("Wander Box"); + GotoXY(exofs+11, eyofs+116); printstring("Step:"); + GotoXY(exofs+90, eyofs+116); printstring("Delay:"); + GotoXY(exofs+21, eyofs+126); printstring("X1:"); + GotoXY(exofs+21, eyofs+136); printstring("Y1:"); + GotoXY(exofs+102, eyofs+126); printstring("X2:"); + GotoXY(exofs+102, eyofs+136); printstring("Y2:"); break; + case 4: GotoXY(exofs+131, eyofs+104); printstring("Scripted"); break; + } + switch (entity[i].actm) + { + case 0: GotoXY(exofs+72, eyofs+88); printstring("Actv"); break; + case 1: GotoXY(exofs+72, eyofs+88); printstring("Adjc"); break; + } + + if (chrs[entity[i].chrindex].frame) + TCopySprite(exofs+143-(chrs[entity[i].chrindex].fx/2), + eyofs+31-(chrs[entity[i].chrindex].fy/2), + chrs[entity[i].chrindex].fx, chrs[entity[i].chrindex].fy, + chrs[entity[i].chrindex].frame); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>exofs+26 && mxeyofs+11 && myexofs+26 && mxeyofs+21 && myexofs+26 && mxeyofs+31 && myexofs+26 && mxeyofs+41 && myexofs+116 && mxeyofs+61 && myexofs+26 && mxeyofs+51 && myexofs+26 && mxeyofs+61 && myexofs+115 && mxeyofs+153 && myexofs+161 && mxeyofs+87 && myexofs+161 && mxeyofs+78 && myexofs+61 && mxeyofs+78 && myexofs+61 && mxeyofs+87 && myexofs+47 && mxeyofs+103 && myexofs+30 && mxeyofs+115 && myexofs+30 && mxeyofs+125 && myexofs+30 && mxeyofs+135 && myexofs+113 && mxeyofs+115 && myexofs+113 && mxeyofs+125 && myexofs+113 && mxeyofs+135 && myexofs+46 && mxeyofs+153 && my(exofs+exsize-9) && (mx(eyofs+1) && (myexofs && mxeyofs && my<(eyofs+9) && !moving) + { + moving=1; + mxo=mx-exofs; + myo=my-eyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_UP) + { + entity[i].x=atoi(nstr1); + entity[i].y=atoi(nstr2); + entity[i].chrindex=atoi(nstr3); + entity[i].speed=atoi(nstr4); + entity[i].actscript=atoi(nstr5); + entity[i].movecode=atoi(nstr6); + entity[i].step=atoi(nstr7); + entity[i].data2=atoi(nstr8); + entity[i].data3=atoi(nstr9); + entity[i].delay=atoi(nstr10); + entity[i].data5=atoi(nstr11); + entity[i].data6=atoi(nstr12); + entity[i].movescript=atoi(nstr13); + + if (i= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + clxofs = (mx-mxo); + clyofs = (my-myo); + if (!mb) moving=0; + if (clxofs<16) clxofs = 16; + if (clyofs<16) clyofs = 16; + if (clxofs+clxsize>335) clxofs = 336-clxsize; + if (clyofs+clysize>sy+16) clyofs = (sy+16)-clysize; + } + + Window(clxofs, clyofs, clxofs+clxsize, clyofs+clysize, "Entity CHR Reference Index"); + TextField(clxofs+14, clyofs+11, 120, chrlist[base].t, ctf == 1 ? cb : 0); + TextField(clxofs+14, clyofs+22, 120, chrlist[base+1].t, ctf == 2 ? cb : 0); + TextField(clxofs+14, clyofs+33, 120, chrlist[base+2].t, ctf == 3 ? cb : 0); + TextField(clxofs+14, clyofs+44, 120, chrlist[base+3].t, ctf == 4 ? cb : 0); + TextField(clxofs+14, clyofs+55, 120, chrlist[base+4].t, ctf == 5 ? cb : 0); + Button(clxofs+137, clyofs+65, "OK"); + Button(clxofs+137, clyofs+10, "Browse"); + Button(clxofs+137, clyofs+21, "Browse"); + Button(clxofs+137, clyofs+32, "Browse"); + Button(clxofs+137, clyofs+43, "Browse"); + Button(clxofs+137, clyofs+54, "Browse"); + GotoXY(clxofs+3, clyofs+11); sprintf(strbuf,"%d:", base); printstring(strbuf); + GotoXY(clxofs+3, clyofs+22); sprintf(strbuf,"%d:", base+1); printstring(strbuf); + GotoXY(clxofs+3, clyofs+33); sprintf(strbuf,"%d:", base+2); printstring(strbuf); + GotoXY(clxofs+3, clyofs+44); sprintf(strbuf,"%d:", base+3); printstring(strbuf); + GotoXY(clxofs+3, clyofs+55); sprintf(strbuf,"%d:", base+4); printstring(strbuf); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>clxofs+14 && mxclyofs+11 && myclxofs+14 && mxclyofs+22 && myclxofs+14 && mxclyofs+33 && myclxofs+14 && mxclyofs+44 && myclxofs+14 && mxclyofs+55 && myclxofs+137 && mxclyofs+65 && myclxofs+137 && mxclyofs+10 && myclxofs+137 && mxclyofs+21 && myclxofs+137 && mxclyofs+32 && myclxofs+137 && mxclyofs+43 && myclxofs+137 && mxclyofs+54 && my(clxofs+clxsize-9) && (mx(clyofs+1) && (myclxofs && mxclyofs && my<(clyofs+9) && !moving) + { + moving=1; + mxo=mx-clxofs; + myo=my-clyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + if (key[SCAN_UP]) + { + key[SCAN_UP]=0; + if (base) base--; + last_pressed=0; + continue; + } + if (key[SCAN_DOWN]) + { + key[SCAN_DOWN]=0; + if (base<95) base++; + last_pressed=0; + continue; + } + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=1; str=chrlist[base].t; break; + case 1: ctf=2; str=chrlist[base+1].t; break; + case 2: ctf=3; str=chrlist[base+2].t; break; + case 3: ctf=4; str=chrlist[base+3].t; break; + case 4: ctf=5; str=chrlist[base+4].t; break; + case 5: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=5; str=chrlist[base].t; break; + case 1: ctf=0; str=chrlist[base].t; break; + case 2: ctf=1; str=chrlist[base+1].t; break; + case 3: ctf=2; str=chrlist[base+2].t; break; + case 4: ctf=3; str=chrlist[base+3].t; break; + case 5: ctf=4; str=chrlist[base+4].t; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } while (!done); +} + +int msxsize=181, msysize=77; +int msxofs=70, msyofs=50; +char base1=0; + +void MoveScriptDialog() +{ char done=0, moving=0; + int mxo, myo, cursorblink; + char ctf=0, cb=0, c, t, *str; + + last_pressed=0; + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + msxofs = (mx-mxo); + msyofs = (my-myo); + if (!mb) moving=0; + if (msxofs<16) msxofs = 16; + if (msyofs<16) msyofs = 16; + if (msxofs+msxsize>335) msxofs = 336-msxsize; + if (msyofs+msysize>sy+16) msyofs = (sy+16)-msysize; + } + + Window(msxofs, msyofs, msxofs+msxsize, msyofs+msysize, "Movement Script Editor"); + TextField(msxofs+15, msyofs+12, 160, ms[base1].t, ctf == 1 ? cb : 0); + TextField(msxofs+15, msyofs+22, 160, ms[base1+1].t, ctf == 2 ? cb : 0); + TextField(msxofs+15, msyofs+32, 160, ms[base1+2].t, ctf == 3 ? cb : 0); + TextField(msxofs+15, msyofs+42, 160, ms[base1+3].t, ctf == 4 ? cb : 0); + TextField(msxofs+15, msyofs+52, 160, ms[base1+4].t, ctf == 5 ? cb : 0); + Button(msxofs+146, msyofs+63, "OK"); + GotoXY(msxofs+3, msyofs+11); sprintf(strbuf,"%d:", base1); printstring(strbuf); + GotoXY(msxofs+3, msyofs+22); sprintf(strbuf,"%d:", base1+1); printstring(strbuf); + GotoXY(msxofs+3, msyofs+33); sprintf(strbuf,"%d:", base1+2); printstring(strbuf); + GotoXY(msxofs+3, msyofs+44); sprintf(strbuf,"%d:", base1+3); printstring(strbuf); + GotoXY(msxofs+3, msyofs+55); sprintf(strbuf,"%d:", base1+4); printstring(strbuf); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>msxofs+15 && mxmsyofs+12 && mymsxofs+15 && mxmsyofs+22 && mymsxofs+15 && mxmsyofs+32 && mymsxofs+15 && mxmsyofs+42 && mymsxofs+15 && mxmsyofs+52 && mymsxofs+146 && mxmsyofs+63 && my(msxofs+msxsize-9) && (mx(msyofs+1) && (mymsxofs && mxmsyofs && my<(msyofs+9) && !moving) + { + moving=1; + mxo=mx-msxofs; + myo=my-msyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + if (key[SCAN_UP]) + { + key[SCAN_UP]=0; + if (base1) base1--; + last_pressed=0; + continue; + } + if (key[SCAN_DOWN]) + { + key[SCAN_DOWN]=0; + if (base1<95) base1++; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=1; str=ms[base1].t; break; + case 1: ctf=2; str=ms[base1+1].t; break; + case 2: ctf=3; str=ms[base1+2].t; break; + case 3: ctf=4; str=ms[base1+3].t; break; + case 4: ctf=5; str=ms[base1+4].t; break; + case 5: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=5; str=ms[base1+4].t; break; + case 1: ctf=0; str=0; break; + case 2: ctf=1; str=ms[base1].t; break; + case 3: ctf=2; str=ms[base1+1].t; break; + case 4: ctf=3; str=ms[base1+2].t; break; + case 5: ctf=4; str=ms[base1+3].t; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } while (!done); +} + +int prxsize=150, prysize=80; +int prxofs=50, pryofs=60; + +void MapPropertiesDialog() +{ char done=0, moving=0; + int mxo, myo, cursorblink; + char ctf=0, cb=0, c, t, *str; + + last_pressed=0; + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + prxofs = (mx-mxo); + pryofs = (my-myo); + if (!mb) moving=0; + if (prxofs<16) prxofs = 16; + if (pryofs<16) pryofs = 16; + if (prxofs+prxsize>335) prxofs = 336-prxsize; + if (pryofs+prysize>sy+16) pryofs = (sy+16)-prysize; + } + + Window(prxofs, pryofs, prxofs+prxsize, pryofs+prysize, "MAP Properties"); + GotoXY(prxofs+10, pryofs+23); printstring("Music:"); + TextField(prxofs+33, pryofs+11, 112, mapname, ctf == 1 ? cb : 0); + TextField(prxofs+33, pryofs+21, 112, musname, ctf == 2 ? cb : 0); + GotoXY(prxofs+18, pryofs+33); printstring("VSP:"); + TextField(prxofs+33, pryofs+31, 112, vspname, ctf == 3 ? cb : 0); + GotoXY(prxofs+3, pryofs+43); printstring("rstring:"); + TextField(prxofs+33, pryofs+41, 112, rstring, ctf == 4 ? cb : 0); + BigButton(prxofs+97, pryofs+56, "Resize MAP"); + HLine(prxofs+1, pryofs+53, 148, white); + GotoXY(prxofs+3, pryofs+58); printstring("xsize:"); + sprintf(strbuf,"%d",layer[0].sizex); printstring(strbuf); + GotoXY(prxofs+49, pryofs+58); printstring("ysize:"); + sprintf(strbuf,"%d",layer[0].sizey); printstring(strbuf); + Button(prxofs+117, pryofs+67, "OK"); + GotoXY(prxofs+16, pryofs+13); printstring("MAP:"); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>prxofs+33 && mxpryofs+11 && myprxofs+33 && mxpryofs+21 && myprxofs+33 && mxpryofs+31 && myprxofs+33 && mxpryofs+41 && myprxofs+97 && mxpryofs+56 && myprxofs+117 && mxpryofs+67 && my(prxofs+prxsize-9) && (mx(pryofs+1) && (myprxofs && mxpryofs && my<(pryofs+9) && !moving) + { + moving=1; + mxo=mx-prxofs; + myo=my-pryofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=1; str=mapname; break; + case 1: ctf=2; str=musname; break; + case 2: ctf=3; str=vspname; break; + case 3: ctf=4; str=rstring; break; + case 4: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=4; str=rstring; break; + case 1: ctf=0; str=0; break; + case 2: ctf=1; str=mapname; break; + case 3: ctf=2; str=musname; break; + case 4: ctf=3; str=vspname; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + + } while (!done); + +} + +int rsxsize=134, rsysize=44; +int rsxofs=20, rsyofs=20; + +static void PutByte(byte *to, byte v, int x, int y, int w, int h) +{ + if (x<0 || x>=w || y<0 || y>=h) + return; + + to[(y*w)+x]=v; +} + +static byte GetByte(byte *from, int x, int y, int w, int h) +{ + if (x<0 || x>=w || y<0 || y>=h) + return 0; + + return from[(y*w)+x]; +} + +static void PutWord(word *to, word v, int x, int y, int w, int h) +{ + if (x<0 || x>=w || y<0 || y>=h) + return; + + to[(y*w)+x]=v; +} + +static word GetWord(word *from, int x, int y, int w, int h) +{ + if (x<0 || x>=w || y<0 || y>=h) + return 0; + + return from[(y*w)+x]; +} + +void ResizeMapDialog() +{ char done=0, moving=0; + int mxo, myo, cursorblink, basex, basey, i; //, xl, yl; + char ctf=0, cb=0, c, t; + char *str, *tb; //, *s1, *d1; + char nstr1[80], nstr2[80]; + word *tbw; //, *s=NULL,*d=NULL; + //int temp_width; + int a,b; + + basex=layer[0].sizex; + basey=layer[0].sizey; + sprintf(nstr1, "%d", basex); + sprintf(nstr2, "%d", basey); + last_pressed=0; + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + rsxofs = (mx-mxo); + rsyofs = (my-myo); + if (!mb) moving=0; + if (rsxofs<16) rsxofs = 16; + if (rsyofs<16) rsyofs = 16; + if (rsxofs+rsxsize>335) rsxofs = 336-rsxsize; + if (rsyofs+rsysize>sy+16) rsyofs = (sy+16)-rsysize; + } + + Window(rsxofs, rsyofs, rsxofs+rsxsize, rsyofs+rsysize, "Resize MAP"); + GotoXY(rsxofs+4, rsyofs+12); printstring("Base X:"); + GotoXY(rsxofs+4, rsyofs+22); printstring("Base Y:"); + TextField(rsxofs+30, rsyofs+10, 100, nstr1, ctf == 1 ? cb : 0); + TextField(rsxofs+30, rsyofs+20, 100, nstr2, ctf == 2 ? cb : 0); + Button(rsxofs+69, rsyofs+31, "Resize"); + Button(rsxofs+101, rsyofs+31, "Cancel"); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>rsxofs+30 && mxrsyofs+10 && myrsxofs+30 && mxrsyofs+20 && myrsxofs+69 && mxrsyofs+31 && myrsxofs+101 && mxrsyofs+31 && my(rsxofs+rsxsize-9) && (mx(rsyofs+1) && (myrsxofs && mxrsyofs && my<(rsyofs+9) && !moving) + { + moving=1; + mxo=mx-rsxofs; + myo=my-rsyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=1; str=nstr1; break; + case 1: ctf=2; str=nstr2; break; + case 2: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=2; str=nstr2; break; + case 1: ctf=0; str=0; break; + case 2: ctf=1; str=nstr1; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } while (!done); + basex=atoi(nstr1); + basey=atoi(nstr2); +} + +int cdxsize=150, cdysize=45; +int cdxofs=110, cdyofs=70; +char curtrack=1; + +void CDDialog() +{ char done=0, moving=0; + int mxo, myo, cursorblink; + char ctf=0, cb=0, c, t, *str; + + last_pressed=0; + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + cdxofs = (mx-mxo); + cdyofs = (my-myo); + if (!mb) moving=0; + if (cdxofs<16) cdxofs = 16; + if (cdyofs<16) cdyofs = 16; + if (cdxofs+cdxsize>335) cdxofs = 336-cdxsize; + if (cdyofs+cdysize>sy+16) cdyofs = (sy+16)-cdysize; + } + + Window(cdxofs, cdyofs, cdxofs+cdxsize, cdyofs+cdysize, "CD Player"); + Button(cdxofs+53, cdyofs+10, "Play"); + Button(cdxofs+53, cdyofs+21, "Stop"); + Button(cdxofs+85, cdyofs+10, "Eject"); + Button(cdxofs+85, cdyofs+21, "Close"); + Button(cdxofs+117, cdyofs+10, "Next"); + Button(cdxofs+117, cdyofs+21, "Prev"); + Button(cdxofs+117, cdyofs+32, "OK"); + GotoXY(cdxofs+4, cdyofs+18); printstring("Track "); + sprintf(strbuf,"%d",curtrack); printstring(strbuf); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>cdxofs+53 && mxcdyofs+10 && mycdxofs+53 && mxcdyofs+21 && mycdxofs+85 && mxcdyofs+10 && mycdxofs+85 && mxcdyofs+21 && mycdxofs+117 && mxcdyofs+10 && mycdxofs+117 && mxcdyofs+21 && my1) curtrack--; + while (mb) + { + ReadMouse(); + ShowPage(); + ReadMouse(); + } + WaitRelease(); continue; + } + + if ((mb==1 && mx>cdxofs+117 && mxcdyofs+32 && my(cdxofs+cdxsize-9) && (mx(cdyofs+1) && (mycdxofs && mxcdyofs && my<(cdyofs+9) && !moving) + { + moving=1; + mxo=mx-cdxofs; + myo=my-cdyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } while (!done); +} + +int ntxsize=130, nytsize=51; +int ntxofs=110, ntyofs=70; + +void NoticeDialog() +{ char done=0, moving=0; + int mxo, myo, cursorblink; + char ctf=0, cb=0, c, t, *str; + + last_pressed=0; + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + ntxofs = (mx-mxo); + ntyofs = (my-myo); + if (!mb) moving=0; + if (ntxofs<16) ntxofs = 16; + if (ntyofs<16) ntyofs = 16; + if (ntxofs+ntxsize>335) ntxofs = 336-ntxsize; + if (ntyofs+nytsize>sy+16) ntyofs = (sy+16)-nytsize; + } + + Window(ntxofs, ntyofs, ntxofs+ntxsize, ntyofs+nytsize, "Notice!"); + GotoXY(ntxofs+20, ntyofs+20); printstring("Don't forget to add this"); + GotoXY(ntxofs+14, ntyofs+26); printstring("layer to the Render String!"); + Button(ntxofs+50, ntyofs+36, "OK"); + GotoXY(ntxofs+25, ntyofs+14); printstring("Layer has been added."); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if ((mb==1 && mx>ntxofs+50 && mxntyofs+36 && my(ntxofs+ntxsize-9) && (mx(ntyofs+1) && (myntxofs && mxntyofs && my<(ntyofs+9) && !moving) + { + moving=1; + mxo=mx-ntxofs; + myo=my-ntyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } while (!done); +} + +int oxsize=150, oysize=98; +int oxofs=120, oyofs=70; +extern char vcedprog[80]; + +void OptionsDialog() +{ char done=0, moving=0; + int mxo, myo, cursorblink; + char ctf=0, cb=0, c, t, *str; + char nstr1[80], nstr2[80], nstr3[80], nstr4[80]; + + sprintf(nstr1, "%d", winbg); + sprintf(nstr2, "%d", titlebg); + sprintf(nstr3, "%d", brightw); + sprintf(nstr4, "%d", darkw); + last_pressed=0; + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + oxofs = (mx-mxo); + oyofs = (my-myo); + if (!mb) moving=0; + if (oxofs<16) oxofs = 16; + if (oyofs<16) oyofs = 16; + if (oxofs+oxsize>335) oxofs = 336-oxsize; + if (oyofs+oysize>sy+16) oyofs = (sy+16)-oysize; + } + + Window(oxofs, oyofs, oxofs+oxsize, oyofs+oysize, "MapEd Options"); + GotoXY(oxofs+16, oyofs+12); printstring("Smooth Scroll"); + CheckBox(oxofs+5, oyofs+11, scrollmode); + GotoXY(oxofs+16, oyofs+20); printstring("Tile Highlight"); + CheckBox(oxofs+5, oyofs+19, mh); + GotoXY(oxofs+38, oyofs+31); printstring("Window Background"); + TextField(oxofs+5, oyofs+29, 30, nstr1, ctf == 1 ? cb : 0); + TextField(oxofs+5, oyofs+39, 30, nstr2, ctf == 2 ? cb : 0); + GotoXY(oxofs+38, oyofs+41); printstring("Titlebar Background"); + CheckBox(oxofs+74, oyofs+11, vm); + GotoXY(oxofs+84, oyofs+12); printstring("320x240 driver"); + CheckBox(oxofs+74, oyofs+19, mouse_scroll); + GotoXY(oxofs+84, oyofs+20); printstring("Mouse Scrolling"); + TextField(oxofs+5, oyofs+49, 30, nstr3, ctf == 3 ? cb : 0); + TextField(oxofs+5, oyofs+59, 30, nstr4, ctf == 4 ? cb : 0); + GotoXY(oxofs+38, oyofs+51); printstring("White"); + GotoXY(oxofs+38, oyofs+61); printstring("Shadow"); + Button(oxofs+60, oyofs+85, "OK"); + HLine(oxofs+1, oyofs+71, 148, white); + GotoXY(oxofs+3, oyofs+76); printstring("Editor:"); + TextField(oxofs+28, oyofs+74, 118, vcedprog, ctf == 5 ? cb : 0); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>oxofs+5 && mxoyofs+11 && my>4; xwin=xwin<<4; + ywin=ywin>>4; ywin=ywin<<4; + scrollmode ^= 1; WaitRelease(); continue; + } + + if (mb==1 && mx>oxofs+5 && mxoyofs+19 && myoxofs+5 && mxoyofs+29 && myoxofs+5 && mxoyofs+39 && myoxofs+74 && mxoyofs+11 && myoxofs+74 && mxoyofs+19 && myoxofs+5 && mxoyofs+49 && myoxofs+5 && mxoyofs+59 && myoxofs+60 && mxoyofs+85 && myoxofs+28 && mxoyofs+74 && my(oxofs+oxsize-9) && (mx(oyofs+1) && (myoxofs && mxoyofs && my<(oyofs+9) && !moving) + { + moving=1; + mxo=mx-oxofs; + myo=my-oyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=1; str=nstr1; break; + case 1: ctf=2; str=nstr2; break; + case 2: ctf=3; str=nstr3; break; + case 3: ctf=4; str=nstr4; break; + case 4: ctf=5; str=vcedprog; break; + case 5: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=5; str=vcedprog; break; + case 1: ctf=0; str=0; break; + case 2: ctf=1; str=nstr1; break; + case 3: ctf=2; str=nstr2; break; + case 4: ctf=3; str=nstr3; break; + case 5: ctf=4; str=nstr4; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } while (!done); + winbg=atoi(nstr1); + titlebg=atoi(nstr2); + brightw=atoi(nstr3); + darkw=atoi(nstr4); +} + +int vcexsize=200, vceysize=60; +int vcexofs=76, vceyofs=70; + +void VCNotify(char *msg) +{ char done=0, moving=0; + int mxo, myo, cursorblink; + char ctf=0, cb=0, c, t, *str; + + last_pressed=0; + do + { + RenderMap(); + RenderGUI(); + + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + vcexofs = (mx-mxo); + vceyofs = (my-myo); + if (!mb) moving=0; + if (vcexofs<16) vcexofs = 16; + if (vceyofs<16) vceyofs = 16; + if (vcexofs+vcexsize>335) vcexofs = 336-vcexsize; + if (vceyofs+vceysize>sy+16) vceyofs = (sy+16)-vceysize; + } + + Window(vcexofs, vceyofs, vcexofs+vcexsize, vceyofs+vceysize, "VergeC Error Report"); + Button(vcexofs+85, vceyofs+41, "OK"); + GotoXY(vcexofs+29, vceyofs+17); printstring("VCC has reported the following error:"); + GotoXY(vcexofs+100-(pixels(msg)/2), vceyofs+23); printstring(msg); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if ((mb==1 && mx>vcexofs+85 && mxvceyofs+41 && my(vcexofs+vcexsize-9) && (mx(vceyofs+1) && (myvcexofs && mxvceyofs && my<(vceyofs+9) && !moving) + { + moving=1; + mxo=mx-vcexofs; + myo=my-vceyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } while (!done); +} diff --git a/16/v2/source/verge/MAPED/GUI.H b/16/v2/source/verge/MAPED/GUI.H new file mode 100644 index 00000000..1662db7f --- /dev/null +++ b/16/v2/source/verge/MAPED/GUI.H @@ -0,0 +1,64 @@ +/* +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. +*/ + +#ifndef GUI_INC +#define GUI_INC + +extern int amxofs, amyofs; +extern int mmxofs, mmyofs; +extern int cnxofs, cnyofs; +extern int lmxofs, lmyofs; +extern int lvxofs, lvyofs; +extern int vaxofs, vayofs; +extern int mpxofs, mpyofs; +extern int zexofs, zeyofs; +extern int exofs, eyofs; +extern int prxofs, pryofs; +extern int rsxofs, rsyofs; + +extern void CheckMessageExpirations(); +extern void Message(char *text, int duration); +extern void DrawScreenControls(); +extern void RenderMessages(); +extern void RenderGUI(); +extern void DoMainMenu(); +extern void MainMenu(int dx, int dy); +#define byte unsigned char +extern byte TileCmp(byte *one, byte *two); +extern void ImageToLayer(); +extern void Destroyer(); +extern void LayersSubMenu(int dx, int dy); +extern void ExecuteSubMenu(int dx, int dy); +extern void AddLayer(); +extern void EditLayerProperties(); +extern void NewMAP(); +extern void About(); +extern int Confirm(char *message); +extern void LoadMAPDialog(); +extern void LoadVSPDialog(); +extern void MPDialog(); +extern void ZoneEdDialog(); +extern void EntityEditor(int i); +extern void CHRList(); +extern void MoveScriptDialog(); +extern void MapPropertiesDialog(); +extern void ResizeMapDialog(); +extern void CDDialog(); +extern void NoticeDialog(); +extern void OptionsDialog(); +extern void VCNotify(char *msg); + +#endif // GUI_INC diff --git a/16/v2/source/verge/MAPED/GUICOMP.C b/16/v2/source/verge/MAPED/GUICOMP.C new file mode 100644 index 00000000..e9f87795 --- /dev/null +++ b/16/v2/source/verge/MAPED/GUICOMP.C @@ -0,0 +1,137 @@ +/* +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. +*/ + +// Additional code by Richard Lau (aka Ric) + +#include "config.h" // Colour definitions +#include "vdriver.h" // Video driver functions +#include "smalfont.h" + +// ================================= Code ==================================== + +void stdwindow(int x1, int y1, int x2, int y2) +{ + FilledBox(x1, y1, x2-x1, y2-y1, winbg); + HLine(x1, y1, x2-x1, black); /* -- ric: 13/Jun/98 -- */ + VLine(x1, y1, y2-y1, black); /* Outline window in black */ + HLine(x1+1, y2-1, x2-x1-1, black); + VLine(x2-1, y1+1, y2-y1-1, black); + + HLine(x1+1, y1+1, x2-x1-2, brightw); + VLine(x1+1, y1+1, y2-y1-2, brightw); + HLine(x1+2, y2-2, x2-x1-3, darkw); + VLine(x2-2, y1+2, y2-y1-3, darkw); +} + +void Window(int x1, int y1, int x2, int y2, char *title) +{ + FilledBox(x1, y1, x2-x1, y2-y1, winbg); + FilledBox(x1, y1, x2-x1, 8, titlebg); + HLine(x1, y1, x2-x1, brightw); + VLine(x1, y1, y2-y1, brightw); + HLine(x1+1, y2-1, x2-x1-1, darkw); + VLine(x2-1, y1+1, y2-y1-1, darkw); + FilledBox(x2-8, y1+2, 5, 5, winbg); + HLine(x2-8, y1+2, 6, brightw); + VLine(x2-8, y1+2, 5, brightw); + HLine(x2-7, y1+6, 4, darkw); + VLine(x2-3, y1+3, 4, darkw); + + GotoXY(x1+2, y1+2); + printstring(title); +} + +void CheckBox(int x, int y, char checked) +{ + FilledBox(x, y, 7, 6, 0); + HLine(x, y, 8, darkw); + VLine(x, y, 7, darkw); + HLine(x+1, y+6, 7, brightw); + VLine(x+7, y+1, 5, brightw); + if (checked) + { + GotoXY(x+2, y+2); + printstring("*"); + } +} + +void Button(int x, int y, char *str) +{ + stdwindow(x,y,x+30,y+10); +// HLine(x, y, 30, black); /* -- ric: 13/Jun/98 -- */ +// VLine(x, y, 10, black); /* Outline buttons in black */ +/* HLine(x+1, y+9, 29, black); + VLine(x+29, y+1, 9, black); + + HLine(x+1, y+1, 28, white); + VLine(x+1, y+1, 8, white); + HLine(x+2, y+8, 27, darkw); + VLine(x+28, y+2, 7, darkw); */ + GotoXY(x+(15-(pixels(str)/2)), y+2); + printstring(str); +} + +void BigButton(int x, int y, char *str) +{ + stdwindow(x,y,x+50,y+10); +// HLine(x, y, 50, black); /* -- ric: 13/Jun/98 -- */ +// VLine(x, y, 10, black); /* Outline buttons in black */ +/* HLine(x+1, y+9, 49, black); + VLine(x+49, y+1, 9, black); + + HLine(x+1, y+1, 48, white); + VLine(x+1, y+1, 8, white); + HLine(x+2, y+8, 47, darkw); + VLine(x+48, y+2, 7, darkw); */ + GotoXY(x+(25-(pixels(str)/2)), y+2); + printstring(str); +} + +void ButtonPressed(int x, int y, char *str) +/* -- ric: 13/Jun/98 -- */ +/* Draws a depressed button */ +{ + stdwindow(x,y,x+30,y+10); + HLine(x+1, y+1, 28, darkw); + VLine(x+1, y+1, 8, darkw); + HLine(x+2, y+8, 27, winbg); + VLine(x+28, y+2, 7, winbg); + GotoXY(x+1+(15-(pixels(str)/2)), y+3); + printstring(str); +} + +void BigButtonPressed(int x, int y, char *str) +{ + stdwindow(x,y,x+50,y+10); + HLine(x+1, y+1, 48, darkw); + VLine(x+1, y+1, 8, darkw); + HLine(x+2, y+8, 47, winbg); + VLine(x+48, y+2, 7, winbg); + GotoXY(x+1+(25-(pixels(str)/2)), y+3); + printstring(str); +} + +void TextField(int x, int y, int width, char *str, char blink) +{ + FilledBox(x, y, width, 9, 0); + HLine(x, y, width+1, darkw); + VLine(x, y, 9, darkw); + HLine(x+1, y+8, width-1, brightw); + VLine(x+width, y+1, 8, brightw); + GotoXY(x+2, y+2); + printstring(str); + if (blink) printstring("_"); +} diff --git a/16/v2/source/verge/MAPED/GUICOMP.H b/16/v2/source/verge/MAPED/GUICOMP.H new file mode 100644 index 00000000..1df18b69 --- /dev/null +++ b/16/v2/source/verge/MAPED/GUICOMP.H @@ -0,0 +1,29 @@ +/* +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. +*/ + +#ifndef GUICOMP_INC +#define GUICOMP_INC + +extern void stdwindow(int x1, int y1, int x2, int y2); +extern void Window(int x1, int y1, int x2, int y2, char *title); +extern void CheckBox(int x, int y, char checked); +extern void Button(int x, int y, char *str); +extern void BigButton(int x, int y, char *str); +extern void ButtonPressed(int x, int y, char *str); +extern void BigButtonPressed(int x, int y, char *str); +extern void TextField(int x, int y, int width, char *str, char blink); + +#endif // GUICOMP_INC diff --git a/16/v2/source/verge/MAPED/INTER.H b/16/v2/source/verge/MAPED/INTER.H new file mode 100644 index 00000000..9c50ae70 --- /dev/null +++ b/16/v2/source/verge/MAPED/INTER.H @@ -0,0 +1,38 @@ +/* +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. +*/ + +#if !defined(INTERINC) +#define INTERINC + +#ifdef __WATCOMC__ + #include + #define REGISTERS union REGS + #define SET_AX(r,v) (r).w.ax=(short)(v) + #define SET_BX(r,v) (r).w.bx=(short)(v) + #define SET_CX(r,v) (r).w.cx=(short)(v) + #define SET_DX(r,v) (r).w.dx=(short)(v) + #define INTERRUPT(i,r) int386((i),&(r),&(r)) +#elif defined(__DJGPP__) + #include + #define REGISTERS __dpmi_regs + #define SET_AX(r,v) (r).x.ax=(short)(v) + #define SET_BX(r,v) (r).x.bx=(short)(v) + #define SET_CX(r,v) (r).x.cx=(short)(v) + #define SET_DX(r,v) (r).x.dx=(short)(v) + #define INTERRUPT(i,r) __dpmi_int((i),&(r)) +#endif // watcom | djgpp + +#endif // INTERINC diff --git a/16/v2/source/verge/MAPED/KEYBOARD.C b/16/v2/source/verge/MAPED/KEYBOARD.C new file mode 100644 index 00000000..246db5f0 --- /dev/null +++ b/16/v2/source/verge/MAPED/KEYBOARD.C @@ -0,0 +1,84 @@ +/* +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. +*/ + +#include +#include +#include +#include "timer.h" + +// ================================= Data ==================================== + +char key[128]; +char keycode,last_pressed=0; +char codeBuffer[16]; +void (__interrupt __far *biosKeyboardHandler)(); +char handlerinstalled=0; + +unsigned char key_ascii_tbl[128] = +{ + 0, 0, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', 8, 9, + 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']', 13, 0, 'a', 's', + 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', 39, 0, 0, 92, 'z', 'x', 'c', 'v', + 'b', 'n', 'm', ',', '.', '/', 0, '*', 0, ' ', 0, 3, 3, 3, 3, 8, + 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, '-', 0, 0, 0, '+', 0, + 0, 0, 0, 127, 0, 0, 92, 3, 3, 0, 0, 0, 0, 0, 0, 0, + 13, 0, '/', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '/', 0, 0, 0, 0, 0 +}; + +unsigned char key_shift_tbl[128] = +{ + 0, 0, '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', 126, 126, + 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '{', '}', 126, 0, 'A', 'S', + 'D', 'F', 'G', 'H', 'J', 'K', 'L', ':', 34, 0, 0, '|', 'Z', 'X', 'C', 'V', + 'B', 'N', 'M', '<', '>', '?', 0, '*', 0, 1, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, '-', 0, 0, 0, '+', 0, + 0, 0, 1, 127, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 13, 0, '/', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '/', 0, 0, 0, 0, 0 +}; + +// ================================= Data ==================================== + +void __interrupt __far KeyboardHandler() +{ + keycode=inp(0x60); + if (keycode>128) + key[keycode-128]=0; + else + { + key[keycode]=1; + last_pressed=keycode; + } + idlect=0; + outp(0x20,0x20); +} + +void InitKeyboard() +{ + if (handlerinstalled) return; + + biosKeyboardHandler=_dos_getvect(0x09); + _dos_setvect(0x09, KeyboardHandler); + handlerinstalled=1; +} + +void ShutdownKeyboard() +{ + if (handlerinstalled) + _dos_setvect(0x09, biosKeyboardHandler); + handlerinstalled=0; +} diff --git a/16/v2/source/verge/MAPED/KEYBOARD.H b/16/v2/source/verge/MAPED/KEYBOARD.H new file mode 100644 index 00000000..5a2d2948 --- /dev/null +++ b/16/v2/source/verge/MAPED/KEYBOARD.H @@ -0,0 +1,115 @@ +/* +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. +*/ + +#ifndef KEYBOARD_INC +#define KEYBOARD_INC + +extern char key[128],last_pressed; +extern unsigned char key_ascii_tbl[128]; +extern unsigned char key_shift_tbl[128]; + +extern void InitKeyboard(); +extern void ShutdownKeyboard(); + +/* Constants for keyboard scan-codes */ + +#define SCAN_ESC 0x01 +#define SCAN_1 0x02 +#define SCAN_2 0x03 +#define SCAN_3 0x04 +#define SCAN_4 0x05 +#define SCAN_5 0x06 +#define SCAN_6 0x07 +#define SCAN_7 0x08 +#define SCAN_8 0x09 +#define SCAN_9 0x0a +#define SCAN_0 0x0b +#define SCAN_MINUS 0x0c +#define SCAN_EQUALS 0x0d +#define SCAN_BACKSP 0x0e +#define SCAN_TAB 0x0f +#define SCAN_Q 0x10 +#define SCAN_W 0x11 +#define SCAN_E 0x12 +#define SCAN_R 0x13 +#define SCAN_T 0x14 +#define SCAN_Y 0x15 +#define SCAN_U 0x16 +#define SCAN_I 0x17 +#define SCAN_O 0x18 +#define SCAN_P 0x19 +#define SCAN_LANGLE 0x1a +#define SCAN_RANGLE 0x1b +#define SCAN_ENTER 0x1c +#define SCAN_CTRL 0x1d +#define SCAN_A 0x1e +#define SCAN_S 0x1f +#define SCAN_D 0x20 +#define SCAN_F 0x21 +#define SCAN_G 0x22 +#define SCAN_H 0x23 +#define SCAN_J 0x24 +#define SCAN_K 0x25 +#define SCAN_L 0x26 +#define SCAN_SCOLON 0x27 +#define SCAN_QUOTA 0x28 +#define SCAN_RQUOTA 0x29 +#define SCAN_LSHIFT 0x2a +#define SCAN_BSLASH 0x2b +#define SCAN_Z 0x2c +#define SCAN_X 0x2d +#define SCAN_C 0x2e +#define SCAN_V 0x2f +#define SCAN_B 0x30 +#define SCAN_N 0x31 +#define SCAN_M 0x32 +#define SCAN_COMA 0x33 +#define SCAN_DOT 0x34 +#define SCAN_SLASH 0x35 +#define SCAN_RSHIFT 0x36 +#define SCAN_GREY_STAR 0x37 +#define SCAN_ALT 0x38 +#define SCAN_SPACE 0x39 +#define SCAN_CAPS 0x3a +#define SCAN_F1 0x3b +#define SCAN_F2 0x3c +#define SCAN_F3 0x3d +#define SCAN_F4 0x3e +#define SCAN_F5 0x3f +#define SCAN_F6 0x40 +#define SCAN_F7 0x41 +#define SCAN_F8 0x42 +#define SCAN_F9 0x43 +#define SCAN_F10 0x44 +#define SCAN_NUMLOCK 0x45 +#define SCAN_SCRLOCK 0x46 +#define SCAN_HOME 0x47 +#define SCAN_UP 0x48 +#define SCAN_PGUP 0x49 +#define SCAN_GREY_MINUS 0x4a +#define SCAN_LEFT 0x4b +#define SCAN_PAD_5 0x4c +#define SCAN_RIGHT 0x4d +#define SCAN_GREY_PLUS 0x4e +#define SCAN_END 0x4f +#define SCAN_DOWN 0x50 +#define SCAN_PGDN 0x51 +#define SCAN_INSERT 0x52 +#define SCAN_DEL 0x53 +#define SCAN_F11 0x57 +#define SCAN_F12 0x58 + +#endif // KEYBOARD_INC diff --git a/16/v2/source/verge/MAPED/MAKEFILE b/16/v2/source/verge/MAPED/MAKEFILE new file mode 100644 index 00000000..d627200b --- /dev/null +++ b/16/v2/source/verge/MAPED/MAKEFILE @@ -0,0 +1,32 @@ +# Use the C or C++ compiler +Compiler = wcc386 + +# compiler options +#comp = /oneatx /zp4 /5 /d0 +comp = /bt=dos /oneatx /5 /fp5 /wx /d0 + +Linker_options = option stack=60000 + +# Compile using dos4g or pmodew +#System = dos4g +System = pmodew + +Exe_file = maped.exe + +Objs = maped.obj config.obj gui.obj guicomp.obj mode13h.obj modex.obj keyboard.obj & + minimap.obj mouse.obj render.obj smalfont.obj ssaver.obj tileed.obj & + tilesel.obj timer.obj vdriver.obj columns.obj a_memory.obj mikmod.lib + +#################### + +maped.exe : $(Objs) + + *wlink system $(System) $(Linker_Options) name maped.exe & + file {$<} +# *pmwlite -c4 maped.exe + +.c.obj: + $(Compiler) $(comp) $< + +.asm.obj: + wasm -3pr $< diff --git a/16/v2/source/verge/MAPED/MAPED.C b/16/v2/source/verge/MAPED/MAPED.C new file mode 100644 index 00000000..9e172742 --- /dev/null +++ b/16/v2/source/verge/MAPED/MAPED.C @@ -0,0 +1,1624 @@ +/* +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. +*/ + +const char *const ME2_VERSION = "2.01a"; + +// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +// CHANGELOG: +// +// + erased valloc(), replaced with a_memory.c +// + added Log() -- output to MAPED.LOG +// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + +#include +#include + +#include +#include +#include +#include + +#include "config.h" +#include "gui.h" +#include "keyboard.h" +#include "mikmod.h" +#include "mouse.h" +#include "render.h" +#include "timer.h" +#include "vdriver.h" + +#include "ssaver.h" +#include "smalfont.h" +#include "tilesel.h" +#include "minimap.h" +#include "guicomp.h" +#include "config.h" + +#define byte unsigned char +#define word unsigned short + +// Includes for a_memory.c + +void *valloc(int amount, char *desc, int owner); +void *qvalloc(int amount); +int vfree(void *pointer); +void qvfree(void *pointer); +void FreeByOwner(int owner); +void MemReport(void); +void CheckCorruption(void); + +// ================================= Data ==================================== + +typedef struct +{ + unsigned short start; // strand start + unsigned short finish; // strand end + unsigned short delay; // tile-switch delay + unsigned short mode; // tile-animation mode +} vspanim_r; + +typedef struct +{ + char pmultx,pdivx; // parallax multiplier/divisor for X + char pmulty,pdivy; // parallax multiplier/divisor for Y + unsigned short sizex, sizey; // layer dimensions. + unsigned char trans, hline; // transparency flag | hline (raster fx) +} layer_r; + +typedef struct +{ + char name[40]; // zone name/desc + unsigned short script; // script to call thingy + unsigned short percent; // chance of executing + unsigned short delay; // step-delay + unsigned short aaa; // Accept Adjacent Activation + unsigned short entityscript; // script to call for entities +} zoneinfo; + +typedef struct +{ + char zonename[16]; // zone description + unsigned short int callevent; // event number to call + unsigned char percent; // chance (in 255) of event occurance + unsigned char delay; // step-delay before last occurance + unsigned char aaa; // accept adjacent activation + char savedesc[31]; // savegame description +} oldzone; + +typedef struct +{ + int x, y; // xwc, ywx position + word tx, ty; // xtc, ytc position + byte facing; // direction entity is facing + byte moving, movecnt; // direction entity is moving + byte frame; // bottom-line frame to display + byte specframe; // special-frame set thingo + byte chrindex, reset; // CHR index | Reset animation + byte obsmode1, obsmode2; // can be obstructed | Is an obstruction + byte speed, speedct; // entity speed, speedcount :) + byte delayct; // animation frame-delay + char *animofs, *moveofs; // anim script | move script + byte face, actm; // auto-face | activation mode + byte movecode, movescript; // movement type | movement script + byte ctr, mode; // sub-tile move ctr, mode flag (internal) + word step, delay; // step, delay + word stepctr, delayctr; // internal use counters + word data1, data2, data3; // + word data4, data5, data6; // + int actscript; // activation script + int expand1, expand2; // + int expand3, expand4; // + char desc[20]; // Entity description. +} entity_r; + +typedef struct +{ + char t[60]; +} chrlist_r; + +typedef struct +{ + char t[200]; +} movescript; + +typedef struct +{ + unsigned short x; // xwc position + unsigned short y; // ywc position + unsigned char facing; // direction entity is facing + unsigned char moving; // direction entity is moving + unsigned char movcnt; // how far left to move in this tile + unsigned char framectr; // frame sequence counter + unsigned char specframe; // special-frame set thingo + unsigned char chrindex, movecode; // CHR index / movement pattern code + unsigned char activmode, obsmode; // activation mode, obstruction mode + unsigned char v1,v2,v3; // packing stuff. + unsigned int actscript, movescript; // script references + unsigned char speed, speedct; // entity speed, speedcount :) + unsigned short step, delay, // Misc data entries + data1, data2, // More misc data + data3, data4, // yet more crappy misc data. + delayct,adjactv; // yet more internal crap + unsigned short x1,y1,x2,y2; // bounding box coordinates + unsigned char curcmd, cmdarg; // Script commands/arguments + unsigned char *scriptofs; // offset in script parsing + unsigned char face,chasing, // face player when activated | chasing + chasespeed, chasedist; // chasing variables + unsigned short cx,cy; // current-tile pos (moving adjusted) + int expand1; // always room for improvement + char entitydesc[20]; // Editing description +} oldent_r; + +zoneinfo zones[256]; // zone stuff. +layer_r layer[6]; // Array of layer data +vspanim_r vspanim[100]; // tile animation data +unsigned short vadelay[100]; // Tile animation delay ctr +oldzone tzone; // zone for oldmap-to-v2 converting +entity_r entity[256]; // Entity records. +oldent_r oldent; // entity for oldmap-to-v2 converting +byte entities=0; // number of allocated entities. +chrlist_r chrlist[100]; // Max. 100 CHRs per map. +movescript ms[100]; // move scripts arrays +byte nmchr=0; // number of active/loaded CHRs. +byte nms=0; // number of movement scripts + +char mapname[60]; // MAP filename +char vspname[60]; // VSP filemap +char rstring[20]; // render-order string +char musname[60]; // MAP default music +char numlayers; // number of layers in map +short xstart, ystart; // MAP start locations +char *obstruct, *zone; // obstruction and zone buffers +int numzones=0; // Number of active zones. +unsigned short *layers[6]; // Raw layer data +char wrap, soundokay=0; + +// -- vsp related data -- + +unsigned short numtiles; // number of allocated tiles in VSP +unsigned char *vsp; // VSP ptr +char vsp_locked=0; +char vsp_pw[8]; + +// -- map compression + +char *cb,*csrc; // compression workspace buffer +int bufsize; // how many bytes need to be written + +// -- editing related data -- + +int xwin=0, ywin=0; // Editing viewplane +short lt=0, rt=0; // left-button tile, right-button tile +char curzone=0; // current zone. +char scrollmode=0; // tile or pixel scroll modes. +char mouse_scroll=1; +char layertoggle[10]; // layer visible toggles +char el=0; // current editing layer. +char modified=0; // Current buffer modified or not. + +// -- music stuff -- + +char is_playing=0; +char cmname[60]; +UNIMOD *mf=0; + +// -- copy/paste & block fill -- + +word *copybuf=0; +int copybuf_wide=0,copybuf_deep=0; +int selx1=0, sely1=0, selx2=0, sely2=0; +int shifted=0, pasting=0; +extern char curtrack; + +char vcedprog[80]; +byte* translucency_table; //zero + +int moving_up=0,moving_down=0,moving_left=0,moving_right=0; // aen + +// ================================= Code ==================================== + +//added by zero +void LoadTransTable() +{ + FILE *fp; + + if (!translucency_table) + translucency_table=(byte *) valloc(65536,"trans tbl",0); + + fp=fopen("trans.tbl","rb"); + if (!fp) + { + vfree(translucency_table); + translucency_table=0; + return; + } + + fread(translucency_table, 65536, 1, fp); + fclose(fp); +} + +int Exist(char *fname) +{ FILE *tempf; + + tempf=fopen(fname,"rb"); + if (tempf) + { + fclose(tempf); + return 1; + } + else return 0; +} + +void err(char *str, ...) +{ + va_list argptr; + char msg[256]; + + va_start(argptr, str); + vsprintf(msg, str, argptr); + va_end(argptr); + + ShutdownVideo(); + ShutdownTimer(); + ShutdownKeyboard(); + //CD_DeInit(); // wasn't even valid! CD_Deinit() was incorrect + // Actually, Wat is by default case insensitive, so nyeh.;) + //if (curtrack != 1) //CD_Stop(); + + printf("%s \n",msg); + exit(-1); +} + +void errf(char *str, char *str1) +{ + sprintf(strbuf,str,str1); + err(strbuf); +} + +void errn(char *str, int n) +{ + sprintf(strbuf,str,n); + err(strbuf); +} + +int random(int lo, int hi) +{ + int range=hi-lo+1; + int i=rand() % range; + return i+lo; +} + +void PlayMusic(char *fname) +{ + if (!soundokay) return; + if (is_playing) + { + MD_PlayStop(); + ML_Free(mf); + is_playing=0; + } + mf=ML_LoadFN(fname); + if (!mf) + { + Message("Could not load specified music.",500); + return; + } + MP_Init(mf); + md_numchn=mf->numchn; mp_loop=1; + MD_PlayStart(); + is_playing=1; +} + +void StopMusic() +{ + if (!soundokay) return; + MD_PlayStop(); + ML_Free(mf); + is_playing=0; +} + +void LoadVSP(char *fname) +{ FILE *f; + short ver; + + if (!(f=fopen(fname,"rb"))) + errf("VSP file %s not found.",fname); + + fread(&ver, 1, 2, f); + if (ver!=2 && ver!=3) + errf("VSP file %s is not the correct VSP format.",fname); + if (ver==2) + { + fread(&pal, 1, 768, f); + set_intensity(63); + fread(&numtiles, 1, 2, f); + vsp=(char *) valloc(256*numtiles, "vsp data", 0); + fread(vsp, 256, numtiles, f); + fread(&vspanim, 8, 100, f); + fclose(f); + } + if (ver==3) + { + fread(&pal, 1, 768, f); + set_intensity(63); + fread(&numtiles, 1, 2, f); + vsp=(char *) valloc(256*numtiles, "vsp data", 0); + fread(&bufsize, 1, 4, f); + ReadCompressedLayer1(vsp, 256*numtiles, f); + fread(&vspanim, 8, 100, f); + fclose(f); + } +} + +void SaveVSP(char *fname) +{ FILE *f; + short ver; + + f=fopen(fname,"wb"); + ver=3; + fwrite(&ver, 1, 2, f); + fwrite(&pal, 1, 768, f); + fwrite(&numtiles, 1, 2, f); + cb=(char *) valloc(numtiles*256, "vsp tempbuf", 0); + bufsize=0; + WriteCompressedLayer1(vsp, numtiles*256); + fwrite(&bufsize, 1, 4, f); + fwrite(cb, 1, bufsize, f); + //free(bufsize); // what the hell??? @_@ + fwrite(&vspanim, 8, 100, f); + fclose(f); +} + +void EmitC (char c) +{ + *csrc=c; + csrc++; + bufsize++; +} + +void EmitW (short int w) +{ + char *ptr; + + ptr=(char *)&w; + *csrc=*ptr; + csrc++; + ptr++; + *csrc=*ptr; + csrc++; + bufsize+=2; +} + +void WriteCompressedLayer1(unsigned char *p, int len) +{ int i; + unsigned char byt,samect; + unsigned char repcode; + + csrc=cb; + i=0; bufsize=0; + do + { byt=p[i++]; + samect=1; + while (samect<254 && i3 || byt == 0xFF) + { + repcode=0xFF; + EmitC(repcode); + repcode=(char) samect; + EmitC(repcode); + } + EmitC(byt); + } while (i1) + { + repcode=(char) samect; + EmitC(repcode); + repcode=0xFF; + EmitC(repcode); + } + EmitW(byt); + } while (i> 1; + zone[(j*layer[0].sizex)+i]=c; + } + vfree(cb); + + // Load and convert zone data records. + + for (i=0; i<128; i++) + { + fread(&tzone, 1, sizeof tzone, f); + zones[i].script=tzone.callevent; + zones[i].percent=tzone.percent; + zones[i].delay=tzone.delay; + zones[i].aaa=tzone.aaa; + zones[i].entityscript=0; + memcpy(zones[i].name, tzone.zonename, 16); + } + + for (i=0; i<100; i++) // Load and convert CHR list + fread(&chrlist[i].t, 1, 13, f); +// DoCHRdealy(); + + fread(&entities, 1, 1, f); fseek(f, 3, 1); + memset(&entity, 0, sizeof entity); + for (i=0; i30000) + { + Message("Generating Auto-backup",150); + SaveMAP("$$BACKUP.MAP"); + SaveVSP("$$BACKUP.VSP"); + backupct=0; + } + if (idlect>8000 && !inss) + { + inss=1; + ScreenSaver(); + idlect=0; + inss=0; + } +} + +extern int difficulty; + +void SaveNewCFG() +{ FILE *f; + + f=fopen("maped.cfg","w"); + //if (nocdaudio) fprintf(f,"nocdaudio\n"); + fprintf(f,"vidmode %d \n", vm); + fprintf(f,"pad %d \n", pad); + fprintf(f,"scrollmode %d \n",scrollmode); + fprintf(f,"mouse_scroll %d \n",mouse_scroll&1); // aen + fprintf(f,"black %d \n",black); + fprintf(f,"white %d \n",brightw); + fprintf(f,"winbg %d \n",winbg); + fprintf(f,"shadow %d \n",darkw); + fprintf(f,"darkred %d \n",darkred); + fprintf(f,"titlebg %d \n",titlebg); + fprintf(f,"th %d \n", th); + fprintf(f,"mh %d \n", mh); + fprintf(f,"md_device %d \n", md_device==3?3:0); + fprintf(f,"amxofs %d \n",amxofs); + fprintf(f,"amyofs %d \n",amyofs); + fprintf(f,"mmxofs %d \n",mmxofs); + fprintf(f,"mmyofs %d \n",mmyofs); + fprintf(f,"cnxofs %d \n",cnxofs); + fprintf(f,"cnyofs %d \n",cnyofs); + fprintf(f,"lmxofs %d \n",lmxofs); + fprintf(f,"lmyofs %d \n",lmyofs); + fprintf(f,"lvxofs %d \n",lvxofs); + fprintf(f,"lvyofs %d \n",lvyofs); + fprintf(f,"mpxofs %d \n",mpxofs); + fprintf(f,"mpyofs %d \n",mpyofs); + fprintf(f,"vaxofs %d \n",vaxofs); + fprintf(f,"vayofs %d \n",vayofs); + fprintf(f,"zexofs %d \n",zexofs); + fprintf(f,"zeyofs %d \n",zeyofs); + fprintf(f,"exofs %d \n",exofs); + fprintf(f,"eyofs %d \n",eyofs); + fprintf(f,"prxofs %d \n",prxofs); + fprintf(f,"pryofs %d \n",pryofs); + fprintf(f,"rsxofs %d \n",rsxofs); + fprintf(f,"rsyofs %d \n",rsyofs); + fprintf(f,"vced %s \n",vcedprog); + fprintf(f,"difficulty %d \n",difficulty); + fclose(f); +} + +#include "controls.c" + +void ShellToDOS() +{ + ShutdownVideo(); + ShutdownKeyboard(); + ShutdownTimer(); + MD_PlayStop(); + MD_Exit(); + + system("COMMAND.COM"); + + if (!MD_Init()) + { + printf("Couldn't initialize sound: %s.\n", myerr); + delay(500); + soundokay=0; + } + if (strlen(musname)) PlayMusic(musname); + InitVideo(vm); + set_intensity(63); + InitMouse(); + InitKeyboard(); + InitTimer(); +} + +void ShellVERGE() +{ + ShutdownVideo(); + ShutdownKeyboard(); + ShutdownTimer(); + MD_PlayStop(); + MD_Exit(); + + system("VERGE"); + + if (!MD_Init()) + { + printf("Couldn't initialize sound: %s.\n", myerr); + delay(500); + soundokay=0; + } + if (strlen(musname)) PlayMusic(musname); + InitVideo(vm); + set_intensity(63); + InitMouse(); + InitKeyboard(); + InitTimer(); +} + +void ShellMAP() +{ + ShutdownVideo(); + ShutdownKeyboard(); + ShutdownTimer(); + MD_PlayStop(); + MD_Exit(); + + sprintf(strbuf,"verge %s",mapname); + system(strbuf); + + if (!MD_Init()) + { + printf("Couldn't initialize sound: %s.\n", myerr); + delay(500); + soundokay=0; + } + if (strlen(musname)) PlayMusic(musname); + InitVideo(vm); + set_intensity(63); + InitMouse(); + InitKeyboard(); + InitTimer(); +} + +void ShellEditMAP() +{ + char fn[80],*p; + + key[SCAN_ALT]=0; + key[SCAN_V]=0; + ShutdownVideo(); + ShutdownKeyboard(); + ShutdownTimer(); + MD_PlayStop(); + MD_Exit(); + + sprintf(fn,"%s",mapname); + p=fn; + while (*p) + { + if (*p=='.') *p=0; + p++; + } + sprintf(strbuf,"%s %s.vc", vcedprog, fn); + system(strbuf); + + if (!MD_Init()) + { + printf("Couldn't initialize sound: %s.\n", myerr); + delay(500); + soundokay=0; + } + if (strlen(musname)) PlayMusic(musname); + InitVideo(vm); + set_intensity(63); + InitMouse(); + InitKeyboard(); + InitTimer(); +} + +void ShellEditSystem() +{ + key[SCAN_ALT]=0; + key[SCAN_S]=0; + ShutdownVideo(); + ShutdownKeyboard(); + ShutdownTimer(); + MD_PlayStop(); + MD_Exit(); + + sprintf(strbuf,"%s system.vc", vcedprog); + system(strbuf); + + if (!MD_Init()) + { + printf("Couldn't initialize sound: %s.\n", myerr); + delay(500); + soundokay=0; + } + if (strlen(musname)) PlayMusic(musname); + InitVideo(vm); + set_intensity(63); + InitMouse(); + InitKeyboard(); + InitTimer(); +} + +char s[256]; + +void CompileAll() +{ + FILE *f; + char *p; + + MD_PlayStop(); + MD_Exit(); + + sprintf(strbuf,"vcc all q",mapname); + system(strbuf); + + if (!MD_Init()) + { + printf("Couldn't initialize sound: %s.\n", myerr); + delay(500); + soundokay=0; + } + if (strlen(musname)) PlayMusic(musname); + + if (!(f=fopen("error.txt","r"))) + { + Message("All VC scripts sucessfully compiled.",300); + return; + } + + fgets(s,99,f); + fclose(f); + p=s; + while (*p) + { + if (*p==13 || *p==10) *p=0; + p++; + } + VCNotify(s); +} + +void CompileMAP() +{ + FILE *f; + char *p; + + MD_PlayStop(); + MD_Exit(); + + sprintf(strbuf,"vcc %s q",mapname); + system(strbuf); + + if (!MD_Init()) + { + printf("Couldn't initialize sound: %s.\n", myerr); + delay(500); + soundokay=0; + } + if (strlen(musname)) PlayMusic(musname); + + if (!(f=fopen("error.txt","r"))) return; + + fgets(s,99,f); + fclose(f); + p=s; + while (*p) + { + if (*p==13 || *p==10) *p=0; + p++; + } + VCNotify(s); +} + +void tickhandler(void) +{ + MP_HandleTick(); + MD_SetBPM(mp_bpm); +} + +void RenderHighlight() +{ int zx, zy; + int xw, yw; + + if (mh) + { + xw=xwin&15; + yw=ywin&15; + zx=((mx+xw)&~15)-xw; + zy=((my+yw)&~15)-yw; + + DrawHighlight(zx-1, zy-1); + } +} + +int EntityThere(int xw, int yw) +{ int i; + + for (i=0; i + mb=0; + return; + } + EntityEditor(a-1); +} + +void DeleteEntity(int xw, int yw) +{ int i,a; + char t[60]; + + a=EntityThere(xw,yw)-1; + sprintf(t,"Delete entity %d?",a); + if (!Confirm(t)) return; + for (i=a; iname, 13); fc++; + while (!_dos_findnext(f)) + { + memcpy(blah+(fc*13), f->name, 13); fc++; + } + } + vfree(f); + last_pressed=0; + a=fc<22?117:2574/fc; +// errn("%d",fc); + do + { + if (!bmode) + { + RenderMap(); + RenderGUI(); + } + else + { + RenderSelector(); + RenderMessages(); + } + if (ctf && systemtime >= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + bxofs = (mx-mxo); + byofs = (my-myo); + if (!mb) moving=0; + if (bxofs<16) bxofs = 16; + if (byofs<16) byofs = 16; + if (bxofs+bxsize>335) bxofs = 336-bxsize; + if (byofs+bysize>sy+16) byofs = (sy+16)-bysize; + } + + Window(bxofs, byofs, bxofs+bxsize, byofs+bysize, "Browse"); + Button(bxofs+65, byofs+157, "OK"); + Button(bxofs+96, byofs+157, "Cancel"); + FilledBox(bxofs+20, byofs+15, 80, 135, black); + FilledBox(bxofs+100, byofs+15, 10, 135, 2); + HLine(bxofs+20, byofs+15, 90, darkw); + VLine(bxofs+20, byofs+15, 135, darkw); + VLine(bxofs+99, byofs+16, 134, white); + VLine(bxofs+109, byofs+16, 134, white); + HLine(bxofs+21, byofs+149, 89, white); + stdwindow(bxofs+100, byofs+16, bxofs+109, byofs+25); + stdwindow(bxofs+100, byofs+140, bxofs+109, byofs+149); + b=byofs+24+(fc != 22 ? ((117-a)*ofs)/(fc-22) : 0); + + //draws the drag box + stdwindow(bxofs+100, b, bxofs+109, b+a); + + FilledBox(bxofs+21, byofs+((cfs-ofs)*6)+16, 78, 6, darkw); + + // Render actual filename thingies + i=0; + while (1) + { + if (i+ofsbxofs+100&&mxbyofs+25&&myb&&myb+a) + { + if (ofs+45>fc) ofs=fc-22; + else ofs+=22; + cfs=ofs; + } + } + } + if(!dragging) + { + if (mb==1 && mx>bxofs+20 && mxbyofs+15 && mybxofs+100 && mxbyofs+15 && mybxofs+100 && mxbyofs+139 && mybxofs+65 && mxbyofs+157 && mybxofs+96 && mxbyofs+157 && my(bxofs+bxsize-9) && (mx(byofs+1) && (mybxofs && mxbyofs && my<(byofs+9) && !moving) + { + moving=1; + mxo=mx-bxofs; + myo=my-byofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + if (key[SCAN_PGUP]) + { + if (ofs<22) ofs=0; + else ofs-=22; + cfs=ofs; + key[SCAN_PGUP]=0; + continue; + } + if (key[SCAN_PGDN]) + { + if (ofs+45>fc) ofs=fc-22; + else ofs+=22; + if (fc<22) ofs=0; + cfs=ofs; + key[SCAN_PGDN]=0; + continue; + } + if (key[SCAN_UP]) + { + if (cfs) cfs--; + if (ofs>cfs) ofs--; + key[SCAN_UP]=0; + last_pressed=0; + continue; + } + if (key[SCAN_DOWN]) + { + if (cfs21) ofs++; + key[SCAN_DOWN]=0; + last_pressed=0; + continue; + } + if (last_pressed==SCAN_ENTER) + { + memcpy(dest,blah+(cfs*13),13); + key[SCAN_ENTER]=0; + done=1; + ctf=0; + str=0; + last_pressed=0; + break; + } + + if (last_pressed==SCAN_TAB) + { + switch (ctf) + { + case 0: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } + } while (!done); + vfree(blah); +} + +#include "vergepal.h" +#define LOGFILE "maped.log" + +void Log(char *text, ...) +{ + va_list argptr; + char msg[256]; + FILE *logf; + + va_start(argptr, text); + vsprintf(msg, text, argptr); + va_end(argptr); + + logf=fopen(LOGFILE,"aw"); + fprintf(logf,"%s\n",msg); + fflush(logf); + fclose(logf); +} + +int main(int argc, char *argv[]) +{ + + remove(LOGFILE); + md_mixfreq=44100; + md_dmabufsize=5000; + md_mode=DMODE_16BITS|DMODE_STEREO; + md_device=0; + memset(&chrs, 0, sizeof chrs); + + Log("GetConfig"); + GetConfig("maped.cfg"); + Log("LoadTransTbl"); + translucency_table=0; //zero + LoadTransTable(); //zero + + Log("RegisterModLoaders"); + ML_RegisterLoader(&load_mod); + ML_RegisterLoader(&load_s3m); + ML_RegisterLoader(&load_xm); + ML_RegisterLoader(&load_uni); + + Log("RegisterSndDrivers"); + MD_RegisterDriver(&drv_nos); + MD_RegisterDriver(&drv_sb); + MD_RegisterDriver(&drv_gus); + MD_RegisterPlayer(tickhandler); + soundokay=1; + Log("Initialize snd lib"); + if (!MD_Init()) + { + printf("Couldn't initialize sound: %s.\n", myerr); + delay(500); + soundokay=0; + } + + //Log("Initialize CD audio"); + //CD_Init(); + + Log("Initialize timer"); + InitTimer(); + Log("Initialize video"); + InitVideo(vm); + Log("Initialize mouse"); + InitMouse(); + Log("Initialize keyboard IRQ handler"); + InitKeyboard(); + + Log("Initializing map data"); + if (argc==1 && !Exist("untitled.map")) + { + SetPalette(vergepal); + memcpy(pal, vergepal, 768); + memcpy(mapname,"UNTITLED.MAP",13); + memcpy(vspname,"UNTITLED.VSP",13); + memcpy(rstring,"1E",2); + numlayers=1; + + // aen: default newmap dimensions set to 100x100 + layer[0].pmultx=1; layer[0].pmulty=1; + layer[0].pdivx=1; layer[0].pdivy=1; + layer[0].sizex=100; layer[0].sizey=100; + layer[0].trans=0; layer[0].hline=0; + + layers[0]=(unsigned short *) valloc((layer[0].sizex*layer[0].sizey*2)+4,"layer data",0); + //memset(layers[0],0,(layer[0].sizex*layer[0].sizey)*2); + obstruct=(char *) valloc((layer[0].sizex*layer[0].sizey)+4,"obstruct map",0); + zone=(char *) valloc((layer[0].sizex*layer[0].sizey)+4,"zone map", 0); + + // aen: default number of tiles set to 100 + numtiles=100; + vsp=(char *) valloc(256 * numtiles,"vsp data", 0); + wrap=0; el=0; layertoggle[0]=1; + InitTileIDX(); + } + else + { + if (argc==1) memcpy(mapname, "untitled.map",13); + else memcpy(mapname, argv[1], strlen(argv[1])); + LoadMAP(mapname); + InitTileIDX(); + } +Log("Entering main loop"); +thingy: + while (!(key[SCAN_ALT] && key[SCAN_X])) + { + ProcessControls(); + while (tick) + { + tick--; + PollMovement(); + } + RenderMap(); + RenderHighlight(); + RenderGUI(); + ShowPage(); + } + if (modified) + if (!Confirm("Lose unsaved changes?")) + { + key[SCAN_ALT]=0; + key[SCAN_X]=0; + goto thingy; + } + + ShutdownVideo(); + ShutdownKeyboard(); + ShutdownTimer(); + SaveNewCFG(); + remove("$$BACKUP.MAP"); + remove("$$BACKUP.VSP"); + + //if (curtrack != 1) CD_Stop(); + //CD_DeInit(); // wasn't even valid! CD_Deinit() was incorrect + MD_PlayStop(); // Mordred + ML_Free(mf); + + MD_Exit(); + if (translucency_table) + vfree(translucency_table); //zero + return 0; +} diff --git a/16/v2/source/verge/MAPED/MAPED.H b/16/v2/source/verge/MAPED/MAPED.H new file mode 100644 index 00000000..431bcd27 --- /dev/null +++ b/16/v2/source/verge/MAPED/MAPED.H @@ -0,0 +1,180 @@ +/* +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. +*/ + +#ifndef MAPED_INC +#define MAPED_INC + +extern const char *const ME2_VERSION; + +#include + +#define byte unsigned char +#define word unsigned short + +typedef struct +{ + unsigned short start; // strand start + unsigned short finish; // strand end + unsigned short delay; // tile-switch delay + unsigned short mode; // tile-animation mode +} vspanim_r; + +typedef struct +{ + char pmultx,pdivx; // parallax multiplier/divisor for X + char pmulty,pdivy; // parallax multiplier/divisor for Y + unsigned short sizex, sizey; // layer dimensions. + unsigned char trans, hline; // transparency flag | hline (raster fx) +} layer_r; + +typedef struct +{ + char name[40]; // zone name/desc + unsigned short script; // script to call thingy + unsigned short percent; // chance of executing + unsigned short delay; // step-delay + unsigned short aaa; // Accept Adjacent Activation + unsigned short entityscript; // script to call for entities +} zoneinfo; + +typedef struct +{ + int x, y; // xwc, ywx position + word tx, ty; // xtc, ytc position + byte facing; // direction entity is facing + byte moving, movecnt; // direction entity is moving + byte frame; // bottom-line frame to display + byte specframe; // special-frame set thingo + byte chrindex, reset; // CHR index | Reset animation + byte obsmode1, obsmode2; // can be obstructed | Is an obstruction + byte speed, speedct; // entity speed, speedcount :) + byte delayct; // animation frame-delay + char *animofs, *moveofs; // anim script | move script + byte face, actm; // auto-face | activation mode + byte movecode, movescript; // movement type | movement script + byte ctr, mode; // sub-tile move ctr, mode flag (internal) + word step, delay; // step, delay + word stepctr, delayctr; // internal use counters + word data1, data2, data3; // + word data4, data5, data6; // + int actscript; // activation script + int expand1, expand2; // + int expand3, expand4; // + char desc[20]; // Entity description. +} entity_r; + +typedef struct +{ + char t[60]; +} chrlist_r; + +typedef struct { + char t[200]; +} movescript; + +extern layer_r layer[4]; +extern vspanim_r vspanim[100]; +extern zoneinfo zones[256]; +extern unsigned short vadelay[100]; +extern entity_r entity[256]; // Entity records. +extern byte entities; // number of allocated entities. +extern chrlist_r chrlist[100]; +extern byte nmchr; +extern movescript ms[100]; // move scripts arrays +extern byte nms; // number of movement scripts + +extern char *obstruct, *zone, curzone; +extern char numlayers, wrap; +extern unsigned short *layers[6]; +extern char rstring[20]; +extern char mapname[60], vspname[60]; +extern char musname[60]; +extern short xstart, ystart; + +// -- vsp related data -- + +extern unsigned short numtiles; +extern unsigned char *vsp; + +// -- editing related data -- + +extern int xwin, ywin, bmode; +extern char mouse_scroll; +extern short lt, rt; +extern char layertoggle[10], el, modified; + +extern word *copybuf; +extern int copybuf_wide,copybuf_deep; +extern int selx1, sely1, selx2, sely2; +extern int shifted, pasting; + +extern int numzones; // Number of active zones. + +extern int moving_up,moving_down,moving_left,moving_right; + +extern void LoadTransTable(); +extern int Exist(char *fname); +extern void err(char *str, ...); +extern void errf(char *str, char *str1); +extern void errn(char *str, int n); +extern int random(int min, int max); +extern void PlayMusic(char *fname); +extern void StopMusic(); +extern void LoadVSP(char *fname); +extern void SaveVSP(char *fname); +extern void EmitC (char c); +extern void EmitW (short int w); +extern void WriteCompressedLayer1(unsigned char *p, int len); +extern void ReadCompressedLayer1(unsigned char *dest, int len, FILE *f); +extern void WriteCompressedLayer2(unsigned short *p,int len); +extern void ReadCompressedLayer2(unsigned short *dest, int len, FILE *f); +extern void CountUsedZones(); +extern void CountMoveScripts(); +extern void CountCHRs(); +extern void SaveMAP(char *fname); +extern void LoadOldMAP(FILE *f); +extern void LoadMAP(char *fname); +extern void InitTileIDX(); +extern void CheckTimerStuff(); +extern void SaveNewCFG(); +extern void ShellToDOS(); +extern void ShellVERGE(); +extern void ShellMAP(); +extern void ShellEditMAP(); +extern void ShellEditSystem(); +extern void CompileAll(); +extern void CompileMAP(); +extern void tickhandler(void); +extern void RenderHighlight(); +extern int EntityThere(int xw, int yw); +extern void AllocateEntity(int xw, int yw); +extern void ProcessEntity(int xw, int yw); +extern void DeleteEntity(int xw, int yw); +extern void Browse(char n, char *m1, char *m2, char *m3, char *m4, char *dest); + +// Includes for a_memory.c + +void *valloc(int amount, char *desc, int owner); +void *qvalloc(int amount); +int vfree(void *pointer); +void qvfree(void *pointer); +void FreeByOwner(int owner); +void MemReport(void); +void CheckCorruption(void); + +#define free ERROR_YEAH_REPLACE_THIS_WITH_VFREE + +#endif // MAPED_INC diff --git a/16/v2/source/verge/MAPED/MIKMOD.C b/16/v2/source/verge/MAPED/MIKMOD.C new file mode 100644 index 00000000..2ab62d2a --- /dev/null +++ b/16/v2/source/verge/MAPED/MIKMOD.C @@ -0,0 +1,311 @@ +/* + +Name: +MIKMOD.C + +Description: +Modplaying example of mikmod. + +MSDOS: BC(y) Watcom(y) DJGPP(y) +Win95: BC(y*) +Os2: y +Linux: n + +* console mode only +(y) - yes +(n) - no (not possible or not useful) +(?) - may be possible, but not tested + +*/ +#ifdef __WIN32__ +#include +#endif + +#include +#include +#include +#include + +#ifndef __OS2__ +#include +#endif + +#include "wildfile.h" +#include "mikmod.h" + +char helptext[]= + +"Available switches (CaSe SeNsItIvE!):\n" +"\n" +" /d x use device-driver #x for output (0 is autodetect). Default=0\n" +" /ld List all available device-drivers\n" +" /ll List all available loaders\n" +" /x disables protracker extended speed\n" +" /p disables panning effects (9fingers.mod)\n" +" /v xx Sets volume from 0 (silence) to 100. Default=100\n" +" /f xxxx Sets mixing frequency. Default=44100\n" +" /m Force mono output (so sb-pro can mix at 44100)\n" +" /8 Force 8 bit output\n" +" /i Use interpolated mixing\n" +" /r Restart a module when it's done playing"; + + +/* + declarations for boring old sys-v style getopt *yawn*: +*/ +int getopt(int argc, char *argv[], char *optionS); +extern char *optarg; +extern int optind; +extern int opterr; + + +void tickhandler(void) +{ + MP_HandleTick(); /* play 1 tick of the module */ + MD_SetBPM(mp_bpm); +} + + +int main(int argc,char *argv[]) +{ + UNIMOD *mf; + int cmderr=0; /* error in commandline flag */ + int morehelp=0; /* set if user wants more help */ + int quit; + int t; + static int nargc; + static char **nargv; + + puts(mikbanner); + + /* Expand wildcards on commandline */ + + nargc=argc; nargv=argv; +#ifndef __DJGPP__ + MyGlob(&nargc,&nargv,0); +#else + setvbuf(stdout, NULL, _IONBF, 0); + __djgpp_set_ctrl_c(0); +#endif + + /* + Initialize soundcard parameters.. you _have_ to do this + before calling MD_Init(), and it's illegal to change them + after you've called MD_Init() + */ + + md_mixfreq =44100; /* standard mixing freq */ + md_dmabufsize =20000; /* standard dma buf size */ + md_mode =DMODE_16BITS|DMODE_STEREO; /* standard mixing mode */ + md_device =0; /* standard device: autodetect */ + + /* + Register the loaders we want to use.. + */ + + ML_RegisterLoader(&load_m15); /* if you use m15load, register it as first! */ + ML_RegisterLoader(&load_mod); + ML_RegisterLoader(&load_mtm); + ML_RegisterLoader(&load_s3m); + ML_RegisterLoader(&load_stm); + ML_RegisterLoader(&load_ult); + ML_RegisterLoader(&load_uni); + ML_RegisterLoader(&load_xm); + + /* + Register the drivers we want to use: + */ + + MD_RegisterDriver(&drv_nos); +#ifdef __OS2__ + MD_RegisterDriver(&drv_os2); +#elif defined(__WIN32__) + MD_RegisterDriver(&drv_w95); +#else + MD_RegisterDriver(&drv_ss); + MD_RegisterDriver(&drv_sb); + MD_RegisterDriver(&drv_gus); +#endif + + MD_RegisterPlayer(tickhandler); + + /* Parse option switches using standard getopt function: */ + + opterr=0; + + while( !cmderr && + (t=getopt(nargc,nargv,"ohxpm8irv:f:l:d:")) != EOF ){ + + switch(t){ + + case 'd': + md_device=atoi(optarg); + break; + + case 'l': + if(optarg[0]=='d') MD_InfoDriver(); + else if(optarg[0]=='l') ML_InfoLoader(); + else{ + cmderr=1; + break; + } + exit(0); + + case 'r': + mp_loop=1; + break; + + case 'm': + md_mode&=~DMODE_STEREO; + break; + + case '8': + md_mode&=~DMODE_16BITS; + break; + + case 'i': + md_mode|=DMODE_INTERP; + break; + + case 'x': + mp_extspd=0; + break; + + case 'p': + mp_panning=0; + break; + + case 'v': + if((mp_volume=atoi(optarg))>100) mp_volume=100; + break; + + case 'f': + md_mixfreq=atol(optarg); + break; + + case 'h': + morehelp=1; + cmderr=1; + break; + + case '?': + puts("\07Invalid switch or option needs an argument\n"); + cmderr=1; + break; + } + } + + if(cmderr || optind>=nargc){ + + /* + there was an error in the commandline, or there were no true + arguments, so display a usage message + */ + + puts("Usage: MIKMOD [switches] ... \n"); + + if(morehelp) + puts(helptext); + else + puts("Type MIKMOD /h for more help."); + + exit(-1); + } + + /* initialize soundcard */ + + if(!MD_Init()){ + printf("Driver error: %s.\n",myerr); + return 0; + } + + printf("Using %s for %d bit %s %s sound at %u Hz\n\n", + md_driver->Name, + (md_mode&DMODE_16BITS) ? 16:8, + (md_mode&DMODE_INTERP) ? "interpolated":"normal", + (md_mode&DMODE_STEREO) ? "stereo":"mono", + md_mixfreq); + +#ifdef __OS2__ + DosSetPriority( PRTYS_THREAD, PRTYC_TIMECRITICAL, 5L, 0UL ); +#endif + + for(quit=0; !quit && optind exit with errormsg. */ + + if(mf==NULL){ + printf("MikMod Error: %s\n",myerr); + break; + } + + /* initialize modplayer to play this module */ + + MP_Init(mf); + + printf( "Songname: %s\n" + "Modtype : %s\n" + "Periods : %s,%s\n", + mf->songname, + mf->modtype, + (mf->flags&UF_XMPERIODS) ? "XM type" : "mod type", + (mf->flags&UF_LINEAR) ? "Linear" : "Log"); + + /* + set the number of voices to use.. you + could add extra channels here (e.g. md_numchn=mf->numchn+4; ) + to use for your own soundeffects: + */ + + md_numchn=mf->numchn; + + /* start playing the module: */ + + MD_PlayStart(); + + while(!MP_Ready()){ + + char c; + + c=kbhit() ? getch() : 0; + + if(c=='+') + MP_NextPosition(); + else if(c=='-') + MP_PrevPosition(); + else if(c==0x1b){ + quit=1; + break; + } + else if(c==' ') break; + + MD_Update(); + + /* wait a bit */ + +#if defined(__OS2__) + DosSleep(40); /* hmmmm */ +#elif defined(__WIN32__) + Sleep(10); +#elif defined(__DJGPP__) + /* no wait for djgpp ? */ +#else + delay(10); +#endif + printf("\rsngpos:%d patpos:%d sngspd %d bpm %d ",mp_sngpos,mp_patpos,mp_sngspd,mp_bpm); + } + + MD_PlayStop(); /* stop playing */ + ML_Free(mf); /* and free the module */ + puts("\n"); + } + + MD_Exit(); + return 0; +} diff --git a/16/v2/source/verge/MAPED/MIKMOD.H b/16/v2/source/verge/MAPED/MIKMOD.H new file mode 100644 index 00000000..0111ccb3 --- /dev/null +++ b/16/v2/source/verge/MAPED/MIKMOD.H @@ -0,0 +1,580 @@ +#ifndef MIKMOD_H +#define MIKMOD_H + +#include +#include "mtypes.h" /* include atomic mikmod types */ + + +#define mikbanner \ +"=======================================================================\n" \ +"MIKMOD v2.10 - Portable version - Programmed by MikMak of HaRDCoDE '95\n" \ +"=======================================================================\n" \ +"This program is SHAREWARE - Read MIKMOD.TXT for more info\n" \ +"E-Mail : mikmak@stack.urc.tue.nl\n" + + +/* + error variables: + =============== +*/ + +extern char *ERROR_ALLOC_STRUCT; +extern char *ERROR_LOADING_PATTERN; +extern char *ERROR_LOADING_TRACK; +extern char *ERROR_LOADING_HEADER; +extern char *ERROR_NOT_A_MODULE; +extern char *ERROR_LOADING_SAMPLEINFO; +extern char *ERROR_OUT_OF_HANDLES; +extern char *ERROR_SAMPLE_TOO_BIG; +extern char *myerr; + + + +#define _mm_rewind(x) _mm_fseek(x,0,SEEK_SET) +int _mm_fseek(FILE *stream,long offset,int whence); +void _mm_setiobase(long iobase); +long _mm_ftell(FILE *stream); + + +extern SBYTE _mm_read_SBYTE (FILE *fp); +extern UBYTE _mm_read_UBYTE (FILE *fp); + +extern SWORD _mm_read_M_SWORD (FILE *fp); +extern SWORD _mm_read_I_SWORD (FILE *fp); + +extern UWORD _mm_read_M_UWORD(FILE *fp); +extern UWORD _mm_read_I_UWORD(FILE *fp); + +extern SLONG _mm_read_M_SLONG (FILE *fp); +extern SLONG _mm_read_I_SLONG (FILE *fp); + +extern ULONG _mm_read_M_ULONG(FILE *fp); +extern ULONG _mm_read_I_ULONG(FILE *fp); + +extern int _mm_read_str(char *str, int size, FILE *fp); + +extern int _mm_read_SBYTES (SBYTE *buffer, int number, FILE *fp); +extern int _mm_read_UBYTES (UBYTE *buffer, int number, FILE *fp); + +extern int _mm_read_M_SWORDS (SWORD *buffer, int number, FILE *fp); +extern int _mm_read_I_SWORDS (SWORD *buffer, int number, FILE *fp); + +extern int _mm_read_M_UWORDS (UWORD *buffer, int number, FILE *fp); +extern int _mm_read_I_UWORDS (UWORD *buffer, int number, FILE *fp); + +extern int _mm_read_M_SLONGS (SLONG *buffer, int number, FILE *fp); +extern int _mm_read_I_SLONGS (SLONG *buffer, int number, FILE *fp); + +extern int _mm_read_M_ULONGS (ULONG *buffer, int number, FILE *fp); +extern int _mm_read_I_ULONGS (ULONG *buffer, int number, FILE *fp); + + +extern void _mm_write_SBYTE (SBYTE data,FILE *fp); +extern void _mm_write_UBYTE (UBYTE data,FILE *fp); + +extern void _mm_write_M_SWORD (SWORD data,FILE *fp); +extern void _mm_write_I_SWORD (SWORD data,FILE *fp); + +extern void _mm_write_M_UWORD (UWORD data,FILE *fp); +extern void _mm_write_I_UWORD (UWORD data,FILE *fp); + +extern void _mm_write_M_SLONG (SLONG data,FILE *fp); +extern void _mm_write_I_SLONG (SLONG data,FILE *fp); + +extern void _mm_write_M_ULONG (ULONG data,FILE *fp); +extern void _mm_write_I_ULONG (ULONG data,FILE *fp); + +extern void _mm_write_SBYTES (SBYTE *data, int number,FILE *fp); +extern void _mm_write_UBYTES (UBYTE *data, int number,FILE *fp); + +extern void _mm_write_M_SWORDS (SWORD *data, int number,FILE *fp); +extern void _mm_write_I_SWORDS (SWORD *data, int number,FILE *fp); + +extern void _mm_write_M_UWORDS (UWORD *data, int number,FILE *fp); +extern void _mm_write_I_UWORDS (UWORD *data, int number,FILE *fp); + +extern void _mm_write_M_SLONGS (SLONG *data, int number,FILE *fp); +extern void _mm_write_I_SLONGS (SLONG *data, int number,FILE *fp); + +extern void _mm_write_M_ULONGS (ULONG *data, int number,FILE *fp); +extern void _mm_write_I_ULONGS (ULONG *data, int number,FILE *fp); + + +/************************************************************************** +****** Unitrack stuff: **************************************************** +**************************************************************************/ + +/* + prototypes: +*/ + +void UniSetRow(UBYTE *t); +UBYTE UniGetByte(void); +UBYTE *UniFindRow(UBYTE *t,UWORD row); +void UniReset(void); +void UniWrite(UBYTE data); +void UniNewline(void); +void UniInstrument(UBYTE ins); +void UniNote(UBYTE note); +void UniPTEffect(UBYTE eff,UBYTE dat); +UBYTE *UniDup(void); +void UniSkipOpcode(UBYTE op); +BOOL UniInit(void); +void UniCleanup(void); +UWORD TrkLen(UBYTE *t); +BOOL MyCmp(UBYTE *a,UBYTE *b,UWORD l); + +/* + all known effects: +*/ + +enum { + UNI_NOTE=1, + UNI_INSTRUMENT, + UNI_PTEFFECT0, + UNI_PTEFFECT1, + UNI_PTEFFECT2, + UNI_PTEFFECT3, + UNI_PTEFFECT4, + UNI_PTEFFECT5, + UNI_PTEFFECT6, + UNI_PTEFFECT7, + UNI_PTEFFECT8, + UNI_PTEFFECT9, + UNI_PTEFFECTA, + UNI_PTEFFECTB, + UNI_PTEFFECTC, + UNI_PTEFFECTD, + UNI_PTEFFECTE, + UNI_PTEFFECTF, + UNI_S3MEFFECTA, + UNI_S3MEFFECTD, + UNI_S3MEFFECTE, + UNI_S3MEFFECTF, + UNI_S3MEFFECTI, + UNI_S3MEFFECTQ, + UNI_S3MEFFECTT, + UNI_XMEFFECTA, + UNI_XMEFFECTG, + UNI_XMEFFECTH, + UNI_XMEFFECTP +}; + + +/************************************************************************** +****** mikmod types: ****************************************************** +**************************************************************************/ + + +/* + Sample format flags: +*/ + +#define SF_16BITS 1 +#define SF_SIGNED 2 +#define SF_DELTA 4 +#define SF_BIG_ENDIAN 8 +#define SF_LOOP 16 +#define SF_BIDI 32 +#define SF_OWNPAN 64 +#define SF_REVERSE 128 + + +/* + Envelope flags: +*/ + +#define EF_ON 1 +#define EF_SUSTAIN 2 +#define EF_LOOP 4 + + +/* + Unimod flags +*/ + +#define UF_XMPERIODS 1 /* if set use XM periods/finetuning */ +#define UF_LINEAR 2 /* if set use LINEAR periods */ + + +typedef struct ENVPT{ + SWORD pos; + SWORD val; +} ENVPT; + + +typedef struct SAMPLE{ + UWORD c2spd; /* finetune frequency */ + SBYTE transpose; /* transpose value */ + UBYTE volume; /* volume 0-64 */ + UBYTE panning; /* panning */ + ULONG length; /* length of sample (in samples!) */ + ULONG loopstart; /* repeat position (relative to start, in samples) */ + ULONG loopend; /* repeat end */ + UWORD flags; /* sample format */ + ULONG seekpos; /* seek position in file */ + char *samplename; /* name of the sample */ + SWORD handle; /* sample handle */ +} SAMPLE; + + +typedef struct INSTRUMENT{ + UBYTE numsmp; + UBYTE samplenumber[96]; + + UBYTE volflg; /* bit 0: on 1: sustain 2: loop */ + UBYTE volpts; + UBYTE volsus; + UBYTE volbeg; + UBYTE volend; + ENVPT volenv[12]; + + UBYTE panflg; /* bit 0: on 1: sustain 2: loop */ + UBYTE panpts; + UBYTE pansus; + UBYTE panbeg; + UBYTE panend; + ENVPT panenv[12]; + + UBYTE vibtype; + UBYTE vibsweep; + UBYTE vibdepth; + UBYTE vibrate; + + UWORD volfade; + char *insname; + SAMPLE *samples; +} INSTRUMENT; + + +/* + MikMod UNImod types: + ==================== +*/ + +typedef struct UNIMOD{ + UBYTE numchn; /* number of channels */ + UWORD numpos; /* number of positions in this song */ + UWORD reppos; /* restart position */ + UWORD numpat; /* number of patterns in this song */ + UWORD numtrk; /* number of tracks */ + UWORD numins; /* number of samples */ + UBYTE initspeed; /* */ + UBYTE inittempo; /* */ + UBYTE positions[256]; /* all positions */ + UBYTE panning[32]; /* 32 panning positions */ + UBYTE flags; /* */ + char *songname; /* name of the song */ + char *modtype; /* string type of module */ + char *comment; /* module comments */ + INSTRUMENT *instruments; /* all samples */ + UWORD *patterns; /* array of PATTERN */ + UWORD *pattrows; /* array of number of rows for each pattern */ + UBYTE **tracks; /* array of pointers to tracks */ +} UNIMOD; + + +/************************************************************************** +****** Loader stuff: ****************************************************** +**************************************************************************/ + +/* + loader structure: +*/ + +typedef struct LOADER{ + struct LOADER *next; + char *type; + char *version; + BOOL (*Init)(void); + BOOL (*Test)(void); + BOOL (*Load)(void); + void (*Cleanup)(void); +} LOADER; + + +/* + public loader variables: +*/ + +extern UNIMOD of; +extern FILE *modfp; +extern UWORD finetune[16]; + + +/* + main loader prototypes: +*/ + +void ML_InfoLoader(void); +void ML_RegisterLoader(LOADER *ldr); +UNIMOD *ML_LoadFP(FILE *fp); +UNIMOD *ML_LoadFN(char *filename); +void ML_Free(UNIMOD *mf); + + +/* + other loader prototypes: (used by the loader modules) +*/ + +BOOL InitTracks(void); +void AddTrack(UBYTE *tr); +BOOL ReadComment(UWORD len); +BOOL AllocPatterns(void); +BOOL AllocTracks(void); +BOOL AllocInstruments(void); +BOOL AllocSamples(INSTRUMENT *i); +char *DupStr(char *s,UWORD len); +void *MyMalloc(size_t size); +void *MyCalloc(size_t nitems,size_t size); + + +/* + Declare external loaders: +*/ +extern LOADER load_uni; +extern LOADER load_mod; +extern LOADER load_m15; +extern LOADER load_mtm; +extern LOADER load_s3m; +extern LOADER load_stm; +extern LOADER load_ult; +extern LOADER load_xm; + + +/************************************************************************** +****** Wavload stuff: ***************************************************** +**************************************************************************/ + +SAMPLE *MW_LoadWavFP(FILE *fp); +SAMPLE *MW_LoadWavFN(char *filename); +void MW_FreeWav(SAMPLE *si); + + +/************************************************************************** +****** Driver stuff: ****************************************************** +**************************************************************************/ + +/* + max. number of handles a driver has to provide. (not strict) +*/ + +#define MAXSAMPLEHANDLES 128 + + +/* + possible mixing mode bits: +*/ + +#define DMODE_STEREO 1 +#define DMODE_16BITS 2 +#define DMODE_INTERP 4 + + +/* + driver structure: +*/ + +typedef struct DRIVER{ + struct DRIVER *next; + char *Name; + char *Version; + BOOL (*IsPresent) (void); + SWORD (*SampleLoad) (FILE *fp,ULONG size,ULONG reppos,ULONG repend,UWORD flags); + void (*SampleUnLoad) (SWORD handle); + BOOL (*Init) (void); + void (*Exit) (void); + void (*PlayStart) (void); + void (*PlayStop) (void); + void (*Update) (void); + void (*VoiceSetVolume) (UBYTE voice,UBYTE vol); + void (*VoiceSetFrequency) (UBYTE voice,ULONG frq); + void (*VoiceSetPanning) (UBYTE voice,UBYTE pan); + void (*VoicePlay) (UBYTE voice,SWORD handle,ULONG start,ULONG size,ULONG reppos,ULONG repend,UWORD flags); +} DRIVER; + + +/* + public driver variables: +*/ + +extern DRIVER *md_driver; +extern UWORD md_device; +extern UWORD md_mixfreq; +extern UWORD md_dmabufsize; +extern UWORD md_mode; +extern UBYTE md_numchn; +extern UBYTE md_bpm; +extern void (*md_player)(void); + +/* + main driver prototypes: +*/ + +void MD_InfoDriver(void); +void MD_RegisterDriver(DRIVER *drv); +void MD_RegisterPlayer(void (*plr)(void)); +SWORD MD_SampleLoad(FILE *fp,ULONG size,ULONG reppos,ULONG repend,UWORD flags); +void MD_SampleUnLoad(SWORD handle); +BOOL MD_Init(void); +void MD_Exit(void); +void MD_PlayStart(void); +void MD_PlayStop(void); +void MD_SetBPM(UBYTE bpm); +void MD_Update(void); +void MD_VoiceSetVolume(UBYTE voice,UBYTE ivol); +void MD_VoiceSetFrequency(UBYTE voice,ULONG frq); +void MD_VoiceSetPanning(UBYTE voice,ULONG pan); +void MD_VoicePlay(UBYTE voice,SWORD handle,ULONG start,ULONG size,ULONG reppos,ULONG repend,UWORD flags); +void SL_Init(FILE *fp,UWORD infmt,UWORD outfmt); +void SL_Load(void *buffer,ULONG length); + +/* + Declare external drivers: +*/ + +extern DRIVER drv_gus; /* gravis ultrasound driver */ +extern DRIVER drv_sb; /* soundblaster DSP driver */ +extern DRIVER drv_ss; /* ensoniq soundscape driver */ +extern DRIVER drv_nos; /* nosound driver */ +extern DRIVER drv_raw; /* file output driver */ +extern DRIVER drv_w95; /* win95 driver */ +extern DRIVER drv_awe; /* experimental SB-AWE driver */ +extern DRIVER drv_vox; /* linux voxware driver */ +extern DRIVER drv_af; /* Dec Alpha AudioFile driver */ +extern DRIVER drv_sun; /* Sun driver */ +extern DRIVER drv_os2; /* Os2 driver */ +extern DRIVER drv_tim; /* timing driver */ + +/************************************************************************** +****** Player stuff: ****************************************************** +**************************************************************************/ + + +typedef struct ENVPR{ + UBYTE flg; /* envelope flag */ + UBYTE pts; /* number of envelope points */ + UBYTE sus; /* envelope sustain index */ + UBYTE beg; /* envelope loop begin */ + UBYTE end; /* envelope loop end */ + SWORD p; /* current envelope counter */ + UWORD a; /* envelope index a */ + UWORD b; /* envelope index b */ + ENVPT *env; /* envelope points */ +} ENVPR; + + +typedef struct AUDTMP{ + INSTRUMENT *i; + SAMPLE *s; + + UWORD fadevol; /* fading volume */ + + ENVPR venv; + ENVPR penv; + + UBYTE keyon; /* if true=key is pressed. */ + UBYTE kick; /* if true=sample has to be restarted */ + UBYTE sample; /* which sample number (0-31) */ + SWORD handle; /* which sample-handle */ + + ULONG start; /* The start byte index in the sample */ + + UBYTE panning; /* panning position */ + UBYTE pansspd; /* panslide speed */ + + SBYTE volume; /* amiga volume (0 t/m 64) to play the sample at */ + UWORD period; /* period to play the sample at */ + + /* You should not have to use the values + below in the player routine */ + + SBYTE transpose; + + UBYTE note; /* */ + + SWORD ownper; + SWORD ownvol; + + UBYTE *row; /* row currently playing on this channel */ + + SBYTE retrig; /* retrig value (0 means don't retrig) */ + UWORD c2spd; /* what finetune to use */ + + SBYTE tmpvolume; /* tmp volume */ + + UWORD tmpperiod; /* tmp period */ + UWORD wantedperiod; /* period to slide to (with effect 3 or 5) */ + + UWORD slidespeed; /* */ + UWORD portspeed; /* noteslide speed (toneportamento) */ + + UBYTE s3mtremor; /* s3m tremor (effect I) counter */ + UBYTE s3mtronof; /* s3m tremor ontime/offtime */ + + UBYTE s3mvolslide; /* last used volslide */ + + UBYTE s3mrtgspeed; /* last used retrig speed */ + UBYTE s3mrtgslide; /* last used retrig slide */ + + UBYTE glissando; /* glissando (0 means off) */ + UBYTE wavecontrol; /* */ + + SBYTE vibpos; /* current vibrato position */ + UBYTE vibspd; /* "" speed */ + UBYTE vibdepth; /* "" depth */ + + SBYTE trmpos; /* current tremolo position */ + UBYTE trmspd; /* "" speed */ + UBYTE trmdepth; /* "" depth */ + + UWORD soffset; /* last used sample-offset (effect 9) */ +} AUDTMP; + + +extern AUDTMP mp_audio[32]; /* max eight channels */ +extern UBYTE mp_bpm; /* beats-per-minute speed */ +extern UWORD mp_patpos; /* current row number (0-63) */ +extern SWORD mp_sngpos; /* current song position */ +extern UWORD mp_sngspd; /* current songspeed */ + +extern BOOL mp_loop; +extern BOOL mp_panning; +extern BOOL mp_extspd; +extern UBYTE mp_volume; + +/* + player prototypes: +*/ + +int MP_Ready(void); +void MP_NextPosition(void); +void MP_PrevPosition(void); +void MP_SetPosition(UWORD pos); +void MP_HandleTick(void); +void MP_Init(UNIMOD *m); + + +/************************************************************************** +****** Virtual channel stuff: ********************************************* +**************************************************************************/ + +BOOL VC_Init(void); +void VC_Exit(void); + +void VC_PlayStart(void); +void VC_PlayStop(void); + +SWORD VC_SampleLoad(FILE *fp,ULONG size,ULONG reppos,ULONG repend,UWORD flags); +void VC_SampleUnload(SWORD handle); + +void VC_WriteSamples(SBYTE *buf,UWORD todo); +UWORD VC_WriteBytes(SBYTE *buf,UWORD todo); +void VC_SilenceBytes(SBYTE *buf,UWORD todo); + +void VC_VoiceSetVolume(UBYTE voice,UBYTE vol); +void VC_VoiceSetFrequency(UBYTE voice,ULONG frq); +void VC_VoiceSetPanning(UBYTE voice,UBYTE pan); +void VC_VoicePlay(UBYTE voice,SWORD handle,ULONG start,ULONG size,ULONG reppos,ULONG repend,UWORD flags); + +#endif diff --git a/16/v2/source/verge/MAPED/MIKMOD.LIB b/16/v2/source/verge/MAPED/MIKMOD.LIB new file mode 100644 index 0000000000000000000000000000000000000000..0f55de9509397675e1f2f6354e32380a510ae977 GIT binary patch literal 94720 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�k9NGEEzl-8Ea+$v!lWD0%Jtb$(Cq%yD6Kc+c1rkn3T3F68e?C z8x?6N>C{Rr5Bq)D(k30+C_0{SDB-w8!HT0J@z_SM(p2cf`)Al9lnf#zFw#hgT6|N* z_Oe}BUA7mlv^~!W!?K0>1nZfsbug#>l*6GU@)J_vKXz&b8n0`(zA}R@5g9|dfbSO z1LM>ThlpZ&^_Zpovk+(LlJ*a^ThDB~+u|zC)tt7-c{Ba(p0*IQc%7;3Y><7!5^3YG z_-;ps_ig)St?i9H)M$BM+toX9pX03e6N@V&chWJ7oH5heF52nLTPo!(;q&OHfVeW2 zv|osAzo2dUV65Xv!XanIV(^!y4}zL5Xc}^w57~?fZH`k{b#@sVdS=H+iSxnWS;Wq) zW`HFz)Uy*Y1Bb93J#vR(p8epp-ifCio!(EJb=eb7I_msYNt@nuteoN9rS`I1$}3ZQ z>G0Db>x_g$BH!`8D=!nhY`++*L3^?tr_Ln3$*{|ZS!eygB z6E0)H{%rRng2LuhTJsb>ou)xLJhe70&0>KV;jRVrXUjkV8oQ9b-`s%y=g zF_HK{No{o@bt>k2fP5(;wYKo~96#)7!iJ>QmIgqvkVU1x>>4BW)5w6_DEb*ig(Cf$ z!#NT~IYjpeG+SJw@uY;2vNWHu-rzW4|HuT103fjGt;cQGO)OQ026KArp^YQ#7m~J& z;xGqB@C_+1+k1wCpiTxc4Y2O;lDkx@zLPJ3EQL38*grH0!U7QtCE_LuUhfpmz~YIu zUrO3CmNf}d<^9!8x_$_{4A%jJ=T?qi8Uw6DgQq@5JIwQNj5dnH8O2FE>~;2XKM_Ja zN!~xkf8n@=G0{8$Q(DLdE)ZC7CMEhNlr^%^@PVx8p;Cn^!3d-E-)#Kf-Gpdz4n2Dm#eUGZ?3vDF5@T~2 zD`9LE1DNj&9vEdqJwHIOuJzv}%^0W)EtCF%Za`9FH}VTg&=EyKawg69cX^&V9urI{ zSK1sW5{|>X;5e=DN6pEE<4#!B#qQ^dBfmsJ&Wwd6YbUz0Kwe{2glElAB3DvMmIhWx z8@mibWbn|Q&Mq4~w=kB?a7WCu{i)y6i}q56j9S?`cfWFB-7P_@VobeZHA@)b25vn%AK;CU~gYg_MO#pY0nKNTvsWj7 z;6?^FGq{z(?F{Z@a2JDF3}!Q^AUd$tLp@FgPZDDkB?`Cz?n9SnMyx9k1f_RE^C@6U zX=KL2pKGoha+YQv|8U|7M`^ZqN}!K|;y9Kq=&FZTk}E%x{PFl(B*p3;*OA}|1c&oiD^!SIQiEk@aqt3J1Nk?TY__1E{CK!P= z6f#3SH!*;GDWs-Q&oai=Fo5hG`ejRuUq??xdI)vq%j#A`#Kye10Rzfywzt)poGrC^ zpAlT}dEcvVHK&2)0mFD70!6Ld(VBd)PWn^d{j9Hs7w&nUJpX zCLNLAx7{kh0OeWa(wV-*OeAuN3>A<8K!yM$oI%+l`QXzDM<*RU$b|s9X7G%qa0sa} z+H(h!vzUbFI9%C<2pJ1xJ=C*>!J`P8TZZ)Is?z;LzzHBAv2#mX^P$a(K!Ro#StdaQ z6xLU4{gKol`4i6j1EO)x(pg)3tqUn#i#hOSV9YNxUDVVMU6%qWum_x}@gvf6jnXHU z&&zTq-6Nd}?3|SvEOLs9hyzJU8o^?kE^2KD9X%6FQm3~K?-p-%<)vOweHcSMvFzAn z1~Z8O$|dggG1?dpoNAP@7t+@)EjLMF#Whv1M;6qsGfUx!L$*lSKz&C9GgejA&8u5p z3pqjB#67+p2e+WG&~Y^6qvtpQMBvzmMgG}LO?}wfn3-DBR;orEX9IolzAuW+EVIRl z*6vT5tSlp!q4|*Y?e64qjqPTV>CxHLT58DQ5HDt28r zb3ROgW=XuFJ87}qhLu|8PZ~_kv$4|mCoPe>W+2kHiLQdMghPrB#L=F3%(QI;3RE5X z1KQ^6>J()J?K3q#nC76Y_4hw(mZsggKr2tWT_iqhmSK^ToUGMmO2m_3V!w{l_(Ks-Ykq}9Y!-FOZp1y z07m-0n37Za3})A4bT#3S@6|$^r8%s!f$wk!@5rCtRRUao!+kY)zSviXa`A_HZe}o* zfnfY%m?@&W!T4ho3V1(rTZn}3a{rC}R;axF2!!=W3choM*-;UZH&N6R;&5JhjRN{u z1wm>SfYcguAw(sX@_~x$%qIyl3XqV$>&*)cen>&3wZ3YFIhs5b0y!V6tArmxBFK&k zD5_jtS8HBC0BR|!t*KPr-k?JAiWIRw-h6?O&^*}Eb8E49Z9HH35(OFu5cd=4A^A&z zL9+zEhwgB|6eHLyL>851hztt|n!2J8O@Xh|nXW|`*C{(* z6mCr#x;1I&)}&E58r+&RbZgSktw}?-CXFYK!2|{q8BAsn&tNKp=?rEvNMex6AcH|R zgFFUB3`!X+W>ChUg274#)ePzwKw}l^ei(Fw(EW~^d(8Vq;c>x3cjEwil9Rf8Jrscc>%UxpAV%i#mQX&IvqJZ*gm+tR+?vI!T zf#)Eecl{a=@ji$0CP(Ql*o1`$khfZt-LfNF@`RwzZtN6d-QcJrsUMA1q{_R3q5O z7vf<>#S10hCF{>chaGv-6WSCqs%%pnk7-Cvz2Eh}tlva5U@R)clR`+Tkn^UBlq*l? z%9!e^Hza;(dawv&_!m3wmfYYrv2=SKA&9U09`+6UkRhIV=(Gno&{1<2L4Vj-&nCiT z2Ana!6smEkGT}=?ou=?i@yn-Fli$MibPouUTsO5V+s9`6ET-u`*bHUeG~Wn-MHY#8 z&#x$pWmx2C_#-LOYFDuD3BNYfl6b__{2xH^%%pWgRE%YJ{SknlCwc!v;K*0|Ar1ug zJ9f``VRV>aT6H{3G)L26k%jzcX}XxSfD%Y35rY{r+70b^EKik~xbq%M;WUowhH-A7 zD3-fZgCdK7KgD_)Sq`ju?2lR!xpMq^9tAO~2h0HVOcfOOrRyF*w|Y!l z@4#Qj*?5nNeih$wfDU|>aS&J!4%f~i9RgpE<6eF&PX)xfZ-~*3rwkYCfedG$P;c@S z#b~dif^j%i!3NH%Xg6fIST|(232yN9SU2|f*FVv+wl8A9p8K^o-Wde;_8_pA27x^`2+Zz-DWkK-m+UjtO9p{u z0`}C7Me2fv_F|NkObJOVj!!$z}k1%cX|i2TOr!VCSXYUMEz` zc{92mM>O9R-hLtSseD(MY45d&nf4A7IHbWr?lkQ^ye-)-wu5`@Smu*DOnWzgjOf24IK8{0qCYC1JNa@u)|YfZ4L_`GTFe$iFu2)U!XQ)?X~ zoN!}d6P}T*wM8bJ!9y1LYtvp`NMfgTR=R5eOb!XXsMaEX3usef&z4C@;gwKArS)`c zbk^HuB|NFMwHuk)4o6Hpxp761Og2e zhTQ(`rC%|Q<9|LozQv_0#vtN|Aa>1fQmm%R96? zckRE>+q><)UiofT@+QsTn5MT<{Ew#wFoBXv{AwJA3(d(h7vMT^m4#BXjA(mcITsSQ#^(!yKTbe1^`H6YIHb5ux0(+UZqf8t=xJ@z2 zLX3;1W!6BwfRRRvNJTk-No*v0HhGE(!x}busu0&XH|N^tR!{`=IE#ixCIE*?QFO?q4Z7i)M(a2ZtC}vLUf^(^MIL|1LR0JSnnVy2iJuQ!|j(4T;g-LG4`(IRH)~Nm>kBI5kjGqUR6^ev`c~QskENhD8=b#fdRS0 zwMiMMIdWdA0@~Embsj^XaNPS*!lAb~I&w~ryyP2!oBreZeefz*+Bag-yW(BzbL8oL&-Wc*bok$uB0 zl4AVG zOG>`J;5`gPN*2U{_VdfU4qlvG07PCN>sp*`XFo04>!^zD~&djb-0 z<8t7jqio8o0#;K3HOEDg2(HMu# z(M&37@1|WU)ctgf_8xAcXL(-2*l4cpM zDd@J-?MrK2qP*9YG*d866%Xix?CXPX!cT^zb&XhXobvgQ#2!3~jwN<%Ops4b+7E_q z==v5Y5)}dsdDFcQD{|+&k^lT=v?BnS2745Mw z2{~e{;`i0WafUD1Wf*($1!qrJlv1lCvrH z6e-1?EG65M;*#vM;%2qolXOqp-DP*5ooSyb&D?oc(p_yc%4VERv?s&tvf}G$S@NfPJ=l>)uWSj$b z_dEYbl8JM`EmxoaYfX{p!i9gDfB6697a}CxOjNOtqz%<%?i!8l8_xPQP(p>PJEC>V zu@v#QvZg|Mo8Itdpc`^)eR)kqLw{58rCq~N7TL>e7Cg*hu}VL0eFHV)UxA>E+wwFD z{c=XyKOC#bNt&Y~YhkCtAny`e>UtfCdZ4&+EfC7kiehm^7qiYRC{}xIIL|8tG4FXe z)XOKFkz0>jZ-f&)d;#^zj(1J3LmYuieB!%XqT>JR_!94(1jkIrG0j2m30_kH22k)8 z+n8`%&}@}6%%eC0QmUbtujQsWh+d3Z67e8z0k!1GIycy{p32!^&nxg8Z`(Cg={pb? zY_2YEu+~XaTA(|@-3`2}%Pht1;`s<*XLb2{DXYaOg%;OT%@>zENr%Yfeuk#_RRuyo z+7C;d>i5vtVMn&;Z*!Y5V()V48};h^cToUj%#Z zW(;zS!M%VQgJlfB-;CTO8E8ferbK6WmID1!Gzi)b_=G6Zp(31aOF5s|Zh9mOOpYD$ z>C<%blFMMX-3ibS*r00qQ{uOqM&bEFNaW7ZAxdqLZ3?JLsO={ zKu8GNbR$i#$2+A7V^zJ4#q@fQ((m>w`bh`VaXzH!ilHGQ0fwplJVDZvxZj$X&^B_% zSYi7KS5z!3*%@d)L+L~pLT@6&G~DYFoU>sz9BZTy+(9blf$vtbe)pgG?qJx=O<@>l zg4#rZeuq)3v`4|c5|{U7znj?^Wg6y1-LjJ`TWJ#q)MU_-?_#N?}^Sc^3iOl?63osU8ke>AKf104-R zXg)O1Di-1{phXC)C)n?Q5aO{h_W{CW7JeK_UbYoM-#io5bCLVDzXNfmufGbWZ$CnG z9RUOUR_6E$`ScJK1aRdQR5nyv&D;@-XEJMekKXFa8mn1@c_SXYFl9u_XXsU~ z&I&AE+HifNyoGW4(d1UHwF~+Ut$ddNlHmHJTc}RM(Etixa5nNe`FKB1AyI^A87xFgstLp0 zH04o|8qCo%(L^5Ud5}r0?O>|B>^|`-_67PNq=>57)s^Kn zz|IT;-rqhPB4dAM1F)3xMioRwKbIlM$DRZ~RC$(x839(t!(e`z3kw*=Nnuai#Q4ZH zcPl=UEpFsn`@d2rQSv|W&mJT7yQy<+RlRlj$|=h?|4s3amwdLpHQRU*E7p|86-hh;Viyo9aHmL*0)8>-d=Az8mb5n}bDNACy z!y6x#o1_^?=*??!S7*{aph7U>RIIOtIM+5CDV=$3jb$HWu(em#-!|=zgG?xeU~T`k zk_Ax(wH;+5)Qp=w8&+0XtiSb_Y^b`g@|02%#c&JvAC!`8Pj*^*(NZd+Z`eLov|7EM zyNodZwcX2@n)t>nkckKjt|p~6;I`^oD*5;?Lb+YE;kIRPN^DTB!Hf{`+teKMES75) zSAnmtFyrphO36@|ZO+CmsAlON%2g~t39%jeahwu8{_WRbwN{U-mwbfsJ?GwF!t zUGG`>eeV}S1mQc>Yj`5%lk$@DFfG~-YZK1cKfEFuX93_b9tgUL66iDrV451b=xgXU zqMb&e5*-voRH_r^Ip2iPw`Bh(mzRRTDVIF?#gMS<^7<8(G^pMjhimp8M&#IX~9W$LrCit5?2R~_-?v9r>RXRZ@PRpC+5ce z-rsCn8VM*a^!!w-h!GF*Q81-Rs(j+CjO^YQX&WbBzy&~ma&2ceg^#4f9^03$w9DS- z#ml_gyZ6Oeua`G{BOiu1v*a7svn;u7W_Z%JsZp!ItEi_BqFknQb;PCR7Vyk$zZl4KLd@Kf)=tz7JpD6{0LK z=_$&!^lHm=ntM|mW14y*Z65DoSK4{`@V1Od7&Tmvu*z+tG-&xy=e4e!9u!MFX#3Rb z&M$xl*`<4&1ytRwY!oSQ=92lCcfX(1p?Z|d9i~@LXihet*%+F5WlKbo=8xWQ6R&L4 ziwMk=^5Mjzn}Tq$5k(EoTIDJzL!MmRV`h>8>ri3iHNiYnggG>qL2!Js?ywA~$c)7E&@-Q5vs+NwuH*+;nY;u249 zy0be;8)qFa|8dgEZPB;Od2ylz_A>1j5pm^B`1Z7%H^FOS2}Ky4^p&ret4`Z~CDJwZ z--w~+ZqwGOsNGqo?cR@9-idhke!TKVM3g7hV`~;5*;P8hm82LApbUqty1DIn`paI! zy$PHf!rAw5ZuEw5#)MN1t)onDq;GJzdnaX|mMH1!uMF@K4b3mmchlAlXqM=Pef=oO zI!+}VrmZ1t(WY-8x%DEFF~OypFA|iqG~Cdjc*sR{{&13MzOAw(2O>%kCRN>reXaZNQz@g@#6hS8cEp!fwXl*T1)%j-t=$?N;^xn z-JNkoJg*nRe!|&CLk~6+X-~KZ{s0>8XTs^EHDsOQ3{bJ2gkL({GIZb<6{Hg+xMoOl z)|(uEvcG3{tk;T$_y$r*3}*vfb#aqUb{$3A6}eaORh#sc=3>_`2^2EuT^VsgzbV(n zb!|j*6OMPCLM8^*8mK${MT|-zO^k{7)+1HA)bf&kMg zrOGOO#JTnsaN`O-(Q|k27ThQ~{BFtK+q-eNMGk4&uWLG>&9Z&yjo8gRuXi`|yq>Nc zOa{?h@2`Fq8|cE_1G>Okn|iiv8P?Qe-x#g4J6PqMEKuf%-KbCUe!d&^^?E<hpk39EA9#~Ib3i`4JFCg#f zGcCFZGXj=gRb4F%EnjlSL~bOsNO`sO!j_Uw5$52o$^FY>Qu(B^s~?dbZ5gS|)H-n= z8;{&Wma1Bhed-!T3|NU;WgHN<2-d7P?#sA6 zn9F4_7dof;938ABv{PHa&Q(nhJX*F{(K}w@0oDjaQA#*G=}%(LSrqaBIbzZu<%6o# z?p!=x>&k)KFG#4SUCuf0eLUfKuUHRit-ENhhY$0$G^UNBpWrBWJw0&2_eXgiVgSBB zhRTJpj|smf^qJ?M9)~J#pfLIb)tNCcTC6(03D$No?^hkVP2s*5pcxYK56;iG?F9Cv z#Qmmit1&t3Z!#s>u4#HRRzz;a@y=Ebq*$cKT#W|Af3ATT>exfhrbRg110Z4 z`hI;WZ{7+3 zFS&}pv8Z>R_|(4^x$!1EWs$c}#GkGtAo|-=3L3mF6kY--avMeNc;w2RT@MKkAj4#6 z!JWp3&VAk^rY+=jN@~}cwVTm2dy>Y6G{Zr;d9DkB;!4E*xy_R0$1P&<9W6+ z%KaE!P=5fF4O|;Z-t8@?$O{Li5$# zcKpFD4@)k?Q3kF+jh!?iX!b*e3eTy=OOg(3;}st}QT-%?SZ|O7SDKV?a8PeBsKUR>Rc+U)j%kq*KFA1?4Y6b(iwKuJ#eL5EJGH1Ggk%G%**7C^ z1e&@@A7lroyZmSzLK4?UAyQ#bA4SV0xX(R`Ka%57t`5heoadHr_iH4pIpKIy+vIe| zqhDg!o36xdeBF6BOLia7*|HMan%cBC(qkW-X#^LAI43!hD?>va|0s%nBPjZfq{%&s z=GiE+{wOifJR%)M9u-BAD2jIXC?N^taHDh_h+sz@m}$LtKY*9ozSzrmgF3W;ZgpCA zhe^LlXb7@kABEG?4>AvOr)^Y1o1(l`?q+z-al!t+)Nc~JpB3`tG2BBV_b1S=@$>p6{~u)Urd+VON_($H&n{J!l+!IZ9A$q$pekTVIM!?S`7=GmCr%C4vi z3WnvC3bcyQAt*^t1mXK+-bN5vm;$P;GnW8qk^vC0oxRtWN?Q-lflQu_8iqXKL>2H2 zswI4QA9%nA#>K3tK3P7Op&v4%odSa$u}McAqnbHsU{Am|Ci)=-Cuxn%oO*C69*8jU z97!uS@mQ|%$;2ZKi@MXIBdvzJav~dol)>G zjse(O)Q0Ub7(Svu;DXjkBs}v*EYvXrg{cbaVQ&5(SA1S||8vFa@+r$3{-*Yi-~Y*6 zv3bD#&*H&X|C9TlnYnVKPz=6T|4;n-&ksR^p!sY3Cusic7z$|qZg`^a*MFu12+d#h z)tW!bC-9=Uefk|{DVAgxB^9NXe3C5fyzqn5vuTWs}?@%8ovU|XFNTi z=Nh89gg(0B@wW(hVIl(gbl{yJLSNIB6sPy}p3w|&I$!TjAg#ffd_B+S={=bY9$@eo zgQpSj=!RzW86E=Fj~;G3+zZwQ##J@O{7StKflz*#FhiERG6acq3R?`E zo~5ntPv=^|ZZrqx$(zp02ipH5Qr_foZGsE_rf*!E&im7FI;N!*3bQX!AfZ=I`y8pB zTsm`NbEf5~tsoAFj;FTt?lh`92012KzAIFy60yRh{oI?DqGjzLK+AUyZ*6QRqVL*t z&Ni~?if+>=m+kYpO&5dK#pC#64|1HzChxd}wyuW}KXwjn;M6^J4CfxazjY=@c=ae? zjKo=l=Pp7T(a;m|&xmlNkROIvJe?Dbh{!k;k+1u+*heUFd?QE{g|L{f?N{^^Ai-); z5r1SyxY+Fnd#=YZ$D3PURCHBp4av%DcZk_8bSF5c5h0Wh1y~tmf0RdDc?KtM5*K0% zctIY&r=e32!0Zjd&s}^C7-w_Eris_1%bf_?&l*DcSKhBC_D}lS(u7-SeviW{O+9TJ z-*XjT-T}02hMGsc2c4Gh5;prr+Sk$%e7b$Lf0oa##dp-K=AW`@%Cz(?6Z5Nt!4Vlt zM_nc6PY4PZAcZR%FoaT=3II=@go&o6i)t%s&37~XZR>-I=ZQ{w2uTet0tuIlQbwv? z(**Tykebd+3)VKGpk7U9rH2GPAO%YyYI^P*o%D#*CUr=^l}<{h#Pcp`pR`|1^Lbf1 zC>>VQeBLSjT6$Ma&z%$ghVPDM&O!d${XfpO#B2UH`2UUpd#n`G_x^XGKDX6WOs7@XOEngbz7iF6dg* z=Q`mawMR&>XBCyK%D-%(P5X4pzU573@1hh_+X~mEij8`*h*2~ z>)fixkaNLs5$w5*A3nh@T~8;45PnR^!1F13_Y=&8Mp1tVF7?pO`ajJ#@M~PS=(W}& zHIl`VhW7bP(oxZ%eoa(*gHBL=z8Os6b8&uxZMDW>P)%`k5HgrZ;XE}?-8 zd){zfilTR0n1qHSoZ2A0do7b2nQUYdt{x$t7AChd3CxCY`w`9qVtO9(6n^^Qoh_@C z?-{}oPW{wbVZh?(`_`lK)keRS(okrvS4@*b1uF}9=QQBlt^gJBLzYNIh*X~Pu}h?1 z;sv2}B@-wSVzDw-oS)M3+*a?7Kp=p7;zSaq6~oBDq2f6TQBQZ0G13|#qUuow?<7(9 z1)8>$7_CoAY`QOo=^X}X<>-bAIa}MFmkD#xeiDs*CH-^x} zAq?jbnmqS21_ef>8w!k}bkrHfdqu;C;0S)dj}-BvY8Wd6{CAYW_!;#a5ty%u?`*74 zFb3aAZXKbPhK!8L^5RjsT=b3qhvX!evLrBt{rSs@jofRdeD-Z!yKB(~$CUtaO2_dwJQrw3EG z8!DeDT7|=Tf+?K7`Fb8I4|mUGMh0WWRC@uH;XIKa&ONtS17XyN>iJ1JBX5t=yC3HW z>|hK^u`ueB^-tl7*1lv``4F9S1Lx-3zP>t=m-lUJg?v~fw=IZQyHXj*#=Sa<6#-}w zxd2oop0@papopW9$F=&Vd6cVf`l$iwr;#4`(ne~L0uNc_2c839_KtgnNj;1{V0t&~ z>R}2|!L$tXOe752qu~m9!3JVDPf6$#592-P7|sI$@lGdQQPG9$-;1xRWvL z_lEDp%`-#9s`jgor*m^v4ReQRSpWwQu(d$L?*lD%H2%6@4;+oZ8IXQ=K>EFYY3Pl4 z^hqFDZu~8x>K3iJ&9s%TfqL=`4$Wz(QDn06-jIvU5IVb;5GBqW43c>URy>-&5? zQu$D1zv-rYT2y+n^;t<13wEN+r__;(E!LL`>Vve@k%|^T>2~T!Lm*F19ck>BiWI4) z&IzLMfz*-TpzBh)1qBtK7esoxmSbC*aJnlWhM&d*e?Wn>uH}e}(=uImAvPS|!*tWQ zhTg+^w~2ihjA}GvHxPC+ErC-R1EOO6EGw243q5b33E_=SCf)X>*bDU$h1i~ekW|2A zKaprYA$}fHDpEco_aajPS?YZzqgp2l-zo`ml|(xmKLZnoL>vX!%KEsq@l$R`X8bgG z9F14@Nqmm~$jt}-n?}!JTyNz2Y8&++k#sBvX$m3|bXWMHA6+O;%YbP@Ko&Lp;J@1F z6m>p%$9?}de<*6;`47>(^{b~WpZGV$e}4aIU)6x`Klz`1|6eZse+n53(*K=x~o@8rj`jfrMF>rx#Fa*dMNwd7<`|VtqnNTLCkIXJX+Zw3`JYy ztM>=d>i&S)dlOmaZ|o0X!%%cC!ic*kPovT;Vf}(2h2tI~ABPtdcMtd~1E$_7CNwc} z`&-n{sKR=HXx*>g4cT{hu$a`tLg^SJB!ovQL)?&NLrG@Ccql>d{t?*zJKO=hf=V47 zFWIfjUeefR(fMIWpmImDrn^Je9|Er@Lw`sR+;42dxIyUiq{jP;KB;7JucAZK7t}A& zmwYD&dH21mk))6C3xY%ujo%pjtoYrB-;+D65^0K_H@Ae-?5lS}c@*v^r{VPJ((~G( za9#$ecQ0Yg$D+eM>j~RLSTkcz#=Z-EndeCc&ocNvgBKY5kikz7tih*>1K#xkFZzK# z_M(t5A<q?;)4AZLo>0?6WLLP$mBMIuhsnBh_ecQ5dmKk6n7q*h zX7&Z*0|SBTy;E2!;rJUg%K+_t?x`cHjc#nLhS1e8LVOE?C^WfYn=$dz#in2IC>5OE z{f7zqofeQ*5*4B7zVS62(BU@48>_s|xYPTE<0x7}1JiCY713h*rQxQgA0TDFG}P48 zB_ffg<~@w`Cau-Jk+l0-Us<3*xluqo+0?F2?+OBw7M=c4pl$=od!Hu~p5M(qQ`amM zV)DC6GEF?=YYAjB>1KW$6|!_B1wIo``j{xd4E=^u+w15}*BU%yzZhwHKsZHQ%riYy zA!?Z{>}9*TW$nrVWNowk(zOjH`=t@KYn8WAj93@8JC-HpvzAMvnIC3L79-Tfi#L&v zy8xuFJ4OCD)7F`YcuxaN-AY%S07u&n?Jh%7biQk(fZ;14LlNO##BmWHl}EPpJ*Zjv z?eHOPh+2^kx6JY%-@tX}zAtw3%gy~IF6G1NePw=C2z#AFx(sOQ>h)~_#dj?gJwfB= zrI?0$NFdcc65AjevWIlAl}RP1sconNj~)oWLBK^(5mT=b#8pZ&0zidk`mU25P%dd; zxySi!6l|G>3CcmWbBKE~cSd)RSYnT)cc(H5i8X|KPQ4rSG|I0wh~{zT5LzhpZpiw> zsWAxQ(H_0~VeYE1WeTC?T+cfWqIqdb$d@g*{rB|*t2x6=SPj??r3~x?V5x(^(g%TM z1YiN=DHoXzz*P2NC3A(ELFD+xDlaf5LU#}=as@Bb?bsj;x_UPR-)Iu)5dY>NntM`l zSW554o-~^7Cn59z*Yiu#(R2e3p=*NPjg4tEZ*&gv)9h&8fEGe>9pZ7Z2)6ezo~IC_ zMfe(S9bzZoY8s*03c-OSC|P(2343~a(IvDs?&D;{r_*rJmS`?7-Wtxu>CDS*YP-QP zoZ6E;oPVNsFHqy57ED#HGQx$->G9q0?7?h>3!%YR9;Xxi`T?Ob5s$%&l7v#A5KtiG z;l>1hx`R>N(>I(t5$7~&VC?T|93s-4l%=tTJHEBQr+tx|E9@CUC@zm6)<$qkHB#~5 z@L_EP=jI4rIyizp-y^w`AHkh`2;DeF5LY9(i66lmCPwhk{fNev`2Rw~bd{>Gkh8D~ zl857NHW%JLShLg6d}%L9c+>v8fd{z+`naJS1M=ff2wK!DzdeB(75tfwKdr0==GAo9 za{?@^tcj;g4^Q%CipNE<0Wml>?-y{_%c3fgjVn-CyXM@p^w89@*F%U7=m|%-Z{jVL z(1HkWxe&kBZ@7QIKH4t~MAQ34>`9|}2zJCBkROB1id<@h#7TvbI6o%|`Lh-mztlrX z{Uxa(RYev#5))2%K<{K1;n}o@vYTk6D)O1OZU)JON6Xqfx#fnH8y6K#4mjDhZ-VO# zptz?+b81_(U36A+G+ET)eSfz1hLUU}`C(s}R$Hg3Fbo6at8oxmv!{P<_G z=A8VTNQp|+obl8y8;PM26d1?QZEzM*SBw}1r?GSm9>Hz;7%G9{3aS4QDvW-b%LQC( z9q7GlIMrNpG@mtf>XK!x_f^sKzT@QDDu%o19c_}V3?CZHk?Y#yVYo;Pc-Zg=R0i*bXvlEYrw4#B;wOL_8#O|7pYFjxh zdw3#FOYd+oRWM7&P=^uf21y#nd&5T1?_>nM-}G7kiQc9TUOx&pg$fq$j%0hbPKd@I zks)3sVvem7ZUQs_V5cVgAfh#*9H3OZ_N_#2{w><-REj&&B>9{uNh}?~MJ$%4w?##8 zM%@G|BeaOvvWO;$f_vie__ovuWk2JMof>kj5Ki%tWNc#@1Cbf+SHDIp>WFNVbDKe0 zs9PP+8`8w0h>798VU)qgy!*Ui>je6)^?7liv*>*r^7;YV2Ld_<0y+l*_6-EQGZ3(U zAmD%xkN`~|$6D`3=VSbQDTcS8>3M0Apbc0#=xd%2aA+Xl@Ib&3A7D>7V!r46y1_Tg`at~} zLirO>P#GLfJ?aWE$*2)@y)D+1C@_$oW3{s6U7)F)IipEa^|ZZ=Cb7`FfxOZ5pwzpk zGM2MVqiJW+yBo;VH!ucLa@`_29rF_u!g+X`bwU~1z!h$ho7tj)t-#zr2(Tlq z95GH4N7{14I6oX|6^LBQbI;LC-7^xLcaCOi zagpFu_cf}S%4@dE@jXP?v=7iU2TP)L=ddH}1uY{L1rd8rL@XEul8VGrTkhaZJm3vJ z2uuw7kkg8%CD-GARjq5|(AcK-37P}5<&8tX@xH6%Z}aCr!K)&-a5$WFeEmLSKgNR3 z9xn(!7s8V%l($h|0ul0pRn2fb;zTnBv@(1|9+6F9QMH0|DO-1oZd- z0Ya%vWmIx;@kcaD6j1@M;;vU7)X>uxD4?kxPJ@%)jd?qow^Hfdn77x{T&U+g zp`&?tLr*i)XnyrdOy27iY(dZ;%}cF?MI`Dt#UmG1p=!dBlSg4(*a%z@iWqStCmS*H zL<&CsnH-79KzulogDj?BDX7rf0kFs#WU-r$WG!OEfFoHauZiv6I)V6!w8pv?7;qCR z&bb`(!pCTV;n-)WT+WYlmPgxvorJlw2(lU+pV;4xbgYS1>(Nf+ zZKy$@>s$G8kUoauQrd9tgivhN*)yZ#eDAfzp(mV-~ z6@_5|Sl7=2Fd0Bt0M-v;0k{bh64zZ+t}d?=gBM~34si8S98>%*XnlE|wSEFq_qN!i zP<&d%=Pbmi>MX>lVjnOvdX<5oFUbqWF)%C%$@iwfTWB)KQB4MYtOpT(s{#c%w#4U7 zw1*vQB}Da$QS1j?T!YvT{#*V!;(s7Kfjlu&TG7x+5GfFPuPvBl||WBo*cgb6`W zlO4v_40w86XwQSG{?b$Z6~a%3X{p;X@Vuh8zp2f$ILR4$B!nbjlV+d^qs*%HcNza|@9Z2xIbjIx*aq6MBe*x#yB9(iOjH>?5An?Blf)d<1$sBI zWOB7A&cv1V_0sPtA<}I}PMu(I;^*jN?eN1=G~Jy^*5QH11afeU*=|(~@1oz1l)m=u z6kXGWBvVT&)GcDHoAw!nx7MEV=rzvch&h8RbUy5&hC11MY+I6aP7BK~xWGO5+3}l$ zUoL*d_$|e61%9{ibX_<*1T~(CXNdIFqL`>25GqoWUtThKYB_nJqZ{gR(r)lDgYPhS zg26KkzQ^Es1}`%BF@n)JPTa?&!V8W9N(FdB^|K}{psZy?!)wquD}ImTH%|RMr~Z8j ze_zFqpQO7VOV5|jzYim=F4jo-fHH$FG#;QZ;T-BrhS^2uEZ3S||JqS80kNR=D>}ps zjz7p#C*ZRz&Y2UCH1cycGkg2nW$YJwtwZe>uh_DLzTfv@bX1c_@w2}v#badm|FKX0 z(5r12^~_OjH}+G9uonHdIrTTU_%3FWLa3G!UzNVxi;KSS6>-r<(S2vp1OwZi<2Z^h zuw1h)P1u59KspDU?B@NaUEdXxNEn$`oj1~;BFbo#uhNKGysaQl+=)6)i!{tH;&0*w zQ}Yy`60m7sWY-1gDo}I?ih57%=DhUYxtm%TZ#=*lA<6qTBBYp?Amh+)B3gX-i2h2$ zspX7zgFwZ&q2Rn`{=jSIKyoTkhxZr4V&c7qrVsCnqBeCvc7vQKI|LX-6qAUzMS1VP zqw zEts&!7%7=Y12Jp!?Y%?Rme_kEOwGJOUaj)1_w-tmy;r*~S_R~J52>+u?_M>QQbt`38Z9o86>z1EO>JXDn+6tzF(qyg*!Tb}U^tl&04lG>!#4zAfr1kQz>XbF zsNlhR%LRJ(44&%tQP@#5WE=T$N8u7QidV}S{c5OD3isK_ z+(v4)!G{8Vd!y*FY82W_ZtO=bAswiP9@^jTn*yG^J_Jo36hV#@<-^h<)BhE!gg_5{ zqj1~RpxdtoDW6#qmH8f=w#R@OBZ~T(a)&4|jh>^>*%@g|GAeG+P&kY-B0AwuJn2Hg@-7Sv2*Of^$s zhN0)mnx1}E+6a4R@r@ZBS?RC5Mv*9_dNEXpj!;W8g+Oqz4kFRvbe)Z1y16Kd_69I& z%1A2cMp5&WN(W*)jrm;EJf+f$*iJb~DuZ04Qjd~K^U+jl=~7>%%B9^4gR=s^H@oe9ggxlF9l%Cb7f?=G;5GT)R;hthU9udp zbjXzyPkIl7OyyQfES3J%PWmIH zQui1(`9%E*4{n>#uTZ=nebTRp>n8(9524#&am1EMJcMLSeh2lZhFP|Pokd0MklU$g z!>sd-^W~1)o|jgr8psjCv~``e@a%6~o=X%=n>I#eIU5Fh14woDx=?f7@wzo^=9Ju2 z?$D&CjU9R=d(`u7=#k`G*|&SBRHF7N*Kom)Cx%a@Fea70&2le|=3bKV@1=LbaM~u> zDI9k)%490nQH;NpI}Q70KpXbW7#YFif&P?FK<38*os3r?Bin}lKq}Ux{%pY?tm#K( z+0cHS68B8U{6iqew)>$Y#UBaPJZjm#p2mkH^za;;SP+#1Q5;&8L2TzqYwJ&sp;|sB z+wHTPMFn85H4V_d$Ywn+%^{o12a}+EqR~YvZC)>-!e1tCmWIE>a7T(##O@%L z{{}(#ZPtO@l~!vbv_AIdhAm1u(eIZ*!c~HAQr-;mn<%Le78Q3~A-g&|qf28t2KB#SYmHP6Bp3O^3wRo&e1<6icTIHoh_5gWnCRrMJD@wUq72u0d z2Q3V9wn|{24jfX$6sUlLUCbn6_kS0AWx=+~f-(O3c-(xlGmVGz(CYvP#3$E4Hq8M; zHqDIy*>n^BY?h+v=I*GukUUFxsN0Y{^LEekrY2dUDER(PhjGb)d>ig*fuBl15;u%M zZLlCvz#+dS&5K5KkimZArNYITr%WyNn~-Wl$s@gIwkIoM(sI;tKwg(?ENbK^FTQQyo7zB6!e zAW&|`>o#|j_0A4FHi?6hl7@kB1r7fhHv74$ctula_hDoX)?|*C)=c1`LJPe4~Z%nd+oBI_u&!dHq;E9{c^7$6_ za8njC^-<*Kqscx+)5tNJB4sN%C+jAd>e}5NbkQ81!;Mj7%rcAd1&i}cO$aXyO$aZQ zCd3Pgy!BD^$tioL&6tiZxYV@^|IDH6jxCIRCuV2N!Wb=PFAnON)^pJv(Jj#{q9;Uu z5OpN#hfz&YH%46^l@fK{a>DW(%cGXBTQ*tNSc)xKmZ_GJ7Ki16c1Ami00_@&PigJi zBic^wn+S{WW$jLFgLbR7R;$q5+V$E}tx&sGo2TV!S8H=L64vUU(LJ-M?IM(-LB~+d z8AEzHmInG!G|-PCY~mQJ%|^{c{EN&@$RP(cKK}r}VY-O-r}aT%$J%nw?R6Cm+8r{` z8}K$WeOyo3V#s6UuOXceXa@EzsPmbPb+?N(pQiKiOxmZKNixUxhVP{?3I~p}19O|Z z?9Cr0kb8yqdCv^&LMhGBaQfZ zP$W|0tBlQEgFxC$nfl2R`W+;xeu`m+h1Y+} zQ2L+>Kx_W14Iu`dE%T$APC7f^x2E?ReEHD$XMHbwUu=3!w5+fov~K5Xwx*M!B`eyS zoCf0CYB`*K6xNcSOX%=WX#~y7IAp~2LG;OumtE*;`ryjOsPv;3dr2S(h>MIbgtgWd zt0K>vpRrNZbfN1yl9wRDlPGUal5qm*EtAYZxPz|SwlYk@9;U0X=PEkNFa(9B!pw_c z$c0eD#0VETaYs_6?Ig;t$C_&TU{3vy1D)O@)*({BE@wD!WQiF#2XXU`$U6CBSbZYU zS+=DM>Yt4#Wwin_eDncl)sB%0;xW{fJ;$SsWrM|rkTE;C8YMddotSKEEGN(NzKv;C zcyD*KE=;o;bm>8H&(G1`*W-K3c(jFa|BvPwZ& zWn$YEECNh|vdTpIDvhG7Qc%R3NT`jXWI&Lc6AT-hN|qDyv3%csPcMpE|HDMFTUMqOUPbcC_HhdolXwG| zEqMwkWwr0moAf_RKzOCli#>(RX9_bSr%>FTBC#30 zeo`ppPN9q{h4zyvJT_CPYZ-ghw&8u<{Nvq~h|1<^tf|me^O!sUXc2ili@vGF)H;g- z#EjnN?qrkm&paTu{|*g&XZFX2M0PYEmAlq=to5FtRL*zz3#f0&9cpN3%|nuQg}K9E zZb+Na+!RX(Oa|rUi0#Q5tO=!2qO2HvAbTiYf$ZDaaJghdTV?Z?Mp)L<8qiry#xsFS z1>)fpZp##!MT~2MSwtGWqs9;3Ht*v^F=mPeGeOj%#U<`+H)yq`3-ggOQ{}WUW z^0!@X&Emn*Zq0TgP+I1Z+b(bJ9<_NtjRNQO6a&rfVn-k1j~QV!r@7nC{jyC5?(La| zAK4~w9QKicPC4H=`Tn42s^8v2^HZT;F|w zC$8k=Sqj~Z_8p11hj3uXV^T@_TjCtV3+Rpr0`|~s^b~J><7!%+0kc~CBf!+s4kU_V ze+v&E3*#SI+7?nAa3jS5H?v644)<<;~m0Ze$$YZ;eCfF`NVNMC;nrE^94Enr6E;M&|@h?blp^b7bG(qs_BI zYMFQPHFR#{;f=WC^kII8B3+C*7CbDtk&F&`Q*jZeE@J~adSTRmUcRi@w-EL)Qq0X` zJM+M%?A9C8?9z#E3d0)URJOH&f{v#nWE_dWIOQb@&LYlV$)8R9`7(cC?GPuuZSUh6 zxDH>j9IHH_W#NE;ZekGo3dQLlL}70o$xiy7vvg%=A%<~r;Loj|G&=%N&-39g?1yky zyWu9c3XF*%;HZXx-iF^(dvLBiM7cJ`7#6hwjd(UGdHt!cvJnsSh(-*ahJ1_SvDuYd zdmHWh_!T2NUPi~;JY5|e0uH4(%7x+>Ehml|^*Ab3<8I}!sKnjJeT9$#r2VjjM2`jq87_fAEYI-dLs~p3$e&|$B>6hCydyG^ z$ds4jDSHOipEXmvF7P8m>|%qbV{#hj6+})NRwD_#%p+p^R{X8%;7lM9=9QcQ-;IzR zAZa9ekH=dV4TY7e(j6iKtqN`jHh7VrM8;)@8O`cuZlBO5a@9N=_U2k~r$Z`V%wP%E6yQioy!@-K1`r~)lTyk8~MqEHgHOgF-R)n3@+iNHJm@UDK0A{44Bx4 z>#RktvxCrcy0ndnty!ax=3VwHH}HqnyLeNUu4{dOzd zH2_j!>jM(Qz5;7%L(TRJiBZp@;*5M%^FHDy4S8$KK_a2M4Z|D<-m$fXH(>)kVe8)- z?YV(J84Q2mM}NmsrbU`gNrhmnIMD{GUQnql+J1ze?c2s^1F;@fFx+mqoo)guS(m@T zt<55uB6n-}s0IS9ckz=(*SIG&&-C!FaRvsfUEA8i`<8>bvUT8<*1K4ih1QmIT!veb zKOoP~R~lng-US035SPjfu4V@1U<@6i-{L3eP9zU@m@}d$hDALic+(?FNKrWdp2xC27IM zpnV*e+*_wQp<0z77$iq%yo|fB8(4qu<81kq9Q%R39Jg^C745qm_vM4~MRrB=(C!84 zR8@Va0od0KkK!bGMz=xKHIT8*l4&g;M{D^3l&Hor_<2+t4(dTPZm}}bj-*=#GZe{? zZ|q9cECWCU_zqroeRt!I8Utm9!SW8^lzvy=fAB`w3S7+7+Geas_jFQgVbER>QC{T! z3(G&>wM;QxW6P(y#x^7vYFkNTmU^hqg~?xInWwS7LR(t1wx;&B8iOsPhgWr}XR21e z%6N$L%O@(4F9NAyCYg#AP5X)KPcAWf$>^=4504%=X4aUOM#ZFNq}HVVB(*1Xf@_6q zw4t{RCxOv9a8{<|fFslDcQDC;N#(JIl&`$??f+YOCywI(_J2*uT2cfLcU$TDsb$MQ zQTLky->>c`xAn>YARm0}pU(N!;b;fvx3_=JuL|=6&hP5a#QAY9!TJ3#g7cezN^pJ~ z`{n$?X~T~da4&Eh#$F+rH>#9vxSIqdzbk1(My(Ih4M+|oN%#;tM1C%_QerceN5Y1u zWzoDBa+JUWsv-50W})(-5uQm<6#NX`seEXR>Xfu}9Hj8QKo!WbzpgYw-4Vw;jsNQOh!9sd{!R+C zpC&eaig1j)`)}$l$@Hfv#E!hXL-M7ZlR*TpY}@>n^XXA2M9xPVU%;O|WSOHdBo#|| z5UI9F{F%nO`MiQfS&YAuS8I9Y<K5aF6m?!uazSxIU#?^x{od)hCA$&X z>tV?G#u>M)AFaSe>b2)8kho79fa7_o^-M;MWZBf|%sNJ|!J%CQ_EdB2&x+16SB)TQI#s)rQnT>o%#w&%s=gkMmgMiZBIM{clryJ~`>Pa?U zuoZ58G@64~Fh`Ds72{7MG^X+g8UPukA+`;NbF{x2O&FFTj`pT8{-2>q)wat`de$Ub z90kiIb+f#5eFWWdF(Eu^SEXig0-yA>lSfr_Y0nRFy`*U0V)RbJQ_>a=)n&SsfA2t$X$iEUr@-<#Ms`)3f2vuYP&6N||ib29tLuBjSaXDy< zJ|n@mkw_vmxJ7OzBtasH<&vz$c-_UU$lL`3G&U|;Fn6xDJbPKbR$1+FY0v??N?jrbdvv+lEO)cxkH@HgcD_jkYb#;iaT2ZboZuGcnD_zK>SzCWQiHF?U#&zX2 z<53Ix!G#k*z3Nk~vQ|JEy8d5K8cHbrzxA(g{`d0w_3nmMQ_Jr8L<(R8D1fq!ee%DX zk8b}j(f}kcP9e2KBwd2sBFrGw|IMoUTc@sB<&DOZ_HT?sh~M1BdHL47?2_#0oZ{l> zl7+?AxeK#PV)Nz|EnZp}<1WcxQSzm4#cLBQZIXI;vVZEq3LFaR;i1n&J!E0wfO@Em zpdM0D3F=|%#nc0p3Dy|*Iv9D$6&K?!Ypk!A`}FO0T}v#^aW7~nSyNFD7Hcx}=Y8^C zYZv9b)?RJD3L%v7SPfFo$Saw&O>>|wl<^I=re+bDWwZp8meyhK<1>f17510i?PD^# z^_$gArk4xlH`5;2)oCb(Y8z|HS8=p37aiv+t7W|0Dg!(l6kl`pYrlunX#dP@#b2(gRT&CqL%q}j;F9IS1jw)N@S_8$?ZNymR6`qPRAgsx* zvNaWDYgI6d@kaCUu8NxVQ(fyz>#G|26=>nMSBz~keBGQwjcWuUKu!CT=WE!?A~2 zN_f`X371^ov!_+>uQQYtkdnnAUp=|?u#qOncg1EL3ZIMEY`mcPecMKO%NX;O-ho!9&2wA6s`AQ5w09^@O9lk!&Z<+n>Y&S* zU~~Zoh1m`Y0UV4P>!gr$z*T!*!l_JH6;y4gs4vFSuBdgRhd7tb$^x9F?sQgN1VY)e zFQm7#DL20fP0H8g>x%0tU`biOxW;{!RXW<3Rh5-)E*iPD<@9hGqPR*UW+{m^#1MsG z_1zSxz@R+Gjg)L?Z`fSBD_HGspBnixMw(dV2ATz5kBfD+O!Xu$*HrORCTm-bZCA72 zt$m4-#Ov{%##lMSkivHt?R^dJHK)y-XIVzt)RW5YD;}yTGD7XW`?wCgWARAD@7@wr zz_^0->e)_OBXFos4M$yzC3}v`^ZuN8&%0YX8jFnl#t63XDsPVDV@)5T_(N;2p9b_<`S_Is>kv2JT!0+Pj4t$WV+|3jXQ$THFAX|TdJ5q!^XF(l0xHzdy~^}H0>F!0Ly%jc}Ae`|f} zoT^6u6XaxqFZn(ST43M$VRPm;9_sJb_hjW)xGMyW<-pMmRS4r+65eZQI|rA!p)^$* zNNwIwx;qU@ZXemtvQi5OI9+=WNloJ1?s@qodBsq;Gp%)Pc?I+b3+ium=PzF1);hR; z7^S#RUt5sokj9S+cD9}?FmknfAL3Xluk7vh{86qr+3e;~v0|rq*!LI31XpgB6Rt(o zPd4)j=LS(ibC&>`Fl_VWJH?O1uDI0F--o>K_hLz^Rk!zoc@=06zTz;mC&Um6P>Loq zG~qBt>q?=e$#CXJkbX}ir~q`(WO^Xw@*^pnO(GMM)b=3lIDd@0ubPX9J8S(m5Ch@K zzmM<$Duej2xl0c`A>{_L!`ui?Yy@+h)_O;9iIb2C);A1RdPNFp6Jfmi#z)Ev)oc)r z26C&M?PhG(KR3O3!7D*$fK6<92E*Tp|L|s<#XoW>Rc^kZSw-_5C}$kn$!Y`JBf)gk zHH^at#i&JDDgiiynBgUbN{bQn3>!gr@e~Fy8$o<4oy14bsCDzaC18XdG z57Ih2-N0QX3kvdc7cVL<$zD{VU5P~3!OXS6%tgluFGeJ`9NL?eBcL>X?`;_nc4B8` zs~nf_pvvuAxw+R8C7MZ(HNAgyecXP^1vF@mW%HdZOzf2JkeQy}d%s1FUhT%S`z@aM z%I8lRJDQDgK4mH)gyI%&L|x$Y%XSH*>j4L0-V*-V#&o2 zx-L30yLeWQp#Pk5US(W~(bOi7@oy$>g18`x$Y>0W@RMm{?)nLgRduc(EG8IDl1R;%Hv3IaUc>`h!x#D-?T74_@Rrvxl zywCD*6k(7P6Oq6Xo_{f zAIVI_0KfK02Myb=Jmj0C{*|o3LVC2X#^MIkHW*3fA;MF_Uz$}r_U~YEb z@rlQ%Gk+dAvn61B$1N&Ls(}D}&sz4&8aSOkfZQGT3oXj)Ri`i`Dd{~ zA_%=wu6E>eE)Gw!4Z}9zo1xGODIgpThk&7-H-@Z$Z;Vj3?wJXI5TzRcl-3qIISsPH zfI{Ww547m|VfYWPeBaC!X84Nl(k!EANYsVEyrMcE7jJH=lGyu{!XGYRL3q>3)#(Kd^z=q}-!9m_Dx8Fc9# zJB&wKSh`a!y&a)rOz29A8CiQE<9!BDq|ViVR|pV1>$YG7=8g-oRLB{ z<@tN@_MYo7-o2zuduSuI zcfa{X1BA0l5dj+}(VW}Ga6w6oM3F)XXA)frl8FA2BovqyGO6uW{(Ol)Tlw=4en=6G zxC@ra5n1Yu^P<>88OGmsU87mX*r1_L*z00%hM_lbY)---We0ca*XImUQEiZpooHrk zP#D>SO4oP43$I?_sYgBLy{uSp1Q~npqg4_WrKLS`^PYDZOx2HMr_4Zf&fp zM@UY_?JUlj0?9~FE^8=*E8yC@x?)OMZH=dDbz^N~gA3Ha6p#azAjo&@nyc{;jQB^^ z;`9FdfJBRp#~osYMezu8xg8Cfngcyn+Vws{Yj&}Vv8V$xXgmnT_DSN3)aIB=_ILA z;ey=h1;y7U2TK_!4PxmcN|Oo{eJNS%OD)z z@Xr#C_qG2e#8)>qOf5_LL;*1Kf8GD3J0k6WgU<&3TO`2$X(8`MOaoNJ_w_I2{R*cj z+A{1j33+#7l|jfG6(QtJgK`i;UQa(l-ow)9Vd*+}ymIcrl<>Mi%0y$_tJkb6ms>C1 zJ#T5TyKwR1h0;XVDU0N7il)2gE?tysoG@){Q{NnzDPAZ!$#u%Q3ZOuTN1#ue*g zfUM&39zD48iEsRA`}wV>@A$@sWA)#wer3(3@(nk4-B@(pm}L`-%L{*7u=3g=+E6V; z8=;MabBjwGqorwMwei{nZIU)wo1#tAGPLR1OuSNy>y2x&_1d!Ho8mj-d*fXRSqV2M zG$rgz=tww`(3{{)bS0)IW+fIT-keyM*pzs0;?Bg~i5-bY5>F(aN$gFu*`4;G_HVM& zltsGi6YS~s+4d~^e0!mNh5csx8hf36gT2Y_wcl&M-@eoSuzk0Euf4;5(0;^z%znat z%6`Uv&faUcI&2QR!|6zN40VifxEyJY369B*bjM7`Y{wi&mLtzG-?7k9=qPclaNOv) z*-`FT<5=gYb9fvZ92*@?jx7$aW1Hh%$JZVAJHF%C>1cC2?0D3%+tKdW>v+=9;dsVz z(D7Tx5yuOTV~#&MPB{FIZ?V%WaGsoU{MB*B@s8u1M8mNeU$Ff$LMMLIDLXXNuR7w)zkIq`b_;YeYSqNK1aVw&(d@BJbkV{U%y6Q zs4vnB^&-7QU#73nuh(zXZ_;npSLx+?rM^bLMPH}a=yiI%?$Oul8}u*g8}&Q%CjBmb zi+;E6)m!v!`aSx+`d9U@>)+7t*B{Woqd%z6XQ!<=^LFar*W2_T>JRIW=#T0@(|7B? z(A)LL^u78%{Ym{Py+iNPpV9a02lZ$5-|EllNA#om3;K)tG5xsyNBvd(gnm-@>u>0% z^tbfC>ZkQH`rq|;^t1Xo{R92HenIcmEh0)p3#*6`u_8{`M7&54iNY=%LKi|f#Q>2c z28v`cNDLN3#85Fzq=?~SgcvDCiBth|CNV}_BH(c(=CISd(dltwyqF*+ib>*9FgwCw z+CW}Q^%mqC%VZzi+Tid?7?j@HSW#1k#>wIJg{3t#u!CcDu$DSGx7OS~EDRe1o%4Qi z{=)p+5(q*KUDFa;{XXCMetgp#78Omc^JJX#BJVsG-+bcEc=GSQgTBs;j?UMdw241> zw%h6%;Onv=r4J4O@G!m6TKo~{T6|s4p9L?B8|%{DdYq-uQOJmgG``F(rt5BoU9Eg=00c5bjBkX$bo=|(Mi8L{NRKg z^yt<7MZ8+WpD*%f8-E_e&;9L#G#d_9m`*H*QdV8%xHUhgmhK)wxPOlB!JM@SbA7b4 z2Xo!EHy5DX{8~^t4IAM+)Ob~Jxv=Rnz5vBn@e*IB7c=>}Uf@0UW9kB;IW#ax4u)iK zPy`?ij-8ZUIcUEn$hbNwTXF28(u3X~3f89~ykD{mNhDvS#rRFM>}}680HBmTYC^py zPWuj`ccPJiB%~qH{q9`#(CKTTDfK)O9Ix-7xwbNnW*hHmiB%n$8+abs zEMaa3*C5{k-_rBGSACr@w6hS70OVwbcEU7ERjE#=V+UP$q|>p3M)eM<_X+Iz4Vb{e z)zHhi>(<=fPz47scWHTfeMJM@LHTb0SS~0%JZ?{|JL9rdkiK2Z>fkz%t%B>r$9r*D zBMWMB+>eI}%iXWDkU-2=UO}{>W94WGlCCVQs95X%N?5rTy?KshUEN2Sp=8_w^Pq`f zUGAF3nzin4vhsOY4)kdp{_=|+fue6M1FAyuy|53zR zYsYG)<@^BpsU@{7=g%tsP!>bs)j-Ovk|}0&5N{AFXoCuYEYY7|;D_H~2gi8Jo1CLQ! z$cXZ~*q(_=e}ar|x*q|v<*3y!6lPMEDgBJE_l;}4?xW-#%<5C&HrN(Gmb0W^lSeU(=a7%}}EhpFH) zmbo^TV4&a0?&!^3G_8RCzP~T0cc|N^rIgQ%jh!zCqXxDhbnQKU;n}8VJ7i!|6{|&! z$voy@0Dz+;Brn{{XVqKC4;sM9IGg$M#**OJ!ycMO*9!;7GaRdfvLPpZPn>Ny44ibm zamvGh5J;hQYYIa-q)>t7=;V0!V!WYFhd#UyLO$aLr%B$B0!BDchs~%3uVv73SyXl8)ujGI78zb0I#zWpA2qJIhs=6#dANSeu**!L zJTIj!g+Ed>1_7Rfl6EJ(JDqJcoa{|J10co}ZTIm9_7dW9igU~HF4YfWCmE$&6)BI| z8yxw*6D->Bqk0yPE3-FBgRSc62X53$ut~dTwQ_o%S8{Y?t;_bIpFRscbR(lfUV9Hn z80~umALum_h)EwCr;-Uy)ce)v5~j@3|swqQ+3RD&%pa zT}@Mmp#4Yt6^0bTlph!p2yA&u6C&jieFPR-rL>x8C@Zaj-sNtp4%K($$F&zI3QvZ# zLCq9w0ptZdS(l<)sRLprF#wDrSO1n$N|EEo=(27lX*K{{o6D+BGLJ!|ZUXR-~E9aGIGU zF|O=zY6XV-D04DwgM zCzZ|AmWXBflJ9s+GrQ!?Ki9IE7ab>}TYe~OD&A@N5iinT@m8Gg@JF|7I)@8&8f88! zw%P&0t%t-G64gz=&q`SNPUZzf@y8QeVLbCL{x%)X3gV*OF)*b7=iohIoV6h?BK<^j zS7KNZR#<&odXFt9m5uY|5}L?gLTiCEs-M!RGEJtI$sn+|@Cs0H&>p~X4RLBMFo^L{ zdlNt9McC-3Ls{mbe=ziI?>W_#etHSB9NA0n!HWi9K4siUKWCs_eC45XB-3mj335j@GM4a>D-=U zl>_y41x|w5f!~6a;S@4D3~PPMK_o4FTOta@4*C9Iv^P95EnNm6w&$uhZNJV64+!PG z3Wq;Bxi0hlA?OX<(P+I1mCYTgX(xj1;P{!8`SNYL@44;SMt?d3Z*4v6nY(?i)zENv zlaz=>@7us|jAxXi@ies>&!G-w{`T?o=N!toTH~a>RogdM_b}=n1#_8DP*K0Sf(YNO z#mZ~9_Aa;ndYqf+yHBx!zT*a607xVT3%+jOv&N86|LtIbBk@U+G4Lb_OtMOaYN%*8 zX#0v(-^%k%73WW6^tLvhhl6ion8!_UsNH~rG84!=(_jUG|Kg?j=Pl1QpR?5u!YxIo zgaA=x0AeU3+D%~er-^jxoxlv8GSfMcN(i2Q#jQ zI-Ka<3z19Mos7%e+B9y8OF&Ba{=T)>GkE(vH8tc}RCj#`0}m-9!@yf|_`c37x!BiZ z{RFmcpP$68aPMP% z5U;qfkqp=s!)hq6zO>qXbEvMMqPnCOu}s~&Sr@hpkFjhl#rNes34b{k(@4xk%+x;C z^qHY~B=a0<)+(x{!0xB4+Sq<`zch|9mIy*7vY|meMNl^VK|mWy>cg~7oJxFh6knEe zkZ}}APfwv6Fi<8YRUE3UkUs|MlHn!PUNP(zjNl`DGR&HZ1V$ed#TKkGa;nBzqWBGO z_ZF-vn$!8AGl&(sfF2j%p ztvRpdZo31-y6kGR9HQol?UjO^v)wk&!{(UY``9ssKPt9(uwm5WJyp0etRM`I&^(86 zI8&0TEEi9k)|{9%IhSg88}rznm~qHBq8$XUN@ns`p3~IAykQ^CA>u@K@ zkwKEn4#`QrtmFRdq#uhH0A@WskfuJ>rH!qKoPK zpTvfW63>->|KDfDrP7io%uZ?{$@3|=C1))311mBWn8dIN{luLiACsnhA8*A6f*-T1 z?ZkieEyF^OMrWbQk2UWL^-NyHBi9kb_ z3f~`m$I~w~oxHR2Wc*(8cZQN75GP*+o4i!wB}y$Iv_IbT+D26`h0Zwo6^$Y55Q3&7 z_OyD*Qm~`F?EOMaGezuKX^*45cuUv7j(PDDe>hIE;pm&NjgA3PyMw zLU+$OziA(1$dDjc|2Pq>pSXwH*>?~ld;S#jgS_{)1#5(Ib1opGt3>GD?!DX1nv6rh zu$@wT5>nevmpTF)DzyJ z&tZ~hL4ovE96pGt+)D(ZzHLle`dMT4i7C{bo>a_`IfGq+4pU&Bd3=4m??o_HAS3^A zw$m!MK8t63kix#?do>J%uK>_9@p6h zZf95%9m~P-4#%fPb}n?I`OQ0dkJ6UT zH{<1PtZB+O5PV9tJ`>jZ4cVGYzVnS>Yi647wPpSHH_jMTAMkW)+CRIg}(jB@tFw zk3&PXyeCvE)upQTK7qFCIGb0is(!$#ztT>>?<=(5ldR$+VM;5xAC?rQoySq!8N?w9 zpdpNcRUNj#KF=Oa`(wr-dvxHT(3VJxmf!3yN)upwyFyVD;BDqZ-{rRr9jmo_$plJ3 zK?z*lHj?WSXTmT>jFE!C6lxHh#9YJLR`O~!*Dv^#6eak65ZiPqF?2R0oe?9jM}It) z=_$nOF*hBBI1+17(R+?o+IPH%{En|}@HL*#?7Ab)cYz!7rOM_DSq(8yWugD@X6O*> zW1j8+ps~zJ+8gpNzTylv(K#!I9TdCD7n`*<69B!8uY_TzkP&y1MIA_#^ovZ^H#j(6p}gje(& zI|~o}We5s)$osNEW>C3#>LlbW*sF35&6jH0@21#2~GrhtZzZN&KAMRxvm#=LdU!7bMIS z7`Uena8szgDt8I*)K!$bZIpl;Fstz7z(S%1ty4m^YOB)b!968Z8wTI3P;D5DYguc2 z4|t@u-k6OU15mH%K~-aRN&Q~^XI&W>9{uGg~B;+cwj$882cbtgz zzR={q+IFJnqcb>tUY+<{;Hz1kC!;H`jMnO(3?L>RtQ%m$@PRza{{iui5l!C+t}iFM z2nn3j5l`k)PW|-|#b%skoWa&Pji}UEc<~&9=+j+m2(?+cG+oc5z+R9}&wHtTKwnU3 z2e@XhfyHQLt2OwV{hQyURukT8O5v&2EOMOv9TGNG<-UoEZ)1gWahhicp~LQ+VlFo0 z+-<|^ES_U&T-8LhtXUOXXgjcbuHt6ewFxhHPognyN*pFf7{LS@H3l;j&*a%w4sPh+ zsC=TWoVGlyR2re@F^9(>X2Bcm-@w55U{;)r7B+~~sZ%a@Yjc+^B;ef1 z?lpJCpT416$%|WNv8L&_wx;Kz3WA@|iqRf;xVQ+*a`-Q^uzr=~ z7Rv#8RM#=N3^5PCbOl}q{mVmqZ_*dBC%QU6NPX}9^rPwx>KBfh+WLWN30&xg&zze3 zz?eeH2aL$Y6EQ24_z*?g1C$B-06qB1;m?|lP=Xnb1?uRDX4>;uf=TcWTiv}O_`e5 zvH}n6w`i@mMz!8yfcWZ-a7MFe8iW3j_!;@T9>}ly7G*r z!_tcyobGSQ9$}@{1~6YhS;;kw2zxC(hZZue#zMxVEMQ>5 zMbu|4rgcyu3Ed^D+oyc|f;X3A=s45{FjJ1X*)St+O=c~P!meN25xehd^jxCDmti!7yu@g@yi@BZ?z}(`ow@rEPna&e2a$=fhYmIRiI(xcs z|J0Z8k_Dt9fRc(xNEVaREupC3TK`>uA35DcT$KeYwqqKBnU;|zL=iE6;h7SYdV39)Js`MY9zHZ6U> zJw9j?|BNwMWw^P8xW^4o3%DOHJ>M*?p)|4eLBM+Rrt?ksW6Wc|)8ZN0ntzUqwSbHD zsO1orE0=1)8PvBdbvAd{&URtCzlNt|uMnCP9OH>7aIE*DPTP7^Y-z&Z)}>Gk+FBdW z8P#XSJ@f{qXS1f=vF369*_&p=4l%SUhxf_Sxrxuo_g=|38`uJiDG-{>T*HeQSYw%g z2R-KR9~`xu8K7dQyczgcBorUy&MzujT;yK7w8Xu5u6us=qP&H$8ZrZho41Rz3knzJ zyGs@?cIPaZrjNZ!n*)CYo>!j#|NJSJ$*=M3WlNIR#%-ERd{YTSbi(yoC%V`F0XiQNm zoKn0E2ch>Qwt{hN9ta8LpbIsYpp-r_atp(kFsyHjMC+N)ZdyQB+xsb{c-%Q&)21;g zir`8Djk>IDI5j+JEKVC7bpxgNH}H77fx6=B{442rwH8H67j7g$yONvjCTfirlBzBE z#tur1Bhcu-lQ0N};b=NRg^Z}@(BCQCkh%*%RQDxfdV|G2R@C!{qAt>sdOxeIdq&{% z5r!&;ZsrJYH@APmI4DEXY~!GeFoOv@O%>6j-A_?p72W~ZQD)=w@_jIBxF3IzyBlX8 zen;RJsKBFV9BS@x<#@fIx_bk^c$}nk;BSTqPOgGqZQ8quk4(Xj!9qZ)7Lpl;tnhvt z)l>f#+#mDIhES2l$cEkW=)oc2y_X*j7Jc`!Z>o5j{-Uq~DDcPg2TWywe+YkYeio2S zEui?%P4VB&eqfbr+Lq$5pr)qO4>C2`e>?3#z><%kT)9Bb@%_7QfeSLcp5&)T@>|QG z!3FbGa5g{L>9Ji=;B1KY6*$fQwKgVK`sfA$=-n%!cfSnfhy!kFl+{Vr>1}*AL{K1b#r7?2l%-kInrU*=E;$M3>0SQeO&p1DB*L8W@Ah3`m8S zxWeO5O=xVWXmG(f&PAHJ-h~h^74`Lvb)JdZ(uE~O*~N?Uw6SY8Odh+YJp6yi8B>L& z;u|Kr>ef}1HdGk#sboMZ1d4%!fcC+z2Q{k=b8uArLA)UTUA!n>634{L;<$K4{89W# zyej@IPKejUN%6Yyi@%6B#GB%j=n-#;fcUHUn>a20L!1$Bi@%G1hw{&N06)nTD+LX^LbUY;I$d4imYA?}G~a_~6+ z7J7Ml>E*eNUY_^T%M)C-{rVjPG>g?Hy*vSwaxT1k_uLDM@i4Yz1Q%k6V;RY!O&Z~X z0vyFsxXVN;EBaU`OFeeD-7d{^N3&sgC5?IMLmXkhdkHIE`j>LpM2G%Q{_D^Gv!)jQ zp94PC|C8xo2ZhHDrvImW_LBdi|L5nAdIM`o)*@5t)BsE{llYQ_{k4RpejGA)4Nh>fd=}Vzuh?Q{Het(BNodDau%I*D$RiEf7y-9oA*L*>SjE{vmR zl8v7A@${@uppYw(p7r)sVdxgyRCeUO|3Bll&kO4R7u)y6|JCI(^5)dCfuA4$2cI4L zPsjh%;sXEI_K*LUVrGH=i$4?om&{JI<=zPVuY(W({=es9{J#fi2lPtAI=2x{gR3Z( z<;psZvjM!cYoQUwDR!Xk;;_f96@sAP0kt!i_Cn(F#(Gu5?DA|hO zmzRIuh$Pck-CFPtjnHqyTOj8EXc|g=&zW~u8rDEiYbwJ#%718gY;bP-con_$9F<3q z5M{g~4?KST?aafQmR?gSo=Rvw6@~20xs^U!;Em_sg7he`t(lT!ux3$I5k=GY(@G1l z7&<&z$%{oZNl28x8k8>0FXJfdi6x~Qd&@SP7SnKB=_fy<&?55N`t0zMW3m_o)N9OTONFt@c*Xrf-%^gve zmvanQR{FdUHufSP6|G%%@xCFm&p7gMlxIx%dj_@0vl7oYz1NiEMG#h+EkNu5L2fL? z=uuR9$I(PRnubuZ^jNU@VS5@)sd^0kzGBIZ#?a?CmXge9QvFssJjK#nC-xB}Uy5Aq z!900+6lXCLWZF+m{@P;hmiI~ zb$)2e@utoToRl*@G5?*OJ8)A9z`(>q=N3!5$$0-39M^P! zN}$*!p8BGArtOWt4{`P61~fLjx|W+=n?m_TA~;fNDnYRzNLuSAr;4w*ymy%s2Gd87 z(g5U)VKje#Z&5NGftM{e!klW2bL2EjeX87MhQ;&@BJ|^s=o)LaEAv@s28Lt>UY02n(ny~`Je5e|Ba!UCoo>R;e_rbYU;xj&b><}Bkr=7qARR_hhOJJf);hiT#z#FHA7|T{#@Qz z!mI1~Q^_KP1-gGdwd@cP$lU5W1p|qUS(&(P*9y&23D~J`N&!{xl5~8npH9rYE^Mz1 zUEaDW+1M}GIpXP~%hl7%W^>=zwO7CEluD{ZVsc3mC%(Po0iJ%CH|S`oQJThC3tu>7 zE)eB%7VFv0V7;y|+nH>g!J;i<{UEe6>qA_f^3V&rWpaY+`3#p+h@08Ys>8c(P%Ma< z-|4#AMpt<)(=Dti1)EV?b33y!c-DlaXmCm9WQrmn8nir#TU^jnu7bb{r!^m_FRfW! zq5W~!h;Zg4k2*1zMvu&ETRy3kU;9h zBnxC%qPPE-(=b5$FZHM2{0|WSZ2CmcN`)ERNP z<+SH?YfljbzeY#B$8s1OM-J5slE6+sM34fyhW?suv@`LJ3olx zv#HX^J*)wr4c;Sh5$G)Tc6(n6`opK4@pgHSrQNACg6E<+crO4czbu&oqYr6kX452i zH0{>s@CUq~Xd@*@PccEm9%ll=wKDNRV;$my$JJNd25bfI)Jg;hKwO*`cXeu(Td;!g z#dBd_R1O(EHQ?fk_67|%GmfU6hnaG)43y4YEd7LeCEl7v$ zoo8u25H&|@JmofwFAaPAeZ^?LcPyVdEC+Ko+wK%wzhc(5IJX@2*qc6ZiLG~{Zoj7e z;>xGkye0PXE>9A^V4o{5(5N3Ua59#y@MqJg1Cu|1u9!*wMiv2*f&Nxp`P=aG z*p7R-Pv(`%nU|>AHm_7Ih-vtSW-f|C7J_Sq)<}pGiwqs5Wgs!#&#-Jq8B3@Z?q2KM z)LhFJK+Y^@aBC*e<}bH4ucFMog=H}hPt?{_R;|vj@zme$-o?sFxR`O4%Bm4VHyFI3 zfwMD~>`dcZm!5^I@=qkl_7T?mW0fXc)<_V7Ica^GFq(L1K}N^lfA-$<3*=49!7NyZ zwAiw?FSB@c81QU4)Tq+EC?*_s!GU+1K8P1vHekA&K1dK-YUPDPY^lUWR?iarf>B?# zd@mtld`xWl8G82gw@~v*^S+0hG=ZQOoC&DY2aqv|;fy6S<6ewElRrN4>G#m2^V=w1 zgA>P08rK(K5>SAZTiXw-VB^>}5uH{;5zh(qEChw7$L~icZ)_YQJDYwqbjQ1ccb>Wq zKl0wb)wo)I>7fO?wZH#t@u#lk{d8s*TT<~g_zZopw+c@Op>r+f)pu^+t!ACE0r3Fgo`NRL8#ssrlE`RkK@m!0Es`HS4ia;rShCK@M;6Cq>-XAstvr_06OOk zrC?(i4GvQLkKl>eh;%2?bkZO`v`dNT?g8G}dl$ZIY(KMCGG)nLcE~UslATk*(S3*a zei=7{17zH*PicQ|c>7mTkZDZ9-){uHzcNZ|jIUHMiB}NW`*pMrcJCnsMfY1cWE%&c zf-!Oh4OftwOsqeHccEMv;=hJ>!RZe7FC+ABBn6lRVY?PCM2OjjF}|S7 z|1;cekWgAsR&qNiu6x3zO0;AD8z2Tk10xxG2ED$LKb}3ouI+xe4;8|e-ma#TXPQ1Z z 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 +#include +#include + +#include "config.h" +#include "keyboard.h" +#include "maped.h" +#include "mouse.h" +#include "vdriver.h" + +// ============================ Data ============================ + +unsigned char mvsp[2048]; // mini-VSP dominant color +int xoff=0, yoff=0; // x-offset, y-offset + +// ============================ Code ============================ +/* +FindDominantColor(int i) +{ unsigned char *src; + int j,tally=0; + + // This is a cheap-ass method. I have a more proper method in mind, but + // I'm going to do this for now b/c I'm lazy. Actually, the real reason is + // speed. + + src=vsp+(i*256); + + for (j=0; j<256; j++) + { + tally+=*src; + src++; + } + tally=tally/256; + mvsp[i]=(unsigned char) tally; +} +*/ + +void FindDominantColor(int i) +{ unsigned char *src, tally[256], tab; + int j; + + src=vsp+(i*256); + memset(&tally, 0, 256); + + for (j=0; j<256; j++) + { + tally[*src]++; + src++; + } + tab=0; + for (j=0; j<256; j++) + { + if (tally[j] > tab) tab=j; + } + mvsp[i]=(unsigned char) tab; +} + +void GenerateMiniVSP() +{ int i; + + for (i=0; i 0) xoff-=16; + key[SCAN_LEFT]=0; + } + if (key[SCAN_UP] && yoff) + { + if (yoff > 0) yoff-=16; + key[SCAN_UP]=0; + } + if (key[SCAN_DOWN]) + { + if (yoff < layer[0].sizey) + yoff+=16; + key[SCAN_DOWN]=0; + } + if (key[SCAN_RIGHT]) + { + if (xoff < layer[0].sizex) + xoff+=16; + key[SCAN_RIGHT]=0; + } + if (mb) + { + xwin=(xoff+mx-16)*16; + ywin=(yoff+my-16)*16; + if (xwin>=(layer[0].sizex*16)-320) xwin=(layer[0].sizex*16)-320; + if (ywin>=(layer[0].sizey*16)-tsy-15) ywin=(layer[0].sizey*16)-tsy-15; + WaitRelease(); + break; + } + } + key[SCAN_ESC]=0; + vfree(ptr); +} diff --git a/16/v2/source/verge/MAPED/MINIMAP.H b/16/v2/source/verge/MAPED/MINIMAP.H new file mode 100644 index 00000000..254b13bd --- /dev/null +++ b/16/v2/source/verge/MAPED/MINIMAP.H @@ -0,0 +1,24 @@ +/* +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. +*/ + +#ifndef MINIMAP_INC +#define MINIMAP_INC + +extern void FindDominantColor(int i); +extern void GenerateMiniVSP(); +extern void MiniMAP(); + +#endif // MINIMAP_INC diff --git a/16/v2/source/verge/MAPED/MODE13H.C b/16/v2/source/verge/MAPED/MODE13H.C new file mode 100644 index 00000000..38336e14 --- /dev/null +++ b/16/v2/source/verge/MAPED/MODE13H.C @@ -0,0 +1,350 @@ +/* +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. +*/ + +#include +#include + +#include "mode13h.h" +#include "vdriver.h" + +// ================================= Data ==================================== + +char *screenr; // realscr +char startline=16; // virtual scroll around 240 vert. pixels +extern unsigned char* translucency_table; //zero + +extern void *valloc(int amount, char*, int); +extern int vfree(void *); +extern void CheckTimerStuff(); // in maped.c + +// ================================= Code ==================================== + + +void SetMode(int mode) +{ + REGISTERS r; + SET_AX(r, mode); + INTERRUPT(0x10, r); +} + +int Mode13hShutdown() +{ + SetMode(0x3); + vfree(screen); + screen=0; + return 0; +} + +int Mode13hShowPage() +{ int rows; + char *s,*d; + + CheckTimerStuff(); + + s=screen+(16*tsx)+16; + d=screenr; + rows=sy; + + for (; rows; rows--) + { + memcpy(d,s,sx); + s+=tsx; + d+=sx; + } + + return 0; +} + +int Mode13hCopySprite(int x, int y, int width, int height, char *src) +{ char *d; + + d=screen+(y*tsx)+x; + for (; height; height--) + { + memcpy(d,src,width); + src+=width; + d+=tsx; + } + + return 0; +} + +int Mode13hCCopySprite(int x,int y,int width,int height,char *src) +{ int cx1,cy1,cx2,cy2; + char *s,*d; + int xl,yl,xs,ys; + + xl=width; + yl=height; + xs=ys=0; + + cx1=0; + cy1=0; + cx2=tsx-1; + cy2=tsy-1; + + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + + if (xcx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + + if (xcx2 || y>cy2 || x cy2) length=cy2-y+1; + if (ycx2 || y>cy2 || x+width cx2) width=cx2-x+1; + if (x336 || y<0 || y>256) return 0; + d=screen+(y*tsx)+x; + for (y=0; y<8; y++) + { + d[0]=c; d[2]=c; d[4]=c; d[6]=c; + d[8]=c; d[10]=c; d[12]=c; d[14]=c; + + d+=(tsx+1); + + d[0]=c; d[2]=c; d[4]=c; d[6]=c; + d[8]=c; d[10]=c; d[12]=c; d[14]=c; + + d+=(tsx-1); + } + + return 0; +} + +int Mode13hClearScreen() +{ + memset(screen,0,76032); + return 0; +} + +int Mode13hCopySpriteLucentClip(int x, int y, int width, int height, unsigned char *src) +{ + int cx1,cy1,cx2,cy2; + unsigned char *s,*d,c; + int xl,yl,xs,ys; + + cx1=0; + cy1=0; + cx2=tsx-1; + cy2=tsy-1; + + xl=width; + yl=height; + xs=ys=0; + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (x +#include +#include + +#include "mode13h.h" // SetMode() +#include "modex.h" +#include "vdriver.h" + +// ================================= Data ==================================== + +#define SEQU_ADDR 0x3c4 +#define CRTC_ADDR 0x3d4 +#define MISC_OUTPUT 0x3c2 + +char *screen1, *screen2; // page banks; +char *screenx, curscr; // ptr to active page | page flip ctr +char *screenbase; // ptr to A000:0000 + +extern unsigned char* translucency_table; //zero + +extern void CheckTimerStuff(); +extern void *valloc(int amount,char*,int); +extern int vfree(void *); + +// ================================= Code ==================================== + +static void plane(char p) +{ + int hi=1<>2); + + while (d>2); + } + + s+=tsx; + d+=(sx>>2); + } + return 0; +} + +int ModeXCopySprite(int x, int y, int width, int height, char *src) +{ char *d; + + d=screen+(y*tsx)+x; + for (; height; height--) + { + memcpy(d,src,width); + src+=width; + d+=tsx; + } + + return 0; +} + +int ModeXCCopySprite(int x,int y,int width,int height,char *src) +{ int cx1,cy1,cx2,cy2; + char *s,*d; + int xl,yl,xs,ys; + + xl=width; + yl=height; + xs=ys=0; + + cx1=0; + cy1=0; + cx2=tsx-1; + cy2=tsy-1; + + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + + if (xcx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + + if (xcx2 || y>cy2 || x cy2) length=cy2-y+1; + if (ycx2 || y>cy2 || x+width cx2) width=cx2-x+1; + if (x336 || y<0 || y>256) return 0; + d=screen+(y*tsx)+x; + for (y=0; y<8; y++) + { + d[0]=c; d[2]=c; d[4]=c; d[6]=c; + d[8]=c; d[10]=c; d[12]=c; d[14]=c; + + d+=(tsx+1); + + d[0]=c; d[2]=c; d[4]=c; d[6]=c; + d[8]=c; d[10]=c; d[12]=c; d[14]=c; + + d+=(tsx-1); + } + + return 0; +} + +int ModeXClearScreen() +{ + memset(screen,0,90117); + return 0; +} + +int ModeXCopySpriteLucentClip(int x, int y, int width, int height, unsigned char *src) +{ + int cx1,cy1,cx2,cy2; + unsigned char *s,*d,c; + int xl,yl,xs,ys; + + cx1=0; + cy1=0; + cx2=tsx-1; + cy2=tsy-1; + + xl=width; + yl=height; + xs=ys=0; + if (x>cx2 || y>cy2 || x+xl cx2) xl=cx2-x+1; + if (y+yl > cy2) yl=cy2-y+1; + if (x +#include +#include + +#include "timer.h" +#include "vdriver.h" + +// ================================= Data ==================================== + +extern char mousepic[]; // blah + +static union REGS regs; + +int mx=0,my=0,mb=0; +int rb=0,wb=0; +int lmx=0,lmy=0,lmb=0; + +// ================================= Code ==================================== + +void PutMouse(int x, int y) +{ + lmx=mx; lmy=my; lmb=mb; + memset(®s, 0, sizeof regs); + regs.w.ax=4; + regs.w.cx=x*2; + regs.w.dx=y*2; + int386(0x33,®s,®s); + + mx=x; my=y; +} + +void InitMouse() +{ + memset(®s, 0, sizeof regs); + int386(0x33,®s,®s); + + regs.w.ax=7; + regs.w.cx=0; + regs.w.dx=640; /*320;*/ /* -- ric:13/Jun/98 - fix horizontal jumps -- */ + int386(0x33,®s,®s); + + regs.w.ax=8; + regs.w.cx=0; + regs.w.dx=sy; // aen + int386(0x33,®s,®s); + + PutMouse(sx/2,(sy/2) /2); // aen +} + +void ReadMouse() +{ + lmx=mx; lmy=my; lmb=mb; + memset(®s, 0, sizeof regs); + regs.w.ax=3; + int386(0x33,®s,®s); + + mx=((regs.w.cx)>>1)+16; /* -- ric:13/Jun/98 - fix horizontal jumps -- */ + my=(regs.w.dx)+16; + rb=regs.w.bx; + + if (rb && wb) { mb=0; return; } + if (wb && !rb) wb=0; + mb=rb; + + if ((lmx!=mx) || (lmy!=my) || (lmb!=mb)) idlect=0; +} + +void DrawMouse() +{ + ReadMouse(); + TCopySprite(mx,my,4,5,mousepic); +} + +void WaitRelease() +{ + wb=1; + mb=0; +} diff --git a/16/v2/source/verge/MAPED/MOUSE.H b/16/v2/source/verge/MAPED/MOUSE.H new file mode 100644 index 00000000..d0e9a1d2 --- /dev/null +++ b/16/v2/source/verge/MAPED/MOUSE.H @@ -0,0 +1,30 @@ +/* +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. +*/ + +#ifndef MOUSE_INC +#define MOUSE_INC + +extern int mx,my,mb; +extern int rb,wb; +extern int lmx,lmy,lmb; + +extern void PutMouse(int x, int y); +extern void InitMouse(); +extern void ReadMouse(); +extern void DrawMouse(); +extern void WaitRelease(); + +#endif // MOUSE_INC diff --git a/16/v2/source/verge/MAPED/MTYPES.H b/16/v2/source/verge/MAPED/MTYPES.H new file mode 100644 index 00000000..a57d0879 --- /dev/null +++ b/16/v2/source/verge/MAPED/MTYPES.H @@ -0,0 +1,73 @@ +#ifndef MTYPES_H +#define MTYPES_H + +/* + MikMod atomic types: + ==================== +*/ + + +#ifdef __OS2__ + +typedef signed char SBYTE; /* has to be 1 byte signed */ +typedef unsigned char UBYTE; /* has to be 1 byte unsigned */ +typedef short SWORD; /* has to be 2 bytes signed */ +typedef unsigned short UWORD; /* has to be 2 bytes unsigned */ +typedef long SLONG; /* has to be 4 bytes signed */ +/* ULONG and BOOL are already defined in OS2.H */ + +#elif defined(__alpha) + +typedef char SBYTE; /* has to be 1 byte signed */ +typedef unsigned char UBYTE; /* has to be 1 byte unsigned */ +typedef short SWORD; /* has to be 2 bytes signed */ +typedef unsigned short UWORD; /* has to be 2 bytes unsigned */ +/* long is 8 bytes on dec alpha - RCA */ +typedef int SLONG; /* has to be 4 bytes signed */ +typedef unsigned int ULONG; /* has to be 4 bytes unsigned */ +typedef int BOOL; /* doesn't matter.. 0=FALSE, <>0 true */ + +#else + +typedef char SBYTE; /* has to be 1 byte signed */ +typedef unsigned char UBYTE; /* has to be 1 byte unsigned */ +typedef short SWORD; /* has to be 2 bytes signed */ +typedef unsigned short UWORD; /* has to be 2 bytes unsigned */ +typedef long SLONG; /* has to be 4 bytes signed */ +typedef unsigned long ULONG; /* has to be 4 bytes unsigned */ +typedef int BOOL; /* doesn't matter.. 0=FALSE, <>0 true */ + +#endif + + +#ifdef __OS2__ +#define INCL_DOS +#define INCL_MCIOS2 +#define INCL_MMIOOS2 +#include +#include +#include +#endif + + +#ifdef __WATCOMC__ +#define inportb(x) inp(x) +#define outportb(x,y) outp(x,y) +#define inport(x) inpw(x) +#define outport(x,y) outpw(x,y) +#define disable() _disable() +#define enable() _enable() +#endif + + +#ifdef __DJGPP__ +#include +#include +#include +#define inp inportw +#define outport outportw +#define inport inportw +#define interrupt +#endif + +#endif diff --git a/16/v2/source/verge/MAPED/PCX.C b/16/v2/source/verge/MAPED/PCX.C new file mode 100644 index 00000000..5ab55f66 --- /dev/null +++ b/16/v2/source/verge/MAPED/PCX.C @@ -0,0 +1,210 @@ +/* +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. +*/ + +#include +#include "timer.h" +#include "vga.h" + +char manufacturer; // pcx header +char version; +char encoding; +char bits_per_pixel; +short int xmin,ymin; +short int xmax,ymax; +short int hres; +short int vres; +char palette[48]; +char reserved; +char color_planes; +short int bytes_per_line; +short int palette_type; +char filler[58]; + +unsigned short int width,depth; +unsigned short int bytes, i; +unsigned char c, run, ss=0; +unsigned int vidoffset, n=0; +FILE *pcxf; + +void ReadPCXLine(unsigned char *dest) +{ int j; + n=0; + + do { + c=fgetc(pcxf) & 0xff; + if ((c & 0xc0)==0xc0) { + run=c & 0x3f; + c=fgetc(pcxf); + for (j=0; j> 2; + set_intensity(63); +} + +void LoadPCXHeaderNP(char *fname) +{ + if (!(pcxf=fopen(fname,"rb"))) err("Could not open specified PCX file."); + fread(&manufacturer,1,1,pcxf); + fread(&version,1,1,pcxf); + fread(&encoding,1,1,pcxf); + fread(&bits_per_pixel,1,1,pcxf); + fread(&xmin,1,2,pcxf); + fread(&ymin,1,2,pcxf); + fread(&xmax,1,2,pcxf); + fread(&ymax,1,2,pcxf); + fread(&hres,1,2,pcxf); + fread(&vres,1,2,pcxf); + fread(&palette,1,48,pcxf); + fread(&reserved,1,1,pcxf); + fread(&color_planes,1,1,pcxf); + fread(&bytes_per_line,1,2,pcxf); + fread(&palette_type,1,2,pcxf); + fread(&filler,1,58,pcxf); + width=xmax-xmin+1; + depth=ymax-ymin+1; + bytes=bytes_per_line; +} + +void loadpcx(char *fname, char *dest) +{ + LoadPCXHeader(fname); + + for (i=0; i1 || (byte & 0xC0) != 0) + { + repcode=0xC0 | samect; + fwrite(&repcode,1,1,pcxf); + } + fwrite(&byte,1,1,pcxf); + } while (i<320); +} + +void WritePalette() +{ char b; + int i; + + for (i=0; i<768; i++) + pal[i]=pal[i] << 2; + + b=12; fwrite(&b, 1, 1, pcxf); + fwrite(pal, 1, 768, pcxf); + + for (i=0; i<768; i++) + pal[i]=pal[i] >> 2; +} + +void ScreenShot() +{ unsigned char b1; + unsigned short int w1; + char fnamestr[13]; + + // Takes a snapshot of the current screen. + + dec_to_asciiz(ss,&fnamestr); + b1=strlen(&fnamestr); + fnamestr[b1++]='.'; + fnamestr[b1++]='P'; + fnamestr[b1++]='C'; + fnamestr[b1++]='X'; + fnamestr[b1++]=0; + + pcxf=fopen(&fnamestr,"wb"); + ss++; + +// Write PCX header + + b1=10; fwrite(&b1, 1, 1, pcxf); // manufacturer always = 10 + b1=5; fwrite(&b1, 1, 1, pcxf); // version = 3.0, >16 colors + b1=1; fwrite(&b1, 1, 1, pcxf); // encoding always = 1 + b1=8; fwrite(&b1, 1, 1, pcxf); // 8 bits per pixel, for 256 colors + w1=0; fwrite(&w1, 1, 2, pcxf); // xmin = 0; + w1=0; fwrite(&w1, 1, 2, pcxf); // ymin = 0; + w1=319; fwrite(&w1, 1, 2, pcxf); // xmax = 319; + w1=199; fwrite(&w1, 1, 2, pcxf); // ymax = 199; + w1=320; fwrite(&w1, 1, 2, pcxf); // hres = 320; + w1=200; fwrite(&w1, 1, 2, pcxf); // vres = 200; + + fwrite(virscr,1,48,pcxf); // 16-color palette data. Who knows what's + // actually in here. It doesn't matter since + // the 256-color palette is stored elsewhere. + + b1=0; fwrite(&b1, 1, 1, pcxf); // reserved always = 0. + b1=1; fwrite(&b1, 1, 1, pcxf); // number of color planes. Just 1 for 8bit. + w1=320; fwrite(&w1, 1, 2, pcxf); // number of bytes per line + + w1=0; fwrite(&w1, 1, 1, pcxf); + fwrite(virscr, 1, 59, pcxf); // filler + + for (w1=0; w1<200; w1++) + WritePCXLine(screen+(w1*320)); + + WritePalette(); + fclose(pcxf); + timer_count=0; +} diff --git a/16/v2/source/verge/MAPED/RENDER.C b/16/v2/source/verge/MAPED/RENDER.C new file mode 100644 index 00000000..e1067755 --- /dev/null +++ b/16/v2/source/verge/MAPED/RENDER.C @@ -0,0 +1,475 @@ +/* +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. +*/ + +#include +#include +#include + +#include "config.h" +#include "maped.h" +#include "vdriver.h" + +#include "render.h" // MAXTILES + +// ================================= Data ==================================== + +extern char stipple[256]; + +int oxw=0, oyw=0; +int xofs=0, yofs=0; +int xtc=0, ytc=0; + +char curlayer=0; +short tileidx[MAXTILES]; +char flipped[MAXTILES]; + +// ------ + +chri chrs[100]; + +// ================================= Code ==================================== + +void DoCHR(int i) // hee hee! +{ + FILE *f; + char b; + int q; + short numframes; + +// free(chrs[i].frame); +// chrs[i].frame=0; +// return; + + if (!strlen(chrlist[i].t)) + { + if (chrs[i].frame) vfree(chrs[i].frame); + chrs[i].frame=0; + chrs[i].fx=chrs[i].fy=0; + chrs[i].hx=chrs[i].hy=0; + return; + } + if (!(f=fopen(chrlist[i].t,"rb"))) + { + if (chrs[i].frame) vfree(chrs[i].frame); + chrs[i].frame=0; + chrs[i].fx=chrs[i].fy=0; + chrs[i].hx=chrs[i].hy=0; + return; + } + if (chrs[i].frame) vfree(chrs[i].frame); + fread(&b, 1, 1, f); + if (b!=2) + { + // This should really not work with V1 CHRs, but.. + chrs[i].frame=(char *) malloc(512); + fseek(f, 0, 0); + fread(chrs[i].frame, 1, 512, f); + fclose(f); + chrs[i].fx=16; chrs[i].fy=32; + chrs[i].hx=0; chrs[i].hy=16; + return; + } + chrs[i].fx=0; fread(&chrs[i].fx, 1, 2, f); + chrs[i].fy=0; fread(&chrs[i].fy, 1, 2, f); + chrs[i].hx=0; fread(&chrs[i].hx, 1, 2, f); + chrs[i].hy=0; fread(&chrs[i].hy, 1, 2, f); + fread(strbuf, 2, 2, f); + fread(&numframes, 1, 2, f); + chrs[i].frame=(char *) valloc(chrs[i].fx*chrs[i].fy*numframes,"chr preview",i); + fread(&q, 1, 4, f); + + ReadCompressedLayer1(chrs[i].frame, chrs[i].fx*chrs[i].fy*numframes,f); + + fclose(f); +} + +void DoCHRdealy() +{ + int i; + + for (i=0; i<100; i++) + DoCHR(i); +} + +void BlitBackLayer(char l) +{ + int i,j; + //int a; + char *img; + //char *d; + unsigned short *lay; + //int v; + int mapx,mapy; + int x,y; + unsigned int tile; + + if (!layertoggle[l]) return; + + mapx = layer[l].sizex; + mapy = layer[l].sizey; + lay = layers[l]; + + // Adjust view + oxw = xwin * layer[l].pmultx / layer[l].pdivx; + oyw = ywin * layer[l].pmulty / layer[l].pdivy; + xofs = 16 - (oxw & 15); + yofs = 16 - (oyw & 15); + xtc = oxw / 16; + ytc = oyw / 16; + + // Draw it, bitch! + for (i=0; i <= ty; i++) + { + for (j=0; j <= tx; j++) + { + x = xtc+j; + y = ytc+i; + + // write better clipping sometime + if (y >= 0 || y < mapy || x >=0 || x < mapx) + { + // what the HELL @_@ + tile = lay[(y * mapx) + x]; + if (tile >= numtiles) tile = numtiles-1; + tile = tileidx[tile]; + if (tile >= numtiles) tile = numtiles-1; + + img = &vsp[tile * 256]; + + x = (j * 16) + xofs; + y = (i * 16) + yofs; + + //CopyTile(x, y, img); + CCopySprite(x, y, 16, 16, img); + } + } + } + + curlayer++; +} + +//zero +extern char* translucency_table; +void LucentBlitLayer(char l) +{ + int i,j; + //int a,b; + char *img; + //char *d; + unsigned short *lay; + //int v; + int mapx,mapy; + int x,y; + unsigned int tile; + + if (!layertoggle[l]) return; + if(!translucency_table) + { + TransBlitlayer(l); + return; + } + + mapx = layer[l].sizex; + mapy = layer[l].sizey; + lay = layers[l]; + + // Adjust view + oxw = xwin * layer[l].pmultx / layer[l].pdivx; + oyw = ywin * layer[l].pmulty / layer[l].pdivy; + xofs = 16 - (oxw & 15); + yofs = 16 - (oyw & 15); + xtc = oxw / 16; + ytc = oyw / 16; + + // Draw it, bitch! + for (i=0; i <= ty; i++) + { + for (j=0; j <= tx; j++) + { + x = xtc+j; + y = ytc+i; + + // write better clipping sometime + if (y >= 0 || y < mapy || x >=0 || x < mapx) + { + // what the HELL @_@ + tile = lay[(y * mapx) + x]; + if (tile >= numtiles) tile = numtiles-1; + tile = tileidx[tile]; + if (tile >= numtiles) tile = numtiles-1; + + img = &vsp[tile * 256]; + if (img != vsp) + { + x = (j * 16) + xofs; + y = (i * 16) + yofs; + CopySpriteLucentClip(x, y, 16, 16, img); + } + } + } + } + curlayer++; +} + + +void TransBlitlayer(char l) +{ + int i,j; + //int a,b; + char *img; + //char *d; + unsigned short *lay; + //int v; + int mapx,mapy; + int x,y; + unsigned int tile; + + if (!layertoggle[l]) return; + + lay = layers[l]; + + mapx = layer[l].sizex; + mapy = layer[l].sizey; + + // Adjust view + oxw = xwin * layer[l].pmultx / layer[l].pdivx; + oyw = ywin * layer[l].pmulty / layer[l].pdivy; + xofs = 16 - (oxw & 15); + yofs = 16 - (oyw & 15); + xtc = oxw / 16; + ytc = oyw / 16; + + // Draw it, bitch! + for (i=0; i <= ty; i++) + { + for (j=0; j <= tx; j++) + { + x = xtc+j; + y = ytc+i; + + // write better clipping sometime + if (y >= 0 || y < mapy || x >=0 || x < mapx) + { + // what the HELL @_@ + tile = lay[(y * mapx) + x]; + if (tile >= numtiles) tile = numtiles-1; + tile = tileidx[tile]; + if (tile >= numtiles) tile = numtiles-1; + + img = &vsp[tile * 256]; + if (img != vsp) + { + x = (j * 16) + xofs; + y = (i * 16) + yofs; + //TCopySprite(x, y, 16, 16, img); + TCCopySprite(x, y, 16, 16, img); + } + } + } + } + + curlayer++; +} + +void BlitLayer(char c) +{ + if(layer[c].trans) { LucentBlitLayer(c); return; } //zero + if (curlayer) TransBlitLayer(c); + else BlitBackLayer(c); +} + +void DrawObstructions() +{ int i,j; + int mapx; + + mapx = layer[0].sizex; + + oxw=xwin*layer[0].pmultx/layer[0].pdivx; + oyw=ywin*layer[0].pmulty/layer[0].pdivy; + xofs=16-(oxw&15); + yofs=16-(oyw&15); + xtc=oxw>>4; + ytc=oyw>>4; + + for (i=0; i>4; + ytc=oyw>>4; + + for (i=0; i=(xwin/16)) && (entity[m].x<(xwin/16)+22) && + (entity[m].y>=(ywin/16)) && (entity[m].y<(ywin/16)+ty+2)) + { + if (chrs[entity[m].chrindex].frame) + TCCopySprite((entity[m].x*16)-xwin+16-chrs[entity[m].chrindex].hx, + (entity[m].y*16)-ywin+16-chrs[entity[m].chrindex].hy, + chrs[entity[m].chrindex].fx, + chrs[entity[m].chrindex].fy, + chrs[entity[m].chrindex].frame); + else + { + TCCopySprite( + (entity[m].x*16)-xwin+16,(entity[m].y*16)-ywin+16,16,16,stipple); + //ColorGrid((entity[m].x*16)-xwin+16, + // (entity[m].y*16)-ywin+16, 0); + } + } +} + +// aen +void DrawSelection() +{ int i,j; + int x1,y1,x2,y2; + + oxw=xwin*layer[el].pmultx/layer[el].pdivx; + oyw=ywin*layer[el].pmulty/layer[el].pdivy; + xofs=16-(oxw&15); + yofs=16-(oyw&15); + xtc=oxw>>4; + ytc=oyw>>4; + + x1=selx1; + y1=sely1; + x2=selx2; + y2=sely2; + + if (x2= x1 && xtc+j <= x2 + && ytc+i >= y1 && ytc+i <= y2) + { + TCCopySprite((j*16)+xofs, (i*16)+yofs, 16,16, stipple); + //ColorGrid((j*16)+xofs,(i*16)+yofs,7); + } + } +} + +void RenderMap() +{ char *src; + //char rs[2]; + + curlayer=0; + src=rstring; + + /* + rs[1]=0; // aen + for (; *src; ++src) + { + rs[0]=*src; + BlitLayer(atoi(rs) -1); + } + */ + while (*src) + { + switch (*src) + { + case '1': BlitLayer(0); break; + case '2': BlitLayer(1); break; + case '3': BlitLayer(2); break; + case '4': BlitLayer(3); break; + case '5': BlitLayer(4); break; + case '6': BlitLayer(5); break; + } + src++; + } + + if (!curlayer) memset(screen+5648,0,84480); + if (layertoggle[6]) DrawObstructions(); + if (layertoggle[7]) DrawZones(); + if (layertoggle[8]) DrawEntities(); + if (shifted) DrawSelection(); +} + +void AnimateTile(char i, int l) +{ + switch (vspanim[i].mode) + { + case 0: if (tileidx[l]vspanim[i].start) tileidx[l]--; + else tileidx[l]=vspanim[i].finish; + break; + case 2: tileidx[l]=random(vspanim[i].start,vspanim[i].finish); + break; + case 3: if (flipped[l]) + { + if (tileidx[l]!=vspanim[i].start) tileidx[l]--; + else { tileidx[l]++; flipped[l]=0; } + } + else + { + if (tileidx[l]!=vspanim[i].finish) tileidx[l]++; + else { tileidx[l]--; flipped[l]=1; } + } + } +} + +void Animate(char i) +{ static int l; + + vadelay[i]=0; + for (l=vspanim[i].start; l<=vspanim[i].finish; l++) + AnimateTile(i,l); +} + +void CheckTileAnimation() +{ static char i; + + for (i=0; i<100; i++) + { if ((vspanim[i].delay) && (vspanim[i].delay + +#include "vdriver.h" + +#define xx 31 + +int fontx=0; +int fonty=0; + +char sbA[]={3, + 00,xx,00, + xx,00,xx, + xx,xx,xx, + xx,00,xx, + xx,00,xx}; + +char ssA[]={3, + 00,00,00, + 00,xx,00, + xx,00,xx, + xx,xx,xx, + xx,00,xx}; + +char sbB[]={3, + xx,xx,00, + xx,00,xx, + xx,xx,00, + xx,00,xx, + xx,xx,00}; + +char ssB[]={3, + 00,00,00, + xx,xx,00, + xx,xx,00, + xx,00,xx, + xx,xx,xx}; + +char sbC[]={3, + 00,xx,xx, + xx,00,00, + xx,00,00, + xx,00,00, + 00,xx,xx}; + +char ssC[]={3, + 00,00,00, + 00,xx,xx, + xx,00,00, + xx,00,00, + 00,xx,xx}; + +char sbD[]={3, + xx,xx,00, + xx,00,xx, + xx,00,xx, + xx,00,xx, + xx,xx,00}; + +char ssD[]={3, + 00,00,00, + xx,xx,00, + xx,00,xx, + xx,00,xx, + xx,xx,00}; + +char sbE[]={3, + xx,xx,xx, + xx,00,00, + xx,xx,00, + xx,00,00, + xx,xx,xx}; + +char ssE[]={3, + 00,00,00, + xx,xx,xx, + xx,xx,00, + xx,00,00, + xx,xx,xx}; + +char sbF[]={3, + xx,xx,xx, + xx,00,00, + xx,xx,00, + xx,00,00, + xx,00,00}; + +char ssF[]={3, + 00,00,00, + xx,xx,xx, + xx,00,00, + xx,xx,00, + xx,00,00}; + +char sbG[]={3, + 00,xx,xx, + xx,00,00, + xx,00,xx, + xx,00,xx, + 00,xx,xx}; + +char ssG[]={3, + 00,00,00, + 00,xx,xx, + xx,00,00, + xx,00,xx, + 00,xx,xx}; + +char sbH[]={3, + xx,00,xx, + xx,00,xx, + xx,xx,xx, + xx,00,xx, + xx,00,xx}; + +char ssH[]={3, + 00,00,00, + xx,00,xx, + xx,00,xx, + xx,xx,xx, + xx,00,xx}; + +char sbI[]={1, + xx, + xx, + xx, + xx, + xx}; + +char ssI[]={1, + 00, + xx, + xx, + xx, + xx}; + +char sbJ[]={3, + 00,00,xx, + 00,00,xx, + 00,00,xx, + xx,00,xx, + 00,xx,00}; + +char ssJ[]={3, + 00,00,00, + 00,00,xx, + 00,00,xx, + xx,00,xx, + 00,xx,00}; + +char sbK[]={3, + xx,00,xx, + xx,00,xx, + xx,xx,00, + xx,00,xx, + xx,00,xx}; + +char ssK[]={3, + 00,00,00, + xx,00,xx, + xx,xx,00, + xx,00,xx, + xx,00,xx}; + +char sbL[]={3, + xx,00,00, + xx,00,00, + xx,00,00, + xx,00,00, + xx,xx,xx}; + +char ssL[]={3, + 00,00,00, + xx,00,00, + xx,00,00, + xx,00,00, + xx,xx,xx}; + +char sbM[]={5, + xx,00,00,00,xx, + xx,xx,00,xx,xx, + xx,00,xx,00,xx, + xx,00,00,00,xx, + xx,00,00,00,xx}; + +char ssM[]={5, + 00,00,00,00,00, + xx,00,00,00,xx, + xx,xx,00,xx,xx, + xx,00,xx,00,xx, + xx,00,00,00,xx}; + +char sbN[]={4, + xx,00,00,xx, + xx,xx,00,xx, + xx,00,xx,xx, + xx,00,00,xx, + xx,00,00,xx}; + +char ssN[]={4, + 00,00,00,00, + xx,00,00,xx, + xx,xx,00,xx, + xx,00,xx,xx, + xx,00,00,xx}; + +char sbO[]={3, + 00,xx,00, + xx,00,xx, + xx,00,xx, + xx,00,xx, + 00,xx,00}; + +char ssO[]={3, + 00,00,00, + 00,xx,00, + xx,00,xx, + xx,00,xx, + 00,xx,00}; + +char sbP[]={3, + xx,xx,00, + xx,00,xx, + xx,xx,00, + xx,00,00, + xx,00,00}; + +char ssP[]={3, + 00,00,00, + xx,xx,00, + xx,00,xx, + xx,xx,00, + xx,00,00}; + +char sbQ[]={4, + 00,xx,xx,00, + xx,00,00,xx, + xx,00,00,xx, + xx,00,xx,00, + 00,xx,00,xx}; + +char ssQ[]={3, + 00,00,00, + xx,xx,00, + xx,00,xx, + xx,xx,00, + 00,xx,xx}; + +char sbR[]={3, + xx,xx,00, + xx,00,xx, + xx,xx,00, + xx,00,xx, + xx,00,xx}; + +char ssR[]={3, + 00,00,00, + xx,xx,00, + xx,00,xx, + xx,xx,00, + xx,00,xx}; + +char sbS[]={3, + 00,xx,xx, + xx,00,00, + 00,xx,00, + 00,00,xx, + xx,xx,00}; + +char ssS[]={3, + 00,00,00, + 00,xx,xx, + xx,00,00, + 00,xx,xx, + xx,xx,00}; + +char sbT[]={3, + xx,xx,xx, + 00,xx,00, + 00,xx,00, + 00,xx,00, + 00,xx,00}; + +char ssT[]={3, + 00,00,00, + xx,xx,xx, + 00,xx,00, + 00,xx,00, + 00,xx,00}; + +char sbU[]={3, + xx,00,xx, + xx,00,xx, + xx,00,xx, + xx,00,xx, + xx,xx,xx}; + +char ssU[]={3, + 00,00,00, + xx,00,xx, + xx,00,xx, + xx,00,xx, + xx,xx,xx}; + +char sbV[]={3, + xx,00,xx, + xx,00,xx, + xx,00,xx, + xx,00,xx, + 00,xx,00}; + +char ssV[]={3, + 00,00,00, + xx,00,xx, + xx,00,xx, + xx,00,xx, + 00,xx,00}; + +char sbW[]={5, + xx,00,00,00,xx, + xx,00,00,00,xx, + xx,00,xx,00,xx, + xx,xx,00,xx,xx, + xx,00,00,00,xx}; + +char ssW[]={5, + 00,00,00,00,00, + xx,00,00,00,xx, + xx,00,xx,00,xx, + xx,xx,00,xx,xx, + xx,00,00,00,xx}; + +char sbX[]={3, + xx,00,xx, + xx,00,xx, + 00,xx,00, + xx,00,xx, + xx,00,xx}; + +char ssX[]={3, + 00,00,00, + xx,00,xx, + 00,xx,00, + xx,00,xx, + xx,00,xx}; + +char sbY[]={3, + xx,00,xx, + xx,00,xx, + 00,xx,00, + 00,xx,00, + 00,xx,00}; + +char ssY[]={3, + 00,00,00, + xx,00,xx, + xx,00,xx, + 00,xx,00, + 00,xx,00}; + +char sbZ[]={3, + xx,xx,xx, + 00,00,xx, + 00,xx,00, + xx,00,00, + xx,xx,xx}; + +char ssZ[]={2, + 00,00, + xx,xx, + 00,xx, + xx,00, + xx,xx}; + +char s1[]={1, + xx, + xx, + xx, + xx, + xx}; + +char s2[]={3, + xx,xx,xx, + 00,00,xx, + xx,xx,xx, + xx,00,00, + xx,xx,xx}; + +char s3[]={3, + xx,xx,xx, + 00,00,xx, + 00,xx,xx, + 00,00,xx, + xx,xx,xx}; + +char s4[]={3, + xx,00,xx, + xx,00,xx, + xx,xx,xx, + 00,00,xx, + 00,00,xx}; + +char s5[]={3, + xx,xx,xx, + xx,00,00, + xx,xx,xx, + 00,00,xx, + xx,xx,xx}; + +char s6[]={3, + xx,xx,xx, + xx,00,00, + xx,xx,xx, + xx,00,xx, + xx,xx,xx}; + +char s7[]={3, + xx,xx,xx, + 00,00,xx, + 00,00,xx, + 00,00,xx, + 00,00,xx}; + +char s8[]={3, + xx,xx,xx, + xx,00,xx, + xx,xx,xx, + xx,00,xx, + xx,xx,xx}; + +char s9[]={3, + xx,xx,xx, + xx,00,xx, + xx,xx,xx, + 00,00,xx, + xx,xx,xx}; + +char s0[]={3, + xx,xx,xx, + xx,00,xx, + xx,00,xx, + xx,00,xx, + xx,xx,xx}; + +char sQuote[]={3, + xx,00,xx, + xx,00,xx, + 00,00,00, + 00,00,00, + 00,00,00}; + +char sYow[]={1, + xx, + xx, + xx, + 00, + xx}; + +char sQuotes[]={1, + xx, + xx, + 00, + 00, + 00}; + + +char sComma[]={2, + 00,00, + 00,00, + 00,00, + 00,xx, + xx,00}; +char sPeriod[]={1, + 00, + 00, + 00, + 00, + xx}; + +char sMinus[]={2, + 00,00, + 00,00, + xx,xx, + 00,00, + 00,00}; + +char sQuest[]={3, + xx,xx,xx, + 00,00,xx, + 00,xx,xx, + 00,00,00, + 00,xx,00}; + +char sColon[]={1, + 00, + xx, + 00, + xx, + 00}; + +char sch[]={3, + 00,xx,00, + xx,xx,xx, + xx,xx,xx, + xx,xx,xx, + 00,xx,00}; + +char usc[]={2, + 00,00, + 00,00, + 00,00, + 00,00, + xx,xx}; + +char star[]={4, + 00,00,00,xx, + xx,00,xx,00, + 00,xx,00,00, + 00,00,00,00, + 00,00,00,00}; + +char ss[]={2, + xx,xx, + xx,xx, + xx,xx, + xx,xx, + xx,xx}; + +char sra[]={3, + xx,00,00, + xx,xx,00, + xx,xx,xx, + xx,xx,00, + xx,00,00}; + +char slParen[]={2, + 00,xx, + xx,00, + xx,00, + xx,00, + 00,xx}; + +char srParen[]={2, + xx,00, + 00,xx, + 00,xx, + 00,xx, + xx,00}; + +char ssemic[]={2, + xx,xx, + 00,00, + xx,xx, + 00,xx, + xx,00}; + +char sSlash[]={3, + 00,00,xx, + 00,00,xx, + 00,xx,00, + xx,00,00, + xx,00,00}; + +char sBlank[]={2, + 00,00, + 00,00, + 00,00, + 00,00, + 00,00}; + +// ... +char mousepic[] = { xx,00,00,00, + xx,xx,00,00, + xx,xx,xx,00, + xx,xx,xx,xx, + 00,00,xx,00, + 00,00,xx,00}; + +char *smal_tbl[]= +{ sBlank, + sYow, sQuote, ss, ss, ss, ss, sQuotes, slParen, // 40 + srParen, star, ss, sComma, sMinus,sPeriod, sSlash, s0, // 48 + s1, s2, s3, s4, s5, s6, s7, s8, // 56 + s9, sColon, ssemic, ss, ss, sra, sQuest, ss, // 64 + sbA, sbB, sbC, sbD, sbE, sbF, sbG, sbH, // 72 + sbI, sbJ, sbK, sbL, sbM, sbN, sbO, sbP, // 80 + sbQ, sbR, sbS, sbT, sbU, sbV, sbW, sbX, // 88 + sbY, sbZ, ss, ss, ss, ss, usc, sch, // 96 + ssA, ssB, ssC, ssD, ssE, ssF, ssG, ssH, // 102 + ssI, ssJ, ssK, ssL, ssM, ssN, ssO, ssP, // 110 + ssQ, ssR, ssS, ssT, ssU, ssV, ssW, ssX, // 118 + ssY, ssZ }; // 120 + +unsigned char lastcol=31; + +void GotoXY(int x1, int y1) +{ + fontx=x1; + fonty=y1; +} + +void print_char(char c) +{ char* img; + + c-=32; + if (c>90) c=2; + img=smal_tbl[c]; + TCopySprite(fontx,fonty,img[0],5,img+1); + fontx+=img[0]+1; +} + +void printstring(char *str) +{ + for (; *str; ++str) + print_char(*str); +} + +int pixels(char *str) +{ int pix; + + for (pix=0; *str; ++str) + pix += *smal_tbl[*str-32]+1; + return pix; +} + +void dec_to_asciiz(int num, char *buf) +{ + sprintf(buf,"%d",num); +} + +void TextColor(unsigned char newc) +{ char *src; + + src=sbA; + while ((int)src < (int) smal_tbl) + { + if (*src==lastcol) *src=newc; + src++; + } +} diff --git a/16/v2/source/verge/MAPED/SMALFONT.H b/16/v2/source/verge/MAPED/SMALFONT.H new file mode 100644 index 00000000..77688538 --- /dev/null +++ b/16/v2/source/verge/MAPED/SMALFONT.H @@ -0,0 +1,30 @@ +/* +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. +*/ + +#ifndef SMALFONT_INC +#define SMALFONT_INC + +extern int fontx; +extern int fonty; + +extern void GotoXY(int x1, int y1); +extern void print_char(char c); +extern void printstring(char *str); +extern int pixels(char *str); +extern void dec_to_asciiz(int num, char *buf); +extern void TextColor(unsigned char newc); + +#endif // SMALFONT_INC diff --git a/16/v2/source/verge/MAPED/SSAVER.C b/16/v2/source/verge/MAPED/SSAVER.C new file mode 100644 index 00000000..b2ce0a55 --- /dev/null +++ b/16/v2/source/verge/MAPED/SSAVER.C @@ -0,0 +1,136 @@ +/* +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. +*/ + +#include +#include +#include + +#include "maped.h" +#include "timer.h" +#include "vdriver.h" + +#include "mouse.h" + +// ================================= Data ==================================== + +static int *dmapx = NULL; +static int *dmapy = NULL; +static unsigned char *dscr = NULL; +static int recalc_distort = 1; +static long build = 0; + +// ================================= Code ==================================== + +// aen +static void init_distort(void) + { + int x = 0; + int y = 0; + int *dx = NULL; + int *dy = NULL; + + if (dmapx) vfree(dmapx); dmapx=NULL; + if (dmapy) vfree(dmapy); dmapy=NULL; + if (dscr) vfree(dscr); dscr=NULL; + + // allocate distort lookups + dmapx = (int *) valloc(tsx*tsy*4,"ssaver X",0); + dmapy = (int *) valloc(tsx*tsy*4,"ssaver Y",0); + + // allocate distort image buffer + dscr = (unsigned char *) valloc(tsx*tsy,"ssaver scrn",0); + + // copy viewport into distort buffer + memcpy(dscr, screen, tsx*tsy); + + dx = dmapx; + dy = dmapy; + + // generate distort lookups + for (y=0; y= tsy) yy -= tsy; + xt += (dmapx[(yy*tsx)+x] * build) >> 16; + + xx = (x+((thresh*tsx)/tsy)); + if (xx >= tsx) xx -= tsx; + yt += (dmapy[(yy*tsx)+xx] * build) >> 16; + + if (xt < 0) xt += tsx; + if (yt < 0) yt += tsy; + if (xt >= tsx) xt -= tsx; + if (yt >= tsy) yt -= tsy; + + *ds++ = dscr[(yt*tsx)+xt]; + + ++x; + if (x >= tsx) { + x = 0; + ++y; + //ds+=32; + } + + xt = x; + yt = y; + + } while (y < tsy); + + thresh += 2; + if (thresh >= tsy) + thresh -= tsy; + + if (build < 85196) //1.5 + build += 3276; + } + +void ScreenSaver(void) + { + while (idlect > 750) + { + ReadMouse(); + do_distort(); + ShowPage(); + } + recalc_distort=1; + build = 0; + } diff --git a/16/v2/source/verge/MAPED/SSAVER.H b/16/v2/source/verge/MAPED/SSAVER.H new file mode 100644 index 00000000..1a6a5296 --- /dev/null +++ b/16/v2/source/verge/MAPED/SSAVER.H @@ -0,0 +1,22 @@ +/* +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. +*/ + +#ifndef SSAVER_INC +#define SSAVER_INC + +extern void ScreenSaver(void); + +#endif // SSAVER_INC diff --git a/16/v2/source/verge/MAPED/SSAVER1.C b/16/v2/source/verge/MAPED/SSAVER1.C new file mode 100644 index 00000000..2e1846c1 --- /dev/null +++ b/16/v2/source/verge/MAPED/SSAVER1.C @@ -0,0 +1,32 @@ +/* +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. +*/ + +#include "timer.h" +#include "vdriver.h" + +// ================================= Data ==================================== + +// ================================= Code ==================================== + +void ScreenSaver() +{ + while (idlect>750) + { + ReadMouse(); + ClearScreen(); + ShowPage(); + } +} diff --git a/16/v2/source/verge/MAPED/TILEED.C b/16/v2/source/verge/MAPED/TILEED.C new file mode 100644 index 00000000..807f67cc --- /dev/null +++ b/16/v2/source/verge/MAPED/TILEED.C @@ -0,0 +1,2164 @@ +/* +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. +*/ + +// Additional code by Richard Lau (aka Ric) + +/* Date started: 08/Jul/98 */ +/* -- 29/Jul/98 -- + * Heh, I've actually done quite a lot of work on this even though I intend + * to replace it. Oh well :) + * + * I've now made clicking on the mask indicator button (labelled with a small + * "m") drop back to draw mode if you're in select mode (since it makes no + * sense to select an area with the mask turned off). Holding down shift + * and dragging the mouse when you're in select mode will allow you to select + * a rectangle. The PgUp/PgDn colour shifters will now work in paste mode + * (affecting the image in the copy buffer). + * + * The fill routine is now in place and I've put a button in for the pick + * colour/eyedropper tool so that I don't get asked to put in a function for + * like I continuously did with ACE. Due to the extra buttons I've had to + * shift some of the other buttons around to make them all fit onto the + * screen. It's probably not the best arrangement but if anyone comes up with + * a better layout I'm open to suggestions. + * + * The wierd button labelling problem I had last time has been corrected - the + * problem was traced back to the pixels routine in SMALFONT.C. Aen pointed + * out that I wasn't allocating space for the NULL terminator for all the + * strings so that has now been fixed (by adding 1 to strlen). + * + * - Ric + */ +/* + * Keys: + * CTRL/S + mouse click - (over edit window) Pick up colour under mouse + * SHIFT+mb down+drag mouse - select rectangle (select mode only) + * SPACEBAR - toggle between draw mode and select mode + * CTRL+Z or U - one level undo + * CTRL+A - select all + * CTRL+U - unselect all + * CTRL+C - copy selected area + * CTRL+X - cut selected area + * CTRL+V - paste + * DEL - clears selected area + * CTRL+R - reverts the tile to the original (like undo in maped 1) + * (self note: modify to ask for confirmation) + * G - toggles grid on/off + * H - toggles hilight on/off + * M - toggles mask on/off + * I - inverts mask + * X - mirrors image + * Y - flips image + * L/R - Rotates tile 90 degrees anti-clockwise/clockwise + * Q/W - Steps through animation (in tile edit mode) if any + * A/Z and S/X - changes the left or right drawing colours + * PGUP/PGDN - Colour shift up/down + * [ and ] - toggle screen resolutions + * ALT+X - quits to DOS + */ +/* -- 26/Jul/98 -- + * I've actually decided to start the editor over in a new file so that the + * code is a bit more elegant. As it stands some bits of this are messy but + * it currently works ;). Anyway I've decided that what I'll do is to in + * effect write two tile editors - continuing work on this one and working + * on the rewrite as a "side project". The eventual aim will be to replace + * this editor with the rewrite but if factors intervene preventing me from + * completing the rewrite then there'll always be this editor to fall back on. + * + * New in this release is a copy/cut/paste system. New buttons have been added. + * For some reason I haven't figured out yet I can't call the two rotate + * buttons "Rotate ACW" and "Rotate CW" (it causes MapEd to crash) so I've had + * to resort to calling them "Turn_L" and "Turn_R". + * - Ric + */ + +#include +#include + +#include "config.h" +#include "guicomp.h" +#include "keyboard.h" +#include "maped.h" +#include "mouse.h" +#include "render.h" +#include "vdriver.h" + +#include "smalfont.h" + +#undef free + +#define TRUE 1 +#define FALSE 0 +// #define NULL ((void *)0) + +#define MOUSENONE 0 // No mouse buttons pressed +#define MOUSERELEASE 1 // Mouse button released +#define MOUSEPRESSED 2 // Mouse button held down +#define MOUSECLICKED 4 // Mouse button pressed + +// Setup some defines for the regions/areas/windows where everything goes +#define MAX_REGIONS 29 // Number of regions +#define BASEREG 0 // Window coords + title +#define HELPBAR 1 // Helpbar - put helpful messages here :) +#define PALETTE 2 // The palette +#define EDITREG 3 // Main edit window +#define PREVIEW 4 // Preview of image being edited +#define SCOLBOX 5 // Selected colour box +#define SCTXTBX 6 // Text box to show info on the selected colours +#define QUITBUT 7 // Quit button +#define DRAWBUT 8 // Draw mode indicator +#define FILLBUT 9 // Fill mode indicator +#define PICKBUT 10 // Pick mode indicator +#define MASKBUT 11 // Mask mode indicator +#define PSTEBUT 12 // Paste mode indicator +#define EDMDFRM 13 // Frame for edit mode radio buttons +#define MASKIND 14 // Indicator showing if mask is shown +#define GRIDIND 15 // Indicator showing if grid is shown +#define ANIMIND 16 // Indicator showing if animations are shown +#define PXHLIND 17 // Indicator showing if pixel highlight shown +#define IND_FRM 18 // Frame for indicators (push buttons) +#define BUT_FRM 19 // Frame for buttons +#define UNDOBUT 20 // Undo button +#define COPYBUT 21 // Copy button +#define CUT_BUT 22 // Cut button +#define CLR_BUT 23 // Clear button +#define TOOLFRM 24 // Frame for tools +#define FLIPBUT 25 // Flip image button +#define MIRRBUT 26 // Mirror image button +#define RIACBUT 27 // Rotate anticlockwise button +#define RIC_BUT 28 // Rotate clockwise button + +// Define TEbitflags values +#define TEQUITCUR 1 +#define TEANIMATE 2 +#define TEGRID 4 +#define TEHILIGHT 8 +#define TESHOWMSK 16 + +// Define TEREGION->bitflags values +#define REGVISIBLE 1 +#define REGACTIVE 2 +#define REGNOCLICK 4 +#define REGTWOCLICK 8 // wait for a second click + +// TEeditmode defs +#define EDDRAW 1 +#define EDFILL 2 +#define EDPICK 4 +#define EDMASK 8 +#define EDPASTE 16 + +// TEtype defs +#define TEUNKNOWN 0 +#define TETILE 1 + +// DATABUTTON buttontypes: +#define CLICKBUTTON 1 // normal button +#define PUSHBUTTON 2 // can be pushed in/out (toggle bit bitvalue) +#define RADIOBUTTON 4 // for button banks (set *bitflag=bitvalue) + +// DATABASEREGION windowtypes: +#define DBRSTDWINDOW 0 // window and title bar +#define DBRPANEL 1 // no title bar + +// INFOTYPEs: +#define DITREGION 1 +#define DITBASEREGION 2 +#define DITBUTTON 4 +#define DITEDITREG 8 + +// Button flag action - has this button been clicked? +#define BFANONE 0 +#define BFAUNDO 1 +#define BFACOPY 2 +#define BFACUT 4 +#define BFACLEAR 8 +#define BFARIAC 16 +#define BFARIC 32 +#define BFAMIRROR 64 +#define BFAFLIP 128 + +// Variables +typedef struct TEREGION + { + int infotype; // type of struct + unsigned int x1, x2, y1, y2; // bounding coordinates + char *caption; // helpbar text + int bitflags; // see defines above + void (*drawproc)(struct TEREGION *); // region's draw procedure + // - allows nice and short RenderTileEdit proc ;) + void *data; // extended information + } TEREGION; +typedef struct DATABASEREGION + { + int infotype; // type of struct + int numofregs; // total number of regions (including base) + int windowtype; // type of window to draw + } DATABASEREGION; +typedef struct DATABUTTON + { + int infotype; // type of struct + int *bitflag; // address of bitflag + char *text; // addition text (eg helptext) + int bitvalue; // 1st bit/value + int buttontype; // type + } DATABUTTON; +typedef struct DATAEDITREG + { + int infotype; // type of struct + int firstx, firsty; // first coords for two-click operation + } DATAEDITREG; + + +static TEREGION *TEregs=NULL; // pointer to the regions +static unsigned char lcolor=255; // left mouse colour +static unsigned char rcolor=0; // right mouse colour +static TEREGION *TEOldReg=NULL; +static unsigned int MBStatus[3]={MOUSENONE,MOUSENONE,MOUSENONE}; +static int TEanimstrand=0; // Animation strand +static int TEbitflags=TEANIMATE; // Set default bitflags +static int TEbfa=BFANONE; // Set default button action flags +static int TEeditmode=EDDRAW; // Default edit region mode +static int TExoffs=16; // X offset for region "windows" +static int TEyoffs=16; // Y offset for region "windows" +unsigned int TEtype=TEUNKNOWN; // type of graphic being edited +unsigned int TEtile; // tile to edit - may possibly expand this to an array for simultaneous editing +unsigned int TExsize=0; // width of graphic being edited +unsigned int TEysize=0; // height of graphic being edited +unsigned int TEcopyxsize=0; // width of copy buffer +unsigned int TEcopyysize=0; // height of copy buffer +unsigned char *TEsource=NULL; // pointer to original image being edited +static unsigned char *TEimage=NULL; // pointer to image being edited +static unsigned char *TEmask=NULL; // pointer to image mask +static unsigned char *TEundo=NULL; // pointer to undo buffer +static unsigned char *TEcopy=NULL; // pointer to copy buffer +static unsigned char *TEcmsk=NULL; // pointer to copy mask +static char TEtempstr[256]; // Temporary string buffer + +// Function prototypes +static void *TEAlloc(unsigned long amount, char *whatfor); + +#define TEFree(ptr) if (ptr) free(ptr); ptr=NULL; +#define TEFreeReg(ptr) DestroyRegions(&ptr); if (ptr) free(ptr); ptr=NULL; +#define TENewText(text, whatfor) (char *) strcpy(TEAlloc(strlen(text)+1, whatfor), text); +//static void TEFree(void *TETmpBuf); +static void MBClickHandler(TEREGION *TEBaseReg); +static void AboutTE(void); +static void DestroyRegions(TEREGION **TEBaseReg); +static void SetupRegions(void); +static void InitTEImage(void); +static void DeinitTEImage(void); +static int MouseOverTEreg(TEREGION *TEr); +static void RenderTileEdit(TEREGION *TEBaseReg); +static void RestartTileEditor(void); +static void SetCaption(TEREGION *TEr, char *helptext); +static void TEDrawHilight(int x1, int y1, int width, int height, unsigned char colour); +static void TEDrawCheckeredBox(int x1, int y1, int width, int height, unsigned char colour); +static void TERegFill(TEREGION *TEr, int colour); +static void TERegText(TEREGION *TEr, char *message); +static void TEClearImage(void); +static void TECopyImage(void); +static void TEFlipImage(unsigned char *TERILsrc, int TERILxsize, int TERILysize); +static void TEMirrorImage(unsigned char *TERILsrc, int TERILxsize, int TERILysize); +static void TERotateImageAntiClockwise(unsigned char *TERILsrc, int TERILxsize, int TERILysize); +static void TERotateImageClockwise(unsigned char *TERILsrc, int TERILxsize, int TERILysize); +static void TEFillImage(char *TEFIimage, char *TEFImask, int TEFIxsize, int TEFIysize, int TEFIx, int TEFIy, char TEFIcolour); +static void TERFillImage(char *TERFIimage, char *TERFImask, int TERFIxsize, int TERFIysize, int TERFIx, int TERFIy); +static void TEShiftColours(char *TESCimage, char *TESCmask, int TESCxsize, int TESCysize, int amount); +static void TEUndo(void); +static void DrawButton(TEREGION *TEr); +static void DrawEditReg(TEREGION *TEr); +static void DrawHelpBar(TEREGION *TEr); +static void DrawPalette(TEREGION *TEr); +static void DrawPreview(TEREGION *TEr); +static void DrawSColBox(TEREGION *TEr); +static void DrawSCTxtBx(TEREGION *TEr); +static void DrawSunkRegion(TEREGION *TEr); +void TileEdit(void); + + +static int MouseOverTEreg(TEREGION *TEr) + { + unsigned int testx=mx-TExoffs; + unsigned int testy=my-TEyoffs; + unsigned int width=(TEr->x2)-(TEr->x1); + unsigned int height=(TEr->y2)-(TEr->y1); + testx-=(TEr->x1); + testy-=(TEr->y1); + + if (testx >= width || testy >= height) return FALSE; + return TRUE; + } + +static void DrawButton(TEREGION *TEr) +// -- ric: 20/Jul/98 - generic button routine + { + unsigned int x=TEr->x1+TExoffs; + unsigned int y=TEr->y1+TEyoffs; + unsigned int width=(TEr->x2)-(TEr->x1); + unsigned int height=(TEr->y2)-(TEr->y1); + + strcpy(TEtempstr,"Button data not declared."); + if (!TEr->data) + err(TEtempstr); + if (((struct DATABUTTON *)(TEr->data))->infotype!=DITBUTTON) + err(TEtempstr); + + // draw raised button + stdwindow(x-1, y-1, x+width+1, y+height+1); + if (TEr->caption) + { + GotoXY(x+(width-(pixels(TEr->caption)))/2, y+(height-6)/2); + printstring(TEr->caption); + } + switch (((struct DATABUTTON *)(TEr->data))->buttontype) + { + case CLICKBUTTON: + if (MouseOverTEreg(TEr) && TEr->bitflags®ACTIVE) + { + if (((struct DATABUTTON *)(TEr->data))->text) + SetCaption(&TEregs[HELPBAR], (((struct DATABUTTON *)(TEr->data))->text)); + + // Handle mouse clicks + if (TEOldReg==TEr) + { + if ((MBStatus[0]|MBStatus[1])==MOUSEPRESSED) + { + // draw button down + FilledBox(x, y, width, height, winbg); + HLine(x, y, width, darkw); + VLine(x, y, height, darkw); + if (TEr->caption) + { + GotoXY(x+1+(width-(pixels(TEr->caption)))/2, y+1+(height-6)/2); + printstring(TEr->caption); + } + } + if ((MBStatus[0]|MBStatus[1])==MOUSERELEASE) + { + *(((struct DATABUTTON *)(TEr->data))->bitflag)^=((struct DATABUTTON *)(TEr->data))->bitvalue; + } + } + } + break; + case PUSHBUTTON: + if (*(((struct DATABUTTON *)(TEr->data))->bitflag)&(((struct DATABUTTON *)(TEr->data))->bitvalue)) + { + // draw button down + FilledBox(x, y, width, height, winbg); + HLine(x, y, width, darkw); + VLine(x, y, height, darkw); + if (TEr->caption) + { + GotoXY(x+1+(width-(pixels(TEr->caption)))/2, y+1+(height-6)/2); + printstring(TEr->caption); + } + } + if (MouseOverTEreg(TEr) && TEr->bitflags®ACTIVE) + { + if (((struct DATABUTTON *)(TEr->data))->text) + { + sprintf(TEtempstr, "Toggle %s on/off", ((struct DATABUTTON *)(TEr->data))->text); + SetCaption(&TEregs[HELPBAR], TEtempstr); + } + + // Handle mouse clicks + if (TEOldReg==TEr) + { + if ((MBStatus[0]|MBStatus[1])==MOUSECLICKED) + { + *(((struct DATABUTTON *)(TEr->data))->bitflag)^=((struct DATABUTTON *)(TEr->data))->bitvalue; + } + } + } + break; + case RADIOBUTTON: + if (*(((struct DATABUTTON *)(TEr->data))->bitflag)==((struct DATABUTTON *)(TEr->data))->bitvalue) + { + // draw button down + FilledBox(x, y, width, height, winbg); + HLine(x, y, width, darkw); + VLine(x, y, height, darkw); + if (TEr->caption) + { + GotoXY(x+1+(width-(pixels(TEr->caption)))/2, y+1+(height-6)/2); + printstring(TEr->caption); + } + } + if (MouseOverTEreg(TEr) && TEr->bitflags®ACTIVE) + { + if (((struct DATABUTTON *)(TEr->data))->text) + SetCaption(&TEregs[HELPBAR], (((struct DATABUTTON *)(TEr->data))->text)); + + // Handle mouse clicks + if (TEOldReg==TEr) + { + if ((MBStatus[0]|MBStatus[1])==MOUSECLICKED) + { + *(((struct DATABUTTON *)(TEr->data))->bitflag)=((struct DATABUTTON *)(TEr->data))->bitvalue; + } + } + } + break; + } + } + +static void DrawSunkRegion(TEREGION *TEr) + { + unsigned int x=TEr->x1+TExoffs; + unsigned int y=TEr->y1+TEyoffs; + unsigned int width=(TEr->x2)-(TEr->x1); + unsigned int height=(TEr->y2)-(TEr->y1); + +// FilledBox(x, y, width, height, black); + HLine(x, y, width, darkw); + VLine(x, y, height, darkw); + HLine(x+1, y+height-1, width-1, brightw); + VLine(x+width-1, y+1, height-1, brightw); + } + +static void DrawEditReg(TEREGION *TEr) + { + int i,j,i2,j2,c; + int minx,miny,maxx,maxy; + int blocksize=8; + int visblocksize=blocksize; + char *img; + TEREGION tempr; + tempr.x1=TEr->x1+2; + tempr.x2=TEr->x2-2; + tempr.y1=TEr->y1+2; + tempr.y2=TEr->y2-2; + + img=TEimage; //vsp+(256*TEtile); + + TERegFill(TEr, black); + DrawSunkRegion(TEr); + FilledBox(TEr->x1+TExoffs+2, TEr->y1+TEyoffs+2, (blocksize<<4), (blocksize<<4), titlebg); + + if (TEbitflags&TEGRID) visblocksize-=1; + + for (j=0; jx1+TExoffs+2+i*blocksize, TEr->y1+TEyoffs+2+j*blocksize, visblocksize, visblocksize, *img++); + if (TEbitflags&TESHOWMSK && !TEmask[j*TExsize+i]) + TEDrawCheckeredBox(TEr->x1+TExoffs+2+i*blocksize, TEr->y1+TEyoffs+2+j*blocksize, visblocksize, visblocksize, titlebg); + } + + img=TEimage; + if (TEr->bitflags®ACTIVE && !(MouseOverTEreg(&tempr)) && (MBStatus[0]|MBStatus[1])==MOUSERELEASE) + if (TEr->bitflags®TWOCLICK) TEr->bitflags^=REGTWOCLICK; + if (MouseOverTEreg(&tempr) && TEr->bitflags®ACTIVE) + { + i=(mx-TExoffs-(tempr.x1))/blocksize; + j=(my-TEyoffs-(tempr.y1))/blocksize; + c=img[(j*TExsize)+i]; + 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]); + SetCaption(&TEregs[HELPBAR], TEtempstr); + if (TEbitflags&TEHILIGHT) + TEDrawHilight(TExoffs+i*blocksize+tempr.x1, TEyoffs+j*blocksize+tempr.y1, visblocksize, visblocksize, white); + + // if pasting draw the image being pasted + if (TEeditmode==EDPASTE) + { + for (j2=0; j2x1+TExoffs+2+(i+i2)*blocksize, TEr->y1+TEyoffs+2+(j+j2)*blocksize, visblocksize, visblocksize, TEcopy[j2*TEcopyxsize+i2]); + else + if (TEmask[(j+j2)*TExsize+i+i2]) + FilledBox(TEr->x1+TExoffs+2+(i+i2)*blocksize, TEr->y1+TEyoffs+2+(j+j2)*blocksize, visblocksize, visblocksize, TEcopy[j2*TEcopyxsize+i2]); + } + if (TEeditmode==EDMASK) + { + // draw reg + if (TEr->bitflags®TWOCLICK) + for (j2=0; j2=j && j2<=((struct DATAEDITREG *)(TEr->data))->firsty) || + (j2>=((struct DATAEDITREG *)(TEr->data))->firsty && j2<=j)) && + ((i2>=i && i2<=((struct DATAEDITREG *)(TEr->data))->firstx) || + (i2>=((struct DATAEDITREG *)(TEr->data))->firstx && i2<=i))) + TEDrawCheckeredBox(TEr->x1+TExoffs+2+i2*blocksize, TEr->y1+TEyoffs+2+j2*blocksize, visblocksize, visblocksize, darkred); + + if ((MBStatus[0]|MBStatus[1])==MOUSECLICKED && (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) && !(TEr->bitflags®TWOCLICK)) + { + ((struct DATAEDITREG *)(TEr->data))->firstx=i; + ((struct DATAEDITREG *)(TEr->data))->firsty=j; + TEr->bitflags^=REGTWOCLICK; + } + if ((MBStatus[0]|MBStatus[1])==MOUSERELEASE && TEr->bitflags®TWOCLICK) + { + if (MBStatus[1]==MOUSERELEASE) c=0x0; + else c=0xf; + miny=j; + maxy=((struct DATAEDITREG *)(TEr->data))->firsty; + minx=i; + maxx=((struct DATAEDITREG *)(TEr->data))->firstx; + if (j>((struct DATAEDITREG *)(TEr->data))->firsty) + { + maxy=j; + miny=((struct DATAEDITREG *)(TEr->data))->firsty; + } + if (i>((struct DATAEDITREG *)(TEr->data))->firstx) + { + maxx=i; + minx=((struct DATAEDITREG *)(TEr->data))->firstx; + } + for (j2=miny; j2<=maxy; j2++) + for (i2=minx; i2<=maxx; i2++) + TEmask[j2*TExsize+i2]=(char)c; + TEr->bitflags^=REGTWOCLICK; + } + } + // Handle mouse clicks + +#ifdef JUNK + if ((MBStatus[0]|MBStatus[1])==MOUSECLICKED && (key[SCAN_CTRL]||key[SCAN_S])) + { + // put code to lock out draw mode here + } +#endif + if (TEOldReg==TEr) + { + // Update undo buffer + if ((MBStatus[0]|MBStatus[1])==MOUSECLICKED && TEeditmode!=EDMASK && TEeditmode!=EDPICK && !(key[SCAN_CTRL]||key[SCAN_S])) + memcpy(TEundo, TEimage, TExsize*TEysize); + if (MBStatus[0]==MOUSECLICKED && TEeditmode==EDFILL) + TEFillImage(TEimage, (TEbitflags&TESHOWMSK ? TEmask : NULL), TExsize, TEysize, i, j, lcolor); + if (MBStatus[1]==MOUSECLICKED && TEeditmode==EDFILL) + TEFillImage(TEimage, (TEbitflags&TESHOWMSK ? TEmask : NULL), TExsize, TEysize, i, j, rcolor); + + // Draw + if ((MBStatus[0]|MBStatus[1])==MOUSEPRESSED) + { + if (TEeditmode==EDPASTE) + { + for (j2=0; j2bitflags®TWOCLICK)) + TEmask[(j*TExsize)+i]=0xf; + if (MBStatus[1]==MOUSEPRESSED) + if (key[SCAN_CTRL]||key[SCAN_S]||(TEeditmode==EDPICK)) + rcolor=TEimage[(j*TExsize)+i]; + else + if ((TEeditmode==EDDRAW)&&!(TEbitflags&TESHOWMSK && !TEmask[j*TExsize+i])) + TEimage[(j*TExsize)+i]=rcolor; + else + if (TEeditmode==EDMASK && !(TEr->bitflags®TWOCLICK)) + TEmask[(j*TExsize)+i]=0x0; + } + } + } + +static void DrawHelpBar(TEREGION *TEr) + { + //int i, htext=0; + TERegFill(TEr, black); + DrawSunkRegion(TEr); + if (TEr->caption) TERegText(TEr, TEr->caption); + TEFree(TEr->caption); // Blank caption + //TEr->caption=NULL; // why doesn't this work in TEFree? +#ifdef JUNK + i=MAX_REGIONS; + do + { + i--; + if (MouseOverTEreg(&TEregs[i])) htext=i; + } while (i>0); + if (htext && TEregs[htext].helptext) TERegText(TEr, TEr->caption); +#endif + } + +static void DrawPalette(TEREGION *TEr) + { + int i,j; + unsigned int width=(TEr->x2)-(TEr->x1); + unsigned int height=(TEr->y2)-(TEr->y1); + int xscale=(width-4)>>6; + int yscale=(height-4)>>2; + int x=(TEr->x1)+TExoffs; + int y=(TEr->y1)+TEyoffs; + TEREGION tempr; + tempr.x1=TEr->x1+2; + tempr.x2=TEr->x2-2; + tempr.y1=TEr->y1+2; + tempr.y2=TEr->y2-2; + + x+=2; + y+=2; + TERegFill(TEr, black); + DrawSunkRegion(TEr); + i=64; + do + { + i--; + FilledBox(x+(i*xscale), y, xscale, yscale, i); + FilledBox(x+(i*xscale), y+yscale, xscale, yscale, i+64); + FilledBox(x+(i*xscale), y+yscale*2, xscale, yscale, i+128); + FilledBox(x+(i*xscale), y+yscale*3, xscale, yscale, i+192); + } while (i>0); + + i=lcolor&63; + j=lcolor>>6; + TEDrawHilight(x+i*xscale, y+j*yscale, xscale, yscale, titlebg); + + i=rcolor&63; + j=rcolor>>6; + TEDrawHilight(x+i*xscale, y+j*yscale, xscale, yscale, titlebg); + + if (MouseOverTEreg(&tempr) && TEr->bitflags®ACTIVE) + { + i=(mx-TExoffs-(tempr.x1))/xscale; + j=(my-TExoffs-(tempr.y1))/yscale; + i+=(j<<6); + j=i*3; + sprintf(TEtempstr, "Color: %03d (rgb: %03d/%03d/%03d)", i, pal[j], pal[j+1], pal[j+2]); + SetCaption(&TEregs[HELPBAR], TEtempstr); + // Handle mouse clicks + if (TEOldReg==TEr) + { + if (MBStatus[0]==MOUSEPRESSED) lcolor=i; + if (MBStatus[1]==MOUSEPRESSED) rcolor=i; + } + } + } + +static void DrawPreview(TEREGION *TEr) + { + char *img; + int i; + TERegFill(TEr, black); + DrawSunkRegion(TEr); +// img=vsp+(256*TEtile); + img=TEimage; + i=tileidx[TEtile]; + if ((TEbitflags&TEANIMATE) && i!=TEtile) img=vsp+(256*i); + CopyTile(TEr->x1+TExoffs+2, TEr->y1+TEyoffs+2, img); + + if (MouseOverTEreg(TEr) && TEr->bitflags®ACTIVE) + { + strcpy(TEtempstr, (TEbitflags&TEANIMATE ? "Click to halt animation" : "Click to animate tile")); + SetCaption(&TEregs[HELPBAR], TEtempstr); + + // Handle mouse clicks + if (TEOldReg==TEr) + if ((MBStatus[0]|MBStatus[1])==MOUSECLICKED && MouseOverTEreg(TEr)) + TEbitflags^=TEANIMATE; + } + } + +static void DrawSColBox(TEREGION *TEr) +// -- ric: 15/Jul/98 - Draw selected colour box + { + int halfwidth=TEr->x2-TEr->x1-4; + int height=TEr->y2-TEr->y1-4; + char DSCBtempcolor; + TERegFill(TEr, black); + DrawSunkRegion(TEr); + FilledBox(TExoffs+2+TEr->x1, TEyoffs+2+TEr->y1, halfwidth, height, titlebg); + height-=2; + halfwidth-=2; + halfwidth>>=1; + FilledBox(TExoffs+3+TEr->x1, TEyoffs+3+TEr->y1, halfwidth, height, lcolor); + FilledBox(TExoffs+3+TEr->x1+halfwidth, TEyoffs+3+TEr->y1, halfwidth, height, rcolor); + + if (MouseOverTEreg(TEr) && TEr->bitflags®ACTIVE) + { + strcpy(TEtempstr, "Click to swap colors"); + SetCaption(&TEregs[HELPBAR], TEtempstr); + + // Handle mouse clicks + if (TEOldReg==TEr) + if ((MBStatus[0]|MBStatus[1])==MOUSECLICKED && MouseOverTEreg(TEr)) + { + DSCBtempcolor=lcolor; + lcolor=rcolor; + rcolor=DSCBtempcolor; + } + } + } + +static void DrawSCTxtBx(TEREGION *TEr) +// -- ric: 15/Jul/98 - Draw selected colour text box + { +// char DSCTBTextBuf[256]; + int i; + int DSCTBx=TEr->x1+TExoffs+2; + int DSCTBy=TEr->y1+TEyoffs+2; + TERegFill(TEr, black); + DrawSunkRegion(TEr); + i=lcolor*3; + sprintf(TEtempstr, "Left: %03d (rgb: %03d/%03d/%03d)", lcolor, pal[i], pal[i+1], pal[i+2]); + GotoXY(DSCTBx, DSCTBy); + printstring(TEtempstr); + i=rcolor*3; + sprintf(TEtempstr, "Right: %03d (rgb: %03d/%03d/%03d)", rcolor, pal[i], pal[i+1], pal[i+2]); + GotoXY(DSCTBx, DSCTBy+7); + printstring(TEtempstr); + } + +static void SetCaption(TEREGION *TEr, char *helptext) + { + TEFree(TEr->caption); + TEr->caption=(char *)strcpy((char *)TEAlloc(strlen(helptext)+1,helptext), helptext); + } + +static void TEDrawHilight(int x1, int y1, int width, int height, unsigned char colour) +// -- ric: 15/Jul/98 - Draws hilight around given rectangle + { + VLine(x1-1, y1, height, colour); + VLine(x1+width, y1, height, colour); + HLine(x1-1, y1-1, width+2, colour); + HLine(x1-1, y1+height, width+2, colour); + } + +static void TEDrawCheckeredBox(int x1, int y1, int width, int height, unsigned char colour) +// -- ric: 17/Jul/98 - Draws a checkered box + { + int i,j; + unsigned char c; + for (j=0; j-1) + FilledBox(TEr->x1+TExoffs, TEr->y1+TEyoffs, (TEr->x2)-(TEr->x1), (TEr->y2)-(TEr->y1), colour); + } + +static void TERegText(TEREGION *TEr, char *message) +// Prints given message in the specified region + { + int tempx, tempy; + tempx=(TEr->x1)+TExoffs+2; + + tempy=(TEr->y2)-(TEr->y1); + tempy>>=1; + tempy+=(TEr->y1)-3; + + GotoXY(tempx,tempy+TEyoffs); + printstring(message); + + } + +static void TEClearImage(void) +// -- ric: 26/Jul/98 - clear selected image + { + int j; + if (TEbitflags&TESHOWMSK) + { + j=TEysize*TExsize; + memcpy(TEundo, TEimage, j); // backup image to undo buffer + do + { + j--; + if (*(TEmask+j)) *(TEimage+j)=rcolor; + } while (j>0); + } + } + +static void TECopyImage(void) +// -- ric: 26/Jul/98 - copy selected image to copy buffer + { + int i, j, TECIxstart, TECIystart, TECIxsize, TECIysize; + if (TEbitflags&TESHOWMSK) // only makes sense if selected region is shown + { + TECIxstart=TExsize; + TECIystart=TEysize; + TECIxsize=-1; + TECIysize=-1; + // loop through image to find the starting and ending x and y coords + // of the image to copy + for (j=0; jTECIxsize) TECIxsize=i; + if (jTECIysize) TECIysize=j; + } + } + + TECIxsize-=TECIxstart-1; + TECIysize-=TECIystart-1; + + if (TECIxsize>0 && TECIysize>0) + { + // free and create TEcopy and TEcmsk buffers + TEFree(TEcopy); + TEFree(TEcmsk); + + // make copy buffer square (allows for rotation) + TEcopyxsize=TECIysize; + TEcopyysize=TECIysize; + if (TECIxsize>TECIysize) + { + TEcopyxsize=TECIxsize; + TEcopyysize=TECIxsize; + } + TEcopy=(char *)TEAlloc(TEcopyxsize*TEcopyysize, "copy buffer"); + TEcmsk=(char *)TEAlloc(TEcopyxsize*TEcopyysize, "copy mask"); + + // copy image into buffer + for (j=0; j0); + } while (j>0); + TEFree(TERILimg); + } + } + +static void TERotateImageClockwise(unsigned char *TERILsrc, int TERILxsize, int TERILysize) +// -- ric: 16/Jul/98 - rotates image (must be square) 90 degrees clockwise + { + unsigned char *TERILimg=NULL; + int i, j, amount; + if (TERILxsize==TERILysize) + { + amount=TERILxsize*TERILysize; + TERILimg=(char *) TEAlloc(amount, "temporary image buffer for TERotateImageClockwise"); + memcpy(TERILimg, TERILsrc, amount); + j=TERILysize; + do + { + j--; + i=TERILxsize; + do + { + i--; + TERILsrc[(j*TERILxsize)+i]=TERILimg[((TERILxsize-1-i)*TERILxsize)+(j)]; + } while (i>0); + } while (j>0); + TEFree(TERILimg); + } + } + +static void TEFlipImage(unsigned char *TERILsrc, int TERILxsize, int TERILysize) +// -- ric: 15/Jul/98 - flips image + { + unsigned char *TERILimg=NULL; + int i, j, amount; + amount=TERILxsize*TERILysize; + TERILimg=(char *) TEAlloc(amount, "temporary image buffer for TEFlipImage"); + memcpy(TERILimg, TERILsrc, amount); + j=TERILysize; + do + { + j--; + i=TERILxsize; + do + { + i--; + TERILsrc[(j*TERILxsize)+i]=TERILimg[((TERILysize-1-j)*TERILxsize)+i]; + } while (i>0); + } while (j>0); + TEFree(TERILimg); + } + +static void TEMirrorImage(unsigned char *TERILsrc, int TERILxsize, int TERILysize) +// -- ric: 15/Jul/98 - mirrors image + { + unsigned char *TERILimg=NULL; + int i, j, amount; + amount=TERILxsize*TERILysize; + TERILimg=(char *) TEAlloc(amount, "temporary image buffer for TEMirrorImage"); + memcpy(TERILimg, TERILsrc, amount); + j=TERILysize; + do + { + j--; + i=TERILxsize; + do + { + i--; + TERILsrc[(j*TERILxsize)+i]=TERILimg[(j*TERILxsize)+(TERILxsize-1-i)]; + } while (i>0); + } while (j>0); + TEFree(TERILimg); + } + +static void TEFillImage(char *TEFIimage, char *TEFImask, int TEFIxsize, int TEFIysize, int TEFIx, int TEFIy, char TEFIcolour) +// -- ric: 29/Jul/98 - Fill procedure - sets up and calls recursive procedure below + { + int i,j; + unsigned char *TEFIfillmask=NULL; // will eventually contain 0 for ignore and 1 for fill + TEFIfillmask=(char *) TEAlloc(TEFIxsize*TEFIysize, "temporary fill buffer for TEFillImage"); + TERFillImage(TEFIimage, TEFIfillmask, TEFIxsize, TEFIysize, TEFIx, TEFIy); + + if (TEFImask) + for (j=0; j=0 && x=0 && y=0 && x=0 && y=0 && x=0 && y=0 && x=0 && y0); + } while (j>0); + } + + +static void TEUndo (void) + { + unsigned char *tempimg=TEimage; + TEimage=TEundo; + TEundo=tempimg; + } + +static void *TEAlloc(unsigned long amount, char *whatfor) +// -- ric: 14/Jul/98 - TE's custom, error-handling memory allocation routine + { + char *TETmpBuf=NULL; + + amount += 3; // aen + amount &= ~3; + +// static char DebugBuf[256]; + TETmpBuf=(char *) malloc(amount); + if (!TETmpBuf) + { + sprintf(TEtempstr, "Unable to allocate %ld bytes for %s.", amount, whatfor); + err(TEtempstr); + } + memset(TETmpBuf,0, amount); // Clear allocated mem + /* + __asm { // aen + mov edi,TETmpBuf + mov ecx,amount + shr ecx,2 + xor eax,eax + cld + rep stosd + } ; + */ + return TETmpBuf; + } + +#ifdef JUNK +static void TEFree(void *TETmpBuf) +// -- ric: 14/Jul/98 - TE's custom memory freeing routine + { + if (TETmpBuf) free(TETmpBuf); // Only free memory if previously allocated + TETmpBuf=NULL; // Set freed memory to point to NULL + } +#endif + +static void MBClickHandler(TEREGION *TEBaseReg) +// -- ric: 20/Jul/98 - Mouse button click handler + { + int i,j; + ReadMouse(); + if (TEBaseReg) + { + if (!TEBaseReg->data) err("No region data defined."); + if (((struct DATABASEREGION *)TEBaseReg->data)->infotype!=DITBASEREGION) + err("MBClickHandler called with invalid base region."); + } + + for (i=0; i<3; ++i) + { + if (mb & (i+1)) + { + if (MBStatus[i] == MOUSECLICKED) + MBStatus[i]=MOUSEPRESSED; + else if (MBStatus[i] == MOUSENONE) + { + MBStatus[i] = MOUSECLICKED; + if (TEBaseReg) + { + TEOldReg = NULL; + for (j=0; j<((struct DATABASEREGION *)TEBaseReg->data)->numofregs; ++j) + if (MouseOverTEreg(TEBaseReg+j)&&!((TEBaseReg+j)->bitflags®NOCLICK)) + TEOldReg = TEBaseReg+j; + } + } + } + else + { + if (MBStatus[i] <= MOUSERELEASE) + MBStatus[i] = MOUSENONE; + else if (MBStatus[i]>MOUSERELEASE) + MBStatus[i] = MOUSERELEASE; + } + } + } + +static void AboutTE (void) +// Just here to test the mouse input loop - remove this later + { + TEREGION *TEr=NULL; + TEREGION *TEaboutwin=NULL; +// int amxsize=150, amysize=82; + int amxofs=60, amyofs=60; + int i,i2,j,j2; + int QuitAW=FALSE; + int moving=FALSE; + + // Allocate memory + TEaboutwin=(struct TEREGION *) TEAlloc((sizeof (struct TEREGION))*4,"about window regions"); + TEr=TEaboutwin; + TEr->infotype=DITREGION; + TEr->x1=amxofs; + TEr->x2=TEr->x1+150; + TEr->y1=amyofs; + TEr->y2=TEr->y1+82; + TEr->bitflags=REGACTIVE|REGVISIBLE|REGNOCLICK; +// TEr->drawproc=NULL; + sprintf(strbuf, "About MapEd %s Tile Editor", ME2_VERSION); + TEr->caption=TENewText(strbuf, "About window"); + TEr->data=(struct DATABASEREGION *) TEAlloc(sizeof (struct DATABASEREGION), "base region data"); + ((struct DATABASEREGION *)(TEr->data))->infotype=DITBASEREGION; + ((struct DATABASEREGION *)(TEr->data))->numofregs=4; + ((struct DATABASEREGION *)(TEr->data))->windowtype=DBRSTDWINDOW; + + TEr+=1; + TEr->infotype=DITREGION; + TEr->x1=0; + TEr->x2=TEaboutwin->x2-TEaboutwin->x1-9; + TEr->y1=0; + TEr->y2=8; + TEr->bitflags=REGACTIVE; +// TEr->drawproc=NULL; +// TEr->caption=NULL; + + TEr+=1; + TEr->infotype=DITREGION; + TEr->x1=TEaboutwin->x2-TEaboutwin->x1-9; + TEr->x2=TEaboutwin->x2-TEaboutwin->x1-3; + TEr->y1=3; + TEr->y2=6; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; +// TEr->caption=NULL; + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "quit button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=NULL; + ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&QuitAW; + ((struct DATABUTTON *)(TEr->data))->bitvalue=TRUE; + + TEr+=1; + TEr->infotype=DITREGION; + TEr->x1=60; + TEr->x2=90; + TEr->y1=62; + TEr->y2=72; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=TENewText("ok","ok button caption"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "quit button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=NULL; + ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&QuitAW; + ((struct DATABUTTON *)(TEr->data))->bitvalue=TRUE; + TEr=TEaboutwin+1; // point to title bar area + + while (!QuitAW) + { + // Mouse button click handler routines + MBClickHandler(TEaboutwin); + + amxofs=TEaboutwin->x1; + amyofs=TEaboutwin->y1; + if ((MBStatus[0]|MBStatus[1])==MOUSERELEASE) + moving=FALSE; + + // Draw loop + RenderTileEdit(TEregs); + RenderTileEdit(TEaboutwin); + + sprintf(strbuf, "MapEd v.%s", ME2_VERSION); + GotoXY(amxofs+52, amyofs+16); printstring(strbuf); + GotoXY(amxofs+31, amyofs+22); printstring("Copyright (C) 1998 vecna"); + GotoXY(amxofs+40, amyofs+28); printstring("All Rights Reserved"); + sprintf(strbuf, "MapEd v.%s Tile Editor", ME2_VERSION); + GotoXY(amxofs+29, amyofs+41); printstring(strbuf); + GotoXY(amxofs+20, amyofs+47); printstring("Additional code by Richard Lau"); + DrawMouse(); + ShowPage(); + + // Move window? + if (MouseOverTEreg(TEr) && TEOldReg==TEr) + { + if ((MBStatus[0]|MBStatus[1])==MOUSECLICKED) + { + i2=TEaboutwin->x2-TEaboutwin->x1; + j2=TEaboutwin->y2-TEaboutwin->y1; + i=mx-TEaboutwin->x1; + j=my-TEaboutwin->y1; + moving=TRUE; + } + } + if ((MBStatus[0]|MBStatus[1])==MOUSEPRESSED && moving) + { + if (((mx-i)<16)) TEaboutwin->x1=16; + else if (((mx-i+i2)>=(16+sx))) TEaboutwin->x1=16+(sx-i2); + else TEaboutwin->x1=mx-i; + if (((my-j)<16)) TEaboutwin->y1=16; + else if (((my-j+j2)>=(16+sy))) TEaboutwin->y1=16+(sy-j2); + else TEaboutwin->y1=my-j; + TEaboutwin->x2=TEaboutwin->x1+i2; + TEaboutwin->y2=TEaboutwin->y1+j2; + } + + if (key[SCAN_ESC]) + { + key[SCAN_ESC]=0; + QuitAW=TRUE; + } + + } + // free TEaboutwin + TEFreeReg(TEaboutwin); + } + +static void RestartTileEditor(void) +// -- ric: 17/Jul/98 - reinit the tile editor + { + int i,j, amount; + unsigned char *TERTEmask=NULL; + + switch (TEtype) + { + case TETILE: // edit tile TEtile + i=TExsize; + j=TEysize; + amount=i*j; + TERTEmask=(unsigned char *) TEAlloc(amount, "tile editor mask backup buffer"); + + // backup mask + memcpy(TERTEmask, TEmask, amount); + + // Restart editor + DeinitTEImage(); + TEFreeReg(TEregs); + TEtype=TETILE; + TExsize=i; + TEysize=j; + TEsource=vsp+(256*TEtile); + InitTEImage(); + SetupRegions(); + + // Restore mask + memcpy(TEmask, TERTEmask, amount); + TEFree(TERTEmask); + break; + } + } + +static void InitTEImage (void) +// Copy the image data being edited and allocate memory for the image buffers + { + int i; + int amount=TExsize*TEysize; + if (TEtype==TEUNKNOWN) err("Unrecognised tile editor graphics type."); + if (!TEsource) err("Invalid input image."); + TEimage=(unsigned char *) TEAlloc(amount, "tile editor image buffer"); + TEmask=(unsigned char *) TEAlloc(amount, "tile editor mask buffer"); + TEundo=(unsigned char *) TEAlloc(amount, "tile editor undo buffer"); +// if (!TEimage || !TEundo) err("Cannot allocate memory for tile editor image buffers."); + memcpy(TEimage, TEsource, amount); // copy original image into edit buffer + memcpy(TEundo, TEimage, amount); // copy original image into undo buffer + + // if editing tile find the animation strand (if any) tile belongs to + TEanimstrand=0; // Does not belong to an animation strand + if (TEtype==TETILE) + { + i=100; + do + { + i--; + if (vspanim[i].delay && TEtile<=vspanim[i].finish && TEtile>=vspanim[i].start) + TEanimstrand=i+1; + } while (i>0); + } + } + +static void DeinitTEImage(void) +// Unallocate allocated image buffers - copy edited buffer into original + { + memcpy(TEsource, TEimage, (TExsize*TEysize)); + TEFree(TEimage); + TEFree(TEmask); + TEFree(TEundo); + TEtype=TEUNKNOWN; // Clear type info for error checking purposes + TExsize=0; + TEysize=0; + } + +static void SetupRegions (void) + { + int temp; + TEREGION *TEr=NULL; + + // Allocate memory + TEregs=(struct TEREGION *) TEAlloc((sizeof (struct TEREGION))*MAX_REGIONS,"tile edit regions"); + + TEr=TEregs+BASEREG; + TEr->infotype=DITREGION; + TEr->x1=16; + TEr->x2=TEr->x1+sx; + TEr->y1=16; + TEr->y2=TEr->y1+sy; + TEr->bitflags=REGACTIVE|REGVISIBLE|REGNOCLICK; + TEr->drawproc=NULL; + TEr->caption=NULL; + switch (TEtype) + { + case TETILE: + sprintf(TEtempstr, "MapEd %s Tile Editor - Tile: %d", ME2_VERSION, TEtile); + if (TEanimstrand) + sprintf(TEtempstr, "MapEd %s Tile Editor - Tile: %d (anim strand: %d, frame: %d/%d)", + ME2_VERSION, + TEtile, TEanimstrand-1, TEtile-vspanim[TEanimstrand-1].start+1, + vspanim[TEanimstrand-1].finish-vspanim[TEanimstrand-1].start+1); + SetCaption(TEr, TEtempstr); + break; + } + TEr->data=(struct DATABASEREGION *) TEAlloc(sizeof (struct DATABASEREGION), "base region data"); + ((struct DATABASEREGION *)(TEr->data))->infotype=DITBASEREGION; + ((struct DATABASEREGION *)(TEr->data))->numofregs=MAX_REGIONS; + ((struct DATABASEREGION *)(TEr->data))->windowtype=DBRSTDWINDOW; + + TEr=TEregs+HELPBAR; + TEr->infotype=DITREGION; + TEr->x1=3; + TEr->x2=TEregs->x2-TEregs->x1-3; + TEr->y1=TEregs->y2-TEregs->y1-13; + TEr->y2=TEregs->y2-TEregs->y1-3; + TEr->bitflags=REGACTIVE|REGVISIBLE|REGNOCLICK; + TEr->drawproc=&DrawHelpBar; + TEr->caption=NULL; + TEr->data=NULL; + + temp=(((TEregs->x2-TEregs->x1-8)>>6)<<5)+2; + TEr=TEregs+PALETTE; + TEr->infotype=DITREGION; + TEr->x1=((TEregs->x2-TEregs->x1)>>1)-temp; + TEr->x2=((TEregs->x2-TEregs->x1)>>1)+temp; + TEr->y1=TEregs->y2-TEregs->y1-36; + TEr->y2=TEregs->y2-TEregs->y1-16; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawPalette; + TEr->caption=NULL; + TEr->data=NULL; + + TEr=TEregs+EDITREG; + TEr->infotype=DITREGION; + TEr->x1=3; + TEr->x2=3+128+4; + TEr->y1=10; + TEr->y2=10+128+4; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawEditReg; + TEr->caption=NULL; + TEr->data=(struct DATAEDITREG *) TEAlloc(sizeof (struct DATAEDITREG), "edit region data"); + ((struct DATAEDITREG *)(TEr->data))->infotype=DITEDITREG; + + TEr=TEregs+PREVIEW; + TEr->infotype=DITREGION; + TEr->x1=TEregs->x2-TEregs->x1-23; + TEr->x2=TEregs->x2-TEregs->x1-3; + TEr->y1=10; + TEr->y2=10+20; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawPreview; + TEr->caption=NULL; + TEr->data=NULL; + + TEr=TEregs+SCOLBOX; + TEr->infotype=DITREGION; + TEr->x1=TEregs[EDITREG].x1; + TEr->x2=TEr->x1+20; + TEr->y1=TEregs[EDITREG].y2+2; + TEr->y2=TEr->y1+16; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawSColBox; + TEr->caption=NULL; + TEr->data=NULL; + + TEr=TEregs+SCTXTBX; + TEr->infotype=DITREGION; + TEr->x1=TEregs[SCOLBOX].x2+2; + TEr->x2=TEregs[EDITREG].x2; + TEr->y1=TEregs[SCOLBOX].y1; + TEr->y2=TEregs[SCOLBOX].y2; + TEr->bitflags=REGACTIVE|REGVISIBLE|REGNOCLICK; + TEr->drawproc=&DrawSCTxtBx; + TEr->caption=NULL; + TEr->data=NULL; + + TEr=TEregs+QUITBUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs->x2-TEregs->x1-9; + TEr->x2=TEregs->x2-TEregs->x1-3; + TEr->y1=3; + TEr->y2=6; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "quit button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Exit", "quit button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbitflags; + ((struct DATABUTTON *)(TEr->data))->bitvalue=TEQUITCUR; + + TEr=TEregs+EDMDFRM; + TEr->infotype=DITREGION; + TEr->x1=TEregs[EDITREG].x2+3; + TEr->x2=TEr->x1+34; + TEr->y1=TEregs[EDITREG].y1; + TEr->y2=TEr->y1+11*5+3; // 10*number of buttons + TEr->bitflags=REGACTIVE|REGVISIBLE|REGNOCLICK; + TEr->drawproc=&DrawSunkRegion; + TEr->caption=NULL; + TEr->data=NULL; + + TEr=TEregs+DRAWBUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs[EDMDFRM].x1+2; + TEr->x2=TEregs[EDMDFRM].x2-2; + TEr->y1=TEregs[EDMDFRM].y1+2; + TEr->y2=TEr->y1+10; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr,"Draw"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "draw button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Draw mode", "draw button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=RADIOBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEeditmode; + ((struct DATABUTTON *)(TEr->data))->bitvalue=EDDRAW; + + TEr=TEregs+FILLBUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs[EDMDFRM].x1+2; + TEr->x2=TEregs[EDMDFRM].x2-2; + TEr->y1=TEregs[EDMDFRM].y1+2+11; + TEr->y2=TEr->y1+10; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr,"Fill"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "fill button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Fill mode", "fill button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=RADIOBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEeditmode; + ((struct DATABUTTON *)(TEr->data))->bitvalue=EDFILL; + + TEr=TEregs+PICKBUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs[EDMDFRM].x1+2; + TEr->x2=TEregs[EDMDFRM].x2-2; + TEr->y1=TEregs[EDMDFRM].y1+2+22; + TEr->y2=TEr->y1+10; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr,"Pick"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "pick button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Pick color mode", "pick button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=RADIOBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEeditmode; + ((struct DATABUTTON *)(TEr->data))->bitvalue=EDPICK; + + TEr=TEregs+MASKBUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs[EDMDFRM].x1+2; + TEr->x2=TEregs[EDMDFRM].x2-2; + TEr->y1=TEregs[EDMDFRM].y1+2+33; + TEr->y2=TEr->y1+10; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr,"Select"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "select button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Select mode", "select button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=RADIOBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEeditmode; + ((struct DATABUTTON *)(TEr->data))->bitvalue=EDMASK; + + TEr=TEregs+PSTEBUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs[EDMDFRM].x1+2; + TEr->x2=TEregs[EDMDFRM].x2-2; + TEr->y1=TEregs[EDMDFRM].y1+2+44; + TEr->y2=TEr->y1+10; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr,"Paste"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "paste button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Paste mode", "paste button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=RADIOBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEeditmode; + ((struct DATABUTTON *)(TEr->data))->bitvalue=EDPASTE; + + TEr=TEregs+IND_FRM; + TEr->infotype=DITREGION; + TEr->x1=TEregs[SCTXTBX].x2+2; + TEr->x2=TEr->x1+12*4-1; // 10*number of buttons + TEr->y1=TEregs[SCTXTBX].y1; + TEr->y2=TEr->y1+13; + TEr->bitflags=REGACTIVE|REGVISIBLE|REGNOCLICK; + TEr->drawproc=&DrawSunkRegion; + TEr->caption=NULL; + TEr->data=NULL; + + TEr=TEregs+MASKIND; + TEr->infotype=DITREGION; + TEr->x1=TEregs[IND_FRM].x1+2; + TEr->x2=TEr->x1+10; + TEr->y1=TEregs[IND_FRM].y1+2; + TEr->y2=TEregs[IND_FRM].y2-2; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr,"m"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "mask indicator data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("mask", "mask indicator text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=PUSHBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbitflags; + ((struct DATABUTTON *)(TEr->data))->bitvalue=TESHOWMSK; + + TEr=TEregs+GRIDIND; + TEr->infotype=DITREGION; + TEr->x1=TEregs[MASKIND].x2+1; + TEr->x2=TEr->x1+10; + TEr->y1=TEregs[IND_FRM].y1+2; + TEr->y2=TEregs[IND_FRM].y2-2; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr,"g"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "grid button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("grid", "grid indicator text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=PUSHBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbitflags; + ((struct DATABUTTON *)(TEr->data))->bitvalue=TEGRID; + + TEr=TEregs+ANIMIND; + TEr->infotype=DITREGION; + TEr->x1=TEregs[GRIDIND].x2+1; + TEr->x2=TEr->x1+10; + TEr->y1=TEregs[IND_FRM].y1+2; + TEr->y2=TEregs[IND_FRM].y2-2; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr,"a"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "animation button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("animation", "animation indicator text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=PUSHBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbitflags; + ((struct DATABUTTON *)(TEr->data))->bitvalue=TEANIMATE; + + TEr=TEregs+PXHLIND; + TEr->infotype=DITREGION; + TEr->x1=TEregs[ANIMIND].x2+1; + TEr->x2=TEr->x1+10; + TEr->y1=TEregs[IND_FRM].y1+2; + TEr->y2=TEregs[IND_FRM].y2-2; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr,"h"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "highlight button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("pixel highlight", "highlight indicator text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=PUSHBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbitflags; + ((struct DATABUTTON *)(TEr->data))->bitvalue=TEHILIGHT; + + TEr=TEregs+BUT_FRM; + TEr->infotype=DITREGION; + TEr->x1=TEregs[EDMDFRM].x1; + TEr->x2=TEregs[EDMDFRM].x2; + TEr->y1=TEregs[EDMDFRM].y2+2; + TEr->y2=TEr->y1+11*4+3; // 10*number of buttons + TEr->bitflags=REGACTIVE|REGVISIBLE|REGNOCLICK; + TEr->drawproc=&DrawSunkRegion; + TEr->caption=NULL; + TEr->data=NULL; + + TEr=TEregs+UNDOBUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs[BUT_FRM].x1+2; + TEr->x2=TEregs[BUT_FRM].x2-2; + TEr->y1=TEregs[BUT_FRM].y1+2; + TEr->y2=TEr->y1+10; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr, "Undo"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "undo button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Undo last action", "undo button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbfa; + ((struct DATABUTTON *)(TEr->data))->bitvalue=BFAUNDO; + + TEr=TEregs+COPYBUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs[BUT_FRM].x1+2; + TEr->x2=TEregs[BUT_FRM].x2-2; + TEr->y1=TEregs[BUT_FRM].y1+2+11; + TEr->y2=TEr->y1+10; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr, "Copy"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "copy button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Copy selected area", "copy button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbfa; + ((struct DATABUTTON *)(TEr->data))->bitvalue=BFACOPY; + + TEr=TEregs+CUT_BUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs[BUT_FRM].x1+2; + TEr->x2=TEregs[BUT_FRM].x2-2; + TEr->y1=TEregs[BUT_FRM].y1+2+22; + TEr->y2=TEr->y1+10; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr, "Cut"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "cut button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Cut selected area", "cut button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbfa; + ((struct DATABUTTON *)(TEr->data))->bitvalue=BFACUT; + + TEr=TEregs+CLR_BUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs[BUT_FRM].x1+2; + TEr->x2=TEregs[BUT_FRM].x2-2; + TEr->y1=TEregs[BUT_FRM].y1+2+33; + TEr->y2=TEr->y1+10; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr, "Clear"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "clear button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Clear selected area", "clear button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbfa; + ((struct DATABUTTON *)(TEr->data))->bitvalue=BFACLEAR; + + TEr=TEregs+TOOLFRM; + TEr->infotype=DITREGION; + TEr->x1=TEregs[BUT_FRM].x2+2; + TEr->x2=TEr->x1+34; + TEr->y1=TEregs[BUT_FRM].y1; + TEr->y2=TEr->y1+11*4+3; // 10*number of buttons + TEr->bitflags=REGACTIVE|REGVISIBLE|REGNOCLICK; + TEr->drawproc=&DrawSunkRegion; + TEr->caption=NULL; + TEr->data=NULL; + + TEr=TEregs+RIACBUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs[TOOLFRM].x1+2; + TEr->x2=TEregs[TOOLFRM].x2-2; + TEr->y1=TEregs[TOOLFRM].y1+2; + TEr->y2=TEr->y1+10; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr, "Turn L"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "rotate button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Rotate anticlockwise", "rotate button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbfa; + ((struct DATABUTTON *)(TEr->data))->bitvalue=BFARIAC; + + TEr=TEregs+RIC_BUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs[TOOLFRM].x1+2; + TEr->x2=TEregs[TOOLFRM].x2-2; + TEr->y1=TEregs[TOOLFRM].y1+2+11; + TEr->y2=TEr->y1+10; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr, "Turn R"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "rotate button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Rotate clockwise", "rotate button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbfa; + ((struct DATABUTTON *)(TEr->data))->bitvalue=BFARIC; + + TEr=TEregs+FLIPBUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs[TOOLFRM].x1+2; + TEr->x2=TEregs[TOOLFRM].x2-2; + TEr->y1=TEregs[TOOLFRM].y1+2+22; + TEr->y2=TEr->y1+10; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr, "Flip"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "flip button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Flip", "flip button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbfa; + ((struct DATABUTTON *)(TEr->data))->bitvalue=BFAFLIP; + + TEr=TEregs+MIRRBUT; + TEr->infotype=DITREGION; + TEr->x1=TEregs[TOOLFRM].x1+2; + TEr->x2=TEregs[TOOLFRM].x2-2; + TEr->y1=TEregs[TOOLFRM].y1+2+33; + TEr->y2=TEr->y1+10; + TEr->bitflags=REGACTIVE|REGVISIBLE; + TEr->drawproc=&DrawButton; + TEr->caption=NULL; + SetCaption(TEr, "Mirror"); + TEr->data=(struct DATABUTTON *) TEAlloc(sizeof (struct DATABUTTON), "mirror button data"); + ((struct DATABUTTON *)(TEr->data))->infotype=DITBUTTON; + ((struct DATABUTTON *)(TEr->data))->text=TENewText("Mirror", "mirror button text"); + ((struct DATABUTTON *)(TEr->data))->buttontype=CLICKBUTTON; + ((struct DATABUTTON *)(TEr->data))->bitflag=&TEbfa; + ((struct DATABUTTON *)(TEr->data))->bitvalue=BFAMIRROR; + + } + +static void DestroyRegions (TEREGION **TEBaseReg) + { + TEREGION *TEr=NULL; + int i; + if (!(*TEBaseReg)->data) err("No region data defined."); + if (((struct DATABASEREGION *)(*TEBaseReg)->data)->infotype!=DITBASEREGION) + err("DestroyRegions called with invalid base region."); + + i=((struct DATABASEREGION *)(*TEBaseReg)->data)->numofregs; + do + { + i--; + TEr=(*TEBaseReg)+i; + TEFree(TEr->caption); + if (TEr->data) + { + switch (((struct DATABASEREGION *)(TEr->data))->infotype) + { + case DITBASEREGION: + break; + case DITBUTTON: + TEFree(((struct DATABUTTON *)TEr->data)->text); + break; + } + } + TEFree(TEr->data); + } while (i>0); + TEFree(*TEBaseReg); +// if (*TEBaseReg) err("Not freed"); + } + +static void RenderTileEdit (TEREGION *TEBaseReg) +// -- ric: 20/Jul/98 - updatedt to be a little more generic ;) + { + int i; + TExoffs=TEBaseReg->x1; + TEyoffs=TEBaseReg->y1; + if (!TEBaseReg->data) err("No region data defined."); + if (((struct DATABASEREGION *)TEBaseReg->data)->infotype!=DITBASEREGION) + err("RenderTileEdit called with invalid base region."); + switch (((struct DATABASEREGION *)TEBaseReg->data)->windowtype) + { + case DBRSTDWINDOW: + Window(TExoffs,TEyoffs,TEBaseReg->x2,TEBaseReg->y2, ((TEBaseReg->caption) ? TEBaseReg->caption : "")); + break; + case DBRPANEL: + stdwindow(TExoffs,TEyoffs,TEBaseReg->x2,TEBaseReg->y2); + break; + } + + i=((struct DATABASEREGION *)TEBaseReg->data)->numofregs; + do + { + i--; + if ((TEBaseReg+i)->bitflags®VISIBLE) (TEBaseReg+i)->drawproc(TEBaseReg+i); + } while (i>1); + } + +void TileEdit (void) + { + int i,j; + int TEoldeditmode=EDDRAW; + if (TEbitflags&TEQUITCUR) TEbitflags^=TEQUITCUR; + + InitTEImage(); + SetupRegions(); + TEeditmode=EDDRAW; // Default to drawing mode + if (TEbitflags&TESHOWMSK) TEbitflags^=TESHOWMSK; + + while (!(TEbitflags&TEQUITCUR)) + { + // Mouse button click handler routines + MBClickHandler(TEregs); + + TEbfa=BFANONE; // Reset button action flag + if (TEeditmode==EDMASK && TEoldeditmode!=EDMASK) TEbitflags|=TESHOWMSK; + if (TEeditmode==EDMASK && TEoldeditmode==EDMASK && !(TEbitflags&TESHOWMSK)) + TEeditmode=EDDRAW; + TEoldeditmode=TEeditmode; + + // Draw loop + RenderTileEdit(TEregs); + DrawMouse(); + ShowPage(); + + if (key[SCAN_ESC]) + { + key[SCAN_ESC]=0; + TEbitflags|=TEQUITCUR; + } + if ((key[SCAN_CTRL] && key[SCAN_Z]) || (TEbfa&BFAUNDO) || (key[SCAN_U] && !(key[SCAN_CTRL])) && ((MBStatus[0]|MBStatus[1])==MOUSENONE)) + { + key[SCAN_U]=0; + key[SCAN_Z]=0; + TEUndo(); + } + if (key[SCAN_CTRL] && key[SCAN_R]) + { + key[SCAN_R]=0; + memcpy(TEundo, TEimage, TExsize*TEysize); // copy image into undo buffer + memcpy(TEimage, TEsource, TExsize*TEysize); // copy original image into edit buffer + } + if (key[SCAN_CTRL] && key[SCAN_A]) + { + key[SCAN_A]=0; + j=TEysize*TExsize; + memset(TEmask, 0xf, j); + } + if (key[SCAN_CTRL] && key[SCAN_U]) + { + key[SCAN_U]=0; + j=TEysize*TExsize; + memset(TEmask, 0x0, j); + } + if ((TEbfa&BFACOPY) || (key[SCAN_CTRL] && key[SCAN_C]) && ((MBStatus[0]|MBStatus[1])==MOUSENONE)) + { + key[SCAN_C]=0; + TECopyImage(); + } + if ((TEbfa&BFACUT) || (key[SCAN_CTRL] && key[SCAN_X]) && ((MBStatus[0]|MBStatus[1])==MOUSENONE)) + { + key[SCAN_X]=0; + TECopyImage(); + TEClearImage(); + } + if (key[SCAN_CTRL] && key[SCAN_V] && ((MBStatus[0]|MBStatus[1])==MOUSENONE)) + { + key[SCAN_V]=0; + TEeditmode=EDPASTE; + } + if ((TEbfa&BFACLEAR) || key[SCAN_DEL] && ((MBStatus[0]|MBStatus[1])==MOUSENONE)) + { + key[SCAN_DEL]=0; + TEClearImage(); + } + if (key[SCAN_Q] && ((MBStatus[0]|MBStatus[1])==MOUSENONE)) + { + key[SCAN_Q]=0; + if (TEtype==TETILE && TEanimstrand) + { + if (TEtile>vspanim[TEanimstrand-1].start) + { + // Change tile index + TEtile-=1; + i=TExsize; + j=TEysize; + + // Restart editor + RestartTileEditor(); + } + } + } + if (key[SCAN_W] && ((MBStatus[0]|MBStatus[1])==MOUSENONE)) + { + key[SCAN_W]=0; + if (TEtype==TETILE && TEanimstrand) + { + if (TEtile0); + } + if (key[SCAN_M]) + { + key[SCAN_M]=0; + if (TEeditmode==EDMASK) + TEeditmode=EDDRAW; + TEbitflags^=TESHOWMSK; + } + if (key[SCAN_SPACE]) + { + key[SCAN_SPACE]=0; + if (TEeditmode==EDDRAW) + { + TEeditmode=EDMASK; + TEbitflags|=TESHOWMSK; + } + else + TEeditmode=EDDRAW; + } + if (key[SCAN_PGUP]) + { + key[SCAN_PGUP]=0; + switch (TEeditmode) + { + case EDDRAW: + case EDMASK: + memcpy(TEundo, TEimage, TExsize*TEysize); + if (TEbitflags&TESHOWMSK) + TEShiftColours(TEimage, TEmask, TExsize, TEysize, 1); + else + TEShiftColours(TEimage, NULL, TExsize, TEysize, 1); + break; + case EDPASTE: + if (TEcopy) + TEShiftColours(TEcopy, TEcmsk, TEcopyxsize, TEcopyysize, 1); + break; + } + } + if (key[SCAN_PGDN]) + { + key[SCAN_PGDN]=0; + switch (TEeditmode) + { + case EDDRAW: + case EDMASK: + memcpy(TEundo, TEimage, TExsize*TEysize); + if (TEbitflags&TESHOWMSK) + TEShiftColours(TEimage, TEmask, TExsize, TEysize, -1); + else + TEShiftColours(TEimage, NULL, TExsize, TEysize, -1); + break; + case EDPASTE: + if (TEcopy) + TEShiftColours(TEcopy, TEcmsk, TEcopyxsize, TEcopyysize, -1); + break; + } + } + + if (key[SCAN_LANGLE]) + { + key[SCAN_LANGLE]=0; + ShutdownVideo(); + TEFreeReg(TEregs); + vm=0; + InitVideo(0); + SetupRegions(); + set_intensity(63); + InitMouse(); + } + if (key[SCAN_RANGLE]) + { + key[SCAN_RANGLE]=0; + ShutdownVideo(); + TEFreeReg(TEregs); + vm=1; + InitVideo(1); + SetupRegions(); + set_intensity(63); + InitMouse(); + } + } + DeinitTEImage(); + TEFreeReg(TEregs); + } diff --git a/16/v2/source/verge/MAPED/TILEED.H b/16/v2/source/verge/MAPED/TILEED.H new file mode 100644 index 00000000..11419f6a --- /dev/null +++ b/16/v2/source/verge/MAPED/TILEED.H @@ -0,0 +1,34 @@ +/* +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. +*/ + +#ifndef TILEED_INC +#define TILEED_INC + +// TEtype defs +#define TEUNKNOWN 0 +#define TETILE 1 + +// external functions +extern void TileEdit(void); + +// external variables +extern unsigned int TEtype; // type of graphic being edited +extern unsigned int TEtile; // tile to edit - may possibly expand this to an array for simultaneous editing +extern unsigned int TExsize; // width of graphic being edited +extern unsigned int TEysize; // height of graphic being edited +extern unsigned char *TEsource; // pointer to original image being edited + +#endif diff --git a/16/v2/source/verge/MAPED/TILESEL.C b/16/v2/source/verge/MAPED/TILESEL.C new file mode 100644 index 00000000..834ad9d7 --- /dev/null +++ b/16/v2/source/verge/MAPED/TILESEL.C @@ -0,0 +1,1448 @@ +/* +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. +*/ + +#include +#include +#include +#include + +#include "config.h" +#include "keyboard.h" +#include "maped.h" +#include "mouse.h" +#include "render.h" +#include "tileed.h" +#include "timer.h" +#include "vdriver.h" + +#include "smalfont.h" +#include "guicomp.h" +#include "gui.h" + +extern byte TileCmp(byte *one, byte *two); //zero + +// ================================= Data ==================================== + +int selofs=0; +char ttile[256], ttile2[256]; +char curastd=0; +char curmode=0; + +// ================================= Code ==================================== + +int curtileptr(int row) +{ + int jumper,wide; + int x,y; + + jumper=16+pad; + wide=320/jumper; + + x=(mx-16)/jumper; + y=((my-16)/jumper)*wide; + + return x+y+row; +} + +void NormalButton(int x1, int y1, int x2, int y2, char *str) +{ + FilledBox(x1, y1, x2, y2, winbg); + HLine(x1, y1, x2, black); + VLine(x1, y1, y2, black); + HLine(x1+1, y1+y2-1, x2-1, black); + VLine(x1+x2-1, y1+1, y2-1, black); + + HLine(x1+1, y1+1, x2-2, brightw); + VLine(x1+1, y1+1, y2-2, brightw); + HLine(x1+2, y1+y2-2, x2-3, darkw); + VLine(x1+x2-2, y1+2, y2-3, darkw); + GotoXY(x1+((x2-pixels(str))/2), y1+3); + printstring(str); +} + +void PressdButton(int x1, int y1, int x2, int y2, char *str) +{ + FilledBox(x1, y1, x2, y2, winbg); + HLine(x1, y1, x2, black); + VLine(x1, y1, y2, black); + HLine(x1+1, y1+y2-1, x2-1, black); + VLine(x1+x2-1, y1+1, y2-1, black); + + HLine(x1+1, y1+1, x2-2, darkw); + VLine(x1+1, y1+1, y2-2, darkw); + GotoXY(x1+((x2-pixels(str))/2)+1, y1+4); + printstring(str); +} + +void RenderSelector() +{ unsigned char *img,i,j; + int z; + int tskip=16+pad; + int twide=320/tskip; + int tdeep=((200+15)&~15)/tskip; + + ClearScreen(); + + for (i=0; i=numtiles) img=vsp; + CopyTile((j*tskip)+16,(i*tskip)+16,img); + } + if (th) + { + if (my<(tsy-40)) + DrawHighlight( ((mx/tskip)*tskip)-(1+pad), + ((my/tskip)*tskip)-(1+pad)); + } + z=tsy-40; + sprintf(strbuf,"MapEd %s Tile Selector - Tile %d/%d",ME2_VERSION,curtileptr(selofs),numtiles); + Window(16,z,336,z+40,strbuf); + HLine(278, z+11, 53, darkw); + VLine(278, z+11, 25, darkw); + VLine(330, z+12, 24, brightw); + HLine(279, z+35, 51, brightw); + if (curmode==0) PressdButton(290, z+12, 40, 12, "Select"); + else NormalButton(290, z+12, 40, 12, "Select"); + if (curmode==1) PressdButton(290, z+23, 40, 12, "Edit"); + else NormalButton(290, z+23, 40, 12, "Edit"); + if (th) PressdButton(279, z+12, 12, 12, "H"); + else NormalButton(279, z+12, 12, 12, "H"); + if (pad) PressdButton(279, z+23, 12, 12, "P"); + else NormalButton(279, z+23, 12, 12, "P"); + + HLine(219, z+11, 52, darkw); + VLine(219, z+11, 25, darkw); + VLine(270, z+12, 24, brightw); + HLine(220, z+35, 50, brightw); + NormalButton(220, z+12, 50, 12, "Import VSP"); + NormalButton(220, z+23, 50, 12, "Import PCX"); + + HLine(160, z+11, 52, darkw); + VLine(160, z+11, 25, darkw); + VLine(211, z+12, 24, brightw); + HLine(161, z+35, 50, brightw); + NormalButton(161, z+12, 50, 12, "Add Tiles"); + NormalButton(161, z+23, 50, 12, "Animation"); + + HLine(26, z+10, 20, darkw); + VLine(26, z+10, 20, darkw); + HLine(27, z+29, 19, brightw); + VLine(45, z+11, 19, brightw); + FilledBox(27, z+11, 18, 18, black); + CopyTile(28, z+12, ttile2); + GotoXY(20, z+32); printstring("Clipboard"); +} + +void FlipX(unsigned short edtile) +{ int i,j; + + key[SCAN_X]=0; + if (edtile>=numtiles) return; + memcpy(ttile,&vsp[edtile*256],256); + modified=1; + + for (i=0;i<16;i++) + for (j=0;j<16;j++) + vsp[((edtile)*256)+(j*16)+i]=ttile[(j*16)+(15-i)]; +} + +void FlipY(unsigned short edtile) +{ int i,j; + + key[SCAN_Y]=0; + if (edtile>=numtiles) return; + memcpy(ttile,&vsp[edtile*256],256); + modified=1; + + for (i=0;i<16;i++) + for (j=0;j<16;j++) + vsp[((edtile)*256)+(j*16)+i]=ttile[((15-j)*16)+i]; +} + +void FlipZ(unsigned short edtile) +{ int i,j; + + key[SCAN_Z]=0; + if (edtile>=numtiles) return; + memcpy(ttile,&vsp[edtile*256],256); + modified=1; + + for (i=0;i<16;i++) + for (j=0;j<16;j++) + vsp[((edtile)*256)+(j*16)+i]=ttile[(i*16)+j]; +} + +void DrawHighlight(int x, int y) +{ + if (x<10 || y<10 || x>330 || y>sy+10) return; + HLine(x, y, 18, white); + HLine(x, y+17, 18, white); + VLine(x, y, 18, white); + VLine(x+17, y, 18, white); +} + +void TileSelector() +{ int z, ct, k,j,m; + char *s, *d; + + int ms_down=0; // aen + int ms_up=0; + + while (!key[SCAN_ESC]) + { + RenderSelector(); + RenderMessages(); + DrawMouse(); + ShowPage(); + + ms_down=0; + ms_up=0; + if (mouse_scroll) + { + if (my>tsy-2) ms_down=1; + if (my<18) ms_up=1; + } + + if ((key[SCAN_DOWN] || (ms_down && (!(systemtime%10)))) && selofs<65319) + { + if (!pad) selofs=selofs+20; + else selofs+=18; + key[SCAN_DOWN]=0; + systemtime++; + } + if ((key[SCAN_UP] || (ms_up && (!(systemtime%10)))) && selofs>17) + { + if (!pad) selofs-=20; + else selofs-=18; + key[SCAN_UP]=0; + systemtime++; + } + if (key[SCAN_P]) + { + key[SCAN_P]=0; + pad=pad ^ 1; + selofs=0; + if (pad) Message("Tile padding enabled.",100); + else Message("Tile padding disabled.",100); + } + if (key[SCAN_H]) + { + key[SCAN_H]=0; + th=th ^ 1; + if (th) Message("Tile Highlight enabled.",100); + else Message("Tile Highlight disabled.",100); + } + + if (key[SCAN_X]) FlipX(curtileptr(selofs)); + if (key[SCAN_Y]) FlipY(curtileptr(selofs)); + if (key[SCAN_Z]) FlipZ(curtileptr(selofs)); + if (key[SCAN_V]) VSPAnimDialog(); + if (key[SCAN_CTRL] && key[SCAN_C]) + { + memcpy(ttile2, (char *) (vsp+(256*curtileptr(selofs))), 256); + key[SCAN_C]=0; + } + if (key[SCAN_CTRL] && key[SCAN_S]) + { + if (curtileptr(selofs) >= numtiles) return; + memcpy((char *) (vsp+(256*curtileptr(selofs))), ttile2, 256); + modified=1; + key[SCAN_S]=0; + } + if (key[SCAN_CTRL] && key[SCAN_T]) + { + if (curtileptr(selofs) >= numtiles) return; + modified=1; + s=ttile2; + d=(char *) (vsp+(256*curtileptr(selofs))); + for (z=0; z<256; z++) + { + if (*s) *d=*s; + d++; + s++; + } + key[SCAN_T]=0; + } + if (key[SCAN_CTRL] && key[SCAN_D] && !key[SCAN_ALT]) + { + key[SCAN_D]=0; + modified=1; + z=curtileptr(selofs); + if (zz) layers[k][j*layer[k].sizex+m]--; + } + } + } + } + } + } +// zero: Super Insert Mode! +// wimpy insert irks me. + if (key[SCAN_CTRL] && key[SCAN_I] && key[SCAN_ALT]) + { + key[SCAN_I]=0; + ct=curtileptr(selofs); + if (ct <= numtiles) + { + modified=1; + s=(char *) valloc((numtiles+1)*256, "s_ins",0); + memcpy(s, vsp, (numtiles*256)); + vfree(vsp); vsp=s; s=0; + for (z=numtiles-1; z>=ct; z--) + memcpy(vsp+((z+1)*256),vsp+(z*256),256); + memset(vsp+(ct*256), 0, 256); + numtiles++; + } + for(k=0;k=ct) layers[k][j*layer[k].sizex+m]++; + } + } + } + } + + if (key[SCAN_CTRL] && key[SCAN_I] && !key[SCAN_ALT]) + { + key[SCAN_I]=0; + ct=curtileptr(selofs); + if (ct <= numtiles) + { + modified=1; + s=(char *)valloc((numtiles+1)*256,"s_ins",0); + memcpy(s, vsp, (numtiles*256)); + vfree(vsp); vsp=s; s=0; + for (z=numtiles-1; z>=ct; z--) + memcpy(vsp+((z+1)*256),vsp+(z*256),256); + memset(vsp+(ct*256), 0, 256); + numtiles++; + } + } + if (key[SCAN_E]) + { + modified=1; + TEtile=curtileptr(selofs); // middle tile initially + if (TEtile290 && mx<330 && my>z+12 && my290 && mx<330 && my>z+23 && my278 && mx<289 && my>z+12 && my278 && mx<289 && my>z+23 && my161 && mx<210 && my>z+12 && my161 && mx<210 && my>z+23 && my220 && mx<270 && my>z+12 && my220 && mx<270 && my>z+23 && my= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + vaxofs = (mx-mxo); + vayofs = (my-myo); + if (!mb) moving=0; + if (vaxofs<16) vaxofs = 16; + if (vayofs<16) vayofs = 16; + if (vaxofs+vaxsize>335) vaxofs = 336-vaxsize; + if (vayofs+vaysize>sy+16) vayofs = (sy+16)-vaysize; + } + + Window(vaxofs, vayofs, vaxofs+vaxsize, vayofs+vaysize, "VSP Animation Editor"); + CopyTile(vaxofs+110, vayofs+16, (char *) (vsp+(256*tileidx[vspanim[i].start]))); + GotoXY(vaxofs+4, vayofs+12); printstring("Start"); + TextField(vaxofs+25, vayofs+11, 60, nstr1, ctf == 1 ? cb : 0); + GotoXY(vaxofs+11, vayofs+22); printstring("End"); + TextField(vaxofs+25, vayofs+21, 60, nstr2, ctf == 2 ? cb : 0); + GotoXY(vaxofs+4, vayofs+32); printstring("Delay"); + TextField(vaxofs+25, vayofs+31, 60, nstr3, ctf == 3 ? cb : 0); + GotoXY(vaxofs+6, vayofs+42); printstring("Mode"); + TextField(vaxofs+25, vayofs+41, 60, nstr4, ctf == 4 ? cb : 0); + GotoXY(vaxofs+2, vayofs+56); printstring("Strand"); + GotoXY(vaxofs+104, vayofs+33); printstring("Preview"); + HLine(vaxofs+1, vayofs+51, 148, white); + Button(vaxofs+85, vayofs+54, "OK"); + Button(vaxofs+117, vayofs+54, "Update"); + GotoXY(vaxofs+30, vayofs+56); + sprintf(strbuf, "%d", i); printstring(strbuf); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>vaxofs+25 && mxvayofs+11 && myvaxofs+25 && mxvayofs+21 && myvaxofs+25 && mxvayofs+31 && myvaxofs+25 && mxvayofs+41 && myvaxofs+85 && mxvayofs+54 && myvaxofs+117 && mxvayofs+54 && my(vaxofs+vaxsize-9) && (mx(vayofs+1) && (myvaxofs && mxvayofs && my<(vayofs+9) && !moving) + { + moving=1; + mxo=mx-vaxofs; + myo=my-vayofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_UP) + { + vspanim[i].start=atoi(nstr1); + vspanim[i].finish=atoi(nstr2); + vspanim[i].delay=atoi(nstr3); + vspanim[i].mode=atoi(nstr4); + if (i<99) i++; else i=0; + last_pressed=0; key[SCAN_UP]=0; + sprintf(nstr1, "%d", vspanim[i].start); + sprintf(nstr2, "%d", vspanim[i].finish); + sprintf(nstr3, "%d", vspanim[i].delay); + sprintf(nstr4, "%d", vspanim[i].mode); + continue; + } + if (last_pressed==SCAN_DOWN) + { + vspanim[i].start=atoi(nstr1); + vspanim[i].finish=atoi(nstr2); + vspanim[i].delay=atoi(nstr3); + vspanim[i].mode=atoi(nstr4); + if (i) i--; else i=99; + last_pressed=0; key[SCAN_DOWN]=0; + sprintf(nstr1, "%d", vspanim[i].start); + sprintf(nstr2, "%d", vspanim[i].finish); + sprintf(nstr3, "%d", vspanim[i].delay); + sprintf(nstr4, "%d", vspanim[i].mode); + continue; + } + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=1; str=nstr1; break; + case 1: ctf=2; str=nstr2; break; + case 2: ctf=3; str=nstr3; break; + case 3: ctf=4; str=nstr4; break; + case 4: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=4; str=nstr4; break; + case 1: ctf=0; str=0; break; + case 2: ctf=1; str=nstr1; break; + case 3: ctf=2; str=nstr2; break; + case 4: ctf=3; str=nstr3; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } while (!done); +// memset(&vadelay, 0, 100); +// for (i=0; i= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + atxofs = (mx-mxo); + atyofs = (my-myo); + if (!mb) moving=0; + if (atxofs<16) atxofs = 16; + if (atyofs<16) atyofs = 16; + if (atxofs+atxsize>335) atxofs = 336-atxsize; + if (atyofs+atysize>sy+16) atyofs = (sy+16)-atysize; + } + + Window(atxofs, atyofs, atxofs+atxsize, atyofs+atysize, "Allocate Additional Tiles"); + GotoXY(atxofs+12, atyofs+15); printstring("Alloc Tiles:"); + TextField(atxofs+56, atyofs+13, 80, nstr1, ctf == 1 ? cb : 0); + Button(atxofs+85, atyofs+26, "OK"); + Button(atxofs+117, atyofs+26, "Cancel"); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>atxofs+56 && mxatyofs+13 && myatxofs+85 && mxatyofs+26 && myatxofs+117 && mxatyofs+26 && my(atxofs+atxsize-9) && (mx(atyofs+1) && (myatxofs && mxatyofs && my<(atyofs+9) && !moving) + { + moving=1; + mxo=mx-atxofs; + myo=my-atyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=1; str=nstr1; break; + case 1: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT]) + { + switch (ctf) + { + case 0: ctf=1; str=nstr1; break; + case 1: ctf=0; str=0; break; + } + key[SCAN_TAB]=0; + last_pressed=0; + cb=1; cursorblink=systemtime+40; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } while (!done); + at=atoi(nstr1); + th=bleh; +// memset(&vadelay, 0, 100); +// for (i=0; i=ontiles) img=ovsp; + CopyTile((j*jumper)+16,(i*jumper)+16,img); + if(at17) + { + if (!pad) sofs-=20; + else sofs-=18; + key[SCAN_UP]=0; + } +/*all by zero here in this scan_b thing*/ + if (key[SCAN_B]) + { + key[SCAN_B]=0; + Message("Building duplicate import list",200); + for(bloop1=0; bloop1= cursorblink) + { + cb ^= 1; + cursorblink = systemtime+40; + } + if (moving) + { + OPxofs = (mx-mxo); + OPyofs = (my-myo); + if (!mb) moving=0; + if (OPxofs<16) OPxofs = 16; + if (OPyofs<16) OPyofs = 16; + if (OPxofs+OPxsize>335) OPxofs = 336-OPxsize; + if (OPyofs+OPysize>sy+16) OPyofs = (sy+16)-OPysize; + } + + Window(OPxofs, OPyofs, OPxofs+OPxsize, OPyofs+OPysize, "Open PCX As"); + Button(OPxofs+21, OPyofs+18, "Tileset"); + Button(OPxofs+50, OPyofs+18, "Image"); + + DrawMouse(); + ShowPage(); + CheckTimerStuff(); + + // input phase + if (mb==1 && mx>OPxofs+21 && mxOPyofs+18 && myOPxofs+50 && mxOPyofs+18 && my(OPxofs+OPxsize-9) && (mx(OPyofs+1) && (myOPxofs && mxOPyofs && my<(OPyofs+9) && !moving) + { + moving=1; + mxo=mx-OPxofs; + myo=my-OPyofs; + continue; + } + + if (mb==1 && !moving) + { + ctf=0; + cb=0; + str=0; + WaitRelease(); + } + + if (last_pressed) + { + if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; + else c=key_ascii_tbl[last_pressed]; + + if (last_pressed==SCAN_ESC) + { + key[SCAN_ESC]=0; + done=1; + break; + } + + if (last_pressed==SCAN_ENTER) + { + key[SCAN_ENTER]=0; + ctf=0; + str=0; + last_pressed=0; + continue; + } + + if (!ctf) + continue; + + if (last_pressed==SCAN_BACKSP && strlen(str)) + { + str[strlen(str)-1]=0; + key[SCAN_BACKSP]=0; + last_pressed=0; + continue; + } + else if (last_pressed==SCAN_BACKSP) + { + last_pressed=0; + continue; + } + + t=strlen(str); + str[t]=c; + str[t+1]=0; + last_pressed=0; + } + } while (!done); +} + +char manufacturer; +char version; +char encoding; +char bits_per_pixel; +short xmin,ymin; +short xmax,ymax; +short hres; +short vres; +char palette[48]; +char reserved; +char color_planes; +short bytes_per_line; +short palette_type; +char filler[58]; +char *t; + +int width,depth; +int bytes; +int vidoffset; +FILE *pcxf; + +void ReadPCXLine(unsigned char *dest) +{ int i, n; + char c, run; + + n=0; + do { + c=fgetc(pcxf) & 0xff; + + if ((c & 0xc0)==0xc0) + { run=c & 0x3f; + c=fgetc(pcxf); + for (i=0; i> 2; + set_intensity(63); +} + +void LoadPCXHeaderNP(char *fname) +{ + pcxf=fopen(fname,"rb"); + if (!pcxf) err("Could not open specified PCX file."); + fread(&manufacturer,1,1,pcxf); + fread(&version,1,1,pcxf); + fread(&encoding,1,1,pcxf); + fread(&bits_per_pixel,1,1,pcxf); + fread(&xmin,1,2,pcxf); + fread(&ymin,1,2,pcxf); + fread(&xmax,1,2,pcxf); + fread(&ymax,1,2,pcxf); + fread(&hres,1,2,pcxf); + fread(&vres,1,2,pcxf); + fread(&palette,1,48,pcxf); + fread(&reserved,1,1,pcxf); + fread(&color_planes,1,1,pcxf); + fread(&bytes_per_line,1,2,pcxf); + fread(&palette_type,1,2,pcxf); + fread(&filler,1,58,pcxf); + width=xmax-xmin+1; + depth=ymax-ymin+1; + bytes=bytes_per_line; +} + +// grabs a tile from the ovsp buffer (transit tile bay) +int GrabTileAt(int x, int y, int z, int check_dup) +{ int a; + char tvsp[256]; + char *s; + + s=t+(y*width)+x; + + for (a=0; a<16; a++) + { + memcpy(tvsp+(a*16), s, 16); + s+=width; + } + + if (check_dup) + { + for (a=0; a +#include +#include + +#include "mikmod.h" + +#include "render.h" + +#define PIT0 0x40 +#define PIT1 0x41 +#define PIT2 0x42 +#define PITMODE 0x43 +#define PITCONST 1193180L + +#define OCR1 0x20 +#define IMR1 0x21 + +#define OCR2 0xA0 +#define IMR2 0xA1 + +// ================================= Data ==================================== + +void (__interrupt __far *biosTimerHandler)(); +char timerinstalled=0; +extern char soundokay; + +volatile unsigned int systemtime=0, timer_count=0, tick=0; +volatile int backupct=0, idlect=0; + +// ================================= Code ==================================== + +#pragma aux disable =\ + "cli"; + +#pragma aux enable =\ + "sti"; + +static void SendEOI (unsigned char irqno) +{ + static unsigned char ocr; + static unsigned char eoi; + + ocr=(irqno>7) ? OCR2 : OCR1; + eoi=0x60|(irqno&7); + outp(ocr,eoi); + if (irqno>7) outp(OCR1,0x20); +} + +void __interrupt __far newhandler(void) +{ + systemtime++; + timer_count++; + tick++; + backupct++; + idlect++; + CheckTileAnimation(); + if (soundokay) MD_Update(); + SendEOI(0); +} + +void SetHZ(unsigned int hz) +{ unsigned int pit0_set, pit0_value; + + disable(); + + outp(PITMODE, 0x34); + pit0_value=PITCONST / hz; + pit0_set=(pit0_value & 0x00ff); + outp(PIT0, pit0_set); + pit0_set=(pit0_value >> 8); + outp(PIT0, pit0_set); + + enable(); +} + +void RestoreHZ() +{ + disable(); + outp(PITMODE, 0x34); + outp(PIT0, 0x00); + outp(PIT0, 0x00); + enable(); +} + +void InitTimer() +{ + if (timerinstalled) return; + + biosTimerHandler=_dos_getvect(0x08); + _dos_setvect(0x08, newhandler); + timerinstalled=1; + SetHZ(100); +} + +void ShutdownTimer() +{ + if (!timerinstalled) return; + + _dos_setvect(0x08, biosTimerHandler); + RestoreHZ(); + timerinstalled=0; +} diff --git a/16/v2/source/verge/MAPED/TIMER.H b/16/v2/source/verge/MAPED/TIMER.H new file mode 100644 index 00000000..9a74f633 --- /dev/null +++ b/16/v2/source/verge/MAPED/TIMER.H @@ -0,0 +1,29 @@ +/* +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. +*/ + +#ifndef TIMER_INC +#define TIMER_INC + +extern unsigned int systemtime, timer_count, tick; +extern int backupct, idlect; +//extern int (*callback) (void); // ??? + +extern void SetHZ(unsigned int hz); +extern void RestoreHZ(); +extern void InitTimer(); +extern void ShutdownTimer(); + +#endif // TIMER_INC diff --git a/16/v2/source/verge/MAPED/VDRIVER.C b/16/v2/source/verge/MAPED/VDRIVER.C new file mode 100644 index 00000000..14ca28fe --- /dev/null +++ b/16/v2/source/verge/MAPED/VDRIVER.C @@ -0,0 +1,105 @@ +/* +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. +*/ + +#include + +#include "mode13h.h" +#include "modex.h" + +// ================================= Data ==================================== + +// Driver function-pointers. +int (*ShutdownVideo) (void); +int (*ShowPage) (void); +int (*CopySprite) (int x, int y, int width, int height, char *src); +int (*CCopySprite) (int x, int y, int width, int height, char *src); +int (*TCCopySprite) (int x, int y, int width, int height, char *src); +int (*TCopySprite) (int x, int y, int width, int height, char *src); +int (*CopyTile) (int x, int y, char *src); +int (*FilledBox) (int x, int y, int width, int height, char c); +int (*VLine) (int x, int y, int height, char color); +int (*HLine) (int x, int y, int width, char color); +int (*ColorGrid) (int x, int y, char c); +int (*ClearScreen) (void); +int (*CopySpriteLucentClip) (int x, int y, int width, int height, unsigned char *src); + +unsigned char pal[768], pal2[768]; +unsigned char *screen=0; + +int sx=0, sy=0; +int tx=0, ty=0; +int tsx=0, tsy=0; +int map_scroll_x=1; +int map_scroll_y=1; + +// ================================= Code ==================================== + +void InitVideo(int mode) +{ + switch (mode) + { + case 0: InitMode13h(); break; + case 1: InitModeX(); // 320x240 + break; + } +} + +void SetPalette(unsigned char *pall) +{ unsigned int i; + + outp(0x03c8,0); + for (i=0; i<768; i++) + outp(0x03c9,pall[i]); +} + +void GetPalette(void) +{ unsigned int i; + + outp(0x03c7,0); + for (i=0; i<768; i++) + pal[i]=inp(0x03c9); +} + +void set_intensity(unsigned int n) +{ unsigned int i; + + for (i=0; i<768; i++) + pal2[i]=(pal[i]*n)>>6; + + SetPalette(pal2); +} + +#define byte unsigned char +int cx1=16, cy1=16, cx2=336, cy2=256; + +char stipple[256]={ + 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0, + 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, + 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0, + 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, + 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0, + 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, + 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0, + 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, + 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0, + 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, + 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0, + 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, + 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0, + 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, + 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0, + 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, +}; diff --git a/16/v2/source/verge/MAPED/VDRIVER.H b/16/v2/source/verge/MAPED/VDRIVER.H new file mode 100644 index 00000000..b04b194b --- /dev/null +++ b/16/v2/source/verge/MAPED/VDRIVER.H @@ -0,0 +1,49 @@ +/* +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. +*/ + +#ifndef VDRIVER_INC +#define VDRIVER_INC + +#include "inter.h" + +extern int (*ShutdownVideo) (void); +extern int (*ShowPage) (void); +extern int (*CopySprite) (int x, int y, int width, int height, char *src); +extern int (*CCopySprite) (int x, int y, int width, int height, char *src); +extern int (*TCCopySprite) (int x, int y, int width, int height, char *src); +extern int (*TCopySprite) (int x, int y, int width, int height, char *src); +extern int (*CopySpriteLucentClip) (int x, int y, int width, int height, unsigned char *src); +extern int (*CopyTile) (int x, int y, char *src); +extern int (*FilledBox) (int x, int y, int width, int height, char c); +extern int (*VLine) (int x, int y, int height, char color); +extern int (*HLine) (int x, int y, int width, char color); +extern int (*ColorGrid) (int x, int y, char c); +extern int (*ClearScreen) (void); + +extern unsigned char pal[768], pal2[768]; +extern unsigned char *screen; + +extern int sx, sy, tx, ty, tsx, tsy; +extern int map_scroll_x, map_scroll_y; + +extern void InitVideo(int mode); +extern void SetPalette(unsigned char *pall); +extern void GetPalette(void); +extern void set_intensity(unsigned int n); + +extern int cx1, cy1, cx2, cy2; + +#endif // VDRIVER_INC diff --git a/16/v2/source/verge/MAPED/VERGEPAL.H b/16/v2/source/verge/MAPED/VERGEPAL.H new file mode 100644 index 00000000..75adcd68 --- /dev/null +++ b/16/v2/source/verge/MAPED/VERGEPAL.H @@ -0,0 +1,82 @@ +/* +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 new file mode 100644 index 00000000..84e756b6 --- /dev/null +++ b/16/v2/source/verge/README.TXT @@ -0,0 +1,40 @@ + +VERGE version 2.01a, Copyright (C) 1998 BJ Eirich (aka vecna) +VERGE comes with ABSOLUTELY NO WARRANTY. This is free software, +and you are welcome to redistribute it under certain conditions. +For details refer to GNU.TXT. + +-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + +>Jan 1, 2000< + +Hey Guys, + +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. + +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. + +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). + +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. + +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. :-) + +- aen + +-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + +Pertaining to MikMod: + +Parts of the library (in playercode/mdulaw.c) are derived from the files +libst.h and raw.c from an old version of the sox (SOund eXchange) package +written by Lance Norskog and Jef Poskanzer. The following copyright notice +applies to these parts: + +Copyright (C) 1989 by Jef Poskanzer. +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, provided +that the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. This software is provided "as is" without express or +implied warranty. diff --git a/16/v2/source/verge/UTIL/CHRCONV/CHRCONV.C b/16/v2/source/verge/UTIL/CHRCONV/CHRCONV.C new file mode 100644 index 00000000..91ac6ac1 --- /dev/null +++ b/16/v2/source/verge/UTIL/CHRCONV/CHRCONV.C @@ -0,0 +1,125 @@ +/* +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. +*/ + +#include +#include + +char c[100]; +FILE *f; +char *jalblkasd; +char byte, *t; +short word; +int quad; + +int bufsize=0; +unsigned char *csrc, *cb; + +void EmitC (unsigned char c) +{ + *csrc++=c; + bufsize++; +} + +void Compress(unsigned char *p, int len) +{ + int i; + unsigned char byt,samect; + unsigned char repcode; + + csrc=cb; + i=0; bufsize=0; + do + { byt=p[i++]; + samect=1; + while (samect<254 && i3 || byt == 0xFF) + { + repcode=0xFF; + EmitC(repcode); + repcode=(char) samect; + EmitC(repcode); + } + EmitC(byt); + } while (i v2 chr +--- +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. + +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. + +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. + +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 new file mode 100644 index 0000000000000000000000000000000000000000..15b6debb84b5aa6bee7ba657b029e512b918bf49 GIT binary patch literal 15360 zcmeI3?`~8_62+(A!Z?;dQQm;f3t$^~9=_xy@Gu^aJg*bW3`UU>Su7y&2FQ?IK1O`n z-#OLQx9@nsVYLQUaud&;Q&s)v_Nl7w+jBFSY$%1&iOc@(?*1Ss`}^qcH$k~q?)>9U z697v&?OG`1b~)j%waE9=9#6{Y>FJ=Jlr3s+rJ$6H<6yay9^8TV+yf3R~oAI-%f7bL=rh3|!rSY7W(tm<5{iB zJN|KT|1-X*{ncs~xY;MBJ<75S_+@$7;Zpv|ztZ%R@`8VpifI(o@WLN8cXoo_AP$5145QJn#<| z-R9o`Qp&k1e98fuCfwnh@;wpXTf}<~7QUYp;(ZZx|9my;8s6&yYK+T&Td^@Ae3RK90HIJog$#Bj&A@t`-q@5cBY4wLnl<&}F)T)@A> zSK`SCi*M_bZ%4H3gYO7%hr1)jO`o63fMSOIt)a^~U`@5rABF{?=KmD@&+>namD@RT z{NomJKSvA4|C1+EVU2YZ{{&{l|LH39SL2BPSc4qrUJuqWiKG*dKx)%P81>vdE%Smc6~b3~$7>fwU+;{rL0UpMU%*anq-uJb1AC;6Wla0Pf-1 zes4*--)25+QjV9)IX%vo$Hx+sC3rrY&$<4Wc;WhsR)20xgS9>2%pH6JFRbtD&!!{$ z8F<#U_r;j|?dlhznfTA~5&7QlF+(PUIeEoD@gmISC3-4&J)o(V#>yb*Wmb#P#t#{E zitFV+_j_%4$L4=Z0`O>$A)Z~}ykg)nj8QBoKnOKd1@Pj_@S@qfKUIg#+C1&8VVTdS zgI=|b=L^>tv_B-4`E-uB>K6=L^&4J*B}hGqujm#ME5B0`!)xUK(CeO!EB{zV{+BNV z*%|&CU!%X{*Rl>@FW>ommo8RDe2YNweLS5WJk||}ZwjzsQ6P2I1DUQ7X7+jv1lRhu z7QGFNZzwo8aDR&h(JV>=V?GsuK>L?)Et=0F{8$#%Kfwo&4|=}o_~77R;FEzPXjpV3 zXgJsF%D3n~_j(X~)1|SPG-uUbV-XJi`84LLXFomsh4n`M-A?y0SX+3l{y<-m|Lfgo z9+m%b0(H(lV6GX$1$;{pI`g@FLbr&y*qtxdF@lkPGj{u~zgWcj679|ApT&3xJZpfC z)VcD1hn@d3UeVxAs?gcfONZq=eR~UT7(ulc8)SgQIE0@6=-GNc0*5~cf*a%5x&E*N zkUq!PTfc`qyd%Eh^dl6Xq_DCKdOs9^2(>EzZ3W6xQHzLJzmwXFr?xD+k2bQ2> z>Ic7xgJ2n`JvEO(@*Q|e%C35az36NFh$|Hu(41-fXdgGML_a6uQ?E=ejKKE7Q)Pe- zlgUasNWI8W%B~pnO1Sc?K?jcYU1JD)GblC1{990AbBM5)jfV4yvZgKj_wMx@!29Sq z1+0}h`qKemvjB7Uwc4aaEf4c7Z_xz6d7r#CK<~zqrZPDNOPna_<$CP@& z)DV0gH>|TIa9E6!3NpA@!QTJqzC8i zqJGQL+LI0wxASH67%h;{JZ z2(|YF-{#BoPNY`hP9c-QmnTm*FNV?c+*R3^-p^rpmwN-luIg84j7<|rFFsSC z@w`<#RS@H2>OC5__r`5ig3(tT1e@$2QBQbOcmw;cuaI{;H07ci`8}^A19#-c)<0z4 z$-b&TFy`JLCj8>Fp8pwLpZ{3^`hY9tET>l!IxA=0dLS%^Nydap2?-_QMIRkJztnLH)kSV2~I! z(SW{g{9nzt80h&fj{iDd<_CVq{GF{~9AcRMna&4O0R6%c5{w3RI(Yh2b?hJFs{{^z z*g;jBq<`9Llc!@l=x+i+sw?JQgn@}g4z-(}ug>gSdUH|=;1ib1D0JquSwI(YbdhqtI+fnKHfE3UScs|%s z7D$1VhldbX1rES+IA92Px?-kNe+8a6Uk1@(Q?XR-v@VDZ>jlukP_b>iO{6fzN zzb7IQN_@6damyuy25 zXo!L84-xDYK#Z$$XyG%lve@;SEK zO`+KS--SJc zsjbkLAUh>>c zv;9fAd-rZm6pw(a1}`+wK|{+~UXiT_}}3&;QbmC1*HNx-l7dwcix_8ycE|F%JS zfZBTF^6+7~!$0)4x6A2>tk$Q6eE&1r7xw#~)gFUWt-RU)4gW;``2C;%`}aTf4zQg| zAIbk9sQg#Kb;dt$`3~>@a%2N$Y4`hH`Xc|C_r_ z?FL5g|DsWQ^?6jQg6->i57zmjdhv2#{B8LE_%R7!IFrf8zy1nAt{>S_=gZ^wEn$QN?^yV~oR~hwi%>%yd{SWx%{g1B24ex*8 z0NEdgB0v4X8>XAz|Km&$`Z(3l1O9-04*2Qc|FP|gCV7B4%F0Zl5-OH69LHw-<}ng(_^<_ubS=p8uu6&F?>=Kb{vn%Q_m; zJO;PRt(w literal 0 HcmV?d00001 diff --git a/16/v2/source/verge/UTIL/CHRCONV/MAKEDJ.BAT b/16/v2/source/verge/UTIL/CHRCONV/MAKEDJ.BAT new file mode 100644 index 00000000..5ad2d1f3 --- /dev/null +++ b/16/v2/source/verge/UTIL/CHRCONV/MAKEDJ.BAT @@ -0,0 +1,2 @@ +@echo off +gcc -s -Wall -Werror -m486 -O3 chrconv.c -o chrconv.exe diff --git a/16/v2/source/verge/UTIL/CHRMAK/CHRMAK.CC b/16/v2/source/verge/UTIL/CHRMAK/CHRMAK.CC new file mode 100644 index 00000000..d3ebd7ee --- /dev/null +++ b/16/v2/source/verge/UTIL/CHRMAK/CHRMAK.CC @@ -0,0 +1,653 @@ +/* +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. +*/ + +// CHRMAK.CC +// V2 PCX to CHR converter w/ makefiles +// +// coded by aen +// aen@verge-rpg.com + +#include +#include +#include +#include +#include +#include + +#include + +//////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// + +typedef unsigned char byte; +typedef unsigned short word; +typedef unsigned long quad; + +static void fputw(word w, FILE *fp) { fwrite(&w,1,2,fp); } +static void fputd(quad d, FILE *fp) { fwrite(&d,1,4,fp); } +static word fgetw(FILE *fp) { word w; fread(&w,1,2,fp); return w; } +quad fgetd(FILE *fp) { quad d; fread(&d,1,4,fp); return d; } + +// skips the number of bytes in the file; just seeks past them +static void fskip(int bytes, FILE *fp) + { fseek(fp,bytes,SEEK_CUR); } + +static void fputraw(char *raw, int bytes, FILE *fp) + { fwrite(raw, 1,bytes, fp); } + +// writes a null-terminated string to the file +void fputstrz(char *str, FILE *fp) + { fputraw(str, strlen(str)+1, fp); } + +// writes a string to the file (without the null-terminator), preceeded by +// a quad length marker +static void fputstrn(char *str, FILE *fp) + { int n=strlen(str)+1; fputd(n,fp); fputraw(str,n,fp); } + +//////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// + +#define CHRMAK_VER_MAJ 0 +#define CHRMAK_VER_MIN 1 +#define CHRMAK_VER_STR "0.1b" +#define CHRMAK_AUTHORS "aen" + +// parsing vars +static char *mak_base=0; +static char *makp=0; +static int mak_bytes=0; +static char mak_tok_ident[256]; +static char mak_tok_val[256]; +static int mak_tok_valn=0; // numeric val of mak_tok +static int mak_line=0; + +// makefile vars +static char chrmak_makefile[256]; + +static char pcx_name[256]; static int got_pcx_name=0; +static char chr_name[256]; static int got_chr_name=0; +static int frame_w=0; static int got_frame_w=0; +static int frame_h=0; static int got_frame_h=0; +static int hot_x=0; static int got_hot_x=0; +static int hot_y=0; static int got_hot_y=0; +static int hot_w=0; static int got_hot_w=0; +static int hot_h=0; static int got_hot_h=0; +static int per_row=0; static int got_per_row=0; +static int total_frames=0; static int got_total_frames=0; +static int lidle=0; static int got_lidle=0; +static int ridle=0; static int got_ridle=0; +static int uidle=0; static int got_uidle=0; +static int didle=0; static int got_didle=0; +static char lscript[256]; static int got_lscript=0; +static char rscript[256]; static int got_rscript=0; +static char uscript[256]; static int got_uscript=0; +static char dscript[256]; static int got_dscript=0; + +void warning(char *message, ...) +{ + static char buffer[256]; + va_list args; + + va_start(args, message); + vsprintf(buffer, message, args); + va_end(args); + + printf("%s \n", buffer); +} + +static void fatal(char *message, ...) +{ + static char buffer[256]; + va_list args; + + va_start(args, message); + vsprintf(buffer, message, args); + va_end(args); + + printf("%s \n", buffer); + + exit(0); +} + +//#ifdef __DJGPP__ +// Watcom has one of these +static int filelength(int handle) +{ + struct stat fileinfo; + if (-1 == fstat(handle, &fileinfo)) + fatal("error fstating"); + return fileinfo.st_size; +} +//#endif + +static int streq(char *a, char *b) +{ + while (*a) + { + if (*a++ != *b++) + return 0; + } + return !*b; +} + +static void usage() +{ + printf("usage: chrmak \n"); + exit(0); +} + +static void banner() +{ + printf("chrmak v%s  by %s \n", CHRMAK_VER_STR, CHRMAK_AUTHORS); +} + +static void parse_args(int argc, char *argv[]) +{ + if (argc != 2) + usage(); + + strcpy(chrmak_makefile, argv[1]); +} + +static void skip_cpp_comment() +{ + makp+=2; + while (*makp && '\n'!=*makp) + makp++; + if (*makp) + makp++; +} + +static void skip_c_comment() +{ + makp+=2; + while (*makp && ('*'!=makp[0] || '/'!=makp[1])) + { + if ('\n'==*makp) + mak_line++; + if ('/'==makp[0] && '*'==makp[1]) + skip_c_comment(); + else makp++; + } + if (*makp) + makp+=2; +} + +static void parse_whitespace() +{ + do { + if (!*makp) + return; + if (isspace(*makp)) + { + while (*makp && isspace(*makp)) + { + if ('\n'==*makp) + mak_line++; + makp++; + } + continue; + } + if ('/'==makp[0] && '/'==makp[1]) + { skip_cpp_comment(); continue; } + if ('/'==makp[0] && '*'==makp[1]) + { skip_c_comment(); continue; } + break; + } while (1); +} + +static void grab_ident() +{ + char *t=mak_tok_ident; + while (isalnum(*makp) || '_'==*makp) + *t++=*makp++; + *t=0; + strlwr(mak_tok_ident); +} + +static void grab_val() +{ + char *t=mak_tok_val; + while (isalnum(*makp) || '_'==*makp) + *t++=*makp++; + *t=0; + mak_tok_valn=atoi(mak_tok_val); +} + +static int ident_is(char *id) { return streq(mak_tok_ident,id); } + +static void do_assign() +{ + if (ident_is("pcx_name")) + { strcpy(pcx_name, mak_tok_val); got_pcx_name=1; return; } + else if (ident_is("chr_name")) + { strcpy(chr_name, mak_tok_val); got_chr_name=1; return; } + else if (ident_is("frame_w")) + { frame_w=mak_tok_valn; got_frame_w=1; return; } + else if (ident_is("frame_h")) + { frame_h=mak_tok_valn; got_frame_h=1; return; } + else if (ident_is("hot_x")) + { hot_x=mak_tok_valn; got_hot_x=1; return; } + else if (ident_is("hot_y")) + { hot_y=mak_tok_valn; got_hot_y=1; return; } + else if (ident_is("hot_w")) + { hot_w=mak_tok_valn; got_hot_w=1; return; } + else if (ident_is("hot_h")) + { hot_h=mak_tok_valn; got_hot_h=1; return; } + else if (ident_is("per_row")) + { per_row=mak_tok_valn; got_per_row=1; return; } + else if (ident_is("total_frames")) + { total_frames=mak_tok_valn; got_total_frames=1; return; } + else if (ident_is("lidle")) + { lidle=mak_tok_valn; got_lidle=1; return; } + else if (ident_is("ridle")) + { ridle=mak_tok_valn; got_ridle=1; return; } + else if (ident_is("uidle")) + { uidle=mak_tok_valn; got_uidle=1; return; } + else if (ident_is("didle")) + { didle=mak_tok_valn; got_didle=1; return; } + else if (ident_is("lscript")) + { strcpy(lscript, mak_tok_val); got_lscript=1; return; } + else if (ident_is("rscript")) + { strcpy(rscript, mak_tok_val); got_rscript=1; return; } + else if (ident_is("uscript")) + { strcpy(uscript, mak_tok_val); got_uscript=1; return; } + else if (ident_is("dscript")) + { strcpy(dscript, mak_tok_val); got_dscript=1; return; } + + fatal("%s: unknown ident '%s' on line %i", + chrmak_makefile, mak_tok_ident, mak_line); +} + +static int parse_assign() +{ + int last_line=0; // helper for error detection + + parse_whitespace(); + if (!*makp) + return 1; + else if (isalpha(*makp)) + { + grab_ident(); // get ident + last_line=mak_line; + + parse_whitespace(); // expect + if ('=' != *makp++) + fatal("%s: expected = on line %i", chrmak_makefile, last_line); + + parse_whitespace(); // get val + grab_val(); + last_line=mak_line; + + do_assign(); + + parse_whitespace(); // expect + if (';' != *makp++) + fatal("%s: expected ; on line %i", chrmak_makefile, last_line); + else while (';'==*makp) makp++; + + return 0; + } + fatal("%s: expected ident, got '%c' on line %i", + chrmak_makefile, *makp, mak_line); + return 1; +} + +static void check_needs() +{ + if (!got_pcx_name) fatal("%s: pcx_name missing", chrmak_makefile); + if (!got_chr_name) fatal("%s: chr_name missing", chrmak_makefile); + if (!got_frame_w) fatal("%s: frame_w missing", chrmak_makefile); + if (!got_frame_h) fatal("%s: frame_h missing", chrmak_makefile); + if (!got_hot_x) fatal("%s: hot_x missing", chrmak_makefile); + if (!got_hot_y) fatal("%s: hot_y missing", chrmak_makefile); + if (!got_hot_w) fatal("%s: hot_w missing", chrmak_makefile); + if (!got_hot_h) fatal("%s: hot_h missing", chrmak_makefile); + if (!got_per_row) fatal("%s: per_row missing", chrmak_makefile); + if (!got_total_frames) fatal("%s: total_frames missing", chrmak_makefile); + if (!got_lidle) fatal("%s: lidle missing", chrmak_makefile); + if (!got_ridle) fatal("%s: ridle missing", chrmak_makefile); + if (!got_uidle) fatal("%s: uidle missing", chrmak_makefile); + if (!got_didle) fatal("%s: didle missing", chrmak_makefile); + if (!got_lscript) fatal("%s: lscript missing", chrmak_makefile); + if (!got_rscript) fatal("%s: rscript missing", chrmak_makefile); + if (!got_uscript) fatal("%s: uscript missing", chrmak_makefile); + if (!got_dscript) fatal("%s: dscript missing", chrmak_makefile); +} + +static void parse_makefile() +{ + FILE *fp=0; + + printf("ú parsing %s \r", chrmak_makefile); + fflush(stdout); + + fp=fopen(chrmak_makefile, "rb"); + if (!fp) fatal("unable to open %s", chrmak_makefile); + + mak_bytes=filelength(fileno(fp)); // calc bytes + mak_base=new char [mak_bytes+1]; // alloc room + fread(mak_base,1,mak_bytes,fp); // read bytes + mak_base[mak_bytes]=0; // null-term + makp=mak_base; // setup cur byte ptr + mak_line=1; + + while (!parse_assign()) + ; + + // got everything we need? + check_needs(); + + delete[]mak_base; mak_base=0; + makp=0; + + fclose(fp); + + printf("û \n"); + fflush(stdout); +} + +//////////////////////////////////////////////////////////////////////////// +// PCX & COMPRESS STUFF //////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// + +static FILE *chrfp=0; +static FILE *pcxfp=0; +static byte *virscr=0; + +int manufacturer=0; // pcx header +int version=0; +int encoding=0; +int bpp=0; +int xmin=0,ymin=0; +int xmax=0,ymax=0; +int hres=0,vres=0; +char palette[48]; +int reserved=0; +int color_planes=0; +int bpl=0; +int palette_type=0; +char filler[58]; +byte pal[768]; + +int image_width=0,image_depth=0; +quad vidoffset=0; + +void LoadPCXHeader() +{ + manufacturer = fgetc(pcxfp); // always 10 + version = fgetc(pcxfp); // should be 5? + encoding = fgetc(pcxfp); // always 1 + bpp = fgetc(pcxfp); // bits per pixel + + xmin = fgetw(pcxfp); // grab window + ymin = fgetw(pcxfp); + xmax = fgetw(pcxfp); + ymax = fgetw(pcxfp); + image_width = xmax-xmin+1; // calc dims + image_depth = ymax-ymin+1; + + hres = fgetw(pcxfp); + vres = fgetw(pcxfp); + + fread(palette,1,48,pcxfp); // ega color map + + reserved = fgetc(pcxfp); + color_planes = fgetc(pcxfp); // should be 1 + + bpl = fgetw(pcxfp); // bytes per line + palette_type = fgetw(pcxfp); + + fread(filler,1,58,pcxfp); // nothing important here +} + +void ReadPCXLine(byte *dest) +{ + int i=0,c=0,n=0,run=0; + + // decode a row + for (n=0; n3 || byt == 0xFF) + { + emitc(0xFF); + emitc(samect); + } + emitc(byt); + + } while (i dumping %s \n", chr_name); + fflush(stdout); + + chrfp=fopen(chr_name, "wb"); + if (!chrfp) fatal("unable to open %s", chr_name); + + WriteInfo(chrfp); + WriteFrames(pcx_name,chrfp); + WriteScripts(chrfp); + + fclose(chrfp); + + printf("complete! \n"); + fflush(stdout); +} + +int main(int argc, char *argv[]) +{ + banner(); + + parse_args(argc, argv); + parse_makefile(); + + write_chr(); + + return 0; +} diff --git a/16/v2/source/verge/UTIL/CHRMAK/CHRMAK.TXT b/16/v2/source/verge/UTIL/CHRMAK/CHRMAK.TXT new file mode 100644 index 00000000..b8767f13 --- /dev/null +++ b/16/v2/source/verge/UTIL/CHRMAK/CHRMAK.TXT @@ -0,0 +1,118 @@ +chrmak.exe +the utility with bloated code perpetrated by aen (aen@verge-rpg.com for hate mail) +documentation +by zeromus 5.8.99 +zermous@verge-rpg.com +(be sure word wrap is on) +--- +USE: creates v2 chr from pcx file +--- +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. + +to run chrmak, simply execute chrmak with the makefile, with extension (ex: vecna.mak) as the first and only argument. (ex: "chrmak vecna.mak") + +The characteristics file is technically called a make file, or .mak. it containst several variables, and what they should be. for example: + +/* comment */ +pcx_name=rath; //comment +chr_name=rath; + +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. + +--- + +**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. +**chr_name** the filename, sans extension, of the chr file to output. same as above in all other respects. + +**frame_w** the width of each frame of the chr (DEFAULT 16) +**frame_h** the height of each frame (DEFAULT 32) + +**hot_x** the x-coord of the chr's hotspot. See appendix A for info on chr hotspots. (DEFAULT 0) +**hot_y** the same, but y-coord (DEFAULT 16) +**hot_w** the width of the obstructing region of the hotspot. (DEFAULT 16) +**hot_h** the height of the obstructing region of the hotspot. (DEFAULT 16) + +**per_row** the number of frames per row in the pcx file. in old v1 chr/pcx files, this was 5. (DEFAULT 5) +**total frames** total number of frames in the pcx file. (DEFAULT 20) + +**lidle** the frame to show when the chr is idling, facing the left (DEFAULT 10) +**ridle** the frame to show when the chr is idling, facing the right (DEFAULT 15) +**uidle** the frame to show when the chr is idling, facing up (DEFAULT 5) +**didle** the frame to show when the chr is idling, facing down (DEFAULT 0) + +**lscript** the animation script for when the chr moves to the left. See appendix B for discussion of animation scripts. (DEFAULT F10W10F11W10F12W10F11W10F10W10F13W10F14W10F13W10) +**rscript** the animation script for when the chr moves to the right. (DEFAULT F15W10F16W10F17W10F16W10F15W10F18W10F19W10F18W10) +**uscript** the animation script for when the chr moves up (DEFAULT F5W10F6W10F7W10F6W10F5W10F8W10F9W10F8W10) +**dscript** the animation script for when the chr moves down (DEFAULT F0W10F1W10F2W10F2W10F0W10F3W10F4W10F3W10) + +--- + +APPENDIX A: Hotspots + +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). + +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?" +Imagine three scenarios: a 4x4 sprite with the hotspot at top left, bottom left, and middle left, respectively: + + Top Left Bottom Left Middle Left +0123456789ABCDEF 0123456789ABCDEF 0123456789ABCEDEF +1 1 **** 1 +2 +---hotspot 2 **** 2 **** +3 \|/ 3 **** 3 \**** +4 @*** 4 @*** 4 +--@*** +5 **** 5 /|\ 5 | /**** +6 **** 6 +---hotspot 6 | +7 **** 7 7 +---hotspot +8 8 8 + +So you can see how the hotspot determines how the sprite is oriented, relative to its current screen position. + +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 + + -32 + -24 + -16 + -8 +-16 -12 -8 -4 0 4 8 12 16 + 8 * * * * + 16 * * * * <--- sprite goes there. + 24 @ * * * @ is where hotspot would be + 32 * * * * + +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. + ++----------------------+ +| | +| | +| | +| | +| +---+ | +| |***| | ++------|@@@|-----------+ + +---+ + +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. + +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. + +Final example: +A 32x64 giant might be defined like this: + +... +hot_x=8; +hot_y=48; +hot_w=16; +hot_h=16; +... + +--- + +APPENDIX B: Animation scripts + +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. + +The two COMMAND CODES are F and W. + +**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. + +**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 new file mode 100644 index 00000000..6283a1f4 --- /dev/null +++ b/16/v2/source/verge/UTIL/CHRMAK/MAKEDJ.BAT @@ -0,0 +1,2 @@ +@echo off +gxx -s -Wall -Werror -m486 -O3 chrmak.cc -o chrmak.exe diff --git a/16/v2/source/verge/UTIL/CHRMAK/MAKEWAT.BAT b/16/v2/source/verge/UTIL/CHRMAK/MAKEWAT.BAT new file mode 100644 index 00000000..21b58471 --- /dev/null +++ b/16/v2/source/verge/UTIL/CHRMAK/MAKEWAT.BAT @@ -0,0 +1,2 @@ +@echo off +wcl386 /bt=dos /l=pmodew /mf /os /5r /fp5 /wx /we chrmak.cc diff --git a/16/v2/source/verge/UTIL/CHRMAK/VECNA.MAK b/16/v2/source/verge/UTIL/CHRMAK/VECNA.MAK new file mode 100644 index 00000000..baa4a9c4 --- /dev/null +++ b/16/v2/source/verge/UTIL/CHRMAK/VECNA.MAK @@ -0,0 +1,21 @@ + +/* CHRMAK makefile + û aen */ + +pcx_name=vecna; // image source +chr_name=vecna; // output .CHR name + +frame_w=16; frame_h=32; // frame dims + +hot_x=0; hot_y=16; // hotspot coord +hot_w=16; hot_h=16; // hotspot dims + +per_row=5; total_frames=20; // frames per row, total + +lidle=10; ridle=15;; // left/right idle frames +uidle=5; didle=0; // up/down idle frames + +lscript=F10W10F11W10F12W10F11W10F10W10F13W10F14W10F13W10; // movement scripts +rscript=F15W10F16W10F17W10F16W10F15W10F18W10F19W10F18W10; +uscript=F5W10F6W10F7W10F6W10F5W10F8W10F9W10F8W10; +dscript=F0W10F1W10F2W10F2W10F0W10F3W10F4W10F3W10; diff --git a/16/v2/source/verge/UTIL/CHRMAK/VECNA.PCX b/16/v2/source/verge/UTIL/CHRMAK/VECNA.PCX new file mode 100644 index 0000000000000000000000000000000000000000..2e82dcb2c21a298e83e627bb78df6ac4ff97bebb GIT binary patch literal 15740 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 literal 0 HcmV?d00001 diff --git a/16/v2/source/verge/UTIL/CHRMAK/VER b/16/v2/source/verge/UTIL/CHRMAK/VER new file mode 100644 index 00000000..12088dab --- /dev/null +++ b/16/v2/source/verge/UTIL/CHRMAK/VER @@ -0,0 +1,4 @@ + + current version + + chrmak.exe 0.1b diff --git a/16/v2/source/verge/UTIL/PACK/MAKEDJ.BAT b/16/v2/source/verge/UTIL/PACK/MAKEDJ.BAT new file mode 100644 index 00000000..dcc8a93a --- /dev/null +++ b/16/v2/source/verge/UTIL/PACK/MAKEDJ.BAT @@ -0,0 +1,2 @@ +@echo off +gcc -s -Wall -Werror -m486 -O3 pack.c -o pack.exe diff --git a/16/v2/source/verge/UTIL/PACK/PACK.C b/16/v2/source/verge/UTIL/PACK/PACK.C new file mode 100644 index 00000000..f349ab0d --- /dev/null +++ b/16/v2/source/verge/UTIL/PACK/PACK.C @@ -0,0 +1,166 @@ +/* +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. +*/ + +#include +#include +#include + +#define byte unsigned char + +// ================================= Data ==================================== + +FILE *pack; +FILE *list; +FILE *src; +char *strbuf,*filebuf; +int numfiles,curofs; +char headertag[]="VRGPACK"; + +typedef struct +{ + unsigned char fname[84]; // pathname thingo + int size; // size of the file + int packofs; // where the file can be found in PACK + int count; // internal (engine-runtime) use + char extractable; // can UNPACK .. unpack it? + char override; // should the engine override it w/ + // local files? +} filestruct; + +filestruct filetbl[512]; +byte *ptr; + +// ================================= Code ==================================== + +void CreatePackHeader() +{ char a; + + fwrite(&headertag, 1, 7, pack); + a=1; fwrite(&a, 1, 1, pack); // pack version 1 + fwrite(&numfiles, 1, 4, pack); // number of files in archive + + // Hmm.. that's it. What a boring header. :) +} + +void EncryptHeader() +{ byte lastvalue; //, precodebyte; + + ptr=(byte *) filetbl; + lastvalue=*ptr; + ptr++; + + while (ptr < (byte *) (int) filetbl + (int) 5120) + { + (*ptr)+=lastvalue; + lastvalue=*ptr; + ptr++; + } +} + +void DecryptHeader() +{ byte lastvalue, precodebyte; + + ptr=(byte *) filetbl; + lastvalue=*ptr; + ptr++; + + while (ptr < (byte *) (int) filetbl + (int) 5120) + { + precodebyte=*ptr; + (*ptr)-=lastvalue; + lastvalue=precodebyte; + ptr++; + } +} + +void BuildFileTable() +{ int i; + + curofs=12+(numfiles*100); + memset(filetbl, 0, sizeof filetbl); + + for (i=0; i \n"); + exit(-1); + } + + if (!(list=fopen(argv[1],"r"))) + { + printf("Unable to open file %s. \n",argv[1]); + exit(-1); + } + + strbuf=(char *) malloc(100); + fscanf(list,"%s",strbuf); + + if (!(pack=fopen(strbuf,"wb"))) + { + printf("Unable to create file %s. \n",strbuf); + exit(0); + } + fscanf(list,"%d",&numfiles); + + CreatePackHeader(); + BuildFileTable(); + DumpFiles(); + + fclose(list); + fclose(pack); + + return 0; +} diff --git a/16/v2/source/verge/UTIL/PACK/PACK.TXT b/16/v2/source/verge/UTIL/PACK/PACK.TXT new file mode 100644 index 00000000..b3f565b1 --- /dev/null +++ b/16/v2/source/verge/UTIL/PACK/PACK.TXT @@ -0,0 +1,36 @@ +pack.exe +documentation +by zeromus 5.8.99 +zeromus@verge-rpg.com +(be sure word wrap is on) +--- +USE: creates v2 pakfile +--- +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. + +To create a packfile, pack.exe takes a makefile of the following format: + +--- <--cut below this line :) +pakfile_to_create.vrg +number_of_files +file_name_1 flag_extrractable flag_overrideable +file_name_2 flag_extrractable flag_overrideable +file_name_3 flag_extrractable flag_overrideable +--- + +Here it is with sample data. + +--- +test.vrg +3 +pack.c 0 0 +test.mak 1 0 +test.obj 0 1 +--- + +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. + +Extractable means that the file will be extracted by unpack.exe. Files you want to keep secret should have a 0 for this. + +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. + diff --git a/16/v2/source/verge/UTIL/PACK/TEST b/16/v2/source/verge/UTIL/PACK/TEST new file mode 100644 index 00000000..7de7a6ca --- /dev/null +++ b/16/v2/source/verge/UTIL/PACK/TEST @@ -0,0 +1,5 @@ +test.vrg +3 +pack.c 1 1 +pack.exe 1 1 +todo 1 1 diff --git a/16/v2/source/verge/UTIL/PACK/TODO b/16/v2/source/verge/UTIL/PACK/TODO new file mode 100644 index 00000000..f873c218 --- /dev/null +++ b/16/v2/source/verge/UTIL/PACK/TODO @@ -0,0 +1,3 @@ +entity/entity, point makes contact w/entity, entity/bbox,b +box/bbox,and a line intersect/entity and line intersect/bbox. +sin,cos and tan() functions. diff --git a/16/v2/source/verge/UTIL/PCX2FNT/FONT0.PCX b/16/v2/source/verge/UTIL/PCX2FNT/FONT0.PCX new file mode 100644 index 0000000000000000000000000000000000000000..a8eee682ba982a0293ecff8843112f128ec73ce1 GIT binary patch literal 11576 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 literal 0 HcmV?d00001 diff --git a/16/v2/source/verge/UTIL/PCX2FNT/FONT02B.PCX b/16/v2/source/verge/UTIL/PCX2FNT/FONT02B.PCX new file mode 100644 index 0000000000000000000000000000000000000000..26f4cd95ef83b691afbc8a8f572a65ff1a1c3a99 GIT binary patch literal 21809 zcmds9Eo@v_mcAwJDy!|a3Is&5L4biljnu#(k_|GFfkA*lKtMo%K|p{(0|SGM)WEx$nNR)06E@OEWvJe(&AC zbH4MPpL^e%R{#6I4*sp+e|HBzmOl;tH2Cvh{xTd6Z{NPXy1Kftv2p+Y{q61T-QC^& z{r%_9pC26^ot&JUpPye`TwGpW&StYR`14>u0l)Kqvtj<74u^j&-EUkL%ECk)cs$j^ zX;~PTVQse4J=FA2?B67EQWmCKC3#q_->{r5lwlb|2k#4mm;_Bzw4_IU#38+wQ&l9G zDKVvv2_cs$uAkE{wF_qh=>!r!3>F4P2<4D8fQ$(`DQYkgmO0&l5C#p#L_Z;Twuq%n zdAq8A0AZB4FowP|9Gq%0EDdYNW?*0t5C|BIG?0b-sHPNp4|P!>p=&8+|^6`B+%^X{Pf^aTAOAIKAOC=G@j%$jnV5z<6B zvCwM7hb*RAp^*NCGftT*sO(-}(bJEJU;xJI2LduWNEg*jsEMLar4JLVNx-27_k0{9 z;sD9+i0c%wW}A8S-&}@U!WUmH4TdviBL;g7z%WxyM%r1YSYxPIBBv?(^=b96h2T@wF zsIDd%Hmc^3jY8?k0AlzNa}ZC58j=&88Lf(7UnDmS^MHYQN`$-tS4BeQK8SC3VJ+JK9)r0 zYisKSS}U*q`zl2sov-RP0cC)a9%y4j)R0n@r=~h&wlfg@T-S#O`!|P<7@ZX63QPrQondiHu=oI`T@+)$V8W9R2TNo?#GL~Z zG424Cu!g|C<)N^tsnj zWHlLdm||(4fkf%rJCU`DcBV2qdYJ5ll!H5C1s5$1U_ptDY?+e5DwRe{L}x^v;)1>E zE{1`oVr2_o)oTuxCVKy_l>$k~<<9It6@8KVUA|`sn6E&TRfgWDp|BF%&I;JD5*G8@)H5{Cek zDF5U$JUZz6-AJ2yjHx4k&7AQle56A{L{BRTba^?bCsvGg+C2y(Fh#Cp;#-mzNnxaC zsFFO%qF<{jmJ94^o)is>1ouoBjAU#xq5x%Xt{v2=Utr{^2JsfjFzpO)UVp+>0wae| zl~(xeX1?hyo`~!}j&ofH6~2#fB24J7colw_AAyK|8CEL>W83C76e>M?EJ!!z#bTa- zggj0sP--E`8F>j8l3f)A6G%z?iD5pavhW*XvqLY3YGdY-P|+^R#kfbx=#7ATcRSmv z)4@Jny6+3&z=j?_s_nvF^Bnn3g6aqgLG=Q(B+XFEb@RlvR$qgOQmfDW!r-$?We7C; z#RX+V$0>Fw#G^lIhSNtd#Sq+RPjd2=?mC;32Jl%-w{W}cY^W$_hCPy843p$$S%_9{$m~e!uER%|a7%7d-QAg;ZKx1wdK&;D)X*sG zQEw3N?EEb#&P;{B(^+}K5W zw1jL(QMH|H7@@33BU8;)QRO5th*DvI8fv-@10+BNDU&L0_&nmupV~IC5;de}H`)S@ zSsKw40?iP?>!K%aHPFRA-;_A^ub zSNDH&G%jmp4f4d^n#G)!HK~hcLnhR6sOgCmM9-wGsW4d{FSTnrV^PZ*+*}50E}gUsl1L+%mZ-r*SmtyG zLJ%|<6a9qX*&-JB0k^CA(`jpC=;QZ7O%?`OJ2nG!nbkoHtr-J>rfLD~FZmEy#ppn6 znz59LvlP+KLxG6S3#VMz2|^3)>a~CnEFeVyUSLU;Pp_7y+J&_PE;sxT3J~*ra5C*+ z1e}oz`T_r-3x(GQ}vR$6#%6|lLF-$4xq@M;8k803OSSp zLk{HQfI_Vy3%f1;gu)hg2__VLI~`0FRCceg=;^y57-%-wj1JO8b^pNM3l)_zi~+_F zRRcxSOf?y4XW@IH$;2Hr)rrd1X!T^c;R?YZ@tp7>T_LS&@x2gkRMyK;C^kw3-&`>B ziZl|p0tlWBJ{LsxX0sJjh3Z?vny;J?kbua!%F5&VlT|Fk0m*F+9J8_K)HgOV$G}1a zmm#8M4Pl2KuL2$DWg~7Ja?Od#!;!?Ix~dw4B{r(&kc~p=QEUr}SqLvg#bA;t(V5Yz z2=+yC!!QqMn5Wv8H{hyBs2qr0sYy_qNnQ`VG}LjDS9(THXQqJ?k!2?;RfCO|p+qB= z%bEb{!p*TFigKoOpt1Xo1zN9v)U22VnryE{Z8#nU94ImdJpJJ4YvC+yN|M4S_vP!3qLMn+}>C)9pm= zB#veX)dP6~1DI3~L*lQ82u8Y;%4^(ua`15L$BPR@C%UURTC(Xm-8 z1(J}{z`mD*dSb;`96|8pK^TE4 zawWG8OY$OV>#LGH$)aDYDwYdmn(;)#B2lqvY(=NS;vly!EsPp3=@zoa$WsmCEs~-A zUfAgi2MCND5=k1Wl~oepmz~(+iOBv_L@DhODtBmy6M;j&Mu}J9hX^EjPSy|~G%>bq zZbKmg8)8}(q#GTvm?t11kJHKAY&0P)Tu1^{6x=J(cof5Iq_O}6W;^t9D7~gt0jOP6 z2LRU_t=_3Vsfc`Yk`C`Hg!njIF2# z1y~Um5&gm3pgAjg%EB=^um}f>GpuX#{-Rx zir$>{fkOuw-UL6r+Y~{QLlknT>2a}O&!jAZ#FU4-emHb3!og$c;C*orlSIU#%~Bt6NVw%x6$xfa#i?UL z$YqM_=k!bMqP`bW%c3%Ck+FjYltU7O8B9ymU?MDYx~G@~tsrPHCi)4%vqdcM18!IK zr_&b418N)qju6NN z6&w0VgN55!wuDd?Nt?~B04Noj6e!nl07do$ui;OikV9!O0jh)*I=rkvU`0+Pu~r}K+Q`$_%i}xj~^%aA%QOl5dDw$?-wd6Wf%jDA*u$7rkQFo z($2#7LX(L*+*BtjTcg#J;f5;&gT!;fhjfLsE^6aMGrt#7J&KJ|!8aGoydsUntpI{& zgU`G07+D!6#=%t~Klf2S1a=Hkl*IbdINU0iZvIG6zd!fVKf(6Gez|2e5=S z1okwAeTXYrhi1ogJCQp{)Enk3CX**HfJyZ*B>sAcV5Bm_kht~8l`KAuPow-WeeEyE z?IrHDEU7RPwzhOdJ5yQE8ccSAQDu#wCeo5zg{3mGC4j;JsiGyJXT+G|ys&c@!$5{% zB`4=RRj(dZLA+zL<~omsQ0dGLRM8iy-{pICl;{ghS!FtJ@$^w`idmH3k8>1R&iZ}d z3kkUukk#$0eJ^ATp+5Sj_{O7yzTb_QKn1OR`4BndQTRxQ1jZ)(+e!laUJmN%dyK^q z1Wz7>Uol0lWa3+r7fD-RmE=hl{aRJk!?@S$WNwkD*fh3@ZAKKJ7<(*?8ZYS{SY+g> z2Jsfjke^hPA;|2o->woE2e^|oR70C`wl=-R6Om4)8t1wWDtBmy6IDQe#S4b@BYCDf z#0O1`ZJXOrh`@%JmIdiXM=a(ENXX-KGB+DdyT~Y`D7aUm@kpThrLq77W;^t9D7~h+ z0f^7FBL@K28?9edkk9RGt4;^|bm_hT@%P|>(jGsm?SfJB9L1Of)e%?pswHU-o9BsZ zt-b~mrPeC{b-ou0t|H2wWDE(th(n*9=cAM7!DqFf1=TM5W4{;nc(3`3hu$`T4VRe- za+PEzxkgX-y|Bs62%}6^zcPedP^IPE?(WRaHsp&my$zrYqH;%Jk9xxcuJ%wuf~aet z^zu>Cm?sP&Y?#!JZ9|8FRECH)Dj2C91r^OOsDukqC~$LG&Mkoa(QDe51?GA@b%;tN zt)7|z23?d>hgv8a23R6+-eHujsNrS?p~JHch^U&blER8++x?w~du^OU<`8tYlMN%3 z^=M?OxhkrhBnD9`3{XQ&*I}?5NSS#s2>Vkz1y-Vl^z24kz%ffBnnFf0L@>L8a4Gps z9!Pgo^#03(4l=|h`03^D;{s7|n4y#Zej$>=y5X19{W<%Y)Bd~iy>L`Uut@BUEatR~ zq%N8bnTSFTH9amC?3t7i(2a}b;jSMJT_a!~LkI7pK}-@6Bb%i@u9I-fsVWl8l!{Zw zgpkV=*U#yf+L68&Qp<>^u)&D@p#kNP#9#)~5;d3z%be~hCP6C*8jOj4Lhx)63;clF zRsHF-(HQ#py-<^d0juCdGvHTJK0^zw8AF$*Y60vo`4Cve=s;|mv6P9k6miZ&fr!ov zr(Dsp^UU~$=nKnQlUwKat#MiWKZxK{sam+lmu8-jsmgU#q5T~zlE{Jl_7DZ?0G3{f>uxy@9Qk#-io7n)4m z;jB7Q*&3~$3^!aM7$lw(KBOz8brjzV;YMY>9ED<|RPfCOGp|S^aVvn}+2C_QWN$WG zF;%F(C5(LKgn$G@&Q(?(*B@ptQzgRz32hD>v-95z$s9{OBDf5(aD=c!k5_>X^s*5* z4!Pz;<>5$TQC(FH!V()*bI3-a^kl7O1QK(2Au0xwOo`5nRz`G07+D!6#=%t~Klf2S1f+PazH6XMTm8!u;%TS^b%SCzU3pdA#D9V}A5p=t@ z!$ejPr!9E^WGkx$gjT?B5QUjW*{!xpyQtJX$d#^S0Ly^$@{GW`86Mw;s8Y#i#LUlpmclFj>uB;$F)VD56`K$jDkn zJ5w1QJxq3jQDu#wCM^wMVX2I436Q}ml}1ZK&xkz5d12=+hJmJHB`4=RRj)Z%n&{Z9 zl>&8v%bnSQD*7VzyL_*X5?`Sys|>vlCTJzdsW!zd%J0WHiY#aSzVC&E+zQC*_SL=@ zGKNqe{gcn|=%DX+BPLKmYhOM@&Uh3)(jg(DrUol0lWa3+r z7fD-RmE=hl{aRJATp-hoCmI%sgBgu&Vw(}AAh#|pj2bWL7BXVwsRr>D$&jB^lp$4L zxJqCg;7-y|t*nv&zwE>oPegi0)Hv65P`N`poCqBHD_(^k#77{aKg0)3jBT6SP{=vV z)Q$z|Mn^2>2}sD}bTT&^O}oe_qbRsnqVXu%Y^1UP1ZF$*awxr~RRO47R0jZ8yDoB# z6%_g0&aQym*_ix=a6oB~AJukYuX&DqCqZ?@6}=jrI?=&(^Tf4QUxSHKYnA^x-wUH+ z!$tO_d9xMjv-5m(atC}C(|PF1;QnL37xs9s`HP3%Hh@C_vl!$$Xhm|3p6+{LlbiNK z?eHr@xCK>O&h75b>}*4iNYmQ@${;Ft6!xe$Jm8{J&Zekqpg1!X+6Y>zW1cXCuwk+p zp-iLHMnoGGjMR>TiWVc7!i6}FaWg%Be#w6b%Ec zqF;H3QMRInn;C=-D=vtrny!+G29#8Jh-{^a%uT^c{CZ_`RUHx%ez~%t=-w~ z%h}8G*?B2d!?rX$E9F%wZ%TOw4J#|N&CS{4$Fu$Y+0hZi&sJ8-ojc{;z4Gv3+1V*i zpO(YJ^6FK2^QQdxW4X8}mzM?qSQtNn_Vogtc>p5xwE;s{@}sg$B#F5cQ+0W z?!I`j{`&Rm$;rz3`O?M3P-~uJ_H4FNR@Te^y-rii^*<9Y+Sl++8e0b;f%hB!Ew?}W5)+e{_y}SA7Vz~S9 zn`gh=I0nBrSIW|AS>7n$Zk6>%Wn-t@-z$#}%9H11@2DKSDK94F_Wso_4CQj<@vKu7svl~`F>+` z>)z_pgZ1U@jg_6PZ}%Ro?r*OjKG}G=d++G`2R}S}^!CN$^P}&6`eE=jH#)q(`r^^uqsN=a-`#)n^wH$t$@%l$_pkOp96$f~_SL8JH@{x|cxUOG zjpgCi=;ou91mWE~J z);FumH#fdr+FBny++5#zu=(`KgTuY;R|ns{dHMbM56>?qN1uK=nO(jcEf4REZf@MU xdH?RMNB3^+++W&zxOA|+^!&-KSKr +#include + +char fname1[100], fname2[100]; +int xs, ys, ns; +FILE *fnt,*pcxf; +char *virscr; + +char manufacturer; // pcx header +char version; +char encoding; +char bits_per_pixel; +short int xmin,ymin; +short int xmax,ymax; +short int hres; +short int vres; +char palette[48]; +char reserved; +char color_planes; +short int bytes_per_line; +short int palette_type; +char filler[58]; +unsigned char pal[768]; + +unsigned short int width,depth; +unsigned short int bytes; +unsigned char c, run, ss=0; +unsigned int vidoffset, n=0; + +void ReadPCXLine(unsigned char *dest) +{ + int j; + n=0; + + do { + c=fgetc(pcxf) & 0xff; + if ((c & 0xc0)==0xc0) { + run=c & 0x3f; + c=fgetc(pcxf); + for (j=0; j +#include +#include + +// ================================= Data ==================================== + +struct span +{ + int begin, end; // begin & end location of span + int len, inverse; // lenth of span and inverse on/off +}; + +struct span spans[32]; // maximum of 32 spans. +char numspans; // number of active spans in PDF + +unsigned char *transparencytbl; // full transparency table (64k) +char outname[100]; // output filename +char paldefname[100]; // palette definition filename +char *strbuf; // generic string buffer + +char spanidx[256]; // Color -> Span xlat table + +// ================================= Code ==================================== + +void ParsePaletteDefinition(FILE *f) +{ int i; + + fscanf(f,"%s",strbuf); + if (stricmp("gradients",strbuf)) + { + printf("Not a valid PDF file. \n"); + exit(-1); + } + fscanf(f,"%s",strbuf); + numspans=atoi(strbuf); + + for (i=0; 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 literal 0 HcmV?d00001 diff --git a/16/v2/source/verge/UTIL/TRANS/VERGE.PDF b/16/v2/source/verge/UTIL/TRANS/VERGE.PDF new file mode 100644 index 00000000..c55b015e --- /dev/null +++ b/16/v2/source/verge/UTIL/TRANS/VERGE.PDF @@ -0,0 +1,17 @@ +gradients 16 +starts 0 ends 31 endspan +starts 32 ends 47 inverse endspan +starts 48 ends 55 inverse endspan +starts 56 ends 63 endspan +starts 64 ends 79 inverse endspan +starts 80 ends 87 inverse endspan +starts 88 ends 111 inverse endspan +starts 112 ends 127 inverse endspan +starts 128 ends 135 inverse endspan +starts 136 ends 159 inverse endspan +starts 160 ends 182 endspan +starts 183 ends 191 endspan +starts 191 ends 223 inverse endspan +starts 224 ends 239 endspan +starts 240 ends 247 inverse endspan +starts 248 ends 254 inverse endspan diff --git a/16/v2/source/verge/UTIL/UNPACK/MAKEDJ.BAT b/16/v2/source/verge/UTIL/UNPACK/MAKEDJ.BAT new file mode 100644 index 00000000..1077e24c --- /dev/null +++ b/16/v2/source/verge/UTIL/UNPACK/MAKEDJ.BAT @@ -0,0 +1,2 @@ +@echo off +gcc -s -Wall -Werror -m486 -O3 unpack.c -o unpack.exe diff --git a/16/v2/source/verge/UTIL/UNPACK/TEST b/16/v2/source/verge/UTIL/UNPACK/TEST new file mode 100644 index 00000000..7de7a6ca --- /dev/null +++ b/16/v2/source/verge/UTIL/UNPACK/TEST @@ -0,0 +1,5 @@ +test.vrg +3 +pack.c 1 1 +pack.exe 1 1 +todo 1 1 diff --git a/16/v2/source/verge/UTIL/UNPACK/TODO b/16/v2/source/verge/UTIL/UNPACK/TODO new file mode 100644 index 00000000..f873c218 --- /dev/null +++ b/16/v2/source/verge/UTIL/UNPACK/TODO @@ -0,0 +1,3 @@ +entity/entity, point makes contact w/entity, entity/bbox,b +box/bbox,and a line intersect/entity and line intersect/bbox. +sin,cos and tan() functions. diff --git a/16/v2/source/verge/UTIL/UNPACK/UNPACK.C b/16/v2/source/verge/UTIL/UNPACK/UNPACK.C new file mode 100644 index 00000000..d6c79bef --- /dev/null +++ b/16/v2/source/verge/UTIL/UNPACK/UNPACK.C @@ -0,0 +1,122 @@ +/* +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. +*/ + +#include +#include + +#define byte unsigned char +// ================================= Data ==================================== + +FILE *pack; +FILE *src; +char strbuf[2048],*filebuf; +int numfiles; +char headertag[]={ 'V','R','G','P','A','C','K',0 }; + +struct filestruct +{ + unsigned char fname[84]; // pathname thingo + int size; // size of the file + int packofs; // where the file can be found in PACK + int count; // internal (engine-runtime) use + char extractable; // can UNPACK .. unpack it? + char override; // should the engine override it w/ + // local files? +}; + +struct filestruct filetbl[512]; + +// ================================= Code ==================================== + +void DecryptHeader() +{ byte lastvalue, precodebyte, *ptr; + + ptr=(byte *) filetbl; + lastvalue=*ptr; + ptr++; + + while (ptr < (byte *) (int) filetbl + (int) 5120) + { + precodebyte=*ptr; + (*ptr)-=lastvalue; + lastvalue=precodebyte; + ptr++; + } +} + +void CheckPackHeader() +{ char a; + + fread(strbuf, 1, 7, pack); + strbuf[8]=0; + if (strcmp(strbuf,headertag)) + { + printf("*error* Not a valid VRG packfile. \n"); + exit(-1); + } + fread(&a, 1, 1, pack); + if (a!=1) + { + printf("*error* Incorrect VRG packfile version. \n"); + exit(-1); + } + fread(&numfiles, 1, 4, pack); + fread(&filetbl, 100, numfiles, pack); + DecryptHeader(); +} + +void DumpFiles() +{ int i; + + printf("UNPACK v.0.1 Copyright (C)1997 BJ Eirich\n"); + for (i=0; i \n"); + exit(-1); + } + + if (!(pack=fopen(argv[1],"rb"))) + { + printf("Unable to open file %s. \n",argv[1]); + exit(-1); + } + + CheckPackHeader(); + DumpFiles(); + + fclose(pack); + + return 0; +} diff --git a/16/v2/source/verge/UTIL/UNPACK/UNPACK.TXT b/16/v2/source/verge/UTIL/UNPACK/UNPACK.TXT new file mode 100644 index 00000000..e75838d9 --- /dev/null +++ b/16/v2/source/verge/UTIL/UNPACK/UNPACK.TXT @@ -0,0 +1,13 @@ +unpack.exe +documentation +by zeromus 5.8.99 +zeromus@verge-rpg.com +(be sure word wrap is on) +--- +USE: extracts files from v2 pakfile +--- +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. + +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. + +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 new file mode 100644 index 00000000..c30021ab --- /dev/null +++ b/16/v2/source/verge/VCC/CLEAN.BAT @@ -0,0 +1,4 @@ +@echo off +if exist *.obj del *.obj +if exist *.o del *.o +if exist *.err del *.err diff --git a/16/v2/source/verge/VCC/CODE.H b/16/v2/source/verge/VCC/CODE.H new file mode 100644 index 00000000..bbcfca2c --- /dev/null +++ b/16/v2/source/verge/VCC/CODE.H @@ -0,0 +1,70 @@ +/* +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. +*/ + +#if !defined(__CODE_INC) +#define __CODE_INC + +// Single-byte opcode descriptors + +#define EXEC 1 +#define VAR0_ASSIGN 2 +#define VAR1_ASSIGN 3 +#define VAR2_ASSIGN 4 +#define GENERAL_IF 5 +#define ELSE 6 +#define GOTO 7 +#define FOR_LOOP0 8 +#define FOR_LOOP1 9 +#define SWITCH 10 +#define CASE 11 +#define ENDSCRIPT 255 + +// Single-byte operand descriptors + +#define OP_IMMEDIATE 1 +#define OP_VAR0 2 +#define OP_VAR1 3 +#define OP_VAR2 4 +#define OP_GROUP 5 + +// Single-byte IF handler parameters + +#define ZERO 0 +#define NONZERO 1 +#define EQUALTO 2 +#define NOTEQUAL 3 +#define GREATERTHAN 4 +#define GREATERTHANOREQUAL 5 +#define LESSTHAN 6 +#define LESSTHANOREQUAL 7 + +// Single byte assignment descriptors + +#define SET 1 +#define INCREMENT 2 +#define DECREMENT 3 +#define INCSET 4 +#define DECSET 5 + +// Operand combination descriptors +#define ADD 1 +#define SUB 2 +#define MULT 3 +#define DIV 4 +#define MOD 5 +#define OP_END 255 + +#endif // __CODE_INC diff --git a/16/v2/source/verge/VCC/COMPILE.C b/16/v2/source/verge/VCC/COMPILE.C new file mode 100644 index 00000000..2de7ce56 --- /dev/null +++ b/16/v2/source/verge/VCC/COMPILE.C @@ -0,0 +1,1256 @@ +/* +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. +*/ + +// ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +// ³ The VergeC Compiler version 2.01 ³ +// ³ Copyright (C)1998 BJ Eirich (aka vecna) ³ +// ³ Code Generation module ³ +// ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + +#include +#include +#include + +#include "funclib.h" +#include "vcc.h" +#include "vccode.h" +#include "lexical.h" +#include "preproc.h" + +// ================================= Data ==================================== + +#define LETTER 1 +#define SPECIAL 3 + +// -- Function arguements type defs + +#define VOID 1 +#define INT 1 +#define CHARPTR 2 +#define STRING 3 + +unsigned char *source, *src; +unsigned char *outbuf, *code; +unsigned char inevent=0; + +typedef struct +{ + char fname[40]; + char argtype[20]; + int numargs, numlocals; + int returntype; + int syscodeofs; +} funcdecl; + +funcdecl funcs[700]; +int numfuncs=0; + +typedef struct +{ + char vname[40]; + int varstartofs; + int arraylen; +} vardecl; + +vardecl vars[500]; +int curstartofs=0; +int numvars=0; +int varidx; + +typedef struct +{ + char vname[40]; + int vsofs; + int arraylen; +} strdecl; + +strdecl str[300]; +int sstartofs=0; +int numstr=0; + +int vctype; // 0 / 1 :: map / system + +// -- local function parameters -- + +char larg[20][40]; + +// -- MAP vc stuff -- + +char *functbl[512]; +int mfuncs=0; + +// ================================= Code ==================================== + +void HandleString(); +void HandleFunction(); +void HandleUserFunction(); +void HandleFunctionType(); +void EmitOperand(); + +void EmitC (char c) +{ + if (locate && locate == (int)(code - outbuf)) + vcerr("Located."); + + *code++ = c; +} + +void EmitW (short w) +{ + short *c=(short *)code; + + if (locate && locate == (int)(code - outbuf)) + vcerr("Located."); + + *c=w; code+=2; +} + +void EmitD (int d) +{ + long *c=(long *)code; + + if (locate && locate == (int)(code - outbuf)) + vcerr("Located."); + + *c=d; code+=4; +} + +void EmitString(char *str) + { while ((*code++ = *str++)) ; } + +void HandleStringOperand() +{ + if (NextIs("\"")) + { + EmitC(s_IMMEDIATE); + GetString(); + EmitString(token); + return; + } + GetToken(); + if (token_type==IDENTIFIER && varcategory==op_STRING) + { + EmitC(s_GLOBAL); + EmitW(str[varidx].vsofs); + return; + } + if (token_type==IDENTIFIER && varcategory==op_SARRAY) + { + EmitC(s_ARRAY); + EmitW(str[varidx].vsofs); + Expect("["); + EmitOperand(); + Expect("]"); + return; + } + if (token_type==IDENTIFIER && varcategory==op_SLOCAL) + { + EmitC(s_LOCAL); + EmitC((char) varidx); + return; + } + if (TokenIs("str")) + { + EmitC(s_NUMSTR); + Expect("("); + EmitOperand(); + Expect(")"); + return; + } + if (TokenIs("left")) + { + EmitC(s_LEFT); + Expect("("); + HandleString(); + Expect(","); + EmitOperand(); + Expect(")"); + return; + } + if (TokenIs("right")) + { + EmitC(s_RIGHT); + Expect("("); + HandleString(); + Expect(","); + EmitOperand(); + Expect(")"); + return; + } + if (TokenIs("mid")) + { + EmitC(s_MID); + Expect("("); + HandleString(); + Expect(","); + EmitOperand(); + Expect(","); + EmitOperand(); + Expect(")"); + return; + } + if (TokenIs("chr")) + { + EmitC(s_CHR); + Expect("("); + EmitOperand(); + Expect(")"); + return; + } + else vcerr("Unknown string operand. "); +} + +void HandleString() +{ + while (1) + { + HandleStringOperand(); + if (NextIs("+")) + { + EmitC(s_ADD); + GetToken(); + continue; + } + else + { + EmitC(s_END); + break; + } + } +} + +void EmitOperand(); +void DoSomething(); + +void HandleOperand() +{ + GetToken(); + if (token_type==DIGIT) + { + EmitC(op_IMMEDIATE); + EmitD(token_nvalue); + return; + } + if (token_type==IDENTIFIER) + { + if (varcategory==op_UVAR) + { + EmitC(op_UVAR); + EmitD(vars[varidx].varstartofs); + return; + } + if (varcategory==op_UVARRAY) + { + EmitC(op_UVARRAY); + EmitD(vars[varidx].varstartofs); + Expect("["); + EmitOperand(); + Expect("]"); + return; + } + if (varcategory==op_LVAR) + { + EmitC(op_LVAR); + EmitC((char) varidx); + return; + } + if (varcategory==op_HVAR0) + { + EmitC(op_HVAR0); + EmitC((char) varidx); + return; + } + if (varcategory==op_HVAR1) + { + EmitC(op_HVAR1); + EmitC((char) varidx); + Expect("["); + EmitOperand(); + Expect("]"); + return; + } + } + if (token_type==FUNCTION && token_subtype==op_BFUNC) + { + if (!returntypes[funcidx]) + { + vcerr("%s() does not return a vlue.", token); + } + EmitC(op_BFUNC); + HandleFunction(); + return; + } + if (token_type==FUNCTION && token_subtype==op_UFUNC) + { + if (!funcs[funcidx].returntype) + { + vcerr("%s() does not return a vlue.", token); + } + EmitC(op_UFUNC); + HandleUserFunction(); + return; + } + vcerr("Unknown token."); +} + +void EmitOperand() +{ + while (1) // Modifier-process loop. + { + if (NextIs("(")) + { + EmitC(op_GROUP); + GetToken(); + EmitOperand(); + Expect(")"); + } + else HandleOperand(); + + if (NextIs("+")) + { + EmitC(op_ADD); + GetToken(); + continue; + } + else if (NextIs("-")) + { + EmitC(op_SUB); + GetToken(); + continue; + } + else if (NextIs("/")) + { + EmitC(op_DIV); + GetToken(); + continue; + } + else if (NextIs("*")) + { + EmitC(op_MULT); + GetToken(); + continue; + } + else if (NextIs("%")) + { + EmitC(op_MOD); + GetToken(); + continue; + } + else if (NextIs(">>")) + { + EmitC(op_SHR); + GetToken(); + continue; + } + else if (NextIs("<<")) + { + EmitC(op_SHL); + GetToken(); + continue; + } + else if (NextIs("&")) + { + EmitC(op_AND); + GetToken(); + continue; + } + else if (NextIs("|")) + { + EmitC(op_OR); + GetToken(); + continue; + } + else if (NextIs("^")) + { + EmitC(op_XOR); + GetToken(); + continue; + } + else + { + EmitC(op_END); + break; + } + } +} + +void HandleFunction() +{ + switch (funcidx) + { + case 0: vcfunc_Exit(); break; + case 1: Message(); break; + case 2: GenericFunc(3,1); break; + case 3: GenericFunc(4,1); break; + case 4: GenericFunc(5,1); break; + case 5: vc_loadimage(); break; + case 6: GenericFunc(7,5); break; + case 7: GenericFunc(8,5); break; + case 8: GenericFunc(9,0); break; + case 9: GenericFunc(10,0); break; + case 10: vc_AllocateEntity(); break; + case 11: GenericFunc(12,1); break; + case 12: vc_Map(); break; + case 13: vc_LoadFont(); break; + case 14: vc_PlayFLI(); break; + case 15: GenericFunc(16,2); break; + case 16: vc_PrintString(); break; + case 17: vc_LoadRaw(); break; + case 18: GenericFunc(19,4); break; + case 19: GenericFunc(20,1); break; + case 20: GenericFunc(21,7); break; + case 21: GenericFunc(22,0); break; + case 22: GenericFunc(23,0); break; + case 23: GenericFunc(24,1); break; + case 24: vc_EntityMove(); break; + case 25: GenericFunc(26,4); break; + case 26: GenericFunc(27,4); break; + case 27: GenericFunc(28,5); break; + case 28: GenericFunc(29,4); break; + case 29: GenericFunc(30,4); break; + case 30: GenericFunc(31,5); break; + case 31: GenericFunc(32,5); break; + case 32: vc_strlen(); break; + case 33: vc_strcmp(); break; + case 34: GenericFunc(35,0); break; + case 35: GenericFunc(36,1); break; + case 36: GenericFunc(37,1); break; + case 37: GenericFunc(38,1); break; + case 38: GenericFunc(39,3); break; + case 39: GenericFunc(40,2); break; + case 40: GenericFunc(41,1); break; + case 41: GenericFunc(42,1); break; + case 42: GenericFunc(43,3); break; + case 43: vc_HookRetrace(); break; + case 44: vc_HookTimer(); break; + case 45: GenericFunc(46,2); break; + case 46: vc_SetRString(); break; + case 47: GenericFunc(48,4); break; + case 48: GenericFunc(49,3); break; + case 49: GenericFunc(50,0); break; + case 50: vc_PartyMove(); break; + case 51: GenericFunc(52,1); break; + case 52: GenericFunc(53,1); break; + case 53: GenericFunc(54,1); break; + case 54: GenericFunc(55,0); break; + case 55: GenericFunc(56,1); break; + case 56: GenericFunc(57,1); break; + case 57: GenericFunc(58,5); break; + case 58: GenericFunc(59,5); break; + case 59: GenericFunc(60,2); break; + case 60: vc_HookKey(); break; + case 61: vc_PlayMusic(); break; + case 62: GenericFunc(63,0); break; + case 63: GenericFunc(64,5); break; + case 64: vc_OpenFile(); break; + case 65: GenericFunc(66,1); break; + case 66: vc_QuickRead(); break; + case 67: GenericFunc(68,1); break; + case 68: GenericFunc(69,1); break; + case 69: GenericFunc(70,0); break; + case 70: GenericFunc(71,0); break; + case 71: GenericFunc(72,7); break; + case 72: GenericFunc(73,15); break; + case 73: vc_CacheSound(); break; + case 74: GenericFunc(75,0); break; + case 75: GenericFunc(76,3); break; + case 76: GenericFunc(77,7); break; + case 77: GenericFunc(78,4); break; + case 78: GenericFunc(79,4); break; + case 79: vc_val(); break; + case 80: GenericFunc(81,7); break; + case 81: GenericFunc(82,5); break; + case 82: vc_Log(); break; + case 83: GenericFunc(84,2); break; + case 84: GenericFunc(85,2); break; + case 85: GenericFunc(86,3); break; + case 86: GenericFunc(87,1); break; + case 87: GenericFunc(88,1); break; + case 88: GenericFunc(89,1); break; + case 89: vc_fgetline(); break; + case 90: vc_fgettoken(); break; + case 91: vc_fwritestring(); break; + case 92: GenericFunc(93, 3); break; + case 93: vc_frename(); break; + case 94: vc_fdelete(); break; + case 95: vc_fwopen(); break; + case 96: GenericFunc(97, 1); break; + case 97: GenericFunc(98, 3); break; + case 98: GenericFunc(99, 3); break; + case 99: GenericFunc(100, 6); break; + case 100: GenericFunc(101, 0); break; + case 101: GenericFunc(102, 7); break; + case 102: GenericFunc(103, 1); break; + case 103: GenericFunc(104, 1); break; + case 104: GenericFunc(105, 1); break; + case 105: vc_asc(); break; + case 106: GenericFunc(107, 1); break; + case 107: vc_NumForScript(); break; + case 108: vc_FileSize(); break; + case 109: GenericFunc(110, 1); break; + case 110: GenericFunc(111, 0); break; + default: vcerr("Internal error. Unknown standard function."); + } +} + +void HandleUserFunction() +{ + int i, idx; + + idx=funcidx; + EmitW((short) idx); + Expect("("); + for (i=0; i")) { ot=i_GREATERTHAN; GetToken(); } + if (NextIs(">=")) { ot=i_GREATERTHANOREQUAL; GetToken(); } + if (NextIs("<")) { ot=i_LESSTHAN; GetToken(); } + if (NextIs("<=")) { ot=i_LESSTHANOREQUAL; GetToken(); } + + if (!ot) EmitC(i_NONZERO); + else if (ot==i_ZERO) EmitC(i_ZERO); + else + { + EmitC(ot); + EmitOperand(); + } +} + +void HandleIfGroup() +{ + while (1) + { + HandleIfComponent(); + + if (NextIs("&&")) + { + EmitC(i_AND); + GetToken(); + continue; + } + else if (NextIs("||")) + { + EmitC(i_OR); + GetToken(); + continue; + } + else + { + GetToken(); + if (!TokenIs(")") && !TokenIs(";")) + vcerr("Syntax error."); + EmitC(i_UNGROUP); + break; + } + } +} + +void ProcessIf() +{ + char *falseofs = 0; + char *elseofs = 0; + char *b = 0; + + EmitC(opIF); + Expect("("); + HandleIfGroup(); + + falseofs=code; + EmitD(0); // We'll come back to this and fix it up. + + if (!NextIs("{")) + { + DoSomething(); + if (NextIs("else")) + { + EmitC(opGOTO); + elseofs=code; + EmitD(0); + } + } + else + { + Expect("{"); + while (!NextIs("}")) DoSomething(); + Expect("}"); + if (NextIs("else")) + { + EmitC(opGOTO); + elseofs=code; + EmitD(0); + } + } + + b=code; // Put correct false-execution offset thingy. + code=falseofs; + EmitD((int) b - (int) outbuf); + code=b; + + if (NextIs("else")) + { + GetToken(); + if (!NextIs("{")) + { + DoSomething(); + } + else + { + Expect("{"); + while (!NextIs("}")) DoSomething(); + Expect("}"); + } + b=code; // Put correct else-execution offset thingy. + code=elseofs; + EmitD((int) b - (int) outbuf); + code=b; + } +} + +void ProcessWhile() +{ char *falseofs, *top, *b; + + top=code; + EmitC(opIF); + Expect("("); + HandleIfGroup(); + + falseofs=code; + EmitD(0); // We'll come back to this and fix it up. + + if (!NextIs("{")) + { + DoSomething(); + EmitC(opGOTO); + EmitD((int) top - (int) outbuf); + } + else + { + Expect("{"); + while (!NextIs("}")) DoSomething(); + Expect("}"); + EmitC(opGOTO); + EmitD((int) top - (int) outbuf); + } + + b=code; // Put correct false-execution offset thingy. + code=falseofs; + EmitD((int) b - (int) outbuf); + code=b; +} + +void ProcessFor() +{ char *src1, *src2, *loopstartpos, *srctmp; + + Expect("("); + while (!TokenIs(";")) + DoSomething(); // Emit initialization code. + + src1=src; // Store position of loop conditional + while (!NextIs(";")) GetToken(); GetToken(); + src2=src; // Store position of end-of-loop code + + while (!NextIs(")")) GetToken(); GetToken(); + loopstartpos=(char *) (int) code - (int) outbuf; + + if (!NextIs("{")) + { + DoSomething(); + } + else + { + Expect("{"); + while (!NextIs("}")) DoSomething(); + Expect("}"); + } + srctmp=src; + src=src2; + while (!TokenIs(")")) + DoSomething(); + src=src1; + EmitC(opIF); + HandleIfGroup(); + EmitD((int) code - (int) outbuf +9); + EmitC(opGOTO); + EmitD((int) loopstartpos); + + src=srctmp; +} + +void HandleAssign() +{ + int vc; + + vc=varcategory; + EmitC(opASSIGN); + if (vc==op_UVAR) + { + EmitC(op_UVAR); + EmitD(vars[varidx].varstartofs); + } + else if (vc==op_UVARRAY) + { + EmitC(op_UVARRAY); + EmitD(vars[varidx].varstartofs); + Expect("["); + EmitOperand(); + Expect("]"); + } + else if (vc==op_LVAR) + { + EmitC(op_LVAR); + EmitC((char) varidx); + } + else if (vc==op_HVAR0) + { + EmitC(op_HVAR0); + EmitC((char) varidx); + } + else if (vc==op_HVAR1) + { + EmitC(op_HVAR1); + EmitC((char) varidx); + Expect("["); + EmitOperand(); + Expect("]"); + } + else if (vc==op_STRING) + { + EmitC(op_STRING); + EmitW((short) str[varidx].vsofs); + } + else if (vc==op_SARRAY) + { + EmitC(op_SARRAY); + EmitW((short) str[varidx].vsofs); + Expect("["); + EmitOperand(); + Expect("]"); + } + else if (vc==op_SLOCAL) + { + EmitC(op_SLOCAL); + EmitW((short) varidx); + } + GetToken(); + if (TokenIs("++")) { EmitC(a_INC); GetToken(); return; } else + if (TokenIs("--")) { EmitC(a_DEC); GetToken(); return; } else + if (TokenIs("+=")) { EmitC(a_INCSET); } else + if (TokenIs("-=")) { EmitC(a_DECSET); } else + if (TokenIs("=")) { EmitC(a_SET); } else + vcerr("Invalid assignment operator."); + if (vc==op_STRING) HandleString(); + else if (vc==op_SARRAY) HandleString(); + else if (vc==op_SLOCAL) HandleString(); + else EmitOperand(); + GetToken(); +} + +int c=0; + +void HandleReturn() +{ + if (!vctype) + { + Expect(";"); + EmitC(opRETURN); + return; + } + if (!funcs[c].returntype) + { + Expect(";"); + EmitC(opRETURN); + return; + } + if (funcs[c].returntype==1) + { + EmitC(opSETRETVAL); + EmitOperand(); + Expect(";"); + EmitC(opRETURN); + return; + } +} + +void ProcessSwitch() +{ char *buf,*retrptr; + + EmitC(opSWITCH); + Expect("("); + EmitOperand(); + Expect(")"); + Expect("{"); + + // case .. option loop + + while (!NextIs("}")) + { + Expect("case"); + EmitC(opCASE); + EmitOperand(); + Expect(":"); + retrptr=code; + EmitD(0); + while (!NextIs("case") && !NextIs("}")) DoSomething(); + EmitC(opRETURN); + buf=code; + code=retrptr; + EmitD((int) buf - (int) outbuf); + code=buf; + } + Expect("}"); + EmitC(opRETURN); +} + +void DoSomething(void) +{ + GetToken(); + if (TokenIs("return")) { HandleReturn(); return; } + if (token_type==FUNCTION) { HandleFunctionType(); Expect(";"); return; } + if (token_type==IDENTIFIER) { HandleAssign(); return; } + if (TokenIs("if")) { ProcessIf(); return; } + if (TokenIs("while")) { ProcessWhile(); return; } + if (TokenIs("for")) { ProcessFor(); return; } + if (TokenIs("switch")) { ProcessSwitch(); return; } + vcerr("Unknown token."); +} + +void DumpSystemIdx() +{ FILE *f; + + vprint("Dumping system.idx index file."); + f=fopen("system.idx","wb"); + + fwrite(&numvars, 1, 4, f); + fwrite(&vars, sizeof vars / 500, numvars, f); + fwrite(&numfuncs, 1, 4, f); + fwrite(&funcs, sizeof funcs / 700, numfuncs, f); + fwrite(&numstr, 1, 4, f); + fwrite(&str, sizeof str / 300, numstr, f); + fclose(f); +} + +void ReadSystemIdx() +{ FILE *f; + + if (!(f=fopen("system.idx","rb"))) + err("Could not access system.idx."); + + fread(&numvars, 1, 4, f); + fread(&vars, sizeof vars / 500, numvars, f); + fread(&numfuncs, 1, 4, f); + fread(&funcs, sizeof funcs / 700, numfuncs, f); + fread(&numstr, 1, 4, f); + fread(&str, sizeof str / 300, numstr, f); + fclose(f); +} + +void DoLocalVariables(int c) +{ + int na; + + na=funcs[c].numargs; + while (NextIs("int") || NextIs("string")) + { + GetToken(); + if (TokenIs("int")) + { + funcs[c].argtype[na]=INT; + GetToken(); + memcpy(larg[na++], token, 40); + while (!NextIs(";")) + { + Expect(","); + funcs[c].argtype[na]=INT; + GetToken(); + memcpy(larg[na++], token, 40); + } + Expect(";"); + } + if (TokenIs("string")) + { + funcs[c].argtype[na]=STRING; + GetToken(); + memcpy(larg[na++], token, 40); + while (!NextIs(";")) + { + Expect(","); + funcs[c].argtype[na]=STRING; + GetToken(); + memcpy(larg[na++], token, 40); + } + Expect(";"); + } + } + funcs[c].numlocals=na; +} + +void CompileMAP(char *fname) +{ FILE *f; + int i; + + // Compiles a map-based VC. + i=strlen(fname); + memcpy(strbuf, fname, i); + strbuf[i]='.'; + strbuf[i+1]='V'; + strbuf[i+2]='C'; + strbuf[i+3]=0; + + PreProcess(strbuf); + + source=(char *) malloc(1000000); + memset(source, 0, 1000000); + outbuf=(char *) malloc(1000000); + memset(outbuf, 0, 1000000); + if (!(f=fopen("vcctemp.$$$","rb"))) + err("Could not open source file."); + fread(source, 1, 1000000, f); + fclose(f); + + ReadSystemIdx(); + + src=source; + code=outbuf; + vctype=0; + + while (*src) + { + functbl[mfuncs]=(char *) (int) code - (int) outbuf; + mfuncs++; + Expect("event"); + Expect("{"); + while (!NextIs("}")) DoSomething(); + Expect("}"); + EmitC(opRETURN); + ParseWhitespace(); + } + dprint("%s.vc (%i lines)", fname, lines); +} + +void SkipBrackets() +{ + while (!NextIs("}")) + { + if (!*src) + err("No matching bracket."); + GetToken(); + if (TokenIs("{")) SkipBrackets(); + } + GetToken(); +} + +void CheckDup() +{ + int i=0; // bitch! + + while (i +#include +#include +#include "compile.h" +#include "funclib.h" +#include "vcc.h" +#include "vccode.h" +#include "lexical.h" + +// ================================= Data ==================================== + +// ================================= Code ==================================== + +void vcfunc_Exit() +{ + EmitC(1); + Expect("("); + HandleString(); + Expect(")"); +} + +void Message() +{ + EmitC(2); + Expect("("); + HandleString(); + Expect(","); + EmitOperand(); + Expect(")"); +} + +void vc_loadimage() +{ + EmitC(6); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_AllocateEntity() +{ + EmitC(11); + Expect("("); + EmitOperand(); + Expect(","); + EmitOperand(); + Expect(","); + HandleString(); + Expect(")"); +} + +void vc_Map() +{ + EmitC(13); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_LoadFont() +{ + EmitC(14); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_PlayFLI() +{ + EmitC(15); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_PrintString() +{ + EmitC(17); + Expect("("); + EmitOperand(); + Expect(","); + HandleString(); + Expect(")"); +} + +void vc_LoadRaw() +{ + EmitC(18); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_EntityMove() +{ + EmitC(25); + Expect("("); + EmitOperand(); + Expect(","); + HandleString(); + Expect(")"); +} + +void vc_strlen() +{ + EmitC(33); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_strcmp() +{ + EmitC(34); + Expect("("); + HandleString(); + Expect(","); + HandleString(); + Expect(")"); +} + +void vc_SetRString() +{ + EmitC(47); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_PartyMove() +{ + EmitC(51); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_PlayMusic() +{ + EmitC(62); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_OpenFile() +{ + EmitC(65); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_HookRetrace() +{ + char *na; + + EmitC(44); + Expect("("); + na=src; + GetToken(); + if (token_subtype == op_UFUNC) + { + EmitC(2); + EmitD(funcidx); + } + else + { + src=na; + EmitC(1); + EmitOperand(); + } + Expect(")"); +} + +void vc_HookTimer() +{ + char *na; + + EmitC(45); + Expect("("); + na=src; + GetToken(); + if (token_subtype == op_UFUNC) + { + EmitC(2); + EmitD(funcidx); + } + else + { + src=na; + EmitC(1); + EmitOperand(); + } + Expect(")"); +} + +void vc_HookKey() +{ + char *na; + + EmitC(61); + Expect("("); + EmitOperand(); + Expect(","); + na=src; + GetToken(); + if (token_subtype == op_UFUNC) + { + EmitC(2); + EmitD(funcidx); + } + else + { + src=na; + EmitC(1); + EmitOperand(); + } + Expect(")"); +} + +void vc_QuickRead() +{ + EmitC(67); + Expect("("); + HandleString(); + Expect(","); + GetToken(); + if (varcategory == op_STRING) + { + EmitC(op_STRING); + EmitW(str[varidx].vsofs); + Expect(","); + EmitOperand(); + Expect(")"); + return; + } + if (varcategory == op_SARRAY) + { + EmitC(op_SARRAY); + EmitW(str[varidx].vsofs); + Expect("["); + EmitOperand(); + Expect("]"); + Expect(","); + EmitOperand(); + Expect(")"); + return; + } + vcerr("String variable expected."); +} + +void vc_CacheSound() +{ + EmitC(74); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_val() +{ + EmitC(80); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_Log() +{ + EmitC(83); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_fgetline() +{ + EmitC(90); + Expect("("); + GetToken(); + if (varcategory == op_STRING) + { + EmitC(op_STRING); + EmitW(str[varidx].vsofs); + Expect(","); + EmitOperand(); + Expect(")"); + return; + } + if (varcategory == op_SARRAY) + { + EmitC(op_SARRAY); + EmitW(str[varidx].vsofs); + Expect("["); + EmitOperand(); + Expect("]"); + Expect(","); + EmitOperand(); + Expect(")"); + return; + } + vcerr("String variable expected."); +} + +void vc_fgettoken() +{ + EmitC(91); + Expect("("); + GetToken(); + if (varcategory == op_STRING) + { + EmitC(op_STRING); + EmitW(str[varidx].vsofs); + Expect(","); + EmitOperand(); + Expect(")"); + return; + } + if (varcategory == op_SARRAY) + { + EmitC(op_SARRAY); + EmitW(str[varidx].vsofs); + Expect("["); + EmitOperand(); + Expect("]"); + Expect(","); + EmitOperand(); + Expect(")"); + return; + } + vcerr("String variable expected."); +} + +void vc_fwritestring() +{ + EmitC(92); + Expect("("); + HandleString(); + Expect(","); + EmitOperand(); + Expect(")"); +} + +void vc_frename() +{ + EmitC(94); + Expect("("); + HandleString(); + Expect(","); + HandleString(); + Expect(")"); +} + +void vc_fdelete() +{ + EmitC(95); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_fwopen() +{ + EmitC(96); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_asc() +{ + EmitC(106); + Expect("("); + HandleString(); + Expect(")"); +} + +void vc_NumForScript() +{ + EmitC(108); + Expect("("); + GetToken(); + if (token_subtype == op_UFUNC) + EmitD(funcidx); + else vcerr("system script expected."); + Expect(")"); +} + +void vc_FileSize() +{ + EmitC(109); + Expect("("); + HandleString(); + Expect(")"); +} + +void GenericFunc(unsigned char idcode, int numargs) +{ char i; + + EmitC(idcode); + if (!numargs) + { + Expect("("); + Expect(")"); + return; + } + if (numargs==1) + { + Expect("("); + EmitOperand(); + Expect(")"); + return; + } + Expect("("); + for (i=1; i +// + ConvHexToDec() was severely screwed (would not return correct values at +// *all*; own fault)--fixed +// +// + fixed some problems with tick mark parsing. didn't like certain chars. +// +// + fixed floating point exception crash in ConvHexToDec(), which occured +// when using very large hex numbers (i think; like $ffffffff). was due to +// use of pow() +// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + +#include +#include +#include +#include +#include "compile.h" +#include "vcc.h" +#include "vccode.h" + +// ================================= Data ==================================== + +// Character types + +#define LETTER 1 +#define DIGIT 2 +#define SPECIAL 3 + +// --------------- + +char token[2000]; // Token buffer +int token_nvalue; // int value of token if it's type DIGIT +char token_type; // type of current token. +char token_subtype; // This is just crap. +unsigned char chr_table[256]; // Character type table. + +int lines, tlines; // current line number being processed in +char *source_file; // the current source file + +// ---------------- + +char *hardfuncs[]= +{ + // A + "exit", "message", "malloc", + "free", "pow", "loadimage", + "copysprite", "tcopysprite", "render", + "showpage", "entityspawn", "setplayer", + "map", "loadfont", "playfli", + + // B + "gotoxy", "printstring", "loadraw", + "settile", "allowconsole", "scalesprite", + "processentities", "updatecontrols", "unpress", + "entitymove", "hline", "vline", + "line", "circle", "circlefill", // 30 + + // C + "rect", "rectfill", "strlen", + "strcmp", "cd_stop", "cd_play", + "fontwidth", "fontheight", "setpixel", + "getpixel", "entityonscreen", "random", + "gettile", "hookretrace", "hooktimer", + + // D + "setresolution", "setrstring", "setcliprect", + "setrenderdest", "restorerendersettings","partymove", + "sin", "cos", "tan", + "readmouse", "setclip", "setlucent", + "wrapblit", "twrapblit", "setmousepos", // 60 + + // E + "hookkey", "playmusic", "stopmusic", + "palettemorph", "fopen", "fclose", + "quickread", "addfollower", "killfollower", + "killallfollowers", "resetfollowers", "flatpoly", + "tmappoly", "cachesound", "freeallsounds", + + // F + "playsound", "rotscale", "mapline", + "tmapline", "val", "tscalesprite", + "grabregion", "log", "fseekline", + "fseekpos", "fread", "fgetbyte", + "fgetword", "fgetquad", "fgetline", // 90 + + // G + "fgettoken", "fwritestring", "fwrite", + "frename", "fdelete", "fwopen", + "fwclose", "memcpy", "memset", + "silhouette", "initmosaictable", "mosaic", + "writevars", "readvars", "callevent", // 105 + + // H + "asc", "callscript", "numforscript", + "filesize", "ftell", "checkcorrupt" + }; + +char returntypes[]= +{ + // A + 0, 0, 1, + 0, 1, 1, + 0, 0, 0, + 0, 1, 0, + 0, 1, 0, + + // B + 0, 0, 1, + 0, 0, 0, + 0, 0, 0, + 0, 0, 0, + 0, 0, 0, + + // C + 0, 0, 1, + 1, 0, 0, + 1, 1, 0, + 1, 1, 1, + 1, 0, 0, + + // D + 0, 0, 0, + 0, 0, 0, + 1, 1, 1, + 0, 0, 0, + 0, 0, 0, + + // E + 0, 0, 0, + 0, 1, 0, + 0, 0, 0, + 0, 0, 0, + 0, 1, 0, + + // F + 0, 0, 0, + 0, 1, 0, + 0, 0, 0, + 0, 0, 1, + 1, 1, 0, + + // G + 0, 0, 0, + 0, 0, 1, + 0, 0, 0, + 0, 1, 0, + 0, 0, 0, + + // H + 1, 0, 1, + 1, 1, 0 +}; + +char *hardvar0[]= +{ + "xwin", "ywin", "cameratracking", + "timer", "up", "down", + "left", "right", "b1", + "b2", "b3", "b4", + "screenx", "screeny", "player", // 15 + + "numentsonscreen", "tracker", "mx", + "my", "mb", "vctrace", + "image_width", "image_height", "music_volume", // 24 + "vsp", "lastent", "last_pressed" +}; + +char *hardvar1[]= +{ + "screen", "entity.x", "entity.y", + "entity.tx", "entity.ty", "entity.facing", + "entity.moving", "entity.specframe", "entity.speed", + "entity.movecode", "entsonscreen", "key", + "layer.hline", "byte", "word", // 15 + + "quad", "pal", "sbyte", + "sword", "squad" +}; + +int funcidx = 0; +int varcategory = 0; + +int numhardfuncs = 111; +int numhardvar0 = 27; +int numhardvar1 = 20; + +// ================================= Code ==================================== + +int streq(char *a, char *b) +{ + while (*a) + { + if (*a++ != *b++) + return 0; + } + return (*b==0); +} + +char TokenIs(char *str) + { return streq(str,token); } + +void ParseWhitespace(void) +{ + while (1) + { + while (*src<=' ' && *src>2) + if (!*src++) + return; + + if (src[0]=='/' && src[1]=='/') + { + while (*src && (*src != '\n')) + src++; + continue; + } + + if (src[0]=='/' && src[1]=='*') + { + while (!(src[0]=='*' && src[1]=='/')) + { + src++; + if (!*src) + return; + if (*src == 1) + { + src++; + source_file = src; + while (*src++); + tlines++; + continue; + } + if (*src==2) + { + src++; + lines = (int) *(int *)src; + src += 4; + continue; + } + } + src+=2; + continue; + } + + if (*src == 1) + { + src++; + source_file = src; + while (*src++); + continue; + } + if (*src==2) + { + src++; + lines = (int) *(int *)src; + src += 4; + tlines++; + continue; + } + break; + } +} + +int GetStringIdx(char i) +{ + int j, k=0; + + for (j=0; j1) varcategory=op_UVARRAY; + } + i=0; + while (i1) varcategory=op_SARRAY; + } +} + +void GetIdentifier(void) +{ + int i; + + i=0; + while ((chr_table[*src] == LETTER) || (chr_table[*src] == DIGIT)) + token[i++] = *src++; + token[i]=0; + strlwr(token); + CheckLibFunc(); +} + +void ConvHexToDec() +{ + static const char *const hextbl="0123456789abcdef\0"; + static int pow_lut[]={1,16,256,4096,65536,1048576,16777216,268435456}; + int i=0, pos=0, z=0; + unsigned int j=0; + + if (strlen(token)>9) + vcerr("Hex number exceeds 8 digit maximum."); + + strlwr(token); + i=strlen(token)-1; + token_nvalue=0; + for (pos=0; i>0; pos++,i--) + { + z=token[i]; + for (j=0; j<16; j++) + if (hextbl[j]==z) break; + if (j>=16) + vcerr("Invalid hex number."); + token_nvalue += (j * pow_lut[pos]); + } +} + +void DoTickMarks() +{ + token_nvalue=token[1]; +} + +void GetNumber() +{ + int i; + + if ('\'' == *src) + { + token[0]=*src++; + token[1]=*src++; + token[2]=*src++; + token[3]=0; + } + else + { + i=0; + while (chr_table[*src] != SPECIAL) + token[i++]=*src++; + token[i]=0; + } + if (token[0]=='$') ConvHexToDec(); + else if (token[0]=='\'') DoTickMarks(); + else token_nvalue=atoi(token); +} + +void GetPunctuation() +{ char c; + + c=*src; + switch (c) + { + case '(': token[0]='('; token[1]=0; src++; break; + case ')': token[0]=')'; token[1]=0; src++; break; + case '{': token[0]='{'; token[1]=0; src++; break; + case '}': token[0]='}'; token[1]=0; src++; break; + case '[': token[0]='['; token[1]=0; src++; break; + case ']': token[0]=']'; token[1]=0; src++; break; + case ',': token[0]=','; token[1]=0; src++; break; + case ':': token[0]=':'; token[1]=0; src++; break; + case ';': token[0]=';'; token[1]=0; src++; break; + case '/': token[0]='/'; token[1]=0; src++; break; + case '*': token[0]='*'; token[1]=0; src++; break; + case '^': token[0]='^'; token[1]=0; src++; break; + case '%': token[0]='%'; token[1]=0; src++; break; + case '\"': token[0]='\"'; token[1]=0; src++; break; + case '+' : token[0]='+'; + src++; + if (*src=='+') + { token[1]='+'; + src++; } + else if (*src=='=') + { token[1]='='; + src++; } + else token[1]=0; + token[2]=0; + break; + case '-' : token[0]='-'; + src++; + if (*src=='-') + { token[1]='-'; + src++; } + else if (*src=='=') + { token[1]='='; + src++; } + else token[1]=0; + token[2]=0; + break; + case '>' : token[0]='>'; + src++; + if (*src=='=') + { token[1]='='; + token[2]=0; + src++; break; } + if (*src=='>') + { token[1]='>'; + token[2]=0; + src++; break; } + token[1]=0; + break; + case '<': token[0]='<'; + src++; + if (*src=='=') + { token[1]='='; + token[2] = 0; + src++; break; } + if (*src=='<') + { token[1]='<'; + token[2] = 0; + src++; break; } + token[1]=0; + break; + case '!': token[0]='!'; + src++; + if (*src=='=') + { token[1]='='; + token[2]=0; + src++; break; } + token[1]=0; + break; + case '=': token[0]='='; + src++; + if (*src=='=') + { token[1]=0; + src++; } + else token[1]=0; + break; + case '&': token[0]='&'; + src++; + if (*src=='&') + { token[1]='&'; + token[2]=0; + src++; break; } + token[1]=0; + break; + case '|': token[0]='|'; + src++; + if (*src=='|') + { token[1]='|'; + token[2]=0; + src++; break; } + token[1]=0; + break; + default: src++; // This should be an error. + } +} + +void GetString(void) +{ + int i; + + // Expects a "quoted" string. Places the contents of the string in + // token[] but does not include the quotes. + + Expect("\""); + i=0; + while (*src!='\"') + { + token[i++]=*src++; + if (i>250) + vcerr("String exceeds 250 character maximum."); + } + src++; + token[i]=0; +} + +void GetToken(void) +{ + int i; + + // Simply reads in the next statement and places it in the + // token buffer. + + ParseWhitespace(); + i=0; + + switch (chr_table[*src]) + { + case LETTER: { token_type = IDENTIFIER; GetIdentifier(); break; } + case DIGIT: { token_type = DIGIT; GetNumber(); break; } + case SPECIAL: { token_type = CONTROL; GetPunctuation(); break; } + } + + if (!*src && inevent) + err("Unexpected end of file"); +} + +void Expect(char *str) +{ + GetToken(); + if (TokenIs(str)) return; + vcerr("error: %s expected, %s got", str, token); +} + +int ExpectNumber() +{ + GetToken(); + if (token_type!=DIGIT) err("error: Numerical value expected"); + return token_nvalue; +} + +void InitCompileSystem() +{ int i; + + vprint("Building chr_table[]."); + for (i=0; i<256; i++) chr_table[i]=SPECIAL; + for (i='0'; i<='9'; i++) chr_table[i]=DIGIT; + for (i='A'; i<='Z'; i++) chr_table[i]=LETTER; + for (i='a'; i<='z'; i++) chr_table[i]=LETTER; + + chr_table[10]=0; + chr_table[13]=0; + chr_table[' ']=0; + chr_table['_']=LETTER; + chr_table['.']=LETTER; + chr_table['$']=DIGIT; + chr_table[39]=DIGIT; +} + +char lasttoken[2048]; + +int NextIs(char *str) +{ char *ptr,tt,tst; + int i,nv; + + ptr=src; + tt=token_type; + tst=token_subtype; + nv=token_nvalue; + memcpy(lasttoken, token, 2048); + GetToken(); + src=ptr; + token_nvalue=nv; + tst=token_subtype; + tt=token_type; + //if (!strcmp(str,token)) i=1; else i=0; + i=streq(str,token); + memcpy(token, lasttoken, 2048); + return i; +} diff --git a/16/v2/source/verge/VCC/LEXICAL.H b/16/v2/source/verge/VCC/LEXICAL.H new file mode 100644 index 00000000..7f9d02bb --- /dev/null +++ b/16/v2/source/verge/VCC/LEXICAL.H @@ -0,0 +1,47 @@ +/* +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. +*/ + +#if !defined(__LEXICAL_INC) +#define __LEXICAL_INC + +extern void ParseWhitespace(); +extern void GetNumber(); +extern void GetToken(); +extern void InitCompileSystem(); +extern int NextIs(char *str); + +extern void GetString(void); + +extern char token[2000]; // Token buffer +extern unsigned int token_nvalue; // int value of token if it's type DIGIT +extern char token_type; // type of current token. +extern char token_subtype; // This is just crap. +extern unsigned char chr_table[256]; // Character type table. +extern char returntypes[]; +extern int lines, tlines; +extern char *source_file; + +extern char TokenIs(char *str); +extern void Expect(char *str); + +extern int numhardfuncs, funcidx; +extern int varcategory, numhardvar0; +extern int numhardvar1; +extern char *hardfuncs[]; +extern char *hardvar0[]; +extern char *hardvar1[]; + +#endif // __LEXICAL_INC diff --git a/16/v2/source/verge/VCC/MAKEDJ.BAT b/16/v2/source/verge/VCC/MAKEDJ.BAT new file mode 100644 index 00000000..1804dc67 --- /dev/null +++ b/16/v2/source/verge/VCC/MAKEDJ.BAT @@ -0,0 +1,7 @@ +@echo off +if exist vcc.exe del vcc.exe +gcc -s -Wall -Werror -m486 -O3 vcc.c preproc.c lexical.c compile.c funclib.c -o dj\vcc.exe +rem gcc -Wall -Werror -pg vcc.c preproc.c lexical.c compile.c funclib.c -o dj\vcc +if not exist dj\vcc.exe goto end +if exist ..\djp.exe djp dj\vcc.exe +:end diff --git a/16/v2/source/verge/VCC/PREPROC.C b/16/v2/source/verge/VCC/PREPROC.C new file mode 100644 index 00000000..f930e857 --- /dev/null +++ b/16/v2/source/verge/VCC/PREPROC.C @@ -0,0 +1,799 @@ +/* +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. +*/ + +// ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +// ³ The VergeC Compiler version 2.01 ³ +// ³ Copyright (C)1998 BJ Eirich (aka vecna) ³ +// ³ Pre Processor module ³ +// ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + +// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +// CHANGELOG: +// +// + fixed incorrect file markers and last character omission. +// + one more incorrect file marker fix; was not restoring correctly after +// #included files. +// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + +#ifdef __WATCOMC__ +#include +#endif + +#include +#include +#include +#include +#include + +#include "vcc.h" +#include "lexical.h" + +int pp_dump; +int pp_nomark; +static int pp_tempct = 0; + +typedef struct + { + char *sym; + int sym_len; + + char *resolve; + int resolve_len; + + } pp_def; + +typedef struct + { + char *filename; + char *data; + + } pp_include; + +void Process(char *filename); +char *pp_token(char *p); + +//////////////////////////////////////////////////////////////////////////// +// DATA //////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// + +pp_def *pp_defarr = NULL; + +int pp_num_defs = 0; +int pp_defs_allocated = 0; +int PP_DEFS_BLOCK = 25; + +pp_include pp_incarr[100]; +//pp_include *pp_icur = NULL; // get rid of this +char *cur_filename=0; +char *last_filename=0; + +int pp_num_includes = 0; + +int pp_line = 0; +int pp_total_lines = 0; + +const int EOF_CHAR = 0x00; + +char pp_chr_table[256]; + +enum + { + PP_ERROR, + PP_WHITE, + PP_PUNC, + PP_DIGIT, + PP_LETTER, + PP_QUOTE, + PP_DIRECTIVE, + PP_NEWLINE, + PP_EOF + }; + +FILE *pp_out = NULL; + +char pp_tok[1024]; +int pp_toktype = 0; + +int pp_last_delim = 1; + +//////////////////////////////////////////////////////////////////////////// +// CODE //////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// + +int logging=1; +void log(char *str) +{ + if (logging) + { + FILE *fp = fopen("error.log", "a"); + fprintf(fp, str); + fflush(fp); + fclose(fp); + } +} + +void init_pp_chr_table() +{ + int x; + + memset(pp_chr_table, PP_ERROR, 256); + + pp_chr_table[EOF_CHAR] = PP_EOF; + + for (x='A'; x<='Z'; x++) pp_chr_table[x] = PP_LETTER; + for (x='a'; x<='z'; x++) pp_chr_table[x] = PP_LETTER; + pp_chr_table['_'] = PP_LETTER; + pp_chr_table['.'] = PP_LETTER; + + for (x='0'; x<='9'; x++) pp_chr_table[x] = PP_DIGIT; + pp_chr_table['$'] = PP_DIGIT; + pp_chr_table['\''] = PP_DIGIT; + + pp_chr_table['+'] = pp_chr_table['-'] = PP_PUNC; + pp_chr_table['*'] = pp_chr_table['/'] = PP_PUNC; + pp_chr_table['%'] = PP_PUNC; + pp_chr_table['|'] = pp_chr_table['&'] = PP_PUNC; + pp_chr_table['='] = pp_chr_table['^'] = PP_PUNC; + pp_chr_table[','] = PP_PUNC; + pp_chr_table['<'] = pp_chr_table['>'] = PP_PUNC; + pp_chr_table['('] = pp_chr_table[')'] = PP_PUNC; + pp_chr_table['['] = pp_chr_table[']'] = PP_PUNC; + pp_chr_table['{'] = pp_chr_table['}'] = PP_PUNC; + pp_chr_table[':'] = pp_chr_table[';'] = PP_PUNC; + pp_chr_table['\\'] = pp_chr_table['!'] = PP_PUNC; + + pp_chr_table[' '] = pp_chr_table['\t'] = PP_WHITE; + pp_chr_table['\r'] = PP_WHITE; + + pp_chr_table['\n'] = PP_NEWLINE; + + pp_chr_table['\"'] = PP_QUOTE; + + pp_chr_table['#'] = PP_DIRECTIVE; +} + +void pp_line_marker() +{ + if (pp_nomark) return; + + fputc(2, pp_out); + fwrite(&pp_line, 1, 4, pp_out); +} + +void pp_file_marker() +{ + if (pp_nomark) return; + + fputc(1, pp_out); + fwrite(cur_filename, 1, strlen(cur_filename)+1, pp_out); +} + +void pp_error(const char *error, ...) +{ + va_list lst; + char string[1024]; + + va_start (lst, error); + vsprintf (string, error, lst); + va_end (lst); + + printf ("*preproc error* "); + err (string); +} + +void pp_line_error(const char *error, ...) +{ + va_list lst; + char string[1024]; + + va_start (lst, error); + vsprintf (string, error, lst); + va_end (lst); + + printf ("%s(%d) ", cur_filename, pp_line); + pp_error (string); +} + +int pp_is_punc(int c) + { return (PP_PUNC == pp_chr_table[c]); } + +int pp_is_letter(int c) + { return (PP_LETTER == pp_chr_table[c]); } + +int pp_is_digit(int c) + { return (PP_DIGIT == pp_chr_table[c]); } + +int pp_is_ident(int c) + { return (pp_is_letter(c) || pp_is_digit(c)); } + +int pp_is_white(int c) + { return (PP_WHITE == pp_chr_table[c]); } + +int pp_is_directive(int c) + { return (PP_DIRECTIVE == pp_chr_table[c]); } + +int pp_is_eof(int c) + { return (PP_EOF == pp_chr_table[c]); } + +pp_def *pp_def_add(char *sym, char *resolve) +{ + pp_def *pp = NULL; + pp_def *p = NULL; + + if (!(pp_defs_allocated % PP_DEFS_BLOCK)) + { + pp_defs_allocated += PP_DEFS_BLOCK; + + p = (pp_def *)realloc( + pp_defarr, pp_defs_allocated * sizeof(pp_def)); + if (!p) pp_error("unable to grow #define list"); + + pp_defarr = p; + } + + pp = &pp_defarr[pp_num_defs]; + ++pp_num_defs; + + pp->sym = (char *)malloc(strlen(sym) +1); + if (!pp->sym) + pp_error("memory exhausted"); + strcpy(pp->sym, sym); + pp->sym_len = strlen(sym); + + pp->resolve = (char *)malloc(strlen(resolve) +1); + if (!pp->resolve) + pp_error("memory exhausted"); + strcpy(pp->resolve, resolve); + pp->resolve_len = strlen(resolve); + + return pp; +} + +pp_include *pp_include_add(char *filename) +{ + FILE *in = NULL; + pp_include *pp = NULL; + int z = 0; + + if (pp_num_includes) + { + int i; + for (i=0; idata = (char *)malloc((z +2) * sizeof(char)); + if (!pp->data) pp_error("memory exhausted"); + fread(pp->data, 1, z, in); + fclose(in); + + pp->data[z++] = 32; // + pp->data[z] = EOF_CHAR; + + pp->filename = (char *)malloc(strlen(filename) +1); + if (!pp->filename) pp_error("memory exhausted"); + strcpy(pp->filename, filename); + cur_filename=pp->filename; + + return pp; +} + +char *pp_skip_c_comment(char *p) +{ + p += 2; + while (*p && ('*' != *p || '/' != p[1])) + { + if ('\n' == *p) + { + ++pp_line; + pp_line_marker(); + } + if ('/' == *p && '*' == p[1]) + p = pp_skip_c_comment(p); + else ++p; + } + if (*p) p += 2; + + return p; +} + +char *pp_skip_cpp_comment(char *p) +{ + p += 2; + while (*p && '\n' != *p) + ++p; + if (*p) + { + ++p; + + ++pp_line; + pp_line_marker(); + } + + return p; +} + +char *pp_skipwhite(char *p) +{ + for (;;) + { + while (*p && PP_WHITE == pp_chr_table[(int) *p]) + ++p; + + if ('\n' == *p) + { + ++p; + + ++pp_line; + pp_line_marker(); + continue; + } + + // skip comments + if ('/' == *p) + { + switch (p[1]) + { + case '/': p = pp_skip_cpp_comment(p); continue; + case '*': p = pp_skip_c_comment(p); continue; + } + } + + break; + } + + return p; +} + +char *pp_token_punc(char *p) +{ + char *s = pp_tok; + + do { + *s++ = *p++; + } while (*p && pp_is_punc(*p)); + *s = 0; + + return p; +} + +/* +int is_hex(int c) +{ + return ( + (c >= '0' && c <= '9') + || (c >= 'A' && c <= 'F') + || (c >= 'a' && c <= 'f')); +} +*/ + +char *pp_token_digit(char *p) +{ + char *s = pp_tok; + + if ('\'' == *p) + { + *s++ = *p++; + if (!*p) return NULL; + *s++ = *p++; + if (!*p) return NULL; + *s++ = *p++; + if (!*p) return NULL; + *s = 0; + } + else + { + do { + *s++ = *p++; + } while (*p && pp_is_digit(*p)); + if (*p) *s = 0; + } + + return p; +} + +char *pp_token_letter(char *p) +{ + char *s = pp_tok; + + do { + *s++ = *p++; + } while (*p && pp_is_ident(*p)); + if (*p) *s = 0; + + return p; +} + +char *pp_token_directive(char *p) +{ + char *s = pp_tok; + + ++p; // skip # + + // directive name + do { + *s++ = *p++; + } while (pp_is_ident(*p)); + *s = 0; + + // #include + if (!strcmp(pp_tok, "include")) + { + // boogly boogly boogly! + int l = 0; + char *e = NULL; + + //printf("#include detected \n"); + + // any whitespace after 'include' + p = pp_skipwhite(p); + + // skip, but don't expect, a " + if ('\"' == *p) ++p; + + // grab the filename + e = pp_tok; + while (*p && '\"' != *p) + *e++ = *p++; + // if we didn't hit eof...? + if (*p) + { + // zero term filename + *e = 0; + // skip closing " + ++p; + + last_filename=cur_filename; // + l = pp_line; // save + Process(pp_tok); + pp_line = l; // restore + cur_filename=last_filename; // + // reset file marker + pp_file_marker(); + + // disregard rest of line + while (*p && '\n' != *p) + ++p; + // if we didn't hit eof...? + if (*p) + { + // skip newline char + ++p; + + // update line + ++pp_line; + pp_line_marker(); + + // dump null token... writes nothing i think... + pp_tok[0]='\0'; + } + //else pp_error("screw you!"); + } + } + // #define + else if (!strcmp(pp_tok, "define")) + { + char *e = NULL; + char sym[256]; + char resolve[1024]; + + // find start of symbol + while (' ' == *p || '\t' == *p) + ++p; + + // parse symbol + e = sym; + while (pp_is_ident(*p)) + { *e++ = *p++; } + *e = 0; + + // check for duplicate #defines + if (pp_num_defs) + { + int i; + int z = strlen(sym); + for (i=0; i", *p, *p); + } + + return p; +} + +void Process(char *filename) +{ + char *s = NULL; + pp_include *ppi = NULL; + + // starts fresh for each #include file + pp_line = 1; + //pp_line_marker(); // hmm... did this kill the wat ver? i forget.. + + // push file + ppi = pp_include_add(filename); + s = ppi->data; + + pp_file_marker(); + + pp_last_delim = 1; + s = pp_token(s); + + // loop until we hit an EOF token + while (*s && PP_EOF != pp_toktype) + { + // for compactor; this is absolutely required for the parsing to + // work correctly for hex numbers + if (PP_LETTER == pp_toktype || PP_DIGIT == pp_toktype) + { + if (!pp_last_delim) + fputc(' ', pp_out); + } + + if (pp_num_defs) + { + // #define replacement + if (PP_LETTER == pp_toktype) + { + pp_def *ppd = NULL; + int pp_token_len = strlen(pp_tok); + int i = 0; + + for (i=0; isym_len == pp_token_len) + { + // lengths match, compare bytes + if (!stricmp(pp_tok, ppd->sym)) + { + // match! overwrite token with resolve + memcpy(pp_tok, ppd->resolve, strlen(ppd->resolve)+1); + break; + } + } + } + } + } + + // write whatever we got + fwrite(pp_tok, 1, strlen(pp_tok), pp_out); + + pp_last_delim = (PP_LETTER != pp_toktype); + s = pp_token(s); + } + + // pop file + free(ppi->data); + free(ppi->filename); + --pp_num_includes; + //pp_icur = &pp_incarr[pp_num_includes]; // oops! :-) + + pp_total_lines += pp_line; +} + +void pp_dump_output() +{ + char strx[1024]; + + sprintf(strx, "copy vcctemp.$$$ vcc%i.$$$", pp_tempct); + ++pp_tempct; + + system(strx); +} + +void PreProcess(char *filename) +{ + pp_num_includes = 0; + init_pp_chr_table(); + + pp_out = fopen("VCCTEMP.$$$", "wb"); + if (!pp_out) pp_error("unable to open VCCTEMP.$$$"); + + Process(filename); + + fclose(pp_out); + + // dump preproc output? + if (0 != pp_dump) + pp_dump_output(); +} diff --git a/16/v2/source/verge/VCC/PREPROC.H b/16/v2/source/verge/VCC/PREPROC.H new file mode 100644 index 00000000..e5f8784d --- /dev/null +++ b/16/v2/source/verge/VCC/PREPROC.H @@ -0,0 +1,23 @@ +/* +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. +*/ + +#if !defined(__PREPROC_INC) +#define __PREPROC_INC + +extern void PreProcess(char *fname); +extern void Process(char *fname); + +#endif // __PREPROC_INC diff --git a/16/v2/source/verge/VCC/VCC.C b/16/v2/source/verge/VCC/VCC.C new file mode 100644 index 00000000..0a8a5c33 --- /dev/null +++ b/16/v2/source/verge/VCC/VCC.C @@ -0,0 +1,342 @@ +/* +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. +*/ + +// ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +// ³ The VergeC Compiler ³ +// ³ Copyright (C)1998 BJ Eirich (aka vecna) ³ +// ³ Main module ³ +// ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + +#define VERSION "2.01c" + +#ifdef __DJGPP__ +#define BUILD_TAG "DJGPP V2\0" +#endif + +#ifdef __WATCOMC__ +#define BUILD_TAG "Watcom 11.0\0" +#endif + +#include +#include +#include +#include +#include + +#include "compile.h" +#include "lexical.h" + +extern int pp_dump; +extern int pp_nomark; + +// ================================= Data ==================================== + +char outmode, cmode; +char fname[80]; +char quiet, verbose; +char *strbuf; +int locate=0; + +// -- locals -- + +//FILE *f; +//int i; +//struct find_t *ft; + +// ================================= Code ==================================== + +void dprint(char *message, ...) +{ + va_list lst; + char string[1024]; + + if (quiet) return; + + // compose message + va_start (lst, message); + vsprintf (string, message, lst); + va_end (lst); + + printf ("%s \n", string); +} + +void vprint(char *message, ...) +{ + va_list lst; + char string[1024]; + + if (!verbose) return; + + // compose message + va_start (lst, message); + vsprintf (string, message, lst); + va_end (lst); + + printf ("%s \n", string); +} + +void err(char *message, ...) +{ + va_list lst; + char string[1024]; + + // compose message + va_start (lst, message); + vsprintf (string, message, lst); + va_end (lst); + + if (quiet) + { + FILE *efile = fopen("ERROR.TXT", "w"); + + fprintf(efile, "%s \n", string); + fclose(efile); + } + else + { + printf("%s \n", string); + } + + remove("vcctemp.$$$"); + exit(-1); +} + +void vcerr(char *message, ...) +{ + va_list lst; + char string[1024]; + + // compose message + va_start (lst, message); + vsprintf (string, message, lst); + va_end (lst); + + err("%s(%d) %s", source_file, lines, string); +} + +void vcc_compile_mode_map(char *filename) +{ + FILE *o=0; + FILE *f=0; + char *x=0; + int z=0; + + x = filename; + while ('.' != *x) ++x; + *x = 0; + + CompileMAP(filename); + + sprintf(strbuf, "%s.map", filename); + f = fopen(strbuf, "rb+"); + if (!f) + err("unable to open %s.", strbuf); + + fread(strbuf, 1, 6, f); + fread(&z, 1, 4, f); + fseek(f, 0, 0); + + o = fopen("outtemp.$$$", "wb"); + if (!o) + err("unable to open outtemp.$$$"); + x = (char *) malloc(z); + fread(x, 1, z, f); + fwrite(x, 1, z, o); + fclose(f); + + fwrite(&mfuncs, 1, 4, o); + fwrite(&functbl, 4, mfuncs, o); + mfuncs = (int) code - (int) outbuf; + fwrite(&mfuncs, 1, 4, o); + fwrite(outbuf, 1, code-outbuf, o); + fclose(o); + + // remove existing map file + sprintf(strbuf,"%s.map", filename); remove(strbuf); + // rename temp file to map file name + rename("outtemp.$$$", strbuf); +} + +void vcc_compile_mode_system() +{ + FILE *dump=0; + + CompileSystem(); + + dump = fopen("system.vcs", "wb"); + if (!dump) err("unable to open system.vcs"); + + fwrite(&numfuncs, 1, 4, dump); + fwrite(&curstartofs, 1, 4, dump); + fwrite(&sstartofs, 1, 4, dump); + fwrite(outbuf, 1, code-outbuf, dump); + fputc(255, dump); + + fclose(dump); +} + +void vcc_compile_mode_all() +{ + FILE *o=0; + FILE *f=0; + char *x=0; + int z=0; + struct find_t fileinfo; + + CompileSystem(); + f=fopen("system.vcs","wb"); + fwrite(&numfuncs, 1, 4, f); + fwrite(&curstartofs, 1, 4, f); + fwrite(&sstartofs, 1, 4, f); + fwrite(outbuf, 1, code-outbuf, f); + fputc(255, f); + fclose(f); + free(source); + free(outbuf); + + if (_dos_findfirst("*.MAP", _A_NORMAL, &fileinfo)) + err("No mapfiles found."); + + while (1) + { + int i; + memcpy(fname, fileinfo.name, 13); + + i=0; + while (fname[i]!='.') i++; + fname[i]=0; + + strlwr(fname); + mfuncs=0; + + CompileMAP(fname); + + sprintf(strbuf,"%s.map", fname); + f=fopen(strbuf,"rb+"); + fread(strbuf, 1, 6, f); + fread(&z, 1, 4, f); + fseek(f, 0, 0); + + o=fopen("outtemp.$$$","wb"); + x=(char *) malloc(z); + fread(x, 1, z, f); + fwrite(x, 1, z, o); + fclose(f); + free(x); + + fwrite(&mfuncs, 1, 4, o); + fwrite(&functbl, 4, mfuncs, o); + mfuncs=(int) code - (int) outbuf; + fwrite(&mfuncs, 1, 4, o); + fwrite(outbuf, 1, code-outbuf, o); + fclose(o); + + sprintf(strbuf,"%s.map", fname); + remove(strbuf); + rename("outtemp.$$$",strbuf); + + free(source); + free(outbuf); + + if (!_dos_findnext(&fileinfo)) + continue; + + break; + } + + dprint("%i total VC lines compiled.", tlines); +} + +int main(int argc, char *argv[]) +{ + int loop = 0; + char c = 0; + char *argstr = 0; + + strbuf= (char *) malloc(2000); + + cmode = 0; + pp_dump = 0; + pp_nomark = 0; + + for (loop = 1; loop < argc; loop++) + { + // point to argument string + argstr = &loop[argv][0]; + + c = *argstr; + // skip leading punctuators, if any + if ('-' == c || '+' == c || '/' == c) + ++argstr; + + if (!stricmp(argstr, "v")) + { verbose = 1; continue; } + + if (!stricmp(argstr, "q")) + { quiet = 1; continue; } + + // compile SYSTEM.VC only + if (!stricmp(argstr, "system")) + { cmode = 2; continue; } + + // compile all available .VC files + if (!stricmp(argstr, "all")) + { cmode = 3; continue; } + + // disable line/#include markers + if (!stricmp(argstr, "ppnomark")) + { pp_nomark = 1; continue; } + + // dump preprocessor output to temp files + if (!stricmp(argstr, "ppdump")) + { pp_dump = 1; continue; } + + // debug locator option + if ('.' == *argstr) + { locate = atoi(argstr+1); continue; } + + // at this point, the argument is assumed to be a file + + if (strlen(argstr) > 79) + { printf("filename '%s' too long!", argstr); argstr[79] = 0; } + memcpy(fname, argstr, strlen(argstr)+1); + + cmode = 1; + continue; + } + + dprint("vcc v.%s Copyright (C)1998 Benjamin Eirich. All rights reserved.", VERSION); + vprint("%s build %s on %s %s", BUILD_TAG, __FILE__, __DATE__, __TIME__); + + if (!cmode) + err("No input files."); + + InitCompileSystem(); + + switch (cmode) + { + case 1: vcc_compile_mode_map(fname); break; + case 2: vcc_compile_mode_system(); break; + case 3: vcc_compile_mode_all(); break; + + default: err("you have now entered the twilight zone."); + } + + remove("vcctemp.$$$"); + remove("ERROR.TXT"); + + return 0; +} diff --git a/16/v2/source/verge/VCC/VCC.H b/16/v2/source/verge/VCC/VCC.H new file mode 100644 index 00000000..99a91f72 --- /dev/null +++ b/16/v2/source/verge/VCC/VCC.H @@ -0,0 +1,38 @@ +/* +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. +*/ + +#if !defined(__VCC_INC) +#define __VCC_INC + +#define QUIET 0 +#define DEFAULT 1 +#define VERBOSE 2 + +#define CONTROL 1 +#define DIGIT 2 +#define IDENTIFIER 3 +#define RESERVED 4 +#define FUNCTION 5 + +extern char *strbuf; +extern int locate; + +extern void err(char *message, ...); +extern void vcerr(char *message, ...); +extern void dprint(char *message, ...); +extern void vprint(char *message, ...); + +#endif // __VCC_INC diff --git a/16/v2/source/verge/VCC/VCCODE.H b/16/v2/source/verge/VCC/VCCODE.H new file mode 100644 index 00000000..74495139 --- /dev/null +++ b/16/v2/source/verge/VCC/VCCODE.H @@ -0,0 +1,111 @@ +/* +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. +*/ + +// We never use zero as a tag. This makes it easier to track down misbehaving +// VC code, since zero is commonly come-by when going off into uncharted +// depths of memory. + +#define ERROR 0 + +// Opcode values. + +#define opEXEC_STDLIB 1 +#define opEXEC_LOCALFUNC 2 +#define opEXEC_EXTERNFUNC 3 +#define opIF 4 +#define opELSE 5 +#define opGOTO 6 +#define opSWITCH 7 +#define opCASE 8 +#define opRETURN 9 +#define opASSIGN 10 +#define opSETRETVAL 11 +#define opSETLOCALSTACK 12 + +// Operand types. + +#define op_IMMEDIATE 1 +#define op_HVAR0 2 +#define op_HVAR1 3 +#define op_UVAR 4 +#define op_UVARRAY 5 +#define op_LVAR 6 +#define op_BFUNC 7 +#define op_UFUNC 8 +#define op_GROUP 9 +#define op_STRING 10 +#define op_SARRAY 11 +#define op_SLOCAL 12 + +// Variable types. + +#define v_IMMEDIATE 1 // is this necessary? +#define v_CHAR 2 +#define v_PTR 3 +#define v_INT 4 + +// IF relational operators. + +#define i_ZERO 1 +#define i_NONZERO 2 +#define i_EQUALTO 3 +#define i_NOTEQUAL 4 +#define i_GREATERTHAN 5 +#define i_LESSTHAN 6 +#define i_GREATERTHANOREQUAL 7 +#define i_LESSTHANOREQUAL 8 +#define i_GROUP 9 +#define i_UNGROUP 10 +#define i_AND 11 +#define i_OR 12 + +// Assignment operators. + +#define a_SET 1 +#define a_INC 2 +#define a_DEC 3 +#define a_INCSET 4 +#define a_DECSET 5 +#define a_MULTSET 6 +#define a_DIVSET 7 + +// Operand combination operators. + +#define op_ADD 1 +#define op_SUB 2 +#define op_MULT 3 +#define op_DIV 4 +#define op_MOD 5 +#define op_SHL 6 +#define op_SHR 7 +#define op_AND 8 +#define op_OR 9 +#define op_XOR 10 +#define op_END 11 + +// String components + +#define s_IMMEDIATE 1 +#define s_GLOBAL 2 +#define s_ARRAY 3 +#define s_NUMSTR 4 +#define s_LEFT 5 +#define s_RIGHT 6 +#define s_MID 7 +#define s_LOCAL 8 +#define s_ADD 9 +#define s_CHR 10 +#define s_END 11 diff --git a/16/v2/source/verge/gnu.txt b/16/v2/source/verge/gnu.txt new file mode 100644 index 00000000..358ef6fb --- /dev/null +++ b/16/v2/source/verge/gnu.txt @@ -0,0 +1,87 @@ +GNU GENERAL PUBLIC LICENSE +Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. +Preamble +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. + +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. + +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. + +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. + +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. + +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. + +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. + +The precise terms and conditions for copying, distribution and modification follow. + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +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". + +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. + +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. + +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. + +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: + + +a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. + +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. + +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.) +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. +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. + +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. + +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: + +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, + +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, + +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.) +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. +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. + +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. + +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. + +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. + +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. + +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. + +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. + +This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + +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. + +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. + +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. + +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. + +NO WARRANTY + +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. + +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. + + +END OF TERMS AND CONDITIONS diff --git a/16/v2/template/NULL.VSP b/16/v2/template/NULL.VSP new file mode 100644 index 0000000000000000000000000000000000000000..7e8f5a538d314c99b2cbe0ec34f4c28f47926a70 GIT binary patch literal 6397 zcmeHLPjezw5N|_(;ZIq*fLP&rlz!DNR>}KpO-SXsG`V}ladho8LSC3Yy2QTWu z53pXeJgX_y_QvcE*y%BKX0$V*tpU}$H09~gA9f#hTeFro^@^uO z=ft6VL<6EDqMk;)N3=_{9R}?YtrL}rinOw}lE@~KPBIn^d(4Q>VJ7@$Gn!0jFpz-S zZE7~DRzpDEh}~m$4w<@4doyZHs4*a~D=>@{h8_0m3PXnJ6(DgtMAsZDW~iK{^&Hjm zw6R8w0&N#*$E9|O_RG|(CXVZ=Q6qD*oj=pkU z+dJOh81M_V-V z=%h?%c{)$g1v9@zf1rToAN~CT3#PC*{7Gh&O_oebMrfG4j{m?YCciC8tMXqxIGB$>37h7F2i z$MDT26_IHXNy-qxDkzGo*u$teiXCwVyP3d`LAB#*Y5)V%rA6v3U)7DE6W&8%R!wFmGEA1w>O38w&pO4A!|8SfbSfV&2EN z2x2XSiQRglBR_0on~OFDL+`-%QzWCdwPz(*C?z)b70eU> zg+j}IGZlj?EQB>Z_tZkKznGiE-cg#IULkWz(?h4DQ-L#X(I+T4ZjU=Z?%ixK`%>Z@ z`6x;B{HUALC6i;z&zGy&a%?J*)t^PxMr;#{CZZkW0^LwXeT5VAgT{kxtUfejn?V*qDQY0h$4e3u z696Y2JUOc?7>TfA9Zs;@v{cF$PqM1HIu_7CUa{4+AX*LXd(oDJwVKj!8PU?p%93hH zG^%8WcS4<@9#SEB4#4;E> zm1VqVYecINB{c}^DTEw>TB-1jgJS_2^F^Rx+dwSgw^-PPD(ggo4GJL|LZWe%Ldj72 z&&7y_h2c5qaJz^hJ%*qj9Ry#6iCq7--ZTj`P)6DgCgfigK^&h!SCYSB=YB0BlAh?R zjayHGBgHxot$YXfj7Qq@TixZ-MfM!f(pyLsvUz_&HpEc(pAAfo2o?EKEJ%X#31CZY zyFTjVU=s?g*iQ06=^LOK)Nbxr4KE#nfN+M1m$cZp5yN*Ovbg=G$V3mbXiwsM5km7+ zpNG=cdzQvLZ%xJ4TT`{ELDjteKYNX063XHlY@c~WZCFp>Jv^Xp`^JA2{Abl=-wp9GiRax(#2+?I=PoM^Ji^&>C79`fJA8hY-TkK`&cXv-^dzXtYk zXo#D|7Zj}8e3TGmZ)i-2Rh8_it2dF_7k>}%EQ+Om literal 0 HcmV?d00001 diff --git a/16/v2/template/SYSTEM.IDX b/16/v2/template/SYSTEM.IDX new file mode 100644 index 0000000000000000000000000000000000000000..ce58bc9f84b9623e708de4eb8427a57d9f9a160f GIT binary patch literal 12 KcmZQzKmY&$3;+QD literal 0 HcmV?d00001 diff --git a/16/v2/template/SYSTEM.VCS b/16/v2/template/SYSTEM.VCS new file mode 100644 index 0000000000000000000000000000000000000000..744dcd254e63c278a6aa5b91d799f827c02fd82e GIT binary patch literal 13 LcmZQzK!E=M0So~E literal 0 HcmV?d00001 diff --git a/16/v2/template/TRANS.TBL b/16/v2/template/TRANS.TBL new file mode 100644 index 0000000000000000000000000000000000000000..813e3e1016a197bbb9ba2407f3e2688721ddb10d GIT binary patch literal 65536 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�(UHUt@3QnN=JM>uYwvKwhCrzNeqR1#Z!FTyQg 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Ⓢ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 literal 0 HcmV?d00001 diff --git a/16/v2/template/start.map b/16/v2/template/start.map new file mode 100644 index 0000000000000000000000000000000000000000..a1c449d4a0723d3916304d4192dfd02f1d01c956 GIT binary patch literal 930 zcmchV$xZ@65Qe`NL;-hk7aVtSK?fJW6&-gaG4bHp7$YVIjSGpd=mVJeC|(?EdLqh* z7Y=r&tNX92zv`cw$!(szFLLUG!qd%7qWEyfKQD9VkA^udEt!}z4eR#q`TqJU|7c8D zaWj)i8^z0u!a1pQ8CN+gNm4tD3hHgBp+>9^KehPe7NCxLVzwe6C`gDf4K&h3GcB~z zMmrHY=+rq*g)X`Y%ISKXTaO3#(nmj0VhmvDE`ufZ5X008XM|D47-vF998a7{rkG}i z1hdRxit>3DSQPzkFDGk>6lpRnv%)HCtg}IuO}0u|jz)`+*l*3-9=zkhyB@s9J_mYU z-!%?7`thFa_AxoF-I<~-^Q*Mq#D6Br>tK3oSZe@SqeO_e1Qu=qGk7{M*jkqgjH6fa0Q!{a9D+vU!Shke|6#_e=m^+mlOO1Y^IcE literal 0 HcmV?d00001 diff --git a/16/v2/template/start.vc b/16/v2/template/start.vc new file mode 100644 index 00000000..ccd6a3a6 --- /dev/null +++ b/16/v2/template/start.vc @@ -0,0 +1,7 @@ +event //autoexec +{ + palettemorph(0,0,0,0,64); //get proper palette going + entityspawn(4,4,"vecna.chr"); //first chr will be index 0 + setplayer(0); //set the control focus to entity index 0 +} + diff --git a/16/v2/template/system.fnt b/16/v2/template/system.fnt new file mode 100644 index 0000000000000000000000000000000000000000..07529e6f973b2f363526416223b2e896cf485481 GIT binary patch literal 18439 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 literal 0 HcmV?d00001 diff --git a/16/v2/util/CHRCONV.TXT b/16/v2/util/CHRCONV.TXT new file mode 100644 index 00000000..13c57c1a --- /dev/null +++ b/16/v2/util/CHRCONV.TXT @@ -0,0 +1,15 @@ +chrconv.exe +documentation +by zeromus 5.8.99 +zeromus@verge-rpg.com +(be sure word wrap is on) +--- +USE: converts v1 chr -> v2 chr +--- +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. + +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. + +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. + +enjoy! \ No newline at end of file diff --git a/16/v2/util/CHRMAK.EXE b/16/v2/util/CHRMAK.EXE new file mode 100644 index 0000000000000000000000000000000000000000..f142d58357fa132b2eee284df600829fd04bfab1 GIT binary patch literal 68608 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 K{Ql=b;C}&J5h^4A literal 0 HcmV?d00001 diff --git a/16/v2/util/CHRMAK.TXT b/16/v2/util/CHRMAK.TXT new file mode 100644 index 00000000..b8767f13 --- /dev/null +++ b/16/v2/util/CHRMAK.TXT @@ -0,0 +1,118 @@ +chrmak.exe +the utility with bloated code perpetrated by aen (aen@verge-rpg.com for hate mail) +documentation +by zeromus 5.8.99 +zermous@verge-rpg.com +(be sure word wrap is on) +--- +USE: creates v2 chr from pcx file +--- +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. + +to run chrmak, simply execute chrmak with the makefile, with extension (ex: vecna.mak) as the first and only argument. (ex: "chrmak vecna.mak") + +The characteristics file is technically called a make file, or .mak. it containst several variables, and what they should be. for example: + +/* comment */ +pcx_name=rath; //comment +chr_name=rath; + +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. + +--- + +**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. +**chr_name** the filename, sans extension, of the chr file to output. same as above in all other respects. + +**frame_w** the width of each frame of the chr (DEFAULT 16) +**frame_h** the height of each frame (DEFAULT 32) + +**hot_x** the x-coord of the chr's hotspot. See appendix A for info on chr hotspots. (DEFAULT 0) +**hot_y** the same, but y-coord (DEFAULT 16) +**hot_w** the width of the obstructing region of the hotspot. (DEFAULT 16) +**hot_h** the height of the obstructing region of the hotspot. (DEFAULT 16) + +**per_row** the number of frames per row in the pcx file. in old v1 chr/pcx files, this was 5. (DEFAULT 5) +**total frames** total number of frames in the pcx file. (DEFAULT 20) + +**lidle** the frame to show when the chr is idling, facing the left (DEFAULT 10) +**ridle** the frame to show when the chr is idling, facing the right (DEFAULT 15) +**uidle** the frame to show when the chr is idling, facing up (DEFAULT 5) +**didle** the frame to show when the chr is idling, facing down (DEFAULT 0) + +**lscript** the animation script for when the chr moves to the left. See appendix B for discussion of animation scripts. (DEFAULT F10W10F11W10F12W10F11W10F10W10F13W10F14W10F13W10) +**rscript** the animation script for when the chr moves to the right. (DEFAULT F15W10F16W10F17W10F16W10F15W10F18W10F19W10F18W10) +**uscript** the animation script for when the chr moves up (DEFAULT F5W10F6W10F7W10F6W10F5W10F8W10F9W10F8W10) +**dscript** the animation script for when the chr moves down (DEFAULT F0W10F1W10F2W10F2W10F0W10F3W10F4W10F3W10) + +--- + +APPENDIX A: Hotspots + +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). + +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?" +Imagine three scenarios: a 4x4 sprite with the hotspot at top left, bottom left, and middle left, respectively: + + Top Left Bottom Left Middle Left +0123456789ABCDEF 0123456789ABCDEF 0123456789ABCEDEF +1 1 **** 1 +2 +---hotspot 2 **** 2 **** +3 \|/ 3 **** 3 \**** +4 @*** 4 @*** 4 +--@*** +5 **** 5 /|\ 5 | /**** +6 **** 6 +---hotspot 6 | +7 **** 7 7 +---hotspot +8 8 8 + +So you can see how the hotspot determines how the sprite is oriented, relative to its current screen position. + +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 + + -32 + -24 + -16 + -8 +-16 -12 -8 -4 0 4 8 12 16 + 8 * * * * + 16 * * * * <--- sprite goes there. + 24 @ * * * @ is where hotspot would be + 32 * * * * + +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. + ++----------------------+ +| | +| | +| | +| | +| +---+ | +| |***| | ++------|@@@|-----------+ + +---+ + +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. + +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. + +Final example: +A 32x64 giant might be defined like this: + +... +hot_x=8; +hot_y=48; +hot_w=16; +hot_h=16; +... + +--- + +APPENDIX B: Animation scripts + +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. + +The two COMMAND CODES are F and W. + +**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. + +**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/util/PACK.EXE b/16/v2/util/PACK.EXE new file mode 100644 index 0000000000000000000000000000000000000000..619658a47cf1f860fe3b8a75e7ee3653b90c51d3 GIT binary patch literal 46744 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 B7Z(5k literal 0 HcmV?d00001 diff --git a/16/v2/util/PACK.TXT b/16/v2/util/PACK.TXT new file mode 100644 index 00000000..b3f565b1 --- /dev/null +++ b/16/v2/util/PACK.TXT @@ -0,0 +1,36 @@ +pack.exe +documentation +by zeromus 5.8.99 +zeromus@verge-rpg.com +(be sure word wrap is on) +--- +USE: creates v2 pakfile +--- +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. + +To create a packfile, pack.exe takes a makefile of the following format: + +--- <--cut below this line :) +pakfile_to_create.vrg +number_of_files +file_name_1 flag_extrractable flag_overrideable +file_name_2 flag_extrractable flag_overrideable +file_name_3 flag_extrractable flag_overrideable +--- + +Here it is with sample data. + +--- +test.vrg +3 +pack.c 0 0 +test.mak 1 0 +test.obj 0 1 +--- + +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. + +Extractable means that the file will be extracted by unpack.exe. Files you want to keep secret should have a 0 for this. + +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. + diff --git a/16/v2/util/PCX2FNT.EXE b/16/v2/util/PCX2FNT.EXE new file mode 100644 index 0000000000000000000000000000000000000000..8bd2c7dce7c73cfd0594e330ac3a938fefa5223a GIT binary patch literal 45720 zcmc${3tUv!wLgC5J>bBM3cjK^8ZG-jFvvLI3mrw!`bvy2;>1_s93PG7n1P1F zam@5K-kaOjHq@rIY1-IZAH+lj@q(Jzph;5<#uDRA4jG!7Xpt!K{Jv|SnE_3DZ$AJ3 z?_t6@`|Q2;+Iz3P_S$Q&z4o5mr5vZ{IL^*J#3>5LJz?UwMfi@3E#-wLQ;O|tiZ&FL ztm2Cb?Vgg2>+LLdRq1;BliTctUIZStZ`@$dTgBVwujcLcN%je;Qzts6rl#4`9FECx zv5Sg}?0Jjwvr=43Tr9JF-NsdgMJ4vNrFQ4WP1{P=t|{j2qnx7&{*iHbOtR0IZJ$xJ zZez*Xq7-{vth=aW{o2yfwJ2sy$*K)h6MmyzC@r#kHkQ~|ZP;etB$RC0i0@4$8#k{l zr1WB7Ume9B7h6)ae%0CyrGO|ZE!w~%SD{_luzq9VTF=^|LMmkuW!bo4-8TEGO`F!O zEh?o#cvPMm{4mR~VIyzfP_%k=QEBO_lC^-O3a9p7(9C4aQKmYf_UtcvYPCLunjx9H|&DX`86*{KNKh%|6uX(oL`SCHe z!ry!!X?R(j#u;}TwMKEW-uSplepf3_8^ei{pEUWVJTgm zuio@Dny5j$>h)ZuNlbduRKsN)D>R)SW_{+6cE8am*1u-tjvY1~dhGnLw2NtHs}Gwp z=4$u{GIEz%EB;L@^?S`!cQr;zI%ASr2%*;73q z-}Rmv4X5EepsLOz)_Zo<(@0Kh@rX%-Ia$_9NqQqH5qoGR)!wGvQ!C%mB8!s58LiKl zwY!ZYx!v)jxZTbBhjV*s(`sMSaOcxXO#2gzX|?Cmtj~O^+24=qGMKB;7^I{mq*|YO zUn3?BGK%p7K-58;IBft|W8$Qw1fvu`$SCz2U_75z6T|I3yX!+8SNEY|!LGAE0kRr1 zC&edmvyLeWJ}5)Kdoz4@*V!L^4UW^i&RNf=mD)1QoVB7zQ^RSf3d=S72OGtHNyfU5 z^xzv*aWZHmO}k@4WfhY=i$e^NYTAQl#5`n{zr*b@Qd6dZc2YcumsabkYtyc|;rZ>M zX=;bB6iwvqkI>fG|lL# z`^+Xz&N31fF=?u?(U@)Ivg9wg>cPhS^YA&%$Z-wE9OGlvql{q8nCg+nM~!ylW?i-2 zxIfD%pW!@dXQlXTs@`y;M-z|7XeuPF1652iQqA`yB^goKmrO%FIwT3N)~8S9jp^fg zZTj;16NM)6#z-)6rG82)9}iZJ&6ckyLc4f_m+Oy>Foev<9x;S;$1)5HC2(|uDf#t6 zQz%LP8+UArA=Kws&=86{_6q_#L||JC3tt~#kQ2CNvWhdB>v&kw8W z@4KBW+^mPhb1zt&R(o=c@wI{6jo&{0-6i!kobL5uT-sR=A~`TiJ;$Y9lOI>aD-s56 zXuzRI<%PC9i|Aht>a71svqgLsV5#u{l*iss_O|EVyjRzWTYCrR+r|B^yho z+LNc+SFhSY;(z0&q7C?>AY?;0?IaiNL8`l9t4OSUC%D8i&Q1K*D%qo9X)d+C<7{OV#mCa9t) zmeQhiMXULZC8g1raPHv$pMP^TH2Zh|8_ZcXy};(F|Bg5d{w8uNag{$~g^o2a^k8u5%BD()&BAD`IX(@|2f+zi}%5$+!U>ALZfNqoms(~CPv1UjGQ8)3xzq;G@)uj{@zdc{JHF{$m@&jSNB zz!HH!Ip8v4GKgAfwGI<+5>5U_edr&o>P8?G6D@%7h;i|F6;=;M$@?upD!wUR@a(GN zZ2ot+aYRSAJQbuXtR^zo+w-6*i>4bqUMAwC^+VPnp+t{)wBM~sU_#r$}d8BnGGBwYm7%^tr6o? z{uo01AvQ^IRMzM-IuJD(OFze1uK-2%oTZG`a-g`teFu%r$Li46zh7Q&mQ z=6-@7o@A0TSS>G%{xYprjn3o^HGeJaBYZSN610F{wnz85qTLqY!6dqB0o zdXS=bc7syfD-`$C*FbqHY|*`-ODHb$YoL`BJ^EhICW=eE2Q(Fh1u6P2262!2ucNq6 z5qEF1YAO1iZcwW0a*8{74=6=%rRW3Qpi>bynBtySLA}~y?kkX*ky8F`w5G+Jj>ug+ zm?&5bST9#h3>yY~27sPwqM1iZBzlZKB{pSx_P>jur<&-7c%n%-zL3RJ9XH_cVii=L)1@fZqXyyz>(NB&eCw;H-16K$XzXcx`A_Q`U7cVj&g0LZWX@WC2~Ujm zNVZp9o%`QHiZp~WG#Y*ixl8}T3^)nXqgYpYt}<>0$XMBwTnn7(wZd}W)yFCmcOy#} z&;r0p0|5ab?W`|@(l~y2H6hd)s0huOszin*VZe0j5d#4@>b74A2Q{qdP=C~|N1jT{ z0EH!>zQoWD_2ZcpB)43hh^1yZ5ZXNkF^#V4RQa|K@DMw~ZI{YA#jns6Ur32W`aqUO%I&nidM2RvSzmQsm&$GimJij4 zE93xg)`&u@<_pJrWsAfPX@x8{haL$=Y1$wq5;Zl=ReD>c3!^^L`vI5Ymj4}`;y-P3 zN-kMvpyC|$+fQdpu2!9aigh$>|Gk20mEG)X-Sb^E%I~_CfVTR}I`!5)Q&_`Mm+OuU z;sxt-{U}D2D+)SZElj?NU|MaU=-p*2A3s|!c3|w~Nh{3V9gOyeb1eXW zusD_OVrP`>{|U0=D@^uR14ZqOT%gS(Q@+E^+i2&eq#|T5EaI`wfmJRpmRr24WW(AG zYo?McE!jwxH<3>ux-D_ z2m@WcI(Zd?)K}E+R&fv?ckV*3!}ehwMViMniOd9Bdipyi4m0*b&s0?v~+u{xXcdnRNX@s7?g0G^sh_iiZ(!{|9J_4OUaS zlIoUw4P|XaUx2J7_y9DP5<)zC;Wt`(sw*H@K> zYbViDrQ7{?nrZlQH10`=)SwJjp+j>DPUaal$_+$P$Dr z0sUc+6#Zi81um&U)mWcf%MTD$7^bw2)E4BI@~?}3sci1T(pyo!`2DR5V(!fa@}FW! zoK{mtG2x&hTwf^Xpbps>9BOINveg1v*=5(O`j=l6e#f#k>JOqQ%tzP#^*Zs2c&oDM zzB0V53^DO^xONu>lN^ge0+aI=%9n`ci>@(AMl{V+3u(!O29$(Sp zE%3a&6GKEXoOuO|30-&?V$w#jrdLxoj1q%1AY=+cPrzrM-1RU6tOH=4yz>sQ9J_%> z{sfwVsO`!m%BM_v15a7of%Tre9f@8pG{dV2WqP%tbgwQn#j6iZ^cq5`USsHCuPHRj zYYruQV?uUsY-q5zS7?CO5=!vKg>2sVki}~anZ34<-rGCGGs56zf`A?R^_vJh=N$8#Q~#WEidbqBpH2{;8X!73agJHcvv_tp zANK5Co#NU3R4N}m1rsc$QXhFXvmA;t+tg6uKRW!uCZ3F3wUVm2qP)Qj`XVu5ApbJ_MK z9x;2=bJ@wFXRv2?Hpt-tIX0wvb{9-gNs^u3g_fZSp55=ju+O8GO>a=k{O!xdPgpb5 z7TtJBxe5ayk^cYQzhKavR{QbwgZ7VK{Mdd_kl#nqOYXdldbpEPIt*7p7me@`QR6a# z9ftlG<$AuK8ZZlS*PcjE5ljcS$<@d>bO}r(t$^#1H`JYXs)6Hd{QDh-@d%jt3!yV9 z{)~44&hdR1!O8Zc#8J%9P>lQFR(USfCR`1@U;=iTu%ov2B~-_*-;ES=#{ABMr`QWzXHC} zm_5fabo;c%VtG@v5Pnh=1f?WbwCqTReD*)a?HKTNB#ISI=+Qd`7t0%=g+X1t+Ttp-M zPn$VD?|@dApC>O!#prCH>A%dT5n?pAARPe0;gb`_cQ||Z5k`xjkN#51(~J3CV$)cs z*-^K%pV&G2x%F0n^Dk7ITq2BSDlbI_%|eDiHSR!qn~x?arNYxyCB z3-v~y9n-|Hbi*+%0+A8~UDb4LIxiS} z=ggsg=}!t~-#L9K4)E3GucD5vmY7q;M}Tl)p8R8~CA4=-MN63hoUl9yEI!97A=az) zV$z+Lf(Z^=S%6xZ(3owZ5b6-ym~G=wjnH5fzC^Gf#*D;JEXqNc7_l*%bR4`WffKJs z$f@dJDz7uqPzKRZW@~hH5ghndBlHW)2d63@Oh_YI`OCVn4O+*bYML#8iW9qU!942;qdQwJL!D6VP^6-(AtHd=a&KcW9+r?n7ZDGq=Wd7uW~79?F~B zohda677ww4WssK9Hi~~(H>iQ||B{Kne&DLW3^z+sfdvcqS{ELp>quWdTV~Y75md!lK7N7x8i3Tr5WhaH zL&SvR zRCp*RFgc*_Cu+r0b0D{FHj*TO8s1|L$&+%;phi;QyIsC*U4Iu6tw$DoCF%E4c5!-_ zIGBZ)#e>mYtyhI2SQWt{Z-IW^wvTX5_U%OOt*k26BRO9MW=3irsdcHr-_V6#7N1R-5!`p-W6zGYZ$1h%^GRD3njXYF`kMhXHBRU_tr5oM$&Y=Bb~Vs!Itlt2tGM8&~ zCXnht(w4DbbnaxUzKUAG7|O^Dr3d|3pH37Tf|60ZLwx1Cox%6XbXJ+m&+@TVeakQM z`Y9LqHs6#COeBwT{G0v;y?+`fyxl!5vUOjsrAaG52j%^ z_-A~dmX9t?`-x}Q$lJ=L6xvcGd@EOm*YD}XwgS`?vuuX|#wdX_xX3>c$TcqrxX!q} zdgUTbYPGysa-C^=8FZ1DQ9;Z-ou&lE8xG-gsZLsP8l2llnM8(%JmSFzm^8O|8eKA% zDY?v8Ozb>365s|Uog1FG#WT;gJKCBCe8z}}V14T96I-&bgdh$<} zFe46R=&cLG>YzzJm~W0bxA4-#$x9h|SwBemW&nuqP+#?e?w#eE$_clF!75Fqc6t^p zRUKk88}_PR?r$d>h?gT07NHWP!9kHKGpE(IkuDwd+5)cY?gBYkCCRR`>obY>Wsv*rjN)ezL^Gw#52jT^SbLl8INAwu*+XG5LbQlunT z*kM5kOx}g(I{cA6f!_3882;wN;m9|=d;U=#g0FcH(hxSMnw0RHtbh3ScM5{3hOB#M z>;0Wu5gs27Z{rRA&Ig3pnuk~f+F3K4g`BI_t%D;f_RQ>j$*R>wPp*Q~jcb;>bZT6z z-JZG?eyiaZ>W=pK+eyEI+Q~L?q5iYgwX|e_*IxW8ss;-D2WC94S+y%}vdh0^GAJRG z2D!VUYje8v2pD*>v`p_c7B{Imd@M(v>;tHHBgcO_!LP*feHaSIlEGVOZyLN@dJ;R4 ze^ImKB1>eFpT2JGnhop84VC!}aXoF@F7i0y+^g2WyLFYYj^}ci`|UcryJRDo#mR)7 z%@Xo>YI-hO-P%I?qP)C&O4zs=UQNOVZpKF8NqDZR2zpk5 z%d$5sKEWGPT%tn1htUWD z7|IBGO~u>QxKoJpniZi-u0^Nh$-kP3VPEfs9bZlV1$4-f2X1P$y=d#|qD|B}AoT{mWaGMVj3lfxN{b4kvCe3WE0V*`VNb$dw02Vl_ps`4 zmH{R%TD28)DSDDUSF>j!dzP-H_(D7Z^dvIbi%RK(Ynqrvw3MOsK6WA%F(0SXcU|NU&PVX%y zY2rRNV*Gam!EoX`lPL56LT(n?hL8uLiVh*e8(X{;L3G_>%=unzp1hbk&0OqPW2Yk) zUDspGeFy2Fb7)#%a%!#kh4`0<306FFt7)dY0H`d4DvIK6Cw)c7>@C)1cK@AiLjUg0 zx(M0>!9N3mcDGuyUsDb+*RL7A1aRG6HDOPW z@>1nWBzq0TKULF8kk+#~dbwCl|Am^qut(laW_ga9ctA~@#4^JY8*Yn59;>GRUQJKz znb{`CtBHry#Lin(a(Ctg`7@%DvG|yp-i-7p<^l2rN;DMLsfn-OmwB-K2TG4AZdB8M zf^--xPD4v1D>SB2p4POPzI0eszH}>-C>9+ve-^zWa;^xu!oK&& zpRLFGq4m!Y78dq8TR%N(;i7D}%RX!FTzj4?r(lt5Vea&~3v*}YyX~{!$uS2B?pbcv zg8W&F^79s^;cvpc`PuG83#Yp|*VeUc`>{~KRJPGxiaBA`I(y!%oPUynxh)GWsbM&5 zPZq8#DtXu*mYHnLh{cq7*WFB1eut%ol+U(TQF++*^oOb5Y@z=X#6bJq6!=*yO>}qS zw~X)(EZ*i|efjHufH3-ieqTDiNjvygMEFk+2n`B)2NeHE1$u@770Ayp21@9r_gV&Q z@iRj^#~b8w>JCNz9I8(+gVwB@O&K&XZtmwzD1Jr7Hc`#gwhq-TP?|`qX8O8Qb+}y( zak_Q`NW>1GM8zy5spk*6*f!*i4wYDLS5Yp`4d1Noh>Ays9v3CMp( zE5xWScv?QTAW#088ZYH{Le&%diSzXS2D1|)b#r521@_Ja`2Zk_x3{1cf_w(yFlZu0 ziE%zW^Sm+gGX%vGRE+$K9#9k|#%;wD_4H-D%p_cLaXBKCNptZf*FJ`vmH3vIPA5+p z27z8m7yH_iX*`2{klwjRQ}?s%z%9 zo4eWm$!>LM+7l!2)uw)R256VD8D)ERpYw?M*Bf2! zmxqytjnz$1%5Rr)uZs!)Nt72Y|4Ca9epkCb)8E;9^HmSF2~h-*3@@Tdqk*V61IX9m+(_Yrd+(xGXFXcmV@-yYF_vo{DK}o-K)V+h zD_V7Z419S7K&QVSU4LwxRF16725DAmE9dDeHybJoU>pgrt0^B_eUmfuy|{ZpkrexS z#5s{d09&xwljMPqHEOlTWrLH8RF)v+4v_!s1aVCsG)}ELwU6vbsJi%Om9|m`i*;<) zbc8ftTSr2Ncm=%-k-7Rh#D_-CgvddDb^VcA3vZfxbQ;ms<;|eJt3;tB+DdjLo(5teuDS*?x`DNIR##f`^4Ls=|Gis12BT+mRn5?k) zYD)B{Kf?)sXTklo_*QqFs~KVg;ozBSK2ry|l?BFL=eKLKjgr2rLGCcYq>QCDV8 z5Ckmd;~AW!f5De-%n(+qU+FJ^V7~NtnE#U?62vo_>+XPlnme2qMjw8mVy~GP-dtedGb>Utbwc;kQxv|j9dO4 zYKjVqLs(^pP_)_vH^V9=5-OHQ92}&UwD8M8u{`+=8lS8>JzyI3L6pyhMw8udAyBiN zDu6UM*d%855{%0OIk zn#q?<;5~A9;MY{;Xws(&lM1}L#qyL4G_^s8?)2@{E{B^$w&K|{j#dLj4cv0^dUp30 z7aB))vE{-@IQo3zR%%ItG<0`^C?zTxax| zaL&+^6HTRtmGUXdn;H$NB~u)HSX}ap-}Asa1=G`Ye6tx}ndJ`*@T zKip>2rl^X;Xop!pEA)8~zD+RGVn2sjuO2|pq@7jK0ac@k_KQ_?(h6In&dol7&Iq}J z4L7ows+O#|+4I8dTc)n5N`jszThr&r6l7LrSQ~Px3N*gkQ-wa*tFRvNX$}%s*Fy9Q zvA$``1q=0sDXk?m3w5H!ulx>XBCw>tHWRc}L3wRj3m9=^^%*dy!|*Qg^1$%8e~UgW z)lGPT3vj?-6HC}n@eF=HffujCaF3?^=GqJ9v!7qCtWhUZw4*B3l{)|-o}wCF@bR;UBx zrfKws~a#2VTP9*vv$b^uxSuf9t zWFYwn1am+;w6s8;fP}Bx+r4JF4Kh(|5R(Ff_vrzgCpS|>wjQQTx7?0ijT*jDF6hVV zm)7D)+L4I$K(?N$0%uvGr_+(N^KVp({{(#t{XbZ}$(xpEHFTvr0(R!lO87lNWx?FhBdcvu3 z7Z1j^u^fcFpjoe$kHgl+OdMS`I73t5o1pL$fXZDwl%Tv3C?NsvkPjj%Pkx5Q!Kf|7 zU}!hemM}`IG&-}fgUIFuxKnoMU8X-^-_csW7_A%&`)IyRoN(`+3G`NGKR1iFbY+$R zl=EEZnm2)tbKEUm7c$@(pN%mXK_-0WxXUk+{{~hT>q!e87;xI$(ni=+m<4O4tOWMP8iZplv+;ijC#x-{(~n97lV zb4PF1Pnc1%q-7RF?EIX%v{f~Uvp%KD!%*Fl*5MesBLg&t`-P-GD7k45pfA*AEZI$& zOau5*Qy=OVlrkB;-7gdfy)L`$0OF~HWMs%1fo6@s$Lb|DsS5jP{M(Qe3l-oEJ2*0vUSN_Snt9T|4~8SVtM>`D1EVP znnJ$5@)@<`dz2zBVI}G-6)h2zidmK(>{R{O; zrAV)Z@&|woJ%Dzwx+f~B^6IH5{}hHRz(lt`JXj+;aD;DHdn?)wPH3!1M|K(ujTKYE zA@yvMneSW8EI3;=Qw8ipYWLHZ>RTwjPhxNo%B<4jAh9`pImYaGK^Iu6VH+oH;+1Oh z^z?0=$nmGOcbvgjWEC+?_lWK3Y5bXD}M|C z41v&tL9uyslY3z}`faiWM1j6yKm*b)hUS4r0m|r0kLCC!YJ0STEgHF8z`5br@oIub z7@{UvkLY8=V^+(@RQbpgyHX#U#hT);o#;MfCwZzJ zeMW2d_N~7J9#^W90i6l4idW$9TmTfvJHW6kzM*^+#n=}shbgOgU1w0i#$Qnq<18x%!`3pp<4zPbFWQ>p)%Iat!EPh5jsAUQpAds32+`8uzB#Qe+ zA-@zL)M6kRPmBrcQIoEM;=7C4M;4`uhY=@#Ou*`27ol(>z)WP$FTyw!+iz%mKCco(zXU*~k^mYF_5qECnbnps#ex&jXbz;{z`xATlzq&6u6zc5}mcWfgYz&pQd(JUY0a2rfb2jWew~V5#GGb^6WZ=^h-|E& zlLaIZRUfV@GYO~bh=UAt%RjnIJxOORKqo@gfxKWu|PSX})9W@S02E2aQnB(6Fe} zO^@VsaKifyx)lvh4JRHZWI>6&;C#UM4pte{VBdis_LeTfLW`tmAFpbFZ*K6BeKulvrE3#5!8Y?bGL(S39yU|cn zH1t+D6e!gM$sMow$E^RsXR1hLwvZ~L{(|*Ht-o`e^;rWr8N2d_7I0koLXP{7Z~3B(=hyjZ<+7g;{UdAL6ob~iAH2-s!AyqPHC(ly0Gx@#tNbg3-@cRAR4l8Y-0sc zk;2)|wl~o+;Qv6LM%-JAXmklySV1YkJ{%)>3%XMc<7mFbV5<65?v(+n0)bxxSc}O2 z)k0FB2Jzx?GT%Z3k}N1kIdpPmXHeQpiB*Fz2q<7Zaic&Ts&9{v3{_(|>v5_ryiUZ= ztw-vrUZ7>W|2XS=7#fb$SG_=bi2pd_0bCGq2PdfhINpDpaRPmh$M^Eep*d=i805k; z{^N|ZU`kMHcbu^oALl<#mEmw}is{iD-*IXe#}AbDQJbC2&y2Vqx}CMci74>5a+ug# zUaQ)&+WrB#9#o~9e7+gfeCZV=cl+C5yI8dmHe<=okJ?YKw3ZsW0%06I>N>TKdKgX` zB>g`6R+^lS8{5B#c#<&NFm&A^myxg0Ku`Jy;{crn!ZJZ=k{*D^*gvYD_&tdLUW=`t zuc7Zvep&b6_nP4ZIRuiP>;WIhXaifXOvJ36mZ|T?n<}k1S%_ zw@X7PCE!#XE_2BfyYAct%$6l8JdNXGddS~<4_whGW>DS}l)39QOe@@tm#QiE=w`Q< ztEMzfvs>Pl0vYIPTf>sbT`Fvj8Ud#{22_;~Pakt-0*oHDk-3i61Bk1>-jkKZ1(prup!c681P3m){M7YsK&BgQbGck^K5vtZ#FBN6Xein)XWH_A4eXt zdmMSlzW2xjpF-A?9i!adLC7c%W21{a*ZPU|V^^BJ8Yt{W;7pKDp%26)DI0{)vnrdy zp4E~uuvHPK&D=H~JDqTyMjJEHLUQMigF8RkYJ?qgp3SFva@Sz4P(l{s$86>XoBU2=Kzf6; zR6qJnoI~f7k_6d;T36I=*J{GvXDZ)EattI{RItM0PcRM%+(3thwBS8JG! zt|T*I!wj3fv6s?XchyFoa~hlsfd0UI=zaiJ>-M3ec;cbdvKT^W&6gJ<-47qP1M<#p3+8NAM$XTw6Wa zKfZtVeP%iCfn1^1Bl7MEy9nu#@4=6Eha++Hp8G_1{OKOyo-p4Oejd2r4wp}5)87-} zxCs2ZNck%{?m?9Qe2+RD42Sc2l=&wLA7{K^t@w=QM8+8QwyOwZEc*h)S?0EP@acD1 z^dyrvcZr9Iqi}j9@H*meT~WVPSX)4@d9szcwy}Qyoo#gci;F zfx*4ikpYdp?1&PeF(d9HZpXSOkce6|Rz!He&4|xv+w5((y5Q2&5-lG!Ox5KeQmudgNlH(!w9beMBO)B5iw70%R0iiH{r<$SZ0wHcUA7C*v5*PcoK&2$Zl)H zq#P+zBOPW%G(aoI)+RF3Au?%kr!>DSloLq|mruRSFoz(!BWZfIZfctKBN%CgeL#U>pv%W#}RL>st9cRT^D>6Zv!0}zkD;}q= zZ5vOt>e*o<8Ku!DIbG6Wnmoi?b;?jU1b!*n#F_fGPpPXhU-#srLEXJ09cOu_ww(&Y zg>kb!RpD5FdsO5eaYEY*fK>aJrG!hJ(B`9fm3K9f;(G8DghN56G_NZ(Ba+yIrzo+D z@l?2;tbF1Fk}B4tNDT87D>Ln^%0ATDZKr{!2fszqY?O8&nudHkyHp}#BOYB($93zTS266w!!)$oen}$`GK#uiJkFwi zNKu=)R2U$sq^JS%+^vhV#k~w<13)75>e;3Djlmg_{_a69MumSq29Mr11|u|K!|izx zCa9_$pF`z{^akrH8yjoUu5twJ* z2^nmAcyhwO_>a>kCy1djC|hiT&j~9Z2isT;zg7x%>pqB(pAjs{&sfVWB&rqhO-tot z=czKk!I;{uMT&nP%a~4OMTv<(ol1to#i)eDs3$UZb=)d5icD^Wr+PB>5+6sXnhARH zCO?bQb}(f!RhZyEzMNXakCyf^VD{;_Q%3tzP*1&f`A@@%7G|e|O?Ep!jiB#~Wb28& zq*g4Hf1?83Q`S(*pDOP`5<*e^bD_MQ0o$a##1Q_gss7t`AyPh5Ivh8m<)_N??kiu~ zM@@I^BgWa$Pc36i6oz7Vek$#wfr+!g!&u409#Fp*Ldl?@d}kPI5*?uXs}gtuQCry_ zHLLFxHBpV<7K${9*q(prJ}UJOQu%iIWi?NfM$%rQs$(yabca!5Z_Qqk(4i5KFHFx5 zjiS0mH2sCL2RNcD09Em5JB57`ocDVv6*<|;Ie7jp_1~SxaPj3|_HW9-qZ8rqzZbQc z2o(>!x}^Wn3!fvNt+i&rM$obz>OewOuDvq1SrL*i)vD85OIfY#hMI+CI~cxYeJ$A} zX)0}Wy$eiuU8dKi+Lp4LiYr+XlBE@+=3M&hgEn=V^>t-h%YV%Pn`oWa=z5FJYvLf6 z+%j$^*3r!^5kQULX&JW&QCHr)bPni_y$Gq@=z1fFY{8cGH(SO;=I*<10d47EDfcZ+ z?qwQQvbQw;Q#bvtH*PAqP1{af`5eiZ>Nj&AG}C{$ z@6&Y|TgjWb23_i$OnmI@2x&iP4!CZ*;V=S6Q#ahPZsJ}XI~(kw5=vZZ;- zBvbQSTgKH=QeDfqw;0H!GP=vVH*S_xW9BzHqgXx%z zpB^^^it*d(}6E|8M?L`I&3f^8IC(IliCMv0~Kb1oA@2rr?%;FdH1?7<>|7 zyU88UQ3u08m4Q~&fQh!(#aQR3APM{))&^XypuI}iu;TUSB#vuY-}>K>`G2CZF?&95 zjTT4*7XB^zN#*l)MHuYG-nW7a2$H?HV1%iBq@0PaWR=h6`yo8auaco3ZK5xsqwO7h z23h+{oUG~J*j6-*))$OIW(GE2_yUlRu$XZlG++7*<iura~{aX{Q<)B_mstBO8(jzH1D@SXrr(?8$c`{&tkye2a|&sw7M ztRxJORt&Dnx8Ga$wJqaDL12d`Pc}%Vip{=9Q{Z;uRI0f2RNj_8fw!bjgg?q;?A}cg z27S;RcFa<*nXDzp9~2nM4XX3iL?DdJS90}0U~dkk1wUve3kTij@j#I58&+KEjZE*zp)9 zRL2d$g1$M}kgcT6gYV;<&;{HBlI(Mg6YM?m`5sLbY=AW)4f{@WLLZ@j$eBy--f!8} zzFf7xlBpjzp}1_ACSYhV!^U777t&+wjLjB9{x4&8tPhH3PSWD%-)|`-{9}%>2^Rih zBtMR^`Bfjp$=^AZeY+uX`v1$Ao&V|o(!9g0X6O^FI2(aC1}o30IUJ$VRFcy03k#KW zgp!GGD3d8%%GdH#_RB_FUV0&-oy}V{4~IrQ;eC7Z(2H6HJTP?ouI=<>C_8!hY{Nvo znY-n(Kt}HrjLcU#v3db))}mI;Lj#rU7S;JIvIbK@QcIK*-cNzLi39G%*M0y6@$@)S%FQx#3ql({*Q5FbqSn4w z5s!c2n@z*MX4Vr)+5S5ttj|6LX{03Yo3RmRp1;R&2mXh@bx6Pe?|;hkZPN+w{jir& zuSi|XPlA%+0p!0khVLtt4G_z2;*M3^122{hAbCfySXtxnKAIeg4+av>YR(1b_HCjB z>ydY&2EUK7WHr2&DnMVnvrb4r4iF+-)H-1r-E--`Q!L;jwsxXkD4xFO3RZkWqhNrc z0Tj1P=v@F;N%>b$wAsZ;@TgP^BF{}NKiFSy_m{P6ai@-&RlQS3Est&*qPt}LcQy!5 z;QCgqm7m0>Fv0WbcyiePK?|)?B6Xuj?A=CpOQ4UDrWXcLnn_J#COy@>WCuu(T*wqp znI;GFyB4a919rjBX)J)p`%U>6TBCYq^;IkIA(?<(oo$!!hF;VKS0mgb%kdlF@7eYY zpcTebq!5-_l)n(8;(Dk-9X=n{0~+B&`m!L^jr|o$HY;&d`8JX8-IvR#;&L=w%e^#{ zVZ#eogmhvS9IS3fkQv3SQI-1N~+2 zeMP3{af&D0xVBVa4E8Yo3rYU6LpEzgHE;#oKlk4@Y_s^^NA!*L|oL zbA#fF=f%bz6+o41n?eaeweT(Q6a5Xu0>(@2S=`|NX5F2kn%rP-Wa=g_@zgo-CchQfXMMMmjP~tB;$O-FM9X$lbW32v?rzxe!Xv4 zzmA2UL+3c&9B`9={+1E{9W-^5xSUCV130LBYemqX|2%hV#q%_%`lEB*(h9rs4rbs+ zDwvEpp%`gJa-)tuRfY-V*E;fRurW~v6xKj~9lqGvqR%M<1_17(An3La@sM(BFqcdD zuhd=D_sUQ3-%hYTdzw%s?_C1f7?kno4F4r;#%4MG=>2W~UO`^^tHmGXc^7X~aH0I8 z-Y6V*hH(gF;#1xThm5 zG!_PHiA(jYm4Tx29)1eleh6g%x2r@Hg)VUWY9VfyLi0gbA;*?Ego&Va1|wsYPS+_H z*zGiQjZ-h{iDyXURn!X~FtwT?F+!t$gvo$q!r0eoP6^Syf;bLisBD5V1TA>Sg9>g; zRB=VeDPc^BV&vbZ?TqXbG+OJBH7pLP8PuP+vmk~wIh24i4MG>+iz>vo zHyF9lCttst3x`KKe2=aawAs!YYR0jh5Yj=^)9kZ<#m0=!tj%;ZZEm+7>E-`&1%|?x zp`V(7enxC~UqiMj|ckf%R8V2!k} zPDFk>ufUJv1U;}e7>^?!wYb&H(NvZoUI3i5$Zz(4ALpe!nT|8tKleYaPk=H@{yTrh z-$?HgIs1<=MdK&YFm4e8-7Yj8`69P8(Y()j2g`PXItA|^5eUWi2)Kjq=fz5GuVZH2pUdOU4SY1hUl{3xK>@rdCQ%Qi8bN(JnrYgKoG8a+g9szaR`$CZ*#oZ;MjRWPsRC> zs(f>$4Yz=@dn6(AVtIq(am&s)U{UXd3@r{!zSSZQ4SC@2qUDpTTxQ(5&xUb8P{J@6 z$KBUUW(FBDU|<(f;v9;47v{;s3}sqE(@*3^bIn2GMW{2aCtR-)5?6qjR-Qhl$Eo z=9 zB157VTixsXl~+YKhH={a&n$y4EuMQ0Evsj(=~5hz)Yl`;(XyPHujPy!at^~YDDBsv zqGzIUVIMnqP3tGXVpvG{NurtfeJb78GDT2_VLdhauYr6EyoRr3>WOzTe&3M&kkg)8 z%y6%P>v0FT<*wm$3k(k#^wbD;Pjwgi#6ws2R(GnQ6i@YSHIy3a<7v#XQ}^YhuxBcs z_&K`!X^dj;#t}x-i)*WhzDdPrXzSj(yP&M22G@YjfS_vq2k&y$N&eV6CJR9CPO_~`wfilC2i`og&3V5 zsIoZSq##WweLMe125~nQDK9bjreqp!F|DjS99oxrCL#VQj8#`wN ze!!uigWP_Kp!3_xB&xl<==V5gKp`x1OzMn1Tzp@OWBJbED6V?6I?Hix`^{>C6VnfN zU(?6rEnND(WsNRwH#-suGkkGis$lqV)D41%)=n@YU}+RNeF6f|K_9pLGgus0`_WC9 z65{=x8@Iss*S8y;akjn&f)_8v4Z5_;7GzZ}7H|o=M-}6|H;JO7d|1xzhei)QVv=BKNW>n={ zD)VKv)A79ajWTW{HuEDgu8&u*cK*M-i@L(oFofgObZ1{bOikU)fMeR-GC7mFAB$Mj ztrA=mxtH)e(R&GXk$VY~sU<%{OH`bv0NstVtwN=N6uz^tw$XJOF`RhUA=KjDLZKEd zkh#ZbB(WO`h5!DB!WYeo4UD$T7-^XiEkj>}=F`IU3;S~RK`q$q!T3t;am;9{-tsjX z(q)FYtPzJiaTPGQ2!|&J6F)3ofI3iFIJ?3#e&~fU!|dX8o}4_IgUs<5%6*4kgFALV zL==9l;q(Hz_IFS!XiJlgU+T-*XiE>e*Q#ln2DNsB@JY92w;fR9!^h;S$+H*-cQd3o znkL2ETHwQ(*>O_t>8gZyTstgSaj=&kBDrcc%{bB@ho9l0P^Hb89nM_xHtWJn+zo<0 z%>AElnS2-LhQh3At#}M9NQ?tB$nN6}we37=#muVEI9W`B#`ZA9hdlbIKLBDhI} z@d4c{GDX9~0)|un8bTBPEuM*VTpe6AFw8#hbfV2iTyiF^c_m@1&h^ZV9P@XsjWu?7 z(~1rOt{ zyCAhZ(q8MUf~7z%_%(Q6)%N+A0y;Cb73A-^wur#v+%;G>S^ONz3+&1o=XA8V&uqRA z>P?4+W(!}2j0n#bJ|xwcsr=ErD{PQyBg8L2Dmt-b1)O@HXGotl2m7gXrzgd!cY zRS|CKDQ_uzvZG$d)0!n4ANj<%8itlF(jb8%-rA|%nDJXcOjx#oZMz3p$bt2u&{yoN zleH5yxCy~6w;rY1=-H69p1`jfzwf(xL+qqm%A2sLNPHW~A6baP>hXc_+KqHVbUId# z1Hn>gyY+-N%h4>Dah+L+zGo5NF(WuTlTkAYt)Wf_jl%?5Ve#LM6|&%-PdAR=e<^VI z7YX>`>{8&~>ZQQpd${Q=2i=Q35gr<#B!lR$LWsA-+gM1@J;bM&-4+K+@IxT@B02kb5_@-^io*e9QgtF4zAsn@3zs8>sr&>57xu_I3U9xaWi!LT!1tGClh2k-%A#}e zF^)Q+H=UU`vsG7UWH3|A(kogVDGzK?#1i~ILZ*U?Y%RNH+h~g!@s$IjERQnOwZ|4r z@*r^ZTL)0}8_R5338-KXLt3jV1F}$s?GNlOaJ93LAM*^cumyTT!|VT4PoT-Or=Fmd zccE=P^aQdzt9rr=lzFe7fGu(@sRylnB1!_?j}K{+PLWU%#qgAR?;2?S&F-NS)elPE zx>rBwphKbeE`3xwU~JNi7#@|;qcXR_9#C&(&j>%~$?)TF6UiN>=0)>?6t5p+0|h7i zY=px3y(*Wb(sh|^Ds;(|ufYi>B9&CmN5j!v7;`j&i7D(jQ^A_`4chK@m515HY{Hnm zhBDQmn{rP(!up@ui9=Ds+4}K?MVrS%4_}9$`&!4bFP`7V;p#fj9sNk-jGe+6i=jql zM5{WjLIua&Y*+<@8Yi71u5>5!h1k$_fV=T4vMif(5lM*)C^6=~#HEM~&%|iAE|KQo z&|ru>9P1n}7=1f5VhFhfF zFl@m7GK7F2%I$&41yDiE>;Ra`qG3JW%*;twyR~(csp{BFu|}SVt}RbJ6w$HsA>~f` zI|pvj`A^wt!UXSz>5VdmG|@@{zs441KSS^UvwF}#ceAoSMRT5ev3nYuasQPDZg~?W zJM}bV@cU`F!6WoXT-QWsMIA2C$6GPHiznLND^LCbXu~KFq1%|0G3?%yUF}ma@R+nk z|3g%HA*$&NFPsCh!IDt0P=1e%Oq;(`C*-ni&bB`yrfQ`E8>C}WE6NaJ8;mIp*|-4Q z5X62nuH>Uw`6Z^(QvGm$H;cK$mTia;j#RExs+UQqtr53aS6oH{R#FVe!z>}NT3IXT zM;-!uZMDu1Q)FsCWxeZsjn+%cLtr!o%6j z2bENKB&|h7gVTflJC>ce`=xv=p~amjcvh+(B(QyNuy{^rRuLA+<^Q25_xDC%xlySy zTt}NLbxvq;is2flG+9Bt+7YNEbYJ>eL-ZC63AsQ&aY!?JAb?MgW3+UwQ*?wpO5PbJ+Ob z)xHT5nff1db-wxJ(f~#?sT$&Y>QILlX#!T0UJY!V*m%)}GVoi0x?+N(D*W&tR0VXF zFahaRZXND_;tjsr_G z0Efhr=>xYs;LDIHf`|O2qode*!~_n>3jYd#{2U-iv0*HLM*m%{e-1vtSW*eu5N&o+ zc?&oWxx*vz+W%_r%Hx_kw*Sq-B3q(jSVRbJ6%`e?8bL)VsMQFHpsmuyt!itlm_W6% zSU|anvDE5Qt5(!%ajUjF3>i zCYj8gIWu$4oLSDyoWnQ zEu(~?fZ{S2Iug*3MIya~TlrLfp)DDdK;}Eth9((W5k?KJghuQ$F)C0S>#7@?eo@~= z#IpzND>Ozi$&(u4xJGD!?3?9*OH1SRTWnB~sjUgEA!>J8Lq#%$$pu9LIrtM@!`fTT zZu(=MjA7o$y!rAToN*ZiHfYj82On(GIVtu;V38GB6L3smyk0gIt6@#j$l4us;gUh4 z%wD8A1N}qBMc`EEy^G;P-Fs2*E3#5IP;@u-!LcGGZa`v2h;_l`#*A!AkimN43}Uma z+CF#&-mp>Q1zUsIO%cprp+TVAW&W*9a|m_2J?pyNfUHLSZXs5V|FYlRM~hBR|;jZRR{G-cZx^dkKjbAe^K4!Zn0$Yu&VG0e$ z1l=MyGlYRn=)wie#tJM9HBBdgO+t$@?J>IC?Le5&le87qhBwvaw!P z`Eobh2%*B*io)Z@irCdZ2l2hCc%@sCQ2XFxI2B@_rJrn_GQX?{WMzFllc&c(zo@(E>mZ<>??)WFfrcU|!Nqq08^VB6_-Gm- z_-I-|52m_BJ3ufy;v@5R5Fs-!vjwqMJ{tzRV%$kTt5|xFtv;jbd4+1BA7r8u8VGfM zu$V`1=|VRZK&kVHHh+tWEgQUaDxuZ>j2OA#aL#fEUpRL~QG+gGn@47R$uUQw>j>); z_A*vjo9-7<9JhZ3Y6pFGOr6^(3QY|OcqXShp2UrLYm;Dtqi8voI?WjNC2TP zv_}}6GmpuOLYgE7;u^p*#Fu527N%;;B$o;jl}Ewrr3VC#u8m)FE|j&Fkqe)Y&uj zKR?!|6RUR}k~?1vj9MHroMG)yEaHGeVW8jW>-t8OP5O_RZ%rS1*r5n zicLCqL^=gBI_X-1NS+`Pri5s}I8SJ!$04GJ*v1kpbaF1qt}?E?@iLg3bfigc z7X!zmMpp{w=W&k2frxPdappg+!HPTCZXf-CF9S=>;9uB~%aiCFFXrTeTXA6ju_Wyv z##B9no$P=^`*a@q$|JFD2?T_ASU7!4aW`qo($UUjQL_Jjy&9 z6fv?lnX%Atm5nGy)5rMcV^zjw+nC4Ov@DmBnqqxNne#tJj22^8q9;>LF}4^F&lGg~ z(>qe>S3+kCRA^zQ5;%PT1!S@SEX(yiC?ynNuuUuTx>;1jJJ%r+A~_Kh|I)iyTqDb3 z1z5`Rbu=zp!Tzphe_cSZxu7+w49jaI-4JmAftI&e>!kpRzas=eP=i=DBvQ^Z5RIMQ zfH5o2*y)|?@G%kiM?S*dXN-B2+3l7n=Q3?fMKS93i7-Df4O&a`2{%YVu?t8Vfk=K- zE88C;P88Vw$$Vr9)y>*mR^wST{zJ-6qdatG*XVPxBEDKXkAYnj*u0s2Q@~HoEMs`C zD54`86TZSh@o=K}Nx6h7+msXK-bs#U{!;_a1Ka zChg~R!}tq~zty^CbS|96wzMjT6f%dVH&cg2cR*8v)q0_?dPqSYkXA6=D(Dx~x+av4 zqW?^1ssdn@Iga$M2xchH0%@5t)H4hfb%mOjaF?_y=j0o-at(JeP2Of3n*}~%Qho4@ zxK~O%V_8707vnBxUb9I=nIhdDfrQFPa7U~?Ygp(NJOoy2PppOroF!67ONg>Hd!f}d zNQ^g!q98JsY(3dK~dCk_eTUN;bA)&8?6T-bWH2OlI(WSYvSq zABeSmsf;lJ^u!5ebF!6rBlUk+fYXMWN0vcJ3q&TlkP{!Uy|ud}3f%-_p zFbS5HLsD_@F04;@^*pCO+UgX+wjo#DnqK_B6@nYP=Qg;3j zAaouqp$eyE4GSrDpLgjS7LTX_2_?$V0g1S6sjq_c6q_`{;L>rxxbeam&|qGvRf3=V z2B$t5pzD+3mVOahA8;yvgk=)or9K&_NG}Fl=m%4zH$#X;i?1vQZWYUfxxQsF0t~*` zgi@p@vm}I6s1Ms(aY(A$WSLI!2OIndXcd;+Y6L6NpG9b_nbt8_{@WnYjsVVTJrMy! z6Mzvom0xXs4iUvu`PI;Wk}(|hvyj*W?P+A}7>WXGd|(M|KUI_T;=E91p(ITx%Z%#? ziZDRpp+9B$o=_!}`S{Z@_acZtmUhiCN^#(D6oYQXN{iI>GWbyJOgi5z?;)P4cf}!z zJ{ZdE(O>k0dc3HqachwrB?=aXG*%*=7f_6>WnYYsG}uS6a{!`zgwRreQ$%3BNZs5#Vno=$=y1UfP0&R_ z#k*SXJvC|_R&j|Y!oIF)ttNGt&0g&q!uBHh66#pBPY2kzf?Rj--!P3J>O{^G! zOo2j8Rk9kp?wZqjDfDZcCLPsv>0z7`sjHyxy1CJnk{kSBNA%2<&#N!5urtvw)r*H_nnpX@EbG`VZ|m@355X;HC&(_pyX0#Ka7 zjW47ZAy{bPZZYb~CshgWY~_I^7$~Xo7;FqL%k&IIq@nt|#-u7Mp9NqznruA>8yZmU zEnx2fkcn;NfJd4WDQz^Zs!{TkW@Olc*P6`>K}TT3s5SFRj{FH`bJdka!6_e?G3M8V z_q^UkNU2yn86l?0m)OuG>}9fhLnPo;Vn-8rMSH})i(W&J1`N@kVOy_C3Wt1`L)k&>nS6+GPPAOSz;fN=`=|5IQ}PqwT`F#z_LyZGYu(cX3a}d zph+sz^)PD7OyeDEG$-OaWMRs#t>Q26S8zTTEkVlvB2wzN+4l|Fs!XS0nz*urQe#q? zi14H`O;UN{3fsB};{e(;4w{oO6(|;`^)KcIWNThBFd~dEdLC22dv&|`oJ1;>;gO4v zU8BeT-#iX~@p1eQKWr`E0sR1sOYt$dtA%6t?zk?6NhMDvkZ>vptL6KgeuU;sf)if^ z$yTMcHD5tP6%@0fqlWd+%1XY#7+%6WF(qIW1jLjHx0UGjlrgRh=ZduDyca)9ZlS~Q zu&-32iMgMk#4?pX$H!HHkt~=tn8)Gg7RJDx3TiE+3=O88* z3YXUsdi7Z0_~QgmfNL%`^TkaLqlm@#j4|cBH#Yfk;sqRJntYP6Hed0-b_ki0nvF-$ z`{$0i984Dx6USV`)mM$CIH5`91Ki5~3gm6r_8vgXclb55y$4XD35teSvxqcx1Mh2+ zuFZB1s^NdL%truUq4>H0(~Sy0eKWj4%ZjUxpT_1_)(Khr)QA%B3;%QR9X{z6U&4Qj zR#Sk#H<1DTLC;CPpNp?i^TLRMFk{TECV9vgp_8lmBG4C&KOX^=H*re)JaUP5(Ay)Q z*^&_`2Zjt%Wr5ZOQO}$_$P;!e@PFPR3ci|SR z?71oXDN3%)?o?2GTmCp-YV?(IxeleSu~ zx94zlw7Kzv+f{T(S$rf?ncU9a!Lf;xvx}>nLfN!gbN3c14^J=emOia~{nY-g+q7-h z{+SK|9XoXn?9#PPDQDl{kbeCKgbKPjUz<8@`s;7Zc=N59v*Ks#^a+V?&zU=JeB4Vf zzw-O<-)oa&p+`RR}?K@`6U2EBo_kOzn^Dhs|A68UWJ$n44`q$rTKv&vA zY63xVqjr-rkKd(?yDet;{5I|}zDTsGV?IC|3XJ6rVAe+eg{hdfyW zC%hG}^M^qou^nOkQTq@r=nsBU;cR{m!?>Je1oa<^=Z*l<>Dxto(SZ)|1k}dLmWI~) zkJ;7wLsz@l{ObJ&yad1eo5Gfhd&2+G?wOr(wjW(H4gT*pov9h>_jX<}{MQy)QVR#~ z`ygi^$1T3{Xw4IA@|KZd*!FqfZPTaOUN<*HaGZyWe*OY|Lg5fC@DtbXXk4)Iqb1M@ zx@x)FARYC}k#_oqvVNy}dXG9!uG4k&>*-h1n?xyv-yEl|+Us-$l>@oS}O(jm8?MV$qeZ?pB0N|5swejQ9IDr0(WN!Sb zj>j6m`TP8LL{(VZbyKO_<@U~A&dzRlS~#?8-`cMQd-XRPxAa}Oo%{4hfr~3BV)|>|Z`@{O2`v>B9b2aVm z46_W`)60od1J2pk6PwHd9DB}d&i-4MT8`VM0x#6GoAR*R!!Hph0BPR~=@$JS(#jCW zRXzOXSj6!{_&tqF?h%B$0?v9*?ad$7sBqhRRn+tQ*9WXb_^UwCpm_`R`a`X8(|fw^ zdi&ee3*HyXxj3Smd(2i9*BS9$&ZzBYT=(Z(IJv`$u4yM)jP>ANCOtXIR? zd?515-gUcR0m>YVv>iTF)qID%G~A-O+45-D)7^Yn-M4G*YQJ2m;)Vfc_i=YE&jY56 zYd+_^i=S)dW)=F1{J}oc&pb-K=gFx6v)Si4hu;FsStzsHl8g}vD6=E*xy<1EK#{FN z`IpBZjapt2_o0fzG>>y{ce0fZary)P=z&{iYXD!0GVFb2kfu$559b4zc_rFQ<-my& z{_k_$}d|8KXYd3VtPU{>(NX^AX@&#f=ZnHe(VbUTZb!I1!hO!&*g76~^QU~%^WNHvy7z$JcZoFr81t`+%HP$jcq!6S z9el)i%QVKnRAwWksHZ(e?f({@bdWg9J4tanam4v*ZaM z0Vb^>JG^`_M+3UAhd*x6asO9W`f<+!PIa$Y1HJ_uDR8)Y+8nQOz#%G-UEU}7$O^av za4%?rj~s<_=^K3HIk-7+JK-wf`UeLe(ZlVBlZ6By=?ga>?iie^U+|GhaG${`kuN=1 zXU%hTv4b?0ujq;Yo^UHRavW`~(ta@K=9n&((}?H_i7b8=y0YK}ZtN#b0h!Jp!BXdN T+!G}G*RY%gSS|uAx`Xmh<7p$W literal 0 HcmV?d00001 diff --git a/16/v2/util/PCX2FNT.TXT b/16/v2/util/PCX2FNT.TXT new file mode 100644 index 00000000..2099b3ad --- /dev/null +++ b/16/v2/util/PCX2FNT.TXT @@ -0,0 +1,15 @@ +pcx2fnt.exe +documentation +by zeromus 5.8.99 +zeromus@verge-rpg.com +(be sure word wrap is on) +--- +USE: creates v2 font file from pcx +--- +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. + +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. + +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. + +That is all. \ No newline at end of file diff --git a/16/v2/util/TRANS.EXE b/16/v2/util/TRANS.EXE new file mode 100644 index 0000000000000000000000000000000000000000..580b2568bccbf93068c857e718a9d689ea0cb1df GIT binary patch literal 45208 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 IY>ni<0Y%W0FaQ7m literal 0 HcmV?d00001 diff --git a/16/v2/util/UNPACK.TXT b/16/v2/util/UNPACK.TXT new file mode 100644 index 00000000..e75838d9 --- /dev/null +++ b/16/v2/util/UNPACK.TXT @@ -0,0 +1,13 @@ +unpack.exe +documentation +by zeromus 5.8.99 +zeromus@verge-rpg.com +(be sure word wrap is on) +--- +USE: extracts files from v2 pakfile +--- +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. + +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. + +That is all. \ No newline at end of file diff --git a/Project 16.bfproject b/Project 16.bfproject index 1e580216..2f2bcafa 100644 --- a/Project 16.bfproject +++ b/Project 16.bfproject @@ -1,7 +1,7 @@ c2e.convert_special: 0 e2c.convert_num: 0 openfiles: /dos/z/16/doc/project.txt:60:0:0: -openfiles: /dos/z/16/scroll.c:9765:9708:0: +openfiles: /dos/z/16/scroll.c:1853:1382:1: openfiles: /dos/z/16/modex16.c:6319:6141:0: openfiles: /dos/z/16/modex16.h:1057:344:0: openfiles: /dos/z/16/pcxtest.c:795:442:0: @@ -10,11 +10,12 @@ openfiles: /dos/z/16/dos_kb.h:464:0:0: openfiles: /dos/z/16/lib/lib_head.h:1738:1443:0: openfiles: /dos/z/16/README:744:0:0: openfiles: /dos/z/16/makefile:181:0:0: -openfiles: /dos/z/keen-src/id_mm.c:1835:1591:0: -openfiles: /dos/z/keen-src/id_mm.h:0:0:0: -openfiles: /dos/z/keen-src/id_rf.c:46629:47612:1: +openfiles: /dos/z/keen-src/id_mm.c:1835:14849:0: +openfiles: /dos/z/keen-src/id_mm.h:0:1424:0: +openfiles: /dos/z/keen-src/id_rf.c:46629:47657:0: openfiles: /dos/z/keen-src/id_rf.h:0:0:0: -openfiles: /dos/z/keen-src/id_rf_a.asm:1555:3465:0: +openfiles: /dos/z/keen-src/id_rf_a.asm:3987:3375:0: +openfiles: /dos/z/16/types.h:154:0:0: snr_recursion_level: 0 convertcolumn_horizontally: 0 adv_open_matchname: 0 @@ -26,10 +27,10 @@ view_left_panel: 0 default_mime_type: text/plain e2c.convert_xml: 1 c2e.convert_iso: 0 -opendir: file:///dos/z/keen-src +opendir: file:///dos/z/16 wrap_text_default: 0 bookmarks_filename_mode: 1 -ssearch_text: cols +ssearch_text: mapDrawTile snr_casesens: 1 view_blocks: 1 name: project 16 @@ -61,7 +62,6 @@ ssearch_regex: 0 e2c.convert_iso: 0 ssearch_casesens: 0 charmap_block: 1 -recent_files: file:///dos/z/16/16/modex16/MODEX16.H recent_files: file:///dos/z/16/16/modex16/MODEX16.C recent_files: file:///dos/z/4x4_16/w_modex/MODEX.CPP recent_files: file:///dos/z/16/16/TYPES.H @@ -96,21 +96,22 @@ recent_files: file:///dos/z/16/16/lib/x/MODEX.H recent_files: file:///dos/z/16/16/modex16/dos_kb.h recent_files: file:///dos/z/16/doc/16.16 recent_files: file:///dos/z/16/doc/16story.txt -recent_files: file:///dos/z/keen-src/id_mm.c +recent_files: file:///dos/z/keen-src/id_rf.c recent_files: file:///dos/z/16/doc/project.txt -recent_files: file:///dos/z/16/scroll.c -recent_files: file:///dos/z/16/README -recent_files: file:///dos/z/16/dos_kb.c recent_files: file:///dos/z/16/dos_kb.h +recent_files: file:///dos/z/16/dos_kb.c recent_files: file:///dos/z/16/lib/lib_head.h -recent_files: file:///dos/z/16/makefile recent_files: file:///dos/z/16/modex16.h recent_files: file:///dos/z/16/pcxtest.c recent_files: file:///dos/z/16/modex16.c +recent_files: file:///dos/z/16/scroll.c +recent_files: file:///dos/z/16/README +recent_files: file:///dos/z/16/makefile recent_files: file:///dos/z/keen-src/id_mm.h recent_files: file:///dos/z/keen-src/id_rf.h +recent_files: file:///dos/z/keen-src/id_mm.c recent_files: file:///dos/z/keen-src/id_rf_a.asm -recent_files: file:///dos/z/keen-src/id_rf.c +recent_files: file:///dos/z/16/types.h snr_replacetype: 0 savedir: file:///dos/z/16 spell_check_default: 1 @@ -122,7 +123,6 @@ snr_escape_chars: 0 htmlbar_view: 0 spell_lang: en ssearch_dotmatchall: 0 -searchlist: mapDrawTile searchlist: draw searchlist: return searchlist: enter @@ -137,6 +137,7 @@ searchlist: width searchlist: cols searchlist: MAPY/2 searchlist: MAPX/2 +searchlist: mapDrawTile autocomplete: 1 outputb_show_all_output: 0 bookmarks_show_mode: 0 diff --git a/scroll.c b/scroll.c index 7327cd03..218d0097 100644 --- a/scroll.c +++ b/scroll.c @@ -1,9 +1,3 @@ -/* - -hey pngwen! draw half of the rows and colums instread of the whole thing at once -or try to optimized it~ - -*/ #include "modex16.h" #include #include @@ -58,7 +52,7 @@ void mapGoTo(map_view_t *mv, int tx, int ty); void mapDrawTile(tiles_t *t, word i, page_t *page, word x, word y); void mapDrawRow(map_view_t *mv, int tx, int ty, word y); void mapDrawCol(map_view_t *mv, int tx, int ty, word x); -void animatePlayer(map_view_t *src, map_view_t *dest, /*map_view_t *top, */word d1, word d2, int x, int y, word ls, word lp, bitmap_t *bmp); +void animatePlayer(map_view_t *src, map_view_t *dest, /*map_view_t *top, */short d1, short d2, int x, int y, int ls, int lp, bitmap_t *bmp); #define TILEWH 16 #define QUADWH (TILEWH/4) @@ -72,7 +66,7 @@ void animatePlayer(map_view_t *src, map_view_t *dest, /*map_view_t *top, */word //#define SWAP(a, b) tmp=a; a=b; b=tmp; void main() { bitmap_t ptmp; // player sprite - word q=1; + int q=1; static int persist_aniframe = 0; /* gonna be increased to 1 before being used, so 0 is ok for default */ page_t screen, screen2, screen3; map_t map; @@ -556,10 +550,10 @@ mapDrawCol(map_view_t *mv, int tx, int ty, word x) { } void -animatePlayer(map_view_t *src, map_view_t *dest, /*map_view_t *top, */word d1, word d2, int x, int y, word ls, word lp, bitmap_t *bmp) +animatePlayer(map_view_t *src, map_view_t *dest, /*map_view_t *top, */short d1, short d2, int x, int y, int ls, int lp, bitmap_t *bmp) { - word dire=32*d1; - word qq; + short dire=32*d1; + short qq; if(d2==0) qq = 0; else qq = ((lp)*SPEED); diff --git a/scroll.exe b/scroll.exe index b62c90b1599bebae11f1facb2d5ff12b7d3bd958..48849a041919fb11ca984b2f9202bf6f660a077b 100644 GIT binary patch delta 16 YcmaFynd!x6rVR@=GM?DHaHBg108^F-*#H0l delta 16 YcmaFynd!x6rVR@=G9KEzaHBg108?@Z(*OVf -- 2.39.2