bpmが正しいかは分からないけど・・・
#uselib "winmm.dll"
#cfunc timeGetTime "timeGetTime"
#include "hspogg.as"
dmmini
dmmload dir_exe+"\\sample\\demo\\oot06.ogg",0,0
time_total=0.0
bpm=138.0 //一分間の四分音符の数
Beat =60000.0/bpm //四分音符の時間
Beat16=Beat/4
timspd=400.0/(Beat*4) //一小節分の時間で400ドット進む速度
dat=1,0,1,0,0,1,1,0,0,1,1
Beatcnt_bak=-1
nt_list=""
font "MS ゴシック",32,1+16
hitmes=""
wait 50
dmmplay 0
timeA=double(timeGetTime())+10 //開始時の微調整
repeat
redraw 0
color
boxf
if (hitmes ! "") {
color 255,255
pos 200,300
if gcbt<5 {mes hitmes}else{mes hitmes+" "+gcbt}
mes dif
hitcnt++
if hitcnt>20 {hitmes = ""}
}
time_total=double(timeGetTime())-timeA
Beatcnt=int(time_total/Beat) //開始からの四分音符数
if Beatcnt_bak ! Beatcnt {//前回と違う
Beatcnt_bak=Beatcnt
nt_list+str(Beat*Beatcnt)+"\n"
}
color 0,100,0
gradf 0,400,640,2
notesel nt_list
ne_index=0
getkey sp,32//スペース
if sp_bak ! sp {sp_on=sp}else{sp_on=0}
sp_bak=sp
time_total=double(timeGetTime())-timeA
repeat notemax
noteget nt_str,ne_index
ntposy=timspd*(time_total-nt_str)
gradf 100,ntposy,64,4,1,$55555555 | $aaaaaaaa*((time_total-Beat*Beatcnt)<100),$55555555
if sp_on {
if abs(ntposy-400)<64 {
if abs(ntposy-400)<10 {
dif=ntposy-400
hitmes= "GREAT!"
gcbt++
ntposy=500 //消す
}else{
dif=ntposy-400
gcbt=0
hitmes= "GOOD"
ntposy=500 //消す
}
}else{gcbt=0}
hitcnt=0
sp_on=0
}
if ntposy>450 {notedel ne_index :continue}
ne_index++
loop
redraw 1
await 10
loop