Re: [stella] Brainstorming: 3D-Corridor

Subject: Re: [stella] Brainstorming: 3D-Corridor
From: Christopher Tumber <christophertumber@xxxxxxxxxx>
Date: Thu, 27 Mar 2003 16:07:16 -0500
I wrote:

>My suggestion would be:

After messing around with this for a while I came to the conclusion that if using sprites to do this, the pros don't really outweigh the cons (Pros: You could move the "tunnel" left and right smoothly, Cons: You've used up all the sprites and are limited to playfield graphics) unless you're really prepared to use PF graphics for enemies &etc.

But, I do think that preloading X, Y and A and shoving them directly into COLUPF is a good idea, and that's what the attached file does along with some colour cycling to give an effect.

You'd be able to scroll the tunnel up and down easily but left and right would take a little more work. You're going to be limited to 1 cycle increments so it won't be quite smooth (As smooth as Instigator's movement in Space Instigators, though!) and it'll be a bit of a pain introducing that delay. There's currently only 14 cycles available per scanline so you might want to narrow the tunnel by 1 or 2 bands to give yourself more time and you can probably recover some cycles by cleaning things up - It's a bit of a kludge right now.

Anyway....


Chris...
	processor 6502
	include vcs.h




 SEG.U   variables
 org $80






    SEG     Bank0

    org $F000


Start:

      SEI  ; Disable interrupts, if there are any.
      CLD  ; Clear BCD math bit.

      LDX  #$FF
      TXS  ; Set stack to beginning.

      LDA #0
B1    STA 0,X
      DEX
      BNE B1

      lda #1
      sta CTRLPF



      lda #$88
      sta $81
      lda #$8a
      sta $82
      lda #$8c
      sta $83
      lda #10
      sta $84



MainLoop
VerticalBlank  ;*********************** VERTICAL BLANK HANDLER



	LDA  #2
	STA  VSYNC ;Begin vertical sync.
	STA  WSYNC ; First line of VSYNC
	STA  WSYNC ; Second line of VSYNC.

	LDA  #43
	STA  TIM64T
	LDA  #0
	STA  CXCLR
	STA  WSYNC ; Third line of VSYNC.
	STA  VSYNC ; (0)

      lda #0
      sta COLUPF

      lda #0
      sta PF0

      lda #255
      sta PF1
      sta PF2

      dec $84
      bpl noresettimer
      lda #10
      sta $84

      lda $81
      ldx $82
      ldy $83

      sta $82
      stx $83
      sty $81
noresettimer:
      ldx $81   ;3
      ldy $83   ;3




DrawScreen ;**************************** SCREEN DRAWING ROUTINES
      LDA INTIM
      BNE DrawScreen 
      STA WSYNC
      STA VBLANK  




      lda #15
      sta $80
      sta WSYNC
next1:
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      lda $82   ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3

      dec.w $80
      bne next1

      lda #15
      sta.w $80
      jmp next2a
      org $f100
;      sta WSYNC

next2:
      nop
      nop
      nop
      nop
next2a:
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      lda $82   ;3
      sta COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      sta COLUPF ;3

      dec.w $80
      bne next2

      lda #15
      sta.w $80
      jmp next3a
;      sta WSYNC

next3:
      nop
      nop
      nop
      nop
next3a:
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      lda $82   ;3
      sta COLUPF ;3
      stx COLUPF ;3
      sty COLUPF ;3
      sty COLUPF ;3
      sty COLUPF ;3
      sty COLUPF ;3
      sty COLUPF ;3
      sty COLUPF ;3
      sty COLUPF ;3
      sty COLUPF ;3
      sty COLUPF ;3
      sty COLUPF ;3
      stx COLUPF ;3
      sta COLUPF ;3

      dec.w $80
      bne next3


      lda #15
      sta.w $80
      jmp next4a
;      sta WSYNC
next4:
      nop
      nop
      nop
      nop
next4a:
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      lda $82   ;3
      sta COLUPF ;3
      stx COLUPF ;3
      sty COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sty COLUPF ;3
      stx COLUPF ;3
      sta COLUPF ;3

      dec.w $80
      bne next4

      lda #15
      sta.w $80
      jmp next5a
;      sta WSYNC
next5:
      nop
      nop
      nop
      nop
next5a:
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      lda $82   ;3
      sta COLUPF ;3
      stx COLUPF ;3
      sty COLUPF ;3
      sta COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      sta COLUPF ;3
      sty COLUPF ;3
      stx COLUPF ;3
      sta COLUPF ;3

      dec.w $80
      bne next5


      lda #15
      sta.w $80
      jmp next6a
      org $f200
;      sta WSYNC
next6:
      nop
      nop
      nop
      nop
next6a:
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      lda $82   ;3
      sta COLUPF ;3
      stx COLUPF ;3
      sty COLUPF ;3
      sta COLUPF ;3
      stx COLUPF ;3
      sty COLUPF ;3
      sty COLUPF ;3
      sty COLUPF ;3
      sty COLUPF ;3
      stx COLUPF ;3
      sta COLUPF ;3
      sty COLUPF ;3
      stx COLUPF ;3
      sta COLUPF ;3

      dec.w $80
      bne next6


      lda #18
      sta.w $80
      jmp next7a
;      sta WSYNC
next7:
      nop
      nop
      nop
      nop
next7a:
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      lda $82   ;3
      sta COLUPF ;3
      stx COLUPF ;3
      sty COLUPF ;3
      sta COLUPF ;3
      stx COLUPF ;3
      sty COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sty COLUPF ;3
      stx COLUPF ;3
      sta COLUPF ;3
      sty COLUPF ;3
      stx COLUPF ;3
      sta COLUPF ;3

      dec.w $80
      bne next7



      lda #15
      sta.w $80
      jmp next6ab
;      sta WSYNC
next6b:
      nop
      nop
      nop
      nop
next6ab:
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      lda $82   ;3
      sta COLUPF ;3
      stx COLUPF ;3
      sty COLUPF ;3
      sta COLUPF ;3
      stx COLUPF ;3
      sty COLUPF ;3
      sty COLUPF ;3
      sty COLUPF ;3
      sty COLUPF ;3
      stx COLUPF ;3
      sta COLUPF ;3
      sty COLUPF ;3
      stx COLUPF ;3
      sta COLUPF ;3

      dec.w $80
      bne next6b


      lda #15
      sta.w $80
      jmp next5ab
      org $f300
;      sta WSYNC
next5b:
      nop
      nop
      nop
      nop
next5ab:
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      lda $82   ;3
      sta COLUPF ;3
      stx COLUPF ;3
      sty COLUPF ;3
      sta COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      sta COLUPF ;3
      sty COLUPF ;3
      stx COLUPF ;3
      sta COLUPF ;3

      dec.w $80
      bne next5b



      lda #15
      sta.w $80
      jmp next4ab
;      sta WSYNC
next4b:
      nop
      nop
      nop
      nop
next4ab:
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      lda $82   ;3
      sta COLUPF ;3
      stx COLUPF ;3
      sty COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sty COLUPF ;3
      stx COLUPF ;3
      sta COLUPF ;3

      dec.w $80
      bne next4b


      lda #15
      sta.w $80
      jmp next3ab
;      sta WSYNC

next3b:
      nop
      nop
      nop
      nop
next3ab:
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      lda $82   ;3
      sta COLUPF ;3
      stx COLUPF ;3
      sty COLUPF ;3
      sty COLUPF ;3
      sty COLUPF ;3
      sty COLUPF ;3
      sty COLUPF ;3
      sty COLUPF ;3
      sty COLUPF ;3
      sty COLUPF ;3
      sty COLUPF ;3
      sty COLUPF ;3
      stx COLUPF ;3
      sta COLUPF ;3

      dec.w $80
      bne next3b


      lda #15
      sta.w $80
      jmp next2ab
;      sta WSYNC

next2b:
      nop
      nop
      nop
      nop
next2ab:
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      lda $82   ;3
      sta COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      stx COLUPF ;3
      sta COLUPF ;3

      dec.w $80
      bne next2b


      lda #15
      sta.w $80
      jmp next1ab
;      sta WSYNC

next1b:
      nop
      nop
      nop
      nop
next1ab:
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      lda $82   ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3
      sta COLUPF ;3

      dec.w $80
      bne next1b


  
      lda #0
      sta COLUP0
      sta COLUP1
      sta COLUPF


      STA VBLANK ; Make TIA output invisible,
      lda #30
      sta TIM64T
OverscanWait:
      lda     INTIM
      bne     OverscanWait

      JMP  MainLoop      ;Continue forever.







	org $FFFC
	.word Start
	.word Start



Attachment: TUNNEL.BIN
Description: Binary data

Attachment: TUNNEL2.BIN
Description: Binary data

Current Thread