trunk/src/mess/machine/gb.c
| r21074 | r21075 | |
| 149 | 149 | { |
| 150 | 150 | address_space &space = m_maincpu->space(AS_PROGRAM); |
| 151 | 151 | |
| 152 | | gb_sound_w(machine().device("custom"), space, 0x16, 0x00); /* Initialize sound hardware */ |
| 152 | gb_sound_w(m_custom, space, 0x16, 0x00); /* Initialize sound hardware */ |
| 153 | 153 | |
| 154 | 154 | m_divcount = 0; |
| 155 | 155 | m_triggering_irq = 0; |
| r21074 | r21075 | |
| 244 | 244 | m_bios_disable = TRUE; |
| 245 | 245 | |
| 246 | 246 | /* Initialize the Sound registers */ |
| 247 | | gb_sound_w(machine().device("custom"), generic_space(), 0x16,0x80); |
| 248 | | gb_sound_w(machine().device("custom"), generic_space(), 0x15,0xF3); |
| 249 | | gb_sound_w(machine().device("custom"), generic_space(), 0x14,0x77); |
| 247 | gb_sound_w(m_custom, generic_space(), 0x16,0x80); |
| 248 | gb_sound_w(m_custom, generic_space(), 0x15,0xF3); |
| 249 | gb_sound_w(m_custom, generic_space(), 0x14,0x77); |
| 250 | 250 | |
| 251 | 251 | m_divcount = 0xABC8; |
| 252 | 252 | } |
| r21074 | r21075 | |
| 339 | 339 | break; |
| 340 | 340 | case 0x0F: /* IF - Interrupt flag */ |
| 341 | 341 | data &= 0x1F; |
| 342 | | machine().device<lr35902_cpu_device>(":maincpu")->set_if( data ); |
| 342 | m_maincpu->set_if( data ); |
| 343 | 343 | break; |
| 344 | 344 | } |
| 345 | 345 | |
| r21074 | r21075 | |
| 893 | 893 | /* Interrupt Enable register */ |
| 894 | 894 | READ8_MEMBER(gb_state::gb_ie_r) |
| 895 | 895 | { |
| 896 | | return machine().device<lr35902_cpu_device>(":maincpu")->get_ie(); |
| 896 | return m_maincpu->get_ie(); |
| 897 | 897 | } |
| 898 | 898 | |
| 899 | 899 | WRITE8_MEMBER(gb_state::gb_ie_w) |
| 900 | 900 | { |
| 901 | | machine().device<lr35902_cpu_device>(":maincpu")->set_ie( data & 0x1F ); |
| 901 | m_maincpu->set_ie( data & 0x1F ); |
| 902 | 902 | } |
| 903 | 903 | |
| 904 | 904 | /* IO read */ |
| r21074 | r21075 | |
| 918 | 918 | return m_gb_io[offset]; |
| 919 | 919 | case 0x0F: |
| 920 | 920 | /* Make sure the internal states are up to date */ |
| 921 | | return 0xE0 | machine().device<lr35902_cpu_device>(":maincpu")->get_if(); |
| 921 | return 0xE0 | m_maincpu->get_if(); |
| 922 | 922 | default: |
| 923 | 923 | /* It seems unsupported registers return 0xFF */ |
| 924 | 924 | return 0xFF; |
| r21074 | r21075 | |
| 1003 | 1003 | switch( offset ) |
| 1004 | 1004 | { |
| 1005 | 1005 | case 0x0D: /* KEY1 - Prepare speed switch */ |
| 1006 | | machine().device<lr35902_cpu_device>(":maincpu")->set_speed(data); |
| 1006 | m_maincpu->set_speed(data); |
| 1007 | 1007 | return; |
| 1008 | 1008 | case 0x10: /* BFF - Bios disable */ |
| 1009 | 1009 | m_bios_disable = TRUE; |
| r21074 | r21075 | |
| 1027 | 1027 | switch( offset ) |
| 1028 | 1028 | { |
| 1029 | 1029 | case 0x0D: /* KEY1 */ |
| 1030 | | return machine().device<lr35902_cpu_device>(":maincpu")->get_speed(); |
| 1030 | return m_maincpu->get_speed(); |
| 1031 | 1031 | case 0x16: /* RP - Infrared port */ |
| 1032 | 1032 | break; |
| 1033 | 1033 | case 0x30: /* SVBK - RAM bank select */ |
| r21074 | r21075 | |
| 1132 | 1132 | |
| 1133 | 1133 | WRITE8_MEMBER(megaduck_state::megaduck_sound_w1) |
| 1134 | 1134 | { |
| 1135 | | gb_sound_w(machine().device("custom"), space, megaduck_sound_offsets[offset], data ); |
| 1135 | gb_sound_w(m_custom, space, megaduck_sound_offsets[offset], data ); |
| 1136 | 1136 | } |
| 1137 | 1137 | |
| 1138 | 1138 | READ8_MEMBER(megaduck_state::megaduck_sound_r1) |
| 1139 | 1139 | { |
| 1140 | | return gb_sound_r( machine().device("custom"), space, megaduck_sound_offsets[offset] ); |
| 1140 | return gb_sound_r( m_custom, space, megaduck_sound_offsets[offset] ); |
| 1141 | 1141 | } |
| 1142 | 1142 | |
| 1143 | 1143 | WRITE8_MEMBER(megaduck_state::megaduck_sound_w2) |
| 1144 | 1144 | { |
| 1145 | 1145 | switch(offset) |
| 1146 | 1146 | { |
| 1147 | | case 0x00: gb_sound_w(machine().device("custom"), space, 0x10, data ); break; |
| 1148 | | case 0x01: gb_sound_w(machine().device("custom"), space, 0x12, data ); break; |
| 1149 | | case 0x02: gb_sound_w(machine().device("custom"), space, 0x11, data ); break; |
| 1150 | | case 0x03: gb_sound_w(machine().device("custom"), space, 0x13, data ); break; |
| 1151 | | case 0x04: gb_sound_w(machine().device("custom"), space, 0x14, data ); break; |
| 1152 | | case 0x05: gb_sound_w(machine().device("custom"), space, 0x16, data ); break; |
| 1153 | | case 0x06: gb_sound_w(machine().device("custom"), space, 0x15, data ); break; |
| 1147 | case 0x00: gb_sound_w(m_custom, space, 0x10, data ); break; |
| 1148 | case 0x01: gb_sound_w(m_custom, space, 0x12, data ); break; |
| 1149 | case 0x02: gb_sound_w(m_custom, space, 0x11, data ); break; |
| 1150 | case 0x03: gb_sound_w(m_custom, space, 0x13, data ); break; |
| 1151 | case 0x04: gb_sound_w(m_custom, space, 0x14, data ); break; |
| 1152 | case 0x05: gb_sound_w(m_custom, space, 0x16, data ); break; |
| 1153 | case 0x06: gb_sound_w(m_custom, space, 0x15, data ); break; |
| 1154 | 1154 | case 0x07: |
| 1155 | 1155 | case 0x08: |
| 1156 | 1156 | case 0x09: |
| r21074 | r21075 | |
| 1166 | 1166 | |
| 1167 | 1167 | READ8_MEMBER(megaduck_state::megaduck_sound_r2) |
| 1168 | 1168 | { |
| 1169 | | return gb_sound_r(machine().device("custom"), space, 0x10 + megaduck_sound_offsets[offset]); |
| 1169 | return gb_sound_r(m_custom, space, 0x10 + megaduck_sound_offsets[offset]); |
| 1170 | 1170 | } |
trunk/src/mess/includes/gb.h
| r21074 | r21075 | |
| 113 | 113 | : driver_device(mconfig, type, tag) |
| 114 | 114 | , m_cartslot(*this, "gbslot") |
| 115 | 115 | , m_maincpu(*this, "maincpu") |
| 116 | , m_custom(*this, "custom") |
| 116 | 117 | , m_region_maincpu(*this, "maincpu") |
| 117 | 118 | , m_rambank(*this, "cgb_ram") |
| 118 | 119 | , m_inputs(*this, "INPUTS") |
| r21074 | r21075 | |
| 208 | 209 | |
| 209 | 210 | protected: |
| 210 | 211 | required_device<lr35902_cpu_device> m_maincpu; |
| 212 | required_device<device_t> m_custom; |
| 211 | 213 | required_memory_region m_region_maincpu; |
| 212 | 214 | optional_memory_bank m_rambank; // cgb |
| 213 | 215 | required_ioport m_inputs; |
| r21074 | r21075 | |
| 235 | 237 | { |
| 236 | 238 | public: |
| 237 | 239 | megaduck_state(const machine_config &mconfig, device_type type, const char *tag) |
| 238 | | : gb_state(mconfig, type, tag) |
| 239 | | , m_cartslot(*this, "duckslot") |
| 240 | | , m_maincpu(*this, "maincpu") |
| 241 | | , m_inputs(*this, "INPUTS") |
| 240 | : gb_state(mconfig, type, tag) |
| 241 | , m_cartslot(*this, "duckslot") |
| 242 | 242 | { } |
| 243 | 243 | |
| 244 | 244 | DECLARE_READ8_MEMBER(megaduck_video_r); |
| r21074 | r21075 | |
| 255 | 255 | DECLARE_WRITE8_MEMBER(bank1_w); |
| 256 | 256 | DECLARE_WRITE8_MEMBER(bank2_w); |
| 257 | 257 | optional_device<megaduck_cart_slot_device> m_cartslot; |
| 258 | | |
| 259 | | protected: |
| 260 | | required_device<lr35902_cpu_device> m_maincpu; |
| 261 | | required_ioport m_inputs; |
| 262 | 258 | }; |
| 263 | 259 | |
| 264 | 260 | |