📄 sacm_user.lst
字号:
// defined by user
//-----------------------
000094E7 88 DA push bp to [sp]
000094E8 08 0B 01 00 bp = sp + 1
000094EA 88 D2 push r1 to [sp]
000094EB 03 92 r1 = [bp+3]
000094EC 40 F0 F1 94 call F_USER_InitAdpcmData_Ch0
000094EE 88 90 pop r1 from [sp]
000094EF 88 98 pop bp from [sp]
//-----------------------
// end of user define area
//-----------------------
000094F0 90 9A retf
.endp
///////////////////////////////////////////////////////////////////////////////
// Function: F_USER_InitAdpcmData_Ch1
// Input : R1=DrumIndex (User defined)
// Output: (User defined)
// Note: 1. This function initializes ADPCM playback from user storage.
// 2. User needs to implement the function body based on the external
// storage type.
///////////////////////////////////////////////////////////////////////////////
F_USER_InitAdpcmData_Ch0:
//-----------------------
// defined by user
//-----------------------
000094F1 98 D6 push r1,r3 to [sp]
// r1 = ADPCM speech index
000094F2 09 07 45 80 r3 = r1 + T_SACM_MS01_DrumTable; // Drum # r1:i/p
000094F4 C3 94 r2 = [r3];
000094F5 0A 07 01 00 r3 = r2 + 0x01;
000094F7 C2 94 r2 = [r2];
000094F8 1A D5 B8 00 [R_AdpcmAddrCh0] = r2 // Got Address
000094FA C3 96 r3 = [r3];
000094FB 5B 97 r3 = r3 lsl 4;
000094FC 5B 97 r3 = r3 lsl 4;
000094FD 4B 97 r3 = r3 lsl 2;
000094FE 1B D7 B7 00 [R_AdpcmBankCh0] = r3 // Got Bank
00009500 98 90 pop r1,r3 from [sp]
//-----------------------
// end of user define area
//-----------------------
00009501 90 9A retf
///////////////////////////////////////////////////////////////////////////////
// Function: _User_InitAdpcmData_Ch1
// Syntax : User_InitAdpcmData_Ch1(DrumIndex)
// Input : DrumIndex (User defined)
// Output: (User defined)
// Note: 1. This C API calls F_User_InitAdpcmData_Ch1 to initialize ADPCM playback
// from user storage.
// 2. User needs to implement the function body based on the external
// storage type.
///////////////////////////////////////////////////////////////////////////////
_USER_InitAdpcmData_Ch1: .proc
//-----------------------
// defined by user
//-----------------------
00009502 88 DA push bp to [sp]
00009503 08 0B 01 00 bp = sp + 1
00009505 88 D2 push r1 to [sp]
00009506 03 92 r1 = [bp+3]
00009507 40 F0 0C 95 call F_USER_InitAdpcmData_Ch1
00009509 88 90 pop r1 from [sp]
0000950A 88 98 pop bp from [sp]
//-----------------------
// end of user define area
//-----------------------
0000950B 90 9A retf
.endp
///////////////////////////////////////////////////////////////////////////////
// Function: F_USER_InitAdpcmData_Ch1
// Input : R1=DrumIndex (User defined)
// Output: (User defined)
// Note: 1. This function initializes ADPCM playback from user storage.
// 2. User needs to implement the function body based on the external
// storage type.
///////////////////////////////////////////////////////////////////////////////
F_USER_InitAdpcmData_Ch1:
//-----------------------
// defined by user
//-----------------------
0000950C 98 D6 push r1,r3 to [sp]
// r1 = ADPCM speech index
0000950D 09 07 45 80 r3 = r1 + T_SACM_MS01_DrumTable; // Drum # r1:i/p
0000950F C3 94 r2 = [r3];
00009510 0A 07 01 00 r3 = r2 + 0x01;
00009512 C2 94 r2 = [r2];
00009513 1A D5 BA 00 [R_AdpcmAddrCh1] = r2 // Got Address
00009515 C3 96 r3 = [r3];
00009516 5B 97 r3 = r3 lsl 4;
00009517 5B 97 r3 = r3 lsl 4;
00009518 4B 97 r3 = r3 lsl 2;
00009519 1B D7 B9 00 [R_AdpcmBankCh1] = r3 // Got Bank
0000951B 98 90 pop r1,r3 from [sp]
//-----------------------
// end of user define area
//-----------------------
0000951C 90 9A retf
///////////////////////////////////////////////////////////////////////////////
// Function: F_USER_MS01_GetAdpcmData_Ch0
// Input: None
// Output: R3
// Note: 1. User protect r1,r2,r5 if used.
// 2. This function fetchs data from user storage and returns to
// MS01 library for ADPCM Ch0 playback. The returned data is carried
// by R3.
// 3. User needs to implement the function body based on the external
// storage type.
///////////////////////////////////////////////////////////////////////////////
F_USER_MS01_GetAdpcmData_Ch0:
//-----------------------
// defined by user
//-----------------------
0000951D 90 D4 push r1,r2 to [sp]
0000951E 12 95 B8 00 r2 = [R_AdpcmAddrCh0]
00009520 13 97 B7 00 r3 = [R_AdpcmBankCh0]
00009522 7F BC sr &= 0x03f // Change Page
00009523 06 A7 r3 |=sr //
00009524 03 9D sr = r3 //
00009525 E2 92 r1 = D:[r2] // Got data
//... Adpcm address +1 ...........
00009526 12 95 B8 00 r2 = [R_AdpcmAddrCh0]; // 6
00009528 41 04 r2+= 1; // 3
00009529 06 4E jnz ?L_NotCrossBankAdpcm;
0000952A 13 97 B7 00 r3 = [R_AdpcmBankCh0] // 9
0000952C 0B 0D 00 04 sr = r3 + 0x400;
0000952E 1E DD B7 00 [R_AdpcmBankCh0] = sr // 9
?L_NotCrossBankAdpcm:
00009530 1A D5 B8 00 [R_AdpcmAddrCh0] = r2; // 6 -> 36
00009532 01 97 r3 = r1 //r3 = ADPCM Data from user
00009533 90 90 pop r1,r2 from [sp]
//-----------------------
// end of user define area
//-----------------------
00009534 90 9A retf
///////////////////////////////////////////////////////////////////////////////
// Function: F_USER_MS01_GetAdpcmData_Ch1
// Input: None
// Output: R3
// Note: 1. User protect r1,r2,r5 if used.
// 2. This function fetchs data from user storage and returns to
// MS01 library for ADPCM Ch1 playback. The returned data is carried
// by R3.
// 3. User needs to implement the function body based on the external
// storage type.
///////////////////////////////////////////////////////////////////////////////
F_USER_MS01_GetAdpcmData_Ch1:
//-----------------------
// defined by user
//-----------------------
00009535 90 D4 push r1,r2 to [sp]
00009536 12 95 BA 00 r2 = [R_AdpcmAddrCh1]
00009538 13 97 B9 00 r3 = [R_AdpcmBankCh1]
0000953A 7F BC sr &= 0x03f // Change Page
0000953B 06 A7 r3 |=sr //
0000953C 03 9D sr = r3 //
0000953D E2 92 r1 = D:[r2] // Got data
//... Adpcm address +1 ...........
0000953E 12 95 BA 00 r2 = [R_AdpcmAddrCh1]; // 6
00009540 41 04 r2+= 1; // 3
00009541 06 4E jnz ?L_NotCrossBankAdpcm
00009542 13 97 B9 00 r3 = [R_AdpcmBankCh1] // 9
00009544 0B 0D 00 04 sr = r3 + 0x400;
00009546 1E DD B9 00 [R_AdpcmBankCh1] = sr // 9
?L_NotCrossBankAdpcm:
00009548 1A D5 BA 00 [R_AdpcmAddrCh1] = r2; // 6 -> 36
0000954A 01 97 r3 = r1 //r3 = ADPCM Data from user
0000954B 90 90 pop r1,r2 from [sp]
//-----------------------
// end of user define area
//-----------------------
0000954C 90 9A retf
0 error(s), 0 warning(s).
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -