Bake in this strange vibrato speed multiplication to precalculated vibrato value (where possible)
This commit is contained in:
		
							parent
							
								
									868747e3c3
								
							
						
					
					
						commit
						4736b305f9
					
				@ -106,6 +106,7 @@ solve this problem.
 | 
				
			|||||||
- Optimized base displacement by reordering variables
 | 
					- Optimized base displacement by reordering variables
 | 
				
			||||||
- Further optimized ADSR code
 | 
					- Further optimized ADSR code
 | 
				
			||||||
- Optimized wave loop code
 | 
					- Optimized wave loop code
 | 
				
			||||||
 | 
					- Bake in this strange vibrato speed multiplication to precalculated vibrato value (where possible)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### V1.0 (26-Dec-22)
 | 
					### V1.0 (26-Dec-22)
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 | 
				
			|||||||
@ -793,8 +793,12 @@ pre_SongInit:
 | 
				
			|||||||
        move.b  pre_vib_depth_table-pre_vib_delay_table(a5,d1.w),uii_vibrato_depth+1(a4)
 | 
					        move.b  pre_vib_depth_table-pre_vib_delay_table(a5,d1.w),uii_vibrato_depth+1(a4)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        move.b  (a0)+,d1                        ; ii_vibrato_speed
 | 
					        move.b  (a0)+,d1                        ; ii_vibrato_speed
 | 
				
			||||||
        move.b  pre_vib_speed_table-pre_vib_delay_table(a5,d1.w),uii_vibrato_speed+1(a4)
 | 
					        move.b  pre_vib_speed_table-pre_vib_delay_table(a5,d1.w),d1
 | 
				
			||||||
 | 
					        muls    uii_vibrato_depth(a4),d1        ; bake in this strange vibrato stuff
 | 
				
			||||||
 | 
					        asr.w   #4,d1
 | 
				
			||||||
 | 
					        move.w  d1,uii_vibrato_speed(a4)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        moveq.l #0,d1
 | 
				
			||||||
        move.b  (a0)+,d1                        ; ii_adsr_attack
 | 
					        move.b  (a0)+,d1                        ; ii_adsr_attack
 | 
				
			||||||
        add.w   d1,d1
 | 
					        add.w   d1,d1
 | 
				
			||||||
        lea     pre_fast_roll_off_16(pc),a5
 | 
					        lea     pre_fast_roll_off_16(pc),a5
 | 
				
			||||||
@ -2765,6 +2769,8 @@ pre_PlayerTick:
 | 
				
			|||||||
        move.b  (a1,d2.w),pcd_vibrato_depth_w+1(a5)
 | 
					        move.b  (a1,d2.w),pcd_vibrato_depth_w+1(a5)
 | 
				
			||||||
        lsr.b   #4,d5
 | 
					        lsr.b   #4,d5
 | 
				
			||||||
        move.b  pre_vib_speed_table-pre_vib_depth_table(a1,d5.w),d2
 | 
					        move.b  pre_vib_speed_table-pre_vib_depth_table(a1,d5.w),d2
 | 
				
			||||||
 | 
					        muls    pcd_vibrato_depth_w(a5),d2
 | 
				
			||||||
 | 
					        asr.w   #4,d2
 | 
				
			||||||
        move.w  d2,pcd_vibrato_speed_w(a5)
 | 
					        move.w  d2,pcd_vibrato_speed_w(a5)
 | 
				
			||||||
        bra     .pat_play_cont
 | 
					        bra     .pat_play_cont
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -3709,19 +3715,10 @@ pre_PlayerTick:
 | 
				
			|||||||
        move.b  d1,pcd_vibrato_delay_w+1(a5)
 | 
					        move.b  d1,pcd_vibrato_delay_w+1(a5)
 | 
				
			||||||
        bne.s   .vibrato_still_delayed
 | 
					        bne.s   .vibrato_still_delayed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ; activate vibrato
 | 
					 | 
				
			||||||
        move.w  pcd_vibrato_depth_w(a5),d4
 | 
					 | 
				
			||||||
        move.w  d4,d2
 | 
					 | 
				
			||||||
        muls    pcd_vibrato_speed_w(a5),d2  ; i don't quite get this...
 | 
					 | 
				
			||||||
        asr.w   #4,d2
 | 
					 | 
				
			||||||
        move.w  d2,pcd_vibrato_speed_w(a5)
 | 
					 | 
				
			||||||
        bra.s   .vibrato_cont_act
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.vibrato_already_active
 | 
					.vibrato_already_active
 | 
				
			||||||
        move.w  pcd_vibrato_speed_w(a5),d2
 | 
					        move.w  pcd_vibrato_speed_w(a5),d2
 | 
				
			||||||
        beq.s   .vibrato_still_delayed      ; no speed -- skip stuff
 | 
					        beq.s   .vibrato_disabled      ; no speed -- skip stuff
 | 
				
			||||||
        move.w  pcd_vibrato_depth_w(a5),d4
 | 
					        move.w  pcd_vibrato_depth_w(a5),d4
 | 
				
			||||||
.vibrato_cont_act
 | 
					 | 
				
			||||||
        move.w  d2,d1
 | 
					        move.w  d2,d1
 | 
				
			||||||
        add.w   pcd_vibrato_pos_w(a5),d1
 | 
					        add.w   pcd_vibrato_pos_w(a5),d1
 | 
				
			||||||
        cmp.w   d1,d4
 | 
					        cmp.w   d1,d4
 | 
				
			||||||
@ -3738,9 +3735,11 @@ pre_PlayerTick:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        asr.w   #3,d1
 | 
					        asr.w   #3,d1
 | 
				
			||||||
        add.w   d1,d0
 | 
					        add.w   d1,d0
 | 
				
			||||||
 | 
					.vibrato_disabled
 | 
				
			||||||
.vibrato_still_delayed
 | 
					.vibrato_still_delayed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
; ----------------------------------------
 | 
					; ----------------------------------------
 | 
				
			||||||
 | 
					; select right sample corresponding to current pitch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        move.w  pcd_out_len_w(a5),d3
 | 
					        move.w  pcd_out_len_w(a5),d3
 | 
				
			||||||
        cmpi.w  #$219,d0
 | 
					        cmpi.w  #$219,d0
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user