mirror of
https://github.com/holub/mame
synced 2025-04-09 18:17:44 +03:00
New working systems
------------------- Cruisin 5: Cruise Back [hap, Abyss]
This commit is contained in:
parent
0370b0e7fd
commit
31743695fe
@ -44121,6 +44121,7 @@ arkgcbla
|
||||
arktayt2
|
||||
block2
|
||||
brixian
|
||||
cruisin5
|
||||
hexa
|
||||
hexaa
|
||||
paddle2
|
||||
|
@ -796,7 +796,7 @@ DIP locations verified for:
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "machine/watchdog.h"
|
||||
#include "sound/ay8910.h"
|
||||
#include "screen.h"
|
||||
|
||||
#include "speaker.h"
|
||||
|
||||
|
||||
@ -1280,6 +1280,29 @@ static INPUT_PORTS_START( brixian )
|
||||
PORT_DIPSETTING( 0x00, "6" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( cruisin5 )
|
||||
PORT_INCLUDE( arkatayt )
|
||||
|
||||
PORT_MODIFY("DSW")
|
||||
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW1:8") // must be on?
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW1:7" )
|
||||
PORT_DIPNAME( 0x04, 0x00, "Loop" ) PORT_DIPLOCATION("SW1:6")
|
||||
PORT_DIPSETTING( 0x04, "Auto" )
|
||||
PORT_DIPSETTING( 0x00, "Manual" )
|
||||
PORT_DIPNAME( 0x08, 0x08, "??? Animation" ) PORT_DIPLOCATION("SW1:5")
|
||||
PORT_DIPSETTING( 0x08, "Squeeze Out" )
|
||||
PORT_DIPSETTING( 0x00, "Tear Apart" )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW1:4" )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW1:3" )
|
||||
PORT_DIPNAME( 0x40, 0x00, "Sound Hardware" ) PORT_DIPLOCATION("SW1:2")
|
||||
PORT_DIPSETTING( 0x40, "AY-3-8910" )
|
||||
PORT_DIPSETTING( 0x00, "YM2149" )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW1:1" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
/* Graphics Layouts */
|
||||
@ -1329,40 +1352,26 @@ void arkanoid_state::machine_reset()
|
||||
m_bootleg_cmd = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
Pixel clock: 3 MHz = 192 HTotal, assuming it's 6 MHz
|
||||
*/
|
||||
#define ARKANOID_PIXEL_CLOCK XTAL(12'000'000)/2
|
||||
#define ARKANOID_HTOTAL 384
|
||||
#define ARKANOID_HBEND 0
|
||||
#define ARKANOID_HBSTART 256
|
||||
#define ARKANOID_VTOTAL 264
|
||||
#define ARKANOID_VBEND 16
|
||||
#define ARKANOID_VBSTART 240
|
||||
|
||||
void arkanoid_state::arkanoid(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, XTAL(12'000'000)/2); /* verified on pcb */
|
||||
Z80(config, m_maincpu, 12_MHz_XTAL/2); /* verified on pcb */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &arkanoid_state::arkanoid_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(arkanoid_state::irq0_line_hold));
|
||||
|
||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 128); // 74LS393 at ic21, counts 128 vblanks before firing watchdog; z80 /RESET ls08 ic19 pin 9 input comes from ls04 ic20 pin 8, ls04 ic20 pin 9 input comes from ic21 ls393 pin 8, and ls393 is set to chain both 4 bit counters together
|
||||
|
||||
ARKANOID_68705P5(config, m_mcuintf, 12_MHz_XTAL / 4); // verified on PCB
|
||||
m_mcuintf->portb_r_cb().set(FUNC(arkanoid_state::input_mux_r));
|
||||
|
||||
config.set_maximum_quantum(attotime::from_hz(6000)); // 100 CPU slices per second to synchronize between the MCU and the main CPU
|
||||
config.set_maximum_quantum(attotime::from_hz(6000)); // 100 CPU slices per second to synchronize between the MCU and the main CPU
|
||||
|
||||
/* video hardware */
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
// screen.set_refresh_hz(60);
|
||||
// screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
|
||||
// screen.set_size(32*8, 32*8);
|
||||
// screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
|
||||
screen.set_raw(ARKANOID_PIXEL_CLOCK,ARKANOID_HTOTAL,ARKANOID_HBEND,ARKANOID_HBSTART,ARKANOID_VTOTAL,ARKANOID_VBEND,ARKANOID_VBSTART);
|
||||
screen.set_screen_update(FUNC(arkanoid_state::screen_update_arkanoid));
|
||||
screen.set_palette(m_palette);
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
m_screen->set_raw(12_MHz_XTAL/2, 384, 0, 256, 264, 16, 240);
|
||||
m_screen->set_screen_update(FUNC(arkanoid_state::screen_update_arkanoid));
|
||||
m_screen->set_palette(m_palette);
|
||||
m_screen->screen_vblank().set_inputline(m_maincpu, 0, HOLD_LINE);
|
||||
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_arkanoid);
|
||||
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 512);
|
||||
@ -1370,7 +1379,7 @@ void arkanoid_state::arkanoid(machine_config &config)
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "mono").front_center();
|
||||
|
||||
ym2149_device &aysnd(YM2149(config, "aysnd", XTAL(12'000'000)/4)); /* YM2149 clock is 3mhz, pin 26 is low so final clock is 3mhz/2, handled inside the ay core */
|
||||
ym2149_device &aysnd(YM2149(config, "aysnd", 12_MHz_XTAL/4)); /* YM2149 clock is 3mhz, pin 26 is low so final clock is 3mhz/2, handled inside the ay core */
|
||||
aysnd.set_flags(AY8910_SINGLE_OUTPUT | YM2149_PIN26_LOW); // all outputs are tied together with no resistors, and pin 26 is low
|
||||
aysnd.port_a_read_callback().set_ioport("UNUSED");
|
||||
aysnd.port_b_read_callback().set_ioport("DSW");
|
||||
@ -1390,7 +1399,7 @@ void arkanoid_state::p3mcuay(machine_config &config)
|
||||
{
|
||||
p3mcu(config);
|
||||
|
||||
ay8910_device &aysnd(AY8910(config.replace(), "aysnd", XTAL(12'000'000)/4)); // AY-3-8910A
|
||||
ay8910_device &aysnd(AY8910(config.replace(), "aysnd", 12_MHz_XTAL/4)); // AY-3-8910A
|
||||
aysnd.set_flags(AY8910_SINGLE_OUTPUT);
|
||||
aysnd.port_a_read_callback().set_ioport("UNUSED");
|
||||
aysnd.port_b_read_callback().set_ioport("DSW");
|
||||
@ -1411,7 +1420,7 @@ void arkanoid_state::aysnd(machine_config &config)
|
||||
{
|
||||
bootleg(config);
|
||||
|
||||
ay8910_device &aysnd(AY8910(config.replace(), "aysnd", XTAL(12'000'000)/4));
|
||||
ay8910_device &aysnd(AY8910(config.replace(), "aysnd", 12_MHz_XTAL/4));
|
||||
aysnd.set_flags(AY8910_SINGLE_OUTPUT);
|
||||
aysnd.port_a_read_callback().set_ioport("UNUSED");
|
||||
aysnd.port_b_read_callback().set_ioport("DSW");
|
||||
@ -1422,28 +1431,24 @@ void arkanoid_state::aysnd(machine_config &config)
|
||||
void arkanoid_state::hexa(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, XTAL(12'000'000)/2); /* Imported from arkanoid - correct? */
|
||||
Z80(config, m_maincpu, 12_MHz_XTAL/2); /* Imported from arkanoid - correct? */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &arkanoid_state::hexa_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(arkanoid_state::irq0_line_hold));
|
||||
|
||||
WATCHDOG_TIMER(config, "watchdog");
|
||||
|
||||
/* video hardware */
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
// screen.set_refresh_hz(60);
|
||||
// screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
|
||||
// screen.set_size(32*8, 32*8);
|
||||
// screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
|
||||
screen.set_raw(ARKANOID_PIXEL_CLOCK,ARKANOID_HTOTAL,ARKANOID_HBEND,ARKANOID_HBSTART,ARKANOID_VTOTAL,ARKANOID_VBEND,ARKANOID_VBSTART);
|
||||
screen.set_screen_update(FUNC(arkanoid_state::screen_update_hexa));
|
||||
screen.set_palette(m_palette);
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
m_screen->set_raw(12_MHz_XTAL/2, 384, 0, 256, 264, 16, 240);
|
||||
m_screen->set_screen_update(FUNC(arkanoid_state::screen_update_hexa));
|
||||
m_screen->set_palette(m_palette);
|
||||
m_screen->screen_vblank().set_inputline(m_maincpu, 0, HOLD_LINE);
|
||||
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_hexa);
|
||||
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256);
|
||||
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "mono").front_center();
|
||||
ay8910_device &aysnd(AY8910(config, "aysnd", XTAL(12'000'000)/4/2)); /* Imported from arkanoid - correct? */
|
||||
ay8910_device &aysnd(AY8910(config, "aysnd", 12_MHz_XTAL/4/2)); /* Imported from arkanoid - correct? */
|
||||
aysnd.port_a_read_callback().set_ioport("INPUTS");
|
||||
aysnd.port_b_read_callback().set_ioport("DSW");
|
||||
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
|
||||
@ -1453,9 +1458,8 @@ void arkanoid_state::hexaa(machine_config &config)
|
||||
{
|
||||
hexa(config);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &arkanoid_state::hexaa_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(arkanoid_state::irq0_line_hold));
|
||||
|
||||
z80_device &subcpu(Z80(config, "subcpu", XTAL(12'000'000)/2)); // ?
|
||||
z80_device &subcpu(Z80(config, "subcpu", 12_MHz_XTAL/2)); // ?
|
||||
subcpu.set_addrmap(AS_PROGRAM, &arkanoid_state::hexaa_sub_map);
|
||||
subcpu.set_addrmap(AS_IO, &arkanoid_state::hexaa_sub_iomap);
|
||||
}
|
||||
@ -1464,34 +1468,39 @@ void arkanoid_state::hexaa(machine_config &config)
|
||||
void arkanoid_state::brixian(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, XTAL(12'000'000)/2);
|
||||
Z80(config, m_maincpu, 12_MHz_XTAL/2);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &arkanoid_state::brixian_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(arkanoid_state::irq0_line_hold));
|
||||
|
||||
/* there is a 68705 but it's only role appears to be to copy data to RAM at startup */
|
||||
/* the RAM is also battery backed, making the 68705 almost redundant as long as the battery doesn't die(!) */
|
||||
|
||||
/* video hardware */
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
// screen.set_refresh_hz(60);
|
||||
// screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
|
||||
// screen.set_size(32*8, 32*8);
|
||||
// screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
|
||||
screen.set_raw(ARKANOID_PIXEL_CLOCK,ARKANOID_HTOTAL,ARKANOID_HBEND,ARKANOID_HBSTART,ARKANOID_VTOTAL,ARKANOID_VBEND,ARKANOID_VBSTART);
|
||||
screen.set_screen_update(FUNC(arkanoid_state::screen_update_hexa));
|
||||
screen.set_palette(m_palette);
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
m_screen->set_raw(12_MHz_XTAL/2, 384, 0, 256, 264, 16, 240);
|
||||
m_screen->set_screen_update(FUNC(arkanoid_state::screen_update_hexa));
|
||||
m_screen->set_palette(m_palette);
|
||||
m_screen->screen_vblank().set_inputline(m_maincpu, 0, HOLD_LINE);
|
||||
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_arkanoid);
|
||||
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 512);
|
||||
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "mono").front_center();
|
||||
ay8910_device &aysnd(AY8910(config, "aysnd", XTAL(12'000'000)/4/2)); /* Imported from arkanoid - correct? */
|
||||
ay8910_device &aysnd(AY8910(config, "aysnd", 12_MHz_XTAL/4/2)); /* Imported from arkanoid - correct? */
|
||||
aysnd.port_a_read_callback().set_ioport("INPUTS");
|
||||
aysnd.port_b_read_callback().set_ioport("DSW");
|
||||
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
|
||||
}
|
||||
|
||||
void arkanoid_state::cruisin5(machine_config &config)
|
||||
{
|
||||
bootleg(config);
|
||||
|
||||
// for sprite multiplexing, it expects interrupt at vblank end instead of vblank start?
|
||||
m_screen->set_video_attributes(VIDEO_UPDATE_SCANLINE);
|
||||
m_screen->screen_vblank().set_inputline(m_maincpu, 0, HOLD_LINE).invert();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************/
|
||||
@ -2148,6 +2157,22 @@ ROM_START( brixian )
|
||||
ROM_LOAD( "n82s131n.6m", 0x0400, 0x0200, CRC(05297649) SHA1(35f99cf8dddd66e26e2110619eb46bd6ccff41df) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( cruisin5 )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
ROM_LOAD( "ic81-v.3f", 0x0000, 0x8000, CRC(41ed7668) SHA1(afd1600317d210b6da2c63a65f1614be1f77854b) )
|
||||
ROM_LOAD( "ic82-w.5f", 0x8000, 0x8000, CRC(77e310cc) SHA1(e2638bf6c565df9dab98d92c857d2212b150a2d1) )
|
||||
|
||||
ROM_REGION( 0x18000, "gfx1", 0 )
|
||||
ROM_LOAD( "1-ic33.2c", 0x00000, 0x8000, CRC(7fb9dafc) SHA1(74a312729f10ab4753204b41de59ff41b93e80cb) )
|
||||
ROM_LOAD( "2-ic34.3c", 0x08000, 0x8000, CRC(05229af9) SHA1(76c469506430bc23ee77bbcefbc357478437bba7) )
|
||||
ROM_LOAD( "3-ic35.5c", 0x10000, 0x8000, CRC(a4c1a25f) SHA1(29d49572c1e7c6c8ac428ad2a3e625f0f548f66c) )
|
||||
|
||||
ROM_REGION( 0x0600, "proms", 0 )
|
||||
ROM_LOAD( "ic73.11e", 0x0000, 0x0200, CRC(0af8b289) SHA1(6bc589e8a609b4cf450aebedc8ce02d5d45c970f) ) // red component
|
||||
ROM_LOAD( "ic74.12e", 0x0200, 0x0200, CRC(abb002fb) SHA1(c14f56b8ef103600862e7930709d293b0aa97a73) ) // green component
|
||||
ROM_LOAD( "ic75.13e", 0x0400, 0x0200, CRC(a7c6c277) SHA1(adaa003dcd981576ea1cc5f697d709b2d6b2ea29) ) // blue component
|
||||
ROM_END
|
||||
|
||||
|
||||
|
||||
/* Driver Initialization */
|
||||
@ -2276,8 +2301,8 @@ void arkanoid_state::init_brixian()
|
||||
{
|
||||
uint8_t *RAM = memregion("protdata")->base();
|
||||
|
||||
for (int i=0x000;i<0x200;i++)
|
||||
m_protram[i+0x600] = RAM[i];
|
||||
for (int i = 0x000; i < 0x200; i++)
|
||||
m_protram[i + 0x600] = RAM[i];
|
||||
|
||||
}
|
||||
|
||||
@ -2292,6 +2317,7 @@ GAME( 1986, arkanoidj, arkanoid, arkanoid, arkanoidj, arkanoid_state, empty_i
|
||||
GAME( 1986, arkanoidja, arkanoid, arkanoid, arkanoidj, arkanoid_state, empty_init, ROT90, "Taito Corporation", "Arkanoid (Japan, newer w/level select)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1986, arkanoidjb, arkanoid, arkanoid, arkanoidj, arkanoid_state, empty_init, ROT90, "Taito Corporation", "Arkanoid (Japan, older)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1986, arkanoidpe, arkanoid, arkanoid, arkanoid, arkanoid_state, empty_init, ROT90, "Taito Corporation (Phoenix Electronics Co. license)", "Arkanoid (Phoenix Electronics Co. license)", MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
// bootlegs of Arkanoid
|
||||
GAME( 1986, arkanoidjbl, arkanoid, p3mcu, arkanoidj, arkanoid_state, empty_init, ROT90, "bootleg", "Arkanoid (bootleg with MCU, set 1)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1986, arkanoidjbl2, arkanoid, p3mcu, arkanoidj, arkanoid_state, empty_init, ROT90, "bootleg (Beta)", "Arkanoid (bootleg with MCU, set 2)", MACHINE_SUPPORTS_SAVE )
|
||||
@ -2307,6 +2333,7 @@ GAME( 1986, arkgcbla, arkanoid, aysnd, arkgcbl, arkanoid_state, init_ar
|
||||
GAME( 1988, paddle2, arkanoid, bootleg, paddle2, arkanoid_state, init_paddle2, ROT90, "bootleg", "Paddle 2 (bootleg on Block hardware)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1986, arkatayt, arkanoid, aysnd, arkatayt, arkanoid_state, empty_init, ROT90, "bootleg (Tayto)", "Arkanoid (Tayto bootleg)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1986, arktayt2, arkanoid, aysnd, arktayt2, arkanoid_state, empty_init, ROT90, "bootleg (Tayto)", "Arkanoid (Tayto bootleg, harder)", MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
// Other games
|
||||
GAME( 1987, arkatour, 0, arkanoid, arkanoid, arkanoid_state, empty_init, ROT90, "Taito America Corporation (Romstar license)", "Tournament Arkanoid (US, older)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1987, arkatour2, arkatour, arkanoid, arkanoid, arkanoid_state, empty_init, ROT90, "Taito America Corporation (Romstar license)", "Tournament Arkanoid (US, newer)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // same FRI, 6 JUN 1986, 15:49 string for both sets, but labels show this is newer
|
||||
@ -2318,3 +2345,6 @@ GAME( 199?, hexa, 0, hexa, hexa, arkanoid_state, init_he
|
||||
GAME( 199?, hexaa, hexa, hexaa, hexa, arkanoid_state, init_hexaa, ROT0, "D.R. Korea", "Hexa (with 2xZ80, protected)", MACHINE_NOT_WORKING )
|
||||
|
||||
GAME( 1993, brixian, 0, brixian, brixian, arkanoid_state, init_brixian, ROT0, "Cheil Computer System", "Brixian", MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
// demo, winner of Revision 2023 wild compo, on Arkanoid PCB with MCU stripped off
|
||||
GAME( 2023, cruisin5, 0, cruisin5, cruisin5, arkanoid_state, empty_init, ROT90, "Abyss", "Cruisin 5: Cruise Back", MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -8,6 +8,7 @@
|
||||
#include "taito68705.h"
|
||||
|
||||
#include "emupal.h"
|
||||
#include "screen.h"
|
||||
#include "tilemap.h"
|
||||
|
||||
/* This it the best way to allow game specific kludges until the system is fully understood */
|
||||
@ -33,6 +34,7 @@ public:
|
||||
, m_muxports(*this, "P%u", 1)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_mcuintf(*this, "mcu")
|
||||
, m_screen(*this, "screen")
|
||||
, m_gfxdecode(*this, "gfxdecode")
|
||||
, m_palette(*this, "palette")
|
||||
{
|
||||
@ -51,7 +53,7 @@ public:
|
||||
void init_arkbloc2();
|
||||
void init_arkangc();
|
||||
void init_brixian();
|
||||
void arkanoid_bootleg_init( );
|
||||
void arkanoid_bootleg_init();
|
||||
|
||||
void bootleg(machine_config &config);
|
||||
void p3mcuay(machine_config &config);
|
||||
@ -61,6 +63,7 @@ public:
|
||||
void hexaa(machine_config &config);
|
||||
void p3mcu(machine_config &config);
|
||||
void arkanoid(machine_config &config);
|
||||
void cruisin5(machine_config &config);
|
||||
|
||||
private:
|
||||
/* memory pointers */
|
||||
@ -88,6 +91,7 @@ private:
|
||||
optional_ioport_array<2> m_muxports;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
optional_device<arkanoid_mcu_device_base> m_mcuintf;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<palette_device> m_palette;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user