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