home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 July / CMCD0704.ISO / Software / Freeware / Utilitare / VisualBoyAdvance-1.7.2 / src / win32 / VBA.h < prev    next >
Encoding:
C/C++ Source or Header  |  2004-05-13  |  6.2 KB  |  266 lines

  1. // -*- C++ -*-
  2. // VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator.
  3. // Copyright (C) 1999-2003 Forgotten
  4. // Copyright (C) 2004 Forgotten and the VBA development team
  5.  
  6. // This program is free software; you can redistribute it and/or modify
  7. // it under the terms of the GNU General Public License as published by
  8. // the Free Software Foundation; either version 2, or(at your option)
  9. // any later version.
  10. //
  11. // This program is distributed in the hope that it will be useful,
  12. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. // GNU General Public License for more details.
  15. //
  16. // You should have received a copy of the GNU General Public License
  17. // along with this program; if not, write to the Free Software Foundation,
  18. // Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  19.  
  20. // VBA.h : main header file for the VBA application
  21. //
  22.  
  23. #if !defined(AFX_VBA_H__57514A10_49F9_4B83_A928_0D8A4A7306A3__INCLUDED_)
  24. #define AFX_VBA_H__57514A10_49F9_4B83_A928_0D8A4A7306A3__INCLUDED_
  25.  
  26. #if _MSC_VER > 1000
  27. #pragma once
  28. #endif // _MSC_VER > 1000
  29.  
  30. #ifndef __AFXWIN_H__
  31. #error include 'stdafx.h' before including this file for PCH
  32. #endif
  33.  
  34. #include <afxtempl.h>
  35.  
  36. #include "AcceleratorManager.h"
  37. #include "resource.h"       // main symbols
  38. #include "Display.h"
  39. #include "Input.h"
  40. #include "IUpdate.h"
  41. #include "Sound.h"
  42. #include "../System.h"
  43.  
  44. /////////////////////////////////////////////////////////////////////////////
  45. // VBA:
  46. // See VBA.cpp for the implementation of this class
  47. //
  48.  
  49. enum {
  50.   VIDEO_1X, VIDEO_2X, VIDEO_3X, VIDEO_4X,
  51.   VIDEO_320x240, VIDEO_640x480, VIDEO_800x600, VIDEO_OTHER
  52. };
  53.  
  54. #define REWIND_SIZE 400000
  55.  
  56. class CSkin;
  57. class AVIWrite;
  58. class WavWriter;
  59.  
  60. class VBA : public CWinApp
  61. {
  62.  public:
  63.   CMenu m_menu;
  64.   HMENU menu;
  65.   HMENU popup;
  66.   bool mode320Available;
  67.   bool mode640Available;
  68.   bool mode800Available;
  69.   int windowPositionX;
  70.   int windowPositionY;
  71.   void (*filterFunction)(u8*,u32,u8*,u8*,u32,int,int);
  72.   void (*ifbFunction)(u8*,u32,int,int);
  73.   int ifbType;
  74.   int filterType;
  75.   int filterWidth;
  76.   int filterHeight;
  77.   int fsWidth;
  78.   int fsHeight;
  79.   int fsColorDepth;
  80.   bool fsForceChange;
  81.   int sizeX;
  82.   int sizeY;
  83.   int surfaceSizeX;
  84.   int surfaceSizeY;
  85.   int videoOption;
  86.   bool fullScreenStretch;
  87.   bool disableStatusMessage;
  88.   int showSpeed;
  89.   BOOL showSpeedTransparent;
  90.   int showRenderedFrames;
  91.   bool screenMessage;
  92.   CString screenMessageBuffer;
  93.   DWORD screenMessageTime;
  94.   u8 *delta[257*244*4];
  95.   bool menuToggle;
  96.   IDisplay *display;
  97.   int cartridgeType;
  98.   bool soundInitialized;
  99.   bool useBiosFile;
  100.   bool skipBiosFile;
  101.   CString biosFileName;
  102.   bool active;
  103.   bool paused;
  104.   CString recentFiles[10];
  105.   bool recentFreeze;
  106.   bool autoSaveLoadCheatList;
  107.   FILE *winout;
  108.   bool removeIntros;
  109.   bool autoIPS;
  110.   int winGbBorderOn;
  111.   int winFlashSize;
  112.   bool winRtcEnable;
  113.   int winSaveType;
  114.   char *rewindMemory;
  115.   int rewindPos;
  116.   int rewindTopPos;
  117.   int rewindCounter;
  118.   int rewindCount;
  119.   bool rewindSaveNeeded;
  120.   int rewindTimer;
  121.   int captureFormat;
  122.   bool tripleBuffering;
  123.   bool autoHideMenu;
  124.   int throttle;
  125.   u32 throttleLastTime;
  126.   u32 autoFrameSkipLastTime;
  127.   bool autoFrameSkip;
  128.   bool vsync;
  129.   bool changingVideoSize;
  130.   GUID videoDriverGUID;
  131.   GUID *pVideoDriverGUID;
  132.   DISPLAY_TYPE renderMethod;
  133.   bool iconic;
  134.   bool ddrawEmulationOnly;
  135.   bool ddrawUsingEmulationOnly;
  136.   bool ddrawDebug;
  137.   bool ddrawUseVideoMemory;
  138.   int d3dFilter;
  139.   int glFilter;
  140.   int glType;
  141.   CSkin *skin;
  142.   CString skinName;
  143.   bool skinEnabled;
  144.   int skinButtons;
  145.   bool pauseWhenInactive;
  146.   bool speedupToggle;
  147.   bool useOldSync;
  148.   bool winGbPrinterEnabled;
  149.   int threadPriority;
  150.   bool disableMMX;
  151.   int languageOption;
  152.   CString languageName;
  153.   HINSTANCE languageModule;
  154.   int renderedFrames;
  155.   Input *input;
  156.   int joypadDefault;
  157.   int autoFire;
  158.   bool autoFireToggle;
  159.   bool winPauseNextFrame;
  160.   bool soundRecording;
  161.   WavWriter *soundRecorder;
  162.   CString soundRecordName;
  163.   ISound *sound;
  164.   bool aviRecording;
  165.   AVIWrite *aviRecorder;
  166.   CString aviRecordName;
  167.   int aviFrameNumber;
  168.   bool painting;
  169.   bool movieRecording;
  170.   bool moviePlaying;
  171.   int movieFrame;
  172.   int moviePlayFrame;
  173.   FILE *movieFile;
  174.   u32 movieLastJoypad;
  175.   u32 movieNextJoypad;
  176.   int sensorX;
  177.   int sensorY;
  178.   int mouseCounter;
  179.   bool wasPaused;
  180.   int frameskipadjust;
  181.   bool autoLoadMostRecent;
  182.   int fsMaxScale;
  183.   int romSize;
  184.  
  185.   CList<IUpdateListener *, IUpdateListener*&> updateList;
  186.   int updateCount;
  187.  
  188.   CAcceleratorManager winAccelMgr;
  189.   HACCEL hAccel;
  190.   
  191.   RECT rect;
  192.   RECT dest;
  193.  
  194.   struct EmulatedSystem emulator;
  195.  
  196.   CString szFile;
  197.   CString filename;
  198.   CString dir;
  199.  
  200.   CString wndClass;
  201.  
  202.  public:
  203.   VBA();
  204.   ~VBA();
  205.  
  206.   void adjustDestRect();
  207.   void updateIFB();
  208.   void updateFilter();
  209.   void updateMenuBar();
  210.   void winAddUpdateListener(IUpdateListener *l);
  211.   void winRemoveUpdateListener(IUpdateListener *l);
  212.   CString winLoadFilter(UINT id);
  213.  
  214.   // Overrides
  215.   // ClassWizard generated virtual function overrides
  216.   //{{AFX_VIRTUAL(VBA)
  217.  public:
  218.   virtual BOOL InitInstance();
  219.   virtual BOOL OnIdle(LONG lCount);
  220.   //}}AFX_VIRTUAL
  221.  
  222.   // Implementation
  223.  
  224.  public:
  225.   void saveSettings();
  226.   void movieReadNext();
  227.   bool initInput();
  228.   HINSTANCE winLoadLanguage(const char *name);
  229.   void winSetLanguageOption(int option, bool force);
  230.   bool detectMMX();
  231. #ifdef MMX
  232. #endif
  233.   void updatePriority();
  234.   void winUpdateSkin();
  235.   void directXMessage(const char *msg);
  236.   void shutdownDisplay();
  237.   void winCheckFullscreen();
  238.   bool updateRenderMethod0(bool force);
  239.   bool updateRenderMethod(bool force);
  240.   bool initDisplay();
  241.   void updateWindowSize(int value);
  242.   void updateVideoSize(UINT id);
  243.   void updateFrameSkip();
  244.   void loadSettings();
  245.   void addRecentFile(CString file);
  246.   //{{AFX_MSG(VBA)
  247.   afx_msg void OnAppAbout();
  248.   // NOTE - the ClassWizard will add and remove member functions here.
  249.   //    DO NOT EDIT what you see in these blocks of generated code !
  250.   //}}AFX_MSG
  251.   DECLARE_MESSAGE_MAP()
  252.     };
  253.  
  254.     extern VBA theApp;
  255.  
  256. #ifdef MMX
  257.     extern "C" bool cpu_mmx;
  258. #endif
  259.  
  260.     /////////////////////////////////////////////////////////////////////////////
  261.  
  262.     //{{AFX_INSERT_LOCATION}}
  263.     // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  264.  
  265. #endif // !defined(AFX_VBA_H__57514A10_49F9_4B83_A928_0D8A4A7306A3__INCLUDED_)
  266.