top of page
  • andrewrfisher

Homebrew Extra - Retro Gamer 255


VALIANT VECTORS - VECTREX ACADEMY 2023

INTERVIEW WITH PROFESSOR PEER JOHANNSEN



Freeride by Adrian Thees (Vectrex with overlay)

When did you first use a Vectrex?


The Vectrex and I go back together for a long time. In a sense, Vectrex is responsible and played a significant role in what I have become today. Here is the story:

I grew up as a kid in the early 80s, in a small-town village in northern Germany. At that time, the first home video game system was released, and lots of my friends were lucky to get an Atari 2600, and we all met and played a lot. Of course, I also wanted to have my own console, but my parents, both teachers, were against that for educational reasons, as they feared that I would spend and waste all my time playing instead of doing homework and learning things for life. Their killing argument was that, at that time, our family did not own a TV. And as all contemporary video game consoles needed to be hooked up to a TV, they could easily refuse my wish.

Then came the Vectrex. A video-game console with its own screen built in, and for which no extra TV was required. I do not recall how long I pestered my parents until they finally gave in and surprised me on Christmas 1982. It was actually a combination of a birthday present and a Christmas present. My birthday is in late November. "Son, we do not give you much for your birthday this year, so that we are able to maybe give you something bigger for Christmas." I had hopes and guesses of what that might be, and those December weeks before Christmas Eve were very exciting for me.

I was a happy child. And of course, I played. A lot. But while I played, I constantly wondered how this magic was possible. How come there were objects moving across the screen? How come I could control spaceships, only to be finally beaten by something called a "computer"? I was pretty young, and at that time computers were mainly known only from science fiction stories and movies, and the adults around me were of no help and could not explain to me more about this topic (remember, small-town village). In the same year, I had seen the original "Tron" movie in the theatre, and I was absolutely fascinated by its story and its visuals. While playing Vectrex, I always wondered about what was going on inside the machine. I played out fantasy stories about "programs" (whatever those might be) fighting each other, and I thought a lot about what magic technology made video gaming possible.

My whole life I have been curious. Curiosity is one of my greatest assets and at the same time my greatest curse. I always want to know how things work. On the inside. My parents could tell you stories about me taking things apart (including my Vectrex at some point), only to see what is inside. I became determined (and obsessed) "to work with computers" later in my life. I started reading whatever books I could find on that topic, and then I learned that there were things about to be released which were called "home computers", which could be "programmed", and which were able to "run your own programs". So, shortly after getting my Vectrex, I started pestering my parents about getting my own home computer 😊 Eventually I persuaded my mom (and I will forever be grateful to her that she agreed) to allow me to spend all my savings for an Atari 600 XL. She walked with me to the local electronics store, and on that day, I carried home the first computer of my life. My Dad did not know about this, and when he came home in the evening, he was, well, let us say, not amused. Neither of my parents understood what "programming" was about, and he saw my education going down the gamer’s drain. When I see me now, I can only smile about that evening.

By that time, my family did own a TV. Or rather, my older brother owned one. A small black-and-white one. I negotiated with him to let me use his TV whenever he did not need it, and so, at that young age, I taught myself programming in BASIC. It was cool. It was magic. Making the machine do what I want. I still liked playing video games. But my money and my savings were gone, and I could not afford to buy game cartridges. So, I started writing my own games. And my friends started to play my games. That was even cooler. My Dad had been right about one thing, I spend a lot of time in front of the computer. But not playing, programming! Endless hours of coding. There is one thing I keep wondering about. Those childhood days seemed to be endless. I went to school, did my homework, played outside with my friends, went to dancing classes, did a lot of sports, and there was still so much time left for programming. Those days must have consisted of 48 hours. And the nights as well.

I still played on my Vectrex, but in the following years, I quickly moved on from the 8-bit Atari home computers (meanwhile I had gotten a 130XE), to the 16-bit Atari ST series. BASIC was not fast enough for games, so I taught myself machine code and assembly language. I was an active part of the kids-developing-games-in-their-backrooms scene. And I had long since made my mind up that one day I would study Computer Science, which, after graduating from school, I eventually did.

Fast forward to the present. After receiving my diploma in Computer Science (nowadays called a master's degree), I joined the research department of a large industrial company and started working on my PhD, as there were still so many new and interesting things to be discovered and explored. During my PhD work, I spent two years living in California in the Bay Area south of San Francisco, at the heart of Silicon Valley, and the peak of the dot-com hype. That was a great experience which had a significant influence on my life. After returning, I worked as an industrial Software Engineer in R&D for the next ten years, before finally taking up my current position as a professor of Computer Science and Software Engineering at Pforzheim University, Germany, in 2010.



What got you interested in programming for the machine?


Curiosity, 1982, as a kid, I wanted to know how video games work, taught myself programming, later studied Computer Science, worked in research & development, became a professor of Computer Science & Software Engineering, and started thinking about a cool advanced programming class.



How did the Vectrex Academy start?

Early in 2014, I started designing an advanced elective course for students in their final semester who enjoy programming and who want to improve their skills and dig deeper into the finer details of writing efficient software. There are usually many different ways to correctly compute a solution to a given problem or to write a program that solves a given task.


However, programs can greatly differ in how quickly they compute a solution, and in how much memory they need to do this. We are not talking about the speed of the CPU that executes the code, but about the number of computational steps of the underlying algorithm and how it organizes its data. The problems are that modern hardware has become so fast and that there is such an abundance of memory available so that today many programmers do not care anymore about wasting resources when writing software, simply because they did not grow up with an awareness of such important aspects. I have seen it over and over again that students are satisfied with their code as soon as "it does what it is supposed to do", and that they do not care if their code does unnecessary computations because "nobody will notice since the processor is fast enough anyway". And they are also indifferent to whether their code needs more runtime memory than necessary, because "the machine has enough gigabytes anyway". But such aspects are still very important today, especially in the context of programming small embedded systems, many of which are safety-critical, or when dealing with large data sets.

Programmers who grew up in the 80s think differently. The home computer systems we had in those days were tiny compared to today's technology. Their processors operated at a crawling speed in relation to modern CPUs, and there were only a few kilobytes of memory available. Still, we wrote games, and we wanted our own games to be better, faster, and more entertaining than all other games out there. We squeezed every CPU cycle we could save in computations, and we fought for each bit we could save in the system's memory, and we used those to add more features to our games, or to make our games run smoother and faster. And we knew each and every corner of our systems by heart. Also, we used every programming trick and bit hack we could come up with. In those days, a "hack" was the term for a clever and elegant piece of code that solved a local problem faster or with less memory, and to be a "hacker" meant being a very good programmer. Only later did those terms acquire a negative connotation.

Granted, today's systems are much more complex, and modern software development requires higher levels of abstraction, in order to finish projects in time. But being aware of what happens at the low level of a program, close to the hardware, still is a great advantage when it comes to writing software today.

For those reasons, I had started to think about using an old retro home computer from the 1980s in this programming class, to force the students to focus on such details, and to be able to demonstrate the effects and the difference between efficient and non-efficient programs. And then a lucky coincidence occurred.

I got a call from my father, who still lived in northern Germany, far away from Pforzheim, where I live. He was cleaning out his attic, and he had found my old childhood Vectrex. He asked me if it was okay if he threw it away. I had not thought about my Vectrex for more than a decade, and I told him to send it to me instead, as I wanted to try to play it once last time, and then throw it away myself. When it arrived, I was surprised to find it in working condition. And I played. That was an evening full of childhood memories, and when I finally stopped playing, I was wondering how I could have even thought about throwing that jewel away.

When I woke up the next morning, I had found the solution for my course design. I was determined to use the Vectrex in this classroom course. We would be going to program our own games for the Vectrex, and I would use the Vectrex to explain and demonstrate all the hard topics the course was intended to be about. Which, selfishly, of course, meant making my own childhood dream of writing my own program for Vectrex come true.

By then I had already read about the Vectrex community and about the homebrew activities of some of its programmers, and I started researching the necessary equipment (flash cartridges) and development tools. I would like to mention that from the very start, I got some great support and help from members of the community. My biggest problem was that, so far, all of the homebrew development for the Vectrex, except for a few experiments, had been done in assembly language (machine code). Coding in assembly language is great, and I had done it before in the eighties, but today it is a long-lost art which unfortunately is not taught anymore. By no means would there be enough time on the course to teach efficient programming techniques, familiarize the students with Vectrex, and let them write games for it, while also teaching them assembly language. Even without that last part, the whole endeavour seemed a bit adventurous. The programming language which our students at Pforzheim University learn in their first semester is C. This makes sense, as C is still the most prominent programming language used for writing software for embedded systems, which, in a sense, Vectrex is also an example of. I spent the next months figuring out a way to program the Vectrex in C, and with setting up a toolchain and creating a C development environment for the Vectrex. And this is how the first programming class started.

Using a system like Vectrex, and letting the students write games for it, is of course a pedagogical trick. You all know how outstanding and fascinating Vectrex always has been and still is today. Seeing their own programs run on a real Vectrex is the big fun factor and motivational attraction of this class, letting the students forget that in truth it is about some hard programming topics.

Over the next years, and again with great help from some wizards of the Vectrex community, we perfected this C programming setup, bought two more consoles for use in the classroom, and at some point, the phrase "Vectrex Academy" was coined for the course, which since then has become a regular part of the curriculum.


Were you happy with how many took part this year?


Numbers are deceiving. It is not about how many students end up in a specific course. Students must end up on a course they like and are genuinely interested in. And of course, that they have the appropriate qualifications and skills to participate. In that sense, I was very happy with this year's participants, regardless of their number, as they all had a strong motivation and love for programming, and they all were keen on realizing their own project for Vectrex.



Did you have actual hardware to test the games on?


Yes, we have two real Vectrex consoles in the classroom (one GCE, one MB). That is one of the great appeals of the class, to actually run your code on a real console. Today's youth is used to simulations and emulations. Seeing their games run on a real retro console is what fascinates the students. We use emulators as tools in the software development cycles, but constantly try and test the code in the real thing.



What were your favourite entries this year, and your favourites from previous years?


My policy is to not have any favourites. As a teacher, I have to be neutral and impartial. I try to support each student's individual project as best as I can. At the end of the class, I have to grade each project. Grading must not be influenced by how much I like a project idea, or by whether or not I am a fan of the chosen genre of the game.



Will there be a new Academy in 2024?


Usually, there is a Vectrex Academy in each spring term semester (March to July). However, in spring 2024 I will be on a research sabbatical, not teaching any classes. The next Vectrex Academy will be in 2025.



Have you seen other homebrew titles for the Vectrex?


Lots, if not most of them :-)



Would you be interested in expanding the idea to other retro machines?


I have thought of that. I have a small collection of home computers in my university lab (ZX81, Atari 400, Atari XL, Atari ST, Atari Falcon, Commodore 64, Commodore C16, Amiga), and I use them every once in a while, as illustrations or for demonstrations in lectures. Setting up and running a thing like the Vectrex Academy required and still requires a tremendous amount of setup and preparations (setting up the toolchain, becoming an expert of the system, maintaining the hardware etc.), and due to my other, regular teaching obligations there is only a limited amount of time left for such activities. Also, I already have so many Vectrex-related ideas I still want to pursue, that there is not enough time for them all.



ACADEMY ACHIEVEMENTS


RG’s favourites – all the games available free/online at https://bit.ly/vectrex2023 


 

TEE TIME by Jan Volz (apollo)

This superb mini-golf game works well with its overlay, and later holes add switches and teleports to increase the fun.

 

VECVENTURE by Alexander Bauer (R4G3H4CK3R)

A fully-fledged Rogue-style RPG with plenty of different enemies and effective use of the controller’s multiple buttons.

 

WETCAT by Sebastian Leininger (nop)

Reminiscent of Splatoon’s Squid Jump, keep your cat above water by jumping between platforms to collect fish and scratch enemies.

 

VECDRIFT by stackoverflow

There are certainly other Vectrex driving games, but this has a starting choice of car and smooth handling.

 

FREERIDE by Adrian Thees (the_last_bitbender)

A cute infinite runner where the penguin snowboards down the slope, jumping (and tricking) over boulders and ducking under trees.



NEWS BYTES


AMSTRAD CPC: Mighty Street Fighter from AmstradGGP should be available soon – https://www.amstradggp.com/


BBC MICRO: Matthew Atkinson released Repton 3 Redux, requiring 16K Sideways RAM, adding levels from the data disks and multiple improvements. https://bit.ly/repton3-redux


C64: Evil Dungeon II is the dungeon-crawling sequel to 2022’s Evil Dungeon, both available digitally via https://retroarts.itch.io/ or physical editions at https://shop.retroarts.de/

DREAMCAST: DreamSDK is a new Windows-based development system, with dedicated support on the DCEmulation forum. https://dreamsdk.org/


GAME BOY: Tony Wang’s GB BASIC is a “retro fantasy console” with built-in asset editors (for tiles, maps, sprites, and sound) that can export a Game Boy-compatible ROM. https://bit.ly/gb-basic

NES: The NESDev Compo ’23 received 24 entries – but sadly, developer Rani Barker (creator of Senseless City) passed away before the competition closed. May she rest in peace. https://bit.ly/nesdev2023

PICO-8: The fantasy console can run Doom – thanks to Freds72’s magnificent Poom, with music by Paranoid Cactus. https://bit.ly/poom

Also, the superb demake of Stardew Valley by Taxicomics ( https://bit.ly/pico-valley ) and Paul Hammond’s adaptations of arcade classics Mappy and Carnival ( https://pahammond.itch.io/ ), while Suika Game fans will enjoy Johan Peitz’s Cosmic Collapse ( https://bit.ly/cosmic-collapse )


ZX SPECTRUM: With a physical cassette by Cronosoft, download Forest Escape: A Knight’s Quest by Irata Hack and donate to the PKD Foundation charity. https://bit.ly/forestescape-zx




Mighty Street Fighter preview (Amstrad CPC)

CHAMPION CODER


[Name]

Robert Troughton (AKA Raistlin/Genesis Project)


[Info]

From: Thailand

Format: C64

Working on: Sabre Wulf Remastered



Demo coder Raistlin is working with artist Jon Eggelton to remaster an Ultimate classic.



What made you decide to create Sabre Wulf Remastered?


I'd seen Jon Eggelton's re-imagining of a loader screen for the game and, as it was one of my old fave retro games, I reached out to him to commend him. He then showed me that he hadn't actually stopped at the loading screen - he'd redrawn a lot of the in-game graphics, too. It was all just too good to be true, the art quality was just so much better than the original, and it was a whole different ball game.


At that point, I was thinking that I could just find how the C64 conversion of Sabre Wulf worked and to replace the old graphics with new - how hard could it be? The original used multicolour bitmap mode, as did Jon's new graphics, but the original used some weird 3-colours (2 unique plus 1 background) per character square (8x8px) instead of the traditional 4-colours (3 plus 1). It saved some memory, sure, but they were really just getting 1 extra (fixed) colour and were losing resolution for that privilege (the Spectrum game's screen was 256x184px, the C64's 128x184"double" px). I needed to find some extra memory to store the extra colour data, which I just couldn't... without a major rewrite.


I also noticed at this point that such as the screen-draw routine was using the most inefficient routine imaginable. They'd literally chosen the slowest load-store instructions that the machine had - and then wrapped those in some really poorly optimised loop. This was ripe for rewriting to make the game feel more fluid.


Poking around more, there were just too many things that I couldn't leave alone ... it got to the point where I realised that it would be more work to patch the game than to rewrite it ... so I made the call - and Jon was really happy with the idea too. It would allow us to look at improving various other niggles that we had with the original too.



How did you get into C64 programming?


At an early age, I'd been interested in hacking games, writing cheats for them, modifying them, and delving into them to see how they worked. so that gave me a start. After doing that for a while, I chanced upon the demoscene - and, as with many at the time, quickly became hooked. I'd come home from school and just sit there programming. BASIC was too slow so I'd use an Expert Cartridge and just write machine code directly into the assembler. I loved it. I never really used a higher-level language until I got a job in video games after finishing University 5 years later... 6510 machine code/assembly language programming was just so beautiful.



Are you using any demo tricks/techniques in this game?


Absolutely. We can't go overboard, for sure, demo coders tend to unroll everything - which very quickly leads to having zero memory left - but I’m using a few tricks that I learnt there to make this game faster and smoother. We also have a "bitmap scroll" for the intro to the game as our Sabre Man falls from the sky to the jungle below - along with some parallax trees and credits rolling on top too.



What is your development environment?


Much of the work that I do is in C++. Not for any of the code that actually makes it to the C64, that's pure 6510 machine code, but for the tools surrounding that for converting graphics, generating tables and so on. I use Visual Studio Professional (since I use it for my day job), along with Kick Ass 6510 assembler, GitHub (with regular commits), Sparkle (our demo group's disk-loading system - we wanted the best, fastest loading we could have, and Sparkle gives us that), and SPOT (for optimising graphics to be more compressible...) I have a script that will build the entire game, or only the parts that have changed, and will create a disk image for me to test on the emulator (I use VICE most of the time).



Who else is involved?


We have Jon Egg (Jon Eggelton) doing the design and graphics, and Psych858o (Marcin Majdzik) on audio. I also call on Sparta sometimes for advice on compression and loading - he wrote the Sparkle loader system.



Are you making any major changes to the gameplay?


The gameplay code is completely rewritten. We're trying to keep the best bits of the original, with some improvements, and then only changing the bits that we felt were missing, or those which we hated. We're hoping to have something that fans of the original will enjoy.


For example, we've extended the screen to be 320x200px in size - 160x200"double" px - compared to the original's 256x184px. We've added a "fog of war" map that you can access at any time to help you find your way through the map. and we've made the player character movement much smoother and more responsive. The original game used software sprites in places - e.g. for the rhinos and sabre Wulf - and those were just really badly done (flickery and jerky on screen...) we're only using hardware sprites so, yeah, it's all going to feel a lot cleaner.



How much more is there to do?


I'd say that we could be finished sometime around mid-2024, maybe a little earlier, if we can keep this momentum going. I'm currently starting to add a frontend to the game, along with high scores (saved to disk), and then we have the flowers to add, the larger/trickier critters (rhino, sabre Wulf, the little Aztec guy, etc), some different movement patterns for some of the critters, and so on. Then lots and lots of polish and bug fixing.



Are you planning any other game projects?


I've really enjoyed working on this one so, yeah, why not? Maybe something a little simpler next time. Maybe we choose a game where we really can just replace the graphics in place without a remaster? Or maybe we create something entirely new... we'll see :-)




Sabre Wulf Remastered (C64 demo version)

DATABURST - GAME REVIEWS



SNK VS CAPCOM


Format: C64 cartridge

Credits: RetroGL, JonEgg

Price: Free download plus PDF manual


[Score] 90% - Retro Gamer SIZZLER



Fydo’s Magic Tiles


Format: Game Boy

Credits: Tom Sutton (art by Graylure, music by Max Chappell)

Price: digital $4.00 (includes PDF and soundtrack), physical cart $40 plus shipping


[Score] 81%



CPCRetroDev 2023 competition


Format: Amstrad CPC

Credits: Hosted by the University of Alicante

Price: Free to download


3rd - Paulina’s Potions (Leosoft)

2nd - Sugar City (Voxel Tower)

1st - Alloy Box (CNG Soft)


Verdict: Another excellent selection of Amstrad CPC games this year.



PROCESSING - PREVIEW


A cute cat investigates in Goloso Games’ Game Boy Color prequel – Inspector Waffles: Early Days.


Interview with Yann of Goloso Games:


What inspired the character of Inspector Waffles?


My initial plan, when I started working on Inspector Waffles, the first game, was to create a point-and-click adventure game with detective mechanics. I was inspired by games like L.A. Noire: I wanted to add a simpler interrogation system, where you can interact with clues. That was the main idea of the game, but I didn't have the protagonists. One day, I found a game jam where the theme was 'cats and dogs protagonists’, and immediately I imagined a case where a cat doesn't land on his feet/paws. I thought of a funny name, and Waffles came quickly!



Why did you choose to create a Game Boy prequel?


A year after the first game release, I missed my cat and dog characters. I had that feeling that I had much more to tell about them, especially in their early days. How Waffles started as an Inspector, how he met all his colleagues and his future arch-nemesis. I deeply wanted to finish the story that I created. And that’s what I started to do.


The story was quickly written, but… I didn’t want to make a PC game this time. And I had this idea: “A story in the past, on a console from the past”. I’m also a retrogamer, I still play on my old consoles sometimes (particularly my SNES and Game Boy), I was the kind of kid to hide under the blanket at night to play Link’s Awakening and Super Mario Land 2… All this made sense, that’s what I wanted to do! I started to learn how to use GB Studio, I tried to adapt Inspector Waffles game mechanics into the Game Boy limitation and after a couple of months, I had my first rough case! I shared it with some friends, and they were very enthusiastic.



What is the development environment used?


I made the game with GB Studio. It's in my opinion, one of the best game engines I ever used: it's easy to handle, you can make games quickly, and you don't need to know a lot about coding before starting: it's the perfect game engine for beginners who want to start making games. I actually studied software development and usually make my games on Unity, but I have to say, it's refreshing to be able to make games with limitations and on an old console.



How did you come up with the notebook system for clues and leads?


Probably the same as 1) question? I "borrowed" that system from L.A. Noire, and I adapted it to make it simpler (no face recognition for example) and more compatible for a point-and-click adventure game. I wanted to keep the classic "point-click-combine" feature from all point-and-click games, and I made it more "detective" by adding the clues list. On the Game Boy game, I focused more on the clues than the items, to make the game easy to play, I wanted to make more of a detective story with a top-down view, it fits better on the Game Boy screen.



Will there be more Inspector Waffles in the future?


Good question. Maybe? It will mostly depend on this new game's success and on my motivation to make another detective game. I already have a point-and-click adventure in progress, with time travel mechanics named Pixel's Time Paradox ( https://golosogames.itch.io/pixels-time-paradox ). It's hard to tell right now, but honestly, I hope someday I'll make more stories of my cats and dog characters.


NOTE: Since this interview, the full game was funded successfully on Kickstarter and is launching later in 2024.


And Yann recently became a father, celebrating by releasing a new title called Baby Time: https://golosogames.itch.io/baby-time - donations will go towards toys for his new daughter.



Inspector Waffles: Early Years (Game Boy Color screenshot)
Using clues helps you when questioning the characters.

34 views0 comments

Recent Posts

See All
bottom of page