Re: [stella] Rubik Cube 3d

Subject: Re: [stella] Rubik Cube 3d
From: Christopher Tumber <christophertumber@xxxxxxxxxx>
Date: Mon, 23 Dec 2002 16:10:42 -0500
>I don't think that was used here, because the whole cube is 96 
>pixels wide. That only leaves 32 CPU cycles.

Yeah, but how many scanlines high is each cube? If you can minimise the overhead needed to repostion the Players/Missiles (Change colour and HMOVE maybe 8 or 9 cycles) you can use the rest of the cycles on all intervening to be priming the RAM routine (so it may be "doble-buffered" with two alternating RAM routines).

They may have pulled a rabbit out of somewhere and obviously there's no proof until it's disassembled or I reproduce it (which I'm probably not going to go any farther with it's way to big a pain in the butt for a project with no real purpose...), but the attached looks pretty close despite being sloppy as hell.. (I'm obviously still several steps away particularly since I'm not loading anything into RAM but it looks right).

Hrm, wait a minute. Maybe I have another idea...

Chris...

;BEWARE! NO STACK!!
	processor 6502
	include vcs.h

	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 #255
      sta PF0
      sta PF1
      sta PF2
      lda #1
      sta CTRLPF
      lda #00
      STA COLUBK
      lda #0
      STA COLUPF  
      sta GRP0
      sta GRP1
      sta HMCLR

      lda #14
      sta COLUP1
      sta COLUP0



DrawLogo

	LDX  #0
	LDA  #2

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

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

DrawScreen
	LDA INTIM
	BNE DrawScreen ; Whew!
	STA WSYNC
	STA VBLANK  ;End the VBLANK period with a zero.


      lda #0
      sta GRP0
      sta GRP1
      sta NUSIZ0                           ;3 Cycles
      sta NUSIZ1                           ;3 Cycles


      sta WSYNC
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      sta.w RESP0
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      lda #$76
      sta COLUP0

      lda #32
      sta HMP0

      sta WSYNC
      sta HMOVE

      sta WSYNC
      lda #128+64+32+16
      sta.w GRP0
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      lda #$00
      STA COLUPF
      lda #$00
      STA COLUPF
      lda #$00
      STA COLUPF
      lda #$00
      STA COLUPF

      sta WSYNC
      lda #128+64+32+16+8+4+2+1
      sta GRP0
      lda #16
      sta HMP0
      nop
      nop
      nop
      nop
      nop
      nop
      lda #$00
      STA COLUPF
      lda #$00
      STA COLUPF
      lda #$00
      STA COLUPF
      lda #$00
      STA COLUPF

      sta WSYNC
      sta HMOVE
      lda #128+64+32+16+8+4 ;+2+1
      sta GRP0
      lda #5
      sta.w NUSIZ0                           ;3 Cycles
      nop
      nop
      nop
      nop
      lda #$00
      STA COLUPF
      lda #$00
      STA COLUPF
      lda #$00
      STA COLUPF
      lda #$00
      STA COLUPF


;---------------


      lda #128
      sta HMP0

      sta WSYNC
      sta HMOVE
      lda #0
      sta GRP0
      lda #0
      sta NUSIZ0                           ;3 Cycles
      lda #$36
      sta COLUP0
      nop
      nop

      lda #$76
      STA COLUPF
      lda #$00
      STA COLUPF
      lda #$00
      STA COLUPF
      lda #$00
      STA COLUPF



      sta WSYNC
      sta HMOVE
      lda #128+64+32+16
      sta GRP0
      lda #0
      sta NUSIZ0                           ;3 Cycles
      lda #$36
      sta COLUP0
      nop
      nop

      lda #$76
      STA COLUPF
      lda #$00
      STA COLUPF
      lda #$00
      STA COLUPF
      lda #$00
      STA COLUPF

      sta WSYNC
      lda #128+64+32+16+8+4+2+1
      sta GRP0
      lda #16
      sta HMP0
      nop
      nop
      nop
      nop
      nop
      nop
      lda #$76
      STA COLUPF
      lda #$00
      STA COLUPF
      lda #$00
      STA COLUPF
      lda #$00
      STA COLUPF

      sta WSYNC
      sta HMOVE
      lda #128+64+32+16+8+4 ;+2+1
      sta GRP0
      lda #5
      sta.w NUSIZ0                           ;3 Cycles

      nop
      nop
      nop
      nop
      lda #$76
      STA COLUPF
      lda #$00
      STA COLUPF
      lda #$00
      STA COLUPF
      lda #$00
      STA COLUPF



;---------------


      lda #128
      sta HMP0

      sta WSYNC
      sta HMOVE
      lda #0
      sta GRP0
      lda #0
      sta NUSIZ0                           ;3 Cycles
      lda #$1c
      sta COLUP0
      nop
      nop

      lda #$76
      STA COLUPF
      lda #$36
      STA COLUPF
      lda #$00
      STA COLUPF
      lda #$00
      STA COLUPF



      sta WSYNC
      sta HMOVE
      lda #128+64+32+16
      sta GRP0
      lda #0
      sta NUSIZ0                           ;3 Cycles
      lda #$1c
      sta COLUP0
      nop
      nop

      lda #$76
      STA COLUPF
      lda #$36
      STA COLUPF
      lda #$00
      STA COLUPF
      lda #$00
      STA COLUPF

      sta WSYNC
      lda #128+64+32+16+8+4+2+1
      sta GRP0
      lda #16
      sta HMP0
      nop
      nop
      nop
      nop
      nop
      nop
      lda #$76
      STA COLUPF
      lda #$36
      STA COLUPF
      lda #$00
      STA COLUPF
      lda #$00
      STA COLUPF

      sta WSYNC
      sta HMOVE
      lda #128+64+32+16+8+4 ;+2+1
      sta GRP0
      lda #5
      sta.w NUSIZ0                           ;3 Cycles

      nop
      nop
      nop
      nop
      lda #$76
      STA COLUPF
      lda #$36
      STA COLUPF
      lda #$00
      STA COLUPF
      lda #$00
      STA COLUPF





      lda #0
      sta GRP0
      sta GRP1


      ldy #20


next2:

      sta WSYNC
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      lda #$76
      STA COLUPF
      lda #$36
      STA COLUPF
      lda #$1c
      STA COLUPF

      lda #$00
      STA COLUPF
      dey
      bpl next2


skip:
      sta WSYNC

      ldy #100
nextblankline:
      sta WSYNC
      dey
      bne nextblankline     




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

      

   JMP  DrawLogo      ;Continue forever.



	org $FFFC
	.word Start
	.word Start


Attachment: Slopecubes.bin
Description: Binary data

Current Thread