From 6ea39d7bfa1f53e57f993bbeb8ce3ae07c61cd99 Mon Sep 17 00:00:00 2001 From: drmortalwombat <90205530+drmortalwombat@users.noreply.github.com> Date: Thu, 15 May 2025 17:50:59 +0200 Subject: [PATCH] CTT file import --- include/c64/kernalio.c | 2 +- oscar64/Preprocessor.cpp | 29 +++++++++++++++++++++++++---- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/include/c64/kernalio.c b/include/c64/kernalio.c index ff7f25c..28198db 100644 --- a/include/c64/kernalio.c +++ b/include/c64/kernalio.c @@ -422,7 +422,7 @@ int krnio_gets(char fnum, char * data, int num) if (krnio_chkin(fnum)) { - krnioerr err; + krnioerr err = KRNIO_OK; int i = 0; int ch; while (i + 1 < num) diff --git a/oscar64/Preprocessor.cpp b/oscar64/Preprocessor.cpp index 67714c2..e2c4fd0 100644 --- a/oscar64/Preprocessor.cpp +++ b/oscar64/Preprocessor.cpp @@ -327,6 +327,16 @@ struct CTMHeader9 uint8 mColors[7]; }; +struct CTTHeader9 +{ + uint8 mDispMode; + uint8 mColorMethod; + uint8 mFlags; + uint8 mFgridWidth[2], mFGridHeight[2]; + char mFGridConfig; + uint8 mColors[6]; +}; + #if 0 #pragma pack(push, 1) struct SPDHeader5 @@ -486,6 +496,7 @@ void SourceFile::ReadCharPad(Errors* errors, const Location& location, SourceFil CTMHeader ctmHeader; CTMHeader8 ctmHeader8; CTMHeader9 ctmHeader9; + CTTHeader9 cttHeader9; uint16 ctmMarker, numChars, numTiles; char tileWidth, tileHeight; @@ -496,10 +507,20 @@ void SourceFile::ReadCharPad(Errors* errors, const Location& location, SourceFil fread(&ctmHeader8, sizeof(CTMHeader8), 1, mFile); break; case 9: - fread(&ctmHeader9, sizeof(CTMHeader9), 1, mFile); - ctmHeader8.mDispMode = ctmHeader9.mDispMode; - ctmHeader8.mColorMethod = ctmHeader9.mColorMethod; - ctmHeader8.mFlags = ctmHeader9.mFlags; + if (ctmHeader.mID[2] == 'T') + { + fread(&cttHeader9, sizeof(CTTHeader9), 1, mFile); + ctmHeader8.mDispMode = cttHeader9.mDispMode; + ctmHeader8.mColorMethod = cttHeader9.mColorMethod; + ctmHeader8.mFlags = cttHeader9.mFlags; + } + else + { + fread(&ctmHeader9, sizeof(CTMHeader9), 1, mFile); + ctmHeader8.mDispMode = ctmHeader9.mDispMode; + ctmHeader8.mColorMethod = ctmHeader9.mColorMethod; + ctmHeader8.mFlags = ctmHeader9.mFlags; + } break; }