Według strony Wikipedii dotyczącej Pac-Mana , najwyższy możliwy wynik to 3333360 zwrotnica. Nazywa się to idealną grą i została osiągnięta już przez 3 różne osoby.
Chcę wiedzieć: DLACZEGO to dokładnie 3333360 punktów? To musi być techniczne ograniczenie, ale moim zdaniem ta liczba nie ma sensu.
Wiem, że gra ma 255 poziomów. 255 to 11111111
w systemie binarnym i poziomie 256 (który wydaje się istnieć mistycznie) powoduje przepełnienie 8-bitowej cyfry, co kończy się zawieszeniem gry.
Ale 3333360 po prostu wydaje się taki przypadkowy.
Komentarze
Odpowiedź
Pacman Museum zawiera artykuł o zdobyciu 3333360 Zwrotnica. A tutaj „sa film przedstawiający gościa na poziomie 255 i 256 , zawierający ważne informacje dotyczące poziomu 256.
Poziom od 1 do 255
Kropki jedzenia : Na każdym poziomie jest 240 zwykłych kropek, każdy o wartości 10 punktów, Netto 2400 punktów na poziom . Ponadto zjedzenie czterech kropek aktywatora, każda wartych 50 punktów, daje kolejne 200 punktów.
⇒ 255 × 2600 = 663000
Jedzenie „owoców” : Na każdym poziomie znajduje się jeden jadalny przedmiot, który pojawia się tylko przez określony czas ilość czasu, dwa razy na poziom. W zależności od rodzaju owocu, który z kolei zależy od poziomu, na którym grasz, otrzymujesz różną liczbę punktów. W sumie otrzymujesz
⇒ 2 × (100 + 300 + 2 × 500 + 2 × 700 + 2 × 1000 + 2 × 2000 + 2 × 3000 + 243 × 5000) = 2459600
Jedzenie duchów : Zjedzenie ducha w tym samym okresie energetyzatora daje 200 punktów, a dwa razy tyle za każdego kolejnego zjedzonego ducha (odpowiednio 400, 800 i 1600 od drugiego do czwartego ducha).Możesz to zrobić 4 razy na poziom, ale tylko do poziomu 16, a na poziomie 18, , ponieważ duchy nie mrugają na poziomach 17 i 19+ ⇒ 4 × 3000 × 17 = 204000
Dodawanie tych liczba daje 3326600 , po prostu 6760 punkty zabrakło do ideału.
Poziom 256
Tę nieparzystą liczbę można uzyskać na poziomie 256.
Widoczne kropki : Jak widać, brakuje nieco ponad połowy ekranu, co oznacza, że można uzyskać tylko 112 normalnych i 2 punkty aktywatora.
⇒ 1220
Pojedynczy owoc : Termin do usterki ekran, klucz („owoc”) można pobrać tylko raz
⇒ 5000
Glitched Dots : W wyblakłym obszarze znajduje się 9 normalnych kropek, które pojawiają się ponownie za każdym razem, gdy umierasz. Przy 5 dodatkowych żyć możesz je zdobyć 6 razy
⇒ 6 × 90 = 540
Wielki Razem
(663000 + 1220 + 540 (kropki)) + (2459600 + 5000 (owoce)) + (204000 (duchy)) = 3333360
Komentarze
- Zacząłem wpisywać odpowiedź, myśląc, że liczby będą się zgadzać, a one nie ' t. Zajęło trochę czasu, zanim dowiedziałem się o dziwności, jaką są punkty na poziomie 256.
- 256 to dość ważna liczba.
- @Howdy_McGee Zwłaszcza na 8-bitowym procesorze …
- Czy usterka na 256. poziomie jest celowa – czy jest to coś, co jest prawdziwą usterką?
- @ RPi_Awesomeness to ' to rzeczywisty błąd związany z przewijaniem liczb w systemie binarnym. 256 to 100000000 w systemie dwójkowym, ale liczba nie ' nie obsługuje więcej niż 8 cyfr binarnych, więc wycina 1, co daje 00000000, czyli 0. W przypadku niektórych niezbyt powiązanych problemów , powoduje to usterkę, zamiast ponownie umieszczać Cię na poziomie 0.
Odpowiedź
Wynik jest ograniczony ponieważ na poziomie 256 występuje usterka, która nadpisuje połowę ekranu śmieciami. Gra nie pozwoli graczowi przejść z jednej planszy do następnej bez zjedzenia 244 kropek i energizerów, ale usterka nadpisuje wiele kropek; to spowoduje, że gracz nie będzie mógł zjeść 244 kropek i energizerów, a tym samym nie będzie mógł opuścić Jeśli zastanawiasz się, dlaczego wystąpiła usterka, kod maszynowy w Pac-Manie do rysowania owoców jest podobny do kodu C:
unsigned char temp1, temp2; unsigned char *ptr; temp1 = level; if (temp1 > 15) temp1 = 15; temp2 = temp1; if (temp2 > 7) temp2 = 7; ptr = LOWER_RIGHT_ADDRESS; do { *ptr++ = shapes[temp1--]; } while(--temp);
Zauważ, że w przeciwieństwie do wielu maszyn, Pac Man używa dość dziwnego układu pamięci ekranu, który umieszcza kolejne bajty poziomo na górze i na dole ekranu oraz pionowo na środku. Najprawdopodobniej zrobiono to tak, aby podczas rysowania głównej części ekranu adresy pamięci były zwiększane o potęgę dwóch na osiem linii skanowania (zwróć uwagę, że „góra” monitora znajduje się po prawej stronie obrazek). Zasadniczo obwody konwertowały indeksy wierszy / kolumn na adresy pamięci z odwzorowaniem podobnym do:
//Using column values in the range 30 to 1, wrapping after 63... address = (column & 32) ? (row << 5) | (column & 31) : ((28 | (column & 3)) << 5) | row);
ale zaimplementowane w obwodach, a nie w kodzie. Pozwoliło to na obliczenie adresów ekranów przy użyciu pary liczników i układu do wybrania jednej z dwóch permutacji bitów tych liczników. Sprzęt wymagany do zwiększenia adresu pamięci o 36 dla każdego wiersza zamiast o 32 byłby bardziej skomplikowany przez porównanie.
Komentarze
- @Kevin: Podany wynik jest maksymalnym możliwym w Pac Manie, ponieważ błąd pokazany powyżej (w kodzie C, który funkcjonalnie podobny do kodu Z80 w samej grze) zapisuje bezużyteczne śmieci na dużej części ekranu, nadpisując kropki, które gracz ma zjeść. Druga odpowiedź określa, co w widoczny sposób ogranicza wynik, ale powyższe wskazuje (dla osób zorientowanych technicznie czytelnicy) dlaczego tak się dzieje (i sugeruje, że ograniczenie 256 poziomów prawdopodobnie nie było ' celowe, ale zamiast tego występuje z powodu przeoczenia).
- Obie odpowiedzi wyjątkowo dobrze uzupełniają pytanie.
100000000
binarnie) jest przechowywana w pamięci, która została przydzielona tylko na 8 bitów. Pierwszy jest więc zapisywane w pamięci, która jest przypisana do czegoś innego, co zasadniczo psuje całą grę.