Previous 199869 Revisions Next

r23487 Thursday 6th June, 2013 at 11:09:20 UTC by Fabio Priuli
(MESS) snes: fixed internal RAM saving to battery for SPC7110 games, so that
the chip has to be initialized only the first time. nw.
[src/mess/machine]sns_spc7110.c sns_spc7110.h

trunk/src/mess/machine/sns_spc7110.c
r23486r23487
4848{
4949   m_decomp = auto_alloc(machine(), SPC7110_Decomp(machine()));
5050
51   memset(m_ram, 0, sizeof(m_ram));
51   // The SPC7110 works in conjunction with 0x2000 of RAM, which is battery backed up (and hence emulated by our m_nvram)
52
5253   m_r4801 = 0x00;
5354   m_r4802 = 0x00;
5455   m_r4803 = 0x00;
r23486r23487
105106   m_r4841 = 0x00;
106107   m_r4842 = 0x00;
107108
108   save_item(NAME(m_ram));
109109   save_item(NAME(m_r4801));
110110   save_item(NAME(m_r4802));
111111   save_item(NAME(m_r4803));
r23486r23487
319319#undef map
320320   }
321321   
322   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_decomp_mode);
323   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_decomp_offset);
324   state_save_register_item_pointer(machine, "SNES_SPC7110", 0, 0, m_decomp_buffer, SPC7110_DECOMP_BUFFER_SIZE);
325   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_decomp_buffer_rdoffset);
326   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_decomp_buffer_wroffset);
327   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_decomp_buffer_length);
322   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_decomp_mode);
323   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_decomp_offset);
324   state_save_register_item_pointer(machine, "SNES_SPC7110", NULL, 0, m_decomp_buffer, SPC7110_DECOMP_BUFFER_SIZE);
325   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_decomp_buffer_rdoffset);
326   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_decomp_buffer_wroffset);
327   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_decomp_buffer_length);
328328
329329   for (int i = 0; i < 32; i++)
330330   {
331      state_save_register_item(machine, "SNES_SPC7110", 0, i, m_context[i].index);
332      state_save_register_item(machine, "SNES_SPC7110", 0, i, m_context[i].invert);
331      state_save_register_item(machine, "SNES_SPC7110", NULL, i, m_context[i].index);
332      state_save_register_item(machine, "SNES_SPC7110", NULL, i, m_context[i].invert);
333333   }
334334   
335   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m0_val);
336   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m0_in);
337   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m0_span);
338   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m0_out);
339   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m0_inverts);
340   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m0_lps);
341   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m0_in_count);
335   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m0_val);
336   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m0_in);
337   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m0_span);
338   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m0_out);
339   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m0_inverts);
340   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m0_lps);
341   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m0_in_count);
342342
343   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m1_pixelorder);
344   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m1_realorder);
345   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m1_val);
346   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m1_in);
347   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m1_span);
348   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m1_out);
349   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m1_inverts);
350   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m1_lps);
351   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m1_in_count);
343   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m1_pixelorder);
344   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m1_realorder);
345   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m1_val);
346   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m1_in);
347   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m1_span);
348   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m1_out);
349   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m1_inverts);
350   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m1_lps);
351   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m1_in_count);
352352   
353   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m2_pixelorder);
354   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m2_realorder);
355   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m2_bitplanebuffer);
356   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m2_buffer_index);
357   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m2_val);
358   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m2_in);
359   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m2_span);
360   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m2_out0);
361   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m2_out1);
362   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m2_inverts);
363   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m2_lps);
364   state_save_register_item(machine, "SNES_SPC7110", 0, 0, m_m2_in_count);
353   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m2_pixelorder);
354   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m2_realorder);
355   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m2_bitplanebuffer);
356   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m2_buffer_index);
357   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m2_val);
358   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m2_in);
359   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m2_span);
360   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m2_out0);
361   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m2_out1);
362   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m2_inverts);
363   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m2_lps);
364   state_save_register_item(machine, "SNES_SPC7110", NULL, 0, m_m2_in_count);
365365}
366366
367367void SPC7110_Decomp::reset()
r23486r23487
16721672
16731673READ8_MEMBER( sns_rom_spc7110_device::read_ram )
16741674{
1675   return m_ram[offset & 0x1fff];
1675   return m_nvram[offset & 0x1fff];
16761676}
16771677
16781678WRITE8_MEMBER( sns_rom_spc7110_device::write_ram )
16791679{
1680   m_ram[offset & 0x1fff] = data;
1680   m_nvram[offset & 0x1fff] = data;
16811681}
trunk/src/mess/machine/sns_spc7110.h
r23486r23487
194194
195195   //this is now allocated in the main snes cart class, to allow saving to nvram
196196   //UINT8 m_rtc_ram[16];  // 0-12 secs, min, hrs, etc.; 13-14-15 control registers
197
198   UINT8 m_ram[0x2000];
199197};
200198
201199// ======================> sns_rom_spc7110_device

Previous 199869 Revisions Next


© 1997-2024 The MAME Team