Previous 199869 Revisions Next

r29481 Wednesday 9th April, 2014 at 11:22:57 UTC by Fabio Priuli
(MESS) pce_slot.c: nuked some auto_allocs, using dynamic_buffer instead. nw.
(MESS) sega8_slot.c: nuked some auto_allocs, using dynamic_buffer instead. nw.
[src/emu/bus/pce]pce_slot.c pce_slot.h
[src/emu/bus/sega8]rom.c sega8_slot.c sega8_slot.h
[src/emu/bus/snes]snes_slot.c

trunk/src/emu/bus/pce/pce_slot.h
r29480r29481
3030   virtual DECLARE_READ8_MEMBER(read_cart) { return 0xff; }
3131   virtual DECLARE_WRITE8_MEMBER(write_cart) {};
3232
33   void rom_alloc(running_machine &machine, UINT32 size);
34   void ram_alloc(running_machine &machine, UINT32 size);
33   void rom_alloc(UINT32 size);
34   void ram_alloc(UINT32 size);
3535   UINT8* get_rom_base() { return m_rom; }
3636   UINT8* get_ram_base() { return m_ram; }
37   UINT32 get_rom_size() { return m_rom_size; }
38   UINT32 get_ram_size() { return m_ram_size; }
37   UINT32 get_rom_size() { return m_rom.count(); }
38   UINT32 get_ram_size() { return m_ram.count(); }
3939
4040   // internal state
41   UINT8 *m_rom;
42   UINT8 *m_ram;
43   UINT32 m_rom_size;
44   UINT32 m_ram_size;
41   dynamic_buffer m_rom;
42   dynamic_buffer m_ram;
4543
4644   void rom_map_setup(UINT32 size);
4745
trunk/src/emu/bus/pce/pce_slot.c
r29480r29481
2525//-------------------------------------------------
2626
2727device_pce_cart_interface::device_pce_cart_interface(const machine_config &mconfig, device_t &device)
28   : device_slot_card_interface(mconfig, device),
29      m_rom(NULL),
30      m_ram(NULL),
31      m_rom_size(0),
32      m_ram_size(0)
28   : device_slot_card_interface(mconfig, device)
3329{
3430}
3531
r29480r29481
4642//  rom_alloc - alloc the space for the cart
4743//-------------------------------------------------
4844
49void device_pce_cart_interface::rom_alloc(running_machine &machine, UINT32 size)
45void device_pce_cart_interface::rom_alloc(UINT32 size)
5046{
5147   if (m_rom == NULL)
52   {
53      m_rom = auto_alloc_array_clear(machine, UINT8, size);
54      m_rom_size = size;
55   }
48      m_rom.resize(size);
5649}
5750
5851
r29480r29481
6053//  ram_alloc - alloc the space for the ram
6154//-------------------------------------------------
6255
63void device_pce_cart_interface::ram_alloc(running_machine &machine, UINT32 size)
56void device_pce_cart_interface::ram_alloc(UINT32 size)
6457{
6558   if (m_ram == NULL)
6659   {
67      m_ram = auto_alloc_array_clear(machine, UINT8, size);
68      m_ram_size = size;
69      state_save_register_item_pointer(machine, "PCE_CART", this->device().tag(), 0, m_ram, m_ram_size);
60      m_ram.resize(size);
61      device().save_item(NAME(m_ram));
7062   }
7163}
7264
r29480r29481
228220         fseek(offset, SEEK_SET);
229221      }
230222
231      m_cart->rom_alloc(machine(), len);
223      m_cart->rom_alloc(len);
232224      ROM = m_cart->get_rom_base();
233225
234226      if (software_entry() == NULL)
r29480r29481
263255      //printf("Type: %s\n", pce_get_slot(m_type));
264256
265257      if (m_type == PCE_POPULOUS)
266         m_cart->ram_alloc(machine(), 0x8000);
258         m_cart->ram_alloc(0x8000);
267259      if (m_type == PCE_CDSYS3J || m_type == PCE_CDSYS3U)
268         m_cart->ram_alloc(machine(), 0x30000);
260         m_cart->ram_alloc(0x30000);
269261
270262      return IMAGE_INIT_PASS;
271263   }
trunk/src/emu/bus/sega8/sega8_slot.c
r29480r29481
4949
5050device_sega8_cart_interface::device_sega8_cart_interface(const machine_config &mconfig, device_t &device)
5151   : device_slot_card_interface(mconfig, device),
52      m_rom(NULL),
53      m_ram(NULL),
54      m_rom_size(0),
55      m_ram_size(0),
5652      m_rom_page_count(0),
5753      has_battery(FALSE),
5854      m_late_battery_enable(FALSE),
r29480r29481
7470//  rom_alloc - alloc the space for the cart
7571//-------------------------------------------------
7672
77void device_sega8_cart_interface::rom_alloc(running_machine &machine, UINT32 size)
73void device_sega8_cart_interface::rom_alloc(UINT32 size)
7874{
7975   if (m_rom == NULL)
8076   {
81      m_rom = auto_alloc_array_clear(machine, UINT8, size);
82      m_rom_size = size;
77      m_rom.resize(size);
8378      m_rom_page_count = size / 0x4000;
8479      if (!m_rom_page_count)
8580         m_rom_page_count = 1;   // we compute rom pages through (XXX % m_rom_page_count)!
r29480r29481
9287//  ram_alloc - alloc the space for the ram
9388//-------------------------------------------------
9489
95void device_sega8_cart_interface::ram_alloc(running_machine &machine, UINT32 size)
90void device_sega8_cart_interface::ram_alloc(UINT32 size)
9691{
9792   if (m_ram == NULL)
9893   {
99      m_ram = auto_alloc_array_clear(machine, UINT8, size);
100      m_ram_size = size;
101      state_save_register_item_pointer(machine, "SEGA8_CART", this->device().tag(), 0, m_ram, m_ram_size);
94      m_ram.resize(size);
95      device().save_item(NAME(m_ram));
10296   }
10397}
10498
r29480r29481
284278   {
285279      if (m_type == SEGA8_CASTLE)
286280      {
287         m_cart->ram_alloc(machine(), 0x2000);
281         m_cart->ram_alloc(0x2000);
288282         m_cart->set_has_battery(FALSE);
289283      }
290284      else if (m_type == SEGA8_OTHELLO)
291285      {
292         m_cart->ram_alloc(machine(), 0x800);
286         m_cart->ram_alloc(0x800);
293287         m_cart->set_has_battery(FALSE);
294288      }
295289      else if (m_type == SEGA8_BASIC_L3)
296290      {
297         m_cart->ram_alloc(machine(), 0x8000);
291         m_cart->ram_alloc(0x8000);
298292         m_cart->set_has_battery(FALSE);
299293      }
300294      else if (m_type == SEGA8_MUSIC_EDITOR)
301295      {
302         m_cart->ram_alloc(machine(), 0x2800);
296         m_cart->ram_alloc(0x2800);
303297         m_cart->set_has_battery(FALSE);
304298      }
305299      else if (m_type == SEGA8_DAHJEE_TYPEA)
306300      {
307         m_cart->ram_alloc(machine(), 0x2400);
301         m_cart->ram_alloc(0x2400);
308302         m_cart->set_has_battery(FALSE);
309303      }
310304      else if (m_type == SEGA8_DAHJEE_TYPEB)
311305      {
312         m_cart->ram_alloc(machine(), 0x2000);
306         m_cart->ram_alloc(0x2000);
313307         m_cart->set_has_battery(FALSE);
314308      }
315309      else if (m_type == SEGA8_CODEMASTERS)
316310      {
317311         // Codemasters cart can have 64KB of RAM (Ernie Els Golf? or 8KB?) and no battery
318         m_cart->ram_alloc(machine(), 0x10000);
312         m_cart->ram_alloc(0x10000);
319313         m_cart->set_has_battery(FALSE);
320314      }
321315      else
r29480r29481
324318         // how much RAM was in the cart and if there was a battery so we always alloc 32KB and
325319         // we save its content only if the game enable the RAM
326320         m_cart->set_late_battery(TRUE);
327         m_cart->ram_alloc(machine(), 0x08000);
321         m_cart->ram_alloc(0x08000);
328322      }
329323   }
330324   else
r29480r29481
334328      m_cart->set_late_battery(FALSE);
335329
336330      if (get_software_region_length("ram"))
337         m_cart->ram_alloc(machine(), get_software_region_length("ram"));
331         m_cart->ram_alloc(get_software_region_length("ram"));
338332
339333      if (battery && !strcmp(battery, "yes"))
340334         m_cart->set_has_battery(TRUE);
r29480r29481
366360      if (len & 0x3fff)
367361         len = ((len >> 14) + 1) << 14;
368362
369      m_cart->rom_alloc(machine(), len);
363      m_cart->rom_alloc(len);
370364      ROM = m_cart->get_rom_base();
371365
372366      if (software_entry() == NULL)
trunk/src/emu/bus/sega8/rom.c
r29480r29481
329329   int bank = offset / 0x4000;
330330
331331   if (bank == 2 && m_ram && m_ram_enabled)
332      return m_ram[(m_ram_base * 0x4000 + (offset & 0x3fff)) % m_ram_size];
332      return m_ram[(m_ram_base * 0x4000 + (offset & 0x3fff)) % m_ram.count()];
333333
334334   if (offset < 0x400) // first 1k is hardcoded
335335      return m_rom[offset];
r29480r29481
342342   int bank = offset / 0x4000;
343343
344344   if (bank == 2 && m_ram && m_ram_enabled)
345      m_ram[(m_ram_base * 0x4000 + (offset & 0x3fff)) % m_ram_size] = data;
345      m_ram[(m_ram_base * 0x4000 + (offset & 0x3fff)) % m_ram.count()] = data;
346346}
347347
348348WRITE8_MEMBER(sega8_rom_device::write_mapper)
r29480r29481
422422   if (offset >= 0x8000 && offset < 0xa000)
423423      return m_ram[offset & 0x7ff];
424424
425   return m_rom[offset % m_rom_size];
425   return m_rom[offset % m_rom.count()];
426426}
427427
428428WRITE8_MEMBER(sega8_othello_device::write_cart)
r29480r29481
446446   if (offset >= 0x8000 && offset < 0xa000)
447447      return m_ram[offset & 0x1fff];
448448
449   return m_rom[offset % m_rom_size];
449   return m_rom[offset % m_rom.count()];
450450}
451451
452452WRITE8_MEMBER(sega8_castle_device::write_cart)
r29480r29481
470470   if (offset >= 0x8000)
471471      return m_ram[offset & 0x3fff];
472472
473   return m_rom[offset % m_rom_size];
473   return m_rom[offset % m_rom.count()];
474474}
475475
476476WRITE8_MEMBER(sega8_basic_l3_device::write_cart)
r29480r29481
504504   if (offset >= 0x8000 && offset < 0xa000)
505505      return m_ram[offset & 0x1fff];
506506
507   return m_rom[offset % m_rom_size];
507   return m_rom[offset % m_rom.count()];
508508}
509509
510510WRITE8_MEMBER(sega8_music_editor_device::write_cart)
r29480r29481
623623   if (offset >= 0x2000 && offset < 0x4000)
624624      return m_ram[offset & 0x1fff];
625625
626   return m_rom[offset % m_rom_size];
626   return m_rom[offset % m_rom.count()];
627627}
628628
629629WRITE8_MEMBER(sega8_dahjee_typea_device::write_cart)
r29480r29481
651651// TYPE B
652652READ8_MEMBER(sega8_dahjee_typeb_device::read_cart)
653653{
654   return m_rom[offset % m_rom_size];
654   return m_rom[offset % m_rom.count()];
655655}
656656
657657READ8_MEMBER(sega8_dahjee_typeb_device::read_ram)
r29480r29481
750750   int bank = offset / 0x2000;
751751
752752   if (bank == 5 && m_ram && m_ram_enabled)
753      return m_ram[(m_ram_base * 0x2000 + (offset & 0x1fff)) % m_ram_size];
753      return m_ram[(m_ram_base * 0x2000 + (offset & 0x1fff)) % m_ram.count()];
754754
755755   return m_rom[m_rom_bank_base[bank/2] * 0x4000 + (offset & 0x3fff)];
756756}
r29480r29481
782782   }
783783
784784   if (bank == 5 && m_ram && m_ram_enabled)
785      m_ram[(m_ram_base * 0x2000 + (offset & 0x1fff)) % m_ram_size] = data;
785      m_ram[(m_ram_base * 0x2000 + (offset & 0x1fff)) % m_ram.count()] = data;
786786}
787787
788788/*-------------------------------------------------
r29480r29481
824824   int bank = offset / 0x2000;
825825
826826   if (bank >= 4 && m_ram && m_ram_enabled)
827      return m_ram[(m_ram_base * 0x2000 + (offset & 0x1fff)) % m_ram_size];
827      return m_ram[(m_ram_base * 0x2000 + (offset & 0x1fff)) % m_ram.count()];
828828
829829   return m_rom[m_rom_bank_base[bank] * 0x2000 + (offset & 0x1fff)];
830830}
r29480r29481
834834   int bank = offset / 0x2000;
835835
836836   if (bank >= 4 && m_ram && m_ram_enabled)
837      m_ram[(m_ram_base * 0x2000 + (offset & 0x1fff)) % m_ram_size] = data;
837      m_ram[(m_ram_base * 0x2000 + (offset & 0x1fff)) % m_ram.count()] = data;
838838
839839   if (offset < 4)
840840   {
trunk/src/emu/bus/sega8/sega8_slot.h
r29480r29481
4949   virtual DECLARE_READ8_MEMBER(read_ram) { return 0xff; }
5050   virtual DECLARE_WRITE8_MEMBER(write_ram) {}
5151
52   void rom_alloc(running_machine &machine, UINT32 size);
53   void ram_alloc(running_machine &machine, UINT32 size);
52   void rom_alloc(UINT32 size);
53   void ram_alloc(UINT32 size);
5454
5555   virtual void late_bank_setup() {}
5656
r29480r29481
6666//protected:
6767   UINT8* get_rom_base() { return m_rom; }
6868   UINT8* get_ram_base() { return m_ram; }
69   UINT32 get_rom_size() { return m_rom_size; }
70   UINT32 get_ram_size() { return m_ram_size; }
69   UINT32 get_rom_size() { return m_rom.count(); }
70   UINT32 get_ram_size() { return m_ram.count(); }
7171
7272   void rom_map_setup(UINT32 size);
7373   void ram_map_setup(UINT8 banks);
7474
7575//private:
7676   // internal state
77   UINT8  *m_rom;
78   UINT8  *m_ram;
79   UINT32 m_rom_size;
80   UINT32 m_ram_size;
77   dynamic_buffer m_rom;
78   dynamic_buffer m_ram;
8179   int m_rom_page_count;
8280
8381   bool has_battery;
trunk/src/emu/bus/snes/snes_slot.c
r29480r29481
8686
8787void device_sns_cart_interface::rom_alloc(UINT32 size)
8888{
89   m_rom.resize(size);
89   if (m_rom == NULL)
90      m_rom.resize(size);
9091}
9192
9293
r29480r29481
128129
129130void device_sns_cart_interface::addon_bios_alloc(UINT32 size)
130131{
131   m_bios.resize(size);
132   if (m_bios == NULL)
133      m_bios.resize(size);
132134}
133135
134136

Previous 199869 Revisions Next


© 1997-2024 The MAME Team