Full Code of electronicarts/CnC_Red_Alert for AI

main 0dc09bb1d618 cached
2066 files
28.0 MB
7.4M tokens
4939 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (29,627K chars total). Download the full file to get everything.
Repository: electronicarts/CnC_Red_Alert
Branch: main
Commit: 0dc09bb1d618
Files: 2066
Total size: 28.0 MB

Directory structure:
gitextract_rc2spqh1/

├── CODE/
│   ├── 2KEYFBUF.ASM
│   ├── 2KEYFRAM.CPP
│   ├── 2SUPPORT.ASM
│   ├── 2TXTPRNT.ASM
│   ├── AADATA.CPP
│   ├── ABSTRACT.CPP
│   ├── ABSTRACT.H
│   ├── ADAMTEMP.MAK
│   ├── ADATA.CPP
│   ├── ADPCM.CPP
│   ├── AIRCRAFT.CPP
│   ├── AIRCRAFT.H
│   ├── ALLOC.CPP
│   ├── ANIM.CPP
│   ├── ANIM.CPP.BAK
│   ├── ANIM.H
│   ├── AUDIO.CPP
│   ├── AUDIO.CPP.BAK
│   ├── AUDIO.H
│   ├── B64PIPE.CPP
│   ├── B64PIPE.H
│   ├── B64STRAW.CPP
│   ├── B64STRAW.H
│   ├── BAR.CPP
│   ├── BAR.H
│   ├── BASE.CPP
│   ├── BASE.H
│   ├── BASE64.CPP
│   ├── BASE64.H
│   ├── BBDATA.CPP
│   ├── BDATA.CPP
│   ├── BENCH.CPP
│   ├── BENCH.H
│   ├── BFILE.MAK
│   ├── BFILE2.MAK
│   ├── BFIOFILE.CPP
│   ├── BFIOFILE.H
│   ├── BIGCHECK.CPP
│   ├── BIGCHECK.H
│   ├── BLOWFISH.CPP
│   ├── BLOWFISH.H
│   ├── BLOWPIPE.CPP
│   ├── BLOWPIPE.H
│   ├── BLWSTRAW.CPP
│   ├── BLWSTRAW.H
│   ├── BMP8.CPP
│   ├── BMP8.H
│   ├── BUFF.CPP
│   ├── BUFF.H
│   ├── BUFFERX.H
│   ├── BUGS.TXT
│   ├── BUILDING.CPP
│   ├── BUILDING.H
│   ├── BULLET.CPP
│   ├── BULLET.H
│   ├── C&CZERO.PJT
│   ├── CARGO.CPP
│   ├── CARGO.H
│   ├── CARRY.CPP
│   ├── CARRY.H
│   ├── CCDDE.CPP
│   ├── CCDDE.H
│   ├── CCFILE.CPP
│   ├── CCFILE.H
│   ├── CCINI.CPP
│   ├── CCINI.H
│   ├── CCMPATH.CPP
│   ├── CCPTR.CPP
│   ├── CCPTR.H
│   ├── CCTEN.CPP
│   ├── CC_ICON.RC
│   ├── CC_ICON.RH
│   ├── CDATA.CPP
│   ├── CDFILE.CPP
│   ├── CDFILE.H
│   ├── CELL.CPP
│   ├── CELL.H
│   ├── CHECKBOX.CPP
│   ├── CHECKBOX.H
│   ├── CHEKLIST.CPP
│   ├── CHEKLIST.H
│   ├── CLASS.CPP
│   ├── CO-WC32.LNT
│   ├── COLRLIST.CPP
│   ├── COLRLIST.H
│   ├── COMBAT.CPP
│   ├── COMBUF.CPP
│   ├── COMBUF.H
│   ├── COMINIT.CPP
│   ├── COMINIT.H
│   ├── COMPAT.H
│   ├── COMQUEUE.CPP
│   ├── COMQUEUE.H
│   ├── CONFDLG.CPP
│   ├── CONFDLG.H
│   ├── CONNECT.CPP
│   ├── CONNECT.CPP.BAK
│   ├── CONNECT.H
│   ├── CONNMGR.H
│   ├── CONQUER.CPP
│   ├── CONQUER.CPP.BAK
│   ├── CONQUER.H
│   ├── CONQUER.IDE
│   ├── CONQUER.LNT
│   ├── CONST.CPP
│   ├── CONTROL.CPP
│   ├── CONTROL.H
│   ├── COORD.CPP
│   ├── COORDA.ASM
│   ├── CPUID.ASM
│   ├── CRATE.CPP
│   ├── CRATE.H
│   ├── CRC.CPP
│   ├── CRC.H
│   ├── CRCPIPE.CPP
│   ├── CRCPIPE.H
│   ├── CRCSTRAW.CPP
│   ├── CRCSTRAW.H
│   ├── CREDITS.CPP
│   ├── CREDITS.H
│   ├── CREW.CPP
│   ├── CREW.H
│   ├── CSTRAW.CPP
│   ├── CSTRAW.H
│   ├── CWSTUB.C
│   ├── DDE.CPP
│   ├── DDE.H
│   ├── DEBUG.CPP
│   ├── DEBUG.H
│   ├── DEFINES.H
│   ├── DESCDLG.CPP
│   ├── DESCDLG.H
│   ├── DIAL8.CPP
│   ├── DIAL8.H
│   ├── DIALOG.CPP
│   ├── DIBAPI.H
│   ├── DIBFILE.CPP
│   ├── DIBUTIL.CPP
│   ├── DIBUTIL.H
│   ├── DISPLAY.CPP
│   ├── DISPLAY.H
│   ├── DOOR.CPP
│   ├── DOOR.H
│   ├── DPMI.CPP
│   ├── DPMI.H
│   ├── DRIVE.CPP
│   ├── DRIVE.H
│   ├── DROP.CPP
│   ├── DROP.H
│   ├── DTABLE.CPP
│   ├── DYNAVEC.CPP
│   ├── EDIT.CPP
│   ├── EDIT.H
│   ├── EGOS.CPP
│   ├── EGOS.H
│   ├── ENDING.CPP
│   ├── ENDING.H
│   ├── ENG/
│   │   ├── CONQUER.BAK
│   │   ├── CONQUER.TXT
│   │   ├── CREDITS.BAK
│   │   ├── CREDITS.TXT
│   │   ├── DEBUG.BAK
│   │   ├── DEBUG.TXT
│   │   ├── ENG/
│   │   │   ├── CONQUER.TXT
│   │   │   └── CREDITS.TXT
│   │   ├── FRE/
│   │   │   ├── CONQUER.TXT
│   │   │   └── CREDITS.TXT
│   │   ├── GER/
│   │   │   ├── CONQUER.TXT
│   │   │   └── CREDITS.TXT
│   │   └── MESSAGE.TXT
│   ├── EVENT.CPP
│   ├── EVENT.H
│   ├── EXPAND.CPP
│   ├── EXTERNS.H
│   ├── FACE.CPP
│   ├── FACE.H
│   ├── FACING.CPP
│   ├── FACING.H
│   ├── FACTORY.CPP
│   ├── FACTORY.H
│   ├── FAKESOCK.H
│   ├── FIELD.CPP
│   ├── FIELD.H
│   ├── FILE.CPP
│   ├── FILEPCX.H
│   ├── FINDPATH.CPP
│   ├── FIXED.CPP
│   ├── FIXED.H
│   ├── FLASHER.CPP
│   ├── FLASHER.H
│   ├── FLY.CPP
│   ├── FLY.H
│   ├── FOOT.CPP
│   ├── FOOT.H
│   ├── FOREIGN.TXT
│   ├── FTIMER.H
│   ├── FUNCTION.H
│   ├── FUNCTION.I
│   ├── FUSE.CPP
│   ├── FUSE.H
│   ├── GADGET.CPP
│   ├── GADGET.H
│   ├── GAMEDLG.CPP
│   ├── GAMEDLG.H
│   ├── GAUGE.CPP
│   ├── GAUGE.H
│   ├── GETCPU.CPP
│   ├── GLOBALS.CPP
│   ├── GOPTIONS.CPP
│   ├── GOPTIONS.H
│   ├── GSCREEN.CPP
│   ├── GSCREEN.H
│   ├── HDATA.CPP
│   ├── HEADER.MAC
│   ├── HEAP.CPP
│   ├── HEAP.H
│   ├── HELP.CPP
│   ├── HELP.H
│   ├── HOUSE.CPP
│   ├── HOUSE.H
│   ├── HSV.CPP
│   ├── HSV.H
│   ├── ICONLIST.CPP
│   ├── ICONLIST.H
│   ├── IDATA.CPP
│   ├── INFANTRY.CPP
│   ├── INFANTRY.H
│   ├── INI.CPP
│   ├── INI.H
│   ├── INIBIN.CPP
│   ├── INICODE.CPP
│   ├── INIT.CPP
│   ├── INIT.CPP.BAK
│   ├── INLINE.H
│   ├── INT.CPP
│   ├── INT.H
│   ├── INTERNET.CPP
│   ├── INTERNET.H
│   ├── INTERPAL.CPP
│   ├── INTRO.CPP
│   ├── INTRO.H
│   ├── IOMAP.CPP
│   ├── IOOBJ.CPP
│   ├── IPX.CPP
│   ├── IPX.H
│   ├── IPX95.CPP
│   ├── IPX95.H
│   ├── IPXADDR.CPP
│   ├── IPXADDR.H
│   ├── IPXCONN.CPP
│   ├── IPXCONN.H
│   ├── IPXGCONN.CPP
│   ├── IPXGCONN.H
│   ├── IPXMGR.CPP
│   ├── IPXMGR.H
│   ├── IPXPROT.ASM
│   ├── IPXREAL.ASM
│   ├── ITABLE.CPP
│   ├── JOEMAKE.BAT
│   ├── JSHELL.CPP
│   ├── JSHELL.H
│   ├── KEY.CPP
│   ├── KEY.H
│   ├── KEYBOARD.CPP
│   ├── KEYBOARD.H
│   ├── KEYFBUFF.ASM
│   ├── KEYFBUFF.ASM.BAK
│   ├── KEYFRAME.CPP
│   ├── LANGUAGE.H
│   ├── LAYER.CPP
│   ├── LAYER.H
│   ├── LCW.CPP
│   ├── LCW.H
│   ├── LCWCOMP.ASM
│   ├── LCWPIPE.CPP
│   ├── LCWPIPE.H
│   ├── LCWSTRAW.CPP
│   ├── LCWSTRAW.H
│   ├── LCWUNCMP.CPP
│   ├── LED.H
│   ├── LIBRARY.TXT
│   ├── LINK.CPP
│   ├── LINK.H
│   ├── LINT.H
│   ├── LIST.CPP
│   ├── LIST.H
│   ├── LISTNODE.H
│   ├── LOADDLG.CPP
│   ├── LOADDLG.H
│   ├── LOGIC.CPP
│   ├── LOGIC.H
│   ├── LZO.H
│   ├── LZO1X.H
│   ├── LZO1X_C.CPP
│   ├── LZO1X_D.CPP
│   ├── LZOCONF.H
│   ├── LZOPIPE.CPP
│   ├── LZOPIPE.H
│   ├── LZOSTRAW.CPP
│   ├── LZOSTRAW.H
│   ├── LZO_CONF.H
│   ├── LZW.CPP
│   ├── LZW.H
│   ├── LZWOTRAW.CPP
│   ├── LZWPIPE.CPP
│   ├── LZWPIPE.H
│   ├── LZWSTRAW.CPP
│   ├── LZWSTRAW.H
│   ├── MAKEFILE
│   ├── MAKE_ALL.BAT
│   ├── MAP.CPP
│   ├── MAP.H
│   ├── MAPEDDLG.CPP
│   ├── MAPEDIT.CPP
│   ├── MAPEDIT.H
│   ├── MAPEDPLC.CPP
│   ├── MAPEDSEL.CPP
│   ├── MAPEDTM.CPP
│   ├── MAPSEL.CPP
│   ├── MCI.CPP
│   ├── MCI.H
│   ├── MCIMOVIE.CPP
│   ├── MCIMOVIE.H
│   ├── MEMCHECK.H
│   ├── MENUS.CPP
│   ├── MESSAGE.H
│   ├── MISSION.CPP
│   ├── MISSION.H
│   ├── MIXFILE.CPP
│   ├── MIXFILE.H
│   ├── MONOC.CPP
│   ├── MONOC.H
│   ├── MOUSE.CPP
│   ├── MOUSE.H
│   ├── MOVIE.H
│   ├── MP.CPP
│   ├── MP.H
│   ├── MPGSET.CPP
│   ├── MPGSET.H
│   ├── MPLAYER.CPP
│   ├── MPLIB.CPP
│   ├── MPLPC.CPP
│   ├── MPMGRD.CPP
│   ├── MPMGRD.H
│   ├── MPMGRW.CPP
│   ├── MPMGRW.H
│   ├── MPU.CPP
│   ├── MPU.H
│   ├── MSGBOX.CPP
│   ├── MSGBOX.CPP.BAK
│   ├── MSGBOX.H
│   ├── MSGLIST.CPP
│   ├── MSGLIST.H
│   ├── NETDLG.CPP
│   ├── NOSEQCON.CPP
│   ├── NOSEQCON.H
│   ├── NULLCONN.CPP
│   ├── NULLCONN.H
│   ├── NULLDLG.CPP
│   ├── NULLMGR.CPP
│   ├── NULLMGR.H
│   ├── NUMBER.CPP
│   ├── OBJECT.CPP
│   ├── OBJECT.H
│   ├── ODATA.CPP
│   ├── OPTIONS.CPP
│   ├── OPTIONS.H
│   ├── OPTIONS.LNT
│   ├── OVERLAY.CPP
│   ├── OVERLAY.H
│   ├── PACKET.CPP
│   ├── PACKET.H
│   ├── PIPE.CPP
│   ├── PIPE.H
│   ├── PK.CPP
│   ├── PK.H
│   ├── PKPIPE.CPP
│   ├── PKPIPE.H
│   ├── PKSTRAW.CPP
│   ├── PKSTRAW.H
│   ├── POWER.CPP
│   ├── POWER.H
│   ├── PROFILE.CPP
│   ├── PROFILE.DEF
│   ├── QUEUE.CPP
│   ├── QUEUE.H
│   ├── RA-HDOS.PJT
│   ├── RA-HOME.PJT
│   ├── RA95.PJT
│   ├── RADAR.CPP
│   ├── RADAR.H
│   ├── RADIO.CPP
│   ├── RADIO.H
│   ├── RADOS.PJT
│   ├── RAMFILE.CPP
│   ├── RAMFILE.H
│   ├── RAND.CPP
│   ├── RANDOM.CPP
│   ├── RANDOM.H
│   ├── RAWFILE.CPP
│   ├── RAWFILE.H
│   ├── RAWOLAPI.CPP
│   ├── RAWOLAPI.H
│   ├── READLINE.CPP
│   ├── READLINE.H
│   ├── RECT.CPP
│   ├── RECT.H
│   ├── REDALERT.IDE
│   ├── REGION.H
│   ├── REINF.CPP
│   ├── RGB.CPP
│   ├── RGB.H
│   ├── RNDSTRAW.CPP
│   ├── RNDSTRAW.H
│   ├── RNG.H
│   ├── ROTBMP.CPP
│   ├── ROTBMP.H
│   ├── RULES.CPP
│   ├── RULES.H
│   ├── RULES.MAK
│   ├── SAVEDLG.H
│   ├── SAVELOAD.CPP
│   ├── SCENARIO.CPP
│   ├── SCENARIO.H
│   ├── SCORE.CPP
│   ├── SCORE.H
│   ├── SCREEN.H
│   ├── SCROLL.CPP
│   ├── SCROLL.H
│   ├── SDATA.CPP
│   ├── SEARCH.H
│   ├── SEDITDLG.CPP
│   ├── SEDITDLG.H
│   ├── SENDFILE.CPP
│   ├── SEQCONN.CPP
│   ├── SEQCONN.H
│   ├── SESSION.CPP
│   ├── SESSION.H
│   ├── SHA.CPP
│   ├── SHA.H
│   ├── SHAPEBTN.CPP
│   ├── SHAPEBTN.H
│   ├── SHAPIPE.CPP
│   ├── SHAPIPE.H
│   ├── SHASTRAW.CPP
│   ├── SHASTRAW.H
│   ├── SIDEBAR.CPP
│   ├── SIDEBAR.H
│   ├── SLIDER.CPP
│   ├── SLIDER.H
│   ├── SMUDGE.CPP
│   ├── SMUDGE.H
│   ├── SOUNDDLG.CPP
│   ├── SOUNDDLG.H
│   ├── SPECIAL.CPP
│   ├── SPECIAL.H
│   ├── SPRITE.CPP
│   ├── STAGE.H
│   ├── STARTUP.CPP
│   ├── STATBTN.CPP
│   ├── STATBTN.H
│   ├── STATS.CPP
│   ├── STD.LNT
│   ├── STRAW.CPP
│   ├── STRAW.H
│   ├── STUB.CPP
│   ├── STUFF.TXT
│   ├── STYLE.H
│   ├── SUPER.CPP
│   ├── SUPER.H
│   ├── SUPPORT.ASM
│   ├── SURFACE.CPP
│   ├── SURFACE.H
│   ├── TAB.CPP
│   ├── TAB.H
│   ├── TACTION.CPP
│   ├── TACTION.H
│   ├── TARCOM.CPP
│   ├── TARCOM.H
│   ├── TARGET.CPP
│   ├── TARGET.H
│   ├── TASM.CFG
│   ├── TCPIP.CPP
│   ├── TCPIP.H
│   ├── TDATA.CPP
│   ├── TEAM.CPP
│   ├── TEAM.H
│   ├── TEAMTYPE.CPP
│   ├── TEAMTYPE.H
│   ├── TECHNO.CPP
│   ├── TECHNO.H
│   ├── TEMP.CPP
│   ├── TEMPLATE.CPP
│   ├── TEMPLATE.H
│   ├── TENMGR.CPP
│   ├── TENMGR.H
│   ├── TERRAIN.CPP
│   ├── TERRAIN.H
│   ├── TEVENT.CPP
│   ├── TEVENT.H
│   ├── TEXTBTN.CPP
│   ├── TEXTBTN.H
│   ├── THEME.CPP
│   ├── THEME.H
│   ├── TLINK.CFG
│   ├── TODO.TXT
│   ├── TOGGLE.CPP
│   ├── TOGGLE.H
│   ├── TOOLTIP.CPP
│   ├── TOOLTIP.H
│   ├── TRACKER.CPP
│   ├── TRIGGER.CPP
│   ├── TRIGGER.H
│   ├── TRIGTYPE.CPP
│   ├── TRIGTYPE.H
│   ├── TURBOC.CFG
│   ├── TURRET.CPP
│   ├── TURRET.H
│   ├── TXTLABEL.CPP
│   ├── TXTLABEL.H
│   ├── TXTPRNT.ASM
│   ├── TYPE.H
│   ├── UDATA.CPP
│   ├── UDPADDR.CPP
│   ├── UNIT.CPP
│   ├── UNIT.H
│   ├── UTRACKER.CPP
│   ├── UTRACKER.H
│   ├── VDATA.CPP
│   ├── VECTOR.CPP
│   ├── VECTOR.H
│   ├── VERSION.CPP
│   ├── VERSION.H
│   ├── VER_FUNC.TXT
│   ├── VESSEL.CPP
│   ├── VESSEL.H
│   ├── VISUDLG.CPP
│   ├── VISUDLG.H
│   ├── VORTEX.CPP
│   ├── VORTEX.H
│   ├── W95TRACE.CPP
│   ├── W95TRACE.H
│   ├── WARHEAD.CPP
│   ├── WARHEAD.H
│   ├── WATCOM.H
│   ├── WEAPON.CPP
│   ├── WEAPON.H
│   ├── WIDEFUNC.MAC
│   ├── WIDEHDR.MAC
│   ├── WINASM.ASM
│   ├── WINSTUB.CPP
│   ├── WOLAPI/
│   │   ├── CHATDEFS.H
│   │   ├── DOWNLOADDEFS.H
│   │   ├── FTPDEFS.H
│   │   ├── NETUTILDEFS.H
│   │   ├── WOLAPI.H
│   │   └── WOLAPI_I.C
│   ├── WOLAPIOB.CPP
│   ├── WOLAPIOB.H
│   ├── WOLDEBUG.H
│   ├── WOLEDIT.CPP
│   ├── WOLEDIT.H
│   ├── WOLSTRNG.CPP
│   ├── WOLSTRNG.H
│   ├── WOL_CGAM.CPP
│   ├── WOL_CHAT.CPP
│   ├── WOL_DNLD.CPP
│   ├── WOL_GSUP.CPP
│   ├── WOL_GSUP.H
│   ├── WOL_LOGN.CPP
│   ├── WOL_MAIN.CPP
│   ├── WOL_OPT.CPP
│   ├── WRITEPCX.CPP
│   ├── WSPIPX.CPP
│   ├── WSPIPX.H
│   ├── WSPROTO.CPP
│   ├── WSPROTO.H
│   ├── WSPUDP.CPP
│   ├── WSPUDP.H
│   ├── WWALLOC.H
│   ├── WWFILE.H
│   ├── XPIPE.CPP
│   ├── XPIPE.H
│   ├── XSTRAW.CPP
│   ├── XSTRAW.H
│   ├── _WSPROTO.CPP
│   └── _WSPROTO.H
├── IPX/
│   ├── FIXTHUNK.CPP
│   ├── IPX.RC
│   ├── IPX16.ASM
│   ├── IPX16.BAK
│   ├── IPX16.H
│   ├── IPX16A.ASM
│   ├── IPX16C.CPP
│   ├── IPXTEST.CPP
│   ├── MAKE.BAK
│   ├── MAKE.BAT
│   ├── MAKEFILE
│   ├── MAKETH16.BAK
│   ├── MAKETH16.BAT
│   ├── MAKETH32.BAK
│   ├── MAKETH32.BAT
│   ├── OK/
│   │   ├── FIXTHUNK.CPP
│   │   ├── IPX.RC
│   │   ├── IPX16.ASM
│   │   ├── IPX16.BAK
│   │   ├── IPX16.H
│   │   ├── IPX16A.ASM
│   │   ├── IPX16C.CPP
│   │   ├── IPXTEST.CPP
│   │   ├── MAKE.BAK
│   │   ├── MAKE.BAT
│   │   ├── MAKETH16.BAK
│   │   ├── MAKETH16.BAT
│   │   ├── MAKETH32.BAK
│   │   ├── MAKETH32.BAT
│   │   ├── OLTHIPX.ASM
│   │   ├── PCMACRO.16
│   │   ├── THIPX.ASM
│   │   ├── THIPX.BAK
│   │   ├── THIPX.THK
│   │   ├── THIPX16C.CPP
│   │   ├── THIPX32C.CPP
│   │   ├── THMAP16.ASM
│   │   ├── THMAP32.ASM
│   │   ├── WWIPX.ASM
│   │   └── WWIPX16.ASM
│   ├── OLD/
│   │   └── IPX16A.ASM
│   ├── OLTHIPX.ASM
│   ├── PCMACRO.16
│   ├── THIPX.ASM
│   ├── THIPX.BAK
│   ├── THIPX.THK
│   ├── THIPX16C.CPP
│   ├── THIPX32C.CPP
│   ├── THMAP16.ASM
│   ├── THMAP32.ASM
│   ├── WWIPX.ASM
│   └── WWIPX16.ASM
├── LAUNCH/
│   ├── LAUNCH.ASM
│   └── PCMACRO.16
├── LAUNCHER/
│   ├── 256BMP.C
│   ├── BITMAP.CPP
│   ├── CONFIGFILE.CPP
│   ├── CONFIGFILE.H
│   ├── DIALOG.CPP
│   ├── DIALOG.H
│   ├── DICTIONARY.H
│   ├── FILED.H
│   ├── FINDPATCH.CPP
│   ├── FINDPATCH.H
│   ├── LAUNCHER.DSP
│   ├── LAUNCHER.DSW
│   ├── LAUNCHER1.RC
│   ├── LOADBMP.CPP
│   ├── LOADBMP.H
│   ├── MAIN.CPP
│   ├── MONOD.CPP
│   ├── MONOD.H
│   ├── ODEVICE.H
│   ├── PATCH.CPP
│   ├── PATCH.H
│   ├── PROCESS.CPP
│   ├── PROCESS.H
│   ├── RESOURCE.H
│   ├── STREAMER.CPP
│   ├── STREAMER.H
│   ├── UTIL/
│   │   ├── FILED.H
│   │   ├── MBOXD.H
│   │   ├── MONOD.CPP
│   │   ├── MONOD.H
│   │   ├── ODEVICE.H
│   │   ├── STDERRD.H
│   │   ├── STDOUTD.H
│   │   ├── STREAMER.CPP
│   │   ├── STREAMER.H
│   │   ├── SYSLOGD.CPP
│   │   ├── SYSLOGD.H
│   │   ├── WDEBUG.CPP
│   │   └── WDEBUG.H
│   ├── WDEBUG.CPP
│   ├── WDEBUG.H
│   ├── WINBLOWS.CPP
│   ├── WINBLOWS.H
│   ├── WSTRING.CPP
│   ├── WSTRING.H
│   └── WSTYPES.H
├── LICENSE.md
├── README.md
├── TOOLS/
│   ├── ANIMATE.EXE.OLD
│   ├── AUDIOMAK/
│   │   ├── AUDIOMAK.CPP
│   │   ├── AUDIOMAK.PJT
│   │   ├── MAKEFILE
│   │   ├── SCODE.ASM
│   │   ├── TASM.CFG
│   │   ├── TLINK.CFG
│   │   └── TURBOC.CFG
│   └── MIX/
│       ├── MIXFILE.CPP
│       ├── MIXFILE.IDE
│       └── MIXFILE.IDE.BAK
├── VQ/
│   ├── INCLUDE/
│   │   ├── HMI32/
│   │   │   ├── SOS.H
│   │   │   ├── SOSDATA.H
│   │   │   ├── SOSDEFS.H
│   │   │   ├── SOSFNCT.H
│   │   │   └── SOSRES.H
│   │   ├── VOCFILE.H
│   │   ├── VQ.H
│   │   ├── VQA32/
│   │   │   ├── VQAFILE.H
│   │   │   ├── VQAPLAY.BAK
│   │   │   └── VQAPLAY.H
│   │   ├── VQM32/
│   │   │   ├── ALL.H
│   │   │   ├── CAPTOKEN.H
│   │   │   ├── COMPRESS.H
│   │   │   ├── CRC.H
│   │   │   ├── FONT.H
│   │   │   ├── GRAPHICS.H
│   │   │   ├── HUFFMAN.H
│   │   │   ├── IFF.H
│   │   │   ├── MEM.H
│   │   │   ├── MIXFILE.H
│   │   │   ├── MONO.H
│   │   │   ├── PALETTE.H
│   │   │   ├── PORTIO.H
│   │   │   ├── PROFILE.H
│   │   │   ├── REALMODE.H
│   │   │   ├── SOSCOMP.H
│   │   │   ├── TARGA.H
│   │   │   ├── TEXT.H
│   │   │   ├── VESABLIT.H
│   │   │   ├── VESAVID.H
│   │   │   ├── VESAVID.I
│   │   │   ├── VGA.I
│   │   │   ├── VIDEO.H
│   │   │   └── VIDEO.I
│   │   ├── WAVEFILE.H
│   │   ├── WWLIB32/
│   │   │   ├── AUDIO.H
│   │   │   ├── BUFFER.H
│   │   │   ├── DESCMGMT.H
│   │   │   ├── DIPTHONG.H
│   │   │   ├── FILE.H
│   │   │   ├── FILETEMP.H
│   │   │   ├── FONT.H
│   │   │   ├── FUNCTION.H
│   │   │   ├── GBUFFER.H
│   │   │   ├── GBUFFER.INC
│   │   │   ├── IFF.H
│   │   │   ├── KEYBOARD.H
│   │   │   ├── KEYBOARD.INC
│   │   │   ├── KEYSTRUC.INC
│   │   │   ├── MCGAPRIM.H
│   │   │   ├── MCGAPRIM.INC
│   │   │   ├── MEMFLAG.H
│   │   │   ├── MISC.H
│   │   │   ├── MONO.H
│   │   │   ├── PALETTE.H
│   │   │   ├── PLAYCD.H
│   │   │   ├── SHAPE.H
│   │   │   ├── SHAPE.INC
│   │   │   ├── SOS.H
│   │   │   ├── SOSCOMP.H
│   │   │   ├── SOSDATA.H
│   │   │   ├── SOSDEFS.H
│   │   │   ├── SOSFNCT.H
│   │   │   ├── SOSRES.H
│   │   │   ├── SOUND.H
│   │   │   ├── STAMP.INC
│   │   │   ├── SVGAPRIM.INC
│   │   │   ├── TILE.H
│   │   │   ├── TIMER.H
│   │   │   ├── VBUFFER.H
│   │   │   ├── VIDEO.H
│   │   │   ├── WINDOWS.H
│   │   │   ├── WSA.H
│   │   │   ├── WWLIB32.H
│   │   │   ├── WWMEM.H
│   │   │   ├── WWMEM.INC
│   │   │   ├── WWSTD.H
│   │   │   └── _FILE.H
│   │   └── WWTYPES.H
│   ├── LIB/
│   │   └── README.TXT
│   ├── VQA32/
│   │   ├── AUDIO.BAK1
│   │   ├── AUDIO.BAK2
│   │   ├── AUDIO.CPP
│   │   ├── BCC32.CFG
│   │   ├── CAPTION.CPP
│   │   ├── CAPTION.H
│   │   ├── CONFIG.CPP
│   │   ├── DRAWER.BAK
│   │   ├── DRAWER.CPP
│   │   ├── DSTREAM.CPP
│   │   ├── LOADER.BAK
│   │   ├── LOADER.CPP
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BAK
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── MONODISP.BAK
│   │   ├── MONODISP.CPP
│   │   ├── SOS.H
│   │   ├── SOSDATA.H
│   │   ├── SOSDEFS.H
│   │   ├── SOSFNCT.H
│   │   ├── SOSRES.H
│   │   ├── TASK.CPP
│   │   ├── TASM32.CFG
│   │   ├── TLIB.CFG
│   │   ├── TLINK32.CFG
│   │   ├── UNVQ.H
│   │   ├── UNVQBUFF.ASM
│   │   ├── UNVQVESA.ASM
│   │   ├── UNVQXMDE.ASM
│   │   ├── UNVQXMDE.ASM.BAK
│   │   ├── VERTAG.CPP
│   │   ├── VQAFILE.H
│   │   ├── VQAPLAY.BAK
│   │   ├── VQAPLAY.H
│   │   ├── VQAPLAY.I
│   │   └── VQAPLAYP.H
│   └── VQM32/
│       ├── ALL.H
│       ├── AUDUNZAP.ASM
│       ├── AUDZAP.CPP
│       ├── BCC32.CFG
│       ├── CAPTOKEN.CPP
│       ├── CAPTOKEN.H
│       ├── CHRWIDTH.CPP
│       ├── COMPRESS.H
│       ├── CRC.ASM
│       ├── CRC.H
│       ├── DRAWCHAR.ASM
│       ├── FILLRECT.ASM
│       ├── FONT.CPP
│       ├── FONT.H
│       ├── GRAPHICS.H
│       ├── HUFFCMP.CPP
│       ├── HUFFDCMP.ASM
│       ├── HUFFMAN.H
│       ├── IFF.CPP
│       ├── IFF.H
│       ├── LCWCOMP.ASM
│       ├── LCWUNCMP.ASM
│       ├── MAKEFILE
│       ├── MAKEFILE.BAK
│       ├── MAKEFILE.BOR
│       ├── MAKEFILE.WAT
│       ├── MCGABUF.ASM
│       ├── MEM.CPP
│       ├── MEM.H
│       ├── MIXFILE.CPP
│       ├── MIXFILE.H
│       ├── MONO.ASM
│       ├── MONO.H
│       ├── PALETTE.ASM
│       ├── PALETTE.H
│       ├── PORTIO.ASM
│       ├── PORTIO.H
│       ├── PROFILE.CPP
│       ├── PROFILE.H
│       ├── REALMODE.H
│       ├── SORTPAL.CPP
│       ├── SOSCODEC.ASM
│       ├── SOSCOMP.H
│       ├── TARGA.CPP
│       ├── TARGA.H
│       ├── TASM32.CFG
│       ├── TESTVB.CPP
│       ├── TEXT.H
│       ├── TEXTPRNT.ASM
│       ├── TLIB.CFG
│       ├── TLINK32.CFG
│       ├── VB.ASM
│       ├── VERTAG.CPP
│       ├── VESABLIT.CPP
│       ├── VESABLIT.H
│       ├── VESABUF.ASM
│       ├── VESAVID.CPP
│       ├── VESAVID.H
│       ├── VESAVID.I
│       ├── VGA.I
│       ├── VIDEO.CPP
│       ├── VIDEO.H
│       ├── VIDEO.I
│       ├── XMODE.ASM
│       └── XMODEPG.CPP
├── WIN32LIB/
│   ├── AUDIO/
│   │   ├── AUDIO.H
│   │   ├── AUDIO.IDE
│   │   ├── AUDUNCMP.ASM
│   │   ├── DIFFTB.INC
│   │   ├── FUNCTION.H
│   │   ├── INDEXTB.INC
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── NYBBTB.INC
│   │   ├── OLD/
│   │   │   ├── AUDIO.H
│   │   │   ├── AUDIO.IDE
│   │   │   ├── AUDUNCMP.ASM
│   │   │   ├── DIFFTB.INC
│   │   │   ├── FUNCTION.H
│   │   │   ├── INDEXTB.INC
│   │   │   ├── MAKEFILE
│   │   │   ├── MAKEFILE.BOR
│   │   │   ├── MAKEFILE.WAT
│   │   │   ├── NYBBTB.INC
│   │   │   ├── OLSOSDEC.ASM
│   │   │   ├── SOS.H
│   │   │   ├── SOSCODEC.ASM
│   │   │   ├── SOSCOMP.H
│   │   │   ├── SOSDATA.H
│   │   │   ├── SOSDEFS.H
│   │   │   ├── SOSFNCT.H
│   │   │   ├── SOSRES.H
│   │   │   ├── SOUND.H
│   │   │   ├── SOUNDINT.CPP
│   │   │   ├── SOUNDINT.H
│   │   │   ├── SOUNDIO.CPP
│   │   │   ├── SOUNDLCK.CPP
│   │   │   ├── TEST.CPP
│   │   │   └── TST.CPP
│   │   ├── OLSOSDEC.ASM
│   │   ├── SOS.H
│   │   ├── SOSCODEC.ASM
│   │   ├── SOSCOMP.H
│   │   ├── SOSDATA.H
│   │   ├── SOSDEFS.H
│   │   ├── SOSFNCT.H
│   │   ├── SOSRES.H
│   │   ├── SOUND.H
│   │   ├── SOUNDINT.CPP
│   │   ├── SOUNDINT.H
│   │   ├── SOUNDIO.CPP
│   │   ├── SOUNDLCK.CPP
│   │   ├── TEST.CPP
│   │   └── TST.CPP
│   ├── DIPTHONG/
│   │   ├── DIPTHONG.CPP
│   │   ├── DIPTHONG.H
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   └── _DIPTABL.CPP
│   ├── DRAWBUFF/
│   │   ├── BITBLIT.ASM
│   │   ├── BUFFER.CPP
│   │   ├── BUFFER.H
│   │   ├── BUFFGLBL.CPP
│   │   ├── CLEAR.ASM
│   │   ├── DRAWBUFF.H
│   │   ├── DRAWBUFF.INC
│   │   ├── DRAWLINE.ASM
│   │   ├── DRAWRECT.CPP
│   │   ├── FILLQUAD.ASM
│   │   ├── FILLRECT.ASM
│   │   ├── FTPUTPIX.ASM
│   │   ├── GBUFFER.CPP
│   │   ├── GBUFFER.H
│   │   ├── GBUFFER.INC
│   │   ├── GETCLIP.ASM
│   │   ├── GETPIX.ASM
│   │   ├── ICONCACH.CPP
│   │   ├── ICONCACH.H
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── PUTPIX.ASM
│   │   ├── REGIONSZ.CPP
│   │   ├── REMAP.ASM
│   │   ├── SCALE.ASM
│   │   ├── SHADOW.ASM
│   │   ├── STAMP.ASM
│   │   ├── STAMP.INC
│   │   ├── STMPCACH.ASM
│   │   ├── SZREGION.ASM
│   │   ├── TEST/
│   │   │   ├── HOLD.DEF
│   │   │   ├── MAKEFILE
│   │   │   ├── MAKEFILE.BOR
│   │   │   ├── MAKEFILE.WAT
│   │   │   ├── TEST/
│   │   │   │   └── TEST.CPP
│   │   │   ├── TEST.BAK
│   │   │   ├── TEST.CPP
│   │   │   ├── TEST.DEF
│   │   │   └── TESTASM.ASM
│   │   ├── TOBUFF.ASM
│   │   ├── TOPAGE.ASM
│   │   └── TXTPRNT.ASM
│   ├── EXAMPLE/
│   │   ├── DEFINES.H
│   │   ├── EXTERNS.H
│   │   ├── FUNCTION.H
│   │   ├── GLOBALS.CPP
│   │   ├── MAIN.CPP
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── STARTUP.CPP
│   │   ├── STRUCTS.H
│   │   └── WWLIB32.H
│   ├── FONT/
│   │   ├── FONT.CPP
│   │   ├── FONT.H
│   │   ├── LOADFONT.CPP
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── SETFPAL.ASM
│   │   ├── SET_FONT.CPP
│   │   └── TEXTPRNT.ASM
│   ├── IFF/
│   │   ├── FILEPCX.H
│   │   ├── IFF.CPP
│   │   ├── IFF.H
│   │   ├── LCWCOMP.ASM
│   │   ├── LCWUNCMP.ASM
│   │   ├── LOAD.CPP
│   │   ├── LOADPCX.CPP
│   │   ├── LOADPICT.CPP
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── PACK2PLN.ASM
│   │   ├── WRITELBM.CPP
│   │   └── WRITEPCX.CPP
│   ├── INCLUDE/
│   │   ├── AUDIO.H
│   │   ├── BUFFER.H
│   │   ├── DEFINES.H
│   │   ├── DESCMGMT.H
│   │   ├── DIFFTB.INC
│   │   ├── DIPTHONG.H
│   │   ├── DRAWBUFF.H
│   │   ├── DRAWBUFF.INC
│   │   ├── EXTERNS.H
│   │   ├── FILE.H
│   │   ├── FILEPCX.H
│   │   ├── FILETEMP.H
│   │   ├── FONT.H
│   │   ├── FUNCTION.H
│   │   ├── GBUFFER.H
│   │   ├── GBUFFER.INC
│   │   ├── ICONCACH.H
│   │   ├── IFF.H
│   │   ├── INDEXTB.INC
│   │   ├── KEYBOARD.H
│   │   ├── KEYBOARD.INC
│   │   ├── KEYSTRUC.INC
│   │   ├── MCGAPRIM.INC
│   │   ├── MEMFLAG.H
│   │   ├── MISC.H
│   │   ├── MODEMREG.H
│   │   ├── MONO.H
│   │   ├── MOUSE.H
│   │   ├── MOUSE.INC
│   │   ├── NYBBTB.INC
│   │   ├── PALETTE.H
│   │   ├── PLAYCD.H
│   │   ├── PROFILE.H
│   │   ├── PROFILE.INC
│   │   ├── RAWFILE.H
│   │   ├── SHAPE.H
│   │   ├── SHAPE.INC
│   │   ├── SOS.H
│   │   ├── SOSCOMP.H
│   │   ├── SOSDATA.H
│   │   ├── SOSDEFS.H
│   │   ├── SOSFNCT.H
│   │   ├── SOSRES.H
│   │   ├── SOUND.H
│   │   ├── SOUNDINT.H
│   │   ├── STAMP.INC
│   │   ├── STRUCTS.H
│   │   ├── SVGAPRIM.INC
│   │   ├── TILE.H
│   │   ├── TIMER.H
│   │   ├── VIDEO.H
│   │   ├── WINCOMM.H
│   │   ├── WSA.H
│   │   ├── WWFILE.H
│   │   ├── WWLIB32.H
│   │   ├── WWMEM.H
│   │   ├── WWMEM.INC
│   │   ├── WWSTD.H
│   │   ├── WW_WIN.H
│   │   └── _FILE.H
│   ├── KEYBOARD/
│   │   ├── KEYBOARD.CPP
│   │   ├── KEYBOARD.H
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── MOUSE.CPP
│   │   ├── MOUSE.H
│   │   ├── MOUSE.INC
│   │   ├── OLD/
│   │   │   ├── KEYBOARD.ASM
│   │   │   ├── KEYBOARD.BAK
│   │   │   ├── KEYBOARD.CPP
│   │   │   ├── KEYBOARD.H
│   │   │   ├── KEYBOARD.INC
│   │   │   ├── KEYIPROT.ASM
│   │   │   ├── KEYIREAL.ASM
│   │   │   ├── KEYIREAL.IBN
│   │   │   ├── KEYSTRUC.INC
│   │   │   ├── MAKEFILE
│   │   │   ├── MAKEFILE.BAK
│   │   │   ├── MAKEFILE.BOR
│   │   │   ├── MAKEFILE.WAT
│   │   │   ├── MOUSE.ASM
│   │   │   ├── MOUSE.CPP
│   │   │   ├── MOUSE.CPP.BAK
│   │   │   ├── MOUSE.H
│   │   │   ├── MOUSE.INC
│   │   │   ├── PAGFAULT.ASM
│   │   │   ├── WWMOUSE.ASM
│   │   │   └── WWMOUSE.ASM.BAK
│   │   ├── OLDTEST/
│   │   │   ├── KEYBOARD.CPP
│   │   │   ├── KEYBOARD.H
│   │   │   ├── MAKEFILE
│   │   │   ├── MAKEFILE.BOR
│   │   │   ├── MAKEFILE.WAT
│   │   │   ├── TEST.CPP
│   │   │   └── TEST.DEF
│   │   ├── TEST/
│   │   │   ├── HOLD.DEF
│   │   │   ├── KEYBOARD.CPP
│   │   │   ├── KEYBOARD.H
│   │   │   ├── MAKEFILE
│   │   │   ├── MAKEFILE.BOR
│   │   │   ├── MAKEFILE.WAT
│   │   │   ├── TEST.CPP
│   │   │   ├── TEST.DEF
│   │   │   └── TESTASM.ASM
│   │   └── WWMOUSE.ASM
│   ├── MAKE.BAT
│   ├── MAKEFILE
│   ├── MAKEFILE.BOR
│   ├── MAKE_EXE.MAK
│   ├── MAKE_LIB.MAK
│   ├── MEM/
│   │   ├── ALLOC.CPP
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── MEM.CPP
│   │   ├── MEMFLAG.H
│   │   ├── MEM_COPY.ASM
│   │   ├── MSVC/
│   │   │   ├── ALLOC.CPP
│   │   │   ├── MAKEFILE
│   │   │   ├── MAKEFILE.BOR
│   │   │   ├── MAKEFILE.WAT
│   │   │   ├── MEM.CPP
│   │   │   ├── MEM.MAK
│   │   │   ├── MEMFLAG.H
│   │   │   ├── MEM_COPY.ASM
│   │   │   ├── NEWDEL.CPP
│   │   │   ├── WWMEM.H
│   │   │   └── WWMEM.INC
│   │   ├── NEWDEL.CPP
│   │   ├── OLDMEM/
│   │   │   ├── ALLOC.CPP
│   │   │   ├── MAKEFILE
│   │   │   ├── MAKEFILE.BOR
│   │   │   ├── MAKEFILE.WAT
│   │   │   ├── MEM.CPP
│   │   │   ├── MEMFLAG.H
│   │   │   ├── MEM_COPY.ASM
│   │   │   ├── NEWDEL.CPP
│   │   │   ├── WWMEM.H
│   │   │   └── WWMEM.INC
│   │   ├── VMPAGEIN.ASM
│   │   ├── WWMEM.H
│   │   └── WWMEM.INC
│   ├── MISC/
│   │   ├── CLIPRECT.ASM
│   │   ├── CRC.ASM
│   │   ├── DDRAW.CPP
│   │   ├── DELAY.CPP
│   │   ├── DETPROC.ASM
│   │   ├── EXIT.CPP
│   │   ├── FACING16.ASM
│   │   ├── FACING8.ASM
│   │   ├── FACINGFF.ASM
│   │   ├── FADING.ASM
│   │   ├── FINDARGV.CPP
│   │   ├── IRANDOM.CPP
│   │   ├── LIB.CPP
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── MISC.H
│   │   ├── OPSYS.ASM
│   │   ├── RANDOM.ASM
│   │   ├── REVERSE.ASM
│   │   ├── SHAKESCR.ASM
│   │   ├── VERSION.CPP
│   │   ├── WWLIB32.H
│   │   └── WWSTD.H
│   ├── MONO/
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── MONO.CPP
│   │   └── MONO.H
│   ├── MOVIE/
│   │   ├── MAKE.BAT
│   │   ├── MAKEFILE
│   │   ├── MOVIE.CPP
│   │   └── MOVIE.H
│   ├── PALETTE/
│   │   ├── LOADPAL.CPP
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MORPHPAL.CPP
│   │   ├── PAL.ASM
│   │   ├── PALETTE.CPP
│   │   └── PALETTE.H
│   ├── PLAYCD/
│   │   ├── GETCD.CPP
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── PLAYCD.ASM
│   │   ├── PLAYCD.H
│   │   └── REDBOOK.CPP
│   ├── PROFILE/
│   │   ├── APROFILE.ASM
│   │   ├── MAKEFILE
│   │   ├── PROFILE.CPP
│   │   ├── PROFILE.H
│   │   ├── PROFILE.INC
│   │   ├── UTIL/
│   │   │   └── PROFILE.CPP
│   │   └── WPROFILE.CPP
│   ├── PROJECT.CFG
│   ├── RAWFILE/
│   │   ├── CCFILE.CPP
│   │   ├── FILE.H
│   │   ├── FILETEMP.H
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── RAWFILE.CPP
│   │   ├── RAWFILE.H
│   │   └── WWFILE.H
│   ├── REBUILD.BAT
│   ├── SHAPE/
│   │   ├── DRAWSHP.ASM
│   │   ├── DS_DN.ASM
│   │   ├── DS_DR.ASM
│   │   ├── DS_DS.ASM
│   │   ├── DS_DSR.ASM
│   │   ├── DS_LRS.ASM
│   │   ├── DS_LS.ASM
│   │   ├── DS_LSRS.ASM
│   │   ├── DS_LSS.ASM
│   │   ├── DS_RRS.ASM
│   │   ├── DS_RS.ASM
│   │   ├── DS_RSRS.ASM
│   │   ├── DS_RSS.ASM
│   │   ├── DS_TABLE.ASM
│   │   ├── GETSHAPE.CPP
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── PRIOINIT.CPP
│   │   ├── SETSHAPE.ASM
│   │   ├── SHAPE.ASM
│   │   ├── SHAPE.H
│   │   └── SHAPE.INC
│   ├── SRCDEBUG/
│   │   ├── ALLOC.CPP
│   │   ├── APROFILE.ASM
│   │   ├── AUDUNCMP.ASM
│   │   ├── BITBLIT.ASM
│   │   ├── BUFFER.CPP
│   │   ├── BUFFGLBL.CPP
│   │   ├── CCFILE.CPP
│   │   ├── CLEAR.ASM
│   │   ├── CLIPRECT.ASM
│   │   ├── CRC.ASM
│   │   ├── DDRAW.CPP
│   │   ├── DELAY.CPP
│   │   ├── DESCMGMT.CPP
│   │   ├── DETPROC.ASM
│   │   ├── DEVICES.ASM
│   │   ├── DEVTABLE.ASM
│   │   ├── DIPTHONG.CPP
│   │   ├── DRAWLINE.ASM
│   │   ├── DRAWRECT.CPP
│   │   ├── DRAWSHP.ASM
│   │   ├── DS_DN.ASM
│   │   ├── DS_DR.ASM
│   │   ├── DS_DS.ASM
│   │   ├── DS_DSR.ASM
│   │   ├── DS_LRS.ASM
│   │   ├── DS_LS.ASM
│   │   ├── DS_LSRS.ASM
│   │   ├── DS_LSS.ASM
│   │   ├── DS_RRS.ASM
│   │   ├── DS_RS.ASM
│   │   ├── DS_RSRS.ASM
│   │   ├── DS_RSS.ASM
│   │   ├── DS_TABLE.ASM
│   │   ├── EXIT.CPP
│   │   ├── FACING16.ASM
│   │   ├── FACING8.ASM
│   │   ├── FACINGFF.ASM
│   │   ├── FADING.ASM
│   │   ├── FFIRST.ASM
│   │   ├── FFIXSEL.ASM
│   │   ├── FGETCS.ASM
│   │   ├── FGETDS.ASM
│   │   ├── FGETSEL.ASM
│   │   ├── FGLOB2.CPP
│   │   ├── FILE.CPP
│   │   ├── FILECACH.CPP
│   │   ├── FILECHNG.CPP
│   │   ├── FILEDATA.CPP
│   │   ├── FILEGLOB.CPP
│   │   ├── FILEINFO.CPP
│   │   ├── FILEINIT.CPP
│   │   ├── FILEIO.CPP
│   │   ├── FILELIB.CPP
│   │   ├── FILESTUB.CPP
│   │   ├── FILLQUAD.ASM
│   │   ├── FILLRECT.ASM
│   │   ├── FINDARGV.CPP
│   │   ├── FINDFILE.CPP
│   │   ├── FONT.CPP
│   │   ├── FTPUTPIX.ASM
│   │   ├── GBUFFER.CPP
│   │   ├── GETCD.CPP
│   │   ├── GETCLIP.ASM
│   │   ├── GETPIX.ASM
│   │   ├── GETSHAPE.CPP
│   │   ├── HARDERR.ASM
│   │   ├── ICONCACH.CPP
│   │   ├── ICONSET.CPP
│   │   ├── IFF.CPP
│   │   ├── INITDLAY.CPP
│   │   ├── INITMONO.CPP
│   │   ├── IRANDOM.CPP
│   │   ├── KEYBOARD.ASM
│   │   ├── KEYBOARD.CPP
│   │   ├── KEYIPROT.ASM
│   │   ├── KEYIREAL.ASM
│   │   ├── LCWCOMP.ASM
│   │   ├── LCWUNCMP.ASM
│   │   ├── LIB.CPP
│   │   ├── LOAD.CPP
│   │   ├── LOADFONT.CPP
│   │   ├── LOADPAL.CPP
│   │   ├── LOADPCX.CPP
│   │   ├── LOADPICT.CPP
│   │   ├── MEM.CPP
│   │   ├── MEM_COPY.ASM
│   │   ├── MODEMREG.CPP
│   │   ├── MONO.ASM
│   │   ├── MONO.CPP
│   │   ├── MONOPRNT.CPP
│   │   ├── MORPHPAL.CPP
│   │   ├── MOUSE.ASM
│   │   ├── MOUSE.CPP
│   │   ├── NEWDEL.CPP
│   │   ├── OLSOSDEC.ASM
│   │   ├── OPSYS.ASM
│   │   ├── PACK2PLN.ASM
│   │   ├── PAGFAULT.ASM
│   │   ├── PAL.ASM
│   │   ├── PALETTE.CPP
│   │   ├── PLAYCD.ASM
│   │   ├── PRIOINIT.CPP
│   │   ├── PROFILE.CPP
│   │   ├── PUTPIX.ASM
│   │   ├── RANDOM.ASM
│   │   ├── RAWFILE.CPP
│   │   ├── REDBOOK.CPP
│   │   ├── REGIONSZ.CPP
│   │   ├── REMAP.ASM
│   │   ├── REVERSE.ASM
│   │   ├── SCALE.ASM
│   │   ├── SETFPAL.ASM
│   │   ├── SETSHAPE.ASM
│   │   ├── SET_FONT.CPP
│   │   ├── SHADOW.ASM
│   │   ├── SHAKESCR.ASM
│   │   ├── SHAPE.ASM
│   │   ├── SOSCODEC.ASM
│   │   ├── SOUNDINT.CPP
│   │   ├── SOUNDIO.CPP
│   │   ├── SOUNDLCK.CPP
│   │   ├── STAMP.ASM
│   │   ├── STMPCACH.ASM
│   │   ├── SZREGION.ASM
│   │   ├── TEST.CPP
│   │   ├── TEXTPRNT.ASM
│   │   ├── TIMER.CPP
│   │   ├── TIMERA.ASM
│   │   ├── TIMERDWN.CPP
│   │   ├── TIMEREAL.ASM
│   │   ├── TIMERINI.CPP
│   │   ├── TOBUFF.ASM
│   │   ├── TOPAGE.ASM
│   │   ├── TST.CPP
│   │   ├── TXTPRNT.ASM
│   │   ├── VBITBLIT.ASM
│   │   ├── VBUFFER.CPP
│   │   ├── VCLEAR.ASM
│   │   ├── VERSION.CPP
│   │   ├── VERTBLNK.ASM
│   │   ├── VESA.ASM
│   │   ├── VESAHOOK.ASM
│   │   ├── VESAINFO.CPP
│   │   ├── VESAREAL.ASM
│   │   ├── VGETPIX.ASM
│   │   ├── VIDEO.CPP
│   │   ├── VLBTOVE.ASM
│   │   ├── VMPAGEIN.ASM
│   │   ├── VPUTPIX.ASM
│   │   ├── VSCALE.ASM
│   │   ├── VSCALE.CPP
│   │   ├── VSCLTOVE.ASM
│   │   ├── VTOBUFF.ASM
│   │   ├── VTOPAGE.ASM
│   │   ├── VTXTPRNT.ASM
│   │   ├── VVBLIT.ASM
│   │   ├── VVETOLB.ASM
│   │   ├── VVETOSCL.ASM
│   │   ├── VVETOSCL.CPP
│   │   ├── WINCOMM.CPP
│   │   ├── WINDOWS.CPP
│   │   ├── WINHIDE.CPP
│   │   ├── WPROFILE.CPP
│   │   ├── WRITELBM.CPP
│   │   ├── WRITEPCX.CPP
│   │   ├── WSA.CPP
│   │   ├── WWMOUSE.ASM
│   │   ├── XORDELTA.ASM
│   │   └── _DIPTABL.CPP
│   ├── TILE/
│   │   ├── ICONSET.CPP
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   └── TILE.H
│   ├── TIMER/
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── TIMER.CPP
│   │   ├── TIMER.H
│   │   ├── TIMER.IDE
│   │   ├── TIMERDWN.CPP
│   │   └── TIMERINI.CPP
│   ├── WINCOMM/
│   │   ├── MAKEFILE
│   │   ├── MODEMREG.CPP
│   │   ├── MODEMREG.H
│   │   ├── WINCOMM.CPP
│   │   └── WINCOMM.H
│   ├── WSA/
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── WSA.CPP
│   │   ├── WSA.H
│   │   └── XORDELTA.ASM
│   └── WW_WIN/
│       ├── MAKEFILE
│       ├── MAKEFILE.BOR
│       ├── MAKEFILE.WAT
│       ├── OLD/
│       │   ├── MAKEFILE
│       │   ├── MAKEFILE.BOR
│       │   ├── MAKEFILE.WAT
│       │   ├── WINDOWS.CPP
│       │   ├── WINHIDE.CPP
│       │   └── WW_WIN.H
│       ├── WINDOWS.CPP
│       ├── WINHIDE.CPP
│       ├── WW_WIN.H
│       ├── WW_WIN.IDE
│       └── WW_WIN.IDE.BAK
├── WINVQ/
│   ├── INCLUDE/
│   │   ├── VOCFILE.H
│   │   ├── VQ.H
│   │   ├── VQA32/
│   │   │   ├── CAPTION.H
│   │   │   ├── SOS.H
│   │   │   ├── SOSDATA.H
│   │   │   ├── SOSDEFS.H
│   │   │   ├── SOSFNCT.H
│   │   │   ├── SOSRES.H
│   │   │   ├── UNVQ.H
│   │   │   ├── VQAFILE.H
│   │   │   ├── VQAPLAY.H
│   │   │   ├── VQAPLAY.H.BAK
│   │   │   └── VQAPLAYP.H
│   │   ├── VQFILE.H
│   │   ├── VQM32/
│   │   │   ├── ALL.H
│   │   │   ├── CAPTOKEN.H
│   │   │   ├── COMPRESS.H
│   │   │   ├── CRC.H
│   │   │   ├── FONT.H
│   │   │   ├── GRAPHICS.H
│   │   │   ├── HUFFMAN.H
│   │   │   ├── IFF.H
│   │   │   ├── MEM.H
│   │   │   ├── MIXFILE.H
│   │   │   ├── MONO.H
│   │   │   ├── PALETTE.H
│   │   │   ├── PORTIO.H
│   │   │   ├── PROFILE.H
│   │   │   ├── REALMODE.H
│   │   │   ├── SOSCOMP.H
│   │   │   ├── TARGA.H
│   │   │   ├── TEXT.H
│   │   │   ├── VESABLIT.H
│   │   │   ├── VESAVID.H
│   │   │   ├── VESAVID.I
│   │   │   ├── VGA.I
│   │   │   ├── VIDEO.H
│   │   │   └── VIDEO.I
│   │   ├── WAVEFILE.H
│   │   └── WWTYPES.H
│   ├── LIB/
│   │   ├── README.TXT
│   │   ├── SOSDBLC.LIB
│   │   ├── SOSDW1CR.LIB
│   │   ├── SOSDW1CS.LIB
│   │   ├── SOSDW1PR.LIB
│   │   ├── SOSDW1PS.LIB
│   │   └── SOSMBLC.LIB
│   ├── VPLAY32/
│   │   ├── BCC32.CFG
│   │   ├── CAPTION.FNT
│   │   ├── EVA.FNT
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── PLYVQA32.CPP
│   │   ├── TASM32.CFG
│   │   ├── TLIB.CFG
│   │   ├── TLINK32.CFG
│   │   └── VPLAYTNT.DEF
│   ├── VQA32/
│   │   ├── AUDIO.CPP
│   │   ├── BCC32.CFG
│   │   ├── CAPTION.CPP
│   │   ├── CAPTION.H
│   │   ├── CONFIG.CPP
│   │   ├── DRAWER.CPP
│   │   ├── DSTREAM.CPP
│   │   ├── LOADER.CPP
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BAK
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── MONODISP.CPP
│   │   ├── OLD/
│   │   │   ├── AUDIO.CPP
│   │   │   ├── BCC32.CFG
│   │   │   ├── CAPTION.CPP
│   │   │   ├── CAPTION.H
│   │   │   ├── CONFIG.CPP
│   │   │   ├── DRAWER.CPP
│   │   │   ├── DSTREAM.CPP
│   │   │   ├── LOADER.CPP
│   │   │   ├── MAKEFILE
│   │   │   ├── MAKEFILE.BOR
│   │   │   ├── MAKEFILE.WAT
│   │   │   ├── MONODISP.CPP
│   │   │   ├── SOS.H
│   │   │   ├── SOSDATA.H
│   │   │   ├── SOSDEFS.H
│   │   │   ├── SOSFNCT.H
│   │   │   ├── SOSRES.H
│   │   │   ├── TASK.CPP
│   │   │   ├── TASM32.CFG
│   │   │   ├── TLIB.CFG
│   │   │   ├── TLINK32.CFG
│   │   │   ├── UNVQ.H
│   │   │   ├── UNVQBUFF.ASM
│   │   │   ├── UNVQVESA.ASM
│   │   │   ├── UNVQXMDE.ASM
│   │   │   ├── VERTAG.CPP
│   │   │   ├── VQAFILE.H
│   │   │   ├── VQAPLAY.H
│   │   │   ├── VQAPLAY.I
│   │   │   └── VQAPLAYP.H
│   │   ├── SOS.H
│   │   ├── SOSDATA.H
│   │   ├── SOSDEFS.H
│   │   ├── SOSFNCT.H
│   │   ├── SOSRES.H
│   │   ├── TASK.CPP
│   │   ├── TASM32.CFG
│   │   ├── TLIB.CFG
│   │   ├── TLINK32.CFG
│   │   ├── UNVQ.H
│   │   ├── UNVQBUFF.ASM
│   │   ├── UNVQVESA.ASM
│   │   ├── UNVQXMDE.ASM
│   │   ├── VERTAG.CPP
│   │   ├── VQAFILE.H
│   │   ├── VQAPLAY.BAK
│   │   ├── VQAPLAY.H
│   │   ├── VQAPLAY.I
│   │   └── VQAPLAYP.H
│   ├── VQAVIEW/
│   │   ├── DEBUG.CPP
│   │   ├── DEBUG.RC
│   │   ├── DIALOGS.RC
│   │   ├── DIALOGS.RH
│   │   ├── GAMETIME.CPP
│   │   ├── GAMETIME.H
│   │   ├── INTERPAL.ASM
│   │   ├── MAIN.CPP
│   │   ├── MAIN.H
│   │   ├── MAINWIND.CPP
│   │   ├── MAINWIND.H
│   │   ├── MAKEFILE
│   │   ├── MENUS.RC
│   │   ├── MENUS.RH
│   │   ├── MONOCHRM.CPP
│   │   ├── MONOCHRM.H
│   │   ├── MOVIES.CPP
│   │   ├── MOVIES.H
│   │   ├── PAL.CPP
│   │   ├── PAL.H
│   │   ├── TEST.MAK
│   │   ├── VIDMODE.H
│   │   ├── VQ.CPP
│   │   ├── VQ.H
│   │   ├── VQAVIEW.IDE
│   │   ├── VQAVIEW.IDE.BAK
│   │   ├── WESTWOOD.H
│   │   ├── WM.CPP
│   │   ├── WM.H
│   │   └── WWLIB.H
│   └── VQM32/
│       ├── ALL.H
│       ├── AUDUNZAP.ASM
│       ├── AUDZAP.CPP
│       ├── BCC32.CFG
│       ├── CAPTOKEN.CPP
│       ├── CAPTOKEN.H
│       ├── CHRWIDTH.CPP
│       ├── COMPRESS.H
│       ├── CRC.ASM
│       ├── CRC.H
│       ├── DRAWCHAR.ASM
│       ├── DRAWCHAR.BAK
│       ├── FILLRECT.ASM
│       ├── FONT.CPP
│       ├── FONT.H
│       ├── GRAPHICS.H
│       ├── HUFFCMP.CPP
│       ├── HUFFDCMP.ASM
│       ├── HUFFMAN.H
│       ├── IFF.CPP
│       ├── IFF.H
│       ├── LCWCOMP.ASM
│       ├── LCWUNCMP.ASM
│       ├── MAKEFILE
│       ├── MAKEFILE.BOR
│       ├── MAKEFILE.WAT
│       ├── MCGABUF.ASM
│       ├── MEM.CPP
│       ├── MEM.H
│       ├── MIXFILE.CPP
│       ├── MIXFILE.H
│       ├── MONO.ASM
│       ├── MONO.H
│       ├── PALETTE.ASM
│       ├── PALETTE.H
│       ├── PORTIO.ASM
│       ├── PORTIO.H
│       ├── PROFILE.CPP
│       ├── PROFILE.H
│       ├── REALMODE.H
│       ├── SORTPAL.CPP
│       ├── SOSCODEC.ASM
│       ├── SOSCOMP.H
│       ├── TARGA.CPP
│       ├── TARGA.H
│       ├── TASM32.CFG
│       ├── TESTVB.CPP
│       ├── TEXT.H
│       ├── TEXTPRNT.ASM
│       ├── TLIB.CFG
│       ├── TLINK32.CFG
│       ├── VB.ASM
│       ├── VERTAG.CPP
│       ├── VESABLIT.CPP
│       ├── VESABLIT.H
│       ├── VESABUF.ASM
│       ├── VESAVID.CPP
│       ├── VESAVID.H
│       ├── VESAVID.I
│       ├── VGA.I
│       ├── VIDEO.CPP
│       ├── VIDEO.H
│       ├── VIDEO.I
│       ├── XMODE.ASM
│       └── XMODEPG.CPP
└── WWFLAT32/
    ├── AUDIO/
    │   ├── AUDIO.BAK
    │   ├── AUDIO.H
    │   ├── AUDUNCMP.ASM
    │   ├── DIFFTB.INC
    │   ├── FUNCTION.H
    │   ├── INDEXTB.INC
    │   ├── MAKEFILE
    │   ├── NEW/
    │   │   ├── AUDIO.H
    │   │   ├── AUDUNCMP.ASM
    │   │   ├── DIFFTB.INC
    │   │   ├── FUNCTION.H
    │   │   ├── INDEXTB.INC
    │   │   ├── MAKEFILE
    │   │   ├── NYBBTB.INC
    │   │   ├── SOS.H
    │   │   ├── SOSCODEC.ASM
    │   │   ├── SOSCOMP.H
    │   │   ├── SOSDATA.H
    │   │   ├── SOSDEFS.H
    │   │   ├── SOSDW1PS.LIB
    │   │   ├── SOSFNCT.H
    │   │   ├── SOSRES.H
    │   │   ├── SOUND.BAK
    │   │   ├── SOUND.H
    │   │   ├── SOUNDINT.BAK
    │   │   ├── SOUNDINT.CPP
    │   │   ├── SOUNDINT.H
    │   │   ├── SOUNDIO.BAK
    │   │   ├── SOUNDIO.CPP
    │   │   └── SOUNDLCK.CPP
    │   ├── NYBBTB.INC
    │   ├── SOS.H
    │   ├── SOSCODEC.ASM
    │   ├── SOSCOMP.H
    │   ├── SOSDATA.H
    │   ├── SOSDEFS.H
    │   ├── SOSDW1PS.LIB
    │   ├── SOSFNCT.H
    │   ├── SOSRES.H
    │   ├── SOUND.BAK
    │   ├── SOUND.H
    │   ├── SOUNDINT.BAK
    │   ├── SOUNDINT.CPP
    │   ├── SOUNDINT.H
    │   ├── SOUNDIO.BAK
    │   ├── SOUNDIO.CPP
    │   └── SOUNDLCK.CPP
    ├── DESCMGMT/
    │   ├── DESCMGMT.CPP
    │   ├── DESCMGMT.H
    │   ├── FFIXSEL.ASM
    │   ├── FGETCS.ASM
    │   ├── FGETDS.ASM
    │   ├── FGETSEL.ASM
    │   └── MAKEFILE
    ├── DIPTHONG/
    │   ├── DIPTHONG.CPP
    │   ├── DIPTHONG.H
    │   ├── MAKEFILE
    │   └── _DIPTABL.CPP
    ├── EXAMPLE/
    │   ├── DEFINES.H
    │   ├── EXTERNS.H
    │   ├── FUNCTION.H
    │   ├── GLOBALS.CPP
    │   ├── MAIN.CPP
    │   ├── MAKEFILE
    │   ├── STARTUP.CPP
    │   ├── STRUCTS.H
    │   └── WWLIB32.H
    ├── FILE/
    │   ├── DEVICES.ASM
    │   ├── DEVTABLE.ASM
    │   ├── FFIRST.ASM
    │   ├── FGLOB2.CPP
    │   ├── FILE.BAK
    │   ├── FILE.CPP
    │   ├── FILE.H
    │   ├── FILECACH.CPP
    │   ├── FILECHNG.CPP
    │   ├── FILEDATA.CPP
    │   ├── FILEGLOB.CPP
    │   ├── FILEINFO.CPP
    │   ├── FILEINIT.CPP
    │   ├── FILEIO.CPP
    │   ├── FILELIB.CPP
    │   ├── FILESTUB.CPP
    │   ├── FILETEMP.H
    │   ├── FINDFILE.BAK
    │   ├── FINDFILE.CPP
    │   ├── HARDERR.ASM
    │   ├── MAKEFILE
    │   ├── _FILE.BAK
    │   └── _FILE.H
    ├── FONT/
    │   ├── FONT.BAK
    │   ├── FONT.CPP
    │   ├── FONT.H
    │   ├── LOADFONT.BAK
    │   ├── LOADFONT.CPP
    │   ├── MAKEFILE
    │   ├── SETFPAL.ASM
    │   ├── SET_FONT.CPP
    │   ├── TEXTPRNT.ASM
    │   └── TEXTPRNT.BAK
    ├── IFF/
    │   ├── FILEPCX.H
    │   ├── IFF.BAK
    │   ├── IFF.CPP
    │   ├── IFF.H
    │   ├── LCWCOMP.ASM
    │   ├── LCWUNCMP.ASM
    │   ├── LOAD.BAK
    │   ├── LOAD.CPP
    │   ├── LOADPCX.CPP
    │   ├── LOADPICT.BAK
    │   ├── LOADPICT.CPP
    │   ├── MAKEFILE
    │   ├── PACK2PLN.ASM
    │   ├── WRITELBM.CPP
    │   └── WRITEPCX.CPP
    ├── INCLUDE/
    │   ├── AUDIO.H
    │   ├── BUFFER.H
    │   ├── DESCMGMT.H
    │   ├── DIFFTB.INC
    │   ├── DIPTHONG.H
    │   ├── FILE.H
    │   ├── FILEPCX.H
    │   ├── FILETEMP.H
    │   ├── FONT.BAK
    │   ├── FONT.H
    │   ├── FUNCTION.H
    │   ├── GBUFFER.BAK
    │   ├── GBUFFER.H
    │   ├── GBUFFER.INC
    │   ├── IFF.H
    │   ├── INDEXTB.INC
    │   ├── KEYBOARD.H
    │   ├── KEYBOARD.INC
    │   ├── KEYSTRUC.INC
    │   ├── MCGAPRIM.H
    │   ├── MCGAPRIM.INC
    │   ├── MEMFLAG.H
    │   ├── MISC.BAK
    │   ├── MISC.H
    │   ├── MONO.BAK
    │   ├── MONO.H
    │   ├── NYBBTB.INC
    │   ├── PALETTE.BAK
    │   ├── PALETTE.H
    │   ├── PLAYCD.H
    │   ├── SHAPE.H
    │   ├── SHAPE.INC
    │   ├── SOS.H
    │   ├── SOSCOMP.H
    │   ├── SOSDATA.H
    │   ├── SOSDEFS.H
    │   ├── SOSFNCT.H
    │   ├── SOSRES.H
    │   ├── SOUND.H
    │   ├── SOUNDINT.H
    │   ├── STAMP.INC
    │   ├── SVGAPRIM.INC
    │   ├── TILE.H
    │   ├── TIMER.BAK
    │   ├── TIMER.H
    │   ├── VBUFFER.H
    │   ├── VIDEO.H
    │   ├── WINDOW.H
    │   ├── WSA.H
    │   ├── WWLIB32.H
    │   ├── WWMEM.H
    │   ├── WWMEM.INC
    │   ├── WWSTD.H
    │   ├── WWSTD.H.BAK
    │   └── _FILE.H
    ├── KEYBOARD/
    │   ├── KEYBOARD.ASM
    │   ├── KEYBOARD.BAK
    │   ├── KEYBOARD.H
    │   ├── KEYBOARD.INC
    │   ├── KEYIPROT.ASM
    │   ├── KEYIREAL.ASM
    │   ├── KEYIREAL.BAK
    │   ├── KEYIREAL.IBN
    │   ├── KEYSTRUC.INC
    │   ├── MAKEFILE
    │   ├── MOUSE.ASM
    │   ├── NEW/
    │   │   ├── KEYBOARD.ASM
    │   │   ├── KEYBOARD.BAK
    │   │   ├── KEYBOARD.H
    │   │   ├── KEYBOARD.INC
    │   │   ├── KEYIPROT.ASM
    │   │   ├── KEYIREAL.ASM
    │   │   ├── KEYIREAL.BAK
    │   │   ├── KEYIREAL.IBN
    │   │   ├── KEYSTRUC.INC
    │   │   ├── MAKEFILE
    │   │   ├── MOUSE.ASM
    │   │   └── PAGFAULT.ASM
    │   ├── PAGFAULT.ASM
    │   └── X/
    │       ├── KEYBOARD.ASM
    │       ├── KEYBOARD.BAK
    │       ├── KEYBOARD.H
    │       ├── KEYBOARD.INC
    │       ├── KEYIPROT.ASM
    │       ├── KEYIREAL.ASM
    │       ├── KEYIREAL.BAK
    │       ├── KEYIREAL.IBN
    │       ├── KEYSTRUC.INC
    │       ├── MAKEFILE
    │       ├── MOUSE.ASM
    │       └── PAGFAULT.ASM
    ├── LIB/
    │   └── SOSDW1PS.LIB
    ├── MAKEFILE
    ├── MAKE_EXE.MAK
    ├── MAKE_LIB.MAK
    ├── MCGAPRIM/
    │   ├── BITBLIT.ASM
    │   ├── BUFFER.CPP
    │   ├── BUFFER.H
    │   ├── BUFFGLBL.CPP
    │   ├── CLEAR.ASM
    │   ├── DRAWLINE.ASM
    │   ├── DRAWRECT.CPP
    │   ├── DRAWRECT.CPP.BAK
    │   ├── FILLQUAD.ASM
    │   ├── FILLRECT.ASM
    │   ├── GBUFFER.CPP
    │   ├── GBUFFER.CPP.BAK
    │   ├── GBUFFER.H
    │   ├── GBUFFER.INC
    │   ├── GETCLIP.ASM
    │   ├── GETPIX.ASM
    │   ├── MAKEFILE
    │   ├── MCGAPRIM.H
    │   ├── MCGAPRIM.INC
    │   ├── MCGAPRIM.PJT
    │   ├── PUTPIX.ASM
    │   ├── REGIONSZ.CPP
    │   ├── REMAP.ASM
    │   ├── SCALE.ASM
    │   ├── SHADOW.ASM
    │   ├── STAMP.ASM
    │   ├── STAMP.BAK
    │   ├── STAMP.INC
    │   ├── SZREGION.ASM
    │   ├── TOBUFF.ASM
    │   ├── TOPAGE.ASM
    │   ├── TXTPRNT.ASM
    │   ├── VBITBLIT.ASM
    │   ├── VBUFFER.CPP
    │   ├── VBUFFER.H
    │   ├── VCLEAR.ASM
    │   ├── VESA.ASM
    │   ├── VGETPIX.ASM
    │   ├── VLBTOVE.ASM
    │   ├── VPUTPIX.ASM
    │   ├── VSCALE.ASM
    │   ├── VSCLTOVE.ASM
    │   ├── VTOBUFF.ASM
    │   ├── VTOPAGE.ASM
    │   ├── VTXTPRNT.ASM
    │   ├── VVBLIT.ASM
    │   ├── VVETOLB.ASM
    │   └── VVETOSCL.ASM
    ├── MEM/
    │   ├── ALLOC.CPP
    │   ├── ALLOC.CPP.BAK
    │   ├── MAKEFILE
    │   ├── MEM.CPP
    │   ├── MEM.CPP.BAK
    │   ├── MEMFLAG.H
    │   ├── MEM_COPY.ASM
    │   ├── NEWDEL.CPP
    │   ├── OLD/
    │   │   ├── ALLOC.CPP
    │   │   ├── MAKEFILE
    │   │   ├── MEM.CPP
    │   │   ├── MEMFLAG.H
    │   │   ├── MEM_COPY.ASM
    │   │   ├── NEWDEL.CPP
    │   │   ├── WWMEM.H
    │   │   └── WWMEM.INC
    │   ├── WWMEM.H
    │   └── WWMEM.INC
    ├── MISC/
    │   ├── ASM.ASM
    │   ├── ASM.ASM.BAK
    │   ├── CLIPRECT.ASM
    │   ├── CRC.ASM
    │   ├── CRC.IDE
    │   ├── DELAY.CPP
    │   ├── DETPROC.ASM
    │   ├── EXIT.CPP
    │   ├── FACING16.ASM
    │   ├── FACING8.ASM
    │   ├── FACINGFF.ASM
    │   ├── FADING.ASM
    │   ├── FINDARGV.CPP
    │   ├── IRANDOM.CPP
    │   ├── KEYCODE.CPP
    │   ├── KEYCODE.CPP.BAK
    │   ├── LIB.CPP
    │   ├── MAKEFILE
    │   ├── MISC.H
    │   ├── OPSYS.ASM
    │   ├── PROC.ASM
    │   ├── RANDOM.ASM
    │   ├── REVERSE.ASM
    │   ├── SHAKESCR.ASM
    │   ├── VERSION.CPP
    │   ├── WWLIB32.H
    │   └── WWSTD.H
    ├── MONO/
    │   ├── INITMONO.CPP
    │   ├── MAKEFILE
    │   ├── MONO.ASM
    │   ├── MONO.H
    │   └── MONOPRNT.CPP
    ├── PALETTE/
    │   ├── LOADPAL.CPP
    │   ├── MAKEFILE
    │   ├── MORPHPAL.CPP
    │   ├── PAL.ASM
    │   ├── PALETTE.CPP
    │   └── PALETTE.H
    ├── PLAYCD/
    │   ├── GETCD.CPP
    │   ├── GETCD.CPP.BAK
    │   ├── MAKEFILE
    │   ├── PLAYCD.ASM
    │   ├── PLAYCD.H
    │   ├── PLAYCD.H.BAK
    │   └── REDBOOK.CPP
    ├── PROJECT.CFG
    ├── SHAPE/
    │   ├── DRAWSHP.ASM
    │   ├── DS_DN.ASM
    │   ├── DS_DR.ASM
    │   ├── DS_DS.ASM
    │   ├── DS_DSR.ASM
    │   ├── DS_LRS.ASM
    │   ├── DS_LS.ASM
    │   ├── DS_LSRS.ASM
    │   ├── DS_LSS.ASM
    │   ├── DS_RRS.ASM
    │   ├── DS_RS.ASM
    │   ├── DS_RSRS.ASM
    │   ├── DS_RSS.ASM
    │   ├── DS_TABLE.ASM
    │   ├── GETSHAPE.CPP
    │   ├── MAKEFILE
    │   ├── PRIOINIT.CPP
    │   ├── SETSHAPE.ASM
    │   ├── SHAPE.H
    │   └── SHAPE.INC
    ├── SRCDEBUG/
    │   ├── ALLOC.CPP
    │   ├── KEYBOARD.ASM
    │   ├── KEYIPROT.ASM
    │   ├── KEYIREAL.ASM
    │   ├── MEM.CPP
    │   ├── MEM_COPY.ASM
    │   ├── MOUSE.ASM
    │   ├── NEWDEL.CPP
    │   └── PAGFAULT.ASM
    ├── SVGAPRIM/
    │   ├── MAKEFILE
    │   ├── SVGAPRIM.INC
    │   ├── VCLEAR.ASM
    │   ├── VESA.ASM
    │   ├── VGETPIX.ASM
    │   ├── VLBTOVE.ASM
    │   ├── VPUTPIX.ASM
    │   ├── VSCALE.CPP
    │   ├── VSCLTOVE.ASM
    │   ├── VTOBUFF.ASM
    │   ├── VTOPAGE.ASM
    │   ├── VTXTPRNT.ASM
    │   ├── VVBLIT.ASM
    │   ├── VVETOLB.ASM
    │   └── VVETOSCL.CPP
    ├── TILE/
    │   ├── ICONSET.BAK
    │   ├── ICONSET.CPP
    │   ├── MAKEFILE
    │   ├── TILE.H
    │   └── TILE.H.BAK
    ├── TIMER/
    │   ├── MAKEFILE
    │   ├── TIMER.CPP
    │   ├── TIMER.H
    │   ├── TIMERA.ASM
    │   ├── TIMERA.BAK
    │   ├── TIMERDWN.CPP
    │   ├── TIMEREAL.ASM
    │   ├── TIMEREAL.IBN
    │   └── TIMERINI.CPP
    ├── VIDEO/
    │   ├── INITDLAY.CPP
    │   ├── MAKEFILE
    │   ├── VERTBLNK.ASM
    │   ├── VESAHOOK.ASM
    │   ├── VESAINFO.CPP
    │   ├── VESAREAL.ASM
    │   ├── VESAREAL.IBN
    │   ├── VIDEO.CPP
    │   └── VIDEO.H
    ├── WINDOWS/
    │   ├── MAKEFILE
    │   ├── WINDOW.H
    │   ├── WINDOWS.CPP
    │   ├── WINDOWS.CPP.BAK
    │   ├── WINDOWS.H
    │   ├── WINHIDE.CPP
    │   └── WINHIDE.CPP.BAK
    └── WSA/
        ├── MAKEFILE
        ├── WSA.CPP
        ├── WSA.H
        └── XORDELTA.ASM

================================================
FILE CONTENTS
================================================

================================================
FILE: CODE/2KEYFBUF.ASM
================================================
;
;	Command & Conquer Red Alert(tm)
;	Copyright 2025 Electronic Arts Inc.
;
;	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 3 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 License for more details.
;
;	You should have received a copy of the GNU General Public License
;	along with this program.  If not, see <http://www.gnu.org/licenses/>.
;

;***************************************************************************
;**   C O N F I D E N T I A L --- W E S T W O O D   A S S O C I A T E S   **
;***************************************************************************
;*                                                                         *
;*                 Project Name : Command & Conquer                        *
;*                                                                         *
;*                    File Name : KEYFBUFF.ASM                             *
;*                                                                         *
;*                   Programmer : David R. Dettmer                         *
;*                                                                         *
;*                   Start Date : March 3, 1995                            *
;*                                                                         *
;*                  Last Update :                                          *
;*                                                                         *
;*-------------------------------------------------------------------------*
;* Functions:                                                              *
;*   Buffer_Frame_To_Page -- Copies a linear buffer to a virtual viewport  *
;* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *

;********************** Model & Processor Directives ***********************
IDEAL
P386
MODEL USE32 FLAT
jumps

;******************************** Includes *********************************
INCLUDE "gbuffer.inc"
include	"profile.inc"


;******************************** Equates **********************************

TRUE	equ	1			; Boolean 'true' value
FALSE	equ	0			; Boolean 'false' value

;*=========================================================================*/
;* The following are defines used to control what functions are linked	   *
;* in for Buffer_Frame_To_Page.						   *
;*=========================================================================*/
;USE_NORMAL		EQU	TRUE
;USE_HORZ_REV 		EQU	TRUE
;USE_VERT_REV 		EQU	TRUE
;USE_SCALING 		EQU	TRUE


FLAG_NORMAL		EQU	0
FLAG_TRANS		EQU	1
FLAG_GHOST		EQU	2
FLAG_FADING		EQU	4
FLAG_PREDATOR		EQU	8

FLAG_MASK		EQU	0Fh


SHAPE_NORMAL 		EQU	0000h		; Standard shape
;SHAPE_HORZ_REV 		EQU	0001h		; Flipped horizontally
;SHAPE_VERT_REV 		EQU	0002h		; Flipped vertically
;SHAPE_SCALING 		EQU	0004h		; Scaled (WORD scale_x, WORD scale_y)
;SHAPE_VIEWPORT_REL 	EQU	0010h		; Coords are window-relative
;SHAPE_WIN_REL 		EQU	0010h		; Coordinates are window relative instead of absolute.
SHAPE_CENTER 		EQU	0020h		; Coords are based on shape's center pt
SHAPE_TRANS		EQU	0040h		; has transparency

SHAPE_FADING 		EQU	0100h		; Fading effect (VOID * fading_table,
						;   WORD fading_num)
SHAPE_PREDATOR 		EQU	0200h		; Transparent warping effect
;SHAPE_COMPACT 		EQU	0400h		; Never use this bit
;SHAPE_PRIORITY 		EQU	0800h		; Use priority system when drawing
SHAPE_GHOST		EQU	1000h		; Shape is drawn ghosted
;SHAPE_SHADOW		EQU	2000h
SHAPE_PARTIAL  		EQU	4000h
;SHAPE_COLOR 		EQU	8000h		; Remap the shape's colors
						;   (VOID * color_table)


;
;.......................... Shadow Effect ..................................
;
SHADOW_COL		EQU	00FFh	; magic number for shadows

;......................... Priority System .................................
;
CLEAR_UNUSED_BITS  	EQU	0007h	; and with 0000-0111 to clear
					;  non-walkable high bit and
					;  scaling id bits
NON_WALKABLE_BIT  	EQU	0080h	; and with 1000-0000 to clear all
					;  but non-walkable bit
;
;......................... Predator Effect .................................
;
;PRED_MASK		EQU	0007h	; mask used for predator pixel puts
PRED_MASK		EQU	000Eh	; mask used for predator pixel puts


;---------------------------------------------------------------------------
;
; Use a macro to make code a little cleaner.
; The parameter varname is optional.
; Syntax to use macro is :
;  WANT equ expression
;  USE func [,varname]
; If the 'varname' is defined, a table declaration is created like:
;	GLOBAL	TableName:DWORD
; Then, the table entry is created:
;  If WANT is true, the table entry is created for the given function:
;	varname	DD	func
;  If WANT is not TRUE, a Not_Supported entry is put in the table:
;	varname	DD	Not_Supported
; The resulting tables look like:
;
;	GLOBAL	ExampTable:DWORD
;	ExampTable	DD	routine1
;			DD	routine2
;			DD	routine3
;			...
; Thus, each table is an array of function pointers.
;
;---------------------------------------------------------------------------
MACRO USE func, varname
 IF WANT
  varname 	DD	func
 ELSE
  varname	DD	Not_Supported
 ENDIF
ENDM

; IFNB <varname>
;	GLOBAL	varname:DWORD
; ENDIF

;---------------------------------------------------------------------------


DATASEG

;---------------------------------------------------------------------------
; Predator effect variables
;---------------------------------------------------------------------------
; make table for negative offset and use the used space for other variables

BFPredNegTable	DW	-1, -3, -2, -5, -2, -4, -3, -1
	; 8 words below calculated
		DW	0, 0, 0, 0, 0, 0, 0, 0	; index ffffff00
		DD	0, 0, 0, 0		; index ffffff10
BFPredOffset	DD	0, 0, 0, 0		; index ffffff20
		DD	0, 0, 0, 0		; index ffffff30
	; partially faded predator effect value
BFPartialPred	DD	0, 0, 0, 0		; index ffffff40
BFPartialCount	DD	0, 0, 0, 0		; index ffffff50
		DD	0, 0, 0, 0		; index ffffff60
		DD	0, 0, 0, 0		; index ffffff70
		DD	0, 0, 0, 0		; index ffffff80
		DD	0, 0, 0, 0		; index ffffff90
		DD	0, 0, 0, 0		; index ffffffa0
		DD	0, 0, 0, 0		; index ffffffb0
		DD	0, 0, 0, 0		; index ffffffc0
		DD	0, 0, 0, 0		; index ffffffd0
		DD	0, 0, 0, 0		; index ffffffe0
		DD	0, 0, 0, 0		; index fffffff0
BFPredTable	DW	1, 3, 2, 5, 2, 3, 4, 1
;BFPredTable	DB	1, 3, 2, 5, 4, 3, 2, 1






		global	C BigShapeBufferStart:dword
		global	C UseBigShapeBuffer:dword
		global	C UseOldShapeDraw:dword
		global	C TheaterShapeBufferStart:dword
		global	C IsTheaterShape:dword
		global	C Single_Line_Trans_Entry:near
		global	C Next_Line:near
		global	C MMX_Done:near
		global	C MMXAvailable:dword
		global	EndNewShapeJumpTable:byte
		global	NewShapeJumpTable:dword


;**********************************************************************************
;
; Jump tables for new line header system
;
; Each line of shape data now has a header byte which describes the data on the line.
;

;
; Header byte control bits
;
BLIT_TRANSPARENT	=1
BLIT_GHOST		=2
BLIT_FADING		=4
BLIT_PREDATOR		=8
BLIT_SKIP		=16
BLIT_ALL		=BLIT_TRANSPARENT or BLIT_GHOST or BLIT_FADING or BLIT_PREDATOR or BLIT_SKIP


		struc		ShapeHeaderType

		draw_flags	dd	?
		shape_data	dd	?
		shape_buffer	dd	?

		ends

;
; Global definitions for routines that draw a single line of a shape
;
		global	Short_Single_Line_Copy:near
		global	Single_Line_Trans:near
		global	Single_Line_Ghost:near
		global	Single_Line_Ghost_Trans:near
		global	Single_Line_Fading:near
		global	Single_Line_Fading_Trans:near
		global	Single_Line_Ghost_Fading:near
		global	Single_Line_Ghost_Fading_Trans:near
		global	Single_Line_Predator:near
		global	Single_Line_Predator_Trans:near
		global	Single_Line_Predator_Ghost:near
		global	Single_Line_Predator_Ghost_Trans:near
		global	Single_Line_Predator_Fading:near
		global	Single_Line_Predator_Fading_Trans:near
		global	Single_Line_Predator_Ghost_Fading:near
		global	Single_Line_Predator_Ghost_Fading_Trans:near
		global	Single_Line_Skip:near

		global	Single_Line_Single_Fade:near
		global	Single_Line_Single_Fade_Trans:near



label		NewShapeJumpTable	dword

;
; Jumptable for shape line drawing with no flags set
;

		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
label		CriticalFadeRedirections dword
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip


;
; Jumptable for shape line drawing routines with transparent flags set
;
		dd	Short_Single_Line_Copy
		dd	Single_Line_Trans
		dd	Short_Single_Line_Copy
		dd	Single_Line_Trans
		dd	Short_Single_Line_Copy
		dd	Single_Line_Trans
		dd	Short_Single_Line_Copy
		dd	Single_Line_Trans
		dd	Short_Single_Line_Copy
		dd	Single_Line_Trans
		dd	Short_Single_Line_Copy
		dd	Single_Line_Trans
		dd	Short_Single_Line_Copy
		dd	Single_Line_Trans
		dd	Short_Single_Line_Copy
		dd	Single_Line_Trans
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip


;
; Jumptable for shape line drawing routines with ghost flags set
;

		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Single_Line_Ghost
		dd	Single_Line_Ghost
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Single_Line_Ghost
		dd	Single_Line_Ghost
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Single_Line_Ghost
		dd	Single_Line_Ghost
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Single_Line_Ghost
		dd	Single_Line_Ghost
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip


;
; Jumptable for shape line drawing routines with ghost and transparent flags set
;

		dd	Short_Single_Line_Copy
		dd	Single_Line_Trans
		dd	Single_Line_Ghost
		dd	Single_Line_Ghost_Trans
		dd	Short_Single_Line_Copy
		dd	Single_Line_Trans
		dd	Single_Line_Ghost
		dd	Single_Line_Ghost_Trans
		dd	Short_Single_Line_Copy
		dd	Single_Line_Trans
		dd	Single_Line_Ghost
		dd	Single_Line_Ghost_Trans
		dd	Short_Single_Line_Copy
		dd	Single_Line_Trans
		dd	Single_Line_Ghost
		dd	Single_Line_Ghost_Trans
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip





;
; Jumptable for shape line drawing routines with fading flag set
;

		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Single_Line_Single_Fade
		dd	Single_Line_Single_Fade
		dd	Single_Line_Fading
		dd	Single_Line_Fading
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Single_Line_Fading
		dd	Single_Line_Fading
		dd	Single_Line_Fading
		dd	Single_Line_Fading
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip


;
; Jumptable for shape line drawing routines with fading and transparent flags set
;

		dd	Short_Single_Line_Copy
		dd	Single_Line_Trans
		dd	Short_Single_Line_Copy
		dd	Single_Line_Trans
		dd	Single_Line_Single_Fade
		dd	Single_Line_Single_Fade_Trans
		dd	Single_Line_Fading
		dd	Single_Line_Fading_Trans
		dd	Short_Single_Line_Copy
		dd	Single_Line_Trans
		dd	Short_Single_Line_Copy
		dd	Single_Line_Trans
		dd	Single_Line_Fading
		dd	Single_Line_Fading_Trans
		dd	Single_Line_Fading
		dd	Single_Line_Fading_Trans
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip


;
; Jumptable for shape line drawing routines with fading and ghost flags set
;

		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Single_Line_Ghost
		dd	Single_Line_Ghost
		dd	Single_Line_Single_Fade
		dd	Single_Line_Single_Fade
		dd	Single_Line_Ghost_Fading
		dd	Single_Line_Ghost_Fading
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Single_Line_Ghost
		dd	Single_Line_Ghost
		dd	Single_Line_Fading
		dd	Single_Line_Fading
		dd	Single_Line_Ghost_Fading
		dd	Single_Line_Ghost_Fading
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip



;
; Jumptable for shape line drawing routines with fading, transparent and ghost flags set
;

		dd	Short_Single_Line_Copy
		dd	Single_Line_Trans
		dd	Single_Line_Ghost
		dd	Single_Line_Ghost_Trans
		dd	Single_Line_Single_Fade
		dd	Single_Line_Single_Fade_Trans
		dd	Single_Line_Ghost_Fading
		dd	Single_Line_Ghost_Fading_Trans
		dd	Short_Single_Line_Copy
		dd	Single_Line_Trans
		dd	Single_Line_Ghost
		dd	Single_Line_Ghost_Trans
		dd	Single_Line_Fading
		dd	Single_Line_Fading_Trans
		dd	Single_Line_Ghost_Fading
		dd	Single_Line_Ghost_Fading_Trans
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip






;
; Jumptable for shape line drawing with predator flag set
;

		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Single_Line_Predator
		dd	Single_Line_Predator
		dd	Single_Line_Predator
		dd	Single_Line_Predator
		dd	Single_Line_Predator
		dd	Single_Line_Predator
		dd	Single_Line_Predator
		dd	Single_Line_Predator
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip


;
; Jumptable for shape line drawing routines with transparent and predator flags set
;
		dd	Short_Single_Line_Copy
		dd	Single_Line_Trans
		dd	Short_Single_Line_Copy
		dd	Single_Line_Trans
		dd	Short_Single_Line_Copy
		dd	Single_Line_Trans
		dd	Short_Single_Line_Copy
		dd	Single_Line_Trans
		dd	Single_Line_Predator
		dd	Single_Line_Predator_Trans
		dd	Single_Line_Predator
		dd	Single_Line_Predator_Trans
		dd	Single_Line_Predator
		dd	Single_Line_Predator_Trans
		dd	Single_Line_Predator
		dd	Single_Line_Predator_Trans
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip


;
; Jumptable for shape line drawing routines with ghost and predator flags set
;

		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Single_Line_Ghost
		dd	Single_Line_Ghost
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Single_Line_Ghost
		dd	Single_Line_Ghost
		dd	Single_Line_Predator
		dd	Single_Line_Predator
		dd	Single_Line_Predator_Ghost
		dd	Single_Line_Predator_Ghost
		dd	Single_Line_Predator
		dd	Single_Line_Predator
		dd	Single_Line_Predator_Ghost
		dd	Single_Line_Predator_Ghost
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip


;
; Jumptable for shape line drawing routines with ghost and transparent and predator flags set
;

		dd	Short_Single_Line_Copy
		dd	Single_Line_Trans
		dd	Single_Line_Ghost
		dd	Single_Line_Ghost_Trans
		dd	Short_Single_Line_Copy
		dd	Single_Line_Trans
		dd	Single_Line_Ghost
		dd	Single_Line_Ghost_Trans
		dd	Single_Line_Predator
		dd	Single_Line_Predator_Trans
		dd	Single_Line_Predator_Ghost
		dd	Single_Line_Predator_Ghost_Trans
		dd	Single_Line_Predator
		dd	Single_Line_Predator_Trans
		dd	Single_Line_Predator_Ghost
		dd	Single_Line_Predator_Ghost_Trans
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip





;
; Jumptable for shape line drawing routines with fading and predator flags set
;

		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Single_Line_Single_Fade
		dd	Single_Line_Single_Fade
		dd	Single_Line_Fading
		dd	Single_Line_Fading
		dd	Single_Line_Predator
		dd	Single_Line_Predator
		dd	Single_Line_Predator
		dd	Single_Line_Predator
		dd	Single_Line_Predator_Fading
		dd	Single_Line_Predator_Fading
		dd	Single_Line_Predator_Fading
		dd	Single_Line_Predator_Fading
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip


;
; Jumptable for shape line drawing routines with fading and transparent and predator flags set
;

		dd	Short_Single_Line_Copy
		dd	Single_Line_Trans
		dd	Short_Single_Line_Copy
		dd	Single_Line_Trans
		dd	Single_Line_Single_Fade
		dd	Single_Line_Single_Fade_Trans
		dd	Single_Line_Fading
		dd	Single_Line_Fading_Trans
		dd	Single_Line_Predator
		dd	Single_Line_Predator_Trans
		dd	Single_Line_Predator
		dd	Single_Line_Predator_Trans
		dd	Single_Line_Predator_Fading
		dd	Single_Line_Predator_Fading_Trans
		dd	Single_Line_Predator_Fading
		dd	Single_Line_Predator_Fading_Trans
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip


;
; Jumptable for shape line drawing routines with fading and ghost and predator flags set
;

		dd	Short_Single_Line_Copy
		dd	Short_Single_Line_Copy
		dd	Single_Line_Ghost
		dd	Single_Line_Ghost
		dd	Single_Line_Single_Fade
		dd	Single_Line_Single_Fade
		dd	Single_Line_Ghost_Fading
		dd	Single_Line_Ghost_Fading
		dd	Single_Line_Predator
		dd	Single_Line_Predator
		dd	Single_Line_Predator_Ghost
		dd	Single_Line_Predator_Ghost
		dd	Single_Line_Predator_Fading
		dd	Single_Line_Predator_Fading
		dd	Single_Line_Predator_Ghost_Fading
		dd	Single_Line_Predator_Ghost_Fading
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip







;
; Jumptable for shape line drawing routines with all flags set
;

label		AllFlagsJumpTable	dword
		dd	Short_Single_Line_Copy
		dd	Single_Line_Trans
		dd	Single_Line_Ghost
		dd	Single_Line_Ghost_Trans
		dd	Single_Line_Single_Fade
		dd	Single_Line_Single_Fade_Trans
		dd	Single_Line_Ghost_Fading
		dd	Single_Line_Ghost_Fading_Trans
		dd	Single_Line_Predator
		dd	Single_Line_Predator_Trans
		dd	Single_Line_Predator_Ghost
		dd	Single_Line_Predator_Ghost_Trans
		dd	Single_Line_Predator_Fading
		dd	Single_Line_Predator_Fading_Trans
		dd	Single_Line_Predator_Ghost_Fading
		dd	Single_Line_Predator_Ghost_Fading_Trans
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip
		dd	Single_Line_Skip



label		EndNewShapeJumpTable	byte

CODESEG

;---------------------------------------------------------------------------
; Code Segment Tables:
; This code uses the USE macro to set up tables of function addresses.
; The tables have the following format:
; Tables defined are:
;	BufferFrameTable
;---------------------------------------------------------------------------

WANT	equ 	<TRUE>
USE	BF_Copy, BufferFrameTable

WANT	equ 	<TRUE>
USE	BF_Trans

WANT	equ 	<TRUE>
USE	BF_Ghost

WANT	equ 	<TRUE>
USE	BF_Ghost_Trans

WANT	equ 	<TRUE>
USE	BF_Fading

WANT	equ 	<TRUE>
USE	BF_Fading_Trans

WANT	equ 	<TRUE>
USE	BF_Ghost_Fading

WANT	equ 	<TRUE>
USE	BF_Ghost_Fading_Trans

WANT	equ 	<TRUE>
USE	BF_Predator

WANT	equ 	<TRUE>
USE	BF_Predator_Trans

WANT	equ 	<TRUE>
USE	BF_Predator_Ghost

WANT	equ 	<TRUE>
USE	BF_Predator_Ghost_Trans

WANT	equ 	<TRUE>
USE	BF_Predator_Fading

WANT	equ 	<TRUE>
USE	BF_Predator_Fading_Trans

WANT	equ 	<TRUE>
USE	BF_Predator_Ghost_Fading

WANT	equ 	<TRUE>
USE	BF_Predator_Ghost_Fading_Trans





;---------------------------------------------------------------------------




;*********************************************************************************************
;* Set_Shape_Header -- create the line header bytes for a shape                              *
;*                                                                                           *
;* INPUT:	Shape width                                                                  *
;*              Shape height                                                                 *
;*              ptr to raw shape data                                                        *
;*              ptr to shape headers                                                         *
;*              shape flags                                                                  *
;*              ptr to translucency table                                                    *
;*              IsTranslucent                                                                *
;*                                                                                           *
;* OUTPUT:      none                                                                         *
;*                                                                                           *
;* Warnings:                                                                                 *
;*                                                                                           *
;* HISTORY:                                                                                  *
;*   11/29/95 10:09AM ST : Created.                                                          *
;*===========================================================================================*

		proc	Setup_Shape_Header C near

		ARG	pixel_width 	:DWORD		; width of rectangle to blit
		ARG	pixel_height	:DWORD		; height of rectangle to blit
		ARG  	src         	:DWORD		; this is a member function
		ARG	headers	    	:DWORD
		ARG	flags		:DWORD
		ARG	Translucent	:DWORD
		ARG	IsTranslucent	:DWORD
		LOCAL	trans_count	:DWORD

		pushad


		mov	esi,[src]		;ptr to raw shape data
		mov	edi,[headers]		;ptr to headers we are going to set up
		mov	eax,[flags]
		and	eax,SHAPE_TRANS or SHAPE_FADING or SHAPE_PREDATOR or SHAPE_GHOST
		mov	[(ShapeHeaderType edi).draw_flags],eax 	;save old flags in header
		add	edi,size ShapeHeaderType
		mov	edx,[pixel_height]	;number of shape lines to scan

??outer_loop:	mov	ecx,[pixel_width]	;number of pixels in shape line
		xor	bl,bl			;flag the we dont know anything about this line yet
		mov	[trans_count],0		;we havnt scanned any transparent pixels yet

;
; Scan one shape line to see what kind of data it contains
;
??inner_loop:	xor	eax,eax
		mov	al,[esi]
		inc	esi

;
; Check for transparent pixel
;
		test	al,al
		jnz	??not_transp
		test	[flags],SHAPE_TRANS
		jz	??not_transp
		or	bl,BLIT_TRANSPARENT	;flag that pixel is transparent
		inc	[trans_count]		;keep count of the number of transparent pixels on the line
		jmp	??end_lp

;
; Check for predator effect on this line
;
??not_transp:	test	[flags],SHAPE_PREDATOR
		jz	??not_pred
		or	bl,BLIT_PREDATOR

;
; Check for ghost effects
;
??not_pred:	test	[flags],SHAPE_GHOST
		jz	??not_ghost
		push	edi
		mov	edi,[IsTranslucent]
		cmp	[byte edi+eax],-1
		pop	edi
		jz	??not_ghost
		or	bl,BLIT_GHOST

;
; Check if fading is required
;
??not_ghost:	test	[flags],SHAPE_FADING
		jz	??end_lp
		or	bl,BLIT_FADING

??end_lp:       dec	ecx
		jnz	??inner_loop


;
; Interpret the info we have collected and decide which routine will be
; used to draw this line
;
		xor	bh,bh

		test	bl,BLIT_TRANSPARENT
		jz	??no_transparencies
		or	bh,BLIT_TRANSPARENT
		mov	ecx,[pixel_width]
		cmp	ecx,[trans_count]
		jnz	??not_all_trans

; all pixels in the line were transparent so we dont need to draw it at all
		mov	bh,BLIT_SKIP
		jmp	??got_line_type

??not_all_trans:
??no_transparencies:
		mov	al,bl
		and	al,BLIT_PREDATOR
		or	bh,al
		mov	al,bl
		and	al,BLIT_GHOST
		or	bh,al
		mov	al,bl
		and	al,BLIT_FADING
		or	bh,al

;
; Save the line header and do the next line
;
??got_line_type:mov	[edi],bh
		inc	edi

		dec	edx
		jnz	??outer_loop


		popad
		ret

		endp	Setup_Shape_Header




;**************************************************************
;
; Macro to fetch the header of the next line and jump to the appropriate routine
;
		macro	next_line

		add	edi , [ dest_adjust_width ]	;add in dest modulo
		dec	edx				;line counter
		jz	??real_out			;return
		mov	ecx,[save_ecx]			;ecx is pixel count
		mov	eax,[header_pointer]		;ptr to next header byte
		mov	al,[eax]
		inc	[header_pointer]
		and	eax,BLIT_ALL			;Make sure we dont jump to some spurious address
							; if the header is wrong then its better to draw with the wrong
							; shape routine than to die
		shl	eax,2
		add	eax,[ShapeJumpTableAddress]	;get the address to jump to
		jmp	[dword eax]			;do the jump

		endm






;***************************************************************************
;* VVC::TOPAGE -- Copies a linear buffer to a virtual viewport		   *
;*                                                                         *
;* INPUT:	WORD	x_pixel		- x pixel on viewport to copy from *
;*		WORD	y_pixel 	- y pixel on viewport to copy from *
;*		WORD	pixel_width	- the width of copy region	   *
;*		WORD	pixel_height	- the height of copy region	   *
;*		BYTE *	src		- buffer to copy from		   *
;*		VVPC *  dest		- virtual viewport to copy to	   *
;*                                                                         *
;* OUTPUT:      none                                                       *
;*                                                                         *
;* WARNINGS:    Coordinates and dimensions will be adjusted if they exceed *
;*	        the boundaries.  In the event that no adjustment is 	   *
;*	        possible this routine will abort.  If the size of the 	   *
;*		region to copy exceeds the size passed in for the buffer   *
;*		the routine will automatically abort.			   *
;*									   *
;* HISTORY:                                                                *
;*   06/15/1994 PWG : Created.                                             *
;*=========================================================================*
	GLOBAL	C Buffer_Frame_To_Page:NEAR
	PROC	Buffer_Frame_To_Page C near
	USES	eax,ebx,ecx,edx,esi,edi

	;*===================================================================
	;* define the arguements that our function takes.
	;*===================================================================
	ARG	x_pixel     :DWORD		; x pixel position in source
	ARG	y_pixel     :DWORD		; y pixel position in source
	ARG	pixel_width :DWORD		; width of rectangle to blit
	ARG	pixel_height:DWORD		; height of rectangle to blit
	ARG    	src         :DWORD		; this is a member function
	ARG	dest        :DWORD		; what are we blitting to

	ARG	flags       :DWORD		; flags passed

	;*===================================================================
	; Define some locals so that we can handle things quickly
	;*===================================================================
	LOCAL	IsTranslucent		:DWORD	; ptr to the is_translucent table
	LOCAL	Translucent		:DWORD	; ptr to the actual translucent table
	LOCAL	FadingTable		:DWORD	; extracted fading table pointer
	LOCAL	FadingNum		:DWORD	; get the number of times to fade

	LOCAL	StashECX		:DWORD	; temp variable for ECX register

	LOCAL	jflags			:DWORD	; flags used to goto correct buff frame routine
	LOCAL	BufferFrameRout		:DWORD	; ptr to the buffer frame routine

	LOCAL	jmp_loc			:DWORD	; calculated jump location
	LOCAL	loop_cnt		:DWORD

	LOCAL 	x1_pixel		:DWORD
	LOCAL	y1_pixel		:DWORD
	LOCAL	scr_x			:DWORD
	LOCAL	scr_y			:DWORD
	LOCAL	dest_adjust_width	:DWORD
	LOCAL	scr_adjust_width	:DWORD
	LOCAL	header_pointer		:DWORD
	LOCAL	use_old_draw		:DWORD
	LOCAL	save_ecx		:DWORD
	LOCAL	ShapeJumpTableAddress	:DWORD
	LOCAL	shape_buffer_start	:DWORD


	prologue
	cmp	[ src ] , 0
	jz	??real_out

	cmp	[UseOldShapeDraw],0
	jz	??new_system

	mov	[use_old_draw],1
	jmp	??do_args

??new_system:
	;
	; Save the line attributes pointers and
	; Modify the src pointer to point to the actual image
	;
	cmp	[UseBigShapeBuffer],0
	jz	??do_args			;just use the old shape drawing system
	mov	edi,[src]
	mov	[header_pointer],edi

	mov	eax,[BigShapeBufferStart]
	cmp	[(ShapeHeaderType edi).shape_buffer],0
	jz	??is_ordinary_shape
	mov	eax,[TheaterShapeBufferStart]
??is_ordinary_shape:
	mov	[shape_buffer_start],eax

	mov	edi,[(ShapeHeaderType edi).shape_data]
	add	edi,[shape_buffer_start]
	mov	[src],edi
	mov	[use_old_draw],0


	;====================================================================
	; Pull off optional arguments:
	; EDI is used as an offset from the 'flags' parameter, to point
	; to the optional argument currently being processed.
	;====================================================================
??do_args:
	mov	edi , 4	 			; optional params start past flags
	mov	[ jflags ] , 0			; clear jump flags

??check_centering:
	;-------------------------------------------------------------------
	; See if we need to center the frame
	;-------------------------------------------------------------------
	test	[ flags ] , SHAPE_CENTER	; does this need to be centered?
	je	??check_trans			; if not the skip over this stuff

	mov	eax , [ pixel_width ]
	mov	ebx , [ pixel_height ]
	sar	eax , 1
	sar	ebx , 1
	sub	[ x_pixel ] , eax
	sub	[ y_pixel ] , ebx

??check_trans:
	test	[ flags ] , SHAPE_TRANS
	jz	??check_ghost

	or	[ jflags ] , FLAG_TRANS

	;--------------------------------------------------------------------
	; SHAPE_GHOST: DWORD is_translucent tbl
	;--------------------------------------------------------------------
??check_ghost:
	test	[ flags ] , SHAPE_GHOST		; are we ghosting this shape
	jz	??check_fading

	mov	eax , [ flags + edi ]
	or	[ jflags ] , FLAG_GHOST
	mov	[ IsTranslucent ] , eax		; save ptr to is_trans. tbl
	add	eax , 0100h			; add 256 for first table
	add	edi , 4				; next argument
	mov	[ Translucent ] , eax		; save ptr to translucent tbl



??check_fading:
	;______________________________________________________________________
	; If this is the first time through for this shape then
	; set up the shape header
	;______________________________________________________________________
	pushad

	cmp	[UseBigShapeBuffer],0		;no big shape buffer so use old system
	jz	??new_shape
	cmp	[UseOldShapeDraw],0		;use old shape system flag
	jnz	??new_shape

	mov	edi,[header_pointer]
	cmp	[(ShapeHeaderType edi).draw_flags],-1
	jz	??setup_headers
	mov	eax,[flags]							 ;Redo the shape headers if this shape was
	and	eax,SHAPE_TRANS or SHAPE_FADING or SHAPE_PREDATOR or SHAPE_GHOST ;initially set up with different flags
	cmp	eax,[(ShapeHeaderType edi).draw_flags]
	jz	??no_header_setup
??new_shape:
	mov	[use_old_draw],1
	jmp	??no_header_setup

??setup_headers:
	push	[IsTranslucent]
	push	[Translucent]
	push	[flags]
	push	[header_pointer]
	push	[src]
	push	[pixel_height]
	push	[pixel_width]
	call	Setup_Shape_Header
	add	esp,7*4
	mov	[ShapeJumpTableAddress],offset AllFlagsJumpTable
	jmp	??headers_set
??no_header_setup:

	xor	eax,eax
	test	[flags],SHAPE_PREDATOR
	jz	??not_shape_predator
	or	al,BLIT_PREDATOR

??not_shape_predator:
	test	[flags],SHAPE_FADING
	jz	??not_shape_fading
	or	al,BLIT_FADING

??not_shape_fading:

	test	[flags],SHAPE_TRANS
	jz	??not_shape_transparent
	or	al,BLIT_TRANSPARENT

??not_shape_transparent:

	test	[flags],SHAPE_GHOST
	jz	??not_shape_ghost
	or	al,BLIT_GHOST

??not_shape_ghost:

	shl	eax,7
	add	eax,offset NewShapeJumpTable
	mov	[ShapeJumpTableAddress],eax


??headers_set:
	popad

	;--------------------------------------------------------------------
	; SHAPE_FADING: DWORD fade_table[256], DWORD fade_count
	;--------------------------------------------------------------------
	test	[ flags ] , SHAPE_FADING	; are we fading this shape
	jz	??check_predator

	mov	eax , [ flags + edi ]
	mov	[ FadingTable ] , eax		; save address of fading tbl
	mov	eax , [ flags + edi + 4 ]	; get fade num
	or	[ jflags ] , FLAG_FADING
	and	eax , 03fh			; no need for more than 63
	add	edi , 8				; next argument
	cmp	eax , 0				; check if it's 0
	jnz	??set_fading			; if not, store fade num

	and	[ flags ] , NOT SHAPE_FADING	; otherwise, don't fade

??set_fading:
	mov	[ FadingNum ] , eax

	mov	ebx,[ShapeJumpTableAddress]
	mov	[dword ebx+CriticalFadeRedirections-NewShapeJumpTable],offset Single_Line_Single_Fade
	mov	[dword ebx+CriticalFadeRedirections-NewShapeJumpTable+4],offset Single_Line_Single_Fade_Trans
	cmp	eax,1
	jz	??single_fade
	mov	[dword ebx+CriticalFadeRedirections-NewShapeJumpTable],offset Single_Line_Fading
	mov	[dword ebx+CriticalFadeRedirections-NewShapeJumpTable+4],offset Single_Line_Fading_Trans

??single_fade:

	;--------------------------------------------------------------------
	; SHAPE_PREDATOR: DWORD init_pred_lookup_offset (0-7)
	;--------------------------------------------------------------------
??check_predator:
	test	[ flags ] , SHAPE_PREDATOR	; is predator effect on
	jz	??check_partial

	mov	eax , [ flags + edi ]		; pull the partial value
	or	[ jflags ] , FLAG_PREDATOR
	shl	eax , 1
	cmp	eax , 0
	jge	??check_range

	neg	eax
	mov	ebx , -1
	and	eax , PRED_MASK			; keep entries within bounds
	mov	bl , al
	mov	eax , ebx			; will be ffffff00-ffffff07
	jmp	??pred_cont

??check_range:
	and	eax , PRED_MASK			; keep entries within bounds

??pred_cont:
	add	edi , 4				; next argument
	mov	[ BFPredOffset ] , eax
	mov	[ BFPartialCount ] , 0		; clear the partial count
	mov	[ BFPartialPred ] , 100h	; init partial to off

??pred_neg_init:
	mov  	esi , [ dest ]	    ; get ptr to dest
	mov	ebx, 7 * 2

??pred_loop:
	movzx	eax , [ WORD PTR BFPredNegTable + ebx ]
	add	eax , [ (GraphicViewPort esi) . GVPWidth ]	; add width
	add	eax , [ (GraphicViewPort esi) . GVPXAdd ]	; add x add
	add	eax , [ (GraphicViewPort esi) . GVPPitch ]	; extra pitch of DD surface	ST - 9/29/95 1:08PM
	mov	[ WORD PTR BFPredNegTable + 16 + ebx ] , ax
	dec	ebx
	dec	ebx
	jge	??pred_loop

	;--------------------------------------------------------------------
	; SHAPE_PARTIAL: DWORD partial_pred_value (0-255)
	;--------------------------------------------------------------------
??check_partial:
	test	[ flags ] , SHAPE_PARTIAL		; is this a partial pred?
	jz	??setupfunc

	mov	eax , [ flags + edi ]		; pull the partial value
	add	edi , 4				; next argument
	and	eax , 0ffh			; make sure 0-255
	mov	[ BFPartialPred ] , eax		; store it off

??setupfunc:
	mov	ebx , [ jflags ]		; load flags value
	and	ebx , FLAG_MASK			; clip high bits
	add	ebx , ebx			; mult by 4 to get DWORD offset
	add	ebx , ebx
	mov	ebx , [ BufferFrameTable + ebx ]	; get table value
	mov	[ BufferFrameRout ] , ebx		; store it in the function pointer

; Clip dest Rectangle against source Window boundaries.

	mov	[ scr_x ] , 0
	mov	[ scr_y ] , 0
	mov  	esi , [ dest ]	    ; get ptr to dest
	xor 	ecx , ecx
	xor 	edx , edx
	mov	edi , [ (GraphicViewPort esi) . GVPWidth ]  ; get width into register
	mov	ebx , [ x_pixel ]
	mov	eax , [ x_pixel ]
	add	ebx , [ pixel_width ]
	shld	ecx , eax , 1
	mov	[ x1_pixel ] , ebx
	inc	edi
	shld	edx , ebx , 1
	sub	eax , edi
	sub	ebx , edi
	shld	ecx , eax , 1
	shld	edx , ebx , 1

	mov	edi,[ ( GraphicViewPort esi) . GVPHeight ] ; get height into register
	mov	ebx , [ y_pixel ]
	mov	eax , [ y_pixel ]
	add	ebx , [ pixel_height ]
	shld	ecx , eax , 1
	mov	[ y1_pixel ] , ebx
	inc	edi
	shld	edx , ebx , 1
	sub	eax , edi
	sub	ebx , edi
	shld	ecx , eax , 1
	shld	edx , ebx , 1

	xor	cl , 5
	xor	dl , 5
	mov	al , cl
	test	dl , cl
	jnz	??real_out

	or	al , dl
	jz	??do_blit

	mov	[use_old_draw],1
	test	cl , 1000b
	jz	??dest_left_ok

	mov	eax , [ x_pixel ]
	neg	eax
	mov	[ x_pixel ] , 0
	mov	[ scr_x ] , eax

??dest_left_ok:
	test	cl , 0010b
	jz	??dest_bottom_ok

	mov	eax , [ y_pixel ]
	neg	eax
	mov	[ y_pixel ] , 0
	mov	[ scr_y ] , eax

??dest_bottom_ok:
	test	dl , 0100b
	jz	??dest_right_ok

	mov	eax , [ (GraphicViewPort esi) . GVPWidth ]  ; get width into register
	mov	[ x1_pixel ] , eax

??dest_right_ok:
	test	dl , 0001b
	jz	??do_blit

	mov	eax , [ (GraphicViewPort esi) . GVPHeight ]  ; get width into register
	mov	[ y1_pixel ] , eax

??do_blit:
	cld
	mov	eax , [ (GraphicViewPort esi) . GVPXAdd ]
	add	eax , [ (GraphicViewPort esi) . GVPPitch ]
	add	eax , [ (GraphicViewPort esi) . GVPWidth ]
	mov	edi , [ (GraphicViewPort esi) . GVPOffset ]

	mov	ecx , eax
	mul	[ y_pixel ]
	add	edi , [ x_pixel ]
	add	edi , eax

	add	ecx , [ x_pixel ]
	sub	ecx , [ x1_pixel ]
	mov	[ dest_adjust_width ] , ecx

	mov	esi , [ src ]
	mov	eax , [ pixel_width ]
	sub	eax , [ x1_pixel ]
	add	eax , [ x_pixel ]
	mov	[ scr_adjust_width ] , eax

	mov	eax , [ scr_y ]
	mul	[ pixel_width ]
	add	eax , [ scr_x ]
	add	esi , eax

;
; If the shape needs to be clipped then we cant handle it with the new header systen
; so draw it with the old shape drawer
;
	cmp	[use_old_draw],0
	jnz	??use_old_stuff

	add	[header_pointer],size ShapeHeaderType
	mov	edx,[pixel_height]
	mov	ecx,[pixel_width]
	mov	eax,[header_pointer]
	mov	al,[eax]
	mov	[save_ecx],ecx
	inc	[header_pointer]
	and	eax,BLIT_ALL
	shl	eax,2
	add	eax,[ShapeJumpTableAddress]
	jmp	[dword eax]


??use_old_stuff:
	mov	edx , [ y1_pixel ]
	mov	eax , [ x1_pixel ]

	sub	edx , [ y_pixel ]
	jle	??real_out

	sub	eax , [ x_pixel ]
	jle	??real_out

	jmp	[ BufferFrameRout ]	; buffer frame to viewport routine

??real_out:
	epilogue

	ret


; ********************************************************************
; Forward bitblit only
; the inner loop is so efficient that
; the optimal consept no longer apply because
; the optimal byte have to by a number greather than 9 bytes
; ********************************************************************
global	BF_Copy:near

BF_Copy:
	prologue
	cmp	eax , 10
	jl	??forward_loop_bytes

??forward_loop_dword:
	mov	ecx , edi
	mov	ebx , eax
	neg	ecx
	and	ecx , 3
	sub	ebx , ecx
	rep	movsb
	mov	ecx , ebx
	shr	ecx , 2
	rep	movsd
	mov	ecx , ebx
	and	ecx , 3
	rep	movsb

	add	esi , [ scr_adjust_width ]
	add	edi , [ dest_adjust_width ]
	dec	edx
	jnz	??forward_loop_dword

	ret

??forward_loop_bytes:
	mov	ecx , eax
	rep	movsb
	add	esi , [ scr_adjust_width ]
	add	edi , [ dest_adjust_width ]
	dec	edx					; decrement the height
	jnz	??forward_loop_bytes
	epilogue

	ret


;********************************************************************
;********************************************************************

		segment code page public use32 'code'	; Need stricter segment alignment
							; for pentium optimisations


;*****************************************************************************
; Draw a single line with transparent pixels
;
; 11/29/95 10:21AM - ST
;
		align	32

Single_Line_Trans:
		prologue
??slt_mask_map_lp:				; Pentium pipeline usage
						;Pipe	Cycles
		mov	al,[esi]		;U	1
		inc	esi			;Vee	1

		test	al,al			;U	1
		jz	??slt_skip		;Vee	1/5

??slt_not_trans:mov	[edi],al		;u 	1

		inc	edi			;vee	1
		dec	ecx			;u	1

		jnz	??slt_mask_map_lp	;vee  (maybe)	1

??slt_end_line:	epilogue
		next_line

		align	32

??slt_skip:	inc	edi
		dec	ecx
		jz	??slt_skip_end_line

		mov	al,[esi]
		inc	esi
		test	al,al
		jz	??slt_skip2
		mov	[edi],al
		inc	edi
		dec	ecx
		jnz	??slt_mask_map_lp

		epilogue
		next_line

		align	32

??slt_skip2:	inc	edi
		dec	ecx
		jz	??slt_end_line

;
; If we have hit two transparent pixels in a row then we go into
; the transparent optimised bit
;
??slt_round_again:
	rept	64
		mov	al,[esi]   ;	;pipe 1
		inc	esi	   ;1	;pipe 2
		test	al,al	   ;	;pipe 1
		jnz	??slt_not_trans;pipe 2 (not pairable in 1)
				   ;2
		inc	edi	   ;	;pipe 1
		dec	ecx	   ;3	;pipe 2
		jz	??slt_end_line ;4	;pipe 1 (not pairable)
	endm			   ; best case is 4 cycles per iteration
		jmp	??slt_round_again



??slt_skip_end_line:
		epilogue
		next_line



;*****************************************************************************
; Draw a single line with no transparent pixels
;
; 11/29/95 10:21AM - ST
;
; We have to align the destination for cards that dont bankswitch correctly
; when you write non-aligned data.
;
		align	32
Long_Single_Line_Copy:
		prologue

 rept 3
		test	edi,3
		jz	??LSLC_aligned
		movsb
		dec	ecx
 endm

??LSLC_aligned:
		mov	ebx,ecx

		shr	ecx,2
		rep	movsd
		and	ebx,3
		jz	??out
		movsb
		dec	bl
		jz	??out
		movsb
		dec	bl
		jz	??out
		movsb
??out:		epilogue
		next_line



;*****************************************************************************
; Draw a single short line with no transparent pixels
;
; 11/29/95 10:21AM - ST
;
		align	32
Short_Single_Line_Copy:
		prologue
		cmp	ecx,16
		jge	Long_Single_Line_Copy
		mov	ebx,ecx
		rep	movsb
		mov	ecx,ebx
		epilogue
		next_line


;*****************************************************************************
; Skip a line of source that is all transparent
;
; 11/29/95 10:21AM - ST
;

		align	32
Single_Line_Skip:
		prologue
		add	esi,ecx
		add	edi,ecx
		epilogue
		next_line



;*****************************************************************************
; Draw a single line with ghosting
;
; 11/29/95 10:21AM - ST
;
		align	32
Single_Line_Ghost:

		prologue
		xor	eax,eax
??slg_loop:	mov	al,[esi]
		mov	ebx,[IsTranslucent]
		inc	esi
		mov	bh,[eax+ebx]
		cmp	bh,-1
		jz	??slg_store_pixel

		and	ebx,0ff00h
		mov	al,[edi]
		add	ebx,[Translucent]
		mov	al,[eax+ebx]

??slg_store_pixel:
		mov	[edi],al

		inc	edi
		dec	ecx
		jnz	??slg_loop
		epilogue
		next_line



;*****************************************************************************
; Draw a single line with transparent pixels and ghosting
;
; 11/29/95 10:21AM - ST
;
		align	32
Single_Line_Ghost_Trans:
		prologue
		xor	eax,eax
;		cmp	ecx,3
;		ja	??slgt4

??slgt_loop:	mov	al,[esi]
		inc	esi
		test	al,al
		jz	??slgt_transparent

??slgt_not_transparent:
		mov	ebx,[IsTranslucent]
		mov	bh,[eax+ebx]
		cmp	bh,-1
		jz	??slgt_store_pixel

		and	ebx,0ff00h
		mov	al,[edi]
		add	ebx,[Translucent]
		mov	al,[eax+ebx]

??slgt_store_pixel:
		mov	[edi],al
		inc	edi
		dec	ecx
		jnz	??slgt_loop
		epilogue
		next_line


		align	32

??slgt_transparent:
		inc	edi		;1
		dec	ecx		;2
		jz	??slgt_out	;1 (not pairable)

??slgt_round_again:
	rept	64
		mov	al,[esi]   ;	;pipe 1
		inc	esi	   ;1	;pipe 2
		test	al,al	   ;	;pipe 1
		jnz	??slgt_not_transparent	;pipe 2 (not pairable in 1)
				   ;2
		inc	edi	   ;	;pipe 1
		dec	ecx	   ;3	;pipe 2
		jz	??slgt_out ;4	;pipe 1 (not pairable)
	endm			   ; best case is 4 cycles per iteration
		jmp	??slgt_round_again

??slgt_out:	epilogue
		next_line



;
; Optimised video memory access version
;
		align 	32

??slgt4:        push	edx
		mov	edx,[edi]

	rept	4
	local	slgt4_store1
	local	slgt4_trans1
		mov	al,[esi]
		inc	esi
		test	al,al
		jz	slgt4_trans1

		mov	ebx,[IsTranslucent]
		mov	bh,[eax+ebx]
		cmp	bh,-1
		jz	slgt4_store1

		and	ebx,0ff00h
		mov	al,dl
		add	ebx,[Translucent]
		mov	al,[eax+ebx]

slgt4_store1:	mov	dl,al

slgt4_trans1:	ror	edx,8
	endm
		mov	[edi],edx
		pop	edx
		lea	edi,[edi+4]
		lea	ecx,[ecx+0fffffffch]
		cmp	ecx,3
		ja	??slgt4
		test	ecx,ecx
		jnz	??slgt_loop

		epilogue
		next_line










;*****************************************************************************
; Draw a single line with fading (colour remapping)
;
; 11/29/95 10:21AM - ST
;
		align	32

Single_Line_Fading:
		prologue
		xor	eax,eax
		mov	ebx,[FadingTable]
		push	ebp
		mov	ebp,[FadingNum]
		push	ebp

??slf_loop:	mov	al,[esi]
		inc	esi

		mov	ebp,[esp]

??slf_fade_loop:mov	al,[ebx+eax]
		dec	ebp
		jnz	??slf_fade_loop

		mov	[edi],al
		inc	edi

		dec	ecx
		jnz	??slf_loop
		add	esp,4
		pop	ebp
		epilogue
		next_line


;*****************************************************************************
; Draw a single line with transparent pixels and fading (colour remapping)
;
; 11/29/95 10:21AM - ST
;
		align	32

Single_Line_Fading_Trans:
		prologue
		xor	eax,eax
		mov	ebx,[FadingTable]
		push	ebp
		mov	ebp,[FadingNum]
		push	ebp

??slft_loop:	mov	al,[esi]
		inc	esi
		test	al,al
		jz	??slft_transparent

		mov	ebp,[esp]

??slft_fade_loop:
		mov	al,[ebx+eax]
		dec	ebp
		jnz	??slft_fade_loop

		mov	[edi],al
??slft_transparent:
		inc	edi

		dec	ecx
		jnz	??slft_loop
		add	esp,4
		pop	ebp
		epilogue
		next_line





;*****************************************************************************
; Draw a single line with a single fade level (colour remap)
;
; 11/29/95 10:21AM - ST
;
		align	32

Single_Line_Single_Fade:
		prologue
		xor	eax,eax
		mov	ebx,[FadingTable]

??slsf_loop:	mov	al,[esi]
		mov	al,[ebx+eax]
		mov	[edi],al
		inc	esi
		inc	edi

		dec	ecx
		jnz	??slsf_loop
		epilogue
		next_line



;*****************************************************************************
; Draw a single line with transparent pixels and a single fade level (colour remap)
;
; 11/29/95 10:21AM - ST
;
		align	32

Single_Line_Single_Fade_Trans:
		prologue
		xor	eax,eax
		mov	ebx,[FadingTable]

??slsft_loop:	mov	al,[esi]
		inc	esi
		test	al,al
		jz	??slsft_transparent
		mov	al,[ebx+eax]
		mov	[edi],al
		inc	edi
		dec	ecx
		jnz	??slsft_loop
		epilogue
		next_line

		align	32

??slsft_transparent:
		inc	edi

		dec	ecx
		jz	??slsft_next_line
		mov	al,[esi]
		inc	esi
		test	al,al
		jz	??slsft_transparent
		mov	al,[ebx+eax]
		mov	[edi],al
		inc	edi
		dec	ecx
		jnz	??slsft_loop

??slsft_next_line:
		epilogue
		next_line





;*****************************************************************************
; Draw a single line with ghosting and fading (colour remapping)
;
; 11/29/95 10:21AM - ST
;
		align	32

Single_Line_Ghost_Fading:

		prologue
		mov	[StashECX],ecx

??SLGF_loop:	xor	eax,eax
		mov	al,[esi]
		mov	ebx,[IsTranslucent]
		mov	bh,[eax+ebx]
		cmp	bh,-1
		jz	??slgf_do_fading

		and	ebx,0ff00h

		mov	al,[edi]
		add	ebx,[Translucent]
		mov	al,[ebx+eax]

??slgf_do_fading:
		mov	ebx,[FadingTable]
		mov	ecx,[FadingNum]

??slgf_fade_loop:
		mov	al,[eax+ebx]
		dec	ecx
		jnz	??slgf_fade_loop

		mov	[edi],al
		inc	esi
		inc	edi

		dec	[StashECX]
		jnz	??SLGF_loop
		epilogue
		next_line


;*****************************************************************************
; Draw a single line with transparent pixels, ghosting and fading
;
; 11/29/95 10:21AM - ST
;
		align	32

Single_Line_Ghost_Fading_Trans:
		prologue
		mov	[StashECX],ecx
		xor	eax,eax

;		cmp	ecx,3
;		ja	??slgft4

??SLGFT_loop:	mov	al,[esi]
		inc	esi
		test	al,al
		jz	??slgft_trans_pixel
		mov	ebx,[IsTranslucent]
		mov	bh,[eax+ebx]
		cmp	bh,-1
		jz	??slgft_do_fading

		and	ebx,0ff00h

		mov	al,[edi]
		add	ebx,[Translucent]
		mov	al,[ebx+eax]

??slgft_do_fading:
		mov	ebx,[FadingTable]
		mov	ecx,[FadingNum]

??slgft_fade_loop:
		mov	al,[eax+ebx]
		dec	ecx
		jnz	??slgft_fade_loop

		mov	[edi],al
??slgft_trans_pixel:
		inc	edi

		dec	[StashECX]
		jnz	??SLGFT_loop
		epilogue
		next_line


		align	32

??slgft4:	push	edx
		mov	edx,[edi]

	rept	4
	local	slgft4_fade
	local	slgft4_fade_lp
	local	slgft4_trans
		mov	al,[esi]
		inc	esi
		test	al,al
		jz	slgft4_trans
		mov	ebx,[IsTranslucent]
		mov	bh,[eax+ebx]
		cmp	bh,-1
		jz	slgft4_fade

		and	ebx,0ff00h

		mov	al,dl
		add	ebx,[Translucent]
		mov	al,[ebx+eax]

slgft4_fade:	mov	ebx,[FadingTable]
		mov	ecx,[FadingNum]

slgft4_fade_lp:	mov	al,[eax+ebx]
		dec	ecx
		jnz	slgft4_fade_lp

		mov	dl,al

slgft4_trans:	ror	edx,8
	endm
		mov	[edi],edx
		pop	edx
		lea	edi,[edi+4]
		sub	[StashECX],4
		jz	??slgft4_out
		cmp	[StashECX],3
		ja	??slgft4
		jmp	??SLGFT_loop

??slgft4_out:	epilogue
		next_line


;*****************************************************************************
; Draw a single line with predator effect
;
; 11/29/95 10:21AM - ST
;
		align	32

Single_Line_Predator:

		prologue

??slp_loop:	mov	al,[esi]

		mov	ebx,[BFPartialCount]
		add	ebx,[BFPartialPred]
		or	bh,bh
		jnz	??slp_get_pred

		mov	[BFPartialCount] , ebx
		jmp	??slp_skip_pixel

??slp_get_pred:	xor	bh , bh
		mov	eax,[BFPredOffset]
		mov	[BFPartialCount] , ebx
		add	[BYTE BFPredOffset],2
		mov	eax,[DWORD BFPredTable+eax]
		and	[BYTE BFPredOffset],PRED_MASK
		and	eax,0ffffh

		mov	al,[edi+eax]
		mov	[edi],al

??slp_skip_pixel:
		inc	esi
		inc	edi

		dec	ecx
		jnz	??slp_loop

		epilogue
		next_line




;*****************************************************************************
; Draw a single line with transparent pixels and predator effect
;
; 11/29/95 10:21AM - ST
;
		align	32

Single_Line_Predator_Trans:

		prologue

??slpt_loop:	mov	al,[esi]
		inc	esi
		test	al,al
		jz	??slpt_skip_pixel

		mov	ebx,[BFPartialCount]
		add	ebx,[BFPartialPred]
		or	bh,bh
		jnz	??slpt_get_pred

		mov	[BFPartialCount] , ebx
		jmp	??slpt_skip_pixel

??slpt_get_pred:xor	bh , bh
		mov	eax,[BFPredOffset]
		mov	[BFPartialCount] , ebx
		add	[BYTE BFPredOffset],2
		mov	eax,[DWORD BFPredTable+eax]
		and	[BYTE PTR BFPredOffset ] , PRED_MASK
		and	eax,0ffffh

		mov	al,[edi+eax]
		mov	[edi],al

??slpt_skip_pixel:
		inc	edi

		dec	ecx
		jnz	??slpt_loop

		epilogue
		next_line


;*****************************************************************************
; Draw a single line with predator and ghosting
;
; 11/29/95 10:21AM - ST
;
		align	32

Single_Line_Predator_Ghost:

		prologue

??slpg_loop:	mov	al,[esi]
		mov	ebx,[BFPartialCount]
		add	ebx,[BFPartialPred]
		test	bh,bh
		jnz	??slpg_get_pred		; is this a predator pixel?

		mov	[BFPartialCount],ebx
		jmp	??slpg_check_ghost

??slpg_get_pred:
		xor	bh,bh
		mov	eax,[BFPredOffset]
		mov	[BFPartialCount],ebx
		add	[BYTE BFPredOffset],2
		mov	eax,[DWORD BFPredTable+eax ]
		and	[BYTE BFPredOffset],PRED_MASK
		and	eax,0ffffh
		mov	al,[edi+eax]

??slpg_check_ghost:
		mov	ebx,[IsTranslucent]
		mov	bh,[ebx+eax]
		cmp	bh,0ffh
		je	??slpg_store_pixel

		xor	eax,eax
		and	ebx,0FF00h

		mov	al,[edi]
		add	ebx,[Translucent]

		mov	al,[ebx+eax]

??slpg_store_pixel:
		mov	[edi],al
		inc	esi
		inc	edi

		dec	ecx
		jnz	??slpg_loop

		epilogue
		next_line



;*****************************************************************************
; Draw a single line with transparent pixels, predator and ghosting
;
; 11/29/95 10:21AM - ST
;
		align	32

Single_Line_Predator_Ghost_Trans:
		prologue

??slpgt_loop:	mov	al,[esi]
		inc	esi
		test	al,al
		jz	??slpgt_transparent

		mov	ebx,[BFPartialCount]
		add	ebx,[BFPartialPred]
		test	bh,bh
		jnz	??slpgt_get_pred		; is this a predator pixel?

		mov	[BFPartialCount],ebx
		jmp	??slpgt_check_ghost

??slpgt_get_pred:
		xor	bh,bh
		mov	eax,[BFPredOffset]
		mov	[BFPartialCount],ebx
		add	[BYTE BFPredOffset],2
		mov	eax,[DWORD BFPredTable+eax ]
		and	[BYTE BFPredOffset],PRED_MASK
		and	eax,0ffffh
		mov	al,[edi+eax]

??slpgt_check_ghost:
		mov	ebx,[IsTranslucent]
		mov	bh,[ebx+eax]
		cmp	bh,0ffh
		je	??slpgt_store_pixel

		xor	eax,eax
		and	ebx,0FF00h

		mov	al,[edi]
		add	ebx,[Translucent]

		mov	al,[ebx+eax]

??slpgt_store_pixel:
		mov	[edi],al
??slpgt_transparent:
		inc	edi

		dec	ecx
		jnz	??slpgt_loop

		pop	ecx
		epilogue
		next_line


;*****************************************************************************
; Draw a single line with predator and fading
;
; 11/29/95 10:21AM - ST
;
		align	32

Single_Line_Predator_Fading:

		prologue
		mov	[StashECX],ecx

??slpf_loop:	mov	al,[esi]
		mov	ebx,[BFPartialCount]
		inc	esi
		add	ebx,[BFPartialPred]
		test	bh,bh
		jnz	??slpf_get_pred

		mov	[BFPartialCount],ebx
		jmp	??slpf_do_fading

??slpf_get_pred:xor	bh,bh
		mov	eax,[BFPredOffset]
		mov	[BFPartialCount],ebx
		and	[BYTE BFPredOffset],2
		mov	eax,[DWORD BFPredTable+eax]
		and	[BYTE BFPredOffset],PRED_MASK

		and	eax,0ffffh
		mov	al,[eax+edi]

??slpf_do_fading:
		and	eax,255
		mov	ebx,[FadingTable]
		mov	ecx,[FadingNum]

??slpf_fade_loop:
		mov	al,[eax+ebx]
		dec	ecx
		jnz	??slpf_fade_loop

		mov	[edi],al
		inc	edi

		dec	[StashECX]
		jnz	??slpf_loop

		epilogue
		next_line



;*****************************************************************************
; Draw a single line with transparent pixels, fading and predator
;
; 11/29/95 10:21AM - ST
;
		align	32

Single_Line_Predator_Fading_Trans:
		prologue
		mov	[StashECX],ecx

??slpft_loop:	mov	al,[esi]
		inc	esi
		test	al,al
		jz	??slpft_transparent
		mov	ebx,[BFPartialCount]
		add	ebx,[BFPartialPred]
		test	bh,bh
		jnz	??slpft_get_pred

		mov	[BFPartialCount],ebx
		jmp	??slpft_do_fading

??slpft_get_pred:
		xor	bh,bh
		mov	eax,[BFPredOffset]
		mov	[BFPartialCount],ebx
		and	[BYTE BFPredOffset],2
		mov	eax,[DWORD BFPredTable+eax]
		and	[BYTE BFPredOffset],PRED_MASK

		and	eax,0ffffh
		mov	al,[eax+edi]

??slpft_do_fading:
		and	eax,255
		mov	ebx,[FadingTable]
		mov	ecx,[FadingNum]

??slpft_fade_loop:
		mov	al,[eax+ebx]
		dec	ecx
		jnz	??slpft_fade_loop

		mov	[edi],al
??slpft_transparent:
		inc	edi

		dec	[StashECX]
		jnz	??slpft_loop

		epilogue
		next_line



;*****************************************************************************
; Draw a single line with predator, ghosting and fading
;
; 11/29/95 10:21AM - ST
;
		align	32

Single_Line_Predator_Ghost_Fading:

		prologue
		mov	[StashECX],ecx

??slpgf_loop:	mov	al,[esi]
		mov	ebx,[BFPartialCount]
		inc	esi
		add	ebx,[BFPartialPred]
		test	bh , bh
		jnz	??slpgf_get_pred		; is this a predator pixel?

		mov	[BFPartialCount],ebx
		jmp	??slpgf_check_ghost

??slpgf_get_pred:
		xor	bh,bh
		mov	eax,[BFPredOffset]
		mov	[BFPartialCount],ebx
		add	[BYTE BFPredOffset],2
		mov	eax,[DWORD BFPredTable+eax]
		and	[BYTE BFPredOffset],PRED_MASK
		and	eax,0ffffh

		mov	al,[edi+eax]

??slpgf_check_ghost:
		and	eax,255
		mov	ebx,[IsTranslucent]
		mov	bh,[ebx+eax]
		cmp	bh,0ffh
		je	??slpgf_do_fading

		and	ebx , 0FF00h

		mov	al,[edi]
		add	ebx,[Translucent]

		mov	al,[ebx+eax]

??slpgf_do_fading:
		xor	eax,eax
		mov	ebx,[FadingTable]
		mov	ecx,[FadingNum]

??slpgf_fade_loop:
		mov	al,[ebx+eax]
		dec	ecx
		jnz	??slpgf_fade_loop

??slpgf_store_pixel:
		mov	[edi],al
		inc	edi

		dec	[StashECX]
		jnz	??slpgf_loop

		epilogue
		next_line



;*****************************************************************************
; Draw a single line with transparent pixels, predator, ghosting and fading
;
; 11/29/95 10:21AM - ST
;
		align	32

Single_Line_Predator_Ghost_Fading_Trans:

		prologue
		mov	[StashECX],ecx

??slpgft_loop:	mov	al,[esi]
		inc	esi
		test	al,al
		jz	??slpgft_transparent

		mov	ebx,[BFPartialCount]
		add	ebx,[BFPartialPred]
		test	bh , bh
		jnz	??slpgft_get_pred		; is this a predator pixel?

		mov	[BFPartialCount],ebx
		jmp	??slpgft_check_ghost

??slpgft_get_pred:
		xor	bh,bh
		mov	eax,[BFPredOffset]
		mov	[BFPartialCount],ebx
		add	[BYTE BFPredOffset],2
		mov	eax,[DWORD BFPredTable+eax]
		and	[BYTE BFPredOffset],PRED_MASK
		and	eax,0ffffh

		mov	al,[edi+eax]

??slpgft_check_ghost:
		and	eax,255
		mov	ebx,[IsTranslucent]
		mov	bh,[ebx+eax]
		cmp	bh,0ffh
		je	??slpgft_do_fading

		and	ebx , 0FF00h

		mov	al,[edi]
		add	ebx,[Translucent]

		mov	al,[ebx+eax]

??slpgft_do_fading:
		xor	eax,eax
		mov	ebx,[FadingTable]
		mov	ecx,[FadingNum]

??slpgft_fade_loop:
		mov	al,[ebx+eax]
		dec	ecx
		jnz	??slpgft_fade_loop

??slpgft_store_pixel:
		mov	[edi],al
??slpgft_transparent:
		inc	edi

		dec	[StashECX]
		jnz	??slpgft_loop

		epilogue
		next_line




		ends		;end of strict alignment segment

	       	codeseg



global	BF_Trans:near

BF_Trans:

	prologue
; calc the code location to skip to 10 bytes per REPT below!!!!
	mov	ecx , eax
	and	ecx , 01fh
	lea	ecx , [ ecx + ecx * 4 ]		; quick multiply by 5
	neg	ecx
	shr	eax , 5
	lea	ecx , [ ??trans_reference + ecx * 2 ] ; next multiply by 2
	mov	[ loop_cnt ] , eax
	mov	[ jmp_loc ] , ecx

??trans_loop:
	mov	ecx , [ loop_cnt ]
	jmp	[ jmp_loc ]

; the following code should NOT be changed without changing the calculation
; above!!!!!!

??trans_line:

	REPT	32
	local	trans_pixel
		mov	bl , [ esi ]
		inc	esi
		test	bl , bl
		jz	trans_pixel

		mov	[ edi ] , bl

	trans_pixel:
		inc	edi
	ENDM

??trans_reference:
	dec	ecx
	jge	??trans_line

	add	esi , [ scr_adjust_width ]
	add	edi , [ dest_adjust_width ]
	dec	edx
	jnz	??trans_loop
	epilogue

	ret

;********************************************************************
;********************************************************************

global	BF_Ghost:near
BF_Ghost:

	prologue
	mov	ebx , eax			; width

	; NOTE: the below calculation assumes a group of instructions is
	;	less than 256 bytes

	; get length of the 32 groups of instructions

	lea	ecx , [ ??ghost_reference - ??ghost_line ]

	shr	ebx , 5				; width / 32
	shr	ecx , 5				; length of instructions / 32
	and	eax , 01fh			; mod of width / 32
	mul	cl				; calc offset to start of group
	neg	eax				; inverse of width
	mov	[ loop_cnt ] , ebx		; save width / 32
	lea	ecx , [ ??ghost_reference + eax ]
	mov	eax , 0
	mov	[ jmp_loc ] , ecx

??ghost_loop:
	mov	ecx , [ loop_cnt ]
	jmp	[ jmp_loc ]

??ghost_line:

	REPT	32
	local	store_pixel
		mov	al , [ esi ]
		inc	esi
		mov	ebx , [ IsTranslucent ]		; is it a translucent color?
		mov	bh , [ BYTE PTR ebx + eax ]
		cmp	bh , 0ffh
		je	store_pixel

		and	ebx , 0FF00h			; clear all of ebx except bh
							; we have the index to the translation table
							; ((trans_colour * 256) + dest colour)
		mov	al , [ edi ]			; mov pixel at destination to al
		add	ebx , [ Translucent ]		; get the ptr to it!
							; Add the (trans_color * 256) of the translation equ.
		mov	al , [ BYTE PTR ebx + eax ]	; get new pixel in al

	store_pixel:
		mov	[ edi ] , al
		inc	edi

	ENDM

??ghost_reference:
	dec	ecx
	jge	??ghost_line

	add	esi , [ scr_adjust_width ]
	add	edi , [ dest_adjust_width ]
	dec	edx
	jnz	??ghost_loop

	epilogue
	ret


;********************************************************************
;********************************************************************

global	BF_Ghost_Trans:near
BF_Ghost_Trans:

	prologue
	mov	ebx , eax			; width

	; NOTE: the below calculation assumes a group of instructions is
	;	less than 256 bytes

	; get length of the 32 groups of instructions

	lea	ecx , [ ??ghost_t_reference - ??ghost_t_line ]

	shr	ebx , 5				; width / 32
	shr	ecx , 5				; length of instructions / 32
	and	eax , 01fh			; mod of width / 32
	mul	cl				; calc offset to start of group
	neg	eax				; inverse of width
	mov	[ loop_cnt ] , ebx		; save width / 32
	lea	ecx , [ ??ghost_t_reference + eax ]
	mov	eax , 0
	mov	[ jmp_loc ] , ecx

??ghost_t_loop:
	mov	ecx , [ loop_cnt ]
	jmp	[ jmp_loc ]

??ghost_t_line:

	REPT	32
	local	transp_pixel
	local	store_pixel
		mov	al , [ esi ]
		inc	esi
		test	al , al
		jz	transp_pixel

		mov	ebx , [ IsTranslucent ]		; is it a translucent color?
		mov	bh , [ BYTE PTR ebx + eax ]
		cmp	bh , 0ffh
		je	store_pixel

		and	ebx , 0FF00h			; clear all of ebx except bh
							; we have the index to the translation table
							; ((trans_colour * 256) + dest colour)
		mov	al , [ edi ]			; mov pixel at destination to al
		add	ebx , [ Translucent ]		; get the ptr to it!
							; Add the (trans_color * 256) of the translation equ.
		mov	al , [ BYTE PTR ebx + eax ]	; get new pixel in al

	store_pixel:
		mov	[ edi ] , al

	transp_pixel:
		inc	edi

	ENDM

??ghost_t_reference:
	dec	ecx
	jge	??ghost_t_line

	add	esi , [ scr_adjust_width ]
	add	edi , [ dest_adjust_width ]
	dec	edx
	jnz	??ghost_t_loop

	epilogue
	ret


;********************************************************************
;********************************************************************

global	BF_Fading:near
BF_Fading:

	prologue
	mov	ebx , eax			; width

	; NOTE: the below calculation assumes a group of instructions is
	;	less than 256 bytes

	; get length of the 32 groups of instructions

	lea	ecx , [ ??fading_reference - ??fading_line ]

	shr	ebx , 5				; width / 32
	shr	ecx , 5				; length of instructions / 32
	and	eax , 01fh			; mod of width / 32
	mul	cl				; calc offset to start of group
	neg	eax				; inverse of width
	mov	[ loop_cnt ] , ebx		; save width / 32
	lea	ecx , [ ??fading_reference + eax ]
	mov	eax , 0
	mov	[ jmp_loc ] , ecx

??fading_loop:
	mov	ecx , [ loop_cnt ]
	mov	[ StashECX ] , ecx		; preserve ecx for later
	mov	ebx , [ FadingTable ]		; run color through fading table
	jmp	[ jmp_loc ]

??fading_line_begin:
	mov	[ StashECX ] , ecx		; preserve ecx for later

??fading_line:

	REPT	32
	local	fade_loop
		mov	al , [ esi ]
		inc	esi
		mov	ecx , [ FadingNum ]

	fade_loop:
		mov	al, [BYTE PTR ebx + eax]
		dec	ecx
		jnz	fade_loop

		mov	[ edi ] , al
		inc	edi

	ENDM

??fading_reference:
	mov	ecx , [ StashECX ]		; restore ecx for main draw loop
	dec	ecx
	jge	??fading_line_begin

	add	esi , [ scr_adjust_width ]
	add	edi , [ dest_adjust_width ]
	dec	edx
	jnz	??fading_loop

	epilogue
	ret


;********************************************************************
;********************************************************************

global	BF_Fading_Trans:near
BF_Fading_Trans:

	prologue
	mov	ebx , eax			; width

	; NOTE: the below calculation assumes a group of instructions is
	;	less than 256 bytes

	; get length of the 32 groups of instructions

	lea	ecx , [ ??fading_t_reference - ??fading_t_line ]

	shr	ebx , 5				; width / 32
	shr	ecx , 5				; length of instructions / 32
	and	eax , 01fh			; mod of width / 32
	mul	cl				; calc offset to start of group
	neg	eax				; inverse of width
	mov	[ loop_cnt ] , ebx		; save width / 32
	lea	ecx , [ ??fading_t_reference + eax ]
	mov	eax , 0
	mov	[ jmp_loc ] , ecx

??fading_t_loop:
	mov	ecx , [ loop_cnt ]
	mov	[ StashECX ] , ecx		; preserve ecx for later
	mov	ebx , [ FadingTable ]		; run color through fading table
	jmp	[ jmp_loc ]

??fading_t_line_begin:
	mov	[ StashECX ] , ecx		; preserve ecx for later

??fading_t_line:

	REPT	32
	local	transp_pixel
	local	fade_loop
		mov	al , [ esi ]
		inc	esi
		test	al , al
		jz	transp_pixel

		mov	ecx , [ FadingNum ]

	fade_loop:
		mov	al, [BYTE PTR ebx + eax]
		dec	ecx
		jnz	fade_loop

		mov	[ edi ] , al

	transp_pixel:
		inc	edi

	ENDM

??fading_t_reference:
	mov	ecx , [ StashECX ]		; restore ecx for main draw loop
	dec	ecx
	jge	??fading_t_line_begin

	add	esi , [ scr_adjust_width ]
	add	edi , [ dest_adjust_width ]
	dec	edx
	jnz	??fading_t_loop

	epilogue
	ret


;********************************************************************
;********************************************************************

global	BF_Ghost_Fading:near
BF_Ghost_Fading:

	prologue
	mov	ebx , eax			; width

	; NOTE: the below calculation assumes a group of instructions is
	;	less than 256 bytes

	; get length of the 32 groups of instructions

	lea	ecx , [ ??ghost_f_reference - ??ghost_f_line ]

	shr	ebx , 5				; width / 32
	shr	ecx , 5				; length of instructions / 32
	and	eax , 01fh			; mod of width / 32
	mul	cl				; calc offset to start of group
	neg	eax				; inverse of width
	mov	[ loop_cnt ] , ebx		; save width / 32
	lea	ecx , [ ??ghost_f_reference + eax ]
	mov	eax , 0
	mov	[ jmp_loc ] , ecx

??ghost_f_loop:
	mov	ecx , [ loop_cnt ]
	mov	[ StashECX ] , ecx		; preserve ecx for later
	jmp	[ jmp_loc ]

??ghost_f_line_begin:
	mov	[ StashECX ] , ecx		; preserve ecx for later

??ghost_f_line:

	REPT	32
	local	store_pixel
	local	do_fading
	local	fade_loop
		mov	al , [ esi ]
		inc	esi
		mov	ebx , [ IsTranslucent ]		; is it a lucent color?
		mov	bh , [ BYTE PTR ebx + eax ]
		cmp	bh , 0ffh
		je	do_fading

		and	ebx , 0FF00h			; clear all of ebx except bh
							; we have the index to the lation table
							; ((_colour * 256) + dest colour)
		mov	al , [ edi ]			; mov pixel at destination to al
		add	ebx , [ Translucent ]		; get the ptr to it!
							; Add the (_color * 256) of the lation equ.
		mov	al , [ BYTE PTR ebx + eax ]	; get new pixel in al
; DRD		jmp	store_pixel

	do_fading:
		mov	ebx , [ FadingTable ]		; run color through fading table
		mov	ecx , [ FadingNum ]

	fade_loop:
		mov	al, [BYTE PTR ebx + eax]
		dec	ecx
		jnz	fade_loop

	store_pixel:
		mov	[ edi ] , al
		inc	edi

	ENDM

??ghost_f_reference:
	mov	ecx , [ StashECX ]		; restore ecx for main draw loop
	dec	ecx
	jge	??ghost_f_line_begin

	add	esi , [ scr_adjust_width ]
	add	edi , [ dest_adjust_width ]
	dec	edx
	jnz	??ghost_f_loop

	epilogue
	ret


;********************************************************************
;********************************************************************

global	BF_Ghost_Fading_Trans:near
BF_Ghost_Fading_Trans:

	prologue
	mov	ebx , eax			; width

	; NOTE: the below calculation assumes a group of instructions is
	;	less than 256 bytes

	; get length of the 32 groups of instructions

	lea	ecx , [ ??ghost_f_t_reference - ??ghost_f_t_line ]

	shr	ebx , 5				; width / 32
	shr	ecx , 5				; length of instructions / 32
	and	eax , 01fh			; mod of width / 32
	mul	cl				; calc offset to start of group
	neg	eax				; inverse of width
	mov	[ loop_cnt ] , ebx		; save width / 32
	lea	ecx , [ ??ghost_f_t_reference + eax ]
	mov	eax , 0
	mov	[ jmp_loc ] , ecx

??ghost_f_t_loop:
	mov	ecx , [ loop_cnt ]
	mov	[ StashECX ] , ecx		; preserve ecx for later
	jmp	[ jmp_loc ]

??ghost_f_t_line_begin:
	mov	[ StashECX ] , ecx		; preserve ecx for later

??ghost_f_t_line:

	REPT	32
	local	transp_pixel
	local	store_pixel
	local	do_fading
	local	fade_loop
		mov	al , [ esi ]
		inc	esi
		test	al , al
		jz	transp_pixel

		mov	ebx , [ IsTranslucent ]		; is it a translucent color?
		mov	bh , [ BYTE PTR ebx + eax ]
		cmp	bh , 0ffh
		je	do_fading

		and	ebx , 0FF00h			; clear all of ebx except bh
							; we have the index to the translation table
							; ((trans_colour * 256) + dest colour)
		mov	al , [ edi ]			; mov pixel at destination to al
		add	ebx , [ Translucent ]		; get the ptr to it!
							; Add the (trans_color * 256) of the translation equ.
		mov	al , [ BYTE PTR ebx + eax ]	; get new pixel in al
; DRD		jmp	store_pixel

	do_fading:
		mov	ebx , [ FadingTable ]		; run color through fading table
		mov	ecx , [ FadingNum ]

	fade_loop:
		mov	al, [BYTE PTR ebx + eax]
		dec	ecx
		jnz	fade_loop

	store_pixel:
		mov	[ edi ] , al

	transp_pixel:
		inc	edi

	ENDM

??ghost_f_t_reference:
	mov	ecx , [ StashECX ]		; restore ecx for main draw loop
	dec	ecx
	jge	??ghost_f_t_line_begin

	add	esi , [ scr_adjust_width ]
	add	edi , [ dest_adjust_width ]
	dec	edx
	jnz	??ghost_f_t_loop

	epilogue
	ret


;********************************************************************
;********************************************************************

global	BF_Predator:near
BF_Predator:

	prologue
	mov	ebx , eax			; width

	; NOTE: the below calculation assumes a group of instructions is
	;	less than 256 bytes

	; get length of the 32 groups of instructions

	lea	ecx , [ ??predator_reference - ??predator_line ]

	shr	ebx , 5				; width / 32
	shr	ecx , 5				; length of instructions / 32
	and	eax , 01fh			; mod of width / 32
	mul	cl				; calc offset to start of group
	neg	eax				; inverse of width
	mov	[ loop_cnt ] , ebx		; save width / 32
	lea	ecx , [ ??predator_reference + eax ]
	mov	eax , 0
	mov	[ jmp_loc ] , ecx

??predator_loop:
	mov	ecx , [ loop_cnt ]
	jmp	[ jmp_loc ]

??predator_line:

	REPT	32
	local	get_pred
	local	skip_pixel
		mov	al , [ esi ]
		inc	esi
		mov	ebx , [ BFPartialCount ]
		add	ebx , [ BFPartialPred ]
		or	bh , bh
		jnz	get_pred		; is this a predator pixel?

		mov	[ BFPartialCount ] , ebx
		jmp	skip_pixel

	get_pred:
		xor	bh , bh
		mov	eax, [ BFPredOffset ]
		mov	[ BFPartialCount ] , ebx
		add	[ BYTE PTR BFPredOffset ] , 2
		movzx	eax , [ WORD PTR BFPredTable + eax ]
		and	[ BYTE PTR BFPredOffset ] , PRED_MASK
						; pick up a color offset a pseudo-
						;  random amount from the current
		movzx	eax , [ BYTE PTR edi + eax ]	;  viewport address

;		xor	bh , bh
;		mov	eax , [ BFPredValue ]	; pick up a color offset a pseudo-
;						;  random amount from the current
;		mov	[ BFPartialCount ] , ebx
;		mov	al , [ edi + eax ]	;  viewport address

		mov	[ edi ] , al

	skip_pixel:
		inc	edi

	ENDM

??predator_reference:
	dec	ecx
	jge	??predator_line

	add	esi , [ scr_adjust_width ]
	add	edi , [ dest_adjust_width ]
	dec	edx
	jnz	??predator_loop

	epilogue
	ret


;********************************************************************
;********************************************************************

global	BF_Predator_Trans:near
BF_Predator_Trans:

	prologue
	mov	ebx , eax			; width

	; NOTE: the below calculation assumes a group of instructions is
	;	less than 256 bytes

	; get length of the 32 groups of instructions

	lea	ecx , [ ??predator_t_reference - ??predator_t_line ]

	shr	ebx , 5				; width / 32
	shr	ecx , 5				; length of instructions / 32
	and	eax , 01fh			; mod of width / 32
	mul	cl				; calc offset to start of group
	neg	eax				; inverse of width
	mov	[ loop_cnt ] , ebx		; save width / 32
	lea	ecx , [ ??predator_t_reference + eax ]
	mov	eax , 0
	mov	[ jmp_loc ] , ecx

??predator_t_loop:
	mov	ecx , [ loop_cnt ]
	jmp	[ jmp_loc ]

??predator_t_line:

	REPT	32
	local	trans_pixel
	local	get_pred
	local	store_pixel
		mov	al , [ esi ]
		inc	esi
		test	al , al
		jz	trans_pixel

		mov	ebx , [ BFPartialCount ]
		add	ebx , [ BFPartialPred ]
		or	bh , bh
		jnz	get_pred		; is this a predator pixel?

		mov	[ BFPartialCount ] , ebx
		jmp	store_pixel

	get_pred:
		xor	bh , bh
		mov	eax, [ BFPredOffset ]
		mov	[ BFPartialCount ] , ebx
		add	[ BYTE PTR BFPredOffset ] , 2
		movzx	eax , [ WORD PTR BFPredTable + eax ]
		and	[ BYTE PTR BFPredOffset ] , PRED_MASK
						; pick up a color offset a pseudo-
						;  random amount from the current
		movzx	eax , [ BYTE PTR edi + eax ]	;  viewport address

	store_pixel:
		mov	[ edi ] , al

	trans_pixel:
		inc	edi

	ENDM

??predator_t_reference:
	dec	ecx
	jge	??predator_t_line

	add	esi , [ scr_adjust_width ]
	add	edi , [ dest_adjust_width ]
	dec	edx
	jnz	??predator_t_loop

	epilogue
	ret


;********************************************************************
;********************************************************************

global	BF_Predator_Ghost:near
BF_Predator_Ghost:

	prologue
	mov	ebx , eax			; width

	; NOTE: the below calculation assumes a group of instructions is
	;	less than 256 bytes

	; get length of the 32 groups of instructions

	lea	ecx , [ ??predator_g_reference - ??predator_g_line ]

	shr	ebx , 5				; width / 32
	shr	ecx , 5				; length of instructions / 32
	and	eax , 01fh			; mod of width / 32
	mul	cl				; calc offset to start of group
	neg	eax				; inverse of width
	mov	[ loop_cnt ] , ebx		; save width / 32
	lea	ecx , [ ??predator_g_reference + eax ]
	mov	eax , 0
	mov	[ jmp_loc ] , ecx

??predator_g_loop:
	mov	ecx , [ loop_cnt ]
	jmp	[ jmp_loc ]

??predator_g_line:

	REPT	32
	local	get_pred
	local	check_ghost
	local	store_pixel
		mov	al , [ esi ]
		mov	ebx , [ BFPartialCount ]
		inc	esi
		add	ebx , [ BFPartialPred ]
		or	bh , bh
		jnz	get_pred		; is this a predator pixel?

		mov	[ BFPartialCount ] , ebx
		jmp	check_ghost

	get_pred:
		xor	bh , bh
		mov	eax, [ BFPredOffset ]
		mov	[ BFPartialCount ] , ebx
		add	[ BYTE PTR BFPredOffset ] , 2
		movzx	eax , [ WORD PTR BFPredTable + eax ]
		and	[ BYTE PTR BFPredOffset ] , PRED_MASK
						; pick up a color offset a pseudo-
						;  random amount from the current
		movzx	eax , [ BYTE PTR edi + eax ]	;  viewport address

	check_ghost:
		mov	ebx , [ IsTranslucent ]		; is it a translucent color?
		mov	bh , [ BYTE PTR ebx + eax ]
		cmp	bh , 0ffh
		je	store_pixel

		and	ebx , 0FF00h			; clear all of ebx except bh
							; we have the index to the translation table
							; ((trans_colour * 256) + dest colour)
		mov	al , [ edi ]			; mov pixel at destination to al
		add	ebx , [ Translucent ]		; get the ptr to it!
							; Add the (trans_color * 256) of the translation equ.
		mov	al , [ BYTE PTR ebx + eax ]	; get new pixel in al

	store_pixel:
		mov	[ edi ] , al
		inc	edi

	ENDM

??predator_g_reference:
	dec	ecx
	jge	??predator_g_line

	add	esi , [ scr_adjust_width ]
	add	edi , [ dest_adjust_width ]
	dec	edx
	jnz	??predator_g_loop

	epilogue
	ret


;********************************************************************
;********************************************************************

global	BF_Predator_Ghost_Trans:near
BF_Predator_Ghost_Trans:

	prologue
	mov	ebx , eax			; width

	; NOTE: the below calculation assumes a group of instructions is
	;	less than 256 bytes

	; get length of the 32 groups of instructions

	lea	ecx , [ ??predator_g_t_reference - ??predator_g_t_line ]

	shr	ebx , 5				; width / 32
	shr	ecx , 5				; length of instructions / 32
	and	eax , 01fh			; mod of width / 32
	mul	cl				; calc offset to start of group
	neg	eax				; inverse of width
	mov	[ loop_cnt ] , ebx		; save width / 32
	lea	ecx , [ ??predator_g_t_reference + eax ]
	mov	eax , 0
	mov	[ jmp_loc ] , ecx

??predator_g_t_loop:
	mov	ecx , [ loop_cnt ]
	jmp	[ jmp_loc ]

??predator_g_t_line:

	REPT	32
	local	trans_pixel
	local	get_pred
	local	check_ghost
	local	store_pixel
		mov	al , [ esi ]
		inc	esi
		test	al , al
		jz	trans_pixel

		mov	ebx , [ BFPartialCount ]
		add	ebx , [ BFPartialPred ]
		or	bh , bh
		jnz	get_pred		; is this a predator pixel?

		mov	[ BFPartialCount ] , ebx
		jmp	check_ghost

	get_pred:
		xor	bh , bh
		mov	eax, [ BFPredOffset ]
		mov	[ BFPartialCount ] , ebx
		add	[ BYTE PTR BFPredOffset ] , 2
		movzx	eax , [ WORD PTR BFPredTable + eax ]
		and	[ BYTE PTR BFPredOffset ] , PRED_MASK
						; pick up a color offset a pseudo-
						;  random amount from the current
		movzx	eax , [ BYTE PTR edi + eax ]	;  viewport address

	check_ghost:
		mov	ebx , [ IsTranslucent ]		; is it a translucent color?
		mov	bh , [ BYTE PTR ebx + eax ]
		cmp	bh , 0ffh
		je	store_pixel

		and	ebx , 0FF00h			; clear all of ebx except bh
							; we have the index to the translation table
							; ((trans_colour * 256) + dest colour)
		mov	al , [ edi ]			; mov pixel at destination to al
		add	ebx , [ Translucent ]		; get the ptr to it!
							; Add the (trans_color * 256) of the translation equ.
		mov	al , [ BYTE PTR ebx + eax ]	; get new pixel in al

	store_pixel:
		mov	[ edi ] , al

	trans_pixel:
		inc	edi

	ENDM

??predator_g_t_reference:
	dec	ecx
	jge	??predator_g_t_line

	add	esi , [ scr_adjust_width ]
	add	edi , [ dest_adjust_width ]
	dec	edx
	jnz	??predator_g_t_loop

	epilogue
	ret


;********************************************************************
;********************************************************************

global	BF_Predator_Fading:near
BF_Predator_Fading:

	prologue
	mov	ebx , eax			; width

	; NOTE: the below calculation assumes a group of instructions is
	;	less than 256 bytes

	; get length of the 32 groups of instructions

	lea	ecx , [ ??predator_f_reference - ??predator_f_line ]

	shr	ebx , 5				; width / 32
	shr	ecx , 5				; length of instructions / 32
	and	eax , 01fh			; mod of width / 32
	mul	cl				; calc offset to start of group
	neg	eax				; inverse of width
	mov	[ loop_cnt ] , ebx		; save width / 32
	lea	ecx , [ ??predator_f_reference + eax ]
	mov	eax , 0
	mov	[ jmp_loc ] , ecx

??predator_f_loop:
	mov	ecx , [ loop_cnt ]
	mov	[ StashECX ] , ecx		; preserve ecx for later
	jmp	[ jmp_loc ]

??predator_f_line_begin:
	mov	[ StashECX ] , ecx		; preserve ecx for later

??predator_f_line:

	REPT	32
	local	get_pred
	local	do_fading
	local	fade_loop
		mov	al , [ esi ]
		mov	ebx , [ BFPartialCount ]
		inc	esi
		add	ebx , [ BFPartialPred ]
		or	bh , bh
		jnz	get_pred		; is this a predator pixel?

		mov	[ BFPartialCount ] , ebx
		jmp	do_fading

	get_pred:
		xor	bh , bh
		mov	eax, [ BFPredOffset ]
		mov	[ BFPartialCount ] , ebx
		add	[ BYTE PTR BFPredOffset ] , 2
		movzx	eax , [ WORD PTR BFPredTable + eax ]
		and	[ BYTE PTR BFPredOffset ] , PRED_MASK
						; pick up a color offset a pseudo-
						;  random amount from the current
		movzx	eax , [ BYTE PTR edi + eax ]	;  viewport address

	do_fading:
		mov	ebx , [ FadingTable ]		; run color through fading table
		mov	ecx , [ FadingNum ]

	fade_loop:
		mov	al, [BYTE PTR ebx + eax]
		dec	ecx
		jnz	fade_loop

		mov	[ edi ] , al
		inc	edi

	ENDM

??predator_f_reference:
	mov	ecx , [ StashECX ]		; restore ecx for main draw loop
	dec	ecx
	jge	??predator_f_line_begin

	add	esi , [ scr_adjust_width ]
	add	edi , [ dest_adjust_width ]
	dec	edx
	jnz	??predator_f_loop

	epilogue
	ret


;********************************************************************
;********************************************************************

global	BF_Predator_Fading_Trans:near
BF_Predator_Fading_Trans:

	prologue
	mov	ebx , eax			; width

	; NOTE: the below calculation assumes a group of instructions is
	;	less than 256 bytes

	; get length of the 32 groups of instructions

	lea	ecx , [ ??predator_f_t_reference - ??predator_f_t_line ]

	shr	ebx , 5				; width / 32
	shr	ecx , 5				; length of instructions / 32
	and	eax , 01fh			; mod of width / 32
	mul	cl				; calc offset to start of group
	neg	eax				; inverse of width
	mov	[ loop_cnt ] , ebx		; save width / 32
	lea	ecx , [ ??predator_f_t_reference + eax ]
	mov	eax , 0
	mov	[ jmp_loc ] , ecx

??predator_f_t_loop:
	mov	ecx , [ loop_cnt ]
	mov	[ StashECX ] , ecx		; preserve ecx for later
	jmp	[ jmp_loc ]

??predator_f_t_line_begin:
	mov	[ StashECX ] , ecx		; preserve ecx for later

??predator_f_t_line:

	REPT	32
	local	trans_pixel
	local	get_pred
	local	do_fading
	local	fade_loop
		mov	al , [ esi ]
		inc	esi
		test	al , al
		jz	trans_pixel

		mov	ebx , [ BFPartialCount ]
		add	ebx , [ BFPartialPred ]
		or	bh , bh
		jnz	get_pred		; is this a predator pixel?

		mov	[ BFPartialCount ] , ebx
		jmp	do_fading

	get_pred:
		xor	bh , bh
		mov	eax, [ BFPredOffset ]
		mov	[ BFPartialCount ] , ebx
		add	[ BYTE PTR BFPredOffset ] , 2
		movzx	eax , [ WORD PTR BFPredTable + eax ]
		and	[ BYTE PTR BFPredOffset ] , PRED_MASK
						; pick up a color offset a pseudo-
						;  random amount from the current
		movzx	eax , [ BYTE PTR edi + eax ]	;  viewport address

	do_fading:
		mov	ebx , [ FadingTable ]		; run color through fading table
		mov	ecx , [ FadingNum ]

	fade_loop:
		mov	al, [BYTE PTR ebx + eax]
		dec	ecx
		jnz	fade_loop

		mov	[ edi ] , al

	trans_pixel:
		inc	edi

	ENDM

??predator_f_t_reference:
	mov	ecx , [ StashECX ]		; restore ecx for main draw loop
	dec	ecx
	jge	??predator_f_t_line_begin

	add	esi , [ scr_adjust_width ]
	add	edi , [ dest_adjust_width ]
	dec	edx
	jnz	??predator_f_t_loop

	epilogue
	ret


;********************************************************************
;********************************************************************

global	BF_Predator_Ghost_Fading:near
BF_Predator_Ghost_Fading:

	prologue
	mov	ebx , eax			; width

	; NOTE: the below calculation assumes a group of instructions is
	;	less than 256 bytes

	; get length of the 32 groups of instructions

	lea	ecx , [ ??predator_g_f_reference - ??predator_g_f_line ]

	shr	ebx , 5				; width / 32
	shr	ecx , 5				; length of instructions / 32
	and	eax , 01fh			; mod of width / 32
	mul	cl				; calc offset to start of group
	neg	eax				; inverse of width
	mov	[ loop_cnt ] , ebx		; save width / 32
	lea	ecx , [ ??predator_g_f_reference + eax ]
	mov	eax , 0
	mov	[ jmp_loc ] , ecx

??predator_g_f_loop:
	mov	ecx , [ loop_cnt ]
	mov	[ StashECX ] , ecx		; preserve ecx for later
	jmp	[ jmp_loc ]

??predator_g_f_line_begin:
	mov	[ StashECX ] , ecx		; preserve ecx for later

??predator_g_f_line:

	REPT	32
	local	get_pred
	local	check_ghost
	local	store_pixel
	local	do_fading
	local	fade_loop
		mov	al , [ esi ]
		mov	ebx , [ BFPartialCount ]
		inc	esi
		add	ebx , [ BFPartialPred ]
		or	bh , bh
		jnz	get_pred		; is this a predator pixel?

		mov	[ BFPartialCount ] , ebx
		jmp	check_ghost

	get_pred:
		xor	bh , bh
		mov	eax, [ BFPredOffset ]
		mov	[ BFPartialCount ] , ebx
		add	[ BYTE PTR BFPredOffset ] , 2
		movzx	eax , [ WORD PTR BFPredTable + eax ]
		and	[ BYTE PTR BFPredOffset ] , PRED_MASK
						; pick up a color offset a pseudo-
						;  random amount from the current
		movzx	eax , [ BYTE PTR edi + eax ]	;  viewport address

	check_ghost:
		mov	ebx , [ IsTranslucent ]		; is it a translucent color?
		mov	bh , [ BYTE PTR ebx + eax ]
		cmp	bh , 0ffh
		je	do_fading

		and	ebx , 0FF00h			; clear all of ebx except bh
							; we have the index to the translation table
							; ((trans_colour * 256) + dest colour)
		mov	al , [ edi ]			; mov pixel at destination to al
		add	ebx , [ Translucent ]		; get the ptr to it!
							; Add the (trans_color * 256) of the translation equ.
		mov	al , [ BYTE PTR ebx + eax ]	; get new pixel in al
; DRD		jmp	store_pixel

	do_fading:
		mov	ebx , [ FadingTable ]		; run color through fading table
		mov	ecx , [ FadingNum ]

	fade_loop:
		mov	al, [BYTE PTR ebx + eax]
		dec	ecx
		jnz	fade_loop

	store_pixel:
		mov	[ edi ] , al
		inc	edi

	ENDM

??predator_g_f_reference:
	mov	ecx , [ StashECX ]		; restore ecx for main draw loop
	dec	ecx
	jge	??predator_g_f_line_begin

	add	esi , [ scr_adjust_width ]
	add	edi , [ dest_adjust_width ]
	dec	edx
	jnz	??predator_g_f_loop

	epilogue
	ret


;********************************************************************
;********************************************************************

global	BF_Predator_Ghost_Fading_Trans:near
BF_Predator_Ghost_Fading_Trans:

	prologue
	mov	ebx , eax			; width

	; NOTE: the below calculation assumes a group of instructions is
	;	less than 256 bytes

	; get length of the 32 groups of instructions

	lea	ecx , [ ??predator_g_f_t_reference - ??predator_g_f_t_line ]

	shr	ebx , 5				; width / 32
	shr	ecx , 5				; length of instructions / 32
	and	eax , 01fh			; mod of width / 32
	mul	cl				; calc offset to start of group
	neg	eax				; inverse of width
	mov	[ loop_cnt ] , ebx		; save width / 32
	lea	ecx , [ ??predator_g_f_t_reference + eax ]
	mov	eax , 0
	mov	[ jmp_loc ] , ecx

??predator_g_f_t_loop:
	mov	ecx , [ loop_cnt ]
	mov	[ StashECX ] , ecx		; preserve ecx for later
	jmp	[ jmp_loc ]

??predator_g_f_t_line_begin:
	mov	[ StashECX ] , ecx		; preserve ecx for later

??predator_g_f_t_line:

	REPT	32
	local	trans_pixel
	local	get_pred
	local	check_ghost
	local	store_pixel
	local	do_fading
	local	fade_loop
		mov	al , [ esi ]
		inc	esi
		test	al , al
		jz	trans_pixel

		mov	ebx , [ BFPartialCount ]
		add	ebx , [ BFPartialPred ]
		or	bh , bh
		jnz	get_pred		; is this a predator pixel?

		mov	[ BFPartialCount ] , ebx
		jmp	check_ghost

	get_pred:
		xor	bh , bh
		mov	eax, [ BFPredOffset ]
		mov	[ BFPartialCount ] , ebx
		add	[ BYTE PTR BFPredOffset ] , 2
		movzx	eax , [ WORD PTR BFPredTable + eax ]
		and	[ BYTE PTR BFPredOffset ] , PRED_MASK
						; pick up a color offset a pseudo-
						;  random amount from the current
		movzx	eax , [ BYTE PTR edi + eax ]	;  viewport address

	check_ghost:
		mov	ebx , [ IsTranslucent ]		; is it a translucent color?
		mov	bh , [ BYTE PTR ebx + eax ]
		cmp	bh , 0ffh
		je	do_fading

		and	ebx , 0FF00h			; clear all of ebx except bh
							; we have the index to the translation table
							; ((trans_colour * 256) + dest colour)
		mov	al , [ edi ]			; mov pixel at destination to al
		add	ebx , [ Translucent ]		; get the ptr to it!
							; Add the (trans_color * 256) of the translation equ.
		mov	al , [ BYTE PTR ebx + eax ]	; get new pixel in al
; DRD		jmp	store_pixel

	do_fading:
		mov	ebx , [ FadingTable ]		; run color through fading table
		mov	ecx , [ FadingNum ]

	fade_loop:
		mov	al, [BYTE PTR ebx + eax]
		dec	ecx
		jnz	fade_loop

	store_pixel:
		mov	[ edi ] , al

	trans_pixel:
		inc	edi

	ENDM

??predator_g_f_t_reference:
	mov	ecx , [ StashECX ]		; restore ecx for main draw loop
	dec	ecx
	jge	??predator_g_f_t_line_begin

	add	esi , [ scr_adjust_width ]
	add	edi , [ dest_adjust_width ]
	dec	edx
	jnz	??predator_g_f_t_loop

	epilogue
	ret


;********************************************************************
;********************************************************************

Not_Supported:
	ret

	ENDP	Buffer_Frame_To_Page
END

;***************************************************************************
;**   C O N F I D E N T I A L --- W E S T W O O D   A S S O C I A T E S   **
;***************************************************************************
;*                                                                         *
;*                 Project Name : Westwood Library                         *
;*                                                                         *
;*                    File Name : KEYFBUFF.ASM                             *
;*                                                                         *
;*                   Programmer : Phil W. Gorrow                           *
;*                                                                         *
;*                   Start Date : July 16, 1992                            *
;*                                                                         *
;*                  Last Update : October 2, 1994   [JLB]                  *
;*                                                                         *
;*-------------------------------------------------------------------------*
;* Functions:                                                              *
;*   BUFFER_FRAME_TO_LOGICPAGE --                                          *
;*   Normal_Draw -- Function that writes a normal pixel line               *
;* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *

	IDEAL
	P386
IDEAL_MODE	EQU	1
	INCLUDE "wwlib.i"

	;-------------------------------------------------------------------
	; Extern all the library variables that this module requires
	;-------------------------------------------------------------------

	EXTRN	C MaskPage:WORD
	EXTRN	C BackGroundPage:WORD

	;-------------------------------------------------------------------
	; Define all the equates that this module requires
	;-------------------------------------------------------------------

WIN_X		EQU	0		; offset for the x coordinate
WIN_Y		EQU	2		; offset for the y coordinate
WIN_WIDTH	EQU	4		; offset for the window width
WIN_HEIGHT	EQU	6		; offset for the window height
BYTESPERROW	EQU	320		; number of bytes per row

FLAG_NORMAL		EQU	0		; flag for normal draw

FLAG_GHOST		EQU	1		; This flag enables the ghost
FLAG_PRIORITY_TRANS	EQU	2		; flag for priority and transparent
FLAG_TRANS		EQU	4		; flag for transparent draw
FLAG_PRIORITY		EQU	8		; flag for priority draw

						; fx on the above flags

FLAG_MASK		EQU	15		; used to and of uneeded bits

SHAPE_NORMAL		EQU	0000h		; Standard shape.
;SHAPE_HORZ_REV		EQU	0001h		; Flipped horizontally.
;SHAPE_VERT_REV		EQU	0002h		; Flipped vertically.
;SHAPE_SCALING		EQU	0004h		; Scaled (WORD scale_x, WORD scale_y)

SHAPE_WIN_REL		EQU	0010h		; Coordinates are window relative instead of absolute.
SHAPE_CENTER		EQU	0020h		; Coordinates are based on shape's center point.
SHAPE_TRANS		EQU	0040h		; has transparency


;SHAPE_FADING		EQU	0100h		; Fading effect active (VOID * fading_table, WORD fading_num).
;SHAPE_PREDATOR		EQU	0200h		; Transparent warping effect.
;SHAPE_COMPACT		EQU	0400h		; Never use this bit.
SHAPE_PRIORITY		EQU	0800h		; Use priority system when drawing.

SHAPE_GHOST		EQU	1000h		; Transluscent table process.
;SHAPE_SHADOW		EQU	2000h		; ????
;SHAPE_PARTIAL 		EQU	4000h		; ????
;SHAPE_COLOR		EQU	8000h		; Remap the shape's colors (VOID * color_table).


; MBL MOD 12.1.92

CLEAR_NON_WALK_BIT_AND_SCALE_BITS	EQU	7	; Makes it one AND per pixel in Priority_Trans display
CLEAR_NON_WALK_BIT    	EQU	7fh	; and with 0111-1111 to clear non-walkable high bit
CLEAR_SCALE_BITS  	EQU	87h	; and with 1000-0111 to clear scaling id bits
NON_WALKABLE_BIT  	EQU	80h	; and with 1000-0000 to clear all but non-walkable bit

; END MBL MOD


	CODESEG

	;   1 = GHOST (all odd entrys are prefixed with Ghost_)
	;   2 = BLAAAH
	;   4 = Trans (prfx)
	;   8 = Prior (prfx)


;---------------------------------------------------------------------------
; Define the table of different line draw types
;---------------------------------------------------------------------------

LineTable	DW	WSA_Normal_Draw			;0
		DW	Ghost_Normal_Draw		;1
		DW	0				;2
		DW	0				;3

		DW	Transparent_Draw		;4
		DW	Ghost_Transparent_Draw		;5
		DW	0				;6
		DW	0				;7

		DW	Priority_Draw			;8
		DW	Ghost_Priority_Draw		;9
		DW	0				;10
		DW	0				;11

		DW	Priority_Transparent_Draw	;12
		DW	Ghost_Priority_Transparent_Draw	;13
		DW	0				;14
		DW	0				;15



;***************************************************************************
;* BUFFER_FRAME_TO_LOGICPAGE --                                            *
;*                                                                         *
;*                                                                         *
;*                                                                         *
;* INPUT:                                                                  *
;*                                                                         *
;* OUTPUT:                                                                 *
;*                                                                         *
;* WARNINGS:                                                               *
;*                                                                         *
;* HISTORY:                                                                *
;*   07/16/1992 PWG : Created.                                             *
;*=========================================================================*
	PUBLIC	C Buffer_Frame_To_LogicPage
	PROC	C Buffer_Frame_To_LogicPage FAR USES ax bx ecx dx ds esi es edi

	;-------------------------------------------------------------------
	; Define the arguements that our program takes.
	;-------------------------------------------------------------------

	ARG	x_pixel:WORD		; x pixel position to draw at
	ARG	y_pixel:WORD		; y pixel position to draw at
	ARG	pixel_w:WORD		; pixel width of draw region
	ARG	pixel_h:WORD		; pixel height of draw region
	ARG	win:WORD		; window to clip around
	ARG	flags:WORD		; flags that this routine will take
	ARG	buffer:DWORD		; pointer to the buffer with data
	ARG	args:WORD

	;-------------------------------------------------------------------
	; Define the local variables that our program uses
	;-------------------------------------------------------------------

	LOCAL	IsTranslucent:DWORD	; ptr to the is_translucent table
	LOCAL	Translucent:DWORD	; ptr to the actual translucent table

	LOCAL	win_x1:WORD		; clip window left x pixel position
	LOCAL	win_x2:WORD		; clip window right x pixel position
	LOCAL	win_y1:WORD		; clip window top y pixel position
	LOCAL	win_y2:WORD		; clip window bottom y pixel position
	LOCAL	clipleft:WORD		; number of pixels to clip on left
	LOCAL	clipright:WORD		; number of pixels to clip on right
	LOCAL	nextline:WORD		; offset to the next line
	LOCAL	putmiddle:WORD 		; routine to call to put the middle
	LOCAL	maskpage:WORD		; location of the depth masks
	LOCAL   background:WORD		; location of the background data
	LOCAL   jflags:WORD		; location of the background data

	LOCAL	priority:BYTE		; the priority level of the back

	push	fs

	xor	ecx,ecx

	;--------------------------------------------------------------------
	; Check to see if we have supplied any GHOST tables.
	;--------------------------------------------------------------------
	push	di

	mov	di,6
	mov	[jflags],0

??ghost:
	test	[flags],SHAPE_GHOST	; are we ghosting this shape
	jz	short ??no_ghost	; if not then skip and do more

	or	[jflags],FLAG_GHOST

	les	ax,[DWORD PTR buffer + di]

	; get the "are we really translucent?" table
	mov	[WORD PTR IsTranslucent],ax
	mov	[WORD PTR IsTranslucent + 2],es
	add	ax,0100h		; add to offset for tables

	; get the "ok we are translucent!!" table
	mov	[WORD PTR Translucent],ax
	mov	[WORD PTR Translucent + 2],es

	add	di,4

??no_ghost:

	pop	di

	;-------------------------------------------------------------------
	; See if we need to center the frame
	;-------------------------------------------------------------------
	test	[flags],SHAPE_CENTER	; does this need to be centered?
	je	short ??no_centering	; if not the skip over this stuff

	mov	ax,[pixel_w]
	mov	bx,[pixel_h]
	sar	ax,1
	sar	bx,1
	sub	[x_pixel],ax
	sub	[y_pixel],bx

??no_centering:
	mov	ax,[flags]
	and	ax,SHAPE_PRIORITY+SHAPE_TRANS
	cmp	ax,SHAPE_PRIORITY+SHAPE_TRANS
	jne	short ??test_trans

	or	[jflags],FLAG_PRIORITY_TRANS
	jmp	short ??priority

	;-------------------------------------------------------------------
	; Get the trans information if we need to get it
	;-------------------------------------------------------------------
??test_trans:
	test	[flags],SHAPE_TRANS	; does this draw use transparencies?
	je	short ??test_priority	; if not the skip over this junk

	or	[jflags],FLAG_TRANS

??test_priority:
	;-------------------------------------------------------------------
	; Get the priority information if we need to get it
	;-------------------------------------------------------------------
	test	[flags],SHAPE_PRIORITY	; does this draw use priorities?
	je	short ??no_priority	; if not the skip over this junk

	or	[jflags],FLAG_PRIORITY

??priority:
	mov	ax,[BackGroundPage]	; get the background page from ds
	mov	[background],ax		;    and store it on the stack
	mov	ax,[MaskPage]		; get the mask page from ds
	mov	[maskpage],ax		;    and store it on the stack
	mov	ax,[WORD PTR buffer + 4]; get the priority level from args
	mov	[priority],al		;    and store it in a local

	;-------------------------------------------------------------------
	; Get the draw routine that we are going to draw with
	;-------------------------------------------------------------------
??no_priority:
;	mov	bx,[flags]		; load in the current flags byte
;	and	bx,FLAG_MASK		; prevent lockup on bad value
	mov	bx,[jflags]		; load in the jump table flags
	shl	bx,1
	mov	ax,[WORD PTR LineTable + bx]	; get the offset of the skip table
	mov	[putmiddle],ax		; store off the new offset

	;-------------------------------------------------------------------
	; Get a pointer to the logic page to where we will draw our buffer
	;-------------------------------------------------------------------
	push	[LogicPage]		; push the current logic page
	call	FAR PTR Get_Page	; get the physical page address
	add	sp,2			; pull the parameter from the stack
	mov	es,dx			; store the address in the dest

	;--------------------------------------------------------------------
	; Point DI to the beginning of the window that we need to look at.
	;   that way we can access all of the info through di.
	;--------------------------------------------------------------------
	mov	si,OFFSET WindowList	; get the offset of the window list
	mov	cl,4			; shift 3 times = multiply by 16
	mov	ax,[win]		; get the window number we are using
	shl	ax,cl			; each window is 8 words long
	add	si,ax			; add that into the offset of window

	;--------------------------------------------------------------------
	; Place all the clipping values on the stack so our function will
	; be truly re-entrant and will not need to shadow these values.
	;--------------------------------------------------------------------
	mov	cl,3			; to convert x to pixel mult by 8
	mov	ax,[si + WIN_X]		; get the left clip position
	shl	ax,cl			; convert to a pixel x position
	mov	[win_x1],ax		; store the left edge of window
	mov	[win_x2],ax

	mov	ax,[si + WIN_WIDTH]	; get the width of the window
	shl	ax,cl			; convert to a pixel width
	add	[win_x2],ax		; add to get the right window edge

	mov	ax,[si + WIN_Y]		; get the win y coordinate to clip
	mov	[win_y1],ax		; and save it onto the stack

	add	ax,[si + WIN_HEIGHT]	; calculate the bottom win y coord
	mov	[win_y2],ax		; and save it onto the stack

	test	[flags],SHAPE_WIN_REL	; is this window relative?
	je	short ??get_buffer	; if not the skip over

	mov	ax,[win_x1]		; get left edge of window
	add	[x_pixel],ax		; add to x pixel position
	mov	ax,[win_y1]		; get top edge of window
	add	[y_pixel],ax		; add to y pixel position

	;--------------------------------------------------------------------
	; Get a pointer to the source buffer so we can handle the clipping
	;--------------------------------------------------------------------
??get_buffer:
	lds	si,[buffer]		; get a pointer to the buffer

	;--------------------------------------------------------------------
	; Check the top of our shape and clip any lines that are necessary
	;--------------------------------------------------------------------
	mov	ax,[y_pixel]		; get the y_pixel draw position
	sub	ax,[win_y1]		; subtract out the window y top
	jns	short ??check_bottom		;   skip if y below window top
	add	ax,[pixel_h]		; add in the height of the region
	jg	short ??clip_top		; if positive then clip top lines

??jump_exit:
	jmp	??exit			; otherwise completely clipped

??clip_top:
	xchg	[pixel_h],ax
	sub	ax,[pixel_h]
	add	[y_pixel],ax
	mul	[pixel_w]		; convert to number of bytes to skip
	add	si,ax			; skip past the necessary bytes

	;--------------------------------------------------------------------
	; Check the bottom of our shape and clip it if necessary
	;--------------------------------------------------------------------
??check_bottom:
	mov	ax,[win_y2]		; get the bottom y of the window
	sub	ax,[y_pixel]		; subtract of the y to draw at
	js	??jump_exit		; if its signed then nothing to draw
	jz	??jump_exit		; if its zero then nothing to draw

	cmp	ax,[pixel_h]		; if more room to draw then height
	jae	short ??clip_x_left		;   then go check the left clip
	mov	[pixel_h],ax		; clip all but amount that will fit

??clip_x_left:
	mov	[clipleft],0		; clear clip on left of region
	mov	ax,[x_pixel]		; get the pixel x of draw region
	sub	ax,[win_x1]		; pull out the window coordinate
	jns	short ??clip_x_right
	neg	ax			; negate to get amnt to skip in buf
	mov	[clipleft],ax		; store it in the left clip info
	add	[x_pixel],ax		; move to the edge of the window
	sub	[pixel_w],ax		; pull it out of the pixel width

??clip_x_right:
	mov	[clipright],0		; clear clip on right of region
	mov	ax,[win_x2]		; get the window x of clip region
	sub	ax,[x_pixel]		; subtract the draw edge of region
	js	??jump_exit		; if its negative then get out
	jz	??jump_exit		; if its zero then get out

	cmp	ax,[pixel_w]		; is space available larger than w
	jae	short ??draw_prep		;   if so then go get drawing


	xchg	[pixel_w],ax		; amt to draw in pixel_w (wid in ax)
	sub	ax,[pixel_w]		; pull out the amount to draw
	mov	[clipright],ax		; this is the amount to clip on right

??draw_prep:
	push	si			; save off source pos in buffer
	push	ds			;   both offset and segment
	mov	ax,@data
	mov	ds,ax
	mov	bx,[y_pixel]
	shl	bx,1			; shift left by 1 for word table look
	lds	si,[YTable]	; get the address of the ytable
	mov	di,[ds:si+bx]		; look up the multiplied value
	pop	ds			; restore source pos in buffer
	pop	si			;   both offset and segment

	add	di,[x_pixel]		; add in the x pixel position
	mov	[nextline],di		; save it off in the next line

 	;--------------------------------------------------------------------
	; Now determine the type of the shape and process it in the proper
	;   way.
	;--------------------------------------------------------------------
	mov	dx,[pixel_h]

	; Check to see if the WSA is the screen width and there is no
	; clipping. In this case, then a special single call to the
	; line processing routine is possible.
	mov	ax,[clipleft]
	add	ax,[clipright]
	jne	short ??top_of_loop
	cmp	[pixel_w],BYTESPERROW
	jne	short ??top_of_loop

	;------------------------------------
	; The width of the WSA is the screen width, so just process as
	; one large WSA line.
	mov	ax,BYTESPERROW
	imul	dx
	mov	cx,ax
	call	[putmiddle]
	jmp	short ??exit

	;------------------------------------
	; Process line by line.
??top_of_loop:
	add	si,[clipleft]		; skip whats necessary on left edge
	mov	cx,[pixel_w]		; get the width we need to draw

	; Copy the source to the destination as appropriate. This routine can
	; trash AX, BX, CX, and DI. It must properly modify SI to point one byte past
	; the end of the data.
	call	[putmiddle]

	add	si,[clipright]		; skip past the left clip
	add	[nextline],BYTESPERROW
	mov	di,[nextline]

	dec	dx
	jnz	??top_of_loop

??exit:
	pop	fs
	ret
	ENDP


;***************************************************************************
;* NORMAL_DRAW -- Function that writes a normal pixel line                 *
;*                                                                         *
;* INPUT:	cx    - number of pixels to write                          *
;*		ds:si - buffer which holds the pixels to write		   *
;*		es:di - place to put the pixels we are writing		   *
;*                                                                         *
;* OUTPUT:      ds:si - points to next pixel past last pixel read          *
;*		es:di - points to next pixel past last pixel written	   *
;*                                                                         *
;* WARNINGS:    none                                                       *
;*                                                                         *
;* HISTORY:                                                                *
;*   07/17/1992 PWG : Created.                                             *
;*=========================================================================*

	PROC	NOLANGUAGE WSA_Normal_Draw NEAR

 IF 1
 	; This version is marginally faster than the later version.
 	mov	ax,cx
	shr	cx,2
	rep movsd
	and	ax,011b
	mov	cx,ax
	shr	cx,1
	rep movsw
	adc	cx,cx
	rep movsb
	ret

 ELSE

	shr	cx,1			; convert to words (odd pix in carry)
	rep	movsw			; write out the needed words
	adc	cx,0			; add the carry into cx
	rep	movsb			; write out the odd byte if any
	ret
 ENDIF

	ENDP


;***************************************************************************
;* TRANSPARENT_DRAW -- Function that writes a transparent pixel line       *
;*                                                                         *
;* INPUT:	cx    - number of pixels to write                          *
;*		ds:si - buffer which holds the pixels to write		   *
;*		es:di - place to put the pixels we are writing		   *
;*                                                                         *
;* OUTPUT:      ds:si - points to next pixel past last pixel read          *
;*		es:di - points to next pixel past last pixel written	   *
;*                                                                         *
;* WARNINGS:    none                                                       *
;*                                                                         *
;* HISTORY:                                                                *
;*   07/17/1992 PWG : Created.                                             *
;*   10/02/1994 JLB : Optimized for 250% speed improvement.                *
;*=========================================================================*
	PROC	NOLANGUAGE Transparent_Draw NEAR

 IF 1
	; Preserve DX since it is used as a scratch register.
	push	dx

??loop:
	; Swap DS:SI and ES:DI back in preparation for the REP SCASB
	; instruction.
	xchg	di,si
	mov	dx,es
	mov	ax,ds
	mov	ds,dx
	mov	es,ax

	; Remember the bytes remaining in order to calculate the position
	; of the scan when it stops.
	mov	bx,cx

	; Scan looking for a non-zero value in the source buffer.
	xor	al,al
	repe scasb

	; When the loop ends, if the EQ flag is set then the scanning is
	; complete. Jump to the end of the routine in order to fixup the
	; pointers.
	je	short ??fini

	; Advance the destination pointer by the amount necessary to match
	; the source movement. DS:SI points to where data should be written.
	add	si,bx
	inc	cx		; SCASB leaves CX one too low, fix it.
	dec	di		; SCASB leaves DI one byte too far, fix it.
	sub	si,cx

	; Scan for the duration of non-zero pixels. This yields a count which
	; is used to copy the source data to the destination. Preserve DI.
	mov	dx,di
	mov	bx,cx
	repne scasb
	mov	di,dx

	; Set BX to equal the number of bytes to copy from source to dest.
	inc	cx		; SCASB leaves CX one too low, fix it.
	sub	bx,cx

	; Move the data from ES:DI to DS:SI for BX bytes.
	xchg	cx,bx		; Make CX=bytes to move, BX=bytes remaining.

	; Swap DS:SI and ES:DI in preparation for the REP MOV instruction.
	xchg	di,si
	mov	dx,es
	mov	ax,ds
	mov	ds,dx
	mov	es,ax

	; Move the data from source to dest. First try to move double
	; words. Then copy the remainder bytes (if any). Putting jumps in
	; this section doesn't result in any savings -- oh well.
	mov	ax,cx
	shr	cx,2
	rep movsd
	and	ax,0011b
	mov	cx,ax
	shr	cx,1
	rep movsw
	adc	cx,cx
	rep movsb

	; Restore CX with the remaining bytes to process.
	mov	cx,bx

	; If there are more bytes to process, then loop back.
	or	cx,cx
	jne	short ??loop

??fini:
	; Swap ES:DI and DS:SI back to original orientation.
	mov	ax,ds
	mov	bx,es
	mov	es,ax
	mov	ds,bx
	xchg	di,si

	; Restore DX and return.
	pop	dx
	ret

 ELSE

??loop_top:
	lodsb
	or	al,al
	jz	short ??skip

	mov	[es:di],al		; store the pixel to the screen
??skip:
	inc	di
	loop	??loop_top
	ret

 ENDIF

	ENDP


;***************************************************************************
;* PRIORITY_DRAW -- Function that writes a pixels if they are in front of  *
;*		    the given plate.					   *
;*                                                                         *
;* INPUT:	cx    - number of pixels to write                          *
;*		ds:si - buffer which holds the pixels to write		   *
;*		es:di - place to put the pixels we are writing		   *
;*                                                                         *
;* OUTPUT:      ds:si - points to next pixel past last pixel read          *
;*		es:di - points to next pixel past last pixel written	   *
;*                                                                         *
;* WARNINGS:    none                                                       *
;*                                                                         *
;* HISTORY:                                                                *
;*   07/17/1992 PWG : Created.                                             *
;*   12/01/1992 MBL : Updated to work with latest mask data encoding.      *
;*   17/01/1993 MCC : Updated for 386, and optimized			   *
;*=========================================================================*

	PROC	NOLANGUAGE Priority_Draw NEAR

	mov	fs,[background]		; get the SEG of the background page
	mov	gs,[maskpage]		; get the SEG of the mask info
	mov	ah,[priority]		; keep a copy of priority varible for faster cmp


??loop_top:
	lodsb				; get the pixel to draw on the screen

					; get the mask byte for our pixel
	mov	bl,[ds:di]
					; get rid of non-walkable bit and
					; get rid of scaling id bits
	and	bl,CLEAR_NON_WALK_BIT_AND_SCALE_BITS

	cmp	ah,bl			; are we more toward the front?
	jge	short ??out_pixel	; if so then write the pixel

	mov	al,[fs:di]		; get the pixel to write
??out_pixel:
	stosb				; write the pixel and inc the DI
	loop	??loop_top
	ret

	ENDP


;***************************************************************************
;* PRIORITY_TRANSPARENT_DRAW -- Function that writes a pixels if they are  *
;*		    in front of the given plate.  It also deals with	   *
;*		    transparent pixels.					   *
;*                                                                         *
;* INPUT:	cx    - number of pixels to write                          *
;*		ds:si - buffer which holds the pixels to write		   *
;*		es:di - place to put the pixels we are writing		   *
;*                                                                         *
;* OUTPUT:      ds:si - points to next pixel past last pixel read          *
;*		es:di - points to next pixel past last pixel written	   *
;*                                                                         *
;* WARNINGS:    none                                                       *
;*                                                                         *
;* HISTORY:                                                                *
;*   07/17/1992 PWG : Created.                                             *
;*   12/01/1992 MBL : Updated to work with latest mask data encoding.      *
;*   17/01/1993 MCC : Updated for 386, and optimized			   *
;*=========================================================================*

	PROC	NOLANGUAGE Priority_Transparent_Draw NEAR

	mov	fs,[background]		; get the SEG of the background page
	mov	gs,[maskpage]		; get the SEG of the mask info
	mov	ah,[priority]		; keep a copy of priority varible for faster cmp

??loop_top:
	lodsb				; get the pixel on the screen
	or	al,al			; check to see if al is transparent
	je	short ??write_back	; if it is go write background

	mov	bl,[gs:di]		; get the mask byte for our pixel

					; get rid of non-walkable bit and
					; get rid of scaling id bits
	and	bl,CLEAR_NON_WALK_BIT_AND_SCALE_BITS

	cmp	ah,bl			; are we more toward the front?
	jge	short ??out_pixel	; if so then write the pixel

??write_back:
	mov	al,[fs:di]		; get the pixel to write
??out_pixel:
	stosb				; write the pixel
	loop	??loop_top
	ret

	ENDP


;***************************************************************************
;* GHOST_NORMAL_DRAW -- Function that writes a normal pixel line           *
;*                                                                         *
;* INPUT:	cx    - number of pixels to write                          *
;*		ds:si - buffer which holds the pixels to write		   *
;*		es:di - place to put the pixels we are writing		   *
;*                                                                         *
;* OUTPUT:      ds:si - points to next pixel past last pixel read          *
;*		es:di - points to next pixel past last pixel written	   *
;*                                                                         *
;* WARNINGS:    none                                                       *
;*                                                                         *
;* HISTORY:                                                                *
;*   05/27/1993 MCC : Created.                                             *
;*=========================================================================*

	PROC	NOLANGUAGE Ghost_Normal_Draw NEAR

??loop_top:
	lodsb

;---
	; Ok, find out if the colour is a Translucent colour
	push	ax
	push 	ds

	lds	bx,[IsTranslucent]
	mov	ah,al			; preserve real pixel
	xlat				; get new al (transluecent pixel
	xchg	ah,al			; get real pixel back into AL just in case
	cmp	ah,255
	je	short ??normal_pixel		; is it a translucent ?
					; if we get passed here value in
					; AH should be 0-15

	; yes, it is a translucent colour so goto our translucent translation
	; table and set up a ptr to the correct table

	mov	al,[es:di]
					; mov pixel at destination to al and we have
					; the index to the translation table
					; ((trans_colour * 256) + dest colour)
	lds	bx,[Translucent]	; get the ptr to it!
	add	bh,ah			; Add the (trans_color * 256) of the translation equ.
					; XLAT only uses AL so no need to clear AH
	xlat				; get new pixel in AL

??normal_pixel:
	pop	ds
	pop	bx
	mov	ah,bh
;---

	mov	[es:di],al		; store the pixel to the screen

??skip:
	inc	di
	loop	??loop_top

	ret

	ENDP


;***************************************************************************
;* GHOST_TRANSPARENT_DRAW -- Function that writes a transparent pixel line *
;*                                                                         *
;* INPUT:	cx    - number of pixels to write                          *
;*		ds:si - buffer which holds the pixels to write		   *
;*		es:di - place to put the pixels we are writing		   *
;*                                                                         *
;* OUTPUT:      ds:si - points to next pixel past last pixel read          *
;*		es:di - points to next pixel past last pixel written	   *
;*                                                                         *
;* WARNINGS:    none                                                       *
;*                                                                         *
;* HISTORY:                                                                *
;*   05/27/1993 MCC : Created.                                             *
;*=========================================================================*
	PROC	NOLANGUAGE Ghost_Transparent_Draw NEAR

??loop_top:
	lodsb
	or	al,al
	jz	short ??skip

;---
	; Ok, find out if the colour is a Translucent colour
	push	ax
	push 	ds

	lds	bx,[IsTranslucent]
	mov	ah,al			; preserve real pixel
	xlat				; get new al (transluecent pixel
	xchg	ah,al			; get real pixel back into AL just in case
	cmp	ah,255
	je	short ??normal_pixel		; is it a translucent ?
					; if we get passed here value in
					; AH should be 0-15

	; yes, it is a translucent colour so goto our translucent translation
	; table and set up a ptr to the correct table

	mov	al,[es:di]
					; mov pixel at destination to al and we have
					; the index to the translation table
					; ((trans_colour * 256) + dest colour)
	lds	bx,[Translucent]	; get the ptr to it!
	add	bh,ah			; Add the (trans_color * 256) of the translation equ.
					; XLAT only uses AL so no need to clear AH
	xlat				; get new pixel in AL

??normal_pixel:
	pop	ds
	pop	bx
	mov	ah,bh
;---

	mov	[es:di],al		; store the pixel to the screen

??skip:
	inc	di
	loop	??loop_top
	ret

	ENDP


;***************************************************************************
;* GHOST_PRIORITY_DRAW -- Function that writes a pixels if they are in fron*
;*		    the given plate.					   *
;*                                                                         *
;* INPUT:	cx    - number of pixels to write                          *
;*		ds:si - buffer which holds the pixels to write		   *
;*		es:di - place to put the pixels we are writing		   *
;*                                                                         *
;* OUTPUT:      ds:si - points to next pixel past last pixel read          *
;*		es:di - points to next pixel past last pixel written	   *
;*                                                                         *
;* WARNINGS:    none                                                       *
;*                                                                         *
;* HISTORY:                                                                *
;*   07/17/1992 PWG : Created.                                             *
;*   12/01/1992 MBL : Updated to work with latest mask data encoding.      *
;*   05/27/1993 MCC : Updated to use the new Ghosting fx		   *
;*   17/01/1993 MCC : Updated for 386, and optimized			   *
;*=========================================================================*
	PROC	NOLANGUAGE Ghost_Priority_Draw NEAR

	mov	fs,[background]		; get the SEG of the background page
	mov	gs,[maskpage]		; get the SEG of the mask info
	mov	ah,[priority]		; keep a copy of priority varible for faster cmp


??loop_top:
	lodsb				; get the pixel to draw on the screen
					; get the mask byte for our pixel
	mov	bl,[ds:di]
					; get rid of non-walkable bit and
					; get rid of scaling id bits
	and	bl,CLEAR_NON_WALK_BIT_AND_SCALE_BITS
	cmp	ah,bl			; are we more toward the front?
	jge	short ??out_pixel	; if so then write the pixel

	mov	al,[fs:di]		; get the pixel to write
??out_pixel:
	stosb				; write the pixel and inc the DI
	loop	??loop_top

	ret

	ENDP


;***************************************************************************
;* GHOST_PRIORITY_TRANSPARENT_DRAW -- Function that writes a pixels if they*
;*		    in front of the given plate.  It also deals with	   *
;*		    transparent pixels.					   *
;*                                                                         *
;* INPUT:	cx    - number of pixels to write                          *
;*		ds:si - buffer which holds the pixels to write		   *
;*		es:di - place to put the pixels we are writing		   *
;*                                                                         *
;* OUTPUT:      ds:si - points to next pixel past last pixel read          *
;*		es:di - points to next pixel past last pixel written	   *
;*                                                                         *
;* WARNINGS:    none                                                       *
;*                                                                         *
;* HISTORY:                                                                *
;*   07/17/1992 PWG : Created.                                             *
;*   12/01/1992 MBL : Updated to work with latest mask data encoding.      *
;*   05/27/1993 MCC : Updated to use the new Ghosting fx		   *
;*   17/01/1993 MCC : Updated for 386, and optimized			   *
;*=========================================================================*
	PROC	NOLANGUAGE Ghost_Priority_Transparent_Draw NEAR

	mov	fs,[background]		; get the SEG of the background page
	mov	gs,[maskpage]		; get the SEG of the mask info
	mov	ah,[priority]		; keep a copy of priority varible for faster cmp

??loop_top:
	lodsb				; get the pixel on the screen
	or	al,al			; check to see if al is transparent
	je	short ??write_back	;   if it is go write background
	mov	bl,[gs:di]		; get the mask byte for our pixel
					; get rid of non-walkable bit and
					; get rid of scaling id bits
	and	bl,CLEAR_NON_WALK_BIT_AND_SCALE_BITS
	cmp	ah,bl			; are we more toward the front?
	jge	short ??out_pixel	; if so then write the pixel
??write_back:
	mov	al,[fs:di]		; get the pixel to write
??out_pixel:
	stosb				; write the pixel
	loop	??loop_top

	ret

	ENDP

	END


================================================
FILE: CODE/2KEYFRAM.CPP
================================================
/*
**	Command & Conquer Red Alert(tm)
**	Copyright 2025 Electronic Arts Inc.
**
**	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 3 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 License for more details.
**
**	You should have received a copy of the GNU General Public License
**	along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

/* $Header: /CounterStrike/2KEYFRAM.CPP 1     3/03/97 10:24a Joe_bostic $ */
/***********************************************************************************************
 ***              C O N F I D E N T I A L  ---  W E S T W O O D  S T U D I O S               ***
 ***********************************************************************************************
 *                                                                                             *
 *                 Project Name : Command & Conquer                                            *
 *                                                                                             *
 *                    File Name : KEYFRAME.CPP                                                 *
 *                                                                                             *
 *                   Programmer : Joe L. Bostic                                                *
 *                                                                                             *
 *                   Start Date : 06/25/95                                                     *
 *                                                                                             *
 *                  Last Update : June 25, 1995 [JLB]                                          *
 *                                                                                             *
 *---------------------------------------------------------------------------------------------*
 * Functions:                                                                                  *
 *   Get_Build_Frame_Count -- Fetches the number of frames in data block.                      *
 *   Get_Build_Frame_Width -- Fetches the width of the shape image.                            *
 *   Get_Build_Frame_Height -- Fetches the height of the shape image.                          *
 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */


#include "function.h"

#define SUBFRAMEOFFS			7	// 3 1/2 frame offsets loaded (2 offsets/frame)


#define	Apply_Delta(buffer, delta)		Apply_XOR_Delta((char*)(buffer), (char*)(delta))

typedef struct {
	unsigned short frames;
	unsigned short x;
	unsigned short y;
	unsigned short width;
	unsigned short height;
	unsigned short largest_frame_size;
	short				flags;
} KeyFrameHeaderType;

#define	INITIAL_BIG_SHAPE_BUFFER_SIZE	8000000
#define	THEATER_BIG_SHAPE_BUFFER_SIZE 4000000
#define	UNCOMPRESS_MAGIC_NUMBER			56789

unsigned	BigShapeBufferLength = INITIAL_BIG_SHAPE_BUFFER_SIZE;
unsigned	TheaterShapeBufferLength = THEATER_BIG_SHAPE_BUFFER_SIZE;
extern "C"{
	char		*BigShapeBufferStart = NULL;
	char		*TheaterShapeBufferStart = NULL;
	BOOL		UseBigShapeBuffer = FALSE;
	bool		IsTheaterShape = false;
}
#ifdef FIXIT_SCORE_CRASH
/*
** Global required to fix the score screen crash bug by allowing disabling of uncompressed shapes.
*/
bool		OriginalUseBigShapeBuffer = false;
#endif	//FIXIT
char		*BigShapeBufferPtr = NULL;
int			TotalBigShapes=0;
BOOL		ReallocShapeBufferFlag = FALSE;

char		*TheaterShapeBufferPtr = NULL;
int			TotalTheaterShapes = 0;


#define MAX_SLOTS 1500
#define THEATER_SLOT_START 1000

char	**KeyFrameSlots [MAX_SLOTS];
int 	TotalSlotsUsed=0;
int		TheaterSlotsUsed = THEATER_SLOT_START;



typedef struct tShapeHeaderType{
	unsigned draw_flags;
	char		*shape_data;
	int		shape_buffer;		//1 if shape is in theater buffer
} ShapeHeaderType;

static int Length;

void *Get_Shape_Header_Data(void *ptr)
{
	if (UseBigShapeBuffer) {

		ShapeHeaderType *header = (ShapeHeaderType*) ptr;
		return ((void*)  (header->shape_data + (long)(header->shape_buffer ? TheaterShapeBufferStart : BigShapeBufferStart) ) );

	} else {
		return (ptr);
	}
}

int Get_Last_Frame_Length(void)
{
	return(Length);
}


void Reset_Theater_Shapes (void)
{
	/*
	** Delete any previously allocated slots
	*/
	for (int i=THEATER_SLOT_START ; i<TheaterSlotsUsed ; i++) {
		delete [] KeyFrameSlots [i];
	}

	TheaterShapeBufferPtr = TheaterShapeBufferStart;
	TotalTheaterShapes = 0;
	TheaterSlotsUsed = THEATER_SLOT_START;
}


void Reallocate_Big_Shape_Buffer(void)
{
	if (ReallocShapeBufferFlag) {
		BigShapeBufferLength += 2000000;							//Extra 2 Mb of uncompressed shape space
		BigShapeBufferPtr -= (unsigned)BigShapeBufferStart;
		Memory_Error = NULL;
		BigShapeBufferStart = (char*)Resize_Alloc(BigShapeBufferStart, BigShapeBufferLength);
		Memory_Error = &Memory_Error_Handler;
		/*
		** If we have run out of memory then disable the uncompressed shapes
		** It may still be possible to continue with compressed shapes
		*/
		if (!BigShapeBufferStart) {
			UseBigShapeBuffer = false;
			return;
		}
		BigShapeBufferPtr += (unsigned)BigShapeBufferStart;
		ReallocShapeBufferFlag = FALSE;
	}
}


#ifdef FIXIT_SCORE_CRASH
/***********************************************************************************************
 * Disable_Uncompressed_Shapes -- Temporarily turns off shape decompression                    *
 *                                                                                             *
 *                                                                                             *
 *                                                                                             *
 * INPUT:    Nothing                                                                           *
 *                                                                                             *
 * OUTPUT:   Nothing                                                                           *
 *                                                                                             *
 * WARNINGS: None                                                                              *
 *                                                                                             *
 * HISTORY:                                                                                    *
 *    11/19/96 2:37PM ST : Created                                                             *
 *=============================================================================================*/
void Disable_Uncompressed_Shapes (void)
{
	UseBigShapeBuffer = false;
}



/***********************************************************************************************
 * Enable_Uncompressed_Shapes -- Restores state of shape decompression before it was disabled  *
 *                                                                                             *
 *                                                                                             *
 *                                                                                             *
 * INPUT:    Nothing                                                                           *
 *                                                                                             *
 * OUTPUT:   Nothing                                                                           *
 *                                                                                             *
 * WARNINGS: None                                                                              *
 *                                                                                             *
 * HISTORY:                                                                                    *
 *    11/19/96 2:37PM ST : Created                                                             *
 *=============================================================================================*/
void Enable_Uncompressed_Shapes (void)
{
	UseBigShapeBuffer = OriginalUseBigShapeBuffer;
}
#endif	//FIXIT

void Check_Use_Compressed_Shapes (void)
{
	MEMORYSTATUS	mem_info;

	mem_info.dwLength=sizeof(mem_info);
	GlobalMemoryStatus(&mem_info);

	UseBigShapeBuffer = (mem_info.dwTotalPhys > 16*1024*1024) ? TRUE : FALSE;
#ifdef FIXIT_SCORE_CRASH
	/*
	** Keep track of our original decision about whether to use cached shapes.
	** This is needed for the score screen crash fix.
	*/
	OriginalUseBigShapeBuffer = UseBigShapeBuffer;
#endif	//FIXIT
}





unsigned long Build_Frame(void const *dataptr, unsigned short framenumber, void *buffptr)
{
#ifdef FIXIT_SCORE_CRASH
	char *ptr;
	unsigned long offcurr, offdiff;
#else
	char *ptr, *lockptr;//, *uncomp_ptr;
	unsigned long offcurr, off16, offdiff;
#endif
	unsigned long offset[SUBFRAMEOFFS];
	KeyFrameHeaderType *keyfr;
	unsigned short buffsize, currframe, subframe;
	unsigned long length = 0;
	char frameflags;
	unsigned long return_value;
	char *temp_shape_ptr;

	//
	// valid pointer??
	//
	Length = 0;
	if ( !dataptr || !buffptr ) {
		return(0);
	}

	//
	// look at header then check that frame to build is not greater
	// than total frames
	//
	keyfr = (KeyFrameHeaderType *) dataptr;

	if ( framenumber >= keyfr->frames ) {
		return(0);
	}


	if (UseBigShapeBuffer) {
		/*
		** If we havnt yet allocated memory for uncompressed shapes then do so now.
		**
		*/
		if (!BigShapeBufferStart) {
			BigShapeBufferStart = (char*)Alloc(BigShapeBufferLength, MEM_NORMAL);
			BigShapeBufferPtr = BigShapeBufferStart;

			/*
			** Allocate memory for theater specific uncompressed shapes
			*/
			TheaterShapeBufferStart = (char*) Alloc (TheaterShapeBufferLength, MEM_NORMAL);
			TheaterShapeBufferPtr = TheaterShapeBufferStart;
		}

		/*
		** If we are running out of memory (<10k left) for uncompressed shapes
		** then allocate some more.
		*/
		if (( (unsigned)BigShapeBufferStart + BigShapeBufferLength) - (unsigned)BigShapeBufferPtr < 128000) {
			ReallocShapeBufferFlag = TRUE;
		}

		/*
		** If this animation was not previously uncompressed then
		** allocate memory to keep the pointers to the uncompressed data
		** for these animation frames
		*/
		if (keyfr->x != UNCOMPRESS_MAGIC_NUMBER) {
			keyfr->x = UNCOMPRESS_MAGIC_NUMBER;
			if (IsTheaterShape) {
				keyfr->y = TheaterSlotsUsed;
				TheaterSlotsUsed++;
			} else {
				keyfr->y = TotalSlotsUsed;
				TotalSlotsUsed++;
			}
			/*
			** Allocate and clear the memory for the shape info
			*/
			KeyFrameSlots[keyfr->y]= new char *[keyfr->frames];
			memset (KeyFrameSlots[keyfr->y] , 0 , keyfr->frames*4);
		}

		/*
		** If this frame was previously uncompressed then just return
		** a pointer to the raw data
		*/
		if (*(KeyFrameSlots[keyfr->y]+framenumber)) {
			if (IsTheaterShape) {
				return ((unsigned long)TheaterShapeBufferStart + (unsigned long)*(KeyFrameSlots[keyfr->y]+framenumber));
			} else {
				return ((unsigned long)BigShapeBufferStart + (unsigned long)*(KeyFrameSlots[keyfr->y]+framenumber));
			}
		}
	}

	// calc buff size
	buffsize = keyfr->width * keyfr->height;

	// get offset into data
	ptr = (char *)Add_Long_To_Pointer( dataptr, (((unsigned long)framenumber << 3) + sizeof(KeyFrameHeaderType)) );
	Mem_Copy( ptr, &offset[0], 12L );
	frameflags = (char)(offset[0] >> 24);


	if ( (frameflags & KF_KEYFRAME) ) {

		ptr = (char *)Add_Long_To_Pointer( dataptr, (offset[0] & 0x00FFFFFFL) );

		if (keyfr->flags & 1 ) {
			ptr = (char *)Add_Long_To_Pointer( ptr, 768L );
		}
		length = LCW_Uncompress( ptr, buffptr, buffsize );
	} else {	// key delta or delta

		if ( (frameflags & KF_DELTA) ) {
			currframe = (unsigned short)offset[1];

			ptr = (char *)Add_Long_To_Pointer( dataptr, (((unsigned long)currframe << 3) + sizeof(KeyFrameHeaderType)) );
			Mem_Copy( ptr, &offset[0], (long)(SUBFRAMEOFFS * sizeof(unsigned long)) );
		}

		// key frame
		offcurr = offset[1] & 0x00FFFFFFL;

		// key delta
		offdiff = (offset[0] & 0x00FFFFFFL) - offcurr;

		ptr = (char *)Add_Long_To_Pointer( dataptr, offcurr );

		if (keyfr->flags & 1 ) {
			ptr = (char *)Add_Long_To_Pointer( ptr, 768L );
		}

#ifndef FIXIT_SCORE_CRASH
		off16 = (unsigned long)lockptr & 0x00003FFFL;
#endif

		length = LCW_Uncompress( ptr, buffptr, buffsize );

		if (length > buffsize) {
			return(0);
		}

#ifndef FIXIT_SCORE_CRASH
		if ( ((offset[2] & 0x00FFFFFFL) - offcurr) >= (0x00010000L - off16) ) {

			ptr = (char *)Add_Long_To_Pointer( ptr, offdiff );
			off16 = (unsigned long)ptr & 0x00003FFFL;

			offcurr += offdiff;
			offdiff = 0;
		}
#endif

		length = buffsize;
		Apply_Delta(buffptr, Add_Long_To_Pointer(ptr, offdiff));

		if ( (frameflags & KF_DELTA) ) {
			// adjust to delta after the keydelta

			currframe++;
			subframe = 2;

			while (currframe <= framenumber) {
				offdiff = (offset[subframe] & 0x00FFFFFFL) - offcurr;

#ifndef FIXIT_SCORE_CRASH
				if ( ((offset[subframe+2] & 0x00FFFFFFL) - offcurr) >= (0x00010000L - off16) ) {

					ptr = (char *)Add_Long_To_Pointer( ptr, offdiff );
					off16 = (unsigned long)lockptr & 0x00003FFFL;

					offcurr += offdiff;
					offdiff = 0;
				}
#endif

				length = buffsize;
				Apply_Delta(buffptr, Add_Long_To_Pointer(ptr, offdiff));

				currframe++;
				subframe += 2;

				if ( subframe >= (SUBFRAMEOFFS - 1) &&
					currframe <= framenumber ) {
					Mem_Copy( Add_Long_To_Pointer( dataptr,
									(((unsigned long)currframe << 3) +
									sizeof(KeyFrameHeaderType)) ),
						&offset[0], (long)(SUBFRAMEOFFS * sizeof(unsigned long)) );
					subframe = 0;
				}
			}
		}
	}


	if (UseBigShapeBuffer) {
		/*
		** Save the uncompressed shape data so we dont have to uncompress it
		** again next time its drawn.
		** We keep a space free before the raw shape data so we can add line
		** header info before the shape is drawn for the first time
		*/

		if (IsTheaterShape) {
			/*
			** Shape is a theater specific shape
			*/
			return_value = (unsigned long) TheaterShapeBufferPtr;
			temp_shape_ptr = TheaterShapeBufferPtr + keyfr->height+sizeof(ShapeHeaderType);
			/*
			** align the actual shape data
			*/
			if (3 & (unsigned)temp_shape_ptr) {
				temp_shape_ptr = (char *) ((unsigned)(temp_shape_ptr + 3) & 0xfffffffc);
			}

			memcpy (temp_shape_ptr , buffptr , length);
			((ShapeHeaderType *)TheaterShapeBufferPtr)->draw_flags = -1;						//Flag that headers need to be generated
			((ShapeHeaderType *)TheaterShapeBufferPtr)->shape_data = temp_shape_ptr - (unsigned)TheaterShapeBufferStart;		//pointer to old raw shape data
			((ShapeHeaderType *)TheaterShapeBufferPtr)->shape_buffer = 1;	//Theater buffer
			*(KeyFrameSlots[keyfr->y]+framenumber) = TheaterShapeBufferPtr - (unsigned)TheaterShapeBufferStart;
			TheaterShapeBufferPtr = (char*)(length + (unsigned)temp_shape_ptr);
			/*
			** Align the next shape
			*/
			if (3 & (unsigned)TheaterShapeBufferPtr) {
				TheaterShapeBufferPtr = (char *)((unsigned)(TheaterShapeBufferPtr + 3) & 0xfffffffc);
			}
			Length = length;
			return (return_value);

		} else {


			return_value=(unsigned long)BigShapeBufferPtr;
			temp_shape_ptr = BigShapeBufferPtr + keyfr->height+sizeof(ShapeHeaderType);
			/*
			** align the actual shape data
			*/
			if (3 & (unsigned)temp_shape_ptr) {
				temp_shape_ptr = (char *) ((unsigned)(temp_shape_ptr + 3) & 0xfffffffc);
			}
			memcpy (temp_shape_ptr , buffptr , length);
			((ShapeHeaderType *)BigShapeBufferPtr)->draw_flags = -1;						//Flag that headers need to be generated
			((ShapeHeaderType *)BigShapeBufferPtr)->shape_data = temp_shape_ptr - (unsigned)BigShapeBufferStart;		//pointer to old raw shape data
			((ShapeHeaderType *)BigShapeBufferPtr)->shape_buffer = 0;	//Normal Big Shape Buffer
			*(KeyFrameSlots[keyfr->y]+framenumber) = BigShapeBufferPtr - (unsigned)BigShapeBufferStart;
			BigShapeBufferPtr = (char*)(length + (unsigned)temp_shape_ptr);
			// Align the next shape
			if (3 & (unsigned)BigShapeBufferPtr) {
				BigShapeBufferPtr = (char *)((unsigned)(BigShapeBufferPtr + 3) & 0xfffffffc);
			}
			Length = length;
			return (return_value);
		}

	} else {
		return ((unsigned long)buffptr);
	}
}


/***********************************************************************************************
 * Get_Build_Frame_Count -- Fetches the number of frames in data block.                        *
 *                                                                                             *
 *    Use this routine to determine the number of shapes within the data block.                *
 *                                                                                             *
 * INPUT:   dataptr  -- Pointer to the keyframe shape data block.                              *
 *                                                                                             *
 * OUTPUT:  Returns with the number of shapes in the data block.                               *
 *                                                                                             *
 * WARNINGS:   none                                                                            *
 *                                                                                             *
 * HISTORY:                                                                                    *
 *   06/25/1995 JLB : Commented.                                                               *
 *=============================================================================================*/
unsigned short Get_Build_Frame_Count(void const *dataptr)
{
	if (dataptr) {
		return(((KeyFrameHeaderType const *)dataptr)->frames);
	}
	return(0);
}


unsigned short Get_Build_Frame_X(void const *dataptr)
{
	if (dataptr) {
		return(((KeyFrameHeaderType const *)dataptr)->x);
	}
	return(0);
}


unsigned short Get_Build_Frame_Y(void const *dataptr)
{
	if (dataptr) {
		return(((KeyFrameHeaderType const *)dataptr)->y);
	}
	return(0);
}


/***********************************************************************************************
 * Get_Build_Frame_Width -- Fetches the width of the shape image.                              *
 *                                                                                             *
 *    Use this routine to fetch the width of the shapes within the keyframe shape data block.  *
 *    All shapes within the block have the same width.                                         *
 *                                                                                             *
 * INPUT:   dataptr  -- Pointer to the keyframe shape data block.                              *
 *                                                                                             *
 * OUTPUT:  Returns with the width of the shapes in the block -- expressed in pixels.          *
 *                                                                                             *
 * WARNINGS:   none                                                                            *
 *                                                                                             *
 * HISTORY:                                                                                    *
 *   06/25/1995 JLB : Commented                                                                *
 *=============================================================================================*/
unsigned short Get_Build_Frame_Width(void const *dataptr)
{
	if (dataptr) {
		return(((KeyFrameHeaderType const *)dataptr)->width);
	}
	return(0);
}


/***********************************************************************************************
 * Get_Build_Frame_Height -- Fetches the height of the shape image.                            *
 *                                                                                             *
 *    Use this routine to fetch the height of the shapes within the keyframe shape data block. *
 *    All shapes within the block have the same height.                                        *
 *                                                                                             *
 * INPUT:   dataptr  -- Pointer to the keyframe shape data block.                              *
 *                                                                                             *
 * OUTPUT:  Returns with the height of the shapes in the block -- expressed in pixels.         *
 *                                                                                             *
 * WARNINGS:   none                                                                            *
 *                                                                                             *
 * HISTORY:                                                                                    *
 *   06/25/1995 JLB : Commented                                                                *
 *=============================================================================================*/
unsigned short Get_Build_Frame_Height(void const *dataptr)
{
	if (dataptr) {
		return(((KeyFrameHeaderType const *)dataptr)->height);
	}
	return(0);
}


bool Get_Build_Frame_Palette(void const * dataptr, void * palette)
{
	if (dataptr && (((KeyFrameHeaderType const *)dataptr)->flags & 1)) {
		char const * ptr = (char const *)Add_Long_To_Pointer( dataptr,
							( (( (long)sizeof(unsigned long) << 1) *
								((KeyFrameHeaderType *) dataptr)->frames ) +
							16 + sizeof(KeyFrameHeaderType) ) );

		memcpy(palette, ptr, 768L);
		return(true);
	}
	return(false);
}


================================================
FILE: CODE/2SUPPORT.ASM
================================================
;
;	Command & Conquer Red Alert(tm)
;	Copyright 2025 Electronic Arts Inc.
;
;	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 3 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 License for more details.
;
;	You should have received a copy of the GNU General Public License
;	along with this program.  If not, see <http://www.gnu.org/licenses/>.
;

; $Header:   F:\projects\c&c0\vcs\code\2support.asv   5.0   11 Nov 1996 09:40:36   JOE_BOSTIC  $
;***************************************************************************
;**   C O N F I D E N T I A L --- W E S T W O O D    S T U D I O S        **
;***************************************************************************
;*                                                                         *
;*                 Project Name : Command & Conquer                        *
;*                                                                         *
;*                    File Name : SUPPORT.ASM                              *
;*                                                                         *
;*                   Programmer : Joe L. Bostic                            *
;*                                                                         *
;*                   Start Date : September 23, 1993                       *
;*                                                                         *
;*                  Last Update : May 10, 1994   [JLB]                     *
;*                                                                         *
;*-------------------------------------------------------------------------*
;* Functions:                                                              *
;*   strtrim -- Remove the trailing white space from a string.             *
;*   Fat_Put_Pixel -- Draws a fat pixel.                                   *
;*   Conquer_Build_Fading_Table -- Builds custom shadow/light fading table.*
;*   Remove_From_List -- Removes a pointer from a list of pointers.        *
;* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *

IDEAL
P386
MODEL USE32 FLAT

INCLUDE "gbuffer.inc"
	DISPLAY	"Command & Conquer assembly support routines."

	CODESEG


;***************************************************************************
;* Fat_Put_Pixel -- Draws a fat pixel.                                     *
;*                                                                         *
;*    Use this routine to draw a "pixel" that is bigger than 1 pixel       *
;*    across.  This routine is faster than drawing a similar small shape   *
;*    and faster than calling Fill_Rect.                                   *
;*                                                                         *
;* INPUT:   x,y       -- Screen coordinates to draw the pixel's upper      *
;*                       left corner.                                      *
;*                                                                         *
;*          color     -- The color to render the pixel in.                 *
;*                                                                         *
;*          size      -- The number of pixels width of the big "pixel".    *
;*                                                                         *
;*          page      -- The pointer to a GraphicBuffer class or something *
;*                                                                         *
;* OUTPUT:  none                                                           *
;*                                                                         *
;* WARNINGS:   none                                                        *
;*                                                                         *
;* HISTORY:                                                                *
;*   03/17/1994 JLB : Created.                                             *
;*=========================================================================*
; VOID cdecl Fat_Put_Pixel(long x, long y, long color, long size, void *page)
	GLOBAL	C Fat_Put_Pixel:NEAR
	PROC	Fat_Put_Pixel C near
	USES	eax, ebx, ecx, edx, edi, esi

	ARG	x:DWORD		; X coordinate of upper left pixel corner.
	ARG	y:DWORD		; Y coordinate of upper left pixel corner.
	ARG	color:DWORD	; Color to use for the "pixel".
	ARG	siz:DWORD	; Size of "pixel" to plot (square).
	ARG	gpage:DWORD	; graphic page address to plot onto

	cmp	[siz],0
	je	short ??exit

	; Set EDI to point to start of logical page memory.
	;*===================================================================
	; Get the viewport information and put bytes per row in ecx
	;*===================================================================
	mov	ebx,[gpage]				; get a pointer to viewport
	mov	edi,[(GraphicViewPort ebx).GVPOffset]	; get the correct offset

	; Verify the the Y pixel offset is legal.
	mov	eax,[y]
	cmp	eax,[(GraphicViewPort ebx).GVPHeight]	;YPIXEL_MAX
	jae	short ??exit
	mov	ecx,[(GraphicViewPort ebx).GVPWidth]
	add	ecx,[(GraphicViewPort ebx).GVPXAdd]
	add	ecx,[(GraphicViewPort ebx).GVPPitch]
	mul	ecx
	add	edi,eax

	; Verify the the X pixel offset is legal.

	mov	edx,[(GraphicViewPort ebx).GVPWidth]
	cmp	edx,[x]
	mov	edx,ecx
	jbe	short ??exit
	add	edi,[x]

	; Write the pixel to the screen.
	mov	ebx,[siz]		; Copy of pixel size.
	sub	edx,ebx			; Modulo to reach start of next row.
	mov	eax,[color]
??again:
	mov	ecx,ebx
	rep stosb
	add	edi,edx			; EDI points to start of next row.
	dec	[siz]
	jnz	short ??again

??exit:
	ret

	ENDP	Fat_Put_Pixel


if 0

;***************************************************************************
;* strtrim -- Remove the trailing white space from a string.               *
;*                                                                         *
;*    Use this routine to remove white space characters from the beginning *
;*    and end of the string.        The string is modified in place by     *
;*    this routine.                                                        *
;*                                                                         *
;* INPUT:   buffer   -- Pointer to the string to modify.                   *
;*                                                                         *
;* OUTPUT:     none                                                        *
;*                                                                         *
;* WARNINGS:   none                                                        *
;*                                                                         *
;* HISTORY:                                                                *
;*   10/07/1992 JLB : Created.                                             *
;*=========================================================================*
; VOID cdecl strtrim(BYTE *buffer);
	GLOBAL	C strtrim :NEAR
	PROC	strtrim C near
	USES	ax, edi, esi

	ARG	buffer:DWORD		; Pointer to string to modify.

	cmp	[buffer],0
	je	short ??fini

	; Prepare for string scanning by loading pointers.
	cld
	mov	esi,[buffer]
	mov	edi,esi

	; Strip white space from the start of the string.
??looper:
	lodsb
	cmp	al,20h			; Space
	je	short ??looper
	cmp	al,9			; TAB
	je	short ??looper
	stosb

	; Copy the rest of the string.
??gruntloop:
	lodsb
	stosb
	or	al,al
	jnz	short ??gruntloop
	dec	edi
	; Strip the white space from the end of the string.
??looper2:
	mov	[edi],al
	dec	edi
	mov	ah,[edi]
	cmp	ah,20h
	je	short ??looper2
	cmp	ah,9
	je	short ??looper2

??fini:
	ret

	ENDP	strtrim


;***************************************************************************
;* Conquer_Build_Fading_Table -- Builds custom shadow/light fading table.  *
;*                                                                         *
;*    This routine is used to build a special fading table for C&C.  There *
;*    are certain colors that get faded to and cannot be faded again.      *
;*    With this rule, it is possible to draw a shadow multiple times and   *
;*    not have it get any lighter or darker.                               *
;*                                                                         *
;* INPUT:   palette  -- Pointer to the 768 byte IBM palette to build from. *
;*                                                                         *
;*          dest     -- Pointer to the 256 byte remap table.               *
;*                                                                         *
;*          color    -- Color index of the color to "fade to".             *
;*                                                                         *
;*          frac     -- The fraction to fade to the specified color        *
;*                                                                         *
;* OUTPUT:  Returns with pointer to the remap table.                       *
;*                                                                         *
;* WARNINGS:   none                                                        *
;*                                                                         *
;* HISTORY:                                                                *
;*   10/07/1992 JLB : Created.                                             *
;*=========================================================================*/
;VOID * cdecl Conquer_Build_Fading_Table(VOID *palette, VOID *dest, long color, long frac);
	GLOBAL	C Conquer_Build_Fading_Table : NEAR
	PROC	Conquer_Build_Fading_Table C near
	USES	ebx, ecx, edi, esi

	ARG	palette:DWORD
	ARG	dest:DWORD
	ARG	color:DWORD
	ARG	frac:DWORD

	LOCAL	matchvalue:DWORD	; Last recorded match value.
	LOCAL	targetred:BYTE		; Target gun red.
	LOCAL	targetgreen:BYTE	; Target gun green.
	LOCAL	targetblue:BYTE		; Target gun blue.
	LOCAL	idealred:BYTE
	LOCAL	idealgreen:BYTE
	LOCAL	idealblue:BYTE
	LOCAL	matchcolor:BYTE		; Tentative match color.

ALLOWED_COUNT	EQU	16
ALLOWED_START	EQU	256-ALLOWED_COUNT

	cld

	; If the source palette is NULL, then just return with current fading table pointer.
	cmp	[palette],0
	je	??fini1
	cmp	[dest],0
	je	??fini1

	; Fractions above 255 become 255.
	mov	eax,[frac]
	cmp	eax,0100h
	jb	short ??ok
	mov	[frac],0FFh
??ok:

	; Record the target gun values.
	mov	esi,[palette]
	mov	ebx,[color]
	add	esi,ebx
	add	esi,ebx
	add	esi,ebx
	lodsb
	mov	[targetred],al
	lodsb
	mov	[targetgreen],al
	lodsb
	mov	[targetblue],al

	; Main loop.
	xor	ebx,ebx			; Remap table index.

	; Transparent black never gets remapped.
	mov	edi,[dest]
	mov	[edi],bl
	inc	edi

	; EBX = source palette logical number (1..255).
	; EDI = running pointer into dest remap table.
??mainloop:
	inc	ebx
	mov	esi,[palette]
	add	esi,ebx
	add	esi,ebx
	add	esi,ebx

	mov	edx,[frac]
	shr	edx,1
	; new = orig - ((orig-target) * fraction);

	lodsb				; orig
	mov	dh,al			; preserve it for later.
	sub	al,[targetred]		; al = (orig-target)
	imul	dl			; ax = (orig-target)*fraction
	shl	eax,1
	sub	dh,ah			; dh = orig - ((orig-target) * fraction)
	mov	[idealred],dh		; preserve ideal color gun value.

	lodsb				; orig
	mov	dh,al			; preserve it for later.
	sub	al,[targetgreen]	; al = (orig-target)
	imul	dl			; ax = (orig-target)*fraction
	shl	eax,1
	sub	dh,ah			; dh = orig - ((orig-target) * fraction)
	mov	[idealgreen],dh		; preserve ideal color gun value.

	lodsb				; orig
	mov	dh,al			; preserve it for later.
	sub	al,[targetblue]		; al = (orig-target)
	imul	dl			; ax = (orig-target)*fraction
	shl	eax,1
	sub	dh,ah			; dh = orig - ((orig-target) * fraction)
	mov	[idealblue],dh		; preserve ideal color gun value.

	; Sweep through a limited set of existing colors to find the closest
	; matching color.

	mov	eax,[color]
	mov	[matchcolor],al		; Default color (self).
	mov	[matchvalue],-1		; Ridiculous match value init.
	mov	ecx,ALLOWED_COUNT

	mov	esi,[palette]		; Pointer to original palette.
	add	esi,(ALLOWED_START)*3

	; BH = color index.
	mov	bh,ALLOWED_START
??innerloop:

	xor	edx,edx			; Comparison value starts null.

	; Build the comparison value based on the sum of the differences of the color
	; guns squared.
	lodsb
	sub	al,[idealred]
	mov	ah,al
	imul	ah
	add	edx,eax

	lodsb
	sub	al,[idealgreen]
	mov	ah,al
	imul	ah
	add	edx,eax

	lodsb
	sub	al,[idealblue]
	mov	ah,al
	imul	ah
	add	edx,eax
	jz	short ??perfect		; If perfect match found then quit early.

	cmp	edx,[matchvalue]
	jae	short ??notclose
	mov	[matchvalue],edx	; Record new possible color.
	mov	[matchcolor],bh
??notclose:
	inc	bh			; Checking color index.
	loop	??innerloop
	mov	bh,[matchcolor]
??perfect:
	mov	[matchcolor],bh
	xor	bh,bh			; Make BX valid main index again.

	; When the loop exits, we have found the closest match.
	mov	al,[matchcolor]
	stosb
	cmp	ebx,ALLOWED_START-1
	jne	??mainloop

	; Fill the remainder of the remap table with values
	; that will remap the color to itself.
	mov	ecx,ALLOWED_COUNT
??fillerloop:
	inc	bl
	mov	al,bl
	stosb
	loop	??fillerloop

??fini1:
	mov	esi,[dest]
	mov	eax,esi
	ret

	ENDP	Conquer_Build_Fading_Table


;***************************************************************************
;* Remove_From_List -- Removes a pointer from a list of pointers.          *
;*                                                                         *
;*    This low level routine is used to remove a pointer from a list of    *
;*    pointers.  The trailing pointers are moved downward to fill the      *
;*    hole.                                                                *
;*                                                                         *
;* INPUT:   list     -- Pointer to list of pointer.                        *
;*                                                                         *
;*          index    -- Pointer to length of pointer list.                 *
;*                                                                         *
;*          ptr      -- The pointer value to search for and remove.        *
;*                                                                         *
;* OUTPUT:  none                                                           *
;*                                                                         *
;* WARNINGS:   none                                                        *
;*                                                                         *
;* HISTORY:                                                                *
;*   04/11/1994 JLB : Created.                                             *
;*   04/22/1994 JLB : Convert to assembly language.                        *
;*   05/10/1994 JLB : Short pointers now.                                  *
;*=========================================================================*/
;VOID cdecl Remove_From_List(VOID **list, long *index, long ptr);
	GLOBAL	C Remove_From_List:NEAR
	PROC	Remove_From_List C near
	USES	edi, esi, ecx, eax
	ARG	list:DWORD		; Pointer to list.
	ARG	index:DWORD		; Pointer to count.
	ARG	element:DWORD		; Element to remove.

	; Fetch the number of elements in the list.  If there are no
	; elements, then just exit quickly.
	mov	edi,[index]
	mov	ecx,[edi]
	jcxz	short ??fini2

	; Fetch pointer to list.
	cmp	[list],0
	je	short ??fini2
	mov	edi,[list]

	; Loop through all elements searching for a match.
	mov	eax,[element]
	repne scasd
	jne	short ??fini2		; No match found.

	; Copy all remaining elements down.  If this is the
	; last element in the list then nothing needs to be
	; copied -- just decrement the list size.
	jcxz	short ??nocopy		; No copy necessary.
	mov	esi,edi
	sub	edi,4
	rep movsd

	; Reduce the list count by one.
??nocopy:
	mov	edi,[index]
	dec	[DWORD PTR edi]

??fini2:
	ret

	ENDP	Remove_From_List


; long cdecl Get_EAX();
	GLOBAL	C Get_EAX :NEAR
	PROC	Get_EAX C near
	ret

	ENDP	Get_EAX
endif


	DATASEG

TabA	DD 6949350
	DD 4913933
	DD 3474675
	DD 2456966
	DD 1737338
	DD 1228483
	DD 868669
	DD 614242
	DD 434334
	DD 307121
	DD 217167
	DD 153560
	DD 108584
	DD 76780
	DD 54292
	DD 38390
	DD 27146
	DD 19195
	DD 13573
	DD 9598
	DD 6786
	DD 4799
	DD 3393
	DD 2399
	DD 1697
	DD 1200
	DD 848
	DD 600
	DD 424
	DD 300
	DD 212
	DD 150
	DD 106

TabB	DD 154
	DD 218
	DD 309
	DD 437
	DD 618
	DD 874
	DD 1236
	DD 1748
	DD 2472
	DD 3496
	DD 4944
	DD 6992
	DD 9888
	DD 13983
	DD 19775
	DD 27967
	DD 39551
	DD 55933
	DD 79101
	DD 111866
	DD 158203
	DD 223732
	DD 316405
	DD 447465
	DD 632811
	DD 894929
	DD 1265621
	DD 1789859
	DD 2531243
	DD 3579718
	DD 5062486
	DD 7159436
	DD 10124971

	CODESEG

;***********************************************************************************************
;* Square_Root -- Finds the square root of the fixed pointer parameter.                        *
;*                                                                                             *
;* INPUT:   val   -- The fixed point (16:16) value to find the square root of.                 *
;*                                                                                             *
;* OUTPUT:  Returns with the square root of the fixed pointer parameter.                       *
;*                                                                                             *
;* WARNINGS:   none                                                                            *
;*                                                                                             *
;* HISTORY:                                                                                    *
;*   10/04/1995 JLB : Adapted.                                                                 *
;*=============================================================================================*/
;unsigned Square_Root(unsigned val);
	GLOBAL	C Square_Root :NEAR
	PROC	Square_Root C near
	USES	ebx,edx

	bsr ebx,eax
	jz ??zero

	mul [DWORD 4*ebx + OFFSET TabA]
	shrd eax,edx,10h
	add eax, [4*ebx + OFFSET TabB]
??zero:
	ret

	ENDP	Square_Root

;----------------------------------------------------------------------------

	END



================================================
FILE: CODE/2TXTPRNT.ASM
================================================
;
;	Command & Conquer Red Alert(tm)
;	Copyright 2025 Electronic Arts Inc.
;
;	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 3 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 License for more details.
;
;	You should have received a copy of the GNU General Public License
;	along with this program.  If not, see <http://www.gnu.org/licenses/>.
;

;***************************************************************************
;**      C O N F I D E N T I A L --- W E S T W O O D   S T U D I O S      **
;***************************************************************************
;*                                                                         *
;*                 Project Name : Westwood 32 bit Library                  *
;*                                                                         *
;*                    File Name : TXTPRNT.ASM                              *
;*                                                                         *
;*                   Programmer : Phil W. Gorrow                           *
;*                                                                         *
;*                   Start Date : January 17, 1995                         *
;*                                                                         *
;*                  Last Update : January 17, 1995   [PWG]                 *
;*                                                                         *
;*-------------------------------------------------------------------------*
;* Functions:                                                              *
;*   MCGA_Print -- Assembly MCGA text print routine                        *
;* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *

IDEAL
P386
MODEL USE32 FLAT

;INCLUDE "mcgaprim.inc"
;INCLUDE ".\gbuffer.inc"

GLOBAL C Buffer_Print : NEAR

STRUC GraphicViewPort
GVPOffset		DD		?		; offset to virtual viewport
GVPWidth		DD		?		; width of virtual viewport
GVPHeight		DD		?		; height of virtual viewport
GVPXAdd			DD		?		; x mod to get to next line
GVPXPos			DD		?		; x pos relative to Graphic Buff
GVPYPos			DD		?		; y pos relative to Graphic Buff
GVPPitch		dd		?		; modulo of graphic view port
GVPBuffPtr		DD		?		; ptr to associated Graphic Buff
ENDS



;*=========================================================================*
;* Extern the font pointer which is defined by the font class		   *
;*=========================================================================*
GLOBAL	C FontPtr:DWORD
GLOBAL	C FontXSpacing:DWORD
GLOBAL	C FontYSpacing:DWORD
GLOBAL	C ColorXlat:BYTE

;*=========================================================================*
;* Define the necessary equates for structures and bounds checking	   *
;*=========================================================================*
; The header of the font file looks like this:
; 	UWORD	FontLength;		0
; 	BYTE	FontCompress;		2
;	BYTE	FontDataBlocks;		3
;	UWORD	InfoBlockOffset;	4
;	UWORD	OffsetBlockOffset;	6
;	UWORD	WidthBlockOffset;	8
;	UWORD	DataBlockOffset;	10
;	UWORD	HeightOffset;		12
; For this reason the following equates have these values:
FONTINFOBLOCK		EQU	4
FONTOFFSETBLOCK		EQU	6
FONTWIDTHBLOCK		EQU	8
FONTDATABLOCK		EQU	10
FONTHEIGHTBLOCK		EQU	12

FONTINFOMAXHEIGHT	EQU	4
FONTINFOMAXWIDTH	EQU	5


LOCALS ??
;*=========================================================================*
;* Define the color xlate table in the data segment			   *
;*=========================================================================*
	DATASEG
ColorXlat	DB	000H,001H,002H,003H,004H,005H,006H,007H
		DB	008H,009H,00AH,00BH,00CH,00DH,00EH,00FH

		DB	001H,000H,000H,000H,000H,000H,000H,000H
		DB	000H,000H,000H,000H,000H,000H,000H,000H

		DB	002H,000H,000H,000H,000H,000H,000H,000H
		DB	000H,000H,000H,000H,000H,000H,000H,000H

		DB	003H,000H,000H,000H,000H,000H,000H,000H
		DB	000H,000H,000H,000H,000H,000H,000H,000H

		DB	004H,000H,000H,000H,000H,000H,000H,000H
		DB	000H,000H,000H,000H,000H,000H,000H,000H

		DB	005H,000H,000H,000H,000H,000H,000H,000H
		DB	000H,000H,000H,000H,000H,000H,000H,000H

		DB	006H,000H,000H,000H,000H,000H,000H,000H
		DB	000H,000H,000H,000H,000H,000H,000H,000H

		DB	007H,000H,000H,000H,000H,000H,000H,000H
		DB	000H,000H,000H,000H,000H,000H,000H,000H

		DB	008H,000H,000H,000H,000H,000H,000H,000H
		DB	000H,000H,000H,000H,000H,000H,000H,000H

		DB	009H,000H,000H,000H,000H,000H,000H,000H
		DB	000H,000H,000H,000H,000H,000H,000H,000H

		DB	00AH,000H,000H,000H,000H,000H,000H,000H
		DB	000H,000H,000H,000H,000H,000H,000H,000H

		DB	00BH,000H,000H,000H,000H,000H,000H,000H
		DB	000H,000H,000H,000H,000H,000H,000H,000H

		DB	00CH,000H,000H,000H,000H,000H,000H,000H
		DB	000H,000H,000H,000H,000H,000H,000H,000H

		DB	00DH,000H,000H,000H,000H,000H,000H,000H
		DB	000H,000H,000H,000H,000H,000H,000H,000H

		DB	00EH,000H,000H,000H,000H,000H,000H,000H
		DB	000H,000H,000H,000H,000H,000H,000H,000H

		DB	00FH
	CODESEG


;***************************************************************************
;* MCGA_PRINT -- Assembly MCGA text print routine                          *
;*                                                                         *
;*                                                                         *
;*                                                                         *
;* INPUT:                                                                  *
;*                                                                         *
;* OUTPUT:                                                                 *
;*                                                                         *
;* PROTO:                                                                  *
;*                                                                         *
;* WARNINGS:                                                               *
;*                                                                         *
;* HISTORY:                                                                *
;*   01/17/1995 PWG : Created.                                             *
;*=========================================================================*
	PROC	Buffer_Print C near
	USES	ebx,ecx,edx,esi,edi

	ARG	this:DWORD
	ARG	string:DWORD
	ARG	x_pixel:DWORD
	ARG	y_pixel:DWORD
	ARG	fcolor:DWORD
	ARG	bcolor:DWORD

	LOCAL	infoblock:DWORD		; pointer to info block
	LOCAL	offsetblock:DWORD	; pointer to offset block  (UWORD *)
	LOCAL	widthblock:DWORD	; pointer to width block   (BYTE  *)
	LOCAL	heightblock:DWORD	; pointer to height block  (UWORD *)

	LOCAL	curline:DWORD		; pointer to first column of current row.
	LOCAL	bufferwidth:DWORD    	; width of buffer (vpwidth + Xadd)
	LOCAL	nextdraw:DWORD		; bufferwidth - width of cur character.
	LOCAL	startdraw:DWORD		; where next character will start being drawn.

	LOCAL	char:DWORD		; current character value.

	LOCAL	maxheight:BYTE		; max height of characters in font.
	LOCAL	bottomblank:BYTE	; amount of empty space below current character.
	LOCAL	charheight:BYTE		; true height of current character.
	LOCAL	vpwidth:DWORD
	LOCAL	vpheight:DWORD
	LOCAL	original_x:DWORD	; Starting X position.


;-------------------------------- Where to draw -----------------------------------------------
	; Set up memory location to start drawing.
	mov  	ebx,[this]				; get a pointer to dest
	mov	eax,[(GraphicViewPort ebx).GVPHeight]	; get height of viewport
	mov	[vpheight],eax				; save off height of viewport
	mov	eax,[(GraphicViewPort ebx).GVPWidth]	; get width of viewport
	mov	[vpwidth],eax				; save it off for later
	add	eax,[(GraphicViewPort ebx).GVPXAdd]	; add in xadd for bytes_per_line
	add	eax,[(GraphicViewPort ebx).GVPPitch]	; add in pitch of direct draw surface
	mov	[bufferwidth],eax     			; save it off for later use.

	mul	[y_pixel]				; multiply rowsize * y_pixel start.
	mov	edi,[(GraphicViewPort ebx).GVPOffset]	; get start of the viewport
	add	edi,eax					; add y position to start of vp
	mov	[curline],edi				; save 0,y address for line feed stuff.
	add	edi,[x_pixel]				; add to get starting column in starting row.
	mov	[startdraw],edi				; save it off.

	mov	eax,[x_pixel]
	mov	[original_x],eax

;-------------------------------- Create block pointers ----------------------------------------
	; Get the pointer to the font.
	; We could check for NULL but why waste the time.
	; It is up to programmer to make sure it is set.
	mov	esi,[FontPtr]		; Get the font pointer
	or	esi,esi
	jz	??overflow

	; Set up some pointers to the different memory blocks.
	; esi (FontPtr) is added to each to get the true address of each block.
	; Many registers are used for P5 optimizations.
	; ebx is used for InfoBlock which is then used in the next section.
	movzx	eax,[WORD PTR esi+FONTOFFSETBLOCK]	; get offset to offset block
	movzx	ebx,[WORD PTR esi+FONTINFOBLOCK]      	; get offset to info block (must be ebx for height test)
	movzx	ecx,[WORD PTR esi+FONTWIDTHBLOCK] 	; get offset to width block
	movzx	edx,[WORD PTR esi+FONTHEIGHTBLOCK]	; get offset to height block

	add	eax,esi				; add offset of FontPtr to offset block
	add	ebx,esi				; add offset of FontPtr to info block
	add	ecx,esi				; add offset of FontPtr to width block
	add	edx,esi				; add offset of FontPtr to height block

	mov	[offsetblock],eax		; save offset to offset block
	mov	[infoblock],ebx			; save offset to info block
	mov	[widthblock],ecx   		; save offset to width block
	mov	[heightblock],edx		; save offset to height block

;------------------------------------------ Test for fit ----------------------------------------------
	; Test to make sure the height of the max character will fit on this line
	; and and not fall out of the viewport.
	; remember we set ebx to FONTINFOBLOCK above.
	movzx	eax,[BYTE PTR ebx + FONTINFOMAXHEIGHT]; get the max height in font.
	mov	[maxheight],al			; save it for later use.
	add	eax,[y_pixel]			; add current y_value.
	cmp	eax,[vpheight]			; are we over the edge?
	jg	??overflow			; if so, we're outa here.

	mov	[y_pixel],eax			; save for next line feed. y value for next line.

	cld					; Make sure we are always forward copying.

;------------------------ Set palette foreground and background ----------------------------------
	mov	eax,[fcolor]		; foreground color
	mov	[ColorXlat+1],al
	mov	[ColorXlat+16],al

	mov	eax,[bcolor]		; background color
	mov	[ColorXlat],al

;-------------------------------------------------------------------------------------------------
;----------------------------------------- Main loop ----------------------------------------------
	; Now we go into the main loop of reading each character in the string and doing
	; something with it.
??next_char:
	; while (*string++)
	xor	eax,eax				; zero out since we will just load al.
	mov	esi,[string]			; get address on next character.
	lodsb					; load the character into al.
	test	eax,0FFH			; test to see if character is a NULL
	jz	??done				; character is NULL, get outa here.

	mov	edi,[startdraw]			; Load the starting address.

	mov	[string],esi			; save index into string. (incremented by lodsb)

	cmp	al,10				; is the character a line feed?
	je	??line_feed			; if so, go to special case.

	cmp	al,13				; is the character a line feed?
	je	??line_feed			; if so, go to special case.

	mov	[char],eax			; save the character off for later reference.
	mov	ebx,eax				; save it in ebx for later use also.

	add	eax,[widthblock]		; figure address of width of character.
	mov	ecx,[x_pixel]			; get current x_pixel.
	movzx	edx,[BYTE PTR eax]	 	; get the width of the character in dl.
	add	ecx,edx				; add width of char to current x_pixel.
	mov	eax,[FontXSpacing]
	add	ecx,eax
	add	[startdraw],edx			; save start draw for next character.
	add	[startdraw],eax			; adjust for the font spacing value

	cmp	ecx,[vpwidth]			; is the pixel greater then the vp width?
	jg	??force_line_feed		; if so, force a line feed.

	mov	[x_pixel],ecx			; save value of start of next character.
	mov	ecx,[bufferwidth]		; get amount to next y same x (one row down)
	sub	ecx,edx				; take the current width off.
	mov	[nextdraw],ecx			; save it to add to edi when done with a row.

	; At this point we got the character. It is now time to find out specifics
	; about drawing the darn thing.
	; ebx = char so they can be used as an indexes.
	; edx = width of character for loop later.

	; get offset of data for character into esi.
	shl	ebx,1				; mult by 2 to later use as a WORD index.
	mov	esi,[offsetblock]		; get pointer to begining of offset block.
	add	esi,ebx				; index into offset block.
	movzx	esi,[WORD PTR esi]		; get true offset into data block from FontPtr.
	add	esi,[FontPtr]			; Now add FontPtr address to get true address.

	; Get top and bottom blank sizes and the true height of the character.
	add	ebx,[heightblock]		; point ebx to element in height array.
	mov	al,[ebx+1]			; load the data height into dl.
	mov	cl,[ebx]			; load the first data row into cl.
	mov	bl,[maxheight]			; get the max height of characters.
	mov	[charheight],al			; get number of rows with data.
	add	al,cl				; add the two heights.
	sub	bl,al				; subract topblank + char height from maxheight.
	mov	[bottomblank],bl		; save off the number of blank rows on the bottom.
	; leaving this section:
	; dl is still the width of the character.
	; cl is the height of the top blank area.

	mov	ebx,OFFSET ColorXlat		; setup ebx for xlat commands.
	mov	dh,dl				; save the width of the character to restore each loop.

	cmp	cl,0				; is there any blank rows on top?
	jz	??draw_char			; if not go and draw the real character.

	xor	eax,eax				; get color 0 for background.
	xlat	[ebx]				; get translated color into al
	test	al,al				; is it transparent black
	jnz	??loop_top			; if not go and write the color

;----------------------------------------- skip Top blank area ----------------------------------------
	; this case, the top is transparrent, but we need to increase our dest pointer to correct row.
	movzx	eax,cl				; get number of rows into eax;
	mov	ecx,edx				; save width since edx will be destroyed by mul.
	mul	[bufferwidth]			; multiply that by the width of the buffer.
	mov	edx,ecx				; restore the width
	add	edi,eax				; update the pointer.
	jmp	short ??draw_char		; now go draw the character.

;----------------------------------------- fill Top blank area ----------------------------------------
	; edi was set a long time ago.
	; al is the translated color
??loop_top:
	stosb					; store the value
	dec	dh				; decrement our width.
	jnz	??loop_top			; if more width, continue on.

	add	edi,[nextdraw]			; add amount for entire row.

	dec	cl				; decrement or row count
	mov	dh,dl				; restore width in dh for loop.
	jz	??draw_char			; we are done here, go draw the character.
	jmp	short ??loop_top		; go back to top of loop.


;----------------------------------------- Draw character ----------------------------------------------
??draw_char:
	movzx	ecx,[charheight]		; get the height of character to count down rows.
	test	ecx,ecx				; is there any data? (blank would not have any)
	jz	??next_char			; if no data, go on to next character.

??while_data:
	lodsb					; get byte value from font data
	mov	ah,al				; save hinibble
	and	eax,0F00FH	       		; mask of low nibble in al hi nibble in ah.
	xlat	[ebx]				; get new color

	test	al,al				; is it a transparent?
	jz	short ??skiplo			; skip over write
	mov	[es:edi],al			; write it out
??skiplo:
	inc	edi
	dec	dh				; decrement our width.
	jz	short ??nextrow			; check if done with width of char

	mov	al,ah				; restore to get
	; test the time difference between looking up in a large table when shr al,4 is not done as
	; compared to using only a 16 byte table when using the shr al,4
	;shr	al,4				; shift the hi nibble down to low nibble
	xlat	[ebx]				; get new color

	test	al,al				; is it a transparent?
	jz	short ??skiphi			; skip over write
	mov	[es:edi],al			; write it out
??skiphi:

	inc	edi
	dec	dh				; decrement our width.
	jnz	short ??while_data		; check if done with width of char

??nextrow:
	add	edi,[nextdraw]			; go to next line.
	dec	ecx				; decrement the number of rows to go
	mov	dh,dl				; restore our column count for row.
	jnz	??while_data			; more data for character.

	; Now it is time to setup for clearing out the bottom of the character.
	movzx	ecx,[bottomblank]		; get amount on bottom that is blank
	cmp	ecx,0				; if there is no blank bottom...
	jz	??next_char			; then skip to go to next character

	xor	eax,eax				; get color 0 for background.
	xlat	[ebx]				; get translated color into al
	test	al,al				; is it transparent black
	jz	??next_char			; skip the top black section to let the background through

	mov	dh,dl				; restore width in dh for loop.

;----------------------------------------- Blank below character -----------------------------------
??loop_bottom:
	stosb					; store the value
	dec	dh				; decrement our width.
	jnz	??loop_bottom			; if more width, continue on.

	add	edi,[nextdraw]			; add amount for entire row.

	mov	dh,dl				; restore width in dh for loop.
	dec	cl				; decrement or row count
	jz	??next_char			; we are done here, go to the next character.
	jmp	short ??loop_bottom		; go back to top of loop.

;----------------------------------- end of next_char (main) loop ------------------------------------
;-------------------------------------------------------------------------------------------------


;----------------------------------- special case line feeds ----------------------------------------

??force_line_feed:
	; decrement pointer *string so that it will be back at same character
	; when it goes through the loop.
	mov	eax,[string]			; get string pointer.
	dec	eax				; decrement it to point to previos char
	mov	[string],eax			; save it back off.
	xor	eax,eax
	; Now go into the line feed code.....

??line_feed:
	mov	bl,al
	mov	edx,[y_pixel]			; get the current y pixel value.
	movzx	ecx,[maxheight]			; get max height for later use.
	add	ecx,[FontYSpacing]
	add	edx,ecx				; add max height to y_pixel
	cmp	edx,[vpheight]			; are we over the edge?
	jg	??overflow			; if so, we are outa here.

	mov	eax,[bufferwidth]      		; get bytes to next line.
	mov	edi,[curline]			; get start of current line.
	mul	ecx				; mult max height * next line.

	add	edi,eax				; add adjustment to current line.
	add	[y_pixel],ecx			; increment to our next y position.
;;; DRD
	mov	[curline],edi			; save it off for next line_feed.

	; Move the cursor to either the left edge of the screen
	; or the left margin of the print position depending
	; on whether <CR> or <LF> was specified. <CR> = left margin
	; <LF> = left edge of screen
	xor	eax,eax
	cmp	bl,10
	je	??lfeed
	mov	eax,[original_x]
??lfeed:
	mov	[x_pixel],eax			; zero out x_pixel

	add	edi,eax
;;; DRD	mov	[curline],edi			; save it off for next line_feed.
	mov	[startdraw],edi			; save it off so we know where to draw next char.w

	jmp	??next_char

??overflow:
	mov	[startdraw],0			; Indicate that there is no valid next pos.
??done:
	mov	eax,[startdraw]			; return this so calling routine
	ret					; can figure out where to draw next.

	ENDP	Buffer_Print
;***************************************************************************
;* GET_FONT_PALETTE_PTR -- Returns a pointer to the 256 byte font palette  *
;*                                                                         *
;* INPUT:	none                                                       *
;*                                                                         *
;* OUTPUT:      none                                                       *
;*                                                                         *
;* PROTO:	void *Get_Font_Palette_Ptr(void);                          *
;*                                                                         *
;* HISTORY:								   *
;*   08/18/1995 PWG : Created.                                             *
;*=========================================================================*

	GLOBAL	C Get_Font_Palette_Ptr:NEAR
	PROC	Get_Font_Palette_Ptr C near
	mov	eax, OFFSET ColorXlat
	ret
	ENDP	Get_Font_Palette_Ptr


END


================================================
FILE: CODE/AADATA.CPP
================================================
/*
**	Command & Conquer Red Alert(tm)
**	Copyright 2025 Electronic Arts Inc.
**
**	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 3 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 License for more details.
**
**	You should have received a copy of the GNU General Public License
**	along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

/* $Header: /CounterStrike/AADATA.CPP 1     3/03/97 10:24a Joe_bostic $ */
/***********************************************************************************************
 ***              C O N F I D E N T I A L  ---  W E S T W O O D  S T U D I O S               ***
 ***********************************************************************************************
 *                                                                                             *
 *                 Project Name : Command & Conquer                                            *
 *                                                                                             *
 *                    File Name : AADATA.CPP                                                   *
 *                                                                                             *
 *                   Programmer : Joe L. Bostic                                                *
 *                                                                                             *
 *                   Start Date : July 22, 1994                                                *
 *                                                                                             *
 *                  Last Update : July 9, 1996 [JLB]                                           *
 *                                                                                             *
 *---------------------------------------------------------------------------------------------*
 * Functions:                                                                                  *
 *   AircraftTypeClass::AircraftTypeClass -- Constructor for aircraft objects.                 *
 *   AircraftTypeClass::As_Reference -- Given an aircraft type, find the matching type object. *
 *   AircraftTypeClass::Create_And_Place -- Creates and places aircraft using normal game syste*
 *   AircraftTypeClass::Create_One_Of -- Creates an aircraft object of the appropriate type.   *
 *   AircraftTypeClass::Dimensions -- Fetches the graphic dimensions of the aircraft type.     *
 *   AircraftTypeClass::Display -- Displays a generic version of the aircraft type.            *
 *   AircraftTypeClass::From_Name -- Converts an ASCII name into an aircraft type number.      *
 *   AircraftTypeClass::Init_Heap -- Initialize the aircraft type class heap.                  *
 *   AircraftTypeClass::Max_Pips -- Fetches the maximum number of pips allowed.                *
 *   AircraftTypeClass::Occupy_List -- Returns with occupation list for landed aircraft.       *
 *   AircraftTypeClass::One_Time -- Performs one time initialization of the aircraft type class*
 *   AircraftTypeClass::Overlap_List -- Determines the overlap list for a landed aircraft.     *
 *   AircraftTypeClass::Prep_For_Add -- Prepares the scenario editor for adding an aircraft obj*
 *   AircraftTypeClass::operator delete -- Returns aircraft type to special memory pool.       *
 *   AircraftTypeClass::operator new -- Allocates an aircraft type object from special pool.   *
 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */

#include	"function.h"


void const * AircraftTypeClass::LRotorData = NULL;
void const * AircraftTypeClass::RRotorData = NULL;

// Badger bomber
static AircraftTypeClass const BadgerPlane(
	AIRCRAFT_BADGER,		// What kind of aircraft is this.
	TXT_BADGER,				// Translated text number for aircraft.
	"BADR",					// INI name of aircraft.
	0x0000,					//	Vertical offset.
	0x0000,					// Primary weapon offset along turret centerline.
	0x0000,					// Primary weapon lateral offset along turret centerline.
		true,					// Fixed wing aircraft?
		false,				// Equipped with a rotor?
		false,				// Custom rotor sets for each facing?
		false,				// Can this aircraft land on clear terrain?
		true,					// Is it invisible on radar?
		false,				// Can the player select it so as to give it orders?
		true,					// Can it be assigned as a target for attack.
		false,				// Is it insignificant (won't be announced)?
		false,				// Is it immune to normal combat damage?
	STRUCT_NONE,			// Preferred landing building.
	0xFF,						// Landing speed
	16,						// Number of rotation stages.
	MISSION_HUNT			// Default mission for aircraft.
);

// Photo recon plane.
static AircraftTypeClass const U2Plane(
	AIRCRAFT_U2,			// What kind of aircraft is this.
	TXT_U2,					// Translated text number for aircraft.
	"U2",						// INI name of aircraft.
	0x0000,					//	Vertical offset.
	0x0000,					// Primary weapon offset along turret centerline.
	0x0000,					// Primary weapon lateral offset along turret centerline.
		true,					// Fixed wing aircraft?
		false,				// Equipped with a rotor?
		false,				// Custom rotor sets for each facing?
		false,				// Can this aircraft land on clear terrain?
		true,					// Is it invisible on radar?
		false,				// Can the player select it so as to give it orders?
		true,					// Can it be assigned as a target for attack.
		false,				// Is it insignificant (won't be announced)?
		false,				// Is it immune to normal combat damage?
	STRUCT_NONE,			// Preferred landing building.
	0xFF,						// Landing speed
	16,						// Number of rotation stages.
	MISSION_HUNT			// Default mission for aircraft.
);

// Mig attack aircraft.
static AircraftTypeClass const MigPlane(
	AIRCRAFT_MIG,			// What kind of aircraft is this.
	TXT_MIG,					// Translated text number for aircraft.
	"MIG",					// INI name of aircraft.
	0x0000,					//	Vertical offset.
	0x0020,					// Primary weapon offset along turret centerline.
	0x0020,					// Primary weapon lateral offset along turret centerline.
		true,					// Fixed wing aircraft?
		false,				// Equipped with a rotor?
		false,				// Custom rotor sets for each facing?
		false,				// Can this aircraft land on clear terrain?
		true,					// Is it invisible on radar?
		true,					// Can the player select it so as to give it orders?
		true,					// Can it be assigned as a target for attack.
		false,				// Is it insignificant (won't be announced)?
		false,				// Is it immune to normal combat damage?
	STRUCT_AIRSTRIP,		// Preferred landing building.
	0xC0,						// Landing speed
	16,						// Number of rotation stages.
	MISSION_HUNT			// Default mission for aircraft.
);

// Yak attack aircraft.
static AircraftTypeClass const YakPlane(
	AIRCRAFT_YAK,			// What kind of aircraft is this.
	TXT_YAK,					// Translated text number for aircraft.
	"YAK",					// INI name of aircraft.
	0x0000,					//	Vertical offset.
	0x0020,					// Primary weapon offset along turret centerline.
	0x0020,					// Primary weapon lateral offset along turret centerline.
		true,					// Fixed wing aircraft?
		false,				// Equipped with a rotor?
		false,				// Custom rotor sets for each facing?
		false,				// Can this aircraft land on clear terrain?
		true,					// Is it invisible on radar?
		true,					// Can the player select it so as to give it orders?
		true,					// Can it be assigned as a target for attack.
		false,				// Is it insignificant (won't be announced)?
		false,				// Is it immune to normal combat damage?
	STRUCT_AIRSTRIP,		// Preferred landing building.
	0xFF,						// Landing speed
	16,						// Number of rotation stages.
	MISSION_HUNT			// Default mission for aircraft.
);

// Transport helicopter.
static AircraftTypeClass const TransportHeli(
	AIRCRAFT_TRANSPORT,	// What kind of aircraft is this.
	TXT_TRANS,				// Translated text number for aircraft.
	"TRAN",					// INI name of aircraft.
	0x0000,					//	Vertical offset.
	0x0000,					// Primary weapon offset along turret centerline.
	0x0000,					// Primary weapon lateral offset along turret centerline.
		false,				// Fixed wing aircraft?
		true,					// Equipped with a rotor?
		true,					// Custom rotor sets for each facing?
		true,					// Can this aircraft land on clear terrain?
		true,					// Is it invisible on radar?
		true,					// Can the player select it so as to give it orders?
		true,					// Can it be assigned as a target for attack.
		false,				// Is it insignificant (won't be announced)?
		false,				// Is it immune to normal combat damage?
	STRUCT_NONE,			// Preferred landing building.
	0xFF,						// Landing speed
	32,						// Number of rotation stages.
	MISSION_HUNT			// Default mission for aircraft.
);

// Longbow attack helicopter
static AircraftTypeClass const AttackHeli(
	AIRCRAFT_LONGBOW,		// What kind of aircraft is this.
	TXT_HELI,				// Translated text number for aircraft.
	"HELI",					// INI name of aircraft.
	0x0000,					//	Vertical offset.
	0x0040,					// Primary weapon offset along turret centerline.
	0x0000,					// Primary weapon lateral offset along turret centerline.
		false,				// Fixed wing aircraft?
		true,					// Equipped with a rotor?
		false,				// Custom rotor sets for each facing?
		false,				// Can this aircraft land on clear terrain?
		true,					// Is it invisible on radar?
		true,					// Can the player select it so as to give it orders?
		true,					// Can it be assigned as a target for attack.
		false,				// Is it insignificant (won't be announced)?
		false,				// Is it immune to normal combat damage?
	STRUCT_HELIPAD,		// Preferred landing building.
	0xFF,						// Landing speed
	32,						// Number of rotation stages.
	MISSION_HUNT			// Default mission for aircraft.
);


// Hind
static AircraftTypeClass const OrcaHeli(
	AIRCRAFT_HIND,			// What kind of aircraft is this.
	TXT_ORCA,				// Translated text number for aircraft.
	"HIND",					// INI name of aircraft.
	0x0000,					//	Vertical offset.
	0x0040,					// Primary weapon offset along turret centerline.
	0x0000,					// Primary weapon lateral offset along turret centerline.
		false,				// Fixed wing aircraft?
		true,					// Equipped with a rotor?
		false,				// Custom rotor sets for each facing?
		false,				// Can this aircraft land on clear terrain?
		true,					// Is it invisible on radar?
		true,					// Can the player select it so as to give it orders?
		true,					// Can it be assigned as a target for attack.
		false,				// Is it insignificant (won't be announced)?
		false,				// Is it immune to normal combat damage?
	STRUCT_HELIPAD,		// Preferred landing building.
	0xFF,						// Landing speed
	32,						// Number of rotation stages.
	MISSION_HUNT			// Default mission for aircraft.
);


/***********************************************************************************************
 * AircraftTypeClass::AircraftTypeClass -- Constructor for aircraft objects.                   *
 *                                                                                             *
 *    This is the constructor for the aircraft object.                                         *
 *                                                                                             *
 * INPUT:   see below...                                                                       *
 *                                                                                             *
 * OUTPUT:  none                                                                               *
 *                                                                                             *
 * WARNINGS:   none                                                                            *
 *                                                                                             *
 * HISTORY:                                                                                    *
 *   07/26/1994 JLB : Created.                                                                 *
 *=============================================================================================*/
AircraftTypeClass::AircraftTypeClass(
				AircraftType airtype,
				int name,
				char const * ininame,
				int verticaloffset,
				int primaryoffset,
				int primarylateral,
				bool is_fixedwing,
				bool is_rotorequipped,
				bool is_rotorcustom,
				bool is_landable,
				bool is_stealthy,
				bool is_selectable,
				bool is_legal_target,
				bool is_insignificant,
				bool is_immune,
				StructType building,
				int landingspeed,
				int rotation,
				MissionType deforder
				) :
					TechnoTypeClass(RTTI_AIRCRAFTTYPE,
										int(airtype),
										name,
										ininame,
										REMAP_NORMAL,
										verticaloffset,
										primaryoffset,
										primarylateral,
										primaryoffset,
										primarylateral,
										false,
										is_stealthy,
										is_selectable,
										is_legal_target,
										is_insignificant,
										is_immune,
										false,
										false,
										true,
										true,
										rotation,
										SPEED_WINGED),
	IsFixedWing(is_fixedwing),
	IsLandable(is_landable),
	IsRotorEquipped(is_rotorequipped),
	IsRotorCustom(is_rotorcustom),
	Type(airtype),
	Mission(deforder),
	Building(building),
	LandingSpeed(landingspeed)
{
	/*
	**	Forced aircraft overrides from the default.
	*/
	Speed = SPEED_WINGED;
}


/***********************************************************************************************
 * AircraftTypeClass::operator new -- Allocates an aircraft type object from special pool.     *
 *                                                                                             *
 *    This will allocate an aircraft type class object from the memory pool of that purpose.   *
 *                                                                                             *
 * INPUT:   none                                                                               *
 *                                                                                             *
 * OUTPUT:  Returns with a pointer to the newly allocated aircraft type class object. If there *
 *          was insufficient memory to fulfill the request, then NULL is returned.             *
 *                                                                                             *
 * WARNINGS:   none                                                                            *
 *                                                                                             *
 * HISTORY:                                                                                    *
 *   07/09/1996 JLB : Created.                                                                 *
 *=============================================================================================*/
void * AircraftTypeClass::operator new(size_t)
{
	return(AircraftTypes.Alloc());
}


/***********************************************************************************************
 * AircraftTypeClass::operator delete -- Returns aircraft type to special memory pool.         *
 *                                                                                             *
 *    This will return the aircraft type class object back to the special memory pool that     *
 *    it was allocated from.                                                                   *
 *                                                                                             *
 * INPUT:   pointer  -- Pointer to the aircraft type class object to delete.                   *
 *                                                                                             *
 * OUTPUT:  none                                                                               *
 *                                                                                             *
 * WARNINGS:   none                                                                            *
 *                                                                                             *
 * HISTORY:                                                                                    *
 *   07/09/1996 JLB : Created.                                                                 *
 *=============================================================================================*/
void AircraftTypeClass::operator delete(void * pointer)
{
	AircraftTypes.Free((AircraftTypeClass *)pointer);
}


/***********************************************************************************************
 * AircraftTypeClass::Init_Heap -- Initialize the aircraft type class heap.                    *
 *                                                                                             *
 *    This will initialize the aircraft type class heap by pre-allocating all known aircraft   *
 *    types. It should be called once and before the rules.ini file is processed.              *
 *                                                                                             *
 * INPUT:   none                                                                               *
 *                                                                                             *
 * OUTPUT:  none                                                                               *
 *                                                                                             *
 * WARNINGS:   none                                                                            *
 *                                                                                             *
 * HISTORY:                                                                                    *
 *   07/09/1996 JLB : Created.                                                                 *
 *=======================
Download .txt
gitextract_rc2spqh1/

├── CODE/
│   ├── 2KEYFBUF.ASM
│   ├── 2KEYFRAM.CPP
│   ├── 2SUPPORT.ASM
│   ├── 2TXTPRNT.ASM
│   ├── AADATA.CPP
│   ├── ABSTRACT.CPP
│   ├── ABSTRACT.H
│   ├── ADAMTEMP.MAK
│   ├── ADATA.CPP
│   ├── ADPCM.CPP
│   ├── AIRCRAFT.CPP
│   ├── AIRCRAFT.H
│   ├── ALLOC.CPP
│   ├── ANIM.CPP
│   ├── ANIM.CPP.BAK
│   ├── ANIM.H
│   ├── AUDIO.CPP
│   ├── AUDIO.CPP.BAK
│   ├── AUDIO.H
│   ├── B64PIPE.CPP
│   ├── B64PIPE.H
│   ├── B64STRAW.CPP
│   ├── B64STRAW.H
│   ├── BAR.CPP
│   ├── BAR.H
│   ├── BASE.CPP
│   ├── BASE.H
│   ├── BASE64.CPP
│   ├── BASE64.H
│   ├── BBDATA.CPP
│   ├── BDATA.CPP
│   ├── BENCH.CPP
│   ├── BENCH.H
│   ├── BFILE.MAK
│   ├── BFILE2.MAK
│   ├── BFIOFILE.CPP
│   ├── BFIOFILE.H
│   ├── BIGCHECK.CPP
│   ├── BIGCHECK.H
│   ├── BLOWFISH.CPP
│   ├── BLOWFISH.H
│   ├── BLOWPIPE.CPP
│   ├── BLOWPIPE.H
│   ├── BLWSTRAW.CPP
│   ├── BLWSTRAW.H
│   ├── BMP8.CPP
│   ├── BMP8.H
│   ├── BUFF.CPP
│   ├── BUFF.H
│   ├── BUFFERX.H
│   ├── BUGS.TXT
│   ├── BUILDING.CPP
│   ├── BUILDING.H
│   ├── BULLET.CPP
│   ├── BULLET.H
│   ├── C&CZERO.PJT
│   ├── CARGO.CPP
│   ├── CARGO.H
│   ├── CARRY.CPP
│   ├── CARRY.H
│   ├── CCDDE.CPP
│   ├── CCDDE.H
│   ├── CCFILE.CPP
│   ├── CCFILE.H
│   ├── CCINI.CPP
│   ├── CCINI.H
│   ├── CCMPATH.CPP
│   ├── CCPTR.CPP
│   ├── CCPTR.H
│   ├── CCTEN.CPP
│   ├── CC_ICON.RC
│   ├── CC_ICON.RH
│   ├── CDATA.CPP
│   ├── CDFILE.CPP
│   ├── CDFILE.H
│   ├── CELL.CPP
│   ├── CELL.H
│   ├── CHECKBOX.CPP
│   ├── CHECKBOX.H
│   ├── CHEKLIST.CPP
│   ├── CHEKLIST.H
│   ├── CLASS.CPP
│   ├── CO-WC32.LNT
│   ├── COLRLIST.CPP
│   ├── COLRLIST.H
│   ├── COMBAT.CPP
│   ├── COMBUF.CPP
│   ├── COMBUF.H
│   ├── COMINIT.CPP
│   ├── COMINIT.H
│   ├── COMPAT.H
│   ├── COMQUEUE.CPP
│   ├── COMQUEUE.H
│   ├── CONFDLG.CPP
│   ├── CONFDLG.H
│   ├── CONNECT.CPP
│   ├── CONNECT.CPP.BAK
│   ├── CONNECT.H
│   ├── CONNMGR.H
│   ├── CONQUER.CPP
│   ├── CONQUER.CPP.BAK
│   ├── CONQUER.H
│   ├── CONQUER.IDE
│   ├── CONQUER.LNT
│   ├── CONST.CPP
│   ├── CONTROL.CPP
│   ├── CONTROL.H
│   ├── COORD.CPP
│   ├── COORDA.ASM
│   ├── CPUID.ASM
│   ├── CRATE.CPP
│   ├── CRATE.H
│   ├── CRC.CPP
│   ├── CRC.H
│   ├── CRCPIPE.CPP
│   ├── CRCPIPE.H
│   ├── CRCSTRAW.CPP
│   ├── CRCSTRAW.H
│   ├── CREDITS.CPP
│   ├── CREDITS.H
│   ├── CREW.CPP
│   ├── CREW.H
│   ├── CSTRAW.CPP
│   ├── CSTRAW.H
│   ├── CWSTUB.C
│   ├── DDE.CPP
│   ├── DDE.H
│   ├── DEBUG.CPP
│   ├── DEBUG.H
│   ├── DEFINES.H
│   ├── DESCDLG.CPP
│   ├── DESCDLG.H
│   ├── DIAL8.CPP
│   ├── DIAL8.H
│   ├── DIALOG.CPP
│   ├── DIBAPI.H
│   ├── DIBFILE.CPP
│   ├── DIBUTIL.CPP
│   ├── DIBUTIL.H
│   ├── DISPLAY.CPP
│   ├── DISPLAY.H
│   ├── DOOR.CPP
│   ├── DOOR.H
│   ├── DPMI.CPP
│   ├── DPMI.H
│   ├── DRIVE.CPP
│   ├── DRIVE.H
│   ├── DROP.CPP
│   ├── DROP.H
│   ├── DTABLE.CPP
│   ├── DYNAVEC.CPP
│   ├── EDIT.CPP
│   ├── EDIT.H
│   ├── EGOS.CPP
│   ├── EGOS.H
│   ├── ENDING.CPP
│   ├── ENDING.H
│   ├── ENG/
│   │   ├── CONQUER.BAK
│   │   ├── CONQUER.TXT
│   │   ├── CREDITS.BAK
│   │   ├── CREDITS.TXT
│   │   ├── DEBUG.BAK
│   │   ├── DEBUG.TXT
│   │   ├── ENG/
│   │   │   ├── CONQUER.TXT
│   │   │   └── CREDITS.TXT
│   │   ├── FRE/
│   │   │   ├── CONQUER.TXT
│   │   │   └── CREDITS.TXT
│   │   ├── GER/
│   │   │   ├── CONQUER.TXT
│   │   │   └── CREDITS.TXT
│   │   └── MESSAGE.TXT
│   ├── EVENT.CPP
│   ├── EVENT.H
│   ├── EXPAND.CPP
│   ├── EXTERNS.H
│   ├── FACE.CPP
│   ├── FACE.H
│   ├── FACING.CPP
│   ├── FACING.H
│   ├── FACTORY.CPP
│   ├── FACTORY.H
│   ├── FAKESOCK.H
│   ├── FIELD.CPP
│   ├── FIELD.H
│   ├── FILE.CPP
│   ├── FILEPCX.H
│   ├── FINDPATH.CPP
│   ├── FIXED.CPP
│   ├── FIXED.H
│   ├── FLASHER.CPP
│   ├── FLASHER.H
│   ├── FLY.CPP
│   ├── FLY.H
│   ├── FOOT.CPP
│   ├── FOOT.H
│   ├── FOREIGN.TXT
│   ├── FTIMER.H
│   ├── FUNCTION.H
│   ├── FUNCTION.I
│   ├── FUSE.CPP
│   ├── FUSE.H
│   ├── GADGET.CPP
│   ├── GADGET.H
│   ├── GAMEDLG.CPP
│   ├── GAMEDLG.H
│   ├── GAUGE.CPP
│   ├── GAUGE.H
│   ├── GETCPU.CPP
│   ├── GLOBALS.CPP
│   ├── GOPTIONS.CPP
│   ├── GOPTIONS.H
│   ├── GSCREEN.CPP
│   ├── GSCREEN.H
│   ├── HDATA.CPP
│   ├── HEADER.MAC
│   ├── HEAP.CPP
│   ├── HEAP.H
│   ├── HELP.CPP
│   ├── HELP.H
│   ├── HOUSE.CPP
│   ├── HOUSE.H
│   ├── HSV.CPP
│   ├── HSV.H
│   ├── ICONLIST.CPP
│   ├── ICONLIST.H
│   ├── IDATA.CPP
│   ├── INFANTRY.CPP
│   ├── INFANTRY.H
│   ├── INI.CPP
│   ├── INI.H
│   ├── INIBIN.CPP
│   ├── INICODE.CPP
│   ├── INIT.CPP
│   ├── INIT.CPP.BAK
│   ├── INLINE.H
│   ├── INT.CPP
│   ├── INT.H
│   ├── INTERNET.CPP
│   ├── INTERNET.H
│   ├── INTERPAL.CPP
│   ├── INTRO.CPP
│   ├── INTRO.H
│   ├── IOMAP.CPP
│   ├── IOOBJ.CPP
│   ├── IPX.CPP
│   ├── IPX.H
│   ├── IPX95.CPP
│   ├── IPX95.H
│   ├── IPXADDR.CPP
│   ├── IPXADDR.H
│   ├── IPXCONN.CPP
│   ├── IPXCONN.H
│   ├── IPXGCONN.CPP
│   ├── IPXGCONN.H
│   ├── IPXMGR.CPP
│   ├── IPXMGR.H
│   ├── IPXPROT.ASM
│   ├── IPXREAL.ASM
│   ├── ITABLE.CPP
│   ├── JOEMAKE.BAT
│   ├── JSHELL.CPP
│   ├── JSHELL.H
│   ├── KEY.CPP
│   ├── KEY.H
│   ├── KEYBOARD.CPP
│   ├── KEYBOARD.H
│   ├── KEYFBUFF.ASM
│   ├── KEYFBUFF.ASM.BAK
│   ├── KEYFRAME.CPP
│   ├── LANGUAGE.H
│   ├── LAYER.CPP
│   ├── LAYER.H
│   ├── LCW.CPP
│   ├── LCW.H
│   ├── LCWCOMP.ASM
│   ├── LCWPIPE.CPP
│   ├── LCWPIPE.H
│   ├── LCWSTRAW.CPP
│   ├── LCWSTRAW.H
│   ├── LCWUNCMP.CPP
│   ├── LED.H
│   ├── LIBRARY.TXT
│   ├── LINK.CPP
│   ├── LINK.H
│   ├── LINT.H
│   ├── LIST.CPP
│   ├── LIST.H
│   ├── LISTNODE.H
│   ├── LOADDLG.CPP
│   ├── LOADDLG.H
│   ├── LOGIC.CPP
│   ├── LOGIC.H
│   ├── LZO.H
│   ├── LZO1X.H
│   ├── LZO1X_C.CPP
│   ├── LZO1X_D.CPP
│   ├── LZOCONF.H
│   ├── LZOPIPE.CPP
│   ├── LZOPIPE.H
│   ├── LZOSTRAW.CPP
│   ├── LZOSTRAW.H
│   ├── LZO_CONF.H
│   ├── LZW.CPP
│   ├── LZW.H
│   ├── LZWOTRAW.CPP
│   ├── LZWPIPE.CPP
│   ├── LZWPIPE.H
│   ├── LZWSTRAW.CPP
│   ├── LZWSTRAW.H
│   ├── MAKEFILE
│   ├── MAKE_ALL.BAT
│   ├── MAP.CPP
│   ├── MAP.H
│   ├── MAPEDDLG.CPP
│   ├── MAPEDIT.CPP
│   ├── MAPEDIT.H
│   ├── MAPEDPLC.CPP
│   ├── MAPEDSEL.CPP
│   ├── MAPEDTM.CPP
│   ├── MAPSEL.CPP
│   ├── MCI.CPP
│   ├── MCI.H
│   ├── MCIMOVIE.CPP
│   ├── MCIMOVIE.H
│   ├── MEMCHECK.H
│   ├── MENUS.CPP
│   ├── MESSAGE.H
│   ├── MISSION.CPP
│   ├── MISSION.H
│   ├── MIXFILE.CPP
│   ├── MIXFILE.H
│   ├── MONOC.CPP
│   ├── MONOC.H
│   ├── MOUSE.CPP
│   ├── MOUSE.H
│   ├── MOVIE.H
│   ├── MP.CPP
│   ├── MP.H
│   ├── MPGSET.CPP
│   ├── MPGSET.H
│   ├── MPLAYER.CPP
│   ├── MPLIB.CPP
│   ├── MPLPC.CPP
│   ├── MPMGRD.CPP
│   ├── MPMGRD.H
│   ├── MPMGRW.CPP
│   ├── MPMGRW.H
│   ├── MPU.CPP
│   ├── MPU.H
│   ├── MSGBOX.CPP
│   ├── MSGBOX.CPP.BAK
│   ├── MSGBOX.H
│   ├── MSGLIST.CPP
│   ├── MSGLIST.H
│   ├── NETDLG.CPP
│   ├── NOSEQCON.CPP
│   ├── NOSEQCON.H
│   ├── NULLCONN.CPP
│   ├── NULLCONN.H
│   ├── NULLDLG.CPP
│   ├── NULLMGR.CPP
│   ├── NULLMGR.H
│   ├── NUMBER.CPP
│   ├── OBJECT.CPP
│   ├── OBJECT.H
│   ├── ODATA.CPP
│   ├── OPTIONS.CPP
│   ├── OPTIONS.H
│   ├── OPTIONS.LNT
│   ├── OVERLAY.CPP
│   ├── OVERLAY.H
│   ├── PACKET.CPP
│   ├── PACKET.H
│   ├── PIPE.CPP
│   ├── PIPE.H
│   ├── PK.CPP
│   ├── PK.H
│   ├── PKPIPE.CPP
│   ├── PKPIPE.H
│   ├── PKSTRAW.CPP
│   ├── PKSTRAW.H
│   ├── POWER.CPP
│   ├── POWER.H
│   ├── PROFILE.CPP
│   ├── PROFILE.DEF
│   ├── QUEUE.CPP
│   ├── QUEUE.H
│   ├── RA-HDOS.PJT
│   ├── RA-HOME.PJT
│   ├── RA95.PJT
│   ├── RADAR.CPP
│   ├── RADAR.H
│   ├── RADIO.CPP
│   ├── RADIO.H
│   ├── RADOS.PJT
│   ├── RAMFILE.CPP
│   ├── RAMFILE.H
│   ├── RAND.CPP
│   ├── RANDOM.CPP
│   ├── RANDOM.H
│   ├── RAWFILE.CPP
│   ├── RAWFILE.H
│   ├── RAWOLAPI.CPP
│   ├── RAWOLAPI.H
│   ├── READLINE.CPP
│   ├── READLINE.H
│   ├── RECT.CPP
│   ├── RECT.H
│   ├── REDALERT.IDE
│   ├── REGION.H
│   ├── REINF.CPP
│   ├── RGB.CPP
│   ├── RGB.H
│   ├── RNDSTRAW.CPP
│   ├── RNDSTRAW.H
│   ├── RNG.H
│   ├── ROTBMP.CPP
│   ├── ROTBMP.H
│   ├── RULES.CPP
│   ├── RULES.H
│   ├── RULES.MAK
│   ├── SAVEDLG.H
│   ├── SAVELOAD.CPP
│   ├── SCENARIO.CPP
│   ├── SCENARIO.H
│   ├── SCORE.CPP
│   ├── SCORE.H
│   ├── SCREEN.H
│   ├── SCROLL.CPP
│   ├── SCROLL.H
│   ├── SDATA.CPP
│   ├── SEARCH.H
│   ├── SEDITDLG.CPP
│   ├── SEDITDLG.H
│   ├── SENDFILE.CPP
│   ├── SEQCONN.CPP
│   ├── SEQCONN.H
│   ├── SESSION.CPP
│   ├── SESSION.H
│   ├── SHA.CPP
│   ├── SHA.H
│   ├── SHAPEBTN.CPP
│   ├── SHAPEBTN.H
│   ├── SHAPIPE.CPP
│   ├── SHAPIPE.H
│   ├── SHASTRAW.CPP
│   ├── SHASTRAW.H
│   ├── SIDEBAR.CPP
│   ├── SIDEBAR.H
│   ├── SLIDER.CPP
│   ├── SLIDER.H
│   ├── SMUDGE.CPP
│   ├── SMUDGE.H
│   ├── SOUNDDLG.CPP
│   ├── SOUNDDLG.H
│   ├── SPECIAL.CPP
│   ├── SPECIAL.H
│   ├── SPRITE.CPP
│   ├── STAGE.H
│   ├── STARTUP.CPP
│   ├── STATBTN.CPP
│   ├── STATBTN.H
│   ├── STATS.CPP
│   ├── STD.LNT
│   ├── STRAW.CPP
│   ├── STRAW.H
│   ├── STUB.CPP
│   ├── STUFF.TXT
│   ├── STYLE.H
│   ├── SUPER.CPP
│   ├── SUPER.H
│   ├── SUPPORT.ASM
│   ├── SURFACE.CPP
│   ├── SURFACE.H
│   ├── TAB.CPP
│   ├── TAB.H
│   ├── TACTION.CPP
│   ├── TACTION.H
│   ├── TARCOM.CPP
│   ├── TARCOM.H
│   ├── TARGET.CPP
│   ├── TARGET.H
│   ├── TASM.CFG
│   ├── TCPIP.CPP
│   ├── TCPIP.H
│   ├── TDATA.CPP
│   ├── TEAM.CPP
│   ├── TEAM.H
│   ├── TEAMTYPE.CPP
│   ├── TEAMTYPE.H
│   ├── TECHNO.CPP
│   ├── TECHNO.H
│   ├── TEMP.CPP
│   ├── TEMPLATE.CPP
│   ├── TEMPLATE.H
│   ├── TENMGR.CPP
│   ├── TENMGR.H
│   ├── TERRAIN.CPP
│   ├── TERRAIN.H
│   ├── TEVENT.CPP
│   ├── TEVENT.H
│   ├── TEXTBTN.CPP
│   ├── TEXTBTN.H
│   ├── THEME.CPP
│   ├── THEME.H
│   ├── TLINK.CFG
│   ├── TODO.TXT
│   ├── TOGGLE.CPP
│   ├── TOGGLE.H
│   ├── TOOLTIP.CPP
│   ├── TOOLTIP.H
│   ├── TRACKER.CPP
│   ├── TRIGGER.CPP
│   ├── TRIGGER.H
│   ├── TRIGTYPE.CPP
│   ├── TRIGTYPE.H
│   ├── TURBOC.CFG
│   ├── TURRET.CPP
│   ├── TURRET.H
│   ├── TXTLABEL.CPP
│   ├── TXTLABEL.H
│   ├── TXTPRNT.ASM
│   ├── TYPE.H
│   ├── UDATA.CPP
│   ├── UDPADDR.CPP
│   ├── UNIT.CPP
│   ├── UNIT.H
│   ├── UTRACKER.CPP
│   ├── UTRACKER.H
│   ├── VDATA.CPP
│   ├── VECTOR.CPP
│   ├── VECTOR.H
│   ├── VERSION.CPP
│   ├── VERSION.H
│   ├── VER_FUNC.TXT
│   ├── VESSEL.CPP
│   ├── VESSEL.H
│   ├── VISUDLG.CPP
│   ├── VISUDLG.H
│   ├── VORTEX.CPP
│   ├── VORTEX.H
│   ├── W95TRACE.CPP
│   ├── W95TRACE.H
│   ├── WARHEAD.CPP
│   ├── WARHEAD.H
│   ├── WATCOM.H
│   ├── WEAPON.CPP
│   ├── WEAPON.H
│   ├── WIDEFUNC.MAC
│   ├── WIDEHDR.MAC
│   ├── WINASM.ASM
│   ├── WINSTUB.CPP
│   ├── WOLAPI/
│   │   ├── CHATDEFS.H
│   │   ├── DOWNLOADDEFS.H
│   │   ├── FTPDEFS.H
│   │   ├── NETUTILDEFS.H
│   │   ├── WOLAPI.H
│   │   └── WOLAPI_I.C
│   ├── WOLAPIOB.CPP
│   ├── WOLAPIOB.H
│   ├── WOLDEBUG.H
│   ├── WOLEDIT.CPP
│   ├── WOLEDIT.H
│   ├── WOLSTRNG.CPP
│   ├── WOLSTRNG.H
│   ├── WOL_CGAM.CPP
│   ├── WOL_CHAT.CPP
│   ├── WOL_DNLD.CPP
│   ├── WOL_GSUP.CPP
│   ├── WOL_GSUP.H
│   ├── WOL_LOGN.CPP
│   ├── WOL_MAIN.CPP
│   ├── WOL_OPT.CPP
│   ├── WRITEPCX.CPP
│   ├── WSPIPX.CPP
│   ├── WSPIPX.H
│   ├── WSPROTO.CPP
│   ├── WSPROTO.H
│   ├── WSPUDP.CPP
│   ├── WSPUDP.H
│   ├── WWALLOC.H
│   ├── WWFILE.H
│   ├── XPIPE.CPP
│   ├── XPIPE.H
│   ├── XSTRAW.CPP
│   ├── XSTRAW.H
│   ├── _WSPROTO.CPP
│   └── _WSPROTO.H
├── IPX/
│   ├── FIXTHUNK.CPP
│   ├── IPX.RC
│   ├── IPX16.ASM
│   ├── IPX16.BAK
│   ├── IPX16.H
│   ├── IPX16A.ASM
│   ├── IPX16C.CPP
│   ├── IPXTEST.CPP
│   ├── MAKE.BAK
│   ├── MAKE.BAT
│   ├── MAKEFILE
│   ├── MAKETH16.BAK
│   ├── MAKETH16.BAT
│   ├── MAKETH32.BAK
│   ├── MAKETH32.BAT
│   ├── OK/
│   │   ├── FIXTHUNK.CPP
│   │   ├── IPX.RC
│   │   ├── IPX16.ASM
│   │   ├── IPX16.BAK
│   │   ├── IPX16.H
│   │   ├── IPX16A.ASM
│   │   ├── IPX16C.CPP
│   │   ├── IPXTEST.CPP
│   │   ├── MAKE.BAK
│   │   ├── MAKE.BAT
│   │   ├── MAKETH16.BAK
│   │   ├── MAKETH16.BAT
│   │   ├── MAKETH32.BAK
│   │   ├── MAKETH32.BAT
│   │   ├── OLTHIPX.ASM
│   │   ├── PCMACRO.16
│   │   ├── THIPX.ASM
│   │   ├── THIPX.BAK
│   │   ├── THIPX.THK
│   │   ├── THIPX16C.CPP
│   │   ├── THIPX32C.CPP
│   │   ├── THMAP16.ASM
│   │   ├── THMAP32.ASM
│   │   ├── WWIPX.ASM
│   │   └── WWIPX16.ASM
│   ├── OLD/
│   │   └── IPX16A.ASM
│   ├── OLTHIPX.ASM
│   ├── PCMACRO.16
│   ├── THIPX.ASM
│   ├── THIPX.BAK
│   ├── THIPX.THK
│   ├── THIPX16C.CPP
│   ├── THIPX32C.CPP
│   ├── THMAP16.ASM
│   ├── THMAP32.ASM
│   ├── WWIPX.ASM
│   └── WWIPX16.ASM
├── LAUNCH/
│   ├── LAUNCH.ASM
│   └── PCMACRO.16
├── LAUNCHER/
│   ├── 256BMP.C
│   ├── BITMAP.CPP
│   ├── CONFIGFILE.CPP
│   ├── CONFIGFILE.H
│   ├── DIALOG.CPP
│   ├── DIALOG.H
│   ├── DICTIONARY.H
│   ├── FILED.H
│   ├── FINDPATCH.CPP
│   ├── FINDPATCH.H
│   ├── LAUNCHER.DSP
│   ├── LAUNCHER.DSW
│   ├── LAUNCHER1.RC
│   ├── LOADBMP.CPP
│   ├── LOADBMP.H
│   ├── MAIN.CPP
│   ├── MONOD.CPP
│   ├── MONOD.H
│   ├── ODEVICE.H
│   ├── PATCH.CPP
│   ├── PATCH.H
│   ├── PROCESS.CPP
│   ├── PROCESS.H
│   ├── RESOURCE.H
│   ├── STREAMER.CPP
│   ├── STREAMER.H
│   ├── UTIL/
│   │   ├── FILED.H
│   │   ├── MBOXD.H
│   │   ├── MONOD.CPP
│   │   ├── MONOD.H
│   │   ├── ODEVICE.H
│   │   ├── STDERRD.H
│   │   ├── STDOUTD.H
│   │   ├── STREAMER.CPP
│   │   ├── STREAMER.H
│   │   ├── SYSLOGD.CPP
│   │   ├── SYSLOGD.H
│   │   ├── WDEBUG.CPP
│   │   └── WDEBUG.H
│   ├── WDEBUG.CPP
│   ├── WDEBUG.H
│   ├── WINBLOWS.CPP
│   ├── WINBLOWS.H
│   ├── WSTRING.CPP
│   ├── WSTRING.H
│   └── WSTYPES.H
├── LICENSE.md
├── README.md
├── TOOLS/
│   ├── ANIMATE.EXE.OLD
│   ├── AUDIOMAK/
│   │   ├── AUDIOMAK.CPP
│   │   ├── AUDIOMAK.PJT
│   │   ├── MAKEFILE
│   │   ├── SCODE.ASM
│   │   ├── TASM.CFG
│   │   ├── TLINK.CFG
│   │   └── TURBOC.CFG
│   └── MIX/
│       ├── MIXFILE.CPP
│       ├── MIXFILE.IDE
│       └── MIXFILE.IDE.BAK
├── VQ/
│   ├── INCLUDE/
│   │   ├── HMI32/
│   │   │   ├── SOS.H
│   │   │   ├── SOSDATA.H
│   │   │   ├── SOSDEFS.H
│   │   │   ├── SOSFNCT.H
│   │   │   └── SOSRES.H
│   │   ├── VOCFILE.H
│   │   ├── VQ.H
│   │   ├── VQA32/
│   │   │   ├── VQAFILE.H
│   │   │   ├── VQAPLAY.BAK
│   │   │   └── VQAPLAY.H
│   │   ├── VQM32/
│   │   │   ├── ALL.H
│   │   │   ├── CAPTOKEN.H
│   │   │   ├── COMPRESS.H
│   │   │   ├── CRC.H
│   │   │   ├── FONT.H
│   │   │   ├── GRAPHICS.H
│   │   │   ├── HUFFMAN.H
│   │   │   ├── IFF.H
│   │   │   ├── MEM.H
│   │   │   ├── MIXFILE.H
│   │   │   ├── MONO.H
│   │   │   ├── PALETTE.H
│   │   │   ├── PORTIO.H
│   │   │   ├── PROFILE.H
│   │   │   ├── REALMODE.H
│   │   │   ├── SOSCOMP.H
│   │   │   ├── TARGA.H
│   │   │   ├── TEXT.H
│   │   │   ├── VESABLIT.H
│   │   │   ├── VESAVID.H
│   │   │   ├── VESAVID.I
│   │   │   ├── VGA.I
│   │   │   ├── VIDEO.H
│   │   │   └── VIDEO.I
│   │   ├── WAVEFILE.H
│   │   ├── WWLIB32/
│   │   │   ├── AUDIO.H
│   │   │   ├── BUFFER.H
│   │   │   ├── DESCMGMT.H
│   │   │   ├── DIPTHONG.H
│   │   │   ├── FILE.H
│   │   │   ├── FILETEMP.H
│   │   │   ├── FONT.H
│   │   │   ├── FUNCTION.H
│   │   │   ├── GBUFFER.H
│   │   │   ├── GBUFFER.INC
│   │   │   ├── IFF.H
│   │   │   ├── KEYBOARD.H
│   │   │   ├── KEYBOARD.INC
│   │   │   ├── KEYSTRUC.INC
│   │   │   ├── MCGAPRIM.H
│   │   │   ├── MCGAPRIM.INC
│   │   │   ├── MEMFLAG.H
│   │   │   ├── MISC.H
│   │   │   ├── MONO.H
│   │   │   ├── PALETTE.H
│   │   │   ├── PLAYCD.H
│   │   │   ├── SHAPE.H
│   │   │   ├── SHAPE.INC
│   │   │   ├── SOS.H
│   │   │   ├── SOSCOMP.H
│   │   │   ├── SOSDATA.H
│   │   │   ├── SOSDEFS.H
│   │   │   ├── SOSFNCT.H
│   │   │   ├── SOSRES.H
│   │   │   ├── SOUND.H
│   │   │   ├── STAMP.INC
│   │   │   ├── SVGAPRIM.INC
│   │   │   ├── TILE.H
│   │   │   ├── TIMER.H
│   │   │   ├── VBUFFER.H
│   │   │   ├── VIDEO.H
│   │   │   ├── WINDOWS.H
│   │   │   ├── WSA.H
│   │   │   ├── WWLIB32.H
│   │   │   ├── WWMEM.H
│   │   │   ├── WWMEM.INC
│   │   │   ├── WWSTD.H
│   │   │   └── _FILE.H
│   │   └── WWTYPES.H
│   ├── LIB/
│   │   └── README.TXT
│   ├── VQA32/
│   │   ├── AUDIO.BAK1
│   │   ├── AUDIO.BAK2
│   │   ├── AUDIO.CPP
│   │   ├── BCC32.CFG
│   │   ├── CAPTION.CPP
│   │   ├── CAPTION.H
│   │   ├── CONFIG.CPP
│   │   ├── DRAWER.BAK
│   │   ├── DRAWER.CPP
│   │   ├── DSTREAM.CPP
│   │   ├── LOADER.BAK
│   │   ├── LOADER.CPP
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BAK
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── MONODISP.BAK
│   │   ├── MONODISP.CPP
│   │   ├── SOS.H
│   │   ├── SOSDATA.H
│   │   ├── SOSDEFS.H
│   │   ├── SOSFNCT.H
│   │   ├── SOSRES.H
│   │   ├── TASK.CPP
│   │   ├── TASM32.CFG
│   │   ├── TLIB.CFG
│   │   ├── TLINK32.CFG
│   │   ├── UNVQ.H
│   │   ├── UNVQBUFF.ASM
│   │   ├── UNVQVESA.ASM
│   │   ├── UNVQXMDE.ASM
│   │   ├── UNVQXMDE.ASM.BAK
│   │   ├── VERTAG.CPP
│   │   ├── VQAFILE.H
│   │   ├── VQAPLAY.BAK
│   │   ├── VQAPLAY.H
│   │   ├── VQAPLAY.I
│   │   └── VQAPLAYP.H
│   └── VQM32/
│       ├── ALL.H
│       ├── AUDUNZAP.ASM
│       ├── AUDZAP.CPP
│       ├── BCC32.CFG
│       ├── CAPTOKEN.CPP
│       ├── CAPTOKEN.H
│       ├── CHRWIDTH.CPP
│       ├── COMPRESS.H
│       ├── CRC.ASM
│       ├── CRC.H
│       ├── DRAWCHAR.ASM
│       ├── FILLRECT.ASM
│       ├── FONT.CPP
│       ├── FONT.H
│       ├── GRAPHICS.H
│       ├── HUFFCMP.CPP
│       ├── HUFFDCMP.ASM
│       ├── HUFFMAN.H
│       ├── IFF.CPP
│       ├── IFF.H
│       ├── LCWCOMP.ASM
│       ├── LCWUNCMP.ASM
│       ├── MAKEFILE
│       ├── MAKEFILE.BAK
│       ├── MAKEFILE.BOR
│       ├── MAKEFILE.WAT
│       ├── MCGABUF.ASM
│       ├── MEM.CPP
│       ├── MEM.H
│       ├── MIXFILE.CPP
│       ├── MIXFILE.H
│       ├── MONO.ASM
│       ├── MONO.H
│       ├── PALETTE.ASM
│       ├── PALETTE.H
│       ├── PORTIO.ASM
│       ├── PORTIO.H
│       ├── PROFILE.CPP
│       ├── PROFILE.H
│       ├── REALMODE.H
│       ├── SORTPAL.CPP
│       ├── SOSCODEC.ASM
│       ├── SOSCOMP.H
│       ├── TARGA.CPP
│       ├── TARGA.H
│       ├── TASM32.CFG
│       ├── TESTVB.CPP
│       ├── TEXT.H
│       ├── TEXTPRNT.ASM
│       ├── TLIB.CFG
│       ├── TLINK32.CFG
│       ├── VB.ASM
│       ├── VERTAG.CPP
│       ├── VESABLIT.CPP
│       ├── VESABLIT.H
│       ├── VESABUF.ASM
│       ├── VESAVID.CPP
│       ├── VESAVID.H
│       ├── VESAVID.I
│       ├── VGA.I
│       ├── VIDEO.CPP
│       ├── VIDEO.H
│       ├── VIDEO.I
│       ├── XMODE.ASM
│       └── XMODEPG.CPP
├── WIN32LIB/
│   ├── AUDIO/
│   │   ├── AUDIO.H
│   │   ├── AUDIO.IDE
│   │   ├── AUDUNCMP.ASM
│   │   ├── DIFFTB.INC
│   │   ├── FUNCTION.H
│   │   ├── INDEXTB.INC
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── NYBBTB.INC
│   │   ├── OLD/
│   │   │   ├── AUDIO.H
│   │   │   ├── AUDIO.IDE
│   │   │   ├── AUDUNCMP.ASM
│   │   │   ├── DIFFTB.INC
│   │   │   ├── FUNCTION.H
│   │   │   ├── INDEXTB.INC
│   │   │   ├── MAKEFILE
│   │   │   ├── MAKEFILE.BOR
│   │   │   ├── MAKEFILE.WAT
│   │   │   ├── NYBBTB.INC
│   │   │   ├── OLSOSDEC.ASM
│   │   │   ├── SOS.H
│   │   │   ├── SOSCODEC.ASM
│   │   │   ├── SOSCOMP.H
│   │   │   ├── SOSDATA.H
│   │   │   ├── SOSDEFS.H
│   │   │   ├── SOSFNCT.H
│   │   │   ├── SOSRES.H
│   │   │   ├── SOUND.H
│   │   │   ├── SOUNDINT.CPP
│   │   │   ├── SOUNDINT.H
│   │   │   ├── SOUNDIO.CPP
│   │   │   ├── SOUNDLCK.CPP
│   │   │   ├── TEST.CPP
│   │   │   └── TST.CPP
│   │   ├── OLSOSDEC.ASM
│   │   ├── SOS.H
│   │   ├── SOSCODEC.ASM
│   │   ├── SOSCOMP.H
│   │   ├── SOSDATA.H
│   │   ├── SOSDEFS.H
│   │   ├── SOSFNCT.H
│   │   ├── SOSRES.H
│   │   ├── SOUND.H
│   │   ├── SOUNDINT.CPP
│   │   ├── SOUNDINT.H
│   │   ├── SOUNDIO.CPP
│   │   ├── SOUNDLCK.CPP
│   │   ├── TEST.CPP
│   │   └── TST.CPP
│   ├── DIPTHONG/
│   │   ├── DIPTHONG.CPP
│   │   ├── DIPTHONG.H
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   └── _DIPTABL.CPP
│   ├── DRAWBUFF/
│   │   ├── BITBLIT.ASM
│   │   ├── BUFFER.CPP
│   │   ├── BUFFER.H
│   │   ├── BUFFGLBL.CPP
│   │   ├── CLEAR.ASM
│   │   ├── DRAWBUFF.H
│   │   ├── DRAWBUFF.INC
│   │   ├── DRAWLINE.ASM
│   │   ├── DRAWRECT.CPP
│   │   ├── FILLQUAD.ASM
│   │   ├── FILLRECT.ASM
│   │   ├── FTPUTPIX.ASM
│   │   ├── GBUFFER.CPP
│   │   ├── GBUFFER.H
│   │   ├── GBUFFER.INC
│   │   ├── GETCLIP.ASM
│   │   ├── GETPIX.ASM
│   │   ├── ICONCACH.CPP
│   │   ├── ICONCACH.H
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── PUTPIX.ASM
│   │   ├── REGIONSZ.CPP
│   │   ├── REMAP.ASM
│   │   ├── SCALE.ASM
│   │   ├── SHADOW.ASM
│   │   ├── STAMP.ASM
│   │   ├── STAMP.INC
│   │   ├── STMPCACH.ASM
│   │   ├── SZREGION.ASM
│   │   ├── TEST/
│   │   │   ├── HOLD.DEF
│   │   │   ├── MAKEFILE
│   │   │   ├── MAKEFILE.BOR
│   │   │   ├── MAKEFILE.WAT
│   │   │   ├── TEST/
│   │   │   │   └── TEST.CPP
│   │   │   ├── TEST.BAK
│   │   │   ├── TEST.CPP
│   │   │   ├── TEST.DEF
│   │   │   └── TESTASM.ASM
│   │   ├── TOBUFF.ASM
│   │   ├── TOPAGE.ASM
│   │   └── TXTPRNT.ASM
│   ├── EXAMPLE/
│   │   ├── DEFINES.H
│   │   ├── EXTERNS.H
│   │   ├── FUNCTION.H
│   │   ├── GLOBALS.CPP
│   │   ├── MAIN.CPP
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── STARTUP.CPP
│   │   ├── STRUCTS.H
│   │   └── WWLIB32.H
│   ├── FONT/
│   │   ├── FONT.CPP
│   │   ├── FONT.H
│   │   ├── LOADFONT.CPP
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── SETFPAL.ASM
│   │   ├── SET_FONT.CPP
│   │   └── TEXTPRNT.ASM
│   ├── IFF/
│   │   ├── FILEPCX.H
│   │   ├── IFF.CPP
│   │   ├── IFF.H
│   │   ├── LCWCOMP.ASM
│   │   ├── LCWUNCMP.ASM
│   │   ├── LOAD.CPP
│   │   ├── LOADPCX.CPP
│   │   ├── LOADPICT.CPP
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── PACK2PLN.ASM
│   │   ├── WRITELBM.CPP
│   │   └── WRITEPCX.CPP
│   ├── INCLUDE/
│   │   ├── AUDIO.H
│   │   ├── BUFFER.H
│   │   ├── DEFINES.H
│   │   ├── DESCMGMT.H
│   │   ├── DIFFTB.INC
│   │   ├── DIPTHONG.H
│   │   ├── DRAWBUFF.H
│   │   ├── DRAWBUFF.INC
│   │   ├── EXTERNS.H
│   │   ├── FILE.H
│   │   ├── FILEPCX.H
│   │   ├── FILETEMP.H
│   │   ├── FONT.H
│   │   ├── FUNCTION.H
│   │   ├── GBUFFER.H
│   │   ├── GBUFFER.INC
│   │   ├── ICONCACH.H
│   │   ├── IFF.H
│   │   ├── INDEXTB.INC
│   │   ├── KEYBOARD.H
│   │   ├── KEYBOARD.INC
│   │   ├── KEYSTRUC.INC
│   │   ├── MCGAPRIM.INC
│   │   ├── MEMFLAG.H
│   │   ├── MISC.H
│   │   ├── MODEMREG.H
│   │   ├── MONO.H
│   │   ├── MOUSE.H
│   │   ├── MOUSE.INC
│   │   ├── NYBBTB.INC
│   │   ├── PALETTE.H
│   │   ├── PLAYCD.H
│   │   ├── PROFILE.H
│   │   ├── PROFILE.INC
│   │   ├── RAWFILE.H
│   │   ├── SHAPE.H
│   │   ├── SHAPE.INC
│   │   ├── SOS.H
│   │   ├── SOSCOMP.H
│   │   ├── SOSDATA.H
│   │   ├── SOSDEFS.H
│   │   ├── SOSFNCT.H
│   │   ├── SOSRES.H
│   │   ├── SOUND.H
│   │   ├── SOUNDINT.H
│   │   ├── STAMP.INC
│   │   ├── STRUCTS.H
│   │   ├── SVGAPRIM.INC
│   │   ├── TILE.H
│   │   ├── TIMER.H
│   │   ├── VIDEO.H
│   │   ├── WINCOMM.H
│   │   ├── WSA.H
│   │   ├── WWFILE.H
│   │   ├── WWLIB32.H
│   │   ├── WWMEM.H
│   │   ├── WWMEM.INC
│   │   ├── WWSTD.H
│   │   ├── WW_WIN.H
│   │   └── _FILE.H
│   ├── KEYBOARD/
│   │   ├── KEYBOARD.CPP
│   │   ├── KEYBOARD.H
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── MOUSE.CPP
│   │   ├── MOUSE.H
│   │   ├── MOUSE.INC
│   │   ├── OLD/
│   │   │   ├── KEYBOARD.ASM
│   │   │   ├── KEYBOARD.BAK
│   │   │   ├── KEYBOARD.CPP
│   │   │   ├── KEYBOARD.H
│   │   │   ├── KEYBOARD.INC
│   │   │   ├── KEYIPROT.ASM
│   │   │   ├── KEYIREAL.ASM
│   │   │   ├── KEYIREAL.IBN
│   │   │   ├── KEYSTRUC.INC
│   │   │   ├── MAKEFILE
│   │   │   ├── MAKEFILE.BAK
│   │   │   ├── MAKEFILE.BOR
│   │   │   ├── MAKEFILE.WAT
│   │   │   ├── MOUSE.ASM
│   │   │   ├── MOUSE.CPP
│   │   │   ├── MOUSE.CPP.BAK
│   │   │   ├── MOUSE.H
│   │   │   ├── MOUSE.INC
│   │   │   ├── PAGFAULT.ASM
│   │   │   ├── WWMOUSE.ASM
│   │   │   └── WWMOUSE.ASM.BAK
│   │   ├── OLDTEST/
│   │   │   ├── KEYBOARD.CPP
│   │   │   ├── KEYBOARD.H
│   │   │   ├── MAKEFILE
│   │   │   ├── MAKEFILE.BOR
│   │   │   ├── MAKEFILE.WAT
│   │   │   ├── TEST.CPP
│   │   │   └── TEST.DEF
│   │   ├── TEST/
│   │   │   ├── HOLD.DEF
│   │   │   ├── KEYBOARD.CPP
│   │   │   ├── KEYBOARD.H
│   │   │   ├── MAKEFILE
│   │   │   ├── MAKEFILE.BOR
│   │   │   ├── MAKEFILE.WAT
│   │   │   ├── TEST.CPP
│   │   │   ├── TEST.DEF
│   │   │   └── TESTASM.ASM
│   │   └── WWMOUSE.ASM
│   ├── MAKE.BAT
│   ├── MAKEFILE
│   ├── MAKEFILE.BOR
│   ├── MAKE_EXE.MAK
│   ├── MAKE_LIB.MAK
│   ├── MEM/
│   │   ├── ALLOC.CPP
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── MEM.CPP
│   │   ├── MEMFLAG.H
│   │   ├── MEM_COPY.ASM
│   │   ├── MSVC/
│   │   │   ├── ALLOC.CPP
│   │   │   ├── MAKEFILE
│   │   │   ├── MAKEFILE.BOR
│   │   │   ├── MAKEFILE.WAT
│   │   │   ├── MEM.CPP
│   │   │   ├── MEM.MAK
│   │   │   ├── MEMFLAG.H
│   │   │   ├── MEM_COPY.ASM
│   │   │   ├── NEWDEL.CPP
│   │   │   ├── WWMEM.H
│   │   │   └── WWMEM.INC
│   │   ├── NEWDEL.CPP
│   │   ├── OLDMEM/
│   │   │   ├── ALLOC.CPP
│   │   │   ├── MAKEFILE
│   │   │   ├── MAKEFILE.BOR
│   │   │   ├── MAKEFILE.WAT
│   │   │   ├── MEM.CPP
│   │   │   ├── MEMFLAG.H
│   │   │   ├── MEM_COPY.ASM
│   │   │   ├── NEWDEL.CPP
│   │   │   ├── WWMEM.H
│   │   │   └── WWMEM.INC
│   │   ├── VMPAGEIN.ASM
│   │   ├── WWMEM.H
│   │   └── WWMEM.INC
│   ├── MISC/
│   │   ├── CLIPRECT.ASM
│   │   ├── CRC.ASM
│   │   ├── DDRAW.CPP
│   │   ├── DELAY.CPP
│   │   ├── DETPROC.ASM
│   │   ├── EXIT.CPP
│   │   ├── FACING16.ASM
│   │   ├── FACING8.ASM
│   │   ├── FACINGFF.ASM
│   │   ├── FADING.ASM
│   │   ├── FINDARGV.CPP
│   │   ├── IRANDOM.CPP
│   │   ├── LIB.CPP
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── MISC.H
│   │   ├── OPSYS.ASM
│   │   ├── RANDOM.ASM
│   │   ├── REVERSE.ASM
│   │   ├── SHAKESCR.ASM
│   │   ├── VERSION.CPP
│   │   ├── WWLIB32.H
│   │   └── WWSTD.H
│   ├── MONO/
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── MONO.CPP
│   │   └── MONO.H
│   ├── MOVIE/
│   │   ├── MAKE.BAT
│   │   ├── MAKEFILE
│   │   ├── MOVIE.CPP
│   │   └── MOVIE.H
│   ├── PALETTE/
│   │   ├── LOADPAL.CPP
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MORPHPAL.CPP
│   │   ├── PAL.ASM
│   │   ├── PALETTE.CPP
│   │   └── PALETTE.H
│   ├── PLAYCD/
│   │   ├── GETCD.CPP
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── PLAYCD.ASM
│   │   ├── PLAYCD.H
│   │   └── REDBOOK.CPP
│   ├── PROFILE/
│   │   ├── APROFILE.ASM
│   │   ├── MAKEFILE
│   │   ├── PROFILE.CPP
│   │   ├── PROFILE.H
│   │   ├── PROFILE.INC
│   │   ├── UTIL/
│   │   │   └── PROFILE.CPP
│   │   └── WPROFILE.CPP
│   ├── PROJECT.CFG
│   ├── RAWFILE/
│   │   ├── CCFILE.CPP
│   │   ├── FILE.H
│   │   ├── FILETEMP.H
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── RAWFILE.CPP
│   │   ├── RAWFILE.H
│   │   └── WWFILE.H
│   ├── REBUILD.BAT
│   ├── SHAPE/
│   │   ├── DRAWSHP.ASM
│   │   ├── DS_DN.ASM
│   │   ├── DS_DR.ASM
│   │   ├── DS_DS.ASM
│   │   ├── DS_DSR.ASM
│   │   ├── DS_LRS.ASM
│   │   ├── DS_LS.ASM
│   │   ├── DS_LSRS.ASM
│   │   ├── DS_LSS.ASM
│   │   ├── DS_RRS.ASM
│   │   ├── DS_RS.ASM
│   │   ├── DS_RSRS.ASM
│   │   ├── DS_RSS.ASM
│   │   ├── DS_TABLE.ASM
│   │   ├── GETSHAPE.CPP
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── PRIOINIT.CPP
│   │   ├── SETSHAPE.ASM
│   │   ├── SHAPE.ASM
│   │   ├── SHAPE.H
│   │   └── SHAPE.INC
│   ├── SRCDEBUG/
│   │   ├── ALLOC.CPP
│   │   ├── APROFILE.ASM
│   │   ├── AUDUNCMP.ASM
│   │   ├── BITBLIT.ASM
│   │   ├── BUFFER.CPP
│   │   ├── BUFFGLBL.CPP
│   │   ├── CCFILE.CPP
│   │   ├── CLEAR.ASM
│   │   ├── CLIPRECT.ASM
│   │   ├── CRC.ASM
│   │   ├── DDRAW.CPP
│   │   ├── DELAY.CPP
│   │   ├── DESCMGMT.CPP
│   │   ├── DETPROC.ASM
│   │   ├── DEVICES.ASM
│   │   ├── DEVTABLE.ASM
│   │   ├── DIPTHONG.CPP
│   │   ├── DRAWLINE.ASM
│   │   ├── DRAWRECT.CPP
│   │   ├── DRAWSHP.ASM
│   │   ├── DS_DN.ASM
│   │   ├── DS_DR.ASM
│   │   ├── DS_DS.ASM
│   │   ├── DS_DSR.ASM
│   │   ├── DS_LRS.ASM
│   │   ├── DS_LS.ASM
│   │   ├── DS_LSRS.ASM
│   │   ├── DS_LSS.ASM
│   │   ├── DS_RRS.ASM
│   │   ├── DS_RS.ASM
│   │   ├── DS_RSRS.ASM
│   │   ├── DS_RSS.ASM
│   │   ├── DS_TABLE.ASM
│   │   ├── EXIT.CPP
│   │   ├── FACING16.ASM
│   │   ├── FACING8.ASM
│   │   ├── FACINGFF.ASM
│   │   ├── FADING.ASM
│   │   ├── FFIRST.ASM
│   │   ├── FFIXSEL.ASM
│   │   ├── FGETCS.ASM
│   │   ├── FGETDS.ASM
│   │   ├── FGETSEL.ASM
│   │   ├── FGLOB2.CPP
│   │   ├── FILE.CPP
│   │   ├── FILECACH.CPP
│   │   ├── FILECHNG.CPP
│   │   ├── FILEDATA.CPP
│   │   ├── FILEGLOB.CPP
│   │   ├── FILEINFO.CPP
│   │   ├── FILEINIT.CPP
│   │   ├── FILEIO.CPP
│   │   ├── FILELIB.CPP
│   │   ├── FILESTUB.CPP
│   │   ├── FILLQUAD.ASM
│   │   ├── FILLRECT.ASM
│   │   ├── FINDARGV.CPP
│   │   ├── FINDFILE.CPP
│   │   ├── FONT.CPP
│   │   ├── FTPUTPIX.ASM
│   │   ├── GBUFFER.CPP
│   │   ├── GETCD.CPP
│   │   ├── GETCLIP.ASM
│   │   ├── GETPIX.ASM
│   │   ├── GETSHAPE.CPP
│   │   ├── HARDERR.ASM
│   │   ├── ICONCACH.CPP
│   │   ├── ICONSET.CPP
│   │   ├── IFF.CPP
│   │   ├── INITDLAY.CPP
│   │   ├── INITMONO.CPP
│   │   ├── IRANDOM.CPP
│   │   ├── KEYBOARD.ASM
│   │   ├── KEYBOARD.CPP
│   │   ├── KEYIPROT.ASM
│   │   ├── KEYIREAL.ASM
│   │   ├── LCWCOMP.ASM
│   │   ├── LCWUNCMP.ASM
│   │   ├── LIB.CPP
│   │   ├── LOAD.CPP
│   │   ├── LOADFONT.CPP
│   │   ├── LOADPAL.CPP
│   │   ├── LOADPCX.CPP
│   │   ├── LOADPICT.CPP
│   │   ├── MEM.CPP
│   │   ├── MEM_COPY.ASM
│   │   ├── MODEMREG.CPP
│   │   ├── MONO.ASM
│   │   ├── MONO.CPP
│   │   ├── MONOPRNT.CPP
│   │   ├── MORPHPAL.CPP
│   │   ├── MOUSE.ASM
│   │   ├── MOUSE.CPP
│   │   ├── NEWDEL.CPP
│   │   ├── OLSOSDEC.ASM
│   │   ├── OPSYS.ASM
│   │   ├── PACK2PLN.ASM
│   │   ├── PAGFAULT.ASM
│   │   ├── PAL.ASM
│   │   ├── PALETTE.CPP
│   │   ├── PLAYCD.ASM
│   │   ├── PRIOINIT.CPP
│   │   ├── PROFILE.CPP
│   │   ├── PUTPIX.ASM
│   │   ├── RANDOM.ASM
│   │   ├── RAWFILE.CPP
│   │   ├── REDBOOK.CPP
│   │   ├── REGIONSZ.CPP
│   │   ├── REMAP.ASM
│   │   ├── REVERSE.ASM
│   │   ├── SCALE.ASM
│   │   ├── SETFPAL.ASM
│   │   ├── SETSHAPE.ASM
│   │   ├── SET_FONT.CPP
│   │   ├── SHADOW.ASM
│   │   ├── SHAKESCR.ASM
│   │   ├── SHAPE.ASM
│   │   ├── SOSCODEC.ASM
│   │   ├── SOUNDINT.CPP
│   │   ├── SOUNDIO.CPP
│   │   ├── SOUNDLCK.CPP
│   │   ├── STAMP.ASM
│   │   ├── STMPCACH.ASM
│   │   ├── SZREGION.ASM
│   │   ├── TEST.CPP
│   │   ├── TEXTPRNT.ASM
│   │   ├── TIMER.CPP
│   │   ├── TIMERA.ASM
│   │   ├── TIMERDWN.CPP
│   │   ├── TIMEREAL.ASM
│   │   ├── TIMERINI.CPP
│   │   ├── TOBUFF.ASM
│   │   ├── TOPAGE.ASM
│   │   ├── TST.CPP
│   │   ├── TXTPRNT.ASM
│   │   ├── VBITBLIT.ASM
│   │   ├── VBUFFER.CPP
│   │   ├── VCLEAR.ASM
│   │   ├── VERSION.CPP
│   │   ├── VERTBLNK.ASM
│   │   ├── VESA.ASM
│   │   ├── VESAHOOK.ASM
│   │   ├── VESAINFO.CPP
│   │   ├── VESAREAL.ASM
│   │   ├── VGETPIX.ASM
│   │   ├── VIDEO.CPP
│   │   ├── VLBTOVE.ASM
│   │   ├── VMPAGEIN.ASM
│   │   ├── VPUTPIX.ASM
│   │   ├── VSCALE.ASM
│   │   ├── VSCALE.CPP
│   │   ├── VSCLTOVE.ASM
│   │   ├── VTOBUFF.ASM
│   │   ├── VTOPAGE.ASM
│   │   ├── VTXTPRNT.ASM
│   │   ├── VVBLIT.ASM
│   │   ├── VVETOLB.ASM
│   │   ├── VVETOSCL.ASM
│   │   ├── VVETOSCL.CPP
│   │   ├── WINCOMM.CPP
│   │   ├── WINDOWS.CPP
│   │   ├── WINHIDE.CPP
│   │   ├── WPROFILE.CPP
│   │   ├── WRITELBM.CPP
│   │   ├── WRITEPCX.CPP
│   │   ├── WSA.CPP
│   │   ├── WWMOUSE.ASM
│   │   ├── XORDELTA.ASM
│   │   └── _DIPTABL.CPP
│   ├── TILE/
│   │   ├── ICONSET.CPP
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   └── TILE.H
│   ├── TIMER/
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── TIMER.CPP
│   │   ├── TIMER.H
│   │   ├── TIMER.IDE
│   │   ├── TIMERDWN.CPP
│   │   └── TIMERINI.CPP
│   ├── WINCOMM/
│   │   ├── MAKEFILE
│   │   ├── MODEMREG.CPP
│   │   ├── MODEMREG.H
│   │   ├── WINCOMM.CPP
│   │   └── WINCOMM.H
│   ├── WSA/
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── WSA.CPP
│   │   ├── WSA.H
│   │   └── XORDELTA.ASM
│   └── WW_WIN/
│       ├── MAKEFILE
│       ├── MAKEFILE.BOR
│       ├── MAKEFILE.WAT
│       ├── OLD/
│       │   ├── MAKEFILE
│       │   ├── MAKEFILE.BOR
│       │   ├── MAKEFILE.WAT
│       │   ├── WINDOWS.CPP
│       │   ├── WINHIDE.CPP
│       │   └── WW_WIN.H
│       ├── WINDOWS.CPP
│       ├── WINHIDE.CPP
│       ├── WW_WIN.H
│       ├── WW_WIN.IDE
│       └── WW_WIN.IDE.BAK
├── WINVQ/
│   ├── INCLUDE/
│   │   ├── VOCFILE.H
│   │   ├── VQ.H
│   │   ├── VQA32/
│   │   │   ├── CAPTION.H
│   │   │   ├── SOS.H
│   │   │   ├── SOSDATA.H
│   │   │   ├── SOSDEFS.H
│   │   │   ├── SOSFNCT.H
│   │   │   ├── SOSRES.H
│   │   │   ├── UNVQ.H
│   │   │   ├── VQAFILE.H
│   │   │   ├── VQAPLAY.H
│   │   │   ├── VQAPLAY.H.BAK
│   │   │   └── VQAPLAYP.H
│   │   ├── VQFILE.H
│   │   ├── VQM32/
│   │   │   ├── ALL.H
│   │   │   ├── CAPTOKEN.H
│   │   │   ├── COMPRESS.H
│   │   │   ├── CRC.H
│   │   │   ├── FONT.H
│   │   │   ├── GRAPHICS.H
│   │   │   ├── HUFFMAN.H
│   │   │   ├── IFF.H
│   │   │   ├── MEM.H
│   │   │   ├── MIXFILE.H
│   │   │   ├── MONO.H
│   │   │   ├── PALETTE.H
│   │   │   ├── PORTIO.H
│   │   │   ├── PROFILE.H
│   │   │   ├── REALMODE.H
│   │   │   ├── SOSCOMP.H
│   │   │   ├── TARGA.H
│   │   │   ├── TEXT.H
│   │   │   ├── VESABLIT.H
│   │   │   ├── VESAVID.H
│   │   │   ├── VESAVID.I
│   │   │   ├── VGA.I
│   │   │   ├── VIDEO.H
│   │   │   └── VIDEO.I
│   │   ├── WAVEFILE.H
│   │   └── WWTYPES.H
│   ├── LIB/
│   │   ├── README.TXT
│   │   ├── SOSDBLC.LIB
│   │   ├── SOSDW1CR.LIB
│   │   ├── SOSDW1CS.LIB
│   │   ├── SOSDW1PR.LIB
│   │   ├── SOSDW1PS.LIB
│   │   └── SOSMBLC.LIB
│   ├── VPLAY32/
│   │   ├── BCC32.CFG
│   │   ├── CAPTION.FNT
│   │   ├── EVA.FNT
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── PLYVQA32.CPP
│   │   ├── TASM32.CFG
│   │   ├── TLIB.CFG
│   │   ├── TLINK32.CFG
│   │   └── VPLAYTNT.DEF
│   ├── VQA32/
│   │   ├── AUDIO.CPP
│   │   ├── BCC32.CFG
│   │   ├── CAPTION.CPP
│   │   ├── CAPTION.H
│   │   ├── CONFIG.CPP
│   │   ├── DRAWER.CPP
│   │   ├── DSTREAM.CPP
│   │   ├── LOADER.CPP
│   │   ├── MAKEFILE
│   │   ├── MAKEFILE.BAK
│   │   ├── MAKEFILE.BOR
│   │   ├── MAKEFILE.WAT
│   │   ├── MONODISP.CPP
│   │   ├── OLD/
│   │   │   ├── AUDIO.CPP
│   │   │   ├── BCC32.CFG
│   │   │   ├── CAPTION.CPP
│   │   │   ├── CAPTION.H
│   │   │   ├── CONFIG.CPP
│   │   │   ├── DRAWER.CPP
│   │   │   ├── DSTREAM.CPP
│   │   │   ├── LOADER.CPP
│   │   │   ├── MAKEFILE
│   │   │   ├── MAKEFILE.BOR
│   │   │   ├── MAKEFILE.WAT
│   │   │   ├── MONODISP.CPP
│   │   │   ├── SOS.H
│   │   │   ├── SOSDATA.H
│   │   │   ├── SOSDEFS.H
│   │   │   ├── SOSFNCT.H
│   │   │   ├── SOSRES.H
│   │   │   ├── TASK.CPP
│   │   │   ├── TASM32.CFG
│   │   │   ├── TLIB.CFG
│   │   │   ├── TLINK32.CFG
│   │   │   ├── UNVQ.H
│   │   │   ├── UNVQBUFF.ASM
│   │   │   ├── UNVQVESA.ASM
│   │   │   ├── UNVQXMDE.ASM
│   │   │   ├── VERTAG.CPP
│   │   │   ├── VQAFILE.H
│   │   │   ├── VQAPLAY.H
│   │   │   ├── VQAPLAY.I
│   │   │   └── VQAPLAYP.H
│   │   ├── SOS.H
│   │   ├── SOSDATA.H
│   │   ├── SOSDEFS.H
│   │   ├── SOSFNCT.H
│   │   ├── SOSRES.H
│   │   ├── TASK.CPP
│   │   ├── TASM32.CFG
│   │   ├── TLIB.CFG
│   │   ├── TLINK32.CFG
│   │   ├── UNVQ.H
│   │   ├── UNVQBUFF.ASM
│   │   ├── UNVQVESA.ASM
│   │   ├── UNVQXMDE.ASM
│   │   ├── VERTAG.CPP
│   │   ├── VQAFILE.H
│   │   ├── VQAPLAY.BAK
│   │   ├── VQAPLAY.H
│   │   ├── VQAPLAY.I
│   │   └── VQAPLAYP.H
│   ├── VQAVIEW/
│   │   ├── DEBUG.CPP
│   │   ├── DEBUG.RC
│   │   ├── DIALOGS.RC
│   │   ├── DIALOGS.RH
│   │   ├── GAMETIME.CPP
│   │   ├── GAMETIME.H
│   │   ├── INTERPAL.ASM
│   │   ├── MAIN.CPP
│   │   ├── MAIN.H
│   │   ├── MAINWIND.CPP
│   │   ├── MAINWIND.H
│   │   ├── MAKEFILE
│   │   ├── MENUS.RC
│   │   ├── MENUS.RH
│   │   ├── MONOCHRM.CPP
│   │   ├── MONOCHRM.H
│   │   ├── MOVIES.CPP
│   │   ├── MOVIES.H
│   │   ├── PAL.CPP
│   │   ├── PAL.H
│   │   ├── TEST.MAK
│   │   ├── VIDMODE.H
│   │   ├── VQ.CPP
│   │   ├── VQ.H
│   │   ├── VQAVIEW.IDE
│   │   ├── VQAVIEW.IDE.BAK
│   │   ├── WESTWOOD.H
│   │   ├── WM.CPP
│   │   ├── WM.H
│   │   └── WWLIB.H
│   └── VQM32/
│       ├── ALL.H
│       ├── AUDUNZAP.ASM
│       ├── AUDZAP.CPP
│       ├── BCC32.CFG
│       ├── CAPTOKEN.CPP
│       ├── CAPTOKEN.H
│       ├── CHRWIDTH.CPP
│       ├── COMPRESS.H
│       ├── CRC.ASM
│       ├── CRC.H
│       ├── DRAWCHAR.ASM
│       ├── DRAWCHAR.BAK
│       ├── FILLRECT.ASM
│       ├── FONT.CPP
│       ├── FONT.H
│       ├── GRAPHICS.H
│       ├── HUFFCMP.CPP
│       ├── HUFFDCMP.ASM
│       ├── HUFFMAN.H
│       ├── IFF.CPP
│       ├── IFF.H
│       ├── LCWCOMP.ASM
│       ├── LCWUNCMP.ASM
│       ├── MAKEFILE
│       ├── MAKEFILE.BOR
│       ├── MAKEFILE.WAT
│       ├── MCGABUF.ASM
│       ├── MEM.CPP
│       ├── MEM.H
│       ├── MIXFILE.CPP
│       ├── MIXFILE.H
│       ├── MONO.ASM
│       ├── MONO.H
│       ├── PALETTE.ASM
│       ├── PALETTE.H
│       ├── PORTIO.ASM
│       ├── PORTIO.H
│       ├── PROFILE.CPP
│       ├── PROFILE.H
│       ├── REALMODE.H
│       ├── SORTPAL.CPP
│       ├── SOSCODEC.ASM
│       ├── SOSCOMP.H
│       ├── TARGA.CPP
│       ├── TARGA.H
│       ├── TASM32.CFG
│       ├── TESTVB.CPP
│       ├── TEXT.H
│       ├── TEXTPRNT.ASM
│       ├── TLIB.CFG
│       ├── TLINK32.CFG
│       ├── VB.ASM
│       ├── VERTAG.CPP
│       ├── VESABLIT.CPP
│       ├── VESABLIT.H
│       ├── VESABUF.ASM
│       ├── VESAVID.CPP
│       ├── VESAVID.H
│       ├── VESAVID.I
│       ├── VGA.I
│       ├── VIDEO.CPP
│       ├── VIDEO.H
│       ├── VIDEO.I
│       ├── XMODE.ASM
│       └── XMODEPG.CPP
└── WWFLAT32/
    ├── AUDIO/
    │   ├── AUDIO.BAK
    │   ├── AUDIO.H
    │   ├── AUDUNCMP.ASM
    │   ├── DIFFTB.INC
    │   ├── FUNCTION.H
    │   ├── INDEXTB.INC
    │   ├── MAKEFILE
    │   ├── NEW/
    │   │   ├── AUDIO.H
    │   │   ├── AUDUNCMP.ASM
    │   │   ├── DIFFTB.INC
    │   │   ├── FUNCTION.H
    │   │   ├── INDEXTB.INC
    │   │   ├── MAKEFILE
    │   │   ├── NYBBTB.INC
    │   │   ├── SOS.H
    │   │   ├── SOSCODEC.ASM
    │   │   ├── SOSCOMP.H
    │   │   ├── SOSDATA.H
    │   │   ├── SOSDEFS.H
    │   │   ├── SOSDW1PS.LIB
    │   │   ├── SOSFNCT.H
    │   │   ├── SOSRES.H
    │   │   ├── SOUND.BAK
    │   │   ├── SOUND.H
    │   │   ├── SOUNDINT.BAK
    │   │   ├── SOUNDINT.CPP
    │   │   ├── SOUNDINT.H
    │   │   ├── SOUNDIO.BAK
    │   │   ├── SOUNDIO.CPP
    │   │   └── SOUNDLCK.CPP
    │   ├── NYBBTB.INC
    │   ├── SOS.H
    │   ├── SOSCODEC.ASM
    │   ├── SOSCOMP.H
    │   ├── SOSDATA.H
    │   ├── SOSDEFS.H
    │   ├── SOSDW1PS.LIB
    │   ├── SOSFNCT.H
    │   ├── SOSRES.H
    │   ├── SOUND.BAK
    │   ├── SOUND.H
    │   ├── SOUNDINT.BAK
    │   ├── SOUNDINT.CPP
    │   ├── SOUNDINT.H
    │   ├── SOUNDIO.BAK
    │   ├── SOUNDIO.CPP
    │   └── SOUNDLCK.CPP
    ├── DESCMGMT/
    │   ├── DESCMGMT.CPP
    │   ├── DESCMGMT.H
    │   ├── FFIXSEL.ASM
    │   ├── FGETCS.ASM
    │   ├── FGETDS.ASM
    │   ├── FGETSEL.ASM
    │   └── MAKEFILE
    ├── DIPTHONG/
    │   ├── DIPTHONG.CPP
    │   ├── DIPTHONG.H
    │   ├── MAKEFILE
    │   └── _DIPTABL.CPP
    ├── EXAMPLE/
    │   ├── DEFINES.H
    │   ├── EXTERNS.H
    │   ├── FUNCTION.H
    │   ├── GLOBALS.CPP
    │   ├── MAIN.CPP
    │   ├── MAKEFILE
    │   ├── STARTUP.CPP
    │   ├── STRUCTS.H
    │   └── WWLIB32.H
    ├── FILE/
    │   ├── DEVICES.ASM
    │   ├── DEVTABLE.ASM
    │   ├── FFIRST.ASM
    │   ├── FGLOB2.CPP
    │   ├── FILE.BAK
    │   ├── FILE.CPP
    │   ├── FILE.H
    │   ├── FILECACH.CPP
    │   ├── FILECHNG.CPP
    │   ├── FILEDATA.CPP
    │   ├── FILEGLOB.CPP
    │   ├── FILEINFO.CPP
    │   ├── FILEINIT.CPP
    │   ├── FILEIO.CPP
    │   ├── FILELIB.CPP
    │   ├── FILESTUB.CPP
    │   ├── FILETEMP.H
    │   ├── FINDFILE.BAK
    │   ├── FINDFILE.CPP
    │   ├── HARDERR.ASM
    │   ├── MAKEFILE
    │   ├── _FILE.BAK
    │   └── _FILE.H
    ├── FONT/
    │   ├── FONT.BAK
    │   ├── FONT.CPP
    │   ├── FONT.H
    │   ├── LOADFONT.BAK
    │   ├── LOADFONT.CPP
    │   ├── MAKEFILE
    │   ├── SETFPAL.ASM
    │   ├── SET_FONT.CPP
    │   ├── TEXTPRNT.ASM
    │   └── TEXTPRNT.BAK
    ├── IFF/
    │   ├── FILEPCX.H
    │   ├── IFF.BAK
    │   ├── IFF.CPP
    │   ├── IFF.H
    │   ├── LCWCOMP.ASM
    │   ├── LCWUNCMP.ASM
    │   ├── LOAD.BAK
    │   ├── LOAD.CPP
    │   ├── LOADPCX.CPP
    │   ├── LOADPICT.BAK
    │   ├── LOADPICT.CPP
    │   ├── MAKEFILE
    │   ├── PACK2PLN.ASM
    │   ├── WRITELBM.CPP
    │   └── WRITEPCX.CPP
    ├── INCLUDE/
    │   ├── AUDIO.H
    │   ├── BUFFER.H
    │   ├── DESCMGMT.H
    │   ├── DIFFTB.INC
    │   ├── DIPTHONG.H
    │   ├── FILE.H
    │   ├── FILEPCX.H
    │   ├── FILETEMP.H
    │   ├── FONT.BAK
    │   ├── FONT.H
    │   ├── FUNCTION.H
    │   ├── GBUFFER.BAK
    │   ├── GBUFFER.H
    │   ├── GBUFFER.INC
    │   ├── IFF.H
    │   ├── INDEXTB.INC
    │   ├── KEYBOARD.H
    │   ├── KEYBOARD.INC
    │   ├── KEYSTRUC.INC
    │   ├── MCGAPRIM.H
    │   ├── MCGAPRIM.INC
    │   ├── MEMFLAG.H
    │   ├── MISC.BAK
    │   ├── MISC.H
    │   ├── MONO.BAK
    │   ├── MONO.H
    │   ├── NYBBTB.INC
    │   ├── PALETTE.BAK
    │   ├── PALETTE.H
    │   ├── PLAYCD.H
    │   ├── SHAPE.H
    │   ├── SHAPE.INC
    │   ├── SOS.H
    │   ├── SOSCOMP.H
    │   ├── SOSDATA.H
    │   ├── SOSDEFS.H
    │   ├── SOSFNCT.H
    │   ├── SOSRES.H
    │   ├── SOUND.H
    │   ├── SOUNDINT.H
    │   ├── STAMP.INC
    │   ├── SVGAPRIM.INC
    │   ├── TILE.H
    │   ├── TIMER.BAK
    │   ├── TIMER.H
    │   ├── VBUFFER.H
    │   ├── VIDEO.H
    │   ├── WINDOW.H
    │   ├── WSA.H
    │   ├── WWLIB32.H
    │   ├── WWMEM.H
    │   ├── WWMEM.INC
    │   ├── WWSTD.H
    │   ├── WWSTD.H.BAK
    │   └── _FILE.H
    ├── KEYBOARD/
    │   ├── KEYBOARD.ASM
    │   ├── KEYBOARD.BAK
    │   ├── KEYBOARD.H
    │   ├── KEYBOARD.INC
    │   ├── KEYIPROT.ASM
    │   ├── KEYIREAL.ASM
    │   ├── KEYIREAL.BAK
    │   ├── KEYIREAL.IBN
    │   ├── KEYSTRUC.INC
    │   ├── MAKEFILE
    │   ├── MOUSE.ASM
    │   ├── NEW/
    │   │   ├── KEYBOARD.ASM
    │   │   ├── KEYBOARD.BAK
    │   │   ├── KEYBOARD.H
    │   │   ├── KEYBOARD.INC
    │   │   ├── KEYIPROT.ASM
    │   │   ├── KEYIREAL.ASM
    │   │   ├── KEYIREAL.BAK
    │   │   ├── KEYIREAL.IBN
    │   │   ├── KEYSTRUC.INC
    │   │   ├── MAKEFILE
    │   │   ├── MOUSE.ASM
    │   │   └── PAGFAULT.ASM
    │   ├── PAGFAULT.ASM
    │   └── X/
    │       ├── KEYBOARD.ASM
    │       ├── KEYBOARD.BAK
    │       ├── KEYBOARD.H
    │       ├── KEYBOARD.INC
    │       ├── KEYIPROT.ASM
    │       ├── KEYIREAL.ASM
    │       ├── KEYIREAL.BAK
    │       ├── KEYIREAL.IBN
    │       ├── KEYSTRUC.INC
    │       ├── MAKEFILE
    │       ├── MOUSE.ASM
    │       └── PAGFAULT.ASM
    ├── LIB/
    │   └── SOSDW1PS.LIB
    ├── MAKEFILE
    ├── MAKE_EXE.MAK
    ├── MAKE_LIB.MAK
    ├── MCGAPRIM/
    │   ├── BITBLIT.ASM
    │   ├── BUFFER.CPP
    │   ├── BUFFER.H
    │   ├── BUFFGLBL.CPP
    │   ├── CLEAR.ASM
    │   ├── DRAWLINE.ASM
    │   ├── DRAWRECT.CPP
    │   ├── DRAWRECT.CPP.BAK
    │   ├── FILLQUAD.ASM
    │   ├── FILLRECT.ASM
    │   ├── GBUFFER.CPP
    │   ├── GBUFFER.CPP.BAK
    │   ├── GBUFFER.H
    │   ├── GBUFFER.INC
    │   ├── GETCLIP.ASM
    │   ├── GETPIX.ASM
    │   ├── MAKEFILE
    │   ├── MCGAPRIM.H
    │   ├── MCGAPRIM.INC
    │   ├── MCGAPRIM.PJT
    │   ├── PUTPIX.ASM
    │   ├── REGIONSZ.CPP
    │   ├── REMAP.ASM
    │   ├── SCALE.ASM
    │   ├── SHADOW.ASM
    │   ├── STAMP.ASM
    │   ├── STAMP.BAK
    │   ├── STAMP.INC
    │   ├── SZREGION.ASM
    │   ├── TOBUFF.ASM
    │   ├── TOPAGE.ASM
    │   ├── TXTPRNT.ASM
    │   ├── VBITBLIT.ASM
    │   ├── VBUFFER.CPP
    │   ├── VBUFFER.H
    │   ├── VCLEAR.ASM
    │   ├── VESA.ASM
    │   ├── VGETPIX.ASM
    │   ├── VLBTOVE.ASM
    │   ├── VPUTPIX.ASM
    │   ├── VSCALE.ASM
    │   ├── VSCLTOVE.ASM
    │   ├── VTOBUFF.ASM
    │   ├── VTOPAGE.ASM
    │   ├── VTXTPRNT.ASM
    │   ├── VVBLIT.ASM
    │   ├── VVETOLB.ASM
    │   └── VVETOSCL.ASM
    ├── MEM/
    │   ├── ALLOC.CPP
    │   ├── ALLOC.CPP.BAK
    │   ├── MAKEFILE
    │   ├── MEM.CPP
    │   ├── MEM.CPP.BAK
    │   ├── MEMFLAG.H
    │   ├── MEM_COPY.ASM
    │   ├── NEWDEL.CPP
    │   ├── OLD/
    │   │   ├── ALLOC.CPP
    │   │   ├── MAKEFILE
    │   │   ├── MEM.CPP
    │   │   ├── MEMFLAG.H
    │   │   ├── MEM_COPY.ASM
    │   │   ├── NEWDEL.CPP
    │   │   ├── WWMEM.H
    │   │   └── WWMEM.INC
    │   ├── WWMEM.H
    │   └── WWMEM.INC
    ├── MISC/
    │   ├── ASM.ASM
    │   ├── ASM.ASM.BAK
    │   ├── CLIPRECT.ASM
    │   ├── CRC.ASM
    │   ├── CRC.IDE
    │   ├── DELAY.CPP
    │   ├── DETPROC.ASM
    │   ├── EXIT.CPP
    │   ├── FACING16.ASM
    │   ├── FACING8.ASM
    │   ├── FACINGFF.ASM
    │   ├── FADING.ASM
    │   ├── FINDARGV.CPP
    │   ├── IRANDOM.CPP
    │   ├── KEYCODE.CPP
    │   ├── KEYCODE.CPP.BAK
    │   ├── LIB.CPP
    │   ├── MAKEFILE
    │   ├── MISC.H
    │   ├── OPSYS.ASM
    │   ├── PROC.ASM
    │   ├── RANDOM.ASM
    │   ├── REVERSE.ASM
    │   ├── SHAKESCR.ASM
    │   ├── VERSION.CPP
    │   ├── WWLIB32.H
    │   └── WWSTD.H
    ├── MONO/
    │   ├── INITMONO.CPP
    │   ├── MAKEFILE
    │   ├── MONO.ASM
    │   ├── MONO.H
    │   └── MONOPRNT.CPP
    ├── PALETTE/
    │   ├── LOADPAL.CPP
    │   ├── MAKEFILE
    │   ├── MORPHPAL.CPP
    │   ├── PAL.ASM
    │   ├── PALETTE.CPP
    │   └── PALETTE.H
    ├── PLAYCD/
    │   ├── GETCD.CPP
    │   ├── GETCD.CPP.BAK
    │   ├── MAKEFILE
    │   ├── PLAYCD.ASM
    │   ├── PLAYCD.H
    │   ├── PLAYCD.H.BAK
    │   └── REDBOOK.CPP
    ├── PROJECT.CFG
    ├── SHAPE/
    │   ├── DRAWSHP.ASM
    │   ├── DS_DN.ASM
    │   ├── DS_DR.ASM
    │   ├── DS_DS.ASM
    │   ├── DS_DSR.ASM
    │   ├── DS_LRS.ASM
    │   ├── DS_LS.ASM
    │   ├── DS_LSRS.ASM
    │   ├── DS_LSS.ASM
    │   ├── DS_RRS.ASM
    │   ├── DS_RS.ASM
    │   ├── DS_RSRS.ASM
    │   ├── DS_RSS.ASM
    │   ├── DS_TABLE.ASM
    │   ├── GETSHAPE.CPP
    │   ├── MAKEFILE
    │   ├── PRIOINIT.CPP
    │   ├── SETSHAPE.ASM
    │   ├── SHAPE.H
    │   └── SHAPE.INC
    ├── SRCDEBUG/
    │   ├── ALLOC.CPP
    │   ├── KEYBOARD.ASM
    │   ├── KEYIPROT.ASM
    │   ├── KEYIREAL.ASM
    │   ├── MEM.CPP
    │   ├── MEM_COPY.ASM
    │   ├── MOUSE.ASM
    │   ├── NEWDEL.CPP
    │   └── PAGFAULT.ASM
    ├── SVGAPRIM/
    │   ├── MAKEFILE
    │   ├── SVGAPRIM.INC
    │   ├── VCLEAR.ASM
    │   ├── VESA.ASM
    │   ├── VGETPIX.ASM
    │   ├── VLBTOVE.ASM
    │   ├── VPUTPIX.ASM
    │   ├── VSCALE.CPP
    │   ├── VSCLTOVE.ASM
    │   ├── VTOBUFF.ASM
    │   ├── VTOPAGE.ASM
    │   ├── VTXTPRNT.ASM
    │   ├── VVBLIT.ASM
    │   ├── VVETOLB.ASM
    │   └── VVETOSCL.CPP
    ├── TILE/
    │   ├── ICONSET.BAK
    │   ├── ICONSET.CPP
    │   ├── MAKEFILE
    │   ├── TILE.H
    │   └── TILE.H.BAK
    ├── TIMER/
    │   ├── MAKEFILE
    │   ├── TIMER.CPP
    │   ├── TIMER.H
    │   ├── TIMERA.ASM
    │   ├── TIMERA.BAK
    │   ├── TIMERDWN.CPP
    │   ├── TIMEREAL.ASM
    │   ├── TIMEREAL.IBN
    │   └── TIMERINI.CPP
    ├── VIDEO/
    │   ├── INITDLAY.CPP
    │   ├── MAKEFILE
    │   ├── VERTBLNK.ASM
    │   ├── VESAHOOK.ASM
    │   ├── VESAINFO.CPP
    │   ├── VESAREAL.ASM
    │   ├── VESAREAL.IBN
    │   ├── VIDEO.CPP
    │   └── VIDEO.H
    ├── WINDOWS/
    │   ├── MAKEFILE
    │   ├── WINDOW.H
    │   ├── WINDOWS.CPP
    │   ├── WINDOWS.CPP.BAK
    │   ├── WINDOWS.H
    │   ├── WINHIDE.CPP
    │   └── WINHIDE.CPP.BAK
    └── WSA/
        ├── MAKEFILE
        ├── WSA.CPP
        ├── WSA.H
        └── XORDELTA.ASM
Download .txt
Showing preview only (410K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (4939 symbols across 896 files)

FILE: CODE/2KEYFRAM.CPP
  type tShapeHeaderType (line 94) | struct tShapeHeaderType{
  function Get_Last_Frame_Length (line 114) | int Get_Last_Frame_Length(void)
  function Reset_Theater_Shapes (line 120) | void Reset_Theater_Shapes (void)
  function Reallocate_Big_Shape_Buffer (line 135) | void Reallocate_Big_Shape_Buffer(void)
  function Disable_Uncompressed_Shapes (line 172) | void Disable_Uncompressed_Shapes (void)
  function Enable_Uncompressed_Shapes (line 193) | void Enable_Uncompressed_Shapes (void)
  function Check_Use_Compressed_Shapes (line 199) | void Check_Use_Compressed_Shapes (void)
  function Build_Frame (line 220) | unsigned long Build_Frame(void const *dataptr, unsigned short framenumbe...
  function Get_Build_Frame_Count (line 496) | unsigned short Get_Build_Frame_Count(void const *dataptr)
  function Get_Build_Frame_X (line 505) | unsigned short Get_Build_Frame_X(void const *dataptr)
  function Get_Build_Frame_Y (line 514) | unsigned short Get_Build_Frame_Y(void const *dataptr)
  function Get_Build_Frame_Width (line 538) | unsigned short Get_Build_Frame_Width(void const *dataptr)
  function Get_Build_Frame_Height (line 562) | unsigned short Get_Build_Frame_Height(void const *dataptr)
  function Get_Build_Frame_Palette (line 571) | bool Get_Build_Frame_Palette(void const * dataptr, void * palette)

FILE: CODE/AADATA.CPP
  function AircraftType (line 385) | AircraftType AircraftTypeClass::From_Name(char const * name)
  function ObjectClass (line 455) | ObjectClass * AircraftTypeClass::Create_One_Of(HouseClass * house) const
  function AircraftTypeClass (line 652) | AircraftTypeClass & AircraftTypeClass::As_Reference(AircraftType aircraft)

FILE: CODE/ABSTRACT.CPP
  function COORDINATE (line 160) | COORDINATE AbstractTypeClass::Coord_Fixup(COORDINATE coord) const

FILE: CODE/ABSTRACT.H
  function class (line 52) | class AbstractClass
  function virtual (line 87) | virtual ~AbstractClass(void) {}
  function virtual (line 92) | virtual char const * Name(void) const {return("");}
  function virtual (line 93) | virtual HousesType Owner(void) const {return HOUSE_NONE;}
  function TARGET (line 94) | TARGET As_Target(void) const {return(Build_Target(RTTI, ID));}
  function RTTIType (line 95) | RTTIType What_Am_I(void) const {return(RTTI);}
  function virtual (line 107) | virtual COORDINATE Center_Coord(void) const {return Coord;}
  function virtual (line 108) | virtual COORDINATE Target_Coord(void) const {return Coord;}
  function DirType (line 114) | DirType Direction(AbstractClass const * object) const {return ::Directio...
  function DirType (line 115) | DirType Direction(COORDINATE coord) const {return ::Direction(Center_Coo...
  function DirType (line 116) | DirType Direction(TARGET target) const {return ::Direction(Center_Coord(...
  function DirType (line 117) | DirType Direction(CELL cell) const {return ::Direction(Coord_Cell(Center...
  function Distance (line 119) | int Distance(COORDINATE coord) const {return ::Distance(Center_Coord(), ...
  function Distance (line 120) | int Distance(AbstractClass const * object) const {return ::Distance(Cent...
  function virtual (line 130) | virtual void AI(void) {}

FILE: CODE/ADATA.CPP
  function AnimTypeClass (line 2357) | AnimTypeClass & AnimTypeClass::As_Reference(AnimType type)

FILE: CODE/ADPCM.CPP
  function sosCODECInitStream (line 27) | void sosCODECInitStream(_SOS_COMPRESS_INFO* info)
  function sosCODECDecompressData (line 34) | unsigned long sosCODECDecompressData(_SOS_COMPRESS_INFO* info, unsigned ...

FILE: CODE/AIRCRAFT.CPP
  function _Counts_As_Civ_Evac (line 116) | static bool _Counts_As_Civ_Evac(ObjectClass const * candidate)
  function COORDINATE (line 1283) | COORDINATE AircraftClass::Sort_Y(void) const
  function BulletClass (line 1488) | BulletClass * AircraftClass::Fire_At(TARGET target, int which)
  function ResultType (line 1555) | ResultType AircraftClass::Take_Damage(int & damage, int distance, Warhea...
  function ActionType (line 2250) | ActionType AircraftClass::What_Action(ObjectClass const * target) const
  function ActionType (line 2313) | ActionType AircraftClass::What_Action(CELL cell) const
  function DirType (line 2351) | DirType AircraftClass::Pose_Dir(void) const
  function TARGET (line 2615) | TARGET AircraftClass::New_LZ(TARGET oldlz) const
  function RadioMessageType (line 2673) | RadioMessageType AircraftClass::Receive_Message(RadioClass * from, Radio...
  function DirType (line 2842) | DirType AircraftClass::Desired_Load_Dir(ObjectClass * object, CELL & mov...
  function MoveType (line 3007) | MoveType AircraftClass::Can_Enter_Cell(CELL cell, FacingType ) const
  function TARGET (line 3053) | TARGET AircraftClass::Good_Fire_Location(TARGET target) const
  function TARGET (line 3475) | TARGET AircraftClass::Good_LZ(void) const
  function DirType (line 3558) | DirType AircraftClass::Fire_Direction(void) const
  function FireErrorType (line 3943) | FireErrorType AircraftClass::Can_Fire(TARGET target, int which) const
  function LayerType (line 4337) | LayerType AircraftClass::In_Which_Layer(void) const

FILE: CODE/AIRCRAFT.H
  function operator (line 63) | operator AircraftType(void) const {return Class->Type;}
  function virtual (line 91) | virtual DirType Turret_Facing(void) const {return(SecondaryFacing.Curren...
  function virtual (line 94) | virtual ObjectTypeClass const & Class_Of(void) const {return *Class;}

FILE: CODE/ALLOC.CPP
  function DPMI_Lock (line 100) | void DPMI_Lock(VOID const *ptr, long const size)
  function DPMI_Unlock (line 145) | void DPMI_Unlock(void const *ptr, long const size)
  type SREGS (line 197) | struct SREGS
  function Free (line 385) | void Free(void const *pointer)
  function Ram_Free (line 540) | long Ram_Free(MemoryFlagType)
  function Heap_Size (line 561) | long Heap_Size(MemoryFlagType )
  function Total_Ram_Free (line 585) | long Total_Ram_Free(MemoryFlagType )

FILE: CODE/ANIM.CPP
  function AnimType (line 76) | AnimType Anim_From_Name(char const * name)
  function Shorten_Attached_Anims (line 110) | void Shorten_Attached_Anims(ObjectClass * obj)
  function COORDINATE (line 140) | COORDINATE AnimClass::Sort_Y(void) const
  function COORDINATE (line 178) | COORDINATE AnimClass::Center_Coord(void) const
  function LayerType (line 860) | LayerType AnimClass::In_Which_Layer(void) const

FILE: CODE/ANIM.H
  function operator (line 61) | operator AnimType(void) const {return Class->Type;}
  function Make_Invisible (line 73) | void Make_Invisible(void) {IsInvisible = true;}
  function virtual (line 76) | virtual bool Can_Place_Here(COORDINATE ) const {return true;}
  function virtual (line 82) | virtual ObjectTypeClass const & Class_Of(void) const {return *Class;}

FILE: CODE/AUDIO.CPP
  function VocType (line 266) | VocType Voc_From_Name(char const * name)
  function Sound_Effect (line 330) | void Sound_Effect(VocType voc, COORDINATE coord, int variation, HousesTy...
  function Sound_Effect (line 393) | int Sound_Effect(VocType voc, fixed volume, int variation, signed short ...
  function Speak (line 643) | void Speak(VoxType voice)
  function Speak_AI (line 669) | void Speak_AI(void)
  function Stop_Speaking (line 733) | void Stop_Speaking(void)
  function Is_Speaking (line 756) | bool Is_Speaking(void)

FILE: CODE/AUDIO.H
  function class (line 43) | class AudioClass {
  function AudioClass (line 67) | inline AudioClass::AudioClass(void)
  function AudioClass (line 75) | inline AudioClass::AudioClass(char const *name, MemoryClass &mem)
  function AudioClass (line 87) | inline AudioClass::~AudioClass(void)

FILE: CODE/B64PIPE.H
  function class (line 48) | class Base64Pipe : public Pipe

FILE: CODE/B64STRAW.H
  function class (line 48) | class Base64Straw : public Straw

FILE: CODE/BAR.H
  function class (line 62) | class ProgressBarClass

FILE: CODE/BASE.CPP
  function BuildingClass (line 264) | BuildingClass * BaseClass::Get_Building(int index) const
  function BaseNodeClass (line 338) | BaseNodeClass * BaseClass::Get_Node(BuildingClass const * obj)
  function BaseNodeClass (line 364) | BaseNodeClass * BaseClass::Get_Node(CELL cell)
  function BaseNodeClass (line 393) | BaseNodeClass * BaseClass::Next_Buildable(StructType type)

FILE: CODE/BASE.H
  function class (line 44) | class BaseNodeClass
  function class (line 62) | class BaseClass

FILE: CODE/BASE64.CPP
  function Base64_Encode (line 143) | int Base64_Encode(void const * source, int slen, void * dest, int dlen)
  function Base64_Decode (line 244) | int Base64_Decode(void const * source, int slen, void * dest, int dlen)

FILE: CODE/BBDATA.CPP
  function BulletTypeClass (line 251) | BulletTypeClass & BulletTypeClass::As_Reference(BulletType type)

FILE: CODE/BDATA.CPP
  function StructType (line 3175) | StructType BuildingTypeClass::From_Name(char const * name)
  function ObjectClass (line 3294) | ObjectClass * BuildingTypeClass::Create_One_Of(HouseClass * house) const
  function BuildingTypeClass (line 3424) | BuildingTypeClass & BuildingTypeClass::As_Reference(StructType type)
  function COORDINATE (line 3806) | COORDINATE BuildingTypeClass::Coord_Fixup(COORDINATE coord) const

FILE: CODE/BENCH.H
  function class (line 62) | class PentiumTimerClass
  function class (line 76) | class Benchmark

FILE: CODE/BFIOFILE.H
  function class (line 48) | class BufferIOFileClass : public RawFileClass

FILE: CODE/BIGCHECK.H
  function class (line 33) | class BigCheckBoxClass : public ToggleClass
  function virtual (line 47) | virtual ~BigCheckBoxClass()
  function Toggle (line 55) | bool	Toggle()

FILE: CODE/BLOWFISH.H
  function class (line 68) | class BlowfishEngine {

FILE: CODE/BLOWPIPE.H
  function class (line 49) | class BlowPipe : public Pipe

FILE: CODE/BLWSTRAW.H
  function class (line 52) | class BlowStraw : public Straw

FILE: CODE/BMP8.CPP
  function bit8 (line 145) | bit8 BMP8::drawBmp(void)

FILE: CODE/BMP8.H
  function class (line 27) | class BMP8

FILE: CODE/BUFF.CPP
  function Buffer (line 161) | Buffer & Buffer::operator = (Buffer const & buffer)

FILE: CODE/BUFF.H
  function class (line 61) | class Buffer {

FILE: CODE/BUFFERX.H
  function class (line 49) | class Transmuter {
  function class (line 73) | class FileTransmuter {
  function class (line 86) | class BufferTransmuter {

FILE: CODE/BUILDING.CPP
  type SAMState (line 113) | enum SAMState {
  function RadioMessageType (line 161) | RadioMessageType BuildingClass::Receive_Message(RadioClass * from, Radio...
  function ResultType (line 1194) | ResultType BuildingClass::Take_Damage(int & damage, int distance, Warhea...
  function DirType (line 2312) | DirType BuildingClass::Turret_Facing(void) const
  function TARGET (line 2338) | TARGET BuildingClass::Greatest_Threat(ThreatType threat) const
  function ActionType (line 2605) | ActionType BuildingClass::What_Action(ObjectClass const * object) const
  function ActionType (line 2684) | ActionType BuildingClass::What_Action(CELL cell) const
  function COORDINATE (line 2760) | COORDINATE BuildingClass::Center_Coord(void) const
  function COORDINATE (line 2786) | COORDINATE BuildingClass::Docking_Coord(void) const
  function FireErrorType (line 2820) | FireErrorType BuildingClass::Can_Fire(TARGET target, int which) const
  function COORDINATE (line 3118) | COORDINATE BuildingClass::Sort_Y(void) const
  function MoveType (line 3162) | MoveType BuildingClass::Can_Enter_Cell(CELL cell, FacingType) const
  function DirType (line 4416) | DirType BuildingClass::Fire_Direction(void) const
  function InfantryType (line 4667) | InfantryType BuildingClass::Crew_Type(void) const
  function CELL (line 4809) | CELL BuildingClass::Find_Exit_Cell(TechnoClass const * techno) const
  function COORDINATE (line 4899) | COORDINATE BuildingClass::Exit_Coord(void) const
  function CELL (line 4928) | CELL BuildingClass::Check_Point(CheckPointType cp) const
  function COORDINATE (line 5173) | COORDINATE BuildingClass::Target_Coord(void) const

FILE: CODE/BUILDING.H
  function class (line 58) | class BuildingClass : public TechnoClass

FILE: CODE/BULLET.CPP
  function COORDINATE (line 825) | COORDINATE BulletClass::Target_Coord(void) const
  function COORDINATE (line 851) | COORDINATE BulletClass::Sort_Y(void) const
  function LayerType (line 876) | LayerType BulletClass::In_Which_Layer(void) const

FILE: CODE/BULLET.H
  function operator (line 85) | operator BulletType(void) const {return Class->Type;}
  function virtual (line 97) | virtual void Assign_Target(TARGET target) {TarCom = target;}
  function virtual (line 99) | virtual ObjectTypeClass const & Class_Of(void) const {return *Class;}

FILE: CODE/CARGO.CPP
  function FootClass (line 144) | FootClass * CargoClass::Detach_Object(void)
  function FootClass (line 175) | FootClass * CargoClass::Attached_Object(void) const

FILE: CODE/CARGO.H
  function class (line 46) | class CargoClass {

FILE: CODE/CARRY.H
  function class (line 42) | class CarryoverClass : public LinkClass {

FILE: CODE/CCDDE.CPP
  function BOOL (line 93) | BOOL CALLBACK DDE_Callback (unsigned char *data, long length)
  function BOOL (line 222) | BOOL DDEServerClass::Callback(unsigned char *data, long length)
  function BOOL (line 399) | BOOL Send_Data_To_DDE_Server (char *data, int length, int packet_type)

FILE: CODE/CCDDE.H
  function class (line 47) | class DDEServerClass {

FILE: CODE/CCFILE.CPP
  function Open_File (line 563) | int __cdecl Open_File(char const * file_name, int mode)
  function Close_File (line 576) | void __cdecl Close_File(int handle)
  function Read_File (line 583) | long __cdecl Read_File(int handle, void * buf, unsigned long bytes)
  function Write_File (line 591) | long __cdecl Write_File(int handle, void const * buf, unsigned long bytes)
  function Find_File (line 599) | int __cdecl Find_File(char const * file_name)
  function Delete_File (line 606) | int __cdecl Delete_File(char const * file_name)
  function Create_File (line 611) | int __cdecl Create_File(char const * file_name)
  function Load_Data (line 616) | unsigned long __cdecl Load_Data(char const * name, void * ptr, unsigned ...
  function File_Size (line 629) | unsigned long __cdecl File_Size(int handle)
  function Write_Data (line 638) | unsigned long __cdecl Write_Data(char const * name, void const * ptr, un...
  function Seek_File (line 644) | unsigned long __cdecl Seek_File(int handle, long offset, int starting)
  function Multi_Drive_Search (line 653) | bool __cdecl Multi_Drive_Search(bool on)
  function WWDOS_Init (line 659) | void __cdecl WWDOS_Init(void)
  function WWDOS_Shutdown (line 663) | void __cdecl WWDOS_Shutdown(void)
  function Find_Disk_Number (line 667) | int __cdecl Find_Disk_Number(char const *)
  function Unfragment_File_Cache (line 689) | void Unfragment_File_Cache(void)

FILE: CODE/CCFILE.H
  function class (line 53) | class CCFileClass : public CDFileClass

FILE: CODE/CCINI.CPP
  function _Scale_To_256 (line 251) | static inline int _Scale_To_256(int val)
  function LEPTON (line 282) | LEPTON CCINIClass::Get_Lepton(char const * section, char const * entry, ...
  function MPHType (line 334) | MPHType CCINIClass::Get_MPHType(char const * section, char const * entry...
  function ArmorType (line 481) | ArmorType CCINIClass::Get_ArmorType(char const * section, char const * e...
  function VocType (line 534) | VocType CCINIClass::Get_VocType(char const * section, char const * entry...
  function AnimType (line 591) | AnimType CCINIClass::Get_AnimType(char const * section, char const * ent...
  function UnitType (line 628) | UnitType CCINIClass::Get_UnitType(char const * section, char const * ent...
  function WeaponType (line 671) | WeaponType CCINIClass::Get_WeaponType(char const * section, char const *...
  function WarheadType (line 728) | WarheadType CCINIClass::Get_WarheadType(char const * section, char const...
  function OverlayType (line 789) | OverlayType CCINIClass::Get_OverlayType(char const * section, char const...
  function BulletType (line 845) | BulletType CCINIClass::Get_BulletType(char const * section, char const *...
  function HousesType (line 909) | HousesType CCINIClass::Get_HousesType(char const * section, char const *...
  function VQType (line 963) | VQType CCINIClass::Get_VQType(char const * section, char const * entry, ...
  function TheaterType (line 1024) | TheaterType CCINIClass::Get_TheaterType(char const * section, char const...
  function TriggerTypeClass (line 1076) | TriggerTypeClass * CCINIClass::Get_TriggerType(char const * section, cha...
  function ThemeType (line 1130) | ThemeType CCINIClass::Get_ThemeType(char const * section, char const * e...
  function SourceType (line 1185) | SourceType CCINIClass::Get_SourceType(char const * section, char const *...
  function CrateType (line 1239) | CrateType CCINIClass::Get_CrateType(char const * section, char const * e...
  function TerrainType (line 1293) | TerrainType CCINIClass::Get_TerrainType(char const * section, char const...

FILE: CODE/CCINI.H
  function class (line 52) | class CCINIClass : public INIClass

FILE: CODE/CCMPATH.CPP
  function Init_MPATH (line 56) | int Init_MPATH(void)
  function Shutdown_MPATH (line 114) | void Shutdown_MPATH(void)
  function Connect_MPATH (line 159) | void Connect_MPATH(void)
  function Destroy_MPATH_Connection (line 348) | void Destroy_MPATH_Connection(int id, int error)

FILE: CODE/CCPTR.H
  function operator (line 55) | operator T * (void) const {
  function Is_Valid (line 70) | bool Is_Valid(void) const {return(ID != -1);}
  function operator (line 72) | bool operator == (CCPtr<T> const & rvalue) const {return(ID == rvalue.ID);}
  function operator (line 73) | bool operator != (CCPtr<T> const & rvalue) const {return(ID != rvalue.ID);}
  function operator (line 75) | bool operator <= (CCPtr<T> const & rvalue) const {return (rvalue > *this);}
  function operator (line 76) | bool operator < (CCPtr<T> const & rvalue) const {return (*this != rvalue...
  function operator (line 77) | bool operator >= (CCPtr<T> const & rvalue) const {return (*this == rvalu...
  function Raw (line 79) | long Raw(void) const {return(ID);}
  function Set_Raw (line 80) | void Set_Raw(long value) {ID = value;}

FILE: CODE/CCTEN.CPP
  function Init_TEN (line 70) | int Init_TEN(void)
  function Shutdown_TEN (line 128) | void Shutdown_TEN(void)
  function Connect_TEN (line 173) | void Connect_TEN(void)
  function Destroy_TEN_Connection (line 361) | void Destroy_TEN_Connection(int id, int error)
  function Debug_Mono (line 449) | void Debug_Mono(void)
  function Send_TEN_Win_Packet (line 484) | void Send_TEN_Win_Packet(void)
  function Send_TEN_Alliance (line 534) | void Send_TEN_Alliance(char *whom, int ally)
  function Send_TEN_Out_Of_Sync (line 570) | void Send_TEN_Out_Of_Sync(void)
  function Send_TEN_Packet_Too_Late (line 594) | void Send_TEN_Packet_Too_Late(void)

FILE: CODE/CDATA.CPP
  function _Watcom_Ugh_Hack (line 2554) | static void _Watcom_Ugh_Hack(void)
  function LandType (line 3002) | LandType TemplateTypeClass::Land_Type(int icon) const
  function TemplateType (line 3052) | TemplateType TemplateTypeClass::From_Name(char const * name)
  function ObjectClass (line 3277) | ObjectClass * TemplateTypeClass::Create_One_Of(HouseClass *) const
  function TemplateTypeClass (line 3315) | TemplateTypeClass & TemplateTypeClass::As_Reference(TemplateType type)
  function COORDINATE (line 3321) | COORDINATE TemplateTypeClass::Coord_Fixup(COORDINATE coord) const

FILE: CODE/CDFILE.CPP
  function harderr_handler (line 98) | int harderr_handler(unsigned int , unsigned int , unsigned int __far *)
  function Is_Disk_Inserted (line 120) | int cdecl Is_Disk_Inserted(int disk)
  function Get_CD_Drive (line 694) | int Get_CD_Drive(void)

FILE: CODE/CDFILE.H
  function class (line 54) | class CDFileClass : public BufferIOFileClass

FILE: CODE/CELL.CPP
  function TechnoClass (line 192) | TechnoClass * CellClass::Cell_Techno(int x, int y) const
  function ObjectClass (line 238) | ObjectClass * CellClass::Cell_Find_Object(RTTIType rtti) const
  function BuildingClass (line 273) | BuildingClass * CellClass::Cell_Building(void) const
  function TerrainClass (line 298) | TerrainClass * CellClass::Cell_Terrain(void) const
  function ObjectClass (line 327) | ObjectClass * CellClass::Cell_Object(int x, int y) const
  function UnitClass (line 823) | UnitClass * CellClass::Cell_Unit(void) const
  function VesselClass (line 846) | VesselClass * CellClass::Cell_Vessel(void) const
  function InfantryClass (line 870) | InfantryClass * CellClass::Cell_Infantry(void) const
  function _Calc_Partial_Window (line 879) | static bool _Calc_Partial_Window(int cellx, int celly, int & drawx, int ...
  function _ocompare (line 923) | static int _ocompare(const void * left, const void * right)
  function COORDINATE (line 1606) | COORDINATE CellClass::Cell_Coord(void) const
  function COORDINATE (line 1794) | COORDINATE CellClass::Closest_Free_Spot(COORDINATE coord, bool any) const
  function CellClass (line 1952) | CellClass const & CellClass::Adjacent_Cell(FacingType face) const

FILE: CODE/CELL.H
  function class (line 49) | class CellClass

FILE: CODE/CHECKBOX.H
  function class (line 43) | class CheckBoxClass : public ToggleClass

FILE: CODE/CHEKLIST.H
  function class (line 47) | class CheckObject
  function class (line 60) | class CheckListClass : public ListClass

FILE: CODE/COLRLIST.H
  function class (line 47) | class ColorListClass : public ListClass

FILE: CODE/COMBAT.CPP
  function Modify_Damage (line 72) | int Modify_Damage(int damage, WarheadType warhead, ArmorType armor, int ...
  function Explosion_Damage (line 162) | void Explosion_Damage(COORDINATE coord, int strength, TechnoClass * sour...
  function AnimType (line 295) | AnimType Combat_Anim(int damage, WarheadType warhead, LandType land)
  function Wide_Area_Damage (line 393) | void Wide_Area_Damage(COORDINATE coord, LEPTON radius, int rawdamage, Te...

FILE: CODE/COMBUF.CPP
  function SendQueueType (line 469) | SendQueueType * CommBufferClass::Get_Send(int index)
  function ReceiveQueueType (line 660) | ReceiveQueueType * CommBufferClass::Get_Receive(int index)
  type CommHdr (line 852) | struct CommHdr {									// this mirrors the CommHeaderType
  type CommHdr (line 990) | struct CommHdr {									// this mirrors the CommHeaderType

FILE: CODE/COMBUF.H
  type SendQueueType (line 61) | typedef struct {
  type ReceiveQueueType (line 76) | typedef struct {
  function class (line 89) | class CommBufferClass

FILE: CODE/COMINIT.H
  function class (line 27) | class ComInit

FILE: CODE/COMPAT.H
  type MenuIndexType (line 81) | typedef enum MenuIndexType {
  type IControl_Type (line 139) | typedef struct {
  function Get_IconSet_MapWidth (line 158) | inline int Get_IconSet_MapWidth(void const * data)
  function Get_IconSet_MapHeight (line 166) | inline int Get_IconSet_MapHeight(void const * data)
  function class (line 182) | class IconsetClass : protected IControl_Type

FILE: CODE/COMQUEUE.CPP
  function SendQueueType (line 331) | SendQueueType * CommQueueClass::Next_Send(void)
  function SendQueueType (line 360) | SendQueueType * CommQueueClass::Get_Send(int index)
  function ReceiveQueueType (line 496) | ReceiveQueueType * CommQueueClass::Next_Receive(void)
  function ReceiveQueueType (line 525) | ReceiveQueueType * CommQueueClass::Get_Receive(int index)
  type CommHdr (line 716) | struct CommHdr {									// this mirrors the CommHeaderType
  type CommHdr (line 850) | struct CommHdr {									// this mirrors the CommHeaderType

FILE: CODE/COMQUEUE.H
  type SendQueueType (line 70) | typedef struct {
  type ReceiveQueueType (line 83) | typedef struct {
  function class (line 94) | class CommQueueClass

FILE: CODE/CONFDLG.H
  function class (line 42) | class ConfirmationClass

FILE: CODE/CONNECT.CPP
  type timeb (line 776) | struct timeb

FILE: CODE/CONNECT.H
  type CommHeaderType (line 121) | typedef struct {
  function class (line 131) | class ConnectionClass

FILE: CODE/CONNMGR.H
  function class (line 74) | class ConnManClass

FILE: CODE/CONQUER.CPP
  class A (line 72) | class A {
  class B (line 78) | class B {
  function Main_Game (line 215) | void Main_Game(int argc, char * argv[])
  function Toggle_Formation (line 953) | void Toggle_Formation(void) {
  function Color_Cycle (line 1524) | void Color_Cycle(void)
  function Call_Back (line 1616) | void Call_Back(void)
  function IPX_Call_Back (line 1692) | void IPX_Call_Back(void)
  function TEN_Call_Back (line 1785) | void TEN_Call_Back(void)
  function MPATH_Call_Back (line 1845) | void MPATH_Call_Back(void)
  function SourceType (line 1950) | SourceType Source_From_Name(char const * name)
  function TheaterType (line 2002) | TheaterType Theater_From_Name(char const * name)
  function FacingType (line 2034) | FacingType KN_To_Facing(int input)
  function Sync_Delay (line 2086) | static void Sync_Delay(void)
  function Map_Edit_Loop (line 2469) | bool Map_Edit_Loop(void)
  function Go_Editor (line 2518) | void Go_Editor(bool flag)
  function MixFileHandler (line 2604) | long MixFileHandler(VQAHandle * vqa, long action, void * buffer, long nb...
  function Rebuild_Interpolated_Palette (line 2706) | void Rebuild_Interpolated_Palette(unsigned char * interpal)
  function Load_Interpolated_Palettes (line 2735) | int Load_Interpolated_Palettes(char const * filename, BOOL add)
  function Free_Interpolated_Palettes (line 2786) | void Free_Interpolated_Palettes(void)
  function Play_Movie (line 2825) | void Play_Movie(char const * name, ThemeType theme, bool clrscrn)
  function Play_Movie (line 2997) | void Play_Movie(VQType name, ThemeType theme, bool clrscrn)
  function PlayMpegMovie (line 3013) | bool PlayMpegMovie(const char* name)
  function MPG_RESPONSE (line 3113) | MPG_RESPONSE far __stdcall MpegCallback(MPG_CMD cmd, LPVOID data, LPVOID...
  function Unselect_All (line 3202) | void Unselect_All(void)
  function Rect (line 3573) | Rect const Shape_Dimensions(void const * shapedata, int shapenum)
  function TechnoTypeClass (line 3685) | TechnoTypeClass const * Fetch_Techno_Type(RTTIType type, int id)
  function VQ_Call_Back (line 3738) | long VQ_Call_Back(unsigned char *, long )
  function VQ_Call_Back (line 3774) | long VQ_Call_Back(unsigned char *, long )
  function Handle_Team (line 3811) | void Handle_Team(int team, int action)
  function Handle_View (line 4096) | void Handle_View(int view, int action)
  function Get_CD_Index (line 4156) | int Get_CD_Index (int cd_drive, int timeout)
  function Get_CD_Index (line 4228) | int Get_CD_Index(int cd_drive, int)
  function Force_CD_Available (line 4341) | bool Force_CD_Available( int cd_desired )				//	ajw
  function Disk_Space_Available (line 5067) | unsigned long Disk_Space_Available(void)
  function Do_Record_Playback (line 5094) | static void Do_Record_Playback(void)
  function CrateType (line 5287) | CrateType Crate_From_Name(char const * name)
  function Owner_From_Name (line 5315) | int Owner_From_Name(char const * text)
  function Shake_The_Screen (line 5348) | void Shake_The_Screen(int shakes)
  function List_Copy (line 5404) | void List_Copy(short const * source, int len, short * dest)
  function Crummy (line 5425) | void Crummy(int crumb1, int crumb2)
  function Is_Counterstrike_Installed (line 5470) | bool Is_Counterstrike_Installed (void)
  function Is_Aftermath_Installed (line 5500) | bool Is_Aftermath_Installed (void)
  function Enable_Secret_Units (line 5529) | void Enable_Secret_Units(void)
  function Force_Scenario_Available (line 5543) | bool Force_Scenario_Available( const char* szName )

FILE: CODE/CONTROL.H
  function class (line 58) | class ControlClass : public GadgetClass

FILE: CODE/COORD.CPP
  function CELL (line 72) | CELL Coord_Cell(COORDINATE coord)
  function Distance (line 101) | int Distance(TARGET target1, TARGET target2)
  function Distance (line 124) | int Distance(COORDINATE coord1, COORDINATE coord2)
  function COORDINATE (line 351) | COORDINATE Coord_Move(COORDINATE start, register DirType dir, unsigned s...
  function COORDINATE (line 390) | COORDINATE Coord_Scatter(COORDINATE coord, unsigned distance, bool lock)
  function Move_Point (line 430) | void Move_Point(short &x, short &y, register DirType dir, unsigned short...
  function Normal_Move_Point (line 570) | void Normal_Move_Point(short &x, short &y, register DirType dir, unsigne...

FILE: CODE/CRATE.H
  function class (line 58) | class CrateClass {

FILE: CODE/CRC.H
  function class (line 64) | class CRCEngine {

FILE: CODE/CRCPIPE.H
  function class (line 49) | class CRCPipe : public Pipe

FILE: CODE/CRCSTRAW.H
  function class (line 49) | class CRCStraw : public Straw

FILE: CODE/CREDITS.H
  function class (line 44) | class CreditClass {

FILE: CODE/CREW.H
  function class (line 46) | class CrewClass

FILE: CODE/CSTRAW.H
  function class (line 51) | class CacheStraw : public Straw

FILE: CODE/DDE.CPP
  function BOOL (line 166) | BOOL	Instance_Class::Enable_Callback( BOOL flag )		// enable or disable ...
  function BOOL (line 189) | BOOL	Instance_Class::Register_Server( BOOL CALLBACK ( *callback_fnc) (LP...
  function BOOL (line 219) | BOOL	Instance_Class::Test_Server_Running( HSZ name )
  function BOOL (line 248) | BOOL	Instance_Class::Open_Poke_Connection( HSZ name )
  function BOOL (line 280) | BOOL	Instance_Class::Close_Poke_Connection( void )
  function BOOL (line 311) | BOOL	Instance_Class::Poke_Server( LPBYTE poke_data, DWORD poke_length )
  function HDDEDATA (line 355) | HDDEDATA CALLBACK Instance_Class::dde_callback(

FILE: CODE/DDE.H
  function class (line 61) | class	Instance_Class {

FILE: CODE/DEBUG.CPP
  function Debug_Key (line 69) | void Debug_Key(unsigned input)
  function Benchmarks (line 405) | static void Benchmarks(MonoClass * mono)
  function Self_Regulate (line 474) | void Self_Regulate(void)

FILE: CODE/DEFINES.H
  type VQType (line 284) | typedef enum VQType {
  type RTTIType (line 398) | typedef enum RTTIType {
  type DiffType (line 439) | typedef enum DiffType {
  type LEPTON (line 506) | typedef unsigned short	LEPTON;
  type LEPTON_COMPOSITE (line 507) | typedef union {
  type COORDINATE (line 520) | typedef unsigned long	COORDINATE;
  type COORD_COMPOSITE (line 521) | typedef union {
  type CELL (line 534) | typedef signed short		CELL;
  type CELL_COMPOSITE (line 536) | typedef union {
  type WAYPOINT (line 556) | typedef int		WAYPOINT;
  type TARGET (line 564) | typedef long	TARGET;
  type TARGET_COMPOSITE (line 568) | typedef union {
  function TARGET (line 582) | inline TARGET Build_Target(RTTIType kind, int value)
  type FearType (line 610) | typedef enum FearType {
  type PCPType (line 626) | typedef enum PCPType {
  type ZoneType (line 637) | typedef enum ZoneType {
  type MZoneType (line 655) | typedef enum MZoneType {
  type StateType (line 677) | typedef enum StateType {
  type UrgencyType (line 692) | typedef enum UrgencyType {
  type StrategyType (line 709) | typedef enum StrategyType {
  type ProdFailType (line 730) | typedef enum ProdFailType {
  type CheckPointType (line 742) | typedef enum CheckPointType {
  type CrateType (line 752) | typedef enum CrateType {
  type SpecialWeaponType (line 782) | typedef enum SpecialWeaponType {
  type MoveType (line 821) | typedef enum MoveType {
  type ThemeType (line 838) | typedef enum ThemeType {
  type ThreatType (line 899) | typedef enum ThreatType {
  type FireErrorType (line 928) | typedef enum FireErrorType {
  type CloakType (line 949) | typedef enum CloakType {
  type VisualType (line 961) | typedef enum VisualType {
  type MissionType (line 976) | typedef enum MissionType {
  type BStateType (line 1013) | typedef enum BStateType {
  type ActionType (line 1033) | typedef enum ActionType {
  type ResultType (line 1075) | typedef enum ResultType {
  type ConcreteEnum (line 1091) | enum ConcreteEnum {
  type MPHType (line 1115) | typedef enum MPHType{
  type HousesType (line 1136) | typedef enum HousesType {
  type PlayerColorType (line 1190) | typedef enum PlayerColorType {
  type RemapType (line 1214) | typedef enum RemapType {
  type ScenarioPlayerType (line 1226) | typedef enum ScenarioPlayerEnum
  type ScenarioDirType (line 1245) | typedef enum ScenarioDirEnum
  type ScenarioVarType (line 1260) | typedef enum ScenarioVarEnum
  type LayerType (line 1280) | typedef enum LayerType {
  type BulletType (line 1298) | typedef enum BulletType {
  type StructType (line 1331) | typedef enum StructType {
  type OverlayType (line 1482) | typedef enum OverlayType {
  type InfantryType (line 1521) | typedef enum InfantryType{
  type UnitType (line 1572) | typedef enum UnitType{
  type VesselType (line 1632) | typedef enum VesselType{
  type AircraftType (line 1669) | typedef enum AircraftType {
  type TemplateType (line 1700) | typedef enum TemplateType {
  type TerrainType (line 2123) | typedef enum TerrainType {
  type SmudgeType (line 2176) | typedef enum SmudgeType {
  type AnimType (line 2205) | typedef enum AnimType {
  type DoType (line 2304) | typedef enum DoType {
  type DoStruct (line 2338) | typedef struct {
  type DoInfoStruct (line 2345) | typedef struct {
  type RadioMessageType (line 2357) | typedef enum RadioMessageType {
  type NeedType (line 2402) | typedef enum NeedType {
  type QuarryType (line 2433) | typedef enum QuarryType {
  type FormationType (line 2457) | typedef enum FormationType {
  type SelectEnum (line 2479) | typedef enum SelectEnum {
  type PipEnum (line 2496) | typedef enum PipEnum
  type MouseType (line 2529) | typedef enum MouseType
  type BoxStyleType (line 2582) | typedef struct {
  type BoxStyleEnum (line 2589) | typedef enum BoxStyleEnum {
  type WarheadType (line 2606) | typedef enum WarheadType{
  type WeaponType (line 2630) | typedef enum WeaponType {
  type ArmorType (line 2697) | typedef enum ArmorType {
  type DMonoType (line 2712) | typedef enum DMonoType {
  type BenchType (line 2725) | typedef enum BenchType {
  type TextPrintType (line 2792) | typedef enum TextPrintType {
  type LandType (line 2855) | typedef enum LandType {
  type TheaterType (line 2875) | typedef enum TheaterType {
  type TheaterDataType (line 2891) | typedef struct {
  type BSizeType (line 2903) | typedef enum BSizeType {
  type MarkType (line 2927) | typedef enum MarkType {
  type WindowNumberType (line 2942) | typedef enum WindowNumberType {
  type FacingType (line 2958) | typedef enum FacingType {
  function FacingType (line 2974) | inline FacingType operator + (FacingType f1, FacingType f2)
  function FacingType (line 2978) | inline FacingType operator + (FacingType f1, int f2)
  function FacingType (line 2983) | inline FacingType operator - (FacingType f1, FacingType f2)
  function FacingType (line 2987) | inline FacingType operator - (FacingType f1, int f2)
  function FacingType (line 2992) | inline FacingType operator += (FacingType & f1, FacingType f2)
  function FacingType (line 2997) | inline FacingType operator += (FacingType & f1, int f2)
  function operator (line 3003) | inline int operator * (FacingType f1, FacingType f2)
  type DirType (line 3010) | typedef enum DirType {
  function DirType (line 3024) | inline DirType operator + (DirType f1, DirType f2)
  function DirType (line 3028) | inline DirType operator + (DirType f1, int f2)
  type SpeedType (line 3060) | typedef enum SpeedType {
  type VocType (line 3077) | typedef enum VocType{
  type VoxType (line 3271) | typedef enum VoxType{
  type SourceType (line 3404) | typedef enum SourceType {
  type RemapControlType (line 3421) | typedef struct RemapControlType
  type GroundType (line 3443) | typedef struct {
  type PathType (line 3452) | typedef struct {
  type WaypointType (line 3467) | typedef enum WaypointEnum
  type KeyFrameType (line 3481) | typedef enum {
  type NewConfigType (line 3494) | typedef struct {
  type SpecialDialogType (line 3511) | typedef enum {
  type CCPaletteType (line 3518) | typedef enum {
  type OptionControlType (line 3529) | typedef enum OptionControlType {

FILE: CODE/DESCDLG.H
  function class (line 42) | class DescriptionClass

FILE: CODE/DIAL8.CPP
  function DirType (line 292) | DirType Dial8Class::Get_Direction(void) const

FILE: CODE/DIAL8.H
  function class (line 39) | class Dial8Class : public ControlClass

FILE: CODE/DIALOG.CPP
  function Dialog_Box (line 74) | void Dialog_Box(int x, int y, int w, int h)
  function Draw_Box (line 193) | void Draw_Box(int x, int y, int w, int h, BoxStyleEnum up, bool filled)
  function Format_Window_String (line 258) | int Format_Window_String(char * string, int maxlinelen, int & width, int...
  function Window_Box (line 337) | void Window_Box(WindowNumberType window, BoxStyleEnum style)
  function Simple_Text_Print (line 395) | void Simple_Text_Print(char const * text, unsigned x, unsigned y, RemapC...
  function Fancy_Text_Print (line 665) | void Fancy_Text_Print(int text, unsigned x, unsigned y, RemapControlType...
  function Fancy_Text_Print (line 722) | void Fancy_Text_Print(char const * text, unsigned x, unsigned y, RemapCo...
  function Conquer_Clip_Text_Print (line 782) | void Conquer_Clip_Text_Print(char const * text, unsigned x, unsigned y, ...
  function Plain_Text_Print (line 881) | void Plain_Text_Print(int text, unsigned x, unsigned y, unsigned fore, u...
  function Plain_Text_Print (line 925) | void Plain_Text_Print(char const * text, unsigned x, unsigned y, unsigne...
  function Draw_Caption (line 977) | void Draw_Caption(int text, int x, int y, int w)
  function Draw_Caption (line 983) | void Draw_Caption(char const * text, int x, int y, int w)

FILE: CODE/DIBFILE.CPP
  function HDIB (line 102) | HDIB FAR LoadDIB(LPSTR lpFileName)
  function WORD (line 164) | WORD FAR SaveDIB(HDIB hDib, LPSTR lpFileName)
  function WORD (line 291) | WORD FAR DestroyDIB(HDIB hDib)
  function HANDLE (line 332) | HANDLE ReadDIBFile(int hFile)
  function BOOL (line 466) | BOOL MyRead(int hFile, LPSTR lpBuffer, DWORD dwSize)
  function DWORD (line 505) | DWORD PASCAL MyWrite(int iFileHandle, VOID FAR *lpBuffer, DWORD dwBytes)
  function HDIB (line 532) | HDIB LoadDIB_FromMemory( const unsigned char* pData, DWORD dwBitsSize )

FILE: CODE/DIBUTIL.CPP
  function HDIB (line 101) | HDIB FAR CreateDIB(DWORD dwWidth, DWORD dwHeight, WORD wBitCount)
  function LPSTR (line 193) | LPSTR FAR FindDIBBits(LPCSTR lpDIB)
  function DWORD (line 224) | DWORD FAR DIBWidth(LPCSTR lpDIB)
  function DWORD (line 267) | DWORD FAR DIBHeight(LPCSTR lpDIB)
  function WORD (line 311) | WORD FAR PaletteSize(LPCSTR lpDIB)
  function WORD (line 347) | WORD FAR DIBNumColors(LPCSTR lpDIB)
  function HPALETTE (line 420) | HPALETTE FAR CreateDIBPalette(HDIB hDIB)
  function HBITMAP (line 562) | HBITMAP FAR DIBToBitmap(HDIB hDIB, HPALETTE hPal)
  function HDIB (line 638) | HDIB FAR BitmapToDIB(HBITMAP hBitmap, HPALETTE hPal)
  function PalEntriesOnDevice (line 800) | int FAR PalEntriesOnDevice(HDC hDC)
  function HPALETTE (line 848) | HPALETTE FAR GetSystemPalette(void)
  function HANDLE (line 926) | HANDLE AllocRoomForDIB(BITMAPINFOHEADER bi, HBITMAP hBitmap)
  function HDIB (line 1025) | HDIB FAR ChangeDIBFormat(HDIB hDIB, WORD wBitCount, DWORD dwCompression)
  function HDIB (line 1198) | HDIB FAR ChangeBitmapFormat(HBITMAP  hBitmap,

FILE: CODE/DISPLAY.CPP
  function CELL (line 834) | CELL DisplayClass::Set_Cursor_Pos(CELL pos)
  function CELL (line 1134) | CELL DisplayClass::Click_Cell_Calc(int x, int y) const
  function ObjectClass (line 1617) | ObjectClass * DisplayClass::Cell_Object(CELL cell, int x, int y) const
  function ObjectClass (line 2261) | ObjectClass * DisplayClass::Next_Object(ObjectClass * object) const
  function ObjectClass (line 2301) | ObjectClass * DisplayClass::Prev_Object(ObjectClass * object)  const
  function COORDINATE (line 2343) | COORDINATE DisplayClass::Pixel_To_Coord(int x, int y) const
  function CELL (line 2397) | CELL DisplayClass::Calculated_Cell(SourceType dir, WAYPOINT waypoint, CE...
  function COORDINATE (line 3999) | COORDINATE DisplayClass::Closest_Free_Spot(COORDINATE coord, bool any) c...

FILE: CODE/DISPLAY.H
  function class (line 63) | class DisplayClass: public MapClass

FILE: CODE/DOOR.H
  function class (line 41) | class DoorClass

FILE: CODE/DPMI.H
  function class (line 49) | class DOSSegmentClass {
  function DOSSegmentClass (line 106) | inline DOSSegmentClass::DOSSegmentClass(void)
  function DOSSegmentClass (line 111) | inline DOSSegmentClass::~DOSSegmentClass(void)
  function Copy_Word_To (line 115) | inline void DOSSegmentClass::Copy_Word_To(short data, int dest)
  function Copy_Byte_To (line 120) | inline void DOSSegmentClass::Copy_Byte_To(char data, int dest)
  function Copy_DWord_To (line 125) | inline void DOSSegmentClass::Copy_DWord_To(long data, int dest)
  function Assign (line 130) | inline void DOSSegmentClass::Assign(unsigned short segment, long)
  function DOSSegmentClass (line 135) | inline DOSSegmentClass::DOSSegmentClass(unsigned short segment, long)
  function Copy_To (line 140) | inline void DOSSegmentClass::Copy_To(void *source, int dest, int size)
  function Copy_From (line 145) | inline void DOSSegmentClass::Copy_From(void *dest, int source, int size)
  function Copy (line 150) | inline void DOSSegmentClass::Copy(DOSSegmentClass &src, int soffset, DOS...
  function Copy_Word_From (line 154) | inline short DOSSegmentClass::Copy_Word_From(int source)
  function Copy_Byte_From (line 159) | inline char DOSSegmentClass::Copy_Byte_From(int source)
  function Copy_DWord_From (line 164) | inline long DOSSegmentClass::Copy_DWord_From(int source)
  function Get_Selector (line 169) | inline unsigned int DOSSegmentClass::Get_Selector(void)

FILE: CODE/DRIVE.CPP
  function test (line 65) | void test(void)
  function COORDINATE (line 525) | COORDINATE DriveClass::Smooth_Turn(COORDINATE adj, DirType & dir)

FILE: CODE/DRIVE.H
  function class (line 47) | class DriveClass : public FootClass

FILE: CODE/DROP.CPP
  function DropListClass (line 64) | DropListClass & DropListClass::Add(LinkClass & object)
  function DropListClass (line 70) | DropListClass & DropListClass::Add_Tail(LinkClass & object)
  function DropListClass (line 76) | DropListClass & DropListClass::Add_Head(LinkClass & object)
  function DropListClass (line 82) | DropListClass * DropListClass::Remove(void)
  function DropListClass (line 166) | DropListClass & DropListClass::operator = (DropListClass const & list)

FILE: CODE/DROP.H
  function class (line 44) | class DropListClass : public EditClass {
  function virtual (line 106) | virtual ~TDropListClass(void) {}
  function T (line 108) | T operator [] (int index) const {return(List[index]);}
  function virtual (line 124) | virtual int Count(void) const {return(List.Count());}
  function virtual (line 125) | virtual T Get_Item(int index) const {return(List.Get_Item(index));}

FILE: CODE/EDIT.H
  function class (line 41) | class EditClass : public ControlClass
  function virtual (line 58) | virtual char * Get_Text(void) {return(String);}
  function Set_Color (line 59) | void Set_Color (RemapControlType * color) { Color = color; }
  function Set_Read_Only (line 61) | void Set_Read_Only(int rdonly) {IsReadOnly = rdonly;}

FILE: CODE/EGOS.CPP
  function Set_Pal (line 316) | void Set_Pal(char *palette)
  function Slide_Show (line 349) | void Slide_Show (int slide, int frame)
  function Show_Who_Was_Responsible (line 455) | void Show_Who_Was_Responsible (void)

FILE: CODE/EGOS.H
  function class (line 45) | class EgoClass {

FILE: CODE/ENDING.CPP
  function GDI_Ending (line 40) | void GDI_Ending(void)
  function Nod_Ending (line 73) | void Nod_Ending(void)

FILE: CODE/EVENT.H
  function class (line 49) | class EventClass

FILE: CODE/EXPAND.CPP
  function Expansion_CS_Present (line 64) | bool Expansion_CS_Present(void)
  function Expansion_AM_Present (line 86) | bool Expansion_AM_Present(void)
  type EObjectClass (line 275) | struct EObjectClass
  class EListClass (line 289) | class EListClass : public ListClass
    method EListClass (line 292) | EListClass(int id, int x, int y, int w, int h, TextPrintType flags, vo...
    method Add_Object (line 295) | virtual int Add_Object(EObjectClass * obj) {
    method EObjectClass (line 298) | virtual EObjectClass * Get_Object(int index) const {
    method EObjectClass (line 301) | virtual EObjectClass * Current_Object(void) {
    method Add_Item (line 309) | virtual int Add_Item(char const * text) {return(ListClass::Add_Item(te...
    method Add_Item (line 310) | virtual int Add_Item(int text) {return(ListClass::Add_Item(text));}

FILE: CODE/EXTERNS.H
  type MixFileClass (line 65) | typedef MixFileClass<CCFileClass>	MFCD;

FILE: CODE/FACE.CPP
  function DirType (line 65) | DirType Desired_Facing8(int x1, int y1, int x2, int y2)
  function DirType (line 150) | DirType Desired_Facing256(int srcx, int srcy, int dstx, int dsty)

FILE: CODE/FACE.H
  type DirType (line 42) | typedef enum DirType {
  function DirType (line 56) | inline DirType operator + (DirType f1, DirType f2)
  function DirType (line 60) | inline DirType operator + (DirType f1, int f2)
  function DirType (line 64) | inline DirType operator - (DirType f1, DirType f2)
  function DirType (line 68) | inline DirType operator - (DirType f1, int f2)

FILE: CODE/FACING.H
  function class (line 47) | class FacingClass
  function DirType (line 56) | DirType Current(void) const {return(CurrentFacing);}
  function DirType (line 57) | DirType Desired(void) const {return(DesiredFacing);}
  function Set (line 62) | void Set(DirType facing) {
  function DirType (line 67) | DirType Get(void) const { return CurrentFacing; }
  function Is_Rotating (line 69) | int Is_Rotating(void) const {return (DesiredFacing != CurrentFacing);}
  function Difference (line 70) | int Difference(void) const {return (int)(signed char)((int)DesiredFacing...
  function Difference (line 71) | int Difference(DirType facing) const {return (int)(signed char)((int)fac...

FILE: CODE/FACTORY.CPP
  function TechnoClass (line 575) | TechnoClass * FactoryClass::Get_Object(void) const

FILE: CODE/FACTORY.H
  function class (line 43) | class FactoryClass : private StageClass

FILE: CODE/FAKESOCK.H
  function class (line 45) | class TcpipManagerClass {

FILE: CODE/FIELD.H
  function class (line 56) | class FieldClass {

FILE: CODE/FILEPCX.H
  type RGB (line 48) | typedef	struct {
  type PCX_HEADER (line 54) | typedef	struct	{

FILE: CODE/FINDPATH.CPP
  function FacingType (line 131) | inline FacingType Opposite(FacingType face)
  function FacingType (line 137) | inline static FacingType Next_Direction(FacingType facing, FacingType dir)
  function Point_Relative_To_Line (line 191) | int Point_Relative_To_Line(int x, int z, int x1, int z1, int x2, int z2)
  function PathType (line 435) | PathType * FootClass::Find_Path(CELL dest, FacingType * final_moves, int...
  function CELL (line 1206) | CELL FootClass::Safety_Point(CELL src, CELL dst, int start, int max)

FILE: CODE/FIXED.H
  function class (line 84) | class fixed
  function fixed (line 117) | const fixed operator * (fixed const & rvalue) const {fixed temp = *this;...
  function operator (line 118) | const int operator * (int rvalue) const {return ((((unsigned)Data.Raw * ...
  function fixed (line 120) | const fixed operator / (fixed const & rvalue) const {fixed temp = *this;...
  function operator (line 121) | const int operator / (int rvalue) const {if (rvalue) return(((unsigned)D...
  function fixed (line 123) | const fixed operator + (fixed const & rvalue) const {fixed temp = *this;...
  function operator (line 124) | const int operator + (int rvalue) const {return((((unsigned)Data.Raw+(25...
  function fixed (line 126) | const fixed operator - (fixed const & rvalue) const {fixed temp = *this;...
  function operator (line 127) | const int operator - (int rvalue) const {return((((unsigned)Data.Raw+(25...
  function fixed (line 134) | const fixed operator >> (unsigned rvalue) const {fixed temp = *this;temp...
  function fixed (line 135) | const fixed operator << (unsigned rvalue) const {fixed temp = *this;temp...
  function operator (line 140) | bool operator == (fixed const & rvalue) const {return(Data.Raw == rvalue...
  function operator (line 141) | bool operator != (fixed const & rvalue) const {return(Data.Raw != rvalue...
  function operator (line 142) | bool operator < (fixed const & rvalue) const {return(Data.Raw < rvalue.D...
  function operator (line 143) | bool operator > (fixed const & rvalue) const {return(Data.Raw > rvalue.D...
  function operator (line 144) | bool operator <= (fixed const & rvalue) const {return(Data.Raw <= rvalue...
  function operator (line 145) | bool operator >= (fixed const & rvalue) const {return(Data.Raw >= rvalue...
  function operator (line 146) | bool operator ! (void) const {return(Data.Raw == 0);}
  function operator (line 151) | bool operator < (int rvalue) const {return(Data.Raw < (rvalue*256));}
  function operator (line 152) | bool operator > (int rvalue) const {return(Data.Raw > (rvalue*256));}
  function operator (line 153) | bool operator <= (int rvalue) const {return(Data.Raw <= (rvalue*256));}
  function operator (line 154) | bool operator >= (int rvalue) const {return(Data.Raw >= (rvalue*256));}
  function operator (line 155) | bool operator == (int rvalue) const {return(Data.Raw == (rvalue*256));}
  function operator (line 156) | bool operator != (int rvalue) const {return(Data.Raw != (rvalue*256));}
  function operator (line 166) | bool operator > (unsigned lvalue, fixed const & rvalue) {return((lvalue*...
  function operator (line 168) | bool operator >= (unsigned lvalue, fixed const & rvalue) {return((lvalue...
  function operator (line 170) | bool operator != (unsigned lvalue, fixed const & rvalue) {return((lvalue...
  function Round_Up (line 179) | void Round_Up(void) {Data.Raw += (unsigned short)(256-1);Data.Composite....
  function Round_Down (line 180) | void Round_Down(void) {Data.Composite.Fraction = 0;}
  function Round (line 181) | void Round(void) {if (Data.Composite.Fraction >= 256/2) Round_Up();Round...
  function Saturate (line 182) | void Saturate(unsigned capvalue) {if (Data.Raw > (capvalue*256)) Data.Ra...
  function Saturate (line 183) | void Saturate(fixed const & capvalue) {if (*this > capvalue) *this = cap...
  function Sub_Saturate (line 184) | void Sub_Saturate(unsigned capvalue) {if (Data.Raw >= (capvalue*256)) Da...
  function Sub_Saturate (line 185) | void Sub_Saturate(fixed const & capvalue) {if (*this >= capvalue) Data.R...
  function Inverse (line 186) | void Inverse(void) {*this = fixed(1) / *this;}
  function friend (line 192) | friend const fixed Round_Up(fixed const & value) {fixed temp = value; te...
  function friend (line 193) | friend const fixed Round_Down(fixed const & value) {fixed temp = value; ...
  function friend (line 194) | friend const fixed Round(fixed const & value) {fixed temp = value; temp....
  function friend (line 195) | friend const fixed Saturate(fixed const & value, unsigned capvalue) {fix...
  function friend (line 196) | friend const fixed Saturate(fixed const & value, fixed const & capvalue)...
  function friend (line 197) | friend const fixed Sub_Saturate(fixed const & value, unsigned capvalue) ...
  function friend (line 198) | friend const fixed Sub_Saturate(fixed const & value, fixed const & capva...
  function friend (line 199) | friend const fixed Inverse(fixed const & value) {fixed temp = value;temp...

FILE: CODE/FLASHER.H
  function class (line 41) | class FlasherClass {

FILE: CODE/FLY.CPP
  function ImpactType (line 62) | ImpactType FlyClass::Physics(COORDINATE & coord, DirType facing)

FILE: CODE/FLY.H
  type ImpactType (line 41) | typedef enum ImpactType {
  function class (line 51) | class FlyClass {

FILE: CODE/FOOT.CPP
  function COORDINATE (line 795) | COORDINATE FootClass::Sort_Y(void) const
  function ResultType (line 1089) | ResultType FootClass::Take_Damage(int & damage, int distance, WarheadTyp...
  function RadioMessageType (line 1558) | RadioMessageType FootClass::Receive_Message(RadioClass * from, RadioMess...
  function TARGET (line 1897) | TARGET FootClass::Greatest_Threat(ThreatType method) const
  function MoveType (line 2060) | MoveType FootClass::Can_Enter_Cell(CELL , FacingType) const
  function COORDINATE (line 2156) | COORDINATE FootClass::Likely_Coord(void) const
  function CELL (line 2185) | CELL FootClass::Adjust_Dest(CELL cell) const

FILE: CODE/FOOT.H
  function class (line 54) | class FootClass :	public TechnoClass

FILE: CODE/FTIMER.H
  type NoInitClass (line 87) | struct NoInitClass {
  function const (line 225) | unsigned long BasicTimerClass<T>::operator () (void) const
  function Value (line 317) | unsigned long TTimerClass<T>::Value(void) const
  function const (line 373) | unsigned long TTimerClass<T>::operator () (void) const
  function Value (line 562) | unsigned long CDTimerClass<T>::Value(void) const
  function const (line 626) | unsigned long CDTimerClass<T>::operator () (void) const

FILE: CODE/FUNCTION.H
  function class (line 156) | class BitmapClass
  function class (line 167) | class TPoint2D
  type NoInitClass (line 190) | struct NoInitClass {
  type TLucentType (line 242) | typedef struct {
  function Target_Legal (line 937) | inline bool Target_Legal(TARGET target) {return(target != TARGET_NONE);}

FILE: CODE/FUSE.H
  function class (line 46) | class FuseClass {
  function COORDINATE (line 87) | inline COORDINATE FuseClass::Fuse_Target(void)

FILE: CODE/GADGET.CPP
  function GadgetClass (line 284) | GadgetClass * GadgetClass::Remove(void)
  function GadgetClass (line 306) | GadgetClass * GadgetClass::Get_Next(void) const
  function GadgetClass (line 327) | GadgetClass * GadgetClass::Get_Prev(void) const
  function KeyNumType (line 473) | KeyNumType GadgetClass::Input(void)
  function ControlClass (line 684) | ControlClass * GadgetClass::Extract_Gadget(unsigned id)

FILE: CODE/GADGET.H
  function class (line 99) | class GadgetClass : public LinkClass
  function LinkClass (line 115) | GadgetClass(NoInitClass const & x) : LinkClass(x) {}
  function GadgetClass (line 116) | GadgetClass(void) {}
  function virtual (line 127) | virtual void Flag_List_To_Redraw(void) {LastList = 0;}
  function Get_ID (line 137) | virtual unsigned Get_ID(void) const {return 0;}
  function virtual (line 144) | virtual bool Is_To_Redraw(void) {return (IsToRepaint);}
  function Set_Color_Scheme (line 155) | static void Set_Color_Scheme(RemapControlType *scheme)
  function RemapControlType (line 158) | static RemapControlType * Get_Color_Scheme(void)

FILE: CODE/GAMEDLG.H
  function class (line 43) | class GameControlsClass

FILE: CODE/GAUGE.H
  function class (line 41) | class GaugeClass : public ControlClass
  function class (line 93) | class TriColorGaugeClass : public GaugeClass

FILE: CODE/GETCPU.CPP
  function Get_CPU_Type (line 81) | void Get_CPU_Type(int & cpu_type, bool & mmx, char * vendor_id, int vend...

FILE: CODE/GOPTIONS.H
  function class (line 45) | class GameOptionsClass : public OptionsClass {

FILE: CODE/GSCREEN.H
  function class (line 44) | class GScreenClass

FILE: CODE/HDATA.CPP
  function HousesType (line 424) | HousesType HouseTypeClass::From_Name(char const * name)
  function HouseTypeClass (line 471) | HouseTypeClass & HouseTypeClass::As_Reference(HousesType house)

FILE: CODE/HEAP.H
  function class (line 50) | class FixedHeapClass
  function virtual (line 122) | virtual ~TFixedHeapClass(void) {}
  function virtual (line 125) | virtual int ID(T const * pointer) const {return FixedHeapClass::ID(point...
  function virtual (line 126) | virtual T * Alloc(void) {return (T*)FixedHeapClass::Allocate();}
  function virtual (line 127) | virtual int Free(T * pointer) {return(FixedHeapClass::Free(pointer));}
  function T (line 130) | T const & operator[](int index) const {return *(T*)(((char *)Buffer) + (...
  function class (line 140) | class FixedIHeapClass : public FixedHeapClass
  function virtual (line 178) | virtual ~TFixedIHeapClass(void) {}
  function virtual (line 180) | virtual int ID(T const * pointer) const {return FixedIHeapClass::ID(poin...
  function virtual (line 181) | virtual int Logical_ID(T const * pointer) const {return(FixedIHeapClass:...
  function virtual (line 182) | virtual int Logical_ID(int id) const {return(FixedIHeapClass::Logical_ID...
  function virtual (line 183) | virtual T * Alloc(void) {return (T*)FixedIHeapClass::Allocate();}
  function virtual (line 184) | virtual int Free(T * pointer) {return FixedIHeapClass::Free(pointer);}
  function virtual (line 185) | virtual int Free(void * pointer) {return FixedIHeapClass::Free(pointer);}
  function virtual (line 191) | virtual T * Ptr(int index) const {return (T*)FixedIHeapClass::ActivePoin...
  function virtual (line 192) | virtual T * Raw_Ptr(int index) {return (T*)((*this)[index]);}

FILE: CODE/HELP.H
  function class (line 45) | class HelpClass: public TabClass

FILE: CODE/HOUSE.CPP
  function fixed (line 201) | fixed HouseClass::Tiberium_Fraction(void) const
  function HouseClass (line 227) | HouseClass * HouseClass::As_Pointer(HousesType house)
  function DiffType (line 278) | DiffType HouseClass::Assign_Handicap(DiffType handicap)
  function TeamTypeClass (line 2317) | TeamTypeClass const * HouseClass::Suggested_New_Team(bool alertcheck)
  function ProdFailType (line 2394) | ProdFailType HouseClass::Begin_Production(RTTIType type, int id)
  function ProdFailType (line 2454) | ProdFailType HouseClass::Suspend_Production(RTTIType type)
  function ProdFailType (line 2499) | ProdFailType HouseClass::Abandon_Production(RTTIType type)
  function TechnoTypeClass (line 3253) | TechnoTypeClass const * HouseClass::Suggest_New_Object(RTTIType objectty...
  function fixed (line 4148) | fixed HouseClass::Power_Fraction(void) const
  function BuildingTypeClass (line 4261) | BuildingTypeClass const * HouseClass::Suggest_New_Building(void) const
  function BuildingClass (line 4293) | BuildingClass * HouseClass::Find_Building(StructType type, ZoneType zone...
  function COORDINATE (line 4335) | COORDINATE HouseClass::Find_Build_Location(BuildingClass * building) const
  function UrgencyType (line 4877) | UrgencyType HouseClass::Check_Build_Power(void) const
  function UrgencyType (line 4907) | UrgencyType HouseClass::Check_Build_Defense(void) const
  function UrgencyType (line 4920) | UrgencyType HouseClass::Check_Build_Offense(void) const
  function UrgencyType (line 4936) | UrgencyType HouseClass::Check_Attack(void) const
  function UrgencyType (line 4950) | UrgencyType HouseClass::Check_Build_Income(void) const
  function UrgencyType (line 4964) | UrgencyType HouseClass::Check_Fire_Sale(void) const
  function UrgencyType (line 4979) | UrgencyType HouseClass::Check_Build_Engineer(void) const
  function UrgencyType (line 4996) | UrgencyType HouseClass::Check_Raise_Money(void) const
  function UrgencyType (line 5015) | UrgencyType HouseClass::Check_Lower_Power(void) const
  function UrgencyType (line 5032) | UrgencyType HouseClass::Check_Raise_Power(void) const
  function ZoneType (line 6618) | ZoneType HouseClass::Which_Zone(COORDINATE coord) const
  function ZoneType (line 6651) | ZoneType HouseClass::Which_Zone(ObjectClass const * object) const
  function ZoneType (line 6675) | ZoneType HouseClass::Which_Zone(CELL cell) const
  function CELL (line 6797) | CELL HouseClass::Zone_Cell(ZoneType zone) const
  function CELL (line 6841) | CELL HouseClass::Where_To_Go(FootClass const * object) const
  function TARGET (line 6876) | TARGET HouseClass::Find_Juicy_Target(COORDINATE coord) const
  function FactoryClass (line 6945) | FactoryClass * HouseClass::Fetch_Factory(RTTIType rtti) const
  function CELL (line 7625) | CELL HouseClass::Find_Cell_In_Zone(TechnoClass const * techno, ZoneType ...
  function CELL (line 7692) | CELL HouseClass::Random_Cell_In_Zone(ZoneType zone) const

FILE: CODE/HOUSE.H
  function class (line 59) | class HouseStaticClass {
  function class (line 111) | class HouseClass {
  function QuantityB (line 890) | int QuantityB(int index) {return(BQuantity[index]);}
  function QuantityU (line 892) | int QuantityU(int index) {
  function QuantityI (line 896) | int QuantityI(int index) {
  function QuantityA (line 900) | int QuantityA(int index) {return(AQuantity[index]);}
  function QuantityV (line 901) | int QuantityV(int index) {
  function QuantityU (line 906) | int QuantityU(int index) {return(UQuantity[index]);}
  function QuantityI (line 907) | int QuantityI(int index) {return(IQuantity[index]);}
  function QuantityA (line 908) | int QuantityA(int index) {return(AQuantity[index]);}
  function QuantityV (line 909) | int QuantityV(int index) {return(VQuantity[index]);}

FILE: CODE/HSV.H
  function class (line 50) | class HSVClass

FILE: CODE/ICONLIST.CPP
  function IconList_ItemExtras (line 617) | const IconList_ItemExtras* IconListClass::Get_ItemExtras( int index ) const
  function RemapControlType (line 658) | RemapControlType* IconListClass::Get_Item_Color( int index )
  function Format_Window_String_New (line 789) | int Format_Window_String_New( const char* string, int maxlinelen, int& w...
  function CC_Draw_DIB (line 863) | void CC_Draw_DIB( const char* pDIB, int xDest, int yDest, int iWidth, Wi...

FILE: CODE/ICONLIST.H
  type ICONKIND (line 38) | enum ICONKIND
  type FIXEDICON (line 44) | struct FIXEDICON		//	For putting icons in list entries at a specific fix...
  type IconList_ItemExtras (line 53) | struct IconList_ItemExtras
  function class (line 77) | class IconListClass : public ListClass

FILE: CODE/IDATA.CPP
  function ObjectClass (line 1072) | ObjectClass * InfantryTypeClass::Create_One_Of(HouseClass * house) const
  function InfantryType (line 1215) | InfantryType InfantryTypeClass::From_Name(char const * name)
  function InfantryTypeClass (line 1329) | InfantryTypeClass & InfantryTypeClass::As_Reference(InfantryType type)

FILE: CODE/INFANTRY.CPP
  function ResultType (line 319) | ResultType InfantryClass::Take_Damage(int & damage, int distance, Warhea...
  function MoveType (line 1266) | MoveType InfantryClass::Can_Enter_Cell(CELL cell, FacingType ) const
  function FireErrorType (line 1611) | FireErrorType InfantryClass::Can_Fire(TARGET target, int which) const
  function BulletClass (line 2164) | BulletClass * InfantryClass::Fire_At(TARGET target, int which)
  function TARGET (line 2267) | TARGET InfantryClass::Greatest_Threat(ThreatType threat) const
  function ActionType (line 3158) | ActionType InfantryClass::What_Action(CELL cell) const
  function ObjectTypeClass (line 3268) | ObjectTypeClass const & InfantryClass::Class_Of(void) const

FILE: CODE/INFANTRY.H
  function class (line 42) | class InfantryClass : public FootClass

FILE: CODE/INI.CPP
  function PKey (line 1175) | PKey INIClass::Get_PKey(bool fast) const
  function fixed (line 1222) | fixed INIClass::Get_Fixed(char const * section, char const * entry, fixe...

FILE: CODE/INI.H
  function class (line 55) | class INIClass {
  function Section_Present (line 83) | bool Section_Present(char const * section) const {return(Find_Section(se...
  function INIEntry (line 122) | struct INIEntry : Node<INIEntry> {
  function INISection (line 135) | struct INISection : Node<INISection> {

FILE: CODE/INICODE.CPP
  function Get_Scenario_Digest (line 43) | void Get_Scenario_Digest(char * digest, char * buffer)
  function Read_Scenario_INI_Write_INB (line 104) | bool Read_Scenario_INI_Write_INB( char *root, bool fresh)

FILE: CODE/INIT.CPP
  function Load_Prolog_Page (line 164) | static void Load_Prolog_Page(void)
  function Init_Game (line 197) | bool Init_Game(int , char * [])
  function Play_Intro (line 1603) | static void Play_Intro(bool sequenced)
  function Anim_Init (line 1652) | void Anim_Init(void)
  function Parse_Command_Line (line 1741) | bool Parse_Command_Line(int argc, char * argv[])
  function Obfuscate (line 2198) | long Obfuscate(char const * string)
  function Calculate_CRC (line 2376) | long Calculate_CRC(void * buffer, long len)
  function Init_Random (line 2398) | void Init_Random(void)
  function Load_Title_Page (line 2511) | void Load_Title_Page(bool visible)
  function Init_Color_Remaps (line 2543) | static void Init_Color_Remaps(void)
  function Init_Heaps (line 2667) | static void Init_Heaps(void)
  function Init_Expansion_Files (line 2724) | static void Init_Expansion_Files(void)
  function Init_One_Time_Systems (line 2766) | static void Init_One_Time_Systems(void)
  function Init_Fonts (line 2807) | static void Init_Fonts(void)
  function Init_CDROM_Access (line 2842) | static void Init_CDROM_Access(void)
  function Init_Bootstrap_Mixfiles (line 2936) | static void Init_Bootstrap_Mixfiles(void)
  function Init_Secondary_Mixfiles (line 3027) | static void Init_Secondary_Mixfiles(void)
  function Bootstrap (line 3112) | static void Bootstrap(void)
  function Init_Mouse (line 3243) | static void Init_Mouse(void)
  function Init_Authorization (line 3292) | static void Init_Authorization(void)
  function Init_Bulk_Data (line 3395) | static void Init_Bulk_Data(void)
  function Init_Keys (line 3446) | static void Init_Keys(void)
  function Save_Recording_Values (line 3482) | bool Save_Recording_Values(CCFileClass & file)
  function Load_Recording_Values (line 3513) | bool Load_Recording_Values(CCFileClass & file)
  function __PRO (line 3528) | void __PRO(void) {
  function Extract (line 3534) | void Extract(char* filename, char* outname)
  function Is_DVD_Installed (line 3569) | bool Is_DVD_Installed()
  function Determine_If_Using_DVD (line 3588) | bool Determine_If_Using_DVD()
  function Using_DVD (line 3612) | bool Using_DVD()

FILE: CODE/INLINE.H
  function Lepton_To_Pixel (line 99) | inline int Lepton_To_Pixel(LEPTON lepton)
  function LEPTON (line 119) | inline LEPTON Pixel_To_Lepton(int pixel)
  function COORDINATE (line 140) | inline COORDINATE XY_Coord(LEPTON x, LEPTON y)
  function COORDINATE (line 165) | inline COORDINATE XYP_COORD(int x, int y)
  function CELL (line 186) | inline CELL Coord_XCell(COORDINATE coord)
  function CELL (line 206) | inline CELL Coord_YCell(COORDINATE coord)
  function CELL (line 227) | inline CELL XY_Cell(int x, int y)
  function LEPTON (line 251) | inline LEPTON Cell_To_Lepton(int cell_distance)
  function Lepton_To_Cell (line 276) | inline int Lepton_To_Cell(LEPTON lepton_distance)
  function LEPTON (line 299) | inline LEPTON Coord_X(COORDINATE coord)
  function LEPTON (line 319) | inline LEPTON Coord_Y(COORDINATE coord)
  function Cell_X (line 339) | inline int Cell_X(CELL cell)
  function Cell_Y (line 359) | inline int Cell_Y(CELL cell)
  function Coord_XLepton (line 382) | inline int Coord_XLepton(COORDINATE coord)
  function Coord_YLepton (line 403) | inline int Coord_YLepton(COORDINATE coord)
  function COORDINATE (line 427) | inline COORDINATE XYP_Coord(int x, int y)
  function COORDINATE (line 452) | inline COORDINATE Cell_Coord(CELL cell)
  function COORDINATE (line 480) | inline COORDINATE Coord_Snap(COORDINATE coord)
  function COORDINATE (line 503) | inline COORDINATE Coord_Fraction(COORDINATE coord)
  function COORDINATE (line 526) | inline COORDINATE Coord_Whole(COORDINATE coord)
  function FacingType (line 630) | inline FacingType Dir_Facing(DirType facing)
  function DirType (line 651) | inline DirType Facing_Dir(FacingType facing)
  function Dir_To_16 (line 672) | inline int Dir_To_16(DirType facing)
  function Dir_To_32 (line 694) | inline int Dir_To_32(DirType facing)
  function DirType (line 716) | inline DirType Direction256(COORDINATE coord1, COORDINATE coord2)
  function DirType (line 739) | inline DirType Direction(COORDINATE coord1, COORDINATE coord2)
  function DirType (line 762) | inline DirType Direction8(COORDINATE coord1, COORDINATE coord2)
  function DirType (line 786) | inline DirType Direction(CELL cell1, CELL cell2)
  function COORDINATE (line 810) | inline COORDINATE Adjacent_Cell(COORDINATE coord, FacingType dir)
  function COORDINATE (line 834) | inline COORDINATE Adjacent_Cell(COORDINATE coord, DirType dir)
  function CELL (line 858) | inline CELL Adjacent_Cell(CELL cell, FacingType dir)
  function CELL (line 882) | inline CELL Adjacent_Cell(CELL cell, DirType dir)
  function FacingType (line 903) | inline FacingType Dir_To_8(DirType facing)
  function T (line 955) | T Random_Pick(T a, T b)
  function Percent_Chance (line 979) | inline bool Percent_Chance(int percent)
  function T (line 1006) | T Sim_Random_Pick(T a, T b)
  function Sim_Percent_Chance (line 1030) | inline bool Sim_Percent_Chance(int percent)
  function Distance (line 1055) | inline int Distance(int x1, int y1, int x2, int y2)

FILE: CODE/INT.H
  function Randomize (line 60) | void Randomize(Straw & rng, int bitcount) {XMP_Randomize(&reg[0], rng, b...
  function Randomize (line 61) | void Randomize(Straw & rng, const Int & minval, const Int & maxval) {XMP...
  function operator (line 68) | operator digit * () {return & reg[0];}
  function const (line 74) | bool operator[](unsigned bit) const {return(XMP_Test_Bit(&reg[0], bit));}
  function operator (line 81) | int operator ! (void) const {return(XMP_Test_Eq_Int(&reg[0], 0, PRECISIO...
  function Int (line 82) | Int operator ~ (void) {XMP_Not(&reg[0], PRECISION);return(*this);}
  function Int (line 83) | Int operator - (void) const {Int a = *this;a.Negate();return (a);}
  function ByteCount (line 88) | int ByteCount(void) const {return(XMP_Count_Bytes(&reg[0], PRECISION));}
  function BitCount (line 89) | int BitCount(void) const {return(XMP_Count_Bits(&reg[0], PRECISION));}
  function Is_Negative (line 90) | bool Is_Negative(void) const {return(XMP_Is_Negative(&reg[0], PRECISION));}
  function IsSmallPrime (line 92) | bool IsSmallPrime(void) const {return(XMP_Is_Small_Prime(&reg[0], PRECIS...
  function SmallDivisorsTest (line 93) | bool SmallDivisorsTest(void) const {return(XMP_Small_Divisors_Test(&reg[...
  function FermatTest (line 94) | bool FermatTest(unsigned rounds) const {return(XMP_Fermat_Test(&reg[0], ...
  function IsPrime (line 95) | bool IsPrime(void) const {return(XMP_Is_Prime(&reg[0], PRECISION));}
  function RabinMillerTest (line 96) | bool RabinMillerTest(Straw & rng, unsigned int rounds) const {return(XMP...
  function Int (line 112) | Int operator + (const Int & number) const {Int term;Carry = XMP_Add(term...
  function Int (line 113) | Int operator + (unsigned short b) const {Int result;Carry=XMP_Add_Int(re...
  function Int (line 115) | Int operator - (const Int & number) const {Int term;Borrow = XMP_Sub(ter...
  function Int (line 116) | Int operator - (unsigned short b) const {Int result;Borrow = XMP_Sub_Int...
  function Int (line 118) | Int operator * (const Int & multiplier) const {Int result;Error=XMP_Sign...
  function Int (line 119) | Int operator * (unsigned short b) const {Int result;Error=XMP_Unsigned_M...
  function Int (line 121) | Int operator / (const Int & divisor) const {Int quotient = *this;XMP_Sig...
  function Int (line 122) | Int operator / (unsigned long b) const {return(*this / Int<PRECISION>(b));}
  function Int (line 123) | Int operator / (unsigned short divisor) const {Int quotient;Error=XMP_Un...
  function Int (line 125) | Int operator % (const Int & divisor) const {Int remainder;XMP_Signed_Div...
  function Int (line 126) | Int operator % (unsigned long b) const {return(*this % Int<PRECISION>(b));}
  function const (line 127) | unsigned short operator % (unsigned short divisor) const {return(XMP_Uns...
  function Int (line 133) | Int operator >> (int bits) const {Int result = *this; XMP_Shift_Right_Bi...
  function Int (line 134) | Int operator << (int bits) const {Int result = *this; XMP_Shift_Left_Bit...
  function operator (line 139) | int operator == (const Int &b) const {return (memcmp(&reg[0], &b.reg[0],...
  function operator (line 140) | int operator != (const Int& b) const {return !(*this == b);}
  function operator (line 141) | int operator > (const Int & number) const {return(XMP_Compare(&reg[0], n...
  function operator (line 142) | int operator >= (const Int & number) const {return(XMP_Compare(&reg[0], ...
  function operator (line 143) | int operator < (const Int & number) const {return(XMP_Compare(&reg[0], n...
  function operator (line 144) | int operator <= (const Int & number) const {return(XMP_Compare(&reg[0], ...
  function Negate (line 149) | void Negate(void) {XMP_Neg(&reg[0], PRECISION);}
  function Int (line 150) | Int Abs(void) {XMP_Abs(&reg[0], PRECISION);return(*this);}
  function Int (line 151) | Int times_b_mod_c(Int const & multiplier, Int const & modulus) const {
  function Int (line 159) | Int exp_b_mod_c(const Int & e, const Int & m) const {
  function Int (line 166) | static Int Unsigned_Mult(Int const & multiplicand, Int const & multiplie...
  function Unsigned_Divide (line 167) | static void Unsigned_Divide(Int & remainder, Int & quotient, const Int &...
  function Signed_Divide (line 168) | static void Signed_Divide(Int & remainder, Int & quotient, const Int & d...
  function Int (line 169) | Int Inverse(const Int & modulus) const {Int result;XMP_Inverse_A_Mod_B(r...
  function Int (line 171) | static Int Decode_ASCII(char const * string) {Int result;XMP_Decode_ASCI...
  function Encode (line 174) | int Encode(unsigned char *output) const {return(XMP_Encode(output, &reg[...
  function Encode (line 175) | int Encode(unsigned char * output, unsigned length) const {return(XMP_En...
  function Signed_Decode (line 176) | void Signed_Decode(const unsigned char * from, int frombytes) {XMP_Signe...
  function Unsigned_Decode (line 177) | void Unsigned_Decode(const unsigned char * from, int frombytes) {XMP_Uns...
  function DEREncode (line 180) | int DEREncode(unsigned char * output) const {return(XMP_DER_Encode(&reg[...
  function DERDecode (line 181) | void DERDecode(const unsigned char *input) {XMP_DER_Decode(&reg[0], inpu...
  function HasZero (line 205) | struct RemainderTable
  function Increment (line 225) | void Increment(const RemainderTable & rtQ)

FILE: CODE/INTERNET.CPP
  function Check_From_WChat (line 112) | void Check_From_WChat(char *wchat_name)
  function Just_Path (line 445) | void Just_Path(char *path, char *destpath)
  function Is_User_WChat_Registered (line 474) | bool Is_User_WChat_Registered(char *buffer, int buffer_len)
  function Spawn_WChat (line 563) | bool Spawn_WChat(bool can_launch)
  function Spawn_Registration_App (line 705) | bool Spawn_Registration_App(void)
  function Do_The_Internet_Menu_Thang (line 767) | bool Do_The_Internet_Menu_Thang(void)

FILE: CODE/INTERPAL.CPP
  function Read_Interpolation_Palette (line 92) | void Read_Interpolation_Palette (char const * palette_file_name)
  function Write_Interpolation_Palette (line 120) | void Write_Interpolation_Palette (char const * palette_file_name)
  function Create_Palette_Interpolation_Table (line 147) | void Create_Palette_Interpolation_Table( void )
  function Increase_Palette_Luminance (line 271) | void Increase_Palette_Luminance (unsigned char * palette , int red_perce...
  function Interpolate_2X_Scale (line 325) | void Interpolate_2X_Scale( GraphicBufferClass * source, GraphicViewPortC...

FILE: CODE/INTRO.CPP
  function VQAHandle (line 42) | VQAHandle * Open_Movie(char * name)
  function Choose_Side (line 75) | void Choose_Side(void)		//	ajw - In RA, all this did was play a movie. D...

FILE: CODE/IPX.CPP
  function IPX_SPX_Installed (line 92) | int IPX_SPX_Installed(void)
  function IPX_Open_Socket (line 212) | int IPX_Open_Socket(unsigned short socket)
  function IPX_Close_Socket (line 271) | int IPX_Close_Socket(unsigned short socket)
  function IPX_Get_Connection_Number (line 330) | int IPX_Get_Connection_Number(void)
  function IPX_Get_1st_Connection_Num (line 389) | int IPX_Get_1st_Connection_Num (char * username)
  function IPX_Get_Internet_Address (line 539) | int IPX_Get_Internet_Address(int connection_number,
  function IPX_Get_User_ID (line 670) | int IPX_Get_User_ID(int connection_number, char * user_id)
  function IPX_Listen_For_Packet (line 820) | int IPX_Listen_For_Packet(struct ECB *ecb_ptr)
  function IPX_Send_Packet (line 899) | void IPX_Send_Packet(struct ECB *ecb_ptr)
  function IPX_Get_Local_Target (line 960) | int IPX_Get_Local_Target(unsigned char *dest_network, unsigned char *des...
  function IPX_Cancel_Event (line 1076) | int IPX_Cancel_Event(struct ECB *ecb_ptr)
  function Let_IPX_Breath (line 1135) | void Let_IPX_Breath(void)

FILE: CODE/IPX.H
  type IPXHeaderType (line 54) | typedef struct IPXHEADER {
  type ECBType (line 72) | typedef struct ECB {
  type RMIType (line 94) | typedef struct {
  type ECB (line 181) | struct ECB
  type ECB (line 182) | struct ECB
  type ECB (line 185) | struct ECB

FILE: CODE/IPX95.CPP
  function Load_IPX_Dll (line 107) | bool Load_IPX_Dll (void)
  function Unload_IPX_Dll (line 156) | void Unload_IPX_Dll (void)
  function IPX_Open_Socket (line 165) | int IPX_Open_Socket(unsigned short socket)
  function IPX_Close_Socket (line 170) | int IPX_Close_Socket(unsigned short socket)
  function IPX_Get_Connection_Number (line 177) | int IPX_Get_Connection_Number(void)
  function IPX_Broadcast_Packet (line 184) | int IPX_Broadcast_Packet(unsigned char * buf, int buflen)
  function IPX_Get_Local_Target (line 193) | int IPX_Get_Local_Target(unsigned char * dest_network, unsigned char * d...

FILE: CODE/IPX95.H
  type BOOL (line 51) | typedef BOOL __stdcall (*IPXInitialiseType) (void);
  type BOOL (line 52) | typedef BOOL __stdcall (*IPXGetOutstandingBuffer95Type) (unsigned char*);
  type BOOL (line 56) | typedef BOOL __stdcall (*IPXStartListening95Type) (void);

FILE: CODE/IPXADDR.H
  function class (line 53) | class IPXAddressClass

FILE: CODE/IPXCONN.H
  function class (line 58) | class IPXConnClass : public ConnectionClass

FILE: CODE/IPXGCONN.H
  type GlobalHeaderType (line 96) | typedef struct {
  function class (line 105) | class IPXGlobalConnClass : public IPXConnClass

FILE: CODE/IPXMGR.CPP
  function IPXAddressClass (line 666) | IPXAddressClass * IPXManagerClass::Connection_Address(int id)
  type SREGS (line 1834) | struct SREGS
  type SREGS (line 2032) | struct SREGS

FILE: CODE/IPXMGR.H
  function class (line 154) | class IPXManagerClass : public ConnManClass

FILE: CODE/JSHELL.CPP
  function Set_Window (line 121) | void Set_Window(int window, int x, int y, int w, int h)
  function Fatal (line 147) | void Fatal(char const * message, ...)
  function File_Fatal (line 160) | void File_Fatal(char const * message)
  function Load_Uncompress (line 193) | long Load_Uncompress(FileClass &file, BuffType &uncomp_buff, BuffType &d...
  function Load_Picture (line 270) | int Load_Picture(char const * filename, BufferClass& scratchbuf, BufferC...
  function Translucent_Table_Size (line 322) | long Translucent_Table_Size(int count)
  function DirType (line 519) | DirType xDesired_Facing8(int x1, int y1, int x2, int y2)
  function DirType (line 583) | DirType xDesired_Facing256(int srcx, int srcy, int dstx, int dsty)

FILE: CODE/JSHELL.H
  type KeyboardClass (line 62) | struct KeyboardClass
  type KeyboardClass (line 65) | struct KeyboardClass
  function Clear (line 88) | void Clear(void) {if (IsLibrary) Clear_KeyBuffer();}
  function Down (line 89) | int Down(KeyNumType key) {return(Key_Down(key));}
  function IsLibrary (line 91) | IsLibrary(true) {}
  function KeyNumType (line 92) | KeyNumType Get(void) {return ((KeyNumType)WWKeyboardClass::Get());}
  function KeyNumType (line 93) | KeyNumType Check(void) {return ((KeyNumType)WWKeyboardClass::Check());}
  function KeyASCIIType (line 94) | KeyASCIIType To_ASCII(KeyNumType key) {return((KeyASCIIType)WWKeyboardCl...
  function Clear (line 95) | void Clear(void) {WWKeyboardClass::Clear();}
  function Down (line 96) | int Down(KeyNumType key) {return(WWKeyboardClass::Down(key));}
  function Mouse_X (line 99) | int Mouse_X(void) {return(Get_Mouse_X());}
  function Mouse_Y (line 100) | int Mouse_Y(void) {return(Get_Mouse_Y());}
  function T (line 145) | T min(T value1, T value2)
  function T (line 155) | T max(T value1, T value2)
  function T (line 176) | T Bound(T original, T minval, T maxval)
  function class (line 337) | class FrameTimerClass
  function class (line 359) | class SystemTimerClass
  function class (line 373) | class UserTimerClass
  function Pointer (line 451) | Pointer(realptr) {}
  function Pointer (line 452) | SmartPtr(SmartPtr const & rvalue) : Pointer(rvalue.Pointer) {}
  function operator (line 455) | operator T * (void) const {return(Pointer);}

FILE: CODE/KEY.H
  type WWKey_Type (line 59) | typedef enum {
  function class (line 70) | class WWKeyboardClass
  type KeyASCIIType (line 389) | typedef enum KeyASCIIType {
  type KeyNumType (line 537) | typedef enum KeyNumType {

FILE: CODE/KEYBOARD.H
  type WWKey_Type (line 55) | typedef enum {
  function class (line 66) | class WWKeyboardClass
  type KeyNumType (line 531) | typedef enum KeyNumType {

FILE: CODE/KEYFRAME.CPP
  type tShapeHeaderType (line 82) | struct tShapeHeaderType{
  function Get_Last_Frame_Length (line 98) | int Get_Last_Frame_Length(void)
  function Reallocate_Big_Shape_Buffer (line 105) | void Reallocate_Big_Shape_Buffer(void)
  function Check_Use_Compressed_Shapes (line 119) | void Check_Use_Compressed_Shapes (void)
  function Build_Frame (line 132) | unsigned long Build_Frame(void const * dataptr, unsigned short framenumb...
  function Get_Build_Frame_Count (line 303) | unsigned short Get_Build_Frame_Count(void const * dataptr)
  function Get_Build_Frame_X (line 312) | unsigned short Get_Build_Frame_X(void const * dataptr)
  function Get_Build_Frame_Y (line 321) | unsigned short Get_Build_Frame_Y(void const * dataptr)
  function Get_Build_Frame_Width (line 345) | unsigned short Get_Build_Frame_Width(void const * dataptr)
  function Get_Build_Frame_Height (line 369) | unsigned short Get_Build_Frame_Height(void const * dataptr)
  function Get_Build_Frame_Palette (line 378) | bool Get_Build_Frame_Palette(void const * dataptr, void * palette)

FILE: CODE/LAYER.H
  function class (line 45) | class LayerClass : public DynamicVectorClass<ObjectClass *>

FILE: CODE/LCW.CPP
  function LCW_Uncomp (line 72) | int LCW_Uncomp(void const * source, void * dest, unsigned long )

FILE: CODE/LCWPIPE.H
  function class (line 50) | class LCWPipe : public Pipe

FILE: CODE/LCWSTRAW.H
  function class (line 51) | class LCWStraw : public Straw

FILE: CODE/LCWUNCMP.CPP
  function LCW_Uncompress (line 73) | unsigned long __cdecl LCW_Uncompress (void * source, void * dest, unsign...

FILE: CODE/LED.H
  function class (line 24) | class LEDClass

FILE: CODE/LINK.CPP
  function LinkClass (line 147) | LinkClass & LinkClass::operator = (LinkClass const & link)
  function LinkClass (line 173) | LinkClass * LinkClass::Get_Next(void) const
  function LinkClass (line 194) | LinkClass * LinkClass::Get_Prev(void) const
  function LinkClass (line 215) | LinkClass & LinkClass::Head_Of_List(void)
  function LinkClass (line 241) | LinkClass & LinkClass::Tail_Of_List(void)
  function LinkClass (line 268) | LinkClass & LinkClass::Add(LinkClass & list)
  function LinkClass (line 308) | LinkClass & LinkClass::Add_Head(LinkClass & list)
  function LinkClass (line 341) | LinkClass & LinkClass::Add_Tail(LinkClass & list)
  function LinkClass (line 378) | LinkClass * LinkClass::Remove(void)

FILE: CODE/LINK.H
  function class (line 47) | class LinkClass

FILE: CODE/LIST.CPP
  function LinkClass (line 771) | LinkClass & ListClass::Add(LinkClass & list)
  function LinkClass (line 802) | LinkClass & ListClass::Add_Head(LinkClass & list)
  function LinkClass (line 839) | LinkClass & ListClass::Add_Tail(LinkClass & list)
  function GadgetClass (line 876) | GadgetClass * ListClass::Remove(void)

FILE: CODE/LIST.H
  function class (line 59) | class ListClass : public ControlClass
  function T (line 160) | T operator [] (int index) const {return(List[index]);}
  function virtual (line 167) | virtual int Count(void) const {return List.Count();}
  function virtual (line 173) | virtual T Get_Item(int index) const {return(List[index]);}

FILE: CODE/LISTNODE.H
  function class (line 67) | class GenericNode {
  function class (line 118) | class GenericList {
  function T (line 169) | T * Last(void) const {return((T*)GenericList::Last());}

FILE: CODE/LOADDLG.CPP
  type find_t (line 623) | struct find_t
  class FileEntryClass (line 722) | class FileEntryClass
  class FileEntryClass (line 775) | class FileEntryClass
  class FileEntryClass (line 777) | class FileEntryClass
  class FileEntryClass (line 778) | class FileEntryClass

FILE: CODE/LOADDLG.H
  function class (line 39) | class FileEntryClass {
  function class (line 49) | class LoadOptionsClass

FILE: CODE/LOGIC.H
  function class (line 47) | class LogicClass : public LayerClass

FILE: CODE/LZO1X_C.CPP
  function do_compress (line 92) | static int do_compress(const lzo_byte *in , lzo_uint  in_len,
  function lzo1x_1_compress (line 316) | int lzo1x_1_compress     ( const lzo_byte *in , lzo_uint  in_len,

FILE: CODE/LZO1X_D.CPP
  function lzo1x_decompress (line 64) | int lzo1x_decompress     ( const lzo_byte *in , lzo_uint  in_len,

FILE: CODE/LZOCONF.H
  type lzo_uint (line 81) | typedef unsigned int     lzo_uint;
  type lzo_int (line 82) | typedef int              lzo_int;
  type lzo_uint (line 85) | typedef unsigned long    lzo_uint;
  type lzo_int (line 86) | typedef long             lzo_int;
  type lzo_ptr_t (line 119) | typedef unsigned long       lzo_ptr_t;

FILE: CODE/LZOPIPE.H
  function class (line 50) | class LZOPipe : public Pipe

FILE: CODE/LZOSTRAW.H
  function class (line 51) | class LZOStraw : public Straw

FILE: CODE/LZO_CONF.H
  type lzo_ptrdiff_t (line 97) | typedef ptrdiff_t        lzo_ptrdiff_t;
  type lzo_ptrdiff_t (line 99) | typedef long             lzo_ptrdiff_t;

FILE: CODE/LZW.CPP
  function LZW_Uncompress (line 265) | int LZW_Uncompress(Buffer const & inbuff, Buffer const & outbuff)
  function LZW_Compress (line 272) | int LZW_Compress(Buffer const & inbuff, Buffer const & outbuff)
  type CodeClass (line 306) | struct CodeClass
    method CodeClass (line 312) | CodeClass(void) {}
    method CodeClass (line 313) | CodeClass(CodeType code, CodeType parent, char c) : CodeValue(code), P...
    method Make_Unused (line 315) | void Make_Unused(void) {CodeValue = UNUSED;}
    method Is_Unused (line 316) | bool Is_Unused(void) const {return(CodeValue == UNUSED);}
    method Is_Matching (line 317) | bool Is_Matching(CodeType code, char c) const {return(ParentCode == co...
  function Make_LZW_Hash (line 323) | inline int Make_LZW_Hash(CodeType code, char character)
  function Find_Child_Node (line 351) | static int Find_Child_Node(CodeType parent_code, char child_character)
  function Decode_String (line 409) | static int Decode_String(char * ptr, CodeType code)
  function LZW_Compress (line 433) | int LZW_Compress(Buffer & inbuff, Buffer & outbuff)
  function LZW_Uncompress (line 486) | int LZW_Uncompress(Buffer & inbuff, Buffer & outbuff)

FILE: CODE/LZW.H
  function class (line 43) | class LZWEngine

FILE: CODE/LZWPIPE.H
  function class (line 50) | class LZWPipe : public Pipe

FILE: CODE/LZWSTRAW.H
  function class (line 51) | class LZWStraw : public Straw

FILE: CODE/MAP.CPP
  function ObjectClass (line 1377) | ObjectClass * MapClass::Close_Object(COORDINATE coord) const
  function CELL (line 1652) | CELL MapClass::Nearby_Location(CELL cell, SpeedType speed, int zone, MZo...
  function CELL (line 2090) | CELL MapClass::Pick_Random_Location(void) const

FILE: CODE/MAP.H
  function class (line 44) | class MapClass: public GScreenClass

FILE: CODE/MAPEDIT.CPP
  function HousesType (line 1836) | HousesType MapEditClass::Cycle_House(HousesType curhouse, ObjectTypeClas...

FILE: CODE/MAPEDIT.H
  type MapEdit1Enum (line 56) | enum MapEdit1Enum {
  type MapEditButtonIDEnum (line 148) | enum MapEditButtonIDEnum{
  function class (line 172) | class MapEditClass : public MouseClass

FILE: CODE/MAPSEL.CPP
  type point (line 51) | struct point {
  function Mouse_Over_Spot (line 323) | int Mouse_Over_Spot(int house, int scenario)
  function Cycle_Call_Back_Delay (line 340) | void Cycle_Call_Back_Delay(int time, PaletteClass &pal)
  function Set_Mouse (line 381) | void Set_Mouse(MouseType shape, int &start, int &count, int &delay, int ...

FILE: CODE/MCI.CPP
  function MCIDEVICEID (line 158) | MCIDEVICEID MCI::OpenDevice(const char* name)
  type _DeviceType (line 292) | struct _DeviceType {unsigned long typeID; const char* typeName;}

FILE: CODE/MCI.H
  type MCIDevice (line 58) | typedef struct _MCIDevice
  function class (line 76) | class MCI

FILE: CODE/MCIMOVIE.H
  function class (line 31) | class MCIMovie

FILE: CODE/MEMCHECK.H
  type MCSL (line 1030) | typedef unsigned int    MCSL;
  type MCID (line 1031) | typedef unsigned char   MCID;
  type MCEFLAGS (line 1033) | typedef unsigned long   MCEFLAGS;
  type MRFLAGS (line 1035) | typedef unsigned char   MRFLAGS;
  type MCFLAGS (line 1036) | typedef unsigned long   MCFLAGS;
  type MEMREC (line 1049) | typedef struct MemRecord
  type MCSETTINGS (line 1065) | typedef struct MCSETTINGS {
  type MCCFGINFO (line 1099) | typedef struct MCCfgInfo {
  type MCEXCEPTINFO (line 1110) | typedef struct {
  type MCEXCEPTINFO (line 1126) | typedef struct {
  type MCCRITSECT (line 1158) | typedef struct {
  function class (line 2432) | class MemCheck {

FILE: CODE/MENUS.CPP
  function PRIVATE (line 74) | PRIVATE int Select_To_Entry(int select, unsigned long bitfield, int index)
  function PRIVATE (line 106) | PRIVATE void Flash_Line(char const *text, int xpix, int ypix, unsigned n...
  function PRIVATE (line 130) | PRIVATE int Coordinates_In_Region(int x, int y, int inx1, int iny1, int ...
  function Find_Menu_Items (line 149) | int Find_Menu_Items(int maxitems, unsigned long field, char index)
  function Setup_Menu (line 176) | void Setup_Menu(int menu, char const * text[], unsigned long field, int ...
  function Check_Menu (line 210) | int Check_Menu(int menu, char const * text[], char *, long field, int in...
  function Do_Menu (line 377) | int Do_Menu(char const ** strings, bool )
  function Main_Menu (line 463) | int Main_Menu(unsigned long )

FILE: CODE/MISSION.CPP
  function MissionType (line 158) | MissionType MissionClass::Get_Mission(void) const
  function MissionType (line 412) | MissionType MissionClass::Mission_From_Name(char const * name)

FILE: CODE/MISSION.H
  function class (line 48) | class MissionClass : public ObjectClass
  function class (line 135) | class MissionControlClass

FILE: CODE/MIXFILE.CPP
  function compfunc (line 487) | int compfunc(void const * ptr1, void const * ptr2)

FILE: CODE/MIXFILE.H
  type SubBlock (line 60) | struct SubBlock {
  function operator (line 66) | int operator > (SubBlock & two) const {return (CRC > two.CRC);}
  function operator (line 67) | int operator == (SubBlock & two) const {return (CRC == two.CRC);}
  type FileHeader (line 98) | typedef struct {

FILE: CODE/MONOC.CPP
  function T (line 101) | T min(T a, T b) {
  function T (line 107) | T max(T a, T b) {
  function MonoClass (line 797) | MonoClass & MonoClass::operator = (MonoClass const & src)
  function Mono_Set_Cursor (line 868) | void Mono_Set_Cursor(int x, int y)
  function Mono_Printf (line 898) | int Mono_Printf(char const * string, ...)
  function Mono_Clear_Screen (line 936) | void Mono_Clear_Screen(void)
  function Mono_Text_Print (line 967) | void Mono_Text_Print(void const *text, int x, int y, int attrib)
  function Mono_Draw_Rect (line 1001) | void Mono_Draw_Rect(int x, int y, int w, int h, int attrib, int thick)
  function Mono_Print (line 1028) | void Mono_Print(void const *text)
  function Mono_X (line 1056) | int Mono_X(void)
  function Mono_Y (line 1084) | int Mono_Y(void)
  function Mono_Put_Char (line 1098) | void Mono_Put_Char(char , int )
  function Mono_Scroll (line 1102) | void Mono_Scroll(int )
  function Mono_View_Page (line 1106) | void Mono_View_Page(int )
  function Mono_Printf (line 1110) | int Mono_Printf(int string, ...)

FILE: CODE/MONOC.H
  function class (line 56) | class MonoClass {

FILE: CODE/MOUSE.H
  function class (line 44) | class MouseClass: public ScrollClass

FILE: CODE/MOVIE.H
  type MPG_CMD (line 46) | typedef enum
  type MPG_RESPONSE (line 55) | typedef enum

FILE: CODE/MP.CPP
  function _Byte_Precision (line 120) | static int _Byte_Precision(unsigned long value)
  function XMP_DER_Length_Encode (line 150) | int XMP_DER_Length_Encode(unsigned long length, unsigned char * output)
  function XMP_DER_Encode (line 189) | int XMP_DER_Encode(digit const * from, unsigned char * output, int preci...
  function XMP_DER_Decode (line 228) | void XMP_DER_Decode(digit * result, unsigned char const * input, int pre...
  function XMP_Encode (line 273) | unsigned XMP_Encode(unsigned char * to, unsigned tobytes, digit const * ...
  function XMP_Encode (line 319) | unsigned XMP_Encode(unsigned char * to, digit const * from, int precision)
  function XMP_Signed_Decode (line 370) | void XMP_Signed_Decode(digit * result, const unsigned char * from, int f...
  function XMP_Unsigned_Decode (line 420) | void XMP_Unsigned_Decode(digit * result, const unsigned char * from, int...
  function XMP_Significance (line 465) | int XMP_Significance(const digit * number, int precision)
  function XMP_Inc (line 494) | void XMP_Inc(digit * number, int precision)
  function XMP_Dec (line 522) | void XMP_Dec(digit * number, int precision)
  function XMP_Neg (line 551) | void XMP_Neg(digit * number, int precision)
  function XMP_Abs (line 579) | void XMP_Abs(digit * number, int precision)
  function XMP_Shift_Right_Bits (line 609) | void XMP_Shift_Right_Bits(digit * number, int bits, int precision)
  function XMP_Shift_Left_Bits (line 695) | void XMP_Shift_Left_Bits(digit * number, int bits, int precision)
  function XMP_Rotate_Left (line 782) | bool XMP_Rotate_Left(digit * number, bool carry, int precision)
  function XMP_Not (line 814) | void XMP_Not(digit * number, int precision)
  function XMP_Init (line 845) | void XMP_Init(digit * number, digit value, int precision)
  function XMP_Count_Bits (line 872) | unsigned XMP_Count_Bits(const digit * number, int precision)
  function XMP_Count_Bytes (line 909) | int XMP_Count_Bytes(const digit * number, int precision)
  function XMP_Move (line 940) | void XMP_Move(digit * dest, digit const * source, int precision)
  function XMP_Compare (line 967) | int XMP_Compare(const digit * left_number, const digit * right_number, i...
  function XMP_Add (line 1006) | bool XMP_Add(digit * result, const digit * left_number, const digit * ri...
  function XMP_Add_Int (line 1048) | bool XMP_Add_Int(digit * result, const digit * left_number, digit right_...
  function XMP_Sub (line 1089) | bool XMP_Sub(digit * result, const digit * left_number, const digit * ri...
  function XMP_Sub_Int (line 1132) | bool XMP_Sub_Int(digit * result, const digit * left_number, unsigned sho...
  function XMP_Unsigned_Mult (line 1171) | int XMP_Unsigned_Mult(digit * prod, const digit * multiplicand, const di...
  function XMP_Unsigned_Mult_Int (line 1226) | int XMP_Unsigned_Mult_Int(digit * prod, const digit * multiplicand, shor...
  function XMP_Signed_Mult_Int (line 1266) | int XMP_Signed_Mult_Int(digit * prod, const digit * multiplicand, signed...
  function XMP_Signed_Mult (line 1315) | int XMP_Signed_Mult(digit * prod, const digit * multiplicand, const digi...
  function XMP_Unsigned_Div_Int (line 1369) | unsigned short XMP_Unsigned_Div_Int(digit * quotient, digit const * divi...
  function XMP_Unsigned_Div (line 1432) | int XMP_Unsigned_Div(digit * remainder, digit * quotient, digit const * ...
  function XMP_Signed_Div (line 1496) | void XMP_Signed_Div(digit * remainder, digit * quotient, digit const * d...
  function XMP_Inverse_A_Mod_B (line 1551) | void XMP_Inverse_A_Mod_B(digit * result, digit const * number, digit con...
  function XMP_Reciprocal (line 1598) | int XMP_Reciprocal(digit * quotient, const digit * divisor, int precision)
  function XMP_Decode_ASCII (line 1654) | void XMP_Decode_ASCII(char const * str, digit * mpn, int precision)
  function XMP_Hybrid_Mul (line 1770) | void XMP_Hybrid_Mul(unsigned short * prod, unsigned short * multiplicand...
  function XMP_Double_Mul (line 1807) | void XMP_Double_Mul(digit * prod, const digit * multiplicand, const digi...
  function XMP_Prepare_Modulus (line 1864) | int XMP_Prepare_Modulus(const digit * n_modulus, int precision)
  function XMP_Mod_Mult (line 1922) | int XMP_Mod_Mult(digit * prod, const digit * multiplicand, const digit *...
  function XMP_Mod_Mult_Clear (line 2013) | void XMP_Mod_Mult_Clear(int precision)
  function mp_quo_digit (line 2051) | unsigned short mp_quo_digit(unsigned short * dividend)
  function xmp_exponent_mod (line 2084) | int xmp_exponent_mod(digit * expout, const digit * expin, const digit * ...
  function memrev (line 2183) | void memrev(char * buffer, size_t length)
  function XMP_Is_Small_Prime (line 2219) | bool XMP_Is_Small_Prime(const digit * candidate, int precision)
  function XMP_Small_Divisors_Test (line 2252) | bool XMP_Small_Divisors_Test(const digit * candidate, int precision)
  function XMP_Fermat_Test (line 2285) | bool XMP_Fermat_Test(const digit * candidate_prime, unsigned rounds, int...
  function XMP_Rabin_Miller_Test (line 2330) | bool XMP_Rabin_Miller_Test(Straw & rng, digit const * w, int rounds, int...
  function XMP_Randomize (line 2402) | void XMP_Randomize(digit * result, Straw & rng, int total_bits, int prec...
  function XMP_Randomize (line 2440) | void XMP_Randomize(digit * result, Straw & rng, digit const * minval, di...
  function XMP_Is_Prime (line 2473) | bool XMP_Is_Prime(digit const * prime, int precision)

FILE: CODE/MP.H
  function XMP_Digits_To_Bits (line 130) | inline int XMP_Digits_To_Bits(int digits)
  function XMP_Bits_To_Digits (line 136) | inline int XMP_Bits_To_Digits(int bits)
  function digit (line 142) | inline digit XMP_Bits_To_Mask(int bits)
  function XMP_Is_Negative (line 149) | inline bool XMP_Is_Negative(const digit * r, int precision)
  function XMP_Test_Eq_Int (line 155) | inline bool XMP_Test_Eq_Int(digit const * r, int i, int p)
  function XMP_Set_Bit (line 161) | inline void XMP_Set_Bit(digit * r, unsigned bit)
  function XMP_Test_Bit (line 166) | inline bool XMP_Test_Bit(const digit * r, unsigned bit)

FILE: CODE/MPGSET.CPP
  function EnumMCI (line 569) | bool EnumMCI(MCIDevice* desc, void* context)

FILE: CODE/MPGSET.H
  function class (line 28) | class MPGSettings

FILE: CODE/MPLAYER.CPP
  function GameType (line 68) | GameType Select_MPlayer_Game (void)
  function Clear_Listbox (line 461) | void Clear_Listbox(ListClass * list)
  function Clear_Vector (line 493) | void Clear_Vector(DynamicVectorClass <NodeNameType *> * vector)
  function Computer_Message (line 523) | void Computer_Message(void)
  function Garble_Message (line 595) | static void Garble_Message(char * buf)
  function Surrender_Dialog (line 684) | int Surrender_Dialog(int text)
  function Surrender_Dialog (line 693) | int Surrender_Dialog(int text)
  function Abort_Dialog (line 892) | int Abort_Dialog(void)
  function Read_TEN_Game_Options (line 1087) | int Read_TEN_Game_Options(void)
  function Read_MPATH_Game_Options (line 1180) | int Read_MPATH_Game_Options(void)

FILE: CODE/MPLIB.CPP
  function Yield (line 32) | void
  function PostWindowsMessage (line 41) | void
  function MGenGetQueueCtr (line 52) | int MGenGetQueueCtr(int qNo)
  function RTQ_NODE (line 63) | RTQ_NODE *MGenMoveTo(int qFrom, int qTo)
  function RTQ_NODE (line 75) | RTQ_NODE *MGenGetNode(int q)
  function RTQ_NODE (line 86) | RTQ_NODE *MGenGetMasterNode(unsigned *size)
  function MGenFlushNodes (line 97) | int MGenFlushNodes(int qFrom, int qTo)
  function MGenMCount (line 109) | int MGenMCount(unsigned lowerOrderBits, unsigned upperOrderBits)
  function MGenSanityCheck (line 121) | int MGenSanityCheck(void)

FILE: CODE/MPLPC.CPP
  function SetLPCData (line 34) | void
  function GetGameDef (line 42) | void
  function LPCGetMPAddr (line 80) | int
  function NullLPC (line 109) | void

FILE: CODE/MPMGRD.H
  function class (line 28) | class MPlayerManClass : public ConnManClass {

FILE: CODE/MPMGRW.CPP
  function FARPROC (line 82) | FARPROC MPGetProcAddress(HMODULE hModule, LPCSTR lpProcName) {

FILE: CODE/MPMGRW.H
  function class (line 30) | class MPlayerManClass : public ConnManClass {

FILE: CODE/MPU.CPP
  function Get_CPU_Clock (line 42) | unsigned long __cdecl Get_CPU_Clock(unsigned long & high)

FILE: CODE/MSGBOX.H
  function class (line 43) | class WWMessageBox

FILE: CODE/MSGLIST.CPP
  function TextLabelClass (line 324) | TextLabelClass * MessageListClass::Add_Message(char const * name, int id...
  function TextLabelClass (line 520) | TextLabelClass * MessageListClass::Get_Label(int id)
  function TextLabelClass (line 737) | TextLabelClass * MessageListClass::Add_Edit(PlayerColorType color,

FILE: CODE/MSGLIST.H
  function class (line 112) | class MessageListClass {

FILE: CODE/NETDLG.CPP
  function Init_Network (line 952) | bool Init_Network (void)
  function Shutdown_Network (line 998) | void Shutdown_Network (void)
  function Process_Global_Packet (line 1079) | bool Process_Global_Packet(GlobalPacketType *packet, IPXAddressClass *ad...
  function Destroy_Connection (line 1160) | void Destroy_Connection(int id, int error)
  function Remote_Connect (line 1246) | bool Remote_Connect(void)
  function Request_To_Join (line 3035) | static int Request_To_Join (char *playername, int join_index,
  function Unjoin_Game (line 3130) | static void Unjoin_Game(char *namebuf,JoinStateType joinstate,
  function Send_Join_Queries (line 3229) | static void Send_Join_Queries(int curgame, JoinStateType joinstate,
  function JoinEventType (line 3373) | static JoinEventType Get_Join_Responses(JoinStateType *joinstate, ListCl...
  function JoinEventType (line 5220) | static JoinEventType Get_NewGame_Responses(ColorListClass *playerlist,
  function Compute_Name_CRC (line 5528) | unsigned long Compute_Name_CRC(char *name)
  function Net_Reconnect_Dialog (line 5565) | void Net_Reconnect_Dialog(int reconn, int fresh, int oldest_index,
  type WWPerson (line 5707) | struct WWPerson {
  type WWPerson (line 5714) | struct WWPerson
  function Start_WWChat (line 5859) | void Start_WWChat(ColorListClass *playerlist)
  function Update_WWChat (line 5928) | int Update_WWChat(void)
  function Start_Logging (line 5975) | void Start_Logging(void)
  function Log_Message (line 6059) | void Log_Message(char *msg)
  function Server_Remote_Connect (line 7731) | bool Server_Remote_Connect(void)
  function Client_Remote_Connect (line 7777) | bool Client_Remote_Connect(void)

FILE: CODE/NOSEQCON.H
  function class (line 62) | class NonSequencedConnClass : public ConnectionClass

FILE: CODE/NULLCONN.H
  type SerialHeaderType (line 62) | typedef struct {
  type SerialCRCType (line 68) | typedef struct {
  function class (line 76) | class NullModemConnClass : public ConnectionClass

FILE: CODE/NULLDLG.CPP
  function Init_Null_Modem (line 139) | int Init_Null_Modem( SerialSettingsType *settings )
  function Shutdown_Modem (line 182) | void Shutdown_Modem( void )
  function Modem_Signoff (line 214) | void Modem_Signoff( void )
  function Test_Null_Modem (line 252) | int Test_Null_Modem( void )
  function Reconnect_Modem (line 537) | int Reconnect_Modem( void )
  function Reconnect_Null_Modem (line 587) | static int Reconnect_Null_Modem( void )
  function Destroy_Null_Connection (line 784) | void Destroy_Null_Connection(int id, int error)
  function GameType (line 879) | GameType Select_Serial_Dialog( void )
  function Advanced_Modem_Settings (line 1333) | Advanced_Modem_Settings (SerialSettingsType *settings)
  function Com_Settings_Dialog (line 1620) | static int Com_Settings_Dialog( SerialSettingsType *settings )
  function Build_Init_String_Listbox (line 2812) | static void Build_Init_String_Listbox (ListClass *list, EditClass *edit,...
  function Init_String_Compare (line 2881) | static int Init_String_Compare (const void *p1, const void *p2)
  function Find_Local_Scenario (line 4661) | bool Find_Local_Scenario (char *description, char *filename, unsigned in...
  function Build_Phone_Listbox (line 6768) | static void Build_Phone_Listbox (ListClass *list, EditClass *edit, char ...
  function Phone_Compare (line 6861) | static int Phone_Compare (const void *p1, const void *p2)
  function Edit_Phone_Dialog (line 6896) | static int Edit_Phone_Dialog (PhoneEntryClass *phone)
  function Dial_Modem (line 7174) | static bool Dial_Modem( SerialSettingsType *settings, bool reconnect )
  function Answer_Modem (line 7363) | static bool Answer_Modem( SerialSettingsType *settings, bool reconnect )
  function Modem_Echo (line 7532) | static void Modem_Echo( char c )
  function Smart_Printf (line 7543) | void Smart_Printf( char *format, ... )
  function Hex_Dump_Data (line 7570) | void Hex_Dump_Data( char *buffer, int length )
  function itoh (line 7654) | void itoh( int i, char *s)
  function Log_Start_Time (line 7680) | void Log_Start_Time( char *string )
  function Log_End_Time (line 7691) | void Log_End_Time( char *string )
  function Log_Time (line 7722) | void Log_Time( char *string )
  function Log_Start_Nest_Time (line 7753) | void Log_Start_Nest_Time( char *string )
  function Log_End_Nest_Time (line 7790) | void Log_End_Nest_Time( char *string )

FILE: CODE/NULLMGR.CPP
  function DetectPortType (line 561) | DetectPortType NullModemClass::Detect_Port( SerialSettingsType *settings )
  function DialStatusType (line 1674) | DialStatusType NullModemClass::Dial_Modem( char *string, DialMethodType ...
  function DialStatusType (line 1866) | DialStatusType NullModemClass::Answer_Modem( bool reconnect )

FILE: CODE/NULLMGR.H
  function class (line 54) | class NullModemClass : public ConnManClass
  function virtual (line 121) | virtual int Get_Private_Message (void *buf, int *buflen, int *)
  function virtual (line 148) | virtual int Global_Num_Send(void) {return (Num_Send());}
  function virtual (line 149) | virtual int Global_Num_Receive(void) {return (Num_Receive());}

FILE: CODE/NUMBER.CPP
  function Power_Mod (line 28) | unsigned long Power_Mod(unsigned long root, unsigned long exponent, unsi...
  function Greatest_Common_Divisor (line 49) | int Greatest_Common_Divisor(int x, int y)
  function Grestest_Common_Divisor (line 76) | int Grestest_Common_Divisor(int count, int * data)

FILE: CODE/OBJECT.CPP
  function COORDINATE (line 207) | COORDINATE ObjectClass::Exit_Coord(void) const
  function ActionType (line 291) | ActionType ObjectClass::What_Action(ObjectClass const *) const
  function ActionType (line 319) | ActionType ObjectClass::What_Action(CELL) const
  function LayerType (line 343) | LayerType ObjectClass::In_Which_Layer(void) const
  function COORDINATE (line 493) | COORDINATE ObjectClass::Target_Coord(void) const
  function COORDINATE (line 519) | COORDINATE ObjectClass::Center_Coord(void) const
  function COORDINATE (line 544) | COORDINATE ObjectClass::Render_Coord(void) const
  function COORDINATE (line 569) | COORDINATE ObjectClass::Docking_Coord(void) const
  function COORDINATE (line 595) | COORDINATE ObjectClass::Sort_Y(void) const
  function COORDINATE (line 622) | COORDINATE ObjectClass::Fire_Coord(int ) const
  function MissionType (line 996) | MissionType ObjectClass::Get_Mission(void) const
  function RadioMessageType (line 1504) | RadioMessageType ObjectClass::Receive_Message(RadioClass *, RadioMessage...
  function ResultType (line 1559) | ResultType ObjectClass::Take_Damage(int & damage, int distance, WarheadT...

FILE: CODE/OBJECT.H
  function class (line 58) | class ObjectClass : public AbstractClass
  function operator (line 135) | int operator < (ObjectClass const & object) const {return Sort_Y() < obj...
  function operator (line 136) | int operator > (ObjectClass const & object) const {return Sort_Y() > obj...
  function virtual (line 146) | virtual bool Is_Players_Army(void) const {return(false);}
  function virtual (line 150) | virtual LayerType In_Which_Layer(void) const;
  function Is_Foot (line 152) | bool Is_Foot(void) const {return(RTTI == RTTI_INFANTRY || RTTI == RTTI_U...
  function Is_Techno (line 153) | bool Is_Techno(void) const {return(RTTI == RTTI_BUILDING || RTTI == RTTI...
  function virtual (line 230) | virtual void Per_Cell_Process(PCPType) {}

FILE: CODE/ODATA.CPP
  function OverlayType (line 674) | OverlayType OverlayTypeClass::From_Name(char const * name)
  function ObjectClass (line 843) | ObjectClass * OverlayTypeClass::Create_One_Of(HouseClass *) const
  function OverlayTypeClass (line 929) | OverlayTypeClass & OverlayTypeClass::As_Reference(OverlayType type)
  function COORDINATE (line 951) | COORDINATE OverlayTypeClass::Coord_Fixup(COORDINATE coord) const

FILE: CODE/OPTIONS.CPP
  function fixed (line 341) | fixed OptionsClass::Get_Brightness(void) const
  function fixed (line 386) | fixed OptionsClass::Get_Saturation(void) const
  function fixed (line 430) | fixed OptionsClass::Get_Contrast(void) const
  function fixed (line 473) | fixed OptionsClass::Get_Tint(void) const

FILE: CODE/OPTIONS.H
  function class (line 41) | class OptionsClass {

FILE: CODE/OVERLAY.H
  function class (line 49) | class OverlayClass : public ObjectClass
  function operator (line 66) | operator OverlayType(void) const {return Class->Type;}
  function virtual (line 83) | virtual ObjectTypeClass const & Class_Of(void) const {return *Class;}
  function virtual (line 84) | virtual void Draw_It(int , int , WindowNumberType ) const {}

FILE: CODE/PACKET.CPP
  function FieldClass (line 263) | FieldClass *PacketClass::Find_Field(char *id)

FILE: CODE/PACKET.H
  function class (line 47) | class PacketClass {
  function Add_Field (line 68) | void Add_Field(char *field, char data) {Add_Field(new FieldClass(field, ...
  function Add_Field (line 69) | void Add_Field(char *field, unsigned char data) {Add_Field(new FieldClas...
  function Add_Field (line 70) | void Add_Field(char *field, short data) {Add_Field(new FieldClass(field,...
  function Add_Field (line 71) | void Add_Field(char *field, unsigned short data) {Add_Field(new FieldCla...
  function Add_Field (line 72) | void Add_Field(char *field, long data) {Add_Field(new FieldClass(field, ...
  function Add_Field (line 73) | void Add_Field(char *field, unsigned long data) {Add_Field(new FieldClas...
  function Add_Field (line 74) | void Add_Field(char *field, char *data) {Add_Field(new FieldClass(field,...
  function Add_Field (line 75) | void Add_Field(char *field, void *data, int length) {Add_Field(new Field...

FILE: CODE/PIPE.H
  function class (line 65) | class Pipe

FILE: CODE/PK.H
  function class (line 56) | class PKey

FILE: CODE/PKPIPE.H
  function class (line 52) | class PKPipe : public Pipe

FILE: CODE/PKSTRAW.H
  function class (line 47) | class PKStraw : public Straw

FILE: CODE/POWER.H
  function class (line 43) | class PowerClass : public RadarClass

FILE: CODE/PROFILE.CPP
  function Read_Private_Config_Struct (line 64) | bool Read_Private_Config_Struct(FileClass & file, NewConfigType * config)
  function WWGetPrivateProfileHex (line 103) | unsigned WWGetPrivateProfileHex (char const * section, char const * entr...
  function WWGetPrivateProfileInt (line 144) | int WWGetPrivateProfileInt(char const * section, char const * entry, int...
  function WWWritePrivateProfileInt (line 186) | bool WWWritePrivateProfileInt(char const * section, char const * entry, ...
  function WWWritePrivateProfileString (line 550) | bool WWWritePrivateProfileString(char const * section, char const * entr...
  function Read_Bin_Init (line 693) | bool Read_Bin_Init( char * buffer, int length )
  function Read_Bin_Length (line 703) | int Read_Bin_Length( char * buffer )
  function Read_Bin_Num (line 713) | bool Read_Bin_Num( void * num, int length, char * buffer )
  function Read_Bin_Pos (line 734) | int Read_Bin_Pos( char * buffer )
  function Read_Bin_PosSet (line 744) | int Read_Bin_PosSet( unsigned int pos, char * buffer )
  function Read_Bin_String (line 755) | bool Read_Bin_String( char * string, char * buffer )
  function Write_Bin_Init (line 788) | bool Write_Bin_Init( char * buffer, int length )
  function Write_Bin_Length (line 798) | int Write_Bin_Length( char * buffer )
  function Write_Bin_Num (line 808) | bool Write_Bin_Num( void * num, int length, char * buffer )
  function Write_Bin_Pos (line 829) | int Write_Bin_Pos( char * buffer )
  function Write_Bin_PosSet (line 839) | int Write_Bin_PosSet( unsigned int pos, char * buffer )
  function Write_Bin_String (line 850) | bool Write_Bin_String( char * string, int length, char * buffer )

FILE: CODE/QUEUE.CPP
  type RetcodeEnum (line 131) | enum RetcodeEnum {
  function Queue_Mission (line 241) | bool Queue_Mission(TargetClass whom, MissionType mission, TARGET target,...
  function Queue_Mission (line 276) | bool Queue_Mission(TargetClass whom, MissionType mission, TARGET target,...
  function Queue_Options (line 301) | bool Queue_Options(void)
  function Queue_Exit (line 328) | bool Queue_Exit(void)
  function Queue_AI (line 355) | void Queue_AI(void)
  function Queue_AI_Normal (line 406) | static void Queue_AI_Normal(void)
  function Queue_AI_Multiplayer (line 554) | static void Queue_AI_Multiplayer(void)
  function Generate_Timing_Event (line 1293) | static void Generate_Timing_Event(ConnManClass *net, int my_sent)
  function Generate_Real_Timing_Event (line 1377) | static void Generate_Real_Timing_Event(ConnManClass *net, int my_sent)
  function Generate_Process_Time_Event (line 1495) | static void Generate_Process_Time_Event(ConnManClass *net)
  function Process_Send_Period (line 1557) | static int Process_Send_Period(ConnManClass *net)	//, int init)
  function Send_Packets (line 1607) | static int Send_Packets(ConnManClass *net, char *multi_packet_buf,
  function Send_FrameSync (line 1735) | static void Send_FrameSync(ConnManClass *net, int cmd_count)
  function RetcodeType (line 1805) | static RetcodeType Process_Receive_Packet(ConnManClass *net,
  function RetcodeType (line 1954) | static RetcodeType Process_Serial_Packet(char *multi_packet_buf,
  function Can_Advance (line 2090) | static int Can_Advance(ConnManClass *net, int max_ahead, long *their_frame,
  function Process_Reconnect_Dialog (line 2159) | static int Process_Reconnect_Dialog(CDTimerClass<SystemTimerClass> *time...
  function Handle_Timeout (line 2238) | static int Handle_Timeout(ConnManClass *net, long *their_frame,
  function Stop_Game (line 2342) | static void Stop_Game(void)
  function Build_Send_Packet (line 2390) | static int Build_Send_Packet(void *buf, int bufsize, int frame_delay,
  function Add_Uncompressed_Events (line 2491) | static int Add_Uncompressed_Events(void *buf, int bufsize, int frame_delay,
  function Add_Compressed_Events (line 2587) | static int Add_Compressed_Events(void *buf, int bufsize, int frame_delay,
  function Breakup_Receive_Packet (line 2901) | static int Breakup_Receive_Packet(void *buf, int bufsize )
  function Extract_Uncompressed_Events (line 2939) | static int Extract_Uncompressed_Events(void *buf, int bufsize)
  function Extract_Compressed_Events (line 3019) | static int Extract_Compressed_Events(void *buf, int bufsize)
  function Execute_DoList (line 3240) | static int Execute_DoList(int max_houses, HousesType base_house,
  function Clean_DoList (line 3554) | static void Clean_DoList(ConnManClass *net)
  function Queue_Record (line 3602) | static void Queue_Record(void)
  function Queue_Playback (line 3652) | static void Queue_Playback(void)
  function Compute_Game_CRC (line 3793) | static void Compute_Game_CRC(void)
  function Add_CRC (line 3895) | void Add_CRC(unsigned long *crc, unsigned long val)
  function Print_CRCs (line 3927) | static void Print_CRCs(EventClass *ev)
  function Init_Queue_Mono (line 4244) | static void Init_Queue_Mono(ConnManClass *net)
  function Update_Queue_Mono (line 4323) | static void Update_Queue_Mono(ConnManClass *net, int flow_index)
  function Print_Framesync_Values (line 4373) | static void Print_Framesync_Values(long curframe, unsigned long max_ahead,
  function Dump_Packet_Too_Late_Stuff (line 4426) | void Dump_Packet_Too_Late_Stuff(EventClass *event, ConnManClass *net,
  function Check_Mirror (line 4485) | void Check_Mirror(void)

FILE: CODE/RADAR.CPP
  function CELL (line 1224) | CELL RadarClass::Click_Cell_Calc(int x, int y) const
  function CELL (line 2146) | CELL RadarClass::Radar_Position(void)

FILE: CODE/RADAR.H
  function class (line 43) | class RadarClass: public DisplayClass

FILE: CODE/RADIO.CPP
  function RadioMessageType (line 142) | RadioMessageType RadioClass::Receive_Message(RadioClass * from, RadioMes...
  function RadioMessageType (line 204) | RadioMessageType RadioClass::Transmit_Message(RadioMessageType message, ...
  function RadioMessageType (line 288) | RadioMessageType RadioClass::Transmit_Message(RadioMessageType message, ...

FILE: CODE/RADIO.H
  function class (line 53) | class RadioClass : public MissionClass {
  function In_Radio_Contact (line 87) | bool In_Radio_Contact(void) const {return (Radio != 0);}
  function Radio_Off (line 88) | void Radio_Off(void) {Radio = 0;}
  function TechnoClass (line 89) | TechnoClass * Contact_With_Whom(void) const {return (TechnoClass *)Radio;}

FILE: CODE/RAMFILE.H
  function class (line 45) | class RAMFileClass : public FileClass

FILE: CODE/RAND.CPP
  function Sim_Random (line 58) | int Sim_Random(void)
  function Sim_IRandom (line 107) | int Sim_IRandom(int minval, int maxval)
  function main (line 125) | void main(void)

FILE: CODE/RANDOM.H
  function class (line 55) | class RandomClass {

FILE: CODE/RAWFILE.H
  function HANDLE_TYPE (line 171) | HANDLE_TYPE Get_File_Handle(void) { return (Handle); }
  function RawFileClass (line 300) | inline RawFileClass::~RawFileClass(void)
  function Is_Open (line 326) | inline int RawFileClass::Is_Open(void) const

FILE: CODE/RAWOLAPI.CPP
  function HRESULT (line 81) | HRESULT __stdcall
  function ULONG (line 101) | ULONG __stdcall
  function ULONG (line 111) | ULONG __stdcall
  function STDMETHODIMP (line 125) | STDMETHODIMP RAChatEventSink::OnServerList( HRESULT hRes, Server* pServe...
  function STDMETHODIMP (line 192) | STDMETHODIMP RAChatEventSink::OnPageSend( HRESULT hRes )
  function STDMETHODIMP (line 207) | STDMETHODIMP RAChatEventSink::OnPaged( HRESULT, User* pUser, LPCSTR szMe...
  function STDMETHODIMP (line 231) | STDMETHODIMP RAChatEventSink::OnFind( HRESULT hRes, Channel* pChannel )
  function STDMETHODIMP (line 249) | STDMETHODIMP RAChatEventSink::OnLogout( HRESULT hRes, User* pUser )
  function STDMETHODIMP (line 266) | STDMETHODIMP RAChatEventSink::OnBusy(HRESULT)
  function STDMETHODIMP (line 272) | STDMETHODIMP RAChatEventSink::OnIdle(HRESULT)
  function STDMETHODIMP (line 278) | STDMETHODIMP RAChatEventSink::OnConnection( HRESULT hRes, LPCSTR motd )
  function STDMETHODIMP (line 343) | STDMETHODIMP RAChatEventSink::OnChannelCreate( HRESULT hRes, Channel* )
  function STDMETHODIMP (line 363) | STDMETHODIMP RAChatEventSink::OnChannelModify(HRESULT, Channel *)
  function STDMETHODIMP (line 369) | STDMETHODIMP RAChatEventSink::OnChannelJoin( HRESULT hRes, Channel* /*pC...
  function STDMETHODIMP (line 517) | STDMETHODIMP RAChatEventSink::OnChannelLeave( HRESULT hRes, Channel*, Us...
  function STDMETHODIMP (line 616) | STDMETHODIMP RAChatEventSink::OnChannelTopic(HRESULT, Channel *, LPCSTR)
  function STDMETHODIMP (line 622) | STDMETHODIMP RAChatEventSink::OnGroupList(HRESULT, Group *)
  function STDMETHODIMP (line 628) | STDMETHODIMP RAChatEventSink::OnPublicMessage( HRESULT, Channel*, User* ...
  function STDMETHODIMP (line 657) | STDMETHODIMP RAChatEventSink::OnPrivateMessage( HRESULT, User* pUserSend...
  function STDMETHODIMP (line 737) | STDMETHODIMP RAChatEventSink::OnSystemMessage(HRESULT, LPCSTR)
  function STDMETHODIMP (line 743) | STDMETHODIMP RAChatEventSink::OnNetStatus( HRESULT hRes )
  function STDMETHODIMP (line 786) | STDMETHODIMP RAChatEventSink::OnChannelList( HRESULT, Channel* pChannelL...
  function STDMETHODIMP (line 903) | STDMETHODIMP RAChatEventSink::OnUserList(HRESULT, Channel*, User* pUserL...
  function STDMETHODIMP (line 953) | STDMETHODIMP RAChatEventSink::OnUpdateList( HRESULT hRes, Update* pUpdat...
  function STDMETHODIMP (line 1072) | STDMETHODIMP RAChatEventSink::OnServerError( HRESULT hRes )
  function STDMETHODIMP (line 1080) | STDMETHODIMP RAChatEventSink::OnMessageOfTheDay(HRESULT, LPCSTR)
  function STDMETHODIMP (line 1194) | STDMETHODIMP RAChatEventSink::OnPrivateAction( HRESULT, User* pUserSende...
  function STDMETHODIMP (line 1214) | STDMETHODIMP RAChatEventSink::OnPublicAction( HRESULT, Channel*, User* p...
  function STDMETHODIMP (line 1230) | STDMETHODIMP RAChatEventSink::OnPrivateGameOptions( HRESULT, User* pUser...
  function STDMETHODIMP (line 1252) | STDMETHODIMP RAChatEventSink::OnPublicGameOptions( HRESULT, Channel*, Us...
  function STDMETHODIMP (line 1270) | STDMETHODIMP RAChatEventSink::OnGameStart( HRESULT hRes, Channel*, User*...
  function STDMETHODIMP (line 1340) | STDMETHODIMP RAChatEventSink::OnUserKick( HRESULT hRes, Channel*, User* ...
  function STDMETHODIMP (line 1396) | STDMETHODIMP RAChatEventSink::OnUserIP( HRESULT hRes, User* pUser )
  function STDMETHODIMP (line 1474) | STDMETHODIMP RAChatEventSink::OnServerError(HRESULT , LPCSTR )
  function STDMETHODIMP (line 1480) | STDMETHODIMP RAChatEventSink::OnServerBannedYou(HRESULT , time_t )
  function STDMETHODIMP (line 1486) | STDMETHODIMP RAChatEventSink::OnUserFlags( HRESULT hRes, LPCSTR name, un...
  function STDMETHODIMP (line 1548) | STDMETHODIMP RAChatEventSink::OnChannelBan( HRESULT , LPCSTR name, int b...
  function HRESULT (line 1578) | HRESULT __stdcall
  function ULONG (line 1597) | ULONG __stdcall
  function ULONG (line 1606) | ULONG __stdcall
  function STDMETHODIMP (line 1619) | STDMETHODIMP RADownloadEventSink::OnEnd(void)
  function STDMETHODIMP (line 1627) | STDMETHODIMP RADownloadEventSink::OnError( int /*iCode*/ )
  function STDMETHODIMP (line 1643) | STDMETHODIMP RADownloadEventSink::OnProgressUpdate( int bytesread, int t...
  function STDMETHODIMP (line 1657) | STDMETHODIMP RADownloadEventSink::OnStatusUpdate( int status )
  function STDMETHODIMP (line 1670) | STDMETHODIMP RADownloadEventSink::OnQueryResume()
  function HRESULT (line 1704) | HRESULT __stdcall
  function ULONG (line 1724) | ULONG __stdcall
  function ULONG (line 1734) | ULONG __stdcall
  function STDMETHODIMP (line 1747) | STDMETHODIMP RANetUtilEventSink::OnGameresSent( HRESULT hRes )
  function STDMETHODIMP (line 1755) | STDMETHODIMP RANetUtilEventSink::OnLadderList( HRESULT hRes, Ladder* pLa...
  function STDMETHODIMP (line 1827) | STDMETHODIMP RANetUtilEventSink::OnPing( HRESULT hRes, int time, unsigne...
  function ChatDefAsText (line 1900) | void ChatDefAsText( char* szDesc, HRESULT hRes )
  function DebugChatDef (line 2032) | void DebugChatDef( HRESULT hRes )
  function iChannelLobbyNumber (line 2040) | int iChannelLobbyNumber( const unsigned char* szChannelName )
  function InterpretLobbyNumber (line 2055) | void InterpretLobbyNumber( char* szLobbyNameToSet, int iLobby )

FILE: CODE/RAWOLAPI.H
  type CHANNELFILTER (line 74) | enum CHANNELFILTER
  type DISCONNECT_PING_STATUS (line 101) | enum DISCONNECT_PING_STATUS
  function class (line 111) | class RAChatEventSink : /////public CComObjectRoot, /////public IConnect...
  function class (line 236) | class RADownloadEventSink :
  function class (line 278) | class RANetUtilEventSink :

FILE: CODE/READLINE.CPP
  function strtrim (line 31) | void strtrim(char * buffer)
  function Read_Line (line 61) | int Read_Line(FileClass & file, char * buffer, int len, bool & eof)
  function Read_Line (line 67) | int Read_Line(Straw & file, char * buffer, int len, bool & eof)

FILE: CODE/RECT.CPP
  function Rect (line 115) | Rect const Rect::Intersect(Rect const & rectangle, int * x, int * y) const
  function Rect (line 175) | Rect const Union(Rect const & rect1, Rect const & rect2)

FILE: CODE/RECT.H
  function class (line 57) | class Rect

FILE: CODE/REGION.H
  function class (line 42) | class RegionClass {
  function operator (line 46) | int operator != (RegionClass const & region) {return memcmp(this, &regio...
  function operator (line 47) | int operator == (RegionClass const & region) {return !memcmp(this, &regi...
  function operator (line 48) | int operator > (RegionClass const & region) {return memcmp(this, &region...
  function operator (line 49) | int operator < (RegionClass const & region) {return memcmp(this, &region...
  function Reset_Threat (line 51) | void Reset_Threat(void) {Threat = 0;}
  function Adjust_Threat (line 52) | void Adjust_Threat(int threat, int neg) {if (neg) Threat -= threat; else...
  function Threat_Value (line 53) | int Threat_Value(void) const {return Threat;}

FILE: CODE/REINF.CPP
  function _Pop_Group_Out_Of_Object (line 65) | static bool _Pop_Group_Out_Of_Object(FootClass * group, TechnoClass * ob...
  function _Need_To_Take (line 129) | bool _Need_To_Take(AircraftClass const * air)
  function FootClass (line 167) | static FootClass * _Create_Group(TeamTypeClass const * teamtype)
  function _Consists_Only_Of_Infantry (line 297) | static bool _Consists_Only_Of_Infantry(FootClass const * first)
  function TechnoClass (line 327) | static TechnoClass * _Who_Can_Pop_Out_Of(CELL origin)
  function Do_Reinforcements (line 372) | bool Do_Reinforcements(TeamTypeClass const * teamtype)
  function Create_Special_Reinforcement (line 559) | bool Create_Special_Reinforcement(HouseClass * house, TechnoTypeClass co...
  function Create_Air_Reinforcement (line 639) | int Create_Air_Reinforcement(HouseClass * house, AircraftType air, int n...

FILE: CODE/RGB.H
  function class (line 79) | class RGBClass
  function Red_Component (line 107) | int Red_Component(void) const {return ((Red << 2) | (Red >> 6));}
  function Green_Component (line 108) | int Green_Component(void) const {return((Green << 2) | (Green >> 6));}
  function Blue_Component (line 109) | int Blue_Component(void) const {return((Blue << 2) | (Blue >> 6));}
  function Raw_Set (line 116) | void Raw_Set(void) const {
  function Raw_Color_Prep (line 123) | static void Raw_Color_Prep(unsigned char color) {

FILE: CODE/RNDSTRAW.H
  function class (line 50) | class RandomStraw : public Straw

FILE: CODE/RNG.H
  function class (line 45) | class RandomNumberGenerator {

FILE: CODE/ROTBMP.CPP
  type WPPOINT (line 48) | struct WPPOINT {
  function Rotate_Bitmap (line 68) | Rotate_Bitmap(GraphicViewPortClass * srcvp, GraphicViewPortClass * destv...

FILE: CODE/ROTBMP.H
  function class (line 25) | class BitmapClass
  function class (line 36) | class TPoint2D

FILE: CODE/RULES.CPP
  function _Scale_To_256 (line 74) | static inline int _Scale_To_256(int val)
  function Difficulty_Get (line 313) | static void Difficulty_Get(CCINIClass & ini, DifficultyClass & diff, cha...

FILE: CODE/RULES.H
  function class (line 44) | class DifficultyClass
  function class (line 63) | class RulesClass {

FILE: CODE/SAVEDLG.H
  function class (line 43) | class SaveOptionsClass

FILE: CODE/SAVELOAD.CPP
  function Put_All (line 128) | static void Put_All(Pipe & pipe, int save_net)
  function Save_Game (line 318) | bool Save_Game(int id, char const * descr, bool )
  function Load_Game (line 462) | bool Load_Game(int id)
  function Save_Misc_Values (line 1001) | bool Save_Misc_Values(Pipe & file)
  function Load_Misc_Values (line 1061) | bool Load_Misc_Values(Straw & file)
  function Save_MPlayer_Values (line 1131) | bool Save_MPlayer_Values(Pipe & file)
  function Load_MPlayer_Values (line 1160) | bool Load_MPlayer_Values(Straw & file)
  function Code_All_Pointers (line 1186) | void Code_All_Pointers(void)
  function Decode_All_Pointers (line 1265) | void Decode_All_Pointers(void)
  function Reconcile_Players (line 1448) | static int Reconcile_Players(void)

FILE: CODE/SCENARIO.CPP
  function Start_Scenario (line 308) | bool Start_Scenario(char * name, bool briefing)
  function Fill_In_Data (line 519) | void Fill_In_Data(void)
  function Post_Load_Game (line 662) | void Post_Load_Game(int load_multi)
  function Clear_Scenario (line 695) | void Clear_Scenario(void)
  function Do_Lose (line 1075) | void Do_Lose(void)
  function Do_Draw (line 1164) | void Do_Draw(void)
  function Do_Restart (line 1228) | void Do_Restart(void)
  function Restate_Mission (line 1281) | bool Restate_Mission(char const * name, int button1, int button2)
  function BGMessageBox (line 1318) | bool BGMessageBox(char const * msg, int btn1, int btn2)
  function Write_Scenario_INI (line 2450) | void Write_Scenario_INI(char * fname)
  function Assign_Houses (line 2542) | void Assign_Houses(void)
  function Remove_AI_Players (line 2704) | static void Remove_AI_Players(void)
  function Create_Units (line 2745) | static void Create_Units(bool official)
  function Scan_Place_Object (line 3153) | int Scan_Place_Object(ObjectClass * obj, CELL cell)
  function CELL (line 3266) | static CELL Clip_Scatter(CELL cell, int maxdist)
  function CELL (line 3341) | static CELL Clip_Move(CELL cell, FacingType facing, int dist)
  function Disect_Scenario_Name (line 3419) | void Disect_Scenario_Name(char const * name, int & scenario, ScenarioPla...

FILE: CODE/SCENARIO.H
  function class (line 49) | class ScenarioClass {

FILE: CODE/SCORE.CPP
  type InfantryAnim (line 79) | struct InfantryAnim {
  type Fame (line 117) | struct Fame {
  function Alloc_Object (line 322) | int Alloc_Object(ScoreAnimClass *obj)
  type Fame (line 391) | struct Fame
  type Fame (line 743) | struct Fame
  type Fame (line 751) | struct Fame
  type Fame (line 819) | struct Fame
  function Cycle_Wait_Click (line 873) | void Cycle_Wait_Click(bool cycle)
  function Animate_Cursor (line 1487) | void Animate_Cursor(int pos, int ypos)
  function Draw_InfantryMen (line 1533) | void Draw_InfantryMen()
  function Draw_InfantryMan (line 1569) | void Draw_InfantryMan(int index)
  function New_Infantry_Anim (line 1620) | void New_Infantry_Anim(int index, int anim)
  function Draw_Bar_Graphs (line 1648) | void Draw_Bar_Graphs(int i, int gkilled, int nkilled)
  function Call_Back_Delay (line 1700) | void Call_Back_Delay(int time)
  function Animate_Score_Objs (line 1728) | void Animate_Score_Objs()
  function Multi_Score_Presentation (line 1772) | void Multi_Score_Presentation(void)

FILE: CODE/SCORE.H
  function class (line 44) | class ScoreClass {
  function class (line 88) | class ScoreAnimClass {
  function class (line 99) | class ScoreCredsClass : public ScoreAnimClass {
  function class (line 112) | class ScoreTimeClass : public ScoreAnimClass {
  function class (line 122) | class ScorePrintClass : public ScoreAnimClass {
  function class (line 133) | class ScoreScaleClass : public ScoreAnimClass {

FILE: CODE/SCREEN.H
  function class (line 42) | class ScreenClass

FILE: CODE/SCROLL.H
  function class (line 44) | class ScrollClass: public HelpClass

FILE: CODE/SDATA.CPP
  function SmudgeType (line 322) | SmudgeType SmudgeTypeClass::From_Name(char const * name)
  function ObjectClass (line 503) | ObjectClass * SmudgeTypeClass::Create_One_Of(HouseClass *) const
  function SmudgeTypeClass (line 568) | SmudgeTypeClass & SmudgeTypeClass::As_Reference(SmudgeType type)

FILE: CODE/SEARCH.H
  type NodeElement (line 129) | struct NodeElement {

FILE: CODE/SEDITDLG.H
  function class (line 26) | class SimpleEditDlgClass

FILE: CODE/SEQCONN.H
  function class (line 58) | class SequencedConnClass : public ConnectionClass

FILE: CODE/SESSION.CPP
  function Is_Mission_Counterstrike (line 1192) | bool Is_Mission_Counterstrike (char *file_name)
  function Is_Mission_Aftermath (line 1210) | bool Is_Mission_Aftermath (char *file_name)
  function Is_Mission_126x126 (line 1236) | bool Is_Mission_126x126 (char *file_name)		//	This is no longer used. ajw
  type find_t (line 1468) | struct find_t
  type diskfree_t (line 1761) | struct diskfree_t

FILE: CODE/SESSION.H
  type GameType (line 120) | typedef enum GameEnum {
  type DetectPortType (line 134) | typedef enum DetectPortType {
  type DialStatusType (line 140) | typedef enum DialStatusType {
  type DialMethodType (line 149) | typedef enum DialMethodType {
  type CallWaitStringType (line 155) | typedef enum CallWaitStringType {
  type ModemGameType (line 163) | typedef enum ModemGameType {
  type SerialCommandType (line 173) | typedef enum SerialCommandType {
  type NetCommandType (line 193) | typedef enum NetCommandType {
  type MPlayerScoreType (line 222) | typedef struct {
  type SerialSettingsType (line 232) | typedef struct {
  type NodeNameType (line 250) | typedef struct NodeNameTag {
  type SerialPacketType (line 282) | typedef struct {
  type RemoteFileTransferType (line 330) | typedef struct {
  type GlobalPacketType (line 341) | typedef struct GlobalPacketType {
  type TrapObjectType (line 403) | typedef struct {
  function class (line 420) | class MultiMission
  type GameOptionsType (line 446) | typedef struct {
  function class (line 461) | class SessionClass

FILE: CODE/SHA.CPP
  function T (line 246) | T _rotl(T X, int n)

FILE: CODE/SHA.H
  function class (line 68) | class SHAEngine

FILE: CODE/SHAPEBTN.H
  function class (line 43) | class ShapeButtonClass : public ToggleClass

FILE: CODE/SHAPIPE.H
  function class (line 49) | class SHAPipe : public Pipe

FILE: CODE/SHASTRAW.H
  function class (line 50) | class SHAStraw : public Straw

FILE: CODE/SIDEBAR.CPP
  type ButtonNumberType (line 101) | enum ButtonNumberType {

FILE: CODE/SIDEBAR.H
  function class (line 45) | class InitClass {}
  function class (line 47) | class SidebarClass: public PowerClass

FILE: CODE/SLIDER.H
  function class (line 59) | class SliderClass : public GaugeClass

FILE: CODE/SMUDGE.H
  function class (line 51) | class SmudgeClass : public ObjectClass

FILE: CODE/SOUNDDLG.CPP
  class MusicListClass (line 43) | class MusicListClass : public ListClass
    method MusicListClass (line 46) | MusicListClass(int id, int x, int y, int w, int h) :

FILE: CODE/SOUNDDLG.H
  function class (line 43) | class SoundControlsClass

FILE: CODE/SPECIAL.CPP
  function Special_Dialog (line 103) | void Special_Dialog(bool simple)
  class PWEditClass (line 229) | class PWEditClass : public EditClass
    method PWEditClass (line 232) | PWEditClass(int id, char * text, int max_len, TextPrintType flags, int...
  function Fetch_Difficulty (line 470) | int Fetch_Difficulty(void)

FILE: CODE/SPECIAL.H
  function class (line 41) | class SpecialClass

FILE: CODE/SPRITE.CPP
  class BitmapClass (line 32) | class BitmapClass
    method BitmapClass (line 35) | BitmapClass(int w, int h, unsigned char * data) :
  class TPoint2D (line 43) | class TPoint2D
    method TPoint2D (line 46) | TPoint2D(int xx, int yy) : x(xx), y(yy) {}
    method TPoint2D (line 47) | TPoint2D(void) : x(0), y(0) {}

FILE: CODE/STAGE.H
  function class (line 41) | class StageClass {

FILE: CODE/STARTUP.CPP
  function InitDDraw (line 703) | bool InitDDraw(void)
  function Prog_End (line 843) | void __cdecl Prog_End(void)
  function Prog_End (line 857) | void Prog_End(void)
  function Print_Error_End_Exit (line 872) | void Print_Error_End_Exit(char * string)
  function Print_Error_Exit (line 880) | void Print_Error_Exit(char * string)
  function Emergency_Exit (line 906) | void Emergency_Exit ( int code )
  function Read_Setup_Options (line 977) | void Read_Setup_Options( RawFileClass *config_file )
  function Get_OS_Version (line 1045) | void Get_OS_Version (void)

FILE: CODE/STATBTN.H
  function class (line 44) | class StaticButtonClass : public GadgetClass

FILE: CODE/STATS.CPP
  type hostent (line 420) | struct hostent
  type in_addr (line 429) | struct in_addr
  function Register_Game_Start_Time (line 898) | void Register_Game_Start_Time(void)
  function Register_Game_End_Time (line 905) | extern void Register_Game_End_Time(void)

FILE: CODE/STRAW.H
  function class (line 64) | class Straw

FILE: CODE/STUB.CPP
  function main (line 22) | void main(void)

FILE: CODE/SUPER.H
  function class (line 43) | class SuperClass {

FILE: CODE/SURFACE.H
  function class (line 53) | class Surface

FILE: CODE/TAB.H
  function class (line 44) | class TabClass: public SidebarClass

FILE: CODE/TACTION.CPP
  function TActionType (line 777) | TActionType Action_From_Name (char const * name)
  function NeedType (line 829) | NeedType Action_Needs(TActionType action)

FILE: CODE/TACTION.H
  type TActionType (line 42) | typedef enum TActionType {
  type TActionClass (line 102) | struct TActionClass {
  function class (line 137) | class ActionChoiceClass {

FILE: CODE/TARCOM.H
  function class (line 49) | class TarComClass : public TurretClass

FILE: CODE/TARGET.CPP
  function CellClass (line 98) | CellClass * xTargetClass::As_Cell(void) const
  function TriggerClass (line 122) | TriggerClass * As_Trigger(TARGET target)
  function TeamClass (line 143) | TeamClass * As_Team(TARGET target)
  function TeamTypeClass (line 164) | TeamTypeClass * As_TeamType(TARGET target)
  function AnimClass (line 185) | AnimClass * As_Animation(TARGET target)
  function BulletClass (line 206) | BulletClass * As_Bullet(TARGET target)
  function AircraftClass (line 227) | AircraftClass * As_Aircraft(TARGET target)
  function TechnoClass (line 249) | TechnoClass * As_Techno(TARGET target)
  function ObjectClass (line 276) | ObjectClass * As_Object(TARGET target)
  function UnitClass (line 348) | UnitClass * As_Unit(TARGET target)
  function VesselClass (line 370) | VesselClass * As_Vessel(TARGET target)
  function InfantryClass (line 392) | InfantryClass * As_Infantry(TARGET target)
  function BuildingClass (line 413) | BuildingClass * As_Building(TARGET target)
  function Target_Legal (line 437) | bool Target_Legal(TARGET target)
  function CELL (line 465) | CELL As_Cell(TARGET target)
  function COORDINATE (line 487) | COORDINATE As_Coord(TARGET target)
  function COORDINATE (line 539) | COORDINATE As_Movement_Coord(TARGET target)
  function AbstractClass (line 583) | AbstractClass * xTargetClass::As_Abstract(void) const
  function AbstractTypeClass (line 626) | AbstractTypeClass * xTargetClass::As_TypeClass(void) const
  function TechnoClass (line 688) | TechnoClass * xTargetClass::As_Techno(void) const
  function ObjectClass (line 713) | ObjectClass * xTargetClass::As_Object(void) const
  function TARGET (line 769) | TARGET As_Target(CELL cell)
  function TARGET (line 798) | TARGET As_Target(COORDINATE coord)
  function TechnoTypeClass (line 826) | TechnoTypeClass const * As_TechnoType(TARGET target)
  function TriggerTypeClass (line 866) | TriggerTypeClass * As_TriggerType(TARGET target)

FILE: CODE/TARGET.H
  function RTTIType (line 42) | inline RTTIType Target_Kind(TARGET a)
  function Target_Value (line 47) | inline unsigned Target_Value(TARGET a)
  function Is_Target_Team (line 52) | inline bool Is_Target_Team(TARGET a) {return (Target_Kind(a) == RTTI_TEA...
  function Is_Target_TeamType (line 53) | inline bool Is_Target_TeamType(TARGET a) {return (Target_Kind(a) == RTTI...
  function Is_Target_Trigger (line 54) | inline bool Is_Target_Trigger(TARGET a) {return (Target_Kind(a) == RTTI_...
  function Is_Target_TriggerType (line 55) | inline bool Is_Target_TriggerType(TARGET a) {return (Target_Kind(a) == R...
  function Is_Target_Infantry (line 56) | inline bool Is_Target_Infantry(TARGET a) {return (Target_Kind(a) == RTTI...
  function Is_Target_Bullet (line 57) | inline bool Is_Target_Bullet(TARGET a) {return (Target_Kind(a) == RTTI_B...
  function Is_Target_Terrain (line 58) | inline bool Is_Target_Terrain(TARGET a) {return (Target_Kind(a) == RTTI_...
  function Is_Target_Cell (line 59) | inline bool Is_Target_Cell(TARGET a) {return (Target_Kind(a) == RTTI_CEL...
  function Is_Target_Unit (line 60) | inline bool Is_Target_Unit(TARGET a) {return (Target_Kind(a) == RTTI_UNI...
  function Is_Target_Vessel (line 61) | inline bool Is_Target_Vessel(TARGET a) {return (Target_Kind(a) == RTTI_V...
  function Is_Target_Building (line 62) | inline bool Is_Target_Building(TARGET a) {return (Target_Kind(a) == RTTI...
  function Is_Target_Template (line 63) | inline bool Is_Target_Template(TARGET a) {return (Target_Kind(a) == RTTI...
  function Is_Target_Aircraft (line 64) | inline bool Is_Target_Aircraft(TARGET a) {return (Target_Kind(a) == RTTI...
  function Is_Target_Animation (line 65) | inline bool Is_Target_Animation(TARGET a) {return (Target_Kind(a) == RTT...
  function Is_Target_Object (line 66) | inline bool Is_Target_Object(TARGET a)
  function class (line 102) | class xTargetClass
  function class (line 156) | class TargetClass : public xTargetClass

FILE: CODE/TCPIP.CPP
  function BOOL (line 193) | BOOL TcpipManagerClass::Init(void)
  function BOOL (line 400) | BOOL TcpipManagerClass::Add_Client(void)
  type hostent (line 510) | struct 	hostent
  type sockaddr_in (line 511) | struct 	sockaddr_in
  type hostent (line 529) | struct hostent
  type hostent (line 541) | struct hostent
  type hostent (line 558) | struct hostent
  type sockaddr_in (line 769) | struct 	sockaddr_in

FILE: CODE/TCPIP.H
  function class (line 89) | class TcpipManagerClass {

FILE: CODE/TDATA.CPP
  function TerrainType (line 722) | TerrainType TerrainTypeClass::From_Name(char const * name)
  function ObjectClass (line 830) | ObjectClass * TerrainTypeClass::Create_One_Of(HouseClass *) const
  function TerrainTypeClass (line 910) | TerrainTypeClass & TerrainTypeClass::As_Reference(TerrainType type)
  function COORDINATE (line 916) | COORDINATE TerrainTypeClass::Coord_Fixup(COORDINATE coord) const

FILE: CODE/TEAM.CPP
  function _Is_It_Breathing (line 99) | static inline bool _Is_It_Breathing(FootClass const * object)
  function _Is_It_Playing (line 141) | static inline bool _Is_It_Playing(FootClass const * object)
  function FootClass (line 3053) | FootClass * TeamClass::Fetch_A_Leader(void) const

FILE: CODE/TEAM.H
  function class (line 53) | class TeamClass : public AbstractClass

FILE: CODE/TEAMTYPE.CPP
  function TeamTypeClass (line 224) | TeamTypeClass * TeamTypeClass::As_Pointer(char const * name)
  function TeamMissionType (line 252) | TeamMissionType TeamTypeClass::Mission_From_Name(char const * name)
  function TeamClass (line 353) | TeamClass * TeamTypeClass::Create_One_Of(void) const
  function TeamTypeClass (line 419) | TeamTypeClass const * TeamTypeClass::Suggested_New_Team(HouseClass * hou...
  function TeamTypeClass (line 516) | TeamTypeClass * TeamTypeClass::From_Name(char const * name)
  function NeedType (line 544) | NeedType TeamMission_Needs(TeamMissionType tmtype)
  function atoh (line 1395) | int atoh(char * str)

FILE: CODE/TEAMTYPE.H
  type TeamMissionType (line 44) | typedef enum TeamMissionType {
  function class (line 78) | class TeamMissionClass
  function class (line 101) | class TeamMemberClass
  function class (line 112) | class TeamTypeClass : public AbstractTypeClass

FILE: CODE/TECHNO.CPP
  function COORDINATE (line 491) | COORDINATE TechnoClass::Fire_Coord(int which) const
  function RadioMessageType (line 893) | RadioMessageType TechnoClass::Receive_Message(RadioClass * from, RadioMe...
  function fixed (line 1342) | fixed TechnoClass::Area_Modify(CELL cell) const
  function TARGET (line 1987) | TARGET TechnoClass::Greatest_Threat(ThreatType method) const
  function HousesType (line 2284) | HousesType TechnoClass::Owner(void) const
  function FireErrorType (line 2663) | FireErrorType TechnoClass::Can_Fire(TARGET target, int which) const
  function BulletClass (line 3023) | BulletClass * TechnoClass::Fire_At(TARGET target, int which)
  function ActionType (line 3289) | ActionType TechnoClass::What_Action(ObjectClass const * object) const
  function ActionType (line 3409) | ActionType TechnoClass::What_Action(CELL cell) const
  function ResultType (line 3793) | ResultType TechnoClass::Take_Damage(int & damage, int distance, WarheadT...
  function CELL (line 4011) | CELL TechnoClass::Nearby_Location(TechnoClass const * techno) const
  function VisualType (line 4159) | VisualType TechnoClass::Visual_Character(bool raw) const
  function InfantryType (line 4437) | InfantryType TechnoClass::Crew_Type(void) const
  function fixed (line 5087) | fixed TechnoClass::Tiberium_Load(void) const
  function DirType (line 5115) | DirType TechnoClass::Desired_Load_Dir(ObjectClass * , CELL & moveto) const
  function DirType (line 5164) | DirType TechnoClass::Fire_Direction(void) const
  function BuildingClass (line 5656) | BuildingClass * TechnoClass::Find_Docking_Bay(StructType b, bool friendl...
  function CELL (line 5720) | CELL TechnoClass::Find_Exit_Cell(TechnoClass const * ) const
  function _Scale_To_256 (line 6212) | static inline int _Scale_To_256(int val)

FILE: CODE/TECHNO.H
  function virtual (line 246) | virtual ~TechnoClass(void) {House=0;}
  function virtual (line 258) | virtual DirType Turret_Facing(void) const {return(PrimaryFacing.Current(...
  function TechnoTypeClass (line 260) | TechnoTypeClass * Techno_Type_Class(void) const {return((TechnoTypeClass...
  function virtual (line 304) | virtual int Made_A_Kill(void) {return(Crew.Made_A_Kill());}
  function virtual (line 370) | virtual bool Random_Animate(void) {return(false);}

FILE: CODE/TEMPLATE.H
  function class (line 50) | class TemplateClass : public ObjectClass
  function operator (line 67) | operator TemplateType(void) const {return Class->Type;}
  function virtual (line 74) | virtual ObjectTypeClass const & Class_Of(void) const {return *Class;}
  function virtual (line 81) | virtual void Draw_It(int , int , WindowNumberType ) const {}

FILE: CODE/TENMGR.CPP
  function terminateApp (line 911) | static void terminateApp(void)
  function debugMessage (line 936) | static void debugMessage(int /*msgLevel*/, char *msg)
  function doAlert (line 982) | static void doAlert(int, int, char * msg)
  function doPregameHook (line 1028) | static void doPregameHook(char * joinType,  char *,  char *,
  function doIncomingPacket (line 1062) | void doIncomingPacket(int addr, void *buf, size_t size)
  function doPlayerEntered (line 1109) | void doPlayerEntered(int pid, int isYou, char * /*options*/,

FILE: CODE/TENMGR.H
  function class (line 33) | class TenConnManClass : public ConnManClass

FILE: CODE/TERRAIN.CPP
  function ResultType (line 108) | ResultType TerrainClass::Take_Damage(int & damage, int distance, Warhead...
  function MoveType (line 376) | MoveType TerrainClass::Can_Enter_Cell(CELL cell, FacingType) const
  function COORDINATE (line 646) | COORDINATE TerrainClass::Center_Coord(void) const
  function COORDINATE (line 713) | COORDINATE TerrainClass::Target_Coord(void) const

FILE: CODE/TERRAIN.H
  function operator (line 67) | operator TerrainType(void) const {return Class->Type;}
  function virtual (line 79) | virtual ObjectTypeClass const & Class_Of(void) const {return *Class;}
  function virtual (line 86) | virtual COORDINATE Render_Coord(void) const {return Coord;}
  function virtual (line 87) | virtual COORDINATE Sort_Y(void) const {return Coord_Add(Coord, Class->Ce...
  function virtual (line 108) | virtual void Clicked_As_Target(int) {}

FILE: CODE/TEVENT.CPP
  function NeedType (line 563) | NeedType Event_Needs(TEventType event)
  function TEventType (line 624) | TEventType Event_From_Name (char const * name)
  function AttachType (line 677) | AttachType Attaches_To(TEventType event)

FILE: CODE/TEVENT.H
  type TEventType (line 46) | typedef enum TEventType {
  type TDEventClass (line 93) | struct TDEventClass {
  type TEventClass (line 117) | struct TEventClass {
  function Event (line 142) | TEventClass(TEventType event) : Event(event) {Data.Value = 0;}
  function Team (line 143) | TEventClass(NoInitClass const & x) : Team(x) {}
  type AttachType (line 154) | typedef enum AttachType {
  function class (line 168) | class EventChoiceClass {

FILE: CODE/TEXTBTN.H
  function class (line 44) | class TextButtonClass : public ToggleClass

FILE: CODE/THEME.CPP
  function ThemeType (line 238) | ThemeType ThemeClass::Next_Song(ThemeType theme) const
  function ThemeType (line 534) | ThemeType ThemeClass::From_Name(char const * name) const

FILE: CODE/THEME.H
  function class (line 41) | class ThemeClass

FILE: CODE/TOGGLE.H
  function class (line 49) | class ToggleClass : public ControlClass

FILE: CODE/TOOLTIP.CPP
  function ToolTipClass (line 67) | ToolTipClass* ToolTipClass::GetToolTipHit()
  function SaveSurfaceRect (line 221) | bool SaveSurfaceRect( int xRect, int yRect, int wRect, int hRect, char* ...
  function RestoreSurfaceRect (line 263) | bool RestoreSurfaceRect( int xRect, int yRect, int wRect, int hRect, con...

FILE: CODE/TOOLTIP.H
  function class (line 32) | class ToolTipClass

FILE: CODE/TRACKER.CPP
  function Detach_This_From_All (line 64) | void Detach_This_From_All(TARGET target, bool all)

FILE: CODE/TRIGGER.CPP
  function TARGET (line 425) | TARGET TriggerClass::As_Target(void) const
  function TriggerClass (line 453) | TriggerClass * Find_Or_Make(TriggerTypeClass * trigtype)

FILE: CODE/TRIGGER.H
  function class (line 41) | class TriggerClass {

FILE: CODE/TRIGTYPE.CPP
  function TARGET (line 170) | TARGET TriggerTypeClass::As_Target(void) const
  function AttachType (line 1815) | AttachType TriggerTypeClass::Attaches_To(void) const
  function TriggerTypeClass (line 2119) | TriggerTypeClass * TriggerTypeClass::From_Name(char const * name)

FILE: CODE/TRIGTYPE.H
  type MultiStyleType (line 51) | typedef enum MultiStyleType {
  function class (line 59) | class TriggerTypeClass : public AbstractTypeClass

FILE: CODE/TURRET.H
  function class (line 43) | class TurretClass : public DriveClass

FILE: CODE/TXTLABEL.H
  function class (line 41) | class TextLabelClass : public GadgetClass

FILE: CODE/TYPE.H
  function class (line 53) | class AbstractTypeClass
  function class (line 105) | class HouseTypeClass : public AbstractTypeClass
  function class (line 183) | class ObjectTypeClass : public AbstractTypeClass
  function class (line 321) | class TechnoTypeClass : public ObjectTypeClass
  function class (line 594) | class BuildingTypeClass : public TechnoTypeClass {
  function class (line 847) | class UnitTypeClass : public TechnoTypeClass
  function class (line 1025) | class VesselTypeClass : public TechnoTypeClass
  function class (line 1114) | class InfantryTypeClass : public TechnoTypeClass
  function TechnoTypeClass (line 1305) | AircraftTypeClass(NoInitClass const & x) : TechnoTypeClass(x) {}
  function Init (line 1334) | static void Init(TheaterType ) {}
  function virtual (line 1339) | virtual bool Create_And_Place(CELL, HousesType) const;
  function class (line 1526) | class TerrainTypeClass : public ObjectTypeClass
  function class (line 1599) | class TemplateTypeClass: public ObjectTypeClass
  function class (line 1654) | class AnimTypeClass : public ObjectTypeClass
  function class (line 1845) | class OverlayTypeClass: public ObjectTypeClass
  function class (line 1962) | class SmudgeTypeClass : public ObjectTypeClass

FILE: CODE/UDATA.CPP
  function UnitType (line 983) | UnitType UnitTypeClass::From_Name(char const * name)
  function ObjectClass (line 1189) | ObjectClass * UnitTypeClass::Create_One_Of(HouseClass * house) const
  function UnitTypeClass (line 1210) | UnitTypeClass & UnitTypeClass::As_Reference(UnitType type)

FILE: CODE/UDPADDR.CPP
  function Get_Broadcast_Addresses (line 26) | bool Get_Broadcast_Addresses (void)

FILE: CODE/UNIT.CPP
  function Recoil_Adjust (line 125) | void Recoil_Adjust(DirType dir, int &x, int &y)
  function COORDINATE (line 373) | COORDINATE UnitClass::Sort_Y(void) const
  function MoveType (line 3069) | MoveType UnitClass::Can_Enter_Cell(CELL cell, FacingType ) const
  function ActionType (line 3391) | ActionType UnitClass::What_Action(ObjectClass const * object) const
  function ActionType (line 3554) | ActionType UnitClass::What_Action(CELL cell) const
  function DirType (line 3712) | DirType UnitClass::Desired_Load_Dir(ObjectClass * passenger, CELL & move...
  function InfantryType (line 3965) | InfantryType UnitClass::Crew_Type(void) const
  function DirType (line 4053) | DirType UnitClass::Fire_Direction(void) const
  function FireErrorType (line 4136) | FireErrorType UnitClass::Can_Fire(TARGET target, int which) const
  function BulletClass (line 4206) | BulletClass * UnitClass::Fire_At(TARGET target, int which)
  function ObjectTypeClass (line 4249) | ObjectTypeClass const & UnitClass::Class_Of(void) const
  function fixed (line 4272) | fixed UnitClass::Tiberium_Load(void) const
  function TARGET (line 4620) | TARGET UnitClass::Greatest_Threat(ThreatType threat) const

FILE: CODE/UNIT.H
  function class (line 53) | class UnitClass :	public DriveClass

FILE: CODE/UTRACKER.H
  function class (line 46) | class	UnitTrackerClass {

FILE: CODE/VDATA.CPP
  function VesselTypeClass (line 352) | VesselTypeClass & VesselTypeClass::As_Reference(VesselType type)
  function BuildingClass (line 383) | BuildingClass * VesselTypeClass::Who_Can_Build_Me(bool intheory, bool le...
  function ObjectClass (line 485) | ObjectClass * VesselTypeClass::Create_One_Of(HouseClass * house) const
  function VesselType (line 681) | VesselType VesselTypeClass::From_Name(char const * name)

FILE: CODE/VECTOR.CPP
  function BooleanVectorClass (line 458) | BooleanVectorClass & BooleanVectorClass::operator =(BooleanVectorClass c...

FILE: CODE/VECTOR.H
  function T (line 92) | T const & operator[](unsigned index) const {return(Vector[index]);}
  function Length (line 97) | unsigned Length(void) const {return VectorMax;}
  function virtual (line 140) | virtual void Clear(void) {ActiveCount = 0;VectorClass<T>::Clear();}
  function Count (line 143) | int Count(void) const {return(ActiveCount);}
  function Delete_All (line 156) | void Delete_All(void) {ActiveCount = 0;}
  function Set_Growth_Step (line 159) | int Set_Growth_Step(int step) {return(GrowthStep = step);}
  function Growth_Step (line 162) | int Growth_Step(void) {return GrowthStep;}
  function virtual (line 164) | virtual int ID(T const * ptr) {return(VectorClass<T>::ID(ptr));}
  function class (line 196) | class BooleanVectorClass

FILE: CODE/VERSION.CPP
  function CommProtocolType (line 494) | CommProtocolType VersionClass::Version_Protocol(unsigned long version)

FILE: CODE/VERSION.H
  type CommProtocolType (line 68) | typedef enum CommProtocolEnum {
  type VersionProtocolType (line 76) | typedef struct {
  function class (line 81) | class VersionClass {

FILE: CODE/VESSEL.CPP
  function ObjectTypeClass (line 236) | ObjectTypeClass const & VesselClass::Class_Of(void) const
  function MoveType (line 259) | MoveType VesselClass::Can_Enter_Cell(CELL cell, FacingType ) const
  function ActionType (line 751) | ActionType VesselClass::What_Action(ObjectClass const * object) const
  function COORDINATE (line 1158) | COORDINATE VesselClass::Fire_Coord(int which) const
  function TARGET (line 1223) | TARGET VesselClass::Greatest_Threat(ThreatType threat) const
  function DirType (line 1556) | DirType VesselClass::Desired_Load_Dir(ObjectClass * passenger, CELL & mo...
  function ActionType (line 2133) | ActionType VesselClass::What_Action(CELL cell) const
  function BulletClass (line 2332) | BulletClass * VesselClass::Fire_At(TARGET target, int which)

FILE: CODE/VESSEL.H
  function class (line 47) | class VesselClass : public DriveClass

FILE: CODE/VISUDLG.H
  function class (line 44) | class VisualControlsClass

FILE: CODE/VORTEX.H
  function class (line 49) | class ChronalVortexClass {

FILE: CODE/W95TRACE.CPP
  function OutputDebugStringW95 (line 31) | void OutputDebugStringW95( LPCTSTR /*lpOutputString*/, ...)

FILE: CODE/WARHEAD.CPP
  function WarheadTypeClass (line 143) | WarheadTypeClass * WarheadTypeClass::As_Pointer(WarheadType warhead)

FILE: CODE/WARHEAD.H
  function class (line 46) | class WarheadTypeClass

FILE: CODE/WEAPON.CPP
  function WeaponTypeClass (line 173) | WeaponTypeClass * WeaponTypeClass::As_Pointer(WeaponType weapon)
  function WeaponType (line 258) | WeaponType Weapon_From_Name(char const * name)
  function ArmorType (line 288) | ArmorType Armor_From_Name(char const * name)
  function ThreatType (line 317) | ThreatType WeaponTypeClass::Allowed_Threats(void) const

FILE: CODE/WEAPON.H
  function class (line 48) | class WeaponTypeClass

FILE: CODE/WINSTUB.CPP
  function output (line 57) | void output(short,short)
  function Focus_Loss (line 83) | void Focus_Loss(void)
  function Focus_Restore (line 90) | void Focus_Restore(void)
  function Check_For_Focus_Loss (line 117) | void Check_For_Focus_Loss(void)
  function Windows_Procedure (line 166) | long FAR PASCAL _export Windows_Procedure(HWND hwnd, UINT message, UINT ...
  function WWDebugString (line 365) | void WWDebugString (char *string)
  function Create_Main_Window (line 435) | void Create_Main_Window ( HANDLE instance , int command_show , int width...
  function Window_Dialog_Box (line 497) | void Window_Dialog_Box(HANDLE  hinst, LPCTSTR  lpszTemplate, HWND  hwndO...
  type tColourList (line 530) | struct tColourList {
  function Colour_Debug (line 557) | void Colour_Debug (int call_number)
  function BOOL (line 579) | BOOL Any_Locked (void)
  function Flag_To_Set_Palette (line 673) | void Flag_To_Set_Palette(unsigned char *palette, long numbytes, unsigned...
  function Check_VQ_Palette_Set (line 683) | void Check_VQ_Palette_Set(void)
  function SetPalette (line 695) | void __cdecl SetPalette(unsigned char *palette, long, unsigned long)
  function Assert_Failure (line 725) | void Assert_Failure (char *expression, int line, char *file)
  function Memory_Error_Handler (line 791) | void Memory_Error_Handler(void)
  function Load_Title_Screen (line 817) | void Load_Title_Screen(char *name, GraphicViewPortClass *video_page, uns...
  function GraphicBufferClass (line 869) | GraphicBufferClass* Read_PCX_File(char* name, char* palette, void *Buff,...

FILE: CODE/WOLAPI/WOLAPI.H
  type interface (line 48) | typedef interface IRTPatcher
  type interface (line 54) | typedef interface IRTPatcherEvent
  type interface (line 60) | typedef interface IChat IChat;
  type interface (line 66) | typedef interface IChatEvent
  type interface (line 72) | typedef interface IDownload IDownload;
  type interface (line 78) | typedef interface IDownloadEvent
  type interface (line 84) | typedef interface INetUtil INetUtil;
  type interface (line 90) | typedef interface INetUtilEvent
  type interface (line 96) | typedef interface IChat2 IChat2;
  type interface (line 102) | typedef interface IChat2Event
  type class (line 110) | typedef class RTPatcher RTPatcher;
  type RTPatcher (line 112) | typedef struct RTPatcher RTPatcher;
  type class (line 122) | typedef class Chat Chat;
  type Chat (line 124) | typedef struct Chat Chat;
  type class (line 134) | typedef class Download Download;
  type Download (line 136) | typedef struct Download Download;
  type class (line 146) | typedef class NetUtil NetUtil;
  type NetUtil (line 148) | typedef struct NetUtil NetUtil;
  type class (line 158) | typedef class Chat2 Chat2;
  type Chat2 (line 160) | typedef struct Chat2 Chat2;
  type IRTPatcherVtbl (line 203) | typedef struct IRTPatcherVtbl
  function interface (line 229) | interface IRTPatcher
  type IRTPatcherEventVtbl (line 321) | typedef struct IRTPatcherEventVtbl
  function interface (line 348) | interface IRTPatcherEvent
  type Ladder (line 424) | struct  Ladder
  type GroupID (line 444) | typedef int GroupID;
  type Server (line 446) | struct  Server
  type Channel (line 460) | struct  Channel
  type User (line 481) | struct  User
  type Group (line 495) | struct  Group
  type Update (line 503) | struct  Update
  type Server (line 516) | typedef struct Server Server;
  type Channel (line 518) | typedef struct Channel Channel;
  type User (line 520) | typedef struct User User;
  type Group (line 522) | typedef struct Group Group;
  type Update (line 524) | typedef struct Update Update;
  type Ladder (line 526) | typedef struct Ladder Ladder;
  type IChatVtbl (line 684) | typedef struct IChatVtbl
  function interface (line 886) | interface IChat
  type IChatEventVtbl (line 1711) | typedef struct IChatEventVtbl
  function interface (line 1893) | interface IChatEvent
  type IDownloadVtbl (line 2443) | typedef struct IDownloadVtbl
  function interface (line 2476) | interface IDownload
  type IDownloadEventVtbl (line 2595) | typedef struct IDownloadEventVtbl
  function interface (line 2634) | interface IDownloadEvent
  type INetUtilVtbl (line 2802) | typedef struct INetUtilVtbl
  function interface (line 2863) | interface INetUtil
  type INetUtilEventVtbl (line 3043) | typedef struct INetUtilEventVtbl
  function interface (line 3080) | interface INetUtilEvent
  type GID (line 3174) | typedef unsigned long GID;
  type GTYPE_ (line 3177) | enum GTYPE_
  type GTYPE (line 3182) | typedef enum GTYPE_ GTYPE;
  type CHAN_CTYPE_ (line 3185) | enum CHAN_CTYPE_
  type CHAN_CTYPE (line 3190) | typedef enum CHAN_CTYPE_ CHAN_CTYPE;
  type IChat2Vtbl (line 3238) | typedef struct IChat2Vtbl
  function interface (line 3300) | interface IChat2
  type IChat2EventVtbl (line 3558) | typedef struct IChat2EventVtbl
  function interface (line 3623) | interface IChat2Event

FILE: CODE/WOLAPI/WOLAPI_I.C
  type IID (line 41) | typedef struct _IID
  type IID (line 53) | typedef IID CLSID;

FILE: CODE/WOLAPIOB.CPP
  function HRESULT (line 599) | HRESULT WolapiObject::GetChatServer()
  function HRESULT (line 682) | HRESULT WolapiObject::AttemptLogin( const char* szName, const char* szPa...
  function HRESULT (line 984) | HRESULT WolapiObject::ChannelJoin( const char* szChannelName, const char...
  function HRESULT (line 995) | HRESULT WolapiObject::ChannelJoin( Channel* pChannelToJoin )
  type CHANNELUSERINFO (line 1116) | struct CHANNELUSERINFO
  function HousesType (line 1386) | HousesType WolapiObject::PullPlayerHouse_From( const char* szSource )
  function HRESULT (line 1810) | HRESULT WolapiObject::Locate( const char* szUser )
  function HRESULT (line 1848) | HRESULT WolapiObject::Page( const char* szUser, const char* szSend, bool...
  function User (line 3054) | User* WolapiObject::pGameHost()
  function HPALETTE (line 3324) | HPALETTE GetCurrentScreenPalette()
  function RemapDIBToPalette (line 3366) | void RemapDIBToPalette( HPALETTE hPal, const char* pDIB )		//	Note: pDIB...
  function HostNameFromGameChannelName (line 3428) | void HostNameFromGameChannelName( char* szNameToSet, const char* szChann...

FILE: CODE/WOLAPIOB.H
  type WOL_LEVEL (line 74) | enum WOL_LEVEL
  type WOL_GAMETYPEINFO (line 88) | struct WOL_GAMETYPEINFO
  type WOL_GAMEOPT (line 98) | enum WOL_GAMEOPT
  type DIBICON (line 114) | enum DIBICON
  type DIBICONINFO (line 128) | struct DIBICONINFO
  type CHATSAVE (line 137) | struct CHATSAVE			//	What we save about each individual list item.
  type CREATEGAMEINFO (line 144) | struct CREATEGAMEINFO
  function class (line 168) | class WolapiObject

FILE: CODE/WOLEDIT.H
  function class (line 30) | class WOLEditClass : public EditClass

FILE: CODE/WOL_CGAM.CPP
  function CREATEGAMEINFO (line 40) | CREATEGAMEINFO WOL_CreateGame_Dialog( WolapiObject* pWO )
  function SetPlayerCountList (line 366) | void SetPlayerCountList( IconListClass& PlayerCountList, int iPlayerMax,...

FILE: CODE/WOL_CHAT.CPP
  type LIST_EXPAND_STATE (line 42) | enum LIST_EXPAND_STATE
  function WOL_Chat_Dialog (line 73) | int WOL_Chat_Dialog( WolapiObject* pWO )
  function WOL_PrintMessage (line 1018) | void WOL_PrintMessage( IconListClass& ILTarget, const char* szText, Play...
  function WOL_PrintMessage (line 1025) | void WOL_PrintMessage( IconListClass& ILTarget, const char* szText, Rema...
  function OnExpandChannelList (line 1033) | bool OnExpandChannelList( IconListClass& chanlist, IconListClass& userli...
  function OnExpandUserList (line 1057) | bool OnExpandUserList( IconListClass& chanlist, IconListClass& userlist )
  function ResizeChannelList (line 1081) | void ResizeChannelList( IconListClass& chanlist, bool bExpand )
  function ResizeUserList (line 1091) | void ResizeUserList( IconListClass& userlist, bool bExpand )
  function EnterChannel (line 1101) | bool EnterChannel( WolapiObject* pWO, IconListClass& chatlist, IconListC...
  function EnterChannel (line 1113) | bool EnterChannel( WolapiObject* pWO, IconListClass& chatlist, Channel* ...
  function ExitChatChannel (line 1284) | bool ExitChatChannel( WolapiObject* pWO )
  function CreateChatChannel (line 1302) | void CreateChatChannel( WolapiObject* pWO )
  function CreateGameChannel (line 1343) | bool CreateGameChannel( WolapiObject* pWO, const CREATEGAMEINFO& cgi )
  function ProcessChannelListSelection (line 1377) | bool ProcessChannelListSelection( WolapiObject* pWO, IconListClass& chat...
  function bLinkInList (line 1569) | bool bLinkInList( const LinkClass* pListHead, const LinkClass* pLinkToFi...

FILE: CODE/WOL_DNLD.CPP
  function WOL_Download_Dialog (line 29) | bool WOL_Download_Dialog( IDownload* pDownload, RADownloadEventSink* pDo...

FILE: CODE/WOL_GSUP.CPP
  function RESULT_WOLGSUP (line 192) | RESULT_WOLGSUP WOL_GameSetupDialog::Run()
  function RESULT_WOLGSUP (line 452) | RESULT_WOLGSUP WOL_GameSetupDialog::Show()
  function PlayerColorType (line 1886) | PlayerColorType WOL_GameSetupDialog::GetPlayerColor( const char* szName )
  function HousesType (line 1925) | HousesType WOL_GameSetupDialog::GetPlayerHouse( const char* szName )
  function PlayerColorType (line 2647) | PlayerColorType PlayerColorTypeOf( RemapControlType* pColorRemap )
  function PlayerColorType (line 3000) | PlayerColorType WOL_GameSetupDialog::ColorNextAvailable()
  function bSpecialAftermathScenario (line 3475) | bool bSpecialAftermathScenario( const char* szScenarioDescription )
  function ScenarioIndex_From_Filename (line 3491) | int ScenarioIndex_From_Filename( const char* szScenarioFilename )

FILE: CODE/WOL_GSUP.H
  type RESULT_WOLGSUP (line 44) | enum RESULT_WOLGSUP
  type GAMEPARAMS (line 55) | struct GAMEPARAMS
  function class (line 64) | class WOL_GameSetupDialog

FILE: CODE/WOL_LOGN.CPP
  function WOL_Login_Dialog (line 44) | int WOL_Login_Dialog( WolapiObject* pWO )
  function ReadSavedNicks (line 504) | bool ReadSavedNicks( WolapiObject* pWO, IconListClass& NickList, char* s...
  function bSaveNick (line 536) | bool bSaveNick( WolapiObject* pWO, const char* szNickToSave, const char*...
  function DeleteNick (line 614) | void DeleteNick( WolapiObject* pWO, int iOneBasedEntryToDelete )

FILE: CODE/WOL_MAIN.CPP
  function WOL_Main (line 48) | int WOL_Main()
  function ReregisterWolapiDLL (line 197) | bool ReregisterWolapiDLL()
  function HandleDLLFail (line 259) | void HandleDLLFail()

FILE: CODE/WOL_OPT.CPP
  function WOL_Options_Dialog (line 35) | bool WOL_Options_Dialog( WolapiObject* pWO, bool bCalledFromGame )

FILE: CODE/WRITEPCX.CPP
  function Write_PCX_File (line 91) | int Write_PCX_File(FileClass & file, GraphicBufferClass & pic, PaletteCl...
  function Write_Pcx_ScanLine (line 190) | static void Write_Pcx_ScanLine(FileClass & file, int scansize, char * ptr)

FILE: CODE/WSPIPX.CPP
  type sockaddr (line 219) | struct sockaddr

FILE: CODE/WSPIPX.H
  function class (line 58) | class IPXInterfaceClass : public WinsockInterfaceClass {

FILE: CODE/WSPROTO.H
  type ProtocolEnum (line 70) | typedef enum tProtocolEnum {
  function class (line 85) | class WinsockInterfaceClass {

FILE: CODE/WSPUDP.CPP
  type sockaddr_in (line 149) | struct 	sockaddr_in
  type hostent (line 185) | struct hostent
  type sockaddr_in (line 312) | struct 	sockaddr_in

FILE: CODE/WSPUDP.H
  function class (line 50) | class UDPInterfaceClass : public WinsockInterfaceClass {

FILE: CODE/WWALLOC.H
  type MemoryFlagType (line 35) | typedef enum MemoryFlagType {

FILE: CODE/WWFILE.H
  function class (line 72) | class FileClass

FILE: CODE/XPIPE.H
  function class (line 50) | class BufferPipe : public Pipe
  function class (line 75) | class FilePipe : public Pipe

FILE: CODE/XSTRAW.H
  function class (line 51) | class BufferStraw : public Straw
  function class (line 73) | class FileStraw : public Straw

FILE: IPX/FIXTHUNK.CPP
  function main (line 69) | int main(int argc, char *argv[])

FILE: IPX/IPX16C.CPP
  function CALLBACK (line 37) | int CALLBACK LibMain (HANDLE, WORD, WORD, LPSTR)
  function BOOL (line 44) | BOOL FAR __pascal _export IPX_Initialise(int)
  function IPX_Uninitialise (line 53) | void FAR __pascal _export IPX_Uninitialise(void)

FILE: IPX/IPXTEST.CPP
  function WinMain (line 28) | int PASCAL WinMain ( HINSTANCE instance , HINSTANCE , char *, int)

FILE: IPX/OK/FIXTHUNK.CPP
  function main (line 69) | int main(int argc, char *argv[])

FILE: IPX/OK/IPX16C.CPP
  function CALLBACK (line 37) | int CALLBACK LibMain (HANDLE, WORD, WORD, LPSTR)
  function BOOL (line 44) | BOOL FAR __pascal _export IPX_Initialise(int)
  function IPX_Uninitialise (line 53) | void FAR __pascal _export IPX_Uninitialise(void)

FILE: IPX/OK/IPXTEST.CPP
  function WinMain (line 28) | int PASCAL WinMain ( HINSTANCE instance , HINSTANCE , char *, int)

FILE: IPX/OK/THIPX16C.CPP
  function CALLBACK (line 27) | int CALLBACK LibMain (HANDLE, WORD, WORD, LPSTR)
  function BOOL (line 38) | BOOL FAR PASCAL DllEntryPoint_ (DWORD dwReason, WORD hInst, WORD, WORD, ...

FILE: IPX/OK/THIPX32C.CPP
  function BOOL (line 36) | BOOL APIENTRY DllMain(DWORD hInst, DWORD dwReason, DWORD dwReserved)
  function BOOL (line 49) | BOOL APIENTRY LibMain(DWORD hInst, DWORD dwReason, DWORD dwReserved)

FILE: IPX/THIPX16C.CPP
  function CALLBACK (line 71) | int CALLBACK LibMain (HANDLE, WORD, WORD, LPSTR)
  function BOOL (line 92) | BOOL FAR PASCAL DllEntryPoint_ (DWORD dwReason, WORD hInst, WORD, WORD, ...

FILE: IPX/THIPX32C.CPP
  function BOOL (line 73) | BOOL APIENTRY DllMain(DWORD hInst, DWORD dwReason, DWORD dwReserved)
  function BOOL (line 97) | BOOL APIENTRY LibMain(DWORD hInst, DWORD dwReason, DWORD dwReserved)

FILE: LAUNCHER/256BMP.C
  function DWORD (line 31) | DWORD GetDibInfoHeaderSize (BYTE huge * lpDib)
  function WORD (line 36) | WORD GetDibWidth (BYTE huge * lpDib)
  function WORD (line 44) | WORD GetDibHeight (BYTE huge * lpDib)
  function BYTE (line 52) | BYTE huge * GetDibBitsAddr (BYTE huge * lpDib)
  function BYTE (line 92) | BYTE huge * ReadDib (char * szFileName)
  function _export (line 151) | _export MainWndProc(HWND hWnd,UINT message,UINT wParam,LONG lParam)

FILE: LAUNCHER/CONFIGFILE.CPP
  function bit8 (line 58) | bit8 ConfigFile::readFile(FILE *in)
  function bit8 (line 87) | bit8 ConfigFile::getString(Wstring &key,Wstring &value)
  function bit8 (line 93) | bit8 ConfigFile::getString(char *key,Wstring &value)
  function bit8 (line 101) | bit8 ConfigFile::getInt(Wstring &key,sint32 &value)
  function bit8 (line 112) | bit8 ConfigFile::getInt(char *key,sint32 &value)
  function bit8 (line 122) | bit8 ConfigFile::getInt(Wstring &key,sint16 &value)
  function bit8 (line 133) | bit8 ConfigFile::getInt(char *key,sint16 &value)
  function uint32 (line 146) | static uint32 Wstring_Hash(Wstring &string)

FILE: LAUNCHER/CONFIGFILE.H
  function class (line 35) | class ConfigFile

FILE: LAUNCHER/DIALOG.CPP
  function HWND (line 30) | HWND Create_Patch_Dialog(void)
  function BOOL (line 40) | BOOL CALLBACK Patch_Window_Proc(HWND hwnd, UINT iMsg, WPARAM wParam, LPA...

FILE: LAUNCHER/FILED.H
  function class (line 24) | class FileD : public OutputDevice

FILE: LAUNCHER/FINDPATCH.CPP
  function Find_Patch (line 33) | int Find_Patch(OUT char *filename,int maxlen, ConfigFile &config)
  function bit8 (line 85) | bit8 Get_App_Dir(OUT char *filename,int maxlen, ConfigFile &config,int i...
  function Delete_Patches (line 156) | void Delete_Patches(ConfigFile &config)

FILE: LAUNCHER/LOADBMP.CPP
  function bit8 (line 38) | bit8 LoadBmp::init(char *filename,HWND hwnd)
  function bit8 (line 170) | bit8 LoadBmp::drawBmp(void)

FILE: LAUNCHER/LOADBMP.H
  function class (line 31) | class LoadBmp

FILE: LAUNCHER/MAIN.CPP
  function main (line 72) | int main(int argc, char *argv[])
  function CreatePrimaryWin (line 176) | void CreatePrimaryWin(char *prefix)
  function myChdir (line 240) | void myChdir(char *path)

FILE: LAUNCHER/MONOD.H
  function class (line 60) | class MonoD : public OutputDevice

FILE: LAUNCHER/ODEVICE.H
  function class (line 24) | class OutputDevice

FILE: LAUNCHER/PATCH.CPP
  function BOOL (line 42) | BOOL CALLBACK Update_Info_Proc(HWND hwnd, UINT iMsg, WPARAM wParam, LPAR...
  function Apply_Patch (line 136) | void Apply_Patch(char *patchfile,ConfigFile &config,int skuIndex)
  function Shutdown_Computer_Now (line 326) | void Shutdown_Computer_Now(void)
  function LPVOID (line 378) | LPVOID CALLBACK __export PatchCallBack(UINT Id, LPVOID Param)

FILE: LAUNCHER/PROCESS.CPP
  function bit8 (line 31) | bit8 Create_Process(Process &process)
  function bit8 (line 51) | bit8 Wait_Process(Process &process)
  function bit8 (line 65) | bit8 Read_Process_Info(ConfigFile &config,OUT Process &info)

FILE: LAUNCHER/PROCESS.H
  function class (line 27) | class Process

FILE: LAUNCHER/STREAMER.H
  function class (line 39) | class Streamer : public streambuf

FILE: LAUNCHER/UTIL/FILED.H
  function class (line 24) | class FileD : public OutputDevice

FILE: LAUNCHER/UTIL/MBOXD.H
  function class (line 24) | class MboxD : public OutputDevice

FILE: LAUNCHER/UTIL/MONOD.H
  function class (line 60) | class MonoD : public OutputDevice

FILE: LAUNCHER/UTIL/ODEVICE.H
  function class (line 24) | class OutputDevice

FILE: LAUNCHER/UTIL/STDERRD.H
  function class (line 24) | class StderrD : public OutputDevice

FILE: LAUNCHER/UTIL/STDOUTD.H
  function class (line 24) | class StdoutD : public OutputDevice

FILE: LAUNCHER/UTIL/STREAMER.H
  function class (line 39) | class Streamer : public streambuf

FILE: LAUNCHER/UTIL/SYSLOGD.H
  function class (line 28) | class SyslogD : public OutputDevice

FILE: LAUNCHER/UTIL/WDEBUG.CPP
  function ostream (line 130) | ostream *MsgManager::debugStream(void)
  function ostream (line 135) | ostream *MsgManager::infoStream(void)
  function ostream (line 140) | ostream *MsgManager::warnStream(void)
  function ostream (line 145) | ostream *MsgManager::errorStream(void)

FILE: LAUNCHER/UTIL/WDEBUG.H
  function class (line 193) | class MsgManager

FILE: LAUNCHER/WDEBUG.CPP
  function ostream (line 125) | ostream *MsgManager::debugStream(void)
  function ostream (line 130) | ostream *MsgManager::infoStream(void)
  function ostream (line 135) | ostream *MsgManager::warnStream(void)
  function ostream (line 140) | ostream *MsgManager::errorStream(void)

FILE: LAUNCHER/WDEBUG.H
  function class (line 170) | class MsgManager

FILE: LAUNCHER/WINBLOWS.CPP
  function WinMain (line 37) | int PASCAL WinMain( HINSTANCE instance, HINSTANCE, char *command_line, i...
  function Print_WM (line 87) | int Print_WM(UINT message,char *out)

FILE: LAUNCHER/WSTRING.CPP
  function bit8 (line 57) | bit8 Wstring::operator==(IN char *other)
  function bit8 (line 67) | bit8 Wstring::operator==(IN Wstring &other)
  function bit8 (line 82) | bit8 Wstring::operator!=(IN char *other)
  function bit8 (line 91) | bit8 Wstring::operator!=(IN Wstring &other)
  function Wstring (line 106) | Wstring &Wstring::operator=(char *other)
  function Wstring (line 113) | Wstring &Wstring::operator=(IN Wstring &other)
  function bit8 (line 123) | bit8 Wstring::cat(IN char *s)
  function bit8 (line 162) | bit8 Wstring::cat(uint32 size, IN char *s)
  function bit8 (line 198) | bit8 Wstring::cat(IN Wstring &other)
  function Wstring (line 203) | Wstring &Wstring::operator+=(IN char *string)
  function Wstring (line 209) | Wstring &Wstring::operator+=(IN Wstring &other)
  function Wstring (line 215) | Wstring Wstring::operator+(IN char *string)
  function Wstring (line 222) | Wstring Wstring::operator+(IN Wstring &s)
  function bit8 (line 277) | bit8 Wstring::removeChar(char c)
  function uint32 (line 350) | uint32 Wstring::length(void)
  function bit8 (line 359) | bit8 Wstring::insert(char *instring, uint32 pos)
  function bit8 (line 382) | bit8 Wstring::insert(char k, uint32 pos)
  function bit8 (line 424) | bit8 Wstring::replace(char *replaceThis, char *withThis)
  function bit8 (line 458) | bit8 Wstring::set(IN char *s)
  function bit8 (line 477) | bit8 Wstring::set(char c, uint32 index)
  function bit8 (line 539) | bit8 Wstring::truncate(uint32 len)
  function bit8 (line 549) | bit8 Wstring::truncate(char c)
  function sint32 (line 566) | sint32 Wstring::getToken(int offset,char *delim,Wstring &out)
  function sint32 (line 590) | sint32 Wstring::getLine(int offset, Wstring &out)

FILE: LAUNCHER/WSTRING.H
  function class (line 36) | class Wstring

FILE: LAUNCHER/WSTYPES.H
  type bit8 (line 61) | typedef char               bit8;
  type sint8 (line 62) | typedef char               sint8;
  type uint8 (line 63) | typedef unsigned char      uint8;
  type sint16 (line 64) | typedef signed short int   sint16;
  type uint16 (line 65) | typedef unsigned short int uint16;
  type sint32 (line 66) | typedef signed int         sint32;
  type uint32 (line 67) | typedef unsigned int       uint32;

FILE: TOOLS/AUDIOMAK/AUDIOMAK.CPP
  function main (line 146) | int main(int argc, char **argv)
  function Log_RawFrame (line 326) | inline void Log_RawFrame(long val) {rawframes += val;}
  function Log_Raw (line 327) | inline void Log_Raw(long val) {raw += val;}
  function Log_5Bit (line 328) | inline void Log_5Bit(long val) {bit5 += val;}
  function Log_4Bit (line 329) | inline void Log_4Bit(long val) {bit4 += val;}
  function Log_2Bit (line 330) | inline void Log_2Bit(long val) {bit2 += val;}
  function Log_0Bit (line 331) | inline void Log_0Bit(long val) {bit0 += val;}
  function Log_Overhead (line 332) | inline void Log_Overhead(long val) {overhead += val;}
  function Log_Compressed (line 333) | inline void Log_Compressed(long val) {compressed += val;}
  function Log_Original (line 334) | inline void Log_Original(long val) {original += val;}
  function Log_Rate (line 335) | inline void Log_Rate(long val) {rate = val;}
  function Stat_Reset (line 337) | void Stat_Reset(void)
  function Stat_Dump (line 353) | void Stat_Dump(void)
  function Process (line 371) | void Process(char const *src, char const *name, char const *dest)
  function Convert (line 402) | void Convert(char const *src, char const *dst)
  function Is_WAV (line 442) | int Is_WAV(FILE *src)
  function Convert_WAV (line 464) | void Convert_WAV(FILE * src, FILE * dst)
  function Is_VOC (line 621) | int Is_VOC(FILE *src)
  function Convert_VOC (line 640) | void Convert_VOC(FILE *src, FILE *dst)
  function Compress_Frame (line 888) | long Compress_Frame(void * source, void * dest, long size)
  function Decompress_Frame (line 1171) | long Decompress_Frame(void * source, void * dest, long size)

FILE: TOOLS/MIX/MIXFILE.CPP
  class DataClass (line 61) | class DataClass {
  function main (line 103) | int main(int argc, char ** argv)
  function compfunc (line 450) | int compfunc(const void *ptr1, const void *ptr2)
  function Calc_CRC (line 598) | long Calc_CRC(void const *data, long size)

FILE: VQ/INCLUDE/HMI32/SOS.H
  type _SOS_CAPABILITIES (line 48) | typedef struct _tagCAPABILITIES
  type _SOS_CAPABILITIES (line 70) | typedef _SOS_CAPABILITIES far *  LPSOSDEVICECAPS;
  type _SOS_FILL_INFO (line 175) | typedef  struct   _tagFillInfo
  type _SOS_CAPS_INFO (line 186) | typedef  struct   _tagCapsInfo
  type _SOS_SAMPLE (line 200) | typedef  struct   _tagSAMPLE
  type _FILEHEADER (line 296) | typedef struct
  type _DRIVERHEADER (line 313) | typedef struct
  type _SOS_HARDWARE (line 333) | typedef struct
  type _SOS_START_SAMPLE (line 350) | typedef struct
  type _SOS_INIT_DRIVER (line 416) | typedef struct
  type EVDS_STRUCT (line 539) | typedef struct
  type VDS_STRUCT (line 550) | typedef struct

FILE: VQ/INCLUDE/HMI32/SOSDEFS.H
  type BOOL (line 53) | typedef  int            BOOL;
  type UINT (line 54) | typedef  unsigned int   UINT;
  type BYTE (line 55) | typedef  unsigned char  BYTE;
  type WORD (line 56) | typedef  unsigned       WORD;
  type LONG (line 58) | typedef  signed long    LONG;
  type DWORD (line 60) | typedef  unsigned long  DWORD;
  type BYTE (line 62) | typedef  BYTE  *        PBYTE;
  type WORD (line 64) | typedef  WORD  *        PWORD;
  type LONG (line 65) | typedef  LONG  *        PLONG;
  type VOID (line 66) | typedef  VOID  *        PVOID;
  type BYTE (line 68) | typedef  BYTE  far   *  LPBYTE;
  type BYTE (line 69) | typedef  BYTE  far   *  LPSTR;
  type WORD (line 70) | typedef  WORD  far   *  LPWORD;
  type LONG (line 71) | typedef  LONG  far   *  LPLONG;
  type VOID (line 72) | typedef  VOID  far   *  LPVOID;
  type BYTE (line 74) | typedef  BYTE  huge  *  HPBYTE;
  type BYTE (line 75) | typedef  BYTE  huge  *  HPSTR;
  type WORD (line 76) | typedef  WORD  huge  *  HPWORD;
  type LONG (line 77) | typedef  LONG  huge  *  HPLONG;
  type VOID (line 78) | typedef  VOID  huge  *  HPVOID;
  type HANDLE (line 80) | typedef  unsigned       HANDLE;

FILE: VQ/INCLUDE/HMI32/SOSRES.H
  type _RES_FILE_HEADER (line 40) | typedef struct
  type _RES_BLOCK_HEADER (line 60) | typedef struct
  type _RES_SYNCMARK (line 83) | typedef struct _tagSYNCMARK
  type _RES_TAG (line 99) | typedef union
  type _SOS_FILTER (line 107) | typedef union

FILE: VQ/INCLUDE/VOCFILE.H
  type VOCHeader (line 45) | typedef struct _VOCHeader {

FILE: VQ/INCLUDE/VQ.H
  type VQHeader (line 56) | typedef struct _VQHeader {

FILE: VQ/INCLUDE/VQA32/VQAFILE.H
  type VQAHeader (line 75) | typedef struct _VQAHeader {

FILE: VQ/INCLUDE/VQA32/VQAPLAY.H
  type VQAConfig (line 161) | typedef struct _VQAConfig {
  type VQAInfo (line 242) | typedef struct _VQAInfo {
  type VQAStatistics (line 261) | typedef struct _VQAStatistics {
  type VQAHandle (line 279) | typedef struct _VQAHandle {

FILE: VQ/INCLUDE/VQM32/CAPTOKEN.H
  type CaptionText (line 55) | typedef struct _CaptionText {

FILE: VQ/INCLUDE/VQM32/FONT.H
  type Font (line 52) | typedef struct _Font {
  type FontInfo (line 63) | typedef struct _FontInfo {

FILE: VQ/INCLUDE/VQM32/HUFFMAN.H
  type TreeNode (line 48) | typedef struct _TreeNode {
  type HuffCode (line 62) | typedef struct _HuffCode {

FILE: VQ/INCLUDE/VQM32/IFF.H
  type FormHeader (line 48) | typedef struct _FormHeader {
  type Context (line 60) | typedef struct _Context {
  type IFFHandle (line 74) | typedef struct _IFFHandle {

FILE: VQ/INCLUDE/VQM32/MIXFILE.H
  type MIXHeader (line 58) | typedef struct _MIXHeader {
  type MIXSubBlock (line 69) | typedef struct _MIXSubBlock {
  type MIXHandle (line 83) | typedef struct _MIXHandle {

FILE: VQ/INCLUDE/VQM32/REALMODE.H
  type REALPTR (line 51) | typedef unsigned long REALPTR;
  type RMInfo (line 68) | typedef struct _RMInfo {

FILE: VQ/INCLUDE/VQM32/SOSCOMP.H
  type _SOS_COMPRESS_INFO (line 42) | typedef struct _tagCOMPRESS_INFO {
  type _SOS_COMPRESS_HEADER (line 67) | typedef struct _tagCOMPRESS_HEADER {

FILE: VQ/INCLUDE/VQM32/TARGA.H
  type TGAHeader (line 60) | typedef struct _TGAHeader {
  type TGAHandle (line 99) | typedef struct _TGAHandle {

FILE: VQ/INCLUDE/VQM32/VESAVID.H
  type VESAInfo (line 90) | typedef struct _VESAInfo {
  type VESAModeInfo (line 138) | typedef struct _VESAModeInfo {

FILE: VQ/INCLUDE/VQM32/VIDEO.H
  type DisplayInfo (line 71) | typedef struct _DisplayInfo {

FILE: VQ/INCLUDE/WAVEFILE.H
  type WAVHeader (line 47) | typedef struct _WAVHeader {
  type WAVFormat (line 63) | typedef struct _WAVFormat {

FILE: VQ/INCLUDE/WWLIB32/AUDIO.H
  type AUDHeaderType (line 49) | typedef struct {
  type Sample_Type (line 64) | typedef enum {
  type Score_Type (line 77) | typedef enum {
  type SFX_Type (line 96) | typedef enum {

FILE: VQ/INCLUDE/WWLIB32/BUFFER.H
  function class (line 60) | class BufferClass {
  function Get_Size (line 110) | inline long BufferClass::Get_Size(void)

FILE: VQ/INCLUDE/WWLIB32/FILE.H
  type FileFlags_Type (line 63) | typedef enum {
  type FileInitErrorType (line 89) | typedef enum {
  type FileErrorType (line 107) | typedef enum {
  type FileDataType (line 139) | typedef struct {
  type find_t (line 245) | struct find_t
  type find_t (line 246) | struct find_t

FILE: VQ/INCLUDE/WWLIB32/GBUFFER.H
  function class (line 164) | class GraphicViewPortClass {
  function Get_Offset (line 288) | inline long GraphicViewPortClass::Get_Offset(void)
  function Get_Height (line 303) | inline int GraphicViewPortClass::Get_Height(void)
  function Get_Width (line 318) | inline int GraphicViewPortClass::Get_Width(void)
  function Get_XAdd (line 334) | inline int GraphicViewPortClass::Get_XAdd(void)
  function Get_XPos (line 348) | inline int GraphicViewPortClass::Get_XPos(void)
  function Get_YPos (line 366) | inline int GraphicViewPortClass::Get_YPos(void)
  function GraphicBufferClass (line 381) | inline GraphicBufferClass *GraphicViewPortClass::Get_Graphic_Buffer(void)
  function Size_Of_Region (line 398) | inline long	GraphicViewPortClass::Size_Of_Region(int w, int h)
  function Put_Pixel (line 415) | inline void	GraphicViewPortClass::Put_Pixel(int x, int y, unsigned char ...
  function Get_Pixel (line 432) | inline int	GraphicViewPortClass::Get_Pixel(int x, int y)
  function Clear (line 449) | inline void	GraphicViewPortClass::Clear(unsigned char color)
  function To_Buffer (line 466) | inline long	GraphicViewPortClass::To_Buffer(int x, int y, int w, int h, ...
  function To_Buffer (line 483) | inline long	GraphicViewPortClass::To_Buffer(int x, int y, int w, int h, ...
  function To_Buffer (line 500) | inline long	GraphicViewPortClass::To_Buffer(BufferClass *buff)
  function BOOL (line 517) | inline BOOL	GraphicViewPortClass::Blit(	GraphicViewPortClass& dest, int ...
  function BOOL (line 535) | inline BOOL	GraphicViewPortClass::Blit(	GraphicViewPortClass& dest, int ...
  function BOOL (line 552) | inline BOOL	GraphicViewPortClass::Blit(	GraphicViewPortClass& dest, BOOL...
  function BOOL (line 570) | inline BOOL	GraphicViewPortClass::Scale(	GraphicViewPortClass &dest, int...
  function BOOL (line 588) | inline BOOL	GraphicViewPortClass::Scale(	GraphicViewPortClass &dest, int...
  function BOOL (line 606) | inline BOOL	GraphicViewPortClass::Scale(	GraphicViewPortClass &dest, BOO...
  function BOOL (line 623) | inline BOOL	GraphicViewPortClass::Scale(	GraphicViewPortClass &dest, cha...
  function Print (line 639) | inline unsigned long	GraphicViewPortClass::Print(char const *str, int x,...
  function Print (line 655) | inline unsigned long	GraphicViewPortClass::Print(int num, int x, int y, ...
  function Print (line 674) | inline unsigned long	GraphicViewPortClass::Print(short num, int x, int y...
  function Print (line 692) | inline unsigned long	GraphicViewPortClass::Print(long num, int x, int y,...
  function Draw_Stamp (line 710) | inline void GraphicViewPortClass::Draw_Stamp(void const *icondata, int i...
  function VOID (line 727) | inline VOID GraphicViewPortClass::Draw_Line(int sx, int sy, int dx, int ...
  function VOID (line 744) | inline VOID GraphicViewPortClass::Fill_Rect(int sx, int sy, int dx, int ...
  function VOID (line 762) | inline VOID GraphicViewPortClass::Remap(int sx, int sy, int width, int h...
  function VOID (line 766) | inline VOID GraphicViewPortClass::Fill_Quad(VOID *span_buff, int x0, int...
  function VOID (line 782) | inline VOID GraphicViewPortClass::Remap(VOID *remap)
  function Buffer_To_Page (line 804) | inline long Buffer_To_Page(int x, int y, int w, int h, void *Buffer, Gra...
  function To_Page (line 824) | inline long BufferClass::To_Page(int w, int h, GraphicViewPortClass &view)
  function To_Page (line 842) | inline long BufferClass::To_Page(GraphicViewPortClass &view)
  function To_Page (line 860) | inline long BufferClass::To_Page(int x, int y, int w, int h, GraphicView...

FILE: VQ/INCLUDE/WWLIB32/IFF.H
  type PicturePlaneType (line 64) | typedef enum {
  type CompressionType (line 77) | typedef enum {
  type CompHeaderType (line 91) | typedef struct {

FILE: VQ/INCLUDE/WWLIB32/KEYBOARD.H
  type KeyASCIIType (line 120) | typedef enum {
  type KeyNumType (line 319) | typedef enum {

FILE: VQ/INCLUDE/WWLIB32/MEMFLAG.H
  type MemoryFlagType (line 43) | typedef enum {

FILE: VQ/INCLUDE/WWLIB32/PLAYCD.H
  type SEGSEL (line 49) | typedef struct {
  type SREGS (line 59) | struct SREGS
  type SREGS (line 60) | struct SREGS
  type TinfoType (line 71) | struct	TinfoType {
  type StatType (line 96) | struct	StatType {
  type VolmType (line 121) | struct	VolmType	{
  type PlayType (line 151) | struct	PlayType {
  type StopType (line 165) | struct	StopType {
  function class (line 181) | class	GetCDClass {
  function class (line 212) | class RedBookClass : public GetCDClass {

FILE: VQ/INCLUDE/WWLIB32/SHAPE.H
  type MakeShapeFlags_Type (line 46) | typedef enum {
  type ShapeFlags_Type (line 58) | typedef enum {
  type Shape_Type (line 81) | typedef struct {
  type ShapeBlock_Type (line 95) | typedef struct {

FILE: VQ/INCLUDE/WWLIB32/SOS.H
  type _SOS_CAPABILITIES (line 48) | typedef struct _tagCAPABILITIES
  type _SOS_CAPABILITIES (line 70) | typedef _SOS_CAPABILITIES far *  LPSOSDEVICECAPS;
  type _SOS_FILL_INFO (line 175) | typedef  struct   _tagFillInfo
  type _SOS_CAPS_INFO (line 186) | typedef  struct   _tagCapsInfo
  type _SOS_SAMPLE (line 200) | typedef  struct   _tagSAMPLE
  type _FILEHEADER (line 296) | typedef struct
  type _DRIVERHEADER (line 313) | typedef struct
  type _SOS_HARDWARE (line 333) | typedef struct
  type _SOS_START_SAMPLE (line 350) | typedef struct
  type _SOS_INIT_DRIVER (line 416) | typedef struct
  type EVDS_STRUCT (line 539) | typedef struct
  type VDS_STRUCT (line 550) | typedef struct

FILE: VQ/INCLUDE/WWLIB32/SOSCOMP.H
  type _SOS_COMPRESS_INFO (line 42) | typedef struct _tagCOMPRESS_INFO {
  type _SOS_COMPRESS_HEADER (line 67) | typedef struct _tagCOMPRESS_HEADER {

FILE: VQ/INCLUDE/WWLIB32/SOSDEFS.H
  type BOOL (line 53) | typedef  int            BOOL;
  type UINT (line 54) | typedef  unsigned int   UINT;
  type BYTE (line 55) | typedef  unsigned char  BYTE;
  type WORD (line 56) | typedef  unsigned       WORD;
  type LONG (line 58) | typedef  signed long    LONG;
  type DWORD (line 60) | typedef  unsigned long  DWORD;
  type BYTE (line 62) | typedef  BYTE  *        PBYTE;
  type WORD (line 64) | typedef  WORD  *        PWORD;
  type LONG (line 65) | typedef  LONG  *        PLONG;
  type VOID (line 66) | typedef  VOID  *        PVOID;
  type BYTE (line 68) | typedef  BYTE  far   *  LPBYTE;
  type BYTE (line 69) | typedef  BYTE  far   *  LPSTR;
  type WORD (line 70) | typedef  WORD  far   *  LPWORD;
  type LONG (line 71) | typedef  LONG  far   *  LPLONG;
  type VOID (line 72) | typedef  VOID  far   *  LPVOID;
  type BYTE (line 74) | typedef  BYTE  huge  *  HPBYTE;
  type BYTE (line 75) | typedef  BYTE  huge  *  HPSTR;
  type WORD (line 76) | typedef  WORD  huge  *  HPWORD;
  type LONG (line 77) | typedef  LONG  huge  *  HPLONG;
  type VOID (line 78) | typedef  VOID  huge  *  HPVOID;
  type HANDLE (line 80) | typedef  unsigned       HANDLE;

FILE: VQ/INCLUDE/WWLIB32/SOSRES.H
  type _RES_FILE_HEADER (line 40) | typedef struct
  type _RES_BLOCK_HEADER (line 60) | typedef struct
  type _RES_SYNCMARK (line 83) | typedef struct _tagSYNCMARK
  type _RES_TAG (line 99) | typedef union
  type _SOS_FILTER (line 107) | typedef union

FILE: VQ/INCLUDE/WWLIB32/TIMER.H
  type BaseTimerEnum (line 50) | typedef enum BaseTimerEnum {
  function class (line 55) | class TimerClass {
  function Reset (line 80) | inline long TimerClass::Reset(BOOL start)
  function class (line 86) | class CountDownTimerClass : private TimerClass {
  function Stop (line 107) | inline long CountDownTimerClass::Stop(void)
  function Start (line 113) | inline long CountDownTimerClass::Start(void)
  function Reset (line 119) | inline long CountDownTimerClass::Reset(BOOL start)

FILE: VQ/INCLUDE/WWLIB32/VBUFFER.H
  function class (line 196) | class VideoViewPortClass {
  function class (line 291) | class VideoBufferClass: public VideoViewPortClass {
  function Get_Offset (line 311) | inline long VideoViewPortClass::Get_Offset(void)
  function Get_Height (line 326) | inline int VideoViewPortClass::Get_Height(void)
  function Get_Width (line 341) | inline int VideoViewPortClass::Get_Width(void)
  function Get_XAdd (line 357) | inline int VideoViewPortClass::Get_XAdd(void)
  function Get_XPos (line 371) | inline int VideoViewPortClass::Get_XPos(void)
  function Get_YPos (line 389) | inline int VideoViewPortClass::Get_YPos(void)
  function VideoBufferClass (line 404) | inline VideoBufferClass *VideoViewPortClass::Get_Video_Buffer(void)
  function Put_Pixel (line 421) | inline void	VideoViewPortClass::Put_Pixel(int x, int y, unsigned char co...
  function Get_Pixel (line 438) | inline int	VideoViewPortClass::Get_Pixel(int x, int y)
  function Clear (line 455) | inline void	VideoViewPortClass::Clear(unsigned char color)
  function To_Buffer (line 472) | inline long	VideoViewPortClass::To_Buffer(int x, int y, int w, int h, vo...
  function To_Buffer (line 489) | inline long	VideoViewPortClass::To_Buffer(int x, int y, int w, int h, Bu...
  function To_Buffer (line 506) | inline long	VideoViewPortClass::To_Buffer(BufferClass *buff)
  function BOOL (line 523) | inline BOOL	VideoViewPortClass::Blit(	GraphicViewPortClass& dest, int x_...
  function BOOL (line 541) | inline BOOL	VideoViewPortClass::Blit(	GraphicViewPortClass& dest, int dx...
  function BOOL (line 558) | inline BOOL	VideoViewPortClass::Blit(	GraphicViewPortClass& dest, BOOL t...
  function BOOL (line 575) | inline BOOL	VideoViewPortClass::Blit(	VideoViewPortClass& dest, int x_pi...
  function BOOL (line 593) | inline BOOL	VideoViewPortClass::Blit(	VideoViewPortClass& dest, int dx, ...
  function BOOL (line 610) | inline BOOL	VideoViewPortClass::Blit(	VideoViewPortClass& dest, BOOL trans)
  function BOOL (line 627) | inline BOOL	VideoViewPortClass::Scale(	GraphicViewPortClass &dest, int s...
  function BOOL (line 645) | inline BOOL	VideoViewPortClass::Scale(	GraphicViewPortClass &dest, int s...
  function BOOL (line 663) | inline BOOL	VideoViewPortClass::Scale(	GraphicViewPortClass &dest, BOOL ...
  function BOOL (line 680) | inline BOOL	VideoViewPortClass::Scale(	GraphicViewPortClass &dest, char ...
  function BOOL (line 696) | inline BOOL	VideoViewPortClass::Scale(	VideoViewPortClass &dest, int src...
  function BOOL (line 714) | inline BOOL	VideoViewPortClass::Scale(	VideoViewPortClass &dest, int src...
  function BOOL (line 732) | inline BOOL	VideoViewPortClass::Scale(	VideoViewPortClass &dest, BOOL tr...
  function BOOL (line 749) | inline BOOL	VideoViewPortClass::Scale(	VideoViewPortClass &dest, char *r...
  function Print (line 765) | inline unsigned long	VideoViewPortClass::Print(char const *str, int x, i...
  function Print (line 783) | inline unsigned long	VideoViewPortClass::Print(int num, int x, int y, in...
  function Print (line 802) | inline unsigned long	VideoViewPortClass::Print(short num, int x, int y, ...
  function Print (line 822) | inline unsigned long	VideoViewPortClass::Print(long num, int x, int y, i...
  function To_Page (line 851) | inline long BufferClass::To_Page(int w, int h, VideoViewPortClass &view)
  function To_Page (line 869) | inline long BufferClass::To_Page(VideoViewPortClass &view)
  function To_Page (line 887) | inline long BufferClass::To_Page(int x, int y, int w, int h, VideoViewPo...
  function Buffer_To_Page (line 904) | inline long Buffer_To_Page(int x, int y, int w, int h, void *Buffer, Vid...
  function BOOL (line 925) | inline BOOL	GraphicViewPortClass::Blit(	VideoViewPortClass& dest, int x_...
  function BOOL (line 943) | inline BOOL	GraphicViewPortClass::Blit(	VideoViewPortClass& dest, int dx...
  function BOOL (line 960) | inline BOOL	GraphicViewPortClass::Blit(	VideoViewPortClass& dest, BOOL t...
  function BOOL (line 976) | inline BOOL	GraphicViewPortClass::Scale(	VideoViewPortClass &dest, int s...
  function BOOL (line 994) | inline BOOL	GraphicViewPortClass::Scale(	VideoViewPortClass &dest, int s...
  function BOOL (line 1012) | inline BOOL	GraphicViewPortClass::Scale(	VideoViewPortClass &dest, BOOL ...
  function BOOL (line 1029) | inline BOOL	GraphicViewPortClass::Scale(	VideoViewPortClass &dest, char ...

FILE: VQ/INCLUDE/WWLIB32/VIDEO.H
  type VesaInfoType (line 88) | typedef struct {
  type VesaModeInfoType (line 138) | typedef struct {

FILE: VQ/INCLUDE/WWLIB32/WINDOWS.H
  type WindowIndexType (line 63) | typedef enum {

FILE: VQ/INCLUDE/WWLIB32/WSA.H
  type WSAType (line 62) | typedef enum {
  type WSAOpenType (line 72) | typedef enum {

FILE: VQ/INCLUDE/WWLIB32/WWSTD.H
  type VOID (line 165) | typedef void 	VOID;
  function T (line 231) | T Max(T a, T b)
  type ColorType (line 285) | typedef enum {

FILE: VQ/INCLUDE/WWLIB32/_FILE.H
  type FileHandleType (line 77) | typedef struct {

FILE: VQ/VQA32/AUDIO.CPP
  function StartAddr (line 122) | static void StartAddr(void)
  function VQA_StartTimerInt (line 151) | long VQA_StartTimerInt(VQAHandleP *vqap, long init)
  function VQA_StopTimerInt (line 229) | void VQA_StopTimerInt(VQAHandleP *vqap)
  function TimerCallback (line 300) | void far TimerCallback(void)
  function VQA_OpenAudio (line 329) | long VQA_OpenAudio(VQAHandleP *vqap)
  function VQA_CloseAudio (line 553) | void VQA_CloseAudio(VQAHandleP *vqap)
  function AutoDetect (line 614) | long AutoDetect(_SOS_CAPABILITIES *digicaps, long bitsize, long channels)
  function VQA_StartAudio (line 706) | long VQA_StartAudio(VQAHandleP *vqap)
  function VQA_StopAudio (line 812) | void VQA_StopAudio(VQAHandleP *vqap)
  function AudioCallback (line 975) | void far cdecl AudioCallback(WORD wDriverHandle,WORD wAction,WORD wSampl...
  function EndAddr (line 1031) | static void EndAddr(void)
  function VQA_SetTimer (line 1066) | void VQA_SetTimer(VQAHandleP *vqap, long time, long method)
  function VQA_GetTime (line 1176) | unsigned long VQA_GetTime(VQAHandleP *vqap)
  function VQA_TimerMethod (line 1296) | long VQA_TimerMethod(void)

FILE: VQ/VQA32/CAPTION.CPP
  function CaptionInfo (line 87) | CaptionInfo *OpenCaptions(void *captions, void *font)
  function CloseCaptions (line 156) | void CloseCaptions(CaptionInfo *cap)
  function DoCaptions (line 184) | void DoCaptions(CaptionInfo *cap, unsigned long frame)
  function CaptionNode (line 328) | static CaptionNode *AddCaptionNode(CaptionList *list, CaptionText *captext)
  function RemCaptionNode (line 381) | static void RemCaptionNode(CaptionList *list, CaptionNode *node)

FILE: VQ/VQA32/CAPTION.H
  type CaptionNode (line 61) | typedef struct _CaptionNode {
  type CaptionList (line 84) | typedef struct _CaptionList {
  type CaptionInfo (line 102) | typedef struct _CaptionInfo {

FILE: VQ/VQA32/CONFIG.CPP
  type VMTAGS (line 188) | enum VMTAGS {
  type _VideoModeTag (line 213) | struct _VideoModeTag {
  function VQA_INIConfig (line 268) | void VQA_INIConfig(VQAConfig *config)
  function VQA_DefaultConfig (line 496) | void VQA_DefaultConfig(VQAConfig *config)

FILE: VQ/VQA32/DRAWER.CPP
  function VQA_Configure_Drawer (line 153) | void VQA_Configure_Drawer(VQAHandleP *vqap)
  function Select_Frame (line 420) | static long Select_Frame(VQAHandleP *vqap)
  function Prepare_Frame (line 580) | static void Prepare_Frame(VQAData *vqabuf)
  function DrawFrame_Xmode (line 668) | static long DrawFrame_Xmode(VQAHandle *vqa)
  function DrawFrame_XmodeBuf (line 782) | static long DrawFrame_XmodeBuf(VQAHandle *vqa)
  function DrawFrame_XmodeVRAM (line 908) | static long DrawFrame_XmodeVRAM(VQAHandle *vqa)
  function PageFlip_Xmode (line 1012) | static void PageFlip_Xmode(VQAHandle *vqa)
  function DrawFrame_MCGA (line 1118)
Copy disabled (too large) Download .json
Condensed preview — 2066 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (31,501K chars).
[
  {
    "path": "CODE/2KEYFBUF.ASM",
    "chars": 120647,
    "preview": ";\n;\tCommand & Conquer Red Alert(tm)\n;\tCopyright 2025 Electronic Arts Inc.\n;\n;\tThis program is free software: you can red"
  },
  {
    "path": "CODE/2KEYFRAM.CPP",
    "chars": 21903,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/2SUPPORT.ASM",
    "chars": 18206,
    "preview": ";\n;\tCommand & Conquer Red Alert(tm)\n;\tCopyright 2025 Electronic Arts Inc.\n;\n;\tThis program is free software: you can red"
  },
  {
    "path": "CODE/2TXTPRNT.ASM",
    "chars": 20458,
    "preview": ";\n;\tCommand & Conquer Red Alert(tm)\n;\tCopyright 2025 Electronic Arts Inc.\n;\n;\tThis program is free software: you can red"
  },
  {
    "path": "CODE/AADATA.CPP",
    "chars": 38145,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/ABSTRACT.CPP",
    "chars": 13775,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/ABSTRACT.H",
    "chars": 5386,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/ADAMTEMP.MAK",
    "chars": 30668,
    "preview": "#\n#\tCommand & Conquer Red Alert(tm)\n#\tCopyright 2025 Electronic Arts Inc.\n#\n#\tThis program is free software: you can red"
  },
  {
    "path": "CODE/ADATA.CPP",
    "chars": 102258,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/ADPCM.CPP",
    "chars": 2063,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/AIRCRAFT.CPP",
    "chars": 183560,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/AIRCRAFT.H",
    "chars": 9750,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/ALLOC.CPP",
    "chars": 23175,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/ANIM.CPP",
    "chars": 54419,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/ANIM.CPP.BAK",
    "chars": 53404,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/ANIM.H",
    "chars": 6140,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/AUDIO.CPP",
    "chars": 40407,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/AUDIO.CPP.BAK",
    "chars": 35139,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/AUDIO.H",
    "chars": 3654,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/B64PIPE.CPP",
    "chars": 7780,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/B64PIPE.H",
    "chars": 3735,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/B64STRAW.CPP",
    "chars": 5610,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/B64STRAW.H",
    "chars": 3715,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BAR.CPP",
    "chars": 13420,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BAR.H",
    "chars": 3966,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BASE.CPP",
    "chars": 29345,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BASE.H",
    "chars": 4596,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BASE64.CPP",
    "chars": 18866,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BASE64.H",
    "chars": 2601,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BBDATA.CPP",
    "chars": 18180,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BDATA.CPP",
    "chars": 200244,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BENCH.CPP",
    "chars": 10821,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BENCH.H",
    "chars": 4612,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BFILE.MAK",
    "chars": 34709,
    "preview": "#\n#\tCommand & Conquer Red Alert(tm)\n#\tCopyright 2025 Electronic Arts Inc.\n#\n#\tThis program is free software: you can red"
  },
  {
    "path": "CODE/BFILE2.MAK",
    "chars": 34164,
    "preview": "#\n#\tCommand & Conquer Red Alert(tm)\n#\tCopyright 2025 Electronic Arts Inc.\n#\n#\tThis program is free software: you can red"
  },
  {
    "path": "CODE/BFIOFILE.CPP",
    "chars": 40367,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BFIOFILE.H",
    "chars": 3857,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BIGCHECK.CPP",
    "chars": 2200,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BIGCHECK.H",
    "chars": 1762,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BLOWFISH.CPP",
    "chars": 36087,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BLOWFISH.H",
    "chars": 4669,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BLOWPIPE.CPP",
    "chars": 10243,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BLOWPIPE.H",
    "chars": 3494,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BLWSTRAW.CPP",
    "chars": 7857,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BLWSTRAW.H",
    "chars": 3687,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BMP8.CPP",
    "chars": 6163,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BMP8.H",
    "chars": 1106,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BUFF.CPP",
    "chars": 13573,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BUFF.H",
    "chars": 3888,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BUFFERX.H",
    "chars": 4165,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BUGS.TXT",
    "chars": 2517,
    "preview": "Fixed:\nA415,A436,A437,A446,A447,A453,A466,A475,A488,\nB171,B326,B407,B443,B530,B550,B566,B578,B600,\nB609,B626,B628,B632,B"
  },
  {
    "path": "CODE/BUILDING.CPP",
    "chars": 240172,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BUILDING.H",
    "chars": 12458,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BULLET.CPP",
    "chars": 51132,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/BULLET.H",
    "chars": 5547,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/C&CZERO.PJT",
    "chars": 17367,
    "preview": ";Codewright Project File (do not remove or modify this line)\n[ProjInit]\nProjSetConfigFlags=0x00010140\n\n[Files]\nc:\\projec"
  },
  {
    "path": "CODE/CARGO.CPP",
    "chars": 10859,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CARGO.H",
    "chars": 3785,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CARRY.CPP",
    "chars": 7291,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CARRY.H",
    "chars": 3253,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CCDDE.CPP",
    "chars": 22859,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CCDDE.H",
    "chars": 4336,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CCFILE.CPP",
    "chars": 32905,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CCFILE.H",
    "chars": 4763,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CCINI.CPP",
    "chars": 102705,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CCINI.H",
    "chars": 6868,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CCMPATH.CPP",
    "chars": 15053,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CCPTR.CPP",
    "chars": 4574,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CCPTR.H",
    "chars": 4932,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CCTEN.CPP",
    "chars": 22382,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CC_ICON.RC",
    "chars": 48,
    "preview": "\n#define ICON_1\t1\n\n\nICON_1 ICON \"redalert.ico\"\n\n"
  },
  {
    "path": "CODE/CC_ICON.RH",
    "chars": 17,
    "preview": "#define ICON_1\t1\n"
  },
  {
    "path": "CODE/CDATA.CPP",
    "chars": 100886,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CDFILE.CPP",
    "chars": 34295,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CDFILE.H",
    "chars": 4771,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CELL.CPP",
    "chars": 131143,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CELL.H",
    "chars": 10527,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CHECKBOX.CPP",
    "chars": 6257,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CHECKBOX.H",
    "chars": 2772,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CHEKLIST.CPP",
    "chars": 20499,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CHEKLIST.H",
    "chars": 3952,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CLASS.CPP",
    "chars": 734,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CO-WC32.LNT",
    "chars": 2889,
    "preview": "//    Compiler Options for Watcom C, C++ 32 bit\n\n-cwc\n\n//    This file contains options to allow PC-lint to process sour"
  },
  {
    "path": "CODE/COLRLIST.CPP",
    "chars": 14639,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/COLRLIST.H",
    "chars": 3956,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/COMBAT.CPP",
    "chars": 21562,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/COMBUF.CPP",
    "chars": 50442,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/COMBUF.H",
    "chars": 8403,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/COMINIT.CPP",
    "chars": 1407,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/COMINIT.H",
    "chars": 957,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/COMPAT.H",
    "chars": 7851,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/COMQUEUE.CPP",
    "chars": 40196,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/COMQUEUE.H",
    "chars": 8927,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CONFDLG.CPP",
    "chars": 7876,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CONFDLG.H",
    "chars": 2707,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CONNECT.CPP",
    "chars": 35910,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CONNECT.CPP.BAK",
    "chars": 35909,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CONNECT.H",
    "chars": 14285,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CONNMGR.H",
    "chars": 7507,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CONQUER.CPP",
    "chars": 182181,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CONQUER.CPP.BAK",
    "chars": 146886,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CONQUER.H",
    "chars": 31633,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CONQUER.LNT",
    "chars": 3219,
    "preview": "//  Watcom C, C++ (32 bit), -si4 -sp4,\n//  Standard lint options\n\n//    Compiler Options for Watcom C, C++ 32 bit\n\n-cwc\n"
  },
  {
    "path": "CODE/CONST.CPP",
    "chars": 27816,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CONTROL.CPP",
    "chars": 15672,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CONTROL.H",
    "chars": 4315,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/COORD.CPP",
    "chars": 33414,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/COORDA.ASM",
    "chars": 6942,
    "preview": ";\n;\tCommand & Conquer Red Alert(tm)\n;\tCopyright 2025 Electronic Arts Inc.\n;\n;\tThis program is free software: you can red"
  },
  {
    "path": "CODE/CPUID.ASM",
    "chars": 5679,
    "preview": ";\n;\tCommand & Conquer Red Alert(tm)\n;\tCopyright 2025 Electronic Arts Inc.\n;\n;\tThis program is free software: you can red"
  },
  {
    "path": "CODE/CRATE.CPP",
    "chars": 10356,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CRATE.H",
    "chars": 3379,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CRC.CPP",
    "chars": 7494,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CRC.H",
    "chars": 4696,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CRCPIPE.CPP",
    "chars": 6234,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CRCPIPE.H",
    "chars": 2947,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CRCSTRAW.CPP",
    "chars": 6311,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CRCSTRAW.H",
    "chars": 3008,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CREDITS.CPP",
    "chars": 11472,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CREDITS.H",
    "chars": 3363,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CREW.CPP",
    "chars": 2477,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CREW.H",
    "chars": 3119,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CSTRAW.CPP",
    "chars": 5558,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CSTRAW.H",
    "chars": 3301,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/CWSTUB.C",
    "chars": 2004,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/DDE.CPP",
    "chars": 19463,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/DDE.H",
    "chars": 7172,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/DEBUG.CPP",
    "chars": 21261,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/DEBUG.H",
    "chars": 3397,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/DEFINES.H",
    "chars": 102995,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/DESCDLG.CPP",
    "chars": 6080,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/DESCDLG.H",
    "chars": 3089,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/DIAL8.CPP",
    "chars": 13584,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/DIAL8.H",
    "chars": 3154,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/DIALOG.CPP",
    "chars": 43498,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/DIBAPI.H",
    "chars": 6541,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/DIBFILE.CPP",
    "chars": 21958,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/DIBUTIL.CPP",
    "chars": 38934,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/DIBUTIL.H",
    "chars": 1389,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/DISPLAY.CPP",
    "chars": 195157,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/DISPLAY.H",
    "chars": 12111,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/DOOR.CPP",
    "chars": 11956,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/DOOR.H",
    "chars": 3740,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/DPMI.CPP",
    "chars": 5080,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/DPMI.H",
    "chars": 6347,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/DRIVE.CPP",
    "chars": 92970,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/DRIVE.H",
    "chars": 8440,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/DROP.CPP",
    "chars": 6139,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/DROP.H",
    "chars": 9398,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/DTABLE.CPP",
    "chars": 46114,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/DYNAVEC.CPP",
    "chars": 17266,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/EDIT.CPP",
    "chars": 23431,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/EDIT.H",
    "chars": 4373,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/EGOS.CPP",
    "chars": 31841,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/EGOS.H",
    "chars": 3084,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/ENDING.CPP",
    "chars": 6199,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/ENDING.H",
    "chars": 2520,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/ENG/CONQUER.BAK",
    "chars": 17970,
    "preview": "# TXT_NONE\n%3d.%02d\n# TXT_CREDIT_FORMAT\nTime:%02d:%02d:%02d\n# TXT_TIME_FORMAT_HOURS\nTime:%02d:%02d\n# TXT_TIME_FORMAT_NO_"
  },
  {
    "path": "CODE/ENG/CONQUER.TXT",
    "chars": 18652,
    "preview": "# TXT_NONE\n%3d.%02d\n# TXT_CREDIT_FORMAT\nTime:%02d:%02d:%02d\n# TXT_TIME_FORMAT_HOURS\nTime:%02d:%02d\n# TXT_TIME_FORMAT_NO_"
  },
  {
    "path": "CODE/ENG/CREDITS.BAK",
    "chars": 5245,
    "preview": "      \t\t Executive Producer  \t Brett W. Sperry\n                           Producer  \t Ed Del Castillo\n\n\t\t   Original Con"
  },
  {
    "path": "CODE/ENG/CREDITS.TXT",
    "chars": 8802,
    "preview": "\t\t\t\tAftermath Credits\n\n\t\tExecutive Producer\tBrett W. Sperry\n     \n\t\t\t  Producer\tLewis S. Peterson\n     \n\t\t\tProgrammer\tBa"
  },
  {
    "path": "CODE/ENG/DEBUG.BAK",
    "chars": 13459,
    "preview": "Clear the map\n# TXT_CLEAR_MAP\nInherit previous map\n# TXT_INHERIT_MAP\nSelect Special Options\n# TXT_SPECIAL_OPTIONS\nTarget"
  },
  {
    "path": "CODE/ENG/DEBUG.TXT",
    "chars": 13460,
    "preview": "Clear the map\n# TXT_CLEAR_MAP\nInherit previous map\n# TXT_INHERIT_MAP\nSelect Special Options\n# TXT_SPECIAL_OPTIONS\nTarget"
  },
  {
    "path": "CODE/ENG/ENG/CONQUER.TXT",
    "chars": 18652,
    "preview": "# TXT_NONE\n%3d.%02d\n# TXT_CREDIT_FORMAT\nTime:%02d:%02d:%02d\n# TXT_TIME_FORMAT_HOURS\nTime:%02d:%02d\n# TXT_TIME_FORMAT_NO_"
  },
  {
    "path": "CODE/ENG/ENG/CREDITS.TXT",
    "chars": 8802,
    "preview": "\t\t\t\tAftermath Credits\n\n\t\tExecutive Producer\tBrett W. Sperry\n     \n\t\t\t  Producer\tLewis S. Peterson\n     \n\t\t\tProgrammer\tBa"
  },
  {
    "path": "CODE/ENG/FRE/CONQUER.TXT",
    "chars": 20029,
    "preview": "# TXT_NONE                \n%3d.%02d\n# TXT_CREDIT_FORMAT\nTemps:%02d:%02d:%02d\n# TXT_TIME_FORMAT_HOURS\nTemps:%02d:%02d\n# T"
  },
  {
    "path": "CODE/ENG/FRE/CREDITS.TXT",
    "chars": 7976,
    "preview": "\t\tProducteur Excutif\tBrett W. Sperry\n\n\t\t\t Producteur\tLewis S. Peterson\n\n\t\t\tProgrammeur\tBarry Green\n\n\t\tDirection Techniqu"
  },
  {
    "path": "CODE/ENG/GER/CONQUER.TXT",
    "chars": 20094,
    "preview": "# TXT_NONE\n%3d.%02d\n# TXT_CREDIT_FORMAT\nZeit: %02d:%02d:%02d\n# TXT_TIME_FORMAT_HOURS\nZeit: %02d:%02d\n# TXT_TIME_FORMAT_N"
  },
  {
    "path": "CODE/ENG/GER/CREDITS.TXT",
    "chars": 4864,
    "preview": "\n\n\t     Ausfhrender Produzent\tBrett W. Sperry\n\n\t\t\t  Produzent\tLewis S. Peterson\n\n\t\t     Programmierung\tBarry Green\n\n\t\t T"
  },
  {
    "path": "CODE/ENG/MESSAGE.TXT",
    "chars": 2656,
    "preview": "# MESSAGE_NONE\nYou must build a Windtrap to provide power to your base.  Without power, your structures will decay.\n# ME"
  },
  {
    "path": "CODE/EVENT.CPP",
    "chars": 46859,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/EVENT.H",
    "chars": 10179,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/EXPAND.CPP",
    "chars": 19576,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/EXTERNS.H",
    "chars": 16809,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/FACE.CPP",
    "chars": 10091,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/FACE.H",
    "chars": 3336,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/FACING.CPP",
    "chars": 11081,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/FACING.H",
    "chars": 3774,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/FACTORY.CPP",
    "chars": 37649,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/FACTORY.H",
    "chars": 5606,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/FAKESOCK.H",
    "chars": 2870,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/FIELD.CPP",
    "chars": 6698,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/FIELD.H",
    "chars": 3358,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/FILE.CPP",
    "chars": 730,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/FILEPCX.H",
    "chars": 3249,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/FINDPATH.CPP",
    "chars": 46057,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/FIXED.CPP",
    "chars": 11477,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/FIXED.H",
    "chars": 13640,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/FLASHER.CPP",
    "chars": 6014,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/FLASHER.H",
    "chars": 3241,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/FLY.CPP",
    "chars": 7655,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/FLY.H",
    "chars": 3662,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/FOOT.CPP",
    "chars": 124893,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/FOOT.H",
    "chars": 14826,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/FOREIGN.TXT",
    "chars": 1894,
    "preview": "For German version:\n\ncall the batch file GERMAN.BAT.  This will copy the appropriate conquer.h and\ncredits.txt files whe"
  },
  {
    "path": "CODE/FTIMER.H",
    "chars": 41601,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/FUNCTION.H",
    "chars": 31300,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/FUNCTION.I",
    "chars": 2024,
    "preview": ";\n;\tCommand & Conquer Red Alert(tm)\n;\tCopyright 2025 Electronic Arts Inc.\n;\n;\tThis program is free software: you can red"
  },
  {
    "path": "CODE/FUSE.CPP",
    "chars": 12315,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/FUSE.H",
    "chars": 3956,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  },
  {
    "path": "CODE/GADGET.CPP",
    "chars": 47545,
    "preview": "/*\n**\tCommand & Conquer Red Alert(tm)\n**\tCopyright 2025 Electronic Arts Inc.\n**\n**\tThis program is free software: you ca"
  }
]

// ... and 1866 more files (download for full content)

About this extraction

This page contains the full source code of the electronicarts/CnC_Red_Alert GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2066 files (28.0 MB), approximately 7.4M tokens, and a symbol index with 4939 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!