for (i = 0; i < lines; i++)
expect_range(ok, ram16[i*2+1], 19, 21);
expect(ok, ram16[lines*2+0], 0);
- expect_range(ok, ram16[lines*2+1], 20, 21);
+ expect_range(ok, ram16[lines*2+1], 19, 21);
return ok;
}
static int t_tim_ym_timer_ab_sync(void)
{
- u16 v = test_ym_ab_sync();
+ u16 v1, v2, v3, v4, v5, ln0, ln1, ln2;
int ok = 1;
- expect(ok, v, 3);
+
+ vdp_wait_for_line_0();
+ v1 = test_ym_ab_sync();
+
+ ln0 = get_line();
+ burn10(3420*15/7/10); // ~15 scanlines
+ write8(0xa04001, 0x3f); // clear, no reload
+ burn10(12); // wait for busy to clear
+ v2 = read8(0xa04000);
+ v3 = test_ym_ab_sync2();
+
+ ln1 = get_line();
+ burn10(3420*15/7/10); // ~15 scanlines
+ v4 = test_ym_ab_sync2();
+
+ ln2 = get_line();
+ burn10(3420*30/7/10); // ~35 scanlines
+ v5 = read8(0xa04000);
+
+ expect(ok, v1, 3);
+ expect(ok, v2, 0);
+ expect(ok, v3, 3);
+ expect(ok, v4, 2);
+ expect(ok, v5, 0);
+ expect_range(ok, ln1-ln0, 18, 19);
+ expect_range(ok, ln2-ln1, 32, 34); // almost always 33
return ok;
}