More changes to support JoeyDev. All targets need updating before they'll work again.

This commit is contained in:
Scott Duensing 2021-05-15 19:42:19 -05:00
parent 6f88d4ae69
commit b76e19467c
5 changed files with 77 additions and 61 deletions

View file

@ -26,12 +26,16 @@
#include "joey.h" #include "joey.h"
extern jbool _jlIsRunning;
extern jlMemoryBlockT _jlMemoryBlocks[JOEY_MEM_BLOCKS]; extern jlMemoryBlockT _jlMemoryBlocks[JOEY_MEM_BLOCKS];
extern long _jlTotalAllocations; extern long _jlTotalAllocations;
extern long _jlTotalFrees; extern long _jlTotalFrees;
jbool jlUtilMustExit(void) {
return _jlUtilMustExit(JOEY_DEV_HANDLE);
}
void jlUtilSay(char *format, ...) { void jlUtilSay(char *format, ...) {
va_list va; va_list va;
va_start(va, format); va_start(va, format);
@ -40,19 +44,16 @@ void jlUtilSay(char *format, ...) {
} }
void SetJLMustExitHelper(void) {
printf("Setting Must Exit Flag!\n");
_jlIsRunning = jfalse;
}
void main(void) { void main(void) {
int i; int i;
jPixBufStart(); jPixBufStart();
joeyMain();
jPixBufStop();
if (!setjmp(_jlJumpBuffer)) {
joeyMain();
}
jPixBufStop();
jlUtilDie("Clean Exit."); jlUtilDie("Clean Exit.");
if (_jlTotalAllocations > _jlTotalFrees) { if (_jlTotalAllocations > _jlTotalFrees) {

View file

@ -38,8 +38,8 @@ extern void _jlDisplayPresent(uint32_t handle, void *image); // void so we d
extern jint16 _jlGameGetAxis(uint32_t handle, jbyte which); extern jint16 _jlGameGetAxis(uint32_t handle, jbyte which);
extern jbool _jlGameGetButton(uint32_t handle, jbyte which); extern jbool _jlGameGetButton(uint32_t handle, jbyte which);
extern jbool _jlKeyPressed(uint32_t handle); extern jbool _jlKeyPressed(uint32_t handle);
extern char _jlUtilMustExit(uint32_t handle);
extern char _jlKeyRead(uint32_t handle); extern char _jlKeyRead(uint32_t handle);
//extern jbool _jlUtilMustExit(uint32_t handle);
extern void _jlUtilSay(uint32_t handle, char *format, va_list args); extern void _jlUtilSay(uint32_t handle, char *format, va_list args);
extern juint16 _jlUtilTimer(uint32_t handle); extern juint16 _jlUtilTimer(uint32_t handle);
extern void _jlUtilTitleSet(uint32_t handle, char *title); extern void _jlUtilTitleSet(uint32_t handle, char *title);
@ -49,14 +49,12 @@ extern void _jlUtilTitleSet(uint32_t handle, char *title);
#define jlGameGetButton(w) _jlGameGetButton(JOEY_DEV_HANDLE, w) #define jlGameGetButton(w) _jlGameGetButton(JOEY_DEV_HANDLE, w)
#define jlKeyPressed() _jlKeyPressed(JOEY_DEV_HANDLE) #define jlKeyPressed() _jlKeyPressed(JOEY_DEV_HANDLE)
#define jlKeyRead() _jlKeyRead(JOEY_DEV_HANDLE) #define jlKeyRead() _jlKeyRead(JOEY_DEV_HANDLE)
//#define jlUtilMustExit() _jlUtilMustExit(JOEY_DEV_HANDLE)
//#define jlUtilSay(m, ...) _jlUtilSay(JOEY_DEV_HANDLE, m, __VA_ARGS__)
#define jlUtilTimer() _jlUtilTimer(JOEY_DEV_HANDLE) #define jlUtilTimer() _jlUtilTimer(JOEY_DEV_HANDLE)
#define jlUtilTitleSet(t) _jlUtilTitleSet(JOEY_DEV_HANDLE, t) #define jlUtilTitleSet(t) _jlUtilTitleSet(JOEY_DEV_HANDLE, t)
void jlUtilSay(char *format, ...);
void SetJLMustExitHelper(void); jbool jlUtilMustExit(void);
void jlUtilSay(char *format, ...);
// TCC Standard Library Replacement // TCC Standard Library Replacement

View file

@ -31,7 +31,8 @@
#endif #endif
jlImgT *_jlBackingStore = NULL; // 4 bit representation jlImgT *_jlBackingStore = NULL; // 4 bit representation
jbool _jlPixBufStarted = jfalse;
void jlDrawBlit8x8(jlSurfaceT source, jint16 sx, jint16 sy, jint16 tx, jint16 ty) { void jlDrawBlit8x8(jlSurfaceT source, jint16 sx, jint16 sy, jint16 tx, jint16 ty) {
@ -153,12 +154,12 @@ void jlDrawSurfaceSet(jlSurfaceT target) {
} }
jbool _jlImgCreate(jlImgT **img) { jbool _jlImgCreate(jlImgT **img, jint16 line, char *file) {
jlImgT *t = NULL; jlImgT *t = NULL;
// Are we loading into a new image? // Are we loading into a new image?
if (*img == NULL) { if (*img == NULL) {
t = (jlImgT *)jlMalloc(sizeof(jlImgT)); t = (jlImgT *)jlMallocEx(sizeof(jlImgT), line, file);
if (t == NULL) { if (t == NULL) {
return jfalse; return jfalse;
} }
@ -198,17 +199,27 @@ void jlPaletteSetFromImg(jlImgT *img) {
void jPixBufStart(void) { void jPixBufStart(void) {
// Create backing store if (!_jlPixBufStarted) {
jlImgCreate(_jlBackingStore); // Create backing store
jlPaletteDefault(); jlImgCreate(_jlBackingStore);
jlDrawSurfaceSet(JOEY_DISPLAY); jlPaletteDefault();
jlDrawColorSet(0); jlDrawSurfaceSet(JOEY_DISPLAY);
jlDrawClear(); jlDrawColorSet(0);
jlDrawColorSet(15); jlDrawClear();
jlDisplayPresent(); jlDrawColorSet(15);
jlDisplayPresent();
_jlPixBufStarted = jtrue;
}
} }
#include <stdio.h>
void jPixBufStop(void) { void jPixBufStop(void) {
jlImgFree(_jlBackingStore); if (_jlPixBufStarted) {
//***TODO*** For some reason, jlImgFree is NOT setting _jlBackingStore to NULL. BAD.
//printf("Calling jlImgFree on %p\n", _jlBackingStore);
jlImgFree(_jlBackingStore);
//printf("Back from jlImgFree\n");
_jlPixBufStarted = jfalse;
}
} }

View file

@ -76,6 +76,7 @@ jbyte _jlDrawColor = 15; // Color in lower nibble only
jbyte _jlDrawColorNibbles = (15 << 4) + 15; // Color in both nibbles jbyte _jlDrawColorNibbles = (15 << 4) + 15; // Color in both nibbles
jbyte _jlBorderColor = 0; jbyte _jlBorderColor = 0;
char _jlTempString[1024]; // Used internally for pathname operations char _jlTempString[1024]; // Used internally for pathname operations
jmp_buf _jlJumpBuffer;
#ifndef JL_HAS_UTILMUSTEXIT #ifndef JL_HAS_UTILMUSTEXIT
jbool _jlIsRunning = jtrue; jbool _jlIsRunning = jtrue;
@ -122,7 +123,6 @@ void _jlFree(void **pointer) {
if (i >= JOEY_MEM_BLOCKS) jlUtilDie("Block not found in jlFree()!"); if (i >= JOEY_MEM_BLOCKS) jlUtilDie("Block not found in jlFree()!");
free(*pointer); free(*pointer);
*pointer = NULL;
} }
} }
@ -611,11 +611,11 @@ jbool jlGameGetButton(jbyte which) {
#ifndef JL_HAS_IMGCOPY #ifndef JL_HAS_IMGCOPY
jbool _jlImgCopy(jlImgT *source, jlImgT **target) { jbool _jlImgCopy(jlImgT *source, jlImgT **target, jint16 line, char *file) {
jlImgT *t = NULL; jlImgT *t = NULL;
// Are we copying into a new image? // Are we copying into a new image?
if (*target == NULL) { if (*target == NULL) {
t = (jlImgT *)jlMalloc(sizeof(jlImgT)); t = (jlImgT *)jlMallocEx(sizeof(jlImgT), line, file);
if (t == NULL) { if (t == NULL) {
return jfalse; return jfalse;
} }
@ -628,8 +628,10 @@ jbool _jlImgCopy(jlImgT *source, jlImgT **target) {
#ifndef JL_HAS_IMGCREATE #ifndef JL_HAS_IMGCREATE
jbool _jlImgCreate(jlImgT **img) { jbool _jlImgCreate(jlImgT **img, jint16 line, char *file) {
(void)img; (void)img;
(void)line;
(void)file;
return jfalse; return jfalse;
} }
#endif #endif
@ -652,14 +654,14 @@ void jlImgFree(jlImgT *img) {
#ifndef JL_HAS_IMGLOAD #ifndef JL_HAS_IMGLOAD
jbool _jlImgLoad(jlImgT **img, char *filename) { jbool _jlImgLoad(jlImgT **img, char *filename, jint16 line, char *file) {
jbool result = jfalse; jbool result = jfalse;
jlImgT *s = NULL; jlImgT *s = NULL;
FILE *f = NULL; FILE *f = NULL;
// Are we loading into a new image? // Are we loading into a new image?
if (*img == NULL) { if (*img == NULL) {
s = (jlImgT *)jlMalloc(sizeof(jlImgT)); s = (jlImgT *)jlMallocEx(sizeof(jlImgT), line, file);
if (s == NULL) { if (s == NULL) {
return result; return result;
} }
@ -878,14 +880,14 @@ void jlStnFree(jlStnT *stn) {
#ifndef JL_HAS_STNLOAD #ifndef JL_HAS_STNLOAD
jbool _jlStnLoad(jlStnT **stn, char *filename) { jbool _jlStnLoad(jlStnT **stn, char *filename, jint16 line, char *file) {
jbool result = jfalse; jbool result = jfalse;
jlStnT *s = NULL; jlStnT *s = NULL;
FILE *f = NULL; FILE *f = NULL;
// Are we loading into a new stencil? // Are we loading into a new stencil?
if (*stn == NULL) { if (*stn == NULL) {
s = (jlStnT *)jlMalloc(sizeof(jlStnT)); s = (jlStnT *)jlMallocEx(sizeof(jlStnT), line, file);
if (s == NULL) { if (s == NULL) {
return result; return result;
} }
@ -938,15 +940,13 @@ void jlUtilDie(const char *why, ...) {
} }
jlUtilSay(""); jlUtilSay("");
jlUtilSay("%s", msg); jlUtilSay("%s", msg);
}
#ifdef JOEY_TOOLS
#ifndef JL_HAS_UTILMUSTEXIT #ifndef JL_HAS_UTILMUSTEXIT
_jlIsRunning = jfalse; _jlIsRunning = jfalse;
#endif
#else
exit(0);
#endif #endif
longjmp(_jlJumpBuffer, 1);
}
} }
#endif #endif
@ -1009,11 +1009,15 @@ jbool jlUtilInputRead(jbyte *key) {
// Primary // Primary
case 13: case 13:
case 'z':
case 'Z':
*key = JOEY_INPUT_PRIMARY; *key = JOEY_INPUT_PRIMARY;
break; break;
// Secondary // Secondary
case 27: case 27:
case 'x':
case 'X':
*key = JOEY_INPUT_SECONDARY; *key = JOEY_INPUT_SECONDARY;
break; break;
} }
@ -1077,8 +1081,6 @@ char *jlUtilMakePathname(char *filename, char *extension) {
strcat(_jlTempString, extension); strcat(_jlTempString, extension);
} }
printf("%s\n", _jlTempString);
return _jlTempString; return _jlTempString;
} }
#endif #endif
@ -1189,9 +1191,9 @@ void *_jlUtilStackPop(jlStackT **stack) {
#ifndef JL_HAS_UTILSTACKPUSH #ifndef JL_HAS_UTILSTACKPUSH
void _jlUtilStackPush(jlStackT **stack, void *data) { void _jlUtilStackPush(jlStackT **stack, void *data, jint16 line, char *file) {
jlStackT *s = NULL; jlStackT *s = NULL;
s = (jlStackT *)jlMalloc(sizeof(jlStackT)); s = (jlStackT *)jlMallocEx(sizeof(jlStackT), line, file);
s->previous = *stack; s->previous = *stack;
s->data = data; s->data = data;
*stack = s; *stack = s;
@ -1353,7 +1355,7 @@ void jlVecFree(jlVecT *vec) {
#ifndef JL_HAS_VECLOAD #ifndef JL_HAS_VECLOAD
jbool _jlVecLoad(jlVecT **vec, char *filename) { jbool _jlVecLoad(jlVecT **vec, char *filename, jint16 line, char *file) {
jbool result = jfalse; jbool result = jfalse;
jlVecT *v = NULL; jlVecT *v = NULL;
FILE *f = NULL; FILE *f = NULL;
@ -1363,7 +1365,7 @@ jbool _jlVecLoad(jlVecT **vec, char *filename) {
if (*vec != NULL) { if (*vec != NULL) {
jlVecFree(*vec); jlVecFree(*vec);
} }
v = (jlVecT *)jlMalloc(sizeof(jlVecT)); v = (jlVecT *)jlMallocEx(sizeof(jlVecT), line, file);
if (v == NULL) { if (v == NULL) {
return result; return result;
} }

View file

@ -32,6 +32,7 @@ extern "C" {
#include <stdlib.h> #include <stdlib.h>
#include <setjmp.h>
typedef unsigned char jbool; typedef unsigned char jbool;
@ -266,6 +267,7 @@ extern jbyte _jlDrawColor;
extern jbyte _jlDrawColorNibbles; extern jbyte _jlDrawColorNibbles;
extern jbyte _jlBorderColor; extern jbyte _jlBorderColor;
extern char _jlTempString[1024]; extern char _jlTempString[1024];
extern jmp_buf _jlJumpBuffer;
enum _jlBorderColorsE { enum _jlBorderColorsE {
@ -343,10 +345,11 @@ typedef struct {
jint16 line; jint16 line;
} jlMemoryBlockT; } jlMemoryBlockT;
#define jlFree(p) _jlFree((void **)&(p)) #define jlFree(p) _jlFree((void **)&(p)); p = 0
void _jlFree(void **pointer); void _jlFree(void **pointer);
#define jlMalloc(s) _jlMalloc(s, __LINE__, __FILE__) #define jlMalloc(s) _jlMalloc(s, __LINE__, (char *)__FILE__)
#define jlMallocEx(s, l, f) _jlMalloc(s, l, (char *)f)
void *_jlMalloc(size_t size, jint16 line, char *file); void *_jlMalloc(size_t size, jint16 line, char *file);
#define jlRealloc(p, s) _jlRealloc(p, s) #define jlRealloc(p, s) _jlRealloc(p, s)
@ -354,7 +357,7 @@ void *_jlRealloc(void *pointer, size_t size);
#else #else
#define jlFree free #define jlFree(p) free(p); p = 0
#define jlMalloc malloc #define jlMalloc malloc
#endif #endif
@ -384,14 +387,14 @@ void jlDrawSurfaceSet(jlSurfaceT target);
jint16 jlGameGetAxis(jbyte which); jint16 jlGameGetAxis(jbyte which);
jbool jlGameGetButton(jbyte which); jbool jlGameGetButton(jbyte which);
#define jlImgCopy(source, target) _jlImgCopy(source, (jlImgT **)&(target)) // Syntatic Sugar #define jlImgCopy(source, target) _jlImgCopy(source, (jlImgT **)&(target), __LINE__, (char *)__FILE__) // Syntatic Sugar
jbool _jlImgCopy(jlImgT *source, jlImgT **target); jbool _jlImgCopy(jlImgT *source, jlImgT **target, jint16 line, char *file);
#define jlImgCreate(img) _jlImgCreate((jlImgT **)&(img)) // Syntatic Sugar #define jlImgCreate(img) _jlImgCreate((jlImgT **)&(img), __LINE__, (char *)__FILE__) // Syntatic Sugar
jbool _jlImgCreate(jlImgT **img); jbool _jlImgCreate(jlImgT **img, jint16 line, char *file);
void jlImgDisplay(jlImgT *img); void jlImgDisplay(jlImgT *img);
void jlImgFree(jlImgT *img); void jlImgFree(jlImgT *img);
#define jlImgLoad(img, filename) _jlImgLoad((jlImgT **)&(img), filename) // Syntatic Sugar #define jlImgLoad(img, filename) _jlImgLoad((jlImgT **)&(img), filename, __LINE__, (char *)__FILE__) // Syntatic Sugar
jbool _jlImgLoad(jlImgT **img, char *filename); jbool _jlImgLoad(jlImgT **img, char *filename, jint16 line, char *file);
#define jlImgSave(img, filename) _jlImgSave(img, filename) // Needed so we can redefined it for JoeyDev #define jlImgSave(img, filename) _jlImgSave(img, filename) // Needed so we can redefined it for JoeyDev
jbool _jlImgSave(jlImgT *img, char *filename); jbool _jlImgSave(jlImgT *img, char *filename);
#define jlImgSurfaceGet(img) ((jlSurfaceT)img->pixels) #define jlImgSurfaceGet(img) ((jlSurfaceT)img->pixels)
@ -422,8 +425,8 @@ void jlSoundModStop(void);
void jlSoundPlay(jlSoundT *sound); void jlSoundPlay(jlSoundT *sound);
void jlStnFree(jlStnT *stn); void jlStnFree(jlStnT *stn);
#define jlStnLoad(stn, filename) _jlStnLoad((jlStnT **)&(stn), filename) // Syntatic Sugar #define jlStnLoad(stn, filename) _jlStnLoad((jlStnT **)&(stn), filename, __LINE__, (char *)__FILE__) // Syntatic Sugar
jbool _jlStnLoad(jlStnT **stn, char *filename); jbool _jlStnLoad(jlStnT **stn, char *filename, jint16 line, char *file);
#define jlUtilByteSwap(twoBytes) ((juint16)((twoBytes) & 0xff) >> 8) | (juint16)((twoBytes) << 8) #define jlUtilByteSwap(twoBytes) ((juint16)((twoBytes) & 0xff) >> 8) | (juint16)((twoBytes) << 8)
#ifdef JOEY_TOOLS #ifdef JOEY_TOOLS
@ -444,16 +447,16 @@ void jlUtilSay(char *format, ...);
void jlUtilSleep(juint16 sixtieths); void jlUtilSleep(juint16 sixtieths);
#define jlUtilStackPop(stack) _jlUtilStackPop((jlStackT **)&(stack)) // Syntatic Sugar #define jlUtilStackPop(stack) _jlUtilStackPop((jlStackT **)&(stack)) // Syntatic Sugar
void *_jlUtilStackPop(jlStackT **stack); void *_jlUtilStackPop(jlStackT **stack);
#define jlUtilStackPush(stack, data) _jlUtilStackPush((jlStackT **)&(stack), data) // Syntatic Sugar #define jlUtilStackPush(stack, data) _jlUtilStackPush((jlStackT **)&(stack), data, __LINE__, (char *)__FILE__) // Syntatic Sugar
void _jlUtilStackPush(jlStackT **stack, void *data); void _jlUtilStackPush(jlStackT **stack, void *data, jint16 line, char *file);
juint16 jlUtilTimer(void); juint16 jlUtilTimer(void);
juint16 jlUtilTimeSpan(juint16 past, juint16 current); juint16 jlUtilTimeSpan(juint16 past, juint16 current);
void jlUtilTitleSet(char *title); void jlUtilTitleSet(char *title);
void jlVecDisplay(jlVecT *vec, jint16 x, jint16 y); void jlVecDisplay(jlVecT *vec, jint16 x, jint16 y);
void jlVecFree(jlVecT *vec); void jlVecFree(jlVecT *vec);
#define jlVecLoad(vec, filename) _jlVecLoad((jlVecT **)&(vec), filename) // Syntatic Sugar #define jlVecLoad(vec, filename) _jlVecLoad((jlVecT **)&(vec), filename, __LINE__, (char *)__FILE__) // Syntatic Sugar
jbool _jlVecLoad(jlVecT **vec, char *filename); jbool _jlVecLoad(jlVecT **vec, char *filename, jint16 line, char *file);
// Must be provided by application // Must be provided by application
@ -513,6 +516,7 @@ void _jlDebugBorder(jlBorderColorsE color);
#define JL_HAS_GAMEGETBUTTON #define JL_HAS_GAMEGETBUTTON
#define JL_HAS_KEYPRESSED #define JL_HAS_KEYPRESSED
#define JL_HAS_KEYREAD #define JL_HAS_KEYREAD
#define JL_HAS_UTILMUSTEXIT
#define JL_HAS_UTILSAY #define JL_HAS_UTILSAY
#define JL_HAS_UTILTIMER #define JL_HAS_UTILTIMER
#include "jDev.h" #include "jDev.h"