diff --git a/melody.c b/melody.c index c554601..574761b 100644 --- a/melody.c +++ b/melody.c @@ -33,18 +33,21 @@ const uint32_t RETURN = 0x20000; const uint32_t refrain[]; const uint32_t quadrupel[]; const uint32_t strophe1[]; +const uint32_t strophe2[]; const uint32_t main_melody[]; const uint32_t *cpu32EntryPoint = main_melody; const uint32_t CALL_REFRAIN = CALL + 0; const uint32_t CALL_QUADRUPEL = CALL + 1; const uint32_t CALL_STROPHE1 = CALL + 2; -const uint32_t GOTO_MAIN_MELODY = 3; +const uint32_t CALL_STROPHE2 = CALL + 3; +const uint32_t GOTO_MAIN_MELODY = 4; const uint32_t *jumplabels[] = { refrain, quadrupel, strophe1, + strophe2, main_melody, }; const uint32_t **cppu32JumpLabels = jumplabels; @@ -190,8 +193,97 @@ const uint32_t strophe1[] = { RETURN, }; +const uint32_t strophe2[] = { + PAUSE(TACT / 8), + TONE(CIS, TACT / 8), + TONE(CIS, TACT / 8), + TONE(B, TACT / 8), + TONE(CIS, TACT / 8), + TONE(DIS, TACT * 3 / 8), + + PAUSE(TACT / 8), + TONE(C, TACT / 8), + TONE(B, TACT / 8), + TONE(B, TACT / 8), + TONE(GIS, TACT / 2), + + PAUSE(TACT / 8), + TONE(B, TACT / 8), + TONE(B, TACT / 8), + TONE(C, TACT / 8), + TONE(CIS, TACT / 8), + TONE(B, TACT / 8), + TONE(GIS, TACT / 4), + + PAUSE(TACT / 8), + TONE(GIS2,TACT / 8), + TONE(GIS2,TACT / 8), + TONE(DIS, TACT / 4), + TONE(F, TACT / 8), + TONE(DIS, TACT / 8), + TONE(CIS, TACT / 8), + + PAUSE(TACT / 8), + TONE(CIS, TACT / 8), + TONE(CIS, TACT / 8), + TONE(B, TACT / 8), + TONE(CIS, TACT / 8), + TONE(B, TACT / 8), + TONE(CIS, TACT / 8), + TONE(DIS, TACT / 8), + + PAUSE(TACT / 8), + TONE(C, TACT / 8), + TONE(B, TACT / 8), + TONE(B, TACT / 8), + TONE(GIS, TACT / 2), + + PAUSE(TACT / 8), + TONE(B, TACT / 8), + TONE(B, TACT / 8), + TONE(C, TACT / 8), + TONE(CIS, TACT / 8), + TONE(B, TACT / 8), + TONE(GIS, TACT / 4), + + PAUSE(TACT / 4), + TONE(DIS, TACT / 8), + TONE(F, TACT / 8), + TONE(F, TACT / 4), + TONE(DIS, TACT / 4), + + TONE(CIS, TACT * 5 / 8), + TONE(DIS, TACT / 8), + TONE(F, TACT / 8), + + TONE(DIS, TACT / 4), // 1/8 tact before, 1/8 tact after + + TONE(DIS, TACT / 8), + TONE(DIS, TACT / 8), + TONE(F, TACT / 8), + TONE(DIS, TACT / 4), + TONE(GIS, TACT / 4), + + PAUSE(TACT / 4), + TONE(GIS, TACT / 8), + TONE(B, TACT / 8), + TONE(C, TACT / 8), + TONE(CIS, TACT / 8), + TONE(B, TACT / 8), + PAUSE(TACT / 8), + + TONE(DIS, TACT / 8), + TONE(F, TACT / 8), + TONE(DIS, TACT / 4), + + RETURN, +}; + const uint32_t main_melody[] = { CALL_STROPHE1, CALL_REFRAIN, + CALL_STROPHE2, + CALL_REFRAIN, + CALL_REFRAIN, GOTO_MAIN_MELODY, };