Previous 199869 Revisions Next

r33035 Tuesday 28th October, 2014 at 08:57:18 UTC by Miodrag Milanović
Merge pull request #22 from Jonimoose/ti85

ti85: use direct update handler to remove boot memory mapping hacks

out of whatsnew:
This allows the flash calculators to properly reset pc to 0x0000 instead
of 0x8000 and properly reset all memory banks to page 0x00.

This is based on some example code Judge. Possibly performance improvement could be gained by having the callback unregister itself and register on reset.
[hash]pet_cass.xml vreader.xml
[src/emu/bus/ecbbus]grip.c
[src/emu/cpu/i386]i386.c
[src/mame]mame.lst
[src/mame/drivers]cps1.c funworld.c naomi.c
[src/mame/includes]konamigx.h
[src/mame/video]konamigx.c
[src/mess/machine]coco.c

trunk/hash/pet_cass.xml
r241546r241547
7777      <publisher>Avalon Hill</publisher>
7878      <part name="cass" interface="cbm_cass">
7979         <dataarea name="cass" size="10001002">
80            <rom name="Bomber Attack (1982)(avalon hill).wav" size="10001002" crc="4ff57e9c" sha1="b795a4d8c2f7891088ee6cf7147d785948d7b887" offset="0" />
80            <rom name="bomber attack (1982)(avalon hill).wav" size="10001002" crc="4ff57e9c" sha1="b795a4d8c2f7891088ee6cf7147d785948d7b887" offset="0" />
8181         </dataarea>
8282      </part>
8383   </software>
trunk/hash/vreader.xml
r241546r241547
4747
4848
4949-->
50</softwarelist>
No newline at end of file
trunk/src/emu/bus/ecbbus/grip.c
r241546r241547
681681{
682682   m_base = m_j7->read();
683683   m_page = 0;
684   m_lps = 0;
684685}
685686
686687
trunk/src/emu/cpu/i386/i386.c
r241546r241547
17271727               logerror("CALL: TSS: TSS is busy.\n");
17281728               FAULT(FAULT_TS,selector & ~0x03) // #TS(selector)
17291729            }
1730            if(desc.flags & 0x0080)
1730            if((desc.flags & 0x0080) == 0)
17311731            {
1732               logerror("CALL: TSS: Segment is not present.\n");
1732               logerror("CALL: TSS: Segment %02x is not present.\n",selector);
17331733               FAULT(FAULT_NP,selector & ~0x03) // #NP(selector)
17341734            }
17351735            if(desc.flags & 0x08)
r241546r241547
19771977               logerror("CALL: Task Gate: Gate DPL is less than RPL.\n");
19781978               FAULT(FAULT_TS,selector & ~0x03) // #TS(selector)
19791979            }
1980            if(gate.ar & 0x0080)
1980            if((gate.ar & 0x0080) == 0)
19811981            {
19821982               logerror("CALL: Task Gate: Gate is not present.\n");
19831983               FAULT(FAULT_NP,selector & ~0x03) // #NP(selector)
r241546r241547
20032003               logerror("CALL: Task Gate: TSS is busy.\n");
20042004               FAULT(FAULT_TS,gate.selector & ~0x03) // #TS(selector)
20052005            }
2006            if(desc.flags & 0x0080)
2006            if((desc.flags & 0x0080) == 0)
20072007            {
20082008               logerror("CALL: Task Gate: TSS is not present.\n");
20092009               FAULT(FAULT_NP,gate.selector & ~0x03) // #TS(selector)
trunk/src/mame/drivers/cps1.c
r241546r241547
40024002   ROM_LOAD( "sou1",         0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
40034003
40044004   ROM_REGION( 0x0200, "bboardplds", 0 )
4005   ROM_LOAD( "sth63b.1a",    0x0000, 0x0117, NO_DUMP )
4005   ROM_LOAD( "sth63b.1a",    0x0000, 0x0117, BAD_DUMP CRC(c706b773) SHA1(ddfe2e747637eec081a5125cfefcb478a4ba9e76) ) /* Handcrafted but works on actual PCB.  Redump needed */
40064006   ROM_LOAD( "iob1.12d",     0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
40074007   ROM_LOAD( "bprg1.11d",    0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
40084008
r241546r241547
44834483   ROM_LOAD( "sou1",         0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
44844484
44854485   ROM_REGION( 0x0200, "bboardplds", 0 )
4486   ROM_LOAD( "ara63b.1a",    0x0000, 0x0117, NO_DUMP )
4486   ROM_LOAD( "ara63b.1a",    0x0000, 0x0117, BAD_DUMP CRC(f5569c93) SHA1(7db7cf23639036590eef1e5e309f08560859efaf) ) /* Handcrafted but works on actual PCB.  Redump needed */
44874487   ROM_LOAD( "iob1.12d",     0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
44884488   ROM_LOAD( "bprg1.11d",    0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
44894489
trunk/src/mame/drivers/funworld.c
r241546r241547
63526352   }
63536353
63546354   j = 1;
6355   i = 0x81;
63556356
6356   for (i = 0x81; i < (0x81 + ARRAY_LENGTH(rcdino4_keys80));)
6357   do
63576358   {
63586359      UINT8 key;
63596360
r241546r241547
64186419      while (j < 0x100);
64196420
64206421      j &= 0xff;
6421      do {
6422         assert((i+1 - 0x81) >= 0 && (i+1 - 0x81) < ARRAY_LENGTH(rcdino4_keys80));
6423      } while (!rcdino4_keys80[++i - 0x81]);
64246422
6423      do {} while (((++i - 0x81) < ARRAY_LENGTH(rcdino4_keys80))
6424            && !rcdino4_keys80[i - 0x81]);
6425
6426      if ((i - 0x81) == ARRAY_LENGTH(rcdino4_keys80))
6427      {
6428         break;
6429      }
6430
64256431      if ((i == 0xa4)
64266432         || (i == 0xb0)
64276433         || (i == 0xf8)
r241546r241547
64306436         j = 0; /* re-align offset after skipping some pages */
64316437      }
64326438   }
6439   while (1);
64336440}
64346441
64356442DRIVER_INIT_MEMBER(funworld_state, rcdinch)
trunk/src/mame/drivers/naomi.c
r241546r241547
493493Capcom Vs. SNK Millennium Fight 2000            841-0011C  23511    7 (128Mb)  315-6219   present   317-5059-COM  (000802)
494494Capcom Vs. SNK Millennium Fight 2000 (Rev A)    841-0011C  23511A   7 (128Mb)  315-6219   present   317-5059-COM  (000804)
495495Capcom Vs. SNK Millennium Fight 2000 (Rev C)    841-0011C  23511C   7 (128Mb)  315-6319   present   317-5059-COM  (000904)
496Club Kart: European Session                     840-0062C  23704   11 (128Mb)  315-6319A  present   317-0313-COM
497Club Kart: European Session (Rev D)             840-0062C  21473D  11 (128Mb)  315-6319A  present   317-0313-COM
496Club Kart: European Session (Rev E)             840-0062C  23704E  11 (128Mb)  315-6319A  present   317-0313-COM
497Club Kart: European Session (Rev D)             840-0062C  23704D  11 (128Mb)  315-6319A  present   317-0313-COM
498Club Kart: European Session (Rev C)             840-0062C  23704C  11 (128Mb)  315-6319A  present   317-0313-COM
498499Crackin' DJ                                     840-0043C  23450D  10 (128Mb)  315-6319   present   ?
499500Derby Owners Club II (Rev B)                    840-0083C  22306B  11 (128Mb)  315-6319A  present   not present
500501Derby Owners Club World Edition (Rev C)         840-0088C  22336C   7 (128Mb)  315-6319A  present   not present
r241546r241547
79177918   NAOMI_DEFAULT_EEPROM
79187919
79197920   ROM_REGION( 0xb800000, "rom_board", ROMREGION_ERASEFF)
7920   ROM_LOAD( "epr-21473d.ic22",0x0000000, 0x0400000, CRC(60ac770c) SHA1(2f1688f2046e794d1c1e06912b46c1573d934608) )
7921   ROM_LOAD( "epr-23704d.ic22",0x0000000, 0x0400000, CRC(60ac770c) SHA1(2f1688f2046e794d1c1e06912b46c1573d934608) )
79217922   ROM_LOAD( "mpr-23693.ic1",  0x0800000, 0x1000000, CRC(28995764) SHA1(a1457f9935dde2e5aaa5ef245c736c0f2f8c74b7) )
79227923   ROM_LOAD( "mpr-23694.ic2",  0x1800000, 0x1000000, CRC(37d30111) SHA1(4c07df8cd548cac79d48709e61f692d762471f8f) )
79237924   ROM_LOAD( "mpr-23695.ic3",  0x2800000, 0x1000000, CRC(41ac1510) SHA1(01b889b627fdfc1f12a0c84fcc36debdfb1cf377) )
r241546r241547
79347935   ROM_LOAD( "clubkrte-key.bin", 0, 4, CRC(db426a5d) SHA1(6a6a0b80ec0416605541159efea379dc19fe796d) )
79357936ROM_END
79367937
7938ROM_START( clubkrtc )
7939   NAOMI2_BIOS
7940   NAOMI_DEFAULT_EEPROM
7941
7942   ROM_REGION( 0xb800000, "rom_board", ROMREGION_ERASEFF)
7943   ROM_LOAD( "epr-23704c.ic22",0x0000000, 0x0400000, CRC(45ea13c3) SHA1(48cddba0506010dc705f04457f784a1d455ef3a6) )
7944   ROM_LOAD( "mpr-23693.ic1",  0x0800000, 0x1000000, CRC(28995764) SHA1(a1457f9935dde2e5aaa5ef245c736c0f2f8c74b7) )
7945   ROM_LOAD( "mpr-23694.ic2",  0x1800000, 0x1000000, CRC(37d30111) SHA1(4c07df8cd548cac79d48709e61f692d762471f8f) )
7946   ROM_LOAD( "mpr-23695.ic3",  0x2800000, 0x1000000, CRC(41ac1510) SHA1(01b889b627fdfc1f12a0c84fcc36debdfb1cf377) )
7947   ROM_LOAD( "mpr-23696.ic4",  0x3800000, 0x1000000, CRC(6f2da455) SHA1(b655757bc513398820bfeae07dca8a4f3ea9752c) )
7948   ROM_LOAD( "mpr-23697.ic5",  0x4800000, 0x1000000, CRC(1383c742) SHA1(6efd17632a277a4bb0e47cc912fbc9865a8b14c3) )
7949   ROM_LOAD( "mpr-23698.ic6",  0x5800000, 0x1000000, CRC(da79cd06) SHA1(fdfe068caca1eb764dec28ab327e56b39144f3ae) )
7950   ROM_LOAD( "mpr-23699.ic7",  0x6800000, 0x1000000, CRC(ea77f000) SHA1(35aa8ee804d9429e72f516137a3b06c585a57b6d) )
7951   ROM_LOAD( "mpr-23700.ic8",  0x7800000, 0x1000000, CRC(db9e5c1d) SHA1(db918c0fa1860f4345806e574d44354aba5fcd54) )
7952   ROM_LOAD( "mpr-23701.ic9",  0x8800000, 0x1000000, CRC(0fa92fd7) SHA1(67a1cf085101884a17a4783d0d509ab198aa6425) )
7953   ROM_LOAD( "mpr-23702.ic10", 0x9800000, 0x1000000, CRC(e302b582) SHA1(787192ed9f9a08541eecc3128855485cad802a42) )
7954   ROM_LOAD( "mpr-23703.ic11", 0xa800000, 0x1000000, CRC(702b8b4a) SHA1(3a8dfde458f341e7db20664382b9fce2b6e5d462) )
7955
7956   ROM_REGION( 4, "rom_key", 0 )
7957   ROM_LOAD( "clubkrte-key.bin", 0, 4, CRC(db426a5d) SHA1(6a6a0b80ec0416605541159efea379dc19fe796d) )
7958ROM_END
7959
79377960ROM_START( clubkprz )
79387961   NAOMI2_BIOS
79397962   NAOMI_DEFAULT_EEPROM
r241546r241547
89298952/* 0046 */ GAME( 2001, wldrider, naomi2,  naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Wild Riders (JPN, USA, EXP, KOR, AUS)", GAME_FLAGS )
89308953/* 0061 */ GAME( 2001, vstrik3c, naomi2,  naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Virtua Striker 3 (USA, EXP, KOR, AUS) (Cart, Rev C)", GAME_FLAGS )
89318954/* 0061 */ GAME( 2001, vstrik3cb,vstrik3c,naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Virtua Striker 3 (USA, EXP, KOR, AUS) (Cart, Rev B)", GAME_FLAGS )
8932/* 0062 */ GAME( 2001, clubkrte, naomi2,  naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Club Kart: European Session", GAME_FLAGS )
8955/* 0062 */ GAME( 2001, clubkrte, naomi2,  naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Club Kart: European Session (Rev E)", GAME_FLAGS )
89338956/* 0062 */ GAME( 2001, clubkrtd, clubkrte,naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Club Kart: European Session (Rev D)", GAME_FLAGS )
8957/* 0062 */ GAME( 2001, clubkrtc, clubkrte,naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Club Kart: European Session (Rev C)", GAME_FLAGS )
89348958/* 0080 */ GAME( 2002, vf4cart,  naomi2,  naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Virtua Fighter 4 (Cartridge)", GAME_FLAGS )
89358959/* 0087 */ GAME( 2002, kingrt66, naomi2,  naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "King of Route 66 (Rev A)", GAME_FLAGS )
89368960/* 0095 */ GAME( 2002, soulsurf, naomi2,  naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Soul Surfer (Rev A)", GAME_FLAGS )
trunk/src/mame/includes/konamigx.h
r241546r241547
199199   
200200   UINT16 m_prot_data[0x20];
201201   
202   UINT16 *m_gx_spriteram;
203   
204   // mirrored K054338 settings
205   int *m_K054338_shdRGB;
206   
202207   // 1st-Tier GX/MW Variables
203208   // frequently used registers
204209   int m_k053247_vrcbk[4];
r241546r241547
236241       unsupported flipping modes (probably due to the way it's hooked up to the
237242       rest of the chips) which is causing entirely the wrong output.
238243
239    -- furthermore video/konamigx.c contains it's own implementation of
240       the K053936_zoom_draw named K053936GP_zoom_draw ...
244    -- furthermore video\k053936.c contains an implementation of
245       the K053936_zoom_draw named K053936GP_zoom_draw that's only used in konamigx ...
241246
242247
243248    */
244249   bitmap_ind16 *m_gxtype1_roz_dstbitmap;
245250   bitmap_ind16 *m_gxtype1_roz_dstbitmap2;
246251   rectangle m_gxtype1_roz_dstbitmapclip;
252   
253   int m_konamigx_type3_psac2_actual_bank;
254   //int m_konamigx_type3_psac2_actual_last_bank = 0;
247255};
248256
249257// Sprite Callbacks
trunk/src/mame/mame.lst
r241546r241547
54745474vstrik3cb       // 2001.04 Virtua Striker 3 (Rev B) (cartridge)
54755475vstrik3c        // 2001.04 Virtua Striker 3 (Rev C) (cartridge)
54765476wldrider        // 2001.05 Wild Riders
5477clubkrte        // 2001.06 Club Kart: European Session
5477clubkrte        // 2001.06 Club Kart: European Session (Rev E)
54785478clubkrtd        // 2001.06 Club Kart: European Session (Rev D)
5479clubkrtc        // 2001.?? Club Kart: European Session (Rev C)
54795480beachspi        // 2001.07 Beach Spikers
54805481vf4cart         // 2001.08.02 Virtua Fighter 4 (cartridge)
54815482vf4             // 2001.08.02 Virtua Fighter 4 (GD-ROM)
trunk/src/mame/video/konamigx.c
r241546r241547
276276#define GX_MAX_OBJECTS (GX_MAX_SPRITES + GX_MAX_LAYERS)
277277
278278static struct GX_OBJ { int order, offs, code, color; } *gx_objpool;
279static UINT16 *gx_spriteram;
280279
281// mirrored K054338 settings
282static int *K054338_shdRGB;
283
284
285280void konamigx_state::konamigx_mixer_init(screen_device &screen, int objdma)
286281{
287282   m_gx_objdma = 0;
r241546r241547
291286   m_gx_shdzbuf = auto_alloc_array(machine(), UINT8, GX_ZBUFSIZE);
292287   gx_objpool = auto_alloc_array(machine(), struct GX_OBJ, GX_MAX_OBJECTS);
293288
294   m_k054338->export_config(&K054338_shdRGB);
289   m_k054338->export_config(&m_K054338_shdRGB);
295290
296291   if (objdma)
297292   {
298      gx_spriteram = auto_alloc_array(machine(), UINT16, 0x1000/2);
293      m_gx_spriteram = auto_alloc_array(machine(), UINT16, 0x1000/2);
299294      m_gx_objdma = 1;
300295   }
301296   else
302      m_k055673->k053247_get_ram(&gx_spriteram);
297      m_k055673->k053247_get_ram(&m_gx_spriteram);
303298
304299   m_palette->set_shadow_dRGB32(3,-80,-80,-80, 0);
305300   m_k054338->invert_alpha(1);
r241546r241547
315310   UINT16* k053247_ram;
316311   m_k055673->k053247_get_ram(&k053247_ram);
317312
318   if (m_gx_objdma && gx_spriteram && k053247_ram) memcpy(gx_spriteram, k053247_ram, 0x1000);
313   if (m_gx_objdma && m_gx_spriteram && k053247_ram) memcpy(m_gx_spriteram, k053247_ram, 0x1000);
319314}
320315
321316void konamigx_state::konamigx_mixer(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect,
r241546r241547
416411      // only enable shadows beyond a +/-7 RGB threshold
417412      for (j=0,i=0; i<3; j+=3,i++)
418413      {
419         k = K054338_shdRGB[j  ]; if (k < -7 || k > 7) { shadowon[i] = 1; continue; }
420         k = K054338_shdRGB[j+1]; if (k < -7 || k > 7) { shadowon[i] = 1; continue; }
421         k = K054338_shdRGB[j+2]; if (k < -7 || k > 7) { shadowon[i] = 1; }
414         k = m_K054338_shdRGB[j  ]; if (k < -7 || k > 7) { shadowon[i] = 1; continue; }
415         k = m_K054338_shdRGB[j+1]; if (k < -7 || k > 7) { shadowon[i] = 1; continue; }
416         k = m_K054338_shdRGB[j+2]; if (k < -7 || k > 7) { shadowon[i] = 1; }
422417      }
423418
424419      // SHDON specifies layers on which shadows can be projected (see detail on p.65 7.2.8)
r241546r241547
496491   {
497492      int pri = 0;
498493
499      if (!(gx_spriteram[offs] & 0x8000)) continue;
494      if (!(m_gx_spriteram[offs] & 0x8000)) continue;
500495
501      int zcode = gx_spriteram[offs] & 0xff;
496      int zcode = m_gx_spriteram[offs] & 0xff;
502497
503498      // invert z-order when opset_pri is set (see p.51 OPSET PRI)
504499      if (m_k053247_opset & 0x10) zcode = 0xff - zcode;
505500
506      int code  = gx_spriteram[offs+1];
507      int color = k = gx_spriteram[offs+6];
508      l     = gx_spriteram[offs+7];
501      int code  = m_gx_spriteram[offs+1];
502      int color = k = m_gx_spriteram[offs+6];
503      l     = m_gx_spriteram[offs+7];
509504
510505      m_k055673->m_k053247_cb(&code, &color, &pri);
511506
r241546r241547
869864
870865
871866         m_k055673->k053247_draw_single_sprite_gxcore(bitmap, cliprect,
872            m_gx_objzbuf, m_gx_shdzbuf, code, gx_spriteram, offs,
867            m_gx_objzbuf, m_gx_shdzbuf, code, m_gx_spriteram, offs,
873868            color, alpha, drawmode, zcode, pri,
874869            /* non-gx only */
875870            0,0,NULL,NULL,0
r241546r241547
927922   SET_TILE_INFO_MEMBER(0, tileno, colour, TILE_FLIPYX(flip));
928923}
929924
930static int konamigx_type3_psac2_actual_bank;
931//int konamigx_type3_psac2_actual_last_bank = 0;
932925
933926WRITE32_MEMBER(konamigx_state::konamigx_type3_psac2_bank_w)
934927{
935928   // other bits are used for something...
936929
937930   COMBINE_DATA(&m_konamigx_type3_psac2_bank[offset]);
938   konamigx_type3_psac2_actual_bank = (m_konamigx_type3_psac2_bank[0] & 0x10000000) >> 28;
931   m_konamigx_type3_psac2_actual_bank = (m_konamigx_type3_psac2_bank[0] & 0x10000000) >> 28;
939932
940933   /* handle this by creating 2 roz tilemaps instead, otherwise performance dies completely on dual screen mode
941   if (konamigx_type3_psac2_actual_bank!=konamigx_type3_psac2_actual_last_bank)
934   if (m_konamigx_type3_psac2_actual_bank!=m_konamigx_type3_psac2_actual_last_bank)
942935   {
943936       m_gx_psac_tilemap->mark_all_dirty();
944       konamigx_type3_psac2_actual_last_bank = konamigx_type3_psac2_actual_bank;
937       m_konamigx_type3_psac2_actual_last_bank = m_konamigx_type3_psac2_actual_bank;
945938   }
946939   */
947940}
r241546r241547
956949
957950   int base_index = tile_index;
958951
959//  if (konamigx_type3_psac2_actual_bank)
952//  if (m_konamigx_type3_psac2_actual_bank)
960953//      base_index+=0x20000/2;
961954
962955
r241546r241547
977970
978971   int base_index = tile_index;
979972
980//  if (konamigx_type3_psac2_actual_bank)
973//  if (m_konamigx_type3_psac2_actual_bank)
981974//      base_index+=0x20000/2;
982975
983976
r241546r241547
14321425      temprect = cliprect;
14331426      temprect.max_x = cliprect.min_x+320;
14341427
1435      if (konamigx_type3_psac2_actual_bank == 1) K053936_0_zoom_draw(screen, *m_type3_roz_temp_bitmap, temprect,m_gx_psac_tilemap_alt, 0,0,0); // soccerss playfield
1428      if (m_konamigx_type3_psac2_actual_bank == 1) K053936_0_zoom_draw(screen, *m_type3_roz_temp_bitmap, temprect,m_gx_psac_tilemap_alt, 0,0,0); // soccerss playfield
14361429      else K053936_0_zoom_draw(screen, *m_type3_roz_temp_bitmap, temprect,m_gx_psac_tilemap, 0,0,0); // soccerss playfield
14371430
14381431
trunk/src/mess/machine/coco.c
r241546r241547
681681   /* determine the sound mux status */
682682   soundmux_status_t status = soundmux_status();
683683
684    /* the SC77526 DAC chip internally biases the AC-coupled sound inputs for Cassette and Cartridge at the midpoint of the 3.9v output range */
685    bool bCassSoundEnable = (status == (SOUNDMUX_ENABLE | SOUNDMUX_SEL1));
686    bool bCartSoundEnable = (status == (SOUNDMUX_ENABLE | SOUNDMUX_SEL2));
687    UINT8 cassette_sound = (bCassSoundEnable ? 0x40 : 0);
688    UINT8 cart_sound = (bCartSoundEnable ? 0x40 : 0);
689
684690   /* determine the value to send to the DAC */
685691   m_dac_output = (m_pia_1->a_output() & 0xFC) >> 2;
686   UINT8 sound_output = single_bit_sound + (status == SOUNDMUX_ENABLE ? m_dac_output << 1 : 0);
687   m_dac->write_unsigned8(sound_output);
692   UINT8 dac_sound =  (status == SOUNDMUX_ENABLE ? m_dac_output << 1 : 0);
693   m_dac->write_unsigned8(single_bit_sound + dac_sound + cassette_sound + cart_sound);
688694
689695   /* determine the cassette sound status */
690   cassette_state cas_sound = (status == (SOUNDMUX_ENABLE | SOUNDMUX_SEL1))
691      ? CASSETTE_SPEAKER_ENABLED
692      : CASSETTE_SPEAKER_MUTED;
696   cassette_state cas_sound = bCassSoundEnable ? CASSETTE_SPEAKER_ENABLED : CASSETTE_SPEAKER_MUTED;
693697   m_cassette->change_state(cas_sound, CASSETTE_MASK_SPEAKER);
694698
695699   /* determine the cartridge sound status */
696   m_cococart->cart_set_line(
697      COCOCART_LINE_SOUND_ENABLE,
698      (status == (SOUNDMUX_ENABLE | SOUNDMUX_SEL2)) ? COCOCART_LINE_VALUE_ASSERT : COCOCART_LINE_VALUE_CLEAR);
700   m_cococart->cart_set_line(COCOCART_LINE_SOUND_ENABLE, bCartSoundEnable ? COCOCART_LINE_VALUE_ASSERT : COCOCART_LINE_VALUE_CLEAR);
699701}
700702
701703


Previous 199869 Revisions Next


© 1997-2024 The MAME Team