trunk/src/mame/drivers/magicard.c
| r30904 | r30905 | |
| 177 | 177 | magicard_state(const machine_config &mconfig, device_type type, const char *tag) |
| 178 | 178 | : driver_device(mconfig, type, tag), |
| 179 | 179 | m_magicram(*this, "magicram"), |
| 180 | m_magicramb(*this, "magicramb"), |
| 180 | 181 | m_pcab_vregs(*this, "pcab_vregs"), |
| 181 | 182 | m_scc68070_ext_irqc_regs(*this, "scc_xirqc_regs"), |
| 182 | 183 | m_scc68070_iic_regs(*this, "scc_iic_regs"), |
| r30904 | r30905 | |
| 191 | 192 | m_palette(*this, "palette") { } |
| 192 | 193 | |
| 193 | 194 | required_shared_ptr<UINT16> m_magicram; |
| 195 | required_shared_ptr<UINT16> m_magicramb; |
| 194 | 196 | required_shared_ptr<UINT16> m_pcab_vregs; |
| 195 | 197 | required_shared_ptr<UINT16> m_scc68070_ext_irqc_regs; |
| 196 | 198 | required_shared_ptr<UINT16> m_scc68070_iic_regs; |
| r30904 | r30905 | |
| 656 | 658 | * Memory Maps * |
| 657 | 659 | *************************/ |
| 658 | 660 | |
| 661 | static ADDRESS_MAP_START( scc68070_mem, AS_PROGRAM, 16, magicard_state ) |
| 662 | AM_RANGE(0x80001000, 0x8000100f) AM_READWRITE(scc68070_ext_irqc_r,scc68070_ext_irqc_w) AM_SHARE("scc_xirqc_regs") //lir |
| 663 | AM_RANGE(0x80002000, 0x8000200f) AM_READWRITE(scc68070_iic_r,scc68070_iic_w) AM_SHARE("scc_iic_regs") //i2c |
| 664 | AM_RANGE(0x80002010, 0x8000201f) AM_READWRITE(scc68070_uart_r,scc68070_uart_w) AM_SHARE("scc_uart_regs") |
| 665 | AM_RANGE(0x80002020, 0x8000202f) AM_READWRITE(scc68070_timer_r,scc68070_timer_w) AM_SHARE("scc_timer_regs") |
| 666 | AM_RANGE(0x80002040, 0x8000204f) AM_READWRITE(scc68070_int_irqc_r,scc68070_int_irqc_w) AM_SHARE("scc_iirqc_regs") |
| 667 | AM_RANGE(0x80004000, 0x8000403f) AM_READWRITE(scc68070_dma_ch1_r,scc68070_dma_ch1_w) AM_SHARE("scc_dma1_regs") |
| 668 | AM_RANGE(0x80004040, 0x8000407f) AM_READWRITE(scc68070_dma_ch2_r,scc68070_dma_ch2_w) AM_SHARE("scc_dma2_regs") |
| 669 | AM_RANGE(0x80008000, 0x8000807f) AM_READWRITE(scc68070_mmu_r,scc68070_mmu_w) AM_SHARE("scc_mmu_regs") |
| 670 | ADDRESS_MAP_END |
| 671 | |
| 659 | 672 | static ADDRESS_MAP_START( magicard_mem, AS_PROGRAM, 16, magicard_state ) |
| 660 | 673 | // ADDRESS_MAP_GLOBAL_MASK(0x1fffff) |
| 661 | | AM_RANGE(0x00000000, 0x001ffbff) AM_MIRROR(0x7fe00000) AM_RAM AM_SHARE("magicram") /*only 0-7ffff accessed in Magic Card*/ |
| 662 | | AM_RANGE(0x00180000, 0x001ffbff) AM_MIRROR(0x7fe00000) AM_RAM AM_REGION("maincpu", 0) |
| 674 | AM_IMPORT_FROM(scc68070_mem) |
| 675 | AM_RANGE(0x00000000, 0x001ffbff) AM_MIRROR(0x00200000) AM_RAM AM_SHARE("magicram") |
| 676 | AM_RANGE(0x00600000, 0x007ffbff) AM_RAM AM_SHARE("magicramb") |
| 663 | 677 | /* 001ffc00-001ffdff System I/O */ |
| 664 | 678 | AM_RANGE(0x001ffc00, 0x001ffc01) AM_MIRROR(0x7fe00000) AM_READ(test_r) |
| 665 | 679 | AM_RANGE(0x001ffc40, 0x001ffc41) AM_MIRROR(0x7fe00000) AM_READ(test_r) |
| r30904 | r30905 | |
| 672 | 686 | AM_RANGE(0x001ffd80, 0x001ffd81) AM_MIRROR(0x7fe00000) AM_WRITENOP //? |
| 673 | 687 | AM_RANGE(0x001fff80, 0x001fffbf) AM_MIRROR(0x7fe00000) AM_RAM //DRAM I/O, not accessed by this game, CD buffer? |
| 674 | 688 | AM_RANGE(0x001fffe0, 0x001fffff) AM_MIRROR(0x7fe00000) AM_READWRITE(philips_66470_r,philips_66470_w) AM_SHARE("pcab_vregs") //video registers |
| 675 | | AM_RANGE(0x80001000, 0x8000100f) AM_READWRITE(scc68070_ext_irqc_r,scc68070_ext_irqc_w) AM_SHARE("scc_xirqc_regs") //lir |
| 676 | | AM_RANGE(0x80002000, 0x8000200f) AM_READWRITE(scc68070_iic_r,scc68070_iic_w) AM_SHARE("scc_iic_regs") //i2c |
| 677 | | AM_RANGE(0x80002010, 0x8000201f) AM_READWRITE(scc68070_uart_r,scc68070_uart_w) AM_SHARE("scc_uart_regs") |
| 678 | | AM_RANGE(0x80002020, 0x8000202f) AM_READWRITE(scc68070_timer_r,scc68070_timer_w) AM_SHARE("scc_timer_regs") |
| 679 | | AM_RANGE(0x80002040, 0x8000204f) AM_READWRITE(scc68070_int_irqc_r,scc68070_int_irqc_w) AM_SHARE("scc_iirqc_regs") |
| 680 | | AM_RANGE(0x80004000, 0x8000403f) AM_READWRITE(scc68070_dma_ch1_r,scc68070_dma_ch1_w) AM_SHARE("scc_dma1_regs") |
| 681 | | AM_RANGE(0x80004040, 0x8000407f) AM_READWRITE(scc68070_dma_ch2_r,scc68070_dma_ch2_w) AM_SHARE("scc_dma2_regs") |
| 682 | | AM_RANGE(0x80008000, 0x8000807f) AM_READWRITE(scc68070_mmu_r,scc68070_mmu_w) AM_SHARE("scc_mmu_regs") |
| 683 | 689 | ADDRESS_MAP_END |
| 684 | 690 | |
| 691 | static ADDRESS_MAP_START( hotslots_mem, AS_PROGRAM, 16, magicard_state ) |
| 692 | // ADDRESS_MAP_GLOBAL_MASK(0x1fffff) |
| 693 | AM_IMPORT_FROM(scc68070_mem) |
| 694 | AM_RANGE(0x00000000, 0x001ffbff) AM_MIRROR(0x00200000) AM_RAM AM_SHARE("magicram") |
| 695 | AM_RANGE(0x00600000, 0x007ffbff) AM_RAM AM_SHARE("magicramb") |
| 696 | AM_RANGE(0x001ffc00, 0x001ffc01) AM_MIRROR(0x7fe00000) AM_READ(test_r) |
| 697 | AM_RANGE(0x001ffc40, 0x001ffc41) AM_MIRROR(0x7fe00000) AM_READ(test_r) |
| 698 | /*not the right sound chip,unknown type,it should be an ADPCM with 8 channels.*/ |
| 699 | AM_RANGE(0x001ffd40, 0x001ffd43) AM_MIRROR(0x7fe00000) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff) |
| 700 | AM_RANGE(0x001ffd80, 0x001ffd81) AM_MIRROR(0x7fe00000) AM_READ(test_r) |
| 701 | AM_RANGE(0x001ffd80, 0x001ffd81) AM_MIRROR(0x7fe00000) AM_WRITENOP //? |
| 702 | AM_RANGE(0x001fff80, 0x001fffbf) AM_MIRROR(0x7fe00000) AM_RAM //DRAM I/O, not accessed by this game, CD buffer? |
| 703 | AM_RANGE(0x001fffe0, 0x001fffff) AM_MIRROR(0x7fe00000) AM_READWRITE(philips_66470_r,philips_66470_w) AM_SHARE("pcab_vregs") //video registers |
| 704 | AM_RANGE(0x00414000, 0x00414001) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff) |
| 705 | AM_RANGE(0x00414002, 0x00414003) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff) |
| 706 | AM_RANGE(0x00414004, 0x00414005) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff) |
| 707 | ADDRESS_MAP_END |
| 685 | 708 | |
| 686 | 709 | /************************* |
| 687 | 710 | * Input ports * |
| r30904 | r30905 | |
| 696 | 719 | UINT16 *src = (UINT16*)memregion("maincpu" )->base(); |
| 697 | 720 | UINT16 *dst = m_magicram; |
| 698 | 721 | memcpy (dst, src, 0x80000); |
| 722 | memcpy (dst+0x40000*1, src, 0x80000); |
| 723 | memcpy (dst+0x40000*2, src, 0x80000); |
| 724 | memcpy (dst+0x40000*3, src, 0x80000); |
| 725 | dst = m_magicramb; |
| 726 | memcpy (dst, src, 0x80000); |
| 727 | memcpy (dst+0x40000*1, src, 0x80000); |
| 728 | memcpy (dst+0x40000*2, src, 0x80000); |
| 729 | memcpy (dst+0x40000*3, src, 0x80000); |
| 699 | 730 | m_maincpu->reset(); |
| 700 | 731 | } |
| 701 | 732 | |
| r30904 | r30905 | |
| 738 | 769 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 739 | 770 | MACHINE_CONFIG_END |
| 740 | 771 | |
| 772 | static MACHINE_CONFIG_DERIVED( hotslots, magicard ) |
| 773 | MCFG_CPU_MODIFY("maincpu") |
| 774 | MCFG_CPU_PROGRAM_MAP(hotslots_mem) |
| 775 | MACHINE_CONFIG_END |
| 741 | 776 | |
| 742 | 777 | /************************* |
| 743 | 778 | * Rom Load * |
| r30904 | r30905 | |
| 873 | 908 | GAME( 1994, magicarde, magicard, magicard, magicard, magicard_state, magicard, ROT0, "Impera", "Magic Card Export 94", GAME_NO_SOUND | GAME_NOT_WORKING ) |
| 874 | 909 | GAME( 1998, magicardj, magicard, magicard, magicard, magicard_state, magicard, ROT0, "Impera", "Magic Card Jackpot (4.01)", GAME_NO_SOUND | GAME_NOT_WORKING ) |
| 875 | 910 | GAME( 2001, magicle, 0, magicard, magicard, magicard_state, magicard, ROT0, "Impera", "Magic Lotto Export (5.03)", GAME_NO_SOUND | GAME_NOT_WORKING ) |
| 876 | | GAME( 2002, hotslots, 0, magicard, magicard, magicard_state, magicard, ROT0, "Impera", "Hot Slots (6.00)", GAME_NO_SOUND | GAME_NOT_WORKING ) |
| 911 | GAME( 2002, hotslots, 0, hotslots, magicard, magicard_state, magicard, ROT0, "Impera", "Hot Slots (6.00)", GAME_NO_SOUND | GAME_NOT_WORKING ) |