Volgens de Wikipedia-pagina voor Pac-Man is de hoogst mogelijke score 3333360 punten. Het wordt een perfect spel genoemd en het is al door 3 verschillende mensen behaald.
Wat ik wil weten is: WAAROM is het precies 3333360 punten? Het moet een technische beperking zijn, maar dit aantal slaat naar mijn mening niet op.
Ik weet dat het spel 255 niveaus heeft. 255 is 11111111
in binair en niveau 256 (dat mystiek lijkt te bestaan) brengt het 8-bits cijfer naar een overloop, die eindigt in een crash van het spel.
Maar 3333360 lijkt zo willekeurig.
Reacties
Antwoord
Het Pacman Museum heeft een artikel over 3.333.360 Punten. En hier “sa video van iemand die level 255 en 256 doet , met belangrijke informatie over level 256.
Level 1 tot 255
Stippen eten : er zijn 240 gewone stippen per level, elk 10 punten waard, goed voor 2400 punten per level . Bovendien levert het eten van de vier energizer-stippen, elk 50 punten waard, nog eens 200 punten op.
⇒ 255 × 2600 = 663000
“fruit” eten : er is één eetbaar object per niveau dat slechts voor een bepaald hoeveelheid tijd, twee keer per niveau. Afhankelijk van het soort fruit, dat weer afhangt van het niveau dat je speelt, krijg je een ander aantal punten. In totaal krijg je
⇒ 2 × (100 + 300 + 2 × 500 + 2 × 700 + 2 × 1000 + 2 × 2000 + 2 × 3000 + 243 × 5000) = 2459600
Geesten eten : Een geest eten in dezelfde energizer-periode levert 200 punten op, en het dubbele van dat voor elke extra geest die je eet (respectievelijk 400, 800 en 1600 voor de 2e tot en met 4e geest).Je kunt dit 4 keer per level doen, maar alleen tot level 16, en op level 18, aangezien de spoken niet knipperen in level 17 en 19+ ⇒ 4 × 3000 × 17 = 204000
Deze toevoegen getallen levert 3326600 op, alleen 6760 punten kort van perfect.
Level 256
Dit oneven aantal kan worden verkregen in het glitched-out level 256.
Zichtbare punten : Zoals u kunt zien, ontbreekt iets meer dan de helft van het scherm, wat betekent dat u slechts 112 normale en 2 energizer-punten kunt krijgen.
⇒ 1220
Enkele vrucht : Vervallen naar de glitc hed-scherm, kunt u de sleutel (het “fruit”) slechts één keer krijgen
⇒ 5000
Glitched Dots : Er zijn 9 normale punten in het glitched-out gebied die elke keer dat je sterft weer verschijnen. Bij 5 extra levens kun je ze 6 keer krijgen
⇒ 6 × 90 = 540
Grand Totaal
(663000 + 1220 + 540 (dots)) + (2459600 + 5000 (fruit)) + (204000 (ghosts)) = 3333360
Reacties
- Ik begon het antwoord te typen, in de veronderstelling dat de cijfers prima zouden kloppen en dat deden ze niet ‘ t. Het kostte nogal wat tijd om erachter te komen hoe vreemd de punten zijn in niveau 256.
- 256 is een behoorlijk belangrijk getal.
- @Howdy_McGee Vooral op een 8-bits processor …
- Is de storing op het 256ste niveau met opzet – of is dat iets dat een echte storing is?
- @ RPi_Awesomeness het ‘ is een feitelijke storing, die te maken heeft met getallen die in binair getal omslaan. 256 is 100000000 in binair, maar het getal ondersteunt niet meer dan 8 binaire cijfers, waardoor de 1 wordt afgebroken tot 00000000, wat 0 is. Voor sommige niet echt gerelateerde problemen , dit veroorzaakt de glitching, in plaats van dat u weer op niveau 0 komt.
Answer
De score is beperkt omdat er een storing optreedt op niveau 256 die de helft van het scherm overschrijft met afval. Het spel laat een speler niet van het ene bord naar het andere gaan zonder 244 punten en energizers te eten, maar de storing overschrijft veel van de punten; hierdoor kan de speler niet in staat zijn om 244 punten en energizers te eten, en dus niet in staat om de niveau. Als je je afvraagt waarom de storing optreedt, is de machinecode in Pac-Man om de vruchten te tekenen vergelijkbaar met de C-code:
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);
Merk op dat Pac Man, in tegenstelling tot veel machines, een nogal merkwaardige lay-out van het schermgeheugen gebruikt, waarbij opeenvolgende bytes horizontaal aan de boven- en onderkant van het scherm en verticaal in het midden worden geplaatst. Dit is waarschijnlijk gedaan om ervoor te zorgen dat bij het tekenen van het hoofdgedeelte van het scherm, de geheugenadressen worden verhoogd met een macht van twee om de acht scanlijnen (merk op dat de bovenkant van de monitor zich aan de rechterkant van de afbeelding). In wezen hebben schakelingen rij- / kolomindices geconverteerd naar geheugenadressen met een afbeelding die lijkt op:
//Using column values in the range 30 to 1, wrapping after 63... address = (column & 32) ? (row << 5) | (column & 31) : ((28 | (column & 3)) << 5) | row);
maar geïmplementeerd in schakelingen in plaats van code. Hierdoor konden schermadressen worden berekend door een paar tellers en een schakeling te gebruiken om een van de twee permutaties van die tellersbits te selecteren. De hardware die nodig is om het geheugenadres met 36 te laten toenemen voor elke rij in plaats van 32 zou gecompliceerder zijn geweest door vergelijking.
Reacties
- @Kevin: De vermelde score is de maximaal mogelijke score in Pac Man omdat de bug hierboven getoond (in C-code die functioneel vergelijkbaar met de Z80-code in het spel zelf) schrijft nutteloze rommel over een groot deel van het scherm, waarbij de punten worden overschreven die de speler zou moeten eten. Het andere antwoord geeft aan wat er zichtbaar gebeurt om de score te beperken, maar het bovenstaande geeft aan (voor technisch ingestelde lezers) waarom het gebeurt (en suggereert dat de beperking van 256 niveaus waarschijnlijk niet ‘ opzettelijk was, maar in plaats daarvan vanwege een vergissing).
- Beide antwoorden vullen de vraag buitengewoon goed aan.
100000000
in binair getal) wordt opgeslagen in geheugen dat slechts 8 bits mag bevatten. De eerste wordt daarom in het geheugen geschreven dat aan iets anders is toegewezen, wat in wezen het hele spel bederft.