VecFever documentation

< All Topics

Vector Kong

Nintendo 1981

The video game Donkey Kong made a massive impact not only on the entertainment industry but also society: everyone knows at least the characters Mario and Donkey Kong which were introduced here. And yes, as everyone knows Mario is an unnamed ‘Jumpman’ still here which is one of many Donkey Kongs tidbits which made it into video game lore. Or that this game also came into existence because a Nintendo arcade one flopped in the US and Nintendo needed a game for that cabinet to convert. What a lucky break for Nintendo. And for us. This is probably the only arcade game of the golden age where -today- I can walk into a toy store and buy Mario and/or Donkey Kong stuffed toys in various sizes. And that’s not a guess…

There is a healthy community of players of this game to this day – even new adapted romsets and/or high score strategies are still developed for this. And of course a generation of gamers remembers playing this game in the arcades well.

Still, when I thought about adapting raster games for a vector display now years ago this one was not on my radar. However, I remember Malban also asking me about raster games on the Vectrex, he as usual blogged about his ideas and ‘Tenyard’ saw his musings and decided to actually go ahead and try this out with a script for MAME to vectorize Donkey Kong. Which I became aware of and actually worked quite well – he did the attract and barrel level in the script. Weird -and nice- how these things can happen.

This game uses a lot of vectors on the Vectrex so does flicker – to at least be able to improve this somewhat the default output is not full screen – longer vectors take longer to draw – and even a ‘tiny’ mode has been implemented. Plus my usual debug options are still in – esp. the optional output of the framerate. This shows quite well the real-life difference between ‘boost’ mode graphics timing (expert option) and the safer, default one.



GERMAN[] = {
    { 0, 0, "Debug Modus: An" },
    { 0, 0, "Debug Modus: Aus" },
    { 0, 0, "2: FPS" },
    { 0, 0, "3: Pause" },
    { 0, 0, "Bild: Vollschirm" },
    { 0, 0, "Bild: Normal" },
    { 0, 0, "Bild: Winzig" },
    { 0, 0, "FPS: Variabel" },
    { 0, 0, "FPS: Fest für Fotos" },
    { 0, 0, "Belichtungszeit 1/25" },
    { 0, 0, "Erste Runde: Fässer" },
    { 0, 0, "Erste Runde: Tortenfabrik" },
    { 0, 0, "Erste Runde: Aufzüge" },
    { 0, 0, "Erste Runde: Baustelle" },
    { 0, 0, "Testmodus! High Score" },
    { 0, 0, "speichern deaktiviert" },
    { 0, 0, "                           © 1981 Nintendo, Vectorisierung 2022 von 10Yard und mir. Die Frage ob man ein Rasterarcadespiel auf die Vectrex portieren kann kam häufiger auf und meine Antwort war immer: nicht wirklich. Die Anzahl Vektoren ist einfach zu hoch, die visuelle Genauigkeit vermutlich zu klein für Kontaktabschätzungen beim spielen und es wäre generell eine Heidenarbeit, alles nachzumalen und rauszufinden, wann, was wie zu zeichnen ist.         Donkey Kong hingegen hat viele Dinge, die hier sehr hilfreich sind: keine Hintergrundgrafik. Hervorragend dokumentiert. Bereits sehr grobe Kontakt- und Bewegungsberechnung im Spiel. Und überhaupt: Donkey Kong !        Als also 10Yard ein LUA Skript für MAME entwickelt hat, welches das erste Board vektorisierte plus den Titel und Hiscoresachen, war ich erstmal neugierig und probierte es schnell aus. Es fehlte zwar viel und der Vektorcount war sehr hoch, aber als 'Proof of Concept' gut genug, dass ich es sinngemäss erstmal auf die Vectrex portierte nachdem ich dafür eben einen Donkey Kong SBT (static binary translation) gehäkelt hatte. Immer nett, bereits etwas lauffähiges zu haben am Start. Die Optimierungen danach und alles fehlende -wie die anderen drei Boards, Animationen und etliche Kleinigkeiten- dazuzubasteln dauerte dann einiges an Zeit.  Die Vectrexsound und Musik wurden aus dem original Atari 800 Donkey Kong ausgeliehen: davon existiert der Source Code also konnte ich dessen Soundroutinen in C nachimplementieren und gebe diese Pokeywerte umkonvertiert für den AY8912 der Vectrex mit denselben 60Hz des NTSC Donky Kongs aus (naja, mit den Arcade DK's 60,6060..HZ, nah genug). Umso mehr frames also ausgegeben werden, umso mehr des Originalaudio kann man hören...                      "}

FRENCH[] = {
    { 0, 0, "Mode Débogage: Activé" },
    { 0, 0, "Mode Débogage: Désactivé" },
    { 0, 0, "2: Fréquence d'images" },
    { 0, 0, "3: Pause" },
    { 0, 0, "Taille d'écran: Pleine" },
    { 0, 0, "Taille d'écran: Normale" },
    { 0, 0, "Taille d'écran: Réduite" },
    { 0, 0, "Rafraîchissement: Variable" },
    { 0, 0, "Rafraîchissement: Fixe pour Photos" },
    { 0, 0, "Appareil Photo:Temps de Pose d’1/25" },
    { 0, 0, "Premier Stage: Poutres" },
    { 0, 0, "Premier Stage: Usine" },
    { 0, 0, "Premier Stage: Ascenceurs" },
    { 0, 0, "Premier Stage: Rivets" },
    { 0, 0, "Mode Test! Scores" },
    { 0, 0, "non comptabilisés" },
    { 0, 0, "                          © 1981 Nintendo, vectorisation 2022 par 10Yard et moi-même. La question de savoir s'il était possible de porter un jeu d'arcade à graphismes matriciels sur le Vectrex revenait souvent et ma réponse était toujours la même: \"pas vraiment\". Le nombre de vecteurs serait tout simplement trop élevé et la précision visuelle pour les collisions ne serait probablement pas suffisante. De plus, tout redessiner et savoir quoi dessiner, quand, comment et où, serait un véritable cauchemar.        Donkey Kong a cependant plusieurs atouts majeurs: il n'y pas de graphismes d'arrière-plan. Il est parfaitement documenté. La détection des contacts et des mouvements est très approximative. Et surtout: c'est Donkey Kong!        Alors quand 10Yard a développé un script LUA pour MAME qui vectorise la séquence du tonneau de Donkey Kong avec le titre et les pages du classement des meilleurs scores, j'ai été intrigué et je l'ai essayé. Cette démonstration de faisabilité a fait, qu'après un certain temps, j'ai décidé de porter le tout sur le Vectrex: c'est toujours gratifiant d'avoir un point de départ solide. L'optimisation de façon générale, de même que l'ajout de tous les éléments manquants (à savoir les trois autres niveaux, avec animations intermédiaires, animations de fin de niveau y compris des petits ajouts ici et là) ont pris pas mal de temps. Il ne faut pas oublier qu'il m'a également fallu créer les sons pour le Vectrex... Heureusement les sources originales de Donkey Kong relatives à l'Atari 800 sont disponibles: aussi, il m'a été possible de réimplémenter tout simplement ce code sonore en \"C\" pour obtenir les valeurs \"pokey\" et les convertir en valeurs \"AY8912\". Comme la source est le Donkey Kong en version NTSC de l'Atari 800, c'est à dire fonctionnant à 60Hz -tout comme le Donkey Kong de l'arcade d'ailleurs (enfin, disons 60,6060..)- cela signifie que plus il y a d'images en sortie, plus on se rapproche de l'audio original...                      "}

    { 0, 0, "Debug Mode: On" },
    { 0, 0, "Debug Mode: Off" },
    { 0, 0, "2: Framerate" },
    { 0, 0, "3: Pause" },
    { 0, 0, "Screen Size: Fullscreen" },
    { 0, 0, "Screen Size: Normal" },
    { 0, 0, "Screen Size: Tiny" },
    { 0, 0, "Refresh: Variable" },
    { 0, 0, "Refresh: Fixed For Photos" },
    { 0, 0, "Camera Exposure 1/25" },
    { 0, 0, "First Round: Girder" },
    { 0, 0, "First Round: Pie Factory" },
    { 0, 0, "First Round: Elevators" },
    { 0, 0, "First Round: Rivets" },
    { 0, 0, "Testmode! High Score" },
    { 0, 0, "storage disabled" },
    { 0, 0, "                           © 1981 Nintendo, vectorization 2022 by 10Yard and myself. The question of whether it is possible to port an early raster arcade game to the Vectrex came up frequently and my answer was always: not really. The vector count would just be too high and visual precision for contact avoidance/hit detection likely not enough. Plus redrawing everything and figuring out what to draw when, where and how would just be a nightmare.        Donkey Kong however has several things going for it: no background graphic. Fantastically well documented. Very klunky contact detection and movement. And besides: Donkey Kong !        So when 10Yard developed a LUA script for MAME which vectorized the barrel stage of Donkey Kong plus the title and hiscore pages I was intrigued and tried this out. Which served as a nice proof of concept and after a while I decided to port the entire thing to the Vectrex: always nice to have a working starting point. The optimizing in general afterwards and then adding everything missing - the other three stages, end of level and interim animations and a few other things here and there - then did take quite some time. Plus creating Vectrex sounds... luckily the original Donkey Kong sources for the Atari 800 are available so I simply reimplemented that sound code in C to get the pokey values and converted those to AY8912 values. Since this comes from the NTSC Atari 800 Donkey Kong, so at 60Hz just like the arcade Donkey Kong (well, 60,6060..), the more frames are output the more of the original audio you can hear...                      "}
Table of Contents