Commit df1f9556 authored by Fabian Greffrath's avatar Fabian Greffrath

Imported Upstream version 1.0+dfsg

parents
( ) NME does not always exit level upon killing him
( ) Game locks when firing Darkstaff or Dog Mode at El Oscuro
( ) Network server locks up when exiting net game
( ) Stand( )alone server doesn't work consistently
( ) Break out with error message if ROTT is run with no sound.rot
( ) Quickload question should have (Y/N) on end
( ) Phone number length needs to be lengthed.
( ) Network packets need checksum word added to their packets
( ) VR gear new mouse sub functions
( ) Dog mode still locks up as well as some bat blast stuff
( ) Fix Live Remote Ridicule
( ) Wall can push you into platform so you fall down inside of it and be
stuck.
( ) Hanging at menu after a few network/modem games
( ) Hanging at warp menu prompt
( ) Warp Menu: chose level, screen went black, some how still in level select
( ) Unexpect Interrupt
( ) Generat random levels and battle levels. Choose alternate both.
New game End Game New Game Kaboom
( ) Make snake heads hurt to touch (fixes snake trapping you)
( ) Fix missiles not hitting enemy when standing face to face
( ) lockup on snake with one head left
( ) gamepad enabled before joystick enabled
( ) bark blast under dog walls and stuff
( ) config files saved in alternat RTS directory
( ) people complaining about reconfiging joystick each time
( ) Panic mapping over modem glass in 8 megs not in 4 megs
( ) Voice credit for OverPatrol (CHuck) Lightning guard (william)
MAP Stuff
( ) level 1( )3 in random powerup crossroads room, two different wall types
( ) Krist, if led outside of room, goes up disks, but can't go down them.
So he winds up running around sky. Fix map to lock door so Krist cannot
come out...
This diff is collapsed.
#-----------------------------------------------------------------------------#
# ROTT makefile.
#-----------------------------------------------------------------------------#
#-----------------------------------------------------------------------------#
# If this makefile fails to detect Cygwin correctly, or you want to force
# the build process's behaviour, set it to "true" or "false" (w/o quotes).
#-----------------------------------------------------------------------------#
#cygwin := true
#cygwin := false
cygwin := autodetect
# you only need to set these for Cygwin at the moment.
SDL_INC_DIR = /cygdrive/c/SDL/include
SDL_LIB_DIR = /cygdrive/c/SDL/lib
# Don't touch anything below this line unless you know what you're doing.
ifeq ($(strip $(cygwin)),autodetect)
ifneq ($(strip $(shell gcc -v 2>&1 |grep "cygwin")),)
cygwin := true
else
cygwin := false
endif
endif
ifeq ($(strip $(cygwin)),true)
ifeq ($(strip $(SDL_INC_DIR)),please_set_me_cygwin_users)
$(error Cygwin users need to set the SDL_INC_DIR envr var.)
else
SDL_CFLAGS := -I$(SDL_INC_DIR)
endif
ifeq ($(strip $(SDL_LIB_DIR)),please_set_me_cygwin_users)
$(error Cygwin users need to set the SDL_LIB_DIR envr var.)
else
SDL_LDFLAGS := -L$(SDL_LIB_DIR) -lSDL
endif
else
SDL_CFLAGS := $(shell sdl-config --cflags)
SDL_LDFLAGS := $(shell sdl-config --libs)
EXTRACFLAGS += -DUSE_EXECINFO=1
endif
CC = gcc
CFLAGS = -g $(SDL_CFLAGS) -DUSE_SDL=1 -DPLATFORM_UNIX=1 -W -Wall -Wno-unused $(EXTRACFLAGS)
LDLIBS = $(SDL_LDFLAGS) -lSDL -lSDL_mixer $(EXTRALDFLAGS) -Wl,-E
all: rott
rott: \
cin_actr.o \
cin_efct.o \
cin_evnt.o \
cin_glob.o \
cin_main.o \
cin_util.o \
dosutil.o \
engine.o \
fx_man.o \
isr.o \
modexlib.o \
rt_actor.o \
rt_battl.o \
rt_build.o \
rt_cfg.o \
rt_crc.o \
rt_com.o \
rt_debug.o \
rt_dmand.o \
rt_door.o \
rt_draw.o \
rt_floor.o \
rt_game.o \
rt_in.o \
rt_main.o \
rt_map.o \
rt_menu.o \
rt_msg.o \
rt_net.o \
rt_playr.o \
rt_rand.o \
rt_scale.o \
rt_sound.o \
rt_spbal.o \
rt_sqrt.o \
rt_stat.o \
rt_state.o \
rt_str.o \
rt_swift.o \
rt_ted.o \
rt_util.o \
rt_view.o \
rt_vid.o \
rt_err.o \
scriplib.o \
w_wad.o \
watcom.o \
z_zone.o \
byteordr.o
$(CC) $^ $(LDLIBS) -o $@
clean:
rm -rf *.o
distclean: clean
rm -rf *~
================
ROTT Port README
================
This is a port of Apogee's 3D action title Rise of the Triad, originally
released in 1994. This port duplicates the functionality of the original
game on modern operating systems, including Linux, Win32, and OSX.
This port makes use of the Simple Direct Media Layer, or SDL, and an additional
library named SDL_mixer. If you do not have these libraries installed, check
the links section below.
This software is distributed in source code format and is licensed under the
terms of the GNU General Public License. A copy of this license is included
with the software in the file gnu.txt.
This software is not supported by 3D Realms, Apogee, or the porters.
For reference, the primary contributors to this port are:
Steven Fuller
Ryan Gordon
John Hall
Dan Olson
-------------
General Hints
-------------
To compile the source code under Linux, change to the rott/ directory and type:
make clean
make
The source code is setup to use shareware binaries. If you want to use the
registered version of ROTT, edit rott/develop.h and make the following changes:
change
#define SHAREWARE 1
#define SUPERROTT 0
to
#define SHAREWARE 0
#define SUPERROTT 1
After this, save your changes and compile as normal.
If you experience difficulty with sound, you may need to download a CVS version
of SDL_mixer. Instructions for doing this can be found at the SDL_mixer site,
linked below.
------------
Known Issues
------------
- Demos go out of sync.
- DOS border coloring not implemented.
- Screen shake from DOS version not implemented.
- No netplay support.
-------------
Helpful Links
-------------
ROTT Port site:
http://icculus.org/rott/
The Simple Direct Media Layer:
http://www.libsdl.org/
SDL_mixer:
http://www.libsdl.org/projects/SDL_mixer
3D Realms official forum on ROTT source code:
http://forums.3drealms.com/ubb/ultimatebb.php?ubb=forum;f=24
/*
Copyright (C) 1994-1995 Apogee Software, Ltd.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef _engine_private
#define _engine_private
#define NOTSAMETILE(x1,x2) ( (posts[(x1)].posttype!=posts[(x2)].posttype) || \
(posts[(x1)].offset!=posts[(x2)].offset))
#define SGN(x) (x>0 ? 1 : -1)
#endif
/*
Copyright (C) 1994-1995 Apogee Software, Ltd.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
//***************************************************************************
//
// ISR Constants
//
//***************************************************************************
#ifndef _isr_private
#define _isr_private
#define TIMERINT 0x08
#define KEYBOARDINT 0x09
#endif
This diff is collapsed.
/*
Copyright (C) 1994-1995 Apogee Software, Ltd.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef _rt_build_private
#define _rt_build_private
#define MAX(x,y) ((x>y) ? (x) : (y))
#define MAXPLANES 10
// Should be 10 with titles
#define MENUOFFY (10)
#define MENUBACKNAME ("plane")
#define MENUTITLEY 10
#define TEXTUREW (288)
#define TEXTUREWIDTH ((TEXTUREW*1024)-1)
#define TEXTUREHEIGHT (158)
#define NORMALVIEW (0x40400L)
#define NORMALHEIGHTDIVISOR (156000000)
#define NORMALWIDTHMULTIPLIER (241)
#define FLIPTIME 20//60
typedef struct
{
int x1, y1;
int x2, y2;
int texturewidth;
int texture;
int origheight;
} plane_t;
#endif
/*
Copyright (C) 1994-1995 Apogee Software, Ltd.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef _rt_com_private
#define _rt_com_private
#define SYNCPACKETSIZE 32
#define SYNC_PHASE0 6
#define SYNC_PHASE1 0
#define SYNC_PHASE2 1
#define SYNC_PHASE3 2
#define SYNC_PHASE4 3
#define SYNC_PHASE5 4
#define SYNC_MEMO 99
#define NUMSYNCPHASES 5
#define SYNCTIME 15
typedef struct
{
byte type;
int phase;
int clocktime;
int delta;
byte data[SYNCPACKETSIZE];
} syncpackettype;
typedef struct
{
int sendtime;
int deltatime;
syncpackettype pkt;
} synctype;
#endif
/*
Copyright (C) 1994-1995 Apogee Software, Ltd.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef _rt_dmand_private
#define _rt_dmand_private
#define RECORDINGSAMPLERATE 7000
#define RECORDINGBUFFERSIZE 16384
#define PLAYBACKBUFFERSIZE 16384
#define PLAYBACKDELTASIZE 256
#endif
/*
Copyright (C) 1994-1995 Apogee Software, Ltd.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef _rt_door_private
#define _rt_door_private
#define OPENTICS 165
typedef struct tp
{
signed char actionindex;
signed char swapactionindex;
int whichobj;
byte tictime;
byte ticcount;
byte triggered;
byte complete;
byte done;
} saved_touch_type;
#define NUMTOUCHPLATEACTIONS 8
#define FL_TACT 0x4000
#define FL_TSTAT 0x8000
#define PUSHWALLSPEED 10
#define AMW_NUMFRAMES 9
#define AMW_TICCOUNT 3
#endif
/*
Copyright (C) 1994-1995 Apogee Software, Ltd.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef _rt_draw_private
#define _rt_draw_private
#include "develop.h"
#define MINZ 0x2700
#define MAXBOB 0x9000
#define GOLOWER 0x38000
#define GOHIGHER 0x20000
#define MAXVISIBLEDOORS 30
#define DHEIGHTFRACTION 8
#define MINZ 0x2700
#define MAXDRAWNTICS 40
#define W_CHANGE (WEAPONUPTICS || WEAPONDOWNTICS)
#if (SHAREWARE == 0)
#define NUMWEAPGRAPHICS 16
#else
#define NUMWEAPGRAPHICS 9
#endif
#define HFRACTION (6+HEIGHTFRACTION)
#define FIXEDTRANSLEVEL (30)
typedef struct
{
int x;
int y;
int angle;
int scale;
int dx;
int dy;
int dangle;
int dscale;
int phase;
int time;
int pausetime;
int pausex;
int pausey;
} screensaver_t;
void DrawPlayerWeapon(void);
boolean TransformPlane (int x1, int y1, int x2, int y2, visobj_t * plane);
int CalcRotate (objtype *ob);
void DrawScaleds (void);
void FixOfs (void);
void SetSpriteLightLevel (int x, int y, visobj_t * sprite, int dir, int fullbright);
#endif
/*
Copyright (C) 1994-1995 Apogee Software, Ltd.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef _rt_floor_private
#define _rt_floor_private
#define MAXVIEWHEIGHT MAXSCREENHEIGHT
#define MAXSKYSEGS 2048
#define MAXSKYDATA 8
#define MINSKYHEIGHT 148
#endif
/*
Copyright (C) 1994-1995 Apogee Software, Ltd.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef _rt_game_private
#define _rt_game_private
//******************************************************************************
//
// Private header for RT_GAME.C
//
//******************************************************************************
//******************************************************************************
//
// TYPEDEFS
//
//******************************************************************************
typedef struct {
char str[10];
int length;
} STR;
//******************************************************************************
//
// DEFINES
//
//******************************************************************************
#define MENUSHADELEVEL 105
#define KILLS_X 0
#define KILLS_Y 176
#define KILLS_WIDTH 32
#define KILLS_HEIGHT 24
#define KILLS_OFFSET 14
#define KILLS_NAME_Y ( KILLS_Y + 16 )
#define MAXKILLBOXES 10
#define PLAYERS_Y ( 107 + ( gamestate.teamplay ? 0 : 4 ) )
#define PLAYERS_NAME_Y ( PLAYERS_Y + 16 )
#define PLAYERS_TEAM_Y ( PLAYERS_Y + 24 )
#define LEADER_X 0
#define LEADER_Y 0
#define LEADER_NUM_X 61
#define LEADER_NUM_Y ( LEADER_Y )
#define LEADER_NAME_X ( LEADER_X + 3 )
#define LEADER_NAME_Y ( LEADER_Y + 2 )
#define LEADER_WIDTH 88
#define LEADER_HEIGHT 16
#define HEALTH_X 20
#define HEALTH_Y 185
#define AMMO_X 300
#define AMMO_Y 184
#define SCORE_X 4
#define SCORE_Y 0
#define KEY1_X 152
#define KEY2_X 160
#define KEY3_X 168
#define KEY4_X 176
#define KEY_Y 0
#define POWER_X 184
#define POWER_Y 0
#define ARMOR_X 200
#define ARMOR_Y 0
#define MEN_X 216
#define MEN_Y 0
#define HOUR_X 7
#define MIN_X 26
#define SEC_X 45
#define TIME_Y 0
#define GAMETIME_X 88
#define GAMETIME_Y 0
#define TALLYTIME_X 130
#define TALLYTIME_Y 8
#define LIVES_X 288
#define LIVES_Y 0
#define TRIAD_X 308
#define TRIAD_Y 6
#define POWERUP1X 184
#define POWERUP2X 200
#define POWERUPY 0
#define EXTRAPOINTS 50000
#define ADRENALINEBONUS 5
#define STR_SAVECHT1 "Your Save Game file is,"
#define STR_SAVECHT2 "shall we say, \"corrupted\"."
#define STR_SAVECHT3 "But I'll let you go on and"
#define STR_SAVECHT4 "play anyway...."
#define MAXSAVEDGAMESIZE 120000
#if (SHAREWARE == 0)
#define WEAPON_IS_MAGICAL(x) (((x) == wp_dog) || ((x) == wp_godhand))
#else
#define WEAPON_IS_MAGICAL(x) ((x) == wp_godhand)
#endif
//******************************************************************************
//
// PROTOTYPES
//
//******************************************************************************
void DrawMPPic (int xpos, int ypos, int width, int height, int heightmod, byte *src, boolean bufferofsonly);
void DrawHighScores (void);
void GM_MemToScreen (byte *source, int width, int height, int x, int y);
#endif