nkeynes@30: /** nkeynes@87: * $Id: main.c,v 1.12 2006-01-22 22:40:53 nkeynes Exp $ nkeynes@30: * nkeynes@30: * Main program, initializes dreamcast and gui, then passes control off to nkeynes@30: * the gtk main loop (currently). nkeynes@30: * nkeynes@30: * FIXME: Remove explicit GTK/Gnome references from this file nkeynes@30: * nkeynes@30: * Copyright (c) 2005 Nathan Keynes. nkeynes@30: * nkeynes@30: * This program is free software; you can redistribute it and/or modify nkeynes@30: * it under the terms of the GNU General Public License as published by nkeynes@30: * the Free Software Foundation; either version 2 of the License, or nkeynes@30: * (at your option) any later version. nkeynes@30: * nkeynes@30: * This program is distributed in the hope that it will be useful, nkeynes@30: * but WITHOUT ANY WARRANTY; without even the implied warranty of nkeynes@30: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the nkeynes@30: * GNU General Public License for more details. nkeynes@1: */ nkeynes@1: nkeynes@1: #ifdef HAVE_CONFIG_H nkeynes@1: # include nkeynes@1: #endif nkeynes@1: nkeynes@68: #include nkeynes@1: #include nkeynes@25: #include "gui/gui.h" nkeynes@27: #include "dream.h" nkeynes@87: #include "bios.h" nkeynes@27: #include "dreamcast.h" nkeynes@11: nkeynes@77: #define S3M_PLAYER "s3mplay.bin" nkeynes@77: nkeynes@87: char *option_list = "a:s:A:V:phb"; nkeynes@68: char *aica_program = NULL; nkeynes@77: char *s3m_file = NULL; nkeynes@68: gboolean start_immediately = FALSE; nkeynes@77: gboolean headless = FALSE; nkeynes@87: gboolean without_bios = FALSE; nkeynes@68: nkeynes@30: int main (int argc, char *argv[]) nkeynes@1: { nkeynes@68: int opt; nkeynes@1: #ifdef ENABLE_NLS nkeynes@68: bindtextdomain (PACKAGE, PACKAGE_LOCALE_DIR); nkeynes@68: textdomain (PACKAGE); nkeynes@1: #endif nkeynes@68: nkeynes@68: while( (opt = getopt( argc, argv, option_list )) != -1 ) { nkeynes@68: switch( opt ) { nkeynes@68: case 'a': /* AICA only mode - argument is an AICA program */ nkeynes@68: aica_program = optarg; nkeynes@68: break; nkeynes@77: case 's': /* AICA-only w/ S3M player */ nkeynes@77: aica_program = S3M_PLAYER; nkeynes@77: s3m_file = optarg; nkeynes@77: break; nkeynes@68: case 'A': /* Audio driver */ nkeynes@68: break; nkeynes@68: case 'V': /* Video driver */ nkeynes@68: break; nkeynes@68: case 'p': /* Start immediately */ nkeynes@68: start_immediately = TRUE; nkeynes@77: break; nkeynes@87: case 'b': /* No BIOS */ nkeynes@87: without_bios = TRUE; nkeynes@87: break; nkeynes@77: case 'h': /* Headless */ nkeynes@77: headless = TRUE; nkeynes@77: break; nkeynes@68: } nkeynes@68: } nkeynes@30: nkeynes@68: if( aica_program == NULL ) { nkeynes@68: dreamcast_init(); nkeynes@77: if( !headless ) { nkeynes@77: gnome_init ("dreamon", VERSION, argc, argv); nkeynes@77: video_open(); nkeynes@77: dreamcast_register_module( >k_gui_module ); nkeynes@77: } nkeynes@68: } else { nkeynes@68: dreamcast_configure_aica_only(); nkeynes@68: mem_load_block( aica_program, 0x00800000, 2048*1024 ); nkeynes@77: if( s3m_file != NULL ) { nkeynes@77: mem_load_block( s3m_file, 0x00810000, 2048*1024 - 0x10000 ); nkeynes@77: } nkeynes@77: if( !headless ) { nkeynes@77: gnome_init ("dreamon", VERSION, argc, argv); nkeynes@77: dreamcast_register_module( >k_gui_module ); nkeynes@77: set_disassembly_cpu( main_debug, "ARM7" ); nkeynes@77: } nkeynes@68: } nkeynes@1: nkeynes@87: if( without_bios ) { nkeynes@87: bios_install(); nkeynes@87: } nkeynes@68: INFO( "DreamOn! ready..." ); nkeynes@68: if( start_immediately ) nkeynes@68: dreamcast_run(); nkeynes@77: if( !headless ) { nkeynes@77: gtk_main (); nkeynes@77: } nkeynes@68: return 0; nkeynes@1: } nkeynes@1: