|
Subject: [stella] newbie question From: Thomas Dunn <td629@xxxxxxxxx> Date: Wed, 24 Sep 2003 08:07:57 -0700 (PDT) |
Hello all,
I was on the list for a short period a couple years ago. Well, I'm back at it again, on my slow
journey to writing 2600 games...
Here's a newbie question for you. I'm just trying to have player0 start in the middle of the
screen, move down until it hits scanline 180, and then jump back to the top of the screen
(scanline 5), and continue down again, looping at the bottom.
This bit of code doesn't seem to be working for me, it continues way past scanline 180 (probably
to scanline 255?), and then loops back to the top
inc SpriteYPosition ; move player down
sta #180
cmp SpriteYPosition ; check if at scanline 180
bcc DontMoveToTop ; if accum < spriteY, branch
lda #5 ; jump the sprite back to scanline 5
sta SpriteYPosition
DontMoveToTop
I'm sure the problem will jump right out at you guys.
Here's the full code, thanks a lot!
Tom Dunn
--------------------------------------------------------------------------------------
; Thomas Dunn
; 2003-09-23
; to position player0 vertically:
; x counts scanline
; keep doing blank until cpx SpriteYPosition
; draw 8 lines of sprite
; draw (192 - SpriteYPosition - 8 = 184 - SpriteYPosition) lines
; move sprite down
processor 6502
include "vcs.h"
include "macro.h"
;------------------------------------------------------------------------------
SEG.U vars ; define variables
ORG $80
SpriteYPosition ds 1
SEG
ORG $F000
;------------------------------------------------------------------------------
INITIAL_SPRITE_Y_POSITION = 92
SPRITE_HEIGHT = 8
Reset
; Clear RAM and all TIA registers
ldx #0
lda #0
Clear sta 0,x
inx
bne Clear
;------------------------------------------------
; one time initialization
lda #INITIAL_SPRITE_Y_POSITION ; set initial scanline of player
sta SpriteYPosition
lda #45 ; set colors
sta COLUPF
lda #$45
sta COLUP0
StartOfFrame
; Start of new frame
; Start of vertical blank processing
lda #0
sta VBLANK
lda #2
sta VSYNC
sta WSYNC
sta WSYNC
sta WSYNC ; 3 scanlines of VSYNC signal
lda #0
sta VSYNC
;------------------------------------------------
; 36+1=37 scanlines of vertical blank
ldx #0
VerticalBlank sta WSYNC
inx
cpx #36
bne VerticalBlank
sleep 25 ; set initial horizontal position of player
sta RESP0
sta WSYNC
;------------------------------------------------
; Do 192 scanlines (before player, player, after player)
ldx #0 ; counts scanline
lda #0
sta GRP0
BeforePlayer
sta WSYNC
inx
cpx SpriteYPosition
bne BeforePlayer
;------------------------------------------------
ldx #0 ; counts scanline
lda #%10101010 ; load the graphics for the player
sta GRP0
Player
sta WSYNC
inx
cpx #SPRITE_HEIGHT
bne Player
;------------------------------------------------
sta #184
sbc SpriteYPosition
tax
lda #%00000000 ; clear player graphics
sta GRP0
AfterPlayer
sta WSYNC
dex
beq AfterPlayer
;------------------------------------------------
inc SpriteYPosition ; move player down
sta #180
cmp SpriteYPosition ; check if at scanline 180
bcc DontMoveToTop ; if accum < spriteY, branch
lda #5 ; jump the sprite back to scanline 5
sta SpriteYPosition
DontMoveToTop
;------------------------------------------------
lda #%01000010
sta VBLANK ; end of screen - enter blanking
; 30 scanlines of overscan...
ldx #0
Overscan sta WSYNC
inx
cpx #30
bne Overscan
jmp StartOfFrame
;------------------------------------------------------------------------------
ORG $FFFA
InterruptVectors
.word Reset ; NMI
.word Reset ; RESET
.word Reset ; IRQ
END
__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
----------------------------------------------------------------------------------------------
Archives (includes files) at http://www.biglist.com/lists/stella/archives/
Unsub & more at http://www.biglist.com/lists/stella/
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Aw: Re: [stella] [Stella] How weird, cybergoth | Thread | Re: [stella] newbie question, Thomas Jentzsch |
| Aw: Re: [stella] [Stella] How weird, cybergoth | Date | Re: [stella] newbie question, Thomas Jentzsch |
| Month |