Re: [stella] My code is broked!

Subject: Re: [stella] My code is broked!
From: Christopher Tumber <christophertumber@xxxxxxxxxx>
Date: Thu, 09 Oct 2003 15:42:22 -0400
At 04:13 PM 08/10/2003 -0700, you wrote:
>There are four players in the game.  So in order for a trade hands
>subroutine to work the current player's hand RAM location, and the chosen
>players hand RAM location should be stored into pointers.

Ah, okay gotcha.

You're prolly already way past this, but this is how I'd implement (untested code, may be buggy, yada, yada, yada)

    org $80
Player0Buffer .byte
              .byte
              .byte
              .byte
              .byte
              .byte
              .byte
              .byte
Player1Buffer .byte
              .byte
              .byte
              .byte
              .byte
              .byte
              .byte
              .byte
Player2Buffer .byte
              .byte
              .byte
              .byte
              .byte
              .byte
              .byte
              .byte
Player3Buffer .byte
              .byte
              .byte
              .byte
              .byte
              .byte
              .byte
              .byte
TempPointer1 .word
TempPointer2 .word
Temp .byte


<...>


;Routine to switch two buffers
;Where X and Y registers contain the buffer numbers to switch
;Optionally A could be used to pass the size of the buffer if you wanted a more general purpose routine
;Buffers are in fixed, predetermined locations
;
;Registers are not preserved
;
SwitchBuffers:
;  pha                                       ;Include this line to enable variable buffer size where size=A
  lda PlayerBufferTableLow,y
  sta TempPointer1
   lda #0                                   ;High byte is always known as $00
;  lda PlayerBufferTableHigh,y    ;Use this instead for more general purpose buffer swapping
  sta TempPointer1+1
  lda PlayerBufferTableLow,x
  sta TempPointer2
   lda #0                                   ;High byte is always known as $00
;  lda PlayerBufferTableHigh,x    ;Use this instead for more general purpose buffer swapping
  sta TempPointer2+1
  
;  pla                                       ;Include this line to enable variable buffer size where size=A
;  tay                                       ;Include this line to enable variable buffer size where size=A
  ldy #7                                    ;Remove this line to enable variable buffer size where size=A
next_switch:
  lda (TempPointer1),y
  sta Temp
  lda (TempPointer2),y
  sta (TempPointer1),y
  lda Temp
  sta (TempPointer2),y
  dey
  bpl next_switch  
  rts

PlayerBufferTableLow: .byte #<Player0Buffer,#<Player1Buffer,#<Player2Buffer,#<Player3Buffer
;PlayerBufferTableHigh: .byte #>Player0Buffer,#>Player1Buffer,#>Player2Buffer,#>Player3Buffer    ;Use for more general purpose buffer switching






----------------------------------------------------------------------------------------------
Archives (includes files) at http://www.biglist.com/lists/stella/archives/
Unsub & more at http://www.biglist.com/lists/stella/


Current Thread