1.1 --- a/src/dreamcast.c Thu Dec 15 13:33:14 2005 +0000
1.2 +++ b/src/dreamcast.c Fri Dec 23 11:44:55 2005 +0000
1.4 static char *dreamcast_config = "DEFAULT";
1.5 dreamcast_module_t modules[MAX_MODULES];
1.7 +struct save_state_header {
1.10 + uint32_t module_count;
1.15 * This function is responsible for defining how all the pieces of the
1.16 * dreamcast actually fit together. Among other things, this lets us
1.18 void dreamcast_init( void )
1.20 dreamcast_configure();
1.21 + dreamcast_state = STATE_STOPPED;
1.24 void dreamcast_reset( void )
1.29 -void dreamcast_start( void )
1.30 +void dreamcast_run( void )
1.33 - for( i=0; i<num_modules; i++ ) {
1.34 - if( modules[i]->start != NULL )
1.35 - modules[i]->start();
1.36 + if( dreamcast_state != STATE_RUNNING ) {
1.37 + for( i=0; i<num_modules; i++ ) {
1.38 + if( modules[i]->start != NULL )
1.39 + modules[i]->start();
1.43 -void dreamcast_stop( void )
1.46 + dreamcast_state = STATE_RUNNING;
1.47 + while( dreamcast_state == STATE_RUNNING ) {
1.48 + for( i=0; i<num_modules; i++ ) {
1.49 + if( modules[i]->run_time_slice != NULL )
1.50 + modules[i]->run_time_slice( TIMESLICE_LENGTH );
1.55 for( i=0; i<num_modules; i++ ) {
1.56 if( modules[i]->stop != NULL )
1.59 + dreamcast_state = STATE_STOPPED;
1.63 -struct save_state_header {
1.66 - uint32_t module_count;
1.69 +void dreamcast_stop( void )
1.71 + if( dreamcast_state == STATE_RUNNING )
1.72 + dreamcast_state = STATE_STOPPING;
1.75 int dreamcast_load_state( const gchar *filename )