varför gamla spel kör alldeles för fort på moderna datorer?

Om du någonsin försökt att få en vintage dataspel igång på ett modernt system, har du förmodligen varit chockad över hur snabbt spelet sprang. Varför gamla spel slut på kontroll på modern hårdvara?

Tidigare idag visade vi hur du kör äldre program på moderna datorer, dagens frågestund är en fin komplimang som gräver i varför vissa äldre program (specifikt spel) aldrig verkar fungera rätt när du försöker köra dem på modern hårdvara.

Dagens Frågor och svar session kommer till oss med tillstånd av Superuser-en uppdelning av Stack Exchange, en community-driven gruppering av Q & A webbsidor.

Superuser läsare TreyK vill veta varför gamla dataspel köra galen snabbt på ny hårdvara

Jag har några gamla program som jag drog ut en tidig 90-eran Windows-dator och försökte att köra dem på en relativt modern dator. Intressant nog, sprang de på en blixtrande snabb hastighet – nej, inte de 60 bildrutor per sekund typ av snabb, snarare oh-my-god-the-tecken-is-walking-på-speed-of-sound slags snabb. Jag skulle trycka på en piltangent och tecknets spriten skulle zip över skärmen mycket snabbare än normalt. Tids progression i spelet hände mycket snabbare än det borde. Det finns även program som gjorts för att sakta ner din CPU så att dessa spel är faktiskt spelas.

Jag har hört att detta är relaterat till spelet beroende på CPU-cykler, eller något liknande. Mina frågor är

Så vad är historien? Varför exakt göra sprites i gamla spel flamma över skärmen så fort spelet blir ospelbar?

Superuser contributor JourneymanGeek bryter ner

Jag tror att de antas systemklockan skulle köra på en viss hastighet, och bunden i sin interna timer till det klockfrekvensen. De flesta av dessa spel gick förmodligen på DOS, och var verkliga läge (med komplett, direkt tillgång hårdvara) och antog att du körde en iirc 4,77 MHz systembuss för persondatorer och vad standard processor som modell körde för andra system som Amiga.

De tog också smarta genvägar baserade på dessa antaganden bland annat spara en liten bit av resurser genom att inte skriva interna tidsslingor i programmet. De tog också upp så mycket processorkraft som de kunde – som var en hygglig uppfattning i dagarna av långsam, ofta passivt kylda chips!

Initialt ett sätt att komma runt olika processorhastighet var den gamla goda Turbo-knappen (som saktade systemet ner). Moderna applikationer är i skyddat läge och OS tenderar att hantera resurser – de skulle inte tillåta en DOS-program (som körs i NTVDM på en 32-bitarssystem i alla fall) att använda upp alla processorn i många fall. I korthet har operativsystem blivit smartare, som har API: er.

Kraftigt bygger upp den här guiden på Oldskool PC där logik och minne misslyckades mig – det är en stor läsa, och antagligen går mer på djupet i “varför”.

Saker som CPUkiller förbruka så mycket resurser som möjligt för att “bromsa” ner systemet, vilket är ineffektivt. Du skulle vara bättre att använda DOSBox att hantera klockfrekvens din ansökan ser.

Om du är nyfiken på hur den faktiska koden genomfördes i början av datorspel (och varför de anpassar sig så dåligt på moderna system utan att sandboxed i någon sorts emuleringsprogram), skulle vi också föreslå checkar ut denna långa men intressant uppdelning av process i en annan Superuser svar.

Har något att tillägga till förklaringen? Ljud av i kommentarerna. Vill du läsa fler svar från andra tekniskt kunniga Stack Exchange-användare? Kolla in hela diskussionstråd här.

Jag har en gammal kopia av Joust. Om du kommer ihåg, måste du trycka på knappen för att flaxa fågelns vingar att flyga. Det finns inget sätt att trycka på knappen tillräckligt snabbt för att stanna från marken, och motståndarna förflyttas med nästan ljudets hastighet. Spelet var helt omöjligt att spela, och verkligen lustiga att prova.

Japp .. det är obegränsad MHz-mardröm.

Du måste förstå, tillbaka i början, var datorns dyra. få en extra 8m RAM enbart skulle prolly bysten din rec budget för ett par månader. Så kort sagt, devs var mycket, mycket, mycket tveksam till att berätta för sina kunder du behöver uppgradera “, som skulle ganska mycket garanterar ingen spelade ditt spel.

Så spel har optimerats ut wazoo, hastighet trick, genvägar, etc. Allt för att pressa bara lite mer av varje cykel. naturligt DOS-spel trodde de var det enda program igång och så gjorde en punkt att gripa tag i alla processorcykler tillgängliga.

Nu många av dessa brottslingar byggdes runt 486 processorer (som avged max liknande 80MHz), och det tidiga Pentium 1 processorer som toppade ut på liknande 166MHz att sätta det i moderna mätningar, var detta en rad 0.08- 0.17 GHz. Jag vann, inte ens nämna 386 maskiner här.

Så tänk på det, var dessa spel utformade för att fungera optimalt vid 166MHz på en enda core CPU. Det är ett roligt skämt egentligen, de trodde aldrig att de någonsin skulle vara en situation där datorer skulle köra så fort.

Nu Vissa DOS-spel inte har detta problem på grund av det sätt som de programmerats, vissa bara används så många cykler som de behövde. Windows-spel har alltid varit beroende av operativsystem för resurser så de hade aldrig detta problem och alla spel går framåt från 95 delas ganska mycket att design.

Dosbox erbjuder vanligtvis det enklaste fix .. så att du kan ställa in hastigheten emulering körs på i farten så att du kan justera den.

166 MHz x1 CPU … 8 MB RAM. Ingen GPUversus: 1898 Mhz x4 CPU … 8 GB RAM. Dubbel GPU.

Ja, jag få din punkt.

allt du behöver är en bra emulator och gamla spel kommer att köras perfekt.

Kul fakta: i VBA (Visual Boy Advance, Game Boy Advance emulator), kan du trycka på mellanslagstangenten för att faktiskt göra spelet snabbare, som nämns i artikeln. Jag älskar när jag kan hoppa över laddningstider och långa berättelser.

Inte alla emulatorer är 100% men. Visserligen DOSBox kommer så nära som möjligt utan att installera en DOS virtuell maskin.

När glaset spricker det verkar nästan ögonblickliga tack vare den hastighet med vilken glassplitter sprickor bildas i glas på en svindlande 3200 meter per sekund.