📄 playsub.asm
字号:
FrqTable:
.DW C_Timer_Setting_12500_For_49MHz
.DW C_Timer_Setting_13000_For_49MHz
.DW C_Timer_Setting_13500_For_49MHz
.DW C_Timer_Setting_14500_For_49MHz
.DW C_Timer_Setting_15000_For_49MHz
.DW C_Timer_Setting_16000_For_49MHz // 8
.DW C_Timer_Setting_17000_For_49MHz
.DW C_Timer_Setting_18000_For_49MHz
.DW C_Timer_Setting_17227_For_49MHz
.DW C_Timer_Setting_17915_For_49MHz
.DW C_Timer_Setting_18605_For_49MHz
.DW C_Timer_Setting_19983_For_49MHz
.DW C_Timer_Setting_20671_For_49MHz
.DW C_Timer_Setting_22050_For_49MHz // 12
.DW C_Timer_Setting_23428_For_49MHz
.DW C_Timer_Setting_24806_For_49MHz
.DW C_Timer_Setting_25000_For_49MHz
.DW C_Timer_Setting_26000_For_49MHz
.DW C_Timer_Setting_27000_For_49MHz
.DW C_Timer_Setting_29000_For_49MHz
.DW C_Timer_Setting_30000_For_49MHz
.DW C_Timer_Setting_32000_For_49MHz // 16
.DW C_Timer_Setting_34000_For_49MHz
.DW C_Timer_Setting_36000_For_49MHz
GetTimer:
R2=C_Timer_Setting_16000_For_49MHz
R1=[_PlayFrq]
JE GetTimer_
R2=C_Timer_Setting_22050_For_49MHz
GetTimer_:
RETF
RampUpDAC:
PUSH R1,R3 TO [SP]
R1 = 0x0008
[P_DAC_Ctrl] = R1
R3=0
RampUpDAC1Prev:
R1=[P_DAC1]
R1&=~0x003F
CMP R1,0x8000
JB RampUpDAC1PrevAdd
JA RampUpDAC2Prev
R3|=DAC1OkBit
JMP RampUpDAC2Prev
RampUpDAC1PrevAdd:
R3|=DAC1AddBit
RampUpDAC2Prev:
R2=[P_DAC2]
R2&=~0x003F
CMP R2,0x8000
JB RampUpDAC2PrevAdd
JA RampUpDAC0
R3|=DAC2OkBit
TEST R3, DAC1OkBit
JNE RampUpDACEnd
JMP RampUpDAC0
RampUpDAC2PrevAdd:
R3|=DAC2AddBit
RampUpDAC0:
CALL F_Delay
RampUpDAC1:
TEST R3, DAC1OkBit
JNE RampUpDAC2
TEST R3, DAC1AddBit
JNE RampUpDAC1Add
RampUpDAC1Sub:
R1-=0x40
JMP RampUpDAC1_
RampUpDAC1Add:
R1+=0x40
RampUpDAC1_:
[P_DAC1]=R1
CMP R1,0x8000
JNE RampUpDAC2
R3|=DAC1OkBit
TEST R3, DAC2OkBit
JNE RampUpDACEnd
RampUpDAC2:
TEST R3, DAC2OkBit
JNE RampUpDAC0
TEST R3, DAC2AddBit
JNE RampUpDAC2Add
RampUpDAC2Sub:
R2-=0x40
JMP RampUpDAC2_
RampUpDAC2Add:
R2+=0x40
RampUpDAC2_:
[P_DAC2]=R2
CMP R2,0x8000
JNE RampUpDAC0
R3|=DAC2OkBit
TEST R3, DAC1OkBit
JE RampUpDAC0
RampUpDACEnd:
CALL F_Delay
POP R1,R3 FROM [SP]
RETF
RampDnDAC:
PUSH R1,R3 TO [SP]
R1 = 0x0008
[P_DAC_Ctrl] = R1
R3=0
R1=[P_DAC1]
R1&=~0x003F
JNE RampDnDAC_
R3|=DAC1OkBit
RampDnDAC_:
R2=[P_DAC2]
R2&=~0x003F
JNE RampDnDAC0
R3|=DAC2OkBit
TEST R3, DAC1OkBit
JNE RampDnDACEnd
RampDnDAC0:
CALL F_Delay
RampDnDAC1:
TEST R3, DAC1OkBit
JNE RampDnDAC2
R1-=0x40
[P_DAC1]=R1
JNE RampDnDAC2
R3|=DAC1OkBit
TEST R3, DAC2OkBit
JNE RampDnDACEnd
RampDnDAC2:
TEST R3, DAC2OkBit
JNE RampDnDAC0
R2-=0x40
[P_DAC2]=R2
JNE RampDnDAC0
R3|=DAC2OkBit
TEST R3, DAC1OkBit
JE RampDnDAC0
RampDnDACEnd:
CALL F_Delay
POP R1,R3 FROM [SP]
RETF
F_Delay:
push r1 to [sp]
r1 = C_RampDelay; // Ramp Up/Dn delay per step
L_D_Loop:
r1 -= 1
jnz L_D_Loop
pop r1 from [sp]
RETF
_InitSacm:
R1 = SACM_IDLE
[_SacmStatus] = R1
R1 = 0
[P_INT_Ctrl] = R1
[R_InterruptStatus] = R1
CALL CloseADC
FIQ ON
RETF
F_SACM_DVR1600_GetADC:
R1 = [P_ADC]
RETF
CloseADC:
CALL RampDnDAC
R1 = 0x0002
[P_ADC_Ctrl] = R1
RETF
// R1=Addr(BP+1) R2=Length(BP+2)
F_USER_S200_GetData:
F_USER_S530_GetData:
F_USER_S480_GetData:
F_USER_DVR1600_GetData:
F_USER_MS01_GetData:
F_USER_GetData:
PUSH R1, R5 TO [SP]
F_USER_GetData2:
R3 = [_PlayStartAddr]
R4 = [_PlayStartBank]
R5=R2
R2=R2 LSL 1
R2+=R3
[_PlayStartAddr]=R2
JCC F_USER_GetData_
R2=R4+1
[_PlayStartBank]=R2
F_USER_GetData_:
R2=R1
CALL ReadNandWordBuf
F_USER_GetData_End:
POP R1, R5 FROM [SP]
RETF
Play_MS02:
Play_A20:
Play_S200:
Play_S480:
Play_S720:
PC=Play_Init_End
_SP_RampDnDAC2:
F_SP_RampDnDAC2:
_SP_RampDnDAC1:
F_SP_RampDnDAC1:
F_SP_RampDnDAC:
RETF
_SP_RampUpDAC2:
F_SP_RampUpDAC2:
_SP_RampUpDAC1:
F_SP_RampUpDAC1:
F_SP_RampUpDAC:
RETF
F_SP_SACM_DVR1600_ADC_Timer_Init:
F_SP_SACM_DVR1600_DAC_Timer_Init:
F_SP_SACM_DVR1600_DAC_TimerDiv2_:
F_SP_SACM_DVR1600_ADC_TimerDiv2_:
T_SACM_S480_SpeechTable:
T_SACM_S200_SpeechTable:
T_SACM_S530_SpeechTable:
T_SACM_MS01_SongTable:
F_USER_InitAdpcmData_Ch0:
F_USER_InitAdpcmData_Ch1:
F_USER_MS01_GetAdpcmData_Ch0:
F_USER_MS01_GetAdpcmData_Ch1:
F_SACM_MS01_SongEvent:
F_SP_SwitchChannel:
RETF
F_SACM_S200_SendDAC1:
F_SACM_S530_SendDAC1:
F_SACM_S480_SendDAC1:
F_SACM_MS01_SendDAC1:
F_SACM_DVR1600_SendDAC1:
[P_DAC1] = R4
RETF
F_SACM_S200_SendDAC2:
F_SACM_S530_SendDAC2:
F_SACM_S480_SendDAC2:
F_SACM_MS01_SendDAC2:
F_SACM_DVR1600_SendDAC2:
[P_DAC2] = R4
RETF
F_SACM_S200_EndPlay:
F_SACM_S530_EndPlay:
F_SACM_S480_EndPlay:
F_SACM_MS01_EndPlay:
F_SACM_DVR1600_EndPlay:
T_SACM_DVR1600_SpeechTable:
RETF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -