src/mess/drivers/itt3030.c
| r0 | r15401 | |
| 1 | /*************************************************************************** |
| 2 | |
| 3 | ITT 3030 |
| 4 | |
| 5 | ***************************************************************************/ |
| 6 | |
| 7 | |
| 8 | #include "emu.h" |
| 9 | #include "cpu/z80/z80.h" |
| 10 | |
| 11 | #define MAIN_CLOCK XTAL_8MHz |
| 12 | |
| 13 | class itt3030_state : public driver_device |
| 14 | { |
| 15 | public: |
| 16 | itt3030_state(const machine_config &mconfig, device_type type, const char *tag) |
| 17 | : driver_device(mconfig, type, tag), |
| 18 | m_maincpu(*this, "maincpu") |
| 19 | { } |
| 20 | |
| 21 | // devices |
| 22 | required_device<cpu_device> m_maincpu; |
| 23 | |
| 24 | // screen updates |
| 25 | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 26 | |
| 27 | protected: |
| 28 | // driver_device overrides |
| 29 | virtual void machine_start(); |
| 30 | virtual void machine_reset(); |
| 31 | |
| 32 | virtual void video_start(); |
| 33 | public: |
| 34 | |
| 35 | DECLARE_READ8_MEMBER(unk1_r); |
| 36 | DECLARE_READ8_MEMBER(unk2_r); |
| 37 | private: |
| 38 | UINT8 m_unk; |
| 39 | }; |
| 40 | |
| 41 | void itt3030_state::video_start() |
| 42 | { |
| 43 | m_unk = 0x80; |
| 44 | } |
| 45 | |
| 46 | READ8_MEMBER(itt3030_state::unk1_r) |
| 47 | { |
| 48 | UINT8 ret = m_unk; |
| 49 | m_unk ^= 0x80; |
| 50 | return ret; |
| 51 | } |
| 52 | |
| 53 | READ8_MEMBER(itt3030_state::unk2_r) |
| 54 | { |
| 55 | return 0x40; |
| 56 | } |
| 57 | |
| 58 | UINT32 itt3030_state::screen_update( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect ) |
| 59 | { |
| 60 | address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM); |
| 61 | |
| 62 | for(int y = 0; y < 24; y++ ) |
| 63 | { |
| 64 | for(int x = 0; x < 80; x++ ) |
| 65 | { |
| 66 | UINT8 code = space->read_byte(0x3000 + x + y*128); |
| 67 | drawgfx_opaque(bitmap, cliprect, screen.machine().gfx[0], code , 0, 0,0, x*8,y*16); |
| 68 | } |
| 69 | } |
| 70 | |
| 71 | return 0; |
| 72 | } |
| 73 | |
| 74 | static ADDRESS_MAP_START( itt3030_map, AS_PROGRAM, 8, itt3030_state ) |
| 75 | AM_RANGE(0x0000, 0x07ff) AM_ROM |
| 76 | AM_RANGE(0x0800, 0xffff) AM_RAM |
| 77 | ADDRESS_MAP_END |
| 78 | |
| 79 | |
| 80 | static ADDRESS_MAP_START( itt3030_io, AS_IO, 8, itt3030_state ) |
| 81 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 82 | AM_RANGE(0x0031, 0x0031) AM_READ(unk2_r) |
| 83 | AM_RANGE(0x0035, 0x0035) AM_READ(unk1_r) |
| 84 | ADDRESS_MAP_END |
| 85 | |
| 86 | static INPUT_PORTS_START( itt3030 ) |
| 87 | INPUT_PORTS_END |
| 88 | |
| 89 | static const gfx_layout charlayout = |
| 90 | { |
| 91 | 8, 16, /* 8x16 characters */ |
| 92 | 128, /* 128 characters */ |
| 93 | 1, /* 1 bits per pixel */ |
| 94 | {0}, /* no bitplanes; 1 bit per pixel */ |
| 95 | {7, 6, 5, 4, 3, 2, 1, 0}, |
| 96 | { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, |
| 97 | 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 }, |
| 98 | 8*16 /* size of one char */ |
| 99 | }; |
| 100 | |
| 101 | static GFXDECODE_START( itt3030 ) |
| 102 | GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 1 ) |
| 103 | GFXDECODE_END |
| 104 | |
| 105 | |
| 106 | void itt3030_state::machine_start() |
| 107 | { |
| 108 | } |
| 109 | |
| 110 | void itt3030_state::machine_reset() |
| 111 | { |
| 112 | } |
| 113 | |
| 114 | static MACHINE_CONFIG_START( itt3030, itt3030_state ) |
| 115 | |
| 116 | /* basic machine hardware */ |
| 117 | MCFG_CPU_ADD("maincpu",Z80,XTAL_4MHz) |
| 118 | MCFG_CPU_PROGRAM_MAP(itt3030_map) |
| 119 | MCFG_CPU_IO_MAP(itt3030_io) |
| 120 | |
| 121 | /* video hardware */ |
| 122 | MCFG_SCREEN_ADD("screen", RASTER) |
| 123 | MCFG_SCREEN_REFRESH_RATE(60) |
| 124 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 125 | MCFG_SCREEN_UPDATE_DRIVER(itt3030_state, screen_update) |
| 126 | MCFG_SCREEN_SIZE(80*8, 24*16) |
| 127 | MCFG_SCREEN_VISIBLE_AREA(0, 80*8-1, 0, 24*16-1) |
| 128 | |
| 129 | MCFG_GFXDECODE(itt3030) |
| 130 | |
| 131 | MCFG_PALETTE_LENGTH(2) |
| 132 | MCFG_PALETTE_INIT(black_and_white) |
| 133 | |
| 134 | /* sound hardware */ |
| 135 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 136 | MACHINE_CONFIG_END |
| 137 | |
| 138 | |
| 139 | /*************************************************************************** |
| 140 | |
| 141 | Game driver(s) |
| 142 | |
| 143 | ***************************************************************************/ |
| 144 | |
| 145 | ROM_START( itt3030 ) |
| 146 | ROM_REGION( 0x0800, "maincpu", ROMREGION_ERASE00 ) |
| 147 | ROM_LOAD( "bootv1.2.bin", 0x0000, 0x0800, CRC(90279d45) SHA1(a39a3f31f4f98980b1ef50805870837fbf72261d)) |
| 148 | ROM_REGION( 0x0800, "gfx1", ROMREGION_ERASE00 ) |
| 149 | ROM_LOAD( "gb136-0.bin", 0x0000, 0x0800, CRC(6a3895a8) SHA1(f3b977ffa2f54c346521c9ef034830de8f404621)) |
| 150 | ROM_REGION( 0x0400, "gfxcpu", ROMREGION_ERASE00 ) |
| 151 | ROM_LOAD( "8741ad.bin", 0x0000, 0x0400, CRC(cabf4394) SHA1(e5d1416b568efa32b578ca295a29b7b5d20c0def)) |
| 152 | ROM_END |
| 153 | |
| 154 | GAME( 1982, itt3030, 0, itt3030, itt3030, 0, ROT0, "ITT RFA", "ITT3030", GAME_NOT_WORKING | GAME_NO_SOUND ) |