Hi everyone!
CVBasic is a production-ready integer-BASIC compiler for Colecovision. A lot of games have been developed with it, and more games are coming!
This release extends support to a 15th platform: Nintendo Entertainment System (best known as NES) and Famicom (the original Japanese edition). The difference of video processor breaks the compatibility (slightly), as the games need to be rewritten in terms of 8x16 sprites. In order to help developers, I've made NES/Famicom versions of the examples included with CVBasic.
Edit: And a 16th platform: MSX2, porting from MSX1 is mostly straightforward, and allows to use palettes and multicolor sprites!
For the other platforms, the compatibility keeps going, and you can target all the platforms simply by changing a switch in the command-line.
Getting a list of supported platforms:
cvbasic
Standard compilation for Colecovision:
cvbasic examples/viboritas.bas viboritas.asm
gasm80 viboritas.asm -o viboritas.rom
Compilation for NES/Famicom:
cvbasic --nes examples/viboritas_nes.bas viboritas.asm
gasm80 viboritas.asm -o viboritas.nes
Compilation for MSX2:
cvbasic --msx2 examples/viboritas_msx2.bas viboritas.asm
gasm80 viboritas.asm -o viboritas.rom
CVBasic is able to generate mapper 0 NES ROMs (32K ROM with 8K CHRROM) and mapper 30 NES ROMs (256K / 512K ROM with up to 32K CHRROM copied to CHRRAM automatically) Both mappers have readily available PCBs for cartridge making. Notice CVBasic includes two new prologue/epilogue files exclusively for this platform: cvbasic_nes_prologue.asm and cvbasic_nes_epilogue.asm
The generate ROM files have been tested in emulation (Maciform, only the 32K ones) and in real hardware using a Krikzz Evercade N8 cartridge (both 32K ROM and 256K ROM)
In order to convert bitmaps to NES/Famicom format, tmscolor has a new -nes option. At this time it uses the same VDP colors as MSX, so you need to design your sprites using these colors, and the lower two bits of the color are used for the NES output, and you can change these using the PALETTE sentence in CVBasic (you can see an example of this in oscar_nes.bas). So for example, you can use light blue (color 5) to draw your monsters, and then change this to a maroon color. And there are 4 separate palettes for tiles, and 4 separate palettes for sprites in NES/Famicom (a global background color, and 3 colors for each palette, choosen from a very rich palette of 64 colors)
Also this CVBasic version solves a few bugs, adds the Konami mapper for MSX platforms, and the code for TI-99/4A is faster and smaller.
Changes in v0.9.1:
o Added support for MSX2 using --msx2
o MSX2: It supports the PALETTE statement.
o MSX2: It supports MODE 4, extended sprites, DEFINE SPRITE COLOR, BORDER, and SCROLL.
o MSX2/SMS: Added PALETTE DEFAULT.
o MSX2: Added examples viboritas_msx2.bas and palette_msx2.bas.
o MSX2: Access to 64K of VRAM using VPOKE and VPEEK.
o Added note about support of Blue and Purple buttons (Super Action Controllers for Colecovision)
o Added support for spinners and roller controller using CONT1.SPINNER and CONT2.SPINNER (Colecovision)
o Z80: Added small optimization for PRINT, saving one byte for each string printed.
o NES: Solved important bug where VPOKE/PRINT would corrupt some variables, and arrays could be allocated to a wrong address.
Changes in v0.9.0:
o Added support for NES/Famicom using --nes
o MSX: Added support for Konami mapper using -konami
o Solved bug in DEF FN precedence inside expressions.
o Solved bug in > operator with 16-bit variable.
o NABU: Solved bug where compilation would warn of both sound chips.
o TI-99/4A: Corrected bug in CHR$ and DEFINE VRAM READ.
o TI-99/4A: Solved bugs doing operations with 8-bit variables and 16-bit values.
o TI-99/4A: Solved bug in multiplication by 1.
o TI-99/4A: Solved bug in SELECT CASE.
o TI-99/4A: Solved bug in DEFINE COLOR PLETTER.
o TI-99/4A: Optimizes more operations with constants.
o TI-99/4A: Added more optimization using register labeling, saves many bytes, and speeds up.
o TMSColor: Added support for up to 448 tiles in Sega Master System.
o TMSColor: Added support for PNG files.