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.

Issues
  • 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 73 Jun 20, 2022
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 Jun 25, 2022
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 9 Jun 7, 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 95 Jan 31, 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
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 214 Jun 22, 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
MuOnline InGameShop Libraries

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

0x4d696e68 9 May 27, 2022
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

Patrick 5 Apr 11, 2022
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 1.8k Jun 27, 2022
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

Heroic Labs 6k Jun 22, 2022
A repository of gate-level simulators and tools for the original Game Boy.

GateBoy is a gate-level simulation of the original Game Boy hardware that was reverse-engineered from die shots of the original DMG-01 chip.

null 968 Jun 15, 2022
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

Luke Wren 35 Jun 5, 2022
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.

Vadim Grigoruk 3.5k Jun 27, 2022
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

William Bowers 55 Jun 13, 2022
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.

Storm Devs 631 Jun 17, 2022
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

Archie 7 Apr 20, 2022