Subject: RE: [stella] Little Help Here From: "Tempest" <reicher6@xxxxxxxxxxxxx> Date: Fri, 2 Mar 2001 23:14:47 -0500 |
Ok here's my code. It's pieced together from several other code snippets I've found in the archives. It use to display some multi-colored stripes on the screen but I disabled those for the time being by clearing the Playfield registers. What it should do is display my stupid ship graphic on scanline 92 and recognize the joystick input (that part works), but I'm getting nothing but a blank screen. Maybe I shouldn't write zero's to the Playfield registers? If someone can fill me in on what stupid mistake I'm making I'd appreciate it. Tempest ;*************************************** ;* Galactic Tactic * ;* Ver. 0.01 * ;*************************************** processor 6502 include vcs.h org $F000 ;***************************************************** ;* Equates * ;***************************************************** Scanctrl equ $91 ;***************************************************** ;* Clear Memory * ;***************************************************** Start SEI ; Disable interrupts, if there are any. CLD ; Clear BCD math bit. LDX #$FF TXS ; Set stack to top of RAM. LDA #0 ;Zero everything except VSYNC. B1 STA 0,X DEX BNE B1 JSR GameInit ;****************************************************** ; Main Loop * ;****************************************************** MainLoop JSR VerticalBlank ;Execute the vertical blank. JSR CheckSwitches ;Check console switches. JSR GameCalc ;Do calculations during Vblank JSR DrawScreen ;Draw the screen JSR OverScan ;Do more calculations during overscan JMP MainLoop ;Continue forever. ;****************************************************** ; Verticle Blanking * ;****************************************************** VerticalBlank LDA #2 ;VBLANK was set at the beginning of overscan. STA WSYNC STA WSYNC STA WSYNC STA VSYNC ;Begin vertical sync. STA WSYNC ;First line of VSYNC STA WSYNC ;Second line of VSYNC. LDA #44 ;Set timer to activate during the last line of VBLANK. STA TIM64T LDA #0 ;Now we can end the VSYNC period. STA WSYNC ;Third line of VSYNC. STA VSYNC ;Writing zero to VSYNC ends vertical sync period. RTS ;****************************************************** ; Check Switches * ;****************************************************** CheckSwitches LDA #0 ;Clear collision latches STA CXCLR ;In a real game, we'd probably check the collision ;registers before clearing them. RTS ;****************************************************** ; Game Calculations * ;****************************************************** GameCalc LDA #0 STA COLUBK ;Background will be black. LDA #$80 BIT SWCHA BEQ Right LSR BIT SWCHA BEQ Left LSR BIT SWCHA BEQ Down LSR BIT SWCHA BEQ Up JMP NoStick Right JMP NoStick Left JMP NoStick Down JMP NoStick Up JMP NoStick NoStick LDA #$00 ;Pixels: 00000000 STA PF0 STA PF2 ;Store alternating bit pattern to the playfield registers ASL ;Because PF1 displays in the opposite bit order from PF0 STA PF1 LDA #1 STA CTRLPF ;Let's reflect the playfield just cause we feel like it =) STA RESP0 RTS ;****************************************************** ; Draw Screen * ;****************************************************** DrawScreen LDA INTIM BNE DrawScreen ;Loops until the timer is done - that means we're ;somewhere in the last line of vertical blank. STA WSYNC ;End the current scanline - the last line of VBLANK. STA VBLANK ;End the VBLANK period. The TIA will display stuff ;starting with the next scanline. We do have 23 cycles ;of horizontal blank before it displays anything. LDY #192 ;We're going to use Y to count scanlines. ScanLoop STY COLUPF ;Keep changing the playfield color every line STA WSYNC ;Wait for end of scanline DEY TYA CMP #$91 BEQ DrawSprite BNE ScanLoop ;Count scanlines. RTS DrawSprite LDX #07 cont STA WSYNC LDA Sprite,X STA GRP0 DEX BNE cont RTS ;****************************************************** ; Overscan * ;****************************************************** OverScan ;We've got 30 scanlines to kill. LDX #30 ;In a real game, we'd probably be doing calculations here, KillLines ;possibly using the timer again to tell us when overscan STA WSYNC ;is done instead of counting the scanlines. DEX BNE KillLines RTS GameInit ;Usually called to start a new game.. we're not using it yet. RTS Sprite .byte %00000000 .byte %00011000 .byte %00011000 .byte %10011001 .byte %10100101 .byte %11000011 .byte %00000000 org $FFFC .word Start .word Start - 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 -> |
---|---|---|
Re: [stella] Little Help Here, Andrew Davie | Thread | RE: [stella] Little Help Here, Chris Wilkson |
Re: [stella] Qb: BETA 1.0, Thomas Jentzsch | Date | RE: [stella] Little Help Here, Chris Wilkson |
Month |