VWF-Dialoge v1.0

geschrieben am 17.04.2011 13:28:08
( Link )
Die Funktion auch ganz sicher richtig verwendet, ohne eingebauten Fehler? Ich hatte die nämlich damals in BSNES getestet und diesen Fehler nicht bekommen. Welche Version von BSNES benutzt du? Und welche SRAM/RAM-Adresse benutzt du für die VWF-Grafiken?
-Das quadratische Rad neu erfinden-
Mit das quadratische Rad neu erfinden (englisch Reinventing the square wheel) bezeichnet man die Bereitstellung einer schlechten Lösung, wenn eine gute Lösung bereits existiert.

-Slowsort-
Slowsort (von engl. slow: langsam) ist ein langsamer, rekursiver Sortieralgorithmus, der nach dem Prinzip Vervielfache und kapituliere (engl. Multiply and surrender, eine Parodie auf Teile und herrsche) arbeitet.

geschrieben am 17.04.2011 13:40:28
( Link )
Ich benutze die letzte Version, die noch ROMs mit Header angenommen hat (0.70?).

Das sagt die .bat anzeigen
C:\Users\Nutzer\Desktop\Pokey\Patches\VWFPatch>xkas vwfdialogues.asm pokey.smc


VWF Dialogues Patch v1.0 - (c) 2010 RPG Hacker

VWF Creation Routine at address $a4a138.
Pattern Addition Routine at address $a4a276.

VWF State register at address $702000.
Message register at address $702001.
BG GFX register at address $702008.
BG Color register at address $702009.
Frame GFX register at address $70200f.

See Readme for details!

28133 bytes written at address $248000.
6554 bytes written at address $258000.


Drücken Sie eine beliebige Taste . . .
Sollte eigentlich alles noch der Standard sein.

Und der relevante Code sieht so aus:

Code
.options
db "Take Professor Bookey's tutorial?"
db $F0,$24,$A8
dl .yes
dl .no
db "Yes",$FD
db "No",$FD

.yes
db "Nice. I'll tell you stuff later.",$FA,$FF

.no
db "Are you certain you don't want me to teach you anything?",$FA,$ED
db "I'm sure you would have learned a thing or two!",$FA,$FF


Da ist noch mehr Text drumrum, und auch noch mehr ASM-Code, der den Text-Pointer ändert, je nachdem, ob man mit dem Professor schon mal geredet hat und ob man sich das Tutorial schon mal angehört hat, aber daran liegt's nicht, der Fehler hat schon ohne den Code bestanden.
geschrieben am 17.04.2011 16:11:10
( Link )
Hab's gerade nochmal in BSNES v0.71 getestet. Keine Fehler.




Es muss also an der Anwendung liegen. Vielleicht bei der Zeichen-Breitetabelle etwas falsches eingetragen? Bei der Cursor-Grafik irgendwelche "verbotenen" Farben benutzt?
-Das quadratische Rad neu erfinden-
Mit das quadratische Rad neu erfinden (englisch Reinventing the square wheel) bezeichnet man die Bereitstellung einer schlechten Lösung, wenn eine gute Lösung bereits existiert.

-Slowsort-
Slowsort (von engl. slow: langsam) ist ein langsamer, rekursiver Sortieralgorithmus, der nach dem Prinzip Vervielfache und kapituliere (engl. Multiply and surrender, eine Parodie auf Teile und herrsche) arbeitet.

geschrieben am 17.04.2011 16:43:32
( Link )
In der Tabelle steht $10, 16 Pixel halt. Und an Farben habe ich die letzten beiden benutzt, wie die Schrift auch.
geschrieben am 17.04.2011 16:51:08
( Link )
Puh... Ich habe echt keinen Schimmer. Probiere einfach mal
-Die Datei neu zu patchen,
-Eine neuere Version von BSNES zu benutzen,
-Die SRM-Datei zu löschen und.
Ich kann mir echt nicht vorstellen, was hier das Problem sein könnte.
-Das quadratische Rad neu erfinden-
Mit das quadratische Rad neu erfinden (englisch Reinventing the square wheel) bezeichnet man die Bereitstellung einer schlechten Lösung, wenn eine gute Lösung bereits existiert.

-Slowsort-
Slowsort (von engl. slow: langsam) ist ein langsamer, rekursiver Sortieralgorithmus, der nach dem Prinzip Vervielfache und kapituliere (engl. Multiply and surrender, eine Parodie auf Teile und herrsche) arbeitet.

geschrieben am 17.04.2011 17:15:15
( Link )
Alles schon probiert, bringt nix.

Hast du schon bedacht, dass ich ja deine Spezialversion hab? Kann mir zwar nicht vorstellen, dass das einen Unterschied macht, aber man ich kann ja nie wissen.

Und $701000+ werden auch nicht gebraucht, oder? Das benutze ich nämlich als RAM für alles Mögliche, das gespeichert werden soll. Ich hab in vwfdialogues.asm etwas Code dafür hinzugefügt (das wird wohl noch mal mehr, daher der Loop). Glaub zwar auch nicht, dass der was ausmacht, aber na ja.

Code

InitRAM:
phx
rep #$30
ldx #$0000
lda #$0000

.InitVarRAM
sta !varram,x ; Initialize RAM
inx #2
cpx #$00C8 ; Number of bytes
bne .InitVarRAM


ldx #$0000 ; \
lda #$0000 ; | Achtung, das ist von mir!
.InitVarRAM_custom ; |
sta $701000,x ; | SRAM, den ich benutze,
inx #2 ; | gleich mit ändern
cpx #$0002 ; |
bne .InitVarRAM_custom ; /
geschrieben am 17.04.2011 17:50:01
( Link )
Zitat von WYE:
Hast du schon bedacht, dass ich ja deine Spezialversion hab? Kann mir zwar nicht vorstellen, dass das einen Unterschied macht, aber man ich kann ja nie wissen.


Denke eher nicht. An den entscheidenen Routinen habe ich in deiner Version nichts geändert.

Zitat von WYE:
Und $701000+ werden auch nicht gebraucht, oder? Das benutze ich nämlich als RAM für alles Mögliche, das gespeichert werden soll. Ich hab in vwfdialogues.asm etwas Code dafür hinzugefügt (das wird wohl noch mal mehr, daher der Loop). Glaub zwar auch nicht, dass der was ausmacht, aber na ja.


Kommt ganz drauf an, was du bei !varram, !backupram und !tileram angegeben hast. Wenn ich mich recht erinnere, werden die Cursor-Grafiken und was damit zusammenhängt ganz am Ende dieser 16 KB gespeichert. Wenn du deine SRM-Datei in YY-CHR öffnest, müsstest du sie sogar sehen können.
-Das quadratische Rad neu erfinden-
Mit das quadratische Rad neu erfinden (englisch Reinventing the square wheel) bezeichnet man die Bereitstellung einer schlechten Lösung, wenn eine gute Lösung bereits existiert.

-Slowsort-
Slowsort (von engl. slow: langsam) ist ein langsamer, rekursiver Sortieralgorithmus, der nach dem Prinzip Vervielfache und kapituliere (engl. Multiply and surrender, eine Parodie auf Teile und herrsche) arbeitet.

geschrieben am 17.04.2011 17:57:27
( Link )
Ich bin mir ziwmlich sicher, dass es am Benutzen von $701000 nicht liegt. Ich hab vorher im Debugger nachgeguckt und der Wert dort war FF, wurde also gar nicht erst angerührt.

Also, eigentlich liegt's an gar nichts. Na toll.
geschrieben am 17.04.2011 18:07:26
( Link )
Vielleicht solltest du wirklich einfach mal die normale Version von SMW Central ausprobieren, nur um zu sehen, ob es vielleicht nicht doch an deiner Spezialversion liegt. Vielleicht hast du ja auch irgendwelche anderen Patches drin, die dieselben Adressen verwenden?
-Das quadratische Rad neu erfinden-
Mit das quadratische Rad neu erfinden (englisch Reinventing the square wheel) bezeichnet man die Bereitstellung einer schlechten Lösung, wenn eine gute Lösung bereits existiert.

-Slowsort-
Slowsort (von engl. slow: langsam) ist ein langsamer, rekursiver Sortieralgorithmus, der nach dem Prinzip Vervielfache und kapituliere (engl. Multiply and surrender, eine Parodie auf Teile und herrsche) arbeitet.

geschrieben am 17.04.2011 18:39:10
( Link )
Standardversion auf ansonsten sauberer ROM probiert - bsnes liefert dasselbe Ergebnis.
geschrieben am 17.04.2011 18:44:52
( Link )
Auch das Standardfont probiert? Vielleicht liegt's ja daran.
-Das quadratische Rad neu erfinden-
Mit das quadratische Rad neu erfinden (englisch Reinventing the square wheel) bezeichnet man die Bereitstellung einer schlechten Lösung, wenn eine gute Lösung bereits existiert.

-Slowsort-
Slowsort (von engl. slow: langsam) ist ein langsamer, rekursiver Sortieralgorithmus, der nach dem Prinzip Vervielfache und kapituliere (engl. Multiply and surrender, eine Parodie auf Teile und herrsche) arbeitet.

geschrieben am 17.04.2011 18:53:13
( Link )
Alles Standard, sogar der FreeSpace ($248000+$258000).
Schulterzuck.

EDIT: Link, probier's mal selbst.
geschrieben am 17.04.2011 19:12:51
( Link )
Dann kommt's bei mir auch. Allerdings nur, wenn ich am Anfang Runter auf dem Steuerkreuz drücke. Wenn ich Hoch drücke, funktioniert's seltsamerweise.

Was genau hast du bei dieser Version alles verändert? Nur den Message-Text, oder auch den Message-Header?

EDIT:
Nevermind, manchmal kommt der Bug auch, wenn ich Hoch drücke. Keine Ahnung, womit's zusammenhängt.

EDIT2:
Zumindest scheint es definitiv mit BSNES zu tun zu haben, in ZSNES passiert das nicht.
-Das quadratische Rad neu erfinden-
Mit das quadratische Rad neu erfinden (englisch Reinventing the square wheel) bezeichnet man die Bereitstellung einer schlechten Lösung, wenn eine gute Lösung bereits existiert.

-Slowsort-
Slowsort (von engl. slow: langsam) ist ein langsamer, rekursiver Sortieralgorithmus, der nach dem Prinzip Vervielfache und kapituliere (engl. Multiply and surrender, eine Parodie auf Teile und herrsche) arbeitet.

geschrieben am 17.04.2011 19:21:47
( Link )
Stimmt, wenn ich zuerst hoch drücke, kommt der Bug nicht. Sobald er aber - durch runter-Drücken - einmal auftritt, kommt er auch beim Hoch-Drücken. Seltsam.

Und nein, den Header hab ich nicht verändert, der ist noch so wie bei 104-1. Sollte aber daran nicht liegen können, denn in meinem Hack ist der Header ein anderer, und da tritt der Bug ja auch auf.

So sieht der Header in meinem Hack aus, wenn's von Bedeutung sein sollte:
Spoiler anzeigen
Message000A: ; Message 005-1
.header
db $00
db %00001000,%01111000,%11010010,%00000001,$01,%00100000
dw $7FFF,$0000
db %11110100
db %00001111,$31,$31,$23,$00
geschrieben am 17.04.2011 21:47:32
( Link )
Nur mal um auszuschließen, dass die Version auf SMW Central veraltet ist (was eigentlich nicht sein kann) die neueste Version von meinem Rechner:

http://rpg-hacker.bplaced.net/SMW/Downloads/Patches/VWFPatch/VWFPatchv100.rar

Runterladen und erneut von vorne probieren. Ich weiß langsam echt nicht mehr weiter. Wenn es nicht schon so lange her wäre, dass ich dran gearbeitet habe, wüsste ich zumindest noch, wo ich suchen soll. Aber zur Zeit bin ich echt nicht drin in der Materie.
-Das quadratische Rad neu erfinden-
Mit das quadratische Rad neu erfinden (englisch Reinventing the square wheel) bezeichnet man die Bereitstellung einer schlechten Lösung, wenn eine gute Lösung bereits existiert.

-Slowsort-
Slowsort (von engl. slow: langsam) ist ein langsamer, rekursiver Sortieralgorithmus, der nach dem Prinzip Vervielfache und kapituliere (engl. Multiply and surrender, eine Parodie auf Teile und herrsche) arbeitet.

geschrieben am 17.04.2011 22:18:05
( Link )
Verstehe ich gut - ich komm auch extrem schnell aus Sachen wieder raus, wenn ich sie länger nicht brauche.

Tja, die Version da, falls es eine andere ist, bringt auch nichts, und auch der Code, den der Debugger geliefert hat (ja, ich hab die ganze Routine mitverfolgt ) stimmt mit dem beabsichtigten Code (dem in der ASM-Datei) überein. Ich hab echt keine Ahnung, woran's liegt.

Na ja, dann werd ich's wohl zu den "Known Bugs" schreiben müssen. Gut, dass ich nicht vorhabe, so viele Multiple-Choice-Nachrichten zu verwenden.
geschrieben am 17.04.2011 22:36:42
zuletzt bearbeitet von RPG Hacker am 17.04.2011 22:45:46.
( Link )
Damit kann ich mich aber nicht zufrieden geben. Hab's jetzt echt trilliarden mal probiert. Immer wenn ich den Patch bei mir anwende, funktioniert's einwandfrei. Es muss also etwas geben, was wir übersehen haben. Vielleicht liegt's gar an der Basisrom bzw. an irgendwelchen Einstellungen in Lunar Magic? Ich schicke dir mal per PN die ROM, die ich als Basis benutze. Probiere mal, den Patch auf die ROM anzuwenden (ohne irgendetwas in LM an ihr zu machen) und sag mir dann, ob's immer noch passiert.
-Das quadratische Rad neu erfinden-
Mit das quadratische Rad neu erfinden (englisch Reinventing the square wheel) bezeichnet man die Bereitstellung einer schlechten Lösung, wenn eine gute Lösung bereits existiert.

-Slowsort-
Slowsort (von engl. slow: langsam) ist ein langsamer, rekursiver Sortieralgorithmus, der nach dem Prinzip Vervielfache und kapituliere (engl. Multiply and surrender, eine Parodie auf Teile und herrsche) arbeitet.

geschrieben am 17.04.2011 22:44:58
( Link )
Okay, das ist verrückt. Mit deiner ROM geht's.

Als ich das Ding vorhin getestet hab, hab ich eigentlich nichts Besonderes damit gemacht - meine ROM war sauber, ich hab sie in LM geöffnet, die Level- und OW-ASM-Hacks von LM installiert und auf 2MB expandiert. Dann VWF gepatcht, und dann kam der Bug. Was hast du denn mit deiner gemacht? Die LM-ASM-Hacks nicht installiert? Aber wenn's daran läge, dann wäre das doch ziemlich doof, denn früher oder später muss man die ja installieren.
(EDIT: Auf deiner Basisrom, auch ohne VWF, ist das Time-Limit in Level 105 geändert. Hat das was zu bedeuten?)
geschrieben am 17.04.2011 22:50:26
( Link )
Also ich hatte diese ROM immer zum Testen benutzt und sie als "clean" behandelt, weil ich an ihr wirklich nicht mehr gemacht hatte als sie zu expanden und diverse LM-Hacks zu installieren. Diese ROM hier war jetzt eine speziell auf LM 1.82 zugeschnittene Version, die von Anfang an mit keinem anderen LM in Kontakt kam. Ich erinnere mich nicht mehr genau an alles, aber ich glaube die einzigen Hacks, die ich installiert hatte, waren die FastROM-Patches. Es könnte also irgendwie damit zusammenhängen. Vielleicht benutzen diese Hacks irgendwelche Adressen, die auch mein Patch benutzt, sodass es nur in Kombination von beidem zu den Fehlern kommt. Probiere einfach mal, immer weiter die notwendigen Hacks zu installieren, bis der Fehler auftritt bzw. falls der Fehler überhaupt nicht mehr auftritt, freu' dich einfach darüber.
@EDIT:
Eher nicht. Das hatte ich nur gemacht, um Features in meinem HP-Patch v2.0 zu testen. Der Patch ist auf dieser Basisrom aber nicht drauf, also wird's daran wohl auch nicht liegen. Hab letztlich zum Testen auch immer Level 104 benutzt.
-Das quadratische Rad neu erfinden-
Mit das quadratische Rad neu erfinden (englisch Reinventing the square wheel) bezeichnet man die Bereitstellung einer schlechten Lösung, wenn eine gute Lösung bereits existiert.

-Slowsort-
Slowsort (von engl. slow: langsam) ist ein langsamer, rekursiver Sortieralgorithmus, der nach dem Prinzip Vervielfache und kapituliere (engl. Multiply and surrender, eine Parodie auf Teile und herrsche) arbeitet.

geschrieben am 20.04.2011 16:59:18
( Link )
Okay, ich hab den Grund so ziemlich entdeckt, nur find ich ihn komisch... Es scheinen einfach zu viele Cycles zu sein. Anscheinend merkt nur bsnes, dass so viel Code eigentlich gar nicht in einem Frame geschafft werden kann und erzeugt daher den Fehler.

Ich hab levelASM so bearbeitet, dass in jedem Level, unabhängig von levelcode.asm, jeden Frame ein gewisser Code ausgeführt wird. Dazu gehört auch ein anscheinend ziemlich aufwändiger Loop, und so wie's aussieht, frisst der so viele Cycles, dass aus irgendeinem Grund der Cursor in Dialogen nicht gelöscht wird. An dem Code selbst (d.h. an dem, was er macht) liegt's definitiv nicht, denn der Fehler tritt auch auf, wenn ich stattdessen diesen Nutzlos-Code hier verwende.
Code
LDA #$FF
WasteCycles:
DEC
BNE WasteCycles
Warum und wieso, keine Ahnung, aber darauf hab ich den Fehler eingegrenzt.

Ich schätze mal, die Lösung lautet "weniger Code reinstopfen, oder effizienteren verwenden", stimmt's? Hast du dazu noch was zu sagen?

(EDIT: Das Seltsame ist nur, dass der Fehler bei mir ja auch mit einer sonst sauberen ROM aufgetreten ist, und dort kann ja kein cyclefressender Code gewesen sein, oder?)