Skip to content

Instantly share code, notes, and snippets.

@rdeioris
Created October 30, 2018 10:38
Show Gist options
  • Save rdeioris/2450daeec8276d9095e697ee7e10d153 to your computer and use it in GitHub Desktop.
Save rdeioris/2450daeec8276d9095e697ee7e10d153 to your computer and use it in GitHub Desktop.
BACKGROUND_COLOR = $5100 ; assign the background color
BACKGROUND_SCROLL_X = $5101
BACKGROUND_SCROLL_Y = $5102
; write to chr rom
CHR_COL = $5103
CHR_ROW = $5104
CHR_PIXEL = $5105
INPUT = $5106
SPRITE0 = $5000
SPRITE1 = $5004
SPRITE2 = $5008
SPRITE3 = $500c
; bit 0 -> 8/16 mode bit 1-2 select background
BACKGROUND_MODE = $5107
BACKGROUND0 = $4000
BACKGROUND1 = $4400
BACKGROUND2 = $4800
BACKGROUND3 = $4c00
LDA #$01 ; 16x16 mode
STA BACKGROUND_MODE
LDA #$03
STA BACKGROUND_COLOR
LDA #$04 ; set color 4 to chr ram 0,0
STA CHR_PIXEL
LDA #127
STA SPRITE0 ; tile
LDA #100
STA SPRITE0+1 ; x
LDA #100
STA SPRITE0+2 ; y
LDA #$29
STA SPRITE0+3 ; flags 0=enable/disable 1=flip_x 2=flip_y 3=8/16 4-7=scale
LDA #127
STA SPRITE1 ; tile
LDA #148
STA SPRITE1+1 ; x
LDA #100
STA SPRITE1+2 ; y
LDA #$2b
STA SPRITE1+3 ; flags 0=enable/disable 1=flip_x 2=flip_y 3=8/16 4-7=scale
LDA #127
STA SPRITE2 ; tile
LDA #100
STA SPRITE2+1 ; x
LDA #148
STA SPRITE2+2 ; y
LDA #$2d
STA SPRITE2+3 ; flags 0=enable/disable 1=flip_x 2=flip_y 3=8/16 4-7=scale
LDA #127
STA SPRITE3 ; tile
LDA #148
STA SPRITE3+1 ; x
LDA #148
STA SPRITE3+2 ; y
LDA #$2f
STA SPRITE3+3 ; flags 0=enable/disable 1=flip_x 2=flip_y 3=8/16 4-7=scale
; load content of BACKGROUND 0
LDX #0
fill0:
LDA map0,X
STA BACKGROUND0,X
INX
BNE fill0
; load content of BACKGROUND 1
LDX #0
fill1:
LDA map1,X
STA BACKGROUND1,X
INX
BNE fill1
; game loop
loop:
JMP loop
vblank:
right:
LDA INPUT ; read input into accumulator
AND #$04 ; check bit 3
BEQ left
INC BACKGROUND_SCROLL_X
BNE left
LDA BACKGROUND_MODE
EOR #$02 ; invert bit 1 (switch horizontal background)
STA BACKGROUND_MODE
left:
LDA INPUT
AND #$08 ; check bit 4
BEQ end_input
DEC BACKGROUND_SCROLL_X
LDA BACKGROUND_SCROLL_X ; reload BACKGROUND_SCROLL_X in the accumulator so we can CMP
CMP #$FF
BNE end_input
LDA BACKGROUND_MODE
EOR #$02 ; invert bit 1 (switch horizontal background)
STA BACKGROUND_MODE
end_input:
RTI
map0:
.byte 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6
.byte 6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6
.byte 6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6
.byte 6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
.byte 6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
.byte 6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
.byte 6,1,1,1,1,1,1,88,1,1,1,1,1,1,1,6
.byte 6,1,1,1,1,1,1,88,1,1,1,1,1,1,1,6
.byte 6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6
.byte 6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6
.byte 6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6
.byte 6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6
.byte 6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6
.byte 6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6
.byte 6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6
.byte 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6
map1:
.byte 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6
.byte 6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6
.byte 6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6
.byte 1,1,1,1,4,4,1,1,1,1,1,1,1,1,1,6
.byte 1,1,1,1,4,4,1,1,1,1,1,1,1,1,1,6
.byte 1,1,1,1,4,4,1,1,1,1,1,1,1,1,1,6
.byte 6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6
.byte 6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6
.byte 6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6
.byte 6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6
.byte 6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6
.byte 6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6
.byte 6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6
.byte 6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6
.byte 6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6
.byte 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6
.segment "VECTORS"
.word vblank
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment