Created
July 19, 2023 18:41
-
-
Save viciious/0b8b0ee75dfd6deaebadfb5ef1eef6ff to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
movem.l d2-d7/a2-a5,-(sp) | |
move.l sp@(44),a0 | adpcm state pointer | |
move.l sp@(48),a1 | write pointer | |
move.l sp@(52),d0 | length | |
move.l d0,d7 | |
lsr.l #1,d7 | |
subq.l #1,d7 | |
move.l 0(a0),a5 | read pointer | |
moveq #0,d2 | |
move.w 4(a0),d2 | index | |
moveq #0,d6 | |
move.w 6(a0),d6 | value | |
lea adpcm_ima_indices,a3 | |
lea adpcm_ima_deltas,a2 | |
lea pcm_u8_to_sm_lut,a4 | |
moveq #0,d0 | |
moveq #0,d1 | |
swap d7 | |
samplePair2: | |
swap d7 | |
samplePair: | |
move.b (a5)+,d1 | 8 | |
move.b d1,d0 | 4 | |
andi.b #0x0F,d0 | 8 | |
andi.b #0xF0,d1 | 8 | |
lsr.b #3,d1 | 12 | |
add.b d0,d0 | 4 | |
| = 44 | |
firstSample: | |
move.w d2,d3 | 4 | |
add.w d0,d3 | 4 | |
move.w (a3,d3.w),d2 | 14 | update index | |
add.w d3,d3 | 4 | |
add.l (a2,d3.w),d6 | 18 | |
spl d3 | 4 | |
ext.w d3 | 4 | |
and.w d3,d6 | 4 | d6 == 0 if d6 < 0 | |
clampMin0Done: | |
btst.l #16,d6 | 6 | test for bit 16 - 1 if d6 > 0xffff | |
beq.s clampMax0Done | 10 or 12 | |
move.l d3,d6 | |
clampMax0Done: | |
move.w d6,-(sp) | 8 | |
move.b (sp)+,d0 | 8 | |
move.b (a4,d0.w),(a1) | 18 | |
secondSample: | |
move.w d2,d3 | 4 | |
add.w d1,d3 | 4 | |
move.w (a3,d3.w),d2 | 14 | update index | |
add.w d3,d3 | 4 | |
add.l (a2,d3.w),d6 | 16 | |
spl d3 | 4 | |
ext.w d3 | 4 | |
and.w d3,d6 | 4 | d6 == 0 if d6 < 0 | |
clampMin1Done: | |
btst.l #16,d6 | 6 | test for bit 16 - 1 if d6 > 0xffff | |
beq.s clampMax1Done | 10 or 12 | |
move.l d3,d6 | |
clampMax1Done: | |
move.w d6,-(sp) | 8 | |
move.b (sp)+,d0 | 8 | |
move.b (a4,d0.w),2(a1) | 22 | |
addq #4,a1 | 8 | |
| = 220-224 | |
dbf d7, samplePair | 12 | |
swap d7 | |
dbf d7, samplePair2 | |
move.l a5,0(a0) | |
move.w d2,4(a0) | |
move.w d6,6(a0) | |
movem.l (sp)+,d2-d7/a2-a5 | |
rts |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment