- sprintf(filename, "%s/%s", home_dir, config_gamesave_dir);
- mkdir(filename, 0777);
- sprintf(filename + strlen(filename), "/%d.gamesave", gamesave_num);
- fp = fopen(filename, "w");
- if (!fp) {
-fail:
- fprintf(stderr, "failed to save game to '%s'\n", filename);
- return;
- }
- printf("Game state saved to '%s'\n", filename);
- wrote = fwrite(game_save, sizeof(game_save[0]), 2, fp);
- fclose(fp);
- if (wrote != 2)
- goto fail;
- }
+ /* load binary */
+ mercenary_load();
+
+ /* patch some stuff */
+ mercenary_patch();
+
+ /* init SDL and OpenGL */
+ rc = init_sdl(argv[0], SCREEN_WIDTH, SCREEN_HEIGHT, SOUND_SAMPLERATE, sdl_sound_chunk, keyboard_sdl, audio_sdl);
+ if (rc < 0)
+ goto done;
+ rc = init_opengl((double_size) ? IMAGE_WIDTH * 2 : IMAGE_WIDTH, (double_size) ? IMAGE_HEIGHT * 2 : IMAGE_HEIGHT);
+ if (rc < 0)
+ goto done;
+ resize_opengl(SCREEN_WIDTH, SCREEN_HEIGHT);
+
+ /* init audio filter */
+ sound_init_filter(SOUND_SAMPLERATE);
+
+ /* start cpu */
+ reset_cpu();
+
+ printf("**********************************\n");
+ printf("* Welcome to Mercenary Reloaded! *\n");
+ printf("**********************************\n\n");
+ printf("Press CTRL + cursor keys to select inventory or pickup/drop item.\n");
+ printf("Press CTRL + f to toggle full screen.\n");
+ printf("Press CTRL + s to toggle rendering speed.\n");
+ printf("Press CTRL + v to toggle video filter.\n");
+ printf("Press CTRL + a to toggle audio filter.\n");
+ printf("Press CTRL + c to exit game.\n\n");
+ printf("Use '--help' as command line option for configuration settings.\n\n");
+
+ /* run game */
+ main_loop();
+
+done:
+ exit_opengl();
+ exit_sdl();
+
+ if (chipreg)
+ free(chipreg);
+ if (memory)
+ free(memory);
+ if (sound_buffer)
+ free(sound_buffer);
+ if (image)
+ free(image);
+
+ return 0;