Previous 199869 Revisions Next

r29189 Wednesday 2nd April, 2014 at 16:33:03 UTC by Miodrag Milanović
converted legacy handlers to modern (nw)
[src/emu/cpu/g65816]g65816.c g65816.h
[src/mess/drivers]snes.c

trunk/src/mess/drivers/snes.c
r29188r29189
18151815      case SNES_Z80GB:      // skeleton support
18161816         m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(FUNC(snes_console_state::snessgb_lo_r),this), write8_delegate(FUNC(snes_console_state::snessgb_lo_w),this));
18171817         m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(FUNC(snes_console_state::snessgb_hi_r),this), write8_delegate(FUNC(snes_console_state::snessgb_hi_w),this));
1818         set_5a22_map(m_maincpu);
1818         m_maincpu->set_5a22_map();
18191819         break;
18201820      case SNES_SA1:      // skeleton support
18211821         m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(FUNC(snes_console_state::snessa1_lo_r),this), write8_delegate(FUNC(snes_console_state::snessa1_lo_w),this));
18221822         m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(FUNC(snes_console_state::snessa1_hi_r),this), write8_delegate(FUNC(snes_console_state::snessa1_hi_w),this));
1823         set_5a22_map(m_maincpu);
1823         m_maincpu->set_5a22_map();
18241824         break;
18251825      case SNES_DSP:
18261826         m_maincpu->space(AS_PROGRAM).install_read_handler(0x208000, 0x20ffff, 0, 0x9f0000, read8_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot));
r29188r29189
18411841      case SNES_SFX:
18421842         m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(FUNC(snes_console_state::snessfx_lo_r),this), write8_delegate(FUNC(snes_console_state::snessfx_lo_w),this));
18431843         m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(FUNC(snes_console_state::snessfx_hi_r),this), write8_delegate(FUNC(snes_console_state::snessfx_hi_w),this));
1844         set_5a22_map(m_maincpu);
1844         m_maincpu->set_5a22_map();
18451845         break;
18461846      case SNES_SDD1:
18471847         m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(FUNC(snes_console_state::snessdd1_lo_r),this), write8_delegate(FUNC(snes_console_state::snessdd1_lo_w),this));
18481848         m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(FUNC(snes_console_state::snessdd1_hi_r),this), write8_delegate(FUNC(snes_console_state::snessdd1_hi_w),this));
1849         set_5a22_map(m_maincpu);
1849         m_maincpu->set_5a22_map();
18501850         break;
18511851      case SNES_BSX:
18521852         m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(FUNC(snes_console_state::snesbsx_lo_r),this), write8_delegate(FUNC(snes_console_state::snesbsx_lo_w),this));
18531853         m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(FUNC(snes_console_state::snesbsx_hi_r),this), write8_delegate(FUNC(snes_console_state::snesbsx_hi_w),this));
1854         set_5a22_map(m_maincpu);
1854         m_maincpu->set_5a22_map();
18551855         break;
18561856      // HiROM & HiROM + addons
18571857      case SNES_MODE21:
18581858      case SNES_BSXHI:
18591859         m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(FUNC(snes_console_state::snes21_lo_r),this), write8_delegate(FUNC(snes_console_state::snes21_lo_w),this));
18601860         m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(FUNC(snes_console_state::snes21_hi_r),this), write8_delegate(FUNC(snes_console_state::snes21_hi_w),this));
1861         set_5a22_map(m_maincpu);
1861         m_maincpu->set_5a22_map();
18621862         break;
18631863      case SNES_DSP_MODE21:
18641864         m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(FUNC(snes_console_state::snes21_lo_r),this), write8_delegate(FUNC(snes_console_state::snes21_lo_w),this));
18651865         m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(FUNC(snes_console_state::snes21_hi_r),this), write8_delegate(FUNC(snes_console_state::snes21_hi_w),this));
18661866         m_maincpu->space(AS_PROGRAM).install_read_handler(0x006000, 0x007fff, 0, 0x9f0000, read8_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot));
18671867         m_maincpu->space(AS_PROGRAM).install_write_handler(0x006000, 0x007fff, 0, 0x9f0000, write8_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot));
1868         set_5a22_map(m_maincpu);
1868         m_maincpu->set_5a22_map();
18691869         break;
18701870      case SNES_SRTC:
18711871         m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(FUNC(snes_console_state::snes21_lo_r),this), write8_delegate(FUNC(snes_console_state::snes21_lo_w),this));
18721872         m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(FUNC(snes_console_state::snes21_hi_r),this), write8_delegate(FUNC(snes_console_state::snes21_hi_w),this));
18731873         m_maincpu->space(AS_PROGRAM).install_read_handler(0x002800, 0x002800, 0, 0xbf0000, read8_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot));
18741874         m_maincpu->space(AS_PROGRAM).install_write_handler(0x002801, 0x002801, 0, 0xbf0000, write8_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot));
1875         set_5a22_map(m_maincpu);
1875         m_maincpu->set_5a22_map();
18761876         break;
18771877      case SNES_SPC7110:
18781878      case SNES_SPC7110_RTC:
18791879         m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(FUNC(snes_console_state::snes7110_lo_r),this), write8_delegate(FUNC(snes_console_state::snes7110_lo_w),this));
18801880         m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(FUNC(snes_console_state::snes7110_hi_r),this), write8_delegate(FUNC(snes_console_state::snes7110_hi_w),this));
1881         set_5a22_map(m_maincpu);
1881         m_maincpu->set_5a22_map();
18821882         break;
18831883      case SNES_PFEST94:
18841884         m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(FUNC(snes_console_state::pfest94_lo_r),this), write8_delegate(FUNC(snes_console_state::pfest94_lo_w),this));
18851885         m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(FUNC(snes_console_state::pfest94_hi_r),this), write8_delegate(FUNC(snes_console_state::pfest94_hi_w),this));
1886         set_5a22_map(m_maincpu);
1886         m_maincpu->set_5a22_map();
18871887         break;
18881888         // pirate 'mappers'
18891889      case SNES_POKEMON:
r29188r29189
19101910      case SNES_BANANA:
19111911//          m_maincpu->space(AS_PROGRAM).install_read_handler(0x808000, 0x80ffff, 0, 0x780000, read8_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot));
19121912//          m_maincpu->space(AS_PROGRAM).install_write_handler(0x808000, 0x80ffff, 0, 0x780000, write8_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot));
1913//          set_5a22_map(m_maincpu);
1913//          m_maincpu->set_5a22_map();
19141914         break;
19151915   }
19161916
trunk/src/emu/cpu/g65816/g65816.h
r29188r29189
5959
6060/* Main interface function */
6161DECLARE_LEGACY_CPU_DEVICE(G65816, g65816);
62DECLARE_LEGACY_CPU_DEVICE(_5A22, _5a22);
6362
63CPU_GET_INFO( _5a22 );
64
65class _5a22_device : public legacy_cpu_device
66{
67public:
68   _5a22_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, UINT32 clock);
69   
70   DECLARE_WRITE8_MEMBER( wrmpya_w );
71   DECLARE_WRITE8_MEMBER( wrmpyb_w );
72   DECLARE_WRITE8_MEMBER( wrdivl_w );
73   DECLARE_WRITE8_MEMBER( wrdivh_w );
74   DECLARE_WRITE8_MEMBER( wrdvdd_w );
75   DECLARE_WRITE8_MEMBER( memsel_w );
76   DECLARE_READ8_MEMBER( rddivl_r );
77   DECLARE_READ8_MEMBER( rddivh_r );
78   DECLARE_READ8_MEMBER( rdmpyl_r );
79   DECLARE_READ8_MEMBER( rdmpyh_r );
80   
81   void set_5a22_map();
82};
83
84extern const device_type _5A22;
85
86
6487#define CPU_TYPE_G65816 0
6588#define CPU_TYPE_5A22 1
6689
6790
6891void g65816_set_read_vector_callback(device_t *device, read8_delegate read_vector);
6992
70void set_5a22_map(legacy_cpu_device &cpu);
71
7293/* ======================================================================== */
7394/* ============================== END OF FILE ============================= */
7495/* ======================================================================== */
trunk/src/emu/cpu/g65816/g65816.c
r29188r29189
5845848 CPU cycles for division at first, since using 16 produces bugs (see e.g.
585585Triforce pieces in Zelda 3 intro) */
586586
587static WRITE8_HANDLER( wrmpya_w )
587WRITE8_MEMBER( _5a22_device::wrmpya_w )
588588{
589   g65816i_cpu_struct *cpustate = get_safe_token(&space.device());
589   g65816i_cpu_struct *cpustate = get_safe_token(this);
590590
591591   cpustate->wrmpya = data;
592592}
593593
594static WRITE8_HANDLER( wrmpyb_w )
594WRITE8_MEMBER( _5a22_device::wrmpyb_w )
595595{
596   g65816i_cpu_struct *cpustate = get_safe_token(&space.device());
596   g65816i_cpu_struct *cpustate = get_safe_token(this);
597597
598598   cpustate->wrmpyb = data;
599599   cpustate->rdmpy = cpustate->wrmpya * cpustate->wrmpyb;
600600   /* TODO: cpustate->rddiv == 0? */
601601}
602602
603static WRITE8_HANDLER( wrdivl_w )
603WRITE8_MEMBER( _5a22_device::wrdivl_w )
604604{
605   g65816i_cpu_struct *cpustate = get_safe_token(&space.device());
605   g65816i_cpu_struct *cpustate = get_safe_token(this);
606606
607607   cpustate->wrdiv = (data) | (cpustate->wrdiv & 0xff00);
608608}
609609
610static WRITE8_HANDLER( wrdivh_w )
610WRITE8_MEMBER( _5a22_device::wrdivh_w )
611611{
612   g65816i_cpu_struct *cpustate = get_safe_token(&space.device());
612   g65816i_cpu_struct *cpustate = get_safe_token(this);
613613
614614   cpustate->wrdiv = (data << 8) | (cpustate->wrdiv & 0xff);
615615}
616616
617static WRITE8_HANDLER( wrdvdd_w )
617WRITE8_MEMBER( _5a22_device::wrdvdd_w )
618618{
619   g65816i_cpu_struct *cpustate = get_safe_token(&space.device());
619   g65816i_cpu_struct *cpustate = get_safe_token(this);
620620   UINT16 quotient, remainder;
621621
622622   cpustate->dvdd = data;
r29188r29189
628628   cpustate->rdmpy = remainder;
629629}
630630
631static WRITE8_HANDLER( memsel_w )
631WRITE8_MEMBER( _5a22_device::memsel_w )
632632{
633   g65816i_cpu_struct *cpustate = get_safe_token(&space.device());
633   g65816i_cpu_struct *cpustate = get_safe_token(this);
634634   cpustate->fastROM = data & 1;
635635}
636636
637static READ8_HANDLER( rddivl_r )
637READ8_MEMBER( _5a22_device::rddivl_r )
638638{
639   g65816i_cpu_struct *cpustate = get_safe_token(&space.device());
639   g65816i_cpu_struct *cpustate = get_safe_token(this);
640640   return cpustate->rddiv & 0xff;
641641}
642642
643static READ8_HANDLER( rddivh_r )
643READ8_MEMBER( _5a22_device::rddivh_r )
644644{
645   g65816i_cpu_struct *cpustate = get_safe_token(&space.device());
645   g65816i_cpu_struct *cpustate = get_safe_token(this);
646646   return cpustate->rddiv >> 8;
647647}
648648
649static READ8_HANDLER( rdmpyl_r )
649READ8_MEMBER( _5a22_device::rdmpyl_r )
650650{
651   g65816i_cpu_struct *cpustate = get_safe_token(&space.device());
651   g65816i_cpu_struct *cpustate = get_safe_token(this);
652652   return cpustate->rdmpy & 0xff;
653653}
654654
655static READ8_HANDLER( rdmpyh_r )
655READ8_MEMBER( _5a22_device::rdmpyh_r )
656656{
657   g65816i_cpu_struct *cpustate = get_safe_token(&space.device());
657   g65816i_cpu_struct *cpustate = get_safe_token(this);
658658   return cpustate->rdmpy >> 8;
659659}
660660
661661
662static ADDRESS_MAP_START(_5a22_map, AS_PROGRAM, 8, legacy_cpu_device)
663   AM_RANGE(0x4202, 0x4202) AM_MIRROR(0xbf0000) AM_WRITE_LEGACY(wrmpya_w)
664   AM_RANGE(0x4203, 0x4203) AM_MIRROR(0xbf0000) AM_WRITE_LEGACY(wrmpyb_w)
665   AM_RANGE(0x4204, 0x4204) AM_MIRROR(0xbf0000) AM_WRITE_LEGACY(wrdivl_w)
666   AM_RANGE(0x4205, 0x4205) AM_MIRROR(0xbf0000) AM_WRITE_LEGACY(wrdivh_w)
667   AM_RANGE(0x4206, 0x4206) AM_MIRROR(0xbf0000) AM_WRITE_LEGACY(wrdvdd_w)
662static ADDRESS_MAP_START(_5a22_map, AS_PROGRAM, 8, _5a22_device)
663   AM_RANGE(0x4202, 0x4202) AM_MIRROR(0xbf0000) AM_WRITE(wrmpya_w)
664   AM_RANGE(0x4203, 0x4203) AM_MIRROR(0xbf0000) AM_WRITE(wrmpyb_w)
665   AM_RANGE(0x4204, 0x4204) AM_MIRROR(0xbf0000) AM_WRITE(wrdivl_w)
666   AM_RANGE(0x4205, 0x4205) AM_MIRROR(0xbf0000) AM_WRITE(wrdivh_w)
667   AM_RANGE(0x4206, 0x4206) AM_MIRROR(0xbf0000) AM_WRITE(wrdvdd_w)
668668
669   AM_RANGE(0x420d, 0x420d) AM_MIRROR(0xbf0000) AM_WRITE_LEGACY(memsel_w)
669   AM_RANGE(0x420d, 0x420d) AM_MIRROR(0xbf0000) AM_WRITE(memsel_w)
670670
671   AM_RANGE(0x4214, 0x4214) AM_MIRROR(0xbf0000) AM_READ_LEGACY(rddivl_r)
672   AM_RANGE(0x4215, 0x4215) AM_MIRROR(0xbf0000) AM_READ_LEGACY(rddivh_r)
673   AM_RANGE(0x4216, 0x4216) AM_MIRROR(0xbf0000) AM_READ_LEGACY(rdmpyl_r)
674   AM_RANGE(0x4217, 0x4217) AM_MIRROR(0xbf0000) AM_READ_LEGACY(rdmpyh_r)
671   AM_RANGE(0x4214, 0x4214) AM_MIRROR(0xbf0000) AM_READ(rddivl_r)
672   AM_RANGE(0x4215, 0x4215) AM_MIRROR(0xbf0000) AM_READ(rddivh_r)
673   AM_RANGE(0x4216, 0x4216) AM_MIRROR(0xbf0000) AM_READ(rdmpyl_r)
674   AM_RANGE(0x4217, 0x4217) AM_MIRROR(0xbf0000) AM_READ(rdmpyh_r)
675675
676676ADDRESS_MAP_END
677677
678void set_5a22_map(legacy_cpu_device &cpu)
678void _5a22_device::set_5a22_map()
679679{
680   cpu.space(AS_PROGRAM).install_legacy_write_handler(0x4202, 0x4202, 0, 0xbf0000, FUNC(wrmpya_w));
681   cpu.space(AS_PROGRAM).install_legacy_write_handler(0x4203, 0x4203, 0, 0xbf0000, FUNC(wrmpyb_w));
682   cpu.space(AS_PROGRAM).install_legacy_write_handler(0x4204, 0x4204, 0, 0xbf0000, FUNC(wrdivl_w));
683   cpu.space(AS_PROGRAM).install_legacy_write_handler(0x4205, 0x4205, 0, 0xbf0000, FUNC(wrdivh_w));
684   cpu.space(AS_PROGRAM).install_legacy_write_handler(0x4206, 0x4206, 0, 0xbf0000, FUNC(wrdvdd_w));
680   space(AS_PROGRAM).install_write_handler(0x4202, 0x4202, 0, 0xbf0000, write8_delegate(FUNC(_5a22_device::wrmpya_w),this));
681   space(AS_PROGRAM).install_write_handler(0x4203, 0x4203, 0, 0xbf0000, write8_delegate(FUNC(_5a22_device::wrmpyb_w),this));
682   space(AS_PROGRAM).install_write_handler(0x4204, 0x4204, 0, 0xbf0000, write8_delegate(FUNC(_5a22_device::wrdivl_w),this));
683   space(AS_PROGRAM).install_write_handler(0x4205, 0x4205, 0, 0xbf0000, write8_delegate(FUNC(_5a22_device::wrdivh_w),this));
684   space(AS_PROGRAM).install_write_handler(0x4206, 0x4206, 0, 0xbf0000, write8_delegate(FUNC(_5a22_device::wrdvdd_w),this));
685685
686   cpu.space(AS_PROGRAM).install_legacy_write_handler(0x420d, 0x420d, 0, 0xbf0000, FUNC(memsel_w));
686   space(AS_PROGRAM).install_write_handler(0x420d, 0x420d, 0, 0xbf0000, write8_delegate(FUNC(_5a22_device::memsel_w),this));
687687
688   cpu.space(AS_PROGRAM).install_legacy_read_handler(0x4214, 0x4214, 0, 0xbf0000, FUNC(rddivl_r));
689   cpu.space(AS_PROGRAM).install_legacy_read_handler(0x4215, 0x4215, 0, 0xbf0000, FUNC(rddivh_r));
690   cpu.space(AS_PROGRAM).install_legacy_read_handler(0x4216, 0x4216, 0, 0xbf0000, FUNC(rdmpyl_r));
691   cpu.space(AS_PROGRAM).install_legacy_read_handler(0x4217, 0x4217, 0, 0xbf0000, FUNC(rdmpyh_r));
688   space(AS_PROGRAM).install_read_handler(0x4214, 0x4214, 0, 0xbf0000, read8_delegate(FUNC(_5a22_device::rddivl_r),this));
689   space(AS_PROGRAM).install_read_handler(0x4215, 0x4215, 0, 0xbf0000, read8_delegate(FUNC(_5a22_device::rddivh_r),this));
690   space(AS_PROGRAM).install_read_handler(0x4216, 0x4216, 0, 0xbf0000, read8_delegate(FUNC(_5a22_device::rdmpyl_r),this));
691   space(AS_PROGRAM).install_read_handler(0x4217, 0x4217, 0, 0xbf0000, read8_delegate(FUNC(_5a22_device::rdmpyh_r),this));
692692}
693693
694694CPU_SET_INFO( _5a22 )

Previous 199869 Revisions Next


© 1997-2024 The MAME Team