3 // Header file for Id Engine's Page Manager
\r
6 #include "src/lib/16_head.h"
\r
7 #include "src/lib/16_hc.h"
\r
8 #include "src/lib/16_mm.h"
\r
11 /*// NOTE! PMPageSize must be an even divisor of EMSPageSize, and >= 1024
\r
12 #define EMSPageSize 16384
\r
13 #define EMSPageSizeSeg (EMSPageSize >> 4)
\r
14 #define EMSPageSizeKB (EMSPageSize >> 10)
\r
15 #define EMSFrameCount 4
\r
16 #define PMPageSize 4096
\r
17 #define PMPageSizeSeg (PMPageSize >> 4)
\r
18 #define PMPageSizeKB (PMPageSize >> 10)
\r
19 #define PMEMSSubPage (EMSPageSize / PMPageSize)
\r
21 #define PMMinMainMem 10 // Min acceptable # of pages from main
\r
22 #define PMMaxMainMem 100 // Max number of pages in main memory
\r
24 #define PMThrashThreshold 1 // Number of page thrashes before panic mode
\r
25 #define PMUnThrashThreshold 5 // Number of non-thrashing frames before leaving panic mode
\r
42 dword offset; // Offset of chunk into file
\r
43 word length; // Length of the chunk
\r
45 int xmsPage; // If in XMS, (xmsPage * PMPageSize) gives offset into XMS handle
\r
47 PMLockType locked; // If set, this page can't be purged
\r
48 int emsPage; // If in EMS, logical page/offset into page
\r
49 int mainPage; // If in Main, index into handle array
\r
51 dword lastHit; // Last frame number of hit
\r
56 int baseEMSPage; // Base EMS page for this phys frame
\r
57 dword lastHit; // Last frame number of hit
\r
60 extern boolean XMSPresent,EMSPresent;
\r
61 extern word XMSPagesAvail,EMSPagesAvail;
\r
63 extern word ChunksInFile,
\r
64 PMSpriteStart,PMSoundStart;
\r
65 extern PageListStruct far *PMPages;*///moved to src/lib/typdefst.h
\r
67 #define PM_GetSoundPage(v) PM_GetPage(PMSoundStart + (v))
\r
68 #define PM_GetSpritePage(v) PM_GetPage(PMSpriteStart + (v))
\r
70 #define PM_LockMainMem() PM_SetMainMemPurge(0)
\r
71 #define PM_UnlockMainMem() PM_SetMainMemPurge(3)
\r
74 extern char PageFileName[13];
\r
77 extern void PM_Startup(void),
\r
80 PM_Preload(boolean (*update)(word current,word total)),
\r
82 PM_SetPageLock(int pagenum,PMLockType lock),
\r
83 PM_SetMainPurge(int level),
\r
84 PM_CheckMainMem(void);
\r
85 extern memptr PM_GetPageAddress(int pagenum),
\r
86 PM_GetPage(int pagenum); // Use this one to cache page
\r
88 PM_SetMainMemPurge(int level, global_game_variables_t *gvar);
\r