cool-bun-demo/system/blitter.h

82 lines
1.4 KiB
C
Raw Normal View History

2024-05-02 16:52:06 +00:00
#ifndef __BLITTER_H__
#define __BLITTER_H__
#include "types.h"
#include "screen.h"
2024-05-29 11:57:08 +00:00
/*
2024-05-02 16:52:06 +00:00
struct BlitAreaDetails {
unsigned char *target;
uint16_t drawAreaWidth;
uint16_t nextBitplaneAdvance;
uint8_t contiguousBitplanes;
};
struct BlitDrawLineSetup {
uint16_t linePattern;
unsigned char *target;
int dx, dy, sx;
int sud, sul, aul, accumulator, sign;
};
void blit_fillAreaDetailsFromScreenSetup(
struct ScreenSetup *screenSetup,
struct BlitAreaDetails *blitAreaDetails
);
void blit_calculateLineBlit(
struct BlitDrawLineSetup *setup,
uint16_t sx,
uint16_t sy,
uint16_t ex,
uint16_t ey
);
void blit_drawLine(
struct BlitAreaDetails *blitAreaDetails,
struct BlitDrawLineSetup *setup,
uint16_t sx,
uint16_t sy,
uint16_t ex,
uint16_t ey,
uint8_t color
);
void blit_copyOneToOne(
struct BlitAreaDetails *source,
struct BlitAreaDetails *target,
uint16_t sx,
uint16_t sy,
uint16_t ex,
uint16_t ey,
uint16_t tx,
uint16_t ty
);
void blit_howDoesFWMandLWMWork(
2024-05-27 18:58:13 +00:00
struct BlitAreaDetails *source,
2024-05-02 16:52:06 +00:00
struct BlitAreaDetails *target
);
2024-05-27 18:58:13 +00:00
struct BlitGenericData {
int8_t shift, leftShift;
uint16_t width, height;
uint16_t heightStart, targetHeightStart;
uint16_t wordSource, wordTarget;
uint16_t firstWordMask, lastWordMask;
};
void blit_marquee(
struct BlitAreaDetails *source,
struct BlitGenericData *data,
uint16_t splitPoint,
uint16_t ex,
uint16_t ey,
uint16_t ty
);
2024-05-29 11:57:08 +00:00
*/
2024-05-27 18:58:13 +00:00
2024-05-02 16:52:06 +00:00
#endif