Difference between revisions of "Samples"
From MSX Game Library
| (153 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
| − | + | Here is a list of sample programs included with '''MSXgl''' to illustrate how to use the library’s various features and functions. | |
| + | To test a sample program, follow these steps: | ||
| + | # Open a command-line interface in the <tt>MSXgl/projects/samples/</tt> directory. | ||
| + | # Run one of the following commands, depending on your operating system: | ||
| + | #* <tt>build.bat s_game</tt> (Windows) | ||
| + | #* <tt>./build.sh s_game</tt> (Linux & macOS) | ||
| − | + | Replace <tt>s_game</tt> with the name of the sample you wish to test (there’s no need to include the <tt>.c</tt> file extension). | |
| − | + | ||
| − | + | <u>Note:</u> Sample programs use a configuration system that overwrites the default project settings (<tt>project_config.js</tt>) with a sample-specific configuration file (e.g., <tt>s_game.js</tt>). This approach allows multiple projects to coexist in the same directory without conflicts. | |
| − | + | ||
| + | For standalone projects, this step is unnecessary. To learn how to set up your own project from scratch, see [[Create my first program|this guide]]. | ||
| + | |||
| + | == Core == | ||
| − | === | + | === Hello World === |
| − | + | {{SAMPLE_BOX | |
| − | + | |name=Hello | |
| − | + | |desc=Program showing the minimal code needed to display a "Hello World!" text. | |
| − | + | |module1= | |
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_hello.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_hello.jpg | ||
| + | }} | ||
=== BIOS === | === BIOS === | ||
| − | + | {{SAMPLE_BOX | |
| − | + | |name=BIOS | |
| − | + | |desc=Program showing the use of default BIOS functions. | |
| − | + | |module1=bios | |
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_bios.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_bios.jpg | ||
| + | }} | ||
=== Clock === | === Clock === | ||
| − | + | {{SAMPLE_BOX | |
| − | + | |name=Clock | |
| − | + | |desc=Program showing the use of the MSX2's Real Time Clock (Ricoh RP-5C01) to get current time and save/load data from CMOS memory. | |
| − | + | |module1=clock | |
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_clock.c | ||
| + | |machine=MSX2 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_clock.jpg | ||
| + | }} | ||
| − | === | + | === PSG === |
| − | + | {{SAMPLE_BOX | |
| − | + | |name=PSG | |
| − | + | |desc=Program showing the use of direct control over PSG sound chip. | |
| + | |module1=psg | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_psg.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_psg.jpg | ||
| + | }} | ||
| + | |||
| + | === System === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=System | ||
| + | |desc=Program showing the retrieval of system information. | ||
| + | |module1= | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_sys.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_sys.jpg | ||
| + | }} | ||
| + | |||
| + | == Render == | ||
=== Draw === | === Draw === | ||
| − | + | {{SAMPLE_BOX | |
| − | + | |name=Draw | |
| − | + | |desc=Program showing the use of Draw module with the MSX2 bitmap screen modes. | |
| − | + | |module1=vdp | |
| + | |module2=draw | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_draw.c | ||
| + | |machine=MSX2 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_draw.jpg | ||
| + | }} | ||
| + | |||
| + | === Graph Mode 3 === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=Graph Mode 3 | ||
| + | |desc=Program showing the use of Screen 4 (aka Graph mode 3) with various configuration (including unofficial MSX configurations like "Screen 1.5"). | ||
| + | |module1=vdp | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_gm3.c | ||
| + | |machine=MSX2 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_gm3_2.png | ||
| + | }} | ||
| + | |||
| + | === Print === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=Print | ||
| + | |desc=Program showing the use of graphical print features (bitmap, sprite, effects, etc.). | ||
| + | |module1=print | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_print.c | ||
| + | |machine=MSX2 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_print.jpg | ||
| + | }} | ||
| + | |||
| + | === Scrolling === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=Scrolling | ||
| + | |desc=Program showing the use of multi-directionnal tile-based scrolling and screen adjust register for smooth scrolling. | ||
| + | |module1=vdp | ||
| + | |module2=scroll | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_scroll.c | ||
| + | |machine=MSX2 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_scroll.png | ||
| + | }} | ||
| + | |||
| + | === Sprite Mode 1 === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=Sprite | ||
| + | |desc=Program showing the use of sprite mode 1 and a Sprite Attribute Table flip method to reduce sprite disappearance. | ||
| + | |module1=vdp | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_sm1.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_sm1.jpg | ||
| + | }} | ||
| + | |||
| + | === Sprite Mode 2 === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=Sprite | ||
| + | |desc=Program demonstrating the use of sprite mode 2 (including multi-colors) and split screen using the horizontal interrupt to modify VDP parameters during screen rendering. | ||
| + | |module1=vdp | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_sprite.c | ||
| + | |machine=MSX2 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_sprite.jpg | ||
| + | }} | ||
| + | |||
| + | === Sprite FX === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=Sprite FX | ||
| + | |desc=Program showing the use of Sprite Tool module to modify sprite data (support Cropping, Flipping, Asking and Rotating). | ||
| + | |module1=sprite_fx | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_sprtfx.c | ||
| + | |machine=MSX2 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_sprttool.gif | ||
| + | }} | ||
| + | |||
| + | === Software Sprite === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=Software Sprite | ||
| + | |desc=Program showing the use of software sprite for all bitmap modes using VDP commands. | ||
| + | |module1=vdp | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_swsprt.c | ||
| + | |machine=MSX2 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_swsprt.png | ||
| + | }} | ||
| + | |||
| + | === Software Tile === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=Software Tile | ||
| + | |desc=Program showing the use of software tile mode for MSX2 bitmap modes (only Screen 5 & 8 has been tested). | ||
| + | |module1=vdp | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_swtile.c | ||
| + | |machine=MSX2 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_swtile.png | ||
| + | }} | ||
| + | |||
| + | === Text === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=Text | ||
| + | |desc=Program showing the use of print module with text modes (all MSX1 and MSX2 text/tiled mode). | ||
| + | |module1=print | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_text.c | ||
| + | |machine=MSX12 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_text.jpg | ||
| + | }} | ||
| + | |||
| + | === VDP Command === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=VDP | ||
| + | |desc=Program showing the use of VDP command to draw several effect in all bitmap modes. | ||
| + | |module1=vdp | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_vdpcmd.c | ||
| + | |machine=MSX2 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_vdpcmd.jpg | ||
| + | }} | ||
| + | |||
| + | == Target format == | ||
| + | |||
| + | === Boot Disk === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=Boot Disk | ||
| + | |desc=Program showing the use boot disk target format. The program will be start from disk without going through MSX-DOS but allow to use BDOS function. | ||
| + | |module1=dos | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_dos0.c | ||
| + | |machine=MSX2 | ||
| + | |target=DOS0 | ||
| + | |ext= | ||
| + | |state=PARTIAL | ||
| + | |img= | ||
| + | }} | ||
| + | |||
| + | === MSX-DOS === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=MSX-DOS | ||
| + | |desc=Program showing the use of MSX-DOS 1 routines to load and display image from file. | ||
| + | |module1=dos | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_dos.c | ||
| + | |machine=MSX22+ | ||
| + | |target=DOS1 | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/refs/heads/main/engine/doc/img/project/s_dos.png | ||
| + | }} | ||
| + | |||
| + | === MSX-DOS 2 === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=MSX-DOS 2 | ||
| + | |desc=Program showing the use of various MSX-DOS 2 routines to load and display image, get disk information or handle mapped memory. | ||
| + | |module1=dos | ||
| + | |module2=dos_mapper | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_dos2.c | ||
| + | |machine=MSX2 | ||
| + | |target=DOS2 | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/refs/heads/main/engine/doc/img/project/s_dos2.png | ||
| + | }} | ||
| + | |||
| + | === Mapped ROM === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=Mapped ROM | ||
| + | |desc=Program showing usage of mapped ROM and segments switching. | ||
| + | |module1= | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_mapper.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_ASCII8_128K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img= | ||
| + | }} | ||
| + | |||
| + | === NEO mapper === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=NEO mapper | ||
| + | |desc=Program showing usage of NEO-8 mapped ROM and segments switching. | ||
| + | |module1= | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_neomap.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_NEO8_8M | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/refs/heads/main/engine/doc/img/project/s_neomap.png | ||
| + | }} | ||
| + | |||
| + | == Utilities == | ||
| + | |||
| + | === BASIC USR === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=BASIC USR | ||
| + | |desc=Program showing the creation of binary to be load and used from BASIC. | ||
| + | |module1=basic_usr | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_usr.c | ||
| + | |machine=MSX1 | ||
| + | |target=BIN_USR | ||
| + | |ext={{NINJATAP}} | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/refs/heads/main/engine/doc/img/project/s_usr.png | ||
| + | }} | ||
| + | |||
| + | === Compressor === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=Compressor | ||
| + | |desc=Program showing the use of several compression algorithms (RLEp, Bitbuster 1 & 2, ZX0 and Pletter). | ||
| + | |module1=compress/bitbuster | ||
| + | |module2=compress/bitbuster2 | ||
| + | |module3=compress/lz48 | ||
| + | |module4=compress/pletter | ||
| + | |module5=compress/zx0 | ||
| + | |file=s_zip.c | ||
| + | |machine=MSX2 | ||
| + | |target=DOS1 | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/refs/heads/main/engine/doc/img/project/s_zip.png | ||
| + | }} | ||
| + | |||
| + | === Driver === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=Driver | ||
| + | |desc=Program showing the creation of the driver, a code designed to be placed in memory and executed from a main program. Used in [[#MSX-DOS 2]] sample. | ||
| + | |module1= | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_drv.c | ||
| + | |machine=MSX1 | ||
| + | |target=RAW | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/refs/heads/main/engine/doc/img/project/s_drv.png | ||
| + | }} | ||
| + | |||
| + | === Encryption === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=Encryption | ||
| + | |desc=Program showing the use of an encoding system to encrypt data. Useful for creating backup codes, for example. | ||
| + | |module1=crypt | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_crypt.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/refs/heads/main/engine/doc/img/project/s_crypt.png | ||
| + | }} | ||
=== Game === | === Game === | ||
| − | + | {{SAMPLE_BOX | |
| − | + | |name=Game | |
| − | + | |desc=Program showing the use of Game state and Game pawn modules. The Game state module offers state management while Game pawn allows to manage characters (display, animation, movement, collision, etc.) | |
| − | + | |module1=game/state | |
| + | |module2=game/pawn | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_game.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_game.png | ||
| + | }} | ||
| + | |||
| + | === Localize === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=Localize | ||
| + | |desc=Demonstration of the localization management module with support for multiple languages and management of different character sets. | ||
| + | |module1=localize | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_loc.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_loc.png | ||
| + | }} | ||
| + | |||
| + | === Math === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=Math | ||
| + | |desc=Program showing the use of mathematics pre-computed tables, pseudo-random generator and quick-computation functions. | ||
| + | |module1=math | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_math.c | ||
| + | |machine=MSX2 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_math.jpg | ||
| + | }} | ||
| + | |||
| + | === Menu === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=Menu | ||
| + | |desc=Program showing the use of Menu module. | ||
| + | |module1=game/menu | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_menu.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=PARTIAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/refs/heads/main/engine/doc/img/project/s_menu.png | ||
| + | }} | ||
| + | |||
| + | === QR Code === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=QR Code | ||
| + | |desc=Program showing the use of QR Code module. | ||
| + | |module1=tool/qrcode | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_qrcode.c | ||
| + | |machine=MSX2 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/refs/heads/main/engine/doc/img/project/s_qrcode.png | ||
| + | }} | ||
| + | |||
| + | === QR Code Tiny === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=QR Code | ||
| + | |desc=Program showing the use of QR Code Tiny module (version optimized for fixed size). | ||
| + | |module1=tool/qrcode_tiny | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_qrtiny.c | ||
| + | |machine=MSX2 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/refs/heads/main/engine/doc/img/project/s_qrtiny.png | ||
| + | }} | ||
| + | |||
| + | === Save === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=Save | ||
| + | |desc=Program showing the use of data save from cartridge (supporting floppy disk and PAC cartridge). | ||
| + | |module1=tool/disk_save | ||
| + | |module2=device/pac | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_save.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/refs/heads/main/engine/doc/img/project/s_save.png | ||
| + | }} | ||
| + | |||
| + | === WaveGame === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=WaveGame | ||
| + | |desc=Program demonstrate the use WaveGame feature for the Pico+ cartridge. | ||
| + | |module1=device/wavegame | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_wavegm.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/refs/heads/main/engine/doc/img/project/s_wavegm.png | ||
| + | }} | ||
| − | === | + | == Devices == |
| − | |||
| − | |||
| − | |||
| − | |||
=== Joystick === | === Joystick === | ||
| − | + | {{SAMPLE_BOX | |
| − | + | |name=Joystick | |
| − | + | |desc=Program showing the use of joystick and input manager. | |
| − | + | |module1=input | |
| + | |module2=input_manager | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_joystk.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_joystick.jpg | ||
| + | }} | ||
=== Keyboard === | === Keyboard === | ||
| − | + | {{SAMPLE_BOX | |
| − | + | |name=Keyboard | |
| − | + | |desc=Program showing the use of keyboard and input manager. | |
| − | + | |module1=input | |
| + | |module2=input_manager | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_keybrd.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_keyboard.jpg | ||
| + | }} | ||
| + | |||
| + | === Mouse === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=Mouse | ||
| + | |desc=Program showing the use of mouse device and universal port (joystick port) device detection. | ||
| + | |module1=input | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_mouse.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/refs/heads/main/engine/doc/img/project/s_mouse.png | ||
| + | }} | ||
| + | |||
| + | === Ninja Tap === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=Ninja Tap | ||
| + | |desc=Program showing the use of NinjaTap device to connect up to 8 joysticks on one MSX machine. | ||
| + | |module1=device/ninjatap | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_ntap.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_32K | ||
| + | |ext={{NINJATAP}} | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_ntap.png | ||
| + | }} | ||
| + | |||
| + | === JoyMega === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=JoyMega | ||
| + | |desc=Program showing the use of JoyMega adapter to use 8 buttons Megadrive joystick on MSX. | ||
| + | |module1=device/joymega | ||
| + | |module2=device/msx-hid | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_jmega.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_32K | ||
| + | |ext={{JOYMEGA}} | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/refs/heads/main/engine/doc/img/project/s_jmega.png | ||
| + | }} | ||
| + | |||
| + | === Lightgun === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=Lightgun | ||
| + | |desc=Program showing the use of 'ASCII Plus-X Terminator' and 'MHT Gun-Stick' lightguns on MSX. | ||
| + | |module1=device/lightgun | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_lgun.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=PARTIAL | ||
| + | |img= | ||
| + | }} | ||
| + | |||
| + | === ObsoNET === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=ObsoNET | ||
| + | |desc=Program showing the use of ObsoNET cartridge using network stack. | ||
| + | |module1=network/obsonet | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_onet.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_16K | ||
| + | |ext=OBSONET | ||
| + | |state=WIP | ||
| + | |img= | ||
| + | }} | ||
| + | |||
| + | === PAC === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=PAC | ||
| + | |desc=Program showing the use of PAC or FM-PAC to load/save data into SRAM. | ||
| + | |module1=device/pac | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_pac.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_32K | ||
| + | |ext={{PAC}} | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_pac.png | ||
| + | }} | ||
| + | |||
| + | === Paddle === | ||
| + | {{SAMPLE_BOX | ||
| + | |name=Paddle | ||
| + | |desc=Program showing the use of Arkanoid Vaus Paddle module. | ||
| + | |module1=device/paddle | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_paddle.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_48K_ISR | ||
| + | |ext=PADDLE | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/refs/heads/main/engine/doc/img/project/s_paddle.png | ||
| + | }} | ||
| − | === | + | === V9990 === |
| − | + | {{SAMPLE_BOX | |
| − | + | |name=V9990 | |
| − | + | |desc=Program showing the use of Yamaha V9990 based video cartridge. | |
| − | + | |module1=v9990 | |
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_v9990.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_32K | ||
| + | |ext={{V9990}} | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_v9990.png | ||
| + | }} | ||
| − | === | + | == Audio Format == |
| − | |||
| − | |||
| − | |||
| − | |||
| − | === | + | === Arkos === |
| − | + | {{SAMPLE_BOX | |
| − | + | |name=Arkos | |
| − | + | |desc=Program to demonstrate the use of the different Arkos Tracker (AT2 and AT3) music replayers. | |
| − | + | |module1=arkos/akg_player | |
| + | |module2=arkos/akm_player | ||
| + | |module3=arkos/aky_player | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_arkos.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_ASCII8_128K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_arkos.png | ||
| + | }} | ||
| − | === | + | === ayFX === |
| − | + | {{SAMPLE_BOX | |
| − | + | |name=ayFX | |
| − | + | |desc=Program showing the use of ayFX sound effect replayer (both using a bank or a single sound file). | |
| − | + | |module1=ayfx/ayfx_player | |
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_ayfx.c | ||
| + | |machine=MSX2 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_ayfx.jpg | ||
| + | }} | ||
| − | === | + | === lVGM === |
| − | + | {{SAMPLE_BOX | |
| − | + | |name=Light VGM | |
| − | + | |desc=Program showing the use of light-VGM's replayer (PSG). | |
| − | + | |module1=vgm/lvgm_player | |
| + | |module2=dos_mapper | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_lvgm.c | ||
| + | |machine=MSX1 | ||
| + | |target=DOS2 | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/refs/heads/main/engine/doc/img/project/s_lvgm.png | ||
| + | }} | ||
| − | === | + | === NDP === |
| − | + | {{SAMPLE_BOX | |
| − | + | |name=NDP | |
| − | + | |desc=Program showing the use of NDP replayer (PSG). | |
| − | + | |module1=ndp/ndp_player | |
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_ndp.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/refs/heads/main/engine/doc/img/project/s_ndp.png | ||
| + | }} | ||
| − | === | + | === PCM-Encoder === |
| − | + | {{SAMPLE_BOX | |
| − | + | |name=PCM Encoder | |
| − | + | |desc=Program showing the use of the PCM Encoder's replayer (aka. ''Crystal clean PCM 8bit samples on the poor PSG''). | |
| − | + | |module1=pcm/pcmenc | |
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_pcmenc.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_pcm.jpg | ||
| + | }} | ||
| − | === | + | === PCM Play === |
| − | + | {{SAMPLE_BOX | |
| − | + | |name=PCM Play | |
| − | + | |desc=Program showing the use of the PCM Play's replayer. | |
| − | + | |module1=pcm/pcmplay | |
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_pcmplay.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/refs/heads/main/engine/doc/img/project/s_pcmplay.png | ||
| + | }} | ||
| − | === | + | === PT3 === |
| − | + | {{SAMPLE_BOX | |
| − | + | |name=PT3 | |
| − | + | |desc=Program showing the use of Vortex Tracker II's replayer. | |
| − | + | |module1=pt3/pt3_player | |
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_pt3.c | ||
| + | |machine=MSX2 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_pt3.jpg | ||
| + | }} | ||
| − | === | + | === Trilo Tracker SCC === |
| − | + | {{SAMPLE_BOX | |
| − | + | |name=Trilo Tracker SCC | |
| − | + | |desc=Program showing the use of Trilo Tracker SCC's replayer. | |
| − | + | |module1=trilo/trilo_scc_player | |
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_trilo.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_KONAMI_SCC_128K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/refs/heads/main/engine/doc/img/project/s_trilo.png | ||
| + | }} | ||
=== VGM === | === VGM === | ||
| − | + | {{SAMPLE_BOX | |
| − | + | |name=VGM | |
| − | + | |desc=Program showing the use of VGM's replayer (PSG, SCC, MSX-Music, MSX-Audio). | |
| − | + | |module1=vgm/vgm_player | |
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_vgm.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_ASCII16_256K | ||
| + | |ext={{SCC}} {{MSXMUSIC}} {{MSXAUDIO}} | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_vgm.jpg | ||
| + | }} | ||
=== WYZ === | === WYZ === | ||
| − | + | {{SAMPLE_BOX | |
| − | + | |name=WYZ | |
| − | + | |desc=Program showing the use of WYZ Tracker's replayer (version 0.3). | |
| − | + | |module1=wyz/wyz_player | |
| − | === | + | |module2= |
| − | + | |module3= | |
| − | + | |module4= | |
| − | + | |module5= | |
| + | |file=s_wyz.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_wyz.png | ||
| + | }} | ||
| − | == | + | === WYZ2 === |
| − | + | {{SAMPLE_BOX | |
| − | + | |name=WYZ2 | |
| − | + | |desc=Program showing the use of WYZ Tracker's replayer (version 0.3 47d). | |
| + | |module1=wyz/wyz_player2 | ||
| + | |module2= | ||
| + | |module3= | ||
| + | |module4= | ||
| + | |module5= | ||
| + | |file=s_wyz2.c | ||
| + | |machine=MSX1 | ||
| + | |target=ROM_32K | ||
| + | |ext= | ||
| + | |state=FUNCTIONAL | ||
| + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/refs/heads/main/engine/doc/img/project/s_wyz2.png | ||
| + | }} | ||
Latest revision as of 20:38, 19 October 2025
Here is a list of sample programs included with MSXgl to illustrate how to use the library’s various features and functions. To test a sample program, follow these steps:
- Open a command-line interface in the MSXgl/projects/samples/ directory.
- Run one of the following commands, depending on your operating system:
- build.bat s_game (Windows)
- ./build.sh s_game (Linux & macOS)
Replace s_game with the name of the sample you wish to test (there’s no need to include the .c file extension).
Note: Sample programs use a configuration system that overwrites the default project settings (project_config.js) with a sample-specific configuration file (e.g., s_game.js). This approach allows multiple projects to coexist in the same directory without conflicts.
For standalone projects, this step is unnecessary. To learn how to set up your own project from scratch, see this guide.
Core
Hello World

- File: s_hello.c
- State: ✔️ Functional
32K BIOS

32K Clock

32K PSG

32K System
Render
Draw

32K Graph Mode 3

32K 
32K Scrolling

32K Sprite Mode 1

32K Sprite Mode 2
- Showcased modules:
- File: s_sprite.c
- State: ✔️ Functional
32K Sprite FX

- Showcased modules:
- File: s_sprtfx.c
- State: ✔️ Functional
32K Software Sprite

- Showcased modules:
- File: s_swsprt.c
- State: ✔️ Functional
32K Software Tile

- Showcased modules:
- File: s_swtile.c
- State: ✔️ Functional
32K Text

32K VDP Command

- Showcased modules:
- File: s_vdpcmd.c
- State: ✔️ Functional
32K Target format
Boot Disk

BOOT MSX-DOS

MSX-DOS MSX-DOS 2

MSX-DOS 2 Mapped ROM

- File: s_mapper.c
- State: ✔️ Functional
ASCII8 128K NEO mapper

- File: s_neomap.c
- State: ✔️ Functional
NEO8 8M Utilities
BASIC USR

BIN (USR) 
Compressor

- Showcased modules:
- compress/bitbuster (doc, code)
- compress/bitbuster2 (doc, code)
- compress/lz48 (doc, code)
- compress/pletter (doc, code)
- compress/zx0 (doc, code)
- File: s_zip.c
- State: ✔️ Functional
MSX-DOS Driver

- File: s_drv.c
- State: ✔️ Functional
Encryption

32K Game

32K Localize

32K Math

32K Menu

32K QR Code

- Showcased modules:
- tool/qrcode (doc, code)
- File: s_qrcode.c
- State: ✔️ Functional
32K QR Code Tiny

- Showcased modules:
- File: s_qrtiny.c
- State: ✔️ Functional
32K Save

- Showcased modules:
- tool/disk_save (doc, code)
- device/pac (doc, code)
- File: s_save.c
- State: ✔️ Functional
32K WaveGame

- Showcased modules:
- File: s_wavegm.c
- State: ✔️ Functional
32K Devices
Joystick

- Showcased modules:
- File: s_joystk.c
- State: ✔️ Functional
32K Keyboard

- Showcased modules:
- File: s_keybrd.c
- State: ✔️ Functional
32K Mouse

32K Ninja Tap

- Showcased modules:
- File: s_ntap.c
- State: ✔️ Functional
32K 
JoyMega

- Showcased modules:
- device/joymega (doc, code)
- device/msx-hid (doc, code)
- File: s_jmega.c
- State: ✔️ Functional
Lightgun

- Showcased modules:
- File: s_lgun.c
- State: ❓ Partially functional
32K ObsoNET

- Showcased modules:
- File: s_onet.c
- State: 🚧 Work in progress
16K OBSONETPAC

- Showcased modules:
- device/pac (doc, code)
- File: s_pac.c
- State: ✔️ Functional
32K 
Paddle

- Showcased modules:
- device/paddle (doc, code)
- File: s_paddle.c
- State: ✔️ Functional
48K (ISR) PADDLEV9990

32K 
Audio Format
Arkos

- Showcased modules:
- File: s_arkos.c
- State: ✔️ Functional
ASCII8 128K ayFX

- Showcased modules:
- File: s_ayfx.c
- State: ✔️ Functional
32K lVGM

- Showcased modules:
- vgm/lvgm_player (doc, code)
- dos_mapper (doc, code)
- File: s_lvgm.c
- State: ✔️ Functional
MSX-DOS 2 NDP

- Showcased modules:
- File: s_ndp.c
- State: ✔️ Functional
32K PCM-Encoder

- Showcased modules:
- pcm/pcmenc (doc, code)
- File: s_pcmenc.c
- State: ✔️ Functional
32K PCM Play

- Showcased modules:
- pcm/pcmplay (doc, code)
- File: s_pcmplay.c
- State: ✔️ Functional
32K PT3

- Showcased modules:
- File: s_pt3.c
- State: ✔️ Functional
32K Trilo Tracker SCC

- Showcased modules:
- File: s_trilo.c
- State: ✔️ Functional

KONAMI 128K VGM

- Showcased modules:
- File: s_vgm.c
- State: ✔️ Functional
ASCII16 256K

WYZ

- Showcased modules:
- File: s_wyz.c
- State: ✔️ Functional
32K WYZ2

- Showcased modules:
- File: s_wyz2.c
- State: ✔️ Functional
32K 