CoolFace
Datasetpublic

hschumann2/TempleOS-Source-Code

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes838downloads
JukePuppet.txt91 linesDownload Raw Back to Psalmody
1 2U0 SongPuppet(CTask *task,I64 passes)3{4  CDbgInfo *dbg_info;5  I64 i,start,end,rip,last_rip;6  CHashFun *tmpf=NULL;7  for (i=0;i<250 && TaskValidate(task);i++) {8    if (tmpf=HashFind("Song",task->hash_table,HTT_FUN))9      break;10    Sleep(1);11  }12  if (tmpf && (dbg_info=tmpf->dbg_info)) {13    start=dbg_info->body[0];14    end  =dbg_info->body[dbg_info->max_line+1-dbg_info->min_line];15    last_rip=0;16    while (TRUE) {17      i=0;18      while (TaskValidate(task) && (rip=TaskCaller(task,i++))) {19        if (start<=rip<end) {20          if (rip<last_rip && --passes<=0)21            return;22          last_rip=rip;23        }24      }25      Sleep(1);26    }27  }28}29 30U0 JukeSongPuppet(CTask *juke_task,I64 passes,I64 song_num,U8 *name)31{32  Bool found;33  CTask *task;34  I64 i;35 36  if (FileExtDot(name))37    FileExtRem(name);38  BirthWait(&juke_task->popup_task);39  TaskWait(juke_task->popup_task);40  PostMsg(juke_task->popup_task,MSG_KEY_DOWN_UP,0,SC_CURSOR_UP+SCF_CTRL);41  TaskWait(juke_task->popup_task);42  for (i=0;i<song_num;i++) {43    PostMsg(juke_task->popup_task,MSG_KEY_DOWN_UP,0,SC_CURSOR_RIGHT);44    TaskWait(juke_task->popup_task);45  }46 47  PostMsg(juke_task->popup_task,MSG_KEY_DOWN_UP,CH_SPACE,0);48  TaskWait(juke_task->popup_task);49  Sleep(500);50 51  found=FALSE;52  task=Fs->next_task;53  while (task!=Fs) {54    if (!StrCmp(task->task_title,name)) {55      found=TRUE;56      break;57    }58    task=task->next_task;59  }60 61  if (found) {//Position cursor on song title during song62    TaskWait(juke_task->popup_task);63    PostMsg(juke_task->popup_task,MSG_KEY_DOWN_UP,0,SC_CURSOR_UP+SCF_CTRL);64    TaskWait(juke_task->popup_task);65    for (i=0;i<song_num;i++) {66      PostMsg(juke_task->popup_task,MSG_KEY_DOWN_UP,0,SC_CURSOR_RIGHT);67      TaskWait(juke_task->popup_task);68    }69    SongPuppet(task,passes);70  }71  Kill(task);72}73 74public U0 JukeSongsPuppet(U8 *dirname="~/Psalmody",I64 passes=2,75                        I64 start_song=0,I64 end_song=I64_MAX)76{//Help make music video by puppeting JukeBox task.77  I64 i;78  CDirEntry *tmpde,*tmpde1;79  CTask *juke_task=User("JukeBox(0x%X);\n",dirname);80  Cd(dirname);81  tmpde1=FilesFind("*",FUF_RECURSE|FUF_JUST_TXT|FUF_JUST_FILES);82  for (tmpde=tmpde1,i=0;tmpde && i<start_song;i++)83    tmpde=tmpde->next;84  for (i=start_song;tmpde && i<end_song;i++) {85    JukeSongPuppet(juke_task,passes,i,tmpde->name);86    tmpde=tmpde->next;87  }88  DirTreeDel(tmpde1);89  Kill(juke_task);90}91