The universal racing game
Go to file
Nomagno bfb7055168 Update Makefile 2023-11-10 21:09:19 +01:00
assets A couple of utility scripts, new resources 2023-08-05 15:42:27 +02:00
docs Add note for future usage 2023-09-07 02:32:28 +02:00
include/halfive Refactor for future physics engine 2023-11-10 21:05:54 +01:00
src Update Makefile 2023-11-10 21:09:19 +01:00
.clang-format Add callstack to H5VM architecture, pending implementation 2023-01-16 02:05:07 +01:00
LICENSE Relicense project to MIT license 2023-04-11 21:19:22 +02:00
README Relicense project to MIT license 2023-04-11 21:19:22 +02:00 Formatting overhaul 2023-01-15 16:15:32 +01:00


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/
	- 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 MIT license (SPDX: MIT). Please see each folder/file for individual licensing information.