mirror of
https://github.com/ZDoom/raze-gles.git
synced 2025-01-12 19:20:38 +00:00
- more work on making Exhumed compile.
Almost done, down to 20 compile errors.
This commit is contained in:
parent
40772d9f0c
commit
8d11990494
22 changed files with 271 additions and 977 deletions
|
@ -91,7 +91,6 @@ enum GameFunction_t
|
||||||
|
|
||||||
gamefunc_Zoom_In, // Map controls should not pollute the global button namespace.
|
gamefunc_Zoom_In, // Map controls should not pollute the global button namespace.
|
||||||
gamefunc_Zoom_Out,
|
gamefunc_Zoom_Out,
|
||||||
gamefunc_Escape, // this shouldn't be a button.
|
|
||||||
|
|
||||||
NUMGAMEFUNCTIONS
|
NUMGAMEFUNCTIONS
|
||||||
};
|
};
|
||||||
|
|
|
@ -239,7 +239,7 @@ public:
|
||||||
|
|
||||||
void ClearKeysDown(void)
|
void ClearKeysDown(void)
|
||||||
{
|
{
|
||||||
KB_LastScan = 0;
|
ClearLastScanCode();
|
||||||
ClearAllKeyStatus();
|
ClearAllKeyStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -374,9 +374,10 @@ FTexture* BuildTiles::ValidateCustomTile(int tilenum, int type)
|
||||||
else if (type == FTexture::Restorable)
|
else if (type == FTexture::Restorable)
|
||||||
{
|
{
|
||||||
// This is for modifying an existing tile.
|
// This is for modifying an existing tile.
|
||||||
// It only gets used for the crosshair and two specific effects:
|
// It only gets used for the crosshair and a few specific effects:
|
||||||
// A) the fire in Blood.
|
// A) the fire in Blood.
|
||||||
// B) the pin display in Redneck Rampage's bowling lanes.
|
// B) the pin display in Redneck Rampage's bowling lanes.
|
||||||
|
// C) Exhumed's menu plus one special effect tile.
|
||||||
// All of these effects should probably be redone without actual texture hacking...
|
// All of these effects should probably be redone without actual texture hacking...
|
||||||
if (tile->GetWidth() == 0 || tile->GetHeight() == 0) return nullptr; // The base must have a size for this to work.
|
if (tile->GetWidth() == 0 || tile->GetHeight() == 0) return nullptr; // The base must have a size for this to work.
|
||||||
// todo: invalidate hardware textures for tile.
|
// todo: invalidate hardware textures for tile.
|
||||||
|
|
|
@ -583,7 +583,7 @@ inline uint8_t* tileData(int num)
|
||||||
return tex->GetWritableBuffer();
|
return tex->GetWritableBuffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Some hacks to allow accessing the no lpnger existing arrays as if they still were arrays to avoid changing hundreds of lines of code.
|
// Some hacks to allow accessing the no longer existing arrays as if they still were arrays to avoid changing hundreds of lines of code.
|
||||||
struct TileSiz
|
struct TileSiz
|
||||||
{
|
{
|
||||||
const vec2_16_t &operator[](size_t index)
|
const vec2_16_t &operator[](size_t index)
|
||||||
|
|
|
@ -1182,7 +1182,6 @@ void G_DisplayRest(int32_t smoothratio)
|
||||||
|
|
||||||
GameStats GameInterface::getStats()
|
GameStats GameInterface::getStats()
|
||||||
{
|
{
|
||||||
GameStats stats;
|
|
||||||
DukePlayer_t* p = g_player[myconnectindex].ps;
|
DukePlayer_t* p = g_player[myconnectindex].ps;
|
||||||
return { p->actors_killed, p->max_actors_killed, p->secret_rooms, p->max_secret_rooms, p->player_par / REALGAMETICSPERSEC };
|
return { p->actors_killed, p->max_actors_killed, p->secret_rooms, p->max_secret_rooms, p->player_par / REALGAMETICSPERSEC };
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,10 +45,7 @@ unsigned int dword_1B82E0 = 0;
|
||||||
|
|
||||||
int32_t FXVolume;
|
int32_t FXVolume;
|
||||||
int32_t MusicVolume;
|
int32_t MusicVolume;
|
||||||
int32_t MixRate;
|
|
||||||
int32_t MidiPort;
|
int32_t MidiPort;
|
||||||
int32_t NumVoices;
|
|
||||||
int32_t NumChannels;
|
|
||||||
int32_t NumBits;
|
int32_t NumBits;
|
||||||
int32_t ReverseStereo;
|
int32_t ReverseStereo;
|
||||||
int32_t MusicDevice;
|
int32_t MusicDevice;
|
||||||
|
@ -59,8 +56,6 @@ int32_t scripthandle;
|
||||||
int32_t setupread;
|
int32_t setupread;
|
||||||
// TODO: implement precaching toggle
|
// TODO: implement precaching toggle
|
||||||
int32_t useprecache;
|
int32_t useprecache;
|
||||||
int32_t MouseDeadZone, MouseBias;
|
|
||||||
int32_t SmoothInput;
|
|
||||||
|
|
||||||
void CONFIG_SetDefaults()
|
void CONFIG_SetDefaults()
|
||||||
{
|
{
|
||||||
|
@ -87,26 +82,13 @@ void CONFIG_SetDefaults()
|
||||||
|
|
||||||
// currently settings.cfg is only read after the startup window launches the game,
|
// currently settings.cfg is only read after the startup window launches the game,
|
||||||
// and rereading binds might be fickle so just enable this
|
// and rereading binds might be fickle so just enable this
|
||||||
gSetup.usejoystick = 1;
|
|
||||||
|
|
||||||
gSetup.forcesetup = 1;
|
gSetup.forcesetup = 1;
|
||||||
gSetup.noautoload = 1;
|
gSetup.noautoload = 1;
|
||||||
gSetup.fullscreen = 1;
|
gSetup.fullscreen = 1;
|
||||||
gSetup.usemouse = 1;
|
|
||||||
|
|
||||||
MixRate = 44100;
|
|
||||||
FXVolume = 255;
|
FXVolume = 255;
|
||||||
MusicVolume = 255;
|
MusicVolume = 255;
|
||||||
NumChannels = 2;
|
|
||||||
NumBits = 16;
|
NumBits = 16;
|
||||||
NumVoices = 32;
|
|
||||||
|
|
||||||
mouseaiming = 0;
|
|
||||||
aimmode = 1;
|
|
||||||
mouseflip = 1;
|
|
||||||
runkey_mode = 0;
|
|
||||||
auto_run = 1;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int CONFIG_ReadSetup(void)
|
int CONFIG_ReadSetup(void)
|
||||||
|
|
|
@ -27,8 +27,6 @@ BEGIN_PS_NS
|
||||||
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int32_t usejoystick;
|
|
||||||
int32_t usemouse;
|
|
||||||
int32_t fullscreen;
|
int32_t fullscreen;
|
||||||
int32_t xdim;
|
int32_t xdim;
|
||||||
int32_t ydim;
|
int32_t ydim;
|
||||||
|
|
|
@ -460,10 +460,6 @@ int32_t g_groupFileHandle;
|
||||||
|
|
||||||
static struct strllist *CommandPaths, *CommandGrps;
|
static struct strllist *CommandPaths, *CommandGrps;
|
||||||
|
|
||||||
void G_ExtPreInit(int32_t argc,char const * const * argv)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void G_ExtInit(void)
|
void G_ExtInit(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -651,7 +647,6 @@ int8_t vely[97 * 106];
|
||||||
short nMouthTile;
|
short nMouthTile;
|
||||||
|
|
||||||
short nPupData = 0;
|
short nPupData = 0;
|
||||||
int headfd = -1;
|
|
||||||
|
|
||||||
short word_964E8 = 0;
|
short word_964E8 = 0;
|
||||||
short word_964EA = 0;
|
short word_964EA = 0;
|
||||||
|
@ -679,7 +674,6 @@ short nBackgroundPic;
|
||||||
short nShadowPic;
|
short nShadowPic;
|
||||||
|
|
||||||
short nCreaturesLeft = 0;
|
short nCreaturesLeft = 0;
|
||||||
short bNoSound = kFalse;
|
|
||||||
|
|
||||||
short nFreeze;
|
short nFreeze;
|
||||||
short bFullScreen;
|
short bFullScreen;
|
||||||
|
@ -799,9 +793,6 @@ char debugBuffer[256];
|
||||||
|
|
||||||
short wConsoleNode; // TODO - move me into network file
|
short wConsoleNode; // TODO - move me into network file
|
||||||
|
|
||||||
int mouseaiming, aimmode, mouseflip;
|
|
||||||
int runkey_mode, auto_run;
|
|
||||||
|
|
||||||
ClockTicks tclocks, tclocks2;
|
ClockTicks tclocks, tclocks2;
|
||||||
|
|
||||||
void DebugOut(const char *fmt, ...)
|
void DebugOut(const char *fmt, ...)
|
||||||
|
@ -1567,10 +1558,10 @@ void DrawClock()
|
||||||
{
|
{
|
||||||
int ebp = 49;
|
int ebp = 49;
|
||||||
|
|
||||||
tileLoad(kTile3603);
|
auto pixels = TileFiles.tileMakeWritable(kTile3603);
|
||||||
|
|
||||||
// nRedTicks = 0;
|
// nRedTicks = 0;
|
||||||
memset((void*)waloff[kTile3603], -1, 4096);
|
memset(pixels, -1, 4096);
|
||||||
|
|
||||||
if (lCountDown / 30 != nClockVal)
|
if (lCountDown / 30 != nClockVal)
|
||||||
{
|
{
|
||||||
|
@ -1623,8 +1614,6 @@ static inline int32_t calc_smoothratio(ClockTicks totalclk, ClockTicks ototalclk
|
||||||
return clamp(tabledivide64(65536*elapsedFrames*30, rfreq), 0, 65536);
|
return clamp(tabledivide64(65536*elapsedFrames*30, rfreq), 0, 65536);
|
||||||
}
|
}
|
||||||
|
|
||||||
int r_showfps;
|
|
||||||
|
|
||||||
#define COLOR_RED redcol
|
#define COLOR_RED redcol
|
||||||
#define COLOR_WHITE whitecol
|
#define COLOR_WHITE whitecol
|
||||||
|
|
||||||
|
@ -1773,100 +1762,17 @@ static int32_t check_filename_casing(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int32_t r_maxfps = 60;
|
|
||||||
int32_t r_maxfpsoffset = 0;
|
int32_t r_maxfpsoffset = 0;
|
||||||
double g_frameDelay = 0.0;
|
double g_frameDelay = 0.0;
|
||||||
|
|
||||||
int G_FPSLimit(void)
|
|
||||||
{
|
|
||||||
if (!r_maxfps)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
static double nextPageDelay;
|
|
||||||
static uint64_t lastFrameTicks;
|
|
||||||
|
|
||||||
uint64_t const frameTicks = timerGetTicksU64();
|
|
||||||
uint64_t const elapsedTime = frameTicks - lastFrameTicks;
|
|
||||||
double const dElapsedTime = elapsedTime;
|
|
||||||
|
|
||||||
if (dElapsedTime >= floor(nextPageDelay))
|
|
||||||
{
|
|
||||||
if (dElapsedTime <= nextPageDelay+g_frameDelay)
|
|
||||||
nextPageDelay += g_frameDelay-dElapsedTime;
|
|
||||||
|
|
||||||
lastFrameTicks = frameTicks;
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int32_t nonsharedtimer;
|
static int32_t nonsharedtimer;
|
||||||
|
|
||||||
int app_main(int argc, char const* const* argv)
|
void CheckCommandLine(int argc, char const* const* argv, int &doTitle)
|
||||||
{
|
{
|
||||||
char tempbuf[256];
|
|
||||||
#ifdef _WIN32
|
|
||||||
#ifndef DEBUGGINGAIDS
|
|
||||||
if (!G_CheckCmdSwitch(argc, argv, "-noinstancechecking") && !windowsCheckAlreadyRunning())
|
|
||||||
{
|
|
||||||
#ifdef EDUKE32_STANDALONE
|
|
||||||
if (!wm_ynbox(APPNAME, "It looks like " APPNAME " is already running.\n\n"
|
|
||||||
#else
|
|
||||||
if (!wm_ynbox(APPNAME, "It looks like the game is already running.\n\n"
|
|
||||||
#endif
|
|
||||||
"Are you sure you want to start another copy?"))
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef USE_PHYSFS
|
|
||||||
#ifdef DEBUGGINGAIDS
|
|
||||||
extern int32_t (*check_filename_casing_fn)(void);
|
|
||||||
check_filename_casing_fn = check_filename_casing;
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
G_ExtPreInit(argc, argv);
|
|
||||||
|
|
||||||
OSD_SetLogFile(APPBASENAME ".log");
|
|
||||||
|
|
||||||
OSD_SetFunctions(NULL,
|
|
||||||
NULL,
|
|
||||||
NULL,
|
|
||||||
NULL,
|
|
||||||
NULL,
|
|
||||||
GAME_clearbackground,
|
|
||||||
BGetTime,
|
|
||||||
GAME_onshowosd);
|
|
||||||
|
|
||||||
wm_setapptitle(APPNAME);
|
|
||||||
|
|
||||||
initprintf("Exhumed %s\n", s_buildRev);
|
|
||||||
PrintBuildInfo();
|
|
||||||
|
|
||||||
int i;
|
|
||||||
|
|
||||||
|
|
||||||
//int esi = 1;
|
|
||||||
//int edi = esi;
|
|
||||||
int doTitle = kTrue; // REVERT kTrue;
|
|
||||||
int stopTitle = kFalse;
|
|
||||||
levelnew = 1;
|
|
||||||
|
|
||||||
// REVERT - change back to kTrue
|
|
||||||
// short bDoTitle = kFalse;
|
|
||||||
|
|
||||||
wConsoleNode = 0;
|
|
||||||
|
|
||||||
int nMenu = 0; // TEMP
|
|
||||||
|
|
||||||
// Check for any command line arguments
|
// Check for any command line arguments
|
||||||
for (i = 1; i < argc; i++)
|
for (int i = 1; i < argc; i++)
|
||||||
{
|
{
|
||||||
const char *pChar = argv[i];
|
const char* pChar = argv[i];
|
||||||
|
|
||||||
if (*pChar == '/')
|
if (*pChar == '/')
|
||||||
{
|
{
|
||||||
|
@ -1876,9 +1782,6 @@ int app_main(int argc, char const* const* argv)
|
||||||
if (Bstrcasecmp(pChar, "nocreatures") == 0) {
|
if (Bstrcasecmp(pChar, "nocreatures") == 0) {
|
||||||
bNoCreatures = kTrue;
|
bNoCreatures = kTrue;
|
||||||
}
|
}
|
||||||
else if (Bstrcasecmp(pChar, "nosound") == 0) {
|
|
||||||
bNoSound = kTrue;
|
|
||||||
}
|
|
||||||
else if (Bstrcasecmp(pChar, "record") == 0)
|
else if (Bstrcasecmp(pChar, "record") == 0)
|
||||||
{
|
{
|
||||||
if (!bPlayback)
|
if (!bPlayback)
|
||||||
|
@ -2014,6 +1917,30 @@ int app_main(int argc, char const* const* argv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int app_main(int argc, char const* const* argv)
|
||||||
|
{
|
||||||
|
char tempbuf[256];
|
||||||
|
|
||||||
|
initprintf("Exhumed %s\n", s_buildRev);
|
||||||
|
|
||||||
|
int i;
|
||||||
|
|
||||||
|
|
||||||
|
//int esi = 1;
|
||||||
|
//int edi = esi;
|
||||||
|
int doTitle = kTrue; // REVERT kTrue;
|
||||||
|
int stopTitle = kFalse;
|
||||||
|
levelnew = 1;
|
||||||
|
|
||||||
|
// REVERT - change back to kTrue
|
||||||
|
// short bDoTitle = kFalse;
|
||||||
|
|
||||||
|
wConsoleNode = 0;
|
||||||
|
|
||||||
|
int nMenu = 0; // TEMP
|
||||||
|
|
||||||
|
|
||||||
if (nNetPlayerCount && forcelevel == -1) {
|
if (nNetPlayerCount && forcelevel == -1) {
|
||||||
forcelevel = 1;
|
forcelevel = 1;
|
||||||
|
@ -2028,15 +1955,6 @@ int app_main(int argc, char const* const* argv)
|
||||||
if (forcegl) initprintf("GL driver blacklist disabled.\n");
|
if (forcegl) initprintf("GL driver blacklist disabled.\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// used with binds for fast function lookup
|
|
||||||
hash_init(&h_gamefuncs);
|
|
||||||
for (bssize_t i=kMaxGameFunctions-1; i>=0; i--)
|
|
||||||
{
|
|
||||||
if (gamefunctions[i][0] == '\0')
|
|
||||||
continue;
|
|
||||||
|
|
||||||
hash_add(&h_gamefuncs,gamefunctions[i],i,0);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef STARTUP_SETUP_WINDOW
|
#ifdef STARTUP_SETUP_WINDOW
|
||||||
int const readSetup =
|
int const readSetup =
|
||||||
|
@ -2051,68 +1969,7 @@ int app_main(int argc, char const* const* argv)
|
||||||
Bexit(2);
|
Bexit(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Bstrcmp(setupfilename, kSetupFilename))
|
|
||||||
initprintf("Using config file \"%s\".\n",setupfilename);
|
|
||||||
|
|
||||||
G_ScanGroups();
|
|
||||||
|
|
||||||
#ifdef STARTUP_SETUP_WINDOW
|
|
||||||
if (readSetup < 0 || (!g_noSetup && gSetup.forcesetup) || g_commandSetup)
|
|
||||||
{
|
|
||||||
if (quitevent || !startwin_run())
|
|
||||||
{
|
|
||||||
engineUnInit();
|
|
||||||
Bexit(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
G_LoadGroups(!g_noAutoLoad && !gSetup.noautoload);
|
|
||||||
|
|
||||||
// Decrypt strings code would normally be here
|
|
||||||
#if 0
|
|
||||||
|
|
||||||
for (int i = 0; ; i++)
|
|
||||||
{
|
|
||||||
int j = i - 1;
|
|
||||||
|
|
||||||
while (j >= 0)
|
|
||||||
{
|
|
||||||
if (gString_Enc[i] == gString_Enc[j]) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
j--;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (j < 0)
|
|
||||||
{
|
|
||||||
int k = 0;
|
|
||||||
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
uint8_t v27 = gString_Enc[i + k];
|
|
||||||
if (v27)
|
|
||||||
{
|
|
||||||
gString_Enc[i + k] = v27 ^ 0xFF;
|
|
||||||
|
|
||||||
k++;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// strupr(gString[j]);
|
|
||||||
|
|
||||||
int blah = 123;
|
|
||||||
// if (!strcmp(*(char **)((char *)gString + v29), "EOF", v27, v30))
|
|
||||||
// break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// loc_115F5:
|
// loc_115F5:
|
||||||
nItemTextIndex = FindGString("ITEMS");
|
nItemTextIndex = FindGString("ITEMS");
|
||||||
|
@ -2129,33 +1986,13 @@ int app_main(int argc, char const* const* argv)
|
||||||
|
|
||||||
// GetCurPal(NULL);
|
// GetCurPal(NULL);
|
||||||
|
|
||||||
CONFIG_WriteSetup(1);
|
|
||||||
CONFIG_ReadSetup();
|
|
||||||
|
|
||||||
initprintf("Initializing OSD...\n");
|
initprintf("Initializing OSD...\n");
|
||||||
|
|
||||||
Bsprintf(tempbuf, "Exhumed %s", s_buildRev);
|
Bsprintf(tempbuf, "Exhumed %s", s_buildRev);
|
||||||
OSD_SetVersion(tempbuf, 10,0);
|
|
||||||
OSD_SetParameters(0, 0, 0, 0, 0, 0, OSD_ERROR, OSDTEXT_RED, gamefunctions[gamefunc_Show_Console][0] == '\0' ? OSD_PROTECTED : 0);
|
|
||||||
registerosdcommands();
|
registerosdcommands();
|
||||||
|
|
||||||
SetupInput();
|
SetupInput();
|
||||||
|
|
||||||
char *const setupFileName = Xstrdup(setupfilename);
|
|
||||||
char *const p = strtok(setupFileName, ".");
|
|
||||||
|
|
||||||
if (!p || !Bstrcmp(setupfilename, kSetupFilename))
|
|
||||||
Bsprintf(tempbuf, "settings.cfg");
|
|
||||||
else
|
|
||||||
Bsprintf(tempbuf, "%s_settings.cfg", p);
|
|
||||||
|
|
||||||
Xfree(setupFileName);
|
|
||||||
|
|
||||||
OSD_Exec(tempbuf);
|
|
||||||
OSD_Exec("autoexec.cfg");
|
|
||||||
|
|
||||||
CONFIG_SetDefaultKeys(keydefaults, true);
|
|
||||||
|
|
||||||
system_getcvars();
|
system_getcvars();
|
||||||
|
|
||||||
if (nNetPlayerCount == -1)
|
if (nNetPlayerCount == -1)
|
||||||
|
@ -2290,8 +2127,8 @@ MENU:
|
||||||
bInDemo = kTrue;
|
bInDemo = kTrue;
|
||||||
bPlayback = kTrue;
|
bPlayback = kTrue;
|
||||||
|
|
||||||
KB_FlushKeyboardQueue();
|
inputState.keyFlushChars();
|
||||||
KB_ClearKeysDown();
|
inputState.ClearAllKeyStatus();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
STARTGAME1:
|
STARTGAME1:
|
||||||
|
@ -2400,8 +2237,8 @@ LOOP3:
|
||||||
{
|
{
|
||||||
EraseScreen(overscanindex);
|
EraseScreen(overscanindex);
|
||||||
Query(2, 0, "Insert CD into drive", "(ESC to abort)");
|
Query(2, 0, "Insert CD into drive", "(ESC to abort)");
|
||||||
KB_ClearKeysDown();
|
inputState.ClearAllKeyStatus();
|
||||||
if (KB_GetCh() == asc_Escape) {
|
if (inputState.keyGetChar() == asc_Escape) {
|
||||||
I_Error("Aborted\n");
|
I_Error("Aborted\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2509,10 +2346,10 @@ LOOP3:
|
||||||
if (bPlayback)
|
if (bPlayback)
|
||||||
{
|
{
|
||||||
// YELLOW
|
// YELLOW
|
||||||
if ((bInDemo && KB_KeyWaiting() || !ReadPlaybackInputs()) && KB_GetCh())
|
if ((bInDemo && inputState.keyBufferWaiting() || !ReadPlaybackInputs()) && inputState.keyGetChar())
|
||||||
{
|
{
|
||||||
KB_FlushKeyboardQueue();
|
inputState.keyFlushChars();
|
||||||
KB_ClearKeysDown();
|
inputState.ClearAllKeyStatus();
|
||||||
|
|
||||||
bPlayback = kFalse;
|
bPlayback = kFalse;
|
||||||
bInDemo = kFalse;
|
bInDemo = kFalse;
|
||||||
|
@ -2657,9 +2494,9 @@ LOOP3:
|
||||||
}
|
}
|
||||||
if (!bInDemo)
|
if (!bInDemo)
|
||||||
{
|
{
|
||||||
if (buttonMap.ButtonDown(gamefunc_Escape))
|
if (inputState.GetKeyStatus(sc_Escape))
|
||||||
{
|
{
|
||||||
buttonMap.ClearButton(gamefunc_Escape);
|
inputState.ClearKeyStatus(sc_Escape);
|
||||||
// MENU2:
|
// MENU2:
|
||||||
CONTROL_BindsEnabled = 0;
|
CONTROL_BindsEnabled = 0;
|
||||||
bInMove = kTrue;
|
bInMove = kTrue;
|
||||||
|
@ -2693,11 +2530,6 @@ LOOP3:
|
||||||
CONTROL_BindsEnabled = 1;
|
CONTROL_BindsEnabled = 1;
|
||||||
RefreshStatus();
|
RefreshStatus();
|
||||||
}
|
}
|
||||||
else if (KB_UnBoundKeyPressed(sc_F12))
|
|
||||||
{
|
|
||||||
KB_ClearKeyDown(sc_F12);
|
|
||||||
videoCaptureScreen("captxxxx.png", 0);
|
|
||||||
}
|
|
||||||
else if (buttonMap.ButtonDown(gamefunc_Map)) // e.g. TAB (to show 2D map)
|
else if (buttonMap.ButtonDown(gamefunc_Map)) // e.g. TAB (to show 2D map)
|
||||||
{
|
{
|
||||||
buttonMap.ClearButton(gamefunc_Map);
|
buttonMap.ClearButton(gamefunc_Map);
|
||||||
|
@ -3001,7 +2833,8 @@ void CopyTileToBitmap(short nSrcTile, short nDestTile, int xPos, int yPos)
|
||||||
{
|
{
|
||||||
int nOffs = tilesiz[nDestTile].y * xPos;
|
int nOffs = tilesiz[nDestTile].y * xPos;
|
||||||
|
|
||||||
uint8_t *pDest = (uint8_t*)waloff[nDestTile] + nOffs + yPos;
|
auto pixels = TileFiles.tileMakeWritable(nDestTile);
|
||||||
|
uint8_t *pDest = pixels + nOffs + yPos;
|
||||||
uint8_t *pDestB = pDest;
|
uint8_t *pDestB = pDest;
|
||||||
|
|
||||||
tileLoad(nSrcTile);
|
tileLoad(nSrcTile);
|
||||||
|
@ -3009,7 +2842,7 @@ void CopyTileToBitmap(short nSrcTile, short nDestTile, int xPos, int yPos)
|
||||||
int destYSize = tilesiz[nDestTile].y;
|
int destYSize = tilesiz[nDestTile].y;
|
||||||
int srcYSize = tilesiz[nSrcTile].y;
|
int srcYSize = tilesiz[nSrcTile].y;
|
||||||
|
|
||||||
uint8_t *pSrc = (uint8_t*)waloff[nSrcTile];
|
const uint8_t *pSrc = tilePtr(nSrcTile);
|
||||||
|
|
||||||
for (int x = 0; x < tilesiz[nSrcTile].x; x++)
|
for (int x = 0; x < tilesiz[nSrcTile].x; x++)
|
||||||
{
|
{
|
||||||
|
@ -3164,13 +2997,13 @@ int Query(short nLines, short nKeys, ...)
|
||||||
|
|
||||||
if (nKeys)
|
if (nKeys)
|
||||||
{
|
{
|
||||||
KB_FlushKeyboardQueue();
|
inputState.keyFlushChars();
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
HandleAsync();
|
HandleAsync();
|
||||||
|
|
||||||
char key = toupper(KB_GetCh());
|
char key = toupper(inputState.keyGetChar());
|
||||||
|
|
||||||
for (i = 0; i < nKeys; i++)
|
for (i = 0; i < nKeys; i++)
|
||||||
{
|
{
|
||||||
|
@ -3196,7 +3029,6 @@ void InitSpiritHead()
|
||||||
|
|
||||||
nPixels = 0;
|
nPixels = 0;
|
||||||
|
|
||||||
tileLoad(kTileRamsesNormal); // Ramses Normal Head
|
|
||||||
|
|
||||||
for (int i = 0; i < kMaxSprites; i++)
|
for (int i = 0; i < kMaxSprites; i++)
|
||||||
{
|
{
|
||||||
|
@ -3206,15 +3038,15 @@ void InitSpiritHead()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t *pTile = (uint8_t*)waloff[kTileRamsesNormal];
|
auto pTile = tilePtr(kTileRamsesNormal); // Ramses Normal Head
|
||||||
|
auto pGold = tilePtr(kTileRamsesGold);
|
||||||
for (int x = 0; x < 97; x++)
|
for (int x = 0; x < 97; x++)
|
||||||
{
|
{
|
||||||
for (int y = 0; y < 106; y++)
|
for (int y = 0; y < 106; y++)
|
||||||
{
|
{
|
||||||
if (*pTile != 255)
|
if (*pTile != 255)
|
||||||
{
|
{
|
||||||
pixelval[nPixels] = *(uint8_t*)(waloff[kTileRamsesGold] + x * 106 + y);
|
pixelval[nPixels] = *(pGold + x * 106 + y);
|
||||||
origx[nPixels] = x - 48;
|
origx[nPixels] = x - 48;
|
||||||
origy[nPixels] = y - 53;
|
origy[nPixels] = y - 53;
|
||||||
curx[nPixels] = 0;
|
curx[nPixels] = 0;
|
||||||
|
@ -3241,7 +3073,6 @@ void InitSpiritHead()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
waloff[kTileRamsesWorkTile] = (intptr_t)worktile;
|
|
||||||
|
|
||||||
sprite[nSpiritSprite].yrepeat = 140;
|
sprite[nSpiritSprite].yrepeat = 140;
|
||||||
sprite[nSpiritSprite].xrepeat = 140;
|
sprite[nSpiritSprite].xrepeat = 140;
|
||||||
|
@ -3250,8 +3081,7 @@ void InitSpiritHead()
|
||||||
nHeadStage = 0;
|
nHeadStage = 0;
|
||||||
|
|
||||||
// work tile is twice as big as the normal head size
|
// work tile is twice as big as the normal head size
|
||||||
tilesiz[kTileRamsesWorkTile].x = 97 * 2; // 194;
|
TileFiles.tileSetExternal(kTileRamsesWorkTile, 97 * 2, 106 * 2, worktile);
|
||||||
tilesiz[kTileRamsesWorkTile].y = 106 * 2; // 212;
|
|
||||||
|
|
||||||
sprite[nSpiritSprite].cstat &= 0x7FFF;
|
sprite[nSpiritSprite].cstat &= 0x7FFF;
|
||||||
|
|
||||||
|
@ -3285,11 +3115,16 @@ void InitSpiritHead()
|
||||||
lNextStateChange = (int)totalclock;
|
lNextStateChange = (int)totalclock;
|
||||||
lHeadStartClock = (int)totalclock;
|
lHeadStartClock = (int)totalclock;
|
||||||
|
|
||||||
headfd = kopen4load(filename, 512); // 512??
|
auto headfd = kopenFileReader(filename, 512); // 512??
|
||||||
nPupData = kread(headfd, cPupData, sizeof(cPupData));
|
if (!headfd.isOpen())
|
||||||
|
{
|
||||||
|
memset(cPupData, 0, sizeof(cPupData));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nPupData = headfd.Read(cPupData, sizeof(cPupData));
|
||||||
pPupData = cPupData;
|
pPupData = cPupData;
|
||||||
kclose(headfd);
|
}
|
||||||
headfd = -1;
|
|
||||||
nMouthTile = 0;
|
nMouthTile = 0;
|
||||||
nTalkTime = 1;
|
nTalkTime = 1;
|
||||||
}
|
}
|
||||||
|
@ -3317,9 +3152,7 @@ void DimSector(short nSector)
|
||||||
|
|
||||||
void CopyHeadToWorkTile(short nTile)
|
void CopyHeadToWorkTile(short nTile)
|
||||||
{
|
{
|
||||||
tileLoad(nTile);
|
const uint8_t* pSrc = tilePtr(nTile);
|
||||||
|
|
||||||
uint8_t *pSrc = (uint8_t*)waloff[nTile];
|
|
||||||
uint8_t *pDest = (uint8_t*)&worktile[212 * 49 + 53];
|
uint8_t *pDest = (uint8_t*)&worktile[212 * 49 + 53];
|
||||||
|
|
||||||
for (int i = 0; i < 97; i++)
|
for (int i = 0; i < 97; i++)
|
||||||
|
@ -3670,11 +3503,9 @@ int DoSpiritHead()
|
||||||
|
|
||||||
ebx += word_964EA;
|
ebx += word_964EA;
|
||||||
|
|
||||||
tileLoad(ebx);
|
|
||||||
|
|
||||||
// TODO - fixme. How big is worktile?
|
// TODO - fixme. How big is worktile?
|
||||||
uint8_t *pDest = (uint8_t*)&worktile[10441];
|
uint8_t *pDest = (uint8_t*)&worktile[10441];
|
||||||
uint8_t *pSrc = (uint8_t*)waloff[ebx];
|
const uint8_t* pSrc = tilePtr(ebx);
|
||||||
|
|
||||||
for (int i = 0; i < 97; i++)
|
for (int i = 0; i < 97; i++)
|
||||||
{
|
{
|
||||||
|
@ -3697,8 +3528,6 @@ int DoSpiritHead()
|
||||||
|
|
||||||
if (nMouthTile)
|
if (nMouthTile)
|
||||||
{
|
{
|
||||||
tileLoad(nMouthTile + 598);
|
|
||||||
|
|
||||||
short nTileSizeX = tilesiz[nMouthTile + 598].x;
|
short nTileSizeX = tilesiz[nMouthTile + 598].x;
|
||||||
short nTileSizeY = tilesiz[nMouthTile + 598].y;
|
short nTileSizeY = tilesiz[nMouthTile + 598].y;
|
||||||
|
|
||||||
|
@ -3707,7 +3536,7 @@ int DoSpiritHead()
|
||||||
// pDest += (212 * (97 - nTileSizeX / 2)) + (159 - nTileSizeY);
|
// pDest += (212 * (97 - nTileSizeX / 2)) + (159 - nTileSizeY);
|
||||||
|
|
||||||
uint8_t *pDest = (uint8_t*)&worktile[212 * (97 - nTileSizeX / 2)] + (159 - nTileSizeY);
|
uint8_t *pDest = (uint8_t*)&worktile[212 * (97 - nTileSizeX / 2)] + (159 - nTileSizeY);
|
||||||
uint8_t *pSrc = (uint8_t*)waloff[nMouthTile + 598];
|
const uint8_t *pSrc = tilePtr(nMouthTile + 598);
|
||||||
|
|
||||||
while (nTileSizeX > 0)
|
while (nTileSizeX > 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -188,8 +188,6 @@ extern short bSlipMode;
|
||||||
extern short nItemTextIndex;
|
extern short nItemTextIndex;
|
||||||
extern const char *gString[];
|
extern const char *gString[];
|
||||||
|
|
||||||
extern short bNoSound;
|
|
||||||
|
|
||||||
extern int bVanilla;
|
extern int bVanilla;
|
||||||
|
|
||||||
extern int32_t g_gameType;
|
extern int32_t g_gameType;
|
||||||
|
@ -197,8 +195,6 @@ extern int32_t g_gameType;
|
||||||
#define POWERSLAVE (g_gameType & GAMEFLAG_POWERSLAVE)
|
#define POWERSLAVE (g_gameType & GAMEFLAG_POWERSLAVE)
|
||||||
#define EXHUMED (g_gameType & GAMEFLAG_EXHUMED)
|
#define EXHUMED (g_gameType & GAMEFLAG_EXHUMED)
|
||||||
|
|
||||||
extern int mouseaiming, aimmode, mouseflip;
|
|
||||||
extern int runkey_mode, auto_run;
|
|
||||||
extern int32_t r_maxfps;
|
extern int32_t r_maxfps;
|
||||||
extern int32_t r_maxfpsoffset;
|
extern int32_t r_maxfpsoffset;
|
||||||
extern double g_frameDelay;
|
extern double g_frameDelay;
|
||||||
|
@ -221,7 +217,6 @@ enum {
|
||||||
};
|
};
|
||||||
|
|
||||||
extern char g_modDir[BMAX_PATH];
|
extern char g_modDir[BMAX_PATH];
|
||||||
extern int r_showfps;
|
|
||||||
|
|
||||||
extern struct grpfile_t const* g_selectedGrp;
|
extern struct grpfile_t const* g_selectedGrp;
|
||||||
|
|
||||||
|
|
|
@ -213,173 +213,6 @@ uint8_t LoadLevel(int nMap)
|
||||||
return kFalse;
|
return kFalse;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
{
|
|
||||||
// going to load the map without loadboard() - to take care of version 6 to 7 map conversion
|
|
||||||
//int hFile = kopen4load(fileName_1, 1);
|
|
||||||
int hFile = kopen4load(fileName_1, 0);
|
|
||||||
// int hFile = open(fileName_1, O_BINARY | O_RDONLY);
|
|
||||||
if (hFile == -1) {
|
|
||||||
return kFalse;
|
|
||||||
}
|
|
||||||
|
|
||||||
int version;
|
|
||||||
|
|
||||||
kread(hFile, &version, sizeof(version));
|
|
||||||
if (version != 6) {
|
|
||||||
bIsVersion6 = kFalse;
|
|
||||||
}
|
|
||||||
|
|
||||||
initspritelists();
|
|
||||||
|
|
||||||
memset(show2dsector, 0, sizeof(show2dsector));
|
|
||||||
memset(show2dsprite, 0, sizeof(show2dsprite));
|
|
||||||
memset(show2dwall, 0, sizeof(show2dwall));
|
|
||||||
|
|
||||||
// replacement for build's loadboard()
|
|
||||||
kread(hFile, &initx, 4);
|
|
||||||
kread(hFile, &inity, 4);
|
|
||||||
kread(hFile, &initz, 4);
|
|
||||||
kread(hFile, &inita, 2);
|
|
||||||
kread(hFile, &initsect, 2);
|
|
||||||
|
|
||||||
// sectors
|
|
||||||
short nSectors;
|
|
||||||
kread(hFile, &nSectors, sizeof(nSectors));
|
|
||||||
|
|
||||||
if (bIsVersion6) {
|
|
||||||
kread(hFile, sector_6, sizeof(Sector_6) * nSectors);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
kread(hFile, sector, sizeof(SECTOR) * nSectors);
|
|
||||||
}
|
|
||||||
|
|
||||||
// walls
|
|
||||||
short nWalls;
|
|
||||||
kread(hFile, &nWalls, sizeof(nWalls));
|
|
||||||
|
|
||||||
if (bIsVersion6) {
|
|
||||||
kread(hFile, wall_6, sizeof(Wall_6) * nWalls);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
kread(hFile, wall, sizeof(WALL) * nWalls);
|
|
||||||
}
|
|
||||||
|
|
||||||
// sprites
|
|
||||||
short nSprites;
|
|
||||||
kread(hFile, &nSprites, sizeof(nSprites));
|
|
||||||
|
|
||||||
if (bIsVersion6) {
|
|
||||||
kread(hFile, sprite_6, sizeof(Sprite_6) * nSprites);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
kread(hFile, sprite, sizeof(SPRITE) * nSprites);
|
|
||||||
}
|
|
||||||
|
|
||||||
// set engine variables
|
|
||||||
numsectors = nSectors;
|
|
||||||
numwalls = nWalls;
|
|
||||||
|
|
||||||
// load in our version 6 structs to the engines v7 structs if required
|
|
||||||
if (bIsVersion6)
|
|
||||||
{
|
|
||||||
for (int nSector = 0; nSector < nSectors; nSector++)
|
|
||||||
{
|
|
||||||
sector[nSector].ceilingz = sector_6[nSector].ceilingz;
|
|
||||||
sector[nSector].floorz = sector_6[nSector].floorz;
|
|
||||||
sector[nSector].wallptr = sector_6[nSector].wallptr;
|
|
||||||
sector[nSector].wallnum = sector_6[nSector].wallnum;
|
|
||||||
sector[nSector].ceilingpicnum = sector_6[nSector].ceilingpicnum;
|
|
||||||
sector[nSector].ceilingheinum = Max(Min(((int)sector_6[nSector].ceilingheinum) << 5, 32767), -32768);
|
|
||||||
|
|
||||||
if ((sector_6[nSector].ceilingstat & 2) == 0) {
|
|
||||||
sector[nSector].ceilingheinum = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
sector[nSector].ceilingshade = sector_6[nSector].ceilingshade;
|
|
||||||
sector[nSector].ceilingpal = sector_6[nSector].ceilingpal;
|
|
||||||
sector[nSector].ceilingxpanning = sector_6[nSector].ceilingxpanning;
|
|
||||||
sector[nSector].ceilingypanning = sector_6[nSector].ceilingypanning;
|
|
||||||
sector[nSector].floorpicnum = sector_6[nSector].floorpicnum;
|
|
||||||
sector[nSector].floorheinum = Max(Min(((int)sector_6[nSector].floorheinum) << 5, 32767), -32768);
|
|
||||||
|
|
||||||
if ((sector_6[nSector].floorstat & 2) == 0) {
|
|
||||||
sector[nSector].floorheinum = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
sector[nSector].floorshade = sector_6[nSector].floorshade;
|
|
||||||
sector[nSector].floorpal = sector_6[nSector].floorpal;
|
|
||||||
sector[nSector].floorxpanning = sector_6[nSector].floorxpanning;
|
|
||||||
sector[nSector].floorypanning = sector_6[nSector].floorypanning;
|
|
||||||
sector[nSector].ceilingstat = sector_6[nSector].ceilingstat;
|
|
||||||
sector[nSector].floorstat = sector_6[nSector].floorstat;
|
|
||||||
sector[nSector].visibility = sector_6[nSector].visibility;
|
|
||||||
sector[nSector].filler = 0;
|
|
||||||
sector[nSector].lotag = sector_6[nSector].lotag;
|
|
||||||
sector[nSector].hitag = sector_6[nSector].hitag;
|
|
||||||
sector[nSector].extra = sector_6[nSector].extra;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int nWall = 0; nWall < nWalls; nWall++)
|
|
||||||
{
|
|
||||||
wall[nWall].x = wall_6[nWall].x;
|
|
||||||
wall[nWall].y = wall_6[nWall].y;
|
|
||||||
wall[nWall].point2 = wall_6[nWall].point2;
|
|
||||||
wall[nWall].nextwall = wall_6[nWall].nextwall;
|
|
||||||
wall[nWall].nextsector = wall_6[nWall].nextsector;
|
|
||||||
wall[nWall].cstat = wall_6[nWall].cstat;
|
|
||||||
wall[nWall].picnum = wall_6[nWall].picnum;
|
|
||||||
wall[nWall].overpicnum = wall_6[nWall].overpicnum;
|
|
||||||
wall[nWall].shade = wall_6[nWall].shade;
|
|
||||||
wall[nWall].pal = wall_6[nWall].pal;
|
|
||||||
wall[nWall].xrepeat = wall_6[nWall].xrepeat;
|
|
||||||
wall[nWall].yrepeat = wall_6[nWall].yrepeat;
|
|
||||||
wall[nWall].xpanning = wall_6[nWall].xpanning;
|
|
||||||
wall[nWall].ypanning = wall_6[nWall].ypanning;
|
|
||||||
wall[nWall].lotag = wall_6[nWall].lotag;
|
|
||||||
wall[nWall].hitag = wall_6[nWall].hitag;
|
|
||||||
wall[nWall].extra = wall_6[nWall].extra;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int nSprite = 0; nSprite < nSprites; nSprite++)
|
|
||||||
{
|
|
||||||
sprite[nSprite].x = sprite_6[nSprite].x;
|
|
||||||
sprite[nSprite].y = sprite_6[nSprite].y;
|
|
||||||
sprite[nSprite].z = sprite_6[nSprite].z;
|
|
||||||
sprite[nSprite].cstat = sprite_6[nSprite].cstat;
|
|
||||||
sprite[nSprite].picnum = sprite_6[nSprite].picnum;
|
|
||||||
sprite[nSprite].shade = sprite_6[nSprite].shade;
|
|
||||||
sprite[nSprite].pal = sprite_6[nSprite].pal;
|
|
||||||
sprite[nSprite].clipdist = sprite_6[nSprite].clipdist;
|
|
||||||
sprite[nSprite].filler = 0;
|
|
||||||
sprite[nSprite].xrepeat = sprite_6[nSprite].xrepeat;
|
|
||||||
sprite[nSprite].yrepeat = sprite_6[nSprite].yrepeat;
|
|
||||||
sprite[nSprite].xoffset = sprite_6[nSprite].xoffset;
|
|
||||||
sprite[nSprite].yoffset = sprite_6[nSprite].yoffset;
|
|
||||||
sprite[nSprite].sectnum = sprite_6[nSprite].sectnum;
|
|
||||||
sprite[nSprite].statnum = sprite_6[nSprite].statnum;
|
|
||||||
sprite[nSprite].ang = sprite_6[nSprite].ang;
|
|
||||||
sprite[nSprite].owner = sprite_6[nSprite].owner;
|
|
||||||
sprite[nSprite].xvel = sprite_6[nSprite].xvel;
|
|
||||||
sprite[nSprite].yvel = sprite_6[nSprite].yvel;
|
|
||||||
sprite[nSprite].zvel = sprite_6[nSprite].zvel;
|
|
||||||
sprite[nSprite].lotag = sprite_6[nSprite].lotag;
|
|
||||||
sprite[nSprite].hitag = sprite_6[nSprite].hitag;
|
|
||||||
sprite[nSprite].extra = sprite_6[nSprite].extra;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int nSprite = 0; nSprite < nSprites; nSprite++) {
|
|
||||||
insertsprite(sprite[nSprite].sectnum, sprite[nSprite].statnum);
|
|
||||||
}
|
|
||||||
|
|
||||||
updatesector(initx, inity, &initsect);
|
|
||||||
|
|
||||||
kclose(hFile);
|
|
||||||
hFile = -1;
|
|
||||||
}
|
|
||||||
// loadboard has finished
|
|
||||||
#endif
|
|
||||||
vec3_t startPos;
|
vec3_t startPos;
|
||||||
int status = engineLoadBoard(fileName_1, 0, &startPos, &inita, &initsect);
|
int status = engineLoadBoard(fileName_1, 0, &startPos, &inita, &initsect);
|
||||||
if (status == -2)
|
if (status == -2)
|
||||||
|
@ -439,25 +272,7 @@ void ResetEngine()
|
||||||
void InstallEngine()
|
void InstallEngine()
|
||||||
{
|
{
|
||||||
// initgroupfile("stuff.dat");
|
// initgroupfile("stuff.dat");
|
||||||
|
TileFiles.LoadArtSet("tiles%03d.art");
|
||||||
char *cwd;
|
|
||||||
|
|
||||||
if (g_modDir[0] != '/' && (cwd = buildvfs_getcwd(NULL, 0)))
|
|
||||||
{
|
|
||||||
buildvfs_chdir(g_modDir);
|
|
||||||
if (artLoadFiles("tiles000.art", MAXCACHE1DSIZE) < 0)
|
|
||||||
{
|
|
||||||
buildvfs_chdir(cwd);
|
|
||||||
if (artLoadFiles("tiles000.art", MAXCACHE1DSIZE) < 0)
|
|
||||||
I_Error("Failed loading art.");
|
|
||||||
}
|
|
||||||
buildvfs_chdir(cwd);
|
|
||||||
#ifndef __ANDROID__ //This crashes on *some* Android devices. Small onetime memory leak. TODO fix above function
|
|
||||||
Xfree(cwd);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
else if (artLoadFiles("tiles000.art",MAXCACHE1DSIZE) < 0)
|
|
||||||
I_Error("Failed loading art.");
|
|
||||||
|
|
||||||
// TEMP
|
// TEMP
|
||||||
|
|
||||||
|
@ -522,7 +337,6 @@ void InstallEngine()
|
||||||
void RemoveEngine()
|
void RemoveEngine()
|
||||||
{
|
{
|
||||||
engineUnInit();
|
engineUnInit();
|
||||||
uninitgroupfile();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetBelow(short nCurSector, short nBelowSector)
|
void SetBelow(short nCurSector, short nBelowSector)
|
||||||
|
|
|
@ -168,8 +168,8 @@ ClearSpaceBar_
|
||||||
|
|
||||||
void ClearAllKeys()
|
void ClearAllKeys()
|
||||||
{
|
{
|
||||||
KB_ClearKeysDown();
|
inputState.ClearAllKeyStatus();
|
||||||
KB_FlushKeyboardQueue();
|
inputState.keyFlushChars();
|
||||||
}
|
}
|
||||||
|
|
||||||
void WaitNoKey(int nSecs, void (*pFunc) (void))
|
void WaitNoKey(int nSecs, void (*pFunc) (void))
|
||||||
|
|
|
@ -84,19 +84,18 @@ int LoadPaletteLookups()
|
||||||
|
|
||||||
for (int i = 0; i < kMaxGrads; i++)
|
for (int i = 0; i < kMaxGrads; i++)
|
||||||
{
|
{
|
||||||
int hFile = kopen4load(GradList[i], 1);
|
auto hFile = kopenFileReader(GradList[i], 1);
|
||||||
if (hFile == -1)
|
if (!hFile.isOpen())
|
||||||
{
|
{
|
||||||
initprintf("Error reading palette lookup '%s'\n", GradList[i]);
|
initprintf("Error reading palette lookup '%s'\n", GradList[i]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
kread(hFile, buffer, 256*64);
|
hFile.Read(buffer, 256*64);
|
||||||
// TODO: dumb hack
|
// TODO: dumb hack
|
||||||
if (palookup[i])
|
if (palookup[i])
|
||||||
ALIGNED_FREE_AND_NULL(palookup[i]);
|
ALIGNED_FREE_AND_NULL(palookup[i]);
|
||||||
paletteSetLookupTable(i, buffer);
|
paletteSetLookupTable(i, buffer);
|
||||||
kclose(hFile);
|
|
||||||
|
|
||||||
// origpalookup[i] = palookup[i];
|
// origpalookup[i] = palookup[i];
|
||||||
bGreenPal = 0;
|
bGreenPal = 0;
|
||||||
|
|
|
@ -559,7 +559,7 @@ static void G_DrawOverheadMap(int32_t cposx, int32_t cposy, int32_t czoom, int16
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
renderEnableFog();
|
//renderEnableFog();
|
||||||
|
|
||||||
videoSetCorrectedAspect();
|
videoSetCorrectedAspect();
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
#include "light.h"
|
#include "light.h"
|
||||||
#include "cd.h"
|
#include "cd.h"
|
||||||
#include "cdaudio.h"
|
#include "cdaudio.h"
|
||||||
|
#include "input.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
@ -779,9 +780,9 @@ int menu_DrawTheMap(int nLevel, int nLevelNew, int nLevelBest)
|
||||||
|
|
||||||
if (curYPos == destYPos)
|
if (curYPos == destYPos)
|
||||||
{
|
{
|
||||||
if (KB_KeyDown[sc_UpArrow])
|
if (I_MenuUp())
|
||||||
{
|
{
|
||||||
KB_KeyDown[sc_UpArrow] = 0;
|
I_MenuUpClear();
|
||||||
|
|
||||||
if (nLevelNew <= nLevelBest)
|
if (nLevelNew <= nLevelBest)
|
||||||
{
|
{
|
||||||
|
@ -801,9 +802,9 @@ int menu_DrawTheMap(int nLevel, int nLevelNew, int nLevelBest)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (KB_KeyDown[sc_DownArrow])
|
if (I_MenuDown())
|
||||||
{
|
{
|
||||||
KB_KeyDown[sc_DownArrow] = 0;
|
I_MenuDownClear();
|
||||||
|
|
||||||
if (nLevelNew > 0)
|
if (nLevelNew > 0)
|
||||||
{
|
{
|
||||||
|
@ -823,11 +824,9 @@ int menu_DrawTheMap(int nLevel, int nLevelNew, int nLevelBest)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (KB_KeyDown[sc_Escape] || KB_KeyDown[sc_Space] || KB_KeyDown[sc_Return])
|
if (I_AdvanceTrigger())
|
||||||
{
|
{
|
||||||
KB_KeyDown[sc_Escape] = 0;
|
I_AdvanceTriggerClear();
|
||||||
KB_KeyDown[sc_Return] = 0;
|
|
||||||
KB_KeyDown[sc_Space] = 0;
|
|
||||||
return nLevelNew + 1;
|
return nLevelNew + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -841,15 +840,13 @@ int menu_DrawTheMap(int nLevel, int nLevelNew, int nLevelBest)
|
||||||
|
|
||||||
//curYPos += var_2C * (((int)totalclock - moveTimer) / 2);
|
//curYPos += var_2C * (((int)totalclock - moveTimer) / 2);
|
||||||
|
|
||||||
if (KB_KeyDown[sc_Escape] || KB_KeyDown[sc_Space] || KB_KeyDown[sc_Return])
|
if (I_AdvanceTrigger())
|
||||||
{
|
{
|
||||||
|
I_AdvanceTriggerClear();
|
||||||
if (var_2C < 8) {
|
if (var_2C < 8) {
|
||||||
var_2C *= 2;
|
var_2C *= 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
KB_KeyDown[sc_Escape] = 0;
|
|
||||||
KB_KeyDown[sc_Return] = 0;
|
|
||||||
KB_KeyDown[sc_Space] = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (curYPos > destYPos&& var_2C > 0) {
|
if (curYPos > destYPos&& var_2C > 0) {
|
||||||
|
@ -908,35 +905,31 @@ void menu_AdjustVolume()
|
||||||
|
|
||||||
videoNextPage();
|
videoNextPage();
|
||||||
|
|
||||||
if (KB_KeyDown[sc_Escape] || KB_KeyDown[sc_Return] || KB_KeyDown[sc_Space])
|
if (I_AdvanceTrigger())
|
||||||
{
|
{
|
||||||
|
I_AdvanceTriggerClear();
|
||||||
PlayLocalSound(StaticSound[kSound33], 0);
|
PlayLocalSound(StaticSound[kSound33], 0);
|
||||||
KB_KeyDown[sc_Escape] = 0;
|
|
||||||
KB_KeyDown[sc_Space] = 0;
|
|
||||||
KB_KeyDown[sc_Return] = 0;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (KB_KeyDown[sc_UpArrow])
|
if (I_MenuUp())
|
||||||
{
|
{
|
||||||
|
I_MenuUpClear();
|
||||||
if (nOption > 0)
|
if (nOption > 0)
|
||||||
{
|
{
|
||||||
nOption--;
|
nOption--;
|
||||||
PlayLocalSound(StaticSound[kSound35], 0);
|
PlayLocalSound(StaticSound[kSound35], 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
KB_KeyDown[sc_UpArrow] = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (KB_KeyDown[sc_DownArrow])
|
if (I_MenuDown())
|
||||||
{
|
{
|
||||||
|
I_MenuDownClear();
|
||||||
if (nOption < 1)
|
if (nOption < 1)
|
||||||
{
|
{
|
||||||
nOption++;
|
nOption++;
|
||||||
PlayLocalSound(StaticSound[kSound35], 0);
|
PlayLocalSound(StaticSound[kSound35], 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
KB_KeyDown[sc_DownArrow] = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((int)totalclock <= var_8) {
|
if ((int)totalclock <= var_8) {
|
||||||
|
@ -945,8 +938,9 @@ void menu_AdjustVolume()
|
||||||
|
|
||||||
var_8 = (int)totalclock + 5;
|
var_8 = (int)totalclock + 5;
|
||||||
|
|
||||||
if (KB_KeyDown[sc_LeftArrow])
|
if (I_MenuLeft())
|
||||||
{
|
{
|
||||||
|
I_MenuLeftClear();
|
||||||
switch (nOption)
|
switch (nOption)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -977,8 +971,9 @@ void menu_AdjustVolume()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (KB_KeyDown[sc_RightArrow])
|
if (I_MenuRight())
|
||||||
{
|
{
|
||||||
|
I_MenuRightClear();
|
||||||
switch (nOption)
|
switch (nOption)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -1103,15 +1098,16 @@ int menu_NewGameMenu()
|
||||||
// continue;
|
// continue;
|
||||||
//}
|
//}
|
||||||
|
|
||||||
if (KB_KeyDown[sc_Escape])
|
if (I_EscapeTrigger())
|
||||||
{
|
{
|
||||||
PlayLocalSound(StaticSound[kSound33], 0);
|
PlayLocalSound(StaticSound[kSound33], 0);
|
||||||
KB_KeyDown[sc_Escape] = 0;
|
I_EscapeTriggerClear();
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (KB_KeyDown[sc_UpArrow])
|
if (I_MenuUp())
|
||||||
{
|
{
|
||||||
|
I_MenuUpClear();
|
||||||
PlayLocalSound(StaticSound[kSound35], 0);
|
PlayLocalSound(StaticSound[kSound35], 0);
|
||||||
if (nSlot <= 0) {
|
if (nSlot <= 0) {
|
||||||
nSlot = 4;
|
nSlot = 4;
|
||||||
|
@ -1120,13 +1116,13 @@ int menu_NewGameMenu()
|
||||||
nSlot--;
|
nSlot--;
|
||||||
}
|
}
|
||||||
|
|
||||||
KB_KeyDown[sc_UpArrow] = 0;
|
|
||||||
ClearAllKeys();
|
ClearAllKeys();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (KB_KeyDown[sc_DownArrow])
|
if (I_MenuDown())
|
||||||
{
|
{
|
||||||
|
I_MenuDownClear();
|
||||||
PlayLocalSound(StaticSound[kSound35], 0);
|
PlayLocalSound(StaticSound[kSound35], 0);
|
||||||
if (nSlot >= 4) {
|
if (nSlot >= 4) {
|
||||||
nSlot = 0;
|
nSlot = 0;
|
||||||
|
@ -1135,12 +1131,11 @@ int menu_NewGameMenu()
|
||||||
nSlot++;
|
nSlot++;
|
||||||
}
|
}
|
||||||
|
|
||||||
KB_KeyDown[sc_DownArrow] = 0;
|
inputState.ClearAllKeyStatus();
|
||||||
ClearAllKeys();
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (KB_KeyDown[sc_Return] || KB_KeyWaiting())
|
if (I_AdvanceTrigger() || inputState.keyBufferWaiting())
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1148,8 +1143,8 @@ int menu_NewGameMenu()
|
||||||
}
|
}
|
||||||
|
|
||||||
PlayLocalSound(StaticSound[kSound33], 0);
|
PlayLocalSound(StaticSound[kSound33], 0);
|
||||||
if (KB_KeyDown[sc_Return]) {
|
if (!inputState.keyBufferWaiting()) {
|
||||||
ClearAllKeys();
|
inputState.ClearAllKeyStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
char *pName = nameList[nSlot];
|
char *pName = nameList[nSlot];
|
||||||
|
@ -1186,14 +1181,14 @@ int menu_NewGameMenu()
|
||||||
char ch = 0;
|
char ch = 0;
|
||||||
|
|
||||||
check_keys:
|
check_keys:
|
||||||
if (KB_KeyWaiting())
|
if (inputState.keyBufferWaiting())
|
||||||
{
|
{
|
||||||
HandleAsync();
|
HandleAsync();
|
||||||
|
|
||||||
ch = KB_GetCh();
|
ch = inputState.keyGetChar();
|
||||||
if (!ch)
|
if (!ch)
|
||||||
{
|
{
|
||||||
KB_GetCh();
|
inputState.keyGetChar(); //???
|
||||||
goto check_keys;
|
goto check_keys;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1204,7 +1199,7 @@ check_keys:
|
||||||
nameList[nSlot][nNameOffset] = 0;
|
nameList[nSlot][nNameOffset] = 0;
|
||||||
|
|
||||||
PlayLocalSound(StaticSound[kSound33], 0);
|
PlayLocalSound(StaticSound[kSound33], 0);
|
||||||
KB_KeyDown[sc_Return] = 0;
|
inputState.ClearKeyStatus(sc_Return);
|
||||||
|
|
||||||
if (nameList[nSlot][0] == 0) {
|
if (nameList[nSlot][0] == 0) {
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -1252,9 +1247,8 @@ check_keys:
|
||||||
else if (ch == asc_Escape)
|
else if (ch == asc_Escape)
|
||||||
{
|
{
|
||||||
PlayLocalSound(StaticSound[kSound33], 0);
|
PlayLocalSound(StaticSound[kSound33], 0);
|
||||||
KB_ClearKeysDown();
|
inputState.ClearAllKeyStatus();
|
||||||
KB_FlushKeyboardQueue();
|
inputState.keyFlushChars();
|
||||||
KB_KeyDown[sc_Escape] = 0;
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1353,15 +1347,16 @@ int menu_LoadGameMenu()
|
||||||
overwritesprite(233, y, kMenuCursorTile, 0, 10, kPalNormal);
|
overwritesprite(233, y, kMenuCursorTile, 0, 10, kPalNormal);
|
||||||
videoNextPage();
|
videoNextPage();
|
||||||
|
|
||||||
if (KB_KeyDown[sc_Escape])
|
if (I_EscapeTrigger())
|
||||||
{
|
{
|
||||||
|
I_EscapeTriggerClear();
|
||||||
PlayLocalSound(StaticSound[kSound33], 0);
|
PlayLocalSound(StaticSound[kSound33], 0);
|
||||||
KB_KeyDown[sc_Escape] = 0;
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (KB_KeyDown[sc_UpArrow])
|
if (I_MenuUp())
|
||||||
{
|
{
|
||||||
|
I_MenuUpClear();
|
||||||
PlayLocalSound(StaticSound[kSound35], 0);
|
PlayLocalSound(StaticSound[kSound35], 0);
|
||||||
if (nSlot > 0) {
|
if (nSlot > 0) {
|
||||||
nSlot--;
|
nSlot--;
|
||||||
|
@ -1369,12 +1364,11 @@ int menu_LoadGameMenu()
|
||||||
else {
|
else {
|
||||||
nSlot = kMaxSaveSlots - 1;
|
nSlot = kMaxSaveSlots - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
KB_KeyDown[sc_UpArrow] = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (KB_KeyDown[sc_DownArrow]) // checkme - is 0x5b in disassembly
|
if (I_MenuDown())
|
||||||
{
|
{
|
||||||
|
I_MenuDownClear();
|
||||||
PlayLocalSound(StaticSound[kSound35], 0);
|
PlayLocalSound(StaticSound[kSound35], 0);
|
||||||
if (nSlot < kMaxSaveSlots - 1) {
|
if (nSlot < kMaxSaveSlots - 1) {
|
||||||
nSlot++;
|
nSlot++;
|
||||||
|
@ -1382,18 +1376,16 @@ int menu_LoadGameMenu()
|
||||||
else {
|
else {
|
||||||
nSlot = 0;
|
nSlot = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
KB_KeyDown[sc_DownArrow] = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!KB_KeyDown[sc_Return]) {
|
if (!I_AdvanceTrigger()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
PlayLocalSound(StaticSound[kSound33], 0);
|
PlayLocalSound(StaticSound[kSound33], 0);
|
||||||
KB_KeyDown[sc_Return] = 0;
|
I_AdvanceTriggerClear();
|
||||||
KB_ClearKeysDown();
|
inputState.ClearAllKeyStatus();
|
||||||
KB_FlushKeyboardQueue();
|
inputState.keyFlushChars();
|
||||||
|
|
||||||
if (nameList[nSlot][0] != '\0')
|
if (nameList[nSlot][0] != '\0')
|
||||||
{
|
{
|
||||||
|
@ -1499,15 +1491,13 @@ int menu_Menu(int nVal)
|
||||||
|
|
||||||
videoSetViewableArea(0, 0, xdim - 1, ydim - 1);
|
videoSetViewableArea(0, 0, xdim - 1, ydim - 1);
|
||||||
|
|
||||||
KB_KeyDown[sc_Escape] = 0;
|
|
||||||
|
|
||||||
StopAllSounds();
|
StopAllSounds();
|
||||||
StopLocalSound();
|
StopLocalSound();
|
||||||
|
|
||||||
menu_ResetKeyTimer();
|
menu_ResetKeyTimer();
|
||||||
|
|
||||||
KB_FlushKeyboardQueue();
|
inputState.keyFlushChars();
|
||||||
KB_ClearKeysDown();
|
inputState.ClearAllKeyStatus();
|
||||||
|
|
||||||
menu_ResetZoom();
|
menu_ResetZoom();
|
||||||
|
|
||||||
|
@ -1598,19 +1588,19 @@ int menu_Menu(int nVal)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (KB_KeyDown[nKey])
|
if (inputState.GetKeyStatus(nKey))
|
||||||
{
|
{
|
||||||
goto LABEL_21; // TEMP
|
goto LABEL_21; // TEMP
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// loc_3A0A7
|
// loc_3A0A7
|
||||||
while (KB_KeyDown[sc_Escape])
|
while (I_EscapeTrigger())
|
||||||
{
|
{
|
||||||
HandleAsync();
|
HandleAsync();
|
||||||
|
|
||||||
PlayLocalSound(StaticSound[kSound33], 0);
|
PlayLocalSound(StaticSound[kSound33], 0);
|
||||||
KB_KeyDown[sc_Escape] = 0;
|
I_EscapeTriggerClear();
|
||||||
|
|
||||||
if (nVal)
|
if (nVal)
|
||||||
{
|
{
|
||||||
|
@ -1628,13 +1618,14 @@ LABEL_21:
|
||||||
if (l != nMenu)
|
if (l != nMenu)
|
||||||
{
|
{
|
||||||
PlayLocalSound(StaticSound[kSound35], 0);
|
PlayLocalSound(StaticSound[kSound35], 0);
|
||||||
KB_KeyDown[nMenuKeys[l]] = 0;
|
inputState.ClearKeyStatus(nMenuKeys[l]);
|
||||||
nMenu = l;
|
nMenu = l;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (KB_KeyDown[sc_Space] || KB_KeyDown[sc_Return])
|
if (I_AdvanceTrigger())
|
||||||
{
|
{
|
||||||
|
I_AdvanceTriggerClear();
|
||||||
var_1C = 1;
|
var_1C = 1;
|
||||||
}
|
}
|
||||||
else if (var_1C)
|
else if (var_1C)
|
||||||
|
@ -1731,8 +1722,9 @@ LABEL_21:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (KB_KeyDown[sc_UpArrow])
|
if (I_MenuUp())
|
||||||
{
|
{
|
||||||
|
I_MenuUpClear();
|
||||||
PlayLocalSound(StaticSound[kSound35], 0);
|
PlayLocalSound(StaticSound[kSound35], 0);
|
||||||
if (nMenu <= 0) {
|
if (nMenu <= 0) {
|
||||||
nMenu = 4;
|
nMenu = 4;
|
||||||
|
@ -1741,12 +1733,12 @@ LABEL_21:
|
||||||
nMenu--;
|
nMenu--;
|
||||||
}
|
}
|
||||||
|
|
||||||
KB_KeyDown[sc_UpArrow] = 0;
|
|
||||||
menu_ResetKeyTimer();
|
menu_ResetKeyTimer();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (KB_KeyDown[sc_DownArrow]) // FIXME - is this down arrow? value is '5B' in disassembly
|
if (I_MenuDown())
|
||||||
{
|
{
|
||||||
|
I_MenuDownClear();
|
||||||
PlayLocalSound(StaticSound[kSound35], 0);
|
PlayLocalSound(StaticSound[kSound35], 0);
|
||||||
if (nMenu >= 4) {
|
if (nMenu >= 4) {
|
||||||
nMenu = 0;
|
nMenu = 0;
|
||||||
|
@ -1755,11 +1747,12 @@ LABEL_21:
|
||||||
nMenu++;
|
nMenu++;
|
||||||
}
|
}
|
||||||
|
|
||||||
KB_KeyDown[sc_DownArrow] = 0;
|
|
||||||
menu_ResetKeyTimer();
|
menu_ResetKeyTimer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// TODO - change to #defines
|
// TODO - change to #defines
|
||||||
|
/* why are these cleares although they are never used anywhere?
|
||||||
if (KB_KeyDown[0x5c]) {
|
if (KB_KeyDown[0x5c]) {
|
||||||
KB_KeyDown[0x5c] = 0;
|
KB_KeyDown[0x5c] = 0;
|
||||||
}
|
}
|
||||||
|
@ -1767,6 +1760,7 @@ LABEL_21:
|
||||||
if (KB_KeyDown[0x5d]) {
|
if (KB_KeyDown[0x5d]) {
|
||||||
KB_KeyDown[0x5d] = 0;
|
KB_KeyDown[0x5d] = 0;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;// todo
|
return 0;// todo
|
||||||
|
@ -1810,18 +1804,16 @@ int LoadCinemaPalette(int nPal)
|
||||||
|
|
||||||
// original code strcpy'd into a buffer first...
|
// original code strcpy'd into a buffer first...
|
||||||
|
|
||||||
int hFile = kopen4load(cinpalfname[nPal], 1);
|
auto hFile = kopenFileReader(cinpalfname[nPal], 1);
|
||||||
if (hFile < 0) {
|
if (!hFile.isOpen()) {
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
kread(hFile, cinemapal, sizeof(cinemapal));
|
hFile.Read(cinemapal, sizeof(cinemapal));
|
||||||
|
|
||||||
for (auto &c : cinemapal)
|
for (auto &c : cinemapal)
|
||||||
c <<= 2;
|
c <<= 2;
|
||||||
|
|
||||||
kclose(hFile);
|
|
||||||
|
|
||||||
return nPal;
|
return nPal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1958,7 +1950,9 @@ uint8_t AdvanceCinemaText()
|
||||||
{
|
{
|
||||||
HandleAsync();
|
HandleAsync();
|
||||||
|
|
||||||
if (KB_KeyDown[sc_Escape] || KB_KeyDown[sc_Return] || KB_KeyDown[sc_Space]) {
|
if (I_AdvanceTrigger())
|
||||||
|
{
|
||||||
|
I_AdvanceTriggerClear();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2229,7 +2223,7 @@ int FindGString(const char *str)
|
||||||
|
|
||||||
uint8_t CheckForEscape()
|
uint8_t CheckForEscape()
|
||||||
{
|
{
|
||||||
if (!KB_KeyWaiting() || (KB_GetCh() != 27)) {
|
if (!inputState.keyBufferWaiting() || (inputState.keyGetChar() != 27)) {
|
||||||
return kFalse;
|
return kFalse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2240,7 +2234,7 @@ void DoStatic(int a, int b)
|
||||||
{
|
{
|
||||||
RandomLong(); // nothing done with the result of this?
|
RandomLong(); // nothing done with the result of this?
|
||||||
|
|
||||||
tileLoad(kTileLoboLaptop);
|
auto pixels = TileFiles.tileMakeWritable(kTileLoboLaptop);
|
||||||
|
|
||||||
int v2 = 160 - a / 2;
|
int v2 = 160 - a / 2;
|
||||||
int v4 = 81 - b / 2;
|
int v4 = 81 - b / 2;
|
||||||
|
@ -2248,7 +2242,7 @@ void DoStatic(int a, int b)
|
||||||
int var_18 = v2 + a;
|
int var_18 = v2 + a;
|
||||||
int v5 = v4 + b;
|
int v5 = v4 + b;
|
||||||
|
|
||||||
uint8_t *pTile = (uint8_t*)(waloff[kTileLoboLaptop] + (200 * v2)) + v4;
|
auto pTile = (pixels + (200 * v2)) + v4;
|
||||||
|
|
||||||
while (v2 < var_18)
|
while (v2 < var_18)
|
||||||
{
|
{
|
||||||
|
@ -2267,6 +2261,7 @@ void DoStatic(int a, int b)
|
||||||
v2++;
|
v2++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tileInvalidate(kTileLoboLaptop, 0, 0);
|
||||||
overwritesprite(0, 0, kTileLoboLaptop, 0, 2, kPalNormal);
|
overwritesprite(0, 0, kTileLoboLaptop, 0, 2, kPalNormal);
|
||||||
videoNextPage();
|
videoNextPage();
|
||||||
}
|
}
|
||||||
|
@ -2285,17 +2280,17 @@ void DoLastLevelCinema()
|
||||||
|
|
||||||
PlayLocalSound(StaticSound[kSound75], 0);
|
PlayLocalSound(StaticSound[kSound75], 0);
|
||||||
|
|
||||||
tileLoad(kTileLoboLaptop);
|
auto pixels = TileFiles.tileMakeWritable(kTileLoboLaptop);
|
||||||
|
// uh, what?
|
||||||
memcpy((void*)waloff[kTileLoboLaptop], (void*)waloff[kTileLoboLaptop], tilesiz[kTileLoboLaptop].x * tilesiz[kTileLoboLaptop].y);
|
//memcpy((void*)waloff[kTileLoboLaptop], (void*)waloff[kTileLoboLaptop], tilesiz[kTileLoboLaptop].x * tilesiz[kTileLoboLaptop].y);
|
||||||
|
|
||||||
int var_24 = 16;
|
int var_24 = 16;
|
||||||
int var_28 = 12;
|
int var_28 = 12;
|
||||||
|
|
||||||
int nEndTime = (int)totalclock + 240;
|
int nEndTime = (int)totalclock + 240;
|
||||||
|
|
||||||
while (KB_KeyWaiting()) {
|
while (inputState.keyBufferWaiting()) {
|
||||||
KB_GetCh();
|
inputState.keyGetChar();
|
||||||
}
|
}
|
||||||
|
|
||||||
while (nEndTime > (int)totalclock)
|
while (nEndTime > (int)totalclock)
|
||||||
|
@ -2315,10 +2310,6 @@ void DoLastLevelCinema()
|
||||||
DoStatic(var_28, var_24);
|
DoStatic(var_28, var_24);
|
||||||
}
|
}
|
||||||
|
|
||||||
// loadtilelockmode = 1;
|
|
||||||
tileLoad(kTileLoboLaptop);
|
|
||||||
// loadtilelockmode = 0;
|
|
||||||
|
|
||||||
// loc_3AD75
|
// loc_3AD75
|
||||||
|
|
||||||
do
|
do
|
||||||
|
@ -2330,8 +2321,6 @@ LABEL_11:
|
||||||
|
|
||||||
int esi = nString;
|
int esi = nString;
|
||||||
|
|
||||||
tileLoad(kTileLoboLaptop);
|
|
||||||
|
|
||||||
while (strlen(gString[esi]) != 0)
|
while (strlen(gString[esi]) != 0)
|
||||||
esi++;
|
esi++;
|
||||||
|
|
||||||
|
@ -2356,6 +2345,7 @@ LABEL_11:
|
||||||
|
|
||||||
nString++;
|
nString++;
|
||||||
|
|
||||||
|
TileFiles.tileMakeWritable(kTileLoboLaptop);
|
||||||
while (*nChar)
|
while (*nChar)
|
||||||
{
|
{
|
||||||
HandleAsync();
|
HandleAsync();
|
||||||
|
@ -2380,8 +2370,8 @@ LABEL_11:
|
||||||
|
|
||||||
nString++;
|
nString++;
|
||||||
|
|
||||||
KB_FlushKeyboardQueue();
|
inputState.keyFlushChars();
|
||||||
KB_ClearKeysDown();
|
inputState.ClearAllKeyStatus();
|
||||||
|
|
||||||
int v11 = kTimerTicks * (var_1C + 2) + (int)totalclock;
|
int v11 = kTimerTicks * (var_1C + 2) + (int)totalclock;
|
||||||
|
|
||||||
|
@ -2391,9 +2381,9 @@ LABEL_11:
|
||||||
|
|
||||||
if (v11 <= (int)totalclock)
|
if (v11 <= (int)totalclock)
|
||||||
goto LABEL_11;
|
goto LABEL_11;
|
||||||
} while (!KB_KeyWaiting());
|
} while (!inputState.keyBufferWaiting());
|
||||||
}
|
}
|
||||||
while (KB_GetCh() != 27);
|
while (inputState.keyGetChar() != 27);
|
||||||
|
|
||||||
LABEL_28:
|
LABEL_28:
|
||||||
PlayLocalSound(StaticSound[kSound75], 0);
|
PlayLocalSound(StaticSound[kSound75], 0);
|
||||||
|
|
|
@ -27,6 +27,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
#include "baselayer.h"
|
#include "baselayer.h"
|
||||||
#include "typedefs.h"
|
#include "typedefs.h"
|
||||||
#include "keyboard.h"
|
#include "keyboard.h"
|
||||||
|
#include "cache1d.h"
|
||||||
|
|
||||||
BEGIN_PS_NS
|
BEGIN_PS_NS
|
||||||
|
|
||||||
|
@ -55,7 +56,7 @@ int serve_sample()
|
||||||
|
|
||||||
palette_t moviepal[256];
|
palette_t moviepal[256];
|
||||||
|
|
||||||
int ReadFrame(FILE *fp)
|
int ReadFrame(FileReader &fp)
|
||||||
{
|
{
|
||||||
static int nFrame = 0;
|
static int nFrame = 0;
|
||||||
Printf("Reading frame %d...\n", nFrame);
|
Printf("Reading frame %d...\n", nFrame);
|
||||||
|
@ -71,11 +72,11 @@ int ReadFrame(FILE *fp)
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
if (fread(&nType, 1, sizeof(nType), fp) == 0) {
|
if (fp.Read(&nType, sizeof(nType)) == 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
fread(&nSize, sizeof(nSize), 1, fp);
|
fp.Read(&nSize, sizeof(nSize));
|
||||||
|
|
||||||
nType--;
|
nType--;
|
||||||
if (nType > 3) {
|
if (nType > 3) {
|
||||||
|
@ -86,8 +87,8 @@ int ReadFrame(FILE *fp)
|
||||||
{
|
{
|
||||||
case kFramePalette:
|
case kFramePalette:
|
||||||
{
|
{
|
||||||
fread(palette, sizeof(palette[0]), sizeof(palette) / sizeof(palette[0]), fp);
|
fp.Read(palette, sizeof(palette));
|
||||||
fread(&var_1C, sizeof(var_1C), 1, fp);
|
fp.Read(&var_1C, sizeof(var_1C));
|
||||||
|
|
||||||
for (auto &c : palette)
|
for (auto &c : palette)
|
||||||
c <<= 2;
|
c <<= 2;
|
||||||
|
@ -102,7 +103,7 @@ int ReadFrame(FILE *fp)
|
||||||
{
|
{
|
||||||
Printf("Reading sound block size %d...\n", nSize);
|
Printf("Reading sound block size %d...\n", nSize);
|
||||||
// TODO - just skip for now
|
// TODO - just skip for now
|
||||||
fseek(fp, nSize, SEEK_CUR);
|
fp.Seek(nSize, FileReader::SeekCur);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
case kFrameImage:
|
case kFrameImage:
|
||||||
|
@ -114,22 +115,22 @@ int ReadFrame(FILE *fp)
|
||||||
|
|
||||||
uint8_t *pFrame = CurFrame;
|
uint8_t *pFrame = CurFrame;
|
||||||
|
|
||||||
int nRead = fread(&yOffset, 1, sizeof(yOffset), fp);
|
int nRead = fp.Read(&yOffset, sizeof(yOffset));
|
||||||
nSize -= nRead;
|
nSize -= nRead;
|
||||||
|
|
||||||
pFrame += yOffset * 200; // row position
|
pFrame += yOffset * 200; // row position
|
||||||
|
|
||||||
while (nSize > 0)
|
while (nSize > 0)
|
||||||
{
|
{
|
||||||
fread(&xOffset, sizeof(xOffset), 1, fp);
|
fp.Read(&xOffset, sizeof(xOffset));
|
||||||
fread(&nPixels, sizeof(nPixels), 1, fp);
|
fp.Read(&nPixels, sizeof(nPixels));
|
||||||
nSize -= 2;
|
nSize -= 2;
|
||||||
|
|
||||||
pFrame += xOffset;
|
pFrame += xOffset;
|
||||||
|
|
||||||
if (nPixels)
|
if (nPixels)
|
||||||
{
|
{
|
||||||
int nRead = fread(pFrame, 1, nPixels, fp);
|
int nRead = fp.Read(pFrame, nPixels);
|
||||||
pFrame += nRead;
|
pFrame += nRead;
|
||||||
nSize -= nRead;
|
nSize -= nRead;
|
||||||
}
|
}
|
||||||
|
@ -150,10 +151,11 @@ int ReadFrame(FILE *fp)
|
||||||
|
|
||||||
void PlayMovie(const char *fileName)
|
void PlayMovie(const char *fileName)
|
||||||
{
|
{
|
||||||
char buffer[256];
|
|
||||||
|
|
||||||
int bDoFade = 1;
|
int bDoFade = 1;
|
||||||
|
|
||||||
|
#if 0 // What's the point of preserving this? Let's just read the movie from the game directory and ignore the other locations!
|
||||||
|
char buffer[256];
|
||||||
|
|
||||||
if (bNoCDCheck)
|
if (bNoCDCheck)
|
||||||
{
|
{
|
||||||
sprintf(buffer, "C:\\PS\\%s", fileName);
|
sprintf(buffer, "C:\\PS\\%s", fileName);
|
||||||
|
@ -167,9 +169,6 @@ void PlayMovie(const char *fileName)
|
||||||
sprintf(buffer, "%c:%s", driveLetter, fileName);
|
sprintf(buffer, "%c:%s", driveLetter, fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
tileLoad(kMovieTile);
|
|
||||||
CurFrame = (uint8_t*)waloff[kMovieTile];
|
|
||||||
|
|
||||||
FILE *fp = fopen(buffer, "rb");
|
FILE *fp = fopen(buffer, "rb");
|
||||||
if (fp == NULL)
|
if (fp == NULL)
|
||||||
{
|
{
|
||||||
|
@ -181,16 +180,28 @@ void PlayMovie(const char *fileName)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
auto fp = kopenFileReader(fileName, 0);
|
||||||
|
if (!fp.isOpen())
|
||||||
|
{
|
||||||
|
Printf("Unable to open %s\n", fileName);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
fread(lh, sizeof(lh), 1, fp);
|
tileLoad(kMovieTile);
|
||||||
|
CurFrame = TileFiles.tileMakeWritable(kMovieTile);
|
||||||
|
|
||||||
|
|
||||||
|
fp.Read(lh, sizeof(lh));
|
||||||
memset(streambuf, 0, sizeof(streambuf));
|
memset(streambuf, 0, sizeof(streambuf));
|
||||||
memset(byte_1C6DF5, 0, sizeof(byte_1C6DF5));
|
memset(byte_1C6DF5, 0, sizeof(byte_1C6DF5));
|
||||||
|
|
||||||
// sound stuff
|
// sound stuff
|
||||||
|
|
||||||
// clear keys
|
// clear keys
|
||||||
KB_FlushKeyboardQueue();
|
inputState.keyFlushChars();
|
||||||
KB_ClearKeysDown();
|
inputState.ClearAllKeyStatus();
|
||||||
|
|
||||||
if (bDoFade) {
|
if (bDoFade) {
|
||||||
StartFadeIn();
|
StartFadeIn();
|
||||||
|
@ -203,7 +214,7 @@ void PlayMovie(const char *fileName)
|
||||||
|
|
||||||
if (ReadFrame(fp))
|
if (ReadFrame(fp))
|
||||||
{
|
{
|
||||||
while (!KB_KeyWaiting())
|
while (!inputState.keyBufferWaiting())
|
||||||
{
|
{
|
||||||
handleevents();
|
handleevents();
|
||||||
|
|
||||||
|
@ -231,10 +242,8 @@ void PlayMovie(const char *fileName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (KB_KeyWaiting()) {
|
if (inputState.keyBufferWaiting()) {
|
||||||
KB_GetCh();
|
inputState.keyGetChar();
|
||||||
}
|
}
|
||||||
|
|
||||||
fclose(fp);
|
|
||||||
}
|
}
|
||||||
END_PS_NS
|
END_PS_NS
|
||||||
|
|
|
@ -29,20 +29,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "osdcmds.h"
|
#include "osdcmds.h"
|
||||||
|
|
||||||
#include "vfs.h"
|
|
||||||
|
|
||||||
BEGIN_PS_NS
|
BEGIN_PS_NS
|
||||||
|
|
||||||
|
|
||||||
static inline int osdcmd_quit(osdcmdptr_t UNUSED(parm))
|
|
||||||
{
|
|
||||||
UNREFERENCED_CONST_PARAMETER(parm);
|
|
||||||
OSD_ShowDisplay(0);
|
|
||||||
ShutDown();
|
|
||||||
return OSDCMD_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int osdcmd_restartvid(osdcmdptr_t UNUSED(parm))
|
int osdcmd_restartvid(osdcmdptr_t UNUSED(parm))
|
||||||
{
|
{
|
||||||
UNREFERENCED_CONST_PARAMETER(parm);
|
UNREFERENCED_CONST_PARAMETER(parm);
|
||||||
|
@ -103,219 +92,14 @@ static int osdcmd_vidmode(osdcmdptr_t parm)
|
||||||
return OSDCMD_OK;
|
return OSDCMD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int osdcmd_addpath(osdcmdptr_t parm)
|
|
||||||
{
|
|
||||||
if (parm->numparms != 1)
|
|
||||||
return OSDCMD_SHOWHELP;
|
|
||||||
|
|
||||||
addsearchpath(parm->parms[0]);
|
|
||||||
|
|
||||||
return OSDCMD_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int osdcmd_initgroupfile(osdcmdptr_t parm)
|
|
||||||
{
|
|
||||||
if (parm->numparms != 1)
|
|
||||||
return OSDCMD_SHOWHELP;
|
|
||||||
|
|
||||||
initgroupfile(parm->parms[0]);
|
|
||||||
|
|
||||||
return OSDCMD_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
void onvideomodechange(int32_t newmode)
|
void onvideomodechange(int32_t newmode)
|
||||||
{
|
{
|
||||||
uint8_t palid = BASEPAL;
|
uint8_t palid = BASEPAL;
|
||||||
videoSetPalette(0, palid, 0);
|
videoSetPalette(0, palid, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int osdcmd_button(osdcmdptr_t parm)
|
|
||||||
{
|
|
||||||
static char const s_gamefunc_[] = "gamefunc_";
|
|
||||||
int constexpr strlen_gamefunc_ = ARRAY_SIZE(s_gamefunc_) - 1;
|
|
||||||
|
|
||||||
char const *p = parm->name + strlen_gamefunc_;
|
|
||||||
|
|
||||||
// if (g_player[myconnectindex].ps->gm == MODE_GAME) // only trigger these if in game
|
|
||||||
CONTROL_ButtonFlags[CONFIG_FunctionNameToNum(p)] = 1; // FIXME
|
|
||||||
|
|
||||||
return OSDCMD_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int osdcmd_cvar_set_game(osdcmdptr_t parm)
|
|
||||||
{
|
|
||||||
int const r = osdcmd_cvar_set(parm);
|
|
||||||
|
|
||||||
if (r != OSDCMD_OK) return r;
|
|
||||||
|
|
||||||
if (!Bstrcasecmp(parm->name, "r_maxfps") || !Bstrcasecmp(parm->name, "r_maxfpsoffset"))
|
|
||||||
{
|
|
||||||
if (r_maxfps != 0) r_maxfps = clamp(r_maxfps, 30, 1000);
|
|
||||||
g_frameDelay = calcFrameDelay(r_maxfps + r_maxfpsoffset);
|
|
||||||
}
|
|
||||||
if (!Bstrcasecmp(parm->name, "in_mouse"))
|
|
||||||
{
|
|
||||||
CONTROL_MouseEnabled = (gSetup.usemouse && CONTROL_MousePresent);
|
|
||||||
}
|
|
||||||
else if (!Bstrcasecmp(parm->name, "in_joystick"))
|
|
||||||
{
|
|
||||||
CONTROL_JoystickEnabled = (gSetup.usejoystick && CONTROL_JoyPresent);
|
|
||||||
}
|
|
||||||
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t registerosdcommands(void)
|
int32_t registerosdcommands(void)
|
||||||
{
|
{
|
||||||
char tempbuf[256];
|
|
||||||
static osdcvardata_t cvars_game[] =
|
|
||||||
{
|
|
||||||
// TODO:
|
|
||||||
//{ "benchmarkmode", "Set the benchmark mode (0: off, 1: performance test, 2: generate reference screenshots for correctness testing)", (void *) &g_BenchmarkMode, CVAR_INT|CVAR_NOSAVE, 0, 2 },
|
|
||||||
|
|
||||||
//{ "crosshair", "enable/disable crosshair", (void *)&ud.crosshair, CVAR_BOOL, 0, 1 },
|
|
||||||
|
|
||||||
//{ "cl_autoaim", "enable/disable weapon autoaim", (void *)&ud.config.AutoAim, CVAR_INT|CVAR_MULTI, 0, 3 },
|
|
||||||
//{ "cl_automsg", "enable/disable automatically sending messages to all players", (void *)&ud.automsg, CVAR_BOOL, 0, 1 },
|
|
||||||
{ "cl_autorun", "enable/disable autorun", (void *)&auto_run, CVAR_BOOL, 0, 1 },
|
|
||||||
|
|
||||||
//{ "cl_autosave", "enable/disable autosaves", (void *) &ud.autosave, CVAR_BOOL, 0, 1 },
|
|
||||||
//{ "cl_autosavedeletion", "enable/disable automatic deletion of autosaves", (void *) &ud.autosavedeletion, CVAR_BOOL, 0, 1 },
|
|
||||||
//{ "cl_maxautosaves", "number of autosaves to keep before deleting the oldest", (void *) &ud.maxautosaves, CVAR_INT, 1, 100 },
|
|
||||||
|
|
||||||
//{ "cl_autovote", "enable/disable automatic voting", (void *)&ud.autovote, CVAR_INT, 0, 2 },
|
|
||||||
|
|
||||||
//{ "cl_cheatmask", "configure what cheats show in the cheats menu", (void *)&cl_cheatmask, CVAR_UINT, 0, ~0 },
|
|
||||||
|
|
||||||
//{ "cl_obituaries", "enable/disable multiplayer death messages", (void *)&ud.obituaries, CVAR_BOOL, 0, 1 },
|
|
||||||
//{ "cl_democams", "enable/disable demo playback cameras", (void *)&ud.democams, CVAR_BOOL, 0, 1 },
|
|
||||||
|
|
||||||
//{ "cl_idplayers", "enable/disable name display when aiming at opponents", (void *)&ud.idplayers, CVAR_BOOL, 0, 1 },
|
|
||||||
|
|
||||||
{ "cl_runmode", "enable/disable modernized run key operation", (void *)&runkey_mode, CVAR_BOOL, 0, 1 },
|
|
||||||
|
|
||||||
// { "cl_showcoords", "show your position in the game world", (void *)&ud.coords, CVAR_INT, 0,
|
|
||||||
//#ifdef USE_OPENGL
|
|
||||||
// 2
|
|
||||||
//#else
|
|
||||||
// 1
|
|
||||||
//#endif
|
|
||||||
// },
|
|
||||||
|
|
||||||
//{ "cl_viewbob", "enable/disable player head bobbing", (void *)&ud.viewbob, CVAR_BOOL, 0, 1 },
|
|
||||||
|
|
||||||
//{ "cl_weaponsway", "enable/disable player weapon swaying", (void *)&ud.weaponsway, CVAR_BOOL, 0, 1 },
|
|
||||||
//{ "cl_weaponswitch", "enable/disable auto weapon switching", (void *)&ud.weaponswitch, CVAR_INT|CVAR_MULTI, 0, 7 },
|
|
||||||
|
|
||||||
//{ "color", "changes player palette", (void *)&ud.color, CVAR_INT|CVAR_MULTI, 0, MAXPALOOKUPS-1 },
|
|
||||||
|
|
||||||
//{ "crosshairscale","changes the size of the crosshair", (void *)&ud.crosshairscale, CVAR_INT, 10, 100 },
|
|
||||||
|
|
||||||
//{ "demorec_diffs","enable/disable diff recording in demos",(void *)&demorec_diffs_cvar, CVAR_BOOL, 0, 1 },
|
|
||||||
//{ "demorec_force","enable/disable forced demo recording",(void *)&demorec_force_cvar, CVAR_BOOL|CVAR_NOSAVE, 0, 1 },
|
|
||||||
//{
|
|
||||||
// "demorec_difftics","sets game tic interval after which a diff is recorded",
|
|
||||||
// (void *)&demorec_difftics_cvar, CVAR_INT, 2, 60*REALGAMETICSPERSEC
|
|
||||||
//},
|
|
||||||
//{ "demorec_diffcompress","Compression method for diffs. (0: none, 1: KSLZW)",(void *)&demorec_diffcompress_cvar, CVAR_BOOL, 0, 1 },
|
|
||||||
//{ "demorec_synccompress","Compression method for input. (0: none, 1: KSLZW)",(void *)&demorec_synccompress_cvar, CVAR_BOOL, 0, 1 },
|
|
||||||
//{ "demorec_seeds","enable/disable recording of random seed for later sync checking",(void *)&demorec_seeds_cvar, CVAR_BOOL, 0, 1 },
|
|
||||||
//{ "demoplay_diffs","enable/disable application of diffs in demo playback",(void *)&demoplay_diffs, CVAR_BOOL, 0, 1 },
|
|
||||||
//{ "demoplay_showsync","enable/disable display of sync status",(void *)&demoplay_showsync, CVAR_BOOL, 0, 1 },
|
|
||||||
|
|
||||||
//{ "fov", "change the field of view", (void *)&ud.fov, CVAR_INT|CVAR_FUNCPTR, 60, 120 },
|
|
||||||
|
|
||||||
//{ "hud_althud", "enable/disable alternate mini-hud", (void *)&ud.althud, CVAR_BOOL, 0, 1 },
|
|
||||||
//{ "hud_custom", "change the custom hud", (void *)&ud.statusbarcustom, CVAR_INT, 0, ud.statusbarrange },
|
|
||||||
//{ "hud_position", "aligns the status bar to the bottom/top", (void *)&ud.hudontop, CVAR_BOOL, 0, 1 },
|
|
||||||
//{ "hud_bgstretch", "enable/disable background image stretching in wide resolutions", (void *)&ud.bgstretch, CVAR_BOOL, 0, 1 },
|
|
||||||
//{ "hud_messagetime", "length of time to display multiplayer chat messages", (void *)&ud.msgdisptime, CVAR_INT, 0, 3600 },
|
|
||||||
//{ "hud_numbertile", "first tile in alt hud number set", (void *)&althud_numbertile, CVAR_INT, 0, MAXUSERTILES-10 },
|
|
||||||
//{ "hud_numberpal", "pal for alt hud numbers", (void *)&althud_numberpal, CVAR_INT, 0, MAXPALOOKUPS-1 },
|
|
||||||
//{ "hud_shadows", "enable/disable althud shadows", (void *)&althud_shadows, CVAR_BOOL, 0, 1 },
|
|
||||||
//{ "hud_flashing", "enable/disable althud flashing", (void *)&althud_flashing, CVAR_BOOL, 0, 1 },
|
|
||||||
//{ "hud_glowingquotes", "enable/disable \"glowing\" quote text", (void *)&hud_glowingquotes, CVAR_BOOL, 0, 1 },
|
|
||||||
//{ "hud_scale","changes the hud scale", (void *)&ud.statusbarscale, CVAR_INT|CVAR_FUNCPTR, 36, 100 },
|
|
||||||
//{ "hud_showmapname", "enable/disable map name display on load", (void *)&hud_showmapname, CVAR_BOOL, 0, 1 },
|
|
||||||
//{ "hud_stats", "enable/disable level statistics display", (void *)&ud.levelstats, CVAR_BOOL, 0, 1 },
|
|
||||||
//{ "hud_textscale", "sets multiplayer chat message size", (void *)&ud.textscale, CVAR_INT, 100, 400 },
|
|
||||||
//{ "hud_weaponscale","changes the weapon scale", (void *)&ud.weaponscale, CVAR_INT, 10, 100 },
|
|
||||||
//{ "hud_statusbarmode", "change overlay mode of status bar", (void *)&ud.statusbarmode, CVAR_BOOL|CVAR_FUNCPTR, 0, 1 },
|
|
||||||
|
|
||||||
//#ifdef EDUKE32_TOUCH_DEVICES
|
|
||||||
// { "hud_hidestick", "hide the touch input stick", (void *)&droidinput.hideStick, CVAR_BOOL, 0, 1 },
|
|
||||||
//#endif
|
|
||||||
|
|
||||||
{ "in_joystick","enables input from the joystick if it is present",(void *)&gSetup.usejoystick, CVAR_BOOL|CVAR_FUNCPTR, 0, 1 },
|
|
||||||
{ "in_mouse","enables input from the mouse if it is present",(void *)&gSetup.usemouse, CVAR_BOOL|CVAR_FUNCPTR, 0, 1 },
|
|
||||||
|
|
||||||
{ "in_aimmode", "0:toggle, 1:hold to aim", (void *)&mouseaiming, CVAR_BOOL, 0, 1 },
|
|
||||||
{
|
|
||||||
"in_mousebias", "emulates the original mouse code's weighting of input towards whichever axis is moving the most at any given time",
|
|
||||||
(void *)&MouseBias, CVAR_INT, 0, 32
|
|
||||||
},
|
|
||||||
{ "in_mousedeadzone", "amount of mouse movement to filter out", (void *)&MouseDeadZone, CVAR_INT, 0, 512 },
|
|
||||||
{ "in_mouseflip", "invert vertical mouse movement", (void *)&mouseflip, CVAR_BOOL, 0, 1 },
|
|
||||||
{ "in_mousemode", "toggles vertical mouse view", (void *)&aimmode, CVAR_BOOL, 0, 1 },
|
|
||||||
{ "in_mousesmoothing", "enable/disable mouse input smoothing", (void *)&SmoothInput, CVAR_BOOL, 0, 1 },
|
|
||||||
|
|
||||||
//{ "mus_enabled", "enables/disables music", (void *)&ud.config.MusicToggle, CVAR_BOOL, 0, 1 },
|
|
||||||
//{ "mus_volume", "controls music volume", (void *)&ud.config.MusicVolume, CVAR_INT, 0, 255 },
|
|
||||||
|
|
||||||
//{ "osdhightile", "enable/disable hires art replacements for console text", (void *)&osdhightile, CVAR_BOOL, 0, 1 },
|
|
||||||
//{ "osdscale", "adjust console text size", (void *)&osdscale, CVAR_FLOAT|CVAR_FUNCPTR, 1, 4 },
|
|
||||||
|
|
||||||
//{ "r_camrefreshdelay", "minimum delay between security camera sprite updates, 120 = 1 second", (void *)&ud.camera_time, CVAR_INT, 1, 240 },
|
|
||||||
//{ "r_drawweapon", "enable/disable weapon drawing", (void *)&ud.drawweapon, CVAR_INT, 0, 2 },
|
|
||||||
{ "r_showfps", "show the frame rate counter", (void *)&r_showfps, CVAR_INT, 0, 3 },
|
|
||||||
//{ "r_showfpsperiod", "time in seconds before averaging min and max stats for r_showfps 2+", (void *)&ud.frameperiod, CVAR_INT, 0, 5 },
|
|
||||||
//{ "r_shadows", "enable/disable sprite and model shadows", (void *)&ud.shadows, CVAR_BOOL, 0, 1 },
|
|
||||||
//{ "r_size", "change size of viewable area", (void *)&ud.screen_size, CVAR_INT|CVAR_FUNCPTR, 0, 64 },
|
|
||||||
//{ "r_rotatespritenowidescreen", "pass bit 1024 to all CON rotatesprite calls", (void *)&g_rotatespriteNoWidescreen, CVAR_BOOL|CVAR_FUNCPTR, 0, 1 },
|
|
||||||
//{ "r_upscalefactor", "increase performance by rendering at upscalefactor less than the screen resolution and upscale to the full resolution in the software renderer", (void *)&ud.detail, CVAR_INT|CVAR_FUNCPTR, 1, 16 },
|
|
||||||
{ "r_precache", "enable/disable the pre-level caching routine", (void *)&useprecache, CVAR_BOOL, 0, 1 },
|
|
||||||
|
|
||||||
// { "r_ambientlight", "sets the global map light level",(void *)&r_ambientlight, CVAR_FLOAT|CVAR_FUNCPTR, 0, 10 },
|
|
||||||
{ "r_maxfps", "limit the frame rate",(void *)&r_maxfps, CVAR_INT|CVAR_FUNCPTR, 0, 1000 },
|
|
||||||
{ "r_maxfpsoffset", "menu-controlled offset for r_maxfps",(void *)&r_maxfpsoffset, CVAR_INT|CVAR_FUNCPTR, -10, 10 },
|
|
||||||
|
|
||||||
{ "sensitivity","changes the mouse sensitivity", (void *)&CONTROL_MouseSensitivity, CVAR_FLOAT|CVAR_FUNCPTR, 0, 25 },
|
|
||||||
|
|
||||||
//{ "skill","changes the game skill setting", (void *)&ud.m_player_skill, CVAR_INT|CVAR_FUNCPTR|CVAR_NOSAVE/*|CVAR_NOMULTI*/, 0, 5 },
|
|
||||||
|
|
||||||
//{ "snd_ambience", "enables/disables ambient sounds", (void *)&ud.config.AmbienceToggle, CVAR_BOOL, 0, 1 },
|
|
||||||
//{ "snd_enabled", "enables/disables sound effects", (void *)&ud.config.SoundToggle, CVAR_BOOL, 0, 1 },
|
|
||||||
//{ "snd_fxvolume", "controls volume for sound effects", (void *)&ud.config.FXVolume, CVAR_INT, 0, 255 },
|
|
||||||
//{ "snd_mixrate", "sound mixing rate", (void *)&ud.config.MixRate, CVAR_INT, 0, 48000 },
|
|
||||||
//{ "snd_numchannels", "the number of sound channels", (void *)&ud.config.NumChannels, CVAR_INT, 0, 2 },
|
|
||||||
//{ "snd_numvoices", "the number of concurrent sounds", (void *)&ud.config.NumVoices, CVAR_INT, 1, 128 },
|
|
||||||
//{ "snd_reversestereo", "reverses the stereo channels", (void *)&ud.config.ReverseStereo, CVAR_BOOL, 0, 1 },
|
|
||||||
//{ "snd_speech", "enables/disables player speech", (void *)&ud.config.VoiceToggle, CVAR_INT, 0, 5 },
|
|
||||||
|
|
||||||
//{ "team","change team in multiplayer", (void *)&ud.team, CVAR_INT|CVAR_MULTI, 0, 3 },
|
|
||||||
|
|
||||||
{ "vid_gamma","adjusts gamma component of gamma ramp",(void *)&g_videoGamma, CVAR_FLOAT|CVAR_FUNCPTR, 0, 10 },
|
|
||||||
{ "vid_contrast","adjusts contrast component of gamma ramp",(void *)&g_videoContrast, CVAR_FLOAT|CVAR_FUNCPTR, 0, 10 },
|
|
||||||
{ "vid_brightness","adjusts brightness component of gamma ramp",(void *)&g_videoBrightness, CVAR_FLOAT|CVAR_FUNCPTR, 0, 10 },
|
|
||||||
//{ "wchoice","sets weapon autoselection order", (void *)ud.wchoice, CVAR_STRING|CVAR_FUNCPTR, 0, MAX_WEAPONS },
|
|
||||||
};
|
|
||||||
|
|
||||||
//osdcmd_cheatsinfo_stat.cheatnum = -1;
|
|
||||||
|
|
||||||
for (auto & cv : cvars_game)
|
|
||||||
{
|
|
||||||
switch (cv.flags & (CVAR_FUNCPTR|CVAR_MULTI))
|
|
||||||
{
|
|
||||||
case CVAR_FUNCPTR:
|
|
||||||
OSD_RegisterCvar(&cv, osdcmd_cvar_set_game); break;
|
|
||||||
//case CVAR_MULTI:
|
|
||||||
//case CVAR_FUNCPTR|CVAR_MULTI:
|
|
||||||
// OSD_RegisterCvar(&cv, osdcmd_cvar_set_multi); break;
|
|
||||||
default:
|
|
||||||
OSD_RegisterCvar(&cv, osdcmd_cvar_set); break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//if (VOLUMEONE)
|
//if (VOLUMEONE)
|
||||||
// OSD_RegisterFunction("changelevel","changelevel <level>: warps to the given level", osdcmd_changelevel);
|
// OSD_RegisterFunction("changelevel","changelevel <level>: warps to the given level", osdcmd_changelevel);
|
||||||
//else
|
//else
|
||||||
|
@ -325,33 +109,14 @@ int32_t registerosdcommands(void)
|
||||||
// OSD_RegisterFunction("demo","demo <demofile or demonum>: starts the given demo", osdcmd_demo);
|
// OSD_RegisterFunction("demo","demo <demofile or demonum>: starts the given demo", osdcmd_demo);
|
||||||
//}
|
//}
|
||||||
|
|
||||||
OSD_RegisterFunction("addpath","addpath <path>: adds path to game filesystem", osdcmd_addpath);
|
|
||||||
OSD_RegisterFunction("bind",R"(bind <key> <string>: associates a keypress with a string of console input. Type "bind showkeys" for a list of keys and "listsymbols" for a list of valid console commands.)", osdcmd_bind);
|
|
||||||
//OSD_RegisterFunction("cmenu","cmenu <#>: jumps to menu", osdcmd_cmenu);
|
//OSD_RegisterFunction("cmenu","cmenu <#>: jumps to menu", osdcmd_cmenu);
|
||||||
//OSD_RegisterFunction("crosshaircolor","crosshaircolor: changes the crosshair color", osdcmd_crosshaircolor);
|
//OSD_RegisterFunction("crosshaircolor","crosshaircolor: changes the crosshair color", osdcmd_crosshaircolor);
|
||||||
|
|
||||||
for (auto & func : gamefunctions)
|
|
||||||
{
|
|
||||||
if (func[0] == '\0')
|
|
||||||
continue;
|
|
||||||
|
|
||||||
// if (!Bstrcmp(gamefunctions[i],"Show_Console")) continue;
|
|
||||||
|
|
||||||
Bsprintf(tempbuf, "gamefunc_%s", func);
|
|
||||||
|
|
||||||
char *const t = Bstrtolower(Xstrdup(tempbuf));
|
|
||||||
|
|
||||||
Bstrcat(tempbuf, ": game button");
|
|
||||||
|
|
||||||
OSD_RegisterFunction(t, Xstrdup(tempbuf), osdcmd_button);
|
|
||||||
}
|
|
||||||
|
|
||||||
//OSD_RegisterFunction("give","give <all|health|weapons|ammo|armor|keys|inventory>: gives requested item", osdcmd_give);
|
//OSD_RegisterFunction("give","give <all|health|weapons|ammo|armor|keys|inventory>: gives requested item", osdcmd_give);
|
||||||
//OSD_RegisterFunction("god","god: toggles god mode", osdcmd_god);
|
//OSD_RegisterFunction("god","god: toggles god mode", osdcmd_god);
|
||||||
//OSD_RegisterFunction("activatecheat","activatecheat <id>: activates a cheat code", osdcmd_activatecheat);
|
//OSD_RegisterFunction("activatecheat","activatecheat <id>: activates a cheat code", osdcmd_activatecheat);
|
||||||
|
|
||||||
OSD_RegisterFunction("initgroupfile","initgroupfile <path>: adds a grp file into the game filesystem", osdcmd_initgroupfile);
|
|
||||||
|
|
||||||
//OSD_RegisterFunction("restartmap", "restartmap: restarts the current map", osdcmd_restartmap);
|
//OSD_RegisterFunction("restartmap", "restartmap: restarts the current map", osdcmd_restartmap);
|
||||||
//OSD_RegisterFunction("restartsound","restartsound: reinitializes the sound system",osdcmd_restartsound);
|
//OSD_RegisterFunction("restartsound","restartsound: reinitializes the sound system",osdcmd_restartsound);
|
||||||
OSD_RegisterFunction("restartvid","restartvid: reinitializes the video mode",osdcmd_restartvid);
|
OSD_RegisterFunction("restartvid","restartvid: reinitializes the video mode",osdcmd_restartvid);
|
||||||
|
|
|
@ -49,6 +49,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
#include "cdaudio.h"
|
#include "cdaudio.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
#include "sound.h"
|
#include "sound.h"
|
||||||
|
#include "textures.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -160,29 +161,29 @@ fixed droll;
|
||||||
void PlayerInterruptKeys()
|
void PlayerInterruptKeys()
|
||||||
{
|
{
|
||||||
ControlInfo info;
|
ControlInfo info;
|
||||||
CONTROL_ProcessBinds();
|
|
||||||
memset(&info, 0, sizeof(ControlInfo)); // this is done within CONTROL_GetInput() anyway
|
memset(&info, 0, sizeof(ControlInfo)); // this is done within CONTROL_GetInput() anyway
|
||||||
CONTROL_GetInput(&info);
|
CONTROL_GetInput(&info);
|
||||||
|
D_ProcessEvents();
|
||||||
|
|
||||||
if (MouseDeadZone)
|
if (in_mousedeadzone)
|
||||||
{
|
{
|
||||||
if (info.mousey > 0)
|
if (info.mousey > 0)
|
||||||
info.mousey = max(info.mousey - MouseDeadZone, 0);
|
info.mousey = max(info.mousey - in_mousedeadzone, 0);
|
||||||
else if (info.mousey < 0)
|
else if (info.mousey < 0)
|
||||||
info.mousey = min(info.mousey + MouseDeadZone, 0);
|
info.mousey = min(info.mousey + in_mousedeadzone, 0);
|
||||||
|
|
||||||
if (info.mousex > 0)
|
if (info.mousex > 0)
|
||||||
info.mousex = max(info.mousex - MouseDeadZone, 0);
|
info.mousex = max(info.mousex - in_mousedeadzone, 0);
|
||||||
else if (info.mousex < 0)
|
else if (info.mousex < 0)
|
||||||
info.mousex = min(info.mousex + MouseDeadZone, 0);
|
info.mousex = min(info.mousex + in_mousedeadzone, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (MouseBias)
|
if (in_mousebias)
|
||||||
{
|
{
|
||||||
if (klabs(info.mousex) > klabs(info.mousey))
|
if (klabs(info.mousex) > klabs(info.mousey))
|
||||||
info.mousey = tabledivide32_noinline(info.mousey, MouseBias);
|
info.mousey = tabledivide32_noinline(info.mousey, in_mousebias);
|
||||||
else
|
else
|
||||||
info.mousex = tabledivide32_noinline(info.mousex, MouseBias);
|
info.mousex = tabledivide32_noinline(info.mousex, in_mousebias);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PlayerList[nLocalPlayer].nHealth == 0)
|
if (PlayerList[nLocalPlayer].nHealth == 0)
|
||||||
|
@ -194,7 +195,7 @@ void PlayerInterruptKeys()
|
||||||
}
|
}
|
||||||
|
|
||||||
// JBF: Run key behaviour is selectable
|
// JBF: Run key behaviour is selectable
|
||||||
int const playerRunning = (runkey_mode) ? (buttonMap.ButtonDown(gamefunc_Run) | auto_run) : (auto_run ^ buttonMap.ButtonDown(gamefunc_Run));
|
int const playerRunning = G_CheckAutorun(buttonMap.ButtonDown(gamefunc_Run));
|
||||||
int const turnAmount = playerRunning ? 12 : 8;
|
int const turnAmount = playerRunning ? 12 : 8;
|
||||||
int const keyMove = playerRunning ? 12 : 6;
|
int const keyMove = playerRunning ? 12 : 6;
|
||||||
constexpr int const analogTurnAmount = 12;
|
constexpr int const analogTurnAmount = 12;
|
||||||
|
@ -217,12 +218,12 @@ void PlayerInterruptKeys()
|
||||||
q16avel += fix16_from_int(info.dyaw) / analogExtent * (analogTurnAmount << 1);
|
q16avel += fix16_from_int(info.dyaw) / analogExtent * (analogTurnAmount << 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (aimmode)
|
if (g_MyAimMode)
|
||||||
q16horz = fix16_div(fix16_from_int(info.mousey), F16(64));
|
q16horz = fix16_div(fix16_from_int(info.mousey), F16(64));
|
||||||
else
|
else
|
||||||
fvel = -(info.mousey >> 6);
|
fvel = -(info.mousey >> 6);
|
||||||
|
|
||||||
if (mouseflip) q16horz = -q16horz;
|
if (!in_mouseflip) q16horz = -q16horz;
|
||||||
|
|
||||||
q16horz -= fix16_from_int(info.dpitch) / analogExtent * analogTurnAmount;
|
q16horz -= fix16_from_int(info.dpitch) / analogExtent * analogTurnAmount;
|
||||||
svel -= info.dx * keyMove / analogExtent;
|
svel -= info.dx * keyMove / analogExtent;
|
||||||
|
@ -607,9 +608,9 @@ void InitPlayerInventory(short nPlayer)
|
||||||
|
|
||||||
nPlayerScore[nPlayer] = 0;
|
nPlayerScore[nPlayer] = 0;
|
||||||
|
|
||||||
tileLoad(kTile3571 + nPlayer);
|
auto pixels = tilePtr(kTile3571 + nPlayer);
|
||||||
|
|
||||||
nPlayerColor[nPlayer] = *(uint8_t*)(waloff[nPlayer + kTile3571] + tilesiz[nPlayer + kTile3571].x * tilesiz[nPlayer + kTile3571].y / 2);
|
nPlayerColor[nPlayer] = pixels[tilesiz[nPlayer + kTile3571].x * tilesiz[nPlayer + kTile3571].y / 2];
|
||||||
}
|
}
|
||||||
|
|
||||||
// done
|
// done
|
||||||
|
@ -2850,7 +2851,7 @@ do_default_b:
|
||||||
FinishLevel();
|
FinishLevel();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
keySetState(32, 1);
|
inputState.keySetState(32, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
DestroyItemAnim(nValB);
|
DestroyItemAnim(nValB);
|
||||||
|
@ -3137,13 +3138,13 @@ do_default_b:
|
||||||
bPlayerPan = kFalse;
|
bPlayerPan = kFalse;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (aimmode)
|
if (g_MyAimMode)
|
||||||
bLockPan = kTrue;
|
bLockPan = kTrue;
|
||||||
|
|
||||||
// loc_1C05E
|
// loc_1C05E
|
||||||
fix16_t ecx = nDestVertPan[nPlayer] - nVertPan[nPlayer];
|
fix16_t ecx = nDestVertPan[nPlayer] - nVertPan[nPlayer];
|
||||||
|
|
||||||
if (aimmode)
|
if (g_MyAimMode)
|
||||||
{
|
{
|
||||||
ecx = 0;
|
ecx = 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -166,35 +166,32 @@ int seq_ReadSequence(const char *seqName)
|
||||||
strcat(buffer, seqName);
|
strcat(buffer, seqName);
|
||||||
strcat(buffer, ".seq");
|
strcat(buffer, ".seq");
|
||||||
|
|
||||||
int hFile = kopen4load(buffer, 1);
|
auto hFile = kopenFileReader(buffer, 1);
|
||||||
if (hFile == -1)
|
if (!hFile.isOpen())
|
||||||
{
|
{
|
||||||
initprintf("Unable to open '%s'!\n", buffer);
|
initprintf("Unable to open '%s'!\n", buffer);
|
||||||
kclose(hFile);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
short tag;
|
short tag;
|
||||||
kread(hFile, &tag, sizeof(tag));
|
hFile.Read(&tag, sizeof(tag));
|
||||||
if (tag < 'HI' || tag > 'HI' && tag != 'SD')
|
if (tag < 'HI' || tag > 'HI' && tag != 'SD')
|
||||||
{
|
{
|
||||||
initprintf("Unsupported sequence version!\n");
|
initprintf("Unsupported sequence version!\n");
|
||||||
kclose(hFile);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
short centerx, centery; // TODO - are global vars?
|
short centerx, centery; // TODO - are global vars?
|
||||||
short nSeqs;
|
short nSeqs;
|
||||||
kread(hFile, ¢erx, sizeof(centerx));
|
hFile.Read(¢erx, sizeof(centerx));
|
||||||
kread(hFile, ¢ery, sizeof(centery));
|
hFile.Read(¢ery, sizeof(centery));
|
||||||
kread(hFile, &nSeqs, sizeof(nSeqs));
|
hFile.Read(&nSeqs, sizeof(nSeqs));
|
||||||
|
|
||||||
if (nSeqs <= 0 || sequences + nSeqs >= kMaxSequences)
|
if (nSeqs <= 0 || sequences + nSeqs >= kMaxSequences)
|
||||||
{
|
{
|
||||||
if (nSeqs < 0)
|
if (nSeqs < 0)
|
||||||
{
|
{
|
||||||
initprintf("Invalid sequence count!\n");
|
initprintf("Invalid sequence count!\n");
|
||||||
kclose(hFile);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -202,9 +199,9 @@ int seq_ReadSequence(const char *seqName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
kread(hFile, &SeqBase[sequences], nSeqs * sizeof(SeqBase[0]));
|
hFile.Read(&SeqBase[sequences], nSeqs * sizeof(SeqBase[0]));
|
||||||
kread(hFile, &SeqSize[sequences], nSeqs * sizeof(SeqSize[0]));
|
hFile.Read(&SeqSize[sequences], nSeqs * sizeof(SeqSize[0]));
|
||||||
kread(hFile, &SeqFlag[sequences], nSeqs * sizeof(SeqFlag[0]));
|
hFile.Read(&SeqFlag[sequences], nSeqs * sizeof(SeqFlag[0]));
|
||||||
|
|
||||||
for (i = 0; i < nSeqs; i++)
|
for (i = 0; i < nSeqs; i++)
|
||||||
{
|
{
|
||||||
|
@ -214,14 +211,13 @@ int seq_ReadSequence(const char *seqName)
|
||||||
short vdi = frames;
|
short vdi = frames;
|
||||||
|
|
||||||
int16_t nFrames;
|
int16_t nFrames;
|
||||||
kread(hFile, &nFrames, sizeof(nFrames));
|
hFile.Read(&nFrames, sizeof(nFrames));
|
||||||
|
|
||||||
if (nFrames <= 0 || frames + nFrames >= kMaxSEQFrames)
|
if (nFrames <= 0 || frames + nFrames >= kMaxSEQFrames)
|
||||||
{
|
{
|
||||||
if (nFrames < 0 )
|
if (nFrames < 0 )
|
||||||
{
|
{
|
||||||
initprintf("Invalid frame count!\n");
|
initprintf("Invalid frame count!\n");
|
||||||
kclose(hFile);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -229,9 +225,9 @@ int seq_ReadSequence(const char *seqName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
kread(hFile, &FrameBase[frames], nFrames * sizeof(FrameBase[0]));
|
hFile.Read(&FrameBase[frames], nFrames * sizeof(FrameBase[0]));
|
||||||
kread(hFile, &FrameSize[frames], nFrames * sizeof(FrameSize[0]));
|
hFile.Read(&FrameSize[frames], nFrames * sizeof(FrameSize[0]));
|
||||||
kread(hFile, &FrameFlag[frames], nFrames * sizeof(FrameFlag[0]));
|
hFile.Read(&FrameFlag[frames], nFrames * sizeof(FrameFlag[0]));
|
||||||
memset(&FrameSound[frames], -1, nFrames * sizeof(FrameSound[0]));
|
memset(&FrameSound[frames], -1, nFrames * sizeof(FrameSound[0]));
|
||||||
|
|
||||||
for (i = 0; i < nFrames; i++)
|
for (i = 0; i < nFrames; i++)
|
||||||
|
@ -240,14 +236,13 @@ int seq_ReadSequence(const char *seqName)
|
||||||
}
|
}
|
||||||
|
|
||||||
int16_t nChunks;
|
int16_t nChunks;
|
||||||
kread(hFile, &nChunks, sizeof(nChunks));
|
hFile.Read(&nChunks, sizeof(nChunks));
|
||||||
|
|
||||||
if (nChunks < 0 || chunks + nChunks >= kMaxSEQChunks)
|
if (nChunks < 0 || chunks + nChunks >= kMaxSEQChunks)
|
||||||
{
|
{
|
||||||
if (nChunks < 0 )
|
if (nChunks < 0 )
|
||||||
{
|
{
|
||||||
initprintf("Invalid chunk count!\n");
|
initprintf("Invalid chunk count!\n");
|
||||||
kclose(hFile);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -255,10 +250,10 @@ int seq_ReadSequence(const char *seqName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
kread(hFile, &ChunkXpos[chunks], nChunks * sizeof(ChunkXpos[0]));
|
hFile.Read(&ChunkXpos[chunks], nChunks * sizeof(ChunkXpos[0]));
|
||||||
kread(hFile, &ChunkYpos[chunks], nChunks * sizeof(ChunkYpos[0]));
|
hFile.Read(&ChunkYpos[chunks], nChunks * sizeof(ChunkYpos[0]));
|
||||||
kread(hFile, &ChunkPict[chunks], nChunks * sizeof(ChunkPict[0]));
|
hFile.Read(&ChunkPict[chunks], nChunks * sizeof(ChunkPict[0]));
|
||||||
kread(hFile, &ChunkFlag[chunks], nChunks * sizeof(ChunkFlag[0]));
|
hFile.Read(&ChunkFlag[chunks], nChunks * sizeof(ChunkFlag[0]));
|
||||||
|
|
||||||
for (i = 0; i < nChunks; i++)
|
for (i = 0; i < nChunks; i++)
|
||||||
{
|
{
|
||||||
|
@ -275,21 +270,21 @@ int seq_ReadSequence(const char *seqName)
|
||||||
if (tag == 'SD')
|
if (tag == 'SD')
|
||||||
{
|
{
|
||||||
short var_20;
|
short var_20;
|
||||||
kread(hFile, &var_20, sizeof(var_20));
|
hFile.Read(&var_20, sizeof(var_20));
|
||||||
|
|
||||||
for (i = 0; i < var_20; i++)
|
for (i = 0; i < var_20; i++)
|
||||||
{
|
{
|
||||||
kread(hFile, &buffer[i * 10], 8);
|
hFile.Read(&buffer[i * 10], 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
short var_24;
|
short var_24;
|
||||||
kread(hFile, &var_24, sizeof(var_24));
|
hFile.Read(&var_24, sizeof(var_24));
|
||||||
|
|
||||||
for (i = 0; i < var_24; i++)
|
for (i = 0; i < var_24; i++)
|
||||||
{
|
{
|
||||||
short var_28, var_2C;
|
short var_28, var_2C;
|
||||||
kread(hFile, &var_28, sizeof(var_28));
|
hFile.Read(&var_28, sizeof(var_28));
|
||||||
kread(hFile, &var_2C, sizeof(var_2C));
|
hFile.Read(&var_2C, sizeof(var_2C));
|
||||||
|
|
||||||
int hSound = LoadSound(&buffer[(var_2C&0x1FF)*10]);
|
int hSound = LoadSound(&buffer[(var_2C&0x1FF)*10]);
|
||||||
|
|
||||||
|
@ -297,7 +292,6 @@ int seq_ReadSequence(const char *seqName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
kclose(hFile);
|
|
||||||
return nSeqs;
|
return nSeqs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -293,7 +293,7 @@ void CalcASSPan(int nPan, int nVolume, int *pLeft, int *pRight)
|
||||||
*pRight = mulscale6(nPanTable[127-nPan], nVolume);
|
*pRight = mulscale6(nPanTable[127-nPan], nVolume);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ASSCallback(uint32_t num)
|
void ASSCallback(intptr_t num)
|
||||||
{
|
{
|
||||||
// TODO: add mutex?
|
// TODO: add mutex?
|
||||||
if ((int32_t)num == -1)
|
if ((int32_t)num == -1)
|
||||||
|
@ -345,10 +345,10 @@ void InitFX(void)
|
||||||
|
|
||||||
dig = 0;
|
dig = 0;
|
||||||
|
|
||||||
if (bNoSound)
|
if (!SoundEnabled())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (FX_Init(NumVoices, NumChannels, MixRate, initdata) != FX_Ok)
|
if (FX_Init(snd_numvoices, snd_numchannels, snd_mixrate, initdata) != FX_Ok)
|
||||||
{
|
{
|
||||||
Printf("Error initializing sound card!\n");
|
Printf("Error initializing sound card!\n");
|
||||||
initprintf("Error initializing sound card!\n");
|
initprintf("Error initializing sound card!\n");
|
||||||
|
@ -395,70 +395,6 @@ void UnInitFX()
|
||||||
FX_Shutdown();
|
FX_Shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
void InitMusic()
|
|
||||||
{
|
|
||||||
if (bNoSound)
|
|
||||||
{
|
|
||||||
mdi = 0;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
mdi = AIL_install_MDI_INI();
|
|
||||||
if (!mdi)
|
|
||||||
{
|
|
||||||
initprintf("AIL_install midi failed\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
S = AIL_allocate_sequence_handle(mdi);
|
|
||||||
if (!S)
|
|
||||||
{
|
|
||||||
initprintf("Midi handle failed");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void UnInitMusic()
|
|
||||||
{
|
|
||||||
if (mdi)
|
|
||||||
AIL_end_sequence(S);
|
|
||||||
}
|
|
||||||
|
|
||||||
void FadeSong()
|
|
||||||
{
|
|
||||||
AIL_set_sequence_volume(S, 0, 1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
int LoadSong(const char *song)
|
|
||||||
{
|
|
||||||
FILE *f;
|
|
||||||
if (!mdi)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
AIL_end_sequence(S);
|
|
||||||
f = fopen(song, "rb");
|
|
||||||
if (!f)
|
|
||||||
{
|
|
||||||
sprintf(message_text, "Unable to midi open file '%s'!\n", song);
|
|
||||||
message_timer = 1000;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fread(pMusicBuf, sizeof(pMusicBuf), 1, f) == sizeof(pMusicBuf))
|
|
||||||
{
|
|
||||||
sprintf(message_text, "Programmer error: not enough memory allocated for song file.\n");
|
|
||||||
message_timer = 1000;
|
|
||||||
fclose(f);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
fclose(f);
|
|
||||||
|
|
||||||
AIL_init_sequence(S, pMusicBuf, 0);
|
|
||||||
AIL_start_sequence(S);
|
|
||||||
AIL_set_sequence_loop_count(S, 0);
|
|
||||||
AIL_set_sequence_volume(S, gMusicVolume>>1, 0);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
void InitMusic()
|
void InitMusic()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -476,7 +412,6 @@ int LoadSong(const char *song)
|
||||||
UNREFERENCED_PARAMETER(song);
|
UNREFERENCED_PARAMETER(song);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
int LoadSound(const char *sound)
|
int LoadSound(const char *sound)
|
||||||
{
|
{
|
||||||
|
@ -506,29 +441,28 @@ int LoadSound(const char *sound)
|
||||||
|
|
||||||
strcat(buffer, ".voc");
|
strcat(buffer, ".voc");
|
||||||
|
|
||||||
buildvfs_kfd hVoc = kopen4loadfrommod(buffer, 0);
|
auto hVoc = kopenFileReader(buffer, 0);
|
||||||
|
|
||||||
if (hVoc != buildvfs_kfd_invalid)
|
if (!hVoc.isOpen())
|
||||||
{
|
{
|
||||||
int nSize = kfilelength(hVoc);
|
int nSize = hVoc.GetLength();
|
||||||
SoundLock[i] = 255; // TODO: implement cache lock properly
|
//SoundLock[i] = 255; // crap we don't need.
|
||||||
SoundLen[i] = nSize;
|
SoundLen[i] = nSize;
|
||||||
g_cache.allocateBlock((intptr_t*)&SoundBuf[i], nSize, &SoundLock[i]);
|
cacheAllocateBlock((intptr_t*)&SoundBuf[i], nSize, nullptr);
|
||||||
if (!SoundBuf[i])
|
if (!SoundBuf[i])
|
||||||
I_Error("Error allocating buf '%s' to %lld (size=%ld)!\n", buffer, (intptr_t)&SoundBuf[i], nSize);
|
I_Error("Error allocating buf '%s' to %lld (size=%ld)!\n", buffer, (intptr_t)&SoundBuf[i], nSize);
|
||||||
|
|
||||||
if (kread(hVoc, SoundBuf[i], nSize) != nSize)
|
if (hVoc.Read(SoundBuf[i], nSize) != nSize)
|
||||||
I_Error("Error reading '%s'!\n", buffer);
|
Printf("Error reading '%s'!\n", buffer);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
I_Error("Unable to open sound '%s'!\n", buffer);
|
Printf("Unable to open sound '%s'!\n", buffer);
|
||||||
SoundBuf[i] = NULL;
|
SoundBuf[i] = NULL;
|
||||||
SoundLen[i] = 0;
|
SoundLen[i] = 0;
|
||||||
//return hVoc;
|
//return hVoc;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
kclose(hVoc);
|
|
||||||
nSoundCount++;
|
nSoundCount++;
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,6 +41,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
#include "engine.h"
|
#include "engine.h"
|
||||||
#include "trigdat.h"
|
#include "trigdat.h"
|
||||||
#include "runlist.h"
|
#include "runlist.h"
|
||||||
|
#include "input.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
BEGIN_PS_NS
|
BEGIN_PS_NS
|
||||||
|
@ -586,8 +587,9 @@ void DrawView(int smoothRatio)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ((bSubTitles && !AdvanceCinemaText()) || KB_KeyDown[sc_Escape] || KB_KeyDown[sc_Return] || KB_KeyDown[sc_Space])
|
if ((bSubTitles && !AdvanceCinemaText()) || I_AdvanceTrigger())
|
||||||
{
|
{
|
||||||
|
I_AdvanceTriggerClear();
|
||||||
levelnew = levelnum + 1;
|
levelnew = levelnum + 1;
|
||||||
|
|
||||||
if (CDplaying())
|
if (CDplaying())
|
||||||
|
|
|
@ -56,22 +56,6 @@ BEGIN_SW_NS
|
||||||
|
|
||||||
int32_t NumberPlayers,CommPort,PortSpeed,IrqNumber,UartAddress;
|
int32_t NumberPlayers,CommPort,PortSpeed,IrqNumber,UartAddress;
|
||||||
|
|
||||||
//
|
|
||||||
// Sound variables
|
|
||||||
//
|
|
||||||
|
|
||||||
|
|
||||||
int32_t UseMouse = 1, UseJoystick = 0;
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Screen variables
|
|
||||||
//
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
===================
|
===================
|
||||||
=
|
=
|
||||||
|
|
|
@ -68,7 +68,6 @@ extern char UserPath[MAXUSERLEVELPATHLENGTH];
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
// controller externs
|
// controller externs
|
||||||
extern int32_t UseMouse, UseJoystick;
|
|
||||||
|
|
||||||
extern int32_t EnableRudder;
|
extern int32_t EnableRudder;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue