summaryrefslogtreecommitdiff
path: root/src/hexen
diff options
context:
space:
mode:
Diffstat (limited to 'src/hexen')
-rw-r--r--src/hexen/defs.inc52
-rw-r--r--src/hexen/drcoord.h29
-rw-r--r--src/hexen/dstrings.h205
-rw-r--r--src/hexen/i_ibm_a.asm135
-rw-r--r--src/hexen/linear.asm349
-rw-r--r--src/hexen/oldd_net.c790
-rw-r--r--src/hexen/template.c32
-rw-r--r--src/hexen/vgaview.h34
8 files changed, 0 insertions, 1626 deletions
diff --git a/src/hexen/defs.inc b/src/hexen/defs.inc
deleted file mode 100644
index eb83dc27..00000000
--- a/src/hexen/defs.inc
+++ /dev/null
@@ -1,52 +0,0 @@
-SKIPPRIMITIVES = 0 ; set to 1 to skip unwound drawing
-
-
-SCREEN = 0a0000h
-SCREENWIDTH = 320
-SCREENHEIGHT = 200
-PLANEWIDTH = 80
-PLANESIZE = 80*200
-
-PEL_WRITE_ADR = 03c8h
-PEL_DATA = 03c9h
-
-SC_INDEX = 03C4h
-SC_MAPMASK = 2
-
-OP_RET = 0c3h
-OP_MOVAL = 08ah
-OP_MOVDEST = 088h
-
-
- .DATA
-
-EXTRN _dc_colormap:DWORD
-EXTRN _tinttable:DWORD
-EXTRN _dc_x:DWORD
-EXTRN _dc_yl:DWORD
-EXTRN _dc_yh:DWORD
-EXTRN _dc_iscale:DWORD
-EXTRN _dc_texturemid:DWORD
-EXTRN _dc_source:DWORD
-
-EXTRN _ylookup:DWORD
-EXTRN _columnofs:DWORD
-
-
-EXTRN _ds_y:DWORD
-EXTRN _ds_x1:DWORD
-EXTRN _ds_x2:DWORD
-EXTRN _ds_colormap:DWORD
-EXTRN _ds_xfrac:DWORD
-EXTRN _ds_yfrac:DWORD
-EXTRN _ds_xstep:DWORD
-EXTRN _ds_ystep:DWORD
-EXTRN _ds_source:DWORD
-
-PUSHR MACRO
- pushad
-ENDM
-
-POPR MACRO
- popad
-ENDM
diff --git a/src/hexen/drcoord.h b/src/hexen/drcoord.h
deleted file mode 100644
index 7ef9a22a..00000000
--- a/src/hexen/drcoord.h
+++ /dev/null
@@ -1,29 +0,0 @@
-
-//**************************************************************************
-//**
-//** DRCoord.h : Heretic 2 : Raven Software, Corp.
-//**
-//** $RCSfile: DRCoord.h,v $
-//** $Revision: 1.1 $
-//** $Date: 95/05/11 00:19:30 $
-//** $Author: bgokey $
-//**
-//**************************************************************************
-
-#import <appkit/appkit.h>
-
-@interface DRCoord:Object
-{
- id players_i;
- id console_i;
- id skill_i;
- id episode_i;
- id map_i;
-}
-
-- newGame: sender;
-- scale1: sender;
-- scale2: sender;
-- scale4: sender;
-
-@end
diff --git a/src/hexen/dstrings.h b/src/hexen/dstrings.h
deleted file mode 100644
index 982867b0..00000000
--- a/src/hexen/dstrings.h
+++ /dev/null
@@ -1,205 +0,0 @@
-
-//**************************************************************************
-//**
-//** DStrings.H
-//**
-//**************************************************************************
-
-// MN_menu.c ---------------------------------------------------------------
-
-#define PRESSKEY "press a key."
-#define PRESSYN "press y or n."
-#define TXT_PAUSED "PAUSED"
-#define QUITMSG "are you sure you want to\nquit this great game?"
-#define LOADNET "you can't do load while in a net game!\n\n"PRESSKEY
-#define QLOADNET "you can't quickload during a netgame!\n\n"PRESSKEY
-#define QSAVESPOT "you haven't picked a quicksave slot yet!\n\n"PRESSKEY
-#define SAVEDEAD "you can't save if you aren't playing!\n\n"PRESSKEY
-#define QSPROMPT "quicksave over your game named\n\n'%s'?\n\n"PRESSYN
-#define QLPROMPT "do you want to quickload the game named"\
- "\n\n'%s'?\n\n"PRESSYN
-#define NEWGAME "you can't start a new game\n"\
- "while in a network game.\n\n"PRESSKEY
-#define NIGHTMARE "are you sure? this skill level\n"\
- "isn't even remotely fair.\n\n"PRESSYN
-#define SWSTRING "this is the shareware version of doom.\n\n"\
- "you need to order the entire trilogy.\n\n"PRESSKEY
-#define MSGOFF "Messages OFF"
-#define MSGON "Messages ON"
-#define NETEND "you can't end a netgame!\n\n"PRESSKEY
-#define ENDGAME "are you sure you want to end the game?\n\n"PRESSYN
-#define DOSY "(press y to quit to dos.)"
-#define DETAILHI "High detail"
-#define DETAILLO "Low detail"
-#define GAMMALVL0 "Gamma correction OFF"
-#define GAMMALVL1 "Gamma correction level 1"
-#define GAMMALVL2 "Gamma correction level 2"
-#define GAMMALVL3 "Gamma correction level 3"
-#define GAMMALVL4 "Gamma correction level 4"
-#define EMPTYSTRING "empty slot"
-
-// P_inter.c ---------------------------------------------------------------
-
-// Keys
-
-#define TXT_GOTBLUEKEY "BLUE KEY"
-#define TXT_GOTYELLOWKEY "YELLOW KEY"
-#define TXT_GOTGREENKEY "GREEN KEY"
-
-// Artifacts
-
-#define TXT_ARTIHEALTH "QUARTZ FLASK"
-#define TXT_ARTIFLY "WINGS OF WRATH"
-#define TXT_ARTIINVULNERABILITY "RING OF INVINCIBILITY"
-#define TXT_ARTITOMEOFPOWER "TOME OF POWER"
-#define TXT_ARTIINVISIBILITY "SHADOWSPHERE"
-#define TXT_ARTIEGG "MORPH OVUM"
-#define TXT_ARTISUPERHEALTH "MYSTIC URN"
-#define TXT_ARTITORCH "TORCH"
-#define TXT_ARTIFIREBOMB "TIME BOMB OF THE ANCIENTS"
-#define TXT_ARTITELEPORT "CHAOS DEVICE"
-
-// Items
-
-#define TXT_ITEMHEALTH "CRYSTAL VIAL"
-#define TXT_ITEMBAGOFHOLDING "BAG OF HOLDING"
-#define TXT_ITEMSHIELD1 "SILVER SHIELD"
-#define TXT_ITEMSHIELD2 "ENCHANTED SHIELD"
-#define TXT_ITEMSUPERMAP "MAP SCROLL"
-
-// Ammo
-
-#define TXT_AMMOGOLDWAND1 "WAND CRYSTAL"
-#define TXT_AMMOGOLDWAND2 "CRYSTAL GEODE"
-#define TXT_AMMOMACE1 "MACE SPHERES"
-#define TXT_AMMOMACE2 "PILE OF MACE SPHERES"
-#define TXT_AMMOCROSSBOW1 "ETHEREAL ARROWS"
-#define TXT_AMMOCROSSBOW2 "QUIVER OF ETHEREAL ARROWS"
-#define TXT_AMMOBLASTER1 "CLAW ORB"
-#define TXT_AMMOBLASTER2 "ENERGY ORB"
-#define TXT_AMMOSKULLROD1 "LESSER RUNES"
-#define TXT_AMMOSKULLROD2 "GREATER RUNES"
-#define TXT_AMMOPHOENIXROD1 "FLAME ORB"
-#define TXT_AMMOPHOENIXROD2 "INFERNO ORB"
-
-// Weapons
-
-#define TXT_WPNMACE "FIREMACE"
-#define TXT_WPNCROSSBOW "ETHEREAL CROSSBOW"
-#define TXT_WPNBLASTER "DRAGON CLAW"
-#define TXT_WPNSKULLROD "HELLSTAFF"
-#define TXT_WPNPHOENIXROD "PHOENIX ROD"
-#define TXT_WPNGAUNTLETS "GAUNTLETS OF THE NECROMANCER"
-
-// SB_bar.c ----------------------------------------------------------------
-
-#define TXT_CHEATGODON "GOD MODE ON"
-#define TXT_CHEATGODOFF "GOD MODE OFF"
-#define TXT_CHEATNOCLIPON "NO CLIPPING ON"
-#define TXT_CHEATNOCLIPOFF "NO CLIPPING OFF"
-#define TXT_CHEATWEAPONS "ALL WEAPONS"
-#define TXT_CHEATFLIGHTON "FLIGHT ON"
-#define TXT_CHEATFLIGHTOFF "FLIGHT OFF"
-#define TXT_CHEATPOWERON "POWER ON"
-#define TXT_CHEATPOWEROFF "POWER OFF"
-#define TXT_CHEATHEALTH "FULL HEALTH"
-#define TXT_CHEATKEYS "ALL KEYS"
-#define TXT_CHEATSOUNDON "SOUND DEBUG ON"
-#define TXT_CHEATSOUNDOFF "SOUND DEBUG OFF"
-#define TXT_CHEATTICKERON "TICKER ON"
-#define TXT_CHEATTICKEROFF "TICKER OFF"
-#define TXT_CHEATARTIFACTS1 "CHOOSE AN ARTIFACT ( A - J )"
-#define TXT_CHEATARTIFACTS2 "HOW MANY ( 1 - 9 )"
-#define TXT_CHEATARTIFACTS3 "YOU GOT IT"
-#define TXT_CHEATARTIFACTSFAIL "BAD INPUT"
-#define TXT_CHEATWARP "LEVEL WARP"
-#define TXT_CHEATSCREENSHOT "SCREENSHOT"
-#define TXT_CHEATCHICKENON "CHICKEN ON"
-#define TXT_CHEATCHICKENOFF "CHICKEN OFF"
-#define TXT_CHEATMASSACRE "MASSACRE"
-#define TXT_CHEATIDDQD "TRYING TO CHEAT, EH? NOW YOU DIE!"
-#define TXT_CHEATIDKFA "CHEATER - YOU DON'T DESERVE WEAPONS"
-
-// P_doors.c ---------------------------------------------------------------
-
-#define TXT_NEEDBLUEKEY "YOU NEED A BLUE KEY TO OPEN THIS DOOR"
-#define TXT_NEEDGREENKEY "YOU NEED A GREEN KEY TO OPEN THIS DOOR"
-#define TXT_NEEDYELLOWKEY "YOU NEED A YELLOW KEY TO OPEN THIS DOOR"
-
-// G_game.c ----------------------------------------------------------------
-
-#define TXT_GAMESAVED "GAME SAVED"
-
-// M_misc.c ----------------------------------------------------------------
-
-#define HUSTR_CHATMACRO1 "I'm ready to kick butt!"
-#define HUSTR_CHATMACRO2 "I'm OK."
-#define HUSTR_CHATMACRO3 "I'm not looking too good!"
-#define HUSTR_CHATMACRO4 "Help!"
-#define HUSTR_CHATMACRO5 "You suck!"
-#define HUSTR_CHATMACRO6 "Next time, scumbag..."
-#define HUSTR_CHATMACRO7 "Come here!"
-#define HUSTR_CHATMACRO8 "I'll take care of it."
-#define HUSTR_CHATMACRO9 "Yes"
-#define HUSTR_CHATMACRO0 "No"
-
-// AM_map.c ----------------------------------------------------------------
-
-#define AMSTR_FOLLOWON "FOLLOW MODE ON"
-#define AMSTR_FOLLOWOFF "FOLLOW MODE OFF"
-
-// F_finale.c --------------------------------------------------------------
-
-#define E1TEXT "with the destruction of the iron\n"\
- "liches and their minions, the last\n"\
- "of the undead are cleared from this\n"\
- "plane of existence.\n\n"\
- "those creatures had to come from\n"\
- "somewhere, though, and you have the\n"\
- "sneaky suspicion that the fiery\n"\
- "portal of hell's maw opens onto\n"\
- "their home dimension.\n\n"\
- "to make sure that more undead\n"\
- "(or even worse things) don't come\n"\
- "through, you'll have to seal hell's\n"\
- "maw from the other side. of course\n"\
- "this means you may get stuck in a\n"\
- "very unfriendly world, but no one\n"\
- "ever said being a Heretic was easy!"
-
-#define E2TEXT "the mighty maulotaurs have proved\n"\
- "to be no match for you, and as\n"\
- "their steaming corpses slide to the\n"\
- "ground you feel a sense of grim\n"\
- "satisfaction that they have been\n"\
- "destroyed.\n\n"\
- "the gateways which they guarded\n"\
- "have opened, revealing what you\n"\
- "hope is the way home. but as you\n"\
- "step through, mocking laughter\n"\
- "rings in your ears.\n\n"\
- "was some other force controlling\n"\
- "the maulotaurs? could there be even\n"\
- "more horrific beings through this\n"\
- "gate? the sweep of a crystal dome\n"\
- "overhead where the sky should be is\n"\
- "certainly not a good sign...."
-
-#define E3TEXT "the death of d'sparil has loosed\n"\
- "the magical bonds holding his\n"\
- "creatures on this plane, their\n"\
- "dying screams overwhelming his own\n"\
- "cries of agony.\n\n"\
- "your oath of vengeance fulfilled,\n"\
- "you enter the portal to your own\n"\
- "world, mere moments before the dome\n"\
- "shatters into a million pieces.\n\n"\
- "but if d'sparil's power is broken\n"\
- "forever, why don't you feel safe?\n"\
- "was it that last shout just before\n"\
- "his death, the one that sounded\n"\
- "like a curse? or a summoning? you\n"\
- "can't really be sure, but it might\n"\
- "just have been a scream.\n\n"\
- "then again, what about the other\n"\
- "serpent riders?"
diff --git a/src/hexen/i_ibm_a.asm b/src/hexen/i_ibm_a.asm
deleted file mode 100644
index 8b548b5b..00000000
--- a/src/hexen/i_ibm_a.asm
+++ /dev/null
@@ -1,135 +0,0 @@
- .386
- .MODEL small
-
-.DATA
-
-
-
-.CODE
-
-IF 0
-#define PEL_WRITE_ADR 0x3c8
-#define PEL_READ_ADR 0x3c7
-#define PEL_DATA 0x3c9
-ENDIF
-
-;================
-;
-; I_DivException
-;
-;================
-
-PROC I_DivException_
-PUBLIC I_DivException_
- mov edx,03c9h
- mov al,63
- out dx,al
-
- mov ebx,0ffffffh
- mov eax,[ebx]
- retf
-ENDP
-
-;================
-;
-; I_SetDivException
-;
-;================
-
-PROC I_SetDivException_
-PUBLIC I_SetDivException_
- pusha
-
- mov eax,0212h
- mov ebx,0
- mov ecx,cs
- mov edx,OFFSET I_DivException_
- int 31h
- jnc good
-
- popa
- mov eax,0
- ret
-
-good:
- popa
- mov eax,1
- ret
-
-ENDP
-
-
-;================
-;
-; I_ReadJoystick
-;
-; Read the absolute joystick values
-; returns false if not connected
-;================
-
-.data
-
-_joystickx dd 0
-_joysticky dd 0
-PUBLIC _joystickx, _joysticky
-
-.code
-
-PROC I_ReadJoystick_
-PUBLIC I_ReadJoystick_
- pushad
- pushf ; state of interrupt flag
- cli
-
- mov dx,0201h
- in al,dx
- out dx,al ; Clear the resistors
-
- mov ah,1 ; Get masks into registers
- mov ch,2
-
- xor esi,esi ; Clear count registers
- xor edi,edi
- xor ebx,ebx ; Clear high byte of bx for later
-
- mov ebp,10000 ; joystick is disconnected if value is this big
-
-jloop:
- in al,dx ; Get bits indicating whether all are finished
-
- dec ebp ; Check bounding register
- jz bad ; We have a silly value - abort
-
- mov bl,al ; Duplicate the bits
- and bl,ah ; Mask off useless bits (in [xb])
- add esi,ebx ; Possibly increment count register
- mov cl,bl ; Save for testing later
-
- mov bl,al
- and bl,ch ; [yb]
- add edi,ebx
-
- add cl,bl
- jnz jloop ; If both bits were 0, drop out
-
-done:
- mov [_joystickx],esi
- shr edi,1 ; because 2s were added
- mov [_joysticky],edi
-
- popf ; restore interrupt flag
- popad
- mov eax,1 ; read was ok
- ret
-
-bad:
- popf ; restore interrupt flag
- popad
- xor eax, eax ; read was bad
- ret
-
-ENDP
-
-
-END
-
diff --git a/src/hexen/linear.asm b/src/hexen/linear.asm
deleted file mode 100644
index d57c0cfa..00000000
--- a/src/hexen/linear.asm
+++ /dev/null
@@ -1,349 +0,0 @@
- .386
- .MODEL small
- INCLUDE defs.inc
-
-
-;============================================================================
-;
-; unwound vertical scaling code
-;
-; eax light table pointer, 0 lowbyte overwritten
-; ebx all 0, low byte overwritten
-; ecx fractional step value
-; edx fractional scale value
-; esi start of source pixels
-; edi bottom pixel in screenbuffer to blit into
-;
-; ebx should be set to 0 0 0 dh to feed the pipeline
-;
-; The graphics wrap vertically at 128 pixels
-;============================================================================
-
-.DATA
-
-EXTRN _centery:DWORD
-
-SCALEDEFINE MACRO number
- dd vscale&number
-ENDM
-
- ALIGN 4
-scalecalls LABEL
-LINE = 0
-REPT SCREENHEIGHT+1
- SCALEDEFINE %LINE
-LINE = LINE+1
-ENDM
-
-FUZZSCALEDEFINE MACRO number
- dd fuzzvscale&number
-ENDM
-
- ALIGN 4
-fuzzscalecalls LABEL
-LINE = 0
-REPT SCREENHEIGHT+1
- FUZZSCALEDEFINE %LINE
-LINE = LINE+1
-ENDM
-
-calladdr dd ?
-
-;=================================
-
-
-.CODE
-
-;================
-;
-; R_DrawColumn
-;
-;================
-
-PROC R_DrawColumn_
-PUBLIC R_DrawColumn_
- PUSHR
-
- mov ebp,[_dc_yh]
- mov ebx,ebp
- mov edi,[_ylookup+ebx*4]
- mov ebx,[_dc_x]
- add edi,[_columnofs + ebx*4]
-
- mov eax,[_dc_yl]
- sub ebp,eax ; ebp = pixel count
- or ebp,ebp
- js done
-
- mov ecx,[_dc_iscale]
-
- sub eax,[_centery]
- imul ecx
- mov edx,[_dc_texturemid]
- add edx,eax
- shl edx,9 ; 7 significant bits, 25 frac
-
- shl ecx,9 ; 7 significant bits, 25 frac
- mov esi,[_dc_source]
-
- mov eax,[_dc_colormap]
-
- xor ebx,ebx
- shld ebx,edx,7 ; get address of first location
- call [scalecalls+4+ebp*4]
-
-done:
- POPR
- ret
-
-;============ HIGH DETAIL ============
-
-SCALELABEL MACRO number
-vscale&number:
-ENDM
-
-LINE = SCREENHEIGHT
-REPT SCREENHEIGHT-1
- SCALELABEL %LINE
- mov al,[esi+ebx] ; get source pixel
- add edx,ecx ; calculate next location
- mov al,[eax] ; translate the color
-; xor ebx,ebx
-; shld ebx,edx,7 ; get address of next location
- mov ebx,edx
- shr ebx,25
- mov [edi-(LINE-1)*SCREENWIDTH],al ; draw a pixel to the buffer
-LINE = LINE-1
-ENDM
-vscale1:
- mov al,[esi+ebx]
- mov al,[eax]
- mov [edi],al
-vscale0:
- ret
-
-ENDP
-
-
-;================
-;
-; R_DrawFuzz
-;
-;================
-
-PROC R_DrawFuzzColumn_
-PUBLIC R_DrawFuzzColumn_
- PUSHR
-
- mov ebp,[_dc_yh]
- mov ebx,ebp
- mov edi,[_ylookup+ebx*4]
- mov ebx,[_dc_x]
- add edi,[_columnofs + ebx*4]
-
- mov eax,[_dc_yl]
- sub ebp,eax ; ebp = pixel count
- or ebp,ebp
- js fuzzdone
-
- mov ecx,[_dc_iscale]
-
- sub eax,[_centery]
- imul ecx
- mov edx,[_dc_texturemid]
- add edx,eax
- shl edx,9 ; 7 significant bits, 25 frac
-
- shl ecx,9 ; 7 significant bits, 25 frac
- mov esi,[_dc_source]
- mov eax,[_dc_colormap]
- xor ebx,ebx
- shld ebx,edx,7 ;get address of first location
-
- mov ebp, [fuzzscalecalls+4+ebp*4]
- mov calladdr, ebp
- mov ebp, ecx
- xor ecx, ecx
-
- call [calladdr]
-
-fuzzdone:
- POPR
- ret
-
-
-FUZZSCALELABEL MACRO number
-fuzzvscale&number:
-ENDM
-
-LINE = SCREENHEIGHT
-REPT SCREENHEIGHT-1
- FUZZSCALELABEL %LINE
- mov al, byte ptr [esi+ebx] ; get source pixel
- add edx, ebp ; calculate next location
-
- mov cl, byte ptr [edi-(LINE-1)*SCREENWIDTH]
- mov ch, [eax]
- add ecx, [_tinttable]
- mov ebx, edx
- shr ebx, 25
- mov al, [ecx]
- mov [edi-(LINE-1)*SCREENWIDTH],al ; draw a pixel to the buffer
- xor ecx, ecx
-LINE = LINE-1
-ENDM
-fuzzvscale1:
- mov al,[esi+ebx]
- mov cl, byte ptr [edi-(LINE-1)*SCREENWIDTH]
- mov ch, [eax]
- add ecx, [_tinttable]
- mov al, [ecx]
- mov [edi],al
-fuzzvscale0:
- ret
-
-ENDP
-
-;============================================================================
-;
-; unwound horizontal texture mapping code
-;
-; eax lighttable
-; ebx scratch register
-; ecx position 6.10 bits x, 6.10 bits y
-; edx step 6.10 bits x, 6.10 bits y
-; esi start of block
-; edi dest
-; ebp fff to mask bx
-;
-; ebp should by preset from ebx / ecx before calling
-;============================================================================
-
-OP_SHLD = 0fh
-
-
-.DATA
-
-
-MAPDEFINE MACRO number
- dd hmap&number
-ENDM
-
- ALIGN 4
-mapcalls LABEL
-LINE = 0
-REPT SCREENWIDTH+1
- MAPDEFINE %LINE
-LINE = LINE+1
-ENDM
-
-
-callpoint dd 0
-returnpoint dd 0
-
-
-.CODE
-
-;================
-;
-; R_DrawSpan
-;
-; Horizontal texture mapping
-;
-;================
-
-
-PROC R_DrawSpan_
-PUBLIC R_DrawSpan_
- PUSHR
-
-IFE SKIPPRIMITIVES
-
- mov eax,[_ds_x1]
- mov ebx,[_ds_x2]
- mov eax,[mapcalls+eax*4]
- mov [callpoint],eax ; spot to jump into unwound
- mov eax,[mapcalls+4+ebx*4]
- mov [returnpoint],eax ; spot to patch a ret at
- mov BYTE PTR [eax], OP_RET
-
-;
-; build composite position
-;
- mov ecx,[_ds_xfrac]
- shl ecx,10
- and ecx,0ffff0000h
- mov eax,[_ds_yfrac]
- shr eax,6
- and eax,0ffffh
- or ecx,eax
-
-;
-; build composite step
-;
- mov edx,[_ds_xstep]
- shl edx,10
- and edx,0ffff0000h
- mov eax,[_ds_ystep]
- shr eax,6
- and eax,0ffffh
- or edx,eax
-
- mov esi,[_ds_source]
-
- mov edi,[_ds_y]
- mov edi,[_ylookup+edi*4]
- add edi,[_columnofs]
-
- mov eax,[_ds_colormap]
-
-;
-; feed the pipeline and jump in
-;
- mov ebp,0fffh ; used to mask off slop high bits from position
- shld ebx,ecx,22 ; shift y units in
- shld ebx,ecx,6 ; shift x units in
- and ebx,ebp ; mask off slop bits
- call [callpoint]
-
- mov ebx,[returnpoint]
- mov BYTE PTR [ebx],OP_MOVAL ; remove the ret patched in
-
-ENDIF
- POPR
- ret
-
-
-;============= HIGH DETAIL ============
-
-.CODE
-
-MAPLABEL MACRO number
-hmap&number:
-ENDM
-
-LINE = 0
-PCOL = 0
-REPT SCREENWIDTH/4
-PLANE = 0
-REPT 4
- MAPLABEL %LINE
-LINE = LINE + 1
-
- mov al,[esi+ebx] ; get source pixel
- shld ebx,ecx,22 ; shift y units in
- shld ebx,ecx,6 ; shift x units in
- mov al,[eax] ; translate color
- and ebx,ebp ; mask off slop bits
- add ecx,edx ; position += step
- mov [edi+PLANE+PCOL*4],al ; write pixel
-PLANE = PLANE + 1
-ENDM
-PCOL = PCOL + 1
-ENDM
-hmap320:
- ret
-
-ENDP
-
-END
diff --git a/src/hexen/oldd_net.c b/src/hexen/oldd_net.c
deleted file mode 100644
index 73bba9c1..00000000
--- a/src/hexen/oldd_net.c
+++ /dev/null
@@ -1,790 +0,0 @@
-// I_pcnet.m
-
-#include "DoomDef.h"
-
-#define NCMD_EXIT 0x80000000
-#define NCMD_RETRANSMIT 0x40000000
-#define NCMD_SETUP 0x20000000
-#define NCMD_CHECKSUM 0x0fffffff
-
-/*
-if more space needs to be crunched out of the protocol...
-
-1 drone
-2 player
-8 tic
-5 numtics
-
-#define NCMD_EXIT 0x80000000
-#define NCMD_RETRANSMIT 0x40000000 // a retransmit will have 0 tics
-#define NCMD_DRONE 0x20000000
-#define NCMD_PLAYER 0x18000000
-#define NCMD_PLAYERSHIFT 27
-#define NCMD_TIC 0x00ff0000
-#define NCMD_TICSHIFT 16
-#define NCMD_NUMTICS 0x0000ff00
-#define NCMD_NUMTICSSHIFT 8
-#define NCMD_CHECKSUM 0x000000ff
-
-*/
-
-
-
-
-
-doomcom_t *doomcom;
-doomdata_t *netbuffer; // points inside doomcom
-
-
-/*
-==============================================================================
-
- NETWORKING
-
-gametic is the tic about to (or currently being) run
-maketic is the tick that hasn't had control made for it yet
-nettics[] has the maketics for all players
-
-a gametic cannot be run until nettics[] > gametic for all players
-
-==============================================================================
-*/
-
-#define RESENDCOUNT 10
-#define PL_DRONE 0x80 // bit flag in doomdata->player
-
-ticcmd_t localcmds[BACKUPTICS];
-
-ticcmd_t netcmds[MAXPLAYERS][BACKUPTICS];
-int nettics[MAXNETNODES];
-boolean nodeingame[MAXNETNODES]; // set false as nodes leave game
-boolean remoteresend[MAXNETNODES]; // set when local needs tics
-int resendto[MAXNETNODES]; // set when remote needs tics
-int resendcount[MAXNETNODES];
-
-int nodeforplayer[MAXPLAYERS];
-
-int gametime;
-int maketic;
-int lastnettic, skiptics;
-int ticdup;
-
-void D_ProcessEvents (void);
-void G_BuildTiccmd (ticcmd_t *cmd);
-void D_DoAdvanceDemo (void);
-
-boolean reboundpacket;
-doomdata_t reboundstore;
-
-
-int NetbufferSize (void)
-{
- return (int)&(((doomdata_t *)0)->cmds[netbuffer->numtics]);
-}
-
-unsigned NetbufferChecksum (void)
-{
- unsigned c;
- int i,l;
-
- c = 0x1234567;
-
-#ifdef NeXT
- return 0; // byte order problems
-#endif
-
- l = (NetbufferSize () - (int)&(((doomdata_t *)0)->retransmitfrom))/4;
- for (i=0 ; i<l ; i++)
- c += ((unsigned *)&netbuffer->retransmitfrom)[i] * (i+1);
-
- return c & NCMD_CHECKSUM;
-}
-
-int ExpandTics (int low)
-{
- int delta;
-
- delta = low - (maketic&0xff);
-
- if (delta >= -64 && delta <= 64)
- return (maketic&~0xff) + low;
- if (delta > 64)
- return (maketic&~0xff) - 256 + low;
- if (delta < -64)
- return (maketic&~0xff) + 256 + low;
-
- I_Error ("ExpandTics: strange value %i at maketic %i",low,maketic);
- return 0;
-}
-
-
-//============================================================================
-
-
-/*
-==============
-=
-= HSendPacket
-=
-==============
-*/
-
-void HSendPacket (int node, int flags)
-{
- netbuffer->checksum = NetbufferChecksum () | flags;
-
- if (!node)
- {
- reboundstore = *netbuffer;
- reboundpacket = true;
- return;
- }
-
- if (!netgame)
- I_Error ("Tried to transmit to another node");
-
- doomcom->command = CMD_SEND;
- doomcom->remotenode = node;
- doomcom->datalength = NetbufferSize ();
-
-if (debugfile)
-{
- int i;
- int realretrans;
- if (netbuffer->checksum & NCMD_RETRANSMIT)
- realretrans = ExpandTics (netbuffer->retransmitfrom);
- else
- realretrans = -1;
- fprintf (debugfile,"send (%i + %i, R %i) [%i] "
- ,ExpandTics(netbuffer->starttic),netbuffer->numtics, realretrans, doomcom->datalength);
- for (i=0 ; i<doomcom->datalength ; i++)
- fprintf (debugfile,"%i ",((byte *)netbuffer)[i]);
- fprintf (debugfile,"\n");
-}
-
- I_NetCmd ();
-}
-
-/*
-==============
-=
-= HGetPacket
-=
-= Returns false if no packet is waiting
-=
-==============
-*/
-
-boolean HGetPacket (void)
-{
- if (reboundpacket)
- {
- *netbuffer = reboundstore;
- doomcom->remotenode = 0;
- reboundpacket = false;
- return true;
- }
-
- if (!netgame)
- return false;
-
- doomcom->command = CMD_GET;
- I_NetCmd ();
- if (doomcom->remotenode == -1)
- return false;
-
- if (doomcom->datalength != NetbufferSize ())
- {
- if (debugfile)
- fprintf (debugfile,"bad packet length %i\n",doomcom->datalength);
- return false;
- }
-
- if (NetbufferChecksum () != (netbuffer->checksum&NCMD_CHECKSUM) )
- {
- if (debugfile)
- fprintf (debugfile,"bad packet checksum\n");
- return false;
- }
-
-if (debugfile)
-{
- int realretrans;
- int i;
-
- if (netbuffer->checksum & NCMD_SETUP)
- fprintf (debugfile,"setup packet\n");
- else
- {
- if (netbuffer->checksum & NCMD_RETRANSMIT)
- realretrans = ExpandTics (netbuffer->retransmitfrom);
- else
- realretrans = -1;
- fprintf (debugfile,"get %i = (%i + %i, R %i)[%i] ",doomcom->remotenode,
- ExpandTics(netbuffer->starttic),netbuffer->numtics, realretrans, doomcom->datalength);
- for (i=0 ; i<doomcom->datalength ; i++)
- fprintf (debugfile,"%i ",((byte *)netbuffer)[i]);
- fprintf (debugfile,"\n");
- }
-}
- return true;
-}
-
-
-/*
-===================
-=
-= GetPackets
-=
-===================
-*/
-
-char exitmsg[80];
-
-void GetPackets (void)
-{
- int netconsole;
- int netnode;
- int netdrone;
- int j;
- ticcmd_t *src, *dest;
- int dupedstart, dupedend;
- int skiptics;
- int realstart;
-
- while (HGetPacket ())
- {
- if (netbuffer->checksum & NCMD_SETUP)
- continue; // extra setup packet
-
- netdrone = netbuffer->player & PL_DRONE;
- netconsole = netbuffer->player & ~PL_DRONE;
- netnode = doomcom->remotenode;
- //
- // to save bytes, only the low byte of tic numbers are sent
- // Figure out what the rest of the bytes are
- //
- realstart = ExpandTics (netbuffer->starttic);
- dupedstart = realstart*doomcom->ticdup;
- dupedend = (realstart+netbuffer->numtics)*doomcom->ticdup;
-
- //
- // check for exiting the game
- //
- if (netbuffer->checksum & NCMD_EXIT)
- {
- if (!nodeingame[netnode])
- continue;
- nodeingame[netnode] = false;
- if (!netdrone)
- {
- playeringame[netconsole] = false;
- strcpy (exitmsg, "Player 1 left the game");
- exitmsg[7] += netconsole;
- players[consoleplayer].message = exitmsg;
- }
- continue;
- }
-
- //
- // drone packets are just notifications
- //
- if (netdrone)
- {
- nettics[netnode] = dupedend;
- continue;
- }
-
- nodeforplayer[netconsole] = netnode;
-
- //
- // check for retransmit request
- //
- if ( resendcount[netnode] <= 0
- && (netbuffer->checksum & NCMD_RETRANSMIT) )
- {
- resendto[netnode] = ExpandTics(netbuffer->retransmitfrom);
-if (debugfile)
-fprintf (debugfile,"retransmit from %i\n", resendto[netnode]);
- resendcount[netnode] = RESENDCOUNT;
- }
- else
- resendcount[netnode]--;
-
- //
- // check for out of order / duplicated packet
- //
- if (dupedend == nettics[netnode])
- continue;
-
- if (dupedend < nettics[netnode])
- {
-if (debugfile)
-fprintf (debugfile,"out of order packet (%i + %i)\n" ,realstart,netbuffer->numtics);
- continue;
- }
-
- //
- // check for a missed packet
- //
- if (dupedstart > nettics[netnode])
- {
- // stop processing until the other system resends the missed tics
-if (debugfile)
-fprintf (debugfile,"missed tics from %i (%i - %i)\n", netnode, dupedstart, nettics[netnode]);
- remoteresend[netnode] = true;
- continue;
- }
-
-//
-// update command store from the packet
-//
- remoteresend[netnode] = false;
-
- skiptics = nettics[netnode]/doomcom->ticdup - realstart;
- src = &netbuffer->cmds[skiptics];
-
- while (nettics[netnode] < dupedend)
- {
- for (j=0 ; j<doomcom->ticdup ; j++)
- {
- dest = &netcmds[netconsole][nettics[netnode]%BACKUPTICS];
- nettics[netnode]++;
- *dest = *src;
- src->chatchar = 0;
- if (src->buttons & BT_SPECIAL)
- src->buttons = 0;
- }
- src++;
- }
- }
-}
-
-/*
-=============
-=
-= NetUpdate
-=
-= Builds ticcmds for console player
-= sends out a packet
-=============
-*/
-
-void NetUpdate (void)
-{
- int nowtime;
- int newtics;
- int i,j;
- int gameticdiv;
- int realstart;
-
- if (singletics)
- return; // singletic update is syncronous
-
-//
-// check time
-//
- nowtime = I_GetTime ()/doomcom->ticdup;
- newtics = nowtime - gametime;
- gametime = nowtime;
- if (newtics <= 0) // nothing new to update
- goto listen;
-
- if (skiptics <= newtics)
- {
- newtics -= skiptics;
- skiptics = 0;
- }
- else
- {
- skiptics -= newtics;
- newtics = 0;
- }
-
-
- netbuffer->player = consoleplayer;
- if (doomcom->drone)
- netbuffer->player |= PL_DRONE;
-
-//
-// drone packets
-//
- if (doomcom->drone)
- {
- I_StartTic ();
- D_ProcessEvents ();
- goto sendit;
- }
-
-//
-// build new ticcmds for console player
-//
- gameticdiv = (gametic+doomcom->ticdup-1)/doomcom->ticdup;
- for (i=0 ; i<newtics ; i++)
- {
- I_StartTic ();
- D_ProcessEvents ();
- if (maketic - gameticdiv >= BACKUPTICS/2 /* /doomcom->ticdup */- 1)
- {
- newtics = i;
- break; // can't hold any more
- }
-//printf ("mk:%i ",maketic);
- G_BuildTiccmd (&localcmds[maketic%BACKUPTICS]);
- maketic++;
- }
-
-//
-// send the packet to the other nodes
-//
-sendit:
- for (i=0 ; i<doomcom->numnodes ; i++)
- if (nodeingame[i])
- {
- if (doomcom->drone)
- {
- netbuffer->starttic = realstart = maketic + BACKUPTICS/2;
- netbuffer->numtics = 0;
- }
- else
- {
- netbuffer->starttic = realstart = resendto[i];
- netbuffer->numtics = maketic - realstart;
- resendto[i] = maketic - doomcom->extratics;
- }
-
- if (netbuffer->numtics > BACKUPTICS)
- I_Error ("NetUpdate: netbuffer->numtics > BACKUPTICS");
-
- for (j=0 ; j< netbuffer->numtics ; j++)
- netbuffer->cmds[j] =
- localcmds[(realstart+j)%BACKUPTICS];
-
- if (remoteresend[i])
- {
- netbuffer->retransmitfrom = nettics[i]/doomcom->ticdup;
- HSendPacket (i, NCMD_RETRANSMIT);
- }
- else
- {
- netbuffer->retransmitfrom = 0;
- HSendPacket (i, 0);
- }
- }
-
-//
-// listen for other packets
-//
-listen:
-
- GetPackets ();
-}
-
-
-/*
-=====================
-=
-= CheckAbort
-=
-=====================
-*/
-
-void CheckAbort (void)
-{
- event_t *ev;
-
- I_WaitVBL(2);
-
- I_StartTic ();
- for ( ; eventtail != eventhead
- ; eventtail = (++eventtail)&(MAXEVENTS-1) )
- {
- ev = &events[eventtail];
- if (ev->type == ev_keydown && ev->data1 == KEY_ESCAPE)
- I_Error ("Network game synchronization aborted.");
- }
-}
-
-/*
-=====================
-=
-= D_ArbitrateNetStart
-=
-=====================
-*/
-
-void D_ArbitrateNetStart (void)
-{
- int i;
- boolean gotinfo[MAXNETNODES];
-
- autostart = true;
- memset (gotinfo,0,sizeof(gotinfo));
-
- if (doomcom->consoleplayer)
- { // listen for setup info from key player
- printf ("listening for network start info...\n");
- while (1)
- {
- CheckAbort ();
- if (!HGetPacket ())
- continue;
- if (netbuffer->checksum & NCMD_SETUP)
- {
- if (netbuffer->player != VERSION)
- I_Error ("Different DOOM versions cannot play a net game!");
- startskill = netbuffer->retransmitfrom & 15;
- deathmatch = (netbuffer->retransmitfrom & 0x80) > 0;
- nomonsters = (netbuffer->retransmitfrom & 0x40) > 0;
- respawnparm = (netbuffer->retransmitfrom & 0x20) > 0;
- startmap = netbuffer->starttic & 15;
- startepisode = netbuffer->starttic >> 4;
- return;
- }
- }
- }
- else
- { // key player, send the setup info
- printf ("sending network start info...\n");
- do
- {
- CheckAbort ();
- for (i=0 ; i<doomcom->numnodes ; i++)
- {
- netbuffer->retransmitfrom = startskill;
- if (deathmatch)
- netbuffer->retransmitfrom |= 0x80;
- if (nomonsters)
- netbuffer->retransmitfrom |= 0x40;
- if (respawnparm)
- netbuffer->retransmitfrom |= 0x20;
- netbuffer->starttic = startepisode * 16 + startmap;
- netbuffer->player = VERSION;
- netbuffer->numtics = 0;
- HSendPacket (i, NCMD_SETUP);
- }
-
- while (HGetPacket ())
- {
- gotinfo[netbuffer->player&0x7f] = true;
- }
-
- for (i=1 ; i<doomcom->numnodes ; i++)
- if (!gotinfo[i])
- break;
- } while (i < doomcom->numnodes);
- }
-}
-
-/*
-===================
-=
-= D_CheckNetGame
-=
-= Works out player numbers among the net participants
-===================
-*/
-
-extern int viewangleoffset;
-
-void D_CheckNetGame (void)
-{
- int i;
-
- for (i=0 ; i<MAXNETNODES ; i++)
- {
- nodeingame[i] = false;
- nettics[i] = 0;
- remoteresend[i] = false; // set when local needs tics
- resendto[i] = 0; // which tic to start sending
- }
-
-// I_InitNetwork sets doomcom and netgame
- I_InitNetwork ();
- if (doomcom->id != DOOMCOM_ID)
- I_Error ("Doomcom buffer invalid!");
- netbuffer = &doomcom->data;
- consoleplayer = displayplayer = doomcom->consoleplayer;
- if (netgame)
- D_ArbitrateNetStart ();
-printf ("startskill %i deathmatch: %i startmap: %i startepisode: %i\n", startskill, deathmatch, startmap, startepisode);
-
-// read values out of doomcom
- ticdup = doomcom->ticdup;
-
- for (i=0 ; i<doomcom->numplayers ; i++)
- playeringame[i] = true;
- for (i=0 ; i<doomcom->numnodes ; i++)
- nodeingame[i] = true;
-
-printf ("player %i of %i (%i nodes)\n", consoleplayer+1, doomcom->numplayers, doomcom->numnodes);
-
-}
-
-/*
-==================
-=
-= D_QuitNetGame
-=
-= Called before quitting to leave a net game without hanging the
-= other players
-=
-==================
-*/
-
-void D_QuitNetGame (void)
-{
- int i, j;
-
- if (debugfile)
- fclose (debugfile);
-
- if (!netgame || !usergame || consoleplayer == -1)
- return;
-
-// send a bunch of packets for security
- netbuffer->player = consoleplayer;
- if (doomcom->drone)
- netbuffer->player |= PL_DRONE;
- netbuffer->numtics = 0;
- for (i=0 ; i<4 ; i++)
- {
- for (j=1 ; j<doomcom->numnodes ; j++)
- if (nodeingame[j])
- HSendPacket (j, NCMD_EXIT);
- I_WaitVBL (1);
- }
-}
-
-
-
-/*
-===============
-=
-= TryRunTics
-=
-===============
-*/
-
-int frametics[4], frameon;
-int frameskip[4];
-int oldnettics;
-extern boolean advancedemo;
-
-void TryRunTics (void)
-{
- int i;
- int lowtic, nextlowest;
- int entertic;
- int static oldentertics;
- int realtics, availabletics;
- int counts;
- int numplaying;
-
-//
-// get real tics
-//
- entertic = I_GetTime ();
- realtics = entertic - oldentertics;
- oldentertics = entertic;
-
-//
-// get available tics
-//
- NetUpdate ();
-
- lowtic = nextlowest = MAXINT;
- numplaying = 0;
- for (i=0 ; i<doomcom->numnodes ; i++)
- if (nodeingame[i])
- {
- numplaying++;
- if (nettics[i] < lowtic)
- {
- nextlowest = lowtic;
- lowtic = nettics[i];
- }
- else if (nettics[i] < nextlowest)
- nextlowest = nettics[i];
- }
- availabletics = lowtic - gametic;
-
-
-//
-// decide how many tics to run
-//
- if (realtics < availabletics-1)
- counts = realtics+1;
- else if (realtics < availabletics)
- counts = realtics;
- else
- counts = availabletics;
- if (counts < 1)
- counts = 1;
-
- frameon++;
-
-if (debugfile)
- fprintf (debugfile,"=======real: %i avail: %i game: %i\n",realtics, availabletics,counts);
-
-//=============================================================================
-//
-// ideally nettics[0] should be 1 - 3 tics above lowtic
-// if we are consistantly slower, speed up time
-// drones should never hold up the other players
-//
- for (i=0 ; i<MAXPLAYERS ; i++)
- if (playeringame[i])
- break;
- if (consoleplayer == i)
- { // the key player does not adapt
- }
- else
- {
- if (nettics[0] <= nettics[nodeforplayer[i]])
- {
- gametime--;
-// printf ("-");
- }
- frameskip[frameon&3] = (oldnettics > nettics[nodeforplayer[i]]);
- oldnettics = nettics[0];
- if (frameskip[0] && frameskip[1] && frameskip[2] && frameskip[3])
- {
- skiptics = 1;
-// printf ("+");
- }
- }
-//=============================================================================
-
-//
-// wait for new tics if needed
-//
- while (lowtic < gametic + counts)
- {
-
- NetUpdate ();
- lowtic = MAXINT;
-
- for (i=0 ; i<doomcom->numnodes ; i++)
- if (nodeingame[i] && nettics[i] < lowtic)
- lowtic = nettics[i];
-
- if (lowtic < gametic)
- I_Error ("TryRunTics: lowtic < gametic");
-
- // don't stay in here forever -- give the menu a chance to work
- if (I_GetTime () - entertic >= 20)
- return;
- }
-
-
-//
-// run the tics
-//
- while (counts--)
- {
- G_Ticker ();
- NetUpdate (); // check for new console commands
- gametic++;
- }
-}
diff --git a/src/hexen/template.c b/src/hexen/template.c
deleted file mode 100644
index 358517bc..00000000
--- a/src/hexen/template.c
+++ /dev/null
@@ -1,32 +0,0 @@
-
-//**************************************************************************
-//**
-//** TEMPLATE.C
-//**
-//**************************************************************************
-
-// HEADER FILES ------------------------------------------------------------
-
-// MACROS ------------------------------------------------------------------
-
-// TYPES -------------------------------------------------------------------
-
-// EXTERNAL FUNCTION PROTOTYPES --------------------------------------------
-
-// PUBLIC FUNCTION PROTOTYPES ----------------------------------------------
-
-// PRIVATE FUNCTION PROTOTYPES ---------------------------------------------
-
-// EXTERNAL DATA DECLARATIONS ----------------------------------------------
-
-// PUBLIC DATA DEFINITIONS -------------------------------------------------
-
-// PRIVATE DATA DEFINITIONS ------------------------------------------------
-
-// CODE --------------------------------------------------------------------
-
-//==========================================================================
-//
-//
-//
-//==========================================================================
diff --git a/src/hexen/vgaview.h b/src/hexen/vgaview.h
deleted file mode 100644
index b880833b..00000000
--- a/src/hexen/vgaview.h
+++ /dev/null
@@ -1,34 +0,0 @@
-
-//**************************************************************************
-//**
-//** VGAView.h : Heretic 2 : Raven Software, Corp.
-//**
-//** $RCSfile: VGAView.h,v $
-//** $Revision: 1.1 $
-//** $Date: 95/05/11 00:19:48 $
-//** $Author: bgokey $
-//**
-//**************************************************************************
-
-#import <appkit/appkit.h>
-#import "h2def.h"
-
-// a few globals
-extern byte *bytebuffer;
-
-
-@interface VGAView:View
-{
- id game;
- int nextpalette[256]; // color lookup table
- int *nextimage; // palette expanded and scaled
- unsigned scale;
- NXWindowDepth depth;
-}
-
-- updateView;
-- (unsigned)scale;
-- setPalette:(byte *)pal;
-- setScale:(int)newscale;
-
-@end