main.asm 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817
  1. ;============================================================================
  2. ; Includes
  3. ;============================================================================
  4. ;== Include MemoryMap, Vector Table, and HeaderInfo ==
  5. .INCLUDE "header.inc"
  6. .SECTION "MAIN"
  7. .define dp $0000
  8. .define sineswap $0002
  9. .define sine_offset $0003
  10. .define scrollval $0005
  11. .define colbar_offset_1 $0006
  12. .define colbar_offset_2 $0007
  13. .define colbar_offset_3 $0008
  14. .define colbar_offset_table $0010
  15. .define colbar_color_table $0020
  16. .define colbar_count $0030
  17. .define colbar_color $0032
  18. .define colbar_color_ptr $0034
  19. .define hdma_table0 $0050
  20. .define hdma_table1 $0200
  21. .define plane_0 $0800
  22. .define plane_1 $0c00
  23. .define char_data $2000
  24. .define logo_data $2200
  25. init:
  26. sei ;stop interrupts
  27. phk ;get the current bank and store on stack
  28. plb ;get value off stack and make it the current
  29. ;programming bank
  30. clc ;clear carry bit
  31. xce ;native 16 bit mode (no 6502 emulation!)
  32. jsr setup
  33. rep #$30 ; x,y,a fixed -> 16 bit mode
  34. sep #$20 ; accumulator -> 8 bit mode
  35. lda #(dp+0) ;load direct page
  36. tcd ;store & and assign
  37. lda #(plane_0>>8) ; screen map data @ vram location $1000
  38. sta $2107 ; plane 0 map location register
  39. lda #(plane_1>>8) ; screen map data @ vram location $1000
  40. sta $2108 ; plane 1 map location register
  41. lda #$22 ; plane 0 and plane 1 tile graphics @ $2000
  42. sta $210b ; plane 0 tile graphics register
  43. lda #$00 ; mode 0 value / tile mode
  44. sta $2105 ; graphics mode register
  45. lda #%00000011 ;
  46. sta $212c ; plane enable register
  47. lda #$01
  48. sta $4200 ; enable joypad read (bit one)
  49. lda #$00
  50. sta $2121
  51. ldx #$0000
  52. col_loop:
  53. lda #$ff
  54. sta $2122
  55. lda #$7f
  56. sta $2122
  57. inx
  58. cpx #$00ff
  59. bne col_loop
  60. ldx.w #char_data ; assign vram location
  61. stx $2116 ; writing to $2118/9 will store data here!
  62. ldx #$0000
  63. copychar:
  64. lda.w charset,x ; get character set data (font data)
  65. sta $2118 ; store bitplane 1
  66. stz $2119 ; clear bitplane 2 and increase vram address
  67. inx
  68. cpx #$0200 ; transfer $0200 bytes
  69. bne copychar
  70. ldx #$0000
  71. copy_logo: ; copy tile data to vram
  72. lda.w optixx_logo,x ; using continuos tile vram pointer
  73. sta $2118 ; charset @ $2000
  74. stz $2119 ; logo @ $2200
  75. inx
  76. cpx #$0500
  77. bne copy_logo
  78. init_plane_0:
  79. ldx.w #plane_0 ; assign vram location $1000 to $2116/7
  80. stx $2116
  81. ldx #$0000
  82. init_plane_0_loop:
  83. lda.w text_0,x ; get ascii text data
  84. and #$3f ; we only want the first 64 characters
  85. ; convert ascii to c64 screen code
  86. sta $2118
  87. stz $2119 ; clear unwanted bits, no h/v flipping
  88. inx
  89. cpx #$0400 ; transfer entire screen
  90. ; $20*$20=$0400 (1024 bytes)
  91. bne init_plane_0_loop
  92. init_plane_1: ; write optixx logo tiles
  93. ldx.w #plane_1
  94. stx $2116
  95. ldx #$0000
  96. lda #$0040
  97. init_plane_1_clear_1: ; 0x0140 tiles clear
  98. sta $2118
  99. stz $2119
  100. inx
  101. cpx #$0140
  102. bne init_plane_1_clear_1
  103. ldx #$0000
  104. init_plane_1_loop_1:
  105. ina
  106. sta $2118
  107. stz $2119
  108. inx
  109. cpx #$00a0 ; 0x00a0 logo tiles
  110. bne init_plane_1_loop_1
  111. ldx #$0000
  112. lda #$0040
  113. init_plane_1_clear_2:
  114. sta $2118
  115. stz $2119
  116. inx
  117. cpx #$01a0 ; 0x01a0 tiles clear
  118. bne init_plane_1_clear_2
  119. ldx #$0000
  120. init_screen:
  121. lda #$0f ; screen enabled, full brightness
  122. sta $2100 ;
  123. cli ; clear interrupt bit
  124. init_scroll:
  125. lda #$00
  126. sta.w scrollval
  127. init_sineoffset:
  128. lda #$00
  129. sta.w sine_offset
  130. lda #$00
  131. sta sineswap
  132. ldx.w #colbar_1_color_values
  133. stx colbar_color_table
  134. ldx.w #colbar_2_color_values
  135. stx colbar_color_table + $02
  136. ldx.w #colbar_3_color_values
  137. stx colbar_color_table + $04
  138. ldx.w #colbar_1_color_values
  139. stx colbar_color_table + $06
  140. ldx.w #colbar_2_color_values
  141. stx colbar_color_table + $08
  142. ldx.w #colbar_3_color_values
  143. stx colbar_color_table + $0a
  144. lda #$00
  145. sta colbar_offset_table
  146. lda #$15
  147. sta colbar_offset_table + $01
  148. lda #$25
  149. sta colbar_offset_table + $02
  150. lda #$35
  151. sta colbar_offset_table + $03
  152. lda #$45
  153. sta colbar_offset_table + $04
  154. lda #$55
  155. sta colbar_offset_table + $05
  156. call_hmda_setup:
  157. jsr init_hdma_table0
  158. jsr init_hdma_table1
  159. jmp intro
  160. main:
  161. jsr wait_vbl
  162. jsr sine_plane
  163. jsr sine_colbar
  164. jsr scroll_plane
  165. jsr joypad
  166. jmp main
  167. ; test vertical interrupt
  168. wait_vbl:
  169. lda $4210 ; check for vertical blank
  170. and #$80
  171. beq wait_vbl
  172. rts
  173. ; joypad poll
  174. joypad:
  175. lda $4212 ; is joypad ready to be read?
  176. and #$0001
  177. bne joypad ; no? go back until it is!
  178. lda $4219 ; read joypad high byte
  179. and #$10 ; leave only "start" bit
  180. bne reset ; "start" pressed? go to reset
  181. rts ; if not then jump back to loop
  182. reset:
  183. sep #$30
  184. lda #$00
  185. pha ; push #$00 to stack
  186. plb ; pull #$00 from stack and make it the
  187. ; the programming bank
  188. jmp init ; jump long to $008000
  189. ; gfx routine
  190. ; intro stuff
  191. intro:
  192. rep #$30
  193. sep #$20
  194. ldx #$f2
  195. mosaic_l:
  196. jsr wait_vbl
  197. jsr wait_vbl
  198. txa
  199. sta $2106
  200. sbc #$10
  201. tax
  202. cmp #$02
  203. bne mosaic_l
  204. stz $2106
  205. fade:
  206. ldy #$0f
  207. fade_dark:
  208. jsr wait_vbl
  209. tya
  210. sta $2100
  211. dey
  212. cpy #$0000
  213. bne fade_dark
  214. ldy #$0000
  215. fade_light:
  216. jsr wait_vbl
  217. tya
  218. sta $2100
  219. iny
  220. cpy #$000f
  221. bne fade_light
  222. jmp main
  223. ; scroll loop
  224. scroll_plane:
  225. lda.w scrollval
  226. sta $210e
  227. stz $210e
  228. adc #$01
  229. sta.w scrollval
  230. cmp #$ff
  231. beq restore_scroll
  232. rts
  233. restore_scroll:
  234. lda #$00
  235. sta.w scrollval
  236. rts
  237. sine_plane:
  238. rep #$10
  239. sep #$20
  240. lda sine_offset
  241. ina
  242. sta sine_offset
  243. cmp #$ff
  244. bne sine_plane_c
  245. lda #$00
  246. sta sine_offset
  247. lda sineswap ; check wich sine table ot take
  248. ina
  249. sta sineswap
  250. cmp #$04 ; after 4 loop reset counter
  251. bne sine_plane_c
  252. lda #$00
  253. sta sineswap
  254. sine_plane_c:
  255. tay
  256. ldx #$0000
  257. sine_plane_l:
  258. iny
  259. cpy #$ff
  260. bne sine_plane_l_c
  261. lda #$00
  262. tay
  263. sine_plane_l_c:
  264. inx
  265. lda.w sineswap
  266. cmp #$02 ; lower 2 use vsine 1
  267. bmi sine_load_vsine1
  268. sine_load_vsine2: ; else use vsine 2
  269. lda.w vsine_2,y
  270. bra sine_load_done
  271. sine_load_vsine1:
  272. lda.w vsine_1,y
  273. sine_load_done:
  274. adc #$c8 ; shift logo left
  275. sta hdma_table0+3,x
  276. inx
  277. inx
  278. cpx #$00c0 ; 64 hdma lines a 3 byte
  279. bne sine_plane_l
  280. rep #$30
  281. sep #$20
  282. rts
  283. sine_colbar:
  284. rep #$10
  285. sep #$20
  286. ldx #$00
  287. sine_colbar_clear:
  288. stz hdma_table1+1,x
  289. stz hdma_table1+2,x
  290. inx
  291. inx
  292. inx
  293. cpx #$012c
  294. bne sine_colbar_clear
  295. lda #$00
  296. sta colbar_count
  297. ldy #$0000
  298. sty colbar_color
  299. sine_colbar_init:
  300. ldy colbar_color
  301. ldx colbar_color_table,y
  302. stx colbar_color_ptr
  303. lda.w colbar_count
  304. tay
  305. lda colbar_offset_table,y
  306. ina
  307. sta colbar_offset_table,y
  308. cmp #$ff ; if end of sine table
  309. bne sine_colbar_continue
  310. lda #$00 ; reset table pointer
  311. sta colbar_offset_table,y
  312. sine_colbar_continue:
  313. tay
  314. lda.w colbarsine_1,y
  315. tax
  316. ldy #$0000
  317. sine_colbar_loop:
  318. lda (colbar_color_ptr),y
  319. ora hdma_table1+1,x
  320. and #$ff
  321. sta hdma_table1+1,x
  322. iny
  323. lda (colbar_color_ptr),y
  324. ora hdma_table1+2,x
  325. and #$ff
  326. sta hdma_table1+2,x
  327. inx
  328. inx
  329. inx
  330. iny
  331. ;iny
  332. cpy #$0040 ; 32 colot lines a 2 byte
  333. bne sine_colbar_loop
  334. ldy colbar_color
  335. iny
  336. iny
  337. sty colbar_color
  338. lda.w colbar_count
  339. ina
  340. sta.w colbar_count
  341. cmp #$06
  342. bne sine_colbar_init
  343. sine_colbar_end:
  344. rep #$30
  345. sep #$20
  346. rts
  347. ; init hdma list
  348. init_hdma_table0:
  349. rep #$10
  350. sep #$20
  351. ldy #$0000
  352. ldx #$0000
  353. ;lda #$00
  354. ;sta sine_offset
  355. lda #$4c
  356. sta hdma_table0,x
  357. inx
  358. lda #$00
  359. sta hdma_table0,x
  360. inx
  361. sta hdma_table0,x
  362. inx
  363. init_hdma_table0_loop:
  364. lda #$01
  365. sta hdma_table0,x
  366. inx
  367. ;lda vsine_1,y
  368. lda #$00
  369. sta hdma_table0,x
  370. inx
  371. lda #$00
  372. sta hdma_table0,x
  373. inx
  374. iny
  375. ;cpx #$0183 ; (128 + 1) * 3 = 387 = 0x0183
  376. cpx #$00c3 ; (64 + 1) * 3 = 195 = 0x00c0
  377. bne init_hdma_table0_loop
  378. lda #$4c
  379. sta hdma_table0,x
  380. inx
  381. lda #$00
  382. sta hdma_table0,x
  383. inx
  384. sta hdma_table0,x
  385. inx
  386. sta hdma_table0,x
  387. inx
  388. sta hdma_table0,x
  389. lda #$02
  390. sta $4300
  391. lda #$0f
  392. sta $4301
  393. ldx.w #hdma_table0
  394. ;ldx.w #test_hmda_table
  395. stx $4302
  396. lda #$00
  397. sta $4304
  398. ;lda #%00000001
  399. ;sta $420c
  400. rep #$30
  401. sep #$20
  402. rts
  403. init_hdma_table1:
  404. ;rep #$10
  405. ;sep #$30
  406. ldx #$0000
  407. init_hdma_tabel1_copy:
  408. ldy.w backcolors_color_values,x
  409. tya
  410. sta hdma_table1,x
  411. inx
  412. cpx #$0295
  413. bne init_hdma_tabel1_copy
  414. lda #$00
  415. sta $4310
  416. lda #$21
  417. sta $4311
  418. ldx.w #backcolors_color_list
  419. stx $4312
  420. lda #$00
  421. sta $4314
  422. lda #$02
  423. sta $4320
  424. lda #$22
  425. sta $4321
  426. ;ldx.w #backcolors_color_values
  427. ldx.w #hdma_table1
  428. stx $4322
  429. lda #$00
  430. sta $4324
  431. lda #%00000111
  432. sta $420c
  433. rep #$30
  434. sep #$20
  435. rts
  436. setup:
  437. sep #$30 ; x,y,a are 8 bit numbers
  438. lda #$8f ; screen off, full brightness
  439. sta $2100 ; brightness + screen enable register
  440. lda #$00 ;
  441. sta $2101 ; sprite register (size + address in vram)
  442. lda #$00
  443. sta $2102 ; sprite registers (address of sprite memory [oam])
  444. sta $2103 ; "" ""
  445. lda #$00 ; mode 0
  446. sta $2105 ; graphic mode register
  447. lda #$00 ; no planes, no mosaic
  448. sta $2106 ; mosaic register
  449. lda #$00 ;
  450. sta $2107 ; plane 0 map vram location
  451. lda #$00
  452. sta $2108 ; plane 1 map vram location
  453. lda #$00
  454. sta $2109 ; plane 2 map vram location
  455. lda #$00
  456. sta $210a ; plane 3 map vram location
  457. lda #$00
  458. sta $210b ; plane 0+1 tile data location
  459. lda #$00
  460. sta $210c ; plane 2+3 tile data location
  461. lda #$00
  462. sta $210d ; plane 0 scroll x (first 8 bits)
  463. sta $210d ; plane 0 scroll x (last 3 bits) #$0 - #$07ff
  464. sta $210e ; plane 0 scroll y (first 8 bits)
  465. sta $210e ; plane 0 scroll y (last 3 bits) #$0 - #$07ff
  466. sta $210f ; plane 1 scroll x (first 8 bits)
  467. sta $210f ; plane 1 scroll x (last 3 bits) #$0 - #$07ff
  468. sta $2110 ; plane 1 scroll y (first 8 bits)
  469. sta $2110 ; plane 1 scroll y (last 3 bits) #$0 - #$07ff
  470. sta $2111 ; plane 2 scroll x (first 8 bits)
  471. sta $2111 ; plane 2 scroll x (last 3 bits) #$0 - #$07ff
  472. sta $2112 ; plane 2 scroll y (first 8 bits)
  473. sta $2112 ; plane 2 scroll y (last 3 bits) #$0 - #$07ff
  474. sta $2113 ; plane 3 scroll x (first 8 bits)
  475. sta $2113 ; plane 3 scroll x (last 3 bits) #$0 - #$07ff
  476. sta $2114 ; plane 3 scroll y (first 8 bits)
  477. sta $2114 ; plane 3 scroll y (last 3 bits) #$0 - #$07ff
  478. lda #$80 ; increase vram address after writing to $2119
  479. sta $2115 ; vram address increment register
  480. lda #$00
  481. sta $2116 ; vram address low
  482. sta $2117 ; vram address high
  483. sta $211a ; initial mode 7 setting register
  484. sta $211b ; mode 7 matrix parameter a register (low)
  485. lda #$01
  486. sta $211b ; mode 7 matrix parameter a register (high)
  487. lda #$00
  488. sta $211c ; mode 7 matrix parameter b register (low)
  489. sta $211c ; mode 7 matrix parameter b register (high)
  490. sta $211d ; mode 7 matrix parameter c register (low)
  491. sta $211d ; mode 7 matrix parameter c register (high)
  492. sta $211e ; mode 7 matrix parameter d register (low)
  493. lda #$01
  494. sta $211e ; mode 7 matrix parameter d register (high)
  495. lda #$00
  496. sta $211f ; mode 7 center position x register (low)
  497. sta $211f ; mode 7 center position x register (high)
  498. sta $2120 ; mode 7 center position y register (low)
  499. sta $2120 ; mode 7 center position y register (high)
  500. sta $2121 ; color number register ($0-ff)
  501. sta $2123 ; bg1 & bg2 window mask setting register
  502. sta $2124 ; bg3 & bg4 window mask setting register
  503. sta $2125 ; obj & color window mask setting register
  504. sta $2126 ; window 1 left position register
  505. sta $2127 ; window 2 left position register
  506. sta $2128 ; window 3 left position register
  507. sta $2129 ; window 4 left position register
  508. sta $212a ; bg1, bg2, bg3, bg4 window logic register
  509. sta $212b ; obj, color window logic register (or,and,xor,xnor)
  510. lda #$01
  511. sta $212c ; main screen designation (planes, sprites enable)
  512. lda #$00
  513. sta $212d ; sub screen designation
  514. lda #$00
  515. sta $212e ; window mask for main screen
  516. sta $212f ; window mask for sub screen
  517. lda #$30
  518. sta $2130 ; color addition & screen addition init setting
  519. lda #$00
  520. sta $2131 ; add/sub sub designation for screen, sprite, color
  521. lda #$e0
  522. sta $2132 ; color data for addition/subtraction
  523. lda #$00
  524. sta $2133 ; screen setting (interlace x,y/enable sfx data)
  525. lda #$00
  526. sta $4200 ; enable v-blank, interrupt, joypad register
  527. lda #$ff
  528. sta $4201 ; programmable i/o port
  529. lda #$00
  530. sta $4202 ; multiplicand a
  531. sta $4203 ; multiplier b
  532. sta $4204 ; multiplier c
  533. sta $4205 ; multiplicand c
  534. sta $4206 ; divisor b
  535. sta $4207 ; horizontal count timer
  536. sta $4208 ; horizontal count timer msb (most significant bit)
  537. sta $4209 ; vertical count timer
  538. sta $420a ; vertical count timer msb
  539. sta $420b ; general dma enable (bits 0-7)
  540. sta $420c ; horizontal dma (hdma) enable (bits 0-7)
  541. sta $420d ; access cycle designation (slow/fast rom)
  542. rts
  543. charset:
  544. .db $55,$aa,$55,$aa,$55,$aa,$55,$aa ;'@'
  545. .db $00,$3c,$66,$7e,$66,$66,$66,$00 ;'a'
  546. .db $00,$7c,$66,$7c,$66,$66,$7c,$00 ;'b'
  547. .db $00,$3c,$66,$60,$60,$66,$3c,$00 ;'c'
  548. .db $00,$78,$6c,$66,$66,$6c,$78,$00 ;'d'
  549. .db $00,$7e,$60,$78,$60,$60,$7e,$00 ;'e'
  550. .db $00,$7e,$60,$78,$60,$60,$60,$00 ;'f'
  551. .db $00,$3c,$66,$60,$6e,$66,$3c,$00 ;'g'
  552. .db $00,$66,$66,$7e,$66,$66,$66,$00 ;'h'
  553. .db $00,$3c,$18,$18,$18,$18,$3c,$00 ;'i'
  554. .db $00,$1e,$0c,$0c,$0c,$6c,$38,$00 ;'j'
  555. .db $00,$6c,$78,$70,$78,$6c,$66,$00 ;'k'
  556. .db $00,$60,$60,$60,$60,$60,$7e,$00 ;'l'
  557. .db $00,$63,$77,$7f,$6b,$63,$63,$00 ;'m'
  558. .db $00,$66,$76,$7e,$7e,$6e,$66,$00 ;'n'
  559. .db $00,$3c,$66,$66,$66,$66,$3c,$00 ;'o'
  560. .db $00,$7c,$66,$66,$7c,$60,$60,$00 ;'p'
  561. .db $00,$3c,$66,$66,$66,$3c,$0e,$00 ;'q'
  562. .db $00,$7c,$66,$66,$7c,$6c,$66,$00 ;'r'
  563. .db $00,$3e,$60,$3c,$06,$66,$3c,$00 ;'s'
  564. .db $00,$7e,$18,$18,$18,$18,$18,$00 ;'t'
  565. .db $00,$66,$66,$66,$66,$66,$3c,$00 ;'u'
  566. .db $00,$66,$66,$66,$66,$3c,$18,$00 ;'v'
  567. .db $00,$63,$63,$6b,$7f,$77,$63,$00 ;'w'
  568. .db $00,$66,$3c,$18,$3c,$66,$66,$00 ;'x'
  569. .db $00,$66,$66,$3c,$18,$18,$18,$00 ;'y'
  570. .db $00,$7e,$0c,$18,$30,$60,$7e,$00 ;'z'
  571. .db $00,$3c,$30,$30,$30,$30,$3c,$00 ;'['
  572. .db $c0,$60,$30,$18,$0c,$06,$03,$00 ;'|'
  573. .db $00,$3c,$0c,$0c,$0c,$0c,$3c,$00 ;']'
  574. .db $10,$38,$6c,$c6,$00,$00,$00,$00 ;'^'
  575. .db $00,$00,$00,$00,$00,$00,$00,$fe ;'_'
  576. .db $00,$00,$00,$00,$00,$00,$00,$00 ;' '
  577. .db $00,$18,$18,$18,$00,$00,$18,$00 ;'!'
  578. .db $00,$66,$66,$00,$00,$00,$00,$00 ;'"'
  579. .db $00,$66,$ff,$66,$ff,$66,$00,$00 ;'#'
  580. .db $00,$08,$1c,$28,$28,$1c,$08,$00 ;'$'
  581. .db $00,$64,$6c,$18,$30,$6c,$4c,$00 ;'%'
  582. .db $00,$00,$18,$18,$7e,$18,$18,$00 ;'&'
  583. .db $00,$0c,$18,$00,$00,$00,$00,$00 ;'''
  584. .db $00,$18,$30,$30,$30,$18,$0c,$00 ;'('
  585. .db $00,$18,$0c,$0c,$0c,$18,$30,$00 ;')'
  586. .db $00,$66,$3c,$ff,$3c,$66,$00,$00 ;'*'
  587. .db $00,$18,$18,$7e,$18,$18,$00,$00 ;'+'
  588. .db $00,$00,$00,$00,$00,$18,$18,$30 ;','
  589. .db $00,$00,$00,$fe,$00,$00,$00,$00 ;'-'
  590. .db $00,$00,$00,$00,$00,$18,$18,$00 ;'.'
  591. .db $03,$06,$0c,$18,$30,$60,$c0,$00 ;'/'
  592. .db $00,$3c,$66,$6e,$76,$66,$3c,$00 ;'0'
  593. .db $00,$18,$38,$18,$18,$18,$7e,$00 ;'1'
  594. .db $00,$7c,$06,$0c,$30,$60,$7e,$00 ;'2'
  595. .db $00,$7e,$06,$1c,$06,$66,$3c,$00 ;'3'
  596. .db $00,$0e,$1e,$36,$7f,$06,$06,$00 ;'4'
  597. .db $00,$7e,$60,$7c,$06,$66,$3c,$00 ;'5'
  598. .db $00,$3e,$60,$7c,$66,$66,$3c,$00 ;'6'
  599. .db $00,$7e,$06,$0c,$0c,$0c,$0c,$00 ;'7'
  600. .db $00,$3c,$66,$3c,$66,$66,$3c,$00 ;'8'
  601. .db $00,$3c,$66,$3e,$06,$66,$3c,$00 ;'9'
  602. .db $00,$00,$18,$00,$00,$18,$00,$00 ;':'
  603. .db $00,$00,$18,$00,$00,$18,$18,$30 ;';'
  604. .db $18,$18,$18,$18,$18,$18,$18,$00 ;'<'
  605. .db $00,$00,$7e,$00,$7e,$00,$00,$00 ;'='
  606. .db $18,$18,$0c,$0c,$0c,$0c,$18,$18 ;'>'
  607. .db $00,$7c,$06,$0c,$18,$00,$18,$00 ;'?'
  608. ; 12345678901234567890123456789012
  609. text_0:
  610. .db " _ _ "
  611. .db " ___ _ __ | |_(_)_ ____ __ "
  612. .db " / _ \| '_ \| __| \ \/ /\ \/ / "
  613. .db " | (_) | |_) | |_| |> < > < "
  614. .db " \___/| .__/ \__|_/_/\_\/_/\_\ "
  615. .db " |_| "
  616. .db " "
  617. .db " "
  618. .db " "
  619. .db " OPTIXX ONCE A AGAIN "
  620. .db " WITH A CONSOLE RELEASE "
  621. .db " WWW.OPTIXX.ORG "
  622. .db " "
  623. .db " "
  624. .db " "
  625. .db " "
  626. .db " "
  627. .db " "
  628. .db " "
  629. .db " "
  630. .db " "
  631. .db " "
  632. .db " "
  633. .db " "
  634. .db " "
  635. .db " "
  636. .db " "
  637. .db " "
  638. .db " "
  639. .db " "
  640. .db " "
  641. .db " "
  642. .db " "
  643. .INCLUDE "vsine_1.s"
  644. .INCLUDE "vsine_2.s"
  645. .INCLUDE "backcolors.s"
  646. .INCLUDE "colbar_1.s"
  647. .INCLUDE "colbar_2.s"
  648. .INCLUDE "colbar_3.s"
  649. .INCLUDE "optixx_logo.s"
  650. .INCLUDE "colbarsine_1.s"
  651. .ends
  652. .bank 1
  653. .SECTION "GFX"
  654. .ends
  655. ;.BANK $04 SLOT 6
  656. ;.ORGA $8000
  657. ;long_label:
  658. nop
  659. nop
  660. rts
  661. ;.BANK $01 SLOT 6
  662. ;.ORGA $8000
  663. ;.BASE $01
  664. ;.INCLUDE "music.s"
  665. ;.BANK $02 SLOT 6
  666. ;.ORG $0000
  667. ;music_data_1:
  668. ;.INCBIN "music1.bin"
  669. ;.BANk $03 SLOT 6
  670. ;.ORG $0000
  671. ;music_data_2:
  672. ;.INCBIN "music2.bin"