e28d1fe916
There are some real bugs in here, but we're drowning in warnings. Change-Id: I7c2c0eafc8426327521bdd8a3ac2d3742ac16864
58 lines
1.2 KiB
C
58 lines
1.2 KiB
C
#ifndef __ID_PM__
|
|
#define __ID_PM__
|
|
|
|
#ifdef USE_HIRES
|
|
#define PMPageSize 16384
|
|
#else
|
|
#define PMPageSize 4096
|
|
#endif
|
|
|
|
extern int ChunksInFile;
|
|
extern int PMSpriteStart;
|
|
extern int PMSoundStart;
|
|
|
|
extern bool PMSoundInfoPagePadded;
|
|
|
|
// ChunksInFile+1 pointers to page starts.
|
|
// The last pointer points one byte after the last page.
|
|
extern uint8_t **PMPages;
|
|
|
|
void PM_Startup(void);
|
|
void PM_Shutdown(void);
|
|
|
|
static inline uint32_t PM_GetPageSize(int page)
|
|
{
|
|
if(page < 0 || page >= ChunksInFile)
|
|
Quit("PM_GetPageSize: Tried to access illegal page: %i", page);
|
|
return (uint32_t) (PMPages[page + 1] - PMPages[page]);
|
|
}
|
|
|
|
static inline uint8_t *PM_GetPage(int page)
|
|
{
|
|
if(page < 0 || page >= ChunksInFile)
|
|
Quit("PM_GetPage: Tried to access illegal page: %i", page);
|
|
return PMPages[page];
|
|
}
|
|
|
|
static inline uint8_t *PM_GetEnd(void)
|
|
{
|
|
return PMPages[ChunksInFile];
|
|
}
|
|
|
|
static inline byte *PM_GetTexture(int wallpic)
|
|
{
|
|
return PM_GetPage(wallpic);
|
|
}
|
|
|
|
static inline uint16_t *PM_GetSprite(int shapenum)
|
|
{
|
|
// correct alignment is enforced by PM_Startup()
|
|
return (uint16_t *) (void *) PM_GetPage(PMSpriteStart + shapenum);
|
|
}
|
|
|
|
static inline byte *PM_GetSound(int soundpagenum)
|
|
{
|
|
return PM_GetPage(PMSoundStart + soundpagenum);
|
|
}
|
|
|
|
#endif
|