Annotation of hatari/src/cpu/savestate.h, revision 1.1.1.4

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 */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.