A set of libraries and tools to make MSX games using the C programming language.

Related tags

Game c z80 msx sdcc gamdev
Overview

ubox MSX lib

This is a set of libraries and tools to make MSX games using the C programming language.

There are three main components:

  • ubox: thin wrapper around MSX 1 BIOS, focusing on Screen 2 and 32K cartridge ROMs.
  • spman: a simple sprite and pattern manager with flickering support.
  • mplayer: a wrapper around Arkos 2 AKM player, supporting music and priority based one channel sound effects.

The aim is making MSX games in C, without writing Z80 assembler or having a deep knowledge of the system.

Requirements

  • SDCC (3.9.0 recommended)
  • GNU Make (others may work)
  • a POSIX compatible environment

If you want to build the example you will also need:

  • python 3
  • pillow
  • GCC (only the C compiler)
  • Disark, one of the tools distributed with Arkos Tracker 2 (download from Arkos Tracker 2 website)

On Windows 10, there are reports of successful builds using:

  • latest version of Cygwin64 with package for gcc-core 10.2.0-1
  • SDCC 4.0.0
  • python 3.9.1

If you want to build the docs you will also need:

  • pandoc
  • python 3
  • pygments
  • pandocfilters

Building

To build the libraries run:

make

After a successful build, the libraries should be in ./lib.

The include files are ready to use in ./include.

Add those directories in SDCC's search path and you are ready to go.

Building the example

An example game is included with the libraries and it can be built with:

make game

After a successful build, the game ROM should be in ./bin.

Building the docs

The documentation is available at usebox.net, so this is optional.

To build the docs run:

make docs

The reference in HTML format will be generated in ./docs.

Contributing

All contributions are welcome.

If you think you have found a bug, please submit a bug report providing some information:

  • What was expected to happen
  • What actually happens
  • How to reproduce the issue

Some advice if you want to make a successful contribution:

  • Be cordial
  • Get early feedback, specially when working on a large contribution
  • Contributions always require a pull request and a review

Authors

This was mostly written by Juan J. Martinez during the development of Night Knight and Uchūsen Gamma.

Copying

This software is distributed under MIT license, unless stated otherwise.

See COPYING file.

TL;DR: the only condition is that you are required to preserve the copyright and license notices. Licensed works, modifications, and larger works may be distributed under different terms and without source code; this includes any game made with the help of this software.

Credit is appreciated, but is not a legal requirement. For example: you can add to the game's documentation a note like "This game uses ubox MSX lib".

There are some third party tools included here for convenience and are covered by their own license or are public domain.

You might also like...
Distributed server for social and realtime games and apps.
Distributed server for social and realtime games and apps.

Distributed server for social and realtime games and apps. Features Users - Register/login new users via social networks, email, or device ID. Storage

MuOnline InGameShop Libraries

InGameShop MuOnline InGameShop Libraries Decompiled by @myheart License Distributed under the MIT License. See LICENSE for more information. Contact @

A chess playing engine with portable libraries.

Swordfish A chess playing engine. Swordfish is designed to be decent at chess, and at the same time, providing a set of chess libraries which can be u

3D games console based on RP2040 and iCE40 UP5k
3D games console based on RP2040 and iCE40 UP5k

PicoStation 3D This is an unfinished, untested project to develop a 3D games console based on an RP2040 microcontroller and an iCE40 UP5k FPGA. Quick

TIC-80 is a fantasy computer for making, playing and sharing tiny games.
TIC-80 is a fantasy computer for making, playing and sharing tiny games.

TIC-80 is a fantasy computer for making, playing and sharing tiny games.

Enfusion Artifical Intelligence for DayZ and future Bohemia Interactive games.

Enfusion AI Project (eAI) This mod adds headless player units under the control of a script on the server. Although the script is very rudimentary now

Game engine behind Sea Dogs, Pirates of the Caribbean and Age of Pirates games.
Game engine behind Sea Dogs, Pirates of the Caribbean and Age of Pirates games.

Game engine behind Sea Dogs, Pirates of the Caribbean and Age of Pirates games.

Project DELTA - An open-source trainer built on the Void Engine for Toby Fox's games and their spin-offs.

Project DELTA v3 Project DELTA - An open-source, modular mod menu for Toby Fox's games and their spin-offs. Important note to Grossley: Yes, it is out

Graphical improvements mod for Hyperdimension Neptunia Re;Birth1, Re;Birth2 and Re;Birth3 games.
Graphical improvements mod for Hyperdimension Neptunia Re;Birth1, Re;Birth2 and Re;Birth3 games.

Neptastic Mod Graphical improvements mod for Hyperdimension Neptunia Re;Birth1, Re;Birth2 and Re;Birth3 games. Features: Resolution upscaling and down

Comments
  • png2tiles.py should behave more like png2sprites.py

    png2tiles.py should behave more like png2sprites.py

    png2sprites.py ignores the palette, but png2tiles.py doesn't. Even with --no-colors it will not allow images to be converted to tiles if the palette doesn't match the MSX palette, which I find a bit weird and inconsistent. Also, it could be useful if you want to import assets to the ubox library. May I tackle this issue?

    opened by pvmm 3
  • Allow multiple files in png2tiles.py

    Allow multiple files in png2tiles.py

    Here is an idea: allowing multiple files as input in png2tiles.py has the following advantages:

    • allow images to remain structured instead of a jumbled up tilemap as input (usually the case if you need to save your precious memory or serialize tiles in 8x8 chunks);
    • more flexibility if you want to remove or add tiles to the set of tiles without the need to reorder and move tiles around as in a single tilemap;
    opened by pvmm 3
  • Print sprite color as comment

    Print sprite color as comment

    If you have similar sprites with lots of layers it's hard to know which colour is assigned to which frame. This patch changes the png2sprites.py script to print the colour as comment before each frame.

    opened by pvmm 1
Owner
Juan J. Martínez
FOSS person. Software Engineer. Amateur gamedev for the ZX Spectrum, Amstrad CPC, Commodore 64, MSX and other shiny things.
Juan J. Martínez
This is a list of different open-source video games and commercial video games open-source remakes.

This is a list of different open-source video games and commercial video games open-source remakes.

Ivan Bobev 173 Jan 2, 2023
Engine being created for homeworks in UPC Master's Degree in Advanced Programming for AAA Video Games.

Strawhat Engine Strawhat Engine is a game engine under construction that has model loading and camera movement features along with an editor. Reposito

I. Baran Surucu 12 May 18, 2022
Tic Tac Toe implementation using c programming language with minimax algorithm.

Tic Tac Toe implementation using c programming language with minimax algorithm.

Sehan Weerasekara 1 Feb 19, 2022
A cross-platform, top-down 2D space shooter written in C using only system libraries.

A cross-platform, top-down 2D space shooter written in C using only system libraries.

Tarek Sherif 1.3k Jan 2, 2023
A flutter package for making game levels map like candy crush or similar games using flutter with ability to be horizontal or vertical

Game Levels Scrolling Map A package for making game levels map like candy crush or similar games using flutter with ability to be horizontal or vertic

Mohamed Sayed 12 Oct 26, 2022
VERY simple cross-platform C++ analytics for games (using Google Analytics)

Tiniest Analytics is a very simple to use, cross-platform (tested on win/osx/linux/ios/android) and basically very tiny analytics system written in C++ (less than 100 lines of code), made specifically for games. It uses libcurl to post events to your Google Analytics account.

Mihai Gosa 96 Oct 11, 2022
Real-time Water - Fast Water Simulation for Games Using Height Fields

In this project a water-simulation was implemented based on the approach suggested in the presentation "Fast Water Simulation for Game

Henrik Patjens 137 Jun 4, 2022
A clone of the classic QBasic Gorillas written in the Zig programming language

⚡ Zig Gorillas ?? A clone of the classic QBasic Gorillas written in the Zig programming language. Take turns in throwing an exploding banana at each o

Fabio Arnold 44 Jun 18, 2022
D2DX is a complete solution to make Diablo II run well on modern PCs.

D2DX D2DX is a preservation project for running classic Diablo II/LoD on modern PCs. Version 0.99.403b Mission statement Turn the game into a well beh

null 258 Jan 3, 2023
A multi core friendly rigid body physics and collision detection library suitable for games and VR applications.

Jolt Physics Library A multi core friendly rigid body physics and collision detection library suitable for games and VR applications. A YouTube video

null 2.5k Dec 31, 2022