logo elektroda
logo elektroda
X
logo elektroda
ADVERTISEMENT
ADVERTISEMENT
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[Solved] NES / SNES: Jak działa nakładanie warstw grafiki sprite'owej?

Obywatel LutZek 19 Feb 2018 22:18 669 4
ADVERTISEMENT
  • #1 17049635
    Obywatel LutZek
    Level 13  
    Posts: 269
    Help: 2
    Rate: 28
    Witam,

    jest pewna rzecz, która mnie zastanawia, a dotyczy sposobu generowania grafiki przez konsole typu NES / SNES czy ogólnie komputery z grafiką sprite'ową. Właściwie jest to kilka pytań, natomiast sprowadza się do jednej kwestii - w jaki sposób rozwiązano nakładanie się poszczególnych warstw grafiki?

    Przykład:

    NES / SNES: Jak działa nakładanie warstw grafiki sprite'owej?

    Oto znany i lubiany pan Gumba z Super Mario Bros. Pan Gumba jest spritem o wymiarach 16x16 pikseli, składającym się z czterech mniejszych obiektów 8x8 załadowanych do pamięci obiektów. Część danych z mapy koloru pana Gumby posiada wartość h00, oznaczająca kolor przezroczysty, czyli przestrzeń pod którą powinno być tło lub inny obiekt. W jaki sposób nakładano na siebie te warstwy? Co w sytuacji, gdy np. pokrywało się ze sobą więcej obiektów? Czy to było coś w stylu:

    1. Załaduj do rejestru piksel z pamięci obiektu.
    2. Jeżeli piksel jest przezroczysty => załaduj piksel z pamięci obiektu będącego poniżej
    3. Jeżeli piksel jest przezroczysty => załaduj piksel z pamięci obiektu jeszcze bardziej poniżej
    4. Jeżeli piksel jest przezroczysty => załaduj piksel z pamięci tła (upraszczając)
    5. Wyświetl

    (?)

    Próbowałem to rozważać nawet w kontekście ładowania tła oraz wszystkich obiektów w całości i nakładania ich od najniższego priorytetu do najwyższego, przy czym nie wierzę, w takie rozwiązanie - byłoby to straszne marnowanie zasobów obliczeniowych.
  • ADVERTISEMENT
  • Helpful post
    #2 17049679
    czareqpl
    Level 33  
    Posts: 1955
    Help: 196
    Rate: 579
    0. Narysuj tło lub inne obiekty, które mają być pod spodem.
    1. Załaduj do rejestru piksel z pamięci obiektu.
    2. Jeżeli piksel jest przezroczysty => Nie rysuj tego piksela
  • ADVERTISEMENT
  • #3 17049787
    Obywatel LutZek
    Level 13  
    Posts: 269
    Help: 2
    Rate: 28
    W takiej sytuacji - SNES posiadał możliwość narysowania 32 duszków w jednej linii. Zakładając (hipotetycznie) , że znajdują się dokładnie w tym samym miejscu, a każdy z nich ma wymiary 32x32 piksele, do narysowania tych 32 pikseli obrazów trzeba by pobrać z pamięci 1056 pikseli (32 bity tła + 32*32 bity sprite'ów). Sporo jak na takie urządzenie.
  • ADVERTISEMENT
  • Helpful post
    #4 17052131
    phanick
    Level 28  
    Posts: 2948
    Help: 65
    Rate: 2833
  • #5 17056418
    Obywatel LutZek
    Level 13  
    Posts: 269
    Help: 2
    Rate: 28
    Dziękuję, właśnie o to mi chodziło, pozdrawiam :)
ADVERTISEMENT