Various cleanups:

* vsystem.cpp: Modernised code a little.
* upscope.cpp: Put code in anonymous namespace.
* Reduced redundancy in more fruit machine layouts.
This commit is contained in:
Vas Crabb 2022-06-14 17:24:46 +10:00
parent 6741eca4d6
commit 540426ea91
76 changed files with 2857 additions and 70461 deletions

View File

@ -4498,8 +4498,6 @@ files {
MAME_DIR .. "src/mame/video/ojankohs.cpp", MAME_DIR .. "src/mame/video/ojankohs.cpp",
MAME_DIR .. "src/mame/drivers/pipedrm.cpp", MAME_DIR .. "src/mame/drivers/pipedrm.cpp",
MAME_DIR .. "src/mame/drivers/rpunch.cpp", MAME_DIR .. "src/mame/drivers/rpunch.cpp",
MAME_DIR .. "src/mame/includes/rpunch.h",
MAME_DIR .. "src/mame/video/rpunch.cpp",
MAME_DIR .. "src/mame/drivers/suprslam.cpp", MAME_DIR .. "src/mame/drivers/suprslam.cpp",
MAME_DIR .. "src/mame/includes/suprslam.h", MAME_DIR .. "src/mame/includes/suprslam.h",
MAME_DIR .. "src/mame/video/suprslam.cpp", MAME_DIR .. "src/mame/video/suprslam.cpp",

View File

@ -107,19 +107,367 @@
#include "emu.h" #include "emu.h"
#include "includes/rpunch.h"
// mame
#include "video/vsystem_gga.h"
// devices
#include "cpu/m68000/m68000.h" #include "cpu/m68000/m68000.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "machine/input_merger.h" #include "machine/input_merger.h"
#include "sound/upd7759.h"
#include "sound/ymopm.h" #include "sound/ymopm.h"
// emu
#include "emupal.h"
#include "screen.h"
#include "tilemap.h"
#include "speaker.h" #include "speaker.h"
namespace {
#define MASTER_CLOCK XTAL(16'000'000) #define MASTER_CLOCK XTAL(16'000'000)
#define VIDEO_CLOCK XTAL(13'333'000) #define VIDEO_CLOCK XTAL(13'333'000)
class rpunch_state : public driver_device
{
public:
rpunch_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_soundlatch(*this, "soundlatch"),
m_upd7759(*this, "upd"),
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_palette(*this, "palette"),
m_gga(*this, "gga"),
m_videoram(*this, "videoram"),
m_spriteram(*this, "spriteram"),
m_hi_bits(*this, "SERVICE")
{ }
void rpunch(machine_config &config);
void svolleybl(machine_config &config);
DECLARE_CUSTOM_INPUT_MEMBER(hi_bits_r) { return m_hi_bits->read(); }
protected:
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<generic_latch_8_device> m_soundlatch;
optional_device<upd7759_device> m_upd7759;
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
required_device<vsystem_gga_device> m_gga;
required_shared_ptr<u16> m_videoram;
required_shared_ptr<u16> m_spriteram;
required_ioport m_hi_bits;
tilemap_t *m_background[2]{};
void set_sprite_palette(int val) { m_sprite_palette = val; }
void set_sprite_xoffs(int val) { m_sprite_xoffs = val; }
virtual void machine_start() override;
void svolley_map(address_map &map);
void rpunch_map(address_map &map);
void svolleybl_main_map(address_map &map);
void sound_map(address_map &map);
void svolleybl_sound_map(address_map &map);
private:
// hardware configuration
int m_sprite_palette = 0;
int m_sprite_xoffs = 0;
u8 m_upd_rom_bank = 0;
u16 m_videoflags = 0;
u8 m_sprite_pri = 0;
u8 m_sprite_num = 0;
std::unique_ptr<bitmap_ind16> m_pixmap;
emu_timer *m_crtc_timer = nullptr;
u16 sound_busy_r();
u8 pixmap_r(offs_t offset);
void pixmap_w(offs_t offset, u8 data);
void videoram_w(offs_t offset, u16 data, u16 mem_mask = ~0);
void videoreg_w(offs_t offset, u16 data, u16 mem_mask = ~0);
void scrollreg_w(offs_t offset, u16 data, u16 mem_mask = ~0);
void gga_w(offs_t offset, u8 data);
void gga_data_w(offs_t offset, u8 data);
void sprite_ctrl_w(offs_t offset, u8 data);
void upd_control_w(u8 data);
void upd_data_w(u8 data);
TILE_GET_INFO_MEMBER(get_bg0_tile_info);
TILE_GET_INFO_MEMBER(get_bg1_tile_info);
u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(crtc_interrupt_gen);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_bitmap(bitmap_ind16 &bitmap, const rectangle &cliprect);
};
class svolley_state : public rpunch_state
{
public:
svolley_state(const machine_config &mconfig, device_type type, const char *tag) :
rpunch_state(mconfig, type, tag)
{
}
void svolley(machine_config &config);
protected:
virtual void machine_start() override;
};
/*************************************
*
* Tilemap callbacks
*
*************************************/
TILE_GET_INFO_MEMBER(rpunch_state::get_bg0_tile_info)
{
const u16 data = m_videoram[tile_index];
int code;
if (m_videoflags & 0x0400) code = (data & 0x0fff) | 0x2000;
else code = (data & 0x1fff);
tileinfo.set(0,
code,
((m_videoflags & 0x0010) >> 1) | ((data >> 13) & 7),
0);
}
TILE_GET_INFO_MEMBER(rpunch_state::get_bg1_tile_info)
{
const u16 data = m_videoram[0x1000 | tile_index];
int code;
if (m_videoflags & 0x0800) code = (data & 0x0fff) | 0x2000;
else code = (data & 0x1fff);
tileinfo.set(1,
code,
((m_videoflags & 0x0020) >> 2) | ((data >> 13) & 7),
0);
}
/*************************************
*
* Video system start
*
*************************************/
TIMER_CALLBACK_MEMBER(rpunch_state::crtc_interrupt_gen)
{
m_maincpu->set_input_line(1, HOLD_LINE);
if (param != 0)
m_crtc_timer->adjust(m_screen->frame_period() / param, 0, m_screen->frame_period() / param);
}
/*************************************
*
* Write handlers
*
*************************************/
u8 rpunch_state::pixmap_r(offs_t offset)
{
const int sy = offset >> 8;
const int sx = (offset & 0xff) << 1;
return ((m_pixmap->pix(sy & 0xff, sx & ~1) & 0xf) << 4) | (m_pixmap->pix(sy & 0xff, sx | 1) & 0xf);
}
void rpunch_state::pixmap_w(offs_t offset, u8 data)
{
const int sy = offset >> 8;
const int sx = (offset & 0xff) << 1;
m_pixmap->pix(sy & 0xff, sx & ~1) = ((data & 0xf0) >> 4);
m_pixmap->pix(sy & 0xff, sx | 1) = (data & 0x0f);
}
void rpunch_state::videoram_w(offs_t offset, u16 data, u16 mem_mask)
{
const int tmap = offset >> 12;
const int tile_index = offset & 0xfff;
COMBINE_DATA(&m_videoram[offset]);
m_background[tmap]->mark_tile_dirty(tile_index);
}
void rpunch_state::videoreg_w(offs_t offset, u16 data, u16 mem_mask)
{
const int oldword = m_videoflags;
COMBINE_DATA(&m_videoflags);
if (m_videoflags != oldword)
{
/* invalidate tilemaps */
if ((oldword ^ m_videoflags) & 0x0410)
m_background[0]->mark_all_dirty();
if ((oldword ^ m_videoflags) & 0x0820)
m_background[1]->mark_all_dirty();
}
}
void rpunch_state::scrollreg_w(offs_t offset, u16 data, u16 mem_mask)
{
if (ACCESSING_BITS_0_7 && ACCESSING_BITS_8_15)
switch (offset)
{
case 0:
m_background[0]->set_scrolly(0, data & 0x1ff);
break;
case 1:
m_background[0]->set_scrollx(0, data & 0x1ff);
break;
case 2:
m_background[1]->set_scrolly(0, data & 0x1ff);
break;
case 3:
m_background[1]->set_scrollx(0, data & 0x1ff);
break;
}
}
void rpunch_state::gga_w(offs_t offset, u8 data)
{
m_gga->write(offset >> 5, data & 0xff);
}
void rpunch_state::gga_data_w(offs_t offset, u8 data)
{
switch (offset)
{
/* only register we know about.... */
case 0x0b:
m_crtc_timer->adjust(m_screen->time_until_vblank_start(), (data == 0xc0) ? 2 : 1);
break;
default:
logerror("CRTC register %02X = %02X\n", offset, data);
break;
}
}
void rpunch_state::sprite_ctrl_w(offs_t offset, u8 data)
{
if (offset == 0)
{
m_sprite_num = data & 0x3f;
logerror("Number of sprites = %02X\n", data & 0x3f);
}
else
{
m_sprite_pri = data & 0x3f;
logerror("Sprite priority point = %02X\n", data & 0x3f);
}
}
/*************************************
*
* Sprite routines
*
*************************************/
void rpunch_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
{
/* draw the sprites */
int offs = m_sprite_num;
while (offs > 0)
{
offs--;
const u32 ram = offs << 2;
u32 pri = 0; // above everything except direct mapped bitmap
/* this seems like the most plausible explanation */
if (offs < m_sprite_pri)
pri |= GFX_PMASK_2; // behind foreground
const u16 data1 = m_spriteram[ram + 1];
const u32 code = data1 & 0x7ff;
const u16 data0 = m_spriteram[ram + 0];
const u16 data2 = m_spriteram[ram + 2];
int x = (data2 & 0x1ff) + 8;
int y = 513 - (data0 & 0x1ff);
const bool xflip = data1 & 0x1000;
const bool yflip = data1 & 0x0800;
const u32 color = ((data1 >> 13) & 7) | ((m_videoflags & 0x0040) >> 3);
if (x > cliprect.max_x) x -= 512;
if (y > cliprect.max_y) y -= 512;
m_gfxdecode->gfx(2)->prio_transpen(bitmap,cliprect,
code, color + (m_sprite_palette / 16), xflip, yflip, x + m_sprite_xoffs, y,
m_screen->priority(), pri, 15);
}
}
/*************************************
*
* Bitmap routines
*
*************************************/
void rpunch_state::draw_bitmap(bitmap_ind16 &bitmap, const rectangle &cliprect)
{
const u32 colourbase = 512 + ((m_videoflags & 0x000f) << 4);
for (int y = cliprect.min_y; y <= cliprect.max_y; y++)
{
u16 const *const src = &m_pixmap->pix(y & 0xff);
u16 *const dst = &bitmap.pix(y);
for(int x = cliprect.min_x / 4; x <= cliprect.max_x; x++)
{
const u16 pix = src[(x + 4) & 0x1ff];
if ((pix & 0xf) != 0xf)
dst[x] = colourbase + pix;
}
}
}
/*************************************
*
* Main screen refresh
*
*************************************/
u32 rpunch_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
screen.priority().fill(0, cliprect);
m_background[0]->draw(screen, bitmap, cliprect, 0,1);
m_background[1]->draw(screen, bitmap, cliprect, 0,2);
draw_sprites(bitmap, cliprect);
draw_bitmap(bitmap, cliprect);
return 0;
}
/************************************* /*************************************
* *
* Machine initialization * Machine initialization
@ -128,27 +476,35 @@
void rpunch_state::machine_start() void rpunch_state::machine_start()
{ {
m_videoflags = 0;
/* allocate tilemaps for the backgrounds */
m_background[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(rpunch_state::get_bg0_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64, 64);
m_background[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(rpunch_state::get_bg1_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64, 64);
/* configure the tilemaps */
m_background[1]->set_transparent_pen(15);
m_pixmap = std::make_unique<bitmap_ind16>(512, 256);
const rectangle pixmap_rect(0,511,0,255);
m_pixmap->fill(0xf, pixmap_rect);
/* reset the timer */
m_crtc_timer = timer_alloc(FUNC(rpunch_state::crtc_interrupt_gen), this);
save_item(NAME(m_upd_rom_bank)); save_item(NAME(m_upd_rom_bank));
save_item(NAME(m_sprite_xoffs));
save_item(NAME(m_videoflags)); save_item(NAME(m_videoflags));
save_item(NAME(m_sprite_pri)); save_item(NAME(m_sprite_pri));
save_item(NAME(m_sprite_num)); save_item(NAME(m_sprite_num));
save_item(NAME(*m_pixmap));
} }
void rpunch_state::machine_reset() void svolley_state::machine_start()
{ {
} rpunch_state::machine_start();
m_background[0]->set_scrolldx(8, 0); // aligns middle net sprite with bg as shown in reference
/*************************************
*
* Input ports
*
*************************************/
CUSTOM_INPUT_MEMBER(rpunch_state::hi_bits_r)
{
return ioport("SERVICE")->read();
} }
@ -213,7 +569,6 @@ void rpunch_state::svolley_map(address_map &map)
void rpunch_state::rpunch_map(address_map &map) void rpunch_state::rpunch_map(address_map &map)
{ {
svolley_map(map); svolley_map(map);
map.global_mask(0xfffff);
map(0x040000, 0x04ffff).rw(FUNC(rpunch_state::pixmap_r), FUNC(rpunch_state::pixmap_w)); // mirrored? map(0x040000, 0x04ffff).rw(FUNC(rpunch_state::pixmap_r), FUNC(rpunch_state::pixmap_w)); // mirrored?
} }
@ -481,6 +836,8 @@ void rpunch_state::rpunch(machine_config &config)
INPUT_MERGER_ANY_HIGH(config, "soundirq").output_handler().set_inputline(m_audiocpu, 0); INPUT_MERGER_ANY_HIGH(config, "soundirq").output_handler().set_inputline(m_audiocpu, 0);
/* video hardware */ /* video hardware */
set_sprite_palette(0x300);
SCREEN(config, m_screen, SCREEN_TYPE_RASTER); SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60); m_screen->set_refresh_hz(60);
m_screen->set_size(304, 224); m_screen->set_size(304, 224);
@ -494,8 +851,6 @@ void rpunch_state::rpunch(machine_config &config)
VSYSTEM_GGA(config, m_gga, VIDEO_CLOCK/2); // verified from rpunch schematics VSYSTEM_GGA(config, m_gga, VIDEO_CLOCK/2); // verified from rpunch schematics
m_gga->write_cb().set(FUNC(rpunch_state::gga_data_w)); m_gga->write_cb().set(FUNC(rpunch_state::gga_data_w));
MCFG_VIDEO_START_OVERRIDE(rpunch_state,rpunch)
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
@ -507,15 +862,21 @@ void rpunch_state::rpunch(machine_config &config)
UPD7759(config, m_upd7759).add_route(ALL_OUTPUTS, "mono", 0.50); UPD7759(config, m_upd7759).add_route(ALL_OUTPUTS, "mono", 0.50);
} }
void rpunch_state::svolley(machine_config &config)
// the main differences between Super Volleyball and Rabbit Punch are
// the lack of direct-mapped bitmap and a different palette base for sprites
void svolley_state::svolley(machine_config &config)
{ {
rpunch(config); rpunch(config);
m_maincpu->set_addrmap(AS_PROGRAM, &rpunch_state::svolley_map);
MCFG_VIDEO_START_OVERRIDE(rpunch_state,svolley) m_maincpu->set_addrmap(AS_PROGRAM, &svolley_state::svolley_map);
set_sprite_palette(0x080);
set_sprite_xoffs(-4); // aligns middle net sprite with bg as shown in reference
} }
// c+p of above for now, bootleg hw, things need verifying // FIXME: copy/paste of above for now, bootleg hardware, things need verifying
void rpunch_state::svolleybl(machine_config &config) void rpunch_state::svolleybl(machine_config &config)
{ {
/* basic machine hardware */ /* basic machine hardware */
@ -529,6 +890,8 @@ void rpunch_state::svolleybl(machine_config &config)
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0); m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0);
/* video hardware */ /* video hardware */
set_sprite_palette(0x080);
SCREEN(config, m_screen, SCREEN_TYPE_RASTER); SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60); m_screen->set_refresh_hz(60);
m_screen->set_size(304, 224); m_screen->set_size(304, 224);
@ -542,10 +905,7 @@ void rpunch_state::svolleybl(machine_config &config)
VSYSTEM_GGA(config, m_gga, VIDEO_CLOCK/2); VSYSTEM_GGA(config, m_gga, VIDEO_CLOCK/2);
m_gga->write_cb().set(FUNC(rpunch_state::gga_data_w)); m_gga->write_cb().set(FUNC(rpunch_state::gga_data_w));
MCFG_VIDEO_START_OVERRIDE(rpunch_state,rpunch)
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
ym2151_device &ymsnd(YM2151(config, "ymsnd", MASTER_CLOCK/4)); ym2151_device &ymsnd(YM2151(config, "ymsnd", MASTER_CLOCK/4));
@ -785,25 +1145,7 @@ ROM_START( svolleybl )
ROM_LOAD( "1-snd.bin", 0x10000, 0x08000, CRC(009d7157) SHA1(2cdda7094c7476289d75a78ee25b34fa3b3225c0) ) // matches 2.ic141 from spikes91, when halved ROM_LOAD( "1-snd.bin", 0x10000, 0x08000, CRC(009d7157) SHA1(2cdda7094c7476289d75a78ee25b34fa3b3225c0) ) // matches 2.ic141 from spikes91, when halved
ROM_END ROM_END
} // anonymous namespace
/*************************************
*
* Driver initialization
*
*************************************/
void rpunch_state::init_rabiolep()
{
m_sprite_palette = 0x300;
}
void rpunch_state::init_svolley()
{
/* the main differences between Super Volleyball and Rabbit Punch are */
/* the lack of direct-mapped bitmap and a different palette base for sprites */
m_sprite_palette = 0x080;
}
@ -813,12 +1155,13 @@ void rpunch_state::init_svolley()
* *
*************************************/ *************************************/
GAME( 1987, rabiolep, 0, rpunch, rabiolep, rpunch_state, init_rabiolep, ROT0, "V-System Co.", "Rabio Lepus (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) // year name parent machine input class init rot company description flags
GAME( 1987, rpunch, rabiolep, rpunch, rpunch, rpunch_state, init_rabiolep, ROT0, "V-System Co. (Bally/Midway/Sente license)", "Rabbit Punch (US)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) GAME( 1987, rabiolep, 0, rpunch, rabiolep, rpunch_state, empty_init, ROT0, "V-System Co.", "Rabio Lepus (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
GAME( 1989, svolley, 0, svolley, svolley, rpunch_state, init_svolley, ROT0, "V-System Co.", "Super Volleyball (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) GAME( 1987, rpunch, rabiolep, rpunch, rpunch, rpunch_state, empty_init, ROT0, "V-System Co. (Bally/Midway/Sente license)", "Rabbit Punch (US)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
GAME( 1989, svolleyk, svolley, svolley, svolley, rpunch_state, init_svolley, ROT0, "V-System Co.", "Super Volleyball (Korea)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) GAME( 1989, svolley, 0, svolley, svolley, svolley_state, empty_init, ROT0, "V-System Co.", "Super Volleyball (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
GAME( 1989, svolleyu, svolley, svolley, svolley, rpunch_state, init_svolley, ROT0, "V-System Co. (Data East license)", "Super Volleyball (US)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) GAME( 1989, svolleyk, svolley, svolley, svolley, svolley_state, empty_init, ROT0, "V-System Co.", "Super Volleyball (Korea)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
GAME( 1989, svolleyu, svolley, svolley, svolley, svolley_state, empty_init, ROT0, "V-System Co. (Data East license)", "Super Volleyball (US)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
// video registers are changed, and there's some kind of RAM at 090xxx, possible a different sprite scheme for the bootleg (even if the original is intact) // video registers are changed, and there's some kind of RAM at 090xxx, possible a different sprite scheme for the bootleg (even if the original is intact)
// the sound system seems to be ripped from the later Power Spikes (see aerofgt.cpp) // the sound system seems to be ripped from the later Power Spikes (see aerofgt.cpp)
GAME( 1991, svolleybl, svolley, svolleybl, svolley, rpunch_state, init_svolley, ROT0, "bootleg", "Super Volleyball (bootleg)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_NO_COCKTAIL ) // aka 1991 Spikes? GAME( 1991, svolleybl, svolley, svolleybl, svolley, rpunch_state, empty_init, ROT0, "bootleg", "Super Volleyball (bootleg)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_NO_COCKTAIL ) // aka 1991 Spikes?

View File

@ -27,13 +27,17 @@
#include "emu.h" #include "emu.h"
#include "includes/amiga.h" #include "includes/amiga.h"
#include "cpu/m68000/m68000.h" #include "cpu/m68000/m68000.h"
#include "machine/amigafdc.h"
#include "machine/i8255.h" #include "machine/i8255.h"
#include "machine/nvram.h" #include "machine/nvram.h"
#include "machine/amigafdc.h"
#include "speaker.h" #include "speaker.h"
namespace {
class upscope_state : public amiga_state class upscope_state : public amiga_state
{ {
public: public:
@ -373,6 +377,8 @@ void upscope_state::init_upscope()
subdevice<nvram_device>("nvram")->set_base(m_nvram, sizeof(m_nvram)); subdevice<nvram_device>("nvram")->set_base(m_nvram, sizeof(m_nvram));
} }
} // anonymous namespace
/************************************* /*************************************

View File

@ -1,96 +0,0 @@
// license:BSD-3-Clause
// copyright-holders:Aaron Giles
#ifndef MAME_INCLUDES_RPUNCH_H
#define MAME_INCLUDES_RPUNCH_H
#pragma once
#include "machine/gen_latch.h"
#include "sound/upd7759.h"
#include "video/vsystem_gga.h"
#include "emupal.h"
#include "screen.h"
#include "tilemap.h"
class rpunch_state : public driver_device
{
public:
rpunch_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_soundlatch(*this, "soundlatch"),
m_upd7759(*this, "upd"),
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_palette(*this, "palette"),
m_gga(*this, "gga"),
m_videoram(*this, "videoram"),
m_spriteram(*this, "spriteram")
{ }
void svolley(machine_config &config);
void rpunch(machine_config &config);
void svolleybl(machine_config &config);
void init_rabiolep();
void init_svolley();
DECLARE_CUSTOM_INPUT_MEMBER(hi_bits_r);
protected:
virtual void machine_start() override;
virtual void machine_reset() override;
private:
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<generic_latch_8_device> m_soundlatch;
optional_device<upd7759_device> m_upd7759;
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
required_device<vsystem_gga_device> m_gga;
required_shared_ptr<u16> m_videoram;
required_shared_ptr<u16> m_spriteram;
u8 m_upd_rom_bank = 0;
int m_sprite_palette = 0;
int m_sprite_xoffs = 0;
u16 m_videoflags = 0;
u8 m_sprite_pri = 0;
u8 m_sprite_num = 0;
tilemap_t *m_background[2]{};
std::unique_ptr<bitmap_ind16> m_pixmap;
emu_timer *m_crtc_timer = nullptr;
u16 sound_busy_r();
u8 pixmap_r(offs_t offset);
void pixmap_w(offs_t offset, u8 data);
void videoram_w(offs_t offset, u16 data, u16 mem_mask = ~0);
void videoreg_w(offs_t offset, u16 data, u16 mem_mask = ~0);
void scrollreg_w(offs_t offset, u16 data, u16 mem_mask = ~0);
void gga_w(offs_t offset, u8 data);
void gga_data_w(offs_t offset, u8 data);
void sprite_ctrl_w(offs_t offset, u8 data);
void upd_control_w(u8 data);
void upd_data_w(u8 data);
TILE_GET_INFO_MEMBER(get_bg0_tile_info);
TILE_GET_INFO_MEMBER(get_bg1_tile_info);
DECLARE_VIDEO_START(rpunch);
DECLARE_VIDEO_START(svolley);
u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(crtc_interrupt_gen);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_bitmap(bitmap_ind16 &bitmap, const rectangle &cliprect);
void sound_map(address_map &map);
void rpunch_map(address_map &map);
void svolley_map(address_map &map);
void svolleybl_main_map(address_map &map);
void svolleybl_sound_map(address_map &map);
};
#endif // MAME_INCLUDES_RPUNCH_H

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -2953,6 +2953,7 @@
<element ref="debug_backdrop_colour"> <element ref="debug_backdrop_colour">
<bounds x="0" y="0" width="1920" height="1080"/> <bounds x="0" y="0" width="1920" height="1080"/>
</element> </element>
<element name="lamp0" ref="debug_lamp_button" state="0"> <element name="lamp0" ref="debug_lamp_button" state="0">
<bounds x="32" y="32" width="60" height="60"/> <bounds x="32" y="32" width="60" height="60"/>
</element> </element>
@ -3737,435 +3738,216 @@
<element name="debug_button_0" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x01"> <element name="debug_button_0" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x01">
<bounds x="1100" y="660" width="80" height="44"/> <bounds x="1100" y="660" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_0" ref="debug_button_label_0">
<bounds x="1120" y="671" width="40" height="22"/>
</element>
<element name="debug_button_1" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x02"> <element name="debug_button_1" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x02">
<bounds x="1184" y="660" width="80" height="44"/> <bounds x="1184" y="660" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_1" ref="debug_button_label_1">
<bounds x="1204" y="671" width="40" height="22"/>
</element>
<element name="debug_button_2" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x04"> <element name="debug_button_2" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x04">
<bounds x="1268" y="660" width="80" height="44"/> <bounds x="1268" y="660" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_2" ref="debug_button_label_2">
<bounds x="1288" y="671" width="40" height="22"/>
</element>
<element name="debug_button_3" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x08"> <element name="debug_button_3" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x08">
<bounds x="1352" y="660" width="80" height="44"/> <bounds x="1352" y="660" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_3" ref="debug_button_label_3">
<bounds x="1372" y="671" width="40" height="22"/>
</element>
<element name="debug_button_4" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x10"> <element name="debug_button_4" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x10">
<bounds x="1436" y="660" width="80" height="44"/> <bounds x="1436" y="660" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_4" ref="debug_button_label_4">
<bounds x="1456" y="671" width="40" height="22"/>
</element>
<element name="debug_button_5" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x20"> <element name="debug_button_5" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x20">
<bounds x="1520" y="660" width="80" height="44"/> <bounds x="1520" y="660" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_5" ref="debug_button_label_5">
<bounds x="1540" y="671" width="40" height="22"/>
</element>
<element name="debug_button_6" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x40"> <element name="debug_button_6" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x40">
<bounds x="1604" y="660" width="80" height="44"/> <bounds x="1604" y="660" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_6" ref="debug_button_label_6">
<bounds x="1624" y="671" width="40" height="22"/>
</element>
<element name="debug_button_7" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x80"> <element name="debug_button_7" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x80">
<bounds x="1688" y="660" width="80" height="44"/> <bounds x="1688" y="660" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_7" ref="debug_button_label_7">
<bounds x="1708" y="671" width="40" height="22"/>
</element>
<element name="lamp0" ref="debug_button_standard" state="0" inputtag="IN-1" inputmask="0x01"> <element name="lamp0" ref="debug_button_standard" state="0" inputtag="IN-1" inputmask="0x01">
<bounds x="1100" y="708" width="80" height="44"/> <bounds x="1100" y="708" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_8" ref="debug_button_label_8">
<bounds x="1120" y="719" width="40" height="22"/>
</element>
<element name="lamp1" ref="debug_button_standard" state="0" inputtag="IN-1" inputmask="0x02"> <element name="lamp1" ref="debug_button_standard" state="0" inputtag="IN-1" inputmask="0x02">
<bounds x="1184" y="708" width="80" height="44"/> <bounds x="1184" y="708" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_9" ref="debug_button_label_9">
<bounds x="1204" y="719" width="40" height="22"/>
</element>
<element name="lamp2" ref="debug_button_standard" state="0" inputtag="IN-1" inputmask="0x04"> <element name="lamp2" ref="debug_button_standard" state="0" inputtag="IN-1" inputmask="0x04">
<bounds x="1268" y="708" width="80" height="44"/> <bounds x="1268" y="708" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_10" ref="debug_button_label_10">
<bounds x="1288" y="719" width="40" height="22"/>
</element>
<element name="lamp3" ref="debug_button_standard" state="0" inputtag="IN-1" inputmask="0x08"> <element name="lamp3" ref="debug_button_standard" state="0" inputtag="IN-1" inputmask="0x08">
<bounds x="1352" y="708" width="80" height="44"/> <bounds x="1352" y="708" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_11" ref="debug_button_label_11">
<bounds x="1372" y="719" width="40" height="22"/>
</element>
<element name="lamp4" ref="debug_button_standard" state="0" inputtag="IN-1" inputmask="0x10"> <element name="lamp4" ref="debug_button_standard" state="0" inputtag="IN-1" inputmask="0x10">
<bounds x="1436" y="708" width="80" height="44"/> <bounds x="1436" y="708" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_12" ref="debug_button_label_12">
<bounds x="1456" y="719" width="40" height="22"/>
</element>
<element name="debug_button_13" ref="debug_button_unreferenced" state="0" inputtag="IN-1" inputmask="0x20"> <element name="debug_button_13" ref="debug_button_unreferenced" state="0" inputtag="IN-1" inputmask="0x20">
<bounds x="1520" y="708" width="80" height="44"/> <bounds x="1520" y="708" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_13" ref="debug_button_label_13">
<bounds x="1540" y="719" width="40" height="22"/>
</element>
<element name="debug_button_14" ref="debug_button_unreferenced" state="0" inputtag="IN-1" inputmask="0x40"> <element name="debug_button_14" ref="debug_button_unreferenced" state="0" inputtag="IN-1" inputmask="0x40">
<bounds x="1604" y="708" width="80" height="44"/> <bounds x="1604" y="708" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_14" ref="debug_button_label_14">
<bounds x="1624" y="719" width="40" height="22"/>
</element>
<element name="debug_button_15" ref="debug_button_standard" state="0" inputtag="IN-1" inputmask="0x80"> <element name="debug_button_15" ref="debug_button_standard" state="0" inputtag="IN-1" inputmask="0x80">
<bounds x="1688" y="708" width="80" height="44"/> <bounds x="1688" y="708" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_15" ref="debug_button_label_15">
<bounds x="1708" y="719" width="40" height="22"/>
</element>
<element name="lamp5" ref="debug_button_standard" state="0" inputtag="IN-2" inputmask="0x01"> <element name="lamp5" ref="debug_button_standard" state="0" inputtag="IN-2" inputmask="0x01">
<bounds x="1100" y="756" width="80" height="44"/> <bounds x="1100" y="756" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_16" ref="debug_button_label_16">
<bounds x="1120" y="767" width="40" height="22"/>
</element>
<element name="debug_button_17" ref="debug_button_unreferenced" state="0" inputtag="IN-2" inputmask="0x02"> <element name="debug_button_17" ref="debug_button_unreferenced" state="0" inputtag="IN-2" inputmask="0x02">
<bounds x="1184" y="756" width="80" height="44"/> <bounds x="1184" y="756" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_17" ref="debug_button_label_17">
<bounds x="1204" y="767" width="40" height="22"/>
</element>
<element name="lamp7" ref="debug_button_standard" state="0" inputtag="IN-2" inputmask="0x04"> <element name="lamp7" ref="debug_button_standard" state="0" inputtag="IN-2" inputmask="0x04">
<bounds x="1268" y="756" width="80" height="44"/> <bounds x="1268" y="756" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_18" ref="debug_button_label_18">
<bounds x="1288" y="767" width="40" height="22"/>
</element>
<element name="debug_button_19" ref="debug_button_unreferenced" state="0" inputtag="IN-2" inputmask="0x08"> <element name="debug_button_19" ref="debug_button_unreferenced" state="0" inputtag="IN-2" inputmask="0x08">
<bounds x="1352" y="756" width="80" height="44"/> <bounds x="1352" y="756" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_19" ref="debug_button_label_19">
<bounds x="1372" y="767" width="40" height="22"/>
</element>
<element name="debug_button_20" ref="debug_button_unreferenced" state="0" inputtag="IN-2" inputmask="0x10"> <element name="debug_button_20" ref="debug_button_unreferenced" state="0" inputtag="IN-2" inputmask="0x10">
<bounds x="1436" y="756" width="80" height="44"/> <bounds x="1436" y="756" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_20" ref="debug_button_label_20">
<bounds x="1456" y="767" width="40" height="22"/>
</element>
<element name="debug_button_21" ref="debug_button_unreferenced" state="0" inputtag="IN-2" inputmask="0x20"> <element name="debug_button_21" ref="debug_button_unreferenced" state="0" inputtag="IN-2" inputmask="0x20">
<bounds x="1520" y="756" width="80" height="44"/> <bounds x="1520" y="756" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_21" ref="debug_button_label_21">
<bounds x="1540" y="767" width="40" height="22"/>
</element>
<element name="debug_button_22" ref="debug_button_unreferenced" state="0" inputtag="IN-2" inputmask="0x40"> <element name="debug_button_22" ref="debug_button_unreferenced" state="0" inputtag="IN-2" inputmask="0x40">
<bounds x="1604" y="756" width="80" height="44"/> <bounds x="1604" y="756" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_22" ref="debug_button_label_22">
<bounds x="1624" y="767" width="40" height="22"/>
</element>
<element name="debug_button_23" ref="debug_button_unreferenced" state="0" inputtag="IN-2" inputmask="0x80"> <element name="debug_button_23" ref="debug_button_unreferenced" state="0" inputtag="IN-2" inputmask="0x80">
<bounds x="1688" y="756" width="80" height="44"/> <bounds x="1688" y="756" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_23" ref="debug_button_label_23">
<bounds x="1708" y="767" width="40" height="22"/>
</element>
<element name="debug_button_24" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x01"> <element name="debug_button_24" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x01">
<bounds x="1100" y="804" width="80" height="44"/> <bounds x="1100" y="804" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_24" ref="debug_button_label_24">
<bounds x="1120" y="815" width="40" height="22"/>
</element>
<element name="debug_button_25" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x02"> <element name="debug_button_25" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x02">
<bounds x="1184" y="804" width="80" height="44"/> <bounds x="1184" y="804" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_25" ref="debug_button_label_25">
<bounds x="1204" y="815" width="40" height="22"/>
</element>
<element name="debug_button_26" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x04"> <element name="debug_button_26" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x04">
<bounds x="1268" y="804" width="80" height="44"/> <bounds x="1268" y="804" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_26" ref="debug_button_label_26">
<bounds x="1288" y="815" width="40" height="22"/>
</element>
<element name="debug_button_27" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x08"> <element name="debug_button_27" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x08">
<bounds x="1352" y="804" width="80" height="44"/> <bounds x="1352" y="804" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_27" ref="debug_button_label_27">
<bounds x="1372" y="815" width="40" height="22"/>
</element>
<element name="debug_button_28" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x10"> <element name="debug_button_28" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x10">
<bounds x="1436" y="804" width="80" height="44"/> <bounds x="1436" y="804" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_28" ref="debug_button_label_28">
<bounds x="1456" y="815" width="40" height="22"/>
</element>
<element name="debug_button_29" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x20"> <element name="debug_button_29" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x20">
<bounds x="1520" y="804" width="80" height="44"/> <bounds x="1520" y="804" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_29" ref="debug_button_label_29">
<bounds x="1540" y="815" width="40" height="22"/>
</element>
<element name="debug_button_30" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x40"> <element name="debug_button_30" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x40">
<bounds x="1604" y="804" width="80" height="44"/> <bounds x="1604" y="804" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_30" ref="debug_button_label_30">
<bounds x="1624" y="815" width="40" height="22"/>
</element>
<element name="debug_button_31" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x80"> <element name="debug_button_31" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x80">
<bounds x="1688" y="804" width="80" height="44"/> <bounds x="1688" y="804" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_31" ref="debug_button_label_31">
<bounds x="1708" y="815" width="40" height="22"/>
</element>
<element name="debug_button_32" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x01"> <element name="debug_button_32" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x01">
<bounds x="1100" y="852" width="80" height="44"/> <bounds x="1100" y="852" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_32" ref="debug_button_label_32">
<bounds x="1120" y="863" width="40" height="22"/>
</element>
<element name="debug_button_33" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x02"> <element name="debug_button_33" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x02">
<bounds x="1184" y="852" width="80" height="44"/> <bounds x="1184" y="852" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_33" ref="debug_button_label_33">
<bounds x="1204" y="863" width="40" height="22"/>
</element>
<element name="debug_button_34" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x04"> <element name="debug_button_34" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x04">
<bounds x="1268" y="852" width="80" height="44"/> <bounds x="1268" y="852" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_34" ref="debug_button_label_34">
<bounds x="1288" y="863" width="40" height="22"/>
</element>
<element name="debug_button_35" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x08"> <element name="debug_button_35" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x08">
<bounds x="1352" y="852" width="80" height="44"/> <bounds x="1352" y="852" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_35" ref="debug_button_label_35">
<bounds x="1372" y="863" width="40" height="22"/>
</element>
<element name="debug_button_36" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x10"> <element name="debug_button_36" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x10">
<bounds x="1436" y="852" width="80" height="44"/> <bounds x="1436" y="852" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_36" ref="debug_button_label_36">
<bounds x="1456" y="863" width="40" height="22"/>
</element>
<element name="debug_button_37" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x20"> <element name="debug_button_37" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x20">
<bounds x="1520" y="852" width="80" height="44"/> <bounds x="1520" y="852" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_37" ref="debug_button_label_37">
<bounds x="1540" y="863" width="40" height="22"/>
</element>
<element name="debug_button_38" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x40"> <element name="debug_button_38" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x40">
<bounds x="1604" y="852" width="80" height="44"/> <bounds x="1604" y="852" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_38" ref="debug_button_label_38">
<bounds x="1624" y="863" width="40" height="22"/>
</element>
<element name="debug_button_39" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x80"> <element name="debug_button_39" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x80">
<bounds x="1688" y="852" width="80" height="44"/> <bounds x="1688" y="852" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_39" ref="debug_button_label_39">
<bounds x="1708" y="863" width="40" height="22"/>
</element>
<element name="debug_button_40" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x01"> <element name="debug_button_40" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x01">
<bounds x="1100" y="900" width="80" height="44"/> <bounds x="1100" y="900" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_40" ref="debug_button_label_40">
<bounds x="1120" y="911" width="40" height="22"/>
</element>
<element name="debug_button_41" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x02"> <element name="debug_button_41" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x02">
<bounds x="1184" y="900" width="80" height="44"/> <bounds x="1184" y="900" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_41" ref="debug_button_label_41">
<bounds x="1204" y="911" width="40" height="22"/>
</element>
<element name="debug_button_42" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x04"> <element name="debug_button_42" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x04">
<bounds x="1268" y="900" width="80" height="44"/> <bounds x="1268" y="900" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_42" ref="debug_button_label_42">
<bounds x="1288" y="911" width="40" height="22"/>
</element>
<element name="debug_button_43" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x08"> <element name="debug_button_43" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x08">
<bounds x="1352" y="900" width="80" height="44"/> <bounds x="1352" y="900" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_43" ref="debug_button_label_43">
<bounds x="1372" y="911" width="40" height="22"/>
</element>
<element name="debug_button_44" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x10"> <element name="debug_button_44" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x10">
<bounds x="1436" y="900" width="80" height="44"/> <bounds x="1436" y="900" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_44" ref="debug_button_label_44">
<bounds x="1456" y="911" width="40" height="22"/>
</element>
<element name="debug_button_45" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x20"> <element name="debug_button_45" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x20">
<bounds x="1520" y="900" width="80" height="44"/> <bounds x="1520" y="900" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_45" ref="debug_button_label_45">
<bounds x="1540" y="911" width="40" height="22"/>
</element>
<element name="debug_button_46" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x40"> <element name="debug_button_46" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x40">
<bounds x="1604" y="900" width="80" height="44"/> <bounds x="1604" y="900" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_46" ref="debug_button_label_46">
<bounds x="1624" y="911" width="40" height="22"/>
</element>
<element name="debug_button_47" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x80"> <element name="debug_button_47" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x80">
<bounds x="1688" y="900" width="80" height="44"/> <bounds x="1688" y="900" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_47" ref="debug_button_label_47">
<bounds x="1708" y="911" width="40" height="22"/>
</element>
<element name="debug_button_48" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x01"> <element name="debug_button_48" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x01">
<bounds x="1100" y="948" width="80" height="44"/> <bounds x="1100" y="948" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_48" ref="debug_button_label_48">
<bounds x="1120" y="959" width="40" height="22"/>
</element>
<element name="debug_button_49" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x02"> <element name="debug_button_49" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x02">
<bounds x="1184" y="948" width="80" height="44"/> <bounds x="1184" y="948" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_49" ref="debug_button_label_49">
<bounds x="1204" y="959" width="40" height="22"/>
</element>
<element name="debug_button_50" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x04"> <element name="debug_button_50" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x04">
<bounds x="1268" y="948" width="80" height="44"/> <bounds x="1268" y="948" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_50" ref="debug_button_label_50">
<bounds x="1288" y="959" width="40" height="22"/>
</element>
<element name="debug_button_51" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x08"> <element name="debug_button_51" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x08">
<bounds x="1352" y="948" width="80" height="44"/> <bounds x="1352" y="948" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_51" ref="debug_button_label_51">
<bounds x="1372" y="959" width="40" height="22"/>
</element>
<element name="debug_button_52" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x10"> <element name="debug_button_52" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x10">
<bounds x="1436" y="948" width="80" height="44"/> <bounds x="1436" y="948" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_52" ref="debug_button_label_52">
<bounds x="1456" y="959" width="40" height="22"/>
</element>
<element name="debug_button_53" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x20"> <element name="debug_button_53" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x20">
<bounds x="1520" y="948" width="80" height="44"/> <bounds x="1520" y="948" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_53" ref="debug_button_label_53">
<bounds x="1540" y="959" width="40" height="22"/>
</element>
<element name="debug_button_54" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x40"> <element name="debug_button_54" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x40">
<bounds x="1604" y="948" width="80" height="44"/> <bounds x="1604" y="948" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_54" ref="debug_button_label_54">
<bounds x="1624" y="959" width="40" height="22"/>
</element>
<element name="debug_button_55" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x80"> <element name="debug_button_55" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x80">
<bounds x="1688" y="948" width="80" height="44"/> <bounds x="1688" y="948" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_55" ref="debug_button_label_55">
<bounds x="1708" y="959" width="40" height="22"/>
</element>
<element name="debug_button_56" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x01"> <element name="debug_button_56" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x01">
<bounds x="1100" y="996" width="80" height="44"/> <bounds x="1100" y="996" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_56" ref="debug_button_label_56">
<bounds x="1120" y="1007" width="40" height="22"/>
</element>
<element name="debug_button_57" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x02"> <element name="debug_button_57" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x02">
<bounds x="1184" y="996" width="80" height="44"/> <bounds x="1184" y="996" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_57" ref="debug_button_label_57">
<bounds x="1204" y="1007" width="40" height="22"/>
</element>
<element name="debug_button_58" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x04"> <element name="debug_button_58" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x04">
<bounds x="1268" y="996" width="80" height="44"/> <bounds x="1268" y="996" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_58" ref="debug_button_label_58">
<bounds x="1288" y="1007" width="40" height="22"/>
</element>
<element name="debug_button_59" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x08"> <element name="debug_button_59" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x08">
<bounds x="1352" y="996" width="80" height="44"/> <bounds x="1352" y="996" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_59" ref="debug_button_label_59">
<bounds x="1372" y="1007" width="40" height="22"/>
</element>
<element name="debug_button_60" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x10"> <element name="debug_button_60" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x10">
<bounds x="1436" y="996" width="80" height="44"/> <bounds x="1436" y="996" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_60" ref="debug_button_label_60">
<bounds x="1456" y="1007" width="40" height="22"/>
</element>
<element name="debug_button_61" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x20"> <element name="debug_button_61" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x20">
<bounds x="1520" y="996" width="80" height="44"/> <bounds x="1520" y="996" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_61" ref="debug_button_label_61">
<bounds x="1540" y="1007" width="40" height="22"/>
</element>
<element name="debug_button_62" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x40"> <element name="debug_button_62" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x40">
<bounds x="1604" y="996" width="80" height="44"/> <bounds x="1604" y="996" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_62" ref="debug_button_label_62">
<bounds x="1624" y="1007" width="40" height="22"/>
</element>
<element name="debug_button_63" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x80"> <element name="debug_button_63" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x80">
<bounds x="1688" y="996" width="80" height="44"/> <bounds x="1688" y="996" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_63" ref="debug_button_label_63">
<bounds x="1708" y="1007" width="40" height="22"/> <repeat count="8">
<param name="s" start="0" increment="8" />
<param name="y" start="671" increment="48" />
<repeat count="8">
<param name="n" start="~s~" increment="1" />
<param name="x" start="1120" increment="84" />
<element name="debug_button_label_~n~" ref="debug_button_label_~n~">
<bounds x="~x~" y="~y~" width="40" height="22"/>
</element> </element>
<element name="vfd0" ref="debug_vfd" state="0"> </repeat>
<bounds x="1150" y="600" width="32" height="48"/> </repeat>
</element>
<element name="vfd1" ref="debug_vfd" state="0"> <repeat count="16">
<bounds x="1182" y="600" width="32" height="48"/> <param name="n" start="0" increment="1" />
</element> <param name="x" start="1150" increment="32" />
<element name="vfd2" ref="debug_vfd" state="0"> <element name="vfd~n~" ref="debug_vfd" state="0">
<bounds x="1214" y="600" width="32" height="48"/> <bounds x="~x~" y="600" width="32" height="48"/>
</element>
<element name="vfd3" ref="debug_vfd" state="0">
<bounds x="1246" y="600" width="32" height="48"/>
</element>
<element name="vfd4" ref="debug_vfd" state="0">
<bounds x="1278" y="600" width="32" height="48"/>
</element>
<element name="vfd5" ref="debug_vfd" state="0">
<bounds x="1310" y="600" width="32" height="48"/>
</element>
<element name="vfd6" ref="debug_vfd" state="0">
<bounds x="1342" y="600" width="32" height="48"/>
</element>
<element name="vfd7" ref="debug_vfd" state="0">
<bounds x="1374" y="600" width="32" height="48"/>
</element>
<element name="vfd8" ref="debug_vfd" state="0">
<bounds x="1406" y="600" width="32" height="48"/>
</element>
<element name="vfd9" ref="debug_vfd" state="0">
<bounds x="1438" y="600" width="32" height="48"/>
</element>
<element name="vfd10" ref="debug_vfd" state="0">
<bounds x="1470" y="600" width="32" height="48"/>
</element>
<element name="vfd11" ref="debug_vfd" state="0">
<bounds x="1502" y="600" width="32" height="48"/>
</element>
<element name="vfd12" ref="debug_vfd" state="0">
<bounds x="1534" y="600" width="32" height="48"/>
</element>
<element name="vfd13" ref="debug_vfd" state="0">
<bounds x="1566" y="600" width="32" height="48"/>
</element>
<element name="vfd14" ref="debug_vfd" state="0">
<bounds x="1598" y="600" width="32" height="48"/>
</element>
<element name="vfd15" ref="debug_vfd" state="0">
<bounds x="1630" y="600" width="32" height="48"/>
</element> </element>
</repeat>
<element ref="reel_background"> <element ref="reel_background">
<bounds x="1100" y="32" width="120" height="240"/> <bounds x="1100" y="32" width="120" height="240"/>
</element> </element>

View File

@ -4139,6 +4139,7 @@
<element ref="debug_backdrop_colour"> <element ref="debug_backdrop_colour">
<bounds x="0" y="0" width="1920" height="1080"/> <bounds x="0" y="0" width="1920" height="1080"/>
</element> </element>
<element name="lamp0" ref="debug_lamp_button" state="0"> <element name="lamp0" ref="debug_lamp_button" state="0">
<bounds x="32" y="32" width="60" height="60"/> <bounds x="32" y="32" width="60" height="60"/>
</element> </element>
@ -4923,435 +4924,216 @@
<element name="debug_button_0" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x01"> <element name="debug_button_0" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x01">
<bounds x="1100" y="660" width="80" height="44"/> <bounds x="1100" y="660" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_0" ref="debug_button_label_0">
<bounds x="1120" y="671" width="40" height="22"/>
</element>
<element name="debug_button_1" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x02"> <element name="debug_button_1" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x02">
<bounds x="1184" y="660" width="80" height="44"/> <bounds x="1184" y="660" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_1" ref="debug_button_label_1">
<bounds x="1204" y="671" width="40" height="22"/>
</element>
<element name="debug_button_2" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x04"> <element name="debug_button_2" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x04">
<bounds x="1268" y="660" width="80" height="44"/> <bounds x="1268" y="660" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_2" ref="debug_button_label_2">
<bounds x="1288" y="671" width="40" height="22"/>
</element>
<element name="debug_button_3" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x08"> <element name="debug_button_3" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x08">
<bounds x="1352" y="660" width="80" height="44"/> <bounds x="1352" y="660" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_3" ref="debug_button_label_3">
<bounds x="1372" y="671" width="40" height="22"/>
</element>
<element name="debug_button_4" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x10"> <element name="debug_button_4" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x10">
<bounds x="1436" y="660" width="80" height="44"/> <bounds x="1436" y="660" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_4" ref="debug_button_label_4">
<bounds x="1456" y="671" width="40" height="22"/>
</element>
<element name="debug_button_5" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x20"> <element name="debug_button_5" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x20">
<bounds x="1520" y="660" width="80" height="44"/> <bounds x="1520" y="660" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_5" ref="debug_button_label_5">
<bounds x="1540" y="671" width="40" height="22"/>
</element>
<element name="debug_button_6" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x40"> <element name="debug_button_6" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x40">
<bounds x="1604" y="660" width="80" height="44"/> <bounds x="1604" y="660" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_6" ref="debug_button_label_6">
<bounds x="1624" y="671" width="40" height="22"/>
</element>
<element name="debug_button_7" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x80"> <element name="debug_button_7" ref="debug_button_unreferenced" state="0" inputtag="IN-0" inputmask="0x80">
<bounds x="1688" y="660" width="80" height="44"/> <bounds x="1688" y="660" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_7" ref="debug_button_label_7">
<bounds x="1708" y="671" width="40" height="22"/>
</element>
<element name="lamp0" ref="debug_button_standard" state="0" inputtag="IN-1" inputmask="0x01"> <element name="lamp0" ref="debug_button_standard" state="0" inputtag="IN-1" inputmask="0x01">
<bounds x="1100" y="708" width="80" height="44"/> <bounds x="1100" y="708" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_8" ref="debug_button_label_8">
<bounds x="1120" y="719" width="40" height="22"/>
</element>
<element name="lamp1" ref="debug_button_standard" state="0" inputtag="IN-1" inputmask="0x02"> <element name="lamp1" ref="debug_button_standard" state="0" inputtag="IN-1" inputmask="0x02">
<bounds x="1184" y="708" width="80" height="44"/> <bounds x="1184" y="708" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_9" ref="debug_button_label_9">
<bounds x="1204" y="719" width="40" height="22"/>
</element>
<element name="lamp2" ref="debug_button_standard" state="0" inputtag="IN-1" inputmask="0x04"> <element name="lamp2" ref="debug_button_standard" state="0" inputtag="IN-1" inputmask="0x04">
<bounds x="1268" y="708" width="80" height="44"/> <bounds x="1268" y="708" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_10" ref="debug_button_label_10">
<bounds x="1288" y="719" width="40" height="22"/>
</element>
<element name="lamp3" ref="debug_button_standard" state="0" inputtag="IN-1" inputmask="0x08"> <element name="lamp3" ref="debug_button_standard" state="0" inputtag="IN-1" inputmask="0x08">
<bounds x="1352" y="708" width="80" height="44"/> <bounds x="1352" y="708" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_11" ref="debug_button_label_11">
<bounds x="1372" y="719" width="40" height="22"/>
</element>
<element name="lamp4" ref="debug_button_standard" state="0" inputtag="IN-1" inputmask="0x10"> <element name="lamp4" ref="debug_button_standard" state="0" inputtag="IN-1" inputmask="0x10">
<bounds x="1436" y="708" width="80" height="44"/> <bounds x="1436" y="708" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_12" ref="debug_button_label_12">
<bounds x="1456" y="719" width="40" height="22"/>
</element>
<element name="debug_button_13" ref="debug_button_unreferenced" state="0" inputtag="IN-1" inputmask="0x20"> <element name="debug_button_13" ref="debug_button_unreferenced" state="0" inputtag="IN-1" inputmask="0x20">
<bounds x="1520" y="708" width="80" height="44"/> <bounds x="1520" y="708" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_13" ref="debug_button_label_13">
<bounds x="1540" y="719" width="40" height="22"/>
</element>
<element name="debug_button_14" ref="debug_button_unreferenced" state="0" inputtag="IN-1" inputmask="0x40"> <element name="debug_button_14" ref="debug_button_unreferenced" state="0" inputtag="IN-1" inputmask="0x40">
<bounds x="1604" y="708" width="80" height="44"/> <bounds x="1604" y="708" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_14" ref="debug_button_label_14">
<bounds x="1624" y="719" width="40" height="22"/>
</element>
<element name="debug_button_15" ref="debug_button_standard" state="0" inputtag="IN-1" inputmask="0x80"> <element name="debug_button_15" ref="debug_button_standard" state="0" inputtag="IN-1" inputmask="0x80">
<bounds x="1688" y="708" width="80" height="44"/> <bounds x="1688" y="708" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_15" ref="debug_button_label_15">
<bounds x="1708" y="719" width="40" height="22"/>
</element>
<element name="lamp5" ref="debug_button_standard" state="0" inputtag="IN-2" inputmask="0x01"> <element name="lamp5" ref="debug_button_standard" state="0" inputtag="IN-2" inputmask="0x01">
<bounds x="1100" y="756" width="80" height="44"/> <bounds x="1100" y="756" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_16" ref="debug_button_label_16">
<bounds x="1120" y="767" width="40" height="22"/>
</element>
<element name="lamp6" ref="debug_button_standard" state="0" inputtag="IN-2" inputmask="0x02"> <element name="lamp6" ref="debug_button_standard" state="0" inputtag="IN-2" inputmask="0x02">
<bounds x="1184" y="756" width="80" height="44"/> <bounds x="1184" y="756" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_17" ref="debug_button_label_17">
<bounds x="1204" y="767" width="40" height="22"/>
</element>
<element name="lamp7" ref="debug_button_standard" state="0" inputtag="IN-2" inputmask="0x04"> <element name="lamp7" ref="debug_button_standard" state="0" inputtag="IN-2" inputmask="0x04">
<bounds x="1268" y="756" width="80" height="44"/> <bounds x="1268" y="756" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_18" ref="debug_button_label_18">
<bounds x="1288" y="767" width="40" height="22"/>
</element>
<element name="debug_button_19" ref="debug_button_unreferenced" state="0" inputtag="IN-2" inputmask="0x08"> <element name="debug_button_19" ref="debug_button_unreferenced" state="0" inputtag="IN-2" inputmask="0x08">
<bounds x="1352" y="756" width="80" height="44"/> <bounds x="1352" y="756" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_19" ref="debug_button_label_19">
<bounds x="1372" y="767" width="40" height="22"/>
</element>
<element name="debug_button_20" ref="debug_button_unreferenced" state="0" inputtag="IN-2" inputmask="0x10"> <element name="debug_button_20" ref="debug_button_unreferenced" state="0" inputtag="IN-2" inputmask="0x10">
<bounds x="1436" y="756" width="80" height="44"/> <bounds x="1436" y="756" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_20" ref="debug_button_label_20">
<bounds x="1456" y="767" width="40" height="22"/>
</element>
<element name="debug_button_21" ref="debug_button_unreferenced" state="0" inputtag="IN-2" inputmask="0x20"> <element name="debug_button_21" ref="debug_button_unreferenced" state="0" inputtag="IN-2" inputmask="0x20">
<bounds x="1520" y="756" width="80" height="44"/> <bounds x="1520" y="756" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_21" ref="debug_button_label_21">
<bounds x="1540" y="767" width="40" height="22"/>
</element>
<element name="debug_button_22" ref="debug_button_unreferenced" state="0" inputtag="IN-2" inputmask="0x40"> <element name="debug_button_22" ref="debug_button_unreferenced" state="0" inputtag="IN-2" inputmask="0x40">
<bounds x="1604" y="756" width="80" height="44"/> <bounds x="1604" y="756" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_22" ref="debug_button_label_22">
<bounds x="1624" y="767" width="40" height="22"/>
</element>
<element name="debug_button_23" ref="debug_button_unreferenced" state="0" inputtag="IN-2" inputmask="0x80"> <element name="debug_button_23" ref="debug_button_unreferenced" state="0" inputtag="IN-2" inputmask="0x80">
<bounds x="1688" y="756" width="80" height="44"/> <bounds x="1688" y="756" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_23" ref="debug_button_label_23">
<bounds x="1708" y="767" width="40" height="22"/>
</element>
<element name="debug_button_24" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x01"> <element name="debug_button_24" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x01">
<bounds x="1100" y="804" width="80" height="44"/> <bounds x="1100" y="804" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_24" ref="debug_button_label_24">
<bounds x="1120" y="815" width="40" height="22"/>
</element>
<element name="debug_button_25" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x02"> <element name="debug_button_25" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x02">
<bounds x="1184" y="804" width="80" height="44"/> <bounds x="1184" y="804" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_25" ref="debug_button_label_25">
<bounds x="1204" y="815" width="40" height="22"/>
</element>
<element name="debug_button_26" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x04"> <element name="debug_button_26" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x04">
<bounds x="1268" y="804" width="80" height="44"/> <bounds x="1268" y="804" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_26" ref="debug_button_label_26">
<bounds x="1288" y="815" width="40" height="22"/>
</element>
<element name="debug_button_27" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x08"> <element name="debug_button_27" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x08">
<bounds x="1352" y="804" width="80" height="44"/> <bounds x="1352" y="804" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_27" ref="debug_button_label_27">
<bounds x="1372" y="815" width="40" height="22"/>
</element>
<element name="debug_button_28" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x10"> <element name="debug_button_28" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x10">
<bounds x="1436" y="804" width="80" height="44"/> <bounds x="1436" y="804" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_28" ref="debug_button_label_28">
<bounds x="1456" y="815" width="40" height="22"/>
</element>
<element name="debug_button_29" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x20"> <element name="debug_button_29" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x20">
<bounds x="1520" y="804" width="80" height="44"/> <bounds x="1520" y="804" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_29" ref="debug_button_label_29">
<bounds x="1540" y="815" width="40" height="22"/>
</element>
<element name="debug_button_30" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x40"> <element name="debug_button_30" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x40">
<bounds x="1604" y="804" width="80" height="44"/> <bounds x="1604" y="804" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_30" ref="debug_button_label_30">
<bounds x="1624" y="815" width="40" height="22"/>
</element>
<element name="debug_button_31" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x80"> <element name="debug_button_31" ref="debug_button_unreferenced" state="0" inputtag="IN-3" inputmask="0x80">
<bounds x="1688" y="804" width="80" height="44"/> <bounds x="1688" y="804" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_31" ref="debug_button_label_31">
<bounds x="1708" y="815" width="40" height="22"/>
</element>
<element name="debug_button_32" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x01"> <element name="debug_button_32" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x01">
<bounds x="1100" y="852" width="80" height="44"/> <bounds x="1100" y="852" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_32" ref="debug_button_label_32">
<bounds x="1120" y="863" width="40" height="22"/>
</element>
<element name="debug_button_33" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x02"> <element name="debug_button_33" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x02">
<bounds x="1184" y="852" width="80" height="44"/> <bounds x="1184" y="852" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_33" ref="debug_button_label_33">
<bounds x="1204" y="863" width="40" height="22"/>
</element>
<element name="debug_button_34" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x04"> <element name="debug_button_34" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x04">
<bounds x="1268" y="852" width="80" height="44"/> <bounds x="1268" y="852" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_34" ref="debug_button_label_34">
<bounds x="1288" y="863" width="40" height="22"/>
</element>
<element name="debug_button_35" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x08"> <element name="debug_button_35" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x08">
<bounds x="1352" y="852" width="80" height="44"/> <bounds x="1352" y="852" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_35" ref="debug_button_label_35">
<bounds x="1372" y="863" width="40" height="22"/>
</element>
<element name="debug_button_36" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x10"> <element name="debug_button_36" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x10">
<bounds x="1436" y="852" width="80" height="44"/> <bounds x="1436" y="852" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_36" ref="debug_button_label_36">
<bounds x="1456" y="863" width="40" height="22"/>
</element>
<element name="debug_button_37" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x20"> <element name="debug_button_37" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x20">
<bounds x="1520" y="852" width="80" height="44"/> <bounds x="1520" y="852" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_37" ref="debug_button_label_37">
<bounds x="1540" y="863" width="40" height="22"/>
</element>
<element name="debug_button_38" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x40"> <element name="debug_button_38" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x40">
<bounds x="1604" y="852" width="80" height="44"/> <bounds x="1604" y="852" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_38" ref="debug_button_label_38">
<bounds x="1624" y="863" width="40" height="22"/>
</element>
<element name="debug_button_39" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x80"> <element name="debug_button_39" ref="debug_button_unreferenced" state="0" inputtag="IN-4" inputmask="0x80">
<bounds x="1688" y="852" width="80" height="44"/> <bounds x="1688" y="852" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_39" ref="debug_button_label_39">
<bounds x="1708" y="863" width="40" height="22"/>
</element>
<element name="debug_button_40" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x01"> <element name="debug_button_40" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x01">
<bounds x="1100" y="900" width="80" height="44"/> <bounds x="1100" y="900" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_40" ref="debug_button_label_40">
<bounds x="1120" y="911" width="40" height="22"/>
</element>
<element name="debug_button_41" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x02"> <element name="debug_button_41" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x02">
<bounds x="1184" y="900" width="80" height="44"/> <bounds x="1184" y="900" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_41" ref="debug_button_label_41">
<bounds x="1204" y="911" width="40" height="22"/>
</element>
<element name="debug_button_42" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x04"> <element name="debug_button_42" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x04">
<bounds x="1268" y="900" width="80" height="44"/> <bounds x="1268" y="900" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_42" ref="debug_button_label_42">
<bounds x="1288" y="911" width="40" height="22"/>
</element>
<element name="debug_button_43" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x08"> <element name="debug_button_43" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x08">
<bounds x="1352" y="900" width="80" height="44"/> <bounds x="1352" y="900" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_43" ref="debug_button_label_43">
<bounds x="1372" y="911" width="40" height="22"/>
</element>
<element name="debug_button_44" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x10"> <element name="debug_button_44" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x10">
<bounds x="1436" y="900" width="80" height="44"/> <bounds x="1436" y="900" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_44" ref="debug_button_label_44">
<bounds x="1456" y="911" width="40" height="22"/>
</element>
<element name="debug_button_45" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x20"> <element name="debug_button_45" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x20">
<bounds x="1520" y="900" width="80" height="44"/> <bounds x="1520" y="900" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_45" ref="debug_button_label_45">
<bounds x="1540" y="911" width="40" height="22"/>
</element>
<element name="debug_button_46" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x40"> <element name="debug_button_46" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x40">
<bounds x="1604" y="900" width="80" height="44"/> <bounds x="1604" y="900" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_46" ref="debug_button_label_46">
<bounds x="1624" y="911" width="40" height="22"/>
</element>
<element name="debug_button_47" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x80"> <element name="debug_button_47" ref="debug_button_unreferenced" state="0" inputtag="IN-5" inputmask="0x80">
<bounds x="1688" y="900" width="80" height="44"/> <bounds x="1688" y="900" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_47" ref="debug_button_label_47">
<bounds x="1708" y="911" width="40" height="22"/>
</element>
<element name="debug_button_48" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x01"> <element name="debug_button_48" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x01">
<bounds x="1100" y="948" width="80" height="44"/> <bounds x="1100" y="948" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_48" ref="debug_button_label_48">
<bounds x="1120" y="959" width="40" height="22"/>
</element>
<element name="debug_button_49" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x02"> <element name="debug_button_49" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x02">
<bounds x="1184" y="948" width="80" height="44"/> <bounds x="1184" y="948" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_49" ref="debug_button_label_49">
<bounds x="1204" y="959" width="40" height="22"/>
</element>
<element name="debug_button_50" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x04"> <element name="debug_button_50" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x04">
<bounds x="1268" y="948" width="80" height="44"/> <bounds x="1268" y="948" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_50" ref="debug_button_label_50">
<bounds x="1288" y="959" width="40" height="22"/>
</element>
<element name="debug_button_51" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x08"> <element name="debug_button_51" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x08">
<bounds x="1352" y="948" width="80" height="44"/> <bounds x="1352" y="948" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_51" ref="debug_button_label_51">
<bounds x="1372" y="959" width="40" height="22"/>
</element>
<element name="debug_button_52" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x10"> <element name="debug_button_52" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x10">
<bounds x="1436" y="948" width="80" height="44"/> <bounds x="1436" y="948" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_52" ref="debug_button_label_52">
<bounds x="1456" y="959" width="40" height="22"/>
</element>
<element name="debug_button_53" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x20"> <element name="debug_button_53" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x20">
<bounds x="1520" y="948" width="80" height="44"/> <bounds x="1520" y="948" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_53" ref="debug_button_label_53">
<bounds x="1540" y="959" width="40" height="22"/>
</element>
<element name="debug_button_54" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x40"> <element name="debug_button_54" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x40">
<bounds x="1604" y="948" width="80" height="44"/> <bounds x="1604" y="948" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_54" ref="debug_button_label_54">
<bounds x="1624" y="959" width="40" height="22"/>
</element>
<element name="debug_button_55" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x80"> <element name="debug_button_55" ref="debug_button_unreferenced" state="0" inputtag="IN-6" inputmask="0x80">
<bounds x="1688" y="948" width="80" height="44"/> <bounds x="1688" y="948" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_55" ref="debug_button_label_55">
<bounds x="1708" y="959" width="40" height="22"/>
</element>
<element name="debug_button_56" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x01"> <element name="debug_button_56" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x01">
<bounds x="1100" y="996" width="80" height="44"/> <bounds x="1100" y="996" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_56" ref="debug_button_label_56">
<bounds x="1120" y="1007" width="40" height="22"/>
</element>
<element name="debug_button_57" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x02"> <element name="debug_button_57" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x02">
<bounds x="1184" y="996" width="80" height="44"/> <bounds x="1184" y="996" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_57" ref="debug_button_label_57">
<bounds x="1204" y="1007" width="40" height="22"/>
</element>
<element name="debug_button_58" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x04"> <element name="debug_button_58" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x04">
<bounds x="1268" y="996" width="80" height="44"/> <bounds x="1268" y="996" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_58" ref="debug_button_label_58">
<bounds x="1288" y="1007" width="40" height="22"/>
</element>
<element name="debug_button_59" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x08"> <element name="debug_button_59" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x08">
<bounds x="1352" y="996" width="80" height="44"/> <bounds x="1352" y="996" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_59" ref="debug_button_label_59">
<bounds x="1372" y="1007" width="40" height="22"/>
</element>
<element name="debug_button_60" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x10"> <element name="debug_button_60" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x10">
<bounds x="1436" y="996" width="80" height="44"/> <bounds x="1436" y="996" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_60" ref="debug_button_label_60">
<bounds x="1456" y="1007" width="40" height="22"/>
</element>
<element name="debug_button_61" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x20"> <element name="debug_button_61" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x20">
<bounds x="1520" y="996" width="80" height="44"/> <bounds x="1520" y="996" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_61" ref="debug_button_label_61">
<bounds x="1540" y="1007" width="40" height="22"/>
</element>
<element name="debug_button_62" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x40"> <element name="debug_button_62" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x40">
<bounds x="1604" y="996" width="80" height="44"/> <bounds x="1604" y="996" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_62" ref="debug_button_label_62">
<bounds x="1624" y="1007" width="40" height="22"/>
</element>
<element name="debug_button_63" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x80"> <element name="debug_button_63" ref="debug_button_unreferenced" state="0" inputtag="IN-7" inputmask="0x80">
<bounds x="1688" y="996" width="80" height="44"/> <bounds x="1688" y="996" width="80" height="44"/>
</element> </element>
<element name="debug_button_label_63" ref="debug_button_label_63">
<bounds x="1708" y="1007" width="40" height="22"/> <repeat count="8">
<param name="s" start="0" increment="8" />
<param name="y" start="671" increment="48" />
<repeat count="8">
<param name="n" start="~s~" increment="1" />
<param name="x" start="1120" increment="84" />
<element name="debug_button_label_~n~" ref="debug_button_label_~n~">
<bounds x="~x~" y="~y~" width="40" height="22"/>
</element> </element>
<element name="vfd0" ref="debug_vfd" state="0"> </repeat>
<bounds x="1150" y="600" width="32" height="48"/> </repeat>
</element>
<element name="vfd1" ref="debug_vfd" state="0"> <repeat count="16">
<bounds x="1182" y="600" width="32" height="48"/> <param name="n" start="0" increment="1" />
</element> <param name="x" start="1150" increment="32" />
<element name="vfd2" ref="debug_vfd" state="0"> <element name="vfd~n~" ref="debug_vfd" state="0">
<bounds x="1214" y="600" width="32" height="48"/> <bounds x="~x~" y="600" width="32" height="48"/>
</element>
<element name="vfd3" ref="debug_vfd" state="0">
<bounds x="1246" y="600" width="32" height="48"/>
</element>
<element name="vfd4" ref="debug_vfd" state="0">
<bounds x="1278" y="600" width="32" height="48"/>
</element>
<element name="vfd5" ref="debug_vfd" state="0">
<bounds x="1310" y="600" width="32" height="48"/>
</element>
<element name="vfd6" ref="debug_vfd" state="0">
<bounds x="1342" y="600" width="32" height="48"/>
</element>
<element name="vfd7" ref="debug_vfd" state="0">
<bounds x="1374" y="600" width="32" height="48"/>
</element>
<element name="vfd8" ref="debug_vfd" state="0">
<bounds x="1406" y="600" width="32" height="48"/>
</element>
<element name="vfd9" ref="debug_vfd" state="0">
<bounds x="1438" y="600" width="32" height="48"/>
</element>
<element name="vfd10" ref="debug_vfd" state="0">
<bounds x="1470" y="600" width="32" height="48"/>
</element>
<element name="vfd11" ref="debug_vfd" state="0">
<bounds x="1502" y="600" width="32" height="48"/>
</element>
<element name="vfd12" ref="debug_vfd" state="0">
<bounds x="1534" y="600" width="32" height="48"/>
</element>
<element name="vfd13" ref="debug_vfd" state="0">
<bounds x="1566" y="600" width="32" height="48"/>
</element>
<element name="vfd14" ref="debug_vfd" state="0">
<bounds x="1598" y="600" width="32" height="48"/>
</element>
<element name="vfd15" ref="debug_vfd" state="0">
<bounds x="1630" y="600" width="32" height="48"/>
</element> </element>
</repeat>
<element ref="reel_background"> <element ref="reel_background">
<bounds x="1100" y="32" width="120" height="240"/> <bounds x="1100" y="32" width="120" height="240"/>
</element> </element>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,281 +0,0 @@
// license:BSD-3-Clause
// copyright-holders:Aaron Giles
/***************************************************************************
video/rpunch.cpp
Functions to emulate the video hardware of the machine.
****************************************************************************/
#include "emu.h"
#include "includes/rpunch.h"
/*************************************
*
* Tilemap callbacks
*
*************************************/
TILE_GET_INFO_MEMBER(rpunch_state::get_bg0_tile_info)
{
const u16 data = m_videoram[tile_index];
int code;
if (m_videoflags & 0x0400) code = (data & 0x0fff) | 0x2000;
else code = (data & 0x1fff);
tileinfo.set(0,
code,
((m_videoflags & 0x0010) >> 1) | ((data >> 13) & 7),
0);
}
TILE_GET_INFO_MEMBER(rpunch_state::get_bg1_tile_info)
{
const u16 data = m_videoram[0x1000 | tile_index];
int code;
if (m_videoflags & 0x0800) code = (data & 0x0fff) | 0x2000;
else code = (data & 0x1fff);
tileinfo.set(1,
code,
((m_videoflags & 0x0020) >> 2) | ((data >> 13) & 7),
0);
}
/*************************************
*
* Video system start
*
*************************************/
TIMER_CALLBACK_MEMBER(rpunch_state::crtc_interrupt_gen)
{
m_maincpu->set_input_line(1, HOLD_LINE);
if (param != 0)
m_crtc_timer->adjust(m_screen->frame_period() / param, 0, m_screen->frame_period() / param);
}
VIDEO_START_MEMBER(rpunch_state,rpunch)
{
m_videoflags = 0;
m_sprite_xoffs = 0;
/* allocate tilemaps for the backgrounds */
m_background[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(rpunch_state::get_bg0_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64, 64);
m_background[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(rpunch_state::get_bg1_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64, 64);
/* configure the tilemaps */
m_background[1]->set_transparent_pen(15);
m_pixmap = std::make_unique<bitmap_ind16>(512, 256);
const rectangle pixmap_rect(0,511,0,255);
m_pixmap->fill(0xf, pixmap_rect);
/* reset the timer */
m_crtc_timer = timer_alloc(FUNC(rpunch_state::crtc_interrupt_gen), this);
save_item(NAME(*m_pixmap));
}
VIDEO_START_MEMBER(rpunch_state,svolley)
{
VIDEO_START_CALL_MEMBER(rpunch);
m_background[0]->set_scrolldx(8, 0); // aligns middle net sprite with bg as shown in reference
m_sprite_xoffs = -4;
}
/*************************************
*
* Write handlers
*
*************************************/
u8 rpunch_state::pixmap_r(offs_t offset)
{
const int sy = offset >> 8;
const int sx = (offset & 0xff) << 1;
return ((m_pixmap->pix(sy & 0xff, sx & ~1) & 0xf) << 4) | (m_pixmap->pix(sy & 0xff, sx | 1) & 0xf);
}
void rpunch_state::pixmap_w(offs_t offset, u8 data)
{
const int sy = offset >> 8;
const int sx = (offset & 0xff) << 1;
m_pixmap->pix(sy & 0xff, sx & ~1) = ((data & 0xf0) >> 4);
m_pixmap->pix(sy & 0xff, sx | 1) = (data & 0x0f);
}
void rpunch_state::videoram_w(offs_t offset, u16 data, u16 mem_mask)
{
const int tmap = offset >> 12;
const int tile_index = offset & 0xfff;
COMBINE_DATA(&m_videoram[offset]);
m_background[tmap]->mark_tile_dirty(tile_index);
}
void rpunch_state::videoreg_w(offs_t offset, u16 data, u16 mem_mask)
{
const int oldword = m_videoflags;
COMBINE_DATA(&m_videoflags);
if (m_videoflags != oldword)
{
/* invalidate tilemaps */
if ((oldword ^ m_videoflags) & 0x0410)
m_background[0]->mark_all_dirty();
if ((oldword ^ m_videoflags) & 0x0820)
m_background[1]->mark_all_dirty();
}
}
void rpunch_state::scrollreg_w(offs_t offset, u16 data, u16 mem_mask)
{
if (ACCESSING_BITS_0_7 && ACCESSING_BITS_8_15)
switch (offset)
{
case 0:
m_background[0]->set_scrolly(0, data & 0x1ff);
break;
case 1:
m_background[0]->set_scrollx(0, data & 0x1ff);
break;
case 2:
m_background[1]->set_scrolly(0, data & 0x1ff);
break;
case 3:
m_background[1]->set_scrollx(0, data & 0x1ff);
break;
}
}
void rpunch_state::gga_w(offs_t offset, u8 data)
{
m_gga->write(offset >> 5, data & 0xff);
}
void rpunch_state::gga_data_w(offs_t offset, u8 data)
{
switch (offset)
{
/* only register we know about.... */
case 0x0b:
m_crtc_timer->adjust(m_screen->time_until_vblank_start(), (data == 0xc0) ? 2 : 1);
break;
default:
logerror("CRTC register %02X = %02X\n", offset, data);
break;
}
}
void rpunch_state::sprite_ctrl_w(offs_t offset, u8 data)
{
if (offset == 0)
{
m_sprite_num = data & 0x3f;
logerror("Number of sprites = %02X\n", data & 0x3f);
}
else
{
m_sprite_pri = data & 0x3f;
logerror("Sprite priority point = %02X\n", data & 0x3f);
}
}
/*************************************
*
* Sprite routines
*
*************************************/
void rpunch_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
{
/* draw the sprites */
int offs = m_sprite_num;
while (offs > 0)
{
offs--;
const u32 ram = offs << 2;
u32 pri = 0; // above everything except direct mapped bitmap
/* this seems like the most plausible explanation */
if (offs < m_sprite_pri)
pri |= GFX_PMASK_2; // behind foreground
const u16 data1 = m_spriteram[ram + 1];
const u32 code = data1 & 0x7ff;
const u16 data0 = m_spriteram[ram + 0];
const u16 data2 = m_spriteram[ram + 2];
int x = (data2 & 0x1ff) + 8;
int y = 513 - (data0 & 0x1ff);
const bool xflip = data1 & 0x1000;
const bool yflip = data1 & 0x0800;
const u32 color = ((data1 >> 13) & 7) | ((m_videoflags & 0x0040) >> 3);
if (x > cliprect.max_x) x -= 512;
if (y > cliprect.max_y) y -= 512;
m_gfxdecode->gfx(2)->prio_transpen(bitmap,cliprect,
code, color + (m_sprite_palette / 16), xflip, yflip, x + m_sprite_xoffs, y,
m_screen->priority(), pri, 15);
}
}
/*************************************
*
* Bitmap routines
*
*************************************/
void rpunch_state::draw_bitmap(bitmap_ind16 &bitmap, const rectangle &cliprect)
{
const u32 colourbase = 512 + ((m_videoflags & 0x000f) << 4);
for (int y = cliprect.min_y; y <= cliprect.max_y; y++)
{
u16 const *const src = &m_pixmap->pix(y & 0xff);
u16 *const dst = &bitmap.pix(y);
for(int x = cliprect.min_x / 4; x <= cliprect.max_x; x++)
{
const u16 pix = src[(x + 4) & 0x1ff];
if ((pix & 0xf) != 0xf)
dst[x] = colourbase + pix;
}
}
}
/*************************************
*
* Main screen refresh
*
*************************************/
u32 rpunch_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
screen.priority().fill(0, cliprect);
m_background[0]->draw(screen, bitmap, cliprect, 0,1);
m_background[1]->draw(screen, bitmap, cliprect, 0,2);
draw_sprites(bitmap, cliprect);
draw_bitmap(bitmap, cliprect);
return 0;
}