nkeynes@26: /** nkeynes@586: * $Id$ 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@736: #ifndef lxdream_dreamcast_H nkeynes@736: #define lxdream_dreamcast_H 1 nkeynes@2: nkeynes@15: #include nkeynes@477: #include "lxdream.h" nkeynes@15: nkeynes@15: #ifdef __cplusplus nkeynes@15: extern "C" { nkeynes@15: #endif nkeynes@15: nkeynes@30: #define DEFAULT_TIMESLICE_LENGTH 1000000 /* nanoseconds */ nkeynes@359: nkeynes@922: #define XLAT_NEW_CACHE_SIZE 40 MB nkeynes@359: #define XLAT_TEMP_CACHE_SIZE 2 MB nkeynes@359: #define XLAT_OLD_CACHE_SIZE 8 MB nkeynes@359: nkeynes@422: void dreamcast_configure(void); nkeynes@422: void dreamcast_configure_aica_only(void); nkeynes@2: void dreamcast_init(void); nkeynes@2: void dreamcast_reset(void); nkeynes@23: void dreamcast_run(void); nkeynes@689: void dreamcast_set_run_time( unsigned int seconds, unsigned int nanosecs ); nkeynes@689: void dreamcast_set_exit_on_stop( gboolean flag ); nkeynes@2: void dreamcast_stop(void); nkeynes@429: void dreamcast_shutdown(void); nkeynes@461: void dreamcast_config_changed(void); nkeynes@431: gboolean dreamcast_is_running(void); nkeynes@2: nkeynes@543: /** nkeynes@543: * Return if it's possible to start the VM - currently this requires nkeynes@543: * a) A configured system nkeynes@543: * b) Some code to run (either a user program or a ROM) nkeynes@543: */ nkeynes@543: gboolean dreamcast_can_run(void); nkeynes@543: nkeynes@544: /** nkeynes@544: * Notify the VM that a program (ELF or other binary) has been loaded. nkeynes@544: * nkeynes@544: */ nkeynes@544: void dreamcast_program_loaded( const gchar *name, sh4addr_t entry_point ); nkeynes@544: nkeynes@295: #define DREAMCAST_SAVE_MAGIC "%!-lxDream!Save\0" nkeynes@953: #define DREAMCAST_SAVE_VERSION 0x00010006 nkeynes@295: nkeynes@18: int dreamcast_save_state( const gchar *filename ); nkeynes@18: int dreamcast_load_state( const gchar *filename ); nkeynes@18: nkeynes@477: /** nkeynes@477: * Load the front-buffer image from the specified file. nkeynes@477: * If the file is not a valid save state, returns NULL. Otherwise, nkeynes@477: * returns a newly allocated frame_buffer that should be freed nkeynes@477: * by the caller. (The data buffer is contained within the nkeynes@477: * allocation and does not need to be freed separately) nkeynes@477: */ nkeynes@477: frame_buffer_t dreamcast_load_preview( const gchar *filename ); nkeynes@477: nkeynes@295: #define SCENE_SAVE_MAGIC "%!-lxDream!Scene" nkeynes@295: #define SCENE_SAVE_VERSION 0x00010000 nkeynes@295: nkeynes@953: extern unsigned char dc_main_ram[]; nkeynes@953: extern unsigned char dc_boot_rom[]; nkeynes@953: extern unsigned char dc_flash_ram[]; nkeynes@953: nkeynes@15: #ifdef __cplusplus nkeynes@15: } nkeynes@15: #endif nkeynes@15: nkeynes@736: #endif /* !lxdream_dreamcast_H */