summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author angelosa <lordkale4@gmail.com>2024-11-02 22:52:38 +0100
committer angelosa <lordkale4@gmail.com>2024-11-03 00:31:17 +0100
commit7149fab8335f53b73980b41b1e9a155f9e8101cc (patch)
tree0b6314d690a5fce1cd3ba1bf53e40f2c6f47a6e2 /src
parente46068ba881e25871ac10f87f51490b0039b84a6 (diff)
video/upd7220.cpp: horizontal multiplier is x16 if in gfx mode, x8 otherwise
* fix microbx2 and pc9801:diremono
Diffstat (limited to 'src')
-rw-r--r--src/devices/video/upd7220.cpp16
-rw-r--r--src/mame/misc/microbox2.cpp4
2 files changed, 7 insertions, 13 deletions
diff --git a/src/devices/video/upd7220.cpp b/src/devices/video/upd7220.cpp
index eebf00c4391..b7729478461 100644
--- a/src/devices/video/upd7220.cpp
+++ b/src/devices/video/upd7220.cpp
@@ -383,17 +383,11 @@ inline void upd7220_device::update_blank_timer(int state)
inline void upd7220_device::recompute_parameters()
{
- int horiz_mult = 16, vert_mult = 1;
- /* TODO: assume that the pitch also controls number of horizontal pixels in a single cell */
- // horiz_mult = 4 if both mixed and interlace?
- if((m_mode & UPD7220_MODE_DISPLAY_MASK) == UPD7220_MODE_DISPLAY_MIXED)
- horiz_mult = 8;
- else if((m_mode & UPD7220_MODE_INTERLACE_MASK) == UPD7220_MODE_INTERLACE_ON)
- {
- // in interlaced mode every line contains both fields
- horiz_mult = 8; // TODO this breaks microbx2, compis uhrg video, characters are 16 pixels wide in interlaced mode too
- vert_mult = 2;
- }
+ // microbx2 wants horizontal multiplier of x16
+ // pc9801:diremono sets up m_mode to be specifically in character mode, wanting x8 here
+ // TODO: verify compis uhrg video & high reso Hyper 98
+ const int horiz_mult = (m_mode & UPD7220_MODE_DISPLAY_MASK) == UPD7220_MODE_DISPLAY_GRAPHICS ? 16 : 8;
+ const int vert_mult = (m_mode & UPD7220_MODE_INTERLACE_MASK) == UPD7220_MODE_INTERLACE_ON ? 2 : 1;
int horiz_pix_total = (m_hs + m_hbp + m_hfp + m_aw) * horiz_mult;
int vert_pix_total = (m_vs + m_vbp + m_al + m_vfp) * vert_mult;
diff --git a/src/mame/misc/microbox2.cpp b/src/mame/misc/microbox2.cpp
index 736fc5cb0a7..1bd293ed39e 100644
--- a/src/mame/misc/microbox2.cpp
+++ b/src/mame/misc/microbox2.cpp
@@ -302,10 +302,10 @@ void microbx2_state::microbx2(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &microbx2_state::mem_map);
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(16_MHz_XTAL, 1024, 0, 768, 674, 31, 607);
+ screen.set_raw(16_MHz_XTAL / 3, 1024, 0, 768, 674, 31, 607);
screen.set_screen_update("gdc", FUNC(upd7220a_device::screen_update));
- upd7220a_device &gdc(UPD7220A(config, "gdc", 16_MHz_XTAL / 8));
+ upd7220a_device &gdc(UPD7220A(config, "gdc", 16_MHz_XTAL / 3)); // unverified clock, hand tuned for ~60 Hz
gdc.set_addrmap(0, &microbx2_state::upd7220_map);
gdc.set_display_pixels(FUNC(microbx2_state::display_pixels));
gdc.set_screen("screen");