Previous 199869 Revisions Next

r21586 Tuesday 5th March, 2013 at 08:01:06 UTC by Fabio Priuli
snes: shuffling some code around (part 6 and last). nw.
[src/mame/includes]snes.h
[src/mame/machine]snes.c snes7110.c snesobc1.c snesrtc.c snessdd1.c
[src/mess/drivers]snes.c
[src/mess/machine]snescart.c snescart.h

trunk/src/mess/drivers/snes.c
r21585r21586
10941094 *
10951095 *************************************/
10961096
1097static MACHINE_START( snes_mess )
1098{
1099   snes_state *state = machine.driver_data<snes_state>();
1100
1101   machine.add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(snes_machine_stop),&machine));
1102   MACHINE_START_CALL(snes);
1103   
1104   switch (state->m_has_addon_chip)
1105   {
1106      case HAS_SDD1:
1107         sdd1_init(machine);
1108         break;
1109      case HAS_SPC7110:
1110         spc7110_init(machine);
1111         break;
1112      case HAS_SPC7110_RTC:
1113         spc7110rtc_init(machine);
1114         break;
1115   }
1116}
1117
1118static MACHINE_START( snesst )
1119{
1120   machine.add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(sufami_machine_stop),&machine));
1121   MACHINE_START_CALL(snes);
1122}
1123
10971124static MACHINE_RESET( snes_mess )
10981125{
10991126   snes_state *state = machine.driver_data<snes_state>();
r21585r21586
11031130   state->m_io_read = snes_input_read;
11041131   state->m_oldjoy1_read = snes_oldjoy1_read;
11051132   state->m_oldjoy2_read = snes_oldjoy2_read;
1133
1134   // see if there's a uPD7725 DSP in the machine config
1135   state->m_upd7725 = machine.device<upd7725_device>("dsp");
1136   
1137   // if we have a DSP, halt it for the moment
1138   if (state->m_upd7725)
1139      machine.device("dsp")->execute().set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
1140   
1141   // ditto for a uPD96050 (Seta ST-010 or ST-011)
1142   state->m_upd96050 = machine.device<upd96050_device>("setadsp");
1143   if (state->m_upd96050)
1144      machine.device("setadsp")->execute().set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
1145   
1146   switch (state->m_has_addon_chip)
1147   {
1148      case HAS_DSP1:
1149      case HAS_DSP2:
1150      case HAS_DSP3:
1151      case HAS_DSP4:
1152         // cartridge uses the DSP, let 'er rip
1153         if (state->m_upd7725)
1154            machine.device("dsp")->execute().set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
1155         else
1156         {
1157            logerror("SNES: Game uses a DSP, but the machine driver is missing the uPD7725!\n");
1158            state->m_has_addon_chip = HAS_NONE; // prevent crash trying to access NULL device
1159         }
1160         break;
1161         
1162      case HAS_RTC:
1163         srtc_init(machine);
1164         break;
1165         
1166      case HAS_OBC1:
1167         obc1_init(machine);
1168         break;
1169         
1170      case HAS_ST010:
1171      case HAS_ST011:
1172         // cartridge uses the DSP, let 'er rip
1173         if (state->m_upd96050)
1174            machine.device("setadsp")->execute().set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
1175         else
1176         {
1177            logerror("SNES: Game uses a Seta DSP, but the machine driver is missing the uPD96050!\n");
1178            state->m_has_addon_chip = HAS_NONE; // prevent crash trying to access NULL device
1179         }
1180         break;
1181         
1182      default:
1183         break;
1184   }
11061185}
11071186
11081187static MACHINE_CONFIG_START( snes_base, snes_state )
trunk/src/mess/machine/snescart.c
r21585r21586
211211   free(battery_ram);
212212}
213213
214static void snes_machine_stop(running_machine &machine)
214void snes_machine_stop(running_machine &machine)
215215{
216216   snes_state *state = machine.driver_data<snes_state>();
217217
r21585r21586
220220      snes_save_sram(machine);
221221}
222222
223MACHINE_START( snes_mess )
224{
225   machine.add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(snes_machine_stop),&machine));
226   MACHINE_START_CALL(snes);
227}
228223
229
230224static void sufami_load_sram(running_machine &machine, const char *cart_tag)
231225{
232226   UINT8 ii;
r21585r21586
256250   free(battery_ram);
257251}
258252
259static void sufami_machine_stop(running_machine &machine)
253void sufami_machine_stop(running_machine &machine)
260254{
261255   snes_state *state = machine.driver_data<snes_state>();
262256   UINT8 ii;
r21585r21586
288282   free(battery_ram);
289283}
290284
291MACHINE_START( snesst )
292{
293   machine.add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(sufami_machine_stop),&machine));
294   MACHINE_START_CALL(snes);
295}
296285
297
298286/***************************************************************************
299287
300288  Cart handling
trunk/src/mess/machine/snescart.h
r21585r21586
88
99#include "imagedev/cartslot.h"
1010
11MACHINE_START( snes_mess );
12MACHINE_START( snesst );
11void snes_machine_stop(running_machine &machine);
12void sufami_machine_stop(running_machine &machine);
1313
1414MACHINE_CONFIG_EXTERN( snes_cartslot );
1515MACHINE_CONFIG_EXTERN( snesp_cartslot );
trunk/src/mame/machine/snesrtc.c
r21585r21586
210210   }
211211}
212212
213static void srtc_init( running_machine &machine )
213void srtc_init( running_machine &machine )
214214{
215215   rtc_state.mode = RTCM_Read;
216216   rtc_state.index = -1;
trunk/src/mame/machine/snessdd1.c
r21585r21586
532532
533533static snes_sdd1_t snes_sdd1;
534534
535static void sdd1_init(running_machine& machine)
535void sdd1_init(running_machine& machine)
536536{
537537   snes_sdd1.sdd1_enable = 0x00;
538538   snes_sdd1.xfer_enable = 0x00;
r21585r21586
675675
676676   return ROM[snes_sdd1.mmc[(addr >> 20) & 3] + (addr & 0x0fffff)];
677677}
678
679static void sdd1_reset(running_machine &machine)
680{
681}
trunk/src/mame/machine/snesobc1.c
r21585r21586
104104   }
105105}
106106
107static void obc1_init( running_machine &machine )
107void obc1_init( running_machine &machine )
108108{
109109   obc1_state.offset  = (snes_ram[0x1ff5] & 0x01) ? 0x1800 : 0x1c00;
110110   obc1_state.address = (snes_ram[0x1ff6] & 0x7f);
trunk/src/mame/machine/snes.c
r21585r21586
11831183   // set up some known register power-up defaults
11841184   SNES_CPU_REG_STATE(WRIO) = 0xff;
11851185
1186   // see if there's a uPD7725 DSP in the machine config
1187   state->m_upd7725 = machine.device<upd7725_device>("dsp");
1188
1189   // if we have a DSP, halt it for the moment
1190   if (state->m_upd7725)
1191   {
1192      machine.device("dsp")->execute().set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
1193   }
1194
1195   // ditto for a uPD96050 (Seta ST-010 or ST-011)
1196   state->m_upd96050 = machine.device<upd96050_device>("setadsp");
1197   if (state->m_upd96050)
1198   {
1199      machine.device("setadsp")->execute().set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
1200   }
1201
1202   switch (state->m_has_addon_chip)
1203   {
1204      case HAS_DSP1:
1205      case HAS_DSP2:
1206      case HAS_DSP3:
1207      case HAS_DSP4:
1208         // cartridge uses the DSP, let 'er rip
1209         if (state->m_upd7725)
1210         {
1211            machine.device("dsp")->execute().set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
1212         }
1213         else
1214         {
1215            logerror("SNES: Game uses a DSP, but the machine driver is missing the uPD7725!\n");
1216            state->m_has_addon_chip = HAS_NONE; // prevent crash trying to access NULL device
1217         }
1218         break;
1219
1220      case HAS_RTC:
1221         srtc_init(machine);
1222         break;
1223
1224      case HAS_SDD1:
1225         sdd1_reset(machine);
1226         break;
1227
1228      case HAS_OBC1:
1229         obc1_init(machine);
1230         break;
1231
1232      case HAS_ST010:
1233      case HAS_ST011:
1234         // cartridge uses the DSP, let 'er rip
1235         if (state->m_upd96050)
1236         {
1237            machine.device("setadsp")->execute().set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
1238         }
1239         else
1240         {
1241            logerror("SNES: Game uses a Seta DSP, but the machine driver is missing the uPD96050!\n");
1242            state->m_has_addon_chip = HAS_NONE; // prevent crash trying to access NULL device
1243         }
1244         break;
1245
1246      default:
1247         break;
1248   }
1249
12501186   // init frame counter so first line is 0
12511187   if (ATTOSECONDS_TO_HZ(machine.primary_screen->frame_period().attoseconds) >= 59)
12521188      state->m_ppu.m_beam.current_vert = SNES_VTOTAL_NTSC;
r21585r21586
12861222//  SNES_CPU_REG_STATE(WRDIVL) = 0xff;
12871223//  SNES_CPU_REG_STATE(WRDIVH) = 0xff;
12881224
1289   switch (state->m_has_addon_chip)
1290   {
1291      case HAS_SDD1:
1292         sdd1_init(machine);
1293         break;
1294      case HAS_SPC7110:
1295         spc7110_init(machine);
1296         break;
1297      case HAS_SPC7110_RTC:
1298         spc7110rtc_init(machine);
1299         break;
1300   }
1301
13021225   if (state->m_cart[0].mode == SNES_MODE_BSX)
13031226      bsx_init(machine);
13041227
trunk/src/mame/machine/snes7110.c
r21585r21586
863863
864864static snes_spc7110_t snes_spc7110;
865865
866static void spc7110_init(running_machine& machine)
866void spc7110_init(running_machine& machine)
867867{
868868   snes_state *state = machine.driver_data<snes_state>();
869869
r21585r21586
925925   snes_spc7110.decomp = auto_alloc(machine, SPC7110Decomp(machine, snes_spc7110.size));
926926}
927927
928static void spc7110rtc_init(running_machine& machine)
928void spc7110rtc_init(running_machine& machine)
929929{
930930   spc7110_init(machine);
931931
trunk/src/mame/includes/snes.h
r21585r21586
769769// add-on chips IO
770770void srtc_write(running_machine &machine, UINT16 addr, UINT8 data);
771771UINT8 srtc_read(address_space &space, UINT16 addr);
772void srtc_init(running_machine &machine);
772773extern DECLARE_READ8_HANDLER(obc1_read);
773774extern DECLARE_WRITE8_HANDLER(obc1_write);
775void obc1_init(running_machine &machine);
774776UINT8 CX4_read(UINT32 addr);
775777void CX4_write(running_machine &machine, UINT32 addr, UINT8 data);
776778UINT8 sdd1_mmio_read(address_space &space, UINT32 addr);
777779void sdd1_mmio_write(address_space &space, UINT32 addr, UINT8 data);
780void sdd1_init(running_machine& machine);
778781UINT8 sdd1_read(running_machine& machine, UINT32 addr);
779782UINT8 spc7110_mmio_read(address_space &space, UINT32 addr);
780783void spc7110_mmio_write(running_machine &machine, UINT32 addr, UINT8 data);
781784UINT8 spc7110_bank7_read(address_space &space, UINT32 offset);
785void spc7110_init(running_machine& machine);
786void spc7110rtc_init(running_machine& machine);
782787
783
784788extern struct snes_cart_info snes_cart;
785789
786790/*----------- defined in video/snes.c -----------*/

Previous 199869 Revisions Next


© 1997-2024 The MAME Team