Bagaimana Sistem Grafik Sega Mega Drive bekerja: Video Display Processor


Deskripsi Konsep VDP


  • Vdp
    • " V ideo D isplay P rocessor"
    • Chip pengontrol video yang menangani grafis ubin, bidang gulir, dan sprite Genesis. Sebenarnya bukan prosesor.
  • VRAM
    • " V ideo RAM "
      • RAM (RAM) digunakan oleh VDP
      • Berisi ubin (gambar 8x8 piksel)
  • Dua jenis utama konsol
    • Konsol NTSC
      • Sega Genesis, 60 mesin Hertz, terutama didistribusikan di AS
      • Izin
        • Mode H 40 - 320x224 piksel ( 40 x28 ubin). Mode resolusi paling umum
        • Mode H 32 - 256x224 piksel ( 32 x28 ubin). Mode resolusi yang kurang populer
      • Studio Mega Cat kami merilis game NTSC , jadi ia menggunakan izin ini!
    • Konsol PAL
      • Sega Mega Drive, 50 mobil Hertz terjual di seluruh dunia
      • Izin
        • Mode H 40 - 320x240 piksel ( 40 x30 ubin). Mode resolusi paling umum
        • Mode H 32 - 256x240 piksel ( 32 x 30 ubin). Mode resolusi yang kurang populer

Kiri: NTSC Model 2 Sega Genesis, kanan: PAL Model 2 Mega Drive (Eropa)

3 pesawat grafis


2 pesawat bergulir

Pesawat B adalah bidang latar belakang. Menampilkan grafik ubin menggunakan peta ubin.

Pesawat A adalah bidang latar depan. Menampilkan grafik ubin menggunakan peta ubin. Window subplane - subplane untuk Plane A, yang grafiknya tidak bergulir dengan sisa pesawat.

Setiap baris ubin diberikan kolom demi kolom. Ubin pada setiap pesawat dapat memiliki prioritas: tinggi atau rendah.


Ubin untuk sprite yang diberikan dalam format biasa (4x4 ubin)

1 bidang sprite

Menggambar grafik ubin sprite.

Di dalam konsol, sprite disajikan dalam urutan terbalik, mis. setiap kolom ubin diberikan baris demi baris.

Sprite terletak di ruang virtual 512x512 piksel, di mana koordinat (128.128) bertepatan dengan sudut kiri atas layar TV.

Genesis dapat secara bersamaan menampilkan hingga 80 sprite perangkat keras pada layar, Genesis dapat menampilkan sekitar 20 sprite dalam satu baris raster, dengan sejumlah besar masalah ada masalah dengan sprite yang meluap dan mereka tidak lagi ditampilkan.

Untuk sprite perangkat keras, ukurannya terbatas (wxh), di mana w adalah lebarnya, h adalah tingginya, mengambil nilai 1-4 ubin.

Sprite yang lebih besar dari sprite perangkat keras dapat diperoleh dengan beberapa sprite.

Seperti halnya pesawat, ubin untuk sprite dapat memiliki prioritas rendah atau tinggi. Sprite prioritas rendah ditampilkan di bawah ubin prioritas tinggi dari lapisan lain. (Sebenarnya, semuanya sedikit lebih rumit, tetapi secara umum konsepnya adalah sebagai berikut).


Ubin untuk sprite di dalam konsol diberikan dalam format sprite (ukuran pindahkan dan 4x4)


Representasi visual dari prioritas lapisan bidang
Sumber: Manual Perangkat Lunak Genesis

VDP CRAM (" C olor RAM" - "RAM warna")

4 baris palet, masing-masing dengan 16 warna

Setiap warna memiliki kedalaman 4bpp (4 bit per piksel)

Warna pertama adalah warna transparan dari ubin grafis

Garis palet dapat menghasilkan warna yang sedikit lebih terang atau lebih gelap ketika sorotan atau bayangan dihidupkan.


Latar belakang


Sega Genesis memiliki 2 bidang peta ubin: bidang latar belakang ("Pesawat B") dan bidang latar depan ("Pesawat A"). Tergantung pada jenis mesin (NTSC atau PAL) dan mode video yang digunakan (H40 atau H32), kartu ubin layar penuh akan menjadi 32 atau 40 ubin lebar dan 28 atau 30 ubin tinggi. Setiap ubin terdiri dari gambar 8x8 piksel, dan setiap piksel sesuai dengan indeks warna (0-15). Sebenarnya, pesawat jendela adalah subplane dari Pesawat A; grafiknya tidak akan bergulir dengan sisa Plane A. Planes dapat digunakan dengan berbagai cara, misalnya, untuk latar depan layar penuh dan lapisan latar belakang, atau untuk teknik yang banyak permainan untuk Sega Genesis: pengguliran paralaks terkenal. Dengan menggulir setiap baris ubin pada pesawat dengan kecepatan berbeda, Anda dapat menciptakan ilusi kedalaman. Ubin pada kartu ubin pesawat yang berbeda dapat memiliki parameter prioritas: tinggi atau rendah. Parameter ini menentukan di mana sprite (yang juga memiliki prioritas tinggi atau rendah) harus ditampilkan, di bawah ubin, atau di atasnya.







VSRAM ( RAM ide V Sroll - menggulir memori video)

Layers Plane A dan Plane B dapat memiliki peta petak bidang gulir ukuran (wxh), di mana w adalah lebar petak, h adalah ketinggian petak. Masing-masing ukuran hanya bisa sama dengan 32, 64, atau 128 ubin. Pesawat-pesawat bergulir ini "scroll in / out" dari resolusi layar aktif (ukurannya ditentukan oleh jenis mesin dan mode H32 / H40). Pesawat bergulir yang berukuran 128x64 / 64x128 dan 128x128 tidak diizinkan. Secara default, bagian-bagian VRAM di alamat VRAM standar 0xC000 dan 0xE000 ditampilkan sebagai "ubin sampah", tetapi pada kenyataannya setiap piksel dalam "ubin sampah" ini menyandikan peta ubin VSRAM dengan cara yang ringkas. Pengguna tidak boleh menulis ubin nyata untuk "ubin sampah" ini, jika tidak, bug / crash grafik yang aneh, pelambatan akan terjadi, atau ubin sampah akan mulai muncul di pesawat gulir. Pesawat dapat menggunakan 1 dari 3 mode gulir: dengan garis raster, dengan ubin, atau dengan blok (bagian dari ubin 2x2). Setiap pesawat dapat menggulir secara simultan secara horizontal dan vertikal.

Warna


Ubin hanya dapat menggunakan 1 dari 4 garis palet sekaligus. Setiap garis palet berisi 16 warna. Warna pertama dicadangkan untuk warna transparan, yang direkomendasikan untuk dibuat merah muda (255.0.255) (RGB). Untuk menjaga integritas gaya dalam permainan, 1 atau 2 palet dapat dipilih untuk elemen individual. Misalnya, garis palet 1 dapat digunakan untuk karakter pemain, dan garis palet 2 dapat digunakan untuk elemen UI. Anda dapat menggunakan berbagai palet untuk menggambar musuh, latar belakang, dan elemen perubahan lainnya.


Untuk penggunaan warna yang optimal, palet ini menggunakan dua palet, satu untuk setiap lapisan bidang peta ubin. Dua gambar pertama adalah layer terpisah (Plane B dan Plane A), dan yang ketiga adalah gambar layar penuh yang selesai di mana kedua pesawat digabungkan. Karena setiap ubin dapat menggunakan warna yang diindeks hanya dari satu baris palet pada saat yang sama, menggunakan skema gambar dengan dua bidang memungkinkan Anda untuk memastikan jumlah warna yang tidak tersedia untuk gambar dengan satu pesawat.

Ada dua teknik populer untuk bekerja dengan palet - perubahan siklik palet (siklus palet) dan efek raster (efek raster) . Dengan mengubah warna elemen tertentu dalam garis palet yang terpisah, setiap beberapa frame Anda dapat menerapkan efek seperti air terjun, pencahayaan berdenyut, dan sebagainya.

Contoh efek dari perubahan palet palet untuk garis-garis Berserk yang berkedip-kedip di Zombie Football League




Efek raster menggantikan semua atau beberapa warna dalam garis palet setelah garis raster tertentu. Kami tidak akan mempertimbangkan teknik ini secara terperinci, tetapi pada intinya teknik ini terdiri dari penggantian sebagian dari semua warna CRAM setelah melewati berkas elektron TV dari garis pemindaian horizontal tertentu. Teknik ini berguna untuk menerapkan pergeseran palet untuk objek di bawah air. Secara khusus, ini digunakan untuk warna bawah air tingkat Labyrinth Zone di Sonic the Hedgehog .


Sprite



Sprite berpose Ashley dari Coffee Crisis

Sprite dalam Sega Genesis didefinisikan sebagai gambar dengan ukuran ( w x h ), di mana w adalah lebar ubin dan h adalah ketinggian ubin, yang dapat mengambil nilai 1-4 ubin. Setiap sprite hanya dapat menggunakan satu baris palet pada satu waktu. Sprite perangkat keras dapat memiliki ukuran maksimal 4x4 ubin. Sega Genesis dapat menangani hingga 80 sprite layar, 20 sprite per baris raster, namun, untuk menghindari rem, lebih baik tidak mencapai batas ini. Untuk menghindari batasan pada ukuran sprite perangkat keras, banyak game menggunakan beberapa sprite, mengumpulkan dari mereka satu karakter / objek. Prinsip pembuatan pixel art klasik adalah memilih resolusi yang cukup besar untuk memberikan detail yang diperlukan dan keterbacaan gambar, tetapi cukup kecil sehingga dapat dengan mudah dianimasikan. Semua grafis ubin Sega Genesis harus selalu dibagi 8 piksel agar sesuai dengan ukuran ubin. Sprite dapat diputar secara horizontal ("hflip") dan / atau vertikal ("vflip"), dan juga memiliki bendera prioritas tinggi atau rendah. Parameter ini menentukan apakah sprite harus ditampilkan di bawah atau di atas ubin pesawat lain (yang juga memiliki parameter prioritas tinggi atau rendah). Sprite perangkat keras mungkin juga memiliki nilai tautan; Setiap sprite harus memiliki nilai tautan uniknya sendiri. Antara lain, itu mempengaruhi rendering: sprite dengan nilai tautan rendah digambar di atas sprite dengan nilai tautan tinggi.

Animasi



Menjalankan Pemain Sepak Bola Minotaur Lapis Baja dari Zombie Football League

Di sebagian besar gim, gambarnya dianimasikan, bukannya menjadi sprite statis sederhana. Dengan secara bertahap mengubah bingkai sprite, Anda dapat membuat ilusi gerakan, dan menggunakannya untuk menampilkan jalan, serangan, dan sebagainya. Desainer game untuk Sega Genesis perlu mengingat jumlah sprite dan ubin masing-masing animasi sehingga terlalu banyak tidak memperlambat permainan. Membuat animasi sprite sering berubah menjadi kompromi antara berjuang untuk jumlah sprite yang rendah dan menciptakan gerakan yang menarik; Ini terutama berlaku untuk animasi di Sega Genesis.

Saat ini, di antara pengembang peretasan ROM Sonic the Hedgehog, sebuah teknik yang disebut " D ynamic P attern L oad C ues" (DPLC) adalah umum. Ini terdiri dari pemuatan ubin dinamis untuk sprite di VRAM dengan cepat alih-alih menyimpan semua ubin untuk frame sprite dalam VRAM secara bersamaan. Sangat sering, sprite terperinci (misalnya, sprite protagonis) terlalu banyak menggunakan ubin di VRAM yang digunakan untuk frame sprite. Jika Anda memuat ke dalam memori video hanya ubin yang diperlukan untuk bingkai sprite yang dibuat saat ini, Anda dapat menyimpan VRAM terbatas dan menempatinya dengan grafik ubin yang berbeda. Sayangnya, ubin yang digunakan untuk DPLC harus dibongkar dalam ROM sehingga memuat ke VRAM cepat dan tidak memperlambat permainan. (Membongkar grafik yang dikompresi menghabiskan sumber daya CPU dan mengambil siklus terlalu banyak.) Fungsi mesin sprite SGDK (dalam file header <sprite_eng.h>) biasanya menggunakan teknik DPLC untuk memotong ubin yang tidak digunakan.


Alat Debugging dan Grafik yang Disarankan


Menemukan perangkat lunak yang bagus untuk membuat grafik retro, memecah pixel art menjadi ubin dan mengurangi jumlah warna menjadi 4bpp dapat menjadi tantangan. Di bawah ini adalah daftar perangkat lunak yang direkomendasikan untuk membuat grafik retro, serta emulator khusus yang memungkinkan pengguna untuk memeriksa konten VRAM dan pesawat.

Perangkat lunak grafik:
  • RetroGraphicsToolkit
  • Irfanview
    • Aplikasi umum untuk melihat / mengedit gambar, memiliki plugins dan dukungan luas untuk berbagai jenis file gambar
    • Itu dapat mengedit, mengekspor dan mengimpor palet, serta menambah / mengurangi jumlah warna gambar dan menunjukkan nomor ini. Berguna untuk menyiapkan file grafik untuk bekerja dengan mesin SGDK penyelamatan
    • Perangkat lunak bebas dan sumber terbuka
    • Memiliki plugin PNG untuk mengubah kedalaman warna sambil mempertahankan urutan warna dalam palet
    • Tautan Informasi
  • Pcxpal
    • Perangkat lunak yang berguna yang memungkinkan Anda mengkonversi antara beberapa format palet berbeda.
    • Berguna untuk mengonversi dari / ke Megadrive .bin palet dan format palet Irfanview JASC
    • Format Impor
      • Gambar BMP, GIF, PCX
      • Emulator Pelestarian Genesis: GGD, GS *, MSD
      • File palet Jasc, Megadrive, MS RIFF, Tile Layer Pro
    • Format Ekspor
      • Palet Jasc, Megadrive, dan Tile Layer Pro
    • Tautan Informasi

Emulator khusus yang disarankan untuk debugging VDP


Game untuk SEGA GENESIS perlu ditelusuri



Ada banyak permainan indah untuk Sega Genesis, dari mana Anda dapat mempelajari berbagai teknik dan efek khusus. Termasuk:

  • Streets of Rage Series
  • Seri Sonic the Hedgehog
    • Efek raster dari palet air
    • Prioritas sprite / tile (terutama loop dan sistem fragmen dua lapis di Sonic 2 dan Sonic 3 / Knuckles)
    • Mesin game berperforma tinggi, cepat, sangat berkualitas tinggi
    • Sprite DPLC
    • Desain tingkat tinggi dan gaya grafis (terutama di Sonic 3 / Knuckles)
    • Efek perubahan palet siklik
    • Efek paralaks
  • Petualangan batman dan robin
    • Banyak efek grafis yang kompleks
  • Garis keturunan Castlevania
  • Aladdin
  • Cacing Tanah Jim Series
    • Animasi yang halus
  • Seri Bintang Phantasy
  • Zona merah
    • 1-bit video hitam putih mulus di layar splash
    • Simulasi perangkat lunak rotasi sprite dan peta ubin!
    • Grafik Isometrik / Tampilan Atas
  • Panorama Cotton (Jap) , Pembalap Jalanan
    • Grafik yang mengingatkan pada SNES Mode 7, pengguliran garis yang sangat canggih dan efek grafis
  • Hard Drivin ' dan Race Drivin'
    • 3D, render perangkat lunak grafik poligon
  • Zero Tolerance dan Beyond Zero Tolerance (tidak dirilis)
    • Perangkat lunak raycaster menyerupai DOOM
  • Cerita mainan
    • Efek palet raster yang memungkinkan Anda untuk melebihi jumlah warna CRAM dalam gambar screensaver statis
    • Level First Person Orang DOOM Raycaster
    • Efek Parallax untuk Level 1 Level Geometry dengan Woody

  • Star Cruiser (Jap)
    • 3D, render perangkat lunak grafik poligon
  • Contra: Hard Corps
    • Robot mini-boss raksasa di tingkat pertama adalah kartu ubin dengan simulasi rotasi kartu ubin / sprite
  • RPG besar buatan sendiri bernama Pier Solar
    • Grafis luar biasa
    • Beberapa tahun dibuat oleh tim penggemar, guru, dan pengembang homebrew Genesis
    • Kartrid besar 64 MB

Perhatikan bagaimana permainan yang berbeda menggunakan batasan perangkat keras Genesis dan bagaimana beberapa game memeras maksimal dari besi. In Streets of Rage dan Batman menunjukkan lokasi perkotaan yang keras dengan sangat baik. Dalam gim Sonic, ada warna-warna yang sangat terang dan kontras yang memungkinkan Anda mengenali lingkungan meskipun Sonic berkecepatan tinggi. Aladdin dan Earthworm Jim memiliki animasi yang halus dan menyenangkan yang menekankan karakter karakter.

Referensi dan bacaan tambahan


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


All Articles