CPCTelera is a modern, cross-platform game engine for the Amstrad CPC using the C language. Francisco Gallego, the main developer responsible for the library has announced that, after a long development cycle, the version 1.4 has been released.
This is a major release with several new features, improvements, and bug fixes. Also, the license was changed from GPL to LGPL, which basically allow developers to use the library not only for open source but also proprietary applications.
The list is massive, which we simply reproduce here:
- Low-level library, scripts, building system and examples moved to LGPL license to suit more developer needs.
- Added CPCRSLib installer script (cpct_installrslib): automatically installs and configures CPCRSLib to be used along with CPCtelera.
- Added -c modifier to cpct_mkproject to let the user create CPCRSLib enabled projects.
- Improved cpct_drawSpriteMaskedAlignedTable to work with un-aligned sprites. Only 256-bytes transparency table shall be aligned now.
- Added interrupt unsafe functions for keyboard scanning
- Improved img2cpc sprite generation: explicit array width*height sizes and automatic size constants generation.
- Added new high-quality random number generators: Marsaglia XORShift 8/16/32 bits and Marsaglia XORShitf+ 40 bits state.
- Simplified use of random number generators with standard macros cpct_rand and cpct_srand, to work like C functions rand/srand.
- Added simple user example for random number generation: easy/random.
- Added macro IMG2SPRITES for automatically converting tilemap TMX files into C arrays on typing “make”.
- Added macro TMX2C for automatically converting image files into sprites (C-arrays), tiles and tilesets on typing “make”.
- Added configuration files image_conversion.mk and tilemap_conversion.mk to easily include TMX2C and IMG2SPRITES macros for all user assets in the project.
- Added new conversion options to cpct_tmx2csv: generation of C/H files, different output folder, and custom c-identifier generation.
- Added new macros cpctm_createTramsparentMaskTable and cpctm_declareMaskTable to easily define and create 256-bytes aligned transparency tables, greatly simplifying the process.
- Added Horizontal Sprite flipping functions: for Modes 0, 1 & 2 and normal/masked sprites, working from RAM and ROM, to suit different user needs.
- Added user examples for horizontal flipping functions. C-examples: flipAnimM2, flipSprites. ASM-examples: hflipSpriteM1, flipMaskSprite.
- Added macro cpctm_screenPtr to do static calculation of screen memory pointers, saving CPU and binary space when calculating constant locations.
- Updated old examples to use new macros, especially cpctm_screenPtr.
- Improved cpct_img2tileset output messages and success status check. Also added an option to output harware converted palette values.
- Added CPCT_VMEM_START macro defining video memory start: standarizes its uses.
- Updated hello world template example to use new macros, simplifying its code.
- Added assembly macros for undocumented Z80 opcodes: used to clarify code.
- Added ultra-optimized assembly macros for bit and pixel reversing inside bytes: they can reverse pixels inside a byte for modes 0, 1 and 2.
- Added macros CPCT_ABSOLUTE_LOCATION_AREA and CPCT_RELOCATABLE_AREA to absolutely locate code and data inside binary space and memory.
- Added example advanced/relocateMemory to show how to use memory relocation macros.
- Added CPCT_XBITARRAY and CPCT_ENCODEXBITS macros to easily define, declare and populate bitarrays.
- Added new type of bitarrays: bitarrays of 6-bits per item.
- Added new example medium/bitarrayMaps1 to clarify the use of bitarrays as tilemaps and other structures.
- Added sprite blending functions: can blend sprites with background using different modes like XOR, OR, AND, ADD, ADC, SUB, SBC, LDI, NOP.
- Added sprite blending example medium/blendedSprites.
- Added colour enumerations to simplify palette definitions and palete colour changes (CPCT_FW_Colour and CPCT_HW_Colour)
- Added support for cpct_winape script to automatically load debugging symbols on launching DSKs.
- Updated cpct_winape to download Winape 2.0 beta 2.
- Added another ASM example with some sprite/text drawing, automatic sprite conversions and animations.
- Some performance improvements on previous functions.
- Updated to SDCC 3.5.5. (and fixed libboost 1.6. compilation problem).
- Fixed a problem with multithreaded compilation on ARM platforms using SD Cards as main storages (mainly Raspberry Pi)
- Added OBJS2CLEAN variable to makefiles to let the user clean some custom generated objects.
- Improved documentation
- Fixed cpct_tmx2csv failing on cygwin
- Added tilemap_hwscroll example to show hardware scrolling capabilities along with an expanded tilemap.
- Added latest 1.1.1. version of Retro Game Asset Studio (RGAS)
- Everything packed with love to give user the best possible set of tools :)
The library can be downloaded directly from Github, following the link below.