Question

Je viens de regarder Super Mario Bros.-1 Problème mondial sur YouTube et j'ai vraiment commencé à m'interroger sur le code derrière ces jeux.Quelle langue a été utilisée ?Qu’en est-il de l’OS des consoles de jeux vidéo ?Existe-t-il un site Web proposant des ressources sur ce sujet ?(Je suis un joueur vidéo des années 90, donc je suis particulièrement intéressé par la programmation derrière ces jeux, mais n'hésitez pas à en faire un wiki et à inclure des liens vers des ressources sur la programmation de jeux vidéo en général, si vous le souhaitez)

Était-ce utile?

La solution

Après avoir un peu travaillé sur un émulateur NES (je l'ai décodage des opcodes, mais aucun autre matériel est émulé), je peux peut-être partager quelques réponses.

  1. Pour la plupart des jeux assembleur a été utilisé. Optimisation des compilateurs, si elle est disponible pour le CPU étaient loin d'être aussi bon il y a 20-30 ans comme aujourd'hui. Pour obtenir des performances, vous avez besoin d'écrire en assembleur (Cette même se vérifiait sur le PC. Des parties de Doom sont en ASM). D'autant plus que, depuis la CPU NES a couru à moins de 2 MHz. En outre, la mémoire était plus cher alors qu'il est aujourd'hui. Mario original a été stocké dans environ 40k de mémoire. 16k de qui était le code réel, et le reste était des graphiques et des ressources sonores.

  2. Jusqu'à l'ère de la console 32 bits, toute sorte de système d'exploitation, ou même construit dans les services publics, sur une console était hors du commun (Sega CD a été l'un des rares à l'époque 16 bits avec un BIOS réel, et il y avait un petit programme brûlé dans le processeur du Game Boy qui était responsable du logo Nintendo défilement vers le bas sur la mise sous tension). Voir ci-dessus au sujet des contraintes de taille, comme une raison principale. Lors de l'insertion de la cartouche, la puce ROM dans la voiture a été connecté directement au bus d'adresse de la CPU. La mise sous tension, la CPU lirait à partir d'une adresse fixe pour obtenir l'adresse réelle du programme a commencé à, puis a sauté à cet endroit et l'exécution a commencé.

En ce qui concerne les ressources, le NES Dev Wiki dispose de ressources concernant la NES matériel, ainsi que des références programmming. Domaine de Sofar a également des documents techniques et ROM du domaine public pour un certain nombre console (je ne sais pas si je devrais créer un lien vers ZD sur ce site, il suffit de Google)

Autres conseils

La plupart des anciennes consoles avaient une sorte de ROM BIOS.

Une partie du code source pour ces derniers sont en ligne:

Vous pouvez lire le plus souvent commentés le démontage du BIOS 7800: http: // atarihq. com / DANB / fichiers / 7800bios.asm

L'Atari 5200 est plus intéressant de source BIOS, car il ne se contente pas seulement le système initialiser et afficher un écran d'accueil: http://atarihq.com/danb/files/5200BIOS.txt

Le Colecovision avait une ROM BIOS 8K aussi bien (!); sa source est ici: http://xi6.com/code/coleco/coleco29.asm

La source BIOS Odyssey II est ici: http://atarihq.com/danb/files /o2romsrc.txt

Le Intellivision avait un OS appelé « exec, » ne peut pas trouver un démontage en ligne, bien que j'ai trouvé un tas d'informations à ce sujet: http://www.intellivisiongames.com/bluesky/hardware/intelli_tech.html#exec et noreferrer http://www.beeslife.com/faq.htm#_Toc140592020 - il avait des routines pour déplacer sprites, lire les contrôleurs, et calculer des racines carrées

La plupart des problèmes dans cette vidéo sont glitches à base de tuiles, où il y a des bugs dans la détection de collision des cartes de tuiles qui composent les niveaux. Tous les niveaux sont composés de carreaux de forme carrée. Si vous remarquez toujours MARIO entre les carreaux où il ne devrait pas être.

À la fin des années 70, 80 et début des années 90, la plupart des logiciels (y compris les jeux) étaient écrits en ASM (Assembly).Si vous n'êtes pas familier avec Assembly, il s'agit pratiquement d'un langage de programmation de très bas niveau spécifique au matériel pour la programmation du processeur.Cela signifie que vous deviez contrôler chaque pixel à l'écran et recréer des bibliothèques pour des éléments tels que la physique, les graphiques et même le son !Vous aviez une mémoire très limitée donc le recyclage était indispensable.Dans le Super Mario Bros original, vous remarquerez que les nuages ​​sont les mêmes que les buissons, la seule différence est la couleur.De nombreux sprites ont été recyclés et la physique du jeu était limitée.

À mesure que les jeux devenaient de plus en plus compliqués, les développeurs se sont tournés vers le langage C, ce qui a permis d'écrire des logiciels beaucoup plus rapidement car ils nécessitaient moins de lignes de code.De nos jours, de nombreux jeux sur consoles et ordinateurs sont écrits en C++ car cela permet un développement plus rapide, mais permet également au logiciel d'être suffisamment proche du matériel pour un jeu plus rapide.

Je havn't les recherches effectuées à ce sujet, mais Super Mario Bros et releated jeux de 90 sont disponibles sous forme de fichiers .nes au lieu de la cartouche et il

émulateur OpenSource sont également disponibles.

AFAIK, ceux-ci sont généralement écrites en C ++. Je ne sais pas la légalité de ces fichiers et nit émulateur, mais ils disponibles sur Internet. vous avez la recherche avec chaîne droite!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top