save.s 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705
  1. .EMPTYFILL 0
  2. .LOROM
  3. .MEMORYMAP
  4. SLOTSIZE $8000
  5. DEFAULTSLOT 0
  6. SLOT 0 $0000 ; ram , direct page
  7. SLOT 1 $2000 ; PPU1, APU
  8. SLOT 2 $3000 ; SFX, DSP
  9. SLOT 3 $4000 ; Controller
  10. SLOT 4 $4200 ; PPU2, DMA
  11. SLOT 5 $6000 ; RESERVED
  12. SLOT 6 $8000 ; code segment
  13. .ENDME
  14. ;.ROMBANKSIZE $8000
  15. ;.ROMBANKS $80
  16. .ROMBANKMAP
  17. BANKSTOTAL $80
  18. BANKSIZE $8000
  19. BANKS $80
  20. .ENDRO
  21. .NAME "optixx"
  22. .BANK $00 SLOT 6
  23. .ORG $0000
  24. .ORGA $8000
  25. .SECTION "MAIN"
  26. .define dp $0000
  27. .define xstorage1 $0001
  28. .define xstorage2 $0002
  29. .define sineoffset $0003
  30. .define scrollval $0005
  31. .define col_reg $0007
  32. .define hdma_table0 $0010
  33. .define plane_0 $0400
  34. .define plane_1 $0800
  35. .define tile $2000
  36. init:
  37. sei ;stop interrupts
  38. phk ;get the current bank and store on stack
  39. plb ;get value off stack and make it the current
  40. ;programming bank
  41. clc ;clear carry bit
  42. xce ;native 16 bit mode (no 6502 emulation!)
  43. jsr init_hdma_table0
  44. ;==========================================================================
  45. ; start of snes register initialization
  46. ;==========================================================================
  47. sep #$30 ; x,y,a are 8 bit numbers
  48. lda #$8f ; screen off, full brightness
  49. sta $2100 ; brightness + screen enable register
  50. lda #$00 ;
  51. sta $2101 ; sprite register (size + address in vram)
  52. lda #$00
  53. sta $2102 ; sprite registers (address of sprite memory [oam])
  54. sta $2103 ; "" ""
  55. lda #$00 ; mode 0
  56. sta $2105 ; graphic mode register
  57. lda #$00 ; no planes, no mosaic
  58. sta $2106 ; mosaic register
  59. lda #$00 ;
  60. sta $2107 ; plane 0 map vram location
  61. lda #$00
  62. sta $2108 ; plane 1 map vram location
  63. lda #$00
  64. sta $2109 ; plane 2 map vram location
  65. lda #$00
  66. sta $210a ; plane 3 map vram location
  67. lda #$00
  68. sta $210b ; plane 0+1 tile data location
  69. lda #$00
  70. sta $210c ; plane 2+3 tile data location
  71. lda #$00
  72. sta $210d ; plane 0 scroll x (first 8 bits)
  73. sta $210d ; plane 0 scroll x (last 3 bits) #$0 - #$07ff
  74. sta $210e ; plane 0 scroll y (first 8 bits)
  75. sta $210e ; plane 0 scroll y (last 3 bits) #$0 - #$07ff
  76. sta $210f ; plane 1 scroll x (first 8 bits)
  77. sta $210f ; plane 1 scroll x (last 3 bits) #$0 - #$07ff
  78. sta $2110 ; plane 1 scroll y (first 8 bits)
  79. sta $2110 ; plane 1 scroll y (last 3 bits) #$0 - #$07ff
  80. sta $2111 ; plane 2 scroll x (first 8 bits)
  81. sta $2111 ; plane 2 scroll x (last 3 bits) #$0 - #$07ff
  82. sta $2112 ; plane 2 scroll y (first 8 bits)
  83. sta $2112 ; plane 2 scroll y (last 3 bits) #$0 - #$07ff
  84. sta $2113 ; plane 3 scroll x (first 8 bits)
  85. sta $2113 ; plane 3 scroll x (last 3 bits) #$0 - #$07ff
  86. sta $2114 ; plane 3 scroll y (first 8 bits)
  87. sta $2114 ; plane 3 scroll y (last 3 bits) #$0 - #$07ff
  88. lda #$80 ; increase vram address after writing to $2119
  89. sta $2115 ; vram address increment register
  90. lda #$00
  91. sta $2116 ; vram address low
  92. sta $2117 ; vram address high
  93. sta $211a ; initial mode 7 setting register
  94. sta $211b ; mode 7 matrix parameter a register (low)
  95. lda #$01
  96. sta $211b ; mode 7 matrix parameter a register (high)
  97. lda #$00
  98. sta $211c ; mode 7 matrix parameter b register (low)
  99. sta $211c ; mode 7 matrix parameter b register (high)
  100. sta $211d ; mode 7 matrix parameter c register (low)
  101. sta $211d ; mode 7 matrix parameter c register (high)
  102. sta $211e ; mode 7 matrix parameter d register (low)
  103. lda #$01
  104. sta $211e ; mode 7 matrix parameter d register (high)
  105. lda #$00
  106. sta $211f ; mode 7 center position x register (low)
  107. sta $211f ; mode 7 center position x register (high)
  108. sta $2120 ; mode 7 center position y register (low)
  109. sta $2120 ; mode 7 center position y register (high)
  110. sta $2121 ; color number register ($0-ff)
  111. sta $2123 ; bg1 & bg2 window mask setting register
  112. sta $2124 ; bg3 & bg4 window mask setting register
  113. sta $2125 ; obj & color window mask setting register
  114. sta $2126 ; window 1 left position register
  115. sta $2127 ; window 2 left position register
  116. sta $2128 ; window 3 left position register
  117. sta $2129 ; window 4 left position register
  118. sta $212a ; bg1, bg2, bg3, bg4 window logic register
  119. sta $212b ; obj, color window logic register (or,and,xor,xnor)
  120. lda #$01
  121. sta $212c ; main screen designation (planes, sprites enable)
  122. lda #$00
  123. sta $212d ; sub screen designation
  124. lda #$00
  125. sta $212e ; window mask for main screen
  126. sta $212f ; window mask for sub screen
  127. lda #$30
  128. sta $2130 ; color addition & screen addition init setting
  129. lda #$00
  130. sta $2131 ; add/sub sub designation for screen, sprite, color
  131. lda #$e0
  132. sta $2132 ; color data for addition/subtraction
  133. lda #$00
  134. sta $2133 ; screen setting (interlace x,y/enable sfx data)
  135. lda #$00
  136. sta $4200 ; enable v-blank, interrupt, joypad register
  137. lda #$ff
  138. sta $4201 ; programmable i/o port
  139. lda #$00
  140. sta $4202 ; multiplicand a
  141. sta $4203 ; multiplier b
  142. sta $4204 ; multiplier c
  143. sta $4205 ; multiplicand c
  144. sta $4206 ; divisor b
  145. sta $4207 ; horizontal count timer
  146. sta $4208 ; horizontal count timer msb (most significant bit)
  147. sta $4209 ; vertical count timer
  148. sta $420a ; vertical count timer msb
  149. sta $420b ; general dma enable (bits 0-7)
  150. sta $420c ; horizontal dma (hdma) enable (bits 0-7)
  151. sta $420d ; access cycle designation (slow/fast rom)
  152. ;===========================================================================
  153. ; end of init routine
  154. ;===========================================================================
  155. rep #$30 ; x,y,a fixed -> 16 bit mode
  156. sep #$20 ; accumulator -> 8 bit mode
  157. lda #(dp+0) ;load direct page
  158. tcd ;store & and assign
  159. lda #(plane_0>>8) ; screen map data @ vram location $1000
  160. sta $2107 ; plane 0 map location register
  161. lda #(plane_1>>8) ; screen map data @ vram location $1000
  162. sta $2108 ; plane 1 map location register
  163. lda #$22 ; plane 0 and plane 1 tile graphics @ $2000
  164. sta $210b ; plane 0 tile graphics register
  165. lda #$00 ; mode 0 value / tile mode
  166. sta $2105 ; graphics mode register
  167. lda #%00000011 ;
  168. sta $212c ; plane enable register
  169. lda #$00
  170. sta $2121 ; set color number to 0 (background)
  171. lda #$46 ; blue color, lower 8 bits
  172. sta $2122 ; enter color value #$46 to color num. (low)
  173. lda #$69 ; blue color, higher 8 bits
  174. sta $2122 ; enter color value #$69 to color num. (high)
  175. lda #$ff ; white color, lower 8 bits
  176. sta $2122 ; write to next color number (01)
  177. sta $2122 ; enter same value to color number (01)
  178. ldx #$00
  179. col_loop:
  180. txa
  181. sta $2121
  182. lda #$00
  183. sta $2122
  184. lda #$7f
  185. sta $2122
  186. txa
  187. ina
  188. tax
  189. cmp #$ff
  190. beq col_loop
  191. lda #$01
  192. sta $4200 ; enable joypad read (bit one)
  193. ;==========================================================================
  194. ; start transfer of graphics to vram
  195. ;==========================================================================
  196. ldx #(tile+0) ; assign vram location
  197. stx $2116 ; writing to $2118/9 will store data here!
  198. ldx #$0000
  199. copychar:
  200. lda.w charset,x ; get character set data (font data)
  201. sta $2118 ; store bitplane 1
  202. stz $2119 ; clear bitplane 2 and increase vram address
  203. inx
  204. cpx #$0200 ; transfer $0200 bytes
  205. bne copychar
  206. init_plane_0:
  207. ldx #(plane_0+0) ; assign vram location $1000 to $2116/7
  208. stx $2116
  209. ldx #$0000
  210. init_plane_0_loop:
  211. lda.w text_0,x ; get ascii text data
  212. and #$3f ; we only want the first 64 characters
  213. ; convert ascii to c64 screen code
  214. sta $2118
  215. stz $2119 ; clear unwanted bits, no h/v flipping
  216. inx
  217. cpx #$0400 ; transfer entire screen
  218. ; $20*$20=$0400 (1024 bytes)
  219. bne init_plane_0_loop
  220. init_plane_1:
  221. ldx #(plane_1+0) ; assign vram location $1000 to $2116/7
  222. stx $2116
  223. ldx #$0000
  224. init_plane_1_loop:
  225. lda.w text_1,x ; get ascii text data
  226. and #$3f ; we only want the first 64 characters
  227. ; convert ascii to c64 screen code
  228. sta $2118
  229. stz $2119 ; clear unwanted bits, no h/v flipping
  230. inx
  231. cpx #$0400 ; transfer entire screen
  232. ; $20*$20=$0400 (1024 bytes)
  233. bne init_plane_1_loop
  234. init_screen:
  235. lda #$0f ; screen enabled, full brightness
  236. sta $2100 ;
  237. cli ; clear interrupt bit
  238. init_scroll:
  239. lda #$00
  240. sta.w scrollval
  241. init_col_reg:
  242. lda #$00
  243. sta.w col_reg
  244. init_sineoffset:
  245. lda #$00
  246. sta.w sineoffset
  247. call_hmda_setup:
  248. jsr init_hdma_table0
  249. jmp intro
  250. main:
  251. jsr wait_vbl
  252. jsr sine_plane
  253. jsr scroll_plane
  254. jsr cycle_color
  255. jsr joypad
  256. jmp main
  257. ; test vertical interrupt
  258. wait_vbl:
  259. lda $4210 ; check for vertical blank
  260. and #$80
  261. beq wait_vbl
  262. rts
  263. ; joypad poll
  264. joypad:
  265. lda $4212 ; is joypad ready to be read?
  266. and #$0001
  267. bne joypad ; no? go back until it is!
  268. lda $4219 ; read joypad high byte
  269. and #$10 ; leave only "start" bit
  270. bne reset ; "start" pressed? go to reset
  271. rts ; if not then jump back to loop
  272. reset:
  273. sep #$30
  274. lda #$00
  275. pha ; push #$00 to stack
  276. plb ; pull #$00 from stack and make it the
  277. ; the programming bank
  278. jmp init ; jump long to $008000
  279. ; gfx routine
  280. ; intro stuff
  281. intro:
  282. rep #$30
  283. sep #$20
  284. ldx #$f1
  285. mosaic_l:
  286. jsr wait_vbl
  287. txa
  288. sta $2106
  289. sbc #$10
  290. tax
  291. cmp #$01
  292. bne mosaic_l
  293. stz $2106
  294. fade:
  295. ldy #$0f
  296. fade_dark:
  297. jsr wait_vbl
  298. tya
  299. sta $2100
  300. dey
  301. cpy #$0000
  302. bne fade_dark
  303. ldy #$0000
  304. fade_light:
  305. jsr wait_vbl
  306. tya
  307. sta $2100
  308. iny
  309. cpy #$000f
  310. bne fade_light
  311. jmp main
  312. ; scroll loop
  313. scroll_plane:
  314. lda.w scrollval
  315. sta $210e
  316. stz $210e
  317. adc #$01
  318. sta.w scrollval
  319. cmp #$ff
  320. beq restore_scroll
  321. rts
  322. restore_scroll:
  323. lda #$00
  324. sta.w scrollval
  325. rts
  326. ; cycle loop
  327. cycle_color:
  328. ldx #$0000
  329. lda.w col_reg,x
  330. adc #$01
  331. stz $2121
  332. sta $2122
  333. stz $2122
  334. sta col_reg
  335. cmp #$7f
  336. bne cycle_c
  337. lda #$0000
  338. sta col_reg
  339. cycle_c:
  340. rts
  341. sine_plane:
  342. rep #$10
  343. sep #$20
  344. lda sineoffset
  345. ina
  346. sta sineoffset
  347. cmp #$ff
  348. bne sine_plane_c
  349. lda #$00
  350. sta sineoffset
  351. sine_plane_c:
  352. tay
  353. ldx #$0000
  354. sine_plane_l:
  355. iny
  356. cpy #$ff
  357. bne sine_plane_l_c
  358. lda #$00
  359. tay
  360. sine_plane_l_c:
  361. inx
  362. lda.w vsine,y
  363. sta hdma_table0+3,x
  364. inx
  365. inx
  366. cpx #$0180
  367. bne sine_plane_l
  368. rep #$30
  369. sep #$20
  370. rts
  371. ; init hdma list
  372. init_hdma_table0:
  373. rep #$10
  374. sep #$20
  375. ldy #$0000
  376. ldx #$0000
  377. ;lda #$00
  378. ;sta sineoffset
  379. lda #$30
  380. sta hdma_table0,x
  381. inx
  382. lda #$00
  383. sta hdma_table0,x
  384. inx
  385. sta hdma_table0,x
  386. inx
  387. init_hdma_table0_loop:
  388. lda #$01
  389. sta hdma_table0,x
  390. inx
  391. lda vsine,y
  392. sta hdma_table0,x
  393. inx
  394. lda #$00
  395. sta hdma_table0,x
  396. inx
  397. iny
  398. cpx #$0183 ; (128 + 1) * 3 = 387 = 0x0183
  399. bne init_hdma_table0_loop
  400. lda #$20
  401. sta hdma_table0,x
  402. inx
  403. lda #$00
  404. sta hdma_table0,x
  405. inx
  406. sta hdma_table0,x
  407. inx
  408. sta hdma_table0,x
  409. inx
  410. sta hdma_table0,x
  411. lda #$02
  412. sta $4300
  413. lda #$0f
  414. sta $4301
  415. ldx.w #hdma_table0
  416. ;ldx.w #test_hmda_table
  417. stx $4302
  418. lda #$00
  419. sta $4304
  420. lda #%00000001
  421. sta $420c
  422. rep #$30
  423. sep #$20
  424. rts
  425. charset:
  426. .db $55,$aa,$55,$aa,$55,$aa,$55,$aa ;'@'
  427. .db $00,$3c,$66,$7e,$66,$66,$66,$00 ;'a'
  428. .db $00,$7c,$66,$7c,$66,$66,$7c,$00 ;'b'
  429. .db $00,$3c,$66,$60,$60,$66,$3c,$00 ;'c'
  430. .db $00,$78,$6c,$66,$66,$6c,$78,$00 ;'d'
  431. .db $00,$7e,$60,$78,$60,$60,$7e,$00 ;'e'
  432. .db $00,$7e,$60,$78,$60,$60,$60,$00 ;'f'
  433. .db $00,$3c,$66,$60,$6e,$66,$3c,$00 ;'g'
  434. .db $00,$66,$66,$7e,$66,$66,$66,$00 ;'h'
  435. .db $00,$3c,$18,$18,$18,$18,$3c,$00 ;'i'
  436. .db $00,$1e,$0c,$0c,$0c,$6c,$38,$00 ;'j'
  437. .db $00,$6c,$78,$70,$78,$6c,$66,$00 ;'k'
  438. .db $00,$60,$60,$60,$60,$60,$7e,$00 ;'l'
  439. .db $00,$63,$77,$7f,$6b,$63,$63,$00 ;'m'
  440. .db $00,$66,$76,$7e,$7e,$6e,$66,$00 ;'n'
  441. .db $00,$3c,$66,$66,$66,$66,$3c,$00 ;'o'
  442. .db $00,$7c,$66,$66,$7c,$60,$60,$00 ;'p'
  443. .db $00,$3c,$66,$66,$66,$3c,$0e,$00 ;'q'
  444. .db $00,$7c,$66,$66,$7c,$6c,$66,$00 ;'r'
  445. .db $00,$3e,$60,$3c,$06,$66,$3c,$00 ;'s'
  446. .db $00,$7e,$18,$18,$18,$18,$18,$00 ;'t'
  447. .db $00,$66,$66,$66,$66,$66,$3c,$00 ;'u'
  448. .db $00,$66,$66,$66,$66,$3c,$18,$00 ;'v'
  449. .db $00,$63,$63,$6b,$7f,$77,$63,$00 ;'w'
  450. .db $00,$66,$3c,$18,$3c,$66,$66,$00 ;'x'
  451. .db $00,$66,$66,$3c,$18,$18,$18,$00 ;'y'
  452. .db $00,$7e,$0c,$18,$30,$60,$7e,$00 ;'z'
  453. .db $00,$3c,$30,$30,$30,$30,$3c,$00 ;'['
  454. .db $c0,$60,$30,$18,$0c,$06,$03,$00 ;'|'
  455. .db $00,$3c,$0c,$0c,$0c,$0c,$3c,$00 ;']'
  456. .db $10,$38,$6c,$c6,$00,$00,$00,$00 ;'^'
  457. .db $00,$00,$00,$00,$00,$00,$00,$fe ;'_'
  458. .db $00,$00,$00,$00,$00,$00,$00,$00 ;' '
  459. .db $00,$18,$18,$18,$00,$00,$18,$00 ;'!'
  460. .db $00,$66,$66,$00,$00,$00,$00,$00 ;'"'
  461. .db $00,$66,$ff,$66,$ff,$66,$00,$00 ;'#'
  462. .db $00,$08,$1c,$28,$28,$1c,$08,$00 ;'$'
  463. .db $00,$64,$6c,$18,$30,$6c,$4c,$00 ;'%'
  464. .db $00,$00,$18,$18,$7e,$18,$18,$00 ;'&'
  465. .db $00,$0c,$18,$00,$00,$00,$00,$00 ;'''
  466. .db $00,$18,$30,$30,$30,$18,$0c,$00 ;'('
  467. .db $00,$18,$0c,$0c,$0c,$18,$30,$00 ;')'
  468. .db $00,$66,$3c,$ff,$3c,$66,$00,$00 ;'*'
  469. .db $00,$18,$18,$7e,$18,$18,$00,$00 ;'+'
  470. .db $00,$00,$00,$00,$00,$18,$18,$30 ;','
  471. .db $00,$00,$00,$fe,$00,$00,$00,$00 ;'-'
  472. .db $00,$00,$00,$00,$00,$18,$18,$00 ;'.'
  473. .db $03,$06,$0c,$18,$30,$60,$c0,$00 ;'/'
  474. .db $00,$3c,$66,$6e,$76,$66,$3c,$00 ;'0'
  475. .db $00,$18,$38,$18,$18,$18,$7e,$00 ;'1'
  476. .db $00,$7c,$06,$0c,$30,$60,$7e,$00 ;'2'
  477. .db $00,$7e,$06,$1c,$06,$66,$3c,$00 ;'3'
  478. .db $00,$0e,$1e,$36,$7f,$06,$06,$00 ;'4'
  479. .db $00,$7e,$60,$7c,$06,$66,$3c,$00 ;'5'
  480. .db $00,$3e,$60,$7c,$66,$66,$3c,$00 ;'6'
  481. .db $00,$7e,$06,$0c,$0c,$0c,$0c,$00 ;'7'
  482. .db $00,$3c,$66,$3c,$66,$66,$3c,$00 ;'8'
  483. .db $00,$3c,$66,$3e,$06,$66,$3c,$00 ;'9'
  484. .db $00,$00,$18,$00,$00,$18,$00,$00 ;':'
  485. .db $00,$00,$18,$00,$00,$18,$18,$30 ;';'
  486. .db $18,$18,$18,$18,$18,$18,$18,$00 ;'<'
  487. .db $00,$00,$7e,$00,$7e,$00,$00,$00 ;'='
  488. .db $18,$18,$0c,$0c,$0c,$0c,$18,$18 ;'>'
  489. .db $00,$7c,$06,$0c,$18,$00,$18,$00 ;'?'
  490. ; 12345678901234567890123456789012
  491. text_0:
  492. .db "| _ _ |"
  493. .db "| ___ _ __ | |_(_)_ ____ __|"
  494. .db "| / _ \| '_ \| __| \ \/ /\ \/ /|"
  495. .db "|| (_) | |_) | |_| |> < > < |"
  496. .db "| \___/| .__/ \__|_/_/\_\/_/\_\|"
  497. .db "| |_| |"
  498. .db "| |"
  499. .db "| |"
  500. .db "| |"
  501. .db "| OPTIXX ONCE A AGAIN |"
  502. .db "| WITH A CLASSIS CONSOL |"
  503. .db "| PIECE OF CODE... |"
  504. .db "| |"
  505. .db "| |"
  506. .db "| |"
  507. .db "| |"
  508. .db "| |"
  509. .db "| |"
  510. .db "| |"
  511. .db "| |"
  512. .db "| |"
  513. .db "| |"
  514. .db "| |"
  515. .db "| |"
  516. .db "| |"
  517. .db "| |"
  518. .db "| |"
  519. .db "| |"
  520. .db "| |"
  521. .db "| |"
  522. .db "| |"
  523. .db "| |"
  524. .db "| |"
  525. text_1:
  526. .REPT 20
  527. .db "| _ _ |"
  528. .db "| ___ _ __ | |_(_)_ ____ __|"
  529. .db "| / _ \| '_ \| __| \ \/ /\ \/ /|"
  530. .db "|| (_) | |_) | |_| |> < > < |"
  531. .db "| \___/| .__/ \__|_/_/\_\/_/\_\|"
  532. .db "| |_| |"
  533. .db "| |"
  534. .ENDR
  535. vsine:
  536. .db 108,109,111,112,113,114,115,115,116,117,118,119,120,120,121
  537. .db 122,122,123,123,124,124,125,125,125,126,126,126,127,127,127
  538. .db 127,127,127,127,127,127,127,127,126,126,126,125,125,125,124
  539. .db 124,123,123,122,122,121,120,120,119,118,117,116,115,115,114
  540. .db 113,112,111,109,108,107,106,105,104,103,101,100,99,97,96,95
  541. .db 93,92,91,89,88,86,85,83,82,80,79,77,76,74,73,71,70,68,67,65
  542. .db 64,62,60,59,57,56,54,53,51,50,48,47,45,44,42,41,39,38,36,35
  543. .db 34,32,31,30,28,27,26,24,23,22,21,20,19,18,16,15,14,13,12,12
  544. .db 11,10,9,8,7,7,6,5,5,4,4,3,3,2,2,2,1,1,1,0,0,0,0,0,0,0,0,0,0
  545. .db 0,1,1,1,2,2,2,3,3,4,4,5,5,6,7,7,8,9,10,11,12,12,13,14,15,16
  546. .db 18,19,20,21,22,23,24,26,27,28,30,31,32,34,35,36,38,39,41,42
  547. .db 44,45,47,48,50,51,53,54,56,57,59,60,62,64,65,67,68,70,71,73
  548. .db 74,76,77,79,80,82,83,85,86,88,89,91,92,93,95,96,97,99,100,101
  549. .db 103,104,105,106,107
  550. vsine_end:
  551. .ENDS
  552. .BANK $04 SLOT 6
  553. .ORGA $8000
  554. long_label:
  555. nop
  556. nop
  557. rts
  558. .BANK $01 SLOT 6
  559. .ORGA $8000
  560. .BASE $01
  561. .INCLUDE "music.s"
  562. .BANK $02 SLOT 6
  563. .ORG $0000
  564. music_data_1:
  565. .INCBIN "music1.bin"
  566. .BANk $03 SLOT 6
  567. .ORG $0000
  568. music_data_2:
  569. .INCBIN "music2.bin"