Frage:
Ist es möglich, das Video eines Emulators zu skalieren, um mehr vom Level zu sehen?
user297876
2016-02-09 03:01:33 UTC
view on stackexchange narkive permalink

Ich weiß nicht, ob es möglich ist, aber gibt es eine Möglichkeit, die Videoeinstellungen eines Emulators zu optimieren, um ein Level (z. B. Super Mario Bros) von Anfang bis Ende anzuzeigen?Wie hier:

Super Mario Bros 1-1 Full level map

Ich weiß, dass das Bild von oben photoshoppt ist (denke ich), aber kann ein Emulator das tun und dann immer nochspielen können?

Ich würde es nicht vermuten, da die Spiele selbst nicht so gespielt werden sollten. Ich vermute, dass es tatsächlich technische Einschränkungen gibt, die verhindern, dass dies möglich ist - es geht nicht wirklich nur darum, ... herauszuzoomen.
Einverstanden mit dem, was @AshleyNunn sagte.Emulatoren sollen gebaut werden, um zu emulieren, und nicht um die Funktionsweise des Spiels zu verändern.Die Definition von emulieren reproduziert im Grunde genommen die Funktion eines Systems (entspricht oder übertrifft sie sogar).Obwohl ich etwas "betrügen" und mit Änderung der Framerate sagen sollte, speichere Zustände usw.
Ich habe zwar am Anfang das gleiche wie du, aber immer noch ... Wenn ein "Pseudo-Emulator" erstellt wird und diese Option hat, wird es eine großartige sein ..: D.
Wo würde man überhaupt einen Monitor / Bildschirm finden, der breit genug ist, um alles auf einmal so anzuzeigen?Andernfalls würde ich mir vorstellen, dass der vertikale Render viel zu klein wäre, um ihn überhaupt zu sehen.o_O
Nun, ich wollte das Loch nicht sehen.Ich wollte nur den Bildschirm des Emulators anpassen, aber die Spielelemente (z. B. Mario) sollten dieselbe Größe einnehmen.Daher sollte die Größe des Emulatorfensters die Spielauflösung nicht beeinflussen
Ich bin verwirrt ... Sie möchten die Größe der Dinge anpassen, aber nicht ihre Auflösung?In beiden Fällen gibt es keinen Emulator, von dem ich weiß, dass er dies derzeit tut.
Funktioniert eher für 3D-Spiele mit festen Funktionen, bei denen Sie die Kamera (möglicherweise) unabhängig von Ihrem Charakter bewegen können.Und mit modernen Shader-basierten 3D-Spielen funktioniert es nicht mehr, da der Emulator nicht weiß, wie das geht.
@immibis: gut Es könnte, wenn es dafür ausgelegt wäre.Aber Sie mussten die Funktion für jedes unterstützte Spiel auf eine andere einzigartige Weise hart codieren.
@C-dizzle, Das Bild ist 3392px breit, 4K ist 3840p breit.Viel breit genug!
@user297876 Basierend auf Ihrer Frage und Ihrem [Kommentar] (http://gaming.stackexchange.com/questions/254767#comment353769_254772) scheinen Sie falsch zu verstehen, was ein Emulator tut.Es ist das Programm (d. H. Das Spiel), das bestimmt, was auf dem Bildschirm angezeigt wird. Die Konsole oder der Emulator stellen nur die Ressourcen bereit, die das Programm benötigt, um seine Aufgabe zu erfüllen.Um das zu tun, was Sie richtig beschreiben, müssen Sie das Programm zurückentwickeln und auf ein neues System portieren.Das ist bei der allgemeinen Spieleentwicklung der Fall.Ältere Konsolen schneiden viele Ecken ab, so dass Tricks möglich sind, die auf ihrer 2D-Natur und Videopuffern * beruhen *.
Ich weiß, was ein Emulator macht. Ich habe diese Frage nicht gestellt, weil ich mit den Emulatorfunktionen nicht vertraut bin, aber ich habe mich nur gefragt, ob dies möglich ist. Eine Sache, die ich nicht weiß, ist, wie NES-Spiele gemacht werden.Alle Antworten auf meine Frage (siehe unten) boten mir einen neuen Horizont dafür, wie Entwickler verschiedene Arten von Tricks und Opfern verwendeten, um die maximale Leistung ihrer "kleinen" CPU- / Video- / Audiokomponenten zu erzielen. Bevor ich diese Frage stellte, dachte ich, dass NES-Spiele auf standardmäßige Weise erstellt wurden (wie eine generische Spiele-Engine für Kassetten).
Sechs antworten:
Rob Watts
2016-02-09 03:15:19 UTC
view on stackexchange narkive permalink

Kurze Antwort: Nein

Bei älteren Systemen (sowohl für Videospiele als auch für Heimcomputer) ist zu beachten, dass Speicher früher ein Luxus war. Sie hatten weder Gigabyte (noch Megabyte) Speicher noch RAM. Das Rendern eines gesamten Levels, wenn nur ein kleiner Teil angezeigt würde, wäre eine enorme Verschwendung wertvoller Computerressourcen gewesen.

Es gibt auch keinen Grund anzunehmen, dass jedes einzelne NES-Spiel codiert ist seine Karte auf die gleiche Weise. Es ist sehr wahrscheinlich, dass sie im Laufe der Zeit bessere Möglichkeiten gefunden haben, um dies zu tun. Selbst in ähnlichen Spielen (SMB1 vs SMB3) würden die Karten anders im Speicher gespeichert. Dies bedeutet, dass es keinen Grund gibt zu erwarten, dass ein Emulator weiß, wie man ein bestimmtes Spiel nimmt und die vollständige Karte für das aktuelle Level rendert.

Es gibt auch viele andere Probleme damit - das weiß ich in SMB1, Feinde, die sich außerhalb des Bildschirms befinden, bewegen sich nicht. Würden Sie erwarten, dass sie sich die ganze Zeit bewegen oder nur, wenn der aktive Teil des Bildschirms sie erreicht? Ersteres wirkt sich auf das Gameplay verschiedener Spiele aus, während letzteres zusätzliche Logik erfordert, die derzeit nicht im Spielcode vorhanden ist.

Selbst wenn Sie den Spielcode geändert haben, wird dies kein Emulator sein kann damit umgehen, es sei denn, Sie ändern auch den Emulator. Der Emulator muss in der Lage sein, Spielkarten unterschiedlicher Größe zu verarbeiten und dem Spiel mehr Ressourcen zur Verfügung zu stellen.

Vielen Dank für Ihre Antwort. Sie haben Recht, damit ein Emulator diese Art von "Verkleinern" ausführen kann, muss er wissen, wie das Spiel geschrieben wurde. Daher sollte für jedes Spiel ein Emulator erstellt werden, um dies zu tun, und es ist Zeitverschwendung.
Das hat sich natürlich nicht geändert - moderne Spiele behalten auch nicht ihre ganze Welt auf einmal im Gedächtnis, geschweige denn rendern sie.Wir finden immer bessere Dinge, die mit dem zusätzlichen Speicher und der CPU zu tun haben, als sie damit zu verschwenden, Dinge zu zeichnen, die sowieso nicht sichtbar sind: D.
"In SMB1 bewegen sich Feinde außerhalb des Bildschirms nicht" - Es wäre genauer zu sagen, dass Feinde überhaupt nicht existieren, bis sie auf dem Bildschirm erscheinen.
@duskwuff: Falsch.Bowser atmet seine Flammen.(Auch wenn das Sprite auf technischer Ebene nicht existiert, ist er laut Storyline-Theorie zu diesem Zeitpunkt eindeutig da.) Und ich würde sagen, dass die Piranha-Pflanzen existieren, bevor sie sichtbar sind.Hmm ... mal sehen, ob ich ganz schnell ein paar andere finden kann.Ich vermute, Lukitu könnte (kurz) auch.Wenn Steine Spalte für Spalte erstellt werden, wird der Schwimmbereich direkt über dem Rohr (Originalversion) für Super Mario erst dann potenziell tödlich, wenn die nächste Spalte erstellt wird.
Das ist auch nicht richtig.Die Dämmerung ist richtig, dass die Feinde "nicht existieren", bis sie nah genug an der Kamera sind und in der Welt erscheinen.Was die Geschichte betrifft, ja, Bowser schießt Feuer auf dich und diese Priana verstecken sich in den Rohren, aber vom Standpunkt der Erinnerung aus: Diese Priana existieren oben auf den Rohren, und die "Animation" ist nur, dass ihre Hitbox verschwindet, während sie auf ihren Rohren verschwindenZelle.Ebenso wird Bowsers Feuer in Burglevels automatisch erzeugt, bis Bowser erscheint. In diesem Fall wird sein Sprite als Referenz verwendet.
Nebenbei bemerkt: Wenn Sie ein SMB1-Level auf Super Mario Maker portieren, werden Feinde schneller, da SMM einen breiteren Bildschirm hat.
Damian Yerrick
2016-02-09 05:45:13 UTC
view on stackexchange narkive permalink

Es gibt zwei Möglichkeiten, dies zu tun: eine generische und eine spielspezifische.

Beobachten der Bildlaufnaht

Das Nintendo Entertainment System verfügt über 2 KB Videospeicher in der Steuerung Deck. Dies reicht für 256 x 480 Pixel oder 512 x 240 Pixel der Karte aus, abhängig vom namentabellbaren Spiegelungsmodus, den das Game Pak auswählt. Da der Speicher in einem Game Pak so klein ist, z. B. 40 KiB für Super Mario Bros. , speichern Spiele die Karte komprimiert und dekomprimieren sie schrittweise in den Videospeicher, während sich die Kamera durch ein Level bewegt.

Nova the Squirrel

Nova the Squirrel © 2018 Joshua Hoffman
Animation neu aufgedeckter Bereiche in einer Bildlaufebene, aufgenommen von " PPU Scrollen" im NESdev Wiki. Der Videospeicher ist oben; Der gerenderte Hintergrund befindet sich unten. Die orangefarbene Klammer zeigt die aktuelle Bildlaufposition an. $ 2000 und $ 2400 sind die hexadezimalen Basisadressen im Videospeicher der beiden Tilemaps.

Ein speziell modifizierter Emulator könnte auf Schreibvorgänge in das Bildlaufregister und achten Protokollieren Sie neu aufgedeckte Bereiche der Karte. Ein solches Merkmal würde nur besuchte Gebiete und möglicherweise eine Annäherung der feindlichen Startpositionen basierend auf Sprites anzeigen, die durch das neu besuchte Gebiet gehen. Es würde überhaupt keine nicht besuchten Bereiche anzeigen, ähnlich wie eine Karte in einem PC-Echtzeit-Strategiespiel unerforschte Bereiche auslässt. Wenn die Karte eines Spiels jedoch nicht zufällig ausgewählt wurde, kann ein Emulator die Karte aus einem vorherigen Durchspielen desselben Levels zwischenspeichern und offenlegen, was kommen wird.

Reverse Engineering

Obwohl Verschiedene Spiele verwenden unterschiedliche Kartendatenformate. Mehrere Spiele wurden so detailliert rückentwickelt, dass ein PC-Programm geschrieben werden kann, das eine gesamte Karte dekodiert. Oft werden die Ergebnisse eines solchen Reverse Engineering auf RomHacking.net veröffentlicht. Einige Spiele werden so detailliert verstanden, dass Benutzer Level-Editoren erstellt haben, z. B. viele Spiele in Mario , Zelda , Metroid und Mega Man -Serie.

+1 weil ich die technischen Referenzen liebe.Dankesehr.
Randnotiz: Die Dollarzeichen in der Animation geben hexadezimale Speicheradressen an, nicht Dollar.
Um die Frage zu beantworten: "Ist es möglich, das Video eines Emulators zu skalieren, um mehr von dem Level zu sehen?"Was sagst du?Welchen Emulator kann das OP verwenden?
@Octopus Ich sage, ein Emulator mit dieser Funktion könnte erstellt werden, nicht dass ein bestimmter Emulator mit dieser Funktion für die Öffentlichkeit verfügbar ist.
Dies wurde angewendet, um 8 Spieler zeitbasiert nacheinander NES-Spiele auf einem 360 ° -Bildschirm spielen zu lassen: siehe [Artikel] (http://arstechnica.co.uk/gadgets/2015/12/8-players-8-projectors)-8-Bit-und-nur-ein-Nintendo-Unterhaltungssystem /) und [Papier] (https://cgl.ethz.ch/publications/papers/paperZun15c.php)
https://arstechnica.com/gaming/2018/08/widenes-emulation-expands-nes-scenes-past-the-usual-sd-screen-borders/ habe gerade diesen Artikel gesehen - jemand arbeitet an dem Cache-basierten Ansatzdu hast erwähnt.
TOOGAM
2016-02-09 05:59:07 UTC
view on stackexchange narkive permalink

Ja, das gewünschte Ziel kann mit Sicherheit erreicht werden. Diese Behauptung ist nicht nur eine blinde Theorie: Es wurde bereits etwas sehr Ähnliches getan.

Zunächst erkenne ich die von anderen erwähnte Schwierigkeit an. Da Level-Daten für verschiedene Spiele wahrscheinlich auf unterschiedliche Weise gespeichert werden (z. B. Diskussion über Zeldas Kartendaten ), Ein Emulator würde für jedes Spiel benutzerdefinierte Daten benötigen. Durch eine wachsende Sammlung von Plug-Ins könnte dies erreicht werden. Also komme ich zu dem gegenteiligen Schluss. Dies könnte für die begrenzte Anzahl von Spielen geschehen, die kommerziell veröffentlicht wurden, genau wie MMCs hinzugefügt wurden. Dies wäre jedoch aufgrund einiger erheblicher Schwierigkeiten ein recht zeitaufwändiges Projekt.

Es gibt mehrere Spiele mit Level-Editoren. Solche Editoren wissen, wie man Daten von den Kassetten liest, und diese Software war nützlich für Fans, die nach Karten gesucht haben, von denen sie überzeugt waren, dass sie absolut korrekt sind.

Schauen wir uns jedoch einen anderen Ansatz an, der darauf reagiert was eigentlich gefragt werden sollte. Eine andere Möglichkeit besteht darin, die Grafiken beim Rendern zu erfassen. Sie haben nicht die Möglichkeit, "das zu tun" (Karte erstellen) und dann "(in der angegebenen Reihenfolge nach Abschluss des ersten Schritts)" noch spielen zu können ", wie in der Frage gestellt. Dies zeigt also nicht die gesamte Karte unmittelbar vor dem ersten "Durchspielen".

Was Sie erhalten, ist eine ziemlich automatisierte Möglichkeit, die zuvor auf dem Bildschirm angezeigten Kartendaten zu sehen, die ziemlich automatisch zusammengefügt wurden und Karten erstellen könnten. (Selbst wenn Änderungen erforderlich wären, könnte es viel einfacher sein, solche Karten als Ausgangspunkt zu haben, als zu versuchen, Dinge von Grund auf neu zu erstellen.) Da die meisten NES-Spiele Kartendaten verwenden, die bei einem späteren "Durchspielen" wiederholt werden (statt zufällig) Kartendaten), könnten solche Karten verwendet werden, um sie vor dem erneuten Durchspielen anzusehen. Basierend auf Kommentar des Frageplakats , das Ziel ist nicht unbedingt, die gesamte Karte sofort zu sehen.

Basierend auf diesem tatsächlichen Ziel ist dies definitiv ein Ziel, das erreicht werden kann (zumindest mit begrenztem Erfolg). Ein Video zeigt etwas sehr Ähnliches, das tatsächlich gemacht wurde, indem Folgendes verwendet wurde:

  • eine echte NES
  • echte NES-Controller
  • benutzerdefinierte Hardware, die kombiniert wurde Eingabe von mehreren NES-Controllern
  • Hardware, die das angezeigte Video verarbeitet hat

Obwohl Kartendaten nicht für die langfristige Verwendung gespeichert wurden, da dieses Projekt einige geringfügig anders war Ziele zeigte das Ergebnis Kartendaten, nachdem es verwendet wurde. Ich gehe davon aus, dass die Technik ziemlich einfach geändert werden kann, um die Kartendaten zu speichern, anstatt die Kartendaten zu verwerfen. Tatsächlich haben sie einige Teilkarten veröffentlicht (die in einer PDF-Datei enthalten sind und von denen einige in der Ars Technical-Veröffentlichung des Projekts erwähnt werden). Ich erinnere mich, dass ich in einem Video, das dieses System demonstriert, mindestens die folgenden Spiele gesehen habe:

  • Super Mario Bros. (1)
  • Super Mario Bros. 2 (amerikanische Veröffentlichung) (auch bekannt als "Super Mario USA")
  • Super Mario Bros. 3
  • Probotector (überarbeitete Version von "Contra", wie in Europa veröffentlicht)
  • Castlevania
  • Lebenskraft
  • ExciteBike

Dies zeigt dieses großartige Video: Entfaltung der 8-Bit-Ära (8 Bit, 8 Spieler) , 8 Projektoren und ein Nintendo Entertainment System) . Bereiten Sie sich darauf vor, dass Ihnen der Kiefer herunterfällt, weil Sie so beeindruckend sind. Weitere Details finden Sie auf der Webseite, auf die in den Kommentaren des YouTube-Videos verwiesen wird, und auf die hier auch verwiesen wird: Artikel von Ars Technica: 8 Bit, 8 Player, 8 Projektoren und ein Nintendo Entertainment System .

Aus der PDF-Datei (verteilt von Entfaltung der 8-Bit-Ära ): "Da unser Ziel eine 360-Grad-Projektion war, haben wir uns auf Side-Scrolling-Spiele konzentriert und einen Tracking-Algorithmus entwickelt, der für diesen Anwendungsfall entwickelt wurde. Unsere Methode unterstützt derzeit kein vertikales Scrollen oder kompliziertere Kamerabewegungen." (Ich denke, die Leute hätten eine weniger interessante Erfahrung gemacht, wenn sie in der Lebenskraft weit genug gekommen wären.)

Vielen Dank für dein Feedback ! All diese Diskussionen aus einer einfachen Frage lassen mich ein bisschen mehr darüber nachdenken, wie Spiele hergestellt werden, insbesondere auf Kassetten.Ich würde gerne einen Kurs darüber an der Fakultät für Informatik haben.:) :)
Ich empfehle "Racing the Beam", die frühe Geschichte von Atari aus der MIT-Gruppe "Plattformstudien".https://mitpress.mit.edu/books/racing-beam
Probst
2016-02-09 21:31:32 UTC
view on stackexchange narkive permalink

Ja, da Sie keinen Emulator angegeben haben, kann der Dolphin GC / Wii-Emulator die Ansicht auf mehr als das Original erweitern. Ich habe 3 Monitore und habe mehrere Spiele in Dolphin mit 5760 x 1080 gespielt.Es kann jedoch eine Menge seltsamer Probleme geben. Oft sind Entwickler und Künstler faul mit Dingen, die nicht auf dem Bildschirm angezeigt werden sollen, und die Dinge an den Außenkanten werden verzerrt, verhalten sich seltsam oder werden es einfach nicht seinDort.Diese Probleme treten selbst bei beliebten PC-Spielen häufig auf.

Ich würde es NICHT "faul" nennen, mich nicht darum zu kümmern, Dinge richtig zu handhaben, die von Natur aus nicht verwendet werden.Es ist, als würde man einen Automobilingenieur "faul" nennen, weil er keinen Chevy Cobalt für interdimensionale Reisen entworfen hat.
Nun, vielleicht ist es bei emulierten Spielen nicht so, da sie für bestimmte Hardware- und Ausgabeauflösungen gedacht sind, aber bei PC-Spielen.Wie zum Beispiel League of Legends, wenn ich es auf 3 Monitore stelle, ist der Hintergrund, der die Karte umgibt, nicht groß genug und es endet damit, dass alles nur schwarz bleibt.Das Spiel unterstützt 5760x1080 ohne Mods, so dass sie wissen, dass die Leute es tun werden, und sie hätten das Hintergrundbild etwas größer machen können, aber sie waren zu faul, um es zu tun.
In LoL sind sie möglicherweise auch besorgt über unfaire Vorteile bei der Verwendung mehrerer Monitore.
Konsolen wie die Wii können an ein einzelnes Display mit einer bestimmten maximalen Auflösung angeschlossen werden.Der Spieleentwickler muss die Engine nicht so gestalten, dass klar definierte Inhalte außerhalb des 854x480-Ansichtsfensters der Wii gerendert werden.Möglicherweise befinden sich mehr Daten außerhalb des Ansichtsfensters im Framebuffer, aber Sie sollten nicht erwarten, dass diese genau definiert sind.
"Bei emulierten Spielen ist dies nicht der Fall, da sie für bestimmte Hardware- und Ausgabeauflösungen gedacht sind. Bei PC-Spielen ist dies jedoch der Fall", sagte ich buchstäblich nur, aber trotzdem danke ...
bwDraco
2016-02-12 12:08:42 UTC
view on stackexchange narkive permalink

Dies ist unter Live-Emulation des NES nicht möglich.

  • Für die Beschreibung muss die Grafik-Engine Inhalte rendern, die sich außerhalb des Ansichtsfensters befinden a> (der sichtbare Bildschirmbereich). Während moderne 3D-Engines Inhalte außerhalb des Ansichtsfensters in den Framebuffer rendern (wodurch das Ansichtsfenster erweitert werden könnte, um den zusätzlichen Inhalt anzuzeigen), ist dies bei 2D-Spielen der Der Typ Super Mario Bros. wäre auch kein guter Weg, um die begrenzten Hardwareressourcen des NES zu nutzen.

  • Tatsächlich ist das -Video Hardware auf dem NES verfügt nicht einmal über einen Framebuffer im modernen Sinne des Grafikspeichers, der gerenderte Videobilder enthält, die auf dem Bildschirm angezeigt werden sollen. Es speichert Kacheln und Sprites im Speicher und rendert sie direkt auf dem Bildschirm, sodass das, was Sie beschreiben, auf dem NES technisch nicht möglich ist. (Es gab verschiedene Chips, die die Funktionen der Grafikhardware erweitern konnten, aber keiner davon ermöglicht es der Konsole, in einen Framebuffer zu rendern, geschweige denn ausreichend Speicher für einen bereitzustellen.)

Daniel
2020-06-01 03:25:27 UTC
view on stackexchange narkive permalink

Ja, das kannst du. Sicher. Alle NES-Spiele (und ähnliche Spiele), die Scrollen ausführen, haben alle Positionen der Kacheln von allem, was angezeigt werden kann, irgendwie im ROM-Speicherchip registriert. Diese Informationen werden vom NES-Originalprogramm nur gelesen, wenn die Szene sichtbar ist, da die Systeme dieser Ära keine Rechenressourcen zu verschwenden hatten. Aber selbst wenn die Szene auf dem Bildschirm, der auf dem RAM-Speicherchip ausgeführt wird, nicht lebendig ist, existiert die Szene irgendwie trotzdem auf dem statischen ROM-Speicherchip. Der Standardzweck eines Emulators besteht darin, das ursprüngliche Programm so originell wie möglich auszuführen, wobei nur sehr wenige beabsichtigt sind, die Dinge irgendwie erweitert laufen zu lassen. Dies gilt jedoch nicht für die Grafikanzeige. Emulatoren haben die Absicht, irgendwie eine Art grafische Erweiterung vorzunehmen. Ein geschickter Programmierer mit dem Willen, eine grafische Erweiterung des Sichtfelds auf dem NES-Emulator durchzuführen, kann theoretisch die vollständige Karte im ROM lesen und den emulierten Bildschirm oben auf der vollständigen Karte an der richtigen Stelle in jedem Frame platzieren und auf dem Monitor a anzeigen Das benutzerdefinierte Fenster wird von dieser vollständigen Karte abgeschnitten, wobei der tatsächlich emulierte Originalbildschirm einen kleineren Teil des angezeigten benutzerdefinierten Zuschnitts einnimmt. In diesem Fall bewegen sich Objekte jedoch fast nie, wenn sie sich außerhalb des ursprünglichen Sichtfelds befinden. Es sei denn, ein anderer geschickter Programmierer beschließt, ein Netzwerk mit künstlicher Intelligenz zu programmieren, das das Verhalten beim Kacheltausch anhand der Bewegungen des Charakters und der Spielzeit als Eingaben maschinell erlernen kann. In diesem Fall bewegen sich viele Objekte auch dann, wenn sie sich außerhalb des ursprünglichen Bildschirmbereichs befinden, solange das künstliche neuronale Netzwerk intelligent genug ist, um eine Logik für diese Bewegung auszugeben, die das Objekt genau an der Stelle platziert, an der es auf den ursprünglichen Bildschirm gelangt. Das Problem ist, dass bis jetzt noch niemand diese Dinge getan hat.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...