Fixed DJGPP mouse pointer in 8 and 16 bit.
This commit is contained in:
parent
4d0b209adc
commit
4c7be223a9
6 changed files with 52 additions and 19 deletions
|
@ -16,6 +16,9 @@
|
||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
BACKEND=DJGPP
|
||||||
|
#BACKEND=GRX
|
||||||
|
|
||||||
# General
|
# General
|
||||||
CC = gcc
|
CC = gcc
|
||||||
LD = gcc
|
LD = gcc
|
||||||
|
@ -32,7 +35,7 @@ BINDIR = bin
|
||||||
## CHANGE THIS ##
|
## CHANGE THIS ##
|
||||||
|
|
||||||
# CFLAGS, LDFLAGS, CPPFLAGS, PREFIX can be overriden on CLI
|
# CFLAGS, LDFLAGS, CPPFLAGS, PREFIX can be overriden on CLI
|
||||||
CFLAGS := $(DEBUG) -DBACKEND_DJGPP
|
CFLAGS := $(DEBUG)
|
||||||
CFLAGS += -I$(SRCDIR)/shared -I$(SRCDIR)/client/src
|
CFLAGS += -I$(SRCDIR)/shared -I$(SRCDIR)/client/src
|
||||||
CPPFLAGS :=
|
CPPFLAGS :=
|
||||||
LDFLAGS :=
|
LDFLAGS :=
|
||||||
|
@ -40,11 +43,22 @@ LDLIBS :=
|
||||||
PREFIX :=
|
PREFIX :=
|
||||||
TARGET_ARCH :=
|
TARGET_ARCH :=
|
||||||
|
|
||||||
# GRX
|
# DJGPP
|
||||||
#CFLAGS += -I$(SRCDIR)/installed/dos/include
|
ifeq ($(BACKEND),DJGPP)
|
||||||
#LDFLAGS := -L$(SRCDIR)/installed/dos/lib
|
$(info Building DJGPP Backend)
|
||||||
#LDLIBS := -lgrx20 -ljpeg -lpng -lz
|
CFLAGS += -DBACKEND_DJGPP
|
||||||
|
TARGET = vesa
|
||||||
|
endif
|
||||||
|
|
||||||
|
# GRX
|
||||||
|
ifeq ($(BACKEND),GRX)
|
||||||
|
$(info Building GRX Backend)
|
||||||
|
CFLAGS += -DBACKEND_GRX
|
||||||
|
CFLAGS += -I$(SRCDIR)/installed/dos/include
|
||||||
|
LDFLAGS := -L$(SRCDIR)/installed/dos/lib
|
||||||
|
LDLIBS := -lgrx20 -ljpeg -lpng -lz
|
||||||
|
TARGET = grx
|
||||||
|
endif
|
||||||
|
|
||||||
# Compiler Flags
|
# Compiler Flags
|
||||||
ALL_CFLAGS := $(CFLAGS)
|
ALL_CFLAGS := $(CFLAGS)
|
||||||
|
|
4
build.sh
4
build.sh
|
@ -33,4 +33,6 @@ source /opt/cross/djgpp/setenv
|
||||||
|
|
||||||
make -f Makefile.djgpp
|
make -f Makefile.djgpp
|
||||||
|
|
||||||
rm bin/client
|
[[ -f bin/client ]] && rm bin/client
|
||||||
|
[[ -f bin/vesa ]] && rm bin/vesa
|
||||||
|
[[ -f bin/grx ]] && rm bin/grx
|
||||||
|
|
|
@ -13,10 +13,10 @@ int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
if (guiStartup(800, 600, 32) == SUCCESS) {
|
if (guiStartup(800, 600, 32) == SUCCESS) {
|
||||||
i = 1;
|
i = 1;
|
||||||
//for (i=1; i<4; i++) {
|
for (i=1; i<4; i++) {
|
||||||
sprintf(title, "Testing %d", i);
|
sprintf(title, "Testing %d", i);
|
||||||
windowCreate(i * 50, i * 50, 300, 200, title, WIN_CLOSE | WIN_MAXIMIZE | WIN_MINIMIZE | WIN_RESIZE);
|
windowCreate(i * 50, i * 50, 300, 200, title, WIN_CLOSE | WIN_MAXIMIZE | WIN_MINIMIZE | WIN_RESIZE);
|
||||||
//}
|
}
|
||||||
guiRun();
|
guiRun();
|
||||||
guiShutdown();
|
guiShutdown();
|
||||||
}
|
}
|
||||||
|
|
|
@ -176,12 +176,17 @@ static uint16_t vbeSelectModeNumber(uint16_t xRes, uint16_t yRes, uint8_t b
|
||||||
static VBESurfaceT *vbeSetMode(uint16_t vbeModeNumber);
|
static VBESurfaceT *vbeSetMode(uint16_t vbeModeNumber);
|
||||||
static uint16_t vbeSetScanlineLength(uint16_t pixelLength);
|
static uint16_t vbeSetScanlineLength(uint16_t pixelLength);
|
||||||
|
|
||||||
|
static ColorT videoSurfacePixelGet8(SurfaceT *surface, int16_t x, int16_t y);
|
||||||
|
static ColorT videoSurfacePixelGet16(SurfaceT *surface, int16_t x, int16_t y);
|
||||||
|
static ColorT videoSurfacePixelGet32(SurfaceT *surface, int16_t x, int16_t y);
|
||||||
|
|
||||||
static void videoSurfacePixelSet8(uint16_t x, uint16_t y, ColorT color);
|
static void videoSurfacePixelSet8(uint16_t x, uint16_t y, ColorT color);
|
||||||
static void videoSurfacePixelSet16(uint16_t x, uint16_t y, ColorT color);
|
static void videoSurfacePixelSet16(uint16_t x, uint16_t y, ColorT color);
|
||||||
static void videoSurfacePixelSet32(uint16_t x, uint16_t y, ColorT color);
|
static void videoSurfacePixelSet32(uint16_t x, uint16_t y, ColorT color);
|
||||||
|
|
||||||
static void (*pmVBESetDisplayStart)(void);
|
static void (*pmVBESetDisplayStart)(void);
|
||||||
|
|
||||||
|
ColorT (*videoSurfacePixelGet)(SurfaceT *surface, int16_t x, int16_t y);
|
||||||
void (*videoSurfacePixelSet)(uint16_t x, uint16_t y, ColorT color);
|
void (*videoSurfacePixelSet)(uint16_t x, uint16_t y, ColorT color);
|
||||||
|
|
||||||
|
|
||||||
|
@ -370,10 +375,10 @@ uint8_t platformStartup(int16_t width, int16_t height, int16_t depth) {
|
||||||
return FAIL;
|
return FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_vbeSurface.bitsPerPixel == 8) videoSurfacePixelSet = videoSurfacePixelSet8;
|
if (_vbeSurface.bitsPerPixel == 8) { videoSurfacePixelSet = videoSurfacePixelSet8; videoSurfacePixelGet = videoSurfacePixelGet8; }
|
||||||
if (_vbeSurface.bitsPerPixel == 16) videoSurfacePixelSet = videoSurfacePixelSet16;
|
if (_vbeSurface.bitsPerPixel == 16) { videoSurfacePixelSet = videoSurfacePixelSet16; videoSurfacePixelGet = videoSurfacePixelGet16; }
|
||||||
if (_vbeSurface.bitsPerPixel == 15) videoSurfacePixelSet = videoSurfacePixelSet16;
|
if (_vbeSurface.bitsPerPixel == 15) { videoSurfacePixelSet = videoSurfacePixelSet16; videoSurfacePixelGet = videoSurfacePixelGet16; }
|
||||||
if (_vbeSurface.bitsPerPixel == 32) videoSurfacePixelSet = videoSurfacePixelSet32;
|
if (_vbeSurface.bitsPerPixel == 32) { videoSurfacePixelSet = videoSurfacePixelSet32; videoSurfacePixelGet = videoSurfacePixelGet32; }
|
||||||
|
|
||||||
__guiBaseColors = (ColorT *)malloc(sizeof(ColorT) * 16);
|
__guiBaseColors = (ColorT *)malloc(sizeof(ColorT) * 16);
|
||||||
for (i=0; i<16; i++) {
|
for (i=0; i<16; i++) {
|
||||||
|
@ -828,7 +833,7 @@ void videoSurfaceBlitWithTransparency(SurfaceT *target, int16_t targetX, int16_t
|
||||||
|
|
||||||
for (y1=0; y1<y2; y1++) {
|
for (y1=0; y1<y2; y1++) {
|
||||||
for (x1=0; x1<x2; x1++) {
|
for (x1=0; x1<x2; x1++) {
|
||||||
pixel = source->buffer.bits32[y1 * source->width + x1];
|
pixel = videoSurfacePixelGet(source, x1, y1);
|
||||||
if (transparent != pixel) {
|
if (transparent != pixel) {
|
||||||
videoSurfacePixelSet(targetX + x1, targetY + y1, pixel);
|
videoSurfacePixelSet(targetX + x1, targetY + y1, pixel);
|
||||||
}
|
}
|
||||||
|
@ -970,7 +975,17 @@ void videoSurfaceLineV(int16_t x, int16_t y1, int16_t y2, ColorT c) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ColorT videoSurfacePixelGet(SurfaceT *surface, int16_t x, int16_t y) {
|
static ColorT videoSurfacePixelGet8(SurfaceT *surface, int16_t x, int16_t y) {
|
||||||
|
return surface->buffer.bits8[y * surface->width + x];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static ColorT videoSurfacePixelGet16(SurfaceT *surface, int16_t x, int16_t y) {
|
||||||
|
return surface->buffer.bits16[y * surface->width + x];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static ColorT videoSurfacePixelGet32(SurfaceT *surface, int16_t x, int16_t y) {
|
||||||
return surface->buffer.bits32[y * surface->width + x];
|
return surface->buffer.bits32[y * surface->width + x];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,7 @@ typedef struct EventS {
|
||||||
#define KEY_ESC 27
|
#define KEY_ESC 27
|
||||||
|
|
||||||
|
|
||||||
|
extern ColorT (*videoSurfacePixelGet)(SurfaceT *surface, int16_t x, int16_t y);
|
||||||
extern void (*videoSurfacePixelSet)(uint16_t x, uint16_t y, ColorT color);
|
extern void (*videoSurfacePixelSet)(uint16_t x, uint16_t y, ColorT color);
|
||||||
|
|
||||||
|
|
||||||
|
@ -65,7 +66,6 @@ SurfaceT *videoSurfaceGet(void);
|
||||||
int16_t videoSurfaceHeightGet(SurfaceT *surface);
|
int16_t videoSurfaceHeightGet(SurfaceT *surface);
|
||||||
void videoSurfaceLineH(int16_t x1, int16_t y1, int16_t x, ColorT c);
|
void videoSurfaceLineH(int16_t x1, int16_t y1, int16_t x, ColorT c);
|
||||||
void videoSurfaceLineV(int16_t x, int16_t x2, int16_t y2, ColorT c);
|
void videoSurfaceLineV(int16_t x, int16_t x2, int16_t y2, ColorT c);
|
||||||
ColorT videoSurfacePixelGet(SurfaceT *surface, int16_t x, int16_t y);
|
|
||||||
void videoSurfaceSet(SurfaceT *surface);
|
void videoSurfaceSet(SurfaceT *surface);
|
||||||
SurfaceT *videoSurfaceScreenGet(void);
|
SurfaceT *videoSurfaceScreenGet(void);
|
||||||
int16_t videoSurfaceWidthGet(SurfaceT *surface);
|
int16_t videoSurfaceWidthGet(SurfaceT *surface);
|
||||||
|
|
|
@ -26,10 +26,10 @@ void platformShutdown(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void platformStartup(int16_t width, int16_t height, int16_t depth) {
|
uint8_t platformStartup(int16_t width, int16_t height, int16_t depth) {
|
||||||
// Set up graphics environment.
|
// Set up graphics environment.
|
||||||
if (!GrSetMode(GR_width_height_bpp_graphics, width, height, depth)) {
|
if (!GrSetMode(GR_width_height_bpp_graphics, width, height, depth)) {
|
||||||
//***TODO*** Die
|
return FAIL;
|
||||||
}
|
}
|
||||||
GrSetRGBcolorMode();
|
GrSetRGBcolorMode();
|
||||||
__guiBaseColors = GrAllocEgaColors(); // This does not need released.
|
__guiBaseColors = GrAllocEgaColors(); // This does not need released.
|
||||||
|
@ -40,6 +40,8 @@ void platformStartup(int16_t width, int16_t height, int16_t depth) {
|
||||||
GrMouseSetCursorMode(GR_M_CUR_NORMAL);
|
GrMouseSetCursorMode(GR_M_CUR_NORMAL);
|
||||||
// This is a total hack to prevent GRX from drawing the mouse pointer.
|
// This is a total hack to prevent GRX from drawing the mouse pointer.
|
||||||
_GrMouseInfo.cursor = 0;
|
_GrMouseInfo.cursor = 0;
|
||||||
|
|
||||||
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue