}
changed_prefs.mbresmem_low_size = 0;
changed_prefs.mbresmem_high_size = 0;
- restore_expansion_board(NULL);
+ restore_expansion_boards(NULL);
}
void devices_syncchange(void)
else
uae_id = hackers_id;
- if (!savestate_state) {
+ if (restore_cardno == 0) {
for (int i = 0; i < MAX_EXPANSION_BOARD_SPACE; i++) {
memset(&cards_set[i], 0, sizeof(struct card_data));
}
return src;
}
-uae_u8 *save_expansion_board(int *len, uae_u8 *dstptr, int cardnum)
+uae_u8 *save_expansion_boards(int *len, uae_u8 *dstptr, int cardnum)
{
uae_u8 *dst, *dstbak;
if (cardnum >= cardno)
return dstbak;
}
-uae_u8 *restore_expansion_board(uae_u8 *src)
+uae_u8 *restore_expansion_boards(uae_u8 *src)
{
if (!src) {
restore_cardno = 0;
if (romtype != 0xffffffff) {
dev_num = restore_u32();
ec->aci.devnum = dev_num;
- if (!get_device_rom(&currprefs, romtype, dev_num, NULL)) {
- get_device_rom_new(&currprefs, romtype, dev_num, NULL);
+ struct boardromconfig* brc = get_device_rom(&currprefs, romtype, dev_num, NULL);
+ if (!brc) {
+ brc = get_device_rom_new(&currprefs, romtype, dev_num, NULL);
}
struct romconfig *rc = get_device_romconfig(&currprefs, romtype, dev_num);
if (rc) {
ec->rc = rc;
+ rc->back = brc;
ec->ert = get_device_expansion_rom(romtype);
s = restore_string();
_tcscpy(rc->romfile, s);
return src;
}
+#if 0
+// old style
+uae_u8 *save_expansion_info_old(int *len, uae_u8 *dstptr)
+{
+ uae_u8* dst, * dstbak;
+ if (dstptr)
+ dst = dstbak = dstptr;
+ else
+ dstbak = dst = xmalloc(uae_u8, 100 + MAX_EXPANSION_BOARD_SPACE * 100);
+ save_u32(1);
+ save_u32(0);
+ save_u32(cardno);
+ for (int i = 0; i < cardno; i++) {
+ struct card_data* ec = cards[i];
+ if (ec->rc) {
+ save_u32(ec->rc->back->device_type);
+ save_u32(ec->rc->back->device_num);
+ save_string(ec->rc->romfile);
+ save_string(ec->rc->romident);
+ }
+ else {
+ save_u32(0xffffffff);
+ }
+ save_u32(ec->base);
+ save_u32(ec->size);
+ save_u32(ec->flags);
+ save_string(ec->name);
+ }
+ save_u32(0);
+ *len = dst - dstbak;
+ return dstbak;
+}
+
+uae_u8 *restore_expansion_info_old(uae_u8 *src)
+{
+ if (restore_cardno)
+ return src;
+ if (restore_u32() != 1)
+ return src;
+ restore_u32();
+ int num = restore_u32();
+ for (int i = 0; i < num; i++) {
+ int romtype = restore_u32();
+ if (romtype != 0xffffffff) {
+ restore_u32();
+ restore_string();
+ restore_string();
+ }
+ restore_u32();
+ restore_u32();
+ restore_u32();
+ restore_string();
+ }
+ restore_u32();
+ return src;
+}
+#endif
+
void restore_expansion_finish(void)
{
cardno = restore_cardno;
extern uae_u8 *restore_rom (uae_u8 *);
extern uae_u8 *save_rom (int, int *, uae_u8 *);
-extern uae_u8 *save_expansion_board(int*, uae_u8*,int);
-extern uae_u8 *restore_expansion_board(uae_u8*);
+extern uae_u8 *save_expansion_boards(int*, uae_u8*, int);
+extern uae_u8 *restore_expansion_boards(uae_u8*);
+#if 0
+extern uae_u8 *save_expansion_info_old(int*, uae_u8*);
+extern uae_u8 *restore_expansion_info_old(uae_u8*);
+#endif
extern void restore_expansion_finish(void);
extern uae_u8 *restore_action_replay (uae_u8 *);
#ifdef A2065
else if (!_tcsncmp (name, _T("2065"), 4))
end = restore_a2065 (chunk);
+#endif
+#if 0
+ else if (!_tcsncmp(name, _T("EXPI"), 4))
+ end = restore_expansion_info_old(chunk);
#endif
else if (!_tcsncmp (name, _T("EXPB"), 4))
- end = restore_expansion_board(chunk);
+ end = restore_expansion_boards(chunk);
else if (!_tcsncmp (name, _T("DMWP"), 4))
end = restore_debug_memwatch (chunk);
else if (!_tcsncmp(name, _T("PIC0"), 4))
xfree (dst);
#ifdef AUTOCONFIG
+ // new
i = 0;
for (;;) {
- dst = save_expansion_board(&len, 0, i);
+ dst = save_expansion_boards(&len, 0, i);
if (!dst)
break;
save_chunk(f, dst, len, _T("EXPB"), 0);
i++;
}
+#if 0
+ // old
+ dst = save_expansion_info_old(&len, 0);
+ save_chunk(f, dst, len, _T("EXPI"), 0);
+#endif
dst = save_expansion(&len, 0);
save_chunk(f, dst, len, _T("EXPA"), 0);
#endif