Der Kernel - Software-InterruptsDie Chains des KernelDer MAIN FIRMWARE JUMPBLOCK: KERNEL Die FAST TICKER Datenspeicherung und Datenstrukturen: ChainsCHAIN wird mit jedem Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupt, den Speicher und Peripherie: Die ULA Zum Einhängen eines Datenblocks in der 'fast ticker Datenspeicherung und Datenstrukturen: Chainschain' kann man den Vektor &KERNEL: BCE3: KL ADD FAST TICKERBCE3 KL ADD FAST TICKER benutzen. In HL muss man dabei einen Zeiger auf den Datenblock, den 'fast ticker Die Speicherkonfiguration im Schneider CPC: Blockblock' übergeben. Dieser ist wie folgt aufgebaut: Aufbau des 'fast ticker Die Speicherkonfiguration im Schneider CPC: Blockblocks': -------------------------------- Datentypen: Bytes Eine weitere Trees: ListenListe ist die FRAME FLYBACK Datenspeicherung und Datenstrukturen: ChainsCHAIN, die mit jedem Strahl-Hochlauf auf dem Monitor dran ist. Das ist, je nach Verkaufsland, 50 oder 60 mal in der Sekunde der Fall. In Europa, wo man überall mit einer Netzfrequenz von 50 Hz arbeitet, schreiben die verschiedenen Fernseh-Normen (z.LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL Diese Der Kernel - Software-Interrupts: Interrupt-QuellenInterrupt-Quelle ist für alle Aktionen auf dem Bildschirm gedacht, die, würden sie sichbar, ein Flackern oder andere Stoerungen verursachen würden. So ist in dieser Trees: ListenListe standardmäßig das Farben-Blinken des MAIN FIRMWARE JUMPBLOCK: SCREEN PACK Speziell in Spielen mit schnell bewegter Sprite- (oder Shape-) Grafik werden die Figuren immer während der Austastluecke bewegt. Ein gängiger Algorithmus für Sprites ist nämlich: Sprite platzieren: Grafik-Information des dadurch verdeckten Bild-Ausschnittes retten, dann Sprite in den Bildschirm malen. Sprite entfernen: Gerettete Grafik-Information in den Bildschirm zurück kopieren. Sprite bewegen: Sprite entfernen. Koordinaten verschieben. Sprite platzieren. Um ein Sprite zu bewegen, wird kurzzeitig der vedeckte Hintergrund im Video-RAM restauriert. Der soll natürlich nicht zu sehen sein, weil sonst die Figur flimmern würde. Deshalb werden diese Manipulationen möglichst vorgenommen, wenn kein Bild dargestellt wird, was in der Austastlücke der Fall ist. (Es gibt zwar auch intelligentere Algorithmen, bei denen es nicht zu Flimmer-Effekten kommt, die sind den meisten Spiele-Programmierern aber scheinbar zu kompliziert.) Um einen Die Speicherkonfiguration im Schneider CPC: BlockBlock einzuhängen, kann man den Vektor &KERNEL: BCDA: KL ADD FRAME FLYBCDA KL ADD FRAME FLY benutzen. Der 'frame flyback Die Speicherkonfiguration im Schneider CPC: Blockblock' ist dabei genauso aufgebaut, wie der 'fast ticker Die Speicherkonfiguration im Schneider CPC: Blockblock': Aufbau des 'frame flyback Die Speicherkonfiguration im Schneider CPC: Blockblocks': ---------------------------------- Datentypen: Bytes Am komfortabelsten ist die TICKER Datenspeicherung und Datenstrukturen: ChainsCHAIN, die allerdings nur 50 mal pro Sekunde abgearbeitet wird. Während in den anderen Trees: ListenListen ohne zusätzlichen Aufwand nur solche Ereignisse programmiert werden können, die immer und bis zum Sankt Nimmerleinstag immer wieder 'angestoßen' werden ('Der Key Manager: Repeatrepeater'), kann man bei der TICKER Datenspeicherung und Datenstrukturen: ChainsCHAIN auch sogenannte 'one shots', also einmalige Ereignisse definieren. Einleitung: BASIC Über den Vektor &KERNEL: BCE9: KL ADD TICKERBCE9 KL ADD TICKER kann man einen 'ticker Die Speicherkonfiguration im Schneider CPC: Blockblock' in die 'ticker Datenspeicherung und Datenstrukturen: Chainschain' einhängen. Dieser Die Speicherkonfiguration im Schneider CPC: BlockBlock ist etwas anders aufgebaut, als die beiden anderen. Beim Aufruf des Vektors muss man im DE- und BC-Register die gewünschten Werte für den Count Down (Start-Verzögerung) und Reload Count (Nachladewert für 'Der Key Manager: Repeatrepeater') übergeben: Aufbau eines 'ticker Die Speicherkonfiguration im Schneider CPC: Blockblocks': ----------------------------- Datentypen: Bytes |