1  /*
2   * UAE - The Un*x Amiga Emulator
3   *
4   * Save/restore emulator state
5   *
6   * (c) 1999-2001 Toni Wilen
7   */
8 
9 
10 /* functions to save byte,word or long word
11  * independent of CPU's endianess */
12 
13 extern void save_u32(uae_u32 data);
14 extern void save_u16(uae_u16 data);
15 extern uae_u32 restore_u32(void);
16 extern uae_u16 restore_u16(void);
17 
18 /*extern void save_u64_func (uae_u8 **, uae_u64);
19 extern void save_u32_func (uae_u8 **, uae_u32);
20 extern void save_u16_func (uae_u8 **, uae_u16);
21 extern void save_u8_func (uae_u8 **, uae_u8);
22 
23 extern uae_u64 restore_u64_func (uae_u8 **);
24 extern uae_u32 restore_u32_func (uae_u8 **);
25 extern uae_u16 restore_u16_func (uae_u8 **);
26 extern uae_u8 restore_u8_func (uae_u8 **);
27 */
28 extern void save_string_func (uae_u8 **, const TCHAR*);
29 extern TCHAR *restore_string_func (uae_u8 **);
30 
31 /*
32 #define save_u64(x) save_u64_func (&dst, (x))
33 #define save_u32(x) save_u32_func (&dst, (x))
34 #define save_u16(x) save_u16_func (&dst, (x))
35 #define save_u8(x) save_u8_func (&dst, (x))
36 
37 #define restore_u64() restore_u64_func (&src)
38 #define restore_u32() restore_u32_func (&src)
39 #define restore_u16() restore_u16_func (&src)
40 #define restore_u8() restore_u8_func (&src)
41 
42 #define save_string(x) save_string_func (&dst, (x))
43 #define restore_string() restore_string_func (&src)
44 */
45 /* save, restore and initialize routines for Amiga's subsystems */
46 
47 extern uae_u8 *restore_cpu (uae_u8 *);
48 extern void restore_cpu_finish (void);
49 extern uae_u8 *save_cpu (int *, uae_u8 *);
50 extern uae_u8 *restore_cpu_extra (uae_u8 *);
51 extern uae_u8 *save_cpu_extra (int *, uae_u8 *);
52 
53 extern uae_u8 *restore_mmu (uae_u8 *);
54 extern uae_u8 *save_mmu (int *, uae_u8 *);
55 
56 extern void restore_fpu (void);
57 extern void save_fpu (void);
58 
59 extern uae_u8 *restore_disk (int, uae_u8 *);
60 extern uae_u8 *save_disk (int, int *, uae_u8 *);
61 extern uae_u8 *restore_floppy (uae_u8 *src);
62 extern uae_u8 *save_floppy (int *len, uae_u8 *);
63 extern void DISK_save_custom  (uae_u32 *pdskpt, uae_u16 *pdsklen, uae_u16 *pdsksync, uae_u16 *pdskbytr);
64 extern void DISK_restore_custom  (uae_u32 pdskpt, uae_u16 pdsklength, uae_u16 pdskbytr);
65 extern void restore_disk_finish (void);
66 
67 extern uae_u8 *restore_custom (uae_u8 *);
68 extern uae_u8 *save_custom (int *, uae_u8 *, int);
69 extern uae_u8 *restore_custom_extra (uae_u8 *);
70 extern uae_u8 *save_custom_extra (int *, uae_u8 *);
71 
72 extern uae_u8 *restore_custom_sprite (int num, uae_u8 *src);
73 extern uae_u8 *save_custom_sprite (int num, int *len, uae_u8 *);
74 
75 extern uae_u8 *restore_custom_agacolors (uae_u8 *src);
76 extern uae_u8 *save_custom_agacolors (int *len, uae_u8 *);
77 
78 extern uae_u8 *restore_blitter (uae_u8 *src);
79 extern uae_u8 *save_blitter (int *len, uae_u8 *);
80 extern void restore_blitter_finish (void);
81 
82 extern uae_u8 *restore_audio (int, uae_u8 *);
83 extern uae_u8 *save_audio (int, int *, uae_u8 *);
84 
85 extern uae_u8 *restore_cia (int, uae_u8 *);
86 extern uae_u8 *save_cia (int, int *, uae_u8 *);
87 
88 extern uae_u8 *restore_expansion (uae_u8 *);
89 extern uae_u8 *save_expansion (int *, uae_u8 *);
90 
91 extern uae_u8 *restore_p96 (uae_u8 *);
92 extern uae_u8 *save_p96 (int *, uae_u8 *);
93 extern void restore_p96_finish (void);
94 
95 extern uae_u8 *restore_keyboard (uae_u8 *);
96 extern uae_u8 *save_keyboard (int *);
97 
98 extern uae_u8 *restore_akiko (uae_u8 *src);
99 extern uae_u8 *save_akiko (int *len);
100 extern void restore_akiko_finish (void);
101 
102 extern uae_u8 *restore_cdtv (uae_u8 *src);
103 extern uae_u8 *save_cdtv (int *len);
104 extern void restore_cdtv_finish (void);
105 
106 extern uae_u8 *restore_dmac (uae_u8 *src);
107 extern uae_u8 *save_dmac (int *len);
108 
109 extern uae_u8 *restore_filesys (uae_u8 *src);
110 extern uae_u8 *save_filesys (int num, int *len);
111 extern uae_u8 *restore_filesys_common (uae_u8 *src);
112 extern uae_u8 *save_filesys_common (int *len);
113 extern int save_filesys_cando(void);
114 
115 extern uae_u8 *restore_gayle(uae_u8 *src);
116 extern uae_u8 *save_gayle (int *len);
117 extern uae_u8 *restore_ide (uae_u8 *src);
118 extern uae_u8 *save_ide (int num, int *len);
119 
120 extern uae_u8 *save_cd (int num, int *len);
121 extern uae_u8 *restore_cd (int, uae_u8 *src);
122 
123 extern uae_u8 *save_configuration (int *len);
124 extern uae_u8 *restore_configuration (uae_u8 *src);
125 extern uae_u8 *save_log (int, int *len);
126 extern uae_u8 *restore_log (uae_u8 *src);
127 
128 extern uae_u8 *restore_input (uae_u8 *src);
129 extern uae_u8 *save_input (int *len, uae_u8 *dstptr);
130 
131 extern void restore_cram (int, size_t);
132 extern void restore_bram (int, size_t);
133 extern void restore_fram (int, size_t);
134 extern void restore_zram (int, size_t, int);
135 extern void restore_bootrom (int, size_t);
136 extern void restore_pram (int, size_t);
137 extern void restore_a3000lram (int, size_t);
138 extern void restore_a3000hram (int, size_t);
139 
140 extern void restore_ram (size_t, uae_u8*);
141 
142 extern uae_u8 *save_cram (int *);
143 extern uae_u8 *save_bram (int *);
144 extern uae_u8 *save_fram (int *);
145 extern uae_u8 *save_zram (int *, int);
146 extern uae_u8 *save_bootrom (int *);
147 extern uae_u8 *save_pram (int *);
148 extern uae_u8 *save_a3000lram (int *);
149 extern uae_u8 *save_a3000hram (int *);
150 
151 extern uae_u8 *restore_rom (uae_u8 *);
152 extern uae_u8 *save_rom (int, int *, uae_u8 *);
153 
154 extern uae_u8 *restore_action_replay (uae_u8 *);
155 extern uae_u8 *save_action_replay (int *, uae_u8 *);
156 extern uae_u8 *restore_hrtmon (uae_u8 *);
157 extern uae_u8 *save_hrtmon (int *, uae_u8 *);
158 
159 extern void savestate_initsave (const TCHAR *filename, int docompress, int nodialogs);
160 extern int save_state (const TCHAR *filename, const TCHAR *description);
161 extern void restore_state (const TCHAR *filename);
162 extern void savestate_restore_finish (void);
163 
164 extern void custom_save_state (void);
165 extern void custom_prepare_savestate (void);
166 
167 #define STATE_SAVE 1
168 #define STATE_RESTORE 2
169 #define STATE_DOSAVE 4
170 #define STATE_DORESTORE 8
171 #define STATE_REWIND 16
172 #define STATE_DOREWIND 32
173 
174 extern int savestate_state;
175 extern TCHAR savestate_fname[MAX_DPATH];
176 extern struct zfile *savestate_file;
177 
178 extern void savestate_quick (int slot, int save);
179 
180 extern void savestate_capture (int);
181 extern void savestate_free (void);
182 extern void savestate_init (void);
183 extern void savestate_rewind (void);
184 extern int savestate_dorewind (int);
185 extern void savestate_listrewind (void);
186 
187