Pergunta

Acabei de assistir o Super Mario Bros. -1 World Glitch no YouTube e comecei a me perguntar sobre o código por trás desses jogos. Qual idioma foi usado? E o sistema operacional para os consoles de videogames? Existe algum site com recursos sobre esse assunto? (Eu sou um jogador de vídeo dos anos 90, por isso estou particularmente interessado na programação por trás desses jogos, mas sinto -me à vontade para fazer disso um wiki e incluir links para recursos sobre programação de videogames em geral, se você quiser)

Foi útil?

Solução

Tendo trabalhado um pouco em um emulador para o NES (eu tenho decodificação de algumas opcodes, mas nenhum outro hardware é emulado), talvez eu possa compartilhar algumas respostas.

  1. Para a maioria dos jogos, foi usado o assembler. Otimizando os compiladores, se disponíveis para a CPU, não estavam de longe tão bons de 20 a 30 anos atrás quanto são hoje. Para obter desempenho, você precisava escrever no Assembler (isso ainda é realizado no PC. Partes de Doom estão no ASM). Além disso, já que a CPU NES correu a menos de 2MHz. Além disso, a memória era mais cara do que hoje. O Mario original foi armazenado em cerca de 40 mil de memória. 16K disso era o código real, e o restante foram os gráficos e os recursos sólidos.

  2. Até a era do console de 32 bits, qualquer tipo de sistema operacional, ou mesmo construído em serviços públicos, em um console era incomum (a Sega CD era uma das poucas na era de 16 bits com um BIOS real, e havia um pequeno programa queimado no processador do Game Boy, responsável pelo logotipo da Nintendo rolando para baixo na energia). Veja acima sobre as restrições de tamanho, como principal motivo. Ao inserir o cartucho, o chip ROM no carro foi conectado diretamente ao barramento de endereço da CPU. Na energia ligada, a CPU lia de um endereço fixo para iniciar o endereço real em que o programa iniciar e depois saltou para esse local e iniciou a execução.

Quanto aos recursos, o NES Dev Wiki Possui recursos relativos ao hardware NES, juntamente com referências de programação. O domínio de Zophar também possui documentos técnicos e ROMs de domínio público para alguns console (não sei se devo vincular -me ao ZD neste site, basta pesquisar no Google)

Outras dicas

A maioria dos consoles mais antigos tinha algum tipo de BIOS ROM.

Alguns do código -fonte para estes estão online:

Você pode ler a desmontagem principalmente cometida para o 7800 BIOS: http://atarihq.com/danb/files/7800bios.asm

A fonte do BIOS do Atari 5200 é mais interessante, pois faz mais do que apenas inicializar o sistema e exibir uma tela Splash: http://atarihq.com/danb/files/5200bios.txt

A ColecoVision também tinha uma ROM de 8k (!); A fonte está aqui: http://xi6.com/code/coleco/coleco29.asm

A fonte do BIOS Odyssey II está aqui: http://atarihq.com/danb/files/o2romsrc.txt

A Intellivision tinha um sistema operacional chamado "Exec", não consegue encontrar uma desmontagem on -line, embora eu tenha encontrado um monte de informações sobre isso: http://www.intellivisiongames.com/bluesky/hardware/intelli_tech.html#exec e http://www.beeslife.com/faq.htm#_toc140592020 - Tinha rotinas para mover sprites, ler controladores e calcular raízes quadradas!

A maioria das falhas nesse vídeo são falhas baseadas em ladrilhos, onde há bugs na detecção de colisão dos mapas de ladrilhos que compõem os níveis. Todos os níveis são compostos de ladrilhos quadrados. Se você percebe que Mario está sempre entre os azulejos onde não deveria estar.

No final dos anos 70, 80 e início dos anos 90, a maioria dos softwares (incluindo jogos) foi escrita no ASM (Assembly). Se você não estiver familiarizado com a montagem, é praticamente uma linguagem de programação de nível muito baixa, específica para programar a CPU. Isso significa que você teve que controlar todos os pixels na tela e recriar bibliotecas para coisas como física, gráficos e até som! Você era muito limitado na memória, então a reciclagem era uma obrigação. No Super Mario Bros original, você notará que as nuvens são as mesmas que os arbustos, a única diferente é a cor. Muitos sprites foram reciclados e a física do jogo era limitada.

À medida que os jogos se tornaram cada vez mais complicados, desenvolvedores se mudaram para o idioma C, o que permitia que o software fosse escrito muito mais rapidamente, porque exigia menos linhas de código. Atualmente, muitos jogos de console e computador estão escritos em C ++ porque permite um desenvolvimento mais rápido, mas também permite que o software esteja próximo o suficiente do hardware para um jogo mais rápido.

Eu não fiz pesquisas sobre isso, mas Super Mario Bros e os jogos dos anos 90 estão disponíveis como arquivos .NES em vez de cartucho e o emulador OpenSource também estão disponíveis.

Afaik, estes geralmente são escritos em C ++. Não sei sobre a legalidade desses arquivos e emulador NES, mas eles disponíveis na Internet. Você tem pesquisa com a string certa!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top