|
41 | 41 | #include "speaker.h"
|
42 | 42 |
|
43 | 43 |
|
44 |
| -#define LOG_IO (1U << 1) |
45 |
| -#define LOG_MEM (1U << 2) |
46 |
| -#define LOG_WARN (1U << 3) |
| 44 | +#define LOG_IO (1U << 1) |
| 45 | +#define LOG_MEM (1U << 2) |
| 46 | +#define LOG_COPPER (1U << 3) |
47 | 47 |
|
48 |
| -//#define VERBOSE ( LOG_GENERAL | LOG_IO | /*LOG_MEM |*/ LOG_WARN ) |
| 48 | +//#define VERBOSE ( LOG_GENERAL | LOG_IO | /*LOG_MEM |*/ LOG_COPPER ) |
49 | 49 | #include "logmacro.h"
|
50 | 50 |
|
51 |
| -#define LOGIO(...) LOGMASKED(LOG_IO, __VA_ARGS__) |
52 |
| -#define LOGMEM(...) LOGMASKED(LOG_MEM, __VA_ARGS__) |
53 |
| -#define LOGWARN(...) LOGMASKED(LOG_WARN, __VA_ARGS__) |
54 |
| - |
| 51 | +#define LOGIO(...) LOGMASKED(LOG_IO, __VA_ARGS__) |
| 52 | +#define LOGMEM(...) LOGMASKED(LOG_MEM, __VA_ARGS__) |
| 53 | +#define LOGCOPPER(...) LOGMASKED(LOG_COPPER, __VA_ARGS__) |
55 | 54 |
|
56 | 55 | namespace {
|
57 | 56 |
|
@@ -911,7 +910,7 @@ void specnext_state::update_video_mode()
|
911 | 910 |
|
912 | 911 | m_eff_nr_03_machine_timing = m_nr_03_machine_timing;
|
913 | 912 | m_eff_nr_05_5060 = m_nr_05_5060;
|
914 |
| - LOG("%s: %s %dHz", machine_name, is_hdmi ? "HDMI" : "VGA", m_nr_05_5060 ? 60 : 50); |
| 913 | + LOG("%s: %s %dHz\n", machine_name, is_hdmi ? "HDMI" : "VGA", m_nr_05_5060 ? 60 : 50); |
915 | 914 | }
|
916 | 915 |
|
917 | 916 | u32 specnext_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
@@ -1211,24 +1210,34 @@ attotime specnext_state::copper_until_pos_r(u16 pos)
|
1211 | 1210 | const u16 vcount = BIT(pos, 0, 9);
|
1212 | 1211 | const u16 hcount = BIT(pos, 9, 6) << 3;
|
1213 | 1212 | if (vcount > m_video_timings.max_vc || hcount > m_video_timings.max_hc)
|
| 1213 | + { |
| 1214 | + LOGCOPPER("[%s] HALT\n", m_copper->tag()); |
1214 | 1215 | return attotime::never;
|
| 1216 | + } |
1215 | 1217 | else
|
1216 | 1218 | {
|
1217 | 1219 | if (BIT(pos, 15)) // MOVE
|
1218 | 1220 | {
|
1219 | 1221 | u16 vtarget = cvc_to_vpos(vcount);
|
1220 |
| - u16 htarget = ((hcount/* + 12*/) + m_video_timings.min_hactive + m_screen->width()) % m_screen->width(); |
| 1222 | + u16 htarget = ((hcount/* + 12*/) + m_video_timings.min_hactive + m_video_timings.max_hc) % m_video_timings.max_hc; |
1221 | 1223 | if (htarget < (m_video_timings.min_hactive))
|
1222 | 1224 | vtarget = (vtarget + 1) % m_screen->height();
|
1223 | 1225 | htarget <<= 1;
|
1224 |
| - if (vtarget != m_screen->vpos() || htarget > m_screen->hpos()) |
| 1226 | + const u16 vpos = m_screen->vpos(); |
| 1227 | + const u16 hpos = m_screen->hpos(); |
| 1228 | + LOGCOPPER("[%s] [%02x, %03x] WAIT(%02x+%02x, %03x)\n", m_copper->tag(), vpos, hpos >> 1, m_nr_64_copper_offset, vcount, hcount); |
| 1229 | + if (vtarget != vpos || htarget > hpos) |
1225 | 1230 | return m_screen->time_until_pos(vtarget, htarget);
|
1226 | 1231 | else
|
| 1232 | + { |
| 1233 | + LOGCOPPER("[%s] !WAIT\n", m_copper->tag()); |
1227 | 1234 | return attotime::zero;
|
| 1235 | + } |
1228 | 1236 | }
|
1229 | 1237 | else // FRAME or RESET
|
1230 | 1238 | {
|
1231 | 1239 | assert(!vcount && !hcount);
|
| 1240 | + LOGCOPPER("[%s] FRAME (0, 0)\n", m_copper->tag()); |
1232 | 1241 | return m_screen->time_until_pos(cvc_to_vpos(0), m_video_timings.min_hactive << 1);
|
1233 | 1242 | }
|
1234 | 1243 | }
|
@@ -1715,7 +1724,7 @@ u8 specnext_state::reg_r(offs_t nr_register)
|
1715 | 1724 | default:
|
1716 | 1725 | port_253b_dat = 0x00;
|
1717 | 1726 | if (!machine().side_effects_disabled())
|
1718 |
| - LOGWARN("rR: %X -> %x\n", nr_register, port_253b_dat); |
| 1727 | + LOG("rR: %X -> %x\n", nr_register, port_253b_dat); |
1719 | 1728 | }
|
1720 | 1729 |
|
1721 | 1730 | return port_253b_dat;
|
@@ -2330,7 +2339,7 @@ void specnext_state::reg_w(offs_t nr_wr_reg, u8 nr_wr_dat)
|
2330 | 2339 | LOG("Debug: #%02X\n", nr_wr_dat); // LED
|
2331 | 2340 | break;
|
2332 | 2341 | default:
|
2333 |
| - LOGWARN("wR: %X <- %x\n", nr_wr_reg, nr_wr_dat); |
| 2342 | + LOG("wR: %X <- %x\n", nr_wr_reg, nr_wr_dat); |
2334 | 2343 | break;
|
2335 | 2344 | }
|
2336 | 2345 |
|
|
0 commit comments