summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video/taito_f2.c (follow)
Commit message (Expand)AuthorAgeFilesLines
* Final bulk rename for 0.142: ensure that all members of Aaron Giles2011-04-011-268/+268
* BIG update. Aaron Giles2011-03-291-66/+66
* Modified video update system. [Miodrag Milanovic] Miodrag Milanovic2011-02-241-13/+13
* big_sprite zoom changes, no whatsnew.. Michaël Banaan Ananas2011-02-221-12/+13
* Take advantage of the driver_device to clean up state saving for Aaron Giles2011-02-081-13/+13
* running_device -> device_t Aaron Giles2010-12-311-1/+1
* (Wow, I had no idea quite so many drivers were using driver_data!) Aaron Giles2010-08-041-28/+28
* Correct a long-standing design flaw: device configuration state Aaron Giles2010-01-181-1/+1
* Cleanups and version bump. Aaron Giles2010-01-161-8/+8
* Bulk driver.h -> emu.h switch. Aaron Giles2010-01-101-1/+1
* Misc Taito wip: Fabio Priuli2010-01-071-424/+417
* Rename taiicdev.* -> taitoic.* Aaron Giles2009-12-301-1/+1
* Converted taito_f2.c to use video devices Fabio Priuli2009-12-291-230/+197
* Removed global videoram, colorram, paletteram, and spriteram. Aaron Giles2009-11-281-33/+37
* > -----Original Message----- Aaron Giles2009-10-031-9/+0
* reverted driftout workaround, see latest comments here for reason: http://www... Michaël Banaan Ananas2009-09-121-24/+0
* Cleanups and version bump.mame0133u4 Aaron Giles2009-08-291-2/+2
* workaround for driftout http://www.mametesters.org/view.php?id=3356 Michaël Banaan Ananas2009-08-211-5/+30
* > From: Atari Ace [mailto:atari_ace@verizon.net] Aaron Giles2009-08-021-20/+20
* From: Atari Ace [mailto:atari_ace@verizon.net] Aaron Giles2009-06-251-10/+7
* Bulk change alert. Aaron Giles2009-04-261-3/+3
* Renamed some sets to keep common parent root name. Aaron Giles2009-04-151-1/+1
* Major drawgfx cleanup, global removal, and feature enhancements: Aaron Giles2009-01-121-2/+2
* From: Atari Ace [mailto:atari_ace@verizon.net] Aaron Giles2008-12-091-12/+12
* Changed save state system to accept machine parameters where Aaron Giles2008-12-051-11/+11
* Removed fillbitmap() macro in favor of direct calls to bitmap_fill(). Aaron Giles2008-12-041-16/+16
* From: Atari Ace [mailto:atari_ace@verizon.net] Aaron Giles2008-06-121-2/+0
* Reduced the number of save state callback types from 3 to 1. The Aaron Giles2008-04-111-1/+1
* Changes VIDEO_UPDATE signature to Zsolt Vasvari2008-03-081-32/+32
* Replaces mame_bitmap with bitmap_t Zsolt Vasvari2008-02-291-3/+3
* - Backs out BITMAP8 removal from most places. Zsolt Vasvari2008-02-241-1/+1
* Removes 8-bit bitmap support and converts all previously 8-bit bitmaps to 16-bit Zsolt Vasvari2008-02-241-1/+1
* machine->pen lookup removal Zsolt Vasvari2008-02-241-8/+8
* Removed the pen array lookup from some INDEXED16 drivers Zsolt Vasvari2008-02-211-7/+6
* Changed the use of machine->remapped_colortable to machine->pens where the dr... Zsolt Vasvari2008-02-051-1/+1
* - Added deprecat.h that contains some deprecated/discouraged contructs (see b... Zsolt Vasvari2008-01-251-0/+1
* Changes for MAME 0.122. Aaron Giles2007-12-181-1/+6
* Changes for MAME 0.121u2.mame0121u2 Aaron Giles2007-12-171-2/+2
* Initial checkin of MAME 0.121.mame0121 Aaron Giles2007-12-171-0/+1442
(1 << 3), CTRL_CHB_FIELD_INT_EN = (1 << 4), CTRL_CHB_FIFO_INT_EN = (1 << 5), CTRL_CHB_DESC_INT_EN = (1 << 6), CTRL_CHA_DMA_EN = (1 << 7), CTRL_CHA_INTERLEAVE_EN = (1 << 8), CTRL_CHA_SYNC_EN = (1 << 9), CTRL_CHA_SELECT_PHILIPS = (0 << 10), CTRL_CHA_SELECT_D1 = (1 << 10), CTRL_CHA_COLOR_SPACE_YUV = (0 << 11), CTRL_CHA_COLOR_SPACE_RGB = (1 << 11), CTRL_CHA_LUMA_ONLY = (1 << 12), CTRL_CHA_DECIMATE_EN = (1 << 13), CTRL_CHA_DECIMATION_SHIFT = 14, CTRL_CHA_DECIMATION_MASK = 0x7, CTRL_CHA_DECIMATE_HORIZ_EN = (1 << 17), CTRL_CHA_DITHER_EN = (1 << 18), CTRL_CHB_DMA_EN = (1 << 19), CTRL_CHB_INTERLEAVE_EN = (1 << 20), CTRL_CHB_SYNC_EN = (1 << 21), CTRL_CHB_SELECT_PHILIPS = (0 << 22), CTRL_CHB_SELECT_D1 = (1 << 22), CTRL_CHB_COLOR_SPACE_YUV = (0 << 23), CTRL_CHB_COLOR_SPACE_RGB = (1 << 23), CTRL_CHB_LUMA_ONLY = (1 << 24), CTRL_CHB_DECIMATE_EN = (1 << 25), CTRL_CHB_DECIMATION_SHIFT = 26, CTRL_CHB_DECIMATION_MASK = 0x7, CTRL_CHB_DECIMATE_HORIZ_EN = (1 << 29), CTRL_CHB_DITHER_EN = (1 << 30), ISR_CHA_EOF = (1 << 0), ISR_CHA_FIFO = (1 << 1), ISR_CHA_DESC = (1 << 2), ISR_CHB_EOF = (1 << 3), ISR_CHB_FIFO = (1 << 4), ISR_CHB_DESC = (1 << 5), ISR_MASK = 0x3f, ALPHA_MASK = 0xff, CLIP_X_SHIFT = 0, CLIP_X_MASK = 0x03ff, CLIP_YODD_SHIFT = 10, CLIP_YODD_MASK = 0x01ff, CLIP_YEVEN_SHIFT = 19, CLIP_YEVEN_MASK = 0x01ff, CLIP_REG_MASK = (CLIP_X_MASK << CLIP_X_SHIFT) | (CLIP_YODD_MASK << CLIP_YODD_SHIFT) | (CLIP_YEVEN_MASK << CLIP_YEVEN_SHIFT), FRAME_RATE_NTSC = (0 << 0), FRAME_RATE_PAL = (1 << 0), FRAME_RATE_SHIFT = 1, FRAME_RATE_MASK = 0x0fff, FRAME_RATE_REG_MASK = 0x1fff, FIELD_COUNTER_MASK = 0xffff, LINE_SIZE_MASK = 0x0ff8, LINE_COUNTER_MASK = 0x0ff8, PAGE_INDEX_MASK = 0x0ff8, DESC_PTR_MASK = 0xfffffff0, DESC_VALID_BIT = (1ULL << 32), DESC_STOP_BIT = (1ULL << 31), DESC_JUMP_BIT = (1ULL << 30), DESC_DATA_MASK = 0x00000000ffffffffULL, FIFO_MASK = 0x03f8, I2C_CTRL_IDLE = (0 << 0), I2C_CTRL_BUSY = (1 << 0), I2C_CTRL_FORCE_IDLE = (0 << 0), I2C_BUS_DIR_WRITE = (0 << 1), I2C_BUS_DIR_READ = (1 << 1), I2C_LAST_RELEASE = (0 << 2), I2C_LAST_HOLD = (1 << 2), I2C_XFER_DONE = (0 << 4), I2C_XFER_BUSY = (1 << 4), I2C_ACK_RECEIVED = (0 << 5), I2C_ACK_NOT_RECEIVED = (1 << 5), I2C_BUS_ERROR = (1 << 7), I2C_CTRL_MASK = 0xb7, I2C_DATA_MASK = 0xff, }; enum pixel_format_t : uint8_t { FORMAT_RGBA32, FORMAT_YUV422, FORMAT_RGBA8, FORMAT_Y8 }; struct channel_t { // Externally-visible state uint32_t m_alpha; uint32_t m_clip_start; uint32_t m_clip_end; uint32_t m_frame_rate; uint32_t m_field_counter; uint32_t m_line_size; uint32_t m_line_counter; uint32_t m_page_index; uint32_t m_next_desc_ptr; uint32_t m_start_desc_ptr; uint64_t m_descriptors[4]; uint32_t m_fifo_threshold; uint32_t m_fifo_gio_ptr; uint32_t m_fifo_video_ptr; // Internal state uint64_t m_fifo[128]; uint32_t m_active_alpha; uint32_t m_curr_line; uint16_t m_frame_mask_shift; uint16_t m_frame_mask_shifter; uint32_t m_pixel_size; uint64_t m_next_fifo_word; uint32_t m_word_pixel_counter; uint32_t m_decimation; // Kludges for picture input uint32_t m_field_width; uint32_t m_field_height[2]; uint32_t m_field_x; uint32_t m_field_y; // Kludges in order to trigger end-of-field int32_t m_pixels_per_even_field; int32_t m_pixels_per_odd_field; int32_t m_field_pixels_remaining[2]; bool m_end_of_field; emu_timer *m_fetch_timer; }; void do_dma_transfer(int channel); //bool decimate(int channel); bool is_interleaved(int channel); bool is_even_field(int channel); void end_of_field(int channel); void push_fifo(int channel); void count_pixel(int channel); void argb_to_yuv(uint32_t argb, int32_t &y, int32_t &u, int32_t &v); uint32_t yuv_to_abgr(int channel, int32_t y, int32_t u, int32_t v); bool merge_pixel(int channel, int32_t y, int32_t u, int32_t v, pixel_format_t format); pixel_format_t get_current_format(int channel); void process_pixel(int channel, int32_t y, int32_t u, int32_t v); uint32_t linear_rgb(uint32_t a, uint32_t b, float f); uint32_t bilinear_pixel(float s, float t); void input_pixel(int channel, int32_t &y, int32_t &u, int32_t &v); void fetch_pixel(int channel); attotime calculate_field_rate(int channel); attotime calculate_fetch_rate(int channel); void shift_dma_descriptors(int channel); void load_dma_descriptors(int channel, uint32_t addr); void invalidate_dma_descriptors(int channel); void load_frame_mask_shifter(int channel); bool line_count_w(int channel, uint32_t data); void frame_rate_w(int channel, uint32_t data); bool page_index_w(int channel, uint32_t data); void next_desc_w(int channel, uint32_t data); void control_w(uint32_t data); void interrupts_w(uint32_t new_int); uint32_t m_rev_id; uint32_t m_control; uint32_t m_int_status; uint32_t m_i2c_ctrl; uint32_t m_i2c_data; channel_t m_channels[2]; devcb_write8 m_i2c_data_out; devcb_read8 m_i2c_data_in; devcb_write_line m_i2c_stop; devcb_write_line m_interrupt_cb; required_device<picture_image_device> m_picture; required_device<avivideo_image_device> m_avivideo; required_address_space m_space; bitmap_argb32 *m_input_bitmap; }; DECLARE_DEVICE_TYPE(VINO, vino_device) #endif // MAME_MACHINE_VINO_H