Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; ========================================================================>>>
- ;VintSubA
- Vint_S2SS:
- stopZ80
- bsr.w ReadJoypads
- bsr.w SSSet_VScroll
- dma68kToVDP Normal_palette,$0000,palette_line_size*4,CRAM
- dma68kToVDP SS_Sprite_Table,VRAM_SS_Sprite_Attribute_Table,VRAM_SS_Sprite_Attribute_Table_Size,VRAM
- tst.b (SS_Alternate_HorizScroll_Buf).w
- beq.s loc_906
- dma68kToVDP SS_Horiz_Scroll_Buf_2,VRAM_SS_Horiz_Scroll_Table,VRAM_SS_Horiz_Scroll_Table_Size,VRAM
- bra.s loc_92A
- ; ---------------------------------------------------------------------------
- loc_906:
- dma68kToVDP SS_Horiz_Scroll_Buf_1,VRAM_SS_Horiz_Scroll_Table,VRAM_SS_Horiz_Scroll_Table_Size,VRAM
- loc_92A:
- tst.b (SSTrack_Orientation).w ; Is the current track frame flipped?
- beq.s ++ ; Branch if not
- moveq #0,d0
- move.b (SSTrack_drawing_index).w,d0 ; Get drawing position
- cmpi.b #4,d0 ; Have we finished drawing and streaming track frame?
- bge.s ++ ; Branch if yes (nothing to draw)
- add.b d0,d0 ; Convert to index
- tst.b (SS_Alternate_PNT).w ; [(SSTrack_drawing_index) * 2] = subroutine
- beq.s + ; Branch if not using the alternate Plane A name table
- addi_.w #8,d0 ; ([(SSTrack_drawing_index) * 2] + 8) = subroutine
- +
- move.w SS_PNTA_Transfer_Table(pc,d0.w),d0
- jsr SS_PNTA_Transfer_Table(pc,d0.w)
- +
- bsr.w SSRun_Animation_Timers
- addi_.b #1,(SSTrack_drawing_index).w ; Run track timer
- move.b (SSTrack_drawing_index).w,d0 ; Get new timer value
- cmp.b d1,d0 ; Is it less than the player animation timer?
- blt.s +++ ; Branch if so
- move.b #0,(SSTrack_drawing_index).w ; Start drawing new frame
- lea (VDP_control_port).l,a6
- tst.b (SS_Alternate_PNT).w ; Are we using the alternate address for plane A?
- beq.s + ; Branch if not
- move.w #$8200|(VRAM_SS_Plane_A_Name_Table1/$400),(a6) ; Set PNT A base to $C000
- bra.s ++
- ; ===========================================================================
- ;off_97A
- SS_PNTA_Transfer_Table: offsetTable
- offsetTableEntry.w loc_A50 ; 0
- offsetTableEntry.w loc_A76 ; 1
- offsetTableEntry.w loc_A9C ; 2
- offsetTableEntry.w loc_AC2 ; 3
- offsetTableEntry.w loc_9B8 ; 4
- offsetTableEntry.w loc_9DE ; 5
- offsetTableEntry.w loc_A04 ; 6
- offsetTableEntry.w loc_A2A ; 7
- ; ===========================================================================
- +
- move.w #$8200|(VRAM_SS_Plane_A_Name_Table2/$400),(a6) ; Set PNT A base to $8000
- +
- eori.b #1,(SS_Alternate_PNT).w ; Toggle flag
- +
- bsr.w ProcessDMAQueue
- startZ80
- bsr.w ProcessDPLC2
- tst.w (Demo_Time_left).w
- beq.w + ; rts
- subq.w #1,(Demo_Time_left).w
- +
- rts
- ; ---------------------------------------------------------------------------
- ; (!)
- ; Each of these functions copies one fourth of pattern name table A into VRAM
- ; from a buffer in main RAM. $700 bytes are copied each frame, with the target
- ; are in VRAM depending on the current drawing position.
- loc_9B8:
- dma68kToVDP PNT_Buffer,VRAM_SS_Plane_A_Name_Table1 + 0 * (PNT_Buffer_End-PNT_Buffer),PNT_Buffer_End-PNT_Buffer,VRAM
- rts
- ; ---------------------------------------------------------------------------
- loc_9DE:
- dma68kToVDP PNT_Buffer,VRAM_SS_Plane_A_Name_Table1 + 1 * (PNT_Buffer_End-PNT_Buffer),PNT_Buffer_End-PNT_Buffer,VRAM
- rts
- ; ---------------------------------------------------------------------------
- loc_A04:
- dma68kToVDP PNT_Buffer,VRAM_SS_Plane_A_Name_Table1 + 2 * (PNT_Buffer_End-PNT_Buffer),PNT_Buffer_End-PNT_Buffer,VRAM
- rts
- ; ---------------------------------------------------------------------------
- loc_A2A:
- dma68kToVDP PNT_Buffer,VRAM_SS_Plane_A_Name_Table1 + 3 * (PNT_Buffer_End-PNT_Buffer),PNT_Buffer_End-PNT_Buffer,VRAM
- rts
- ; ---------------------------------------------------------------------------
- loc_A50:
- dma68kToVDP PNT_Buffer,VRAM_SS_Plane_A_Name_Table2 + 0 * (PNT_Buffer_End-PNT_Buffer),PNT_Buffer_End-PNT_Buffer,VRAM
- rts
- ; ---------------------------------------------------------------------------
- loc_A76:
- dma68kToVDP PNT_Buffer,VRAM_SS_Plane_A_Name_Table2 + 1 * (PNT_Buffer_End-PNT_Buffer),PNT_Buffer_End-PNT_Buffer,VRAM
- rts
- ; ---------------------------------------------------------------------------
- loc_A9C:
- dma68kToVDP PNT_Buffer,VRAM_SS_Plane_A_Name_Table2 + 2 * (PNT_Buffer_End-PNT_Buffer),PNT_Buffer_End-PNT_Buffer,VRAM
- rts
- ; ---------------------------------------------------------------------------
- loc_AC2:
- dma68kToVDP PNT_Buffer,VRAM_SS_Plane_A_Name_Table2 + 3 * (PNT_Buffer_End-PNT_Buffer),PNT_Buffer_End-PNT_Buffer,VRAM
- rts
- ; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
- ;sub_AE8
- SSSet_VScroll:
- move.w (VDP_control_port).l,d0
- move.l #vdpComm($0000,VSRAM,WRITE),(VDP_control_port).l
- move.l (Vscroll_Factor).w,(VDP_data_port).l
- rts
- ; End of function SSSet_VScroll
- ; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
- ;sub_B02
- SSRun_Animation_Timers:
- move.w (SS_Cur_Speed_Factor).w,d0 ; Get current speed factor
- cmp.w (SS_New_Speed_Factor).w,d0 ; Has the speed factor changed?
- beq.s + ; Branch if yes
- move.l (SS_New_Speed_Factor).w,(SS_Cur_Speed_Factor).w ; Save new speed factor
- move.b #0,(SSTrack_duration_timer).w ; Reset timer
- +
- subi_.b #1,(SSTrack_duration_timer).w ; Run track timer
- bgt.s + ; Branch if not expired yet
- lea (SSAnim_Base_Duration).l,a0
- move.w (SS_Cur_Speed_Factor).w,d0 ; The current speed factor is an index
- lsr.w #1,d0
- move.b (a0,d0.w),d1
- move.b d1,(SS_player_anim_frame_timer).w ; New player animation length (later halved)
- move.b d1,(SSTrack_duration_timer).w ; New track timer
- subq.b #1,(SS_player_anim_frame_timer).w ; Subtract one
- rts
- ; ---------------------------------------------------------------------------
- +
- move.b (SS_player_anim_frame_timer).w,d1 ; Get current player animatino length
- addq.b #1,d1 ; Increase it
- rts
- ; End of function SSRun_Animation_Timers
- ; ===========================================================================
- ;byte_B46
- SSAnim_Base_Duration:
- dc.b 60
- dc.b 30 ; 1
- dc.b 15 ; 2
- dc.b 10 ; 3
- dc.b 8 ; 4
- dc.b 6 ; 5
- dc.b 5 ; 6
- dc.b 0 ; 7
- ; ===========================================================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement