Bagaimana Chip Grafis Super Nintendo Bekerja: Panduan PPU Super

gambar

Deskripsi Konsep PPU


Super PPU

Super "Picture P rocessing U nit" adalah chip pengontrol video yang memproses grafik ubin, pesawat gulir, dan sprite SNES. Fungsinya mirip dengan konsol PPU NES.

VRAM

V ideo RAM - RAM yang digunakan oleh Super PPU. Berisi ubin. Setiap mode layar menggunakan ukuran ubin sendiri. Ini biasanya 8x8 atau 16x16 piksel per ubin. VRAM memiliki kapasitas 64 KB.

Oam

"Object Attribute Memory" - berisi definisi data sprite. Dapat berisi data yang tidak lebih dari 128 sprite. Mirip dengan OAM di NES, tetapi lebih maju.

Data OAM disimpan untuk setiap sprite

  • Posisi X sprite (9 bit, 0-511 atau $ 00- $ 1FF)
  • Posisi sprite dalam Y (8 bit, 0-239 atau $ 00- $ EF). Nilai 0-239 ada di layar, dari -63 ke -1 - "di atas layar", sehingga bagian bawah sprite terlihat di bagian atas layar. Ini menyiratkan bahwa sprite yang sangat besar dapat mulai di bagian bawah dan berakhir di bagian atas.
  • ID dari ubin sprite pertama. Indeks 8-bit
  • Tabel Nama Sprite
  • ID palet yang digunakan oleh sprite (0-7 / $ 00- $ 07). Sprite menggunakan indeks sub-palet di 8 sub-palet terakhir, jadi ID sebenarnya 7 + N
  • Ukuran sprite. 1 bit: 0 = sprite yang lebih kecil tersedia untuk mode saat ini (biasanya 1 ubin 16x16 piksel), 1 = sprite lebih besar tersedia untuk mode saat ini (biasanya 4 ubin (2x2 ubin 16x16 piksel))
  • Prioritas sprite Prioritas dalam OAM: 2 bit; bit-bit ini menentukan prioritas sprite relatif terhadap bidang latar belakang (lihat bagian pada bidang grafik di bawah). Prioritas di atas sprite lainnya. Zero sprite dalam OAM memiliki prioritas tertinggi. Sprite pertama dalam OAM memiliki prioritas lebih rendah. Yang kedua bahkan lebih rendah, dan seterusnya.


Emulator Penampil OAM No $ sns (SMW)

Dua jenis mesin utama


Konsol NTSC

  • Super Nintendo (SNES), 60 mesin Hertz, sebagian besar dijual di AS. Resolusi layar 256x224 piksel (seperti NTSC NES)

Konsol PAL

  • Super Famicom (SFC), 50 mobil hertz terjual di seluruh dunia. Resolusi layar 256x240 piksel (sama dengan PAL Famicom)


Kiri: NTSC Super Nintendo (Model 1), kanan: PAL Super Famicom

Kartu Tile


SNES memiliki 7 "mode" pemrosesan latar yang berbeda

  • Mereka disebut Mode 0-7. Mode 1 memiliki mode variasi. Mode 7 memiliki submode Mode 7 Ext. BG Setiap mode memiliki jumlah bidang latar belakang sendiri yang tersedia. Setiap mode memiliki jumlah warna sendiri untuk bidang latar yang tersedia dalam mode ini. Properti rendering setiap latar belakang sedikit berbeda. Dalam semua mode dan di semua bidang grafik, indeks warna 0 di setiap sub-palet selalu menunjukkan warna transparan.


Tabel ringkasan mode

4 pesawat grafis


SNES dapat menangani hingga 4 pesawat grafik, yang disebut BG1-BG4. Pesawat grafik ini dapat menggulir (scroll).

Ukuran Kartu Tile

  • Ubin peta pesawat gulir dapat memiliki ukuran ubin 32x32, 32x64, 64x32 atau 64x64. Bergantung pada ukuran setiap blok kartu ubin (blok 16x16 px / 1 ubin atau 32x32 / 2x2 ubin), ukuran kartu ubin dapat bervariasi dari 256x256 hingga 1024x1024 piksel
  • Untuk informasi lebih lanjut tentang ukuran ubin di peta ubin, lihat bagian “Peta Ubin & Karakter Peta” dari artikel ini.

Properti setiap ubin di peta ubin

  • Ubin V / HFlip (pantulan vertikal / horizontal)
  • Prioritas Ubin (Rendah / Tinggi)
  • Nomor palet (3 bit, 0-7 / $ 00- $ 07). Pesawat menggunakan 8 sub-palet CGRAM pertama; 8 sub-palet kedua digunakan untuk sprite (OAM)
  • ID ubin


Tilemap viewer untuk 4 latar belakang (BG) di SWM

Mode video

Mode 0

  • 4 latar belakang (BG), masing-masing dengan 4 warna
  • BG Prioritas (depan ke belakang)

Mode 1

  • 2 BG dengan 16 warna
  • 1 BG dengan 4 warna
  • Prioritas BG (depan ke belakang). Prioritas bervariasi tergantung pada keadaan bit 3 dalam register $ 2105.


Mode 2

  • 2 BG dengan masing-masing 16 warna
  • BG Prioritas (depan ke belakang)

  • Mode pertama dengan "offset dengan ubin" (untuk detail lebih lanjut, lihat Mode 2 )

Mode 3

  • 1 BG dengan 256 warna
  • 1 BG dengan 16 warna
  • BG Prioritas (depan ke belakang)

  • Mode Warna Langsung yang Tersedia (daftar $ 2130)

Mode 4

  • 1 BG dengan 256 warna
  • 1 BG dengan 4 warna
  • BG Prioritas (depan ke belakang)

  • Mode kedua dengan "shift to tile" (untuk detail lebih lanjut, lihat Mode 4 )

Mode 5

  • 1 BG dengan 16 warna
  • 1 BG dengan 4 warna
  • BG Prioritas (depan ke belakang)

  • “Mode 5 berbeda dari mode sebelumnya. Alih-alih ubin standar dengan lebar 8/16 piksel, selalu menggunakan ubin dengan lebar 16 piksel (tingginya masih bisa 8 atau 16) dan hanya menggunakan setengah piksel (mulai dari nol, bahkan piksel untuk ubin sub-layar, piksel aneh untuk ubin layar utama). Kemudian beralih ke karyawan palsu untuk membuat garis raster lebar 512-pixel. Selain itu, jika mode Interlace diaktifkan (lihat bit 0 dalam register $ 2133), maka tinggi layar bukannya 224 atau 239 adalah 448 atau 478 setengah-garis. Entah garis genap atau ganjil digambar dalam setiap bingkai, yang ditentukan oleh bit 7 dalam register $ 213f. Ini juga berarti bahwa $ 212c dan $ 212d dapat diberi nilai yang sama untuk mendapatkan tampilan "yang diharapkan". "

Mode 6

  • 1 BG dengan 16 warna
  • BG Prioritas (depan ke belakang)

  • Properti khusus: seperti Mode 5, ia memiliki beberapa perbedaan. Seperti Mode 2, ini juga merupakan pergeseran ke mode ubin. “Namun, perlu diingat bahwa Mode 6 selalu menggunakan ubin dengan lebar 8 piksel (16 setengah-piksel), yang terkait dengan BG3, serta BG1. "Anda tidak dapat menerapkan offset pada ubin berukuran 8 setengah piksel atau ke area dengan lebar 16 piksel (hanya jika Anda tidak menggunakan dua nilai offset untuk dua area 8-piksel)."

Mode 7

  • 1 BG dengan 256 warna
  • Mode yang sangat berbeda; memungkinkan transformasi matriks dari lapisan BG
  • Digunakan untuk efek pseudo-3D dalam game seperti Super Mario Kart, FZero, dll.
  • Lihat Mode 7 untuk lebih jelasnya.



Gram


"RAM Grafis Warna"

  • Berisi informasi warna untuk palet
  • Secara total, berisi 256 ($ FF) entri warna palet.
  • Setiap mode grafis membagi 256 entri palet menjadi sub-palet, masing-masing dengan warna N. N tergantung pada mode video. Secara default, setiap sub-palet terdiri dari 16 warna (256 warna / 16 warna per sub-palet = 16 sub-palet). Secara default, 8 sub-palet pertama (dengan ID 0-7 / $ 00- $ 07, ID catatan palet 0-63 / $ 00- $ 3F) digunakan untuk ubin latar depan (FG), dan 8 sub-palet terakhir (ID sub-palet 8-16 / $ 08- $ 10, catatan palet ID 64-127 atau $ 40- $ 80) - untuk objek sprite. Warna pertama dalam sub-palet diberikan transparan untuk ubin / sprite menggunakan sub-palet ini
  • Format warna BGR 15-bit. Setiap entri warna dalam CGRAM memiliki format 2 byte ("kata") dan bentuk 0BBBBBGG GGGRRRRR (B = bit biru, G = bit hijau, R = bit merah). 16 bit, bit pertama tidak digunakan, sehingga rentang warna 15-bit tetap. Setiap komponen warna (B, G, R) memiliki nilai dalam kisaran 0-31 (desimal) atau $ 00- $ 1F (heksadesimal)


Kerusakan palet SNES (Super Mario World di emulator view Palette no $ sns)

Alat Debugging dan Grafik yang Disarankan


Menemukan perangkat lunak yang bagus untuk membuat grafik retro, memecah pixel art menjadi ubin dan mengurangi jumlah warna untuk diproses dalam berbagai mode video SNES bisa jadi sulit. Di bawah ini adalah daftar perangkat lunak yang direkomendasikan untuk bekerja dengan grafik retro dan emulator khusus yang memungkinkan Anda menjelajahi konten VRAM dan pesawat.

Perangkat lunak grafik:

Yy-chr


Irfanview

  • Program untuk melihat / mengedit tujuan umum, memiliki plugin dan dukungan luas untuk banyak jenis file
  • Dapat mengedit, mengekspor dan mengimpor palet, serta menambah / mengurangi jumlah warna dalam gambar dan menampilkan nomor ini
  • Perangkat lunak bebas dan sumber terbuka
  • Memiliki plugin PNG untuk mengubah perubahan kedalaman warna sambil mempertahankan pesanan palet
  • Beranda

Emulator khusus yang disarankan untuk debug Super PPU

Tidak ada $ sns

  • Emulator SNES debugger
  • Dapat meniru prototip homebrew SNES-CD Super Disc
  • Dapat menampilkan status mesin / CPU
  • Menampilkan lapisan BG dengan cepat
  • Dapat ditampilkan dengan cepat OAM
  • Dapat menampilkan konten ubin VRAM dalam berbagai mode warna
  • Dapat menampilkan konten CGRAM
  • Informasi

Higan

  • Emulator dari berbagai konsol retro
  • Memiliki emulasi siklus peralatan SNES yang sangat akurat; digunakan untuk meniru / men-debug masalah hardware SNES
  • Informasi

Tautan dan bacaan tambahan



Source: https://habr.com/ru/post/id478580/


All Articles