Skip to content

Commit 32e2dba

Browse files
committed
LYNX: Redirect printfs to rg_system_log so they can appear in crash.log
1 parent 2846b36 commit 32e2dba

File tree

10 files changed

+44
-54
lines changed

10 files changed

+44
-54
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
# Retro-Go 1.31.1 (2022-03-08)
2+
- All: Fixed sound on MRGC-G32
3+
4+
15
# Retro-Go 1.31 (2022-02-15)
26
- Launcher: Fixed occasional crash when changing tab
37
- GBC: Fixed high cpu usage / slowdowns

handy-go/components/handy/c65c02.h

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -243,8 +243,6 @@ class C65C02
243243
// mPC=CPU_PEEKW(NMI_VECTOR);
244244
// }
245245

246-
// fprintf(stderr, "cpu update\n");
247-
248246
if(gSystemIRQ && !mI)
249247
{
250248
TRACE_CPU1("Update() IRQ taken at PC=%04x",mPC);
@@ -1756,9 +1754,7 @@ class C65C02
17561754

17571755
inline void xILLEGAL(void)
17581756
{
1759-
//char addr[1024];
1760-
//sprintf(addr,"C65C02::Update() - Illegal opcode (%02x) at PC=$%04x.",mOpcode,mPC);
1761-
fprintf(stderr, "C65C02::Update() - Illegal opcode (%02x) at PC=$%04x.",mOpcode,mPC);
1757+
log_printf("CPU: Illegal opcode $%02x at PC=$%04x.\n", mOpcode, mPC);
17621758
}
17631759

17641760
private:

handy-go/components/handy/cart.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@
4444

4545
//#define TRACE_CART
4646

47-
#include <rg_system.h>
4847
#include <stdlib.h>
4948
#include <stdio.h>
5049
#include <string.h>
@@ -79,14 +78,14 @@ CCart::CCart(UBYTE *gamedata,ULONG gamesize)
7978
if(mFileHeader.magic[0]!='L' || mFileHeader.magic[1]!='Y' || mFileHeader.magic[2]!='N'
8079
|| mFileHeader.magic[3]!='X' || mFileHeader.version!=1) {
8180

82-
fprintf(stderr, "Invalid cart (no header?).\nGuessing a ROM layout...\n");
81+
log_printf("Invalid cart (magic number).\n");
8382
strncpy((char*)&mFileHeader.cartname,"NO HEADER",32);
8483
strncpy((char*)&mFileHeader.manufname,"HANDY",16);
8584
mFileHeader.page_size_bank0=gamesize>>8;// Hard workaround...
8685
} else {
8786
headersize=sizeof(LYNX_HEADER);
8887
mCRC32=crc32_le(0, gamedata+headersize, gamesize-headersize);
89-
printf("Cart '%s' loaded, CRC32=%08X\n", mFileHeader.cartname, mCRC32);
88+
log_printf("Cart '%s' loaded, CRC32=%08X\n", mFileHeader.cartname, mCRC32);
9089
}
9190

9291
// As this is a cartridge boot unset the boot address
@@ -123,7 +122,7 @@ CCart::CCart(UBYTE *gamedata,ULONG gamesize)
123122
mCountMask0=0x7ff;
124123
break;
125124
default:
126-
fprintf(stderr, "Invalid cart (bank0 size).\n");
125+
log_printf("Invalid cart (bank0 size = %06x).\n", mFileHeader.page_size_bank0);
127126
break;
128127
}
129128
TRACE_CART1("CCart() - Bank0 = $%06x",mMaskBank0);
@@ -158,7 +157,7 @@ CCart::CCart(UBYTE *gamedata,ULONG gamesize)
158157
mCountMask1=0x7ff;
159158
break;
160159
default:
161-
fprintf(stderr, "Invalid cart (bank1 size).\n");
160+
log_printf("Invalid cart (bank1 size = %06x).\n", mFileHeader.page_size_bank1);
162161
break;
163162
}
164163
TRACE_CART1("CCart() - Bank1 = $%06x",mMaskBank1);

handy-go/components/handy/eeprom.cpp

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ void CEEPROM::Load(void)
4444
if(!Available()) return;
4545
FILE *fe;
4646
if((fe=fopen(filename,"rb"))!=NULL){
47-
printf("EEPROM LOAD %s\n",filename);
47+
log_printf("EEPROM: Loading from '%s'\n",filename);
4848
fread(romdata,1,1024,fe);
4949
fclose(fe);
5050
}
@@ -55,7 +55,7 @@ void CEEPROM::Save(void)
5555
if(!Available()) return;
5656
FILE *fe;
5757
if((fe=fopen(filename,"wb+"))!=NULL){
58-
printf("EEPROM SAVE %s\n",filename);
58+
log_printf("EEPROM: Saving to '%s'\n",filename);
5959
fwrite(romdata,1,Size(),fe);
6060
fclose(fe);
6161
}
@@ -111,55 +111,54 @@ bool CEEPROM::ContextLoad(LSS_FILE *fp)
111111
void CEEPROM::SetEEPROMType(UBYTE b)
112112
{
113113
type=b;
114-
printf("\nEEPROM: ");
114+
const char *type = "none";
115115
switch(b&0x7) {
116116
case 1: // 93C46 , 8 bit mode
117117
ADDR_MASK = 0x7F;
118118
CMD_BITS = 10;
119119
ADDR_BITS = 7;
120-
printf("93C46 ");
120+
type = "93C46";
121121
break;
122122
case 2: // 93C56 , 8 bit mode
123123
ADDR_MASK = 0xFF;
124124
CMD_BITS = 12;
125125
ADDR_BITS = 9;
126-
printf("93C56 ");
126+
type = "93C56";
127127
break;
128128
case 3: // 93C66 , 8 bit mode
129129
ADDR_MASK = 0x1FF;
130130
CMD_BITS = 12;
131131
ADDR_BITS = 9;
132-
printf("93C66 ");
132+
type = "93C66";
133133
break;
134134
case 4: // 93C76 , 8 bit mode
135135
ADDR_MASK = 0x3FF;
136136
CMD_BITS = 14;
137137
ADDR_BITS = 11;
138-
printf("93C76 ");
138+
type = "93C76";
139139
break;
140140
case 5: // 93C86 , 8 bit mode
141141
ADDR_MASK = 0x7FF;
142142
CMD_BITS = 14;
143143
ADDR_BITS = 11;
144-
printf("93C86 ");
144+
type = "93C86";
145145
break;
146146
case 0: // NONE, fallthrou
147147
default:
148148
ADDR_MASK = 0;
149149
CMD_BITS = 1;
150150
ADDR_BITS = 1;
151-
printf("none ");
152151
break;
153152
}
154153
if(b&0x80) { // 8 bit access
155154
DONE_MASK = 0x100;
156-
printf("8 bit\n");
155+
log_printf("EEPROM: Type: %s 8bit\n", type);
157156
} else { // 16 bit access
158157
ADDR_MASK>>=1;
159158
CMD_BITS--;
160159
ADDR_BITS--;
161160
DONE_MASK = 0x10000;
162-
printf("16 bit\n");
161+
log_printf("EEPROM: Type: %s 16bit\n", type);
163162
}
164163
}
165164

handy-go/components/handy/mikie.cpp

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -96,15 +96,6 @@ static inline ULONG GetLfsrNext(ULONG current)
9696
#endif
9797
}
9898

99-
void CMikie::BlowOut(void)
100-
{
101-
C6502_REGS regs;
102-
mSystem.mCpu->GetRegs(regs);
103-
printf("Runtime Error - System Halted\nCMikie::Poke() - Read/Write to counter clocks at PC=$%04x.\n",regs.PC);
104-
gSystemHalt=TRUE;
105-
abort();
106-
}
107-
10899

109100
CMikie::CMikie(CSystem& parent, ULONG displayformat, ULONG samplerate)
110101
:mSystem(parent)
@@ -1573,7 +1564,7 @@ void CMikie::Poke(ULONG addr,UBYTE data)
15731564
if(!(data&0x02)) {
15741565
C6502_REGS regs;
15751566
mSystem.mCpu->GetRegs(regs);
1576-
printf("Runtime Alert - System Halted\nCMikie::Poke(SYSCTL1) - Lynx power down occurred at PC=$%04x.\nResetting system.\n",regs.PC);
1567+
log_printf("CMikie::Poke(SYSCTL1) - Lynx power down occurred at PC=$%04x.\nResetting system.\n", regs.PC);
15771568
mSystem.Reset();
15781569
gSystemHalt=TRUE;
15791570
}
@@ -1701,7 +1692,7 @@ void CMikie::Poke(ULONG addr,UBYTE data)
17011692
case 0xFE19+3: mSystem.HLE_BIOS_FE19(); break;
17021693
case 0xFE4A+3: mSystem.HLE_BIOS_FE4A(); break;
17031694
case 0xFF80+3: mSystem.HLE_BIOS_FF80(); break;
1704-
default: printf("ROM code missing...\n");
1695+
default: log_printf("BIOS: Missing function $%04X\n", mSystem.mCpu->GetPC());
17051696
}
17061697
break;
17071698
case (GREEN0&0xff):
@@ -3023,7 +3014,6 @@ inline void CMikie::Update(void)
30233014
UpdateSound();
30243015
}
30253016

3026-
// printf("CMikie::Update() - gSystemCycleCount==gNextTimerEvent, system lock likely\n");
30273017
// TRACE_MIKIE1("Update() - NextTimerEvent = %012d",gNextTimerEvent);
30283018

30293019
// Update system IRQ status as a result of timer activity

handy-go/components/handy/ram.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ class CRam : public CLynxBase
8383
memcpy(&mFileHeader, filememory, sizeof(HOME_HEADER));
8484
if(mFileHeader.magic[0]!='B' || mFileHeader.magic[1]!='S' ||
8585
mFileHeader.magic[2]!='9' || mFileHeader.magic[3]!='3') {
86-
fprintf(stderr, "Invalid cart.\n");
86+
log_printf("Invalid cart (header).\n");
8787
} else {
8888
#ifndef MSB_FIRST
8989
mFileHeader.load_address = mFileHeader.load_address<<8 | mFileHeader.load_address>>8;

handy-go/components/handy/susie.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1006,7 +1006,7 @@ ULONG CSusie::PaintSprites(void)
10061006
// Perform Sprite debugging if required, single step on sprite draw
10071007
if(gSingleStepModeSprites) {
10081008
// char message[256];
1009-
//sprintf("CSusie:PaintSprites() - Rendered Sprite %03d\n",sprcount);
1009+
//log_printf("CSusie:PaintSprites() - Rendered Sprite %03d\n",sprcount);
10101010
//SingleStepModeSprites=0;
10111011
}
10121012
} else {
@@ -1030,7 +1030,7 @@ ULONG CSusie::PaintSprites(void)
10301030
// Stop the system, otherwise we may just come straight back in.....
10311031
gSystemHalt=TRUE;
10321032
// Display warning message
1033-
printf("CSusie:PaintSprites(): Single draw sprite limit exceeded (>4096). The SCB is most likely looped back on itself. Reset/Exit is recommended\n");
1033+
log_printf("CSusie:PaintSprites(): Single draw sprite limit exceeded (>4096). The SCB is most likely looped back on itself. Reset/Exit is recommended\n");
10341034
// Signal error to the caller
10351035
return 0;
10361036
}

handy-go/components/handy/susie.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,7 @@ class CSusie : public CLynxBase
419419

420420
if(voff>101)
421421
{
422-
printf("CSusie::LineInit() Out of bounds (voff)\n");
422+
log_printf("CSusie::LineInit() Out of bounds (voff)\n");
423423
voff=0;
424424
}
425425

handy-go/components/handy/system.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -146,12 +146,12 @@ CSystem::CSystem(const char* gamefile, long displayformat, long samplerate)
146146
filememory=(UBYTE*) new UBYTE[filesize];
147147

148148
if(fread(filememory, 1, filesize,fp)!=filesize) {
149-
fprintf(stderr, "Invalid Cart (filesize).\n");
149+
log_printf("Invalid cart (filesize).\n");
150150
}
151151

152152
fclose(fp);
153153
} else {
154-
fprintf(stderr, "Invalid Cart.\n");
154+
log_printf("Invalid cart (fopen failed).\n");
155155
}
156156

157157
// Now try and determine the filetype we have opened
@@ -164,10 +164,10 @@ CSystem::CSystem(const char* gamefile, long displayformat, long samplerate)
164164
if(!strcmp(&clip[6],"BS93")) mFileType=HANDY_FILETYPE_HOMEBREW;
165165
else if(!strcmp(&clip[0],"LYNX")) mFileType=HANDY_FILETYPE_LNX;
166166
else if(filesize==128*1024 || filesize==256*1024 || filesize==512*1024) {
167-
fprintf(stderr, "Invalid Cart (type). but 128/256/512k size -> set to RAW and try to load raw rom image\n");
167+
log_printf("Invalid cart (type). but 128/256/512k size -> set to RAW and try to load raw rom image\n");
168168
mFileType=HANDY_FILETYPE_RAW;
169169
} else {
170-
fprintf(stderr, "Invalid Cart (type). -> set to RAW and try to load raw rom image\n");
170+
log_printf("Invalid cart (type). -> set to RAW and try to load raw rom image\n");
171171
mFileType=HANDY_FILETYPE_RAW;
172172
}
173173
}
@@ -420,10 +420,10 @@ bool CSystem::ContextLoad(LSS_FILE *fp)
420420
ULONG checksum;
421421
// Read CRC32 and check against the CART for a match
422422
lss_read(&checksum,sizeof(ULONG),1,fp);
423-
// if(mCart->CRC32()!=checksum) {
424-
// fprintf(stderr, "[handy]LSS Snapshot CRC does not match the loaded cartridge image, aborting load.\n");
425-
// return 0;
426-
// }
423+
if(mCart->CRC32()!=checksum) {
424+
log_printf("CSystem::ContextLoad() LSS Snapshot CRC does not match the loaded cartridge image...\n");
425+
// return 0;
426+
}
427427

428428
// Check our block header
429429
if(!lss_read(teststr,sizeof(char),20,fp)) status=0;
@@ -462,7 +462,7 @@ bool CSystem::ContextLoad(LSS_FILE *fp)
462462

463463
gAudioBufferPointer = 0;
464464
} else {
465-
fprintf(stderr, "[handy]Not a recognised LSS file\n");
465+
log_printf("CSystem::ContextLoad() Not a recognised LSS file!\n");
466466
}
467467

468468
return status;
@@ -475,7 +475,7 @@ void CSystem::DebugTrace(int address)
475475
char message[1024+1];
476476
int count=0;
477477

478-
sprintf(message,"%08x - DebugTrace(): ",gSystemCycleCount);
478+
log_printf(message,"%08x - DebugTrace(): ",gSystemCycleCount);
479479
count=strlen(message);
480480

481481
if(address) {
@@ -484,7 +484,7 @@ void CSystem::DebugTrace(int address)
484484
char linetext[1024];
485485
// Register dump
486486
mCpu->GetRegs(regs);
487-
sprintf(linetext,"PC=$%04x SP=$%02x PS=0x%02x A=0x%02x X=0x%02x Y=0x%02x",regs.PC,regs.SP, regs.PS,regs.A,regs.X,regs.Y);
487+
log_printf(linetext,"PC=$%04x SP=$%02x PS=0x%02x A=0x%02x X=0x%02x Y=0x%02x",regs.PC,regs.SP, regs.PS,regs.A,regs.X,regs.Y);
488488
strcat(message,linetext);
489489
count=strlen(message);
490490
} else {

handy-go/components/handy/system.h

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,6 @@ typedef uint32_t ULONG;
6666
#define FALSE false
6767
#endif
6868

69-
#include "lynxbase.h"
70-
7169
#define HANDY_SYSTEM_FREQ 16000000
7270
#define HANDY_TIMER_FREQ 20
7371
#define HANDY_AUDIO_SAMPLE_FREQ 24000 // 48000
@@ -139,6 +137,14 @@ extern UBYTE *gPrimaryFrameBuffer;
139137
#define lss_write(s, vs, vc, fp) (fwrite(s, vs, vc, fp) > 0)
140138
#define lss_printf(fp, str) (fputs(str, fp) >= 0)
141139

140+
//
141+
// Define logging functions
142+
//
143+
144+
#include <rg_system.h>
145+
// #define log_printf(x...) printf(x)
146+
#define log_printf(x...) rg_system_log(RG_LOG_USER, NULL, x)
147+
142148

143149
//
144150
// Define the interfaces before we start pulling in the classes
@@ -185,7 +191,6 @@ class CSystem : public CSystemBase
185191

186192
inline void Update(void)
187193
{
188-
// fprintf(stderr, "sys update\n");
189194
//
190195
// Only update if there is a predicted timer event
191196
//
@@ -197,7 +202,6 @@ class CSystem : public CSystemBase
197202
// Step the processor through 1 instruction
198203
//
199204
mCpu->Update();
200-
// fprintf(stderr, "end cpu update\n");
201205

202206
#ifdef _LYNXDBG
203207
// Check breakpoint
@@ -216,8 +220,6 @@ class CSystem : public CSystemBase
216220
{
217221
gSystemCycleCount=gNextTimerEvent;
218222
}
219-
220-
// fprintf(stderr, "end sys update\n");
221223
}
222224

223225
inline void UpdateFrame(bool draw)

0 commit comments

Comments
 (0)