mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-01-23 01:21:57 -05:00
Mac classic: Save 90kb from 68k and 120kb PPC builds by using own cut down console log
This commit is contained in:
parent
e2a4fc1205
commit
93c18b6177
4 changed files with 79 additions and 8 deletions
|
@ -8,7 +8,7 @@ CFLAGS=-O1 -fno-math-errno
|
|||
|
||||
REZ=$(RETRO68)/bin/Rez
|
||||
|
||||
LDFLAGS=-lRetroConsole
|
||||
LDFLAGS=-lm
|
||||
RINCLUDES=$(PREFIX)/RIncludes
|
||||
REZFLAGS=-I$(RINCLUDES)
|
||||
|
||||
|
@ -27,7 +27,7 @@ $(TARGET).bin $(TARGET).APPL $(TARGET).dsk: $(BUILD_DIR) $(TARGET).code.bin
|
|||
|
||||
|
||||
$(TARGET).code.bin: $(C_OBJECTS)
|
||||
$(CXX) $(C_OBJECTS) -o $@ $(LDFLAGS) # C++ used for linking because RetroConsole needs it
|
||||
$(CC) $(C_OBJECTS) -o $@ $(LDFLAGS)
|
||||
|
||||
$(BUILD_DIR):
|
||||
mkdir -p $(BUILD_DIR)
|
||||
|
|
|
@ -9,7 +9,7 @@ CFLAGS=-O1 -fno-math-errno
|
|||
REZ=$(RETRO68)/bin/Rez
|
||||
MakePEF=$(RETRO68)/bin/MakePEF
|
||||
|
||||
LDFLAGS=-lRetroConsole
|
||||
LDFLAGS=-lm
|
||||
RINCLUDES=$(PREFIX)/RIncludes
|
||||
REZFLAGS=-I$(RINCLUDES)
|
||||
|
||||
|
@ -27,7 +27,7 @@ $(TARGET).bin $(TARGET).APPL $(TARGET).dsk: $(BUILD_DIR) $(TARGET).pef
|
|||
-o $(TARGET).bin --cc $(TARGET).APPL --cc $(TARGET).dsk
|
||||
|
||||
$(TARGET).elf: $(C_OBJECTS)
|
||||
$(CXX) $(C_OBJECTS) -o $@ $(LDFLAGS) # C++ used for linking because RetroConsole needs it
|
||||
$(CC) $(C_OBJECTS) -o $@ $(LDFLAGS)
|
||||
|
||||
$(TARGET).pef: $(TARGET).elf
|
||||
$(MakePEF) $(TARGET).elf -o $(TARGET).pef
|
||||
|
|
|
@ -102,11 +102,10 @@ void Mem_Free(void* mem) {
|
|||
/*########################################################################################################################*
|
||||
*------------------------------------------------------Logging/Time-------------------------------------------------------*
|
||||
*#########################################################################################################################*/
|
||||
ssize_t _consolewrite(int fd, const void *buf, size_t count);
|
||||
void Console_Write(const char* msg, int len);
|
||||
|
||||
void Platform_Log(const char* msg, int len) {
|
||||
_consolewrite(0, msg, len);
|
||||
_consolewrite(0, "\n", 1);
|
||||
Console_Write(msg, len);
|
||||
}
|
||||
|
||||
// classic macOS uses an epoch of 1904
|
||||
|
|
|
@ -23,6 +23,78 @@ static WindowPtr win;
|
|||
static cc_bool hasColorQD, useGWorld;
|
||||
|
||||
|
||||
/*########################################################################################################################*
|
||||
*--------------------------------------------------Console log window-----------------------------------------------------*
|
||||
*#########################################################################################################################*/
|
||||
static int con_cellSizeX, con_cellSizeY;
|
||||
static int con_rows, con_cols;
|
||||
static int cursorX, cursorY;
|
||||
static WindowPtr con_win;
|
||||
static Rect con_bounds;
|
||||
|
||||
static void Console_EraseLine(int y) {
|
||||
Rect r = con_bounds;
|
||||
r.top += y * con_cellSizeY;
|
||||
r.bottom = r.top + con_cellSizeY;
|
||||
|
||||
MoveTo(r.left, r.bottom - 2);
|
||||
EraseRect(&r);
|
||||
}
|
||||
|
||||
static void Console_Init(void) {
|
||||
Rect r = qd.screenBits.bounds;
|
||||
r.top += 40;
|
||||
InsetRect(&r, 5, 5);
|
||||
|
||||
con_win = NewWindow(NULL, &r, "\pConsole log", true, 0, (WindowPtr)-1, true, 0);
|
||||
GrafPtr savedPort;
|
||||
GetPort(&savedPort);
|
||||
SetPort(con_win);
|
||||
|
||||
con_bounds = con_win->portRect;
|
||||
EraseRect(&con_bounds);
|
||||
|
||||
TextFont(kFontIDMonaco);
|
||||
TextSize(9);
|
||||
|
||||
InsetRect(&con_bounds, 2, 2);
|
||||
con_cellSizeX = CharWidth('M');
|
||||
con_cellSizeY = 12;
|
||||
|
||||
con_rows = (con_bounds.bottom - con_bounds.top) / con_cellSizeY;
|
||||
con_cols = (con_bounds.right - con_bounds.left) / con_cellSizeX;
|
||||
|
||||
Console_EraseLine(0);
|
||||
cursorX = cursorY = 0;
|
||||
SetPort(savedPort);
|
||||
}
|
||||
|
||||
static void Console_NewLine(void) {
|
||||
Console_EraseLine(cursorY);
|
||||
cursorY++;
|
||||
cursorX = 0;
|
||||
if (cursorY >= con_rows) cursorY = 0;
|
||||
}
|
||||
|
||||
void Console_Write(const char* msg, int len) {
|
||||
if (!con_win) Console_Init();
|
||||
|
||||
GrafPtr savedPort;
|
||||
GetPort(&savedPort);
|
||||
SetPort(con_win);
|
||||
|
||||
for (int i = 0; i < len; i++)
|
||||
{
|
||||
DrawChar(msg[i]);
|
||||
cursorX++;
|
||||
if (cursorX >= con_cols) Console_NewLine();
|
||||
}
|
||||
Console_NewLine();
|
||||
|
||||
SetPort(savedPort);
|
||||
}
|
||||
|
||||
|
||||
/*########################################################################################################################*
|
||||
*---------------------------------------------------Imported headers------------------------------------------------------*
|
||||
*#########################################################################################################################*/
|
||||
|
@ -182,7 +254,7 @@ void Window_RequestClose(void) {
|
|||
|
||||
static void HandleMouseDown(EventRecord* event) {
|
||||
MAC_WindowPartCode part;
|
||||
WindowPtr window;
|
||||
WindowPtr window;
|
||||
Point localPoint;
|
||||
|
||||
int x, y;
|
||||
|
|
Loading…
Reference in a new issue