home *** CD-ROM | disk | FTP | other *** search
/ Fujiology Archive / fujiology_archive_v1_0.iso / !FALCON / LINEOUT / DELTA.ZIP / DELTASRC.ZIP / DELTA.SRC / FONT.I < prev    next >
Text File  |  2003-01-04  |  7KB  |  365 lines

  1. ; font library for delta demo
  2. ;
  3. ; dependencies:
  4. ; - fscr2.i
  5. ;
  6. ; The font is a nice century gothic with some antialias.
  7. ;
  8.  
  9. ; Converts degas font to highcolor.
  10. Font.init:
  11. ; Convert pal..
  12.     lea    Font.degasPic+2,a1
  13.     lea    Font.degasPal,a2
  14.     moveq    #16-1,d7
  15.  
  16. .pal_loop:
  17.     move.w    (a1)+,d0
  18.     move.w    d0,d1
  19.     move.w    d0,d2
  20.     move.w    d0,d3
  21.     clr.b    d0
  22.     lsl.w    #5,d0
  23.     bcc.s    .end_red
  24.     bset    #$C,d0                ; Set ls red bit.
  25. .end_red:
  26. ; d0.w=highcol (red)
  27.     lsl.w    #4,d1
  28.     andi.w    #$0700,d1            ; d1.w=green msbits
  29.     andi.w    #$0080,d2            ; d2.w=green lsbit
  30.     or.w    d1,d0                ; d0.w=red+(green msbits)
  31.     or.w    d2,d0                ; d0.w=red+green
  32. ; Do blue..
  33.     move.w    d3,d1
  34.     andi.w    #$0007,d1
  35.     lsl.w    #2,d1                ; d1.w=blue msbits
  36.     or.w    d1,d0                ; d0.w=red+green+(blue msbits)
  37.     lsr.w    #3,d3
  38.     andi.w    #1,d3                ; d3.w=blue lsbit
  39.     or.w    d3,d0                ; d0.w=red+green+blue
  40.  
  41.     move.w    d0,(a2)+            ; Store color.
  42.     dbf    d7,.pal_loop
  43.  
  44.     lea    Font.pic,a0
  45.     suba.w    #16*2,a2
  46.  
  47. ; Convert pixels..
  48. ; a0: dst pic
  49. ; a1: pic data (32000 bytes)
  50. ; a2: pal
  51.     moveq    #320/16,d0
  52.     move.w    #200,d1
  53.     moveq    #4,d2
  54.     bra.l    Bitmap.convIBplToHC
  55.  
  56. ; Paints text in highcolor. Also handles 'returns'.
  57. ; INPUT:
  58. ; d0.w=screenwidth (pixels)
  59. ; d1.w=x offset
  60. ; d2.w=y offset
  61. ; a0: screen (highcolor)
  62. ; a4: text (nullterminated)
  63. Font.paintText:
  64.     move.w    d0,.width
  65.     mulu.w    d0,d2
  66.     ext.l    d1
  67.     add.l    d1,d2
  68.     lea    (a0,d2.l*2),a0
  69.     move.l    a0,d4
  70.     lea    Font.pic,a1
  71.     lea    Font.charTable,a3
  72.  
  73. .charloop:
  74.     clr.l    d0
  75.     move.b    (a4)+,d0
  76.     beq.s    .end
  77.     cmpi.w    #$0A,d0
  78.     bne.s    .char
  79.     move.w    #16*2,d3
  80.     mulu.w    .width(pc),d3
  81.     add.l    d3,d4
  82.     movea.l    d4,a0
  83.     bra.s    .charloop
  84.  
  85. .char:    subi.b    #32,d0
  86.     mulu.w    #6,d0
  87.     movem.w    (a3,d0.l),d0-d2
  88.     mulu.w    #320,d0
  89.     add.l    d1,d0
  90.     move.w    d2,d5
  91.     subq.w    #1,d5
  92.     lea    (a1,d0.l*2),a2
  93.     movea.w    .width(pc),a6
  94.     movea.w    #320,a5
  95.     suba.l    d2,a6
  96.     suba.l    d2,a5
  97.     adda.l    a6,a6
  98.     adda.l    a5,a5
  99.     moveq    #16-1,d7
  100.  
  101. .yloop:    move.w    d5,d6
  102.  
  103. .xloop:    move.w    (a2)+,d0
  104.     bne.s    .paint
  105.     addq    #2,a0
  106.     dbf    d6,.xloop
  107.     bra.s    .end_xloop
  108.  
  109. .paint:    move.w    d0,(a0)+
  110.     dbf    d6,.xloop
  111.  
  112. .end_xloop:
  113.  
  114.     adda.l    a6,a0
  115.     adda.l    a5,a2
  116.     dbf    d7,.yloop
  117.     
  118.     move.w    .width(pc),d0
  119.     mulu.w    #16*2,d0
  120.     suba.l    d0,a0
  121.     lea    2(a0,d2.l*2),a0
  122.  
  123.     bra.s    .charloop
  124.  
  125. .end:    rts
  126.  
  127. .width:    DC.W    0
  128.  
  129. ; Paints text in highcolor. Also handles 'returns'.
  130. ; INPUT:
  131. ; d0.w=screenwidth (pixels)
  132. ; d1.w=x offset
  133. ; d2.w=y offset
  134. ; a0: screen (highcolor)
  135. ; a4: text (nullterminated)
  136. Font.paintTextH:
  137.     move.w    d0,.width
  138.     mulu.w    d0,d2
  139.     ext.l    d1
  140.     add.l    d1,d2
  141.     lea    (a0,d2.l*4),a0
  142.     move.l    a0,d4
  143.     lea    Font.pic,a1
  144.     lea    Font.charTable,a3
  145.  
  146. .charloop:
  147.     clr.l    d0
  148.     move.b    (a4)+,d0
  149.     beq.s    .end
  150.     cmpi.w    #$0A,d0
  151.     bne.s    .char
  152.     addi.l    #16*160*4,d4
  153.     movea.l    d4,a0
  154.     bra.s    .charloop
  155.  
  156. .char:    subi.b    #32,d0
  157.     mulu.w    #6,d0
  158.     movem.w    (a3,d0.l),d0-d2
  159.     mulu.w    #320,d0
  160.     add.l    d1,d0
  161.     move.w    d2,d5
  162.     subq.w    #1,d5
  163.     lea    (a1,d0.l*2),a2
  164.     movea.w    .width(pc),a6
  165.     movea.w    #320,a5
  166.     suba.l    d2,a6
  167.     suba.l    d2,a5
  168.     adda.l    a6,a6
  169.     adda.l    a6,a6
  170.     adda.l    a5,a5
  171.     moveq    #16-1,d7
  172.  
  173. .yloop:    move.w    d5,d6
  174.  
  175. .xloop:    move.w    (a2)+,d0
  176.     bne.s    .paint
  177.     addq    #4,a0
  178.     dbf    d6,.xloop
  179.     bra.s    .end_xloop
  180.  
  181. .paint:    move.w    d0,(a0)+
  182.     move.w    d0,(a0)+
  183.     dbf    d6,.xloop
  184.  
  185. .end_xloop:
  186.  
  187.     adda.l    a6,a0
  188.     adda.l    a5,a2
  189.     dbf    d7,.yloop
  190.     
  191.     move.w    .width(pc),d0
  192.     mulu.w    #16*4,d0
  193.     suba.l    d0,a0
  194.     lea    4(a0,d2.l*4),a0
  195.  
  196.     bra.s    .charloop
  197.  
  198. .end:    rts
  199.  
  200. .width:    DC.W    0
  201.  
  202. ; Paints text in highcolor. Also handles 'returns'.
  203. ; INPUT:
  204. ; d0.w=screenwidth (pixels)
  205. ; d1.w=x offset
  206. ; d2.w=y offset
  207. ; a0: screen (highcolor)
  208. ; a4: text (nullterminated)
  209. Font.paintTextV:
  210.     move.w    d0,.width
  211.     mulu.w    d0,d2
  212.     add.l    d2,d2
  213.     ext.l    d1
  214.     add.l    d1,d2
  215.     lea    (a0,d2.l*2),a0
  216.     move.l    a0,d4
  217.     lea    Font.pic,a1
  218.     lea    Font.charTable,a3
  219.  
  220. .charloop:
  221.     clr.l    d0
  222.     move.b    (a4)+,d0
  223.     beq.s    .end
  224.     cmpi.w    #$0A,d0
  225.     bne.s    .char
  226.     addi.l    #32*160*2,d4
  227.     movea.l    d4,a0
  228.     bra.s    .charloop
  229.  
  230. .char:    subi.b    #32,d0
  231.     mulu.w    #6,d0
  232.     movem.w    (a3,d0.l),d0-d2
  233.     mulu.w    #320,d0
  234.     add.l    d1,d0
  235.     move.w    d2,d5
  236.     subq.w    #1,d5
  237.     lea    (a1,d0.l*2),a2
  238.     movea.w    .width(pc),a6
  239.     move.l    a6,d3
  240.     adda.l    a6,a6
  241.     movea.w    #320,a5
  242.     suba.l    d2,a6
  243.     suba.l    d2,a5
  244.     adda.l    a6,a6
  245.     adda.l    a5,a5
  246.     moveq    #16-1,d7
  247.  
  248. .yloop:    move.w    d5,d6
  249.  
  250. .xloop:    move.w    (a2)+,d0
  251.     bne.s    .paint
  252.     addq    #2,a0
  253.     dbf    d6,.xloop
  254.     bra.s    .end_xloop
  255.  
  256. .paint:    move.w    d0,(a0,d3.l*2)
  257.     move.w    d0,(a0)+
  258.     dbf    d6,.xloop
  259.  
  260. .end_xloop:
  261.  
  262.     adda.l    a6,a0
  263.     adda.l    a5,a2
  264.     dbf    d7,.yloop
  265.     
  266.     move.w    .width(pc),d0
  267.     mulu.w    #32*2,d0
  268.     suba.l    d0,a0
  269.     lea    2(a0,d2.l*2),a0
  270.  
  271.     bra.s    .charloop
  272.  
  273. .end:    rts
  274.  
  275. .width:    DC.W    0
  276.  
  277. ;= data section ============================================================
  278.  
  279.     data
  280.  
  281. Font.degasPic:
  282.     INCBIN    INTRO2.PI1
  283.  
  284. ; ASCII lookup table.
  285. ; Starts at char $20, control codes left out.
  286. Font.charTable:
  287.     DC.W    50,0,4                ; y, x, w ' '
  288.     DC.W    50,5,3                ; '!'
  289.     DC.W    50,0,4                ; '"' (not present)
  290.     DC.W    50,14,9                ; '#'
  291.     DC.W    50,24,8                ; '$'
  292.     DC.W    50,32,14            ; '%'
  293.     DC.W    50,46,10            ; '&'
  294.     DC.W    50,0,4                ; "'" (not present)
  295.     DC.W    50,61,6                ; '('
  296.     DC.W    50,67,6                ; ')'
  297.     DC.W    50,74,6                ; '*'
  298.     DC.W    50,80,10            ; '+'
  299.     DC.W    50,90,4                ; ','
  300.     DC.W    50,96,4                ; '-'
  301.     DC.W    50,101,4            ; '.'
  302.     DC.W    50,106,7            ; '/'
  303.     DC.W    50,113,9            ; '0'
  304.     DC.W    50,123,5            ; '1'
  305.     DC.W    50,131,8            ; '2'
  306.     DC.W    50,140,9            ; '3'
  307.     DC.W    50,148,10            ; '4'
  308.     DC.W    50,158,8            ; '5'
  309.     DC.W    50,167,8            ; '6'
  310.     DC.W    50,176,8            ; '7'
  311.     DC.W    50,185,9            ; '8'
  312.     DC.W    50,194,8            ; '9'
  313.     DC.W    50,203,3            ; ':'
  314.     DC.W    50,207,4            ; ';'
  315.     DC.W    50,212,9            ; '<'
  316.     DC.W    50,221,9            ; '='
  317.     DC.W    50,231,9            ; '>'
  318.     DC.W    50,241,8            ; '?'
  319. ; uppercase 
  320.     REPT    32
  321.     DC.W    50,0,4                ; uppercase shit, todo?
  322.     ENDR
  323. ; lowercase
  324.     DC.W    50,0,4                ; '`' not present
  325.     DC.W    90,0,10                ; 'a'
  326.     DC.W    90,11,10            ; 'b'
  327.     DC.W    90,22,9                ; 'c'
  328.     DC.W    90,32,9                ; 'd'
  329.     DC.W    90,42,10            ; 'e'
  330.     DC.W    90,52,5                ; 'f'
  331.     DC.W    90,57,10            ; 'g'
  332.     DC.W    90,68,8                ; 'h'
  333.     DC.W    90,77,3                ; 'i'
  334.     DC.W    90,84,5                ; 'j'
  335.     DC.W    90,94,8                ; 'k'
  336.     DC.W    90,108,3            ; 'l'
  337.     DC.W    90,112,13            ; 'm'
  338.     DC.W    90,127,8            ; 'n'
  339.     DC.W    90,137,9            ; 'o'
  340.     DC.W    90,147,9            ; 'p'
  341.     DC.W    90,157,10            ; 'q'
  342.     DC.W    90,168,4            ; 'r'
  343.     DC.W    90,173,6            ; 's'
  344.     DC.W    90,179,5            ; 't'
  345.     DC.W    90,185,9            ; 'u'
  346.     DC.W    90,194,8            ; 'v'
  347.     DC.W    90,203,12            ; 'w'
  348.     DC.W    90,221,8            ; 'x'
  349.     DC.W    90,233,9            ; 'y'
  350.     DC.W    90,248,7            ; 'z'
  351.     DC.W    90,255,6            ; '{'
  352.     DC.W    90,263,2            ; '|'
  353.     DC.W    90,269,7            ; '}'
  354.     DC.W    50,0,4                ; '~' not present
  355.     DC.W    50,0,4                ; '' not present
  356.  
  357. ;= bbs section =============================================================
  358.  
  359.     bss
  360.  
  361. Font.pic:
  362.     DS.W    320*200
  363. Font.degasPal:
  364.     DS.W    16
  365.