|
Subject: Re: [stella] Colour Display Programme From: Piero Cavina <p.cavina@xxxxxxxxxxxxx> Date: Thu, 18 Sep 1997 15:37:08 +0100 |
At 19:27 -0400 16-09-1997, crackers@xxxxxxxx wrote:
>I've only tested it out on an emulator so far. Here's the programme.
Here are some advices to help you to improve your 6502 programming...
>doit STA WSYNC ;not much going on here, just repeat the
> dex ;same scanline 192 times
> beq done
> jmp doit
>
>done rts
uh, avoid 'spaghetti' when you can... look at this...:
doit STA WSYNC
dex
bne doit
done rts
>
>oscan jsr joy ;go check the joystick
> LDX #$1E
>
>waste STA WSYNC ;no game logic so let's blow the overscan
> DEX
> BNE waste
> RTS
be careful... this way you aren't checking the joystick during overscan,
but during the 193th scanline.
If you want to do things in overtime, you've to set up the timer like
you've done for vblank.
Otherwise put the call to 'joy' in vertb.
>joy lda SWCHA ;check the joystick ports
> cmp #$7F ;see if it's moved right (joystick 1)
> beq right
> cmp #$BF ;see if it's moved left (joystick 1)
> beq left
> rts
>right inc DELAY ;our joystick delay timer is increased
> lda DELAY
> cmp #$1E ;check to see if we've had enough delay (30 frames)
> bpl clrup ;yep. Let's increase the colour
> rts
>
>left inc DELAY ;joystick timer increased
> lda DELAY
> cmp #$1E ;30 frames yet?
> bpl clrdwn ;yep, decrease colour
> rts
hmmm... try to avoid copies of the same code... and it usually better to
have counters going backwards...:
I've switched from left/right to up/down... it's easier this way... :-))
joy lda SWCHA ;0's=pushed 1's=not pushed
eor #$FF ; invert, 1's=pushed, 0's=not pushed
and #%00000011 ; clear what isn't interesting - joy 1 pushed up or
down?
bne pushed ; yep
nope
rts
pushed
dec DELAY
bpl nope ; still delaying
ldx #30 ; reload delay
stx DELAY
lsr ; move bit 0 of A into C = Pushed up?
bcc down ; no, it must be down
up lda COLOUR
cmp #$FE ; max?
bcs nope ; yep, don't inc
inc COLOUR
inc COLOUR
rts
down lda COLOUR
beq nope ; min, don't dec
dec COLOUR
dec COLOUR
rts
This is not tested, and probably Jim has already posted a shorter version!
hehe :-)
Please not that your code isn't bad: it's not optimized, but there's a
certain order, which is always important for a beginner.
I recommend you to get a 6502 reference and study carefully what happens to
the processor status register (the C, Z, N flags...) when the instructions
are executed. This will help you to understand how to use those branch
instructions (BPL, BCC...) in the best way.
P.
--
Archives updated once/day at http://www.biglist.com/lists/stella/archives/
Unsubscribing and other info at http://www.biglist.com/lists/stella/stella.html
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [stella] Colour Display Programme, crackers | Thread | Re: [stella] Colour Display Program, Jim Nitchals |
| Re: [stella] I'm a mountain man and, Jim Nitchals | Date | Re: [stella] Please consider this f, Piero Cavina |
| Month |