📄 sub_function2.s01
字号:
NAME sub_function2(17)
RSEG CODE(0)
RSEG CSTR(0)
RSEG CONST(0)
RSEG IDATA0(0)
RSEG CDATA0(0)
EXTERN BankSwitch
PUBLIC ChangeVolume
PUBLIC CheckMusicType
PUBLIC CheckPlayrateLimit
PUBLIC CheckReplaygapLimit
PUBLIC CheckReplaytimesLimit
PUBLIC CheckVolumeLimit
EXTERN ClearScreen
PUBLIC ClearTimePara
PUBLIC ClosePA
PUBLIC DealForDRMsong
EXTERN DisablePA
EXTERN DisplayErrMsg
PUBLIC DisplayTimeRollback
EXTERN EnableDAC
EXTERN EnablePA
EXTERN FS_Backup
EXTERN FS_CD
EXTERN FS_GetName
EXTERN FS_Restore
EXTERN GetAPEInfoByNo
EXTERN GetDefaultComval
PUBLIC GetInformation
EXTERN OutPutVolume
EXTERN RePlayStatus
EXTERN ResShowMultiString
EXTERN SetBackgdColor
EXTERN SetPenColor
EXTERN UpDisplayFlag
EXTERN VMRead
EXTERN ap_get_message
EXTERN ap_message_init
EXTERN ap_sleep
EXTERN dir_name
EXTERN fselGetLocation
EXTERN g_OldSecTempBackup
EXTERN g_PAOpenFlag
EXTERN g_PowerOffFlag
EXTERN g_TagInfoBuf
EXTERN g_comval
EXTERN g_currentMusicType
EXTERN g_introCNT
EXTERN g_introCntMode
EXTERN g_lyricflag
EXTERN g_music_vars
EXTERN g_result
EXTERN lyricLoad
EXTERN lyricQueryExist
PUBLIC make_dirname
EXTERN mp3GetID3Info
EXTERN musicpSendCommand
EXTERN need_draw
PUBLIC openDAC
PUBLIC openPA
PUBLIC read_var
EXTERN return_to_play
EXTERN slider
EXTERN speed_callback
PUBLIC temp_buffer
EXTERN ui_auto_update
EXTERN ui_dialog
EXTERN ui_slider
EXTERN unitochar
EXTERN volume_callback
EXTERN wmaGetTAGInfo
EXTERN ?CLZ80B_4_04_L00
EXTERN ?BANK_CALL_DIRECT_L08
EXTERN ?BANK_LEAVE_DIRECT_L08
EXTERN ?BANK_FAST_LEAVE_L08
EXTERN ?ENT_AUTO_DIRECT_L09
EXTERN ?STRCPY_L11
EXTERN ?STRCAT_L11
EXTERN ?MEMSET_L11
EXTERN ?STRCMP_L11
RSEG CODE
CheckVolumeLimit:
; 1. /*
; 2. *******************************************************************************
; 3. * ACTOS AP
; 4. * This program demostrates how to build an AP
; 5. *
; 6. * (c) Copyright Actions Co,Ld.
; 7. *
; 8. * $Id: sub_function2.c,v 1.1.1.1 2006/05/22 03:24:01 selina Exp $
; 9. *******************************************************************************
; 10. */
; 11. #include "ap_music.h"
; 12.
; 13. extern char g_TagInfoBuf[90];
; 14. extern SD_FILE* g_Resfp_Sav;
; 15. extern char return_to_play ;
; 16.
; 17. //extern bool ActiveDriveOK;
; 18.
; 19. char temp_buffer[6] = { 0 };
; 20. void OutPutVolume(int vol);
; 21. int DealForDRMsong(void);
; 22. int ui_dialog(dialog_t *dialog,int string_id);
; 23. BOOL GetAPEInfoByNo(char *filename, ID3Info_t *ID3, BYTE mode);
; 24.
; 25. void CheckVolumeLimit( void )
; 26. {
PUSH BC
; 27. if (g_music_vars.volume>31) g_music_vars.volume = 31;
LD A,(g_music_vars)
LD B,A
LD A,31
SUB B
JP PO,?0135
XOR 128
?0135:
JP P,?0003
?0002:
LD A,31
LD (g_music_vars),A
?0003:
; 28.
; 29. if (g_music_vars.volume<0) g_music_vars.volume = 0;
LD A,(g_music_vars)
OR A
JP P,?0005
?0004:
XOR A
LD (g_music_vars),A
?0005:
; 30. }
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
CheckPlayrateLimit:
; 31.
; 32. void CheckPlayrateLimit( void )
; 33. {
PUSH BC
; 34. if (g_music_vars.play_rate > 8)
LD A,(g_music_vars+3)
LD B,A
LD A,8
SUB B
JP PO,?0136
XOR 128
?0136:
JP P,?0007
?0006:
; 35. {
; 36. g_music_vars.play_rate = 8;
LD A,8
LD (g_music_vars+3),A
?0007:
; 37. }
; 38. if (g_music_vars.play_rate < -8)
LD A,(g_music_vars+3)
XOR 128
CP 120
JR NC,?0009
?0008:
; 39. {
; 40. g_music_vars.play_rate = -8;
LD A,248
LD (g_music_vars+3),A
?0009:
; 41. }
; 42. }
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
CheckReplaygapLimit:
; 43.
; 44. void CheckReplaygapLimit( void )
; 45. {
PUSH BC
; 46. if (g_music_vars.replaygap<1)
LD A,(g_music_vars+5)
CP 1
JR NC,?0011
?0010:
; 47. {
; 48. g_music_vars.replaygap = 1;
LD A,1
LD (g_music_vars+5),A
?0011:
; 49. }
; 50. if (g_music_vars.replaygap>10)
LD B,A
LD A,10
CP B
JR NC,?0013
?0012:
; 51. {
; 52. g_music_vars.replaygap = 10;
LD (g_music_vars+5),A
?0013:
; 53. }
; 54. }
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
CheckReplaytimesLimit:
; 55.
; 56. void CheckReplaytimesLimit( void )
; 57. {
PUSH BC
; 58. if (g_music_vars.replaytimes<1)
LD A,(g_music_vars+4)
CP 1
JR NC,?0015
?0014:
; 59. {
; 60. g_music_vars.replaytimes = 1;
LD A,1
LD (g_music_vars+4),A
?0015:
; 61. }
; 62. if (g_music_vars.replaytimes>10)
LD B,A
LD A,10
CP B
JR NC,?0017
?0016:
; 63. {
; 64. g_music_vars.replaytimes = 10;
LD (g_music_vars+4),A
?0017:
; 65. }
; 66. }
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
CheckMusicType:
; 67.
; 68. //-------------------------------------
; 69. /*
; 70. ********************************************************************************
; 71. * void StartIntro( bool mode )
; 72. *
; 73. * Description : 启动INTRO模式 mode = true 为 从头开始 = false 为从当前开始
; 74. *
; 75. * Arguments : bool mode
; 76. *
; 77. * Returns : void
; 78. *
; 79. * Notes :
; 80. *
; 81. ********************************************************************************
; 82. */
; 83. //
; 84. //void StartIntro( bool mode )
; 85. //{
; 86. // g_introCntMode = mode;
; 87. // /* 用来比较出秒的变化 */
; 88. // //g_OldSecTempBackup = 0;
; 89. // g_OldSecTempBackup = g_music_vars.BreakPTDisTime.second;
; 90. // g_introCNT = 0;
; 91. //}
; 92. //
; 93. /*
; 94. ********************************************************************************
; 95. * Music_type_t CheckMusicType(char *filename)
; 96. *
; 97. * Description : 检测当前是哪种类型的MUSIC文件
; 98. *
; 99. * Arguments : char *filename 文件名
; 100. *
; 101. * Returns : Music_type_t 文件类型
; 102. *
; 103. * Notes :
; 104. *
; 105. ********************************************************************************
; 106. */
; 107. Music_type_t CheckMusicType( char * filename )
; 108. {
PUSH BC
PUSH IX
LD HL,65508
ADD HL,SP
LD SP,HL
PUSH DE
POP IX
; 109. const char ExtMusicstr [] [4] =
; 110. {
; 111. "MP3", "WMA", "ASF", "WMV", "OGG", "APE"
; 112. };
LD HL,4
ADD HL,SP
EX DE,HL
LD HL,?0018
LD BC,24
LDIR
; 113.
; 114. BYTE ext[4];
; 115. memcpy(ext, filename + 8, 3);
LD L,C
LD H,B
ADD HL,SP
EX DE,HL
LD HL,8
PUSH IX
POP BC
ADD HL,BC
LD BC,3
LDIR
; 116. ext[0] = (ext[0]>='a' && ext[0]<='z') ? ext[0] - 'a' + 'A' : ext[0];
LD L,C
LD H,B
ADD HL,SP
LD A,(HL)
CP 97
JR C,?0022
LD A,122
CP (HL)
JR C,?0022
LD A,(HL)
ADD A,224
JR ?0023
?0022:
LD A,(HL)
?0023:
LD (HL),A
; 117. ext[1] = (ext[1]>='a' && ext[1]<='z') ? ext[1] - 'a' + 'A' : ext[1];
INC HL
LD A,(HL)
CP 97
JR C,?0028
LD A,122
CP (HL)
JR C,?0028
LD A,(HL)
ADD A,224
JR ?0029
?0028:
LD A,(HL)
?0029:
LD (HL),A
; 118. ext[2] = (ext[2]>='a' && ext[2]<='z') ? ext[2] - 'a' + 'A' : ext[2];
INC HL
LD A,(HL)
CP 97
JR C,?0034
LD A,122
CP (HL)
JR C,?0034
LD A,(HL)
ADD A,224
JR ?0035
?0034:
LD A,(HL)
?0035:
LD (HL),A
; 119. ext[3] = 0;
INC HL
LD (HL),B
; 120.
; 121. if (strcmp(ext, ExtMusicstr[0]) == 0)
DEC HL
DEC HL
DEC HL
EX DE,HL
LD HL,4
ADD HL,SP
CALL LWRD ?0152
JR NZ,?0038
?0037:
; 122. {
; 123. return Music_MP3;
LD L,1
; 124. }
JR ?0049
?0038:
; 125. else if (strcmp(ext, ExtMusicstr[1]) == 0)
LD L,C
LD H,B
ADD HL,SP
EX DE,HL
LD HL,4
ADD HL,SP
LD C,4
CALL LWRD ?0153
JR NZ,?0040
?0039:
; 126. {
; 127. return Music_WMA;
LD L,2
; 128. }
JR ?0049
?0040:
; 129. else if (strcmp(ext, ExtMusicstr[2]) == 0)
LD L,B
LD H,B
ADD HL,SP
EX DE,HL
LD L,C
LD H,B
ADD HL,SP
LD C,8
CALL LWRD ?0153
JR NZ,?0042
?0041:
; 130. {
; 131. return Music_ASF;
LD L,3
; 132. }
JR ?0049
?0042:
; 133. else if (strcmp(ext, ExtMusicstr[3]) == 0)
LD L,B
LD H,B
ADD HL,SP
EX DE,HL
LD HL,4
ADD HL,SP
LD C,12
CALL LWRD ?0153
JR NZ,?0044
?0043:
; 134. {
; 135. return Music_WMV;
LD L,4
; 136. }
JR ?0049
?0044:
; 137. else if (strcmp(ext, ExtMusicstr[4]) == 0)
LD L,B
LD H,B
ADD HL,SP
EX DE,HL
LD HL,4
ADD HL,SP
LD C,16
CALL LWRD ?0153
JR NZ,?0046
?0045:
; 138. {
; 139. return Music_OGG;
LD L,5
; 140. }
JR ?0049
?0046:
; 141. else if (strcmp(ext, ExtMusicstr[5]) == 0)
LD L,B
LD H,B
ADD HL,SP
EX DE,HL
LD HL,4
ADD HL,SP
LD C,20
CALL LWRD ?0153
JR NZ,?0048
?0047:
; 142. {
; 143. return Music_APE;
LD L,6
; 144. }
JR ?0049
?0048:
; 145. else
; 146. {
; 147. return Music_NON;
LD L,B
; 148. }
?0049:
EX DE,HL
LD HL,28
ADD HL,SP
LD SP,HL
EX DE,HL
POP IX
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
?0153:
ADD HL,BC
?0152:
CALL LWRD ?STRCMP_L11
LD A,L
OR H
RET
; 149. }
make_dirname:
; 150.
; 151. /*
; 152. ********************************************************************************
; 153. * void read_var(void)
; 154. *
; 155. * Description : 读系统变量和ap局部变量
; 156. *
; 157. * Arguments : void
; 158. *
; 159. * Returns : void
; 160. *
; 161. * Notes :
; 162. *
; 163. ********************************************************************************
; 164. */
; 165. void make_dirname(void)
; 166. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 65502
; 167. int result;
; 168. char Backbuf[32];
; 169.
; 170. fselGetLocation(&g_music_vars.location);
LD DE,g_music_vars+7
LD A,BYTE3 fselGetLocation
LD HL,LWRD fselGetLocation
CALL LWRD ?BANK_CALL_DIRECT_L08
; 171. if(g_music_vars.location.path[0]==':')
LD A,(g_music_vars+21)
CP 58
JR NZ,?0051
?0050:
; 172. {
; 173. strcpy(dir_name,"ROOT");
LD DE,?0052
LD HL,dir_name
CALL LWRD ?STRCPY_L11
; 174. }
; 175. else
JR ?0053
?0051:
; 176. {
; 177.
; 178. FS_Backup(Backbuf,FS_BACKUP_DIRINFO,0);//目录项备份
LD HL,0
PUSH HL
LD C,2
LD L,4
ADD HL,SP
EX DE,HL
CALL LWRD FS_Backup
POP HL
; 179.
; 180. // dir_name[0] = ':';
; 181. // FS_CD(dir_name);
; 182. FS_CD("\\");
LD DE,?0054
CALL LWRD FS_CD
; 183. memcpy(dir_name, g_music_vars.location.path, 12);
LD BC,12
LD DE,dir_name
LD HL,g_music_vars+21
LDIR
; 184. result = FS_GetName(dir_name, 14); //取出长名
LD C,14
LD DE,dir_name
CALL LWRD FS_GetName
LD B,0
; 185. if (result != 0)
OR A
JR Z,?0056
?0055:
; 186. {
; 187. unitochar(dir_name, sizeof(dir_name), g_comval.langid);
LD HL,g_comval+12
LD C,(HL)
PUSH BC
LD C,30
LD DE,dir_name
CALL LWRD ?0155
POP AF
; 188. }
; 189. else
JR ?0057
?0056:
; 190. {
; 191. memcpy(dir_name, g_music_vars.location.path, 12);
LD C,12
LD DE,dir_name
LD HL,g_music_vars+21
LDIR
; 192. dir_name[8]=0;
LD (dir_name+8),A
; 193. dir_name[9]=0;
LD (dir_name+9),A
?0057:
; 194. }
; 195. FS_Restore(Backbuf,FS_RESTORE_DIRINFO,0);//目录项恢复
LD HL,0
PUSH HL
LD C,2
LD L,4
ADD HL,SP
EX DE,HL
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -