Prof. Dr. rer. nat. Peer Johannsen

Weird Science - Tales from the Vectrex Academy Lab

Vectrex Performance Experiment


Project Status

  • Beta release candidate, version 1.0


  • A simple one or two player chess-like game with some basic AI opponents
  • Intended to be rather an academic experiment than the attempt to create a good Vectrex chess game

Most recent changes compared to the previous version

  • Code has been optimized for performance, significant speed up of AI computations.
  • Alpha-Beta pruning of the minimax-algorithm improved by adding one (simple) heuristics.
  • Load-balancing introduced. The AI state machine observes Timer 2 and schedules its computations so that a 50Hz framerate is maintained at all times (well, there might still be some occasional spikes). This can be nicely observed in Vide.
  • AI levels 4 to 6 added. AI levels 1 to 3 do their computations rather quickly, 4 is acceptable, 5 and 6 are mainly included just for performance tests.
  • Choice between board-view and progress-view during AI computation, see below.
  • Choice to let the AIs open a game by up to 3 random moves. This provides for a lot more variety and a means to quickly start an (interesting?) game, as AI computations are otherwise mainly deterministic (same situation on the board will lead to same decision of the AI).
  • Choice between two different board evaluations functions (AI types). Type A is default and well tested, type B is highly experimental.
  • Some bugs fixed which caused the AIs of the previous version to do some silly stuff on rare occasions.

How To Play

  • The rules of Kingslayer Chess are a simplified and modified version of the common rules of chess.
  • The goal of the game is to explicitly slay the opponent's king (hence the name).
  • In order to win the game, the king must be taken by an attacking move of another piece.
  • There is no checking-rule, and the game only ends if the king is taken.
  • There is no castling, en-passant, or pawn-promotion. Also no 50-moves-rule or alike.
  • Use the joystick and the buttons of controller 1 to play the game.

AI opponents

  • The are currently six different AI opponents available, implementing levels 1 to 6 of the minimax algorithm (looking between 1 and 6 moves ahead into the future).
  • Also, a non-AI can be chosen as opponent which does completely random moves only.
  • The AIs are certainly not club player level and rather intended as (worthy?) opponents for the casual novice or amateur player. Maybe they can also provide some fun for beginners or kids who are just about to start learning chess.
  • Computation time and difficulty both increase with the level of AI chosen. AIs 3 and 4 seem to be acceptable in regard of both.
  • While the AIs are computing their moves, it is possible to toggle between board-view and progress-view by pressing button 1 for one second. The default is board-view for AIs 1 and 2, and progress-view for the other AIs 3 to 6.
  • It is sort of fun to watch the AIs play against each other...


  • Peer Johannsen

Prototype Screenshots

Prototype 0.1 Demo Video


  • Initially, the goal of this experiment was to keep the complete board drawn at a 50Hz framerate at all times. Especially, the board was to remain visible during the AI move computations.
  • The screen size of the chess board is the (currently) best possible compromise between performance and the goal to display the board at any time while maintaining a 50Hz frame rate.
  • Only the original Vectrex hardware is used, no additional RAM, no "stronger" external CPU.
  • The code is pure Vectrex C, using the BIOS routines for interfacing with the console hardware only.
  • Also, the code does not use processor interrupts.

Additional Links


  • Downloads are free and for non commercial use only. Use at your own risk.
  • Please respect the copyright and credit the author and the origin of this game.

Online Playing

  • Link to Dr. Snuggles' online emulator to directly play the game in your browser: Kingslayer Chess


Latest modification on 07/09/2021, 12:30

  • Beta release candidate version 1.0 uploaded
  • Page revised