parent
b1a04a0ee6
commit
4246082e48
|
@ -15,12 +15,17 @@ check_items:
|
|||
|
||||
; check head items
|
||||
|
||||
ldx KEEN_HEAD_POINTER
|
||||
ldx KEEN_HEAD_POINTER_L
|
||||
jsr check_item
|
||||
ldx KEEN_HEAD_POINTER_R
|
||||
jsr check_item
|
||||
|
||||
; check feet items
|
||||
|
||||
ldx KEEN_FOOT_POINTER
|
||||
ldx KEEN_FOOT_POINTER_L
|
||||
jsr check_item
|
||||
|
||||
ldx KEEN_FOOT_POINTER_R
|
||||
; fallthrough
|
||||
|
||||
;==================
|
||||
|
@ -78,10 +83,15 @@ done_item_pickup:
|
|||
; big tilemap:
|
||||
; to find... urgh
|
||||
; X is currently (KEEN_Y/4)*20)+(KEEN_X/2)
|
||||
; (X mod 20) = KEEN_X/2
|
||||
; X/20 = KEEN_Y/4
|
||||
;
|
||||
|
||||
lda KEEN_Y ; divide by 4 as tile 4 blocks tall
|
||||
lsr
|
||||
lsr
|
||||
lda div20_table,X
|
||||
|
||||
; lda KEEN_Y ; divide by 4 as tile 4 blocks tall
|
||||
; lsr
|
||||
; lsr
|
||||
|
||||
clc
|
||||
adc TILEMAP_Y ; add in tilemap Y (each row 256 bytes)
|
||||
|
@ -91,12 +101,13 @@ done_item_pickup:
|
|||
lda TILEMAP_X ; add in X offset of tilemap
|
||||
sta btc_smc+1
|
||||
|
||||
lda KEEN_X
|
||||
lsr
|
||||
tay
|
||||
; iny ; why add 1????
|
||||
lda mod20_table,X
|
||||
|
||||
lda #0 ; background tile
|
||||
; lda KEEN_X
|
||||
; lsr
|
||||
tay
|
||||
|
||||
lda #1 ; background tile
|
||||
btc_smc:
|
||||
sta $b000,Y
|
||||
|
||||
|
@ -162,3 +173,40 @@ score_lookup:
|
|||
; 3 = pizza 500 pts
|
||||
; 4 = carbonated beverage 200 pts
|
||||
; ? = bear 5000 pts
|
||||
|
||||
|
||||
; bit of a hack
|
||||
; TODO: auto-generate at startup
|
||||
|
||||
div20_table:
|
||||
.byte 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0
|
||||
.byte 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1
|
||||
.byte 2,2,2,2,2, 2,2,2,2,2, 2,2,2,2,2, 2,2,2,2,2
|
||||
.byte 3,3,3,3,3, 3,3,3,3,3, 3,3,3,3,3, 3,3,3,3,3
|
||||
.byte 4,4,4,4,4, 4,4,4,4,4, 4,4,4,4,4, 4,4,4,4,4
|
||||
.byte 5,5,5,5,5, 5,5,5,5,5, 5,5,5,5,5, 5,5,5,5,5
|
||||
.byte 6,6,6,6,6, 6,6,6,6,6, 6,6,6,6,6, 6,6,6,6,6
|
||||
.byte 7,7,7,7,7, 7,7,7,7,7, 7,7,7,7,7, 7,7,7,7,7
|
||||
.byte 8,8,8,8,8, 8,8,8,8,8, 8,8,8,8,8, 8,8,8,8,8
|
||||
.byte 9,9,9,9,9, 9,9,9,9,9, 9,9,9,9,9, 9,9,9,9,9
|
||||
.byte 10,10,10,10,10, 10,10,10,10,10, 10,10,10,10,10, 10,10,10,10,10
|
||||
.byte 11,11,11,11,11, 11,11,11,11,11, 11,11,11,11,11, 11,11,11,11,11
|
||||
.byte 12,12,12,12,12, 12,12,12,12,12, 12,12,12,12,12 ;, 12,12,12,12,12
|
||||
|
||||
|
||||
mod20_table:
|
||||
.byte 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
|
||||
.byte 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
|
||||
.byte 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
|
||||
.byte 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
|
||||
.byte 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
|
||||
.byte 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
|
||||
.byte 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
|
||||
.byte 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
|
||||
.byte 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
|
||||
.byte 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
|
||||
.byte 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
|
||||
.byte 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
|
||||
.byte 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
|
||||
.byte 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
|
||||
|
||||
|
|
|
@ -403,11 +403,13 @@ keen_get_feet_even:
|
|||
|
||||
lda tilemap,X ; put tilemap value in place
|
||||
sta KEEN_HEAD_TILE1
|
||||
stx KEEN_HEAD_POINTER_L
|
||||
lda tilemap+1,X
|
||||
sta KEEN_HEAD_TILE2
|
||||
stx KEEN_HEAD_POINTER
|
||||
|
||||
txa ; restore pointer to tile of head
|
||||
txa
|
||||
inx
|
||||
stx KEEN_HEAD_POINTER_R
|
||||
; restore pointer to tile of head
|
||||
clc
|
||||
adc #TILE_COLS ; one row down, now at foot
|
||||
tax
|
||||
|
@ -415,12 +417,15 @@ keen_get_feet_even:
|
|||
lda tilemap,X ; put tilemap value in place
|
||||
sta KEEN_FOOT_TILE1
|
||||
sta KEEN_WALK_TILE_L
|
||||
stx KEEN_FOOT_POINTER_L
|
||||
|
||||
lda tilemap+1,X
|
||||
sta KEEN_FOOT_TILE2
|
||||
sta KEEN_WALK_TILE_R
|
||||
stx KEEN_FOOT_POINTER
|
||||
|
||||
txa ; restore pointer to tile of foot
|
||||
txa
|
||||
inx
|
||||
stx KEEN_FOOT_POINTER_R
|
||||
; restore pointer to tile of foot
|
||||
clc
|
||||
adc #TILE_COLS ; one row down
|
||||
tax
|
||||
|
@ -443,7 +448,8 @@ keen_get_feet_odd:
|
|||
lda tilemap+1,X ; put tilemap value in place
|
||||
sta KEEN_HEAD_TILE1
|
||||
sta KEEN_HEAD_TILE2
|
||||
stx KEEN_HEAD_POINTER
|
||||
stx KEEN_HEAD_POINTER_L
|
||||
stx KEEN_HEAD_POINTER_R
|
||||
|
||||
txa
|
||||
clc
|
||||
|
@ -457,7 +463,8 @@ keen_get_feet_odd:
|
|||
sta KEEN_FOOT_TILE2
|
||||
lda tilemap+2,X
|
||||
sta KEEN_WALK_TILE_R
|
||||
stx KEEN_FOOT_POINTER
|
||||
stx KEEN_FOOT_POINTER_L
|
||||
stx KEEN_FOOT_POINTER_R
|
||||
|
||||
txa
|
||||
clc
|
||||
|
|
|
@ -144,10 +144,12 @@ KEEN_HEAD_TILE1 = $A5
|
|||
KEEN_HEAD_TILE2 = $A6
|
||||
KEEN_WALK_TILE_L = $A7
|
||||
KEEN_WALK_TILE_R = $A8
|
||||
KEEN_FOOT_POINTER = $A9
|
||||
KEEN_HEAD_POINTER = $AA
|
||||
MARS_X = $AB
|
||||
MARS_Y = $AC
|
||||
KEEN_FOOT_POINTER_L = $A9
|
||||
KEEN_FOOT_POINTER_R = $AA
|
||||
KEEN_HEAD_POINTER_L = $AB
|
||||
KEEN_HEAD_POINTER_R = $AC
|
||||
MARS_X = $AD
|
||||
MARS_Y = $AE
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue