X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=samples%2Fnachtm.c;h=6c78ebcb2c9a5c3feebc6e98e1953126a20b8489;hb=2b50847a4c168bd368b0905c6aa325aa16f1123f;hp=e442418d25f8e940ce1899e844492a68afb5dba9;hpb=1507eb6d678dab2345d684d7b4eaf942e6ad44aa;p=cc65 diff --git a/samples/nachtm.c b/samples/nachtm.c index e442418d2..6c78ebcb2 100644 --- a/samples/nachtm.c +++ b/samples/nachtm.c @@ -13,6 +13,7 @@ #include +#include #include #include #include @@ -41,7 +42,7 @@ -static int Voice1 [] = { +static unsigned Voice1 [] = { 0x5708,0x8004,0x5204,0x5708,0x8004,0x5204,0x5704,0x5204,0x5704,0x5B04, 0x6208,0x8008,0x6008,0x8004,0x5904,0x6008,0x8004,0x5904,0x6004,0x5904, 0x5604,0x5904,0x5208,0x8008,0x5704,0x8004,0x570C,0x5B01,0x5B01,0x5B01, @@ -395,7 +396,7 @@ static int Voice1 [] = { 0x0000 }; -static int Voice2 [] = { +static unsigned Voice2 [] = { 0x4708,0x8004,0x4204,0x4708,0x8004,0x4204,0x4704,0x4204,0x4704,0x4B04, 0x5208,0x8008,0x5008,0x8004,0x4904,0x5008,0x8004,0x4904,0x5004,0x4904, 0x4604,0x4904,0x4208,0x8008,0x4704,0x4704,0x4704,0x4704,0x4704,0x4704, @@ -615,7 +616,7 @@ static int Voice2 [] = { 0x0000 }; -static int Voice3 [] = { +static unsigned Voice3 [] = { 0x3708,0x8004,0x3204,0x3708,0x8004,0x3204,0x3704,0x3204,0x3704,0x3B04, 0x3208,0x8008,0x4008,0x8004,0x3904,0x4008,0x8004,0x3904,0x4004,0x3904, 0x3604,0x4904,0x4208,0x8008,0x3704,0x3704,0x3704,0x3704,0x3704,0x3704, @@ -857,15 +858,6 @@ static int Voice3 [] = { -/* Screen sizes */ -#ifdef __CBM610__ -# define MAX_X 80 -#else -# define MAX_X 40 -#endif - - - #if defined(__C64__) || defined(__CBM510__) static unsigned long FreqTab [12] = { #ifndef NTSC @@ -897,7 +889,7 @@ typedef struct { unsigned char Trigger; /* Trigger value */ unsigned char Ticks; /* Ticks for this tone */ unsigned Freq; /* Actual frequency value */ - int* Data; /* Pointer to data */ + unsigned* Data; /* Pointer to data */ struct __sid_voice* Voice; /* Pointer to sid registers */ } VoiceCtrl; @@ -917,6 +909,9 @@ static VoiceCtrl* V [3] = { &V1, &V2, &V3 }; +/* Screen dimensions */ +static unsigned char XSize, YSize; + /* Variable that contains the time of the next clock tick to play a note */ static unsigned char NextClock; @@ -934,7 +929,7 @@ static unsigned char Done; /*****************************************************************************/ -/* Code */ +/* Code */ /*****************************************************************************/ @@ -943,7 +938,7 @@ static void MakeTeeLine (unsigned char Y) /* Make a divider line */ { cputcxy (0, Y, CH_LTEE); - chline (MAX_X - 2); + chline (XSize - 2); cputc (CH_RTEE); } @@ -953,27 +948,27 @@ static void MakeNiceScreen (void) /* Make a nice screen */ { typedef struct { - unsigned char X; unsigned char Y; char* Msg; } TextDesc; static TextDesc Text [] = { - { (MAX_X / 2) - 11, 2, "Wolfgang Amadeus Mozart" }, - { (MAX_X / 2) - 12, 4, "\"Eine kleine Nachtmusik\"" }, - { (MAX_X / 2) - 4, 5, "(KV 525)" }, - { (MAX_X / 2) - 14, 9, "Ported to the SID in 1987 by" }, - { (MAX_X / 2) - 10, 11, "Joachim von Bassewitz" }, - { (MAX_X / 2) - 13, 12, "(joachim@von-bassewitz.de)" }, - { (MAX_X / 2) - 1, 13, "and" }, - { (MAX_X / 2) - 10, 14, "Ullrich von Bassewitz" }, - { (MAX_X / 2) - 13, 15, "(ullrich@von-bassewitz.de)" }, - { (MAX_X / 2) - 9, 18, "C Implementation by" }, - { (MAX_X / 2) - 10, 19, "Ullrich von Bassewitz" }, - { (MAX_X / 2) - 11, 23, "Press any key to quit..." }, + { 2, "Wolfgang Amadeus Mozart" }, + { 4, "\"Eine kleine Nachtmusik\"" }, + { 5, "(KV 525)" }, + { 9, "Ported to the SID in 1987 by" }, + { 11, "Joachim von Bassewitz" }, + { 12, "(joachim@von-bassewitz.de)" }, + { 13, "and" }, + { 14, "Ullrich von Bassewitz" }, + { 15, "(ullrich@von-bassewitz.de)" }, + { 18, "C Implementation by" }, + { 19, "Ullrich von Bassewitz" }, + { 23, "Press any key to quit..." }, }; - TextDesc* T; + register const TextDesc* T; unsigned char I; + unsigned char X; /* Clear the screen hide the cursor, set colors */ #ifdef __CBM610__ @@ -988,7 +983,7 @@ static void MakeNiceScreen (void) /* Top line */ cputcxy (0, 0, CH_ULCORNER); - chline (MAX_X - 2); + chline (XSize - 2); cputc (CH_URCORNER); /* Left line */ @@ -996,11 +991,11 @@ static void MakeNiceScreen (void) /* Bottom line */ cputc (CH_LLCORNER); - chline (MAX_X - 2); + chline (XSize - 2); cputc (CH_LRCORNER); /* Right line */ - cvlinexy (MAX_X - 1, 1, 23); + cvlinexy (XSize - 1, 1, 23); /* Several divider lines */ MakeTeeLine (7); @@ -1008,8 +1003,9 @@ static void MakeNiceScreen (void) /* Write something into the frame */ for (I = 0, T = Text; I < sizeof (Text) / sizeof (Text [0]); ++I) { - cputsxy (T->X, T->Y, T->Msg); - ++T; + X = (XSize - strlen (T->Msg)) / 2; + cputsxy (X, T->Y, T->Msg); + ++T; } } @@ -1059,13 +1055,16 @@ int main (void) unsigned char I; unsigned char Tone; unsigned char Octave; - unsigned Val; + unsigned Val; struct __sid_voice* Voice; - VoiceCtrl* VC; + register VoiceCtrl* VC; /* Initialize the debugger */ DbgInit (0); + /* Get the screen dimensions */ + screensize (&XSize, &YSize); + /* Make a nice screen */ MakeNiceScreen ();