nkeynes@26: /** nkeynes@295: * $Id: dreamcast.h,v 1.12 2007-01-16 10:34:46 nkeynes Exp $ nkeynes@26: * nkeynes@26: * Public interface for dreamcast.c - nkeynes@26: * Central switchboard for the system. This pulls all the individual modules nkeynes@26: * together into some kind of coherent structure. This is also where you'd nkeynes@26: * add Naomi support, if I ever get a board to play with... nkeynes@26: * nkeynes@26: * Copyright (c) 2005 Nathan Keynes. nkeynes@26: * nkeynes@26: * This program is free software; you can redistribute it and/or modify nkeynes@26: * it under the terms of the GNU General Public License as published by nkeynes@26: * the Free Software Foundation; either version 2 of the License, or nkeynes@26: * (at your option) any later version. nkeynes@26: * nkeynes@26: * This program is distributed in the hope that it will be useful, nkeynes@26: * but WITHOUT ANY WARRANTY; without even the implied warranty of nkeynes@26: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the nkeynes@26: * GNU General Public License for more details. nkeynes@26: */ nkeynes@2: nkeynes@2: #ifndef dreamcast_H nkeynes@2: #define dreamcast_H 1 nkeynes@2: nkeynes@15: #include nkeynes@18: #include nkeynes@15: nkeynes@15: #ifdef __cplusplus nkeynes@15: extern "C" { nkeynes@15: #endif nkeynes@15: nkeynes@30: #define DEFAULT_TIMESLICE_LENGTH 1000000 /* nanoseconds */ nkeynes@144: #define CONFIG_TYPE_NONE 0 nkeynes@144: #define CONFIG_TYPE_FILE 1 nkeynes@144: #define CONFIG_TYPE_PATH 2 nkeynes@144: #define CONFIG_TYPE_KEY 3 nkeynes@144: nkeynes@180: #define DEFAULT_CONFIG_FILENAME "lxdream.rc" nkeynes@144: nkeynes@144: typedef struct dreamcast_config_entry { nkeynes@144: const gchar *key; nkeynes@144: const int type; nkeynes@144: const gchar *default_value; nkeynes@144: gchar *value; nkeynes@144: } *dreamcast_config_entry_t; nkeynes@144: nkeynes@144: typedef struct dreamcast_config_group { nkeynes@144: const gchar *key; nkeynes@144: struct dreamcast_config_entry *params; nkeynes@144: } *dreamcast_config_group_t; nkeynes@144: nkeynes@23: nkeynes@2: void dreamcast_init(void); nkeynes@2: void dreamcast_reset(void); nkeynes@23: void dreamcast_run(void); nkeynes@2: void dreamcast_stop(void); nkeynes@2: nkeynes@144: gboolean dreamcast_load_config( const gchar *filename ); nkeynes@144: gboolean dreamcast_save_config( const gchar *filename ); nkeynes@30: nkeynes@295: #define DREAMCAST_SAVE_MAGIC "%!-lxDream!Save\0" nkeynes@295: #define DREAMCAST_SAVE_VERSION 0x00010000 nkeynes@295: nkeynes@18: int dreamcast_save_state( const gchar *filename ); nkeynes@18: int dreamcast_load_state( const gchar *filename ); nkeynes@18: nkeynes@295: #define SCENE_SAVE_MAGIC "%!-lxDream!Scene" nkeynes@295: #define SCENE_SAVE_VERSION 0x00010000 nkeynes@295: nkeynes@144: extern struct dreamcast_config_group dreamcast_config_root[]; nkeynes@144: nkeynes@167: /* Global config values */ nkeynes@167: const gchar *dreamcast_get_config_value( int key ); nkeynes@167: #define CONFIG_BIOS_PATH 0 nkeynes@167: #define CONFIG_FLASH_PATH 1 nkeynes@167: #define CONFIG_DEFAULT_PATH 2 nkeynes@167: #define CONFIG_SAVE_PATH 3 nkeynes@167: #define CONFIG_BOOTSTRAP 4 nkeynes@167: nkeynes@15: #ifdef __cplusplus nkeynes@15: } nkeynes@15: #endif nkeynes@15: nkeynes@26: #endif /* !dreamcast_H */