Previous 199869 Revisions Next

r34464 Sunday 18th January, 2015 at 10:48:57 UTC by Couriersud
Merge branch 'master' of https://github.com/mamedev/mame.git
[src/emu/cpu/tms0980]tms0980.c tms0980.h
[src/emu/netlist]nl_dice_compat.h
[src/emu/sound]rf5c400.c rf5c400.h
[src/mame]mame.lst
[src/mame/drivers]naomi.c snowbros.c twinkle.c
[src/mame/includes]snowbros.h

trunk/src/emu/cpu/tms0980/tms0980.c
r242975r242976
429429   m_sr = 0;
430430   m_pa = 0;
431431   m_pb = 0;
432   m_ps = 0;
432433   m_a = 0;
433434   m_x = 0;
434435   m_y = 0;
r242975r242976
466467   save_item(NAME(m_sr));
467468   save_item(NAME(m_pa));
468469   save_item(NAME(m_pb));
470   save_item(NAME(m_ps));
469471   save_item(NAME(m_a));
470472   save_item(NAME(m_x));
471473   save_item(NAME(m_y));
r242975r242976
636638   tms1100_cpu_device::device_reset();
637639
638640   // small differences in 00-3f area
639   m_fixed_decode[0x09] = F_COMX; // !
641   m_fixed_decode[0x09] = F_COMX;
640642   m_fixed_decode[0x0b] = F_TPC;
641643}
642644
r242975r242976
958960//-------------------------------------------------
959961
960962// handle branches:
963
964// TMS1000/common
961965// note: add(latch) and bl(branch latch) are specific to 0980 series,
962966// c(chapter) bits are specific to 1100(and 1400) series
963967
964// TMS1000/common:
965
966968void tms1xxx_cpu_device::op_br()
967969{
968970   // BR/BL: conditional branch
969   if (!m_status)
970      return;
971
972   if (!m_clatch)
973      m_pa = m_pb;
974   m_ca = m_cb;
975   m_pc = m_opcode & m_pc_mask;
971   if (m_status)
972   {
973      if (m_clatch == 0)
974         m_pa = m_pb;
975      m_ca = m_cb;
976      m_pc = m_opcode & m_pc_mask;
977   }
976978}
977979
978980void tms1xxx_cpu_device::op_call()
979981{
980982   // CALL/CALLL: conditional call
981   if (!m_status)
982      return;
983   if (m_status)
984   {
985      UINT8 prev_pa = m_pa;
983986
984   UINT8 prev_pa = m_pa;
985   if (!m_clatch)
986   {
987      m_sr = m_pc;
988      m_clatch = 1;
989      m_pa = m_pb;
990      m_cs = m_ca;
987      if (m_clatch == 0)
988      {
989         m_clatch = 1;
990         m_sr = m_pc;
991         m_pa = m_pb;
992         m_cs = m_ca;
993      }
994      m_ca = m_cb;
995      m_pb = prev_pa;
996      m_pc = m_opcode & m_pc_mask;
991997   }
992   m_ca = m_cb;
993   m_pb = prev_pa;
994   m_pc = m_opcode & m_pc_mask;
995998}
996999
9971000void tms1xxx_cpu_device::op_retn()
9981001{
9991002   // RETN: return from subroutine
1000   if (m_clatch)
1003   if (m_clatch == 1)
10011004   {
1005      m_clatch = 0;
10021006      m_pc = m_sr;
1003      m_clatch = 0;
10041007      m_ca = m_cs;
10051008   }
10061009   m_add = 0;
r242975r242976
10141017void tms1400_cpu_device::op_br()
10151018{
10161019   // BR/BL: conditional branch
1017   if (!m_status)
1018      return;
1019   
1020   //..
1020   if (m_status)
1021   {
1022      m_pa = m_pb; // don't care about clatch
1023      m_ca = m_cb;
1024      m_pc = m_opcode & m_pc_mask;
1025   }
10211026}
10221027
10231028void tms1400_cpu_device::op_call()
10241029{
10251030   // CALL/CALLL: conditional call
1026   if (!m_status)
1027      return;
1031   if (m_status)
1032   {
1033      // 3-level stack, mask clatch 3 bits (no need to mask others)
1034      m_clatch = (m_clatch << 1 | 1) & 7;
10281035
1029   //..
1036      m_sr = m_sr << m_pc_bits | m_pc;
1037      m_pc = m_opcode & m_pc_mask;
1038
1039      m_ps = m_ps << 4 | m_pa;
1040      m_pa = m_pb;
1041     
1042      m_cs = m_cs << 2 | m_ca;
1043      m_ca = m_cb;
1044   }
1045   else
1046   {
1047      m_pb = m_pa;
1048      m_cb = m_ca;
1049   }
10301050}
10311051
10321052void tms1400_cpu_device::op_retn()
10331053{
10341054   // RETN: return from subroutine
1035   //..
1055   if (m_clatch & 1)
1056   {
1057      m_clatch >>= 1;
1058
1059      m_pc = m_sr & m_pc_mask;
1060      m_sr >>= m_pc_bits;
1061     
1062      m_pa = m_pb = m_ps & 0xf;
1063      m_ps >>= 4;
1064     
1065      m_ca = m_cb = m_cs & 3;
1066      m_cs >>= 2;
1067   }
10361068}
10371069
10381070
10391071// handle other:
10401072
1041// TMS1000/common:
1073// TMS1000/common
10421074
10431075void tms1xxx_cpu_device::op_sbit()
10441076{
r242975r242976
11581190
11591191
11601192// TMS0980-specific (and possibly child classes)
1193
11611194void tms0980_cpu_device::op_comx()
11621195{
11631196   // COMX: complement X register, but not the MSB
r242975r242976
12031236
12041237
12051238// TMS0270-specific
1239
12061240void tms0270_cpu_device::op_setr()
12071241{
12081242   // same as default, but handle write to output in dynamic_output
trunk/src/emu/cpu/tms0980/tms0980.h
r242975r242976
139139   optional_device<pla_device> m_spla;
140140
141141   UINT8   m_pc;        // 6 or 7-bit program counter
142   UINT8  m_sr;        // 6 or 7-bit subroutine return register
142   UINT32  m_sr;        // 6 or 7-bit subroutine return register(s)
143143   UINT8   m_pa;        // 4-bit page address register
144144   UINT8   m_pb;        // 4-bit page buffer register
145   UINT16  m_ps;        // 4-bit page subroutine register(s)
145146   UINT8   m_a;         // 4-bit accumulator
146147   UINT8   m_x;         // 2,3,or 4-bit RAM X register
147148   UINT8   m_y;         // 4-bit RAM Y register
148   UINT8   m_ca;        // chapter address bit
149   UINT8   m_cb;        // chapter buffer bit
150   UINT8   m_cs;        // chapter subroutine bit
149   UINT8   m_ca;        // chapter address register
150   UINT8   m_cb;        // chapter buffer register
151   UINT16  m_cs;        // chapter subroutine register(s)
151152   UINT16  m_r;
152153   UINT16  m_o;
153154   UINT8   m_cki_bus;
r242975r242976
160161   UINT8   m_status;
161162   UINT8   m_status_latch;
162163   UINT8   m_eac;       // end around carry bit
163   UINT8   m_clatch;    // call latch bit
164   UINT8   m_clatch;    // call latch bit(s)
164165   UINT8   m_add;       // add latch bit
165166   UINT8   m_bl;        // branch latch bit
166167
trunk/src/emu/netlist/nl_dice_compat.h
r242975r242976
1313 * -------------------------------------------------------------------- */
1414
1515//#define CHIP(_n, _t) netlist.register_dev(NET_NEW(_t ## _dip), _n);
16#define CHIP(_n, _t) setup.register_dev( nL_alloc(nld_ ## _t ## _dip()), _n);
16#define CHIP(_n, _t) setup.register_dev( nl_alloc(nld_ ## _t ## _dip), _n);
1717
1818#define CONNECTION( ... ) CONNECTIONY( CONNECTIONX( __VA_ARGS__ ) )
1919#define CONNECTIONY(_a) _a
trunk/src/emu/sound/rf5c400.c
r242975r242976
129129
130130         if (env_phase == PHASE_NONE) break;
131131
132         tmp = rom[pos>>16];
132         tmp = rom[(pos>>16) & m_rommask];
133133         switch ( type )
134134         {
135135            case TYPE_16:
r242975r242976
331331   }
332332
333333   m_stream = stream_alloc(0, 2, clock()/384);
334
335   m_rommask = m_rom.length() - 1;
334336}
335337
336338
trunk/src/emu/sound/rf5c400.h
r242975r242976
9898private:
9999   required_region_ptr<INT16> m_rom;
100100
101   UINT32 m_rommask;
102
101103   sound_stream *m_stream;
102104
103105   double m_env_ar_table[0x9f];
trunk/src/mame/drivers/naomi.c
r242975r242976
521521Star Horse (satellite)                          840-0056C  23627    6 (128Mb)* 315-6319   315-6213  not present   * +1 (64Mb), requires 837-13785 ARCNET&IO BD
522522Star Horse Progress (satellite) (Rev A)         840-0123C  24122A   7 (128Mb)  315-6319A  315-6213  not present   requires 837-13785 ARCNET&IO BD
523523The King of Route 66 (Rev A)                    840-0087C  23819A  10 (128Mb)  315-6319A  315-6213  not present
524Virtua Striker 3                                840-0061C  23663   11 (128Mb)  315-6319A  315-6213  317-0310-COM
524525Virtua Striker 3 (Rev B)                        840-0061C  23663B  11 (128Mb)  315-6319A  315-6213  317-0310-COM
525Virtua Striker 3 (Rev C)                        840-0061C  23663C  11 (128Mb)  315-6319A  315-6213  317-0310-COM
526526Wave Runner GP                                  840-0064C  24059    6 (128Mb)  315-6319A  315-6213  not present
527527Wild Riders                                     840-0046C  23622   10 (128Mb)  315-6319A  315-6213  317-0301-COM
528528WWF Royal Rumble                                840-0040C  22261    8 (128Mb)  315-6319   315-6213  317-0285-COM
r242975r242976
77907790   NAOMI_DEFAULT_EEPROM
77917791
77927792   ROM_REGION( 0xb000000, "rom_board", ROMREGION_ERASEFF)
7793   ROM_LOAD( "epr-23663c.ic22",0x0000000, 0x0400000, CRC(7007fec7) SHA1(523168f0b218d0bd5c815d65bf0caba2c8468c9d) )
7793   // rom was handmade from 2 damaged dumps, needs to be verified
7794   ROM_LOAD( "epr-23663.ic22", 0x0000000, 0x0400000, BAD_DUMP CRC(6910a008) SHA1(865affff1cf31321725ef727a17be384555e3aae) )
77947795   ROM_LOAD( "mpr-23652.ic1",  0x0800000, 0x1000000, CRC(992758a2) SHA1(5e2a25c520c1795128e5026fc00d355c24852ded) )
77957796   ROM_LOAD( "mpr-23653.ic2",  0x1800000, 0x1000000, CRC(e210e932) SHA1(2f6f0a31c3e98b21f1ff3af1680e50b3535b130f) )
77967797   ROM_LOAD( "mpr-23654.ic3",  0x2800000, 0x1000000, CRC(91335971) SHA1(fc7599b836fb7995dd7da940e64b08b3c09cb180) )
r242975r242976
90349035
90359036/* 840-xxxxx (Sega Naomi 2 cart games) */
90369037/* 0046 */ GAME( 2001, wldrider, naomi2,  naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Wild Riders (JPN, USA, EXP, KOR, AUS)", GAME_FLAGS )
9037/* 0061 */ GAME( 2001, vstrik3c, naomi2,  naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Virtua Striker 3 (USA, EXP, KOR, AUS) (Cart, Rev C)", GAME_FLAGS )
9038/* 0061 */ GAME( 2001, vstrik3c, naomi2,  naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Virtua Striker 3 (USA, EXP, KOR, AUS) (Cart)", GAME_FLAGS )
90389039/* 0061 */ GAME( 2001, vstrik3cb,vstrik3c,naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Virtua Striker 3 (USA, EXP, KOR, AUS) (Cart, Rev B)", GAME_FLAGS )
90399040/* 0062 */ GAME( 2001, clubkrte, naomi2,  naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Club Kart: European Session", GAME_FLAGS )
90409041/* 0062 */ GAME( 2001, clubkrtd, clubkrte,naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Club Kart: European Session (Rev D)", GAME_FLAGS )
trunk/src/mame/drivers/snowbros.c
r242975r242976
185185   if (ACCESSING_BITS_0_7) soundlatch_byte_w(space,0,data & 0xff);
186186}
187187
188READ16_MEMBER(snowbros_state::toto_read)
189{
190   int pc = space.device().safe_pc();
191   if ((pc!= 0x3f010) && (pc!= 0x38008)) printf("toto prot %08x %04x\n", pc, mem_mask);
192   return 0x0700;
193}
194
188195/* Snow Bros Memory Map */
189196
190197static ADDRESS_MAP_START( snowbros_map, AS_PROGRAM, 16, snowbros_state )
r242975r242976
19551962   ROM_LOAD16_BYTE( "wb09.bin",     0x60001, 0x10000, CRC(9be718ca) SHA1(5c195e4f13efbdb229201d2408d018861bf389cc) )
19561963ROM_END
19571964
1965ROM_START( toto )
1966   ROM_REGION( 0x40000, "maincpu", 0 )
1967   ROM_LOAD16_BYTE( "u60.5j",  0x00000, 0x20000, CRC(39203792) SHA1(4c8d560be02a514cbf91774c7a0b4a95cf573356) )
1968   ROM_LOAD16_BYTE( "u51.4j",  0x00001, 0x20000, CRC(7b846cd4) SHA1(04aa0bbaab4303fb08dff52d5515f7e764f1be6d))
1969
1970   ROM_REGION( 0x10000, "soundcpu", 0 )    /* 64k for z80 sound code */
1971   ROM_LOAD( "u46.4c",   0x0000, 0x8000, CRC(77b1ef42) SHA1(75e3c8c2b687669cc56f972dd7375dab5185859c) )
1972
1973   ROM_REGION( 0x80000, "gfx1", 0 )
1974   ROM_LOAD( "u107.8k",          0x00000, 0x20000, CRC(4486153b) SHA1(a6dc0c17bf2328ab725bce4aaa0a413a42129fb0) )
1975   ROM_LOAD( "u108.8l",          0x20000, 0x20000, CRC(3286cf5f) SHA1(133366b0e10ab86111247cbedf329e8e3a7f2148) )
1976   ROM_LOAD( "u109.8m",          0x40000, 0x20000, CRC(464d7251) SHA1(f03ee54e9301ea87de4171cecdbad4a5e17929c4) )
1977   ROM_LOAD( "u110.8n",          0x60000, 0x20000, CRC(7dea56df) SHA1(7e7b9238837c6f4221cff416a2de21723d2c9272) )
1978ROM_END
1979
19581980/* Barko */
19591981
19601982ROM_START( honeydol )
r242975r242976
28662888
28672889
28682890
2891DRIVER_INIT_MEMBER(snowbros_state,toto)
2892{
2893   // every single rom has bits 0x10 and 0x08 swapped
2894   UINT8 *src = memregion("maincpu")->base();
2895   int len = memregion("maincpu")->bytes();
2896
2897   for (int i = 0; i < len; i++)
2898   {
2899      src[i] = BITSWAP8(src[i], 7, 6, 5, 3, 4, 2, 1, 0);
2900   }
2901
2902   src = memregion("gfx1")->base();
2903   len = memregion("gfx1")->bytes();
2904
2905   for (int i = 0; i < len; i++)
2906   {
2907      src[i] = BITSWAP8(src[i], 7, 6, 5, 3, 4, 2, 1, 0);
2908   }
2909
2910   src = memregion("soundcpu")->base();
2911   len = memregion("soundcpu")->bytes();
2912
2913   for (int i = 0; i < len; i++)
2914   {
2915      src[i] = BITSWAP8(src[i], 7, 6, 5, 3, 4, 2, 1, 0);
2916   }
2917
2918   // protection? (just return 0x07)
2919   m_maincpu->space(AS_PROGRAM).install_read_handler(0x500006, 0x500007, read16_delegate(FUNC(snowbros_state::toto_read),this));
2920}
2921
2922
2923
28692924GAME( 1990, snowbros,  0,        snowbros, snowbros, driver_device, 0, ROT0, "Toaplan",                        "Snow Bros. - Nick & Tom (set 1)", 0 )
28702925GAME( 1990, snowbrosa, snowbros, snowbros, snowbros, driver_device, 0, ROT0, "Toaplan",                        "Snow Bros. - Nick & Tom (set 2)", 0 )
28712926GAME( 1990, snowbrosb, snowbros, snowbros, snowbros, driver_device, 0, ROT0, "Toaplan",                        "Snow Bros. - Nick & Tom (set 3)", 0 )
r242975r242976
28752930GAME( 1990, wintbob,   snowbros, wintbob,  snowbros, driver_device, 0, ROT0, "bootleg (Sakowa Project Korea)", "The Winter Bobble (bootleg of Snow Bros.)", 0 )
28762931GAME( 1990, snowbroswb,snowbros, wintbob,  snowbros, driver_device, 0, ROT0, "bootleg",                        "Snow Bros. - Nick & Tom (The Winter Bobble hardware bootleg)", 0 ) // this was probably unhacked back from the more common Winter Bobble to make it look more original
28772932
2933GAME( 1996, toto,      0,        snowbros, snowbros, snowbros_state, toto, ROT0, "SoftClub",                    "Come Back Toto", 0 ) // modified from 'snowbros' code
2934
28782935// none of the games below are on genuine SnowBros hardware, but they clone the functionality of it.
28792936
28802937// SemiCom / Jeil titles are protected, a dumb MCU copies code into RAM at startup, some also check for a specific return value from an address on startup.
trunk/src/mame/drivers/twinkle.c
r242975r242976
254254      m_maincpu(*this, "maincpu"),
255255      m_audiocpu(*this, "audiocpu")
256256   {
257      m_spu_hle[0x200] = 0;
258      m_spu_hle[0x202] = 0;
259257   }
260258
261259   required_device<am53cf96_device> m_am53cf96;
r242975r242976
264262
265263   UINT16 m_spu_ctrl;      // SPU board control register
266264   UINT8 m_spu_shared[0x400];  // SPU/PSX shared dual-ported RAM
267   UINT8 m_spu_hle[0x400];
268265   UINT32 m_spu_ata_dma;
269266   int m_spu_ata_dmarq;
270267
r242975r242976
285282   DECLARE_WRITE16_MEMBER(twinkle_waveram_w);
286283   DECLARE_READ16_MEMBER(shared_68k_r);
287284   DECLARE_WRITE16_MEMBER(shared_68k_w);
285   DECLARE_READ16_MEMBER(unk_68k_r);
288286   DECLARE_WRITE_LINE_MEMBER(spu_ata_irq);
289287   DECLARE_WRITE_LINE_MEMBER(spu_ata_dmarq);
290288   required_device<cpu_device> m_maincpu;
r242975r242976
671669
672670WRITE8_MEMBER(twinkle_state::shared_psx_w)
673671{
674   //printf("shared_psx_w: %04x, %04x, %04x\n", offset, data, mem_mask);
672//   printf("shared_psx_w: %04x, %04x, %04x\n", offset, data, mem_mask);
675673
676674   m_spu_shared[offset] = data;
677675
678   // HLE sound board
679   m_spu_hle[offset] = data;
680
681676   if (offset == 0x03fe && data == 0xff)
682677   {
683      //printf("spu command %02x %02x\n", m_spu_hle[1], m_spu_hle[3]);
678//      printf("spu command %02x %02x\n", m_spu_shared[1], m_spu_shared[3]);
684679
685      for (int i = 0x200; i < 0x300; i++) m_spu_hle[i] = 0xea;
686
687      switch (m_spu_hle[1])
688      {
689      case 0x91: // hdd sum 1
690         m_spu_hle[0x200] = 0; // ?
691         m_spu_hle[0x202] = 0; // ?
692         break;
693
694      case 0x9a: // hdd sum 2
695         m_spu_hle[0x200] = 0; // ?
696         m_spu_hle[0x202] = 0; // ?
697         m_spu_hle[0x203] = 1; // Must be 1 to pass test
698         break;
699
700      case 0xa1: // version
701         m_spu_hle[0x200] = 0; // ?
702         m_spu_hle[0x202] = 0; // ?
703
704         if (strcmp(machine().system().name, "bmiidx") == 0 ||
705            strcmp(machine().system().name, "bmiidxa") == 0 ||
706            strcmp(machine().system().name, "bmiidxc") == 0 ||
707            strcmp(machine().system().name, "bmiidxca") == 0)
708         {
709            strcpy((char *)&m_spu_hle[0x204], "GQ863JA_A");
710         }
711         else if (strcmp(machine().system().name, "bmiidxs") == 0 ||
712            strcmp(machine().system().name, "bmiidxc2") == 0)
713         {
714            strcpy((char *)&m_spu_hle[0x204], "GC983JA_R");
715         }
716         else if (strcmp(machine().system().name, "bmiidx2") == 0)
717         {
718            strcpy((char *)&m_spu_hle[0x204], "GC985JA_A");
719         }
720         else if (strcmp(machine().system().name, "bmiidx3") == 0 ||
721            strcmp(machine().system().name, "bmiidx3a") == 0)
722         {
723            strcpy((char *)&m_spu_hle[0x204], "GC992JA_A");
724         }
725         else if (strcmp(machine().system().name, "bmiidx4") == 0)
726         {
727            strcpy((char *)&m_spu_hle[0x204], "GCA03JA_A");
728         }
729         else if (strcmp(machine().system().name, "bmiidx5") == 0)
730         {
731            strcpy((char *)&m_spu_hle[0x204], "GCA17JA_A");
732         }
733         else if (strcmp(machine().system().name, "bmiidx6") == 0 ||
734            strcmp(machine().system().name, "bmiidx6a") == 0)
735         {
736            strcpy((char *)&m_spu_hle[0x204], "GCB4UJA_A");
737         }
738         else if (strcmp(machine().system().name, "bmiidx7") == 0)
739         {
740            strcpy((char *)&m_spu_hle[0x204], "GCB44JA_A");
741         }
742         else if (strcmp(machine().system().name, "bmiidx8") == 0)
743         {
744            strcpy((char *)&m_spu_hle[0x204], "GCC44JA_A");
745         }
746         break;
747
748      case 0x30: // play sound [3]=sound code
749      case 0x51: // sound off
750      case 0x25: // spu rom error ([3]==0x0f)
751      case 0x26: // spu rom error ([3]==0x0f)
752      case 0x08: // spu rom error
753      case 0x40: // spu rom error ([3]==0x01 coin sound?)
754      case 0x2f: // spu rom error
755      case 0x52: // spu rom error
756      case 0x04: // spu rom error ([3]==?)
757         m_spu_hle[0x200] = 0;
758         m_spu_hle[0x202] = 0;
759         break;
760      }
680      m_audiocpu->set_input_line(M68K_IRQ_4, HOLD_LINE);
761681   }
762682}
763683
764684READ8_MEMBER(twinkle_state::shared_psx_r)
765685{
766   //UINT32 result = m_spu_shared[offset];
767   UINT32 result = m_spu_hle[offset];
686   UINT32 result = m_spu_shared[offset];
768687
769688   //printf("shared_psx_r: %04x, %04x, %04x\n", offset, result, mem_mask);
770689
r242975r242976
803722/*
804723    System control register (Konami always has one)
805724
806    bit 7  = write 0 to ack IRQ 1, write 1 to enable (IRQ 1 appears to be vblank)
725    bit 7  = write 0 to ack IRQ 1, write 1 to enable (IRQ 1 appears to be an RF5C400-related timer, or some free-running timing source)
807726    bit 8  = write 0 to ack IRQ 2, write 1 to enable (IRQ 2 appears to be DMA completion)
808    bit 9  = write 0 to ack IRQ 4, write 1 to enable (IRQ 4 appears to be "command sent", unsure how the MIPS causes it yet however)
809    bit 10 = write 0 to ack IRQ 6, write 1 to enable (IRQ 6 is IDE)
810    bit 11 = watchdog toggle?
727    bit 9  = write 0 to ack IRQ 4, write 1 to enable (IRQ 4 is "command available")
728    bit 10 = write 0 to ack IRQ 6, write 1 to enable (IRQ 6 is the ATA IRQ)
729    bit 11 = watchdog toggle
811730
812731    Other bits unknown.
813732*/
r242975r242976
836755WRITE16_MEMBER(twinkle_state::spu_ata_dma_low_w)
837756{
838757   m_spu_ata_dma = (m_spu_ata_dma & ~0xffff) | data;
839
840   //printf("dma_low %08x\n", m_spu_ata_dma * 2);
841758}
842759
843760WRITE16_MEMBER(twinkle_state::spu_ata_dma_high_w)
844761{
845762   m_spu_ata_dma = (m_spu_ata_dma & 0xffff) | (data << 16);
846
847   //printf("dma_high %08x\n", m_spu_ata_dma * 2);
848763}
849764
850765WRITE_LINE_MEMBER(twinkle_state::spu_ata_dmarq)
r242975r242976
864779            //waveram[m_spu_ata_dma++] = (data >> 8) | (data << 8);
865780            // bp 4a0e ;bmiidx4 checksum
866781            // bp 4d62 ;bmiidx4 dma
867            m_waveram[m_spu_ata_dma++] = data;
782
783            // $$$HACK - game DMAs nothing useful to 0x400000 but all sound plays are 0x400000 or above
784            //           so limit sound RAM to 4MB (there's 6 MB on the board) and let the 5c400's address masking
785            //           work for us until we figure out what's actually going on.
786            if (m_spu_ata_dma < 0x200000)
787            {
788               m_waveram[m_spu_ata_dma++] = data;
789            }
868790         }
869791
870792         m_ata->write_dmack(CLEAR_LINE);
r242975r242976
886808{
887809   UINT16 result = m_spu_shared[offset];
888810
889   //printf("shared_68k_r: %04x, %04x, %04x\n", offset, result, mem_mask);
811//   printf("shared_68k_r: %04x, %04x, %04x\n", offset, result, mem_mask);
890812
891813   return result;
892814}
893815
894816WRITE16_MEMBER(twinkle_state::shared_68k_w)
895817{
896   //printf("shared_68k_w: %04x, %04x, %04x\n", offset, data, mem_mask);
818//   printf("shared_68k_w: %04x, %04x, %04x\n", offset, data, mem_mask);
897819
898820   m_spu_shared[offset] = data & 0xff;
899821}
900822
823READ16_MEMBER(twinkle_state::unk_68k_r)
824{
825   return 0xffff;   // must return 0xff for 68000 POST to complete properly
826}
827
901828static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 16, twinkle_state )
902829   AM_RANGE(0x000000, 0x07ffff) AM_ROM
903830   AM_RANGE(0x100000, 0x13ffff) AM_RAM
831   AM_RANGE(0x200000, 0x200001) AM_READ(unk_68k_r)
904832   // 220000 = LEDs?
905833   AM_RANGE(0x230000, 0x230003) AM_WRITE(twinkle_spu_ctrl_w)
906834   AM_RANGE(0x240000, 0x240003) AM_WRITE(spu_ata_dma_low_w)
r242975r242976
909837   AM_RANGE(0x280000, 0x280fff) AM_READWRITE(shared_68k_r, shared_68k_w)
910838   AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("ata", ata_interface_device, read_cs0, write_cs0)
911839   // 34000E = ???
840   AM_RANGE(0x34000e, 0x34000f) AM_WRITENOP
912841   AM_RANGE(0x400000, 0x400fff) AM_DEVREADWRITE("rfsnd", rf5c400_device, rf5c400_r, rf5c400_w)
913   AM_RANGE(0x800000, 0xffffff) AM_READWRITE(twinkle_waveram_r, twinkle_waveram_w )    // 8 MB window wave RAM
842   AM_RANGE(0x800000, 0xbfffff) AM_READWRITE(twinkle_waveram_r, twinkle_waveram_w )
843   AM_RANGE(0xfe0000, 0xffffff) AM_RAM   // ...and the RAM test checks this last 128k (mirror of the work RAM at 0x100000?)
914844ADDRESS_MAP_END
915845
916846/* SCSI */
r242975r242976
1011941
1012942   MCFG_CPU_ADD("audiocpu", M68000, 32000000/2)    /* 16.000 MHz */
1013943   MCFG_CPU_PROGRAM_MAP( sound_map )
944   MCFG_CPU_PERIODIC_INT_DRIVER(twinkle_state, irq1_line_assert, 60)
945   MCFG_CPU_PERIODIC_INT_DRIVER(twinkle_state, irq2_line_assert, 60)
1014946
1015947   MCFG_WATCHDOG_TIME_INIT(attotime::from_msec(1200)) /* check TD pin on LTC1232 */
1016948
r242975r242976
11491081   ROM_REGION32_LE( 0x080000, "audiocpu", 0 )\
11501082   ROM_LOAD16_WORD_SWAP( "863a05.2x",    0x000000, 0x080000, CRC(6f42a09e) SHA1(cab5209f90f47b9ee6e721479913ad74e3ba84b1) )\
11511083\
1152   ROM_REGION16_LE(0x1800000, "rfsnd", ROMREGION_ERASE00)
1084   ROM_REGION16_LE(0x400000, "rfsnd", ROMREGION_ERASE00)
11531085
11541086ROM_START( gq863 )
11551087   TWINKLE_BIOS
trunk/src/mame/includes/snowbros.h
r242975r242976
5555   DECLARE_DRIVER_INIT(4in1boot);
5656   DECLARE_DRIVER_INIT(3in1semi);
5757   DECLARE_DRIVER_INIT(cookbib2);
58   DECLARE_DRIVER_INIT(toto);
59   DECLARE_READ16_MEMBER(toto_read);
5860   DECLARE_MACHINE_RESET(semiprot);
5961   DECLARE_MACHINE_RESET(finalttr);
6062   UINT32 screen_update_snowbros(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
trunk/src/mame/mame.lst
r242975r242976
26782678snowbrosd       // MIN16-02 (c) 1990 Toaplan + Dooyong license
26792679wintbob         // bootleg
26802680snowbroswb      //
2681toto         //
26812682// modified snowbros 'clone' hardware
26822683honeydol        // (c) 1995 Barko Corp
26832684twinadv         // (c) 1995 Barko Corp
r242975r242976
54465447starhrsp        // 2003.12.01 Star Horse Progress (satellite) (Rev A)
54475448puyofevp        // 2003.?? Puyo Puyo Fever (prototype)
54485449            // 2003.?? Dragon Treasure
5449            // 2003.?? Rabbit 2
54505450cfield          // 2004.06 Chaos Field
54515451tetkiwam        // 2004.06 Tetris Kiwamemichi (Arcade TV Game List - P.88, Right, 11 from bottom)
54525452trizeal         // 2004.09 Trizeal
r242975r242976
55135513
55145514// NAOMI 2
55155515naomi2          // 2001.?? Naomi 2 BIOS
5516vstrik3c        // 2001.04 Virtua Striker 3 (cartridge)
5517vstrik3cb       // 2001.04 Virtua Striker 3 (Rev B) (cartridge)
55165518vstrik3         // 2001.04.06 Virtua Striker 3 Ver. 2002
5517vstrik3cb       // 2001.04 Virtua Striker 3 (Rev B) (cartridge)
5518vstrik3c        // 2001.04 Virtua Striker 3 (Rev C) (cartridge)
55195519wldrider        // 2001.05 Wild Riders
55205520clubkrte        // 2001.06 Club Kart: European Session
5521clubkrtc        // 2001.?? Club Kart: European Session (Rev C)
55215522clubkrtd        // 2001.06 Club Kart: European Session (Rev D)
5522clubkrtc        // 2001.?? Club Kart: European Session (Rev C)
55235523beachspi        // 2001.07 Beach Spikers
55245524vf4cart         // 2001.08.02 Virtua Fighter 4 (cartridge)
55255525vf4             // 2001.08.02 Virtua Fighter 4 (GD-ROM)


Previous 199869 Revisions Next


© 1997-2024 The MAME Team