home *** CD-ROM | disk | FTP | other *** search
/ The Amiga Demo Collection / TheAmigaDemoCollectionCDCUE.img / S / showtime05 / Bonus / BScreen.lha / Blitterscreen / BScreen.doc next >
Text File  |  1992-12-20  |  5KB  |  138 lines

  1.  
  2.     BlitterScreenInterLaced   by   Voodoo Chile  of  Degeneration
  3. v1.0    5-1-97
  4.  
  5. based on the original blitterscreen from:
  6.  
  7. Juergen "Rally" Fischer
  8.  
  9. e-mail: fischerj@Informatik.TU-Muenchen.DE
  10.  
  11.  
  12. Is a routine that convert a 8 bit Chunky screen on an Amiga planar screen
  13. using blitter.
  14.  
  15. I have semplified the usage a lot, I spent two days to understand the
  16. original blitterscreen.lha archive.
  17. I've included the original archive, too.
  18. I expanded the routine that now use a big "FAKE" to avoid the bad
  19. "Black hole" effect that appear in the original routine.
  20.  
  21. Advantages:
  22. - Just two parameters for the Inizialization (BScreenInit) and
  23.   conversion (BScreenConvert) routines.
  24. - A pair of Routines to simplify the usage (BScreenWait and BScreenReStart)
  25. - Removed all unusefull data allocation, only needed ds.x are present.
  26. - More clear interrupt routine in a separate include file text
  27. - All datas to be placed in your code ready in BScreenData.txt
  28. - Special Interlaced mode to avoid black pixels. (Fake Mode)
  29.  
  30. Disadvantages:
  31. - The chunky source screen must be in chip mem, too.
  32.  
  33. Missing:
  34. - Code Optimization ... NO WAY!!! ... I Haven't understand a byte of the
  35.   conversion mode ;-)
  36. - 2x1 mode. I worked only on the 2x2 mode.
  37.  
  38.  
  39.     METHOD
  40.  
  41.   I'll go to explain what I have understand.. maybe something miss.
  42.   The blitterscreen is a method to convert a 8 bit chunky image in
  43.   amiga planar mode using blitter.
  44.   Read the original text of the author for speed and advantages
  45.   considerations.
  46.   Since the blitter need 3 pass to convert the image, a list of
  47.   values to put in blitter register is stored in a special buffer
  48.   that will be used by the interrupt routine to reinitialize the blitter
  49.   and make the successive step.
  50.   So you can't use the $dff002 to wait the blitter because he can be
  51.   restarted by the interrupt routine, use the BScreenWait routine instead.
  52.   The only disadvantage is that the sprites are needed to cover one pixel
  53.   each two.  All 8 sprites are used.
  54.  
  55.     The "Interlaced Method"
  56.  
  57.   I've added this feature to avoid the black holes in teh screen.
  58.   If you've already seen the original blitter screen, you noticed
  59.   that every two lines the first is normal, and the second is shifted
  60.   right by one pixel.
  61.   I modified the coplist handling and the IntLev3 routine so every
  62.   frame the shift condition of all lines is switched.
  63.   This cause the screen ti have a little flickering (different from
  64.   the normal interlaced one) and a little loose of colour.
  65.  
  66.  
  67. Package content:
  68. - BScreen.i    there are all the subroutines you need.
  69. - BScreenInt3.i is the interrupt subroutine, I used a separate file
  70.         for it because you can insert your own level 3
  71.         interrupt routines here.
  72. - BScreenData.txt    Here there are all the storage definitions ready
  73.         to be cutted and pasted in your own code.
  74.         
  75.  
  76. How to use:
  77. - Go to edit the initials EQU's in the BScreen.i file.
  78.   They are ready for a 2x2 160x128 screen (i.e. full screen)
  79.   But if you modify them maybe you'll need to change some value
  80.   in the copperlist.
  81.  
  82. - Go in BScreenData.txt and copy all the specified section in your own code.
  83.  
  84. - Select in the copper list the bank color selection for the sprites.
  85.   they'll conver the screen with their color 1 (0 is transparent),
  86.   so find the right section in your own palette.
  87.  
  88. - Call BScreenInit passing:
  89.   This initialize the copperlists inserting sprites pointers and datas.
  90.  
  91. - Use the supplied Interrupt Level 3 routine and start it.
  92.  
  93. - Now You can call BScreenConvert:
  94.   a0.l    pointer to 8 bit chunky screen to convert
  95.   a1.l    pointer to planar screen
  96.   After a little calculation (about 5-6 rastlines on a basic 1200) the
  97.   blitter will start to make the conversion.
  98.  
  99. - Use BScreenWait to wait for the conversion to finish.
  100.   Remember:!!! DO NOT USE THE NORMAL BLITTER WAIT UING $dff002 !!!
  101.   the blitter is restarted three times by the interrupt routine,
  102.   so probably you'll go to wait the end of the wrong pass.
  103.   The supplied function is just 3 instructions and waits the internal
  104.   right flag.
  105.  
  106. - Use BScreenReStart to make the same conversion you just did with
  107.   BScreenConvert.  This avoid to repeat the calculation and is just
  108.   5 instruction large.
  109.   DO NOT call before the first use of BScreenConvert!!!
  110.   REMEMBER to use BScreenWait first!!!
  111.  
  112. OK, I think that's all.
  113. Follow the steps made in main.s for help, is very self-explanatory.
  114. NOTE: I use DevPac 3, so kill the first line if you use AsmOne or others.
  115.  
  116.  
  117.  
  118. My address:
  119. Fabrizio Nunnari
  120. via Vittime di Bologna 4
  121. 10032 Brandizzo (TO)
  122. ITALY
  123.  
  124. e-mail:
  125. nunnari.fabrizio@educ.di.unito.it
  126.  
  127.  
  128. alias:
  129. Voodoo Chile / DeGeNeRaTiOn
  130. All done with : A1200 KS3.0 - 420M HD - External low density Drive
  131.  
  132. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  133. Check out for our last music disk:
  134. '...in death of disco'  on  Aminet:
  135.  
  136. IdodDisk1.lha      demo/sound 594K  28+A MeTaL MuSiC DiSk By DeGeNeRaTiOn
  137. IdodDisk2.lha      demo/sound 641K  28+A MeTaL MuSiC DiSk By DeGeNeRaTiOn
  138.