Difference between revisions of "Samples"
From MSX Game Library
(→Sprite Tool) |
|||
(50 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | Here is a list of sample programs | + | 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 == | == Core == | ||
Line 14: | Line 17: | ||
{{SAMPLE_BOX | {{SAMPLE_BOX | ||
|name=Hello | |name=Hello | ||
− | |desc=Program showing the minimal code needed to display a text. | + | |desc=Program showing the minimal code needed to display a "Hello World!" text. |
|module1= | |module1= | ||
|module2= | |module2= | ||
Line 24: | Line 27: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
|img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_hello.jpg | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_hello.jpg | ||
}} | }} | ||
Line 41: | Line 44: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
|img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_bios.jpg | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_bios.jpg | ||
}} | }} | ||
Line 48: | Line 51: | ||
{{SAMPLE_BOX | {{SAMPLE_BOX | ||
|name=Clock | |name=Clock | ||
− | |desc=Program showing the use of the | + | |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 | |module1=clock | ||
|module2= | |module2= | ||
Line 58: | Line 61: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
|img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_clock.jpg | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_clock.jpg | ||
}} | }} | ||
Line 75: | Line 78: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
|img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_psg.jpg | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_psg.jpg | ||
}} | }} | ||
Line 92: | Line 95: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
|img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_sys.jpg | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_sys.jpg | ||
}} | }} | ||
Line 101: | Line 104: | ||
{{SAMPLE_BOX | {{SAMPLE_BOX | ||
|name=Draw | |name=Draw | ||
− | |desc=Program showing the use of Draw module with the | + | |desc=Program showing the use of Draw module with the MSX2 bitmap screen modes. |
|module1=vdp | |module1=vdp | ||
|module2=draw | |module2=draw | ||
Line 111: | Line 114: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
|img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_draw.jpg | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_draw.jpg | ||
}} | }} | ||
Line 128: | Line 131: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
− | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/ | + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_gm3_2.png |
}} | }} | ||
Line 145: | Line 148: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
|img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_print.jpg | |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 | ||
}} | }} | ||
Line 162: | Line 182: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
|img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_sm1.jpg | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_sm1.jpg | ||
}} | }} | ||
Line 169: | Line 189: | ||
{{SAMPLE_BOX | {{SAMPLE_BOX | ||
|name=Sprite | |name=Sprite | ||
− | |desc=Program | + | |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 | |module1=vdp | ||
|module2= | |module2= | ||
Line 179: | Line 199: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
|img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_sprite.jpg | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_sprite.jpg | ||
}} | }} | ||
Line 187: | Line 207: | ||
|name=Sprite FX | |name=Sprite FX | ||
|desc=Program showing the use of Sprite Tool module to modify sprite data (support Cropping, Flipping, Asking and Rotating). | |desc=Program showing the use of Sprite Tool module to modify sprite data (support Cropping, Flipping, Asking and Rotating). | ||
− | |module1= | + | |module1=sprite_fx |
|module2= | |module2= | ||
|module3= | |module3= | ||
Line 196: | Line 216: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
|img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_sprttool.gif | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_sprttool.gif | ||
}} | }} | ||
Line 213: | Line 233: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
|img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_swsprt.png | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_swsprt.png | ||
}} | }} | ||
Line 220: | Line 240: | ||
{{SAMPLE_BOX | {{SAMPLE_BOX | ||
|name=Software Tile | |name=Software Tile | ||
− | |desc=Program showing the use of software tile mode for | + | |desc=Program showing the use of software tile mode for MSX2 bitmap modes (only Screen 5 & 8 has been tested). |
|module1=vdp | |module1=vdp | ||
|module2= | |module2= | ||
Line 230: | Line 250: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
|img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_swtile.png | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_swtile.png | ||
}} | }} | ||
Line 237: | Line 257: | ||
{{SAMPLE_BOX | {{SAMPLE_BOX | ||
|name=Text | |name=Text | ||
− | |desc=Program showing the use of print module with text modes (all | + | |desc=Program showing the use of print module with text modes (all MSX1 and MSX2 text/tiled mode). |
|module1=print | |module1=print | ||
|module2= | |module2= | ||
Line 247: | Line 267: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
|img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_text.jpg | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_text.jpg | ||
}} | }} | ||
Line 264: | Line 284: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
|img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_vdpcmd.jpg | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_vdpcmd.jpg | ||
}} | }} | ||
Line 283: | Line 303: | ||
|target=DOS0 | |target=DOS0 | ||
|ext= | |ext= | ||
− | |state= | + | |state=PARTIAL |
|img= | |img= | ||
}} | }} | ||
Line 300: | Line 320: | ||
|target=DOS1 | |target=DOS1 | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
− | |img= | + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/refs/heads/main/engine/doc/img/project/s_dos.png |
}} | }} | ||
Line 317: | Line 337: | ||
|target=DOS2 | |target=DOS2 | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
− | |img= | + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/refs/heads/main/engine/doc/img/project/s_dos2.png |
}} | }} | ||
Line 334: | Line 354: | ||
|target=ROM_ASCII8_128K | |target=ROM_ASCII8_128K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
|img= | |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 | ||
}} | }} | ||
Line 353: | Line 390: | ||
|target=BIN_USR | |target=BIN_USR | ||
|ext={{NINJATAP}} | |ext={{NINJATAP}} | ||
− | |state= | + | |state=FUNCTIONAL |
− | |img= | + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/refs/heads/main/engine/doc/img/project/s_usr.png |
}} | }} | ||
Line 361: | Line 398: | ||
|name=Compressor | |name=Compressor | ||
|desc=Program showing the use of several compression algorithms (RLEp, Bitbuster 1 & 2, ZX0 and Pletter). | |desc=Program showing the use of several compression algorithms (RLEp, Bitbuster 1 & 2, ZX0 and Pletter). | ||
− | |module1=compress | + | |module1=compress/bitbuster |
− | |module2=compress/ | + | |module2=compress/bitbuster2 |
− | |module3=compress/ | + | |module3=compress/lz48 |
− | |module4=compress/ | + | |module4=compress/pletter |
− | |module5=compress/ | + | |module5=compress/zx0 |
|file=s_zip.c | |file=s_zip.c | ||
|machine=MSX2 | |machine=MSX2 | ||
|target=DOS1 | |target=DOS1 | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
− | |img= | + | |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 | ||
}} | }} | ||
Line 377: | Line 448: | ||
{{SAMPLE_BOX | {{SAMPLE_BOX | ||
|name=Game | |name=Game | ||
− | |desc=Program showing the use of Game and Game pawn modules. The Game module offers state management while Game pawn allows to manage characters (display, animation, movement, collision, etc.) | + | |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 | + | |module1=game/state |
− | |module2= | + | |module2=game/pawn |
|module3= | |module3= | ||
|module4= | |module4= | ||
Line 387: | Line 458: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
|img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_game.png | |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 | ||
}} | }} | ||
Line 404: | Line 492: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
|img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_math.jpg | |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 | {{SAMPLE_BOX | ||
− | |name= | + | |name=QR Code |
− | |desc=Program showing the use of | + | |desc=Program showing the use of QR Code Tiny module (version optimized for fixed size). |
− | |module1= | + | |module1=tool/qrcode_tiny |
− | |module2= | + | |module2= |
|module3= | |module3= | ||
|module4= | |module4= | ||
|module5= | |module5= | ||
− | |file= | + | |file=s_qrtiny.c |
|machine=MSX2 | |machine=MSX2 | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
− | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/ | + | |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 | ||
}} | }} | ||
Line 440: | Line 596: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
|img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_joystick.jpg | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_joystick.jpg | ||
}} | }} | ||
Line 457: | Line 613: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
|img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_keyboard.jpg | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_keyboard.jpg | ||
}} | }} | ||
Line 474: | Line 630: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
− | |img= | + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/refs/heads/main/engine/doc/img/project/s_mouse.png |
}} | }} | ||
Line 491: | Line 647: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext={{NINJATAP}} | |ext={{NINJATAP}} | ||
− | |state= | + | |state=FUNCTIONAL |
|img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_ntap.png | |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= | ||
}} | }} | ||
Line 507: | Line 697: | ||
|machine=MSX1 | |machine=MSX1 | ||
|target=ROM_16K | |target=ROM_16K | ||
− | |ext= | + | |ext=OBSONET |
− | |state= | + | |state=WIP |
|img= | |img= | ||
}} | }} | ||
Line 525: | Line 715: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext={{PAC}} | |ext={{PAC}} | ||
− | |state= | + | |state=FUNCTIONAL |
|img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_pac.png | |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 | ||
}} | }} | ||
Line 542: | Line 749: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext={{V9990}} | |ext={{V9990}} | ||
− | |state= | + | |state=FUNCTIONAL |
|img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_v9990.png | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_v9990.png | ||
}} | }} | ||
Line 551: | Line 758: | ||
{{SAMPLE_BOX | {{SAMPLE_BOX | ||
|name=Arkos | |name=Arkos | ||
− | |desc=Program | + | |desc=Program to demonstrate the use of the different Arkos Tracker (AT2 and AT3) music replayers. |
|module1=arkos/akg_player | |module1=arkos/akg_player | ||
|module2=arkos/akm_player | |module2=arkos/akm_player | ||
Line 561: | Line 768: | ||
|target=ROM_ASCII8_128K | |target=ROM_ASCII8_128K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
|img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_arkos.png | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_arkos.png | ||
}} | }} | ||
Line 568: | Line 775: | ||
{{SAMPLE_BOX | {{SAMPLE_BOX | ||
|name=ayFX | |name=ayFX | ||
− | |desc=Program showing the use of ayFX | + | |desc=Program showing the use of ayFX sound effect replayer (both using a bank or a single sound file). |
|module1=ayfx/ayfx_player | |module1=ayfx/ayfx_player | ||
|module2= | |module2= | ||
Line 578: | Line 785: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
|img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_ayfx.jpg | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_ayfx.jpg | ||
}} | }} | ||
Line 586: | Line 793: | ||
|name=Light VGM | |name=Light VGM | ||
|desc=Program showing the use of light-VGM's replayer (PSG). | |desc=Program showing the use of light-VGM's replayer (PSG). | ||
− | |module1= | + | |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= | |module2= | ||
|module3= | |module3= | ||
|module4= | |module4= | ||
|module5= | |module5= | ||
− | |file= | + | |file=s_ndp.c |
|machine=MSX1 | |machine=MSX1 | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
− | |img= | + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/refs/heads/main/engine/doc/img/project/s_ndp.png |
}} | }} | ||
Line 612: | Line 836: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
|img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_pcm.jpg | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_pcm.jpg | ||
}} | }} | ||
Line 629: | Line 853: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
− | |img= | + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/refs/heads/main/engine/doc/img/project/s_pcmplay.png |
}} | }} | ||
Line 646: | Line 870: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
|img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_pt3.jpg | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_pt3.jpg | ||
}} | }} | ||
Line 663: | Line 887: | ||
|target=ROM_KONAMI_SCC_128K | |target=ROM_KONAMI_SCC_128K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
− | |img= | + | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/refs/heads/main/engine/doc/img/project/s_trilo.png |
}} | }} | ||
Line 680: | Line 904: | ||
|target=ROM_ASCII16_256K | |target=ROM_ASCII16_256K | ||
|ext={{SCC}} {{MSXMUSIC}} {{MSXAUDIO}} | |ext={{SCC}} {{MSXMUSIC}} {{MSXAUDIO}} | ||
− | |state= | + | |state=FUNCTIONAL |
|img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_vgm.jpg | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_vgm.jpg | ||
}} | }} | ||
Line 697: | Line 921: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
|img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_wyz.png | |img=raw.githubusercontent.com/aoineko-fr/MSXgl/main/engine/doc/img/sample_wyz.png | ||
}} | }} | ||
Line 714: | Line 938: | ||
|target=ROM_32K | |target=ROM_32K | ||
|ext= | |ext= | ||
− | |state= | + | |state=FUNCTIONAL |
− | |img= | + | |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


BIOS



Clock



PSG



System
Render
Draw



Graph Mode 3






Scrolling



Sprite Mode 1



Sprite Mode 2

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


Sprite FX

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


Software Sprite

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


Software Tile

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


Text




VDP Command

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


Target format
Boot Disk



MSX-DOS




MSX-DOS 2



Mapped ROM

- File: s_mapper.c
- State: ✔️ Functional


NEO mapper

- File: s_neomap.c
- State: ✔️ Functional


Utilities
BASIC 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


Driver

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


Encryption



Game



Localize



Math



Menu



QR Code

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


QR Code Tiny

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


Save

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


WaveGame

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


Devices
Joystick

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


Keyboard

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


Mouse



Ninja Tap

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



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


ObsoNET

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


PAC

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



Paddle

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


V9990




Audio Format
Arkos

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


ayFX

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


lVGM

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


NDP

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


PCM-Encoder

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


PCM Play

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


PT3

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


Trilo Tracker SCC

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



VGM

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





WYZ

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


WYZ2

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

