+/* Project 16 Source Code~\r
+ * Copyright (C) 2012-2017 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover\r
+ *\r
+ * This file is part of Project 16.\r
+ *\r
+ * Project 16 is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 3 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * Project 16 is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program. If not, see <http://www.gnu.org/licenses/>, or\r
+ * write to the Free Software Foundation, Inc., 51 Franklin Street,\r
+ * Fifth Floor, Boston, MA 02110-1301 USA.\r
+ *\r
+ */\r
+\r
+#ifndef __16_PM__\r
+#define __16_PM__\r
+\r
//\r
// ID_PM.H\r
// Header file for Id Engine's Page Manager\r
//\r
\r
-// NOTE! PMPageSize must be an even divisor of EMSPageSize, and >= 1024\r
+#include "src/lib/16_head.h"\r
+#include "src/lib/16_hc.h"\r
+#include "src/lib/16_mm.h"\r
+#include "src/lib/16_ca.h"\r
+#include <dos.h>\r
+\r
+//#define __PM__NOHOGEMS__\r
+/*// NOTE! PMPageSize must be an even divisor of EMSPageSize, and >= 1024\r
#define EMSPageSize 16384\r
#define EMSPageSizeSeg (EMSPageSize >> 4)\r
#define EMSPageSizeKB (EMSPageSize >> 10)\r
\r
typedef struct\r
{\r
- longword offset; // Offset of chunk into file\r
+ dword offset; // Offset of chunk into file\r
word length; // Length of the chunk\r
\r
int xmsPage; // If in XMS, (xmsPage * PMPageSize) gives offset into XMS handle\r
int emsPage; // If in EMS, logical page/offset into page\r
int mainPage; // If in Main, index into handle array\r
\r
- longword lastHit; // Last frame number of hit\r
+ dword lastHit; // Last frame number of hit\r
} PageListStruct;\r
\r
typedef struct\r
{\r
int baseEMSPage; // Base EMS page for this phys frame\r
- longword lastHit; // Last frame number of hit\r
+ dword lastHit; // Last frame number of hit\r
} EMSListStruct;\r
\r
extern boolean XMSPresent,EMSPresent;\r
\r
extern word ChunksInFile,\r
PMSpriteStart,PMSoundStart;\r
-extern PageListStruct far *PMPages;\r
+extern PageListStruct far *PMPages;*///moved to src/lib/typdefst.h\r
\r
#define PM_GetSoundPage(v) PM_GetPage(PMSoundStart + (v))\r
#define PM_GetSpritePage(v) PM_GetPage(PMSpriteStart + (v))\r
\r
-#define PM_LockMainMem() PM_SetMainMemPurge(0)\r
-#define PM_UnlockMainMem() PM_SetMainMemPurge(3)\r
+#define PM_LockMainMem(gvar) PM_SetMainMemPurge(0, gvar)\r
+#define PM_UnlockMainMem(gvar) PM_SetMainMemPurge(3, gvar)\r
\r
\r
extern char PageFileName[13];\r
\r
\r
-extern void PM_Startup(void),\r
- PM_Shutdown(void),\r
- PM_Reset(void),\r
- PM_Preload(boolean (*update)(word current,word total)),\r
- PM_NextFrame(void),\r
- PM_SetPageLock(int pagenum,PMLockType lock),\r
+extern void PM_Startup(global_game_variables_t *gvar),\r
+ PM_Shutdown(global_game_variables_t *gvar),\r
+ PM_Reset(global_game_variables_t *gvar),\r
+ PM_Preload(boolean (*update)(word current,word total), global_game_variables_t *gvar),\r
+ PM_NextFrame(global_game_variables_t *gvar),\r
+ PM_SetPageLock(int pagenum,PMLockType lock, global_game_variables_t *gvar),\r
PM_SetMainPurge(int level),\r
- PM_CheckMainMem(void);\r
-extern memptr PM_GetPageAddress(int pagenum),\r
- PM_GetPage(int pagenum); // Use this one to cache page\r
+ PM_CheckMainMem(global_game_variables_t *gvar);\r
+extern memptr PM_GetPageAddress(int pagenum, global_game_variables_t *gvar),\r
+ PM_GetPage(int pagenum, global_game_variables_t *gvar); // Use this one to cache page\r
\r
-void PM_SetMainMemPurge(int level);\r
+void PM_SetMainMemPurge(int level, global_game_variables_t *gvar);\r
+void PML_StartupMainMem(global_game_variables_t *gvar);\r
+#endif\r