diff --git a/Unused/test_menu.cpp b/Unused/test_menu.cpp deleted file mode 100644 index dbb3c05f8..000000000 --- a/Unused/test_menu.cpp +++ /dev/null @@ -1,2201 +0,0 @@ -//HEADER_GOES_HERE - -#include "../types.h" - - - -// 20 frames per second -// if increased for smoother mouse movement, the animation rate has to be throttled -#define MENU_FRAME_RATE 20 - - - -char chr_name_str[16]; -int playmovie = 0; - -// prevent calling from the DLL -void __cdecl UiDestroy() { return; } -BOOL __stdcall UiTitleDialog(int a1) { return 0; } -void __cdecl UiInitialize() { return ; } -BOOL __stdcall UiCopyProtError(int *pdwResult) { return 0; } -void __stdcall UiAppActivate(BOOL bActive) { return; } -BOOL __fastcall UiValidPlayerName(char *name) { return 0; } /* check __stdcall */ -BOOL __stdcall UiSelHeroMultDialog(BOOL (__stdcall *fninfo)(BOOL (__stdcall *fninfofunc)(_uiheroinfo *)), BOOL (__stdcall *fncreate)(_uiheroinfo *), BOOL (__stdcall *fnremove)(_uiheroinfo *), BOOL (__stdcall *fnstats)(int, _uidefaultstats *), int *dlgresult, int *a6, char *name) { return 0; } -BOOL __stdcall UiSelHeroSingDialog(BOOL (__stdcall *fninfo)(BOOL (__stdcall *fninfofunc)(_uiheroinfo *)), BOOL (__stdcall *fncreate)(_uiheroinfo *), BOOL (__stdcall *fnremove)(_uiheroinfo *), BOOL (__stdcall *fnstats)(int, _uidefaultstats *), int *dlgresult, char *name, int *difficulty) { return 0; } -BOOL __stdcall UiCreditsDialog(int a1) { return 0; } -BOOL __stdcall UiMainMenuDialog(char *name, int *pdwResult, void (__stdcall *fnSound)(char *file), int a4) { return 0; } -int __stdcall UiProgressDialog(HWND window, char *msg, int a3, void *fnfunc, int a5) { return 0; } -int __cdecl UiProfileGetString() { return 0; } -void __cdecl UiProfileCallback() { return ; } -void __cdecl UiProfileDraw() { return ; } -BOOL __stdcall UiCategoryCallback(int a1, int a2, int a3, int a4, int a5, _DWORD *a6, _DWORD *a7) { return 0; } -BOOL __stdcall UiGetDataCallback(int game_type, int data_code, void *a3, int a4, int a5) { return 0; } -BOOL __stdcall UiAuthCallback(int a1, char *a2, char *a3, char a4, char *a5, LPSTR lpBuffer, int cchBufferMax) { return 0; } -BOOL __stdcall UiSoundCallback(int a1, int type, int a3) { return 0; } -void __stdcall UiMessageBoxCallback(HWND hWnd, char *lpText, LPCSTR lpCaption, UINT uType) { return ; } -BOOL __stdcall UiDrawDescCallback(int game_type, COLORREF color, LPCSTR lpString, char *a4, int a5, UINT align, time_t a7, HDC *a8) { return 0; } -BOOL __stdcall UiCreateGameCallback(int a1, int a2, int a3, int a4, int a5, int a6) { return 0; } -BOOL __stdcall UiArtCallback(int game_type, unsigned int art_code, PALETTEENTRY *pPalette, void *pBuffer, DWORD dwBuffersize, DWORD *pdwWidth, DWORD *pdwHeight, DWORD *pdwBpp) { return 0; } -int __stdcall UiSelectGame(int a1, _SNETPROGRAMDATA *client_info, _SNETPLAYERDATA *user_info, _SNETUIDATA *ui_info, _SNETVERSIONDATA *file_info, int *a6) { return 0; } -int __stdcall UiSelectProvider(int a1, _SNETPROGRAMDATA *client_info, _SNETPLAYERDATA *user_info, _SNETUIDATA *ui_info, _SNETVERSIONDATA *file_info, int *type) { return 0; } -BOOL __stdcall UiCreatePlayerDescription(_uiheroinfo *info, int mode, char *desc) { return 0; } -void __stdcall UiSetupPlayerInfo(char *infostr, _uiheroinfo *pInfo, int type) { return ; } -void __stdcall UiCreateGameCriteria(_uiheroinfo *pInfo, char *str) { return ; } -BOOL __stdcall UiGetDefaultStats(int pclass, _uidefaultstats *pStats) { return 0; } -BOOL __stdcall UiBetaDisclaimer(int a1) { return 0; } - -/* -* -* custom palettes -* diablo happens to lack my three favorite colors :P -* -* overwrite palette array to use, and shift the string color -* -* -*/ -/* - - -BYTE GreenPal[8][3] = -{ - { 0xBE, 0xFD, 0x9F }, - { 0x99, 0xF9, 0x6A }, - { 0x75, 0xF4, 0x35 }, - { 0x50, 0xF0, 0x00 }, - { 0x3F, 0xBC, 0x00 }, - { 0x2D, 0x87, 0x00 }, - { 0x1C, 0x53, 0x00 }, - { 0x0A, 0x1E, 0x00 } -}; - -BYTE PinkPal[8][3] = -{ - { 0xFD, 0x9F, 0xBE }, - { 0xF9, 0x6A, 0x99 }, - { 0xF4, 0x35, 0x75 }, - { 0xF0, 0x00, 0x50 }, - { 0xBC, 0x00, 0x3F }, - { 0x87, 0x00, 0x2D }, - { 0x53, 0x00, 0x1C }, - { 0x1E, 0x00, 0x0A } -}; - -BYTE PurplePal[8][3] = -{ - { 0xBE, 0x9F, 0xDD }, - { 0x99, 0x6A, 0xD9 }, - { 0x75, 0x35, 0xD4 }, - { 0x50, 0x00, 0xD0 }, - { 0x3F, 0x00, 0x9C }, - { 0x2D, 0x00, 0x67 }, - { 0x1C, 0x00, 0x33 }, - { 0x0A, 0x00, 0x0E } -};*/ - -int __fastcall TEMP_diablo_init_menu(int a1, int bSinglePlayer) -{ - int v2; // esi - int v3; // edi - int v4; // ecx - int pfExitProgram; // [esp+Ch] [ebp-4h] - - v2 = bSinglePlayer; - v3 = a1; - byte_678640 = 1; - while ( 1 ) - { - pfExitProgram = 0; - gbLoadGame = FALSE; - if ( !NetInit(v2, &pfExitProgram) ) - break; - byte_678640 = 0; - if ( v3 ) - { - InitLevels(); - InitQuests(); - InitPortals(); - InitDungMsgs(myplr); - v4 = WM_DIABLOADGAME; - } - else - { - v4 = WM_DIABNEWGAME; - } - run_game_loop(v4); - NetClose(); - pfile_create_player_description(0, 0); - if ( !gbRunGameResult ) - goto LABEL_11; - break; - } - gbRunGameResult = pfExitProgram == 0; -LABEL_11: - SNetDestroy(); - return gbRunGameResult; -} - -/////////////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////////////// - -int gdwLogoWidth; -int gdwLogoHeight; -void *pPcxLogoImage; - -int gdwFontWidth; -int gdwFontHeight; -void *pPcxFontImage; -unsigned char *pFont; - -int gdwFont2Width; -int gdwFont2Height; -void *pPcxFont2Image; -unsigned char *pFont2; - -int gdwFont3Width; -int gdwFont3Height; -void *pPcxFont3Image; -unsigned char *pFont3; - -int gdwTitleWidth; -int gdwTitleHeight; -void *pPcxTitleImage; - -int gdwHeroWidth; -int gdwHeroHeight; -void *pPcxHeroImage; - -int gdwSHeroWidth; -int gdwSHeroHeight; -void *pPcxSHeroImage; - -int gdwCreditsWidth; -int gdwCreditsHeight; -void *pPcxCreditsImage; - -int gdwCursorWidth; -int gdwCursorHeight; -void *pPcxCursorImage; - -/////////////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////////////// -//////// PCX HELPER FUNCTIONS ///////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////////////// -int bloaded = 0; - -PALETTEENTRY pcxPal[256]; - -void __fastcall LoadPalInMem(PALETTEENTRY *pPal) -{ - int i; // eax - - for(i = 0; i < 256; i++) - { - orig_palette[i].peFlags = 0; - orig_palette[i].peRed = pPal[i].peRed; - orig_palette[i].peGreen = pPal[i].peGreen; - orig_palette[i].peBlue = pPal[i].peBlue; - } -} - -BOOL __cdecl LoadArtImage(char *pszFile, void **pBuffer, int frames, DWORD *data) -{ - DWORD width; // [esp+44h] [ebp-8h] - DWORD height; // [esp+48h] [ebp-4h] MAPDST - - *pBuffer = NULL; - - if ( !SBmpLoadImage(pszFile, 0, 0, 0, &width, &height, 0) ) - return 0; - *pBuffer = SMemAlloc(height * width, "U:\\DiabloUI\\Ui\\local.cpp", 88); - if ( !SBmpLoadImage(pszFile, NULL, *pBuffer, height * width, 0, 0, 0) ) - return 0; - if ( pBuffer && data ) - { - data[0] = width; - data[1] = height / frames; - } - return 1; -} -/* - - -// Test sample.pcx to see if it is a PCX -SDL_RWops *rwop; -rwop=SDL_RWFromFile("sample.pcx", "rb"); -if(IMG_isPCX(rwop)) -printf("sample.pcx is a PCX file.\n"); -else -printf("sample.pcx is not a PCX file, or PCX support is not available.\n"); - - - - - - -*/ -BOOL __cdecl LoadArtWithPal(char *pszFile, void **pBuffer, int frames, DWORD *data) -{ - DWORD width; // [esp+44h] [ebp-8h] - DWORD height; // [esp+48h] [ebp-4h] MAPDST - - *pBuffer = NULL; - - if ( !SBmpLoadImage(pszFile, 0, 0, 0, &width, &height, 0) ) - return 0; - *pBuffer = SMemAlloc(height * width, "U:\\DiabloUI\\Ui\\local.cpp", 88); - if ( !SBmpLoadImage(pszFile, pcxPal, *pBuffer, height * width, 0, 0, 0) ) - return 0; - - LoadPalInMem(pcxPal); - lpDDPalette->SetEntries(0, 0, 256, orig_palette); - - if ( pBuffer && data ) - { - data[0] = width; - data[1] = height / frames; - } - return 1; -} - - - -void DrawArtImage(int SX, int SY, int SW, int SH, int nFrame, void *pBuffer) -{ - BYTE *src = (BYTE *)pBuffer+(SW * SH * nFrame); - BYTE *dst = (BYTE *)&gpBuffer->row[SY].pixels[SX]; - - for(int i = 0; i < SH; i++, src += SW, dst += 768) - { - for(int j = 0; j < SW; j++) - { - dst[j] = src[j]; - } - } -} - -void DrawArtWithMask(int SX, int SY, int SW, int SH, int nFrame, BYTE bMask, void *pBuffer) -{ - BYTE *src = (BYTE *)pBuffer+(SW * SH * nFrame); - BYTE *dst = (BYTE *)&gpBuffer->row[SY].pixels[SX]; - - for(int i = 0; i < SH; i++, src += SW, dst += 768) - { - for(int j = 0; j < SW; j++) - { - if(src[j] != bMask) - dst[j] = src[j]; - } - } -} - -int __fastcall GetPCXFontWidth(char *str, BYTE *font) -{ - int len; // eax - unsigned __int8 i; // bl - BYTE chr; // bl - int width; // esi - - len = 0; - for ( i = *str; *str; i = *str ) - { - chr = font[i + 2]; - if ( chr ) - width = chr; - else - width = *font; - len += width; - ++str; - } - return len; -} - -void DrawPCXString(int x, int y, int w, int h, char *str, BYTE *font, void *pBuff) -{ - int i; - int len = 0; - for(i = 0; i < strlen(str); i++) - { - DrawArtWithMask(x+len, y, w, h, str[i], 32, pBuff); - //DrawPCX(x+len, y, str[i], 32); - if(font[str[i]+2]) - len += font[str[i]+2]; - else - len += *font; - } -} - -void ShiftStrColor(int w, int h, int frames, void *pBuff, BYTE bMask, BYTE bShift, BOOL b4BPP) -{ - BYTE *dst = (BYTE*)pBuff; - for(int i = 0; i < w*h*frames; i++) - { - if(*dst != bMask) { - if(b4BPP) { - BYTE c = *dst & 0xF; - c /= 2; - *dst -= c+1; - } - *dst += bShift; - } - dst++; - } -} -//////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////// - - - - -int menu_music_track_id = 5; // idb -LRESULT CALLBACK GM_Title(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); -void __cdecl mainmenu_refresh_music() -{ - int v0; // eax - - music_start((GetTickCount() % 5)+1); - v0 = menu_music_track_id; - do - { - if ( ++v0 == 6 ) - v0 = 0; - } - while ( !v0 || v0 == 1 ); - menu_music_track_id = v0; -} - -void __stdcall mainmenu_create_hero(char *a1, char *a2) -{ - // char *v2; // [esp-14h] [ebp-14h] - - //if ( UiValidPlayerName(a1) ) /* v2 */ - pfile_create_save_file(a1, a2); -} - -int __stdcall mainmenu_select_hero_dialog(const struct _SNETPROGRAMDATA *u1,const struct _SNETPLAYERDATA *u2,const struct _SNETUIDATA *u3,const struct _SNETVERSIONDATA *u4,DWORD mode,char *cname, DWORD clen, char *cdesc, DWORD cdlen,BOOL *multi) -{ - int v10; // eax - int a6; // [esp+8h] [ebp-8h] - int a5; // [esp+Ch] [ebp-4h] - - a6 = 1; - a5 = 0; - // if ( gbMaxPlayers == 1 ) - // { - // if ( !UiSelHeroSingDialog( - // pfile_ui_set_hero_infos, - // pfile_ui_save_create, - // pfile_delete_save, - // pfile_ui_set_class_stats, - // &a5, - // chr_name_str, - // &gnDifficulty) ) - // TermMsg("Unable to display SelHeroSing"); - // if ( a5 == 2 ) - // { - // gbLoadGame = TRUE; - // goto LABEL_6; - // } - // gbLoadGame = FALSE; - // } - // else if ( !UiSelHeroMultDialog( - // pfile_ui_set_hero_infos, - // pfile_ui_save_create, - // pfile_delete_save, - // pfile_ui_set_class_stats, - // &a5, - // &a6, - // chr_name_str) ) - // { - // TermMsg("Can't load multiplayer dialog"); - // } - if ( a5 == 4 ) - { - SErrSetLastError(1223); - return 0; - } -LABEL_6: - pfile_create_player_description(cdesc, cdlen); - if ( multi ) - { - if ( mode == 'BNET' ) - v10 = a6 || !plr[myplr].pBattleNet; - else - v10 = a6; - *multi = v10; - } - if ( cname ) - { - if ( clen ) - SStrCopy(cname, chr_name_str, clen); - } - return 1; -} - -/* -"Gendata\\Titlgray.CEL" -"Gendata\\Titltext.CEL" -"Gendata\\Pentitle.CEL" -"Gendata\\Titlqtxt.CEL" -"Gendata\\Diabfr.CEL" -"Gendata\\Title.pal" -*/ -_uiheroinfo heroarray[10]; -int fuckcount = 0; -char gb_title_option; -unsigned char is_typing_plr_name; -unsigned char title_cel_is_loaded; -int diablogo_cel_frame; -void *pTitlgrayCel_sgpBackCel; -void *pTitltextCel; -void *pPentitleCel; -void *pTitlqtxtCel; -void *pPentSmall; -void *pDiabfrCel; -void *p_reserved_title; -//void *pPlayerGFX; -int gb_Lfont_str_len; -char byte_5DE90C; //unused -int gb_Lfont_pix_width; -int the_pcx_frame; - -int sgbMenuOption; -int gbProcessFrame; -int new_timer_2_int; - -int gNewMSG; -int gbProcType; -int some_usless_adder_int = 0; -/* -void __cdecl load_title_game00() -{ - char str[52]; // [esp+Ch] [ebp-34h] - - some_save_flag = 0; - sprintf(gszSaveFilePath, "%s%s", gszSavePath64_not_long, "\\Game00.sav"); - _searchenv(gszSaveFilePath, 0, str); - if ( str[0] ) - some_save_flag |= 0x80u; -} -*/ - -void __fastcall print_title_str_large(int a1, int a2, char *a3) -{ - int screen_y; // [esp+Ch] [ebp-14h] - int screen_x; // [esp+10h] [ebp-10h] - char v5; // [esp+14h] [ebp-Ch] - signed int i; // [esp+18h] [ebp-8h] - signed int v7; // [esp+1Ch] [ebp-4h] - - screen_y = a2; - screen_x = a1; - v7 = strlen(a3); - for ( i = 0; v7 > i; ++i ) - { - v5 = lfontframe[fontidx[a3[i]]]; - if ( v5 ) - CelDecodeOnly(screen_x, screen_y, pTitltextCel, v5, 46); - screen_x += lfontkern[v5] + 2; - } - gb_Lfont_pix_width = screen_x; - gb_Lfont_str_len = v7; -} - -void __fastcall print_title_str_small(int a1, int a2, char *a3) -{ - int screen_y; // [esp+Ch] [ebp-14h] - int screen_x; // [esp+10h] [ebp-10h] - char v5; // [esp+14h] [ebp-Ch] - signed int i; // [esp+18h] [ebp-8h] - signed int v7; // [esp+1Ch] [ebp-4h] - - screen_y = a2; - screen_x = a1; - v7 = strlen(a3); - for ( i = 0; i < v7; ++i ) - { - v5 = mfontframe[fontidx[a3[i]]]; - if ( v5 ) - CelDecodeOnly(screen_x, screen_y, pTitlqtxtCel, v5, 22); - screen_x += mfontkern[v5] + 2; - } -} - -int __fastcall gmenu_get_lfont2(char *pItem) -{ - char *v2; // eax - int i; // edx - unsigned char v4; // cl - - v2 = pItem; - for ( i = 0; ; i += lfontkern[lfontframe[fontidx[v4]]] + 2 ) - { - v4 = *v2; - if ( !*v2 ) - break; - ++v2; - } - return i - 2; -} -int thehero = 0; -int __fastcall gmenu_get_sfont2(char *pItem) -{ - char *v2; // eax - int i; // edx - unsigned char v4; // cl - - v2 = pItem; - for ( i = 0; ; i += fontkern[fontframe[fontidx[v4]]] + 2 ) - { - v4 = *v2; - if ( !*v2 ) - break; - ++v2; - } - return i - 2; -} -int thefucker = 1; -int maxheroes = 0; -void __cdecl LoadNames(int fuckthem) -{ - int item_basex[3]; // [esp+Ch] [ebp-48h] - int y; // [esp+18h] [ebp-3Ch] - int i; // [esp+1Ch] [ebp-38h] - int x; // [esp+20h] [ebp-34h] - char strtbl[5][16]; // [esp+24h] [ebp-30h] - char pclass[32]; - if(!fuckthem) { - ClearScreenBuffer(); - //CelDecodeOnly(64, 639, pTitlgrayCel_sgpBackCel, 1, 640); - - } - //DrawArtImage(0, 0, gdwTitleWidth, gdwTitleHeight, 0, pPcxTitleImage); - DrawArtImage(0, 0, gdwSHeroWidth, gdwSHeroHeight, 0, pPcxSHeroImage); - DrawArtWithMask(320-(gdwLogoWidth/2), 0, gdwLogoWidth, gdwLogoHeight, the_pcx_frame, 250, pPcxLogoImage); - // if ( demo_mode ) - // strcpy(tempstr, "Pre-release Demo"); - // else -// strcpy(tempstr, "V1.0"); -// print_title_str_small(80, 624, tempstr); - - bool empty = 0; - //CelDecodeOnly(408, 600, pSTextBoxCels, 1, 271); - for ( i = 0; i < 10; ++i ) - { - if(heroarray[i].name) { - if(((!fuckthem && sgdwProgress == i) || (fuckthem && i == thehero)) && heroarray[i].level) - { - DrawArtImage(30, 211, gdwHeroWidth, gdwHeroHeight, heroarray[i].heroclass, pPcxHeroImage); - - int add_this_to_the_ypos = 320; - sprintf(tempstr, " Level: %i", heroarray[i].level); - DrawPCXString(46, add_this_to_the_ypos, gdwFont3Width, gdwFont3Height, tempstr, pFont3, pPcxFont3Image); - add_this_to_the_ypos += pFont3[1]*2; - sprintf(tempstr, " Strength: %i", heroarray[i].strength); - DrawPCXString(50, add_this_to_the_ypos, gdwFont3Width, gdwFont3Height, tempstr, pFont3, pPcxFont3Image); - add_this_to_the_ypos += pFont3[1]; - sprintf(tempstr, " Magic: %i", heroarray[i].magic); - DrawPCXString(52, add_this_to_the_ypos, gdwFont3Width, gdwFont3Height, tempstr, pFont3, pPcxFont3Image); - add_this_to_the_ypos += pFont3[1]; - sprintf(tempstr, " Dexterity: %i", heroarray[i].dexterity); - DrawPCXString(50, add_this_to_the_ypos, gdwFont3Width, gdwFont3Height, tempstr, pFont3, pPcxFont3Image); - add_this_to_the_ypos += pFont3[1]; - sprintf(tempstr, " Vitality: %i", heroarray[i].vitality); - DrawPCXString(50, add_this_to_the_ypos, gdwFont3Width, gdwFont3Height, tempstr, pFont3, pPcxFont3Image); - } - - sprintf(tempstr, "%s", heroarray[i].name); - char col = COL_GOLD; - if(!heroarray[i].level && !empty) { - if(i == sgdwProgress) DrawArtImage(30, 211, gdwHeroWidth, gdwHeroHeight, 3, pPcxHeroImage); - strcpy(tempstr, "New Hero"); - maxheroes = i; - empty = 1; - col = COL_RED; - } - x = 424 - (GetPCXFontWidth(tempstr, pFont2) / 2); - y = pFont2[1] * i + 256; - - DrawPCXString(x, y, gdwFont2Width, gdwFont2Height, tempstr, pFont2, pPcxFont2Image); - y += 160+20; - x = 400; - - if(fuckthem && i == thehero) - { - CelDecodeOnly(x-20, y, pPentSmall, fuckthem ? 1 : progress_id, 12); - CelDecodeOnly(x+175, y, pPentSmall, fuckthem ? 1 : progress_id, 12); - } - else if ( !fuckthem && i == sgdwProgress ) - { - CelDecodeOnly(x-20, y, pPentSmall, fuckthem ? 1 : progress_id, 12); - CelDecodeOnly(x+175, y, pPentSmall, fuckthem ? 1 : progress_id, 12); - } - } - } -} - -void __cdecl paint_diff_screen() -{ - int item_basex[3]; // [esp+Ch] [ebp-48h] - int y; // [esp+18h] [ebp-3Ch] - int i; // [esp+1Ch] [ebp-38h] - int x; // [esp+20h] [ebp-34h] - char strtbl[5][16]; // [esp+24h] [ebp-30h] - - ClearScreenBuffer(); - LoadNames(1); - strcpy(strtbl[4], "Select Difficulty");//&hero_names[0*32]); - strcpy(strtbl[0], " Arena Match"); - strcpy(strtbl[1], "Normal"); - strcpy(strtbl[2], "Nightmare"); - strcpy(strtbl[3], "Hell"); - - item_basex[0] = 86; - item_basex[1] = 88; - item_basex[2] = 113; - item_basex[3] = 158; - item_basex[4] = 113; - //CelDecodeOnly(64, 639, pTitlgrayCel_sgpBackCel, 1, 640); - //CelDecodeOnly(236, 282, pDiabfrCel, 1, 296);//CelDecodeOnly(64, 377, pDiabfrCel, diablogo_cel_frame, 640); - // if ( demo_mode ) - // strcpy(tempstr, "Pre-release Demo"); - // else - strcpy(tempstr, "V1.0"); - print_title_str_small(80, 624, tempstr); - - x = 100; - y = 45 * (0) + 340; - ADD_PlrStringXY(x, y-160, x+(gmenu_get_sfont2(strtbl[4])), strtbl[4], COL_GOLD); - - for ( i = 0; i < 4; ++i ) - { - x = 100; - y = 18 * (i+1) + 350; - ADD_PlrStringXY(x, y-160, x+(gmenu_get_sfont2(strtbl[4])), strtbl[i], i == 0 ? COL_BLUE : COL_WHITE); - //print_title_str_small(x, y, strtbl[i]); - if ( i == sgdwProgress ) - { - CelDecodeOnly(172-10, y + 1, pPentSmall, progress_id, 12); - CelDecodeOnly(300+10, y + 1, pPentSmall, progress_id, 12); - //CelDecodeOnly(155, y + 1, pPentitleCel, progress_id, 48); - //CelDecodeOnly(563, y + 1, pPentitleCel, progress_id, 48); - } - } - if(!sgdwProgress) { - ADD_PlrStringXY(0, 450-160, 350, "Must complete Hell to unlock", COL_RED); - ADD_PlrStringXY(0, 462-160, 350, "Fight endless hoards of demons", COL_WHITE); - ADD_PlrStringXY(0, 474-160, 350, "until death or time runs out!", COL_WHITE); - } - //CelDrawHdrOnly(164, 364, (char *)pCursCels, some_usless_adder_int+12, InvItemWidth[some_usless_adder_int+12], 0, 8); - //CelDecodeOnly(64, 64, pCursCels, 11, 28); -} - -void __cdecl paint_title_screen() -{ - int item_basex[3]; // [esp+Ch] [ebp-48h] - int y; // [esp+18h] [ebp-3Ch] - int i; // [esp+1Ch] [ebp-38h] - int x; // [esp+20h] [ebp-34h] - char strtbl[5][16]; // [esp+24h] [ebp-30h] - - ClearScreenBuffer(); - //DrawPCXString(x, y, "fucker"); - DrawArtImage(0, 0, gdwTitleWidth, gdwTitleHeight, 0, pPcxTitleImage); - DrawArtWithMask(320-(gdwLogoWidth/2), 0, gdwLogoWidth, gdwLogoHeight, the_pcx_frame, 250, pPcxLogoImage); - strcpy(strtbl[0], "Single Player");//&hero_names[0*32]); - strcpy(strtbl[1], "Multi Player"); - strcpy(strtbl[2], "Replay Intro"); - strcpy(strtbl[3], "Show Credits"); - strcpy(strtbl[4], "Exit Diablo"); - - item_basex[0] = 86; - item_basex[1] = 88; - item_basex[2] = 113; - item_basex[3] = 158; - item_basex[4] = 113; - //CelDecodeOnly(64, 639, pTitlgrayCel_sgpBackCel, 1, 640); - //CelDecodeOnly(236, 282, pDiabfrCel, 1, 296);//CelDecodeOnly(64, 377, pDiabfrCel, diablogo_cel_frame, 640); - - print_title_str_small(80, 624, gszProductName); - //print_title_str_small(120, 630, "Copyright (C) 1996 Blizzard Entertainment"); - //ADD_PlrStringXY(0, 600-160, 640, "Copyright (C) 1996 Blizzard Entertainment", 0); - for ( i = 0; i < 5; ++i ) - { - //x = 384 - (gmenu_get_lfont2(strtbl[i]) >> 1); - x = 320 - (GetPCXFontWidth(strtbl[i], pFont) / 2) - 1; - y = pFont[1] * i + 192; // 42 large font, 30 or 16 - //print_title_str_large(x, y, strtbl[i]); - DrawPCXString(x, y, gdwFontWidth, gdwFontHeight, strtbl[i], pFont, pPcxFontImage); - if ( i == sgdwProgress ) - { - CelDecodeOnly(155, y + 208, pPentitleCel, progress_id, 48); - CelDecodeOnly(563, y + 208, pPentitleCel, progress_id, 48); - //DrawPCX(155-64, (y-160-45) + 1, progress_id-1); - //DrawPCX(563-64, (y-160-45) + 1, progress_id-1); - } - } - //CelDrawHdrOnly(164, 364, (char *)pCursCels, some_usless_adder_int+12, InvItemWidth[some_usless_adder_int+12], 0, 8); - //CelDecodeOnly(64, 64, pCursCels, 11, 28); - -} - -char *the_long_ass_credits[] = -{ - "","","","","","","","","","","","", - "$-- Devilution --", - "Reversed by Andi \"GalaXyHaXz\"", - "", - "$-- Meet the Team --", - "seritools", - "mewmew", - "nomdenom", - "AJenbo", - "ApertureSecurity", - "", - "$-- Special Thanks --", - "The Sanctuary preservation project", - "Jarulf's guide to the Devil himself", - "", - "", - "$...The Devil is in the details", - "", - "", - "$Game Design", - "Blizzard North", - "", - "$Senior Designers", - "Erich Schaefer, David Brevik", - "", - "$Additional Design", - "Max Schaefer, Eric Sexton, Kenneth Williams", - "", - "$Lead Programmer", - "David Brevik", - "", - "$Senior Programmers", - "Richard Seis, Doron Gartner,", - "Patrick Wyatt, Mike O'Brien", - "", - "$Programming", - "Peter Brevik, Robin van der Wel, Jon Morin", - "", - "$Special Guest Programmers", - "Collin Murray, Frank Pearce", - "", - "$Battle.net Programming", - "Mike O'Brien, Mike Morhaime, Dan Liebgold", - "", - "$Serial Communications Programming", - "Jeff Strain, Mike O'Brien", - "", - "$Installer Programming", - "Bob Fitch, Patrick Wyatt", - "", - "$Art Directors", - "Erich Schaefer, Samwise Didier", - "", - "$Artwork", - "Michio Okamura, Eric Sexton, Ben Haas, Patrick Tougas,", - "Kelly Johnson, Erich Schaefer, Max Schaefer, Hugh Tom", - "Byrne, Roman Kenney, Samwise Didier, Dave Berggren,", - "Micky Neilson, Eric Flannum, Justin Thavirat, Brian", - "Sousa, Stu Rose, Nick Carpenter, Joeyray Hall", - "", - "$Technical Artwork", - "Christopher Root, Mark Sutherland,", - "Robert Djordjevich, Jeffrey Vaughn", - "", - "$Cinematic Art Directors", - "Duane Stinnett, Matt Samia", - "", - "$3D Cinematic Artwork", - "Duane Stinnett, Matt Samia, Rob McNaughton,", - "Eric Flannum, Dave Pursley, Micky Neilson,", - "Maxx Marshall, Trevor Jacobs, Brian Sousa,", - "Samwise Didier, Ron Smorynski, Ben Haas, Patrick Tougas", - "", - "$Cinematic Technical Artwork", - "Joeyray Hall ", - "", - "$Executive Producer", - "Allen Adham", - "", - "$Producer", - "Bill Roper", - "", - "$Associate Producer", - "James Phinney", - "", - "$Diablo Strike Team", - "Allen Adham, Ron Millar, Mike O'Brien,", - "James Phinney, Bill Roper, Patrick Wyatt", - "", - "$Music", - "Matt Uelmen", - "", - "$Sound Design", - "Matt Uelmen, Glenn Stafford", - "", - "$Cinematic Music & Sound", - "Glenn Stafford, Matt Uelmen", - "", - "$Voice Production, Direction & Casting", - "Mark Schwarz, Glenn Stafford, Bill Roper", - "", - "$Script & Story", - "Erich Schaefer, Eric Sexton,", - "Chris Metzen, Bill Roper", - "", - "$Voice Editing", - "Glenn Stafford", - "", - "$Voices", - "Michael Haley, Glynnis Talken, Michael Gough,", - "Paul Eiding, Lani Minella, Steve Brodie, Bill Roper,", - "Mark Schwarz, Glenn Stafford, Chris Metzen, Max Schaefer", - "", - "$Recording Engineer", - "Robert Koenigsberg", - "", - "$Manual Design & Layout", - "Peter Underwood, Jeffrey Vaughn,", - "Chris Metzen, Bill Roper", - "", - "$Manual Artwork", - "Samwise Didier, Chris Metzen,", - "Roman Kenney, Maxx Marshall", - "", - "$Provisional Director of QA (Lead Tester)", - "Shane Dabiri", - "", - "$QA Assault Team (Testers)", - "Christopher Cross, Mike Givens, Dave Hale,", - "Brian \"Doc\" Love, Hung Nguyen, Dean Shipley,", - "Chris Sigaty, Ian Welke, Jamie Wiggs", - "", - "$QA Special Ops Team (Compatibility Testers)", - "Adam Maxwell, Russell \"Rug\" Miller", - "", - "$QA Artillery Support (Additional Testers) ", - "Rich Alcazar, Mike Jones, Rev. Dan Moore, Matt Morris,", - "Mark Pfeiffer, Harish \"Pepe the Enforcer\" Rao, Chris Millar", - "", - "$QA Counterintelligence", - "Alan Dabiri, Jesse McReynolds, Walter Takata", - "", - "$Order of Network Information Services", - "Robert Bridenbecker, Jason \"Brother Shaggy\" Schmit,", - "Jamie \"Brother Gug\" Steigerwald, Richard Seis ", - "", - "$Customer Support", - "John Schwartz, Vic Larson, Chad Chaudry, Mick Yanko,", - "Brandon Riseling, Kirk Mahony, Tony Hardy, Richard", - "Amtower, Collin Smith, Andrew Edwards, Roger Eberhart", - "", - "$Sales", - "Jorge Rivero, Rob Beatie", - "", - "$Dunsel", - "Alan Dabiri", - "", - "$Mr. Dabiri's Background Vocalists", - "Karin Colenzo, Christina Cade,", - "Kim Farrington, Melissa Edwards", - "", - "$Public Relations", - "Linda Duttenhaver, Susan Wooley", - "", - "$Marketing", - "John Patrick, Steve Huot, Neal Hubbard, Kathy Carter", - "", - "$International Sales", - "Ralph Becker, Chris Yoshimura", - "", - "$U.S. Sales", - "Todd Coyle, Danny Kearns", - "", - "$Manufacturing", - "John Goodman, Tom Bryan", - "", - "$Legal & Business", - "Paula Duffy, Eric Roeder, Paul Sams, Kenneth Williams", - "", - "$Special Thanks To", - "Primenet, Earthlink, AOL, Compuserve, ATI, Matrox, STB, ", - "Creative Labs, Logitech, U.S. Robotics, Gravis, Cyrix", - "", - "$Thanks To", - "Ian Colquhoun, Rod Shean, Brian Fitzgerald, Sharon Schafer, Todd ", - "Schafer, Richard and Sandra Schaefer, Rick Bowles, Greg Bogden, ", - "Cindy Sievert, Brad Mason, Chuck Goldman, Karin Colenzo, Wendy ", - "Brevik, Jennie Brevik, Hanna Carroll, Katie Newell, Karen Weiss, ", - "Kurt Beaver, Stan McDonald, Brian Sexton, Michael Wan, Megan ", - "Williams, Jessica Gensley, Beth Ann Parks, Brian Piltin, Johnathan ", - "Root, Brett Supernaw, Sabeer Bhatia, Mark Rearick, Brad Mason, ", - "Diane Kodama, Bernadette Sexton, Barbara Uhlmann, Patricia", - "McDonald, Kris Kelley, Alissa Vaage, Denise Hernandez, Paula ", - "White, Rachel Marie Hawley, Laura Gaber, Isaac Matarasso,", - "Susan Stafford, Gretchen Witte, Jason Sailor, Eufemia Palomino, ", - "Nathalie Didier, Nicole Welke, Dawn Caddel, Anna-Marcelle ", - "Okamura, Amber Okamura, Megan Okamura Tracey McNaughton, ", - "Trisha Ann Ochoa, Annie Strain, Dr. Gregory T. Street, Ray the Soda ", - "Guy, Sam Raimi, A. Guinness Brewing Co., John Woo, Chow Yun Fat, ", - "Jackie Chan,Proposition 215, Rumiko Takahashi, Bunchy & Mason, ", - "The Friends of Stan, The Zoo Crew, Team Hamro, Brazil 2001, RUSH, ", - "Cornholio, THE BROS., Dar, Emeril Lagasse, Tom Waits, Ice-Cube, ", - "The Strike Team Deflectors, Tony Levin, Big Jim and the Twins, ", - "Jag`rmeister, The Megasphere, Condor, The Allower, The Sunday ", - "Night Group, Gravitar, Steinway Pianos, Round Table Pizza, The Poxy ", - "Boggards, Urban Mystic & Co., Caffeine, Hunter Rose, Marly ", - "mediums in the box, sweet Poteen, Dave Scarpitti, TheByter, Bim ", - "Man, Krissann for color, Patty at Avalon Tattoo, James, Whaleboy, ", - "Dunsel Training Institute, monkeys, Dob Bole, Rootes Group, Porshe, ", - "Bongo, Scarlett, Apollo, The House of Mediocrity, Amelias, The King, ", - "Saag and all the folks at Davidson", - "", - "$In memory of", - "Lawrence and Barbara Williams", - "David A. Hargrave", - "Tony \"Xatre\" Collin", - "Thomas H Sexton", - "", - "$Very Special Thanks to", - "Bob and Jan Davidson", - "Walter Forbes", - "", - "$The Ring of One Thousand", - "Andrew Abernathy, Christopher Abramo, David Adams, David ", - "Adcox, Marko Agterberg, Cory Aiken, Judah Altaras, John ", - "Alvarez, Jose Alvarez, Richard Amable, Alexander Amaral, ", - "Scott Amis, Vincent Amoroso, Mark An, David Andersen, Jason ", - "Andrew Abernathy, Christopher Abramo, David Adams, David ", - "Adcox, Marko Agterberg, Cory Aiken, Judah Altaras, John ", - "Alvarez, Jose Alvarez, Richard Amable, Alexander Amaral, ", - "Scott Amis, Vincent Amoroso, Mark An, David Andersen, Jason ", - "Andersen, Aaron Anderson, George Anderson, Matthew ", - "Anderson, Michael Anderson, Sean Anderson, Robert Andrade, ", - "Cerny Andre, Michael Andreev, Devin Angle, Brian Apple, ", - "Brian Arbuthnot, Billy Arden, Dorian Arnold, Andre Arsenault, ", - "Erik Asplund, Mark Assam, John Athey, Jason Attard, Jeff ", - "Atwood, Ricky Au, Scott Avery, Rand Babcock, Steve Babel, ", - "Raymond Bacalso, Ed Bachta, Steven Back, Scott Baeder, Alex ", - "Baevski, Scott Bailey, Kenneth Baird, Thomas Baker, Todd ", - "Bala, Jan Ball, Greg Baltz, Blake Baltzley, Doug Bambrick, Wes ", - "Bangerter, Paul Barfuss, Chris Barghout, Dave Barnebey, Jon ", - "Barnhart, Terje Barth, Nicole Baskin, Bernard Baylen, Ryan ", - "Bear, Phil Bedard, Todd Belcher, Chip Bell, Erez Ben-Aharon, ", - "Jonathan Bender, Nick Bennett, Ireney Berezniak, Ted Berg, ", - "Gunnar Bergem, Russell Beuker, Ed Bickford, Stephen Biles, ", - "John Billdt, Gerald Binder, John Bird, Hannah Blackerby, Tom ", - "Blackerby, Clayton Blackwell, Thomas Blake, Shawn Blaszak, ", - "Daniel Bliss, Fred Bliss, Jeff Bliss, Jon Blum, Rune Boersjoe, ", - "Andrew Boggs, Dave Boisvenu, Joe Bolt, John Bonds, Jeff ", - "Borenstein, Dorian Borin, Ed Boris, Bartholomew Botta, ", - "Michael Boutin, Michael Boyd, Charles Boyer, Mike ", - "Boyersmith, Michael Boyko, Eric Bradberry, John Brandstetter, ", - "Ryan Breding, Paul Brinkmann, Patrick Briscoe, Scott Brisko, ", - "Jeremy Britton, Adrian Broadhead, Glenn Brouwer, Joe Brown, ", - "Sebastien Brulotte, Darrell Brunsch, William Bryan, Jason ", - "Bucher, Chris Buchinger, Clayton Buckingham, John Buckles, ", - "David Bugay, Ed Bujone, Erik Burgess, Gabriel Burkett, Chris ", - "Burnes, Richard Butler, Jeffrey Bye, Dougall Campbell, Donnie ", - "Cannon, Shane Cantrell, Connor Caple, Daniel Carey, James ", - "Carlton, Michael Carmel, Mike Carpenter, Ronald Carruthers, ", - "Phil Carter, Bryce Cartmill, Eric Cartwright, Anthony Caruso, ", - "Lon Casey, Tim Caster, Aaron Chan, Otto Chan, Gene Chang, ", - "Hsiao-Lung Chang, William Chang, George Chappel, Larry ", - "Charbonneau, Troy Chase, Bruce Chen, Chun Hsien Chen, Sam ", - "Chen, Tzu-Mainn Chen, Mike Cheng, Chris Chiapusio, Damien ", - "Chiesa, Nick Chin, Nim Ching, Jonathan Chinn, Michael Chinn, ", - "Philander Chiu, Thayne Christiansen, Philip Chui, Steve ", - "Cintamani, Richard Ciordia, Colin Clark, Steve Clark, Samuel ", - "Clements, Meredith Clifton, Jeff Cohen, Dale Colton, Dax ", - "Combe, Matt Compton, Jacob Conklin, Richard Conn, Zac ", - "Cook, Tim Coolong, Gregory Coomer, Dennis Cosgrove, Kelly ", - "Couch, Andrew Coulter, Eric Coutinho, David Coutts, James ", - "Craig, John Craig, Kazial Craig, John Crawford, Marcelo ", - "Crespo, Orville Crews, Tim Cristy, Elmer Crosby III, Russell ", - "Cullison, Ryan Cupples, Andrew Dagley, Steve Dallaire, Richard ", - "Dalton, David Dandar, Pro Daulo, Rob Dautermann, Mike ", - "Davies, Kalieb Davis, Marshall Davis, Ronald Davis, Danny De ", - "Bie, Marc De Filippis, Myles Deighton, Kent Dejarnett, Anthony ", - "Delarosa, Neil Dempster, Peter Denitto, Joaquim Dentz, Scott ", - "Dewar, Anish Dhingra, Philip Dhingra, David Diaz, Stewart ", - "Dicks, Brad Dietz, Josh Dietz, Colleen Diggins, Mike Ditchburn, ", - "Eric Dittman, Allen Do, Huy Doan, Matthew Dolman, Antoine ", - "Dongois, Eamonn Donohoe, Bill Dorell, Mark Dorison, Dan ", - "Dorsett, Chris Dorsey, Jim Dose, Willis Doss, Chin Du, William ", - "Dubis, Timothy Duewell, Brandon Dunn, Andrew Durham, Don ", - "Duvall, Kevin Dvojack, Daniel Eaton, Paul Eberting, Eric ", - "Echelbarger, Lance Eddleman, Ben Eggers, David Eggum, John ", - "Ehde, Brian Eikenberry, Patrick Elven, Peter Engdahl, Philip ", - "Engdahl, Michael Ennis, Darren Eslinger, Eric Ezell, Darren ", - "Falslev, Stephen Feather, Tony Fenn, Ben Ferguson, Mike ", - "Fernandez, Gwendal Feuillet, Guy Fietz, Julian Figueroa, Dale ", - "Fillpot, Stan Finchem, Michael Finley, Nick Fisher, William ", - "Fisher, Mark Fitlin, Dave Flatt, Joel J. Flores, John Folkers, ", - "Steven Forgie, Tom Forsythe, Matthew Foster, Scott Francis, ", - "Jim Frank, Paulo Fraser, Glenn French, Kurt Frerichs, Chris ", - "Frey, Mark Friedman, Charles Friedmann, Dan Friend, Kirk ", - "Fry, Aaron Fu, Erik Gaalema, Brandon Gabbard, Phil Gagner, ", - "Tommy Gannon, David Gappmayer, Chris Garrison, Tony ", - "Garrison, David Gasca, Jeremy Gasser, Michael Geist, Michael ", - "Genereux, Daniel Genovese, Josh Gerwin, Paul Gibson, William ", - "Gilchrist, Gabriel Gils Carbo, Chad Glendenin, Ryan Glinski, ", - "Dean Gobrecht, Andrew Goldfinch, David Goodman, Mark ", - "Goodson, Matt Gordon, Frank Gorgenyi, Sean Gould, Perry ", - "Goutsos, Ed Govednik, Michael Grayson, Chris Green, Justin ", - "Grenier, Jeff Greulich, Don Grey, Rob Griesbeck, Don Griffes, ", - "Kimberly Griffeth, Jay Grizzard, Don Gronlund, Joe Gross, ", - "Troy Growden, Greg Guilford, David Gusovsky, Jeremy ", - "Guthrie, Adam Gutierrez, James Guzicki, Matthew Haas, Matt ", - "Hadley, Ryan Hagelstrom, Bobby Hagen, Ben Hall, Brian Hall, ", - "Kris Hall, Calvin Hamilton, Kris Hamilton, Bo Hammil, Dave ", - "Hans, Rick Hansen, Robert Harlan, Travis Harlan, Seth ", - "Harman, Jeff Harris, Shawn Hartford, Adam Hartsell, Neil ", - "Harvey, Ray Hayes, John Hein, Chris Heinonen, Christer ", - "Helsing, Chris Hempel, Dustin Hempel, Mathieu Henaire, Matt ", - "Henry, Chuck Herb, Michael Herron, Sage Herron, Thomas ", - "Herschbach, Cliff Hicks, Nelson Hicks, Paul Hierling, William ", - "Hiers, Mike Higdon, Tim Hildebrand, Casey Hinkle, Ryan ", - "Hitchings, Wes Hix, Alan Ho, Jenson Ho, Alan Hoffman, Jeff ", - "Hoffman, Eleanor Hoffmann, Steve Hogg, Richard Holler, Brian ", - "Homolya, Wade Hone, Joe Horvath, Jeff Howe, Eric Hudson, ", - "Glen Huey, Chris Hufnagel, Joshua Hughes, Melissa Hughes, ", - "Arief Hujaya, Thomas Hulen, Ryan Hupp, Justin Hurst, Rick ", - "Hutchins, Steve Iams, Mike Iarossi, Bjorn Idren, Johan Idren, ", - "Micah Imparato, Joe Ingersoll, David Ingram, Greg Ipp, Rodney ", - "Irvin, Darin Isola, Justin Itoh, Mario Ivan, Fredrik Ivarsson, ", - "Dax Jacobson, Michael Jacques, Stevens Jacques, Duane Jahnke, ", - "William Jambrosek, Daniel Janick, Narciso Jaramillo, Neil ", - "Jariwala, Harvie Jarriell, Scott Javadi, Joe Jenkins, Bart ", - "Jennings, Paul Jennings, Julien Jenny, Jason Jensen, Martin ", - "Jeremy, Mark Jeschke, Andy Johnson, James Johnson, Leigh ", - "Johnson, Mark Johnson, Rupert Johnson, Clyde Jones, Michael ", - "Jones, Tim Jordan, Ben Judy, Michael Kaae, Steve Kaczkowski, ", - "Neville Kadwa, Brian Kaisner, Yoshihisa Kameyama, Michael ", - "Kanemura, Daniel Kao, Eric Karabin, Ben Katz, Christopher ", - "Kawamura, Erick Kayser, Craig Keddie, Kevin Kelley, Bryan ", - "Kemp, Michael Kendrigan, Dan Kerber, Timothy Kerber, Tomi ", - "Keski-Heikkila, Greg Kettering, Nathan Kilber, Howard Kim, ", - "Orrin Kinion, Jon Kirst, David Kitch, John Klingbeil, Neil ", - "Klopfenstein, Kerry Knouse, David Knox, Said Kobeissi, Jeff ", - "Koches, Hades Kong, Jeff Kong, Kevin Konkle, Steve Koon, ", - "David Koontz, Dan Koopmann, Steve Koskela, Kuan Kou, ", - "Cameron Kracke, Jensen Krage, York Kramer, Cedar Kraus, ", - "Jason Kraus, Bobby Krimen, Melissa Krispli, Steven Krispli, ", - "James Kruger, Charles Kubasta, Kimmo Kulonen, Frank ", - "Lackaff, Michael Lacour, Matt Lake, Jason Landry, Hans Erik ", - "Lange, Michael Laramee, Brad Lascelle, Pat Laschinger, Alan ", - "Lau, Sean Laurence, Anthony Lavey, Jr., Gary Le, Huey Le, ", - "Stephane Le Roy Audy, Lim Leandro, Charles Lee, Conroy Lee, ", - "Mike Lee, Shih-Hang Lee, Jonathan Leipert, Jason Lemann, ", - "Ron Lenzi, Mitchell Leon, Stephanie Lesniewski, Brendan ", - "Lewis, Robert Lewis, Sam Liao, Tom Liem, Adam Ligas, Steven ", - "Liggett, Roger Lilley, Benjamin Lim, Jeff Lindholm, Johnson ", - "Linwood, David Litchman, Bruce Lithimane, William Liu, ", - "Wilson Liu, Robert Lobdell, Chris Logan, Razvan Loghin, Jack ", - "Loh, George Loo, Russell Love, Juan Loyola, Ricardo Lozano, ", - "Mike Luban, Tim Luc, Henry Luciano, Dianne Ludwig, Charles ", - "Lueras, Derek Lung, Phong Ly, Scott MacGillivray, Dave Mack, ", - "Alec Mak, Steve Mamayek, Michael Mancini, Daniel Mann, ", - "Michael Mann, Chris Manofsky, Abdullah Marafie, Nicholas ", - "Marcy, Piompino Mariano, Bob Marius, Trey Marshall, Dane ", - "Martin, Gregg Martin, Renard Martin, Rich Martin, Scott ", - "Martin, Thomas Martin, Jon Masters, Christopher Mathews, ", - "Jay Mathis, Marc Matthews, Chris Mazur, Doug McBride, ", - "Mackey McCandlish, Robin McCollum, Steven McCombie, ", - "Andy McConnell, Michael McCourt, Bill McCoy, Doug ", - "McCracken, Michael McDeed, Robert McDonald, Steve ", - "McEachron, Craig McGee, Ryan McKenzie, Michael McKeown, ", - "Daniel McMahon, Colin McMillan, Ian McWilliam, Mark ", - "McWilliams, Khann Mean, Bryan Meason, Kenneth Medley, ", - "Jeff Meek, John Mehr, Christopher Mende, Brian Mendenhall, ", - "Peter Mengel, Michael Mersic, Mike Messom, Don Metcalf, ", - "Gary Metzker, Scott Meyer, Joseph Michaud, Andrew Mielke, ", - "Travis Mikalson, Troy Milburn, Ike Miller, Ronnie Miller, Sean ", - "Miller, Steve Miller, Arthur Min, David Minniti, Brenda ", - "Mirsberger, Bill Misek, David Mitchell, Joseph Mobley, Robert ", - "Mollard, Will Mooar, Curtis Moore, Matthew Moore, Al ", - "Morales, Ryan Moran, Lance Mortensen, Karel Mrazek, Ward ", - "Mullee, William Munoz, Kirk Munro, Craig Murray, Shawn P. ", - "Murray, Travis Murray, Michael Mushrush, Tom Mustaine, ", - "David Myers, Joseph Myett, Morgan Najar, Kenta Nakamura, ", - "Damian Nastri, Joshua Naumann, Nick Navarro, Douglas ", - "Neitzel, Arnold Ng, Anthony Nguyen, Steve Nguyen, Joseph ", - "Nicholas, Charles Nickolaus, Jon Nisbet, Patrick Nomee, David ", - "Norling-Christensen, Bobby Norton, Joseph Nottingham, Frank ", - "O'Connor, Jon Oden, David Oester, Lavern Ogden, Zach ", - "Oglesby, Lucas Oldfield, Toby Olsson, Aaron Ondek, Sean ", - "O'Neill, John Orlando, Samuel Orlando, Donovan Orloski, ", - "David Pai, Nikolas Paldan, David Palek, John Palmieri, Anthony ", - "Palmisano, Sanjay Pandit, Jesse Park, Alex Parker, Jimmy ", - "Pasher, Lukasz Paszek, Andy Patterson, William Pelletier, ", - "Duane Pemberton, Ivan Pemic, Kelly Pendergast, Mike ", - "Penezich, Jon Penk, Willie Penley, Ron Penna, Matthew ", - "Pennington, Kevin Pereira, Ross Perez, Ken Perkins, Brian ", - "Peterik, Kelly Peterson, Chris Phillips, Rod Pickett, Cameron ", - "Pierce, Reuben Pierce, Tim Pilger, Billy Pippin, Brad Plank, ", - "Brian Plant, Craig Platt, David Plunkett, Michael Politi, Albert ", - "Portillo, Brian Powell, David Powell, Franklin Powers Jr., Alan ", - "Precourt, Michael Pronchick, Julian Quintana, Justin Radziej, ", - "Steven Rajewski, Shawn Rawles, Ian Reardon, Marc Reed, Ric ", - "Reichelt, Judd Reiffin, David Reilly, Garry Reisky, Drew ", - "Ressler, Robert Reynolds, Walter Reynolds, Michael Rice, Ian ", - "Richards, James Richards, Raymond Richmond, Dustin Riggs, ", - "Keith Riskey, Brian Ro, Scott Roberts, Jorge Rodriguez, Chad ", - "Rogers, Clint Rogers, Robert Rogers, Steve Rogers, Ethan Roots, ", - "Ron Roque, William Ross, Sebastian Rossi, Jeff Rostis, Ben ", - "Roth, Demar Roth, Rich Rouse, Oleg Rovner, Jonathan Roy, ", - "Drew Rozema, Mike Ruggles, Mathias Russ, James Russell, Jim ", - "Rutledge, James Rutter, Dave Ryder, Chris Salvadras, Anders ", - "Samnerud, Nick Sanders, Jakob Sandgren, Joe Sapinsky, Tyler ", - "Sargent, Jonas Saunders, Mark Savage, Scott Sawyer, Robert ", - "Scanlon, Trevor Schaben, Aaron Schmidt, Chris Schmidt, Greg ", - "Schultz, Nicholas Schumacher, Scott Schumacher, Kevin Scott, ", - "Rastislav Seffer, Robert Seidler, Corey Sellers, Justin Sellers, ", - "Marc Senecal, George Shannon, Ian Sheffield, Anoop Shekar, ", - "Sandeep Shekar, Kevin Shelton, Leon Shephard, Eric Shepperd, ", - "Jeffrey Shneidman, Samuel Shockey, Mark Shoemaker, Mike ", - "Shupe, Sean Sibbet, Brian Sidharta, Jimmy Sieben, Eric ", - "Siemens, William Silva, Jody Simpson, Jatinder Singh, Sonia ", - "Siu, Omar Skarsvaag, Tom Skiba, Carl Skow, David Skuse, ", - "Robert Slifka, Brent Smith, C. Eric Smith, Jared Smith, Jeffrey ", - "Smith, Owen Smith, Shannon Smith, Steven Smith, Edward Smola, ", - "Matthew Sneep, Eric Snow, Brad Sobel, Jean-Pierre Solignac, Rasmus ", - "Sorensen, Andrew Sorg, Poppy Southcott, Ross Specter, Erik Spencer, ", - "Keith Spencer, Chris Springer, Erikson Squier, Dean St. Onge, Stewart ", - "Stanfield, John Stanley, Terrence Staton, Benjamin Stein, James ", - "Steiner, David Steyer, William Stickney, Chris Stiff, James Stofer, ", - "Norm Storch, Patrick Stovall, Brandon Sturgeon, Sean Stutler, Anne ", - "Sukprasert, Jamal Sullivan, Bruce Sully, Jay Sung, Park Sung ", - "Joon, Stein Sunnarvik, Nathan Surginer, Robert Swaringen, Lee ", - "Sweeney, David Szabo, Scott Taft, Christian Takvam, Patrick ", - "Talaska, Tadashi Tamaki, Simon Tan, Mark Taraba, Khon-", - "Whey Tay, John Taylor, Keith Taylor, Donald Temean, Phillip ", - "Tesar, Pete Thao, Brian Thomas, Keith Thomas, Speed Thomas, ", - "Miles Thorpe, Paul Thurrott, Mike Timbol, Nicholas Timmins, ", - "Tom Tobin, Robert Towster, Hien Tran, Timothy Traviss, Toby ", - "Traylor, Tony Treadwell, George Tremoulis, Paul Trinh, Thanh ", - "Trinh, Chris Tristan, Brad Truswell, Jason Tryon, Mike Tu, ", - "Gernel Tuazon, Eric Tuggle, Mike Turnbull, Lyle Ubben, ", - "Amilcar Ubiera, Robert Ulozas, Arie Upton, Mark Van Noy, ", - "Matthew Van Sickler, Jake Vantlin, Tony Vasquez, Brady ", - "Vauclin, Gianpiero Vecchi, Chad Verrall, Chris Vicente, Brett ", - "Vickers, David Vickery, Jonathan Vilante, Simon Vince, Ben ", - "Vinson, David Voelkert, Paul Vogt, Nicholas Voorhies, Robert ", - "Vreeland, Mike Vrooman, Rick Vuong, Brian Wachhaus, Todd ", - "Wachhaus, Caine Wade, Mathew Wadstein, Kenneth Wagenius, ", - "Trevor Wagner, John Wagstaff, Asad Wahid, Richard ", - "Wahlberg, Helio Wakasugui, Richard Walker, Wilkins Walker, ", - "Matthew Wallace, Daniel Walsh, Joel Walters, Andrew Waltz, ", - "Tom Wang, Tony Wang, Jay Ward, Jonathan Ward, John ", - "Warner, Mark Warren, Matt Washer, Mike Watson, Sean ", - "Wattles, Mike Wayne, Christian Wehba, Benjamin Wei, Richard ", - "Weight, Cary Wells, David Wenck, Bill Werring, Leonard ", - "Wesley, Marlon West, Mikael Westerbacka, Brian Wharry, ", - "Chris White, Chris White, Jeremy White, Greg Whitlock, Gary ", - "Widener, Marty Wilfried, Israel Wilkinson, Michael Willams, ", - "Derek Williams, Sean Willson, Nitzan Wilnai, Jim Wilson, ", - "Karsten Wilson, William Wilt, Tim Winn, Brian Winzeler, Matt ", - "Wise, Lee Wissmiller, Brendan Wolfe, Daniel Wolpert, Felix ", - "Wong, Power Wong, Tony Wong, Tim Wood, Timothy Wood, ", - "Jeremy Woods, Michael Woods, Bill Wright, Keith Wright, ", - "Patrick Wu, Gang Xie, Robert Yao, Sun Lim Yap, Stephen Yau, ", - "Erek Yedwabnick, Christopher Yee, Nick Yee, Juan Yip, David ", - "Young, Rob Young, Seth Young, Alex Yu, Terry Zahn, Jia-Ning ", - "Zhang, Eric Zieg, Jordan Zielin, Clint Zimmerman, Matt Zinke ", - "", - "", - "", - "", - "$No souls were sold in the making of this game.", - "", - "", - " ", - " ", - " ", - NULL -}; - -int creditline = 0; -int ybase = 0; -int linecount = 24; -int nottheend = 1; - -void ShowCredts() -{ - ClearScreenBuffer(); - - DWORD dwData[2]; - - if(bloaded) { - LoadArtWithPal("ui_art\\credits.pcx", &pPcxCreditsImage, 1, dwData); - gdwCreditsWidth = dwData[0]; - gdwCreditsHeight = dwData[1]; - bloaded = 0; - } - - ybase += 1; - if(ybase >= pFont2[1]) - { - ybase = 0; - if(!nottheend) - { - linecount--; - creditline++; - } - else if(the_long_ass_credits[creditline+24] == NULL) - { - nottheend = 0; - //linecount--; - } - else - creditline++; - } - - DrawArtImage(0, 0, gdwCreditsWidth, gdwCreditsHeight, 0, pPcxCreditsImage); - for(int i = 0; i < linecount; i++) { - if(*the_long_ass_credits[creditline+i] == '$') - DrawPCXString( 320-(GetPCXFontWidth(the_long_ass_credits[creditline+i]+1, pFont2)/2), - 50+(i*pFont2[1])-ybase, - gdwFont2Width, - gdwFont2Height, - the_long_ass_credits[creditline+i]+1, - pFont2, - pPcxFont2Image); - else - DrawPCXString( 320-(GetPCXFontWidth(the_long_ass_credits[creditline+i], pFont3)/2), - 50+(i*pFont3[1])-ybase, - gdwFont3Width, - gdwFont3Height, - the_long_ass_credits[creditline+i], - pFont3, - pPcxFont3Image); - } - - if(bloaded) { - //bloaded = 0; - //mem_free_dbg(pPcxCreditsImage); - } -} - -void __cdecl paint_select_class() -{ - char names[5][16]; // [esp+Ch] [ebp-88h] - int width[5]; // [esp+5Ch] [ebp-38h] - int a2; // [esp+70h] [ebp-24h] - int j; // [esp+74h] [ebp-20h] - int v4; // [esp+78h] [ebp-1Ch] - int i; // [esp+7Ch] [ebp-18h] - int a1; // [esp+80h] [ebp-14h] - int v7; // [esp+84h] [ebp-10h] - int num_lines; // [esp+88h] [ebp-Ch] - int start_line; // [esp+8Ch] [ebp-8h] - int v10; // [esp+90h] [ebp-4h] - ClearScreenBuffer(); - DrawArtImage(0, 0, gdwTitleWidth, gdwTitleHeight, 0, pPcxTitleImage); - DrawArtWithMask(320-(gdwLogoWidth/2), 0, gdwLogoWidth, gdwLogoHeight, the_pcx_frame, 250, pPcxLogoImage); - strcpy(names[0], "Enter Name"); - // *&names[0][11] = 0; - // names[0][15] = 0; - strcpy(names[1], "Choose Class"); - // *&names[1][13] = 0; - // names[1][15] = 0; - strcpy(names[2], "Warrior"); - // *&names[2][8] = 0i64; - strcpy(names[3], "Rogue"); - // *&names[3][6] = 0.0; - strcpy(names[4], "Sorceror"); - // *&names[4][9] = 0; - // *&names[4][13] = 0; - // names[4][15] = 0; - width[0] = 272; - width[1] = 312; - width[2] = 218; - width[3] = 149; - width[4] = 227; - //CelDecodeOnly(64, 639, pTitlgrayCel_sgpBackCel, 1, 640); - //CelDecodeOnly(236, 282, pDiabfrCel, 1, 296);//CelDecodeOnly(64, 377, pDiabfrCel, diablogo_cel_frame, 640); - if ( (is_typing_plr_name & 0x80u) == 0 ) - { - start_line = 1; - num_lines = 5; - } - else - { - start_line = 0; - num_lines = 1; - sgdwProgress = 0; - } - for ( i = start_line; i < num_lines; ++i ) - { - a1 = ((640 - width[i]) >> 1) + 64; - a2 = 45 * (i - start_line) + 350; - print_title_str_large(a1, a2, names[i]); - if ( num_lines == 1 ) - { - v10 = 0; - v7 = strlen(chr_name_str); - for ( j = 0; v7 > j; ++j ) - { - v4 = lfontframe[chr_name_str[j]]; - v10 += lfontkern[v4] + 2; - } - a1 = 374 - (v10 >> 1); - a2 = 9 * (5 * (i - start_line) + 5) + 450; - print_title_str_large(374 - (v10 >> 1), a2, chr_name_str); - } - if ( i == sgdwProgress ) - { - CelDecodeOnly(155, a2 + 1, pPentitleCel, progress_id, 48); - CelDecodeOnly(563, a2 + 1, pPentitleCel, progress_id, 48); - // if ( demo_mode ) - // { - // if ( sgdwProgress >= 3 ) - // { - // a1 = 244; - // print_title_str_small(244, 624, "Not available in demo"); - // } - // } - } - } -} - -void __cdecl paint_title_cel() -{ - switch ( sgdwProgress ) - { - case 1: - CelDecodeOnly(64, 639, pTitlgrayCel_sgpBackCel, 1, 640); - break; - case 2: - CelDecodeOnly(64, 639, pTitltextCel, 1, 640); - break; - case 3: - CelDecodeOnly(64, 639, pPentitleCel, 1, 640); - break; - case 4: - CelDecodeOnly(64, 639, pTitlqtxtCel, 1, 640); - break; - case 5: - CelDecodeOnly(64, 639, pDiabfrCel, 1, 640); - break; - case 6: - CelDecodeOnly(64, 639, p_reserved_title, 1, 640); - break; - default: - return; - } -} - -void __fastcall switch_title_option(int type) -{ - byte_5DE90C = 0; - lock_buf_priv(); - switch ( type ) - { - case 1: - paint_title_screen(); - break; - case 2: - paint_select_class(); - break; - case 3: - ClearScreenBuffer(); - paint_title_cel(); - break; - case 4: - DrawCutscene(); - break; - case 5: - LoadNames(0); - break; - case 6: - paint_diff_screen(); - break; - case 7: - pain_credts(); - break; - default: - break; - } - unlock_buf_priv(); - drawpanflag = 255; -} - -void free_title_shit(); -void interfac_init_title_play_music(); - -void DrawMouse() -{ - int lines = gdwCursorHeight; - if(MouseY > 480-gdwCursorHeight) - lines -= (MouseY - (480-gdwCursorHeight)); - int mx = MouseX; - if(mx < 0) mx = 0; - if(mx >639) mx = 639; - int my = MouseY; - if(my < 0) my = 0; - if(my > 480) my = 480; - -// lock_buf_priv(); - DrawArtWithMask(mx, my, gdwCursorWidth, lines, 0, 0, pPcxCursorImage); - //unlock_buf_priv(); -} -int gbStopGame = 0; -void __fastcall interface_pump_title_message(HWND hWnd) -{ - while ( gbProcessFrame ) - ; - gbProcessFrame = 1; - if(playmovie) - { - playmovie = 0; - music_stop(); - //play_movie("gendata\\diablo1.smk", 1); - mainmenu_refresh_music(); - LoadPalInMem(pcxPal); - lpDDPalette->SetEntries(0, 0, 256, orig_palette); - } - if ( sgbMenuOption ) - { - if ( sgbMenuOption == 1 ) - { - PaletteFadeIn(8); //DoFadeIn(); - if ( !sgbMenuOption ) - PostMessageA(hWnd, 0x408u, 0, 0); - } - if ( sgbMenuOption == 2 ) - { - if ( title_cel_is_loaded & 0x40 ) - sgbMenuOption = 0; - else - PaletteFadeOut(8); //DoFadeOut(); - if ( !sgbMenuOption ) - PostMessageA(hWnd, gNewMSG, 0, 0); - } - if(sgbMenuOption == 7) - { - free_title_shit(); - if(!TEMP_diablo_init_menu(GetKeyState(VK_SHIFT) < 0, 1)) - { - gbStopGame = 2;//PostMessage(ghMainWnd, WM_CLOSE, 0, 0); - return; - } - else - { - interfac_init_title_play_music(); - SetWindowProc(GM_Title); - LoadPalInMem(pcxPal); - mainmenu_refresh_music(); - gb_title_option = 1; - sgdwProgress = 0; - sgbMenuOption = 0; - //InitCursor(); - //InitLevelCursor(); - } - } - lpDDPalette->SetEntries(0, 0, 256, orig_palette); - } - // lock_buf_priv(); - // scrollrt_draw_cursor_back_buffer(); - // unlock_buf_priv(); - switch_title_option(gb_title_option); - // if ( (is_typing_plr_name & 0x80u) == 0 ) { - // lock_buf_priv(); - // scrollrt_draw_cursor_item(); - // unlock_buf_priv(); - // } - DrawMouse(); - - scrollrt_draw_game_screen(0); // set to 1 to draw mouse through engine instead of PCX - - if ( ++progress_id == 9 ) - progress_id = 1; - if ( ++diablogo_cel_frame == 29 ) - diablogo_cel_frame = 1; - if ( ++the_pcx_frame == 15) - the_pcx_frame = 0; - new_timer_2_int = 0; - gbProcessFrame = 0; -} - -void __fastcall diablo_procwait_4882F9(int a1) -{ - while ( gbProcessFrame ) - ; - new_timer_2_int = a1; - gbProcessFrame = 0; -} - -void __cdecl interfac_set_player_some() -{ - chr_name_str[0] = '-'; - chr_name_str[1] = 0; - gb_title_option = 2; - is_typing_plr_name = 0; - sgdwProgress = 2; -} - -void __cdecl interfac_init_title_play_music() -{ - //ui setup - DWORD dwData[2]; - - LoadArtWithPal("ui_art\\mainmenu.pcx", &pPcxTitleImage, 1, dwData); - gdwTitleWidth = dwData[0]; - gdwTitleHeight = dwData[1]; - - LoadArtImage("ui_art\\smlogo.pcx", &pPcxLogoImage, 15, dwData); - gdwLogoWidth = dwData[0]; - gdwLogoHeight = dwData[1]; - - LoadArtImage("ui_art\\font42g.pcx", &pPcxFontImage, 256, dwData); - gdwFontWidth = dwData[0]; - gdwFontHeight = dwData[1]; - pFont = LoadFileInMem("ui_art\\font42.bin", 0); - - LoadArtImage("ui_art\\heros.pcx", &pPcxHeroImage, 4, dwData); - gdwHeroWidth = dwData[0]; - gdwHeroHeight = dwData[1]; - - LoadArtImage("ui_art\\selhero.pcx", &pPcxSHeroImage, 1, dwData); - gdwSHeroWidth = dwData[0]; - gdwSHeroHeight = dwData[1]; - - LoadArtImage("ui_art\\cursor.pcx", &pPcxCursorImage, 1, dwData); - gdwCursorWidth = dwData[0]; - gdwCursorHeight = dwData[1]; - - LoadArtImage("ui_art\\font16g.pcx", &pPcxFont2Image, 256, dwData); - gdwFont2Width = dwData[0]; - gdwFont2Height = dwData[1]; - pFont2 = LoadFileInMem("ui_art\\font16.bin", 0); - - ShiftStrColor(gdwFont2Width, gdwFont2Height, 256, pPcxFont2Image, 32, -56, 1); - - LoadArtImage("ui_art\\font16s.pcx", &pPcxFont3Image, 256, dwData); - gdwFont3Width = dwData[0]; - gdwFont3Height = dwData[1]; - pFont3 = LoadFileInMem("ui_art\\font16.bin", 0); - - //ShiftStrColor(gdwFont3Width, gdwFont3Height, 256, pPcxFont3Image, 32, 48, 1); - - title_cel_is_loaded = 0; - is_typing_plr_name = 0; - /* if ( !dword_4BC180 && debug_mode_music_enabled ) - { - SFileOpenFile("Music\\Dintro.WAV", &dword_4BC180); - SFileDdaBegin(dword_4BC180, 0x40000, 0x40000); - } */ - pTitlgrayCel_sgpBackCel = LoadFileInMem("Gendata\\Titlgray.CEL", 0); - //pPlayerGFX = LoadFileInMem("PlrGFX\\warrior\\whn\\whnat.CL2", 0); - pPentSmall = LoadFileInMem("Data\\PentSpn2.CEL", 0); - pPanelText = LoadFileInMem("CtrlPan\\SmalText.CEL", 0); - pTitltextCel = LoadFileInMem("Data\\BigTGold.CEL", 0); - pPentitleCel = LoadFileInMem("Data\\PentSpin.CEL", 0); - pSTextBoxCels = LoadFileInMem("Data\\TextBox2.CEL", 0); - pTitlqtxtCel = LoadFileInMem("Data\\MedTextS.CEL", 0); - pDiabfrCel = LoadFileInMem("Data\\Diabsmal.CEL", 0); - sgdwProgress = 0; - progress_id = 1; - the_pcx_frame = 0; - diablogo_cel_frame = 1; - /* load_title_game00(); - if ( some_save_flag ) - dword_603F10 = 1; */ - gb_title_option = 1; - switch_title_option(1); - //SetCursor(CURSOR_HAND); - - -} - -void free_title_shit() -{ - //pPlayerGFX = 0; - //mem_free_dbg(pPlayerGFX); - pSTextBoxCels = 0; - mem_free_dbg(pSTextBoxCels); - pPanelText = 0; - mem_free_dbg(pPanelText); - pPentSmall = 0; - mem_free_dbg(pPentSmall); - pTitlgrayCel_sgpBackCel = 0; - mem_free_dbg(pTitlgrayCel_sgpBackCel); - pTitltextCel = 0; - mem_free_dbg(pTitltextCel); - pPentitleCel = 0; - mem_free_dbg(pPentitleCel); - pTitlqtxtCel = 0; - mem_free_dbg(pTitlqtxtCel); - pDiabfrCel = 0; - mem_free_dbg(pDiabfrCel); - - mem_free_dbg(pPcxLogoImage); - mem_free_dbg(pPcxFontImage); - mem_free_dbg(pFont); - mem_free_dbg(pPcxCursorImage); - mem_free_dbg(pPcxFont2Image); - mem_free_dbg(pFont2); - mem_free_dbg(pPcxFont3Image); - mem_free_dbg(pFont3); - mem_free_dbg(pPcxTitleImage); - mem_free_dbg(pPcxHeroImage); - mem_free_dbg(pPcxSHeroImage); -} - -LRESULT __fastcall PROC2_GM_ClassMenu(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) -{ - LRESULT result; // eax - //void *p; // eax MAPDST - char c; // [esp+1Ch] [ebp-4h] - - if ( Msg > WM_KEYDOWN ) - { - if ( Msg > WM_MOUSEMOVE ) - { - if ( Msg > WM_USER ) - { - if ( Msg == 0x408 ) - return 0; - if ( Msg != 0x409 ) - { - if ( Msg == 0x40C ) - return 0; - return DefWindowProcA(hWnd, Msg, wParam, lParam); - } - - free_title_shit(); - if ( is_typing_plr_name & 0x40 ) - { - gNewMSG = 0x40C; - //InitCutscene(); - sgbMenuOption = 2; - gbProcType = 14; - //TEMP_diablo_init_menu(0, 1); - } - else - { - interfac_init_title_play_music(); - LoadPalette("Gendata\\Title.pal"); - gbProcType = 1; - is_typing_plr_name = 0; - //CopyPalette(logical_palette, orig_palette); - PaletteFadeIn(32); - drawpanflag = 4; - } - result = 0; - } - else - { - if ( Msg == WM_USER ) - { - interface_pump_title_message(hWnd); - return 0; - } - if ( Msg != WM_LBUTTONDOWN || sgbMenuOption ) - return DefWindowProcA(hWnd, Msg, wParam, lParam); - if ( (is_typing_plr_name & 0x80u) != 0 ) - { - if ( chr_name_str[0] != '-' ) - { - PlaySFX(IS_TITLSLCT); - chr_name_str[gb_Lfont_str_len] = 0; - //InitQuests(); - PaletteFadeOut(32); - title_cel_is_loaded &= 0xBFu; - is_typing_plr_name |= 0x40u; - gNewMSG = 1033; - } - } - else - { - sgdwProgress = 2; - if ( MouseY >= 335 ) - sgdwProgress = 3; - if ( MouseY >= 380 ) - sgdwProgress = 4; - PlaySFX(IS_TITLSLCT); - //if ( demo_mode && sgdwProgress >= 3 ) - // return 0; - if ( sgdwProgress == 2 ) - c = 0; - if ( sgdwProgress == 3 ) - c = 1; - if ( sgdwProgress == 4 ) - c = 2; - CreatePlayer(myplr, c); - is_typing_plr_name |= 0x80u; - } - result = 0; - } - } - else if ( Msg == WM_MOUSEMOVE ) - { - if ( (is_typing_plr_name & 0x80u) == 0 ) - { - MouseX = lParam & 0xFFFF; - MouseY = lParam >> 16; - } - result = 0; - } - else - { - if ( Msg != WM_CHAR || sgbMenuOption ) - return DefWindowProcA(hWnd, Msg, wParam, lParam); - if ( (is_typing_plr_name & 0x80u) != 0 ) - { - if ( wParam == VK_BACK && gb_Lfont_str_len > 0 ) - { - chr_name_str[gb_Lfont_str_len-1] = 0; - if ( gb_Lfont_str_len == 1 ) - { - chr_name_str[0] = '-'; - chr_name_str[1] = 0; - } - } - if ( wParam >= 'a' && wParam <= 'z' ) - wParam -= ' '; - if ( wParam >= ' ' && wParam <= ']' && gb_Lfont_pix_width <= 535 ) - { - if ( chr_name_str[gb_Lfont_str_len-1] == '-' ) - --gb_Lfont_str_len; - chr_name_str[gb_Lfont_str_len] = wParam; - chr_name_str[gb_Lfont_str_len + 1] = 0; - } - if ( wParam == VK_RETURN && chr_name_str[0] != '-' ) - { - PlaySFX(IS_TITLSLCT); - chr_name_str[gb_Lfont_str_len] = 0; - //InitQuests(); - PaletteFadeOut(32); - title_cel_is_loaded &= 0xBFu; - is_typing_plr_name |= 0x40u; - sgbMenuOption = 7; - return 0; - TEMP_diablo_init_menu(0, 1); - //gNewMSG = 0x409; - } - } - result = 0; - } - } - else - { - if ( Msg == WM_KEYDOWN ) - { - if ( (is_typing_plr_name & 0x80u) == 0 ) - { - switch ( wParam ) - { - case VK_RETURN: - PlaySFX(IS_TITLSLCT); - //if ( demo_mode && sgdwProgress >= 3 ) - // return 0; - if ( sgdwProgress == 2 ) - c = 0; - if ( sgdwProgress == 3 ) - c = 1; - if ( sgdwProgress == 4 ) - c = 2; - CreatePlayer(myplr, c); - is_typing_plr_name |= 0x80u; - return 0; - case VK_UP: - PlaySFX(IS_TITLEMOV); - if ( sgdwProgress == 2 ) - sgdwProgress = 4; - else - --sgdwProgress; - return 0; - case VK_DOWN: - PlaySFX(IS_TITLEMOV); - if ( ++sgdwProgress > 4 ) - sgdwProgress = 2; - return 0; - } - } - if ( wParam == VK_ESCAPE ) - { - //PaletteFadeOut(32); - title_cel_is_loaded &= 0xBFu; - gbProcType = 1; - gb_title_option = 1; - sgdwProgress = 0; - //gNewMSG = 0x409; - } - return 0; - } - if ( Msg != WM_ACTIVATEAPP ) - return DefWindowProcA(hWnd, Msg, wParam, lParam); - gbActive = wParam; - if ( wParam ) - palette_update(); - result = 0; - } - return result; -} - -void __fastcall MenuKeyDown(WPARAM wParam) -{ - int max; - if(gb_title_option == 6) - max = 3; - else if(gb_title_option == 5) - max = maxheroes; - else - max = 4; - - switch ( wParam ) - { - case VK_ESCAPE: - PlaySFX(IS_TITLSLCT); - if(gb_title_option == 6) - { - sgdwProgress = thehero; - } - else { - sgdwProgress = 0; - } - if(gb_title_option == 6) - { - gb_title_option = 5; - break; - } - if(gb_title_option == 5 || gb_title_option == 7) - { - gb_title_option = 1; - break; - } - gbStopGame = 1;//PostMessage(ghMainWnd, WM_CLOSE, 0, 0); - break; - case VK_RETURN: - //interface_pump_title_message(hWnd); - PlaySFX(IS_TITLSLCT); - if(gb_title_option == 5) - { - if(!heroarray[sgdwProgress].level) - return; - strcpy(chr_name_str, heroarray[sgdwProgress].name); - thehero = sgdwProgress; - sgdwProgress = 0; - gb_title_option = 6; - return; - } - if(gb_title_option == 6) - { - if(!heroarray[thehero].level) - return; - if(sgdwProgress == 0 || sgdwProgress == 1) - gnDifficulty = DIFF_NORMAL; - else if(sgdwProgress == 2) - gnDifficulty = DIFF_NIGHTMARE; - else if(sgdwProgress == 3) - gnDifficulty = DIFF_HELL; - sgbMenuOption = 7; - return; - } - else - { - if ( sgdwProgress == 4 ) - { - PaletteFadeOut(32); - gbStopGame = 1;//PostMessage(ghMainWnd, WM_CLOSE, 0, 0); - } - else if (sgdwProgress == 0) - { - sgdwProgress = 0; - gb_title_option = 5; - } - else if(sgdwProgress == 2) - { - playmovie = 1; - } - else if (sgdwProgress == 1) - { - sgdwProgress = 0; - title_cel_is_loaded |= 0x40u; - sgbMenuOption = 2; - gNewMSG = 0x409; - } - else if (sgdwProgress == 3) - { - sgdwProgress = 0; - gb_title_option = 7; - bloaded = 1; - } - } - break; - case VK_UP: - PlaySFX(IS_TITLEMOV); - if ( sgdwProgress ) - --sgdwProgress; - else - sgdwProgress = max; - //if ( sgdwProgress == 1 ) //&& !dword_603F10 ) - // --sgdwProgress; - break; - case VK_DOWN: - - PlaySFX(IS_TITLEMOV); - //if ( ++sgdwProgress == 1 ) //&& !dword_603F10 ) - ++sgdwProgress; - if ( sgdwProgress > max ) - sgdwProgress = 0; - break; - } -} - -void MenuMouseDown() -{ - int prog_old = sgdwProgress; - sgdwProgress = 0; - if ( MouseY >= 190 && MouseY < 231 ) - { - /*if ( dword_603F10 == 1 ) - sgdwProgress = 1; - else */ - sgdwProgress = prog_old; - PlaySFX(IS_TITLSLCT); - gb_title_option = 5; - return; - } - if ( MouseY >= 232 && MouseY < 280 ) { - sgdwProgress = 2; - gbStopGame = 1;//PostMessage(ghMainWnd, WM_CLOSE, 0, 0); - } - if ( MouseY >= 140 && MouseY <= 190) { - PlaySFX(IS_TITLSLCT); - - if ( sgdwProgress && sgdwProgress != 1 ) - PaletteFadeOut(32); - else - title_cel_is_loaded |= 0x40u; - sgbMenuOption = 2; - gNewMSG = 0x409; - } -} - -LRESULT CALLBACK GM_Title(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) -{ - switch(Msg) - { - case WM_ACTIVATEAPP: - gbActive = wParam; - if ( wParam ) - palette_update(); - break; - case WM_USER: - interface_pump_title_message(hWnd); - return 0; - case WM_LBUTTONDOWN: - sgbMouseDown = 1; - SetCapture(hWnd); - if(!sgbMenuOption) - MenuMouseDown(); - break; - case WM_LBUTTONUP: - sgbMouseDown = 0; - ReleaseCapture(); - break; - case WM_DESTROY: - // dword_61B754 = 1; - // timeEndPeriod(uPeriod); - // free_title_shit(); - ShowCursor(1); - PostQuitMessage(0); - break; - case WM_MOUSEMOVE: - MouseX = lParam & 0xFFFF; - MouseY = lParam >> 16; - break; - case WM_KEYDOWN: - MenuKeyDown(wParam); - return 0; - case 0x408: - drawpanflag = 255; - diablo_procwait_4882F9(0); - return 0; - case 0x409: - if ( !(title_cel_is_loaded & 0x40) ) - { - free_title_shit(); - } - if ( sgdwProgress == 0 ) - { - interfac_set_player_some(); - gbProcType = 2; - drawpanflag = 255; - diablo_procwait_4882F9(0); - } - else if ( sgdwProgress == 1 ) - { - gNewMSG = 0x40D; - //InitCutscene(); - sgbMenuOption = 2; - gbProcType = 14; - } - else if ( sgdwProgress == 2 ) - { - //interfac_init_exit_screens(hWnd, Msg); - //LoadPalette("Gendata\\Screen01.pal"); - sgbMenuOption = 2; - gNewMSG = 0x409; - gbProcType = 13; - } - drawpanflag = 255; - return 0; - } - - return DefWindowProcA(hWnd, Msg, wParam, lParam); -} - -struct timecaps_tag ptc; -unsigned int uPeriod; -unsigned int uDelay; -int gdwCurTime; -unsigned int guTimerID; -int gbFuckThis = 0; - -void __stdcall TimeProc(UINT uID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2) -{ - long dwTime; // [esp+Ch] [ebp-4h] - - if ( !gbProcessFrame ) - { - gbProcessFrame = 1; - dwTime = timeGetTime(); - if ( dwTime - gdwCurTime >= 1000/MENU_FRAME_RATE && !new_timer_2_int ) // 20 frames per second (50 milisecs) - { - new_timer_2_int = 1; - if ( gbFuckThis ) - PostMessageA((HWND)dwUser, WM_USER, 0, 0); - gdwCurTime = dwTime; - } - if ( gbFuckThis == 2 ) - { - timeKillEvent(guTimerID); - ExitThread(0); - } - gbProcessFrame = 0; - } -} - -LRESULT __stdcall MenuProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) -{ - LRESULT new_proc; // eax - - switch ( gbProcType ) - { - case 0: - // new_proc = PROC0_GM_Logo(hWnd, Msg, wParam, lParam); - // break; - case 1: - new_proc = GM_Title(hWnd, Msg, wParam, lParam); - break; - case 2: - new_proc = PROC2_GM_ClassMenu(hWnd, Msg, wParam, lParam); - break; - case 7: - //new_proc = PROC3_GM_Game(hWnd, Msg, wParam, lParam); - //break; - case 12: - //new_proc = PROC12_GM_Intro(hWnd, Msg, wParam, lParam); - //break; - case 13: - //new_proc = PROC13_GM_Exit(hWnd, Msg, wParam, lParam); - //break; - case 14: - //new_proc = PROC14_GM_Progress(hWnd, Msg, wParam, lParam); - //break; - default: - new_proc = DefWindowProcA(hWnd, Msg, wParam, lParam); - break; - } - return new_proc; -} - -int __stdcall ui_add_hero_infos(_uiheroinfo *a1) -{ - memcpy(&heroarray[fuckcount], a1, sizeof(_uiheroinfo)); - fuckcount++; - return 0; -} - -void __cdecl mainmenu_loop() -{ - printf("MainMenu_Loop? \n\n"); - WNDPROC saveProc; // edi - MSG Msg; // [esp+8h] [ebp-24h] - - gbFuckThis = 1; - - sgbMenuOption = 0; - //lpDDPalette->SetEntries(0, 0, 256, orig_palette); - - - //timer - new_timer_2_int = 0; - gbProcessFrame = 0; - - diablo_procwait_4882F9(0); - timeGetDevCaps(&ptc, 8u); - uPeriod = ptc.wPeriodMin; - uDelay = ptc.wPeriodMin; - if ( ptc.wPeriodMin <= 5 ) - uDelay = 5; - - timeBeginPeriod(uPeriod); - gdwCurTime = timeGetTime(); - guTimerID = timeSetEvent(uDelay, uPeriod, TimeProc, (long)ghMainWnd, TIME_PERIODIC|TIME_CALLBACK_FUNCTION); - - - //hero - pfile_ui_set_hero_infos(ui_add_hero_infos); - - ClearScreenBuffer(); - //InitCursor(); - //InitLevelCursor(); - interfac_init_title_play_music(); - - //main proc - saveProc = SetWindowProc(MenuProc); - - PaletteFadeIn(8); - drawpanflag = 255; - mainmenu_refresh_music(); - - //pfile_ui_set_hero_infos(ui_add_hero_infos); - - while( 1 ) - { - - if( PeekMessage( &Msg, NULL, 0, 0, PM_NOREMOVE ) ) - { - if( !GetMessage( &Msg, NULL, 0, 0 ) ) - { - break; - } - TranslateMessage(&Msg); - DispatchMessage(&Msg); - } - if(gbStopGame) { - PostMessage(ghMainWnd, WM_CLOSE, 0, 0); - break; - } - - Sleep(1); - } - - PaletteFadeOut(8); - timeEndPeriod(uPeriod); - gbFuckThis = 2; - SetWindowProc(saveProc); - music_stop(); - if(gbStopGame == 1) - free_title_shit(); - init_cleanup(0); -}