Browse Source

[hellfire] doom.cpp bin exact (#1483)

pull/876/head
qndel 7 years ago committed by Anders Jenbo
parent
commit
d59f2d9057
  1. 78
      Source/doom.cpp
  2. 15
      Source/doom.h

78
Source/doom.cpp

@ -3,7 +3,11 @@
int doom_quest_time;
int doom_stars_drawn;
BYTE *pDoomCel;
#ifdef HELLFIRE
BOOLEAN doomflag;
#else
BOOL doomflag;
#endif
int DoomQuestState;
/*
@ -35,18 +39,67 @@ int doom_get_frame_from_time()
return DoomQuestState / 1200;
}
void doom_alloc_cel()
void doom_cleanup()
{
pDoomCel = DiabloAllocPtr(229376);
#ifdef HELLFIRE
if (pDoomCel) {
MemFreeDbg(pDoomCel);
pDoomCel = NULL;
}
#else
MemFreeDbg(pDoomCel);
#endif
}
void doom_cleanup()
void doom_init()
{
MemFreeDbg(pDoomCel);
#ifdef HELLFIRE
if (doom_alloc_cel()) {
doom_quest_time = doom_get_frame_from_time() == 31 ? 31 : 0;
if (doom_load_graphics()) {
doomflag = TRUE;
} else {
doom_close();
}
}
#else
doomflag = TRUE;
doom_alloc_cel();
doom_quest_time = doom_get_frame_from_time() == 31 ? 31 : 0;
doom_load_graphics();
#endif
}
#ifdef HELLFIRE
BOOLEAN doom_alloc_cel()
#else
void doom_alloc_cel()
#endif
{
#ifdef HELLFIRE
doom_cleanup();
pDoomCel = DiabloAllocPtr(0x39000);
return pDoomCel ? TRUE : FALSE;
#else
pDoomCel = DiabloAllocPtr(0x38000);
#endif
}
#ifdef HELLFIRE
BOOLEAN doom_load_graphics()
#else
void doom_load_graphics()
#endif
{
#ifdef HELLFIRE
BOOLEAN ret;
ret = FALSE;
strcpy(tempstr, "Items\\Map\\MapZtown.CEL");
if (LoadFileWithMem(tempstr, pDoomCel))
ret = TRUE;
return ret;
#else
if (doom_quest_time == 31) {
strcpy(tempstr, "Items\\Map\\MapZDoom.CEL");
} else if (doom_quest_time < 10) {
@ -55,22 +108,19 @@ void doom_load_graphics()
sprintf(tempstr, "Items\\Map\\MapZ00%i.CEL", doom_quest_time);
}
LoadFileWithMem(tempstr, pDoomCel);
}
void doom_init()
{
doomflag = TRUE;
doom_alloc_cel();
doom_quest_time = doom_get_frame_from_time() == 31 ? 31 : 0;
doom_load_graphics();
#endif
}
void doom_close()
{
#ifndef HELLFIRE
if (doomflag) {
#endif
doomflag = FALSE;
doom_cleanup();
#ifndef HELLFIRE
}
#endif
}
void doom_draw()
@ -78,7 +128,7 @@ void doom_draw()
if (!doomflag) {
return;
}
#ifndef HELLFIRE
if (doom_quest_time != 31) {
doom_stars_drawn++;
if (doom_stars_drawn >= 5) {
@ -90,6 +140,6 @@ void doom_draw()
doom_load_graphics();
}
}
#endif
CelDecodeOnly(SCREEN_X, PANEL_Y - 1, pDoomCel, 1, SCREEN_WIDTH);
}

15
Source/doom.h

@ -5,7 +5,11 @@
extern int doom_quest_time;
extern int doom_stars_drawn;
extern BYTE *pDoomCel;
extern int doomflag;
#ifdef HELLFIRE
extern BOOLEAN doomflag;
#else
extern BOOL doomflag;
#endif
extern int DoomQuestState;
/*
@ -13,10 +17,15 @@ void doom_reset_state();
void doom_play_movie();
*/
int doom_get_frame_from_time();
void doom_alloc_cel();
void doom_cleanup();
void doom_load_graphics();
void doom_init();
#ifdef HELLFIRE
BOOLEAN doom_alloc_cel();
BOOLEAN doom_load_graphics();
#else
void doom_alloc_cel();
void doom_load_graphics();
#endif
void doom_close();
void doom_draw();

Loading…
Cancel
Save