diff --git a/plat.nes b/plat.nes index 56e6e43..0b2ffa3 100644 Binary files a/plat.nes and b/plat.nes differ diff --git a/plat.s b/plat.s index e2b4ac2..534ca81 100644 --- a/plat.s +++ b/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 level, X + 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 level, X + 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 level, X + 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 level, X + 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 +