70 lines
3.0 KiB

Halfive is a collection of specifications, libraries and implementations for a portable racing game.
Extension ID: _DEFAULT
To make extensions/modifications to this project easily trackable, I recommend specifying an 8-character alphanumerical extension ID (underscore hyphen 0-9 A-Z a-z, e.g "_My-Ext2").
'docs' folder: Documentation
'include' folder: Interfaces
'src' folder: Implementations
It has a lot of portable C utility interfaces, such as:
- Freestanding standard library (SWP) (include/halfive/h5stdlib.h)
- Coroutines (SWP) (include/halfive/h5cr.h)
- Custom document format (SWP) (include/halfive/h5doc/h5doc.h)
- Racing track format (WIP) (include/halfive/h5doc/h5t.h)
- Network packet format (UWP) (include/halfive/h5doc/h5net.h)
- Custom virtual machine (SWP) (include/halfive/h5vm/h5vm.h)
- Assembler for the VM (SWP) (include/halfive/h5vm/h5asm.h)
- Lisp dialect for the VM (WIP) (include/halfive/h5vm/h5elq.h)
- Rational numbers (SWP) (include/halfive/h5rat.h)
- Other mathematical tools (UWP) (include/halfive/h5math.h)
- Graphics/Sound/input glue code (UWP) (include/halfive/h5vi.h)
- RPG battle simulator (WIP) (include/halfive/h5rpg.h)
- RPG battle simulator prototypes (WIP) (include/halfive/h5rpg_proto.h)
WIP: Work in progress, unstable/unfinished
UWP: Work in progress, usable
SWP: Work in progress, stable
List of specifications and corresponding MIME types:
Encoding formats:
Halfive Document (H5DOC)
- text/x-h5doc
Halfive Bitmap Format (H5BMP)
- application/x-h5bmp
[ARCHIVED] Halfive Sound Format (H5SND)
- sound/flac
Domain-specific data formats:
[ARCHIVED] Halfive Network (H5NET)
- text/x-h5net
Halfive Track (H5T)
- text/x-h5t
General-purpose tools:
Halfive Virtual Machine (H5VM)
- text/x-h5asm
- application/x-h5bin
- application/x-h5drive
Halfive Eloquent Lisp (H5Elq)
- text/x-h5elq
If you read all specifications in the docs, you should be able to:
- Use H5T as a basic format for circuits
- Use H5BMP as a basic format for sprites
- Use H5SND as a basic format for sound effects and music
- Use H5NET as a basic format for communication
- Use H5VM as a basic runtime for user-generated content
Bonus projects in this repo:
- Custom Version Control System (SWP) (src/h5vcs/)
- Custom web client for controlling the server (UWP) (src/web-control/)
- Preprocessor for H5VM assembly (SWP) (src/core/h5vm/pp.sh)
- Generate an RSS feed from a directory (SWP) (docs/news/genfeed.sh)
- Generate a traffic page from an nginx log file (SWP) (docs/trafficgen.sh)
- Viewer for PAM files and tilesets (run 'make pamview' in src/core/, requires SDL2 headers) (SWP) (src/core/h5vi.c, part inside #ifdef H5VI_IMAGE_VIEWER)
--- Licensing ---
The whole project is released under the MIT license (SPDX: MIT). Please see each folder/file for individual licensing information.