]> 4ch.mooo.com Git - 16.git/blobdiff - 16/ted5/TED5.H
ted5 added
[16.git] / 16 / ted5 / TED5.H
diff --git a/16/ted5/TED5.H b/16/ted5/TED5.H
new file mode 100755 (executable)
index 0000000..e44ff89
--- /dev/null
@@ -0,0 +1,356 @@
+#define IDSTRING       "TED5v1.0"
+#define TITLESTR       "TED5 vD.IP"
+#define IDSTSTR                "         "TITLESTR
+
+#include <stdio.h>
+#include <process.h>
+#include <io.h>
+#include <dos.h>
+#include <alloc.h>
+#include <dir.h>
+#include <mem.h>
+#include <string.h>
+#include <stdlib.h>
+#include <conio.h>
+#include <fcntl.h>
+#include "lib.h"
+#include "memmgr.h"
+#include "menu.h"
+#include "jhuff.h"
+#include "xms.h"
+
+#define        SGN(x)          (x>0?1:x<0?-1:0)
+#define        OFF3(m,i)       (*(long huge *)((char huge *)m+(i)*3)&0xffffff)
+
+
+//
+// Defs for TED5
+//
+
+typedef enum {TILES,MASKED,ICONS} screentype;
+typedef enum {DATA,CODE,FARDATA} segtype;      // FOR MAKEOBJ ONLY
+
+#define SCindex                0x3C4
+#define SCmapmask      2
+#define GCindex                0x3CE
+#define GCreadmap      4
+#define GCmode         5
+#define crtcaddr       0x3d4
+
+//
+// STRUCTURE OF TED5 TEMPFILE WHILE LAUNCHING
+//
+typedef struct {
+               video lastmode;
+               char ext[4];
+              } TempStruct;
+
+//
+// STRUCTURE OF THE "TEDINFO.EXT" FILE THAT TED5 CREATES
+//
+typedef struct {
+               int level,lastvid,lastx,lasty,tsize;
+               int OldCgaXMS,OldEgaXMS,OldVgaXMS;
+               long OldCgaXMSsize,OldEgaXMSsize,OldVgaXMSsize;
+               int CgaXMSlook,EgaXMSlook,VgaXMSlook;
+               char permicon,pflags;
+               int oscrx,oscry;
+               char parmstring[64],launchname[14];
+               char BackgndColor;
+               char ImportPath[64];
+              } InfoStruct;
+
+//
+// STRUCTURE OF THE "GFXINFO?.EXT" FILE THAT IGRAB CREATES
+//
+typedef struct {
+                int num8,num8m,num16,num16m,num32,num32m;
+                int off8,off8m,off16,off16m,off32,off32m;
+                int numpics,numpicm,numsprites;
+                int offpic,offpicm,offsprites;
+                int offpicstr,offpicmstr,offsprstr;
+                int numexterns,offexterns;
+              } GfxStruct;
+
+//
+// TED5 LOADS & SAVES THIS HEADER FOR INTERNAL MAPFILE USAGE
+//
+typedef struct { unsigned maptype;     //bit 0=bkgnd/1=frgnd/2=info
+                unsigned tsize;        //1=8/2=16/3=32
+
+                unsigned numtplanes,oldtilenum;
+                long tileinfooff[10];
+                unsigned tileinfolen[10];
+                char tnames[10][8];
+
+                unsigned numtmplanes,oldtilemnum;
+                long tileinfomoff[10];
+                unsigned tileinfomlen[10];
+                char tmnames[10][8];
+
+                unsigned RLEWtag;
+                long dataoffsets[100];
+                long datalengths[100];
+
+                int NumIconRows;
+              } MapFileHeaderStr;
+
+//
+// TED5 SAVES THIS MAPFILE HEADER FOR THE GAME
+//
+typedef struct {
+                unsigned RLEWtag;
+                long dataoffsets[100];
+
+              } OutputHeadStr;
+
+//
+// EACH AND EVERY MAP HAS THIS HEADER (IF THE MAP EXISTS)
+//
+typedef struct { long mapbkgndpl;
+                long mapfrgndpl;
+                long mapinfopl;
+                unsigned mapbkgndlen;
+                unsigned mapfrgndlen;
+                unsigned mapinfolen;
+                unsigned width,height;
+                char name[16];
+              } MapHeaderStr;
+
+//
+// SPECIFY WHAT, WHEREFROM, AND HOW TO COPY A REGION
+//
+typedef struct {
+                char PlanesCopied;     // use BPLANE,FPLANE,IPLANE to mask
+                int MapOrTileSelect;   // 0:map,1:tileselect
+                int x,y,w,h;           // from map or tileselect
+              } CopyStr;
+
+//
+// UNDO REGION
+//
+typedef struct {
+               int x,y,w,h;
+              } UndoStr;
+
+//
+// LAST-BUILT "VIEWMAP"
+//
+typedef struct {
+               unsigned step,built_flag,EGAseg,maxpack;
+              } VMapStr;
+
+
+//
+// HEADER FOR APPLE-PREFERRED FILES
+//
+typedef struct { long length;
+                char Kind[5];
+                int MasterMode;
+                int PixelsPerLine;
+                int NumColorTables;
+                int ColorTable[16];
+                int NumScanLines;
+              } ApPrefStr;
+
+#define CREATED                1
+#define NOTCREATED     2
+#define ANYLIST                3
+
+#define BPLANE         1
+#define FPLANE         2
+#define IPLANE         4
+
+#define O_FGNDBACK     4
+#define ICONBACK       3
+
+#define TINFOWIDTH     3
+#define TINFOHEIGHT    7
+#define TINFOHEIGHTEGA2        25
+
+extern MBarDef TED5MenuBar[];
+extern DialogDef DoCreated;
+
+extern UndoStr UndoRegion;
+extern CopyStr TileCopy;
+extern MapFileHeaderStr _seg *MapFileHeader;
+extern char _seg *Tinfo[10],_seg *TMinfo[10],_seg *GraphHeader;
+extern long _seg *XMSlookup,_seg *CgaXMSlookup,_seg *EgaXMSlookup,_seg *VgaXMSlookup;
+extern int _seg *MapBkgnd,_seg *MapFrgnd,_seg *MapInfoPl,
+    _seg *CutBkgnd,_seg *CutFrgnd,_seg *CutInfoPl;
+extern MapHeaderStr MapHeader;
+
+#if 0
+extern char far TOM;   // JOKE SHIT!
+#endif
+
+extern TempStruct LaunchInfo;
+extern InfoStruct _seg *TEDInfo;
+extern GfxStruct _seg *GfxInfo;
+extern video lastvideo,videomode;
+extern screentype whichscreen;
+extern VMapStr VMapData;
+
+extern char launchname[64],ext[4],format[2],projname[64],mapname[64],planes,
+       infoname[64],mapheadname[64],tdata,MapNames[100][16],parmstring[64];
+extern char SM_name[64],SM_loadname[64],BkgndColor;
+
+extern unsigned temp,whichmap,numtplanes,tilenum,tilemnum,numtmplanes,left,
+       DirtyFlag,tilelen,tilemlen,whicht,whichtm,whichi,
+       tsize,infoy,infomaxw,mapwidth,mapheight,screenw,usingbat,
+       screenh,planeton,planemon,planeion,maxiconrows,lasticon,firsticon,
+       viewton,viewmon,viewion,XMSundoB,XMSundoF,XMSundoI,XMSmaps,
+       EgaXMS,CgaXMS,VgaXMS,xmshandle,GridMode,SnapMode,snapx,snapy,
+       snapxsize,snapysize,writeH,F3_flag,NoAbout;
+extern int tilebase,tilembase,infobaron,xbase,ybase,scrnbot,scrnrgt,
+       FillMode,PasteMode,SelectMode,SelX1,SelY1,PasteOK,SelX2,SelY2,pixelx,pixely,
+       selectcols,px,py,lastmap,TIybase,TIymbase,TIxbase,TIxmbase,BfillMode,
+       Plotting,TsearchMode;
+extern long CgaXMSsize,EgaXMSsize,VgaXMSsize;
+
+extern void far *XMSdriver;
+
+//
+// FUNCTION PROTOTYPES
+//
+
+//
+// LIB_A.ASM
+//
+extern void CGAcharout(int x,int y,char ch);
+extern void EGAcharout(int x,int y,char ch,video vid);
+extern void VGAcharout(int x,int y,char ch);
+
+//
+// TED5_A.ASM
+//
+extern unsigned EGA1lookup[200];
+extern unsigned EGA2lookup[200];
+extern void DrawTile(int x,int y,int tile);
+extern void CopyCGA(int srcx,int srcy,int width,int height,int destx,int desty);
+extern void CopyEGA(int srcx,int srcy,int width,int height,int destx,int desty);
+extern void CopyVGA(int srcx,int srcy,int width,int height,int destx,int desty);
+extern void Overlay(int tsize);
+
+//
+// TED5
+//
+void FindGraphFile(void);
+void HandleEvent(void);
+void Continuous(void);
+void LoadInfoFile(void);
+int  LoadGraphStuff(int rtn,video newvid);
+void LoadMapHeader(void);
+void ParseCmdline(void);
+void InitTed5(void);
+void CallDesktop(void);
+void SelectTiles(int screen);
+void STnot(int x,int y);
+void DrawProjBord(int x,int y);
+void DrawInfoBar(void);
+void PrintCoords(void);
+void FigureScreenEdges(void);
+void errsound(void);
+void DrawMap(void);
+void CheckSelectEdges(int x,int y,int i,int j);
+int  InputIconAmount(void);
+
+//
+// TED5-1
+//
+void Item_InputInfoplane(void);
+void Item_SelectTile(void);
+void Item_EditTinfoNames(void);
+void Item_BlockFill(void);
+void Item_TileSearch(void);
+void Item_Launch(void);
+void Item_Undo(void);
+void Item_TINFOCopy(void);
+
+void CreateMap(int exitok);
+int  SelectMap(int exitok,int createflg,char *title);
+int  PickMorePlanes(void);
+void DoBlockFill(void);
+void RemoveUndoBuffers(void);
+void AllocateUndoBuffers(void);
+void RestoreUndo(void);
+void SaveUndo(int x,int y,int w,int h);
+void CopyUndoRegion(void);
+void SaveOutputHeader(void);
+void SaveTEDInfo(void);
+void BackupFile(char *filename);
+
+void TInfoNon(int x,int y,int b);
+void TInfoNoff(int x,int y,int b);
+void TInfoMNon(int x,int y,int b);
+void TInfoMNoff(int x,int y,int b);
+void TIDoneOn(int x,int y);
+void TIDoneOff(int x,int y);
+
+
+//
+// TED5-2
+//
+void Item_About(void);
+void Item_ModeSwitch(void);
+void Item_DeleteMap(void);
+void Item_EditMap(void);
+void Item_SaveMap(void);
+void Item_CreateMap(void);
+void Item_Quit(void);
+void Item_MapStats(void);
+void Item_ToggleInfo(void);
+void Item_Amputate(void);
+void Item_SwitchMap(void);
+void Item_EditMapNames(void);
+void Item_Copy(void);
+void Item_Paste(void);
+void Item_LastVideo(void);
+void Item_FloodFill(void);
+void Item_LastMap(void);
+void Item_CountTiles(void);
+int  CheckForMapSave(void);
+void DoFloodFill(int x,int y,int whichb);
+
+void DrawTileSelect(int deltarows,int *numrows,int *numcols);
+void DrawUnused(int deltarow);
+void DrawCurrentTiles(void);
+void ZeroModes(void);
+
+//
+// TED5-3
+//
+void Item_EditMapEdges(void);
+void Item_PrintMem(void);
+void Item_Huffman(void);
+void CheckInfoValues(int i,int j,int tilei);
+void PrintMem(int x,int y);
+void EraseFloatPaste(void);
+void DrawFloatPaste(void);
+void CopyScreen(int srcx,int srcy,int width,int height,int destx,int desty);
+void Item_LAUNCHname(void);
+void Item_PARMstring(void);
+void Item_ChangeIconRows(void);
+void Item_ChangeLaunchIcon(void);
+void Item_ChangeBkgndColor(void);
+
+//
+// TED5-4
+//
+void SignalSound(void);
+void Item_GraphicDump(void);
+void Item_EditTinfoValues(void);
+void Item_ProjectReSelect(void);
+void Item_AddDelTinfo(void);
+void Item_GridMode(void);
+void Item_SnapTog(void);
+void Item_ViewMap(void);
+void Item_ReviewMap(void);
+void Item_ImportMaps(void);
+void Item_VisitDOS(void);
+void Item_POtog(void);
+void Do_ViewMap(int how);
+int  MakeOBJ(char *filename,char *destfilename,char *public,segtype whichseg,char *farname);
+void DrawTinfoScreen(int thescreen,int deltax,int deltay);
+void EnterTinfoValue(int whichtinfo,int mx,int my,int H_or_V);
+void UseTinfoValue(int whichtinfo,int mx,int my,int PickupOrDrop);