Maggi-Fix für SNES Programmierung

Es werden stets neue Spieletests, Berichte und Artikel für die Homepage gesucht. Beweist hier Euer Schreibtalent.

Moderator: Perikles

Benutzeravatar
lytron
Code Bro
Code Bro
Beiträge: 2664
Registriert: 12. August 2012, 20:18
+Positive Tradingpoints+: 12 von 12
Wohnort: ハノーファー区
Kontaktdaten:

Re: Maggi-Fix für SNES Programmierung

Beitrag von lytron » 8. Februar 2014, 06:33

snoer!

Ich schreibe mal eben absichtlich einen Doppelpost; im zweiten Teil wird es ums inhaltliche gehen, und das zu schreiben wird sicherlich den gesamten Vormittag einnehmen. :D ;)

Deshalb wollte ich nur vorabmelden, dass ich mich jetzt an die Arbeit mache. Dass ich das hier so lange hab brachliegen lassen, lag daran, dass ich erst zwei, drei Tage nach dem Posten überhaupt entdeckt habe, und zu dem Zeitpunkt hatte die Arbeitswoche schon wieder mit eiserner Faust zugeschlagen.

Also, sorry, dass ich mich bisher noch nicht gekümmert habe. Kommt nu aber!
pantalytron: ルトロンはくそのディスアセンブラだよ!
Perikles hat geschrieben:Man muss sich das mal reinziehen: die Idee ist scheiße, die theoretische Ausarbeitung ist scheiße, die praktische Umsetzung ist scheiße und der so entstehende Anspruch noch beschissener.

Benutzeravatar
lytron
Code Bro
Code Bro
Beiträge: 2664
Registriert: 12. August 2012, 20:18
+Positive Tradingpoints+: 12 von 12
Wohnort: ハノーファー区
Kontaktdaten:

Re: Maggi-Fix für SNES Programmierung

Beitrag von lytron » 8. Februar 2014, 07:25

Zweiter Teil vom Doppelpost. ;)

Zunächst einmal:
Ich schätze, der kann wegen des .DB Y nicht kompilieren.
".DB" ist ein WLA-DX-Befehl. Ein Befehl für den Compiler des Codes, der die Textdatei in eine ROM umwandelt. Es ist wichtig, im Hinterkopf zu behalten, dass der Compiler sich einen Dreck um den tatsächlichen Inhalt der ROM kümmert. Die ROM kann ein komplettes Spiel sein, aber sich nach der zweiten Zeile in einem Infinite Loop aufhängen - den Compiler stört es nicht, solange der Text in Ordnung ist.
Folglich kann das hier aus zwei Gründen nicht funktionieren:
  • Erstens: Der Compiler müsste wissen, welcher Zahlenwert in Y ist. Dazu müsste er den Code irgendwie interpretieren, und sich selbst das errechnen, was gerade in Y für ein Wert ist. Und das macht der Compiler nicht, dem ist das inhaltliche wurscht. Der guckt nur, ob das Vokabular stimmt. Und er kennt einen Befehl wie ".DB Y" nicht, weil...
  • ... zweitens: Y ist flexibel. ".DB" schreibt immer einen festen Wert in die ROM. Weil: ROM. Read Only Memory. Deshalb würde ein Befehl wie ".DB Y" niemals funktionieren, und deshalb ist er auch nicht im Vokabular von WLA DX. ;)
Nächste Sache:

Code: Alles auswählen

LDY TextMap.w, X   ; lädt die ertsen beiden bytes
LDY $04.b       ; Paletten Offset
Du lädst zweimal hintereinander was in Y, folglich wird der erste Wert vom zweiten plattgemacht. Übrigens lädst du "$04.b" rein, also den Wert in Direct Page Register $04. Falls du den Wert "vier" meinst, hättest du #$04.b schreiben müssen. ;) (Oder #$0004.w, wenn Y 16-bit-groß ist)

Übernächste Sache:
SEC XCE, CLC XCE.
Ich denke, du fährst besser damit, nicht zwischen Emulation und Native Mode zu switchen, sondern mit SEP und REP die Größe von A, X und Y zu wechseln. Das ist normalerweise so, und ich bin nicht firm genug in Hardware-Belangen, dass ich sagen könnte, was alles beim Wechsel der Prozessor-Modi passiert (Hier wäre der perfekte Punkt für d4s oder ikari_01, sich einzuschalten. ;) )

Zu deiner eigentlichen Frage, wie man das macht, gäbe es viele Möglichkeiten.

Code: Alles auswählen

REP #$30.b   ; A/X/Y = 16 Bit
LDA #$0400.w   ; Palettenwert
STA $04.b   ; Speichert den Wert in $04/$05, habe ich jetzt mal als Beispiel genommen
LDA #$1000.w
STA $2116.w   ; Setz VRAM-Adresse zu $1000. Wieder nur ein Beispiel

LDX #$0000.w   ; Loopkram
Loopahpoop:

LDA TextMap.w, X   ; Lädt ZWEI Bytes, wir brauchen aber nur einen
AND #$00FF.w   ; Schmeißt den zweiten Byte weg
ORA $04.b   ; Rechne den Palettenwert drauf
STA $2118.w   ; Speicher in VRAM

INX   ; Loopkram
CPX #$0400.w
BNE Loopahpoop
So, oder so ähnlich, könnte es funktionieren, glaube ich.
pantalytron: ルトロンはくそのディスアセンブラだよ!
Perikles hat geschrieben:Man muss sich das mal reinziehen: die Idee ist scheiße, die theoretische Ausarbeitung ist scheiße, die praktische Umsetzung ist scheiße und der so entstehende Anspruch noch beschissener.

Benutzeravatar
gnarf
SNES-Newbie
SNES-Newbie
Beiträge: 5
Registriert: 29. Mai 2014, 14:09

Re: Maggi-Fix für SNES Programmierung

Beitrag von gnarf » 29. Mai 2014, 16:48

bei mir werden die Grafiken nicht angezeigt (Ausser das mit dem haus mit den vielen Treppen),
habs sowohl mit Firefox als auch mit Konqueror probiert.
wär cool wenn du sie nochmal hochladen könntest falls sie wirklich weg sind, und du sie noch aufm pc hast.

ansonsten echt cooles Tutorial, du erklärst alles schön anschaulich und es ist scheinbar das einzige deutsche Tutorial zu dem Thema

ich würde mich freuen wenn du deinen Code ein bisschen mehr kommentierst
es würde ihn deutlich verständlicher machen.

jedenfalls hast du mir schon sehr viel weiter geholfen, weiter so :D
Bild

Benutzeravatar
ChronoMoogle
snesfreaks.com-Team
snesfreaks.com-Team
Beiträge: 9895
Registriert: 26. Februar 2007, 14:56
+Positive Tradingpoints+: 98 von 98
Wohnort: Nippon
Kontaktdaten:

Re: Maggi-Fix für SNES Programmierung

Beitrag von ChronoMoogle » 29. Mai 2014, 16:57

Das meiste (alles?) davon ist bereits auf pantalytron... Hier gingen die Grafiken leider kaputt nachdem unsere Seite gehackt wurde. Deswegen ist auch derzeit nur das Forum zugänglich. Die Energie wird statt auf den Aufbau der alten Site lieber in das aktuelle Redesign gesteckt ;)
Bild
| Mein YT Channel | Mein Twitter | Ich suche | Ich verkaufe | Foren SuFu |
...weil Terranigma einfach das Größte ist!

Benutzeravatar
gnarf
SNES-Newbie
SNES-Newbie
Beiträge: 5
Registriert: 29. Mai 2014, 14:09

Re: Maggi-Fix für SNES Programmierung

Beitrag von gnarf » 29. Mai 2014, 17:22

oh ja da is ja alles und die bilder funzen auch,
danke :wink:
Bild

Benutzeravatar
lytron
Code Bro
Code Bro
Beiträge: 2664
Registriert: 12. August 2012, 20:18
+Positive Tradingpoints+: 12 von 12
Wohnort: ハノーファー区
Kontaktdaten:

Re: Maggi-Fix für SNES Programmierung

Beitrag von lytron » 29. Mai 2014, 20:49

Wenn du Fragen zum SNES-Programmieren hast, hau sie hier rein oder auf meine Seite, oder kontaktier mich per Mail. Ich werde vermutlich diese Tutorials nicht mehr weiterschreiben, einfach weil es so viele Sachen gibt, die ich viel lieber machen würde, und selbst zu denen nicht komme.
pantalytron: ルトロンはくそのディスアセンブラだよ!
Perikles hat geschrieben:Man muss sich das mal reinziehen: die Idee ist scheiße, die theoretische Ausarbeitung ist scheiße, die praktische Umsetzung ist scheiße und der so entstehende Anspruch noch beschissener.

Benutzeravatar
gnarf
SNES-Newbie
SNES-Newbie
Beiträge: 5
Registriert: 29. Mai 2014, 14:09

Re: Maggi-Fix für SNES Programmierung

Beitrag von gnarf » 29. Mai 2014, 23:57

klingt gut
werde erstmal dein Tutorial fertig durcharbeiten um die groben Grundlagen zu verstehen
und komm dann wahrscheinlich später drauf zurück
Bild

Benutzeravatar
Krischan
SNES-Freak
SNES-Freak
Beiträge: 279
Registriert: 2. Oktober 2014, 14:20
+Positive Tradingpoints+: 20 von 20
Wohnort: Schleswig-Holstein

Re: Maggi-Fix für SNES Programmierung

Beitrag von Krischan » 8. Oktober 2014, 12:50

Vielen Dank für diesen nicht nur informativen sondern auch unterhaltsamen thread! :applaus:
Auch auf die Gefahr hin, dass ich eine dumme Frage Stelle :pfeif: : Was ist "pantalytron" und wo kann ich es finden?

Benutzeravatar
Yankee
Hardcore SNES-Freak
Hardcore SNES-Freak
Beiträge: 814
Registriert: 14. April 2012, 20:43
+Positive Tradingpoints+: 36 von 36

Re: Maggi-Fix für SNES Programmierung

Beitrag von Yankee » 8. Oktober 2014, 12:56

Krischan hat geschrieben:Was ist "pantalytron" und wo kann ich es finden?
http://pantalytron.com/blog7.php

Sollte deine Frage beantworten :wink:

Benutzeravatar
Krischan
SNES-Freak
SNES-Freak
Beiträge: 279
Registriert: 2. Oktober 2014, 14:20
+Positive Tradingpoints+: 20 von 20
Wohnort: Schleswig-Holstein

Re: Maggi-Fix für SNES Programmierung

Beitrag von Krischan » 8. Oktober 2014, 14:05

Ahhhhh! Vielen Dank für die rasche Antwort! :D

Antworten