trunk/src/mame/drivers/terracre.c
| r32265 | r32266 | |
| 182 | 182 | AM_RANGE(0x000000, 0x01ffff) AM_ROM |
| 183 | 183 | AM_RANGE(0x020000, 0x0201ff) AM_RAM AM_SHARE("spriteram") |
| 184 | 184 | AM_RANGE(0x020200, 0x021fff) AM_RAM |
| 185 | | AM_RANGE(0x022000, 0x022fff) AM_WRITE(amazon_background_w) AM_SHARE("amazon_videoram") |
| 185 | AM_RANGE(0x022000, 0x022fff) AM_WRITE(amazon_background_w) AM_SHARE("bg_videoram") |
| 186 | 186 | AM_RANGE(0x023000, 0x023fff) AM_RAM |
| 187 | 187 | AM_RANGE(0x024000, 0x024001) AM_READ_PORT("P1") |
| 188 | 188 | AM_RANGE(0x024002, 0x024003) AM_READ_PORT("P2") |
| r32265 | r32266 | |
| 192 | 192 | AM_RANGE(0x026002, 0x026003) AM_WRITE(amazon_scrollx_w) |
| 193 | 193 | AM_RANGE(0x026004, 0x026005) AM_WRITE(amazon_scrolly_w) |
| 194 | 194 | AM_RANGE(0x02600c, 0x02600d) AM_WRITE(amazon_sound_w) |
| 195 | | AM_RANGE(0x028000, 0x0287ff) AM_WRITE(amazon_foreground_w) AM_SHARE("videoram") |
| 195 | AM_RANGE(0x028000, 0x0287ff) AM_WRITE(amazon_foreground_w) AM_SHARE("fg_videoram") |
| 196 | 196 | ADDRESS_MAP_END |
| 197 | 197 | |
| 198 | 198 | static ADDRESS_MAP_START( amazon_map, AS_PROGRAM, 16, terracre_state ) |
| 199 | 199 | AM_RANGE(0x000000, 0x01ffff) AM_ROM |
| 200 | 200 | AM_RANGE(0x040000, 0x0401ff) AM_RAM AM_SHARE("spriteram") |
| 201 | 201 | AM_RANGE(0x040200, 0x040fff) AM_RAM |
| 202 | | AM_RANGE(0x042000, 0x042fff) AM_WRITE(amazon_background_w) AM_SHARE("amazon_videoram") |
| 202 | AM_RANGE(0x042000, 0x042fff) AM_WRITE(amazon_background_w) AM_SHARE("bg_videoram") |
| 203 | 203 | AM_RANGE(0x044000, 0x044001) AM_READ_PORT("IN0") |
| 204 | 204 | AM_RANGE(0x044002, 0x044003) AM_READ_PORT("IN1") |
| 205 | 205 | AM_RANGE(0x044004, 0x044005) AM_READ_PORT("IN2") |
| r32265 | r32266 | |
| 208 | 208 | AM_RANGE(0x046002, 0x046003) AM_WRITE(amazon_scrollx_w) |
| 209 | 209 | AM_RANGE(0x046004, 0x046005) AM_WRITE(amazon_scrolly_w) |
| 210 | 210 | AM_RANGE(0x04600c, 0x04600d) AM_WRITE(amazon_sound_w) |
| 211 | | AM_RANGE(0x050000, 0x050fff) AM_WRITE(amazon_foreground_w) AM_SHARE("videoram") |
| 211 | AM_RANGE(0x050000, 0x050fff) AM_WRITE(amazon_foreground_w) AM_SHARE("fg_videoram") |
| 212 | 212 | AM_RANGE(0x070000, 0x070003) AM_READWRITE(amazon_protection_r, amazon_protection_w) |
| 213 | 213 | ADDRESS_MAP_END |
| 214 | 214 | |
| r32265 | r32266 | |
| 510 | 510 | GFXDECODE_ENTRY( "gfx3", 0, sprite_layout, 1*16+16*16, 256 ) |
| 511 | 511 | GFXDECODE_END |
| 512 | 512 | |
| 513 | | static MACHINE_CONFIG_START( amazon, terracre_state ) |
| 514 | | MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) // 8mhz |
| 515 | | MCFG_CPU_PROGRAM_MAP(amazon_map) |
| 516 | | MCFG_CPU_VBLANK_INT_DRIVER("screen", terracre_state, irq1_line_hold) |
| 517 | 513 | |
| 518 | | MCFG_CPU_ADD("audiocpu", Z80, XTAL_16MHz/4) // 4mhz? should be derived from XTAL_22MHz? how? |
| 519 | | MCFG_CPU_PROGRAM_MAP(sound_map) |
| 520 | | MCFG_CPU_IO_MAP(sound_3526_io_map) |
| 521 | | MCFG_CPU_PERIODIC_INT_DRIVER(terracre_state, irq0_line_hold, XTAL_16MHz/4/512) // ? |
| 522 | | |
| 523 | | MCFG_MACHINE_START_OVERRIDE(terracre_state,amazon) |
| 524 | | |
| 525 | | MCFG_SCREEN_ADD("screen", RASTER) |
| 526 | | MCFG_SCREEN_REFRESH_RATE( 60 ) |
| 527 | | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) |
| 528 | | MCFG_SCREEN_SIZE(32*8, 32*8) |
| 529 | | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) |
| 530 | | MCFG_SCREEN_UPDATE_DRIVER(terracre_state, screen_update_amazon) |
| 531 | | MCFG_SCREEN_PALETTE("palette") |
| 532 | | |
| 533 | | MCFG_GFXDECODE_ADD("gfxdecode", "palette", terracre) |
| 534 | | MCFG_PALETTE_ADD("palette", 1*16+16*16+16*256) |
| 535 | | MCFG_PALETTE_INDIRECT_ENTRIES(256) |
| 536 | | MCFG_PALETTE_INIT_OWNER(terracre_state, terracre) |
| 537 | | |
| 538 | | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 539 | | |
| 540 | | MCFG_SOUND_ADD("ymsnd", YM3526, XTAL_16MHz/4) |
| 541 | | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 542 | | |
| 543 | | MCFG_DAC_ADD("dac1") |
| 544 | | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 545 | | |
| 546 | | MCFG_DAC_ADD("dac2") |
| 547 | | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 548 | | MACHINE_CONFIG_END |
| 549 | | |
| 550 | 514 | static MACHINE_CONFIG_START( ym3526, terracre_state ) |
| 551 | 515 | MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) // 8mhz |
| 552 | 516 | MCFG_CPU_PROGRAM_MAP(terracre_map) |
| r32265 | r32266 | |
| 557 | 521 | MCFG_CPU_IO_MAP(sound_3526_io_map) |
| 558 | 522 | MCFG_CPU_PERIODIC_INT_DRIVER(terracre_state, irq0_line_hold, XTAL_16MHz/4/512) // ? |
| 559 | 523 | |
| 524 | MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") |
| 525 | |
| 560 | 526 | MCFG_SCREEN_ADD("screen", RASTER) |
| 561 | 527 | MCFG_SCREEN_REFRESH_RATE( 60 ) |
| 562 | 528 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) |
| 563 | 529 | MCFG_SCREEN_SIZE(32*8, 32*8) |
| 564 | 530 | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) |
| 565 | 531 | MCFG_SCREEN_UPDATE_DRIVER(terracre_state, screen_update_amazon) |
| 532 | MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) |
| 566 | 533 | MCFG_SCREEN_PALETTE("palette") |
| 567 | 534 | |
| 568 | 535 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", terracre) |
| r32265 | r32266 | |
| 582 | 549 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 583 | 550 | MACHINE_CONFIG_END |
| 584 | 551 | |
| 585 | | static MACHINE_CONFIG_START( ym2203, terracre_state ) |
| 586 | | MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) // 8mhz |
| 587 | | MCFG_CPU_PROGRAM_MAP(terracre_map) |
| 588 | | MCFG_CPU_VBLANK_INT_DRIVER("screen", terracre_state, irq1_line_hold) |
| 589 | | |
| 590 | | MCFG_CPU_ADD("audiocpu", Z80, XTAL_16MHz/4) // 4.0mhz when compared to sound recordings, should be derived from XTAL_22MHz? how? |
| 591 | | MCFG_CPU_PROGRAM_MAP(sound_map) |
| 552 | static MACHINE_CONFIG_DERIVED( ym2203, ym3526 ) |
| 553 | MCFG_CPU_MODIFY("audiocpu") |
| 592 | 554 | MCFG_CPU_IO_MAP(sound_2203_io_map) |
| 593 | | MCFG_CPU_PERIODIC_INT_DRIVER(terracre_state, irq0_line_hold, XTAL_16MHz/4/512) // ? |
| 594 | 555 | |
| 595 | | MCFG_SCREEN_ADD("screen", RASTER) |
| 596 | | MCFG_SCREEN_REFRESH_RATE(60) |
| 597 | | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 598 | | MCFG_SCREEN_SIZE(32*8, 32*8) |
| 599 | | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) |
| 600 | | MCFG_SCREEN_UPDATE_DRIVER(terracre_state, screen_update_amazon) |
| 601 | | MCFG_SCREEN_PALETTE("palette") |
| 556 | MCFG_DEVICE_REMOVE("ymsnd") |
| 602 | 557 | |
| 603 | | MCFG_GFXDECODE_ADD("gfxdecode", "palette", terracre) |
| 604 | | MCFG_PALETTE_ADD("palette", 1*16+16*16+16*256) |
| 605 | | MCFG_PALETTE_INDIRECT_ENTRIES(256) |
| 606 | | MCFG_PALETTE_INIT_OWNER(terracre_state, terracre) |
| 607 | | |
| 608 | | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 609 | | |
| 610 | 558 | MCFG_SOUND_ADD("ym1", YM2203, XTAL_16MHz/4) |
| 611 | 559 | MCFG_SOUND_ROUTE(0, "mono", 0.20) |
| 612 | 560 | MCFG_SOUND_ROUTE(1, "mono", 0.20) |
| 613 | 561 | MCFG_SOUND_ROUTE(2, "mono", 0.20) |
| 614 | 562 | MCFG_SOUND_ROUTE(3, "mono", 0.40) |
| 563 | MACHINE_CONFIG_END |
| 615 | 564 | |
| 616 | | MCFG_DAC_ADD("dac1") |
| 617 | | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 565 | static MACHINE_CONFIG_DERIVED( amazon, ym3526 ) |
| 566 | MCFG_CPU_MODIFY("maincpu") |
| 567 | MCFG_CPU_PROGRAM_MAP(amazon_map) |
| 618 | 568 | |
| 619 | | MCFG_DAC_ADD("dac2") |
| 620 | | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 569 | MCFG_MACHINE_START_OVERRIDE(terracre_state,amazon) |
| 621 | 570 | MACHINE_CONFIG_END |
| 622 | 571 | |
| 623 | 572 | |
trunk/src/mame/includes/terracre.h
| r32265 | r32266 | |
| 1 | #include "video/bufsprite.h" |
| 2 | |
| 1 | 3 | class terracre_state : public driver_device |
| 2 | 4 | { |
| 3 | 5 | public: |
| r32265 | r32266 | |
| 3 | 5 | terracre_state(const machine_config &mconfig, device_type type, const char *tag) |
| 4 | 6 | : driver_device(mconfig, type, tag), |
| 5 | | m_spriteram(*this, "spriteram"), |
| 6 | | m_amazon_videoram(*this, "amazon_videoram"), |
| 7 | | m_videoram(*this, "videoram"), |
| 8 | 7 | m_maincpu(*this, "maincpu"), |
| 9 | 8 | m_gfxdecode(*this, "gfxdecode"), |
| 10 | | m_palette(*this, "palette") { } |
| 9 | m_palette(*this, "palette"), |
| 10 | m_spriteram(*this, "spriteram"), |
| 11 | m_bg_videoram(*this, "bg_videoram"), |
| 12 | m_fg_videoram(*this, "fg_videoram") { } |
| 11 | 13 | |
| 12 | | required_shared_ptr<UINT16> m_spriteram; |
| 13 | | required_shared_ptr<UINT16> m_amazon_videoram; |
| 14 | | required_shared_ptr<UINT16> m_videoram; |
| 14 | required_device<cpu_device> m_maincpu; |
| 15 | required_device<gfxdecode_device> m_gfxdecode; |
| 16 | required_device<palette_device> m_palette; |
| 17 | required_device<buffered_spriteram16_device> m_spriteram; |
| 15 | 18 | |
| 19 | required_shared_ptr<UINT16> m_bg_videoram; |
| 20 | required_shared_ptr<UINT16> m_fg_videoram; |
| 21 | |
| 16 | 22 | const UINT16 *m_mpProtData; |
| 17 | 23 | UINT8 m_mAmazonProtCmd; |
| r32265 | r32266 | |
| 40 | 46 | DECLARE_MACHINE_START(amazon); |
| 41 | 47 | UINT32 screen_update_amazon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 42 | 48 | void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect ); |
| 43 | | required_device<cpu_device> m_maincpu; |
| 44 | | required_device<gfxdecode_device> m_gfxdecode; |
| 45 | | required_device<palette_device> m_palette; |
| 46 | 49 | }; |