trunk/src/emu/machine/pla.c
| r241897 | r241898 | |
| 2 | 2 | // copyright-holders:Curt Coder |
| 3 | 3 | /********************************************************************** |
| 4 | 4 | |
| 5 | | PLA (Programmable Logic Array) emulation |
| 5 | PLS100 16x48x8 Programmable Logic Array emulation |
| 6 | 6 | |
| 7 | 7 | Copyright MESS Team. |
| 8 | 8 | Visit http://mamedev.org for licensing and usage restrictions. |
| r241897 | r241898 | |
| 10 | 10 | **********************************************************************/ |
| 11 | 11 | |
| 12 | 12 | #include "pla.h" |
| 13 | | #include "jedparse.h" |
| 14 | | #include "plaparse.h" |
| 15 | 13 | |
| 16 | 14 | |
| 17 | | const device_type PLA = &device_creator<pla_device>; |
| 18 | 15 | |
| 16 | //************************************************************************** |
| 17 | // DEVICE TYPE DEFINITIONS |
| 18 | //************************************************************************** |
| 19 | |
| 20 | const device_type PLS100 = &device_creator<pls100_device>; |
| 21 | const device_type MOS8721 = &device_creator<mos8721_device>; |
| 22 | |
| 23 | |
| 24 | |
| 25 | //************************************************************************** |
| 26 | // LIVE DEVICE |
| 27 | //************************************************************************** |
| 28 | |
| 19 | 29 | //------------------------------------------------- |
| 20 | 30 | // pla_device - constructor |
| 21 | 31 | //------------------------------------------------- |
| 22 | 32 | |
| 23 | | pla_device::pla_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 24 | | : device_t(mconfig, PLA, "PLA", tag, owner, clock, "pla", __FILE__), |
| 25 | | m_format(PLA_FMT_JEDBIN), |
| 26 | | m_inputs(0), |
| 27 | | m_outputs(0), |
| 28 | | m_terms(0), |
| 29 | | m_input_mask(0) |
| 33 | pla_device::pla_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, int inputs, int outputs, int terms, UINT32 input_mask, const char *shortname, const char *source) : |
| 34 | device_t(mconfig, type, name, tag, owner, clock, shortname, source), |
| 35 | m_inputs(inputs), |
| 36 | m_outputs(outputs), |
| 37 | m_terms(terms), |
| 38 | m_input_mask(((UINT64)input_mask << 32) | input_mask) |
| 30 | 39 | { |
| 31 | 40 | } |
| 32 | 41 | |
| 42 | pls100_device::pls100_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : |
| 43 | pla_device(mconfig, PLS100, "PLS100", tag, owner, clock, 16, 8, 48, 0xffff, "pls100", __FILE__), |
| 44 | m_output(*this, "output") |
| 45 | { |
| 46 | } |
| 33 | 47 | |
| 48 | mos8721_device::mos8721_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : |
| 49 | pla_device(mconfig, MOS8721, "MOS8721", tag, owner, clock, 27, 18, 379, 0x7ffffff, "mos8721", __FILE__) // TODO actual number of terms is unknown |
| 50 | { |
| 51 | } |
| 52 | |
| 53 | |
| 34 | 54 | //------------------------------------------------- |
| 35 | 55 | // device_start - device-specific startup |
| 36 | 56 | //------------------------------------------------- |
| 37 | 57 | |
| 38 | 58 | void pla_device::device_start() |
| 39 | 59 | { |
| 40 | | assert(region() != NULL); |
| 41 | | assert(m_terms < MAX_TERMS); |
| 42 | | assert(m_inputs < 32 && m_outputs <= 32); |
| 60 | assert(machine().root_device().memregion(tag()) != NULL); |
| 43 | 61 | |
| 44 | | if (m_input_mask == 0) |
| 45 | | m_input_mask = ((UINT64)1 << m_inputs) - 1; |
| 46 | | m_input_mask = ((UINT64)m_input_mask << 32) | m_input_mask; |
| 47 | | |
| 48 | 62 | // parse fusemap |
| 49 | 63 | parse_fusemap(); |
| 50 | 64 | |
| 51 | | // initialize cache |
| 52 | | m_cache2_ptr = 0; |
| 53 | | for (int i = 0; i < CACHE2_SIZE; i++) |
| 54 | | m_cache2[i] = 0x80000000; |
| 65 | // clear cache |
| 66 | for (int i = 0; i < CACHE_SIZE; i++) |
| 67 | { |
| 68 | m_cache[i] = 0; |
| 69 | } |
| 55 | 70 | |
| 56 | | m_cache_size = 0; |
| 57 | | int csize = 1 << ((m_inputs > MAX_CACHE_BITS) ? MAX_CACHE_BITS : m_inputs); |
| 58 | | m_cache.resize(csize); |
| 59 | | for (int i = 0; i < csize; i++) |
| 60 | | m_cache[i] = read(i); |
| 61 | | |
| 62 | | m_cache_size = csize; |
| 71 | m_cache_ptr = 0; |
| 63 | 72 | } |
| 64 | 73 | |
| 74 | void pls100_device::device_start() |
| 75 | { |
| 76 | pla_device::device_start(); |
| 65 | 77 | |
| 78 | m_output.allocate(0x10000); |
| 79 | |
| 80 | for (UINT32 input = 0; input < 0x10000; input++) |
| 81 | { |
| 82 | m_output[input] = pla_device::read(input); |
| 83 | } |
| 84 | } |
| 85 | |
| 86 | |
| 66 | 87 | //------------------------------------------------- |
| 67 | 88 | // parse_fusemap - |
| 68 | 89 | //------------------------------------------------- |
| 69 | 90 | |
| 70 | 91 | void pla_device::parse_fusemap() |
| 71 | 92 | { |
| 93 | memory_region *region = machine().root_device().memregion(tag()); |
| 72 | 94 | jed_data jed; |
| 73 | | int result = JEDERR_NONE; |
| 74 | | |
| 75 | | // read pla file |
| 76 | | switch (m_format) |
| 77 | | { |
| 78 | | case PLA_FMT_JEDBIN: |
| 79 | | result = jedbin_parse(region()->base(), region()->bytes(), &jed); |
| 80 | | break; |
| 81 | | |
| 82 | | case PLA_FMT_BERKELEY: |
| 83 | | result = pla_parse(region()->base(), region()->bytes(), &jed); |
| 84 | | break; |
| 85 | | } |
| 86 | | |
| 87 | | if (result != JEDERR_NONE) |
| 88 | | fatalerror("%s PLA parse error %d\n", tag(), result); |
| 89 | | |
| 90 | | // parse it |
| 95 | |
| 96 | jedbin_parse(region->base(), region->bytes(), &jed); |
| 97 | |
| 91 | 98 | UINT32 fusenum = 0; |
| 92 | 99 | |
| 93 | 100 | for (int p = 0; p < m_terms; p++) |
| r241897 | r241898 | |
| 136 | 143 | UINT32 pla_device::read(UINT32 input) |
| 137 | 144 | { |
| 138 | 145 | // try the cache first |
| 139 | | if (input < m_cache_size) |
| 140 | | return m_cache[input]; |
| 141 | | |
| 142 | | for (int i = 0; i < CACHE2_SIZE; ++i) |
| 146 | for (int i = 0; i < CACHE_SIZE; ++i) |
| 143 | 147 | { |
| 144 | | UINT64 cache2_entry = m_cache2[i]; |
| 148 | UINT64 cache_entry = m_cache[i]; |
| 145 | 149 | |
| 146 | | if ((UINT32)cache2_entry == input) |
| 150 | if ((UINT32)cache_entry == input) |
| 147 | 151 | { |
| 148 | | // cache2 hit |
| 149 | | return cache2_entry >> 32; |
| 152 | // cache hit |
| 153 | return cache_entry >> 32; |
| 150 | 154 | } |
| 151 | 155 | } |
| 152 | 156 | |
| r241897 | r241898 | |
| 166 | 170 | |
| 167 | 171 | s ^= m_xor; |
| 168 | 172 | |
| 169 | | // store output in cache2 |
| 170 | | m_cache2[m_cache2_ptr] = s | input; |
| 171 | | ++m_cache2_ptr &= (CACHE2_SIZE - 1); |
| 173 | // store output in cache |
| 174 | m_cache[m_cache_ptr] = s | input; |
| 175 | ++m_cache_ptr &= (CACHE_SIZE - 1); |
| 172 | 176 | |
| 173 | 177 | return s >> 32; |
| 174 | 178 | } |
| 179 | |
| 180 | |
| 181 | //------------------------------------------------- |
| 182 | // read - |
| 183 | //------------------------------------------------- |
| 184 | |
| 185 | UINT32 pls100_device::read(UINT32 input) |
| 186 | { |
| 187 | return m_output[input]; |
| 188 | } |
trunk/src/emu/machine/pla.h
| r241897 | r241898 | |
| 2 | 2 | // copyright-holders:Curt Coder |
| 3 | 3 | /********************************************************************** |
| 4 | 4 | |
| 5 | | PLA (Programmable Logic Array) emulation |
| 5 | PLS100 16x48x8 Programmable Logic Array emulation |
| 6 | 6 | |
| 7 | 7 | Copyright MESS Team. |
| 8 | 8 | Visit http://mamedev.org for licensing and usage restrictions. |
| 9 | 9 | |
| 10 | ********************************************************************** |
| 11 | _____ _____ |
| 12 | FE 1 |* \_/ | 28 Vcc |
| 13 | I7 2 | | 27 I8 |
| 14 | I6 3 | | 26 I9 |
| 15 | I5 4 | | 25 I10 |
| 16 | I4 5 | | 24 I11 |
| 17 | I3 6 | 82S100 | 23 I12 |
| 18 | I2 7 | 82S101 | 22 I13 |
| 19 | I1 8 | PLS100 | 21 I14 |
| 20 | I0 9 | PLS101 | 20 I15 |
| 21 | F7 10 | | 19 _CE |
| 22 | F6 11 | | 18 F0 |
| 23 | F5 12 | | 17 F1 |
| 24 | F4 13 | | 16 F2 |
| 25 | GND 14 |_____________| 15 F3 |
| 26 | |
| 10 | 27 | **********************************************************************/ |
| 11 | 28 | |
| 12 | 29 | #pragma once |
| r241897 | r241898 | |
| 15 | 32 | #define __PLA__ |
| 16 | 33 | |
| 17 | 34 | #include "emu.h" |
| 35 | #include "jedparse.h" |
| 18 | 36 | |
| 19 | 37 | |
| 20 | 38 | |
| r241897 | r241898 | |
| 23 | 41 | //************************************************************************** |
| 24 | 42 | |
| 25 | 43 | #define MAX_TERMS 512 |
| 26 | | #define MAX_CACHE_BITS 16 |
| 27 | | #define CACHE2_SIZE 8 |
| 44 | #define CACHE_SIZE 8 |
| 28 | 45 | |
| 29 | | enum |
| 30 | | { |
| 31 | | PLA_FMT_JEDBIN = 0, |
| 32 | | PLA_FMT_BERKELEY |
| 33 | | }; |
| 34 | 46 | |
| 35 | 47 | |
| 36 | | |
| 37 | 48 | ///************************************************************************* |
| 38 | 49 | // INTERFACE CONFIGURATION MACROS |
| 39 | 50 | ///************************************************************************* |
| 40 | 51 | |
| 41 | | #define MCFG_PLA_ADD(_tag, _inputs, _outputs, _terms) \ |
| 42 | | MCFG_DEVICE_ADD(_tag, PLA, 0) \ |
| 43 | | pla_device::set_num_inputs(*device, _inputs); \ |
| 44 | | pla_device::set_num_outputs(*device, _outputs); \ |
| 45 | | pla_device::set_num_terms(*device, _terms); |
| 46 | | |
| 47 | | #define MCFG_PLA_INPUTMASK(_mask) \ |
| 48 | | pla_device::set_inputmask(*device, _mask); |
| 49 | | |
| 50 | | #define MCFG_PLA_FILEFORMAT(_format) \ |
| 51 | | pla_device::set_format(*device, _format); |
| 52 | | |
| 53 | | |
| 54 | | // macros for known (and used) devices |
| 55 | | |
| 56 | | // 82S100, 82S101, PLS100, PLS101 |
| 57 | | // 16x48x8 PLA, 28-pin |
| 58 | 52 | #define MCFG_PLS100_ADD(_tag) \ |
| 59 | | MCFG_PLA_ADD(_tag, 16, 8, 48) |
| 53 | MCFG_DEVICE_ADD(_tag, PLS100, 0) |
| 60 | 54 | |
| 61 | | // MOS 8721 PLA |
| 62 | | // TODO: actual number of terms is unknown |
| 63 | 55 | #define MCFG_MOS8721_ADD(_tag) \ |
| 64 | | MCFG_PLA_ADD(_tag, 27, 18, 379) |
| 56 | MCFG_DEVICE_ADD(_tag, MOS8721, 0) |
| 65 | 57 | |
| 66 | 58 | |
| 67 | | |
| 68 | 59 | ///************************************************************************* |
| 69 | 60 | // TYPE DEFINITIONS |
| 70 | 61 | ///************************************************************************* |
| 71 | 62 | |
| 72 | 63 | // ======================> pla_device |
| 73 | 64 | |
| 74 | | class pla_device : public device_t |
| 65 | class pla_device : public device_t |
| 75 | 66 | { |
| 76 | 67 | public: |
| 77 | 68 | // construction/destruction |
| 78 | | pla_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 69 | pla_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, int inputs, int outputs, int terms, UINT32 output_mask, const char *shortname, const char *source); |
| 79 | 70 | |
| 80 | | // static configuration helpers |
| 81 | | static void set_num_inputs(device_t &device, UINT32 i) { downcast<pla_device &>(device).m_inputs = i; } |
| 82 | | static void set_num_outputs(device_t &device, UINT32 o) { downcast<pla_device &>(device).m_outputs = o; } |
| 83 | | static void set_num_terms(device_t &device, UINT32 t) { downcast<pla_device &>(device).m_terms = t; } |
| 84 | | static void set_inputmask(device_t &device, UINT32 mask) { downcast<pla_device &>(device).m_input_mask = mask; } // UINT32! |
| 85 | | static void set_format(device_t &device, int format) { downcast<pla_device &>(device).m_format = format; } |
| 71 | virtual UINT32 read(UINT32 input); |
| 86 | 72 | |
| 87 | | UINT32 read(UINT32 input); |
| 88 | | |
| 89 | 73 | protected: |
| 90 | 74 | // device-level overrides |
| 91 | 75 | virtual void device_start(); |
| 92 | 76 | |
| 93 | | private: |
| 94 | 77 | void parse_fusemap(); |
| 95 | 78 | |
| 96 | | int m_format; |
| 97 | | |
| 98 | | UINT32 m_inputs; |
| 99 | | UINT32 m_outputs; |
| 100 | | UINT32 m_terms; |
| 79 | int m_inputs; |
| 80 | int m_outputs; |
| 81 | int m_terms; |
| 101 | 82 | UINT64 m_input_mask; |
| 102 | 83 | UINT64 m_xor; |
| 103 | 84 | |
| 104 | | int m_cache_size; |
| 105 | | dynamic_array<UINT32> m_cache; |
| 106 | | UINT64 m_cache2[CACHE2_SIZE]; |
| 107 | | UINT8 m_cache2_ptr; |
| 108 | | |
| 109 | 85 | struct term |
| 110 | 86 | { |
| 111 | 87 | UINT64 m_and; |
| 112 | 88 | UINT64 m_or; |
| 113 | | } m_term[MAX_TERMS]; |
| 89 | }; |
| 90 | |
| 91 | term m_term[MAX_TERMS]; |
| 92 | |
| 93 | UINT64 m_cache[CACHE_SIZE]; |
| 94 | UINT8 m_cache_ptr; |
| 114 | 95 | }; |
| 115 | 96 | |
| 116 | 97 | |
| 98 | // ======================> pls100_device |
| 99 | |
| 100 | class pls100_device : public pla_device |
| 101 | { |
| 102 | public: |
| 103 | pls100_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 104 | |
| 105 | // device-level overrides |
| 106 | virtual void device_start(); |
| 107 | |
| 108 | virtual UINT32 read(UINT32 input); |
| 109 | |
| 110 | private: |
| 111 | optional_shared_ptr<UINT8> m_output; |
| 112 | }; |
| 113 | |
| 114 | |
| 115 | // ======================> mos8721_device |
| 116 | |
| 117 | class mos8721_device : public pla_device |
| 118 | { |
| 119 | public: |
| 120 | mos8721_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 121 | }; |
| 122 | |
| 123 | |
| 117 | 124 | // device type definition |
| 118 | | extern const device_type PLA; |
| 125 | extern const device_type PLS100; |
| 126 | extern const device_type MOS8721; |
| 119 | 127 | |
| 120 | 128 | |
| 129 | |
| 121 | 130 | #endif |
trunk/src/mame/drivers/alinvade.c
| r241897 | r241898 | |
| 4 | 4 | |
| 5 | 5 | does it use any off-the shelf chips in addition to the 6502? |
| 6 | 6 | |
| 7 | | Driver by David Haywood and Mariusz Wojcieszek |
| 8 | 7 | |
| 9 | 8 | */ |
| 10 | 9 | |
| r241897 | r241898 | |
| 15 | 14 | { |
| 16 | 15 | public: |
| 17 | 16 | alinvade_state(const machine_config &mconfig, device_type type, const char *tag) |
| 18 | | : driver_device(mconfig, type, tag), |
| 19 | | m_videoram(*this, "videoram") |
| 17 | : driver_device(mconfig, type, tag) |
| 20 | 18 | { } |
| 21 | 19 | |
| 22 | | required_shared_ptr<UINT8> m_videoram; |
| 23 | 20 | |
| 24 | 21 | public: |
| 25 | 22 | virtual void machine_start(); |
| r241897 | r241898 | |
| 30 | 27 | |
| 31 | 28 | |
| 32 | 29 | static ADDRESS_MAP_START( alinvade_map, AS_PROGRAM, 8, alinvade_state ) |
| 33 | | AM_RANGE(0x0000, 0x01ff) AM_RAM |
| 34 | | AM_RANGE(0x0400, 0x0bff) AM_RAM AM_SHARE("videoram") |
| 35 | | AM_RANGE(0x0c00, 0x0dff) AM_RAM |
| 36 | | AM_RANGE(0x2000, 0x2000) AM_WRITENOP //?? |
| 37 | | AM_RANGE(0x4000, 0x4000) AM_READ_PORT("COIN") |
| 38 | | AM_RANGE(0x6000, 0x6000) AM_READ_PORT("DSW") |
| 39 | | AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN0") |
| 40 | | AM_RANGE(0x8001, 0x8001) AM_READ_PORT("IN1") |
| 41 | | AM_RANGE(0x8002, 0x8002) AM_READ_PORT("IN2") |
| 42 | | AM_RANGE(0x8003, 0x8003) AM_READ_PORT("IN3") |
| 43 | | AM_RANGE(0x8004, 0x8004) AM_READ_PORT("IN4") |
| 44 | | AM_RANGE(0xa000, 0xa000) AM_WRITENOP //?? |
| 45 | | AM_RANGE(0xc400, 0xc7ff) AM_ROM |
| 46 | | AM_RANGE(0xc800, 0xcbff) AM_ROM |
| 47 | | AM_RANGE(0xe000, 0xe3ff) AM_ROM |
| 48 | | AM_RANGE(0xe400, 0xe400) AM_WRITENOP //?? |
| 49 | | AM_RANGE(0xe800, 0xe800) AM_READNOP AM_WRITENOP //?? |
| 50 | | AM_RANGE(0xec00, 0xffff) AM_ROM |
| 51 | | ADDRESS_MAP_END |
| 30 | AM_RANGE(0x0000, 0x0fff) AM_RAM |
| 31 | AM_RANGE(0xe000, 0xe3ff) AM_ROM |
| 32 | AM_RANGE(0xe800, 0xebff) AM_RAM |
| 33 | AM_RANGE(0xec00, 0xffff) AM_ROM |
| 52 | 34 | |
| 53 | 35 | |
| 54 | | static INPUT_PORTS_START( alinvade ) |
| 55 | | PORT_START("COIN") |
| 56 | | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 57 | | PORT_BIT(0xef, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 36 | ADDRESS_MAP_END |
| 58 | 37 | |
| 59 | | PORT_START("IN0") |
| 60 | | PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) |
| 61 | | PORT_BIT(0xdf, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 62 | 38 | |
| 63 | | PORT_START("IN1") |
| 64 | | PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(1) |
| 65 | | PORT_BIT(0xdf, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 66 | | |
| 67 | | PORT_START("IN2") |
| 68 | | PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(1) |
| 69 | | PORT_BIT(0xdf, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 70 | | |
| 71 | | PORT_START("IN3") |
| 72 | | PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_START1 ) |
| 73 | | PORT_BIT(0xdf, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 74 | | |
| 75 | | PORT_START("IN4") |
| 76 | | PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_START2 ) |
| 77 | | PORT_BIT(0xdf, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 78 | | |
| 79 | | PORT_START("DSW") |
| 80 | | PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) |
| 81 | | PORT_DIPSETTING( 0x00, "2" ) |
| 82 | | PORT_DIPSETTING( 0x01, "3" ) |
| 83 | | PORT_DIPSETTING( 0x02, "4" ) |
| 84 | | PORT_DIPSETTING( 0x03, "5" ) |
| 85 | | PORT_DIPNAME( 0x04, 0x00, DEF_STR ( Unknown ) ) // read, but not tested afterwards? |
| 86 | | PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) |
| 87 | | PORT_DIPSETTING( 0x04, DEF_STR( On ) ) |
| 88 | | PORT_BIT( 0xf8, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 39 | static INPUT_PORTS_START( alinvade ) |
| 89 | 40 | INPUT_PORTS_END |
| 90 | 41 | |
| 91 | 42 | |
| 43 | |
| 92 | 44 | void alinvade_state::machine_start() |
| 93 | 45 | { |
| 94 | 46 | } |
| r241897 | r241898 | |
| 99 | 51 | |
| 100 | 52 | UINT32 alinvade_state::screen_update_alinvade(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) |
| 101 | 53 | { |
| 102 | | offs_t offs; |
| 103 | | |
| 104 | | for (offs = 0; offs < m_videoram.bytes(); offs++) |
| 105 | | { |
| 106 | | int i; |
| 107 | | |
| 108 | | UINT8 x = (offs << 3)&0x7f; |
| 109 | | int y = (offs >> 4)&0x7f; |
| 110 | | UINT8 data = m_videoram[offs]; |
| 111 | | |
| 112 | | for (i = 0; i < 8; i++) |
| 113 | | { |
| 114 | | pen_t pen = (data & 0x01) ? rgb_t::white : rgb_t::black; |
| 115 | | bitmap.pix32(y, x) = pen; |
| 116 | | |
| 117 | | data = data >> 1; |
| 118 | | x = x + 1; |
| 119 | | } |
| 120 | | } |
| 121 | | |
| 122 | | |
| 123 | 54 | return 0; |
| 124 | 55 | } |
| 125 | 56 | |
| r241897 | r241898 | |
| 135 | 66 | MCFG_SCREEN_ADD("screen", RASTER) |
| 136 | 67 | MCFG_SCREEN_REFRESH_RATE(60) |
| 137 | 68 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 138 | | MCFG_SCREEN_SIZE(128, 128) |
| 139 | | MCFG_SCREEN_VISIBLE_AREA(0, 128-1, 0, 128-1) |
| 69 | MCFG_SCREEN_SIZE(256, 256) |
| 70 | MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1) |
| 140 | 71 | MCFG_SCREEN_UPDATE_DRIVER(alinvade_state, screen_update_alinvade) |
| 141 | 72 | |
| 142 | 73 | /* sound hardware */ |
| r241897 | r241898 | |
| 146 | 77 | |
| 147 | 78 | |
| 148 | 79 | ROM_START( alinvade ) |
| 149 | | ROM_REGION( 0x10000, "maincpu", 0 ) // todo, check mapping |
| 150 | | |
| 151 | | ROM_FILL( 0xc400, 0x800, 0x60 ) // rts for whole area, interrupt code jumps to various addresses here |
| 152 | | |
| 153 | | ROM_LOAD( "alien28.708", 0xe000, 0x0400, CRC(de376295) SHA1(e8eddbb1be1f8661c6b5b39c0d78a65bded65db2) ) |
| 154 | | ROM_LOAD( "alien29.708", 0xec00, 0x0400, CRC(20212977) SHA1(9d24a6b403d968267079fa6241545bd5a01afebb) ) |
| 155 | | ROM_LOAD( "alien30.708", 0xf000, 0x0400, CRC(734b691c) SHA1(9e562159061eecf4b1dee4ea0ee4752c901a54aa) ) |
| 156 | | ROM_LOAD( "alien31.708", 0xf400, 0x0400, CRC(5a70535c) SHA1(2827e7d4bffca78bd035da04481e1e972ee2da39) ) |
| 157 | | ROM_LOAD( "alien32.708", 0xf800, 0x0400, CRC(332dd234) SHA1(9974668344a2a351868a9e7757d1c3a497dc5621) ) |
| 158 | | ROM_LOAD( "alien33.708", 0xfc00, 0x0400, CRC(e0d57fc7) SHA1(7b8ddcb4a86811592d2d0bbc61b2f19e5caa9ccc) ) |
| 80 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 81 | ROM_LOAD( "alien28.708", 0xe000, 0x0400, CRC(de376295) SHA1(e8eddbb1be1f8661c6b5b39c0d78a65bded65db2) ) |
| 82 | ROM_LOAD( "alien29.708", 0xec00, 0x0400, CRC(20212977) SHA1(9d24a6b403d968267079fa6241545bd5a01afebb) ) |
| 83 | ROM_LOAD( "alien30.708", 0xf000, 0x0400, CRC(734b691c) SHA1(9e562159061eecf4b1dee4ea0ee4752c901a54aa) ) |
| 84 | ROM_LOAD( "alien31.708", 0xf400, 0x0400, CRC(5a70535c) SHA1(2827e7d4bffca78bd035da04481e1e972ee2da39) ) |
| 85 | ROM_LOAD( "alien32.708", 0xf800, 0x0400, CRC(332dd234) SHA1(9974668344a2a351868a9e7757d1c3a497dc5621) ) |
| 86 | ROM_LOAD( "alien33.708", 0xfc00, 0x0400, CRC(e0d57fc7) SHA1(7b8ddcb4a86811592d2d0bbc61b2f19e5caa9ccc) ) |
| 159 | 87 | ROM_END |
| 160 | 88 | |
| 161 | 89 | |
| 162 | | GAME( 198?, alinvade, 0, alinvade, alinvade, driver_device, 0, ROT90, "Forbes?", "Alien Invaders", GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS ) |
| 90 | GAME( 198?, alinvade, 0, alinvade, alinvade, driver_device, 0, ROT0, "Forbes?", "Alien Invaders", GAME_NOT_WORKING ) |
trunk/src/mame/drivers/lethal.c
| r241897 | r241898 | |
| 109 | 109 | ---------------- --- -------- --------- ----------------------- |
| 110 | 110 | 000xxxxxxxxxxxxx R xxxxxxxx PROM program ROM (banked) |
| 111 | 111 | 001xxxxxxxxxxxxx R/W xxxxxxxx WRAM work RAM |
| 112 | | 010000--00xxxxxx W xxxxxxxx VREG 054156 control |
| 113 | | 010000--01--xxxx W xxxxxxxx VSCG 054157 control |
| 112 | 010000--00xxxxxx W xxxxxxxx VREG 056832 control |
| 113 | 010000--01--xxxx W xxxxxxxx VSCG 056832 control |
| 114 | 114 | 010000--1000---- R/W -------- AFR watchdog reset |
| 115 | 115 | 010000--1001---- W SDON sound enable? |
| 116 | 116 | 010000--1010 CCLR ? |
| r241897 | r241898 | |
| 121 | 121 | 010000--11-000-- W --x----- CRDB / |
| 122 | 122 | 010000--11-001-- W -----xxx EEP EEPROM DI, CS, CLK |
| 123 | 123 | 010000--11-001-- W ----x--- MUT sound mute? |
| 124 | | 010000--11-001-- W ---x---- CBNK bank switch 4400-7FFF region between palette and 053245/054156 |
| 124 | 010000--11-001-- W ---x---- CBNK bank switch 4800-7FFF region between palette and 053245/056832 |
| 125 | 125 | 010000--11-001-- W --x----- n.c. |
| 126 | 126 | 010000--11-001-- W xx------ SHD0/1 shadow control |
| 127 | 127 | 010000--11-010-- W -----xxx PCU1/XBA palette bank (tilemap A) |
| r241897 | r241898 | |
| 138 | 138 | 010000--11-11011 R -------x NCPU ? |
| 139 | 139 | 010000--11-111-- W --xxxxxx BREG ROM bank select |
| 140 | 140 | 010010--00------ n.c. |
| 141 | | 010010--01---xxx R/W xxxxxxxx OREG 053244/053245 control |
| 141 | 010010--01---xxx R/W xxxxxxxx OREG 053244 |
| 142 | 142 | 010010--10-xxxxx R/W xxxxxxxx HIP 054000 |
| 143 | 143 | 010010--11 R/W xxxxxxxx PAR sound communication |
| 144 | | 010100xxxxxxxxxx R/W xxxxxxxx OBJ 053245 sprite RAM |
| 145 | | 011xxxxxxxxxxxxx R/W xxxxxxxx VRAM 054156 video RAM |
| 144 | 010100xxxxxxxxxx R/W xxxxxxxx OBJ 053245 |
| 145 | 011xxxxxxxxxxxxx R/W xxxxxxxx VRAM 056832 |
| 146 | 146 | 1xxxxxxxxxxxxxxx R xxxxxxxx PROM program ROM |
| 147 | 147 | |
| 148 | 148 | |
| r241897 | r241898 | |
| 231 | 231 | |
| 232 | 232 | note: |
| 233 | 233 | |
| 234 | | Lethal Enforcers has two sprite rendering chips working in parallel with their |
| 235 | | output mixed to give 6bpp, and two tilemap rendering chips working in parallel |
| 236 | | to give 8bpp. We currently cheat, using just one of each device but using |
| 237 | | alternate gfx layouts. Emulating it accurately will require separating the |
| 238 | | "front end" chips (053245, 054156) from the "back end" chips (053244, 054157) |
| 239 | | as only the latter are doubled. |
| 234 | lethal enforcers has 2 sprite rendering chips working in parallel mixing |
| 235 | data together to give 6bpp.. we cheat by using a custom function in |
| 236 | konamiic.c and a fixed 6bpp decode. |
| 240 | 237 | |
| 241 | 238 | mirror not set up correctly |
| 242 | 239 | |
| r241897 | r241898 | |
| 268 | 265 | /* bit 1 is cs (active low) */ |
| 269 | 266 | /* bit 2 is clock (active high) */ |
| 270 | 267 | /* bit 3 is "MUT" on the schematics (audio mute?) */ |
| 271 | | /* bit 4 bankswitches the 4400-7fff region: 0 = registers, 1 = palette RAM ("CBNK" on schematics) */ |
| 268 | /* bit 4 bankswitches the 4800-7fff region: 0 = registers, 1 = RAM ("CBNK" on schematics) */ |
| 272 | 269 | /* bit 6 is "SHD0" (some kind of shadow control) */ |
| 273 | 270 | /* bit 7 is "SHD1" (ditto) */ |
| 274 | 271 | |
| 275 | 272 | m_cur_control2 = data; |
| 276 | 273 | |
| 277 | | m_bank4000->set_bank(BIT(m_cur_control2, 4)); |
| 274 | m_bank4800->set_bank((m_cur_control2 >> 4) & 1); |
| 278 | 275 | |
| 279 | 276 | ioport("EEPROMOUT")->write(m_cur_control2, 0xff); |
| 280 | 277 | } |
| r241897 | r241898 | |
| 305 | 302 | membank("bank1")->set_entry(data); |
| 306 | 303 | } |
| 307 | 304 | |
| 305 | // use one more palette entry for the BG color |
| 306 | WRITE8_MEMBER(lethal_state::le_bgcolor_w) |
| 307 | { |
| 308 | m_palette->write(space, 0x3800 + offset, data); |
| 309 | } |
| 310 | |
| 308 | 311 | READ8_MEMBER(lethal_state::guns_r) |
| 309 | 312 | { |
| 310 | 313 | switch (offset) |
| r241897 | r241898 | |
| 353 | 356 | AM_RANGE(0x40d9, 0x40d9) AM_READ_PORT("INPUTS") |
| 354 | 357 | AM_RANGE(0x40db, 0x40db) AM_READ(gunsaux_r) // top X bit of guns |
| 355 | 358 | AM_RANGE(0x40dc, 0x40dc) AM_WRITE(le_bankswitch_w) |
| 356 | | AM_RANGE(0x4000, 0x43ff) AM_UNMAP // first 0x400 bytes of palette RAM are inaccessible |
| 357 | | AM_RANGE(0x4000, 0x7fff) AM_DEVICE("bank4000", address_map_bank_device, amap8) |
| 359 | AM_RANGE(0x47fe, 0x47ff) AM_WRITE(le_bgcolor_w) // BG color |
| 360 | AM_RANGE(0x4800, 0x7fff) AM_DEVICE("bank4800", address_map_bank_device, amap8) |
| 358 | 361 | AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x38000) |
| 359 | 362 | ADDRESS_MAP_END |
| 360 | 363 | |
| 361 | | static ADDRESS_MAP_START( bank4000_map, AS_PROGRAM, 8, lethal_state ) |
| 362 | | // VRD = 0 or 1, CBNK = 0 |
| 363 | | AM_RANGE(0x0840, 0x084f) AM_MIRROR(0x8000) AM_DEVREADWRITE("k053244", k05324x_device, k053244_r, k053244_w) |
| 364 | | AM_RANGE(0x0880, 0x089f) AM_MIRROR(0x8000) AM_DEVREADWRITE("k054000", k054000_device, read, write) |
| 365 | | AM_RANGE(0x08c6, 0x08c6) AM_MIRROR(0x8000) AM_WRITE(sound_cmd_w) |
| 366 | | AM_RANGE(0x08c7, 0x08c7) AM_MIRROR(0x8000) AM_WRITE(sound_irq_w) |
| 367 | | AM_RANGE(0x08ca, 0x08ca) AM_MIRROR(0x8000) AM_READ(sound_status_r) |
| 368 | | AM_RANGE(0x1000, 0x17ff) AM_MIRROR(0x8000) AM_DEVREADWRITE("k053244", k05324x_device, k053245_r, k053245_w) |
| 369 | | |
| 370 | | // VRD = 0, CBNK = 0 |
| 371 | | AM_RANGE(0x2000, 0x27ff) AM_DEVREADWRITE("k056832", k056832_device, ram_code_lo_r, ram_code_lo_w) |
| 372 | | AM_RANGE(0x2800, 0x2fff) AM_DEVREADWRITE("k056832", k056832_device, ram_code_hi_r, ram_code_hi_w) |
| 373 | | AM_RANGE(0x3000, 0x37ff) AM_DEVREADWRITE("k056832", k056832_device, ram_attr_lo_r, ram_attr_lo_w) |
| 374 | | AM_RANGE(0x3800, 0x3fff) AM_DEVREADWRITE("k056832", k056832_device, ram_attr_hi_r, ram_attr_hi_w) |
| 375 | | |
| 376 | | // VRD = 1, CBNK = 0 or 1 |
| 377 | | AM_RANGE(0xa000, 0xbfff) AM_MIRROR(0x4000) AM_UNMAP // AM_DEVREAD("k056832", k056832_device, rom_byte_r) |
| 378 | | |
| 379 | | // CBNK = 1; partially overlaid when VRD = 1 |
| 380 | | AM_RANGE(0x4000, 0x7fff) AM_MIRROR(0x8000) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") |
| 364 | static ADDRESS_MAP_START( bank4800_map, AS_PROGRAM, 8, lethal_state ) |
| 365 | AM_RANGE(0x0040, 0x004f) AM_DEVREADWRITE("k053244", k05324x_device, k053244_r, k053244_w) |
| 366 | AM_RANGE(0x0080, 0x009f) AM_DEVREADWRITE("k054000", k054000_device, read, write) |
| 367 | AM_RANGE(0x00c6, 0x00c6) AM_WRITE(sound_cmd_w) |
| 368 | AM_RANGE(0x00c7, 0x00c7) AM_WRITE(sound_irq_w) |
| 369 | AM_RANGE(0x00ca, 0x00ca) AM_READ(sound_status_r) |
| 370 | AM_RANGE(0x0800, 0x17ff) AM_MASK(0x07ff) AM_DEVREADWRITE("k053244", k05324x_device, k053245_r, k053245_w) |
| 371 | AM_RANGE(0x1800, 0x1fff) AM_DEVREADWRITE("k056832", k056832_device, ram_code_lo_r, ram_code_lo_w) |
| 372 | AM_RANGE(0x2000, 0x27ff) AM_DEVREADWRITE("k056832", k056832_device, ram_code_hi_r, ram_code_hi_w) |
| 373 | AM_RANGE(0x2800, 0x2fff) AM_DEVREADWRITE("k056832", k056832_device, ram_attr_lo_r, ram_attr_lo_w) |
| 374 | AM_RANGE(0x3000, 0x37ff) AM_DEVREADWRITE("k056832", k056832_device, ram_attr_hi_r, ram_attr_hi_w) |
| 375 | AM_RANGE(0x3800, 0x7001) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // 2 extra bytes for the BG color |
| 381 | 376 | ADDRESS_MAP_END |
| 382 | 377 | |
| 383 | 378 | static ADDRESS_MAP_START( le_sound, AS_PROGRAM, 8, lethal_state ) |
| r241897 | r241898 | |
| 472 | 467 | membank("bank1")->set_entry(0); |
| 473 | 468 | |
| 474 | 469 | save_item(NAME(m_cur_control2)); |
| 475 | | save_item(NAME(m_layer_colorbase)); |
| 476 | 470 | save_item(NAME(m_sprite_colorbase)); |
| 477 | | save_item(NAME(m_back_colorbase)); |
| 471 | save_item(NAME(m_layer_colorbase)); |
| 478 | 472 | } |
| 479 | 473 | |
| 480 | 474 | void lethal_state::machine_reset() |
| r241897 | r241898 | |
| 483 | 477 | m_layer_colorbase[i] = 0; |
| 484 | 478 | |
| 485 | 479 | m_sprite_colorbase = 0; |
| 486 | | m_back_colorbase = 0; |
| 487 | 480 | m_cur_control2 = 0; |
| 488 | | m_bank4000->set_bank(0); |
| 481 | m_bank4800->set_bank(0); |
| 489 | 482 | } |
| 490 | 483 | |
| 491 | 484 | static MACHINE_CONFIG_START( lethalen, lethal_state ) |
| r241897 | r241898 | |
| 498 | 491 | MCFG_CPU_ADD("soundcpu", Z80, MAIN_CLOCK/4) /* verified on pcb */ |
| 499 | 492 | MCFG_CPU_PROGRAM_MAP(le_sound) |
| 500 | 493 | |
| 501 | | MCFG_DEVICE_ADD("bank4000", ADDRESS_MAP_BANK, 0) |
| 502 | | MCFG_DEVICE_PROGRAM_MAP(bank4000_map) |
| 494 | MCFG_DEVICE_ADD("bank4800", ADDRESS_MAP_BANK, 0) |
| 495 | MCFG_DEVICE_PROGRAM_MAP(bank4800_map) |
| 503 | 496 | MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_BIG) |
| 504 | 497 | MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8) |
| 505 | | MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(16) |
| 506 | | MCFG_ADDRESS_MAP_BANK_STRIDE(0x4000) |
| 498 | MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(15) |
| 499 | MCFG_ADDRESS_MAP_BANK_STRIDE(0x3800) |
| 507 | 500 | |
| 508 | 501 | MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom") |
| 509 | 502 | |
| r241897 | r241898 | |
| 518 | 511 | MCFG_SCREEN_UPDATE_DRIVER(lethal_state, screen_update_lethalen) |
| 519 | 512 | MCFG_SCREEN_PALETTE("palette") |
| 520 | 513 | |
| 521 | | MCFG_PALETTE_ADD("palette", 8192) |
| 514 | MCFG_PALETTE_ADD("palette", 7168+1) |
| 522 | 515 | MCFG_PALETTE_ENABLE_SHADOWS() |
| 523 | 516 | MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR) |
| 524 | 517 | |
trunk/src/mame/drivers/naomi.c
| r241897 | r241898 | |
| 254 | 254 | Sticker EPROM FLASHROMs X76F100 EPM7064S 315-5881 |
| 255 | 255 | Game on cart IC22# # of SOP56 IC37# IC41# IC42# Notes |
| 256 | 256 | ---------------------------------------------------------------------------------------------------------------------------------- |
| 257 | | Club Kart: European Session (2003, prototype) no cart * 21 (64Mb) present 315-6206 not present *instead of EPROM have tiny PCB with 2 flashroms on it |
| 258 | | Crackin' DJ part 2 840-0068C 23674 20 (64Mb) present 315-6206 317-0311-COM PCB have label 840-0068B-01 837-14124 |
| 257 | Club Kart: European Session (2003, prototype) no cart * 21 (64Mb) present 315-6206 not present * instead of EPROM have tiny PCB with 2 flashroms on it |
| 258 | Crackin' DJ part 2 840-0068C 23674 20 (64Mb) present 315-6206 317-0311-COM PCB have label 840-0068B-01 837-14124, requires regular 837-13551 and 837-13938 rotary JVS boards, and turntable simulation |
| 259 | Ferrari F355 Challenge (twin, prototype) no cart 22848P* 21 (64Mb) present 315-6206 317-0267-COM * flash-PCB have CRC 330B A417, the rest is the same as regular cart, not dumped but known to exist |
| 259 | 260 | Ferrari F355 Challenge 2 (twin) no cart 23399 21 (64Mb) present 315-6206 317-0287-COM content is the same as regular 171-7919A cart |
| 260 | 261 | House of the Dead 2 (prototype) no cart A1E2 21 (64Mb) present 315-6206 present no label on IC42 |
| 261 | | Inu No Osanpo / Dog Walking (Rev A) 840-0073C 22294A 16 (64Mb) present 315-6206 317-0316-JPN |
| 262 | | Samba de Amigo (prototype) no cart * 21 (64Mb) present 315-6206 317-0270-COM *instead of EPROM have tiny PCB with 2 flashroms on it |
| 263 | | Soul Surfer (Rev A) 840-0095C 23838C 21 (64Mb) present 315-6206 not present todo: verify if it's Rev A or Rev C |
| 262 | Inu No Osanpo / Dog Walking (Rev A) 840-0073C 22294A 16 (64Mb) present 315-6206 317-0316-JPN requires 837-13844 JVS IO with special jumpers settings enabling rotary |
| 263 | Maze of the Kings The (prototype) no cart * 21 (64Mb) present 315-6206 FRI * flash-PCB, not dumped but known to exist |
| 264 | Samba de Amigo (prototype) no cart * 21 (64Mb) present 315-6206 317-0270-COM * instead of EPROM have tiny PCB with 2 flashroms on it |
| 265 | Soul Surfer (Rev A) 840-0095C 23838C 21 (64Mb) present 315-6206 not present |
| 264 | 266 | Star Horse (server) 840-0055C 23626 17 (64Mb) present 315-6206 not present |
| 265 | 267 | The King of Route 66 (Rev A) 840-0087C 23819A 20 (64Mb) present 315-6206 not present content is the same as regular 171-8132A cart |
| 266 | | Virtua NBA (prototype) no cart * 21 (64Mb) present 315-6206 317-0271-COM *instead of EPROM have tiny PCB with 2 flashroms on it |
| 268 | Virtua NBA (prototype) no cart * 21 (64Mb) present 315-6206 317-0271-COM * instead of EPROM have tiny PCB with 2 flashroms on it |
| 269 | Virtua Tennis / Power Smash (prototype) no cart * 21 (64Mb) present 315-6206 317-0263-COM * flash-PCB, title screen have label "SOFT R&D Dept.#3", not dumped but known to exist |
| 267 | 270 | |
| 268 | 271 | |
| 269 | 272 | 837-13668 171-7919A (C) Sega 1998 |
| r241897 | r241898 | |
| 301 | 304 | 18 Wheeler (deluxe) (Rev A) 840-0023C 22185A 20 (64Mb) present 315-6213 317-0273-COM |
| 302 | 305 | 18 Wheeler (standard) 840-0036C 23298 20 (64Mb) present 315-6213 317-0273-COM |
| 303 | 306 | 18 Wheeler (upright) 840-0037C 23299 20 (64Mb) present 315-6213 317-0273-COM |
| 304 | | Airline Pilots (deluxe) (Rev B) ? 21787B 11 (64Mb) present 315-6213 317-0251-COM 2 know BIOS 21801 (USA), 21802 (EXP) |
| 307 | Airline Pilots (deluxe) (Rev B) ? 21787B 11 (64Mb) present 315-6213 317-0251-COM 2 known BIOS 21801 (USA), 21802 (EXP) |
| 305 | 308 | Airline Pilots (Rev A) 840-0005C 21739A 11 (64Mb) present 315-6213 317-0251-COM |
| 306 | 309 | Cosmic Smash 840-0044C 23428 8 (64Mb) ? 315-6213 317-0289-COM joystick + 2 buttons |
| 307 | 310 | Cosmic Smash (Rev A) 840-0044C 23428A 8 (64Mb) ? 315-6213 317-0289-COM joystick + 2 buttons |
| r241897 | r241898 | |
| 315 | 318 | Dynamite Baseball '99 / World Series'99 (Rev B) 840-0019C 22141B 19 (64Mb) ? 315-6213 317-0269-JPN requires special panel (joystick + 2 buttons + bat controller for each player) |
| 316 | 319 | Dynamite Baseball Naomi 840-0001C 21575 21 (64Mb) ? 315-6213 317-0246-JPN requires special panel (joystick + 2 buttons + bat controller for each player) |
| 317 | 320 | Ferrari F355 Challenge 834-13842 21902 21 (64Mb) present 315-6213 317-0254-COM requires special BIOS not yet dumped |
| 318 | | Ferrari F355 Challenge (twin) 834-13950 22848 21 (64Mb) present 315-6213 317-0267-COM 2 know BIOS 22850 (USA), 22851 (EXP) |
| 319 | | Ferrari F355 Challenge 2 (twin) 840-0042C 23399 21 (64Mb) present 315-6213 317-0287-COM 2 know BIOS 22850 (USA), 22851 (EXP) |
| 321 | Ferrari F355 Challenge (twin) 834-13950 22848 21 (64Mb) present 315-6213 317-0267-COM 2 known BIOS 22850 (USA), 22851 (EXP) |
| 322 | Ferrari F355 Challenge 2 (twin) 840-0042C 23399 21 (64Mb) present 315-6213 317-0287-COM 2 known BIOS 22850 (USA), 22851 (EXP) |
| 320 | 323 | Giant Gram: All Japan Pro Wrestling 2 840-0007C 21820 9 (64Mb) ? 315-6213 317-0253-JPN joystick + 3 buttons |
| 321 | 324 | Guilty Gear X 841-0013C 23356 14 (64Mb) ? 315-6213 317-5063-COM |
| 322 | 325 | Gun Spike / Cannon Spike 841-0012C 23210 12 (64Mb) present 315-6213 317-5060-COM |
| 323 | 326 | Heavy Metal Geomatrix (Rev A) HMG016007 23716A 11 (64Mb) present 315-6213 317-5071-COM joystick + 2 buttons |
| 324 | 327 | House of the Dead 2 (original) 834-13636 21385 20 (64Mb) not present 315-6213 not present |
| 325 | 328 | House of the Dead 2 834-13636-01 21585 20 (64Mb) not present 315-6213 not present |
| 326 | | Idol Janshi Suchie-Pai 3 841-0002C 21979 14 (64Mb) ? 315-6213 317-5047-JPN requires special I/O board and mahjong panel |
| 329 | Idol Janshi Suchie-Pai 3 841-0002C 21979 14 (64Mb) ? 315-6213 317-5047-JPN requires mahjong panel |
| 327 | 330 | Jambo! Safari (Rev A) 840-0013C 22826A 8 (64Mb) ? 315-6213 317-0264-COM |
| 328 | 331 | Mars TV 840-0025C 22993 15 (64Mb) present 315-6213 317-0074-JPN |
| 329 | | OutTrigger 840-0017C 22163 19 (64Mb) ? 315-6213 317-0266-COM requires analog controllers/special panel |
| 332 | OutTrigger 840-0017C 22163 19 (64Mb) ? 315-6213 317-0266-COM requires regular 837-13551 and 837-13938 rotary JVS boards, and special panel |
| 330 | 333 | Power Stone 841-0001C 21597 8 (64Mb) present 315-6213 317-5046-COM joystick + 3 buttons |
| 331 | 334 | Power Stone 2 841-0008C 23127 9 (64Mb) present 315-6213 317-5054-COM joystick + 3 buttons |
| 332 | 335 | Puyo Puyo Da! 841-0006C 22206 20 (64Mb) ? 315-6213 ? |
| 333 | | Ring Out 4x4 840-0004C 21779 10 (64Mb) present 315-6213 317-0250-COM |
| 336 | Ring Out 4x4 840-0004C 21779 10 (64Mb) present 315-6213 317-0250-COM requires 2 JVS boards |
| 334 | 337 | Samba de Amigo (Rev B) 840-0020C 22966B 16 (64Mb) present 315-6213 317-0270-COM will boot but requires special controller to play it |
| 335 | | Sega Marine Fishing 840-0027C 22221 10 (64Mb) ? 315-6213 not present ROM 3&4 not present. Requires special I/O board and fishing controller |
| 338 | Sega Marine Fishing 840-0027C 22221 10 (64Mb) ? 315-6213 not present ROM 3&4 not present. Requires fishing controller |
| 336 | 339 | Sega Strike Fighter (Rev A) 840-0035C 23323A 20 (64Mb) present 315-6213 317-0281-COM |
| 337 | 340 | Sega Tetris 840-0018C 22909 6 (64Mb) present 315-6213 317-0268-COM |
| 338 | 341 | Slashout 840-0041C 23341 17 (64Mb) ? 315-6213 317-0286-COM joystick + 4 buttons |
| 339 | 342 | Spawn In the Demon's Hand (Rev B) 841-0005C 22977B 10 (64Mb) ? 315-6213 317-5051-COM joystick + 4 buttons |
| 340 | 343 | Super Major League '99 840-0012C 22059 21 (64Mb) ? 315-6213 ? |
| 341 | 344 | The Typing of the Dead (Rev A) 840-0026C 23021A 20 (64Mb) present 315-6213 not present |
| 342 | | Touch de UNO! / Unou Nouryoku Check Machine 840-0008C 22073 4 (64Mb) present 315-6213 317-0255-JPN |
| 345 | Touch de UNO! / Unou Nouryoku Check Machine 840-0008C 22073 4 (64Mb) present 315-6213 317-0255-JPN requires special JVS board with touch input and printer |
| 343 | 346 | Toy Fighter / Waffupu 840-0011C 22035 10 (64Mb) present 315-6212 317-0257-COM joystick + 3 buttons |
| 344 | 347 | Virtua NBA 840-0021C-01 23073 21 (64Mb) present 315-6213 not present |
| 345 | 348 | Virtua NBA (original) 840-0021C 22949 21 (64Mb) present 315-6213 317-0271-COM |
| r241897 | r241898 | |
| 444 | 447 | Sticker EPROM MASKROMs 25LC040 A54SX32 |
| 445 | 448 | Game on cart IC11# # of SOP44 IC13S# IC1# Notes |
| 446 | 449 | ------------------------------------------------------------------------------------------------------------------------------- |
| 447 | | Club Kart Prize (Rev A) 840-0129C 24082A 16 (64Mb) present 317-0368-COM A54SX32A |
| 448 | | Club Kart Prize Ver. B 840-0137C 24149 16 (64Mb) present 317-0368-COM A54SX32A |
| 450 | Club Kart Prize (Rev A) 840-0129C 24082A 16 (64Mb) present 317-0368-COM requires Naomi-based hopper controller (Naomi bd + 840-0130 cart + 837-14381 "G2 EXPANSION BD") |
| 451 | Club Kart Prize Ver. B 840-0137C 24149 16 (64Mb) present 317-0368-COM requires 837-14438 "SH I/O BD" hopper controller (not dumped) |
| 449 | 452 | Giant Gram 2000 840-0039C 23377 20 (64Mb) present 317-0296-COM |
| 450 | | Kick '4' Cash 840-0140C 24212 16 (64Mb) present 317-0397-COM A54SX32A |
| 453 | Kick '4' Cash 840-0140C 24212 16 (64Mb) present 317-0397-COM requires 837-14438 "SH I/O BD" hopper controller (not dumped) |
| 451 | 454 | Marvel Vs. Capcom 2 New Age of Heroes (Rev A) 841-0007C-02 23085A 14 (64Mb)* present 317-5058-COM *(+2x 32Mb) |
| 452 | | MushiKing The King of Beetles 2K3 2ND 840-0150C 24217 6 (64Mb) present 317-0394-COM |
| 455 | MushiKing The King of Beetles 2K3 2ND 840-0150C 24217 6 (64Mb) present 317-0394-COM requires 610-0669 barcode reader, 838-14245-92 "MAPLE/232C CONVERT BD" (MIE-based), 838-14243 "RFID CHIP R/W BD" and RFID chip |
| 453 | 456 | Quiz Ah Megamisama 840-0030C 23227 16 (64Mb) present 317-0280-JPN |
| 454 | | Shootout Pool 840-0098C 23844 4 (64Mb) present 317-0336-COM |
| 455 | | Shootout Pool - Shootout Pool Prize (Rev A) 840-0128C 24065A 4 (64Mb) present 317-0367-COM |
| 456 | | Shootout Pool Medal 840-0136C 24148 4 (64Mb) present 317-0367-COM |
| 457 | Shootout Pool 840-0098C 23844 4 (64Mb) present 317-0336-COM requires regular 837-13551 and 837-13938 rotary JVS boards |
| 458 | Shootout Pool Prize / The Medal (Rev A) 840-0128C 24065A 4 (64Mb) present 317-0367-COM requires Naomi-based hopper controller |
| 459 | Shootout Pool Prize / The Medal Ver. B 840-0136C 24148 4 (64Mb) present 317-0367-COM requires Naomi-based or 837-14438 hopper controller |
| 457 | 460 | SWP Hopper Board 840-0130C 24083 20 (64Mb) present 317-0339-COM Maskroms are not really used, they are recycled from other games; there is an additional 837-14381 IO board |
| 458 | | Touch de UNO! 2 840-0022C 23071 6 (64Mb) present 317-0276-JPN |
| 461 | Touch de UNO! 2 840-0022C 23071 6 (64Mb) present 317-0276-JPN requires special JVS board with touch input and printer |
| 459 | 462 | Virtua Fighter 4 Evolution 840-0106B 23934 20 (64Mb) present 317-0339-COM |
| 460 | 463 | Virtua Tennis 2 / Power Smash 2 (Rev A) 840-0084C 22327A 18 (64Mb) present 317-0320-COM |
| 461 | 464 | |
| r241897 | r241898 | |
| 502 | 505 | Club Kart: European Session 840-0062C 23704 11 (128Mb) 315-6319A 315-6213 317-0313-COM |
| 503 | 506 | Club Kart: European Session (Rev C) 840-0062C * 11 (128Mb) 315-6319A 315-6213 317-0313-COM * EPR have handwritten Japanese label possibly readable as 'teteto 74 lcl' |
| 504 | 507 | Club Kart: European Session (Rev D) 840-0062C 23704D 11 (128Mb) 315-6319A 315-6213 317-0313-COM |
| 505 | | Crackin' DJ 840-0043C 23450 10 (128Mb) 315-6319 315-6213 317-0288-COM |
| 508 | Crackin' DJ 840-0043C 23450 10 (128Mb) 315-6319 315-6213 317-0288-COM requires regular 837-13551 and 837-13938 rotary JVS boards, and turntable simulation |
| 506 | 509 | Derby Owners Club II (Rev B) 840-0083C 22306B 11 (128Mb) 315-6319A 315-6213 not present |
| 507 | 510 | Derby Owners Club World Edition (Rev C) 840-0088C 22336C 7 (128Mb) 315-6319A 315-6213 not present |
| 508 | 511 | Derby Owners Club World Edition (Rev D) 840-0088C 22336D 7 (128Mb) 315-6319A 315-6213 not present 2 MaskROM are different from Rev C |
| 509 | 512 | Giga Wing 2 841-0014C 22270 5 (128Mb) 315-6319A 315-6213 317-5064-COM |
| 510 | 513 | Mobile Suit Gundam: Federation Vs. Zeon 841-0017C 23638 10 (128Mb) 315-6319A 315-6213 ? |
| 511 | 514 | Moero Justice Gakuen / Project Justice (Rev A) 841-0015C 23548A 11 (128Mb) 315-6319A 315-6213 317-5065-COM |
| 512 | | MushiKing - The King Of Beetle 2K5 1ST 840-0158C 24286 7 (128Mb) 315-6319A 315-6213 not present |
| 513 | | Oinori-daimyoujin Matsuri 840-0126B 24053 5 (128Mb) 315-6319A 315-6213 not present |
| 515 | MushiKing - The King Of Beetle 2K5 1ST 840-0158C 24286 7 (128Mb) 315-6319A 315-6213 not present requires 610-0669 barcode reader |
| 516 | Oinori-daimyoujin Matsuri 840-0126B 24053 5 (128Mb) 315-6319A 315-6213 not present requires 837-14274 "G2 EXPANSION BD" (similar to hopper 837-14381 but with ARC NET chip) |
| 514 | 517 | Samba de Amigo Ver. 2000 840-0047C 23600 11 (128Mb) 315-6319A 315-6213 317-0295-COM |
| 515 | 518 | Star Horse (big screens) 840-0054C 23625 4 (128Mb) 315-6319 315-6213 not present |
| 516 | 519 | Star Horse (client) 840-0056C 23627 6 (128Mb)* 315-6319 315-6213 not present * +1 (64Mb) |
| r241897 | r241898 | |
| 566 | 569 | Dynamite Deka EX / Asian Dynamite 840-0175C not present 4 (512Mb) present 317-0495-COM present IC2# is labeled "VER.2" |
| 567 | 570 | Illmatic Envelope 841-0059C not present 4 (512Mb) present 317-5131-JPN present IC2# is labeled "VER.2" - IC#11 is empty |
| 568 | 571 | Mamoru-kun wa Norowarete Shimatta 841-0060C not present 4 (512Mb) present 317-5132-JPN present IC2# is labeled "VER.2" |
| 569 | | Manic Panic Ghost! 840-0170C not present 5 (512Mb) present 317-0461-COM present |
| 572 | Manic Panic Ghost! 840-0170C not present 5 (512Mb) present 317-0461-COM present requires 837-14672 sensor board (SH4 based) |
| 570 | 573 | Melty Blood Actress Again 841-0061C not present 6 (512Mb) present 317-5133-JPN present IC2# is labeled "REV.A" - IC4# is marked "5A" |
| 571 | 574 | Melty Blood Actress Again (Rev A) 841-0061C 24455 6 (512Mb) present 317-5133-JPN present IC2# is labeled "REV.A" - IC4# is marked "5A" |
| 572 | | Mushiking - The King Of Beetles II ENG (Ver. 1.001) 840-0164C not present 2 (512Mb) present 317-0437-COM present |
| 575 | Mushiking - The King Of Beetles II ENG (Ver. 1.001) 840-0164C not present 2 (512Mb) present 317-0437-COM present requires 610-0669 barcode reader, 838-14245-92 "MAPLE/232C CONVERT BD" (MIE-based), 838-14243 "RFID CHIP R/W BD" and RFID chip |
| 573 | 576 | Mushiking - The King Of Beetles II ENG (Ver. 2.001) 840-0164C 24357 2 (512Mb) present 317-0437-COM present IC4# is marked "18" |
| 574 | | Poka Suka Ghost 840-0170C not present 5 (512Mb) present 317-0461-COM present |
| 577 | Poka Suka Ghost 840-0170C not present 5 (512Mb) present 317-0461-COM present requires 837-14672 sensor board (SH4 based) |
| 575 | 578 | Radirgy Noa 841-0062C not present 4 (512Mb) present 317-5138-JPN present IC2# is labeled "VER.2" - IC4# is marked "8A" |
| 576 | 579 | Rythm Tengoku 841-0177C not present 4 (512Mb) present 317-0503-JPN present IC2# is labeled "VER.2" - IC4# is marked "8A" |
| 577 | 580 | Shooting Love 2007 841-0057C not present 4 (512Mb) present 317-5129-JPN present IC2# is labeled "VER.2" |
| 578 | | Touch De Zunou (Rev A) 840-0166C not present 2 (512Mb) present 317-0435-JPN present IC4# is marked "18" |
| 581 | Touch De Zunou (Rev A) 840-0166C not present 2 (512Mb) present 317-0435-JPN present IC4# is marked "18", requires 837-14672 sensor board (SH4 based) |
| 579 | 582 | |
| 580 | 583 | |
| 581 | 584 | |
| r241897 | r241898 | |
| 624 | 627 | Game Type on cart FLASHROM # of SOP48 IC @ 1F IC @ 1H IC @ 2K IC @ 1M code (1) Notes |
| 625 | 628 | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 626 | 629 | /Gun Survivor 2 Biohazard |
| 627 | | \Code: Veronica F1X 25709801 1 (64Mb) 14 (128Mb) not present NAODEC2A NAODEC1B 317-5075-COM BHF1 |
| 630 | \Code: Veronica F1X 25709801 1 (64Mb) 14 (128Mb) not present NAODEC2A NAODEC1B 317-5075-COM BHF1 uses Namco FCA JVS I/O, will crash if COMM.BOARD not present |
| 628 | 631 | /Gun Survivor 2 Biohazard |
| 629 | 632 | \Code: Veronica (Ver. E) F1X 25709801 1 (64Mb) 14 (128Mb) not present NAODEC2A NAODEC1B 317-5075-COM BHF2 |
| 630 | 633 | /Shin Nihon Prowrestling Toukon /FL0 & FL1 have pin55 raised from PCB. |
| 631 | 634 | \Retsuden 4 Arcade Edition (Ver. A) F2X 25349801 2 (64Mb) 15 (128Mb) not present NAODEC2A NAODEC1B 317-5040-COM TRF1 \They are connected togheter and go to pin89 on 2K. |
| 632 | | World Kicks PCB (WKC1 Ver. A) F2 25509801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1B 317-5040-COM WKC1 |
| 635 | World Kicks PCB (WKC1 Ver. A) F2 25509801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1B 317-5040-COM WKC1 uses Namco V226 JVS I/O |
| 633 | 636 | World Kicks (WK2 Ver. A) F2 25209801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1A 317-5040-COM WK2 |
| 634 | 637 | World Kicks (WK3 Ver. A) F2 25209801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1A 317-5040-COM WK3 |
| 635 | 638 | |
| r241897 | r241898 | |
| 677 | 680 | Cart Sticker FL0-FL3 FLASHROMs X76F100 CY37128 315-5881 Known Game |
| 678 | 681 | Game Type on cart FLASHROM # of SOP48 IC @ 1F IC @ 2J IC @ 1M code (1) Notes |
| 679 | 682 | -------------------------------------------------------------------------------------------------------------------------------- |
| 680 | | Mazan: Flash of the Blade (Ver. A) F1X 25869812 1 (64Mb) 8 (128Mb) present NAODEC3 317-0266-COM MAZ2 |
| 683 | Mazan: Flash of the Blade (Ver. A) F1X 25869812 1 (64Mb) 8 (128Mb) present NAODEC3 317-0266-COM MAZ2 uses 2x Namco FCB JVS I/O |
| 681 | 684 | Mazan: Flash of the Blade (Ver. A) F1X 25869812 1 (64Mb) 8 (128Mb) present NAODEC3 317-0266-COM MAZ3 |
| 682 | | Ninja Assault (Ver. A) F3 25469801 3 (64Mb) 9 (128Mb) present NAODEC3 317-5068-COM NJA1 |
| 685 | Ninja Assault (Ver. A) F3 25469801 3 (64Mb) 9 (128Mb) present NAODEC3 317-5068-COM NJA1 uses Namco JYU JVS I/O |
| 683 | 686 | Ninja Assault (Ver. A) F3 25469801 3 (64Mb) 9 (128Mb) present NAODEC3 317-5068-COM NJA2 |
| 684 | 687 | Ninja Assault (Ver. A) F3 25469801 3 (64Mb) 9 (128Mb) present NAODEC3 317-5068-COM NJA3 |
| 685 | 688 | Ninja Assault (Ver. A) F3 25469801 3 (64Mb) 9 (128Mb) present NAODEC3 317-5068-COM NJA4 |
| r241897 | r241898 | |
| 8854 | 8857 | /* 834-xxxxx (Sega Naomi cart with game specific BIOS sets) */ |
| 8855 | 8858 | /* 13636-01 */ GAME( 1998, hotd2, hod2bios, naomim2, hotd2, naomi_state, hotd2, ROT0, "Sega", "House of the Dead 2", GAME_FLAGS ) /* specific BIOS "hod2bios" needed */ |
| 8856 | 8859 | /* 13636 */ GAME( 1998, hotd2o, hotd2, naomim2, hotd2, naomi_state, hotd2, ROT0, "Sega", "House of the Dead 2 (original)", GAME_FLAGS ) /* specific BIOS "hod2bios" needed */ |
| 8857 | | /* 13636? */ GAME( 1998, hotd2p, hotd2, naomim2, hotd2, naomi_state, hotd2, ROT0, "Sega", "House of the Dead 2 (prototype)", GAME_FLAGS ) /* specific BIOS "hod2bios" needed */ |
| 8860 | /* none */ GAME( 1998, hotd2p, hotd2, naomim2, hotd2, naomi_state, hotd2, ROT0, "Sega", "House of the Dead 2 (prototype)", GAME_FLAGS ) /* specific BIOS "hod2bios" needed */ |
| 8858 | 8861 | /* 13842 */ GAME( 1999, f355, f355bios, naomim2, naomi, driver_device, 0, ROT0, "Sega", "Ferrari F355 Challenge", GAME_FLAGS ) /* specific BIOS "f355bios" needed */ |
| 8859 | 8862 | /* 13950 */ GAME( 1999, f355twin, f355bios, naomim2, naomi, driver_device, 0, ROT0, "Sega", "Ferrari F355 Challenge (twin)", GAME_FLAGS ) /* specific BIOS "f355bios" needed */ |
| 8860 | 8863 | /* ????? */ GAME( 2001, f355twn2, f355bios, naomim2, naomi, driver_device, 0, ROT0, "Sega", "Ferrari F355 Challenge 2 (twin)", GAME_FLAGS ) /* specific BIOS "f355bios" needed */ |
| r241897 | r241898 | |
| 8878 | 8881 | /* 0018 */ GAME( 1999, sgtetris, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Sega Tetris", GAME_FLAGS ) |
| 8879 | 8882 | /* 0019 */ GAME( 1999, dybb99, naomi, naomim2, dybbnao, naomi_state, naomi, ROT0, "Sega", "Dynamite Baseball '99 (JPN) / World Series '99 (USA, EXP, KOR, AUS) (Rev B)", GAME_FLAGS ) |
| 8880 | 8883 | /* 0020 */ GAME( 1999, samba, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Samba De Amigo (JPN) (Rev B)", GAME_FLAGS ) |
| 8881 | | /* 0020? */GAME( 1999, sambap, samba, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Samba De Amigo (prototype)", GAME_FLAGS ) |
| 8882 | | /* 0021 */ GAME( 2000, virnbap, virnba, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Virtua NBA (prototype)", GAME_FLAGS ) |
| 8884 | /* none */ GAME( 1999, sambap, samba, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Samba De Amigo (prototype)", GAME_FLAGS ) |
| 8885 | /* none */ GAME( 2000, virnbap, virnba, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Virtua NBA (prototype)", GAME_FLAGS ) |
| 8883 | 8886 | /* 0021 */ GAME( 2000, virnbao, virnba, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Virtua NBA (JPN, USA, EXP, KOR, AUS) (original)", GAME_FLAGS ) |
| 8884 | 8887 | /* 0021-01*/GAME( 2000,virnba, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Virtua NBA (JPN, USA, EXP, KOR, AUS)", GAME_FLAGS ) |
| 8885 | 8888 | /* 0022 */ GAME( 2000, tduno2, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "Touch de Uno! 2", GAME_FLAGS ) |
| r241897 | r241898 | |
| 8914 | 8917 | /* 0088 */ GAME( 2001, derbyocw, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Derby Owners Club World Edition (JPN, USA, EXP, KOR, AUS) (Rev D)", GAME_FLAGS ) |
| 8915 | 8918 | /* 0088 */ GAME( 2001, drbyocwc, derbyocw, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Derby Owners Club World Edition (JPN, USA, EXP, KOR, AUS) (Rev C)", GAME_FLAGS ) |
| 8916 | 8919 | /* 0098 */ GAME( 2002, shootopl, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "Shootout Pool", GAME_FLAGS ) |
| 8917 | | /* 0123 */ GAME( 2001, starhrsp, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Star Horse Progress (Rev A)", GAME_FLAGS ) |
| 8920 | /* 0123 */ GAME( 2003, starhrsp, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Star Horse Progress (Rev A)", GAME_FLAGS ) |
| 8918 | 8921 | /* 0126 */ GAME( 2003, oinori, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Oinori-daimyoujin Matsuri", GAME_FLAGS ) |
| 8919 | | /* 0128 */ GAME( 2002, shootpl, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "Shootout Pool (JPN, USA, KOR, AUS) / Shootout Pool Prize (EXP) (Rev A)", GAME_FLAGS ) |
| 8922 | /* 0128 */ GAME( 2003, shootpl, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "Shootout Pool The Medal / Shootout Pool Prize (Rev A)", GAME_FLAGS ) |
| 8920 | 8923 | /* 0130 */ GAME( 2002, hopper, naomi, naomi, naomi, naomi_state, naomi, ROT0, "Sega", "SWP Hopper Board", GAME_FLAGS ) |
| 8921 | | /* 0136 */ GAME( 2001, shootplm, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "Shootout Pool Medal", GAME_FLAGS ) |
| 8924 | /* 0136 */ GAME( 2004, shootplm, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "Shootout Pool The Medal Ver. B / Shootout Pool Prize Ver. B", GAME_FLAGS ) |
| 8922 | 8925 | /* 0140 */ GAME( 2004, kick4csh, naomi, naomim1, naomi, naomi_state, kick4csh,ROT0, "Sega", "Kick '4' Cash", GAME_FLAGS ) |
| 8923 | 8926 | /* 0150 */ GAME( 2003, mtkob2, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "Mushiking The King Of Beetle 2K3 2nd", GAME_FLAGS ) |
| 8924 | 8927 | /* 0158 */ GAME( 2005, mushi2k5, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Mushiking The King Of Beetle 2K5 1st", GAME_FLAGS ) |
| r241897 | r241898 | |
| 8929 | 8932 | /* 0170 */ GAME( 2007, pokasuka, manicpnc, naomim4, naomi, naomi_state, naomi, ROT0, "Sega", "Pokasuka Ghost", GAME_FLAGS ) |
| 8930 | 8933 | /* 0175 */ GAME( 2007, asndynmt, naomi, naomim4, naomi, naomi_state, naomi, ROT0, "Sega", "Asian Dynamite", GAME_FLAGS ) |
| 8931 | 8934 | /* 0177 */ GAME( 2007, rhytngk, naomi, naomim4, naomi, naomi_state, naomi, ROT0, "Sega/Nintendo", "Rhythm Tengoku", GAME_FLAGS ) |
| 8935 | // 01?? Star Horse Progress Returns |
| 8932 | 8936 | // 00xx Mayjinsen (Formation Battle in May) - prototype, never released |
| 8933 | 8937 | |
| 8934 | 8938 | /* Cartridge prototypes of games released on GD-ROM */ |
| r241897 | r241898 | |
| 8950 | 8954 | /* 0137 */ GAME( 2004, clubkpzb, naomi2, naomi2m1, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart Prize Ver. B", GAME_FLAGS ) |
| 8951 | 8955 | // needs verification is this dump really from 840-0139C cart |
| 8952 | 8956 | /* 0139 */ GAME( 2003, clubk2k3, naomi2, naomi2m1, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session (2003)", GAME_FLAGS ) |
| 8953 | | /* ??? */ GAME( 2003, clubk2kp, clubk2k3,naomi2, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session (2003, prototype)", GAME_FLAGS ) |
| 8957 | /* none */ GAME( 2003, clubk2kp, clubk2k3,naomi2, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session (2003, prototype)", GAME_FLAGS ) |
| 8954 | 8958 | |
| 8955 | 8959 | /* 841-xxxxx ("Licensed by Sega" Naomi cart games)*/ |
| 8956 | 8960 | /* 0001 */ GAME( 1999, pstone, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Capcom", "Power Stone (JPN, USA, EUR, ASI, AUS)", GAME_FLAGS ) |
trunk/src/mame/drivers/popobear.c
| r241897 | r241898 | |
| 89 | 89 | : driver_device(mconfig, type, tag), |
| 90 | 90 | m_maincpu(*this,"maincpu"), |
| 91 | 91 | m_spr(*this, "spr"), |
| 92 | | m_vram(*this, "vram"), |
| 93 | 92 | m_vregs(*this, "vregs"), |
| 94 | 93 | m_gfxdecode(*this, "gfxdecode"), |
| 95 | 94 | m_palette(*this, "palette") |
| r241897 | r241898 | |
| 99 | 98 | tilemap_base[1] = 0xf4000; |
| 100 | 99 | tilemap_base[2] = 0xf8000; |
| 101 | 100 | tilemap_base[3] = 0xfc000; |
| 101 | |
| 102 | tilemap_size[0] = 0x04000; |
| 103 | tilemap_size[1] = 0x04000; |
| 104 | tilemap_size[2] = 0x04000; |
| 105 | tilemap_size[3] = 0x04000; |
| 102 | 106 | } |
| 103 | 107 | |
| 104 | 108 | required_device<cpu_device> m_maincpu; |
| 105 | 109 | required_shared_ptr<UINT16> m_spr; |
| 106 | | required_shared_ptr<UINT16> m_vram; |
| 107 | 110 | required_shared_ptr<UINT16> m_vregs; |
| 108 | 111 | optional_device<gfxdecode_device> m_gfxdecode; |
| 109 | 112 | required_device<palette_device> m_palette; |
| 110 | 113 | |
| 111 | | dynamic_array<UINT16> m_vram_rearranged; |
| 114 | UINT16* m_vram; |
| 115 | UINT16* m_vram_rearranged; |
| 112 | 116 | |
| 113 | 117 | int tilemap_base[4]; |
| 118 | int tilemap_size[4]; |
| 114 | 119 | |
| 115 | 120 | DECLARE_READ8_MEMBER(popo_620000_r); |
| 116 | 121 | DECLARE_WRITE8_MEMBER(popobear_irq_ack_w); |
| r241897 | r241898 | |
| 119 | 124 | TIMER_DEVICE_CALLBACK_MEMBER(popobear_irq); |
| 120 | 125 | void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect); |
| 121 | 126 | |
| 127 | int m_gfx_index; |
| 122 | 128 | tilemap_t *m_bg_tilemap[4]; |
| 123 | 129 | TILE_GET_INFO_MEMBER(get_popobear_bg0_tile_info); |
| 124 | 130 | TILE_GET_INFO_MEMBER(get_popobear_bg1_tile_info); |
| r241897 | r241898 | |
| 143 | 149 | |
| 144 | 150 | |
| 145 | 151 | COMBINE_DATA(&m_vram_rearranged[swapped_offset]); |
| 146 | | m_gfxdecode->gfx(0)->mark_dirty((swapped_offset)/32); |
| 152 | m_gfxdecode->gfx(m_gfx_index)->mark_dirty((swapped_offset)/32); |
| 147 | 153 | |
| 148 | 154 | // unfortunately tilemaps and tilegfx share the same ram so we're always dirty if we write to RAM |
| 149 | 155 | m_bg_tilemap[0]->mark_all_dirty(); |
| r241897 | r241898 | |
| 152 | 158 | m_bg_tilemap[3]->mark_all_dirty(); |
| 153 | 159 | |
| 154 | 160 | } |
| 161 | DECLARE_READ16_MEMBER(popo_vram_r) { return m_vram[offset]; } |
| 155 | 162 | |
| 156 | 163 | }; |
| 157 | 164 | |
| r241897 | r241898 | |
| 159 | 166 | static const gfx_layout popobear_char_layout = |
| 160 | 167 | { |
| 161 | 168 | 8,8, |
| 162 | | RGN_FRAC(1,1), |
| 169 | 0x4000, |
| 163 | 170 | 8, |
| 164 | 171 | { 0,1,2,3,4,5,6,7 }, |
| 165 | 172 | { STEP8(0, 8) }, |
| r241897 | r241898 | |
| 167 | 174 | 8*64 |
| 168 | 175 | }; |
| 169 | 176 | |
| 170 | | GFXDECODE_START(popobear) |
| 171 | | GFXDECODE_RAM( "vram", 0, popobear_char_layout, 0, 1 ) |
| 172 | | GFXDECODE_END |
| 173 | 177 | |
| 174 | 178 | TILE_GET_INFO_MEMBER(popobear_state::get_popobear_bg0_tile_info) |
| 175 | 179 | { |
| r241897 | r241898 | |
| 208 | 212 | |
| 209 | 213 | void popobear_state::video_start() |
| 210 | 214 | { |
| 211 | | m_vram_rearranged.resize(0x100000 / 2); |
| 215 | /* find first empty slot to decode gfx */ |
| 216 | for (m_gfx_index = 0; m_gfx_index < MAX_GFX_ELEMENTS; m_gfx_index++) |
| 217 | if (m_gfxdecode->gfx(m_gfx_index) == 0) |
| 218 | break; |
| 212 | 219 | |
| 213 | | m_gfxdecode->gfx(0)->set_source(reinterpret_cast<UINT8 *>(&m_vram_rearranged[0])); |
| 220 | assert(m_gfx_index != MAX_GFX_ELEMENTS); |
| 214 | 221 | |
| 222 | m_vram = auto_alloc_array_clear(machine(), UINT16, 0x100000/2); |
| 223 | m_vram_rearranged = auto_alloc_array_clear(machine(), UINT16, 0x100000/2); |
| 224 | |
| 225 | |
| 226 | /* create the char set (gfx will then be updated dynamically from RAM) */ |
| 227 | m_gfxdecode->set_gfx(m_gfx_index, global_alloc(gfx_element(m_palette, popobear_char_layout, (UINT8 *)m_vram_rearranged, NATIVE_ENDIAN_VALUE_LE_BE(8,0), m_palette->entries() / 16, 0))); |
| 228 | |
| 215 | 229 | m_bg_tilemap[0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(popobear_state::get_popobear_bg0_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); |
| 216 | 230 | m_bg_tilemap[1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(popobear_state::get_popobear_bg1_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); |
| 217 | 231 | m_bg_tilemap[2] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(popobear_state::get_popobear_bg2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); |
| r241897 | r241898 | |
| 229 | 243 | |
| 230 | 244 | void popobear_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect) |
| 231 | 245 | { |
| 246 | // ERROR: This cast is NOT endian-safe without the use of BYTE/WORD/DWORD_XOR_* macros! |
| 232 | 247 | UINT8* vram = reinterpret_cast<UINT8 *>(m_spr.target()); |
| 233 | 248 | int i; |
| 234 | 249 | |
| r241897 | r241898 | |
| 249 | 264 | /* 0x*29 = 32 x 32 */ |
| 250 | 265 | for(i = 0x800-8;i >= 0; i-=8) |
| 251 | 266 | { |
| 252 | | UINT16 *sprdata = &m_spr[(0x7f800 + i) / 2]; |
| 267 | int y = vram[i+0x7f800+2]|(vram[i+0x7f800+3]<<8); |
| 268 | int x = vram[i+0x7f800+4]|(vram[i+0x7f800+5]<<8); |
| 269 | int spr_num = vram[i+0x7f800+6]|(vram[i+0x7f800+7]<<8); |
| 270 | int param = vram[i+0x7f800+0]|(vram[i+0x7f800+1]<<8); |
| 253 | 271 | |
| 254 | | int param = sprdata[0]; |
| 255 | 272 | int pri = (param & 0x0f00)>>8; |
| 256 | 273 | |
| 257 | 274 | // we do this because it's sprite<->sprite priority, |
| 258 | 275 | if (pri!=drawpri) |
| 259 | 276 | continue; |
| 260 | 277 | |
| 261 | | int y = sprdata[1]; |
| 262 | | int x = sprdata[2]; |
| 263 | | int spr_num = sprdata[3]; |
| 264 | | |
| 265 | 278 | int width = 8 << ((param & 0x30)>>4); |
| 266 | 279 | int height = width; // sprites are always square? |
| 267 | 280 | |
| r241897 | r241898 | |
| 314 | 327 | |
| 315 | 328 | for(int xi=0;xi<width;xi++) |
| 316 | 329 | { |
| 317 | | UINT8 pix = vram[BYTE_XOR_BE(spr_num)]; |
| 330 | UINT8 pix = (vram[spr_num^1] & 0xff); |
| 318 | 331 | int x_draw = (x_dir) ? x+((width-1) - xi) : x+xi; |
| 319 | 332 | |
| 320 | 333 | if(cliprect.contains(x_draw, y_draw)) |
| r241897 | r241898 | |
| 466 | 479 | AM_RANGE(0x000000, 0x03ffff) AM_ROM |
| 467 | 480 | AM_RANGE(0x210000, 0x21ffff) AM_RAM |
| 468 | 481 | AM_RANGE(0x280000, 0x2fffff) AM_RAM AM_SHARE("spr") // unknown boundaries, 0x2ff800 contains a sprite list, lower area = sprite gfx |
| 469 | | AM_RANGE(0x300000, 0x3fffff) AM_RAM_WRITE( popo_vram_w ) AM_SHARE("vram") // tile definitions + tilemaps |
| 482 | AM_RANGE(0x300000, 0x3fffff) AM_READWRITE( popo_vram_r, popo_vram_w ) // tile definitions + tilemaps |
| 470 | 483 | |
| 471 | 484 | |
| 472 | 485 | /* Most if not all of these are vregs */ |
| r241897 | r241898 | |
| 647 | 660 | |
| 648 | 661 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 649 | 662 | |
| 650 | | MCFG_GFXDECODE_ADD("gfxdecode", "palette", popobear) |
| 663 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", empty) |
| 651 | 664 | |
| 652 | 665 | MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_42MHz/16) // XTAL CORRECT, DIVISOR GUESSED |
| 653 | 666 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
trunk/src/mame/drivers/segas16b.c
| r241897 | r241898 | |
| 4470 | 4470 | // |
| 4471 | 4471 | ROM_START( dunkshot ) |
| 4472 | 4472 | ROM_REGION( 0x30000, "maincpu", 0 ) // 68000 code |
| 4473 | | ROM_LOAD16_BYTE( "epr-10520c.a1", 0x000001, 0x8000, CRC(ba9c5d10) SHA1(370d0455903c1bce3b5ad2ffa1d02ccd6da78840) ) |
| 4474 | | ROM_LOAD16_BYTE( "epr-10523c.a4", 0x000000, 0x8000, CRC(106733c2) SHA1(d792b3d5073becbd9f440faff45692ab9e6309b9) ) |
| 4475 | | ROM_LOAD16_BYTE( "epr-10521.a2", 0x010001, 0x8000, CRC(e2d5f97a) SHA1(bf7b4a029580633fee65be89d5c9c83ff76a8484) ) // == epr-10468.a2 |
| 4476 | | ROM_LOAD16_BYTE( "epr-10524.a5", 0x010000, 0x8000, CRC(22777314) SHA1(fbc35505a94c8d4bdb44ee058e9e2e9e9b377c5c) ) // == epr-10471.a5 |
| 4477 | | ROM_LOAD16_BYTE( "epr-10522.a3", 0x020001, 0x8000, CRC(e5b5f754) SHA1(af02c46437e3cf62331753dc405211b7f90e3f62) ) |
| 4478 | | ROM_LOAD16_BYTE( "epr-10525.a6", 0x020000, 0x8000, CRC(7f41f334) SHA1(631f6113f3c0c47f2dd1ee0ea6e7db4321d7366d) ) |
| 4479 | | |
| 4480 | | ROM_REGION( 0x18000, "gfx1", 0 ) // tiles |
| 4481 | | ROM_LOAD( "epr-10528.b9", 0x00000, 0x8000, CRC(a8a3762d) SHA1(af75df6eda0df903e2b3f9680cd128da4227961d) ) |
| 4482 | | ROM_LOAD( "epr-10529.b10", 0x08000, 0x8000, CRC(80cbff50) SHA1(3641ee337194d56d774bf1be91939d03f3c0f77b) ) |
| 4483 | | ROM_LOAD( "epr-10530.b11", 0x10000, 0x8000, CRC(2dbe1e52) SHA1(a6b74f88e2f47322fbde1f6682cae58caf79f6c8) ) |
| 4484 | | |
| 4485 | | ROM_REGION16_BE( 0x80000, "sprites", 0 ) // sprites |
| 4486 | | ROM_LOAD16_BYTE( "epr-10481.b5", 0x00000, 0x8000, CRC(feb04bc9) SHA1(233dc8e3b887a88ac114723d58a909a58f0ae771) ) |
| 4487 | | ROM_RELOAD( 0x10000, 0x8000 ) |
| 4488 | | ROM_LOAD16_BYTE( "epr-10477.b1", 0x00001, 0x8000, CRC(f9d3b2cb) SHA1(b530fe16882c718122bfd1de098f39e54993de28) ) |
| 4489 | | ROM_RELOAD( 0x10001, 0x8000 ) |
| 4490 | | ROM_LOAD16_BYTE( "epr-10482.b6", 0x20000, 0x8000, CRC(5bc07618) SHA1(f4c88f81b407d467f958181770ea4fd32aab3daf) ) |
| 4491 | | ROM_RELOAD( 0x30000, 0x8000 ) |
| 4492 | | ROM_LOAD16_BYTE( "epr-10478.b2", 0x20001, 0x8000, CRC(5b5c5c92) SHA1(1c6f1cafa0788678c80ade11560f4a8d8bb7272a) ) |
| 4493 | | ROM_RELOAD( 0x30001, 0x8000 ) |
| 4494 | | ROM_LOAD16_BYTE( "epr-10483.b7", 0x40000, 0x8000, CRC(7cab4f9e) SHA1(2310a9fe604f78d74d84bea301c95e6f0e6a6085) ) |
| 4495 | | ROM_RELOAD( 0x50000, 0x8000 ) |
| 4496 | | ROM_LOAD16_BYTE( "epr-10479.b3", 0x40001, 0x8000, CRC(e84190a0) SHA1(23a8799adf81e1884a8c6b4c55397b8bca2f1850) ) |
| 4497 | | ROM_RELOAD( 0x50001, 0x8000 ) |
| 4498 | | ROM_LOAD16_BYTE( "epr-10527.b8", 0x60000, 0x8000, CRC(39b1a242) SHA1(cf0c0768d006a18345b66dd389acba1e8192ec53) ) |
| 4499 | | ROM_RELOAD( 0x70000, 0x8000 ) |
| 4500 | | ROM_LOAD16_BYTE( "epr-10526.b4", 0x60001, 0x8000, CRC(bf200754) SHA1(60900d80cfea147b011813dde558c1d39fdd274c) ) |
| 4501 | | ROM_RELOAD( 0x70001, 0x8000 ) |
| 4502 | | |
| 4503 | | ROM_REGION( 0x50000, "soundcpu", 0 ) // sound CPU |
| 4504 | | ROM_LOAD( "epr-10473.a7", 0x00000, 0x08000, CRC(7f1f5a27) SHA1(7ff91b95c883b395ab4ff5e440d78e553a09e623) ) |
| 4505 | | ROM_LOAD( "epr-10474.a8", 0x10000, 0x08000, CRC(419a656e) SHA1(aa734ae835761badeb069f99acc5fded2a19b3a3) ) |
| 4506 | | ROM_LOAD( "epr-10475.a9", 0x20000, 0x08000, CRC(17d55e85) SHA1(0c414bafecbfaa82679cc155f15f5255c186358d) ) |
| 4507 | | ROM_LOAD( "epr-10476.a10", 0x30000, 0x08000, CRC(a6be0956) SHA1(fc4d6e25e0b46679f94fddbb1850fb0b02f8d84b) ) |
| 4508 | | |
| 4509 | | ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key |
| 4510 | | ROM_LOAD( "317-0022.key", 0x0000, 0x2000, CRC(4eedc66d) SHA1(50588fa13bf25a2d1322579cdc9937450543c978) ) |
| 4511 | | ROM_END |
| 4512 | | |
| 4513 | | |
| 4514 | | ROM_START( dunkshoto ) |
| 4515 | | ROM_REGION( 0x30000, "maincpu", 0 ) // 68000 code |
| 4516 | 4473 | ROM_LOAD16_BYTE( "epr-10467.a1", 0x000001, 0x8000, CRC(29774114) SHA1(3a88739213afd4ef7807ddbd3acdfddeb9636fd3) ) |
| 4517 | 4474 | ROM_LOAD16_BYTE( "epr-10470.a4", 0x000000, 0x8000, CRC(8c60761f) SHA1(aba009f482df7023b460ab20e50225ab5f6dff6d) ) |
| 4518 | 4475 | ROM_LOAD16_BYTE( "epr-10468.a2", 0x010001, 0x8000, CRC(e2d5f97a) SHA1(bf7b4a029580633fee65be89d5c9c83ff76a8484) ) |
| r241897 | r241898 | |
| 6860 | 6817 | GAME( 1988, dduxj, ddux, system16b_fd1094, ddux, segas16b_state,generic_5521, ROT0, "Sega", "Dynamite Dux (set 2, Japan, FD1094 317-0094)", 0 ) |
| 6861 | 6818 | GAME( 1988, ddux1, ddux, system16b_i8751, ddux, segas16b_state,ddux_5704, ROT0, "Sega", "Dynamite Dux (set 1, 8751 317-0095)", 0 ) |
| 6862 | 6819 | |
| 6863 | | GAME( 1987, dunkshot, 0, system16b_fd1089a, dunkshot, segas16b_state,dunkshot_5358_small,ROT0, "Sega", "Dunk Shot (Rev C, FD1089A 317-0022)", 0 ) |
| 6864 | | GAME( 1986, dunkshoto, dunkshot, system16b_fd1089a, dunkshot, segas16b_state,dunkshot_5358_small,ROT0, "Sega", "Dunk Shot (FD1089A 317-0022)", 0 ) |
| 6820 | GAME( 1986, dunkshot, 0, system16b_fd1089a, dunkshot, segas16b_state,dunkshot_5358_small,ROT0, "Sega", "Dunk Shot (FD1089A 317-0022)", 0 ) |
| 6865 | 6821 | |
| 6866 | 6822 | GAME( 1989, eswat, 0, system16b_fd1094_5797,eswat, segas16b_state,generic_5797, ROT0, "Sega", "E-Swat - Cyber Police (set 4, World, FD1094 317-0130)", 0 ) |
| 6867 | 6823 | GAME( 1989, eswatu, eswat, system16b_fd1094_5797,eswat, segas16b_state,generic_5797, ROT0, "Sega", "E-Swat - Cyber Police (set 3, US, FD1094 317-0129)", 0 ) |
trunk/src/mess/drivers/gamecom.c
| r241897 | r241898 | |
| 18 | 18 | ***************************************************************************/ |
| 19 | 19 | |
| 20 | 20 | #include "includes/gamecom.h" |
| 21 | | #include "gamecom.lh" |
| 22 | 21 | |
| 23 | 22 | static ADDRESS_MAP_START(gamecom_mem_map, AS_PROGRAM, 8, gamecom_state) |
| 24 | 23 | AM_RANGE( 0x0000, 0x0013 ) AM_RAM |
| r241897 | r241898 | |
| 32 | 31 | AM_RANGE( 0x4000, 0x5FFF ) AM_ROMBANK("bank2") /* External ROM/Flash. Controlled by MMU2 */ |
| 33 | 32 | AM_RANGE( 0x6000, 0x7FFF ) AM_ROMBANK("bank3") /* External ROM/Flash. Controlled by MMU3 */ |
| 34 | 33 | AM_RANGE( 0x8000, 0x9FFF ) AM_ROMBANK("bank4") /* External ROM/Flash. Controlled by MMU4 */ |
| 35 | | AM_RANGE( 0xA000, 0xDFFF ) AM_RAM AM_SHARE("videoram") /* VRAM */ |
| 36 | | AM_RANGE( 0xE000, 0xFFFF ) AM_RAM AM_SHARE("nvram") /* Extended I/O, Extended RAM */ |
| 34 | AM_RANGE( 0xA000, 0xDFFF ) AM_RAM AM_SHARE("p_videoram") /* VRAM */ |
| 35 | AM_RANGE( 0xE000, 0xFFFF ) AM_RAM AM_SHARE("p_nvram")// AM_SHARE("nvram") /* Extended I/O, Extended RAM */ |
| 37 | 36 | ADDRESS_MAP_END |
| 38 | 37 | |
| 39 | 38 | static INPUT_PORTS_START( gamecom ) |
| r241897 | r241898 | |
| 44 | 43 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_NAME( "Right" ) |
| 45 | 44 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME( "Menu" ) PORT_CODE( KEYCODE_M ) |
| 46 | 45 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME( DEF_STR(Pause) ) PORT_CODE( KEYCODE_V ) |
| 47 | | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME( "Sound" ) PORT_CODE( KEYCODE_S ) |
| 48 | | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME( "Button A" ) PORT_CODE( KEYCODE_A ) PORT_CODE( KEYCODE_LCONTROL ) |
| 46 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME( "Sound" ) PORT_CODE( KEYCODE_B ) |
| 47 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME( "Button A" ) |
| 49 | 48 | |
| 50 | 49 | PORT_START("IN1") |
| 51 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME( "Button B" ) PORT_CODE( KEYCODE_B ) PORT_CODE( KEYCODE_LALT ) |
| 52 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME( "Button C" ) PORT_CODE( KEYCODE_C ) PORT_CODE( KEYCODE_SPACE ) |
| 50 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME( "Button B" ) |
| 51 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME( "Button C" ) |
| 53 | 52 | |
| 54 | 53 | PORT_START("IN2") |
| 55 | 54 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME( "Reset" ) PORT_CODE( KEYCODE_N ) |
| 56 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME( "Button D" ) PORT_CODE( KEYCODE_D ) PORT_CODE( KEYCODE_LSHIFT ) |
| 55 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME( "Button D" ) |
| 57 | 56 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME( "Stylus press" ) PORT_CODE( KEYCODE_Z ) PORT_CODE( MOUSECODE_BUTTON1 ) |
| 58 | 57 | |
| 59 | | PORT_START("GRID.0") |
| 60 | | PORT_BIT( 0x001, IP_ACTIVE_HIGH, IPT_OTHER) |
| 61 | | PORT_BIT( 0x002, IP_ACTIVE_HIGH, IPT_OTHER) |
| 62 | | PORT_BIT( 0x004, IP_ACTIVE_HIGH, IPT_OTHER) |
| 63 | | PORT_BIT( 0x008, IP_ACTIVE_HIGH, IPT_OTHER) |
| 64 | | PORT_BIT( 0x010, IP_ACTIVE_HIGH, IPT_OTHER) |
| 65 | | PORT_BIT( 0x020, IP_ACTIVE_HIGH, IPT_OTHER) |
| 66 | | PORT_BIT( 0x040, IP_ACTIVE_HIGH, IPT_OTHER) |
| 67 | | PORT_BIT( 0x080, IP_ACTIVE_HIGH, IPT_OTHER) |
| 68 | | PORT_BIT( 0x100, IP_ACTIVE_HIGH, IPT_OTHER) |
| 69 | | PORT_BIT( 0x200, IP_ACTIVE_HIGH, IPT_OTHER) |
| 58 | PORT_START("STYX") |
| 59 | PORT_BIT( 0xff, 100, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1, 0, 0) PORT_MINMAX(0,199) PORT_SENSITIVITY(50) PORT_KEYDELTA(8) |
| 70 | 60 | |
| 71 | | PORT_START("GRID.1") |
| 72 | | PORT_BIT( 0x001, IP_ACTIVE_HIGH, IPT_OTHER) |
| 73 | | PORT_BIT( 0x002, IP_ACTIVE_HIGH, IPT_OTHER) |
| 74 | | PORT_BIT( 0x004, IP_ACTIVE_HIGH, IPT_OTHER) |
| 75 | | PORT_BIT( 0x008, IP_ACTIVE_HIGH, IPT_OTHER) |
| 76 | | PORT_BIT( 0x010, IP_ACTIVE_HIGH, IPT_OTHER) |
| 77 | | PORT_BIT( 0x020, IP_ACTIVE_HIGH, IPT_OTHER) |
| 78 | | PORT_BIT( 0x040, IP_ACTIVE_HIGH, IPT_OTHER) |
| 79 | | PORT_BIT( 0x080, IP_ACTIVE_HIGH, IPT_OTHER) |
| 80 | | PORT_BIT( 0x100, IP_ACTIVE_HIGH, IPT_OTHER) |
| 81 | | PORT_BIT( 0x200, IP_ACTIVE_HIGH, IPT_OTHER) |
| 61 | PORT_START("STYY") |
| 62 | PORT_BIT( 0xff, 80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1, 0, 0) PORT_MINMAX(0,159) PORT_SENSITIVITY(50) PORT_KEYDELTA(8) |
| 63 | INPUT_PORTS_END |
| 82 | 64 | |
| 83 | | PORT_START("GRID.2") |
| 84 | | PORT_BIT( 0x001, IP_ACTIVE_HIGH, IPT_OTHER) |
| 85 | | PORT_BIT( 0x002, IP_ACTIVE_HIGH, IPT_OTHER) |
| 86 | | PORT_BIT( 0x004, IP_ACTIVE_HIGH, IPT_OTHER) |
| 87 | | PORT_BIT( 0x008, IP_ACTIVE_HIGH, IPT_OTHER) |
| 88 | | PORT_BIT( 0x010, IP_ACTIVE_HIGH, IPT_OTHER) |
| 89 | | PORT_BIT( 0x020, IP_ACTIVE_HIGH, IPT_OTHER) |
| 90 | | PORT_BIT( 0x040, IP_ACTIVE_HIGH, IPT_OTHER) |
| 91 | | PORT_BIT( 0x080, IP_ACTIVE_HIGH, IPT_OTHER) |
| 92 | | PORT_BIT( 0x100, IP_ACTIVE_HIGH, IPT_OTHER) |
| 93 | | PORT_BIT( 0x200, IP_ACTIVE_HIGH, IPT_OTHER) |
| 94 | | |
| 95 | | PORT_START("GRID.3") |
| 96 | | PORT_BIT( 0x001, IP_ACTIVE_HIGH, IPT_OTHER) |
| 97 | | PORT_BIT( 0x002, IP_ACTIVE_HIGH, IPT_OTHER) |
| 98 | | PORT_BIT( 0x004, IP_ACTIVE_HIGH, IPT_OTHER) |
| 99 | | PORT_BIT( 0x008, IP_ACTIVE_HIGH, IPT_OTHER) |
| 100 | | PORT_BIT( 0x010, IP_ACTIVE_HIGH, IPT_OTHER) |
| 101 | | PORT_BIT( 0x020, IP_ACTIVE_HIGH, IPT_OTHER) |
| 102 | | PORT_BIT( 0x040, IP_ACTIVE_HIGH, IPT_OTHER) |
| 103 | | PORT_BIT( 0x080, IP_ACTIVE_HIGH, IPT_OTHER) |
| 104 | | PORT_BIT( 0x100, IP_ACTIVE_HIGH, IPT_OTHER) |
| 105 | | PORT_BIT( 0x200, IP_ACTIVE_HIGH, IPT_OTHER) |
| 106 | | |
| 107 | | PORT_START("GRID.4") |
| 108 | | PORT_BIT( 0x001, IP_ACTIVE_HIGH, IPT_OTHER) |
| 109 | | PORT_BIT( 0x002, IP_ACTIVE_HIGH, IPT_OTHER) |
| 110 | | PORT_BIT( 0x004, IP_ACTIVE_HIGH, IPT_OTHER) |
| 111 | | PORT_BIT( 0x008, IP_ACTIVE_HIGH, IPT_OTHER) |
| 112 | | PORT_BIT( 0x010, IP_ACTIVE_HIGH, IPT_OTHER) |
| 113 | | PORT_BIT( 0x020, IP_ACTIVE_HIGH, IPT_OTHER) |
| 114 | | PORT_BIT( 0x040, IP_ACTIVE_HIGH, IPT_OTHER) |
| 115 | | PORT_BIT( 0x080, IP_ACTIVE_HIGH, IPT_OTHER) |
| 116 | | PORT_BIT( 0x100, IP_ACTIVE_HIGH, IPT_OTHER) |
| 117 | | PORT_BIT( 0x200, IP_ACTIVE_HIGH, IPT_OTHER) |
| 118 | | |
| 119 | | PORT_START("GRID.5") |
| 120 | | PORT_BIT( 0x001, IP_ACTIVE_HIGH, IPT_OTHER) |
| 121 | | PORT_BIT( 0x002, IP_ACTIVE_HIGH, IPT_OTHER) |
| 122 | | PORT_BIT( 0x004, IP_ACTIVE_HIGH, IPT_OTHER) |
| 123 | | PORT_BIT( 0x008, IP_ACTIVE_HIGH, IPT_OTHER) |
| 124 | | PORT_BIT( 0x010, IP_ACTIVE_HIGH, IPT_OTHER) |
| 125 | | PORT_BIT( 0x020, IP_ACTIVE_HIGH, IPT_OTHER) |
| 126 | | PORT_BIT( 0x040, IP_ACTIVE_HIGH, IPT_OTHER) |
| 127 | | PORT_BIT( 0x080, IP_ACTIVE_HIGH, IPT_OTHER) |
| 128 | | PORT_BIT( 0x100, IP_ACTIVE_HIGH, IPT_OTHER) |
| 129 | | PORT_BIT( 0x200, IP_ACTIVE_HIGH, IPT_OTHER) |
| 130 | | |
| 131 | | PORT_START("GRID.6") |
| 132 | | PORT_BIT( 0x001, IP_ACTIVE_HIGH, IPT_OTHER) |
| 133 | | PORT_BIT( 0x002, IP_ACTIVE_HIGH, IPT_OTHER) |
| 134 | | PORT_BIT( 0x004, IP_ACTIVE_HIGH, IPT_OTHER) |
| 135 | | PORT_BIT( 0x008, IP_ACTIVE_HIGH, IPT_OTHER) |
| 136 | | PORT_BIT( 0x010, IP_ACTIVE_HIGH, IPT_OTHER) |
| 137 | | PORT_BIT( 0x020, IP_ACTIVE_HIGH, IPT_OTHER) |
| 138 | | PORT_BIT( 0x040, IP_ACTIVE_HIGH, IPT_OTHER) |
| 139 | | PORT_BIT( 0x080, IP_ACTIVE_HIGH, IPT_OTHER) |
| 140 | | PORT_BIT( 0x100, IP_ACTIVE_HIGH, IPT_OTHER) |
| 141 | | PORT_BIT( 0x200, IP_ACTIVE_HIGH, IPT_OTHER) |
| 142 | | |
| 143 | | PORT_START("GRID.7") |
| 144 | | PORT_BIT( 0x001, IP_ACTIVE_HIGH, IPT_OTHER) |
| 145 | | PORT_BIT( 0x002, IP_ACTIVE_HIGH, IPT_OTHER) |
| 146 | | PORT_BIT( 0x004, IP_ACTIVE_HIGH, IPT_OTHER) |
| 147 | | PORT_BIT( 0x008, IP_ACTIVE_HIGH, IPT_OTHER) |
| 148 | | PORT_BIT( 0x010, IP_ACTIVE_HIGH, IPT_OTHER) |
| 149 | | PORT_BIT( 0x020, IP_ACTIVE_HIGH, IPT_OTHER) |
| 150 | | PORT_BIT( 0x040, IP_ACTIVE_HIGH, IPT_OTHER) |
| 151 | | PORT_BIT( 0x080, IP_ACTIVE_HIGH, IPT_OTHER) |
| 152 | | PORT_BIT( 0x100, IP_ACTIVE_HIGH, IPT_OTHER) |
| 153 | | PORT_BIT( 0x200, IP_ACTIVE_HIGH, IPT_OTHER) |
| 154 | | |
| 155 | | PORT_START("GRID.8") |
| 156 | | PORT_BIT( 0x001, IP_ACTIVE_HIGH, IPT_OTHER) |
| 157 | | PORT_BIT( 0x002, IP_ACTIVE_HIGH, IPT_OTHER) |
| 158 | | PORT_BIT( 0x004, IP_ACTIVE_HIGH, IPT_OTHER) |
| 159 | | PORT_BIT( 0x008, IP_ACTIVE_HIGH, IPT_OTHER) |
| 160 | | PORT_BIT( 0x010, IP_ACTIVE_HIGH, IPT_OTHER) |
| 161 | | PORT_BIT( 0x020, IP_ACTIVE_HIGH, IPT_OTHER) |
| 162 | | PORT_BIT( 0x040, IP_ACTIVE_HIGH, IPT_OTHER) |
| 163 | | PORT_BIT( 0x080, IP_ACTIVE_HIGH, IPT_OTHER) |
| 164 | | PORT_BIT( 0x100, IP_ACTIVE_HIGH, IPT_OTHER) |
| 165 | | PORT_BIT( 0x200, IP_ACTIVE_HIGH, IPT_OTHER) |
| 166 | | |
| 167 | | PORT_START("GRID.9") |
| 168 | | PORT_BIT( 0x001, IP_ACTIVE_HIGH, IPT_OTHER) |
| 169 | | PORT_BIT( 0x002, IP_ACTIVE_HIGH, IPT_OTHER) |
| 170 | | PORT_BIT( 0x004, IP_ACTIVE_HIGH, IPT_OTHER) |
| 171 | | PORT_BIT( 0x008, IP_ACTIVE_HIGH, IPT_OTHER) |
| 172 | | PORT_BIT( 0x010, IP_ACTIVE_HIGH, IPT_OTHER) |
| 173 | | PORT_BIT( 0x020, IP_ACTIVE_HIGH, IPT_OTHER) |
| 174 | | PORT_BIT( 0x040, IP_ACTIVE_HIGH, IPT_OTHER) |
| 175 | | PORT_BIT( 0x080, IP_ACTIVE_HIGH, IPT_OTHER) |
| 176 | | PORT_BIT( 0x100, IP_ACTIVE_HIGH, IPT_OTHER) |
| 177 | | PORT_BIT( 0x200, IP_ACTIVE_HIGH, IPT_OTHER) |
| 178 | | |
| 179 | | PORT_START("GRID.10") |
| 180 | | PORT_BIT( 0x001, IP_ACTIVE_HIGH, IPT_OTHER) |
| 181 | | PORT_BIT( 0x002, IP_ACTIVE_HIGH, IPT_OTHER) |
| 182 | | PORT_BIT( 0x004, IP_ACTIVE_HIGH, IPT_OTHER) |
| 183 | | PORT_BIT( 0x008, IP_ACTIVE_HIGH, IPT_OTHER) |
| 184 | | PORT_BIT( 0x010, IP_ACTIVE_HIGH, IPT_OTHER) |
| 185 | | PORT_BIT( 0x020, IP_ACTIVE_HIGH, IPT_OTHER) |
| 186 | | PORT_BIT( 0x040, IP_ACTIVE_HIGH, IPT_OTHER) |
| 187 | | PORT_BIT( 0x080, IP_ACTIVE_HIGH, IPT_OTHER) |
| 188 | | PORT_BIT( 0x100, IP_ACTIVE_HIGH, IPT_OTHER) |
| 189 | | PORT_BIT( 0x200, IP_ACTIVE_HIGH, IPT_OTHER) |
| 190 | | |
| 191 | | PORT_START("GRID.11") |
| 192 | | PORT_BIT( 0x001, IP_ACTIVE_HIGH, IPT_OTHER) |
| 193 | | PORT_BIT( 0x002, IP_ACTIVE_HIGH, IPT_OTHER) |
| 194 | | PORT_BIT( 0x004, IP_ACTIVE_HIGH, IPT_OTHER) |
| 195 | | PORT_BIT( 0x008, IP_ACTIVE_HIGH, IPT_OTHER) |
| 196 | | PORT_BIT( 0x010, IP_ACTIVE_HIGH, IPT_OTHER) |
| 197 | | PORT_BIT( 0x020, IP_ACTIVE_HIGH, IPT_OTHER) |
| 198 | | PORT_BIT( 0x040, IP_ACTIVE_HIGH, IPT_OTHER) |
| 199 | | PORT_BIT( 0x080, IP_ACTIVE_HIGH, IPT_OTHER) |
| 200 | | PORT_BIT( 0x100, IP_ACTIVE_HIGH, IPT_OTHER) |
| 201 | | PORT_BIT( 0x200, IP_ACTIVE_HIGH, IPT_OTHER) |
| 202 | | |
| 203 | | PORT_START("GRID.12") |
| 204 | | PORT_BIT( 0x001, IP_ACTIVE_HIGH, IPT_OTHER) |
| 205 | | PORT_BIT( 0x002, IP_ACTIVE_HIGH, IPT_OTHER) |
| 206 | | PORT_BIT( 0x004, IP_ACTIVE_HIGH, IPT_OTHER) |
| 207 | | PORT_BIT( 0x008, IP_ACTIVE_HIGH, IPT_OTHER) |
| 208 | | PORT_BIT( 0x010, IP_ACTIVE_HIGH, IPT_OTHER) |
| 209 | | PORT_BIT( 0x020, IP_ACTIVE_HIGH, IPT_OTHER) |
| 210 | | PORT_BIT( 0x040, IP_ACTIVE_HIGH, IPT_OTHER) |
| 211 | | PORT_BIT( 0x080, IP_ACTIVE_HIGH, IPT_OTHER) |
| 212 | | PORT_BIT( 0x100, IP_ACTIVE_HIGH, IPT_OTHER) |
| 213 | | PORT_BIT( 0x200, IP_ACTIVE_HIGH, IPT_OTHER) |
| 214 | | INPUT_PORTS_END |
| 215 | | |
| 216 | 65 | static const unsigned char palette_gamecom[] = |
| 217 | 66 | { |
| 218 | 67 | 0xDF, 0xFF, 0x8F, /* White */ |
| r241897 | r241898 | |
| 259 | 108 | MCFG_SCREEN_REFRESH_RATE( 59.732155 ) |
| 260 | 109 | MCFG_SCREEN_VBLANK_TIME(500) |
| 261 | 110 | MCFG_SCREEN_UPDATE_DRIVER(gamecom_state, screen_update) |
| 262 | | MCFG_SCREEN_SIZE( 208, 160 ) |
| 263 | | MCFG_SCREEN_VISIBLE_AREA( 0, 207, 0, 159 ) |
| 111 | MCFG_SCREEN_SIZE( 200, 200 ) |
| 112 | MCFG_SCREEN_VISIBLE_AREA( 0, 199, 0, 159 ) |
| 264 | 113 | MCFG_SCREEN_PALETTE("palette") |
| 265 | 114 | |
| 266 | | MCFG_DEFAULT_LAYOUT(layout_gamecom) |
| 115 | MCFG_DEFAULT_LAYOUT(layout_lcd) |
| 267 | 116 | MCFG_PALETTE_ADD("palette", 5) |
| 268 | 117 | MCFG_PALETTE_INIT_OWNER(gamecom_state, gamecom) |
| 269 | 118 | |
| r241897 | r241898 | |
| 294 | 143 | ROM_LOAD( "external.bin", 0x00000, 0x40000, CRC(e235a589) SHA1(97f782e72d738f4d7b861363266bf46b438d9b50) ) |
| 295 | 144 | ROM_END |
| 296 | 145 | |
| 297 | | /* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */ |
| 298 | | CONS( 1997, gamecom, 0, 0, gamecom, gamecom, gamecom_state, gamecom, "Tiger", "Game.com", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND) |
| 146 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ |
| 147 | CONS( 1997, gamecom, 0, 0, gamecom, gamecom, gamecom_state, gamecom,"Tiger", "Game.com", GAME_NOT_WORKING | GAME_NO_SOUND) |
trunk/src/mess/drivers/ngen.c
| r241897 | r241898 | |
| 14 | 14 | #include "machine/am9517a.h" |
| 15 | 15 | #include "machine/pic8259.h" |
| 16 | 16 | #include "machine/pit8253.h" |
| 17 | | #include "machine/z80dart.h" |
| 18 | 17 | |
| 19 | 18 | class ngen_state : public driver_device |
| 20 | 19 | { |
| r241897 | r241898 | |
| 24 | 23 | m_maincpu(*this,"maincpu"), |
| 25 | 24 | m_crtc(*this,"crtc"), |
| 26 | 25 | m_viduart(*this,"videouart"), |
| 27 | | m_iouart(*this,"iouart"), |
| 28 | 26 | m_dmac(*this,"dmac"), |
| 29 | 27 | m_pic(*this,"pic"), |
| 30 | | m_pit(*this,"pit"), |
| 31 | | m_vram(*this,"vram"), |
| 32 | | m_fontram(*this,"fontram") |
| 28 | m_pit(*this,"pit") |
| 33 | 29 | {} |
| 34 | 30 | |
| 35 | 31 | DECLARE_WRITE_LINE_MEMBER(pit_out0_w); |
| r241897 | r241898 | |
| 47 | 43 | required_device<cpu_device> m_maincpu; |
| 48 | 44 | required_device<mc6845_device> m_crtc; |
| 49 | 45 | required_device<i8251_device> m_viduart; |
| 50 | | required_device<upd7201_device> m_iouart; |
| 51 | 46 | required_device<am9517a_device> m_dmac; |
| 52 | 47 | required_device<pic8259_device> m_pic; |
| 53 | 48 | required_device<pit8254_device> m_pit; |
| 54 | | required_shared_ptr<UINT16> m_vram; |
| 55 | | required_shared_ptr<UINT16> m_fontram; |
| 56 | 49 | |
| 57 | 50 | UINT16 m_peripheral; |
| 58 | 51 | UINT16 m_upper; |
| 59 | 52 | UINT16 m_middle; |
| 60 | 53 | UINT16 m_port00; |
| 61 | | UINT16 m_periph141; |
| 62 | 54 | }; |
| 63 | 55 | |
| 64 | 56 | WRITE_LINE_MEMBER(ngen_state::pit_out0_w) |
| 65 | 57 | { |
| 66 | | //m_pic->ir0_w(state); |
| 67 | | logerror("80186 Timer 1 state %i\n",state); |
| 58 | m_pic->ir0_w(state); |
| 68 | 59 | } |
| 69 | 60 | |
| 70 | 61 | WRITE_LINE_MEMBER(ngen_state::pit_out1_w) |
| 71 | 62 | { |
| 72 | | logerror("PIT Timer 1 state %i\n",state); |
| 73 | 63 | } |
| 74 | 64 | |
| 75 | 65 | WRITE_LINE_MEMBER(ngen_state::pit_out2_w) |
| 76 | 66 | { |
| 77 | | logerror("PIT Timer 2 state %i\n",state); |
| 78 | 67 | } |
| 79 | 68 | |
| 80 | 69 | WRITE16_MEMBER(ngen_state::cpu_peripheral_cb) |
| r241897 | r241898 | |
| 108 | 97 | } |
| 109 | 98 | |
| 110 | 99 | // 80186 peripheral space |
| 111 | | // Largely guesswork at this stage |
| 112 | 100 | WRITE16_MEMBER(ngen_state::peripheral_w) |
| 113 | 101 | { |
| 114 | 102 | switch(offset) |
| 115 | 103 | { |
| 116 | | case 0x141: |
| 117 | | // bit 1 enables speaker? |
| 118 | | COMBINE_DATA(&m_periph141); |
| 119 | | break; |
| 120 | | case 0x144: |
| 121 | | if(mem_mask & 0x00ff) |
| 122 | | m_crtc->address_w(space,0,data & 0xff); |
| 123 | | break; |
| 124 | | case 0x145: |
| 125 | | if(mem_mask & 0x00ff) |
| 126 | | m_crtc->register_w(space,0,data & 0xff); |
| 127 | | break; |
| 128 | | case 0x146: |
| 129 | | if(mem_mask & 0x00ff) |
| 130 | | m_iouart->ba_cd_w(space,0,data & 0xff); |
| 131 | | logerror("Video write offset 0x146 data %04x mask %04x\n",data,mem_mask); |
| 132 | | break; |
| 133 | 104 | case 0x147: |
| 105 | if(mem_mask & 0xff00) |
| 106 | m_pic->write(space,0,(data >> 8) & 0xff); |
| 134 | 107 | if(mem_mask & 0x00ff) |
| 135 | | m_iouart->ba_cd_w(space,1,data & 0xff); |
| 136 | | logerror("Video write offset 0x147 data %04x mask %04x\n",data,mem_mask); |
| 108 | m_pic->write(space,1,data & 0xff); |
| 137 | 109 | break; |
| 138 | | default: |
| 139 | | logerror("(PC=%06x) Unknown 80186 peripheral write offset %04x data %04x mask %04x\n",m_maincpu->device_t::safe_pc(),offset,data,mem_mask); |
| 140 | 110 | } |
| 111 | logerror("Peripheral write offset %04x data %04x mask %04x\n",offset,data,mem_mask); |
| 141 | 112 | } |
| 142 | 113 | |
| 143 | 114 | READ16_MEMBER(ngen_state::peripheral_r) |
| 144 | 115 | { |
| 145 | | UINT16 ret = 0xffff; |
| 116 | UINT16 ret = 0xff; |
| 146 | 117 | switch(offset) |
| 147 | 118 | { |
| 148 | | case 0x141: |
| 149 | | ret = m_periph141; |
| 150 | | break; |
| 151 | | case 0x144: |
| 152 | | if(mem_mask & 0x00ff) |
| 153 | | ret = m_crtc->status_r(space,0); |
| 154 | | break; |
| 155 | | case 0x145: |
| 156 | | if(mem_mask & 0x00ff) |
| 157 | | ret = m_crtc->register_r(space,0); |
| 158 | | break; |
| 159 | 119 | case 0x146: |
| 160 | 120 | if(mem_mask & 0x00ff) |
| 161 | | ret = m_iouart->ba_cd_r(space,0); |
| 121 | ret = m_pic->read(space,0); |
| 162 | 122 | break; |
| 163 | | case 0x147: // definitely video related, likely UART sending data to the video board |
| 123 | case 0x147: |
| 164 | 124 | if(mem_mask & 0x00ff) |
| 165 | | ret = m_iouart->ba_cd_r(space,1); |
| 166 | | // expects bit 0 to be set (Video ready signal?) |
| 167 | | ret |= 1; |
| 125 | ret = m_pic->read(space,1); |
| 168 | 126 | break; |
| 169 | | default: |
| 170 | | logerror("(PC=%06x) Unknown 80186 peripheral read offset %04x mask %04x returning %04x\n",m_maincpu->device_t::safe_pc(),offset,mem_mask,ret); |
| 171 | 127 | } |
| 128 | logerror("Peripheral read offset %04x mask %04x\n",offset,mem_mask); |
| 172 | 129 | return ret; |
| 173 | 130 | } |
| 174 | 131 | |
| r241897 | r241898 | |
| 190 | 147 | |
| 191 | 148 | MC6845_UPDATE_ROW( ngen_state::crtc_update_row ) |
| 192 | 149 | { |
| 193 | | UINT16 addr = ma; |
| 194 | | |
| 195 | | for(int x=0;x<bitmap.width();x+=9) |
| 196 | | { |
| 197 | | UINT8 ch = m_vram[addr++]; |
| 198 | | for(int z=0;z<9;z++) |
| 199 | | { |
| 200 | | if(BIT(m_fontram[ch*16+ra],8-z)) |
| 201 | | bitmap.pix32(y,x+z) = rgb_t(0,0xff,0); |
| 202 | | else |
| 203 | | bitmap.pix32(y,x+z) = rgb_t(0,0,0); |
| 204 | | } |
| 205 | | } |
| 206 | 150 | } |
| 207 | 151 | |
| 208 | 152 | static ADDRESS_MAP_START( ngen_mem, AS_PROGRAM, 16, ngen_state ) |
| 209 | | AM_RANGE(0x00000, 0xf7fff) AM_RAM |
| 210 | | AM_RANGE(0xf8000, 0xf9fff) AM_RAM AM_SHARE("vram") |
| 211 | | AM_RANGE(0xfa000, 0xfbfff) AM_RAM AM_SHARE("fontram") |
| 153 | AM_RANGE(0x00000, 0xfdfff) AM_RAM |
| 212 | 154 | AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION("bios",0) |
| 213 | 155 | ADDRESS_MAP_END |
| 214 | 156 | |
| r241897 | r241898 | |
| 255 | 197 | |
| 256 | 198 | MCFG_DEVICE_ADD("dmac", AM9517A, XTAL_14_7456MHz / 3) // NEC D8237A, divisor unknown |
| 257 | 199 | |
| 258 | | // I/O board |
| 259 | | MCFG_UPD7201_ADD("iouart",XTAL_14_7456MHz / 3, 0,0,0,0) // no clock visible on I/O board, guessing for now |
| 260 | | |
| 261 | 200 | // video board |
| 262 | 201 | MCFG_SCREEN_ADD("screen", RASTER) |
| 263 | 202 | MCFG_SCREEN_SIZE(720,348) |
| 264 | | MCFG_SCREEN_VISIBLE_AREA(0,719,0,347) |
| 265 | 203 | MCFG_SCREEN_REFRESH_RATE(60) |
| 266 | 204 | MCFG_SCREEN_UPDATE_DEVICE("crtc",mc6845_device, screen_update) |
| 267 | 205 | |
| 268 | | MCFG_MC6845_ADD("crtc", MC6845, NULL, 19980000 / 9) // divisor unknown -- /9 gives 60Hz output, so likely correct |
| 206 | MCFG_MC6845_ADD("crtc", MC6845, NULL, 19980000 / 16) // divisor unknown |
| 269 | 207 | MCFG_MC6845_SHOW_BORDER_AREA(false) |
| 270 | 208 | MCFG_MC6845_CHAR_WIDTH(9) |
| 271 | 209 | MCFG_MC6845_UPDATE_ROW_CB(ngen_state, crtc_update_row) |
| 272 | | MCFG_VIDEO_SET_SCREEN("screen") |
| 273 | 210 | |
| 274 | | MCFG_DEVICE_ADD("videouart", I8251, 19980000 / 9) // divisor unknown |
| 211 | MCFG_DEVICE_ADD("videouart", I8251, 19980000 / 16) // divisor unknown |
| 275 | 212 | |
| 276 | 213 | MACHINE_CONFIG_END |
| 277 | 214 | |
trunk/src/mess/includes/gamecom.h
| r241897 | r241898 | |
| 16 | 16 | #include "sound/dac.h" |
| 17 | 17 | #include "bus/generic/slot.h" |
| 18 | 18 | #include "bus/generic/carts.h" |
| 19 | | #include "machine/nvram.h" |
| 20 | 19 | |
| 20 | #include "rendlay.h" |
| 21 | |
| 21 | 22 | /* SM8521 register addresses */ |
| 22 | 23 | enum |
| 23 | 24 | { |
| r241897 | r241898 | |
| 211 | 212 | { |
| 212 | 213 | public: |
| 213 | 214 | gamecom_state(const machine_config &mconfig, device_type type, const char *tag) |
| 214 | | : driver_device(mconfig, type, tag) |
| 215 | | , m_p_videoram(*this,"videoram") |
| 216 | | , m_p_nvram(*this,"nvram") |
| 217 | | , m_maincpu(*this, "maincpu") |
| 218 | | , m_dac(*this, "dac") |
| 219 | | , m_cart1(*this, "cartslot1") |
| 220 | | , m_cart2(*this, "cartslot2") |
| 221 | | , m_bank1(*this, "bank1") |
| 222 | | , m_bank2(*this, "bank2") |
| 223 | | , m_bank3(*this, "bank3") |
| 224 | | , m_bank4(*this, "bank4") |
| 225 | | , m_region_maincpu(*this, "maincpu") |
| 226 | | , m_region_kernel(*this, "kernel") |
| 227 | | , m_io_in0(*this, "IN0") |
| 228 | | , m_io_in1(*this, "IN1") |
| 229 | | , m_io_in2(*this, "IN2") |
| 230 | | , m_io_grid(*this, "GRID") |
| 215 | : driver_device(mconfig, type, tag), |
| 216 | m_maincpu(*this, "maincpu"), |
| 217 | m_dac(*this, "dac"), |
| 218 | m_cart1(*this, "cartslot1"), |
| 219 | m_cart2(*this, "cartslot2"), |
| 220 | m_p_nvram(*this,"p_nvram"), |
| 221 | m_p_videoram(*this,"p_videoram"), |
| 222 | m_bank1(*this, "bank1"), |
| 223 | m_bank2(*this, "bank2"), |
| 224 | m_bank3(*this, "bank3"), |
| 225 | m_bank4(*this, "bank4"), |
| 226 | m_region_maincpu(*this, "maincpu"), |
| 227 | m_region_kernel(*this, "kernel"), |
| 228 | m_io_in0(*this, "IN0"), |
| 229 | m_io_in1(*this, "IN1"), |
| 230 | m_io_in2(*this, "IN2"), |
| 231 | m_io_styx(*this, "STYX"), |
| 232 | m_io_styy(*this, "STYY") |
| 231 | 233 | { } |
| 232 | 234 | |
| 235 | required_device<cpu_device> m_maincpu; |
| 236 | required_device<dac_device> m_dac; |
| 237 | required_device<generic_slot_device> m_cart1; |
| 238 | required_device<generic_slot_device> m_cart2; |
| 233 | 239 | DECLARE_READ8_MEMBER( gamecom_internal_r ); |
| 234 | 240 | DECLARE_READ8_MEMBER( gamecom_pio_r ); |
| 235 | 241 | DECLARE_WRITE8_MEMBER( gamecom_internal_w ); |
| 236 | 242 | DECLARE_WRITE8_MEMBER( gamecom_pio_w ); |
| 237 | | DECLARE_DRIVER_INIT(gamecom); |
| 238 | | DECLARE_PALETTE_INIT(gamecom); |
| 239 | | INTERRUPT_GEN_MEMBER(gamecom_interrupt); |
| 240 | | TIMER_CALLBACK_MEMBER(gamecom_clock_timer_callback); |
| 241 | | TIMER_CALLBACK_MEMBER(gamecom_scanline); |
| 242 | | DECLARE_WRITE8_MEMBER( gamecom_handle_dma ); |
| 243 | | DECLARE_WRITE8_MEMBER( gamecom_update_timers ); |
| 244 | | DECLARE_DEVICE_IMAGE_LOAD_MEMBER( gamecom_cart1 ); |
| 245 | | DECLARE_DEVICE_IMAGE_LOAD_MEMBER( gamecom_cart2 ); |
| 246 | | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 247 | | private: |
| 243 | required_shared_ptr<UINT8> m_p_nvram; |
| 248 | 244 | UINT8 *m_p_ram; |
| 245 | required_shared_ptr<UINT8> m_p_videoram; |
| 249 | 246 | UINT8 *m_cart_ptr; |
| 250 | | UINT8 m_lcdc_reg; |
| 251 | | UINT8 m_lch_reg; |
| 252 | | UINT8 m_lcv_reg; |
| 253 | | UINT16 m_scanline; |
| 254 | | UINT16 m_base_address; |
| 255 | 247 | memory_region *m_cart1_rom; |
| 256 | 248 | memory_region *m_cart2_rom; |
| 257 | 249 | emu_timer *m_clock_timer; |
| r241897 | r241898 | |
| 259 | 251 | GAMECOM_DMA m_dma; |
| 260 | 252 | GAMECOM_TIMER m_timer[2]; |
| 261 | 253 | gamecom_sound_t m_sound; |
| 254 | int m_stylus_x; |
| 255 | int m_stylus_y; |
| 256 | int m_scanline; |
| 257 | unsigned int m_base_address; |
| 262 | 258 | bitmap_ind16 m_bitmap; |
| 263 | 259 | void gamecom_set_mmu(UINT8 mmu, UINT8 data); |
| 264 | 260 | void handle_stylus_press(int column); |
| 261 | UINT8 m_lcdc_reg; |
| 262 | UINT8 m_lch_reg; |
| 263 | UINT8 m_lcv_reg; |
| 265 | 264 | void recompute_lcd_params(); |
| 266 | 265 | void handle_input_press(UINT16 mux_data); |
| 267 | | int common_load(device_image_interface &image, generic_slot_device *slot); |
| 266 | |
| 267 | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 268 | DECLARE_DRIVER_INIT(gamecom); |
| 268 | 269 | virtual void machine_reset(); |
| 269 | 270 | virtual void video_start(); |
| 270 | | required_shared_ptr<UINT8> m_p_videoram; |
| 271 | | required_shared_ptr<UINT8> m_p_nvram; |
| 272 | | required_device<cpu_device> m_maincpu; |
| 273 | | required_device<dac_device> m_dac; |
| 274 | | required_device<generic_slot_device> m_cart1; |
| 275 | | required_device<generic_slot_device> m_cart2; |
| 271 | DECLARE_PALETTE_INIT(gamecom); |
| 272 | INTERRUPT_GEN_MEMBER(gamecom_interrupt); |
| 273 | TIMER_CALLBACK_MEMBER(gamecom_clock_timer_callback); |
| 274 | TIMER_CALLBACK_MEMBER(gamecom_scanline); |
| 275 | DECLARE_WRITE8_MEMBER( gamecom_handle_dma ); |
| 276 | DECLARE_WRITE8_MEMBER( gamecom_update_timers ); |
| 277 | int common_load(device_image_interface &image, generic_slot_device *slot); |
| 278 | DECLARE_DEVICE_IMAGE_LOAD_MEMBER( gamecom_cart1 ); |
| 279 | DECLARE_DEVICE_IMAGE_LOAD_MEMBER( gamecom_cart2 ); |
| 280 | |
| 281 | protected: |
| 276 | 282 | required_memory_bank m_bank1; |
| 277 | 283 | required_memory_bank m_bank2; |
| 278 | 284 | required_memory_bank m_bank3; |
| r241897 | r241898 | |
| 282 | 288 | required_ioport m_io_in0; |
| 283 | 289 | required_ioport m_io_in1; |
| 284 | 290 | required_ioport m_io_in2; |
| 285 | | required_ioport_array<13> m_io_grid; |
| 291 | required_ioport m_io_styx; |
| 292 | required_ioport m_io_styy; |
| 286 | 293 | }; |
| 287 | 294 | |
| 288 | 295 | #endif /* GAMECOM_H_ */ |
trunk/src/mess/layout/gamecom.lay
| r241897 | r241898 | |
| 1 | | <!-- gamecom.lay --> |
| 2 | | |
| 3 | | <mamelayout version="2"> |
| 4 | | |
| 5 | | <element name="grid"><rect><color red="0.0" green="0.0" blue="0.0" alpha="0.0"/></rect></element> |
| 6 | | |
| 7 | | <view name="Default Grid"> |
| 8 | | |
| 9 | | <backdrop element="grid" inputtag="GRID.0" inputmask="0x01" > |
| 10 | | <bounds x="0" y="0" width="16" height="16" /> |
| 11 | | </backdrop> |
| 12 | | <backdrop element="grid" inputtag="GRID.1" inputmask="0x01" > |
| 13 | | <bounds x="16" y="0" width="16" height="16" /> |
| 14 | | </backdrop> |
| 15 | | <backdrop element="grid" inputtag="GRID.2" inputmask="0x01" > |
| 16 | | <bounds x="32" y="0" width="16" height="16" /> |
| 17 | | </backdrop> |
| 18 | | <backdrop element="grid" inputtag="GRID.3" inputmask="0x01" > |
| 19 | | <bounds x="48" y="0" width="16" height="16" /> |
| 20 | | </backdrop> |
| 21 | | <backdrop element="grid" inputtag="GRID.4" inputmask="0x01" > |
| 22 | | <bounds x="64" y="0" width="16" height="16" /> |
| 23 | | </backdrop> |
| 24 | | <backdrop element="grid" inputtag="GRID.5" inputmask="0x01" > |
| 25 | | <bounds x="80" y="0" width="16" height="16" /> |
| 26 | | </backdrop> |
| 27 | | <backdrop element="grid" inputtag="GRID.6" inputmask="0x01" > |
| 28 | | <bounds x="96" y="0" width="16" height="16" /> |
| 29 | | </backdrop> |
| 30 | | <backdrop element="grid" inputtag="GRID.7" inputmask="0x01" > |
| 31 | | <bounds x="112" y="0" width="16" height="16" /> |
| 32 | | </backdrop> |
| 33 | | <backdrop element="grid" inputtag="GRID.8" inputmask="0x01" > |
| 34 | | <bounds x="128" y="0" width="16" height="16" /> |
| 35 | | </backdrop> |
| 36 | | <backdrop element="grid" inputtag="GRID.9" inputmask="0x01" > |
| 37 | | <bounds x="144" y="0" width="16" height="16" /> |
| 38 | | </backdrop> |
| 39 | | <backdrop element="grid" inputtag="GRID.10" inputmask="0x01" > |
| 40 | | <bounds x="160" y="0" width="16" height="16" /> |
| 41 | | </backdrop> |
| 42 | | <backdrop element="grid" inputtag="GRID.11" inputmask="0x01" > |
| 43 | | <bounds x="176" y="0" width="16" height="16" /> |
| 44 | | </backdrop> |
| 45 | | <backdrop element="grid" inputtag="GRID.12" inputmask="0x01" > |
| 46 | | <bounds x="192" y="0" width="16" height="16" /> |
| 47 | | </backdrop> |
| 48 | | |
| 49 | | <backdrop element="grid" inputtag="GRID.0" inputmask="0x02" > |
| 50 | | <bounds x="0" y="16" width="16" height="16" /> |
| 51 | | </backdrop> |
| 52 | | <backdrop element="grid" inputtag="GRID.1" inputmask="0x02" > |
| 53 | | <bounds x="16" y="16" width="16" height="16" /> |
| 54 | | </backdrop> |
| 55 | | <backdrop element="grid" inputtag="GRID.2" inputmask="0x02" > |
| 56 | | <bounds x="32" y="16" width="16" height="16" /> |
| 57 | | </backdrop> |
| 58 | | <backdrop element="grid" inputtag="GRID.3" inputmask="0x02" > |
| 59 | | <bounds x="48" y="16" width="16" height="16" /> |
| 60 | | </backdrop> |
| 61 | | <backdrop element="grid" inputtag="GRID.4" inputmask="0x02" > |
| 62 | | <bounds x="64" y="16" width="16" height="16" /> |
| 63 | | </backdrop> |
| 64 | | <backdrop element="grid" inputtag="GRID.5" inputmask="0x02" > |
| 65 | | <bounds x="80" y="16" width="16" height="16" /> |
| 66 | | </backdrop> |
| 67 | | <backdrop element="grid" inputtag="GRID.6" inputmask="0x02" > |
| 68 | | <bounds x="96" y="16" width="16" height="16" /> |
| 69 | | </backdrop> |
| 70 | | <backdrop element="grid" inputtag="GRID.7" inputmask="0x02" > |
| 71 | | <bounds x="112" y="16" width="16" height="16" /> |
| 72 | | </backdrop> |
| 73 | | <backdrop element="grid" inputtag="GRID.8" inputmask="0x02" > |
| 74 | | <bounds x="128" y="16" width="16" height="16" /> |
| 75 | | </backdrop> |
| 76 | | <backdrop element="grid" inputtag="GRID.9" inputmask="0x02" > |
| 77 | | <bounds x="144" y="16" width="16" height="16" /> |
| 78 | | </backdrop> |
| 79 | | <backdrop element="grid" inputtag="GRID.10" inputmask="0x02" > |
| 80 | | <bounds x="160" y="16" width="16" height="16" /> |
| 81 | | </backdrop> |
| 82 | | <backdrop element="grid" inputtag="GRID.11" inputmask="0x02" > |
| 83 | | <bounds x="176" y="16" width="16" height="16" /> |
| 84 | | </backdrop> |
| 85 | | <backdrop element="grid" inputtag="GRID.12" inputmask="0x02" > |
| 86 | | <bounds x="192" y="16" width="16" height="16" /> |
| 87 | | </backdrop> |
| 88 | | |
| 89 | | <backdrop element="grid" inputtag="GRID.0" inputmask="0x04" > |
| 90 | | <bounds x="0" y="32" width="16" height="16" /> |
| 91 | | </backdrop> |
| 92 | | <backdrop element="grid" inputtag="GRID.1" inputmask="0x04" > |
| 93 | | <bounds x="16" y="32" width="16" height="16" /> |
| 94 | | </backdrop> |
| 95 | | <backdrop element="grid" inputtag="GRID.2" inputmask="0x04" > |
| 96 | | <bounds x="32" y="32" width="16" height="16" /> |
| 97 | | </backdrop> |
| 98 | | <backdrop element="grid" inputtag="GRID.3" inputmask="0x04" > |
| 99 | | <bounds x="48" y="32" width="16" height="16" /> |
| 100 | | </backdrop> |
| 101 | | <backdrop element="grid" inputtag="GRID.4" inputmask="0x04" > |
| 102 | | <bounds x="64" y="32" width="16" height="16" /> |
| 103 | | </backdrop> |
| 104 | | <backdrop element="grid" inputtag="GRID.5" inputmask="0x04" > |
| 105 | | <bounds x="80" y="32" width="16" height="16" /> |
| 106 | | </backdrop> |
| 107 | | <backdrop element="grid" inputtag="GRID.6" inputmask="0x04" > |
| 108 | | <bounds x="96" y="32" width="16" height="16" /> |
| 109 | | </backdrop> |
| 110 | | <backdrop element="grid" inputtag="GRID.7" inputmask="0x04" > |
| 111 | | <bounds x="112" y="32" width="16" height="16" /> |
| 112 | | </backdrop> |
| 113 | | <backdrop element="grid" inputtag="GRID.8" inputmask="0x04" > |
| 114 | | <bounds x="128" y="32" width="16" height="16" /> |
| 115 | | </backdrop> |
| 116 | | <backdrop element="grid" inputtag="GRID.9" inputmask="0x04" > |
| 117 | | <bounds x="144" y="32" width="16" height="16" /> |
| 118 | | </backdrop> |
| 119 | | <backdrop element="grid" inputtag="GRID.10" inputmask="0x04" > |
| 120 | | <bounds x="160" y="32" width="16" height="16" /> |
| 121 | | </backdrop> |
| 122 | | <backdrop element="grid" inputtag="GRID.11" inputmask="0x04" > |
| 123 | | <bounds x="176" y="32" width="16" height="16" /> |
| 124 | | </backdrop> |
| 125 | | <backdrop element="grid" inputtag="GRID.12" inputmask="0x04" > |
| 126 | | <bounds x="192" y="32" width="16" height="16" /> |
| 127 | | </backdrop> |
| 128 | | |
| 129 | | <backdrop element="grid" inputtag="GRID.0" inputmask="0x08" > |
| 130 | | <bounds x="0" y="48" width="16" height="16" /> |
| 131 | | </backdrop> |
| 132 | | <backdrop element="grid" inputtag="GRID.1" inputmask="0x08" > |
| 133 | | <bounds x="16" y="48" width="16" height="16" /> |
| 134 | | </backdrop> |
| 135 | | <backdrop element="grid" inputtag="GRID.2" inputmask="0x08" > |
| 136 | | <bounds x="32" y="48" width="16" height="16" /> |
| 137 | | </backdrop> |
| 138 | | <backdrop element="grid" inputtag="GRID.3" inputmask="0x08" > |
| 139 | | <bounds x="48" y="48" width="16" height="16" /> |
| 140 | | </backdrop> |
| 141 | | <backdrop element="grid" inputtag="GRID.4" inputmask="0x08" > |
| 142 | | <bounds x="64" y="48" width="16" height="16" /> |
| 143 | | </backdrop> |
| 144 | | <backdrop element="grid" inputtag="GRID.5" inputmask="0x08" > |
| 145 | | <bounds x="80" y="48" width="16" height="16" /> |
| 146 | | </backdrop> |
| 147 | | <backdrop element="grid" inputtag="GRID.6" inputmask="0x08" > |
| 148 | | <bounds x="96" y="48" width="16" height="16" /> |
| 149 | | </backdrop> |
| 150 | | <backdrop element="grid" inputtag="GRID.7" inputmask="0x08" > |
| 151 | | <bounds x="112" y="48" width="16" height="16" /> |
| 152 | | </backdrop> |
| 153 | | <backdrop element="grid" inputtag="GRID.8" inputmask="0x08" > |
| 154 | | <bounds x="128" y="48" width="16" height="16" /> |
| 155 | | </backdrop> |
| 156 | | <backdrop element="grid" inputtag="GRID.9" inputmask="0x08" > |
| 157 | | <bounds x="144" y="48" width="16" height="16" /> |
| 158 | | </backdrop> |
| 159 | | <backdrop element="grid" inputtag="GRID.10" inputmask="0x08" > |
| 160 | | <bounds x="160" y="48" width="16" height="16" /> |
| 161 | | </backdrop> |
| 162 | | <backdrop element="grid" inputtag="GRID.11" inputmask="0x08" > |
| 163 | | <bounds x="176" y="48" width="16" height="16" /> |
| 164 | | </backdrop> |
| 165 | | <backdrop element="grid" inputtag="GRID.12" inputmask="0x08" > |
| 166 | | <bounds x="192" y="48" width="16" height="16" /> |
| 167 | | </backdrop> |
| 168 | | |
| 169 | | <backdrop element="grid" inputtag="GRID.0" inputmask="0x10" > |
| 170 | | <bounds x="0" y="64" width="16" height="16" /> |
| 171 | | </backdrop> |
| 172 | | <backdrop element="grid" inputtag="GRID.1" inputmask="0x10" > |
| 173 | | <bounds x="16" y="64" width="16" height="16" /> |
| 174 | | </backdrop> |
| 175 | | <backdrop element="grid" inputtag="GRID.2" inputmask="0x10" > |
| 176 | | <bounds x="32" y="64" width="16" height="16" /> |
| 177 | | </backdrop> |
| 178 | | <backdrop element="grid" inputtag="GRID.3" inputmask="0x10" > |
| 179 | | <bounds x="48" y="64" width="16" height="16" /> |
| 180 | | </backdrop> |
| 181 | | <backdrop element="grid" inputtag="GRID.4" inputmask="0x10" > |
| 182 | | <bounds x="64" y="64" width="16" height="16" /> |
| 183 | | </backdrop> |
| 184 | | <backdrop element="grid" inputtag="GRID.5" inputmask="0x10" > |
| 185 | | <bounds x="80" y="64" width="16" height="16" /> |
| 186 | | </backdrop> |
| 187 | | <backdrop element="grid" inputtag="GRID.6" inputmask="0x10" > |
| 188 | | <bounds x="96" y="64" width="16" height="16" /> |
| 189 | | </backdrop> |
| 190 | | <backdrop element="grid" inputtag="GRID.7" inputmask="0x10" > |
| 191 | | <bounds x="112" y="64" width="16" height="16" /> |
| 192 | | </backdrop> |
| 193 | | <backdrop element="grid" inputtag="GRID.8" inputmask="0x10" > |
| 194 | | <bounds x="128" y="64" width="16" height="16" /> |
| 195 | | </backdrop> |
| 196 | | <backdrop element="grid" inputtag="GRID.9" inputmask="0x10" > |
| 197 | | <bounds x="144" y="64" width="16" height="16" /> |
| 198 | | </backdrop> |
| 199 | | <backdrop element="grid" inputtag="GRID.10" inputmask="0x10" > |
| 200 | | <bounds x="160" y="64" width="16" height="16" /> |
| 201 | | </backdrop> |
| 202 | | <backdrop element="grid" inputtag="GRID.11" inputmask="0x10" > |
| 203 | | <bounds x="176" y="64" width="16" height="16" /> |
| 204 | | </backdrop> |
| 205 | | <backdrop element="grid" inputtag="GRID.12" inputmask="0x10" > |
| 206 | | <bounds x="192" y="64" width="16" height="16" /> |
| 207 | | </backdrop> |
| 208 | | |
| 209 | | <backdrop element="grid" inputtag="GRID.0" inputmask="0x20" > |
| 210 | | <bounds x="0" y="80" width="16" height="16" /> |
| 211 | | </backdrop> |
| 212 | | <backdrop element="grid" inputtag="GRID.1" inputmask="0x20" > |
| 213 | | <bounds x="16" y="80" width="16" height="16" /> |
| 214 | | </backdrop> |
| 215 | | <backdrop element="grid" inputtag="GRID.2" inputmask="0x20" > |
| 216 | | <bounds x="32" y="80" width="16" height="16" /> |
| 217 | | </backdrop> |
| 218 | | <backdrop element="grid" inputtag="GRID.3" inputmask="0x20" > |
| 219 | | <bounds x="48" y="80" width="16" height="16" /> |
| 220 | | </backdrop> |
| 221 | | <backdrop element="grid" inputtag="GRID.4" inputmask="0x20" > |
| 222 | | <bounds x="64" y="80" width="16" height="16" /> |
| 223 | | </backdrop> |
| 224 | | <backdrop element="grid" inputtag="GRID.5" inputmask="0x20" > |
| 225 | | <bounds x="80" y="80" width="16" height="16" /> |
| 226 | | </backdrop> |
| 227 | | <backdrop element="grid" inputtag="GRID.6" inputmask="0x20" > |
| 228 | | <bounds x="96" y="80" width="16" height="16" /> |
| 229 | | </backdrop> |
| 230 | | <backdrop element="grid" inputtag="GRID.7" inputmask="0x20" > |
| 231 | | <bounds x="112" y="80" width="16" height="16" /> |
| 232 | | </backdrop> |
| 233 | | <backdrop element="grid" inputtag="GRID.8" inputmask="0x20" > |
| 234 | | <bounds x="128" y="80" width="16" height="16" /> |
| 235 | | </backdrop> |
| 236 | | <backdrop element="grid" inputtag="GRID.9" inputmask="0x20" > |
| 237 | | <bounds x="144" y="80" width="16" height="16" /> |
| 238 | | </backdrop> |
| 239 | | <backdrop element="grid" inputtag="GRID.10" inputmask="0x20" > |
| 240 | | <bounds x="160" y="80" width="16" height="16" /> |
| 241 | | </backdrop> |
| 242 | | <backdrop element="grid" inputtag="GRID.11" inputmask="0x20" > |
| 243 | | <bounds x="176" y="80" width="16" height="16" /> |
| 244 | | </backdrop> |
| 245 | | <backdrop element="grid" inputtag="GRID.12" inputmask="0x20" > |
| 246 | | <bounds x="192" y="80" width="16" height="16" /> |
| 247 | | </backdrop> |
| 248 | | |
| 249 | | <backdrop element="grid" inputtag="GRID.0" inputmask="0x40" > |
| 250 | | <bounds x="0" y="96" width="16" height="16" /> |
| 251 | | </backdrop> |
| 252 | | <backdrop element="grid" inputtag="GRID.1" inputmask="0x40" > |
| 253 | | <bounds x="16" y="96" width="16" height="16" /> |
| 254 | | </backdrop> |
| 255 | | <backdrop element="grid" inputtag="GRID.2" inputmask="0x40" > |
| 256 | | <bounds x="32" y="96" width="16" height="16" /> |
| 257 | | </backdrop> |
| 258 | | <backdrop element="grid" inputtag="GRID.3" inputmask="0x40" > |
| 259 | | <bounds x="48" y="96" width="16" height="16" /> |
| 260 | | </backdrop> |
| 261 | | <backdrop element="grid" inputtag="GRID.4" inputmask="0x40" > |
| 262 | | <bounds x="64" y="96" width="16" height="16" /> |
| 263 | | </backdrop> |
| 264 | | <backdrop element="grid" inputtag="GRID.5" inputmask="0x40" > |
| 265 | | <bounds x="80" y="96" width="16" height="16" /> |
| 266 | | </backdrop> |
| 267 | | <backdrop element="grid" inputtag="GRID.6" inputmask="0x40" > |
| 268 | | <bounds x="96" y="96" width="16" height="16" /> |
| 269 | | </backdrop> |
| 270 | | <backdrop element="grid" inputtag="GRID.7" inputmask="0x40" > |
| 271 | | <bounds x="112" y="96" width="16" height="16" /> |
| 272 | | </backdrop> |
| 273 | | <backdrop element="grid" inputtag="GRID.8" inputmask="0x40" > |
| 274 | | <bounds x="128" y="96" width="16" height="16" /> |
| 275 | | </backdrop> |
| 276 | | <backdrop element="grid" inputtag="GRID.9" inputmask="0x40" > |
| 277 | | <bounds x="144" y="96" width="16" height="16" /> |
| 278 | | </backdrop> |
| 279 | | <backdrop element="grid" inputtag="GRID.10" inputmask="0x40" > |
| 280 | | <bounds x="160" y="96" width="16" height="16" /> |
| 281 | | </backdrop> |
| 282 | | <backdrop element="grid" inputtag="GRID.11" inputmask="0x40" > |
| 283 | | <bounds x="176" y="96" width="16" height="16" /> |
| 284 | | </backdrop> |
| 285 | | <backdrop element="grid" inputtag="GRID.12" inputmask="0x40" > |
| 286 | | <bounds x="192" y="96" width="16" height="16" /> |
| 287 | | </backdrop> |
| 288 | | |
| 289 | | <backdrop element="grid" inputtag="GRID.0" inputmask="0x80" > |
| 290 | | <bounds x="0" y="112" width="16" height="16" /> |
| 291 | | </backdrop> |
| 292 | | <backdrop element="grid" inputtag="GRID.1" inputmask="0x80" > |
| 293 | | <bounds x="16" y="112" width="16" height="16" /> |
| 294 | | </backdrop> |
| 295 | | <backdrop element="grid" inputtag="GRID.2" inputmask="0x80" > |
| 296 | | <bounds x="32" y="112" width="16" height="16" /> |
| 297 | | </backdrop> |
| 298 | | <backdrop element="grid" inputtag="GRID.3" inputmask="0x80" > |
| 299 | | <bounds x="48" y="112" width="16" height="16" /> |
| 300 | | </backdrop> |
| 301 | | <backdrop element="grid" inputtag="GRID.4" inputmask="0x80" > |
| 302 | | <bounds x="64" y="112" width="16" height="16" /> |
| 303 | | </backdrop> |
| 304 | | <backdrop element="grid" inputtag="GRID.5" inputmask="0x80" > |
| 305 | | <bounds x="80" y="112" width="16" height="16" /> |
| 306 | | </backdrop> |
| 307 | | <backdrop element="grid" inputtag="GRID.6" inputmask="0x80" > |
| 308 | | <bounds x="96" y="112" width="16" height="16" /> |
| 309 | | </backdrop> |
| 310 | | <backdrop element="grid" inputtag="GRID.7" inputmask="0x80" > |
| 311 | | <bounds x="112" y="112" width="16" height="16" /> |
| 312 | | </backdrop> |
| 313 | | <backdrop element="grid" inputtag="GRID.8" inputmask="0x80" > |
| 314 | | <bounds x="128" y="112" width="16" height="16" /> |
| 315 | | </backdrop> |
| 316 | | <backdrop element="grid" inputtag="GRID.9" inputmask="0x80" > |
| 317 | | <bounds x="144" y="112" width="16" height="16" /> |
| 318 | | </backdrop> |
| 319 | | <backdrop element="grid" inputtag="GRID.10" inputmask="0x80" > |
| 320 | | <bounds x="160" y="112" width="16" height="16" /> |
| 321 | | </backdrop> |
| 322 | | <backdrop element="grid" inputtag="GRID.11" inputmask="0x80" > |
| 323 | | <bounds x="176" y="112" width="16" height="16" /> |
| 324 | | </backdrop> |
| 325 | | <backdrop element="grid" inputtag="GRID.12" inputmask="0x80" > |
| 326 | | <bounds x="192" y="112" width="16" height="16" /> |
| 327 | | </backdrop> |
| 328 | | |
| 329 | | <backdrop element="grid" inputtag="GRID.0" inputmask="0x100" > |
| 330 | | <bounds x="0" y="128" width="16" height="16" /> |
| 331 | | </backdrop> |
| 332 | | <backdrop element="grid" inputtag="GRID.1" inputmask="0x100" > |
| 333 | | <bounds x="16" y="128" width="16" height="16" /> |
| 334 | | </backdrop> |
| 335 | | <backdrop element="grid" inputtag="GRID.2" inputmask="0x100" > |
| 336 | | <bounds x="32" y="128" width="16" height="16" /> |
| 337 | | </backdrop> |
| 338 | | <backdrop element="grid" inputtag="GRID.3" inputmask="0x100" > |
| 339 | | <bounds x="48" y="128" width="16" height="16" /> |
| 340 | | </backdrop> |
| 341 | | <backdrop element="grid" inputtag="GRID.4" inputmask="0x100" > |
| 342 | | <bounds x="64" y="128" width="16" height="16" /> |
| 343 | | </backdrop> |
| 344 | | <backdrop element="grid" inputtag="GRID.5" inputmask="0x100" > |
| 345 | | <bounds x="80" y="128" width="16" height="16" /> |
| 346 | | </backdrop> |
| 347 | | <backdrop element="grid" inputtag="GRID.6" inputmask="0x100" > |
| 348 | | <bounds x="96" y="128" width="16" height="16" /> |
| 349 | | </backdrop> |
| 350 | | <backdrop element="grid" inputtag="GRID.7" inputmask="0x100" > |
| 351 | | <bounds x="112" y="128" width="16" height="16" /> |
| 352 | | </backdrop> |
| 353 | | <backdrop element="grid" inputtag="GRID.8" inputmask="0x100" > |
| 354 | | <bounds x="128" y="128" width="16" height="16" /> |
| 355 | | </backdrop> |
| 356 | | <backdrop element="grid" inputtag="GRID.9" inputmask="0x100" > |
| 357 | | <bounds x="144" y="128" width="16" height="16" /> |
| 358 | | </backdrop> |
| 359 | | <backdrop element="grid" inputtag="GRID.10" inputmask="0x100" > |
| 360 | | <bounds x="160" y="128" width="16" height="16" /> |
| 361 | | </backdrop> |
| 362 | | <backdrop element="grid" inputtag="GRID.11" inputmask="0x100" > |
| 363 | | <bounds x="176" y="128" width="16" height="16" /> |
| 364 | | </backdrop> |
| 365 | | <backdrop element="grid" inputtag="GRID.12" inputmask="0x100" > |
| 366 | | <bounds x="192" y="128" width="16" height="16" /> |
| 367 | | </backdrop> |
| 368 | | |
| 369 | | <backdrop element="grid" inputtag="GRID.0" inputmask="0x200" > |
| 370 | | <bounds x="0" y="144" width="16" height="16" /> |
| 371 | | </backdrop> |
| 372 | | <backdrop element="grid" inputtag="GRID.1" inputmask="0x200" > |
| 373 | | <bounds x="16" y="144" width="16" height="16" /> |
| 374 | | </backdrop> |
| 375 | | <backdrop element="grid" inputtag="GRID.2" inputmask="0x200" > |
| 376 | | <bounds x="32" y="144" width="16" height="16" /> |
| 377 | | </backdrop> |
| 378 | | <backdrop element="grid" inputtag="GRID.3" inputmask="0x200" > |
| 379 | | <bounds x="48" y="144" width="16" height="16" /> |
| 380 | | </backdrop> |
| 381 | | <backdrop element="grid" inputtag="GRID.4" inputmask="0x200" > |
| 382 | | <bounds x="64" y="144" width="16" height="16" /> |
| 383 | | </backdrop> |
| 384 | | <backdrop element="grid" inputtag="GRID.5" inputmask="0x200" > |
| 385 | | <bounds x="80" y="144" width="16" height="16" /> |
| 386 | | </backdrop> |
| 387 | | <backdrop element="grid" inputtag="GRID.6" inputmask="0x200" > |
| 388 | | <bounds x="96" y="144" width="16" height="16" /> |
| 389 | | </backdrop> |
| 390 | | <backdrop element="grid" inputtag="GRID.7" inputmask="0x200" > |
| 391 | | <bounds x="112" y="144" width="16" height="16" /> |
| 392 | | </backdrop> |
| 393 | | <backdrop element="grid" inputtag="GRID.8" inputmask="0x200" > |
| 394 | | <bounds x="128" y="144" width="16" height="16" /> |
| 395 | | </backdrop> |
| 396 | | <backdrop element="grid" inputtag="GRID.9" inputmask="0x200" > |
| 397 | | <bounds x="144" y="144" width="16" height="16" /> |
| 398 | | </backdrop> |
| 399 | | <backdrop element="grid" inputtag="GRID.10" inputmask="0x200" > |
| 400 | | <bounds x="160" y="144" width="16" height="16" /> |
| 401 | | </backdrop> |
| 402 | | <backdrop element="grid" inputtag="GRID.11" inputmask="0x200" > |
| 403 | | <bounds x="176" y="144" width="16" height="16" /> |
| 404 | | </backdrop> |
| 405 | | <backdrop element="grid" inputtag="GRID.12" inputmask="0x200" > |
| 406 | | <bounds x="192" y="144" width="16" height="16" /> |
| 407 | | </backdrop> |
| 408 | | <screen index="0"> |
| 409 | | <bounds left="0" top="0" right="208" bottom="160" /> |
| 410 | | </screen> |
| 411 | | |
| 412 | | </view> |
| 413 | | </mamelayout> |
| | No newline at end of file |