sprites in basic programmeren C64

Alles over C64/C128 software
-
Everything about C64/C128 software
amiga4001
Junior
Berichten: 64
Lid geworden op: za okt 16, 2004 23:31

sprites in basic programmeren C64

Berichtdoor amiga4001 » do jan 04, 2018 23:11

Eens zien ik wil sprites maken om een simpel vang spel te maken in basic.
Nu zit ik te lezen in het handboek van de C64 maar is mij niet helemaal duidelijk.
Wat bepaald vanaf welk geheugenadres de data voor de sprite staan?
Ik zie als voorbeeld een poke 2042,13 staan waarin 2042 dus spriteplaats 2 is maar waarom die waarde 13?
Of mischien een link waarin het wat handiger word uiteengezet?
A4000PPC/060 voodoo

dmantione
Junior
Berichten: 69
Lid geworden op: za okt 04, 2014 10:01
Locatie: Purmerend

Re: sprites in basic programmeren C64

Berichtdoor dmantione » do jan 04, 2018 23:53

De VIC-II gebruikt de laatste 8 bytes van het schermgeheugen voor de spitepointers. Normaalgesproken begint het schermgeheugen op adres 1024 ($0400), het schermgeheugen is 1KB groot, dus eindigt op adres 2047 ($07FF). In dat geval zijn de laatste 8 bytes dus 2040 t/m 2047. Adres 2042 is dus de pointer voor sprite 2. Zou je het schermgeheugen verplaatsen, dan gaan de adressen van de spritepointers mee.

De waarde die je erin programmeert wordt maal 64 gedaan en dan wordt het startadres van de VIC-II erbij opgeteld. Standaard is het startadres 0. Een waarde 13 geeft dus 0 + 13*64 = 832. Je geeft dus aan dat de VIC-II sprite 2 moet zoeken op geheugenadres 832 ($0340). Dat is aan het begin van de cassettebuffer, een stukje geheugen dat niet in gebruik is als de datasette niet in gebruik is en daarom geschikt om sprite te plaatsen. Het geheugen van $1000 tot $1FFF kan je niet voor sprites gebruiken, omdat de VIC-II daar het karakter-ROM ziet. Als je in BASIC programmeert geen probleem, want dat geheugen is dan in gebruik voor je BASIC-programma.

amiga4001
Junior
Berichten: 64
Lid geworden op: za okt 16, 2004 23:31

Re: sprites in basic programmeren C64

Berichtdoor amiga4001 » vr jan 05, 2018 8:54

Alvast bedankt voor de reactie.
Het is mij nog steeds nu niet duideljk wat ervoor zorgt dat de data regels worden gezet op dat adres wat die poke aangeeft.
A4000PPC/060 voodoo

dmantione
Junior
Berichten: 69
Lid geworden op: za okt 04, 2014 10:01
Locatie: Purmerend

Re: sprites in basic programmeren C64

Berichtdoor dmantione » vr jan 05, 2018 16:57

Nou, als ik het handboek erbij pak dan denk ik dat het om het voorbeeld met de ballon gaat. Regel 20 daarvan luidt:

20 FOR N=0 TO 62 : READ Q : POKE 832+N , Q : NEXT

Regel 20 is dan het antwoord op je vraag: De DATA-regels worden hier gelezen en de inhoud daarvan wordt naar geheugenlocatie 832 en verder gekopieerd.

amiga4001
Junior
Berichten: 64
Lid geworden op: za okt 16, 2004 23:31

Re: sprites in basic programmeren C64

Berichtdoor amiga4001 » za jan 06, 2018 22:24

Ik begin er weer wat in te komen.
Ok nu snap ik de spriteopbouw weer en was aan het proberen met cursurtoetsen de sprite te laten bewegen.
Dus met deze: get a$ :if a$=chr$(145) then a=a+1
En die a zit dan aan de y positie van de sprite en dan natuurljk in een goto lus.
Maar als ik dat zo 4 keer doe met 4 verschillende variabelen voor x,y richting dan word mijn sprite wel erg langzaam.
Op vice dan weet het niet op een echte C64.
A4000PPC/060 voodoo

dmantione
Junior
Berichten: 69
Lid geworden op: za okt 04, 2014 10:01
Locatie: Purmerend

Re: sprites in basic programmeren C64

Berichtdoor dmantione » zo jan 07, 2018 23:16

Ja, rekenkracht daar blinkt de C64 niet in uit, je zult snel over willen stappen naar wat snellers, in praktijk machinetaal. Je kunt het wel iets verbeteren door er een soort formule van te maken in plaats van 4 keer een if then te doen.

Terug naar “Software”

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers en 2 gasten