Volkov: адаптировать тайминги MAME 0.287 и таймаут на macOS
This commit is contained in:
@@ -119,11 +119,11 @@ SPRCMD.EXE 43080
|
||||
```sh
|
||||
make hdd-p19-overwrite ALLOCS=3000
|
||||
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
|
||||
|
||||
make hdd-p19-policy ALLOCS=3000
|
||||
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
|
||||
```
|
||||
|
||||
@@ -196,7 +196,7 @@ tests/run_mame_hdd.sh build/hdd/p5_panel_edges.chd \
|
||||
|
||||
make hdd-p5-copy-faults ALLOCS=3000
|
||||
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
|
||||
|
||||
make hdd-p5-viewer ALLOCS=3000
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
-- P19: запускает target-пробу overwrite и фиксирует итоговую таблицу.
|
||||
-- Запас на I/O MAME 0.287: ранний выход обрывал пробу до ALL PASS.
|
||||
|
||||
local KB = ":kbd:ms_naturl:"
|
||||
local HOLD = 0.06
|
||||
@@ -40,10 +41,10 @@ end
|
||||
|
||||
type_text(8.0, "d:\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)
|
||||
local snap_times = {15.0, 20.0}
|
||||
local snap_times = {80.0, 95.0}
|
||||
local snaps_done = {}
|
||||
local start_time = nil
|
||||
local ports = nil
|
||||
@@ -83,5 +84,5 @@ emu.register_periodic(function()
|
||||
manager.machine.video:snapshot()
|
||||
end
|
||||
end
|
||||
if elapsed >= 22.0 then manager.machine:exit() end
|
||||
if elapsed >= 100.0 then manager.machine:exit() end
|
||||
end)
|
||||
|
||||
@@ -85,8 +85,16 @@ key(90.0, "P1.6", 0x20) -- inspect target.
|
||||
key(95.0, "P2.3", 0x80) -- F10.
|
||||
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)
|
||||
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 start_time = nil
|
||||
local ports = nil
|
||||
@@ -127,5 +135,5 @@ emu.register_periodic(function()
|
||||
print("[p19-policy] snapshot t=" .. elapsed)
|
||||
end
|
||||
end
|
||||
if elapsed >= 101.0 then manager.machine:exit() end
|
||||
if elapsed >= 121.0 then manager.machine:exit() end
|
||||
end)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
-- Запас на завершение target-пробы в MAME 0.287.
|
||||
-- P5: отдельная детерминированная матрица состояний copy-job на HDD D:.
|
||||
|
||||
local KB = ":kbd:ms_naturl:"
|
||||
@@ -49,11 +50,11 @@ end
|
||||
|
||||
type_text(8.0, "d:\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)
|
||||
|
||||
local snap_times = {14.0, 18.0}
|
||||
local snap_times = {80.0, 95.0}
|
||||
local snaps_done = {}
|
||||
local start_time = nil
|
||||
local ports = nil
|
||||
@@ -100,7 +101,7 @@ emu.register_periodic(function()
|
||||
end
|
||||
end
|
||||
|
||||
if elapsed >= 20.0 then
|
||||
if elapsed >= 100.0 then
|
||||
print("[p5-copy-faults] exit t=" .. elapsed)
|
||||
manager.machine:exit()
|
||||
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-цикла.
|
||||
|
||||
local KB = ":kbd:ms_naturl:"
|
||||
@@ -136,7 +143,7 @@ end)
|
||||
emu.register_periodic(function()
|
||||
if not start_time then return 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
|
||||
local event = events[index]
|
||||
|
||||
@@ -22,7 +22,20 @@ if pgrep -fl 'mame[^ ]* sprinter( |$)' | grep . >/dev/null 2>&1; then
|
||||
fi
|
||||
|
||||
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 \
|
||||
-beta:wd179x:0 35hd -beta:wd179x:1 35hd \
|
||||
-flop1 ./IMG/mc.img -flop2 ./IMG/dss171u.img \
|
||||
|
||||
Reference in New Issue
Block a user