Previous 199869 Revisions Next

r24575 Tuesday 30th July, 2013 at 12:51:30 UTC by David Haywood
started pushing other games through the new 104 code, removed the old simulations (nw)
[src/mame/drivers]dblewing.c
[src/mame/machine]deco104.c deco104.h deco146.c

trunk/src/mame/machine/deco104.c
r24574r24575
9090 /* 0x082 */ { 0x28, { 0xff, 0xff, 0xff, 0xff, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 1, 1 },
9191 /* 0x084 */ { 0x50, { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f } , 0, 0 },
9292 /* 0x086 */ { 0x66, { 0x0d, 0x0e, 0x0f, 0x0c, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b } , 1, 1 },
93 /* 0x088 */ { INPUT_PORT_A_NV , { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 0, 0 },
93 /* 0x088 */ { INPUT_PORT_A , { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f } , 0, 0 }, // { INPUT_PORT_A_NV , { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 0, 0 }, // most common input port case
9494 /* 0x08a */ { 0x1c, { 0x0d, 0x0e, 0x0f, 0x0c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 0, 1 },
9595 /* 0x08c */ { 0x48, { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f } , 0, 0 },
9696 /* 0x08e */ { 0xc2, { 0x01, 0x02, 0x03, 0x00, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f } , 1, 0 },
r24574r24575
380380 /* 0x2c6 */ { 0x50, { 0x0c, 0x0d, 0x0e, 0x0f, 0x08, 0x09, 0x0a, 0x0b, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 } , 1, 0 },
381381 /* 0x2c8 */ { 0x1c, { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f } , 0, 0 },
382382 /* 0x2ca */ { 0x1a, { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f } , 0, 0 },
383 /* 0x2cc */ { INPUT_PORT_B_NV , { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 0, 0 },
383 /* 0x2cc */ { INPUT_PORT_B , { 0x00, 0x01, 0x02, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 0, 0 }, // { INPUT_PORT_B_NV , { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 0, 0 },  // bit order not verified, old sim says wizard fire uses it
384384 /* 0x2ce */ { 0x92, { 0x09, 0x0a, 0x0b, 0x08, 0x0c, 0x0d, 0x0e, 0x0f, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 } , 1, 1 },
385385 /* 0x2d0 */ { 0x66, { 0xff, 0xff, 0xff, 0xff, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x08, 0x09, 0x0a, 0x0b } , 1, 0 },
386386 /* 0x2d2 */ { 0x28, { 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 1, 0 },
r24574r24575
460460 /* 0x366 */ { 0xec, { 0x03, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f } , 0, 0 },
461461 /* 0x368 */ { INPUT_PORT_C_NV , { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 0, 0 },
462462 /* 0x36a */ { INPUT_PORT_A_NV , { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 0, 0 },
463 /* 0x36c */  { INPUT_PORT_B , { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f  } , 0, 0 },  // { INPUT_PORT_B_NV , { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 0, 0 },  // Double Wing - not verified
463 /* 0x36c */  { INPUT_PORT_B , { 0x00, 0x01, 0x02, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff  } , 0, 0 },  // { INPUT_PORT_B_NV , { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 0, 0 },  // Double Wing - not verified but standard case for most games
464464 /* 0x36e */ { 0x0c, { 0x08, 0x09, 0x0a, 0x0b, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x0c, 0x0d, 0x0e, 0x0f } , 0, 1 },
465465 /* 0x370 */ { 0x80, { 0x05, 0x06, 0x07, 0x04, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x00, 0x01, 0x02, 0x03 } , 1, 0 },
466466 /* 0x372 */ { 0x82, { 0x0c, 0x0d, 0x0e, 0x0f, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b } , 1, 1 },
r24574r24575
494494 /* 0x3aa */ { 0x56, { 0x0c, 0x0d, 0x0e, 0x0f, 0x08, 0x09, 0x0a, 0x0b, 0x04, 0x05, 0x06, 0x07, 0x00, 0x01, 0x02, 0x03 } , 1, 0 },
495495 /* 0x3ac */ { 0x54, { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x0c, 0x0d, 0x0e, 0x0f, 0x08, 0x09, 0x0a, 0x0b } , 0, 1 },
496496 /* 0x3ae */ { 0x58, { 0x04, 0x05, 0x06, 0x07, 0x00, 0x01, 0x02, 0x03, 0x0c, 0x0d, 0x0e, 0x0f, 0x08, 0x09, 0x0a, 0x0b } , 0, 1 },
497 /* 0x3b0 */ { INPUT_PORT_B_NV , { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 0, 0 },
497 /* 0x3b0 */ { INPUT_PORT_B , {  NIB1__, BLANK_, BLANK_, BLANK_ } , 0, 0 }, // { INPUT_PORT_B_NV , { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 0, 0 }, // not verified, old sim says wizdfire uses it
498498 /* 0x3b2 */ { 0x14, { 0x05, 0x06, 0x07, 0x04, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff } , 1, 0 },
499499 /* 0x3b4 */ { 0x38, { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f } , 0, 0 },
500500 /* 0x3b6 */ { 0xf8, { 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 0, 0 },
r24574r24575
572572 /* 0x446 */ { 0x16, { 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 1, 1 },
573573 /* 0x448 */ { 0x90, { 0x04, 0x05, 0x06, 0x07, 0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f } , 1, 0 },
574574 /* 0x44a */ { 0xb4, { 0x0f, 0x0c, 0x0d, 0x0e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 0, 1 },
575 /* 0x44c */ { INPUT_PORT_B_NV , { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 0, 0 },
575 /* 0x44c */ { INPUT_PORT_B,    {  NIB2R1, BLANK_, BLANK_, BLANK_ },  0, 0 }, // { INPUT_PORT_B_NV , { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 0, 0 }, // not verified, rohga, based on old sim
576576 /* 0x44e */ { 0x44, { 0x0c, 0x0d, 0x0e, 0x0f, 0x08, 0x09, 0x0a, 0x0b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 1, 0 },
577577 /* 0x450 */ { INPUT_PORT_C_NV , { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 0, 0 },
578578 /* 0x452 */ { 0x30, { 0x0d, 0x0e, 0x0f, 0x0c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 0, 0 },
r24574r24575
751751 /* 0x5ac */ { 0x6e, { 0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x04, 0x05, 0x06, 0x07 } , 1, 1 },
752752 /* 0x5ae */ { 0xdc, { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f } , 0, 0 },
753753 /* 0x5b0 */ { 0xc4, { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f } , 0, 0 },
754 /* 0x5b2 */  { INPUT_PORT_B , { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f } , 0, 0 }, // { INPUT_PORT_B_NV , { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 0, 0 },  // double wings - NOT verified
754 /* 0x5b2 */  { INPUT_PORT_B , { 0x00, 0x01, 0x02, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 0, 0 }, // { INPUT_PORT_B_NV , { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 0, 0 },  // double wings - NOT verified
755755 /* 0x5b4 */ { 0xe0, { 0x04, 0x05, 0x06, 0x07, 0x0c, 0x0d, 0x0e, 0x0f, 0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0a, 0x0b } , 0, 0 },
756756 /* 0x5b6 */ { 0x92, { 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff } , 1, 0 },
757757 /* 0x5b8 */ { 0x4e, { 0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x04, 0x05, 0x06, 0x07 } , 1, 0 },
r24574r24575
948948 /* 0x736 */ { 0x68, { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0c, 0x0d, 0x0e, 0x0f } , 0, 1 },
949949 /* 0x738 */ { 0x54, { 0x0d, 0x0e, 0x0f, 0x0c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 0, 0 },
950950 /* 0x73a */ { 0x00, { 0x0b, 0x08, 0x09, 0x0a, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 0, 0 },
951 /* 0x73c */ { INPUT_PORT_A , { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f } , 0, 0 }, // { INPUT_PORT_A_NV , { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 0, 0 },   // double wings uses this, NOT verified
951 /* 0x73c */ { INPUT_PORT_A , { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f } , 0, 0 }, // { INPUT_PORT_A_NV , { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } , 0, 0 },   // double wings uses this, NOT verified (standard inputs?)
952952 /* 0x73e */ { 0xae, { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f } , 0, 0 },
953953 /* 0x740 */ { 0x6a, { 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x00, 0x01, 0x02, 0x03 } , 0, 0 },
954954 /* 0x742 */ { 0x2e, { 0x00, 0x01, 0x02, 0x03, 0x0c, 0x0d, 0x0e, 0x0f, 0x08, 0x09, 0x0a, 0x0b, 0x04, 0x05, 0x06, 0x07 } , 0, 0 },
r24574r24575
10651065   m_mask_port = 0xee;
10661066   m_soundlatch_port = 0xa8;
10671067   m_lookup_table = port104_table;
1068
1069   m_use_complete_table = 0;
10701068}
10711069
10721070
r24574r24575
10761074{
10771075}
10781076
1079void deco104_device::set_use_dblewing_hacks(device_t &device, int use_hacks)
1080{
1081   deco104_device &dev = downcast<deco104_device &>(device);
1082   dev.m_use_complete_table = use_hacks;
1083}
1084
10851077void deco104_device::device_start()
10861078{
10871079   deco_146_base_device::device_start();
1088
1089   // double wing
1090   save_item(NAME(m_008_data));
1091   save_item(NAME(m_104_data));
1092   save_item(NAME(m_406_data));
1093   save_item(NAME(m_608_data));
1094   save_item(NAME(m_70c_data));
1095   save_item(NAME(m_78a_data));
1096   save_item(NAME(m_088_data));
1097   save_item(NAME(m_58c_data));
1098   save_item(NAME(m_408_data));
1099   save_item(NAME(m_40e_data));
1100   save_item(NAME(m_080_data));
1101   save_item(NAME(m_788_data));
1102   save_item(NAME(m_38e_data));
1103   save_item(NAME(m_580_data));
1104   save_item(NAME(m_60a_data));
1105   save_item(NAME(m_200_data));
1106   save_item(NAME(m_28c_data));
1107   save_item(NAME(m_18a_data));
1108   save_item(NAME(m_280_data));
1109   save_item(NAME(m_384_data));
1110
1111   save_item(NAME(m_boss_move));
1112   save_item(NAME(m_boss_shoot_type));
1113   save_item(NAME(m_boss_3_data));
1114   save_item(NAME(m_boss_4_data));
1115   save_item(NAME(m_boss_5_data));
1116   save_item(NAME(m_boss_5sx_data));
1117   save_item(NAME(m_boss_6_data));
11181080}
11191081
11201082void deco104_device::device_reset()
11211083{
11221084   deco_146_base_device::device_reset();
1123
1124   // double wing
1125   m_008_data = 0;
1126   m_104_data = 0;
1127   m_406_data = 0;
1128   m_608_data = 0;
1129   m_70c_data = 0;
1130   m_78a_data = 0;
1131   m_088_data = 0;
1132   m_58c_data = 0;
1133   m_408_data = 0;
1134   m_40e_data = 0;
1135   m_080_data = 0;
1136   m_788_data = 0;
1137   m_38e_data = 0;
1138   m_580_data = 0;
1139   m_60a_data = 0;
1140   m_200_data = 0;
1141   m_28c_data = 0;
1142   m_18a_data = 0;
1143   m_280_data = 0;
1144   m_384_data = 0;
1145
1146   m_boss_move = 0;
1147   m_boss_shoot_type = 0;
1148   m_boss_3_data = 0;
1149   m_boss_4_data = 0;
1150   m_boss_5_data = 0;
1151   m_boss_5sx_data = 0;
1152   m_boss_6_data = 0;
11531085}
11541086
11551087
1156/***************************************************************************/
11571088
11581089
1159UINT16 deco104_device::read_data_getloc(UINT16 offset, int& location)
1160{
1161   if (m_use_complete_table==1)
1162      return deco_146_base_device::read_data_getloc(offset, location);
1163
1164
1165   UINT16* prot_ram;
1166
1167   if (m_current_rambank==0)
1168      prot_ram = m_rambank0;
1169   else
1170      prot_ram = m_rambank1;
1171
1172
1173   location = 0x00;
1174   int tempinput = 0;
1175
1176
1177   switch (offset>>1)
1178   {
1179      case 0x088/2: /* Player 1 & 2 input ports */    tempinput = m_port_a_r(0);  return tempinput; // also caveman ninja + wizard fire
1180      case 0x36c/2:                                   tempinput = m_port_b_r(0); return tempinput; // also caveman ninja + wizard fire
1181      case 0x44c/2:                                   tempinput = m_port_b_r(0);  return ((tempinput & 0x7)<<13)|((tempinput & 0x8)<<9);
1182      case 0x292/2: /* Dips */                        tempinput = m_port_c_r(0); return tempinput; // also wizard fire
1183      case 0x044/2:                                   location = 0x2c; return ((((DECO_PORT(location)&0x000f)<<12)) ^ m_xor) & (~m_nand);
1184      case 0x282/2:                                   location = 0x26; return ((DECO_PORT(location)&0x000f)<<12) & (~m_nand);
1185      case 0x0d4/2:                                   location = 0x6e; return ((DECO_PORT(location)&0x0ff0)<<4) | ((DECO_PORT(location)&0x000e)<<3) | ((DECO_PORT(location)&0x0001)<<7);
1186      case 0x5a2/2:                                   return (((DECO_PORT(0x24)&0xff00)>>4) | ((DECO_PORT(0x24)&0x000f)<<0) | ((DECO_PORT(0x24)&0x00f0)<<8)) & (~m_nand);
1187      case 0x570/2:                                   return (((DECO_PORT(0x24)&0xf0f0)>>0) | ((DECO_PORT(0x24)&0x000f)<<8)) ^ m_xor;
1188      case 0x32e/2:                                   return (((DECO_PORT(0x46)&0xf000)>>0) | ((DECO_PORT(0x46)&0x00ff)<<4)) & (~m_nand);
1189      case 0x4dc/2:                                   return ((DECO_PORT(0x62)&0x00ff)<<8);
1190      case 0x1be/2:                                   return ((((DECO_PORT(0xc2)&0x0ff0)<<4) | ((DECO_PORT(0xc2)&0x0003)<<6) | ((DECO_PORT(0xc2)&0x000c)<<2)) ^ m_xor) & (~m_nand);
1191      case 0x420/2:                                   return ((DECO_PORT(0x2e)&0xf000)>>4) | ((DECO_PORT(0x2e)&0x0f00)<<4) | ((DECO_PORT(0x2e)&0x00f0)>>4) | ((DECO_PORT(0x2e)&0x000f)<<4);
1192      case 0x390/2:                                   return DECO_PORT(0x2c);
1193      case 0x756/2:                                   return ((DECO_PORT(0x60)&0xfff0)>>4) | ((DECO_PORT(0x60)&0x0007)<<13) | ((DECO_PORT(0x60)&0x0008)<<9);
1194      case 0x424/2:                                   return ((DECO_PORT(0x60)&0xf000)>>4) | ((DECO_PORT(0x60)&0x0f00)<<4) | ((DECO_PORT(0x60)&0x00f0)>>0) | ((DECO_PORT(0x60)&0x000f)<<0);
1195      case 0x156/2:                                   return (((DECO_PORT(0xde)&0xff00)<<0) | ((DECO_PORT(0xde)&0x000f)<<4) | ((DECO_PORT(0xde)&0x00f0)>>4)) & (~m_nand);
1196      case 0x0a8/2:                                   return (((DECO_PORT(0xde)&0xff00)>>4) | ((DECO_PORT(0xde)&0x000f)<<0) | ((DECO_PORT(0xde)&0x00f0)<<8)) & (~m_nand);
1197      case 0x64a/2:                                   return (((DECO_PORT(0xde)&0xfff0)>>4) | ((DECO_PORT(0xde)&0x000c)<<10) | ((DECO_PORT(0xde)&0x0003)<<14)) & (~m_nand);
1198      case 0x16e/2:                                   return DECO_PORT(0x6a);
1199      case 0x39c/2:                                   return (DECO_PORT(0x6a)&0x00ff) | ((DECO_PORT(0x6a)&0xf000)>>4) | ((DECO_PORT(0x6a)&0x0f00)<<4);
1200      case 0x212/2:                                   return (((DECO_PORT(0x6e)&0xff00)>>4) | ((DECO_PORT(0x6e)&0x00f0)<<8) | ((DECO_PORT(0x6e)&0x000f)<<0)) ^ m_xor;
1201      case 0x70a/2:                                   return (((DECO_PORT(0xde)&0x00f0)<<8) | ((DECO_PORT(0xde)&0x0007)<<9) | ((DECO_PORT(0xde)&0x0008)<<5)) ^ m_xor;
1202      case 0x7a0/2:                                   return (DECO_PORT(0x6e)&0x00ff) | ((DECO_PORT(0x6e)&0xf000)>>4) | ((DECO_PORT(0x6e)&0x0f00)<<4);
1203      case 0x162/2:                                   return DECO_PORT(0x6e);
1204      case 0x384/2:                                   return ((DECO_PORT(0xdc)&0xf000)>>12) | ((DECO_PORT(0xdc)&0x0ff0)<<4) | ((DECO_PORT(0xdc)&0x000c)<<2) | ((DECO_PORT(0xdc)&0x0003)<<6);
1205      case 0x302/2:                                   return DECO_PORT(0x24);
1206      case 0x334/2:                                   return DECO_PORT(0x30);
1207      case 0x34c/2:                                   return DECO_PORT(0x3c);
1208      case 0x514/2:                                   return (((DECO_PORT(0x32)&0x0ff0)<<4) | ((DECO_PORT(0x32)&0x000c)<<2) | ((DECO_PORT(0x32)&0x0003)<<6)) & (~m_nand);
1209      case 0x34e/2:                                   return ((DECO_PORT(0xde)&0x0ff0)<<4) | ((DECO_PORT(0xde)&0xf000)>>8) | ((DECO_PORT(0xde)&0x000f)<<0);
1210      case 0x722/2:                                   return (((DECO_PORT(0xdc)&0x0fff)<<4) ^ m_xor) & (~m_nand);
1211      case 0x574/2:                                   return ((((DECO_PORT(0xdc)&0xfff0)>>0) | ((DECO_PORT(0xdc)&0x0003)<<2) | ((DECO_PORT(0xdc)&0x000c)>>2)) ^ m_xor) & (~m_nand);
1212      case 0x5ae/2:                                   return DECO_PORT(0xdc); // also caveman ninja
1213      case 0x410/2:                                   return DECO_PORT(0xde); // also caveman ninja
1214      case 0x340/2:                                   return ((DECO_PORT(0x90)&0xfff0) | ((DECO_PORT(0x90)&0x7)<<1) | ((DECO_PORT(0x90)&0x8)>>3)) ^ m_xor;
1215      case 0x4a4/2:                                   return (((DECO_PORT(0xce)&0x0ff0) | ((DECO_PORT(0xce)&0xf000)>>12) | ((DECO_PORT(0xce)&0x000f)<<12)) ^ m_xor) & (~m_nand);
1216      case 0x256/2:                                   return ((((DECO_PORT(0xce)&0xf000)>>12) | ((DECO_PORT(0xce)&0x0fff)<<4))) & (~m_nand);
1217      case 0x79a/2:                                   return (((DECO_PORT(0xc8)&0xfff0)>>4) | ((DECO_PORT(0xc8)&0x0008)<<9) | ((DECO_PORT(0xc8)&0x0007)<<13)) ^ m_xor;
1218      case 0x65e/2:                                   return DECO_PORT(0x9c); // also caveman ninja
1219      case 0x79c/2:                                   return ((DECO_PORT(0xc6)&0xf000) | ((DECO_PORT(0xc6)&0x00ff)<<4) | ((DECO_PORT(0xc6)&0x0f00)>>8)) & (~m_nand);
1220      case 0x15e/2:                                   return (((DECO_PORT(0x98)&0x0ff0)<<4) | ((DECO_PORT(0x98)&0xf000)>>12) | ((DECO_PORT(0x98)&0x0003)<<6) | ((DECO_PORT(0x98)&0x000c)<<2)) ^ m_xor;
1221      case 0x6e4/2:                                   return DECO_PORT(0x98); // also caveman ninja
1222      case 0x01e/2:                                   return ((((DECO_PORT(0xc4)&0xf000)>>4) | ((DECO_PORT(0xc4)&0x0f00)<<4) | ((DECO_PORT(0xc4)&0x00ff)<<0)) ^ m_xor) & (~m_nand);
1223      case 0x23a/2:                                   return ((((DECO_PORT(0x86)&0xfff0)>>0) | ((DECO_PORT(0x86)&0x0003)<<2) | ((DECO_PORT(0x86)&0x000c)>>2)) ^ m_xor);
1224      case 0x06e/2:                                   return ((((DECO_PORT(0x96)&0xf000)>>8) | ((DECO_PORT(0x96)&0x0f0f)<<0) | ((DECO_PORT(0x96)&0x00f0)<<8)) ^ m_xor);
1225      case 0x3a2/2:                                   return ((((DECO_PORT(0x94)&0xf000)>>8) | ((DECO_PORT(0x94)&0x0f00)>>8) | ((DECO_PORT(0x94)&0x00f0)<<8) | ((DECO_PORT(0x94)&0x000e)<<7) | ((DECO_PORT(0x94)&0x0001)<<11)) ^ m_xor);// & (~m_nand);
1226      case 0x4a6/2:                                   return ((DECO_PORT(0x8c)&0xff00)>>0) | ((DECO_PORT(0x8c)&0x00f0)>>4) | ((DECO_PORT(0x8c)&0x000f)<<4);
1227      case 0x7b0/2:                                   return DECO_PORT(0x80); // also caveman ninja
1228      case 0x5aa/2:                                   return ((((DECO_PORT(0x98)&0x0f00)>>8) | ((DECO_PORT(0x98)&0xf000)>>8) | ((DECO_PORT(0x98)&0x00f0)<<8) | ((DECO_PORT(0x98)&0x000e)<<7) | ((DECO_PORT(0x98)&0x0001)<<11)) ^ m_xor) & (~m_nand);
1229      case 0x662/2:                                   return DECO_PORT(0x8c); // also caveman ninja
1230      case 0x624/2:                                   return DECO_PORT(0x9a); // also caveman ninja
1231      case 0x02c/2:                                   return (((DECO_PORT(0x82)&0x0f0f)>>0) | ((DECO_PORT(0x82)&0xf000)>>8) | ((DECO_PORT(0x82)&0x00f0)<<8)) & (~m_nand);
1232      case 0x1b4/2:                                   return ((DECO_PORT(0xcc)&0x00f0)<<4) | ((DECO_PORT(0xcc)&0x000f)<<12);
1233      case 0x7ce/2:                                   return ((DECO_PORT(0x80)&0x000e)<<11) | ((DECO_PORT(0x80)&0x0001)<<15);
1234      case 0x41a/2:                                   return ((((DECO_PORT(0x84)&0x00f0)<<8) | ((DECO_PORT(0x84)&0xf000)>>8) | ((DECO_PORT(0x84)&0x0f00)>>8) | ((DECO_PORT(0x84)&0x0003)<<10) | ((DECO_PORT(0x84)&0x000c)<<6)) ^ m_xor);
1235      case 0x168/2:                                   return ((((DECO_PORT(0x84)&0x0ff0)<<4) | ((DECO_PORT(0x84)&0x000e)<<3) | ((DECO_PORT(0x84)&0x0001)<<5))) & (~m_nand);
1236      case 0x314/2:                                   return ((((DECO_PORT(0x84)&0x0ff0)<<4) | ((DECO_PORT(0x84)&0x000e)<<3) | ((DECO_PORT(0x84)&0x0001)<<5)));
1237      case 0x5e2/2:                                   return ((((DECO_PORT(0x84)&0x00f0)<<8) | ((DECO_PORT(0x84)&0x000e)<<7) | ((DECO_PORT(0x84)&0x0001)<<9)));
1238      case 0x72a/2:                                   return ((((DECO_PORT(0x86)&0xfff0)>>4) | ((DECO_PORT(0x86)&0x0003)<<14) | ((DECO_PORT(0x86)&0x000c)<<10)) ^ m_xor) & (~m_nand);
1239      case 0x178/2:                                   return (((DECO_PORT(0x88)&0x00ff)<<8) | ((DECO_PORT(0x88)&0xff00)>>8)) & (~m_nand); // also wizard fire
1240      case 0x40e/2:                                   return ((((DECO_PORT(0x8a)&0xf000)>>0) | ((DECO_PORT(0x8a)&0x00ff)<<4)) ^ m_xor) & (~m_nand);
1241      case 0x248/2:                                   return ((((DECO_PORT(0x8c)&0xff00)>>8) | ((DECO_PORT(0x8c)&0x00f0)<<4) | ((DECO_PORT(0x8c)&0x000f)<<12)) ^ m_xor) & (~m_nand);
1242      case 0x27e/2:                                   return ((((DECO_PORT(0x94)&0x00f0)<<8)) ^ m_xor) & (~m_nand);
1243      case 0x22c/2:                                   return ((DECO_PORT(0xc4)&0x00f0)<<8);
1244      case 0x77e/2:                                   return ((DECO_PORT(0x62)&0xf000)>>12) | ((DECO_PORT(0x62)&0x0ff0)<<0) | ((DECO_PORT(0x62)&0x000f)<<12);
1245      case 0x00c/2:                                       return ((DECO_PORT(0xd6)&0xf000)>>12) | ((DECO_PORT(0xd6)&0x0fff)<<4);
1246      case 0x090/2:                                   return DECO_PORT(0x44);
1247      case 0x246/2:                                   return ((((DECO_PORT(0x48)&0xff00)>>8) | ((DECO_PORT(0x48)&0x00f0)<<8) | ((DECO_PORT(0x48)&0x0f00)>>8) | ((DECO_PORT(0x48)&0x0003)<<10) | ((DECO_PORT(0x48)&0x000c)<<6)) ^ m_xor);
1248      case 0x546/2:                                   return (((DECO_PORT(0x62)&0xf0f0)>>0) | ((DECO_PORT(0x62)&0x000f)<<8)) & (~m_nand);
1249      case 0x2e2/2:                                   return ((DECO_PORT(0xc6)&0x000e)<<11) | ((DECO_PORT(0xc6)&0x0001)<<15);
1250      case 0x3c0/2:                                   return DECO_PORT(0x22);
1251      case 0x4b8/2:                                   return (((DECO_PORT(0x46)&0xf000)>>12) | ((DECO_PORT(0x46)&0x0f00)>>4) | ((DECO_PORT(0x46)&0x00ff)<<8)) ^ m_xor;
1252      case 0x65c/2:                                   return ((((DECO_PORT(0x44)&0xf000)>>12) | ((DECO_PORT(0x44)&0x0fff)<<4)) ^ m_xor) & (~m_nand);
1253      case 0x32a/2:                                   return ((((DECO_PORT(0xc0)&0x0ff0)<<4) | ((DECO_PORT(0xc0)&0x000e)<<3) | ((DECO_PORT(0xc0)&0x0001)<<7))) & (~m_nand);// ^ m_xor;
1254      case 0x008/2:                                       return ((((DECO_PORT(0x94)&0xfff0)<<0) | ((DECO_PORT(0x94)&0x000e)>>1) | ((DECO_PORT(0x94)&0x0001)<<3))) & (~m_nand);// ^ m_xor;
1255      case 0x456/2:                                   return (((DECO_PORT(0x26)&0xfff0)<<0) | ((DECO_PORT(0x26)&0x0007)<<1) | ((DECO_PORT(0x26)&0x0008)>>3));// ^ m_xor;
1256      case 0x190/2:                                   return ((((DECO_PORT(0x44)&0xf000)<<0) | ((DECO_PORT(0x44)&0x00ff)<<4))) & (~m_nand);// ^ m_xor;
1257      case 0x3f2/2:                                   return ((((DECO_PORT(0x48)&0x000f)<<12) | ((DECO_PORT(0x48)&0x00f0)<<4))) & (~m_nand);// ^ m_xor;
1258      case 0x2be/2:                                   return ((DECO_PORT(0x40)&0x00ff)<<8);
1259      case 0x19e/2:                                   return ((((DECO_PORT(0x3c)&0xf000)>>12) | ((DECO_PORT(0x3c)&0x0f00)<<4) | ((DECO_PORT(0x3c)&0x00f0)>>0) | ((DECO_PORT(0x3c)&0x000f)<<8)) ^ m_xor) & (~m_nand);
1260      case 0x2a2/2:                                   return ((((DECO_PORT(0x44)&0xff00)>>8) | ((DECO_PORT(0x44)&0x00f0)<<8) | ((DECO_PORT(0x44)&0x000e)<<7) | ((DECO_PORT(0x44)&0x0001)<<11)) ^ m_xor) & (~m_nand);
1261      case 0x748/2:                                   return (((DECO_PORT(0x44)&0xfff0)<<0) | ((DECO_PORT(0x44)&0x000e)>>1) | ((DECO_PORT(0x44)&0x0001)<<3));// & (~m_nand);
1262      case 0x686/2:                                   return (((DECO_PORT(0x46)&0xf000)>>4) | ((DECO_PORT(0x46)&0x0f00)>>8) | ((DECO_PORT(0x46)&0x00f0)<<8) | ((DECO_PORT(0x46)&0x000f)<<4));// & (~m_nand);
1263      case 0x4c4/2:                                   return ((DECO_PORT(0x3c)&0x000f)<<12) & (~m_nand);
1264      case 0x538/2:                                   return ((DECO_PORT(0x3c)&0x000f)<<12);
1265      case 0x63a/2:                                   return ((DECO_PORT(0x3c)&0x000f)<<12);
1266      case 0x348/2:                                   return ((((DECO_PORT(0x44)&0xf000)>>12) | ((DECO_PORT(0x44)&0x0ff0)<<4) | ((DECO_PORT(0x44)&0x000e)<<3) | ((DECO_PORT(0x44)&0x0001)<<7))) ^ m_xor;// & (~m_nand);
1267      case 0x200/2:                                   return (((DECO_PORT(0xa0)&0xfff0)>>4) | ((DECO_PORT(0xa0)&0x0007)<<13) | ((DECO_PORT(0xa0)&0x0008)<<9));// & (~m_nand);
1268      case 0x254/2:                                   return ((((DECO_PORT(0x7e)&0x0ff0)<<4) | ((DECO_PORT(0x7e)&0x000c)<<2) | ((DECO_PORT(0x7e)&0x0003)<<6))) ^ m_xor;// & (~m_nand);
1269      case 0x182/2:                                   return ((DECO_PORT(0x46)&0xf000)<<0) | ((DECO_PORT(0x46)&0x0f00)>>8) | ((DECO_PORT(0x46)&0x00f0)>>0) | ((DECO_PORT(0x46)&0x000f)<<8);
1270      case 0x058/2:                                   return DECO_PORT(0x46);
1271      case 0x48e/2:                                   return ((((DECO_PORT(0x46)&0xf000)>>12) | ((DECO_PORT(0x46)&0x0f00)>>4) | ((DECO_PORT(0x46)&0x00f0)<<4) | ((DECO_PORT(0x46)&0x000f)<<12)));// /*^ m_xor*/) & (~m_nand);
1272      case 0x4ba/2:                                   return (((DECO_PORT(0x24)&0xf000)>>12) | ((DECO_PORT(0x24)&0x0ff0)<<4) | ((DECO_PORT(0x24)&0x000c)<<2) | ((DECO_PORT(0x24)&0x0003)<<6)) & (~m_nand);
1273      case 0x092/2:                                   return (((DECO_PORT(0x3c)&0xfff0)>>0) | ((DECO_PORT(0x3c)&0x0007)<<1) | ((DECO_PORT(0x3c)&0x0008)>>3));
1274      case 0x1f0/2:                                   return ((((DECO_PORT(0xa2)&0xf000)>>12) | ((DECO_PORT(0xa2)&0x0f00)>>4) | ((DECO_PORT(0xa2)&0x00ff)<<8)) ^ m_xor) & (~m_nand);
1275      case 0x24e/2:                                   return ((((DECO_PORT(0x46)&0xf000)>>8) | ((DECO_PORT(0x46)&0x0f00)>>0) | ((DECO_PORT(0x46)&0x00f0)>>4) | ((DECO_PORT(0x46)&0x000f)<<12)) ^ m_xor);// & (~m_nand);
1276      case 0x594/2:                                   return ((((DECO_PORT(0x40)&0x00f0)<<8) | ((DECO_PORT(0x40)&0x000c)<<6) | ((DECO_PORT(0x40)&0x0003)<<10)) ^ m_xor);// & (~m_nand);
1277      case 0x7e2/2:                                   return ((((DECO_PORT(0x96)&0xf000)<<0) | ((DECO_PORT(0x96)&0x00f0)<<4) | ((DECO_PORT(0x96)&0x000f)<<4))) ^ m_xor;// | ((DECO_PORT(0x96)&0x0001)<<7));// ^ m_xor);// & (~m_nand);
1278      case 0x18c/2:                                   return (((DECO_PORT(0x22)&0xfff0)>>4) | ((DECO_PORT(0x22)&0x000e)<<11) | ((DECO_PORT(0x22)&0x0001)<<15));// ^ m_xor);// & (~m_nand);
1279      case 0x1fa/2:                                   return ((((DECO_PORT(0x26)&0xf000)>>8) | ((DECO_PORT(0x26)&0x0f00)<<0) | ((DECO_PORT(0x26)&0x00f0)>>4) | ((DECO_PORT(0x26)&0x000f)<<12))) ^ m_xor;// & (~m_nand);
1280      case 0x70e/2:                                   return ((((DECO_PORT(0x26)&0x0ff0)<<4) | ((DECO_PORT(0x26)&0x000c)<<2) | ((DECO_PORT(0x26)&0x0003)<<6))) ^ m_xor;// & (~m_nand);
1281      case 0x33a/2:                                   return DECO_PORT(0x60) & (~m_nand);
1282      case 0x1e2/2:                                   return ((DECO_PORT(0xd0)&0xf000)>>12) | ((DECO_PORT(0xd0)&0x0f00)>>4) | ((DECO_PORT(0xd0)&0x00ff)<<8);
1283      case 0x3f4/2:                                   return DECO_PORT(0x6e)<<4;
1284      case 0x2ae/2:                                   return ((DECO_PORT(0x9c)&0xf000)<<0) | ((DECO_PORT(0x9c)&0x0ff0)>>4) | ((DECO_PORT(0x9c)&0x000f)<<8);// & (~m_nand);
1285      case 0x096/2:                                   return ((((DECO_PORT(0x22)&0xff00)>>8) | ((DECO_PORT(0x22)&0x00f0)<<8) | ((DECO_PORT(0x22)&0x000e)<<7) | ((DECO_PORT(0x22)&0x0001)<<11)) ^ m_xor) & (~m_nand);
1286      case 0x33e/2:                                   return (((DECO_PORT(0x0)&0xf000)>>12) | ((DECO_PORT(0x0)&0x0f00)>>4) | ((DECO_PORT(0x0)&0x00f0)<<4) | ((DECO_PORT(0x0)&0x000f)<<12)) & (~m_nand); // also wizard fire
1287      case 0x6c4/2: /* Reads from here flip buffers */location = 0x66; /* Flip occurs AFTER this data has been calculated*/return ((DECO_PORT(location)&0xf0f0) | ((DECO_PORT(location)&0x000f)<<8)) & (~m_nand);
1288      case 0x700/2: /* Reads from here flip buffers */location = 0x66; return (((DECO_PORT(location)&0xf000)>>4) | ((DECO_PORT(location)&0x00f0)<<8)) ^ m_xor;
1289      case 0x444/2:                                   location = 0x66; return ((DECO_PORT(location)&0x00f0)<<8) | ((DECO_PORT(location)&0x0007)<<9)  | ((DECO_PORT(location)&0x0008)<<5);
1290      case 0x2d0/2:                                   location = 0x66; return (((DECO_PORT(location)&0xf000)>>4) | ((DECO_PORT(location)&0x00f0)<<8)) ^ m_xor;
1291      case 0x2b8/2:                                   location = 0x66; return ((DECO_PORT(location)&0x00f0)<<8) ^ m_xor;
1292      case 0x294/2:                                   location = 0x66; return ((DECO_PORT(location)&0x000f)<<12);
1293      case 0x1e8/2:                                   location = 0x66; return 0; // todo
1294      case 0x49c/2:                                   return (((DECO_PORT(0x6c)&0x00f0)<<8) ^ m_xor) & (~m_nand);
1295      case 0x44e/2:                                   return (((DECO_PORT(0x44)&0x00f0)<<4) | ((DECO_PORT(0x44)&0x000f)<<12)) ^ m_xor;
1296      case 0x3ca/2:                                   return (((DECO_PORT(0x1e)&0xfff0)>>4) | ((DECO_PORT(0x1e)&0x0003)<<14) | ((DECO_PORT(0x1e)&0x000c)<<10)) ^ m_xor;
1297      case 0x2ac/2:                                   return DECO_PORT(0x1e); // also caveman ninja
1298      case 0x03c/2:                                   return (((DECO_PORT(0x1e)&0x0003)<<14) | ((DECO_PORT(0x1e)&0x000c)<<10)) & (~m_nand);
1299      case 0x174/2:                                   return (((DECO_PORT(0x1e)&0xff00)>>8) | ((DECO_PORT(0x1e)&0x00f0)<<8) | ((DECO_PORT(0x1e)&0x0007)<<9) | ((DECO_PORT(0x1e)&0x0008)<<5)) & (~m_nand);
1300      case 0x34a/2:                                   return (((DECO_PORT(0x4)&0xff00)>>0) | ((DECO_PORT(0x4)&0x00f0)>>4) | ((DECO_PORT(0x4)&0x000f)<<4)) & (~m_nand);
1301      case 0x324/2:                                   return (((DECO_PORT(0x6)&0xf000)>>12) | ((DECO_PORT(0x6)&0x0ff0)<<4) | ((DECO_PORT(0x6)&0x0007)<<5) | ((DECO_PORT(0x6)&0x0008)<<1));
1302      case 0x344/2:                                   return (((DECO_PORT(0x8)&0xf000)>>8) | ((DECO_PORT(0x8)&0x0f00)>>8) | ((DECO_PORT(0x8)&0x00f0)<<4) | ((DECO_PORT(0x8)&0x000f)<<12));
1303      case 0x072/2:                                   return ((((DECO_PORT(0xa)&0xf000)>>8) | ((DECO_PORT(0xa)&0x0ff0)<<4) | ((DECO_PORT(0xa)&0x000f)>>0))) & (~m_nand);
1304      case 0x36e/2:                                   return ((((DECO_PORT(0xc)&0xf000)>>0) | ((DECO_PORT(0xc)&0x0ff0)>>4) | ((DECO_PORT(0xc)&0x000f)<<8))) & (~m_nand);
1305      case 0x590/2:                                   return ((((DECO_PORT(0xe)&0xfff0)>>4) | ((DECO_PORT(0xe)&0x000e)<<11) | ((DECO_PORT(0xe)&0x0001)<<15))) ^ m_xor;
1306      case 0x7b6/2:                                   return ((((DECO_PORT(0x2)&0xf000)>>8) | ((DECO_PORT(0x2)&0x0ff0)<<4) | ((DECO_PORT(0x2)&0x000f)<<0)) ^ m_xor) & (~m_nand);
1307      case 0x588/2:                                   return ((((DECO_PORT(0x4)&0xff00)>>4) | ((DECO_PORT(0x4)&0x00f0)<<8) | ((DECO_PORT(0x4)&0x000f)<<0)) ^ m_xor) & (~m_nand);
1308      case 0x1f6/2:                                   return (((DECO_PORT(0x6)&0xf000)>>12) | ((DECO_PORT(0x6)&0x0ff0)<<4) | ((DECO_PORT(0x6)&0x0007)<<5) | ((DECO_PORT(0x6)&0x0008)<<1)) ^ m_xor;
1309      case 0x4c0/2:                                   return (((DECO_PORT(0x8)&0xf000)>>4) | ((DECO_PORT(0x8)&0x0f00)<<4) | ((DECO_PORT(0x8)&0x00f0)>>4) | ((DECO_PORT(0x8)&0x000f)<<4)) & (~m_nand);
1310      case 0x63e/2:                                   return ((((DECO_PORT(0xa)&0x0ff0)<<4) | ((DECO_PORT(0xa)&0xf000)>>12) | ((DECO_PORT(0xa)&0x0003)<<6) | ((DECO_PORT(0xa)&0x000c)<<2)));
1311      case 0x7cc/2:                                   return ((((DECO_PORT(0xc)&0xfff0)>>4) | ((DECO_PORT(0xc)&0x000e)<<11) | ((DECO_PORT(0xc)&0x0001)<<15)) ^ m_xor) & (~m_nand);
1312      case 0x1bc/2:                                   return (((DECO_PORT(0xe)&0xf000)>>12) | ((DECO_PORT(0xe)&0x0f00)>>4) | ((DECO_PORT(0xe)&0x00ff)<<8)) & (~m_nand);
1313      case 0x780/2:                                   return DECO_PORT(0xb8); // also caveman ninja
1314      case 0x454/2:                                   return (((DECO_PORT(0x82)&0xf000)>>8) | ((DECO_PORT(0x82)&0x0f00)>>0) | ((DECO_PORT(0x82)&0x00f0)>>4) | ((DECO_PORT(0x82)&0x000f)<<12)) ^ m_xor;
1315      case 0x53e/2:                                   return ((DECO_PORT(0x9e)&0x0003)<<14) | ((DECO_PORT(0x9e)&0x000c)<<10);
1316      case 0x250/2:                                   return (((DECO_PORT(0x62)&0xf0f0)<<0) | ((DECO_PORT(0x62)&0x0f00)>>8)  | ((DECO_PORT(0x62)&0x000f)<<8)) & (~m_nand);
1317      case 0x150/2: /* Shared */                      return DECO_PORT(0x7e);
1318      case 0x10e/2: /* Schmeizr Robo only */          return DECO_PORT(0x7c);
1319      case 0x56a/2: /* Schmeizr Robo only */          return (((DECO_PORT(0x7c)&0xfff0)>>4) | ((DECO_PORT(0x7c)&0x000e)<<11) | ((DECO_PORT(0x7c)&0x0001)<<15)) & (~m_nand);
1320      case 0x39a/2: /* Schmeizr Robo only */          return ((((DECO_PORT(0x7e)&0xfff0)>>4) | ((DECO_PORT(0x7e)&0x000e)<<11) | ((DECO_PORT(0x7e)&0x0001)<<15)) ^ m_xor) & (~m_nand);
1321      case 0x188/2: /* Schmeizr Robo only */          return (((m_nand&0x0003)<<6) | ((m_nand&0x000c)<<2) | ((m_nand&0x00f0)<<4) | ((m_nand&0x0f00)<<4)) & (~m_nand);
1322      case 0x3cc/2: /* Schmeizr Robo only */          return m_nand;
1323      case 0x04a/2: /* Schmeizr Robo only */          return DECO_PORT(0x9e) & (~m_nand);
1324      case 0x7e8/2: /* Schmeizr Robo only */          return DECO_PORT(0x4a) ^ m_xor;
1325      case 0x0fc/2: /* Schmeizr Robo only */          return DECO_PORT(0x4a);
1326      case 0x38c/2: /* Schmeizr Robo only */          return DECO_PORT(0x28);
1327      case 0x028/2: /* Schmeizr Robo only  */         return DECO_PORT(0x58);
1328
1329      // caveman ninja cases
1330      case 0x224/2: /* was 0x080 */ /* Master level control */            return prot_ram[0x0/2];
1331      case 0x27a/2: /* was 0x0de */ /* Restart position control */            return prot_ram[0x2/2];
1332      case 0x242/2: /* was 0x0e6 */ /* The number of credits in the system. */            return prot_ram[0x4/2];
1333      case 0x222/2: /* was 0x086 */ /* End of game check.  See 0x1814 */          return prot_ram[0x6/2];
1334      case 0x2fe/2: /* was 0x05a */ /* Moved to 0x140000 on int */            return prot_ram[0x10/2];
1335      case 0x220/2: /* was 0x084 */ /* Moved to 0x14000a on int */            return prot_ram[0x12/2];
1336      case 0x284/2: /* was 0x020 */ /* Moved to 0x14000c on int */            return prot_ram[0x14/2];
1337      case 0x2d6/2: /* was 0x072 */ /* Moved to 0x14000e on int */            return prot_ram[0x16/2];
1338      case 0x278/2: /* was 0x0dc */ /* Moved to 0x150000 on int */            return prot_ram[0x18/2];
1339      case 0x2ca/2: /* was 0x06e */ /* Moved to 0x15000a on int */            return prot_ram[0x1a/2]; /* Not used on bootleg */
1340      case 0x2c8/2: /* was 0x06c */ /* Moved to 0x15000c on int */            return prot_ram[0x1c/2];
1341      //case 0x2ac/2: /* was 0x008 */ /* Moved to 0x15000e on int */          return prot_ram[0x1e/2];
1342      //case 0x292/2: /* was 0x036 */ /* Dip switches */          return space.machine().root_device().ioport("DSW")->read();
1343      //case 0x36c/2: /* was 0x1c8 */ /* Coins */         return space.machine().root_device().ioport("IN1")->read();
1344      //case 0x088/2: /* was 0x22c */ /* Player 1 & 2 input ports */          return space.machine().root_device().ioport("IN0")->read();
1345      case 0x016/2: /* was 0x2b2 */ return prot_ram[0x0fc/2]; // 0xad65
1346      case 0x68e/2: /* was 0x42a */ return prot_ram[0x092/2]; // 0xb2b7
1347      case 0x692/2: /* was 0x436 */ return prot_ram[0x088/2]; // 0xea5a
1348      //case 0x6e4/2: /* was 0x440 */ return prot_ram[0x098/2]; // 0x7aa0
1349      case 0x6e2/2: /* was 0x446 */ return prot_ram[0x090/2]; // 0x5fdf
1350      case 0x6fc/2: /* was 0x458 */ return prot_ram[0x082/2]; // 0x108d
1351      //case 0x624/2: /* was 0x480 */ return prot_ram[0x09a/2]; // 0xfbe4
1352      case 0x62a/2: /* was 0x48e */ return prot_ram[0x08a/2]; // 0x67a2
1353      case 0x638/2: /* was 0x49c */ return prot_ram[0x094/2]; // 0xb62a
1354      case 0x614/2: /* was 0x4b0 */ return prot_ram[0x096/2]; // 0x3555
1355      case 0x664/2: /* was 0x4c0 */ return prot_ram[0x09e/2]; // 0x6a34
1356      //case 0x662/2: /* was 0x4c6 */ return prot_ram[0x08c/2]; // 0xc6ef
1357      case 0x64e/2: /* was 0x4ea */ return prot_ram[0x086/2]; // 0x9feb
1358      //case 0x65e/2: /* was 0x4fa */ return prot_ram[0x09c/2]; // 0x1dcb
1359      case 0x7ac/2: /* was 0x508 */ return prot_ram[0x08e/2]; // 0xed9c
1360      //case 0x7b0/2: /* was 0x514 */ return prot_ram[0x080/2]; // 0xf6e2
1361      case 0x7b8/2: /* was 0x51c */ return prot_ram[0x084/2]; // 0xbdb9
1362      //case 0x780/2: /* was 0x524 */ return prot_ram[0x0b8/2]; // 0x5d26
1363      case 0x782/2: /* was 0x526 */ return prot_ram[0x0a2/2]; // 0x4770
1364      case 0x7f6/2: /* was 0x552 */ return prot_ram[0x0ac/2]; // 0x0843
1365      case 0x7f0/2: /* was 0x554 */ return prot_ram[0x0ba/2]; // 0x9b79
1366      case 0x7ca/2: /* was 0x56e */ return prot_ram[0x0a0/2]; // 0xd1be
1367      case 0x7d4/2: /* was 0x570 */ return prot_ram[0x0b4/2]; // 0xc950
1368      case 0x724/2: /* was 0x580 */ return prot_ram[0x0b2/2]; // 0xa600
1369      case 0x73e/2: /* was 0x59a */ return prot_ram[0x0ae/2]; // 0x2b24
1370      case 0x77c/2: /* was 0x5d8 */ return prot_ram[0x0b6/2]; // 0x17c1
1371      case 0x750/2: /* was 0x5f4 */ return prot_ram[0x0aa/2]; // 0xf152
1372      case 0x752/2: /* was 0x5f6 */ return prot_ram[0x0be/2]; // 0x97ce
1373      case 0x75c/2: /* was 0x5f8 */ return prot_ram[0x0bc/2]; // 0xa485
1374      case 0x4a0/2: /* was 0x604 */ return prot_ram[0x0a4/2]; // 0x0e88
1375      case 0x4a8/2: /* was 0x60c */ return prot_ram[0x0b0/2]; // 0xab89
1376      case 0x4be/2: /* was 0x61a */ return prot_ram[0x0a6/2]; // 0x64ba
1377      case 0x4ee/2: /* was 0x64a */ return prot_ram[0x0cc/2]; // 0x0ae9
1378      case 0x4d4/2: /* was 0x670 */ return prot_ram[0x0d4/2]; // 0x4ec2
1379      case 0x4da/2: /* was 0x67e */ return prot_ram[0x0ca/2]; // 0x61c3
1380      case 0x430/2: /* was 0x694 */ return prot_ram[0x0d2/2]; // 0x3b4f
1381      case 0x40c/2: /* was 0x6a8 */ return prot_ram[0x0d6/2]; // 0x0c27
1382      case 0x40a/2: /* was 0x6ae */ return prot_ram[0x0da/2]; // 0x3a72
1383      //case 0x410/2: /* was 0x6b4 */ return prot_ram[0x0de/2]; // 0x15d2
1384      case 0x460/2: /* was 0x6c4 */ return prot_ram[0x0c8/2]; // 0x5849
1385      case 0x46c/2: /* was 0x6c8 */ return prot_ram[0x0d0/2]; // 0x186c
1386      case 0x468/2: /* was 0x6cc */ return prot_ram[0x0c0/2]; // 0x713e
1387      case 0x47a/2: /* was 0x6de */ return prot_ram[0x0c2/2]; // 0xa87e
1388      case 0x45c/2: /* was 0x6f8 */ return prot_ram[0x0d8/2]; // 0x9a31
1389      case 0x45a/2: /* was 0x6fe */ return prot_ram[0x0c6/2]; // 0xec69
1390      case 0x5a4/2: /* was 0x700 */ return prot_ram[0x0ce/2]; // 0x82d9
1391      //case 0x5ae/2: /* was 0x70a */ return prot_ram[0x0dc/2]; // 0x628c
1392      case 0x5b0/2: /* was 0x714 */ return prot_ram[0x0c4/2]; // 0xda45
1393      case 0x5e8/2: /* was 0x74c */ return prot_ram[0x0e4/2]; // 0x8e3d
1394      case 0x5c0/2: /* was 0x764 */ return prot_ram[0x0fe/2]; // 0xdef7
1395      case 0x5d4/2: /* was 0x770 */ return prot_ram[0x0f4/2]; // 0xe7fe
1396      case 0x5d6/2: /* was 0x772 */ return prot_ram[0x0ec/2]; // 0x23ca
1397      case 0x5d0/2: /* was 0x774 */ return prot_ram[0x0e2/2]; // 0xe62c
1398      case 0x5da/2: /* was 0x77e */ return prot_ram[0x0e8/2]; // 0x6683
1399      case 0x52c/2: /* was 0x788 */ return prot_ram[0x0e0/2]; // 0xd60b
1400      case 0x53c/2: /* was 0x798 */ return prot_ram[0x0fa/2]; // 0x9e1a
1401      case 0x500/2: /* was 0x7a4 */ return prot_ram[0x0f0/2]; // 0x578f
1402      case 0x566/2: /* was 0x7c2 */ return prot_ram[0x0f8/2]; // 0x0503
1403      case 0x54e/2: /* was 0x7ea */ return prot_ram[0x0e6/2]; // 0x8654
1404      case 0x548/2: /* was 0x7ec */ return prot_ram[0x0f6/2]; // 0xa1e1
1405      case 0x55e/2: /* was 0x7fa */ return prot_ram[0x0ea/2]; // 0x5146
1406      case 0x55a/2: /* was 0x7fe */ return prot_ram[0x0f2/2]; // 0x91d4
1407
1408      // wizard fire cases
1409      //case 0x088/2: /* was 0x110*/ /* Player input */       return space.machine().root_device().ioport("IN0")->read(); // also used in rohga sim
1410      //case 0x36c/2: /* was 0x36c*/                          return space.machine().root_device().ioport("IN1")->read(); // also used in rohga sim
1411      case 0x2cc/2: /* was 0x334*/                            tempinput = m_port_b_r(0);  return tempinput;
1412      case 0x3b0/2: /* was 0x0dc*/                            tempinput = m_port_b_r(0);  return tempinput<<4;
1413      //case 0x292/2: /* was 0x494*/ /* Dips */               return space.machine().root_device().ioport("DSW1_2")->read(); // also used in rohga sim // also caveman ninja
1414      //case 0x224/2: /* was 0x244*/                          return DECO_NEW_PORT(0x00); // also caveman ninja
1415      //case 0x33e/2: /* was 0x7cc*/                          return ((DECO_NEW_PORT(0x00)&0x000f)<<12) | ((DECO_NEW_PORT(0x00)&0x00f0)<<4) | ((DECO_NEW_PORT(0x00)&0x0f00)>>4) | ((DECO_NEW_PORT(0x00)&0xf000)>>12); // also used in rohga sim (NOTE, ROHGA APPLIES MASK, CHECK!)
1416      case 0x030/2: /* was 0x0c0*/                            return (((DECO_NEW_PORT(0x00)&0x000e)>>1) | ((DECO_NEW_PORT(0x00)&0x0001)<<3))<<12;
1417      case 0x118/2: /* was 0x188*/                            return (((DECO_NEW_PORT(0x00)&0x000e)>>1) | ((DECO_NEW_PORT(0x00)&0x0001)<<3))<<12;
1418      case 0x7a6/2: /* was 0x65e*/                            return (((DECO_NEW_PORT(0x00)&0x000c)>>2) | ((DECO_NEW_PORT(0x00)&0x0003)<<2))<<12;
1419      case 0x73a/2: /* was 0x5ce*/                            return ((DECO_NEW_PORT(0x00)<<8)&0xf000) | ((DECO_NEW_PORT(0x00)&0xe)<<7) | ((DECO_NEW_PORT(0x00)&0x1)<<11);
1420      case 0x586/2: /* was 0x61a*/                            return (DECO_NEW_PORT(0x00)<<8)&0xff00;
1421      //case 0x692/2: /* was 0x496*/                          return DECO_NEW_PORT(0x88); // also caveman ninja
1422      case 0x502/2: /* was 0x40a*/                            return ((DECO_NEW_PORT(0x88)&0x000f)<<12) | ((DECO_NEW_PORT(0x88)&0x00f0)>>4) | ((DECO_NEW_PORT(0x88)&0x0f00)<<0) | ((DECO_NEW_PORT(0x88)&0xf000)>>8);
1423      //case 0x178/2: /* was 0x1e8*/                          return ((DECO_NEW_PORT(0x88)&0x00ff)<<8) | ((DECO_NEW_PORT(0x88)&0xff00)>>8); // also used in rohga sim  (NOTE, ROHGA APPLIES MASK, CHECK!)
1424      case 0x3d2/2: /* was 0x4bc*/                            return ((DECO_NEW_PORT(0x88)&0x0ff0)<<4) | ((DECO_NEW_PORT(0x88)&0x0003)<<6) | ((DECO_NEW_PORT(0x88)&0x000c)<<2);
1425      case 0x762/2: /* was 0x46e*/                            return ((DECO_NEW_PORT(0x88)&0xfff0)<<0) | ((DECO_NEW_PORT(0x88)&0x0007)<<1) | ((DECO_NEW_PORT(0x88)&0x0008)>>3);
1426      case 0x264/2: /* was 0x264*/                            return ((DECO_NEW_PORT(0x88)&0x000f)<<8) | ((DECO_NEW_PORT(0x88)&0x00f0)>>0) | ((DECO_NEW_PORT(0x88)&0x0f00)<<4);
1427      case 0x4e8/2: /* was 0x172*/                            return ((DECO_NEW_PORT(0x88)&0x000f)<<4) | ((DECO_NEW_PORT(0x88)&0x00f0)<<4) | ((DECO_NEW_PORT(0x88)&0xf000)<<0);
1428      //case 0x284/2: /* was 0x214*/                          return DECO_NEW_PORT(0x14); // also caveman ninja
1429      case 0x74a/2: /* was 0x52e*/                            return ((DECO_NEW_PORT(0x14)&0x000f)<<8) | ((DECO_NEW_PORT(0x14)&0x00f0)>>0) | ((DECO_NEW_PORT(0x14)&0x0f00)>>8) | ((DECO_NEW_PORT(0x14)&0xf000)>>0);
1430      case 0x5e0/2: /* was 0x07a*/                            return ((DECO_NEW_PORT(0x14)&0x000f)<<8) | ((DECO_NEW_PORT(0x14)&0x00f0)>>0) | ((DECO_NEW_PORT(0x14)&0x0f00)>>8) | ((DECO_NEW_PORT(0x14)&0xf000)>>0);
1431      case 0x06c/2: /* was 0x360*/                            return ((DECO_NEW_PORT(0x14)&0x000f)<<8) | ((DECO_NEW_PORT(0x14)&0x00f0)>>0) | ((DECO_NEW_PORT(0x14)&0x0f00)>>8) | ((DECO_NEW_PORT(0x14)&0xf000)>>0);
1432      case 0x3b2/2: /* was 0x4dc*/                            return ((DECO_NEW_PORT(0x14)&0x0ff0)<<4) | ((DECO_NEW_PORT(0x14)&0x0007)<<5) | ((DECO_NEW_PORT(0x14)&0x0008)<<1);
1433      case 0x15c/2: /* was 0x3a8*/                            return ((DECO_NEW_PORT(0x14)&0x000e)<<3) | ((DECO_NEW_PORT(0x14)&0x0001)<<7) | ((DECO_NEW_PORT(0x14)&0x0ff0)<<4) | ((DECO_NEW_PORT(0x14)&0xf000)>>12);
1434      case 0x6f4/2: /* was 0x2f6*/                            return ((DECO_NEW_PORT(0x14)&0xff00)>>8) | ((DECO_NEW_PORT(0x14)&0x00f0)<<8) | ((DECO_NEW_PORT(0x14)&0x000c)<<6) | ((DECO_NEW_PORT(0x14)&0x0003)<<10);
1435      //case 0x27e/2: /* was 0x7e4*/                          return (DECO_NEW_PORT(0x94)&0x00f0)<<8; // also used in rohga sim (NOTE, ROHGA APPLIES XOR and MASK, CHECK!)
1436      case 0x6ca/2: /* was 0x536*/                            return ((DECO_NEW_PORT(0xd4)&0x000f)<<8) | ((DECO_NEW_PORT(0xd4)&0x00f0)<<0) | ((DECO_NEW_PORT(0xd4)&0x0f00)<<4) | ((DECO_NEW_PORT(0xd4)&0xf000)>>12);
1437      case 0x7d0/2: /* was 0x0be*/                            return ((DECO_NEW_PORT(0xec)&0x000f)<<4) | ((DECO_NEW_PORT(0xec)&0x00f0)<<4) | ((DECO_NEW_PORT(0xec)&0x0f00)>>8) | ((DECO_NEW_PORT(0xec)&0xf000)>>0);
1438      //case 0x092/2: /* was 0x490*/                          return (DECO_NEW_PORT(0x3c)&0xfff0) | ((DECO_NEW_PORT(0x3c)&0x0007)<<1) | ((DECO_NEW_PORT(0x3c)&0x0008)>>3); // also used in rohga sim
1439      case 0x08e/2: /* was 0x710*/                            return (DECO_NEW_PORT(0xc2)&0xfff0) | ((DECO_NEW_PORT(0xc2)&0x0007)<<1) | ((DECO_NEW_PORT(0xc2)&0x0008)>>3);
1440      case 0x544/2: /* was 0x22a*/                            return ((DECO_NEW_PORT(0x5a)&0xff00)>>8) | ((DECO_NEW_PORT(0x5a)&0x00f0)<<8) | ((DECO_NEW_PORT(0x5a)&0x0001)<<11) | ((DECO_NEW_PORT(0x5a)&0x000e)<<7);
1441      case 0x646/2: /* was 0x626*/                            return ((DECO_NEW_PORT(0xda)&0x000f)<<8) | ((DECO_NEW_PORT(0xda)&0x00f0)<<8) | ((DECO_NEW_PORT(0xda)&0x0f00)>>4) | ((DECO_NEW_PORT(0xda)&0xf000)>>12);
1442      //case 0x222/2: /* was 0x444*/                          return DECO_NEW_PORT(0x06); // (old comment was 'rohga') /* this CAN'T be right (port addr > 0x100), is it even used by this game or some c+p error? */
1443      case 0x35a/2: /* was 0x5ac*/                            return ((DECO_NEW_PORT(0x76)&0xfff0)>>4) | ((DECO_NEW_PORT(0x76)&0x0007)<<13) | ((DECO_NEW_PORT(0x76)&0x0008)<<9);
1444      case 0x0a6/2: /* was 0x650*/                            return ((DECO_NEW_PORT(0xbe)&0xfff0)>>4) | ((DECO_NEW_PORT(0xbe)&0x000f)<<12); // also used in rohga sim
1445      case 0x352/2: /* was 0x4ac*/                            return ((DECO_NEW_PORT(0x62)&0x0007)<<13) | ((DECO_NEW_PORT(0x62)&0x0008)<<9);
1446
1447   }
1448   //logerror("Protection PC %06x: warning - read unmapped memory address %04x\n",device().safe_pc(),offset);
1449
1450   return 0x0000;
1451}
1452
1453
1454
14551090/**********************************************************************************/
14561091
14571092
r24574r24575
14901125/**********************************************************************************/
14911126
14921127
1493
1494
1495
1496void deco104_device::write_protport(address_space &space, UINT16 address, UINT16 data, UINT16 mem_mask)
1497{
1498   deco_146_base_device::write_protport(space,address,data,mem_mask);
1499}
trunk/src/mame/machine/deco104.h
r24574r24575
44
55#include "deco146.h"
66
7#define MCFG_DECO104_SET_USE_DOUBLEWINGS_HACK \
8   deco104_device::set_use_dblewing_hacks(*device, 1 );
97
108
119/* Data East 104 protection chip */
r24574r24575
1513public:
1614   deco104_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
1715
18   DECLARE_READ16_MEMBER(dblewing_prot_r);
19   DECLARE_WRITE16_MEMBER(dblewing_prot_w);
2016
21   virtual UINT16 read_data_getloc(UINT16 address, int& location);
22   static void set_use_dblewing_hacks(device_t &device, int use_hacks);
2317
2418
2519protected:
r24574r24575
2721   virtual void device_start();
2822   virtual void device_reset();
2923
30   virtual void write_protport(address_space &space, UINT16 address, UINT16 data, UINT16 mem_mask);
3124
3225
33   int m_use_complete_table;
3426
35   UINT16 m_008_data;
36   UINT16 m_104_data;
37   UINT16 m_406_data;
38   UINT16 m_608_data;
39   UINT16 m_70c_data;
40   UINT16 m_78a_data;
41   UINT16 m_088_data;
42   UINT16 m_58c_data;
43   UINT16 m_408_data;
44   UINT16 m_40e_data;
45   UINT16 m_080_data;
46   UINT16 m_788_data;
47   UINT16 m_38e_data;
48   UINT16 m_580_data;
49   UINT16 m_60a_data;
50   UINT16 m_200_data;
51   UINT16 m_28c_data;
52   UINT16 m_18a_data;
53   UINT16 m_280_data;
54   UINT16 m_384_data;
5527
56   UINT16 m_boss_move;
57   UINT16 m_boss_shoot_type;
58   UINT16 m_boss_3_data;
59   UINT16 m_boss_4_data;
60   UINT16 m_boss_5_data;
61   UINT16 m_boss_5sx_data;
62   UINT16 m_boss_6_data;
6328private:
6429
6530
r24574r24575
7641
7742
7843
79
44// legacy, has a weird scramble, need to update
8045DECLARE_READ16_HANDLER( deco16_104_pktgaldx_prot_r );
8146DECLARE_WRITE16_HANDLER( deco16_104_pktgaldx_prot_w );
8247
trunk/src/mame/machine/deco146.c
r24574r24575
6868
6969  Caveman Ninja                            104                                     None                   Yes
7070  Wizard Fire                              104                                     Reversed               No
71  Pocket Gal DX                            104                                     None*                  No*
71  Pocket Gal DX                            104                                     Custom*                No*
7272  Boogie Wings                             104                                     Reversed               Yes
7373  Rohga                                    104                                     None                   No
7474  Diet GoGo                                104                                     Interleave             Yes
7575  Tattoo Assassins                         104                                     Interleave             No
7676  Dream Ball                               104                                     None                   No
7777  Night Slashers                           104                                     Interleave             No
78  Double Wings                             104                                     Interleave**           Yes**
78  Double Wings                             104                                     Interleave             Yes
7979  Schmeiser Robo                           104                                     None                   No
8080
8181
82  * not currently hooked up, conflicts on an input port with Rohga, needs more investigation
83  ** simulation massively incomplete
82  * not currently hooked up, address scramble not figured out
8483
8584
85
8686  */
8787
8888#include "emu.h"
trunk/src/mame/drivers/dblewing.c
r24574r24575
396396   decospr_device::set_pri_callback(*device, dblwings_pri_callback);
397397
398398   MCFG_DECO104_ADD("ioprot104")
399   MCFG_DECO104_SET_USE_DOUBLEWINGS_HACK
400399   MCFG_DECO146_SET_INTERFACE_SCRAMBLE_INTERLEAVE
401400   MCFG_DECO146_SET_USE_MAGIC_ADDRESS_XOR
402401

Previous 199869 Revisions Next


© 1997-2024 The MAME Team