Previous 199869 Revisions Next

r33613 Monday 1st December, 2014 at 18:11:30 UTC by David Haywood
there are a lot of drivers where we do excessive ROM_RELOAD in the rom structure, or memcpy in the init (or at runtime) where using OKI memory maps is a lot cleaner, this deals with 'relief.c' (nw)
[src/mame/drivers]relief.c
[src/mame/includes]relief.h

trunk/src/mame/drivers/relief.c
r242124r242125
5050{
5151   atarigen_state::machine_reset();
5252
53   m_oki->set_bank_base(0);
53   m_adpcm_bank = 0;
54   m_okibank->set_entry(m_adpcm_bank);
5455   m_ym2413_volume = 15;
5556   m_overall_volume = 127;
56   m_adpcm_bank_base = 0;
5757}
5858
5959
r242124r242125
8585   {
8686      m_ym2413_volume = (data >> 1) & 15;
8787      set_ym2413_volume((m_ym2413_volume * m_overall_volume * 100) / (127 * 15));
88      m_adpcm_bank_base = (0x040000 * ((data >> 6) & 3)) | (m_adpcm_bank_base & 0x100000);
88      m_adpcm_bank = ((data >> 6) & 3) | (m_adpcm_bank & 4);
8989   }
9090   if (ACCESSING_BITS_8_15)
91      m_adpcm_bank_base = (0x100000 * ((data >> 8) & 1)) | (m_adpcm_bank_base & 0x0c0000);
91      m_adpcm_bank = (((data >> 8) & 1)<<2) | (m_adpcm_bank & 3);
9292
93   m_oki->set_bank_base(m_adpcm_bank_base);
93   m_okibank->set_entry(m_adpcm_bank);
9494}
9595
9696
r242124r242125
104104   }
105105}
106106
107static ADDRESS_MAP_START( oki_map, AS_0, 8, relief_state )
108   AM_RANGE(0x00000, 0x1ffff) AM_ROMBANK("okibank")
109   AM_RANGE(0x20000, 0x3ffff) AM_ROM
110ADDRESS_MAP_END
107111
108112
109113/*************************************
r242124r242125
295299
296300   MCFG_OKIM6295_ADD("oki", ATARI_CLOCK_14MHz/4/3, OKIM6295_PIN7_LOW)
297301   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
302   MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map)
298303
299304   MCFG_SOUND_ADD("ymsnd", YM2413, ATARI_CLOCK_14MHz/4)
300305   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
r242124r242125
324329   ROM_LOAD( "136093-0028a.10d",       0x180000, 0x80000, CRC(55fb9111) SHA1(a95508f0831842fa79ca2fc168cfadc8c6d3fbd4) )
325330   ROM_LOAD16_BYTE( "136093-0029a.4d", 0x200001, 0x40000, CRC(e4593ff4) SHA1(7360ec7a65aabc90aa787dc30f39992e342495dd) )
326331
327   ROM_REGION( 0x200000, "oki", 0 )    /* 2MB for ADPCM data */
328   ROM_LOAD( "136093-0030a.9b",  0x100000, 0x80000, CRC(f4c567f5) SHA1(7e8c1d54d918b0b41625eacbaf6dcb5bd99d1949) )
329   ROM_LOAD( "136093-0031a.10b", 0x180000, 0x80000, CRC(ba908d73) SHA1(a83afd86f4c39394cf624b728a87b8d8b6de1944) )
332   ROM_REGION( 0x100000, "oki", 0 )    /* 2MB for ADPCM data */
333   ROM_LOAD( "136093-0030a.9b",  0x000000, 0x80000, CRC(f4c567f5) SHA1(7e8c1d54d918b0b41625eacbaf6dcb5bd99d1949) )
334   ROM_LOAD( "136093-0031a.10b", 0x080000, 0x80000, CRC(ba908d73) SHA1(a83afd86f4c39394cf624b728a87b8d8b6de1944) )
330335
331336   ROM_REGION( 0x800, "eeprom:eeprom", 0 )
332337   ROM_LOAD( "relief-eeprom.bin", 0x0000, 0x800, CRC(66069f60) SHA1(fac3797888f7ffe972f642aca44c6ca7d208c814) )
r242124r242125
359364   ROM_LOAD( "136093-0028a.10d",      0x180000, 0x80000, CRC(55fb9111) SHA1(a95508f0831842fa79ca2fc168cfadc8c6d3fbd4) )
360365   ROM_LOAD16_BYTE( "136093-0029.4d", 0x200001, 0x40000, CRC(e4593ff4) SHA1(7360ec7a65aabc90aa787dc30f39992e342495dd) )
361366
362   ROM_REGION( 0x200000, "oki", 0 )    /* 2MB for ADPCM data */
363   ROM_LOAD( "136093-0030a.9b",  0x100000, 0x80000, CRC(f4c567f5) SHA1(7e8c1d54d918b0b41625eacbaf6dcb5bd99d1949) )
364   ROM_LOAD( "136093-0031a.10b", 0x180000, 0x80000, CRC(ba908d73) SHA1(a83afd86f4c39394cf624b728a87b8d8b6de1944) )
367   ROM_REGION( 0x100000, "oki", 0 )    /* 2MB for ADPCM data */
368   ROM_LOAD( "136093-0030a.9b",  0x000000, 0x80000, CRC(f4c567f5) SHA1(7e8c1d54d918b0b41625eacbaf6dcb5bd99d1949) )
369   ROM_LOAD( "136093-0031a.10b", 0x080000, 0x80000, CRC(ba908d73) SHA1(a83afd86f4c39394cf624b728a87b8d8b6de1944) )
365370
366371   ROM_REGION( 0x800, "eeprom:eeprom", 0 )
367372   ROM_LOAD( "relief2-eeprom.bin", 0x0000, 0x800, CRC(2131fc40) SHA1(72a9f5f6647fbc74e645b6639db2fdbfbe6456e2) )
r242124r242125
393398   ROM_LOAD( "136093-0028a.10d",      0x180000, 0x80000, CRC(55fb9111) SHA1(a95508f0831842fa79ca2fc168cfadc8c6d3fbd4) )
394399   ROM_LOAD16_BYTE( "136093-0029.4d", 0x200001, 0x40000, CRC(e4593ff4) SHA1(7360ec7a65aabc90aa787dc30f39992e342495dd) )
395400
396   ROM_REGION( 0x200000, "oki", 0 )    /* 2MB for ADPCM data */
397   ROM_LOAD( "136093-0030a.9b",  0x100000, 0x80000, CRC(f4c567f5) SHA1(7e8c1d54d918b0b41625eacbaf6dcb5bd99d1949) )
398   ROM_LOAD( "136093-0031a.10b", 0x180000, 0x80000, CRC(ba908d73) SHA1(a83afd86f4c39394cf624b728a87b8d8b6de1944) )
401   ROM_REGION( 0x100000, "oki", 0 )    /* 2MB for ADPCM data */
402   ROM_LOAD( "136093-0030a.9b",  0x000000, 0x80000, CRC(f4c567f5) SHA1(7e8c1d54d918b0b41625eacbaf6dcb5bd99d1949) )
403   ROM_LOAD( "136093-0031a.10b", 0x080000, 0x80000, CRC(ba908d73) SHA1(a83afd86f4c39394cf624b728a87b8d8b6de1944) )
399404
400405   ROM_REGION( 0x800, "eeprom:eeprom", 0 )
401406   ROM_LOAD( "relief3-eeprom.bin", 0x0000, 0x800, CRC(2131fc40) SHA1(72a9f5f6647fbc74e645b6639db2fdbfbe6456e2) )
r242124r242125
421426
422427DRIVER_INIT_MEMBER(relief_state,relief)
423428{
424   UINT8 *sound_base = memregion("oki")->base();
425
426   /* expand the ADPCM data to avoid lots of memcpy's during gameplay */
427   /* the upper 128k is fixed, the lower 128k is bankswitched */
428   memcpy(&sound_base[0x000000], &sound_base[0x100000], 0x20000);
429   memcpy(&sound_base[0x040000], &sound_base[0x100000], 0x20000);
430   memcpy(&sound_base[0x080000], &sound_base[0x140000], 0x20000);
431   memcpy(&sound_base[0x0c0000], &sound_base[0x160000], 0x20000);
432   memcpy(&sound_base[0x100000], &sound_base[0x180000], 0x20000);
433   memcpy(&sound_base[0x140000], &sound_base[0x1a0000], 0x20000);
434   memcpy(&sound_base[0x180000], &sound_base[0x1c0000], 0x20000);
435   memcpy(&sound_base[0x1c0000], &sound_base[0x1e0000], 0x20000);
436
437   memcpy(&sound_base[0x020000], &sound_base[0x120000], 0x20000);
438   memcpy(&sound_base[0x060000], &sound_base[0x120000], 0x20000);
439   memcpy(&sound_base[0x0a0000], &sound_base[0x120000], 0x20000);
440   memcpy(&sound_base[0x0e0000], &sound_base[0x120000], 0x20000);
441   memcpy(&sound_base[0x160000], &sound_base[0x120000], 0x20000);
442   memcpy(&sound_base[0x1a0000], &sound_base[0x120000], 0x20000);
443   memcpy(&sound_base[0x1e0000], &sound_base[0x120000], 0x20000);
429   m_okibank->configure_entries(0, 8, memregion("oki")->base(), 0x20000);
430   m_okibank->set_entry(0);
444431}
445432
446433
434     
447435
448436/*************************************
449437 *
trunk/src/mame/includes/relief.h
r242124r242125
1414public:
1515   relief_state(const machine_config &mconfig, device_type type, const char *tag)
1616      : atarigen_state(mconfig, type, tag),
17         m_vad(*this, "vad") { }
17         m_vad(*this, "vad"),
18         m_okibank(*this, "okibank")
19         { }
1820
1921   required_device<atari_vad_device> m_vad;
22   required_memory_bank m_okibank;
2023
2124   UINT8           m_ym2413_volume;
2225   UINT8           m_overall_volume;
23   UINT32          m_adpcm_bank_base;
26   UINT8          m_adpcm_bank;
2427   virtual void update_interrupts();
2528   DECLARE_READ16_MEMBER(special_port2_r);
2629   DECLARE_WRITE16_MEMBER(audio_control_w);


Previous 199869 Revisions Next


© 1997-2024 The MAME Team