//9 has graphics

         <1>/* Graphics Not Rendered in HTML */







#define X       330
#define Y       35

F64 t0=Beat;

U0 DrawIt(CTask *,CDC *dc)
{
  I64 i;
  F64 x,y,dt=Beat-t0;
  Sprite3(dc,X,Y,0,<1>);
  if (Beat-t0<24) {
    if (Rand<0.7) {
      dc->color=YELLOW;
      GrPlot(dc,X-12,Y+1);
      GrPlot(dc,X-12,Y+2);
      GrPlot(dc,X-11,Y+4);
      GrPlot(dc,X+10,Y+4);
      GrPlot(dc,X+4,Y+4);
      GrPlot(dc,X+5,Y+4);
      GrPlot(dc,X+6,Y+4);
      GrPlot(dc,X+7,Y+5);
      GrPlot(dc,X+8,Y+5);
    }
    for (i=0;i<512;i++) {
      x=1.0-Rand`3.0;
      y=Rand;
      x=5.0*Sin(pi*Sqrt(y))*x;
      y=25.0*y;
      if (Rand*(x*x+2.0)*Sqrt(y)<4.0) {
        if (Rand<0.5)
          dc->color=BLUE;
        else
          dc->color=LTBLUE;
      } else
        dc->color=YELLOW;
      if (RandI16<0)
        x=-x;
      x+=150.0*Sin(pi*dt)/(35-y)`1.5;
      GrPlot(dc,X+x,Y-y);
    }
  }
}

U0 Song()
{
  SettingsPush; //See SettingsPush
  Fs->text_attr=BLACK<<4+LTGRAY;
  Fs->draw_it=&DrawIt;
  Fs->task_end_cb=&SndTaskEndCB;
  MusicSettingsRst;
  music.tempo=2.0;
  try {
    "$BG+H,BLACK$$FD+H,LTGRAY$";
    while (TRUE) {
      t0=Beat;
      "$WHITE$God said this was a dirge.\n$FG$";
      Play("5FqDqD4eA5CqEqEqDqDq",
            "Gone \0to \0sleep \0for \0the \0fi\0nal \0time.\n\0");
      Play("5FqDqD4eA5CqEqEqDqDq",
            "Gone \0to \0sleep \0for \0the \0fi\0nal \0time.\n\0");
      Play("5DqGqFeGFqFqEqE4qBq",
            " \0Ash \0to... \0and \0 \0dust \0to \0dust.\n\0");
      Play("5DqGqFeGFqFqEqE4qBq",
            " \0Ash \0to... \0and \0 \0dust \0to \0dust.\n\0");
    }
  } catch
    PutExcept;
  SettingsPop;
}

Song;