Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .inesprg 1 ; 1 bank of program code
- .ineschr 1 ; 1 bank of picture data
- .inesmap 0 ; mapper 0
- .inesmir 1 ; mirror setting always 1
- .bank 0 ; code
- .org $0000
- posX db 0
- posY db 60
- numproj db 0
- blankstate db 0
- scratchpad0 db 0
- scratchpad1 db 0
- tmpaddr dw 0
- tmplen db 0
- .org $0300 ; oam copy
- sprite0:
- db 0 ; Y
- db 0 ; N
- db 0 ; C
- db 0 ; X
- sprite1:
- db 0
- db 0
- db 0
- db 0
- sprite2:
- db 0
- db 0
- db 0
- db 0
- .org $8000
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- main:
- sei
- bit $2002
- .vblank_wait1:
- bit $2002
- bpl .vblank_wait1
- .vblank_wait2:
- bit $2002
- bpl .vblank_wait2
- ldx #$3F
- stx $2006
- ldx #$00
- stx $2006 ;pallate control reg 1, location
- .pal_load_top:
- lda pal, x
- sta $2007 ; pallate control reg 2, data
- inx
- cpx #32
- bne .pal_load_top
- jsr load_background
- ldx #%10001000
- stx $2000 ;;init and enable ppu
- ldx #%00011110
- stx $2001
- .main_loop:
- lda blankstate ; wait for vblank
- cmp #1
- bne .main_loop
- dec blankstate
- ;;;;;;gamepad check
- lda #$01 ; reset gamepad
- sta $4016 ;
- lda #$00 ;
- sta $4016 ;
- lda $4016 ; A
- and #1
- beq .not_A_button
- jsr button_A_press
- .not_A_button:
- lda $4016 ; B
- lda $4016 ; select
- lda $4016 ; start
- and #1
- beq .not_start_button
- jsr button_start_press
- .not_start_button:
- lda $4016 ; up
- and #1
- beq .not_up_button
- dec posY
- .not_up_button:
- lda $4016 ; down
- and #1
- beq .not_down_button
- inc posY
- .not_down_button:
- lda $4016 ; left
- and #1
- beq .not_left_button
- dec posX
- .not_left_button:
- lda $4016 ; right
- and #1
- beq .not_right_button
- inc posX
- .not_right_button:
- ;;;;;;draw sprites
- lda posX
- sta sprite0 + 3
- lda posY
- sta sprite0 + 0
- lda sprite1 + 1
- cmp #1
- bne .no_projectile
- lda sprite1 + 3
- cmp #$FA
- bcc .not_over
- lda #0
- sta sprite1 + 0
- sta sprite1 + 1
- sta sprite1 + 3
- jmp .no_projectile
- .not_over:
- clc
- adc #6
- sta sprite1 + 3
- eor #%11000000
- sta sprite1 + 2
- .no_projectile:
- lda #3 ;reload OAM addrs
- sta $4014
- jmp .main_loop
- .freeze:
- jmp .freeze
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- button_A_press:
- lda numproj
- cmp #32
- bcs .exit
- asl a
- asl a
- sta tmplen
- ldx #(sprite1 >> 8)
- stx tmpaddr + 1
- ldx #(sprite1 & $FF)
- stx tmpaddr
- lda tmpaddr
- adc tmplen
- bcc .no_carry
- inc tmpaddr + 1
- .no_carry:
- lda posY
- ldy #0
- sta [tmpaddr], y
- lda posX
- clc
- adc #3
- ldy #3
- sta [tmpaddr], y
- lda #1
- ldy #1
- sta [tmpaddr], y
- inc numproj
- .exit:
- rts
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- button_start_press: ;;;work on this too
- rts
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- primm: ;;;;work on this
- rts
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- load_background:
- lda #$20
- sta $2006 ; bg location loading
- ;lda #$00
- sta $2006
- ldx #0
- lda #0
- .bkg_load_buffer_space:
- sta $2007
- inx
- cpx #32
- bne .bkg_load_buffer_space
- ldx #0
- .bkg_load_nametable_x:
- lda nametablemap, x
- inx
- sta $2007
- cpx #0
- bne .bkg_load_nametable_x
- .bkg_load_nametable_x2:
- lda nametablemap + $100, x
- inx
- sta $2007
- cpx #0
- bne .bkg_load_nametable_x2
- .bkg_load_nametable_x3:
- lda nametablemap + $200, x
- inx
- sta $2007
- cpx #0
- bne .bkg_load_nametable_x3
- .bkg_load_nametable_x4:
- lda nametablemap + $300, x
- inx
- sta $2007
- cpx #160
- bne .bkg_load_nametable_x4
- rts
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- irq:
- rti
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- vblank:
- inc blankstate
- rti
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement