Skip to content

Commit 9e91a87

Browse files
committed
hh_sm510.cpp: added new game Arithmetics Teacher
New working systems ------------------- Arithmetics Teacher (Elektronika) [Milan Galcik, Igor Nys]
1 parent 72de682 commit 9e91a87

File tree

2 files changed

+107
-1
lines changed

2 files changed

+107
-1
lines changed

src/mame/handheld/hh_sm510.cpp

Lines changed: 106 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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
1226412368
SYST( 1990, auslalom, 0, 0, auslalom, auslalom, auslalom_state, empty_init, "Elektronika", "Autoslalom", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
1226512369
SYST( 199?, elbaskb, 0, 0, elbaskb, elbaskb, elbaskb_state, empty_init, "Elektronika", "Basketbol (Elektronika)", MACHINE_SUPPORTS_SAVE )
1226612370
SYST( 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
1226912374
SYST( 1989, kdribble, 0, 0, kdribble, kdribble, kdribble_state, empty_init, "Konami", "Double Dribble (handheld)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )

src/mame/mame.lst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19445,6 +19445,7 @@ rw31r
1944519445

1944619446
@source:handheld/hh_sm510.cpp
1944719447
amusarit
19448+
ariteach
1944819449
atakaast
1944919450
auslalom
1945019451
bassmate

0 commit comments

Comments
 (0)