Nametable two collision; collision flag
This commit is contained in:
180
plat.s
180
plat.s
@@ -261,69 +261,73 @@ gamepad_poll:
|
||||
.segment "RODATA"
|
||||
|
||||
level:
|
||||
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,1,0,0,1,0,0,0,0,1,0,0,2,7,7,3
|
||||
.byte 0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,9
|
||||
.byte 0,1,0,0,1,7,7,7,7,1,7,7,6,0,0,9
|
||||
.byte 0,0,1,1,0,0,0,0,0,1,0,0,4,8,8,5
|
||||
.byte 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,0,0,0,0,0,0,10,10,10,10,10
|
||||
.byte 0,0,1,0,0,0,0,1,0,0,0,11,11,11,11,11
|
||||
.byte 0,1,2,3,4,5,6,7,8,9,0,11,11,11,11,11
|
||||
.byte 0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11
|
||||
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
|
||||
.byte $00,$00,$00,$00,$00,$00,$00,$81,$00,$81,$00,$81,$00,$81,$00,$00
|
||||
.byte $82,$83,$00,$00,$00,$00,$00,$00,$81,$00,$0C,$00,$81,$00,$00,$00
|
||||
.byte $84,$85,$00,$00,$00,$00,$00,$81,$00,$81,$00,$81,$00,$81,$00,$00
|
||||
.byte $0F,$0E,$00,$00,$00,$00,$00,$00,$0C,$00,$0C,$00,$0C,$00,$00,$00
|
||||
.byte $0F,$0E,$00,$00,$00,$00,$00,$81,$00,$81,$00,$81,$00,$81,$00,$00
|
||||
.byte $0F,$0E,$00,$00,$00,$00,$00,$00,$81,$00,$0C,$00,$81,$00,$00,$00
|
||||
.byte $0F,$0E,$00,$00,$00,$00,$00,$81,$00,$81,$00,$81,$00,$81,$00,$00
|
||||
.byte $0F,$0E,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
|
||||
.byte $0F,$0E,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
|
||||
.byte $0F,$0E,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
|
||||
.byte $0F,$0E,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
|
||||
.byte $0F,$8C,$87,$87,$87,$87,$87,$87,$87,$87,$87,$87,$87,$87,$87,$87
|
||||
.byte $0F,$0E,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
|
||||
.byte $0F,$0E,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
|
||||
|
||||
level2:
|
||||
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,1,0,0,1,0,0,0,0,1,0,0,2,7,7,3
|
||||
.byte 0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,9
|
||||
.byte 0,1,0,0,1,7,7,7,7,1,7,7,6,0,0,9
|
||||
.byte 0,0,1,1,0,0,0,0,0,1,0,0,4,8,8,5
|
||||
.byte 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,0,0,0,0,0,0,10,10,10,10,10
|
||||
.byte 0,0,1,0,0,0,0,1,0,0,0,11,11,11,11,11
|
||||
.byte 0,1,2,3,4,5,6,7,8,9,0,11,11,11,11,11
|
||||
.byte 0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11
|
||||
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
|
||||
.byte $00,$8C,$8C,$8C,$8C,$8C,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
|
||||
.byte $00,$09,$0C,$0C,$0C,$8C,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
|
||||
.byte $00,$8C,$8C,$8C,$0C,$06,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
|
||||
.byte $00,$09,$0C,$0C,$0C,$8C,$00,$00,$00,$00,$00,$82,$83,$00,$00,$00
|
||||
.byte $00,$8C,$8C,$8C,$8C,$8C,$00,$00,$00,$00,$00,$84,$85,$00,$00,$00
|
||||
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$0E,$00,$82,$83
|
||||
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$0E,$00,$84,$85
|
||||
.byte $00,$00,$00,$00,$00,$00,$00,$00,$82,$83,$00,$0F,$0E,$00,$0F,$0E
|
||||
.byte $00,$00,$00,$00,$00,$00,$00,$00,$84,$85,$00,$0F,$0E,$00,$0F,$0E
|
||||
.byte $00,$00,$00,$00,$00,$00,$00,$00,$0F,$0E,$00,$0F,$0E,$00,$0F,$0E
|
||||
.byte $00,$00,$00,$00,$00,$00,$00,$00,$0F,$0E,$00,$0F,$0E,$00,$0F,$0E
|
||||
.byte $87,$87,$87,$87,$87,$8C,$00,$00,$0F,$0E,$00,$0F,$0E,$00,$0F,$0E
|
||||
.byte $00,$00,$00,$00,$00,$00,$00,$00,$0F,$0E,$00,$8A,$8A,$8A,$8A,$0E
|
||||
.byte $00,$00,$00,$00,$00,$00,$00,$00,$0F,$0E,$00,$8B,$8B,$8B,$8B,$0E
|
||||
|
||||
;level2:
|
||||
;.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;level:
|
||||
;.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;.byte 0,1,0,0,1,0,0,0,0,1,0,0,2,7,7,3
|
||||
;.byte 0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,9
|
||||
;.byte 0,1,0,0,1,7,7,7,7,1,7,7,6,0,0,9
|
||||
;.byte 0,0,1,1,0,0,0,0,0,1,0,0,4,8,8,5
|
||||
;.byte 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0
|
||||
;.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;.byte 0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0
|
||||
;.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;.byte 0,0,0,0,0,0,0,0,0,0,0,10,10,10,10,10
|
||||
;.byte 0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11
|
||||
;.byte 0,1,7,7,7,7,7,7,7,1,0,11,11,11,11,11
|
||||
;.byte 0,0,1,0,0,0,0,1,0,0,0,11,11,11,11,11
|
||||
;.byte 0,1,2,3,4,5,6,7,8,9,0,11,11,11,11,11
|
||||
;.byte 0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11
|
||||
|
||||
metatiles:
|
||||
.byte 0,0,0,0,0
|
||||
.byte $14,$15,$16,$17,1 ; Full block
|
||||
.byte $14,$18,$1B,$00,0 ; up / left
|
||||
.byte $18,$15,$00,$19,0 ; up / right
|
||||
.byte $1B,$00,$16,$1A,0 ; down / left
|
||||
.byte $00,$19,$1A,$17,0 ; down / right
|
||||
.byte $1B,$00,$1B,$00,0 ; left
|
||||
.byte $18,$18,$00,$00,0 ; up
|
||||
.byte $00,$00,$1A,$1A,0 ; down
|
||||
.byte $00,$19,$00,$19,0 ; right
|
||||
.byte $10,$11,$12,$13,2
|
||||
.byte $12,$12,$12,$12,2
|
||||
.byte $14,$15,$16,$17,%00000000 ; 1: Full block
|
||||
.byte $14,$18,$1B,$00,%00000000 ; 2: up / left
|
||||
.byte $18,$15,$00,$19,%00000000 ; 3: up / right
|
||||
.byte $1B,$00,$16,$1A,%00000000 ; 4: down / left
|
||||
.byte $00,$19,$1A,$17,%00000000 ; 5: down / right
|
||||
.byte $1B,$00,$1B,$00,%00000000 ; 6: left
|
||||
.byte $18,$18,$00,$00,%00000000 ; 7: up
|
||||
.byte $00,$00,$1A,$1A,%00000000 ; 8: down
|
||||
.byte $00,$19,$00,$19,%00000000 ; 9: right
|
||||
.byte $10,$11,$12,$13,%00000010 ; A: grass top
|
||||
.byte $12,$12,$12,$12,%00000010 ; B: grass bottom
|
||||
.byte $14,$15,$16,$17,%00000001 ; C: Intangible full block
|
||||
.byte $01,$01,$01,$01,%00000001 ; D: Intangible grey
|
||||
.byte $1B,$00,$1B,$00,%00000000 ; E: Intangible left
|
||||
.byte $00,$19,$00,$19,%00000000 ; F: Intangible right
|
||||
|
||||
example_palette:
|
||||
.byte $0F,$00,$3D,$20 ; greyscale
|
||||
@@ -499,13 +503,13 @@ draw_player:
|
||||
@skip_bcs_right:
|
||||
lda player_nmt_x
|
||||
eor scroll_nmt
|
||||
beq @hide_player_right
|
||||
bne @hide_player_right
|
||||
jmp :++
|
||||
:
|
||||
; if nothing, nametable bits must be same to continue
|
||||
lda player_nmt_x
|
||||
eor scroll_nmt
|
||||
bne @hide_player_right
|
||||
beq @hide_player_right
|
||||
:
|
||||
jmp @end_hide_player_right
|
||||
|
||||
@@ -552,13 +556,13 @@ draw_player:
|
||||
@skip_bcs_left:
|
||||
lda var_n
|
||||
eor scroll_nmt
|
||||
beq @hide_player_left
|
||||
bne @hide_player_left
|
||||
jmp :++
|
||||
:
|
||||
; if nothing, nametable bits must be same to continue
|
||||
lda var_n
|
||||
eor scroll_nmt
|
||||
bne @hide_player_left
|
||||
beq @hide_player_left
|
||||
:
|
||||
jmp @end_hide_player_left
|
||||
|
||||
@@ -656,7 +660,6 @@ init_objects:
|
||||
sta player_vel_y
|
||||
sta player_status
|
||||
sta scroll_nmt
|
||||
lda #1
|
||||
sta player_nmt_x
|
||||
|
||||
lda #%00101000
|
||||
@@ -997,6 +1000,7 @@ setup_background:
|
||||
tax
|
||||
|
||||
lda level, X
|
||||
and #%01111111
|
||||
ldx #5
|
||||
jsr mul_x
|
||||
tax
|
||||
@@ -1027,6 +1031,7 @@ setup_background:
|
||||
tax
|
||||
|
||||
lda level, X
|
||||
and #%01111111
|
||||
ldx #5
|
||||
jsr mul_x
|
||||
tax
|
||||
@@ -1088,30 +1093,36 @@ setup_background:
|
||||
tax
|
||||
|
||||
lda level, X
|
||||
and #%01111111
|
||||
tay
|
||||
lda #5
|
||||
jsr mul_y
|
||||
tay
|
||||
lda metatiles+4, Y
|
||||
and #%00000011
|
||||
sta temp_x
|
||||
|
||||
lda level+1, X
|
||||
and #%01111111
|
||||
tay
|
||||
lda #5
|
||||
jsr mul_y
|
||||
tay
|
||||
lda metatiles+4, Y
|
||||
and #%00000011
|
||||
asl
|
||||
asl
|
||||
adc temp_x
|
||||
sta temp_x
|
||||
|
||||
lda level+16, X
|
||||
and #%01111111
|
||||
tay
|
||||
lda #5
|
||||
jsr mul_y
|
||||
tay
|
||||
lda metatiles+4, Y
|
||||
and #%00000011
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
@@ -1120,11 +1131,13 @@ setup_background:
|
||||
sta temp_x
|
||||
|
||||
lda level+17, X
|
||||
and #%01111111
|
||||
tay
|
||||
lda #5
|
||||
jsr mul_y
|
||||
tay
|
||||
lda metatiles+4, Y
|
||||
and #%00000011
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
@@ -1146,13 +1159,17 @@ setup_background:
|
||||
tay
|
||||
inx
|
||||
cpx #8
|
||||
bne :-
|
||||
beq @left_jump
|
||||
jmp :-
|
||||
@left_jump:
|
||||
|
||||
pla
|
||||
tay
|
||||
iny
|
||||
cpy #8
|
||||
bne :--
|
||||
beq :+
|
||||
jmp :--
|
||||
:
|
||||
; ---------------- End nametable 1: Level
|
||||
; ---------------- Begin nametable 2: Level 2
|
||||
lda $2002
|
||||
@@ -1176,6 +1193,7 @@ setup_background:
|
||||
tax
|
||||
|
||||
lda level2, X
|
||||
and #%01111111
|
||||
ldx #5
|
||||
jsr mul_x
|
||||
tax
|
||||
@@ -1206,6 +1224,7 @@ setup_background:
|
||||
tax
|
||||
|
||||
lda level2, X
|
||||
and #%01111111
|
||||
ldx #5
|
||||
jsr mul_x
|
||||
tax
|
||||
@@ -1267,30 +1286,36 @@ setup_background:
|
||||
tax
|
||||
|
||||
lda level2, X
|
||||
and #%01111111
|
||||
tay
|
||||
lda #5
|
||||
jsr mul_y
|
||||
tay
|
||||
lda metatiles+4, Y
|
||||
and #%00000011
|
||||
sta temp_x
|
||||
|
||||
lda level2+1, X
|
||||
and #%01111111
|
||||
tay
|
||||
lda #5
|
||||
jsr mul_y
|
||||
tay
|
||||
lda metatiles+4, Y
|
||||
and #%00000011
|
||||
asl
|
||||
asl
|
||||
adc temp_x
|
||||
sta temp_x
|
||||
|
||||
lda level2+16, X
|
||||
and #%01111111
|
||||
tay
|
||||
lda #5
|
||||
jsr mul_y
|
||||
tay
|
||||
lda metatiles+4, Y
|
||||
and #%00000011
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
@@ -1299,11 +1324,13 @@ setup_background:
|
||||
sta temp_x
|
||||
|
||||
lda level2+17, X
|
||||
and #%01111111
|
||||
tay
|
||||
lda #5
|
||||
jsr mul_y
|
||||
tay
|
||||
lda metatiles+4, Y
|
||||
and #%00000011
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
@@ -1325,13 +1352,17 @@ setup_background:
|
||||
tay
|
||||
inx
|
||||
cpx #8
|
||||
bne :-
|
||||
beq @right_jump
|
||||
jmp :-
|
||||
@right_jump:
|
||||
|
||||
pla
|
||||
tay
|
||||
iny
|
||||
cpy #8
|
||||
bne :--
|
||||
beq :+
|
||||
jmp :--
|
||||
:
|
||||
|
||||
rts
|
||||
|
||||
@@ -1513,7 +1544,15 @@ downward_collision_check:
|
||||
jsr mul_y
|
||||
adc temp_x
|
||||
tax
|
||||
lda player_nmt_x
|
||||
cmp #0
|
||||
beq :+
|
||||
lda level2, X
|
||||
jmp :++
|
||||
:
|
||||
lda level, X
|
||||
:
|
||||
and #%10000000
|
||||
cmp #0
|
||||
beq :+
|
||||
tya
|
||||
@@ -1582,7 +1621,15 @@ upward_collision_check:
|
||||
jsr mul_y
|
||||
adc temp_x
|
||||
tax
|
||||
lda player_nmt_x
|
||||
cmp #0
|
||||
beq :+
|
||||
lda level2, X
|
||||
jmp :++
|
||||
:
|
||||
lda level, X
|
||||
:
|
||||
and #%10000000
|
||||
cmp #0
|
||||
beq :+
|
||||
iny
|
||||
@@ -1652,7 +1699,15 @@ right_collision_check:
|
||||
jsr mul_y
|
||||
adc temp_x
|
||||
tax
|
||||
lda player_nmt_x
|
||||
cmp #0
|
||||
beq :+
|
||||
lda level2, X
|
||||
jmp :++
|
||||
:
|
||||
lda level, X
|
||||
:
|
||||
and #%10000000
|
||||
cmp #0
|
||||
beq :+
|
||||
lda temp_x
|
||||
@@ -1721,7 +1776,15 @@ left_collision_check:
|
||||
jsr mul_y
|
||||
adc temp_x
|
||||
tax
|
||||
lda player_nmt_x
|
||||
cmp #0
|
||||
beq :+
|
||||
lda level2, X
|
||||
jmp :++
|
||||
:
|
||||
lda level, X
|
||||
:
|
||||
and #%10000000
|
||||
cmp #0
|
||||
beq :+
|
||||
lda temp_x
|
||||
@@ -1747,3 +1810,4 @@ left_collision_check:
|
||||
beq @begin_check
|
||||
|
||||
rts
|
||||
|
||||
|
||||
Reference in New Issue
Block a user