Advertisement
Guest User

Untitled

a guest
Jul 20th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; BADUK v2.0
  2. ; 2011 (c) JrezCorp Team
  3. ;
  4. ; ASM6502
  5. ;
  6.     .list
  7.     .inesprg 1 ; 1 PRG
  8.     .ineschr 1 ; 1 CHR
  9.     .inesmir 0 ; V-mirroring
  10.     .inesmap 0 ; 0-map (NMAP)
  11.  
  12. ; MEMORY MAP
  13. ;
  14. ; 0x0000 - 0x04FF - arrays (0x0000-0x00FF - zero page, 0x0100-0x01FF - stack, 0x0200-0x02FF - sprite memmory)
  15. ; 0x0500 - 0x07FF - variables
  16. ; 0x0800 - 0x1FFF - mirrors of 0x0000 - 0x04FF
  17. ; 0x2000 - 0x2007 - PPU registers
  18. ; 0x2008 - 0x3FFF - mirrors of 0x2000 - 0x2007
  19. ; 0x4000 - 0x401F - 2A03 (APU) registers
  20. ; 0x4020 - 0x5FFF - mapper registers (not used)
  21. ; 0x6000 - 0x7FFF - SRAM
  22. ; 0x8000 - 0xFFFF - PRG ROM
  23.  
  24. ; VARIABLES AND ARRAYS
  25.  
  26. stack = $0100 ; (size = 256)
  27. sprite_mem = $0200 ; (size = 256)
  28. nmi_hit = $0500 ; (size = 1)
  29. temp = $0501 ; (size = 1)
  30. temp_2 = $0502 ; (size = 1)
  31. joy1stat = $0503 ; (size = 1)
  32. joy1a = $0504 ; (size = 1)
  33. joy1b = $0505 ; (size = 1)
  34. joy1select = $0506 ; (size = 1)
  35. joy1start = $0507 ; (size = 1)
  36. joy1up = $0508 ; (size = 1)
  37. joy1down = $0509 ; (size = 1)
  38. joy1left = $050A ; (size = 1)
  39. joy1right = $050B ; (size = 1)
  40. dig = $050C
  41. digits = $050E
  42.  
  43.     .bank 0
  44.     .org $8000
  45.  
  46. ; PRG ROM
  47.  
  48. main:
  49. ; show logo
  50.     jsr jcorp
  51.     lda #0
  52. mainloop:
  53.     beq mainloop
  54.  
  55. add_d:
  56.     ldx #5
  57. m_0:
  58.     lda digits,x
  59.     adc #0
  60.     cmp #10
  61.     bmi m_1
  62.     clc
  63.     sbc #9
  64.     sec
  65. m_1:
  66.     sta digits,x
  67.     dex
  68.     bne m_0
  69.     rts
  70. mul2_d:
  71.     ldx #5
  72. mm_0:
  73.     lda digits,x
  74.     adc digits,x
  75.     cmp #10
  76.     bmi mm_1
  77.     clc
  78.     sbc #9
  79.     sec
  80. mm_1:
  81.     sta digits,x
  82.     dex
  83.     bne mm_0
  84.     rts
  85.    
  86. ; jcorp logo
  87. jcorp:
  88. ; PPU is turned off
  89. ; setup palette
  90.     lda #$3f
  91.     sta $2006
  92.     lda #0
  93.     sta $2006
  94.     lda #13
  95.     sta $2007
  96.     lda #45
  97.     sta $2007
  98.     lda #38
  99.     sta $2007
  100.     lda #40
  101.     sta $2007
  102. ; clearing attributes
  103.     lda #$23
  104.     sta $2006
  105.     lda #$c0
  106.     sta $2006
  107.     ldx #64
  108.     lda #0
  109. jcorp_loop0:
  110.     sta $2007
  111.     dex
  112.     bne jcorp_loop0
  113. ; filling nametable
  114.     lda #$20
  115.     sta $2006
  116.     sta $2006
  117. ;------------- clear digits
  118.     ldx #5
  119.     lda #0
  120.     sta digits,x
  121.     dex
  122.     lda #0
  123.     sta digits,x
  124.     dex
  125.     lda #0
  126.     sta digits,x
  127.     dex
  128.     lda #0
  129.     sta digits,x
  130.     dex
  131.     lda #0
  132.     sta digits,x
  133. ;------------------- test value
  134.     lda #239
  135.     sta dig
  136. ;-------------------
  137.     ldy #8
  138. m_7:
  139.     clc
  140.     jsr mul2_d
  141.     clc
  142.     rol dig
  143.     jsr add_d
  144.     dey
  145.     bne m_7
  146.    
  147.     ldx #5 
  148.     ldy #1
  149. my_loop:
  150.     lda digits,y
  151.     clc
  152.     adc #$30
  153.     sta $2007
  154.     iny
  155.     dex
  156.     bne my_loop
  157.    
  158.  
  159. ; turn on PPU
  160.     jsr vwait
  161.     lda #%00000000
  162.     sta $2000
  163. ; show bg, no clipping
  164.     lda #%00001010
  165.     sta $2001
  166. ; clear scroll
  167. clear_scroll:
  168.     lda #0
  169.     sta $2005
  170.     sta $2005
  171.     sta $2006
  172.     sta $2006
  173.     rts
  174. ; wait for vblank starts
  175. vwait_start:
  176.     lda $2002
  177.     bpl vwait_start
  178.     rts
  179. ; wait for vblank ends and clear scroll
  180. vwait_end:
  181.     jsr vwait_end_wc
  182.     jsr clear_scroll
  183.     rts
  184. ; wait for vblank ends
  185. vwait_end_wc:
  186.     lda $2002
  187.     bmi vwait_end
  188.     rts
  189. ; wait for a vblank
  190. vwait:
  191.     jsr vwait_wc
  192.     jsr clear_scroll
  193.     rts
  194. ; wait for a vblank (scroll not cleared)
  195. vwait_wc:
  196.     jsr vwait_start
  197.     jsr vwait_end_wc
  198.     rts
  199. ; entry point
  200. start:
  201. ; turn off PPU
  202.     lda #0
  203.     sta $2000
  204.     sta $2001
  205. ; disable interrupts
  206.     sei
  207. ; wait for two vblanks
  208.     jsr vwait_wc
  209.     jsr vwait_wc
  210. ; reset stack pointer
  211.     ldx $ff
  212.     txs
  213. ; goto main
  214.     jmp main
  215. nmi:
  216.     php
  217.     pha
  218.     txa
  219.     pha
  220.     tya
  221.     pha
  222.     lda #1
  223.     sta nmi_hit
  224.     pla
  225.     tay
  226.     pla
  227.     tax
  228.     pla
  229.     plp
  230.     rti
  231.  
  232. ; ignore any irq
  233. irq:
  234.     rti
  235. ; DATA
  236. jcorp_table:
  237.     .db 0,171,2,1,0,14,4,1,6,1,8,1,0,7,10,1
  238.     .db 0,2,12,1,0,2,14,1,16,1,18,1,0,7,20,1
  239.     .db 22,1,24,1,26,1,28,1,30,1,96,1,98,1,100,1
  240.     .db 0,6,102,1,104,1,106,1,108,1,110,1,112,1,114,1
  241.     .db 116,1,118,1,120,1,0,6,122,1,124,1,126,1,128,1
  242.     .db 130,1,132,1,134,1,136,1,138,1,140,1,0,13,142,1
  243.     .db 144,1,146,1,0,14,148,1,150,1,0,163
  244.    
  245.     .bank 1
  246.     .org $FFFA
  247. ; POINTERS
  248.     .dw nmi, start, irq
  249.     .bank 2
  250.     .org $0000
  251. ; CHR ROM
  252.     .incbin "rom.chr"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement