Advertisement
Guest User

Untitled

a guest
Aug 1st, 2014
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.46 KB | None | 0 0
  1.  
  2. !RightArrowGFX = $303C
  3. !DownArrowGFX = $303D
  4.  
  5. !CurrentLine = $C802
  6. !Xposition = $C804
  7. !FontColor = $C806
  8. !TermChars = $C808 ; the number of characters left until finishing rendering a term
  9. !TermWidth = $C80A
  10. !LineDrawn = $C80C ; the number of line drawn which will be incremented until this reaches 5
  11. !Timer = $C800 ; general purpose
  12. !LeftPad = $C810
  13. !NewLeftPad = $C812
  14. !LineBroken = $C814 ; to erase an old line
  15. !SelectMsg = $C816 ; for branch
  16. !SkipPos = $C818 ; where the pointer jumps to when the player pressed the Start button
  17. !Skipped = $C81A
  18.  
  19. !Inner = $C820
  20. !ForcedScroll = $C822
  21. !ValidWidth = $C824
  22. !RightPad = $C828
  23.  
  24. print "INIT ",pc
  25.  
  26. LDA $7FAB10,x
  27. AND #$04
  28. BNE $FE
  29.  
  30.  
  31. LDA #$80
  32. STA $2100
  33. STZ $0D9D
  34. STZ $0D9E
  35. PHX
  36. LDX #$04
  37. - LDA HDMATable1,x
  38. STA $4330,x
  39. LDA HDMATable2,x
  40. STA $4340,x
  41. LDA HDMATable3,x
  42. STA $4350,x
  43. DEX
  44. BPL -
  45. LDX #$4F
  46. LDA #$80
  47. - STA $7EC900,x
  48. DEX
  49. BPL -
  50. LDA #$7E
  51. STA $4337
  52. STA $4347
  53. PLX
  54. LDA #$88
  55. STA $420C
  56. STA $0D9F
  57. RTL
  58.  
  59. HDMATable1: db $40,$00 : dl .src
  60. .src db $5F
  61. dw $C900
  62. db $8C
  63. dw $C910
  64. db $90
  65. dw $C920
  66. db $54
  67. dw $C930
  68. db $90
  69. dw $C940
  70. db $00
  71.  
  72. HDMATable2: db $43,$11 : dl .src
  73. .src db $5F
  74. dw $CA00
  75. db $0C
  76. dw $CA10
  77. db $01
  78. dw $CA20
  79. db $00
  80.  
  81. HDMATable3: db $00,$09 : dl .src
  82. .src db $5F
  83. db $59
  84. db $0C
  85. db $5C
  86. db $01
  87. db $59
  88. db $00
  89.  
  90. print "MAIN ",pc
  91. LDA #$38
  92. STA $0D9F
  93. LDA $0100
  94. CMP #$14
  95. BEQ +
  96. RTL
  97.  
  98. + PHX
  99. PHB
  100. SEI
  101. STZ $4200
  102. STZ $420C
  103.  
  104. STZ $1BE4 ;disable updating BG1
  105. STZ $1CE6 ;disable updating BG1
  106.  
  107. PHD
  108. LDA #$21
  109. XBA
  110. LDA #$00
  111. TCD
  112.  
  113. LDA #$80
  114. STA $00
  115. STA $15
  116.  
  117. LDA #$02
  118. STA $0C
  119. REP #$30
  120. LDA #$0014
  121. STA $2C
  122. LDA #$2000
  123. STA $16
  124. - STZ $18
  125. DEC A
  126. BNE -
  127. LDA #$5800
  128. STA $16
  129. LDX #$0400
  130. LDA #$0000
  131. - STA $18
  132. INC A
  133. AND #$01FF
  134. DEX
  135. BNE -
  136. LDX #$0040
  137. LDA #$0600
  138. - STA $18
  139. INC A
  140. DEX
  141. BNE -
  142. PLD
  143. SEP #$30
  144.  
  145. PEA $7E7E
  146. PLB
  147. PLB
  148. LDX #$4F
  149. - STZ $C900,x
  150. DEX
  151. BPL -
  152. LDX #$0F
  153. TXA
  154. LDY #$00
  155. STA $C930
  156. - STA $C920,x
  157. STA $C940,y
  158. INY
  159. DEX
  160. DEC A
  161. BPL -
  162.  
  163. JSL $7F8000 ; Clear all OAM position
  164.  
  165. LDA $D002 ; | Copy the source data address
  166. STA $D7
  167. REP #$30
  168. LDA $D000
  169. STA $D5
  170.  
  171. LDX #$03FE
  172. - STZ $AD00,x
  173. DEX #2
  174. BPL -
  175. STZ !CurrentLine ; current line
  176. STZ !FontColor ; fonr color
  177. STZ !TermChars ; the number of character left until rendering a term
  178. LDA #$0008 ; | left padding
  179. STA !LeftPad ; |
  180. STA !NewLeftPad ;/
  181. STA !RightPad ; | right
  182. ;STA !NewRightPad ;/
  183. STA !Xposition ; current X
  184. STZ !LineDrawn
  185. STZ !Timer
  186. STZ !LineBroken
  187. STZ !Inner
  188. STZ !ForcedScroll
  189. STZ !SelectMsg ; for branch
  190. LDA #$FFFF
  191. STA !SkipPos
  192. STZ !Skipped
  193. LDA #$0100
  194. STA $CA00
  195. STA $CA10
  196. LDA #$0080
  197. STA $CA02
  198. LDA #$FFFF-$5F
  199. STA $CA12
  200. STZ $CA20
  201. LDA #$FF80
  202. STA $CA22
  203. LDX #$001E
  204. - STZ $0400,x
  205. DEX #2
  206. BPL -
  207. SEP #$20
  208.  
  209. LDA #$81
  210. STA $004200
  211. - LDA $10 ; | once, just wait for v-blank without doing anything
  212. BEQ - ; |
  213. STZ $10 ;/
  214. LDY #$0000
  215. .Loop
  216. LDA !Skipped
  217. BEQ +
  218. LDA #$00
  219. REP #$20
  220. BRA .ForcedEnd
  221. + LDA !ForcedScroll
  222. BEQ +
  223. INC $CA22
  224. LDA $CA22
  225. AND #$0F
  226. BNE +
  227. STZ !ForcedScroll
  228. + LDA !TermChars
  229. BNE .NoNewTerm
  230.  
  231. LDA [$D5],y
  232. REP #$20
  233. BPL .IsChar
  234. .ForcedEnd PEA .ReturnedCommand-1
  235. AND #$007F
  236. ASL A
  237. TAX
  238. LDA CommandAddress,x
  239. PHA
  240. RTS
  241. .ReturnedCommand SEP #$20
  242. BRA .Finalize
  243.  
  244. .IsChar STZ !TermWidth
  245. DEC !TermWidth
  246. PHY
  247. - AND #$00FF
  248. TAX
  249. LDA FontWidth,x
  250. AND #$00FF
  251. SEC
  252. ADC !TermWidth
  253. STA !TermWidth
  254. INC !TermChars
  255. INY
  256. LDA [$D5],y
  257. BIT #$0080
  258. BEQ -
  259. PLY
  260. LDA #$0100
  261. SEC
  262. SBC !LeftPad
  263. SBC !RightPad
  264. STA !ValidWidth
  265. BMI $FE
  266. LDA !TermWidth
  267. CMP !ValidWidth
  268. BCS $FE
  269. CLC
  270. ADC !Xposition
  271. SEC
  272. SBC !LeftPad
  273. CMP !ValidWidth
  274. SEP #$20
  275. BCC .Finalize
  276. REP #$20
  277. INC !Inner
  278. JSR BreakLine ; if there is no longer much space to render a term, break a line
  279. STZ !Inner
  280. BCS $03
  281. STZ !TermChars
  282. SEP #$20
  283. BRA .Finalize
  284.  
  285. .NoNewTerm STZ $04
  286. LDA #$AD
  287. STA $05
  288. LDA [$D5],y
  289. JSR DrawChar
  290.  
  291. .Finalize LDA.w !SkipPos+1
  292. BMI .WaitVblank
  293. XBA
  294. LDA $16
  295. AND #$10
  296. BEQ .WaitVblank
  297. LDA !SkipPos
  298. TAY
  299. INC !Skipped
  300. .WaitVblank LDA $10
  301. BEQ $FC
  302. STZ $10
  303. INC $13
  304.  
  305. LDA #$00
  306. STZ $00420C
  307. LDA #$80
  308. STA $002100
  309. STA $002115
  310. LDX #$420B
  311. REP #$20
  312. LDA !CurrentLine
  313. LSR !LineBroken
  314. BCC +
  315. SBC #$0E00
  316. + AND #$0E00
  317. ORA #$2000
  318. STA $002116
  319. LDA #$1801
  320. STA $F5,x
  321. LDA #$AD00
  322. STA $F7,x
  323. LDA #$7EAD
  324. STA $F8,x
  325. LDA #$0400
  326. STA $FA,x
  327. SEP #$20
  328. LDA #$01
  329. STA $00,x
  330. LDA $0D9F
  331. STA $01,x
  332. JMP .Loop
  333.  
  334. CommandAddress: dw FinishVWF-1 ; 80
  335. dw PutSpace-1 ; 81
  336. dw BreakLine-1 ; 82
  337. dw WaitButton-1 ; 83
  338. dw WaitTime-1 ; 84
  339. dw FontColor1-1 ; 85
  340. dw FontColor2-1 ; 86
  341. dw FontColor3-1 ; 87
  342. dw PadLeft-1 ; 88
  343. dw PadRight-1 ; 89
  344. dw PadBoth-1 ; 8A
  345. dw ChangeMusic-1 ; 8B
  346. dw EraseSentence-1 ; 8C
  347. dw ChangeTopic-1 ; 8D
  348. dw ShowOAM-1 ; 8E
  349. dw HideOAM-1 ; 8F
  350. dw BranchLabel-1 ; 90
  351. dw JumpLabel-1 ; 91
  352. dw SkipLabel-1 ; 92
  353. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  354. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  355.  
  356. FinishVWF: SEP #$20
  357. LDX #$004F
  358. - LDA $C900,x
  359. BEQ +
  360. DEC $C900,x
  361. + DEX
  362. BPL -
  363. LDA $C930
  364. REP #$20
  365. BNE PutSpace_R
  366. INY
  367. LDA [$D5],y
  368. PLX
  369. SEP #$30
  370. PLB
  371. PLX
  372. STA $F0
  373. CMP #$20
  374. BCS +
  375. TAY
  376. LDA $19B8,y
  377. STA $19B8
  378. LDA $19D8,y
  379. STA $19D8
  380. LDA #$05
  381. STA $71
  382. RTL
  383. + CMP #$20
  384. BNE +
  385. ;Side Exit
  386. JML $85B160
  387. + SBC #$20
  388. STA $13CE
  389. STA $0DD5
  390. INC $1DE9
  391. LDA #$0B
  392. STA $0100
  393. RTL
  394. +
  395. RTL
  396.  
  397. PutSpace: LDA !Xposition
  398. CLC
  399. ADC #$0004
  400. STA !Xposition
  401. INY
  402. .R RTS
  403.  
  404. BreakLine: LDA !ForcedScroll
  405. BEQ +
  406. CLC
  407. RTS
  408. + LDA !LineDrawn
  409. CMP #$0004
  410. BCC +
  411. INC !ForcedScroll
  412. BRA ++
  413. + INC !LineDrawn
  414. ++ LDA !CurrentLine
  415. CLC
  416. ADC #$0200
  417. STA !CurrentLine
  418. LDA !NewLeftPad
  419. STA !LeftPad
  420. STA !Xposition
  421. LDX #$03FE
  422. - STZ $AD00,x
  423. DEX #2
  424. BPL -
  425. INC !LineBroken
  426. LDA !Inner
  427. BNE .R
  428. INY
  429. SEC
  430. .R RTS
  431.  
  432. WaitButton: LDA.b $15-1
  433. BPL .R
  434. LDA.b $17-1
  435. BPL .INY
  436. LDA.b $18-1
  437. BPL .R
  438. .INY INY
  439. .Erase LDA #$00F0
  440. STA $0201
  441. RTS
  442.  
  443. .R LDA $13
  444. AND #$0010
  445. BNE .Erase
  446. LDA !ForcedScroll
  447. BNE .Erase
  448. LDA !Xposition
  449. STA $0200
  450. LDA !LineDrawn
  451. ASL #4
  452. ADC #$0086
  453. STA $0201
  454. LDA #!RightArrowGFX
  455. STA $0202
  456. RTS
  457.  
  458. WaitTime: INY
  459. LDA [$D5],y
  460. AND #$00FF
  461. CMP !Timer
  462. BEQ .INY
  463. INC !Timer
  464. DEY
  465. RTS
  466. .INY STZ !Timer
  467. INY
  468. RTS
  469.  
  470. FontColor1: STZ !FontColor
  471. INY
  472. RTS
  473. FontColor2: LDA #$0010
  474. STA !FontColor
  475. INY
  476. RTS
  477. FontColor3: LDA #$0020
  478. STA !FontColor
  479. INY
  480. RTS
  481.  
  482. PadLeft: INY
  483. LDA [$D5],y
  484. AND #$00FF
  485. STA !NewLeftPad
  486. INY
  487. RTS
  488. PadRight: INY
  489. LDA [$D5],y
  490. AND #$00FF
  491. STA !RightPad
  492. INY
  493. RTS
  494. PadBoth: INY
  495. LDA [$D5],y
  496. AND #$00FF
  497. STA !NewLeftPad
  498. BRA PadRight
  499.  
  500. ChangeMusic: INY
  501. SEP #$20
  502. LDA [$D5],y
  503. STA $1DFB
  504. BMI +
  505. CMP #$21
  506. BCC +
  507. DEC A
  508. AND #$03
  509. STA $00
  510. LDA $C100
  511. AND #$FC
  512. ORA $00
  513. STA $C100
  514. + REP #$20
  515. INY
  516. RTS
  517.  
  518. EraseSentence: LDA !ForcedScroll
  519. BNE .R
  520.  
  521. LDX #$03FE
  522. - STZ $AD00,x
  523. DEX #2
  524. BPL -
  525. SEP #$20
  526. .loop LDA $10
  527. BEQ .loop
  528. STZ $10
  529.  
  530. LDA #$00
  531. STA $00420C
  532. LDA #$80
  533. STA $002100
  534. STA $002115
  535. LDX #$420B
  536. REP #$21
  537. LDA !CurrentLine
  538. ADC #$0200
  539. STA !CurrentLine
  540. AND #$0E00
  541. ORA #$2000
  542. STA $002116
  543. LDA #$1801
  544. STA $F5,x
  545. LDA #$AD00
  546. STA $F7,x
  547. LDA #$7EAD
  548. STA $F8,x
  549. LDA #$0400
  550. STA $FA,x
  551. SEP #$20
  552. LDA #$01
  553. STA $00,x
  554. LDA $0D9F
  555. STA $01,x
  556. INC !Timer
  557. LDA !Timer
  558. CMP #$08
  559. BNE .loop
  560. INY
  561. REP #$20
  562. STZ !CurrentLine
  563. LDA !NewLeftPad
  564. STA !LeftPad
  565. STA !Xposition
  566. STZ !LineDrawn
  567. STZ !Timer
  568. LDA #$FF80
  569. STA $CA22
  570. .R RTS
  571.  
  572.  
  573. TopicFadeOut: LDA !ForcedScroll
  574. BNE .R
  575. PHY
  576. PHP
  577. SEP #$30
  578. -- LDA $C915
  579. BEQ +++
  580.  
  581. LDX !Timer
  582. LDA #$0B
  583. SEC
  584. SBC !Timer
  585. TAY
  586. - LDA $C910,x
  587. BEQ +
  588. DEC $C910,x
  589. PHX
  590. TYX
  591. DEC $C910,x
  592. PLX
  593. + INY
  594. DEX
  595. BPL -
  596. LDA !Timer
  597. CMP #$05
  598. BCS +
  599. INC !Timer
  600. + LDA $10
  601. BEQ $FC
  602. STZ $10
  603. BRA --
  604. +++ PLP
  605. STZ !Timer
  606. PLY
  607. .R RTS
  608.  
  609. TopicFadeIn: LDA !ForcedScroll
  610. BNE .R
  611. PHY
  612. PHP
  613. SEP #$30
  614. LDA #$04
  615. STA !Timer
  616. -- LDA $C910
  617. CMP #$0F
  618. BEQ +++
  619.  
  620. LDX #$05
  621. LDY #$06
  622. - LDA $C910,x
  623. CMP #$0F
  624. BEQ +
  625. INC $C910,x
  626. PHX
  627. TYX
  628. INC $C910,x
  629. PLX
  630. + INY
  631. DEX
  632. CPX !Timer
  633. BNE -
  634. LDA !Timer
  635. BMI +
  636. DEC !Timer
  637. + LDA $10
  638. BEQ $FC
  639. STZ $10
  640. BRA --
  641. +++ PLP
  642. STZ !Timer
  643. PLY
  644. .R RTS
  645.  
  646. ChangeTopic: JSR TopicFadeOut
  647.  
  648. SEP #$A0
  649. LDA #$00
  650. STA $004200
  651. REP #$20
  652.  
  653. LDA !Xposition
  654. PHA
  655. STZ !Xposition
  656.  
  657. LDA #$B100
  658. STA $04
  659. LDX #$03FE
  660. - STZ $B100,x
  661. DEX #2
  662. BPL -
  663. SEP #$20
  664. INY
  665. .Loop LDA [$D5],y
  666. BPL .IsChar
  667. CMP #$8D
  668. BEQ .END
  669. REP #$20
  670. PEA .ReturnedCommand-1
  671. AND #$007F
  672. ASL A
  673. TAX
  674. LDA CommandAddress,x
  675. PHA
  676. RTS
  677. .ReturnedCommand SEP #$20
  678. BRA .Loop
  679. .IsChar JSR DrawChar
  680. BRA .Loop
  681.  
  682. .END LDA #$81
  683. STA $004200
  684. - LDA $10
  685. BEQ -
  686. STZ $10
  687.  
  688. LDA #$00
  689. STA $00420C
  690. LDA #$80
  691. STA $002100
  692. STA $002115
  693. LDX #$420B
  694. REP #$20
  695. LDA #$3000
  696. STA $002116
  697. LDA #$1801
  698. STA $F5,x
  699. LDA #$B100
  700. STA $F7,x
  701. LDA #$7EB1
  702. STA $F8,x
  703. LDA #$0400
  704. STA $FA,x
  705. SEP #$20
  706. LDA #$01
  707. STA $00,x
  708. LDA $0D9F
  709. STA $01,x
  710.  
  711. REP #$20
  712. LDA !Xposition
  713. LSR A
  714. CLC
  715. ADC #$FF80
  716. STA $CA10
  717. PLA
  718. STA !Xposition
  719. STZ !TermChars
  720. INY
  721. JSR TopicFadeIn
  722. RTS
  723.  
  724. TopFadeOut: LDA !ForcedScroll
  725. BNE .R
  726. PHY
  727. PHP
  728. SEP #$30
  729. - LDA $C900
  730. BEQ +
  731. DEC $C900
  732. LDA $00
  733. BEQ $FC
  734. STZ $10
  735. BRA -
  736. + PLP
  737. PLY
  738. .R RTS
  739.  
  740. TopFadeIn: LDA !ForcedScroll
  741. BNE .R
  742. PHY
  743. PHP
  744. SEP #$30
  745. - LDA $C900
  746. CMP #$0F
  747. BEQ +
  748. INC $C900
  749. LDA $00
  750. BEQ $FC
  751. STZ $10
  752. BRA -
  753. + PLP
  754. PLY
  755. .R RTS
  756.  
  757. ShowOAM: JSR HideOAM
  758. LDA #$0001
  759. STA $0E
  760. LDX #$0004
  761.  
  762. LDA [$D5],y
  763. AND #$00FF
  764. STA $0C
  765. INY
  766. - LDA [$D5],y
  767. STA $0200,x
  768. INY #2
  769. LDA [$D5],y
  770. AND #$2000
  771. ASL #2
  772. STA $08
  773. LDA [$D5],y
  774. STA $0202,x
  775. INX #4
  776. INY #2
  777. PHX
  778. LDA $0E
  779. LSR #2
  780. ORA #$0400
  781. STA $00
  782. LDA $0E
  783. AND #$0003
  784. ASL A
  785. TAX
  786. LDA ($00)
  787. AND .Mask,x
  788. ASL $08
  789. BCC +
  790. ORA .OR,x
  791. + STA ($00)
  792. PLX
  793. INC $0E
  794. DEC $0C
  795. BNE -
  796. JSR TopFadeIn
  797. RTS
  798. .Mask dw $FFFC,$FFF3,$FFCF,$FF3F
  799. .OR dw $0002,$0008,$0020,$0080
  800.  
  801. HideOAM: JSR TopFadeOut
  802. SEP #$20
  803. LDA #$F0
  804. JSL $7F8005
  805. REP #$20
  806. INY
  807. .R RTS
  808.  
  809. BranchLabel: LDA !ForcedScroll
  810. BNE HideOAM_R
  811.  
  812. LDA [$D5],y
  813. STA $06
  814. XBA
  815. AND #$007F
  816. STA $02
  817. ASL #4
  818. STA $04
  819.  
  820. LDA !LeftPad
  821. SEC
  822. SBC #$000A
  823. BCS $03
  824. LDA #$0000
  825. STA $0200
  826. LDA !SelectMsg
  827. ASL #4
  828. STA $00
  829. LDA !LineDrawn
  830. ASL #4
  831. ADC #$008F
  832. ADC $00
  833. SEC
  834. SBC $04
  835. STA $0201
  836. LDA #!DownArrowGFX
  837. STA $0202
  838.  
  839. LDA $16
  840. AND #$000C
  841. BEQ ++
  842. CMP #$000C
  843. BEQ ++
  844. BIT #$0004
  845. BEQ +
  846. INC !SelectMsg
  847. LDA !SelectMsg
  848. CMP $02
  849. BCC ++
  850. STZ !SelectMsg
  851. BRA ++
  852. + DEC !SelectMsg
  853. BPL ++
  854. LDA $02
  855. DEC A
  856. STA !SelectMsg
  857. ++ LDA.b $16-1
  858. ORA.b $18-1
  859. BPL .R
  860. LDA #$00F0
  861. STA $0201
  862. INY
  863. INY
  864. TYA
  865. ASL !SelectMsg
  866. ADC !SelectMsg
  867. TAY
  868. LDA [$D5],y
  869. TAY
  870. STZ !SelectMsg
  871. LDA $06
  872. BMI .R
  873. INC !Inner
  874. JSR BreakLine
  875. STZ !Inner
  876. .R RTS
  877.  
  878. JumpLabel: INY
  879. LDA [$D5],y
  880. TAY
  881. RTS
  882.  
  883. SkipLabel: INY
  884. LDA [$D5],y
  885. STA !SkipPos
  886. INY #2
  887. RTS
  888. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  889. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  890.  
  891.  
  892. DrawChar: PHY
  893. STA $00
  894. PHK
  895. PLA
  896. STA $0C
  897. STA $0F
  898. REP #$20
  899. LDA $00
  900. AND #$00FF
  901. TAX
  902. LDA FontWidth,x
  903. AND #$00FF
  904. STA $08 ; the character's width
  905. TXA
  906. ASL #2
  907. STA $00
  908. ASL A
  909. ADC $00
  910. ADC.w #Letters ; the character bitmap info. address. left part.
  911. STA $0A
  912. ADC #$0400
  913. STA $0D ; the character bitmap info. address. right part.
  914.  
  915. LDY #$0000
  916. .YLoop
  917. STZ $00
  918. LDA [$0A],y
  919. STA $01
  920. LDA [$0D],y
  921. AND #$00FF
  922. ORA $00 ; A = LLLLLLLL RRRRRRRR
  923.  
  924. LDX #$0000
  925. .XLoop ASL A
  926. BCC .NoPixel
  927. PHA
  928. PHX
  929. TXA
  930. CLC
  931. ADC !Xposition
  932. PHA
  933. AND #$FFF8
  934. ASL A
  935. CPY #$0008
  936. BCC $03
  937. ORA #$0200
  938. STA $00
  939. TYA
  940. AND #$0007
  941. ASL A
  942. ADC $04
  943. ADC $00
  944. STA $00
  945. PLA
  946. AND #$0007
  947. ASL A
  948. ORA !FontColor
  949. TAX
  950. LDA ($00)
  951. ORA BitTable,x
  952. STA ($00)
  953. PLX
  954. PLA
  955. .NoPixel INX
  956. CPX $08
  957. BNE .XLoop
  958. INY
  959. CPY #$000C
  960. BCC .YLoop
  961. LDA !Xposition
  962. ADC $08 ; carry flag is already set here, so 1 pixel for spacing is automatically added :P
  963. STA !Xposition
  964. DEC !TermChars
  965. CMP #$0100
  966. BCS $FE
  967. SEP #$20
  968. PLY
  969. INY
  970. RTS
  971.  
  972.  
  973. BitTable: dw $0080,$0040,$0020,$0010,$0008,$0004,$0002,$0001
  974. dw $8000,$4000,$2000,$1000,$0800,$0400,$0200,$0100
  975. dw $8080,$4040,$2020,$1010,$0808,$0404,$0202,$0101
  976. Letters: incbin vwf.bin
  977. FontWidth: incbin width.bin
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement