22
22
******************************************************************************/
24
WRITE8_HANDLER( nbmj8991_palette_type1_w )
28
space->machine().generic.paletteram.u8[offset] = data;
30
if (!(offset & 1)) return;
34
r = ((space->machine().generic.paletteram.u8[offset + 0] & 0x0f) >> 0);
35
g = ((space->machine().generic.paletteram.u8[offset + 1] & 0xf0) >> 4);
36
b = ((space->machine().generic.paletteram.u8[offset + 1] & 0x0f) >> 0);
38
palette_set_color_rgb(space->machine(), (offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b));
41
WRITE8_HANDLER( nbmj8991_palette_type2_w )
45
space->machine().generic.paletteram.u8[offset] = data;
47
if (!(offset & 1)) return;
51
r = ((space->machine().generic.paletteram.u8[offset + 0] & 0x7c) >> 2);
52
g = (((space->machine().generic.paletteram.u8[offset + 0] & 0x03) << 3) | ((space->machine().generic.paletteram.u8[offset + 1] & 0xe0) >> 5));
53
b = ((space->machine().generic.paletteram.u8[offset + 1] & 0x1f) >> 0);
55
palette_set_color_rgb(space->machine(), (offset / 2), pal5bit(r), pal5bit(g), pal5bit(b));
58
WRITE8_HANDLER( nbmj8991_palette_type3_w )
62
space->machine().generic.paletteram.u8[offset] = data;
64
if (!(offset & 1)) return;
68
r = ((space->machine().generic.paletteram.u8[offset + 1] & 0x0f) >> 0);
69
g = ((space->machine().generic.paletteram.u8[offset + 0] & 0xf0) >> 4);
70
b = ((space->machine().generic.paletteram.u8[offset + 0] & 0x0f) >> 0);
72
palette_set_color_rgb(space->machine(), (offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b));
24
WRITE8_MEMBER(nbmj8991_state::nbmj8991_palette_type1_w)
28
m_generic_paletteram_8[offset] = data;
30
if (!(offset & 1)) return;
34
r = ((m_generic_paletteram_8[offset + 0] & 0x0f) >> 0);
35
g = ((m_generic_paletteram_8[offset + 1] & 0xf0) >> 4);
36
b = ((m_generic_paletteram_8[offset + 1] & 0x0f) >> 0);
38
palette_set_color_rgb(machine(), (offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b));
41
WRITE8_MEMBER(nbmj8991_state::nbmj8991_palette_type2_w)
45
m_generic_paletteram_8[offset] = data;
47
if (!(offset & 1)) return;
51
r = ((m_generic_paletteram_8[offset + 0] & 0x7c) >> 2);
52
g = (((m_generic_paletteram_8[offset + 0] & 0x03) << 3) | ((m_generic_paletteram_8[offset + 1] & 0xe0) >> 5));
53
b = ((m_generic_paletteram_8[offset + 1] & 0x1f) >> 0);
55
palette_set_color_rgb(machine(), (offset / 2), pal5bit(r), pal5bit(g), pal5bit(b));
58
WRITE8_MEMBER(nbmj8991_state::nbmj8991_palette_type3_w)
62
m_generic_paletteram_8[offset] = data;
64
if (!(offset & 1)) return;
68
r = ((m_generic_paletteram_8[offset + 1] & 0x0f) >> 0);
69
g = ((m_generic_paletteram_8[offset + 0] & 0xf0) >> 4);
70
b = ((m_generic_paletteram_8[offset + 0] & 0x0f) >> 0);
72
palette_set_color_rgb(machine(), (offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b));
75
75
/******************************************************************************
78
78
******************************************************************************/
79
WRITE8_HANDLER( nbmj8991_blitter_w )
79
WRITE8_MEMBER(nbmj8991_state::nbmj8991_blitter_w)
81
nbmj8991_state *state = space->machine().driver_data<nbmj8991_state>();
82
int gfxlen = space->machine().region("gfx1")->bytes();
81
int gfxlen = memregion("gfx1")->bytes();
86
case 0x00: state->m_blitter_src_addr = (state->m_blitter_src_addr & 0xff00) | data; break;
87
case 0x01: state->m_blitter_src_addr = (state->m_blitter_src_addr & 0x00ff) | (data << 8); break;
85
case 0x00: m_blitter_src_addr = (m_blitter_src_addr & 0xff00) | data; break;
86
case 0x01: m_blitter_src_addr = (m_blitter_src_addr & 0x00ff) | (data << 8); break;
90
case 0x04: state->m_blitter_sizex = data; break;
91
case 0x05: state->m_blitter_sizey = data;
89
case 0x04: m_blitter_sizex = data; break;
90
case 0x05: m_blitter_sizey = data;
92
91
/* writing here also starts the blit */
93
nbmj8991_gfxdraw(space->machine());
92
nbmj8991_gfxdraw(machine());
95
case 0x06: state->m_blitter_direction_x = (data & 0x01) ? 1 : 0;
96
state->m_blitter_direction_y = (data & 0x02) ? 1 : 0;
97
state->m_flipscreen = (data & 0x04) ? 0 : 1;
98
state->m_dispflag = (data & 0x10) ? 0 : 1;
99
nbmj8991_vramflip(space->machine());
94
case 0x06: m_blitter_direction_x = (data & 0x01) ? 1 : 0;
95
m_blitter_direction_y = (data & 0x02) ? 1 : 0;
96
m_flipscreen = (data & 0x04) ? 0 : 1;
97
m_dispflag = (data & 0x10) ? 0 : 1;
98
nbmj8991_vramflip(machine());
101
100
case 0x07: break;
102
case 0x10: state->m_blitter_destx = (state->m_blitter_destx & 0xff00) | data; break;
103
case 0x20: state->m_blitter_desty = (state->m_blitter_desty & 0xff00) | data; break;
104
case 0x30: state->m_scrollx = (state->m_scrollx & 0xff00) | data; break;
105
case 0x40: state->m_scrolly = (state->m_scrolly & 0xff00) | data; break;
106
case 0x50: state->m_blitter_destx = (state->m_blitter_destx & 0x00ff) | ((data & 0x01) << 8);
107
state->m_blitter_desty = (state->m_blitter_desty & 0x00ff) | ((data & 0x02) << 7);
108
state->m_scrollx = (state->m_scrollx & 0x00ff) | ((data & 0x04) << 6);
109
state->m_scrolly = (state->m_scrolly & 0x00ff) | ((data & 0x08) << 5);
101
case 0x10: m_blitter_destx = (m_blitter_destx & 0xff00) | data; break;
102
case 0x20: m_blitter_desty = (m_blitter_desty & 0xff00) | data; break;
103
case 0x30: m_scrollx = (m_scrollx & 0xff00) | data; break;
104
case 0x40: m_scrolly = (m_scrolly & 0xff00) | data; break;
105
case 0x50: m_blitter_destx = (m_blitter_destx & 0x00ff) | ((data & 0x01) << 8);
106
m_blitter_desty = (m_blitter_desty & 0x00ff) | ((data & 0x02) << 7);
107
m_scrollx = (m_scrollx & 0x00ff) | ((data & 0x04) << 6);
108
m_scrolly = (m_scrolly & 0x00ff) | ((data & 0x08) << 5);
111
case 0x60: state->m_gfxrom = data; break;
112
case 0x70: state->m_clutsel = data; break;
110
case 0x60: m_gfxrom = data; break;
111
case 0x70: m_clutsel = data; break;
115
if ((0x20000 * state->m_gfxrom) > (gfxlen - 1))
114
if ((0x20000 * m_gfxrom) > (gfxlen - 1))
117
116
#ifdef MAME_DEBUG
118
117
popmessage("GFXROM BANK OVER!!");
120
state->m_gfxrom &= (gfxlen / 0x20000 - 1);
119
m_gfxrom &= (gfxlen / 0x20000 - 1);
124
READ8_HANDLER( nbmj8991_clut_r )
123
READ8_MEMBER(nbmj8991_state::nbmj8991_clut_r)
126
nbmj8991_state *state = space->machine().driver_data<nbmj8991_state>();
127
return state->m_clut[offset];
125
return m_clut[offset];
130
WRITE8_HANDLER( nbmj8991_clut_w )
128
WRITE8_MEMBER(nbmj8991_state::nbmj8991_clut_w)
132
nbmj8991_state *state = space->machine().driver_data<nbmj8991_state>();
133
state->m_clut[((state->m_clutsel & 0x7f) * 0x10) + (offset & 0x0f)] = data;
130
m_clut[((m_clutsel & 0x7f) * 0x10) + (offset & 0x0f)] = data;
136
133
/******************************************************************************