The following are three challenges I make to the computer community, relating to:
All three serve to arouse nostalgia among 1990s computer users.
An interesting challenge for game developers, relating to designing games with classic graphics that run on an exceptional variety of modern and recent computers.
Define the larger screen dimension as the larger of the screen width and the screen height.
Limit 3D graphics to the following:
Polygons may, but need not, undergo perspective-correct rendering.
Limit 2D graphics to the following:
Music:
Other Notes:
These limitations were inspired by the graphics limitations of classic handheld game consoles.
A game may impose further resource limits to the specifications given here (for example, to reduce the maximum number of 3D polygons, to disallow polygons, or to reduce the number of colors per tile allowed). I would be interested in knowing about these limitations that a new game that adopts this document decides to impose. I would also be interested in learning about a free and open-source graphics library that implements this specification.4
To improve support for MIDI (Musical Instrument Digital Interface) music playback in open-source and other applications, I challenge the community to write the following items, all of which must be released to the public domain or under the Unlicense.
com.sun.media.sound.EmergencySoundbank
, which however is licensed under the GNU General Public License version 2 rather than public domain.See the “peteroupc/classic-wallpaper” repository for a challenge on creating tileable desktop wallpapers with a limited palette of colors and a limited pixel size — such wallpapers are getting ever harder to find because desktop backgrounds today tend to cover the full computer screen, to employ thousands of colors, and to have a high-definition resolution (1920 × 1080 or larger).
Any copyright to this page is released to the Public Domain. In case this is not possible, this page is also licensed under Creative Commons Zero.
The Multimedia PC Specification (1992) recommended that video cards be able to transfer up to 8-bit-per-pixel graphics at a rate of 140,000 pixels per second or faster given 40 percent of CPU bandwidth. The Multimedia PC level 2 specification (1993) upped this recommendation to 1.2 million pixels per second (sufficient for 320—240 video at 15 frames per second, the recommendation in article Q139826, “AVI Authoring Tips & Compression Options Dialog Box”, 1995). For details on these specifications, see article Q106055 in the Microsoft Knowledge Base. Both recommendations are far from the 6.144 million pixels per second needed to display 640 × 480 pixel video smoothly at 20 frames per second. ↩
I note that it’s possible to write an FM software synthesizer supporting every MIDI instrument in less than 1024 kibibytes of code. ↩
Especially if the library is self-contained and implements the specification with as little source code as possible. It would not be within the spirit of this document to, say, display more polygons or vertices at a time than the maximum allowed using programming tricks, but any such tricks should not be hardware-accelerated. An example of a 2D library that follows the spirit of this specification, even though it doesn’t necessarily meet its requirements exactly, is called Tilengine. ↩
A sound bank of decent quality in either format is about 4 million bytes in size. Making these banks would be easier if there were a guide on producing decent-quality instrument banks from the recordings of real musical instruments (rather than copying or converting other instrument banks or recording from commercial synthesizers). ↩
As Ron Fosner wrote in early 1999: “A typical scene in a current [PC] application has 2000 to 2500 triangles per frame”. R. Fosner, “DirectX 6.0 Goes Ballistic With Multiple New Features And Much Faster Code”, Microsoft Systems Journal January 1999. ↩