示例#1
0
        //address_map_bank_device& set_shift(u32 shift) { m_shift = shift; return *this; }


        public address_map_bank_device set_options(endianness_t endianness, u8 data_width, u8 addr_width, u32 stride = 1)
        {
            set_endianness(endianness);
            set_data_width(data_width);
            set_addr_width(addr_width);
            set_stride(stride);
            return(this);
        }
示例#2
0
        Action <int, u32> m_write_entry; //void (memory_array::*m_write_entry)(int, u32);


        // construction/destruction
        //-------------------------------------------------
        //  memory_array - constructor
        //-------------------------------------------------
        public memory_array()
        {
            m_base            = null;
            m_bytes           = 0;
            m_membits         = 0;
            m_endianness      = ENDIANNESS_LITTLE;
            m_bytes_per_entry = 0;
            m_read_entry      = null;
            m_write_entry     = null;
        }
示例#3
0
        // construction/destruction
        address_map_bank_device(machine_config mconfig, string tag, device_t owner, u32 clock)
            : base(mconfig, ADDRESS_MAP_BANK, tag, owner, clock)
        {
            m_class_interfaces.Add(new device_memory_interface_address_map_bank(mconfig, this));  //device_memory_interface(mconfig, *this),

            m_dimemory = GetClassInterface <device_memory_interface_address_map_bank>();


            m_endianness = ENDIANNESS_NATIVE;
            m_data_width = 0;
            m_addr_width = 32;
            m_stride     = 1;
            m_program    = null;
            m_offset     = 0;
            m_shift      = 0;
        }
示例#4
0
        //palette_device(const machine_config &mconfig, const char *tag, device_t *owner, black_t, u32 entries = 0U);
        //palette_device(const machine_config &mconfig, const char *tag, device_t *owner, mono_t);
        //palette_device(const machine_config &mconfig, const char *tag, device_t *owner, mono_inv_t);
        //palette_device(const machine_config &mconfig, const char *tag, device_t *owner, mono_hi_t);
        //palette_device(const machine_config &mconfig, const char *tag, device_t *owner, rgb_3b_t);
        //palette_device(const machine_config &mconfig, const char *tag, device_t *owner, rbg_3b_t);
        //palette_device(const machine_config &mconfig, const char *tag, device_t *owner, grb_3b_t);
        //palette_device(const machine_config &mconfig, const char *tag, device_t *owner, gbr_3b_t);
        //palette_device(const machine_config &mconfig, const char *tag, device_t *owner, brg_3b_t);
        //palette_device(const machine_config &mconfig, const char *tag, device_t *owner, bgr_3b_t);
        //palette_device(const machine_config &mconfig, const char *tag, device_t *owner, rgb_555_t);
        //palette_device(const machine_config &mconfig, const char *tag, device_t *owner, grb_555_t);
        //palette_device(const machine_config &mconfig, const char *tag, device_t *owner, bgr_555_t);
        //palette_device(const machine_config &mconfig, const char *tag, device_t *owner, rgb_565_t);
        //palette_device(const machine_config &mconfig, const char *tag, device_t *owner, bgr_565_t);

        public palette_device(machine_config mconfig, string tag, device_t owner, u32 clock = 0)
            : base(mconfig, PALETTE, tag, owner, 0)
        {
            m_class_interfaces.Add(new device_palette_interface_palette_device(mconfig, this));  //device_palette_interface(mconfig, *this),


            m_dipalette = GetClassInterface <device_palette_interface_palette_device>();


            m_entries             = 0;
            m_indirect_entries    = 0;
            m_enable_shadows      = false;
            m_enable_hilights     = false;
            m_membits             = 0;
            m_membits_supplied    = false;
            m_endianness          = ENDIANNESS_BIG;
            m_endianness_supplied = false;
            m_prom_region         = new optional_memory_region(this, finder_base.DUMMY_TAG);
            m_init       = null;
            m_raw_to_rgb = null;
        }
示例#5
0
        //memory_array(void *base, u32 bytes, int membits, endianness_t endianness, int bpe) { set(base, bytes, membits, endianness, bpe); }
        //template <typename _Type> memory_array(std::vector<_Type> &array, endianness_t endianness, int bpe) { set(array, endianness, bpe); }
        //memory_array(const address_space &space, void *base, u32 bytes, int bpe) { set(space, base, bytes, bpe); }
        //memory_array(const memory_share &share, int bpe) { set(share, bpe); }
        //memory_array(const memory_array &array) { set(array); }


        // configuration
        //-------------------------------------------------
        //  set - configure the parameters
        //-------------------------------------------------
        public void set(PointerU8 base_, u32 bytes, int membits, endianness_t endianness, int bpe)  //void set(void *base, u32 bytes, int membits, endianness_t endianness, int bpe);
        {
            // validate inputs
            assert(base_ != null);
            assert(bytes > 0);
            assert(membits == 8 || membits == 16 || membits == 32 || membits == 64);
            assert(bpe == 1 || bpe == 2 || bpe == 4);

            // populate direct data
            m_base            = base_;
            m_bytes           = bytes;
            m_membits         = membits;
            m_endianness      = endianness;
            m_bytes_per_entry = bpe;

            // derive data
            switch (bpe * 1000 + membits * 10 + (endianness == ENDIANNESS_LITTLE ? 0 : 1))
            {
            case 1 * 1000 + 8 * 10 + 0:    m_read_entry = read8_from_8;       m_write_entry = write8_to_8;        break;

            case 1 * 1000 + 8 * 10 + 1:    m_read_entry = read8_from_8;       m_write_entry = write8_to_8;        break;

            case 1 * 1000 + 16 * 10 + 0:    m_read_entry = read8_from_16le;    m_write_entry = write8_to_16le;     break;

            case 1 * 1000 + 16 * 10 + 1:    m_read_entry = read8_from_16be;    m_write_entry = write8_to_16be;     break;

            case 1 * 1000 + 32 * 10 + 0:    m_read_entry = read8_from_32le;    m_write_entry = write8_to_32le;     break;

            case 1 * 1000 + 32 * 10 + 1:    m_read_entry = read8_from_32be;    m_write_entry = write8_to_32be;     break;

            case 1 * 1000 + 64 * 10 + 0:    m_read_entry = read8_from_64le;    m_write_entry = write8_to_64le;     break;

            case 1 * 1000 + 64 * 10 + 1:    m_read_entry = read8_from_64be;    m_write_entry = write8_to_64be;     break;

            case 2 * 1000 + 8 * 10 + 0:    m_read_entry = read16_from_8le;    m_write_entry = write16_to_8le;     break;

            case 2 * 1000 + 8 * 10 + 1:    m_read_entry = read16_from_8be;    m_write_entry = write16_to_8be;     break;

            case 2 * 1000 + 16 * 10 + 0:    m_read_entry = read16_from_16;     m_write_entry = write16_to_16;      break;

            case 2 * 1000 + 16 * 10 + 1:    m_read_entry = read16_from_16;     m_write_entry = write16_to_16;      break;

            case 2 * 1000 + 32 * 10 + 0:    m_read_entry = read16_from_32le;   m_write_entry = write16_to_32le;    break;

            case 2 * 1000 + 32 * 10 + 1:    m_read_entry = read16_from_32be;   m_write_entry = write16_to_32be;    break;

            case 2 * 1000 + 64 * 10 + 0:    m_read_entry = read16_from_64le;   m_write_entry = write16_to_64le;    break;

            case 2 * 1000 + 64 * 10 + 1:    m_read_entry = read16_from_64be;   m_write_entry = write16_to_64be;    break;

            case 4 * 1000 + 8 * 10 + 0:    m_read_entry = read32_from_8le;    m_write_entry = write32_to_8le;     break;

            case 4 * 1000 + 8 * 10 + 1:    m_read_entry = read32_from_8be;    m_write_entry = write32_to_8be;     break;

            case 4 * 1000 + 16 * 10 + 0:    m_read_entry = read32_from_16le;   m_write_entry = write32_to_16le;    break;

            case 4 * 1000 + 16 * 10 + 1:    m_read_entry = read32_from_16be;   m_write_entry = write32_to_16be;    break;

            case 4 * 1000 + 32 * 10 + 0:    m_read_entry = read32_from_32;     m_write_entry = write32_to_32;      break;

            case 4 * 1000 + 32 * 10 + 1:    m_read_entry = read32_from_32;     m_write_entry = write32_to_32;      break;

            case 4 * 1000 + 64 * 10 + 0:    m_read_entry = read32_from_64le;   m_write_entry = write32_to_64le;    break;

            case 4 * 1000 + 64 * 10 + 1:    m_read_entry = read32_from_64be;   m_write_entry = write32_to_64be;    break;

            default:    throw new emu_fatalerror("Illegal memory bits/bus width combo in memory_array");
            }
        }
示例#6
0
 public void set_endianness(endianness_t endianness)
 {
     set(m_base, m_bytes, m_membits, endianness, m_bytes_per_entry);
 }
示例#7
0
        }                                                                                                                       //template <typename... T> address_map_bank_device& set_map(T &&... args) { set_addrmap(0, std::forward<T>(args)...); return *this; }

        address_map_bank_device set_endianness(endianness_t endianness)
        {
            m_endianness = endianness; return(this);
        }