summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author David Haywood <28625134+DavidHaywood@users.noreply.github.com>2021-03-09 10:33:12 +0000
committer GitHub <noreply@github.com>2021-03-09 10:33:12 +0000
commit3a2d9b490ed8efd2bd575e4573009bd4f8705de3 (patch)
treeea7ff7b6ac9e9faff300f9df548ddf5c1ca176a2
parent40acc597d4454000cc2601ef9881c8a9a8b52519 (diff)
jpmimpct.cpp: fixed reel display in j6big50, added sound ROM used by other emulators to j6untch (#7847)
* fixed reel display in j6big50, added sound ROM used by other emulators to j6untch * improve illusion of this being 2 sides of the same wheel * tweak reel offset
-rw-r--r--src/mame/drivers/jpmimpct.cpp15
-rw-r--r--src/mame/drivers/jpmimpctsw.cpp15
-rw-r--r--src/mame/includes/jpmimpct.h3
-rw-r--r--src/mame/layout/j6big50.lay27
4 files changed, 48 insertions, 12 deletions
diff --git a/src/mame/drivers/jpmimpct.cpp b/src/mame/drivers/jpmimpct.cpp
index 52180f481b1..dfe71a633aa 100644
--- a/src/mame/drivers/jpmimpct.cpp
+++ b/src/mame/drivers/jpmimpct.cpp
@@ -1369,6 +1369,21 @@ void jpmimpct_state::impact_nonvideo_altreels(machine_config &config)
m_reel[5]->optic_handler().set(FUNC(jpmimpct_state::reel_optic_cb<5>));
}
+void jpmimpct_state::impact_nonvideo_big50(machine_config &config)
+{
+ impact_nonvideo_base(config);
+
+ REEL(config, m_reel[0], STARPOINT_48STEP_REEL, 1, 3, 0x09, 4);
+ m_reel[0]->optic_handler().set(FUNC(jpmimpct_state::reel_optic_cb<0>));
+ REEL(config, m_reel[1], STARPOINT_48STEP_REEL, 1, 3, 0x09, 4);
+ m_reel[1]->optic_handler().set(FUNC(jpmimpct_state::reel_optic_cb<1>));
+ REEL(config, m_reel[2], STARPOINT_48STEP_REEL, 1, 3, 0x09, 4);
+ m_reel[2]->optic_handler().set(FUNC(jpmimpct_state::reel_optic_cb<2>));
+ // this is a wheel, not a standard reel, there are 2 open windows into it, and all other cards on it can be seen through grilles
+ // to render this properly in the layout would require a new type of element
+ REEL(config, m_reel[3], STARPOINT_48STEP_REEL, 1, 3, 0x09, 4);
+ m_reel[3]->optic_handler().set(FUNC(jpmimpct_state::reel_optic_inv_cb<3>));
+}
void jpmimpct_video_state::impact_video(machine_config &config)
{
diff --git a/src/mame/drivers/jpmimpctsw.cpp b/src/mame/drivers/jpmimpctsw.cpp
index 81710c93a82..3f31e11f5e6 100644
--- a/src/mame/drivers/jpmimpctsw.cpp
+++ b/src/mame/drivers/jpmimpctsw.cpp
@@ -10220,9 +10220,10 @@ ROM_START( j6twstdt )
ROM_END
+
#define j6untch_sound \
ROM_REGION( 0x80000, "upd", ROMREGION_ERASE00 ) \
- /* missing? */
+ ROM_LOAD( "untouchablesnd.bin", 0x000000, 0x080000, CRC(b7fd3b56) SHA1(cd1a7f766d5ffa7c203248f5caa8bf7bd64cd4d6) )
ROM_START( j6untch )
ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASEFF )
@@ -11600,11 +11601,11 @@ GAMEL( 199?, j6bnkrcla, j6bnkrcl, impact_nonvideo, j6bnkrcl, jpmimpct_state
GAMEL( 199?, j6bnkrclb, j6bnkrcl, impact_nonvideo, j6bnkrcl, jpmimpct_state, empty_init, ROT0, "JPM", "Banker Club (JPM) (IMPACT) (V6, set 3)", GAME_FLAGS_SOUND, layout_j6bnkrcl )
GAMEL( 199?, j6bnkrclc, j6bnkrcl, impact_nonvideo, j6bnkrcl, jpmimpct_state, empty_init, ROT0, "JPM", "Banker Club (JPM) (IMPACT) (V2)", GAME_FLAGS_SOUND, layout_j6bnkrcl )
-GAMEL( 199?, j6big50, 0, impact_nonvideo, j6big50, jpmimpct_state, empty_init, ROT0, "JPM", "Big 50 (JPM) (IMPACT) (BF12 L12)", GAME_FLAGS_SOUND, layout_j6big50 )
-GAMEL( 199?, j6big50a, j6big50, impact_nonvideo, j6big50, jpmimpct_state, empty_init, ROT0, "JPM", "Big 50 (JPM) (IMPACT) (BF12P F12, Protocol)", GAME_FLAGS_SOUND, layout_j6big50 )
-GAMEL( 199?, j6big50b, j6big50, impact_nonvideo, j6big50, jpmimpct_state, empty_init, ROT0, "JPM", "Big 50 (JPM) (IMPACT) (BF12 AH12)", GAME_FLAGS_SOUND, layout_j6big50 )
-GAMEL( 199?, j6big50c, j6big50, impact_nonvideo, j6big50, jpmimpct_state, empty_init, ROT0, "JPM", "Big 50 (JPM) (IMPACT) (BF12 L12, Whitbread)", GAME_FLAGS_SOUND, layout_j6big50 )
-GAMEL( 199?, j6big50d, j6big50, impact_nonvideo, j6big50, jpmimpct_state, empty_init, ROT0, "JPM", "Big 50 (JPM) (IMPACT) (BF L8)", GAME_FLAGS_SOUND, layout_j6big50 )
+GAMEL( 199?, j6big50, 0, impact_nonvideo_big50, j6big50, jpmimpct_state, empty_init, ROT0, "JPM", "Big 50 (JPM) (IMPACT) (BF12 L12)", GAME_FLAGS_WORKING, layout_j6big50 )
+GAMEL( 199?, j6big50a, j6big50, impact_nonvideo_big50, j6big50, jpmimpct_state, empty_init, ROT0, "JPM", "Big 50 (JPM) (IMPACT) (BF12P F12, Protocol)", GAME_FLAGS_WORKING, layout_j6big50 )
+GAMEL( 199?, j6big50b, j6big50, impact_nonvideo_big50, j6big50, jpmimpct_state, empty_init, ROT0, "JPM", "Big 50 (JPM) (IMPACT) (BF12 AH12)", GAME_FLAGS_WORKING, layout_j6big50 )
+GAMEL( 199?, j6big50c, j6big50, impact_nonvideo_big50, j6big50, jpmimpct_state, empty_init, ROT0, "JPM", "Big 50 (JPM) (IMPACT) (BF12 L12, Whitbread)", GAME_FLAGS_WORKING, layout_j6big50 )
+GAMEL( 199?, j6big50d, j6big50, impact_nonvideo_big50, j6big50, jpmimpct_state, empty_init, ROT0, "JPM", "Big 50 (JPM) (IMPACT) (BF L8)", GAME_FLAGS_WORKING, layout_j6big50 )
GAMEL( 199?, j6bigbuk, 0, impact_nonvideo, j6bigbuk, jpmimpct_state, empty_init, ROT0, "JPM", "Big Bucks (JPM) (IMPACT) (set 1)", GAME_FLAGS_WORKING, layout_j6bigbukc )
GAMEL( 199?, j6bigbuka, j6bigbuk, impact_nonvideo, j6bigbuk, jpmimpct_state, empty_init, ROT0, "JPM", "Big Bucks (JPM) (IMPACT) (set 2)", GAME_FLAGS_WORKING, layout_j6bigbukc )
@@ -11990,7 +11991,7 @@ GAME( 199?, j6sonich, j6sonic, impact_nonvideo, j6sonic, jpmimpct_state,
GAME( 199?, j6roof, 0, impact_nonvideo, j6roof, jpmimpct_state, empty_init, ROT0, "Ace", "Thru' The Roof (Ace) (IMPACT) (set 1)", GAME_FLAGS )
GAME( 199?, j6roofa, j6roof, impact_nonvideo, j6roof, jpmimpct_state, empty_init, ROT0, "Ace", "Thru' The Roof (Ace) (IMPACT) (set 2)", GAME_FLAGS )
-GAMEL( 199?, j6untch, 0, impact_nonvideo, j6untch, jpmimpct_state, empty_init, ROT0, "JPM", "Untouchable (JPM) (IMPACT) (UN3B LO6)", GAME_FLAGS, layout_j6untch ) //Works but no sound, and may hang
+GAMEL( 199?, j6untch, 0, impact_nonvideo, j6untch, jpmimpct_state, empty_init, ROT0, "JPM", "Untouchable (JPM) (IMPACT) (UN3B LO6)", GAME_FLAGS, layout_j6untch )
GAMEL( 199?, j6untcha, j6untch, impact_nonvideo, j6untch, jpmimpct_state, empty_init, ROT0, "JPM", "Untouchable (JPM) (IMPACT) (UN3BI LO6)", GAME_FLAGS, layout_j6untch )
// VFD issues, but VFD is likely unused as it calls the game 'Some Indeterminate Club Machine' with clear placeholder text
diff --git a/src/mame/includes/jpmimpct.h b/src/mame/includes/jpmimpct.h
index 8511ea487be..c99687e302e 100644
--- a/src/mame/includes/jpmimpct.h
+++ b/src/mame/includes/jpmimpct.h
@@ -74,6 +74,8 @@ public:
void impact_nonvideo(machine_config &config);
void impact_nonvideo_altreels(machine_config &config);
+ void impact_nonvideo_big50(machine_config &config);
+
DECLARE_INPUT_CHANGED_MEMBER(coin_changed);
template <unsigned N> DECLARE_READ_LINE_MEMBER( coinsense_r ) { return (m_coinstate >> N) & 1; }
@@ -117,6 +119,7 @@ protected:
private:
template <unsigned N> DECLARE_WRITE_LINE_MEMBER(reel_optic_cb) { if (state) m_optic_pattern |= (1 << N); else m_optic_pattern &= ~(1 << N); }
+ template <unsigned N> DECLARE_WRITE_LINE_MEMBER(reel_optic_inv_cb) { if (!state) m_optic_pattern |= (1 << N); else m_optic_pattern &= ~(1 << N); }
template <unsigned N> TIMER_DEVICE_CALLBACK_MEMBER(coinoff) { m_coinstate |= (1 << N); logerror("coin state lowered %d\n", N+1); }
diff --git a/src/mame/layout/j6big50.lay b/src/mame/layout/j6big50.lay
index 0b0e239081b..074857f4659 100644
--- a/src/mame/layout/j6big50.lay
+++ b/src/mame/layout/j6big50.lay
@@ -2947,11 +2947,21 @@
<color red="0.0" green="0.0" blue="0.0"/>
</reel>
</element>
- <element name="reel3" defstate="0">
- <reel reelreversed="0" stateoffset="8193" numsymbolsvisible="1" symbollist="3 9,2 8,A 7,K 6,Q 5,J 4,9 3,8 2,7 A,6 K,5 Q,4 J">
+
+ <!-- should be a single wheel, not a reel, technically all symbols are partially visible, and can be illuminated, not just the 2 at either edge used for gameplay -->
+ <!-- as the right hand side of the wheel appears to rotate in the opposite direction, this is currently handled with 2 views, with one being shifted -->
+ <!-- technically this illusion could be expanded to 12 views until a proper wheel type is available -->
+ <element name="reel3_viewleft" defstate="0">
+ <reel reelreversed="1" stateoffset="-1600" numsymbolsvisible="1" symbollist="3,4,5,6,7,8,9,J,Q,K,A,2">
<color red="0.0" green="0.0" blue="0.0"/>
</reel>
</element>
+ <element name="reel3_viewright" defstate="0">
+ <reel reelreversed="0" stateoffset="-1000" numsymbolsvisible="1" symbollist="9,8,7,6,5,4,3,2,A,K,Q,J">
+ <color red="0.0" green="0.0" blue="0.0"/>
+ </reel>
+ </element>
+
<element name="led_background">
<rect>
<color red="0.4" green="0.0" blue="0.0"/>
@@ -3228,6 +3238,7 @@
<element name="sreel3" ref="reel2" state="0">
<bounds x="390" y="480" width="80" height="100"/>
</element>
+
<element ref="reel_background">
<bounds x="253" y="353" width="140" height="50"/>
</element>
@@ -3249,9 +3260,15 @@
<element name="lamp20" ref="reel_lamp_layer_5" state="0">
<bounds x="282.1667" y="363.4167" width="81.6667" height="29.1667"/>
</element>
- <element name="sreel4" ref="reel3" state="0">
- <bounds x="253" y="353" width="140" height="50"/>
+
+ <!-- 2 views into the same wheel -->
+ <element name="sreel4" ref="reel3_viewleft" state="0">
+ <bounds x="253" y="353" width="40" height="50"/>
</element>
+ <element name="sreel4" ref="reel3_viewright" state="0">
+ <bounds x="353" y="353" width="40" height="50"/>
+ </element>
+
<element name="lamp60" ref="lamp_60_1_border" state="0">
<bounds x="32" y="421" width="56" height="18"/>
</element>
@@ -4144,4 +4161,4 @@
<bounds x="112" y="589" width="76" height="16"/>
</element>
</view>
-</mamelayout> \ No newline at end of file
+</mamelayout>