Volkov: адаптировать тайминги MAME 0.287 и таймаут на macOS
This commit is contained in:
@@ -119,11 +119,11 @@ SPRCMD.EXE 43080
|
|||||||
```sh
|
```sh
|
||||||
make hdd-p19-overwrite ALLOCS=3000
|
make hdd-p19-overwrite ALLOCS=3000
|
||||||
tests/run_mame_hdd.sh build/hdd/p19_overwrite.chd \
|
tests/run_mame_hdd.sh build/hdd/p19_overwrite.chd \
|
||||||
tests/mame_p19_overwrite.lua artifacts/mame-p19/core-local 26
|
tests/mame_p19_overwrite.lua artifacts/mame-p19/core-local 180
|
||||||
tests/check_p19_overwrite_hdd.sh build/hdd/p19_overwrite.chd
|
tests/check_p19_overwrite_hdd.sh build/hdd/p19_overwrite.chd
|
||||||
|
|
||||||
make hdd-p19-policy ALLOCS=3000
|
make hdd-p19-policy ALLOCS=3000
|
||||||
tests/run_mame_hdd.sh build/hdd/p19_policy.chd \
|
tests/run_mame_hdd.sh build/hdd/p19_policy.chd \
|
||||||
tests/mame_p19_policy.lua artifacts/mame-p19/policy-local 106
|
tests/mame_p19_policy.lua artifacts/mame-p19/policy-local 200
|
||||||
tests/check_p19_policy_hdd.sh build/hdd/p19_policy.chd
|
tests/check_p19_policy_hdd.sh build/hdd/p19_policy.chd
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -196,7 +196,7 @@ tests/run_mame_hdd.sh build/hdd/p5_panel_edges.chd \
|
|||||||
|
|
||||||
make hdd-p5-copy-faults ALLOCS=3000
|
make hdd-p5-copy-faults ALLOCS=3000
|
||||||
tests/run_mame_hdd.sh build/hdd/p5_copy_faults.chd \
|
tests/run_mame_hdd.sh build/hdd/p5_copy_faults.chd \
|
||||||
tests/mame_p5_copy_faults.lua artifacts/mame-p5/faults-local 35
|
tests/mame_p5_copy_faults.lua artifacts/mame-p5/faults-local 180
|
||||||
tests/check_p5_copy_faults_hdd.sh build/hdd/p5_copy_faults.chd
|
tests/check_p5_copy_faults_hdd.sh build/hdd/p5_copy_faults.chd
|
||||||
|
|
||||||
make hdd-p5-viewer ALLOCS=3000
|
make hdd-p5-viewer ALLOCS=3000
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
-- P19: запускает target-пробу overwrite и фиксирует итоговую таблицу.
|
-- P19: запускает target-пробу overwrite и фиксирует итоговую таблицу.
|
||||||
|
-- Запас на I/O MAME 0.287: ранний выход обрывал пробу до ALL PASS.
|
||||||
|
|
||||||
local KB = ":kbd:ms_naturl:"
|
local KB = ":kbd:ms_naturl:"
|
||||||
local HOLD = 0.06
|
local HOLD = 0.06
|
||||||
@@ -40,10 +41,10 @@ end
|
|||||||
|
|
||||||
type_text(8.0, "d:\n")
|
type_text(8.0, "d:\n")
|
||||||
type_text(10.0, "DELRT.EXE\n")
|
type_text(10.0, "DELRT.EXE\n")
|
||||||
key(18.0, "P2.1", 0x10)
|
key(90.0, "P2.1", 0x10)
|
||||||
|
|
||||||
table.sort(events, function(a, b) return a[1] < b[1] end)
|
table.sort(events, function(a, b) return a[1] < b[1] end)
|
||||||
local snap_times = {15.0, 20.0}
|
local snap_times = {80.0, 95.0}
|
||||||
local snaps_done = {}
|
local snaps_done = {}
|
||||||
local start_time = nil
|
local start_time = nil
|
||||||
local ports = nil
|
local ports = nil
|
||||||
@@ -83,5 +84,5 @@ emu.register_periodic(function()
|
|||||||
manager.machine.video:snapshot()
|
manager.machine.video:snapshot()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if elapsed >= 22.0 then manager.machine:exit() end
|
if elapsed >= 100.0 then manager.machine:exit() end
|
||||||
end)
|
end)
|
||||||
|
|||||||
@@ -85,8 +85,16 @@ key(90.0, "P1.6", 0x20) -- inspect target.
|
|||||||
key(95.0, "P2.3", 0x80) -- F10.
|
key(95.0, "P2.3", 0x80) -- F10.
|
||||||
key(97.0, "P2.1", 0x10)
|
key(97.0, "P2.1", 0x10)
|
||||||
|
|
||||||
|
-- Запас на I/O MAME 0.287: ответ readonly должен идти после двух копий.
|
||||||
|
for _, event in ipairs(events) do
|
||||||
|
if event[1] >= 40.0 then event[1] = event[1] + 20.0 end
|
||||||
|
end
|
||||||
|
|
||||||
table.sort(events, function(left, right) return left[1] < right[1] end)
|
table.sort(events, function(left, right) return left[1] < right[1] end)
|
||||||
local snap_times = {31.5, 38.0, 44.0, 54.0, 58.0, 70.0, 76.0, 85.0, 89.0, 92.0, 99.0}
|
local snap_times = {31.5, 38.0, 44.0, 54.0, 58.0, 70.0, 76.0, 85.0, 89.0, 92.0, 99.0}
|
||||||
|
for i, t in ipairs(snap_times) do
|
||||||
|
if t >= 40.0 then snap_times[i] = t + 20.0 end
|
||||||
|
end
|
||||||
local snaps_done = {}
|
local snaps_done = {}
|
||||||
local start_time = nil
|
local start_time = nil
|
||||||
local ports = nil
|
local ports = nil
|
||||||
@@ -127,5 +135,5 @@ emu.register_periodic(function()
|
|||||||
print("[p19-policy] snapshot t=" .. elapsed)
|
print("[p19-policy] snapshot t=" .. elapsed)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if elapsed >= 101.0 then manager.machine:exit() end
|
if elapsed >= 121.0 then manager.machine:exit() end
|
||||||
end)
|
end)
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
-- Запас на завершение target-пробы в MAME 0.287.
|
||||||
-- P5: отдельная детерминированная матрица состояний copy-job на HDD D:.
|
-- P5: отдельная детерминированная матрица состояний copy-job на HDD D:.
|
||||||
|
|
||||||
local KB = ":kbd:ms_naturl:"
|
local KB = ":kbd:ms_naturl:"
|
||||||
@@ -49,11 +50,11 @@ end
|
|||||||
|
|
||||||
type_text(8.0, "d:\n")
|
type_text(8.0, "d:\n")
|
||||||
type_text(9.0, "CPERR.EXE\n")
|
type_text(9.0, "CPERR.EXE\n")
|
||||||
key(16.0, "P2.1", 0x10) -- Enter после итоговой таблицы.
|
key(90.0, "P2.1", 0x10) -- Enter после итоговой таблицы.
|
||||||
|
|
||||||
table.sort(events, function(a, b) return a[1] < b[1] end)
|
table.sort(events, function(a, b) return a[1] < b[1] end)
|
||||||
|
|
||||||
local snap_times = {14.0, 18.0}
|
local snap_times = {80.0, 95.0}
|
||||||
local snaps_done = {}
|
local snaps_done = {}
|
||||||
local start_time = nil
|
local start_time = nil
|
||||||
local ports = nil
|
local ports = nil
|
||||||
@@ -100,7 +101,7 @@ emu.register_periodic(function()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if elapsed >= 20.0 then
|
if elapsed >= 100.0 then
|
||||||
print("[p5-copy-faults] exit t=" .. elapsed)
|
print("[p5-copy-faults] exit t=" .. elapsed)
|
||||||
manager.machine:exit()
|
manager.machine:exit()
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,3 +1,10 @@
|
|||||||
|
-- На медленном DSS можно растянуть расписание, сохранив всю матрицу.
|
||||||
|
local time_scale = tonumber(os.getenv("SPRCMD_TEST_TIME_SCALE") or "1")
|
||||||
|
assert(time_scale and time_scale >= 1, "SPRCMD_TEST_TIME_SCALE должен быть >= 1")
|
||||||
|
if os.getenv("SPRCMD_TEST_UNTHROTTLED") == "1" then
|
||||||
|
manager.machine.video.throttled = false
|
||||||
|
end
|
||||||
|
|
||||||
-- P5 на HDD D: 20 copy, 100 refresh и три полных cleanup-цикла.
|
-- P5 на HDD D: 20 copy, 100 refresh и три полных cleanup-цикла.
|
||||||
|
|
||||||
local KB = ":kbd:ms_naturl:"
|
local KB = ":kbd:ms_naturl:"
|
||||||
@@ -136,7 +143,7 @@ end)
|
|||||||
emu.register_periodic(function()
|
emu.register_periodic(function()
|
||||||
if not start_time then return end
|
if not start_time then return end
|
||||||
if not ports then ports = manager.machine.ioport.ports end
|
if not ports then ports = manager.machine.ioport.ports end
|
||||||
local elapsed = now() - start_time
|
local elapsed = (now() - start_time) / time_scale
|
||||||
|
|
||||||
while index <= #events and elapsed >= events[index][1] do
|
while index <= #events and elapsed >= events[index][1] do
|
||||||
local event = events[index]
|
local event = events[index]
|
||||||
|
|||||||
@@ -22,7 +22,20 @@ if pgrep -fl 'mame[^ ]* sprinter( |$)' | grep . >/dev/null 2>&1; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
cd "$MAME_DIR"
|
cd "$MAME_DIR"
|
||||||
exec timeout "$TIMEOUT" ./mame.arm sprinter \
|
# В macOS GNU timeout может отсутствовать; Python обеспечивает тот же лимит.
|
||||||
|
if command -v timeout >/dev/null 2>&1; then
|
||||||
|
set -- timeout "$TIMEOUT"
|
||||||
|
else
|
||||||
|
set -- python3 -c '
|
||||||
|
import subprocess, sys
|
||||||
|
try:
|
||||||
|
sys.exit(subprocess.run(sys.argv[2:], timeout=float(sys.argv[1])).returncode)
|
||||||
|
except subprocess.TimeoutExpired:
|
||||||
|
print("run_mame_hdd.sh: истёк лимит времени", file=sys.stderr)
|
||||||
|
sys.exit(124)
|
||||||
|
' "$TIMEOUT"
|
||||||
|
fi
|
||||||
|
exec "$@" ./mame.arm sprinter \
|
||||||
-skip_gameinfo -video opengl -window -nofilter \
|
-skip_gameinfo -video opengl -window -nofilter \
|
||||||
-beta:wd179x:0 35hd -beta:wd179x:1 35hd \
|
-beta:wd179x:0 35hd -beta:wd179x:1 35hd \
|
||||||
-flop1 ./IMG/mc.img -flop2 ./IMG/dss171u.img \
|
-flop1 ./IMG/mc.img -flop2 ./IMG/dss171u.img \
|
||||||
|
|||||||
Reference in New Issue
Block a user