web-dev-qa-db-fra.com

Des jeux NES classiques ont-ils été open source?

Je viens de jouer à une partie de RBI Baseball dans une fenêtre de navigateur.

En soi, cela me semble tout simplement incroyable. Quand j'étais jeune, la NES était une boîte magique, capable d'offrir des heures de plaisir aux jeunes enfants du monde entier.

Maintenant, des décennies plus tard, je suis programmeur. Et je peux apprécier la programmation qui est entrée dans les jeux qui ont été développés avec du matériel plus primitif il y a seulement quelques décennies. En fait, un jour, je m'attends à ce que le code de certains de ces jeux soit inscrit dans le Smithsonian.

Ma question de programmation:

Des jeux NES classiques (comme RBI Baseball) ont-ils été open source, et si oui, où puis-je trouver le code à étudier?

À défaut, y a-t-il tout jeux NES pour quel code source est disponible pour étudier?

Je pense qu'il vaudrait la peine d'apprendre de leur exemple.

Par exemple:

  • Ont-ils utilisé une programmation orientée objet?
  • Ont-ils utilisé des modèles de conception pour maintenir la maintenabilité du code?
44
Jim G.

Non, du moins pas que je sache (et j'ai cherché).

NES est apparu juste après le crash du jeu vidéo en 1983, la principale raison pour laquelle le marché s'est effondré était le flot de mauvais jeux, incitant les clients à ne pas acheter un seul jeu, car il n'y avait aucun moyen de savoir quel jeu était bon.

Ainsi, Nintendo, lors de l'introduction de NES (et de toutes les autres consoles de l'époque, comme Master System de SEGA), a décidé que seuls les jeux approuvés seraient publiés, ET que tout ce qui est open source serait une rupture de contrat avec de lourdes amendes, la raison de cela. est qu'en ne publiant pas d'API publique, il serait plus difficile pour les "homebrews" d'inonder le marché.

Aujourd'hui, Nintendo est beaucoup plus facile à autoriser les jeux, voir le flot de jeux de merde sur la Wii, mais toujours aucune console ne vous permet d'utiliser leur "vraie" API, pour éviter l'inondation, il y a même un problème quand quelqu'un utilisé un moteur GPL (ScummVM) sur Wii, causant des problèmes, car la libération de la source d'un jeu pour une console Nintendo est une rupture de contrat, et la GPL exige que la source soit publiée, dans ce cas particulier, les jeux ont été retirés des étagères .

Et non, XNA et PS3 Linux ne sont pas vraiment des API de console, les deux imposent de sévères limitations sur ce que vous pouvez faire avec la console.

Peut-être que vous pouvez trouver des homebrews ou des jeux d'ingénierie inverse. Mais je suppose que ce n'est pas ce que vous avez demandé.

La source des remakes et des ports peut parfois être trouvée, mais ceux-ci n'utilisent pas l'API de la console.

26
speeder

Vous l'avez peut-être trouvé depuis, mais Metroid (l'original, pour NES/Famicom) a été démonté et le code (dans le magnifique ASM) a été publié sur Romhacking.net.

Lien direct.

13
Russel

Si vous êtes intéressé par la programmation NES, vous devriez consulter Episode 91 - Table ronde de la réunion de Tengen of Retronauts . (Notez qu'il s'agit de l'épisode 91 de la version originale du podcast, de nouveaux épisodes peuvent être trouvés @ http://www.retronauts.com/ )

Il s'agit essentiellement d'un groupe d'anciens programmeurs NES qui se souviennent du développement de jeux sur le système (et d'autres systèmes rétro). Ils plongent de temps en temps dans les trucs techniques, ce qui est vraiment fascinant.

12
James McMahon

Je n'ai jamais travaillé dans l'industrie du jeu vidéo, mais j'en ai lu pas mal et je parle de temps en temps avec des amis qui le font, donc je vais essayer d'expliquer plus ou moins quelle est la différence entre un jeu et autre application, concernant les méthodologies de programmation.

La première chose à comprendre est qu'un jeu est un produit unique. Ce n'est pas comme une feuille de calcul ou un traitement de texte, où vous pouvez publier de nouvelles versions améliorant et étendant la base de code précédente.

La deuxième chose, c'est que vous devez libérer le jeu dès que possible. Habituellement, plus vous passez de temps dans un jeu, pire ce sera en comparaison avec les autres jeux de l'époque. Cela est principalement vrai pour les jeux PC, où le matériel évolue beaucoup plus rapidement que dans le monde de la console, mais s'applique toujours dans une large mesure (les jeux continuent de s'améliorer même avec le même matériel, car de meilleurs outils et algorithmes sont développés).

La troisième chose est que les jeux doivent généralement pousser le matériel à la limite. Vissez donc tous les modèles élégants qui rendraient votre code plus beau et plus facile à gérer s’ils le faisaient fonctionner plus lentement.

Donc, ce à quoi je m'attendrais après avoir disséqué un vieux code source de jeu NES, c'est juste du code spaghetti, la plupart écrit en Assembly avec beaucoup de hacks de bas niveau étroitement liés à l'architecture de la machine.

J'espère que ma réponse vous sera utile.

7
fortran

Je recommanderais de regarder nesdev.com si vous êtes intéressé par le développement de jeux NES. Ils ont une documentation détaillée.

3
mani1986

Vous ne trouverez probablement pas de source pour les jeux originaux, mais il existe de nombreux homebrews et une chaîne d'outils relativement mature. Comme c'est la réponse préférée, Google est votre ami. Mais pour vous lancer, voici un tutoriel relativement décent:

http://www.bestdamnpodcastever.com/millerblog/?p=72 via "The Wayback Machine"

2
Goyuix

Les jeux NES ont été développés uniquement (pour autant que je sache) en assembleur, et je suppose que le code source est perdu depuis longtemps, après ces nombreuses années.
Quoi qu'il en soit, le code source de l'assembleur n'est pas si éloigné du code machine, donc il peut ne pas être trop révélateur comme il le ferait en C ou Java code.
Concernant l'orientation des objets et les modèles de conception, encore une fois, c'était l'assembleur et les années 80, ne vous attendez à rien de tout cela.

1
Petruza