Skip to content

Commit 4cad317

Browse files
authored
Add files via upload
1 parent 0689ffa commit 4cad317

File tree

14 files changed

+926
-512
lines changed

14 files changed

+926
-512
lines changed

c64screen.cpp

Lines changed: 77 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ const int ACT_SID = 4;
6969
const int ACT_LAUNCH_CRT = 5;
7070
const int ACT_LAUNCH_PRG = 6;
7171
const int ACT_LAUNCH_KERNAL = 7;
72+
const int ACT_SIDKICK_CFG = 8;
7273
const int ACT_NOTHING = 0;
7374

7475
extern CLogger *logger;
@@ -335,8 +336,8 @@ void printBrowserScreen()
335336
if ( subSID )
336337
{
337338
printC64( 0, 24, "choose CRT/Dxx or PRG w/ SID+FM to start", skinValues.SKIN_BROWSER_TEXT_FOOTER, 0, 3 );
338-
printC64( 16, 24, "PRG w/ SID+FM", skinValues.SKIN_BROWSER_TEXT_FOOTER_HIGHLIGHTED, 0, 3 );
339-
printC64( 9, 24, "CRT", skinValues.SKIN_BROWSER_TEXT_FOOTER_HIGHLIGHTED, 0, 3 );
339+
printC64( 18, 24, "PRG w/ SID+FM", skinValues.SKIN_BROWSER_TEXT_FOOTER_HIGHLIGHTED, 0, 3 );
340+
printC64( 7, 24, "CRT", skinValues.SKIN_BROWSER_TEXT_FOOTER_HIGHLIGHTED, 0, 3 );
340341
}
341342

342343
lastLine = printFileTree( cursorPos, scrollPos );
@@ -386,6 +387,7 @@ int getMainMenuSelection( int key, char **FILE, int *addIdx, char *menuItemStr )
386387
if ( key == VK_F8 ) { resetMenuState(0); return ACT_EXIT;/* Exit */ } else
387388
if ( key == VK_F7 ) { resetMenuState(3); return ACT_BROWSER;/* Browser */ } else
388389
if ( key == VK_F1 ) { resetMenuState(1); return ACT_GEORAM;/* GEORAM */ } else
390+
if ( key == VK_F6 ) { return ACT_SIDKICK_CFG; } else
389391
if ( key == VK_F3 ) { resetMenuState(2); return ACT_SID;/* SID */ } else
390392
{
391393
if ( key >= 'A' && key < 'A' + menuItems[ 2 ] ) // CRT
@@ -434,10 +436,10 @@ int getMainMenuSelection( int key, char **FILE, int *addIdx, char *menuItemStr )
434436

435437
extern void deactivateCart();
436438

437-
#define MAX_SETTINGS 13
439+
#define MAX_SETTINGS 14
438440
u32 curSettingsLine = 0;
439-
s32 rangeSettings[ MAX_SETTINGS ] = { 4, 10, 6, 2, 16, 15, 4, 4, 16, 15, 2, 16, 15 };
440-
s32 settings[ MAX_SETTINGS ] = { 0, 0, 0, 0, 15, 0, 0, 0, 15, 14, 0, 15, 7 };
441+
s32 rangeSettings[ MAX_SETTINGS ] = { 4, 10, 6, 2, 16, 15, 4, 4, 16, 15, 2, 16, 15, 2 };
442+
s32 settings[ MAX_SETTINGS ] = { 0, 0, 0, 0, 15, 0, 0, 0, 15, 14, 0, 15, 7, 0 };
441443
u8 geoRAM_SlotNames[ 10 ][ 21 ];
442444

443445
void writeSettingsFile()
@@ -475,9 +477,9 @@ void applySIDSettings()
475477
{
476478
octaSIDMode = ( settings[ 2 ] > 2 ) ? 1 : 0;
477479
// how elegant...
478-
extern void setSIDConfiguration( u32 mode, u32 sid1, u32 sid2, u32 sid2addr, u32 rr, u32 addr, u32 exp, s32 v1, s32 p1, s32 v2, s32 p2, s32 v3, s32 p3 );
480+
extern void setSIDConfiguration( u32 mode, u32 sid1, u32 sid2, u32 sid2addr, u32 rr, u32 addr, u32 exp, s32 v1, s32 p1, s32 v2, s32 p2, s32 v3, s32 p3, s32 outputPWMHDMI );
479481
setSIDConfiguration( 0, settings[2], settings[6], settings[7]-1, settings[3], settings[7], settings[10],
480-
settings[4], settings[5], settings[8], settings[9], settings[11], settings[12] );
482+
settings[4], settings[5], settings[8], settings[9], settings[11], settings[12], settings[ 13 ] );
481483
}
482484

483485
int lastKeyDebug = 0;
@@ -598,6 +600,12 @@ void handleC64( int k, u32 *launchKernel, char *FILENAME, char *filenameKernal,
598600
int temp;
599601
int r = getMainMenuSelection( k, &filename, &temp, menuItemStr );
600602

603+
if ( r == ACT_SIDKICK_CFG )
604+
{
605+
*launchKernel = 11;
606+
return;
607+
}
608+
601609
if ( subSID == 1 )
602610
{
603611
if ( k == VK_ESC )
@@ -1235,7 +1243,13 @@ void handleC64( int k, u32 *launchKernel, char *FILENAME, char *filenameKernal,
12351243
{
12361244
curSettingsLine ++;
12371245
if ( settings[2] > 2 )
1238-
curSettingsLine %= 3; else
1246+
{
1247+
if ( curSettingsLine == 13 + 1 )
1248+
curSettingsLine = 0;
1249+
if ( curSettingsLine == 2 + 1 )
1250+
curSettingsLine = 13;
1251+
//curSettingsLine %= 3;
1252+
} else
12391253
curSettingsLine %= MAX_SETTINGS;
12401254
} else
12411255
// up
@@ -1244,10 +1258,16 @@ void handleC64( int k, u32 *launchKernel, char *FILENAME, char *filenameKernal,
12441258
if ( curSettingsLine == 0 )
12451259
{
12461260
if ( settings[2] > 2 )
1247-
curSettingsLine = 2; else
1261+
{
1262+
curSettingsLine = 13;
1263+
} else
12481264
curSettingsLine = MAX_SETTINGS - 1;
12491265
} else
1250-
curSettingsLine --;
1266+
{
1267+
if ( settings[2] > 2 && curSettingsLine == 13 )
1268+
curSettingsLine = 2; else
1269+
curSettingsLine --;
1270+
}
12511271
}
12521272
if( (k == 's' || k == 'S') && typeInName == 0 )
12531273
{
@@ -1301,10 +1321,10 @@ void printMainMenu()
13011321
if ( subGeoRAM && subHasKernal )
13021322
{
13031323
// "012345678901234567890123456789012345XXXX"
1304-
printC64( 0, 23, " choose KERNAL and/or PRG (w/ F7) ", skinValues.SKIN_MENU_TEXT_FOOTER, 0 );
1324+
printC64( 0, 23, " choose KERNAL and/or PRG (w/F7) ", skinValues.SKIN_MENU_TEXT_FOOTER, 0 );
13051325
printC64( 0, 24, " ? back, RETURN/F1 launch ", skinValues.SKIN_MENU_TEXT_FOOTER, 0 );
13061326
// "012345678901234567890123456789012345XXXX"
1307-
printC64( 33, 23, "F7", skinValues.SKIN_MENU_TEXT_FOOTER, 128, 0 );
1327+
printC64( 32, 23, "F7", skinValues.SKIN_MENU_TEXT_FOOTER, 128, 0 );
13081328
printC64( 8, 24, "\x9f", skinValues.SKIN_MENU_TEXT_FOOTER, 128, 0 );
13091329
printC64( 16, 24, "RETURN", skinValues.SKIN_MENU_TEXT_FOOTER, 128, 0 );
13101330
printC64( 23, 24, "F1", skinValues.SKIN_MENU_TEXT_FOOTER, 128, 0 );
@@ -1351,17 +1371,20 @@ void printMainMenu()
13511371
}
13521372

13531373
if ( modeC128 )
1354-
printC64( 36, 23, "C128", skinValues.SKIN_MENU_TEXT_SYSINFO, 0 ); else
1355-
printC64( 37, 23, "C64", skinValues.SKIN_MENU_TEXT_SYSINFO, 0 );
1374+
printC64( 36, 23-0*(hasSIDKick?1:0), "C128", skinValues.SKIN_MENU_TEXT_SYSINFO, 0 ); else
1375+
printC64( 37, 23-0*(hasSIDKick?1:0), "C64", skinValues.SKIN_MENU_TEXT_SYSINFO, 0 );
13561376
if ( modeVIC == 0 ) // old VIC2
13571377
{
1358-
printC64( 36, 24, "6569", skinValues.SKIN_MENU_TEXT_SYSINFO, 0 );
1378+
printC64( 36, 24-0*(hasSIDKick?1:0), "6569", skinValues.SKIN_MENU_TEXT_SYSINFO, 0 );
13591379
} else {
13601380
if ( modeC128 )
1361-
printC64( 36, 24, "8564", skinValues.SKIN_MENU_TEXT_SYSINFO, 0 ); else
1362-
printC64( 36, 24, "8565", skinValues.SKIN_MENU_TEXT_SYSINFO, 0 );
1381+
printC64( 36, 24-0*(hasSIDKick?1:0), "8564", skinValues.SKIN_MENU_TEXT_SYSINFO, 0 ); else
1382+
printC64( 36, 24-0*(hasSIDKick?1:0), "8565", skinValues.SKIN_MENU_TEXT_SYSINFO, 0 );
13631383
}
13641384

1385+
if ( hasSIDKick )
1386+
printC64( 36, 22, "SIDK", skinValues.SKIN_MENU_TEXT_SYSINFO, 0 );
1387+
13651388
// menu headers + titels
13661389
for ( int i = 0; i < CATEGORY_NAMES; i++ )
13671390
if ( menuX[ i ] != -1 )
@@ -1423,6 +1446,13 @@ void printMainMenu()
14231446
printC64( menuX[ 0 ]+3, menuY[ 0 ]+3, "Settings", skinValues.SKIN_MENU_TEXT_ITEM, 0 );
14241447
ADD_JOY_ITEM( menuX[ 0 ], menuY[ 0 ]+3, 2, VK_F5 );
14251448

1449+
if ( hasSIDKick )
1450+
{
1451+
printC64( menuX[ 0 ], menuY[ 0 ]+4, "F6", skinValues.SKIN_MENU_TEXT_KEY, 0 );
1452+
printC64( menuX[ 0 ]+3, menuY[ 0 ]+4, "SIDKick Config", skinValues.SKIN_MENU_TEXT_ITEM, 0 );
1453+
ADD_JOY_ITEM( menuX[ 0 ], menuY[ 0 ]+4, 2, VK_F6 );
1454+
}
1455+
14261456
if ( joyIdx != - 1 )
14271457
printC64( (joyX-1+40)%40, (joyY%25), ">", 1, 0 );
14281458

@@ -1490,6 +1520,7 @@ void printSettingsScreen()
14901520
char sidStrO[ 3 ][ 8 ] = { "off", "on" };
14911521
char sidStrS2[ 4 ][ 20 ] = { "6581", "8580", "8580 w/ Digiboost", "none" };
14921522
char sidStrA[ 4 ][ 8 ] = { "$D400", "$D420", "$D500", "$DE00" };
1523+
char sidStrOutput[ 3 ][ 9 ] = { "PWM", "HDMI", "PWM+HDMI" };
14931524

14941525
printC64( x+1, y2+11, "SID #1", skinValues.SKIN_MENU_TEXT_ITEM, (l==2)?0x80:0 );
14951526
printC64( x2+10, y2+11, sidStrS[ settings[2] ], skinValues.SKIN_MENU_TEXT_ITEM, (l==2)?0x80:0 );
@@ -1508,40 +1539,47 @@ void printSettingsScreen()
15081539
sprintf( t, "%2d", settings[ 5 ] - 7 );
15091540
printC64( x2+15, y2+13, t, skinValues.SKIN_MENU_TEXT_ITEM, (l==5)?0x80:0 );
15101541

1511-
printC64( x+1, y2+15, "SID #2", skinValues.SKIN_MENU_TEXT_ITEM, (l==6)?0x80:0 );
1512-
printC64( x2+10, y2+15, sidStrS2[ settings[6] ], skinValues.SKIN_MENU_TEXT_ITEM, (l==6)?0x80:0 );
1542+
printC64( x+1, y2+14, "SID #2", skinValues.SKIN_MENU_TEXT_KEY, (l==6)?0x80:0 );
1543+
printC64( x2+10, y2+14, sidStrS2[ settings[6] ], skinValues.SKIN_MENU_TEXT_KEY, (l==6)?0x80:0 );
15131544

1514-
printC64( x+1, y2+16, "Address", skinValues.SKIN_MENU_TEXT_ITEM, (l==7)?0x80:0 );
1515-
printC64( x2+10, y2+16, sidStrA[ settings[7] ], skinValues.SKIN_MENU_TEXT_ITEM, (l==7)?0x80:0 );
1545+
printC64( x+1, y2+15, "Address", skinValues.SKIN_MENU_TEXT_KEY, (l==7)?0x80:0 );
1546+
printC64( x2+10, y2+15, sidStrA[ settings[7] ], skinValues.SKIN_MENU_TEXT_KEY, (l==7)?0x80:0 );
15161547

1517-
printC64( x+1, y2+17, "Volume", skinValues.SKIN_MENU_TEXT_ITEM, (l==8)?0x80:0 );
1518-
printC64( x+1+6, y2+17, "/", skinValues.SKIN_MENU_TEXT_ITEM, 0 );
1519-
printC64( x+1+7, y2+17, "Panning", skinValues.SKIN_MENU_TEXT_ITEM, (l==9)?0x80:0 );
1548+
printC64( x+1, y2+16, "Volume", skinValues.SKIN_MENU_TEXT_KEY, (l==8)?0x80:0 );
1549+
printC64( x+1+6, y2+16, "/", skinValues.SKIN_MENU_TEXT_KEY, 0 );
1550+
printC64( x+1+7, y2+16, "Panning", skinValues.SKIN_MENU_TEXT_KEY, (l==9)?0x80:0 );
15201551
sprintf( t, "%2d", settings[ 8 ] );
1521-
printC64( x2+10, y2+17, t, skinValues.SKIN_MENU_TEXT_ITEM, (l==8)?0x80:0 );
1522-
printC64( x2+13, y2+17, "/", skinValues.SKIN_MENU_TEXT_ITEM, 0 );
1552+
printC64( x2+10, y2+16, t, skinValues.SKIN_MENU_TEXT_KEY, (l==8)?0x80:0 );
1553+
printC64( x2+13, y2+16, "/", skinValues.SKIN_MENU_TEXT_KEY, 0 );
15231554
sprintf( t, "%2d", settings[ 9 ] - 7 );
1524-
printC64( x2+15, y2+17, t, skinValues.SKIN_MENU_TEXT_ITEM, (l==9)?0x80:0 );
1555+
printC64( x2+15, y2+16, t, skinValues.SKIN_MENU_TEXT_KEY, (l==9)?0x80:0 );
15251556

1526-
printC64( x+1, y2+19, "SFX Sound Exp.", skinValues.SKIN_MENU_TEXT_ITEM, (l==10)?0x80:0 );
1527-
printC64( x2+10, y2+19, sidStrO[ settings[10] ], skinValues.SKIN_MENU_TEXT_ITEM, (l==10)?0x80:0 );
1557+
printC64( x+1, y2+17, "SFX Sound Exp.", skinValues.SKIN_MENU_TEXT_ITEM, (l==10)?0x80:0 );
1558+
printC64( x2+10, y2+17, sidStrO[ settings[10] ], skinValues.SKIN_MENU_TEXT_ITEM, (l==10)?0x80:0 );
15281559

1529-
printC64( x+1, y2+20, "Volume", skinValues.SKIN_MENU_TEXT_ITEM, (l==11)?0x80:0 );
1530-
printC64( x+1+6, y2+20, "/", skinValues.SKIN_MENU_TEXT_ITEM, 0 );
1531-
printC64( x+1+7, y2+20, "Panning", skinValues.SKIN_MENU_TEXT_ITEM, (l==12)?0x80:0 );
1560+
printC64( x+1, y2+18, "Volume", skinValues.SKIN_MENU_TEXT_ITEM, (l==11)?0x80:0 );
1561+
printC64( x+1+6, y2+18, "/", skinValues.SKIN_MENU_TEXT_ITEM, 0 );
1562+
printC64( x+1+7, y2+18, "Panning", skinValues.SKIN_MENU_TEXT_ITEM, (l==12)?0x80:0 );
15321563
sprintf( t, "%2d", settings[ 11 ] );
1533-
printC64( x2+10, y2+20, t, skinValues.SKIN_MENU_TEXT_ITEM, (l==11)?0x80:0 );
1534-
printC64( x2+13, y2+20, "/", skinValues.SKIN_MENU_TEXT_ITEM, 0 );
1564+
printC64( x2+10, y2+18, t, skinValues.SKIN_MENU_TEXT_ITEM, (l==11)?0x80:0 );
1565+
printC64( x2+13, y2+18, "/", skinValues.SKIN_MENU_TEXT_ITEM, 0 );
15351566
sprintf( t, "%2d", settings[ 12 ] - 7 );
1536-
printC64( x2+15, y2+20, t, skinValues.SKIN_MENU_TEXT_ITEM, (l==12)?0x80:0 );
1567+
printC64( x2+15, y2+18, t, skinValues.SKIN_MENU_TEXT_ITEM, (l==12)?0x80:0 );
1568+
1569+
printC64( x+1, y2+20, "Output", skinValues.SKIN_MENU_TEXT_ITEM, (l==13)?0x80:0 );
1570+
printC64( x2+10, y2+20, sidStrOutput[ settings[13] ], skinValues.SKIN_MENU_TEXT_ITEM, (l==13)?0x80:0 );
1571+
15371572
} else
15381573
{
15391574
// "012345678901234567890123456789012345XXXX"
1540-
printC64( x+1, y2+13, "This is a special mode with 8 SIDs", skinValues.SKIN_MENU_TEXT_ITEM, (l==3)?0x80:0 );
1541-
printC64( x+1, y2+14, "at the following addresses:", skinValues.SKIN_MENU_TEXT_ITEM, (l==3)?0x80:0 );
1575+
printC64( x+1, y2+13, "This is a special mode with 8 SIDs", skinValues.SKIN_MENU_TEXT_KEY, (l==3)?0x80:0 );
1576+
printC64( x+1, y2+14, "at the following addresses:", skinValues.SKIN_MENU_TEXT_KEY, (l==3)?0x80:0 );
1577+
1578+
printC64( x+1, y2+16, "Left: $D400, $D480, $D500, $D580", skinValues.SKIN_MENU_TEXT_KEY, (l==3)?0x80:0 );
1579+
printC64( x+1, y2+17, "Right: $D420, $D4A0, $D520, $D5A0", skinValues.SKIN_MENU_TEXT_KEY, (l==3)?0x80:0 );
15421580

1543-
printC64( x+1, y2+16, "Left: $D400, $D480, $D500, $D580", skinValues.SKIN_MENU_TEXT_ITEM, (l==3)?0x80:0 );
1544-
printC64( x+1, y2+17, "Right: $D420, $D4A0, $D520, $D5A0", skinValues.SKIN_MENU_TEXT_ITEM, (l==3)?0x80:0 );
1581+
printC64( x+1, y2+20, "Output", skinValues.SKIN_MENU_TEXT_ITEM, (l==13)?0x80:0 );
1582+
printC64( x2+10, y2+20, sidStrOutput[ settings[13] ], skinValues.SKIN_MENU_TEXT_ITEM, (l==13)?0x80:0 );
15451583
}
15461584

15471585
printSidekickLogo();

crt.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,12 @@ void readCRTFile( CLogger *logger, CRT_HEADER *crtHeader, const char *DRIVE, con
212212
*bankswitchType = BS_PROPHET;
213213
*ROM_LH = bROML;
214214
break;
215+
case 57:
216+
if ( header.reserved[ 0 ] == 0 )
217+
*bankswitchType = BS_RGCD; else
218+
*bankswitchType = BS_HUCKY;
219+
*ROM_LH = bROML;
220+
break;
215221
case 3:
216222
//logger->Write( "RaspiFlash", LogNotice, "Final Cartridge 3 CRT" );
217223
*bankswitchType = BS_FC3;
@@ -316,6 +322,8 @@ void readCRTFile( CLogger *logger, CRT_HEADER *crtHeader, const char *DRIVE, con
316322
(*bankswitchType) == BS_PROPHET ||
317323
(*bankswitchType) == BS_OCEAN ||
318324
(*bankswitchType) == BS_GMOD2 ||
325+
(*bankswitchType) == BS_HUCKY ||
326+
(*bankswitchType) == BS_RGCD ||
319327
header.type == 36 /* Retro Replay */ )
320328
{
321329
*ROM_LH = bROML;
@@ -621,6 +629,7 @@ int checkCRTFile( CLogger *logger, const char *DRIVE, const char *FILENAME, u32
621629
case 10: // Epyx Fastload
622630
case 4: // Simon's Basic
623631
case 17: // Dinamic
632+
case 57: // RGCD / Hucky
624633
case 7: // Funplay
625634
return 5;
626635
case 3: // Final Cartridge 3 CRT

crt.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@
5555
#define BS_GMOD2 0x0D
5656
#define BS_FUNPLAY 0x0E
5757
#define BS_PROPHET 0x0F
58+
#define BS_RGCD 0x10
59+
#define BS_HUCKY 0x11
5860

5961
static const char CRT_HEADER_SIG[] = "C64 CARTRIDGE ";
6062
static const char CHIP_HEADER_SIG[] = "CHIP";

0 commit comments

Comments
 (0)