cool-bun-demo/screen.h

52 lines
1.1 KiB
C

#ifndef __SCREEN_H__
#define __SCREEN_H__
#include "types.h"
#define SCREEN_WIDTH (320)
#define SCREEN_HEIGHT (256)
struct ScreenDefinition {
// human entered
uint16_t width;
uint16_t height;
short int bitplanes;
// calculated
unsigned char *memoryStart;
uint16_t byteWidth;
uint16_t nextBitplaneAdvance;
uint16_t nextBufferAdvance;
};
struct ActiveScreenBufferDetails {
uint16_t currentBuffer;
unsigned char *planes[8];
};
void allocateDoubleBufferedScreenMemory(
struct ScreenDefinition *screenSetup,
struct ActiveScreenBufferDetails *currentScreen,
uint16_t width,
uint16_t height,
uint8_t bitplanes
);
void teardownScreen(struct ScreenDefinition *screenSetup);
void setActiveScreenBuffer(
struct ScreenDefinition *screenSetup,
struct ActiveScreenBufferDetails *currentScreen,
short int buffer
);
void swapCurrentScreenBuffer(
struct ScreenDefinition *screenSetup,
struct ActiveScreenBufferDetails *currentScreen
);
void setupInitialCurrentScreen(
struct ScreenDefinition *screenSetup,
struct ActiveScreenBufferDetails *currentScreen
);
#endif