Set_Video_Mode ( )
Att ställa om skärmen till rätt upplösning är det första en spelprogrammerare måste
lära sig. Det finns en mängd olika skärmupplösningar att välja på. Vi kommer enbart
att använda oss av en skärmupplösning på 320x200 punkter (Mode 13h).
Att ställa in olika lägen gör vi enklast genom att anropa ett BIOS avbrott,
nämligen avbrott 10h. Det enda som krävs är denna enkla funktion:
void Set_Video_Mode(int mode)
{
union REGS inregs,outregs;
inregs.h.ah = 0;
inregs.h.al = (unsigned char)mode;
int86(0x10, &inregs, &outregs);
}
Om du nu vill ställa in Mode 13h, anropar du funktionen på följande sätt:
Set_Video_Mode(0x013);
Enkelt, va?
Men hur gör jag om jag vill ändra tillbaka till textläget? Jo, du gör precis
som när du ställde in grafikläget, men med den skillnaden att du nu anger 0x03 som
parameter istället för 0x13.
Nedan följer en lista på några intressanta skärmlägen du kan ställa in med
hjälp av vår funktion. Observera att alla lägen anges hexadecimalt!
| Läge |
Upplösning |
Färger |
| 1 |
40x25 (text) |
16 |
| 3 |
80x25 (text) |
16 |
| 4 |
320x200 |
4 |
| 6 |
640x200 |
2 |
| D |
320x200 |
16 |
| E |
640x200 |
16 |
| 10 |
640x350 |
16 |
| 11 |
640x480 |
2 |
| 12 |
640x480 |
16 |
| 13 |
320x200 |
256 |
Som du ser är det endast Mode 13h som använder 256 färger. Eftersom 256 färger
är ett absolut minimum när det gäller spel, så är vi tvungna att använda det.
Det finns lägen med högre upplösning än 320x200, och samtidigt använder 256 färger, men
dessa är betydligt svårare både att ställa in och programmera i.
Sätt dig nu och exprimentera med de olika skärmlägena tills du
kan dem utan och innan. Sedan är det dags att gå vidare med nästa
funktion. Lycka till!
|