8bitworkshop/presets/atari7800/dll.h

47 lines
1.2 KiB
C

#ifndef _DLL_H
#define _DLL_H
#include "atari7800.h"
#define DLL_FLAGS DLL_H16 // 4k DMA holes
#define SLOTHEIGHT 16 // lines per display list
#define SLOTSIZE 32 // bytes per display list
#define SLOTSPERPAGE 16 // display lists per page
#define DOUBLEBUFFER // double buffer (2 pages)
#define DLSAVE // enable save buffer
#ifdef DOUBLEBUFFER
#define NUMPAGES 2
#else
#define NUMPAGES 1
#endif
#define NUMSLOTS (SLOTSPERPAGE*NUMPAGES)
extern DLLEntry DLL[NUMSLOTS]; // display list list
extern byte DL[NUMSLOTS][SLOTSIZE]; // display list slots
extern byte DL_len[NUMSLOTS]; // current bytes in each slot
#ifdef DLSAVE
extern byte DL_save[NUMSLOTS]; // save lengths of each slot
#endif
// set current page (0 or 1)
#define dll_page(page) (slot0 = (page)*SLOTSPERPAGE)
extern byte slot0;
void dll_setup(void);
void dll_add_string(const char* str, byte x, byte y, byte wpal);
void dll_add_sprite(word addr, byte x, byte y, byte wpal);
sbyte dll_bytesleft(byte slot);
void* dll_alloc(byte slot, byte len);
void dll_set_scroll(byte y);
void dll_save(void);
void dll_restore(void);
void dll_restore_all(void);
void dll_clear(void);
void dll_swap(void);
void dll_copy(void);
#endif