@@ -35,7 +35,7 @@ ROM source notes when dumped from another title, but confident it's the same:
3535 gnw_climbern, gnw_dkcirc, gnw_dkhockey, gnw_dkjrp, gnw_dkong3, gnw_gcliff,
3636 gnw_mariocmt, gnw_mariocmta, gnw_mariotj, gnw_mbaway, gnw_mmousep,
3737 gnw_pinball, gnw_popeyep, gnw_sbuster, gnw_snoopyp, gnw_zelda, trtreisl,
38- trspacadv, amusarit
38+ trspacadv, amusarit, ariteach
3939
4040================================================================================
4141
@@ -5023,6 +5023,110 @@ ROM_END
50235023
50245024
50255025
5026+ /* ******************************************************************************
5027+
5028+ Elektronika(?) Arithmetics Teacher(?) (Учитель арифметики(?), model ???)
5029+ * КБ1515ХМ3-2 9108 001 (no decap); seems to be compatible with КБ1013ВК7-2
5030+ which in turn is compatible with Sharp SM511
5031+ * lcd screen with custom segments, 1-bit sound
5032+
5033+ *******************************************************************************/
5034+
5035+ class ariteach_state : public hh_sm510_state
5036+ {
5037+ public:
5038+ ariteach_state (const machine_config &mconfig, device_type type, const char *tag) :
5039+ hh_sm510_state (mconfig, type, tag)
5040+ { }
5041+
5042+ void ariteach (machine_config &config);
5043+ };
5044+
5045+ // inputs
5046+
5047+ static INPUT_PORTS_START ( ariteach )
5048+ PORT_START(" IN.0" ) // S1
5049+ PORT_BIT( 0x01 , IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHANGED_CB(input_changed) PORT_NAME(" Evaluate entry" )
5050+ PORT_BIT( 0x02 , IP_ACTIVE_HIGH, IPT_UNUSED )
5051+ PORT_BIT( 0x04 , IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_CHANGED_CB(input_changed) PORT_NAME(" Start Exam" )
5052+ PORT_BIT( 0x08 , IP_ACTIVE_HIGH, IPT_UNUSED )
5053+
5054+ PORT_START(" IN.1" ) // S2
5055+ PORT_BIT( 0x01 , IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_CHANGED_CB(input_changed) PORT_NAME(" Evaluate division entries" )
5056+ PORT_BIT( 0x02 , IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_M) PORT_CHANGED_CB(input_changed) PORT_NAME(" Mode" )
5057+ PORT_BIT( 0x04 , 0x04 , IPT_CUSTOM ) PORT_CONDITION(" FAKE_T" , 0x03 , NOTEQUALS, 0x00 ) // Time↔Alarm / Exam Level
5058+ PORT_BIT( 0x08 , IP_ACTIVE_HIGH, IPT_UNUSED )
5059+
5060+ PORT_START(" IN.2" ) // S3
5061+ PORT_BIT( 0x01 , 0x01 , IPT_CUSTOM ) PORT_CONDITION(" FAKE_0" , 0x03 , NOTEQUALS, 0x00 ) // "0"/Minute
5062+ PORT_BIT( 0x02 , IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHANGED_CB(input_changed) PORT_NAME(" Clear entry / Correction" )
5063+ PORT_BIT( 0x04 , IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_CHANGED_CB(input_changed) PORT_NAME(" 5" )
5064+ PORT_BIT( 0x08 , IP_ACTIVE_HIGH, IPT_UNUSED )
5065+
5066+ PORT_START(" IN.3" ) // S4
5067+ PORT_BIT( 0x01 , IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_CHANGED_CB(input_changed) PORT_NAME(" 6" )
5068+ PORT_BIT( 0x02 , IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHANGED_CB(input_changed) PORT_NAME(" Operation '+'" )
5069+ PORT_BIT( 0x04 , 0x04 , IPT_CUSTOM ) PORT_CONDITION(" FAKE_1" , 0x03 , NOTEQUALS, 0x00 ) // "1"/Hour
5070+ PORT_BIT( 0x08 , IP_ACTIVE_HIGH, IPT_UNUSED )
5071+
5072+ PORT_START(" IN.4" ) // S5
5073+ PORT_BIT( 0x01 , IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_CHANGED_CB(input_changed) PORT_NAME(" 7" )
5074+ PORT_BIT( 0x02 , IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHANGED_CB(input_changed) PORT_NAME(" Operation '-'" )
5075+ PORT_BIT( 0x04 , IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_CHANGED_CB(input_changed) PORT_NAME(" 2" )
5076+ PORT_BIT( 0x08 , IP_ACTIVE_HIGH, IPT_UNUSED )
5077+
5078+ PORT_START(" IN.5" ) // S6
5079+ PORT_BIT( 0x01 , IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_CHANGED_CB(input_changed) PORT_NAME(" 8" )
5080+ PORT_BIT( 0x02 , IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ASTERISK) PORT_CHANGED_CB(input_changed) PORT_NAME(u8" Operation '×'" )
5081+ PORT_BIT( 0x04 , IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_CHANGED_CB(input_changed) PORT_NAME(" 3" )
5082+ PORT_BIT( 0x08 , IP_ACTIVE_HIGH, IPT_UNUSED )
5083+
5084+ PORT_START(" IN.6" ) // S7
5085+ PORT_BIT( 0x01 , IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_CHANGED_CB(input_changed) PORT_NAME(" 9" )
5086+ PORT_BIT( 0x02 , IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_CHANGED_CB(input_changed) PORT_NAME(u8" Operation '÷'" )
5087+ PORT_BIT( 0x04 , IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_CHANGED_CB(input_changed) PORT_NAME(" 4" )
5088+ PORT_BIT( 0x08 , IP_ACTIVE_HIGH, IPT_UNUSED )
5089+
5090+ PORT_START(" ACL" )
5091+ PORT_BIT( 0x01 , IP_ACTIVE_HIGH, IPT_POWER_ON ) PORT_CHANGED_CB(acl_button) PORT_NAME(" ACL" )
5092+
5093+ PORT_START(" FAKE_0" ) // 0 and Minute are electronically the same button
5094+ PORT_BIT( 0x01 , IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_CHANGED_CB(input_changed) PORT_NAME(" 0" )
5095+ PORT_BIT( 0x02 , IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_RIGHT) PORT_CHANGED_CB(input_changed) PORT_NAME(" Minute" )
5096+
5097+ PORT_START(" FAKE_1" ) // 1 and Hour are electronically the same button
5098+ PORT_BIT( 0x01 , IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_CHANGED_CB(input_changed) PORT_NAME(" 1" )
5099+ PORT_BIT( 0x02 , IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_LEFT) PORT_CHANGED_CB(input_changed) PORT_NAME(" Hour" )
5100+
5101+ PORT_START(" FAKE_T" ) // Time↔Alarm and Exam Level are electronically the same button
5102+ PORT_BIT( 0x01 , IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_T) PORT_CHANGED_CB(input_changed) PORT_NAME(" Time↔Alarm" )
5103+ PORT_BIT( 0x02 , IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_L) PORT_CHANGED_CB(input_changed) PORT_NAME(" Exam Level" )
5104+ INPUT_PORTS_END
5105+
5106+ // config
5107+
5108+ void ariteach_state::ariteach(machine_config &config)
5109+ {
5110+ sm511_common (config, 1520 , 1080 ); // 1341 x 953
5111+ }
5112+
5113+ // roms
5114+
5115+ ROM_START ( ariteach )
5116+ ROM_REGION( 0x1000 , " maincpu" , 0 )
5117+ ROM_LOAD( " ariteach.program" , 0x0000 , 0x1000 , CRC(1d2d7abb) SHA1(10d90f63813cddc5c986ed3942c64ee6d67f545e) )
5118+
5119+ ROM_REGION( 0x100 , " maincpu:melody" , 0 )
5120+ ROM_LOAD( " ariteach.melody" , 0x000 , 0x100 , BAD_DUMP CRC (28041942 ) SHA1(a36e246b215499b7392c28fddf1aad499016a480) ) // decap needed for verification
5121+
5122+ ROM_REGION( 98301 , " screen" , 0 )
5123+ ROM_LOAD( " ariteach.svg" , 0 , 98301 , CRC(a4908088) SHA1(e8986638b89d8c4601a1abe5591326cb694a5750) )
5124+ ROM_END
5125+
5126+
5127+
5128+
5129+
50265130/* ******************************************************************************
50275131
50285132 Konami Double Dribble (model BH001)
@@ -12264,6 +12368,7 @@ SYST( 1989, kosmicmt, gnw_fire, 0, kosmicmt, gnw_fire, gnw_f
1226412368SYST( 1990 , auslalom, 0 , 0 , auslalom, auslalom, auslalom_state, empty_init, " Elektronika" , " Autoslalom" , MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
1226512369SYST( 199 ?, elbaskb, 0 , 0 , elbaskb, elbaskb, elbaskb_state, empty_init, " Elektronika" , " Basketbol (Elektronika)" , MACHINE_SUPPORTS_SAVE )
1226612370SYST( 1992 , amusarit, 0 , 0 , amusarit, amusarit, amusarit_state, empty_init, " Elektronika" , " Amusing Arithmetic" , MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
12371+ SYST( 1991 , ariteach, 0 , 0 , ariteach, ariteach, ariteach_state, empty_init, " Elektronika(?)" , " Arithmetics Teacher(?)" , MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
1226712372
1226812373// Konami
1226912374SYST( 1989 , kdribble, 0 , 0 , kdribble, kdribble, kdribble_state, empty_init, " Konami" , " Double Dribble (handheld)" , MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
0 commit comments