Subversion Repositories pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

  1. #include "std.h"
  2. #pragma hdrstop
  3.  
  4. #include "emul.h"
  5.  
  6. #define SND_TEST_FAILURES
  7. //#define SND_TEST_SHOWSTAT
  8. #include "mods.h"
  9.  
  10. //#include "9x.h"
  11. #include "resource.h"
  12.  
  13. //------- Alone Coder ---------
  14. #include <winioctl.h>
  15.  
  16. #ifndef INVALID_SET_FILE_POINTER
  17. #define INVALID_SET_FILE_POINTER (DWORD)-1
  18. #endif
  19.  
  20. typedef unsigned int UINT32;
  21. typedef signed int INT32;
  22. typedef unsigned short UINT16;
  23. typedef signed short INT16;
  24. typedef unsigned char UINT8;
  25. typedef signed char INT8;
  26. unsigned frametime = 111111; //Alone Coder (GUI value for conf.frame)
  27. //~------- Alone Coder ---------
  28.  
  29. unsigned nmi_pending = 0;
  30.  
  31. int main_pause_flag = 0;        // [NS]
  32.  
  33. bool ConfirmExit();
  34. BOOL WINAPI ConsoleHandler( DWORD CtrlType);
  35.  
  36. #include "sndrender/emul_2203.h" //Dexus
  37. #include "sndrender/sndrender.h"
  38. #include "emul.h"
  39. #include "sndrender/sndchip.h"
  40. #include "sndrender/sndcounter.h"
  41. #include "init.h"
  42. #include "funcs.h"
  43. #include "debug.h"
  44. #include "vars.h"
  45. #include "dx.h"
  46. #include "draw.h"
  47. #include "mainloop.h"
  48. #include "iehelp.h"
  49. #include "util.h"
  50.  
  51.  
  52. #include "version.h"    // [NS]
  53.  
  54.  
  55.  
  56. //=============================================================================
  57. // HWND-√ эхьюфры№э√ї юъюэ
  58.  
  59. HWND hwnd_bp_dialog = NULL;             // hwnd эхьюфры№эюую юъэр сЁ ъют [NS]
  60. HWND hwnd_watchdlg = NULL;              // hwnd эхьюфры№эюую юъэр трўхёют [NS]
  61.  
  62. //=============================================================================
  63.  
  64.  
  65. //=============================================================================
  66. void m_nmi( ROM_MODE page);
  67. //=============================================================================
  68. void showhelp( const char *anchor)
  69. {
  70.     OnEnterGui();               // Alone Coder 0.36.6
  71.     showhelppp( anchor);        //
  72.     OnExitGui();                //
  73. }
  74. //=============================================================================
  75.  
  76.  
  77. //=============================================================================
  78. static LONG __stdcall filter(EXCEPTION_POINTERS *pp)
  79. {
  80.     color(CONSCLR_ERROR);
  81.     printf("\nexception %08lX at eip=%p\n",
  82.                 pp->ExceptionRecord->ExceptionCode,
  83.                 pp->ExceptionRecord->ExceptionAddress);
  84. //-----------------------------------------------------------------------------
  85. #if _M_IX86
  86.     printf("eax=%08lX ebx=%08lX ecx=%08lX edx=%08lX\n"
  87.            "esi=%08lX edi=%08lX ebp=%08lX esp=%08lX\n",
  88.                 pp->ContextRecord->Eax, pp->ContextRecord->Ebx,
  89.                 pp->ContextRecord->Ecx, pp->ContextRecord->Edx,
  90.                 pp->ContextRecord->Esi, pp->ContextRecord->Edi,
  91.                 pp->ContextRecord->Ebp, pp->ContextRecord->Esp);
  92. #endif
  93. //-----------------------------------------------------------------------------
  94. #if _M_IX64
  95.     printf("rax=%016I64X rbx=%016I64X rcx=%016I64X rdx=%016I64X\n"
  96.            "rsi=%016I64X rdi=%016I64X rbp=%016I64X rsp=%016I64X\n",
  97.                 pp->ContextRecord->Rax, pp->ContextRecord->Rbx,
  98.                 pp->ContextRecord->Rcx, pp->ContextRecord->Rdx,
  99.                 pp->ContextRecord->Rsi, pp->ContextRecord->Rdi,
  100.                 pp->ContextRecord->Rbp, pp->ContextRecord->Rsp);
  101. #endif
  102. //-----------------------------------------------------------------------------
  103.     color();
  104.     return EXCEPTION_CONTINUE_SEARCH;
  105. }
  106. //=============================================================================
  107.  
  108. //=============================================================================
  109. static volatile bool Exit = false;
  110. //=============================================================================
  111.  
  112.  
  113.  
  114. //=============================================================================
  115. bool ConfirmExit()
  116. {
  117.     //-------------------------------------------------------------------------
  118.     if (!conf.ConfirmExit)
  119.         return true;
  120.     //-------------------------------------------------------------------------
  121.     return MessageBox(wnd, "Exit ?", "Unreal", MB_YESNO | MB_ICONQUESTION | MB_SETFOREGROUND) == IDYES;
  122. }
  123. //=============================================================================
  124.  
  125.  
  126. //=============================================================================
  127. BOOL WINAPI ConsoleHandler(DWORD CtrlType)
  128. {
  129.     //printf("ConsoleHandler CtrlType %d\n",CtrlType);
  130.     switch (CtrlType)
  131.     {
  132.         case CTRL_C_EVENT:
  133.         case CTRL_BREAK_EVENT:
  134.             //-----------------------------------------------------------------
  135.             if (ConfirmExit())
  136.                 Exit = true;
  137.             //-----------------------------------------------------------------
  138.             return TRUE;
  139.     }
  140.     return FALSE;
  141. }
  142. //=============================================================================
  143.  
  144.  
  145. //=============================================================================
  146. int __cdecl main(int argc, char **argv)
  147. {
  148.  
  149.     DWORD Ver = GetVersion();
  150.  
  151.     WinVerMajor = (DWORD)(LOBYTE(LOWORD(Ver)));
  152.     WinVerMinor = (DWORD)(HIBYTE(LOWORD(Ver)));
  153.  
  154.     CONSOLE_SCREEN_BUFFER_INFO csbi;
  155.     GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
  156.     nowait = *(unsigned*)&csbi.dwCursorPosition;
  157.  
  158.     SetThreadAffinityMask(GetCurrentThread(), 1);
  159.  
  160.     SetConsoleCtrlHandler(ConsoleHandler, TRUE);
  161.  
  162. //  color( CONSCLR_TITLE);  printf("UnrealSpeccy %s by SMT, %s\n", VERS_STRING_, __DATE__);  
  163.     color( CONSCLR_TITLE);    printf("Unreal_NS %s by NS, %s\n", UNREAL_NS_VERS_STRING, __DATE__);
  164.     color( CONSCLR_DEFAULT);  printf("Based on UnrealSpeccy %s by DeathSoft merged with %s NedoPC repo\n",VERS_STRING_, NEDOREPO_VERS);
  165.  
  166. //    printf("Based on code by SMT, Alone Coder, DeathSoft, TS-Labs\n");
  167. //    color( CONSCLR_DEFAULT);  printf("Integrated YM2203 version 1.4A by Tatsuyuki Satoh, Jarek Burczynski, Alone Coder\n"); //Dexus
  168.  
  169. //-----------------------------------------------------------------------------
  170. #ifdef __ICL
  171.     printf("Intel C++ Compiler: %d.%02d\n", __ICL/100, __ICL % 100);
  172. #endif
  173. //-----------------------------------------------------------------------------
  174. #ifdef __GNUC__
  175.     #ifdef __clang__
  176.         //printf("Clang\n");
  177.     #else
  178.         color( CONSCLR_DEFAULT);  printf("Compiler: ");
  179.         color( CONSCLR_INFO);     printf("MinGW-w64 %d.%d\n", __GNUC__ , __GNUC_MINOR__ );
  180.     #endif
  181. #endif
  182. //-----------------------------------------------------------------------------
  183.  
  184.     color();
  185.     // http://sourceforge.net/projects/unrealspeccy/
  186.     // http://alonecoder.narod.ru/
  187.     // http://dlcorp.ucoz.ru/forum/22
  188.     //printf(" *** new versions & sources -> http://dlcorp.nedopc.com/viewforum.php?f=8 ***\n");
  189.  
  190.     //printf(" *** new versions & sources -> http://dlcorp.nedopc.com/viewforum.php?f=8 ***\n");
  191.  
  192.  
  193. #ifndef DEBUG
  194.     SetUnhandledExceptionFilter(filter);
  195. #endif
  196.  
  197. //   SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX);     //эхЄ ёЄЁюъш т NEDOREPO
  198.  
  199.     _set_error_mode(_OUT_TO_MSGBOX);
  200.  
  201.     load_spec_colors();
  202.     init_all(argc-1, argv+1);
  203. //  applyconfig();
  204.     sound_play();
  205.     color();
  206.  
  207.     mainloop(Exit);
  208.     return 0;
  209. }
  210. //=============================================================================
  211.  
  212.  
  213. //=============================================================================
  214. COMPUTER::COMPUTER()
  215. {
  216.     for(unsigned i = 0;    i < 4;    i++) // [vv] ─ы  єфюсёЄтр юЄырфъш
  217.     {
  218.         fdd[i].Id = u8(i);
  219.     }
  220. }
  221. //=============================================================================
  222.  
  223.