mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 15:27:46 -04:00
sound, some ym2612 arm cleanup
This commit is contained in:
parent
f061b89d25
commit
ae4d881a2f
1 changed files with 17 additions and 29 deletions
|
@ -171,22 +171,19 @@
|
||||||
subge r0, r0, #1
|
subge r0, r0, #1
|
||||||
movge r3, #EG_OFF
|
movge r3, #EG_OFF
|
||||||
strgeb r3, [r5,#0x17] @ state
|
strgeb r3, [r5,#0x17] @ state
|
||||||
|
ldrh r3, [r5,#0x18] @ tl
|
||||||
|
b 11f
|
||||||
|
|
||||||
10: @ finish
|
10: @ finish
|
||||||
ldrb r2, [r5,#0x30] @ ssg
|
ldrb r2, [r5,#0x30] @ ssg
|
||||||
ldrb r3, [r5,#0x17] @ state
|
|
||||||
strh r0, [r5,#0x1a] @ volume
|
|
||||||
cmp r2, #0x0c @ if ( ssg&0x04 && state > EG_REL )
|
|
||||||
cmpge r3, #EG_REL+1
|
|
||||||
ldrh r3, [r5,#0x18] @ tl
|
ldrh r3, [r5,#0x18] @ tl
|
||||||
rsbge r0, r0, #0x200 @ volume = (0x200-volume) & MAX_ATT
|
strh r0, [r5,#0x1a] @ volume
|
||||||
movge r0, r0, lsl #22
|
recalc_volume_ssg r0 r2
|
||||||
movge r0, r0, lsr #22
|
|
||||||
|
|
||||||
11:
|
11:
|
||||||
#endif
|
|
||||||
add r0, r0, r3 @ volume += tl
|
add r0, r0, r3 @ volume += tl
|
||||||
strh r0, [r5,#0x34] @ vol_out
|
strh r0, [r5,#0x34] @ vol_out
|
||||||
|
#endif
|
||||||
|
|
||||||
0: @ EG_OFF
|
0: @ EG_OFF
|
||||||
.endm
|
.endm
|
||||||
|
@ -247,31 +244,19 @@
|
||||||
9:
|
9:
|
||||||
ldrb r0, [r5,#0x30] @ ssg
|
ldrb r0, [r5,#0x30] @ ssg
|
||||||
ldrh r2, [r5,#0x18] @ tl
|
ldrh r2, [r5,#0x18] @ tl
|
||||||
cmp r0, #0x0c
|
recalc_volume_ssg r3 r0
|
||||||
rsbge r3, r3, #0x200 @ volume = (0x200-volume) & MAX_ATT
|
|
||||||
movge r3, r3, lsl #22
|
|
||||||
movge r3, r3, lsr #22
|
|
||||||
add r3, r3, r2 @ volume += tl
|
add r3, r3, r2 @ volume += tl
|
||||||
strh r3, [r5,#0x34] @ vol_out
|
strh r3, [r5,#0x34] @ vol_out
|
||||||
10:
|
10:
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
@ r5=slot, trashes: r0,r2,r3
|
@ r5=slot
|
||||||
.macro recalc_volout
|
.macro recalc_volume_ssg vol ssg
|
||||||
ldrb r2, [r5,#0x30] @ ssg
|
@ and \ssg, \ssg, #0x0c
|
||||||
ldrb r3, [r5,#0x17] @ state
|
cmp \ssg, #0x0c @ if (~ssg&0x0c)
|
||||||
ldrh r0, [r5,#0x1a] @ volume
|
rsbge \vol, \vol, #0x200 @ volume = (0x200-volume) & MAX_ATT
|
||||||
|
movge \vol, \vol, lsl #22
|
||||||
@ and r2, r2, #0x0c
|
movge \vol, \vol, lsr #22
|
||||||
cmp r2, #0x0c @ if ( ~ssg&0x0c && state > EG_REL )
|
|
||||||
cmpge r3, #EG_REL+1
|
|
||||||
ldrh r3, [r5,#0x18] @ tl
|
|
||||||
rsbge r0, r0, #0x200 @ volume = (0x200-volume) & MAX_ATT
|
|
||||||
movge r0, r0, lsl #22
|
|
||||||
movge r0, r0, lsr #22
|
|
||||||
|
|
||||||
add r0, r0, r3 @ volume += tl
|
|
||||||
strh r0, [r5,#0x34] @ vol_out
|
|
||||||
.endm
|
.endm
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -708,8 +693,11 @@ ssg_upd_loop:
|
||||||
@ use lr as a pointer to the slot phases stored in the context
|
@ use lr as a pointer to the slot phases stored in the context
|
||||||
update_ssg_eg
|
update_ssg_eg
|
||||||
#if 0
|
#if 0
|
||||||
|
tst r6, #1
|
||||||
|
addeq lr, lr, #2*4
|
||||||
|
subne lr, lr, #4
|
||||||
subs r6, r6, #1
|
subs r6, r6, #1
|
||||||
addne lr, lr, #4
|
addeq lr, lr, #4
|
||||||
addne r5, r5, #SLOT_STRUCT_SIZE
|
addne r5, r5, #SLOT_STRUCT_SIZE
|
||||||
#else
|
#else
|
||||||
add lr, lr, #4
|
add lr, lr, #4
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue