mirror of
https://github.com/holub/mame
synced 2025-07-05 18:08:04 +03:00
Remove template code generators
This commit is contained in:
parent
c58bbf1c89
commit
f7930b625c
@ -1,39 +0,0 @@
|
|||||||
/*! @file doxy_driver.h
|
|
||||||
@license BSD-3-Clause
|
|
||||||
@copyright Angelo Salese & the MAME team
|
|
||||||
|
|
||||||
@basehw 4enraya
|
|
||||||
Main CPU: Z80
|
|
||||||
Sound Chip: AY8910
|
|
||||||
|
|
||||||
@memmap 4enraya,Z80
|
|
||||||
0x0000-0xbfff ROM
|
|
||||||
0xc000-0xcfff work RAM
|
|
||||||
0xd000-0xdfff VRAM mirrored write,
|
|
||||||
tilemap offset = address & 0x3ff
|
|
||||||
tile number = bits 0-7 = data, bits 8,9 = address bits 10,11
|
|
||||||
0xe000-0xefff VRAM mirror
|
|
||||||
0xf000-0xffff NOP
|
|
||||||
|
|
||||||
@iomap 4enraya,Z80
|
|
||||||
0x00-0x00 R dip-switches
|
|
||||||
0x01-0x01 R inputs
|
|
||||||
0x02-0x02 R system inputs
|
|
||||||
0x23-0x23 W ay8910 data write
|
|
||||||
0x33-0x33 W ay8910 control write
|
|
||||||
|
|
||||||
@irq 4enraya,Z80
|
|
||||||
@irqnum 0 @irqname Timer IRQ
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
template for Doxygen commenting style for drivers
|
|
||||||
All accepted special commands that aren't in Doxygen needs to be hooked up into the ini file.
|
|
||||||
memmap/iomap/irq -> [%s,%s] -> [name_of_romset,cpu_name]
|
|
||||||
irqnum -> type of irq, might accept one or two commands (for vectors)
|
|
||||||
irqname -> A description of the irq used, might use brief and extended description.
|
|
||||||
|
|
||||||
@sa http://www.stack.nl/~dimitri/doxygen/manual/commands.html
|
|
||||||
@todo needs discussion for accepted standardized syntax
|
|
||||||
*/
|
|
@ -1,76 +0,0 @@
|
|||||||
# license: BSD-3-Clause
|
|
||||||
"""Simple Python script to generate a new definition from the template_* files
|
|
||||||
"""
|
|
||||||
import argparse
|
|
||||||
import os
|
|
||||||
|
|
||||||
def get_args():
|
|
||||||
parser = argparse.ArgumentParser(description="""
|
|
||||||
Create a new device .cpp/.h definition, using template_device.* as a base.
|
|
||||||
All arguments are sanitized to match the given patterns
|
|
||||||
"""
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"-device_file",
|
|
||||||
required=True,
|
|
||||||
type=str,
|
|
||||||
help="The device .cpp/.h base file name, also the header macro directive \"acorn_vidc20.cpp\" -> \"MAME_MACHINE_ACORN_VIDC20_H\""
|
|
||||||
)
|
|
||||||
# TODO: directory option, honor with os.getcwd() as default
|
|
||||||
parser.add_argument(
|
|
||||||
"-license_opt",
|
|
||||||
default="BSD-3-Clause",
|
|
||||||
type=str,
|
|
||||||
help="License option"
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"-device_longname",
|
|
||||||
required=True,
|
|
||||||
type=str,
|
|
||||||
help="Friendly name for a device \"Acorn VIDC20\""
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"-device_classname",
|
|
||||||
required=True,
|
|
||||||
type=str,
|
|
||||||
help="Class declaration \"acorn_vidc20\", this will also be the filename output"
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"-device_typename",
|
|
||||||
required=True,
|
|
||||||
type=str,
|
|
||||||
help='Type handle declaration \"ACORN_VIDC20\"'
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"-author_name",
|
|
||||||
required=True,
|
|
||||||
type=str,
|
|
||||||
help="Your author handle name in copyright header"
|
|
||||||
)
|
|
||||||
# TODO: add optional structures like device_memory_interface
|
|
||||||
|
|
||||||
user_input = vars(parser.parse_args())
|
|
||||||
return {
|
|
||||||
**user_input,
|
|
||||||
"device_header": user_input["device_file"].upper()
|
|
||||||
}
|
|
||||||
|
|
||||||
def sanitize(k, v):
|
|
||||||
rules_fn = {
|
|
||||||
"device_typename": lambda v: v.upper().strip(),
|
|
||||||
"device_classname": lambda v: v.lower().strip()
|
|
||||||
# TODO: validate license_opt with an enum
|
|
||||||
}
|
|
||||||
return rules_fn.get(k, lambda v: v.strip())(v)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
args = get_args()
|
|
||||||
for file_type in [".cpp", ".h"]:
|
|
||||||
with open(".{0}template_device{1}".format(os.path.sep, file_type), "r", encoding="utf-8", newline="\n") as template_fh:
|
|
||||||
buf_string = template_fh.read()
|
|
||||||
for k, v in args.items():
|
|
||||||
if k == "device_file":
|
|
||||||
continue
|
|
||||||
buf_string = buf_string.replace("<" + k + ">", sanitize(k, v))
|
|
||||||
with open(".{0}{1}{2}".format(os.path.sep, args["device_file"], file_type), "w", encoding="utf-8", newline="\n") as result_fh:
|
|
||||||
result_fh.write(buf_string)
|
|
@ -1,129 +0,0 @@
|
|||||||
// license:BSD-3-Clause
|
|
||||||
// copyright-holders:<author_name>
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* template for CPU cores
|
|
||||||
*
|
|
||||||
*****************************************************************************/
|
|
||||||
|
|
||||||
#include "emu.h"
|
|
||||||
#include "xxx.h"
|
|
||||||
#include "debugger.h"
|
|
||||||
|
|
||||||
|
|
||||||
DEFINE_DEVICE_TYPE(XXX, xxx_cpu_device, "xxx", "XXX")
|
|
||||||
|
|
||||||
|
|
||||||
/* FLAGS */
|
|
||||||
#if 0
|
|
||||||
#define S 0x80
|
|
||||||
#define Z 0x40
|
|
||||||
#define OV 0x20
|
|
||||||
#define C 0x10
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#define xxx_readop(A) m_program->read_dword(A)
|
|
||||||
#define xxx_readmem16(A) m_data->read_dword(A)
|
|
||||||
#define xxx_writemem16(A,B) m_data->write_dword((A),B)
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************
|
|
||||||
* illegal opcodes
|
|
||||||
***********************************/
|
|
||||||
void xxx_cpu_device::xxx_illegal()
|
|
||||||
{
|
|
||||||
logerror("xxx illegal opcode at 0x%04x\n", m_pc);
|
|
||||||
m_icount -= 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Execute cycles */
|
|
||||||
void cp1610_cpu_device::execute_run()
|
|
||||||
{
|
|
||||||
uint16_t opcode;
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
debugger_instruction_hook(this, m_pc);
|
|
||||||
|
|
||||||
opcode = xxx_readop(m_pc);
|
|
||||||
m_pc++;
|
|
||||||
|
|
||||||
switch( opcode )
|
|
||||||
{
|
|
||||||
default:
|
|
||||||
xxx_illegal();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
} while( m_icount > 0 );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void xxx_cpu_device::device_start()
|
|
||||||
{
|
|
||||||
m_program = &space(AS_PROGRAM);
|
|
||||||
m_data = &space(AS_DATA);
|
|
||||||
|
|
||||||
save_item(NAME(m_pc));
|
|
||||||
save_item(NAME(m_flags));
|
|
||||||
|
|
||||||
// Register state for debugger
|
|
||||||
state_add( CP1610_R0, "PC", m_pc ).formatstr("%02X");
|
|
||||||
state_add( STATE_GENPC, "GENPC", m_r[7] ).noshow();
|
|
||||||
state_add( STATE_GENPCBASE, "CURPC", m_r[7] ).noshow();
|
|
||||||
state_add( STATE_GENFLAGS, "GENFLAGS", m_flags ).noshow();
|
|
||||||
|
|
||||||
m_icountptr = &m_icount;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
void xxx_cpu_device::execute_set_input(int irqline, int state)
|
|
||||||
{
|
|
||||||
switch(irqline)
|
|
||||||
{
|
|
||||||
case XXX_INT_INTRM: // level-sensitive
|
|
||||||
m_intrm_pending = ((ASSERT_LINE == state) || (HOLD_LINE == state));
|
|
||||||
m_intrm_state = (ASSERT_LINE == state);
|
|
||||||
break;
|
|
||||||
case XXX_RESET: // edge-sensitive
|
|
||||||
if (CLEAR_LINE != state)
|
|
||||||
m_reset_pending = 1;
|
|
||||||
m_reset_state = (ASSERT_LINE == state);
|
|
||||||
break;
|
|
||||||
case XXX_INT_INTR: // edge-sensitive
|
|
||||||
if (CLEAR_LINE != state)
|
|
||||||
m_intr_pending = 1;
|
|
||||||
m_intr_state = (ASSERT_LINE == state);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
xxx_cpu_device::xxx_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
|
||||||
: cpu_device(mconfig, XXX, tag, owner, clock)
|
|
||||||
, m_program_config("program", ENDIANNESS_BIG, 8, 32, -1)
|
|
||||||
, m_data_config("data", ENDIANNESS_BIG, 8, 32, 0)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void xxx_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
|
|
||||||
{
|
|
||||||
switch (entry.index())
|
|
||||||
{
|
|
||||||
case STATE_GENFLAGS:
|
|
||||||
str = util::string_format("%c%c%c%c",
|
|
||||||
m_flags & 0x80 ? 'S':'.',
|
|
||||||
m_flags & 0x40 ? 'Z':'.',
|
|
||||||
m_flags & 0x20 ? 'V':'.',
|
|
||||||
m_flags & 0x10 ? 'C':'.');
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
offs_t xxx_cpu_device::disassemble(char *buffer, offs_t pc, const uint32_t *oprom, const uint32_t *opram, uint32_t options)
|
|
||||||
{
|
|
||||||
return CPU_DISASSEMBLE_NAME(xxx)(this, buffer, pc, opcodes, params, options);
|
|
||||||
}
|
|
@ -1,70 +0,0 @@
|
|||||||
// license:BSD-3-Clause
|
|
||||||
// copyright-holders:<author_name>
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* template for CPU cores
|
|
||||||
*
|
|
||||||
*****************************************************************************/
|
|
||||||
|
|
||||||
#ifndef MAME_CPU_XXX_H
|
|
||||||
#define MAME_CPU_XXX_H
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
#if UNUSED
|
|
||||||
XXX_R0=1, XXX_R1, XXX_R2, XXX_R3,
|
|
||||||
XXX_R4, XXX_R5, XXX_R6, XXX_R7
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class xxx_cpu_device : public cpu_device
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
// construction/destruction
|
|
||||||
xxx_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
// device-level overrides
|
|
||||||
virtual void device_start() override;
|
|
||||||
virtual void device_reset() override;
|
|
||||||
|
|
||||||
// device_execute_interface overrides
|
|
||||||
virtual uint32_t execute_min_cycles() const noexcept override { return 1; }
|
|
||||||
virtual uint32_t execute_max_cycles() const noexcept override { return 7; }
|
|
||||||
virtual uint32_t execute_input_lines() const noexcept override { return 0; }
|
|
||||||
virtual void execute_run() override;
|
|
||||||
virtual void execute_set_input(int inputnum, int state) override;
|
|
||||||
|
|
||||||
// device_memory_interface overrides
|
|
||||||
virtual const address_space_config *memory_space_config(int spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : (spacenum == AS_DATA) ? &m_data_config : nullptr; }
|
|
||||||
|
|
||||||
// device_state_interface overrides
|
|
||||||
virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
|
|
||||||
|
|
||||||
// device_disasm_interface overrides
|
|
||||||
virtual uint32_t opcode_alignment() const override { return 4; }
|
|
||||||
virtual offs_t disassemble(char *buffer, offs_t pc, const data_buffer &opcodes, const data_buffer ¶ms, uint32_t options) override;
|
|
||||||
|
|
||||||
private:
|
|
||||||
address_space_config m_program_config;
|
|
||||||
|
|
||||||
uint8_t m_pc; /* registers */
|
|
||||||
uint8_t m_flags; /* flags */
|
|
||||||
address_space *m_program;
|
|
||||||
address_space *m_data;
|
|
||||||
int m_icount;
|
|
||||||
|
|
||||||
void xxx_illegal();
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
DECLARE_DEVICE_TYPE(XXX, xxx_cpu_device)
|
|
||||||
|
|
||||||
|
|
||||||
CPU_DISASSEMBLE( xxx );
|
|
||||||
|
|
||||||
#endif // MAME_CPU_XXX_H
|
|
@ -1,83 +0,0 @@
|
|||||||
// license:<license_opt>
|
|
||||||
// copyright-holders:<author_name>
|
|
||||||
/***************************************************************************
|
|
||||||
|
|
||||||
<device_longname>
|
|
||||||
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#include "emu.h"
|
|
||||||
#include "<device_classname>.h"
|
|
||||||
|
|
||||||
|
|
||||||
//**************************************************************************
|
|
||||||
// GLOBAL VARIABLES
|
|
||||||
//**************************************************************************
|
|
||||||
|
|
||||||
|
|
||||||
// device type definition
|
|
||||||
DEFINE_DEVICE_TYPE(<device_typename>, <device_classname>_device, "<device_classname>", "<device_longname>")
|
|
||||||
|
|
||||||
|
|
||||||
//**************************************************************************
|
|
||||||
// LIVE DEVICE
|
|
||||||
//**************************************************************************
|
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
|
||||||
// <device_classname>_device - constructor
|
|
||||||
//-------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
<device_classname>_device::<device_classname>_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
|
||||||
: device_t(mconfig, <device_typename>, tag, owner, clock)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
|
||||||
// device_add_mconfig - device-specific machine
|
|
||||||
// configuration addiitons
|
|
||||||
//-------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
void <device_classname>_device::device_add_mconfig(machine_config &config)
|
|
||||||
{
|
|
||||||
//DEVICE(config, ...);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
|
||||||
// device_start - device-specific startup
|
|
||||||
//-------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
void <device_classname>_device::device_start()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
|
||||||
// device_reset - device-specific reset
|
|
||||||
//-------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
void <device_classname>_device::device_reset()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//**************************************************************************
|
|
||||||
// READ/WRITE HANDLERS
|
|
||||||
//**************************************************************************
|
|
||||||
|
|
||||||
|
|
||||||
uint8_t <device_classname>_device::read(address_space &space, offs_t offset, uint8_t mem_mask = ~0)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void <device_classname>_device::write(address_space &space, offs_t offset, uint8_t data, uint8_t mem_mask = ~0)
|
|
||||||
{
|
|
||||||
}
|
|
@ -1,40 +0,0 @@
|
|||||||
// license:<license_opt>
|
|
||||||
// copyright-holders:<author_name>
|
|
||||||
/***************************************************************************
|
|
||||||
|
|
||||||
<device_longname>
|
|
||||||
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#ifndef MAME_MACHINE_<device_header>_H
|
|
||||||
#define MAME_MACHINE_<device_header>_H
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
//**************************************************************************
|
|
||||||
// TYPE DEFINITIONS
|
|
||||||
//**************************************************************************
|
|
||||||
|
|
||||||
class <device_classname>_device : public device_t
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
// construction/destruction
|
|
||||||
<device_classname>_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
|
||||||
|
|
||||||
// I/O operations
|
|
||||||
void write(address_space &space, offs_t offset, uint8_t data, uint8_t mem_mask = ~0);
|
|
||||||
uint8_t read(address_space &space, offs_t offset, uint8_t mem_mask = ~0);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
// device-level overrides
|
|
||||||
//virtual void device_validity_check(validity_checker &valid) const override;
|
|
||||||
virtual void device_add_mconfig(machine_config &config) override;
|
|
||||||
virtual void device_start() override;
|
|
||||||
virtual void device_reset() override;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// device type definition
|
|
||||||
DECLARE_DEVICE_TYPE(<device_typename>, <device_classname>_device)
|
|
||||||
|
|
||||||
#endif // MAME_MACHINE_<device_header>_H
|
|
@ -1,199 +0,0 @@
|
|||||||
// license:<license>
|
|
||||||
// copyright-holders:<author_name>
|
|
||||||
/***************************************************************************
|
|
||||||
|
|
||||||
<template_header>
|
|
||||||
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#include "emu.h"
|
|
||||||
#include "cpu/z80/z80.h"
|
|
||||||
#include "emupal.h"
|
|
||||||
#include "screen.h"
|
|
||||||
#include "speaker.h"
|
|
||||||
|
|
||||||
#define MAIN_CLOCK XTAL(8'000'000)
|
|
||||||
|
|
||||||
class xxx_state : public driver_device
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
xxx_state(const machine_config &mconfig, device_type type, const char *tag)
|
|
||||||
: driver_device(mconfig, type, tag)
|
|
||||||
, m_maincpu(*this, "maincpu")
|
|
||||||
, m_palette(*this, "palette")
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void xxx(machine_config &config);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
// driver_device overrides
|
|
||||||
virtual void machine_start() override;
|
|
||||||
virtual void machine_reset() override;
|
|
||||||
|
|
||||||
virtual void video_start() override;
|
|
||||||
|
|
||||||
private:
|
|
||||||
// screen updates
|
|
||||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
|
||||||
void xxx_palette(palette_device &palette) const;
|
|
||||||
|
|
||||||
void xxx_io(address_map &map);
|
|
||||||
void xxx_map(address_map &map);
|
|
||||||
|
|
||||||
// devices
|
|
||||||
required_device<cpu_device> m_maincpu;
|
|
||||||
required_device<palette_device> m_palette;
|
|
||||||
};
|
|
||||||
|
|
||||||
void xxx_state::video_start()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t xxx_state::screen_update( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void xxx_state::xxx_map(address_map &map)
|
|
||||||
{
|
|
||||||
map(0x0000, 0x7fff).rom();
|
|
||||||
}
|
|
||||||
|
|
||||||
void xxx_state::xxx_io(address_map &map)
|
|
||||||
{
|
|
||||||
map.global_mask(0xff);
|
|
||||||
}
|
|
||||||
|
|
||||||
static INPUT_PORTS_START( xxx )
|
|
||||||
/* dummy active high structure */
|
|
||||||
PORT_START("SYSA")
|
|
||||||
PORT_DIPNAME( 0x01, 0x00, "SYSA" )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x02, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x04, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
|
|
||||||
|
|
||||||
/* dummy active low structure */
|
|
||||||
PORT_START("DSWA")
|
|
||||||
PORT_DIPNAME( 0x01, 0x01, "DSWA" )
|
|
||||||
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
|
|
||||||
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
|
|
||||||
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
|
|
||||||
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
|
|
||||||
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
|
|
||||||
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
|
|
||||||
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
|
|
||||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
|
||||||
INPUT_PORTS_END
|
|
||||||
|
|
||||||
static const gfx_layout charlayout =
|
|
||||||
{
|
|
||||||
8,8,
|
|
||||||
RGN_FRAC(1,1),
|
|
||||||
1,
|
|
||||||
{ RGN_FRAC(0,1) },
|
|
||||||
{ 0, 1, 2, 3, 4, 5, 6, 7 },
|
|
||||||
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
|
|
||||||
8*8
|
|
||||||
};
|
|
||||||
|
|
||||||
static GFXDECODE_START( gfx_xxx )
|
|
||||||
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 1 )
|
|
||||||
GFXDECODE_END
|
|
||||||
|
|
||||||
|
|
||||||
void xxx_state::machine_start()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void xxx_state::machine_reset()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void xxx_state::xxx_palette(palette_device &palette) const
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void xxx_state::xxx(machine_config &config)
|
|
||||||
{
|
|
||||||
/* basic machine hardware */
|
|
||||||
Z80(config, m_maincpu, MAIN_CLOCK/2);
|
|
||||||
m_maincpu->set_addrmap(AS_PROGRAM, &xxx_state::xxx_map);
|
|
||||||
m_maincpu->set_addrmap(AS_IO, &xxx_state::xxx_io);
|
|
||||||
|
|
||||||
/* video hardware */
|
|
||||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
|
||||||
screen.set_screen_update(FUNC(xxx_state::screen_update));
|
|
||||||
screen.set_raw(MAIN_CLOCK/2, 442, 0, 320, 264, 0, 240); /* generic NTSC video timing at 320x240 */
|
|
||||||
screen.set_palette(m_palette);
|
|
||||||
|
|
||||||
GFXDECODE(config, "gfxdecode", m_palette, gfx_xxx);
|
|
||||||
|
|
||||||
PALETTE(config, m_palette, FUNC(xxx_state::xxx_palette), 8);
|
|
||||||
|
|
||||||
/* sound hardware */
|
|
||||||
SPEAKER(config, "mono").front_center();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
|
|
||||||
Machine driver(s)
|
|
||||||
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
<rom_load>
|
|
||||||
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
|
|
||||||
ROM_REGION( 0x10000, "gfx1", ROMREGION_ERASE00 )
|
|
||||||
|
|
||||||
// See src/emu/gamedrv.h for details
|
|
||||||
// For a game:
|
|
||||||
// GAME(YEAR,NAME,PARENT,MACHINE,INPUT,CLASS,DRIVER_INIT,MONITOR,COMPANY,FULLNAME,FLAGS)
|
|
||||||
|
|
||||||
// For a console:
|
|
||||||
// CONS(YEAR,NAME,PARENT,COMPAT,MACHINE,INPUT,CLASS,DRIVER_INIT,COMPANY,FULLNAME,FLAGS)
|
|
||||||
|
|
||||||
// For a computer:
|
|
||||||
// COMP(YEAR,NAME,PARENT,COMPAT,MACHINE,INPUT,CLASS,DRIVER_INIT,COMPANY,FULLNAME,FLAGS)
|
|
||||||
|
|
||||||
// For a generic system:
|
|
||||||
// SYST(YEAR,NAME,PARENT,COMPAT,MACHINE,INPUT,CLASS,DRIVER_INIT,COMPANY,FULLNAME,FLAGS)
|
|
||||||
|
|
||||||
GAME( 198?, xxx, 0, xxx, xxx, xxx_state, empty_init, ROT0, "<template_manufacturer>", "<template_machinename>", MACHINE_IS_SKELETON )
|
|
@ -1,43 +0,0 @@
|
|||||||
The template family tree is an attempt to ease the pain to write CPUs/drivers/devices
|
|
||||||
from scratch (useful especially for smaller targets).
|
|
||||||
|
|
||||||
===
|
|
||||||
Usage:
|
|
||||||
- Any "xxx" name is case-sensitive (i.e., XXX -> NAMEOFDEVICE, xxx -> nameofdevice);
|
|
||||||
|
|
||||||
===
|
|
||||||
License:
|
|
||||||
Copyright (c) 2014, Angelo Salese & the MAME team
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are met:
|
|
||||||
* Redistributions of source code must retain the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer.
|
|
||||||
* Redistributions in binary form must reproduce the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer in the
|
|
||||||
documentation and/or other materials provided with the distribution.
|
|
||||||
* Neither the name of the <organization> nor the
|
|
||||||
names of its contributors may be used to endorse or promote products
|
|
||||||
derived from this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
===
|
|
||||||
TODO:
|
|
||||||
- Define convention for template inputs (i.e. optimal for each host);
|
|
||||||
- Write template drivers for different endianesses;
|
|
||||||
- Write template header for drivers;
|
|
||||||
- Write tool program that auto-generate contents;
|
|
||||||
- Fix SCREEN_RAW_PARAMS, perhaps actually link to a framework class/macro list, a couple of references are:
|
|
||||||
http://www.ntsc-tv.com/ntsc-index-02.htm
|
|
||||||
http://www.intersil.com/content/dam/Intersil/documents/tb36/tb368.pdf
|
|
Loading…
Reference in New Issue
Block a user