Releases: aoineko-fr/MSXgl
MSXgl v0.5.18 Alpha
Main changes:
- [V9990] P1 and P2 modes are now fully functional (tiles on 2 layers and 125 sprites). The module also supports: Scrolling, Palette, Status and Interrupt (screen split). Commands and Bitmap modes WIP. A sample programe (
s_v9990
) show case the use of P1 and P2. You can test the sample online: https://webmsx.org/?PRESETS=V9990&ROM=https://github.com/aoineko-fr/MSXgl/raw/main/projects/samples/emul/rom/s_v9990.rom
https://github.com/aoineko-fr/MSXgl/blob/main/engine/doc/img/sample_v9990.png - [NinjaTap] Added support for Ninja Tap device to allows to connect up to 8 joysticks on MSX! Module include detection and reading joysticks state. A sample programe (
s_ntap
) show case how to use it. A driver for BASIC is also available (sees_usr
sample) to manage the device with USR() function. - [VDP] Optimization of many functions by defining unused registers to prevent the compiler to save registers unnecessarily. Added function to set screen offset using X and Y coordinate, and Graphic Mode 2 helper functions.
- [Memory] Added dynamic allocator feature (malloc style function). See
s_sys
sample for a use case. - [Print] Added functions to draw string with FX in 2-pass to prevent character effect overlap. Added vertical text drawing helper function. Optimized Print_DrawBin8() function.
- [Crt0] Optimized custom ISR. Added support for Basic USR target and sample program (
s_usr
). - [Doc] Updated source code
Full Changelog: v0.5.0-alpha...v0.5.18-alpha
MSXgl v0.5.0 Alpha
- [VDP] Added functions to send custom VDP commands for optimization purpose (need
VDP_USE_CUSTOM_CMD
option). - [VDP] Optimized
VDP_FillVRAM_16K()
function. - [VDP] Fixed a bug in Peek/Poke functions by setting access speed to match supported screen modes.
- [VDP] Fixed bug in
VDP_ReadStatus()
function related to too fast access to VDP. - [VDP] Added
VDP_FastFillVRAM_16K()
fast VRAM fill function using 16x unrolled out loop (needVDP_USE_FASTFILL
option). - [VDP] Added new inline function for VDP command with argument for direction (to handle vertical and horizontal symmetry)
- [VDP] Fixed screen mode setting for MSX1 application when MSX2 screen was previously set (with 'Mode 80' under MSX-DOS for example)
- [VDP] Added
VDP_USE_RESTORE_S0
build option to always restore status register to S#0 (only need if you use default BIOS ISR) - [VDP] Added
VDP_ISR_SAFE_MODE
build option to define the level of protection of VDP code to ISR (can beVDP_ISR_SAFE_NONE
,VDP_ISR_SAFE_DEFAULT
orVDP_ISR_SAFE_ALL
) - [Memory] Added function to fast copy/set data to RAM using 16x unrolled LDI (need
MEM_USE_FASTCOPY
andMEM_USE_FASTSET
option). - [Memory] Optimized call for some basic functions (been inline).
- [Input] Added support for mouse devices (need
INPUT_USE_MOUSE
option). - [Input] Added function to detect device plugged to the general purpose port (need
INPUT_USE_DETECT
option). - [Input] Added option to protect or not the access IO registers (need
INPUT_USE_ISR_PROTECTION
option). This option is need if you use default BIOS ISR but not if you use your own and don't access IO inside. - [Input] Added
INPUT_JOY_UPDATE
build flag to allow per-frame joystick update and added two new functions to get states changes (direction and buttons). - [Math] Optimized
Math_Flip()
bits-flip function andMath_Mod10()
function. - [Math] Added helper inline functions to get (pseudo)random number from a given range:
Math_GetRandomMax8/16()
andMath_GetRandomRange8/16()
. - [Math] Added fast signed-integer power-of 2 division functions.
- [System] Added macro to get current segment number in one of the mapped-ROM banks.
- [GamePawn] Added option to set sprite ID for each layer separately (to fine tune sprite priority).
- [GamePawn] Added big optimization when using fixed bound size (
GAMEPAWN_BOUND_X/Y
can be fixed pixel unit values orGAMEPAWN_BOUND_CUSTOM
). - [GamePawn] Optimized of the update function (big improvement).
- [String] Added fast integer-to-ASCII conversion functions (need
STRING_USE_FROM_UINT8
andSTRING_USE_FROM_UINT16
option). - [V9990] Added library and sample. Still WIP...
- [Debug] Added support for string variable for Emulicious debug message.
- [Debug] Added support for OpenMSX debug log feature.
- [Crt0] Added an option to set S#0 at ISR start (so game code don't need to always rest S#0 when reading other status registers ().
- [BuildTool] MSXgl library is not build into a static
.lib
file (path is/out/msxgl.lib
). Useset BuildLibrary=0
in your build option to use the already built library and skip library rebuild. - [BuildTool] Added debug file deploying when debug option is activated.
- [BuildTool] Improved extension handling for OpenMSX (check extension number and add slot expander accordingly).
- [BuildTool] Stop build process when segment compilation failed and fixed debugger tool handling.
- [BuildTool] Added option to update a build version value in a header file (
.\version.h
) at each build (useset BuildVersion=1
). - [BuildTool] Added option to set devices plugged to general purpose port (mouse, joystick, paddle, ...).
- [BuildTool] Set MSX2 application under MSX-DOS to use 80 column mode.
- [BuildTool] Fixed
.cdb
debug file generation. - [Sample] Added a new sample - Example game - to showcase a complete game using MSXgl. Still WIP...
- [Sample] Fixed samples detection and allowed to chose target type for bulk build (using build_all.bat).
- [Doc] Updated source code documentation
Full Changelog: v0.4.1-alpha...v0.5.0-alpha
MSXgl v0.4.1 Alpha
What's Changed
- [Trilo] Added support for TriloTracker SCC music and SFX replayer (in addition to WYZ, Arkos, PT3, ayFX, VGM, lVGM and PCM-enc).
- [Bitbuster2] Added support for Bitbuster2 unpacker (in addition to ZX0, Pletter 0.5c and Bitbuster 1.2).
- [BIOS] Reworked the whole module (speed/size optimization).
- [String] Added support for padding and 32-bits integers.
- [CRT0] Added an option to put RAM on page #0 and install an interrupt manager (ISR) there ; need a MSX with 64K of RAM.
- [CRT0] Added H-Blank interruption support for custom ISR (for cartridge or RAM in page #0).
- [Doc] Updated code documentation.
- [Sample] Added MSX2 template project.
- Various fix and optimizations.
Thanks to all MSXgl users on Discord for their valuable feedback and contributors on GitHub.
Original TriloTracker SCC player by Richard Cornelisse (thanks to the FutureDisk team).
Original Bitbuster2 unpacker by Arjan Bakker.
Full Changelog: v0.4.0-alpha...v0.4.1-alpha
MSXgl v0.4.0 Alpha
What's Changed
- [Compress] Added support for ZX0, Pletter (0.5c1) and Bitbuster (1.2) unpackers
- Updated the
s_zip
sample program to showcase the use of this module.
- Updated the
- [DOS] MSX-DOS1 module now (really) functional
- Added file search, random read/write and console output features.
- Updated FCB structure to give access to all the data.
- Bug fix (IX register backup, BDOS address, SP address).
- Added data file list to be 'cook' with the binary to be included in the DSK file.
- Added a new sample program (
s_dos
) to showcase the use of this module.
- [VDP] Overall upgrade!
- Added support for all MSX2+ features (YJK/YAE modes, horizontal scrolling, etc.).
- Added support for new MSX2 features (frames alternence/interlace).
- Changed the screen mode initialization process to overwrite only intended registers bits.
- Added new configuration defines:
VDP_USE_VRAM16K
: Enable/disable the 16K VRAM access functions (now optional for MSX2 or above).VDP_USE_SPRITE
: Enable/disable the Sprite functions and work RAM area.VDP_USE_COMMAND
: Enable/disable the VDP commands functions (MSX2 or above).VDP_USE_UNDOCUMENTED
: Enable/disable the use of undocumented MSX1 screen mode (not tested).VDP_USE_VALIDATOR
: Enable/disable the validator code (gain few bytes/cycles but you have to know the behavior and exception of all VDP registers bits for each screen mode).VDP_USE_DEFAULT_SETTINGS
: Enable/disable the advanced default VDP setting when callingVDP_SetMode()
.
- Optimized (especially in code size).
- Documented all functions and their parameters (see
MSXgl/engine/doc/html
).
- [Tools] Various bug fix (Build Tool, JIFFY size, constant spelling, etc.).
- Added a header file to list all deprecated labels (functions, variables and defines).
Thanks to abekermsx for its contribution.
Original ZX0 unpacker by Einar Saukas & Urusergi.
Original Pletter unpacker by XL2S Entertainment.
Original Bitbuster unpacker by Team Bomba.
Full Changelog: v0.3.5-alpha...v0.4.0-alpha
MSXgl v0.3.5 Alpha
Change log:
- [BuildTool] Added full support for mapped-ROM : Rework of segment managment, creation of a new binary generator tool called MSXhex (to replace hex2bin) and adding option to handle banked calls. See https://aoineko.org/msxgl/index.php?title=Create_a_mapped_ROM for more information.
- [Sample] Added a sample program to demonstrate use of mapped-ROM
- [MSXtk] Convert code to support GCC and added Linux executable
- [DOS] Fixed DOS1 function call (thanks to abekermsx)
Full Changelog: v0.3.4-alpha...v0.3.5-alpha
MSXgl v0.3.4 Alpha
Change log:
- [Arkos] Added full fonctionnal Arkos Tracker's replayers (thanks to Targhan):
- AKG (generic): The classic player. Good balance between speed and memory.
- AKY (fast): Fastest player (but the music is also bigger).
- AKM (minimalist): Smallest player (but slower).
- Added a sample program to demonstrate Arkos replayer usage (s_arkos).
- [BIOS] Added keyboard reading functions.
- [Input] Added an optional full keyboard rows update and quick reading functions (for no BIOS environment).
- [Sample] Various cleaning and fixs on sample programs.
- [BuildTool]:
- Fixed compile script (fixed mapper segments option and added support for .s assembler source file).
- Added SDCC headers directory to include path.
- [Doc] Updated code documentation (see /engine/doc/html/index.html)
Full Changelog: v0.3.3-alpha...v0.3.4-alpha
MSXgl v0.3.3 Alpha
Change log:
scroll
Added multi-directionnal scrolling module:- Horizontal and/or vertical tile-based scrolling (screen mode 0, 1, 2 and 4)
- Per pixel scrolling using the screen adjustment register and sprite mask to hide the tiles appearance (only for MSX2)
- Fully customizable module using defines to optimize the features used.
- Added sample program:
s_scroll
pcmenc
Fix bug with MSX-DOSdos
Added new 'beta' module to handle MSX-DOSstring
Added new module to handle string manipulation (addedsprintf
style function)- Added a software sprite sample program for all MSX2 bitmap screen mode (using VDP commands)Β :
s_swsprt
- Optimized inline assembler function call (using IY instead of IX)
Full Changelog: v0.3.2-alpha...v0.3.3-alpha
MSXgl v0.3.2 Alpha
Change log:
- Updated provided SDCC version to 4.2.0
- Added modules to handle new audio hardware: MSX-Music, MSX-Audio and SCC.
- Added modules to handle new audio format (in addition to PT3 and ayFX):
- VGM (for all supported hardware),
- lVGM (light-VGM for PSG),
- WYZ (version 47c from mvac7 + version 47d from new asm code),
- PCM-Encoder (from ARTRAG).
- Added module [game_pawn] to handle character animation, movement and collision. The
s_game
sample has been updated to use this module. - Added build option to automatically install BDOS driver for ROM program (using STKE hook).
- Enhanced Emulicious emulator support (inline break-point, debug symbols and launch options).
- Updated code documentation at
engine/doc/html/
(still "rough")
Full Changelog: v0.3.1-alpha...v0.3.2-alpha
MSXgl v0.3.1 Alpha
Alpha-test MSXgl version 0.3.1
Full Changelog: v0.3.0-alpha...v0.3.1-alpha
MSXgl v0.3.0 Alpha
Alpha-test MSXgl version 0.3.0