VecFever documentation

< All Topics
Print

Pooyan

Konami 1982

Pooyan is a game which is -apart from the forest background- very well suited for the Vectrex: even though there are a lot of objects floating around they are on average nearer to the center (not all of course, like all those wolves trying to push the rock down in the even rounds, but even so… enough). Plus I really like this game: the music, the comical graphics, the interesting take for an early shooter, also that the game is not super hard and let’s you enjoy yourself for a while, just nice.

The Konami romset Pooyan and the Pootan bootleg mostly differ in the removal of security checks plus the changed name but the romset for the game licensed to Stern is markedly different: complete overhaul and improved rom, plus much more, devious security checks all over the place. Since I wanted to run this in the usual, modified address space-type static binary translation (so in total control of all addresses) this took several days to (hopefully) hunt down all the darned security instances. Dozens and dozens of them, truly annoying work.

Anyways, if you want to play the game I recommend the Konami romset: it is easier than the Stern one. And once you get to know the game more intimately maybe try out the Stern version.

Vectorization

So you might be wondering how this works: at heart Pooyan uses two things to create the visuals for a frame: immobile 8×8 tiles which are drawn at an 8×8 coordinate grid using a char buffer and combined color buffer for palette information per tile. Here’s the character buffer in a reorganized fashion to show included objects using 4 combined tiles. E.g. the Pooyans including the elevator gear, the wolves when climbing up the ladders in the odd rounds or the wolves pushing the rock -and the rock itself up top- are tiles and not sprites.

And 64 sprites of 2×2 ’tiles’ (well, similarly encoded) which can be positioned at any coordinate on the screen over the character buffer:

Tiles and sprites can be mirrored in x/y, for tiles mostly used for the title and the balloon spouts in the even rounds. Plus if you look carefully you’ll see that also sprite/tile combinations are used: the wolf attacking Mama from behind uses a sprite for the head but tiles for the rest. So figuring out all graphics objects – plus whether they are mirrored and when to draw them – and then creating vector versions of those objects is most of the work. These are pre-calculated for a given Vectrex monitor setup (which can differ markedly from Vectrex to Vectrex) and then a Pooyan vectorizer backend basically puts together those static vector objects for a given Pooyan graphics state. So pretty similar – at a functional level at least – to the raster hardware. And yes, also very different, of course…

Localization

//NAME="POOYAN"
//

GERMAN[] = {
    { 0, 0, "Debug Modus: An" },
    { 0, 0, "Debug Modus: Aus" },
    { 0, 0, "2: FPS" },
    { 0, 0, "3: Pause" },
    { 0, 0, "Bildmodus: Vollschirm" },
    { 0, 0, "Bildmodus: Normal" },
    { 0, 0, "Bildmodus: Overlay" },
    { 0, 0, "FPS: Variabel" },
    { 0, 0, "FPS: Fest für Fotos" },
    { 0, 0, "Belichtungszeit 1/25" },
    { 0, 0, "1 (Einfach)" },
    { 0, 0, "8 (Hart)" },
    { 0, 0, "Bonusleben: 50K 80K+" },
    { 0, 0, "Bonusleben: 30K 70K+" },
    { 0, 0, "Demoton: An" },
    { 0, 0, "Demoton: Aus" },
    { 0, 0, "                           Willkommen zur vektorisierten Version des Arcadespiels Pooyan © 1982 Konami.    Pooyan ist ein Spiel welches viele damals kannten und viele liebten: wer möchte nicht so ein schnuckeliges Spiel spielen wollen ? Zudem ist es zur Abwechslung ein einfacheres Arcadespiel, welches einen nicht sofort abschlachten möchte, um einen mehr Geld einwerfen zu lassen.     Das zum C64 portierte Spiel von Datasoft -und besonders die Arcadegrafiken des Automaten und die comicartige Graphik der Vollseitenanzeige für Pooyan damals - machten einen sehr grossen Eindruck auf mich und ich errinnere mich mit sehr viel Freude auch heute daran. Weswegen ich bereits vor Jahren die Arcadeplatinen mir besorgt hatte (Pooyan & Pootan - die Pootan bootleg hardware kann im übrigen Pooyan ROMs laufen lassen) und spiele sie auch heute noch gerne.         Es sollte also keine Überraschung sein, weswegen ich es auf die Vectrex portieren wollte.           Nostalgie ist aber eines, ich glaubte aber auch, dass dies sehr gut funktionieren sollte, obwohl der nette Waldhintergrund zuviel ist und ersetzt werden musste. Zudem fliegen hier ziemliche viele Objekte überall herum, aber im Mittel sind viele näher der Mitte, eine weitere Sache, die man Performancemässig für die Vectrex beachten muss und die Pooyan erfüllt. Zudem: der Hintergrund ist statisch - bzw. kann statisch gemacht werden für dieses Spiel mit etwas Arbeit, also diese Grafik will wirklich auf ein Overlay...     Aber es funktioniert auch ziemlich gut mit dem 'mit wie wenigen Vektoren kommt man aus' normalen Hintergrund hier. Die Strichschweinchenmama ist halt hier ein echter 1920er Bauhausfan und hat Ihren Pooyans und Buuyans einen netten Turm mit klaren Linien gebaut...                       "}
};

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, "Affichage: Plein Ecran" },
    { 0, 0, "Affichage: Normale" },
    { 0, 0, "Affichage: Avec Overlay" },
    { 0, 0, "Rafraîchissement: Variable" },
    { 0, 0, "Rafraîchissement: Fixe pour Photos" },
    { 0, 0, "Appareil Photo:Temps de Pose d’1/25" },
    { 0, 0, "1 (Faible)" },
    { 0, 0, "8 (Elevée)" },
    { 0, 0, "Vie Bonus: 50K 80K+" },
    { 0, 0, "Vie Bonus: 30K 70K+" },
    { 0, 0, "Son du Mode Démo: Oui" },
    { 0, 0, "Son du Mode Démo: Non" },
    { 0, 0, "                            Bienvenue dans la version vectorisée du jeu d'arcade Pooyan © de Konami sorti en 1982.    Pooyan est un jeu que la plupart des gens connaissaient à l'époque et que beaucoup d’entre eux appréciaient: Car, comment ne pas aimer jouer à un jeu aussi mignon? A la base, il s'agit d'un jeu de tir assez facile qui vous permet de vous amuser suffisamment longtemps pour vous divertir: on est loin du concept de jeu d’arcade brutal qui n’a d’autre finalité que celle de vous faire perdre immédiatement pour vous obliger à remettre une pièce dans le monnayeur.  Je me remémore très bien -non sans une certaine nostalgie- les images qui ont marqué mon enfance telles que le jeu sur C64 distribué par Datasoft,  ou plus encore, le bandeau de la borne d’arcade elle-même, ainsi que les publicités hilarantes de Pooyan diffusées en pleine page. C'est pourquoi, il y a des années déjà, je m'étais procuré des circuits imprimés de bornes d'arcade  dans le but d’y jouer (il s’agissait de Pooyan & Pootan - le matériel de contrefaçon de Pootan, pouvant en particulier faire tourner les ROMs de Pooyan) ce que j'aime d’ailleurs encore beaucoup faire aujourd’hui.         C’est donc tout naturellement que j’ai décidé de porter ce jeu sur le Vectrex.           Mais la nostalgie n’était pas la seule raison, car j’étais convaincu que l’adaptation fonctionnerait également  très bien, au prix de concessions sur le décor pour limiter le nombre de vecteurs utilisés. Il y a néanmoins beaucoup d'objets affichés à l'écran, mais globalement, la plupart d’entre eux sont près du centre, ce qui est particulièrement bienvenu pour faire tourner Pooyan sur le Vectrex. Par ailleurs, le décor d’arrière-plan, statique, est particulièrement adapté à l’utilisation d’un écran transparent dédié (overlay), à insérer dans les encoches du Vectrex. Mais selon moi, il est tout aussi possible de s’en passer en optant pour un arrière-plan minimaliste. Dans ce contexte, on ne manquera pas de se dire que la maman des cochonnets est une fervente admiratrice du Bauhaus des années 1920, car elle a construit à ses Pooyans et Buuyans une jolie tour aux lignes épurées...                       "}
};

ENGLISH[] = {
    { 0, 0, "Debug Mode: On" },
    { 0, 0, "Debug Mode: Off" },
    { 0, 0, "2: Framerate" },
    { 0, 0, "3: Pause" },
    { 0, 0, "Screen Mode: Fullscreen" },
    { 0, 0, "Screen Mode: Normal" },
    { 0, 0, "Screen Mode: Overlay" },
    { 0, 0, "Refresh: Variable" },
    { 0, 0, "Refresh: Fixed For Photos" },
    { 0, 0, "Camera Exposure 1/25" },
    { 0, 0, "1 (Easy)" },
    { 0, 0, "8 (Hard)" },
    { 0, 0, "Bonus Life: 50K 80K+" },
    { 0, 0, "Bonus Life: 30K 70K+" },
    { 0, 0, "Attract Sounds: On" },
    { 0, 0, "Attract Sounds: Off" },
    { 0, 0, "                           Welcome to the vectorised version of the arcade game Pooyan © 1982 by Konami.    Pooyan is a game which most people knew back then and quite a few loved: who wouldn't want to play such a cute game ? At heart it may be a shooter - even has a powerup (the meat) - but this easily is secondary just to the cutesy value of the game. Plus it is quite easy and lets you play for a while enjoying yourself, not one of those brutal arcade games which feel like all they want to do is kill you right away.   The ported C64 game distributed by Datasoft -and esp. the arcade marquee and the comical graphics of the full-page Pooyan advertisements back then - made even a bigger impact on my boyhood self which I can clearly and fondly remember. Which is why I hunted down the arcade pcbs years ago to play here (Pooyan & Pootan - the Pootan bootleg hardware can run the Pooyan ROMs, btw) and do still quite enjoy playing them.         So I just had to port this to the Vectrex, too.           But also because I thought this would work really well, of course, even though the nice foresty background had to go for vector-count reasons. There are a lot of objects floating around on the screen but on average a lot are placed near to the center of the screen here, which is also a performance consideration with the Vectrex in Pooyans favour. Plus: that background is just begging to be placed on an overlay. But it also works really well for me with the 'how few vectors do you really need' background here. This Piggy Mama is just a 1920s Bauhaus afficionado and built her Pooyans and Buuyans a nice tower with clean lines...                       "}
};
Table of Contents