home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 109 / EnigmaAmiga109CD.iso / software / testi / corsoasm / sorgenti_darkcoder / shade / shadebobs.txt < prev    next >
Encoding:
Text File  |  1995-12-06  |  3.4 KB  |  76 lines

  1.  
  2. ;By DeathBringer/MORBID VISIONS
  3.  
  4. Shade Bobs
  5.  
  6. La routine dello ShadeBob e' essenzialmente una implementazione della capacita'
  7. del blitter di effettuare addizioni. Basta pensare ad ogni pixel dello schermo
  8. sia un numero ad n cifre binarie, dove n e' il numero dei bitplane, ad esempio
  9. avendo 5 bitplane la situazione sarebbe la seguente:
  10.  
  11. Plane5        0        0        0        0        0
  12. Plane4        0        0        1        0        1
  13. Plane3        0        1        0        1        0
  14. Plane2        0        1        1        0        1
  15. Plane1        1        0        1        0        0
  16. -----------------------------------------------------
  17. Numero        1        6       11        4        10
  18.  
  19. la routine addiziona 1 a questo numero usando una semplice tecnica, utilizzata
  20. nei contatori binari, e con sofisticate migliorie anche nell'addizionatore
  21. presente nella nostra ALU.
  22.  
  23. Per effettuare lo Shade, dobbiamo sommare 1 al numero rappresentato da tutti
  24. i bitplanes, ecco come fare.
  25.  
  26. Il fatto di sommare numeri binari ci semplifica notevolmente la vita, per
  27. prima cosa ci calcoliamo se c'e' il riporto tra un bitplane e l'altro, come si
  28. fa quando lo si calcola per le cifre in una normale addizione, e poi si
  29. effettua la somma. 
  30.  
  31. Chiaramente ci sara' un riporto se entrabi i bit sono uguali a 1, e la somma
  32. sara' 1 se i bit sono diversi, 0 se i bit sono uguali (0+0, 1+1) come si puo'
  33. verificare facilmente dalla seguente tavola:
  34.  
  35. Bitplane | Bit da sommare | Somma | Riporto 
  36. --------------------------------------------
  37.     0    |        0       |   0   |    0   
  38.     0    |        1       |   1   |    0  
  39.     1    |        0       |   1   |    0  
  40.     1    |        1       |   0   |    1  
  41. ---------------------------------------------    
  42.  
  43. Adesso possiamo vedere quali funzioni realizzano Somma e Riporto:
  44.  
  45. Somma= Bitplane XOR Bit
  46.  
  47. Riporto= Bitplane AND Bit
  48.  
  49. A questo punto basta iterare la procedura precedente per tutti i bitplane,
  50. sommando il riporto, ed il gioco e' fatto!!!
  51.  
  52. Esempio:
  53.         Numero       Bit da sommare          Somma            Riporto
  54. ------------------------------------------------------------------------
  55. plane1  1        +          __1        =        0                1 ->\    
  56.                            /      /---------------------<-------------|
  57. plane2  1        +        /   1 <-     =        0                1 ->\                                               
  58.                          /        /-----------------------------------|
  59. plane3  0        +       |    1 <-     =        1                0 ->\     
  60.                          |        /-----------------------------------|
  61. plane4  0        +       |    0 <-     =        0                0
  62.         ^                |                      ^
  63.         |                |                      |
  64.         3        +        \_->1        =        4
  65. ------------------------------------------------------------------------
  66.         
  67. Il nostro bob ad 1 bitplane, rappresenta la maschera che indica quali pixel
  68. sono interessati all'addizione in un determinato quadro. Per prima cosa si
  69. prendono il bob e l'area di schermo interessata e si effettua un AND usando
  70. come destinazione un'area addizionale chiamata Carry (Il Riporto).
  71. Fatto questo si prende il bob e si effettua lo XOR con l'appropriato bitplane
  72. dello schermo, per ottenere la somma.
  73. In seguito si continua usando l'area Carry come se fosse il nostro bob per ogni
  74. bitplane. Chiaramente sono necessarie 2 aree Carry!!!
  75.  
  76.