In welcher Programmiersprache wurde Super Mario Bros. geschrieben? [geschlossen]

65

Super Mario Bros. ist mit 40,23 Millionen verkauften Exemplaren definitiv das berühmteste Videospiel, das bisher erschaffen wurde. http://en.wikipedia.org/wiki/List_of_best-selling_video_games

In welcher Programmiersprache wurde es geschrieben? Hat jemand eine Original-Code-Referenz?

Luca Matteis
quelle
7
Ich habe das Gefühl, dass viele der alten NES-Spiele in maschinenspezifischer Zusammenstellung geschrieben wurden.
Meagar
7
Kein Duplikat, da hier bestimmte Codebeispiele aus einem bestimmten Spiel angefordert werden.
AttackingHobo
5
Ich sehe den Wert nicht darin, viele zu haben "In welcher Sprache wurde X geschrieben?" Fragen, egal wie bemerkenswert X ist, es sei denn, es war aufgrund der Entwicklungsplattform bemerkenswert. Außerdem werden bestimmte Codebeispiele eines Spiels angefordert, das noch urheberrechtlich geschützt ist (und noch verkauft wird) und nicht absichtlich als Quelle verfügbar ist.
3
@Toad: Ja, aber Sie haben im Allgemeinen nicht das Recht, es online zu stellen oder eine Kopie herunterzuladen (auch wenn Sie das Spiel selbst besitzen) oder abgeleitete Werke zu erstellen, die auf Ihrem eigenen Lesen des Codes basieren.

Antworten:

76

6502 Assembler

Hier ist eine Forum-Seite zum Hacken des ROM. http://forums.selectbutton.net/viewtopic.php?t=26956&sid=1a883209e1ba63877bcd58c007bb63ae

Es sollte auch alle benötigten Code-Referenzen enthalten.

Ein paar Beiträge weiter unten befindet sich ein Link zu einer Zip-Datei, die diese Elemente enthält, die zum Bearbeiten / Hacken des Spiels benötigt werden.

  • ca65 - ein 6502-Assembly-Compiler von http://www.cc65.org/
  • ld65 - ein 6502-Linker von http://www.cc65.org/
  • smbdis.asm - eine umfassende Demontage von Super Mario Bros.
  • smb.chr - Super Mario Bros.-Grafik (Character-ROM-Daten)
  • smb.hdr - Super Mario Bros. ROM-Header (iNES-Header)
  • MAKESMB.BAT - Eine Batch-Datei, die ich erstellt habe, um den Kompilierungsprozess zu automatisieren.
  • 6502jsm.doc - eine Zusammenfassung der 6502-Anweisungen.
AttackingHobo
quelle
6
Wow, perfekte Antwort! Kudos
DFectuoso
31
Ich bin selbst verwirrt von dieser Antwort. Sie verweisen im Grunde genommen auf eine ausführbare Datei (das ROM) und behaupten, dass sie in der Assembly geschrieben wurde ... weil sie zerlegt wurde. Es ist eine ausführbare Datei. Natürlich kann es zerlegt werden . Nach dieser Logik wurde jedes jemals geschriebene C / C ++ - Programm tatsächlich in Assembly geschrieben. Um zu beweisen, dass dies in Assembly geschrieben wurde, müssen Sie tatsächlich zeigen, dass Nintendo es in Assembly geschrieben hat, und nicht, dass Sie die ausführbare Binärdatei zerlegen können.
Nicol Bolas
52

Fast alle NES-Spiele wurden in 6502-Assembler von Hand geschrieben, genau wie beim Commodore 64, dem Apple] [e usw. Die wenigen, die in C geschrieben wurden, galten als schrecklich langsam, da der NES nur 2 MHz beträgt und verfügt über 2 KB Onboard-RAM (mit einem 8-KB-Fenster, in dem die Kassette weitere Patches ausführen kann). Eine sorgfältige Montage, um die besondere Architektur des NES voll auszunutzen, war viel effektiver.

Halte inne und denke darüber nach ... Spiele wie Super Mario Bros 3 und Kirby's Adventure liefen mit 2 MHz. Vergleichen Sie, wie reich sie sind, mit heutigen Spielen, die Gigahertz und Hunderte von Megabyte RAM schlucken ...

eine schlechte Idee
quelle
3
@Lohoris Ich habe mich gerade angemeldet, um über diesen Kommentar abzustimmen. Und zu meiner Überraschung habe ich es bereits getan
NSAddict 19.11.13
5
Was ist ein Beispiel für ein lizenziertes NES-Spiel, das in C geschrieben wurde?
tgies
1
[Zitieren benötigt]
Almo