gorf: improve internal artwork lamps

This commit is contained in:
hap 2023-06-26 13:46:52 +02:00
parent fafca0b281
commit e137725d9f
3 changed files with 146 additions and 190 deletions

View File

@ -3,177 +3,131 @@
license:CC0-1.0 license:CC0-1.0
--> -->
<mamelayout version="2"> <mamelayout version="2">
<element name="empty" />
<element name="white"> <!-- define elements -->
<rect>
<color red="1.0" green="1.0" blue="1.0" /> <element name="white"><rect><color red="1" green="1" blue="1" /></rect></element>
</rect> <element name="whitem"><rect><color red="0.65" green="0.65" blue="0.66" /></rect></element>
</element> <element name="yellowm"><rect><color red="1" green="0.85" blue="0.1" /></rect></element>
<element name="yellow"> <element name="black"><rect><color red="0" green="0" blue="0" /></rect></element>
<rect>
<color red="1.0" green="0.85" blue="0" />
</rect>
</element>
<element name="black">
<rect>
<color red="0" green="0" blue="0" />
</rect>
</element>
<element name="lamp" defstate="0"> <element name="lamp" defstate="0">
<rect state="1"> <rect state="0"><color red="0.5" green="0.5" blue="0.5" /></rect>
<color red="1.0" green="0.85" blue="0.0" /> <rect state="1"><color red="1" green="1" blue="1" /></rect>
</rect>
</element> </element>
<element name="spacetext">
<text string="SPACE"> <element name="nothing"><rect><color alpha="0" /></rect></element>
<color red="0" green="0" blue="0" />
</text> <element name="text_1s"><text string="*"></text></element>
<element name="text_2s"><text string="* *"></text></element>
<element name="text_3s"><text string="* * *"></text></element>
<element name="text_spacerank">
<rect><color red="1" green="1" blue="1" /></rect>
<text string="SPACE RANK"><color red="0" green="0" blue="0" /></text>
</element> </element>
<element name="rank"> <element name="text_space">
<text string="SPACE RANK"> <rect><color red="1" green="1" blue="1" /></rect>
<color red="0" green="0" blue="0" /> <text string="SPACE"><color red="0" green="0" blue="0" /></text>
</text>
</element> </element>
<element name="cadet"> <element name="text_cadet">
<text string="CADET"> <rect><color red="1" green="1" blue="1" /></rect>
<color red="0" green="0" blue="0" /> <text string="CADET"><color red="0" green="0" blue="0" /></text>
</text>
</element> </element>
<element name="captain"> <element name="text_captain">
<text string="CAPTAIN"> <rect><color red="1" green="1" blue="1" /></rect>
<color red="0" green="0" blue="0" /> <text string="CAPTAIN"><color red="0" green="0" blue="0" /></text>
</text>
</element> </element>
<element name="colonel"> <element name="text_colonel">
<text string="COLONEL"> <rect><color red="1" green="1" blue="1" /></rect>
<color red="0" green="0" blue="0" /> <text string="COLONEL"><color red="0" green="0" blue="0" /></text>
</text>
</element> </element>
<element name="general"> <element name="text_general">
<text string="GENERAL"> <rect><color red="1" green="1" blue="1" /></rect>
<color red="0" green="0" blue="0" /> <text string="GENERAL"><color red="0" green="0" blue="0" /></text>
</text>
</element> </element>
<element name="warrior"> <element name="text_warrior">
<text string="WARRIOR"> <rect><color red="1" green="1" blue="1" /></rect>
<color red="0" green="0" blue="0" /> <text string="WARRIOR"><color red="0" green="0" blue="0" /></text>
</text>
</element> </element>
<element name="avenger"> <element name="text_avenger">
<text string="AVENGER"> <rect><color red="1" green="1" blue="1" /></rect>
<color red="0" green="0" blue="0" /> <text string="AVENGER"><color red="0" green="0" blue="0" /></text>
</text>
</element> </element>
<!-- build screen -->
<group name="lamps">
<element ref="white"><bounds x="0" y="-5" width="100" height="205" /></element>
<element ref="text_spacerank"><bounds xc="50" yc="3" width="80" height="12" /></element>
<element ref="whitem" blend="multiply"><bounds x="0" y="-5" width="100" height="205" /></element>
<element ref="black"><bounds xc="25" yc="41" width="44" height="60" /></element>
<element ref="black"><bounds xc="75" yc="41" width="44" height="60" /></element>
<element ref="black"><bounds xc="25" yc="104" width="44" height="60" /></element>
<element ref="black"><bounds xc="75" yc="104" width="44" height="60" /></element>
<element ref="black"><bounds xc="25" yc="167" width="44" height="60" /></element>
<element ref="black"><bounds xc="75" yc="167" width="44" height="60" /></element>
<element ref="white"><bounds xc="25" yc="41" width="38" height="40" /></element>
<element ref="white"><bounds xc="75" yc="41" width="38" height="40" /></element>
<element ref="white"><bounds xc="25" yc="104" width="38" height="40" /></element>
<element ref="white"><bounds xc="75" yc="104" width="38" height="40" /></element>
<element ref="white"><bounds xc="25" yc="167" width="38" height="40" /></element>
<element ref="white"><bounds xc="75" yc="167" width="38" height="40" /></element>
<element ref="text_1s"><bounds xc="25" yc="17" width="44" height="10" /></element>
<element ref="nothing"><bounds xc="25" yc="67" width="44" height="10" /></element>
<element ref="text_2s"><bounds xc="75" yc="17" width="44" height="10" /></element>
<element ref="nothing"><bounds xc="75" yc="67" width="44" height="10" /></element>
<element ref="text_3s"><bounds xc="25" yc="80" width="44" height="10" /></element>
<element ref="nothing"><bounds xc="25" yc="130" width="44" height="10" /></element>
<element ref="text_3s"><bounds xc="75" yc="80" width="44" height="10" /></element>
<element ref="text_1s"><bounds xc="75" yc="130" width="44" height="10" /></element>
<element ref="text_3s"><bounds xc="25" yc="143" width="44" height="10" /></element>
<element ref="text_2s"><bounds xc="25" yc="193" width="44" height="10" /></element>
<element ref="text_3s"><bounds xc="75" yc="143" width="44" height="10" /></element>
<element ref="text_3s"><bounds xc="75" yc="193" width="44" height="10" /></element>
<element ref="text_space" blend="multiply"><bounds xc="25" yc="37" width="44" height="8" /></element>
<element ref="text_cadet" blend="multiply"><bounds xc="25" yc="44" width="44" height="8" /></element>
<element ref="text_space" blend="multiply"><bounds xc="75" yc="37" width="44" height="8" /></element>
<element ref="text_captain" blend="multiply"><bounds xc="75" yc="44" width="44" height="8" /></element>
<element ref="text_space" blend="multiply"><bounds xc="25" yc="100" width="44" height="8" /></element>
<element ref="text_colonel" blend="multiply"><bounds xc="25" yc="107" width="44" height="8" /></element>
<element ref="text_space" blend="multiply"><bounds xc="75" yc="100" width="44" height="8" /></element>
<element ref="text_general" blend="multiply"><bounds xc="75" yc="107" width="44" height="8" /></element>
<element ref="text_space" blend="multiply"><bounds xc="25" yc="163" width="44" height="8" /></element>
<element ref="text_warrior" blend="multiply"><bounds xc="25" yc="170" width="44" height="8" /></element>
<element ref="text_space" blend="multiply"><bounds xc="75" yc="163" width="44" height="8" /></element>
<element ref="text_avenger" blend="multiply"><bounds xc="75" yc="170" width="44" height="8" /></element>
<element ref="yellowm" blend="multiply"><bounds xc="25" yc="41" width="44" height="60" /></element>
<element ref="yellowm" blend="multiply"><bounds xc="75" yc="41" width="44" height="60" /></element>
<element ref="yellowm" blend="multiply"><bounds xc="25" yc="104" width="44" height="60" /></element>
<element ref="yellowm" blend="multiply"><bounds xc="75" yc="104" width="44" height="60" /></element>
<element ref="yellowm" blend="multiply"><bounds xc="25" yc="167" width="44" height="60" /></element>
<element ref="yellowm" blend="multiply"><bounds xc="75" yc="167" width="44" height="60" /></element>
<element name="lamp0" ref="lamp" blend="multiply"><bounds xc="25" yc="41" width="44" height="60" /></element>
<element name="lamp1" ref="lamp" blend="multiply"><bounds xc="75" yc="41" width="44" height="60" /></element>
<element name="lamp2" ref="lamp" blend="multiply"><bounds xc="25" yc="104" width="44" height="60" /></element>
<element name="lamp3" ref="lamp" blend="multiply"><bounds xc="75" yc="104" width="44" height="60" /></element>
<element name="lamp4" ref="lamp" blend="multiply"><bounds xc="25" yc="167" width="44" height="60" /></element>
<element name="lamp5" ref="lamp" blend="multiply"><bounds xc="75" yc="167" width="44" height="60" /></element>
</group>
<view name="Lamps"> <view name="Lamps">
<collection name="Centre Display"> <collection name="Centre Display">
<element ref="empty"> <element ref="nothing"><bounds x="-96" y="0" width="492" height="400" /></element>
<bounds x="-112" y="0" width="524" height="400" />
</element>
</collection> </collection>
<screen index="0"> <screen index="0"><bounds x="0" y="0" width="300" height="400" /></screen>
<bounds x="0" y="0" width="300" height="400" /> <group ref="lamps"><bounds x="308" y="220" width="88" height="180" /></group>
</screen>
<element ref="white">
<bounds x="324" y="213" width="88" height="180" />
</element>
<element ref="rank">
<bounds x="330" y="214" width="76" height="10" />
</element>
<element ref="black">
<bounds x="328" y="227" width="38" height="50" />
</element>
<element ref="black">
<bounds x="370" y="227" width="38" height="50" />
</element>
<element ref="black">
<bounds x="328" y="283" width="38" height="50" />
</element>
<element ref="black">
<bounds x="370" y="283" width="38" height="50" />
</element>
<element ref="black">
<bounds x="328" y="339" width="38" height="50" />
</element>
<element ref="black">
<bounds x="370" y="339" width="38" height="50" />
</element>
<element name="lamp0" ref="lamp">
<bounds x="332" y="234" width="30" height="36" />
</element>
<element name="lamp1" ref="lamp">
<bounds x="374" y="234" width="30" height="36" />
</element>
<element name="lamp2" ref="lamp">
<bounds x="332" y="290" width="30" height="36" />
</element>
<element name="lamp3" ref="lamp">
<bounds x="374" y="290" width="30" height="36" />
</element>
<element name="lamp4" ref="lamp">
<bounds x="332" y="346" width="30" height="36" />
</element>
<element name="lamp5" ref="lamp">
<bounds x="374" y="346" width="30" height="36" />
</element>
<element ref="yellow">
<bounds x="332" y="234" width="30" height="36" />
<color alpha=".5" />
</element>
<element ref="yellow">
<bounds x="374" y="234" width="30" height="36" />
<color alpha=".5" />
</element>
<element ref="yellow">
<bounds x="332" y="290" width="30" height="36" />
<color alpha=".5" />
</element>
<element ref="yellow">
<bounds x="374" y="290" width="30" height="36" />
<color alpha=".5" />
</element>
<element ref="yellow">
<bounds x="332" y="346" width="30" height="36" />
<color alpha=".5" />
</element>
<element ref="yellow">
<bounds x="374" y="346" width="30" height="36" />
<color alpha=".5" />
</element>
<element ref="spacetext">
<bounds x="332" y="244" width="30" height="7" />
</element>
<element ref="cadet">
<bounds x="332" y="251" width="30" height="7" />
</element>
<element ref="spacetext">
<bounds x="374" y="244" width="30" height="7" />
</element>
<element ref="captain">
<bounds x="374" y="251" width="30" height="7" />
</element>
<element ref="spacetext">
<bounds x="332" y="300" width="30" height="7" />
</element>
<element ref="colonel">
<bounds x="332" y="307" width="30" height="7" />
</element>
<element ref="spacetext">
<bounds x="374" y="300" width="30" height="7" />
</element>
<element ref="general">
<bounds x="374" y="307" width="30" height="7" />
</element>
<element ref="spacetext">
<bounds x="332" y="356" width="30" height="7" />
</element>
<element ref="warrior">
<bounds x="332" y="363" width="30" height="7" />
</element>
<element ref="spacetext">
<bounds x="374" y="356" width="30" height="7" />
</element>
<element ref="avenger">
<bounds x="374" y="363" width="30" height="7" />
</element>
</view> </view>
</mamelayout> </mamelayout>

View File

@ -133,6 +133,7 @@
#include "spacezap.lh" #include "spacezap.lh"
#include "tenpindx.lh" #include "tenpindx.lh"
/************************************* /*************************************
* *
* Protected RAM * Protected RAM
@ -1201,7 +1202,7 @@ void astrocde_state::astrocade_base(machine_config &config)
SCREEN(config, m_screen, SCREEN_TYPE_RASTER); SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(ASTROCADE_CLOCK, 455, 0, 352, 262, 0, 240); m_screen->set_raw(ASTROCADE_CLOCK, 455, 0, 352, 262, 0, 240);
m_screen->set_default_position(1.1, 0.0, 1.18, -0.018); /* clip out borders */ m_screen->set_default_position(1.1, 0.0, 1.18, -0.018); // clip out borders
m_screen->set_screen_update(FUNC(astrocde_state::screen_update_astrocde)); m_screen->set_screen_update(FUNC(astrocde_state::screen_update_astrocde));
m_screen->set_palette(m_palette); m_screen->set_palette(m_palette);
} }
@ -1268,23 +1269,23 @@ void seawolf2_state::seawolf2(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &seawolf2_state::seawolf2_map); m_maincpu->set_addrmap(AS_PROGRAM, &seawolf2_state::seawolf2_map);
m_maincpu->set_addrmap(AS_IO, &seawolf2_state::port_map_discrete); m_maincpu->set_addrmap(AS_IO, &seawolf2_state::port_map_discrete);
output_latch_device &lamplatch1(OUTPUT_LATCH(config, "lamplatch0")); // 74174 on game board at N2 output_latch_device &lamplatch0(OUTPUT_LATCH(config, "lamplatch0")); // 74174 on game board at N2
lamplatch1.bit_handler<0>().set_output("lamp6"); // right player torpedo 4 available lamplatch0.bit_handler<0>().set_output("lamp6"); // right player torpedo 4 available
lamplatch1.bit_handler<1>().set_output("lamp5"); // right player torpedo 3 available lamplatch0.bit_handler<1>().set_output("lamp5"); // right player torpedo 3 available
lamplatch1.bit_handler<2>().set_output("lamp4"); // right player torpedo 2 available lamplatch0.bit_handler<2>().set_output("lamp4"); // right player torpedo 2 available
lamplatch1.bit_handler<3>().set_output("lamp3"); // right player torpedo 1 available lamplatch0.bit_handler<3>().set_output("lamp3"); // right player torpedo 1 available
lamplatch1.bit_handler<4>().set_output("lamp2"); // right player ready lamplatch0.bit_handler<4>().set_output("lamp2"); // right player ready
lamplatch1.bit_handler<4>().append_output("lamp1").invert(); // right player reload (active low) lamplatch0.bit_handler<4>().append_output("lamp1").invert(); // right player reload (active low)
lamplatch1.bit_handler<5>().set_output("lamp0"); // right player explosion (hit) lamplatch0.bit_handler<5>().set_output("lamp0"); // right player explosion (hit)
output_latch_device &lamplatch2(OUTPUT_LATCH(config, "lamplatch1")); // 74174 on game board at P2 output_latch_device &lamplatch1(OUTPUT_LATCH(config, "lamplatch1")); // 74174 on game board at P2
lamplatch2.bit_handler<0>().set_output("lamp13"); // left player torpedo 4 available lamplatch1.bit_handler<0>().set_output("lamp13"); // left player torpedo 4 available
lamplatch2.bit_handler<1>().set_output("lamp12"); // left player torpedo 3 available lamplatch1.bit_handler<1>().set_output("lamp12"); // left player torpedo 3 available
lamplatch2.bit_handler<2>().set_output("lamp11"); // left player torpedo 2 available lamplatch1.bit_handler<2>().set_output("lamp11"); // left player torpedo 2 available
lamplatch2.bit_handler<3>().set_output("lamp10"); // left player torpedo 1 available lamplatch1.bit_handler<3>().set_output("lamp10"); // left player torpedo 1 available
lamplatch2.bit_handler<4>().set_output("lamp9"); // left player ready lamplatch1.bit_handler<4>().set_output("lamp9"); // left player ready
lamplatch2.bit_handler<4>().append_output("lamp8").invert(); // left player reload (active low) lamplatch1.bit_handler<4>().append_output("lamp8").invert(); // left player reload (active low)
lamplatch2.bit_handler<5>().set_output("lamp7"); // left player explosion (hit) lamplatch1.bit_handler<5>().set_output("lamp7"); // left player explosion (hit)
/* sound hardware */ /* sound hardware */
SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "lspeaker").front_left();
@ -1357,8 +1358,8 @@ void astrocde_state::wow(machine_config &config)
outlatch.q_out_cb<7>().set(FUNC(astrocde_state::coin_counter_w<2>)); outlatch.q_out_cb<7>().set(FUNC(astrocde_state::coin_counter_w<2>));
/* video hardware */ /* video hardware */
m_screen->set_default_position(1.0, 0.0, 1.0, 0.0); /* adjusted to match screenshots */ m_screen->set_default_position(1.0, 0.0, 1.0, 0.0); // adjusted to match screenshots
// m_screen->set_default_position(1.066, -0.004, 1.048, -0.026); /* adjusted to match flyer */ // m_screen->set_default_position(1.066, -0.004, 1.048, -0.026); // adjusted to match flyer
/* sound hardware */ /* sound hardware */
SPEAKER(config, "center").front_center(); SPEAKER(config, "center").front_center();
@ -1406,7 +1407,7 @@ void astrocde_state::gorf(machine_config &config)
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 128); // MC14024 on CPU board at U18, CLK = VERTDR, Q7 used for RESET WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 128); // MC14024 on CPU board at U18, CLK = VERTDR, Q7 used for RESET
/* video hardware */ /* video hardware */
m_screen->set_default_position(1.0, 0.0, 1.0, 0.0); /* adjusted to match flyer */ m_screen->set_default_position(1.0, 0.0, 1.0, 0.0); // adjusted to match flyer
/* sound hardware */ /* sound hardware */
SPEAKER(config, "upper", 0.0, 0.0, 1.0); SPEAKER(config, "upper", 0.0, 0.0, 1.0);
@ -1466,12 +1467,12 @@ void astrocde_state::profpac(machine_config &config)
outlatch.bit_handler<3>().set_output("led1"); outlatch.bit_handler<3>().set_output("led1");
output_latch_device &lamplatch(OUTPUT_LATCH(config, "lamplatch", 0)); // 74LS174 on game board at U7 output_latch_device &lamplatch(OUTPUT_LATCH(config, "lamplatch", 0)); // 74LS174 on game board at U7
lamplatch.bit_handler<0>().set_output("lamp0"); // left lamp A lamplatch.bit_handler<0>().set_output("lamp0"); // left lamp A
lamplatch.bit_handler<1>().set_output("lamp1"); // left lamp B lamplatch.bit_handler<1>().set_output("lamp1"); // left lamp B
lamplatch.bit_handler<2>().set_output("lamp2"); // left lamp C lamplatch.bit_handler<2>().set_output("lamp2"); // left lamp C
lamplatch.bit_handler<4>().set_output("lamp3"); // right lamp A lamplatch.bit_handler<4>().set_output("lamp3"); // right lamp A
lamplatch.bit_handler<5>().set_output("lamp4"); // right lamp B lamplatch.bit_handler<5>().set_output("lamp4"); // right lamp B
lamplatch.bit_handler<6>().set_output("lamp5"); // right lamp C lamplatch.bit_handler<6>().set_output("lamp5"); // right lamp C
m_astrocade_sound[0]->so_cb<4>().set("outlatch", FUNC(output_latch_device::write)); m_astrocade_sound[0]->so_cb<4>().set("outlatch", FUNC(output_latch_device::write));
m_astrocade_sound[0]->so_cb<5>().set("lamplatch", FUNC(output_latch_device::write)); m_astrocade_sound[0]->so_cb<5>().set("lamplatch", FUNC(output_latch_device::write));
@ -1507,7 +1508,7 @@ void tenpindx_state::tenpindx(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &tenpindx_state::profpac_map); m_maincpu->set_addrmap(AS_PROGRAM, &tenpindx_state::profpac_map);
m_maincpu->set_addrmap(AS_IO, &tenpindx_state::port_map_16col_pattern_tenpindx); m_maincpu->set_addrmap(AS_IO, &tenpindx_state::port_map_16col_pattern_tenpindx);
Z80(config, m_subcpu, ASTROCADE_CLOCK/4); /* real clock unknown */ Z80(config, m_subcpu, ASTROCADE_CLOCK/4); // real clock unknown
m_subcpu->set_daisy_config(tenpin_daisy_chain); m_subcpu->set_daisy_config(tenpin_daisy_chain);
m_subcpu->set_addrmap(AS_PROGRAM, &tenpindx_state::sub_map); m_subcpu->set_addrmap(AS_PROGRAM, &tenpindx_state::sub_map);
m_subcpu->set_addrmap(AS_IO, &tenpindx_state::sub_io_map); m_subcpu->set_addrmap(AS_IO, &tenpindx_state::sub_io_map);
@ -1521,7 +1522,7 @@ void tenpindx_state::tenpindx(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch); GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_subcpu, INPUT_LINE_NMI); m_soundlatch->data_pending_callback().set_inputline(m_subcpu, INPUT_LINE_NMI);
ay8912_device &aysnd(AY8912(config, "aysnd", ASTROCADE_CLOCK/4)); /* real clock unknown */ ay8912_device &aysnd(AY8912(config, "aysnd", ASTROCADE_CLOCK/4)); // real clock unknown
aysnd.port_a_read_callback().set_ioport("DIPSW"); aysnd.port_a_read_callback().set_ioport("DIPSW");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.33); aysnd.add_route(ALL_OUTPUTS, "mono", 0.33);
} }

View File

@ -16,6 +16,7 @@
#include "sound/astrocde.h" #include "sound/astrocde.h"
#include "sound/samples.h" #include "sound/samples.h"
#include "sound/votrax.h" #include "sound/votrax.h"
#include "emupal.h" #include "emupal.h"
#include "screen.h" #include "screen.h"
@ -233,9 +234,9 @@ private:
class demndrgn_state : public astrocde_state class demndrgn_state : public astrocde_state
{ {
public: public:
demndrgn_state(const machine_config &mconfig, device_type type, const char *tag) demndrgn_state(const machine_config &mconfig, device_type type, const char *tag) :
: astrocde_state(mconfig, type, tag) astrocde_state(mconfig, type, tag),
, m_trackball(*this, {"MOVEX", "MOVEY"}) m_trackball(*this, {"MOVEX", "MOVEY"})
{ } { }
void demndrgn(machine_config &config); void demndrgn(machine_config &config);