VecFever documentation
Bomb Jack
Tehkan 1984
Bomb Jack is a game well suited for a vector output and since the arcade board uses an audio board with the Vectrex audio chip (albeit three of them) here even the normal arcade music and sounds can be output (well the music in-game since that saturates already the Vectrex chip).
When porting this I became again aware that the attract of Bomb Jack is pretty good – it tries to show the deeper aspects to the game e.g. that you can time your hops and/or bumps against the walls to change the bonus value of the (P) coin. Timed right you can get the bonus multiplier up to 5x. More important is to get to know the boards and how to grab as many fire bombs (the one sparkly one) as possible. Not only does grabbing these decrease the time for (P) to appear faster than normal ones but if you get 20 or more in a board you get a .huge. bonus. Up to 50000 Points for all 23 possible.
If you are really good at this game you can actually marathon it and the player who put up the German bombjack site documents that he played for 26 hours to be able to get the maximum displayable score: 99999990 points. Pretty amazing.
Localization
//NAME="BOMBJACK"
//
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, "Bomben: Normal" },
{ 0, 0, "Bomben: Hübsch" },
{ 0, 0, "Schneller bei Vollschirm" },
{ 0, 0, "Vogelgeschwindigkeit" },
{ 0, 0, "Feindanzahl & Geschwindigkeit" },
{ 0, 0, "(E) Münze: Häufig" },
{ 0, 0, "(E) Münze: Selten" },
{ 0, 0, "Bonusleben" },
{ 0, 0, "Keine" },
{ 0, 0, "Alle 100k" },
{ 0, 0, "Alle 30k" },
{ 0, 0, "nur bei 50k" },
{ 0, 0, "nur bei 100k" },
{ 0, 0, "50k und 100k" },
{ 0, 0, "100k und 300k" },
{ 0, 0, "50k, 100k und 300k" },
{ 0, 0, "Bonus implementiert aber" },
{ 0, 0, "deaktiviert im Arcade ROM" },
{ 0, 0, "Demomusik: An" },
{ 0, 0, "Demomusik: Aus" },
{ 0, 0, "Runde ausgeben: Ja" },
{ 0, 0, "Runde ausgeben: Nein" },
{ 0, 0, "Zeichne Rand als: Rechteck" },
{ 0, 0, "Zeichne Rand als: Linien" },
{ 0, 0, "Langsamer aber stabilisierter" },
{ 0, 0, " © 1984 Tehkan. Eines meiner persönlichen Arcadefavouriten: es kam kurz nach der 'goldenen Arcadezeit' heraus und hat alles: hervorragendes Spiel mit Spieltiefe, einem niedlichen Setting und dazu passender, guter Musik und Sounds und sehr guter Grafik: die Objekte nutzen alle ihre eigene Farbpalette aus 4096 Farben, was für damalige Zeiten Spitzenklasse war. Diese vektorisierte Version hingegen nutzt wie üblich statische, binäre Repräsentationen der original Arcade-ROMs und im wesentlichen substituiert Sie auf Hardwareebene die Sprite- und Characterdarstellung mit handgezeichneten Vektoren. Bomb Jack's exzellente Arcadesounds werden im Original von einer zweiten Z80-CPU, welche die Daten für gleich drei AY8910 Audiochips berechnet, realisiert auf einem separaten Audioboard. Die Vectrex nutzt denselben Audiochip (nur mit kleinerem Pinout), wenn auch nur einen davon; aber als netten Bonus sogar bei derselben 1.5MHz Frequenz wie die Bomb Jack Hardware. Für die Vectrex wird hier also einfach das Arcadeboard emuliert und die drei 'wichtigsten' Audiokanäle herausgesucht und ausgegeben - hauptsächlich die Musikausgabe, denn die gefällt mir persönlich sehr an dem Spiel. Einfach gute Laune Arcademusik... Das Originalspiel nutzt eine 'manchmal wird anstelle der (B)onusmünze eine Spezialmünze ausgegeben' Methode sowohl für Extraleben also auch -deutlich seltener- für ein Extraspiel. Interessanterweise ist im Arcade ROM Code noch eine andere, üblichere Methode implementiert, wenn auch deaktiviert: die 'wenn man eine bestimmte Punktzahl erreicht gibt es ein Bonusleben'methode in verschiedenen Varianten. Diese ist hier als Option auswählbar - falls ausgewählt werden die Spezialmünzen deaktiviert, denn beides macht für mich weniger Sinn: das schliesst sich einfach aus. Die (S)pecial Münze, welche ein Extraspiel analog zum Einwurf einer Münze gibt, ist eh deaktiviert von mir: das Spiel wurde auf 'freeplay' geändert von mir, da macht ein Extraspiel weniger Sinn. "}
};
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, "Bombes: 2D" },
{ 0, 0, "Bombes: 3D" },
{ 0, 0, "Affichage rapide pour plein écran" },
{ 0, 0, "Vitesse de l'Oiseau" },
{ 0, 0, "Quantité d'Ennemis & Vitesse" },
{ 0, 0, "Pièces Spéciales: fréquentes" },
{ 0, 0, "Pièces Spéciales: plus rares" },
{ 0, 0, "Vie Bonus" },
{ 0, 0, "Aucune" },
{ 0, 0, "Tous les 100k" },
{ 0, 0, "Tous les 30k" },
{ 0, 0, "À 50k" },
{ 0, 0, "À 100k" },
{ 0, 0, "À 50k et 100k" },
{ 0, 0, "À 100k et 300k" },
{ 0, 0, "À 50k, 100k et 300k" },
{ 0, 0, "Bonus présent mais désactivé" },
{ 0, 0, "dans la ROM de l'arcade" },
{ 0, 0, "Son du Mode Démo: Oui" },
{ 0, 0, "Son du Mode Démo: Non" },
{ 0, 0, "Afficher les Rounds: Oui" },
{ 0, 0, "Afficher les Rounds: Non" },
{ 0, 0, "Dessins des bords: Rectangles" },
{ 0, 0, "Dessins des bords: Lignes" },
{ 0, 0, "Plus stable mais plus lent" },
{ 0, 0, " © 1984 Tehkan. Il s'agit de l'un de mes jeux d'arcade favoris: il est sorti tout juste après leur Âge d'Or mais il a tout pour lui: une excellente jouabilité, une grande profondeur et une musique accrocheuse assortie de graphismes très colorés pour l'époque; tous les objets utilisent leur propre palette de couleurs parmi les 4096 de l'écran matriciel d'origine, lui-même étant très avancé pour son temps. Cette version vectorisée, de son côté, utilise comme d'habitude les représentations statiques et binaires des ROMS d'arcade originales et, au niveau matériel, substitue essentiellement la représentation des sprites et des personnages par des vecteurs dessinés à la main. Les sons de la version arcade de \"Bomb Jack\" sont d'excellente facture grâce à un second processeur Z80 calculant les données sonores pour trois puces sonores AY8910 sur une carte audio séparée - il s'agit de la même que celle se trouvant à l'intérieur du Vectrex qui, par bonheur, utilise la même fréquence de 1,5 MHz. C'est dans ces conditions que la carte audio est émulée et que les trois canaux \"les plus importants\" sont sélectionnés pour être joués sur le Vectrex - Il s'agit principalement de la musique car c'est ce que je préfère, et de loin. Le jeu original a recours notamment à \"une pièce spéciale qui apparaît parfois au lieu du Bonus\" que ce soit pour obtenir des \"vies\" mais aussi - beaucoup plus rarement- pour gagner des \"crédits\". Il est intéressant de constater que dans le code de la ROM de l'arcade, une autre méthode pour collecter des bonus est présente, bien que désactivée: elle consiste à \"atteindre une valeur de XX points pour obtenir une vie bonus\"; elle est matérialisée par plusieurs variantes que j'ai rendues disponibles en option. La sélection de cette dernière méthode entraîne la désactivation de celle des \"pièces spéciales\", car pour moi ces méthodes de gain de \"vies bonus\" doivent nécessairement s'exclure mutuellement. Les pièces spéciales sont de toute façon désactivées car elles n'ont pas d'utilité dans la mesure où il s'agit ici de parties gratuites (comme à l'habitude pour mes conversions). "}
};
ENGLISH[] = {
{ 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, "Bombs: Normal" },
{ 0, 0, "Bombs: Cute" },
{ 0, 0, "Faster for Fullscreen" },
{ 0, 0, "Bird Speed" },
{ 0, 0, "Enemies Number & Speed" },
{ 0, 0, "(E) Coin: Frequent" },
{ 0, 0, "(E) Coin: Rare" },
{ 0, 0, "Bonus Life" },
{ 0, 0, "None" },
{ 0, 0, "Every 100k" },
{ 0, 0, "Every 30k" },
{ 0, 0, "50k only" },
{ 0, 0, "100k only" },
{ 0, 0, "50k and 100k" },
{ 0, 0, "100k and 300k" },
{ 0, 0, "50k, 100k and 300k" },
{ 0, 0, "Bonus present but" },
{ 0, 0, "Disabled in Arcade ROM" },
{ 0, 0, "Attract Music: On" },
{ 0, 0, "Attract Music: Off" },
{ 0, 0, "Show Rounds: Yes" },
{ 0, 0, "Show Rounds: No" },
{ 0, 0, "Draw Border as: Rectangle" },
{ 0, 0, "Draw Border as: Lines" },
{ 0, 0, "Slower but more stabilized" },
{ 0, 0, " © 1984 Tehkan. One of my personal Arcade favourites: it came out just after the golden age but has it all: great gameplay, cute setting and music and for its time very colourful visuals: the objects all use their very own color palette out of 4096 colours on the original raster hardware which back then was very advanced. This vectorized version as usual uses static binary conversions of the Arcade ROMs and basically substitutes the sprites and character hardware with hand-drawn vectors and evaluation functionality in the backend. Bomb Jack's excellent Arcade sounds were made possible by a second Z80-CPU calculating sound data for three AY8910 sound chips on a separate audio board - the very same which is in the Vectrex and as a pleasant bonus even uses the same 1.5MHz frequency as the Bomb Jack hardware. Here this audio board is emulated and the three 'most important' channels are picked to be played on the Vectrex - mostly the music because this is what I myself prefer by far. The original game uses a 'sometimes a special coin appears instead of the (B)onus one' method for both bonus lives and also -rarely- extra coin credits. Interestingly in the Arcade ROM code another bonus method is still present, although disabled: the 'reach XX points to get a bonus life' one in various variatons which I've made available as an option. When selecting the disabled, latter method I've disabled the special coins entirely, since to me these bonus lives methods are mutually exclusive. The (S)pecial credit extra coins are disabled entirely anyways simply because it does not make sense in freeplay (into which I've converted this game into here as usual). "}
};