trunk/src/mame/drivers/pprobe.c
| r18860 | r18861 | |
| 23 | 23 | 2x 2128 static ram (2kx8 ram) |
| 24 | 24 | 4x 93422 DRAM (256x4 dram) |
| 25 | 25 | 1x 6301 PROM (probably used for background ?) |
| 26 | | 3x 82s129 Colour PROMS (connected to resistors) |
| 26 | 3x 82s129 Colour PROMS (connected to resistors) |
| 27 | 27 | |
| 28 | 28 | Clocks measured: |
| 29 | 29 | |
| 30 | 30 | Main XTAL 18.432mhz |
| 31 | | 2x z80 : 18.432 / 6 |
| 31 | 2x z80 : 18.432 / 6 |
| 32 | 32 | AY8910 : 18.432 / 12 |
| 33 | 33 | Vsync : 60.58hz |
| 34 | 34 | |
| r18860 | r18861 | |
| 44 | 44 | { |
| 45 | 45 | public: |
| 46 | 46 | pprobe_state(const machine_config &mconfig, device_type type, const char *tag) |
| 47 | | : driver_device(mconfig, type, tag) |
| 47 | : driver_device(mconfig, type, tag), |
| 48 | m_tx_vram(*this, "tx_vram") |
| 48 | 49 | { } |
| 49 | 50 | |
| 51 | required_shared_ptr<UINT8> m_tx_vram; |
| 52 | |
| 53 | UINT8 m_nmi_mask; |
| 54 | DECLARE_WRITE8_MEMBER(pprobe_nmi_mask_w); |
| 50 | 55 | DECLARE_DRIVER_INIT(pprobe); |
| 51 | 56 | UINT32 screen_update_pprobe(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 57 | INTERRUPT_GEN_MEMBER(vblank_irq); |
| 52 | 58 | }; |
| 53 | 59 | |
| 54 | 60 | |
| 55 | 61 | |
| 56 | 62 | UINT32 pprobe_state::screen_update_pprobe(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 57 | 63 | { |
| 64 | gfx_element *gfx = machine().gfx[2]; |
| 65 | int y,x; |
| 66 | int count = 0; |
| 67 | |
| 68 | for (x=0;x<64;x++) |
| 69 | { |
| 70 | for (y=0;y<32;y++) |
| 71 | { |
| 72 | UINT16 tile = m_tx_vram[count]; |
| 73 | //UINT8 col; |
| 74 | |
| 75 | drawgfx_opaque(bitmap,cliprect,gfx,tile,0,0,0,x*8,y*8); |
| 76 | |
| 77 | count++; |
| 78 | } |
| 79 | } |
| 80 | |
| 58 | 81 | return 0; |
| 59 | 82 | } |
| 60 | 83 | |
| 61 | 84 | |
| 62 | 85 | static ADDRESS_MAP_START( pprobe_main_map, AS_PROGRAM, 8, pprobe_state ) |
| 63 | 86 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 87 | AM_RANGE(0x8000, 0x83ff) AM_RAM // ??? |
| 88 | AM_RANGE(0x8800, 0x8fff) AM_RAM |
| 89 | AM_RANGE(0x9000, 0x93ff) AM_RAM // ??? |
| 90 | AM_RANGE(0x9800, 0x9fff) AM_RAM |
| 91 | AM_RANGE(0xc400, 0xc7ff) AM_RAM // color ram? |
| 92 | AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("tx_vram") |
| 93 | AM_RANGE(0xe000, 0xe000) AM_WRITENOP // watchdog |
| 94 | AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("shared_ram") |
| 64 | 95 | ADDRESS_MAP_END |
| 65 | 96 | |
| 97 | WRITE8_MEMBER(pprobe_state::pprobe_nmi_mask_w) |
| 98 | { |
| 99 | m_nmi_mask = data & 1; |
| 100 | } |
| 101 | |
| 102 | |
| 66 | 103 | static ADDRESS_MAP_START( pprobe_main_portmap, AS_IO, 8, pprobe_state ) |
| 67 | | // ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 104 | ADDRESS_MAP_GLOBAL_MASK(0x07) |
| 105 | AM_RANGE(0x00, 0x00) AM_WRITE(pprobe_nmi_mask_w) |
| 106 | // 0x01 flip screen |
| 107 | // 0x02 sub cpu halt line |
| 68 | 108 | ADDRESS_MAP_END |
| 69 | 109 | |
| 70 | 110 | |
| r18860 | r18861 | |
| 105 | 145 | static INPUT_PORTS_START( pprobe ) |
| 106 | 146 | INPUT_PORTS_END |
| 107 | 147 | |
| 148 | INTERRUPT_GEN_MEMBER(pprobe_state::vblank_irq) |
| 149 | { |
| 150 | if(m_nmi_mask) |
| 151 | device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); |
| 152 | } |
| 108 | 153 | |
| 154 | |
| 109 | 155 | static MACHINE_CONFIG_START( pprobe, pprobe_state ) |
| 110 | 156 | |
| 111 | 157 | /* basic machine hardware */ |
| 112 | 158 | MCFG_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/6) /* verified on pcb */ |
| 113 | 159 | MCFG_CPU_PROGRAM_MAP(pprobe_main_map) |
| 114 | 160 | MCFG_CPU_IO_MAP(pprobe_main_portmap) |
| 161 | MCFG_CPU_VBLANK_INT_DRIVER("screen", pprobe_state, vblank_irq) |
| 115 | 162 | |
| 116 | 163 | // MCFG_CPU_ADD("subz80", Z80, XTAL_18_432MHz/6) /* verified on pcb */ |
| 117 | 164 | |
| r18860 | r18861 | |
| 146 | 193 | |
| 147 | 194 | ROM_REGION( 0x02000, "gfx1", 0 ) // bg tiles |
| 148 | 195 | ROM_LOAD( "pb6.bin", 0x0000, 0x2000, CRC(ff309239) SHA1(4e52833fafd54d4502ad09091fbfb1a8a2ff8828) ) |
| 149 | | |
| 196 | |
| 150 | 197 | ROM_REGION( 0x02000, "gfx2", 0 ) // bg tiles |
| 151 | 198 | ROM_LOAD( "pb7.bin", 0x0000, 0x2000, BAD_DUMP CRC(1defb6fc) SHA1(f0d57cf8a92c29fef52c8437d0be6edecaf9c5c9) ) // some bad bytes |
| 152 | 199 | |
| r18860 | r18861 | |
| 170 | 217 | { |
| 171 | 218 | } |
| 172 | 219 | |
| 173 | | GAME( 1984, pprobe, 0, pprobe, pprobe, pprobe_state, pprobe, ROT270, "Kyugo?", "Planet Probe", GAME_IS_SKELETON ) |
| 220 | GAME( 1984, pprobe, 0, pprobe, pprobe, pprobe_state, pprobe, ROT270, "Kyugo?", "Planet Probe", GAME_NOT_WORKING | GAME_NO_SOUND ) |