Fixed one sprite bug.

This commit is contained in:
Martin Haye 2014-06-01 07:04:37 -07:00
parent bbac1ea183
commit c5182fb624
2 changed files with 68 additions and 16 deletions

View File

@ -73,10 +73,10 @@ var allSprites = [
// Player attributes [ref BigBlue2_10] // Player attributes [ref BigBlue2_10]
var player = { var player = {
x : 1.5, // current x, y position x : 4.2421875, // current x, y position
y : 3.5, y : 6.4765625,
dir : 0, // the direction that the player is turning, either -1 for left or 1 for right. dir : 0, // the direction that the player is turning, either -1 for left or 1 for right.
angleNum : 4, // the current angle of rotation angleNum : 0xA, // the current angle of rotation
speed : 0, // is the playing moving forward (speed = 1) or backwards (speed = -1). speed : 0, // is the playing moving forward (speed = 1) or backwards (speed = -1).
moveSpeed : 0.25, // how far (in map units) does the player move each step/update moveSpeed : 0.25, // how far (in map units) does the player move each step/update
rotSpeed : 22.5 * Math.PI / 180, // how much does the player rotate each step/update (in radians) rotSpeed : 22.5 * Math.PI / 180, // how much does the player rotate each step/update (in radians)
@ -85,7 +85,7 @@ var player = {
var options = 0; var options = 0;
var debugRay = 0; /* Debugging info printed about this ray num, or null for none */ var debugRay = 4; /* Debugging info printed about this ray num, or null for none */
var debugSprite = 0; /* Debugging info printed about this sprite, or null for none */ var debugSprite = 0; /* Debugging info printed about this sprite, or null for none */

View File

@ -14,6 +14,7 @@ start:
; Conditional assembly flags ; Conditional assembly flags
DOUBLE_BUFFER = 1 ; whether to double-buffer DOUBLE_BUFFER = 1 ; whether to double-buffer
DEBUG = 1 ; 1=some logging, 2=lots of logging DEBUG = 1 ; 1=some logging, 2=lots of logging
DEBUG_COLUMN = -1
; Shared constants, zero page, buffer locations, etc. ; Shared constants, zero page, buffer locations, etc.
!source "render.i" !source "render.i"
@ -28,6 +29,15 @@ DEBUG = 1 ; 1=some logging, 2=lots of logging
MAX_SPRITES = 16 ; max # sprites visible at once MAX_SPRITES = 16 ; max # sprites visible at once
NUM_COLS = 63 NUM_COLS = 63
; Starting position and dir. Eventually this will come from the map
;PLAYER_START_X = $180 ; 1.5
;PLAYER_START_Y = $380 ; 3.5
;PLAYER_START_DIR = 4
PLAYER_START_X = $43E ; 1.5
PLAYER_START_Y = $67A ; 3.5
PLAYER_START_DIR = $A
; Useful constants ; Useful constants
W_LOG_256 = $0800 W_LOG_256 = $0800
W_LOG_65536 = $1000 W_LOG_65536 = $1000
@ -533,6 +543,7 @@ castRay: !zone
lda #$FF ; clamp large line heights to 255 lda #$FF ; clamp large line heights to 255
+ tay ; save the height in Y reg + tay ; save the height in Y reg
pla ; get the depth back pla ; get the depth back
!if DEBUG { jsr .debugDepth }
jmp saveLink ; save final column data to link buffer jmp saveLink ; save final column data to link buffer
!if DEBUG >= 2 { !if DEBUG >= 2 {
@ -575,6 +586,18 @@ castRay: !zone
+prA +prA
+crout +crout
rts rts
.debugDepth:
pha
lda screenCol
cmp #4
bne +
+prStr : !text "depth for col4=",0
pla
pha
+prA
+crout
+ pla
rts
} }
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
@ -1099,8 +1122,8 @@ drawSprite: !zone
; (can be used for further manipulation of the values there). ; (can be used for further manipulation of the values there).
; ;
saveLink: !zone saveLink: !zone
sta tmp ; keep height for storing later sta tmp ; keep depth for storing later
sty tmp+1 ; same with depth sty tmp+1 ; same with height
ldx screenCol ldx screenCol
ldy firstLink,x ldy firstLink,x
bne .chk1 bne .chk1
@ -1119,9 +1142,10 @@ saveLink: !zone
lda txNum lda txNum
sta txNumBuf,x sta txNumBuf,x
inc nextLink inc nextLink
!if DEBUG { jsr .debugLink }
rts rts
.chk1 ; does it need to be inserted before the existing first link? .chk1 ; does it need to be inserted before the existing first link?
lda tmp+1 lda tmp
cmp depthBuf,y cmp depthBuf,y
bcc .store bcc .store
; advance to next link ; advance to next link
@ -1134,10 +1158,41 @@ saveLink: !zone
sta linkBuf,x sta linkBuf,x
bne .store2 ; always taken; also note: Y contains next link (0 for end of chain) bne .store2 ; always taken; also note: Y contains next link (0 for end of chain)
.chk2 ; do we need to insert before this (non-first) link? .chk2 ; do we need to insert before this (non-first) link?
lda tmp+1 lda tmp
cmp depthBuf,y cmp depthBuf,y
bcc .insert ; found the right place bcc .insert ; found the right place
bcs .next ; not the right place to insert, look at next link (always taken) bcs .next ; not the right place to insert, look at next link (always taken)
!if DEBUG {
.debugLink:
lda screenCol
cmp #DEBUG_COLUMN
beq +
rts
+ txa
pha
+prStr : !text "Links for col ",0
+prByte screenCol
+prStr : !text ": ",0
ldx screenCol
ldy firstLink,x
.dlup +prStr : !text "[ht=",0
lda heightBuf,y
+prA
+prStr : !text "tx=",0
lda txNumBuf,y
+prA
+prStr : !text "dp=",0
lda depthBuf,y
+prA
+prStr : !text "] ",0
lda linkBuf,y
tay
bne .dlup
+crout
pla
tax
rts
}
; Advance pLine to the next line on the hi-res screen ; Advance pLine to the next line on the hi-res screen
nextLine: !zone nextLine: !zone
@ -1582,18 +1637,15 @@ expanderJmp:
;------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------
; Establish the initial player position and direction [ref BigBlue3_10] ; Establish the initial player position and direction [ref BigBlue3_10]
setPlayerPos: !zone setPlayerPos: !zone
; X=1.5 lda #>PLAYER_START_X
lda #1
sta playerX+1 sta playerX+1
lda #$80 lda #<PLAYER_START_X
sta playerX sta playerX
; Y=3.5 lda #>PLAYER_START_Y
lda #3
sta playerY+1 sta playerY+1
lda #$80 lda #<PLAYER_START_Y
sta playerY sta playerY
; direction=0 lda #PLAYER_START_DIR
lda #4
sta playerDir sta playerDir
rts rts