trunk/src/mess/video/k1ge.c
| r30853 | r30854 | |
| 1 | 1 | /****************************************************************************** |
| 2 | 2 | |
| 3 | | K1GE/K2GE graphics emulation |
| 3 | K1GE/K2GE graphics emulation |
| 4 | 4 | |
| 5 | | The K1GE graphics were used in the Neogeo pocket mono; the K2GE graphics were |
| 6 | | used in the Neogeo pocket color. |
| 5 | The K1GE graphics were used in the Neogeo pocket mono; the K2GE graphics were |
| 6 | used in the Neogeo pocket color. |
| 7 | 7 | |
| 8 | 8 | ******************************************************************************/ |
| 9 | 9 | |
| r30853 | r30854 | |
| 41 | 41 | } |
| 42 | 42 | |
| 43 | 43 | |
| 44 | | READ8_MEMBER( k1ge_device::reg_read ) |
| 44 | READ8_MEMBER( k1ge_device::read ) |
| 45 | 45 | { |
| 46 | | UINT8 data = m_vram[offset & 0x7ff]; |
| 46 | assert(offset < 0x4000); |
| 47 | |
| 48 | UINT8 data = m_vram[offset]; |
| 47 | 49 | |
| 48 | 50 | switch( offset ) |
| 49 | 51 | { |
| r30853 | r30854 | |
| 58 | 60 | } |
| 59 | 61 | |
| 60 | 62 | |
| 61 | | WRITE8_MEMBER( k1ge_device::reg_write ) |
| 63 | WRITE8_MEMBER( k1ge_device::write ) |
| 62 | 64 | { |
| 65 | assert(offset < 0x4000); |
| 66 | |
| 63 | 67 | switch( offset ) |
| 64 | 68 | { |
| 65 | 69 | case 0x000: |
| r30853 | r30854 | |
| 77 | 81 | data &= 0x07; |
| 78 | 82 | break; |
| 79 | 83 | case 0x7e2: |
| 80 | | if ( m_vram[0x7f0] != 0xAA ) |
| 84 | if ( m_vram[0x7f0] != 0xaa ) |
| 81 | 85 | return; |
| 82 | 86 | data &= 0x80; |
| 83 | 87 | break; |
| r30853 | r30854 | |
| 89 | 93 | data &= 0x0f; |
| 90 | 94 | } |
| 91 | 95 | |
| 92 | | m_vram[offset & 0x7ff] = data; |
| 96 | m_vram[offset] = data; |
| 93 | 97 | } |
| 94 | 98 | |
| 95 | | // TODO: these i/o handlers can probably be merged with the above... |
| 96 | | READ8_MEMBER( k1ge_device::vram_read ) |
| 97 | | { |
| 98 | | assert(offset < 0x3800); |
| 99 | | return m_vram[0x800 + offset]; |
| 100 | | } |
| 101 | 99 | |
| 102 | | |
| 103 | | WRITE8_MEMBER( k1ge_device::vram_write ) |
| 104 | | { |
| 105 | | assert(offset < 0x3800); |
| 106 | | m_vram[0x800 + offset] = data; |
| 107 | | } |
| 108 | | |
| 109 | | |
| 110 | 100 | void k1ge_device::draw_scroll_plane( UINT16 *p, UINT16 base, int line, int scroll_x, int scroll_y, int pal_base ) |
| 111 | 101 | { |
| 112 | 102 | int i; |
| r30853 | r30854 | |
| 888 | 878 | } |
| 889 | 879 | |
| 890 | 880 | static MACHINE_CONFIG_FRAGMENT( k1ge ) |
| 891 | | MCFG_PALETTE_ADD("palette", 8 ) |
| 881 | MCFG_PALETTE_ADD("palette", 8 ) |
| 892 | 882 | MCFG_PALETTE_INIT_OWNER(k1ge_device, k1ge) |
| 893 | 883 | MACHINE_CONFIG_END |
| 894 | 884 | |
| r30853 | r30854 | |
| 911 | 901 | } |
| 912 | 902 | |
| 913 | 903 | static MACHINE_CONFIG_FRAGMENT( k2ge ) |
| 914 | | MCFG_PALETTE_ADD("palette", 4096 ) |
| 904 | MCFG_PALETTE_ADD("palette", 4096 ) |
| 915 | 905 | MCFG_PALETTE_INIT_OWNER(k2ge_device, k2ge) |
| 916 | 906 | MACHINE_CONFIG_END |
| 917 | 907 | |
trunk/src/mess/video/k1ge.h
| r30853 | r30854 | |
| 1 | /****************************************************************************** |
| 1 | 2 | |
| 3 | K1GE/K2GE graphics emulation |
| 4 | |
| 5 | ******************************************************************************/ |
| 6 | |
| 2 | 7 | #ifndef __K2GE_H_ |
| 3 | 8 | #define __K2GE_H_ |
| 4 | 9 | |
| r30853 | r30854 | |
| 23 | 28 | k1ge_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 24 | 29 | k1ge_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source); |
| 25 | 30 | |
| 26 | | DECLARE_READ8_MEMBER( reg_read ); |
| 27 | | DECLARE_WRITE8_MEMBER( reg_write ); |
| 28 | | DECLARE_READ8_MEMBER( vram_read ); |
| 29 | | DECLARE_WRITE8_MEMBER( vram_write ); |
| 31 | DECLARE_READ8_MEMBER( read ); |
| 32 | DECLARE_WRITE8_MEMBER( write ); |
| 30 | 33 | |
| 31 | 34 | DECLARE_PALETTE_INIT(k1ge); |
| 32 | 35 | |
trunk/src/mess/drivers/ngp.c
| r30853 | r30854 | |
| 538 | 538 | |
| 539 | 539 | |
| 540 | 540 | static ADDRESS_MAP_START( ngp_mem, AS_PROGRAM, 8, ngp_state ) |
| 541 | | AM_RANGE( 0x000080, 0x0000bf ) AM_READWRITE(ngp_io_r, ngp_io_w) /* ngp/c specific i/o */ |
| 542 | | AM_RANGE( 0x004000, 0x006fff ) AM_RAM AM_SHARE("mainram") /* work ram */ |
| 543 | | AM_RANGE( 0x007000, 0x007fff ) AM_RAM AM_SHARE("share1") /* shared with sound cpu */ |
| 544 | | AM_RANGE( 0x008000, 0x0087ff ) AM_DEVREADWRITE("k1ge", k1ge_device, reg_read, reg_write) /* video registers */ |
| 545 | | AM_RANGE( 0x008800, 0x00bfff ) AM_DEVREADWRITE("k1ge", k1ge_device, vram_read, vram_write) /* Video RAM area */ |
| 546 | | AM_RANGE( 0x200000, 0x3fffff ) AM_ROM AM_WRITE(flash0_w) AM_REGION("cart", 0) /* cart area #1 */ |
| 547 | | AM_RANGE( 0x800000, 0x9fffff ) AM_ROM AM_WRITE(flash1_w) AM_REGION("cart", 0x200000) /* cart area #2 */ |
| 548 | | AM_RANGE( 0xff0000, 0xffffff ) AM_ROM AM_REGION("maincpu", 0) /* system rom */ |
| 541 | AM_RANGE( 0x000080, 0x0000bf ) AM_READWRITE(ngp_io_r, ngp_io_w) /* ngp/c specific i/o */ |
| 542 | AM_RANGE( 0x004000, 0x006fff ) AM_RAM AM_SHARE("mainram") /* work ram */ |
| 543 | AM_RANGE( 0x007000, 0x007fff ) AM_RAM AM_SHARE("share1") /* shared with sound cpu */ |
| 544 | AM_RANGE( 0x008000, 0x00bfff ) AM_DEVREADWRITE("k1ge", k1ge_device, read, write) /* video chip */ |
| 545 | AM_RANGE( 0x200000, 0x3fffff ) AM_ROM AM_WRITE(flash0_w) AM_REGION("cart", 0) /* cart area #1 */ |
| 546 | AM_RANGE( 0x800000, 0x9fffff ) AM_ROM AM_WRITE(flash1_w) AM_REGION("cart", 0x200000) /* cart area #2 */ |
| 547 | AM_RANGE( 0xff0000, 0xffffff ) AM_ROM AM_REGION("maincpu", 0) /* system rom */ |
| 549 | 548 | ADDRESS_MAP_END |
| 550 | 549 | |
| 551 | 550 | |
| r30853 | r30854 | |
| 568 | 567 | |
| 569 | 568 | |
| 570 | 569 | static ADDRESS_MAP_START( z80_mem, AS_PROGRAM, 8, ngp_state ) |
| 571 | | AM_RANGE( 0x0000, 0x0FFF ) AM_RAM AM_SHARE("share1") /* shared with tlcs900 */ |
| 572 | | AM_RANGE( 0x4000, 0x4001 ) AM_DEVWRITE("t6w28", t6w28_device, write ) /* sound chip (right, left) */ |
| 570 | AM_RANGE( 0x0000, 0x0fff ) AM_RAM AM_SHARE("share1") /* shared with tlcs900 */ |
| 571 | AM_RANGE( 0x4000, 0x4001 ) AM_DEVWRITE("t6w28", t6w28_device, write ) /* sound chip (right, left) */ |
| 573 | 572 | AM_RANGE( 0x8000, 0x8000 ) AM_READWRITE( ngp_z80_comm_r, ngp_z80_comm_w ) /* main-sound communication */ |
| 574 | 573 | AM_RANGE( 0xc000, 0xc000 ) AM_WRITE( ngp_z80_signal_main_w ) /* signal irq to main cpu */ |
| 575 | 574 | ADDRESS_MAP_END |