N64 - Antialiasing & Co. können nun via GameShark ausgeschaltet werden

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • borti4938 schrieb:

      Soweit ich weiß, sind auf den PCBs von Zerb (wo ist der eigentlich?) n 36er und F_L_a_S_H n 72er, wenn ich das richtig im Kopf habe.
      Viletim nimmt ja einen MAXII von Altera (EPM240???), der auch groß genug sein dürfte (nur ganz knapp )

      Der MAX II von Altera sitzt auf vileTIMS RGB-Board. @borti, @ikari_01 - wenn es hilft, schick ich Euch eins zum Testen...
      Alles, was man löten kann, ist auch machbar - Mein TV kann nur 1977 bis 1996 darstellen. Deshalb spiele ich Retro.
    • Ich auch...

      Ich habe für den EPM240 das Ganze auch mal in VHDL reimgetippert. Da der EPM240 genug Pins hat, kann man einen dafür missbrauchen, um zwischen ungeraden und gerade Pixeln umzuschalten.

      Der EPM240 ist übrigens groß genug, um einen Pixelbuffer auf maximal 8 (plus Ausgangsregister) zu strecken. Ob das aber Sinn macht? eher nicht :hippie

      @Xenogears
      Ich habe eine PCB von dir ja schon. Ich bräuchte nur n Pinout (würde Zeit ersparen) und evtl. eine Firmware, um zur Not alles auf Anfang zu spielen ;)
      Projekte: GitHub, OSH Park

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von borti4938 ()

    • borti4938 schrieb:

      Hätte noch einen XC9572 (nicht XL) hier, den ich dir schicken könnte. Müsste nur mal fix das Pinout abgleichen, sollte aber passig sein. Und laut Datenblatt läuft der XC9572 auch bei 3.3V (auch wenn 5.0V empfohlen sind)... Einfach melden bei Interesse!
      Sehr gerne! Dann kann ich nochmal nen Vergleich ziehen zwischen simultan und versetzt geschalteten Farbkanälen.
      ^o^)~
    • So, alles im Kasten! Wer über die Testmotive lästert, kriegt mit der Zeitung. :P
      Das ganze ist jetzt erstmal mit einem Zerberus-N64RGB-Board mit XC9536XL entstanden. Also durchaus Low-Tech. Man kommt mit dem Ding schon recht weit :)

      So sieht's hier gerade aus :s000:



      Super Mario 64 Fileselect:
      Spoiler anzeigen

      Originalzustand:

      Mit "Ditherfilter-Entfernung":



      Nahaufnahme:
      Spoiler anzeigen

      Originalzustand:


      Mit "Ditherfilter-Entfernung":


      Mario im Grünen:
      Spoiler anzeigen

      Originalzustand:


      Mit "Ditherfilter-Entfernung":



      Atari-Mode :s000:


      So! Bleibt noch das Problem, dass man dieses Feature bei 640x480 lieber abschaltet, weil man sonst horizontale Auflösung verliert. Auch das kann man in gewissen Grenzen (640x240 wird nicht erkannt) mit dem CPLD automatisieren. Gucken wir uns mal die CSync- und VSync-Signale an:
      Spoiler anzeigen

      GELB = CSync
      TÜRKIS = VSync
      240p:

      Hier sieht man, dass die HSync-Komponente im CSync-Signal einfach mit 15kHz weiter taktet. Der VSync dauert drei Zeilen, während des VSync-Pulses (low) kann man drei steigende CSync-Flanken zählen.

      480i:

      Bei Interlaced-Signalen muss dem TV irgendwie mitgeteilt werden, welches Field gerade übertragen wird -> wie er seine Scanlines versetzen muss. Das geschieht mit Hilfe dieser "Serration Pulses" - HSync-Pulse in doppelter Zeilenfrequenz, von denen es je nach Field vor oder nach dem VSync mehrere gibt. Uns interessiert hier nur die Tatsache, dass während des VSync-Pulses hier durch die doppelte Zeilenfrequenz nunmehr sechs steigende Flanken im CSync-Signal gezählt werden können.

      Diese Zählung war noch im XC9536XL unterzubringen und die Pixeldezimierung wird entsprechend ein- oder ausgeschaltet. Funktioniert auch :)
      ^o^)~
    • Mal ganz nebenbei bemerkt, man kann wohl das N64 permanent beschädigen, falls man etwas falsches in's VI-CTRL Register schreibt und versehentlich vbus clock enable high setzt. ^^
      Damit wird am selben wire ein zusätzlicher output driver aktiviert, was in der Verkaufsversion des N64 einfach nicht mehr vorgesehen ist.

      Es ist also Vorsicht geboten und man sollte nicht irgendwelche Werte ausprobieren! Bit 5 sollte immer low sein, weiß jetzt nicht aus dem ff ob lsb oder msb. ^^
      Circuit-Board Passwort-Gate - Februar 2014 - Ich war dabei
      Circuit-Board SessionID-Gate - August 2014 - Ich war dabei


    • ok, danke fuer die info. ich hatte einfach die codes aussem assembler forum genommen. habe selber gar keine ahnung wie man die erstellt und was welche ziffer bedeutet. bei der beschaedigung, tritt das sofort ein? weil dann teste ich immer auf meinem bastel n64 zuerst, bevor ich mir mein rgb und overclocked n64 schrotte.

      das war der verwendete:

      Goldeneye (PAL)
      8102316C 0000
      8102316E 3216
      8102319C 0000
      8102319E 3216
    • Ach kein Problem, dem kann Abhilfe geschaffen werden. Man muss wirklich kein Informatiker dazu sein, ich gehe mal etwas in's Detail.

      GS-Codes
      8102316C 0000
      8102316E 3216

      Der GS-Code 81XXXXXX YYYY bedeutet, dass 16Bit also 2Byte an die Addr 0xXXXXXX ständig in den Speicher geschrieben werden.
      Wie bei deinem Code wird dann an 0x2316C 0x00003216 geschrieben. Hier liegt einer der zwei ausgelesenen und zwischengespeicherten Inhalte aus VI_STATUS_REG.

      Crashkurs der relevanten Zahlensysteme falls nötig:
      de.wikipedia.org/wiki/Dualsystem
      de.wikipedia.org/wiki/Hexadezimalsystem

      Hier das Ganze nochmal binär:
      0x00 0x00 0x32 0x16
      MSB-> 00000000 00000000 00110010 00010110 <-LSB
      (ein Byte hat meisten 8 Bit, ich habe hier jedes Byte nach links aufgefüllt)

      Hier ist das LSB (also das Bit mit dem geringsten Einfluss auf den Wert) rechts und es wird nach links gelesen.

      Die erste Spalte hier in der Übersicht ist die Position des Bits dezimal von rechts nach links, es wird bei 0 angefangen zu zählen wie so häufig in der Informatik.
      Die Funktion wird mit 0 oder 1, aus- oder angeschaltet und das Eingerückte was dezimal steht, muss noch in's Dualsystem überführt werden also z.B. 2-Dez in 10-Hex.

      0x04400000 - VI_STATUS_REG or VI_CONTROL_REG - VI status/control (Read/Write)
      Bit Expl.
      0-1 Type (Pixel Size) (0-3, see below)
      >>> 0 = blank (no data, no sync)
      >>> 1 = reserved
      >>> 2 = 5/5/5/3 ("16" bit)
      >>> 3 = 8/8/8/8 (32 bit)
      2 Gamma Dither Enable (normally on, unless "special effect")
      3 Gamma Enable (normally on, unless MGEG/JPEG)
      4 DIVOT Enable (normally on if antialiased unless decal lines)
      5 reserved - always off <- Anmerkung: hier ist wohl dieses vbus enable
      6 serrate (always on if interlaced, off if not)
      7 reserved - diagnostics only
      8-9 anti-alias (aa) mode
      >>> 0 = aa & resamp (always fetch extra lines)
      >>> 1 = aa & resamp (fetch extra lines if needed)
      >>> 2 = resamp only (treat as all fully covered)
      >>> 3 = neither (replicate pixels, no interpolate)
      10 <- Anmerkung: ist nicht dokumentiert
      11 reserved - diagnostics only
      12-15 reserved -> Anmerkung: vonwegen - sollte immer 3 sein
      Anmerkung: 16 dither filter aktiviert: das ist dann allerdings schon im nächsten Byte und muss mit dem ersten GS-Code überschrieben werden, damit das AA wirklich aus ist. ^^

      Hier ist ein normales CTRL-Register setting, hier sieht man auch den aktivierten "dither filter" im dritten Byte von rechts.
      0x0001311e

      n64.icequake.net/mirror/www.ji…N64TEK.htm#videointerface
      Circuit-Board Passwort-Gate - Februar 2014 - Ich war dabei
      Circuit-Board SessionID-Gate - August 2014 - Ich war dabei


      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von saturnu ()

    • saturnu schrieb:


      Anmerkung: 16 dither filter aktiviert: das ist dann allerdings schon im nächsten Byte und muss mit dem ersten GS-Code überschrieben werden, damit das AA wirklich aus ist. ^^
      Un wie müsste man den GameShark-Code abändern, damit dieses Dithering deaktiviert wird? Mir ist nämlich bei dem Code aufgefallen, dass das Bild zwar schärfer wird, aber leider auch das Dithering verstärkt auftritt.
    • Ich habe auch keine Ahnung. ^^
      Mein letzter Patcher kann übrigens die Speical Features einzeln manipulieren.

      Das wäre dann sowas wie:
      u64aap -tg rom.z64

      Allerdings funktioniert der nur mit Roms in denen die entsprechende Funktion gefunden wird, somit darf sie z.B. nicht komprimiert sein. ^^
      Ich hatte nicht viel lust solche Fälle jetzt auch noch alles einzubauen, da kommt man ja vom Hundertsten ins Tausendste. ^^

      N64 - Antialiasing & Co. können nun via GameShark ausgeschaltet werden
      Circuit-Board Passwort-Gate - Februar 2014 - Ich war dabei
      Circuit-Board SessionID-Gate - August 2014 - Ich war dabei


    • ikari_01 schrieb:

      Weiß nicht ob "Gamma Dithering" das ist, versuch mal 3212 statt 3216.

      Das hat leider nicht funktioniert. Man sieht das Dithering vor allem am Himmel, an den Glasscheiben im Turm oder an den rot/weissen-Fahrbahnmarkierungen.


      Wollte das ganze dann auch mal mit dem Everdrive ausprobieren. Goldeneye ließ sich mit aktivierten Cheats gar nicht starten.
      Habe dann ein OS-Update gemacht (von 2.07 auf 2.13). Nun funktionieren die Cheats auch mit Goldeneye. Aber auch da bleibt das Dithering.

      Seltsamerweise funktionieren seit dem ED OS-Update die Cheats mit dem Spiel Duke Nukem Zero Hour nicht mehr.
    • Könnte jemand mir eventuell erläutern was die unterschiedlichen Optionen bewirken können?
      Mit der Begrifflichkeit Dithering im allgemeinen kann ich noch was anfangen aber Gamma Correction, Gamma Dithering DIVOT, NO-TABLE sagen mir nichts. Bzw. was ändern diese am Bild?

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von xadox ()