📄 sub_function2.s01
字号:
EX DE,HL
CALL LWRD VMRead
POP HL
; 180. g_PowerOffFlag = kval.rtcresetflag;
LD A,(IX-48)
LD (g_PowerOffFlag),A
; 181.
; 182. //read comval
; 183. result = VMRead(& g_comval, VM_SYSTEM, sizeof(g_comval));
LD HL,32
PUSH HL
LD BC,512
LD DE,g_comval
CALL LWRD VMRead
POP HL
; 184. ASSERT(result);
; 185.
; 186. //check if valid
; 187. if (g_comval.magic != MAGIC_COMVAL)
LD HL,57005
LD BC,(g_comval)
AND A
SBC HL,BC
JR Z,?0058
?0057:
; 188. {
; 189. DUMP_STRING("comval init-ed!");
; 190. GetDefaultComval(&g_comval);
LD DE,g_comval
CALL LWRD GetDefaultComval
?0058:
; 191. }
; 192.
; 193. ap_message_init(& g_comval);
LD DE,g_comval
LD A,BYTE3 ap_message_init
LD HL,LWRD ap_message_init
CALL LWRD ?BANK_CALL_DIRECT_L08
; 194.
; 195. //read ap vars
; 196. result = VMRead(& g_music_vars, VM_AP_MUSIC, sizeof(g_music_vars));
LD HL,95
PUSH HL
LD BC,4096
LD DE,g_music_vars
CALL LWRD VMRead
POP HL
; 197. ASSERT(result);
; 198.
; 199. //check if valid
; 200. if (g_music_vars.magic != MAGIC_MUSIC)
LD HL,(g_music_vars+93)
LD BC,48879
AND A
SBC HL,BC
JR Z,?0060
?0059:
; 201. {
; 202. BYTE i;
; 203.
; 204. DUMP_STRING("vars init-ed!");
; 205. g_music_vars.magic = MAGIC_MUSIC;
LD (g_music_vars+93),BC
; 206. g_music_vars.volume = 24;
LD A,24
LD (g_music_vars),A
; 207. output8(0x87, 24|0xe0);
LD A,248
OUT (135),A
; 208. g_music_vars.eq_type = 0;
XOR A
LD (g_music_vars+2),A
; 209. g_music_vars.replaytimes = 5;
LD A,5
LD (g_music_vars+4),A
; 210. g_music_vars.replaygap = 1;
LD A,1
LD (g_music_vars+5),A
; 211. g_music_vars.repeat_mode = FSEL_ALL_SEQUENCE;
XOR A
LD (g_music_vars+1),A
; 212. g_music_vars.play_rate = 0;
LD (g_music_vars+3),A
; 213. g_music_vars.location.disk = 'C';
LD A,67
LD (g_music_vars+7),A
; 214. g_music_vars.play_listmod = mlistnor;
LD A,5
LD (g_music_vars+80),A
; 215. g_music_vars.fselmod = FSEL_TYPE_COMMONDIR;
XOR A
LD (g_music_vars+81),A
; 216. g_music_vars.MusicOpenMod = Nor_open;
LD (g_music_vars+6),A
; 217. g_music_vars.SRSMod.Wow=8;
LD A,8
LD (g_music_vars+83),A
; 218. g_music_vars.SRSMod.Bass=8;
LD (g_music_vars+84),A
; 219. g_music_vars.SRSMod.Srs=4;
LD A,4
LD (g_music_vars+85),A
; 220. g_music_vars.file_list_type = 0xff;
LD A,255
LD (g_music_vars+92),A
; 221. g_music_vars.file_list_num = 0;
LD HL,0
LD (g_music_vars+90),HL
; 222. strcpy(g_music_vars.location.path, FS_CD_ROOT);
LD DE,?0061
LD HL,g_music_vars+21
CALL LWRD ?STRCPY_L11
; 223. ClearTimePara();
LD A,BYTE3 ClearTimePara
LD HL,LWRD ClearTimePara
CALL LWRD ?BANK_CALL_DIRECT_L08
?0060:
; 224. }
; 225. if(g_from_browser)
LD A,(g_from_browser)
OR A
JR Z,?0063
?0062:
; 226. {
; 227. VMRead(&temp_browser_vars, VM_AP_BROWSER, sizeof(browser_vars_t));
LD HL,45
PUSH HL
LD BC,19456
LD L,15
ADD HL,SP
EX DE,HL
CALL LWRD VMRead
POP HL
; 228. memcpy(&g_music_vars.location, &temp_browser_vars.location, sizeof(file_location_t));
LD BC,43
LD DE,g_music_vars+7
LD HL,13
ADD HL,SP
LD C,2
ADD HL,BC
LD C,43
LDIR
; 229. g_music_vars.file_list_type = 0xff;
LD A,255
LD (g_music_vars+92),A
; 230. ClearTimePara();
LD A,BYTE3 ClearTimePara
LD HL,LWRD ClearTimePara
CALL LWRD ?BANK_CALL_DIRECT_L08
?0063:
; 231. }
; 232. list.string_id = g_comval.langid;
LD A,(g_comval+12)
LD (list+8),A
; 233. }
JP LWRD ?BANK_LEAVE_DIRECT_L08
openDAC:
; 234.
; 235.
; 236.
; 237. void openDAC(void)
; 238. {
PUSH DE
PUSH AF
PUSH AF
; 239. dac_t dacattr;
; 240. sfr IO80_dac = 0x80;
; 241. sfr IO8B_dac = 0x8b;
; 242. dacattr.dacselect = 0;
LD HL,0
ADD HL,SP
LD (HL),0
; 243. dacattr.rate = FS_8K;
INC HL
LD (HL),8
; 244. EnableDAC(& dacattr);
DEC HL
EX DE,HL
CALL LWRD EnableDAC
; 245. IO80_dac = IO80_dac | 0x08; //test
IN A,(128)
OR 8
OUT (128),A
; 246. IO8B_dac = IO8B_dac | 0x10; //test
IN A,(139)
OR 16
OUT (139),A
; 247. }
POP HL
POP HL
POP DE
JP LWRD ?BANK_FAST_LEAVE_L08
ClearTimePara:
; 248.
; 249. void ClearTimePara(void)
; 250. {
PUSH BC
PUSH DE
; 251. BYTE i;
; 252. g_music_vars.MusicOpenMod = Nor_open;
XOR A
LD (g_music_vars+6),A
; 253. g_music_vars.BreakPTSave.breakPT = 0; //开始断点为0
LD C,A
LD L,C
LD B,A
LD H,B
LD (g_music_vars+50),HL
LD (g_music_vars+52),BC
; 254. g_music_vars.BreakPTDisTime.hour = 0;
LD (g_music_vars+77),A
; 255. g_music_vars.BreakPTDisTime.minute = 0;
LD (g_music_vars+78),A
; 256. g_music_vars.BreakPTDisTime.second = 0;
LD (g_music_vars+79),A
; 257. g_music_vars.BreakPTSave.ApointSave = 0; //开始断点为0
LD (g_music_vars+54),HL
LD (g_music_vars+56),BC
; 258. g_music_vars.BreakPTSave.BpointSave = 0; //开始断点为0
LD (g_music_vars+58),HL
LD (g_music_vars+60),BC
; 259. for (i = 0; i<12; i++)
LD E,0
?0065:
LD A,E
CP 12
JR NC,?0064
?0066:
; 260. { //清0时间记录
; 261. g_music_vars.BreakPTSave.breakPTTime[i] = 0;
LD HL,g_music_vars+62
LD C,E
ADD HL,BC
LD (HL),B
INC E
JR ?0065
?0064:
; 262. }
; 263. StartIntro(TRUE)//因为时间清0了,所以浏览要从头开始
LD A,1
LD (g_introCntMode),A
LD A,(g_music_vars+79)
LD (g_OldSecTempBackup),A
XOR A
LD (g_introCNT),A
; 264. }
POP DE
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
ChangeVolume:
; 265.
; 266. //============改变音量================
; 267. int ChangeVolume( void )
; 268. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW -12
PUSH IY
; 269. wma_play_status_t status_buf;
; 270. int key;
; 271. slider_t slider;
; 272. return_to_play=1;
LD A,1
LD (return_to_play),A
; 273. slider.string_id=g_comval.langid;
LD A,(g_comval+12)
LD (IX-2),A
; 274. if (RePlayStatus != NormalPlay)
LD A,(RePlayStatus)
OR A
JP Z,?0069
?0068:
; 275. {
; 276. if (g_currentMusicType == Music_MP3)
LD A,(g_currentMusicType)
DEC A
JP NZ,?0131
?0070:
; 277. {
; 278.
; 279. if (g_music_vars.location.disk != 'C')
LD A,(g_music_vars+7)
CP 67
JP NZ,?0131
?0072:
; 280. {
; 281. //如不是“C”盘就不进行速度调节
; 282. return 0;
; 283. }
?0073:
; 284. //show background
; 285. ClearScreen(NULL);
LD DE,0
CALL LWRD ClearScreen
; 286. slider.max = 8;
LD (IX-8),8
LD (IX-7),0
; 287. slider.min = -8;
LD (IX-10),248
LD (IX-9),255
; 288. slider.step = 1;
LD (IX-4),1
LD (IX-3),0
; 289. slider.title=MPLAY3;
LD (IX-12),212
LD (IX-11),1
; 290. CheckPlayrateLimit();
LD A,BYTE3 CheckPlayrateLimit
LD HL,LWRD CheckPlayrateLimit
CALL LWRD ?BANK_CALL_DIRECT_L08
; 291. slider.value = g_music_vars.play_rate;
LD BC,(g_music_vars+3)
LD A,C
RLCA
SBC A,A
LD B,A
LD (IX-6),C
LD (IX-5),B
; 292. ui_auto_update=FALSE;
XOR A
LD (ui_auto_update),A
; 293. g_result = ui_slider(& slider, speed_callback);
LD C,BYTE3 speed_callback
PUSH BC
LD HL,LWRD speed_callback
PUSH HL
LD HL,6
ADD HL,SP
EX DE,HL
LD A,BYTE3 ui_slider
LD HL,LWRD ui_slider
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
LD (g_result),HL
; 294. ui_auto_update = TRUE;
; 295. g_music_vars.play_rate = slider.value;
LD A,(IX-6)
LD (g_music_vars+3),A
; 296.
; 297. SetFullInterface();
XOR A
LD (ui_auto_update),A
LD IY,UpDisplayFlag
LD A,(IY+0)
OR 193
LD (IY+0),A
LD (IY+1),255
; 298. need_draw = TRUE;
LD A,1
LD (need_draw),A
; 299.
; 300. if (g_result != 0)
LD A,L
OR H
JR Z,?0131
?0074:
; 301. {
; 302. return g_result;
JR ?0078
; 303. }
?0075:
?0071:
; 304.
; 305. }
; 306. return 0;
; 307. }
?0069:
; 308.
; 309. //show background
; 310. slider.min = 0;
LD (IX-10),A
LD (IX-9),A
; 311. slider.max = 31;
LD (IX-8),31
LD (IX-7),A
; 312. slider.value = g_music_vars.volume;
LD BC,(g_music_vars)
LD A,C
RLCA
SBC A,A
LD B,A
LD (IX-6),C
LD (IX-5),B
; 313. slider.step = 1;
LD (IX-4),1
LD (IX-3),0
; 314. slider.title=CHANGEVO;
LD (IX-12),137
LD (IX-11),1
; 315. g_result = ui_slider(& slider, volume_callback);
LD C,BYTE3 volume_callback
PUSH BC
LD HL,LWRD volume_callback
PUSH HL
LD HL,6
ADD HL,SP
EX DE,HL
LD A,BYTE3 ui_slider
LD HL,LWRD ui_slider
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
LD (g_result),HL
; 316. ui_auto_update = TRUE;
LD A,1
LD (ui_auto_update),A
; 317. StartIntro(FALSE);
XOR A
LD (g_introCntMode),A
LD A,(g_music_vars+79)
LD (g_OldSecTempBackup),A
XOR A
LD (g_introCNT),A
; 318.
; 319. if (g_result != 0)
LD A,L
OR H
JR NZ,?0078
?0076:
; 320. {
; 321. return g_result;
; 322. }
?0077:
; 323. SetFullInterface();
LD (ui_auto_update),A
LD HL,UpDisplayFlag
LD A,(HL)
OR 193
LD (HL),A
INC HL
LD (HL),255
; 324. need_draw = TRUE;
LD A,1
LD (need_draw),A
; 325. return 0;
?0131:
LD HL,0
; 326. }
?0078:
POP IY
JP LWRD ?BANK_LEAVE_DIRECT_L08
GetInformation:
; 327.
; 328.
; 329. /*
; 330. ********************************************************************************
; 331. * int GetInformation(void)
; 332. *
; 333. * Description : 读取歌曲信息,歌词
; 334. *
; 335. * Arguments : void
; 336. *
; 337. * Returns : int
; 338. *
; 339. * Notes :
; 340. *
; 341. ********************************************************************************
; 342. */
; 343. int GetInformation( void )
; 344. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 65520
; 345. char g_lyric_mod;
; 346. int result;
; 347. ID3Info_t ID3;
; 348.
; 349. //清 WATCH_DOG
; 350. output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
IN A,(78)
SET 3,A
OUT (78),A
; 351. g_currentMusicType = CheckMusicType(g_music_vars.location.filename);
LD DE,g_music_vars+33
LD A,BYTE3 CheckMusicType
LD HL,LWRD CheckMusicType
CALL LWRD ?BANK_CALL_DIRECT_L08
LD A,L
LD (g_currentMusicType),A
; 352. ID3.TIT2_length = 30;
LD (IX-12),30
; 353. ID3.TPE1_length = 30;
LD (IX-9),30
; 354. ID3.TALB_length = 30;
LD (IX-6),30
; 355. ID3.TENC_length = 0;
LD (IX-3),0
; 356. ID3.TIT2_buffer = & g_TagInfoBuf[0];
LD (IX-11),LOW(g_TagInfoBuf)
LD (IX-10),HIGH(g_TagInfoBuf)
; 357. ID3.TPE1_buffer = & g_TagInfoBuf[30];
LD (IX-8),LOW(g_TagInfoBuf+30)
LD (IX-7),HIGH(g_TagInfoBuf+30)
; 358. ID3.TALB_buffer = & g_TagInfoBuf[60];
LD (IX-5),LOW(g_TagInfoBuf+60)
LD (IX-4),HIGH(g_TagInfoBuf+60)
; 359. ID3.TENC_buffer = & g_TagInfoBuf[90];
LD (IX-2),LOW(g_TagInfoBuf+90)
LD (IX-1),HIGH(g_TagInfoBuf+90)
; 360.
; 361. switch (g_currentMusicType)
CP 2
JR C,?0089
CP 5
JR NC,?0089
?0080:
; 362. {
; 363. case Music_WMA:
; 364. case Music_WMV:
; 365. case Music_ASF:
; 366. ID3.TALB_length = 30;
LD (IX-6),30
; 367. if (wmaGetTAGInfo(g_music_vars.location.filename, &ID3))
LD HL,4
ADD HL,SP
LD C,L
LD B,H
LD DE,g_music_vars+33
LD A,BYTE3 wmaGetTAGInfo
LD HL,LWRD wmaGetTAGInfo
CALL LWRD ?BANK_CALL_DIRECT_L08
INC L
DEC L
JR Z,?0082
?0081:
; 368. {
; 369. unitochar(g_TagInfoBuf, 30, g_comval.langid);
LD HL,g_comval+12
LD C,(HL)
PUSH BC
LD BC,30
CALL LWRD ?0149
POP AF
; 370. unitochar(&g_TagInfoBuf[30], 30, g_comval.langid);
LD HL,g_comval+12
LD C,(HL)
PUSH BC
LD BC,30
LD DE,g_TagInfoBuf+30
CALL LWRD ?0148
POP AF
; 371. unitochar(&g_TagInfoBuf[60], 30, g_comval.langid);
LD HL,g_comval+12
LD C,(HL)
PUSH BC
LD BC,30
LD DE,g_TagInfoBuf+60
CALL LWRD ?0148
POP AF
; 372. if ( (g_TagInfoBuf[0] !=0)
; 373. || (g_TagInfoBuf[30] !=0)||(g_TagInfoBuf[60]!=0))
LD A,(g_TagInfoBuf)
OR A
JR NZ,?0085
LD A,(g_TagInfoBuf+30)
OR A
JR NZ,?0085
LD A,(g_TagInfoBuf+60)
OR A
JR Z,?0088
?0085:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -