|
|
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:
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 uae_u8 *restore_fpu (uae_u8 *);
57: extern uae_u8 *save_fpu (int *, uae_u8 *);
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:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.