Skip to content

Latest commit

 

History

History
396 lines (279 loc) · 23.3 KB

60-Software.md

File metadata and controls

396 lines (279 loc) · 23.3 KB

YAPC: Software

Here's a list of programs that should or could be (re-)written to work with YAPC (or any nostalgic platform), including some I'm very fond of.

PC Gamer's article "The 50 most important PC games of all time" https://www.pcgamer.com/most-important-pc-games/ seems to be a good source but is seemmingly very biased towards IBM PC and compatibles.

There won't be many examples of 8-bit console games as I didn't own or use any.

Games

All of these are 2D.

All time classics

These were originally text based:

Game Year URL
Star Trek 1971 https://en.wikipedia.org/wiki/Star_Trek_(1971_video_game)
Colossal Cave Adventure 1976 https://en.wikipedia.org/wiki/Colossal_Cave_Adventure
Zork 1977 https://en.wikipedia.org/wiki/Zork
Rogue 1980 https://en.wikipedia.org/wiki/Rogue_(video_game)

These were originally text based, too, but had many graphical implementations:

Game Year Author / Editor URL
Snake 1976 (Blockade) https://en.wikipedia.org/wiki/Snake_(video_game_genre)
Lunar Lander 1979 (Genre) https://en.wikipedia.org/wiki/Lunar_Lander_(video_game_genre)
Tetris¹ 1985 Alexey Pajitnov https://en.wikipedia.org/wiki/Tetris

¹ I played a Turbo Pascal compiled version on PC compatibles in 1988 or 1989.

Arcade classics

See https://en.wikipedia.org/wiki/Golden_age_of_arcade_video_games since most of theses are cited.

Fixed screen

Game Year Author / Editor URL Display
Pong 1972 Atari https://en.wikipedia.org/wiki/Pong N/A?
Breakout 1976 Atari https://en.wikipedia.org/wiki/Breakout_(video_game) N/A?
Space invaders 1978 Taito https://en.wikipedia.org/wiki/Space_Invaders 224×256
Galaxian 1979 Namco https://en.wikipedia.org/wiki/Galaxian 224×256
Berzerk 1980 Stern Electronics https://en.wikipedia.org/wiki/Berzerk_(video_game) 256x224
Missile Command 1980 Atari https://en.wikipedia.org/wiki/Missile_Command 256x231
Pac Man 1980 Namco https://en.wikipedia.org/wiki/Pac-Man 288x224
Donkey Kong 1981 Nintendo https://en.wikipedia.org/wiki/Donkey_Kong_(arcade_game) 256x224
Centipede 1981 Atari https://en.wikipedia.org/wiki/Centipede_(video_game) 256x240
Frogger 1981 Konami https://en.wikipedia.org/wiki/Frogger 224x256
Galaga 1981 Namco https://en.wikipedia.org/wiki/Galaga 288x224
Qix 1981 Taito America https://en.wikipedia.org/wiki/Qix 256x256
Dig Dug 1982 Namco https://en.wikipedia.org/wiki/Dig_Dug 224x288
Q*bert 1982 Gottlieb https://en.wikipedia.org/wiki/Q*bert 256x240

Vector graphics

Game Year Author / Editor URL
Asteroids 1979 Atari https://en.wikipedia.org/wiki/Asteroids_(video_game)
Battlezone 1980 Atari https://en.wikipedia.org/wiki/Battlezone_(1980_video_game)
Tempest 1981 Atari https://en.wikipedia.org/wiki/Tempest_(video_game)
Star Wars 1983 Atari https://en.wikipedia.org/wiki/Star_Wars_(1983_video_game)

NB: for home users, Vectrex console (1982/1983) from Milton Bradley seems to be the main and only source for vector games, cf. https://en.wikipedia.org/wiki/Vectrex.

Scrolling

Game Year Author / Editor URL Display
Defender 1981 Williams Electronics https://en.wikipedia.org/wiki/Defender_(1981_video_game) 292x240 (16)
Scramble 1981 Konami https://en.wikipedia.org/wiki/Scramble_(video_game) 224x256
Moon Patrol 1982 Irem https://en.wikipedia.org/wiki/Moon_Patrol 240x252
Zaxxon 1982 Sega https://en.wikipedia.org/wiki/Zaxxon 256x224
Gauntlet 1985 Atari Games https://en.wikipedia.org/wiki/Gauntlet_(1985_video_game) 336x240
Out Run 1986 Sega https://en.wikipedia.org/wiki/Out_Run 320×224

To be sorted

Game Year Author / Editor Notes
Bomberman 1983 Hudson Soft https://en.wikipedia.org/wiki/Bomberman
H.E.R.O. 1984 Activision Atari 2600, First platform game? https://en.wikipedia.org/wiki/H.E.R.O._(video_game)
Sorcery 1984 Virgin Games (no english page) https://fr.wikipedia.org/wiki/Sorcery_(jeu_vid%C3%A9o,_1984)
Ghosts 'n Goblins 1985 Capcom https://en.wikipedia.org/wiki/Ghosts_%27n_Goblins
Bubble Bobble 1986 Taito https://en.wikipedia.org/wiki/Bubble_Bobble
Solitaire 1990 Microsoft https://en.wikipedia.org/wiki/Microsoft_Solitaire
Sokoban - - https://en.wikipedia.org/wiki/Sokoban
Another World 1991 Éric Chahi / Delphine Software https://en.wikipedia.org/wiki/Another_World_(video_game)

RTS

Genre: https://en.wikipedia.org/wiki/Real-time_strategy

Game Year Author / Editor Notes
Dune - - First modern RTS: https://en.wikipedia.org/wiki/Dune_(video_game)
Dune II - - Real first modern RTS? https://en.wikipedia.org/wiki/Dune_II
Warcraft 1994 Blizzard Entertainment https://en.wikipedia.org/wiki/Warcraft:_Orcs_%26_Humans

RPG

All these series debuted on the Apple II and were ported to most platforms over the years.

Game Year Editor Machine URL
Ultima 1981-1999 Several Apple II & others https://en.wikipedia.org/wiki/Ultima_(series)
Wizardry 1981-2023 Sir-Tech Apple II & others https://en.wikipedia.org/wiki/Wizardry
The Bard's Tale 1985-2022 Several Apple II & others https://en.wikipedia.org/wiki/The_Bard%27s_Tale
Might and Magic 1986-2014 Several Apple II & others https://en.wikipedia.org/wiki/Might_and_Magic

8bit machines classics

Game Year Editor Machine URL
Lode Runner 1983 Broderbund Apple II https://en.wikipedia.org/wiki/Lode_Runner
Boulder Dash¹ 1984 First Star Software Atari 8-bit https://en.wikipedia.org/wiki/Boulder_Dash_(video_game)
Prince of Persia 1989 Broderbund Apple II https://en.wikipedia.org/wiki/Prince_of_Persia_(1989_video_game)

¹ I really thought Boulder Dash was originally released for the C64!

8bit Guy's games

NB: these are not completely open sourced, Planet X3 Open Source Edition is GPL'd, but without assets, and theses sources are really tied to the MS-DOS and x86 platform.

Game URL
Planet X3 https://github.com/planet-x3/px3_ose +
Attack of the PETSCII robots https://github.com/search?q=Attack%20of%20the%20PETSCII%20robots&type=repositories

December 2023: Planet X16 was released, see https://www.the8bitguy.com/35663/planet-x16-is-here/!

Amstrad CPC classics

These ones were my most played ones on my CPC 664 (https://en.wikipedia.org/wiki/Amstrad_CPC#CPC_664):

Game Year Author / Editor URL
Fruity Frank 1984 Kuma Software https://en.wikipedia.org/wiki/Fruity_Frank
Knight Lore 1984¹ Ultimate https://en.wikipedia.org/wiki/Knight_Lore
Barbarian 1987 Palace Software https://en.wikipedia.org/wiki/Barbarian:_The_Ultimate_Warrior

¹ The first release was on the ZX Spectrum in 1984.

Others games I recall playing on the CPC:

Game Year Author / Editor URL
Alien 8 1985 Ultimate https://en.wikipedia.org/wiki/Alien_8
Bruce Lee 1985 U.S. Gold https://en.wikipedia.org/wiki/Bruce_Lee_(video_game)
Highway Encounter 1985 Vortex Software https://en.wikipedia.org/wiki/Highway_Encounter
The Way of the Exploding Fist¹ 1985 Beam Software https://en.wikipedia.org/wiki/The_Way_of_the_Exploding_Fist
Wizball² 1987 Sensible Software https://en.wikipedia.org/wiki/Wizball
  • ¹ This is the first and only one I transfered from cassette to diskette with instructions from Hebdogiciel mag!
  • ² Even if I recall it was way too hard for me ;-)

16 bits machines classics

Game Year Author / Editor URL
Lemmings 1991 DMA Design, Amiga https://en.wikipedia.org/wiki/Lemmings_(video_game)

Atari ST classics

I played numerous hours with these ones on my 1040STF, my STE and my MegaSTE:

Game Year Author / Editor URL
Dungeon Master 1987 FTL Games https://en.wikipedia.org/wiki/Dungeon_Master_(video_game)
Populous 1989 Bullfrog productions https://en.wikipedia.org/wiki/Populous_(video_game)
Rick Dangerous 1989 Firebird Software https://en.wikipedia.org/wiki/Rick_Dangerous¹
Hero Quest 1991 Gremlin Interactive https://en.wikipedia.org/wiki/HeroQuest_(video_game)
Space Crusade 1992 Gremlin Interactive https://en.wikipedia.org/wiki/Space_Crusade_(video_game)

PC/DOS classics

Game Year Author / Editor URL
Jazz Jackrabbit 1994 Epic Megagames https://en.wikipedia.org/wiki/Jazz_Jackrabbit_(1994_video_game)
Duke Nukem ? ? ?

Modern classics

Game Year Author / Editor URL Notes
Flappy bird 2013 Dong Nguyen https://en.wikipedia.org/wiki/Flappy_Bird Horizontal scrolling needed
2048 2014 Gabriele Cirulli https://github.com/gabrielecirulli/2048 Static background

Applications

Classics

Name Year Author URL
Game of life 1970 John Conway https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life
Mandelbrot set and others fractals ? ? https://en.wikipedia.org/wiki/Mandelbrot_set

Demos

Name Year Author URL
3D spinning cube https://rosettacode.org/wiki/Draw_a_rotating_cube
Amiga Boing Ball Demo https://amiga.lychesis.net/applications/AmigaBoingBall.html
XScreenSaver https://en.wikipedia.org/wiki/XScreenSaver
Matrix screensaver https://en.wikipedia.org/wiki/Matrix_digital_rain¹
Bad Apple!! https://en.wikipedia.org/wiki/Bad_Apple!!
Nyan cat https://en.wikipedia.org/wiki/Nyan_Cat²
Old School demo effects https://en.wikipedia.org/wiki/Demo_effect
Pico effects 2021 Tuupola https://github.com/tuupola/pico_effects

¹ XScreenSaver includes MatrixGL ² cf. https://github.com/visrealm/pico-56/tree/main/episodes/ep01-vga/ep01-vga-05-nyancat

Audio MOD player

Goal is to play Amiga 4 channels stereo MODs at least, see:

I made some myself on my Atari and my PC, see https://modarchive.org/index.php?request=view_profile&query=90994.

Tools

Text editor

  • be it vi, nano or joe / Turbo Pascal (Wordstar) like
  • full screen
  • multiple files (buffers) at once?
  • limit files to 64KB?

Shell

Like sh / dash / ash / bash / ...

  • Would be simpler to implement if the console implemented ANSI / vt52 / vt100 compatibility
  • POSIX like? (even BusyBox https://busybox.net/ seems to be too big)
    • files masks / jokers?
    • | pipes?
    • <, > and >> redirections?
    • scripts?
    • history? (with file save)
    • variables?
    • environment variables?
    • line editor capabilities ("à la readline#)?
    • <tab> completion?

Integrated commands:

Command Description
help and help <command> General help and specific help for one command
ls [-l][-1] <path> with dir [/w] alias List files, with DOS alias
cat <file> with typealias Display file's content, with DOS alias
cd <path> Change directory
mkdir <dir> Make directory
more <file> (or less <file>?) Display file's content paginated, with backwards ability with less
cp <src> <dst> Copy file
mv <src> <dst> with ren alias Move / rename file, with DOS alias
rmdir <dir> Remove empty directory
rm <file> Remove file
clear with cls alias Clears the screen
status System information: RAM, system clock, mounted file systems, version and compilation options, ...
date and time Display or set date and time for the RP2040's RTC (and an optional battery backed up module)
...

Other commands from pshell https://github.com/lurk101/pshell (see below, too):

  • cc - compile C source file
  • format - format the filesystem
  • mount - mount filesystem
  • quit - shutdown system
  • reboot - Restart system
  • status - filesystem status
  • unmount - unmount filesystem
  • vi - editor
  • xget - get file (xmodem)
  • xput - put file (xmodem)

Another way to implement a shell would be to extend the functionality of the REPL of an interpreted language like Lua, see below.

Multimedia tools

Name Functionality
SoundTracker MOD editor
Bitmap editor DEGAS Elite / Deluxe Paint style
Sprite / Tileset editor Look at Pico-8 editors?
Tilemap editor Idem?

Development

These are intended to be run on YAPC itself, making it the intended self contained machine.

They all need an editor of some sort for source files and a similar way to edit command line.

Interpreters

Python

Micropython https://micropython.org/download/RPI_PICO/ is the default language for Pico programming.

It already has a REPL that could be extended to use a physical console instead of UART and extensions to handle VGA, sound, keyboard and other stuff.

Main license is MIT, with additional ones for some directories & files, see https://github.com/micropython/micropython/blob/master/LICENSE.

Adafruit maintains Micropython's fork CircuitPython.

BASIC

Lua

Notes:

  • Lua has variable arguments as function myfunction(...), which should make a command interpreter easy within the REPL if we go this way:
dir
dir "/w", "*.txt"

Another way would be to prefix commands with ! or |:

!ls -l *.txt

Javascript

Pascal

C

Java

  • [TODO?]

Lisp**

Forth

  • [TODO?]

Compilers

[TODO!] Amsterdam Compiler Kit

BASIC

Pascal

C

¹ See https://forums.raspberrypi.com/viewtopic.php?p=2036424&hilit=lurk101+pshell+amacc#p2036500

² AMACC stands for "Arguably Minimalist Arm C Compiler"