123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 |
- ****player specifics
- PLAYER_FRAMES EQU 2
- PLAYER_HEIGHT EQU 20
- ATTACH EQU 7
- INCREASE_VELOCITY EQU 15
- DECREASE_VELOCITY EQU 5
- *************************************
- ****** UPDATE PLAYER *****
- *************************************
- update_player
- moveq #0,d0
- moveq #0,d1
- moveq #0,d2
- move.w maximum_velocity,d4
- move.w player_x_scaled,d0
- move.w player_y_scaled,d1
-
- move.w player_x_velocity,d2
- tst xdirec
- beq.s reduce_velocity
-
- tst xdirec
- bmi.s player_moving_left
- add.w #INCREASE_VELOCITY,d2
- cmp.w d4,d2
- ble.s update_x_pos
- move.w d4,d2
- bra.s update_x_pos
-
- player_moving_left
- sub.w #INCREASE_VELOCITY,d2
- neg.w d4
- cmp.w d4,d2
- bge.s update_x_pos
- move.w d4,d2
- bra.s update_x_pos
-
- reduce_velocity
- tst d2
- bpl.s reduce_by_sub
- add.w #DECREASE_VELOCITY,d2
- ble.s update_x_pos
- move.w #0,d2
- bra.s update_x_pos
- reduce_by_sub
- sub.w #DECREASE_VELOCITY,d2
- bge.s update_x_pos
- move.w #0,d2
- update_x_pos
- move.w d2,player_x_velocity
-
- add.w d2,d0
-
- move.w d0,player_x_scaled
- move.w d1,player_y_scaled
- divu #SCALE_FACTOR,d0
- move.w d0,player_x
- divu #SCALE_FACTOR,d1
- move.w d1,player_y
- rts
-
-
- *************************************
- ****** DISPLAY PLAYER *****
- *************************************
- display_player
- ***depeding on speed of player move legs
- moveq #0,d4
- move.w player_x_velocity,d4
- tst d4
- bpl.s ok_x_vel
- neg.w d4
- ok_x_vel
- divu #SCALE_FACTOR,d4
- move.w #7,d6
- sub.w d4,d6
-
-
- move.w player_frame,d5
- addq.w #1,player_timer
- cmp.w player_timer,d6
- bgt.s no_frame_update
- move.w #0,player_timer
- tst player_x_velocity
- beq.s frame_reset
- addq.w #1,d5
- cmp.w #PLAYER_FRAMES,d5
- blt.s no_frame_update
- frame_reset
- move.w #0,d5
- no_frame_update
- move.w d5,player_frame
- mulu #22*4*2,d5
- tst.w xdirec
- bne.s not_zeroed
- move.w lastx_direc,d0
- bra.s get_direction_graphics
- not_zeroed
- move.w xdirec,d0
- move.w d0,lastx_direc
- get_direction_graphics
- tst d0
- bmi.s player_going_left
- move.l #playerrightf1sp1,a0
- bra.s position_player
- player_going_left
- move.l #playerleftf1sp1,a0
- position_player
-
- add.l d5,a0
- move.w player_x,d0
- move.w player_y,d1
- move.w #PLAYER_HEIGHT,d2
- move.w d0,d3
- move.w d1,d4
- bsr position_any_sprite
- bset.b #ATTACH,3(a0)
- move.l a0,d0
- move.w d0,sprite0l
- swap d0
- move.w d0,sprite0h
-
- add.l #22*4,a0
- move.w d3,d0
- move.w d4,d1
- bsr position_any_sprite
- bset.b #ATTACH,3(a0)
- move.l a0,d0
- move.w d0,sprite1l
- swap d0
- move.w d0,sprite1h
- rts
- SCALE_FACTOR EQU 50
- player_x_scaled dc.w 0
- player_y_scaled dc.w 5000
- player_x dc.w 0
- player_y dc.w 0
- player_timer dc.w 0
- player_x_velocity dc.w 0
- player_y_velocity dc.w 0
- lastx_direc dc.w 1
- lasty_direc dc.w 0
- player_frame dc.w 0
- maximum_velocity dc.w 2*SCALE_FACTOR
- player_velocity_table
- *************************************
- ****** POSITION ANY SPRITE *****
- *************************************
- position_any_sprite
- *send in data in a0
- *x in d0
- *y in d1
- *height in d2
- gendo_other_mouse_stuff
- add.w #$81-1,d0 ;tricky positioning
- move.b #0,3(A0)
- asr.w #1,d0
- bcc.s genno_bit_set
- bset #0,3(a0)
- genno_bit_set
- move.b d0,1(a0)
-
- add.w #$2c,d1
- btst #8,d1
- beq.s gennot_vert_set
- bset #2,3(a0)
- gennot_vert_set
- move.b d1,(a0)
-
- add.w d2,d1
- btst #8,d1
- beq.s gennot_vstop_set
- bset #1,3(a0)
- gennot_vstop_set
- move.b d1,2(a0)
- rts
-
-
-
|