1. Index: menu.c
  2. ===================================================================
  3. --- menu.c  (revision 4398)
  4. +++ menu.c  (working copy)
  5. @@ -743,6 +743,39 @@
  6.    fuse_emulation_unpause();
  7.  }
  8.  
  9. +MENU_CALLBACK( menu_file_movie_record_recordfromrzx )
  10. +{
  11. +  char *rzx_file, *fmf_file;
  12. +
  13. +  ui_widget_finish();
  14. +
  15. +  if( rzx_playback || rzx_recording || movie_recording ) return;
  16. +
  17. +  fuse_emulation_pause();
  18. +
  19. +  rzx_file = ui_get_open_filename( "Fuse - Load RZX" );
  20. +  if( !rzx_file ) { fuse_emulation_unpause(); return; }
  21. +
  22. +  rzx_start_playback( rzx_file, 1 );
  23. +  free( rzx_file );
  24. +  display_refresh_all();
  25. +
  26. +  if( rzx_playback ) {
  27. +    fmf_file = ui_get_save_filename( "Fuse - Record Movie File" );
  28. +    if( !fmf_file ) {
  29. +      rzx_stop_playback( 1 );
  30. +      fuse_emulation_unpause();
  31. +      return;
  32. +    }
  33. +
  34. +    movie_start( fmf_file );
  35. +    free( fmf_file );
  36. +    ui_menu_activate( UI_MENU_ITEM_RECORDING, 1 );
  37. +  }
  38. +
  39. +  fuse_emulation_unpause();
  40. +}
  41. +
  42.  MENU_CALLBACK( menu_file_recording_record )
  43.  {
  44.    char *recording;
  45. Index: menu.h
  46. ===================================================================
  47. --- menu.h  (revision 4398)
  48. +++ menu.h  (working copy)
  49. @@ -125,6 +125,7 @@
  50.  MENU_CALLBACK( menu_file_savescreenaspng );
  51.  
  52.  MENU_CALLBACK( menu_file_movie_record );
  53. +MENU_CALLBACK( menu_file_movie_record_recordfromrzx );
  54.  
  55.  MENU_CALLBACK( menu_options_general );
  56.  MENU_CALLBACK( menu_options_sound );
  57. Index: movie.c
  58. ===================================================================
  59. --- movie.c (revision 4398)
  60. +++ movie.c (working copy)
  61. @@ -357,7 +357,7 @@
  62.  void
  63.  movie_stop( void )
  64.  {
  65. -  if( !movie_recording ) return;
  66. +  if( !movie_paused && !movie_recording ) return;
  67.  
  68.    fwrite_compr( "X", 1, 1, of );   /* End of Recording! */
  69.  #ifdef HAVE_ZLIB_H
  70. @@ -387,6 +387,7 @@
  71.    fprintf( stderr, "Debug movie: saved %d.%d frame(.slice)\n", frame_no, slice_no );
  72.  #endif     /* MOVIE_DEBUG_PRINT */
  73.    movie_recording = 0;
  74. +  movie_paused = 0;
  75.    ui_menu_activate( UI_MENU_ITEM_FILE_MOVIE_RECORDING, 0 );
  76.  }
  77.  
  78. Index: menu_data.dat
  79. ===================================================================
  80. --- menu_data.dat   (revision 4398)
  81. +++ menu_data.dat   (working copy)
  82. @@ -48,6 +48,7 @@
  83.  
  84.  File/_Movie, Branch
  85.  File/Movie/_Record..., Item
  86. +File/Movie/R_ecord from RZX..., Item,, menu_file_movie_record_recordfromrzx
  87.  File/Movie/_Pause, Item
  88.  File/Movie/_Continue, Item,, menu_file_movie_pause
  89.  File/Movie/_Stop, Item
  90. Index: ui.c
  91. ===================================================================
  92. --- ui.c    (revision 4398)
  93. +++ ui.c    (working copy)
  94. @@ -221,6 +221,7 @@
  95.      "/File/Movie/Pause", 0,
  96.      "/File/Movie/Continue", 0,
  97.      "/File/Movie/Record...", 1,
  98. +    "/File/Movie/Record from RZX...", 1
  99.    },
  100.    
  101.    { UI_MENU_ITEM_FILE_MOVIE_PAUSE, "/File/Movie/Pause",