Previous 199869 Revisions Next

r41599 Thursday 5th November, 2015 at 05:02:07 UTC by Vasantha Crabb
Merge pull request #456 from Shideravan/patch-10

Changing START1 to START
[3rdparty/mongoose]LICENSE README.md mongoose.c mongoose.h
[3rdparty/mongoose/docs]API.md AndroidBuild.md BasicWebsite.md Embed.md FAQ.md FileSharing.md Internals.md Options.md PhpWebsite.md ReleaseNotes.md SSL.md Usage.md
[3rdparty/mongoose/examples].gitignore Makefile
[3rdparty/mongoose/examples/array_vars]Makefile array_vars.c
[3rdparty/mongoose/examples/big_upload]Makefile big_upload.c
[3rdparty/mongoose/examples/cookie_authentication]Makefile cookie_auth.c index.html login.html
[3rdparty/mongoose/examples/csharp]example.cs mongoose.cs
[3rdparty/mongoose/examples/digest_authentication]Makefile digest_auth.c
[3rdparty/mongoose/examples/file_upload]Makefile file_upload.c
[3rdparty/mongoose/examples/form_submit]Makefile form_submit.c
[3rdparty/mongoose/examples/hello_world]Makefile hello_world.c
[3rdparty/mongoose/examples/http_client]Makefile http_client.c
[3rdparty/mongoose/examples/mjpg_streamer]Makefile mjpg_streamer.c
[3rdparty/mongoose/examples/multi_threaded_server]Makefile multi_threaded_server.c
[3rdparty/mongoose/examples/proxy_server]Makefile proxy_server.c ssl_cert.pem
[3rdparty/mongoose/examples/proxy_server/proxy_web_root]index.html
[3rdparty/mongoose/examples/proxy_server/proxy_web_root/app1]index.html
[3rdparty/mongoose/examples/proxy_server/proxy_web_root/app2]index.html
[3rdparty/mongoose/examples/restful_api]Makefile index.html restful_api.c
[3rdparty/mongoose/examples/send_file]Makefile send_file.c
[3rdparty/mongoose/examples/web_server]Makefile web_server.c
[3rdparty/mongoose/examples/web_server/certs]cert.pem
[3rdparty/mongoose/examples/websocket_chat]Makefile index.html websocket_chat.c
[3rdparty/mongoose/examples/websocket_echo_server]Makefile index.html websocket_echo_server.c
[3rdparty/mongoose/examples/websocket_ssl_proxy]Makefile net_skeleton.h ssl_wrapper.c ssl_wrapper.h ws_ssl.c ws_ssl.html
[3rdparty/mongoose/examples/websocket_ssl_proxy/certs]ws1_ca.pem ws1_client.pem ws1_server.pem ws2_ca.pem ws2_client.pem ws2_server.pem
[3rdparty/mongoose/jni]Android.mk
[3rdparty/mongoose/scripts]embed_binary_files.pl
[3rdparty/mongoose/test]Makefile unit_test.c
[scripts/src]3rdparty.lua emu.lua main.lua
[src/devices/cpu/am29000]am29ops.h
[src/devices/cpu/avr8]avr8dasm.c
[src/devices/cpu/e132xs]e132xs.c
[src/devices/cpu/hd61700]hd61700.c
[src/devices/cpu/score]scoredsm.c
[src/devices/cpu/tms7000]tms70op.inc
[src/devices/machine]mos6530n.c
[src/devices/video]315_5313.c mc6845.c
[src/emu]emuopts.c emuopts.h luaengine.c machine.c mame.c mame.h webengine.c webengine.h
[src/emu/debug]debugcpu.c
[src/emu/ui]ui.c
[src/mame]arcade.lst
[src/mame/drivers]a2600.c aristmk5.c atarittl.c champbas.c dorachan.c equites.c goldnpkr.c mz700.c pacman.c polyplay.c pong.c
[src/mame/includes]mz700.h
[src/mame/machine]alpha8201.c megadriv.c mz700.c namcoio.c
[src/mame/video]fuukifg3.c mcr.c mcr3.c mcr68.c mz700.c
[web]favicon.ico index.html
[web/css]jquery.mobile.css
[web/css/images]ajax-loader.gif icons-18-black.png icons-18-white.png icons-36-black.png icons-36-white.png
[web/images]logo-mame-small.png
[web/js]jquery.js jquery.mobile.js

trunk/scripts/src/3rdparty.lua
r250110r250111
461461   }
462462
463463--------------------------------------------------
464-- mongoose library objects
465--------------------------------------------------
466
467project "mongoose"
468   uuid "ff05b529-2b6f-4166-9dff-5fe2aef89c40"
469   kind "StaticLib"
470
471   configuration { "vs*" }
472      buildoptions {
473         "/wd4996", -- warning C4996: 'function': was declared deprecated
474         "/wd4100", -- warning C4100: 'xxx' : unreferenced formal parameter
475         "/wd4245", -- warning C4245: 'conversion' : conversion from 'type1' to 'type2', signed/unsigned mismatch         
476         "/wd4267", -- warning C4267: 'var' : conversion from 'size_t' to 'type', possible loss of data
477         "/wd4244", -- warning C4244: 'argument' : conversion from 'xxx' to 'xxx', possible loss of data
478      }
479   
480   configuration { "vs2015" }
481      buildoptions {
482         "/wd4456", -- warning C4456: declaration of 'xxx' hides previous local declaration
483   }
484   
485   configuration { }
486
487   options {
488      "ForceCPP",
489   }
490   defines {
491      "MONGOOSE_ENABLE_THREADS",
492      "NS_STACK_SIZE=0"
493   }
494
495   includedirs {
496      MAME_DIR .. "3rdparty/mongoose",
497   }
498
499   files {
500      MAME_DIR .. "3rdparty/mongoose/mongoose.c",
501   }
502
503--------------------------------------------------
504464-- jsoncpp library objects
505465--------------------------------------------------
506466
trunk/scripts/src/emu.lua
r250110r250111
245245   MAME_DIR .. "src/emu/debug/textbuf.h",
246246   MAME_DIR .. "src/emu/profiler.c",
247247   MAME_DIR .. "src/emu/profiler.h",
248   MAME_DIR .. "src/emu/webengine.c",
249   MAME_DIR .. "src/emu/webengine.h",
250248   MAME_DIR .. "src/emu/sound/filter.c",
251249   MAME_DIR .. "src/emu/sound/filter.h",
252250   MAME_DIR .. "src/devices/sound/flt_vol.c",
trunk/scripts/src/main.lua
r250110r250111
116116      "lua",
117117      "lsqlite3",
118118      "jsoncpp",
119      "mongoose",
120119   }
121120
122121   if _OPTIONS["with-bundled-zlib"] then
trunk/src/devices/cpu/am29000/am29ops.h
r250110r250111
956956
957957   if (!FREEZE_MODE)
958958   {
959      m_chc = ((m_exec_ir << 8) & 0xff) |
960                  CHC_LS |
961                  RA << CHC_TR_SHIFT |
962                  CHC_CV;
963
959      m_chc = ((m_exec_ir << 8) & 0xff) | CHC_LS | RA << CHC_TR_SHIFT | CHC_CV;
964960      m_cha = addr;
965961      m_chd = r;
966962
967      if (!(m_cfg & CFG_DW) && (m_exec_ir & INST_SB_BIT))
968         SET_ALU_BP(addr & 3);
963      if (!(m_cfg & CFG_DW) && INST_SB_BIT)
964      {
965         SET_ALU_BP(addr);
966      }
969967   }
970968
971969   m_r[RA] = r;
972970
973971   if (m_cfg & CFG_DW)
972   {
974973      logerror("DW ON A STORE");
974   }
975975}
976976
977977void am29000_cpu_device::LOADL()
r250110r250111
987987void am29000_cpu_device::LOADM()
988988{
989989   UINT32 addr = INST_M_BIT ? I8: GET_RB_VAL;
990   UINT32 r;
991990
992991   if (INST_UA_BIT)
992   {
993993      fatalerror("Am29000: UA bit set on LOAD\n");
994   }
994995
996   UINT32 r;
995997   if (INST_CE_BIT)
996998   {
997999      logerror("Am29000: Attempting a co-processor LOAD!\n");
r250110r250111
10191021   {
10201022      // TODO
10211023      m_chc &= (CHC_CR_MASK << CHC_CR_SHIFT);
1022      m_chc |= ((m_exec_ir << 8) & 0xff) |
1023                  RA << CHC_TR_SHIFT |
1024                  CHC_CV;
1025
1024      m_chc |= ((m_exec_ir << 8) & 0xff) | RA << CHC_TR_SHIFT | CHC_CV;
10261025      m_cha = addr;
10271026      m_chd = r; // ?????
10281027
1029      if (!(m_cfg & CFG_DW) && (m_exec_ir & INST_SB_BIT))
1030         SET_ALU_BP(addr & 3);
1028      if (!(m_cfg & CFG_DW) && INST_SB_BIT)
1029      {
1030         SET_ALU_BP(addr);
1031      }
10311032   }
10321033
10331034   r = RA;
10341035
1036   for (INT32 cnt = 0; cnt <= GET_CHC_CR; ++cnt)
10351037   {
1036      int cnt;
1037      for (cnt = 0; cnt <= GET_CHC_CR; ++cnt)
1038      {
1039         m_r[r] = m_data->read_dword(addr);
1038      m_r[r] = m_data->read_dword(addr);
10401039
10411040//          SET_CHC_CR(cnt - 1);
1042         addr += 4;
1041      addr += 4;
10431042
1044         if (++r == 256)
1045            r = 128;
1043      if (++r == 256)
1044      {
1045         r = 128;
10461046      }
10471047   }
10481048}
r250110r250111
10501050void am29000_cpu_device::STORE()
10511051{
10521052   UINT32 addr = INST_M_BIT ? I8: GET_RB_VAL;
1053//  UINT32 r;
10541053
10551054   if (INST_UA_BIT)
1055   {
10561056      fatalerror("Am29000: UA bit set on LOAD\n");
1057   }
10571058
10581059   if (INST_CE_BIT)
10591060   {
10601061      logerror("Am29000: Attempting a co-processor LOAD!\n");
1061//      r = 0;
10621062   }
10631063   else
10641064   {
r250110r250111
10731073            SIGNAL_EXCEPTION(EXCEPTION_PROTECTION_VIOLATION);
10741074            return;
10751075         }
1076
10771076      }
10781077   }
10791078
r250110r250111
10811080
10821081   if (!FREEZE_MODE)
10831082   {
1084      m_chc = ((m_exec_ir << 8) & 0xff) |
1085                  RA << CHC_TR_SHIFT |
1086                  CHC_CV;
1087
1083      m_chc = ((m_exec_ir << 8) & 0xff) | RA << CHC_TR_SHIFT | CHC_CV;
10881084      m_cha = addr;
10891085
1090      if (!(m_cfg & CFG_DW) && (m_exec_ir & INST_SB_BIT))
1091         SET_ALU_BP(addr & 3);
1086      if (!(m_cfg & CFG_DW) && INST_SB_BIT)
1087      {
1088         SET_ALU_BP(addr);
1089      }
10921090   }
10931091
10941092   if (m_cfg & CFG_DW)
1093   {
10951094      logerror("DW ON A STORE");
1095   }
10961096}
10971097
10981098void am29000_cpu_device::STOREL()
r250110r250111
11031103void am29000_cpu_device::STOREM()
11041104{
11051105   UINT32 addr = INST_M_BIT ? I8: GET_RB_VAL;
1106   UINT32 r;
11071106
11081107   if (INST_UA_BIT)
1108   {
11091109      fatalerror("Am29000: UA bit set on LOAD\n");
1110   }
11101111
1112   UINT32 r;
11111113   if (INST_CE_BIT)
11121114   {
11131115      logerror("Am29000: Attempting a co-processor LOAD!\n");
r250110r250111
11261128            SIGNAL_EXCEPTION(EXCEPTION_PROTECTION_VIOLATION);
11271129            return;
11281130         }
1129
11301131      }
11311132   }
11321133
r250110r250111
11341135   {
11351136      // TODO
11361137      m_chc &= (CHC_CR_MASK << CHC_CR_SHIFT);
1137      m_chc |= ((m_exec_ir << 8) & 0xff) |
1138                  RA << CHC_TR_SHIFT |
1139                  CHC_CV;
1140
1138      m_chc |= ((m_exec_ir << 8) & 0xff) | RA << CHC_TR_SHIFT | CHC_CV;
11411139      m_cha = addr;
11421140
1143      if (!(m_cfg & CFG_DW) && (m_exec_ir & INST_SB_BIT))
1144         SET_ALU_BP(addr & 3);
1141      if (!(m_cfg & CFG_DW) && INST_SB_BIT)
1142      {
1143         SET_ALU_BP(addr);
1144      }
11451145   }
11461146
11471147   r = RA;
11481148
1149   for (INT32 cnt = 0; cnt <= GET_CHC_CR; ++cnt)
11491150   {
1150      int cnt;
1151      for (cnt = 0; cnt <= GET_CHC_CR; ++cnt)
1152      {
1153         m_data->write_dword(addr, m_r[r]);
1151      m_data->write_dword(addr, m_r[r]);
11541152
1155//          SET_CHC_CR(cnt - 1);
1156         addr += 4;
1153      addr += 4;
11571154
1158         if (++r == 256)
1159            r = 128;
1155      if (++r == 256)
1156      {
1157         r = 128;
11601158      }
11611159   }
11621160}
trunk/src/devices/cpu/avr8/avr8dasm.c
r250110r250111
592592               switch(op & 0x0007)
593593               {
594594                  case 0x0000:
595                     output += sprintf( output, "BRLO    %08x", (((op & 0x0200) ? ((KCONST7(op) & 0x007f) | 0xff80) : KCONST7(op)) << 1) );
595                     output += sprintf( output, "BRLO    %08x", (((op & 0x0200) ? (KCONST7(op) | 0xff80) : KCONST7(op)) << 1) );
596596                     break;
597597                  case 0x0001:
598                     output += sprintf( output, "BREQ    %08x", (((op & 0x0200) ? ((KCONST7(op) & 0x007f) | 0xff80) : KCONST7(op)) << 1) );
598                     output += sprintf( output, "BREQ    %08x", (((op & 0x0200) ? (KCONST7(op) | 0xff80) : KCONST7(op)) << 1) );
599599                     break;
600600                  case 0x0002:
601                     output += sprintf( output, "BRMI    %08x", (((op & 0x0200) ? ((KCONST7(op) & 0x007f) | 0xff80) : KCONST7(op)) << 1) );
601                     output += sprintf( output, "BRMI    %08x", (((op & 0x0200) ? (KCONST7(op) | 0xff80) : KCONST7(op)) << 1) );
602602                     break;
603603                  case 0x0003:
604                     output += sprintf( output, "BRVS    %08x", (((op & 0x0200) ? ((KCONST7(op) & 0x007f) | 0xff80) : KCONST7(op)) << 1) );
604                     output += sprintf( output, "BRVS    %08x", (((op & 0x0200) ? (KCONST7(op) | 0xff80) : KCONST7(op)) << 1) );
605605                     break;
606606                  case 0x0004:
607                     output += sprintf( output, "BRLT    %08x", (((op & 0x0200) ? ((KCONST7(op) & 0x007f) | 0xff80) : KCONST7(op)) << 1) );
607                     output += sprintf( output, "BRLT    %08x", (((op & 0x0200) ? (KCONST7(op) | 0xff80) : KCONST7(op)) << 1) );
608608                     break;
609609                  case 0x0005:
610                     output += sprintf( output, "BRHS    %08x", (((op & 0x0200) ? ((KCONST7(op) & 0x007f) | 0xff80) : KCONST7(op)) << 1) );
610                     output += sprintf( output, "BRHS    %08x", (((op & 0x0200) ? (KCONST7(op) | 0xff80) : KCONST7(op)) << 1) );
611611                     break;
612612                  case 0x0006:
613                     output += sprintf( output, "BRTS    %08x", (((op & 0x0200) ? ((KCONST7(op) & 0x007f) | 0xff80) : KCONST7(op)) << 1) );
613                     output += sprintf( output, "BRTS    %08x", (((op & 0x0200) ? (KCONST7(op) | 0xff80) : KCONST7(op)) << 1) );
614614                     break;
615615                  case 0x0007:
616                     output += sprintf( output, "BRIE    %08x", (((op & 0x0200) ? ((KCONST7(op) & 0x007f) | 0xff80) : KCONST7(op)) << 1) );
616                     output += sprintf( output, "BRIE    %08x", (((op & 0x0200) ? (KCONST7(op) | 0xff80) : KCONST7(op)) << 1) );
617617                     break;
618618               }
619619               break;
r250110r250111
621621               switch(op & 0x0007)
622622               {
623623                  case 0x0000:
624                     output += sprintf( output, "BRSH    %08x", (((op & 0x0200) ? ((KCONST7(op) & 0x007f) | 0xff80) : KCONST7(op)) << 1) );
624                     output += sprintf( output, "BRSH    %08x", (((op & 0x0200) ? (KCONST7(op) | 0xff80) : KCONST7(op)) << 1) );
625625                     break;
626626                  case 0x0001:
627                     output += sprintf( output, "BRNE    %08x", (((op & 0x0200) ? ((KCONST7(op) & 0x007f) | 0xff80) : KCONST7(op)) << 1) );
627                     output += sprintf( output, "BRNE    %08x", (((op & 0x0200) ? (KCONST7(op) | 0xff80) : KCONST7(op)) << 1) );
628628                     break;
629629                  case 0x0002:
630                     output += sprintf( output, "BRPL    %08x", (((op & 0x0200) ? ((KCONST7(op) & 0x007f) | 0xff80) : KCONST7(op)) << 1) );
630                     output += sprintf( output, "BRPL    %08x", (((op & 0x0200) ? (KCONST7(op) | 0xff80) : KCONST7(op)) << 1) );
631631                     break;
632632                  case 0x0003:
633                     output += sprintf( output, "BRVC    %08x", (((op & 0x0200) ? ((KCONST7(op) & 0x007f) | 0xff80) : KCONST7(op)) << 1) );
633                     output += sprintf( output, "BRVC    %08x", (((op & 0x0200) ? (KCONST7(op) | 0xff80) : KCONST7(op)) << 1) );
634634                     break;
635635                  case 0x0004:
636                     output += sprintf( output, "BRGE    %08x", (((op & 0x0200) ? ((KCONST7(op) & 0x007f) | 0xff80) : KCONST7(op)) << 1) );
636                     output += sprintf( output, "BRGE    %08x", (((op & 0x0200) ? (KCONST7(op) | 0xff80) : KCONST7(op)) << 1) );
637637                     break;
638638                  case 0x0005:
639                     output += sprintf( output, "BRHC    %08x", (((op & 0x0200) ? ((KCONST7(op) & 0x007f) | 0xff80) : KCONST7(op)) << 1) );
639                     output += sprintf( output, "BRHC    %08x", (((op & 0x0200) ? (KCONST7(op) | 0xff80) : KCONST7(op)) << 1) );
640640                     break;
641641                  case 0x0006:
642                     output += sprintf( output, "BRTC    %08x", (((op & 0x0200) ? ((KCONST7(op) & 0x007f) | 0xff80) : KCONST7(op)) << 1) );
642                     output += sprintf( output, "BRTC    %08x", (((op & 0x0200) ? (KCONST7(op) | 0xff80) : KCONST7(op)) << 1) );
643643                     break;
644644                  case 0x0007:
645                     output += sprintf( output, "BRID    %08x", (((op & 0x0200) ? ((KCONST7(op) & 0x007f) | 0xff80) : KCONST7(op)) << 1) );
645                     output += sprintf( output, "BRID    %08x", (((op & 0x0200) ? (KCONST7(op) | 0xff80) : KCONST7(op)) << 1) );
646646                     break;
647647               }
648648               break;
trunk/src/devices/cpu/e132xs/e132xs.c
r250110r250111
31413141
31423142         case 2:
31433143
3144            load = READ_HW(EXTRA_S & ~1);
3144            load = READ_HW(EXTRA_S);
31453145
31463146            if( EXTRA_S & 1 ) // LDHS.A
31473147            {
r250110r250111
34173417
34183418         case 2:
34193419
3420            WRITE_HW(EXTRA_S & ~1, SREG & 0xffff);
3420            WRITE_HW(EXTRA_S, SREG & 0xffff);
34213421
34223422            /*
34233423            if( EXTRA_S & 1 ) // STHS.A
trunk/src/devices/cpu/hd61700/hd61700.c
r250110r250111
508508            case 0x15:  //psr
509509               {
510510                  UINT8 arg = read_op();
511                  WRITE_SREG(arg, READ_REG(arg)&0x1f);
511                  WRITE_SREG(arg, READ_REG(arg));
512512
513513                  check_optional_jr(arg);
514514                  m_icount -= 3;
r250110r250111
10381038            case 0x55:  //psr
10391039               {
10401040                  UINT8 arg = read_op();
1041                  WRITE_SREG(arg, arg&0x1f);
1041                  WRITE_SREG(arg, arg);
10421042
10431043                  m_icount -= 3;
10441044               }
r250110r250111
28932893   }
28942894   else
28952895   {
2896      return READ_SREG(arg)&0x1f;
2896      return READ_SREG(arg);
28972897   }
28982898}
28992899
r250110r250111
29052905   }
29062906   else
29072907   {
2908      return READ_SREG(arg)&0x1f;
2908      return READ_SREG(arg);
29092909   }
29102910}
29112911
trunk/src/devices/cpu/score/scoredsm.c
r250110r250111
224224         buffer += sprintf(buffer, "j%s! 0x%08x", GET_J_LK(opcode) ? "l": "", (pc & 0xfffff000) | (GET_J_DISP11(opcode) << 1));
225225         break;
226226      case 0x04:
227         buffer += sprintf(buffer, "b%s! 0x%08x", m_cond[GET_BX_EC(opcode) & 0x0f], pc + sign_extend(GET_BX_DISP8(opcode) << 1, 9));
227         buffer += sprintf(buffer, "b%s! 0x%08x", m_cond[GET_BX_EC(opcode)], pc + sign_extend(GET_BX_DISP8(opcode) << 1, 9));
228228         break;
229229      case 0x05:
230230         buffer += sprintf(buffer, "ldiu! r%d, 0x%02x", GET_I2_RD(opcode), GET_I2_IMM8(opcode));
trunk/src/devices/cpu/tms7000/tms70op.inc
r250110r250111
252252{
253253   m_icount -= 39;
254254   UINT16 t = param1 * param2;
255   SET_CNZ(t >> 8 & 0xff);
255   SET_CNZ(t >> 8);
256256   write_mem16(0, t); // always writes result to regs A-B
257257   return WB_NO;
258258}
r250110r250111
502502   m_icount -= 15;
503503   UINT16 t = imm16();
504504   write_r16(imm8(), t);
505   SET_CNZ(t >> 8 & 0xff);
505   SET_CNZ(t >> 8);
506506}
507507
508508void tms7000_device::movd_inx()
r250110r250111
510510   m_icount -= 17;
511511   UINT16 t = imm16() + read_r8(1);
512512   write_r16(imm8(), t);
513   SET_CNZ(t >> 8 & 0xff);
513   SET_CNZ(t >> 8);
514514}
515515
516516void tms7000_device::movd_ind()
r250110r250111
518518   m_icount -= 14;
519519   UINT16 t = read_r16(imm8());
520520   write_r16(imm8(), t);
521   SET_CNZ(t >> 8 & 0xff);
521   SET_CNZ(t >> 8);
522522}
523523
524524// long branch
trunk/src/devices/machine/mos6530n.c
r250110r250111
5858
5959DEVICE_ADDRESS_MAP_START( io_map, 8, mos6532_t )
6060   ADDRESS_MAP_GLOBAL_MASK(0x1f)
61   AM_RANGE(0x00, 0x00) AM_MIRROR(0x18) AM_READWRITE(pa_data_r, pa_data_w)
62   AM_RANGE(0x01, 0x01) AM_MIRROR(0x18) AM_READWRITE(pa_ddr_r, pa_ddr_w)
63   AM_RANGE(0x02, 0x02) AM_MIRROR(0x18) AM_READWRITE(pb_data_r, pb_data_w)
64   AM_RANGE(0x03, 0x03) AM_MIRROR(0x18) AM_READWRITE(pb_ddr_r, pb_ddr_w)
61   AM_RANGE(0x00, 0x00) AM_MIRROR(0x18) AM_READWRITE(pa_data_r, pa_data_w)  // SWCHA
62   AM_RANGE(0x01, 0x01) AM_MIRROR(0x18) AM_READWRITE(pa_ddr_r, pa_ddr_w)    // SWACNT
63   AM_RANGE(0x02, 0x02) AM_MIRROR(0x18) AM_READWRITE(pb_data_r, pb_data_w)  // SWCHB
64   AM_RANGE(0x03, 0x03) AM_MIRROR(0x18) AM_READWRITE(pb_ddr_r, pb_ddr_w)    // SWBCNT
6565   AM_RANGE(0x14, 0x17) AM_WRITE(timer_off_w)
6666   AM_RANGE(0x1c, 0x1f) AM_WRITE(timer_on_w)
6767   AM_RANGE(0x04, 0x04) AM_MIRROR(0x12) AM_READ(timer_off_r)
r250110r250111
276276
277277void mos6530_base_t::device_reset()
278278{
279   m_pa_out = 0;
279   m_pa_out = 0xff;
280280   m_pa_ddr = 0;
281   m_pb_out = 0;
281   m_pb_out = 0xff; // a7800 One-On-One Basketball (1on1u) needs this or you can't start a game, it doesn't initialize it.  (see MT6060)
282282   m_pb_ddr = 0;
283283
284284   m_ie_timer = false;
trunk/src/devices/video/315_5313.c
r250110r250111
14521452
14531453                     xxx = (xpos+xtile*8)&0x1ff;
14541454
1455                     gfxdata = MEGADRIV_VDP_VRAM((base_addr+1)&0x7fff) | (MEGADRIV_VDP_VRAM((base_addr+0)&0x7fff)<<16);
1455                     gfxdata = MEGADRIV_VDP_VRAM(base_addr+1) | (MEGADRIV_VDP_VRAM(base_addr)<<16);
14561456
14571457                     for(loopcount=0;loopcount<8;loopcount++)
14581458                     {
trunk/src/devices/video/mc6845.c
r250110r250111
10321032   m_max_ras_addr = 0x1f;
10331033   m_vert_char_total = 0x7f;
10341034
1035   m_supports_disp_start_addr_r = true;
1035   m_supports_disp_start_addr_r = false;  // MC6845 can not read Display Start (double checked on datasheet)
10361036   m_supports_vert_sync_width = false;
10371037   m_supports_status_reg_d5 = false;
10381038   m_supports_status_reg_d6 = false;
r250110r250111
11681168{
11691169   mc6845_device::device_start();
11701170
1171   m_supports_disp_start_addr_r = false;
1171   m_supports_disp_start_addr_r = true;  // HD6845S can definitely read Display Start (double checked on datasheet)
11721172   m_supports_vert_sync_width = true;
11731173   m_supports_status_reg_d5 = false;
11741174   m_supports_status_reg_d6 = false;
trunk/src/emu/debug/debugcpu.c
r250110r250111
19311931         // flush any pending updates before waiting again
19321932         machine.debug_view().flush_osd_updates();
19331933
1934         machine.manager().web()->serve();
1935
19361934         // clear the memory modified flag and wait
19371935         global->memory_modified = false;
19381936         if (machine.debug_flags & DEBUG_FLAG_OSD_ENABLED)
trunk/src/emu/emuopts.c
r250110r250111
185185   { OPTION_AUTOBOOT_COMMAND ";ab",                     NULL,        OPTION_STRING,     "command to execute after machine boot" },
186186   { OPTION_AUTOBOOT_DELAY,                             "2",         OPTION_INTEGER,    "timer delay in sec to trigger command execution on autoboot" },
187187   { OPTION_AUTOBOOT_SCRIPT ";script",                  NULL,        OPTION_STRING,     "lua script to execute after machine boot" },
188   { OPTION_HTTP,                                       "0",         OPTION_BOOLEAN,    "enable local http server" },
189   { OPTION_HTTP_PORT,                                  "8080",      OPTION_STRING,     "http server listener port" },
190   { OPTION_HTTP_PATH,                                  "web",       OPTION_STRING,     "path to web files" },
191   { OPTION_CONSOLE,                                    "0",         OPTION_BOOLEAN,    "enable emulator LUA console" },
192188   { NULL }
193189};
194190
trunk/src/emu/emuopts.h
r250110r250111
189189#define OPTION_AUTOBOOT_DELAY       "autoboot_delay"
190190#define OPTION_AUTOBOOT_SCRIPT      "autoboot_script"
191191
192#define OPTION_HTTP                 "http"
193#define OPTION_HTTP_PORT            "http_port"
194#define OPTION_HTTP_PATH            "http_path"
195#define OPTION_CONSOLE              "console"
196
197192//**************************************************************************
198193//  TYPE DEFINITIONS
199194//**************************************************************************
r250110r250111
366361   int autoboot_delay() const { return int_value(OPTION_AUTOBOOT_DELAY); }
367362   const char *autoboot_script() const { return value(OPTION_AUTOBOOT_SCRIPT); }
368363
369   bool http() const { return bool_value(OPTION_HTTP); }
370   const char *http_port() const { return value(OPTION_HTTP_PORT); }
371   const char *http_path() const { return value(OPTION_HTTP_PATH); }
372   bool console() const { return bool_value(OPTION_CONSOLE); }
373
374364   // FIXME: Couriersud: This should be in image_device_exit
375365   void remove_device_options();
376366
trunk/src/emu/luaengine.c
r250110r250111
1717#include "osdepend.h"
1818#include "drivenum.h"
1919#include "ui/ui.h"
20#include "mongoose/mongoose.h"
2120
2221//**************************************************************************
2322//  LUA ENGINE
r250110r250111
862861   } while (1);
863862}
864863
864/*
865865static void *serve_lua(void *param)
866866{
867867   lua_engine *engine = (lua_engine *)param;
868868   engine->serve_lua();
869869   return NULL;
870870}
871*/
871872
872
873873//-------------------------------------------------
874874//  lua_engine - constructor
875875//-------------------------------------------------
r250110r250111
10251025
10261026void lua_engine::start_console()
10271027{
1028   mg_start_thread(::serve_lua, this);
10291028}
10301029
10311030//-------------------------------------------------
trunk/src/emu/machine.c
r250110r250111
393393         js_set_main_loop(this);
394394#endif
395395
396         manager().web()->serve();
397
398396         // execute CPUs if not paused
399397         if (!m_paused)
400398            m_scheduler.timeslice();
trunk/src/emu/mame.c
r250110r250111
117117machine_manager::machine_manager(emu_options &options,osd_interface &osd)
118118      : m_osd(osd),
119119      m_options(options),
120      m_web(options),
121120      m_new_driver_pending(NULL),
122121      m_machine(NULL)
123122{
r250110r250111
155154void machine_manager::update_machine()
156155{
157156   m_lua.set_machine(m_machine);
158   m_web.set_machine(m_machine);
159   if (m_machine!=NULL) m_web.push_message("update_machine");
160157}
161158
162159/*-------------------------------------------------
r250110r250111
175172   int error = MAMERR_NONE;
176173
177174   m_lua.initialize();
178   if (m_options.console()) {
179      m_lua.start_console();
180   }
181175   while (error == MAMERR_NONE && !exit_pending)
182176   {
183177      m_new_driver_pending = NULL;
trunk/src/emu/mame.h
r250110r250111
1818
1919#include <time.h>
2020
21#include "webengine.h"
22
2321class osd_interface;
2422
2523//**************************************************************************
r250110r250111
8987
9088   osd_interface &osd() const;
9189   emu_options &options() const { return m_options; }
92   web_engine *web() { return &m_web; }
9390   lua_engine *lua() { return &m_lua; }
9491
9592   running_machine *machine() { return m_machine; }
r250110r250111
105102   osd_interface &         m_osd;                  // reference to OSD system
106103   emu_options &           m_options;              // reference to options
107104
108   web_engine              m_web;
109105   lua_engine              m_lua;
110106
111107   const game_driver *     m_new_driver_pending;   // pointer to the next pending driver
trunk/src/emu/ui/ui.c
r250110r250111
374374      // loop while we have a handler
375375      while (m_handler_callback != handler_ingame && !machine().scheduled_event_pending() && !ui_menu::stack_has_special_main_menu())
376376      {
377         machine().manager().web()->serve();
378377         machine().video().frame_update();
379378      }
380379
trunk/src/emu/webengine.c
r250110r250111
1// license:BSD-3-Clause
2// copyright-holders:Miodrag Milanovic
3/***************************************************************************
4
5    webengine.c
6
7    Handle MAME internal web server.
8
9***************************************************************************/
10
11#include "mongoose/mongoose.h"
12#include "jsoncpp/include/json/json.h"
13#include "emu.h"
14#include "emuopts.h"
15#include "ui/ui.h"
16#include "webengine.h"
17#include "lua.hpp"
18
19#include "osdepend.h"
20
21//**************************************************************************
22//  WEB ENGINE
23//**************************************************************************
24
25char* websanitize_statefilename ( char* unsanitized )
26{
27   // It's important that we remove any dangerous characters from any filename
28   // we receive from a web client. This can be a serious security hole.
29   // As MAME/MESS policy is lowercase filenames, also lowercase it.
30
31   char* sanitized = new char[64];
32   int insertpoint =0;
33   char charcompare;
34
35   while (*unsanitized != 0)
36   {
37   charcompare = *unsanitized;
38      // ASCII 48-57 are 0-9
39      // ASCII 97-122 are lowercase A-Z
40
41      if ((charcompare >= 48 && charcompare <= 57) || (charcompare >= 97 && charcompare <= 122))
42      {
43         sanitized[insertpoint] = charcompare;
44         insertpoint++;
45         sanitized[insertpoint] = '\0'; // Make sure we're null-terminated.
46      }
47      // ASCII 65-90 are uppercase A-Z. These need to be lowercased.
48      if (charcompare >= 65 && charcompare <= 90)
49      {
50         sanitized[insertpoint] = tolower(charcompare); // Lowercase it
51         insertpoint++;
52         sanitized[insertpoint] = '\0'; // Make sure we're null-terminated.
53      }
54      unsanitized++;
55   }
56   return (sanitized);
57}
58
59int web_engine::json_game_handler(struct mg_connection *conn)
60{
61   Json::Value data;
62   data["name"] = m_machine->system().name;
63   data["description"] = m_machine->system().description;
64   data["year"] = m_machine->system().year;
65   data["manufacturer"] = m_machine->system().manufacturer;
66   data["parent"] = m_machine->system().parent;
67   data["source_file"] = m_machine->system().source_file;
68   data["flags"] = m_machine->system().flags;
69   data["ispaused"] = m_machine->paused();
70
71   Json::FastWriter writer;
72   std::string json = writer.write(data);
73   // Send HTTP reply to the client
74   mg_printf(conn,
75         "HTTP/1.1 200 OK\r\n"
76         "Content-Type: application/json\r\n"
77         "Content-Length: %d\r\n"        // Always set Content-Length
78         "\r\n"
79         "%s",
80         (int)json.length(), json.c_str());
81
82   // Returning non-zero tells mongoose that our function has replied to
83   // the client, and mongoose should not send client any more data.
84
85   return MG_TRUE;
86}
87
88int web_engine::json_slider_handler(struct mg_connection *conn)
89{
90   const slider_state *curslider;
91   std::string tempstring;
92   Json::Value array(Json::arrayValue);
93
94   // add all sliders
95   for (curslider = machine().ui().get_slider_list(); curslider != NULL; curslider = curslider->next)
96   {
97      INT32 curval = (*curslider->update)(machine(), curslider->arg, &tempstring, SLIDER_NOCHANGE);
98      Json::Value data;
99      data["description"] = curslider->description;
100      data["minval"] = curslider->minval;
101      data["maxval"] = curslider->maxval;
102      data["defval"] = curslider->defval;
103      data["incval"] = curslider->incval;
104      data["curval"] = curval;
105      array.append(data);
106   }
107
108   // add all sliders
109   for (curslider = (slider_state*)machine().osd().get_slider_list(); curslider != NULL; curslider = curslider->next)
110   {
111      INT32 curval = (*curslider->update)(machine(), curslider->arg, &tempstring, SLIDER_NOCHANGE);
112      Json::Value data;
113      data["description"] = curslider->description;
114      data["minval"] = curslider->minval;
115      data["maxval"] = curslider->maxval;
116      data["defval"] = curslider->defval;
117      data["incval"] = curslider->incval;
118      data["curval"] = curval;
119      array.append(data);
120   }
121   Json::FastWriter writer;
122   std::string json = writer.write(array);
123   // Send HTTP reply to the client
124   mg_printf(conn,
125         "HTTP/1.1 200 OK\r\n"
126         "Content-Type: application/json\r\n"
127         "Content-Length: %d\r\n"        // Always set Content-Length
128         "\r\n"
129         "%s",
130         (int)json.length(), json.c_str());
131
132   return MG_TRUE;
133}
134
135void reg_string(struct lua_State *L, const char *name, const char *val) {
136   lua_pushstring(L, name);
137   lua_pushstring(L, val);
138   lua_rawset(L, -3);
139}
140
141void reg_int(struct lua_State *L, const char *name, int val) {
142   lua_pushstring(L, name);
143   lua_pushinteger(L, val);
144   lua_rawset(L, -3);
145}
146
147void reg_function(struct lua_State *L, const char *name,
148                     lua_CFunction func, struct mg_connection *conn) {
149   lua_pushstring(L, name);
150   lua_pushlightuserdata(L, conn);
151   lua_pushcclosure(L, func, 1);
152   lua_rawset(L, -3);
153}
154
155static int lua_write(lua_State *L) {
156   int i, num_args;
157   const char *str;
158   size_t size;
159   struct mg_connection *conn = (struct mg_connection *)
160   lua_touserdata(L, lua_upvalueindex(1));
161
162   num_args = lua_gettop(L);
163   for (i = 1; i <= num_args; i++) {
164   if (lua_isstring(L, i)) {
165      str = lua_tolstring(L, i, &size);
166      mg_send_data(conn, str, size);
167   }
168   }
169
170   return 0;
171}
172
173static int lua_header(lua_State *L) {
174   struct mg_connection *conn = (struct mg_connection *)
175   lua_touserdata(L, lua_upvalueindex(1));
176
177   const char *header = luaL_checkstring(L,1);
178   const char *value  = luaL_checkstring(L,2);
179
180   mg_send_header(conn, header, value);
181
182   return 0;
183}
184
185
186static void prepare_lua_environment(struct mg_connection *ri, lua_State *L) {
187   extern void luaL_openlibs(lua_State *);
188   int i;
189
190   luaL_openlibs(L);
191
192   if (ri == NULL) return;
193
194   // Register mg module
195   lua_newtable(L);
196   reg_function(L, "write", lua_write, ri);
197   reg_function(L, "header", lua_header, ri);
198
199   // Export request_info
200   lua_pushstring(L, "request_info");
201   lua_newtable(L);
202   reg_string(L, "request_method", ri->request_method);
203   reg_string(L, "uri", ri->uri);
204   reg_string(L, "http_version", ri->http_version);
205   reg_string(L, "query_string", ri->query_string);
206   reg_string(L, "remote_ip", ri->remote_ip);
207   reg_int(L, "remote_port", ri->remote_port);
208   reg_string(L, "local_ip", ri->local_ip);
209   reg_int(L, "local_port", ri->local_port);
210   lua_pushstring(L, "content");
211   lua_pushlstring(L, ri->content == NULL ? "" : ri->content, ri->content_len);
212   lua_rawset(L, -3);
213   reg_int(L, "num_headers", ri->num_headers);
214   lua_pushstring(L, "http_headers");
215   lua_newtable(L);
216   for (i = 0; i < ri->num_headers; i++) {
217   reg_string(L, ri->http_headers[i].name, ri->http_headers[i].value);
218   }
219   lua_rawset(L, -3);
220   lua_rawset(L, -3);
221
222   lua_setglobal(L, "mg");
223
224}
225
226
227static void lsp(struct mg_connection *conn, const char *p, int len, lua_State *L) {
228   int i, j, pos = 0;
229   for (i = 0; i < len; i++) {
230   if (p[i] == '<' && p[i + 1] == '?') {
231      for (j = i + 1; j < len ; j++) {
232      if (p[j] == '?' && p[j + 1] == '>') {
233         if (i-pos!=0) mg_send_data(conn, p + pos, i - pos);
234         if (luaL_loadbuffer(L, p + (i + 2), j - (i + 2), "") == 0) {
235         lua_pcall(L, 0, LUA_MULTRET, 0);
236         }
237         pos = j + 2;
238         i = pos - 1;
239         break;
240      }
241      }
242   }
243   }
244   if (i > pos) {
245   mg_send_data(conn, p + pos, i - pos);
246   }
247}
248
249static int filename_endswith(const char *str, const char *suffix)
250{
251   if (!str || !suffix)
252      return 0;
253   size_t lenstr = strlen(str);
254   size_t lensuffix = strlen(suffix);
255   if (lensuffix >  lenstr)
256      return 0;
257   return strncmp(str + lenstr - lensuffix, suffix, lensuffix) == 0;
258}
259
260// This function will be called by mongoose on every new request.
261int web_engine::begin_request_handler(struct mg_connection *conn)
262{
263   std::string file_path = std::string(mg_get_option(m_server, "document_root")).append(PATH_SEPARATOR).append(conn->uri);
264   if (filename_endswith(file_path.c_str(), ".lp"))
265   {
266      FILE *fp = NULL;
267      if ((fp = fopen(file_path.c_str(), "rb")) != NULL) {
268      fseek (fp, 0, SEEK_END);
269      size_t size = ftell(fp);
270      fseek (fp, 0, SEEK_SET);
271      char *data = (char*)mg_mmap(fp,size);
272
273      lua_State *L = luaL_newstate();
274      prepare_lua_environment(conn, L);
275      lsp(conn, data, (int) size, L);
276      if (L != NULL) lua_close(L);
277      mg_munmap(data,size);
278      fclose(fp);
279      return MG_TRUE;
280      } else {
281      return MG_FALSE;
282      }
283   }
284   else if (!strncmp(conn->uri, "/json/",6))
285   {
286      if (!strcmp(conn->uri, "/json/game"))
287      {
288         return json_game_handler(conn);
289      }
290      if (!strcmp(conn->uri, "/json/slider"))
291      {
292         return json_slider_handler(conn);
293      }
294   }
295   else if (!strncmp(conn->uri, "/keypost",8))
296   {
297      // Is there any sane way to determine the length of the buffer before getting it?
298      // A request for a way was previously filed with the mongoose devs,
299      // but it looks like it was never implemented.
300
301      // For now, we'll allow a paste buffer of 32k.
302      // To-do: Send an error if the paste is too big?
303      char cmd_val[32768];
304
305      int pastelength = mg_get_var(conn, "val", cmd_val, sizeof(cmd_val));
306      if (pastelength > 0) {
307         machine().ioport().natkeyboard().post_utf8(cmd_val);
308      }
309      // Send HTTP reply to the client
310      mg_printf(conn,
311         "HTTP/1.1 200 OK\r\n"
312         "Content-Type: text/plain\r\n"
313         "Content-Length: 2\r\n"        // Always set Content-Length
314         "\r\n"
315         "OK");
316
317      // Returning non-zero tells mongoose that our function has replied to
318      // the client, and mongoose should not send client any more data.
319      return MG_TRUE;
320   }
321   else if (!strncmp(conn->uri, "/keyupload",8))
322   {
323      char *upload_data;
324      int data_length, ofs = 0;
325      char var_name[100], file_name[255];
326      while ((ofs = mg_parse_multipart(conn->content + ofs, conn->content_len - ofs, var_name, sizeof(var_name), file_name, sizeof(file_name), (const char **)&upload_data, &data_length)) > 0) {
327            mg_printf_data(conn, "File: %s, size: %d bytes", file_name, data_length);
328      }
329
330      // That upload_data contains more than we need. It also has the headers.
331      // We'll need to strip it down to just what we want.
332
333      if ((&data_length > 0) && (sizeof(file_name) > 0))
334      {
335         // MSVC doesn't yet support variable-length arrays, so chop the string the old-fashioned way
336         upload_data[data_length] = '\0';
337
338         // Now paste the stripped down paste_data..
339         machine().ioport().natkeyboard().post_utf8(upload_data);
340      }
341      return MG_TRUE;
342   }
343   else if (!strncmp(conn->uri, "/cmd",4))
344   {
345      char cmd_name[64];
346      mg_get_var(conn, "name", cmd_name, sizeof(cmd_name));
347
348      if(!strcmp(cmd_name,"softreset"))
349      {
350         m_machine->schedule_soft_reset();
351      }
352      else if(!strcmp(cmd_name,"hardreset"))
353      {
354         m_machine->schedule_hard_reset();
355      }
356      else if(!strcmp(cmd_name,"exit"))
357      {
358         m_machine->schedule_exit();
359      }
360      else if(!strcmp(cmd_name,"togglepause"))
361      {
362         if (m_machine->paused())
363            m_machine->resume();
364      else
365            m_machine->pause();
366      }
367      else if(!strcmp(cmd_name,"savestate"))
368      {
369         char cmd_val[64];
370         mg_get_var(conn, "val", cmd_val, sizeof(cmd_val));
371         char *filename = websanitize_statefilename(cmd_val);
372         m_machine->schedule_save(filename);
373      }
374      else if(!strcmp(cmd_name,"loadstate"))
375      {
376         char cmd_val[64];
377         mg_get_var(conn, "val", cmd_val, sizeof(cmd_val));
378         char *filename = cmd_val;
379         m_machine->schedule_load(filename);
380      }
381      else if(!strcmp(cmd_name,"loadauto"))
382      {
383         // This is here to just load the autosave and only the autosave.
384         m_machine->schedule_load("auto");
385      }
386
387      // Send HTTP reply to the client
388      mg_printf(conn,
389            "HTTP/1.1 200 OK\r\n"
390            "Content-Type: text/plain\r\n"
391            "Content-Length: 2\r\n"        // Always set Content-Length
392            "\r\n"
393            "OK");
394
395      // Returning non-zero tells mongoose that our function has replied to
396      // the client, and mongoose should not send client any more data.
397      return MG_TRUE;
398   }
399   else if (!strncmp(conn->uri, "/slider",7))
400   {
401      char cmd_id[64];
402      char cmd_val[64];
403      mg_get_var(conn, "id", cmd_id, sizeof(cmd_id));
404      mg_get_var(conn, "val", cmd_val, sizeof(cmd_val));
405      int cnt = 0;
406      int id = atoi(cmd_id);
407      const slider_state *curslider;
408      for (curslider = machine().ui().get_slider_list(); curslider != NULL; curslider = curslider->next)
409      {
410         if (cnt==id)
411            (*curslider->update)(machine(), curslider->arg, NULL, atoi(cmd_val));
412         cnt++;
413      }
414      for (curslider = (slider_state*)machine().osd().get_slider_list(); curslider != NULL; curslider = curslider->next)
415      {
416         if (cnt==id)
417            (*curslider->update)(machine(), curslider->arg, NULL, atoi(cmd_val));
418         cnt++;
419      }
420
421      // Send HTTP reply to the client
422      mg_printf(conn,
423            "HTTP/1.1 200 OK\r\n"
424            "Content-Type: text/plain\r\n"
425            "Content-Length: 2\r\n"        // Always set Content-Length
426            "\r\n"
427            "OK");
428
429      // Returning non-zero tells mongoose that our function has replied to
430      // the client, and mongoose should not send client any more data.
431      return MG_TRUE;
432   }
433   else if (!strncmp(conn->uri, "/screenshot.png",15))
434   {
435      screen_device_iterator iter(m_machine->root_device());
436      screen_device *screen = iter.first();
437
438      if (screen == NULL)
439      {
440         return 0;
441      }
442
443      std::string fname("screenshot.png");
444      emu_file file(m_machine->options().snapshot_directory(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
445      file_error filerr = file.open(fname.c_str());
446
447      if (filerr != FILERR_NONE)
448      {
449         return 0;
450      }
451
452      m_machine->video().save_snapshot(screen, file);
453      std::string fullpath(file.fullpath());
454      file.close();
455      mg_send_header(conn, "Cache-Control", "no-cache, no-store, must-revalidate");
456      mg_send_header(conn, "Pragma", "no-cache");
457      mg_send_header(conn, "Expires", "0");
458      mg_send_file(conn, fullpath.c_str(), NULL);
459      return MG_MORE; // It is important to return MG_MORE after mg_send_file!
460   }
461   return 0;
462}
463
464static int ev_handler(struct mg_connection *conn, enum mg_event ev) {
465   if (ev == MG_REQUEST) {
466   if (conn->is_websocket) {
467      // This handler is called for each incoming websocket frame, one or more
468      // times for connection lifetime.
469      // Echo websocket data back to the client.
470      return conn->content_len == 4 && !memcmp(conn->content, "exit", 4) ? MG_FALSE : MG_TRUE;
471   } else {
472      web_engine *engine = static_cast<web_engine *>(conn->server_param);
473      return engine->begin_request_handler(conn);
474   }
475   } else if (ev== MG_WS_CONNECT) {
476   // New websocket connection. Send connection ID back to the client.
477   mg_websocket_printf(conn, WEBSOCKET_OPCODE_TEXT, "update_machine");
478   return MG_FALSE;
479   } else if (ev == MG_AUTH) {
480   return MG_TRUE;
481   } else {
482   return MG_FALSE;
483   }
484}
485
486//-------------------------------------------------
487//  web_engine - constructor
488//-------------------------------------------------
489
490web_engine::web_engine(emu_options &options)
491   : m_options(options),
492      m_machine(NULL),
493      m_server(NULL),
494      //m_lastupdatetime(0),
495      m_exiting_core(false),
496      m_http(m_options.http())
497
498{
499   if (m_http) {
500      m_server = mg_create_server(this, ev_handler);
501
502      mg_set_option(m_server, "listening_port", options.http_port());
503      mg_set_option(m_server, "document_root",  options.http_path());
504   }
505
506}
507
508//-------------------------------------------------
509//  ~web_engine - destructor
510//-------------------------------------------------
511
512web_engine::~web_engine()
513{
514   if (m_http)
515      close();
516}
517
518//-------------------------------------------------
519//  close - close and cleanup of lua engine
520//-------------------------------------------------
521
522void web_engine::close()
523{
524   m_exiting_core = 1;
525   // Cleanup, and free server instance
526   mg_destroy_server(&m_server);
527}
528
529void web_engine::serve()
530{
531   if (m_http) mg_poll_server(m_server, 0);
532}
533
534void web_engine::push_message(const char *message)
535{
536   struct mg_connection *c;
537   if (m_server!=NULL) {
538      // Iterate over all connections, and push current time message to websocket ones.
539      for (c = mg_next(m_server, NULL); c != NULL; c = mg_next(m_server, c)) {
540         if (c->is_websocket) {
541            mg_websocket_write(c, 1, message, strlen(message));
542         }
543      }
544   }
545}
trunk/src/emu/webengine.h
r250110r250111
1// license:BSD-3-Clause
2// copyright-holders:Miodrag Milanovic
3/***************************************************************************
4
5    webengine.h
6
7    Handle MAME internal web server.
8
9***************************************************************************/
10
11#pragma once
12
13#ifndef __WEB_ENGINE_H__
14#define __WEB_ENGINE_H__
15
16struct mg_server;      // Handle for the HTTP server itself
17struct mg_connection;  // Handle for the individual connection
18
19class web_engine
20{
21public:
22   // construction/destruction
23   web_engine(emu_options &options);
24   ~web_engine();
25
26   void serve();
27   void push_message(const char *message);
28   void close();
29
30   void set_machine(running_machine *machine) { m_machine = machine; }
31   int begin_request_handler(struct mg_connection *conn);
32protected:
33   // getters
34   running_machine &machine() const { return *m_machine; }
35
36   int json_game_handler(struct mg_connection *conn);
37   int json_slider_handler(struct mg_connection *conn);
38private:
39   // internal state
40   emu_options &       m_options;
41   running_machine *   m_machine;
42   struct mg_server *  m_server;
43   //osd_ticks_t         m_lastupdatetime;
44   bool                m_exiting_core;
45   bool                m_http;
46};
47
48#endif  /* __web_engine_H__ */
trunk/src/mame/arcade.lst
r250110r250111
1210012100adonis          // (c) 1998
1210112101adonisa         // (c) 1998
1210212102swheart2        // (c) 1998
12103thgamblr        // (c) 1998
1210312104reelrock        // (c) 1998
1210412105indiandr        // (c) 1998
1210512106chariotc        // (c) 1998
r250110r250111
1211012111magicmska       // (c) 2000
1211112112margmgc         // (c) 2000
1211212113marmagic        // (c) 2000
12114prtygras        // (c) 2001
1211312115geishanz        // (c) 2001
1211412116adonise         // (c) 2001
1211512117koalamnt        // (c) 2001
r250110r250111
1323713239// Atari TTL logic games + roms
1323813240antiairc        // (c) 1975 Atari
1323913241crashnsc        // (c) 1975 Atari
13240indy4           // (c) 1976 Atari
13242indy4           // (c) 1976 Atari / Kee
1324113243indy800         // (c) 1975 Atari / Kee
1324213244jetfight        // (c) 1975 Atari
1324313245jetfighta       // (c) 1975 Atari
1324413246outlaw          // (c) 1976 Atari
13245sharkjaw        // (c) 1975 Atari
13247sharkjaw        // (c) 1975 Atari / Horror Games
1324613248steeplec        // (c) 1975 Atari
1324713249stuntcyc        // (c) 1976 Atari
13248tank            // (c) 1974 Atari
13250tank            // (c) 1974 Atari / Kee
13251tankii          // (c) 1975 Atari / Kee
1324913252
1325013253// Atari TTL Missing Rom Dumps
13251//astrotrf
13252//lemans
13253//gtrak10
13254//gtrak20
13255//quack
13254//astrotrf      // (c) 1975 Atari
13255//lemans        // (c) 1974 Atari
13256//gtrak10       // (c) 1974 Atari / Kee
13257//gtrak20       // (c) 1976 Atari / Kee
13258//qwak          // (c) 1974 Atari
1325613259
1325713260// Atari 100% TTL
1325813261pong            // (c) 1972 Atari
13259pongd           // (c) 1975 Atari
1326013262pongf           // (c) 1972 Atari
13263pongd           // (c) 1973 Atari
1326113264breakout        // (c) 1976 Atari
13262//coupedem
13263//goal4
13264//gotchaat
13265//gotchaatc
13266//highway
13267//pinpong
13268//pursuit
13269//quadpong
13270//rebound
13271//spacrace
13272//touchme
13265//cktpong       // (c) 1974 Atari / National Entertainment Co.
13266//coupedav      // (c) 1973 Atari France
13267//coupfran      // (c) 1974 Atari Europe
13268//drpong        // (c) 1974 Atari
13269//pupppong      // (c) 1974 Atari
13270//snoopong      // (c) 1974 Atari
13271//suprpong      // (c) 1974 Atari
13272//breakckt      // (c) 1976 Atari
13273//consolet      // (c) 1976 Atari Europe
13274//crossfir      // (c) 1975 Atari / Kee
13275//eliminat      // (c) 1973 Atari / Kee
13276//goaliv        // (c) 1975 Atari
13277//gotchaat      // (c) 1973 Atari
13278//gotchaatc     // (c) 1973 Atari
13279//hiway         // (c) 1975 Atari
13280//pinpong       // (c) 1974 Atari
13281//pursuit       // (c) 1975 Atari / Kee
13282//quadpong      // (c) 1974 Atari
13283//rebound       // (c) 1974 Atari / Kee
13284//spacrace      // (c) 1973 Atari
13285//touchme       // (c) 1974 Atari
13286//worldcup      // (c) 1974 Atari
1327313287
1327413288// Meadows TTL
13275bombaway
13276ckidzo
13277cgunship
13278mead4in1
13289bombaway      // (c) 1976 Meadows
13290ckidzo        // (c) 1976 Meadows
13291cgunship      // (c) 1976 Meadows
13292mead4in1      // (c) 197? Meadows
1327913293
1328013294// Misc TTL + roms
13281tv21          // (c) 197? A-1 Supply
13282tv21_3        // (c) 197? A-1 Supply
13283tvpoker       // (c) 197? A-1 Supply
1328413295sburners      // (c) 1975 Allied Leisure
1328513296fun4          // (c) 1976 Bailey
1328613297fun4a         // (c) 1976 Bailey
r250110r250111
1329213303biplane4      // (c) 1976 Fun Games
1329313304take5         // (c) 1975 Fun Games
1329413305dpatrol       // (c) 1977 PSE
13306//knightar    // (c) 1976 PSE
13307//gametree    // (c) 1978 PSE
1329513308vollyrmt      // (c) 1973 Ramtek
1329613309hockyrmt      // (c) 1973 Ramtek
1329713310soccrrmt      // (c) 1973 Ramtek
r250110r250111
1330813321ttblock       // (c) 1977 Taito
1330913322zzblock       // (c) 1979 Taito
1331013323
13324// A-1 Supply
13325tv21          // (c) 197? A-1 Supply
13326tv21_3        // (c) 197? A-1 Supply
13327tvpoker       // (c) 197? A-1 Supply
13328
1331113329// JPM System 5 + Video Expansion 2
1331213330monopoly    // Monopoly (JPM)
1331313331monopolya   // Monopoly (JPM)
trunk/src/mame/drivers/a2600.c
r250110r250111
1010
1111***************************************************************************/
1212
13// the new RIOT does not work with the SuperCharger
14// for example "mame64 a2600 scharger -cass offifrog" fails to load after playing the tape
15#define USE_NEW_RIOT 0
16
17
1318#include "emu.h"
14#include "machine/mos6530n.h"
19
1520#include "cpu/m6502/m6507.h"
1621#include "sound/tiaintf.h"
1722#include "video/tia.h"
r250110r250111
2328#include "bus/vcs/compumat.h"
2429#include "bus/vcs_ctrl/ctrl.h"
2530
31
32
33#if USE_NEW_RIOT
34#include "machine/mos6530n.h"
35#else
36#include "machine/6532riot.h"
37#endif
38
39
2640#define CONTROL1_TAG    "joyport1"
2741#define CONTROL2_TAG    "joyport2"
2842
2943
44
3045class a2600_state : public driver_device
3146{
3247public:
r250110r250111
7388   required_device<m6507_device> m_maincpu;
7489   required_device<screen_device> m_screen;
7590   required_ioport m_swb;
91#if USE_NEW_RIOT
7692   required_device<mos6532_t> m_riot;
93#else
94   required_device<riot6532_device> m_riot;
95#endif
96   
7797};
7898
7999
r250110r250111
88108static ADDRESS_MAP_START(a2600_mem, AS_PROGRAM, 8, a2600_state ) // 6507 has 13-bit address space, 0x0000 - 0x1fff
89109   AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x0f00) AM_DEVREADWRITE("tia_video", tia_video_device, read, write)
90110   AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x0d00) AM_RAM AM_SHARE("riot_ram")
111#if USE_NEW_RIOT
91112   AM_RANGE(0x0280, 0x029f) AM_MIRROR(0x0d00) AM_DEVICE("riot", mos6532_t, io_map)
113#else
114   AM_RANGE(0x0280, 0x029f) AM_MIRROR(0x0d00) AM_DEVREADWRITE("riot", riot6532_device, read, write)
115#endif
92116   // AM_RANGE(0x1000, 0x1fff) is cart data and it is configured at reset time, depending on the mounted cart!
93117ADDRESS_MAP_END
94118
r250110r250111
116140   }
117141   else if (masked_offset < 0x2a0)
118142   {
143#if USE_NEW_RIOT
119144      ret = m_riot->io_r(space, masked_offset);
145#else
146      ret = m_riot->read(space, masked_offset);
147#endif
120148   }
121149   else if (masked_offset < 0x300)
122150   {
r250110r250111
148176   }
149177   else if (masked_offset < 0x2a0)
150178   {
179#if USE_NEW_RIOT
151180      m_riot->io_w(space, masked_offset, data);
181#else
182      m_riot->write(space, masked_offset, data);
183#endif
152184   }
153185   else if (masked_offset < 0x300)
154186   {
r250110r250111
563595   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90)
564596
565597   /* devices */
598#if USE_NEW_RIOT
566599   MCFG_DEVICE_ADD("riot", MOS6532n, MASTER_CLOCK_NTSC / 3)
567   MCFG_MOS6530n_IN_PA_CB(READ8(a2600_state, switch_A_r))
568   MCFG_MOS6530n_OUT_PA_CB(WRITE8(a2600_state, switch_A_w))
569   MCFG_MOS6530n_IN_PB_CB(READ8(a2600_state, riot_input_port_8_r))
570   MCFG_MOS6530n_OUT_PB_CB(WRITE8(a2600_state, switch_B_w))
571   MCFG_MOS6530n_IRQ_CB(WRITELINE(a2600_state, irq_callback))
600    MCFG_MOS6530n_IN_PA_CB(READ8(a2600_state, switch_A_r))
601    MCFG_MOS6530n_OUT_PA_CB(WRITE8(a2600_state, switch_A_w))
602    MCFG_MOS6530n_IN_PB_CB(READ8(a2600_state, riot_input_port_8_r))
603    MCFG_MOS6530n_OUT_PB_CB(WRITE8(a2600_state, switch_B_w))
604    MCFG_MOS6530n_IRQ_CB(WRITELINE(a2600_state, irq_callback))
605#else
606   MCFG_DEVICE_ADD("riot", RIOT6532, MASTER_CLOCK_NTSC / 3)   
607   MCFG_RIOT6532_IN_PA_CB(READ8(a2600_state, switch_A_r))
608   MCFG_RIOT6532_OUT_PA_CB(WRITE8(a2600_state, switch_A_w))
609   MCFG_RIOT6532_IN_PB_CB(READ8(a2600_state, riot_input_port_8_r))
610   MCFG_RIOT6532_OUT_PB_CB(WRITE8(a2600_state, switch_B_w))
611   MCFG_RIOT6532_IRQ_CB(WRITELINE(a2600_state, irq_callback))
612#endif
572613
573614   MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, "joy")
574615   MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, NULL)
r250110r250111
604645   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90)
605646
606647   /* devices */
607   MCFG_DEVICE_ADD("riot", MOS6532n, MASTER_CLOCK_PAL / 3)
608   MCFG_MOS6530n_IN_PA_CB(READ8(a2600_state, switch_A_r))
609   MCFG_MOS6530n_OUT_PA_CB(WRITE8(a2600_state, switch_A_w))
610   MCFG_MOS6530n_IN_PB_CB(READ8(a2600_state, riot_input_port_8_r))
611   MCFG_MOS6530n_OUT_PB_CB(WRITE8(a2600_state, switch_B_w))
612   MCFG_MOS6530n_IRQ_CB(WRITELINE(a2600_state, irq_callback))
648#if USE_NEW_RIOT
649    MCFG_DEVICE_ADD("riot", MOS6532n, MASTER_CLOCK_PAL / 3)
650    MCFG_MOS6530n_IN_PA_CB(READ8(a2600_state, switch_A_r))
651    MCFG_MOS6530n_OUT_PA_CB(WRITE8(a2600_state, switch_A_w))
652    MCFG_MOS6530n_IN_PB_CB(READ8(a2600_state, riot_input_port_8_r))
653    MCFG_MOS6530n_OUT_PB_CB(WRITE8(a2600_state, switch_B_w))
654    MCFG_MOS6530n_IRQ_CB(WRITELINE(a2600_state, irq_callback))
655#else
656   MCFG_DEVICE_ADD("riot", RIOT6532, MASTER_CLOCK_PAL / 3)
657   MCFG_RIOT6532_IN_PA_CB(READ8(a2600_state, switch_A_r))
658   MCFG_RIOT6532_OUT_PA_CB(WRITE8(a2600_state, switch_A_w))
659   MCFG_RIOT6532_IN_PB_CB(READ8(a2600_state, riot_input_port_8_r))
660   MCFG_RIOT6532_OUT_PB_CB(WRITE8(a2600_state, switch_B_w))
661   MCFG_RIOT6532_IRQ_CB(WRITELINE(a2600_state, irq_callback))
662#endif
613663
614664   MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, "joy")
615665   MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, NULL)
trunk/src/mame/drivers/aristmk5.c
r250110r250111
11151115   ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
11161116ROM_END
11171117
1118// MV4084/1 - 10 Credit Multiplier / 9 Line Multiline.
1119// THE GAMBLER - Export  A - 30/10/98.
1120// Marked as EHG0916 and 92.268%.
1121// All devices are 27c4002 instead of 27c4096.
1122ROM_START( thgamblr )
1123   ARISTOCRAT_MK5_BIOS
1124   ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
1125   ROM_LOAD32_WORD( "ehg0916_the_gambler.u7",  0x000000, 0x80000, CRC(7524c954) SHA1(0a895d1e2d09a2c873bbbbeb37bc59c25f3c577c) )  // 92.268%
1126   ROM_LOAD32_WORD( "ehg0916_the_gambler.u11", 0x000002, 0x80000, CRC(f29a6932) SHA1(17761218a04d36a599c987b4e13c0e3f46b7793f) )  // 92.268%
1127   ROM_LOAD32_WORD( "ehg0916_the_gambler.u8",  0x100000, 0x80000, CRC(e2221fdf) SHA1(8a7b2d5de68ae66fe1915a6faac6277249e3fb53) )  // base
1128   ROM_LOAD32_WORD( "ehg0916_the_gambler.u12", 0x100002, 0x80000, CRC(ebe957f9) SHA1(539945ec9beafe2c83051208370588fce2334f16) )  // base
1129
1130   ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
1131
1132   ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
1133
1134   ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
1135ROM_END
1136
11181137// MV4098 - 10 Credit Multiplier / 9 Line Multiline.
11191138// BOOT SCOOTIN' - Export A - 25/08/99.
11201139// All devices are 27c4002 instead of 27c4096.
r250110r250111
12581277   ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
12591278ROM_END
12601279
1280// MV4115/3 - 20 Line Multiline / 3,5,10,20,25,50 Credit Multiplier.
1281// Party Gras - Export  B - 06/02/2001.
1282// Marked as BHG1284 and touch.
1283ROM_START( prtygras )
1284   ARISTOCRAT_MK5_BIOS
1285   ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
1286   ROM_LOAD32_WORD( "bhg1284_party_grass.u7",  0x000000, 0x80000, CRC(02ed0631) SHA1(ae2c89c876a030d325ec94490d293deba772630e) )
1287   ROM_LOAD32_WORD( "bhg1284_party_grass.u11", 0x000002, 0x80000, CRC(7ac80cd9) SHA1(70e910784a1e1ea8820005082e76223a85a3c346) )
1288   ROM_LOAD32_WORD( "bhg1284_party_grass.u8",  0x100000, 0x80000, CRC(28774b9a) SHA1(ebdd738a73ffa7c5238640f4d7956751f7bb6243) )
1289   ROM_LOAD32_WORD( "bhg1284_party_grass.u12", 0x100002, 0x80000, CRC(942835c1) SHA1(fefc509311716559ac6b836a56b2c981907d499b) )
1290
1291   ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
1292
1293   ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
1294
1295   ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
1296ROM_END
1297
12611298// MV4115/6 - 9/20 Line Multiline Multiplier.
12621299// Party Gras [Reel Game] - Export A - 10/11/2001.
12631300// All devices are 27c4002 instead of 27c4096.
r250110r250111
13071344GAME( 1998, adonisa,   adonis,   aristmk5,     aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Adonis (0100751V, NSW/ACT)",                     MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 602/9,    A - 25/05/98, Rev 9
13081345GAME( 1998, swheart2,  aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Sweet Hearts II (PHG0742, Export, 92.252%)",     MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // MV4061,   A - 29/06/98
13091346GAME( 1998, reelrock,  0,        aristmk5,     aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Reelin-n-Rockin (0100779V, Local)",              MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 628,      A - 13/07/98
1347GAME( 1998, thgamblr,  aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "The Gambler (EHG0916, Export, 92.268%)",         MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // MV4084/1, A - 30/10/98
13101348GAME( 1998, indiandr,  0,        aristmk5,     aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Indian Dreaming (0100845V, Local)",              MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 628/1,    B - 15/12/98
13111349GAME( 1998, chariotc,  0,        aristmk5,     aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "The Chariot Challenge (04J00714, NSW/ACT)",      MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 630,      A - 10/08/98, Rev 12
13121350GAME( 1999, wtiger,    0,        aristmk5,     aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "White Tiger Classic (0200954V, NSW/ACT)",        MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 638/1,    B - 08/07/99
r250110r250111
13161354GAME( 2000, magicmska, magicmsk, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Magic Mask (MV4115, Export, set 2)",             MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // MV4115,   A - 09/05/00
13171355GAME( 2000, margmgc,   0,        aristmk5,     aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Margarita Magic (01J00101, NSW/ACT)",            MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // JB005,    A - 07/07/00
13181356GAME( 2000, marmagic,  aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Margarita Magic (EHG1559, NSW/ACT)",             MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // US003,    A - 07/07/00
1357GAME( 2001, prtygras,  aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Party Gras (MV4115/3, Export, touch)",           MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // MV4115/3, B - 06/02/01
13191358GAME( 2001, geishanz,  0,        aristmk5,     aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Geisha (0101408V, New Zealand)",                 MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // MV4127,   A - 05/03/01
13201359GAME( 2001, adonise,   aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Adonis (MV4124/1, Export)",                      MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // MV4124/1, B - 31/07/01
13211360GAME( 2001, koalamnt,  aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Koala Mint (MV4137, Export)",                    MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // MV4137,   A - 12/09/01
trunk/src/mame/drivers/atarittl.c
r250110r250111
55 Atari / Kee Games Driver - Discrete Games made in the 1970's
66
77
8 Atari / Kee Games List and Data based, in part from:
8 Atari / Kee Games List (except for most Pong games) - Data based, in part from:
99
1010 - Andy's collection of Bronzeage Atari Video Arcade PCB's"
1111 http://www.andysarcade.net/personal/bronzeage/index.htm
r250110r250111
1919 Technical Manual #s  Game Name(s)                                               Atari Part #'s                     Data      PROM/ROM Chip Numbers
2020 -------------------+----------------------------------------------------------+----------------------------------+---------+---------------------------------------
2121 TM-025               Anti-Aircraft (1975)                                       A000951                            YES       003127
22 TM-058               Breakout/Breakout Cocktail/Consolette (1976)               A004533                            NO
23 TM-015               Cocktail Pong/Coup Franc (1974)                            ???????                            NO
2422 TM-048               Crash 'N Score/Stock Car (1975)                            A004256                            YES       003186(x2), 003187(x2), 004248, 004247
25 TM-030               Crossfire (1975)                                           ???????                            NO
26 TM-0??               Dr. Pong/Puppy Pong/Snoopy Pong (1974)                     ???????                            NO
27 TM-035               Goal IV/Goal/4 (1975)                                      A000823                            NO
23 TM-030               Crossfire (1975)                                           ???????                            NO?
24 TM-022               Elimination! (1973)                                        A000845                            NO
25 TM-035               Goal IV (1975)                                             A000823                            NO
2826 TM-016               Gotcha/Gotcha Color? (1973)                                A000816                            NO
2927 TM-003,005,011,020   Gran Trak 10/Trak 10/Formula K (1974)                      A000872,A000872 K3RT               YES       74186 Racetrack Prom (K5)
3028 TM-004,021           Gran Trak 20/Trak 20/Twin Racer (1974)                     A001791(RT20),A001793(A20-K4DRTA)  YES       74186 Racetrack prom (K5)
31 TM-028               Highway/Hi-Way (1975)                                      A003211                            NO
29 TM-028               Hi-Way/Highway (1975)                                      A003211                            NO
3230 TM-055               Indy 4 (1976)                                              A003000,A006268,A006270            YES       003186, 003187, 005502-01, 05503-01
3331 TM-026               Indy 800 (1975)                                            A003000,A003170,A003182            YES       003186-003189 (4)
3432                                                                                 A003184,A003191,A003198,A003199
3533 TM-027,052           Jet Fighter/Jet Fighter Cocktail/Launch Aircraft (1975)    A004254,A004255                    YES       004250-004252, 004253-01 to 03 (3)
36 TM-077               LeMans (1976)                                              A005844,A005845                    YES       005837-01, 005838-01, 005839-01
34 TM-077               Le Mans (1976)                                              A005844,A005845                    YES       005837-01, 005838-01, 005839-01
3735 TM-040               Outlaw (1976)                                              A003213                            YES       003323 - ROM (8205 @ J4)
3836 TM-007               Pin Pong (1974)                                            A001660                            NO
39 TM-013               Pong (1972)                                                A001433                            NO
40 TM-014               Pong Doubles/Coupe Davis (1974)                            A000785                            NO
41 TM-019               Pursuit (1975)                                             K8P-B 90128                        YES
42 TM-012,022,034       Quadrapong/Elimination (1974)                              A000845                            NO
37 TM-019               Pursuit (1975)                                             K8P-B 90128                        NO
38 TM-012,034           Quadrapong (1974)                                          A000845                            NO
4339 TM-009               Qwak!/Quack (1974)                                         A000937,A000953                    YES       72074/37-2530N (K9)
44 TM-001,032           Rebound/Volleyball (1974)                                  A000517,A000846                    NO
45 TM-047               Shark Jaws (1975)                                          A003806                            YES       004182, 004183
46 TM-008               Space Race (1974)                                          A000803                            NO
47 TM-023               Spike  (1974)                                              SPIKE-(A or B)                     NO
40 TM-001,023,032       Rebound/Spike/Volleyball (1974)                            A000517,A000846,SPIKE-(A or B)     NO
41 TM-047               Shark JAWS (1975)                                          A003806                            YES       004182, 004183
42 TM-008               Space Race (1973)                                          A000803                            NO
4843 TM-046               Steeplechase/Astroturf (1975)                              A003750                            YES       003774 ROM Bugle (C8), 003773-01 "A" Horse (C4), 003773-02 "B" Horse (D4)
4944 TM-057               Stunt Cycle (1976)                                         A004128                            YES       004275 ROM Motorcycle/Bus (1F), 004811 ROM Score Translator (D7)
50 422                  Superpong (1974)                                           A000423                            NO
51 TM-010,036,049       Tank/Tank Cocktail/Tank II (1974/1975)                     A003111 (K5T-F 90124)              YES       90-2006
52 TM-002               Touch Me (1974)                                            ???????                            NO
45 TM-010,036           Tank/Tank Cocktail (1974)                                  A003111 (K5T-F 90124)              YES       90-2006 004800SD Tank Rom (K10)
46 TM-049               Tank II (1975)                                             K5T-F 90124                        YES       90-2006
47 TM-002               Touch-Me (1974)                                            ???????                            NO
5348 TM-006,017           World Cup/World Cup Football/Coupe du Monde (1974)         A000823                            NO
5449 
5550 - Not Known to be released or produced, but at least announced.
5651
5752 TM-0??               Arcade Driver/Driver First Person (Not Produced/Released) (197?)
5853 TM-018               Dodgeball/Dodgem (Not Produced/Released) (1975)
59 TM-024               Qwakers (Not Produced/Released) (1974?)
54 TM-024               Qwakers (Not Produced/Released) (1974?) (Kee Games clone of Qwak!?)
6055
6156
6257***************************************************************************/
r250110r250111
309304   ROM_LOAD( "90-2006.k10" ,0x0000, 0x0801, CRC(c25f6014) SHA1(7bd3fca5f64c928a645ca27c643b736667cef216) )
310305ROM_END
311306
307ROM_START( tankii )
308   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
312309
310   /* The "custom" 24-pin ROM used in Atari/Kee Games "Tank" is known as a MOSTEK MK28000P. */
311   ROM_REGION( 0x0801, "gfx", ROMREGION_ERASE00 ) // 2049 Byte Size?
312   ROM_LOAD( "90-2006.k10" ,0x0000, 0x0801, CRC(c25f6014) SHA1(7bd3fca5f64c928a645ca27c643b736667cef216) )
313ROM_END
314
313315/*  // NO DUMPED ROMS
314316
315// Astroturf (1975)
316317ROM_START( astrotrf )
317318    ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
318319
r250110r250111
321322    ROM_LOAD( "003773-02.c4",  0x0100, 0x0100, NO_DUMP ) // Graphics (Astroturf - Rev.A)
322323ROM_END
323324
324// Gran Trak 10 / Trak 10 / Formula K / Race Circuit (1974)
325325ROM_START( gtrak10 )  // Unknown size, assumed 2K Bytes
326326    ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
327327
r250110r250111
329329    ROM_LOAD( "74168.k5",     0x0000, 0x0800, NO_DUMP) // Racetrack
330330ROM_END
331331
332// Gran Trak 20 / Trak 20 / Twin Racer (1974)
333332ROM_START( gtrak20 )  // Unknown size, assumed 2K Bytes
334333    ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
335334
r250110r250111
337336    ROM_LOAD( "74168.k5",     0x0000, 0x0800, NO_DUMP) // Racetrack
338337ROM_END
339338
340// LeMans (1976)
341339ROM_START( lemans )
342340    ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
343341
r250110r250111
347345    ROM_LOAD( "005839-01.n6",  0x0200, 0x0100, NO_DUMP ) // Rom 3
348346ROM_END
349347
350// Qwak! / Quack (1974)
351348ROM_START( qwak )
352349    ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
353350
r250110r250111
370367    ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
371368ROM_END
372369
373ROM_START( goal4 )
370ROM_START( eliminat )
374371    ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
375372ROM_END
376373
377ROM_START( gotcha )
374ROM_START( goaliv )
378375    ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
379376ROM_END
380377
381ROM_START( gotchac )
378ROM_START( gotchaat )
382379    ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
383380ROM_END
384381
385ROM_START( highway )
382ROM_START( gotchaatc )
386383    ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
387384ROM_END
388385
386ROM_START( hiway )
387    ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
388ROM_END
389
389390ROM_START( pinpong )
390391    ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
391392ROM_END
r250110r250111
414415    ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
415416ROM_END
416417
418ROM_START( worldcup )
419    ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
420ROM_END
421
417422*/
418423
419424
420425
421426GAME(1975,  antiairc,  0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "Anti-Aircraft [TTL]",    MACHINE_IS_SKELETON)
422427GAME(1975,  crashnsc,  0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "Crash 'n Score/Stock Car [TTL]",   MACHINE_IS_SKELETON)
423GAME(1976,  indy4,     0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "Indy 4 [TTL]",           MACHINE_IS_SKELETON)
428GAME(1976,  indy4,     0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari/Kee",  "Indy 4 [TTL]",           MACHINE_IS_SKELETON)
424429GAME(1975,  indy800,   0,         atarikee,   0,  driver_device, 0,  ROT90, "Atari/Kee",  "Indy 800 [TTL]",         MACHINE_IS_SKELETON)
425430GAME(1975,  jetfight,  0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "Jet Fighter/Jet Fighter Cocktail/Launch Aircraft (set 1) [TTL]",      MACHINE_IS_SKELETON)
426431GAME(1975,  jetfighta, jetfight,  atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "Jet Fighter/Jet Fighter Cocktail/Launch Aircraft (set 2) [TTL]",      MACHINE_IS_SKELETON)
427432GAME(1976,  outlaw,    0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "Outlaw [TTL]",           MACHINE_IS_SKELETON)
428GAME(1975,  sharkjaw,  0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari/Horror Games",  "Shark JAWS [TTL]",MACHINE_IS_SKELETON)
433GAME(1975,  sharkjaw,  0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari/Horror Games",  "Shark JAWS [TTL]",     MACHINE_IS_SKELETON)
429434GAME(1975,  steeplec,  0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "Steeplechase [TTL]",     MACHINE_IS_SKELETON)
430435GAME(1976,  stuntcyc,  0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "Stunt Cycle [TTL]",      MACHINE_IS_SKELETON)
431GAME(1974,  tank,      0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari/Kee",  "Tank/Tank Cocktail/Tank II [TTL]",     MACHINE_IS_SKELETON)
436GAME(1974,  tank,      0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari/Kee",  "Tank/Tank Cocktail [TTL]",     MACHINE_IS_SKELETON)
437GAME(1975,  tankii,    0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari/Kee",  "Tank II [TTL]",          MACHINE_IS_SKELETON)
432438
433439// MISSING ROM DUMPS
434440//GAME(1975,  astrotrf,  steeplec,  atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "Astroturf [TTL]",        MACHINE_IS_SKELETON)
435441//GAME(1974,  gtrak10,   0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari/Kee",  "Gran Trak 10/Trak 10/Formula K [TTL]",     MACHINE_IS_SKELETON) //?
436//GAME(1974,  gtrak20,   0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari/Kee",  "Gran Trak 20/Trak 20/Twin Racer [TTL]",     MACHINE_IS_SKELETON) //?
437//GAME(1976,  lemans,    0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "LeMans [TTL]",           MACHINE_IS_SKELETON)
438//GAME(1974,  quack,     0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "Qwak!/Quack [TTL]",      MACHINE_IS_SKELETON)
442//GAME(1974,  gtrak20,   0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari/Kee",  "Gran Trak 20/Trak 20/Twin Racer [TTL]",    MACHINE_IS_SKELETON) //?
443//GAME(1976,  lemans,    0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "Le Mans [TTL]",          MACHINE_IS_SKELETON)
444//GAME(1974,  qwak,      0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "Qwak!/Quack [TTL]",      MACHINE_IS_SKELETON)
439445
440446// 100% TTL
441//GAME(1974,  coupedem,  0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "Coupe De Monde [TTL]",   MACHINE_IS_SKELETON)
442//GAME(1975,  crossfir,  0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "Crossfire [TTL]",        MACHINE_IS_SKELETON)
443//GAME(1975,  goal4,     0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "Goal 4/World Cup/Coupe De Monde [TTL]",     MACHINE_IS_SKELETON)
447//GAME(1975,  crossfir,  0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari/Kee",  "Crossfire [TTL]",        MACHINE_IS_SKELETON)
448//GAME(1973,  eliminat,  0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari/Kee",  "Elimination! [TTL]",     MACHINE_IS_SKELETON)
449//GAME(1975,  goaliv,    0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "Goal IV [TTL]",          MACHINE_IS_SKELETON)
444450//GAME(1973,  gotchaat,  0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "Gotcha [TTL]",           MACHINE_IS_SKELETON) //?
445451//GAME(1973,  gotchaatc, 0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "Gotcha Color [TTL]",     MACHINE_IS_SKELETON) //?
446//GAME(1975,  highway,   0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "Highway/Hiway [TTL]",    MACHINE_IS_SKELETON)
452//GAME(1975,  hiway,     0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "Hi-Way/Highway [TTL]",   MACHINE_IS_SKELETON)
447453//GAME(1974,  pinpong,   0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "Pin Pong [TTL]",         MACHINE_IS_SKELETON)
448454//GAME(1975,  pursuit,   0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "Pursuit [TTL]",          MACHINE_IS_SKELETON)
449//GAME(1973,  quadpong,  0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari/Kee",  "Quadrapong/Elimination [TTL]",     MACHINE_IS_SKELETON)
450//GAME(1974,  rebound,   0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari/Kee",  "Rebound/Spike/Volleyball [TTL]",     MACHINE_IS_SKELETON)
451//GAME(1974,  spacrace,  0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "Space Race [TTL]",       MACHINE_IS_SKELETON)
452//GAME(1974,  touchme,   0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "Touch Me [TTL]",         MACHINE_IS_SKELETON) //?
455//GAME(1974,  quadpong,  eliminat,  atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "Quadrapong [TTL]",       MACHINE_IS_SKELETON)
456//GAME(1974,  rebound,   0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari/Kee",  "Rebound/Spike/Volleyball [TTL]",   MACHINE_IS_SKELETON)
457//GAME(1973,  spacrace,  0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "Space Race [TTL]",       MACHINE_IS_SKELETON)
458//GAME(1974,  touchme,   0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "Touch-Me [TTL]",         MACHINE_IS_SKELETON) //?
459//GAME(1974,  worldcup,  0,         atarikee,   0,  driver_device, 0,  ROT0,  "Atari",      "World Cup/World Cup Football/Coupe du Monde [TTL]",   MACHINE_IS_SKELETON)
trunk/src/mame/drivers/champbas.c
r250110r250111
36367000      8910 write
37377001      8910 control
38388ff0-8fff sprites
39a000      ?
39a000      irq enable
4040a006      MCU HALT control
4141a007      NOP (MCU shared RAM switch)
4242a060-a06f sprites
r250110r250111
191191
192192   AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1")
193193   AM_RANGE(0xa040, 0xa040) AM_READ_PORT("P2")
194   AM_RANGE(0xa080, 0xa080) AM_READ_PORT("DSW")
194   AM_RANGE(0xa080, 0xa080) AM_MIRROR(0x0020) AM_READ_PORT("DSW")
195195   AM_RANGE(0xa0c0, 0xa0c0) AM_READ_PORT("SYSTEM")
196196
197197   AM_RANGE(0xa000, 0xa000) AM_WRITE(irq_enable_w)
r250110r250111
218218
219219// different protection for champbasja
220220static ADDRESS_MAP_START( champbasja_map, AS_PROGRAM, 8, champbas_state )
221   AM_RANGE(0x6000, 0x63ff) AM_RAM
221222   AM_RANGE(0x6800, 0x68ff) AM_READ(champbja_protection_r)
222223   AM_IMPORT_FROM( champbas_map )
223224ADDRESS_MAP_END
r250110r250111
11991200/*    YEAR  NAME        PARENT    MACHINE     INPUT     INIT                      MONITOR, COMPANY, FULLNAME, FLAGS */
12001201GAME( 1982, talbot,     0,        talbot,     talbot,   driver_device,  0,        ROT270, "Alpha Denshi Co. (Volt Electronics license)", "Talbot", MACHINE_SUPPORTS_SAVE )
12011202
1202GAME( 1983, champbas,   0,        champbas,   champbas, champbas_state, champbas, ROT0,   "Alpha Denshi Co. (Sega license)", "Champion Base Ball", MACHINE_SUPPORTS_SAVE )
1203GAME( 1983, champbas,   0,        champbas,   champbas, champbas_state, champbas, ROT0,   "Alpha Denshi Co. (Sega license)", "Champion Base Ball", MACHINE_SUPPORTS_SAVE ) // no protection
12031204GAME( 1983, champbasj,  champbas, champbasj,  champbas, champbas_state, champbas, ROT0,   "Alpha Denshi Co.", "Champion Base Ball (Japan set 1)", MACHINE_SUPPORTS_SAVE )
1204GAME( 1983, champbasja, champbas, champbasja, champbas, champbas_state, champbas, ROT0,   "Alpha Denshi Co.", "Champion Base Ball (Japan set 2)", MACHINE_SUPPORTS_SAVE )
1205GAME( 1983, champbasja, champbas, champbasja, champbas, champbas_state, champbas, ROT0,   "Alpha Denshi Co.", "Champion Base Ball (Japan set 2)", MACHINE_SUPPORTS_SAVE ) // simplified protection, no mcu
12051206GAME( 1983, champbb2,   0,        champbb2,   champbas, champbas_state, champbas, ROT0,   "Alpha Denshi Co. (Sega license)", "Champion Base Ball Part-2 (set 1)", MACHINE_SUPPORTS_SAVE )
12061207GAME( 1983, champbb2a,  champbb2, champbb2,   champbas, champbas_state, champbas, ROT0,   "Alpha Denshi Co.", "Champion Base Ball Part-2 (set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // incomplete dump
12071208GAME( 1983, champbb2j,  champbb2, champbb2,   champbas, champbas_state, champbas, ROT0,   "Alpha Denshi Co.", "Champion Base Ball Part-2 (Japan)", MACHINE_SUPPORTS_SAVE )
r250110r250111
12111212GAME( 1983, exctsccra,  exctsccr, exctsccr,   exctsccr, champbas_state, exctsccr, ROT270, "Alpha Denshi Co.", "Exciting Soccer (alternate music)", MACHINE_SUPPORTS_SAVE )
12121213GAME( 1983, exctsccrj,  exctsccr, exctsccr,   exctsccr, champbas_state, exctsccr, ROT270, "Alpha Denshi Co.", "Exciting Soccer (Japan)", MACHINE_SUPPORTS_SAVE )
12131214GAME( 1983, exctsccrjo, exctsccr, exctsccr,   exctsccr, champbas_state, exctsccr, ROT270, "Alpha Denshi Co.", "Exciting Soccer (Japan, older)", MACHINE_SUPPORTS_SAVE )
1214GAME( 1983, exctsccrb,  exctsccr, exctsccrb,  exctsccr, champbas_state, exctsccr, ROT270, "bootleg (Kazutomi)", "Exciting Soccer (bootleg)", MACHINE_SUPPORTS_SAVE )
1215GAME( 1983, exctsccrb,  exctsccr, exctsccrb,  exctsccr, champbas_state, exctsccr, ROT270, "bootleg (Kazutomi)", "Exciting Soccer (bootleg)", MACHINE_SUPPORTS_SAVE ) // on champbasj hardware
12151216GAME( 1984, exctscc2,   0,        exctsccr,   exctsccr, champbas_state, exctsccr, ROT270, "Alpha Denshi Co.", "Exciting Soccer II", MACHINE_SUPPORTS_SAVE )
trunk/src/mame/drivers/dorachan.c
r250110r250111
1919public:
2020   dorachan_state(const machine_config &mconfig, device_type type, const char *tag)
2121      : driver_device(mconfig, type, tag),
22      m_videoram(*this, "videoram"),
2322      m_maincpu(*this, "maincpu"),
2423      m_screen(*this, "screen"),
2524      m_palette(*this, "palette"),
26      m_colors(*this, "colors") { }
25      m_videoram(*this, "videoram"),
26      m_colors(*this, "colors")
27   { }
2728
28   /* memory pointers */
29   required_shared_ptr<UINT8> m_videoram;
30
31   /* video-related */
32   UINT8    m_flip_screen;
33
34   /* devices */
35   DECLARE_WRITE8_MEMBER(dorachan_ctrl_w);
36   DECLARE_CUSTOM_INPUT_MEMBER(dorachan_protection_r);
37   DECLARE_CUSTOM_INPUT_MEMBER(dorachan_v128_r);
38   virtual void machine_start();
39   virtual void machine_reset();
40   UINT32 screen_update_dorachan(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
29   // devices, memory pointers
4130   required_device<cpu_device> m_maincpu;
4231   required_device<screen_device> m_screen;
4332   required_device<palette_device> m_palette;
33
34   required_shared_ptr<UINT8> m_videoram;
4435   required_region_ptr<UINT8> m_colors;
45};
4636
37   // internal state
38   UINT8 m_flip_screen;
4739
48/*************************************
49 *
50 *  Protection handling
51 *
52 *************************************/
40   DECLARE_WRITE8_MEMBER(control_w);
41   DECLARE_READ8_MEMBER(protection_r);
42   DECLARE_READ8_MEMBER(v128_r);
43   UINT32 screen_update_dorachan(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
5344
54CUSTOM_INPUT_MEMBER(dorachan_state::dorachan_protection_r)
55{
56   UINT8 ret = 0;
45   virtual void machine_start();
46   virtual void machine_reset();
47};
5748
58   switch (m_maincpu->pcbase())
59   {
60   case 0x70ce: ret = 0xf2; break;
61   case 0x72a2: ret = 0xd5; break;
62   case 0x72b5: ret = 0xcb; break;
6349
64   default:
65      osd_printf_debug("unhandled $2400 read @ %x\n", m_maincpu->pcbase());
66      break;
67   }
6850
69   return ret;
70}
71
72
73
7451/*************************************
7552 *
7653 *  Video system
r250110r250111
11087}
11188
11289
113WRITE8_MEMBER(dorachan_state::dorachan_ctrl_w)
90
91/*************************************
92 *
93 *  I/O handlers
94 *
95 *************************************/
96
97READ8_MEMBER(dorachan_state::protection_r)
11498{
115   m_flip_screen = (data >> 6) & 0x01;
99   UINT8 ret = 0;
100
101   switch (m_maincpu->pcbase())
102   {
103   case 0x70ce: ret = 0xf2; break;
104   case 0x72a2: ret = 0xd5; break;
105   case 0x72b5: ret = 0xcb; break;
106
107   default:
108      osd_printf_debug("unhandled $2400 read @ %x\n", m_maincpu->pcbase());
109      break;
110   }
111
112   return ret;
116113}
117114
115READ8_MEMBER(dorachan_state::v128_r)
116{
117   // to avoid resetting (when player 2 starts) bit 0 need to be inverted when screen is flipped
118   return 0xfe | ((m_screen->vpos() >> 7 & 1) ^ m_flip_screen);
119}
118120
119CUSTOM_INPUT_MEMBER(dorachan_state::dorachan_v128_r)
121WRITE8_MEMBER(dorachan_state::control_w)
120122{
121   /* to avoid resetting (when player 2 starts) bit 0 need to be inverted when screen is flipped */
122   return ((m_screen->vpos() >> 7) & 0x01) ^ m_flip_screen;
123   // d6: flip screen
124   // other: ?
125   m_flip_screen = data >> 6 & 1;
123126}
124127
125128
126
127/*************************************
128 *
129 *  Memory handlers
130 *
131 *************************************/
132
133129static ADDRESS_MAP_START( dorachan_map, AS_PROGRAM, 8, dorachan_state )
134130   AM_RANGE(0x0000, 0x17ff) AM_ROM
135131   AM_RANGE(0x1800, 0x1fff) AM_RAM
136132   AM_RANGE(0x2000, 0x23ff) AM_ROM
137   AM_RANGE(0x2400, 0x2400) AM_MIRROR(0x03ff) AM_READ_PORT("PROT")
138   AM_RANGE(0x2800, 0x2800) AM_MIRROR(0x03ff) AM_READ_PORT("SYSTEM")
139   AM_RANGE(0x2c00, 0x2c00) AM_MIRROR(0x03ff) AM_READ_PORT("JOY")
140   AM_RANGE(0x3800, 0x3800) AM_MIRROR(0x03ff) AM_READ_PORT("V128")
133   AM_RANGE(0x2400, 0x2400) AM_MIRROR(0x03ff) AM_READ(protection_r)
134   AM_RANGE(0x2800, 0x2800) AM_MIRROR(0x03ff) AM_READ_PORT("IN0")
135   AM_RANGE(0x2c00, 0x2c00) AM_MIRROR(0x03ff) AM_READ_PORT("IN1")
136   AM_RANGE(0x3800, 0x3800) AM_MIRROR(0x03ff) AM_READ(v128_r)
141137   AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("videoram")
142138   AM_RANGE(0x6000, 0x77ff) AM_ROM
143139ADDRESS_MAP_END
144140
145
146
147/*************************************
148 *
149 *  Port handlers
150 *
151 *************************************/
152
153141static ADDRESS_MAP_START( dorachan_io_map, AS_IO, 8, dorachan_state )
154142   ADDRESS_MAP_GLOBAL_MASK(0xff)
155143   AM_RANGE(0x01, 0x01) AM_WRITENOP
156144   AM_RANGE(0x02, 0x02) AM_WRITENOP
157   AM_RANGE(0x03, 0x03) AM_WRITE(dorachan_ctrl_w)
145   AM_RANGE(0x03, 0x03) AM_WRITE(control_w)
158146ADDRESS_MAP_END
159147
160148
r250110r250111
166154 *************************************/
167155
168156static INPUT_PORTS_START( dorachan )
169   PORT_START("PROT")
170   PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, dorachan_state,dorachan_protection_r, NULL)
171
172   PORT_START("SYSTEM")
157   PORT_START("IN0")
173158   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
174159   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 )
175160   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
r250110r250111
185170   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
186171   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
187172
188   PORT_START("JOY")
173   PORT_START("IN1")
189174   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL
190175   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_COCKTAIL
191176   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL
r250110r250111
194179   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
195180   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
196181   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
197
198   PORT_START("V128")
199   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, dorachan_state,dorachan_v128_r, NULL)
200   PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED )
201182INPUT_PORTS_END
202183
203184
r250110r250111
219200}
220201
221202static MACHINE_CONFIG_START( dorachan, dorachan_state )
203
222204   /* basic machine hardware */
223205   MCFG_CPU_ADD("maincpu", Z80, 2000000)
224206   MCFG_CPU_PROGRAM_MAP(dorachan_map)
r250110r250111
228210   /* video hardware */
229211   MCFG_SCREEN_ADD("screen", RASTER)
230212   MCFG_SCREEN_SIZE(32*8, 32*8)
231   MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 1*8, 31*8-1)
213   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
232214   MCFG_SCREEN_REFRESH_RATE(60)
233215   MCFG_SCREEN_UPDATE_DRIVER(dorachan_state, screen_update_dorachan)
234216
r250110r250111
271253 *
272254 *************************************/
273255
274GAME( 1980, dorachan, 0, dorachan, dorachan, driver_device, 0, ROT270, "Craul Denshi", "Dorachan", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
256GAME( 1980, dorachan, 0, dorachan, dorachan, driver_device, 0, ROT270, "Alpha Denshi Co. / Craul Denshi", "Dora-chan (Japan)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
trunk/src/mame/drivers/equites.c
r250110r250111
22// copyright-holders:Acho A. Tang, Nicola Salmoria
33/*******************************************************************************
44
5Equites           (c) 1984 Alpha Denshi Co./Sega   8303
6Bull Fighter      (c) 1984 Alpha Denshi Co./Sega   8303
7Gekisou           (c) 1985 Eastern Corp.           8304
8Violent Run       (c) 1985 Eastern Corp.           8304? (probably on Equites HW)
9The Koukouyakyuh  (c) 1985 Alpha Denshi Co.        8304
10Splendor Blast    (c) 1985 Alpha Denshi Co.        8303
11High Voltage      (c) 1985 Alpha Denshi Co.        8304 (POST says 8404)
5Equites           (c) 1984 Alpha Denshi Co./Sega
6Bull Fighter      (c) 1984 Alpha Denshi Co./Sega
7Gekisou           (c) 1985 Eastern Corp.
8The Koukouyakyuh  (c) 1985 Alpha Denshi Co.
9Splendor Blast    (c) 1985 Alpha Denshi Co.
10High Voltage      (c) 1985 Alpha Denshi Co.
1211
12The following are not dumped yet:
13Champion Croquet  (c) 1984 Alpha Denshi Co. (sports)
14Violent Run       (c) 1985 Eastern Corp. (export version of Gekisou)
15Tune Pit(?)       (c) 1985 Alpha Denshi Co.
16Perfect Janputer  (c) 1984 Alpha Denshi Co. (4-player Mahjong)
17
18
1319Driver by Acho A. Tang, Nicola Salmoria
1420Many thanks to Corrado Tomaselli for precious hardware info.
1521
r250110r250111
176182  Yasuhiro Ogawa for the correct Equites ROM information
177183
178184
179Other unemulated Alpha Denshi and SNK games that may use similar hardware:
180-----------------------------------------------------------
181Maker        Year Genre Name             Japanese Name
182-----------------------------------------------------------
183Alpha Denshi 1984 (SPT) Champion Croquet ?`?????s?I???N???b?P?[
184Alpha Denshi 1985 (???) Tune Pit(?)      ?`?F?[???s?b?g
185Alpha Denshi 1985 (MAJ) Perfect Janputer ?p?[?t?F?N?g?W?????s???[?^?[
186
187
188185*******************************************************************************
189186
190187Bull Fighter
r250110r250111
261258-----------------------------------------------------------------------|
262259
263260
264
265
266261-----------------------------------------------------------------------------------|
267262|ALPHA DENSHI CO, LTD. MAIN CONNECTOR BOARD                                        |
268263|                                                                                  |
r250110r250111
314309|----------------------------------------------------------------------------------|
315310
316311
317
318
319312-------------------------------------------------------------------------------------|
320313|ALPHA DENSHI CO, LTD. LOWER BOARD                                                   |
321314|                                                                                    |
r250110r250111
364357
365358
366359*******************************************************************************/
367// Directives
368360
369361#include "emu.h"
370362#include "cpu/m68000/m68000.h"
r250110r250111
19091901GAME( 1984, equitess, equites,  equites,  equites,  equites_state, equites,  ROT90, "Alpha Denshi Co. (Sega license)", "Equites (Sega)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
19101902GAME( 1984, bullfgtr, 0,        equites,  bullfgtr, equites_state, bullfgtr, ROT90, "Alpha Denshi Co.", "Bull Fighter", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
19111903GAME( 1984, bullfgtrs,bullfgtr, equites,  bullfgtr, equites_state, bullfgtr, ROT90, "Alpha Denshi Co. (Sega license)", "Bull Fighter (Sega)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1912GAME( 1985, kouyakyu, 0,        equites,  kouyakyu, equites_state, kouyakyu, ROT0,  "Alpha Denshi Co.", "The Koukouyakyuh", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1904GAME( 1985, kouyakyu, 0,        equites,  kouyakyu, equites_state, kouyakyu, ROT0,  "Alpha Denshi Co.", "The Koukou Yakyuu", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
19131905GAME( 1985, gekisou,  0,        gekisou,  gekisou,  equites_state, gekisou,  ROT90, "Eastern Corp.", "Gekisou (Japan)", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
19141906
19151907// Splendor Blast Hardware
trunk/src/mame/drivers/goldnpkr.c
r250110r250111
464464  the driver init till we can get more evidence about.
465465
466466
467  * Super 98
468
469  This game looks like a Golden Poker / Potten's Poker set, but could be set to play
470  2 or 3 deals per hand. It's running in a ICP-1 PCB.
471
472  Entering the service mode (key 0), you can enter to a submenu for settings pressing
473  DEAL (key 2). Use HOLD keys (keys ZXCVB) to navigate through the menu and change
474  the values. Press CANCEL to exit the settings menu.
475
476  Program is currently not working because seems to fill some zeropage registers and
477  check for existent values and changes... Maybe an external device is writting them.
478  This is NVRAM zone, so some values could be previously harcoded.
479
480  Also seems to expect some inputs combination entered to boot.
481
482  To run...
483  1) Start the game.
484  2) Break into debugger and do a pc=cfa1
485   
486  Debug notes...
487
488  From interrupts routine:
489
490  CF99: LDA $0846    ; load from PIA
491  CF9C: TSX          ; transfer stack pointer to X
492  CF9D: CPX #$C8     ; compare with 0xC8
493  CF9F: BCS $CFA4    ; not?... branch to $CFA4
494  CFA1: JMP $CEC6    ; yes?... jump to $CEC6
495  CFA4: JSR $C0E1    ; continue...
496  ...
497 
498  Forcing the first time the comparation at $CF9D --> true, the game boots and is
499  fully working.
500
501 
467502************************************************************************************
468503
469504
r250110r250111
9991034     properly. Now you can choose the program through a DIP switch.
10001035
10011036
1037  [2015-11-04]
1038
1039  - Added new sets:
1040     * Genie (ICP-1, set 2).
1041     * Super 98 (ICP-1).
1042     * Jack Potten's Poker (set 8, Australian).
1043
1044  - Derived a new machine with improved memory map for this new Genie set.
1045  - Minor fixes and clean-ups.
1046  - Added games & technical notes.
1047
1048
10021049  TODO:
10031050
10041051  - Missing PIA connections.
r250110r250111
995510002  Super 98',
995610003  running in the ICP-1 boardset.
995710004
9958  Program seems to fill some zeropage registers
9959  and check for existent values and changes...
9960  Maybe an external device is writting them.
9961  This is NVRAM zone, so some values could be
9962  previously harcoded.
9963
9964  Also seems to expect some inputs combination entered to boot.
9965
9966  To run...
9967  1) Start the game.
9968  2) Break into debugger and do a pc=cfa1
10005  Please read the 'Games Notes' section
10006  for game and debug notes / issues...
996910007*/
997010008
997110009ROM_START( super98 )
trunk/src/mame/drivers/mz700.c
r250110r250111
5959 *  D000-DFFF   videoram or RAM
6060 *  E000-FFFF   memory mapped IO or RAM
6161 *
62 *  ToDo:
63    - slows down while making sound
64    - MZ800:
65      - Had to patch the rom to load cassettes
66      - Port CF not done.
67      - Dips not connected.
68      - MZ800-mode display not working /Hi-res not coded.
69      - The CRTC is a very complex custom device, mostly unemulated.
70    - MZ1500:
71      - Various ports not done.
72      - Floppy disk and quick disk not done.
73      - F4 display is blank.
74      - Need manuals.
75
76  Note: MZ800 hardware starts in memory map (mode A), but switches to MZ700
77  compatibility mode (mode B) as soon as it starts up. We start in Mode B
78  because it helps MZ1500 get started and it doesn't break anything.
79
80*
6281 *****************************************************************************/
6382
6483#include "emu.h"
r250110r250111
97116***************************************************************************/
98117
99118static ADDRESS_MAP_START( mz700_mem, AS_PROGRAM, 8, mz_state )
119   AM_RANGE(0x0000, 0x0fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
120   AM_RANGE(0x1000, 0xcfff) AM_RAM
121   AM_RANGE(0xd000, 0xdfff) AM_RAMBANK("bankd")
122   AM_RANGE(0xe000, 0xffff) AM_DEVICE("banke", address_map_bank_device, amap8)
100123ADDRESS_MAP_END
101124
125static ADDRESS_MAP_START( mz700_banke, AS_PROGRAM, 8, mz_state )
126   // bank 0: ram (mz700_bank1)
127   AM_RANGE(0x0000, 0x1fff) AM_RAM
128   // bank 1: devices (mz700_bank3)
129   AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x1ff0) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
130   AM_RANGE(0x2004, 0x2007) AM_MIRROR(0x1ff0) AM_DEVREADWRITE("pit8253", pit8253_device, read, write)
131   AM_RANGE(0x2008, 0x200b) AM_MIRROR(0x1ff0) AM_READWRITE(mz700_e008_r,mz700_e008_w)
132   AM_RANGE(0x200c, 0x200f) AM_MIRROR(0x1ff0) AM_NOP
133   // bank 2: switched out (mz700_bank5)
134   AM_RANGE(0x4000, 0x5fff) AM_NOP
135ADDRESS_MAP_END
136
102137static ADDRESS_MAP_START( mz700_io, AS_IO, 8, mz_state )
103138   ADDRESS_MAP_GLOBAL_MASK(0xff)
104139   AM_RANGE(0xe0, 0xe0) AM_WRITE(mz700_bank_0_w)
r250110r250111
111146ADDRESS_MAP_END
112147
113148static ADDRESS_MAP_START( mz800_mem, AS_PROGRAM, 8, mz_state )
149   AM_RANGE(0x0000, 0x0fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
150   AM_RANGE(0x1000, 0x1fff) AM_RAMBANK("bank1")
151   AM_RANGE(0x2000, 0x7fff) AM_RAM
152   AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("banka")
153   AM_RANGE(0xc000, 0xcfff) AM_RAMBANK("bankc")
154   AM_RANGE(0xd000, 0xdfff) AM_RAMBANK("bankd")
155   AM_RANGE(0xe000, 0xffff) AM_DEVICE("bankf", address_map_bank_device, amap8)
114156ADDRESS_MAP_END
115157
158static ADDRESS_MAP_START( mz800_bankf, AS_PROGRAM, 8, mz_state )
159   // bank 0: ram (mz700_bank1)
160   AM_RANGE(0x0000, 0x1fff) AM_RAM
161   // bank 1: devices (mz700_bank3)
162   AM_RANGE(0x2000, 0x2003) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
163   AM_RANGE(0x2004, 0x2007) AM_DEVREADWRITE("pit8253", pit8253_device, read, write)
164   AM_RANGE(0x2008, 0x200b) AM_READWRITE(mz700_e008_r,mz700_e008_w)
165   AM_RANGE(0x200c, 0x200f) AM_NOP
166   AM_RANGE(0x2010, 0x3fff) AM_ROM AM_REGION("monitor", 0x2010)
167   // bank 2: switched out (mz700_bank5)
168   AM_RANGE(0x4000, 0x5fff) AM_NOP
169ADDRESS_MAP_END
170
116171static ADDRESS_MAP_START( mz800_io, AS_IO, 8, mz_state )
117172   ADDRESS_MAP_GLOBAL_MASK(0xff)
118173   AM_RANGE(0xcc, 0xcc) AM_WRITE(mz800_write_format_w )
r250110r250111
303358};
304359
305360static GFXDECODE_START( mz700 )
306   GFXDECODE_ENTRY("cgrom", 0, mz700_layout, 0, 256)
361   GFXDECODE_ENTRY("cgrom", 0, mz700_layout, 0, 4)
307362GFXDECODE_END
308363
309364static GFXDECODE_START( mz800 )
310   GFXDECODE_ENTRY(NULL, 0, mz700_layout, 0, 256)
311   GFXDECODE_ENTRY("monitor", 0x1000, mz700_layout, 0, 256)    // for mz800 viewer only
365   GFXDECODE_ENTRY("monitor", 0x1000, mz700_layout, 0, 4)    // for mz800 viewer only
312366GFXDECODE_END
313367
314368
r250110r250111
321375   MCFG_CPU_ADD("maincpu", Z80, XTAL_17_73447MHz/5)
322376   MCFG_CPU_PROGRAM_MAP(mz700_mem)
323377   MCFG_CPU_IO_MAP(mz700_io)
378   MCFG_DEVICE_ADD("banke", ADDRESS_MAP_BANK, 0)
379   MCFG_DEVICE_PROGRAM_MAP(mz700_banke)
380   MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE)
381   MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8)
382   MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(16)
383   MCFG_ADDRESS_MAP_BANK_STRIDE(0x2000)
324384
385   MCFG_MACHINE_RESET_OVERRIDE(mz_state, mz700)
325386
326387   /* video hardware */
327388   MCFG_SCREEN_ADD("screen", RASTER)
328389   MCFG_SCREEN_RAW_PARAMS(XTAL_17_73447MHz/2, 568, 0, 40*8, 312, 0, 25*8)
329390   MCFG_SCREEN_UPDATE_DRIVER(mz_state, screen_update_mz700)
330391   MCFG_SCREEN_PALETTE("palette")
392   MCFG_PALETTE_ADD_3BIT_RGB("palette")
331393
332394   MCFG_GFXDECODE_ADD("gfxdecode", "palette", mz700)
333   MCFG_PALETTE_ADD("palette", 256*2)
334   MCFG_PALETTE_INDIRECT_ENTRIES(8)
335   MCFG_PALETTE_INIT_OWNER(mz_state, mz)
336395
337396   /* sound hardware */
338397   MCFG_SPEAKER_STANDARD_MONO("mono")
339398   MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
340   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
399   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.05)
341400   MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
342401   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
343402
r250110r250111
376435
377436
378437static MACHINE_CONFIG_DERIVED( mz800, mz700 )
438   MCFG_DEVICE_REMOVE("banke")
379439
380440   /* basic machine hardware */
381441   MCFG_CPU_MODIFY("maincpu")
382442   MCFG_CPU_PROGRAM_MAP(mz800_mem)
383443   MCFG_CPU_IO_MAP(mz800_io)
444   MCFG_DEVICE_ADD("bankf", ADDRESS_MAP_BANK, 0)
445   MCFG_DEVICE_PROGRAM_MAP(mz800_bankf)
446   MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE)
447   MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8)
448   MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(16)
449   MCFG_ADDRESS_MAP_BANK_STRIDE(0x2000)
384450
451   MCFG_MACHINE_RESET_OVERRIDE(mz_state, mz800)
385452   MCFG_GFXDECODE_MODIFY("gfxdecode",mz800)
386453
387   MCFG_VIDEO_START_OVERRIDE(mz_state,mz800)
388
389454   MCFG_SCREEN_MODIFY("screen")
390455   MCFG_SCREEN_UPDATE_DRIVER(mz_state, screen_update_mz800)
391456
r250110r250111
435500ROM_START( mz800 )
436501   ROM_REGION( 0x4000, "monitor", 0 )
437502   ROM_LOAD( "mz800.rom", 0x0000, 0x4000, CRC(600d17e1) SHA1(950ce4b51429916f8036e41ba6130fac149b36e4) )
503   // fix cassette loading
504   ROM_FILL(0x761,1,0x13)
505   ROM_FILL(0xA4B,1,0x45)
506
507   ROM_REGION( 0x10000, "user1", ROMREGION_ERASE00 ) // ramdisk
438508ROM_END
439509
440510ROM_START( mz1500 )
441511   ROM_REGION( 0x4000, "monitor", 0 )
442   ROM_LOAD( "9z-502m.rom",  0x0000, 0x2800, CRC(643db428) SHA1(c2ad8af2ef00db32afde54d5741b07de5d4da16a))
512   ROM_LOAD( "9z-502m.rom",  0x0000, 0x1000, CRC(643db428) SHA1(c2ad8af2ef00db32afde54d5741b07de5d4da16a))
513   ROM_CONTINUE(0x2800, 0x1800)
514
443515   ROM_REGION( 0x1000, "cgrom", 0 )
444516   //ROM_LOAD( "mz700fon.jp", 0x0000, 0x1000, CRC(697ec121) SHA1(5eb1d42d273b1fd2cab120486279ab8ff6c85dc7))
445517   ROM_LOAD( "mz700fon.jpn", 0x0000, 0x1000, CRC(425eedf5) SHA1(bd2cc750f2d2f63e50a59786668509e81a276e32) )
518
519   ROM_REGION( 0x10000, "user1", ROMREGION_ERASE00 ) // ramdisk
446520ROM_END
447521
448522/***************************************************************************
trunk/src/mame/drivers/pacman.c
r250110r250111
69126912GAME( 1981, crush4,   crush,    crush4,   crush4,   driver_device, 0,        ROT90,  "Alpha Denshi Co. / Kural TWT", "Crush Roller (set 4)", MACHINE_SUPPORTS_SAVE )
69136913GAME( 1981, maketrax, crush,    pacmanp,  maketrax, pacman_state,  maketrax, ROT270, "Alpha Denshi Co. / Kural (Williams license)", "Make Trax (US set 1)", MACHINE_SUPPORTS_SAVE )
69146914GAME( 1981, maketrxb, crush,    pacmanp,  maketrax, pacman_state,  maketrax, ROT270, "Alpha Denshi Co. / Kural (Williams license)", "Make Trax (US set 2)", MACHINE_SUPPORTS_SAVE )
6915GAME( 1981, korosuke, crush,    pacmanp,  korosuke, pacman_state,  korosuke, ROT90,  "Alpha Denshi Co. / Kural Electric, Ltd.", "Korosuke Roller (Japan)", MACHINE_SUPPORTS_SAVE )
6915GAME( 1981, korosuke, crush,    pacmanp,  korosuke, pacman_state,  korosuke, ROT90,  "Alpha Denshi Co. / Kural Electric, Ltd.", "Korosuke Roller (Japan)", MACHINE_SUPPORTS_SAVE ) // ADK considers it a sequel?
69166916GAME( 1981, crushrlf, crush,    pacman,   maketrax, driver_device, 0,        ROT90,  "bootleg", "Crush Roller (Famaresa PCB)", MACHINE_SUPPORTS_SAVE )
69176917GAME( 1981, crushbl,  crush,    pacman,   maketrax, driver_device, 0,        ROT90,  "bootleg", "Crush Roller (bootleg set 1)", MACHINE_SUPPORTS_SAVE )
69186918GAME( 1981, crushbl2, crush,    pacmanp,  mbrush,   pacman_state,  maketrax, ROT90,  "bootleg", "Crush Roller (bootleg set 2)", MACHINE_SUPPORTS_SAVE )
trunk/src/mame/drivers/polyplay.c
r250110r250111
7676
7777Uniquely the Poly-Play has a light organ which totally confuses you whilst
7878playing the automaton. Bits 1-5 of PORTB control the organ but it's not
79emulated now. ;)
79emulated now. ;) (An external artwork file could be created that simulates
80this.)
8081
8182***************************************************************************/
8283
trunk/src/mame/drivers/pong.c
r250110r250111
33/***************************************************************************
44
55Pong (c) 1972 Atari
6Pong Doubles (c) 1973 Atari
7Breakout (c) 1976 Atari
68
79driver by Couriersud
810
11
12 Atari Pong Games List - Data based, in part from:
13 
14 - "Andy's collection of Bronzeage Atari Video Arcade PCBs"
15 http://www.andysarcade.net/personal/bronzeage/index.htm
16 
17 - "Atari's Technical Manual Log"
18 http://www.atarigames.com/manuals.txt
19 
20 Suspected "same games" are grouped together.  These are usually the exact same game but different cabinet/name.
21
22 Technical Manual #s  Game Name(s)                                               Atari Part #'s                     Data
23 -------------------+----------------------------------------------------------+----------------------------------+---------+
24 TM-058               Breakout/Breakout Cocktail/Consolette (1976)               A004533                            NO
25 TM-015               Cocktail Pong/Coup Franc (1974)                            A001433?                           NO
26 TM-0??               Dr. Pong/Puppy Pong/Snoopy Pong (1974)                     A001433?                           NO
27 TM-013               Pong (1972)                                                A001433                            NO
28 TM-014               Pong Doubles/Coupe Davis (1973)                            A000785                            NO
29 422                  Superpong (1974)                                           A000423                            NO
30 
931Notes:
1032
11TODO: please see netlist include files
33TODO: Please see netlist include files
34TODO: Breakout Cocktail and Consolette are believed to use the Breakout PCB with different cabinet designs, this needs to be verified.
35TODO: Coupe Davis is believed to use the Pong Doubles PCB, just a different cabinet design, this needs to be verified.
36TODO: Dr. Pong, Puppy Pong, Snoopy Pong, Cocktail Pong and Coup Franc are all believed to use the Pong (Rev E) PCB, but
37      different cabinet designs; this needs to be verified.
38TODO: Superpong is believed to use the Pong (Rev E) PCB with some minor modifications, this needs to be verified.
1239
1340***************************************************************************/
1441
r250110r250111
490517   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
491518ROM_END
492519
520/*   // 100% TTL - NO ROMS
521
522ROM_START( coupedav ) // dummy to satisfy game entry
523   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
524ROM_END
525
526ROM_START( coupfran ) // dummy to satisfy game entry
527   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
528ROM_END
529
530ROM_START( cktpong ) // dummy to satisfy game entry
531   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
532ROM_END
533
534ROM_START( drpong ) // dummy to satisfy game entry
535   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
536ROM_END
537
538ROM_START( pupppong ) // dummy to satisfy game entry
539   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
540ROM_END
541
542ROM_START( snoopong ) // dummy to satisfy game entry
543   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
544ROM_END
545
546ROM_START( suprpong ) // dummy to satisfy game entry
547   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
548ROM_END
549
550ROM_START( breakckt ) // dummy to satisfy game entry
551   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
552ROM_END
553
554ROM_START( consolet ) // dummy to satisfy game entry
555   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
556ROM_END
557*/
558
493559GAME( 1972, pong,      0, pong,     pong,      driver_device,  0, ROT0,  "Atari", "Pong (Rev E) external [TTL]", MACHINE_SUPPORTS_SAVE)
494GAME( 1972, pongf,     0, pongf,    pong,      driver_device,  0, ROT0,  "Atari", "Pong (Rev E) [TTL]", MACHINE_SUPPORTS_SAVE )
495GAME( 1974, pongd,     0, pongd,    pongd,     driver_device,  0, ROT0,  "Atari", "Pong Doubles [TTL]", MACHINE_SUPPORTS_SAVE )
560GAME( 1972, pongf,     0, pongf,    pong,      driver_device,  0, ROT0,  "Atari", "Pong (Rev E) [TTL]", MACHINE_SUPPORTS_SAVE)
561GAME( 1973, pongd,     0, pongd,    pongd,     driver_device,  0, ROT0,  "Atari", "Pong Doubles [TTL]", MACHINE_SUPPORTS_SAVE)
496562GAMEL( 1976, breakout,  0, breakout, breakout,  driver_device,  0, ROT90, "Atari", "Breakout [TTL]", MACHINE_SUPPORTS_SAVE, layout_breakout)
563
564// 100% TTL
565//GAME( 1973, coupedav,   pongd,    pongd,    pongd,     driver_device,  0, ROT0,  "Atari France", "Coupe Davis [TTL]", MACHINE_SUPPORTS_SAVE)
566//GAME( 1974, coupfran,   pong,     pong,     pong,      driver_device,  0, ROT0,  "Atari Europe", "Coup Franc [TTL]", MACHINE_SUPPORTS_SAVE)
567//GAME( 1974, cktpong,    pong,     pong,     pong,      driver_device,  0, ROT0,  "Atari / National Entertainment Co.", "Cocktail Pong [TTL]", MACHINE_SUPPORTS_SAVE)
568//GAME( 1974, drpong,     pong,     pong,     pong,      driver_device,  0, ROT0,  "Atari", "Dr. Pong [TTL]", MACHINE_SUPPORTS_SAVE)
569//GAME( 1974, pupppong,   pong,     pong,     pong,      driver_device,  0, ROT0,  "Atari", "Puppy Pong [TTL]", MACHINE_SUPPORTS_SAVE)
570//GAME( 1974, snoopong,   pong,     pong,     pong,      driver_device,  0, ROT0,  "Atari", "Snoopy Pong [TTL]", MACHINE_SUPPORTS_SAVE)
571//GAME( 1974, suprpong,   0,        suprpong, pong,      driver_device,  0, ROT0,  "Atari", "Superpong [TTL]", MACHINE_SUPPORTS_SAVE)
572//GAMEL( 1976, breakckt,  breakout, breakout, breakout,  driver_device,  0, ROT90, "Atari", "Breakout Cocktail [TTL]", MACHINE_SUPPORTS_SAVE, layout_breakckt)
573//GAMEL( 1976, consolet,  breakout, breakout, breakout,  driver_device,  0, ROT90, "Atari Europe", "Consolette [TTL]", MACHINE_SUPPORTS_SAVE, layout_consolet)
trunk/src/mame/includes/mz700.h
r250110r250111
1616#include "sound/speaker.h"
1717#include "imagedev/cassette.h"
1818#include "bus/centronics/ctronics.h"
19#include "machine/bankdev.h"
1920#include "machine/ram.h"
2021
2122class mz_state : public driver_device
2223{
2324public:
2425   mz_state(const machine_config &mconfig, device_type type, const char *tag)
25      : driver_device(mconfig, type, tag),
26      m_maincpu(*this, "maincpu"),
27      m_speaker(*this, "speaker"),
28      m_pit(*this, "pit8253"),
29      m_ppi(*this, "ppi8255"),
30      m_cassette(*this, "cassette"),
31      m_centronics(*this, "centronics"),
32      m_ram(*this, RAM_TAG),
33      m_gfxdecode(*this, "gfxdecode"),
34      m_palette(*this, "palette")  { }
26      : driver_device(mconfig, type, tag)
27      , m_maincpu(*this, "maincpu")
28      , m_speaker(*this, "speaker")
29      , m_pit(*this, "pit8253")
30      , m_ppi(*this, "ppi8255")
31      , m_cassette(*this, "cassette")
32      , m_centronics(*this, "centronics")
33      , m_ram(*this, RAM_TAG)
34      , m_palette(*this, "palette")
35      , m_banke(*this, "banke")
36      , m_bankf(*this, "bankf")
37      { }
3538
36   int m_mz700;                /* 1 if running on an mz700 */
37
38   int m_cursor_timer;
39   int m_other_timer;
40
41   int m_intmsk;   /* PPI8255 pin PC2 */
42
43   int m_mz700_ram_lock;       /* 1 if ram lock is active */
44   int m_mz700_ram_vram;       /* 1 if vram is banked in */
45
46   /* mz800 specific */
47   UINT8 *m_cgram;
48
49   int m_mz700_mode;           /* 1 if in mz700 mode */
50   int m_mz800_ram_lock;       /* 1 if lock is active */
51   int m_mz800_ram_monitor;    /* 1 if monitor rom banked in */
52
53   int m_hires_mode;           /* 1 if in 640x200 mode */
54   int m_screennum;           /* screen designation */
55
56   int m_centronics_busy;
57   int m_centronics_perror;
58
59   UINT8 *m_colorram;
60   UINT8 *m_videoram;
61   UINT8 m_speaker_level;
62   UINT8 m_prev_state;
63   UINT16 m_mz800_ramaddr;
64   UINT8 m_mz800_palette[4];
65   UINT8 m_mz800_palette_bank;
6639   DECLARE_READ8_MEMBER(mz700_e008_r);
6740   DECLARE_WRITE8_MEMBER(mz700_e008_w);
6841   DECLARE_READ8_MEMBER(mz800_bank_0_r);
r250110r250111
8760   DECLARE_WRITE8_MEMBER(mz800_cgram_w);
8861   DECLARE_DRIVER_INIT(mz800);
8962   DECLARE_DRIVER_INIT(mz700);
63   DECLARE_MACHINE_RESET(mz700);
64   DECLARE_MACHINE_RESET(mz800);
9065   virtual void machine_start();
91   DECLARE_PALETTE_INIT(mz);
92   DECLARE_VIDEO_START(mz800);
9366   UINT32 screen_update_mz700(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
9467   UINT32 screen_update_mz800(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
9568   TIMER_DEVICE_CALLBACK_MEMBER(ne556_cursor_callback);
r250110r250111
10578   DECLARE_WRITE8_MEMBER(mz800_z80pio_port_a_w);
10679   DECLARE_WRITE_LINE_MEMBER(write_centronics_busy);
10780   DECLARE_WRITE_LINE_MEMBER(write_centronics_perror);
81
82private:
83   int m_mz700;                /* 1 if running on an mz700 */
84
85   int m_cursor_timer;
86   int m_other_timer;
87
88   int m_intmsk;   /* PPI8255 pin PC2 */
89
90   int m_mz700_ram_lock;       /* 1 if ram lock is active */
91   int m_mz700_ram_vram;       /* 1 if vram is banked in */
92
93   /* mz800 specific */
94   UINT8 *m_cgram;
95   UINT8 *m_p_chargen;
96
97   int m_mz700_mode;           /* 1 if in mz700 mode */
98   int m_mz800_ram_lock;       /* 1 if lock is active */
99   int m_mz800_ram_monitor;    /* 1 if monitor rom banked in */
100
101   int m_hires_mode;           /* 1 if in 640x200 mode */
102   int m_screennum;           /* screen designation */
103
104   int m_centronics_busy;
105   int m_centronics_perror;
106
107   UINT8 *m_colorram;
108   UINT8 *m_videoram;
109   UINT8 m_speaker_level;
110   UINT8 m_prev_state;
111   UINT16 m_mz800_ramaddr;
112   UINT8 m_mz800_palette[4];
113   UINT8 m_mz800_palette_bank;
114
108115   required_device<cpu_device> m_maincpu;
109116   required_device<speaker_sound_device> m_speaker;
110117   required_device<pit8253_device> m_pit;
r250110r250111
112119   required_device<cassette_image_device> m_cassette;
113120   optional_device<centronics_device> m_centronics;
114121   required_device<ram_device> m_ram;
115   required_device<gfxdecode_device> m_gfxdecode;
116122   required_device<palette_device> m_palette;
123   optional_device<address_map_bank_device> m_banke;
124   optional_device<address_map_bank_device> m_bankf;
117125};
118126
119127#endif /* MZ700_H_ */
trunk/src/mame/machine/alpha8201.c
r250110r250111
2424Bull Fighter              1984   8303 (post)
2525Splendor Blast            1985   8303 (post)
2626Gekisou                   1985   8304 (post)
27The Koukouyakyuh          1985   8304 (post)
28High Voltage              1985   8404?(post says 8404, but readme says 8304)
27The Koukou Yakyuu         1985   8304 (post)
28High Voltage              1985   8304?(post says 8404, but readme says 8304)
2929
3030ALPHA-8201: "44801A75" -> HD44801, ROM code = A75
3131ALPHA-8302: "44801B35" -> HD44801, ROM code = B35
trunk/src/mame/machine/megadriv.c
r250110r250111
324324   {
325325      case 0:
326326         logerror("%06x read version register\n", space.device().safe_pc());
327         retdata = m_version_hi_nibble |
328                  0x00 | // Bit 3 of Version Number
329                  0x00 | // Bit 2 of Version Number
330                  0x00 | // Bit 1 of Version Number
331                  0x01 ; // Bit 0 of Version Number
327         retdata = m_version_hi_nibble | 0x01; // Version number contained in bits 3-0
332328         break;
333329
334330      /* Joystick Port Registers */
trunk/src/mame/machine/mz700.c
r250110r250111
4242   m_mz700 = TRUE;
4343   m_mz700_mode = TRUE;
4444
45   m_videoram = auto_alloc_array(machine(), UINT8, 0x800);
46   memset(m_videoram, 0, sizeof(UINT8) * 0x800);
47   m_colorram = auto_alloc_array(machine(), UINT8, 0x800);
48   memset(m_colorram, 0, sizeof(UINT8) * 0x800);
45   m_videoram = auto_alloc_array(machine(), UINT8, 0x1000);
46   memset(m_videoram, 0, sizeof(UINT8) * 0x1000);
47   m_colorram = m_videoram + 0x800;
48
49   m_p_chargen = memregion("cgrom")->base();
50   UINT8 *rom = memregion("monitor")->base();
51   UINT8 *ram = m_ram->pointer();
52   membank("bankr0")->configure_entry(0, &ram[0]); // ram
53   membank("bankr0")->configure_entry(1, &rom[0]); // rom
54   membank("bankw0")->configure_entry(0, &ram[0]); // ram
55   membank("bankd")->configure_entry(0, &ram[0xd000]); // ram
56   membank("bankd")->configure_entry(1, m_videoram); // vram
4957}
5058
5159DRIVER_INIT_MEMBER(mz_state,mz800)
5260{
5361   m_mz700 = FALSE;
54   m_mz700_mode = FALSE;
62   m_mz700_mode = true;//FALSE;
5563
5664   /* video ram */
5765   m_videoram = auto_alloc_array(machine(), UINT8, 0x4000);
r250110r250111
6169   /* character generator ram */
6270   m_cgram = auto_alloc_array(machine(), UINT8, 0x1000);
6371   memset(m_cgram, 0, sizeof(UINT8) * 0x1000);
72
73   m_p_chargen = memregion("cgrom")->base();
74   if (!m_p_chargen)
75      m_p_chargen = m_cgram;
76   UINT8 *rom = memregion("monitor")->base();
77   UINT8 *ram = m_ram->pointer();
78   // configure banks (0 = RAM in all cases)
79   membank("bankr0")->configure_entry(0, &ram[0]); // ram
80   membank("bankr0")->configure_entry(1, &rom[0]); // rom
81   membank("bankw0")->configure_entry(0, &ram[0]); // ram
82   membank("bank1")->configure_entry(0, &ram[0x1000]); // ram
83   membank("bank1")->configure_entry(1, &rom[0x1000]); // chargen
84   membank("banka")->configure_entry(0, &ram[0x8000]); // ram
85   membank("banka")->configure_entry(1, m_videoram); // vram in mz800 mode
86   membank("bankc")->configure_entry(0, &ram[0xc000]); // ram
87   membank("bankc")->configure_entry(1, m_cgram); // cgram in mz800 mode
88   membank("bankd")->configure_entry(0, &ram[0xd000]); // ram
89   membank("bankd")->configure_entry(1, m_videoram); // vram in mz700 mode
6490}
6591
6692void mz_state::machine_start()
6793{
6894   /* reset memory map to defaults */
69   mz700_bank_4_w(m_maincpu->space(AS_PROGRAM), 0, 0);
95   mz700_bank_4_w(m_maincpu->space(AS_IO), 0, 0);
7096}
7197
98MACHINE_RESET_MEMBER( mz_state, mz700 )
99{
100   membank("bankr0")->set_entry(1); //rom
101   membank("bankw0")->set_entry(0); //ram
102   membank("bankd")->set_entry(1); //vram
103   m_banke->set_bank(1); //devices
104}
72105
106MACHINE_RESET_MEMBER( mz_state, mz800 )
107{
108   // default to mz700 mode or mz1500 won't start.
109   membank("bankr0")->set_entry(1); //rom
110   membank("bankw0")->set_entry(0); //ram
111   membank("bank1")->set_entry(0); //ram
112   membank("banka")->set_entry(0); //ram
113   membank("bankc")->set_entry(0); //ram
114   membank("bankd")->set_entry(1); //vram
115   m_bankf->set_bank(1); //devices
116}
117
118
73119/***************************************************************************
74120    MMIO
75121***************************************************************************/
r250110r250111
99145
100146READ8_MEMBER(mz_state::mz800_bank_0_r)
101147{
102   UINT8 *videoram = m_videoram;
103   address_space &spc = m_maincpu->space(AS_PROGRAM);
148   //address_space &spc = m_maincpu->space(AS_PROGRAM);
104149
105150   /* switch in cgrom */
106   spc.install_read_bank(0x1000, 0x1fff, "bank2");
107   spc.nop_write(0x1000, 0x1fff);
108   membank("bank2")->set_base(memregion("monitor")->base() + 0x1000);
151   //spc.install_read_bank(0x1000, 0x1fff, "bank2");
152   //spc.nop_write(0x1000, 0x1fff);
153   //membank("bank2")->set_base(memregion("monitor")->base() + 0x1000);
154   membank("bank1")->set_entry(1);
109155
110156   if (m_mz700_mode)
111157   {
112158      /* cgram from 0xc000 to 0xcfff */
113      spc.install_read_bank(0xc000, 0xcfff, "bank6");
114      spc.install_write_handler(0xc000, 0xcfff, write8_delegate(FUNC(mz_state::mz800_cgram_w),this));
115      membank("bank6")->set_base(m_cgram);
159      //spc.install_read_bank(0xc000, 0xcfff, "bank6");
160      //spc.install_write_handler(0xc000, 0xcfff, write8_delegate(FUNC(mz_state::mz800_cgram_w),this));
161      //membank("bank6")->set_base(m_cgram);
162      membank("bankc")->set_entry(1);
116163   }
117164   else
118165   {
119166      if (m_hires_mode)
120167      {
121168         /* vram from 0x8000 to 0xbfff */
122         spc.install_readwrite_bank(0x8000, 0xbfff, "bank4");
123         membank("bank4")->set_base(videoram);
169         //spc.install_readwrite_bank(0x8000, 0xbfff, "bank4");
170         //membank("bank4")->set_base(m_videoram);
171         membank("banka")->set_entry(1);
124172      }
125173      else
126174      {
127175         /* vram from 0x8000 to 0x9fff */
128         spc.install_readwrite_bank(0x8000, 0x9fff, "bank4");
129         membank("bank4")->set_base(videoram);
176         //spc.install_readwrite_bank(0x8000, 0x9fff, "bank4");
177         //membank("bank4")->set_base(m_videoram);
130178
131179         /* ram from 0xa000 to 0xbfff */
132         spc.install_readwrite_bank(0xa000, 0xbfff, "bank5");
133         membank("bank5")->set_base(m_ram->pointer() + 0xa000);
180         //spc.install_readwrite_bank(0xa000, 0xbfff, "bank5");
181         //membank("bank5")->set_base(m_ram->pointer() + 0xa000);
182         membank("bank1")->set_entry(1);
134183      }
135184   }
136185
r250110r250111
139188
140189WRITE8_MEMBER(mz_state::mz700_bank_0_w)
141190{
142   address_space &spc = m_maincpu->space(AS_PROGRAM);
191   //address_space &spc = m_maincpu->space(AS_PROGRAM);
143192
144   spc.install_readwrite_bank(0x0000, 0x0fff, "bank1");
145   membank("bank1")->set_base(m_ram->pointer());
193   //spc.install_readwrite_bank(0x0000, 0x0fff, "bank1a");
194   //membank("bank1a")->set_base(m_ram->pointer());
195   membank("bankr0")->set_entry(0); // ram
146196}
147197
148198WRITE8_MEMBER(mz_state::mz800_bank_0_w)
149199{
150   address_space &spc = m_maincpu->space(AS_PROGRAM);
200   //address_space &spc = m_maincpu->space(AS_PROGRAM);
151201
152   spc.install_readwrite_bank(0x0000, 0x7fff, "bank1");
153   membank("bank1")->set_base(m_ram->pointer());
202   //spc.install_readwrite_bank(0x0000, 0x7fff, "bank1a");
203   //membank("bank1a")->set_base(m_ram->pointer());
204   membank("bank1")->set_entry(0); // ram
205   membank("bankr0")->set_entry(0); // ram
154206}
155207
156208READ8_MEMBER(mz_state::mz800_bank_1_r)
157209{
158   address_space &spc = m_maincpu->space(AS_PROGRAM);
210   //address_space &spc = m_maincpu->space(AS_PROGRAM);
159211
160212   /* switch in ram from 0x1000 to 0x1fff */
161   spc.install_readwrite_bank(0x1000, 0x1fff, "bank2");
162   membank("bank2")->set_base(m_ram->pointer() + 0x1000);
213   //spc.install_readwrite_bank(0x1000, 0x1fff, "bank2");
214   //membank("bank2")->set_base(m_ram->pointer() + 0x1000);
215   membank("bank1")->set_entry(0); // ram
163216
164217   if (m_mz700_mode)
165218   {
166219      /* ram from 0xc000 to 0xcfff */
167      spc.install_readwrite_bank(0xc000, 0xcfff, "bank6");
168      membank("bank6")->set_base(m_ram->pointer() + 0xc000);
220      //spc.install_readwrite_bank(0xc000, 0xcfff, "bank6");
221      //membank("bank6")->set_base(m_ram->pointer() + 0xc000);
222      membank("bankc")->set_entry(0); // ram
169223   }
170224   else
171225   {
172226      /* ram from 0x8000 to 0xbfff */
173      spc.install_readwrite_bank(0x8000, 0xbfff, "bank4");
174      membank("bank4")->set_base(m_ram->pointer() + 0x8000);
227      //spc.install_readwrite_bank(0x8000, 0xbfff, "bank4");
228      //membank("bank4")->set_base(m_ram->pointer() + 0x8000);
229      membank("banka")->set_entry(0); // ram
175230   }
176231
177232   return 0xff;
r250110r250111
179234
180235WRITE8_MEMBER(mz_state::mz700_bank_1_w)
181236{
182   address_space &spc = m_maincpu->space(AS_PROGRAM);
237   //address_space &spc = m_maincpu->space(AS_PROGRAM);
238   membank("bankd")->set_entry(0); // ram
183239
184240   if (m_mz700_mode)
185241   {
186242      /* switch in ram when not locked */
187243      if (!m_mz700_ram_lock)
188244      {
189         spc.install_readwrite_bank(0xd000, 0xffff, "bank7");
190         membank("bank7")->set_base(m_ram->pointer() + 0xd000);
245         if (m_mz700)
246         {
247            //membank("bankd")->set_entry(0); // ram
248            m_banke->set_bank(0); //ram
249         }
250         else
251         {
252            //spc.install_readwrite_bank(0xd000, 0xffff, "bank7");
253            //spc.install_readwrite_bank(0xd000, 0xdfff, "bank7");
254            //membank("bank7")->set_base(m_ram->pointer() + 0xd000);
255            m_bankf->set_bank(0); //ram
256         }
191257         m_mz700_ram_vram = FALSE;
192258      }
193259   }
r250110r250111
196262      /* switch in ram when not locked */
197263      if (!m_mz800_ram_lock)
198264      {
199         spc.install_readwrite_bank(0xe000, 0xffff, "bank8");
200         membank("bank8")->set_base(m_ram->pointer() + 0xe000);
265         //spc.install_readwrite_bank(0xe000, 0xffff, "bank8");
266         //membank("bank8")->set_base(m_ram->pointer() + 0xe000);
267         m_bankf->set_bank(0); //ram
201268         m_mz800_ram_monitor = FALSE;
202269      }
203270   }
r250110r250111
205272
206273WRITE8_MEMBER(mz_state::mz700_bank_2_w)
207274{
208   address_space &spc = m_maincpu->space(AS_PROGRAM);
275   //address_space &spc = m_maincpu->space(AS_PROGRAM);
209276
210   spc.install_read_bank(0x0000, 0x0fff, "bank1");
211   spc.nop_write(0x0000, 0x0fff);
212   membank("bank1")->set_base(memregion("monitor")->base());
277   //spc.install_read_bank(0x0000, 0x0fff, "bank1a");
278   //spc.nop_write(0x0000, 0x0fff);
279   //membank("bank1a")->set_base(memregion("monitor")->base());
280   membank("bankr0")->set_entry(1); // rom
281
213282}
214283
215284WRITE8_MEMBER(mz_state::mz700_bank_3_w)
216285{
217   UINT8 *videoram = m_videoram;
218   address_space &spc = m_maincpu->space(AS_PROGRAM);
286   //address_space &spc = m_maincpu->space(AS_PROGRAM);
219287
220288   if (m_mz700_mode)
221289   {
222290      if (!m_mz700_ram_lock)
223291      {
224         /* switch in videoram */
225         spc.install_readwrite_bank(0xd000, 0xd7ff, "bank7");
226         membank("bank7")->set_base(videoram);
292         if (m_mz700)
293            membank("bankd")->set_entry(1);
294         else
295         {
296            /* switch in videoram */
297            //spc.install_readwrite_bank(0xd000, 0xd7ff, "bank7");
298            //membank("bank7")->set_base(m_videoram);
227299
228         /* switch in colorram */
229         spc.install_readwrite_bank(0xd800, 0xdfff, "bank9");
230         membank("bank9")->set_base(m_colorram);
231
300            /* switch in colorram */
301            //spc.install_readwrite_bank(0xd800, 0xdfff, "bank9");
302            //membank("bank9")->set_base(m_colorram);
303            membank("bankd")->set_entry(1);
304         }
232305         m_mz700_ram_vram = TRUE;
233306
234307         /* switch in memory mapped i/o devices */
235308         if (m_mz700)
236309         {
237            spc.install_readwrite_handler(0xe000, 0xfff3, 0, 0x1ff0, read8_delegate(FUNC(i8255_device::read), (i8255_device*)m_ppi), write8_delegate(FUNC(i8255_device::write), (i8255_device*)m_ppi));
238            spc.install_readwrite_handler(0xe004, 0xfff7, 0, 0x1ff0, read8_delegate(FUNC(pit8253_device::read), (pit8253_device*)m_pit), write8_delegate(FUNC(pit8253_device::write), (pit8253_device*)m_pit));
239            spc.install_readwrite_handler(0xe008, 0xfff8, 0, 0x1ff0, read8_delegate(FUNC(mz_state::mz700_e008_r),this), write8_delegate(FUNC(mz_state::mz700_e008_w),this));
310            m_banke->set_bank(1); //devices
240311         }
241312         else
242313         {
243            spc.install_readwrite_handler(0xe000, 0xe003, read8_delegate(FUNC(i8255_device::read), (i8255_device*)m_ppi), write8_delegate(FUNC(i8255_device::write), (i8255_device*)m_ppi));
244            spc.install_readwrite_handler(0xe004, 0xe007, read8_delegate(FUNC(pit8253_device::read), (pit8253_device*)m_pit), write8_delegate(FUNC(pit8253_device::write), (pit8253_device*)m_pit));
245            spc.install_readwrite_handler(0xe008, 0xe008, read8_delegate(FUNC(mz_state::mz700_e008_r),this), write8_delegate(FUNC(mz_state::mz700_e008_w),this));
314            m_bankf->set_bank(1); //devices
246315         }
247316      }
248317   }
r250110r250111
251320      if (!m_mz800_ram_lock)
252321      {
253322         /* switch in mz800 monitor rom if not locked */
254         spc.install_read_bank(0xe000, 0xffff, "bank8");
255         spc.nop_write(0xe000, 0xffff);
256         membank("bank8")->set_base(memregion("monitor")->base() + 0x2000);
323         //spc.install_read_bank(0xe000, 0xffff, "bank8");
324         //spc.nop_write(0xe000, 0xffff);
325         //membank("bank8")->set_base(memregion("monitor")->base() + 0x2000);
326         m_bankf->set_bank(1); // devices + rom
257327         m_mz800_ram_monitor = TRUE;
258328      }
259329   }
r250110r250111
261331
262332WRITE8_MEMBER(mz_state::mz700_bank_4_w)
263333{
264   UINT8 *videoram = m_videoram;
265   address_space &spc = m_maincpu->space(AS_PROGRAM);
334   //address_space &spc = m_maincpu->space(AS_PROGRAM);
266335
267336   if (m_mz700_mode)
268337   {
r250110r250111
270339      mz700_bank_2_w(space, 0, 0);    /* switch in monitor rom */
271340      mz700_bank_3_w(space, 0, 0);    /* switch in videoram, colorram, and mmio */
272341
273      /* rest is ram is always ram in mz700 mode */
274      spc.install_readwrite_bank(0x1000, 0xcfff, "bank2");
275      membank("bank2")->set_base(m_ram->pointer() + 0x1000);
342      if (!m_mz700)
343      {
344         /* rest is ram is always ram in mz700 mode */
345         //spc.install_readwrite_bank(0x1000, 0xcfff, "bank2");
346         //membank("bank2")->set_base(m_ram->pointer() + 0x1000);
347         membank("bankr0")->set_entry(1); // rom
348         membank("bank1")->set_entry(0); // ram
349         membank("bankc")->set_entry(0); // ram
350      }
276351   }
277352   else
278353   {
279354      /* monitor rom and cgrom */
280      spc.install_read_bank(0x0000, 0x1fff, "bank1");
281      spc.nop_write(0x0000, 0x1fff);
282      membank("bank1")->set_base(memregion("monitor")->base());
355      //spc.install_read_bank(0x0000, 0x1fff, "bank1a");
356      //spc.nop_write(0x0000, 0x1fff);
357      //membank("bank1a")->set_base(memregion("monitor")->base());
358      membank("bankr0")->set_entry(1); // rom
359      membank("bank1")->set_entry(1); // rom
283360
284361      /* ram from 0x2000 to 0x7fff */
285      spc.install_readwrite_bank(0x2000, 0x7fff, "bank3");
286      membank("bank3")->set_base(m_ram->pointer());
362      //spc.install_readwrite_bank(0x2000, 0x7fff, "bank3");
363      //membank("bank3")->set_base(m_ram->pointer());
287364
288365      if (m_hires_mode)
289366      {
290367         /* vram from 0x8000 to 0xbfff */
291         spc.install_readwrite_bank(0x8000, 0xbfff, "bank4");
292         membank("bank4")->set_base(videoram);
368         //spc.install_readwrite_bank(0x8000, 0xbfff, "bank4");
369         //membank("bank4")->set_base(m_videoram);
370         membank("banka")->set_entry(1); // vram
293371      }
294372      else
295373      {
296374         /* vram from 0x8000 to 0x9fff */
297         spc.install_readwrite_bank(0x8000, 0x9fff, "bank4");
298         membank("bank4")->set_base(videoram);
375         //spc.install_readwrite_bank(0x8000, 0x9fff, "bank4");
376         //membank("bank4")->set_base(m_videoram);
377         membank("banka")->set_entry(1); // vram
299378
300379         /* ram from 0xa000 to 0xbfff */
301         spc.install_readwrite_bank(0xa000, 0xbfff, "bank5");
302         membank("bank5")->set_base(m_ram->pointer() + 0xa000);
380         //spc.install_readwrite_bank(0xa000, 0xbfff, "bank5");
381         //membank("bank5")->set_base(m_ram->pointer() + 0xa000);
303382      }
304383
305384      /* ram from 0xc000 to 0xdfff */
306      spc.install_readwrite_bank(0xc000, 0xdfff, "bank6");
307      membank("bank6")->set_base(m_ram->pointer() + 0xc000);
385      //spc.install_readwrite_bank(0xc000, 0xdfff, "bank6");
386      //membank("bank6")->set_base(m_ram->pointer() + 0xc000);
387      membank("bankd")->set_entry(0); // ram
308388
309389      /* mz800 monitor rom from 0xe000 to 0xffff */
310      spc.install_read_bank(0xe000, 0xffff, "bank8");
311      spc.nop_write(0xe000, 0xffff);
312      membank("bank8")->set_base(memregion("monitor")->base() + 0x2000);
390      //spc.install_read_bank(0xe000, 0xffff, "bank8");
391      //spc.nop_write(0xe000, 0xffff);
392      //membank("bank8")->set_base(memregion("monitor")->base() + 0x2000);
393      m_bankf->set_bank(1); // devices + rom
313394      m_mz800_ram_monitor = TRUE;
314395
315396      m_mz800_ram_lock = FALSE; /* reset lock? */
r250110r250111
318399
319400WRITE8_MEMBER(mz_state::mz700_bank_5_w)
320401{
321   address_space &spc = m_maincpu->space(AS_PROGRAM);
402   //address_space &spc = m_maincpu->space(AS_PROGRAM);
322403
323404   if (m_mz700_mode)
324405   {
325406      /* prevent access from 0xd000 to 0xffff */
326407      m_mz700_ram_lock = TRUE;
327      spc.nop_readwrite(0xd000, 0xffff);
408      if (m_mz700)
409         m_banke->set_bank(2);
410      else
411         //spc.nop_readwrite(0xd000, 0xdfff);
412         //spc.nop_readwrite(0xd000, 0xffff);
413         m_bankf->set_bank(2);
328414   }
329415   else
330416   {
331417      /* prevent access from 0xe000 to 0xffff */
332418      m_mz800_ram_lock = TRUE;
333      spc.nop_readwrite(0xe000, 0xffff);
419      //spc.nop_readwrite(0xe000, 0xffff);
420      m_bankf->set_bank(2);
334421   }
335422}
336423
r250110r250111
435522   LOG(2,"mz700_pio_port_a_w",("%02X\n", data),machine());
436523
437524   /* the ls145 is connected to PA0-PA3 */
438   dynamic_cast<ttl74145_device *>(device)->write(data & 0x07);
525   dynamic_cast<ttl74145_device *>(device)->write(data & 0x0f);
439526
440527   /* ne556 reset is connected to PA7 */
441528   timer->enable(BIT(data, 7));
trunk/src/mame/machine/namcoio.c
r250110r250111
285285
286286//popmessage("%x %x %x %x %x %x %x %x",IORAM_READ(8),IORAM_READ(9),IORAM_READ(10),IORAM_READ(11),IORAM_READ(12),IORAM_READ(13),IORAM_READ(14),IORAM_READ(15));
287287
288         m_out_0_cb((offs_t)0, IORAM_READ(9) & 0x0f);   // output to pins 13-16 (motos, pacnpal, gaplus)
289         m_out_1_cb((offs_t)0, IORAM_READ(10) & 0x0f);  // output to pins 17-20 (gaplus)
288         m_out_0_cb((offs_t)0, IORAM_READ(9));   // output to pins 13-16 (motos, pacnpal, gaplus)
289         m_out_1_cb((offs_t)0, IORAM_READ(10));  // output to pins 17-20 (gaplus)
290290         break;
291291
292292      case 2: // initialize coinage settings
r250110r250111
388388
389389//popmessage("%x %x %x %x %x %x %x %x",IORAM_READ(8),IORAM_READ(9),IORAM_READ(10),IORAM_READ(11),IORAM_READ(12),IORAM_READ(13),IORAM_READ(14),IORAM_READ(15));
390390
391         m_out_0_cb((offs_t)0, IORAM_READ(9) & 0x0f);   // output to pins 13-16 (toypop)
392         m_out_1_cb((offs_t)0, IORAM_READ(10) & 0x0f);  // output to pins 17-20 (toypop)
391         m_out_0_cb((offs_t)0, IORAM_READ(9));   // output to pins 13-16 (toypop)
392         m_out_1_cb((offs_t)0, IORAM_READ(10));  // output to pins 17-20 (toypop)
393393         break;
394394
395395      case 2: // initialize coinage settings
trunk/src/mame/video/fuukifg3.c
r250110r250111
5454{
5555   UINT16 code = (m_vram[_N_][tile_index] & 0xffff0000) >> 16;
5656   UINT16 attr = (m_vram[_N_][tile_index] & 0x0000ffff);
57   SET_TILE_INFO_MEMBER(1 + _N_, code, (attr & 0x3f) >> 4, TILE_FLIPYX((attr >> 6) & 3));
57   SET_TILE_INFO_MEMBER(1 + _N_, code, (attr & 0x3f) >> 4, TILE_FLIPYX(attr >> 6));
5858}
5959
6060TILE_GET_INFO_MEMBER(fuuki32_state::get_tile_info_0){ get_tile_info8bpp(tileinfo, tile_index, 0); }
r250110r250111
6464{
6565   UINT16 code = (m_vram[_N_][tile_index] & 0xffff0000) >> 16;
6666   UINT16 attr = (m_vram[_N_][tile_index] & 0x0000ffff);
67   SET_TILE_INFO_MEMBER(1 + _N_, code, attr & 0x3f, TILE_FLIPYX((attr >> 6) & 3));
67   SET_TILE_INFO_MEMBER(1 + _N_, code, attr & 0x3f, TILE_FLIPYX(attr >> 6));
6868}
6969
7070TILE_GET_INFO_MEMBER(fuuki32_state::get_tile_info_2){ get_tile_info4bpp(tileinfo, tile_index, 2); }
trunk/src/mame/video/mcr.c
r250110r250111
5757   int data = videoram[tile_index * 2] | (videoram[tile_index * 2 + 1] << 8);
5858   int code = data & 0x1ff;
5959   int color = (data >> 11) & 3;
60   SET_TILE_INFO_MEMBER(0, code, color, TILE_FLIPYX((data >> 9) & 3));
60   SET_TILE_INFO_MEMBER(0, code, color, TILE_FLIPYX(data >> 9));
6161
6262   /* sprite color base comes from the top 2 bits */
6363   tileinfo.category = (data >> 14) & 3;
r250110r250111
8383   int data = videoram[tile_index * 2] | (videoram[tile_index * 2 + 1] << 8);
8484   int code = data & 0x3ff;
8585   int color = (data >> 12) & 3;
86   SET_TILE_INFO_MEMBER(0, code, color, TILE_FLIPYX((data >> 10) & 3));
86   SET_TILE_INFO_MEMBER(0, code, color, TILE_FLIPYX(data >> 10));
8787
8888   /* sprite color base might come from the top 2 bits */
8989   tileinfo.category = (data >> 14) & 3;
trunk/src/mame/video/mcr3.c
r250110r250111
3636   int data = videoram[tile_index * 2] | (videoram[tile_index * 2 + 1] << 8);
3737   int code = (data & 0x3ff) | ((data >> 4) & 0x400);
3838   int color = ((data >> 12) & 3) ^ 3;
39   SET_TILE_INFO_MEMBER(0, code, color, TILE_FLIPYX((data >> 10) & 3));
39   SET_TILE_INFO_MEMBER(0, code, color, TILE_FLIPYX(data >> 10));
4040}
4141
4242
trunk/src/mame/video/mcr68.c
r250110r250111
2626   int data = LOW_BYTE(videoram[tile_index * 2]) | (LOW_BYTE(videoram[tile_index * 2 + 1]) << 8);
2727   int code = (data & 0x3ff) | ((data >> 4) & 0xc00);
2828   int color = (~data >> 12) & 3;
29   SET_TILE_INFO_MEMBER(0, code, color, TILE_FLIPYX((data >> 10) & 3));
29   SET_TILE_INFO_MEMBER(0, code, color, TILE_FLIPYX(data >> 10));
3030   if (m_gfxdecode->gfx(0)->elements() < 0x1000)
3131      tileinfo.category = (data >> 15) & 1;
3232}
r250110r250111
3737   UINT16 *videoram = m_videoram;
3838   int data = videoram[tile_index];
3939   int color = (data >> 13) & 7;
40   SET_TILE_INFO_MEMBER(0, data & 0x3ff, color, TILE_FLIPYX((data >> 11) & 3));
40   SET_TILE_INFO_MEMBER(0, data & 0x3ff, color, TILE_FLIPYX(data >> 11));
4141}
4242
4343
r250110r250111
4646   UINT16 *videoram = m_videoram;
4747   int data = videoram[tile_index];
4848   int color = (data >> 13) & 7;
49   SET_TILE_INFO_MEMBER(2, data & 0x3ff, color, TILE_FLIPYX((data >> 11) & 3));
49   SET_TILE_INFO_MEMBER(2, data & 0x3ff, color, TILE_FLIPYX(data >> 11));
5050   tileinfo.category = (color != 0);
5151}
5252
trunk/src/mame/video/mz700.c
r250110r250111
1515#include "includes/mz700.h"
1616
1717
18#ifndef VERBOSE
19#define VERBOSE 1
20#endif
21
22#define LOG(N,M,A)  \
23   do { \
24      if(VERBOSE>=N) \
25      { \
26         if( M ) \
27            logerror("%11.6f: %-24s",machine.time().as_double(),(char*)M ); \
28         logerror A; \
29      } \
30   } while (0)
31
32
33PALETTE_INIT_MEMBER(mz_state, mz)
34{
35   int i;
36
37   for (i = 0; i < 8; i++)
38      m_palette->set_indirect_color(i, rgb_t((i & 2) ? 0xff : 0x00, (i & 4) ? 0xff : 0x00, (i & 1) ? 0xff : 0x00));
39
40   for (i = 0; i < 256; i++)
41   {
42      m_palette->set_pen_indirect(i*2, i & 7);
43         m_palette->set_pen_indirect(i*2+1, (i >> 4) & 7);
44   }
45}
46
47
4818UINT32 mz_state::screen_update_mz700(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
4919{
50   UINT8 *videoram = m_videoram;
51   int offs;
20   UINT8 y,ra,gfx,col,bg=0,fg=0,oldcol=0x7e;
21   UINT16 sy=0,ma=0,x,chr;
5222
53   bitmap.fill(m_palette->black_pen(), cliprect);
54
55   for(offs = 0; offs < 40*25; offs++)
23   for (y = 0; y < 25; y++)
5624   {
57      int sx, sy, code, color;
25      for (ra = 0; ra < 8; ra++)
26      {
27         UINT16 *p = &bitmap.pix16(sy++);
5828
59      sy = (offs / 40) * 8;
60      sx = (offs % 40) * 8;
29         for (x = ma; x < ma + 40; x++)
30         {
31            col = m_colorram[x];
32            if (col != oldcol)
33            {
34               oldcol = col;
35               col = BITSWAP8(col, 7, 3, 4, 6, 5, 0, 2, 1); // turn BRG into RGB
36               bg = col & 7;
37               fg = (col >> 3) & 7;
38            }
39            chr = m_videoram[x] | (BIT(col, 7)<<8);
40            gfx = m_p_chargen[(chr<<3) | ra ];
6141
62      color = m_colorram[offs];
63      code = videoram[offs] | (color & 0x80) << 1;
64
65      m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, code, color, 0, 0, sx, sy);
42            /* Display a scanline of a character */
43            *p++ = BIT(gfx, 0) ? fg : bg;
44            *p++ = BIT(gfx, 1) ? fg : bg;
45            *p++ = BIT(gfx, 2) ? fg : bg;
46            *p++ = BIT(gfx, 3) ? fg : bg;
47            *p++ = BIT(gfx, 4) ? fg : bg;
48            *p++ = BIT(gfx, 5) ? fg : bg;
49            *p++ = BIT(gfx, 6) ? fg : bg;
50            *p++ = BIT(gfx, 7) ? fg : bg;
51         }
52      }
53      ma+=40;
6654   }
67
6855   return 0;
6956}
7057
7158
7259/***************************************************************************
7360    MZ-800
61    Not working.
7462***************************************************************************/
7563
76VIDEO_START_MEMBER(mz_state,mz800)
77{
78   m_gfxdecode->gfx(0)->set_source(m_cgram);
79}
80
8164UINT32 mz_state::screen_update_mz800(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
8265{
83   UINT8 *videoram = m_videoram;
84
85   bitmap.fill(m_palette->black_pen(), cliprect);
86
8766   if (m_mz700_mode)
8867      return screen_update_mz700(screen, bitmap, cliprect);
8968   else
r250110r250111
9473      else
9574      {
9675         int x, y;
97         UINT8 *start_addr = videoram;
9876
9977         for (x = 0; x < 40; x++)
10078         {
10179            for (y = 0; y < 200; y++)
10280            {
103               bitmap.pix16(y, x * 8 + 0) = BIT(start_addr[x * 8 + y], 0);
104               bitmap.pix16(y, x * 8 + 1) = BIT(start_addr[x * 8 + y], 1);
105               bitmap.pix16(y, x * 8 + 2) = BIT(start_addr[x * 8 + y], 2);
106               bitmap.pix16(y, x * 8 + 3) = BIT(start_addr[x * 8 + y], 3);
107               bitmap.pix16(y, x * 8 + 4) = BIT(start_addr[x * 8 + y], 4);
108               bitmap.pix16(y, x * 8 + 5) = BIT(start_addr[x * 8 + y], 5);
109               bitmap.pix16(y, x * 8 + 6) = BIT(start_addr[x * 8 + y], 6);
110               bitmap.pix16(y, x * 8 + 7) = BIT(start_addr[x * 8 + y], 7);
81               bitmap.pix16(y, x * 8 + 0) = BIT(m_videoram[x * 8 + y], 0) ? 7 : 0;
82               bitmap.pix16(y, x * 8 + 1) = BIT(m_videoram[x * 8 + y], 1) ? 7 : 0;
83               bitmap.pix16(y, x * 8 + 2) = BIT(m_videoram[x * 8 + y], 2) ? 7 : 0;
84               bitmap.pix16(y, x * 8 + 3) = BIT(m_videoram[x * 8 + y], 3) ? 7 : 0;
85               bitmap.pix16(y, x * 8 + 4) = BIT(m_videoram[x * 8 + y], 4) ? 7 : 0;
86               bitmap.pix16(y, x * 8 + 5) = BIT(m_videoram[x * 8 + y], 5) ? 7 : 0;
87               bitmap.pix16(y, x * 8 + 6) = BIT(m_videoram[x * 8 + y], 6) ? 7 : 0;
88               bitmap.pix16(y, x * 8 + 7) = BIT(m_videoram[x * 8 + y], 7) ? 7 : 0;
11189            }
11290         }
11391      }
r250110r250111
123101WRITE8_MEMBER(mz_state::mz800_cgram_w)
124102{
125103   m_cgram[offset] = data;
126
127   m_gfxdecode->gfx(0)->mark_dirty(offset/8);
128104}


Previous 199869 Revisions Next


© 1997-2024 The MAME Team