mirror of
https://github.com/holub/mame
synced 2025-06-06 04:43:45 +03:00
Support for mode 0 chars in upd7220 (text in DMV diag program)
This commit is contained in:
parent
b8344eb60a
commit
86e0c8e26e
@ -985,6 +985,7 @@ void upd7220_device::draw_char(int x, int y)
|
||||
|
||||
/* snippet for character checking */
|
||||
#if 0
|
||||
if((m_figs.m_dir & 7) == 3)
|
||||
for(yi=0;yi<8;yi++)
|
||||
{
|
||||
for(xi=0;xi<8;xi++)
|
||||
@ -1000,15 +1001,30 @@ void upd7220_device::draw_char(int x, int y)
|
||||
ysize = ((m_figs.m_d & 0x400) + m_figs.m_dc) + 1;
|
||||
|
||||
/* TODO: internal direction, zooming, size stuff bigger than 8, rewrite using draw_pixel function */
|
||||
if((m_figs.m_dir & 7) == 0)
|
||||
{
|
||||
for(yi=0;yi<8;yi++)
|
||||
{
|
||||
for(xi=0;xi<8;xi++)
|
||||
{
|
||||
UINT8 dot = (m_ra[((7-xi) & 7) | 8]);
|
||||
dot >>= yi;
|
||||
dot &= 1;
|
||||
dot*=0xff;
|
||||
draw_pixel(x+xi,y+yi,dot);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for(yi=0;yi<ysize;yi++)
|
||||
{
|
||||
switch(m_figs.m_dir & 7)
|
||||
{
|
||||
case 0: tile_data = BITSWAP8(m_ra[((yi) & 7) | 8],0,1,2,3,4,5,6,7); break; // TODO
|
||||
case 2: tile_data = BITSWAP8(m_ra[((yi) & 7) | 8],0,1,2,3,4,5,6,7); break;
|
||||
case 6: tile_data = BITSWAP8(m_ra[((ysize-1-yi) & 7) | 8],7,6,5,4,3,2,1,0); break;
|
||||
default: tile_data = BITSWAP8(m_ra[((yi) & 7) | 8],7,6,5,4,3,2,1,0);
|
||||
logerror("%d %d %d\n",m_figs.m_dir,xsize,ysize);
|
||||
logerror("upd7220 draw char: %d %d %d\n",m_figs.m_dir,xsize,ysize);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1020,7 +1036,7 @@ void upd7220_device::draw_char(int x, int y)
|
||||
writebyte(addr & 0x3ffff, readbyte(addr & 0x3ffff) | ((tile_data) & (1 << (xi & 7))));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
m_ead = ((x+8*x_dir_dot[m_figs.m_dir]) >> 4) + ((y+8*y_dir_dot[m_figs.m_dir]) * m_pitch);
|
||||
m_dad = ((x+8*x_dir_dot[m_figs.m_dir]) & 0xf);
|
||||
}
|
||||
@ -1343,7 +1359,7 @@ void upd7220_device::process_fifo()
|
||||
break;
|
||||
|
||||
case COMMAND_FIGD: /* figure draw start */
|
||||
if(m_figs.m_figure_type == 0)
|
||||
if(m_figs.m_figure_type == 0 || m_figs.m_figure_type == 4)
|
||||
{
|
||||
UINT16 line_pattern = check_pattern((m_ra[8]) | (m_ra[9]<<8));
|
||||
UINT8 dot = ((line_pattern >> (0 & 0xf)) & 1) << 7;
|
||||
|
@ -271,7 +271,7 @@ UPD7220_DISPLAY_PIXELS_MEMBER( dmv_state::hgdc_display_pixels )
|
||||
const rgb_t *palette = m_palette->palette()->entry_list_raw();
|
||||
|
||||
// 32KB videoram
|
||||
UINT8 gfx = m_video_ram[address & 0x7fff];
|
||||
UINT8 gfx = m_video_ram[address & 0xffff];
|
||||
|
||||
for(int xi=0;xi<8;xi++)
|
||||
{
|
||||
|
@ -552,7 +552,6 @@ public:
|
||||
UINT8 m_joy_sel;
|
||||
UINT8 m_ext2_ff;
|
||||
UINT8 m_sys_type;
|
||||
UINT8 m_is_nec_bank;
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER( keyboard_irq );
|
||||
DECLARE_WRITE_LINE_MEMBER( write_uart_clock );
|
||||
@ -1906,14 +1905,6 @@ WRITE8_MEMBER(pc9801_state::pc9801rs_bank_w)
|
||||
{
|
||||
if(offset == 1)
|
||||
{
|
||||
#if 0
|
||||
if(m_is_nec_bank)
|
||||
{
|
||||
m_rom_bank = 1;
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
if((data & 0xf0) == 0x00 || (data & 0xf0) == 0x10)
|
||||
{
|
||||
if((data & 0xed) == 0x00)
|
||||
@ -3389,7 +3380,6 @@ MACHINE_START_MEMBER(pc9801_state,pc9821)
|
||||
m_ide_ram = auto_alloc_array(machine(), UINT8, 0x2000);
|
||||
m_ext_gvram = auto_alloc_array(machine(), UINT8, 0xa0000);
|
||||
|
||||
m_is_nec_bank = 0;
|
||||
save_pointer(NAME(m_sdip), 24);
|
||||
save_pointer(NAME(m_ide_ram), 0x2000);
|
||||
save_pointer(NAME(m_ext_gvram), 0xa0000);
|
||||
@ -3399,7 +3389,7 @@ MACHINE_START_MEMBER(pc9801_state,pc9821ap2)
|
||||
{
|
||||
MACHINE_START_CALL_MEMBER(pc9821);
|
||||
|
||||
m_is_nec_bank = 1;
|
||||
// ...
|
||||
}
|
||||
|
||||
MACHINE_RESET_MEMBER(pc9801_state,pc9801_common)
|
||||
|
Loading…
Reference in New Issue
Block a user