添加一些关于midi播放的项目
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
#include "Player.h"
|
||||
#include "AsmCommon.h"
|
||||
|
||||
.globl PlayNoteTimingCheck
|
||||
.globl PlayUpdateNextScoreTick
|
||||
|
||||
.text
|
||||
PlayNoteTimingCheck:
|
||||
;if((currentTick>>8)>=player->lastScoreTick)
|
||||
movw zl,arg0l
|
||||
cli
|
||||
lds t0l,(currentTick+1)
|
||||
ldd t0h,Z+pLastScoreTick_b0
|
||||
cp t0l,t0h
|
||||
lds t0l,(currentTick+2)
|
||||
ldd t0h,Z+pLastScoreTick_b1
|
||||
cpc t0l,t0h
|
||||
lds t0l,(currentTick+3)
|
||||
ldd t0h,Z+pLastScoreTick_b2
|
||||
cpc t0l,t0h
|
||||
sei
|
||||
clr arg0l
|
||||
brlo playNoteTimingCheckEnd
|
||||
com arg0l
|
||||
playNoteTimingCheckEnd:
|
||||
ret
|
||||
|
||||
PlayUpdateNextScoreTick:
|
||||
; ; tempU32=player->lastScoreTick;
|
||||
; ; do
|
||||
; ; {
|
||||
; ; temp=*(player->scorePointer);
|
||||
; ; player->scorePointer++;
|
||||
; ; tempU32+=temp;
|
||||
; ; } while (temp==0xFF);
|
||||
; ; player->lastScoreTick=tempU32;
|
||||
push yl
|
||||
push yh
|
||||
movw yl,arg0l
|
||||
varTickAccumulateLoop:
|
||||
ldd t0l,Y+pScorePointer
|
||||
ldd t0h,Y+(pScorePointer+1)
|
||||
movw zl,t0l
|
||||
lpm t0l,Z
|
||||
sec
|
||||
adc zl,zero
|
||||
adc zh,zero
|
||||
std Y+pScorePointer,zl
|
||||
std Y+(pScorePointer+1),zh
|
||||
|
||||
ldd t0h,Y+pLastScoreTick_b0
|
||||
add t0h,t0l
|
||||
std Y+pLastScoreTick_b0,t0h
|
||||
|
||||
ldd t0h,Y+pLastScoreTick_b1
|
||||
adc t0h,zero
|
||||
std Y+pLastScoreTick_b1,t0h
|
||||
|
||||
ldd t0h,Y+pLastScoreTick_b2
|
||||
adc t0h,zero
|
||||
std Y+pLastScoreTick_b2,t0h
|
||||
|
||||
ldd t0h,Y+pLastScoreTick_b3
|
||||
adc t0h,zero
|
||||
std Y+pLastScoreTick_b3,t0h
|
||||
|
||||
cpi t0l,0xff
|
||||
breq varTickAccumulateLoop
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
.end
|
||||
|
||||
Reference in New Issue
Block a user