msxbuild/README.md
Willem Cazander 65b40a74cb
All checks were successful
Run test asserts / Test-Asserts (push) Successful in 5s
Renamed dos packages and new help system.
2024-07-02 03:27:14 +02:00

112 lines
3.7 KiB
Markdown

# MSXBUILD
Utils to use openMSX in build pipelines.
You can use these scripts as-is. the files in the `lib` are all you need.
But as always, feel free to extend it for your specific needs or contribute a fix or feature.
## 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
* Screenshot and/or video output of full build
* Embedded documentation of make options
## Dependencies
* make + wget + tar + dos2unix
* sdcc
* openmsx
* ffmpeg
For debian use;
apt-get install make wget tar dos2unix sdcc openmsx ffmpeg
## Usage Classic
Have access or copy the `lib` folder in your project and start writing make files.
Include the `lib/make/msxbuild.mk` and override the paths if needed;
* PATH_SDCC=/usr/bin
* PATH_OPENMSX=/usr/bin
## Usage Docker
TODO
## Example Project
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; (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
manual test msxhub on machine;
make DIST_QA_MSXHUB_MACHINE=Philips_VG_8000 bin/dist-qa-msxhub/@run
## Functions
Current set is WIP.
* mb_autoexec_write_default `<dir> [text-mode]`
* mb_autoexec_show_gui40 `<dir> [cmd]`
* mb_autoexec_show_gui40_mouse `<dir> [cmd]`
* mb_autoexec_show_gui80 `<dir> [cmd]`
* mb_autoexec_show_gui80_mouse `<dir> [cmd]`
* mb_autoexec_safe_cmd `<dir> <cmd> [text-mode]`
* mb_autoexec_safe_test `<dir> <cmd> [text-mode]`
## Errata
* Doesn't work on windows
* TODO: Missing C and mixed support
* TODO: Use TCL for BASIC/ASM/C lcov (Cobertura) code coverage
## OpenMSX backlog issues
* (FIXED:SDL is removed) Bug: screenshots sometimes segfaults when using SDL renderer
* Bug: screenshots don't work without throttle
* Bug: Imported folders in openMSX; `cd utils;cd ..;dir` breaks, use `cd utils:cd a:\;dir` as workaround
* (FIXED) Audio device init option + warning messages on computer without sound card
* MIDI device init option + warning messages on computer without sound card
* Enhancing the IDE CD-ROM support
* Command setcolor does not work on MSX1 vdp TMS9918
* Diskmanipulator export (sync) fully non-cased filename compare (duplicates)
* Diskmanipulator export (sync) don't touch/overwrite unmodified files
* Diskmanipulator reuse the device defined filename
* run instance-id or run/process-label to replace hardcoded "untitled1" path
* Remove msg or add ignore sram-fully or blank setting: SRAM file nms8250.cmos not found, assuming blank SRAM content.
* Video record append mode + optional multiple previds to glue videos as one
* (FIXED) Allow for `set renderer none` in TCL or command argument for headless mode
* SDL-NULL as window less renderer so that screenshot and/or video works headless
* DocUpdate: Add speed note because it is slow + add example "after quit {export hdd}"
* DocUpdate: Wrap all TCL commands in catch+stderr+exit1
* DocUpdate: Add 'headless' example via stdio+new + link to control omsxctl