Oryginalny gameboy, GBP i GBC, wszystkie miały rozdzielczość ekranu 160×144 [1] podczas gdy Game Boy Advanced miał rozdzielczość 240×160 [2]
Jak więc zachodzi faktyczne rozciąganie? Wydaje się dość jednolite, ale nie mogę pojąć, jak to jest technicznie możliwe bez drugiego ekranu.
Odpowiedź
Po pierwsze, rozciąganie nie jest wykonywane w kierunku pionowym: gry Game Boy (i Color) wykorzystywały tylko 144 wiersze ze 160 dostępnych na ekranie Advance, więc na górze i na dole powinny być czarne paski „letterbox”, czy rozciągnąłeś obraz szerokoekranowy (za pomocą przycisków na ramionach), czy nie.
W poziomie obraz jest zdecydowanie rozciągnięty. Gdyby Advance miał dwukrotnie wyższą rozdzielczość poziomą niż Game Boy, łatwo byłoby go rozciągnąć: każda kolumna pikseli mogłaby zostać powtórzona dwukrotnie. W praktyce oznaczałoby to, że każdy z pikseli Game Boya był dwukrotnie szerszy niż poprzednio. Podwojenie rozdzielczości ekranu nie zawsze jest możliwe; jest prawdopodobne, że taka rozdzielczość nie była dostępna (lub niedroga) na urządzeniach przenośnych w czasie Advance.
Zamiast tego Nintendo wybrało ekran dla Advance, który miał rozdzielczość, która jest jedna i pół razy (lub 3/2) w porównaniu z oryginalnym Game Boyem (160 x 3/2 = 240). Każde dwie kolumny pikseli ze starej gry Game Boy będą teraz musiały zostać „rozciągnięte” na trzy kolumny ekranu Advance.
Ale jakie wartości należy przypisać pikselom w tych dodatkowych trzecich kolumnach ? Możesz podwoić liczbę pikseli niektórych oryginalnych kolumn, podwajając szerokość wszystkich kolumn nieparzystych lub parzystych. Jest to prosta metoda, ale nie wygląda tak dobrze, ponieważ niektóre kolumny w ogóle nie zostaną podwojone, a inne tak.
Alternatywnym podejściem jest użycie techniki o nazwie interpolacja . [* 1] W tym przypadku zamiast powielać jedną kolumnę, aby wypełnić puste piksele, należy wziąć średnią wartości w kolumnach po lewej i po prawej stronie każdego pustego piksela i zamiast tego użyj tej obliczonej wartości.
Jeśli przyjrzysz się uważnie wyświetlaczowi Advance z nierozciągniętą grą Game Boy, a następnie rozciągniętą, można zidentyfikować, która kolumny mają swoje wartości obliczone przez tę „uśredniającą” interpolację.
Oto kilka szczegółowych zdjęć „AY” z tekstu „1Player”:
< -unstretched < -rozciągnięte
Na po lewej stronie „A” kolumna pikseli została interpolowana między ciemnymi pikselami „A” a jasnymi pikselami tła. Te piksele zostały uśrednione jako średni szary.
Po prawej stronie „A” kolejna kolumna interpolowanych pikseli znalazła się między dwiema kolumnami ciemnych pikseli. Średnia z dwóch ciemnych pikseli jest również ciemna, więc ma ten sam kolor co reszta „A”. Podobne interpolacje są widoczne po lewej i prawej stronie litery „Y” oraz w innym miejscu na ekranie.
Oto para zdjęć z innej gry, zrobionych modelem AGS-101 Advance SP ( który ma jaśniejszy, podświetlany ekran). [* 2] Jeśli chcesz, możesz zagrać w grę w zgadywanie!
< – nierozciągnięty < – rozciągnięty
Dlaczego Nintendo zdecydowało się rozciągnąć ekran Game Boya w jednym kierunku i nie drugi? Jednym z powodów jest to, że interpolacja w jednym wymiarze jest znacznie prostsza niż w dwóch . Ale rozciągnięcie ekranu w pionie spowodowałoby również brzydkie wizualne artefakty w grze.
Gdyby Nintendo zdecydowało się rozciągnąć 144 rzędy pikseli na 160 rzędów dostępnych na ekranie Advance, aby wstawić 16 interpolowanych wierszy pikseli. 16 to współczynnik 160, więc interpolowane wiersze mogą być rozmieszczone równomiernie: jeden na 10 wierszy. Ale z dziewięciu oryginalnych wierszy tylko dwa byłyby obok nowego wiersza pf pikseli, a drugi siedem nie. W rezultacie niektóre rzędy byłyby „rozciągane” przez interpolację, a inne nie. Spowodowałoby to, na przykład, że kapelusz Mario rozciągałby się i lekko kompresował, gdy podskakiwał, i przeszkadzałby graczowi.
-
Ta technika (w szczególności dwuwymiarowa interpolacja dwuliniowa ) jest używana podczas zmiany rozmiaru obrazu w oprogramowaniu do obróbki obrazów, takim jak Photoshop lub GIMP. Jest również używany na komputerowych wyświetlaczach LCD, jeśli wybierzesz rozdzielczość (np. 640×480), która nie jest zgodna z natywną rozdzielczością wyświetlacza (np. 1024×768). Ale ponieważ GBA rozciąga wyświetlacz tylko w jednym wymiarze (w poziomie), wystarczy wykonać prostszą interpolację liniową obrazu.
-
Dzięki uprzejmości snips-n-snails
Komentarze
- @Tommy You ' są po prawej stronie. Rozciąganie nie jest ' wykonane w kierunku pionowym, więc Kaz ma rację. W kierunku poziomym rozciąganie jest najbliższym sąsiadem, jak powiedziałeś, nie interpolowany (filtrowany dwuliniowo), jak powiedział Kaz.
- Oprócz twoich komentarzy na temat braku rozciągania w pionie, wymagałoby to dużego bufora, ponieważ skanowanie poza liniami jest synchroniczne z szacunku dla gry. Możesz ' t po prostu wrócić i zeskanować dodatkową kopię wiersza, nawet jeśli chciałem to zrobić (co wyglądałoby okropnie), ponieważ zawartość mogła się zmienić . W rzeczywistości wiele gier gameboy wykorzystywało zmiany w treści wyświetlanej na hblank, aby tworzyć efekty lub po prostu dopasować więcej duszków na ekranie.
- @Kaz Nie mogłem ' t opowiem z twoich zdjęć, więc wziąłem własne i po raz kolejny masz rację. imgur.com/a/5Cc6IY9
- @ snips-n-snails te zdjęcia są świetne! ' Udało mi się znaleźć adapter do obiektywów makro i wymieniłem moje oryginalne zdjęcia, ale ekran Twojego AGS-101 ' ma mile ostrzejszy niż mój standardowy Advance. Czy mogę dodać Twoje zdjęcia do odpowiedzi?
- @Kaz Jasne, proszę bardzo.