· Text 740 · w6 · inlagg
Jag satt häromdan och slog några tankar om spel till ABC800. Undras
hur man skall gå tillväga om man vill göra ett spel typ DEFENDER tänkte
jag. Två problem finns: Det ena är, om man nu endast vill scroll bergsytan
och inget annat. Det andra är, hur man skall klara att man kanske både
vill trycka på 'gasen' och styra skeppet neråt. Någon bra lösning på
det första problemet har jag inte, men däremot på det andra tycker jag.
Arkadspel bör vara skrivna i m-kod och det blir nödvändigt om man skall
använda sig av den metod som jag kom på. Metoden fungerar sålunda:
Först sätts tangentbordet i upp/ned-mod vilket innebär att ett interupt
sker när en tangent trycks ner och ett när tangentn sedan släpps.
Vad du sedan har är en egen interupt rutin som har till princip att sätta
en flagga för att indikera tex NER när man trycker ner tex SHIFT. När
sedan SHIFT släpps får man en annan kod och då resetas NER-flaggan. Detta
innebär sedan att du i ditt spel kollar om NER-flaggan är satt och flyttar
gubben neråt.
Om man nu håller SHIFT nere och sedan trycker på tex SPACE sätts en
annan flagga som indikerar tex FIRE. Skeppet åker fortfarande neråt och
du skjuter. Du kan släppa SPACE (FIRE) och du slutar att skjuta, men
har du inte släppt SHIFT så åker du även nu neråt. När du nu tycker att
du kommit tillräckligt långt ner släpper du SHIFT och NER-flaggan noll-
ställs.
En metod att snabbt sätta och nollställa flaggor är att använde en
tabell och utkoden ANDas till styrbyten (CONTROL), nedan följer m-kods
snutt för detta.
SPELSTYR PUSH AF
PUSH DE
PUSH HL
;
IN A,(34)
LD E,A
LD D,0
LD HL,STYRTAB
ADD HL,DE
LD A,(CONTROL)
AND (HL)
LD (CONTROL),A
POP HL
POP DE
POP AF
;
RETI
Tyvärr så har jag inte speciellt mycket tid för tillfället att knappa
ihop ett litet exempel, det är inte den allra tydligaste förklaringen.
Men om redaktionen har ont om artiklar kan de ta med denna, men OBS att
jag vill först bli informerad om detta så att jag kan snygga till den
och rätta den. Men annars går det bra. Bör kanske tillfoga en liten förklar
ing om hur man lägger upp tabellen.
Ps. Reserverat för fel.
Pps. Iofs kan resten av programmet vara skrivet i BASIC. Det som då måste
göras är att CONTROL-byten ligger i en varibel eller att adressen är
känd. En flagga för att indikera slut ?måste? även finnas så att man
kan sätta tillbaka T-bordet i normal-mod.
mvh Patric
Ppps. Det är inte _speciellt_ avancerat men kan ändå vara informativt.