Top secrets sources NedoPC pentevo

Rev

Rev 800 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

#include "std.h"
#pragma hdrstop

#include "emul.h"

#define SND_TEST_FAILURES
//#define SND_TEST_SHOWSTAT
#include "mods.h"

//#include "9x.h"
#include "resource.h"

//------- Alone Coder ---------
#include <winioctl.h>

#ifndef INVALID_SET_FILE_POINTER
#define INVALID_SET_FILE_POINTER (DWORD)-1
#endif

typedef unsigned int UINT32;
typedef signed int INT32;
typedef unsigned short UINT16;
typedef signed short INT16;
typedef unsigned char UINT8;
typedef signed char INT8;
unsigned frametime = 111111; //Alone Coder (GUI value for conf.frame)
//~------- Alone Coder ---------

unsigned nmi_pending = 0;

bool ConfirmExit();
BOOL WINAPI ConsoleHandler(DWORD CtrlType);

#include "sndrender/emul_2203.h" //Dexus
#include "sndrender/sndrender.h"
#include "emul.h"
#include "sndrender/sndchip.h"
#include "sndrender/sndcounter.h"
#include "init.h"
#include "funcs.h"
#include "debug.h"
#include "vars.h"
#include "dx.h"
#include "draw.h"
#include "mainloop.h"
#include "iehelp.h"
#include "util.h"

void m_nmi(ROM_MODE page);
void showhelp(const char *anchor)
{
   OnEnterGui(); //Alone Coder 0.36.6
   showhelppp(anchor); //Alone Coder 0.36.6
   OnExitGui(); //Alone Coder 0.36.6
}

static LONG __stdcall filter(EXCEPTION_POINTERS *pp)
{
   color(CONSCLR_ERROR);
   printf("\nexception %08lX at eip=%p\n",
                pp->ExceptionRecord->ExceptionCode,
                pp->ExceptionRecord->ExceptionAddress);
#if _M_IX86
   printf("eax=%08lX ebx=%08lX ecx=%08lX edx=%08lX\n"
          "esi=%08lX edi=%08lX ebp=%08lX esp=%08lX\n",
          pp->ContextRecord->Eax, pp->ContextRecord->Ebx,
          pp->ContextRecord->Ecx, pp->ContextRecord->Edx,
          pp->ContextRecord->Esi, pp->ContextRecord->Edi,
          pp->ContextRecord->Ebp, pp->ContextRecord->Esp);
#endif
#if _M_IX64
   printf("rax=%016I64X rbx=%016I64X rcx=%016I64X rdx=%016I64X\n"
          "rsi=%016I64X rdi=%016I64X rbp=%016I64X rsp=%016I64X\n",
          pp->ContextRecord->Rax, pp->ContextRecord->Rbx,
          pp->ContextRecord->Rcx, pp->ContextRecord->Rdx,
          pp->ContextRecord->Rsi, pp->ContextRecord->Rdi,
          pp->ContextRecord->Rbp, pp->ContextRecord->Rsp);
#endif
   color();
   return EXCEPTION_CONTINUE_SEARCH;
}

static volatile bool Exit = false;

bool ConfirmExit()
{
    if(!conf.ConfirmExit)
        return true;

    return MessageBox(wnd, "Exit ?", "Unreal", MB_YESNO | MB_ICONQUESTION | MB_SETFOREGROUND) == IDYES;
}

BOOL WINAPI ConsoleHandler(DWORD CtrlType)
{
    switch(CtrlType)
    {
    case CTRL_C_EVENT:
    case CTRL_BREAK_EVENT:
        if(ConfirmExit())
            Exit = true;
        return TRUE;
    }
    return FALSE;
}

int __cdecl main(int argc, char **argv)
{

   DWORD Ver = GetVersion();

   WinVerMajor = (DWORD)(LOBYTE(LOWORD(Ver)));
   WinVerMinor = (DWORD)(HIBYTE(LOWORD(Ver)));

   CONSOLE_SCREEN_BUFFER_INFO csbi;
   GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
   nowait = *(unsigned*)&csbi.dwCursorPosition;

   SetThreadAffinityMask(GetCurrentThread(), 1);

   SetConsoleCtrlHandler(ConsoleHandler, TRUE);

   color(CONSCLR_TITLE);
   printf("UnrealSpeccy %s by SMT, %s\n", VERS_STRING_, __DATE__);
   printf("Integrated YM2203 version 1.4A by Tatsuyuki Satoh, Jarek Burczynski, Alone Coder\n"); //Dexus
#ifdef __ICL
   printf("Intel C++ Compiler: %d.%02d\n", __ICL/100, __ICL % 100);
#endif
   color();
   // http://sourceforge.net/projects/unrealspeccy/
   // http://alonecoder.narod.ru/
   // http://dlcorp.ucoz.ru/forum/22
   printf(" *** new versions & sources -> http://dlcorp.nedopc.com/viewforum.php?f=8 ***\n");

#ifndef DEBUG
   SetUnhandledExceptionFilter(filter);
#endif

   _set_error_mode(_OUT_TO_MSGBOX);
   load_spec_colors();
   init_all(argc-1, argv+1);
//   applyconfig();
   sound_play();
   color();

   mainloop(Exit);
   return 0;
}

COMPUTER::COMPUTER()
{
    for(unsigned i = 0; i < 4; i++) // [vv] Äëÿ óäîáñòâà îòëàäêè
    {
        fdd[i].Id = u8(i);
    }
}