The universal racing game
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Nomagno 76d83bc3cf
Clearer example
5 days ago
assets Make pamview capable of displaying tileset info 1 month ago
docs Further specify H5VM 3 weeks ago
include/halfive Add development environment to H5ASM 2 weeks ago
src Clearer example 5 days ago
.clang-format Add callstack to H5VM architecture, pending implementation 3 weeks ago
LICENSE H5Pix, assets folder 1 month ago
README Make MIME types compliant with IANA tyrants' requirements 4 weeks ago Formatting overhaul 3 weeks ago



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)
- Physics engine (WIP) (include/halfive/h5phy.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:
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/
- Generate an RSS feed from a directory (SWP) (docs/news/
- Generate a traffic page from an nginx log file (SWP) (docs/
- 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 COIL license (SPDX: COIL-1.0). Please see each folder/file for individual licensing information.