trunk/src/mame/drivers/homerun.c
| r17734 | r17735 | |
| 1 | 1 | /* |
| 2 | 2 | Moero Pro Yakyuu Homerun - (c) 1988 Jaleco |
| 3 | 3 | Dynamic Shooting - (c) 1988 Jaleco |
| 4 | Ganbare Jajamaru Saisho wa Goo / Ganbare Jajamaru Hop Step & Jump - (c) 1990 Jaleco |
| 4 | 5 | Driver by Tomasz Slanina |
| 5 | 6 | |
| 6 | 7 | *weird* hardware - based on NES version |
| 7 | 8 | (gfx bank changed in the middle of screen, |
| 8 | 9 | sprites in NES format etc) |
| 9 | | |
| 10 | |
| 10 | 11 | Todo : |
| 11 | 12 | - voice ( unemulated D7756C ) |
| 12 | 13 | - controls/dips |
| 13 | | - better emulation of gfx bank switching |
| 14 | - better emulation of gfx bank switching (problematic in ganjaja) |
| 14 | 15 | - is there 2 player mode ? |
| 15 | 16 | |
| 17 | ----------------------------------- |
| 18 | Moero Pro Yakyuu Homerun Kyousou |
| 19 | Jaleco, 1988 |
| 20 | |
| 21 | PCB Layout |
| 22 | ---------- |
| 23 | |
| 24 | HR-8847 |
| 25 | ----------------------------------- |
| 26 | | YM2203 Z80B 6264 | |
| 27 | |YM3014 DSW(8) HOMERUN.43 | |
| 28 | | D7756C 6264 | |
| 29 | | | |
| 30 | |J 640KhZ HOMERUN.60 | |
| 31 | |A 2018 | |
| 32 | |M 2018 2018 8255| |
| 33 | |M 2018 | |
| 34 | |A | |
| 35 | | | |
| 36 | | | |
| 37 | | HOMERUN.120 20MHz| |
| 38 | ----------------------------------- |
| 39 | |
| 40 | Notes: |
| 41 | Z80 clock: 5.000MHz |
| 42 | VSync: 60Hz |
| 43 | HSync: 15.21kHz |
| 44 | |
| 16 | 45 | */ |
| 17 | 46 | |
| 18 | 47 | #include "emu.h" |
| r17734 | r17735 | |
| 40 | 69 | |
| 41 | 70 | static I8255A_INTERFACE( ppi8255_intf ) |
| 42 | 71 | { |
| 72 | // all ports are outputs |
| 43 | 73 | DEVCB_NULL, /* Port A read */ |
| 44 | 74 | DEVCB_DRIVER_MEMBER(homerun_state,pa_w), /* Port A write */ |
| 45 | 75 | DEVCB_NULL, /* Port B read */ |
| r17734 | r17735 | |
| 67 | 97 | |
| 68 | 98 | static ADDRESS_MAP_START( homerun_iomap, AS_IO, 8, homerun_state ) |
| 69 | 99 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 70 | | AM_RANGE(0x10, 0x10) AM_WRITENOP /* ?? */ |
| 71 | | AM_RANGE(0x20, 0x20) AM_WRITENOP /* ?? */ |
| 100 | AM_RANGE(0x10, 0x10) AM_WRITENOP // D7756C sample number |
| 101 | AM_RANGE(0x20, 0x20) AM_WRITENOP // D7756C control |
| 72 | 102 | AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) |
| 73 | 103 | AM_RANGE(0x40, 0x40) AM_READ_PORT("IN0") |
| 74 | 104 | AM_RANGE(0x50, 0x50) AM_READ_PORT("IN2") |
| r17734 | r17735 | |
| 155 | 185 | PORT_DIPSETTING( 0x7c, DEF_STR( On ) ) |
| 156 | 186 | INPUT_PORTS_END |
| 157 | 187 | |
| 188 | static INPUT_PORTS_START( ganjaja ) |
| 189 | PORT_START("IN0") |
| 190 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // ? |
| 191 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 192 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // ? |
| 193 | PORT_BIT( 0x76, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 158 | 194 | |
| 195 | PORT_START("IN1") |
| 196 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_NAME("P1 Up / Rock") |
| 197 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_NAME("P1 Down / Paper") |
| 198 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_NAME("P1 Right / Scissors") |
| 199 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) // unused? |
| 200 | PORT_BIT( 0x30, IP_ACTIVE_HIGH, IPT_SPECIAL ) // TODO: hopper status |
| 201 | PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 202 | |
| 203 | PORT_START("IN2") |
| 204 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // bit masked with IN0 IPT_COIN1, maybe coin lockout? |
| 205 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) |
| 206 | PORT_BIT( 0xcf, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 207 | |
| 208 | PORT_START("DSW") |
| 209 | PORT_DIPNAME( 0x01, 0x00, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("DIPSW:1") |
| 210 | PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) |
| 211 | PORT_DIPSETTING( 0x01, DEF_STR( 1C_1C ) ) |
| 212 | PORT_DIPNAME( 0x02, 0x02, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("DIPSW:2") |
| 213 | PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) |
| 214 | PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C ) ) |
| 215 | PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "DIPSW:3" ) |
| 216 | PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "DIPSW:4" ) |
| 217 | PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "DIPSW:5" ) |
| 218 | PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "DIPSW:6" ) // chance to win? |
| 219 | PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "DIPSW:7" ) // " |
| 220 | PORT_DIPNAME( 0x80, 0x80, "Game" ) PORT_DIPLOCATION("DIPSW:8") |
| 221 | PORT_DIPSETTING( 0x80, "Saisho wa Goo" ) |
| 222 | PORT_DIPSETTING( 0x00, "Hop Step & Jump" ) |
| 223 | INPUT_PORTS_END |
| 224 | |
| 225 | |
| 159 | 226 | static const gfx_layout gfxlayout = |
| 160 | 227 | { |
| 161 | 228 | 8,8, |
| r17734 | r17735 | |
| 217 | 284 | static MACHINE_CONFIG_START( homerun, homerun_state ) |
| 218 | 285 | |
| 219 | 286 | /* basic machine hardware */ |
| 220 | | MCFG_CPU_ADD("maincpu", Z80, 5000000) |
| 287 | MCFG_CPU_ADD("maincpu", Z80, XTAL_20MHz/4) |
| 221 | 288 | MCFG_CPU_PROGRAM_MAP(homerun_memmap) |
| 222 | 289 | MCFG_CPU_IO_MAP(homerun_iomap) |
| 223 | 290 | MCFG_CPU_VBLANK_INT("screen", irq0_line_hold) |
| r17734 | r17735 | |
| 232 | 299 | MCFG_SCREEN_REFRESH_RATE(60) |
| 233 | 300 | MCFG_SCREEN_SIZE(256, 256) |
| 234 | 301 | MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-25) |
| 302 | //MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) |
| 235 | 303 | MCFG_SCREEN_UPDATE_STATIC(homerun) |
| 236 | 304 | |
| 237 | 305 | MCFG_GFXDECODE(homerun) |
| r17734 | r17735 | |
| 242 | 310 | /* sound hardware */ |
| 243 | 311 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 244 | 312 | |
| 245 | | MCFG_SOUND_ADD("ymsnd", YM2203, 6000000/2) |
| 313 | MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_20MHz/8) |
| 246 | 314 | MCFG_SOUND_CONFIG(ym2203_config) |
| 247 | 315 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 316 | MACHINE_CONFIG_END |
| 248 | 317 | |
| 318 | static MACHINE_CONFIG_DERIVED( ganjaja, homerun ) |
| 319 | |
| 320 | /* basic machine hardware */ |
| 321 | MCFG_CPU_MODIFY("maincpu") |
| 322 | MCFG_CPU_PERIODIC_INT(irq0_line_hold, 4*60) // ? |
| 249 | 323 | MACHINE_CONFIG_END |
| 250 | 324 | |
| 251 | 325 | |
| 252 | | /* |
| 253 | | Moero Pro Yakyuu Homerun Kyousou |
| 254 | | Jaleco, 1988 |
| 326 | ROM_START( homerun ) |
| 327 | ROM_REGION( 0x30000, "maincpu", 0 ) |
| 328 | ROM_LOAD( "homerun.ic43", 0x00000, 0x04000, CRC(e759e476) SHA1(ad4f356ff26209033320a3e6353e4d4d9beb59c1) ) |
| 329 | ROM_CONTINUE( 0x10000, 0x1c000) |
| 255 | 330 | |
| 256 | | PCB Layout |
| 257 | | ---------- |
| 331 | ROM_REGION( 0x10000, "gfx1", 0 ) |
| 332 | ROM_LOAD( "homerun.ic60", 0x00000, 0x10000, CRC(69a720d1) SHA1(0f0a4877578f358e9e829ece8c31e23f01adcf83) ) |
| 258 | 333 | |
| 259 | | HR-8847 |
| 260 | | ----------------------------------- |
| 261 | | | YM2203 Z80B 6264 | |
| 262 | | |YM3014 DSW(8) HOMERUN.43 | |
| 263 | | | D7756C 6264 | |
| 264 | | | | |
| 265 | | |J 640KhZ HOMERUN.60 | |
| 266 | | |A 2018 | |
| 267 | | |M 2018 2018 8255| |
| 268 | | |M 2018 | |
| 269 | | |A | |
| 270 | | | | |
| 271 | | | | |
| 272 | | | HOMERUN.120 20MHz| |
| 273 | | ----------------------------------- |
| 334 | ROM_REGION( 0x20000, "gfx2", 0 ) |
| 335 | ROM_LOAD( "homerun.ic120", 0x00000, 0x20000, CRC(52f0709b) SHA1(19e675bcccadb774f60ec5929fc1fb5cf0d3f617) ) |
| 274 | 336 | |
| 275 | | Notes: |
| 276 | | Z80 clock: 5.000MHz |
| 277 | | VSync: 60Hz |
| 278 | | HSync: 15.21kHz |
| 279 | | */ |
| 337 | ROM_REGION( 0x08000, "d7756c", 0 ) |
| 338 | ROM_LOAD( "upd7756c.ic98", 0x00000, 0x08000, NO_DUMP ) /* D7756C built-in rom */ |
| 339 | ROM_END |
| 280 | 340 | |
| 281 | | ROM_START( homerun ) |
| 341 | |
| 342 | ROM_START( dynashot ) |
| 282 | 343 | ROM_REGION( 0x30000, "maincpu", 0 ) |
| 283 | | ROM_LOAD( "homerun.43", 0x0000, 0x4000, CRC(e759e476) SHA1(ad4f356ff26209033320a3e6353e4d4d9beb59c1) ) |
| 284 | | ROM_CONTINUE( 0x10000,0x1c000) |
| 344 | ROM_LOAD( "1.ic43", 0x00000, 0x04000, CRC(bf3c9586) SHA1(439effbda305f5fa265e5897c81dc1447e5d867d) ) |
| 345 | ROM_CONTINUE( 0x10000, 0x1c000) |
| 285 | 346 | |
| 286 | | ROM_REGION( 0x010000, "gfx1", 0 ) |
| 287 | | ROM_LOAD( "homerun.60", 0x00000, 0x10000, CRC(69a720d1) SHA1(0f0a4877578f358e9e829ece8c31e23f01adcf83) ) |
| 347 | ROM_REGION( 0x10000, "gfx1", 0 ) |
| 348 | ROM_LOAD( "3.ic60", 0x00000, 0x10000, CRC(77d6a608) SHA1(a31ff343a5d4d6f20301c030ecc2e252149bcf9d) ) |
| 288 | 349 | |
| 289 | | ROM_REGION( 0x020000, "gfx2", 0 ) |
| 290 | | ROM_LOAD( "homerun.120", 0x00000, 0x20000, CRC(52f0709b) SHA1(19e675bcccadb774f60ec5929fc1fb5cf0d3f617) ) |
| 350 | ROM_REGION( 0x20000, "gfx2", 0 ) |
| 351 | ROM_LOAD( "2.ic120", 0x00000, 0x20000, CRC(bedf7b98) SHA1(cb6c5fcaf8df5f5c7636c3c8f79b9dda78e30c2e) ) |
| 291 | 352 | |
| 292 | | ROM_REGION( 0x01000, "d7756c", 0 ) |
| 293 | | ROM_LOAD( "homerun.snd", 0x00000, 0x1000, NO_DUMP ) /* D7756C internal rom */ |
| 294 | | |
| 353 | ROM_REGION( 0x08000, "d7756c", 0 ) |
| 354 | ROM_LOAD( "upd7756c.ic98", 0x00000, 0x08000, NO_DUMP ) /* D7756C built-in rom */ |
| 295 | 355 | ROM_END |
| 296 | 356 | |
| 297 | | ROM_START( dynashot ) |
| 357 | |
| 358 | ROM_START( ganjaja ) |
| 298 | 359 | ROM_REGION( 0x30000, "maincpu", 0 ) |
| 299 | | ROM_LOAD( "1.ic43", 0x0000, 0x4000, CRC(bf3c9586) SHA1(439effbda305f5fa265e5897c81dc1447e5d867d) ) |
| 300 | | ROM_CONTINUE( 0x10000,0x1c000) |
| 360 | ROM_LOAD( "1.ic43", 0x00000, 0x04000, CRC(dad57543) SHA1(dbd8b5cee33756ee5e3c41bf84c0f7141d3466dc) ) |
| 361 | ROM_CONTINUE( 0x10000, 0x1c000) |
| 301 | 362 | |
| 302 | | ROM_REGION( 0x010000, "gfx1", 0 ) |
| 303 | | ROM_LOAD( "3.ic60", 0x00000, 0x10000, CRC(77d6a608) SHA1(a31ff343a5d4d6f20301c030ecc2e252149bcf9d) ) |
| 363 | ROM_REGION( 0x10000, "gfx1", 0 ) |
| 364 | ROM_LOAD( "ic60", 0x00000, 0x10000, CRC(855f6b28) SHA1(386411e88cf9bed54fe2073f0828d579cb1d04ee) ) |
| 304 | 365 | |
| 305 | | ROM_REGION( 0x020000, "gfx2", 0 ) |
| 306 | | ROM_LOAD( "2.ic120", 0x00000, 0x20000, CRC(bedf7b98) SHA1(cb6c5fcaf8df5f5c7636c3c8f79b9dda78e30c2e) ) |
| 366 | ROM_REGION( 0x20000, "gfx2", 0 ) |
| 367 | ROM_LOAD( "2.ic120", 0x00000, 0x20000, CRC(e65d4d57) SHA1(2ec9e5bdaa94b808573313b6eca657d798004b53) ) |
| 307 | 368 | |
| 308 | | ROM_REGION( 0x01000, "d7756c", 0 ) |
| 309 | | ROM_LOAD( "dynashot.snd", 0x00000, 0x1000, NO_DUMP ) /* D7756C internal rom */ |
| 310 | | |
| 369 | ROM_REGION( 0x08000, "d7756c", 0 ) |
| 370 | ROM_LOAD( "upd77p56c.ic98", 0x00000, 0x08000, NO_DUMP ) /* D77P56C OTP rom (One-Time Programmable, note the extra P) */ |
| 311 | 371 | ROM_END |
| 312 | 372 | |
| 313 | 373 | |
| 314 | | GAME( 1988, homerun, 0, homerun, homerun, driver_device, 0, ROT0, "Jaleco", "Moero Pro Yakyuu Homerun", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) |
| 315 | | GAME( 1988, dynashot, 0, homerun, dynashot, driver_device, 0, ROT0, "Jaleco", "Dynamic Shooting", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) |
| 374 | GAME( 1988, homerun, 0, homerun, homerun, driver_device, 0, ROT0, "Jaleco", "Moero Pro Yakyuu Homerun", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) |
| 375 | GAME( 1988, dynashot, 0, homerun, dynashot, driver_device, 0, ROT0, "Jaleco", "Dynamic Shooting", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) |
| 376 | GAME( 1990, ganjaja, 0, ganjaja, ganjaja, driver_device, 0, ROT0, "Jaleco", "Ganbare Jajamaru Saisho wa Goo / Ganbare Jajamaru Hop Step & Jump", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) |