Previous 199869 Revisions Next

r44372 Saturday 23rd January, 2016 at 16:30:14 UTC by Ryan Holtz
More fixes, nw
[src/mame/audio]m72.cpp m72.h
[src/mame/drivers]hornet.cpp jclub2.cpp namcos86.cpp
[src/mame/includes]m107.h namcos86.h nbmj8891.h
[src/mame/video]m107.cpp nbmj8891.cpp st0020.cpp st0020.h

trunk/src/mame/audio/m72.cpp
r252883r252884
4949const device_type M72 = &device_creator<m72_audio_device>;
5050
5151m72_audio_device::m72_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
52   : device_t(mconfig, M72, "Irem M72 Audio Custom", tag, owner, clock, "m72_audio", __FILE__),
53      device_sound_interface(mconfig, *this),
54      m_irqvector(0),
55      m_sample_addr(0),
56      m_samples(nullptr),
57      m_samples_size(0)
52   : device_t(mconfig, M72, "Irem M72 Audio Custom", tag, owner, clock, "m72_audio", __FILE__)
53   , device_sound_interface(mconfig, *this)
54   , m_irqvector(0)
55   , m_sample_addr(0)
56   , m_samples(*this, "samples")
57   , m_samples_size(0)
5858{
5959}
6060
r252883r252884
7474
7575void m72_audio_device::device_start()
7676{
77   m_samples = machine().root_device().memregion("samples")->base();
78   m_samples_size = machine().root_device().memregion("samples")->bytes();
77   m_samples_size = m_samples.bytes();
7978   m_space = &machine().device("soundcpu")->memory().space(AS_IO);
8079   m_dac = machine().device<dac_device>("dac");
8180
trunk/src/mame/audio/m72.h
r252883r252884
5151   // internal state
5252   UINT8 m_irqvector;
5353   UINT32 m_sample_addr;
54   UINT8 *m_samples;
54   optional_region_ptr<UINT8> m_samples;
5555   UINT32 m_samples_size;
5656   address_space *m_space;
5757   dac_device *m_dac;
trunk/src/mame/drivers/hornet.cpp
r252883r252884
351351      m_dsw(*this, "DSW"),
352352      m_eepromout(*this, "EEPROMOUT"),
353353      m_analog1(*this, "ANALOG1"),
354      m_analog2(*this, "ANALOG2")
354      m_analog2(*this, "ANALOG2"),
355      m_user3_ptr(*this, "user3"),
356      m_user5_ptr(*this, "user5")
355357   { }
356358
357359   // TODO: Needs verification on real hardware
r252883r252884
373375   optional_device<eeprom_serial_93cxx_device> m_lan_eeprom;
374376   required_ioport m_in0, m_in1, m_in2, m_dsw;
375377   optional_ioport m_eepromout, m_analog1, m_analog2;
378   optional_region_ptr<UINT8> m_user3_ptr;
379   optional_region_ptr<UINT8> m_user5_ptr;
376380
377381   emu_timer *m_sound_irq_timer;
378382   UINT8 m_led_reg0;
r252883r252884
946950
947951void hornet_state::machine_reset()
948952{
949   UINT8 *usr3 = memregion("user3")->base();
950   UINT8 *usr5 = memregion("user5")->base();
951   if (usr3 != nullptr)
953   if (m_user3_ptr)
952954   {
953      membank("bank1")->configure_entries(0, memregion("user3")->bytes() / 0x10000, usr3, 0x10000);
955      membank("bank1")->configure_entries(0, m_user3_ptr.bytes() / 0x10000, m_user3_ptr, 0x10000);
954956      membank("bank1")->set_entry(0);
955957   }
956958
957959   m_dsp->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
958960
959   if (usr5)
960      membank("bank5")->set_base(usr5);
961   if (m_user5_ptr)
962   {
963      membank("bank5")->set_base(m_user5_ptr);
964   }
961965}
962966
963967ADC12138_IPT_CONVERT_CB(hornet_state::adc12138_input_callback)
r252883r252884
10381042
10391043MACHINE_RESET_MEMBER(hornet_state,hornet_2board)
10401044{
1041   UINT8 *usr3 = memregion("user3")->base();
1042   UINT8 *usr5 = memregion("user5")->base();
1043
1044   if (usr3 != nullptr)
1045   if (m_user3_ptr)
10451046   {
1046      membank("bank1")->configure_entries(0, memregion("user3")->bytes() / 0x10000, usr3, 0x10000);
1047      membank("bank1")->configure_entries(0, m_user3_ptr.bytes() / 0x10000, m_user3_ptr, 0x10000);
10471048      membank("bank1")->set_entry(0);
10481049   }
10491050   m_dsp->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
10501051   m_dsp2->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
10511052
1052   if (usr5)
1053   if (m_user5_ptr)
10531054   {
1054      membank("bank5")->set_base(usr5);
1055      membank("bank6")->set_base(usr5);
1055      membank("bank5")->set_base(m_user5_ptr);
1056      membank("bank6")->set_base(m_user5_ptr);
10561057   }
10571058}
10581059
trunk/src/mame/drivers/jclub2.cpp
r252883r252884
500500   AM_RANGE(0x600000, 0x67ffff) AM_DEVREADWRITE16( "st0020_spr", st0020_device, st0020_sprram_r, st0020_sprram_w, 0xffffffff );
501501   AM_RANGE(0x680000, 0x69ffff) AM_RAM AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
502502   AM_RANGE(0x6a0000, 0x6bffff) AM_RAM
503   AM_RANGE(0x6C0000, 0x6C00ff) AM_DEVREADWRITE16( "st0020_spr", st0020_device, st0020_blitram_r, st0020_blitram_w, 0xffffffff );
503   //AM_RANGE(0x6C0000, 0x6C00ff) AM_DEVREADWRITE16( "st0020_spr", st0020_device, st0020_blitram_r, st0020_blitram_w, 0xffffffff );
504504   AM_RANGE(0x700000, 0x7fffff) AM_DEVREADWRITE16( "st0020_spr", st0020_device, st0020_gfxram_r, st0020_gfxram_w, 0xffffffff );
505505
506506ADDRESS_MAP_END
trunk/src/mame/drivers/namcos86.cpp
r252883r252884
185185{
186186   /* if the ROM expansion module is available, don't do anything. This avoids conflict */
187187   /* with bankswitch1_ext_w() in wndrmomo */
188   if (memregion("user1")->base()) return;
188   if (m_user1_ptr)
189      return;
189190
190191   membank("bank1")->set_entry(data & 0x03);
191192}
192193
193194WRITE8_MEMBER(namcos86_state::bankswitch1_ext_w)
194195{
195   UINT8 *base = memregion("user1")->base();
196   if (!m_user1_ptr)
197      return;
196198
197   if (base == nullptr) return;
198
199199   membank("bank1")->set_entry(data & 0x1f);
200200}
201201
r252883r252884
288288WRITE8_MEMBER(namcos86_state::cus115_w)
289289{
290290   /* make sure the expansion board is present */
291   if (!memregion("user1")->base())
291   if (!m_user1_ptr)
292292   {
293293      popmessage("expansion board not present");
294294      return;
r252883r252884
317317
318318void namcos86_state::machine_start()
319319{
320   if (!memregion("user1")->base())
320   if (m_user1_ptr)
321      membank("bank1")->configure_entries(0, 32, m_user1_ptr, 0x2000);
322   else
321323      membank("bank1")->configure_entries(0, 4, memregion("cpu1")->base(), 0x2000);
322   else
323      membank("bank1")->configure_entries(0, 32, memregion("user1")->base(), 0x2000);
324324
325325   if (membank("bank2"))
326326      membank("bank2")->configure_entries(0, 4, memregion("cpu2")->base(), 0x2000);
trunk/src/mame/includes/m107.h
r252883r252884
1818{
1919public:
2020   m107_state(const machine_config &mconfig, device_type type, const char *tag)
21      : driver_device(mconfig, type, tag),
22         m_maincpu(*this, "maincpu"),
23         m_soundcpu(*this, "soundcpu"),
24         m_gfxdecode(*this, "gfxdecode"),
25         m_screen(*this, "screen"),
26         m_palette(*this, "palette"),
27         m_spriteram(*this, "spriteram"),
28         m_vram_data(*this, "vram_data"),
29         m_upd71059c(*this, "upd71059c")
30         { }
21      : driver_device(mconfig, type, tag)
22      , m_maincpu(*this, "maincpu")
23      , m_soundcpu(*this, "soundcpu")
24      , m_gfxdecode(*this, "gfxdecode")
25      , m_screen(*this, "screen")
26      , m_palette(*this, "palette")
27      , m_spriteram(*this, "spriteram")
28      , m_vram_data(*this, "vram_data")
29      , m_upd71059c(*this, "upd71059c")
30      , m_user1_ptr(*this, "user1")
31   {
32   }
3133
3234   required_device<cpu_device> m_maincpu;
3335   required_device<cpu_device> m_soundcpu;
r252883r252884
3840   required_shared_ptr<UINT16> m_spriteram;
3941   required_shared_ptr<UINT16> m_vram_data;
4042   required_device<pic8259_device> m_upd71059c;
43   optional_region_ptr<UINT8> m_user1_ptr;
4144
4245   // driver init
4346   UINT8 m_spritesystem;
trunk/src/mame/includes/namcos86.h
r252883r252884
66{
77public:
88   namcos86_state(const machine_config &mconfig, device_type type, const char *tag)
9      : driver_device(mconfig, type, tag),
10      m_cpu1(*this, "cpu1"),
11      m_cpu2(*this, "cpu2"),
12      m_cus30(*this, "namco"),
13      m_gfxdecode(*this, "gfxdecode"),
14      m_palette(*this, "palette"),
15      m_rthunder_videoram1(*this, "videoram1"),
16      m_rthunder_videoram2(*this, "videoram2"),
17      m_rthunder_spriteram(*this, "spriteram") { }
9      : driver_device(mconfig, type, tag)
10      , m_cpu1(*this, "cpu1")
11      , m_cpu2(*this, "cpu2")
12      , m_cus30(*this, "namco")
13      , m_gfxdecode(*this, "gfxdecode")
14      , m_palette(*this, "palette")
15      , m_rthunder_videoram1(*this, "videoram1")
16      , m_rthunder_videoram2(*this, "videoram2")
17      , m_rthunder_spriteram(*this, "spriteram")
18      , m_user1_ptr(*this, "user1")
19   {
20   }
1821
1922   required_device<cpu_device> m_cpu1;
2023   required_device<cpu_device> m_cpu2;
r252883r252884
2427   required_shared_ptr<UINT8> m_rthunder_videoram1;
2528   required_shared_ptr<UINT8> m_rthunder_videoram2;
2629   required_shared_ptr<UINT8> m_rthunder_spriteram;
30   optional_region_ptr<UINT8> m_user1_ptr;
2731
2832   UINT8 *m_spriteram;
2933   int m_wdog;
trunk/src/mame/includes/nbmj8891.h
r252883r252884
1111   };
1212
1313   nbmj8891_state(const machine_config &mconfig, device_type type, const char *tag)
14      : driver_device(mconfig, type, tag) ,
15      m_maincpu(*this, "maincpu"),
16      m_nb1413m3(*this, "nb1413m3"),
17      m_screen(*this, "screen"),
18      m_palette(*this, "palette")   { }
14      : driver_device(mconfig, type, tag)
15      , m_maincpu(*this, "maincpu")
16      , m_nb1413m3(*this, "nb1413m3")
17      , m_screen(*this, "screen")
18      , m_palette(*this, "palette")
19      , m_clut_ptr(*this, "protection")
20   {
21   }
1922
2023   required_device<cpu_device> m_maincpu;
2124   required_device<nb1413m3_device> m_nb1413m3;
2225   required_device<screen_device> m_screen;
2326   required_device<palette_device> m_palette;
27   optional_region_ptr<UINT8> m_clut_ptr;
2428
2529   int m_scrolly;
2630   int m_blitter_destx;
trunk/src/mame/video/m107.cpp
r252883r252884
160160void m107_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
161161{
162162   UINT16 *spriteram = m_buffered_spriteram.get();
163   int offs;
164   UINT8 *rom = memregion("user1")->base();
165163
166   for (offs = 0;offs < 0x800;offs += 4)
164   for (int offs = 0; offs < 0x800; offs += 4)
167165   {
168      int x,y,sprite,colour,fx,fy,y_multi,i,s_ptr,pri_mask;
166      int pri_mask = (!(spriteram[offs + 2] & 0x80)) ? 2 : 0;
169167
170      pri_mask = (!(spriteram[offs+2]&0x80)) ? 2 : 0;
168      int y = spriteram[offs + 0] & 0x1ff;
169      int x = spriteram[offs + 3] & 0x1ff;
171170
172      y=spriteram[offs+0];
173      x=spriteram[offs+3];
174      x&=0x1ff;
175      y&=0x1ff;
176
177171      if (x==0 || y==0) continue; /* offscreen */
178172
179      sprite=spriteram[offs+1]&0x7fff;
173      int sprite_code = spriteram[offs + 1] & 0x7fff;
180174
181175      x = x - 16;
182176      y = 384 - 16 - y;
183177
184      colour=spriteram[offs+2]&0x7f;
185      fx=(spriteram[offs+2]>>8)&0x1;
186      fy=(spriteram[offs+2]>>8)&0x2;
187      y_multi=(spriteram[offs+0]>>11)&0x3;
178      int colour = spriteram[offs + 2] & 0x7f;
179      bool fx = (spriteram[offs + 2] >> 8) & 0x1;
180      bool fy = (spriteram[offs + 2] >> 8) & 0x2;
181      int y_multi=(spriteram[offs + 0] >> 11) & 0x3;
188182
189183      if (m_spritesystem == 0)
190184      {
191         y_multi=1 << y_multi; /* 1, 2, 4 or 8 */
185         y_multi = 1 << y_multi; /* 1, 2, 4 or 8 */
192186
193         s_ptr = 0;
194         if (!fy) s_ptr+=y_multi-1;
187         int s_ptr = fy ? 0 : y_multi - 1;
195188
196         for (i=0; i<y_multi; i++)
189         for (int i = 0; i < y_multi; i++)
197190         {
198            m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
199                  sprite + s_ptr,
200                  colour,
201                  fx,fy,
202                  x,y-i*16,
203                  screen.priority(),pri_mask,0);
191            m_gfxdecode->gfx(1)->prio_transpen(bitmap, cliprect, sprite_code + s_ptr, colour, fx, fy, x, y - i * 16, screen.priority(), pri_mask, 0);
192            m_gfxdecode->gfx(1)->prio_transpen(bitmap, cliprect, sprite_code + s_ptr, colour, fx, fy, x, (y - i * 16) - 0x200, screen.priority(), pri_mask, 0); /* wrap-around y */
204193
205            /* wrap-around y */
206            m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
207                  sprite + s_ptr,
208                  colour,
209                  fx,fy,
210                  x,(y-i*16) - 0x200,
211                  screen.priority(),pri_mask,0);
212
213            if (fy) s_ptr++; else s_ptr--;
194            if (fy)
195               s_ptr++;
196            else
197               s_ptr--;
214198         }
215199      }
216200      else
217201      {
218         int rom_offs = sprite*8;
202         int rom_offs = sprite_code * 8;
219203
220         if (rom[rom_offs+1] || rom[rom_offs+3] || rom[rom_offs+5] || rom[rom_offs+7])
204         if (m_user1_ptr[rom_offs + 1] || m_user1_ptr[rom_offs + 3] || m_user1_ptr[rom_offs + 5] || m_user1_ptr[rom_offs + 7])
221205         {
222206            while (rom_offs < 0x40000)  /* safety check */
223207            {
208               UINT8 *sprite = m_user1_ptr + rom_offs;
224209               /*
225210               [1]
226211               x--- ---- end of block marker
r252883r252884
241226               ---- ---x X offs hi byte
242227               */
243228
244               int xdisp = rom[rom_offs+6]+256*rom[rom_offs+7];
245               int ydisp = rom[rom_offs+2]+256*rom[rom_offs+3];
246               int ffx=fx^(rom[rom_offs+1]&1);
247               int ffy=fy^(rom[rom_offs+1]&2);
248               sprite=rom[rom_offs+4]+256*rom[rom_offs+5];
249               y_multi=1<<((rom[rom_offs+3]>>1)&0x3);
250               if (fx) xdisp = -xdisp-16;
251               if (fy) ydisp = -ydisp - (16*y_multi-1);
252               if (!ffy) sprite+=y_multi-1;
253               for (i=0; i<y_multi; i++)
229               int xdisp = (sprite[7] << 8) | sprite[6];
230               int ydisp = (sprite[3] << 8) | sprite[2];
231               int ffx = fx ^ (sprite[1] & 1);
232               int ffy = fy ^ (sprite[1] & 2);
233               sprite_code = (sprite[5] << 8) | sprite[4];
234               y_multi = 1 << ((sprite[3] >> 1) & 0x3);
235               if (fx)
236                  xdisp = -xdisp - 16;
237               if (fy)
238                  ydisp = -ydisp - (16 * y_multi - 1);
239               if (!ffy)
240                  sprite += y_multi - 1;
241
242               for (int i = 0; i < y_multi; i++)
254243               {
255                  m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
256                        sprite+(ffy?i:-i),
257                        colour,
258                        ffx,ffy,
259                        (x+xdisp)&0x1ff,(y-ydisp-16*i)&0x1ff,
260                        screen.priority(),pri_mask,0);
244                  m_gfxdecode->gfx(1)->prio_transpen(bitmap, cliprect, sprite_code + (ffy ? i : -i), colour, ffx, ffy, (x + xdisp) & 0x1ff, (y - ydisp - 16 * i) & 0x1ff, screen.priority(), pri_mask, 0);
261245
262246                  /* wrap-around y */
263                  m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
264                        sprite+(ffy?i:-i),
265                        colour,
266                        ffx,ffy,
267                        (x+xdisp)&0x1ff,((y-ydisp-16*i)&0x1ff)-0x200,
268                        screen.priority(),pri_mask,0);
247                  m_gfxdecode->gfx(1)->prio_transpen(bitmap, cliprect, sprite_code + (ffy ? i : -i), colour, ffx, ffy, (x + xdisp) & 0x1ff, ((y - ydisp - 16 * i) & 0x1ff) - 0x200, screen.priority(), pri_mask, 0);
269248               }
270249
271               if (rom[rom_offs+1]&0x80) break;    /* end of block */
250               if (sprite[1] & 0x80)
251                  break;    /* end of block */
272252
273253               rom_offs += 8;
274254            }
trunk/src/mame/video/nbmj8891.cpp
r252883r252884
480480
481481
482482******************************************************************************/
483VIDEO_START_MEMBER(nbmj8891_state,_1layer)
483VIDEO_START_MEMBER( nbmj8891_state, _1layer )
484484{
485   UINT8 *CLUT = memregion("protection")->base();
486485   int width = m_screen->width();
487486   int height = m_screen->height();
488487
r252883r252884
497496
498497   if (m_nb1413m3->m_nb1413m3_type == NB1413M3_TAIWANMB)
499498   {
500      for (int i = 0; i < 0x0800; i++) m_clut[i] = CLUT[i];
499      if (m_clut_ptr)
500      {
501         for (int i = 0; i < 0x0800; i++)
502         {
503            m_clut[i] = m_clut_ptr[i];
504         }
505      }
501506      save_item(NAME(m_param_cnt));
502507      save_item(NAME(m_param_old));
503508   }
trunk/src/mame/video/st0020.cpp
r252883r252884
1616const device_type ST0020_SPRITES = &device_creator<st0020_device>;
1717
1818st0020_device::st0020_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
19   : device_t(mconfig, ST0020_SPRITES, "Seta ST0020 Sprites", tag, owner, clock, "st0020", __FILE__),
20      m_gfxdecode(*this),
21      m_palette(*this)
19   : device_t(mconfig, ST0020_SPRITES, "Seta ST0020 Sprites", tag, owner, clock, "st0020", __FILE__)
20   , m_gfxdecode(*this)
21   , m_palette(*this)
22   , m_rom_ptr(*this, ":st0020")
2223{
2324   m_is_st0032 = 0;
2425   m_is_jclub2 = 0;
r252883r252884
183184         UINT32 dst  =   (st0020_blitram[0xc4/2] + (st0020_blitram[0xc6/2] << 16)) << 4;
184185         UINT32 len  =   (st0020_blitram[0xc8/2]) << 4;
185186
186         UINT8 *rom  =   memregion(":st0020")->base();
187
188
189         if (!rom)
187         if (!m_rom_ptr)
190188         {
191189            logerror("CPU #0 PC: %06X - Blit out of range: src %x, dst %x, len %x\n",space.device().safe_pc(),src,dst,len);
192190            return;
193191         }
194192
195         size_t size =   memregion(":st0020")->bytes();
193         size_t size =   m_rom_ptr.bytes();
196194
197195         if ( (src+len <= size) && (dst+len <= 4 * 0x100000) )
198196         {
199            memcpy( &m_st0020_gfxram[dst/2], &rom[src], len );
197            memcpy( &m_st0020_gfxram[dst/2], &m_rom_ptr[src], len );
200198
201199            if (len % (16*8))   len = len / (16*8) + 1;
202200            else                len = len / (16*8);
trunk/src/mame/video/st0020.h
r252883r252884
4747   DECLARE_WRITE16_MEMBER(st0020_blit_w);
4848   required_device<gfxdecode_device> m_gfxdecode;
4949   required_device<palette_device> m_palette;
50   optional_region_ptr<UINT8> m_rom_ptr;
5051};
5152
5253#define ST0020_ST0032_BYTESWAP_DATA \


Previous 199869 Revisions Next


© 1997-2024 The MAME Team