TrapThem64 - WIP

Es gibt 1.096 Antworten in diesem Thema, welches 187.970 mal aufgerufen wurde. Der letzte Beitrag (25. Februar 2020 um 20:49) ist von Vernunftmensch.

  • Zitat

    Ich weiß das auch, dass das nach Möglichkeit so sauber gemacht wird. Ich mache das ja selbst in Basic so mit Subroutinen. Aber du verstehst das was ich meinte in der Breite / Ganzen 'mal wieder nicht genügend.


    so breit dich gänzlich zu verstehen bin ich noch nicht, korrekt. was aber nichts daran ändert das es tatsächlich relativ leicht ist sein program zu strukturieren, auf dem C64, und in assembler. an mit sicherheit grenzender warscheinlichkeit wird das ganze dann sogar einfacher, da man nicht ständig über obskure fehler stolpert die man sich nicht erklären kann. das von antabaka gesagte ist völlig richtig - und mitunter sogar übliche vorgehensweise bis grundvoraussetzung. alles andere ist schlicht stümperei.

    Zitat

    Bevor das wieder ausartet, sag' ich aber nichts weiter dazu, weil man eh dann wieder nur jedesmal aneinander vorbeiredet


    da vom thema programmieren vmtl sogar vernunftmensch mehr plan hat, ist das warscheinlich die beste lösung, ja.

  • Ich würde wetten, dass ALLE Daten zumindest der ersten 20 Level, mit ALLEN Extrawaffen (?), ALLEN Sounds, ALLER Musik, ALLER Levelspez.-Engine, ALLEN optionalen Daten und der eigentlichen Programmengine in ein File passen. Einzig die Credits mit den Danksagungen an all den Leuten hier, die versuchen zu helfen, müßte wohl von zwei bis drei Diskettenseiten nachgeladen werden...

    Ich bewundere VM, der das immer noch durchzieht und jedem, der immer noch versucht zu helfen!

    :popkorn:

  • Hanau half.

    Zu meinem cbm_load - Bug:

    Ich switche komplett die ZP, jetzt lüft it.


    Und woran lag es nun?

    Yes, I'm the guy responsible for the Bitte melde dich an, um diesen Link zu sehen. cross assembler. And some Bitte melde dich an, um diesen Link zu sehen..

  • $ba ist nicht die einzige kritische Adresse. Gehe ich dann sogar hin, die gesamte ZP mir zu merken und wiederherzustellen, verschwinden die Probleme. Die cbm_load erwartet bestimmte Daten aus der ZP, die es damit auf dem Silbertablett präsentiert bekommt.

    :angel:alien

  • Und woran lag es nun?

    $ba ist nicht die einzige kritische Adresse. Gehe ich dann sogar hin, die gesamte ZP mir zu merken und wiederherzustellen, verschwinden die Probleme. Die cbm_load erwartet bestimmte Daten aus der ZP, die es damit auf dem Silbertablett präsentiert bekommt.

    ...eigentlich zielte meine Frage ja darauf ab, mehr Informationen zu erhalten als bereits in Post #263 enthalten waren. :roll:

    Ist Dir klar, dass die Zeropage zu ungefähr gleichen Teilen dem Basic und dem Kernal "gehört" und nur eine Handvoll Bytes (sieben?) wirklich unbelegt sind?
    Weißt Du, was eine Memory Map ist und wofür man sie braucht?
    Rundheraus gefragt: Wie bist Du eigentlich auf die Idee gekommen, überhaupt in Zeropage-Speicherstellen zu schreiben und dann zu erwarten, dass Kernal-Calls noch funktionieren?

    Ach ja, noch etwas (auch wenn es ignoriert wird): Woher weißt Du eigentlich, dass der Bug jetzt behoben ist? Solange unklar ist, woran genau es gelegen hat, kann das Buffern und Restaurieren den Fehler auch einfach nur seltener gemacht haben. Falls z.B. eine eigene Interrupt-Funktion in der ZP herumschreibt, kann auch jetzt noch - trotz Buffering - die ZP geschreddert werden, nämlich während Kernel-Calls.

    Den Inhalt der Zeropage zwischen Kernalaufrufen irgendwo zu buffern, um die Page komplett selbst benutzen zu können, ist eine valide Programmiertechnik - bevor man sie benutzt, sollte man aber verstanden haben, warum man sie benutzt. Und man sollte z.B. wissen, dass der System-Interrupthandler ebenfalls in die ZP schreibt.

    Yes, I'm the guy responsible for the Bitte melde dich an, um diesen Link zu sehen. cross assembler. And some Bitte melde dich an, um diesen Link zu sehen..

  • Zitat

    Und man sollte z.B. wissen, dass der System-Interrupthandler ebenfalls in die ZP schreibt.

    Durch klare Trennung und meines einzigen Aufrufs cbm_load kann ich sogar sicher sein, daß es keine zufälligen Probleme gibt.

    Der System-Interrupthandler schreibt auch bei ausgeschalteten Kernal in die ZP? o_O


  • Der System-Interrupthandler schreibt auch bei ausgeschalteten Kernal in die ZP? o_O

    Bei ausgeschaltetem Kernal wird wohl kaum der System-Interrupthandler aufgerufen...

    Yes, I'm the guy responsible for the Bitte melde dich an, um diesen Link zu sehen. cross assembler. And some Bitte melde dich an, um diesen Link zu sehen..

  • Zitat

    Bei ausgeschaltetem Kernal wird wohl kaum der System-Interrupthandler aufgerufen...


    oder cbm_load :)

  • AX,au vh

    Gesendet von meinem Nexus 4 mit Tapatalk 2

  • Also, ich möchte es hinkriegen, daß die Datei auslagerungsbin.tmp zusätzlich im entsprechenden Bereich erstellt wird. Was nicht geht ist mein folgender Versuch:

    Code
    MEMORY {
        ZP:   start = $0002,                size = $001A,                      type = rw, define = yes;
        LOWRAM:  start = $07FF,             size = $0ffe-$07ff,                define = yes, fill = yes;
        SIDRAM:  start = $0ffe,             size = $2600-$0ffe,		   define = yes, fill = yes, file = "auslagerungbin.tmp";
        RAM:  start = $2600,		size=  $c800-$2600,	    	   define = yes;
    }

    Angelehnt an:

    Code
    MEMORY {
        ZP:   start = $0002,               size = $001A,               type = rw, define = yes;
        RAM:  start = $07FF,               size = $C801 - OVERLAYSIZE, file = %O, define = yes;
        OVL1: start = $D000 - OVERLAYSIZE, size = OVERLAYSIZE,         file = "overlaydemo.1";
        OVL2: start = $D000 - OVERLAYSIZE, size = OVERLAYSIZE,         file = "overlaydemo.2";
        OVL3: start = $D000 - OVERLAYSIZE, size = OVERLAYSIZE,         file = "overlaydemo.3";
    }

    ...aus dem Beispielprogramm ovldemo.

  • Ich möchte, daß der Compiler meinen SIDRAM, also den Code unter der späteren Musik, sowohl mit in die Programmdatei mitschreibt als auch zusätzlich in die Auslagerungsdatei AUSLAGERUNG.TMP, eine Datei, die dann nicht mein Programm mehr schreiben muß, um von der Musik in die Nichtmusik zurückkehren zu können.

    Wie geht das?

  • C-Compiler aufm C64 ?
    Da hab ich keinen Plan von.
    Da müssen die C-Freaks ran...

    LG, duke

  • Das wirft bei mir aber die Frage auf, warum du so etwas überhaupt brauchst.
    Ich kenn mich mit deiner Speicherverwaltung nicht aus, aber bist du sicher,
    das du dein RAM schon komplett voll hast? Wieso mußt du was auslagern ?
    Aber das war ja nicht deine Frage, also eh egal.
    C-Freaks, Antworten bitte. Es soll hier endlich mal weitergehen...

    LG, -duke

  • So, ich habe eine häßliche Lösung jetzt.

    Ich rufe zweimal den Compiler auf, einmal mit dem file-Hinweis, einmal ohne. So bekomme ich beides, die komplette Spieldatei und die Auslagerungsdatei. Automatisch PRG-Formal aus der Auslagerungsdatei machen und automatisch einbinden. Funktioniert, ohne zu meckern.

    Geht es sauberer?

  • Js, geht es: schmeiss alles unnötige aus deinen Codes raus und sorg dafür dass Du keine Auslagerungsdatei brauchst. Fertig.

    GREETINGS PROFESSOR FALKEN
    A STRANGE GAME.
    THE ONLY WINNING MOVE IS NOT TO PLAY.
    HOW ABOUT A NICE GAME OF CHESS?

  • Ich arbeite schon am Limit mit ASM. Was soll ich da noch wegwerfen, Du liebe Güte.

    Zum Beispiel drei Viertel Deiner Bomben-Funktionen... ich schick Dir ne PM.

    Yes, I'm the guy responsible for the Bitte melde dich an, um diesen Link zu sehen. cross assembler. And some Bitte melde dich an, um diesen Link zu sehen..