home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 1 / ARM_CLUB_CD.iso / contents / apps / paint / a / iffloader / !IFFloader / HAMconvert (.txt) < prev   
Encoding:
RISC OS BBC BASIC V Source  |  1989-06-12  |  4.4 KB  |  245 lines

  1.  >!IFFLoader.HAMconvert
  2.  +------------------------------------------------------+
  3.  | HAM-256-II                                           |
  4.  | 4096 to 256(dithered) colour converter.              |
  5.  +------------------------------------------------------+
  6.  | This program was designed to convert Amiga Hold and  |
  7.  | Modify pictures to 256 colours.  The HAM file to be  |
  8.  | read must be an ACBM (Amiga continous bit-map) with  |
  9.  | NO header (IFF or otherwise).                        |
  10.  |                                                      |
  11.  | Converted for use with IFFloader by Tom Simpson 1989 |
  12.  |                                                      |
  13.  |                (c) T.Simpson 1988                    |
  14.  +------------------------------------------------------+
  15.  bit_plane1 8192
  16.  bit_plane2 8192
  17.  bit_plane3 8192
  18.  bit_plane4 8192
  19.  bit_plane5 8192
  20.  bit_plane6 8192
  21.  rr(15),rg(15),rb(15)
  22. X%=0:Y%=1023
  23. lr=0:lg=0:lb=0
  24. r=0:g=0:b=0
  25.  '"Amiga HAM converter II (c) T. Simpson MCMLXXXIX"
  26.  "-----------------------------------------------"'
  27.  "NOTE - This program is NTSC only."
  28. HAM$="bitplanes"
  29.  "Dest file -> " DEST$
  30. load_HAM_file(HAM$)
  31.  "DELETE "+HAM$
  32.  "Please Wait - This is going to take ages."
  33.  byte =0 
  34.  7999   : 
  35.  These pics are only NTSC and not PAL
  36. bit$=""
  37. bit=256
  38.  bit=bit/2
  39.    BYTE= bit_plane4?byte
  40. *   bit$ = bit$ + 
  41. filter_bit(BYTE,bit)
  42.    BYTE= bit_plane3?byte
  43. *   bit$ = bit$ + 
  44. filter_bit(BYTE,bit)
  45.    BYTE= bit_plane2?byte
  46. *   bit$ = bit$ + 
  47. filter_bit(BYTE,bit)
  48.    BYTE= bit_plane1?byte
  49. *   bit$ = bit$ + 
  50. filter_bit(BYTE,bit)
  51.    BYTE= bit_plane5?byte
  52. *   bit$ = bit$ + 
  53. filter_bit(BYTE,bit)
  54.    BYTE= bit_plane6?byte
  55. *   bit$ = bit$ + 
  56. filter_bit(BYTE,bit)
  57. set_pixel(bit$)
  58.    bit$=""
  59.  bit=1
  60. "SCREENSAVE "+DEST$
  61. filter_bit(BYTE,bin)
  62.  (BYTE 
  63.  bin) = bin 
  64.  ="1" 
  65.  ="0"
  66. set_pixel(b$)
  67. b$,2)="00" 
  68. register(
  69. ("%"+
  70. b$,4)))
  71. b$,2)="10" 
  72.  r=lr:g=lg:b=
  73. ("%"+
  74. b$,4))
  75. b$,2)="01" 
  76.  b=lb:g=lg:r=
  77. ("%"+
  78. b$,4))
  79. b$,2)="11" 
  80.  b=lb:r=lr:g=
  81. ("%"+
  82. b$,4))
  83. lb=b:lg=g:lr=r
  84. cbase(
  85. cbase(
  86. cbase(
  87. :tint = (2*
  88. ("%"+
  89. g$,2))+
  90. ("%"+
  91. b$,2))+
  92. ("%"+
  93. r$,2)))/4
  94. (tint)+1 - tint <=.5 
  95.  tint=
  96. (tint)+1
  97. .fr=(
  98. ("%"+
  99. r$,2))<<2)+tint:
  100.  fr>15 
  101.  fr=15
  102. .fg=(
  103. ("%"+
  104. g$,2))<<2)+tint:
  105.  fg>15 
  106.  fg=15
  107. .fb=(
  108. ("%"+
  109. b$,2))<<2)+tint:
  110.  fb>15 
  111.  fb=15
  112. &diffr=r-fr: diffg=g-fg: diffb=b-fb
  113. )nr= r+diffr: ng= g+diffg: nb= b+diffb
  114.  (nr 
  115.  12) > (r+diffr) 
  116.  nr=r
  117.  (ng 
  118.  12) > (g+diffg) 
  119.  ng=g
  120.  (nb 
  121.  12) > (b+diffb) 
  122.  nb=b
  123.  .nr$=
  124. cbase(
  125. (nr)):
  126. (nr$)=3 
  127.  nr$=
  128. nr$,2)
  129. *.ng$=
  130. cbase(
  131. (ng)):
  132. (ng$)=3 
  133.  ng$=
  134. ng$,2)
  135. 4.nb$=
  136. cbase(
  137. (nb)):
  138. (nb$)=3 
  139.  nb$=
  140. nb$,2)
  141. >>ntint = (2*
  142. ("%"+
  143. ng$,2))+
  144. ("%"+
  145. nb$,2))+
  146. ("%"+
  147. nr$,2)))/4
  148. (ntint)+1 - ntint <=.5 
  149.  ntint=
  150. (ntint)+1
  151. bit6$=
  152. b$,2)+
  153. g$,2)+
  154. r$,2)
  155. f"nbit6$=
  156. nb$,2)+
  157. ng$,2)+
  158. nr$,2)
  159.  (Y%+1) 
  160.  8 = 0 
  161. z#   
  162. ("%"+bit6$)) 
  163.  tint*64
  164.  X%,Y%
  165.    X% += 2
  166. ("%"+nbit6$)) 
  167.  ntint*64
  168.  X%,Y%
  169. ("%"+nbit6$)) 
  170.  ntint*64
  171.  X%,Y%
  172.    X% += 2
  173. ("%"+bit6$)) 
  174.  tint*64
  175.  X%,Y%
  176. 0X%+=2:
  177.  X%>=1279 
  178.  X%=0:Y%-=4:lr=0:lg=0:lb=0
  179. cbase(num$)
  180.  num$ 
  181.      
  182.  "0" :answer$="0000"
  183.      
  184.  "1" :answer$="0001"
  185.      
  186.  "2" :answer$="0010"
  187.      
  188.  "3" :answer$="0011"
  189.      
  190.  "4" :answer$="0100"
  191.      
  192.  "5" :answer$="0101"
  193.      
  194.  "6" :answer$="0110"
  195.      
  196.  "7" :answer$="0111"
  197.      
  198.  "8" :answer$="1000"
  199.      
  200.  "9" :answer$="1001"
  201.      
  202.  "10" :answer$="1010"
  203.      
  204.  "11" :answer$="1011"
  205.      
  206.  "12" :answer$="1100"
  207.      
  208.  "13" :answer$="1101"
  209.      
  210.  "14" :answer$="1110"
  211.      
  212.  "15" :answer$="1111"
  213.  =answer$
  214. register(reg)
  215.    r=rr(reg)
  216.    g=rg(reg)
  217.    b=rb(reg)
  218. load_HAM_file(file$)
  219.  file$
  220.  O=0 
  221.     rr(O)=
  222. ("&"+
  223.     rg(O)=
  224. ("&"+
  225.     rb(O)=
  226. ("&"+
  227.  plane=0 
  228.  7999
  229.     bit_plane1?plane = 
  230.  plane=0 
  231.  7999
  232.     bit_plane2?plane = 
  233.  plane=0 
  234.  7999
  235.     bit_plane3?plane = 
  236.  plane=0 
  237.  7999
  238.     bit_plane4?plane = 
  239.  plane=0 
  240.  7999
  241.     bit_plane5?plane = 
  242.  plane=0 
  243.  7999
  244.     bit_plane6?plane = 
  245.