Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; BADUK v2.0
- ; 2011 (c) JrezCorp Team
- ;
- ; ASM6502
- ;
- .list
- .inesprg 1 ; 1 PRG
- .ineschr 1 ; 1 CHR
- .inesmir 0 ; V-mirroring
- .inesmap 0 ; 0-map (NMAP)
- ; MEMORY MAP
- ;
- ; 0x0000 - 0x04FF - arrays (0x0000-0x00FF - zero page, 0x0100-0x01FF - stack, 0x0200-0x02FF - sprite memmory)
- ; 0x0500 - 0x07FF - variables
- ; 0x0800 - 0x1FFF - mirrors of 0x0000 - 0x04FF
- ; 0x2000 - 0x2007 - PPU registers
- ; 0x2008 - 0x3FFF - mirrors of 0x2000 - 0x2007
- ; 0x4000 - 0x401F - 2A03 (APU) registers
- ; 0x4020 - 0x5FFF - mapper registers (not used)
- ; 0x6000 - 0x7FFF - SRAM
- ; 0x8000 - 0xFFFF - PRG ROM
- ; VARIABLES AND ARRAYS
- stack = $0100 ; (size = 256)
- sprite_mem = $0200 ; (size = 256)
- nmi_hit = $0500 ; (size = 1)
- temp = $0501 ; (size = 1)
- temp_2 = $0502 ; (size = 1)
- joy1stat = $0503 ; (size = 1)
- joy1a = $0504 ; (size = 1)
- joy1b = $0505 ; (size = 1)
- joy1select = $0506 ; (size = 1)
- joy1start = $0507 ; (size = 1)
- joy1up = $0508 ; (size = 1)
- joy1down = $0509 ; (size = 1)
- joy1left = $050A ; (size = 1)
- joy1right = $050B ; (size = 1)
- dig = $050C
- digits = $050E
- .bank 0
- .org $8000
- ; PRG ROM
- main:
- ; show logo
- jsr jcorp
- lda #0
- mainloop:
- beq mainloop
- add_d:
- ldx #5
- m_0:
- lda digits,x
- adc #0
- cmp #10
- bmi m_1
- clc
- sbc #9
- sec
- m_1:
- sta digits,x
- dex
- bne m_0
- rts
- mul2_d:
- ldx #5
- mm_0:
- lda digits,x
- adc digits,x
- cmp #10
- bmi mm_1
- clc
- sbc #9
- sec
- mm_1:
- sta digits,x
- dex
- bne mm_0
- rts
- ; jcorp logo
- jcorp:
- ; PPU is turned off
- ; setup palette
- lda #$3f
- sta $2006
- lda #0
- sta $2006
- lda #13
- sta $2007
- lda #45
- sta $2007
- lda #38
- sta $2007
- lda #40
- sta $2007
- ; clearing attributes
- lda #$23
- sta $2006
- lda #$c0
- sta $2006
- ldx #64
- lda #0
- jcorp_loop0:
- sta $2007
- dex
- bne jcorp_loop0
- ; filling nametable
- lda #$20
- sta $2006
- sta $2006
- ;------------- clear digits
- ldx #5
- lda #0
- sta digits,x
- dex
- lda #0
- sta digits,x
- dex
- lda #0
- sta digits,x
- dex
- lda #0
- sta digits,x
- dex
- lda #0
- sta digits,x
- ;------------------- test value
- lda #239
- sta dig
- ;-------------------
- ldy #8
- m_7:
- clc
- jsr mul2_d
- clc
- rol dig
- jsr add_d
- dey
- bne m_7
- ldx #5
- ldy #1
- my_loop:
- lda digits,y
- clc
- adc #$30
- sta $2007
- iny
- dex
- bne my_loop
- ; turn on PPU
- jsr vwait
- lda #%00000000
- sta $2000
- ; show bg, no clipping
- lda #%00001010
- sta $2001
- ; clear scroll
- clear_scroll:
- lda #0
- sta $2005
- sta $2005
- sta $2006
- sta $2006
- rts
- ; wait for vblank starts
- vwait_start:
- lda $2002
- bpl vwait_start
- rts
- ; wait for vblank ends and clear scroll
- vwait_end:
- jsr vwait_end_wc
- jsr clear_scroll
- rts
- ; wait for vblank ends
- vwait_end_wc:
- lda $2002
- bmi vwait_end
- rts
- ; wait for a vblank
- vwait:
- jsr vwait_wc
- jsr clear_scroll
- rts
- ; wait for a vblank (scroll not cleared)
- vwait_wc:
- jsr vwait_start
- jsr vwait_end_wc
- rts
- ; entry point
- start:
- ; turn off PPU
- lda #0
- sta $2000
- sta $2001
- ; disable interrupts
- sei
- ; wait for two vblanks
- jsr vwait_wc
- jsr vwait_wc
- ; reset stack pointer
- ldx $ff
- txs
- ; goto main
- jmp main
- nmi:
- php
- pha
- txa
- pha
- tya
- pha
- lda #1
- sta nmi_hit
- pla
- tay
- pla
- tax
- pla
- plp
- rti
- ; ignore any irq
- irq:
- rti
- ; DATA
- jcorp_table:
- .db 0,171,2,1,0,14,4,1,6,1,8,1,0,7,10,1
- .db 0,2,12,1,0,2,14,1,16,1,18,1,0,7,20,1
- .db 22,1,24,1,26,1,28,1,30,1,96,1,98,1,100,1
- .db 0,6,102,1,104,1,106,1,108,1,110,1,112,1,114,1
- .db 116,1,118,1,120,1,0,6,122,1,124,1,126,1,128,1
- .db 130,1,132,1,134,1,136,1,138,1,140,1,0,13,142,1
- .db 144,1,146,1,0,14,148,1,150,1,0,163
- .bank 1
- .org $FFFA
- ; POINTERS
- .dw nmi, start, irq
- .bank 2
- .org $0000
- ; CHR ROM
- .incbin "rom.chr"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement