Willem Cazander
f6cb4a1f9b
All checks were successful
Run test asserts / Test-Asserts (push) Successful in -9s
|
||
---|---|---|
.forgejo/workflows | ||
lib | ||
src | ||
.gitignore | ||
.project | ||
Makefile | ||
README.md |
MSXBUILD
Utils to use openMSX in build pipelines.
You can use these scripts as-is. But as always, feel free to extend it for your specific needs or contribute a fix or feature.
OpenMSX missing automation documentation
- Don't use DirAsDisk, it is slow
- Wrap all TCL commands in catch+stderr+exit1
- Use TCL script for auto HD import/export
- Use stdio mode for headless and/or fast boot
- Disable throttling for automation steps
- Use fail_after TCL script to run openMSX safely
- Control openMSX from inside with TCL+command
- Enable SDL just before command is addictive fast
- TODO: Use TCL for BASIC/ASM/C lcov (Cobertura) code coverage
The files in this repro try to handle these steps for you.
Features
- Allows parallel headless openMSX build pipeline
- openMSX safe exit failure guards
- Automatic disk image import + export per build step
- Downloads and caches resources from msxhub.com
- Auto magic openMSX extensions and machine rom's setup
- SDCC msx build steps
Dependencies
- make + wget + tar + dos2unix
- sdcc
- openmsx
- ffmpeg (optional, see
srv/assert-all/0module.mk
howto merge videos)
For debian use;
apt-get install make wget tar dos2unix sdcc openmsx ffmpeg
Usage
Include the lib/make/msxbuild.mk
file from your Makefile.
And override the paths if needed;
- PATH_SDCC=/usr/bin
- PATH_OPENMSX=/usr/bin
Then build result based compile rules see an example in; src/ahello-m80/0module.mk
When you want to see whats happening do a debug run;
normal run;
time make assert-all
real 0m3.223s
debug run at 11 Mhz;
time MB_OPENMSX_HEADLESS=off MB_OPENMSX_THROTTLE=on make assert-all
real 1m4.856s
debug run real msx speed;
time MB_OPENMSX_HEADLESS=off MB_OPENMSX_THROTTLE=on MB_OPENMSX_SPEED=100 make assert-all
real 2m37.379s
debug run with screenshot on exit; (Segfaults if using (old) SDL, or/and black screens without throttle)
time MB_OPENMSX_HEADLESS=off MB_OPENMSX_THROTTLE=on MB_FLIGHT_SCREEN=on make -s assert-all
real 1m14.043s
debug run with video recorder and merge to one video file;
time MB_OPENMSX_HEADLESS=off MB_FLIGHT_VIDEO=on make -s assert-all
real 0m7.136s
build parallel;
time make -s -j4 assert-all
real 0m1.817s
Functions
Current set is WIP.
- mb_autoexec_append_cmd
- mb_autoexec_append_echo
- mb_autoexec_append_rem
- mb_autoexec_append_show_gui
- mb_autoexec_append_stop_fail
- mb_autoexec_append_exit
- mb_autoexec_append_joyporta_mouse
- mb_autoexec_append_save_screenshot
- mb_autoexec_append_save_video
- mb_autoexec_append_safe_test
- mb_autoexec_append_safe_cmd
- mb_autoexec_write_default
- mb_autoexec_show_gui40
- mb_autoexec_show_gui40_mouse
- mb_autoexec_show_gui80
- mb_autoexec_show_gui80_mouse
- mb_autoexec_safe_cmd
- mb_autoexec_safe_test
- mb_msxhub_file
- mb_msxhub_get_dos1_boot
- mb_msxhub_get_dos2_boot
- mb_msxhub_get_dos2_utils
- mb_msxhub_get_nextor_boot
- mb_msxhub_get_nextor_utils
- mb_msxhub_get_macro80
- mb_msxhub_get_z80asmuk
- mb_msxhub_get_wbass2
- mb_msxhub_get_konpass
- mb_msxhub_get_pmarc
- mb_msxhub_get_lhpack
- mb_msxhub_get_lhext
- mb_msxhub_get_gunzip
- mb_msxhub_get_tunzip
- mb_msxhub_get_popcom
- mb_msxhub_get_make
- mb_msxhub_get_adir
- mb_msxhub_get_turbo
- mb_msxhub_get_baskom
- mb_msxhub_get_binldr
- mb_msxhub_get_dmphex
- mb_msxhub_get_zd
- mb_msxhub_get_msxdos2t
- mb_msxhub_get_gfxage
- mb_msxrom_file
- mb_msxrom_setup
- mb_msxrom_extension_ide
- mb_msxrom_extension_ide_nextor
- mb_msxrom_extension_scsi_novaxis
- mb_msxrom_extension_msxdos22
- mb_msxrom_extension_rs232
- mb_msxrom_extension_fmpac
- mb_msxrom_extension_fmpac_en
- mb_msxrom_extension_moonsound
- mb_msxrom_extension_basickun
- mb_msxrom_machine_Canon_V-20
- mb_msxrom_machine_Mitsubishi_ML-F80
- mb_msxrom_machine_Mitsubishi_ML-FX1
- mb_msxrom_machine_Mitsubishi_ML-G3_ES
- mb_msxrom_machine_Philips_VG_8000
- mb_msxrom_machine_Philips_VG_8230
- mb_msxrom_machine_Philips_NMS_8250
- mb_msxrom_machine_Toshiba_HX-21.xml
- mb_msxrom_machine_Yamaha_AX200
- mb_msxrom_machine_Yamaha_YIS-503IIIR
- mb_msxrom_machine_Panasonic_FS-A1WSX
- mb_msxrom_machine_Boosted_MSX2_EN
- mb_msxrom_machine_Boosted_MSX2+_JP
- mb_openmsx_setup
- mb_openmsx_dosctl
- mb_sdcc_compile_asm
- mb_sdcc_link_asm_lib
- mb_sdcc_link_asm
- mb_sdcc_link_asm_0000 = calls mb_sdcc_link_asm,$(1),$(2),0x0000
- mb_sdcc_link_asm_0100
- mb_sdcc_link_asm_1000
- mb_sdcc_link_asm_4000
- mb_sdcc_link_asm_8000
- mb_sdcc_link_asm_C000
- mb_sdcc_link_asm_dos = calls mb_sdcc_link_asm_0100
- mb_sdcc_hex2bin
- mb_clean
- mb_mkdir
- mb_delete
- mb_copy
- mb_unix2dos
- mb_dos2unix
- mb_create_dist
- mb_create_flight_video
Errata
- Imported folders in openMSX;
cd utils;cd ..;dir
breaks, usecd utils:cd a:\;dir
as workaround - Saving screenshots sometimes lets openMSX segfaults if using SDL
- Doesn't work on windows
- Missing C and mixed support
- If no SDL or SDLGL-PP than screenshots or videos don't work