Difference between revisions of "What is MSXgl?"

From MSX Game Library

 
(31 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{MSXGL}} is a Game Library wrote in C and targeting MSX computers.
+
{{MSXGL}} is a free and open source Game Library wrote in C and targeting MSX computers.
  
 
The goal of this library is to offer to C programmers, the whole set of functionalities to create a game with high performances.<br/>
 
The goal of this library is to offer to C programmers, the whole set of functionalities to create a game with high performances.<br/>
EvenEven if a C program can never be as efficient as a program written entirely in assembler, the goal is to try to get as close as possible.
+
Even if a C program can never be as efficient as a program written entirely in assembler, the goal is to try to get as close as possible.
  
 
To achieve this goal, the library is dynamically compiled to allow the user to configure the functionalities to best suit his needs.<br/>
 
To achieve this goal, the library is dynamically compiled to allow the user to configure the functionalities to best suit his needs.<br/>
 
Also, the most expensive features are written in assembler.
 
Also, the most expensive features are written in assembler.
  
The other goal was to create a library that could be totally independent of the BIOS. This makes it much easier to use the 16K of page 0.<br/>
+
The other goal was to create a library that can be totally independent of the BIOS. This makes it much easier to use the 16K of page 0.<br/>
 
The library also provides interrupt handling code to create ROMs that always remain on page 0.
 
The library also provides interrupt handling code to create ROMs that always remain on page 0.
  
The Build Tool allows in 1 click to create a final program for a large number of formats:  
+
Many [[samples|sample]] programs are available to demonstrate the different [[modules|features]] of the library.
 +
<html><div>
 +
<img width="20%" src="https://raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/finalsmash.jpg" />
 +
<img width="20%" src="https://raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_draw.jpg" />
 +
<img width="20%" src="https://raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_psg.jpg" />
 +
<img width="20%" src="https://raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_game.png" />
 +
<img width="20%" src="https://raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_scroll.png" />
 +
<img width="20%" src="https://raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_print.jpg" />
 +
<img width="20%" src="https://raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_sprite.jpg" />
 +
<img width="20%" src="https://raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_clock.jpg" />
 +
</div></html>
 +
 
 +
The Build Tool allows in 1 click to create a final program for a large number of target formats:  
 
* Plain ROM from 8K to 64K (interrupt handler can be install in page 0),
 
* Plain ROM from 8K to 64K (interrupt handler can be install in page 0),
 
* Mapped ROM from 64K to 4096K (ASCII-8, ASCII-16, Konami and Konami SCC mappers),
 
* Mapped ROM from 64K to 4096K (ASCII-8, ASCII-16, Konami and Konami SCC mappers),
Line 16: Line 28:
 
* BASIC binary program.
 
* BASIC binary program.
  
The library supports the following devices: VDP (TMS9918 and V9938), PSG (AY-3-8910), Keyboard/Joystick, ROM mapper, slot manager, and Real Time Clock (RP-5C01).
+
The library supports the following devices:
 +
* Video: MSX1 (TMS9918), MSX2 (V9938), MSX2+ (V9958) and V9990.
 +
* Audio: PSG (AY-3-8910), MSX-Music (OPLL), MSX-Audio and Konami SCC/SCC+.
 +
* Input: Keyboard, Joystick, Mouse,  Paddle and Ninja Tap.
 +
* ROM mapper, slot manager, Real Time Clock (RP-5C01), ...
  
 
Here are also the supported audio formats:
 
Here are also the supported audio formats:
* PT3 (Vortex Tracker II)
+
* [https://www.julien-nevo.com/arkostracker/ Arkos Tracker 2] (AKG, AKY and AKM)
 +
* [https://github.com/cornelisser/TriloTracker?tab=readme-ov-file TriloTracker SCC]
 +
* [https://github.com/ivanpirog/vortextracker Vortex Tracker II] (PT3)
 +
* [https://github.com/AugustoRuiz/WYZTracker WYZTracker] (WYZ)
 
* ayFX
 
* ayFX
* VGM (AY-3-8910 only)
+
* VGM (for all supported audio chip)
 +
* lVGM (a light-VGM format for PSG)
 
* PCM-Encoder (aka. ''Crystal clean PCM 8bit samples on the poor PSG'')
 
* PCM-Encoder (aka. ''Crystal clean PCM 8bit samples on the poor PSG'')
  
Many thanks to the members of the [https://msx.org MSX Ressource Center] and [http://msxvillage.fr MSX Village] who have been very helpful.<br/>
+
Many thanks to the members of the [https://msx.org MSX Ressource Center], [http://msxvillage.fr MSX Village] and all the {{DISCORD}} members who have been very helpful.<br/>
  
The library is distribute under [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons BY-SA] license. Tools or sources from other author could use others free license.
+
The library is distribute under [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons BY-SA] license. Tools or sources from other authors could use [[credits|other free license]].
  
  
 
== Directories ==
 
== Directories ==
{|
+
📁 MSXgl
|-
+
├─📁 engine         | MSXgl library
|📁 <tt>engine</tt>      || '''MSXgl library'''
+
├─📁 content       | Data ready to include (font, math table)
|-
+
├─📁 datasrc       | Data source
|├─📁 <tt>content</tt>  || Data ready to include (font, math table)
+
├─📁 doc           | Documentation
|-
+
├─📁 lib           | Static library binaries (perhaps one day...)
|├─📁 <tt>datasrc</tt>  || Data source
+
├─📁 script       | Build Tool scripts
|-
+
└─📁 src           | Library sources (.c and .h)
|├─📁 <tt>doc</tt>      || Documentation
+
├─📁 projects       | Programs (this is where you will create your own project)
|-
+
│ ├─📁 example      | Example game
|├─📁 <tt>lib</tt>      ||  
+
├─📁 samples       | Sample programs (VDP, PSG, Sprite, ...)
|-
+
├─📁 targets       | Samples to test all target (ROM, DOS)
|├─📁 <tt>script</tt>    || Build Tool scripts
+
│ ├─📁 template      | MSX 1 template sample (can be use as base to create a new program)
|-
+
│ └─📁 template_msx2 | MSX 2 template sample (can be use as base to create a new program)
|└─📁 <tt>src</tt>      || Library sources (.c and .h)
+
└─📁 tools           | Tools
|-
+
  ├─📁 MSXtk        | MSX tool kit utilities (MSXhex is used in the build process)
|📁 <tt>projects</tt>    || '''...'''
+
  ├─📁 audio         | Tools used with audio
|-
+
  ├─📁 build         | Tools used by the [[Build tool]]
|├─📁 <tt>samples</tt>  || Sample programs (VDP, PSG, Sprite, ...)
+
  ├─📁 compress      | Tools used to compress data
|-
+
  └─📁 sdcc         | SDCC (binaries for Windows and Linux, and z80 lib)
|├─📁 <tt>targets</tt>  || Samples to test all target (ROM, DOS)
+
 
|-
+
== How to... ==
|└─📁 <tt>template</tt>  || Template sample (can be use as base to create a new program)
+
* [[Install|Install and setup MSXgl]]
|-
+
* [[Create my first program]]
|📁 <tt>tools</tt>      || '''...'''
 
|-
 
|├─📁 <tt>audio</tt>    ||  
 
|-
 
|├─📁 <tt>build</tt>    ||  
 
|-
 
|└─📁 <tt>sdcc</tt>      ||  
 
|}
 

Latest revision as of 08:51, 18 October 2024

MSXGL is a free and open source Game Library wrote in C and targeting MSX computers.

The goal of this library is to offer to C programmers, the whole set of functionalities to create a game with high performances.
Even if a C program can never be as efficient as a program written entirely in assembler, the goal is to try to get as close as possible.

To achieve this goal, the library is dynamically compiled to allow the user to configure the functionalities to best suit his needs.
Also, the most expensive features are written in assembler.

The other goal was to create a library that can be totally independent of the BIOS. This makes it much easier to use the 16K of page 0.
The library also provides interrupt handling code to create ROMs that always remain on page 0.

Many sample programs are available to demonstrate the different features of the library.

The Build Tool allows in 1 click to create a final program for a large number of target formats:

  • Plain ROM from 8K to 64K (interrupt handler can be install in page 0),
  • Mapped ROM from 64K to 4096K (ASCII-8, ASCII-16, Konami and Konami SCC mappers),
  • MSX-DOS 1 or 2 binary program,
  • BASIC binary program.

The library supports the following devices:

  • Video: MSX1 (TMS9918), MSX2 (V9938), MSX2+ (V9958) and V9990.
  • Audio: PSG (AY-3-8910), MSX-Music (OPLL), MSX-Audio and Konami SCC/SCC+.
  • Input: Keyboard, Joystick, Mouse, Paddle and Ninja Tap.
  • ROM mapper, slot manager, Real Time Clock (RP-5C01), ...

Here are also the supported audio formats:

Many thanks to the members of the MSX Ressource Center, MSX Village and all the Discord Logo.png Discord server members who have been very helpful.

The library is distribute under Creative Commons BY-SA license. Tools or sources from other authors could use other free license.


Directories

📁 MSXgl
├─📁 engine          | MSXgl library
│ ├─📁 content       | Data ready to include (font, math table)
│ ├─📁 datasrc       | Data source
│ ├─📁 doc           | Documentation
│ ├─📁 lib           | Static library binaries (perhaps one day...)
│ ├─📁 script        | Build Tool scripts
│ └─📁 src           | Library sources (.c and .h)
├─📁 projects        | Programs (this is where you will create your own project)
│ ├─📁 example       | Example game
│ ├─📁 samples       | Sample programs (VDP, PSG, Sprite, ...)
│ ├─📁 targets       | Samples to test all target (ROM, DOS)
│ ├─📁 template      | MSX 1 template sample (can be use as base to create a new program)
│ └─📁 template_msx2 | MSX 2 template sample (can be use as base to create a new program)
└─📁 tools           | Tools
  ├─📁 MSXtk         | MSX tool kit utilities (MSXhex is used in the build process)
  ├─📁 audio         | Tools used with audio 
  ├─📁 build         | Tools used by the Build tool
  ├─📁 compress      | Tools used to compress data
  └─📁 sdcc          | SDCC (binaries for Windows and Linux, and z80 lib)

How to...