|
|
1.1 root 1: /*
2: * UAE - The Un*x Amiga Emulator
3: *
4: * Save/restore emulator state
5: *
6: * (c) 1999-2001 Toni Wilen
7: */
8:
1.1.1.3 root 9: #ifndef UAE_SAVESTATE_H
10: #define UAE_SAVESTATE_H
11:
12: #include "uae/types.h"
1.1 root 13:
14: /* functions to save byte,word or long word
1.1.1.3 root 15: * independent of CPU's endianness */
1.1 root 16:
1.1.1.2 root 17: #ifdef WINUAE_FOR_HATARI
18: extern void save_u64(uae_u64 data);
1.1 root 19: extern void save_u32(uae_u32 data);
20: extern void save_u16(uae_u16 data);
1.1.1.2 root 21: extern void save_u8(uae_u8 data);
22: extern uae_u64 restore_u64(void);
1.1 root 23: extern uae_u32 restore_u32(void);
24: extern uae_u16 restore_u16(void);
1.1.1.2 root 25: extern uae_u8 restore_u8(void);
1.1 root 26:
1.1.1.2 root 27: #else
28:
29: extern void save_store_pos_func (uae_u8 **);
30: extern void save_store_size_func (uae_u8 **);
31: extern void restore_store_pos_func (uae_u8 **);
32: extern void restore_store_size_func (uae_u8 **);
33:
34: #define save_store_pos() save_store_pos_func (&dst)
35: #define save_store_size() save_store_size_func (&dst)
36: #define restore_store_pos() restore_store_pos_func (&src)
37: #define restore_store_size() restore_store_size_func (&src)
38:
39: extern void save_u64_func (uae_u8 **, uae_u64);
1.1 root 40: extern void save_u32_func (uae_u8 **, uae_u32);
41: extern void save_u16_func (uae_u8 **, uae_u16);
42: extern void save_u8_func (uae_u8 **, uae_u8);
43:
44: extern uae_u64 restore_u64_func (uae_u8 **);
45: extern uae_u32 restore_u32_func (uae_u8 **);
46: extern uae_u16 restore_u16_func (uae_u8 **);
47: extern uae_u8 restore_u8_func (uae_u8 **);
1.1.1.2 root 48: #endif
49:
1.1 root 50: extern void save_string_func (uae_u8 **, const TCHAR*);
51: extern TCHAR *restore_string_func (uae_u8 **);
52:
1.1.1.2 root 53: #define SAVESTATE_PATH 0
54: #define SAVESTATE_PATH_FLOPPY 1
55: #define SAVESTATE_PATH_VDIR 2
56: #define SAVESTATE_PATH_HDF 3
57: #define SAVESTATE_PATH_HD 4
58: #define SAVESTATE_PATH_CD 5
59:
60: extern void save_path_func (uae_u8 **, const TCHAR*, int type);
61: extern TCHAR *restore_path_func (uae_u8 **, int type);
62:
63: #ifndef WINUAE_FOR_HATARI
1.1 root 64: #define save_u64(x) save_u64_func (&dst, (x))
65: #define save_u32(x) save_u32_func (&dst, (x))
66: #define save_u16(x) save_u16_func (&dst, (x))
67: #define save_u8(x) save_u8_func (&dst, (x))
68:
69: #define restore_u64() restore_u64_func (&src)
70: #define restore_u32() restore_u32_func (&src)
71: #define restore_u16() restore_u16_func (&src)
72: #define restore_u8() restore_u8_func (&src)
1.1.1.2 root 73: #endif
1.1 root 74:
75: #define save_string(x) save_string_func (&dst, (x))
76: #define restore_string() restore_string_func (&src)
1.1.1.2 root 77:
78: #define save_path(x, p) save_path_func (&dst, (x), p)
79: #define restore_path(p) restore_path_func (&src, p)
80:
81:
1.1 root 82: /* save, restore and initialize routines for Amiga's subsystems */
83:
84: extern uae_u8 *restore_cpu (uae_u8 *);
85: extern void restore_cpu_finish (void);
86: extern uae_u8 *save_cpu (int *, uae_u8 *);
87: extern uae_u8 *restore_cpu_extra (uae_u8 *);
88: extern uae_u8 *save_cpu_extra (int *, uae_u8 *);
1.1.1.2 root 89: extern uae_u8 *save_cpu_trace (int *, uae_u8 *);
90: extern uae_u8 *restore_cpu_trace (uae_u8 *);
1.1 root 91:
92: extern uae_u8 *restore_mmu (uae_u8 *);
93: extern uae_u8 *save_mmu (int *, uae_u8 *);
94:
95: extern uae_u8 *restore_fpu (uae_u8 *);
96: extern uae_u8 *save_fpu (int *, uae_u8 *);
97:
98: extern uae_u8 *restore_disk (int, uae_u8 *);
1.1.1.2 root 99: extern uae_u8 *save_disk (int, int *, uae_u8 *, bool);
1.1 root 100: extern uae_u8 *restore_floppy (uae_u8 *src);
101: extern uae_u8 *save_floppy (int *len, uae_u8 *);
1.1.1.2 root 102: extern uae_u8 *save_disk2 (int num, int *len, uae_u8 *dstptr);
103: extern uae_u8 *restore_disk2 (int num,uae_u8 *src);
1.1 root 104: extern void DISK_save_custom (uae_u32 *pdskpt, uae_u16 *pdsklen, uae_u16 *pdsksync, uae_u16 *pdskbytr);
105: extern void DISK_restore_custom (uae_u32 pdskpt, uae_u16 pdsklength, uae_u16 pdskbytr);
106: extern void restore_disk_finish (void);
107:
108: extern uae_u8 *restore_custom (uae_u8 *);
109: extern uae_u8 *save_custom (int *, uae_u8 *, int);
110: extern uae_u8 *restore_custom_extra (uae_u8 *);
111: extern uae_u8 *save_custom_extra (int *, uae_u8 *);
112:
113: extern uae_u8 *restore_custom_sprite (int num, uae_u8 *src);
114: extern uae_u8 *save_custom_sprite (int num, int *len, uae_u8 *);
115:
116: extern uae_u8 *restore_custom_agacolors (uae_u8 *src);
117: extern uae_u8 *save_custom_agacolors (int *len, uae_u8 *);
118:
1.1.1.2 root 119: extern uae_u8 *restore_custom_event_delay (uae_u8 *src);
120: extern uae_u8 *save_custom_event_delay (int *len, uae_u8 *dstptr);
121:
1.1 root 122: extern uae_u8 *restore_blitter (uae_u8 *src);
123: extern uae_u8 *save_blitter (int *len, uae_u8 *);
1.1.1.2 root 124: extern uae_u8 *restore_blitter_new (uae_u8 *src);
125: extern uae_u8 *save_blitter_new (int *len, uae_u8 *);
1.1 root 126: extern void restore_blitter_finish (void);
127:
128: extern uae_u8 *restore_audio (int, uae_u8 *);
129: extern uae_u8 *save_audio (int, int *, uae_u8 *);
1.1.1.2 root 130: extern void restore_audio_finish (void);
1.1 root 131:
132: extern uae_u8 *restore_cia (int, uae_u8 *);
133: extern uae_u8 *save_cia (int, int *, uae_u8 *);
1.1.1.2 root 134: extern void restore_cia_finish (void);
135: extern void restore_cia_start (void);
1.1 root 136:
137: extern uae_u8 *restore_expansion (uae_u8 *);
138: extern uae_u8 *save_expansion (int *, uae_u8 *);
139:
140: extern uae_u8 *restore_p96 (uae_u8 *);
141: extern uae_u8 *save_p96 (int *, uae_u8 *);
142: extern void restore_p96_finish (void);
143:
144: extern uae_u8 *restore_keyboard (uae_u8 *);
1.1.1.2 root 145: extern uae_u8 *save_keyboard (int *,uae_u8*);
1.1 root 146:
147: extern uae_u8 *restore_akiko (uae_u8 *src);
1.1.1.2 root 148: extern uae_u8 *save_akiko (int *len, uae_u8*);
1.1 root 149: extern void restore_akiko_finish (void);
150:
151: extern uae_u8 *restore_cdtv (uae_u8 *src);
1.1.1.2 root 152: extern uae_u8 *save_cdtv (int *len, uae_u8*);
1.1 root 153: extern void restore_cdtv_finish (void);
154:
1.1.1.2 root 155: extern uae_u8 *restore_cdtv_dmac (uae_u8 *src);
156: extern uae_u8 *save_cdtv_dmac (int *len, uae_u8*);
157: extern uae_u8 *restore_scsi_dmac (int wdtype, uae_u8 *src);
158: extern uae_u8 *save_scsi_dmac (int wdtype, int *len, uae_u8*);
159:
160: extern uae_u8 *save_scsi_device (int wdtype, int num, int *len, uae_u8 *dstptr);
161: extern uae_u8 *restore_scsi_device (int wdtype, uae_u8 *src);
162:
163: extern uae_u8 *save_scsidev (int num, int *len, uae_u8 *dstptr);
164: extern uae_u8 *restore_scsidev (uae_u8 *src);
1.1 root 165:
166: extern uae_u8 *restore_filesys (uae_u8 *src);
167: extern uae_u8 *save_filesys (int num, int *len);
168: extern uae_u8 *restore_filesys_common (uae_u8 *src);
169: extern uae_u8 *save_filesys_common (int *len);
170: extern int save_filesys_cando(void);
171:
172: extern uae_u8 *restore_gayle(uae_u8 *src);
1.1.1.2 root 173: extern uae_u8 *save_gayle (int *len, uae_u8*);
174: extern uae_u8 *restore_gayle_ide (uae_u8 *src);
175: extern uae_u8 *save_gayle_ide (int num, int *len, uae_u8*);
1.1 root 176:
177: extern uae_u8 *save_cd (int num, int *len);
178: extern uae_u8 *restore_cd (int, uae_u8 *src);
1.1.1.2 root 179: extern void restore_cd_finish (void);
1.1 root 180:
1.1.1.2 root 181: extern uae_u8 *save_configuration (int *len, bool fullconfig);
1.1 root 182: extern uae_u8 *restore_configuration (uae_u8 *src);
183: extern uae_u8 *save_log (int, int *len);
1.1.1.2 root 184: //extern uae_u8 *restore_log (uae_u8 *src);
1.1 root 185:
186: extern uae_u8 *restore_input (uae_u8 *src);
187: extern uae_u8 *save_input (int *len, uae_u8 *dstptr);
188:
1.1.1.2 root 189: extern uae_u8 *restore_inputstate (uae_u8 *src);
190: extern uae_u8 *save_inputstate (int *len, uae_u8 *dstptr);
191: extern void clear_inputstate (void);
192:
193: extern uae_u8 *save_a2065 (int *len, uae_u8 *dstptr);
194: extern uae_u8 *restore_a2065 (uae_u8 *src);
195: extern void restore_a2065_finish (void);
196:
197: extern uae_u8 *restore_debug_memwatch (uae_u8 *src);
198: extern uae_u8 *save_debug_memwatch (int *len, uae_u8 *dstptr);
199: extern void restore_debug_memwatch_finish (void);
200:
1.1.1.4 ! root 201: extern uae_u8 *save_screenshot(int monid, int *len);
! 202:
1.1.1.2 root 203: extern uae_u8 *save_cycles (int *len, uae_u8 *dstptr);
204: extern uae_u8 *restore_cycles (uae_u8 *src);
205:
1.1 root 206: extern void restore_cram (int, size_t);
207: extern void restore_bram (int, size_t);
1.1.1.2 root 208: extern void restore_fram (int, size_t, int);
1.1 root 209: extern void restore_zram (int, size_t, int);
210: extern void restore_bootrom (int, size_t);
211: extern void restore_pram (int, size_t);
212: extern void restore_a3000lram (int, size_t);
213: extern void restore_a3000hram (int, size_t);
214:
215: extern void restore_ram (size_t, uae_u8*);
216:
217: extern uae_u8 *save_cram (int *);
218: extern uae_u8 *save_bram (int *);
1.1.1.2 root 219: extern uae_u8 *save_fram (int *, int);
1.1 root 220: extern uae_u8 *save_zram (int *, int);
221: extern uae_u8 *save_bootrom (int *);
222: extern uae_u8 *save_pram (int *);
223: extern uae_u8 *save_a3000lram (int *);
224: extern uae_u8 *save_a3000hram (int *);
225:
226: extern uae_u8 *restore_rom (uae_u8 *);
227: extern uae_u8 *save_rom (int, int *, uae_u8 *);
228:
1.1.1.3 root 229: extern uae_u8 *save_expansion_info(int*, uae_u8*);
230: extern uae_u8 *restore_expansion_info(uae_u8*);
231:
1.1 root 232: extern uae_u8 *restore_action_replay (uae_u8 *);
233: extern uae_u8 *save_action_replay (int *, uae_u8 *);
234: extern uae_u8 *restore_hrtmon (uae_u8 *);
235: extern uae_u8 *save_hrtmon (int *, uae_u8 *);
236:
1.1.1.2 root 237: extern void savestate_initsave (const TCHAR *filename, int docompress, int nodialogs, bool save);
1.1 root 238: extern int save_state (const TCHAR *filename, const TCHAR *description);
239: extern void restore_state (const TCHAR *filename);
240: extern void savestate_restore_finish (void);
1.1.1.2 root 241: extern void savestate_memorysave (void);
242:
1.1 root 243:
244: extern void custom_save_state (void);
245: extern void custom_prepare_savestate (void);
246:
1.1.1.2 root 247: extern bool savestate_check (void);
248:
1.1 root 249: #define STATE_SAVE 1
250: #define STATE_RESTORE 2
251: #define STATE_DOSAVE 4
252: #define STATE_DORESTORE 8
253: #define STATE_REWIND 16
254: #define STATE_DOREWIND 32
255:
256: extern int savestate_state;
257: extern TCHAR savestate_fname[MAX_DPATH];
258: extern struct zfile *savestate_file;
259:
1.1.1.2 root 260: STATIC_INLINE bool isrestore (void)
261: {
262: return savestate_state == STATE_RESTORE || savestate_state == STATE_REWIND;
263: }
264:
1.1 root 265: extern void savestate_quick (int slot, int save);
266:
267: extern void savestate_capture (int);
268: extern void savestate_free (void);
269: extern void savestate_init (void);
270: extern void savestate_rewind (void);
271: extern int savestate_dorewind (int);
272: extern void savestate_listrewind (void);
1.1.1.2 root 273: extern void statefile_save_recording (const TCHAR*);
274: extern void savestate_capture_request (void);
1.1.1.3 root 275:
276: #endif /* UAE_SAVESTATE_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.