Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; ---------------------------------------------------------------------------
- ; Object 19 - bubble from Sega Screen
- ; ---------------------------------------------------------------------------
- Obj19: ; XREF: Obj_Index
- moveq #0,d0
- move.b $24(a0),d0
- move.w Obj19_Index(pc,d0.w),d0
- jsr Obj19_Index(pc,d0.w)
- jmp DisplaySprite
- ; ===========================================================================
- Obj19_Index:
- dc.w Obj19_Main-Obj19_Index
- dc.w Obj19_ToUp-Obj19_Index
- ; ===========================================================================
- Obj19_Main:
- addi.b #2,$24(a0) ; add 2 to routine number
- move.l #Map_obj19,4(a0) ; set mappings
- move.w #$2AB,2(a0) ; set VRAM pointer
- move.b #0,1(a0) ; set render parametrs
- move.b #$13,$19(a0) ; set "on object"
- move.b #0,$18(a0) ; set priority back
- addq.l #2,$FFFFF636 ; add 2 to frame counter
- jsr RandomNumber ; get pseudo-random number
- and.b #%11111111,d0 ; get only 7 bits from number
- move.w d0,8(a0) ; set X-position of bubble
- move.w #400,$A(a0) ; set Y-position of bubble
- addq.l #2,$FFFFF636 ; add 2 to frame counter
- jsr RandomNumber ; get pseudo-random number
- and.b #3,d0 ; get only 2 bits from number
- move.b d0,$1A(a0) ; set size (or frame)
- move.w 8(a0),$30(a0) ; copy X-position (need for waving)
- rts ; return to subroutine
- Obj19_ToUp:
- moveq #0,d0 ; clear d0
- move.w $FFFFCC02,d0 ; move shift of first row of background
- add.w #8,d0 ; add 8 (need for center)
- bpl.s @cont ; if plus, branch
- neg.w d0 ; negative number
- @cont add.w $30(a0),d0 ; add static copied X-position
- move.w d0,8(a0) ; refresh X-position (waving)
- moveq #0,d0 ; clear d0
- move.b $1A(a0),d0 ; move size (or frame)
- addq.b #1,d0 ; add 1 to size
- sub.w d0,$A(a0) ; subtract from Y-position
- bpl.s @rts ; if bubble is on screen, branch
- addq.l #2,$FFFFF636 ; add 2 to frame counter
- jsr RandomNumber ; get pseudo-random number
- and.b #%11111111,d0 ; get only 7 bits from number
- move.w d0,8(a0) ; set X-position of bubble
- move.w #400,$A(a0) ; set Y-position of bubble
- addq.l #2,$FFFFF636 ; add 2 to frame counter
- jsr RandomNumber ; get pseudo-random number
- and.b #3,d0 ; get only 2 bits from number
- move.b d0,$1A(a0) ; set size (or frame)
- @rts rts
- ; ===========================================================================
- ; ---------------------------------------------------------------------------
- ; Sprite mappings - swinging ball on a chain from GHZ boss
- ; ---------------------------------------------------------------------------
- Map_obj48:
- include "_maps\obj48.asm"
- ; ---------------------------------------------------------------------------
- ; Sprite mappings - bubbles from Sega Screen
- ; ---------------------------------------------------------------------------
- Map_obj19:
- include "#SegaScreen\Bubbles_Map.asm"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement