Previous 199869 Revisions Next

r20489 Saturday 26th January, 2013 at 14:24:31 UTC by Wilbert Pol
(MESS) jr200.c: tagmap cleanups (nw)
[src/mess/drivers]jr200.c

trunk/src/mess/drivers/jr200.c
r20488r20489
2424{
2525public:
2626   jr200_state(const machine_config &mconfig, device_type type, const char *tag)
27      : driver_device(mconfig, type, tag) ,
28      m_vram(*this, "vram"),
29      m_cram(*this, "cram"),
30      m_mn1271_ram(*this, "mn1271_ram"){ }
27      : driver_device(mconfig, type, tag)
28      , m_vram(*this, "vram")
29      , m_cram(*this, "cram")
30      , m_mn1271_ram(*this, "mn1271_ram")
31      , m_maincpu(*this, "maincpu")
32      , m_beeper(*this, BEEPER_TAG)
33      , m_pcg(*this, "pcg")
34      , m_gfx_rom(*this, "gfx_rom")
35      , m_gfx_ram(*this, "gfx_ram")
36      , m_row0(*this, "ROW0")
37      , m_row1(*this, "ROW1")
38      , m_row2(*this, "ROW2")
39      , m_row3(*this, "ROW3")
40      , m_row4(*this, "ROW4")
41      , m_row5(*this, "ROW5")
42      , m_row6(*this, "ROW6")
43      , m_row7(*this, "ROW7")
44      , m_row8(*this, "ROW8")
45      , m_row9(*this, "ROW9")
46   { }
3147
3248   required_shared_ptr<UINT8> m_vram;
3349   required_shared_ptr<UINT8> m_cram;
r20488r20489
5470   virtual void palette_init();
5571   UINT32 screen_update_jr200(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
5672   TIMER_CALLBACK_MEMBER(timer_d_callback);
73
74protected:
75   required_device<cpu_device> m_maincpu;
76   required_device<device_t> m_beeper;
77   required_memory_region m_pcg;
78   required_memory_region m_gfx_rom;
79   required_memory_region m_gfx_ram;
80   required_ioport m_row0;
81   required_ioport m_row1;
82   required_ioport m_row2;
83   required_ioport m_row3;
84   required_ioport m_row4;
85   required_ioport m_row5;
86   required_ioport m_row6;
87   required_ioport m_row7;
88   required_ioport m_row8;
89   required_ioport m_row9;
5790};
5891
5992
r20488r20489
159192               }
160193               else // tile mode
161194               {
162                  gfx_data = machine().root_device().memregion(attr & 0x40 ? "pcg" : "gfx_ram")->base();
195                  gfx_data = (attr & 0x40) ? m_pcg->base() : m_gfx_ram->base();
163196
164197                  pen = (gfx_data[(tile*8)+yi]>>(7-xi) & 1) ? (attr & 0x7) : ((attr & 0x38) >> 3);
165198               }
r20488r20489
175208
176209READ8_MEMBER(jr200_state::jr200_pcg_1_r)
177210{
178   UINT8 *pcg = memregion("pcg")->base();
179
180   return pcg[offset+0x000];
211   return m_pcg->base()[offset+0x000];
181212}
182213
183214READ8_MEMBER(jr200_state::jr200_pcg_2_r)
184215{
185   UINT8 *pcg = memregion("pcg")->base();
186
187   return pcg[offset+0x400];
216   return m_pcg->base()[offset+0x400];
188217}
189218
190219WRITE8_MEMBER(jr200_state::jr200_pcg_1_w)
191220{
192   UINT8 *pcg = memregion("pcg")->base();
193
194   pcg[offset+0x000] = data;
221   m_pcg->base()[offset+0x000] = data;
195222   machine().gfx[1]->mark_dirty((offset+0x000) >> 3);
196223}
197224
198225WRITE8_MEMBER(jr200_state::jr200_pcg_2_w)
199226{
200   UINT8 *pcg = memregion("pcg")->base();
201
202   pcg[offset+0x400] = data;
227   m_pcg->base()[offset+0x400] = data;
203228   machine().gfx[1]->mark_dirty((offset+0x400) >> 3);
204229}
205230
206231READ8_MEMBER(jr200_state::jr200_bios_char_r)
207232{
208   UINT8 *gfx = memregion("gfx_ram")->base();
209
210   return gfx[offset];
233   return m_gfx_ram->base()[offset];
211234}
212235
213236
214237WRITE8_MEMBER(jr200_state::jr200_bios_char_w)
215238{
216//  UINT8 *gfx = memregion("gfx_ram")->base();
217
218239   /* TODO: writing is presumably controlled by an I/O bit */
219//  gfx[offset] = data;
240//  m_gfx_ram->base()[offset] = data;
220241//  machine().gfx[0]->mark_dirty(offset >> 3);
221242}
222243
r20488r20489
230251{
231252   int row, col, table = 0;
232253   UINT8 keydata = 0;
233   static const char *const keynames[] = { "ROW0", "ROW1", "ROW2", "ROW3", "ROW4", "ROW5", "ROW6", "ROW7", "ROW8" };
234254
235   if (ioport("ROW9")->read() & 0x07)
255   if (m_row9->read() & 0x07)
236256   {
237257      /* shift, upper case */
238258      table = 1;
r20488r20489
241261   /* scan keyboard */
242262   for (row = 0; row < 9; row++)
243263   {
244      UINT8 data = ioport(keynames[row])->read();
264      UINT8 data = 0xff;
245265
266      switch ( row )
267      {
268         case 0: data = m_row0->read(); break;
269         case 1: data = m_row1->read(); break;
270         case 2: data = m_row2->read(); break;
271         case 3: data = m_row3->read(); break;
272         case 4: data = m_row4->read(); break;
273         case 5: data = m_row5->read(); break;
274         case 6: data = m_row6->read(); break;
275         case 7: data = m_row7->read(); break;
276         case 8: data = m_row8->read(); break;
277      }
278
246279      for (col = 0; col < 8; col++)
247280      {
248281         if (!BIT(data, col))
r20488r20489
264297WRITE8_MEMBER(jr200_state::jr200_beep_w)
265298{
266299   /* writing 0x0e enables the beeper, writing anything else disables it */
267   beep_set_state(machine().device(BEEPER_TAG),((data & 0xf) == 0x0e) ? 1 : 0);
300   beep_set_state(m_beeper,((data & 0xf) == 0x0e) ? 1 : 0);
268301}
269302
270303WRITE8_MEMBER(jr200_state::jr200_beep_freq_w)
r20488r20489
275308
276309   beep_freq = ((m_freq_reg[0]<<8) | (m_freq_reg[1] & 0xff)) + 1;
277310
278   beep_set_frequency(machine().device(BEEPER_TAG),84000 / beep_freq);
311   beep_set_frequency(m_beeper,84000 / beep_freq);
279312}
280313
281314WRITE8_MEMBER(jr200_state::jr200_border_col_w)
r20488r20489
286319
287320TIMER_CALLBACK_MEMBER(jr200_state::timer_d_callback)
288321{
289   machine().firstcpu->set_input_line(0, HOLD_LINE);
322   m_maincpu->set_input_line(0, HOLD_LINE);
290323}
291324
292325READ8_MEMBER(jr200_state::mn1271_io_r)
r20488r20489
483516
484517void jr200_state::machine_start()
485518{
486   beep_set_frequency(machine().device(BEEPER_TAG),0);
487   beep_set_state(machine().device(BEEPER_TAG),0);
519   beep_set_frequency(m_beeper,0);
520   beep_set_state(m_beeper,0);
488521   m_timer_d = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(jr200_state::timer_d_callback),this));
489522}
490523
491524void jr200_state::machine_reset()
492525{
493   UINT8 *gfx_rom = machine().root_device().memregion("gfx_rom")->base();
494   UINT8 *gfx_ram = memregion("gfx_ram")->base();
526   UINT8 *gfx_rom = m_gfx_rom->base();
527   UINT8 *gfx_ram = m_gfx_ram->base();
495528   int i;
496529   memset(m_mn1271_ram,0,0x800);
497530

Previous 199869 Revisions Next


© 1997-2024 The MAME Team