Eles dizem que, se você deixar um milhão de macacos digitarem um milhão de máquinas de escrever, eles acabarão escrevendo as obras de Shakespeare. Embora não seja exatamente a mesma coisa [bbenchoff] (Por que isso soa acquainted?), gastei alguns ciclos de computação para gerar dados aleatórios e, por meio de heurística, encontrar Atari 2600 válido “jogos” nos dados.
Como você pode esperar, os jogos não serão coisas que você deseja jogar o dia inteiro. Na verdade, eles são mais parecidos com demos. No entanto, existem vários programas interessantes, considerando que eles foram gerados aleatoriamente.
Parte da razão pela qual isso funciona é que o Atari possui uma CPU baseada em 6502 bastante simples, por isso é simples avaliar o código, e um jogo completo se encaixa em 4 Ok. Ainda assim, isso significa que há, de acordo com [Brian]1010159 Roms possíveis. Examine isso com cerca de 1080 Protons no universo visível e você começa a ver a escala do problema.
Para reduzir o problema, você precisa de algumas heurísticas que pode deduzir dos jogos reais. Por um lado, pelo menos 75% do primeiro 1K de uma ROM deve ser válido OPCODES. Também é fácil identificar código que grava na TV e em outros dispositivos de E/S. Obviamente, um programa sem E/S não será interessante.
Algumas das heurísticas lidam com a redução do espaço de pesquisa. Por exemplo, uma ROM válida terá um vetor de redefinição nos dois últimos bytes; portanto, é possível gerar dados aleatórios e, em seguida, aplicar o pequeno número de vetores de redefinição authorized.
Por que? Você realmente precisa de um motivo? Se você não tem 2600 à mão, goste [Brian] e use um emulador. Nós nos perguntamos se a configuração recriaria Tarzan?