Maniac Mansion - technische Details?

Es gibt 65 Antworten in diesem Thema, welches 14.368 mal aufgerufen wurde. Der letzte Beitrag (14. April 2020 um 10:00) ist von enthusi.

  • Wie ich schon schrieb hat das zur Folge dass ein nennenswerter (immer groesser werdender) Anteil der Sprites das jeweilige Ende des darueberliegenden Sprites enthaelt.

    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen.

  • Ich weiss nicht, ob der Link schon gepostet wurde, aber hier hat Ron Gilbert selbst nochmal erklärt, wie die Sprites dargestellt werden:
    Bitte melde dich an, um diesen Link zu sehen.

  • Nee nee, das ist schon immer nur 1 Sprite pro Spritesäule.


    Scheint so.

    Außerdem hast Du bei Deinem Argument übersehen, dass auch der Mauszeiger ein Sprite ist.


    Stimmt, der ist wohl immer Sprite Bitte melde dich an, um diesen Link zu sehen., Sprite #0-2(3) die Spieler.

    Das hatte mich irgendwie verwirrt:

    Dabei ueberlagern sich die Sprites vertikal deutlich, damit das Timing nicht so kritisch ist


    Kann ein Sprite sich selbst überlagern? Oder wie...

    Bitte melde dich an, um diesen Link zu sehen. Bitte melde dich an, um diesen Link zu sehen. Bitte melde dich an, um diesen Link zu sehen.

    Ex-TLI (The Level 99 Industries) & Ex-TNP (The New Patriots) & Ex-TEA (The East Agents) & ?

  • Kann ein Sprite sich selbst überlagern? Oder wie...

    Nein. Nicht das Sprite selbst.(technisch gesehen).
    Aber der Inhalt (die Daten).
    D.h. wenn das Sprite 2mal direkt untereinander ist, ist es egal, ob du die Spritepointer eine Zeile vorher oder später umschaltest, da z.b. die letzte Datenzeile in beiden Spritedatas des 1. und 2. Sprites gleich ist.
    Das hat dann aber natürlich zur Folge, dass du beim Umschalten vom 2. auf das 3. Sprite schon mindestens in der vorletzten Zeile Umschalten muss (da ja die letzte Zeile des 2. Sprites schon mit den letzten Datenzeile des 1. Sprites übereinstimmt.

    Und jetzt nicht denken, dass man im Sprite 2 gleiche Datenzeilen untereinander hat. Denn dann hast du es noch nicht verstanden ;)

  • So sieht es im RAM aus :wink:
    Wie man sieht ist ist MM da grosszuegiger als 1 Zeile.

  • Wie man sieht ist ist MM da grosszuegiger als 1 Zeile.

    Eigentlich kann man da an Razors Mund ganz gut sehen, daß es genau eine Zeile ist, die sich die Sprites teilen.
    Ich nehme an, daß das so aufgeteilt ist, daß die Badlines da nicht in die Quere kommen, damit genug Zeit bleibt, um alle 6 Spritesäulen rechtzeitig umzuschalten.

  • Ist echt ne dufte Idee, aber "Spritesäule" höre ich zum ersten Mal, ist der Begrifff "Multiplexing" nicht ausreichend?

    "Spritesäule" ist eine von vielen Untermengen von "gemultiplexten Sprites" :)

  • So, wäre das alles nicht mal was für die Return? Zu Maniac Mansion kommen immer einige Fragen zur Technik. Sowas in der Rubrik "Proficorner" wie bei der 64er. Vielleicht unter dem Label "Secret´s of Maniac Mansion". Nicht Großes. Jedesmal ein kleines Secret mit 2 Bildern (z.B. wie in Post Nr. 3) und Erläuterung auf einer halben Seite.

    64er-Zeitschriften gesucht:
    1984: 9 in gutem Zustand

    Ansonsten 64er 1984-1994 sind komplett wieder da. :D

  • Ich finde, das ist schon eine bemerkenswerte Leistung, was SCUMM da vorgelegt hat. Auf die Idee, die Spritezeiger einfach mitten im Sprite umzuschalten muß man auch erstmal kommen. Macht das überhaupt irgend ein anderes Spiel aus den 80'ern oder 90'ern auf diese Weise? Flackernde Sprites hat man ja schon in vielen Spielen zu Genüge gesehen.

  • Aber der Inhalt (die Daten).
    D.h. wenn das Sprite 2mal direkt untereinander ist, ist es egal, ob du die Spritepointer eine Zeile vorher oder später umschaltest, da z.b. die letzte Datenzeile in beiden Spritedatas des 1. und 2. Sprites gleich ist.

    So sieht es im RAM aus

    Ich schmeiß' mich weg..., ist das herrlich 'bescheuert' gelöst 8o .

    Wie man sieht ist ist MM da grosszuegiger als 1 Zeile.

    Ich sehe (im Speicher) zwischen 4 und 6 Zeilen :search: . Warum variiert das?

    Für die, die es bis jetzt (neben mir) auch nicht verstanden hatten:

    Der Sprite-Pointer wird noch während das Sprite Bitte melde dich an, um diesen Link zu sehen. z. B. an Position Bitte melde dich an, um diesen Link zu sehen. gezeichnet wird in einer der unteren 4-6 Sprite-Zeilen (vermutlich bei ca. Zeile 2/3 davon) schon auf das nächste Sprite umgeschaltet und malt aus diesem Sprite (unmerklich) weiter und zeichnet dann an der nächsten Position ebenfalls aus diesem Sprite-Pointer, aber von 'vorne/oben' an (usw.).

    Beispiel:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Während noch im Sprite davor die Haare gemalt werden, wird schon auf dieses Sprite umgeschaltet und der VIC malt die (gleichen) Haar-Pixel-Bytes aus dem Sprite Bitte melde dich an, um diesen Link zu sehen. weiter und macht an der nächsten Position darunter mit dem oberen Teil weiter usw. usf..

    Die Säulen hatte ich mir jetzt auch spaßeshalber mal gebaut:

    Bitte melde dich an, um diesen Anhang zu sehen.

    :applaus: an die Macher.

    Bitte melde dich an, um diesen Link zu sehen. Bitte melde dich an, um diesen Link zu sehen. Bitte melde dich an, um diesen Link zu sehen.

    Ex-TLI (The Level 99 Industries) & Ex-TNP (The New Patriots) & Ex-TEA (The East Agents) & ?

  • Ich sehe (im Speicher) zwischen 4 und 6 Zeilen . Warum variiert das?

    Du meinst sicher den Abstand zwischen Umschaltpunkt und Spriteende. Gemeinsam haben die Sprites immer genau eine Zeile. Daß hier im Beispiel die letzten 4 Zeilen zum "neuen" Sprite gehören und beim nächsten Sprite aber dann die letzten 5 Zeilen usw., ist eigentlich logisch. Das ergibt sich so, wenn man alle 20 Zeilen die Spritepointer während der jeweils gemeinsamen Zeile umschaltet, ein Sprite aber eine Höhe von 21 Zeilen hat. Das Praktische dabei ist auch, daß man so nie einer Badline in die Quere kommt und das Timing würde laut Ron Gilbert sogar für 6 Spritesäulen ausreichen.

  • Gemeinsam haben die Sprites immer genau eine Zeile.

    Nein, guck' dir die Sprites doch mal an...! (oder wir reden aneinander vorbei...) :gruebel

    Bitte melde dich an, um diesen Link zu sehen. Bitte melde dich an, um diesen Link zu sehen. Bitte melde dich an, um diesen Link zu sehen.

    Ex-TLI (The Level 99 Industries) & Ex-TNP (The New Patriots) & Ex-TEA (The East Agents) & ?

  • Du musst ja für jedes Sprite in Y-Richtung immer etwas früher als beim vorigen Mal umschalten, da sonst der untere Teil mit dem Overlap zum vorigen Sprite sichtbar würde. Daher muss/kann der Overlap in jedem Sprite in Y-Richtung etwas größer werden (theoretisch könnte der unterste Teil dann auch beliebig aussehen, da er nie sichtbar wird). Meinst Du das?

    ────────────────────────────────────────────────────────────
    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.
    ────────────────────────────────────────────────────────────

  • theoretisch könnte der unterste Teil dann auch beliebig aussehen, da er nie sichtbar wird

    Doch, der untere Teil wird schon angezeigt. Er wird aber zuerst dargestellt. Danach geht es bei unverändertem Spritepointer im nächsten Sprite weiter, wo dann der obere Teil zu sehen ist. Und im Übergangsbereich ist genau eine Zeile mit der nächsten Spriteadresse identisch. An der Stelle wird der Spritepointer verändert. Danach kommen wieder neue Spritedaten. Im AR-Screenshot oben ist Razors Mund diese gemeinsame Zeile.

    Und wenn wir von einer gemeinsamen Zeile sprechen, sind natürlich die Spritedaten damit gemeint, wie sie im RAM stehen. Im Spiel werden natürlich keine Überlappungen angezeigt.

  • Naja, das eine ist die Y-Position die ist ja fix und mit Ueberlapp meinte ich natuerlich 'Bilddaten'.
    N Zeilen Sprite x am Ende sind identisch mit den N Zeilen von Sprite x+1 am Ende.
    Und es sind 4 Saeulen, nicht 6 :)

    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen.

  • Doch, der untere Teil wird schon angezeigt.


    Ich meinte mit "unterster Teil" den, der dann unter der Zeile kommt, in der zwischen oberem und unterem Spritepointer umgeschaltet wird. Ach Gott, das ist aber schwierig zu beschreiben... ^^

    Ich versuche mal eine einfache Skizze:

    Spritedaten 1 für Kopf im Speicher (der Einfachheit halber mal 4x4 Sprites):

    KKKK
    KKKK
    KKKK
    KKKK

    Spritedaten 2 für Bauch im Speicher:

    BBBB
    BBBB
    BBBB
    KKKK

    Spritedaten 3 für Füße im Speicher:

    FFFF
    FFFF
    BBBB
    BBBB <- es ist eigentlich egal, was in dieser Zeile ist EDIT: nein, ist es nicht...

    Spritepointer pro Rasterzeile:


    Glasklar, oder? :D

    ────────────────────────────────────────────────────────────
    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.
    ────────────────────────────────────────────────────────────

    Einmal editiert, zuletzt von Claus (3. Juni 2016 um 12:45)

  • Ich hab mal eine Animation erstellt, die das Prinzip verdeutlicht. Ich hoffe, daß ist so verständlich.
    Bitte melde dich an, um diesen Anhang zu sehen.

  • Ich hab mal eine Animation erstellt, die das Prinzip verdeutlicht. Ich hoffe, daß ist so verständlich.
    Bitte melde dich an, um diesen Anhang zu sehen.

    DANK-O-MAT!!! :ilikeit:
    Jetzt haben es auch Doofesten - wie ich - kapiert.... :schande:

    ___________________________________________________________
    Meine Kreationen: Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen.
    | Bitte melde dich an, um diesen Link zu sehen.
    Avatar: Copyright 2017 by Saiki

  • Super, viel besser als meine verzweifelten Erklärungsversuche! Ja, und damit wird auch klar, dass ich Quatsch rede und natürlich auch der unterste Teil relevant ist (hüstel!). :/^^

    ────────────────────────────────────────────────────────────
    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.
    ────────────────────────────────────────────────────────────

  • Zumindest Turrican3 macht das aehnlich btw, aber MM ist ja doch ne ganze Ecke aelter :wink:

    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen.