Hello, Guest the thread was called745 times and contains 19 replays

last post from faddie at the

Mafia ASM Beta

  • Moin


    ich bin langsam in den letzten Zuckungen, mir meinen seit 20 Jahren gehegten Wunsch zu erfüllen: ein altes Basic Spiel von '86 in Assembler neu aufleben zu lassen und möglichst viele der alten Bugs zu beseitigen.



    Keine Grafik, keine Musik, kein Geschmack - so könnte man das Spiel vielleicht umschreiben. Wenn man Mafia allerdings als elektronisches Brettspiel anssieht, sieht die Sache schon wieder ganz anders aus.


    Es ist ein reines "Dialogspiel", wie z.B. Oel/Dallas, Dealer und dergleichen, eine KI gibt es auch nicht, man benötigt also immer mindestens einen Mitspieler. Aber das Wochenende steht vor der Tür und vielleicht hab ihr ja Besuch und nichts sonst weiter zu tun ;)

    Meine bisherigen Testspiele verliefen zumindest spaßig, besonders mit Bier :drunk:


    Als Spielanleitung muss erstmal dieser Wiki-Artikel dienen:
    https://www.c64-wiki.de/wiki/Mafia_(Sascha_Laffrenzen)


    Meine Neuinterpretation hält sich in großen Teilen an das Original, nur die "Aktionen" sind vollständig der Würfelei "Bandenkrieg" gewichen.


    Der Quellcode liegt übrigens hier :schande:

    https://github.com/dkrey/mafia_asm



    Jedenfalls freue ich mich über Feedback, Bugs und Vorschläge. Besonders beim Balancing kann man bestimmt noch was reißen.


    mafiasm.d64


    EDIT by FXXS: Wiki-Link repariert. WBB mag keine Klammern am Linkende....

  • Erstmal Gratulation, daß Du das Projekt so weit gebracht :applaus:und dabei die wichtigste aller Regeln beachtet hast: Zuerst das Programm einigermaßen zuende bringen und danach optimieren/Fehler suchen :zustimm:.

    Leider muß ich vermelden, daß ich in der Beta-Version über einen Fehler gestolpert bin. Nach ein paar Runden, in denen ich kräftig in Spielautomaten investiert hatte, schaltete die Anzeige plötzlich um auf den blauen Startbildschirm. Inwieweit das Programm noch Tasten annimmt, kann ich nicht sagen, da die Anzeige nicht mehr vorhanden ist, aber ich vermute, es ist abgestürzt. :( Das heißt dann wohl "Viel Spaß und Erfolg beim Fehlersuchen!" Aber das kriegst Du sicherlich auch noch hin. Ich bin jedenfalls gespannt auf den nächsten Release.

  • Wenn ich es richtig verstehe willst du das Spiel ja auch ein wenig verbessern. Die Verwendung von mehreren Farben auf einem Screen könnte es etwas aufhübschen. Vielleicht macht dir auch einer der Composer hier noch ein paar Jingles für verschiedene Ereignisse.

  • :lol33:

    Haha, danke für die "Veredelung" !

    :D


    M. J. Danke für die Blumen :)

    Hast du nur Automaten ohne Ende gekauft oder noch andere Dinge getan. Ich hatte mal ein Problem, dass mir der Stack-Pointer übergelaufen ist - könnte aber auch sein, dass vielleicht meine Random-Routine hängen geblieben ist.


    laxiteer So einen Universalbuchstaben zwischen ä und Ä habe ich leider noch nicht gefunden. Deshalb sieht es so seltsam aus.

    Politur wird bestimmt noch folgen, aber erstmal muss der Inhalt stimmen.

  • Und da ist auch schon der "Crack"!

    Och nööö.... Was sind denn das für Lamer...:facepalm:

    Hast du nur Automaten ohne Ende gekauft oder noch andere Dinge getan.

    Ein Spieler hat hauptsächlich Automaten gekauft. Der andere Probespieler hat kleinere Operationen durchgeführt wie Leute berauben usw. und war dafür auch für 6 Runden im Gefängnis.

    könnte aber auch sein, dass vielleicht meine Random-Routine hängen geblieben ist.

    Nein, daran lag es leider nicht, da das Programm sich in der Tasten-Warteschleife im Kernal bei $e5cd befand. Das Merkwürdige war halt, daß die ganze Anzeige umgestellt war auf den Textspeicher bei $400..$7ff, und die Farben waren wieder auf Blau/Hellblau gesetzt. Die gesamte Anzeige ("...BASIC BYTES FREE" und "LOAD..." sowie "RUN"...) war auch noch da. Da der Textspeicher Deines Programm eigentlich bei $c000 liegt, muß folglich irgendwas den VIC wieder komplett umgeschaltet haben. Normalerweise würde das ja eine Routine im Kernal machen. Gibt es vielleicht irgendwo im Programm einen Befehl, der solch eine Routine aufruft?


    Eine Frage zur Random-Routine: Du benutzt zur Erzeugung der Zufallszahlen die Timer sowie den SID. Letzteres ist ein wenig hinderlich, wenn man z. B. wie bereits vorgeschlagen nebenbei noch Musik abspielen will. Gibt es einen besonderen Grund, daß Du keinen herkömmlichen Pseudo-Zufallszahlen-Generator nimmst? Einen solchen könnte man einmalig zu Beginn mit Werten aus dem SID initialisieren (Seed) und dann später fortlaufend aufrufen, wenn das Programm auf einen Tastendruck wartet. Die Wahrscheinlichkeitsverteilung sollte ausreichend sein, zumal sich die Länge der Zahlenkette nahezu beliebig groß machen läßt. Was die Gefahr des "Hängens" beim Ziehen eines Wertes zwischen zwei Grenzen anbelangt, so gibt es natürlich wie in Basic die Möglichkeit, eine ausreichend große Zufallszahl (z. B. 16 Bit) mit dem Wertebereich (zwischen unterer und oberer Grenze) zu multiplizieren und dann das Ergebnis durch 65536 zu teilen, also quasi eine Festkomma-Multiplikation mit einer Zufallszahl zwischen zwischen 0 <= x < 1. Das ist ein wenig aufwendiger, aber verhindert definitiv, daß das Programm an dieser Stelle länger hängen könnte.

  • Eine Frage zur Random-Routine: Du benutzt zur Erzeugung der Zufallszahlen die Timer sowie den SID. Letzteres ist ein wenig hinderlich, wenn man z. B. wie bereits vorgeschlagen nebenbei noch Musik abspielen will. Gibt es einen besonderen Grund, daß Du keinen herkömmlichen Pseudo-Zufallszahlen-Generator nimmst? Einen solchen könnte man einmalig zu Beginn mit Werten aus dem SID initialisieren (Seed) und dann später fortlaufend aufrufen, wenn das Programm auf einen Tastendruck wartet. Die Wahrscheinlichkeitsverteilung sollte ausreichend sein, zumal sich die Länge der Zahlenkette nahezu beliebig groß machen läßt. Was die Gefahr des "Hängens" beim Ziehen eines Wertes zwischen zwei Grenzen anbelangt, so gibt es natürlich wie in Basic die Möglichkeit, eine ausreichend große Zufallszahl (z. B. 16 Bit) mit dem Wertebereich (zwischen unterer und oberer Grenze) zu multiplizieren und dann das Ergebnis durch 65536 zu teilen, also quasi eine Festkomma-Multiplikation mit einer Zufallszahl zwischen zwischen 0 <= x < 1. Das ist ein wenig aufwendiger, aber verhindert definitiv, daß das Programm an dieser Stelle länger hängen könnte.


    Einen Grund gibt es eigentlich nicht - ich hatte Musik und Sound nicht auf der Rechnung, weil meistens sowieso irgendeine externe Beschallung während des Spiels lief. Aber Soundeffekte wären tatsächlich ganz lustig. Dann muss ich da auch noch mal ran. Und ich versuche auch mal, den letzten Vorschlag zur eingegrenzten Zufallszahlensuche zu verstehen :)


    Danke auf jeden Fall für die Anregungen und das Feedback!

    Gibt es vielleicht irgendwo im Programm einen Befehl, der solch eine Routine aufruft?

    Irgendwo auf ein BRK gelaufen? Und das kann bei einem Absturz ja leicht passieren. Wenn das Programm vorher munter Systemadressen überschreibt, kann das schon die wildesten Symptome geben.

    Mal gucken ob ich das finde, eigenmächtig habe ich zumindest keinen BRK gesetzt. Aber dafür muss ich den Fehler erstmal selbst sehen. Hoffentlich finde ich am Wochenende ein wenig Zeit, da intensiver reinzugucken.

  • Immerhin von Laxity gecracked. :D


    Als ich letztes Jahr zwei BASIC-Spiele veröffentlicht habe, wurden die auch gleich gecracked. Allerdings von irgendwelchen Leuten, die ich nicht zuordnen kann (oder die ihren guten Namen nicht für so nen Quatsch hergeben wollten...).


    Mich hat das auch eher gefreut, weil es die Bekanntheit gesteigert hat. In einem der Spiele haben sie sogar noch nen Bugfix eingebaut. :thumbup:

  • Ich empfinde die Intros eher als eine Art Community-Siegel - oder als einen Eingangsstempel :D

    Das mit den Budget Labels wusste ich auch noch nicht - dann ist das ja schon fast ein Kompliment.


    Hier ist jedenfalls Beta2:

    Bugfix: Absturz bei Taschendiebstahl, wenn ein Mitspieler im Knast sitzt - ich hoffe, dass das dein Problem war M. J.

    Hab ein PHA nicht wieder vom Stack gezogen, wenn der Mitspieler eingesessen hat.


    Neu:

    Englische Übersetzung!

    Leider ist mir der Gangster-Slang auf Englisch ziemlich unbekannt. Zumindest fallen mir da keine schönen Phrasen ein. Ihr seid herzlichst eingeladen, daran was zu verbessen :)

    Die Übersetzung liegt hier:

    https://raw.githubusercontent.…/master/gameStringsEN.asm


    Um die Verbesserung der Random Funktion habe ich mich allerdings noch nicht gekümmert - erstmal die Bugs fixen.


    Deutsch:

    mafiasm_b2.d64


    Englisch:

    mafiasm_en_b2.d64

  • Basic Spiele werden nicht von den Hauptgruppen released, sondern von den sog. Budget Labels wie z.B. Aldi Industries...;)

    Auschlaggebend ist da üblicherweise nicht ob es in Basic geschreiben ist, sondern die Qualität des Spiels. Aber das hier ist weder Basic noch billig. Die Komplexität schätze ich gemäß der im ersten Post verlinkten Beschreibung des Originalspiels sogar höher ein als z.B. Kaiser, auch wenn die Präsentation noch verbessert werden kann. Aber das Spiel ist ja noch nicht fertig. Aufgrund des Einsatzes der hier gezeigt wird (englische Übersetzung innerhalb von nur 2 Tagen!) dürfte sich daran noch einiges verbessern.

  • Ach, zu viel des Lobes (auch wenn ich mich heimlich doch sehr freue). Mit Kaiser würde ich Mafia nun noch nicht vergleichen wollen. Es kann bestimmt noch passieren, dass ich den Bandenkrieg etwas aufwerte - aber strategische Elemente selbst enthält er derzeit nicht.

    Er ist dafür gedacht, fortgeschrittenen Spielern den Fortschritt wieder zunichte zu machen :) quasi analog zur "ehrlichen Arbeit" in der Anfangsphase.

    Und er soll dazu verleiten, dass sich die Mitspieler monopolymäßig gebeneinander verbünden.

    Auch der Teil mit den Bestechungen ist noch ziemlich dünn.

  • Hehe, jetzt haben auch Budget/Lamer Labels das Spiel entdeckt. :thumbsup:

    https://csdb.dk/release/?id=181630


    Jetzt hab ich da aber was in den Kommentaren gelesen:


    CPU JAM at $0008 after selecting few random choices.
    reloaded, tried more random choiches, ?SYNTAX ERROR in 20 after a while.

    Hat noch jemand sowas erlebt? Ich hab das in Vice (ich sollte das mal auf org. Hardware spielen) bisher noch nicht gesehen. Hat Aldi Industries das jetzt versaut oder ist das ein Fehler im Spiel...?


    edit: und das ist jetzt der Crack vom Crack?

    https://csdb.dk/release/?id=181668

  • edit: und das ist jetzt der Crack vom Crack?

    https://csdb.dk/release/?id=181668

    Nein, ein Import. :) Da wird das Intro der "crackenden" Gruppe nicht entfernt, sondern beibehalten und das eigene Intro kommt davor. War früher gängige Praxis, wenn z.B. eine europäische Gruppe etwas gecrackt hatte, hat eine US-Gruppe das dann "importiert", evtl. noch einen NTSC-Fix gemacht und das eigene Intro davorgelinkt. Umgekehrt genauso. Bei großen Gruppen gab's da irgendwann natürlich Absprachen untereinander und man hat seinen Partnern die Cracks direkt zukommen lassen zum "Import". RIchtig gangstermäßig. Passt also zum Spiel. ;)

  • Unfassbar :D


    Da lernt man ja noch richtig was auf seine alten Tage - allein dafür hat es sich ja schon gelohnt, dieses Projekt öffentlich zu machen.

    Davon abgesehen würde ich natürlich gerne den Vorwurf "Too lame even for lamers" irgendwie entkräften und den CPU Jam beseitigen.


    Ich hab ihn bloß noch nie provoziert :S