diff --git a/.forgejo/workflows/run-test-asserts.yaml b/.forgejo/workflows/run-test-asserts.yaml
index fd96de7..54db9ca 100644
--- a/.forgejo/workflows/run-test-asserts.yaml
+++ b/.forgejo/workflows/run-test-asserts.yaml
@@ -7,7 +7,8 @@ on:
env:
VERBOSE: off
DEBUG: off
- MB_I18N: iu
+ MATRIX_ASSERT: on
+ MB_I18N: ja
MB_OPENMSX_STDOUT_IGNORE: on
MB_OPENMSX_STDERR_IGNORE: on
MB_AUTOEXEC_EMBED_USER: GITHUB_ACTOR
diff --git a/README.md b/README.md
index e755ad9..a1e2662 100644
--- a/README.md
+++ b/README.md
@@ -85,6 +85,7 @@ When using the `mb_setup_default` this add a help system which works by running:
* @help-target-run
* @help-target-module
* @help-target-assert
+ * @help-machine
* @help-all
* @help-firemake
* @clean
@@ -128,8 +129,8 @@ When you want to see whats happening do a debug run;
time MB_OPENMSX_HEADLESS=off MB_FLIGHT_SCREEN=on make @build
real 2m40.784s
- record run with video per session and merge to one video file;
- time make @flight-video-all
+ record matrix test run with video per session and merge to one video file;
+ time MATRIX_ASSERT=on make @flight-video-all
real 0m18.184s
full build parallel;
diff --git a/lib/make/mb_flight.mk b/lib/make/mb_flight.mk
index a92f69b..8f1eed5 100644
--- a/lib/make/mb_flight.mk
+++ b/lib/make/mb_flight.mk
@@ -22,7 +22,7 @@ define mb_flight_video_merge
$(MB_ᕽᕽᕽ )$(call mb_make_call,mb_make_check_arg1,mb_flight_video_merge,$(1))
$(MB_ᕽᕽᕽ )$(call mb_make_call,mb_os_echo_command,Indexing flight videos)
$(MB_ᕽᕽᕽ )find $(1) -type f -name '*.avi' -printf '%T@ %Tc %p\n' | sort -n | awk -F "$(1)/" -v s="file '" -v e="'" '{print s$$2e}' > $(1)/$(MB_FLIGHT_VIDEO_NAME).lst
-$(MB_ᕽᕽᕽ )ffmpeg -v quiet -y -f concat -i $(1)/$(MB_FLIGHT_VIDEO_NAME).lst -c copy $(1)/$(MB_FLIGHT_VIDEO_NAME).avi
+$(MB_ᕽᕽᕽ )ffmpeg -v quiet -y -f concat -safe 0 -i $(1)/$(MB_FLIGHT_VIDEO_NAME).lst -c copy $(1)/$(MB_FLIGHT_VIDEO_NAME).avi
$(MB_ᕽᕽᕽ )$(call mb_make_call,mb_os_echo_remark,Flight video completed)
endef
$(call mb_make_call,mb_doc_function,mb_flight_video_merge,"Merged all flight videos to one.","
")
diff --git a/lib/make/天房系統擴展/mb_msxrom.mk b/lib/make/天房系統擴展/mb_msxrom.mk
index 404b895..84489bf 100644
--- a/lib/make/天房系統擴展/mb_msxrom.mk
+++ b/lib/make/天房系統擴展/mb_msxrom.mk
@@ -6,6 +6,15 @@ $(call mb_make_call,mb_doc_variable_deep,MB_MSXROM_API,"Resource identifier for
MB_MSXROM_CACHE ?= $(MB_OS_CACHE)/msxbuild/msxrom
$(call mb_make_call,mb_doc_variable_deep,MB_MSXROM_CACHE,"Cache storage location.")
+MB_MSXROM_FIRE_MACHINES ?=
+$(call mb_make_call,mb_doc_variable_flow,MB_MSXROM_FIRE_MACHINES,"List of supported machines.")
+
+
+define _mb_msxrom_grow_fire_machines
+$(MB_ᕽᕽᕽ )$(call mb_make_call,mb_make_check_arg1,$(0),$(1))
+$(MB_ᕽᕽᕽ )$(eval MB_MSXROM_FIRE_MACHINES $(MB_MAKE_APPEND) $(1))
+endef
+
define _mb_msxrom_file_fetch
$(MB_ᕽᕽᕽ )$(call mb_make_call,mb_os_echo_command,$(MB_I18N_MSXROM_FILE_FETCH) $(subst $(MB_MSXROM_API)/,,$(1)))
@@ -89,18 +98,21 @@ define mb_msxrom_machine_Canon_V-20
$(MB_ᕽᕽᕽ )$(call mb_make_call,mb_msxrom_file,$(1)$(MB_@WORK)$(notdir $(1))/share/systemroms/machines,machines/canon/v-20_basic-bios1.rom)
endef
$(call mb_make_call,mb_doc_function_deep,mb_msxrom_machine_Canon_V-20,"Installs machine roms.","")
+$(call mb_make_call,_mb_msxrom_grow_fire_machines,Canon_V-20)
define mb_msxrom_machine_Mitsubishi_ML-F80
$(MB_ᕽᕽᕽ )$(call mb_make_call,mb_msxrom_file,$(1)$(MB_@WORK)$(notdir $(1))/share/systemroms/machines,machines/mitsubishi/ml-f80_basic-bios1.rom)
endef
$(call mb_make_call,mb_doc_function_deep,mb_msxrom_machine_Mitsubishi_ML-F80,"Installs machine roms.","")
+$(call mb_make_call,_mb_msxrom_grow_fire_machines,Mitsubishi_ML-F80)
define mb_msxrom_machine_Mitsubishi_ML-FX1
$(MB_ᕽᕽᕽ )$(call mb_make_call,mb_msxrom_file,$(1)$(MB_@WORK)$(notdir $(1))/share/systemroms/machines,machines/mitsubishi/ml-fx1_basic-bios1.rom)
endef
$(call mb_make_call,mb_doc_function_deep,mb_msxrom_machine_Mitsubishi_ML-FX1,"Installs machine roms.","")
+$(call mb_make_call,_mb_msxrom_grow_fire_machines,Mitsubishi_ML-FX1)
define mb_msxrom_machine_Mitsubishi_ML-G3_ES
@@ -110,12 +122,14 @@ $(MB_ᕽᕽᕽ )$(call mb_make_call,mb_msxrom_file,$(1)$(MB_@WORK)$(notd
$(MB_ᕽᕽᕽ )$(call mb_make_call,mb_msxrom_file,$(1)$(MB_@WORK)$(notdir $(1))/share/systemroms/machines,machines/mitsubishi/ml-g3_es_rs232.rom)
endef
$(call mb_make_call,mb_doc_function_deep,mb_msxrom_machine_Mitsubishi_ML-G3_ES,"Installs machine roms.","")
+$(call mb_make_call,_mb_msxrom_grow_fire_machines,Mitsubishi_ML-G3_ES)
define mb_msxrom_machine_Philips_VG_8000
$(MB_ᕽᕽᕽ )$(call mb_make_call,mb_msxrom_file,$(1)$(MB_@WORK)$(notdir $(1))/share/systemroms/machines,machines/philips/vg8000_basic-bios1.rom)
endef
$(call mb_make_call,mb_doc_function_deep,mb_msxrom_machine_Philips_VG_8000,"Installs machine roms.","")
+$(call mb_make_call,_mb_msxrom_grow_fire_machines,Philips_VG_8000)
define mb_msxrom_machine_Philips_VG_8230
@@ -124,6 +138,7 @@ $(MB_ᕽᕽᕽ )$(call mb_make_call,mb_msxrom_file,$(1)$(MB_@WORK)$(notd
$(MB_ᕽᕽᕽ )$(call mb_make_call,mb_msxrom_file,$(1)$(MB_@WORK)$(notdir $(1))/share/systemroms/machines,machines/philips/vg8230_msx2sub.rom)
endef
$(call mb_make_call,mb_doc_function_deep,mb_msxrom_machine_Philips_VG_8230,"Installs machine roms.","")
+$(call mb_make_call,_mb_msxrom_grow_fire_machines,Philips_VG_8230)
define mb_msxrom_machine_Philips_NMS_8250
@@ -132,6 +147,7 @@ $(MB_ᕽᕽᕽ )$(call mb_make_call,mb_msxrom_file,$(1)$(MB_@WORK)$(notd
$(MB_ᕽᕽᕽ )$(call mb_make_call,mb_msxrom_file,$(1)$(MB_@WORK)$(notdir $(1))/share/systemroms/machines,machines/philips/nms8250_disk.rom)
endef
$(call mb_make_call,mb_doc_function_deep,mb_msxrom_machine_Philips_NMS_8250,"Installs machine roms.","")
+$(call mb_make_call,_mb_msxrom_grow_fire_machines,Philips_NMS_8250)
define mb_msxrom_machine_Toshiba_HX-21
@@ -139,6 +155,7 @@ $(MB_ᕽᕽᕽ )$(call mb_make_call,mb_msxrom_file,$(1)$(MB_@WORK)$(notd
$(MB_ᕽᕽᕽ )$(call mb_make_call,mb_msxrom_file,$(1)$(MB_@WORK)$(notdir $(1))/share/systemroms/machines,machines/toshiba/HX21-IC3.BIN)
endef
$(call mb_make_call,mb_doc_function_deep,mb_msxrom_machine_Toshiba_HX-21,"Installs machine roms.","")
+$(call mb_make_call,_mb_msxrom_grow_fire_machines,Toshiba_HX-21)
define mb_msxrom_machine_Yamaha_AX200
@@ -147,6 +164,7 @@ $(MB_ᕽᕽᕽ )$(call mb_make_call,mb_msxrom_file,$(1)$(MB_@WORK)$(notd
$(MB_ᕽᕽᕽ )$(call mb_make_call,mb_msxrom_file,$(1)$(MB_@WORK)$(notdir $(1))/share/systemroms/machines,machines/yamaha/ax200_music.rom)
endef
$(call mb_make_call,mb_doc_function_deep,mb_msxrom_machine_Yamaha_AX200,"Installs machine roms.","")
+$(call mb_make_call,_mb_msxrom_grow_fire_machines,Yamaha_AX200)
define mb_msxrom_machine_Yamaha_YIS-503IIIR
@@ -156,6 +174,7 @@ $(MB_ᕽᕽᕽ )$(call mb_make_call,mb_msxrom_file,$(1)$(MB_@WORK)$(notd
$(MB_ᕽᕽᕽ )$(call mb_make_call,mb_msxrom_file,$(1)$(MB_@WORK)$(notdir $(1))/share/systemroms/machines,machines/yamaha/yis503iii_net_2.rom)
endef
$(call mb_make_call,mb_doc_function_deep,mb_msxrom_machine_Yamaha_YIS-503IIIR,"Installs machine roms.","")
+$(call mb_make_call,_mb_msxrom_grow_fire_machines,Yamaha_YIS-503IIIR)
define mb_msxrom_machine_Panasonic_FS-A1WSX
@@ -168,6 +187,7 @@ $(MB_ᕽᕽᕽ )$(call mb_make_call,mb_msxrom_file,$(1)$(MB_@WORK)$(notd
$(MB_ᕽᕽᕽ )$(call mb_make_call,mb_msxrom_file,$(1)$(MB_@WORK)$(notdir $(1))/share/systemroms/machines,machines/panasonic/fs-a1wsx_msx2psub.rom)
endef
$(call mb_make_call,mb_doc_function_deep,mb_msxrom_machine_Panasonic_FS-A1WSX,"Installs machine roms.","")
+$(call mb_make_call,_mb_msxrom_grow_fire_machines,Panasonic_FS-A1WSX)
define mb_msxrom_machine_Boosted_MSX2_EN
@@ -177,6 +197,7 @@ $(MB_ᕽᕽᕽ )$(call mb_make_call,mb_msxrom_extension_moonsound,$(1))
$(MB_ᕽᕽᕽ )$(call mb_make_call,mb_msxrom_extension_basickun,$(1))
endef
$(call mb_make_call,mb_doc_function_deep,mb_msxrom_machine_Boosted_MSX2_EN,"Installs machine and extensions roms.","")
+$(call mb_make_call,_mb_msxrom_grow_fire_machines,Boosted_MSX2_EN)
define mb_msxrom_machine_Boosted_MSX2+_JP
@@ -185,4 +206,6 @@ $(MB_ᕽᕽᕽ )$(call mb_make_call,mb_msxrom_extension_moonsound,$(1))
$(MB_ᕽᕽᕽ )$(call mb_make_call,mb_msxrom_extension_basickun,$(1))
endef
$(call mb_make_call,mb_doc_function_deep,mb_msxrom_machine_Boosted_MSX2+_JP,"Installs machine and extensions roms.","")
+$(call mb_make_call,_mb_msxrom_grow_fire_machines,Boosted_MSX2+_JP)
+
diff --git a/lib/make/𓃬𓍄𓋹𓀭/mb_flow_0module.mk b/lib/make/𓃬𓍄𓋹𓀭/mb_flow_0module.mk
index 6a49c0b..b775e94 100644
--- a/lib/make/𓃬𓍄𓋹𓀭/mb_flow_0module.mk
+++ b/lib/make/𓃬𓍄𓋹𓀭/mb_flow_0module.mk
@@ -8,6 +8,14 @@ endef
define mb_flow_0module_setup
$(MB_ᕽᕽᕽ )$(call mb_make_call,mb_make_check_arg1,$(0),$(1))
$(MB_ᕽᕽᕽ )$(foreach _mod,$(call mb_make_call,mb_make_wildcard_treewalker,$(1),*/0module.mk),$(eval $(call mb_make_call,__$(0),$(_mod))))
+$(MB_ᕽᕽᕽ )$(foreach _mod,$(call mb_make_call,mb_make_wildcard_treewalker,$(1),*/0module000.mk),$(eval $(call mb_make_call,__$(0),$(_mod))))
+$(MB_ᕽᕽᕽ )$(foreach _mod,$(call mb_make_call,mb_make_wildcard_treewalker,$(1),*/0module001.mk),$(eval $(call mb_make_call,__$(0),$(_mod))))
+$(MB_ᕽᕽᕽ )$(foreach _mod,$(call mb_make_call,mb_make_wildcard_treewalker,$(1),*/0module010.mk),$(eval $(call mb_make_call,__$(0),$(_mod))))
+$(MB_ᕽᕽᕽ )$(foreach _mod,$(call mb_make_call,mb_make_wildcard_treewalker,$(1),*/0module011.mk),$(eval $(call mb_make_call,__$(0),$(_mod))))
+$(MB_ᕽᕽᕽ )$(foreach _mod,$(call mb_make_call,mb_make_wildcard_treewalker,$(1),*/0module100.mk),$(eval $(call mb_make_call,__$(0),$(_mod))))
+$(MB_ᕽᕽᕽ )$(foreach _mod,$(call mb_make_call,mb_make_wildcard_treewalker,$(1),*/0module101.mk),$(eval $(call mb_make_call,__$(0),$(_mod))))
+$(MB_ᕽᕽᕽ )$(foreach _mod,$(call mb_make_call,mb_make_wildcard_treewalker,$(1),*/0module110.mk),$(eval $(call mb_make_call,__$(0),$(_mod))))
+$(MB_ᕽᕽᕽ )$(foreach _mod,$(call mb_make_call,mb_make_wildcard_treewalker,$(1),*/0module111.mk),$(eval $(call mb_make_call,__$(0),$(_mod))))
endef
$(call mb_make_call,mb_doc_function_flow,mb_flow_0module_setup,"Inject flow of recursive 0module.mk include.","")
diff --git a/lib/make/𓃬𓍄𓋹𓀭/mb_flow_assert.mk b/lib/make/𓃬𓍄𓋹𓀭/mb_flow_assert.mk
index f571133..11c89b1 100644
--- a/lib/make/𓃬𓍄𓋹𓀭/mb_flow_assert.mk
+++ b/lib/make/𓃬𓍄𓋹𓀭/mb_flow_assert.mk
@@ -33,7 +33,7 @@ endef
define __mb_flow_assert_msxpipe_grep_x
.RECIPEPREFIX := $(MB_@RECIPE)
-$(1)/@@$(5)-deps:: $(1)/@assert/$(5)/$(2)
+$(1)/@$(5)-deps:: $(1)/@assert/$(5)/$(2)
$(7)/@@init-deps:: $(1)/@build
$(1)/@assert/$(5)/$(2): $(7)/@build
diff --git a/lib/make/𓃬𓍄𓋹𓀭/mb_flow_help.mk b/lib/make/𓃬𓍄𓋹𓀭/mb_flow_help.mk
index 7e52c72..355e3cc 100644
--- a/lib/make/𓃬𓍄𓋹𓀭/mb_flow_help.mk
+++ b/lib/make/𓃬𓍄𓋹𓀭/mb_flow_help.mk
@@ -86,6 +86,12 @@ $(MB_@RECIPE)@echo -e $$(MB_DOC_FIRE_TARGET_ASSERT)
$(MB_ᕽᕽᕽ )$$(call mb_make_call,mb_doc_target_help,@help-target-assert,"Lists assert targets.")
$(MB_ᕽᕽᕽ )$$(call mb_make_call,mb_make_target_phony,@help-target-assert)
+@help-machine:
+$(MB_@RECIPE)@echo -e "Use one of the following machines to build targets;"
+$(MB_@RECIPE)@echo -e "\n "$(foreach _rom,$(MB_MSXROM_FIRE_MACHINES)," * $(_rom)\n")
+$(MB_ᕽᕽᕽ )$$(call mb_make_call,mb_doc_target_help,@help-machine,"Lists supported machines.")
+$(MB_ᕽᕽᕽ )$$(call mb_make_call,mb_make_target_phony,@help-machine)
+
@help-all:
$(MB_@RECIPE)@echo -e "Documention of all fire functions/variables/targets;\\n"
$(MB_@RECIPE)$$(call mb_make_call,mb_os_echo_good,"Variables")
diff --git a/src/assert/msxhub/0module.mk b/src/assert/msxhub/0module100.mk
similarity index 100%
rename from src/assert/msxhub/0module.mk
rename to src/assert/msxhub/0module100.mk
diff --git a/src/assert/msxrom/0module100.mk b/src/assert/msxrom/0module100.mk
new file mode 100644
index 0000000..c99d904
--- /dev/null
+++ b/src/assert/msxrom/0module100.mk
@@ -0,0 +1,18 @@
+
+ASSERT_MSXROM_SRC := $(call mb_make_call,mb_make_module_path_src,$(PATH_SRC))
+ASSERT_MSXROM_BIN := $(call mb_make_call,mb_make_module_path_bin,$(PATH_SRC),$(PATH_BIN))
+ASSERT_MSXROM_DEPS := $(call mb_make_call,mb_make_module_local_deps,$(PATH_BIN),$(EXAMPLE_DIST_HELLO_DEPS))
+
+
+# Test matrix = 13 * 2 * 4 = 104 assertion tests
+$(call mb_make_call,mb_flow_clone_deps,$(ASSERT_MSXROM_BIN),$(EXAMPLE_DIST_HELLO_BIN),$(EXAMPLE_DIST_HELLO_DEPS))
+ifeq ("$(MATRIX_ASSERT)", "on")
+ $(foreach _rom,$(MB_MSXROM_FIRE_MACHINES),$(call mb_make_call,mb_flow_assert_msxpipe_grep_test,$(ASSERT_MSXROM_BIN),$(ASSERT_MSXROM_DEPS),$(_rom)-msxdos2-chk1,hello1,M80,,$(_rom)))
+ $(foreach _rom,$(MB_MSXROM_FIRE_MACHINES),$(call mb_make_call,mb_flow_assert_msxpipe_grep_test,$(ASSERT_MSXROM_BIN),$(ASSERT_MSXROM_DEPS),$(_rom)-msxdos2-chk2,hello2,SDCC,,$(_rom)))
+ $(foreach _rom,$(MB_MSXROM_FIRE_MACHINES),$(call mb_make_call,mb_flow_assert_msxpipe_grep_test,$(ASSERT_MSXROM_BIN),$(ASSERT_MSXROM_DEPS),$(_rom)-msxdos2-chk3,hello3,MAKE,,$(_rom)))
+ $(foreach _rom,$(MB_MSXROM_FIRE_MACHINES),$(call mb_make_call,mb_flow_assert_msxpipe_grep_test,$(ASSERT_MSXROM_BIN),$(ASSERT_MSXROM_DEPS),$(_rom)-msxdos1-chk4,hello4,N80,,$(_rom)))
+ $(foreach _rom,$(MB_MSXROM_FIRE_MACHINES),$(call mb_make_call,mb_flow_assert_msxpipe_grep_test,$(ASSERT_MSXROM_BIN),$(ASSERT_MSXROM_DEPS),$(_rom)-nextor-chk1,hello1,M80,,$(_rom)))
+ $(foreach _rom,$(MB_MSXROM_FIRE_MACHINES),$(call mb_make_call,mb_flow_assert_msxpipe_grep_test,$(ASSERT_MSXROM_BIN),$(ASSERT_MSXROM_DEPS),$(_rom)-nextor-chk2,hello2,SDCC,,$(_rom)))
+ $(foreach _rom,$(MB_MSXROM_FIRE_MACHINES),$(call mb_make_call,mb_flow_assert_msxpipe_grep_test,$(ASSERT_MSXROM_BIN),$(ASSERT_MSXROM_DEPS),$(_rom)-nextor-chk3,hello3,MAKE,,$(_rom)))
+ $(foreach _rom,$(MB_MSXROM_FIRE_MACHINES),$(call mb_make_call,mb_flow_assert_msxpipe_grep_test,$(ASSERT_MSXROM_BIN),$(ASSERT_MSXROM_DEPS),$(_rom)-nextor-chk4,hello4,N80,,$(_rom)))
+endif
diff --git a/src/example/dist-hello-qa-dos1/0module.mk b/src/example/dist-hello-qa-dos1/0module010.mk
similarity index 100%
rename from src/example/dist-hello-qa-dos1/0module.mk
rename to src/example/dist-hello-qa-dos1/0module010.mk
diff --git a/src/example/dist-hello-qa-dos2/0module.mk b/src/example/dist-hello-qa-dos2/0module010.mk
similarity index 100%
rename from src/example/dist-hello-qa-dos2/0module.mk
rename to src/example/dist-hello-qa-dos2/0module010.mk
diff --git a/src/example/dist-hello-qa-msx1/0module.mk b/src/example/dist-hello-qa-msx1/0module010.mk
similarity index 100%
rename from src/example/dist-hello-qa-msx1/0module.mk
rename to src/example/dist-hello-qa-msx1/0module010.mk
diff --git a/src/example/dist-hello/0module.mk b/src/example/dist-hello/0module001.mk
similarity index 100%
rename from src/example/dist-hello/0module.mk
rename to src/example/dist-hello/0module001.mk
diff --git a/src/example/hello-macro80/0module.mk b/src/example/hello-macro80/0module000.mk
similarity index 100%
rename from src/example/hello-macro80/0module.mk
rename to src/example/hello-macro80/0module000.mk
diff --git a/src/example/hello-make4msx/0module.mk b/src/example/hello-make4msx/0module000.mk
similarity index 100%
rename from src/example/hello-make4msx/0module.mk
rename to src/example/hello-make4msx/0module000.mk
diff --git a/src/example/hello-nestor80/0module.mk b/src/example/hello-nestor80/0module000.mk
similarity index 100%
rename from src/example/hello-nestor80/0module.mk
rename to src/example/hello-nestor80/0module000.mk
diff --git a/src/example/hello-sdcc-asm/0module.mk b/src/example/hello-sdcc-asm/0module000.mk
similarity index 100%
rename from src/example/hello-sdcc-asm/0module.mk
rename to src/example/hello-sdcc-asm/0module000.mk
diff --git a/src/tools/gluedos1/0module.mk b/src/tools/gluedos1/0module000.mk
similarity index 100%
rename from src/tools/gluedos1/0module.mk
rename to src/tools/gluedos1/0module000.mk
diff --git a/src/tools/gluemsx1/0module.mk b/src/tools/gluemsx1/0module000.mk
similarity index 100%
rename from src/tools/gluemsx1/0module.mk
rename to src/tools/gluemsx1/0module000.mk