~ubuntu-branches/debian/sid/mame/sid

« back to all changes in this revision

Viewing changes to src/mame/video/nbmj8991.c

  • Committer: Package Import Robot
  • Author(s): Jordi Mallach, Emmanuel Kasper, Jordi Mallach
  • Date: 2012-06-05 20:02:23 UTC
  • mfrom: (0.3.1) (0.1.4)
  • Revision ID: package-import@ubuntu.com-20120605200223-gnlpogjrg6oqe9md
Tags: 0.146-1
[ Emmanuel Kasper ]
* New upstream release
* Drop patch to fix man pages section and patches to link with flac 
  and jpeg system lib: all this has been pushed upstream by Cesare Falco
* Add DM-Upload-Allowed: yes field.

[ Jordi Mallach ]
* Create a "gnu" TARGETOS stanza that defines NO_AFFINITY_NP.
* Stop setting TARGETOS to "unix" in d/rules. It should be autodetected,
  and set to the appropriate value.
* mame_manpage_section.patch: Change mame's manpage section to 6 (games),
  in the TH declaration.

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
 
22
22
******************************************************************************/
23
23
 
24
 
WRITE8_HANDLER( nbmj8991_palette_type1_w )
25
 
{
26
 
        int r, g, b;
27
 
 
28
 
        space->machine().generic.paletteram.u8[offset] = data;
29
 
 
30
 
        if (!(offset & 1)) return;
31
 
 
32
 
        offset &= 0x1fe;
33
 
 
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);
37
 
 
38
 
        palette_set_color_rgb(space->machine(), (offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b));
39
 
}
40
 
 
41
 
WRITE8_HANDLER( nbmj8991_palette_type2_w )
42
 
{
43
 
        int r, g, b;
44
 
 
45
 
        space->machine().generic.paletteram.u8[offset] = data;
46
 
 
47
 
        if (!(offset & 1)) return;
48
 
 
49
 
        offset &= 0x1fe;
50
 
 
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);
54
 
 
55
 
        palette_set_color_rgb(space->machine(), (offset / 2), pal5bit(r), pal5bit(g), pal5bit(b));
56
 
}
57
 
 
58
 
WRITE8_HANDLER( nbmj8991_palette_type3_w )
59
 
{
60
 
        int r, g, b;
61
 
 
62
 
        space->machine().generic.paletteram.u8[offset] = data;
63
 
 
64
 
        if (!(offset & 1)) return;
65
 
 
66
 
        offset &= 0x1fe;
67
 
 
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);
71
 
 
72
 
        palette_set_color_rgb(space->machine(), (offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b));
 
24
WRITE8_MEMBER(nbmj8991_state::nbmj8991_palette_type1_w)
 
25
{
 
26
        int r, g, b;
 
27
 
 
28
        m_generic_paletteram_8[offset] = data;
 
29
 
 
30
        if (!(offset & 1)) return;
 
31
 
 
32
        offset &= 0x1fe;
 
33
 
 
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);
 
37
 
 
38
        palette_set_color_rgb(machine(), (offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b));
 
39
}
 
40
 
 
41
WRITE8_MEMBER(nbmj8991_state::nbmj8991_palette_type2_w)
 
42
{
 
43
        int r, g, b;
 
44
 
 
45
        m_generic_paletteram_8[offset] = data;
 
46
 
 
47
        if (!(offset & 1)) return;
 
48
 
 
49
        offset &= 0x1fe;
 
50
 
 
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);
 
54
 
 
55
        palette_set_color_rgb(machine(), (offset / 2), pal5bit(r), pal5bit(g), pal5bit(b));
 
56
}
 
57
 
 
58
WRITE8_MEMBER(nbmj8991_state::nbmj8991_palette_type3_w)
 
59
{
 
60
        int r, g, b;
 
61
 
 
62
        m_generic_paletteram_8[offset] = data;
 
63
 
 
64
        if (!(offset & 1)) return;
 
65
 
 
66
        offset &= 0x1fe;
 
67
 
 
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);
 
71
 
 
72
        palette_set_color_rgb(machine(), (offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b));
73
73
}
74
74
 
75
75
/******************************************************************************
76
76
 
77
77
 
78
78
******************************************************************************/
79
 
WRITE8_HANDLER( nbmj8991_blitter_w )
 
79
WRITE8_MEMBER(nbmj8991_state::nbmj8991_blitter_w)
80
80
{
81
 
        nbmj8991_state *state = space->machine().driver_data<nbmj8991_state>();
82
 
        int gfxlen = space->machine().region("gfx1")->bytes();
 
81
        int gfxlen = memregion("gfx1")->bytes();
83
82
 
84
83
        switch (offset)
85
84
        {
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;
88
87
                case 0x02:      break;
89
88
                case 0x03:      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());
94
93
                                        break;
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());
100
99
                                        break;
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);
110
109
                                        break;
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;
113
112
        }
114
113
 
115
 
        if ((0x20000 * state->m_gfxrom) > (gfxlen - 1))
 
114
        if ((0x20000 * m_gfxrom) > (gfxlen - 1))
116
115
        {
117
116
#ifdef MAME_DEBUG
118
117
                popmessage("GFXROM BANK OVER!!");
119
118
#endif
120
 
                state->m_gfxrom &= (gfxlen / 0x20000 - 1);
 
119
                m_gfxrom &= (gfxlen / 0x20000 - 1);
121
120
        }
122
121
}
123
122
 
124
 
READ8_HANDLER( nbmj8991_clut_r )
 
123
READ8_MEMBER(nbmj8991_state::nbmj8991_clut_r)
125
124
{
126
 
        nbmj8991_state *state = space->machine().driver_data<nbmj8991_state>();
127
 
        return state->m_clut[offset];
 
125
        return m_clut[offset];
128
126
}
129
127
 
130
 
WRITE8_HANDLER( nbmj8991_clut_w )
 
128
WRITE8_MEMBER(nbmj8991_state::nbmj8991_clut_w)
131
129
{
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;
134
131
}
135
132
 
136
133
/******************************************************************************
183
180
static void nbmj8991_gfxdraw(running_machine &machine)
184
181
{
185
182
        nbmj8991_state *state = machine.driver_data<nbmj8991_state>();
186
 
        UINT8 *GFX = machine.region("gfx1")->base();
 
183
        UINT8 *GFX = state->memregion("gfx1")->base();
187
184
        int width = machine.primary_screen->width();
188
185
 
189
186
        int x, y;
223
220
                skipy = -1;
224
221
        }
225
222
 
226
 
        gfxlen = machine.region("gfx1")->bytes();
 
223
        gfxlen = machine.root_device().memregion("gfx1")->bytes();
227
224
        gfxaddr = (state->m_gfxrom << 17) + (state->m_blitter_src_addr << 1);
228
225
 
229
226
        for (y = starty, ctry = sizey; ctry >= 0; y += skipy, ctry--)