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"
extern jbool _jlIsRunning;
extern jlMemoryBlockT _jlMemoryBlocks[JOEY_MEM_BLOCKS];
extern long _jlTotalAllocations;
extern long _jlTotalFrees;
jbool jlUtilMustExit(void) {
return _jlUtilMustExit(JOEY_DEV_HANDLE);
}
void jlUtilSay(char *format, ...) {
va_list va;
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) {
int i;
jPixBufStart();
joeyMain();
jPixBufStop();
if (!setjmp(_jlJumpBuffer)) {
joeyMain();
}
jPixBufStop();
jlUtilDie("Clean Exit.");
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 jbool _jlGameGetButton(uint32_t handle, jbyte which);
extern jbool _jlKeyPressed(uint32_t handle);
extern char _jlUtilMustExit(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 juint16 _jlUtilTimer(uint32_t handle);
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 jlKeyPressed() _jlKeyPressed(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 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

View file

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

View file

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