trunk/src/mame/drivers/homerun.c
| r17735 | r17736 | |
| 51 | 51 | #include "includes/homerun.h" |
| 52 | 52 | |
| 53 | 53 | |
| 54 | | WRITE8_MEMBER(homerun_state::pa_w) |
| 55 | | { |
| 56 | | m_xpa = data; |
| 57 | | } |
| 58 | 54 | |
| 59 | | WRITE8_MEMBER(homerun_state::pb_w) |
| 60 | | { |
| 61 | | m_xpb = data; |
| 62 | | } |
| 63 | 55 | |
| 64 | | WRITE8_MEMBER(homerun_state::pc_w) |
| 65 | | { |
| 66 | | m_xpc = data; |
| 67 | | } |
| 68 | | |
| 69 | | |
| 70 | 56 | static I8255A_INTERFACE( ppi8255_intf ) |
| 71 | 57 | { |
| 72 | 58 | // all ports are outputs |
| 73 | 59 | DEVCB_NULL, /* Port A read */ |
| 74 | | DEVCB_DRIVER_MEMBER(homerun_state,pa_w), /* Port A write */ |
| 60 | DEVCB_DRIVER_MEMBER(homerun_state, homerun_scrollhi_w), /* Port A write */ |
| 75 | 61 | DEVCB_NULL, /* Port B read */ |
| 76 | | DEVCB_DRIVER_MEMBER(homerun_state,pb_w), /* Port B write */ |
| 62 | DEVCB_DRIVER_MEMBER(homerun_state, homerun_scrolly_w), /* Port B write */ |
| 77 | 63 | DEVCB_NULL, /* Port C read */ |
| 78 | | DEVCB_DRIVER_MEMBER(homerun_state,pc_w) /* Port C write */ |
| 64 | DEVCB_DRIVER_MEMBER(homerun_state, homerun_scrollx_w) /* Port C write */ |
| 79 | 65 | }; |
| 80 | 66 | |
| 81 | 67 | |
| r17735 | r17736 | |
| 95 | 81 | return ret; |
| 96 | 82 | } |
| 97 | 83 | |
| 84 | CUSTOM_INPUT_MEMBER(homerun_state::ganjaja_hopper_status_r) |
| 85 | { |
| 86 | // gives hopper error if not 0 |
| 87 | return 0; |
| 88 | } |
| 89 | |
| 90 | |
| 98 | 91 | static ADDRESS_MAP_START( homerun_iomap, AS_IO, 8, homerun_state ) |
| 99 | 92 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 100 | 93 | AM_RANGE(0x10, 0x10) AM_WRITENOP // D7756C sample number |
| r17735 | r17736 | |
| 122 | 115 | |
| 123 | 116 | static INPUT_PORTS_START( homerun ) |
| 124 | 117 | PORT_START("IN0") |
| 125 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 126 | | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, homerun_state,homerun_40_r, NULL) |
| 127 | | PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) |
| 128 | | PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) |
| 129 | | PORT_DIPSETTING( 0x80, DEF_STR( On ) ) |
| 118 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 119 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, homerun_state, homerun_40_r, NULL) |
| 120 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // ? |
| 130 | 121 | |
| 131 | 122 | PORT_START("IN1") |
| 132 | 123 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) |
| r17735 | r17736 | |
| 140 | 131 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) |
| 141 | 132 | |
| 142 | 133 | PORT_START("DSW") |
| 143 | | PORT_DIPNAME( 0x03, 0x02, DEF_STR( Coin_B ) ) |
| 134 | PORT_DIPNAME( 0x03, 0x02, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("DIPSW:1,2") |
| 144 | 135 | PORT_DIPSETTING( 0x00, DEF_STR( 5C_1C ) ) |
| 145 | 136 | PORT_DIPSETTING( 0x01, DEF_STR( 3C_1C ) ) |
| 146 | 137 | PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) ) |
| 147 | 138 | PORT_DIPSETTING( 0x03, DEF_STR( Free_Play ) ) |
| 148 | | PORT_DIPNAME( 0x80, 0x80, DEF_STR( Coin_A ) ) |
| 139 | PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "DIPSW:3" ) |
| 140 | PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "DIPSW:4" ) |
| 141 | PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "DIPSW:5" ) |
| 142 | PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "DIPSW:6" ) |
| 143 | PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "DIPSW:7" ) |
| 144 | PORT_DIPNAME( 0x80, 0x80, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("DIPSW:8") |
| 149 | 145 | PORT_DIPSETTING( 0x80, DEF_STR( 1C_1C ) ) |
| 150 | 146 | PORT_DIPSETTING( 0x00, DEF_STR( 1C_2C ) ) |
| 151 | 147 | INPUT_PORTS_END |
| 152 | 148 | |
| 153 | 149 | static INPUT_PORTS_START( dynashot ) |
| 154 | 150 | PORT_START("IN0") |
| 155 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 156 | | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, homerun_state,homerun_40_r, NULL) |
| 151 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 152 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, homerun_state, homerun_40_r, NULL) |
| 157 | 153 | PORT_BIT( 0xb7, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 158 | 154 | |
| 159 | 155 | PORT_START("IN1") |
| r17735 | r17736 | |
| 167 | 163 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) |
| 168 | 164 | |
| 169 | 165 | PORT_START("IN2") |
| 170 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) |
| 166 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) |
| 171 | 167 | PORT_BIT( 0xdf, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 172 | 168 | |
| 173 | 169 | PORT_START("DSW") |
| 174 | | PORT_DIPNAME( 0x03, 0x02, DEF_STR( Coin_B ) ) |
| 170 | PORT_DIPNAME( 0x03, 0x02, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("DIPSW:1,2") |
| 175 | 171 | PORT_DIPSETTING( 0x00, DEF_STR( 5C_1C ) ) |
| 176 | 172 | PORT_DIPSETTING( 0x01, DEF_STR( 3C_1C ) ) |
| 177 | 173 | PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) ) |
| 178 | 174 | PORT_DIPSETTING( 0x03, DEF_STR( Free_Play ) ) |
| 179 | | PORT_DIPNAME( 0x80, 0x80, DEF_STR( Coin_A ) ) |
| 175 | PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "DIPSW:3" ) // collisions? (not all bits) |
| 176 | PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "DIPSW:4" ) // " |
| 177 | PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "DIPSW:5" ) // " |
| 178 | PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "DIPSW:6" ) // " |
| 179 | PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "DIPSW:7" ) // " |
| 180 | PORT_DIPNAME( 0x80, 0x80, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("DIPSW:8") |
| 180 | 181 | PORT_DIPSETTING( 0x80, DEF_STR( 1C_1C ) ) |
| 181 | 182 | PORT_DIPSETTING( 0x00, DEF_STR( 1C_2C ) ) |
| 182 | | |
| 183 | | PORT_DIPNAME( 0x7c, 0x7c, "Collisions ?" ) //not all bits |
| 184 | | PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) |
| 185 | | PORT_DIPSETTING( 0x7c, DEF_STR( On ) ) |
| 186 | 183 | INPUT_PORTS_END |
| 187 | 184 | |
| 188 | 185 | static INPUT_PORTS_START( ganjaja ) |
| r17735 | r17736 | |
| 197 | 194 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_NAME("P1 Down / Paper") |
| 198 | 195 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_NAME("P1 Right / Scissors") |
| 199 | 196 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) // unused? |
| 200 | | PORT_BIT( 0x30, IP_ACTIVE_HIGH, IPT_SPECIAL ) // TODO: hopper status |
| 197 | PORT_BIT( 0x30, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, homerun_state, ganjaja_hopper_status_r, NULL) |
| 201 | 198 | PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 202 | 199 | |
| 203 | 200 | PORT_START("IN2") |
| r17735 | r17736 | |
| 206 | 203 | PORT_BIT( 0xcf, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 207 | 204 | |
| 208 | 205 | PORT_START("DSW") |
| 209 | | PORT_DIPNAME( 0x01, 0x00, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("DIPSW:1") |
| 206 | PORT_DIPNAME( 0x01, 0x00, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("DIPSW:1") |
| 210 | 207 | PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) |
| 211 | 208 | PORT_DIPSETTING( 0x01, DEF_STR( 1C_1C ) ) |
| 212 | | PORT_DIPNAME( 0x02, 0x02, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("DIPSW:2") |
| 209 | PORT_DIPNAME( 0x02, 0x02, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("DIPSW:2") |
| 213 | 210 | PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) |
| 214 | 211 | PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C ) ) |
| 215 | 212 | PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "DIPSW:3" ) |
| r17735 | r17736 | |
| 217 | 214 | PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "DIPSW:5" ) |
| 218 | 215 | PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "DIPSW:6" ) // chance to win? |
| 219 | 216 | PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "DIPSW:7" ) // " |
| 220 | | PORT_DIPNAME( 0x80, 0x80, "Game" ) PORT_DIPLOCATION("DIPSW:8") |
| 217 | PORT_DIPNAME( 0x80, 0x80, "Game" ) PORT_DIPLOCATION("DIPSW:8") |
| 221 | 218 | PORT_DIPSETTING( 0x80, "Saisho wa Goo" ) |
| 222 | 219 | PORT_DIPSETTING( 0x00, "Hop Step & Jump" ) |
| 223 | 220 | INPUT_PORTS_END |
| r17735 | r17736 | |
| 264 | 261 | state->save_item(NAME(state->m_gfx_ctrl)); |
| 265 | 262 | state->save_item(NAME(state->m_gc_up)); |
| 266 | 263 | state->save_item(NAME(state->m_gc_down)); |
| 267 | | state->save_item(NAME(state->m_xpa)); |
| 268 | | state->save_item(NAME(state->m_xpb)); |
| 269 | | state->save_item(NAME(state->m_xpc)); |
| 264 | state->save_item(NAME(state->m_scrolly)); |
| 265 | state->save_item(NAME(state->m_scrollx)); |
| 270 | 266 | } |
| 271 | 267 | |
| 272 | 268 | static MACHINE_RESET( homerun ) |
| r17735 | r17736 | |
| 276 | 272 | state->m_gfx_ctrl = 0; |
| 277 | 273 | state->m_gc_up = 0; |
| 278 | 274 | state->m_gc_down = 0; |
| 279 | | state->m_xpa = 0; |
| 280 | | state->m_xpb = 0; |
| 281 | | state->m_xpc = 0; |
| 275 | state->m_scrolly = 0; |
| 276 | state->m_scrollx = 0; |
| 282 | 277 | } |
| 283 | 278 | |
| 284 | 279 | static MACHINE_CONFIG_START( homerun, homerun_state ) |